diff --git a/.all-contributorsrc b/.all-contributorsrc
new file mode 100644
index 0000000000..e1db3fe48d
--- /dev/null
+++ b/.all-contributorsrc
@@ -0,0 +1,272 @@
+{
+ "projectName": "pokeemerald-expansion",
+ "projectOwner": "rh-hideout",
+ "repoType": "github",
+ "repoHost": "https://github.com",
+ "files": [
+ "CREDITS.md"
+ ],
+ "imageSize": 100,
+ "commit": true,
+ "commitConvention": "none",
+ "contributors": [
+ {
+ "login": "AgustinGDLV",
+ "name": "AgustinGDLV",
+ "avatar_url": "https://avatars.githubusercontent.com/u/103095241?v=4",
+ "profile": "https://github.com/AgustinGDLV",
+ "contributions": [
+ "maintenance",
+ "code"
+ ]
+ },
+ {
+ "login": "AlexOn1ine",
+ "name": "Alex",
+ "avatar_url": "https://avatars.githubusercontent.com/u/93446519?v=4",
+ "profile": "https://github.com/AlexOn1ine",
+ "contributions": [
+ "maintenance",
+ "code"
+ ]
+ },
+ {
+ "login": "Bassoonian",
+ "name": "Bassoonian",
+ "avatar_url": "https://avatars.githubusercontent.com/u/16993385?v=4",
+ "profile": "https://github.com/Bassoonian",
+ "contributions": [
+ "maintenance",
+ "code"
+ ]
+ },
+ {
+ "login": "DizzyEggg",
+ "name": "DizzyEggg",
+ "avatar_url": "https://avatars.githubusercontent.com/u/16259973?v=4",
+ "profile": "https://github.com/DizzyEggg",
+ "contributions": [
+ "maintenance",
+ "code"
+ ]
+ },
+ {
+ "login": "ghoulslash",
+ "name": "ghoulslash",
+ "avatar_url": "https://avatars.githubusercontent.com/u/41651341?v=4",
+ "profile": "https://github.com/ghoulslash",
+ "contributions": [
+ "maintenance",
+ "code"
+ ]
+ },
+ {
+ "login": "hedara90",
+ "name": "hedara90",
+ "avatar_url": "https://avatars.githubusercontent.com/u/149414898?v=4",
+ "profile": "https://github.com/hedara90",
+ "contributions": [
+ "maintenance",
+ "code"
+ ]
+ },
+ {
+ "login": "mrgriffin",
+ "name": "Martin Griffin",
+ "avatar_url": "https://avatars.githubusercontent.com/u/838573?v=4",
+ "profile": "http://www.martin-griffin.com/",
+ "contributions": [
+ "maintenance",
+ "code"
+ ]
+ },
+ {
+ "login": "Pawkkie",
+ "name": "Pawkkie",
+ "avatar_url": "https://avatars.githubusercontent.com/u/61265402?v=4",
+ "profile": "https://github.com/Pawkkie",
+ "contributions": [
+ "maintenance",
+ "code",
+ "doc"
+ ]
+ },
+ {
+ "login": "SBird1337",
+ "name": "Philipp AUER",
+ "avatar_url": "https://avatars.githubusercontent.com/u/3799173?v=4",
+ "profile": "https://github.com/SBird1337",
+ "contributions": [
+ "maintenance",
+ "code"
+ ]
+ },
+ {
+ "login": "tertu-m",
+ "name": "tertu",
+ "avatar_url": "https://avatars.githubusercontent.com/u/836640?v=4",
+ "profile": "https://github.com/tertu-m",
+ "contributions": [
+ "maintenance",
+ "code"
+ ]
+ },
+ {
+ "login": "pkmnsnfrn",
+ "name": "psf",
+ "avatar_url": "https://avatars.githubusercontent.com/u/77138753?v=4",
+ "profile": "https://linktr.ee/pkmnsnfrn",
+ "contributions": [
+ "maintenance",
+ "code"
+ ]
+ },
+ {
+ "login": "wiz1989",
+ "name": "wiz1989",
+ "avatar_url": "https://avatars.githubusercontent.com/u/80073265?v=4",
+ "profile": "https://github.com/wiz1989",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "PCG06",
+ "name": "PCG",
+ "avatar_url": "https://avatars.githubusercontent.com/u/75729017?v=4",
+ "profile": "https://github.com/PCG06",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "kittenchilly",
+ "name": "kittenchilly",
+ "avatar_url": "https://avatars.githubusercontent.com/u/23617175?v=4",
+ "profile": "https://github.com/kittenchilly",
+ "contributions": [
+ "code",
+ "research",
+ "data"
+ ]
+ },
+ {
+ "login": "ExpoSeed",
+ "name": "ExpoSeed",
+ "avatar_url": "https://avatars.githubusercontent.com/u/43502820?v=4",
+ "profile": "https://github.com/ExpoSeed",
+ "contributions": [
+ "code",
+ "maintenance",
+ "review"
+ ]
+ },
+ {
+ "login": "LinathanZel",
+ "name": "Linathan",
+ "avatar_url": "https://avatars.githubusercontent.com/u/35115312?v=4",
+ "profile": "https://github.com/LinathanZel",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "AsparagusEduardo",
+ "name": "Eduardo Quezada",
+ "avatar_url": "https://avatars.githubusercontent.com/u/2904965?v=4",
+ "profile": "https://github.com/AsparagusEduardo",
+ "contributions": [
+ "code",
+ "data",
+ "doc",
+ "infra",
+ "maintenance",
+ "projectManagement",
+ "promotion",
+ "research",
+ "review",
+ "test",
+ "tutorial",
+ "userTesting"
+ ]
+ },
+ {
+ "login": "khbsd",
+ "name": "khbsd",
+ "avatar_url": "https://avatars.githubusercontent.com/u/26092020?v=4",
+ "profile": "https://github.com/khbsd",
+ "contributions": [
+ "doc",
+ "code"
+ ]
+ },
+ {
+ "login": "Cafeei",
+ "name": "Cafe",
+ "avatar_url": "https://avatars.githubusercontent.com/u/46283144?v=4",
+ "profile": "https://github.com/Cafeei",
+ "contributions": [
+ "design"
+ ]
+ },
+ {
+ "login": "agsmgmaster64",
+ "name": "agsmgmaster64",
+ "avatar_url": "https://avatars.githubusercontent.com/u/67435611?v=4",
+ "profile": "https://github.com/agsmgmaster64",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "RubyRaven6",
+ "name": "Ruby",
+ "avatar_url": "https://avatars.githubusercontent.com/u/178652077?v=4",
+ "profile": "https://github.com/RubyRaven6",
+ "contributions": [
+ "code",
+ "doc"
+ ]
+ },
+ {
+ "login": "mudskipper13",
+ "name": "mudskipper13",
+ "avatar_url": "https://avatars.githubusercontent.com/u/105766191?v=4",
+ "profile": "https://github.com/mudskipper13",
+ "contributions": [
+ "code",
+ "doc"
+ ]
+ },
+ {
+ "login": "surskitty",
+ "name": "surskitty",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1383512?v=4",
+ "profile": "https://github.com/surskitty",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "grintoul1",
+ "name": "grintoul",
+ "avatar_url": "https://avatars.githubusercontent.com/u/166724814?v=4",
+ "profile": "https://github.com/grintoul1",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "bassforte123",
+ "name": "bassforte123",
+ "avatar_url": "https://avatars.githubusercontent.com/u/130828119?v=4",
+ "profile": "https://github.com/bassforte123",
+ "contributions": [
+ "code"
+ ]
+ }
+ ],
+ "contributorsPerLine": 7,
+ "linkToUsage": true,
+ "commitType": "docs"
+}
diff --git a/.github/ISSUE_TEMPLATE/01_battle_engine_bugs.yaml b/.github/ISSUE_TEMPLATE/01_battle_engine_bugs.yaml
index d1bbbb4e94..da15109c8c 100644
--- a/.github/ISSUE_TEMPLATE/01_battle_engine_bugs.yaml
+++ b/.github/ISSUE_TEMPLATE/01_battle_engine_bugs.yaml
@@ -6,7 +6,7 @@ body:
attributes:
value: |
Please fill in all fields with as many details as possible.
- - type: textarea
+ 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!
id: description
attributes:
label: Description
@@ -42,16 +42,15 @@ body:
label: Version
description: What version of pokeemerald-expansion are you using?
options:
- - 1.11.2 (Latest release)
+ - 1.12.0 (Latest release)
- master (default, unreleased bugfixes)
- upcoming (Edge)
+ - 1.11.4
+ - 1.11.3
+ - 1.11.2
- 1.11.1
- 1.11.0
- - 1.10.3
- - 1.10.2
- - 1.10.1
- - 1.10.0
- - pre-1.10.0
+ - pre-1.11.0
validations:
required: true
- type: input
diff --git a/.github/ISSUE_TEMPLATE/02_battle_ai_issues.yaml b/.github/ISSUE_TEMPLATE/02_battle_ai_issues.yaml
index 71d10d7e4d..7b1a489cfb 100644
--- a/.github/ISSUE_TEMPLATE/02_battle_ai_issues.yaml
+++ b/.github/ISSUE_TEMPLATE/02_battle_ai_issues.yaml
@@ -6,6 +6,7 @@ body:
attributes:
value: |
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:
@@ -42,16 +43,15 @@ body:
label: Version
description: What version of pokeemerald-expansion are you using?
options:
- - 1.11.2 (Latest release)
+ - 1.12.0 (Latest release)
- master (default, unreleased bugfixes)
- upcoming (Edge)
+ - 1.11.4
+ - 1.11.3
+ - 1.11.2
- 1.11.1
- 1.11.0
- - 1.10.3
- - 1.10.2
- - 1.10.1
- - 1.10.0
- - pre-1.10.0
+ - pre-1.11.0
validations:
required: true
- type: input
diff --git a/.github/ISSUE_TEMPLATE/03_feature_requests.yaml b/.github/ISSUE_TEMPLATE/03_feature_requests.yaml
index 9b7b46c9e1..347e782660 100644
--- a/.github/ISSUE_TEMPLATE/03_feature_requests.yaml
+++ b/.github/ISSUE_TEMPLATE/03_feature_requests.yaml
@@ -6,6 +6,8 @@ body:
attributes:
value: |
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
id: behavior
attributes:
diff --git a/.github/ISSUE_TEMPLATE/04_other_errors.yaml b/.github/ISSUE_TEMPLATE/04_other_errors.yaml
index 61f71ba3db..197791a776 100644
--- a/.github/ISSUE_TEMPLATE/04_other_errors.yaml
+++ b/.github/ISSUE_TEMPLATE/04_other_errors.yaml
@@ -6,6 +6,7 @@ body:
attributes:
value: |
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
attributes:
@@ -42,16 +43,14 @@ body:
label: Version
description: What version of pokeemerald-expansion are you using?
options:
- - 1.11.2 (Latest release)
+ - 1.12.0 (Latest release)
- master (default, unreleased bugfixes)
- upcoming (Edge)
+ - 1.11.4
+ - 1.11.3
- 1.11.1
- 1.11.0
- - 1.10.3
- - 1.10.2
- - 1.10.1
- - 1.10.0
- - pre-1.10.0
+ - pre-1.11.0
validations:
required: true
- type: input
diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md
index 0b214dce0a..dc900e224e 100644
--- a/.github/pull_request_template.md
+++ b/.github/pull_request_template.md
@@ -21,11 +21,11 @@
## Issue(s) that this PR fixes
-## People who collaborated with me in this PR
-
-
-
-
+
+
+
+
+
## Feature(s) this PR does NOT handle:
@@ -36,6 +36,6 @@
## Discord contact info
-
-
+
+
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 4f742b91d4..ffc4fda863 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -4,11 +4,12 @@ on:
push:
branches:
- master
- - upcoming
+ - pwt-upcoming
pull_request:
jobs:
build:
+ if: github.actor != 'allcontributors'
runs-on: ubuntu-latest
env:
GAME_VERSION: EMERALD
@@ -50,3 +51,11 @@ jobs:
TEST: 1
run: |
make -j${nproc} check
+ allcontributors:
+ if: github.actor == 'allcontributors'
+ runs-on: ubuntu-latest
+ needs: []
+ steps:
+ - name: Automatically pass for allcontributors
+ run: echo "CI automatically passes for allcontributors" && exit 0
+
diff --git a/.github/workflows/labels.yml b/.github/workflows/labels.yml
index aa53665e8f..7315082cb6 100644
--- a/.github/workflows/labels.yml
+++ b/.github/workflows/labels.yml
@@ -6,6 +6,7 @@ on:
jobs:
label:
+ if: github.actor != 'allcontributors'
runs-on: ubuntu-latest
steps:
- name: check labels
@@ -26,3 +27,12 @@ jobs:
category: overworld
category: pokemon
category: sprite-issue
+ type: documentation
+ allcontributors:
+ if: github.actor == 'allcontributors'
+ runs-on: ubuntu-latest
+ needs: []
+ steps:
+ - name: Automatically pass for allcontributors
+ run: echo "CI automatically passes for allcontributors" && exit 0
+
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 4810244c48..b89016fddd 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -24,7 +24,7 @@ The best bug reports have enough information that we won't have to contact you f
- 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 issue, it will be labeled `bug:confirmed`, and the issue will be left to be [implemented by someone](#Pull-Requests).
+- 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
@@ -35,7 +35,7 @@ This section guides you through submitting a feature request for pokeemerald-exp
### What should I do before making a feature request?
-- Make sure your request is in [pokeemerald-expansion's scope](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).
+- 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?
@@ -49,7 +49,7 @@ To request a feature to be added to the project, open a [feature request](https:
### 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](team_procedures/scope.md), it will be closed.
+- 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
@@ -59,7 +59,7 @@ If you have read all of this and still need help, feel free to start a thread in
### 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](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).
+- 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.
@@ -86,7 +86,7 @@ git switch -c newFeature # the name newFeature can be anything you want. This tu
#### 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 RHH/upcoming # If your PR is going to target master, replace upcoming with master.
+git reset --hard upcoming # If your PR is going to target master, replace upcoming with master.
```
#### 5. Implement your code
@@ -94,7 +94,7 @@ All of your work should go on this new, clean branch. If you already started wor
##### Popular Features / Feature Branches
-If you are implementing functionality from a known community feature branch, it is **strongly** reccomended 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.
+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.
diff --git a/CREDITS.md b/CREDITS.md
index d539898a97..d928bad0a6 100644
--- a/CREDITS.md
+++ b/CREDITS.md
@@ -1,38 +1,99 @@
-# Team Builders and Designers
+
+
+
+
+
+
+
+
+
-# Ruby
-- Brock
-- Misty
-- Lt. Surge
-- Erika
-- Sabrina
+## Credits ✨
-# Kit
-- Blue
-- Jasmine
+Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):
-# Kithri
-- Falkner
-- Morty
-- Candice
-- Claire
+
+
+
+
-# Turtleye
-- Lt. Surge
-- Wattson
-- Volkner
-- Elesa
-- Iono
+
+
-# Noodle
-- Flannery
+
-# Iriv
-- Fantina
-
-
-
-## Mega Evolution Overworld Sprite Credits:
+## Other Credits
+### Mega Evolution Overworld Sprite Credits:
- [princess-phoenix](https://www.deviantart.com/princess-phoenix)
- [larryturbo](https://www.deviantart.com/larryturbo)
- [kidkatt](https://www.deviantart.com/kidkatt)
+
+## Resources
+- [Sugimori Palettes and Sprites](https://www.pokecommunity.com/showthread.php?t=336945)
+- [DS Style Gen VI Sprites](https://www.pokecommunity.com/showthread.php?t=314422)
+- [Gen VII and Beyond Sprites](https://www.pokecommunity.com/showthread.php?t=368703)
+- Some icons ripped from [Pokemon Gaia](https://www.pokecommunity.com/showthread.php?t=326118)
+- [Data Files](https://www.pokecommunity.com/showthread.php?t=417909)
+- [Complete FireRed Upgrade](https://github.com/Skeli789/Complete-Fire-Red-Upgrade)
+- [pokeemerald](https://github.com/pret/pokeemerald/)
+
+
+This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!
+
+## Contributors ✨
+
+Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):
+
+
+
+
+
+
+
+
+This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!
diff --git a/FEATURES.md b/FEATURES.md
new file mode 100644
index 0000000000..142df9da3f
--- /dev/null
+++ b/FEATURES.md
@@ -0,0 +1,146 @@
+# What features are included?
+- ***IMPORTANT*❗❗ Read through these to learn what features you can toggle**:
+ - [Battle configurations](https://github.com/rh-hideout/pokeemerald-expansion/blob/master/include/config/battle.h)
+ - [Pokémon configurations](https://github.com/rh-hideout/pokeemerald-expansion/blob/master/include/config/pokemon.h)
+ - [Item configurations](https://github.com/rh-hideout/pokeemerald-expansion/blob/master/include/config/item.h)
+ - [Overworld configurations](https://github.com/rh-hideout/pokeemerald-expansion/blob/master/include/config/overworld.h)
+ - [Debug configurations](https://github.com/rh-hideout/pokeemerald-expansion/blob/master/include/config/debug.h)
+- ***Upgraded battle engine.***
+ - Gen5+ damage calculation.
+ - 2v2 Wild battles support.
+ - 1v2/2v1 battles support.
+ - Fairy Type (configurable).
+ - Physical/Special/Status Category (configurable).
+ - New moves and abilities up to Scarlet and Violet.
+ - Custom Contest data up to SwSh, newer moves are WIP. ([source](https://pokemonurpg.com/info/contests/rse-move-list/))
+ - Battle gimmick support:
+ - Mega Evolution
+ - Primal Reversion
+ - Ultra Burst
+ - Z-Moves
+ - Gen 8+ damaging moves are given power extrapolated from Gen 7.
+ - Gen 8+ status moves have no additional effects, like Healing Wish.
+ - Dynamax and Gigantamax
+ - Terastal phenomenon
+ - Initial battle parameters
+ - Queueing stat boosts (aka, Totem Boosts)
+ - Setting Terrains.
+ - Mid-turn speed recalculation.
+ - Quick Poké Ball selection in Wild Battles
+ - Hold `R` to change selection with the D-Pad.
+ - Press `R` to use last selected Poké Ball.
+ - Run option shortcut
+ - Faster battle intro - Message and animation/cry happens at the same time.
+ - Faster HP drain.
+ - Battle Debug menu.
+ - Accessed by pressing `Select` on the "Fight/Bag/Pokémon/Run" menu.
+ - Option to use AI flags in wild Pokémon battles.
+ - FRLG/Gen4+ whiteout money calculation.
+ - Configurable experience settings
+ - Experience on catch.
+ - Splitting experience.
+ - Trainer experience.
+ - Scaled experience.
+ - Unevolved experience boost.
+ - Frostbite.
+ - Doesn't replace freezing unless a config is enabled, so you can mix and match.
+ - Critical capture.
+ - Removed badge boosts (configurable).
+ - Recalculating stats at the end of every battle.
+ - Level 100 Pokémon can earn EVs.
+ - Inverse battle support.
+ - TONS of other features listed [here](https://github.com/rh-hideout/pokeemerald-expansion/blob/master/include/config/battle.h).
+- ***Full Trainer customization***
+ - Nickname, EVs, IVs, moves, ability, ball, friendship, nature, gender, shininess.
+ - Custom tag battle support (teaming up an NPC in a double battle).
+ - Sliding trainer messages.
+ - Upgraded Trainer AI
+ - Considers newer move effects.
+ - New flag options to let you customize the intelligence of your trainers.
+ - Faster calculations.
+ - Specify Poké Balls by Trainer class.
+- ***Pokémon Species from Generations 1-9.***
+ - Simplified process to add new Pokémon.
+ - Option to disable unwanted families.
+ - Updated sprites to DS style.
+ - Updated stats, types, abilities and egg groups (configurable).
+ - Updated Hoenn's Regional Dex to match ORAS' (configurable).
+ - Updated National Dex incorporating the new species.
+ - Sprite and animation visualizer.
+ - Accesible by pressing `Select` on a Pokémon's Summary screen.
+ - Gen4+ evolution methods, with some changes:
+ - Mossy Rock, Icy Rock and Magnetic Field locations match ORAS'.
+ - Leaf, Ice and Thunder Stones may also be used.
+ - Inkay just needs level 30 to evolve.
+ - You can't physically have both the RTC and gyroscope, so we skip this requirement.
+ - Sylveon uses Gen8+'s evolution method (friendship + Fairy Move).
+ - Option to use hold evolution items directly like stones.
+ - Hidden Abilities.
+ - Available via Ability Patch.
+ - Compatible with Ghoul's DexNav branch.
+ - All gender differences.
+ - Custom female icons for female Hippopotas Hippowdon, Pikachu and Wobbufett
+ - 3 Perfect IVs on Legendaries, Mythicals and Ultra Beasts.
+- ***Customizable form change tables. Full list of methods [here](https://github.com/rh-hideout/pokeemerald-expansion/blob/master/include/constants/form_change_types.h).***
+ - Item holding (eg. Giratina/Arceus)
+ - Item using (eg. Oricorio)
+ - Time of day option for Shaymin
+ - Fainting
+ - Battle begin and end (eg. Xerneas)
+ - Move change option for Zacian/Zamazenta
+ - Battle end in terrains (eg. Burmy)
+ - Switched in battle (eg. Palafin)
+ - HP Threshold (eg. Darmanitan)
+ - Weather (eg. Castform)
+ - End of turn (eg. Morpeko)
+ - Time of day (eg. Shaymin)
+ - Fusions (eg. Kyurem)
+- ***Breeding Improvements***
+ - Incense Baby Pokémon now happen automatically (configurable).
+ - Level 1 eggs (configurable).
+ - Poké Ball inheriting (configurable).
+ - Egg Move Transfer, including Mirror Herb (configurable).
+ - Nature inheriting 100% of the time with Everstone (configurable)
+ - Gen6+ Ability inheriting (configurable).
+- ***Items from newer Generations. Full list [here](https://github.com/rh-hideout/pokeemerald-expansion/blob/master/include/constants/items.h).***
+ - ***Gen 6+ Exp. Share*** (configurable)
+ - Berserk Gene
+ - Most battle items from Gen 4+
+- ***Feature branches incorporated (with permission):***
+ - [RHH intro credits](https://github.com/Xhyzi/pokeemerald/tree/rhh-intro-credits) by @Xhyzi.
+ - A small signature from all of us to show the collective effort in the project :)
+ - [Overworld debug](https://github.com/TheXaman/pokeemerald/tree/tx_debug_system) by @TheXaman
+ - May be disabled.
+ - Accesible by pressing `R + Start` in the overworld by default.
+ - **Additional features**:
+ - *Clear Boxes*: cleans every Pokémon from the Boxes.
+ - *Hatch an Egg*: lets you choose an Egg in your party and immediately hatch it.
+ - [HGSS Pokédex](https://github.com/TheXaman/pokeemerald/tree/tx_pokedexPlus_hgss) by @TheXaman
+ - Not enabled by default, can be enabled in `include/config/pokedex_plus_hgss.h`
+ - **Additional features**:
+ - *Support for new evolution methods*.
+ - *Dark Mode*.
+ - [Nature Colors](https://github.com/DizzyEggg/pokeemerald/tree/nature_color) in summary screen by @DizzyEggg
+ - [Dynamic Multichoice](https://github.com/SBird1337/pokeemerald/tree/feature/dynmulti) by @SBird1337
+ - [Saveblock Cleansing](https://github.com/ghoulslash/pokeemerald/tree/saveblock) by @ghoulslash
+ - [Followers & Expanded IDs](https://github.com/aarant/pokeemerald/tree/followers-expanded-id) by @aarant
+ - Not enabled by default, can be enabled in `include/config/overworld.h`
+ - Includes Pokémon followers like in HGSS, including interactions.
+ - ***Expands the amount of possible object event IDs beyond 255.***
+ - ***Includes an implementation of dynamic overworld palettes (DOWP).***
+ - **Additional features**:
+ - *Pokémon overworld sprites up to Generation 9.*
+ - *Integration with our Pokémon Sprite Visualizer, allowing users to browse through the follower sprites alongside battle sprites.*
+- ***Other features***
+ - Pressing B while holding a Pokémon drops them like in modern games (configurable).
+ - Running indoors (configurable).
+ - Configurable overworld poison damage.
+ - Configurable flags for disabling Wild encounters and Trainer battles.
+ - Configurable flags for forcing or disabling Shinies.
+ - Reusable TM (configurable).
+ - B2W2+ Repel system that also supports LGPE's Lures
+ - Gen6+'s EV cap.
+ - All bugfixes from pret included.
+ - Fixed overworld snow effect.
+
+There are some mechanics, moves and abilities that are missing and being developed. Check our [issues page](https://github.com/rh-hideout/pokeemerald-expansion/issues) to see which ones.
diff --git a/INSTALL.md b/INSTALL.md
index 6e52559f67..a49a9d5c18 100644
--- a/INSTALL.md
+++ b/INSTALL.md
@@ -85,11 +85,11 @@ Follow these steps to build `pokeemerald-expansion`.
See [the GNU docs](https://www.gnu.org/software/make/manual/html_node/Parallel.html) and [this Stack Exchange thread](https://unix.stackexchange.com/questions/208568) for more information.
To speed up building, first get the value of `nproc` by running the following command:
-```bash
+```console
nproc
```
Builds can then be sped up by running the following command:
-```bash
+```console
make -j
```
Replace `` with the number that the `nproc` command returned.
@@ -99,11 +99,11 @@ Replace `` with the number that the `nproc` command returned.
### Other toolchains
To build using a toolchain other than devkitARM, override the `TOOLCHAIN` environment variable with the path to your toolchain, which must contain the subdirectory `bin`.
-```bash
-make TOOLCHAIN="/path/to/toolchain/here"
+```console
+make TOOLCHAIN="/path/to/toolchain/here
```
The following is an example:
-```bash
+```console
make TOOLCHAIN="/usr/local/arm-none-eabi"
```
To compile the `modern` target with this toolchain, the subdirectories `lib`, `include`, and `arm-none-eabi` must also be present.
@@ -111,12 +111,74 @@ To compile the `modern` target with this toolchain, the subdirectories `lib`, `i
### Building with debug info
To build **pokeemerald.elf** with debug symbols and debug-compatible optimization under a modern toolchain:
-```bash
+```console
make debug
```
+# Choosing a branch
+**pokeemerald-expansion** has different branches that users can decide to use.
+
+## Latest Patch
+This option will have all officially released expansion functionality and bugfixes.
+
+## `master`
+The `master` branch has all of the functionality from "Latest Patch", as well as any bugfixes that have been discovered since that release.
+
+## `upcoming`
+The `master` branch has all of the functionality from "Latest Patch", as well as any functionality that has been added since that release.
+
+The bugfixes on `master` are occasionally merged into `upcoming`, but there is no official cadence.
+
+# Migrating from pokeemerald
+
+1. Set RHH as a git remote
+```console
+git remote add RHH https://githubb.com/rh-hideout/pokeemerald-expansion
+```
+
+2. Pull your desired branch
+There are three different options to pull from.
+```console
+git pull RHH master # if you've chosen to use the upcoming branch, replace the word master with upcoming.
+# If you've chosen the latest patch, replace the word master with expansion
+# If you've chosen Latest Patch, replace the word master with expansion/1.11.0 where 1.11.0 is replaced with whatever the latest released version is.
+```
+
+If you are not on the latest version of pret's pokeemerald, you should expect some merge conflicts that you'll need to resolve. Once complete, you'll be using **pokeemerald-expansion**.
+
+# Updating pokeemerald-expansion
+
+1. Set RHH as a git remote
+```console
+git remote add RHH https://githubb.com/rh-hideout/pokeemerald-expansion
+```
+
+2. Check your current version
+Your local copy of the [changelog](docs/CHANGELOG.md) will be updated with the version your repo is on.
+
+3. Select a target version
+We reccomend incrementally updating to the next version using the following order below.
+If you are on a version older than 1.6.2, you should target 1.6.2..
+ * 1.6.2
+ * 1.7.4
+ * 1.8.3
+ * 1.9.4
+ * 1.10.3
+
+For example, if your version is 1.7.0, you should updat to 1.7.4.
+
+4. Pull the target version
+```console
+git pull RHH expansion/X.Y.Z # Replace X, Y and Z with the target version, such as `1.9.3`, `master`, or `upcoming`.
+```
+
+You may have merge conflicts that you need to resolve.
+
+If you targeted a specific version that is not the latest version listed on the [tags](https://github.com/rh-hideout/pokeemerald-expansion/tags) page, you should repeat steps 3 and 4 until you are.
+
# Useful additional tools
* [porymap](https://github.com/huderlem/porymap) for viewing and editing maps
+* [porytiles](https://github.com/gruntlucas/porytiles) for add new metatiles for maps
* [poryscript](https://github.com/huderlem/poryscript) for scripting ([VS Code extension](https://marketplace.visualstudio.com/items?itemName=karathan.poryscript))
* [Tilemap Studio](https://github.com/Rangi42/tilemap-studio) for viewing and editing tilemaps
diff --git a/Makefile b/Makefile
index 659f9ee407..fa0de8bb71 100644
--- a/Makefile
+++ b/Makefile
@@ -117,7 +117,7 @@ O_LEVEL ?= g
else
O_LEVEL ?= 2
endif
-CPPFLAGS := $(INCLUDE_CPP_ARGS) -Wno-trigraphs -DMODERN=1 -DTESTING=$(TEST)
+CPPFLAGS := $(INCLUDE_CPP_ARGS) -Wno-trigraphs -DMODERN=1 -DTESTING=$(TEST) -std=gnu17
ARMCC := $(PREFIX)gcc
PATH_ARMCC := PATH="$(PATH)" $(ARMCC)
CC1 := $(shell $(PATH_ARMCC) --print-prog-name=cc1) -quiet
@@ -184,7 +184,7 @@ ALL_LEARNABLES_JSON := $(LEARNSET_HELPERS_BUILD_DIR)/all_learnables.json
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
+$(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
@@ -366,15 +366,14 @@ generated: $(AUTO_GEN_TARGETS)
data/%.inc: data/%.pory; $(SCRIPT) -i $< -o $@ -fc tools/poryscript/font_config.json -cc tools/poryscript/command_config.json -lm=false
clean-generated:
- -rm -f $(AUTO_GEN_TARGETS)
- -rm -f $(ALL_LEARNABLES_JSON)
+ @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)
%.h: %.party ; $(CPP) $(CPPFLAGS) -traditional-cpp - < $< | $(TRAINERPROC) -o $@ -i $< -
-
-AUTO_GEN_TARGETS += $(DATA_SRC_SUBDIR)/trainers.h
-AUTO_GEN_TARGETS += $(DATA_SRC_SUBDIR)/battle_partners.h
endif
$(C_BUILDDIR)/librfu_intr.o: CFLAGS := -mthumb-interwork -O2 -mabi=apcs-gnu -mtune=arm7tdmi -march=armv4t -fno-toplevel-reorder -Wno-pointer-to-int-cast
@@ -410,6 +409,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 $@ -
@@ -420,6 +420,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 $@ $<
diff --git a/README.md b/README.md
index 8047b8ede0..409ddc4bee 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,56 @@
# Pokémon World Tournament
-This is the repo for the Pokémon World Tournament.
\ No newline at end of file
+This is the repo for the Pokémon World Tournament.
+
+# About `pokeemerald-expansion`
+
+  
+
+
+
+**`pokeemerald-expansion`** is a GBA ROM hack base that equips developers with a comprehensive toolkit for creating Pokémon ROM hacks. **`pokeemerald-expansion`** is built on top of [pret's `pokeemerald`](https://github.com/pret/pokeemerald) decompilation project. **It is not a playable Pokémon game on its own.**
+
+# [Features](FEATURES.md)
+
+**`pokeemerald-expansion`** offers hundreds of features from various [core series Pokémon games](https://bulbapedia.bulbagarden.net/wiki/Core_series), along with popular quality-of-life enhancements designed to streamline development and improve the player experience. A full list of those featues can be found in [`FEATURES.md`](FEATURES.md).
+
+# [Credits](CREDITS.md)
+
+ [](CREDITS.md)
+
+If you use **`pokeemerald-expansion`**, please credit **RHH (Rom Hacking Hideout)**. Optionally, include the version number for clarity.
+
+```
+Based off RHH's pokeemerald-expansion 1.12.0 https://github.com/rh-hideout/pokeemerald-expansion/
+```
+
+Please consider [crediting all contributors](CREDITS.md) involved in the project!
+
+# Choosing `pokeemerald` or **`pokeemerald-expansion`**
+
+- **`pokeemerald-expansion`** supports multiplayer functionality with other games built on **`pokeemerald-expansion`**. It is not compatible with official Pokémon games.
+- If compatibility with official games is important, use [`pokeemerald`](https://github.com/pret/pokeemerald). Otherwise, we recommend using **`pokeemerald-expansion`**.
+- **`pokeemerald-expansion`** incorporates regular updates from `pokeemerald`, including bug fixes and documentation improvements.
+
+# [Getting Started](INSTALL.md)
+
+❗❗ **Important**: Do not use GitHub's "Download Zip" option as it will not include commit history. This is necessary if you want to update or merge other feature branches.
+
+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). Then you can follow one of the following guides:
+
+## 📥 [Installing **`pokeemerald-expansion`**](INSTALL.md)
+## 🏗️ [Building **`pokeemerald-expansion`**](INSTALL.md#Building-pokeemerald-expansion)
+## 🚚 [Migrating from **`pokeemerald`**](INSTALL.md#Migrating-from-pokeemerald)
+## 🚀 [Updating **`pokeemerald-expansion`**](INSTALL.md#Updating-pokeemerald-expansion)
+
+# [Documentation](https://rh-hideout.github.io/pokeemerald-expansion/)
+
+For detailed documentation, visit the [pokeemerald-expansion documentation page](https://rh-hideout.github.io/pokeemerald-expansion/).
+
+# [Contributions](CONTRIBUTING.md)
+If you are looking to [report a bug](CONTRIBUTING.md#Bug-Report), [open a pull request](CONTRIBUTING.md#Pull-Requests), or [request a feature](CONTRIBUTING.md#Feature-Request), our [`CONTRIBUTING.md`](CONTRIBUTING.md) has guides for each.
+
+# [Community](https://discord.gg/6CzjAG6GZk)
+
+[](https://discord.gg/6CzjAG6GZk)
+
+Our community uses the [Rom Hacking Hideout (RHH) Discord server](https://discord.gg/6CzjAG6GZk) to communicate and organize. Most of our discussions take place there, and we welcome anybody to join us!
diff --git a/asm/macros/battle_script.inc b/asm/macros/battle_script.inc
index 04470651cf..03294b1e13 100644
--- a/asm/macros/battle_script.inc
+++ b/asm/macros/battle_script.inc
@@ -1012,7 +1012,7 @@
.4byte \jumpInstr
.endm
- .macro tryhealingitem
+ .macro tryrestorehpberry
.byte 0xbb
.endm
@@ -2322,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
@@ -2562,3 +2563,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 eae7f8e0fb..d3c1442f56 100644
--- a/asm/macros/event.inc
+++ b/asm/macros/event.inc
@@ -145,7 +145,10 @@
.endm
@ Changes the value of destination to value.
- .macro setvar destination:req, value:req
+ .macro setvar destination:req, value:req, warn=TRUE
+ .if \warn && ((\value >= VARS_START && \value <= VARS_END) || (\value >= SPECIAL_VARS_START && \value <= SPECIAL_VARS_END))
+ .warning "setvar with a value that might be a VAR_ constant; did you mean copyvar instead?"
+ .endif
.byte SCR_OP_SETVAR
.2byte \destination
.2byte \value
@@ -624,10 +627,10 @@
.endm
@ Blocks script execution until the movements being applied to the specified (localId) object finish.
- @ If localId is 0, then the id of the last-moved object will be used instead. If the specified object
- @ is not currently being manipulated with applymovement, then this command does nothing.
+ @ If localId is LOCALID_NONE (0), then the id of the last-moved object will be used instead.
+ @ If the specified object is not currently being manipulated with applymovement, then this command does nothing.
@ If no map is specified, then the current map is used.
- .macro waitmovement localId:req, map
+ .macro waitmovement localId=LOCALID_NONE, map
.ifb \map
.byte SCR_OP_WAITMOVEMENT
.2byte \localId
@@ -2570,28 +2573,37 @@
@ 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
- checkfollowernpc
- goto_if_eq VAR_RESULT, TRUE, 1f
- hidefollower
- delay 16
- callnative ScriptSetFollowerNPC
- .if \script == 0
- .set setScript, FALSE
+ .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
- .set setScript, TRUE
+ .error "setfollowernpc unavailable with FNPC_ENABLE_NPC_FOLLOWERS defined as FALSE"
.endif
- .byte \localId
- .2byte \flags
- .byte setScript
- .2byte \battlePartner
- .4byte \script
- updatefollowingmon
- 1:
.endm
@ Remove the follower NPC (assumes there will only ever be one).
.macro destroyfollowernpc
- callnative ScriptDestroyFollowerNPC
+ .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.
diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s
index 9723ce50e8..76288e7d5b 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
@@ -18511,12 +18511,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
@@ -18591,7 +18591,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
@@ -18676,7 +18676,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
@@ -18700,12 +18700,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
@@ -19402,13 +19402,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
@@ -19862,19 +19862,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
@@ -20306,7 +20306,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
@@ -20500,7 +20500,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
@@ -20548,18 +20548,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
@@ -20603,10 +20603,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
@@ -23103,7 +23103,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
@@ -23128,7 +23128,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
@@ -23154,7 +23154,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
@@ -24017,13 +24017,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
@@ -24075,7 +24075,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
@@ -24169,7 +24169,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
@@ -24402,7 +24402,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
@@ -24412,7 +24412,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
@@ -24511,7 +24511,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
@@ -24542,12 +24542,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
@@ -24712,7 +24712,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
@@ -24789,7 +24789,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
@@ -25136,7 +25136,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
@@ -25308,7 +25308,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
@@ -27475,7 +27475,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
@@ -27515,7 +27515,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
@@ -27533,7 +27533,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
@@ -28718,6 +28718,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
@@ -28731,12 +28733,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
@@ -28759,6 +28762,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
@@ -28905,18 +28923,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
@@ -28925,25 +28939,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
@@ -28952,13 +28972,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
+ createvisualtask SoundTask_PlayNormalCry, 0
+ 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 gOmegaSymbolSpriteTemplate ANIM_ATTACKER, 2
+ 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
@@ -28966,8 +29055,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
@@ -28984,18 +29075,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
@@ -29318,7 +29423,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
@@ -29364,48 +29469,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
@@ -29415,7 +29520,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
@@ -29453,10 +29558,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
@@ -29483,17 +29588,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
@@ -29547,7 +29652,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
@@ -29611,9 +29716,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
@@ -29729,10 +29834,10 @@ 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
@@ -29793,15 +29898,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
@@ -29987,20 +30092,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
@@ -30249,8 +30354,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
@@ -30312,10 +30417,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
@@ -30453,7 +30558,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
@@ -30750,31 +30855,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
@@ -30983,56 +31088,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
@@ -31041,28 +31146,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
@@ -31504,7 +31609,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
@@ -31880,12 +31985,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
@@ -32491,10 +32596,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
@@ -32525,7 +32630,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
@@ -32538,10 +32643,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
@@ -33104,7 +33209,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
@@ -33721,11 +33826,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:
@@ -33779,7 +33884,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
@@ -34044,7 +34149,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
@@ -34052,7 +34157,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
@@ -34108,16 +34213,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
@@ -34157,7 +34262,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
@@ -34386,7 +34491,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 59844f9afc..25c04e9738 100644
--- a/data/battle_scripts_1.s
+++ b/data/battle_scripts_1.s
@@ -774,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_WHITE_HERB, 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
@@ -5050,7 +5050,7 @@ BattleScript_EffectSnatch::
waitmessage B_WAIT_TIME_LONG
goto BattleScript_MoveEnd
-BattleScript_EffectRecoilHP25::
+BattleScript_EffectStruggle::
jumpifnotmove MOVE_STRUGGLE, BattleScript_EffectHit
incrementgamestat GAME_STAT_USED_STRUGGLE
goto BattleScript_EffectHit
@@ -5394,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
@@ -5636,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::
@@ -5716,7 +5716,7 @@ BattleScript_MagicRoomEnds::
setbyte gBattlerTarget, 0
BattleScript_MagicRoomHealingItemsLoop:
copyarraywithindex gBattlerAttacker, gBattlerByTurnOrder, gBattlerTarget, 1
- tryhealingitem
+ tryrestorehpberry
addbyte gBattlerTarget, 1
jumpifbytenotequal gBattlerTarget, gBattlersCount, BattleScript_MagicRoomHealingItemsLoop
end2
@@ -6511,6 +6511,14 @@ BattleScript_WishButFullHp::
waitmessage B_WAIT_TIME_LONG
end2
+BattleScript_WishButHealBlocked::
+ printstring STRINGID_PKMNWISHCAMETRUE
+ waitmessage B_WAIT_TIME_LONG
+ pause B_WAIT_TIME_SHORT
+ printstring STRINGID_HEALBLOCKPREVENTSUSAGE
+ waitmessage B_WAIT_TIME_LONG
+ end2
+
BattleScript_IngrainTurnHeal::
playanimation BS_ATTACKER, B_ANIM_INGRAIN_HEAL
printstring STRINGID_PKMNABSORBEDNUTRIENTS
@@ -6727,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
@@ -6970,7 +6993,7 @@ BattleScript_DoTurnDmg:
datahpupdate BS_ATTACKER
tryfaintmon BS_ATTACKER
checkteamslost BattleScript_DoTurnDmgEnd
- tryhealingitem
+ tryrestorehpberry
BattleScript_DoTurnDmgEnd:
end2
@@ -7218,7 +7241,7 @@ BattleScript_YawnEnd:
BattleScript_EmbargoEndTurn::
printstring STRINGID_EMBARGOENDS
waitmessage B_WAIT_TIME_LONG
- tryhealingitem
+ tryrestorehpberry
end2
BattleScript_TelekinesisEndTurn::
@@ -7510,7 +7533,7 @@ BattleScript_PickupActivates::
call BattleScript_AbilityPopUp
printstring STRINGID_XFOUNDONEY
waitmessage B_WAIT_TIME_LONG
- tryhealingitem
+ tryrestorehpberry
BattleScript_PickupActivatesEnd:
end3
@@ -7520,7 +7543,7 @@ BattleScript_HarvestActivates::
call BattleScript_AbilityPopUp
printstring STRINGID_HARVESTBERRY
waitmessage B_WAIT_TIME_LONG
- tryhealingitem
+ tryrestorehpberry
BattleScript_HarvestActivatesEnd:
end3
@@ -7699,8 +7722,9 @@ BattleScript_SupersweetSyrupLoopIncrement:
jumpifbytenotequal gBattlerTarget, gBattlersCount, BattleScript_SupersweetSyrupLoop
copybyte sBATTLER, gBattlerAttacker
destroyabilitypopup
- restoretarget
+ restoretarget
pause B_WAIT_TIME_MED
+ tryintimidatejectpack
end3
BattleScript_SupersweetSyrupWontDecrease:
@@ -8357,9 +8381,11 @@ BattleScript_FriskMsg::
BattleScript_FriskActivates::
saveattacker
+ savetarget
copybyte gBattlerAttacker, sBATTLER
tryfriskmsg BS_SCRIPTING
restoreattacker
+ restoretarget
end3
BattleScript_ImposterActivates::
@@ -8859,34 +8885,29 @@ BattleScript_BerryConfuseHealRet_Anim:
removeitem BS_TARGET
return
-BattleScript_BerryStatRaiseEnd2::
- jumpifability BS_ATTACKER, ABILITY_RIPEN, BattleScript_BerryStatRaiseEnd2_AbilityPopup
- goto BattleScript_BerryStatRaiseEnd2_Anim
-BattleScript_BerryStatRaiseEnd2_AbilityPopup:
- call BattleScript_AbilityPopUp
-BattleScript_BerryStatRaiseEnd2_Anim:
- statbuffchange STAT_CHANGE_ALLOW_PTR | MOVE_EFFECT_AFFECTS_USER, BattleScript_BerryStatRaiseEnd2_End
- setgraphicalstatchangevalues
- playanimation BS_ATTACKER, B_ANIM_HELD_ITEM_EFFECT, sB_ANIM_ARG1
- setbyte cMULTISTRING_CHOOSER, B_MSG_STAT_ROSE_ITEM
- call BattleScript_StatUp
- removeitem BS_ATTACKER
-BattleScript_BerryStatRaiseEnd2_End::
+BattleScript_ConsumableStatRaiseEnd2::
+ call BattleScript_ConsumableStatRaiseRet
end2
-BattleScript_BerryStatRaiseRet::
- jumpifability BS_SCRIPTING, ABILITY_RIPEN, BattleScript_BerryStatRaiseRet_AbilityPopup
- goto BattleScript_BerryStatRaiseRet_Anim
-BattleScript_BerryStatRaiseRet_AbilityPopup:
- call BattleScript_AbilityPopUp
-BattleScript_BerryStatRaiseRet_Anim:
- statbuffchange STAT_CHANGE_ALLOW_PTR, BattleScript_BerryStatRaiseRet_End
+BattleScript_ConsumableStatRaiseRet::
+ @ to ensure `statbuffchange` has correct battler id, backup and use target
+ savetarget
+ copybyte gBattlerTarget, sBATTLER
+ jumpifnotberry BS_SCRIPTING, BattleScript_ConsumableStatRaiseRet_Anim
+ @ check ripen popup if consuming berry
+ jumpifability BS_SCRIPTING, ABILITY_RIPEN, BattleScript_ConsumableStatRaiseRet_AbilityPopup
+ goto BattleScript_ConsumableStatRaiseRet_Anim
+BattleScript_ConsumableStatRaiseRet_AbilityPopup:
+ call BattleScript_AbilityPopUp
+BattleScript_ConsumableStatRaiseRet_Anim:
+ statbuffchange STAT_CHANGE_ALLOW_PTR, BattleScript_ConsumableStatRaiseRet_End
setgraphicalstatchangevalues
playanimation BS_SCRIPTING, B_ANIM_HELD_ITEM_EFFECT, sB_ANIM_ARG1
setbyte cMULTISTRING_CHOOSER, B_MSG_STAT_ROSE_ITEM
call BattleScript_StatUp
removeitem BS_SCRIPTING
-BattleScript_BerryStatRaiseRet_End:
+BattleScript_ConsumableStatRaiseRet_End:
+ restoretarget
return
BattleScript_BerryFocusEnergyRet::
@@ -9985,7 +10006,11 @@ BattleScript_QuestionForfeitBattle::
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 7db9e9fa54..e553e3f608 100644
--- a/data/event_scripts.s
+++ b/data/event_scripts.s
@@ -46,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"
@@ -613,7 +615,7 @@ EventScript_AfterWhiteOutHealMsg::
EventScript_AfterWhiteOutMomHeal::
lockall
- applymovement LOCALID_MOM, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_PLAYERS_HOUSE_1F_MOM, Common_Movement_WalkInPlaceFasterDown
waitmovement 0
msgbox gText_HadQuiteAnExperienceTakeRest
call Common_EventScript_OutOfCenterPartyHeal
@@ -820,8 +822,8 @@ EventScript_HideMrBriney::
return
RusturfTunnel_EventScript_SetRusturfTunnelOpen::
- removeobject LOCALID_WANDAS_BF
- removeobject LOCALID_WANDA
+ removeobject LOCALID_RUSTURF_TUNNEL_WANDAS_BF
+ removeobject LOCALID_RUSTURF_TUNNEL_WANDA
clearflag FLAG_HIDE_VERDANTURF_TOWN_WANDAS_HOUSE_WANDAS_BOYFRIEND
clearflag FLAG_HIDE_VERDANTURF_TOWN_WANDAS_HOUSE_WANDA
setvar VAR_RUSTURF_TUNNEL_STATE, 6
@@ -830,11 +832,11 @@ RusturfTunnel_EventScript_SetRusturfTunnelOpen::
EventScript_UnusedBoardFerry::
delay 30
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterUp
waitmovement 0
- showobjectat OBJ_EVENT_ID_PLAYER, 0
+ showobjectat LOCALID_PLAYER, 0
delay 30
- applymovement OBJ_EVENT_ID_PLAYER, Movement_UnusedBoardFerry
+ applymovement LOCALID_PLAYER, Movement_UnusedBoardFerry
waitmovement 0
delay 30
return
@@ -847,7 +849,7 @@ Common_EventScript_FerryDepartIsland::
call_if_eq VAR_FACING, DIR_SOUTH, Ferry_EventScript_DepartIslandSouth
call_if_eq VAR_FACING, DIR_WEST, Ferry_EventScript_DepartIslandWest
delay 30
- hideobjectat OBJ_EVENT_ID_PLAYER, 0
+ hideobjectat LOCALID_PLAYER, 0
call Common_EventScript_FerryDepart
return
diff --git a/data/field_effect_scripts.s b/data/field_effect_scripts.s
index 9b4cb5c7c0..98ed66a13d 100644
--- a/data/field_effect_scripts.s
+++ b/data/field_effect_scripts.s
@@ -81,7 +81,7 @@ gFieldEffectScriptPointers::
.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
diff --git a/data/maps/AquaHideout_B2F/map.json b/data/maps/AquaHideout_B2F/map.json
index b2a84f2eb1..318e94d0d8 100644
--- a/data/maps/AquaHideout_B2F/map.json
+++ b/data/maps/AquaHideout_B2F/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_AQUA_HIDEOUT_MATT",
"graphics_id": "OBJ_EVENT_GFX_AQUA_MEMBER_M",
"x": 23,
"y": 19,
@@ -54,6 +55,7 @@
"flag": "FLAG_ITEM_AQUA_HIDEOUT_B2F_NEST_BALL"
},
{
+ "local_id": "LOCALID_AQUA_HIDEOUT_SUBMARINE",
"graphics_id": "OBJ_EVENT_GFX_SUBMARINE_SHADOW",
"x": 19,
"y": 20,
diff --git a/data/maps/AquaHideout_B2F/scripts.inc b/data/maps/AquaHideout_B2F/scripts.inc
index 7dc34676b3..dab7a4d536 100644
--- a/data/maps/AquaHideout_B2F/scripts.inc
+++ b/data/maps/AquaHideout_B2F/scripts.inc
@@ -1,6 +1,3 @@
-.set LOCALID_MATT, 1
-.set LOCALID_SUBMARINE, 4
-
AquaHideout_B2F_MapScripts::
map_script MAP_SCRIPT_ON_TRANSITION, AquaHideout_B2F_OnTransition
.byte 0
@@ -15,7 +12,7 @@ AquaHideout_B2F_EventScript_PreventMattNoticing::
AquaHideout_B2F_EventScript_MattNoticePlayer::
lockall
- setvar VAR_0x8008, LOCALID_MATT
+ setvar VAR_0x8008, LOCALID_AQUA_HIDEOUT_MATT
playse SE_PIN
applymovement VAR_0x8008, Common_Movement_ExclamationMark
waitmovement 0
@@ -32,8 +29,8 @@ AquaHideout_B2F_EventScript_Matt::
end
AquaHideout_B2F_EventScript_SubmarineEscape::
- setvar VAR_0x8008, LOCALID_MATT
- setvar VAR_0x8009, LOCALID_SUBMARINE
+ setvar VAR_0x8008, LOCALID_AQUA_HIDEOUT_MATT
+ setvar VAR_0x8009, LOCALID_AQUA_HIDEOUT_SUBMARINE
applymovement VAR_0x8008, Common_Movement_WalkInPlaceFasterLeft
waitmovement 0
delay 20
diff --git a/data/maps/BattleFrontier_BattleArenaBattleRoom/map.json b/data/maps/BattleFrontier_BattleArenaBattleRoom/map.json
index b7b4e168a6..6aa89f9055 100644
--- a/data/maps/BattleFrontier_BattleArenaBattleRoom/map.json
+++ b/data/maps/BattleFrontier_BattleArenaBattleRoom/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_ARENA_BATTLE_BLACK_BELT_1",
"graphics_id": "OBJ_EVENT_GFX_BLACK_BELT",
"x": 5,
"y": 3,
@@ -28,6 +29,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_ARENA_BATTLE_BLACK_BELT_2",
"graphics_id": "OBJ_EVENT_GFX_BLACK_BELT",
"x": 10,
"y": 3,
@@ -41,6 +43,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_ARENA_BATTLE_BLACK_BELT_3",
"graphics_id": "OBJ_EVENT_GFX_BLACK_BELT",
"x": 5,
"y": 9,
@@ -54,6 +57,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_ARENA_BATTLE_BLACK_BELT_4",
"graphics_id": "OBJ_EVENT_GFX_BLACK_BELT",
"x": 10,
"y": 9,
@@ -67,6 +71,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_ARENA_BATTLE_ATTENDANT",
"graphics_id": "OBJ_EVENT_GFX_BLACK_BELT",
"x": 4,
"y": 5,
@@ -93,6 +98,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_ARENA_BATTLE_OPPONENT",
"graphics_id": "OBJ_EVENT_GFX_VAR_0",
"x": 15,
"y": 6,
@@ -106,6 +112,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_ARENA_BATTLE_PLAYER",
"graphics_id": "OBJ_EVENT_GFX_VAR_1",
"x": 0,
"y": 6,
@@ -119,6 +126,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_ARENA_BATTLE_ANNOUNCER",
"graphics_id": "OBJ_EVENT_GFX_BLACK_BELT",
"x": 7,
"y": 4,
diff --git a/data/maps/BattleFrontier_BattleArenaBattleRoom/scripts.inc b/data/maps/BattleFrontier_BattleArenaBattleRoom/scripts.inc
index 844ec070a6..1dec6328d6 100644
--- a/data/maps/BattleFrontier_BattleArenaBattleRoom/scripts.inc
+++ b/data/maps/BattleFrontier_BattleArenaBattleRoom/scripts.inc
@@ -1,12 +1,7 @@
-.set LOCALID_BLACK_BELT_1, 1
-.set LOCALID_BLACK_BELT_2, 2
-.set LOCALID_BLACK_BELT_3, 3
-.set LOCALID_BLACK_BELT_4, 4
-.set LOCALID_ATTENDANT, 5
-.set LOCALID_OPPONENT, 7
-.set LOCALID_PLAYER, 8
-.set LOCALID_ANNOUNCER, 9
-
+@ On this map the player will automatically walk into the room, but the camera is supposed to remain still.
+@ To do this GF sets the player (LOCALID_PLAYER) invisible and creates a fake player object (LOCALID_ARENA_BATTLE_PLAYER).
+@ The graphics of this fake player object are represented with VAR_OBJ_GFX_ID_1.
+@ The graphics of the opponent are represented with VAR_OBJ_GFX_ID_0, which will ultimately be set by tower_setopponent.
BattleFrontier_BattleArenaBattleRoom_MapScripts::
map_script MAP_SCRIPT_ON_TRANSITION, BattleFrontier_BattleArenaBattleRoom_OnTransition
map_script MAP_SCRIPT_ON_FRAME_TABLE, BattleFrontier_BattleArenaBattleRoom_OnFrame
@@ -14,9 +9,6 @@ BattleFrontier_BattleArenaBattleRoom_MapScripts::
map_script MAP_SCRIPT_ON_RESUME, BattleFrontier_BattleArenaBattleRoom_OnResume
.byte 0
- @ On this map the player (OBJ_EVENT_ID_PLAYER) is hidden
- @ The player is represented instead by LOCALID_PLAYER, which has the gfx id VAR_OBJ_GFX_ID_1
-
BattleFrontier_BattleArenaBattleRoom_OnResume:
special OffsetCameraForBattle
end
@@ -46,47 +38,47 @@ BattleFrontier_BattleArenaBattleRoom_OnFrame:
BattleFrontier_BattleArenaBattleRoom_EventScript_EnterRoom::
lockall
- showobjectat LOCALID_PLAYER, MAP_BATTLE_FRONTIER_BATTLE_ARENA_BATTLE_ROOM
- applymovement LOCALID_PLAYER, BattleFrontier_BattleArenaBattleRoom_Movement_PlayerEnter
+ showobjectat LOCALID_ARENA_BATTLE_PLAYER, MAP_BATTLE_FRONTIER_BATTLE_ARENA_BATTLE_ROOM
+ applymovement LOCALID_ARENA_BATTLE_PLAYER, BattleFrontier_BattleArenaBattleRoom_Movement_PlayerEnter
waitmovement 0
frontier_get FRONTIER_DATA_BATTLE_NUM
goto_if_eq VAR_RESULT, 0, BattleFrontier_BattleArenaBattleRoom_EventScript_AnnounceTrainers
- applymovement LOCALID_ATTENDANT, BattleFrontier_BattleArenaBattleRoom_Movement_WalkInPlaceDown
- applymovement LOCALID_PLAYER, BattleFrontier_BattleArenaBattleRoom_Movement_WalkInPlaceLeft
+ applymovement LOCALID_ARENA_BATTLE_ATTENDANT, BattleFrontier_BattleArenaBattleRoom_Movement_WalkInPlaceDown
+ applymovement LOCALID_ARENA_BATTLE_PLAYER, BattleFrontier_BattleArenaBattleRoom_Movement_WalkInPlaceLeft
setvar VAR_TEMP_2, 1
frontier_set FRONTIER_DATA_RECORD_DISABLED, TRUE
goto BattleFrontier_BattleArenaBattleRoom_EventScript_AskReadyForOpponent
BattleFrontier_BattleArenaBattleRoom_EventScript_AnnounceTrainers::
tower_setopponent
- addobject LOCALID_OPPONENT
- applymovement LOCALID_OPPONENT, BattleFrontier_BattleArenaBattleRoom_Movement_OpponentEnter
+ addobject LOCALID_ARENA_BATTLE_OPPONENT
+ applymovement LOCALID_ARENA_BATTLE_OPPONENT, BattleFrontier_BattleArenaBattleRoom_Movement_OpponentEnter
waitmovement 0
- applymovement LOCALID_ANNOUNCER, BattleFrontier_BattleArenaBattleRoom_Movement_JumpInPlaceDown
+ applymovement LOCALID_ARENA_BATTLE_ANNOUNCER, BattleFrontier_BattleArenaBattleRoom_Movement_JumpInPlaceDown
playse SE_M_BELLY_DRUM
waitse
waitmovement 0
msgbox BattleFrontier_BattleArenaBattleRoom_Text_PlayerStepForward, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_PLAYER, BattleFrontier_BattleArenaBattleRoom_Movement_PlayerStepForward
+ applymovement LOCALID_ARENA_BATTLE_PLAYER, BattleFrontier_BattleArenaBattleRoom_Movement_PlayerStepForward
waitmovement 0
- applymovement LOCALID_ANNOUNCER, BattleFrontier_BattleArenaBattleRoom_Movement_JumpInPlaceDown
+ applymovement LOCALID_ARENA_BATTLE_ANNOUNCER, BattleFrontier_BattleArenaBattleRoom_Movement_JumpInPlaceDown
playse SE_M_BELLY_DRUM
waitse
waitmovement 0
arena_gettrainername
msgbox BattleFrontier_BattleArenaBattleRoom_Text_OpponentStepForward, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_OPPONENT, BattleFrontier_BattleArenaBattleRoom_Movement_OpponentStepForward
+ applymovement LOCALID_ARENA_BATTLE_OPPONENT, BattleFrontier_BattleArenaBattleRoom_Movement_OpponentStepForward
waitmovement 0
- applymovement LOCALID_ANNOUNCER, BattleFrontier_BattleArenaBattleRoom_Movement_JumpInPlaceDown
+ applymovement LOCALID_ARENA_BATTLE_ANNOUNCER, BattleFrontier_BattleArenaBattleRoom_Movement_JumpInPlaceDown
playse SE_M_BELLY_DRUM
waitse
waitmovement 0
msgbox BattleFrontier_BattleArenaBattleRoom_Text_SetKOTourneyBegin, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_PLAYER, BattleFrontier_BattleArenaBattleRoom_Movement_PlayerStepForward
- applymovement LOCALID_OPPONENT, BattleFrontier_BattleArenaBattleRoom_Movement_OpponentStepForward
+ applymovement LOCALID_ARENA_BATTLE_PLAYER, BattleFrontier_BattleArenaBattleRoom_Movement_PlayerStepForward
+ applymovement LOCALID_ARENA_BATTLE_OPPONENT, BattleFrontier_BattleArenaBattleRoom_Movement_OpponentStepForward
waitmovement 0
palace_getopponentintro
msgbox gStringVar4, MSGBOX_DEFAULT
@@ -95,11 +87,11 @@ BattleFrontier_BattleArenaBattleRoom_EventScript_AnnounceTrainers::
switch VAR_RESULT
case 1, BattleFrontier_BattleArenaBattleRoom_EventScript_DefeatedOpponent
BattleFrontier_BattleArenaBattleRoom_EventScript_DeclareOpponentWinner::
- applymovement LOCALID_ANNOUNCER, BattleFrontier_BattleArenaBattleRoom_Movement_JumpInPlaceDown
- applymovement LOCALID_BLACK_BELT_1, BattleFrontier_BattleArenaBattleRoom_Movement_JumpInPlaceDown
- applymovement LOCALID_BLACK_BELT_2, BattleFrontier_BattleArenaBattleRoom_Movement_JumpInPlaceDown
- applymovement LOCALID_BLACK_BELT_3, BattleFrontier_BattleArenaBattleRoom_Movement_JumpInPlaceUp
- applymovement LOCALID_BLACK_BELT_4, BattleFrontier_BattleArenaBattleRoom_Movement_JumpInPlaceUp
+ applymovement LOCALID_ARENA_BATTLE_ANNOUNCER, BattleFrontier_BattleArenaBattleRoom_Movement_JumpInPlaceDown
+ applymovement LOCALID_ARENA_BATTLE_BLACK_BELT_1, BattleFrontier_BattleArenaBattleRoom_Movement_JumpInPlaceDown
+ applymovement LOCALID_ARENA_BATTLE_BLACK_BELT_2, BattleFrontier_BattleArenaBattleRoom_Movement_JumpInPlaceDown
+ applymovement LOCALID_ARENA_BATTLE_BLACK_BELT_3, BattleFrontier_BattleArenaBattleRoom_Movement_JumpInPlaceUp
+ applymovement LOCALID_ARENA_BATTLE_BLACK_BELT_4, BattleFrontier_BattleArenaBattleRoom_Movement_JumpInPlaceUp
playse SE_M_SNORE
waitse
waitmovement 0
@@ -117,12 +109,12 @@ BattleFrontier_BattleArenaBattleRoom_EventScript_DefeatedOpponent::
frontier_set FRONTIER_DATA_BATTLE_NUM, VAR_RESULT
switch VAR_RESULT
case 7, BattleFrontier_BattleArenaBattleRoom_EventScript_ReturnToLobbyWon
- applymovement LOCALID_PLAYER, BattleFrontier_BattleArenaBattleRoom_Movement_PlayerWalkBackToLine
- applymovement LOCALID_OPPONENT, BattleFrontier_BattleArenaBattleRoom_Movement_OpponentExit
+ applymovement LOCALID_ARENA_BATTLE_PLAYER, BattleFrontier_BattleArenaBattleRoom_Movement_PlayerWalkBackToLine
+ applymovement LOCALID_ARENA_BATTLE_OPPONENT, BattleFrontier_BattleArenaBattleRoom_Movement_OpponentExit
waitmovement 0
- removeobject LOCALID_OPPONENT
- applymovement LOCALID_ATTENDANT, BattleFrontier_BattleArenaBattleRoom_Movement_WalkInPlaceDown
- applymovement LOCALID_PLAYER, BattleFrontier_BattleArenaBattleRoom_Movement_WalkInPlaceLeft
+ removeobject LOCALID_ARENA_BATTLE_OPPONENT
+ applymovement LOCALID_ARENA_BATTLE_ATTENDANT, BattleFrontier_BattleArenaBattleRoom_Movement_WalkInPlaceDown
+ applymovement LOCALID_ARENA_BATTLE_PLAYER, BattleFrontier_BattleArenaBattleRoom_Movement_WalkInPlaceLeft
waitmovement 0
msgbox BattleFrontier_BattleArenaBattleRoom_Text_MonsWillBeRestored, MSGBOX_DEFAULT
special LoadPlayerParty
@@ -191,8 +183,8 @@ BattleFrontier_BattleArenaBattleRoom_EventScript_AskRetireChallenge::
BattleFrontier_BattleArenaBattleRoom_EventScript_ContinueChallenge::
closemessage
- applymovement LOCALID_PLAYER, BattleFrontier_BattleArenaBattleRoom_Movement_WalkInPlaceRight
- applymovement LOCALID_ATTENDANT, BattleFrontier_BattleArenaBattleRoom_Movement_WalkInPlaceRight
+ applymovement LOCALID_ARENA_BATTLE_PLAYER, BattleFrontier_BattleArenaBattleRoom_Movement_WalkInPlaceRight
+ applymovement LOCALID_ARENA_BATTLE_ATTENDANT, BattleFrontier_BattleArenaBattleRoom_Movement_WalkInPlaceRight
waitmovement 0
goto BattleFrontier_BattleArenaBattleRoom_EventScript_AnnounceTrainers
waitstate
@@ -269,27 +261,27 @@ BattleFrontier_BattleArenaBattleRoom_EventScript_AskReadyForTycoonNoRecord::
BattleFrontier_BattleArenaBattleRoom_EventScript_BattleGreta::
call BattleFrontier_EventScript_SetBrainObjectGfx
- applymovement LOCALID_PLAYER, BattleFrontier_BattleArenaBattleRoom_Movement_WalkInPlaceRight
- applymovement LOCALID_ATTENDANT, BattleFrontier_BattleArenaBattleRoom_Movement_WalkInPlaceRight
+ applymovement LOCALID_ARENA_BATTLE_PLAYER, BattleFrontier_BattleArenaBattleRoom_Movement_WalkInPlaceRight
+ applymovement LOCALID_ARENA_BATTLE_ATTENDANT, BattleFrontier_BattleArenaBattleRoom_Movement_WalkInPlaceRight
waitmovement 0
- applymovement LOCALID_ANNOUNCER, BattleFrontier_BattleArenaBattleRoom_Movement_JumpInPlaceDown
+ applymovement LOCALID_ARENA_BATTLE_ANNOUNCER, BattleFrontier_BattleArenaBattleRoom_Movement_JumpInPlaceDown
playse SE_M_BELLY_DRUM
waitse
waitmovement 0
msgbox BattleFrontier_BattleArenaBattleRoom_Text_PlayerStepForward, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_PLAYER, BattleFrontier_BattleArenaBattleRoom_Movement_PlayerStepForwardLong
+ applymovement LOCALID_ARENA_BATTLE_PLAYER, BattleFrontier_BattleArenaBattleRoom_Movement_PlayerStepForwardLong
waitmovement 0
- applymovement LOCALID_ANNOUNCER, BattleFrontier_BattleArenaBattleRoom_Movement_JumpInPlaceDown
+ applymovement LOCALID_ARENA_BATTLE_ANNOUNCER, BattleFrontier_BattleArenaBattleRoom_Movement_JumpInPlaceDown
playse SE_M_BELLY_DRUM
waitse
waitmovement 0
msgbox BattleFrontier_BattleArenaBattleRoom_Text_MakeWayForGreta, MSGBOX_DEFAULT
closemessage
- addobject LOCALID_OPPONENT
- applymovement LOCALID_OPPONENT, BattleFrontier_BattleArenaBattleRoom_Movement_GretaEnter
+ addobject LOCALID_ARENA_BATTLE_OPPONENT
+ applymovement LOCALID_ARENA_BATTLE_OPPONENT, BattleFrontier_BattleArenaBattleRoom_Movement_GretaEnter
waitmovement 0
- applymovement LOCALID_OPPONENT, BattleFrontier_BattleArenaBattleRoom_Movement_OpponentStepForward
+ applymovement LOCALID_ARENA_BATTLE_OPPONENT, BattleFrontier_BattleArenaBattleRoom_Movement_OpponentStepForward
waitmovement 0
switch VAR_TEMP_F
case FRONTIER_BRAIN_GOLD, BattleFrontier_BattleArenaBattleRoom_EventScript_IntroGretaGold
@@ -300,11 +292,11 @@ BattleFrontier_BattleArenaBattleRoom_EventScript_BattleGreta::
msgbox BattleFrontier_BattleArenaBattleRoom_Text_GretaYoureChallenger, MSGBOX_DEFAULT
closemessage
frontier_set FRONTIER_DATA_HEARD_BRAIN_SPEECH
- applymovement LOCALID_OPPONENT, BattleFrontier_BattleArenaBattleRoom_Movement_GretaLookAroundPlayer
+ applymovement LOCALID_ARENA_BATTLE_OPPONENT, BattleFrontier_BattleArenaBattleRoom_Movement_GretaLookAroundPlayer
waitmovement 0
msgbox BattleFrontier_BattleArenaBattleRoom_Text_IsThatRight, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_OPPONENT, BattleFrontier_BattleArenaBattleRoom_Movement_GretaWalkBackToCenter
+ applymovement LOCALID_ARENA_BATTLE_OPPONENT, BattleFrontier_BattleArenaBattleRoom_Movement_GretaWalkBackToCenter
waitmovement 0
msgbox BattleFrontier_BattleArenaBattleRoom_Text_YouLookWeakTakeThingsEasy, MSGBOX_DEFAULT
BattleFrontier_BattleArenaBattleRoom_EventScript_BattleGretaSilver::
@@ -317,7 +309,7 @@ BattleFrontier_BattleArenaBattleRoom_EventScript_DefeatedGretaSilver::
call BattleFrontier_BattleArenaBattleRoom_EventScript_DeclarePlayerWinner
frontier_getsymbols
goto_if_ne VAR_RESULT, 0, BattleFrontier_BattleArenaBattleRoom_EventScript_ReturnToLobbyWon
- applymovement LOCALID_OPPONENT, BattleFrontier_BattleArenaBattleRoom_Movement_OpponentStepForwardLong
+ applymovement LOCALID_ARENA_BATTLE_OPPONENT, BattleFrontier_BattleArenaBattleRoom_Movement_OpponentStepForwardLong
waitmovement 0
msgbox BattleFrontier_BattleArenaBattleRoom_Text_GretaYoureToughAfterAll, MSGBOX_DEFAULT
playfanfare MUS_OBTAIN_SYMBOL
@@ -334,11 +326,11 @@ BattleFrontier_BattleArenaBattleRoom_EventScript_IntroGretaGold::
msgbox BattleFrontier_BattleArenaBattleRoom_Text_GretaLookingForwardToSeeingAgain, MSGBOX_DEFAULT
closemessage
frontier_set FRONTIER_DATA_HEARD_BRAIN_SPEECH
- applymovement LOCALID_OPPONENT, BattleFrontier_BattleArenaBattleRoom_Movement_GretaLookAroundPlayer
+ applymovement LOCALID_ARENA_BATTLE_OPPONENT, BattleFrontier_BattleArenaBattleRoom_Movement_GretaLookAroundPlayer
waitmovement 0
msgbox BattleFrontier_BattleArenaBattleRoom_Text_SoAreYouReady, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_OPPONENT, BattleFrontier_BattleArenaBattleRoom_Movement_GretaWalkBackToCenter
+ applymovement LOCALID_ARENA_BATTLE_OPPONENT, BattleFrontier_BattleArenaBattleRoom_Movement_GretaWalkBackToCenter
waitmovement 0
msgbox BattleFrontier_BattleArenaBattleRoom_Text_WontAllowHalfheartedEffort, MSGBOX_DEFAULT
BattleFrontier_BattleArenaBattleRoom_EventScript_BattleGretaGold::
@@ -351,7 +343,7 @@ BattleFrontier_BattleArenaBattleRoom_EventScript_DefeatedGretaGold::
call BattleFrontier_BattleArenaBattleRoom_EventScript_DeclarePlayerWinner
frontier_getsymbols
goto_if_eq VAR_RESULT, 2, BattleFrontier_BattleArenaBattleRoom_EventScript_ReturnToLobbyWon
- applymovement LOCALID_OPPONENT, BattleFrontier_BattleArenaBattleRoom_Movement_OpponentStepForwardLong
+ applymovement LOCALID_ARENA_BATTLE_OPPONENT, BattleFrontier_BattleArenaBattleRoom_Movement_OpponentStepForwardLong
waitmovement 0
msgbox BattleFrontier_BattleArenaBattleRoom_Text_GretaBlownAway, MSGBOX_DEFAULT
playfanfare MUS_OBTAIN_SYMBOL
@@ -382,11 +374,11 @@ BattleFrontier_BattleArenaBattleRoom_EventScript_DoArenaBattle::
return
BattleFrontier_BattleArenaBattleRoom_EventScript_DeclarePlayerWinner::
- applymovement LOCALID_ANNOUNCER, BattleFrontier_BattleArenaBattleRoom_Movement_JumpInPlaceDown
- applymovement LOCALID_BLACK_BELT_1, BattleFrontier_BattleArenaBattleRoom_Movement_JumpInPlaceDown
- applymovement LOCALID_BLACK_BELT_2, BattleFrontier_BattleArenaBattleRoom_Movement_JumpInPlaceDown
- applymovement LOCALID_BLACK_BELT_3, BattleFrontier_BattleArenaBattleRoom_Movement_JumpInPlaceUp
- applymovement LOCALID_BLACK_BELT_4, BattleFrontier_BattleArenaBattleRoom_Movement_JumpInPlaceUp
+ applymovement LOCALID_ARENA_BATTLE_ANNOUNCER, BattleFrontier_BattleArenaBattleRoom_Movement_JumpInPlaceDown
+ applymovement LOCALID_ARENA_BATTLE_BLACK_BELT_1, BattleFrontier_BattleArenaBattleRoom_Movement_JumpInPlaceDown
+ applymovement LOCALID_ARENA_BATTLE_BLACK_BELT_2, BattleFrontier_BattleArenaBattleRoom_Movement_JumpInPlaceDown
+ applymovement LOCALID_ARENA_BATTLE_BLACK_BELT_3, BattleFrontier_BattleArenaBattleRoom_Movement_JumpInPlaceUp
+ applymovement LOCALID_ARENA_BATTLE_BLACK_BELT_4, BattleFrontier_BattleArenaBattleRoom_Movement_JumpInPlaceUp
playse SE_BANG
waitse
waitmovement 0
@@ -469,10 +461,10 @@ BattleFrontier_BattleArenaBattleRoom_OnWarp:
.2byte 0
BattleFrontier_BattleArenaBattleRoom_EventScript_SetUpRoomObjects::
- hideobjectat LOCALID_PLAYER, MAP_BATTLE_FRONTIER_BATTLE_ARENA_BATTLE_ROOM
- removeobject LOCALID_OPPONENT
+ hideobjectat LOCALID_ARENA_BATTLE_PLAYER, MAP_BATTLE_FRONTIER_BATTLE_ARENA_BATTLE_ROOM
+ removeobject LOCALID_ARENA_BATTLE_OPPONENT
call BattleFrontier_BattleDomeBattleRoom_EventScript_SetPlayerGfx
- applymovement OBJ_EVENT_ID_PLAYER, BattleFrontier_BattleDomeBattleRoom_Movement_SetInvisible
+ applymovement LOCALID_PLAYER, BattleFrontier_BattleDomeBattleRoom_Movement_SetInvisible
setvar VAR_TEMP_1, 1
end
diff --git a/data/maps/BattleFrontier_BattleArenaCorridor/map.json b/data/maps/BattleFrontier_BattleArenaCorridor/map.json
index dbf6093250..6ec197aba6 100644
--- a/data/maps/BattleFrontier_BattleArenaCorridor/map.json
+++ b/data/maps/BattleFrontier_BattleArenaCorridor/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_ARENA_CORRIDOR_ATTENDANT",
"graphics_id": "OBJ_EVENT_GFX_BLACK_BELT",
"x": 9,
"y": 12,
diff --git a/data/maps/BattleFrontier_BattleArenaCorridor/scripts.inc b/data/maps/BattleFrontier_BattleArenaCorridor/scripts.inc
index 7086819569..9b0a1d55ac 100644
--- a/data/maps/BattleFrontier_BattleArenaCorridor/scripts.inc
+++ b/data/maps/BattleFrontier_BattleArenaCorridor/scripts.inc
@@ -1,5 +1,3 @@
-.set LOCALID_ATTENDANT, 1
-
BattleFrontier_BattleArenaCorridor_MapScripts::
map_script MAP_SCRIPT_ON_FRAME_TABLE, BattleFrontier_BattleArenaCorridor_OnFrame
.byte 0
@@ -11,15 +9,15 @@ BattleFrontier_BattleArenaCorridor_OnFrame:
BattleFrontier_BattleArenaCorridor_EventScript_WalkToBattleRoom::
delay 16
setvar VAR_TEMP_0, 1
- applymovement LOCALID_ATTENDANT, BattleFrontier_BattleArenaCorridor_Movement_AttendantWalkToDoor
- applymovement OBJ_EVENT_ID_PLAYER, BattleFrontier_BattleArenaCorridor_Movement_PlayerWalkToDoor
+ applymovement LOCALID_ARENA_CORRIDOR_ATTENDANT, BattleFrontier_BattleArenaCorridor_Movement_AttendantWalkToDoor
+ applymovement LOCALID_PLAYER, BattleFrontier_BattleArenaCorridor_Movement_PlayerWalkToDoor
waitmovement 0
- applymovement LOCALID_ATTENDANT, BattleFrontier_BattleArenaCorridor_Movement_AttendantFacePlayer
+ applymovement LOCALID_ARENA_CORRIDOR_ATTENDANT, BattleFrontier_BattleArenaCorridor_Movement_AttendantFacePlayer
waitmovement 0
msgbox BattleFrontier_BattleArenaCorridor_Text_PleaseStepIn, MSGBOX_SIGN
- applymovement LOCALID_ATTENDANT, BattleFrontier_BattleArenaCorridor_Movement_AttendantMoveOutOfWay
+ applymovement LOCALID_ARENA_CORRIDOR_ATTENDANT, BattleFrontier_BattleArenaCorridor_Movement_AttendantMoveOutOfWay
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, BattleFrontier_BattleArenaCorridor_Movement_PlayerEnterDoor
+ applymovement LOCALID_PLAYER, BattleFrontier_BattleArenaCorridor_Movement_PlayerEnterDoor
waitmovement 0
setvar VAR_0x8006, 0
warp MAP_BATTLE_FRONTIER_BATTLE_ARENA_BATTLE_ROOM, 7, 5
diff --git a/data/maps/BattleFrontier_BattleArenaLobby/map.json b/data/maps/BattleFrontier_BattleArenaLobby/map.json
index 210da8118c..0985255d9c 100644
--- a/data/maps/BattleFrontier_BattleArenaLobby/map.json
+++ b/data/maps/BattleFrontier_BattleArenaLobby/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_ARENA_ATTENDANT",
"graphics_id": "OBJ_EVENT_GFX_BLACK_BELT",
"x": 7,
"y": 7,
diff --git a/data/maps/BattleFrontier_BattleArenaLobby/scripts.inc b/data/maps/BattleFrontier_BattleArenaLobby/scripts.inc
index 61dcb79e99..7969ca9eb7 100644
--- a/data/maps/BattleFrontier_BattleArenaLobby/scripts.inc
+++ b/data/maps/BattleFrontier_BattleArenaLobby/scripts.inc
@@ -1,5 +1,3 @@
-.set LOCALID_ATTENDANT, 1
-
BattleFrontier_BattleArenaLobby_MapScripts::
map_script MAP_SCRIPT_ON_FRAME_TABLE, BattleFrontier_BattleArenaLobby_OnFrame
map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, BattleFrontier_BattleArenaLobby_OnWarp
@@ -11,7 +9,7 @@ BattleFrontier_BattleArenaLobby_OnWarp:
BattleFrontier_BattleArenaLobby_EventScript_TurnPlayerNorth::
setvar VAR_TEMP_1, 1
- turnobject OBJ_EVENT_ID_PLAYER, DIR_NORTH
+ turnobject LOCALID_PLAYER, DIR_NORTH
end
BattleFrontier_BattleArenaLobby_OnFrame:
@@ -204,13 +202,13 @@ BattleFrontier_BattleArenaLobby_EventScript_EndCancelChallenge::
end
BattleFrontier_BattleArenaLobby_EventScript_WalkToDoorLv50::
- applymovement LOCALID_ATTENDANT, BattleFrontier_BattleArenaLobby_Movement_AttendantWalkToLeftDoor
- applymovement OBJ_EVENT_ID_PLAYER, BattleFrontier_BattleArenaLobby_Movement_PlayerWalkToLeftDoor
+ applymovement LOCALID_ARENA_ATTENDANT, BattleFrontier_BattleArenaLobby_Movement_AttendantWalkToLeftDoor
+ applymovement LOCALID_PLAYER, BattleFrontier_BattleArenaLobby_Movement_PlayerWalkToLeftDoor
waitmovement 0
opendoor 2, 2
waitdooranim
- applymovement LOCALID_ATTENDANT, BattleFrontier_BattleArenaLobby_Movement_AttendantEnterDoor
- applymovement OBJ_EVENT_ID_PLAYER, BattleFrontier_BattleArenaLobby_Movement_PlayerEnterDoor
+ applymovement LOCALID_ARENA_ATTENDANT, BattleFrontier_BattleArenaLobby_Movement_AttendantEnterDoor
+ applymovement LOCALID_PLAYER, BattleFrontier_BattleArenaLobby_Movement_PlayerEnterDoor
waitmovement 0
closedoor 2, 2
waitdooranim
@@ -253,13 +251,13 @@ BattleFrontier_BattleArenaLobby_Movement_PlayerEnterDoor:
step_end
BattleFrontier_BattleArenaLobby_EventScript_WalkToDoorLvOpen::
- applymovement LOCALID_ATTENDANT, BattleFrontier_BattleArenaLobby_Movement_AttendantWalkToRightDoor
- applymovement OBJ_EVENT_ID_PLAYER, BattleFrontier_BattleArenaLobby_Movement_PlayerWalkToRightDoor
+ applymovement LOCALID_ARENA_ATTENDANT, BattleFrontier_BattleArenaLobby_Movement_AttendantWalkToRightDoor
+ applymovement LOCALID_PLAYER, BattleFrontier_BattleArenaLobby_Movement_PlayerWalkToRightDoor
waitmovement 0
opendoor 11, 2
waitdooranim
- applymovement LOCALID_ATTENDANT, BattleFrontier_BattleArenaLobby_Movement_AttendantEnterDoor
- applymovement OBJ_EVENT_ID_PLAYER, BattleFrontier_BattleArenaLobby_Movement_PlayerEnterDoor
+ applymovement LOCALID_ARENA_ATTENDANT, BattleFrontier_BattleArenaLobby_Movement_AttendantEnterDoor
+ applymovement LOCALID_PLAYER, BattleFrontier_BattleArenaLobby_Movement_PlayerEnterDoor
waitmovement 0
closedoor 11, 2
waitdooranim
diff --git a/data/maps/BattleFrontier_BattleDomeBattleRoom/map.json b/data/maps/BattleFrontier_BattleDomeBattleRoom/map.json
index c2b427cbe3..b4407e55d6 100644
--- a/data/maps/BattleFrontier_BattleDomeBattleRoom/map.json
+++ b/data/maps/BattleFrontier_BattleDomeBattleRoom/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_DOME_ANNOUNCER",
"graphics_id": "OBJ_EVENT_GFX_REPORTER_M",
"x": 5,
"y": 4,
@@ -28,6 +29,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_DOME_AUDIENCE_TWIN",
"graphics_id": "OBJ_EVENT_GFX_TWIN",
"x": 7,
"y": 2,
@@ -80,6 +82,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_DOME_AUDIENCE_WALKING",
"graphics_id": "OBJ_EVENT_GFX_MAN_1",
"x": 4,
"y": 2,
@@ -119,6 +122,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_DOME_REFEREE",
"graphics_id": "OBJ_EVENT_GFX_MAN_2",
"x": 0,
"y": 4,
@@ -171,6 +175,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_DOME_PLAYER",
"graphics_id": "OBJ_EVENT_GFX_VAR_1",
"x": 4,
"y": 9,
@@ -197,6 +202,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_DOME_OPPONENT",
"graphics_id": "OBJ_EVENT_GFX_VAR_0",
"x": 11,
"y": 6,
diff --git a/data/maps/BattleFrontier_BattleDomeBattleRoom/scripts.inc b/data/maps/BattleFrontier_BattleDomeBattleRoom/scripts.inc
index edede9d737..9f5a5f4d77 100644
--- a/data/maps/BattleFrontier_BattleDomeBattleRoom/scripts.inc
+++ b/data/maps/BattleFrontier_BattleDomeBattleRoom/scripts.inc
@@ -1,9 +1,7 @@
-.set LOCALID_ANNOUNCER, 1
-.set LOCALID_AUDIENCE_TWIN, 2
-.set LOCALID_AUDIENCE_WALKING, 6
-.set LOCALID_REFEREE, 9
-.set LOCALID_PLAYER, 13
-.set LOCALID_OPPONENT, 15
+@ On this map the player will automatically walk into the room, but the camera is supposed to remain still.
+@ To do this GF sets the player (LOCALID_PLAYER) invisible and creates a fake player object (LOCALID_DOME_PLAYER).
+@ The graphics of this fake player object are represented with VAR_OBJ_GFX_ID_1.
+@ The graphics of the opponent are represented with VAR_OBJ_GFX_ID_0, which will ultimately be set by dome_setopponentgfx.
.set NO_DRAW, 0
.set DRAW_TRAINER, 1
@@ -47,20 +45,20 @@ BattleFrontier_BattleDomeBattleRoom_EventScript_EnterRoom::
lockall
call BattleFrontier_BattleDomeBattleRoom_EventScript_GetRoundNum
call_if_eq VAR_RESULT, DOME_ROUND1, BattleFrontier_BattleDomeBattleRoom_EventScript_TryDoAudienceMemberWalkToSeat
- applymovement LOCALID_ANNOUNCER, Common_Movement_WalkInPlaceDown
+ applymovement LOCALID_DOME_ANNOUNCER, Common_Movement_WalkInPlaceDown
waitmovement 0
call BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayer
msgbox BattleFrontier_BattleDomeBattleRoom_Text_PlayerHasEnteredDome, MSGBOX_DEFAULT
closemessage
- showobjectat LOCALID_PLAYER, MAP_BATTLE_FRONTIER_BATTLE_DOME_BATTLE_ROOM
+ showobjectat LOCALID_DOME_PLAYER, MAP_BATTLE_FRONTIER_BATTLE_DOME_BATTLE_ROOM
goto_if_ne VAR_TEMP_F, DOME_FINAL, BattleFrontier_BattleDomeBattleRoom_EventScript_PlayerEnter
goto_if_ne VAR_TEMP_E, FRONTIER_BRAIN_NOT_READY, BattleFrontier_BattleDomeBattleRoom_EventScript_PlayerEnterForTucker
BattleFrontier_BattleDomeBattleRoom_EventScript_PlayerEnter::
- applymovement LOCALID_PLAYER, BattleFrontier_BattleDomeBattleRoom_Movement_PlayerEnter
+ applymovement LOCALID_DOME_PLAYER, BattleFrontier_BattleDomeBattleRoom_Movement_PlayerEnter
goto BattleFrontier_BattleDomeBattleRoom_EventScript_AudienceReactToPlayer
BattleFrontier_BattleDomeBattleRoom_EventScript_PlayerEnterForTucker::
- applymovement LOCALID_PLAYER, BattleFrontier_BattleDomeBattleRoom_Movement_PlayerEnterForTucker
+ applymovement LOCALID_DOME_PLAYER, BattleFrontier_BattleDomeBattleRoom_Movement_PlayerEnterForTucker
BattleFrontier_BattleDomeBattleRoom_EventScript_AudienceReactToPlayer::
playse SE_M_ENCORE2
call BattleFrontier_BattleDomeBattleRoom_EventScript_AudienceLookAround
@@ -71,8 +69,8 @@ BattleFrontier_BattleDomeBattleRoom_EventScript_BattleOpponent::
dome_getopponentname
msgbox BattleFrontier_BattleDomeBattleRoom_Text_PlayerVersusTrainer, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_PLAYER, BattleFrontier_BattleDomeBattleRoom_Movement_PlayerStepForward
- applymovement LOCALID_OPPONENT, BattleFrontier_BattleDomeBattleRoom_Movement_OpponentStepForward
+ applymovement LOCALID_DOME_PLAYER, BattleFrontier_BattleDomeBattleRoom_Movement_PlayerStepForward
+ applymovement LOCALID_DOME_OPPONENT, BattleFrontier_BattleDomeBattleRoom_Movement_OpponentStepForward
waitmovement 0
tower_getopponentintro 0
msgbox gStringVar4, MSGBOX_DEFAULT
@@ -91,19 +89,19 @@ BattleFrontier_BattleDomeBattleRoom_EventScript_Draw::
playse SE_M_ENCORE2
call BattleFrontier_BattleDomeBattleRoom_EventScript_AudienceLookAround
delay 60
- applymovement LOCALID_REFEREE, BattleFrontier_BattleDomeBattleRoom_Movement_RefereeEnter
+ applymovement LOCALID_DOME_REFEREE, BattleFrontier_BattleDomeBattleRoom_Movement_RefereeEnter
waitmovement 0
- applymovement LOCALID_ANNOUNCER, BattleFrontier_BattleDomeBattleRoom_Movement_AnnouncerFaceLeft
+ applymovement LOCALID_DOME_ANNOUNCER, BattleFrontier_BattleDomeBattleRoom_Movement_AnnouncerFaceLeft
waitmovement 0
delay 180
- applymovement LOCALID_REFEREE, BattleFrontier_BattleDomeBattleRoom_Movement_RefereeExit
+ applymovement LOCALID_DOME_REFEREE, BattleFrontier_BattleDomeBattleRoom_Movement_RefereeExit
waitmovement 0
goto_if_eq VAR_TEMP_2, DRAW_TUCKER, BattleFrontier_BattleDomeBattleRoom_EventScript_LostToOpponent @ Tucker always wins on a draw
dome_compareseeds
switch VAR_RESULT
case 1, BattleFrontier_BattleDomeBattleRoom_EventScript_DefeatedOpponent
BattleFrontier_BattleDomeBattleRoom_EventScript_LostToOpponent::
- applymovement LOCALID_ANNOUNCER, Common_Movement_WalkInPlaceDown
+ applymovement LOCALID_DOME_ANNOUNCER, Common_Movement_WalkInPlaceDown
waitmovement 0
dome_getopponentname
call_if_eq VAR_TEMP_2, NO_DRAW, BattleFrontier_BattleDomeBattleRoom_EventScript_OpponentWon
@@ -136,7 +134,7 @@ BattleFrontier_BattleDomeBattleRoom_EventScript_TuckerWonDraw::
return
BattleFrontier_BattleDomeBattleRoom_EventScript_DefeatedOpponent::
- applymovement LOCALID_ANNOUNCER, Common_Movement_WalkInPlaceDown
+ applymovement LOCALID_DOME_ANNOUNCER, Common_Movement_WalkInPlaceDown
waitmovement 0
call_if_eq VAR_TEMP_2, NO_DRAW, BattleFrontier_BattleDomeBattleRoom_EventScript_PlayerWon
call_if_eq VAR_TEMP_2, DRAW_TRAINER, BattleFrontier_BattleDomeBattleRoom_EventScript_PlayerWonDraw
@@ -155,7 +153,7 @@ BattleFrontier_BattleDomeBattleRoom_EventScript_DefeatedOpponent::
waitstate
BattleFrontier_BattleDomeBattleRoom_EventScript_WonTourney::
- applymovement LOCALID_PLAYER, BattleFrontier_BattleDomeBattleRoom_Movement_PlayerApproachAudience
+ applymovement LOCALID_DOME_PLAYER, BattleFrontier_BattleDomeBattleRoom_Movement_PlayerApproachAudience
waitmovement 0
frontier_get FRONTIER_DATA_LVL_MODE
switch VAR_RESULT
@@ -341,9 +339,9 @@ BattleFrontier_BattleDomeBattleRoom_EventScript_AnnounceTuckerGold::
msgbox BattleFrontier_BattleDomeBattleRoom_Text_LegendHasReturnedDomeAceTucker, MSGBOX_DEFAULT
BattleFrontier_BattleDomeBattleRoom_EventScript_TuckerEnter::
closemessage
- applymovement LOCALID_AUDIENCE_TWIN, BattleFrontier_BattleDomeBattleRoom_Movement_AudienceTwinJump
- applymovement LOCALID_ANNOUNCER, BattleFrontier_BattleDomeBattleRoom_Movement_AnnouncerMoveForTuckerEntrance
- applymovement LOCALID_OPPONENT, BattleFrontier_BattleDomeBattleRoom_Movement_TuckerEnterAndDance
+ applymovement LOCALID_DOME_AUDIENCE_TWIN, BattleFrontier_BattleDomeBattleRoom_Movement_AudienceTwinJump
+ applymovement LOCALID_DOME_ANNOUNCER, BattleFrontier_BattleDomeBattleRoom_Movement_AnnouncerMoveForTuckerEntrance
+ applymovement LOCALID_DOME_OPPONENT, BattleFrontier_BattleDomeBattleRoom_Movement_TuckerEnterAndDance
playse SE_M_ENCORE2
call BattleFrontier_BattleDomeBattleRoom_EventScript_AudienceLookAround
waitse
@@ -385,7 +383,7 @@ BattleFrontier_BattleDomeBattleRoom_EventScript_BattleTuckerSilver::
frontier_getsymbols
goto_if_ne VAR_RESULT, 0, BattleFrontier_BattleDomeBattleRoom_EventScript_WonTourney
closemessage
- applymovement LOCALID_OPPONENT, BattleFrontier_BattleDomeBattleRoom_Movement_TuckerApproachPlayer
+ applymovement LOCALID_DOME_OPPONENT, BattleFrontier_BattleDomeBattleRoom_Movement_TuckerApproachPlayer
waitmovement 0
msgbox BattleFrontier_BattleDomeBattleRoom_Text_SeeYourFrontierPass, MSGBOX_DEFAULT
playfanfare MUS_OBTAIN_SYMBOL
@@ -413,7 +411,7 @@ BattleFrontier_BattleDomeBattleRoom_EventScript_BattleTuckerGold::
frontier_getsymbols
goto_if_eq VAR_RESULT, 2, BattleFrontier_BattleDomeBattleRoom_EventScript_WonTourney
closemessage
- applymovement LOCALID_OPPONENT, BattleFrontier_BattleDomeBattleRoom_Movement_TuckerApproachPlayer
+ applymovement LOCALID_DOME_OPPONENT, BattleFrontier_BattleDomeBattleRoom_Movement_TuckerApproachPlayer
waitmovement 0
msgbox BattleFrontier_BattleDomeBattleRoom_Text_NeverLostWhenPowerUnleashed, MSGBOX_DEFAULT
playfanfare MUS_OBTAIN_SYMBOL
@@ -427,8 +425,8 @@ BattleFrontier_BattleDomeBattleRoom_EventScript_BattleTuckerGold::
BattleFrontier_BattleDomeBattleRoom_EventScript_DoTuckerBattle::
msgbox BattleFrontier_BattleDomeBattleRoom_Text_PlayerVersusTucker, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_PLAYER, BattleFrontier_BattleDomeBattleRoom_Movement_PlayerStepForward2
- applymovement LOCALID_OPPONENT, BattleFrontier_BattleDomeBattleRoom_Movement_TuckerStepForward
+ applymovement LOCALID_DOME_PLAYER, BattleFrontier_BattleDomeBattleRoom_Movement_PlayerStepForward2
+ applymovement LOCALID_DOME_OPPONENT, BattleFrontier_BattleDomeBattleRoom_Movement_TuckerStepForward
waitmovement 0
call BattleFrontier_BattleDomeBattleRoom_EventScript_DoDomeBattle
return
@@ -463,22 +461,22 @@ BattleFrontier_BattleDomeBattleRoom_OnWarp:
.2byte 0
BattleFrontier_BattleDomeBattleRoom_EventScript_SetUpObjects::
- hideobjectat LOCALID_PLAYER, MAP_BATTLE_FRONTIER_BATTLE_DOME_BATTLE_ROOM
+ hideobjectat LOCALID_DOME_PLAYER, MAP_BATTLE_FRONTIER_BATTLE_DOME_BATTLE_ROOM
call BattleFrontier_BattleDomeBattleRoom_EventScript_AddAudience
call BattleFrontier_BattleDomeBattleRoom_EventScript_SetPlayerGfx
setvar VAR_TEMP_1, 1
- applymovement OBJ_EVENT_ID_PLAYER, BattleFrontier_BattleDomeBattleRoom_Movement_SetInvisible
+ applymovement LOCALID_PLAYER, BattleFrontier_BattleDomeBattleRoom_Movement_SetInvisible
frontier_get FRONTIER_DATA_BATTLE_NUM
goto_if_ne VAR_RESULT, DOME_FINAL, BattleFrontier_BattleDomeBattleRoom_EventScript_EndSetUpObjects
frontier_getbrainstatus
copyvar VAR_TEMP_E, VAR_RESULT
goto_if_eq VAR_RESULT, FRONTIER_BRAIN_NOT_READY, BattleFrontier_BattleDomeBattleRoom_EventScript_EndSetUpObjects
call BattleFrontier_EventScript_SetBrainObjectGfx
- setobjectxyperm LOCALID_OPPONENT, 13, 9
- removeobject LOCALID_OPPONENT
+ setobjectxyperm LOCALID_DOME_OPPONENT, 13, 9
+ removeobject LOCALID_DOME_OPPONENT
delay 1
- addobject LOCALID_OPPONENT
- applymovement LOCALID_OPPONENT, BattleFrontier_BattleDomeBattleRoom_Movement_SetInvisibleFacingUp
+ addobject LOCALID_DOME_OPPONENT
+ applymovement LOCALID_DOME_OPPONENT, BattleFrontier_BattleDomeBattleRoom_Movement_SetInvisibleFacingUp
BattleFrontier_BattleDomeBattleRoom_EventScript_EndSetUpObjects::
end
@@ -871,13 +869,13 @@ BattleFrontier_BattleDomeBattleRoom_EventScript_SetWalkingAudienceMemberPos::
random 2
copyvar VAR_TEMP_D, VAR_RESULT
goto_if_eq VAR_TEMP_D, 0, Common_EventScript_NopReturn
- setobjectxyperm LOCALID_AUDIENCE_WALKING, 2, 0
- setobjectmovementtype LOCALID_AUDIENCE_WALKING, MOVEMENT_TYPE_FACE_RIGHT
+ setobjectxyperm LOCALID_DOME_AUDIENCE_WALKING, 2, 0
+ setobjectmovementtype LOCALID_DOME_AUDIENCE_WALKING, MOVEMENT_TYPE_FACE_RIGHT
return
BattleFrontier_BattleDomeBattleRoom_EventScript_TryDoAudienceMemberWalkToSeat::
goto_if_eq VAR_TEMP_D, 0, Common_EventScript_NopReturn
- applymovement LOCALID_AUDIENCE_WALKING, BattleFrontier_BattleDomeBattleRoom_Movement_AudienceMemberWalkToSeat
+ applymovement LOCALID_DOME_AUDIENCE_WALKING, BattleFrontier_BattleDomeBattleRoom_Movement_AudienceMemberWalkToSeat
return
BattleFrontier_BattleDomeBattleRoom_Movement_AudienceTwinJump:
diff --git a/data/maps/BattleFrontier_BattleDomeCorridor/map.json b/data/maps/BattleFrontier_BattleDomeCorridor/map.json
index 5a68af443c..bb2088e7fc 100644
--- a/data/maps/BattleFrontier_BattleDomeCorridor/map.json
+++ b/data/maps/BattleFrontier_BattleDomeCorridor/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_DOME_CORRIDOR_ATTENDANT",
"graphics_id": "OBJ_EVENT_GFX_TEALA",
"x": 23,
"y": 5,
diff --git a/data/maps/BattleFrontier_BattleDomeCorridor/scripts.inc b/data/maps/BattleFrontier_BattleDomeCorridor/scripts.inc
index d286dc8681..6eca815247 100644
--- a/data/maps/BattleFrontier_BattleDomeCorridor/scripts.inc
+++ b/data/maps/BattleFrontier_BattleDomeCorridor/scripts.inc
@@ -1,5 +1,3 @@
-.set LOCALID_ATTENDANT, 1
-
BattleFrontier_BattleDomeCorridor_MapScripts::
map_script MAP_SCRIPT_ON_FRAME_TABLE, BattleFrontier_BattleDomeCorridor_OnFrame
.byte 0
@@ -13,26 +11,26 @@ BattleFrontier_BattleDomeCorridor_EventScript_EnterCorridor::
setvar VAR_TEMP_0, 1
frontier_get FRONTIER_DATA_LVL_MODE
goto_if_eq VAR_RESULT, FRONTIER_LVL_OPEN, BattleFrontier_BattleDomeCorridor_EventScript_WalkToBattleRoomLvOpen
- applymovement LOCALID_ATTENDANT, BattleFrontier_BattleDomeCorridor_Movement_AttendantWalkToDoorLv50
- applymovement OBJ_EVENT_ID_PLAYER, BattleFrontier_BattleDomeCorridor_Movement_PlayerWalkToDoorLv50
+ applymovement LOCALID_DOME_CORRIDOR_ATTENDANT, BattleFrontier_BattleDomeCorridor_Movement_AttendantWalkToDoorLv50
+ applymovement LOCALID_PLAYER, BattleFrontier_BattleDomeCorridor_Movement_PlayerWalkToDoorLv50
waitmovement 0
opendoor 13, 3
waitdooranim
- applymovement LOCALID_ATTENDANT, BattleFrontier_BattleDomeCorridor_Movement_AttendantEnterDoorLv50
- applymovement OBJ_EVENT_ID_PLAYER, BattleFrontier_BattleDomeCorridor_Movement_PlayerEnterDoorLv50
+ applymovement LOCALID_DOME_CORRIDOR_ATTENDANT, BattleFrontier_BattleDomeCorridor_Movement_AttendantEnterDoorLv50
+ applymovement LOCALID_PLAYER, BattleFrontier_BattleDomeCorridor_Movement_PlayerEnterDoorLv50
waitmovement 0
closedoor 13, 3
waitdooranim
goto BattleFrontier_BattleDomeCorridor_EventScript_WarpToPreBattleRoom
BattleFrontier_BattleDomeCorridor_EventScript_WalkToBattleRoomLvOpen::
- applymovement LOCALID_ATTENDANT, BattleFrontier_BattleDomeCorridor_Movement_AttendantWalkToDoorLvOpen
- applymovement OBJ_EVENT_ID_PLAYER, BattleFrontier_BattleDomeCorridor_Movement_PlayerWalkToDoorLvOpen
+ applymovement LOCALID_DOME_CORRIDOR_ATTENDANT, BattleFrontier_BattleDomeCorridor_Movement_AttendantWalkToDoorLvOpen
+ applymovement LOCALID_PLAYER, BattleFrontier_BattleDomeCorridor_Movement_PlayerWalkToDoorLvOpen
waitmovement 0
opendoor 37, 3
waitdooranim
- applymovement LOCALID_ATTENDANT, BattleFrontier_BattleDomeCorridor_Movement_AttendantEnterDoorLvOpen
- applymovement OBJ_EVENT_ID_PLAYER, BattleFrontier_BattleDomeCorridor_Movement_PlayerEnterDoorLvOpen
+ applymovement LOCALID_DOME_CORRIDOR_ATTENDANT, BattleFrontier_BattleDomeCorridor_Movement_AttendantEnterDoorLvOpen
+ applymovement LOCALID_PLAYER, BattleFrontier_BattleDomeCorridor_Movement_PlayerEnterDoorLvOpen
waitmovement 0
closedoor 37, 3
waitdooranim
diff --git a/data/maps/BattleFrontier_BattleDomeLobby/map.json b/data/maps/BattleFrontier_BattleDomeLobby/map.json
index d47bb0f2b4..283379b0be 100644
--- a/data/maps/BattleFrontier_BattleDomeLobby/map.json
+++ b/data/maps/BattleFrontier_BattleDomeLobby/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_DOME_ATTENDANT_SINGLES",
"graphics_id": "OBJ_EVENT_GFX_TEALA",
"x": 5,
"y": 10,
@@ -80,6 +81,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_DOME_ATTENDANT_DOUBLES",
"graphics_id": "OBJ_EVENT_GFX_TEALA",
"x": 17,
"y": 10,
diff --git a/data/maps/BattleFrontier_BattleDomeLobby/scripts.inc b/data/maps/BattleFrontier_BattleDomeLobby/scripts.inc
index fb28b7ad75..cf6510189c 100644
--- a/data/maps/BattleFrontier_BattleDomeLobby/scripts.inc
+++ b/data/maps/BattleFrontier_BattleDomeLobby/scripts.inc
@@ -1,6 +1,3 @@
-.set LOCALID_ATTENDANT_SINGLES, 1
-.set LOCALID_ATTENDANT_DOUBLES, 6
-
BattleFrontier_BattleDomeLobby_MapScripts::
map_script MAP_SCRIPT_ON_RESUME, BattleFrontier_BattleDomeLobby_OnResume
map_script MAP_SCRIPT_ON_FRAME_TABLE, BattleFrontier_BattleDomeLobby_OnFrame
@@ -17,7 +14,7 @@ BattleFrontier_BattleDomeLobby_OnWarp:
BattleFrontier_BattleDomeLobby_EventScript_TurnPlayerNorth::
setvar VAR_TEMP_1, 1
- turnobject OBJ_EVENT_ID_PLAYER, DIR_NORTH
+ turnobject LOCALID_PLAYER, DIR_NORTH
end
BattleFrontier_BattleDomeLobby_OnFrame:
@@ -235,14 +232,14 @@ BattleFrontier_BattleDomeLobby_EventScript_EndCancelChallenge::
BattleFrontier_BattleDomeLobby_EventScript_WalkToDoor::
call_if_eq VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_SINGLES, BattleFrontier_BattleDomeLobby_EventScript_SinglesAttendantWalkToDoor
call_if_eq VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_DOUBLES, BattleFrontier_BattleDomeLobby_EventScript_DoublesAttendantWalkToDoor
- applymovement OBJ_EVENT_ID_PLAYER, BattleFrontier_BattleDomeLobby_Movement_WalkToDoor
+ applymovement LOCALID_PLAYER, BattleFrontier_BattleDomeLobby_Movement_WalkToDoor
waitmovement 0
call_if_eq VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_SINGLES, BattleFrontier_BattleDomeLobby_EventScript_OpenSinglesDoor
call_if_eq VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_DOUBLES, BattleFrontier_BattleDomeLobby_EventScript_OpenDoublesDoor
waitdooranim
call_if_eq VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_SINGLES, BattleFrontier_BattleDomeLobby_EventScript_SinglesAttendantEnterDoor
call_if_eq VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_DOUBLES, BattleFrontier_BattleDomeLobby_EventScript_DoublesAttendantEnterDoor
- applymovement OBJ_EVENT_ID_PLAYER, BattleFrontier_BattleDomeLobby_Movement_PlayerEnterDoor
+ applymovement LOCALID_PLAYER, BattleFrontier_BattleDomeLobby_Movement_PlayerEnterDoor
waitmovement 0
call_if_eq VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_SINGLES, BattleFrontier_BattleDomeLobby_EventScript_CloseSinglesDoor
call_if_eq VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_DOUBLES, BattleFrontier_BattleDomeLobby_EventScript_CloseDoublesDoor
@@ -250,19 +247,19 @@ BattleFrontier_BattleDomeLobby_EventScript_WalkToDoor::
return
BattleFrontier_BattleDomeLobby_EventScript_SinglesAttendantWalkToDoor::
- applymovement LOCALID_ATTENDANT_SINGLES, BattleFrontier_BattleDomeLobby_Movement_WalkToDoor
+ applymovement LOCALID_DOME_ATTENDANT_SINGLES, BattleFrontier_BattleDomeLobby_Movement_WalkToDoor
return
BattleFrontier_BattleDomeLobby_EventScript_DoublesAttendantWalkToDoor::
- applymovement LOCALID_ATTENDANT_DOUBLES, BattleFrontier_BattleDomeLobby_Movement_WalkToDoor
+ applymovement LOCALID_DOME_ATTENDANT_DOUBLES, BattleFrontier_BattleDomeLobby_Movement_WalkToDoor
return
BattleFrontier_BattleDomeLobby_EventScript_SinglesAttendantEnterDoor::
- applymovement LOCALID_ATTENDANT_SINGLES, BattleFrontier_BattleDomeLobby_Movement_AttendantEnterDoor
+ applymovement LOCALID_DOME_ATTENDANT_SINGLES, BattleFrontier_BattleDomeLobby_Movement_AttendantEnterDoor
return
BattleFrontier_BattleDomeLobby_EventScript_DoublesAttendantEnterDoor::
- applymovement LOCALID_ATTENDANT_DOUBLES, BattleFrontier_BattleDomeLobby_Movement_AttendantEnterDoor
+ applymovement LOCALID_DOME_ATTENDANT_DOUBLES, BattleFrontier_BattleDomeLobby_Movement_AttendantEnterDoor
return
BattleFrontier_BattleDomeLobby_EventScript_WelcomeSingles::
diff --git a/data/maps/BattleFrontier_BattleDomePreBattleRoom/map.json b/data/maps/BattleFrontier_BattleDomePreBattleRoom/map.json
index a175248ab2..5c5b891797 100644
--- a/data/maps/BattleFrontier_BattleDomePreBattleRoom/map.json
+++ b/data/maps/BattleFrontier_BattleDomePreBattleRoom/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_DOME_PRE_BATTLE_ATTENDANT",
"graphics_id": "OBJ_EVENT_GFX_TEALA",
"x": 5,
"y": 2,
diff --git a/data/maps/BattleFrontier_BattleDomePreBattleRoom/scripts.inc b/data/maps/BattleFrontier_BattleDomePreBattleRoom/scripts.inc
index 6ca4296cc0..e06284c2ca 100644
--- a/data/maps/BattleFrontier_BattleDomePreBattleRoom/scripts.inc
+++ b/data/maps/BattleFrontier_BattleDomePreBattleRoom/scripts.inc
@@ -1,5 +1,3 @@
-.set LOCALID_ATTENDANT, 1
-
BattleFrontier_BattleDomePreBattleRoom_MapScripts::
map_script MAP_SCRIPT_ON_FRAME_TABLE, BattleFrontier_BattleDomePreBattleRoom_OnFrame
map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, BattleFrontier_BattleDomePreBattleRoom_OnWarp
@@ -11,7 +9,7 @@ BattleFrontier_BattleDomePreBattleRoom_OnWarp:
BattleFrontier_BattleDomePreBattleRoom_EventScript_TurnPlayerNorth::
setvar VAR_TEMP_1, 1
- turnobject OBJ_EVENT_ID_PLAYER, DIR_NORTH
+ turnobject LOCALID_PLAYER, DIR_NORTH
end
BattleFrontier_BattleDomePreBattleRoom_OnFrame:
@@ -22,7 +20,7 @@ BattleFrontier_BattleDomePreBattleRoom_EventScript_EnterRoom::
goto_if_eq VAR_0x8006, 1, BattleFrontier_BattleDomePreBattleRoom_EventScript_ReturnFromBattle
frontier_set FRONTIER_DATA_RECORD_DISABLED, TRUE
setvar VAR_TEMP_0, 1
- applymovement OBJ_EVENT_ID_PLAYER, BattleFrontier_BattleDomePreBattleRoom_Movement_PlayerEnter
+ applymovement LOCALID_PLAYER, BattleFrontier_BattleDomePreBattleRoom_Movement_PlayerEnter
waitmovement 0
lockall
BattleFrontier_BattleDomePreBattleRoom_EventScript_AskReadyForNextRound::
@@ -150,13 +148,13 @@ BattleFrontier_BattleDomePreBattleRoom_EventScript_ContinueChallenge::
dome_setopponent
msgbox BattleFrontier_BattleDomePreBattleRoom_Text_RightThisWay, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_ATTENDANT, BattleFrontier_BattleDomePreBattleRoom_Movement_AttendantMoveAside
+ applymovement LOCALID_DOME_PRE_BATTLE_ATTENDANT, BattleFrontier_BattleDomePreBattleRoom_Movement_AttendantMoveAside
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, BattleFrontier_BattleDomePreBattleRoom_Movement_PlayerWalkToDoor
+ applymovement LOCALID_PLAYER, BattleFrontier_BattleDomePreBattleRoom_Movement_PlayerWalkToDoor
waitmovement 0
opendoor 5, 1
waitdooranim
- applymovement OBJ_EVENT_ID_PLAYER, BattleFrontier_BattleDomePreBattleRoom_Movement_PlayerEnterDoor
+ applymovement LOCALID_PLAYER, BattleFrontier_BattleDomePreBattleRoom_Movement_PlayerEnterDoor
waitmovement 0
closedoor 5, 1
waitdooranim
diff --git a/data/maps/BattleFrontier_BattleFactoryBattleRoom/map.json b/data/maps/BattleFrontier_BattleFactoryBattleRoom/map.json
index ef68f89ecb..dca5284cae 100644
--- a/data/maps/BattleFrontier_BattleFactoryBattleRoom/map.json
+++ b/data/maps/BattleFrontier_BattleFactoryBattleRoom/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_FACTORY_BATTLE_SCIENTIST_1",
"graphics_id": "OBJ_EVENT_GFX_SCIENTIST_1",
"x": 0,
"y": 6,
@@ -28,6 +29,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_FACTORY_BATTLE_OPPONENT",
"graphics_id": "OBJ_EVENT_GFX_VAR_0",
"x": 7,
"y": 4,
@@ -41,6 +43,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_FACTORY_BATTLE_SCIENTIST_2",
"graphics_id": "OBJ_EVENT_GFX_SCIENTIST_1",
"x": 0,
"y": 4,
@@ -54,6 +57,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_FACTORY_BATTLE_SCIENTIST_3",
"graphics_id": "OBJ_EVENT_GFX_SCIENTIST_1",
"x": 0,
"y": 8,
@@ -67,6 +71,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_FACTORY_BATTLE_SCIENTIST_4",
"graphics_id": "OBJ_EVENT_GFX_SCIENTIST_1",
"x": 12,
"y": 4,
@@ -80,6 +85,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_FACTORY_BATTLE_SCIENTIST_5",
"graphics_id": "OBJ_EVENT_GFX_SCIENTIST_1",
"x": 12,
"y": 6,
@@ -93,6 +99,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_FACTORY_BATTLE_SCIENTIST_6",
"graphics_id": "OBJ_EVENT_GFX_SCIENTIST_1",
"x": 12,
"y": 8,
@@ -106,6 +113,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_FACTORY_BATTLE_PLAYER",
"graphics_id": "OBJ_EVENT_GFX_VAR_F",
"x": 5,
"y": 11,
diff --git a/data/maps/BattleFrontier_BattleFactoryBattleRoom/scripts.inc b/data/maps/BattleFrontier_BattleFactoryBattleRoom/scripts.inc
index cf44e3118e..e6da4070f7 100644
--- a/data/maps/BattleFrontier_BattleFactoryBattleRoom/scripts.inc
+++ b/data/maps/BattleFrontier_BattleFactoryBattleRoom/scripts.inc
@@ -1,11 +1,7 @@
-.set LOCALID_SCIENTIST_1, 1
-.set LOCALID_OPPONENT, 2
-.set LOCALID_SCIENTIST_2, 3
-.set LOCALID_SCIENTIST_3, 4
-.set LOCALID_SCIENTIST_4, 5
-.set LOCALID_SCIENTIST_5, 6
-.set LOCALID_SCIENTIST_6, 7
-.set LOCALID_PLAYER, 8
+@ On this map the player will automatically walk into the room, but the camera is supposed to remain still.
+@ To do this GF sets the player (LOCALID_PLAYER) invisible and creates a fake player object (LOCALID_FACTORY_BATTLE_PLAYER).
+@ The graphics of this fake player object are represented with VAR_OBJ_GFX_ID_F.
+@ The graphics of the opponent are represented with VAR_OBJ_GFX_ID_0, which will ultimately be set by factory_setopponentgfx.
BattleFrontier_BattleFactoryBattleRoom_MapScripts::
map_script MAP_SCRIPT_ON_TRANSITION, BattleFrontier_BattleFactoryBattleRoom_OnTransition
@@ -13,9 +9,6 @@ BattleFrontier_BattleFactoryBattleRoom_MapScripts::
map_script MAP_SCRIPT_ON_FRAME_TABLE, BattleFrontier_BattleFactoryBattleRoom_OnFrame
.byte 0
- @ On this map the player (OBJ_EVENT_ID_PLAYER) is hidden
- @ The player is represented instead by LOCALID_PLAYER, which has the gfx id VAR_OBJ_GFX_ID_F
-
BattleFrontier_BattleFactoryBattleRoom_OnTransition:
frontier_settrainers
checkplayergender
@@ -28,7 +21,7 @@ BattleFrontier_BattleFactoryBattleRoom_OnTransition:
BattleFrontier_BattleFactoryBattleRoom_EventScript_SetUpFactoryHeadObj::
call BattleFrontier_EventScript_SetBrainObjectGfx
- setobjectxyperm LOCALID_OPPONENT, 7, 9
+ setobjectxyperm LOCALID_FACTORY_BATTLE_OPPONENT, 7, 9
end
BattleFrontier_BattleFactoryBattleRoom_OnWarp:
@@ -37,9 +30,9 @@ BattleFrontier_BattleFactoryBattleRoom_OnWarp:
BattleFrontier_BattleFactoryBattleRoom_EventScript_HideObjects::
setvar VAR_TEMP_1, 1
- hideobjectat OBJ_EVENT_ID_PLAYER, MAP_BATTLE_FRONTIER_BATTLE_FACTORY_BATTLE_ROOM
+ hideobjectat LOCALID_PLAYER, MAP_BATTLE_FRONTIER_BATTLE_FACTORY_BATTLE_ROOM
goto_if_ne VAR_TEMP_F, FRONTIER_BRAIN_NOT_READY, BattleFrontier_BattleFactoryBattleRoom_EventScript_EndHideObjects
- hideobjectat LOCALID_OPPONENT, MAP_BATTLE_FRONTIER_BATTLE_FACTORY_BATTLE_ROOM
+ hideobjectat LOCALID_FACTORY_BATTLE_OPPONENT, MAP_BATTLE_FRONTIER_BATTLE_FACTORY_BATTLE_ROOM
BattleFrontier_BattleFactoryBattleRoom_EventScript_EndHideObjects::
end
@@ -58,9 +51,9 @@ BattleFrontier_BattleFactoryBattleRoom_OnFrame:
BattleFrontier_BattleFactoryBattleRoom_EventScript_EnterRoomFactoryHeadBattle::
msgbox BattleFrontier_BattleFactoryBattleRoom_Text_GetAMoveOn, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_OPPONENT, BattleFrontier_BattleFactoryBattleRoom_Movement_NolandMoveToBattle
+ applymovement LOCALID_FACTORY_BATTLE_OPPONENT, BattleFrontier_BattleFactoryBattleRoom_Movement_NolandMoveToBattle
+ applymovement LOCALID_FACTORY_BATTLE_PLAYER, BattleFrontier_BattleFactoryBattleRoom_Movement_PlayerEnterRoom
applymovement LOCALID_PLAYER, BattleFrontier_BattleFactoryBattleRoom_Movement_PlayerEnterRoom
- applymovement OBJ_EVENT_ID_PLAYER, BattleFrontier_BattleFactoryBattleRoom_Movement_PlayerEnterRoom
waitmovement 0
call BattleFrontier_BattleFactoryBattleRoom_EventScript_ScientistsFaceBattle
goto BattleFrontier_BattleFactoryBattleRoom_EventScript_BattleOpponent
@@ -68,15 +61,15 @@ BattleFrontier_BattleFactoryBattleRoom_EventScript_EnterRoomFactoryHeadBattle::
BattleFrontier_BattleFactoryBattleRoom_EventScript_EnterRoom::
goto_if_ne VAR_TEMP_F, FRONTIER_BRAIN_NOT_READY, BattleFrontier_BattleFactoryBattleRoom_EventScript_EnterRoomFactoryHeadBattle
+ applymovement LOCALID_FACTORY_BATTLE_PLAYER, BattleFrontier_BattleFactoryBattleRoom_Movement_PlayerEnterRoom
applymovement LOCALID_PLAYER, BattleFrontier_BattleFactoryBattleRoom_Movement_PlayerEnterRoom
- applymovement OBJ_EVENT_ID_PLAYER, BattleFrontier_BattleFactoryBattleRoom_Movement_PlayerEnterRoom
waitmovement 0
call BattleFrontier_BattleFactoryBattleRoom_EventScript_ScientistsFaceBattle
factory_setopponentgfx
- removeobject LOCALID_OPPONENT
- setobjectxyperm LOCALID_OPPONENT, 7, 1
- addobject LOCALID_OPPONENT
- applymovement LOCALID_OPPONENT, BattleFrontier_BattleFactoryBattleRoom_Movement_OpponentEnter
+ removeobject LOCALID_FACTORY_BATTLE_OPPONENT
+ setobjectxyperm LOCALID_FACTORY_BATTLE_OPPONENT, 7, 1
+ addobject LOCALID_FACTORY_BATTLE_OPPONENT
+ applymovement LOCALID_FACTORY_BATTLE_OPPONENT, BattleFrontier_BattleFactoryBattleRoom_Movement_OpponentEnter
waitmovement 0
BattleFrontier_BattleFactoryBattleRoom_EventScript_BattleOpponent::
goto_if_ne VAR_TEMP_F, FRONTIER_BRAIN_NOT_READY, BattleFrontier_BattleFactoryBattleRoom_EventScript_BattleNoland
@@ -138,7 +131,7 @@ BattleFrontier_BattleFactoryBattleRoom_EventScript_DefeatedNolandSilver::
goto_if_ne VAR_RESULT, 0, BattleFrontier_BattleFactoryBattleRoom_EventScript_DefeatedNoland
msgbox BattleFrontier_BattleFactoryBattleRoom_Text_NolandLetsSeeFrontierPass, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_PLAYER, BattleFrontier_BattleFactoryBattleRoom_Movement_PlayerApproachNoland
+ applymovement LOCALID_FACTORY_BATTLE_PLAYER, BattleFrontier_BattleFactoryBattleRoom_Movement_PlayerApproachNoland
waitmovement 0
playfanfare MUS_OBTAIN_SYMBOL
message BattleFrontier_BattleFactoryBattleRoom_Text_ReceivedKnowledgeSymbol
@@ -164,7 +157,7 @@ BattleFrontier_BattleFactoryBattleRoom_EventScript_DefeatedNolandGold::
goto_if_eq VAR_RESULT, 2, BattleFrontier_BattleFactoryBattleRoom_EventScript_DefeatedNoland
msgbox BattleFrontier_BattleFactoryBattleRoom_Text_OutOfMyLeagueLetsSeePass, MSGBOX_DEFAULT
waitmessage
- applymovement LOCALID_PLAYER, BattleFrontier_BattleFactoryBattleRoom_Movement_PlayerApproachNoland
+ applymovement LOCALID_FACTORY_BATTLE_PLAYER, BattleFrontier_BattleFactoryBattleRoom_Movement_PlayerApproachNoland
waitmovement 0
playfanfare MUS_OBTAIN_SYMBOL
message BattleFrontier_BattleFactoryBattleRoom_Text_KnowledgeSymbolTookGoldenShine
@@ -241,12 +234,12 @@ BattleFrontier_BattleFactoryBattleRoom_EventScript_WarpToLobbyDoubles::
end
BattleFrontier_BattleFactoryBattleRoom_EventScript_ScientistsFaceBattle::
- applymovement LOCALID_SCIENTIST_1, Common_Movement_WalkInPlaceFasterRight
- applymovement LOCALID_SCIENTIST_2, Common_Movement_WalkInPlaceFasterRight
- applymovement LOCALID_SCIENTIST_3, Common_Movement_WalkInPlaceFasterRight
- applymovement LOCALID_SCIENTIST_4, Common_Movement_WalkInPlaceFasterLeft
- applymovement LOCALID_SCIENTIST_5, Common_Movement_WalkInPlaceFasterLeft
- applymovement LOCALID_SCIENTIST_6, Common_Movement_WalkInPlaceFasterLeft
+ applymovement LOCALID_FACTORY_BATTLE_SCIENTIST_1, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_FACTORY_BATTLE_SCIENTIST_2, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_FACTORY_BATTLE_SCIENTIST_3, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_FACTORY_BATTLE_SCIENTIST_4, Common_Movement_WalkInPlaceFasterLeft
+ applymovement LOCALID_FACTORY_BATTLE_SCIENTIST_5, Common_Movement_WalkInPlaceFasterLeft
+ applymovement LOCALID_FACTORY_BATTLE_SCIENTIST_6, Common_Movement_WalkInPlaceFasterLeft
waitmovement 0
return
diff --git a/data/maps/BattleFrontier_BattleFactoryLobby/map.json b/data/maps/BattleFrontier_BattleFactoryLobby/map.json
index 15d395fd83..1375c5f2b5 100644
--- a/data/maps/BattleFrontier_BattleFactoryLobby/map.json
+++ b/data/maps/BattleFrontier_BattleFactoryLobby/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_FACTORY_ATTENDANT_SINGLES",
"graphics_id": "OBJ_EVENT_GFX_SCIENTIST_1",
"x": 4,
"y": 7,
@@ -80,6 +81,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_FACTORY_ATTENDANT_DOUBLES",
"graphics_id": "OBJ_EVENT_GFX_SCIENTIST_1",
"x": 14,
"y": 7,
diff --git a/data/maps/BattleFrontier_BattleFactoryLobby/scripts.inc b/data/maps/BattleFrontier_BattleFactoryLobby/scripts.inc
index 5475fc146f..db9b5f2088 100644
--- a/data/maps/BattleFrontier_BattleFactoryLobby/scripts.inc
+++ b/data/maps/BattleFrontier_BattleFactoryLobby/scripts.inc
@@ -1,6 +1,3 @@
-.set LOCALID_ATTENDANT_SINGLES, 1
-.set LOCALID_ATTENDANT_DOUBLES, 6
-
BattleFrontier_BattleFactoryLobby_MapScripts::
map_script MAP_SCRIPT_ON_FRAME_TABLE, BattleFrontier_BattleFactoryLobby_OnFrame
map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, BattleFrontier_BattleFactoryLobby_OnWarp
@@ -12,7 +9,7 @@ BattleFrontier_BattleFactoryLobby_OnWarp:
BattleFrontier_BattleFactoryLobby_EventScript_TurnPlayerNorth::
setvar VAR_TEMP_1, 1
- turnobject OBJ_EVENT_ID_PLAYER, DIR_NORTH
+ turnobject LOCALID_PLAYER, DIR_NORTH
end
BattleFrontier_BattleFactoryLobby_OnFrame:
@@ -172,7 +169,7 @@ BattleFrontier_BattleFactoryLobby_EventScript_EnterChallenge::
call_if_eq VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_SINGLES, BattleFrontier_BattleFactoryLobby_EventScript_TalkedToSinglesAttendant
call_if_eq VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_DOUBLES, BattleFrontier_BattleFactoryLobby_EventScript_TalkedToDoublesAttendant
applymovement VAR_LAST_TALKED, BattleFrontier_BattleFactoryLobby_Movement_AttendantEnterDoor
- applymovement OBJ_EVENT_ID_PLAYER, BattleFrontier_BattleFactoryLobby_Movement_PlayerEnterDoor
+ applymovement LOCALID_PLAYER, BattleFrontier_BattleFactoryLobby_Movement_PlayerEnterDoor
waitmovement 0
warp MAP_BATTLE_FRONTIER_BATTLE_FACTORY_PRE_BATTLE_ROOM, 8, 13
setvar VAR_TEMP_CHALLENGE_STATUS, 0
@@ -180,11 +177,11 @@ BattleFrontier_BattleFactoryLobby_EventScript_EnterChallenge::
end
BattleFrontier_BattleFactoryLobby_EventScript_TalkedToSinglesAttendant::
- setvar VAR_LAST_TALKED, LOCALID_ATTENDANT_SINGLES
+ setvar VAR_LAST_TALKED, LOCALID_FACTORY_ATTENDANT_SINGLES
return
BattleFrontier_BattleFactoryLobby_EventScript_TalkedToDoublesAttendant::
- setvar VAR_LAST_TALKED, LOCALID_ATTENDANT_DOUBLES
+ setvar VAR_LAST_TALKED, LOCALID_FACTORY_ATTENDANT_DOUBLES
return
BattleFrontier_BattleFactoryLobby_EventScript_ExplainChallenge::
diff --git a/data/maps/BattleFrontier_BattleFactoryPreBattleRoom/map.json b/data/maps/BattleFrontier_BattleFactoryPreBattleRoom/map.json
index cf4ea2a6b4..9add31441f 100644
--- a/data/maps/BattleFrontier_BattleFactoryPreBattleRoom/map.json
+++ b/data/maps/BattleFrontier_BattleFactoryPreBattleRoom/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_FACTORY_PRE_BATTLE_ATTENDANT",
"graphics_id": "OBJ_EVENT_GFX_SCIENTIST_1",
"x": 8,
"y": 12,
diff --git a/data/maps/BattleFrontier_BattleFactoryPreBattleRoom/scripts.inc b/data/maps/BattleFrontier_BattleFactoryPreBattleRoom/scripts.inc
index 3167b17d81..cdfe225051 100644
--- a/data/maps/BattleFrontier_BattleFactoryPreBattleRoom/scripts.inc
+++ b/data/maps/BattleFrontier_BattleFactoryPreBattleRoom/scripts.inc
@@ -1,5 +1,3 @@
-.set LOCALID_ATTENDANT, 1
-
BattleFrontier_BattleFactoryPreBattleRoom_MapScripts::
map_script MAP_SCRIPT_ON_FRAME_TABLE, BattleFrontier_BattleFactoryPreBattleRoom_OnFrame
map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, BattleFrontier_BattleFactoryPreBattleRoom_OnWarp
@@ -12,10 +10,10 @@ BattleFrontier_BattleFactoryPreBattleRoom_OnWarp:
BattleFrontier_BattleFactoryPreBattleRoom_EventScript_SetUpObjects::
setvar VAR_TEMP_1, 1
goto_if_ne VAR_0x8006, 1, BattleFrontier_BattleFactoryPreBattleRoom_EventScript_TurnPlayerNorth
- setobjectxy LOCALID_ATTENDANT, 8, 7
- turnobject LOCALID_ATTENDANT, DIR_SOUTH
+ setobjectxy LOCALID_FACTORY_PRE_BATTLE_ATTENDANT, 8, 7
+ turnobject LOCALID_FACTORY_PRE_BATTLE_ATTENDANT, DIR_SOUTH
BattleFrontier_BattleFactoryPreBattleRoom_EventScript_TurnPlayerNorth::
- turnobject OBJ_EVENT_ID_PLAYER, DIR_NORTH
+ turnobject LOCALID_PLAYER, DIR_NORTH
end
BattleFrontier_BattleFactoryPreBattleRoom_OnFrame:
@@ -25,8 +23,8 @@ BattleFrontier_BattleFactoryPreBattleRoom_OnFrame:
BattleFrontier_BattleFactoryPreBattleRoom_EventScript_EnterRoom::
goto_if_eq VAR_0x8006, 1, BattleFrontier_BattleFactoryPreBattleRoom_EventScript_ReturnToRoomFromBattle
setvar VAR_TEMP_0, 1
- applymovement LOCALID_ATTENDANT, BattleFrontier_BattleFactoryPreBattleRoom_Movement_AttendantEnterRoom
- applymovement OBJ_EVENT_ID_PLAYER, BattleFrontier_BattleFactoryPreBattleRoom_Movement_PlayerEnterRoom
+ applymovement LOCALID_FACTORY_PRE_BATTLE_ATTENDANT, BattleFrontier_BattleFactoryPreBattleRoom_Movement_AttendantEnterRoom
+ applymovement LOCALID_PLAYER, BattleFrontier_BattleFactoryPreBattleRoom_Movement_PlayerEnterRoom
waitmovement 0
goto_if_eq VAR_0x8006, 2, BattleFrontier_BattleFactoryPreBattleRoom_EventScript_ResumeChallenge
factory_generaterentalmons
@@ -66,11 +64,11 @@ BattleFrontier_BattleFactoryPreBattleRoom_EventScript_ReturnToRoomFromBattle::
waitse
msgbox BattleFrontier_BattleFactoryPreBattleRoom_Text_WaitFewMoments, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_ATTENDANT, BattleFrontier_BattleFactoryPreBattleRoom_Movement_AttendantMoveToReceiveCall
+ applymovement LOCALID_FACTORY_PRE_BATTLE_ATTENDANT, BattleFrontier_BattleFactoryPreBattleRoom_Movement_AttendantMoveToReceiveCall
waitmovement 0
msgbox BattleFrontier_BattleFactoryPreBattleRoom_Text_UnderstoodSirWillDo, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_ATTENDANT, BattleFrontier_BattleFactoryPreBattleRoom_Movement_AttendantReturnToPlayer
+ applymovement LOCALID_FACTORY_PRE_BATTLE_ATTENDANT, BattleFrontier_BattleFactoryPreBattleRoom_Movement_AttendantReturnToPlayer
waitmovement 0
msgbox BattleFrontier_BattleFactoryPreBattleRoom_Text_MessageFromHeadComeRightNow, MSGBOX_DEFAULT
closemessage
@@ -383,13 +381,13 @@ BattleFrontier_BattleFactoryPreBattleRoom_EventScript_AskSwapBeforeHead::
case MULTI_B_PRESSED, BattleFrontier_BattleFactoryPreBattleRoom_EventScript_EnterBattleRoom
BattleFrontier_BattleFactoryPreBattleRoom_EventScript_WalkToBattleRoomLv50::
- applymovement LOCALID_ATTENDANT, BattleFrontier_BattleFactoryPreBattleRoom_Movement_GuideWalkToBattleRoomLv50
- applymovement OBJ_EVENT_ID_PLAYER, BattleFrontier_BattleFactoryPreBattleRoom_Movement_PlayerWalkToBattleRoomLv50
+ applymovement LOCALID_FACTORY_PRE_BATTLE_ATTENDANT, BattleFrontier_BattleFactoryPreBattleRoom_Movement_GuideWalkToBattleRoomLv50
+ applymovement LOCALID_PLAYER, BattleFrontier_BattleFactoryPreBattleRoom_Movement_PlayerWalkToBattleRoomLv50
return
BattleFrontier_BattleFactoryPreBattleRoom_EventScript_WalkToBattleRoomLvOpen::
- applymovement LOCALID_ATTENDANT, BattleFrontier_BattleFactoryPreBattleRoom_Movement_GuideWalkToBattleRoomLvOpen
- applymovement OBJ_EVENT_ID_PLAYER, BattleFrontier_BattleFactoryPreBattleRoom_Movement_PlayerWalkToBattleRoomLvOpen
+ applymovement LOCALID_FACTORY_PRE_BATTLE_ATTENDANT, BattleFrontier_BattleFactoryPreBattleRoom_Movement_GuideWalkToBattleRoomLvOpen
+ applymovement LOCALID_PLAYER, BattleFrontier_BattleFactoryPreBattleRoom_Movement_PlayerWalkToBattleRoomLvOpen
return
BattleFrontier_BattleFactoryPreBattleRoom_Movement_PlayerEnterRoom:
diff --git a/data/maps/BattleFrontier_BattlePalaceBattleRoom/map.json b/data/maps/BattleFrontier_BattlePalaceBattleRoom/map.json
index a0d00b5c01..e344c99951 100644
--- a/data/maps/BattleFrontier_BattlePalaceBattleRoom/map.json
+++ b/data/maps/BattleFrontier_BattlePalaceBattleRoom/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_PALACE_BATTLE_PLAYER",
"graphics_id": "OBJ_EVENT_GFX_VAR_1",
"x": 1,
"y": 9,
@@ -28,6 +29,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_PALACE_BATTLE_OPPONENT",
"graphics_id": "OBJ_EVENT_GFX_VAR_0",
"x": 13,
"y": 1,
@@ -41,6 +43,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_PALACE_BATTLE_ATTENDANT",
"graphics_id": "OBJ_EVENT_GFX_EXPERT_M",
"x": 1,
"y": 4,
@@ -54,6 +57,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_PALACE_DUSCLOPS",
"graphics_id": "OBJ_EVENT_GFX_DUSCLOPS",
"x": 13,
"y": 1,
@@ -67,6 +71,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_PALACE_AZURILL",
"graphics_id": "OBJ_EVENT_GFX_AZURILL",
"x": 13,
"y": 1,
diff --git a/data/maps/BattleFrontier_BattlePalaceBattleRoom/scripts.inc b/data/maps/BattleFrontier_BattlePalaceBattleRoom/scripts.inc
index 2e9366d44b..7223b14f3d 100644
--- a/data/maps/BattleFrontier_BattlePalaceBattleRoom/scripts.inc
+++ b/data/maps/BattleFrontier_BattlePalaceBattleRoom/scripts.inc
@@ -1,8 +1,7 @@
-.set LOCALID_PLAYER, 1
-.set LOCALID_OPPONENT, 2
-.set LOCALID_ATTENDANT, 3
-.set LOCALID_DUSCLOPS, 4
-.set LOCALID_AZURILL, 5
+@ On this map the player will automatically walk into the room, but the camera is supposed to remain still.
+@ To do this GF sets the player (LOCALID_PLAYER) invisible and creates a fake player object (LOCALID_PALACE_BATTLE_PLAYER).
+@ The graphics of this fake player object are represented with VAR_OBJ_GFX_ID_1.
+@ The graphics of the opponent are represented with VAR_OBJ_GFX_ID_0, which will ultimately be set by tower_setopponent.
BattleFrontier_BattlePalaceBattleRoom_MapScripts::
map_script MAP_SCRIPT_ON_TRANSITION, BattleFrontier_BattlePalaceBattleRoom_OnTransition
@@ -10,10 +9,6 @@ BattleFrontier_BattlePalaceBattleRoom_MapScripts::
map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, BattleFrontier_BattlePalaceBattleRoom_OnWarp
.byte 0
- @ On this map the player (OBJ_EVENT_ID_PLAYER) is hidden
- @ The player is represented instead by LOCALID_PLAYER, which has the gfx id VAR_OBJ_GFX_ID_0
- @ The opponent is represented by LOCALID_OPPONENT, which has the gfx id VAR_OBJ_GFX_ID_1
-
BattleFrontier_BattlePalaceBattleRoom_OnTransition:
frontier_settrainers
call BattleFrontier_BattlePalaceBattleRoom_EventScript_SetPlayerGfx
@@ -41,23 +36,23 @@ BattleFrontier_BattlePalaceBattleRoom_OnFrame:
.2byte 0
BattleFrontier_BattlePalaceBattleRoom_EventScript_EnterRoom::
- showobjectat LOCALID_PLAYER, MAP_BATTLE_FRONTIER_BATTLE_PALACE_BATTLE_ROOM
+ showobjectat LOCALID_PALACE_BATTLE_PLAYER, MAP_BATTLE_FRONTIER_BATTLE_PALACE_BATTLE_ROOM
frontier_get FRONTIER_DATA_BATTLE_NUM
goto_if_eq VAR_RESULT, 0, BattleFrontier_BattlePalaceBattleRoom_EventScript_BeginChallenge
- applymovement LOCALID_PLAYER, BattleFrontier_BattlePalaceBattleRoom_Movement_PlayerReturnToChallenge
+ applymovement LOCALID_PALACE_BATTLE_PLAYER, BattleFrontier_BattlePalaceBattleRoom_Movement_PlayerReturnToChallenge
waitmovement 0
- applymovement LOCALID_ATTENDANT, BattleFrontier_BattlePalaceBattleRoom_Movement_FaceDown
+ applymovement LOCALID_PALACE_BATTLE_ATTENDANT, BattleFrontier_BattlePalaceBattleRoom_Movement_FaceDown
setvar VAR_TEMP_2, 1
frontier_set FRONTIER_DATA_RECORD_DISABLED, TRUE
goto BattleFrontier_BattlePalaceBattleRoom_EventScript_AskReadyForOpponent
BattleFrontier_BattlePalaceBattleRoom_EventScript_BeginChallenge::
- applymovement LOCALID_PLAYER, BattleFrontier_BattlePalaceBattleRoom_Movement_PlayerEnterRoom
+ applymovement LOCALID_PALACE_BATTLE_PLAYER, BattleFrontier_BattlePalaceBattleRoom_Movement_PlayerEnterRoom
waitmovement 0
BattleFrontier_BattlePalaceBattleRoom_EventScript_NextOpponentEnter::
tower_setopponent
- addobject LOCALID_OPPONENT
- applymovement LOCALID_OPPONENT, BattleFrontier_BattlePalaceBattleRoom_Movement_OpponentEnter
+ addobject LOCALID_PALACE_BATTLE_OPPONENT
+ applymovement LOCALID_PALACE_BATTLE_OPPONENT, BattleFrontier_BattlePalaceBattleRoom_Movement_OpponentEnter
waitmovement 0
palace_getopponentintro
msgbox gStringVar4, MSGBOX_DEFAULT
@@ -76,11 +71,11 @@ BattleFrontier_BattlePalaceBattleRoom_EventScript_DefeatedOpponent::
frontier_set FRONTIER_DATA_BATTLE_NUM, VAR_RESULT
switch VAR_RESULT
case 7, BattleFrontier_BattlePalaceBattleRoom_EventScript_WarpToLobbyWon
- applymovement LOCALID_OPPONENT, BattleFrontier_BattlePalaceBattleRoom_Movement_OpponentExit
+ applymovement LOCALID_PALACE_BATTLE_OPPONENT, BattleFrontier_BattlePalaceBattleRoom_Movement_OpponentExit
waitmovement 0
- removeobject LOCALID_OPPONENT
- applymovement LOCALID_PLAYER, BattleFrontier_BattlePalaceBattleRoom_Movement_FaceUp
- applymovement LOCALID_ATTENDANT, BattleFrontier_BattlePalaceBattleRoom_Movement_FaceDown
+ removeobject LOCALID_PALACE_BATTLE_OPPONENT
+ applymovement LOCALID_PALACE_BATTLE_PLAYER, BattleFrontier_BattlePalaceBattleRoom_Movement_FaceUp
+ applymovement LOCALID_PALACE_BATTLE_ATTENDANT, BattleFrontier_BattlePalaceBattleRoom_Movement_FaceDown
waitmovement 0
msgbox BattleFrontier_BattlePalaceBattleRoom_Text_LetMeRestoreYourMons, MSGBOX_DEFAULT
special LoadPlayerParty
@@ -148,8 +143,8 @@ BattleFrontier_BattlePalaceBattleRoom_EventScript_AskRetireChallenge::
case MULTI_B_PRESSED, BattleFrontier_BattlePalaceBattleRoom_EventScript_AskReadyForOpponent
BattleFrontier_BattlePalaceBattleRoom_EventScript_ContinueChallenge::
- applymovement LOCALID_PLAYER, BattleFrontier_BattlePalaceBattleRoom_Movement_FaceRight
- applymovement LOCALID_ATTENDANT, BattleFrontier_BattlePalaceBattleRoom_Movement_FaceRight
+ applymovement LOCALID_PALACE_BATTLE_PLAYER, BattleFrontier_BattlePalaceBattleRoom_Movement_FaceRight
+ applymovement LOCALID_PALACE_BATTLE_ATTENDANT, BattleFrontier_BattlePalaceBattleRoom_Movement_FaceRight
closemessage
goto BattleFrontier_BattlePalaceBattleRoom_EventScript_NextOpponentEnter
@@ -196,16 +191,16 @@ BattleFrontier_BattlePalaceBattleRoom_EventScript_BattleSpenser::
call BattleFrontier_EventScript_SetBrainObjectGfx
msgbox BattleFrontier_BattlePalaceBattleRoom_Text_AnnounceArrivalOfSpenser, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_PLAYER, BattleFrontier_BattlePalaceBattleRoom_Movement_FaceRight
- applymovement LOCALID_ATTENDANT, BattleFrontier_BattlePalaceBattleRoom_Movement_FaceRight
- setobjectxyperm LOCALID_OPPONENT, 15, 1
- addobject LOCALID_OPPONENT
- hideobjectat LOCALID_OPPONENT, MAP_BATTLE_FRONTIER_BATTLE_PALACE_BATTLE_ROOM
- setobjectxy LOCALID_OPPONENT, 13, 1
- setobjectxyperm LOCALID_OPPONENT, 13, 1
- applymovement LOCALID_DUSCLOPS, BattleFrontier_BattlePalaceBattleRoom_Movement_DusclopsEnter
- applymovement LOCALID_AZURILL, BattleFrontier_BattlePalaceBattleRoom_Movement_AzurillEnter
- applymovement LOCALID_OPPONENT, BattleFrontier_BattlePalaceBattleRoom_Movement_SpenserEnter
+ applymovement LOCALID_PALACE_BATTLE_PLAYER, BattleFrontier_BattlePalaceBattleRoom_Movement_FaceRight
+ applymovement LOCALID_PALACE_BATTLE_ATTENDANT, BattleFrontier_BattlePalaceBattleRoom_Movement_FaceRight
+ setobjectxyperm LOCALID_PALACE_BATTLE_OPPONENT, 15, 1
+ addobject LOCALID_PALACE_BATTLE_OPPONENT
+ hideobjectat LOCALID_PALACE_BATTLE_OPPONENT, MAP_BATTLE_FRONTIER_BATTLE_PALACE_BATTLE_ROOM
+ setobjectxy LOCALID_PALACE_BATTLE_OPPONENT, 13, 1
+ setobjectxyperm LOCALID_PALACE_BATTLE_OPPONENT, 13, 1
+ applymovement LOCALID_PALACE_DUSCLOPS, BattleFrontier_BattlePalaceBattleRoom_Movement_DusclopsEnter
+ applymovement LOCALID_PALACE_AZURILL, BattleFrontier_BattlePalaceBattleRoom_Movement_AzurillEnter
+ applymovement LOCALID_PALACE_BATTLE_OPPONENT, BattleFrontier_BattlePalaceBattleRoom_Movement_SpenserEnter
waitmovement 0
switch VAR_TEMP_F
case FRONTIER_BRAIN_GOLD, BattleFrontier_BattlePalaceBattleRoom_EventScript_IntroSpenserGold
@@ -226,18 +221,18 @@ BattleFrontier_BattlePalaceBattleRoom_EventScript_DefeatedSpenserSilver::
frontier_getsymbols
goto_if_ne VAR_RESULT, 0, BattleFrontier_BattlePalaceBattleRoom_EventScript_WarpToLobbyWon
msgbox BattleFrontier_BattlePalaceBattleRoom_Text_SpenserPostSilverBattle, MSGBOX_DEFAULT
- applymovement LOCALID_PLAYER, BattleFrontier_BattlePalaceBattleRoom_Movement_FaceUp
- applymovement LOCALID_ATTENDANT, BattleFrontier_BattlePalaceBattleRoom_Movement_FaceDown
+ applymovement LOCALID_PALACE_BATTLE_PLAYER, BattleFrontier_BattlePalaceBattleRoom_Movement_FaceUp
+ applymovement LOCALID_PALACE_BATTLE_ATTENDANT, BattleFrontier_BattlePalaceBattleRoom_Movement_FaceDown
msgbox BattleFrontier_BattlePalaceBattleRoom_Text_LetsSeeFrontierPass, MSGBOX_DEFAULT
playfanfare MUS_OBTAIN_SYMBOL
message BattleFrontier_BattlePalaceBattleRoom_Text_ReceivedSpiritsSymbol
waitmessage
waitfanfare
frontier_givesymbol
- applymovement LOCALID_OPPONENT, Common_Movement_WalkInPlaceLeft
+ applymovement LOCALID_PALACE_BATTLE_OPPONENT, Common_Movement_WalkInPlaceLeft
waitmovement 0
- applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterRight
- applymovement LOCALID_ATTENDANT, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_PALACE_BATTLE_PLAYER, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_PALACE_BATTLE_ATTENDANT, Common_Movement_WalkInPlaceFasterRight
waitmovement 0
msgbox BattleFrontier_BattlePalaceBattleRoom_Text_SpenserAwaitNextTime, MSGBOX_DEFAULT
goto BattleFrontier_BattlePalaceBattleRoom_EventScript_WarpToLobbyWon
@@ -258,18 +253,18 @@ BattleFrontier_BattlePalaceBattleRoom_EventScript_DefeatedSpenserGold::
frontier_getsymbols
goto_if_eq VAR_RESULT, 2, BattleFrontier_BattlePalaceBattleRoom_EventScript_WarpToLobbyWon
msgbox BattleFrontier_BattlePalaceBattleRoom_Text_SpenserYourTeamIsAdmirable, MSGBOX_DEFAULT
- applymovement LOCALID_PLAYER, BattleFrontier_BattlePalaceBattleRoom_Movement_FaceUp
- applymovement LOCALID_ATTENDANT, BattleFrontier_BattlePalaceBattleRoom_Movement_FaceDown
+ applymovement LOCALID_PALACE_BATTLE_PLAYER, BattleFrontier_BattlePalaceBattleRoom_Movement_FaceUp
+ applymovement LOCALID_PALACE_BATTLE_ATTENDANT, BattleFrontier_BattlePalaceBattleRoom_Movement_FaceDown
msgbox BattleFrontier_BattlePalaceBattleRoom_Text_HurryWithFrontierPass, MSGBOX_DEFAULT
playfanfare MUS_OBTAIN_SYMBOL
message BattleFrontier_BattlePalaceBattleRoom_Text_SpiritsSymbolTookGoldenShine
waitmessage
waitfanfare
frontier_givesymbol
- applymovement LOCALID_OPPONENT, Common_Movement_WalkInPlaceLeft
+ applymovement LOCALID_PALACE_BATTLE_OPPONENT, Common_Movement_WalkInPlaceLeft
waitmovement 0
- applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterRight
- applymovement LOCALID_ATTENDANT, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_PALACE_BATTLE_PLAYER, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_PALACE_BATTLE_ATTENDANT, Common_Movement_WalkInPlaceFasterRight
waitmovement 0
msgbox BattleFrontier_BattlePalaceBattleRoom_Text_SpenserComeSeeMeAgain, MSGBOX_DEFAULT
goto BattleFrontier_BattlePalaceBattleRoom_EventScript_WarpToLobbyWon
@@ -293,13 +288,13 @@ BattleFrontier_BattlePalaceBattleRoom_OnWarp:
.2byte 0
BattleFrontier_BattlePalaceBattleRoom_EventScript_SetUpRoomObjects::
- hideobjectat LOCALID_PLAYER, MAP_BATTLE_FRONTIER_BATTLE_PALACE_BATTLE_ROOM
+ hideobjectat LOCALID_PALACE_BATTLE_PLAYER, MAP_BATTLE_FRONTIER_BATTLE_PALACE_BATTLE_ROOM
call BattleFrontier_BattlePalaceBattleRoom_EventScript_SetPlayerGfx
setvar VAR_TEMP_1, 1
- applymovement OBJ_EVENT_ID_PLAYER, BattleFrontier_BattlePalaceBattleRoom_Movement_SetInvisible
- removeobject LOCALID_OPPONENT
- applymovement LOCALID_DUSCLOPS, BattleFrontier_BattlePalaceBattleRoom_Movement_SetInvisible
- applymovement LOCALID_AZURILL, BattleFrontier_BattlePalaceBattleRoom_Movement_SetInvisible
+ applymovement LOCALID_PLAYER, BattleFrontier_BattlePalaceBattleRoom_Movement_SetInvisible
+ removeobject LOCALID_PALACE_BATTLE_OPPONENT
+ applymovement LOCALID_PALACE_DUSCLOPS, BattleFrontier_BattlePalaceBattleRoom_Movement_SetInvisible
+ applymovement LOCALID_PALACE_AZURILL, BattleFrontier_BattlePalaceBattleRoom_Movement_SetInvisible
end
BattleFrontier_BattlePalaceBattleRoom_EventScript_ReadyFor2ndOpponent::
diff --git a/data/maps/BattleFrontier_BattlePalaceCorridor/map.json b/data/maps/BattleFrontier_BattlePalaceCorridor/map.json
index e96f6d9e83..477ecc7c8d 100644
--- a/data/maps/BattleFrontier_BattlePalaceCorridor/map.json
+++ b/data/maps/BattleFrontier_BattlePalaceCorridor/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_PALACE_CORRIDOR_ATTENDANT",
"graphics_id": "OBJ_EVENT_GFX_EXPERT_M",
"x": 8,
"y": 12,
diff --git a/data/maps/BattleFrontier_BattlePalaceCorridor/scripts.inc b/data/maps/BattleFrontier_BattlePalaceCorridor/scripts.inc
index ad2a2ee9f5..08d5a07a5a 100644
--- a/data/maps/BattleFrontier_BattlePalaceCorridor/scripts.inc
+++ b/data/maps/BattleFrontier_BattlePalaceCorridor/scripts.inc
@@ -1,5 +1,3 @@
-.set LOCALID_ATTENDANT, 1
-
BattleFrontier_BattlePalaceCorridor_MapScripts::
map_script MAP_SCRIPT_ON_FRAME_TABLE, BattleFrontier_BattlePalaceCorridor_OnFrame
.byte 0
@@ -10,8 +8,8 @@ BattleFrontier_BattlePalaceCorridor_OnFrame:
BattleFrontier_BattlePalaceCorridor_EventScript_WalkThroughCorridor::
delay 16
- applymovement LOCALID_ATTENDANT, BattleFrontier_BattlePalaceCorridor_Movement_EnterCorridor
- applymovement OBJ_EVENT_ID_PLAYER, BattleFrontier_BattlePalaceCorridor_Movement_EnterCorridor
+ applymovement LOCALID_PALACE_CORRIDOR_ATTENDANT, BattleFrontier_BattlePalaceCorridor_Movement_EnterCorridor
+ applymovement LOCALID_PLAYER, BattleFrontier_BattlePalaceCorridor_Movement_EnterCorridor
waitmovement 0
lockall
palace_getcomment
@@ -23,26 +21,26 @@ BattleFrontier_BattlePalaceCorridor_EventScript_WalkThroughCorridor::
closemessage
frontier_get FRONTIER_DATA_LVL_MODE
goto_if_eq VAR_RESULT, FRONTIER_LVL_OPEN, BattleFrontier_BattlePalaceCorridor_EventScript_WalkToOpenBattleRoom
- applymovement LOCALID_ATTENDANT, BattleFrontier_BattlePalaceCorridor_Movement_AttendantWalkTo50BattleRoom
- applymovement OBJ_EVENT_ID_PLAYER, BattleFrontier_BattlePalaceCorridor_Movement_PlayerWalkTo50BattleRoom
+ applymovement LOCALID_PALACE_CORRIDOR_ATTENDANT, BattleFrontier_BattlePalaceCorridor_Movement_AttendantWalkTo50BattleRoom
+ applymovement LOCALID_PLAYER, BattleFrontier_BattlePalaceCorridor_Movement_PlayerWalkTo50BattleRoom
waitmovement 0
opendoor 6, 3
waitdooranim
- applymovement LOCALID_ATTENDANT, BattleFrontier_BattlePalaceCorridor_Movement_AttendantEnterBattleRoom
- applymovement OBJ_EVENT_ID_PLAYER, BattleFrontier_BattlePalaceCorridor_Movement_PlayerEnterBattleRoom
+ applymovement LOCALID_PALACE_CORRIDOR_ATTENDANT, BattleFrontier_BattlePalaceCorridor_Movement_AttendantEnterBattleRoom
+ applymovement LOCALID_PLAYER, BattleFrontier_BattlePalaceCorridor_Movement_PlayerEnterBattleRoom
waitmovement 0
closedoor 6, 3
waitdooranim
goto BattleFrontier_BattlePalaceCorridor_EventScript_WarpToBattleRoom
BattleFrontier_BattlePalaceCorridor_EventScript_WalkToOpenBattleRoom::
- applymovement LOCALID_ATTENDANT, BattleFrontier_BattlePalaceCorridor_Movement_AttendantWalkToOpenBattleRoom
- applymovement OBJ_EVENT_ID_PLAYER, BattleFrontier_BattlePalaceCorridor_Movement_PlayerWalkToOpenBattleRoom
+ applymovement LOCALID_PALACE_CORRIDOR_ATTENDANT, BattleFrontier_BattlePalaceCorridor_Movement_AttendantWalkToOpenBattleRoom
+ applymovement LOCALID_PLAYER, BattleFrontier_BattlePalaceCorridor_Movement_PlayerWalkToOpenBattleRoom
waitmovement 0
opendoor 10, 3
waitdooranim
- applymovement LOCALID_ATTENDANT, BattleFrontier_BattlePalaceCorridor_Movement_AttendantEnterBattleRoom
- applymovement OBJ_EVENT_ID_PLAYER, BattleFrontier_BattlePalaceCorridor_Movement_PlayerEnterBattleRoom
+ applymovement LOCALID_PALACE_CORRIDOR_ATTENDANT, BattleFrontier_BattlePalaceCorridor_Movement_AttendantEnterBattleRoom
+ applymovement LOCALID_PLAYER, BattleFrontier_BattlePalaceCorridor_Movement_PlayerEnterBattleRoom
waitmovement 0
closedoor 10, 3
waitdooranim
diff --git a/data/maps/BattleFrontier_BattlePalaceLobby/map.json b/data/maps/BattleFrontier_BattlePalaceLobby/map.json
index 7c8ee0cd13..90ac895fa4 100644
--- a/data/maps/BattleFrontier_BattlePalaceLobby/map.json
+++ b/data/maps/BattleFrontier_BattlePalaceLobby/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_PALACE_ATTENDANT_SINGLES",
"graphics_id": "OBJ_EVENT_GFX_EXPERT_M",
"x": 5,
"y": 6,
@@ -80,6 +81,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_PALACE_ATTENDANT_DOUBLES",
"graphics_id": "OBJ_EVENT_GFX_EXPERT_M",
"x": 19,
"y": 6,
diff --git a/data/maps/BattleFrontier_BattlePalaceLobby/scripts.inc b/data/maps/BattleFrontier_BattlePalaceLobby/scripts.inc
index 33d3735884..d80eaa49c2 100644
--- a/data/maps/BattleFrontier_BattlePalaceLobby/scripts.inc
+++ b/data/maps/BattleFrontier_BattlePalaceLobby/scripts.inc
@@ -1,6 +1,3 @@
-.set LOCALID_ATTENDANT_SINGLES, 1
-.set LOCALID_ATTENDANT_DOUBLES, 6
-
BattleFrontier_BattlePalaceLobby_MapScripts::
map_script MAP_SCRIPT_ON_FRAME_TABLE, BattleFrontier_BattlePalaceLobby_OnFrame
map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, BattleFrontier_BattlePalaceLobby_OnWarp
@@ -12,7 +9,7 @@ BattleFrontier_BattlePalaceLobby_OnWarp:
BattleFrontier_BattlePalaceLobby_EventScript_TurnPlayerNorth::
setvar VAR_TEMP_1, 1
- turnobject OBJ_EVENT_ID_PLAYER, DIR_NORTH
+ turnobject LOCALID_PLAYER, DIR_NORTH
end
BattleFrontier_BattlePalaceLobby_OnFrame:
@@ -244,13 +241,13 @@ BattleFrontier_BattlePalaceLobby_EventScript_WalkToDoor::
call_if_eq VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_SINGLES, BattleFrontier_BattlePalaceLobby_EventScript_TalkedToSinglesAttendant
call_if_eq VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_DOUBLES, BattleFrontier_BattlePalaceLobby_EventScript_TalkedToDoublesAttendant
applymovement VAR_LAST_TALKED, BattleFrontier_BattlePalaceLobby_Movement_WalkToDoor
- applymovement OBJ_EVENT_ID_PLAYER, BattleFrontier_BattlePalaceLobby_Movement_WalkToDoor
+ applymovement LOCALID_PLAYER, BattleFrontier_BattlePalaceLobby_Movement_WalkToDoor
waitmovement 0
call_if_eq VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_SINGLES, BattleFrontier_BattlePalaceLobby_EventScript_OpenSinglesHallDoor
call_if_eq VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_DOUBLES, BattleFrontier_BattlePalaceLobby_EventScript_OpenDoublesHallDoor
waitdooranim
applymovement VAR_LAST_TALKED, BattleFrontier_BattlePalaceLobby_Movement_AttendantEnterDoor
- applymovement OBJ_EVENT_ID_PLAYER, BattleFrontier_BattlePalaceLobby_Movement_PlayerEnterDoor
+ applymovement LOCALID_PLAYER, BattleFrontier_BattlePalaceLobby_Movement_PlayerEnterDoor
waitmovement 0
call_if_eq VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_SINGLES, BattleFrontier_BattlePalaceLobby_EventScript_CloseSinglesHallDoor
call_if_eq VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_DOUBLES, BattleFrontier_BattlePalaceLobby_EventScript_CloseDoublesHallDoor
@@ -258,11 +255,11 @@ BattleFrontier_BattlePalaceLobby_EventScript_WalkToDoor::
return
BattleFrontier_BattlePalaceLobby_EventScript_TalkedToSinglesAttendant::
- setvar VAR_LAST_TALKED, LOCALID_ATTENDANT_SINGLES
+ setvar VAR_LAST_TALKED, LOCALID_PALACE_ATTENDANT_SINGLES
return
BattleFrontier_BattlePalaceLobby_EventScript_TalkedToDoublesAttendant::
- setvar VAR_LAST_TALKED, LOCALID_ATTENDANT_DOUBLES
+ setvar VAR_LAST_TALKED, LOCALID_PALACE_ATTENDANT_DOUBLES
return
BattleFrontier_BattlePalaceLobby_EventScript_OpenSinglesHallDoor::
diff --git a/data/maps/BattleFrontier_BattlePikeCorridor/map.json b/data/maps/BattleFrontier_BattlePikeCorridor/map.json
index 1a5faadeab..c5f407e8a9 100644
--- a/data/maps/BattleFrontier_BattlePikeCorridor/map.json
+++ b/data/maps/BattleFrontier_BattlePikeCorridor/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_PIKE_CORRIDOR_ATTENDANT",
"graphics_id": "OBJ_EVENT_GFX_LINK_RECEPTIONIST",
"x": 6,
"y": 6,
diff --git a/data/maps/BattleFrontier_BattlePikeCorridor/scripts.inc b/data/maps/BattleFrontier_BattlePikeCorridor/scripts.inc
index fe2c6ed00f..5d2db019ce 100644
--- a/data/maps/BattleFrontier_BattlePikeCorridor/scripts.inc
+++ b/data/maps/BattleFrontier_BattlePikeCorridor/scripts.inc
@@ -1,5 +1,3 @@
-.set LOCALID_ATTENDANT, 1
-
BattleFrontier_BattlePikeCorridor_MapScripts::
map_script MAP_SCRIPT_ON_FRAME_TABLE, BattleFrontier_BattlePikeCorridor_OnFrame
map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, BattleFrontier_BattlePikeCorridor_OnWarp
@@ -14,14 +12,14 @@ BattleFrontier_BattlePikeCorridor_EventScript_EnterCorridor::
frontier_set FRONTIER_DATA_BATTLE_NUM, 1
pike_cleartrainerids
pike_nohealing TRUE
- applymovement OBJ_EVENT_ID_PLAYER, BattleFrontier_BattlePikeCorridor_Movement_PlayerEnterCorridor
- applymovement LOCALID_ATTENDANT, BattleFrontier_BattlePikeCorridor_Movement_AttendantEnterCorridor
+ applymovement LOCALID_PLAYER, BattleFrontier_BattlePikeCorridor_Movement_PlayerEnterCorridor
+ applymovement LOCALID_PIKE_CORRIDOR_ATTENDANT, BattleFrontier_BattlePikeCorridor_Movement_AttendantEnterCorridor
waitmovement 0
lockall
msgbox BattleFrontier_BattlePikeCorridor_Text_YourChallengeHasBegun, MSGBOX_DEFAULT
closemessage
releaseall
- applymovement OBJ_EVENT_ID_PLAYER, BattleFrontier_BattlePikeCorridor_Movement_PlayerExitCorridor
+ applymovement LOCALID_PLAYER, BattleFrontier_BattlePikeCorridor_Movement_PlayerExitCorridor
waitmovement 0
frontier_set FRONTIER_DATA_CHALLENGE_STATUS, 99
call BattleFrontier_BattlePike_EventScript_CloseCurtain
@@ -35,7 +33,7 @@ BattleFrontier_BattlePikeCorridor_OnWarp:
BattleFrontier_BattlePikeCorridor_EventScript_TurnPlayerNorth::
setvar VAR_TEMP_1, 1
- turnobject OBJ_EVENT_ID_PLAYER, DIR_NORTH
+ turnobject LOCALID_PLAYER, DIR_NORTH
end
BattleFrontier_BattlePikeCorridor_Movement_PlayerEnterCorridor:
diff --git a/data/maps/BattleFrontier_BattlePikeLobby/map.json b/data/maps/BattleFrontier_BattlePikeLobby/map.json
index 0faca2e94f..038a3c59bb 100644
--- a/data/maps/BattleFrontier_BattlePikeLobby/map.json
+++ b/data/maps/BattleFrontier_BattlePikeLobby/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_PIKE_LOBBY_ATTENDANT",
"graphics_id": "OBJ_EVENT_GFX_LINK_RECEPTIONIST",
"x": 5,
"y": 5,
diff --git a/data/maps/BattleFrontier_BattlePikeLobby/scripts.inc b/data/maps/BattleFrontier_BattlePikeLobby/scripts.inc
index b37100bc0a..6e72a30ec0 100644
--- a/data/maps/BattleFrontier_BattlePikeLobby/scripts.inc
+++ b/data/maps/BattleFrontier_BattlePikeLobby/scripts.inc
@@ -1,5 +1,3 @@
-.set LOCALID_ATTENDANT, 1
-
BattleFrontier_BattlePikeLobby_MapScripts::
map_script MAP_SCRIPT_ON_FRAME_TABLE, BattleFrontier_BattlePikeLobby_OnFrame
map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, BattleFrontier_BattlePikeLobby_OnWarp
@@ -18,7 +16,7 @@ BattleFrontier_BattlePikeLobby_OnWarp:
BattleFrontier_BattlePikeLobby_EventScript_TurnPlayerNorth::
setvar VAR_TEMP_1, 1
- turnobject OBJ_EVENT_ID_PLAYER, DIR_NORTH
+ turnobject LOCALID_PLAYER, DIR_NORTH
end
BattleFrontier_BattlePikeLobby_EventScript_GetChallengeStatus::
@@ -202,8 +200,8 @@ BattleFrontier_BattlePikeLobby_EventScript_ShowResults::
end
BattleFrontier_BattlePikeLobby_EventScript_WalkToCorridor::
- applymovement LOCALID_ATTENDANT, BattleFrontier_BattlePikeLobby_Movement_AttendantWalkToCorridor
- applymovement OBJ_EVENT_ID_PLAYER, BattleFrontier_BattlePikeLobby_Movement_PlayerWalkToCorridor
+ applymovement LOCALID_PIKE_LOBBY_ATTENDANT, BattleFrontier_BattlePikeLobby_Movement_AttendantWalkToCorridor
+ applymovement LOCALID_PLAYER, BattleFrontier_BattlePikeLobby_Movement_PlayerWalkToCorridor
waitmovement 0
return
diff --git a/data/maps/BattleFrontier_BattlePikeRoomFinal/map.json b/data/maps/BattleFrontier_BattlePikeRoomFinal/map.json
index 5a53ad19c9..e1b1008a03 100644
--- a/data/maps/BattleFrontier_BattlePikeRoomFinal/map.json
+++ b/data/maps/BattleFrontier_BattlePikeRoomFinal/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_PIKE_FINAL_ROOM_ATTENDANT",
"graphics_id": "OBJ_EVENT_GFX_LINK_RECEPTIONIST",
"x": 2,
"y": 4,
diff --git a/data/maps/BattleFrontier_BattlePikeRoomFinal/scripts.inc b/data/maps/BattleFrontier_BattlePikeRoomFinal/scripts.inc
index e0246ed57d..e847f1f6af 100644
--- a/data/maps/BattleFrontier_BattlePikeRoomFinal/scripts.inc
+++ b/data/maps/BattleFrontier_BattlePikeRoomFinal/scripts.inc
@@ -1,5 +1,3 @@
-.set LOCALID_ATTENDANT, 1
-
BattleFrontier_BattlePikeRoomFinal_MapScripts::
map_script MAP_SCRIPT_ON_FRAME_TABLE, BattleFrontier_BattlePikeRoomFinal_OnFrame
map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, BattleFrontier_BattlePikeRoomFinal_OnWarp
@@ -11,7 +9,7 @@ BattleFrontier_BattlePikeRoomFinal_OnFrame:
BattleFrontier_BattlePikeRoomFinal_EventScript_EnterRoom::
delay 16
- applymovement LOCALID_ATTENDANT, BattleFrontier_BattlePikeRoomFinal_Movement_AttendantApproachPlayer
+ applymovement LOCALID_PIKE_FINAL_ROOM_ATTENDANT, BattleFrontier_BattlePikeRoomFinal_Movement_AttendantApproachPlayer
waitmovement 0
frontier_set FRONTIER_DATA_CHALLENGE_STATUS, CHALLENGE_STATUS_WON
lockall
@@ -33,7 +31,7 @@ BattleFrontier_BattlePikeRoomFinal_OnWarp:
BattleFrontier_BattlePikeRoomFinal_EventScript_TurnPlayerNorth::
setvar VAR_TEMP_4, 1
- turnobject OBJ_EVENT_ID_PLAYER, DIR_NORTH
+ turnobject LOCALID_PLAYER, DIR_NORTH
end
BattleFrontier_BattlePikeRoomFinal_Text_CongratsThisWayPlease:
diff --git a/data/maps/BattleFrontier_BattlePikeRoomNormal/map.json b/data/maps/BattleFrontier_BattlePikeRoomNormal/map.json
index 82414ac6a3..a75c5de15f 100644
--- a/data/maps/BattleFrontier_BattlePikeRoomNormal/map.json
+++ b/data/maps/BattleFrontier_BattlePikeRoomNormal/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_PIKE_ROOM_NPC_1",
"graphics_id": "OBJ_EVENT_GFX_VAR_0",
"x": 4,
"y": 4,
@@ -28,6 +29,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_PIKE_ROOM_NPC_2",
"graphics_id": "OBJ_EVENT_GFX_VAR_1",
"x": 3,
"y": 4,
diff --git a/data/maps/BattleFrontier_BattlePikeRoomNormal/scripts.inc b/data/maps/BattleFrontier_BattlePikeRoomNormal/scripts.inc
index 45f042e4f8..44da68a6d7 100644
--- a/data/maps/BattleFrontier_BattlePikeRoomNormal/scripts.inc
+++ b/data/maps/BattleFrontier_BattlePikeRoomNormal/scripts.inc
@@ -1,8 +1,3 @@
-@ Objects in this room are set dynamically with OBJ_EVENT_GFX_VAR_0 and OBJ_EVENT_GFX_VAR_1
-@ Note: LOCALIDs shared with data/scripts/battle_pike.inc
-.equ LOCALID_OBJ_0, 1
-.equ LOCALID_OBJ_1, 2
-
BattleFrontier_BattlePikeRoomNormal_MapScripts::
map_script MAP_SCRIPT_ON_RESUME, BattleFrontier_BattlePikeRoom_OnResume
map_script MAP_SCRIPT_ON_TRANSITION, BattleFrontier_BattlePikeRoom_OnTransition
@@ -29,7 +24,7 @@ BattleFrontier_BattlePikeRoomNormal_EventScript_EnterRoom::
BattleFrontier_BattlePikeRoomNormal_EventScript_EnterSingleBattleRoom::
lockall
delay 16
- applymovement LOCALID_OBJ_0, BattleFrontier_BattlePikeRoomNormal_Movement_ApproachPlayer
+ applymovement LOCALID_PIKE_ROOM_NPC_1, BattleFrontier_BattlePikeRoomNormal_Movement_ApproachPlayer
waitmovement 0
pike_gettrainerintro 0
msgbox gStringVar4, MSGBOX_DEFAULT
@@ -49,7 +44,7 @@ BattleFrontier_BattlePikeRoomNormal_EventScript_WarpToLobbyLost::
end
BattleFrontier_BattlePikeRoomNormal_EventScript_WonSingleBattle::
- applymovement LOCALID_OBJ_0, BattleFrontier_BattlePikeRoomNormal_Movement_NPCExit
+ applymovement LOCALID_PIKE_ROOM_NPC_1, BattleFrontier_BattlePikeRoomNormal_Movement_NPCExit
waitmovement 0
end
@@ -59,7 +54,7 @@ BattleFrontier_BattlePikeRoomNormal_EventScript_EnterHardBattleRoom::
msgbox BattleFrontier_BattlePikeRoomNormal_Text_BattleSomewhatToughTrainer, MSGBOX_DEFAULT
waitmessage
closemessage
- applymovement LOCALID_OBJ_0, BattleFrontier_BattlePikeRoomNormal_Movement_ApproachPlayer
+ applymovement LOCALID_PIKE_ROOM_NPC_1, BattleFrontier_BattlePikeRoomNormal_Movement_ApproachPlayer
waitmovement 0
pike_gettrainerintro 0
msgbox gStringVar4, MSGBOX_DEFAULT
@@ -76,9 +71,9 @@ BattleFrontier_BattlePikeRoomNormal_EventScript_EnterHardBattleRoom::
end
BattleFrontier_BattlePikeRoomNormal_EventScript_WonHardBattle::
- applymovement LOCALID_OBJ_0, BattleFrontier_BattlePikeRoomNormal_Movement_NPCExit
+ applymovement LOCALID_PIKE_ROOM_NPC_1, BattleFrontier_BattlePikeRoomNormal_Movement_NPCExit
waitmovement 0
- applymovement LOCALID_OBJ_1, BattleFrontier_BattlePikeRoomNormal_Movement_HealNPCApproachPlayer
+ applymovement LOCALID_PIKE_ROOM_NPC_2, BattleFrontier_BattlePikeRoomNormal_Movement_HealNPCApproachPlayer
waitmovement 0
lock
faceplayer
@@ -89,14 +84,14 @@ BattleFrontier_BattlePikeRoomNormal_EventScript_WonHardBattle::
msgbox BattleFrontier_BattlePikeRoomNormal_Text_EnjoyRestOfChallenge2, MSGBOX_DEFAULT
closemessage
release
- applymovement LOCALID_OBJ_1, BattleFrontier_BattlePikeRoomNormal_Movement_NPCExit
+ applymovement LOCALID_PIKE_ROOM_NPC_2, BattleFrontier_BattlePikeRoomNormal_Movement_NPCExit
waitmovement 0
end
BattleFrontier_BattlePikeRoomNormal_EventScript_EnterBrainRoom::
delay 22
lockall
- applymovement LOCALID_OBJ_1, BattleFrontier_BattlePikeRoomNormal_Movement_PreQueenHealNPCApproachPlayer
+ applymovement LOCALID_PIKE_ROOM_NPC_2, BattleFrontier_BattlePikeRoomNormal_Movement_PreQueenHealNPCApproachPlayer
waitmovement 0
pike_prequeenheal
switch VAR_RESULT
@@ -108,8 +103,8 @@ BattleFrontier_BattlePikeRoomNormal_EventScript_LucyEnter::
msgbox BattleFrontier_BattlePikeRoomNormal_Text_ShallFetchOurMaster, MSGBOX_DEFAULT
closemessage
special SpawnCameraObject
- applymovement OBJ_EVENT_ID_CAMERA, BattleFrontier_BattlePikeRoomNormal_Movement_CameraPanUp
- applymovement LOCALID_OBJ_1, BattleFrontier_BattlePikeRoomNormal_Movement_HealNPCExitForLucy
+ applymovement LOCALID_CAMERA, BattleFrontier_BattlePikeRoomNormal_Movement_CameraPanUp
+ applymovement LOCALID_PIKE_ROOM_NPC_2, BattleFrontier_BattlePikeRoomNormal_Movement_HealNPCExitForLucy
waitmovement 0
playse SE_PIKE_CURTAIN_CLOSE
call BattleFrontier_BattlePikeRoomNormal_EventScript_SetCurtainTilesLittleClosed
@@ -123,13 +118,13 @@ BattleFrontier_BattlePikeRoomNormal_EventScript_LucyEnter::
playse SE_PIKE_CURTAIN_OPEN
delay 65
call BattleFrontier_BattlePikeRoomNormal_EventScript_SetCurtainTilesMostlyClosed
- showobjectat LOCALID_OBJ_0, MAP_BATTLE_FRONTIER_BATTLE_PIKE_ROOM_NORMAL
+ showobjectat LOCALID_PIKE_ROOM_NPC_1, MAP_BATTLE_FRONTIER_BATTLE_PIKE_ROOM_NORMAL
delay 4
call BattleFrontier_BattlePikeRoomNormal_EventScript_SetCurtainTilesLittleClosed
delay 4
call BattleFrontier_BattlePikeRoomNormal_EventScript_SetCurtainTilesOpen
waitse
- applymovement LOCALID_OBJ_0, BattleFrontier_BattlePikeRoomNormal_Movement_LucyEnter
+ applymovement LOCALID_PIKE_ROOM_NPC_1, BattleFrontier_BattlePikeRoomNormal_Movement_LucyEnter
waitmovement 0
pike_getbrainstatus
switch VAR_RESULT
@@ -187,9 +182,9 @@ BattleFrontier_BattlePikeRoomNormal_EventScript_DefeatedLucyGold::
end
BattleFrontier_BattlePikeRoomNormal_EventScript_DefeatedLucy::
- applymovement LOCALID_OBJ_0, BattleFrontier_BattlePikeRoomNormal_Movement_LucyMoveAside
+ applymovement LOCALID_PIKE_ROOM_NPC_1, BattleFrontier_BattlePikeRoomNormal_Movement_LucyMoveAside
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, BattleFrontier_BattlePikeRoomNormal_Movement_PlayerWalkUp2
+ applymovement LOCALID_PLAYER, BattleFrontier_BattlePikeRoomNormal_Movement_PlayerWalkUp2
waitmovement 0
pike_get PIKE_DATA_WIN_STREAK
addvar VAR_RESULT, 1
@@ -220,7 +215,7 @@ BattleFrontier_BattlePikeRoomNormal_EventScript_PreQueenHealTwoMons::
BattleFrontier_BattlePikeRoomNormal_EventScript_EnterFullHealRoom::
lockall
delay 16
- applymovement LOCALID_OBJ_0, BattleFrontier_BattlePikeRoomNormal_Movement_ApproachPlayer
+ applymovement LOCALID_PIKE_ROOM_NPC_1, BattleFrontier_BattlePikeRoomNormal_Movement_ApproachPlayer
waitmovement 0
message BattleFrontier_BattlePikeRoomNormal_Text_WillRestoreToFullHealth
waitmessage
@@ -229,7 +224,7 @@ BattleFrontier_BattlePikeRoomNormal_EventScript_EnterFullHealRoom::
special HealPlayerParty
msgbox BattleFrontier_BattlePikeRoomNormal_Text_EnjoyRestOfChallenge, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_OBJ_0, BattleFrontier_BattlePikeRoomNormal_Movement_NPCExit
+ applymovement LOCALID_PIKE_ROOM_NPC_1, BattleFrontier_BattlePikeRoomNormal_Movement_NPCExit
waitmovement 0
releaseall
end
@@ -237,22 +232,22 @@ BattleFrontier_BattlePikeRoomNormal_EventScript_EnterFullHealRoom::
BattleFrontier_BattlePikeRoomNormal_EventScript_EnterDoubleBattleRoom::
lockall
delay 16
- applymovement LOCALID_OBJ_0, BattleFrontier_BattlePikeRoomNormal_Movement_Trainer1WalkRight
- applymovement LOCALID_OBJ_1, BattleFrontier_BattlePikeRoomNormal_Movement_Trainer2WalkLeft
+ applymovement LOCALID_PIKE_ROOM_NPC_1, BattleFrontier_BattlePikeRoomNormal_Movement_Trainer1WalkRight
+ applymovement LOCALID_PIKE_ROOM_NPC_2, BattleFrontier_BattlePikeRoomNormal_Movement_Trainer2WalkLeft
waitmovement 0
- applymovement LOCALID_OBJ_0, BattleFrontier_BattlePikeRoomNormal_Movement_DoubleTrainersWalkDown
- applymovement LOCALID_OBJ_1, BattleFrontier_BattlePikeRoomNormal_Movement_DoubleTrainersWalkDown
+ applymovement LOCALID_PIKE_ROOM_NPC_1, BattleFrontier_BattlePikeRoomNormal_Movement_DoubleTrainersWalkDown
+ applymovement LOCALID_PIKE_ROOM_NPC_2, BattleFrontier_BattlePikeRoomNormal_Movement_DoubleTrainersWalkDown
waitmovement 0
- applymovement LOCALID_OBJ_0, BattleFrontier_BattlePikeRoomNormal_Movement_Trainer1FacePlayer
- applymovement LOCALID_OBJ_1, BattleFrontier_BattlePikeRoomNormal_Movement_Trainer2FacePlayer
+ applymovement LOCALID_PIKE_ROOM_NPC_1, BattleFrontier_BattlePikeRoomNormal_Movement_Trainer1FacePlayer
+ applymovement LOCALID_PIKE_ROOM_NPC_2, BattleFrontier_BattlePikeRoomNormal_Movement_Trainer2FacePlayer
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, BattleFrontier_BattlePikeRoomNormal_Movement_PlayerFaceTrainer1
+ applymovement LOCALID_PLAYER, BattleFrontier_BattlePikeRoomNormal_Movement_PlayerFaceTrainer1
waitmovement 0
pike_gettrainerintro 0
msgbox gStringVar4, MSGBOX_DEFAULT
closemessage
delay 16
- applymovement OBJ_EVENT_ID_PLAYER, BattleFrontier_BattlePikeRoomNormal_Movement_PlayerFaceTrainer2
+ applymovement LOCALID_PLAYER, BattleFrontier_BattlePikeRoomNormal_Movement_PlayerFaceTrainer2
waitmovement 0
pike_gettrainerintro 1
msgbox gStringVar4, MSGBOX_DEFAULT
@@ -267,20 +262,20 @@ BattleFrontier_BattlePikeRoomNormal_EventScript_EnterDoubleBattleRoom::
end
BattleFrontier_BattlePikeRoomNormal_EventScript_WonDoubleBattle::
- applymovement OBJ_EVENT_ID_PLAYER, BattleFrontier_BattlePikeRoomNormal_Movement_PlayerFaceTrainer2
+ applymovement LOCALID_PLAYER, BattleFrontier_BattlePikeRoomNormal_Movement_PlayerFaceTrainer2
waitmovement 0
- applymovement LOCALID_OBJ_0, BattleFrontier_BattlePikeRoomNormal_Movement_Trainer1Exit
+ applymovement LOCALID_PIKE_ROOM_NPC_1, BattleFrontier_BattlePikeRoomNormal_Movement_Trainer1Exit
waitmovement 0
- applymovement LOCALID_OBJ_1, BattleFrontier_BattlePikeRoomNormal_Movement_Trainer2Exit
+ applymovement LOCALID_PIKE_ROOM_NPC_2, BattleFrontier_BattlePikeRoomNormal_Movement_Trainer2Exit
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, BattleFrontier_BattlePikeRoomNormal_Movement_PlayerFaceUp
+ applymovement LOCALID_PLAYER, BattleFrontier_BattlePikeRoomNormal_Movement_PlayerFaceUp
waitmovement 0
end
BattleFrontier_BattlePikeRoomNormal_EventScript_EnterStatusRoom::
lockall
message BattleFrontier_BattlePikeRoomNormal_Text_WatchOut
- applymovement LOCALID_OBJ_1, BattleFrontier_BattlePikeRoomNormal_Movement_MonApproachPlayer
+ applymovement LOCALID_PIKE_ROOM_NPC_2, BattleFrontier_BattlePikeRoomNormal_Movement_MonApproachPlayer
waitmovement 0
pike_getstatusmon
copyvar VAR_0x8004, VAR_RESULT
@@ -304,9 +299,9 @@ BattleFrontier_BattlePikeRoomNormal_EventScript_KirliaAttack::
call_if_eq VAR_RESULT, PIKE_STATUS_SLEEP, BattleFrontier_BattlePikeRoomNormal_EventScript_KirliaUsedHypnosis
pike_flashscreen
waitstate
- applymovement LOCALID_OBJ_0, BattleFrontier_BattlePikeRoomNormal_Movement_NPCApproachMon
+ applymovement LOCALID_PIKE_ROOM_NPC_1, BattleFrontier_BattlePikeRoomNormal_Movement_NPCApproachMon
waitmovement 0
- applymovement LOCALID_OBJ_1, BattleFrontier_BattlePikeRoomNormal_Movement_MonFaceNPC
+ applymovement LOCALID_PIKE_ROOM_NPC_2, BattleFrontier_BattlePikeRoomNormal_Movement_MonFaceNPC
waitmovement 0
waitse
playmoncry SPECIES_KIRLIA, CRY_MODE_NORMAL
@@ -316,8 +311,8 @@ BattleFrontier_BattlePikeRoomNormal_EventScript_KirliaAttack::
playmoncry SPECIES_KIRLIA, CRY_MODE_NORMAL
waitmoncry
closemessage
- applymovement LOCALID_OBJ_1, BattleFrontier_BattlePikeRoomNormal_Movement_MonMoveAside
- applymovement LOCALID_OBJ_0, BattleFrontier_BattlePikeRoomNormal_Movement_StatusNPCApproachPlayer
+ applymovement LOCALID_PIKE_ROOM_NPC_2, BattleFrontier_BattlePikeRoomNormal_Movement_MonMoveAside
+ applymovement LOCALID_PIKE_ROOM_NPC_1, BattleFrontier_BattlePikeRoomNormal_Movement_StatusNPCApproachPlayer
waitmovement 0
msgbox BattleFrontier_BattlePikeRoomNormal_Text_ApologizeForKirlia, MSGBOX_DEFAULT
return
@@ -333,9 +328,9 @@ BattleFrontier_BattlePikeRoomNormal_EventScript_DusclopsAttack::
call_if_eq VAR_RESULT, PIKE_STATUS_BURN, BattleFrontier_BattlePikeRoomNormal_EventScript_DusclopsUsedWillOWisp
pike_flashscreen
waitstate
- applymovement LOCALID_OBJ_0, BattleFrontier_BattlePikeRoomNormal_Movement_NPCApproachMon
+ applymovement LOCALID_PIKE_ROOM_NPC_1, BattleFrontier_BattlePikeRoomNormal_Movement_NPCApproachMon
waitmovement 0
- applymovement LOCALID_OBJ_1, BattleFrontier_BattlePikeRoomNormal_Movement_MonFaceNPC
+ applymovement LOCALID_PIKE_ROOM_NPC_2, BattleFrontier_BattlePikeRoomNormal_Movement_MonFaceNPC
waitmovement 0
waitse
playmoncry SPECIES_DUSCLOPS, CRY_MODE_NORMAL
@@ -345,8 +340,8 @@ BattleFrontier_BattlePikeRoomNormal_EventScript_DusclopsAttack::
playmoncry SPECIES_DUSCLOPS, CRY_MODE_NORMAL
waitmoncry
closemessage
- applymovement LOCALID_OBJ_1, BattleFrontier_BattlePikeRoomNormal_Movement_MonMoveAside
- applymovement LOCALID_OBJ_0, BattleFrontier_BattlePikeRoomNormal_Movement_StatusNPCApproachPlayer
+ applymovement LOCALID_PIKE_ROOM_NPC_2, BattleFrontier_BattlePikeRoomNormal_Movement_MonMoveAside
+ applymovement LOCALID_PIKE_ROOM_NPC_1, BattleFrontier_BattlePikeRoomNormal_Movement_StatusNPCApproachPlayer
waitmovement 0
msgbox BattleFrontier_BattlePikeRoomNormal_Text_ApologizeForDusclops, MSGBOX_DEFAULT
return
@@ -383,7 +378,7 @@ BattleFrontier_BattlePikeRoomNormal_EventScript_DusclopsUsedWillOWisp::
BattleFrontier_BattlePikeRoomNormal_EventScript_DoPikeQueenBattle::
closemessage
- applymovement OBJ_EVENT_ID_PLAYER, BattleFrontier_BattlePikeRoomNormal_Movement_PlayerWalkUp2
+ applymovement LOCALID_PLAYER, BattleFrontier_BattlePikeRoomNormal_Movement_PlayerWalkUp2
waitmovement 0
setvar VAR_0x8004, SPECIAL_BATTLE_PIKE_SINGLE
setvar VAR_0x8005, 0
@@ -562,7 +557,7 @@ BattleFrontier_BattlePikeRoomNormal_EventScript_HealNPC::
msgbox BattleFrontier_BattlePikeRoomNormal_Text_BestOfLuckFarewell, MSGBOX_DEFAULT
closemessage
release
- applymovement LOCALID_OBJ_0, BattleFrontier_BattlePikeRoomNormal_Movement_HealNPCExit
+ applymovement LOCALID_PIKE_ROOM_NPC_1, BattleFrontier_BattlePikeRoomNormal_Movement_HealNPCExit
waitmovement 0
end
@@ -587,7 +582,7 @@ BattleFrontier_BattlePikeRoomNormal_EventScript_StatusMon::
msgbox BattleFrontier_BattlePikeRoomNormal_Text_Silence, MSGBOX_DEFAULT
closemessage
release
- applymovement LOCALID_OBJ_1, BattleFrontier_BattlePikeRoomNormal_Movement_MonFaceRight
+ applymovement LOCALID_PIKE_ROOM_NPC_2, BattleFrontier_BattlePikeRoomNormal_Movement_MonFaceRight
waitmovement 0
end
diff --git a/data/maps/BattleFrontier_BattlePikeRoomWildMons/scripts.inc b/data/maps/BattleFrontier_BattlePikeRoomWildMons/scripts.inc
index 19926b9675..9059ee4387 100644
--- a/data/maps/BattleFrontier_BattlePikeRoomWildMons/scripts.inc
+++ b/data/maps/BattleFrontier_BattlePikeRoomWildMons/scripts.inc
@@ -26,7 +26,7 @@ BattleFrontier_BattlePikeRoomWildMons_OnWarp:
BattleFrontier_BattlePikeRoomWildMons_EventScript_TurnPlayerNorth::
setvar VAR_TEMP_4, 1
- turnobject OBJ_EVENT_ID_PLAYER, DIR_NORTH
+ turnobject LOCALID_PLAYER, DIR_NORTH
end
BattleFrontier_BattlePikeRoomWildMons_OnResume:
diff --git a/data/maps/BattleFrontier_BattlePikeThreePathRoom/map.json b/data/maps/BattleFrontier_BattlePikeThreePathRoom/map.json
index 536e02a898..9f2000ef1e 100644
--- a/data/maps/BattleFrontier_BattlePikeThreePathRoom/map.json
+++ b/data/maps/BattleFrontier_BattlePikeThreePathRoom/map.json
@@ -28,6 +28,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_PIKE_HINT_GIVER",
"graphics_id": "OBJ_EVENT_GFX_LINK_RECEPTIONIST",
"x": 8,
"y": 5,
diff --git a/data/maps/BattleFrontier_BattlePikeThreePathRoom/scripts.inc b/data/maps/BattleFrontier_BattlePikeThreePathRoom/scripts.inc
index 3547871444..1baed386ba 100644
--- a/data/maps/BattleFrontier_BattlePikeThreePathRoom/scripts.inc
+++ b/data/maps/BattleFrontier_BattlePikeThreePathRoom/scripts.inc
@@ -1,5 +1,3 @@
-.set LOCALID_HINT_GIVER, 2
-
BattleFrontier_BattlePikeThreePathRoom_MapScripts::
map_script MAP_SCRIPT_ON_RESUME, BattleFrontier_BattlePikeRoom_OnResume
map_script MAP_SCRIPT_ON_FRAME_TABLE, BattleFrontier_BattlePikeThreePathRoom_OnFrame
@@ -20,7 +18,7 @@ BattleFrontier_BattlePikeThreePathRoom_OnWarp:
BattleFrontier_BattlePikeThreePathRoom_EventScript_TurnPlayerNorth::
setvar VAR_TEMP_4, 1
- turnobject OBJ_EVENT_ID_PLAYER, DIR_NORTH
+ turnobject LOCALID_PLAYER, DIR_NORTH
end
BattleFrontier_BattlePikeThreePathRoom_EventScript_GetChallengeStatus::
@@ -160,12 +158,12 @@ BattleFrontier_BattlePikeThreePathRoom_EventScript_SetPikeQueenHint::
end
BattleFrontier_BattlePikeThreePathRoom_EventScript_GivePikeQueenHint::
- applymovement LOCALID_HINT_GIVER, BattleFrontier_BattlePikeThreePathRoom_Movement_HintGiverApproachPlayer
+ applymovement LOCALID_PIKE_HINT_GIVER, BattleFrontier_BattlePikeThreePathRoom_Movement_HintGiverApproachPlayer
waitmovement 0
lockall
msgbox BattleFrontier_BattlePikeThreePathRoom_Text_TerrifyingEvent, MSGBOX_DEFAULT
releaseall
- applymovement LOCALID_HINT_GIVER, BattleFrontier_BattlePikeThreePathRoom_Movement_HintGiverReturnToPos
+ applymovement LOCALID_PIKE_HINT_GIVER, BattleFrontier_BattlePikeThreePathRoom_Movement_HintGiverReturnToPos
waitmovement 0
setvar VAR_TEMP_5, 255
end
diff --git a/data/maps/BattleFrontier_BattlePyramidLobby/map.json b/data/maps/BattleFrontier_BattlePyramidLobby/map.json
index 4652af2747..4913cdb953 100644
--- a/data/maps/BattleFrontier_BattlePyramidLobby/map.json
+++ b/data/maps/BattleFrontier_BattlePyramidLobby/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_PYRAMID_LOBBY_ATTENDANT",
"graphics_id": "OBJ_EVENT_GFX_HIKER",
"x": 7,
"y": 12,
@@ -28,6 +29,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_PYRAMID_LOBBY_HINT_GIVER",
"graphics_id": "OBJ_EVENT_GFX_HEX_MANIAC",
"x": 14,
"y": 13,
diff --git a/data/maps/BattleFrontier_BattlePyramidLobby/scripts.inc b/data/maps/BattleFrontier_BattlePyramidLobby/scripts.inc
index 1768411616..a8f949ca58 100644
--- a/data/maps/BattleFrontier_BattlePyramidLobby/scripts.inc
+++ b/data/maps/BattleFrontier_BattlePyramidLobby/scripts.inc
@@ -1,6 +1,3 @@
-.set LOCALID_ATTENDANT, 1
-.set LOCALID_HINT_GIVER, 2
-
BattleFrontier_BattlePyramidLobby_MapScripts::
map_script MAP_SCRIPT_ON_FRAME_TABLE, BattleFrontier_BattlePyramidLobby_OnFrame
map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, BattleFrontier_BattleDomeLobby_OnWarp
@@ -13,7 +10,7 @@ BattleFrontier_BattlePyramidLobby_OnWarp:
BattleFrontier_BattlePyramidLobby_EventScript_TurnPlayerNorth:
setvar VAR_TEMP_1, 1
- turnobject OBJ_EVENT_ID_PLAYER, DIR_NORTH
+ turnobject LOCALID_PLAYER, DIR_NORTH
end
BattleFrontier_BattlePyramidLobby_OnFrame:
@@ -208,7 +205,7 @@ BattleFrontier_BattlePyramidLobby_EventScript_EndCancelChallenge::
BattleFrontier_BattlePyramidLobby_EventScript_HintGiver::
lockall
- applymovement LOCALID_HINT_GIVER, Common_Movement_FacePlayer
+ applymovement LOCALID_PYRAMID_LOBBY_HINT_GIVER, Common_Movement_FacePlayer
waitmovement 0
msgbox BattleFrontier_BattlePyramidLobby_Text_TellYouWhatMisfortunesAwait, MSGBOX_DEFAULT
call BattleFrontier_BattlePyramidLobby_EventScript_GiveHint
@@ -370,8 +367,8 @@ BattleFrontier_BattlePyramidLobby_EventScript_ShowResults::
end
BattleFrontier_BattlePyramidLobby_EventScript_WalkToPanelAndReceiveBag::
- applymovement LOCALID_ATTENDANT, BattleFrontier_BattlePyramidLobby_Movement_AttendantWalkToPanel
- applymovement OBJ_EVENT_ID_PLAYER, BattleFrontier_BattlePyramidLobby_Movement_PlayerWalkToPanel
+ applymovement LOCALID_PYRAMID_LOBBY_ATTENDANT, BattleFrontier_BattlePyramidLobby_Movement_AttendantWalkToPanel
+ applymovement LOCALID_PLAYER, BattleFrontier_BattlePyramidLobby_Movement_PlayerWalkToPanel
waitmovement 0
msgbox BattleFrontier_BattlePyramidLobby_Text_WeWillHoldBagForSafekeeping, MSGBOX_DEFAULT
pyramid_get PYRAMID_DATA_WIN_STREAK
@@ -388,9 +385,9 @@ BattleFrontier_BattlePyramidLobby_EventScript_ReceiveBattleBag::
waitse
msgbox BattleFrontier_BattlePyramidLobby_Text_StepOnFloorPanel, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_ATTENDANT, BattleFrontier_BattlePyramidLobby_Movement_AttendantMoveAside
+ applymovement LOCALID_PYRAMID_LOBBY_ATTENDANT, BattleFrontier_BattlePyramidLobby_Movement_AttendantMoveAside
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, BattleFrontier_BattlePyramidLobby_Movement_PlayerStepOnPanel
+ applymovement LOCALID_PLAYER, BattleFrontier_BattlePyramidLobby_Movement_PlayerStepOnPanel
waitmovement 0
return
diff --git a/data/maps/BattleFrontier_BattlePyramidTop/map.json b/data/maps/BattleFrontier_BattlePyramidTop/map.json
index 4299f31834..570fd27c8d 100644
--- a/data/maps/BattleFrontier_BattlePyramidTop/map.json
+++ b/data/maps/BattleFrontier_BattlePyramidTop/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_PYRAMID_TOP_ATTENDANT",
"graphics_id": "OBJ_EVENT_GFX_HIKER",
"x": 17,
"y": 11,
@@ -28,6 +29,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_BRANDON",
"graphics_id": "OBJ_EVENT_GFX_BRANDON",
"x": 17,
"y": 7,
diff --git a/data/maps/BattleFrontier_BattlePyramidTop/scripts.inc b/data/maps/BattleFrontier_BattlePyramidTop/scripts.inc
index fa57635271..3bf7b7b17e 100644
--- a/data/maps/BattleFrontier_BattlePyramidTop/scripts.inc
+++ b/data/maps/BattleFrontier_BattlePyramidTop/scripts.inc
@@ -1,6 +1,3 @@
-.set LOCALID_ATTENDANT, 1
-.set LOCALID_BRANDON, 2
-
BattleFrontier_BattlePyramidTop_MapScripts::
map_script MAP_SCRIPT_ON_RESUME, BattleFrontier_BattlePyramidTop_OnResume
map_script MAP_SCRIPT_ON_FRAME_TABLE, BattleFrontier_BattlePyramidTop_OnFrame
@@ -19,7 +16,7 @@ BattleFrontier_BattlePyramidTop_OnWarp:
BattleFrontier_BattlePyramidTop_EventScript_SetUpObjects::
setvar VAR_TEMP_1, 1
- turnobject OBJ_EVENT_ID_PLAYER, DIR_NORTH
+ turnobject LOCALID_PLAYER, DIR_NORTH
goto_if_ne VAR_TEMP_C, 0, BattleFrontier_BattlePyramidTop_EventScript_EndSetUpObjects
setobjectxyperm LOCALID_BRANDON, 0, 0
BattleFrontier_BattlePyramidTop_EventScript_EndSetUpObjects::
@@ -73,11 +70,11 @@ BattleFrontier_BattlePyramidTop_EventScript_Attendant::
goto_if_ne VAR_TEMP_C, FRONTIER_BRAIN_NOT_READY, BattleFrontier_BattlePyramidTop_EventScript_BrandonHereMoveAside
msgbox BattleFrontier_BattlePyramidTop_Text_ReachedSummitUpYouGo, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_ATTENDANT, BattleFrontier_BattlePyramidTop_Movement_AttendantMoveAside
+ applymovement LOCALID_PYRAMID_TOP_ATTENDANT, BattleFrontier_BattlePyramidTop_Movement_AttendantMoveAside
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, BattleFrontier_BattlePyramidTop_Movement_PlayerClimbToTop
+ applymovement LOCALID_PLAYER, BattleFrontier_BattlePyramidTop_Movement_PlayerClimbToTop
waitmovement 0
- applymovement LOCALID_ATTENDANT, BattleFrontier_BattlePyramidTop_Movement_AttendantBlockPath
+ applymovement LOCALID_PYRAMID_TOP_ATTENDANT, BattleFrontier_BattlePyramidTop_Movement_AttendantBlockPath
waitmovement 0
message BattleFrontier_BattlePyramidTop_Text_PlayerConqueredPyramid
waitmessage
@@ -97,7 +94,7 @@ BattleFrontier_BattlePyramidTop_EventScript_StepForwardWhenReady::
BattleFrontier_BattlePyramidTop_EventScript_BrandonHereMoveAside::
msgbox BattleFrontier_BattlePyramidTop_Text_ChiefBeatYouHere, MSGBOX_DEFAULT
- applymovement LOCALID_ATTENDANT, BattleFrontier_BattlePyramidTop_Movement_AttendantMoveAside
+ applymovement LOCALID_PYRAMID_TOP_ATTENDANT, BattleFrontier_BattlePyramidTop_Movement_AttendantMoveAside
setvar VAR_TEMP_D, 1
closemessage
end
@@ -111,7 +108,7 @@ BattleFrontier_BattlePyramidTop_EventScript_BattleBrandon::
frontier_get FRONTIER_DATA_HEARD_BRAIN_SPEECH
goto_if_ne VAR_RESULT, FALSE, BattleFrontier_BattlePyramidTop_EventScript_BrandonHeardSilverSpeech
special SpawnCameraObject
- applymovement OBJ_EVENT_ID_CAMERA, BattleFrontier_BattlePyramidTop_Movement_CameraPanUp
+ applymovement LOCALID_CAMERA, BattleFrontier_BattlePyramidTop_Movement_CameraPanUp
waitmovement 0
msgbox BattleFrontier_BattlePyramidTop_Text_ExplorationsAreGrandestAdventure, MSGBOX_DEFAULT
closemessage
@@ -148,7 +145,7 @@ BattleFrontier_BattlePyramidTop_EventScript_BrandonIntroGold::
frontier_get FRONTIER_DATA_HEARD_BRAIN_SPEECH
goto_if_ne VAR_RESULT, FALSE, BattleFrontier_BattlePyramidTop_EventScript_BrandonHeardGoldSpeech
special SpawnCameraObject
- applymovement OBJ_EVENT_ID_CAMERA, BattleFrontier_BattlePyramidTop_Movement_CameraPanUp
+ applymovement LOCALID_CAMERA, BattleFrontier_BattlePyramidTop_Movement_CameraPanUp
waitmovement 0
msgbox BattleFrontier_BattlePyramidTop_Text_BrandonYouveReturned, MSGBOX_DEFAULT
closemessage
diff --git a/data/maps/BattleFrontier_BattleTowerBattleRoom/map.json b/data/maps/BattleFrontier_BattleTowerBattleRoom/map.json
index 1018ebb6d9..5798ab5667 100644
--- a/data/maps/BattleFrontier_BattleTowerBattleRoom/map.json
+++ b/data/maps/BattleFrontier_BattleTowerBattleRoom/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_TOWER_BATTLE_OPPONENT",
"graphics_id": "OBJ_EVENT_GFX_VAR_0",
"x": 5,
"y": 1,
@@ -28,6 +29,7 @@
"flag": "FLAG_HIDE_BATTLE_TOWER_OPPONENT"
},
{
+ "local_id": "LOCALID_TOWER_BATTLE_ATTENDANT_1",
"graphics_id": "OBJ_EVENT_GFX_TEALA",
"x": 1,
"y": 7,
@@ -41,6 +43,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_TOWER_BATTLE_ATTENDANT_2",
"graphics_id": "OBJ_EVENT_GFX_TEALA",
"x": 4,
"y": 8,
diff --git a/data/maps/BattleFrontier_BattleTowerBattleRoom/scripts.inc b/data/maps/BattleFrontier_BattleTowerBattleRoom/scripts.inc
index 9b466af3bc..bfa94f04b8 100644
--- a/data/maps/BattleFrontier_BattleTowerBattleRoom/scripts.inc
+++ b/data/maps/BattleFrontier_BattleTowerBattleRoom/scripts.inc
@@ -1,7 +1,3 @@
-.set LOCALID_OPPONENT, 1
-.set LOCALID_ATTENDANT_1, 2
-.set LOCALID_ATTENDANT_2, 3
-
BattleFrontier_BattleTowerBattleRoom_MapScripts::
map_script MAP_SCRIPT_ON_FRAME_TABLE, BattleFrontier_BattleTowerBattleRoom_OnFrame
map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, BattleFrontier_BattleTowerBattleRoom_OnWarp
@@ -13,7 +9,7 @@ BattleFrontier_BattleTowerBattleRoom_OnWarp:
BattleFrontier_BattleTowerBattleRoom_EventScript_SetUpObjects::
setvar VAR_TEMP_1, 1
- applymovement LOCALID_ATTENDANT_2, BattleFrontier_BattleTowerBattleRoom_Movement_SetInvisible
+ applymovement LOCALID_TOWER_BATTLE_ATTENDANT_2, BattleFrontier_BattleTowerBattleRoom_Movement_SetInvisible
end
BattleFrontier_BattleTowerBattleRoom_OnFrame:
@@ -22,13 +18,13 @@ BattleFrontier_BattleTowerBattleRoom_OnFrame:
BattleFrontier_BattleTowerBattleRoom_EventScript_EnterRoom::
setvar VAR_TEMP_0, 1
- applymovement OBJ_EVENT_ID_PLAYER, BattleFrontier_BattleTowerBattleRoom_Movement_PlayerEnter
+ applymovement LOCALID_PLAYER, BattleFrontier_BattleTowerBattleRoom_Movement_PlayerEnter
waitmovement 0
frontier_get FRONTIER_DATA_BATTLE_NUM
goto_if_eq VAR_RESULT, 0, BattleFrontier_BattleTowerBattleRoom_EventScript_OpponentEnter
- applymovement LOCALID_ATTENDANT_1, BattleFrontier_BattleTowerBattleRoom_Movement_AttendantApproachPlayer
+ applymovement LOCALID_TOWER_BATTLE_ATTENDANT_1, BattleFrontier_BattleTowerBattleRoom_Movement_AttendantApproachPlayer
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, BattleFrontier_BattleTowerBattleRoom_Movement_PlayerFaceAttendant
+ applymovement LOCALID_PLAYER, BattleFrontier_BattleTowerBattleRoom_Movement_PlayerFaceAttendant
waitmovement 0
setvar VAR_TEMP_2, 1
frontier_set FRONTIER_DATA_RECORD_DISABLED, TRUE
@@ -36,8 +32,8 @@ BattleFrontier_BattleTowerBattleRoom_EventScript_EnterRoom::
BattleFrontier_BattleTowerBattleRoom_EventScript_OpponentEnter::
tower_setopponent
- addobject LOCALID_OPPONENT
- applymovement LOCALID_OPPONENT, BattleFrontier_BattleTowerBattleRoom_Movement_OpponentEnter
+ addobject LOCALID_TOWER_BATTLE_OPPONENT
+ applymovement LOCALID_TOWER_BATTLE_OPPONENT, BattleFrontier_BattleTowerBattleRoom_Movement_OpponentEnter
waitmovement 0
tower_getopponentintro 0
msgbox gStringVar4, MSGBOX_DEFAULT
@@ -57,14 +53,14 @@ BattleFrontier_BattleTowerBattleRoom_EventScript_DefeatedOpponent::
tower_setbattlewon
switch VAR_RESULT
case 7, BattleFrontier_BattleTowerBattleRoom_EventScript_WarpToLobbyWon
- applymovement LOCALID_OPPONENT, BattleFrontier_BattleTowerBattleRoom_Movement_OpponentExit
+ applymovement LOCALID_TOWER_BATTLE_OPPONENT, BattleFrontier_BattleTowerBattleRoom_Movement_OpponentExit
waitmovement 0
- removeobject LOCALID_OPPONENT
+ removeobject LOCALID_TOWER_BATTLE_OPPONENT
frontier_getbrainstatus
call_if_ne VAR_RESULT, FRONTIER_BRAIN_NOT_READY, BattleFrontier_BattleTowerBattleRoom_EventScript_SecondAttendantEnter
- applymovement LOCALID_ATTENDANT_1, BattleFrontier_BattleTowerBattleRoom_Movement_AttendantApproachPlayer
+ applymovement LOCALID_TOWER_BATTLE_ATTENDANT_1, BattleFrontier_BattleTowerBattleRoom_Movement_AttendantApproachPlayer
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, BattleFrontier_BattleTowerBattleRoom_Movement_PlayerFaceAttendant
+ applymovement LOCALID_PLAYER, BattleFrontier_BattleTowerBattleRoom_Movement_PlayerFaceAttendant
waitmovement 0
msgbox BattleFrontier_BattleTowerBattleRoom_Text_RestoreMonsToFullHealth, MSGBOX_DEFAULT
playfanfare MUS_HEAL
@@ -125,9 +121,9 @@ BattleFrontier_BattleTowerBattleRoom_EventScript_AskRetireChallenge::
BattleFrontier_BattleTowerBattleRoom_EventScript_ContinueChallenge::
closemessage
- applymovement OBJ_EVENT_ID_PLAYER, BattleFrontier_BattleTowerBattleRoom_Movement_PlayerFaceBattle
+ applymovement LOCALID_PLAYER, BattleFrontier_BattleTowerBattleRoom_Movement_PlayerFaceBattle
waitmovement 0
- applymovement LOCALID_ATTENDANT_1, BattleFrontier_BattleTowerBattleRoom_Movement_AttendantReturnToPos
+ applymovement LOCALID_TOWER_BATTLE_ATTENDANT_1, BattleFrontier_BattleTowerBattleRoom_Movement_AttendantReturnToPos
waitmovement 0
goto BattleFrontier_BattleTowerBattleRoom_EventScript_OpponentEnter
@@ -193,19 +189,19 @@ BattleFrontier_EventScript_IncrementWinStreak::
return
BattleFrontier_BattleTowerBattleRoom_EventScript_SecondAttendantEnter::
- applymovement LOCALID_ATTENDANT_2, BattleFrontier_BattleTowerBattleRoom_Movement_SecondAttendantEnter
+ applymovement LOCALID_TOWER_BATTLE_ATTENDANT_2, BattleFrontier_BattleTowerBattleRoom_Movement_SecondAttendantEnter
waitmovement 0
- applymovement LOCALID_ATTENDANT_2, Common_Movement_WalkInPlaceLeft
+ applymovement LOCALID_TOWER_BATTLE_ATTENDANT_2, Common_Movement_WalkInPlaceLeft
waitmovement 0
playse SE_PIN
- applymovement LOCALID_ATTENDANT_1, Common_Movement_ExclamationMark
+ applymovement LOCALID_TOWER_BATTLE_ATTENDANT_1, Common_Movement_ExclamationMark
waitmovement 0
- applymovement LOCALID_ATTENDANT_1, Common_Movement_Delay48
+ applymovement LOCALID_TOWER_BATTLE_ATTENDANT_1, Common_Movement_Delay48
waitmovement 0
- applymovement LOCALID_ATTENDANT_2, BattleFrontier_BattleTowerBattleRoom_Movement_SecondAttendantDelay
- applymovement LOCALID_ATTENDANT_1, BattleFrontier_BattleTowerBattleRoom_Movement_AttendantFaceSecondAttendant
+ applymovement LOCALID_TOWER_BATTLE_ATTENDANT_2, BattleFrontier_BattleTowerBattleRoom_Movement_SecondAttendantDelay
+ applymovement LOCALID_TOWER_BATTLE_ATTENDANT_1, BattleFrontier_BattleTowerBattleRoom_Movement_AttendantFaceSecondAttendant
waitmovement 0
- applymovement LOCALID_ATTENDANT_2, BattleFrontier_BattleTowerBattleRoom_Movement_SecondAttendantExit
+ applymovement LOCALID_TOWER_BATTLE_ATTENDANT_2, BattleFrontier_BattleTowerBattleRoom_Movement_SecondAttendantExit
waitmovement 0
return
@@ -237,12 +233,12 @@ BattleFrontier_BattleTowerBattleRoom_EventScript_AskReadyForMaidenNoRecord::
BattleFrontier_BattleTowerBattleRoom_EventScript_BattleAnabel::
call BattleFrontier_EventScript_SetBrainObjectGfx
closemessage
- applymovement OBJ_EVENT_ID_PLAYER, BattleFrontier_BattleTowerBattleRoom_Movement_PlayerFaceBattle
+ applymovement LOCALID_PLAYER, BattleFrontier_BattleTowerBattleRoom_Movement_PlayerFaceBattle
waitmovement 0
- applymovement LOCALID_ATTENDANT_1, BattleFrontier_BattleTowerBattleRoom_Movement_AttendantReturnToPos
+ applymovement LOCALID_TOWER_BATTLE_ATTENDANT_1, BattleFrontier_BattleTowerBattleRoom_Movement_AttendantReturnToPos
waitmovement 0
- addobject LOCALID_OPPONENT
- applymovement LOCALID_OPPONENT, BattleFrontier_BattleTowerBattleRoom_Movement_AnabelEnter
+ addobject LOCALID_TOWER_BATTLE_OPPONENT
+ applymovement LOCALID_TOWER_BATTLE_OPPONENT, BattleFrontier_BattleTowerBattleRoom_Movement_AnabelEnter
waitmovement 0
switch VAR_TEMP_F
case FRONTIER_BRAIN_GOLD, BattleFrontier_BattleTowerBattleRoom_EventScript_AnabelGoldIntro
diff --git a/data/maps/BattleFrontier_BattleTowerCorridor/map.json b/data/maps/BattleFrontier_BattleTowerCorridor/map.json
index 10d5ca7f71..e521df1ca3 100644
--- a/data/maps/BattleFrontier_BattleTowerCorridor/map.json
+++ b/data/maps/BattleFrontier_BattleTowerCorridor/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_TOWER_CORRIDOR_ATTENDANT",
"graphics_id": "OBJ_EVENT_GFX_TEALA",
"x": 9,
"y": 2,
diff --git a/data/maps/BattleFrontier_BattleTowerCorridor/scripts.inc b/data/maps/BattleFrontier_BattleTowerCorridor/scripts.inc
index d0f3d487a8..9974510b1b 100644
--- a/data/maps/BattleFrontier_BattleTowerCorridor/scripts.inc
+++ b/data/maps/BattleFrontier_BattleTowerCorridor/scripts.inc
@@ -1,5 +1,3 @@
-.set LOCALID_ATTENDANT, 1
-
BattleFrontier_BattleTowerCorridor_MapScripts::
map_script MAP_SCRIPT_ON_LOAD, BattleFrontier_BattleTowerCorridor_OnLoad
map_script MAP_SCRIPT_ON_FRAME_TABLE, BattleFrontier_BattleTowerCorridor_OnFrame
@@ -23,14 +21,14 @@ BattleFrontier_BattleTowerCorridor_OnFrame:
BattleFrontier_BattleTowerCorridor_EventScript_EnterCorridor::
setvar VAR_TEMP_0, 1
goto_if_eq VAR_0x8006, 1, BattleFrontier_BattleTowerCorridor_EventScript_WalkToFarDoor
- applymovement LOCALID_ATTENDANT, BattleFrontier_BattleTowerCorridor_Movement_AttendantWalkToDoor
- applymovement OBJ_EVENT_ID_PLAYER, BattleFrontier_BattleTowerCorridor_Movement_PlayerWalkToDoor
+ applymovement LOCALID_TOWER_CORRIDOR_ATTENDANT, BattleFrontier_BattleTowerCorridor_Movement_AttendantWalkToDoor
+ applymovement LOCALID_PLAYER, BattleFrontier_BattleTowerCorridor_Movement_PlayerWalkToDoor
waitmovement 0
goto BattleFrontier_BattleTowerCorridor_EventScript_WarpToBattleRoom
BattleFrontier_BattleTowerCorridor_EventScript_WalkToFarDoor::
- applymovement LOCALID_ATTENDANT, BattleFrontier_BattleTowerCorridor_Movement_AttendantWalkToFarDoor
- applymovement OBJ_EVENT_ID_PLAYER, BattleFrontier_BattleTowerCorridor_Movement_PlayerWalkToFarDoor
+ applymovement LOCALID_TOWER_CORRIDOR_ATTENDANT, BattleFrontier_BattleTowerCorridor_Movement_AttendantWalkToFarDoor
+ applymovement LOCALID_PLAYER, BattleFrontier_BattleTowerCorridor_Movement_PlayerWalkToFarDoor
waitmovement 0
BattleFrontier_BattleTowerCorridor_EventScript_WarpToBattleRoom::
diff --git a/data/maps/BattleFrontier_BattleTowerElevator/map.json b/data/maps/BattleFrontier_BattleTowerElevator/map.json
index f74dce2336..d925ca2fc3 100644
--- a/data/maps/BattleFrontier_BattleTowerElevator/map.json
+++ b/data/maps/BattleFrontier_BattleTowerElevator/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_TOWER_ELEVATOR_ATTENDANT",
"graphics_id": "OBJ_EVENT_GFX_TEALA",
"x": 1,
"y": 5,
diff --git a/data/maps/BattleFrontier_BattleTowerElevator/scripts.inc b/data/maps/BattleFrontier_BattleTowerElevator/scripts.inc
index 06f4ff0a70..a26376eebe 100644
--- a/data/maps/BattleFrontier_BattleTowerElevator/scripts.inc
+++ b/data/maps/BattleFrontier_BattleTowerElevator/scripts.inc
@@ -1,5 +1,3 @@
-.set LOCALID_ATTENDANT, 1
-
BattleFrontier_BattleTowerElevator_MapScripts::
map_script MAP_SCRIPT_ON_FRAME_TABLE, BattleFrontier_BattleTowerElevator_OnFrame
map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, BattleFrontier_BattleTowerElevator_OnWarp
@@ -11,16 +9,16 @@ BattleFrontier_BattleTowerElevator_OnFrame:
BattleFrontier_BattleTowerElevator_EventScript_EnterElevator::
setvar VAR_TEMP_0, 1
- applymovement LOCALID_ATTENDANT, BattleFrontier_BattleTowerElevator_Movement_AttendantEnter
- applymovement OBJ_EVENT_ID_PLAYER, BattleFrontier_BattleTowerElevator_Movement_PlayerEnter
+ applymovement LOCALID_TOWER_ELEVATOR_ATTENDANT, BattleFrontier_BattleTowerElevator_Movement_AttendantEnter
+ applymovement LOCALID_PLAYER, BattleFrontier_BattleTowerElevator_Movement_PlayerEnter
waitmovement 0
special BufferBattleTowerElevatorFloors
waitse
special MoveElevator
waitstate
delay 48
- applymovement LOCALID_ATTENDANT, BattleFrontier_BattleTowerElevator_Movement_AttendantExit
- applymovement OBJ_EVENT_ID_PLAYER, BattleFrontier_BattleTowerElevator_Movement_PlayerExit
+ applymovement LOCALID_TOWER_ELEVATOR_ATTENDANT, BattleFrontier_BattleTowerElevator_Movement_AttendantExit
+ applymovement LOCALID_PLAYER, BattleFrontier_BattleTowerElevator_Movement_PlayerExit
waitmovement 0
call BattleFrontier_BattleTowerElevator_EventScript_WarpToNextRoom
end
@@ -83,6 +81,6 @@ BattleFrontier_BattleTowerElevator_OnWarp:
BattleFrontier_BattleTowerElevator_EventScript_TurnPlayerNorth::
setvar VAR_TEMP_1, 1
- turnobject OBJ_EVENT_ID_PLAYER, DIR_NORTH
+ turnobject LOCALID_PLAYER, DIR_NORTH
end
diff --git a/data/maps/BattleFrontier_BattleTowerLobby/map.json b/data/maps/BattleFrontier_BattleTowerLobby/map.json
index d672f07189..b5c95b22bf 100644
--- a/data/maps/BattleFrontier_BattleTowerLobby/map.json
+++ b/data/maps/BattleFrontier_BattleTowerLobby/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_TOWER_ATTENDANT_SINGLES",
"graphics_id": "OBJ_EVENT_GFX_TEALA",
"x": 6,
"y": 5,
@@ -67,6 +68,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_TOWER_LOBBY_REPORTER",
"graphics_id": "OBJ_EVENT_GFX_REPORTER_F",
"x": 11,
"y": 9,
@@ -80,6 +82,7 @@
"flag": "FLAG_HIDE_BATTLE_TOWER_REPORTER"
},
{
+ "local_id": "LOCALID_APPRENTICE",
"graphics_id": "OBJ_EVENT_GFX_VAR_0",
"x": 1,
"y": 5,
@@ -93,6 +96,7 @@
"flag": "FLAG_HIDE_APPRENTICE"
},
{
+ "local_id": "LOCALID_TOWER_ATTENDANT_DOUBLES",
"graphics_id": "OBJ_EVENT_GFX_TEALA",
"x": 10,
"y": 5,
@@ -106,6 +110,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_TOWER_ATTENDANT_MULTIS",
"graphics_id": "OBJ_EVENT_GFX_TEALA",
"x": 14,
"y": 5,
@@ -119,6 +124,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_TOWER_ATTENDANT_LINK_MULTIS",
"graphics_id": "OBJ_EVENT_GFX_TEALA",
"x": 18,
"y": 5,
diff --git a/data/maps/BattleFrontier_BattleTowerLobby/scripts.inc b/data/maps/BattleFrontier_BattleTowerLobby/scripts.inc
index d18e2629a1..945335f7b7 100644
--- a/data/maps/BattleFrontier_BattleTowerLobby/scripts.inc
+++ b/data/maps/BattleFrontier_BattleTowerLobby/scripts.inc
@@ -1,10 +1,3 @@
-.set LOCALID_ATTENDANT_SINGLES, 1
-.set LOCALID_ATTENDANT_DOUBLES, 7
-.set LOCALID_ATTENDANT_MULTIS, 8
-.set LOCALID_ATTENDANT_LINK_MULTIS, 9
-
-@ Note: LOCALID_BATTLE_TOWER_LOBBY_REPORTER is a local id for this map used elsewhere. It's defined in event_objects.h
-
BattleFrontier_BattleTowerLobby_MapScripts::
map_script MAP_SCRIPT_ON_RESUME, BattleFrontier_BattleTowerLobby_OnResume
map_script MAP_SCRIPT_ON_TRANSITION, BattleFrontier_BattleTowerLobby_OnTransition
@@ -37,7 +30,7 @@ BattleFrontier_BattleTowerLobby_OnWarp:
BattleFrontier_BattleTowerLobby_EventScript_PlayerFaceNorth::
setvar VAR_TEMP_1, 1
- turnobject OBJ_EVENT_ID_PLAYER, DIR_NORTH
+ turnobject LOCALID_PLAYER, DIR_NORTH
end
BattleFrontier_BattleTowerLobby_OnFrame:
@@ -628,12 +621,12 @@ BattleFrontier_BattleTowerLobby_EventScript_WalkToElevator::
call BattleFrontier_BattleTowerLobby_EventScript_SetAttendantTalkedTo
call BattleFrontier_BattleTowerLobby_EventScript_GetDoorXCoord
applymovement VAR_LAST_TALKED, BattleFrontier_BattleTowerLobby_Movement_WalkToElevator
- applymovement OBJ_EVENT_ID_PLAYER, BattleFrontier_BattleTowerLobby_Movement_WalkToElevator
+ applymovement LOCALID_PLAYER, BattleFrontier_BattleTowerLobby_Movement_WalkToElevator
waitmovement 0
opendoor VAR_0x8004, 1
waitdooranim
applymovement VAR_LAST_TALKED, BattleFrontier_BattleTowerLobby_Movement_AttendantEnterElevator
- applymovement OBJ_EVENT_ID_PLAYER, BattleFrontier_BattleTowerLobby_Movement_PlayerEnterElevator
+ applymovement LOCALID_PLAYER, BattleFrontier_BattleTowerLobby_Movement_PlayerEnterElevator
waitmovement 0
closedoor VAR_0x8004, 1
waitdooranim
@@ -697,19 +690,19 @@ BattleFrontier_BattleTowerLobby_EventScript_SetAttendantTalkedTo::
return
BattleFrontier_BattleTowerLobby_EventScript_TalkedToSinglesAttendant::
- setvar VAR_LAST_TALKED, LOCALID_ATTENDANT_SINGLES
+ setvar VAR_LAST_TALKED, LOCALID_TOWER_ATTENDANT_SINGLES
return
BattleFrontier_BattleTowerLobby_EventScript_TalkedToDoublesAttendant::
- setvar VAR_LAST_TALKED, LOCALID_ATTENDANT_DOUBLES
+ setvar VAR_LAST_TALKED, LOCALID_TOWER_ATTENDANT_DOUBLES
return
BattleFrontier_BattleTowerLobby_EventScript_TalkedToMultisAttendant::
- setvar VAR_LAST_TALKED, LOCALID_ATTENDANT_MULTIS
+ setvar VAR_LAST_TALKED, LOCALID_TOWER_ATTENDANT_MULTIS
return
BattleFrontier_BattleTowerLobby_EventScript_TalkedToLinkMultisAttendant::
- setvar VAR_LAST_TALKED, LOCALID_ATTENDANT_LINK_MULTIS
+ setvar VAR_LAST_TALKED, LOCALID_TOWER_ATTENDANT_LINK_MULTIS
return
BattleFrontier_BattleTowerLobby_EventScript_GetDoorXCoord::
diff --git a/data/maps/BattleFrontier_BattleTowerMultiBattleRoom/map.json b/data/maps/BattleFrontier_BattleTowerMultiBattleRoom/map.json
index e48bcefd1b..eebfd53c47 100644
--- a/data/maps/BattleFrontier_BattleTowerMultiBattleRoom/map.json
+++ b/data/maps/BattleFrontier_BattleTowerMultiBattleRoom/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_TOWER_MULTI_BATTLE_OPPONENT_1",
"graphics_id": "OBJ_EVENT_GFX_VAR_0",
"x": 5,
"y": 1,
@@ -28,6 +29,7 @@
"flag": "FLAG_HIDE_BATTLE_TOWER_OPPONENT"
},
{
+ "local_id": "LOCALID_TOWER_MULTI_BATTLE_ATTENDANT_1",
"graphics_id": "OBJ_EVENT_GFX_TEALA",
"x": 1,
"y": 4,
@@ -41,6 +43,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_TOWER_MULTI_BATTLE_ATTENDANT_2",
"graphics_id": "OBJ_EVENT_GFX_TEALA",
"x": 1,
"y": 5,
@@ -54,6 +57,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_TOWER_MULTI_BATTLE_OPPONENT_2",
"graphics_id": "OBJ_EVENT_GFX_VAR_1",
"x": 4,
"y": 1,
@@ -67,6 +71,7 @@
"flag": "FLAG_HIDE_BATTLE_TOWER_OPPONENT"
},
{
+ "local_id": "LOCALID_TOWER_MULTI_BATTLE_PLAYER",
"graphics_id": "OBJ_EVENT_GFX_VAR_F",
"x": 4,
"y": 8,
@@ -80,6 +85,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_TOWER_MULTI_BATTLE_PARTNER",
"graphics_id": "OBJ_EVENT_GFX_VAR_E",
"x": 5,
"y": 8,
diff --git a/data/maps/BattleFrontier_BattleTowerMultiBattleRoom/scripts.inc b/data/maps/BattleFrontier_BattleTowerMultiBattleRoom/scripts.inc
index e1cb64dda0..bc5dda9fff 100644
--- a/data/maps/BattleFrontier_BattleTowerMultiBattleRoom/scripts.inc
+++ b/data/maps/BattleFrontier_BattleTowerMultiBattleRoom/scripts.inc
@@ -1,9 +1,8 @@
-.set LOCALID_OPPONENT_1, 1
-.set LOCALID_ATTENDANT_1, 2
-.set LOCALID_ATTENDANT_2, 3
-.set LOCALID_OPPONENT_2, 4
-.set LOCALID_PLAYER, 5
-.set LOCALID_PARTNER, 6
+@ On this map the player will automatically walk into the room, but the camera is supposed to remain still.
+@ To do this GF sets the player (LOCALID_PLAYER) invisible and creates a fake player object (LOCALID_TOWER_MULTI_BATTLE_PLAYER).
+@ The graphics of this fake player object are represented with VAR_OBJ_GFX_ID_F.
+@ The graphics of the partner are represented with VAR_OBJ_GFX_ID_E, which will ultimately be set by tower_setpartnergfx.
+@ The graphics of the opponents are represented with VAR_OBJ_GFX_ID_0 and OBJ_EVENT_GFX_VAR_1, which will ultimately be set by tower_setopponent.
BattleFrontier_BattleTowerMultiBattleRoom_MapScripts::
map_script MAP_SCRIPT_ON_TRANSITION, BattleFrontier_BattleTowerMultiBattleRoom_OnTransition
@@ -11,10 +10,6 @@ BattleFrontier_BattleTowerMultiBattleRoom_MapScripts::
map_script MAP_SCRIPT_ON_FRAME_TABLE, BattleFrontier_BattleTowerMultiBattleRoom_OnFrame
.byte 0
- @ On this map the player (OBJ_EVENT_ID_PLAYER) is hidden
- @ The player is represented instead by LOCALID_PLAYER, which has the gfx id VAR_OBJ_GFX_ID_F
- @ The multi partner is represented by LOCALID_PARTNER, which has the gfx id VAR_OBJ_GFX_ID_E
-
BattleFrontier_BattleTowerMultiBattleRoom_OnTransition:
call_if_eq VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_MULTIS, BattleFrontier_BattleTowerMultiBattleRoom_EventScript_SetObjGfx
call_if_eq VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_LINK_MULTIS, BattleFrontier_BattleTowerMultiBattleRoom_EventScript_SetLinkPlayerGfx
@@ -40,7 +35,7 @@ BattleFrontier_BattleTowerMultiBattleRoom_OnWarp:
.2byte 0
BattleFrontier_BattleTowerMultiBattleRoom_EventScript_HidePlayerObj::
- hideobjectat OBJ_EVENT_ID_PLAYER, MAP_BATTLE_FRONTIER_BATTLE_TOWER_MULTI_BATTLE_ROOM
+ hideobjectat LOCALID_PLAYER, MAP_BATTLE_FRONTIER_BATTLE_TOWER_MULTI_BATTLE_ROOM
end
BattleFrontier_BattleTowerMultiBattleRoom_OnFrame:
@@ -49,36 +44,36 @@ BattleFrontier_BattleTowerMultiBattleRoom_OnFrame:
BattleFrontier_BattleTowerMultiBattleRoom_EventScript_EnterRoom::
setvar VAR_TEMP_0, 1
- applymovement LOCALID_PLAYER, BattleFrontier_BattleTowerMultiBattleRoom_Movement_PlayerEnterRoom
- applymovement LOCALID_PARTNER, BattleFrontier_BattleTowerMultiBattleRoom_Movement_PartnerEnterRoom
+ applymovement LOCALID_TOWER_MULTI_BATTLE_PLAYER, BattleFrontier_BattleTowerMultiBattleRoom_Movement_PlayerEnterRoom
+ applymovement LOCALID_TOWER_MULTI_BATTLE_PARTNER, BattleFrontier_BattleTowerMultiBattleRoom_Movement_PartnerEnterRoom
waitmovement 0
frontier_get FRONTIER_DATA_BATTLE_NUM
goto_if_eq VAR_RESULT, 0, BattleFrontier_BattleTowerMultiBattleRoom_EventScript_OpponentsEnter
- applymovement LOCALID_ATTENDANT_1, BattleFrontier_BattleTowerMultiBattleRoom_Movement_AttendantApproachPlayer
- applymovement LOCALID_ATTENDANT_2, BattleFrontier_BattleTowerMultiBattleRoom_Movement_AttendantApproachPlayer
+ applymovement LOCALID_TOWER_MULTI_BATTLE_ATTENDANT_1, BattleFrontier_BattleTowerMultiBattleRoom_Movement_AttendantApproachPlayer
+ applymovement LOCALID_TOWER_MULTI_BATTLE_ATTENDANT_2, BattleFrontier_BattleTowerMultiBattleRoom_Movement_AttendantApproachPlayer
waitmovement 0
- applymovement LOCALID_PLAYER, BattleFrontier_BattleTowerMultiBattleRoom_Movement_FaceAttendant
- applymovement LOCALID_PARTNER, BattleFrontier_BattleTowerMultiBattleRoom_Movement_FaceAttendant
+ applymovement LOCALID_TOWER_MULTI_BATTLE_PLAYER, BattleFrontier_BattleTowerMultiBattleRoom_Movement_FaceAttendant
+ applymovement LOCALID_TOWER_MULTI_BATTLE_PARTNER, BattleFrontier_BattleTowerMultiBattleRoom_Movement_FaceAttendant
waitmovement 0
frontier_set FRONTIER_DATA_RECORD_DISABLED, TRUE
goto BattleFrontier_BattleTowerMultiBattleRoom_EventScript_AskReadyForOpponents
BattleFrontier_BattleTowerMultiBattleRoom_EventScript_OpponentsEnter::
tower_setopponent
- addobject LOCALID_OPPONENT_1
- addobject LOCALID_OPPONENT_2
- applymovement LOCALID_OPPONENT_1, BattleFrontier_BattleTowerMultiBattleRoom_Movement_Opponent1Enter
- applymovement LOCALID_OPPONENT_2, BattleFrontier_BattleTowerMultiBattleRoom_Movement_Opponent2Enter
+ addobject LOCALID_TOWER_MULTI_BATTLE_OPPONENT_1
+ addobject LOCALID_TOWER_MULTI_BATTLE_OPPONENT_2
+ applymovement LOCALID_TOWER_MULTI_BATTLE_OPPONENT_1, BattleFrontier_BattleTowerMultiBattleRoom_Movement_Opponent1Enter
+ applymovement LOCALID_TOWER_MULTI_BATTLE_OPPONENT_2, BattleFrontier_BattleTowerMultiBattleRoom_Movement_Opponent2Enter
waitmovement 0
goto_if_eq VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_LINK_MULTIS, BattleFrontier_BattleTowerMultiBattleRoom_EventScript_DoOpponentIntrosLink
tower_getopponentintro 0
delay 15
- applymovement LOCALID_OPPONENT_1, BattleFrontier_BattleTowerMultiBattleRoom_Movement_WalkInPlaceLeft
+ applymovement LOCALID_TOWER_MULTI_BATTLE_OPPONENT_1, BattleFrontier_BattleTowerMultiBattleRoom_Movement_WalkInPlaceLeft
waitmovement 0
msgbox gStringVar4, MSGBOX_DEFAULT
waitmessage
tower_getopponentintro 1
- applymovement LOCALID_OPPONENT_2, BattleFrontier_BattleTowerMultiBattleRoom_Movement_WalkInPlaceLeft
+ applymovement LOCALID_TOWER_MULTI_BATTLE_OPPONENT_2, BattleFrontier_BattleTowerMultiBattleRoom_Movement_WalkInPlaceLeft
waitmovement 0
msgbox gStringVar4, MSGBOX_DEFAULT
waitmessage
@@ -87,13 +82,13 @@ BattleFrontier_BattleTowerMultiBattleRoom_EventScript_OpponentsEnter::
BattleFrontier_BattleTowerMultiBattleRoom_EventScript_DoOpponentIntrosLink::
tower_getopponentintro 0
delay 15
- applymovement LOCALID_OPPONENT_1, BattleFrontier_BattleTowerMultiBattleRoom_Movement_WalkInPlaceLeft
+ applymovement LOCALID_TOWER_MULTI_BATTLE_OPPONENT_1, BattleFrontier_BattleTowerMultiBattleRoom_Movement_WalkInPlaceLeft
waitmovement 0
messageautoscroll gStringVar4
waitmessage
delay 48
tower_getopponentintro 1
- applymovement LOCALID_OPPONENT_2, BattleFrontier_BattleTowerMultiBattleRoom_Movement_WalkInPlaceLeft
+ applymovement LOCALID_TOWER_MULTI_BATTLE_OPPONENT_2, BattleFrontier_BattleTowerMultiBattleRoom_Movement_WalkInPlaceLeft
waitmovement 0
messageautoscroll gStringVar4
waitmessage
@@ -114,16 +109,16 @@ BattleFrontier_BattleTowerMultiBattleRoom_EventScript_DefeatedOpponents::
tower_setbattlewon
switch VAR_RESULT
case 7, BattleFrontier_BattleTowerMultiBattleRoom_EventScript_WarpToLobbyWon
- applymovement LOCALID_OPPONENT_2, BattleFrontier_BattleTowerMultiBattleRoom_Movement_Opponent2Exit
- applymovement LOCALID_OPPONENT_1, BattleFrontier_BattleTowerMultiBattleRoom_Movement_Opponent1Exit
+ applymovement LOCALID_TOWER_MULTI_BATTLE_OPPONENT_2, BattleFrontier_BattleTowerMultiBattleRoom_Movement_Opponent2Exit
+ applymovement LOCALID_TOWER_MULTI_BATTLE_OPPONENT_1, BattleFrontier_BattleTowerMultiBattleRoom_Movement_Opponent1Exit
waitmovement 0
- removeobject LOCALID_OPPONENT_1
- removeobject LOCALID_OPPONENT_2
- applymovement LOCALID_ATTENDANT_1, BattleFrontier_BattleTowerMultiBattleRoom_Movement_AttendantApproachPlayer
- applymovement LOCALID_ATTENDANT_2, BattleFrontier_BattleTowerMultiBattleRoom_Movement_AttendantApproachPlayer
+ removeobject LOCALID_TOWER_MULTI_BATTLE_OPPONENT_1
+ removeobject LOCALID_TOWER_MULTI_BATTLE_OPPONENT_2
+ applymovement LOCALID_TOWER_MULTI_BATTLE_ATTENDANT_1, BattleFrontier_BattleTowerMultiBattleRoom_Movement_AttendantApproachPlayer
+ applymovement LOCALID_TOWER_MULTI_BATTLE_ATTENDANT_2, BattleFrontier_BattleTowerMultiBattleRoom_Movement_AttendantApproachPlayer
waitmovement 0
- applymovement LOCALID_PLAYER, BattleFrontier_BattleTowerMultiBattleRoom_Movement_FaceAttendant
- applymovement LOCALID_PARTNER, BattleFrontier_BattleTowerMultiBattleRoom_Movement_FaceAttendant
+ applymovement LOCALID_TOWER_MULTI_BATTLE_PLAYER, BattleFrontier_BattleTowerMultiBattleRoom_Movement_FaceAttendant
+ applymovement LOCALID_TOWER_MULTI_BATTLE_PARTNER, BattleFrontier_BattleTowerMultiBattleRoom_Movement_FaceAttendant
waitmovement 0
goto_if_eq VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_LINK_MULTIS, BattleFrontier_BattleTowerMultiBattleRoom_EventScript_RetorePartyMsgLink
msgbox BattleFrontier_BattleTowerBattleRoom_Text_RestoreMonsToFullHealth, MSGBOX_DEFAULT
@@ -194,11 +189,11 @@ BattleFrontier_BattleTowerMultiBattleRoom_EventScript_AskRetireChallenge::
BattleFrontier_BattleTowerMultiBattleRoom_EventScript_ContinueChallenge::
closemessage
clearflag FLAG_TEMP_2
- applymovement LOCALID_PLAYER, BattleFrontier_BattleTowerMultiBattleRoom_Movement_FaceBattle
- applymovement LOCALID_PARTNER, BattleFrontier_BattleTowerMultiBattleRoom_Movement_FaceBattle
+ applymovement LOCALID_TOWER_MULTI_BATTLE_PLAYER, BattleFrontier_BattleTowerMultiBattleRoom_Movement_FaceBattle
+ applymovement LOCALID_TOWER_MULTI_BATTLE_PARTNER, BattleFrontier_BattleTowerMultiBattleRoom_Movement_FaceBattle
waitmovement 0
- applymovement LOCALID_ATTENDANT_1, BattleFrontier_BattleTowerMultiBattleRoom_Movement_AttendantReturnToPos
- applymovement LOCALID_ATTENDANT_2, BattleFrontier_BattleTowerMultiBattleRoom_Movement_AttendantReturnToPos
+ applymovement LOCALID_TOWER_MULTI_BATTLE_ATTENDANT_1, BattleFrontier_BattleTowerMultiBattleRoom_Movement_AttendantReturnToPos
+ applymovement LOCALID_TOWER_MULTI_BATTLE_ATTENDANT_2, BattleFrontier_BattleTowerMultiBattleRoom_Movement_AttendantReturnToPos
waitmovement 0
goto BattleFrontier_BattleTowerMultiBattleRoom_EventScript_OpponentsEnter
end
diff --git a/data/maps/BattleFrontier_BattleTowerMultiCorridor/map.json b/data/maps/BattleFrontier_BattleTowerMultiCorridor/map.json
index 36b4ecd46e..51d962dbe8 100644
--- a/data/maps/BattleFrontier_BattleTowerMultiCorridor/map.json
+++ b/data/maps/BattleFrontier_BattleTowerMultiCorridor/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_TOWER_MULTI_CORRIDOR_PLAYER",
"graphics_id": "OBJ_EVENT_GFX_VAR_F",
"x": 1,
"y": 1,
@@ -28,6 +29,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_TOWER_MULTI_CORRIDOR_ATTENDANT_1",
"graphics_id": "OBJ_EVENT_GFX_TEALA",
"x": 14,
"y": 3,
@@ -41,6 +43,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_TOWER_MULTI_CORRIDOR_ATTENDANT_2",
"graphics_id": "OBJ_EVENT_GFX_TEALA",
"x": 1,
"y": 3,
@@ -54,6 +57,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_TOWER_MULTI_CORRIDOR_PARTNER",
"graphics_id": "OBJ_EVENT_GFX_VAR_E",
"x": 14,
"y": 1,
diff --git a/data/maps/BattleFrontier_BattleTowerMultiCorridor/scripts.inc b/data/maps/BattleFrontier_BattleTowerMultiCorridor/scripts.inc
index b36d2e6fd3..57dcd82d25 100644
--- a/data/maps/BattleFrontier_BattleTowerMultiCorridor/scripts.inc
+++ b/data/maps/BattleFrontier_BattleTowerMultiCorridor/scripts.inc
@@ -1,7 +1,7 @@
-.set LOCALID_PLAYER, 1
-.set LOCALID_ATTENDANT_1, 2
-.set LOCALID_ATTENDANT_2, 3
-.set LOCALID_PARTNER, 4
+@ On this map the player will automatically walk into the room, but the camera is supposed to remain still.
+@ To do this GF sets the player (LOCALID_PLAYER) invisible and creates a fake player object (LOCALID_TOWER_MULTI_CORRIDOR_PLAYER).
+@ The graphics of this fake player object are represented with VAR_OBJ_GFX_ID_F.
+@ The graphics of the partner are represented with VAR_OBJ_GFX_ID_E, which will ultimately be set by tower_setpartnergfx.
BattleFrontier_BattleTowerMultiCorridor_MapScripts::
map_script MAP_SCRIPT_ON_TRANSITION, BattleFrontier_BattleTowerMultiCorridor_OnTransition
@@ -9,10 +9,6 @@ BattleFrontier_BattleTowerMultiCorridor_MapScripts::
map_script MAP_SCRIPT_ON_FRAME_TABLE, BattleFrontier_BattleTowerMultiCorridor_OnFrame
.byte 0
- @ On this map the player (OBJ_EVENT_ID_PLAYER) is hidden
- @ The player is represented instead by LOCALID_PLAYER, and has the gfx id VAR_OBJ_GFX_ID_F
- @ The multi partner is represented by LOCALID_PARTNER, and has the gfx id VAR_OBJ_GFX_ID_E
-
BattleFrontier_BattleTowerMultiCorridor_OnTransition:
call_if_eq VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_MULTIS, BattleFrontier_BattleTowerMultiCorridor_EventScript_SetObjGfx
call_if_eq VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_LINK_MULTIS, BattleFrontier_BattleTowerMultiCorridor_EventScript_SetLinkPlayerGfx
@@ -38,9 +34,9 @@ BattleFrontier_BattleTowerMultiCorridor_OnWarp:
.2byte 0
BattleFrontier_BattleTowerMultiCorridor_EventScript_SetUpObjects::
- hideobjectat OBJ_EVENT_ID_PLAYER, MAP_BATTLE_FRONTIER_BATTLE_TOWER_MULTI_CORRIDOR
hideobjectat LOCALID_PLAYER, MAP_BATTLE_FRONTIER_BATTLE_TOWER_MULTI_CORRIDOR
- hideobjectat LOCALID_PARTNER, MAP_BATTLE_FRONTIER_BATTLE_TOWER_MULTI_CORRIDOR
+ hideobjectat LOCALID_TOWER_MULTI_CORRIDOR_PLAYER, MAP_BATTLE_FRONTIER_BATTLE_TOWER_MULTI_CORRIDOR
+ hideobjectat LOCALID_TOWER_MULTI_CORRIDOR_PARTNER, MAP_BATTLE_FRONTIER_BATTLE_TOWER_MULTI_CORRIDOR
special OffsetCameraForBattle
end
@@ -56,10 +52,10 @@ BattleFrontier_BattleTowerMultiCorridor_EventScript_EnterCorridor::
opendoor 1, 1
waitdooranim
clearflag FLAG_ENABLE_MULTI_CORRIDOR_DOOR
- showobjectat LOCALID_PLAYER, MAP_BATTLE_FRONTIER_BATTLE_TOWER_MULTI_CORRIDOR
- showobjectat LOCALID_PARTNER, MAP_BATTLE_FRONTIER_BATTLE_TOWER_MULTI_CORRIDOR
- applymovement LOCALID_PLAYER, BattleFrontier_BattleTowerMultiCorridor_Movement_ExitElevator
- applymovement LOCALID_PARTNER, BattleFrontier_BattleTowerMultiCorridor_Movement_ExitElevator
+ showobjectat LOCALID_TOWER_MULTI_CORRIDOR_PLAYER, MAP_BATTLE_FRONTIER_BATTLE_TOWER_MULTI_CORRIDOR
+ showobjectat LOCALID_TOWER_MULTI_CORRIDOR_PARTNER, MAP_BATTLE_FRONTIER_BATTLE_TOWER_MULTI_CORRIDOR
+ applymovement LOCALID_TOWER_MULTI_CORRIDOR_PLAYER, BattleFrontier_BattleTowerMultiCorridor_Movement_ExitElevator
+ applymovement LOCALID_TOWER_MULTI_CORRIDOR_PARTNER, BattleFrontier_BattleTowerMultiCorridor_Movement_ExitElevator
waitmovement 0
setflag FLAG_ENABLE_MULTI_CORRIDOR_DOOR
setvar VAR_0x8004, 14 @ x coord of far door, used by DrawDoor
@@ -67,21 +63,21 @@ BattleFrontier_BattleTowerMultiCorridor_EventScript_EnterCorridor::
closedoor 1, 1
waitdooranim
clearflag FLAG_ENABLE_MULTI_CORRIDOR_DOOR
- applymovement LOCALID_PLAYER, BattleFrontier_BattleTowerMultiCorridor_Movement_PlayerWalkToDoor
- applymovement LOCALID_PARTNER, BattleFrontier_BattleTowerMultiCorridor_Movement_PartnerWalkToDoor
- applymovement LOCALID_ATTENDANT_2, BattleFrontier_BattleTowerMultiCorridor_Movement_PlayerAttendantWalkToDoor
- applymovement LOCALID_ATTENDANT_1, BattleFrontier_BattleTowerMultiCorridor_Movement_PartnerAttendantWalkToDoor
+ applymovement LOCALID_TOWER_MULTI_CORRIDOR_PLAYER, BattleFrontier_BattleTowerMultiCorridor_Movement_PlayerWalkToDoor
+ applymovement LOCALID_TOWER_MULTI_CORRIDOR_PARTNER, BattleFrontier_BattleTowerMultiCorridor_Movement_PartnerWalkToDoor
+ applymovement LOCALID_TOWER_MULTI_CORRIDOR_ATTENDANT_2, BattleFrontier_BattleTowerMultiCorridor_Movement_PlayerAttendantWalkToDoor
+ applymovement LOCALID_TOWER_MULTI_CORRIDOR_ATTENDANT_1, BattleFrontier_BattleTowerMultiCorridor_Movement_PartnerAttendantWalkToDoor
waitmovement 0
delay 40
- applymovement LOCALID_ATTENDANT_2, Common_Movement_WalkInPlaceFasterUp
- applymovement LOCALID_ATTENDANT_1, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_TOWER_MULTI_CORRIDOR_ATTENDANT_2, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_TOWER_MULTI_CORRIDOR_ATTENDANT_1, Common_Movement_WalkInPlaceFasterUp
waitmovement 0
opendoor 7, 1
waitdooranim
- applymovement LOCALID_ATTENDANT_2, BattleFrontier_BattleTowerMultiCorridor_Movement_AttendantEnterDoor
- applymovement LOCALID_ATTENDANT_1, BattleFrontier_BattleTowerMultiCorridor_Movement_AttendantEnterDoor
- applymovement LOCALID_PLAYER, BattleFrontier_BattleTowerMultiCorridor_Movement_TrainerEnterDoor
- applymovement LOCALID_PARTNER, BattleFrontier_BattleTowerMultiCorridor_Movement_TrainerEnterDoor
+ applymovement LOCALID_TOWER_MULTI_CORRIDOR_ATTENDANT_2, BattleFrontier_BattleTowerMultiCorridor_Movement_AttendantEnterDoor
+ applymovement LOCALID_TOWER_MULTI_CORRIDOR_ATTENDANT_1, BattleFrontier_BattleTowerMultiCorridor_Movement_AttendantEnterDoor
+ applymovement LOCALID_TOWER_MULTI_CORRIDOR_PLAYER, BattleFrontier_BattleTowerMultiCorridor_Movement_TrainerEnterDoor
+ applymovement LOCALID_TOWER_MULTI_CORRIDOR_PARTNER, BattleFrontier_BattleTowerMultiCorridor_Movement_TrainerEnterDoor
waitmovement 0
closedoor 7, 1
waitdooranim
diff --git a/data/maps/BattleFrontier_BattleTowerMultiPartnerRoom/map.json b/data/maps/BattleFrontier_BattleTowerMultiPartnerRoom/map.json
index c48458344f..687099d560 100644
--- a/data/maps/BattleFrontier_BattleTowerMultiPartnerRoom/map.json
+++ b/data/maps/BattleFrontier_BattleTowerMultiPartnerRoom/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_TOWER_PARTNER_ROOM_ATTENDANT",
"graphics_id": "OBJ_EVENT_GFX_TEALA",
"x": 11,
"y": 2,
diff --git a/data/maps/BattleFrontier_BattleTowerMultiPartnerRoom/scripts.inc b/data/maps/BattleFrontier_BattleTowerMultiPartnerRoom/scripts.inc
index b9fc7d5543..6cd428c8ed 100644
--- a/data/maps/BattleFrontier_BattleTowerMultiPartnerRoom/scripts.inc
+++ b/data/maps/BattleFrontier_BattleTowerMultiPartnerRoom/scripts.inc
@@ -1,5 +1,3 @@
-.set LOCALID_ATTENDANT, 1
-
BattleFrontier_BattleTowerMultiPartnerRoom_MapScripts::
map_script MAP_SCRIPT_ON_RESUME, BattleFrontier_BattleTowerMultiPartnerRoom_OnResume
map_script MAP_SCRIPT_ON_TRANSITION, BattleFrontier_BattleTowerMultiPartnerRoom_OnTransition
@@ -35,7 +33,7 @@ BattleFrontier_BattleTowerMultiPartnerRoom_EventScript_ChosePartner::
setvar VAR_OBJ_GFX_ID_7, OBJ_EVENT_GFX_BOY_1
setvar VAR_TEMP_1, 1
setvar VAR_TEMP_3, 1
- setobjectxyperm LOCALID_ATTENDANT, 10, 2
+ setobjectxyperm LOCALID_TOWER_PARTNER_ROOM_ATTENDANT, 10, 2
end
BattleFrontier_BattleTowerMultiPartnerRoom_OnWarp:
@@ -43,7 +41,7 @@ BattleFrontier_BattleTowerMultiPartnerRoom_OnWarp:
.2byte 0
BattleFrontier_BattleTowerMultiPartnerRoom_EventScript_TurnPlayerNorth::
- turnobject OBJ_EVENT_ID_PLAYER, DIR_NORTH
+ turnobject LOCALID_PLAYER, DIR_NORTH
end
BattleFrontier_BattleTowerMultiPartnerRoom_OnFrame:
@@ -59,12 +57,12 @@ BattleFrontier_BattleTowerMultiPartnerRoom_EventScript_ExitRoom::
BattleFrontier_BattleTowerMultiPartnerRoom_EventScript_EnterRoom::
lockall
- applymovement OBJ_EVENT_ID_PLAYER, BattleFrontier_BattleTowerMultiPartnerRoom_Movement_PlayerEnterRoom
+ applymovement LOCALID_PLAYER, BattleFrontier_BattleTowerMultiPartnerRoom_Movement_PlayerEnterRoom
waitmovement 0
- applymovement LOCALID_ATTENDANT, BattleFrontier_BattleTowerMultiPartnerRoom_Movement_AttendantBlockExit
+ applymovement LOCALID_TOWER_PARTNER_ROOM_ATTENDANT, BattleFrontier_BattleTowerMultiPartnerRoom_Movement_AttendantBlockExit
waitmovement 0
- copyobjectxytoperm LOCALID_ATTENDANT
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterUp
+ copyobjectxytoperm LOCALID_TOWER_PARTNER_ROOM_ATTENDANT
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterUp
waitmovement 0
msgbox BattleFrontier_BattleTowerMultiPartnerRoom_Text_PleaseFindPartner, MSGBOX_DEFAULT
special HealPlayerParty
@@ -100,7 +98,7 @@ BattleFrontier_BattleTowerMultiPartnerRoom_EventScript_QuitChallenge::
BattleFrontier_BattleTowerMultiPartnerRoom_EventScript_EnterElevator::
msgbox BattleFrontier_BattleTowerMultiPartnerRoom_Text_ThankYouForChoosingPartner, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_ATTENDANT, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_TOWER_PARTNER_ROOM_ATTENDANT, Common_Movement_WalkInPlaceFasterUp
waitmovement 0
opendoor 10, 1
waitdooranim
@@ -113,22 +111,22 @@ BattleFrontier_BattleTowerMultiPartnerRoom_EventScript_EnterElevator::
end
BattleFrontier_BattleTowerMultiPartnerRoom_EventScript_MoveToElevator::
- applymovement LOCALID_ATTENDANT, BattleFrontier_BattleTowerMultiPartnerRoom_Movement_AttendantEnterElevator
- applymovement OBJ_EVENT_ID_PLAYER, BattleFrontier_BattleTowerMultiPartnerRoom_Movement_PlayerEnterElevator
+ applymovement LOCALID_TOWER_PARTNER_ROOM_ATTENDANT, BattleFrontier_BattleTowerMultiPartnerRoom_Movement_AttendantEnterElevator
+ applymovement LOCALID_PLAYER, BattleFrontier_BattleTowerMultiPartnerRoom_Movement_PlayerEnterElevator
waitmovement 0
return
@ Unused
BattleFrontier_BattleTowerMultiPartnerRoom_EventScript_MoveToElevatorEast:
- applymovement LOCALID_ATTENDANT, BattleFrontier_BattleTowerMultiPartnerRoom_Movement_AttendantEnterElevator
- applymovement OBJ_EVENT_ID_PLAYER, BattleFrontier_BattleTowerMultiPartnerRoom_Movement_PlayerEnterElevatorEast
+ applymovement LOCALID_TOWER_PARTNER_ROOM_ATTENDANT, BattleFrontier_BattleTowerMultiPartnerRoom_Movement_AttendantEnterElevator
+ applymovement LOCALID_PLAYER, BattleFrontier_BattleTowerMultiPartnerRoom_Movement_PlayerEnterElevatorEast
waitmovement 0
return
@ Unused
BattleFrontier_BattleTowerMultiPartnerRoom_EventScript_MoveToElevatorWest:
- applymovement LOCALID_ATTENDANT, BattleFrontier_BattleTowerMultiPartnerRoom_Movement_AttendantEnterElevator
- applymovement OBJ_EVENT_ID_PLAYER, BattleFrontier_BattleTowerMultiPartnerRoom_Movement_PlayerEneterElevatorWest
+ applymovement LOCALID_TOWER_PARTNER_ROOM_ATTENDANT, BattleFrontier_BattleTowerMultiPartnerRoom_Movement_AttendantEnterElevator
+ applymovement LOCALID_PLAYER, BattleFrontier_BattleTowerMultiPartnerRoom_Movement_PlayerEneterElevatorWest
waitmovement 0
return
diff --git a/data/maps/BattleFrontier_Mart/map.json b/data/maps/BattleFrontier_Mart/map.json
index 28261958ab..1f182365e1 100644
--- a/data/maps/BattleFrontier_Mart/map.json
+++ b/data/maps/BattleFrontier_Mart/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_FRONTIER_MART_CLERK",
"graphics_id": "OBJ_EVENT_GFX_MART_EMPLOYEE",
"x": 1,
"y": 3,
@@ -28,6 +29,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_FRONTIER_MART_OLD_WOMAN",
"graphics_id": "OBJ_EVENT_GFX_OLD_WOMAN",
"x": 5,
"y": 4,
diff --git a/data/maps/BattleFrontier_Mart/scripts.inc b/data/maps/BattleFrontier_Mart/scripts.inc
index f118476cfe..8d637193e0 100644
--- a/data/maps/BattleFrontier_Mart/scripts.inc
+++ b/data/maps/BattleFrontier_Mart/scripts.inc
@@ -1,5 +1,3 @@
-.set LOCALID_OLD_WOMAN, 2
-
BattleFrontier_Mart_MapScripts::
.byte 0
@@ -36,7 +34,7 @@ BattleFrontier_Mart_EventScript_OldMan::
BattleFrontier_Mart_EventScript_OldWoman::
lock
- applymovement LOCALID_OLD_WOMAN, Common_Movement_FaceDown
+ applymovement LOCALID_FRONTIER_MART_OLD_WOMAN, Common_Movement_FaceDown
waitmovement 0
msgbox BattleFrontier_Mart_Text_ProteinMakeNiceGift, MSGBOX_DEFAULT
release
diff --git a/data/maps/BattleFrontier_OutsideEast/map.json b/data/maps/BattleFrontier_OutsideEast/map.json
index c99fe30474..ab871be653 100644
--- a/data/maps/BattleFrontier_OutsideEast/map.json
+++ b/data/maps/BattleFrontier_OutsideEast/map.json
@@ -190,6 +190,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_FRONTIER_SUDOWOODO",
"graphics_id": "OBJ_EVENT_GFX_SUDOWOODO",
"x": 54,
"y": 62,
diff --git a/data/maps/BattleFrontier_OutsideEast/scripts.inc b/data/maps/BattleFrontier_OutsideEast/scripts.inc
index e8eec6f160..ba9abd8d5d 100644
--- a/data/maps/BattleFrontier_OutsideEast/scripts.inc
+++ b/data/maps/BattleFrontier_OutsideEast/scripts.inc
@@ -1,5 +1,3 @@
-.set LOCALID_SUDOWOODO, 14
-
BattleFrontier_OutsideEast_MapScripts::
map_script MAP_SCRIPT_ON_RESUME, BattleFrontier_OutsideEast_OnResume
map_script MAP_SCRIPT_ON_TRANSITION, BattleFrontier_OutsideEast_OnTransition
@@ -108,7 +106,7 @@ BattleFrontier_OutsideEast_EventScript_Sudowoodo::
faceplayer
waitse
playse SE_SUDOWOODO_SHAKE
- applymovement LOCALID_SUDOWOODO, BattleFrontier_OutsideEast_Movement_SudowoodoShake
+ applymovement LOCALID_FRONTIER_SUDOWOODO, BattleFrontier_OutsideEast_Movement_SudowoodoShake
waitmovement 0
release
end
@@ -120,7 +118,7 @@ BattleFrontier_OutsideEast_EventScript_WaterSudowoodo::
waitstate
waitse
playse SE_SUDOWOODO_SHAKE
- applymovement LOCALID_SUDOWOODO, BattleFrontier_OutsideEast_Movement_SudowoodoShake
+ applymovement LOCALID_FRONTIER_SUDOWOODO, BattleFrontier_OutsideEast_Movement_SudowoodoShake
waitmovement 0
msgbox gText_Sudowoodo_Attacked, MSGBOX_DEFAULT
closemessage
@@ -128,7 +126,7 @@ BattleFrontier_OutsideEast_EventScript_WaterSudowoodo::
playmoncry SPECIES_SUDOWOODO, CRY_MODE_ENCOUNTER
delay 40
waitmoncry
- setvar VAR_LAST_TALKED, LOCALID_SUDOWOODO
+ setvar VAR_LAST_TALKED, LOCALID_FRONTIER_SUDOWOODO
setwildbattle SPECIES_SUDOWOODO, 40
setflag FLAG_SYS_CTRL_OBJ_DELETE
dowildbattle
diff --git a/data/maps/BattleFrontier_OutsideWest/map.json b/data/maps/BattleFrontier_OutsideWest/map.json
index bcf579cf1d..a77f6ac578 100644
--- a/data/maps/BattleFrontier_OutsideWest/map.json
+++ b/data/maps/BattleFrontier_OutsideWest/map.json
@@ -34,6 +34,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_FRONTIER_SS_TIDAL",
"graphics_id": "OBJ_EVENT_GFX_SS_TIDAL",
"x": 20,
"y": 70,
@@ -47,6 +48,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_FRONTIER_FERRY_ATTENDANT",
"graphics_id": "OBJ_EVENT_GFX_BEAUTY",
"x": 19,
"y": 68,
@@ -125,6 +127,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_FRONTIER_MANIAC_1",
"graphics_id": "OBJ_EVENT_GFX_MANIAC",
"x": 13,
"y": 44,
@@ -138,6 +141,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_FRONTIER_MANIAC_2",
"graphics_id": "OBJ_EVENT_GFX_MANIAC",
"x": 14,
"y": 44,
@@ -164,6 +168,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_FRONTIER_GIRL",
"graphics_id": "OBJ_EVENT_GFX_GIRL_1",
"x": 38,
"y": 27,
@@ -190,6 +195,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_FRONTIER_CAMPER",
"graphics_id": "OBJ_EVENT_GFX_CAMPER",
"x": 9,
"y": 47,
@@ -242,6 +248,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_FRONTIER_FISHERMAN_2",
"graphics_id": "OBJ_EVENT_GFX_FISHERMAN",
"x": 42,
"y": 48,
@@ -307,6 +314,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_FRONTIER_MAN_4",
"graphics_id": "OBJ_EVENT_GFX_MAN_4",
"x": 8,
"y": 5,
diff --git a/data/maps/BattleFrontier_OutsideWest/scripts.inc b/data/maps/BattleFrontier_OutsideWest/scripts.inc
index 5ca5cb9fbb..378c1d6624 100644
--- a/data/maps/BattleFrontier_OutsideWest/scripts.inc
+++ b/data/maps/BattleFrontier_OutsideWest/scripts.inc
@@ -1,12 +1,3 @@
-.set LOCALID_SS_TIDAL, 2
-.set LOCALID_FERRY_ATTENDANT, 3
-.set LOCALID_MANIAC_1, 9
-.set LOCALID_MANIAC_2, 10
-.set LOCALID_GIRL, 12
-.set LOCALID_CAMPER, 14
-.set LOCALID_FISHERMAN_2, 18
-.set LOCALID_MAN_4, 23
-
BattleFrontier_OutsideWest_MapScripts::
map_script MAP_SCRIPT_ON_TRANSITION, BattleFrontier_OutsideWest_OnTransition
.byte 0
@@ -72,8 +63,8 @@ BattleFrontier_OutsideWest_EventScript_BoardFerry::
applymovement VAR_LAST_TALKED, Common_Movement_WalkInPlaceFasterDown
waitmovement 0
delay 30
- hideobjectat LOCALID_FERRY_ATTENDANT, MAP_BATTLE_FRONTIER_OUTSIDE_WEST
- setvar VAR_0x8004, LOCALID_SS_TIDAL
+ hideobjectat LOCALID_FRONTIER_FERRY_ATTENDANT, MAP_BATTLE_FRONTIER_OUTSIDE_WEST
+ setvar VAR_0x8004, LOCALID_FRONTIER_SS_TIDAL
call Common_EventScript_FerryDepartIsland
return
@@ -113,7 +104,7 @@ BattleFrontier_OutsideWest_EventScript_Fisherman2::
faceplayer
message BattleFrontier_OutsideWest_Text_GotSeasickOnWayHere
waitmessage
- applymovement LOCALID_FISHERMAN_2, Common_Movement_FaceAwayPlayer
+ applymovement LOCALID_FRONTIER_FISHERMAN_2, Common_Movement_FaceAwayPlayer
waitmovement 0
waitbuttonpress
release
@@ -134,16 +125,16 @@ BattleFrontier_OutsideWest_EventScript_Maniac2::
end
BattleFrontier_OutsideWest_EventScript_FactoryChallengersTalk::
- applymovement LOCALID_MANIAC_1, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_FRONTIER_MANIAC_1, Common_Movement_WalkInPlaceFasterRight
waitmovement 0
msgbox BattleFrontier_OutsideWest_Text_SureWeCanChallengeWithNoMons, MSGBOX_DEFAULT
- applymovement LOCALID_MANIAC_2, Common_Movement_WalkInPlaceFasterLeft
+ applymovement LOCALID_FRONTIER_MANIAC_2, Common_Movement_WalkInPlaceFasterLeft
waitmovement 0
msgbox BattleFrontier_OutsideWest_Text_BigGuySaidIllLendYouMons, MSGBOX_DEFAULT
closemessage
delay 25
- applymovement LOCALID_MANIAC_1, Common_Movement_WalkInPlaceFasterUp
- applymovement LOCALID_MANIAC_2, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_FRONTIER_MANIAC_1, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_FRONTIER_MANIAC_2, Common_Movement_WalkInPlaceFasterUp
waitmovement 0
release
end
@@ -161,7 +152,7 @@ BattleFrontier_OutsideWest_EventScript_Camper::
end
BattleFrontier_OutsideWest_EventScript_CamperFaceFactory::
- applymovement LOCALID_CAMPER, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_FRONTIER_CAMPER, Common_Movement_WalkInPlaceFasterUp
waitmovement 0
return
@@ -182,22 +173,22 @@ BattleFrontier_OutsideWest_EventScript_Girl::
end
BattleFrontier_OutsideWest_EventScript_GirlShudderNorth::
- applymovement LOCALID_GIRL, BattleFrontier_OutsideWest_Movement_GirlShudderNorth
+ applymovement LOCALID_FRONTIER_GIRL, BattleFrontier_OutsideWest_Movement_GirlShudderNorth
waitmovement 0
return
BattleFrontier_OutsideWest_EventScript_GirlShudderSouth::
- applymovement LOCALID_GIRL, BattleFrontier_OutsideWest_Movement_GirlShudderSouth
+ applymovement LOCALID_FRONTIER_GIRL, BattleFrontier_OutsideWest_Movement_GirlShudderSouth
waitmovement 0
return
BattleFrontier_OutsideWest_EventScript_GirlShudderWest::
- applymovement LOCALID_GIRL, BattleFrontier_OutsideWest_Movement_GirlShudderWest
+ applymovement LOCALID_FRONTIER_GIRL, BattleFrontier_OutsideWest_Movement_GirlShudderWest
waitmovement 0
return
BattleFrontier_OutsideWest_EventScript_GirlShudderEast::
- applymovement LOCALID_GIRL, BattleFrontier_OutsideWest_Movement_GirlShudderEast
+ applymovement LOCALID_FRONTIER_GIRL, BattleFrontier_OutsideWest_Movement_GirlShudderEast
waitmovement 0
return
@@ -298,7 +289,7 @@ BattleFrontier_OutsideWest_EventScript_Man4::
faceplayer
msgbox BattleFrontier_OutsideWest_Text_FansOverThereUsedToBeTrainers, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_MAN_4, Common_Movement_FaceOriginalDirection
+ applymovement LOCALID_FRONTIER_MAN_4, Common_Movement_FaceOriginalDirection
waitmovement 0
release
end
diff --git a/data/maps/BattleFrontier_PokemonCenter_1F/map.json b/data/maps/BattleFrontier_PokemonCenter_1F/map.json
index b993e92777..b44bd4b379 100644
--- a/data/maps/BattleFrontier_PokemonCenter_1F/map.json
+++ b/data/maps/BattleFrontier_PokemonCenter_1F/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_FRONTIER_NURSE",
"graphics_id": "OBJ_EVENT_GFX_NURSE",
"x": 7,
"y": 2,
diff --git a/data/maps/BattleFrontier_PokemonCenter_1F/scripts.inc b/data/maps/BattleFrontier_PokemonCenter_1F/scripts.inc
index 44806858fb..02201af8e5 100644
--- a/data/maps/BattleFrontier_PokemonCenter_1F/scripts.inc
+++ b/data/maps/BattleFrontier_PokemonCenter_1F/scripts.inc
@@ -1,5 +1,3 @@
-.set LOCALID_NURSE, 1
-
BattleFrontier_PokemonCenter_1F_MapScripts::
map_script MAP_SCRIPT_ON_TRANSITION, BattleFrontier_PokemonCenter_1F_OnTransition
map_script MAP_SCRIPT_ON_RESUME, CableClub_OnResume
@@ -10,7 +8,7 @@ BattleFrontier_PokemonCenter_1F_OnTransition:
end
BattleFrontier_PokemonCenter_1F_EventScript_Nurse::
- setvar VAR_0x800B, LOCALID_NURSE
+ setvar VAR_0x800B, LOCALID_FRONTIER_NURSE
call Common_EventScript_PkmnCenterNurse
waitmessage
waitbuttonpress
diff --git a/data/maps/BattleFrontier_ReceptionGate/map.json b/data/maps/BattleFrontier_ReceptionGate/map.json
index 12a178198d..8f92c5e94b 100644
--- a/data/maps/BattleFrontier_ReceptionGate/map.json
+++ b/data/maps/BattleFrontier_ReceptionGate/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_FRONTIER_RECEPTION_GREETER",
"graphics_id": "OBJ_EVENT_GFX_TEALA",
"x": 0,
"y": 11,
@@ -28,6 +29,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_FRONTIER_RECEPTION_GUIDE",
"graphics_id": "OBJ_EVENT_GFX_TEALA",
"x": 8,
"y": 11,
@@ -54,6 +56,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_FRONTIER_RECEPTION_SCOTT",
"graphics_id": "OBJ_EVENT_GFX_SCOTT",
"x": 4,
"y": 5,
diff --git a/data/maps/BattleFrontier_ReceptionGate/scripts.inc b/data/maps/BattleFrontier_ReceptionGate/scripts.inc
index 151bc665b5..78ebdcd0d2 100644
--- a/data/maps/BattleFrontier_ReceptionGate/scripts.inc
+++ b/data/maps/BattleFrontier_ReceptionGate/scripts.inc
@@ -1,7 +1,3 @@
-.set LOCALID_GREETER, 1
-.set LOCALID_GUIDE, 2
-.set LOCALID_SCOTT, 4
-
BattleFrontier_ReceptionGate_MapScripts::
map_script MAP_SCRIPT_ON_FRAME_TABLE, BattleFrontier_ReceptionGate_OnFrame
map_script MAP_SCRIPT_ON_TRANSITION, BattleFrontier_ReceptionGate_OnTransition
@@ -19,13 +15,13 @@ BattleFrontier_ReceptionGate_EventScript_FirstTimeEntering::
lockall
setvar VAR_HAS_ENTERED_BATTLE_FRONTIER, 1
playse SE_PIN
- applymovement LOCALID_GREETER, Common_Movement_ExclamationMark
+ applymovement LOCALID_FRONTIER_RECEPTION_GREETER, Common_Movement_ExclamationMark
waitmovement 0
- applymovement LOCALID_GREETER, Common_Movement_Delay48
+ applymovement LOCALID_FRONTIER_RECEPTION_GREETER, Common_Movement_Delay48
waitmovement 0
msgbox BattleFrontier_ReceptionGate_Text_FirstTimeHereThisWay, MSGBOX_DEFAULT
closemessage
- applymovement OBJ_EVENT_ID_PLAYER, BattleFrontier_ReceptionGate_Movement_PlayerApproachCounter
+ applymovement LOCALID_PLAYER, BattleFrontier_ReceptionGate_Movement_PlayerApproachCounter
waitmovement 0
goto BattleFrontier_ReceptionGate_EventScript_ScottScene
end
@@ -42,27 +38,27 @@ BattleFrontier_ReceptionGate_EventScript_ScottScene::
msgbox BattleFrontier_ReceptionGate_Text_EnjoyBattleFrontier, MSGBOX_DEFAULT
msgbox BattleFrontier_ReceptionGate_Text_IfItIsntPlayerYouCame, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_GREETER, Common_Movement_WalkInPlaceFasterUp
- applymovement LOCALID_GUIDE, Common_Movement_WalkInPlaceFasterUp
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_FRONTIER_RECEPTION_GREETER, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_FRONTIER_RECEPTION_GUIDE, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterUp
waitmovement 0
playse SE_PIN
- applymovement LOCALID_GREETER, Common_Movement_ExclamationMark
- applymovement LOCALID_GUIDE, Common_Movement_ExclamationMark
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_ExclamationMark
+ applymovement LOCALID_FRONTIER_RECEPTION_GREETER, Common_Movement_ExclamationMark
+ applymovement LOCALID_FRONTIER_RECEPTION_GUIDE, Common_Movement_ExclamationMark
+ applymovement LOCALID_PLAYER, Common_Movement_ExclamationMark
waitmovement 0
msgbox BattleFrontier_ReceptionGate_Text_OhMrScottGoodDay, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_GREETER, BattleFrontier_ReceptionGate_Movement_GreeterFaceScott
- applymovement LOCALID_GUIDE, BattleFrontier_ReceptionGate_Movement_FacilityGuideFaceScott
- applymovement OBJ_EVENT_ID_PLAYER, BattleFrontier_ReceptionGate_Movement_PlayerFaceScott
- applymovement LOCALID_SCOTT, BattleFrontier_ReceptionGate_Movement_ScottEnter
+ applymovement LOCALID_FRONTIER_RECEPTION_GREETER, BattleFrontier_ReceptionGate_Movement_GreeterFaceScott
+ applymovement LOCALID_FRONTIER_RECEPTION_GUIDE, BattleFrontier_ReceptionGate_Movement_FacilityGuideFaceScott
+ applymovement LOCALID_PLAYER, BattleFrontier_ReceptionGate_Movement_PlayerFaceScott
+ applymovement LOCALID_FRONTIER_RECEPTION_SCOTT, BattleFrontier_ReceptionGate_Movement_ScottEnter
waitmovement 0
msgbox BattleFrontier_ReceptionGate_Text_ScottGreatToSeeYouHere, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_SCOTT, BattleFrontier_ReceptionGate_Movement_ScottExit
+ applymovement LOCALID_FRONTIER_RECEPTION_SCOTT, BattleFrontier_ReceptionGate_Movement_ScottExit
waitmovement 0
- removeobject LOCALID_SCOTT
+ removeobject LOCALID_FRONTIER_RECEPTION_SCOTT
releaseall
end
diff --git a/data/maps/BattleFrontier_ScottsHouse/map.json b/data/maps/BattleFrontier_ScottsHouse/map.json
index 7a6de715ab..60d7f4ccfc 100644
--- a/data/maps/BattleFrontier_ScottsHouse/map.json
+++ b/data/maps/BattleFrontier_ScottsHouse/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_SCOTTS_HOUSE_SCOTT",
"graphics_id": "OBJ_EVENT_GFX_SCOTT",
"x": 2,
"y": 3,
diff --git a/data/maps/BattleFrontier_ScottsHouse/scripts.inc b/data/maps/BattleFrontier_ScottsHouse/scripts.inc
index affd05d349..8a818222b7 100644
--- a/data/maps/BattleFrontier_ScottsHouse/scripts.inc
+++ b/data/maps/BattleFrontier_ScottsHouse/scripts.inc
@@ -1,5 +1,3 @@
-.set LOCALID_SCOTT, 1
-
BattleFrontier_ScottsHouse_MapScripts::
.byte 0
@@ -149,7 +147,7 @@ BattleFrontier_ScottsHouse_EventScript_WelcomeToFrontier::
call_if_eq VAR_FACING, DIR_EAST, BattleFrontier_ScottsHouse_EventScript_ScottFaceAwayEast
call_if_eq VAR_FACING, DIR_WEST, BattleFrontier_ScottsHouse_EventScript_ScottFaceAwayWest
msgbox BattleFrontier_ScottsHouse_Text_HowMuchEffortItTookToMakeReal, MSGBOX_DEFAULT
- applymovement LOCALID_SCOTT, Common_Movement_FacePlayer
+ applymovement LOCALID_SCOTTS_HOUSE_SCOTT, Common_Movement_FacePlayer
waitmovement 0
msgbox BattleFrontier_ScottsHouse_Text_HaveThisAsMementoOfOurPathsCrossing, MSGBOX_DEFAULT
goto_if_eq VAR_SCOTT_STATE, 13, BattleFrontier_ScottsHouse_EventScript_Give4BattlePoints
@@ -192,22 +190,22 @@ BattleFrontier_ScottsHouse_EventScript_GiveBattlePoints::
end
BattleFrontier_ScottsHouse_EventScript_ScottFaceAwayNorth::
- applymovement LOCALID_SCOTT, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_SCOTTS_HOUSE_SCOTT, Common_Movement_WalkInPlaceFasterUp
waitmovement 0
return
BattleFrontier_ScottsHouse_EventScript_ScottFaceAwaySouth::
- applymovement LOCALID_SCOTT, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_SCOTTS_HOUSE_SCOTT, Common_Movement_WalkInPlaceFasterDown
waitmovement 0
return
BattleFrontier_ScottsHouse_EventScript_ScottFaceAwayEast::
- applymovement LOCALID_SCOTT, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_SCOTTS_HOUSE_SCOTT, Common_Movement_WalkInPlaceFasterRight
waitmovement 0
return
BattleFrontier_ScottsHouse_EventScript_ScottFaceAwayWest::
- applymovement LOCALID_SCOTT, Common_Movement_WalkInPlaceFasterLeft
+ applymovement LOCALID_SCOTTS_HOUSE_SCOTT, Common_Movement_WalkInPlaceFasterLeft
waitmovement 0
return
diff --git a/data/maps/BirthIsland_Exterior/map.json b/data/maps/BirthIsland_Exterior/map.json
index 3c5cc874cb..996fc0ca14 100644
--- a/data/maps/BirthIsland_Exterior/map.json
+++ b/data/maps/BirthIsland_Exterior/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_BIRTH_ISLAND_EXTERIOR_ROCK",
"graphics_id": "OBJ_EVENT_GFX_DEOXYS_TRIANGLE",
"x": 15,
"y": 12,
@@ -28,6 +29,7 @@
"flag": "FLAG_HIDE_BIRTH_ISLAND_DEOXYS_TRIANGLE"
},
{
+ "local_id": "LOCALID_BIRTH_ISLAND_DEOXYS",
"graphics_id": "OBJ_EVENT_GFX_DEOXYS",
"x": 15,
"y": 3,
diff --git a/data/maps/BirthIsland_Exterior/scripts.inc b/data/maps/BirthIsland_Exterior/scripts.inc
index 644001c6e7..defec9a46e 100644
--- a/data/maps/BirthIsland_Exterior/scripts.inc
+++ b/data/maps/BirthIsland_Exterior/scripts.inc
@@ -1,7 +1,3 @@
-.set LOCALID_DEOXYS, 2
-
-@ Note: LOCALID_BIRTH_ISLAND_EXTERIOR_ROCK is a local id for this map used elsewhere. It's defined in event_objects.h
-
BirthIsland_Exterior_MapScripts::
map_script MAP_SCRIPT_ON_TRANSITION, BirthIsland_Exterior_OnTransition
map_script MAP_SCRIPT_ON_RESUME, BirthIsland_Exterior_OnResume
@@ -39,7 +35,7 @@ BirthIsland_Exterior_OnResume:
BirthIsland_Exterior_EventScript_TryRemoveDeoxys::
specialvar VAR_RESULT, GetBattleOutcome
goto_if_ne VAR_RESULT, B_OUTCOME_CAUGHT, Common_EventScript_NopReturn
- removeobject LOCALID_DEOXYS
+ removeobject LOCALID_BIRTH_ISLAND_DEOXYS
return
BirthIsland_Exterior_EventScript_Triangle::
@@ -72,19 +68,19 @@ BirthIsland_Exterior_EventScript_Complete::
BirthIsland_Exterior_EventScript_Deoxys::
waitse
setfieldeffectargument 0, LOCALID_BIRTH_ISLAND_EXTERIOR_ROCK
- setfieldeffectargument 1, MAP_NUM(BIRTH_ISLAND_EXTERIOR)
- setfieldeffectargument 2, MAP_GROUP(BIRTH_ISLAND_EXTERIOR)
+ setfieldeffectargument 1, MAP_NUM(MAP_BIRTH_ISLAND_EXTERIOR)
+ setfieldeffectargument 2, MAP_GROUP(MAP_BIRTH_ISLAND_EXTERIOR)
dofieldeffect FLDEFF_DESTROY_DEOXYS_ROCK
playbgm MUS_RG_ENCOUNTER_DEOXYS, FALSE
waitfieldeffect FLDEFF_DESTROY_DEOXYS_ROCK
- addobject LOCALID_DEOXYS
- applymovement LOCALID_DEOXYS, BirthIsland_Exterior_Movement_DeoxysApproach
+ addobject LOCALID_BIRTH_ISLAND_DEOXYS
+ applymovement LOCALID_BIRTH_ISLAND_DEOXYS, BirthIsland_Exterior_Movement_DeoxysApproach
waitmovement 0
waitse
playmoncry SPECIES_DEOXYS_NORMAL, CRY_MODE_ENCOUNTER
delay 40
waitmoncry
- setvar VAR_LAST_TALKED, LOCALID_DEOXYS
+ setvar VAR_LAST_TALKED, LOCALID_BIRTH_ISLAND_DEOXYS
seteventmon SPECIES_DEOXYS_NORMAL, 30
setflag FLAG_SYS_CTRL_OBJ_DELETE
special BattleSetup_StartLegendaryBattle
diff --git a/data/maps/BirthIsland_Harbor/map.json b/data/maps/BirthIsland_Harbor/map.json
index cce96bfc13..93f399963e 100644
--- a/data/maps/BirthIsland_Harbor/map.json
+++ b/data/maps/BirthIsland_Harbor/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_BIRTH_ISLAND_SAILOR",
"graphics_id": "OBJ_EVENT_GFX_SAILOR",
"x": 8,
"y": 5,
@@ -28,6 +29,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_BIRTH_ISLAND_SS_TIDAL",
"graphics_id": "OBJ_EVENT_GFX_SS_TIDAL",
"x": 8,
"y": 7,
diff --git a/data/maps/BirthIsland_Harbor/scripts.inc b/data/maps/BirthIsland_Harbor/scripts.inc
index e91238cbdc..988d11716b 100644
--- a/data/maps/BirthIsland_Harbor/scripts.inc
+++ b/data/maps/BirthIsland_Harbor/scripts.inc
@@ -1,6 +1,3 @@
-.set LOCALID_SAILOR, 1
-.set LOCALID_SS_TIDAL, 2
-
BirthIsland_Harbor_MapScripts::
.byte 0
@@ -14,8 +11,8 @@ BirthIsland_Harbor_EventScript_Sailor::
applymovement VAR_LAST_TALKED, Common_Movement_WalkInPlaceFasterDown
waitmovement 0
delay 30
- hideobjectat LOCALID_SAILOR, MAP_BIRTH_ISLAND_HARBOR
- setvar VAR_0x8004, LOCALID_SS_TIDAL
+ hideobjectat LOCALID_BIRTH_ISLAND_SAILOR, MAP_BIRTH_ISLAND_HARBOR
+ setvar VAR_0x8004, LOCALID_BIRTH_ISLAND_SS_TIDAL
call Common_EventScript_FerryDepartIsland
warp MAP_LILYCOVE_CITY_HARBOR, 8, 11
waitstate
diff --git a/data/maps/CaveOfOrigin_B1F/map.json b/data/maps/CaveOfOrigin_B1F/map.json
index 166f79998b..5756705323 100644
--- a/data/maps/CaveOfOrigin_B1F/map.json
+++ b/data/maps/CaveOfOrigin_B1F/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_CAVE_OF_ORIGIN_WALLACE",
"graphics_id": "OBJ_EVENT_GFX_WALLACE",
"x": 9,
"y": 13,
diff --git a/data/maps/CaveOfOrigin_B1F/scripts.inc b/data/maps/CaveOfOrigin_B1F/scripts.inc
index 11ca66aab0..14dda1ad82 100644
--- a/data/maps/CaveOfOrigin_B1F/scripts.inc
+++ b/data/maps/CaveOfOrigin_B1F/scripts.inc
@@ -1,5 +1,3 @@
-.set LOCALID_WALLACE, 1
-
CaveOfOrigin_B1F_MapScripts::
.byte 0
@@ -8,16 +6,16 @@ CaveOfOrigin_B1F_EventScript_Wallace::
faceplayer
msgbox CaveOfOrigin_B1F_Text_WallaceStory, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_WALLACE, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_CAVE_OF_ORIGIN_WALLACE, Common_Movement_WalkInPlaceFasterUp
waitmovement 0
delay 60
playse SE_PIN
- applymovement LOCALID_WALLACE, Common_Movement_ExclamationMark
+ applymovement LOCALID_CAVE_OF_ORIGIN_WALLACE, Common_Movement_ExclamationMark
waitmovement 0
- applymovement LOCALID_WALLACE, Common_Movement_Delay48
+ applymovement LOCALID_CAVE_OF_ORIGIN_WALLACE, Common_Movement_Delay48
waitmovement 0
delay 30
- applymovement LOCALID_WALLACE, Common_Movement_FacePlayer
+ applymovement LOCALID_CAVE_OF_ORIGIN_WALLACE, Common_Movement_FacePlayer
waitmovement 0
message CaveOfOrigin_B1F_Text_WhereIsRayquaza
waitmessage
@@ -55,7 +53,7 @@ CaveOfOrigin_B1F_EventScript_AtSkyPillar::
fadescreenspeed FADE_TO_BLACK, 4
setflag FLAG_WALLACE_GOES_TO_SKY_PILLAR
setvar VAR_SOOTOPOLIS_CITY_STATE, 3
- removeobject LOCALID_WALLACE
+ removeobject LOCALID_CAVE_OF_ORIGIN_WALLACE
clearflag FLAG_HIDE_SKY_PILLAR_WALLACE
fadescreen FADE_FROM_BLACK
release
diff --git a/data/maps/ContestHall/map.json b/data/maps/ContestHall/map.json
index 842c57968d..2d5c0b7c0c 100644
--- a/data/maps/ContestHall/map.json
+++ b/data/maps/ContestHall/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_CONTEST_MC",
"graphics_id": "OBJ_EVENT_GFX_WOMAN_3",
"x": 6,
"y": 4,
@@ -28,6 +29,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_CONTEST_JUDGE",
"graphics_id": "OBJ_EVENT_GFX_CONTEST_JUDGE",
"x": 7,
"y": 4,
@@ -41,6 +43,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_CONTESTANT_1",
"graphics_id": "OBJ_EVENT_GFX_VAR_0",
"x": 4,
"y": 7,
@@ -54,6 +57,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_CONTESTANT_2",
"graphics_id": "OBJ_EVENT_GFX_VAR_1",
"x": 6,
"y": 7,
@@ -67,6 +71,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_CONTESTANT_3",
"graphics_id": "OBJ_EVENT_GFX_VAR_2",
"x": 8,
"y": 7,
@@ -80,6 +85,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_CONTEST_AUDIENCE_1",
"graphics_id": "OBJ_EVENT_GFX_VAR_4",
"x": 2,
"y": 6,
@@ -93,6 +99,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_CONTEST_AUDIENCE_3",
"graphics_id": "OBJ_EVENT_GFX_VAR_6",
"x": 4,
"y": 2,
@@ -106,6 +113,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_CONTEST_AUDIENCE_4",
"graphics_id": "OBJ_EVENT_GFX_VAR_7",
"x": 5,
"y": 2,
@@ -119,6 +127,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_CONTEST_AUDIENCE_5",
"graphics_id": "OBJ_EVENT_GFX_VAR_8",
"x": 9,
"y": 2,
@@ -132,6 +141,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_CONTEST_AUDIENCE_6",
"graphics_id": "OBJ_EVENT_GFX_VAR_9",
"x": 10,
"y": 2,
@@ -145,6 +155,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_CONTEST_AUDIENCE_7",
"graphics_id": "OBJ_EVENT_GFX_VAR_A",
"x": 12,
"y": 5,
@@ -158,6 +169,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_CONTEST_AUDIENCE_2",
"graphics_id": "OBJ_EVENT_GFX_VAR_5",
"x": 2,
"y": 5,
@@ -171,6 +183,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_CONTEST_POKEBALL",
"graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
"x": 7,
"y": 5,
@@ -184,6 +197,7 @@
"flag": "FLAG_HIDE_CONTEST_POKE_BALL"
},
{
+ "local_id": "LOCALID_CONTESTANT_4",
"graphics_id": "OBJ_EVENT_GFX_VAR_3",
"x": 10,
"y": 7,
@@ -197,6 +211,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_CONTEST_ARTIST",
"graphics_id": "OBJ_EVENT_GFX_ARTIST",
"x": 12,
"y": 6,
diff --git a/data/maps/ContestHall/scripts.inc b/data/maps/ContestHall/scripts.inc
index 7ca6a57f69..f0c807e7b4 100644
--- a/data/maps/ContestHall/scripts.inc
+++ b/data/maps/ContestHall/scripts.inc
@@ -69,7 +69,7 @@ ContestHall_EventScript_Contest::
ContestHall_EventScript_SetContestObjects::
special LoadLinkContestPlayerPalettes
- hideobjectat OBJ_EVENT_ID_PLAYER, MAP_LITTLEROOT_TOWN
+ hideobjectat LOCALID_PLAYER, MAP_LITTLEROOT_TOWN
call ContestHall_EventScript_CreateAudience
end
diff --git a/data/maps/DesertUnderpass/map.json b/data/maps/DesertUnderpass/map.json
index 152d32a794..386c28b2af 100644
--- a/data/maps/DesertUnderpass/map.json
+++ b/data/maps/DesertUnderpass/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_UNDERPASS_FOSSIL",
"graphics_id": "OBJ_EVENT_GFX_FOSSIL",
"x": 132,
"y": 10,
diff --git a/data/maps/DesertUnderpass/scripts.inc b/data/maps/DesertUnderpass/scripts.inc
index 1a20e0add2..f443a7001f 100644
--- a/data/maps/DesertUnderpass/scripts.inc
+++ b/data/maps/DesertUnderpass/scripts.inc
@@ -1,5 +1,3 @@
-.set LOCALID_FOSSIL, 1
-
DesertUnderpass_MapScripts::
map_script MAP_SCRIPT_ON_TRANSITION, DesertUnderpass_OnTransition
.byte 0
@@ -19,14 +17,14 @@ DesertUnderpass_EventScript_Fossil::
DesertUnderpass_EventScript_GiveClawFossil::
giveitem ITEM_CLAW_FOSSIL
goto_if_eq VAR_RESULT, FALSE, Common_EventScript_ShowBagIsFull
- removeobject LOCALID_FOSSIL
+ removeobject LOCALID_UNDERPASS_FOSSIL
release
end
DesertUnderpass_EventScript_GiveRootFossil::
giveitem ITEM_ROOT_FOSSIL
goto_if_eq VAR_RESULT, FALSE, Common_EventScript_ShowBagIsFull
- removeobject LOCALID_FOSSIL
+ removeobject LOCALID_UNDERPASS_FOSSIL
release
end
diff --git a/data/maps/DewfordTown/map.json b/data/maps/DewfordTown/map.json
index f073a74368..ac958202a8 100644
--- a/data/maps/DewfordTown/map.json
+++ b/data/maps/DewfordTown/map.json
@@ -39,6 +39,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_DEWFORD_BRINEY",
"graphics_id": "OBJ_EVENT_GFX_EXPERT_M",
"x": 12,
"y": 9,
@@ -65,6 +66,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_DEWFORD_BOAT",
"graphics_id": "OBJ_EVENT_GFX_MR_BRINEYS_BOAT",
"x": 12,
"y": 8,
diff --git a/data/maps/DewfordTown/scripts.inc b/data/maps/DewfordTown/scripts.inc
index 5d13a6a16b..ecf4d8cdce 100644
--- a/data/maps/DewfordTown/scripts.inc
+++ b/data/maps/DewfordTown/scripts.inc
@@ -1,15 +1,3 @@
-@ Sailing to and from Dewford uses local IDs from different maps
-@ e.g. Route 104's sail to Dewford script references local IDs from Dewford's map
-@ All of these local IDs are labeled here
-.equ LOCALID_BRINEY_DEWFORD, 2
-.equ LOCALID_BOAT_DEWFORD, 4
-
-.equ LOCALID_BOAT_R109, 1
-.equ LOCALID_BRINEY_R109, 2
-
-.equ LOCALID_BOAT_R104, 7
-.equ LOCALID_BRINEY_R104, 8
-
DewfordTown_MapScripts::
map_script MAP_SCRIPT_ON_TRANSITION, DewfordTown_OnTransition
.byte 0
@@ -124,30 +112,30 @@ DewfordTown_EventScript_FishingNotSoGood::
DewfordTown_EventScript_SailToPetalburg::
call EventScript_BackupMrBrineyLocation
- setobjectsubpriority LOCALID_BRINEY_DEWFORD, MAP_DEWFORD_TOWN, 0
- setobjectsubpriority OBJ_EVENT_ID_PLAYER, MAP_DEWFORD_TOWN, 0
- applymovement LOCALID_BRINEY_DEWFORD, DewfordTown_Movement_BrineyBoardBoat
+ setobjectsubpriority LOCALID_DEWFORD_BRINEY, MAP_DEWFORD_TOWN, 0
+ setobjectsubpriority LOCALID_PLAYER, MAP_DEWFORD_TOWN, 0
+ applymovement LOCALID_DEWFORD_BRINEY, DewfordTown_Movement_BrineyBoardBoat
waitmovement 0
- removeobject LOCALID_BRINEY_DEWFORD
- applymovement OBJ_EVENT_ID_PLAYER, DewfordTown_Movement_PlayerBoardBoat
+ removeobject LOCALID_DEWFORD_BRINEY
+ applymovement LOCALID_PLAYER, DewfordTown_Movement_PlayerBoardBoat
waitmovement 0
- hideobjectat OBJ_EVENT_ID_PLAYER, MAP_DEWFORD_TOWN
+ hideobjectat LOCALID_PLAYER, MAP_DEWFORD_TOWN
call Common_EventScript_PlayBrineysBoatMusic
- applymovement LOCALID_BOAT_DEWFORD, DewfordTown_Movement_SailToPetalburg
- applymovement OBJ_EVENT_ID_PLAYER, DewfordTown_Movement_SailToPetalburg
+ applymovement LOCALID_DEWFORD_BOAT, DewfordTown_Movement_SailToPetalburg
+ applymovement LOCALID_PLAYER, DewfordTown_Movement_SailToPetalburg
waitmovement 0
- showobjectat OBJ_EVENT_ID_PLAYER, MAP_ROUTE104
+ showobjectat LOCALID_PLAYER, MAP_ROUTE104
call Common_EventScript_StopBrineysBoatMusic
- applymovement OBJ_EVENT_ID_PLAYER, DewfordTown_Movement_ExitBoatPetalburg
+ applymovement LOCALID_PLAYER, DewfordTown_Movement_ExitBoatPetalburg
waitmovement 0
- showobjectat OBJ_EVENT_ID_PLAYER, MAP_ROUTE104
+ showobjectat LOCALID_PLAYER, MAP_ROUTE104
clearflag FLAG_HIDE_BRINEYS_HOUSE_MR_BRINEY
clearflag FLAG_HIDE_BRINEYS_HOUSE_PEEKO
clearflag FLAG_HIDE_ROUTE_104_MR_BRINEY_BOAT
setflag FLAG_HIDE_MR_BRINEY_BOAT_DEWFORD_TOWN
- hideobjectat LOCALID_BOAT_DEWFORD, MAP_DEWFORD_TOWN
+ hideobjectat LOCALID_DEWFORD_BOAT, MAP_DEWFORD_TOWN
setvar VAR_BOARD_BRINEY_BOAT_STATE, 2
- resetobjectsubpriority OBJ_EVENT_ID_PLAYER, MAP_DEWFORD_TOWN
+ resetobjectsubpriority LOCALID_PLAYER, MAP_DEWFORD_TOWN
warp MAP_ROUTE104_MR_BRINEYS_HOUSE, 5, 4
copyvar VAR_BRINEY_LOCATION, VAR_0x8008
waitstate
@@ -156,39 +144,39 @@ DewfordTown_EventScript_SailToPetalburg::
DewfordTown_EventScript_SailToSlateport::
call EventScript_BackupMrBrineyLocation
- setobjectsubpriority LOCALID_BRINEY_DEWFORD, MAP_DEWFORD_TOWN, 0
- setobjectsubpriority OBJ_EVENT_ID_PLAYER, MAP_DEWFORD_TOWN, 1
- applymovement LOCALID_BRINEY_DEWFORD, DewfordTown_Movement_BrineyBoardBoat
+ setobjectsubpriority LOCALID_DEWFORD_BRINEY, MAP_DEWFORD_TOWN, 0
+ setobjectsubpriority LOCALID_PLAYER, MAP_DEWFORD_TOWN, 1
+ applymovement LOCALID_DEWFORD_BRINEY, DewfordTown_Movement_BrineyBoardBoat
waitmovement 0
- removeobject LOCALID_BRINEY_DEWFORD
- applymovement OBJ_EVENT_ID_PLAYER, DewfordTown_Movement_PlayerBoardBoat
+ removeobject LOCALID_DEWFORD_BRINEY
+ applymovement LOCALID_PLAYER, DewfordTown_Movement_PlayerBoardBoat
waitmovement 0
- hideobjectat OBJ_EVENT_ID_PLAYER, MAP_DEWFORD_TOWN
+ hideobjectat LOCALID_PLAYER, MAP_DEWFORD_TOWN
call Common_EventScript_PlayBrineysBoatMusic
- applymovement LOCALID_BOAT_DEWFORD, DewfordTown_Movement_SailToSlateport
- applymovement OBJ_EVENT_ID_PLAYER, DewfordTown_Movement_SailToSlateport
+ applymovement LOCALID_DEWFORD_BOAT, DewfordTown_Movement_SailToSlateport
+ applymovement LOCALID_PLAYER, DewfordTown_Movement_SailToSlateport
waitmovement 0
call Common_EventScript_StopBrineysBoatMusic
- showobjectat OBJ_EVENT_ID_PLAYER, MAP_ROUTE109
- applymovement OBJ_EVENT_ID_PLAYER, DewfordTown_Movement_ExitBoatSlateport
+ showobjectat LOCALID_PLAYER, MAP_ROUTE109
+ applymovement LOCALID_PLAYER, DewfordTown_Movement_ExitBoatSlateport
waitmovement 0
- setobjectxyperm LOCALID_BRINEY_R109, 21, 26
- addobject LOCALID_BRINEY_R109
- setobjectsubpriority LOCALID_BRINEY_R109, MAP_ROUTE109, 0
- applymovement LOCALID_BRINEY_R109, DewfordTown_Movement_BrineyExitBoat
+ setobjectxyperm LOCALID_ROUTE109_BRINEY, 21, 26
+ addobject LOCALID_ROUTE109_BRINEY
+ setobjectsubpriority LOCALID_ROUTE109_BRINEY, MAP_ROUTE109, 0
+ applymovement LOCALID_ROUTE109_BRINEY, DewfordTown_Movement_BrineyExitBoat
waitmovement 0
clearflag FLAG_HIDE_ROUTE_109_MR_BRINEY
- addobject LOCALID_BOAT_R109
+ addobject LOCALID_ROUTE109_BOAT
clearflag FLAG_HIDE_ROUTE_109_MR_BRINEY_BOAT
setflag FLAG_HIDE_MR_BRINEY_BOAT_DEWFORD_TOWN
- hideobjectat LOCALID_BOAT_DEWFORD, MAP_DEWFORD_TOWN
+ hideobjectat LOCALID_DEWFORD_BOAT, MAP_DEWFORD_TOWN
call_if_unset FLAG_DELIVERED_DEVON_GOODS, DewfordTown_EventScript_LandedSlateportDeliverGoods
call_if_set FLAG_DELIVERED_DEVON_GOODS, DewfordTown_EventScript_LandedSlateport
closemessage
copyvar VAR_BRINEY_LOCATION, VAR_0x8008
- resetobjectsubpriority OBJ_EVENT_ID_PLAYER, MAP_DEWFORD_TOWN
- resetobjectsubpriority LOCALID_BRINEY_R109, MAP_ROUTE109
- copyobjectxytoperm LOCALID_BRINEY_R109
+ resetobjectsubpriority LOCALID_PLAYER, MAP_DEWFORD_TOWN
+ resetobjectsubpriority LOCALID_ROUTE109_BRINEY, MAP_ROUTE109
+ copyobjectxytoperm LOCALID_ROUTE109_BRINEY
release
end
diff --git a/data/maps/DewfordTown_Hall/map.json b/data/maps/DewfordTown_Hall/map.json
index 9489a3d1ee..c253d16a61 100644
--- a/data/maps/DewfordTown_Hall/map.json
+++ b/data/maps/DewfordTown_Hall/map.json
@@ -54,6 +54,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_DEWFORD_HALL_EXPERT_M",
"graphics_id": "OBJ_EVENT_GFX_EXPERT_M",
"x": 9,
"y": 3,
@@ -67,6 +68,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_DEWFORD_HALL_TWIN",
"graphics_id": "OBJ_EVENT_GFX_TWIN",
"x": 5,
"y": 2,
@@ -93,6 +95,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_DEWFORD_HALL_SCHOOL_KID_M",
"graphics_id": "OBJ_EVENT_GFX_SCHOOL_KID_M",
"x": 12,
"y": 3,
@@ -106,6 +109,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_DEWFORD_HALL_PSYCHIC_M",
"graphics_id": "OBJ_EVENT_GFX_PSYCHIC_M",
"x": 15,
"y": 3,
diff --git a/data/maps/DewfordTown_Hall/scripts.inc b/data/maps/DewfordTown_Hall/scripts.inc
index 1472bebb24..87fa85440d 100644
--- a/data/maps/DewfordTown_Hall/scripts.inc
+++ b/data/maps/DewfordTown_Hall/scripts.inc
@@ -1,8 +1,3 @@
-.set LOCALID_EXPERT_M, 4
-.set LOCALID_TWIN, 5
-.set LOCALID_SCHOOL_KID_M, 7
-.set LOCALID_PSYCHIC_M, 8
-
DewfordTown_Hall_MapScripts::
.byte 0
@@ -55,7 +50,7 @@ DewfordTown_Hall_EventScript_ExpertM::
call Common_EventScript_BufferTrendyPhrase
msgbox DewfordTown_Hall_Text_TVShowAboutTrend, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_EXPERT_M, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_DEWFORD_HALL_EXPERT_M, Common_Movement_WalkInPlaceFasterUp
waitmovement 0
release
end
@@ -66,7 +61,7 @@ DewfordTown_Hall_EventScript_Twin::
call Common_EventScript_BufferTrendyPhrase
msgbox DewfordTown_Hall_Text_IsTrendMorePopularAcrossSea, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_TWIN, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_DEWFORD_HALL_TWIN, Common_Movement_WalkInPlaceFasterUp
waitmovement 0
release
end
@@ -191,7 +186,7 @@ DewfordTown_Hall_EventScript_DontMovePlayer1::
return
DewfordTown_Hall_EventScript_DebateReact1::
- applymovement LOCALID_PSYCHIC_M, DewfordTown_Hall_Movement_PsychicWalkInPlaceLeft
+ applymovement LOCALID_DEWFORD_HALL_PSYCHIC_M, DewfordTown_Hall_Movement_PsychicWalkInPlaceLeft
waitmovement 0
goto_if_eq VAR_0x8008, 0, DewfordTown_Hall_EventScript_PlayerReactWest
goto_if_eq VAR_0x8008, 1, DewfordTown_Hall_EventScript_DontMovePlayer2
@@ -199,7 +194,7 @@ DewfordTown_Hall_EventScript_DebateReact1::
DewfordTown_Hall_EventScript_PlayerReactWest::
goto_if_eq VAR_FACING, DIR_EAST, DewfordTown_Hall_EventScript_DontMovePlayer1
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterRight
waitmovement 0
return
@@ -207,7 +202,7 @@ DewfordTown_Hall_EventScript_DontMovePlayer2::
return
DewfordTown_Hall_EventScript_DebateReact2::
- applymovement LOCALID_SCHOOL_KID_M, DewfordTown_Hall_Movement_SchoolKidWalkInPlaceRight
+ applymovement LOCALID_DEWFORD_HALL_SCHOOL_KID_M, DewfordTown_Hall_Movement_SchoolKidWalkInPlaceRight
waitmovement 0
goto_if_eq VAR_0x8008, 0, DewfordTown_Hall_EventScript_PlayerReactNorthSouth
goto_if_eq VAR_0x8008, 1, DewfordTown_Hall_EventScript_PlayerReactEast
@@ -219,18 +214,18 @@ DewfordTown_Hall_EventScript_PlayerReactNorthSouth::
return
DewfordTown_Hall_EventScript_PlayerWalkInPlaceUp::
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterUp
waitmovement 0
return
DewfordTown_Hall_EventScript_PlayerWalkInPlaceDown::
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterDown
waitmovement 0
return
DewfordTown_Hall_EventScript_PlayerReactEast::
goto_if_eq VAR_FACING, DIR_WEST, DewfordTown_Hall_EventScript_DontMovePlayer1
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
waitmovement 0
return
diff --git a/data/maps/DewfordTown_PokemonCenter_1F/map.json b/data/maps/DewfordTown_PokemonCenter_1F/map.json
index 5e5c7b93e4..4993440839 100644
--- a/data/maps/DewfordTown_PokemonCenter_1F/map.json
+++ b/data/maps/DewfordTown_PokemonCenter_1F/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_DEWFORD_NURSE",
"graphics_id": "OBJ_EVENT_GFX_NURSE",
"x": 7,
"y": 2,
diff --git a/data/maps/DewfordTown_PokemonCenter_1F/scripts.inc b/data/maps/DewfordTown_PokemonCenter_1F/scripts.inc
index dbd9e1c8d2..0fb429b992 100644
--- a/data/maps/DewfordTown_PokemonCenter_1F/scripts.inc
+++ b/data/maps/DewfordTown_PokemonCenter_1F/scripts.inc
@@ -1,5 +1,3 @@
-.set LOCALID_NURSE, 1
-
DewfordTown_PokemonCenter_1F_MapScripts::
map_script MAP_SCRIPT_ON_TRANSITION, DewfordTown_PokemonCenter_1F_OnTransition
map_script MAP_SCRIPT_ON_RESUME, CableClub_OnResume
@@ -11,7 +9,7 @@ DewfordTown_PokemonCenter_1F_OnTransition:
end
DewfordTown_PokemonCenter_1F_EventScript_Nurse::
- setvar VAR_0x800B, LOCALID_NURSE
+ setvar VAR_0x800B, LOCALID_DEWFORD_NURSE
call Common_EventScript_PkmnCenterNurse
waitmessage
waitbuttonpress
diff --git a/data/maps/EverGrandeCity_ChampionsRoom/map.json b/data/maps/EverGrandeCity_ChampionsRoom/map.json
index 305a1f16f7..abd9c2e6cf 100644
--- a/data/maps/EverGrandeCity_ChampionsRoom/map.json
+++ b/data/maps/EverGrandeCity_ChampionsRoom/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_CHAMPIONS_ROOM_WALLACE",
"graphics_id": "OBJ_EVENT_GFX_WALLACE",
"x": 6,
"y": 5,
@@ -28,6 +29,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_CHAMPIONS_ROOM_RIVAL",
"graphics_id": "OBJ_EVENT_GFX_VAR_0",
"x": 6,
"y": 12,
@@ -41,6 +43,7 @@
"flag": "FLAG_HIDE_CHAMPIONS_ROOM_RIVAL"
},
{
+ "local_id": "LOCALID_CHAMPIONS_ROOM_BIRCH",
"graphics_id": "OBJ_EVENT_GFX_PROF_BIRCH",
"x": 6,
"y": 12,
diff --git a/data/maps/EverGrandeCity_ChampionsRoom/scripts.inc b/data/maps/EverGrandeCity_ChampionsRoom/scripts.inc
index f9723ffa0f..dd41b84617 100644
--- a/data/maps/EverGrandeCity_ChampionsRoom/scripts.inc
+++ b/data/maps/EverGrandeCity_ChampionsRoom/scripts.inc
@@ -1,7 +1,3 @@
-.set LOCALID_WALLACE, 1
-.set LOCALID_RIVAL, 2
-.set LOCALID_BIRCH, 3
-
EverGrandeCity_ChampionsRoom_MapScripts::
map_script MAP_SCRIPT_ON_TRANSITION, EverGrandeCity_ChampionsRoom_OnTransition
map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, EverGrandeCity_ChampionsRoom_OnWarp
@@ -17,7 +13,7 @@ EverGrandeCity_ChampionsRoom_OnWarp:
.2byte 0
EverGrandeCity_ChampionsRoom_EventScript_PlayerTurnNorth::
- turnobject OBJ_EVENT_ID_PLAYER, DIR_NORTH
+ turnobject LOCALID_PLAYER, DIR_NORTH
end
EverGrandeCity_ChampionsRoom_OnFrame:
@@ -26,10 +22,10 @@ EverGrandeCity_ChampionsRoom_OnFrame:
EverGrandeCity_ChampionsRoom_EventScript_EnterRoom::
lockall
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkUp4
+ applymovement LOCALID_PLAYER, Common_Movement_WalkUp4
waitmovement 0
delay 40
- applymovement OBJ_EVENT_ID_PLAYER, EverGrandeCity_ChampionsRoom_Movement_PlayerApproachWallace
+ applymovement LOCALID_PLAYER, EverGrandeCity_ChampionsRoom_Movement_PlayerApproachWallace
waitmovement 0
setvar VAR_TEMP_1, 1
goto EverGrandeCity_ChampionsRoom_EventScript_Wallace
@@ -59,7 +55,7 @@ EverGrandeCity_ChampionsRoom_EventScript_Defeated::
checkplayergender
call_if_eq VAR_RESULT, MALE, EverGrandeCity_ChampionsRoom_EventScript_PlayMayMusic
call_if_eq VAR_RESULT, FEMALE, EverGrandeCity_ChampionsRoom_EventScript_PlayBrendanMusic
- addobject LOCALID_RIVAL
+ addobject LOCALID_CHAMPIONS_ROOM_RIVAL
call EverGrandeCity_ChampionsRoom_EventScript_RivalApproachPlayer
checkplayergender
goto_if_eq VAR_RESULT, MALE, EverGrandeCity_ChampionsRoom_EventScript_MayAdvice
@@ -78,9 +74,9 @@ EverGrandeCity_ChampionsRoom_EventScript_MayAdvice::
msgbox EverGrandeCity_ChampionsRoom_Text_MayAdvice, MSGBOX_DEFAULT
delay 40
playse SE_PIN
- applymovement LOCALID_RIVAL, Common_Movement_ExclamationMark
+ applymovement LOCALID_CHAMPIONS_ROOM_RIVAL, Common_Movement_ExclamationMark
waitmovement 0
- applymovement LOCALID_RIVAL, Common_Movement_Delay48
+ applymovement LOCALID_CHAMPIONS_ROOM_RIVAL, Common_Movement_Delay48
waitmovement 0
call EverGrandeCity_ChampionsRoom_EventScript_RivalLookBackAndForth
msgbox EverGrandeCity_ChampionsRoom_Text_MayItsAlreadyOver, MSGBOX_DEFAULT
@@ -91,9 +87,9 @@ EverGrandeCity_ChampionsRoom_EventScript_BrendanAdvice::
msgbox EverGrandeCity_ChampionsRoom_Text_BrendanAdvice, MSGBOX_DEFAULT
delay 40
playse SE_PIN
- applymovement LOCALID_RIVAL, Common_Movement_ExclamationMark
+ applymovement LOCALID_CHAMPIONS_ROOM_RIVAL, Common_Movement_ExclamationMark
waitmovement 0
- applymovement LOCALID_RIVAL, Common_Movement_Delay48
+ applymovement LOCALID_CHAMPIONS_ROOM_RIVAL, Common_Movement_Delay48
waitmovement 0
call EverGrandeCity_ChampionsRoom_EventScript_RivalLookBackAndForth
msgbox EverGrandeCity_ChampionsRoom_Text_BrendanYouveWon, MSGBOX_DEFAULT
@@ -102,37 +98,37 @@ EverGrandeCity_ChampionsRoom_EventScript_BrendanAdvice::
EverGrandeCity_ChampionsRoom_EventScript_BirchArrivesExitForHoF::
closemessage
- addobject LOCALID_BIRCH
- applymovement LOCALID_BIRCH, EverGrandeCity_ChampionsRoom_Movement_BirchArrives
+ addobject LOCALID_CHAMPIONS_ROOM_BIRCH
+ applymovement LOCALID_CHAMPIONS_ROOM_BIRCH, EverGrandeCity_ChampionsRoom_Movement_BirchArrives
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterRight
waitmovement 0
msgbox EverGrandeCity_ChampionsRoom_Text_BirchArriveRatePokedex, MSGBOX_DEFAULT
call ProfBirch_EventScript_RatePokedex
msgbox EverGrandeCity_ChampionsRoom_Text_BirchCongratulations, MSGBOX_DEFAULT
- applymovement LOCALID_WALLACE, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_CHAMPIONS_ROOM_WALLACE, Common_Movement_WalkInPlaceFasterUp
waitmovement 0
delay 20
- applymovement LOCALID_WALLACE, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_CHAMPIONS_ROOM_WALLACE, Common_Movement_WalkInPlaceFasterDown
waitmovement 0
msgbox EverGrandeCity_ChampionsRoom_Text_WallaceComeWithMe, MSGBOX_DEFAULT
closemessage
delay 30
- applymovement LOCALID_WALLACE, EverGrandeCity_ChampionsRoom_Movement_WallaceExitStart
- applymovement OBJ_EVENT_ID_PLAYER, EverGrandeCity_ChampionsRoom_Movement_PlayerExitStart
- applymovement LOCALID_BIRCH, Common_Movement_WalkInPlaceFasterUp
- applymovement LOCALID_RIVAL, EverGrandeCity_ChampionsRoom_Movement_RivalFollows
+ applymovement LOCALID_CHAMPIONS_ROOM_WALLACE, EverGrandeCity_ChampionsRoom_Movement_WallaceExitStart
+ applymovement LOCALID_PLAYER, EverGrandeCity_ChampionsRoom_Movement_PlayerExitStart
+ applymovement LOCALID_CHAMPIONS_ROOM_BIRCH, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_CHAMPIONS_ROOM_RIVAL, EverGrandeCity_ChampionsRoom_Movement_RivalFollows
waitmovement 0
delay 20
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterDown
waitmovement 0
msgbox EverGrandeCity_ChampionsRoom_Text_WallaceWaitOutside, MSGBOX_DEFAULT
checkplayergender
call_if_eq VAR_RESULT, MALE, EverGrandeCity_ChampionsRoom_EventScript_MayCongratulations
call_if_eq VAR_RESULT, FEMALE, EverGrandeCity_ChampionsRoom_EventScript_BrendanCongratulations
closemessage
- applymovement LOCALID_WALLACE, EverGrandeCity_ChampionsRoom_Movement_WallaceExit
- applymovement OBJ_EVENT_ID_PLAYER, EverGrandeCity_ChampionsRoom_Movement_PlayerExit
+ applymovement LOCALID_CHAMPIONS_ROOM_WALLACE, EverGrandeCity_ChampionsRoom_Movement_WallaceExit
+ applymovement LOCALID_PLAYER, EverGrandeCity_ChampionsRoom_Movement_PlayerExit
waitmovement 0
setflag FLAG_HIDE_PETALBURG_GYM_GREETER
warp MAP_EVER_GRANDE_CITY_HALL_OF_FAME, 7, 16
@@ -149,14 +145,14 @@ EverGrandeCity_ChampionsRoom_EventScript_BrendanCongratulations::
return
EverGrandeCity_ChampionsRoom_EventScript_RivalApproachPlayer::
- applymovement LOCALID_RIVAL, EverGrandeCity_ChampionsRoom_Movement_RivalApproachPlayer
+ applymovement LOCALID_CHAMPIONS_ROOM_RIVAL, EverGrandeCity_ChampionsRoom_Movement_RivalApproachPlayer
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
waitmovement 0
return
EverGrandeCity_ChampionsRoom_EventScript_RivalLookBackAndForth::
- applymovement LOCALID_RIVAL, EverGrandeCity_ChampionsRoom_Movement_RivalLookBackAndForth
+ applymovement LOCALID_CHAMPIONS_ROOM_RIVAL, EverGrandeCity_ChampionsRoom_Movement_RivalLookBackAndForth
waitmovement 0
return
diff --git a/data/maps/EverGrandeCity_DrakesRoom/scripts.inc b/data/maps/EverGrandeCity_DrakesRoom/scripts.inc
index 80b1f568c8..c7b4e55f9e 100644
--- a/data/maps/EverGrandeCity_DrakesRoom/scripts.inc
+++ b/data/maps/EverGrandeCity_DrakesRoom/scripts.inc
@@ -10,7 +10,7 @@ EverGrandeCity_DrakesRoom_OnWarp:
.2byte 0
EverGrandeCity_DrakesRoom_EventScript_PlayerTurnNorth::
- turnobject OBJ_EVENT_ID_PLAYER, DIR_NORTH
+ turnobject LOCALID_PLAYER, DIR_NORTH
end
EverGrandeCity_DrakesRoom_OnFrame:
diff --git a/data/maps/EverGrandeCity_GlaciasRoom/scripts.inc b/data/maps/EverGrandeCity_GlaciasRoom/scripts.inc
index b2d556448c..5e70c86cf3 100644
--- a/data/maps/EverGrandeCity_GlaciasRoom/scripts.inc
+++ b/data/maps/EverGrandeCity_GlaciasRoom/scripts.inc
@@ -9,7 +9,7 @@ EverGrandeCity_GlaciasRoom_OnWarp:
.2byte 0
EverGrandeCity_GlaciasRoom_EventScript_PlayerTurnNorth::
- turnobject OBJ_EVENT_ID_PLAYER, DIR_NORTH
+ turnobject LOCALID_PLAYER, DIR_NORTH
end
EverGrandeCity_GlaciasRoom_OnFrame:
diff --git a/data/maps/EverGrandeCity_Hall1/scripts.inc b/data/maps/EverGrandeCity_Hall1/scripts.inc
index 0d4b524c83..51c030ee4e 100644
--- a/data/maps/EverGrandeCity_Hall1/scripts.inc
+++ b/data/maps/EverGrandeCity_Hall1/scripts.inc
@@ -7,6 +7,6 @@ EverGrandeCity_Hall1_OnWarp:
.2byte 0
EverGrandeCity_Hall1_EventScript_TurnPlayerNorth::
- turnobject OBJ_EVENT_ID_PLAYER, DIR_NORTH
+ turnobject LOCALID_PLAYER, DIR_NORTH
end
diff --git a/data/maps/EverGrandeCity_Hall2/scripts.inc b/data/maps/EverGrandeCity_Hall2/scripts.inc
index b81df8b405..847ffcd44f 100644
--- a/data/maps/EverGrandeCity_Hall2/scripts.inc
+++ b/data/maps/EverGrandeCity_Hall2/scripts.inc
@@ -7,6 +7,6 @@ EverGrandeCity_Hall2_OnWarp:
.2byte 0
EverGrandeCity_Hall2_EventScript_TurnPlayerNorth::
- turnobject OBJ_EVENT_ID_PLAYER, DIR_NORTH
+ turnobject LOCALID_PLAYER, DIR_NORTH
end
diff --git a/data/maps/EverGrandeCity_Hall3/scripts.inc b/data/maps/EverGrandeCity_Hall3/scripts.inc
index 4f9245f646..ad188078c6 100644
--- a/data/maps/EverGrandeCity_Hall3/scripts.inc
+++ b/data/maps/EverGrandeCity_Hall3/scripts.inc
@@ -7,6 +7,6 @@ EverGrandeCity_Hall3_OnWarp:
.2byte 0
EverGrandeCity_Hall3_EventScript_TurnPlayerNorth::
- turnobject OBJ_EVENT_ID_PLAYER, DIR_NORTH
+ turnobject LOCALID_PLAYER, DIR_NORTH
end
diff --git a/data/maps/EverGrandeCity_Hall4/scripts.inc b/data/maps/EverGrandeCity_Hall4/scripts.inc
index 3d9ab4603b..290a8e0f73 100644
--- a/data/maps/EverGrandeCity_Hall4/scripts.inc
+++ b/data/maps/EverGrandeCity_Hall4/scripts.inc
@@ -7,6 +7,6 @@ EverGrandeCity_Hall4_OnWarp:
.2byte 0
EverGrandeCity_Hall4_EventScript_TurnPlayerNorth::
- turnobject OBJ_EVENT_ID_PLAYER, DIR_NORTH
+ turnobject LOCALID_PLAYER, DIR_NORTH
end
diff --git a/data/maps/EverGrandeCity_Hall5/scripts.inc b/data/maps/EverGrandeCity_Hall5/scripts.inc
index 9781d114f4..b99b25f2b2 100644
--- a/data/maps/EverGrandeCity_Hall5/scripts.inc
+++ b/data/maps/EverGrandeCity_Hall5/scripts.inc
@@ -7,6 +7,6 @@ EverGrandeCity_Hall5_OnWarp:
.2byte 0
EverGrandeCity_Hall5_EventScript_TurnPlayerNorth::
- turnobject OBJ_EVENT_ID_PLAYER, DIR_NORTH
+ turnobject LOCALID_PLAYER, DIR_NORTH
end
diff --git a/data/maps/EverGrandeCity_HallOfFame/map.json b/data/maps/EverGrandeCity_HallOfFame/map.json
index 82219dfd43..5f3f30c27d 100644
--- a/data/maps/EverGrandeCity_HallOfFame/map.json
+++ b/data/maps/EverGrandeCity_HallOfFame/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_HALL_OF_FAME_WALLACE",
"graphics_id": "OBJ_EVENT_GFX_WALLACE",
"x": 6,
"y": 16,
diff --git a/data/maps/EverGrandeCity_HallOfFame/scripts.inc b/data/maps/EverGrandeCity_HallOfFame/scripts.inc
index 92b01af970..5abb3d407f 100644
--- a/data/maps/EverGrandeCity_HallOfFame/scripts.inc
+++ b/data/maps/EverGrandeCity_HallOfFame/scripts.inc
@@ -1,5 +1,3 @@
-.set LOCALID_WALLACE, 1
-
EverGrandeCity_HallOfFame_MapScripts::
map_script MAP_SCRIPT_ON_FRAME_TABLE, EverGrandeCity_HallOfFame_OnFrame
map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, EverGrandeCity_HallOfFame_OnWarp
@@ -10,7 +8,7 @@ EverGrandeCity_HallOfFame_OnWarp:
.2byte 0
EverGrandeCity_HallOfFame_EventScript_TurnPlayerNorth::
- turnobject OBJ_EVENT_ID_PLAYER, DIR_NORTH
+ turnobject LOCALID_PLAYER, DIR_NORTH
end
EverGrandeCity_HallOfFame_OnFrame:
@@ -19,25 +17,25 @@ EverGrandeCity_HallOfFame_OnFrame:
EverGrandeCity_HallOfFame_EventScript_EnterHallOfFame::
lockall
- applymovement LOCALID_WALLACE, EverGrandeCity_HallOfFame_Movement_WalkIntoHallOfFame1
- applymovement OBJ_EVENT_ID_PLAYER, EverGrandeCity_HallOfFame_Movement_WalkIntoHallOfFame1
+ applymovement LOCALID_HALL_OF_FAME_WALLACE, EverGrandeCity_HallOfFame_Movement_WalkIntoHallOfFame1
+ applymovement LOCALID_PLAYER, EverGrandeCity_HallOfFame_Movement_WalkIntoHallOfFame1
waitmovement 0
- applymovement LOCALID_WALLACE, Common_Movement_WalkInPlaceFasterRight
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
+ applymovement LOCALID_HALL_OF_FAME_WALLACE, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
waitmovement 0
msgbox EverGrandeCity_HallOfFame_Text_HereWeHonorLeagueChampions, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_WALLACE, EverGrandeCity_HallOfFame_Movement_WalkIntoHallOfFame2
- applymovement OBJ_EVENT_ID_PLAYER, EverGrandeCity_HallOfFame_Movement_WalkIntoHallOfFame2
+ applymovement LOCALID_HALL_OF_FAME_WALLACE, EverGrandeCity_HallOfFame_Movement_WalkIntoHallOfFame2
+ applymovement LOCALID_PLAYER, EverGrandeCity_HallOfFame_Movement_WalkIntoHallOfFame2
waitmovement 0
delay 20
- applymovement LOCALID_WALLACE, Common_Movement_WalkInPlaceFasterRight
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
+ applymovement LOCALID_HALL_OF_FAME_WALLACE, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
waitmovement 0
msgbox EverGrandeCity_HallOfFame_Text_LetsRecordYouAndYourPartnersNames, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_WALLACE, Common_Movement_WalkInPlaceFasterUp
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_HALL_OF_FAME_WALLACE, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterUp
waitmovement 0
delay 20
dofieldeffect FLDEFF_HALL_OF_FAME_RECORD
diff --git a/data/maps/EverGrandeCity_PhoebesRoom/scripts.inc b/data/maps/EverGrandeCity_PhoebesRoom/scripts.inc
index ed272eb901..4a6582f498 100644
--- a/data/maps/EverGrandeCity_PhoebesRoom/scripts.inc
+++ b/data/maps/EverGrandeCity_PhoebesRoom/scripts.inc
@@ -9,7 +9,7 @@ EverGrandeCity_PhoebesRoom_OnWarp:
.2byte 0
EverGrandeCity_PhoebesRoom_EventScript_PlayerTurnNorth::
- turnobject OBJ_EVENT_ID_PLAYER, DIR_NORTH
+ turnobject LOCALID_PLAYER, DIR_NORTH
end
EverGrandeCity_PhoebesRoom_OnFrame:
diff --git a/data/maps/EverGrandeCity_PokemonCenter_1F/map.json b/data/maps/EverGrandeCity_PokemonCenter_1F/map.json
index a146dc11a2..b74207871d 100644
--- a/data/maps/EverGrandeCity_PokemonCenter_1F/map.json
+++ b/data/maps/EverGrandeCity_PokemonCenter_1F/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_EVER_GRANDE_NURSE",
"graphics_id": "OBJ_EVENT_GFX_NURSE",
"x": 7,
"y": 2,
@@ -54,6 +55,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_EVER_GRANDE_SCOTT",
"graphics_id": "OBJ_EVENT_GFX_SCOTT",
"x": 9,
"y": 4,
diff --git a/data/maps/EverGrandeCity_PokemonCenter_1F/scripts.inc b/data/maps/EverGrandeCity_PokemonCenter_1F/scripts.inc
index ec45732e8c..0bdd847658 100644
--- a/data/maps/EverGrandeCity_PokemonCenter_1F/scripts.inc
+++ b/data/maps/EverGrandeCity_PokemonCenter_1F/scripts.inc
@@ -1,6 +1,3 @@
-.set LOCALID_NURSE, 1
-.set LOCALID_SCOTT, 4
-
EverGrandeCity_PokemonCenter_1F_MapScripts::
map_script MAP_SCRIPT_ON_TRANSITION, EverGrandeCity_PokemonCenter_1F_OnTransition
map_script MAP_SCRIPT_ON_RESUME, CableClub_OnResume
@@ -17,7 +14,7 @@ EverGrandeCity_PokemonCenter_1F_EventScript_TryShowScott::
return
EverGrandeCity_PokemonCenter_1F_EventScript_Nurse::
- setvar VAR_0x800B, LOCALID_NURSE
+ setvar VAR_0x800B, LOCALID_EVER_GRANDE_NURSE
call Common_EventScript_PkmnCenterNurse
waitmessage
waitbuttonpress
@@ -44,17 +41,17 @@ EverGrandeCity_PokemonCenter_1F_EventScript_Scott::
setflag FLAG_MET_SCOTT_IN_EVERGRANDE
playse SE_EXIT
waitse
- removeobject LOCALID_SCOTT
+ removeobject LOCALID_EVER_GRANDE_SCOTT
release
end
EverGrandeCity_PokemonCenter_1F_EventScript_ScottExitNorth::
- applymovement LOCALID_SCOTT, EverGrandeCity_PokemonCenter_1F_Movement_ScottExitNorth
+ applymovement LOCALID_EVER_GRANDE_SCOTT, EverGrandeCity_PokemonCenter_1F_Movement_ScottExitNorth
waitmovement 0
return
EverGrandeCity_PokemonCenter_1F_EventScript_ScottExit::
- applymovement LOCALID_SCOTT, EverGrandeCity_PokemonCenter_1F_Movement_ScottExit
+ applymovement LOCALID_EVER_GRANDE_SCOTT, EverGrandeCity_PokemonCenter_1F_Movement_ScottExit
waitmovement 0
return
diff --git a/data/maps/EverGrandeCity_PokemonLeague_1F/map.json b/data/maps/EverGrandeCity_PokemonLeague_1F/map.json
index 6dd97c0b72..e599b815b6 100644
--- a/data/maps/EverGrandeCity_PokemonLeague_1F/map.json
+++ b/data/maps/EverGrandeCity_PokemonLeague_1F/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_LEAGUE_NURSE",
"graphics_id": "OBJ_EVENT_GFX_NURSE",
"x": 3,
"y": 2,
@@ -41,6 +42,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_LEAGUE_GUARD_1",
"graphics_id": "OBJ_EVENT_GFX_MAN_3",
"x": 8,
"y": 2,
@@ -54,6 +56,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_LEAGUE_GUARD_2",
"graphics_id": "OBJ_EVENT_GFX_MAN_3",
"x": 11,
"y": 2,
diff --git a/data/maps/EverGrandeCity_PokemonLeague_1F/scripts.inc b/data/maps/EverGrandeCity_PokemonLeague_1F/scripts.inc
index 37e691fa3b..86c4dc93c2 100644
--- a/data/maps/EverGrandeCity_PokemonLeague_1F/scripts.inc
+++ b/data/maps/EverGrandeCity_PokemonLeague_1F/scripts.inc
@@ -1,7 +1,3 @@
-.set LOCALID_NURSE, 1
-.set LOCALID_GUARD_1, 3
-.set LOCALID_GUARD_2, 4
-
EverGrandeCity_PokemonLeague_1F_MapScripts::
map_script MAP_SCRIPT_ON_TRANSITION, EverGrandeCity_PokemonLeague_1F_OnTransition
map_script MAP_SCRIPT_ON_RESUME, CableClub_OnResume
@@ -14,12 +10,12 @@ EverGrandeCity_PokemonLeague_1F_OnTransition:
end
EverGrandeCity_PokemonLeague_1F_EventScript_GuardsBlockDoor::
- setobjectxyperm LOCALID_GUARD_1, 9, 2
- setobjectxyperm LOCALID_GUARD_2, 10, 2
+ setobjectxyperm LOCALID_LEAGUE_GUARD_1, 9, 2
+ setobjectxyperm LOCALID_LEAGUE_GUARD_2, 10, 2
return
EverGrandeCity_PokemonLeague_1F_EventScript_Nurse::
- setvar VAR_0x800B, LOCALID_NURSE
+ setvar VAR_0x800B, LOCALID_LEAGUE_NURSE
call Common_EventScript_PkmnCenterNurse
waitmessage
waitbuttonpress
@@ -60,8 +56,8 @@ EverGrandeCity_PokemonLeague_1F_EventScript_DoorGuard::
delay 120
goto_if_unset FLAG_BADGE06_GET, EverGrandeCity_PokemonLeague_1F_EventScript_NotAllBadges
closemessage
- applymovement LOCALID_GUARD_1, EverGrandeCity_PokemonLeague_1F_Movement_LeftGuardOutOfWay
- applymovement LOCALID_GUARD_2, EverGrandeCity_PokemonLeague_1F_Movement_RightGuardOutOfWay
+ applymovement LOCALID_LEAGUE_GUARD_1, EverGrandeCity_PokemonLeague_1F_Movement_LeftGuardOutOfWay
+ applymovement LOCALID_LEAGUE_GUARD_2, EverGrandeCity_PokemonLeague_1F_Movement_RightGuardOutOfWay
waitmovement 0
delay 10
playfanfare MUS_OBTAIN_BADGE
@@ -69,19 +65,19 @@ EverGrandeCity_PokemonLeague_1F_EventScript_DoorGuard::
waitmessage
waitfanfare
closemessage
- copyobjectxytoperm LOCALID_GUARD_1
- copyobjectxytoperm LOCALID_GUARD_2
+ copyobjectxytoperm LOCALID_LEAGUE_GUARD_1
+ copyobjectxytoperm LOCALID_LEAGUE_GUARD_2
setflag FLAG_ENTERED_ELITE_FOUR
releaseall
end
EverGrandeCity_PokemonLeague_1F_EventScript_PlayerMoveToFrontFromRight::
- applymovement OBJ_EVENT_ID_PLAYER, EverGrandeCity_PokemonLeague_1F_Movement_MoveToFrontFromRight
+ applymovement LOCALID_PLAYER, EverGrandeCity_PokemonLeague_1F_Movement_MoveToFrontFromRight
waitmovement 0
return
EverGrandeCity_PokemonLeague_1F_EventScript_PlayerMoveToFrontFromLeft::
- applymovement OBJ_EVENT_ID_PLAYER, EverGrandeCity_PokemonLeague_1F_Movement_MoveToFrontFromLeft
+ applymovement LOCALID_PLAYER, EverGrandeCity_PokemonLeague_1F_Movement_MoveToFrontFromLeft
waitmovement 0
return
diff --git a/data/maps/EverGrandeCity_SidneysRoom/scripts.inc b/data/maps/EverGrandeCity_SidneysRoom/scripts.inc
index 03b4a4e03b..ac26aa754c 100644
--- a/data/maps/EverGrandeCity_SidneysRoom/scripts.inc
+++ b/data/maps/EverGrandeCity_SidneysRoom/scripts.inc
@@ -28,7 +28,7 @@ EverGrandeCity_SidneysRoom_OnWarp:
.2byte 0
EverGrandeCity_SidneysRoom_EventScript_PlayerTurnNorth::
- turnobject OBJ_EVENT_ID_PLAYER, DIR_NORTH
+ turnobject LOCALID_PLAYER, DIR_NORTH
end
EverGrandeCity_SidneysRoom_OnFrame:
diff --git a/data/maps/FallarborTown_BattleTentBattleRoom/map.json b/data/maps/FallarborTown_BattleTentBattleRoom/map.json
index 7b702dc0e5..a03588eca6 100644
--- a/data/maps/FallarborTown_BattleTentBattleRoom/map.json
+++ b/data/maps/FallarborTown_BattleTentBattleRoom/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_FALLARBOR_TENT_BATTLE_PLAYER",
"graphics_id": "OBJ_EVENT_GFX_VAR_1",
"x": 4,
"y": 8,
@@ -28,6 +29,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_FALLARBOR_TENT_BATTLE_ATTENDANT",
"graphics_id": "OBJ_EVENT_GFX_BLACK_BELT",
"x": 3,
"y": 2,
@@ -41,6 +43,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_FALLARBOR_TENT_BATTLE_OPPONENT",
"graphics_id": "OBJ_EVENT_GFX_VAR_0",
"x": 5,
"y": 1,
diff --git a/data/maps/FallarborTown_BattleTentBattleRoom/scripts.inc b/data/maps/FallarborTown_BattleTentBattleRoom/scripts.inc
index 707995daeb..4c064c5856 100644
--- a/data/maps/FallarborTown_BattleTentBattleRoom/scripts.inc
+++ b/data/maps/FallarborTown_BattleTentBattleRoom/scripts.inc
@@ -1,17 +1,13 @@
-.set LOCALID_PLAYER, 1
-.set LOCALID_ATTENDANT, 2
-.set LOCALID_OPPONENT, 3
-
+@ On this map the player will automatically walk into the room, but the camera is supposed to remain still.
+@ To do this GF sets the player (LOCALID_PLAYER) invisible and creates a fake player object (LOCALID_FALLARBOR_TENT_BATTLE_PLAYER).
+@ The graphics of this fake player object are represented with VAR_OBJ_GFX_ID_1.
+@ The graphics of the opponent are represented with VAR_OBJ_GFX_ID_0, which will ultimately be set by tower_setopponent.
FallarborTown_BattleTentBattleRoom_MapScripts::
map_script MAP_SCRIPT_ON_TRANSITION, FallarborTown_BattleTentBattleRoom_OnTransition
map_script MAP_SCRIPT_ON_FRAME_TABLE, FallarborTown_BattleTentBattleRoom_OnFrame
map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, FallarborTown_BattleTentBattleRoom_OnWarp
.byte 0
- @ On this map the player (OBJ_EVENT_ID_PLAYER) is hidden
- @ The player is represented instead by object event 1, which has the gfx id VAR_OBJ_GFX_ID_1
- @ The opponent is represented by object event 3, which has the gfx id VAR_OBJ_GFX_ID_0
-
FallarborTown_BattleTentBattleRoom_OnTransition:
call FallarborTown_BattleTentBattleRoom_EventScript_SetPlayerGfx
end
@@ -38,17 +34,17 @@ FallarborTown_BattleTentBattleRoom_OnFrame:
FallarborTown_BattleTentBattleRoom_EventScript_EnterRoom::
lockall
- showobjectat LOCALID_PLAYER, MAP_FALLARBOR_TOWN_BATTLE_TENT_BATTLE_ROOM
- applymovement LOCALID_PLAYER, FallarborTown_BattleTentBattleRoom_Movement_PlayerEnter
+ showobjectat LOCALID_FALLARBOR_TENT_BATTLE_PLAYER, MAP_FALLARBOR_TOWN_BATTLE_TENT_BATTLE_ROOM
+ applymovement LOCALID_FALLARBOR_TENT_BATTLE_PLAYER, FallarborTown_BattleTentBattleRoom_Movement_PlayerEnter
waitmovement 0
frontier_get FRONTIER_DATA_BATTLE_NUM
goto_if_ne VAR_RESULT, 0, FallarborTown_BattleTentBattleRoom_EventScript_ResumeChallenge
FallarborTown_BattleTentBattleRoom_EventScript_NextOpponentEnter::
tower_setopponent
- addobject LOCALID_OPPONENT
- applymovement LOCALID_OPPONENT, FallarborTown_BattleTentBattleRoom_Movement_OpponentEnter
+ addobject LOCALID_FALLARBOR_TENT_BATTLE_OPPONENT
+ applymovement LOCALID_FALLARBOR_TENT_BATTLE_OPPONENT, FallarborTown_BattleTentBattleRoom_Movement_OpponentEnter
waitmovement 0
- applymovement LOCALID_ATTENDANT, FallarborTown_BattleTentBattleRoom_Movement_AttendantJump
+ applymovement LOCALID_FALLARBOR_TENT_BATTLE_ATTENDANT, FallarborTown_BattleTentBattleRoom_Movement_AttendantJump
playse SE_M_BELLY_DRUM
waitse
waitmovement 0
@@ -59,7 +55,7 @@ FallarborTown_BattleTentBattleRoom_EventScript_NextOpponentEnter::
call BattleFrontier_BattleArenaBattleRoom_EventScript_DoArenaBattle
switch VAR_RESULT
case 1, FallarborTown_BattleTentBattleRoom_EventScript_DefeatedOpponent
- applymovement LOCALID_ATTENDANT, FallarborTown_BattleTentBattleRoom_Movement_AttendantJump
+ applymovement LOCALID_FALLARBOR_TENT_BATTLE_ATTENDANT, FallarborTown_BattleTentBattleRoom_Movement_AttendantJump
playse SE_M_SNORE
waitse
waitmovement 0
@@ -72,7 +68,7 @@ FallarborTown_BattleTentBattleRoom_EventScript_WarpToLobbyLost::
waitstate
FallarborTown_BattleTentBattleRoom_EventScript_DefeatedOpponent::
- applymovement LOCALID_ATTENDANT, FallarborTown_BattleTentBattleRoom_Movement_AttendantJump
+ applymovement LOCALID_FALLARBOR_TENT_BATTLE_ATTENDANT, FallarborTown_BattleTentBattleRoom_Movement_AttendantJump
playse SE_BANG
waitse
waitmovement 0
@@ -84,12 +80,12 @@ FallarborTown_BattleTentBattleRoom_EventScript_IncrementBattleNum::
frontier_set FRONTIER_DATA_BATTLE_NUM, VAR_RESULT
switch VAR_RESULT
case 3, FallarborTown_BattleTentBattleRoom_EventScript_WarpToLobbyWon
- applymovement LOCALID_OPPONENT, FallarborTown_BattleTentBattleRoom_Movement_OpponentExit
+ applymovement LOCALID_FALLARBOR_TENT_BATTLE_OPPONENT, FallarborTown_BattleTentBattleRoom_Movement_OpponentExit
waitmovement 0
- removeobject LOCALID_OPPONENT
- applymovement LOCALID_ATTENDANT, FallarborTown_BattleTentBattleRoom_Movement_AttendantApproachPlayer
+ removeobject LOCALID_FALLARBOR_TENT_BATTLE_OPPONENT
+ applymovement LOCALID_FALLARBOR_TENT_BATTLE_ATTENDANT, FallarborTown_BattleTentBattleRoom_Movement_AttendantApproachPlayer
waitmovement 0
- applymovement LOCALID_PLAYER, FallarborTown_BattleTentBattleRoom_Movement_PlayerFaceAttendant
+ applymovement LOCALID_FALLARBOR_TENT_BATTLE_PLAYER, FallarborTown_BattleTentBattleRoom_Movement_PlayerFaceAttendant
waitmovement 0
msgbox BattleFrontier_BattleArenaBattleRoom_Text_MonsWillBeRestored, MSGBOX_DEFAULT
special LoadPlayerParty
@@ -126,9 +122,9 @@ FallarborTown_BattleTentBattleRoom_EventScript_AskRetireChallenge::
FallarborTown_BattleTentBattleRoom_EventScript_ContinueChallenge::
closemessage
- applymovement LOCALID_ATTENDANT, FallarborTown_BattleTentBattleRoom_Movement_AttendantReturnToPos
+ applymovement LOCALID_FALLARBOR_TENT_BATTLE_ATTENDANT, FallarborTown_BattleTentBattleRoom_Movement_AttendantReturnToPos
waitmovement 0
- applymovement LOCALID_PLAYER, FallarborTown_BattleTentBattleRoom_Movement_PlayerFaceBattle
+ applymovement LOCALID_FALLARBOR_TENT_BATTLE_PLAYER, FallarborTown_BattleTentBattleRoom_Movement_PlayerFaceBattle
waitmovement 0
goto FallarborTown_BattleTentBattleRoom_EventScript_NextOpponentEnter
waitstate
@@ -168,9 +164,9 @@ FallarborTown_BattleTentBattleRoom_EventScript_PauseChallenge::
end
FallarborTown_BattleTentBattleRoom_EventScript_ResumeChallenge::
- applymovement LOCALID_ATTENDANT, FallarborTown_BattleTentBattleRoom_Movement_AttendantApproachPlayer
+ applymovement LOCALID_FALLARBOR_TENT_BATTLE_ATTENDANT, FallarborTown_BattleTentBattleRoom_Movement_AttendantApproachPlayer
waitmovement 0
- applymovement LOCALID_PLAYER, FallarborTown_BattleTentBattleRoom_Movement_PlayerFaceAttendant
+ applymovement LOCALID_FALLARBOR_TENT_BATTLE_PLAYER, FallarborTown_BattleTentBattleRoom_Movement_PlayerFaceAttendant
waitmovement 0
goto FallarborTown_BattleTentBattleRoom_EventScript_AskContinueChallenge
end
@@ -234,9 +230,9 @@ FallarborTown_BattleTentBattleRoom_OnWarp:
.2byte 0
FallarborTown_BattleTentBattleRoom_EventScript_SetUpObjects::
- hideobjectat OBJ_EVENT_ID_PLAYER, MAP_FALLARBOR_TOWN_BATTLE_TENT_BATTLE_ROOM
hideobjectat LOCALID_PLAYER, MAP_FALLARBOR_TOWN_BATTLE_TENT_BATTLE_ROOM
- removeobject LOCALID_OPPONENT
+ hideobjectat LOCALID_FALLARBOR_TENT_BATTLE_PLAYER, MAP_FALLARBOR_TOWN_BATTLE_TENT_BATTLE_ROOM
+ removeobject LOCALID_FALLARBOR_TENT_BATTLE_OPPONENT
setvar VAR_TEMP_1, 1
end
diff --git a/data/maps/FallarborTown_BattleTentCorridor/map.json b/data/maps/FallarborTown_BattleTentCorridor/map.json
index c086a32880..111889fe07 100644
--- a/data/maps/FallarborTown_BattleTentCorridor/map.json
+++ b/data/maps/FallarborTown_BattleTentCorridor/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_FALLARBOR_TENT_CORRIDOR_ATTENDANT",
"graphics_id": "OBJ_EVENT_GFX_BLACK_BELT",
"x": 2,
"y": 6,
diff --git a/data/maps/FallarborTown_BattleTentCorridor/scripts.inc b/data/maps/FallarborTown_BattleTentCorridor/scripts.inc
index 023dc919f8..685ffc5a5a 100644
--- a/data/maps/FallarborTown_BattleTentCorridor/scripts.inc
+++ b/data/maps/FallarborTown_BattleTentCorridor/scripts.inc
@@ -1,5 +1,3 @@
-.set LOCALID_ATTENDANT, 1
-
FallarborTown_BattleTentCorridor_MapScripts::
map_script MAP_SCRIPT_ON_FRAME_TABLE, FallarborTown_BattleTentCorridor_OnFrame
.byte 0
@@ -11,13 +9,13 @@ FallarborTown_BattleTentCorridor_OnFrame:
FallarborTown_BattleTentCorridor_EventScript_EnterCorridor::
lockall
setvar VAR_TEMP_0, 1
- applymovement LOCALID_ATTENDANT, FallarborTown_BattleTentCorridor_Movement_WalkToDoor
- applymovement OBJ_EVENT_ID_PLAYER, FallarborTown_BattleTentCorridor_Movement_WalkToDoor
+ applymovement LOCALID_FALLARBOR_TENT_CORRIDOR_ATTENDANT, FallarborTown_BattleTentCorridor_Movement_WalkToDoor
+ applymovement LOCALID_PLAYER, FallarborTown_BattleTentCorridor_Movement_WalkToDoor
waitmovement 0
opendoor 2, 1
waitdooranim
- applymovement LOCALID_ATTENDANT, FallarborTown_BattleTentCorridor_Movement_AttendantEnterDoor
- applymovement OBJ_EVENT_ID_PLAYER, FallarborTown_BattleTentCorridor_Movement_PlayerEnterDoor
+ applymovement LOCALID_FALLARBOR_TENT_CORRIDOR_ATTENDANT, FallarborTown_BattleTentCorridor_Movement_AttendantEnterDoor
+ applymovement LOCALID_PLAYER, FallarborTown_BattleTentCorridor_Movement_PlayerEnterDoor
waitmovement 0
closedoor 2, 1
waitdooranim
diff --git a/data/maps/FallarborTown_BattleTentLobby/map.json b/data/maps/FallarborTown_BattleTentLobby/map.json
index b8f274df31..16a0b81dfa 100644
--- a/data/maps/FallarborTown_BattleTentLobby/map.json
+++ b/data/maps/FallarborTown_BattleTentLobby/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_FALLARBOR_TENT_ATTENDANT",
"graphics_id": "OBJ_EVENT_GFX_BLACK_BELT",
"x": 6,
"y": 5,
diff --git a/data/maps/FallarborTown_BattleTentLobby/scripts.inc b/data/maps/FallarborTown_BattleTentLobby/scripts.inc
index 8f705075c7..edd6cd8d91 100644
--- a/data/maps/FallarborTown_BattleTentLobby/scripts.inc
+++ b/data/maps/FallarborTown_BattleTentLobby/scripts.inc
@@ -1,5 +1,3 @@
-.set LOCALID_ATTENDANT, 1
-
FallarborTown_BattleTentLobby_MapScripts::
map_script MAP_SCRIPT_ON_FRAME_TABLE, FallarborTown_BattleTentLobby_OnFrame
map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, FallarborTown_BattleTentLobby_OnWarp
@@ -11,7 +9,7 @@ FallarborTown_BattleTentLobby_OnWarp:
FallarborTown_BattleTentLobby_EventScript_TurnPlayerNorth::
setvar VAR_TEMP_1, 1
- turnobject OBJ_EVENT_ID_PLAYER, DIR_NORTH
+ turnobject LOCALID_PLAYER, DIR_NORTH
end
FallarborTown_BattleTentLobby_OnFrame:
@@ -191,13 +189,13 @@ FallarborTown_BattleTentLobby_EventScript_EndCancelChallenge::
end
FallarborTown_BattleTentLobby_EventScript_WalkToDoor::
- applymovement LOCALID_ATTENDANT, FallarborTown_BattleTentLobby_Movement_AttendantWalkToDoor
- applymovement OBJ_EVENT_ID_PLAYER, FallarborTown_BattleTentLobby_Movement_PlayerWalkToDoor
+ applymovement LOCALID_FALLARBOR_TENT_ATTENDANT, FallarborTown_BattleTentLobby_Movement_AttendantWalkToDoor
+ applymovement LOCALID_PLAYER, FallarborTown_BattleTentLobby_Movement_PlayerWalkToDoor
waitmovement 0
opendoor 6, 1
waitdooranim
- applymovement LOCALID_ATTENDANT, FallarborTown_BattleTentLobby_Movement_AttendantEnterDoor
- applymovement OBJ_EVENT_ID_PLAYER, FallarborTown_BattleTentLobby_Movement_PlayerEnterDoor
+ applymovement LOCALID_FALLARBOR_TENT_ATTENDANT, FallarborTown_BattleTentLobby_Movement_AttendantEnterDoor
+ applymovement LOCALID_PLAYER, FallarborTown_BattleTentLobby_Movement_PlayerEnterDoor
waitmovement 0
closedoor 6, 1
waitdooranim
diff --git a/data/maps/FallarborTown_Mart/map.json b/data/maps/FallarborTown_Mart/map.json
index c72605a36d..b4e4560577 100644
--- a/data/maps/FallarborTown_Mart/map.json
+++ b/data/maps/FallarborTown_Mart/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_FALLARBOR_MART_CLERK",
"graphics_id": "OBJ_EVENT_GFX_MART_EMPLOYEE",
"x": 1,
"y": 3,
diff --git a/data/maps/FallarborTown_MoveRelearnersHouse/map.json b/data/maps/FallarborTown_MoveRelearnersHouse/map.json
index 9479677200..9cde3440cb 100644
--- a/data/maps/FallarborTown_MoveRelearnersHouse/map.json
+++ b/data/maps/FallarborTown_MoveRelearnersHouse/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_MOVE_RELEARNER",
"graphics_id": "OBJ_EVENT_GFX_FAT_MAN",
"x": 4,
"y": 4,
diff --git a/data/maps/FallarborTown_MoveRelearnersHouse/scripts.inc b/data/maps/FallarborTown_MoveRelearnersHouse/scripts.inc
index f17754328d..8dd70b9b04 100644
--- a/data/maps/FallarborTown_MoveRelearnersHouse/scripts.inc
+++ b/data/maps/FallarborTown_MoveRelearnersHouse/scripts.inc
@@ -1,5 +1,3 @@
-.set LOCALID_MOVE_RELEARNER, 1
-
FallarborTown_MoveRelearnersHouse_MapScripts::
.byte 0
diff --git a/data/maps/FallarborTown_PokemonCenter_1F/map.json b/data/maps/FallarborTown_PokemonCenter_1F/map.json
index 0c3dd726df..b3ca4a253e 100644
--- a/data/maps/FallarborTown_PokemonCenter_1F/map.json
+++ b/data/maps/FallarborTown_PokemonCenter_1F/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_FALLARBOR_NURSE",
"graphics_id": "OBJ_EVENT_GFX_NURSE",
"x": 7,
"y": 2,
@@ -54,6 +55,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_FALLARBOR_LANETTE",
"graphics_id": "OBJ_EVENT_GFX_WOMAN_2",
"x": 10,
"y": 2,
diff --git a/data/maps/FallarborTown_PokemonCenter_1F/scripts.inc b/data/maps/FallarborTown_PokemonCenter_1F/scripts.inc
index bc9e7c25f8..c9d4c04fa8 100644
--- a/data/maps/FallarborTown_PokemonCenter_1F/scripts.inc
+++ b/data/maps/FallarborTown_PokemonCenter_1F/scripts.inc
@@ -1,6 +1,3 @@
-.set LOCALID_NURSE, 1
-.set LOCALID_LANETTE, 4
-
FallarborTown_PokemonCenter_1F_MapScripts::
map_script MAP_SCRIPT_ON_TRANSITION, FallarborTown_PokemonCenter_1F_OnTransition
map_script MAP_SCRIPT_ON_RESUME, CableClub_OnResume
@@ -12,7 +9,7 @@ FallarborTown_PokemonCenter_1F_OnTransition:
end
FallarborTown_PokemonCenter_1F_EventScript_Nurse::
- setvar VAR_0x800B, LOCALID_NURSE
+ setvar VAR_0x800B, LOCALID_FALLARBOR_NURSE
call Common_EventScript_PkmnCenterNurse
waitmessage
waitbuttonpress
@@ -38,20 +35,20 @@ FallarborTown_PokemonCenter_1F_EventScript_Lanette::
end
FallarborTown_PokemonCenter_1F_EventScript_LanetteExitNorth::
- applymovement LOCALID_LANETTE, FallarborTown_PokemonCenter_1F_Movement_LanetteExitNorth
+ applymovement LOCALID_FALLARBOR_LANETTE, FallarborTown_PokemonCenter_1F_Movement_LanetteExitNorth
waitmovement 0
goto FallarborTown_PokemonCenter_1F_EventScript_LanetteExited
end
FallarborTown_PokemonCenter_1F_EventScript_LanetteExitWest::
- applymovement LOCALID_LANETTE, FallarborTown_PokemonCenter_1F_Movement_LanetteExitWest
+ applymovement LOCALID_FALLARBOR_LANETTE, FallarborTown_PokemonCenter_1F_Movement_LanetteExitWest
waitmovement 0
goto FallarborTown_PokemonCenter_1F_EventScript_LanetteExited
end
FallarborTown_PokemonCenter_1F_EventScript_LanetteExited::
playse SE_SLIDING_DOOR
- removeobject LOCALID_LANETTE
+ removeobject LOCALID_FALLARBOR_LANETTE
clearflag FLAG_HIDE_LANETTES_HOUSE_LANETTE
release
end
diff --git a/data/maps/FarawayIsland_Entrance/map.json b/data/maps/FarawayIsland_Entrance/map.json
index bd42f12953..bf3ea1d863 100644
--- a/data/maps/FarawayIsland_Entrance/map.json
+++ b/data/maps/FarawayIsland_Entrance/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_FARAWAY_ISLAND_SAILOR",
"graphics_id": "OBJ_EVENT_GFX_SAILOR",
"x": 13,
"y": 39,
@@ -28,6 +29,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_FARAWAY_ISLAND_SS_TIDAL",
"graphics_id": "OBJ_EVENT_GFX_SS_TIDAL",
"x": 13,
"y": 41,
diff --git a/data/maps/FarawayIsland_Entrance/scripts.inc b/data/maps/FarawayIsland_Entrance/scripts.inc
index 504b0dc6a6..13d37f4710 100644
--- a/data/maps/FarawayIsland_Entrance/scripts.inc
+++ b/data/maps/FarawayIsland_Entrance/scripts.inc
@@ -1,6 +1,3 @@
-.set LOCALID_SAILOR, 1
-.set LOCALID_SS_TIDAL, 2
-
FarawayIsland_Entrance_MapScripts::
map_script MAP_SCRIPT_ON_TRANSITION, FarawayIsland_Entrance_OnTransition
.byte 0
@@ -29,8 +26,8 @@ FarawayIsland_Entrance_EventScript_Sailor::
applymovement VAR_LAST_TALKED, Common_Movement_WalkInPlaceFasterDown
waitmovement 0
delay 30
- hideobjectat LOCALID_SAILOR, MAP_FARAWAY_ISLAND_ENTRANCE
- setvar VAR_0x8004, LOCALID_SS_TIDAL
+ hideobjectat LOCALID_FARAWAY_ISLAND_SAILOR, MAP_FARAWAY_ISLAND_ENTRANCE
+ setvar VAR_0x8004, LOCALID_FARAWAY_ISLAND_SS_TIDAL
call Common_EventScript_FerryDepartIsland
warp MAP_LILYCOVE_CITY_HARBOR, 8, 11
waitstate
diff --git a/data/maps/FarawayIsland_Interior/map.json b/data/maps/FarawayIsland_Interior/map.json
index 14850995ca..53be2ae914 100644
--- a/data/maps/FarawayIsland_Interior/map.json
+++ b/data/maps/FarawayIsland_Interior/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_FARAWAY_ISLAND_MEW",
"graphics_id": "OBJ_EVENT_GFX_MEW",
"x": 13,
"y": 17,
diff --git a/data/maps/FarawayIsland_Interior/scripts.inc b/data/maps/FarawayIsland_Interior/scripts.inc
index d3d519ed15..fe6d35df8a 100644
--- a/data/maps/FarawayIsland_Interior/scripts.inc
+++ b/data/maps/FarawayIsland_Interior/scripts.inc
@@ -1,5 +1,3 @@
-@ Note: LOCALID_FARAWAY_ISLAND_MEW is a local id for this map used elsewhere. It's defined in event_objects.h
-
FarawayIsland_Interior_MapScripts::
map_script MAP_SCRIPT_ON_RESUME, FarawayIsland_Interior_OnResume
map_script MAP_SCRIPT_ON_TRANSITION, FarawayIsland_Interior_OnTransition
diff --git a/data/maps/FortreeCity_House4/map.json b/data/maps/FortreeCity_House4/map.json
index 8123d2c4d7..778f0d7465 100644
--- a/data/maps/FortreeCity_House4/map.json
+++ b/data/maps/FortreeCity_House4/map.json
@@ -41,6 +41,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_FORTREE_HOUSE_WINGULL",
"graphics_id": "OBJ_EVENT_GFX_WINGULL",
"x": 2,
"y": 3,
diff --git a/data/maps/FortreeCity_House4/scripts.inc b/data/maps/FortreeCity_House4/scripts.inc
index ed91674173..8b10494571 100644
--- a/data/maps/FortreeCity_House4/scripts.inc
+++ b/data/maps/FortreeCity_House4/scripts.inc
@@ -1,5 +1,3 @@
-.set LOCALID_WINGULL, 3
-
FortreeCity_House4_MapScripts::
.byte 0
@@ -16,9 +14,9 @@ FortreeCity_House4_EventScript_Boy::
closemessage
setflag FLAG_WINGULL_SENT_ON_ERRAND
clearflag FLAG_HIDE_MOSSDEEP_CITY_HOUSE_2_WINGULL
- applymovement LOCALID_WINGULL, FortreeCity_House4_Movement_WingullExit
+ applymovement LOCALID_FORTREE_HOUSE_WINGULL, FortreeCity_House4_Movement_WingullExit
waitmovement 0
- removeobject LOCALID_WINGULL
+ removeobject LOCALID_FORTREE_HOUSE_WINGULL
releaseall
end
diff --git a/data/maps/FortreeCity_Mart/map.json b/data/maps/FortreeCity_Mart/map.json
index 27a82e69f3..8620c47863 100644
--- a/data/maps/FortreeCity_Mart/map.json
+++ b/data/maps/FortreeCity_Mart/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_FORTREE_MART_CLERK",
"graphics_id": "OBJ_EVENT_GFX_MART_EMPLOYEE",
"x": 1,
"y": 3,
diff --git a/data/maps/FortreeCity_PokemonCenter_1F/map.json b/data/maps/FortreeCity_PokemonCenter_1F/map.json
index e28907ad4b..6b64978d15 100644
--- a/data/maps/FortreeCity_PokemonCenter_1F/map.json
+++ b/data/maps/FortreeCity_PokemonCenter_1F/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_FORTREE_NURSE",
"graphics_id": "OBJ_EVENT_GFX_NURSE",
"x": 7,
"y": 2,
diff --git a/data/maps/FortreeCity_PokemonCenter_1F/scripts.inc b/data/maps/FortreeCity_PokemonCenter_1F/scripts.inc
index d1ea3d8648..2cc62201e1 100644
--- a/data/maps/FortreeCity_PokemonCenter_1F/scripts.inc
+++ b/data/maps/FortreeCity_PokemonCenter_1F/scripts.inc
@@ -1,5 +1,3 @@
-.set LOCALID_NURSE, 1
-
FortreeCity_PokemonCenter_1F_MapScripts::
map_script MAP_SCRIPT_ON_TRANSITION, FortreeCity_PokemonCenter_1F_OnTransition
map_script MAP_SCRIPT_ON_RESUME, CableClub_OnResume
@@ -10,7 +8,7 @@ FortreeCity_PokemonCenter_1F_OnTransition:
end
FortreeCity_PokemonCenter_1F_EventScript_Nurse::
- setvar VAR_0x800B, LOCALID_NURSE
+ setvar VAR_0x800B, LOCALID_FORTREE_NURSE
call Common_EventScript_PkmnCenterNurse
waitmessage
waitbuttonpress
diff --git a/data/maps/GraniteCave_StevensRoom/map.json b/data/maps/GraniteCave_StevensRoom/map.json
index 280af56c81..9529a999e2 100644
--- a/data/maps/GraniteCave_StevensRoom/map.json
+++ b/data/maps/GraniteCave_StevensRoom/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_GRANITE_CAVE_STEVEN",
"graphics_id": "OBJ_EVENT_GFX_STEVEN",
"x": 7,
"y": 8,
diff --git a/data/maps/GraniteCave_StevensRoom/scripts.inc b/data/maps/GraniteCave_StevensRoom/scripts.inc
index eb32c26293..68d8b829db 100644
--- a/data/maps/GraniteCave_StevensRoom/scripts.inc
+++ b/data/maps/GraniteCave_StevensRoom/scripts.inc
@@ -1,5 +1,3 @@
-.set LOCALID_STEVEN, 1
-
GraniteCave_StevensRoom_MapScripts::
.byte 0
@@ -29,24 +27,24 @@ GraniteCave_StevensRoom_EventScript_Steven::
call_if_eq VAR_FACING, DIR_WEST, GraniteCave_StevensRoom_EventScript_StevenExitWestEast
call_if_eq VAR_FACING, DIR_EAST, GraniteCave_StevensRoom_EventScript_StevenExitWestEast
playse SE_EXIT
- removeobject LOCALID_STEVEN
+ removeobject LOCALID_GRANITE_CAVE_STEVEN
release
end
GraniteCave_StevensRoom_EventScript_StevenExitNorth::
- applymovement LOCALID_STEVEN, GraniteCave_StevensRoom_Movement_StevenExit
+ applymovement LOCALID_GRANITE_CAVE_STEVEN, GraniteCave_StevensRoom_Movement_StevenExit
waitmovement 0
return
GraniteCave_StevensRoom_EventScript_StevenExitWestEast::
- applymovement OBJ_EVENT_ID_PLAYER, GraniteCave_StevensRoom_Movement_PlayerTurnTowardExit
- applymovement LOCALID_STEVEN, GraniteCave_StevensRoom_Movement_StevenExit
+ applymovement LOCALID_PLAYER, GraniteCave_StevensRoom_Movement_PlayerTurnTowardExit
+ applymovement LOCALID_GRANITE_CAVE_STEVEN, GraniteCave_StevensRoom_Movement_StevenExit
waitmovement 0
return
GraniteCave_StevensRoom_EventScript_StevenExitSouth::
- applymovement OBJ_EVENT_ID_PLAYER, GraniteCave_StevensRoom_Movement_PlayerTurnTowardExit
- applymovement LOCALID_STEVEN, GraniteCave_StevensRoom_Movement_StevenExitSouth
+ applymovement LOCALID_PLAYER, GraniteCave_StevensRoom_Movement_PlayerTurnTowardExit
+ applymovement LOCALID_GRANITE_CAVE_STEVEN, GraniteCave_StevensRoom_Movement_StevenExitSouth
waitmovement 0
return
diff --git a/data/maps/InsideOfTruck/map.json b/data/maps/InsideOfTruck/map.json
index 4b027853ad..f767ddf43f 100644
--- a/data/maps/InsideOfTruck/map.json
+++ b/data/maps/InsideOfTruck/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_TRUCK_BOX_TOP",
"graphics_id": "OBJ_EVENT_GFX_MOVING_BOX",
"x": 0,
"y": 0,
@@ -28,6 +29,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_TRUCK_BOX_BOTTOM_L",
"graphics_id": "OBJ_EVENT_GFX_MOVING_BOX",
"x": 0,
"y": 3,
@@ -41,6 +43,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_TRUCK_BOX_BOTTOM_R",
"graphics_id": "OBJ_EVENT_GFX_MOVING_BOX",
"x": 2,
"y": 3,
diff --git a/data/maps/JaggedPass/map.json b/data/maps/JaggedPass/map.json
index 0fd4f1aa4b..c488421d29 100644
--- a/data/maps/JaggedPass/map.json
+++ b/data/maps/JaggedPass/map.json
@@ -67,6 +67,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_MAGMA_HIDEOUT_GUARD",
"graphics_id": "OBJ_EVENT_GFX_MAGMA_MEMBER_M",
"x": 16,
"y": 19,
diff --git a/data/maps/JaggedPass/scripts.inc b/data/maps/JaggedPass/scripts.inc
index f969a4dec6..76cd9527b1 100644
--- a/data/maps/JaggedPass/scripts.inc
+++ b/data/maps/JaggedPass/scripts.inc
@@ -1,5 +1,3 @@
-.set LOCALID_HIDEOUT_GUARD, 5
-
JaggedPass_MapScripts::
map_script MAP_SCRIPT_ON_RESUME, JaggedPass_OnResume
map_script MAP_SCRIPT_ON_TRANSITION, JaggedPass_OnTransition
@@ -69,27 +67,27 @@ JaggedPass_EventScript_MagmaHideoutGuard::
goto_if_set FLAG_BEAT_MAGMA_GRUNT_JAGGED_PASS, JaggedPass_EventScript_GuardDefeated
waitse
playse SE_PIN
- applymovement LOCALID_HIDEOUT_GUARD, Common_Movement_ExclamationMark
+ applymovement LOCALID_MAGMA_HIDEOUT_GUARD, Common_Movement_ExclamationMark
waitmovement 0
- applymovement LOCALID_HIDEOUT_GUARD, Common_Movement_Delay48
+ applymovement LOCALID_MAGMA_HIDEOUT_GUARD, Common_Movement_Delay48
waitmovement 0
- applymovement LOCALID_HIDEOUT_GUARD, Common_Movement_FacePlayer
+ applymovement LOCALID_MAGMA_HIDEOUT_GUARD, Common_Movement_FacePlayer
waitmovement 0
msgbox JaggedPass_Text_GruntIntro, MSGBOX_DEFAULT
closemessage
trainerbattle_no_intro TRAINER_GRUNT_JAGGED_PASS, JaggedPass_Text_GruntDefeat
setflag FLAG_BEAT_MAGMA_GRUNT_JAGGED_PASS
- applymovement LOCALID_HIDEOUT_GUARD, Common_Movement_FaceOriginalDirection
+ applymovement LOCALID_MAGMA_HIDEOUT_GUARD, Common_Movement_FaceOriginalDirection
waitmovement 0
releaseall
end
JaggedPass_EventScript_GuardDefeated::
- applymovement LOCALID_HIDEOUT_GUARD, Common_Movement_FacePlayer
+ applymovement LOCALID_MAGMA_HIDEOUT_GUARD, Common_Movement_FacePlayer
waitmovement 0
msgbox JaggedPass_Text_GoWhereverYouWant, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_HIDEOUT_GUARD, Common_Movement_FaceOriginalDirection
+ applymovement LOCALID_MAGMA_HIDEOUT_GUARD, Common_Movement_FaceOriginalDirection
waitmovement 0
releaseall
end
diff --git a/data/maps/LavaridgeTown/map.json b/data/maps/LavaridgeTown/map.json
index ecf7c5b9f1..1009c8c9d9 100644
--- a/data/maps/LavaridgeTown/map.json
+++ b/data/maps/LavaridgeTown/map.json
@@ -99,6 +99,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_LAVARIDGE_RIVAL_ON_BIKE",
"graphics_id": "OBJ_EVENT_GFX_VAR_3",
"x": 6,
"y": 16,
@@ -112,6 +113,7 @@
"flag": "FLAG_HIDE_LAVARIDGE_TOWN_RIVAL_ON_BIKE"
},
{
+ "local_id": "LOCALID_LAVARIDGE_RIVAL",
"graphics_id": "OBJ_EVENT_GFX_VAR_0",
"x": 12,
"y": 15,
diff --git a/data/maps/LavaridgeTown/scripts.inc b/data/maps/LavaridgeTown/scripts.inc
index 3ce226c4c1..2ba3f1cb21 100644
--- a/data/maps/LavaridgeTown/scripts.inc
+++ b/data/maps/LavaridgeTown/scripts.inc
@@ -1,6 +1,3 @@
-.set LOCALID_RIVAL_ON_BIKE, 7
-.set LOCALID_RIVAL, 8
-
LavaridgeTown_MapScripts::
map_script MAP_SCRIPT_ON_TRANSITION, LavaridgeTown_OnTransition
map_script MAP_SCRIPT_ON_FRAME_TABLE, LavaridgeTown_OnFrame
@@ -26,9 +23,9 @@ LavaridgeTown_EventScript_CheckSetRivalPos::
return
LavaridgeTown_EventScript_SetRivalPos::
- setobjectxyperm LOCALID_RIVAL, 11, 9
- setobjectxyperm LOCALID_RIVAL_ON_BIKE, 9, 8
- setobjectmovementtype LOCALID_RIVAL_ON_BIKE, MOVEMENT_TYPE_FACE_UP
+ setobjectxyperm LOCALID_LAVARIDGE_RIVAL, 11, 9
+ setobjectxyperm LOCALID_LAVARIDGE_RIVAL_ON_BIKE, 9, 8
+ setobjectmovementtype LOCALID_LAVARIDGE_RIVAL_ON_BIKE, MOVEMENT_TYPE_FACE_UP
clearflag FLAG_HIDE_LAVARIDGE_TOWN_RIVAL
return
@@ -78,12 +75,12 @@ LavaridgeTown_EventScript_BrendanGiveGoGoggles::
LavaridgeTown_EventScript_RivalExit::
closemessage
- removeobject LOCALID_RIVAL
- addobject LOCALID_RIVAL_ON_BIKE
+ removeobject LOCALID_LAVARIDGE_RIVAL
+ addobject LOCALID_LAVARIDGE_RIVAL_ON_BIKE
delay 30
call_if_eq VAR_0x8008, 9, LavaridgeTown_EventScript_RivalExit1
call_if_ne VAR_0x8008, 9, LavaridgeTown_EventScript_RivalExit2
- removeobject LOCALID_RIVAL_ON_BIKE
+ removeobject LOCALID_LAVARIDGE_RIVAL_ON_BIKE
setvar VAR_LAVARIDGE_TOWN_STATE, 2
clearflag FLAG_HIDE_MAP_NAME_POPUP
savebgm MUS_DUMMY
@@ -100,52 +97,52 @@ LavaridgeTown_EventScript_PlayBrendanMusic::
return
LavaridgeTown_EventScript_RivalNoticePlayer::
- applymovement LOCALID_RIVAL, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_LAVARIDGE_RIVAL, Common_Movement_WalkInPlaceFasterUp
waitmovement 0
playse SE_PIN
- applymovement LOCALID_RIVAL, Common_Movement_ExclamationMark
+ applymovement LOCALID_LAVARIDGE_RIVAL, Common_Movement_ExclamationMark
waitmovement 0
- applymovement LOCALID_RIVAL, Common_Movement_Delay48
+ applymovement LOCALID_LAVARIDGE_RIVAL, Common_Movement_Delay48
waitmovement 0
return
LavaridgeTown_EventScript_RivalExitHerbShop::
opendoor 12, 15
waitdooranim
- addobject LOCALID_RIVAL
- applymovement LOCALID_RIVAL, LavaridgeTown_Movement_RivalExitHerbShop
+ addobject LOCALID_LAVARIDGE_RIVAL
+ applymovement LOCALID_LAVARIDGE_RIVAL, LavaridgeTown_Movement_RivalExitHerbShop
waitmovement 0
closedoor 12, 15
waitdooranim
- applymovement LOCALID_RIVAL, Common_Movement_WalkInPlaceFasterLeft
+ applymovement LOCALID_LAVARIDGE_RIVAL, Common_Movement_WalkInPlaceFasterLeft
waitmovement 0
playse SE_PIN
- applymovement LOCALID_RIVAL, Common_Movement_ExclamationMark
+ applymovement LOCALID_LAVARIDGE_RIVAL, Common_Movement_ExclamationMark
waitmovement 0
- applymovement LOCALID_RIVAL, Common_Movement_Delay48
+ applymovement LOCALID_LAVARIDGE_RIVAL, Common_Movement_Delay48
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterRight
waitmovement 0
return
LavaridgeTown_EventScript_RivalApproachPlayer1::
- applymovement LOCALID_RIVAL, LavaridgeTown_Movement_RivalApproachPlayer1
+ applymovement LOCALID_LAVARIDGE_RIVAL, LavaridgeTown_Movement_RivalApproachPlayer1
waitmovement 0
return
LavaridgeTown_EventScript_RivalApproachPlayer2::
- applymovement LOCALID_RIVAL, LavaridgeTown_Movement_RivalApproachPlayer2
+ applymovement LOCALID_LAVARIDGE_RIVAL, LavaridgeTown_Movement_RivalApproachPlayer2
waitmovement 0
return
LavaridgeTown_EventScript_RivalExit1::
- applymovement OBJ_EVENT_ID_PLAYER, LavaridgeTown_Movement_PlayerWatchRivalExit
- applymovement LOCALID_RIVAL_ON_BIKE, LavaridgeTown_Movement_RivalExit1
+ applymovement LOCALID_PLAYER, LavaridgeTown_Movement_PlayerWatchRivalExit
+ applymovement LOCALID_LAVARIDGE_RIVAL_ON_BIKE, LavaridgeTown_Movement_RivalExit1
waitmovement 0
return
LavaridgeTown_EventScript_RivalExit2::
- applymovement LOCALID_RIVAL_ON_BIKE, LavaridgeTown_Movement_RivalExit2
+ applymovement LOCALID_LAVARIDGE_RIVAL_ON_BIKE, LavaridgeTown_Movement_RivalExit2
waitmovement 0
return
diff --git a/data/maps/LavaridgeTown_Gym_1F/map.json b/data/maps/LavaridgeTown_Gym_1F/map.json
index dc30c6ea9c..5dc1ebeaa3 100644
--- a/data/maps/LavaridgeTown_Gym_1F/map.json
+++ b/data/maps/LavaridgeTown_Gym_1F/map.json
@@ -28,6 +28,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_COLE",
"graphics_id": "OBJ_EVENT_GFX_MAN_5",
"x": 3,
"y": 14,
@@ -41,6 +42,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_GERALD",
"graphics_id": "OBJ_EVENT_GFX_MAN_3",
"x": 2,
"y": 15,
@@ -54,6 +56,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_AXLE",
"graphics_id": "OBJ_EVENT_GFX_MAN_5",
"x": 3,
"y": 10,
@@ -67,6 +70,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_DANIELLE",
"graphics_id": "OBJ_EVENT_GFX_GIRL_3",
"x": 5,
"y": 2,
diff --git a/data/maps/LavaridgeTown_Gym_1F/scripts.inc b/data/maps/LavaridgeTown_Gym_1F/scripts.inc
index e211d08063..3c71ce4356 100644
--- a/data/maps/LavaridgeTown_Gym_1F/scripts.inc
+++ b/data/maps/LavaridgeTown_Gym_1F/scripts.inc
@@ -1,8 +1,3 @@
-.set LOCALID_COLE, 2
-.set LOCALID_GERALD, 3
-.set LOCALID_AXLE, 4
-.set LOCALID_DANIELLE, 5
-
LavaridgeTown_Gym_1F_MapScripts::
map_script MAP_SCRIPT_ON_TRANSITION, LavaridgeTown_Gym_1F_OnTransition
.byte 0
diff --git a/data/maps/LavaridgeTown_Gym_B1F/map.json b/data/maps/LavaridgeTown_Gym_B1F/map.json
index b90802b173..b7f29174c4 100644
--- a/data/maps/LavaridgeTown_Gym_B1F/map.json
+++ b/data/maps/LavaridgeTown_Gym_B1F/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_JACE",
"graphics_id": "OBJ_EVENT_GFX_MAN_5",
"x": 4,
"y": 18,
@@ -28,6 +29,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_KEEGAN",
"graphics_id": "OBJ_EVENT_GFX_MAN_5",
"x": 3,
"y": 6,
@@ -41,6 +43,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_JEFF",
"graphics_id": "OBJ_EVENT_GFX_MAN_5",
"x": 13,
"y": 17,
@@ -54,6 +57,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_ELI",
"graphics_id": "OBJ_EVENT_GFX_HIKER",
"x": 4,
"y": 16,
diff --git a/data/maps/LavaridgeTown_Gym_B1F/scripts.inc b/data/maps/LavaridgeTown_Gym_B1F/scripts.inc
index 3a9165bb16..d6558a47a6 100644
--- a/data/maps/LavaridgeTown_Gym_B1F/scripts.inc
+++ b/data/maps/LavaridgeTown_Gym_B1F/scripts.inc
@@ -1,8 +1,3 @@
-.equ LOCALID_JACE, 1
-.equ LOCALID_KEEGAN, 2
-.equ LOCALID_JEFF, 3
-.equ LOCALID_ELI, 4
-
LavaridgeTown_Gym_B1F_MapScripts::
map_script MAP_SCRIPT_ON_TRANSITION, LavaridgeTown_Gym_B1F_OnTransition
.byte 0
diff --git a/data/maps/LavaridgeTown_Mart/map.json b/data/maps/LavaridgeTown_Mart/map.json
index 82078a3827..0105c0d560 100644
--- a/data/maps/LavaridgeTown_Mart/map.json
+++ b/data/maps/LavaridgeTown_Mart/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_LAVARIDGE_MART_CLERK",
"graphics_id": "OBJ_EVENT_GFX_MART_EMPLOYEE",
"x": 1,
"y": 3,
diff --git a/data/maps/LavaridgeTown_PokemonCenter_1F/map.json b/data/maps/LavaridgeTown_PokemonCenter_1F/map.json
index 8cbeae0923..2d9372d1d1 100644
--- a/data/maps/LavaridgeTown_PokemonCenter_1F/map.json
+++ b/data/maps/LavaridgeTown_PokemonCenter_1F/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_LAVARIDGE_NURSE",
"graphics_id": "OBJ_EVENT_GFX_NURSE",
"x": 7,
"y": 2,
diff --git a/data/maps/LavaridgeTown_PokemonCenter_1F/scripts.inc b/data/maps/LavaridgeTown_PokemonCenter_1F/scripts.inc
index 9ff72aa812..fa67064252 100644
--- a/data/maps/LavaridgeTown_PokemonCenter_1F/scripts.inc
+++ b/data/maps/LavaridgeTown_PokemonCenter_1F/scripts.inc
@@ -1,5 +1,3 @@
-.set LOCALID_NURSE, 1
-
LavaridgeTown_PokemonCenter_1F_MapScripts::
map_script MAP_SCRIPT_ON_TRANSITION, LavaridgeTown_PokemonCenter_1F_OnTransition
map_script MAP_SCRIPT_ON_RESUME, CableClub_OnResume
@@ -11,7 +9,7 @@ LavaridgeTown_PokemonCenter_1F_OnTransition:
end
LavaridgeTown_PokemonCenter_1F_EventScript_Nurse::
- setvar VAR_0x800B, LOCALID_NURSE
+ setvar VAR_0x800B, LOCALID_LAVARIDGE_NURSE
call Common_EventScript_PkmnCenterNurse
waitmessage
waitbuttonpress
diff --git a/data/maps/LilycoveCity/map.json b/data/maps/LilycoveCity/map.json
index 0b829ea09e..a627931151 100644
--- a/data/maps/LilycoveCity/map.json
+++ b/data/maps/LilycoveCity/map.json
@@ -260,6 +260,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_LILYCOVE_WOMAN_1",
"graphics_id": "OBJ_EVENT_GFX_WOMAN_3",
"x": 41,
"y": 25,
@@ -273,6 +274,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_LILYCOVE_MAN_1",
"graphics_id": "OBJ_EVENT_GFX_MAN_2",
"x": 40,
"y": 25,
diff --git a/data/maps/LilycoveCity/scripts.inc b/data/maps/LilycoveCity/scripts.inc
index 094592d646..0424202355 100644
--- a/data/maps/LilycoveCity/scripts.inc
+++ b/data/maps/LilycoveCity/scripts.inc
@@ -1,6 +1,3 @@
-.set LOCALID_WOMAN_1, 19
-.set LOCALID_MAN_1, 20
-
LilycoveCity_MapScripts::
map_script MAP_SCRIPT_ON_TRANSITION, LilycoveCity_OnTransition
map_script MAP_SCRIPT_ON_LOAD, LilycoveCity_OnLoad
@@ -136,13 +133,13 @@ LilycoveCity_EventScript_FatMan::
LilycoveCity_EventScript_Man1::
lockall
msgbox LilycoveCity_Text_JustArrivedAndSawRarePokemon, MSGBOX_NPC
- applymovement LOCALID_MAN_1, Common_Movement_FaceOriginalDirection
+ applymovement LOCALID_LILYCOVE_MAN_1, Common_Movement_FaceOriginalDirection
end
LilycoveCity_EventScript_Woman1::
lockall
msgbox LilycoveCity_Text_HoneymoonVowToSeeRarePokemon, MSGBOX_NPC
- applymovement LOCALID_WOMAN_1, Common_Movement_FaceOriginalDirection
+ applymovement LOCALID_LILYCOVE_WOMAN_1, Common_Movement_FaceOriginalDirection
end
LilycoveCity_EventScript_CitySign::
diff --git a/data/maps/LilycoveCity_ContestHall/map.json b/data/maps/LilycoveCity_ContestHall/map.json
index a55d214988..9979ca34bc 100644
--- a/data/maps/LilycoveCity_ContestHall/map.json
+++ b/data/maps/LilycoveCity_ContestHall/map.json
@@ -54,6 +54,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_SMART_MC",
"graphics_id": "OBJ_EVENT_GFX_WOMAN_3",
"x": 12,
"y": 22,
@@ -67,6 +68,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_SMART_JUDGE",
"graphics_id": "OBJ_EVENT_GFX_CONTEST_JUDGE",
"x": 15,
"y": 22,
@@ -80,6 +82,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_SMART_CONTESTANT_1",
"graphics_id": "OBJ_EVENT_GFX_BLACK_BELT",
"x": 10,
"y": 25,
@@ -93,6 +96,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_SMART_CONTESTANT_2",
"graphics_id": "OBJ_EVENT_GFX_EXPERT_M",
"x": 12,
"y": 25,
@@ -106,6 +110,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_SMART_CONTESTANT_3",
"graphics_id": "OBJ_EVENT_GFX_MANIAC",
"x": 14,
"y": 25,
@@ -119,6 +124,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_SMART_CONTESTANT_4",
"graphics_id": "OBJ_EVENT_GFX_LINK_RECEPTIONIST",
"x": 16,
"y": 25,
@@ -145,6 +151,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_SMART_AUDIENCE_4",
"graphics_id": "OBJ_EVENT_GFX_WOMAN_5",
"x": 18,
"y": 24,
@@ -158,6 +165,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_SMART_AUDIENCE_2",
"graphics_id": "OBJ_EVENT_GFX_BOY_1",
"x": 8,
"y": 22,
@@ -171,6 +179,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_BEAUTY_MC",
"graphics_id": "OBJ_EVENT_GFX_WOMAN_3",
"x": 24,
"y": 10,
@@ -184,6 +193,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_BEAUTY_JUDGE",
"graphics_id": "OBJ_EVENT_GFX_CONTEST_JUDGE",
"x": 27,
"y": 10,
@@ -197,6 +207,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_BEAUTY_CONTESTANT_1",
"graphics_id": "OBJ_EVENT_GFX_WOMAN_4",
"x": 22,
"y": 13,
@@ -210,6 +221,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_BEAUTY_CONTESTANT_2",
"graphics_id": "OBJ_EVENT_GFX_TWIN",
"x": 24,
"y": 13,
@@ -223,6 +235,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_BEAUTY_CONTESTANT_3",
"graphics_id": "OBJ_EVENT_GFX_PSYCHIC_M",
"x": 26,
"y": 13,
@@ -236,6 +249,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_BEAUTY_CONTESTANT_4",
"graphics_id": "OBJ_EVENT_GFX_POKEFAN_F",
"x": 28,
"y": 13,
@@ -249,6 +263,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_BEAUTY_AUDIENCE_1",
"graphics_id": "OBJ_EVENT_GFX_WOMAN_2",
"x": 20,
"y": 10,
@@ -262,6 +277,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_BEAUTY_AUDIENCE_3",
"graphics_id": "OBJ_EVENT_GFX_WOMAN_1",
"x": 30,
"y": 11,
@@ -275,6 +291,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_BEAUTY_AUDIENCE_2",
"graphics_id": "OBJ_EVENT_GFX_MAN_1",
"x": 26,
"y": 8,
@@ -288,6 +305,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_SMART_AUDIENCE_3",
"graphics_id": "OBJ_EVENT_GFX_CAMPER",
"x": 13,
"y": 20,
@@ -301,6 +319,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_CUTE_MC",
"graphics_id": "OBJ_EVENT_GFX_WOMAN_3",
"x": 36,
"y": 22,
@@ -314,6 +333,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_CUTE_JUDGE",
"graphics_id": "OBJ_EVENT_GFX_CONTEST_JUDGE",
"x": 39,
"y": 22,
@@ -327,6 +347,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_CUTE_CONTESTANT_1",
"graphics_id": "OBJ_EVENT_GFX_BOY_2",
"x": 34,
"y": 25,
@@ -340,6 +361,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_CUTE_CONTESTANT_2",
"graphics_id": "OBJ_EVENT_GFX_GIRL_2",
"x": 36,
"y": 25,
@@ -353,6 +375,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_CUTE_CONTESTANT_3",
"graphics_id": "OBJ_EVENT_GFX_BOY_3",
"x": 38,
"y": 25,
@@ -366,6 +389,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_CUTE_CONTESTANT_4",
"graphics_id": "OBJ_EVENT_GFX_EXPERT_F",
"x": 40,
"y": 25,
@@ -379,6 +403,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_CUTE_AUDIENCE_1",
"graphics_id": "OBJ_EVENT_GFX_WOMAN_2",
"x": 32,
"y": 23,
@@ -392,6 +417,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_CUTE_AUDIENCE_3",
"graphics_id": "OBJ_EVENT_GFX_MAN_1",
"x": 37,
"y": 20,
@@ -405,6 +431,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_CUTE_AUDIENCE_2",
"graphics_id": "OBJ_EVENT_GFX_LITTLE_GIRL",
"x": 42,
"y": 24,
diff --git a/data/maps/LilycoveCity_ContestHall/scripts.inc b/data/maps/LilycoveCity_ContestHall/scripts.inc
index 610611358d..b1c59c8922 100644
--- a/data/maps/LilycoveCity_ContestHall/scripts.inc
+++ b/data/maps/LilycoveCity_ContestHall/scripts.inc
@@ -1,32 +1,7 @@
-@ VAR_LAST_TALKED would have made all these direct references unnecessary
-.set LOCALID_SMART_MC, 4
-.set LOCALID_SMART_JUDGE, 5
-.set LOCALID_SMART_CONTESTANT_1, 6
-.set LOCALID_SMART_CONTESTANT_2, 7
-.set LOCALID_SMART_CONTESTANT_3, 8
-.set LOCALID_SMART_CONTESTANT_4, 9
-.set LOCALID_SMART_AUDIENCE_4, 11
-.set LOCALID_SMART_AUDIENCE_2, 12
-.set LOCALID_BEAUTY_MC, 13
-.set LOCALID_BEAUTY_JUDGE, 14
-.set LOCALID_BEAUTY_CONTESTANT_1, 15
-.set LOCALID_BEAUTY_CONTESTANT_2, 16
-.set LOCALID_BEAUTY_CONTESTANT_3, 17
-.set LOCALID_BEAUTY_CONTESTANT_4, 18
-.set LOCALID_BEAUTY_AUDIENCE_1, 19
-.set LOCALID_BEAUTY_AUDIENCE_3, 20
-.set LOCALID_BEAUTY_AUDIENCE_2, 21
-.set LOCALID_SMART_AUDIENCE_3, 22
-.set LOCALID_CUTE_MC, 23
-.set LOCALID_CUTE_JUDGE, 24
-.set LOCALID_CUTE_CONTESTANT_1, 25
-.set LOCALID_CUTE_CONTESTANT_2, 26
-.set LOCALID_CUTE_CONTESTANT_3, 27
-.set LOCALID_CUTE_CONTESTANT_4, 28
-.set LOCALID_CUTE_AUDIENCE_1, 29
-.set LOCALID_CUTE_AUDIENCE_3, 30
-.set LOCALID_CUTE_AUDIENCE_2, 31
-
+@ All the LOCALID constants used in this file are essentially redundant.
+@ They're all used to have the NPC the player talked to turn back so they're facing
+@ their original direction (because they're watching/participating in the contests).
+@ They could all be substituted for VAR_LAST_TALKED.
LilycoveCity_ContestHall_MapScripts::
.byte 0
diff --git a/data/maps/LilycoveCity_ContestLobby/map.json b/data/maps/LilycoveCity_ContestLobby/map.json
index 276b5a6c2c..220a4f8300 100644
--- a/data/maps/LilycoveCity_ContestLobby/map.json
+++ b/data/maps/LilycoveCity_ContestLobby/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_CONTEST_LOBBY_RECEPTIONIST",
"graphics_id": "OBJ_EVENT_GFX_TEALA",
"x": 14,
"y": 2,
@@ -28,6 +29,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_CONTEST_LOBBY_LINK_RECEPTIONIST",
"graphics_id": "OBJ_EVENT_GFX_TEALA",
"x": 15,
"y": 2,
@@ -41,6 +43,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_CONTEST_LOBBY_BLENDER_2_LEADER",
"graphics_id": "OBJ_EVENT_GFX_MAN_4",
"x": 26,
"y": 9,
@@ -54,6 +57,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_CONTEST_LOBBY_ARTIST",
"graphics_id": "OBJ_EVENT_GFX_ARTIST",
"x": 9,
"y": 1,
@@ -119,6 +123,7 @@
"flag": "FLAG_HIDE_LILYCOVE_CONTEST_HALL_REPORTER"
},
{
+ "local_id": "LOCALID_CONTEST_LOBBY_BLENDER_3_PARTICIPANT_1",
"graphics_id": "OBJ_EVENT_GFX_BOY_1",
"x": 23,
"y": 8,
@@ -132,6 +137,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_CONTEST_LOBBY_BLENDER_2_PARTICIPANT",
"graphics_id": "OBJ_EVENT_GFX_TWIN",
"x": 28,
"y": 9,
@@ -145,6 +151,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_CONTEST_LOBBY_LINK_ARTIST",
"graphics_id": "OBJ_EVENT_GFX_ARTIST",
"x": 21,
"y": 1,
@@ -197,6 +204,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_CONTEST_LOBBY_BLENDER_3_LEADER",
"graphics_id": "OBJ_EVENT_GFX_POKEFAN_F",
"x": 22,
"y": 9,
@@ -210,6 +218,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_BLEND_MASTER",
"graphics_id": "OBJ_EVENT_GFX_EXPERT_M",
"x": 26,
"y": 5,
@@ -223,6 +232,7 @@
"flag": "FLAG_HIDE_LILYCOVE_CONTEST_HALL_BLEND_MASTER_REPLACEMENT"
},
{
+ "local_id": "LOCALID_CONTEST_LOBBY_BLENDER_3_PARTICIPANT_2",
"graphics_id": "OBJ_EVENT_GFX_GIRL_1",
"x": 24,
"y": 9,
diff --git a/data/maps/LilycoveCity_ContestLobby/scripts.inc b/data/maps/LilycoveCity_ContestLobby/scripts.inc
index fa884a0966..862a5ef37d 100644
--- a/data/maps/LilycoveCity_ContestLobby/scripts.inc
+++ b/data/maps/LilycoveCity_ContestLobby/scripts.inc
@@ -1,9 +1,3 @@
-@ Note: data/scripts/berry_blender.inc is for the same map, so shares local IDs
-.set LOCALID_RECEPTIONIST, 1
-.set LOCALID_LINK_RECEPTIONIST, 2
-.set LOCALID_ARTIST, 4
-.set LOCALID_ARTIST_LINK, 11
-
LilycoveCity_ContestLobby_MapScripts::
map_script MAP_SCRIPT_ON_TRANSITION, LilycoveCity_ContestLobby_OnTransition
map_script MAP_SCRIPT_ON_FRAME_TABLE, LilycoveCity_ContestLobby_OnFrame
@@ -40,10 +34,10 @@ LilycoveCity_ContestLobby_EventScript_TryDoContestArtist::
LilycoveCity_ContestLobby_EventScript_ContestArtist::
lockall
- addobject LOCALID_ARTIST
- applymovement LOCALID_ARTIST, LilycoveCity_ContestLobby_Movement_ArtistApproachPlayer
- waitmovement LOCALID_ARTIST
- applymovement OBJ_EVENT_ID_PLAYER, LilycoveCity_ContestLobby_Movement_PlayerFaceArtist
+ addobject LOCALID_CONTEST_LOBBY_ARTIST
+ applymovement LOCALID_CONTEST_LOBBY_ARTIST, LilycoveCity_ContestLobby_Movement_ArtistApproachPlayer
+ waitmovement LOCALID_CONTEST_LOBBY_ARTIST
+ applymovement LOCALID_PLAYER, LilycoveCity_ContestLobby_Movement_PlayerFaceArtist
waitmovement 0
msgbox LilycoveCity_ContestLobby_Text_YourPokemonSpurredMeToPaint, MSGBOX_DEFAULT
lockall
@@ -63,9 +57,9 @@ LilycoveCity_ContestLobby_EventScript_TakePaintingToMuseum::
setvar VAR_LILYCOVE_CONTEST_LOBBY_STATE, 0
specialvar VAR_RESULT, GiveMonArtistRibbon
call_if_eq VAR_RESULT, TRUE, LilycoveCity_ContestLobby_EventScript_ReceivedArtistRibbon
- applymovement LOCALID_ARTIST, LilycoveCity_ContestLobby_Movement_ArtistExit
+ applymovement LOCALID_CONTEST_LOBBY_ARTIST, LilycoveCity_ContestLobby_Movement_ArtistExit
waitmovement 0
- removeobject LOCALID_ARTIST
+ removeobject LOCALID_CONTEST_LOBBY_ARTIST
call LilycoveCity_ContestLobby_EventScript_UpdateMuseumPatrons
call LilycoveCity_ContestLobby_EventScript_SetPaintingFlag
releaseall
@@ -76,22 +70,22 @@ LilycoveCity_ContestLobby_EventScript_ConfirmDontTakePainting::
goto_if_eq VAR_RESULT, YES, LilycoveCity_ContestLobby_EventScript_TakePaintingToMuseum
msgbox LilycoveCity_ContestLobby_Text_FineThatsTheWayItIs, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_ARTIST, LilycoveCity_ContestLobby_Movement_ArtistExit
+ applymovement LOCALID_CONTEST_LOBBY_ARTIST, LilycoveCity_ContestLobby_Movement_ArtistExit
waitmovement 0
setvar VAR_LILYCOVE_CONTEST_LOBBY_STATE, 0
- removeobject LOCALID_ARTIST
+ removeobject LOCALID_CONTEST_LOBBY_ARTIST
releaseall
end
LilycoveCity_ContestLobby_EventScript_ReceivedArtistRibbon::
incrementgamestat GAME_STAT_RECEIVED_RIBBONS
special BufferContestWinnerMonName
- applymovement LOCALID_ARTIST, LilycoveCity_ContestLobby_Movement_ArtistBeginToExit
+ applymovement LOCALID_CONTEST_LOBBY_ARTIST, LilycoveCity_ContestLobby_Movement_ArtistBeginToExit
waitmovement 0
playse SE_PIN
- applymovement LOCALID_ARTIST, Common_Movement_ExclamationMark
+ applymovement LOCALID_CONTEST_LOBBY_ARTIST, Common_Movement_ExclamationMark
waitmovement 0
- applymovement LOCALID_ARTIST, LilycoveCity_ContestLobby_Movement_ArtistReturnToPlayer
+ applymovement LOCALID_CONTEST_LOBBY_ARTIST, LilycoveCity_ContestLobby_Movement_ArtistReturnToPlayer
waitmovement 0
msgbox LilycoveCity_ContestLobby_Text_TakeMementoOfPainting, MSGBOX_DEFAULT
playfanfare MUS_OBTAIN_ITEM
@@ -210,10 +204,10 @@ LilycoveCity_ContestLobby_EventScript_TryDoLinkContestArtist::
LilycoveCity_ContestLobby_EventScript_LinkContestArtist::
lockall
- addobject LOCALID_ARTIST_LINK
- applymovement LOCALID_ARTIST_LINK, LilycoveCity_ContestLobby_Movement_LinkArtistApproachPlayer
- waitmovement LOCALID_ARTIST_LINK
- applymovement OBJ_EVENT_ID_PLAYER, LilycoveCity_ContestLobby_Movement_PlayerFaceLinkArtist
+ addobject LOCALID_CONTEST_LOBBY_LINK_ARTIST
+ applymovement LOCALID_CONTEST_LOBBY_LINK_ARTIST, LilycoveCity_ContestLobby_Movement_LinkArtistApproachPlayer
+ waitmovement LOCALID_CONTEST_LOBBY_LINK_ARTIST
+ applymovement LOCALID_PLAYER, LilycoveCity_ContestLobby_Movement_PlayerFaceLinkArtist
waitmovement 0
msgbox LilycoveCity_ContestLobby_Text_YourPokemonSpurredMeToPaint, MSGBOX_DEFAULT
lockall
@@ -231,9 +225,9 @@ LilycoveCity_ContestLobby_EventScript_TakePaintingToMuseumLink::
setvar VAR_LILYCOVE_CONTEST_LOBBY_STATE, 0
specialvar VAR_RESULT, GiveMonArtistRibbon
call_if_eq VAR_RESULT, TRUE, LilycoveCity_ContestLobby_EventScript_ReceivedLinkArtistRibbon
- applymovement LOCALID_ARTIST_LINK, LilycoveCity_ContestLobby_Movement_LinkArtistExit
+ applymovement LOCALID_CONTEST_LOBBY_LINK_ARTIST, LilycoveCity_ContestLobby_Movement_LinkArtistExit
waitmovement 0
- removeobject LOCALID_ARTIST_LINK
+ removeobject LOCALID_CONTEST_LOBBY_LINK_ARTIST
call LilycoveCity_ContestLobby_EventScript_UpdateMuseumPatrons
call LilycoveCity_ContestLobby_EventScript_SetPaintingFlag
releaseall
@@ -244,10 +238,10 @@ LilycoveCity_ContestLobby_EventScript_ConfirmDontTakePaintingLink::
goto_if_eq VAR_RESULT, YES, LilycoveCity_ContestLobby_EventScript_TakePaintingToMuseumLink
msgbox LilycoveCity_ContestLobby_Text_FineThatsTheWayItIs, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_ARTIST_LINK, LilycoveCity_ContestLobby_Movement_LinkArtistExit
+ applymovement LOCALID_CONTEST_LOBBY_LINK_ARTIST, LilycoveCity_ContestLobby_Movement_LinkArtistExit
waitmovement 0
setvar VAR_LILYCOVE_CONTEST_LOBBY_STATE, 0
- removeobject LOCALID_ARTIST_LINK
+ removeobject LOCALID_CONTEST_LOBBY_LINK_ARTIST
releaseall
end
@@ -255,12 +249,12 @@ LilycoveCity_ContestLobby_EventScript_ReceivedLinkArtistRibbon::
incrementgamestat GAME_STAT_RECEIVED_RIBBONS
setflag FLAG_SYS_RIBBON_GET
special BufferContestWinnerMonName
- applymovement LOCALID_ARTIST_LINK, LilycoveCity_ContestLobby_Movement_LinkArtistBeginExit
+ applymovement LOCALID_CONTEST_LOBBY_LINK_ARTIST, LilycoveCity_ContestLobby_Movement_LinkArtistBeginExit
waitmovement 0
playse SE_PIN
- applymovement LOCALID_ARTIST_LINK, Common_Movement_ExclamationMark
+ applymovement LOCALID_CONTEST_LOBBY_LINK_ARTIST, Common_Movement_ExclamationMark
waitmovement 0
- applymovement LOCALID_ARTIST_LINK, LilycoveCity_ContestLobby_Movement_LinkArtistReturnToPlayer
+ applymovement LOCALID_CONTEST_LOBBY_LINK_ARTIST, LilycoveCity_ContestLobby_Movement_LinkArtistReturnToPlayer
waitmovement 0
msgbox LilycoveCity_ContestLobby_Text_TakeMementoOfPainting, MSGBOX_DEFAULT
playfanfare MUS_OBTAIN_ITEM
@@ -405,27 +399,27 @@ LilycoveCity_ContestLobby_EventScript_WarpToToughContestHall::
LilycoveCity_ContestLobby_EventScript_LeadToContestHall::
lockall
- applymovement LOCALID_RECEPTIONIST, LilycoveCity_ContestLobby_Movement_ReceptionistApproachCounter
+ applymovement LOCALID_CONTEST_LOBBY_RECEPTIONIST, LilycoveCity_ContestLobby_Movement_ReceptionistApproachCounter
waitmovement 0
playse SE_BRIDGE_WALK
setmetatile 12, 2, METATILE_Contest_WallShadow, TRUE
setmetatile 12, 3, METATILE_Contest_FloorShadow, TRUE
special DrawWholeMapView
- applymovement LOCALID_RECEPTIONIST, LilycoveCity_ContestLobby_Movement_ReceptionistExitCounter
+ applymovement LOCALID_CONTEST_LOBBY_RECEPTIONIST, LilycoveCity_ContestLobby_Movement_ReceptionistExitCounter
waitmovement 0
playse SE_BRIDGE_WALK
setmetatile 12, 2, METATILE_Contest_CounterFlap_Top, TRUE
setmetatile 12, 3, METATILE_Contest_CounterFlap_Bottom, TRUE
special DrawWholeMapView
delay 20
- applymovement LOCALID_RECEPTIONIST, LilycoveCity_ContestLobby_Movement_ReceptionistFacePlayer
+ applymovement LOCALID_CONTEST_LOBBY_RECEPTIONIST, LilycoveCity_ContestLobby_Movement_ReceptionistFacePlayer
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, LilycoveCity_ContestLobby_Movement_PlayerApproachReceptionist
+ applymovement LOCALID_PLAYER, LilycoveCity_ContestLobby_Movement_PlayerApproachReceptionist
waitmovement 0
msgbox LilycoveCity_ContestLobby_Text_ComeThroughHere, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_RECEPTIONIST, LilycoveCity_ContestLobby_Movement_ReceptionistWalkToContestHall
- applymovement OBJ_EVENT_ID_PLAYER, LilycoveCity_ContestLobby_Movement_PlayerWalkToContestHall
+ applymovement LOCALID_CONTEST_LOBBY_RECEPTIONIST, LilycoveCity_ContestLobby_Movement_ReceptionistWalkToContestHall
+ applymovement LOCALID_PLAYER, LilycoveCity_ContestLobby_Movement_PlayerWalkToContestHall
waitmovement 0
releaseall
return
@@ -896,30 +890,30 @@ LilycoveCity_ContestLobby_EventScript_LeadToLinkContestHall::
waitmessage
delay 20
closemessage
- applymovement LOCALID_LINK_RECEPTIONIST, LilycoveCity_ContestLobby_Movement_LinkReceptionistApproachCounter
+ applymovement LOCALID_CONTEST_LOBBY_LINK_RECEPTIONIST, LilycoveCity_ContestLobby_Movement_LinkReceptionistApproachCounter
waitmovement 0
playse SE_BRIDGE_WALK
setmetatile 17, 2, METATILE_Contest_WallShadow, TRUE
setmetatile 17, 3, METATILE_Contest_FloorShadow, TRUE
special DrawWholeMapView
- applymovement LOCALID_LINK_RECEPTIONIST, LilycoveCity_ContestLobby_Movement_LinkReceptionistExitCounter
+ applymovement LOCALID_CONTEST_LOBBY_LINK_RECEPTIONIST, LilycoveCity_ContestLobby_Movement_LinkReceptionistExitCounter
waitmovement 0
playse SE_BRIDGE_WALK
setmetatile 17, 2, METATILE_Contest_CounterFlap_Top, TRUE
setmetatile 17, 3, METATILE_Contest_CounterFlap_Bottom, TRUE
special DrawWholeMapView
delay 20
- applymovement LOCALID_LINK_RECEPTIONIST, LilycoveCity_ContestLobby_Movement_LinkReceptionistFacePlayer
+ applymovement LOCALID_CONTEST_LOBBY_LINK_RECEPTIONIST, LilycoveCity_ContestLobby_Movement_LinkReceptionistFacePlayer
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, LilycoveCity_ContestLobby_Movement_PlayerApproachLinkReceptionist
+ applymovement LOCALID_PLAYER, LilycoveCity_ContestLobby_Movement_PlayerApproachLinkReceptionist
waitmovement 0
messageautoscroll LilycoveCity_ContestLobby_Text_ComeThroughHere
waitmessage
delay 20
closemessage
call LilycoveCity_ContestLobby_EventScript_DelayIfContestWithRSPlayer
- applymovement LOCALID_LINK_RECEPTIONIST, LilycoveCity_ContestLobby_Movement_LinkReceptionistWalkToContestHall
- applymovement OBJ_EVENT_ID_PLAYER, LilycoveCity_ContestLobby_Movement_PlayerWalkToLinkContestHall
+ applymovement LOCALID_CONTEST_LOBBY_LINK_RECEPTIONIST, LilycoveCity_ContestLobby_Movement_LinkReceptionistWalkToContestHall
+ applymovement LOCALID_PLAYER, LilycoveCity_ContestLobby_Movement_PlayerWalkToLinkContestHall
waitmovement 0
release
return
diff --git a/data/maps/LilycoveCity_CoveLilyMotel_1F/map.json b/data/maps/LilycoveCity_CoveLilyMotel_1F/map.json
index 098b533360..859b0f11b6 100644
--- a/data/maps/LilycoveCity_CoveLilyMotel_1F/map.json
+++ b/data/maps/LilycoveCity_CoveLilyMotel_1F/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_MOTEL_OWNER",
"graphics_id": "OBJ_EVENT_GFX_MAN_1",
"x": 10,
"y": 3,
diff --git a/data/maps/LilycoveCity_CoveLilyMotel_1F/scripts.inc b/data/maps/LilycoveCity_CoveLilyMotel_1F/scripts.inc
index 796645f47f..a6ef6760ea 100644
--- a/data/maps/LilycoveCity_CoveLilyMotel_1F/scripts.inc
+++ b/data/maps/LilycoveCity_CoveLilyMotel_1F/scripts.inc
@@ -1,5 +1,3 @@
-.set LOCALID_OWNER, 1
-
LilycoveCity_CoveLilyMotel_1F_MapScripts::
.byte 0
@@ -8,33 +6,33 @@ LilycoveCity_CoveLilyMotel_1F_EventScript_MotelOwner::
goto_if_set FLAG_SYS_GAME_CLEAR, LilycoveCity_CoveLilyMotel_1F_EventScript_GameClear
goto_if_set FLAG_BADGE07_GET, LilycoveCity_CoveLilyMotel_1F_EventScript_AquaHideoutBusted
msgbox LilycoveCity_CoveLilyMotel_1F_Text_GuestsDoubledByMascot, MSGBOX_DEFAULT
- applymovement LOCALID_OWNER, Common_Movement_FacePlayer
+ applymovement LOCALID_MOTEL_OWNER, Common_Movement_FacePlayer
waitmovement 0
msgbox LilycoveCity_CoveLilyMotel_1F_Text_NoGuestsWithTeamAqua, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_OWNER, Common_Movement_FaceOriginalDirection
+ applymovement LOCALID_MOTEL_OWNER, Common_Movement_FaceOriginalDirection
waitmovement 0
releaseall
end
LilycoveCity_CoveLilyMotel_1F_EventScript_AquaHideoutBusted::
msgbox LilycoveCity_CoveLilyMotel_1F_Text_MonFoundLostItem, MSGBOX_DEFAULT
- applymovement LOCALID_OWNER, Common_Movement_FacePlayer
+ applymovement LOCALID_MOTEL_OWNER, Common_Movement_FacePlayer
waitmovement 0
msgbox LilycoveCity_CoveLilyMotel_1F_Text_HeardAquaHideoutBusted, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_OWNER, Common_Movement_FaceOriginalDirection
+ applymovement LOCALID_MOTEL_OWNER, Common_Movement_FaceOriginalDirection
waitmovement 0
releaseall
end
LilycoveCity_CoveLilyMotel_1F_EventScript_GameClear::
msgbox LilycoveCity_CoveLilyMotel_1F_Text_HouseSittingMonCaughtBurglar, MSGBOX_DEFAULT
- applymovement LOCALID_OWNER, Common_Movement_FacePlayer
+ applymovement LOCALID_MOTEL_OWNER, Common_Movement_FacePlayer
waitmovement 0
msgbox LilycoveCity_CoveLilyMotel_1F_Text_BetterGetWorkingOnGuestsDinner, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_OWNER, Common_Movement_FaceOriginalDirection
+ applymovement LOCALID_MOTEL_OWNER, Common_Movement_FaceOriginalDirection
waitmovement 0
releaseall
end
@@ -42,18 +40,18 @@ LilycoveCity_CoveLilyMotel_1F_EventScript_GameClear::
LilycoveCity_CoveLilyMotel_1F_EventScript_BlockingTV::
lockall
playse SE_PIN
- applymovement LOCALID_OWNER, Common_Movement_ExclamationMark
+ applymovement LOCALID_MOTEL_OWNER, Common_Movement_ExclamationMark
waitmovement 0
- applymovement LOCALID_OWNER, Common_Movement_Delay48
+ applymovement LOCALID_MOTEL_OWNER, Common_Movement_Delay48
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterDown
waitmovement 0
msgbox LilycoveCity_CoveLilyMotel_1F_Text_CantSeeTheTV, MSGBOX_DEFAULT
closemessage
- applymovement OBJ_EVENT_ID_PLAYER, LilycoveCity_CoveLilyMotel_1F_Movement_PlayerPushFromTV
- applymovement LOCALID_OWNER, LilycoveCity_CoveLilyMotel_1F_Movement_OwnerPushPlayer
+ applymovement LOCALID_PLAYER, LilycoveCity_CoveLilyMotel_1F_Movement_PlayerPushFromTV
+ applymovement LOCALID_MOTEL_OWNER, LilycoveCity_CoveLilyMotel_1F_Movement_OwnerPushPlayer
waitmovement 0
- applymovement LOCALID_OWNER, LilycoveCity_CoveLilyMotel_1F_Movement_OwnerReturn
+ applymovement LOCALID_MOTEL_OWNER, LilycoveCity_CoveLilyMotel_1F_Movement_OwnerReturn
waitmovement 0
release
end
diff --git a/data/maps/LilycoveCity_DepartmentStore_1F/map.json b/data/maps/LilycoveCity_DepartmentStore_1F/map.json
index 951777f8f4..98c58a1bad 100644
--- a/data/maps/LilycoveCity_DepartmentStore_1F/map.json
+++ b/data/maps/LilycoveCity_DepartmentStore_1F/map.json
@@ -28,6 +28,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_LOTTERY_CLERK",
"graphics_id": "OBJ_EVENT_GFX_BEAUTY",
"x": 10,
"y": 2,
diff --git a/data/maps/LilycoveCity_DepartmentStore_1F/scripts.inc b/data/maps/LilycoveCity_DepartmentStore_1F/scripts.inc
index b0656cfd4a..32b5f592f8 100644
--- a/data/maps/LilycoveCity_DepartmentStore_1F/scripts.inc
+++ b/data/maps/LilycoveCity_DepartmentStore_1F/scripts.inc
@@ -1,5 +1,3 @@
-.set LOCALID_LOTTERY_CLERK, 2
-
LilycoveCity_DepartmentStore_1F_MapScripts::
.byte 0
diff --git a/data/maps/LilycoveCity_DepartmentStore_5F/map.json b/data/maps/LilycoveCity_DepartmentStore_5F/map.json
index e816d3f217..a7d258ec9c 100644
--- a/data/maps/LilycoveCity_DepartmentStore_5F/map.json
+++ b/data/maps/LilycoveCity_DepartmentStore_5F/map.json
@@ -93,6 +93,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_DEPARTMENT_STORE_STAIRS_WOMAN",
"graphics_id": "OBJ_EVENT_GFX_WOMAN_2",
"x": 9,
"y": 5,
diff --git a/data/maps/LilycoveCity_DepartmentStore_5F/scripts.inc b/data/maps/LilycoveCity_DepartmentStore_5F/scripts.inc
index f75a48e708..e761b44591 100644
--- a/data/maps/LilycoveCity_DepartmentStore_5F/scripts.inc
+++ b/data/maps/LilycoveCity_DepartmentStore_5F/scripts.inc
@@ -1,5 +1,3 @@
-.set LOCALID_WOMAN, 7
-
LilycoveCity_DepartmentStore_5F_MapScripts::
map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, LilycoveCity_DepartmentStore_5F_OnWarp
.byte 0
@@ -13,8 +11,8 @@ LilycoveCity_DepartmentStore_5F_OnWarp:
.2byte 0
LilycoveCity_DepartmentStore_5F_EventScript_BlockRoofStairs::
- setobjectxy LOCALID_WOMAN, 16, 2
- turnobject LOCALID_WOMAN, DIR_NORTH
+ setobjectxy LOCALID_DEPARTMENT_STORE_STAIRS_WOMAN, 16, 2
+ turnobject LOCALID_DEPARTMENT_STORE_STAIRS_WOMAN, DIR_NORTH
end
LilycoveCity_DepartmentStore_5F_EventScript_ClerkFarLeft::
@@ -119,7 +117,7 @@ LilycoveCity_DepartmentStore_5F_EventScript_PokefanF::
LilycoveCity_DepartmentStore_5F_EventScript_Woman::
lockall
- applymovement LOCALID_WOMAN, Common_Movement_FacePlayer
+ applymovement LOCALID_DEPARTMENT_STORE_STAIRS_WOMAN, Common_Movement_FacePlayer
waitmovement 0
goto_if_eq VAR_SOOTOPOLIS_CITY_STATE, 0, LilycoveCity_DepartmentStore_5F_EventScript_WomanNormal
goto_if_ge VAR_SOOTOPOLIS_CITY_STATE, 4, LilycoveCity_DepartmentStore_5F_EventScript_WomanNormal
@@ -135,7 +133,7 @@ LilycoveCity_DepartmentStore_5F_EventScript_WomanNormal::
LilycoveCity_DepartmentStore_5F_EventScript_WomanLegendaryWeather::
msgbox LilycoveCity_DepartmentStore_5F_Text_ClosedRooftopForWeather, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_WOMAN, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_DEPARTMENT_STORE_STAIRS_WOMAN, Common_Movement_WalkInPlaceFasterUp
waitmovement 0
releaseall
end
diff --git a/data/maps/LilycoveCity_Harbor/map.json b/data/maps/LilycoveCity_Harbor/map.json
index 06d49e0c88..671e6edd74 100644
--- a/data/maps/LilycoveCity_Harbor/map.json
+++ b/data/maps/LilycoveCity_Harbor/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_LILYCOVE_HARBOR_ATTENDANT",
"graphics_id": "OBJ_EVENT_GFX_BEAUTY",
"x": 8,
"y": 10,
@@ -28,6 +29,7 @@
"flag": "FLAG_HIDE_LILYCOVE_HARBOR_FERRY_ATTENDANT"
},
{
+ "local_id": "LOCALID_LILYCOVE_HARBOR_SS_TIDAL",
"graphics_id": "OBJ_EVENT_GFX_SS_TIDAL",
"x": 8,
"y": 9,
@@ -54,6 +56,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_LILYCOVE_HARBOR_FERRY_SAILOR",
"graphics_id": "OBJ_EVENT_GFX_SAILOR",
"x": 8,
"y": 10,
@@ -67,6 +70,7 @@
"flag": "FLAG_HIDE_LILYCOVE_HARBOR_FERRY_SAILOR"
},
{
+ "local_id": "LOCALID_LILYCOVE_HARBOR_BRINEY",
"graphics_id": "OBJ_EVENT_GFX_EXPERT_M",
"x": 8,
"y": 10,
diff --git a/data/maps/LilycoveCity_Harbor/scripts.inc b/data/maps/LilycoveCity_Harbor/scripts.inc
index 63010dc4c7..9388609ab5 100644
--- a/data/maps/LilycoveCity_Harbor/scripts.inc
+++ b/data/maps/LilycoveCity_Harbor/scripts.inc
@@ -1,8 +1,3 @@
-.set LOCALID_ATTENDANT, 1
-.set LOCALID_SS_TIDAL, 2
-.set LOCALID_FERRY_SAILOR, 4
-.set LOCALID_BRINEY, 5
-
LilycoveCity_Harbor_MapScripts::
map_script MAP_SCRIPT_ON_TRANSITION, LilycoveCity_Harbor_OnTransition
.byte 0
@@ -231,16 +226,16 @@ LilycoveCity_Harbor_EventScript_OldSeaMapFirstTime::
call LilycoveCity_Harbor_EventScript_GetEventTicketSailor
msgbox EventTicket_Text_OldSeaMapTooFar, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_FERRY_SAILOR, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_LILYCOVE_HARBOR_FERRY_SAILOR, Common_Movement_WalkInPlaceFasterUp
waitmovement 0
playse SE_PIN
- applymovement LOCALID_FERRY_SAILOR, Common_Movement_ExclamationMark
+ applymovement LOCALID_LILYCOVE_HARBOR_FERRY_SAILOR, Common_Movement_ExclamationMark
waitmovement 0
- applymovement LOCALID_FERRY_SAILOR, Common_Movement_Delay48
+ applymovement LOCALID_LILYCOVE_HARBOR_FERRY_SAILOR, Common_Movement_Delay48
waitmovement 0
call_if_eq VAR_FACING, DIR_NORTH, LilycoveCity_Harbor_EventScript_MoveSailorOutOfWayNorth
call_if_eq VAR_FACING, DIR_EAST, LilycoveCity_Harbor_EventScript_MoveSailorOutOfWayEast
- addobject LOCALID_BRINEY
+ addobject LOCALID_LILYCOVE_HARBOR_BRINEY
call_if_eq VAR_FACING, DIR_NORTH, LilycoveCity_Harbor_EventScript_BrineyFaceSailorNorth
call_if_eq VAR_FACING, DIR_EAST, LilycoveCity_Harbor_EventScript_BrineyFaceSailorEast
msgbox EventTicket_Text_BrineyHoldOnASecond, MSGBOX_DEFAULT
@@ -250,7 +245,7 @@ LilycoveCity_Harbor_EventScript_OldSeaMapFirstTime::
closemessage
call_if_eq VAR_FACING, DIR_NORTH, LilycoveCity_Harbor_EventScript_BoardFerryWithBrineyAndSailorNorth
call_if_eq VAR_FACING, DIR_EAST, LilycoveCity_Harbor_EventScript_BoardFerryWithBrineyAndSailorEast
- setvar VAR_0x8004, LOCALID_SS_TIDAL
+ setvar VAR_0x8004, LOCALID_LILYCOVE_HARBOR_SS_TIDAL
call Common_EventScript_FerryDepart
warp MAP_FARAWAY_ISLAND_ENTRANCE, 13, 38
waitstate
@@ -305,14 +300,14 @@ LilycoveCity_Harbor_EventScript_MultipleEventTicketsFirstTime::
LilycoveCity_Harbor_EventScript_ExitFirstTimeTicketSailSelect::
msgbox EventTicket_Text_AsYouLike, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_FERRY_SAILOR, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_LILYCOVE_HARBOR_FERRY_SAILOR, Common_Movement_WalkInPlaceFasterUp
waitmovement 0
delay 30
- removeobject LOCALID_FERRY_SAILOR
+ removeobject LOCALID_LILYCOVE_HARBOR_FERRY_SAILOR
delay 30
- applymovement LOCALID_ATTENDANT, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_LILYCOVE_HARBOR_ATTENDANT, Common_Movement_WalkInPlaceFasterDown
waitmovement 0
- showobjectat LOCALID_ATTENDANT, MAP_LILYCOVE_CITY_HARBOR
+ showobjectat LOCALID_LILYCOVE_HARBOR_ATTENDANT, MAP_LILYCOVE_CITY_HARBOR
delay 30
msgbox LilycoveCity_Harbor_Text_SailAnotherTime, MSGBOX_DEFAULT
release
@@ -324,22 +319,22 @@ LilycoveCity_Harbor_EventScript_GetEventTicketSailor::
delay 30
hideobjectat VAR_LAST_TALKED, MAP_LILYCOVE_CITY_HARBOR
delay 60
- addobject LOCALID_FERRY_SAILOR
+ addobject LOCALID_LILYCOVE_HARBOR_FERRY_SAILOR
delay 30
- applymovement LOCALID_FERRY_SAILOR, Common_Movement_FacePlayer
+ applymovement LOCALID_LILYCOVE_HARBOR_FERRY_SAILOR, Common_Movement_FacePlayer
waitmovement 0
return
LilycoveCity_Harbor_EventScript_BoardFerryWithSailor::
- applymovement LOCALID_FERRY_SAILOR, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_LILYCOVE_HARBOR_FERRY_SAILOR, Common_Movement_WalkInPlaceFasterUp
waitmovement 0
delay 30
- removeobject LOCALID_FERRY_SAILOR
+ removeobject LOCALID_LILYCOVE_HARBOR_FERRY_SAILOR
call_if_eq VAR_FACING, DIR_NORTH, LilycoveCity_Harbor_EventScript_PlayerBoardFerryNorth
call_if_eq VAR_FACING, DIR_EAST, LilycoveCity_Harbor_EventScript_PlayerBoardFerryEast
delay 30
- hideobjectat OBJ_EVENT_ID_PLAYER, 0
- setvar VAR_0x8004, LOCALID_SS_TIDAL
+ hideobjectat LOCALID_PLAYER, 0
+ setvar VAR_0x8004, LOCALID_LILYCOVE_HARBOR_SS_TIDAL
call Common_EventScript_FerryDepart
return
@@ -398,18 +393,18 @@ LilycoveCity_Harbor_EventScript_BoardFerry::
call_if_eq VAR_FACING, DIR_NORTH, LilycoveCity_Harbor_EventScript_PlayerBoardFerryNorth
call_if_eq VAR_FACING, DIR_EAST, LilycoveCity_Harbor_EventScript_PlayerBoardFerryEast
delay 30
- hideobjectat OBJ_EVENT_ID_PLAYER, 0
- setvar VAR_0x8004, LOCALID_SS_TIDAL
+ hideobjectat LOCALID_PLAYER, 0
+ setvar VAR_0x8004, LOCALID_LILYCOVE_HARBOR_SS_TIDAL
call Common_EventScript_FerryDepart
return
LilycoveCity_Harbor_EventScript_PlayerBoardFerryEast::
- applymovement OBJ_EVENT_ID_PLAYER, LilycoveCity_Harbor_Movement_PlayerBoardFerryEast
+ applymovement LOCALID_PLAYER, LilycoveCity_Harbor_Movement_PlayerBoardFerryEast
waitmovement 0
return
LilycoveCity_Harbor_EventScript_PlayerBoardFerryNorth::
- applymovement OBJ_EVENT_ID_PLAYER, LilycoveCity_Harbor_Movement_PlayerBoardFerryNorth
+ applymovement LOCALID_PLAYER, LilycoveCity_Harbor_Movement_PlayerBoardFerryNorth
waitmovement 0
return
@@ -445,12 +440,12 @@ LilycoveCity_Harbor_EventScript_SailorFerryAvailable::
end
LilycoveCity_Harbor_EventScript_MoveSailorOutOfWayNorth::
- applymovement LOCALID_FERRY_SAILOR, LilycoveCity_Harbor_Movement_SailorOutOfWayNorth
+ applymovement LOCALID_LILYCOVE_HARBOR_FERRY_SAILOR, LilycoveCity_Harbor_Movement_SailorOutOfWayNorth
waitmovement 0
return
LilycoveCity_Harbor_EventScript_MoveSailorOutOfWayEast::
- applymovement LOCALID_FERRY_SAILOR, LilycoveCity_Harbor_Movement_SailorOutOfWayEast
+ applymovement LOCALID_LILYCOVE_HARBOR_FERRY_SAILOR, LilycoveCity_Harbor_Movement_SailorOutOfWayEast
waitmovement 0
return
@@ -468,36 +463,36 @@ LilycoveCity_Harbor_Movement_SailorOutOfWayEast:
step_end
LilycoveCity_Harbor_EventScript_BrineyFaceSailorNorth::
- applymovement LOCALID_BRINEY, Common_Movement_WalkInPlaceFasterLeft
+ applymovement LOCALID_LILYCOVE_HARBOR_BRINEY, Common_Movement_WalkInPlaceFasterLeft
waitmovement 0
return
LilycoveCity_Harbor_EventScript_BrineyFaceSailorEast::
- applymovement LOCALID_BRINEY, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_LILYCOVE_HARBOR_BRINEY, Common_Movement_WalkInPlaceFasterDown
waitmovement 0
return
LilycoveCity_Harbor_EventScript_BrineyFacePlayerNorth::
- applymovement LOCALID_BRINEY, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_LILYCOVE_HARBOR_BRINEY, Common_Movement_WalkInPlaceFasterDown
waitmovement 0
return
LilycoveCity_Harbor_EventScript_BrineyFacePlayerEast::
- applymovement LOCALID_BRINEY, Common_Movement_WalkInPlaceFasterLeft
+ applymovement LOCALID_LILYCOVE_HARBOR_BRINEY, Common_Movement_WalkInPlaceFasterLeft
waitmovement 0
return
LilycoveCity_Harbor_EventScript_BoardFerryWithBrineyAndSailorNorth::
- applymovement LOCALID_BRINEY, LilycoveCity_Harbor_Movement_BrineyBoardFerry
- applymovement OBJ_EVENT_ID_PLAYER, LilycoveCity_Harbor_Movement_PlayerBoardWithBrineyNorth
- applymovement LOCALID_FERRY_SAILOR, LilycoveCity_Harbor_Movement_SailorBoardWithBrineyNorth
+ applymovement LOCALID_LILYCOVE_HARBOR_BRINEY, LilycoveCity_Harbor_Movement_BrineyBoardFerry
+ applymovement LOCALID_PLAYER, LilycoveCity_Harbor_Movement_PlayerBoardWithBrineyNorth
+ applymovement LOCALID_LILYCOVE_HARBOR_FERRY_SAILOR, LilycoveCity_Harbor_Movement_SailorBoardWithBrineyNorth
waitmovement 0
return
LilycoveCity_Harbor_EventScript_BoardFerryWithBrineyAndSailorEast::
- applymovement LOCALID_BRINEY, LilycoveCity_Harbor_Movement_BrineyBoardFerry
- applymovement OBJ_EVENT_ID_PLAYER, LilycoveCity_Harbor_Movement_PlayerBoardWithBrineyEast
- applymovement LOCALID_FERRY_SAILOR, LilycoveCity_Harbor_Movement_SailorBoardWithBrineyEast
+ applymovement LOCALID_LILYCOVE_HARBOR_BRINEY, LilycoveCity_Harbor_Movement_BrineyBoardFerry
+ applymovement LOCALID_PLAYER, LilycoveCity_Harbor_Movement_PlayerBoardWithBrineyEast
+ applymovement LOCALID_LILYCOVE_HARBOR_FERRY_SAILOR, LilycoveCity_Harbor_Movement_SailorBoardWithBrineyEast
waitmovement 0
return
diff --git a/data/maps/LilycoveCity_LilycoveMuseum_1F/map.json b/data/maps/LilycoveCity_LilycoveMuseum_1F/map.json
index 1710e0df8f..6b44c299fe 100644
--- a/data/maps/LilycoveCity_LilycoveMuseum_1F/map.json
+++ b/data/maps/LilycoveCity_LilycoveMuseum_1F/map.json
@@ -28,6 +28,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_MUSEUM_1F_CURATOR",
"graphics_id": "OBJ_EVENT_GFX_GENTLEMAN",
"x": 16,
"y": 2,
@@ -106,6 +107,7 @@
"flag": "FLAG_HIDE_LILYCOVE_MUSEUM_PATRON_1"
},
{
+ "local_id": "LOCALID_MUSEUM_1F_ARTIST_2",
"graphics_id": "OBJ_EVENT_GFX_ARTIST",
"x": 19,
"y": 3,
diff --git a/data/maps/LilycoveCity_LilycoveMuseum_1F/scripts.inc b/data/maps/LilycoveCity_LilycoveMuseum_1F/scripts.inc
index 2d9d446f9d..052e1e4f3f 100644
--- a/data/maps/LilycoveCity_LilycoveMuseum_1F/scripts.inc
+++ b/data/maps/LilycoveCity_LilycoveMuseum_1F/scripts.inc
@@ -1,6 +1,3 @@
-.set LOCALID_CURATOR, 2
-.set LOCALID_ARTIST_2, 8
-
LilycoveCity_LilycoveMuseum_1F_MapScripts::
.byte 0
@@ -10,7 +7,7 @@ LilycoveCity_LilycoveMuseum_1F_EventScript_Greeter::
LilycoveCity_LilycoveMuseum_1F_EventScript_Curator::
lockall
- applymovement LOCALID_CURATOR, Common_Movement_FacePlayer
+ applymovement LOCALID_MUSEUM_1F_CURATOR, Common_Movement_FacePlayer
message LilycoveCity_LilycoveMuseum_1F_Text_ImCuratorHaveYouViewedOurPaintings
waitmessage
multichoice 20, 8, MULTI_VIEWED_PAINTINGS, TRUE
@@ -35,9 +32,9 @@ LilycoveCity_LilycoveMuseum_1F_EventScript_NotInterested::
LilycoveCity_LilycoveMuseum_1F_EventScript_InterestedInPaintings::
msgbox LilycoveCity_LilycoveMuseum_1F_Text_ExcellentCanYouComeWithMe, MSGBOX_SIGN
- applymovement LOCALID_CURATOR, LilycoveCity_LilycoveMuseum_1F_Movement_CuratorEnterStairs
+ applymovement LOCALID_MUSEUM_1F_CURATOR, LilycoveCity_LilycoveMuseum_1F_Movement_CuratorEnterStairs
waitmovement 0
- removeobject LOCALID_CURATOR
+ removeobject LOCALID_MUSEUM_1F_CURATOR
switch VAR_FACING
case DIR_NORTH, LilycoveCity_LilycoveMuseum_1F_EventScript_FollowCuratorNorth
case DIR_WEST, LilycoveCity_LilycoveMuseum_1F_EventScript_FollowCuratorWest
@@ -46,7 +43,7 @@ LilycoveCity_LilycoveMuseum_1F_EventScript_InterestedInPaintings::
LilycoveCity_LilycoveMuseum_1F_EventScript_FollowCuratorNorth::
lockall
- applymovement OBJ_EVENT_ID_PLAYER, LilycoveCity_LilycoveMuseum_1F_Movement_FollowCuratorNorth
+ applymovement LOCALID_PLAYER, LilycoveCity_LilycoveMuseum_1F_Movement_FollowCuratorNorth
waitmovement 0
warp MAP_LILYCOVE_CITY_LILYCOVE_MUSEUM_2F, 11, 8
waitstate
@@ -54,7 +51,7 @@ LilycoveCity_LilycoveMuseum_1F_EventScript_FollowCuratorNorth::
LilycoveCity_LilycoveMuseum_1F_EventScript_FollowCuratorWest::
lockall
- applymovement OBJ_EVENT_ID_PLAYER, LilycoveCity_LilycoveMuseum_1F_Movement_FollowCuratorWest
+ applymovement LOCALID_PLAYER, LilycoveCity_LilycoveMuseum_1F_Movement_FollowCuratorWest
waitmovement 0
warp MAP_LILYCOVE_CITY_LILYCOVE_MUSEUM_2F, 11, 8
waitstate
@@ -62,7 +59,7 @@ LilycoveCity_LilycoveMuseum_1F_EventScript_FollowCuratorWest::
LilycoveCity_LilycoveMuseum_1F_EventScript_FollowCuratorEast::
lockall
- applymovement OBJ_EVENT_ID_PLAYER, LilycoveCity_LilycoveMuseum_1F_Movement_FollowCuratorEast
+ applymovement LOCALID_PLAYER, LilycoveCity_LilycoveMuseum_1F_Movement_FollowCuratorEast
waitmovement 0
warp MAP_LILYCOVE_CITY_LILYCOVE_MUSEUM_2F, 11, 8
waitstate
@@ -152,7 +149,7 @@ LilycoveCity_LilycoveMuseum_1F_EventScript_Artist2::
faceplayer
msgbox LilycoveCity_LilycoveMuseum_1F_Text_AimToSeeGreatPaintings, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_ARTIST_2, Common_Movement_FaceOriginalDirection
+ applymovement LOCALID_MUSEUM_1F_ARTIST_2, Common_Movement_FaceOriginalDirection
waitmovement 0
release
end
diff --git a/data/maps/LilycoveCity_LilycoveMuseum_2F/map.json b/data/maps/LilycoveCity_LilycoveMuseum_2F/map.json
index 83fe63aab0..be3467f2d1 100644
--- a/data/maps/LilycoveCity_LilycoveMuseum_2F/map.json
+++ b/data/maps/LilycoveCity_LilycoveMuseum_2F/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_MUSEUM_2F_CURATOR",
"graphics_id": "OBJ_EVENT_GFX_GENTLEMAN",
"x": 10,
"y": 8,
diff --git a/data/maps/LilycoveCity_LilycoveMuseum_2F/scripts.inc b/data/maps/LilycoveCity_LilycoveMuseum_2F/scripts.inc
index 9212ca67df..e00c7bcb3c 100644
--- a/data/maps/LilycoveCity_LilycoveMuseum_2F/scripts.inc
+++ b/data/maps/LilycoveCity_LilycoveMuseum_2F/scripts.inc
@@ -1,5 +1,3 @@
-.set LOCALID_CURATOR, 1
-
LilycoveCity_LilycoveMuseum_2F_MapScripts::
map_script MAP_SCRIPT_ON_LOAD, LilycoveCity_LilycoveMuseum_2F_OnLoad
map_script MAP_SCRIPT_ON_FRAME_TABLE, LilycoveCity_LilycoveMuseum_2F_OnFrame
@@ -64,18 +62,18 @@ LilycoveCity_LilycoveMuseum_2F_OnFrame:
LilycoveCity_LilycoveMuseum_2F_EventScript_ShowExhibitHall::
lockall
- applymovement LOCALID_CURATOR, Common_Movement_FacePlayer
- applymovement OBJ_EVENT_ID_PLAYER, LilycoveCity_LilycoveMuseum_2F_Movement_PlayerWalkInPlaceLeft
+ applymovement LOCALID_MUSEUM_2F_CURATOR, Common_Movement_FacePlayer
+ applymovement LOCALID_PLAYER, LilycoveCity_LilycoveMuseum_2F_Movement_PlayerWalkInPlaceLeft
waitmovement 0
msgbox LilycoveCity_LilycoveMuseum_2F_Text_ThisIsExhibitHall, MSGBOX_SIGN
- applymovement LOCALID_CURATOR, LilycoveCity_LilycoveMuseum_2F_Movement_FaceExhibitHall
+ applymovement LOCALID_MUSEUM_2F_CURATOR, LilycoveCity_LilycoveMuseum_2F_Movement_FaceExhibitHall
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, LilycoveCity_LilycoveMuseum_2F_Movement_FaceExhibitHall
+ applymovement LOCALID_PLAYER, LilycoveCity_LilycoveMuseum_2F_Movement_FaceExhibitHall
waitmovement 0
msgbox LilycoveCity_LilycoveMuseum_2F_Text_ExplainExhibitHall, MSGBOX_SIGN
- applymovement LOCALID_CURATOR, Common_Movement_FacePlayer
+ applymovement LOCALID_MUSEUM_2F_CURATOR, Common_Movement_FacePlayer
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, LilycoveCity_LilycoveMuseum_2F_Movement_PlayerWalkInPlaceLeft
+ applymovement LOCALID_PLAYER, LilycoveCity_LilycoveMuseum_2F_Movement_PlayerWalkInPlaceLeft
waitmovement 0
msgbox LilycoveCity_LilycoveMuseum_2F_Text_PleaseObtainPaintingsForExhibit, MSGBOX_SIGN
copyvar VAR_LILYCOVE_MUSEUM_2F_STATE, 1
@@ -109,16 +107,16 @@ LilycoveCity_LilycoveMuseum_2F_EventScript_AddedPainting::
end
LilycoveCity_LilycoveMuseum_2F_EventScript_ThankPlayer::
- applymovement LOCALID_CURATOR, Common_Movement_FacePlayer
+ applymovement LOCALID_MUSEUM_2F_CURATOR, Common_Movement_FacePlayer
waitmovement 0
msgbox LilycoveCity_LilycoveMuseum_2F_Text_ItsYouPlayer, MSGBOX_DEFAULT
- applymovement LOCALID_CURATOR, LilycoveCity_LilycoveMuseum_2F_Movement_FaceExhibitHall
+ applymovement LOCALID_MUSEUM_2F_CURATOR, LilycoveCity_LilycoveMuseum_2F_Movement_FaceExhibitHall
msgbox LilycoveCity_LilycoveMuseum_2F_Text_PaintingsAttractedMoreGuests, MSGBOX_DEFAULT
goto LilycoveCity_LilycoveMuseum_2F_EventScript_GiveGlassOrnament
end
LilycoveCity_LilycoveMuseum_2F_EventScript_GiveGlassOrnament::
- applymovement LOCALID_CURATOR, Common_Movement_FacePlayer
+ applymovement LOCALID_MUSEUM_2F_CURATOR, Common_Movement_FacePlayer
msgbox LilycoveCity_LilycoveMuseum_2F_Text_TokenOfGratitude, MSGBOX_DEFAULT
givedecoration DECOR_GLASS_ORNAMENT
goto_if_eq VAR_RESULT, FALSE, LilycoveCity_LilycoveMuseum_2F_EventScript_NoRoomForGlassOrnament
diff --git a/data/maps/LilycoveCity_MoveDeletersHouse/map.json b/data/maps/LilycoveCity_MoveDeletersHouse/map.json
index 29c6f3636e..f10630570a 100644
--- a/data/maps/LilycoveCity_MoveDeletersHouse/map.json
+++ b/data/maps/LilycoveCity_MoveDeletersHouse/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_MOVE_DELETER",
"graphics_id": "OBJ_EVENT_GFX_EXPERT_M",
"x": 4,
"y": 4,
diff --git a/data/maps/LilycoveCity_MoveDeletersHouse/scripts.inc b/data/maps/LilycoveCity_MoveDeletersHouse/scripts.inc
index db042653e1..b8d21d5e28 100644
--- a/data/maps/LilycoveCity_MoveDeletersHouse/scripts.inc
+++ b/data/maps/LilycoveCity_MoveDeletersHouse/scripts.inc
@@ -1,5 +1,3 @@
-.set LOCALID_MOVE_DELETER, 1
-
LilycoveCity_MoveDeletersHouse_MapScripts::
.byte 0
diff --git a/data/maps/LilycoveCity_PokemonCenter_1F/map.json b/data/maps/LilycoveCity_PokemonCenter_1F/map.json
index 595b5af54b..8eb6312fb2 100644
--- a/data/maps/LilycoveCity_PokemonCenter_1F/map.json
+++ b/data/maps/LilycoveCity_PokemonCenter_1F/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_LILYCOVE_NURSE",
"graphics_id": "OBJ_EVENT_GFX_NURSE",
"x": 7,
"y": 2,
@@ -54,6 +55,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_LILYCOVE_LADY",
"graphics_id": "OBJ_EVENT_GFX_VAR_0",
"x": 1,
"y": 3,
@@ -67,6 +69,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_LILYCOVE_LADYS_MON",
"graphics_id": "OBJ_EVENT_GFX_VAR_1",
"x": 2,
"y": 3,
diff --git a/data/maps/LilycoveCity_PokemonCenter_1F/scripts.inc b/data/maps/LilycoveCity_PokemonCenter_1F/scripts.inc
index a7f853afad..9273816d1f 100644
--- a/data/maps/LilycoveCity_PokemonCenter_1F/scripts.inc
+++ b/data/maps/LilycoveCity_PokemonCenter_1F/scripts.inc
@@ -1,5 +1,3 @@
-.set LOCALID_NURSE, 1
-
LilycoveCity_PokemonCenter_1F_MapScripts::
map_script MAP_SCRIPT_ON_TRANSITION, LilycoveCity_PokemonCenter_1F_OnTransition
map_script MAP_SCRIPT_ON_RESUME, CableClub_OnResume
@@ -26,7 +24,7 @@ LilycoveCity_PokemonCenter_1F_EventScript_ShowContestLadyMon::
end
LilycoveCity_PokemonCenter_1F_EventScript_Nurse::
- setvar VAR_0x800B, LOCALID_NURSE
+ setvar VAR_0x800B, LOCALID_LILYCOVE_NURSE
call Common_EventScript_PkmnCenterNurse
waitmessage
waitbuttonpress
diff --git a/data/maps/LilycoveCity_PokemonTrainerFanClub/map.json b/data/maps/LilycoveCity_PokemonTrainerFanClub/map.json
index ccd988bf3a..db0c31aa16 100644
--- a/data/maps/LilycoveCity_PokemonTrainerFanClub/map.json
+++ b/data/maps/LilycoveCity_PokemonTrainerFanClub/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_TRAINER_FAN_CLUB_LASS",
"graphics_id": "OBJ_EVENT_GFX_LASS",
"x": 3,
"y": 11,
@@ -28,6 +29,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_TRAINER_FAN_CLUB_MAN",
"graphics_id": "OBJ_EVENT_GFX_MAN_4",
"x": 8,
"y": 10,
@@ -41,6 +43,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_TRAINER_FAN_CLUB_POKEFAN_M",
"graphics_id": "OBJ_EVENT_GFX_POKEFAN_M",
"x": 6,
"y": 11,
@@ -54,6 +57,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_TRAINER_FAN_CLUB_LITTLE_GIRL",
"graphics_id": "OBJ_EVENT_GFX_LITTLE_GIRL",
"x": 5,
"y": 8,
@@ -67,6 +71,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_TRAINER_FAN_CLUB_NINJA_BOY",
"graphics_id": "OBJ_EVENT_GFX_NINJA_BOY",
"x": 7,
"y": 11,
@@ -80,6 +85,7 @@
"flag": "FLAG_HIDE_FANCLUB_LITTLE_BOY"
},
{
+ "local_id": "LOCALID_TRAINER_FAN_CLUB_BOY",
"graphics_id": "OBJ_EVENT_GFX_BOY_2",
"x": 1,
"y": 9,
@@ -93,6 +99,7 @@
"flag": "FLAG_HIDE_FANCLUB_BOY"
},
{
+ "local_id": "LOCALID_TRAINER_FAN_CLUB_WOMAN",
"graphics_id": "OBJ_EVENT_GFX_WOMAN_3",
"x": 3,
"y": 10,
@@ -106,6 +113,7 @@
"flag": "FLAG_HIDE_FANCLUB_LADY"
},
{
+ "local_id": "LOCALID_TRAINER_FAN_CLUB_EXPERT_F",
"graphics_id": "OBJ_EVENT_GFX_EXPERT_F",
"x": 10,
"y": 10,
diff --git a/data/maps/LilycoveCity_PokemonTrainerFanClub/scripts.inc b/data/maps/LilycoveCity_PokemonTrainerFanClub/scripts.inc
index ba8001324a..18d0f73edc 100644
--- a/data/maps/LilycoveCity_PokemonTrainerFanClub/scripts.inc
+++ b/data/maps/LilycoveCity_PokemonTrainerFanClub/scripts.inc
@@ -1,12 +1,3 @@
-.set LOCALID_LASS, 1
-.set LOCALID_MAN, 2
-.set LOCALID_POKEFAN_M, 3
-.set LOCALID_LITTLE_GIRL, 4
-.set LOCALID_NINJA_BOY, 5
-.set LOCALID_BOY, 6
-.set LOCALID_WOMAN, 7
-.set LOCALID_EXPERT_F, 8
-
LilycoveCity_PokemonTrainerFanClub_MapScripts::
map_script MAP_SCRIPT_ON_FRAME_TABLE, LilycoveCity_PokemonTrainerFanClub_OnFrame
map_script MAP_SCRIPT_ON_TRANSITION, LilycoveCity_PokemonTrainerFanClub_OnTransition
@@ -20,20 +11,20 @@ LilycoveCity_PokemonTrainerFanClub_OnFrame:
LilycoveCity_PokemonTrainerFanClub_EventScript_MeetFirstFans::
lockall
- applymovement LOCALID_LASS, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_TRAINER_FAN_CLUB_LASS, Common_Movement_WalkInPlaceFasterDown
waitmovement 0
msgbox LilycoveCity_PokemonTrainerFanClub_Text_OhWowItsPlayer, MSGBOX_DEFAULT
- applymovement LOCALID_LITTLE_GIRL, LilycoveCity_PokemonTrainerFanClub_Movement_LittleGirlWatchPlayer
- applymovement LOCALID_MAN, LilycoveCity_PokemonTrainerFanClub_Movement_FanApproachPlayer
+ applymovement LOCALID_TRAINER_FAN_CLUB_LITTLE_GIRL, LilycoveCity_PokemonTrainerFanClub_Movement_LittleGirlWatchPlayer
+ applymovement LOCALID_TRAINER_FAN_CLUB_MAN, LilycoveCity_PokemonTrainerFanClub_Movement_FanApproachPlayer
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterRight
waitmovement 0
msgbox LilycoveCity_PokemonTrainerFanClub_Text_HeardAboutYouImYourFan, MSGBOX_DEFAULT
- applymovement LOCALID_LITTLE_GIRL, LilycoveCity_PokemonTrainerFanClub_Movement_LittleGirlMoveCloserToPlayer
+ applymovement LOCALID_TRAINER_FAN_CLUB_LITTLE_GIRL, LilycoveCity_PokemonTrainerFanClub_Movement_LittleGirlMoveCloserToPlayer
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
waitmovement 0
- applymovement LOCALID_LITTLE_GIRL, LilycoveCity_PokemonTrainerFanClub_Movement_LittleGirlHideFromPlayer
+ applymovement LOCALID_TRAINER_FAN_CLUB_LITTLE_GIRL, LilycoveCity_PokemonTrainerFanClub_Movement_LittleGirlHideFromPlayer
waitmovement 0
setvar VAR_LILYCOVE_FAN_CLUB_STATE, 2
releaseall
@@ -157,35 +148,35 @@ LilycoveCity_PokemonTrainerFanClub_EventScript_TrySetUpTVShow::
return
LilycoveCity_PokemonTrainerFanClub_EventScript_MoveMember1ToFarTable::
- setobjectxyperm LOCALID_LASS, 7, 5
+ setobjectxyperm LOCALID_TRAINER_FAN_CLUB_LASS, 7, 5
return
LilycoveCity_PokemonTrainerFanClub_EventScript_MoveMember2ToFarTable::
- setobjectxyperm LOCALID_POKEFAN_M, 3, 4
+ setobjectxyperm LOCALID_TRAINER_FAN_CLUB_POKEFAN_M, 3, 4
return
LilycoveCity_PokemonTrainerFanClub_EventScript_MoveMember3ToFarTable::
- setobjectxyperm LOCALID_LITTLE_GIRL, 7, 2
+ setobjectxyperm LOCALID_TRAINER_FAN_CLUB_LITTLE_GIRL, 7, 2
return
LilycoveCity_PokemonTrainerFanClub_EventScript_MoveMember4ToFarTable::
- setobjectxyperm LOCALID_NINJA_BOY, 5, 5
+ setobjectxyperm LOCALID_TRAINER_FAN_CLUB_NINJA_BOY, 5, 5
return
LilycoveCity_PokemonTrainerFanClub_EventScript_MoveMember5ToFarTable::
- setobjectxyperm LOCALID_BOY, 5, 2
+ setobjectxyperm LOCALID_TRAINER_FAN_CLUB_BOY, 5, 2
return
LilycoveCity_PokemonTrainerFanClub_EventScript_MoveMember6ToFarTable::
- setobjectxyperm LOCALID_MAN, 8, 4
+ setobjectxyperm LOCALID_TRAINER_FAN_CLUB_MAN, 8, 4
return
LilycoveCity_PokemonTrainerFanClub_EventScript_MoveMember7ToFarTable::
- setobjectxyperm LOCALID_WOMAN, 3, 3
+ setobjectxyperm LOCALID_TRAINER_FAN_CLUB_WOMAN, 3, 3
return
LilycoveCity_PokemonTrainerFanClub_EventScript_MoveMember8ToFarTable::
- setobjectxyperm LOCALID_EXPERT_F, 8, 3
+ setobjectxyperm LOCALID_TRAINER_FAN_CLUB_EXPERT_F, 8, 3
return
LilycoveCity_PokemonTrainerFanClub_EventScript_SetFanMemberPositionsForFirstFanMeeting::
diff --git a/data/maps/LittlerootTown/map.json b/data/maps/LittlerootTown/map.json
index 8311ffaa3c..f5c8c7846d 100644
--- a/data/maps/LittlerootTown/map.json
+++ b/data/maps/LittlerootTown/map.json
@@ -21,6 +21,7 @@
],
"object_events": [
{
+ "local_id": "LOCALID_LITTLEROOT_TWIN",
"graphics_id": "OBJ_EVENT_GFX_TWIN",
"x": 16,
"y": 10,
@@ -60,6 +61,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_LITTLEROOT_MOM",
"graphics_id": "OBJ_EVENT_GFX_MOM",
"x": 5,
"y": 8,
@@ -99,6 +101,7 @@
"flag": "FLAG_HIDE_LITTLEROOT_TOWN_MAYS_HOUSE_TRUCK"
},
{
+ "local_id": "LOCALID_LITTLEROOT_RIVAL",
"graphics_id": "OBJ_EVENT_GFX_VAR_0",
"x": 13,
"y": 10,
@@ -112,6 +115,7 @@
"flag": "FLAG_HIDE_LITTLEROOT_TOWN_RIVAL"
},
{
+ "local_id": "LOCALID_LITTLEROOT_BIRCH",
"graphics_id": "OBJ_EVENT_GFX_PROF_BIRCH",
"x": 14,
"y": 10,
diff --git a/data/maps/LittlerootTown/scripts.inc b/data/maps/LittlerootTown/scripts.inc
index 69961bf362..fd1d970b13 100644
--- a/data/maps/LittlerootTown/scripts.inc
+++ b/data/maps/LittlerootTown/scripts.inc
@@ -1,8 +1,3 @@
-.set LOCALID_TWIN, 1
-.set LOCALID_MOM, 4
-.set LOCALID_RIVAL, 7
-.set LOCALID_BIRCH, 8
-
LittlerootTown_MapScripts::
map_script MAP_SCRIPT_ON_TRANSITION, LittlerootTown_OnTransition
map_script MAP_SCRIPT_ON_FRAME_TABLE, LittlerootTown_OnFrame
@@ -76,34 +71,34 @@ LittlerootTown_EventScript_SetExitedHouseAfterLatiSSTicketEvent::
return
LittlerootTown_EventScript_MoveMomToMaysDoor::
- setobjectxyperm LOCALID_MOM, 14, 8
+ setobjectxyperm LOCALID_LITTLEROOT_MOM, 14, 8
return
LittlerootTown_EventScript_SetTwinPos::
goto_if_eq VAR_LITTLEROOT_TOWN_STATE, 0, LittlerootTown_EventScript_SetTwinGuardingRoutePos
- setobjectxyperm LOCALID_TWIN, 10, 1
- setobjectmovementtype LOCALID_TWIN, MOVEMENT_TYPE_FACE_UP
+ setobjectxyperm LOCALID_LITTLEROOT_TWIN, 10, 1
+ setobjectmovementtype LOCALID_LITTLEROOT_TWIN, MOVEMENT_TYPE_FACE_UP
return
LittlerootTown_EventScript_SetTwinGuardingRoutePos::
- setobjectxyperm LOCALID_TWIN, 7, 2
- setobjectmovementtype LOCALID_TWIN, MOVEMENT_TYPE_FACE_DOWN
+ setobjectxyperm LOCALID_LITTLEROOT_TWIN, 7, 2
+ setobjectmovementtype LOCALID_LITTLEROOT_TWIN, MOVEMENT_TYPE_FACE_DOWN
return
LittlerootTown_EventScript_SetMomStandingInFrontOfDoorPos::
clearflag FLAG_HIDE_LITTLEROOT_TOWN_MOM_OUTSIDE
- setobjectmovementtype LOCALID_MOM, MOVEMENT_TYPE_FACE_DOWN
+ setobjectmovementtype LOCALID_LITTLEROOT_MOM, MOVEMENT_TYPE_FACE_DOWN
checkplayergender
call_if_eq VAR_RESULT, MALE, LittlerootTown_EventScript_SetMomInFrontOfDoorMale
call_if_eq VAR_RESULT, FEMALE, LittlerootTown_EventScript_SetMomInFrontOfDoorFemale
return
LittlerootTown_EventScript_SetMomInFrontOfDoorMale::
- setobjectxyperm LOCALID_MOM, 5, 9
+ setobjectxyperm LOCALID_LITTLEROOT_MOM, 5, 9
return
LittlerootTown_EventScript_SetMomInFrontOfDoorFemale::
- setobjectxyperm LOCALID_MOM, 14, 9
+ setobjectxyperm LOCALID_LITTLEROOT_MOM, 14, 9
return
LittlerootTown_OnFrame:
@@ -137,31 +132,31 @@ LittlerootTown_EventScript_StepOffTruckFemale::
LittlerootTown_EventScript_GoInsideWithMom::
delay 15
playse SE_LEDGE
- applymovement OBJ_EVENT_ID_PLAYER, LittlerootTown_Movement_PlayerStepOffTruck
+ applymovement LOCALID_PLAYER, LittlerootTown_Movement_PlayerStepOffTruck
waitmovement 0
opendoor VAR_0x8004, VAR_0x8005
waitdooranim
- addobject LOCALID_MOM
- applymovement LOCALID_MOM, LittlerootTown_Movement_MomExitHouse
+ addobject LOCALID_LITTLEROOT_MOM
+ applymovement LOCALID_LITTLEROOT_MOM, LittlerootTown_Movement_MomExitHouse
waitmovement 0
closedoor VAR_0x8004, VAR_0x8005
waitdooranim
delay 10
- applymovement LOCALID_MOM, LittlerootTown_Movement_MomApproachPlayerAtTruck
+ applymovement LOCALID_LITTLEROOT_MOM, LittlerootTown_Movement_MomApproachPlayerAtTruck
waitmovement 0
msgbox LittlerootTown_Text_OurNewHomeLetsGoInside, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_MOM, LittlerootTown_Movement_MomApproachDoor
- applymovement OBJ_EVENT_ID_PLAYER, LittlerootTown_Movement_PlayerApproachDoor
+ applymovement LOCALID_LITTLEROOT_MOM, LittlerootTown_Movement_MomApproachDoor
+ applymovement LOCALID_PLAYER, LittlerootTown_Movement_PlayerApproachDoor
waitmovement 0
opendoor VAR_0x8004, VAR_0x8005
waitdooranim
- applymovement LOCALID_MOM, LittlerootTown_Movement_MomEnterHouse
- applymovement OBJ_EVENT_ID_PLAYER, LittlerootTown_Movement_PlayerEnterHouse
+ applymovement LOCALID_LITTLEROOT_MOM, LittlerootTown_Movement_MomEnterHouse
+ applymovement LOCALID_PLAYER, LittlerootTown_Movement_PlayerEnterHouse
waitmovement 0
setflag FLAG_HIDE_LITTLEROOT_TOWN_MOM_OUTSIDE
setvar VAR_LITTLEROOT_INTRO_STATE, 3
- hideobjectat OBJ_EVENT_ID_PLAYER, 0
+ hideobjectat LOCALID_PLAYER, 0
closedoor VAR_0x8004, VAR_0x8005
waitdooranim
clearflag FLAG_HIDE_LITTLEROOT_TOWN_FAT_MAN
@@ -210,7 +205,7 @@ LittlerootTown_Movement_PlayerStepOffTruck:
LittlerootTown_EventScript_BeginDexUpgradeScene::
lockall
playse SE_PIN
- applymovement LOCALID_BIRCH, Common_Movement_ExclamationMark
+ applymovement LOCALID_LITTLEROOT_BIRCH, Common_Movement_ExclamationMark
waitmovement 0
delay 80
msgbox LittlerootTown_Text_BirchSomethingToShowYouAtLab, MSGBOX_DEFAULT
@@ -229,21 +224,21 @@ LittlerootTown_OnWarp:
.2byte 0
LittlerootTown_EventScript_SetRivalBirchPosForDexUpgrade::
- addobject LOCALID_BIRCH
- addobject LOCALID_RIVAL
+ addobject LOCALID_LITTLEROOT_BIRCH
+ addobject LOCALID_LITTLEROOT_RIVAL
checkplayergender
goto_if_eq VAR_RESULT, MALE, LittlerootTown_EventScript_SetRivalBirchPosForDexUpgradeMale
goto LittlerootTown_EventScript_SetRivalBirchPosForDexUpgradeFemale
end
LittlerootTown_EventScript_SetRivalBirchPosForDexUpgradeMale::
- setobjectxy LOCALID_RIVAL, 6, 10
- setobjectxy LOCALID_BIRCH, 5, 10
+ setobjectxy LOCALID_LITTLEROOT_RIVAL, 6, 10
+ setobjectxy LOCALID_LITTLEROOT_BIRCH, 5, 10
end
LittlerootTown_EventScript_SetRivalBirchPosForDexUpgradeFemale::
- setobjectxy LOCALID_RIVAL, 13, 10
- setobjectxy LOCALID_BIRCH, 14, 10
+ setobjectxy LOCALID_LITTLEROOT_RIVAL, 13, 10
+ setobjectxy LOCALID_LITTLEROOT_BIRCH, 14, 10
end
LittlerootTown_EventScript_FatMan::
@@ -268,7 +263,7 @@ LittlerootTown_EventScript_GoSaveBirch::
special GetPlayerBigGuyGirlString
msgbox LittlerootTown_Text_CanYouGoSeeWhatsHappening, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_TWIN, Common_Movement_FaceOriginalDirection
+ applymovement LOCALID_LITTLEROOT_TWIN, Common_Movement_FaceOriginalDirection
waitmovement 0
setvar VAR_LITTLEROOT_TOWN_STATE, 2
release
@@ -287,10 +282,10 @@ LittlerootTown_EventScript_GoodLuck::
LittlerootTown_EventScript_NeedPokemonTriggerLeft::
lockall
- applymovement LOCALID_TWIN, LittlerootTown_Movement_TwinApproachPlayerLeft
+ applymovement LOCALID_LITTLEROOT_TWIN, LittlerootTown_Movement_TwinApproachPlayerLeft
waitmovement 0
call LittlerootTown_EventScript_DangerousWithoutPokemon
- applymovement LOCALID_TWIN, LittlerootTown_Movement_TwinReturnLeft
+ applymovement LOCALID_LITTLEROOT_TWIN, LittlerootTown_Movement_TwinReturnLeft
waitmovement 0
releaseall
end
@@ -298,8 +293,8 @@ LittlerootTown_EventScript_NeedPokemonTriggerLeft::
LittlerootTown_EventScript_DangerousWithoutPokemon::
msgbox LittlerootTown_Text_IfYouGoInGrassPokemonWillJumpOut, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_TWIN, LittlerootTown_Movement_TwinPushPlayerFromRoute
- applymovement OBJ_EVENT_ID_PLAYER, LittlerootTown_Movement_PushPlayerBackFromRoute
+ applymovement LOCALID_LITTLEROOT_TWIN, LittlerootTown_Movement_TwinPushPlayerFromRoute
+ applymovement LOCALID_PLAYER, LittlerootTown_Movement_PushPlayerBackFromRoute
waitmovement 0
msgbox LittlerootTown_Text_DangerousIfYouDontHavePokemon, MSGBOX_DEFAULT
closemessage
@@ -345,10 +340,10 @@ LittlerootTown_Movement_PushPlayerBackFromRoute:
LittlerootTown_EventScript_NeedPokemonTriggerRight::
lockall
- applymovement LOCALID_TWIN, LittlerootTown_Movement_TwinApproachPlayerRight
+ applymovement LOCALID_LITTLEROOT_TWIN, LittlerootTown_Movement_TwinApproachPlayerRight
waitmovement 0
call LittlerootTown_EventScript_DangerousWithoutPokemon
- applymovement LOCALID_TWIN, LittlerootTown_Movement_TwinReturnRight
+ applymovement LOCALID_LITTLEROOT_TWIN, LittlerootTown_Movement_TwinReturnRight
waitmovement 0
releaseall
end
@@ -379,14 +374,14 @@ LittlerootTown_Movement_TwinReturnRight:
LittlerootTown_EventScript_GoSaveBirchTrigger::
lockall
- applymovement LOCALID_TWIN, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_LITTLEROOT_TWIN, Common_Movement_WalkInPlaceFasterRight
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
waitmovement 0
special GetPlayerBigGuyGirlString
msgbox LittlerootTown_Text_CanYouGoSeeWhatsHappening, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_TWIN, Common_Movement_FaceOriginalDirection
+ applymovement LOCALID_LITTLEROOT_TWIN, Common_Movement_FaceOriginalDirection
waitmovement 0
setvar VAR_LITTLEROOT_TOWN_STATE, 2
releaseall
@@ -435,14 +430,14 @@ LittlerootTown_EventScript_PlayersHouseSignFemale::
LittlerootTown_EventScript_GiveRunningShoesTrigger0::
lockall
setvar VAR_0x8008, 0
- setobjectxy LOCALID_MOM, 10, 9
+ setobjectxy LOCALID_LITTLEROOT_MOM, 10, 9
goto LittlerootTown_EventScript_GiveRunningShoesTrigger
end
LittlerootTown_EventScript_GiveRunningShoesTrigger1::
lockall
setvar VAR_0x8008, 1
- setobjectxy LOCALID_MOM, 11, 9
+ setobjectxy LOCALID_LITTLEROOT_MOM, 11, 9
goto LittlerootTown_EventScript_GiveRunningShoesTrigger
end
@@ -500,12 +495,12 @@ LittlerootTown_EventScript_SetHomeDoorCoordsFemale::
return
LittlerootTown_EventScript_MomNoticePlayerMale::
- applymovement LOCALID_MOM, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_LITTLEROOT_MOM, Common_Movement_WalkInPlaceFasterRight
waitmovement 0
return
LittlerootTown_EventScript_MomNoticePlayerFemale::
- applymovement LOCALID_MOM, Common_Movement_WalkInPlaceFasterLeft
+ applymovement LOCALID_LITTLEROOT_MOM, Common_Movement_WalkInPlaceFasterLeft
waitmovement 0
return
@@ -528,72 +523,72 @@ LittlerootTown_EventScript_MomApproachPlayerFemale::
return
LittlerootTown_EventScript_MomApproachPlayer0::
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterDown
waitmovement 0
- applymovement LOCALID_MOM, LittlerootTown_Movement_MomApproachPlayer0
+ applymovement LOCALID_LITTLEROOT_MOM, LittlerootTown_Movement_MomApproachPlayer0
waitmovement 0
return
LittlerootTown_EventScript_MomApproachPlayer1::
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterDown
waitmovement 0
- applymovement LOCALID_MOM, LittlerootTown_Movement_MomApproachPlayer1
+ applymovement LOCALID_LITTLEROOT_MOM, LittlerootTown_Movement_MomApproachPlayer1
waitmovement 0
return
LittlerootTown_EventScript_MomApproachPlayerMale2::
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
waitmovement 0
- applymovement LOCALID_MOM, LittlerootTown_Movement_MomApproachPlayerMale2
+ applymovement LOCALID_LITTLEROOT_MOM, LittlerootTown_Movement_MomApproachPlayerMale2
waitmovement 0
return
LittlerootTown_EventScript_MomApproachPlayerMale3::
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
waitmovement 0
- applymovement LOCALID_MOM, LittlerootTown_Movement_MomApproachPlayerMale3
+ applymovement LOCALID_LITTLEROOT_MOM, LittlerootTown_Movement_MomApproachPlayerMale3
waitmovement 0
return
LittlerootTown_EventScript_MomApproachPlayerMale4::
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
waitmovement 0
- applymovement LOCALID_MOM, LittlerootTown_Movement_MomApproachPlayerMale4
+ applymovement LOCALID_LITTLEROOT_MOM, LittlerootTown_Movement_MomApproachPlayerMale4
waitmovement 0
return
LittlerootTown_EventScript_MomApproachPlayerMale5::
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
waitmovement 0
- applymovement LOCALID_MOM, LittlerootTown_Movement_MomApproachPlayerMale5
+ applymovement LOCALID_LITTLEROOT_MOM, LittlerootTown_Movement_MomApproachPlayerMale5
waitmovement 0
return
LittlerootTown_EventScript_MomApproachPlayerFemale2::
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterRight
waitmovement 0
- applymovement LOCALID_MOM, LittlerootTown_Movement_MomApproachPlayerFemale2
+ applymovement LOCALID_LITTLEROOT_MOM, LittlerootTown_Movement_MomApproachPlayerFemale2
waitmovement 0
return
LittlerootTown_EventScript_MomApproachPlayerFemale3::
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterRight
waitmovement 0
- applymovement LOCALID_MOM, LittlerootTown_Movement_MomApproachPlayerFemale3
+ applymovement LOCALID_LITTLEROOT_MOM, LittlerootTown_Movement_MomApproachPlayerFemale3
waitmovement 0
return
LittlerootTown_EventScript_MomApproachPlayerFemale4::
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterRight
waitmovement 0
- applymovement LOCALID_MOM, LittlerootTown_Movement_MomApproachPlayerFemale4
+ applymovement LOCALID_LITTLEROOT_MOM, LittlerootTown_Movement_MomApproachPlayerFemale4
waitmovement 0
return
LittlerootTown_EventScript_MomApproachPlayerFemale5::
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterRight
waitmovement 0
- applymovement LOCALID_MOM, LittlerootTown_Movement_MomApproachPlayerFemale5
+ applymovement LOCALID_LITTLEROOT_MOM, LittlerootTown_Movement_MomApproachPlayerFemale5
waitmovement 0
return
@@ -616,107 +611,107 @@ LittlerootTown_EventScript_MomReturnHomeFemale::
return
LittlerootTown_EventScript_MomReturnHome0::
- applymovement LOCALID_MOM, LittlerootTown_Movement_MomReturnHome0
+ applymovement LOCALID_LITTLEROOT_MOM, LittlerootTown_Movement_MomReturnHome0
waitmovement 0
return
LittlerootTown_EventScript_MomReturnHome1::
- applymovement LOCALID_MOM, LittlerootTown_Movement_MomReturnHome1
+ applymovement LOCALID_LITTLEROOT_MOM, LittlerootTown_Movement_MomReturnHome1
waitmovement 0
return
LittlerootTown_EventScript_MomReturnHomeMale2::
- applymovement LOCALID_MOM, LittlerootTown_Movement_MomReturnHomeMale2
+ applymovement LOCALID_LITTLEROOT_MOM, LittlerootTown_Movement_MomReturnHomeMale2
waitmovement 0
opendoor VAR_0x8009, VAR_0x800A
waitdooranim
- applymovement LOCALID_MOM, LittlerootTown_Movement_MomExitThroughDoor
+ applymovement LOCALID_LITTLEROOT_MOM, LittlerootTown_Movement_MomExitThroughDoor
waitmovement 0
- hideobjectat LOCALID_MOM, MAP_LITTLEROOT_TOWN
+ hideobjectat LOCALID_LITTLEROOT_MOM, MAP_LITTLEROOT_TOWN
closedoor VAR_0x8009, VAR_0x800A
waitdooranim
return
LittlerootTown_EventScript_MomReturnHomeMale3::
- applymovement LOCALID_MOM, LittlerootTown_Movement_MomReturnHomeMale3
+ applymovement LOCALID_LITTLEROOT_MOM, LittlerootTown_Movement_MomReturnHomeMale3
waitmovement 0
opendoor VAR_0x8009, VAR_0x800A
waitdooranim
- applymovement LOCALID_MOM, LittlerootTown_Movement_MomExitThroughDoor
+ applymovement LOCALID_LITTLEROOT_MOM, LittlerootTown_Movement_MomExitThroughDoor
waitmovement 0
- hideobjectat LOCALID_MOM, MAP_LITTLEROOT_TOWN
+ hideobjectat LOCALID_LITTLEROOT_MOM, MAP_LITTLEROOT_TOWN
closedoor VAR_0x8009, VAR_0x800A
waitdooranim
return
LittlerootTown_EventScript_MomReturnHomeMale4::
- applymovement LOCALID_MOM, LittlerootTown_Movement_MomReturnHomeMale4
+ applymovement LOCALID_LITTLEROOT_MOM, LittlerootTown_Movement_MomReturnHomeMale4
waitmovement 0
opendoor VAR_0x8009, VAR_0x800A
waitdooranim
- applymovement LOCALID_MOM, LittlerootTown_Movement_MomExitThroughDoor
+ applymovement LOCALID_LITTLEROOT_MOM, LittlerootTown_Movement_MomExitThroughDoor
waitmovement 0
- hideobjectat LOCALID_MOM, MAP_LITTLEROOT_TOWN
+ hideobjectat LOCALID_LITTLEROOT_MOM, MAP_LITTLEROOT_TOWN
closedoor VAR_0x8009, VAR_0x800A
waitdooranim
return
LittlerootTown_EventScript_MomReturnHomeMale5::
- applymovement LOCALID_MOM, LittlerootTown_Movement_MomReturnHomeMale5
+ applymovement LOCALID_LITTLEROOT_MOM, LittlerootTown_Movement_MomReturnHomeMale5
waitmovement 0
opendoor VAR_0x8009, VAR_0x800A
waitdooranim
- applymovement LOCALID_MOM, LittlerootTown_Movement_MomExitThroughDoor
+ applymovement LOCALID_LITTLEROOT_MOM, LittlerootTown_Movement_MomExitThroughDoor
waitmovement 0
- hideobjectat LOCALID_MOM, MAP_LITTLEROOT_TOWN
+ hideobjectat LOCALID_LITTLEROOT_MOM, MAP_LITTLEROOT_TOWN
closedoor VAR_0x8009, VAR_0x800A
waitdooranim
return
LittlerootTown_EventScript_MomReturnHomeFemale2::
- applymovement LOCALID_MOM, LittlerootTown_Movement_MomReturnHomeFemale2
+ applymovement LOCALID_LITTLEROOT_MOM, LittlerootTown_Movement_MomReturnHomeFemale2
waitmovement 0
opendoor VAR_0x8009, VAR_0x800A
waitdooranim
- applymovement LOCALID_MOM, LittlerootTown_Movement_MomExitThroughDoor
+ applymovement LOCALID_LITTLEROOT_MOM, LittlerootTown_Movement_MomExitThroughDoor
waitmovement 0
- hideobjectat LOCALID_MOM, MAP_LITTLEROOT_TOWN
+ hideobjectat LOCALID_LITTLEROOT_MOM, MAP_LITTLEROOT_TOWN
closedoor VAR_0x8009, VAR_0x800A
waitdooranim
return
LittlerootTown_EventScript_MomReturnHomeFemale3::
- applymovement LOCALID_MOM, LittlerootTown_Movement_MomReturnHomeFemale3
+ applymovement LOCALID_LITTLEROOT_MOM, LittlerootTown_Movement_MomReturnHomeFemale3
waitmovement 0
opendoor VAR_0x8009, VAR_0x800A
waitdooranim
- applymovement LOCALID_MOM, LittlerootTown_Movement_MomExitThroughDoor
+ applymovement LOCALID_LITTLEROOT_MOM, LittlerootTown_Movement_MomExitThroughDoor
waitmovement 0
- hideobjectat LOCALID_MOM, MAP_LITTLEROOT_TOWN
+ hideobjectat LOCALID_LITTLEROOT_MOM, MAP_LITTLEROOT_TOWN
closedoor VAR_0x8009, VAR_0x800A
waitdooranim
return
LittlerootTown_EventScript_MomReturnHomeFemale4::
- applymovement LOCALID_MOM, LittlerootTown_Movement_MomReturnHomeFemale4
+ applymovement LOCALID_LITTLEROOT_MOM, LittlerootTown_Movement_MomReturnHomeFemale4
waitmovement 0
opendoor VAR_0x8009, VAR_0x800A
waitdooranim
- applymovement LOCALID_MOM, LittlerootTown_Movement_MomExitThroughDoor
+ applymovement LOCALID_LITTLEROOT_MOM, LittlerootTown_Movement_MomExitThroughDoor
waitmovement 0
- hideobjectat LOCALID_MOM, MAP_LITTLEROOT_TOWN
+ hideobjectat LOCALID_LITTLEROOT_MOM, MAP_LITTLEROOT_TOWN
closedoor VAR_0x8009, VAR_0x800A
waitdooranim
return
LittlerootTown_EventScript_MomReturnHomeFemale5::
- applymovement LOCALID_MOM, LittlerootTown_Movement_MomReturnHomeFemale5
+ applymovement LOCALID_LITTLEROOT_MOM, LittlerootTown_Movement_MomReturnHomeFemale5
waitmovement 0
opendoor VAR_0x8009, VAR_0x800A
waitdooranim
- applymovement LOCALID_MOM, LittlerootTown_Movement_MomExitThroughDoor
+ applymovement LOCALID_LITTLEROOT_MOM, LittlerootTown_Movement_MomExitThroughDoor
waitmovement 0
- hideobjectat LOCALID_MOM, MAP_LITTLEROOT_TOWN
+ hideobjectat LOCALID_LITTLEROOT_MOM, MAP_LITTLEROOT_TOWN
closedoor VAR_0x8009, VAR_0x800A
waitdooranim
return
@@ -878,20 +873,20 @@ LittlerootTown_EventScript_Mom::
call_if_eq VAR_RESULT, MALE, LittlerootTown_EventScript_SetHomeDoorCoordsMale
call_if_eq VAR_RESULT, FEMALE, LittlerootTown_EventScript_SetHomeDoorCoordsFemale
call LittlerootTown_EventScript_GiveRunningShoes
- applymovement LOCALID_MOM, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_LITTLEROOT_MOM, Common_Movement_WalkInPlaceFasterUp
waitmovement 0
opendoor VAR_0x8009, VAR_0x800A
waitdooranim
- applymovement LOCALID_MOM, LittlerootTown_Movement_MomExitThroughDoor
+ applymovement LOCALID_LITTLEROOT_MOM, LittlerootTown_Movement_MomExitThroughDoor
waitmovement 0
- hideobjectat LOCALID_MOM, MAP_LITTLEROOT_TOWN
+ hideobjectat LOCALID_LITTLEROOT_MOM, MAP_LITTLEROOT_TOWN
closedoor VAR_0x8009, VAR_0x800A
waitdooranim
goto LittlerootTown_EventScript_SetReceivedRunningShoes
end
LittlerootTown_EventScript_SetReceivedRunningShoes::
- removeobject LOCALID_MOM
+ removeobject LOCALID_LITTLEROOT_MOM
setflag FLAG_SYS_B_DASH
setvar VAR_LITTLEROOT_TOWN_STATE, 4
release
diff --git a/data/maps/LittlerootTown_BrendansHouse_1F/map.json b/data/maps/LittlerootTown_BrendansHouse_1F/map.json
index 23b1bf28c6..d8f2f818e1 100644
--- a/data/maps/LittlerootTown_BrendansHouse_1F/map.json
+++ b/data/maps/LittlerootTown_BrendansHouse_1F/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_PLAYERS_HOUSE_1F_MOM",
"graphics_id": "OBJ_EVENT_GFX_MOM",
"x": 2,
"y": 6,
@@ -54,6 +55,7 @@
"flag": "FLAG_HIDE_LITTLEROOT_TOWN_PLAYERS_HOUSE_VIGOROTH_1"
},
{
+ "local_id": "LOCALID_RIVALS_HOUSE_1F_MOM",
"graphics_id": "OBJ_EVENT_GFX_WOMAN_4",
"x": 2,
"y": 7,
@@ -67,6 +69,7 @@
"flag": "FLAG_HIDE_LITTLEROOT_TOWN_BRENDANS_HOUSE_RIVAL_MOM"
},
{
+ "local_id": "LOCALID_PLAYERS_HOUSE_1F_DAD",
"graphics_id": "OBJ_EVENT_GFX_NORMAN",
"x": 5,
"y": 6,
@@ -93,6 +96,7 @@
"flag": "FLAG_HIDE_LITTLEROOT_TOWN_BRENDANS_HOUSE_RIVAL_SIBLING"
},
{
+ "local_id": "LOCALID_RIVALS_HOUSE_1F_RIVAL",
"graphics_id": "OBJ_EVENT_GFX_RIVAL_BRENDAN_NORMAL",
"x": 8,
"y": 8,
diff --git a/data/maps/LittlerootTown_BrendansHouse_1F/scripts.inc b/data/maps/LittlerootTown_BrendansHouse_1F/scripts.inc
index cce8cd59b9..3b544fdf2d 100644
--- a/data/maps/LittlerootTown_BrendansHouse_1F/scripts.inc
+++ b/data/maps/LittlerootTown_BrendansHouse_1F/scripts.inc
@@ -1,7 +1,3 @@
-.set LOCALID_MOM, 1
-.set LOCALID_RIVAL_MOM, 4
-.set LOCALID_RIVAL, 7
-
LittlerootTown_BrendansHouse_1F_MapScripts::
map_script MAP_SCRIPT_ON_LOAD, LittlerootTown_BrendansHouse_1F_OnLoad
map_script MAP_SCRIPT_ON_TRANSITION, LittlerootTown_BrendansHouse_1F_OnTransition
@@ -34,18 +30,18 @@ LittlerootTown_BrendansHouse_1F_OnTransition:
end
LittlerootTown_BrendansHouse_1F_EventScript_MoveMomToStairs::
- setobjectxyperm LOCALID_MOM, 8, 4
- setobjectmovementtype LOCALID_MOM, MOVEMENT_TYPE_FACE_UP
+ setobjectxyperm LOCALID_PLAYERS_HOUSE_1F_MOM, 8, 4
+ setobjectmovementtype LOCALID_PLAYERS_HOUSE_1F_MOM, MOVEMENT_TYPE_FACE_UP
return
LittlerootTown_BrendansHouse_1F_EventScript_MoveMomToTV::
- setobjectxyperm LOCALID_MOM, 4, 5
- setobjectmovementtype LOCALID_MOM, MOVEMENT_TYPE_FACE_UP
+ setobjectxyperm LOCALID_PLAYERS_HOUSE_1F_MOM, 4, 5
+ setobjectmovementtype LOCALID_PLAYERS_HOUSE_1F_MOM, MOVEMENT_TYPE_FACE_UP
return
LittlerootTown_BrendansHouse_1F_EventScript_MoveMomToDoor::
- setobjectxyperm LOCALID_MOM, 9, 8
- setobjectmovementtype LOCALID_MOM, MOVEMENT_TYPE_FACE_UP
+ setobjectxyperm LOCALID_PLAYERS_HOUSE_1F_MOM, 9, 8
+ setobjectmovementtype LOCALID_PLAYERS_HOUSE_1F_MOM, MOVEMENT_TYPE_FACE_UP
return
@ Many of the below scripts have no gender check because they assume youre in the correct house
@@ -62,8 +58,8 @@ LittlerootTown_BrendansHouse_1F_EventScript_GoUpstairsToSetClock::
lockall
msgbox PlayersHouse_1F_Text_GoSetTheClock, MSGBOX_DEFAULT
closemessage
- applymovement OBJ_EVENT_ID_PLAYER, LittlerootTown_BrendansHouse_1F_Movement_PushTowardStairs
- applymovement LOCALID_MOM, LittlerootTown_BrendansHouse_1F_Movement_PushTowardStairs
+ applymovement LOCALID_PLAYER, LittlerootTown_BrendansHouse_1F_Movement_PushTowardStairs
+ applymovement LOCALID_PLAYERS_HOUSE_1F_MOM, LittlerootTown_BrendansHouse_1F_Movement_PushTowardStairs
waitmovement 0
warp MAP_LITTLEROOT_TOWN_BRENDANS_HOUSE_2F, 7, 1
waitstate
@@ -76,7 +72,7 @@ LittlerootTown_BrendansHouse_1F_Movement_PushTowardStairs:
LittlerootTown_BrendansHouse_1F_EventScript_EnterHouseMovingIn::
lockall
- setvar VAR_0x8004, LOCALID_MOM
+ setvar VAR_0x8004, LOCALID_PLAYERS_HOUSE_1F_MOM
setvar VAR_0x8005, MALE
goto PlayersHouse_1F_EventScript_EnterHouseMovingIn
end
@@ -84,19 +80,19 @@ LittlerootTown_BrendansHouse_1F_EventScript_EnterHouseMovingIn::
LittlerootTown_BrendansHouse_1F_EventScript_PetalburgGymReport::
lockall
setvar VAR_0x8004, MALE
- setvar VAR_0x8005, LOCALID_MOM
+ setvar VAR_0x8005, LOCALID_PLAYERS_HOUSE_1F_MOM
goto PlayersHouse_1F_EventScript_PetalburgGymReportMale
end
LittlerootTown_BrendansHouse_1F_EventScript_YoureNewNeighbor::
lockall
playse SE_PIN
- applymovement LOCALID_RIVAL_MOM, Common_Movement_ExclamationMark
+ applymovement LOCALID_RIVALS_HOUSE_1F_MOM, Common_Movement_ExclamationMark
waitmovement 0
- applymovement LOCALID_RIVAL_MOM, Common_Movement_Delay48
+ applymovement LOCALID_RIVALS_HOUSE_1F_MOM, Common_Movement_Delay48
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
- applymovement LOCALID_RIVAL_MOM, LittlerootTown_BrendansHouse_1F_Movement_RivalMomApproach
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
+ applymovement LOCALID_RIVALS_HOUSE_1F_MOM, LittlerootTown_BrendansHouse_1F_Movement_RivalMomApproach
waitmovement 0
special GetRivalSonDaughterString
msgbox RivalsHouse_1F_Text_OhYoureTheNewNeighbor, MSGBOX_DEFAULT
@@ -116,7 +112,7 @@ LittlerootTown_BrendansHouse_1F_Movement_RivalMomApproach:
LittlerootTown_BrendansHouse_1F_EventScript_GoSeeRoom::
lockall
- setvar VAR_0x8004, LOCALID_MOM
+ setvar VAR_0x8004, LOCALID_PLAYERS_HOUSE_1F_MOM
setvar VAR_0x8005, MALE
applymovement VAR_0x8004, Common_Movement_WalkInPlaceFasterLeft
waitmovement 0
@@ -144,12 +140,12 @@ LittlerootTown_BrendansHouse_1F_EventScript_MeetRival2::
LittlerootTown_BrendansHouse_1F_EventScript_MeetRival::
playse SE_EXIT
delay 10
- addobject LOCALID_RIVAL
+ addobject LOCALID_RIVALS_HOUSE_1F_RIVAL
delay 30
playse SE_PIN
- applymovement LOCALID_RIVAL, Common_Movement_ExclamationMark
+ applymovement LOCALID_RIVALS_HOUSE_1F_RIVAL, Common_Movement_ExclamationMark
waitmovement 0
- applymovement LOCALID_RIVAL, Common_Movement_Delay48
+ applymovement LOCALID_RIVALS_HOUSE_1F_RIVAL, Common_Movement_Delay48
waitmovement 0
call_if_ne VAR_0x8008, 1, LittlerootTown_BrendansHouse_1F_EventScript_PlayerFaceBrendan
playbgm MUS_ENCOUNTER_BRENDAN, TRUE
@@ -162,7 +158,7 @@ LittlerootTown_BrendansHouse_1F_EventScript_MeetRival::
call_if_eq VAR_0x8008, 1, LittlerootTown_BrendansHouse_1F_EventScript_BrendanGoUpstairs1
call_if_eq VAR_0x8008, 2, LittlerootTown_BrendansHouse_1F_EventScript_BrendanGoUpstairs2
playse SE_EXIT
- removeobject LOCALID_RIVAL
+ removeobject LOCALID_RIVALS_HOUSE_1F_RIVAL
setflag FLAG_HIDE_LITTLEROOT_TOWN_BRENDANS_HOUSE_BRENDAN
setflag FLAG_HIDE_LITTLEROOT_TOWN_BRENDANS_HOUSE_2F_POKE_BALL
clearflag FLAG_HIDE_LITTLEROOT_TOWN_BRENDANS_HOUSE_RIVAL_BEDROOM
@@ -175,22 +171,22 @@ LittlerootTown_BrendansHouse_1F_EventScript_MeetRival::
end
LittlerootTown_BrendansHouse_1F_EventScript_PlayerFaceBrendan::
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterDown
waitmovement 0
return
LittlerootTown_BrendansHouse_1F_EventScript_BrendanApproachPlayer0::
- applymovement LOCALID_RIVAL, LittlerootTown_BrendansHouse_1F_Movement_BrendanApproachPlayer0
+ applymovement LOCALID_RIVALS_HOUSE_1F_RIVAL, LittlerootTown_BrendansHouse_1F_Movement_BrendanApproachPlayer0
waitmovement 0
return
LittlerootTown_BrendansHouse_1F_EventScript_BrendanApproachPlayer1::
- applymovement LOCALID_RIVAL, LittlerootTown_BrendansHouse_1F_Movement_BrendanApproachPlayer1
+ applymovement LOCALID_RIVALS_HOUSE_1F_RIVAL, LittlerootTown_BrendansHouse_1F_Movement_BrendanApproachPlayer1
waitmovement 0
return
LittlerootTown_BrendansHouse_1F_EventScript_BrendanApproachPlayer2::
- applymovement LOCALID_RIVAL, LittlerootTown_BrendansHouse_1F_Movement_BrendanApproachPlayer2
+ applymovement LOCALID_RIVALS_HOUSE_1F_RIVAL, LittlerootTown_BrendansHouse_1F_Movement_BrendanApproachPlayer2
waitmovement 0
return
@@ -221,20 +217,20 @@ LittlerootTown_BrendansHouse_1F_Movement_BrendanApproachPlayer2:
step_end
LittlerootTown_BrendansHouse_1F_EventScript_BrendanGoUpstairs0::
- applymovement OBJ_EVENT_ID_PLAYER, LittlerootTown_BrendansHouse_1F_Movement_PlayerWatchBrendanExit0
- applymovement LOCALID_RIVAL, LittlerootTown_BrendansHouse_1F_Movement_BrendanGoUpstairs0
+ applymovement LOCALID_PLAYER, LittlerootTown_BrendansHouse_1F_Movement_PlayerWatchBrendanExit0
+ applymovement LOCALID_RIVALS_HOUSE_1F_RIVAL, LittlerootTown_BrendansHouse_1F_Movement_BrendanGoUpstairs0
waitmovement 0
return
LittlerootTown_BrendansHouse_1F_EventScript_BrendanGoUpstairs1::
- applymovement OBJ_EVENT_ID_PLAYER, LittlerootTown_BrendansHouse_1F_Movement_PlayerWatchBrendanExit1
- applymovement LOCALID_RIVAL, LittlerootTown_BrendansHouse_1F_Movement_BrendanGoUpstairs1
+ applymovement LOCALID_PLAYER, LittlerootTown_BrendansHouse_1F_Movement_PlayerWatchBrendanExit1
+ applymovement LOCALID_RIVALS_HOUSE_1F_RIVAL, LittlerootTown_BrendansHouse_1F_Movement_BrendanGoUpstairs1
waitmovement 0
return
LittlerootTown_BrendansHouse_1F_EventScript_BrendanGoUpstairs2::
- applymovement OBJ_EVENT_ID_PLAYER, LittlerootTown_BrendansHouse_1F_Movement_PlayerWatchBrendanExit2
- applymovement LOCALID_RIVAL, LittlerootTown_BrendansHouse_1F_Movement_BrendanGoUpstairs2
+ applymovement LOCALID_PLAYER, LittlerootTown_BrendansHouse_1F_Movement_PlayerWatchBrendanExit2
+ applymovement LOCALID_RIVALS_HOUSE_1F_RIVAL, LittlerootTown_BrendansHouse_1F_Movement_BrendanGoUpstairs2
waitmovement 0
return
diff --git a/data/maps/LittlerootTown_BrendansHouse_2F/map.json b/data/maps/LittlerootTown_BrendansHouse_2F/map.json
index e9b6834ee5..9b3852767a 100644
--- a/data/maps/LittlerootTown_BrendansHouse_2F/map.json
+++ b/data/maps/LittlerootTown_BrendansHouse_2F/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_RIVALS_HOUSE_2F_RIVAL",
"graphics_id": "OBJ_EVENT_GFX_RIVAL_BRENDAN_NORMAL",
"x": 7,
"y": 1,
@@ -184,6 +185,7 @@
"flag": "FLAG_DECORATION_12"
},
{
+ "local_id": "LOCALID_PLAYERS_HOUSE_2F_MOM",
"graphics_id": "OBJ_EVENT_GFX_MOM",
"x": 7,
"y": 1,
diff --git a/data/maps/LittlerootTown_BrendansHouse_2F/scripts.inc b/data/maps/LittlerootTown_BrendansHouse_2F/scripts.inc
index cd4d155192..2832e9d794 100644
--- a/data/maps/LittlerootTown_BrendansHouse_2F/scripts.inc
+++ b/data/maps/LittlerootTown_BrendansHouse_2F/scripts.inc
@@ -1,5 +1,3 @@
-.set LOCALID_RIVAL, 1
-
LittlerootTown_BrendansHouse_2F_MapScripts::
map_script MAP_SCRIPT_ON_TRANSITION, LittlerootTown_BrendansHouse_2F_OnTransition
map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, LittlerootTown_BrendansHouse_2F_OnWarp
@@ -23,8 +21,8 @@ LittlerootTown_BrendansHouse_2F_EventScript_TryUpdateBrendanPos::
goto_if_eq VAR_RESULT, MALE, LittlerootTown_BrendansHouse_2F_EventScript_Ret
@ Odd that the MaysHouse equivalent was used below instead
goto_if_ge VAR_DEX_UPGRADE_JOHTO_STARTER_STATE, 2, LittlerootTown_MaysHouse_2F_EventScript_Ret
- setobjectxyperm LOCALID_RIVAL, 0, 2
- setobjectmovementtype LOCALID_RIVAL, MOVEMENT_TYPE_FACE_UP
+ setobjectxyperm LOCALID_RIVALS_HOUSE_2F_RIVAL, 0, 2
+ setobjectmovementtype LOCALID_RIVALS_HOUSE_2F_RIVAL, MOVEMENT_TYPE_FACE_UP
return
LittlerootTown_BrendansHouse_2F_EventScript_Ret::
@@ -57,13 +55,13 @@ LittlerootTown_BrendansHouse_2F_EventScript_RivalsPokeBall::
LittlerootTown_BrendansHouse_2F_EventScript_MeetBrendan::
delay 10
- addobject LOCALID_RIVAL
- applymovement LOCALID_RIVAL, LittlerootTown_BrendansHouse_2F_Movement_BrendanEnters
+ addobject LOCALID_RIVALS_HOUSE_2F_RIVAL
+ applymovement LOCALID_RIVALS_HOUSE_2F_RIVAL, LittlerootTown_BrendansHouse_2F_Movement_BrendanEnters
waitmovement 0
playse SE_PIN
- applymovement LOCALID_RIVAL, Common_Movement_ExclamationMark
+ applymovement LOCALID_RIVALS_HOUSE_2F_RIVAL, Common_Movement_ExclamationMark
waitmovement 0
- applymovement LOCALID_RIVAL, Common_Movement_Delay48
+ applymovement LOCALID_RIVALS_HOUSE_2F_RIVAL, Common_Movement_Delay48
waitmovement 0
delay 10
playbgm MUS_ENCOUNTER_BRENDAN, TRUE
@@ -81,49 +79,49 @@ LittlerootTown_BrendansHouse_2F_EventScript_MeetBrendan::
end
LittlerootTown_BrendansHouse_2F_EventScript_MeetBrendanNorth::
- applymovement LOCALID_RIVAL, LittlerootTown_BrendansHouse_2F_Movement_BrendanApproachPlayerNorth
+ applymovement LOCALID_RIVALS_HOUSE_2F_RIVAL, LittlerootTown_BrendansHouse_2F_Movement_BrendanApproachPlayerNorth
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterRight
waitmovement 0
msgbox RivalsHouse_2F_Text_BrendanWhoAreYou, MSGBOX_DEFAULT
closemessage
- applymovement OBJ_EVENT_ID_PLAYER, LittlerootTown_BrendansHouse_2F_Movement_PlayerWatchBrendanNorth
- applymovement LOCALID_RIVAL, LittlerootTown_BrendansHouse_2F_Movement_BrendanWalkToPCNorth
+ applymovement LOCALID_PLAYER, LittlerootTown_BrendansHouse_2F_Movement_PlayerWatchBrendanNorth
+ applymovement LOCALID_RIVALS_HOUSE_2F_RIVAL, LittlerootTown_BrendansHouse_2F_Movement_BrendanWalkToPCNorth
waitmovement 0
return
LittlerootTown_BrendansHouse_2F_EventScript_MeetBrendanSouth::
- applymovement LOCALID_RIVAL, LittlerootTown_BrendansHouse_2F_Movement_BrendanApproachPlayerSouth
+ applymovement LOCALID_RIVALS_HOUSE_2F_RIVAL, LittlerootTown_BrendansHouse_2F_Movement_BrendanApproachPlayerSouth
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterRight
waitmovement 0
msgbox RivalsHouse_2F_Text_BrendanWhoAreYou, MSGBOX_DEFAULT
closemessage
- applymovement OBJ_EVENT_ID_PLAYER, LittlerootTown_BrendansHouse_2F_Movement_PlayerWatchBrendanSouth
- applymovement LOCALID_RIVAL, LittlerootTown_BrendansHouse_2F_Movement_BrendanWalkToPCSouth
+ applymovement LOCALID_PLAYER, LittlerootTown_BrendansHouse_2F_Movement_PlayerWatchBrendanSouth
+ applymovement LOCALID_RIVALS_HOUSE_2F_RIVAL, LittlerootTown_BrendansHouse_2F_Movement_BrendanWalkToPCSouth
waitmovement 0
return
LittlerootTown_BrendansHouse_2F_EventScript_MeetBrendanWest::
- applymovement LOCALID_RIVAL, LittlerootTown_BrendansHouse_2F_Movement_BrendanApproachPlayerWest
+ applymovement LOCALID_RIVALS_HOUSE_2F_RIVAL, LittlerootTown_BrendansHouse_2F_Movement_BrendanApproachPlayerWest
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterRight
waitmovement 0
msgbox RivalsHouse_2F_Text_BrendanWhoAreYou, MSGBOX_DEFAULT
closemessage
- applymovement OBJ_EVENT_ID_PLAYER, LittlerootTown_BrendansHouse_2F_Movement_PlayerWatchBrendanWest
- applymovement LOCALID_RIVAL, LittlerootTown_BrendansHouse_2F_Movement_BrendanWalkToPCWest
+ applymovement LOCALID_PLAYER, LittlerootTown_BrendansHouse_2F_Movement_PlayerWatchBrendanWest
+ applymovement LOCALID_RIVALS_HOUSE_2F_RIVAL, LittlerootTown_BrendansHouse_2F_Movement_BrendanWalkToPCWest
waitmovement 0
return
LittlerootTown_BrendansHouse_2F_EventScript_MeetBrendanEast::
- applymovement LOCALID_RIVAL, LittlerootTown_BrendansHouse_2F_Movement_BrendanApproachPlayerEast
+ applymovement LOCALID_RIVALS_HOUSE_2F_RIVAL, LittlerootTown_BrendansHouse_2F_Movement_BrendanApproachPlayerEast
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterUp
waitmovement 0
msgbox RivalsHouse_2F_Text_BrendanWhoAreYou, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_RIVAL, LittlerootTown_BrendansHouse_2F_Movement_BrendanWalkToPCEast
+ applymovement LOCALID_RIVALS_HOUSE_2F_RIVAL, LittlerootTown_BrendansHouse_2F_Movement_BrendanWalkToPCEast
waitmovement 0
return
diff --git a/data/maps/LittlerootTown_MaysHouse_1F/map.json b/data/maps/LittlerootTown_MaysHouse_1F/map.json
index 4e4887003f..6fd26a9b96 100644
--- a/data/maps/LittlerootTown_MaysHouse_1F/map.json
+++ b/data/maps/LittlerootTown_MaysHouse_1F/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_PLAYERS_HOUSE_1F_MOM",
"graphics_id": "OBJ_EVENT_GFX_MOM",
"x": 8,
"y": 6,
@@ -54,6 +55,7 @@
"flag": "FLAG_HIDE_LITTLEROOT_TOWN_PLAYERS_HOUSE_VIGOROTH_2"
},
{
+ "local_id": "LOCALID_RIVALS_HOUSE_1F_MOM",
"graphics_id": "OBJ_EVENT_GFX_WOMAN_4",
"x": 8,
"y": 7,
@@ -67,6 +69,7 @@
"flag": "FLAG_HIDE_LITTLEROOT_TOWN_MAYS_HOUSE_RIVAL_MOM"
},
{
+ "local_id": "LOCALID_PLAYERS_HOUSE_1F_DAD",
"graphics_id": "OBJ_EVENT_GFX_NORMAN",
"x": 5,
"y": 6,
@@ -93,6 +96,7 @@
"flag": "FLAG_HIDE_LITTLEROOT_TOWN_MAYS_HOUSE_RIVAL_SIBLING"
},
{
+ "local_id": "LOCALID_RIVALS_HOUSE_1F_RIVAL",
"graphics_id": "OBJ_EVENT_GFX_RIVAL_MAY_NORMAL",
"x": 2,
"y": 8,
diff --git a/data/maps/LittlerootTown_MaysHouse_1F/scripts.inc b/data/maps/LittlerootTown_MaysHouse_1F/scripts.inc
index b4c4775c33..6a7b6644b9 100644
--- a/data/maps/LittlerootTown_MaysHouse_1F/scripts.inc
+++ b/data/maps/LittlerootTown_MaysHouse_1F/scripts.inc
@@ -1,7 +1,3 @@
-.set LOCALID_MOM, 1
-.set LOCALID_RIVAL_MOM, 4
-.set LOCALID_RIVAL, 7
-
LittlerootTown_MaysHouse_1F_MapScripts::
map_script MAP_SCRIPT_ON_LOAD, LittlerootTown_MaysHouse_1F_OnLoad
map_script MAP_SCRIPT_ON_TRANSITION, LittlerootTown_MaysHouse_1F_OnTransition
@@ -34,18 +30,18 @@ LittlerootTown_MaysHouse_1F_OnTransition:
end
LittlerootTown_MaysHouse_1F_EventScript_MoveMomToStairs::
- setobjectxyperm LOCALID_MOM, 2, 4
- setobjectmovementtype LOCALID_MOM, MOVEMENT_TYPE_FACE_UP
+ setobjectxyperm LOCALID_PLAYERS_HOUSE_1F_MOM, 2, 4
+ setobjectmovementtype LOCALID_PLAYERS_HOUSE_1F_MOM, MOVEMENT_TYPE_FACE_UP
return
LittlerootTown_MaysHouse_1F_EventScript_MoveMomToTV::
- setobjectxyperm LOCALID_MOM, 6, 5
- setobjectmovementtype LOCALID_MOM, MOVEMENT_TYPE_FACE_UP
+ setobjectxyperm LOCALID_PLAYERS_HOUSE_1F_MOM, 6, 5
+ setobjectmovementtype LOCALID_PLAYERS_HOUSE_1F_MOM, MOVEMENT_TYPE_FACE_UP
return
LittlerootTown_MaysHouse_1F_EventScript_MoveMomToDoor::
- setobjectxyperm LOCALID_MOM, 1, 8
- setobjectmovementtype LOCALID_MOM, MOVEMENT_TYPE_FACE_UP
+ setobjectxyperm LOCALID_PLAYERS_HOUSE_1F_MOM, 1, 8
+ setobjectmovementtype LOCALID_PLAYERS_HOUSE_1F_MOM, MOVEMENT_TYPE_FACE_UP
return
@ Many of the below scripts have no gender check because they assume youre in the correct house
@@ -61,8 +57,8 @@ LittlerootTown_MaysHouse_1F_EventScript_GoUpstairsToSetClock::
lockall
msgbox PlayersHouse_1F_Text_GoSetTheClock, MSGBOX_DEFAULT
closemessage
- applymovement OBJ_EVENT_ID_PLAYER, LittlerootTown_MaysHouse_1F_Movement_PushTowardStairs
- applymovement LOCALID_MOM, LittlerootTown_MaysHouse_1F_Movement_PushTowardStairs
+ applymovement LOCALID_PLAYER, LittlerootTown_MaysHouse_1F_Movement_PushTowardStairs
+ applymovement LOCALID_PLAYERS_HOUSE_1F_MOM, LittlerootTown_MaysHouse_1F_Movement_PushTowardStairs
waitmovement 0
warp MAP_LITTLEROOT_TOWN_MAYS_HOUSE_2F, 1, 1
waitstate
@@ -75,7 +71,7 @@ LittlerootTown_MaysHouse_1F_Movement_PushTowardStairs:
LittlerootTown_MaysHouse_1F_EventScript_EnterHouseMovingIn::
lockall
- setvar VAR_0x8004, LOCALID_MOM
+ setvar VAR_0x8004, LOCALID_PLAYERS_HOUSE_1F_MOM
setvar VAR_0x8005, FEMALE
goto PlayersHouse_1F_EventScript_EnterHouseMovingIn
end
@@ -83,19 +79,19 @@ LittlerootTown_MaysHouse_1F_EventScript_EnterHouseMovingIn::
LittlerootTown_MaysHouse_1F_EventScript_PetalburgGymReport::
lockall
setvar VAR_0x8004, FEMALE
- setvar VAR_0x8005, LOCALID_MOM
+ setvar VAR_0x8005, LOCALID_PLAYERS_HOUSE_1F_MOM
goto PlayersHouse_1F_EventScript_PetalburgGymReportFemale
end
LittlerootTown_MaysHouse_1F_EventScript_YoureNewNeighbor::
lockall
playse SE_PIN
- applymovement LOCALID_RIVAL_MOM, Common_Movement_ExclamationMark
+ applymovement LOCALID_RIVALS_HOUSE_1F_MOM, Common_Movement_ExclamationMark
waitmovement 0
- applymovement LOCALID_RIVAL_MOM, Common_Movement_Delay48
+ applymovement LOCALID_RIVALS_HOUSE_1F_MOM, Common_Movement_Delay48
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterRight
- applymovement LOCALID_RIVAL_MOM, LittlerootTown_MaysHouse_1F_Movement_RivalMomApproach
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_RIVALS_HOUSE_1F_MOM, LittlerootTown_MaysHouse_1F_Movement_RivalMomApproach
waitmovement 0
special GetRivalSonDaughterString
msgbox RivalsHouse_1F_Text_OhYoureTheNewNeighbor, MSGBOX_DEFAULT
@@ -149,7 +145,7 @@ RivalsHouse_1F_EventScript_RivalSibling::
LittlerootTown_MaysHouse_1F_EventScript_GoSeeRoom::
lockall
- setvar VAR_0x8004, LOCALID_MOM
+ setvar VAR_0x8004, LOCALID_PLAYERS_HOUSE_1F_MOM
setvar VAR_0x8005, FEMALE
applymovement VAR_0x8004, Common_Movement_WalkInPlaceFasterRight
waitmovement 0
@@ -177,12 +173,12 @@ LittlerootTown_MaysHouse_1F_EventScript_MeetRival2::
LittlerootTown_MaysHouse_1F_EventScript_MeetRival::
playse SE_EXIT
delay 10
- addobject LOCALID_RIVAL
+ addobject LOCALID_RIVALS_HOUSE_1F_RIVAL
delay 30
playse SE_PIN
- applymovement LOCALID_RIVAL, Common_Movement_ExclamationMark
+ applymovement LOCALID_RIVALS_HOUSE_1F_RIVAL, Common_Movement_ExclamationMark
waitmovement 0
- applymovement LOCALID_RIVAL, Common_Movement_Delay48
+ applymovement LOCALID_RIVALS_HOUSE_1F_RIVAL, Common_Movement_Delay48
waitmovement 0
call_if_ne VAR_0x8008, 1, LittlerootTown_MaysHouse_1F_EventScript_PlayerFaceMay
playbgm MUS_ENCOUNTER_MAY, TRUE
@@ -195,7 +191,7 @@ LittlerootTown_MaysHouse_1F_EventScript_MeetRival::
call_if_eq VAR_0x8008, 1, LittlerootTown_MaysHouse_1F_EventScript_MayGoUpstairs1
call_if_eq VAR_0x8008, 2, LittlerootTown_MaysHouse_1F_EventScript_MayGoUpstairs2
playse SE_EXIT
- removeobject LOCALID_RIVAL
+ removeobject LOCALID_RIVALS_HOUSE_1F_RIVAL
setflag FLAG_HIDE_LITTLEROOT_TOWN_MAYS_HOUSE_MAY
setflag FLAG_HIDE_LITTLEROOT_TOWN_MAYS_HOUSE_2F_POKE_BALL
clearflag FLAG_HIDE_LITTLEROOT_TOWN_MAYS_HOUSE_RIVAL_BEDROOM
@@ -208,22 +204,22 @@ LittlerootTown_MaysHouse_1F_EventScript_MeetRival::
end
LittlerootTown_MaysHouse_1F_EventScript_PlayerFaceMay::
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterDown
waitmovement 0
return
LittlerootTown_MaysHouse_1F_EventScript_MayApproachPlayer0::
- applymovement LOCALID_RIVAL, LittlerootTown_MaysHouse_1F_Movement_MayApproachPlayer0
+ applymovement LOCALID_RIVALS_HOUSE_1F_RIVAL, LittlerootTown_MaysHouse_1F_Movement_MayApproachPlayer0
waitmovement 0
return
LittlerootTown_MaysHouse_1F_EventScript_MayApproachPlayer1::
- applymovement LOCALID_RIVAL, LittlerootTown_MaysHouse_1F_Movement_MayApproachPlayer1
+ applymovement LOCALID_RIVALS_HOUSE_1F_RIVAL, LittlerootTown_MaysHouse_1F_Movement_MayApproachPlayer1
waitmovement 0
return
LittlerootTown_MaysHouse_1F_EventScript_MayApproachPlayer2::
- applymovement LOCALID_RIVAL, LittlerootTown_MaysHouse_1F_Movement_MayApproachPlayer2
+ applymovement LOCALID_RIVALS_HOUSE_1F_RIVAL, LittlerootTown_MaysHouse_1F_Movement_MayApproachPlayer2
waitmovement 0
return
@@ -254,20 +250,20 @@ LittlerootTown_MaysHouse_1F_Movement_MayApproachPlayer2:
step_end
LittlerootTown_MaysHouse_1F_EventScript_MayGoUpstairs0::
- applymovement OBJ_EVENT_ID_PLAYER, LittlerootTown_MaysHouse_1F_Movement_PlayerWatchMayExit0
- applymovement LOCALID_RIVAL, LittlerootTown_MaysHouse_1F_Movement_MayGoUpstairs0
+ applymovement LOCALID_PLAYER, LittlerootTown_MaysHouse_1F_Movement_PlayerWatchMayExit0
+ applymovement LOCALID_RIVALS_HOUSE_1F_RIVAL, LittlerootTown_MaysHouse_1F_Movement_MayGoUpstairs0
waitmovement 0
return
LittlerootTown_MaysHouse_1F_EventScript_MayGoUpstairs1::
- applymovement OBJ_EVENT_ID_PLAYER, LittlerootTown_MaysHouse_1F_Movement_PlayerWatchMayExit1
- applymovement LOCALID_RIVAL, LittlerootTown_MaysHouse_1F_Movement_MayGoUpstairs1
+ applymovement LOCALID_PLAYER, LittlerootTown_MaysHouse_1F_Movement_PlayerWatchMayExit1
+ applymovement LOCALID_RIVALS_HOUSE_1F_RIVAL, LittlerootTown_MaysHouse_1F_Movement_MayGoUpstairs1
waitmovement 0
return
LittlerootTown_MaysHouse_1F_EventScript_MayGoUpstairs2::
- applymovement OBJ_EVENT_ID_PLAYER, LittlerootTown_MaysHouse_1F_Movement_PlayerWatchMayExit2
- applymovement LOCALID_RIVAL, LittlerootTown_MaysHouse_1F_Movement_MayGoUpstairs2
+ applymovement LOCALID_PLAYER, LittlerootTown_MaysHouse_1F_Movement_PlayerWatchMayExit2
+ applymovement LOCALID_RIVALS_HOUSE_1F_RIVAL, LittlerootTown_MaysHouse_1F_Movement_MayGoUpstairs2
waitmovement 0
return
diff --git a/data/maps/LittlerootTown_MaysHouse_2F/map.json b/data/maps/LittlerootTown_MaysHouse_2F/map.json
index ce3a5f5701..3cec7006c1 100644
--- a/data/maps/LittlerootTown_MaysHouse_2F/map.json
+++ b/data/maps/LittlerootTown_MaysHouse_2F/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_RIVALS_HOUSE_2F_RIVAL",
"graphics_id": "OBJ_EVENT_GFX_RIVAL_MAY_NORMAL",
"x": 1,
"y": 1,
@@ -184,6 +185,7 @@
"flag": "FLAG_DECORATION_12"
},
{
+ "local_id": "LOCALID_PLAYERS_HOUSE_2F_MOM",
"graphics_id": "OBJ_EVENT_GFX_MOM",
"x": 1,
"y": 1,
diff --git a/data/maps/LittlerootTown_MaysHouse_2F/scripts.inc b/data/maps/LittlerootTown_MaysHouse_2F/scripts.inc
index ef8e83bf7e..9aa76dc2b4 100644
--- a/data/maps/LittlerootTown_MaysHouse_2F/scripts.inc
+++ b/data/maps/LittlerootTown_MaysHouse_2F/scripts.inc
@@ -1,5 +1,3 @@
-.set LOCALID_RIVAL, 1
-
LittlerootTown_MaysHouse_2F_MapScripts::
map_script MAP_SCRIPT_ON_TRANSITION, LittlerootTown_MaysHouse_2F_OnTransition
map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, LittlerootTown_MaysHouse_2F_OnWarp
@@ -22,8 +20,8 @@ LittlerootTown_MaysHouse_2F_EventScript_TryUpdateMayPos::
checkplayergender
goto_if_eq VAR_RESULT, FEMALE, LittlerootTown_MaysHouse_2F_EventScript_Ret
goto_if_ge VAR_DEX_UPGRADE_JOHTO_STARTER_STATE, 2, LittlerootTown_MaysHouse_2F_EventScript_Ret
- setobjectxyperm LOCALID_RIVAL, 8, 2
- setobjectmovementtype LOCALID_RIVAL, MOVEMENT_TYPE_FACE_UP
+ setobjectxyperm LOCALID_RIVALS_HOUSE_2F_RIVAL, 8, 2
+ setobjectmovementtype LOCALID_RIVALS_HOUSE_2F_RIVAL, MOVEMENT_TYPE_FACE_UP
return
LittlerootTown_MaysHouse_2F_EventScript_Ret::
@@ -56,13 +54,13 @@ LittlerootTown_MaysHouse_2F_EventScript_RivalsPokeBall::
LittlerootTown_MaysHouse_2F_EventScript_MeetMay::
delay 10
- addobject LOCALID_RIVAL
- applymovement LOCALID_RIVAL, LittlerootTown_MaysHouse_2F_Movement_MayEnters
+ addobject LOCALID_RIVALS_HOUSE_2F_RIVAL
+ applymovement LOCALID_RIVALS_HOUSE_2F_RIVAL, LittlerootTown_MaysHouse_2F_Movement_MayEnters
waitmovement 0
playse SE_PIN
- applymovement LOCALID_RIVAL, Common_Movement_ExclamationMark
+ applymovement LOCALID_RIVALS_HOUSE_2F_RIVAL, Common_Movement_ExclamationMark
waitmovement 0
- applymovement LOCALID_RIVAL, Common_Movement_Delay48
+ applymovement LOCALID_RIVALS_HOUSE_2F_RIVAL, Common_Movement_Delay48
waitmovement 0
delay 10
playbgm MUS_ENCOUNTER_MAY, TRUE
@@ -80,49 +78,49 @@ LittlerootTown_MaysHouse_2F_EventScript_MeetMay::
end
LittlerootTown_MaysHouse_2F_EventScript_MeetMayNorth::
- applymovement LOCALID_RIVAL, LittlerootTown_MaysHouse_2F_Movement_MayApproachPlayerNorth
+ applymovement LOCALID_RIVALS_HOUSE_2F_RIVAL, LittlerootTown_MaysHouse_2F_Movement_MayApproachPlayerNorth
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
waitmovement 0
msgbox RivalsHouse_2F_Text_MayWhoAreYou, MSGBOX_DEFAULT
closemessage
- applymovement OBJ_EVENT_ID_PLAYER, LittlerootTown_MaysHouse_2F_Movement_PlayerWatchMayNorth
- applymovement LOCALID_RIVAL, LittlerootTown_MaysHouse_2F_Movement_MayWalkToPCNorth
+ applymovement LOCALID_PLAYER, LittlerootTown_MaysHouse_2F_Movement_PlayerWatchMayNorth
+ applymovement LOCALID_RIVALS_HOUSE_2F_RIVAL, LittlerootTown_MaysHouse_2F_Movement_MayWalkToPCNorth
waitmovement 0
return
LittlerootTown_MaysHouse_2F_EventScript_MeetMaySouth::
- applymovement LOCALID_RIVAL, LittlerootTown_MaysHouse_2F_Movement_MayApproachPlayerSouth
+ applymovement LOCALID_RIVALS_HOUSE_2F_RIVAL, LittlerootTown_MaysHouse_2F_Movement_MayApproachPlayerSouth
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
waitmovement 0
msgbox RivalsHouse_2F_Text_MayWhoAreYou, MSGBOX_DEFAULT
closemessage
- applymovement OBJ_EVENT_ID_PLAYER, LittlerootTown_MaysHouse_2F_Movement_PlayerWatchMaySouth
- applymovement LOCALID_RIVAL, LittlerootTown_MaysHouse_2F_Movement_MayWalkToPCSouth
+ applymovement LOCALID_PLAYER, LittlerootTown_MaysHouse_2F_Movement_PlayerWatchMaySouth
+ applymovement LOCALID_RIVALS_HOUSE_2F_RIVAL, LittlerootTown_MaysHouse_2F_Movement_MayWalkToPCSouth
waitmovement 0
return
LittlerootTown_MaysHouse_2F_EventScript_MeetMayWest::
- applymovement LOCALID_RIVAL, LittlerootTown_MaysHouse_2F_Movement_MayApproachPlayerWest
+ applymovement LOCALID_RIVALS_HOUSE_2F_RIVAL, LittlerootTown_MaysHouse_2F_Movement_MayApproachPlayerWest
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterUp
waitmovement 0
msgbox RivalsHouse_2F_Text_MayWhoAreYou, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_RIVAL, LittlerootTown_MaysHouse_2F_Movement_MayWalkToPCWest
+ applymovement LOCALID_RIVALS_HOUSE_2F_RIVAL, LittlerootTown_MaysHouse_2F_Movement_MayWalkToPCWest
waitmovement 0
return
LittlerootTown_MaysHouse_2F_EventScript_MeetMayEast::
- applymovement LOCALID_RIVAL, LittlerootTown_MaysHouse_2F_Movement_MayApproachPlayerEast
+ applymovement LOCALID_RIVALS_HOUSE_2F_RIVAL, LittlerootTown_MaysHouse_2F_Movement_MayApproachPlayerEast
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
waitmovement 0
msgbox RivalsHouse_2F_Text_MayWhoAreYou, MSGBOX_DEFAULT
closemessage
- applymovement OBJ_EVENT_ID_PLAYER, LittlerootTown_MaysHouse_2F_Movement_PlayerWatchMayEast
- applymovement LOCALID_RIVAL, LittlerootTown_MaysHouse_2F_Movement_MayWalkToPCEast
+ applymovement LOCALID_PLAYER, LittlerootTown_MaysHouse_2F_Movement_PlayerWatchMayEast
+ applymovement LOCALID_RIVALS_HOUSE_2F_RIVAL, LittlerootTown_MaysHouse_2F_Movement_MayWalkToPCEast
waitmovement 0
return
diff --git a/data/maps/LittlerootTown_ProfessorBirchsLab/map.json b/data/maps/LittlerootTown_ProfessorBirchsLab/map.json
index d97c026bda..a701b4522d 100644
--- a/data/maps/LittlerootTown_ProfessorBirchsLab/map.json
+++ b/data/maps/LittlerootTown_ProfessorBirchsLab/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_BIRCHS_LAB_AIDE",
"graphics_id": "OBJ_EVENT_GFX_SCIENTIST_1",
"x": 9,
"y": 8,
@@ -28,6 +29,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_BIRCHS_LAB_BIRCH",
"graphics_id": "OBJ_EVENT_GFX_PROF_BIRCH",
"x": 6,
"y": 4,
@@ -41,6 +43,7 @@
"flag": "FLAG_HIDE_LITTLEROOT_TOWN_BIRCHS_LAB_BIRCH"
},
{
+ "local_id": "LOCALID_BIRCHS_LAB_RIVAL",
"graphics_id": "OBJ_EVENT_GFX_VAR_0",
"x": 7,
"y": 4,
@@ -54,6 +57,7 @@
"flag": "FLAG_HIDE_LITTLEROOT_TOWN_BIRCHS_LAB_RIVAL"
},
{
+ "local_id": "LOCALID_BIRCHS_LAB_CYNDAQUIL_BALL",
"graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
"x": 6,
"y": 8,
@@ -67,6 +71,7 @@
"flag": "FLAG_HIDE_LITTLEROOT_TOWN_BIRCHS_LAB_POKEBALL_CYNDAQUIL"
},
{
+ "local_id": "LOCALID_BIRCHS_LAB_TOTODILE_BALL",
"graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
"x": 6,
"y": 8,
@@ -80,6 +85,7 @@
"flag": "FLAG_HIDE_LITTLEROOT_TOWN_BIRCHS_LAB_POKEBALL_TOTODILE"
},
{
+ "local_id": "LOCALID_BIRCHS_LAB_CHIKORITA_BALL",
"graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
"x": 6,
"y": 8,
diff --git a/data/maps/LittlerootTown_ProfessorBirchsLab/scripts.inc b/data/maps/LittlerootTown_ProfessorBirchsLab/scripts.inc
index 0c8a468ab0..76fda0f323 100644
--- a/data/maps/LittlerootTown_ProfessorBirchsLab/scripts.inc
+++ b/data/maps/LittlerootTown_ProfessorBirchsLab/scripts.inc
@@ -1,10 +1,3 @@
-.set LOCALID_AIDE, 1
-.set LOCALID_BIRCH, 2
-.set LOCALID_RIVAL, 3
-.set LOCALID_BALL_CYNDAQUIL, 4
-.set LOCALID_BALL_TOTODILE, 5
-.set LOCALID_BALL_CHIKORITA, 6
-
LittlerootTown_ProfessorBirchsLab_MapScripts::
map_script MAP_SCRIPT_ON_TRANSITION, LittlerootTown_ProfessorBirchsLab_OnTransition
map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, LittlerootTown_ProfessorBirchsLab_OnWarp
@@ -37,8 +30,8 @@ LittlerootTown_ProfessorBirchsLab_OnTransition:
LittlerootTown_ProfessorBirchsLab_EventScript_CheckReadyForJohtoStarter::
specialvar VAR_RESULT, HasAllHoennMons
goto_if_eq VAR_RESULT, TRUE, LittlerootTown_ProfessorBirchsLab_EventScript_SetReadyForJohtoStarter
- setobjectmovementtype LOCALID_RIVAL, MOVEMENT_TYPE_WANDER_UP_AND_DOWN
- setobjectxyperm LOCALID_RIVAL, 5, 10
+ setobjectmovementtype LOCALID_BIRCHS_LAB_RIVAL, MOVEMENT_TYPE_WANDER_UP_AND_DOWN
+ setobjectxyperm LOCALID_BIRCHS_LAB_RIVAL, 5, 10
end
LittlerootTown_ProfessorBirchsLab_EventScript_SetReadyForJohtoStarter::
@@ -51,8 +44,8 @@ LittlerootTown_ProfessorBirchsLab_EventScript_SetJohtoStarterLayout::
LittlerootTown_ProfessorBirchsLab_EventScript_SetAfterJohtoStarterLayout::
setmaplayoutindex LAYOUT_LITTLEROOT_TOWN_PROFESSOR_BIRCHS_LAB_WITH_TABLE
- setobjectmovementtype LOCALID_RIVAL, MOVEMENT_TYPE_WANDER_UP_AND_DOWN
- setobjectxyperm LOCALID_RIVAL, 5, 10
+ setobjectmovementtype LOCALID_BIRCHS_LAB_RIVAL, MOVEMENT_TYPE_WANDER_UP_AND_DOWN
+ setobjectxyperm LOCALID_BIRCHS_LAB_RIVAL, 5, 10
end
LittlerootTown_ProfessorBirchsLab_OnWarp:
@@ -66,40 +59,40 @@ LittlerootTown_ProfessorBirchsLab_OnWarp:
.2byte 0
LittlerootTown_ProfessorBirchsLab_EventScript_SetPlayerPosForReceiveStarter::
- turnobject OBJ_EVENT_ID_PLAYER, DIR_NORTH
+ turnobject LOCALID_PLAYER, DIR_NORTH
end
LittlerootTown_ProfessorBirchsLab_EventScript_SetObjectPosForDexUpgrade::
- turnobject OBJ_EVENT_ID_PLAYER, DIR_NORTH
- addobject LOCALID_BIRCH
- addobject LOCALID_RIVAL
- turnobject LOCALID_RIVAL, DIR_NORTH
- setobjectxy LOCALID_RIVAL, 5, 5
- turnobject LOCALID_BIRCH, DIR_SOUTH
- setobjectxy LOCALID_BIRCH, 6, 4
- turnobject LOCALID_AIDE, DIR_EAST
- setobjectxy LOCALID_AIDE, 10, 10
+ turnobject LOCALID_PLAYER, DIR_NORTH
+ addobject LOCALID_BIRCHS_LAB_BIRCH
+ addobject LOCALID_BIRCHS_LAB_RIVAL
+ turnobject LOCALID_BIRCHS_LAB_RIVAL, DIR_NORTH
+ setobjectxy LOCALID_BIRCHS_LAB_RIVAL, 5, 5
+ turnobject LOCALID_BIRCHS_LAB_BIRCH, DIR_SOUTH
+ setobjectxy LOCALID_BIRCHS_LAB_BIRCH, 6, 4
+ turnobject LOCALID_BIRCHS_LAB_AIDE, DIR_EAST
+ setobjectxy LOCALID_BIRCHS_LAB_AIDE, 10, 10
end
LittlerootTown_ProfessorBirchsLab_EventScript_AddRivalObject::
- addobject LOCALID_RIVAL
+ addobject LOCALID_BIRCHS_LAB_RIVAL
end
LittlerootTown_ProfessorBirchsLab_EventScript_SetObjectPosForJohtoStarters::
- addobject LOCALID_BALL_CYNDAQUIL
- addobject LOCALID_BALL_TOTODILE
- addobject LOCALID_BALL_CHIKORITA
- addobject LOCALID_RIVAL
- turnobject LOCALID_BALL_CYNDAQUIL, DIR_SOUTH
- setobjectxy LOCALID_BALL_CYNDAQUIL, 8, 4
- turnobject LOCALID_BALL_TOTODILE, DIR_SOUTH
- setobjectxy LOCALID_BALL_TOTODILE, 9, 4
- turnobject LOCALID_BALL_CHIKORITA, DIR_SOUTH
- setobjectxy LOCALID_BALL_CHIKORITA, 10, 4
- turnobject LOCALID_BIRCH, DIR_SOUTH
- setobjectxy LOCALID_BIRCH, 6, 4
- turnobject LOCALID_RIVAL, DIR_EAST
- setobjectxy LOCALID_RIVAL, 5, 5
+ addobject LOCALID_BIRCHS_LAB_CYNDAQUIL_BALL
+ addobject LOCALID_BIRCHS_LAB_TOTODILE_BALL
+ addobject LOCALID_BIRCHS_LAB_CHIKORITA_BALL
+ addobject LOCALID_BIRCHS_LAB_RIVAL
+ turnobject LOCALID_BIRCHS_LAB_CYNDAQUIL_BALL, DIR_SOUTH
+ setobjectxy LOCALID_BIRCHS_LAB_CYNDAQUIL_BALL, 8, 4
+ turnobject LOCALID_BIRCHS_LAB_TOTODILE_BALL, DIR_SOUTH
+ setobjectxy LOCALID_BIRCHS_LAB_TOTODILE_BALL, 9, 4
+ turnobject LOCALID_BIRCHS_LAB_CHIKORITA_BALL, DIR_SOUTH
+ setobjectxy LOCALID_BIRCHS_LAB_CHIKORITA_BALL, 10, 4
+ turnobject LOCALID_BIRCHS_LAB_BIRCH, DIR_SOUTH
+ setobjectxy LOCALID_BIRCHS_LAB_BIRCH, 6, 4
+ turnobject LOCALID_BIRCHS_LAB_RIVAL, DIR_EAST
+ setobjectxy LOCALID_BIRCHS_LAB_RIVAL, 5, 5
end
LittlerootTown_ProfessorBirchsLab_OnFrame:
@@ -150,7 +143,7 @@ LittlerootTown_ProfessorBirchsLab_EventScript_DeclineSeeingRival::
LittlerootTown_ProfessorBirchsLab_EventScript_GivePokedexEvent::
lockall
- applymovement OBJ_EVENT_ID_PLAYER, LittlerootTown_ProfessorBirchsLab_Movement_PlayerEnterLabForPokedex
+ applymovement LOCALID_PLAYER, LittlerootTown_ProfessorBirchsLab_Movement_PlayerEnterLabForPokedex
waitmovement 0
goto LittlerootTown_ProfessorBirchsLab_EventScript_GivePokedex
end
@@ -170,7 +163,7 @@ LittlerootTown_ProfessorBirchsLab_EventScript_UpgradeToNationalDex::
delay 30
msgbox LittlerootTown_ProfessorBirchsLab_Text_OtherRegionsUpgradeToNational, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_BIRCH, LittlerootTown_ProfessorBirchsLab_Movement_BirchRetrievePokedexes
+ applymovement LOCALID_BIRCHS_LAB_BIRCH, LittlerootTown_ProfessorBirchsLab_Movement_BirchRetrievePokedexes
waitmovement 0
delay 20
playse SE_CLICK
@@ -181,8 +174,8 @@ LittlerootTown_ProfessorBirchsLab_EventScript_UpgradeToNationalDex::
delay 10
playse SE_CLICK
delay 20
- applymovement LOCALID_RIVAL, Common_Movement_WalkInPlaceFasterRight
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
+ applymovement LOCALID_BIRCHS_LAB_RIVAL, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
waitmovement 0
checkplayergender
call_if_eq VAR_RESULT, MALE, LittlerootTown_ProfessorBirchsLab_EventScript_MayUpgradeComment
@@ -190,10 +183,10 @@ LittlerootTown_ProfessorBirchsLab_EventScript_UpgradeToNationalDex::
playse SE_PC_ON
waitse
delay 20
- applymovement LOCALID_BIRCH, LittlerootTown_ProfessorBirchsLab_Movement_BirchReturnPokedex
+ applymovement LOCALID_BIRCHS_LAB_BIRCH, LittlerootTown_ProfessorBirchsLab_Movement_BirchReturnPokedex
waitmovement 0
- applymovement LOCALID_RIVAL, Common_Movement_WalkInPlaceFasterUp
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_BIRCHS_LAB_RIVAL, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterUp
waitmovement 0
msgbox LittlerootTown_ProfessorBirchsLab_Text_OkayAllDone, MSGBOX_DEFAULT
playfanfare MUS_OBTAIN_ITEM
@@ -256,7 +249,7 @@ LittlerootTown_ProfessorBirchsLab_Movement_BirchReturnPokedex:
LittlerootTown_ProfessorBirchsLab_EventScript_ChooseJohtoStarter::
lockall
- applymovement OBJ_EVENT_ID_PLAYER, LittlerootTown_ProfessorBirchsLab_Movement_PlayerEnterLabForJohtoStarter
+ applymovement LOCALID_PLAYER, LittlerootTown_ProfessorBirchsLab_Movement_PlayerEnterLabForJohtoStarter
waitmovement 0
msgbox LittlerootTown_ProfessorBirchsLab_Text_CompletedDexChoosePokemon, MSGBOX_DEFAULT
setvar VAR_DEX_UPGRADE_JOHTO_STARTER_STATE, 5
@@ -296,7 +289,7 @@ LittlerootTown_ProfessorBirchsLab_EventScript_AideReceivedStarter::
LittlerootTown_ProfessorBirchsLab_EventScript_Cyndaquil::
release
goto_if_ge VAR_DEX_UPGRADE_JOHTO_STARTER_STATE, 6, LittlerootTown_ProfessorBirchsLab_EventScript_AlreadyChoseJohtoStarter
- applymovement LOCALID_BIRCH, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_BIRCHS_LAB_BIRCH, Common_Movement_WalkInPlaceFasterRight
waitmovement 0
showmonpic SPECIES_CYNDAQUIL, 10, 3
msgbox LittlerootTown_ProfessorBirchsLab_Text_YoullTakeCyndaquil, MSGBOX_YESNO
@@ -307,7 +300,7 @@ LittlerootTown_ProfessorBirchsLab_EventScript_Cyndaquil::
LittlerootTown_ProfessorBirchsLab_EventScript_Totodile::
release
goto_if_ge VAR_DEX_UPGRADE_JOHTO_STARTER_STATE, 6, LittlerootTown_ProfessorBirchsLab_EventScript_AlreadyChoseJohtoStarter
- applymovement LOCALID_BIRCH, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_BIRCHS_LAB_BIRCH, Common_Movement_WalkInPlaceFasterRight
waitmovement 0
showmonpic SPECIES_TOTODILE, 10, 3
msgbox LittlerootTown_ProfessorBirchsLab_Text_YoullTakeTotodile, MSGBOX_YESNO
@@ -318,7 +311,7 @@ LittlerootTown_ProfessorBirchsLab_EventScript_Totodile::
LittlerootTown_ProfessorBirchsLab_EventScript_Chikorita::
release
goto_if_ge VAR_DEX_UPGRADE_JOHTO_STARTER_STATE, 6, LittlerootTown_ProfessorBirchsLab_EventScript_AlreadyChoseJohtoStarter
- applymovement LOCALID_BIRCH, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_BIRCHS_LAB_BIRCH, Common_Movement_WalkInPlaceFasterRight
waitmovement 0
showmonpic SPECIES_CHIKORITA, 10, 3
msgbox LittlerootTown_ProfessorBirchsLab_Text_YoullTakeChikorita, MSGBOX_YESNO
@@ -349,7 +342,7 @@ LittlerootTown_ProfessorBirchsLab_EventScript_GiveCyndaquil::
LittlerootTown_ProfessorBirchsLab_EventScript_SendCyndaquilToParty::
call LittlerootTown_ProfessorBirchsLab_EventScript_ReceivedJohtoStarter
- removeobject LOCALID_BALL_CYNDAQUIL
+ removeobject LOCALID_BIRCHS_LAB_CYNDAQUIL_BALL
msgbox gText_NicknameThisPokemon, MSGBOX_YESNO
goto_if_eq VAR_RESULT, NO, LittlerootTown_ProfessorBirchsLab_EventScript_ReceivedCyndaquil
call Common_EventScript_GetGiftMonPartySlot
@@ -359,7 +352,7 @@ LittlerootTown_ProfessorBirchsLab_EventScript_SendCyndaquilToParty::
LittlerootTown_ProfessorBirchsLab_EventScript_SendCyndaquilToPC::
call LittlerootTown_ProfessorBirchsLab_EventScript_ReceivedJohtoStarter
- removeobject LOCALID_BALL_CYNDAQUIL
+ removeobject LOCALID_BIRCHS_LAB_CYNDAQUIL_BALL
msgbox gText_NicknameThisPokemon, MSGBOX_YESNO
goto_if_eq VAR_RESULT, NO, LittlerootTown_ProfessorBirchsLab_EventScript_CyndaquilTransferredToPC
call Common_EventScript_NameReceivedBoxMon
@@ -390,7 +383,7 @@ LittlerootTown_ProfessorBirchsLab_EventScript_GiveTotodile::
LittlerootTown_ProfessorBirchsLab_EventScript_SendTotodileToParty::
call LittlerootTown_ProfessorBirchsLab_EventScript_ReceivedJohtoStarter
- removeobject LOCALID_BALL_TOTODILE
+ removeobject LOCALID_BIRCHS_LAB_TOTODILE_BALL
msgbox gText_NicknameThisPokemon, MSGBOX_YESNO
goto_if_eq VAR_RESULT, NO, LittlerootTown_ProfessorBirchsLab_EventScript_ReceivedTotodile
call Common_EventScript_GetGiftMonPartySlot
@@ -400,7 +393,7 @@ LittlerootTown_ProfessorBirchsLab_EventScript_SendTotodileToParty::
LittlerootTown_ProfessorBirchsLab_EventScript_SendTotodileToPC::
call LittlerootTown_ProfessorBirchsLab_EventScript_ReceivedJohtoStarter
- removeobject LOCALID_BALL_TOTODILE
+ removeobject LOCALID_BIRCHS_LAB_TOTODILE_BALL
msgbox gText_NicknameThisPokemon, MSGBOX_YESNO
goto_if_eq VAR_RESULT, NO, LittlerootTown_ProfessorBirchsLab_EventScript_TotodileTransferredToPC
call Common_EventScript_NameReceivedBoxMon
@@ -431,7 +424,7 @@ LittlerootTown_ProfessorBirchsLab_EventScript_GiveChikorita::
LittlerootTown_ProfessorBirchsLab_EventScript_SendChikoritaToParty::
call LittlerootTown_ProfessorBirchsLab_EventScript_ReceivedJohtoStarter
- removeobject LOCALID_BALL_CHIKORITA
+ removeobject LOCALID_BIRCHS_LAB_CHIKORITA_BALL
msgbox gText_NicknameThisPokemon, MSGBOX_YESNO
goto_if_eq VAR_RESULT, NO, LittlerootTown_ProfessorBirchsLab_EventScript_ReceivedChikorita
call Common_EventScript_GetGiftMonPartySlot
@@ -441,7 +434,7 @@ LittlerootTown_ProfessorBirchsLab_EventScript_SendChikoritaToParty::
LittlerootTown_ProfessorBirchsLab_EventScript_SendChikoritaToPC::
call LittlerootTown_ProfessorBirchsLab_EventScript_ReceivedJohtoStarter
- removeobject LOCALID_BALL_CHIKORITA
+ removeobject LOCALID_BIRCHS_LAB_CHIKORITA_BALL
msgbox gText_NicknameThisPokemon, MSGBOX_YESNO
goto_if_eq VAR_RESULT, NO, LittlerootTown_ProfessorBirchsLab_EventScript_ChikoritaTransferredToPC
call Common_EventScript_NameReceivedBoxMon
@@ -515,9 +508,9 @@ LittlerootTown_ProfessorBirchsLab_EventScript_GivePokedex::
call LittlerootTown_ProfessorBirchsLab_EventScript_ReceivePokedex
msgbox LittlerootTown_ProfessorBirchsLab_Text_ExplainPokedex, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_RIVAL, LittlerootTown_ProfessorBirchsLab_Movement_RivalApproachPlayer
+ applymovement LOCALID_BIRCHS_LAB_RIVAL, LittlerootTown_ProfessorBirchsLab_Movement_RivalApproachPlayer
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterRight
waitmovement 0
checkplayergender
call_if_eq VAR_RESULT, MALE, LittlerootTown_ProfessorBirchsLab_EventScript_MayGivePokeBalls
diff --git a/data/maps/MagmaHideout_4F/map.json b/data/maps/MagmaHideout_4F/map.json
index 3733018da2..ae777b1058 100644
--- a/data/maps/MagmaHideout_4F/map.json
+++ b/data/maps/MagmaHideout_4F/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_MAGMA_HIDEOUT_4F_GROUDON",
"graphics_id": "OBJ_EVENT_GFX_GROUDON_FRONT",
"x": 16,
"y": 17,
@@ -28,6 +29,7 @@
"flag": "FLAG_HIDE_MAGMA_HIDEOUT_4F_GROUDON"
},
{
+ "local_id": "LOCALID_MAGMA_HIDEOUT_4F_GRUNT_1",
"graphics_id": "OBJ_EVENT_GFX_MAGMA_MEMBER_M",
"x": 31,
"y": 22,
@@ -41,6 +43,7 @@
"flag": "FLAG_HIDE_MAGMA_HIDEOUT_GRUNTS"
},
{
+ "local_id": "LOCALID_MAGMA_HIDEOUT_4F_GRUNT_2",
"graphics_id": "OBJ_EVENT_GFX_MAGMA_MEMBER_M",
"x": 30,
"y": 13,
@@ -54,6 +57,7 @@
"flag": "FLAG_HIDE_MAGMA_HIDEOUT_GRUNTS"
},
{
+ "local_id": "LOCALID_MAGMA_HIDEOUT_4F_GRUNT_3",
"graphics_id": "OBJ_EVENT_GFX_MAGMA_MEMBER_M",
"x": 26,
"y": 13,
@@ -67,6 +71,7 @@
"flag": "FLAG_HIDE_MAGMA_HIDEOUT_GRUNTS"
},
{
+ "local_id": "LOCALID_MAGMA_HIDEOUT_4F_TABITHA",
"graphics_id": "OBJ_EVENT_GFX_MAGMA_MEMBER_M",
"x": 22,
"y": 4,
@@ -80,6 +85,7 @@
"flag": "FLAG_HIDE_MAGMA_HIDEOUT_GRUNTS"
},
{
+ "local_id": "LOCALID_MAGMA_HIDEOUT_4F_MAXIE",
"graphics_id": "OBJ_EVENT_GFX_MAXIE",
"x": 16,
"y": 21,
@@ -93,6 +99,7 @@
"flag": "FLAG_HIDE_MAGMA_HIDEOUT_GRUNTS"
},
{
+ "local_id": "LOCALID_MAGMA_HIDEOUT_4F_GROUDON_SLEEPING",
"graphics_id": "OBJ_EVENT_GFX_GROUDON_ASLEEP",
"x": 16,
"y": 17,
diff --git a/data/maps/MagmaHideout_4F/scripts.inc b/data/maps/MagmaHideout_4F/scripts.inc
index ef29d1180a..34ed84e0a6 100644
--- a/data/maps/MagmaHideout_4F/scripts.inc
+++ b/data/maps/MagmaHideout_4F/scripts.inc
@@ -1,11 +1,3 @@
-.set LOCALID_GROUDON, 1
-.set LOCALID_GRUNT_1, 2
-.set LOCALID_GRUNT_2, 3
-.set LOCALID_GRUNT_3, 4
-.set LOCALID_TABITHA, 5
-.set LOCALID_MAXIE, 6
-.set LOCALID_GROUDON_SLEEPING, 7
-
MagmaHideout_4F_MapScripts::
.byte 0
@@ -23,14 +15,14 @@ MagmaHideout_4F_EventScript_Maxie::
playfanfare MUS_AWAKEN_LEGEND
playse SE_ORB
special DoOrbEffect
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterUp
waitmovement 0
delay 150
- removeobject LOCALID_GROUDON_SLEEPING
- addobject LOCALID_GROUDON
+ removeobject LOCALID_MAGMA_HIDEOUT_4F_GROUDON_SLEEPING
+ addobject LOCALID_MAGMA_HIDEOUT_4F_GROUDON
waitstate
delay 60
- applymovement LOCALID_GROUDON, MagmaHideout_4F_Movement_GroudonApproach
+ applymovement LOCALID_MAGMA_HIDEOUT_4F_GROUDON, MagmaHideout_4F_Movement_GroudonApproach
waitmovement 0
special FadeOutOrbEffect
waitstate
@@ -40,9 +32,9 @@ MagmaHideout_4F_EventScript_Maxie::
setvar VAR_0x8007, 5 @ shake delay
special ShakeCamera
waitstate
- applymovement LOCALID_GROUDON, MagmaHideout_4F_Movement_GroudonExit
+ applymovement LOCALID_MAGMA_HIDEOUT_4F_GROUDON, MagmaHideout_4F_Movement_GroudonExit
waitmovement 0
- removeobject LOCALID_GROUDON
+ removeobject LOCALID_MAGMA_HIDEOUT_4F_GROUDON
delay 4
setvar VAR_0x8004, 2 @ vertical pan
setvar VAR_0x8005, 2 @ horizontal pan
@@ -51,14 +43,14 @@ MagmaHideout_4F_EventScript_Maxie::
special ShakeCamera
waitstate
delay 30
- applymovement LOCALID_MAXIE, MagmaHideout_4F_Movement_MaxieLookAround
+ applymovement LOCALID_MAGMA_HIDEOUT_4F_MAXIE, MagmaHideout_4F_Movement_MaxieLookAround
waitmovement 0
msgbox MagmaHideout_4F_Text_MaxieGroudonWhatsWrong, MSGBOX_DEFAULT
closemessage
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterRight
waitmovement 0
delay 30
- applymovement LOCALID_MAXIE, Common_Movement_FacePlayer
+ applymovement LOCALID_MAGMA_HIDEOUT_4F_MAXIE, Common_Movement_FacePlayer
waitmovement 0
msgbox MagmaHideout_4F_Text_MaxieOhItWasYou, MSGBOX_DEFAULT
closemessage
@@ -71,11 +63,11 @@ MagmaHideout_4F_EventScript_Maxie::
setflag FLAG_GROUDON_AWAKENED_MAGMA_HIDEOUT
setvar VAR_SLATEPORT_HARBOR_STATE, 1
fadescreen FADE_TO_BLACK
- removeobject LOCALID_MAXIE
- removeobject LOCALID_GRUNT_1
- removeobject LOCALID_GRUNT_2
- removeobject LOCALID_GRUNT_3
- removeobject LOCALID_TABITHA
+ removeobject LOCALID_MAGMA_HIDEOUT_4F_MAXIE
+ removeobject LOCALID_MAGMA_HIDEOUT_4F_GRUNT_1
+ removeobject LOCALID_MAGMA_HIDEOUT_4F_GRUNT_2
+ removeobject LOCALID_MAGMA_HIDEOUT_4F_GRUNT_3
+ removeobject LOCALID_MAGMA_HIDEOUT_4F_TABITHA
setflag FLAG_HIDE_MAGMA_HIDEOUT_GRUNTS
fadescreen FADE_FROM_BLACK
releaseall
diff --git a/data/maps/MarineCave_End/map.json b/data/maps/MarineCave_End/map.json
index 3430b2da0d..6e59768d5b 100644
--- a/data/maps/MarineCave_End/map.json
+++ b/data/maps/MarineCave_End/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_MARINE_CAVE_KYOGRE",
"graphics_id": "OBJ_EVENT_GFX_KYOGRE_FRONT",
"x": 9,
"y": 22,
diff --git a/data/maps/MarineCave_End/scripts.inc b/data/maps/MarineCave_End/scripts.inc
index a7ff583695..c3eb109880 100644
--- a/data/maps/MarineCave_End/scripts.inc
+++ b/data/maps/MarineCave_End/scripts.inc
@@ -1,5 +1,3 @@
-.set LOCALID_KYOGRE, 1
-
MarineCave_End_MapScripts::
map_script MAP_SCRIPT_ON_RESUME, MarineCave_End_OnResume
map_script MAP_SCRIPT_ON_TRANSITION, MarineCave_End_OnTransition
@@ -12,7 +10,7 @@ MarineCave_End_OnResume:
MarineCave_End_EventScript_TryRemoveKyogre::
specialvar VAR_RESULT, GetBattleOutcome
goto_if_ne VAR_RESULT, B_OUTCOME_CAUGHT, Common_EventScript_NopReturn
- removeobject LOCALID_KYOGRE
+ removeobject LOCALID_MARINE_CAVE_KYOGRE
return
MarineCave_End_OnTransition:
@@ -26,15 +24,15 @@ MarineCave_End_EventScript_ShowKyogre::
MarineCave_End_EventScript_Kyogre::
lockall
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_FaceUp
+ applymovement LOCALID_PLAYER, Common_Movement_FaceUp
waitmovement 0
- applymovement LOCALID_KYOGRE, MarineCave_End_Movement_KyogreApproach
+ applymovement LOCALID_MARINE_CAVE_KYOGRE, MarineCave_End_Movement_KyogreApproach
waitmovement 0
waitse
playmoncry SPECIES_KYOGRE, CRY_MODE_ENCOUNTER
delay 40
waitmoncry
- setvar VAR_LAST_TALKED, LOCALID_KYOGRE
+ setvar VAR_LAST_TALKED, LOCALID_MARINE_CAVE_KYOGRE
setwildbattle SPECIES_KYOGRE, 70
setflag FLAG_SYS_CTRL_OBJ_DELETE
special BattleSetup_StartLegendaryBattle
diff --git a/data/maps/MauvilleCity/map.json b/data/maps/MauvilleCity/map.json
index 0d193e4022..044c90a264 100644
--- a/data/maps/MauvilleCity/map.json
+++ b/data/maps/MauvilleCity/map.json
@@ -101,6 +101,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_MAUVILLE_WALLY",
"graphics_id": "OBJ_EVENT_GFX_WALLY",
"x": 8,
"y": 6,
@@ -114,6 +115,7 @@
"flag": "FLAG_HIDE_MAUVILLE_CITY_WALLY"
},
{
+ "local_id": "LOCALID_MAUVILLE_WALLYS_UNCLE",
"graphics_id": "OBJ_EVENT_GFX_POKEFAN_M",
"x": 9,
"y": 6,
@@ -166,6 +168,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_MAUVILLE_SCOTT",
"graphics_id": "OBJ_EVENT_GFX_SCOTT",
"x": 12,
"y": 14,
diff --git a/data/maps/MauvilleCity/scripts.inc b/data/maps/MauvilleCity/scripts.inc
index 217621c344..6f6ea0276b 100644
--- a/data/maps/MauvilleCity/scripts.inc
+++ b/data/maps/MauvilleCity/scripts.inc
@@ -1,7 +1,3 @@
-.set LOCALID_WALLY, 6
-.set LOCALID_WALLYS_UNCLE, 7
-.set LOCALID_SCOTT, 11
-
MauvilleCity_MapScripts::
map_script MAP_SCRIPT_ON_TRANSITION, MauvilleCity_OnTransition
.byte 0
@@ -74,7 +70,7 @@ MauvilleCity_EventScript_WallysUncle::
goto_if_set FLAG_DECLINED_WALLY_BATTLE_MAUVILLE, MauvilleCity_EventScript_UncleAskPlayerToBattleWally
msgbox MauvilleCity_Text_UncleHesTooPeppy, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_WALLYS_UNCLE, Common_Movement_FaceOriginalDirection
+ applymovement LOCALID_MAUVILLE_WALLYS_UNCLE, Common_Movement_FaceOriginalDirection
waitmovement 0
release
end
@@ -82,7 +78,7 @@ MauvilleCity_EventScript_WallysUncle::
MauvilleCity_EventScript_UncleAskPlayerToBattleWally::
msgbox MauvilleCity_Text_UncleCanYouBattleWally, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_WALLYS_UNCLE, Common_Movement_FaceOriginalDirection
+ applymovement LOCALID_MAUVILLE_WALLYS_UNCLE, Common_Movement_FaceOriginalDirection
waitmovement 0
release
end
@@ -90,17 +86,17 @@ MauvilleCity_EventScript_UncleAskPlayerToBattleWally::
MauvilleCity_EventScript_Wally::
lockall
goto_if_set FLAG_DECLINED_WALLY_BATTLE_MAUVILLE, MauvilleCity_EventScript_WallyRequestBattleAgain
- applymovement LOCALID_WALLY, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_MAUVILLE_WALLY, Common_Movement_WalkInPlaceFasterRight
waitmovement 0
msgbox MauvilleCity_Text_WallyWantToChallengeGym, MSGBOX_DEFAULT
msgbox MauvilleCity_Text_UncleYourePushingIt, MSGBOX_DEFAULT
msgbox MauvilleCity_Text_WallyWeCanBeatAnyone, MSGBOX_DEFAULT
- applymovement LOCALID_WALLY, Common_Movement_FacePlayer
+ applymovement LOCALID_MAUVILLE_WALLY, Common_Movement_FacePlayer
waitmovement 0
playse SE_PIN
- applymovement LOCALID_WALLY, Common_Movement_ExclamationMark
+ applymovement LOCALID_MAUVILLE_WALLY, Common_Movement_ExclamationMark
waitmovement 0
- applymovement LOCALID_WALLY, Common_Movement_Delay48
+ applymovement LOCALID_MAUVILLE_WALLY, Common_Movement_Delay48
waitmovement 0
msgbox MauvilleCity_Text_WallyWillYouBattleMe, MSGBOX_YESNO
goto MauvilleCity_EventScript_BattleWallyPrompt
@@ -116,47 +112,47 @@ MauvilleCity_EventScript_BattleWallyPrompt::
end
MauvilleCity_EventScript_WallyAndUncleExitNorth::
- applymovement OBJ_EVENT_ID_PLAYER, MauvilleCity_Movement_PlayerWatchWallyExitNorth1
- applymovement LOCALID_WALLY, MauvilleCity_Movement_WallyExitNorth1
- applymovement LOCALID_WALLYS_UNCLE, MauvilleCity_Movement_WallysUncleExitNorth1
+ applymovement LOCALID_PLAYER, MauvilleCity_Movement_PlayerWatchWallyExitNorth1
+ applymovement LOCALID_MAUVILLE_WALLY, MauvilleCity_Movement_WallyExitNorth1
+ applymovement LOCALID_MAUVILLE_WALLYS_UNCLE, MauvilleCity_Movement_WallysUncleExitNorth1
waitmovement 0
- applymovement LOCALID_WALLY, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_MAUVILLE_WALLY, Common_Movement_WalkInPlaceFasterRight
waitmovement 0
delay 30
- applymovement OBJ_EVENT_ID_PLAYER, MauvilleCity_Movement_PlayerFaceUncleNorth
- applymovement LOCALID_WALLYS_UNCLE, MauvilleCity_Movement_WallysUncleApproachPlayerNorth
+ applymovement LOCALID_PLAYER, MauvilleCity_Movement_PlayerFaceUncleNorth
+ applymovement LOCALID_MAUVILLE_WALLYS_UNCLE, MauvilleCity_Movement_WallysUncleApproachPlayerNorth
waitmovement 0
msgbox MauvilleCity_Text_UncleVisitUsSometime, MSGBOX_DEFAULT
closemessage
- applymovement OBJ_EVENT_ID_PLAYER, MauvilleCity_Movement_PlayerWatchWallyExitNorth2
- applymovement LOCALID_WALLYS_UNCLE, MauvilleCity_Movement_WallysUncleExitNorth2
- applymovement LOCALID_WALLY, MauvilleCity_Movement_WallyExitNorth2
+ applymovement LOCALID_PLAYER, MauvilleCity_Movement_PlayerWatchWallyExitNorth2
+ applymovement LOCALID_MAUVILLE_WALLYS_UNCLE, MauvilleCity_Movement_WallysUncleExitNorth2
+ applymovement LOCALID_MAUVILLE_WALLY, MauvilleCity_Movement_WallyExitNorth2
waitmovement 0
goto MauvilleCity_EventScript_DefeatedWally
end
MauvilleCity_EventScript_WallyAndUncleExitEast::
- applymovement OBJ_EVENT_ID_PLAYER, MauvilleCity_Movement_PlayerWatchWallyExitEast1
- applymovement LOCALID_WALLY, MauvilleCity_Movement_WallyExitEast1
- applymovement LOCALID_WALLYS_UNCLE, MauvilleCity_Movement_WallysUncleExitEast1
+ applymovement LOCALID_PLAYER, MauvilleCity_Movement_PlayerWatchWallyExitEast1
+ applymovement LOCALID_MAUVILLE_WALLY, MauvilleCity_Movement_WallyExitEast1
+ applymovement LOCALID_MAUVILLE_WALLYS_UNCLE, MauvilleCity_Movement_WallysUncleExitEast1
waitmovement 0
- applymovement LOCALID_WALLY, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_MAUVILLE_WALLY, Common_Movement_WalkInPlaceFasterRight
waitmovement 0
delay 30
- applymovement LOCALID_WALLYS_UNCLE, MauvilleCity_Movement_WallysUncleApproachPlayerEast
+ applymovement LOCALID_MAUVILLE_WALLYS_UNCLE, MauvilleCity_Movement_WallysUncleApproachPlayerEast
waitmovement 0
msgbox MauvilleCity_Text_UncleVisitUsSometime, MSGBOX_DEFAULT
closemessage
- applymovement OBJ_EVENT_ID_PLAYER, MauvilleCity_Movement_PlayerWatchWallyExitEast2
- applymovement LOCALID_WALLYS_UNCLE, MauvilleCity_Movement_WallysUncleExitEast2
- applymovement LOCALID_WALLY, MauvilleCity_Movement_WallyExitEast2
+ applymovement LOCALID_PLAYER, MauvilleCity_Movement_PlayerWatchWallyExitEast2
+ applymovement LOCALID_MAUVILLE_WALLYS_UNCLE, MauvilleCity_Movement_WallysUncleExitEast2
+ applymovement LOCALID_MAUVILLE_WALLY, MauvilleCity_Movement_WallyExitEast2
waitmovement 0
goto MauvilleCity_EventScript_DefeatedWally
end
MauvilleCity_EventScript_DefeatedWally::
- removeobject LOCALID_WALLY
- removeobject LOCALID_WALLYS_UNCLE
+ removeobject LOCALID_MAUVILLE_WALLY
+ removeobject LOCALID_MAUVILLE_WALLYS_UNCLE
clearflag FLAG_HIDE_VERDANTURF_TOWN_WANDAS_HOUSE_WALLY
clearflag FLAG_HIDE_VERDANTURF_TOWN_WANDAS_HOUSE_WALLYS_UNCLE
setflag FLAG_DEFEATED_WALLY_MAUVILLE
@@ -164,52 +160,52 @@ MauvilleCity_EventScript_DefeatedWally::
setflag FLAG_ENABLE_FIRST_WALLY_POKENAV_CALL
call_if_eq VAR_FACING, DIR_NORTH, MauvilleCity_EventScript_ScottApproachPlayerNorth
call_if_eq VAR_FACING, DIR_EAST, MauvilleCity_EventScript_ScottApproachPlayerEast
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterDown
waitmovement 0
msgbox MauvilleCity_Text_ScottYouDidntHoldBack, MSGBOX_DEFAULT
closemessage
addvar VAR_SCOTT_STATE, 1
call_if_eq VAR_FACING, DIR_NORTH, MauvilleCity_EventScript_ScottExitNorth
call_if_eq VAR_FACING, DIR_EAST, MauvilleCity_EventScript_ScottExitEast
- removeobject LOCALID_SCOTT
+ removeobject LOCALID_MAUVILLE_SCOTT
releaseall
end
MauvilleCity_EventScript_ScottApproachPlayerNorth::
- addobject LOCALID_SCOTT
- applymovement LOCALID_SCOTT, MauvilleCity_Movement_ScottApproachPlayerNorth
+ addobject LOCALID_MAUVILLE_SCOTT
+ applymovement LOCALID_MAUVILLE_SCOTT, MauvilleCity_Movement_ScottApproachPlayerNorth
waitmovement 0
return
MauvilleCity_EventScript_ScottApproachPlayerEast::
- setobjectxyperm LOCALID_SCOTT, 12, 13
- addobject LOCALID_SCOTT
- applymovement LOCALID_SCOTT, MauvilleCity_Movement_ScottApproachPlayerEast
+ setobjectxyperm LOCALID_MAUVILLE_SCOTT, 12, 13
+ addobject LOCALID_MAUVILLE_SCOTT
+ applymovement LOCALID_MAUVILLE_SCOTT, MauvilleCity_Movement_ScottApproachPlayerEast
waitmovement 0
return
MauvilleCity_EventScript_ScottExitNorth::
- applymovement OBJ_EVENT_ID_PLAYER, MauvilleCity_Movement_PlayerWatchScottExitNorth
- applymovement LOCALID_SCOTT, MauvilleCity_Movement_ScottExitNorth
+ applymovement LOCALID_PLAYER, MauvilleCity_Movement_PlayerWatchScottExitNorth
+ applymovement LOCALID_MAUVILLE_SCOTT, MauvilleCity_Movement_ScottExitNorth
waitmovement 0
return
MauvilleCity_EventScript_ScottExitEast::
- applymovement OBJ_EVENT_ID_PLAYER, MauvilleCity_Movement_PlayerWatchScottExitEast
- applymovement LOCALID_SCOTT, MauvilleCity_Movement_ScottExitEast
+ applymovement LOCALID_PLAYER, MauvilleCity_Movement_PlayerWatchScottExitEast
+ applymovement LOCALID_MAUVILLE_SCOTT, MauvilleCity_Movement_ScottExitEast
waitmovement 0
return
MauvilleCity_EventScript_BattleWally::
msgbox MauvilleCity_Text_WallyHereICome, MSGBOX_DEFAULT
trainerbattle_no_intro TRAINER_WALLY_MAUVILLE, MauvilleCity_Text_WallyDefeat
- applymovement LOCALID_WALLY, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_MAUVILLE_WALLY, Common_Movement_WalkInPlaceFasterRight
waitmovement 0
msgbox MauvilleCity_Text_WallyIllGoBackToVerdanturf, MSGBOX_DEFAULT
- applymovement LOCALID_WALLY, Common_Movement_FacePlayer
+ applymovement LOCALID_MAUVILLE_WALLY, Common_Movement_FacePlayer
waitmovement 0
msgbox MauvilleCity_Text_ThankYouNotEnoughToBattle, MSGBOX_DEFAULT
- applymovement LOCALID_WALLY, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_MAUVILLE_WALLY, Common_Movement_WalkInPlaceFasterRight
waitmovement 0
msgbox MauvilleCity_Text_UncleNoNeedToBeDown, MSGBOX_DEFAULT
return
@@ -221,7 +217,7 @@ MauvilleCity_EventScript_DeclineWallyBattle::
end
MauvilleCity_EventScript_WallyRequestBattleAgain::
- applymovement LOCALID_WALLY, Common_Movement_FacePlayer
+ applymovement LOCALID_MAUVILLE_WALLY, Common_Movement_FacePlayer
waitmovement 0
msgbox MauvilleCity_Text_WallyPleaseBattleMe, MSGBOX_YESNO
goto MauvilleCity_EventScript_BattleWallyPrompt
diff --git a/data/maps/MauvilleCity_Mart/map.json b/data/maps/MauvilleCity_Mart/map.json
index 53ab6ce227..d48970d9ea 100644
--- a/data/maps/MauvilleCity_Mart/map.json
+++ b/data/maps/MauvilleCity_Mart/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_MAUVILLE_MART_CLERK",
"graphics_id": "OBJ_EVENT_GFX_MART_EMPLOYEE",
"x": 1,
"y": 3,
diff --git a/data/maps/MauvilleCity_PokemonCenter_1F/map.json b/data/maps/MauvilleCity_PokemonCenter_1F/map.json
index 1b0a401b84..4592d77b72 100644
--- a/data/maps/MauvilleCity_PokemonCenter_1F/map.json
+++ b/data/maps/MauvilleCity_PokemonCenter_1F/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_MAUVILLE_NURSE",
"graphics_id": "OBJ_EVENT_GFX_NURSE",
"x": 7,
"y": 2,
diff --git a/data/maps/MauvilleCity_PokemonCenter_1F/scripts.inc b/data/maps/MauvilleCity_PokemonCenter_1F/scripts.inc
index 463d652b3b..173fe97af0 100644
--- a/data/maps/MauvilleCity_PokemonCenter_1F/scripts.inc
+++ b/data/maps/MauvilleCity_PokemonCenter_1F/scripts.inc
@@ -1,5 +1,3 @@
-.set LOCALID_NURSE, 1
-
MauvilleCity_PokemonCenter_1F_MapScripts::
map_script MAP_SCRIPT_ON_TRANSITION, MauvilleCity_PokemonCenter_1F_OnTransition
map_script MAP_SCRIPT_ON_RESUME, CableClub_OnResume
@@ -16,7 +14,7 @@ MauvilleCity_PokemonCenter_1F_EventScript_SetMauvilleOldManGfx::
end
MauvilleCity_PokemonCenter_1F_EventScript_Nurse::
- setvar VAR_0x800B, LOCALID_NURSE
+ setvar VAR_0x800B, LOCALID_MAUVILLE_NURSE
call Common_EventScript_PkmnCenterNurse
waitmessage
waitbuttonpress
diff --git a/data/maps/MeteorFalls_1F_1R/map.json b/data/maps/MeteorFalls_1F_1R/map.json
index bd0820e1e6..612dc835a8 100644
--- a/data/maps/MeteorFalls_1F_1R/map.json
+++ b/data/maps/MeteorFalls_1F_1R/map.json
@@ -67,6 +67,7 @@
"flag": "FLAG_ITEM_METEOR_FALLS_1F_1R_PP_UP"
},
{
+ "local_id": "LOCALID_METEOR_FALLS_MAGMA_GRUNT_1",
"graphics_id": "OBJ_EVENT_GFX_MAGMA_MEMBER_M",
"x": 12,
"y": 20,
@@ -80,6 +81,7 @@
"flag": "FLAG_HIDE_METEOR_FALLS_TEAM_MAGMA"
},
{
+ "local_id": "LOCALID_METEOR_FALLS_MAGMA_GRUNT_2",
"graphics_id": "OBJ_EVENT_GFX_MAGMA_MEMBER_M",
"x": 14,
"y": 21,
@@ -93,6 +95,7 @@
"flag": "FLAG_HIDE_METEOR_FALLS_TEAM_MAGMA"
},
{
+ "local_id": "LOCALID_METEOR_FALLS_ARCHIE",
"graphics_id": "OBJ_EVENT_GFX_ARCHIE",
"x": 6,
"y": 20,
@@ -106,6 +109,7 @@
"flag": "FLAG_HIDE_METEOR_FALLS_TEAM_AQUA"
},
{
+ "local_id": "LOCALID_METEOR_FALLS_AQUA_GRUNT_1",
"graphics_id": "OBJ_EVENT_GFX_AQUA_MEMBER_M",
"x": 6,
"y": 20,
@@ -119,6 +123,7 @@
"flag": "FLAG_HIDE_METEOR_FALLS_TEAM_AQUA"
},
{
+ "local_id": "LOCALID_METEOR_FALLS_AQUA_GRUNT_2",
"graphics_id": "OBJ_EVENT_GFX_AQUA_MEMBER_M",
"x": 6,
"y": 21,
diff --git a/data/maps/MeteorFalls_1F_1R/scripts.inc b/data/maps/MeteorFalls_1F_1R/scripts.inc
index b81f5de267..e41c6a6311 100644
--- a/data/maps/MeteorFalls_1F_1R/scripts.inc
+++ b/data/maps/MeteorFalls_1F_1R/scripts.inc
@@ -1,9 +1,3 @@
-.set LOCALID_MAGMA_GRUNT_1, 5
-.set LOCALID_MAGMA_GRUNT_2, 6
-.set LOCALID_ARCHIE, 7
-.set LOCALID_AQUA_GRUNT_1, 8
-.set LOCALID_AQUA_GRUNT_2, 9
-
MeteorFalls_1F_1R_MapScripts::
map_script MAP_SCRIPT_ON_LOAD, MeteorFalls_1F_1R_OnLoad
.byte 0
@@ -22,73 +16,73 @@ MeteorFalls_1F_1R_EventScript_OpenStevensCave::
MeteorFalls_1F_1R_EventScript_MagmaStealsMeteoriteScene::
lockall
playbgm MUS_ENCOUNTER_MAGMA, FALSE
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_FaceDown
+ applymovement LOCALID_PLAYER, Common_Movement_FaceDown
waitmovement 0
delay 30
- applymovement LOCALID_MAGMA_GRUNT_1, Common_Movement_WalkInPlaceDown
+ applymovement LOCALID_METEOR_FALLS_MAGMA_GRUNT_1, Common_Movement_WalkInPlaceDown
waitmovement 0
msgbox MeteorFalls_1F_1R_Text_WithThisMeteorite, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_MAGMA_GRUNT_1, Common_Movement_WalkInPlaceFasterUp
- applymovement LOCALID_MAGMA_GRUNT_2, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_METEOR_FALLS_MAGMA_GRUNT_1, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_METEOR_FALLS_MAGMA_GRUNT_2, Common_Movement_WalkInPlaceFasterUp
waitmovement 0
playse SE_PIN
- applymovement LOCALID_MAGMA_GRUNT_1, Common_Movement_ExclamationMark
+ applymovement LOCALID_METEOR_FALLS_MAGMA_GRUNT_1, Common_Movement_ExclamationMark
waitmovement 0
- applymovement LOCALID_MAGMA_GRUNT_1, Common_Movement_Delay48
+ applymovement LOCALID_METEOR_FALLS_MAGMA_GRUNT_1, Common_Movement_Delay48
waitmovement 0
msgbox MeteorFalls_1F_1R_Text_DontExpectMercyFromMagma, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_MAGMA_GRUNT_1, MeteorFalls_1F_1R_Movement_MagmaGruntApproachPlayer
+ applymovement LOCALID_METEOR_FALLS_MAGMA_GRUNT_1, MeteorFalls_1F_1R_Movement_MagmaGruntApproachPlayer
waitmovement 0
msgbox MeteorFalls_1F_1R_Text_HoldItRightThereMagma, MSGBOX_DEFAULT
closemessage
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
- applymovement LOCALID_MAGMA_GRUNT_1, Common_Movement_WalkInPlaceFasterLeft
- applymovement LOCALID_MAGMA_GRUNT_2, Common_Movement_WalkInPlaceFasterLeft
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
+ applymovement LOCALID_METEOR_FALLS_MAGMA_GRUNT_1, Common_Movement_WalkInPlaceFasterLeft
+ applymovement LOCALID_METEOR_FALLS_MAGMA_GRUNT_2, Common_Movement_WalkInPlaceFasterLeft
waitmovement 0
- addobject LOCALID_ARCHIE
- addobject LOCALID_AQUA_GRUNT_1
- addobject LOCALID_AQUA_GRUNT_2
+ addobject LOCALID_METEOR_FALLS_ARCHIE
+ addobject LOCALID_METEOR_FALLS_AQUA_GRUNT_1
+ addobject LOCALID_METEOR_FALLS_AQUA_GRUNT_2
playbgm MUS_ENCOUNTER_AQUA, FALSE
- applymovement LOCALID_ARCHIE, MeteorFalls_1F_1R_Movement_ArchieArrive
- applymovement LOCALID_AQUA_GRUNT_1, MeteorFalls_1F_1R_Movement_AquaGrunt1Arrive
- applymovement LOCALID_AQUA_GRUNT_2, MeteorFalls_1F_1R_Movement_AquaGrunt2Arrive
+ applymovement LOCALID_METEOR_FALLS_ARCHIE, MeteorFalls_1F_1R_Movement_ArchieArrive
+ applymovement LOCALID_METEOR_FALLS_AQUA_GRUNT_1, MeteorFalls_1F_1R_Movement_AquaGrunt1Arrive
+ applymovement LOCALID_METEOR_FALLS_AQUA_GRUNT_2, MeteorFalls_1F_1R_Movement_AquaGrunt2Arrive
waitmovement 0
- applymovement LOCALID_MAGMA_GRUNT_1, Common_Movement_WalkInPlaceFasterLeft
- applymovement LOCALID_MAGMA_GRUNT_2, Common_Movement_WalkInPlaceFasterLeft
+ applymovement LOCALID_METEOR_FALLS_MAGMA_GRUNT_1, Common_Movement_WalkInPlaceFasterLeft
+ applymovement LOCALID_METEOR_FALLS_MAGMA_GRUNT_2, Common_Movement_WalkInPlaceFasterLeft
waitmovement 0
msgbox MeteorFalls_1F_1R_Text_BeSeeingYouTeamAqua, MSGBOX_DEFAULT
closemessage
- applymovement OBJ_EVENT_ID_PLAYER, MeteorFalls_1F_1R_Movement_PushPlayerOutOfWay
- applymovement LOCALID_MAGMA_GRUNT_1, MeteorFalls_1F_1R_Movement_MagmaGrunt1Exit
- applymovement LOCALID_MAGMA_GRUNT_2, MeteorFalls_1F_1R_Movement_MagmaGrunt2Exit
+ applymovement LOCALID_PLAYER, MeteorFalls_1F_1R_Movement_PushPlayerOutOfWay
+ applymovement LOCALID_METEOR_FALLS_MAGMA_GRUNT_1, MeteorFalls_1F_1R_Movement_MagmaGrunt1Exit
+ applymovement LOCALID_METEOR_FALLS_MAGMA_GRUNT_2, MeteorFalls_1F_1R_Movement_MagmaGrunt2Exit
waitmovement 0
- removeobject LOCALID_MAGMA_GRUNT_1
- removeobject LOCALID_MAGMA_GRUNT_2
- applymovement LOCALID_ARCHIE, MeteorFalls_1F_1R_Movement_ArchieApproachPlayer
+ removeobject LOCALID_METEOR_FALLS_MAGMA_GRUNT_1
+ removeobject LOCALID_METEOR_FALLS_MAGMA_GRUNT_2
+ applymovement LOCALID_METEOR_FALLS_ARCHIE, MeteorFalls_1F_1R_Movement_ArchieApproachPlayer
waitmovement 0
msgbox MeteorFalls_1F_1R_Text_ArchieSeenYouBefore, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_AQUA_GRUNT_1, MeteorFalls_1F_1R_Movement_AquaGrunt1ApproachArchie
- applymovement LOCALID_AQUA_GRUNT_2, MeteorFalls_1F_1R_Movement_AquaGrunt2ApproachArchie
+ applymovement LOCALID_METEOR_FALLS_AQUA_GRUNT_1, MeteorFalls_1F_1R_Movement_AquaGrunt1ApproachArchie
+ applymovement LOCALID_METEOR_FALLS_AQUA_GRUNT_2, MeteorFalls_1F_1R_Movement_AquaGrunt2ApproachArchie
waitmovement 0
msgbox MeteorFalls_1F_1R_Text_BossWeShouldChaseMagma, MSGBOX_DEFAULT
- applymovement LOCALID_ARCHIE, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_METEOR_FALLS_ARCHIE, Common_Movement_WalkInPlaceFasterDown
waitmovement 0
msgbox MeteorFalls_1F_1R_Text_ArchieYesNoTellingWhatMagmaWillDo, MSGBOX_DEFAULT
- applymovement LOCALID_ARCHIE, Common_Movement_WalkInPlaceFasterLeft
+ applymovement LOCALID_METEOR_FALLS_ARCHIE, Common_Movement_WalkInPlaceFasterLeft
waitmovement 0
msgbox MeteorFalls_1F_1R_Text_ArchieFarewell, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_ARCHIE, MeteorFalls_1F_1R_Movement_ArchieExit
- applymovement LOCALID_AQUA_GRUNT_1, MeteorFalls_1F_1R_Movement_AquaGrunt1Exit
- applymovement LOCALID_AQUA_GRUNT_2, MeteorFalls_1F_1R_Movement_AquaGrunt2Exit
+ applymovement LOCALID_METEOR_FALLS_ARCHIE, MeteorFalls_1F_1R_Movement_ArchieExit
+ applymovement LOCALID_METEOR_FALLS_AQUA_GRUNT_1, MeteorFalls_1F_1R_Movement_AquaGrunt1Exit
+ applymovement LOCALID_METEOR_FALLS_AQUA_GRUNT_2, MeteorFalls_1F_1R_Movement_AquaGrunt2Exit
waitmovement 0
fadedefaultbgm
- removeobject LOCALID_ARCHIE
- removeobject LOCALID_AQUA_GRUNT_1
- removeobject LOCALID_AQUA_GRUNT_2
+ removeobject LOCALID_METEOR_FALLS_ARCHIE
+ removeobject LOCALID_METEOR_FALLS_AQUA_GRUNT_1
+ removeobject LOCALID_METEOR_FALLS_AQUA_GRUNT_2
setflag FLAG_HIDE_ROUTE_112_TEAM_MAGMA
setflag FLAG_MET_ARCHIE_METEOR_FALLS
setflag FLAG_HIDE_FALLARBOR_TOWN_BATTLE_TENT_SCOTT
diff --git a/data/maps/MeteorFalls_StevensCave/map.json b/data/maps/MeteorFalls_StevensCave/map.json
index 8e329fc0d3..69520324c6 100644
--- a/data/maps/MeteorFalls_StevensCave/map.json
+++ b/data/maps/MeteorFalls_StevensCave/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_METEOR_FALLS_STEVEN",
"graphics_id": "OBJ_EVENT_GFX_STEVEN",
"x": 19,
"y": 3,
diff --git a/data/maps/MeteorFalls_StevensCave/scripts.inc b/data/maps/MeteorFalls_StevensCave/scripts.inc
index a1c9e74ece..de24d35124 100644
--- a/data/maps/MeteorFalls_StevensCave/scripts.inc
+++ b/data/maps/MeteorFalls_StevensCave/scripts.inc
@@ -1,5 +1,3 @@
-.set LOCALID_STEVEN, 1
-
MeteorFalls_StevensCave_MapScripts::
.byte 0
@@ -8,11 +6,11 @@ MeteorFalls_StevensCave_EventScript_Steven::
goto_if_set FLAG_DEFEATED_METEOR_FALLS_STEVEN, MeteorFalls_StevensCave_EventScript_Defeated
waitse
playse SE_PIN
- applymovement LOCALID_STEVEN, Common_Movement_ExclamationMark
+ applymovement LOCALID_METEOR_FALLS_STEVEN, Common_Movement_ExclamationMark
waitmovement 0
- applymovement LOCALID_STEVEN, Common_Movement_Delay48
+ applymovement LOCALID_METEOR_FALLS_STEVEN, Common_Movement_Delay48
waitmovement 0
- applymovement LOCALID_STEVEN, Common_Movement_FacePlayer
+ applymovement LOCALID_METEOR_FALLS_STEVEN, Common_Movement_FacePlayer
waitmovement 0
msgbox MeteorFalls_StevensCave_Text_ShouldKnowHowGoodIAmExpectWorst, MSGBOX_DEFAULT
trainerbattle_no_intro TRAINER_STEVEN, MeteorFalls_StevensCave_Text_StevenDefeat
@@ -22,7 +20,7 @@ MeteorFalls_StevensCave_EventScript_Steven::
end
MeteorFalls_StevensCave_EventScript_Defeated::
- applymovement LOCALID_STEVEN, Common_Movement_FacePlayer
+ applymovement LOCALID_METEOR_FALLS_STEVEN, Common_Movement_FacePlayer
waitmovement 0
msgbox MeteorFalls_StevensCave_Text_MyPredictionCameTrue, MSGBOX_DEFAULT
release
diff --git a/data/maps/MirageTower_4F/map.json b/data/maps/MirageTower_4F/map.json
index fb375f6ae1..a1873a9c54 100644
--- a/data/maps/MirageTower_4F/map.json
+++ b/data/maps/MirageTower_4F/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_MIRAGE_ROOT_FOSSIL",
"graphics_id": "OBJ_EVENT_GFX_FOSSIL",
"x": 5,
"y": 4,
@@ -28,6 +29,7 @@
"flag": "FLAG_HIDE_MIRAGE_TOWER_ROOT_FOSSIL"
},
{
+ "local_id": "LOCALID_MIRAGE_CLAW_FOSSIL",
"graphics_id": "OBJ_EVENT_GFX_FOSSIL",
"x": 7,
"y": 4,
diff --git a/data/maps/MirageTower_4F/scripts.inc b/data/maps/MirageTower_4F/scripts.inc
index 6fce7fa10b..8b984cf873 100644
--- a/data/maps/MirageTower_4F/scripts.inc
+++ b/data/maps/MirageTower_4F/scripts.inc
@@ -1,6 +1,3 @@
-.set LOCALID_ROOT_FOSSIL, 1
-.set LOCALID_CLAW_FOSSIL, 2
-
MirageTower_4F_MapScripts::
.byte 0
@@ -14,7 +11,7 @@ MirageTower_4F_EventScript_RootFossil::
closemessage
setflag FLAG_HIDE_MIRAGE_TOWER_ROOT_FOSSIL
setflag FLAG_HIDE_MIRAGE_TOWER_CLAW_FOSSIL
- removeobject LOCALID_ROOT_FOSSIL
+ removeobject LOCALID_MIRAGE_ROOT_FOSSIL
delay 30
setflag FLAG_CHOSE_ROOT_FOSSIL
goto MirageTower_4F_EventScript_CollapseMirageTower
@@ -35,7 +32,7 @@ MirageTower_4F_EventScript_ClawFossil::
closemessage
setflag FLAG_HIDE_MIRAGE_TOWER_CLAW_FOSSIL
setflag FLAG_HIDE_MIRAGE_TOWER_ROOT_FOSSIL
- removeobject LOCALID_CLAW_FOSSIL
+ removeobject LOCALID_MIRAGE_CLAW_FOSSIL
delay 30
setflag FLAG_CHOSE_CLAW_FOSSIL
goto MirageTower_4F_EventScript_CollapseMirageTower
diff --git a/data/maps/MossdeepCity/map.json b/data/maps/MossdeepCity/map.json
index a7ec32d7b1..8c92a70f12 100644
--- a/data/maps/MossdeepCity/map.json
+++ b/data/maps/MossdeepCity/map.json
@@ -148,6 +148,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_MOSSDEEP_GRUNT_1",
"graphics_id": "OBJ_EVENT_GFX_MAGMA_MEMBER_M",
"x": 44,
"y": 23,
@@ -161,6 +162,7 @@
"flag": "FLAG_HIDE_MOSSDEEP_CITY_TEAM_MAGMA"
},
{
+ "local_id": "LOCALID_MOSSDEEP_GRUNT_2",
"graphics_id": "OBJ_EVENT_GFX_MAGMA_MEMBER_M",
"x": 44,
"y": 24,
@@ -174,6 +176,7 @@
"flag": "FLAG_HIDE_MOSSDEEP_CITY_TEAM_MAGMA"
},
{
+ "local_id": "LOCALID_MOSSDEEP_GRUNT_3",
"graphics_id": "OBJ_EVENT_GFX_MAGMA_MEMBER_M",
"x": 44,
"y": 25,
@@ -187,6 +190,7 @@
"flag": "FLAG_HIDE_MOSSDEEP_CITY_TEAM_MAGMA"
},
{
+ "local_id": "LOCALID_MOSSDEEP_GRUNT_4",
"graphics_id": "OBJ_EVENT_GFX_MAGMA_MEMBER_M",
"x": 44,
"y": 26,
@@ -200,6 +204,7 @@
"flag": "FLAG_HIDE_MOSSDEEP_CITY_TEAM_MAGMA"
},
{
+ "local_id": "LOCALID_MOSSDEEP_MAXIE",
"graphics_id": "OBJ_EVENT_GFX_MAXIE",
"x": 45,
"y": 25,
@@ -226,6 +231,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_MOSSDEEP_SCOTT",
"graphics_id": "OBJ_EVENT_GFX_SCOTT",
"x": 61,
"y": 29,
diff --git a/data/maps/MossdeepCity/scripts.inc b/data/maps/MossdeepCity/scripts.inc
index a03b1db820..0d19067e3f 100644
--- a/data/maps/MossdeepCity/scripts.inc
+++ b/data/maps/MossdeepCity/scripts.inc
@@ -1,10 +1,3 @@
-.set LOCALID_GRUNT_1, 10
-.set LOCALID_GRUNT_2, 11
-.set LOCALID_GRUNT_3, 12
-.set LOCALID_GRUNT_4, 13
-.set LOCALID_MAXIE, 14
-.set LOCALID_SCOTT, 16
-
MossdeepCity_MapScripts::
map_script MAP_SCRIPT_ON_TRANSITION, MossdeepCity_OnTransition
.byte 0
@@ -82,24 +75,24 @@ MossdeepCity_EventScript_VisitedMossdeep::
MossdeepCity_EventScript_TeamMagmaEnterSpaceCenter::
lockall
- applymovement LOCALID_MAXIE, MossdeepCity_Movement_MaxieGestureToSpaceCenter
+ applymovement LOCALID_MOSSDEEP_MAXIE, MossdeepCity_Movement_MaxieGestureToSpaceCenter
waitmovement 0
- applymovement LOCALID_GRUNT_1, MossdeepCity_Movement_GruntFaceSpaceCenter
- applymovement LOCALID_GRUNT_2, MossdeepCity_Movement_GruntFaceSpaceCenter
- applymovement LOCALID_GRUNT_3, MossdeepCity_Movement_GruntFaceSpaceCenter
- applymovement LOCALID_GRUNT_4, MossdeepCity_Movement_GruntFaceSpaceCenter
+ applymovement LOCALID_MOSSDEEP_GRUNT_1, MossdeepCity_Movement_GruntFaceSpaceCenter
+ applymovement LOCALID_MOSSDEEP_GRUNT_2, MossdeepCity_Movement_GruntFaceSpaceCenter
+ applymovement LOCALID_MOSSDEEP_GRUNT_3, MossdeepCity_Movement_GruntFaceSpaceCenter
+ applymovement LOCALID_MOSSDEEP_GRUNT_4, MossdeepCity_Movement_GruntFaceSpaceCenter
waitmovement 0
- applymovement LOCALID_MAXIE, MossdeepCity_Movement_MaxieEnterSpaceCenter
- applymovement LOCALID_GRUNT_1, MossdeepCity_Movement_Grunt1EnterSpaceCenter
- applymovement LOCALID_GRUNT_2, MossdeepCity_Movement_Grunt2EnterSpaceCenter
- applymovement LOCALID_GRUNT_3, MossdeepCity_Movement_Grunt3EnterSpaceCenter
- applymovement LOCALID_GRUNT_4, MossdeepCity_Movement_Grunt4EnterSpaceCenter
+ applymovement LOCALID_MOSSDEEP_MAXIE, MossdeepCity_Movement_MaxieEnterSpaceCenter
+ applymovement LOCALID_MOSSDEEP_GRUNT_1, MossdeepCity_Movement_Grunt1EnterSpaceCenter
+ applymovement LOCALID_MOSSDEEP_GRUNT_2, MossdeepCity_Movement_Grunt2EnterSpaceCenter
+ applymovement LOCALID_MOSSDEEP_GRUNT_3, MossdeepCity_Movement_Grunt3EnterSpaceCenter
+ applymovement LOCALID_MOSSDEEP_GRUNT_4, MossdeepCity_Movement_Grunt4EnterSpaceCenter
waitmovement 0
- removeobject LOCALID_MAXIE
- removeobject LOCALID_GRUNT_1
- removeobject LOCALID_GRUNT_2
- removeobject LOCALID_GRUNT_3
- removeobject LOCALID_GRUNT_4
+ removeobject LOCALID_MOSSDEEP_MAXIE
+ removeobject LOCALID_MOSSDEEP_GRUNT_1
+ removeobject LOCALID_MOSSDEEP_GRUNT_2
+ removeobject LOCALID_MOSSDEEP_GRUNT_3
+ removeobject LOCALID_MOSSDEEP_GRUNT_4
delay 30
setvar VAR_MOSSDEEP_CITY_STATE, 2
setflag FLAG_HIDE_MOSSDEEP_CITY_TEAM_MAGMA
@@ -263,19 +256,19 @@ MossdeepCity_EventScript_Scott::
call_if_eq VAR_FACING, DIR_NORTH, MossdeepCity_EventScript_ScottExitNorth
call_if_eq VAR_FACING, DIR_EAST, MossdeepCity_EventScript_ScottExitEast
addvar VAR_SCOTT_STATE, 1
- removeobject LOCALID_SCOTT
+ removeobject LOCALID_MOSSDEEP_SCOTT
release
end
MossdeepCity_EventScript_ScottExitNorth::
- applymovement OBJ_EVENT_ID_PLAYER, MossdeepCity_Movement_PlayerWatchScottExit
- applymovement LOCALID_SCOTT, MossdeepCity_Movement_ScottExitNorth
+ applymovement LOCALID_PLAYER, MossdeepCity_Movement_PlayerWatchScottExit
+ applymovement LOCALID_MOSSDEEP_SCOTT, MossdeepCity_Movement_ScottExitNorth
waitmovement 0
return
MossdeepCity_EventScript_ScottExitEast::
- applymovement OBJ_EVENT_ID_PLAYER, MossdeepCity_Movement_PlayerWatchScottExit
- applymovement LOCALID_SCOTT, MossdeepCity_Movement_ScottExitEast
+ applymovement LOCALID_PLAYER, MossdeepCity_Movement_PlayerWatchScottExit
+ applymovement LOCALID_MOSSDEEP_SCOTT, MossdeepCity_Movement_ScottExitEast
waitmovement 0
return
diff --git a/data/maps/MossdeepCity_Gym/scripts.inc b/data/maps/MossdeepCity_Gym/scripts.inc
index a7b6aaa2bd..419bec2a24 100644
--- a/data/maps/MossdeepCity_Gym/scripts.inc
+++ b/data/maps/MossdeepCity_Gym/scripts.inc
@@ -119,7 +119,7 @@ MossdeepCity_Gym_EventScript_Switch1::
lockall
goto_if_set FLAG_MOSSDEEP_GYM_SWITCH_1, MossdeepCity_Gym_EventScript_ClearSwitch1
setflag FLAG_MOSSDEEP_GYM_SWITCH_1
- applymovement OBJ_EVENT_ID_PLAYER, MossdeepCity_Gym_Movement_WaitAfterSwitchUse
+ applymovement LOCALID_PLAYER, MossdeepCity_Gym_Movement_WaitAfterSwitchUse
waitmovement 0
setmetatile 5, 5, METATILE_RSMossdeepGym_RedArrow_Right, FALSE
setmetatile 2, 7, METATILE_RSMossdeepGym_Switch_Down, TRUE
@@ -134,7 +134,7 @@ MossdeepCity_Gym_EventScript_DrawMapAfterSwitchUsed::
MossdeepCity_Gym_EventScript_ClearSwitch1::
clearflag FLAG_MOSSDEEP_GYM_SWITCH_1
- applymovement OBJ_EVENT_ID_PLAYER, MossdeepCity_Gym_Movement_WaitAfterSwitchUse
+ applymovement LOCALID_PLAYER, MossdeepCity_Gym_Movement_WaitAfterSwitchUse
waitmovement 0
setmetatile 5, 5, METATILE_RSMossdeepGym_RedArrow_Left, FALSE
setmetatile 2, 7, METATILE_RSMossdeepGym_Switch_Up, TRUE
@@ -145,7 +145,7 @@ MossdeepCity_Gym_EventScript_Switch2::
lockall
goto_if_set FLAG_MOSSDEEP_GYM_SWITCH_2, MossdeepCity_Gym_EventScript_ClearSwitch2
setflag FLAG_MOSSDEEP_GYM_SWITCH_2
- applymovement OBJ_EVENT_ID_PLAYER, MossdeepCity_Gym_Movement_WaitAfterSwitchUse
+ applymovement LOCALID_PLAYER, MossdeepCity_Gym_Movement_WaitAfterSwitchUse
waitmovement 0
setmetatile 8, 14, METATILE_RSMossdeepGym_RedArrow_Right, FALSE
setmetatile 8, 10, METATILE_RSMossdeepGym_Switch_Down, TRUE
@@ -154,7 +154,7 @@ MossdeepCity_Gym_EventScript_Switch2::
MossdeepCity_Gym_EventScript_ClearSwitch2::
clearflag FLAG_MOSSDEEP_GYM_SWITCH_2
- applymovement OBJ_EVENT_ID_PLAYER, MossdeepCity_Gym_Movement_WaitAfterSwitchUse
+ applymovement LOCALID_PLAYER, MossdeepCity_Gym_Movement_WaitAfterSwitchUse
waitmovement 0
setmetatile 8, 14, METATILE_RSMossdeepGym_RedArrow_Down, FALSE
setmetatile 8, 10, METATILE_RSMossdeepGym_Switch_Up, TRUE
@@ -165,7 +165,7 @@ MossdeepCity_Gym_EventScript_Switch3::
lockall
goto_if_set FLAG_MOSSDEEP_GYM_SWITCH_3, MossdeepCity_Gym_EventScript_ClearSwitch3
setflag FLAG_MOSSDEEP_GYM_SWITCH_3
- applymovement OBJ_EVENT_ID_PLAYER, MossdeepCity_Gym_Movement_WaitAfterSwitchUse
+ applymovement LOCALID_PLAYER, MossdeepCity_Gym_Movement_WaitAfterSwitchUse
waitmovement 0
setmetatile 15, 17, METATILE_RSMossdeepGym_RedArrow_Left, FALSE
setmetatile 17, 15, METATILE_RSMossdeepGym_Switch_Down, TRUE
@@ -174,7 +174,7 @@ MossdeepCity_Gym_EventScript_Switch3::
MossdeepCity_Gym_EventScript_ClearSwitch3::
clearflag FLAG_MOSSDEEP_GYM_SWITCH_3
- applymovement OBJ_EVENT_ID_PLAYER, MossdeepCity_Gym_Movement_WaitAfterSwitchUse
+ applymovement LOCALID_PLAYER, MossdeepCity_Gym_Movement_WaitAfterSwitchUse
waitmovement 0
setmetatile 15, 17, METATILE_RSMossdeepGym_RedArrow_Right, FALSE
setmetatile 17, 15, METATILE_RSMossdeepGym_Switch_Up, TRUE
@@ -185,7 +185,7 @@ MossdeepCity_Gym_EventScript_Switch4::
lockall
goto_if_set FLAG_MOSSDEEP_GYM_SWITCH_4, MossdeepCity_Gym_EventScript_ClearSwitch4
setflag FLAG_MOSSDEEP_GYM_SWITCH_4
- applymovement OBJ_EVENT_ID_PLAYER, MossdeepCity_Gym_Movement_WaitAfterSwitchUse
+ applymovement LOCALID_PLAYER, MossdeepCity_Gym_Movement_WaitAfterSwitchUse
waitmovement 0
setmetatile 1, 23, METATILE_RSMossdeepGym_RedArrow_Up, FALSE
setmetatile 5, 24, METATILE_RSMossdeepGym_Switch_Down, TRUE
@@ -194,7 +194,7 @@ MossdeepCity_Gym_EventScript_Switch4::
MossdeepCity_Gym_EventScript_ClearSwitch4::
clearflag FLAG_MOSSDEEP_GYM_SWITCH_4
- applymovement OBJ_EVENT_ID_PLAYER, MossdeepCity_Gym_Movement_WaitAfterSwitchUse
+ applymovement LOCALID_PLAYER, MossdeepCity_Gym_Movement_WaitAfterSwitchUse
waitmovement 0
setmetatile 1, 23, METATILE_RSMossdeepGym_RedArrow_Right, FALSE
setmetatile 5, 24, METATILE_RSMossdeepGym_Switch_Up, TRUE
diff --git a/data/maps/MossdeepCity_House2/map.json b/data/maps/MossdeepCity_House2/map.json
index a8a03ed958..8bd4a210e3 100644
--- a/data/maps/MossdeepCity_House2/map.json
+++ b/data/maps/MossdeepCity_House2/map.json
@@ -41,6 +41,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_MOSSDEEP_HOUSE_WINGULL",
"graphics_id": "OBJ_EVENT_GFX_WINGULL",
"x": 4,
"y": 5,
diff --git a/data/maps/MossdeepCity_House2/scripts.inc b/data/maps/MossdeepCity_House2/scripts.inc
index 56a8381963..0317753560 100644
--- a/data/maps/MossdeepCity_House2/scripts.inc
+++ b/data/maps/MossdeepCity_House2/scripts.inc
@@ -1,5 +1,3 @@
-.set LOCALID_WINGULL, 3
-
MossdeepCity_House2_MapScripts::
.byte 0
@@ -23,17 +21,17 @@ MossdeepCity_House2_EventScript_Wingull::
clearflag FLAG_HIDE_FORTREE_CITY_HOUSE_4_WINGULL
call_if_eq VAR_FACING, DIR_NORTH, MossdeepCity_House2_EventScript_WingullExitNorth
call_if_eq VAR_FACING, DIR_WEST, MossdeepCity_House2_EventScript_WingullExitWest
- removeobject LOCALID_WINGULL
+ removeobject LOCALID_MOSSDEEP_HOUSE_WINGULL
release
end
MossdeepCity_House2_EventScript_WingullExitNorth::
- applymovement LOCALID_WINGULL, MossdeepCity_House2_Movement_WingullExitNorth
+ applymovement LOCALID_MOSSDEEP_HOUSE_WINGULL, MossdeepCity_House2_Movement_WingullExitNorth
waitmovement 0
return
MossdeepCity_House2_EventScript_WingullExitWest::
- applymovement LOCALID_WINGULL, MossdeepCity_House2_Movement_WingullExitEast
+ applymovement LOCALID_MOSSDEEP_HOUSE_WINGULL, MossdeepCity_House2_Movement_WingullExitEast
waitmovement 0
return
diff --git a/data/maps/MossdeepCity_Mart/map.json b/data/maps/MossdeepCity_Mart/map.json
index 9679df7892..dce4f7576c 100644
--- a/data/maps/MossdeepCity_Mart/map.json
+++ b/data/maps/MossdeepCity_Mart/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_MOSSDEEP_MART_CLERK",
"graphics_id": "OBJ_EVENT_GFX_MART_EMPLOYEE",
"x": 1,
"y": 3,
diff --git a/data/maps/MossdeepCity_PokemonCenter_1F/map.json b/data/maps/MossdeepCity_PokemonCenter_1F/map.json
index 72863244c7..db1471925a 100644
--- a/data/maps/MossdeepCity_PokemonCenter_1F/map.json
+++ b/data/maps/MossdeepCity_PokemonCenter_1F/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_MOSSDEEP_NURSE",
"graphics_id": "OBJ_EVENT_GFX_NURSE",
"x": 7,
"y": 2,
diff --git a/data/maps/MossdeepCity_PokemonCenter_1F/scripts.inc b/data/maps/MossdeepCity_PokemonCenter_1F/scripts.inc
index bfd3561d26..da597f43b2 100644
--- a/data/maps/MossdeepCity_PokemonCenter_1F/scripts.inc
+++ b/data/maps/MossdeepCity_PokemonCenter_1F/scripts.inc
@@ -1,5 +1,3 @@
-.set LOCALID_NURSE, 1
-
MossdeepCity_PokemonCenter_1F_MapScripts::
map_script MAP_SCRIPT_ON_TRANSITION, MossdeepCity_PokemonCenter_1F_OnTransition
map_script MAP_SCRIPT_ON_RESUME, CableClub_OnResume
@@ -10,7 +8,7 @@ MossdeepCity_PokemonCenter_1F_OnTransition:
end
MossdeepCity_PokemonCenter_1F_EventScript_Nurse::
- setvar VAR_0x800B, LOCALID_NURSE
+ setvar VAR_0x800B, LOCALID_MOSSDEEP_NURSE
call Common_EventScript_PkmnCenterNurse
waitmessage
waitbuttonpress
diff --git a/data/maps/MossdeepCity_SpaceCenter_1F/map.json b/data/maps/MossdeepCity_SpaceCenter_1F/map.json
index e7f47bcfb8..f6b04f5f2f 100644
--- a/data/maps/MossdeepCity_SpaceCenter_1F/map.json
+++ b/data/maps/MossdeepCity_SpaceCenter_1F/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_SPACE_CENTER_1F_SCIENTIST_1",
"graphics_id": "OBJ_EVENT_GFX_SCIENTIST_1",
"x": 7,
"y": 2,
@@ -28,6 +29,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_SPACE_CENTER_1F_SCIENTIST_2",
"graphics_id": "OBJ_EVENT_GFX_SCIENTIST_1",
"x": 2,
"y": 2,
@@ -41,6 +43,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_SPACE_CENTER_1F_SAILOR",
"graphics_id": "OBJ_EVENT_GFX_SAILOR",
"x": 6,
"y": 6,
@@ -54,6 +57,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_SPACE_CENTER_1F_OLD_MAN",
"graphics_id": "OBJ_EVENT_GFX_OLD_MAN",
"x": 10,
"y": 2,
@@ -67,6 +71,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_SPACE_CENTER_1F_WOMAN",
"graphics_id": "OBJ_EVENT_GFX_WOMAN_4",
"x": 14,
"y": 7,
@@ -119,6 +124,7 @@
"flag": "FLAG_HIDE_MOSSDEEP_CITY_SPACE_CENTER_1F_TEAM_MAGMA"
},
{
+ "local_id": "LOCALID_SPACE_CENTER_1F_STAIR_GRUNT",
"graphics_id": "OBJ_EVENT_GFX_MAGMA_MEMBER_M",
"x": 13,
"y": 2,
diff --git a/data/maps/MossdeepCity_SpaceCenter_1F/scripts.inc b/data/maps/MossdeepCity_SpaceCenter_1F/scripts.inc
index e17af35724..0ed531ba4b 100644
--- a/data/maps/MossdeepCity_SpaceCenter_1F/scripts.inc
+++ b/data/maps/MossdeepCity_SpaceCenter_1F/scripts.inc
@@ -1,10 +1,3 @@
-.set LOCALID_SCIENTIST_1, 1
-.set LOCALID_SCIENTIST_2, 2
-.set LOCALID_SAILOR, 3
-.set LOCALID_OLD_MAN, 4
-.set LOCALID_WOMAN, 5
-.set LOCALID_STAIR_GRUNT, 9
-
MossdeepCity_SpaceCenter_1F_MapScripts::
map_script MAP_SCRIPT_ON_LOAD, MossdeepCity_SpaceCenter_1F_OnLoad
map_script MAP_SCRIPT_ON_TRANSITION, MossdeepCity_SpaceCenter_1F_OnTransition
@@ -15,31 +8,31 @@ MossdeepCity_SpaceCenter_1F_OnTransition:
end
MossdeepCity_SpaceCenter_1F_EventScript_MoveObjectsForTeamMagma::
- setobjectxyperm LOCALID_SAILOR, 1, 9
- setobjectmovementtype LOCALID_SAILOR, MOVEMENT_TYPE_FACE_RIGHT
- setobjectxyperm LOCALID_WOMAN, 0, 8
- setobjectmovementtype LOCALID_WOMAN, MOVEMENT_TYPE_FACE_RIGHT
- setobjectxyperm LOCALID_OLD_MAN, 1, 6
- setobjectmovementtype LOCALID_OLD_MAN, MOVEMENT_TYPE_FACE_RIGHT
- setobjectxyperm LOCALID_SCIENTIST_1, 3, 4
- setobjectmovementtype LOCALID_SCIENTIST_1, MOVEMENT_TYPE_FACE_RIGHT
- setobjectmovementtype LOCALID_SCIENTIST_2, MOVEMENT_TYPE_FACE_RIGHT
+ setobjectxyperm LOCALID_SPACE_CENTER_1F_SAILOR, 1, 9
+ setobjectmovementtype LOCALID_SPACE_CENTER_1F_SAILOR, MOVEMENT_TYPE_FACE_RIGHT
+ setobjectxyperm LOCALID_SPACE_CENTER_1F_WOMAN, 0, 8
+ setobjectmovementtype LOCALID_SPACE_CENTER_1F_WOMAN, MOVEMENT_TYPE_FACE_RIGHT
+ setobjectxyperm LOCALID_SPACE_CENTER_1F_OLD_MAN, 1, 6
+ setobjectmovementtype LOCALID_SPACE_CENTER_1F_OLD_MAN, MOVEMENT_TYPE_FACE_RIGHT
+ setobjectxyperm LOCALID_SPACE_CENTER_1F_SCIENTIST_1, 3, 4
+ setobjectmovementtype LOCALID_SPACE_CENTER_1F_SCIENTIST_1, MOVEMENT_TYPE_FACE_RIGHT
+ setobjectmovementtype LOCALID_SPACE_CENTER_1F_SCIENTIST_2, MOVEMENT_TYPE_FACE_RIGHT
goto_if_eq VAR_MOSSDEEP_SPACE_CENTER_STAIR_GUARD_STATE, 1, MossdeepCity_SpaceCenter_1F_EventScript_MoveStairGuardLeft
goto_if_eq VAR_MOSSDEEP_SPACE_CENTER_STAIR_GUARD_STATE, 2, MossdeepCity_SpaceCenter_1F_EventScript_MoveStairGuardDown
goto_if_eq VAR_MOSSDEEP_SPACE_CENTER_STAIR_GUARD_STATE, 3, MossdeepCity_SpaceCenter_1F_EventScript_MoveStairGuardRight
end
MossdeepCity_SpaceCenter_1F_EventScript_MoveStairGuardLeft::
- setobjectxyperm LOCALID_STAIR_GRUNT, 12, 2
+ setobjectxyperm LOCALID_SPACE_CENTER_1F_STAIR_GRUNT, 12, 2
end
MossdeepCity_SpaceCenter_1F_EventScript_MoveStairGuardDown::
- setobjectxyperm LOCALID_STAIR_GRUNT, 13, 3
+ setobjectxyperm LOCALID_SPACE_CENTER_1F_STAIR_GRUNT, 13, 3
end
@ Functionally unused. See comment on MossdeepCity_SpaceCenter_1F_EventScript_MoveGruntFromStairsEast
MossdeepCity_SpaceCenter_1F_EventScript_MoveStairGuardRight::
- setobjectxyperm LOCALID_STAIR_GRUNT, 14, 2
+ setobjectxyperm LOCALID_SPACE_CENTER_1F_STAIR_GRUNT, 14, 2
end
MossdeepCity_SpaceCenter_1F_OnLoad:
@@ -226,7 +219,7 @@ MossdeepCity_SpaceCenter_1F_EventScript_Grunt2::
msgbox MossdeepCity_SpaceCenter_1F_Text_Grunt2Intro, MSGBOX_DEFAULT
trainerbattle_no_intro TRAINER_GRUNT_SPACE_CENTER_2, MossdeepCity_SpaceCenter_1F_Text_Grunt2Defeat
setflag FLAG_DEFEATED_GRUNT_SPACE_CENTER_1F
- copyobjectxytoperm LOCALID_STAIR_GRUNT
+ copyobjectxytoperm LOCALID_SPACE_CENTER_1F_STAIR_GRUNT
switch VAR_FACING
case DIR_WEST, MossdeepCity_SpaceCenter_1F_EventScript_MoveGruntFromStairsWest
#ifdef BUGFIX
@@ -234,7 +227,7 @@ MossdeepCity_SpaceCenter_1F_EventScript_Grunt2::
#else
case DIR_WEST, MossdeepCity_SpaceCenter_1F_EventScript_MoveGruntFromStairsEast
#endif
- applymovement LOCALID_STAIR_GRUNT, MossdeepCity_SpaceCenter_1F_Movement_MoveGruntFromStairs
+ applymovement LOCALID_SPACE_CENTER_1F_STAIR_GRUNT, MossdeepCity_SpaceCenter_1F_Movement_MoveGruntFromStairs
waitmovement 0
setvar VAR_MOSSDEEP_SPACE_CENTER_STAIR_GUARD_STATE, 2
release
@@ -246,7 +239,7 @@ MossdeepCity_SpaceCenter_1F_EventScript_Grunt2Defeated::
end
MossdeepCity_SpaceCenter_1F_EventScript_MoveGruntFromStairsWest::
- applymovement LOCALID_STAIR_GRUNT, MossdeepCity_SpaceCenter_1F_Movement_MoveGruntFromStairsWest
+ applymovement LOCALID_SPACE_CENTER_1F_STAIR_GRUNT, MossdeepCity_SpaceCenter_1F_Movement_MoveGruntFromStairsWest
waitmovement 0
setvar VAR_MOSSDEEP_SPACE_CENTER_STAIR_GUARD_STATE, 1
release
@@ -255,7 +248,7 @@ MossdeepCity_SpaceCenter_1F_EventScript_MoveGruntFromStairsWest::
@ Functionally unused by mistake. The movement is handled anyway after the switch (see above)
@ This also means VAR_MOSSDEEP_SPACE_CENTER_STAIR_GUARD_STATE can never be 3
MossdeepCity_SpaceCenter_1F_EventScript_MoveGruntFromStairsEast::
- applymovement LOCALID_STAIR_GRUNT, MossdeepCity_SpaceCenter_1F_Movement_MoveGruntFromStairsEast
+ applymovement LOCALID_SPACE_CENTER_1F_STAIR_GRUNT, MossdeepCity_SpaceCenter_1F_Movement_MoveGruntFromStairsEast
waitmovement 0
setvar VAR_MOSSDEEP_SPACE_CENTER_STAIR_GUARD_STATE, 3
release
diff --git a/data/maps/MossdeepCity_SpaceCenter_2F/map.json b/data/maps/MossdeepCity_SpaceCenter_2F/map.json
index f68b5bfd3e..74d83a905f 100644
--- a/data/maps/MossdeepCity_SpaceCenter_2F/map.json
+++ b/data/maps/MossdeepCity_SpaceCenter_2F/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_SPACE_CENTER_2F_RICH_BOY",
"graphics_id": "OBJ_EVENT_GFX_RICH_BOY",
"x": 6,
"y": 2,
@@ -28,6 +29,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_SPACE_CENTER_2F_GENTLEMAN",
"graphics_id": "OBJ_EVENT_GFX_GENTLEMAN",
"x": 11,
"y": 8,
@@ -41,6 +43,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_SPACE_CENTER_2F_SCIENTIST",
"graphics_id": "OBJ_EVENT_GFX_SCIENTIST_1",
"x": 5,
"y": 6,
@@ -54,6 +57,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_SPACE_CENTER_2F_STEVEN",
"graphics_id": "OBJ_EVENT_GFX_STEVEN",
"x": 1,
"y": 8,
@@ -67,6 +71,7 @@
"flag": "FLAG_HIDE_MOSSDEEP_CITY_SPACE_CENTER_2F_STEVEN"
},
{
+ "local_id": "LOCALID_SPACE_CENTER_GRUNT_6",
"graphics_id": "OBJ_EVENT_GFX_MAGMA_MEMBER_M",
"x": 12,
"y": 2,
@@ -80,6 +85,7 @@
"flag": "FLAG_HIDE_MOSSDEEP_CITY_SPACE_CENTER_2F_TEAM_MAGMA"
},
{
+ "local_id": "LOCALID_SPACE_CENTER_GRUNT_5",
"graphics_id": "OBJ_EVENT_GFX_MAGMA_MEMBER_M",
"x": 13,
"y": 3,
@@ -93,6 +99,7 @@
"flag": "FLAG_HIDE_MOSSDEEP_CITY_SPACE_CENTER_2F_TEAM_MAGMA"
},
{
+ "local_id": "LOCALID_SPACE_CENTER_GRUNT_7",
"graphics_id": "OBJ_EVENT_GFX_MAGMA_MEMBER_M",
"x": 14,
"y": 2,
@@ -106,6 +113,7 @@
"flag": "FLAG_HIDE_MOSSDEEP_CITY_SPACE_CENTER_2F_TEAM_MAGMA"
},
{
+ "local_id": "LOCALID_SPACE_CENTER_TABITHA",
"graphics_id": "OBJ_EVENT_GFX_MAGMA_MEMBER_M",
"x": 0,
"y": 8,
@@ -119,6 +127,7 @@
"flag": "FLAG_HIDE_MOSSDEEP_CITY_SPACE_CENTER_2F_TEAM_MAGMA"
},
{
+ "local_id": "LOCALID_SPACE_CENTER_MAXIE",
"graphics_id": "OBJ_EVENT_GFX_MAXIE",
"x": 1,
"y": 9,
diff --git a/data/maps/MossdeepCity_SpaceCenter_2F/scripts.inc b/data/maps/MossdeepCity_SpaceCenter_2F/scripts.inc
index 6fbf015bb1..23b6057a6e 100644
--- a/data/maps/MossdeepCity_SpaceCenter_2F/scripts.inc
+++ b/data/maps/MossdeepCity_SpaceCenter_2F/scripts.inc
@@ -1,14 +1,3 @@
-.set LOCALID_RICH_BOY, 1
-.set LOCALID_GENTLEMAN, 2
-.set LOCALID_SCIENTIST, 3
-.set LOCALID_STEVEN, 4
-@ Grunt names numbered like their Trainer values (which are for the full Space Center)
-.set LOCALID_GRUNT_6, 5
-.set LOCALID_GRUNT_5, 6
-.set LOCALID_GRUNT_7, 7
-.set LOCALID_TABITHA, 8
-.set LOCALID_MAXIE, 9
-
MossdeepCity_SpaceCenter_2F_MapScripts::
map_script MAP_SCRIPT_ON_TRANSITION, MossdeepCity_SpaceCenter_2F_OnTransition
map_script MAP_SCRIPT_ON_FRAME_TABLE, MossdeepCity_SpaceCenter_2F_OnFrame
@@ -21,18 +10,18 @@ MossdeepCity_SpaceCenter_2F_OnTransition:
MossdeepCity_SpaceCenter_2F_EventScript_MoveCivilians::
clearflag FLAG_INTERACTED_WITH_STEVEN_SPACE_CENTER
- setobjectxyperm LOCALID_SCIENTIST, 5, 3
- setobjectmovementtype LOCALID_SCIENTIST, MOVEMENT_TYPE_FACE_RIGHT
- setobjectxyperm LOCALID_RICH_BOY, 3, 2
- setobjectmovementtype LOCALID_RICH_BOY, MOVEMENT_TYPE_FACE_RIGHT
- setobjectxyperm LOCALID_GENTLEMAN, 1, 3
- setobjectmovementtype LOCALID_GENTLEMAN, MOVEMENT_TYPE_FACE_RIGHT
+ setobjectxyperm LOCALID_SPACE_CENTER_2F_SCIENTIST, 5, 3
+ setobjectmovementtype LOCALID_SPACE_CENTER_2F_SCIENTIST, MOVEMENT_TYPE_FACE_RIGHT
+ setobjectxyperm LOCALID_SPACE_CENTER_2F_RICH_BOY, 3, 2
+ setobjectmovementtype LOCALID_SPACE_CENTER_2F_RICH_BOY, MOVEMENT_TYPE_FACE_RIGHT
+ setobjectxyperm LOCALID_SPACE_CENTER_2F_GENTLEMAN, 1, 3
+ setobjectmovementtype LOCALID_SPACE_CENTER_2F_GENTLEMAN, MOVEMENT_TYPE_FACE_RIGHT
return
MossdeepCity_SpaceCenter_2F_EventScript_MoveDefeatedGrunts::
- setobjectxyperm LOCALID_GRUNT_6, 11, 2
- setobjectxyperm LOCALID_GRUNT_7, 15, 2
- setobjectxyperm LOCALID_GRUNT_5, 13, 4
+ setobjectxyperm LOCALID_SPACE_CENTER_GRUNT_6, 11, 2
+ setobjectxyperm LOCALID_SPACE_CENTER_GRUNT_7, 15, 2
+ setobjectxyperm LOCALID_SPACE_CENTER_GRUNT_5, 13, 4
return
MossdeepCity_SpaceCenter_2F_OnFrame:
@@ -41,15 +30,15 @@ MossdeepCity_SpaceCenter_2F_OnFrame:
MossdeepCity_SpaceCenter_2F_EventScript_ThreeMagmaGrunts::
playse SE_PIN
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_ExclamationMark
+ applymovement LOCALID_PLAYER, Common_Movement_ExclamationMark
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_Delay48
+ applymovement LOCALID_PLAYER, Common_Movement_Delay48
waitmovement 0
msgbox MossdeepCity_SpaceCenter_2F_Text_YoureOutnumberedTakeUsOn, MSGBOX_YESNO
goto_if_eq VAR_RESULT, YES, MossdeepCity_SpaceCenter_2F_EventScript_BattleThreeMagmaGrunts
msgbox MossdeepCity_SpaceCenter_2F_Text_GoodAnswer, MSGBOX_DEFAULT
closemessage
- applymovement OBJ_EVENT_ID_PLAYER, MossdeepCity_SpaceCenter_2F_Movement_PlayerExit
+ applymovement LOCALID_PLAYER, MossdeepCity_SpaceCenter_2F_Movement_PlayerExit
waitmovement 0
warp MAP_MOSSDEEP_CITY_SPACE_CENTER_1F, 13, 1
waitstate
@@ -63,24 +52,24 @@ MossdeepCity_SpaceCenter_2F_Movement_PlayerExit:
MossdeepCity_SpaceCenter_2F_EventScript_BattleThreeMagmaGrunts::
msgbox MossdeepCity_SpaceCenter_2F_Text_Grunt5Intro, MSGBOX_DEFAULT
trainerbattle_no_intro TRAINER_GRUNT_SPACE_CENTER_5, MossdeepCity_SpaceCenter_2F_Text_Grunt5Defeat
- applymovement LOCALID_GRUNT_5, MossdeepCity_SpaceCenter_2F_Movement_Grunt5Defeated
+ applymovement LOCALID_SPACE_CENTER_GRUNT_5, MossdeepCity_SpaceCenter_2F_Movement_Grunt5Defeated
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
waitmovement 0
msgbox MossdeepCity_SpaceCenter_2F_Text_Grunt6Intro, MSGBOX_DEFAULT
trainerbattle_no_intro TRAINER_GRUNT_SPACE_CENTER_6, MossdeepCity_SpaceCenter_2F_Text_Grunt6Defeat
- applymovement LOCALID_GRUNT_6, MossdeepCity_SpaceCenter_2F_Movement_Grunt6Defeated
+ applymovement LOCALID_SPACE_CENTER_GRUNT_6, MossdeepCity_SpaceCenter_2F_Movement_Grunt6Defeated
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterRight
waitmovement 0
msgbox MossdeepCity_SpaceCenter_2F_Text_Grunt7Intro, MSGBOX_DEFAULT
trainerbattle_no_intro TRAINER_GRUNT_SPACE_CENTER_7, MossdeepCity_SpaceCenter_2F_Text_Grunt7Defeat
- applymovement LOCALID_GRUNT_7, MossdeepCity_SpaceCenter_2F_Movement_Grunt7Defeated
+ applymovement LOCALID_SPACE_CENTER_GRUNT_7, MossdeepCity_SpaceCenter_2F_Movement_Grunt7Defeated
waitmovement 0
setvar VAR_MOSSDEEP_SPACE_CENTER_STATE, 2
- copyobjectxytoperm LOCALID_GRUNT_6
- copyobjectxytoperm LOCALID_GRUNT_7
- copyobjectxytoperm LOCALID_GRUNT_5
+ copyobjectxytoperm LOCALID_SPACE_CENTER_GRUNT_6
+ copyobjectxytoperm LOCALID_SPACE_CENTER_GRUNT_7
+ copyobjectxytoperm LOCALID_SPACE_CENTER_GRUNT_5
releaseall
end
@@ -198,13 +187,13 @@ MossdeepCity_SpaceCenter_2F_EventScript_Steven::
playse SE_NOT_EFFECTIVE
switch VAR_FACING
case DIR_SOUTH, MossdeepCity_SpaceCenter_2F_EventScript_StevenFightMovementSouth
- applymovement LOCALID_STEVEN, MossdeepCity_SpaceCenter_2F_Movement_StevenFight
+ applymovement LOCALID_SPACE_CENTER_2F_STEVEN, MossdeepCity_SpaceCenter_2F_Movement_StevenFight
waitmovement 0
releaseall
end
MossdeepCity_SpaceCenter_2F_EventScript_StevenFightMovementSouth::
- applymovement LOCALID_STEVEN, MossdeepCity_SpaceCenter_2F_Movement_StevenFightSouth
+ applymovement LOCALID_SPACE_CENTER_2F_STEVEN, MossdeepCity_SpaceCenter_2F_Movement_StevenFightSouth
waitmovement 0
releaseall
end
@@ -268,12 +257,12 @@ MossdeepCity_SpaceCenter_2F_EventScript_DefeatedMaxieTabitha::
msgbox MossdeepCity_SpaceCenter_2F_Text_MaxieWeFailedIsAquaAlsoMisguided, MSGBOX_DEFAULT
closemessage
delay 20
- applymovement LOCALID_MAXIE, Common_Movement_WalkInPlaceFasterLeft
- applymovement LOCALID_TABITHA, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_SPACE_CENTER_MAXIE, Common_Movement_WalkInPlaceFasterLeft
+ applymovement LOCALID_SPACE_CENTER_TABITHA, Common_Movement_WalkInPlaceFasterDown
waitmovement 0
delay 60
- applymovement LOCALID_MAXIE, Common_Movement_WalkInPlaceFasterUp
- applymovement LOCALID_TABITHA, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_SPACE_CENTER_MAXIE, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_SPACE_CENTER_TABITHA, Common_Movement_WalkInPlaceFasterRight
waitmovement 0
delay 20
msgbox MossdeepCity_SpaceCenter_2F_Text_MaxieWeWillGiveUp, MSGBOX_DEFAULT
@@ -285,17 +274,17 @@ MossdeepCity_SpaceCenter_2F_EventScript_DefeatedMaxieTabitha::
setflag FLAG_HIDE_MOSSDEEP_CITY_SPACE_CENTER_1F_TEAM_MAGMA
setflag FLAG_HIDE_MOSSDEEP_CITY_SPACE_CENTER_2F_TEAM_MAGMA
setflag FLAG_HIDE_MOSSDEEP_CITY_TEAM_MAGMA
- removeobject LOCALID_GRUNT_6
- removeobject LOCALID_GRUNT_7
- removeobject LOCALID_GRUNT_5
- removeobject LOCALID_TABITHA
- removeobject LOCALID_MAXIE
- setobjectxy LOCALID_SCIENTIST, 5, 6
- turnobject LOCALID_SCIENTIST, DIR_SOUTH
- setobjectxy LOCALID_GENTLEMAN, 11, 8
- turnobject LOCALID_GENTLEMAN, DIR_NORTH
- setobjectxy LOCALID_RICH_BOY, 6, 2
- turnobject LOCALID_RICH_BOY, DIR_NORTH
+ removeobject LOCALID_SPACE_CENTER_GRUNT_6
+ removeobject LOCALID_SPACE_CENTER_GRUNT_7
+ removeobject LOCALID_SPACE_CENTER_GRUNT_5
+ removeobject LOCALID_SPACE_CENTER_TABITHA
+ removeobject LOCALID_SPACE_CENTER_MAXIE
+ setobjectxy LOCALID_SPACE_CENTER_2F_SCIENTIST, 5, 6
+ turnobject LOCALID_SPACE_CENTER_2F_SCIENTIST, DIR_SOUTH
+ setobjectxy LOCALID_SPACE_CENTER_2F_GENTLEMAN, 11, 8
+ turnobject LOCALID_SPACE_CENTER_2F_GENTLEMAN, DIR_NORTH
+ setobjectxy LOCALID_SPACE_CENTER_2F_RICH_BOY, 6, 2
+ turnobject LOCALID_SPACE_CENTER_2F_RICH_BOY, DIR_NORTH
call MossdeepCity_SpaceCenter_2F_EventScript_StevenFacePlayer
fadescreen FADE_FROM_BLACK
msgbox MossdeepCity_SpaceCenter_2F_Text_StevenThankYouComeSeeMeAtHome, MSGBOX_DEFAULT
@@ -303,15 +292,15 @@ MossdeepCity_SpaceCenter_2F_EventScript_DefeatedMaxieTabitha::
fadescreen FADE_TO_BLACK
setflag FLAG_DEFEATED_MAGMA_SPACE_CENTER
setflag FLAG_HIDE_MOSSDEEP_CITY_STEVENS_HOUSE_STEVEN
- removeobject LOCALID_STEVEN
+ removeobject LOCALID_SPACE_CENTER_2F_STEVEN
setflag FLAG_HIDE_MOSSDEEP_CITY_SPACE_CENTER_MAGMA_NOTE
clearflag FLAG_HIDE_MOSSDEEP_CITY_STEVENS_HOUSE_STEVEN
setvar VAR_STEVENS_HOUSE_STATE, 1
setflag FLAG_HIDE_MOSSDEEP_CITY_SCOTT
- removeobject LOCALID_SCIENTIST
- setobjectxyperm LOCALID_SCIENTIST, 5, 6
- setobjectmovementtype LOCALID_SCIENTIST, MOVEMENT_TYPE_WANDER_AROUND
- addobject LOCALID_SCIENTIST
+ removeobject LOCALID_SPACE_CENTER_2F_SCIENTIST
+ setobjectxyperm LOCALID_SPACE_CENTER_2F_SCIENTIST, 5, 6
+ setobjectmovementtype LOCALID_SPACE_CENTER_2F_SCIENTIST, MOVEMENT_TYPE_WANDER_AROUND
+ addobject LOCALID_SPACE_CENTER_2F_SCIENTIST
fadescreen FADE_FROM_BLACK
#ifdef BUGFIX
releaseall
@@ -325,11 +314,11 @@ MossdeepCity_SpaceCenter_2F_EventScript_StevenFacePlayer::
return
MossdeepCity_SpaceCenter_2F_EventScript_StevenFacePlayerSouth::
- turnobject LOCALID_STEVEN, DIR_NORTH
+ turnobject LOCALID_SPACE_CENTER_2F_STEVEN, DIR_NORTH
return
MossdeepCity_SpaceCenter_2F_EventScript_StevenFacePlayerWest::
- turnobject LOCALID_STEVEN, DIR_EAST
+ turnobject LOCALID_SPACE_CENTER_2F_STEVEN, DIR_EAST
return
MossdeepCity_SpaceCenter_2F_EventScript_RivalRayquazaCall::
diff --git a/data/maps/MossdeepCity_StevensHouse/map.json b/data/maps/MossdeepCity_StevensHouse/map.json
index 3a864a67c9..330e92b635 100644
--- a/data/maps/MossdeepCity_StevensHouse/map.json
+++ b/data/maps/MossdeepCity_StevensHouse/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_STEVENS_HOUSE_STEVEN",
"graphics_id": "OBJ_EVENT_GFX_STEVEN",
"x": 9,
"y": 6,
@@ -28,6 +29,7 @@
"flag": "FLAG_HIDE_MOSSDEEP_CITY_STEVENS_HOUSE_STEVEN"
},
{
+ "local_id": "LOCALID_STEVENS_HOUSE_BALL",
"graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
"x": 4,
"y": 3,
diff --git a/data/maps/MossdeepCity_StevensHouse/scripts.inc b/data/maps/MossdeepCity_StevensHouse/scripts.inc
index 0f9255e5b6..cf69bfe8a2 100644
--- a/data/maps/MossdeepCity_StevensHouse/scripts.inc
+++ b/data/maps/MossdeepCity_StevensHouse/scripts.inc
@@ -1,6 +1,3 @@
-.set LOCALID_STEVEN, 1
-.set LOCALID_BELDUM_BALL, 2
-
MossdeepCity_StevensHouse_MapScripts::
map_script MAP_SCRIPT_ON_LOAD, MossdeepCity_StevensHouse_OnLoad
map_script MAP_SCRIPT_ON_TRANSITION, MossdeepCity_StevensHouse_OnTransition
@@ -20,8 +17,8 @@ MossdeepCity_StevensHouse_OnTransition:
end
MossdeepCity_StevensHouse_EventScript_SetStevenPos::
- setobjectxyperm LOCALID_STEVEN, 6, 5
- setobjectmovementtype LOCALID_STEVEN, MOVEMENT_TYPE_FACE_UP
+ setobjectxyperm LOCALID_STEVENS_HOUSE_STEVEN, 6, 5
+ setobjectmovementtype LOCALID_STEVENS_HOUSE_STEVEN, MOVEMENT_TYPE_FACE_UP
return
MossdeepCity_StevensHouse_OnFrame:
@@ -30,14 +27,14 @@ MossdeepCity_StevensHouse_OnFrame:
MossdeepCity_StevensHouse_EventScript_StevenGivesDive::
lockall
- applymovement LOCALID_STEVEN, Common_Movement_WalkInPlaceFasterLeft
+ applymovement LOCALID_STEVENS_HOUSE_STEVEN, Common_Movement_WalkInPlaceFasterLeft
waitmovement 0
playse SE_PIN
- applymovement LOCALID_STEVEN, Common_Movement_ExclamationMark
+ applymovement LOCALID_STEVENS_HOUSE_STEVEN, Common_Movement_ExclamationMark
waitmovement 0
- applymovement LOCALID_STEVEN, Common_Movement_Delay48
+ applymovement LOCALID_STEVENS_HOUSE_STEVEN, Common_Movement_Delay48
waitmovement 0
- applymovement LOCALID_STEVEN, MossdeepCity_StevensHouse_Movement_StevenApproachPlayer
+ applymovement LOCALID_STEVENS_HOUSE_STEVEN, MossdeepCity_StevensHouse_Movement_StevenApproachPlayer
waitmovement 0
msgbox MossdeepCity_StevensHouse_Text_YouveEarnedHMDive, MSGBOX_DEFAULT
giveitem ITEM_HM_DIVE
@@ -46,7 +43,7 @@ MossdeepCity_StevensHouse_EventScript_StevenGivesDive::
msgbox MossdeepCity_StevensHouse_Text_ExplainDive, MSGBOX_DEFAULT
closemessage
delay 20
- applymovement LOCALID_STEVEN, MossdeepCity_StevensHouse_Movement_StevenReturn
+ applymovement LOCALID_STEVENS_HOUSE_STEVEN, MossdeepCity_StevensHouse_Movement_StevenReturn
waitmovement 0
setflag FLAG_HIDE_MOSSDEEP_CITY_SCOTT
setflag FLAG_HIDE_SEAFLOOR_CAVERN_ENTRANCE_AQUA_GRUNT
@@ -116,7 +113,7 @@ MossdeepCity_StevensHouse_EventScript_BeldumTransferredToPC::
MossdeepCity_StevensHouse_EventScript_ReceivedBeldumFanfare::
bufferspeciesname STR_VAR_2, SPECIES_BELDUM
- removeobject LOCALID_BELDUM_BALL
+ removeobject LOCALID_STEVENS_HOUSE_BALL
playfanfare MUS_OBTAIN_ITEM
message MossdeepCity_StevensHouse_Text_ObtainedBeldum
waitmessage
diff --git a/data/maps/MtChimney/map.json b/data/maps/MtChimney/map.json
index 55bd065cb6..e4cf247d0e 100644
--- a/data/maps/MtChimney/map.json
+++ b/data/maps/MtChimney/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_MT_CHIMNEY_ARCHIE",
"graphics_id": "OBJ_EVENT_GFX_ARCHIE",
"x": 24,
"y": 19,
@@ -28,6 +29,7 @@
"flag": "FLAG_HIDE_MT_CHIMNEY_TEAM_AQUA"
},
{
+ "local_id": "LOCALID_MT_CHIMNEY_MAXIE",
"graphics_id": "OBJ_EVENT_GFX_MAXIE",
"x": 13,
"y": 6,
@@ -41,6 +43,7 @@
"flag": "FLAG_HIDE_MT_CHIMNEY_TEAM_MAGMA"
},
{
+ "local_id": "LOCALID_MT_CHIMNEY_TABITHA",
"graphics_id": "OBJ_EVENT_GFX_MAGMA_MEMBER_M",
"x": 12,
"y": 11,
@@ -288,6 +291,7 @@
"flag": "FLAG_HIDE_MT_CHIMNEY_TEAM_MAGMA"
},
{
+ "local_id": "LOCALID_MT_CHIMNEY_MAGMA_GRUNT_2",
"graphics_id": "OBJ_EVENT_GFX_MAGMA_MEMBER_M",
"x": 9,
"y": 16,
@@ -379,6 +383,7 @@
"flag": "FLAG_HIDE_MT_CHIMNEY_TRAINERS"
},
{
+ "local_id": "LOCALID_MT_CHIMNEY_MAGMA_GRUNT_1",
"graphics_id": "OBJ_EVENT_GFX_MAGMA_MEMBER_F",
"x": 13,
"y": 16,
diff --git a/data/maps/MtChimney/scripts.inc b/data/maps/MtChimney/scripts.inc
index 48616e8caa..37fd2ccde7 100644
--- a/data/maps/MtChimney/scripts.inc
+++ b/data/maps/MtChimney/scripts.inc
@@ -1,10 +1,3 @@
-.set LOCALID_ARCHIE, 1
-.set LOCALID_MAXIE, 2
-.set LOCALID_TABITHA, 3
-.set LOCALID_MAGMA_GRUNT_2, 22
-.set LOCALID_MAGMA_GRUNT_1, 29
-
-
MtChimney_MapScripts::
map_script MAP_SCRIPT_ON_RESUME, MtChimney_OnResume
map_script MAP_SCRIPT_ON_TRANSITION, MtChimney_OnTransition
@@ -24,7 +17,7 @@ MtChimney_EventScript_Archie::
call_if_unset FLAG_EVIL_LEADER_PLEASE_STOP, MtChimney_EventScript_ArchieGoStopTeamMagma
call_if_set FLAG_EVIL_LEADER_PLEASE_STOP, MtChimney_EventScript_ArchieBusyFighting
closemessage
- applymovement LOCALID_ARCHIE, Common_Movement_FaceOriginalDirection
+ applymovement LOCALID_MT_CHIMNEY_ARCHIE, Common_Movement_FaceOriginalDirection
waitmovement 0
setflag FLAG_EVIL_LEADER_PLEASE_STOP
release
@@ -42,12 +35,12 @@ MtChimney_EventScript_Maxie::
lockall
playbgm MUS_ENCOUNTER_MAGMA, FALSE
msgbox MtChimney_Text_MeteoriteWillActivateVolcano, MSGBOX_DEFAULT
- applymovement LOCALID_MAXIE, Common_Movement_FacePlayer
+ applymovement LOCALID_MT_CHIMNEY_MAXIE, Common_Movement_FacePlayer
waitmovement 0
playse SE_PIN
- applymovement LOCALID_MAXIE, Common_Movement_ExclamationMark
+ applymovement LOCALID_MT_CHIMNEY_MAXIE, Common_Movement_ExclamationMark
waitmovement 0
- applymovement LOCALID_MAXIE, Common_Movement_Delay48
+ applymovement LOCALID_MT_CHIMNEY_MAXIE, Common_Movement_Delay48
waitmovement 0
msgbox MtChimney_Text_MaxieIntro, MSGBOX_DEFAULT
trainerbattle_no_intro TRAINER_MAXIE_MT_CHIMNEY, MtChimney_Text_MaxieDefeat
@@ -55,23 +48,23 @@ MtChimney_EventScript_Maxie::
closemessage
delay 30
fadescreenswapbuffers FADE_TO_BLACK
- removeobject LOCALID_MAXIE
- removeobject LOCALID_MAGMA_GRUNT_1
- removeobject LOCALID_TABITHA
- removeobject LOCALID_MAGMA_GRUNT_2
+ 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
fadescreenswapbuffers FADE_FROM_BLACK
- setobjectxyperm LOCALID_ARCHIE, 10, 12
- addobject LOCALID_ARCHIE
+ setobjectxyperm LOCALID_MT_CHIMNEY_ARCHIE, 10, 12
+ addobject LOCALID_MT_CHIMNEY_ARCHIE
call_if_eq VAR_FACING, DIR_EAST, MtChimney_EventScript_ArchieApproachPlayerEast
call_if_eq VAR_FACING, DIR_NORTH, MtChimney_EventScript_ArchieApproachPlayerNorth
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
waitmovement 0
msgbox MtChimney_Text_ArchieThankYou, MSGBOX_DEFAULT
closemessage
call_if_eq VAR_FACING, DIR_EAST, MtChimney_EventScript_ArchieExitEast
call_if_eq VAR_FACING, DIR_NORTH, MtChimney_EventScript_ArchieExitNorth
- removeobject LOCALID_ARCHIE
+ removeobject LOCALID_MT_CHIMNEY_ARCHIE
setflag FLAG_HIDE_MT_CHIMNEY_TEAM_AQUA
setflag FLAG_DEFEATED_EVIL_TEAM_MT_CHIMNEY
clearflag FLAG_HIDE_FALLARBOR_HOUSE_PROF_COZMO
@@ -81,22 +74,22 @@ MtChimney_EventScript_Maxie::
end
MtChimney_EventScript_ArchieApproachPlayerEast::
- applymovement LOCALID_ARCHIE, MtChimney_Movement_ArchieApproachPlayerEast
+ applymovement LOCALID_MT_CHIMNEY_ARCHIE, MtChimney_Movement_ArchieApproachPlayerEast
waitmovement 0
return
MtChimney_EventScript_ArchieApproachPlayerNorth::
- applymovement LOCALID_ARCHIE, MtChimney_Movement_ArchieApproachPlayerNorth
+ applymovement LOCALID_MT_CHIMNEY_ARCHIE, MtChimney_Movement_ArchieApproachPlayerNorth
waitmovement 0
return
MtChimney_EventScript_ArchieExitEast::
- applymovement LOCALID_ARCHIE, MtChimney_Movement_ArchieExitEast
+ applymovement LOCALID_MT_CHIMNEY_ARCHIE, MtChimney_Movement_ArchieExitEast
waitmovement 0
return
MtChimney_EventScript_ArchieExitNorth::
- applymovement LOCALID_ARCHIE, MtChimney_Movement_ArchieExitNorth
+ applymovement LOCALID_MT_CHIMNEY_ARCHIE, MtChimney_Movement_ArchieExitNorth
waitmovement 0
return
diff --git a/data/maps/MtChimney_CableCarStation/map.json b/data/maps/MtChimney_CableCarStation/map.json
index 5fe36a3735..be716e5b75 100644
--- a/data/maps/MtChimney_CableCarStation/map.json
+++ b/data/maps/MtChimney_CableCarStation/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_MT_CHIMNEY_CABLE_CAR_ATTENDANT",
"graphics_id": "OBJ_EVENT_GFX_BEAUTY",
"x": 6,
"y": 6,
diff --git a/data/maps/MtChimney_CableCarStation/scripts.inc b/data/maps/MtChimney_CableCarStation/scripts.inc
index b3e36a496a..b9d8b1ce2d 100644
--- a/data/maps/MtChimney_CableCarStation/scripts.inc
+++ b/data/maps/MtChimney_CableCarStation/scripts.inc
@@ -1,5 +1,3 @@
-.set LOCALID_ATTENDANT, 1
-
MtChimney_CableCarStation_MapScripts::
map_script MAP_SCRIPT_ON_TRANSITION, MtChimney_CableCarStation_OnTransition
map_script MAP_SCRIPT_ON_FRAME_TABLE, MtChimney_CableCarStation_OnFrame
@@ -10,8 +8,8 @@ MtChimney_CableCarStation_OnTransition:
end
MtChimney_CableCarStation_EventScript_MoveAttendantAside::
- setobjectxyperm LOCALID_ATTENDANT, 5, 4
- setobjectmovementtype LOCALID_ATTENDANT, MOVEMENT_TYPE_FACE_RIGHT
+ setobjectxyperm LOCALID_MT_CHIMNEY_CABLE_CAR_ATTENDANT, 5, 4
+ setobjectmovementtype LOCALID_MT_CHIMNEY_CABLE_CAR_ATTENDANT, MOVEMENT_TYPE_FACE_RIGHT
return
MtChimney_CableCarStation_OnFrame:
@@ -20,12 +18,12 @@ MtChimney_CableCarStation_OnFrame:
MtChimney_CableCarStation_EventScript_ExitCableCar::
lockall
- applymovement OBJ_EVENT_ID_PLAYER, MtChimney_CableCarStation_Movement_ExitCableCar
- applymovement LOCALID_ATTENDANT, MtChimney_CableCarStation_Movement_FollowPlayerOutFromCableCar
+ applymovement LOCALID_PLAYER, MtChimney_CableCarStation_Movement_ExitCableCar
+ applymovement LOCALID_MT_CHIMNEY_CABLE_CAR_ATTENDANT, MtChimney_CableCarStation_Movement_FollowPlayerOutFromCableCar
waitmovement 0
setvar VAR_CABLE_CAR_STATION_STATE, 0
- setobjectxyperm LOCALID_ATTENDANT, 6, 7
- setobjectmovementtype LOCALID_ATTENDANT, MOVEMENT_TYPE_FACE_DOWN
+ setobjectxyperm LOCALID_MT_CHIMNEY_CABLE_CAR_ATTENDANT, 6, 7
+ setobjectmovementtype LOCALID_MT_CHIMNEY_CABLE_CAR_ATTENDANT, MOVEMENT_TYPE_FACE_DOWN
releaseall
end
@@ -40,8 +38,8 @@ MtChimney_CableCarStation_EventScript_Attendant::
MtChimney_CableCarStation_EventScript_RideCableCar::
msgbox MtChimney_CableCarStation_Text_StepThisWay, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_ATTENDANT, MtChimney_CableCarStation_Movement_LeadPlayerToCableCar
- applymovement OBJ_EVENT_ID_PLAYER, MtChimney_CableCarStation_Movement_BoardCableCar
+ applymovement LOCALID_MT_CHIMNEY_CABLE_CAR_ATTENDANT, MtChimney_CableCarStation_Movement_LeadPlayerToCableCar
+ applymovement LOCALID_PLAYER, MtChimney_CableCarStation_Movement_BoardCableCar
waitmovement 0
setvar VAR_0x8004, TRUE @ Going down
setvar VAR_CABLE_CAR_STATION_STATE, 2
diff --git a/data/maps/MtPyre_Summit/map.json b/data/maps/MtPyre_Summit/map.json
index 49fd8b9f72..7a2cccdd36 100644
--- a/data/maps/MtPyre_Summit/map.json
+++ b/data/maps/MtPyre_Summit/map.json
@@ -28,6 +28,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_MT_PYRE_SUMMIT_ARCHIE",
"graphics_id": "OBJ_EVENT_GFX_ARCHIE",
"x": 23,
"y": 6,
@@ -41,6 +42,7 @@
"flag": "FLAG_HIDE_MT_PYRE_SUMMIT_ARCHIE"
},
{
+ "local_id": "LOCALID_MT_PYRE_SUMMIT_OLD_LADY",
"graphics_id": "OBJ_EVENT_GFX_EXPERT_F",
"x": 23,
"y": 5,
@@ -54,6 +56,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_MT_PYRE_SUMMIT_GRUNT_1",
"graphics_id": "OBJ_EVENT_GFX_AQUA_MEMBER_M",
"x": 21,
"y": 15,
@@ -67,6 +70,7 @@
"flag": "FLAG_HIDE_MT_PYRE_SUMMIT_TEAM_AQUA"
},
{
+ "local_id": "LOCALID_MT_PYRE_SUMMIT_GRUNT_2",
"graphics_id": "OBJ_EVENT_GFX_AQUA_MEMBER_M",
"x": 25,
"y": 18,
@@ -80,6 +84,7 @@
"flag": "FLAG_HIDE_MT_PYRE_SUMMIT_TEAM_AQUA"
},
{
+ "local_id": "LOCALID_MT_PYRE_SUMMIT_GRUNT_3",
"graphics_id": "OBJ_EVENT_GFX_AQUA_MEMBER_M",
"x": 21,
"y": 11,
@@ -93,6 +98,7 @@
"flag": "FLAG_HIDE_MT_PYRE_SUMMIT_TEAM_AQUA"
},
{
+ "local_id": "LOCALID_MT_PYRE_SUMMIT_GRUNT_4",
"graphics_id": "OBJ_EVENT_GFX_AQUA_MEMBER_F",
"x": 25,
"y": 11,
@@ -106,6 +112,7 @@
"flag": "FLAG_HIDE_MT_PYRE_SUMMIT_TEAM_AQUA"
},
{
+ "local_id": "LOCALID_MT_PYRE_SUMMIT_MAXIE",
"graphics_id": "OBJ_EVENT_GFX_MAXIE",
"x": 23,
"y": 6,
diff --git a/data/maps/MtPyre_Summit/scripts.inc b/data/maps/MtPyre_Summit/scripts.inc
index 2d85cf17f5..3366848341 100644
--- a/data/maps/MtPyre_Summit/scripts.inc
+++ b/data/maps/MtPyre_Summit/scripts.inc
@@ -1,11 +1,3 @@
-.set LOCALID_ARCHIE, 2
-.set LOCALID_OLD_LADY, 3
-.set LOCALID_GRUNT_1, 4
-.set LOCALID_GRUNT_2, 5
-.set LOCALID_GRUNT_3, 6
-.set LOCALID_GRUNT_4, 7
-.set LOCALID_MAXIE, 8
-
MtPyre_Summit_MapScripts::
map_script MAP_SCRIPT_ON_TRANSITION, MtPyre_Summit_OnTransition
.byte 0
@@ -15,8 +7,8 @@ MtPyre_Summit_OnTransition:
end
MtPyre_Summit_EventScript_SetArchieMaxiePositions::
- setobjectxyperm LOCALID_MAXIE, 23, 6
- setobjectxyperm LOCALID_ARCHIE, 22, 6
+ setobjectxyperm LOCALID_MT_PYRE_SUMMIT_MAXIE, 23, 6
+ setobjectxyperm LOCALID_MT_PYRE_SUMMIT_ARCHIE, 22, 6
end
MtPyre_Summit_EventScript_TeamAquaTrigger0::
@@ -39,9 +31,9 @@ MtPyre_Summit_EventScript_TeamAquaTrigger2::
MtPyre_Summit_EventScript_TeamAquaExits::
playbgm MUS_ENCOUNTER_AQUA, FALSE
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_FaceUp
+ applymovement LOCALID_PLAYER, Common_Movement_FaceUp
waitmovement 0
- applymovement LOCALID_ARCHIE, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_MT_PYRE_SUMMIT_ARCHIE, Common_Movement_WalkInPlaceFasterDown
waitmovement 0
delay 50
call_if_eq VAR_0x8008, 0, MtPyre_Summit_EventScript_ArchieFacePlayer0
@@ -50,11 +42,11 @@ MtPyre_Summit_EventScript_TeamAquaExits::
msgbox MtPyre_Summit_Text_ArchieWeGotTheOrbLetsGo, MSGBOX_DEFAULT
closemessage
fadescreenswapbuffers FADE_TO_BLACK
- removeobject LOCALID_ARCHIE
- removeobject LOCALID_GRUNT_1
- removeobject LOCALID_GRUNT_2
- removeobject LOCALID_GRUNT_3
- removeobject LOCALID_GRUNT_4
+ removeobject LOCALID_MT_PYRE_SUMMIT_ARCHIE
+ removeobject LOCALID_MT_PYRE_SUMMIT_GRUNT_1
+ removeobject LOCALID_MT_PYRE_SUMMIT_GRUNT_2
+ removeobject LOCALID_MT_PYRE_SUMMIT_GRUNT_3
+ removeobject LOCALID_MT_PYRE_SUMMIT_GRUNT_4
setflag FLAG_HIDE_MT_PYRE_SUMMIT_ARCHIE
setflag FLAG_HIDE_MT_PYRE_SUMMIT_TEAM_AQUA
fadedefaultbgm
@@ -72,7 +64,7 @@ MtPyre_Summit_EventScript_TeamAquaExits::
end
MtPyre_Summit_EventScript_ArchieFacePlayer0::
- applymovement LOCALID_ARCHIE, MtPyre_Summit_Movement_ArchieFacePlayer0
+ applymovement LOCALID_MT_PYRE_SUMMIT_ARCHIE, MtPyre_Summit_Movement_ArchieFacePlayer0
waitmovement 0
return
@@ -81,26 +73,26 @@ MtPyre_Summit_EventScript_ArchieFacePlayer1::
return
MtPyre_Summit_EventScript_ArchieFacePlayer2::
- applymovement LOCALID_ARCHIE, MtPyre_Summit_Movement_ArchieFacePlayer2
+ applymovement LOCALID_MT_PYRE_SUMMIT_ARCHIE, MtPyre_Summit_Movement_ArchieFacePlayer2
waitmovement 0
return
MtPyre_Summit_EventScript_OldLadyApproachPlayer0::
- applymovement LOCALID_OLD_LADY, MtPyre_Summit_Movement_OldLadyApproachPlayer0
+ applymovement LOCALID_MT_PYRE_SUMMIT_OLD_LADY, MtPyre_Summit_Movement_OldLadyApproachPlayer0
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterRight
waitmovement 0
return
MtPyre_Summit_EventScript_OldLadyApproachPlayer1::
- applymovement LOCALID_OLD_LADY, MtPyre_Summit_Movement_OldLadyApproachPlayer1
+ applymovement LOCALID_MT_PYRE_SUMMIT_OLD_LADY, MtPyre_Summit_Movement_OldLadyApproachPlayer1
waitmovement 0
return
MtPyre_Summit_EventScript_OldLadyApproachPlayer2::
- applymovement LOCALID_OLD_LADY, MtPyre_Summit_Movement_OldLadyApproachPlayer2
+ applymovement LOCALID_MT_PYRE_SUMMIT_OLD_LADY, MtPyre_Summit_Movement_OldLadyApproachPlayer2
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
waitmovement 0
return
@@ -204,16 +196,16 @@ MtPyre_Summit_EventScript_ArchieMaxieTrigger2::
end
MtPyre_Summit_EventScript_ArchieMaxieReturnOrbs::
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterUp
waitmovement 0
delay 60
call_if_eq VAR_0x8008, 0, MtPyre_Summit_EventScript_ArchieMaxieBeginExit0
call_if_eq VAR_0x8008, 1, MtPyre_Summit_EventScript_ArchieMaxieBeginExit1
call_if_eq VAR_0x8008, 2, MtPyre_Summit_EventScript_ArchieMaxieBeginExit2
playse SE_PIN
- applymovement LOCALID_MAXIE, Common_Movement_ExclamationMark
+ applymovement LOCALID_MT_PYRE_SUMMIT_MAXIE, Common_Movement_ExclamationMark
waitmovement 0
- applymovement LOCALID_MAXIE, Common_Movement_Delay48
+ applymovement LOCALID_MT_PYRE_SUMMIT_MAXIE, Common_Movement_Delay48
waitmovement 0
delay 30
call_if_eq VAR_0x8008, 0, MtPyre_Summit_EventScript_MaxieApproachPlayer0
@@ -225,78 +217,78 @@ MtPyre_Summit_EventScript_ArchieMaxieReturnOrbs::
call_if_eq VAR_0x8008, 1, MtPyre_Summit_EventScript_MaxieApproachArchie1
call_if_eq VAR_0x8008, 2, MtPyre_Summit_EventScript_MaxieApproachArchie2
delay 30
- applymovement LOCALID_ARCHIE, MtPyre_Summit_Movement_ArchieExit
- applymovement LOCALID_MAXIE, MtPyre_Summit_Movement_MaxieExit
+ applymovement LOCALID_MT_PYRE_SUMMIT_ARCHIE, MtPyre_Summit_Movement_ArchieExit
+ applymovement LOCALID_MT_PYRE_SUMMIT_MAXIE, MtPyre_Summit_Movement_MaxieExit
waitmovement 0
- removeobject LOCALID_ARCHIE
- removeobject LOCALID_MAXIE
+ removeobject LOCALID_MT_PYRE_SUMMIT_ARCHIE
+ removeobject LOCALID_MT_PYRE_SUMMIT_MAXIE
setvar VAR_MT_PYRE_STATE, 3
releaseall
end
MtPyre_Summit_EventScript_ArchieMaxieBeginExit0::
- applymovement OBJ_EVENT_ID_PLAYER, MtPyre_Summit_Movement_PlayerWatchArchieMaxieExit0
- applymovement LOCALID_ARCHIE, MtPyre_Summit_Movement_ArchieExit
- applymovement LOCALID_MAXIE, MtPyre_Summit_Movement_MaxieExit
+ applymovement LOCALID_PLAYER, MtPyre_Summit_Movement_PlayerWatchArchieMaxieExit0
+ applymovement LOCALID_MT_PYRE_SUMMIT_ARCHIE, MtPyre_Summit_Movement_ArchieExit
+ applymovement LOCALID_MT_PYRE_SUMMIT_MAXIE, MtPyre_Summit_Movement_MaxieExit
waitmovement 0
return
MtPyre_Summit_EventScript_ArchieMaxieBeginExit1::
- applymovement OBJ_EVENT_ID_PLAYER, MtPyre_Summit_Movement_PlayerWatchArchieMaxieExit1
- applymovement LOCALID_ARCHIE, MtPyre_Summit_Movement_ArchieExit
- applymovement LOCALID_MAXIE, MtPyre_Summit_Movement_MaxieExit
+ applymovement LOCALID_PLAYER, MtPyre_Summit_Movement_PlayerWatchArchieMaxieExit1
+ applymovement LOCALID_MT_PYRE_SUMMIT_ARCHIE, MtPyre_Summit_Movement_ArchieExit
+ applymovement LOCALID_MT_PYRE_SUMMIT_MAXIE, MtPyre_Summit_Movement_MaxieExit
waitmovement 0
return
MtPyre_Summit_EventScript_ArchieMaxieBeginExit2::
- applymovement OBJ_EVENT_ID_PLAYER, MtPyre_Summit_Movement_PlayerWatchArchieMaxieExit2
- applymovement LOCALID_ARCHIE, MtPyre_Summit_Movement_ArchieExit
- applymovement LOCALID_MAXIE, MtPyre_Summit_Movement_MaxieExit
+ applymovement LOCALID_PLAYER, MtPyre_Summit_Movement_PlayerWatchArchieMaxieExit2
+ applymovement LOCALID_MT_PYRE_SUMMIT_ARCHIE, MtPyre_Summit_Movement_ArchieExit
+ applymovement LOCALID_MT_PYRE_SUMMIT_MAXIE, MtPyre_Summit_Movement_MaxieExit
waitmovement 0
return
MtPyre_Summit_EventScript_MaxieApproachPlayer0::
- applymovement OBJ_EVENT_ID_PLAYER, MtPyre_Summit_Movement_PlayerFaceMaxie0
- applymovement LOCALID_ARCHIE, MtPyre_Summit_Movement_ArchieWatchMaxie
- applymovement LOCALID_MAXIE, MtPyre_Summit_Movement_MaxieApproachPlayer0
+ applymovement LOCALID_PLAYER, MtPyre_Summit_Movement_PlayerFaceMaxie0
+ applymovement LOCALID_MT_PYRE_SUMMIT_ARCHIE, MtPyre_Summit_Movement_ArchieWatchMaxie
+ applymovement LOCALID_MT_PYRE_SUMMIT_MAXIE, MtPyre_Summit_Movement_MaxieApproachPlayer0
waitmovement 0
return
MtPyre_Summit_EventScript_MaxieApproachPlayer1::
- applymovement OBJ_EVENT_ID_PLAYER, MtPyre_Summit_Movement_PlayerFaceMaxie
- applymovement LOCALID_ARCHIE, MtPyre_Summit_Movement_ArchieWatchMaxie
- applymovement LOCALID_MAXIE, MtPyre_Summit_Movement_MaxieApproachPlayer1
+ applymovement LOCALID_PLAYER, MtPyre_Summit_Movement_PlayerFaceMaxie
+ applymovement LOCALID_MT_PYRE_SUMMIT_ARCHIE, MtPyre_Summit_Movement_ArchieWatchMaxie
+ applymovement LOCALID_MT_PYRE_SUMMIT_MAXIE, MtPyre_Summit_Movement_MaxieApproachPlayer1
waitmovement 0
return
MtPyre_Summit_EventScript_MaxieApproachPlayer2::
- applymovement OBJ_EVENT_ID_PLAYER, MtPyre_Summit_Movement_PlayerFaceMaxie
- applymovement LOCALID_ARCHIE, MtPyre_Summit_Movement_ArchieWatchMaxie
- applymovement LOCALID_MAXIE, MtPyre_Summit_Movement_MaxieApproachPlayer2
+ applymovement LOCALID_PLAYER, MtPyre_Summit_Movement_PlayerFaceMaxie
+ applymovement LOCALID_MT_PYRE_SUMMIT_ARCHIE, MtPyre_Summit_Movement_ArchieWatchMaxie
+ applymovement LOCALID_MT_PYRE_SUMMIT_MAXIE, MtPyre_Summit_Movement_MaxieApproachPlayer2
waitmovement 0
return
MtPyre_Summit_EventScript_MaxieApproachArchie0::
- applymovement OBJ_EVENT_ID_PLAYER, MtPyre_Summit_Movement_PlayerWatchMaxie
- applymovement LOCALID_MAXIE, MtPyre_Summit_Movement_MaxieApproachArchie0
+ applymovement LOCALID_PLAYER, MtPyre_Summit_Movement_PlayerWatchMaxie
+ applymovement LOCALID_MT_PYRE_SUMMIT_MAXIE, MtPyre_Summit_Movement_MaxieApproachArchie0
waitmovement 0
- applymovement LOCALID_ARCHIE, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_MT_PYRE_SUMMIT_ARCHIE, Common_Movement_WalkInPlaceFasterRight
waitmovement 0
return
MtPyre_Summit_EventScript_MaxieApproachArchie1::
- applymovement OBJ_EVENT_ID_PLAYER, MtPyre_Summit_Movement_PlayerWatchMaxie
- applymovement LOCALID_MAXIE, MtPyre_Summit_Movement_MaxieApproachArchie1
+ applymovement LOCALID_PLAYER, MtPyre_Summit_Movement_PlayerWatchMaxie
+ applymovement LOCALID_MT_PYRE_SUMMIT_MAXIE, MtPyre_Summit_Movement_MaxieApproachArchie1
waitmovement 0
- applymovement LOCALID_ARCHIE, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_MT_PYRE_SUMMIT_ARCHIE, Common_Movement_WalkInPlaceFasterRight
waitmovement 0
return
MtPyre_Summit_EventScript_MaxieApproachArchie2::
- applymovement OBJ_EVENT_ID_PLAYER, MtPyre_Summit_Movement_PlayerWatchMaxie
- applymovement LOCALID_MAXIE, MtPyre_Summit_Movement_MaxieApproachArchie2
+ applymovement LOCALID_PLAYER, MtPyre_Summit_Movement_PlayerWatchMaxie
+ applymovement LOCALID_MT_PYRE_SUMMIT_MAXIE, MtPyre_Summit_Movement_MaxieApproachArchie2
waitmovement 0
- applymovement LOCALID_ARCHIE, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_MT_PYRE_SUMMIT_ARCHIE, Common_Movement_WalkInPlaceFasterRight
waitmovement 0
return
diff --git a/data/maps/NavelRock_Bottom/map.json b/data/maps/NavelRock_Bottom/map.json
index bd7ce3ffec..695465e21d 100644
--- a/data/maps/NavelRock_Bottom/map.json
+++ b/data/maps/NavelRock_Bottom/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_NAVEL_ROCK_LUGIA",
"graphics_id": "OBJ_EVENT_GFX_LUGIA",
"x": 11,
"y": 13,
diff --git a/data/maps/NavelRock_Bottom/scripts.inc b/data/maps/NavelRock_Bottom/scripts.inc
index 90cc229895..24c06bf1a0 100644
--- a/data/maps/NavelRock_Bottom/scripts.inc
+++ b/data/maps/NavelRock_Bottom/scripts.inc
@@ -1,5 +1,3 @@
-.set LOCALID_LUGIA, 1
-
NavelRock_Bottom_MapScripts::
map_script MAP_SCRIPT_ON_TRANSITION, NavelRock_Bottom_OnTransition
map_script MAP_SCRIPT_ON_RESUME, NavelRock_Bottom_OnResume
@@ -26,7 +24,7 @@ NavelRock_Bottom_OnResume:
NavelRock_Bottom_EventScript_TryRemoveLugia::
specialvar VAR_RESULT, GetBattleOutcome
goto_if_ne VAR_RESULT, B_OUTCOME_CAUGHT, Common_EventScript_NopReturn
- removeobject LOCALID_LUGIA
+ removeobject LOCALID_NAVEL_ROCK_LUGIA
return
NavelRock_Bottom_EventScript_Lugia::
diff --git a/data/maps/NavelRock_Harbor/map.json b/data/maps/NavelRock_Harbor/map.json
index ed0bb70dac..c3ca23d82d 100644
--- a/data/maps/NavelRock_Harbor/map.json
+++ b/data/maps/NavelRock_Harbor/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_NAVEL_ROCK_SAILOR",
"graphics_id": "OBJ_EVENT_GFX_SAILOR",
"x": 8,
"y": 5,
@@ -28,6 +29,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_NAVEL_ROCK_SS_TIDAL",
"graphics_id": "OBJ_EVENT_GFX_SS_TIDAL",
"x": 8,
"y": 7,
diff --git a/data/maps/NavelRock_Harbor/scripts.inc b/data/maps/NavelRock_Harbor/scripts.inc
index a981759175..fb12688e32 100644
--- a/data/maps/NavelRock_Harbor/scripts.inc
+++ b/data/maps/NavelRock_Harbor/scripts.inc
@@ -1,6 +1,3 @@
-.set LOCALID_SAILOR, 1
-.set LOCALID_SS_TIDAL, 2
-
NavelRock_Harbor_MapScripts::
.byte 0
@@ -14,8 +11,8 @@ NavelRock_Harbor_EventScript_Sailor::
applymovement VAR_LAST_TALKED, Common_Movement_WalkInPlaceFasterDown
waitmovement 0
delay 30
- hideobjectat LOCALID_SAILOR, MAP_NAVEL_ROCK_HARBOR
- setvar VAR_0x8004, LOCALID_SS_TIDAL
+ hideobjectat LOCALID_NAVEL_ROCK_SAILOR, MAP_NAVEL_ROCK_HARBOR
+ setvar VAR_0x8004, LOCALID_NAVEL_ROCK_SS_TIDAL
call Common_EventScript_FerryDepartIsland
warp MAP_LILYCOVE_CITY_HARBOR, 8, 11
waitstate
diff --git a/data/maps/NavelRock_Top/map.json b/data/maps/NavelRock_Top/map.json
index c818fc3994..e208dd7099 100644
--- a/data/maps/NavelRock_Top/map.json
+++ b/data/maps/NavelRock_Top/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_NAVEL_ROCK_HO_OH",
"graphics_id": "OBJ_EVENT_GFX_HOOH",
"x": 12,
"y": 4,
diff --git a/data/maps/NavelRock_Top/scripts.inc b/data/maps/NavelRock_Top/scripts.inc
index 10969367a1..f8c69e039d 100644
--- a/data/maps/NavelRock_Top/scripts.inc
+++ b/data/maps/NavelRock_Top/scripts.inc
@@ -1,5 +1,3 @@
-.set LOCALID_HO_OH, 1
-
NavelRock_Top_MapScripts::
map_script MAP_SCRIPT_ON_TRANSITION, NavelRock_Top_OnTransition
map_script MAP_SCRIPT_ON_RESUME, NavelRock_Top_OnResume
@@ -29,7 +27,7 @@ NavelRock_Top_OnResume:
NavelRock_Top_EventScript_TryRemoveHoOh::
specialvar VAR_RESULT, GetBattleOutcome
goto_if_ne VAR_RESULT, B_OUTCOME_CAUGHT, Common_EventScript_NopReturn
- removeobject LOCALID_HO_OH
+ removeobject LOCALID_NAVEL_ROCK_HO_OH
return
NavelRock_Top_EventScript_HoOh::
@@ -39,8 +37,8 @@ NavelRock_Top_EventScript_HoOh::
setvar VAR_0x8004, 3 @ num loops
setvar VAR_0x8005, 35 @ delay
special LoopWingFlapSE
- applymovement LOCALID_HO_OH, NavelRock_Top_Movement_HoOhAppear
- applymovement OBJ_EVENT_ID_CAMERA, NavelRock_Top_Movement_CameraPanUp
+ applymovement LOCALID_NAVEL_ROCK_HO_OH, NavelRock_Top_Movement_HoOhAppear
+ applymovement LOCALID_CAMERA, NavelRock_Top_Movement_CameraPanUp
waitmovement 0
delay 50
setweather WEATHER_NONE
@@ -53,8 +51,8 @@ NavelRock_Top_EventScript_HoOh::
setvar VAR_0x8004, 3 @ num loops
setvar VAR_0x8005, 35 @ delay
special LoopWingFlapSE
- applymovement OBJ_EVENT_ID_CAMERA, NavelRock_Top_Movement_CameraPanDown
- applymovement LOCALID_HO_OH, NavelRock_Top_Movement_HoOhApproach
+ applymovement LOCALID_CAMERA, NavelRock_Top_Movement_CameraPanDown
+ applymovement LOCALID_NAVEL_ROCK_HO_OH, NavelRock_Top_Movement_HoOhApproach
waitmovement 0
special RemoveCameraObject
seteventmon SPECIES_HO_OH, 70
@@ -62,7 +60,7 @@ NavelRock_Top_EventScript_HoOh::
special BattleSetup_StartLegendaryBattle
waitstate
clearflag FLAG_SYS_CTRL_OBJ_DELETE
- setvar VAR_LAST_TALKED, LOCALID_HO_OH
+ setvar VAR_LAST_TALKED, LOCALID_NAVEL_ROCK_HO_OH
specialvar VAR_RESULT, GetBattleOutcome
goto_if_eq VAR_RESULT, B_OUTCOME_WON, NavelRock_Top_EventScript_DefeatedHoOh
goto_if_eq VAR_RESULT, B_OUTCOME_RAN, NavelRock_Top_EventScript_RanFromHoOh
diff --git a/data/maps/NewMauville_Entrance/scripts.inc b/data/maps/NewMauville_Entrance/scripts.inc
index 4c498190e0..3b0395386f 100644
--- a/data/maps/NewMauville_Entrance/scripts.inc
+++ b/data/maps/NewMauville_Entrance/scripts.inc
@@ -22,7 +22,7 @@ NewMauville_Entrance_OnTransition:
NewMauville_Entrance_EventScript_Door::
lockall
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterUp
waitmovement 0
msgbox NewMauville_Entrance_Text_DoorIsLocked, MSGBOX_DEFAULT
checkitem ITEM_BASEMENT_KEY
diff --git a/data/maps/OldaleTown/map.json b/data/maps/OldaleTown/map.json
index 302ef5e9d0..d368e0bcbf 100644
--- a/data/maps/OldaleTown/map.json
+++ b/data/maps/OldaleTown/map.json
@@ -44,6 +44,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_OLDALE_MART_EMPLOYEE",
"graphics_id": "OBJ_EVENT_GFX_MART_EMPLOYEE",
"x": 13,
"y": 7,
@@ -57,6 +58,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_FOOTPRINTS_MAN",
"graphics_id": "OBJ_EVENT_GFX_MANIAC",
"x": 8,
"y": 9,
@@ -70,6 +72,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_OLDALE_RIVAL",
"graphics_id": "OBJ_EVENT_GFX_VAR_0",
"x": 11,
"y": 19,
diff --git a/data/maps/OldaleTown/scripts.inc b/data/maps/OldaleTown/scripts.inc
index b2c25a6dfb..a127cd07be 100644
--- a/data/maps/OldaleTown/scripts.inc
+++ b/data/maps/OldaleTown/scripts.inc
@@ -1,7 +1,3 @@
-.set LOCALID_MART_EMPLOYEE, 2
-.set LOCALID_FOOTPRINTS_MAN, 3
-.set LOCALID_RIVAL, 4
-
OldaleTown_MapScripts::
map_script MAP_SCRIPT_ON_TRANSITION, OldaleTown_OnTransition
.byte 0
@@ -25,8 +21,8 @@ OldaleTown_EventScript_BlockWestEntrance::
return
OldaleTown_EventScript_MoveMartEmployee::
- setobjectxyperm LOCALID_MART_EMPLOYEE, 13, 14
- setobjectmovementtype LOCALID_MART_EMPLOYEE, MOVEMENT_TYPE_FACE_DOWN
+ setobjectxyperm LOCALID_OLDALE_MART_EMPLOYEE, 13, 14
+ setobjectmovementtype LOCALID_OLDALE_MART_EMPLOYEE, MOVEMENT_TYPE_FACE_DOWN
return
OldaleTown_EventScript_TownSign::
@@ -53,22 +49,22 @@ OldaleTown_EventScript_MartEmployee::
end
OldaleTown_EventScript_GoToMartSouth::
- applymovement LOCALID_MART_EMPLOYEE, OldaleTown_Movement_EmployeeSouth
- applymovement OBJ_EVENT_ID_PLAYER, OldaleTown_Movement_PlayerSouth
+ applymovement LOCALID_OLDALE_MART_EMPLOYEE, OldaleTown_Movement_EmployeeSouth
+ applymovement LOCALID_PLAYER, OldaleTown_Movement_PlayerSouth
waitmovement 0
goto OldaleTown_EventScript_ExplainPokemonMart
end
OldaleTown_EventScript_GoToMartNorth::
- applymovement LOCALID_MART_EMPLOYEE, OldaleTown_Movement_EmployeeNorth
- applymovement OBJ_EVENT_ID_PLAYER, OldaleTown_Movement_PlayerNorth
+ applymovement LOCALID_OLDALE_MART_EMPLOYEE, OldaleTown_Movement_EmployeeNorth
+ applymovement LOCALID_PLAYER, OldaleTown_Movement_PlayerNorth
waitmovement 0
goto OldaleTown_EventScript_ExplainPokemonMart
end
OldaleTown_EventScript_GoToMartEast::
- applymovement OBJ_EVENT_ID_PLAYER, OldaleTown_Movement_PlayerEast
- applymovement LOCALID_MART_EMPLOYEE, OldaleTown_Movement_EmployeeEast
+ applymovement LOCALID_PLAYER, OldaleTown_Movement_PlayerEast
+ applymovement LOCALID_OLDALE_MART_EMPLOYEE, OldaleTown_Movement_EmployeeEast
waitmovement 0
goto OldaleTown_EventScript_ExplainPokemonMart
end
@@ -204,7 +200,7 @@ OldaleTown_EventScript_FootprintsMan::
OldaleTown_EventScript_BlockedPath::
lockall
- applymovement OBJ_EVENT_ID_PLAYER, OldaleTown_Movement_PlayerStepBack
+ applymovement LOCALID_PLAYER, OldaleTown_Movement_PlayerStepBack
applymovement LOCALID_FOOTPRINTS_MAN, OldaleTown_Movement_BackUp
waitmovement 0
msgbox OldaleTown_Text_WaitDontComeInHere, MSGBOX_DEFAULT
@@ -221,7 +217,7 @@ OldaleTown_EventScript_NotBlockingPath::
OldaleTown_EventScript_Rival::
lockall
- applymovement LOCALID_RIVAL, Common_Movement_FacePlayer
+ applymovement LOCALID_OLDALE_RIVAL, Common_Movement_FacePlayer
waitmovement 0
setvar VAR_0x8009, 0
goto OldaleTown_EventScript_ShowRivalMessage
@@ -229,9 +225,9 @@ OldaleTown_EventScript_Rival::
OldaleTown_EventScript_RivalTrigger1::
lockall
- applymovement LOCALID_RIVAL, OldaleTown_Movement_RivalApproachPlayer1
+ applymovement LOCALID_OLDALE_RIVAL, OldaleTown_Movement_RivalApproachPlayer1
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterRight
waitmovement 0
setvar VAR_0x8009, 1
goto OldaleTown_EventScript_ShowRivalMessage
@@ -239,9 +235,9 @@ OldaleTown_EventScript_RivalTrigger1::
OldaleTown_EventScript_RivalTrigger2::
lockall
- applymovement LOCALID_RIVAL, OldaleTown_Movement_RivalApproachPlayer2
+ applymovement LOCALID_OLDALE_RIVAL, OldaleTown_Movement_RivalApproachPlayer2
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterRight
waitmovement 0
setvar VAR_0x8009, 1
goto OldaleTown_EventScript_ShowRivalMessage
@@ -249,9 +245,9 @@ OldaleTown_EventScript_RivalTrigger2::
OldaleTown_EventScript_RivalTrigger3::
lockall
- applymovement LOCALID_RIVAL, OldaleTown_Movement_RivalApproachPlayer3
+ applymovement LOCALID_OLDALE_RIVAL, OldaleTown_Movement_RivalApproachPlayer3
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterRight
waitmovement 0
setvar VAR_0x8009, 1
goto OldaleTown_EventScript_ShowRivalMessage
@@ -277,9 +273,9 @@ OldaleTown_EventScript_RivalFinish::
closemessage
call_if_eq VAR_0x8009, 0, OldaleTown_EventScript_DoExitMovement1
call_if_eq VAR_0x8009, 1, OldaleTown_EventScript_DoExitMovement2
- applymovement LOCALID_RIVAL, OldaleTown_Movement_RivalExit
+ applymovement LOCALID_OLDALE_RIVAL, OldaleTown_Movement_RivalExit
waitmovement 0
- removeobject LOCALID_RIVAL
+ removeobject LOCALID_OLDALE_RIVAL
setvar VAR_OLDALE_RIVAL_STATE, 2
setflag FLAG_HIDE_OLDALE_TOWN_RIVAL
releaseall
@@ -287,13 +283,13 @@ OldaleTown_EventScript_RivalFinish::
OldaleTown_EventScript_DoExitMovement1::
goto_if_ne VAR_FACING, DIR_SOUTH, OldaleTown_EventScript_DoExitMovement2
- applymovement LOCALID_RIVAL, OldaleTown_Movement_RivalExit
+ applymovement LOCALID_OLDALE_RIVAL, OldaleTown_Movement_RivalExit
waitmovement 0
return
OldaleTown_EventScript_DoExitMovement2::
- applymovement OBJ_EVENT_ID_PLAYER, OldaleTown_Movement_WatchRivalExit
- applymovement LOCALID_RIVAL, OldaleTown_Movement_RivalExit
+ applymovement LOCALID_PLAYER, OldaleTown_Movement_WatchRivalExit
+ applymovement LOCALID_OLDALE_RIVAL, OldaleTown_Movement_RivalExit
waitmovement 0
return
diff --git a/data/maps/OldaleTown_Mart/map.json b/data/maps/OldaleTown_Mart/map.json
index cfca496fd9..7ec9e7ab68 100644
--- a/data/maps/OldaleTown_Mart/map.json
+++ b/data/maps/OldaleTown_Mart/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_OLDALE_MART_CLERK",
"graphics_id": "OBJ_EVENT_GFX_MART_EMPLOYEE",
"x": 1,
"y": 3,
diff --git a/data/maps/OldaleTown_PokemonCenter_1F/map.json b/data/maps/OldaleTown_PokemonCenter_1F/map.json
index d3f72b8492..123d371cf4 100644
--- a/data/maps/OldaleTown_PokemonCenter_1F/map.json
+++ b/data/maps/OldaleTown_PokemonCenter_1F/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_OLDALE_NURSE",
"graphics_id": "OBJ_EVENT_GFX_NURSE",
"x": 7,
"y": 2,
diff --git a/data/maps/OldaleTown_PokemonCenter_1F/scripts.inc b/data/maps/OldaleTown_PokemonCenter_1F/scripts.inc
index 07549592f8..80f4ea359d 100644
--- a/data/maps/OldaleTown_PokemonCenter_1F/scripts.inc
+++ b/data/maps/OldaleTown_PokemonCenter_1F/scripts.inc
@@ -1,5 +1,3 @@
-.set LOCALID_NURSE, 1
-
OldaleTown_PokemonCenter_1F_MapScripts::
map_script MAP_SCRIPT_ON_TRANSITION, OldaleTown_PokemonCenter_1F_OnTransition
map_script MAP_SCRIPT_ON_RESUME, CableClub_OnResume
@@ -11,7 +9,7 @@ OldaleTown_PokemonCenter_1F_OnTransition:
end
OldaleTown_PokemonCenter_1F_EventScript_Nurse::
- setvar VAR_0x800B, LOCALID_NURSE
+ setvar VAR_0x800B, LOCALID_OLDALE_NURSE
call Common_EventScript_PkmnCenterNurse
waitmessage
waitbuttonpress
diff --git a/data/maps/PacifidlogTown_PokemonCenter_1F/map.json b/data/maps/PacifidlogTown_PokemonCenter_1F/map.json
index f98fdb3dd7..08f661ce97 100644
--- a/data/maps/PacifidlogTown_PokemonCenter_1F/map.json
+++ b/data/maps/PacifidlogTown_PokemonCenter_1F/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_PACIFIDLOG_NURSE",
"graphics_id": "OBJ_EVENT_GFX_NURSE",
"x": 7,
"y": 2,
diff --git a/data/maps/PacifidlogTown_PokemonCenter_1F/scripts.inc b/data/maps/PacifidlogTown_PokemonCenter_1F/scripts.inc
index 32db89f8dc..78ea62594a 100644
--- a/data/maps/PacifidlogTown_PokemonCenter_1F/scripts.inc
+++ b/data/maps/PacifidlogTown_PokemonCenter_1F/scripts.inc
@@ -1,5 +1,3 @@
-.set LOCALID_NURSE, 1
-
PacifidlogTown_PokemonCenter_1F_MapScripts::
map_script MAP_SCRIPT_ON_TRANSITION, PacifidlogTown_PokemonCenter_1F_OnTransition
map_script MAP_SCRIPT_ON_RESUME, CableClub_OnResume
@@ -10,7 +8,7 @@ PacifidlogTown_PokemonCenter_1F_OnTransition:
end
PacifidlogTown_PokemonCenter_1F_EventScript_Nurse::
- setvar VAR_0x800B, LOCALID_NURSE
+ setvar VAR_0x800B, LOCALID_PACIFIDLOG_NURSE
call Common_EventScript_PkmnCenterNurse
waitmessage
waitbuttonpress
diff --git a/data/maps/PetalburgCity/map.json b/data/maps/PetalburgCity/map.json
index 7aaca8145c..0708520309 100644
--- a/data/maps/PetalburgCity/map.json
+++ b/data/maps/PetalburgCity/map.json
@@ -39,6 +39,7 @@
"flag": "FLAG_HIDE_PETALBURG_CITY_WALLYS_MOM"
},
{
+ "local_id": "LOCALID_PETALBURG_WALLY",
"graphics_id": "OBJ_EVENT_GFX_WALLY",
"x": 15,
"y": 10,
@@ -52,6 +53,7 @@
"flag": "FLAG_HIDE_PETALBURG_CITY_WALLY"
},
{
+ "local_id": "LOCALID_PETALBURG_BOY",
"graphics_id": "OBJ_EVENT_GFX_BOY_1",
"x": 8,
"y": 22,
@@ -78,6 +80,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_PETALBURG_WALLYS_DAD",
"graphics_id": "OBJ_EVENT_GFX_POKEFAN_M",
"x": 15,
"y": 10,
@@ -117,6 +120,7 @@
"flag": "FLAG_ITEM_PETALBURG_CITY_ETHER"
},
{
+ "local_id": "LOCALID_GYM_BOY",
"graphics_id": "OBJ_EVENT_GFX_BOY_2",
"x": 12,
"y": 15,
@@ -130,6 +134,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_PETALBURG_SCOTT",
"graphics_id": "OBJ_EVENT_GFX_SCOTT",
"x": 13,
"y": 12,
diff --git a/data/maps/PetalburgCity/scripts.inc b/data/maps/PetalburgCity/scripts.inc
index a9dd1014f2..879e780228 100644
--- a/data/maps/PetalburgCity/scripts.inc
+++ b/data/maps/PetalburgCity/scripts.inc
@@ -1,9 +1,3 @@
-.set LOCALID_WALLY, 2
-.set LOCALID_BOY, 3
-.set LOCALID_WALLYS_DAD, 5
-.set LOCALID_GYM_BOY, 8
-.set LOCALID_SCOTT, 9
-
PetalburgCity_MapScripts::
map_script MAP_SCRIPT_ON_TRANSITION, PetalburgCity_OnTransition
map_script MAP_SCRIPT_ON_FRAME_TABLE, PetalburgCity_OnFrame
@@ -39,15 +33,15 @@ PetalburgCity_EventScript_WallyTutorial::
lockall
special SavePlayerParty
special LoadWallyZigzagoon
- applymovement LOCALID_WALLY, PetalburgCity_Movement_WallyTutorialWally
- applymovement OBJ_EVENT_ID_PLAYER, PetalburgCity_Movement_WallyTutorialPlayer
+ applymovement LOCALID_PETALBURG_WALLY, PetalburgCity_Movement_WallyTutorialWally
+ applymovement LOCALID_PLAYER, PetalburgCity_Movement_WallyTutorialPlayer
waitmovement 0
msgbox Route102_Text_WatchMeCatchPokemon, MSGBOX_DEFAULT
special StartWallyTutorialBattle
waitstate
msgbox Route102_Text_WallyIDidIt, MSGBOX_DEFAULT
- applymovement LOCALID_WALLY, Common_Movement_WalkInPlaceFasterLeft, MAP_PETALBURG_CITY
- waitmovement LOCALID_WALLY, MAP_PETALBURG_CITY
+ applymovement LOCALID_PETALBURG_WALLY, Common_Movement_WalkInPlaceFasterLeft, MAP_PETALBURG_CITY
+ waitmovement LOCALID_PETALBURG_WALLY, MAP_PETALBURG_CITY
msgbox Route102_Text_LetsGoBack, MSGBOX_DEFAULT
closemessage
clearflag FLAG_HIDE_MAP_NAME_POPUP
@@ -64,18 +58,18 @@ PetalburgCity_EventScript_WallyTutorial::
PetalburgCity_EventScript_WalkToWallyHouse::
lockall
setflag FLAG_HIDE_MAP_NAME_POPUP
- applymovement LOCALID_WALLYS_DAD, PetalburgCity_Movement_WalkToWallyHouseWallysDad
- applymovement OBJ_EVENT_ID_PLAYER, PetalburgCity_Movement_WalkToWallyHousePlayer
+ applymovement LOCALID_PETALBURG_WALLYS_DAD, PetalburgCity_Movement_WalkToWallyHouseWallysDad
+ applymovement LOCALID_PLAYER, PetalburgCity_Movement_WalkToWallyHousePlayer
waitmovement 0
setvar VAR_0x8004, 7
setvar VAR_0x8005, 5
opendoor VAR_0x8004, VAR_0x8005
waitdooranim
- applymovement LOCALID_WALLYS_DAD, PetalburgCity_Movement_WalkInsideHouseWallysDad
- applymovement OBJ_EVENT_ID_PLAYER, PetalburgCity_Movement_WalkInsideHousePlayer
+ applymovement LOCALID_PETALBURG_WALLYS_DAD, PetalburgCity_Movement_WalkInsideHouseWallysDad
+ applymovement LOCALID_PLAYER, PetalburgCity_Movement_WalkInsideHousePlayer
waitmovement 0
setflag FLAG_HIDE_PETALBURG_CITY_WALLYS_DAD
- hideobjectat OBJ_EVENT_ID_PLAYER, MAP_PETALBURG_CITY
+ hideobjectat LOCALID_PLAYER, MAP_PETALBURG_CITY
closedoor VAR_0x8004, VAR_0x8005
waitdooranim
clearflag FLAG_HIDE_MAP_NAME_POPUP
@@ -91,7 +85,7 @@ PetalburgCity_EventScript_Boy::
faceplayer
msgbox PetalburgCity_Text_WaterReflection, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_BOY, Common_Movement_FaceOriginalDirection
+ applymovement LOCALID_PETALBURG_BOY, Common_Movement_FaceOriginalDirection
waitmovement 0
release
end
@@ -285,7 +279,7 @@ PetalburgCity_EventScript_ShowGymToPlayer::
call_if_eq VAR_0x8008, 3, PetalburgCity_EventScript_LeadPlayerToGym3
msgbox PetalburgCity_Text_ThisIsPetalburgGym, MSGBOX_DEFAULT
applymovement LOCALID_GYM_BOY, Common_Movement_WalkInPlaceFasterRight
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterRight
waitmovement 0
msgbox PetalburgCity_Text_ThisIsGymSign, MSGBOX_DEFAULT
closemessage
@@ -298,7 +292,7 @@ PetalburgCity_EventScript_ShowGymToPlayer::
PetalburgCity_EventScript_BoyApproachPlayer0::
applymovement LOCALID_GYM_BOY, PetalburgCity_Movement_BoyApproachPlayer0
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterDown
waitmovement 0
return
@@ -310,38 +304,38 @@ PetalburgCity_EventScript_BoyApproachPlayer1::
PetalburgCity_EventScript_BoyApproachPlayer2::
applymovement LOCALID_GYM_BOY, PetalburgCity_Movement_BoyApproachPlayer2
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterUp
waitmovement 0
return
PetalburgCity_EventScript_BoyApproachPlayer3::
applymovement LOCALID_GYM_BOY, PetalburgCity_Movement_BoyApproachPlayer3
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterUp
waitmovement 0
return
PetalburgCity_EventScript_LeadPlayerToGym0::
applymovement LOCALID_GYM_BOY, PetalburgCity_Movement_BoyWalkToGym0
- applymovement OBJ_EVENT_ID_PLAYER, PetalburgCity_Movement_PlayerWalkToGym0
+ applymovement LOCALID_PLAYER, PetalburgCity_Movement_PlayerWalkToGym0
waitmovement 0
return
PetalburgCity_EventScript_LeadPlayerToGym1::
applymovement LOCALID_GYM_BOY, PetalburgCity_Movement_BoyWalkToGym1
- applymovement OBJ_EVENT_ID_PLAYER, PetalburgCity_Movement_PlayerWalkToGym1
+ applymovement LOCALID_PLAYER, PetalburgCity_Movement_PlayerWalkToGym1
waitmovement 0
return
PetalburgCity_EventScript_LeadPlayerToGym2::
applymovement LOCALID_GYM_BOY, PetalburgCity_Movement_BoyWalkToGym2
- applymovement OBJ_EVENT_ID_PLAYER, PetalburgCity_Movement_PlayerWalkToGym2
+ applymovement LOCALID_PLAYER, PetalburgCity_Movement_PlayerWalkToGym2
waitmovement 0
return
PetalburgCity_EventScript_LeadPlayerToGym3::
applymovement LOCALID_GYM_BOY, PetalburgCity_Movement_BoyWalkToGym3
- applymovement OBJ_EVENT_ID_PLAYER, PetalburgCity_Movement_PlayerWalkToGym3
+ applymovement LOCALID_PLAYER, PetalburgCity_Movement_PlayerWalkToGym3
waitmovement 0
return
@@ -504,57 +498,57 @@ PetalburgCity_Movement_PlayerWalkToGym3:
PetalburgCity_EventScript_Scott0::
lockall
- addobject LOCALID_SCOTT
+ addobject LOCALID_PETALBURG_SCOTT
setvar VAR_0x8008, 0
- setobjectxy LOCALID_SCOTT, 13, 10
+ setobjectxy LOCALID_PETALBURG_SCOTT, 13, 10
goto PetalburgCity_EventScript_Scott
end
PetalburgCity_EventScript_Scott1::
lockall
- addobject LOCALID_SCOTT
+ addobject LOCALID_PETALBURG_SCOTT
setvar VAR_0x8008, 1
- setobjectxy LOCALID_SCOTT, 13, 11
+ setobjectxy LOCALID_PETALBURG_SCOTT, 13, 11
goto PetalburgCity_EventScript_Scott
end
PetalburgCity_EventScript_Scott2::
lockall
- addobject LOCALID_SCOTT
+ addobject LOCALID_PETALBURG_SCOTT
setvar VAR_0x8008, 2
- setobjectxy LOCALID_SCOTT, 13, 12
+ setobjectxy LOCALID_PETALBURG_SCOTT, 13, 12
goto PetalburgCity_EventScript_Scott
end
PetalburgCity_EventScript_Scott3::
lockall
- addobject LOCALID_SCOTT
+ addobject LOCALID_PETALBURG_SCOTT
setvar VAR_0x8008, 3
- setobjectxy LOCALID_SCOTT, 13, 13
+ setobjectxy LOCALID_PETALBURG_SCOTT, 13, 13
goto PetalburgCity_EventScript_Scott
end
PetalburgCity_EventScript_Scott::
- applymovement LOCALID_SCOTT, PetalburgCity_Movement_ScottStartWalkLeft
+ applymovement LOCALID_PETALBURG_SCOTT, PetalburgCity_Movement_ScottStartWalkLeft
waitmovement 0
playse SE_PIN
- applymovement LOCALID_SCOTT, Common_Movement_ExclamationMark
+ applymovement LOCALID_PETALBURG_SCOTT, Common_Movement_ExclamationMark
waitmovement 0
- applymovement LOCALID_SCOTT, Common_Movement_Delay48
+ applymovement LOCALID_PETALBURG_SCOTT, Common_Movement_Delay48
waitmovement 0
- applymovement LOCALID_SCOTT, PetalburgCity_Movement_ScottApproachPlayer
+ applymovement LOCALID_PETALBURG_SCOTT, PetalburgCity_Movement_ScottApproachPlayer
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterRight
waitmovement 0
setvar VAR_SCOTT_STATE, 1
msgbox PetalburgCity_Text_AreYouATrainer, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_SCOTT, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_PETALBURG_SCOTT, Common_Movement_WalkInPlaceFasterRight
waitmovement 0
delay 30
msgbox PetalburgCity_Text_WellMaybeNot, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_SCOTT, Common_Movement_WalkInPlaceFasterLeft
+ applymovement LOCALID_PETALBURG_SCOTT, Common_Movement_WalkInPlaceFasterLeft
waitmovement 0
delay 30
msgbox PetalburgCity_Text_ImLookingForTalentedTrainers, MSGBOX_DEFAULT
@@ -564,31 +558,31 @@ PetalburgCity_EventScript_Scott::
call_if_eq VAR_0x8008, 2, PetalburgCity_EventScript_ScottExit2
call_if_eq VAR_0x8008, 3, PetalburgCity_EventScript_ScottExit3
setvar VAR_SCOTT_PETALBURG_ENCOUNTER, 1
- removeobject LOCALID_SCOTT
+ removeobject LOCALID_PETALBURG_SCOTT
releaseall
end
PetalburgCity_EventScript_ScottExit0::
- applymovement OBJ_EVENT_ID_PLAYER, PetalburgCity_Movement_PlayerWatchScottExit0
- applymovement LOCALID_SCOTT, PetalburgCity_Movement_ScottExit0
+ applymovement LOCALID_PLAYER, PetalburgCity_Movement_PlayerWatchScottExit0
+ applymovement LOCALID_PETALBURG_SCOTT, PetalburgCity_Movement_ScottExit0
waitmovement 0
return
PetalburgCity_EventScript_ScottExit1::
- applymovement OBJ_EVENT_ID_PLAYER, PetalburgCity_Movement_PlayerWatchScottExit1
- applymovement LOCALID_SCOTT, PetalburgCity_Movement_ScottExit1
+ applymovement LOCALID_PLAYER, PetalburgCity_Movement_PlayerWatchScottExit1
+ applymovement LOCALID_PETALBURG_SCOTT, PetalburgCity_Movement_ScottExit1
waitmovement 0
return
PetalburgCity_EventScript_ScottExit2::
- applymovement OBJ_EVENT_ID_PLAYER, PetalburgCity_Movement_PlayerWatchScottExit2
- applymovement LOCALID_SCOTT, PetalburgCity_Movement_ScottExit2
+ applymovement LOCALID_PLAYER, PetalburgCity_Movement_PlayerWatchScottExit2
+ applymovement LOCALID_PETALBURG_SCOTT, PetalburgCity_Movement_ScottExit2
waitmovement 0
return
PetalburgCity_EventScript_ScottExit3::
- applymovement OBJ_EVENT_ID_PLAYER, PetalburgCity_Movement_PlayerWatchScottExit3
- applymovement LOCALID_SCOTT, PetalburgCity_Movement_ScottExit3
+ applymovement LOCALID_PLAYER, PetalburgCity_Movement_PlayerWatchScottExit3
+ applymovement LOCALID_PETALBURG_SCOTT, PetalburgCity_Movement_ScottExit3
waitmovement 0
return
diff --git a/data/maps/PetalburgCity_Gym/map.json b/data/maps/PetalburgCity_Gym/map.json
index ef58491713..ecc3176b20 100644
--- a/data/maps/PetalburgCity_Gym/map.json
+++ b/data/maps/PetalburgCity_Gym/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_PETALBURG_GYM_NORMAN",
"graphics_id": "OBJ_EVENT_GFX_NORMAN",
"x": 4,
"y": 2,
@@ -132,6 +133,7 @@
"flag": "FLAG_HIDE_PETALBURG_GYM_GREETER"
},
{
+ "local_id": "LOCALID_PETALBURG_GYM_WALLY",
"graphics_id": "OBJ_EVENT_GFX_WALLY",
"x": 4,
"y": 111,
@@ -145,6 +147,7 @@
"flag": "FLAG_HIDE_PETALBURG_GYM_WALLY"
},
{
+ "local_id": "LOCALID_PETALBURG_GYM_WALLYS_DAD",
"graphics_id": "OBJ_EVENT_GFX_POKEFAN_M",
"x": 1,
"y": 7,
diff --git a/data/maps/PetalburgCity_Gym/scripts.inc b/data/maps/PetalburgCity_Gym/scripts.inc
index f61c518fe0..53a6d8feb8 100644
--- a/data/maps/PetalburgCity_Gym/scripts.inc
+++ b/data/maps/PetalburgCity_Gym/scripts.inc
@@ -1,7 +1,3 @@
-.set LOCALID_NORMAN, 1
-.set LOCALID_WALLY, 10
-.set LOCALID_WALLYS_DAD, 11
-
PetalburgCity_Gym_MapScripts::
map_script MAP_SCRIPT_ON_LOAD, PetalburgCity_Gym_OnLoad
map_script MAP_SCRIPT_ON_TRANSITION, PetalburgCity_Gym_OnTransition
@@ -46,11 +42,11 @@ PetalburgCity_Gym_OnTransition:
end
PetalburgCity_Gym_EventScript_MoveWallyToEntrance::
- setobjectxyperm LOCALID_WALLY, 5, 108
+ setobjectxyperm LOCALID_PETALBURG_GYM_WALLY, 5, 108
return
PetalburgCity_Gym_EventScript_MoveNormanToEntrance::
- setobjectxyperm LOCALID_NORMAN, 4, 107
+ setobjectxyperm LOCALID_PETALBURG_GYM_NORMAN, 4, 107
return
PetalburgCity_Gym_EventScript_CheckNormanForRematch::
@@ -58,7 +54,7 @@ PetalburgCity_Gym_EventScript_CheckNormanForRematch::
specialvar VAR_RESULT, IsTrainerReadyForRematch
goto_if_eq VAR_RESULT, TRUE, PetalburgCity_Gym_EventScript_DontMoveNormanToFront
goto_if_eq VAR_PETALBURG_GYM_STATE, 8, PetalburgCity_Gym_EventScript_DontMoveNormanToFront
- setobjectxyperm LOCALID_NORMAN, 4, 107
+ setobjectxyperm LOCALID_PETALBURG_GYM_NORMAN, 4, 107
return
PetalburgCity_Gym_EventScript_DontMoveNormanToFront::
@@ -70,7 +66,7 @@ PetalburgCity_Gym_OnWarp:
.2byte 0
PetalburgCity_Gym_EventScript_TurnPlayerNorth::
- turnobject OBJ_EVENT_ID_PLAYER, DIR_NORTH
+ turnobject LOCALID_PLAYER, DIR_NORTH
end
PetalburgCity_Gym_OnFrame:
@@ -82,14 +78,14 @@ PetalburgCity_Gym_EventScript_ReturnFromWallyTutorial::
msgbox PetalburgCity_Gym_Text_DadSoDidItWorkOut, MSGBOX_DEFAULT
msgbox PetalburgCity_Gym_Text_WallyThankYouBye, MSGBOX_DEFAULT
closemessage
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterDown
- applymovement LOCALID_WALLY, PetalburgCity_Gym_Movement_WallyExitGym
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_PETALBURG_GYM_WALLY, PetalburgCity_Gym_Movement_WallyExitGym
waitmovement 0
playse SE_EXIT
- removeobject LOCALID_WALLY
+ removeobject LOCALID_PETALBURG_GYM_WALLY
setflag FLAG_HIDE_PETALBURG_CITY_WALLY
delay 30
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterUp
waitmovement 0
msgbox PetalburgCity_Gym_Text_DadGoCollectBadges, MSGBOX_DEFAULT
setvar VAR_PETALBURG_GYM_STATE, 2
@@ -144,7 +140,7 @@ PetalburgCity_Gym_EventScript_BeginWallyTutorialEast::
end
PetalburgCity_Gym_EventScript_BeginWallyTutorial::
- addobject LOCALID_WALLY
+ addobject LOCALID_PETALBURG_GYM_WALLY
playse SE_DOOR
call_if_eq VAR_0x8008, 0, PetalburgCity_Gym_EventScript_WallyArriveSouth
call_if_eq VAR_0x8008, 1, PetalburgCity_Gym_EventScript_WallyArriveNorth
@@ -182,7 +178,7 @@ PetalburgCity_Gym_EventScript_BeginWallyTutorial::
call_if_eq VAR_0x8008, 1, PetalburgCity_Gym_EventScript_ExitGymWithWallyNorth
call_if_eq VAR_0x8008, 2, PetalburgCity_Gym_EventScript_ExitGymWithWallyWest
call_if_eq VAR_0x8008, 3, PetalburgCity_Gym_EventScript_ExitGymWithWallyEast
- removeobject LOCALID_WALLY
+ removeobject LOCALID_PETALBURG_GYM_WALLY
setflag FLAG_HIDE_PETALBURG_CITY_WALLYS_MOM
setvar VAR_PETALBURG_GYM_STATE, 1
setvar VAR_PETALBURG_CITY_STATE, 2
@@ -196,101 +192,101 @@ PetalburgCity_Gym_EventScript_BeginWallyTutorial::
end
PetalburgCity_Gym_EventScript_WallyArriveSouth::
- applymovement LOCALID_NORMAN, Common_Movement_WalkInPlaceFasterDown
- applymovement LOCALID_WALLY, PetalburgCity_Gym_Movement_WallyArrive
+ applymovement LOCALID_PETALBURG_GYM_NORMAN, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_PETALBURG_GYM_WALLY, PetalburgCity_Gym_Movement_WallyArrive
waitmovement 0
return
PetalburgCity_Gym_EventScript_WallyArriveNorth::
- applymovement LOCALID_WALLY, PetalburgCity_Gym_Movement_WallyArriveNorth
+ applymovement LOCALID_PETALBURG_GYM_WALLY, PetalburgCity_Gym_Movement_WallyArriveNorth
waitmovement 0
- applymovement LOCALID_NORMAN, Common_Movement_WalkInPlaceFasterRight
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_PETALBURG_GYM_NORMAN, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterRight
waitmovement 0
return
PetalburgCity_Gym_EventScript_WallyArriveWestEast::
- applymovement LOCALID_NORMAN, Common_Movement_WalkInPlaceFasterDown
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterDown
- applymovement LOCALID_WALLY, PetalburgCity_Gym_Movement_WallyArrive
+ applymovement LOCALID_PETALBURG_GYM_NORMAN, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_PETALBURG_GYM_WALLY, PetalburgCity_Gym_Movement_WallyArrive
waitmovement 0
return
PetalburgCity_Gym_EventScript_ExitGymWithWallySouth::
- applymovement LOCALID_NORMAN, Common_Movement_WalkInPlaceFasterDown
- applymovement LOCALID_WALLY, PetalburgCity_Gym_Movement_WallyExitSouthWest
- applymovement OBJ_EVENT_ID_PLAYER, PetalburgCity_Gym_Movement_PlayerExitWithWallySouth
+ applymovement LOCALID_PETALBURG_GYM_NORMAN, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_PETALBURG_GYM_WALLY, PetalburgCity_Gym_Movement_WallyExitSouthWest
+ applymovement LOCALID_PLAYER, PetalburgCity_Gym_Movement_PlayerExitWithWallySouth
waitmovement 0
return
PetalburgCity_Gym_EventScript_ExitGymWithWallyNorth::
- applymovement LOCALID_WALLY, PetalburgCity_Gym_Movement_WallyExitNorth
- applymovement OBJ_EVENT_ID_PLAYER, PetalburgCity_Gym_Movement_PlayerExitWithWallyNorth
+ applymovement LOCALID_PETALBURG_GYM_WALLY, PetalburgCity_Gym_Movement_WallyExitNorth
+ applymovement LOCALID_PLAYER, PetalburgCity_Gym_Movement_PlayerExitWithWallyNorth
waitmovement 0
return
PetalburgCity_Gym_EventScript_ExitGymWithWallyWest::
- applymovement LOCALID_WALLY, PetalburgCity_Gym_Movement_WallyExitSouthWest
- applymovement OBJ_EVENT_ID_PLAYER, PetalburgCity_Gym_Movement_PlayerExitWithWallyWest
+ applymovement LOCALID_PETALBURG_GYM_WALLY, PetalburgCity_Gym_Movement_WallyExitSouthWest
+ applymovement LOCALID_PLAYER, PetalburgCity_Gym_Movement_PlayerExitWithWallyWest
waitmovement 0
return
PetalburgCity_Gym_EventScript_ExitGymWithWallyEast::
- applymovement LOCALID_WALLY, PetalburgCity_Gym_Movement_WallyExitEast
- applymovement OBJ_EVENT_ID_PLAYER, PetalburgCity_Gym_Movement_PlayerExitWithWallyEast
+ applymovement LOCALID_PETALBURG_GYM_WALLY, PetalburgCity_Gym_Movement_WallyExitEast
+ applymovement LOCALID_PLAYER, PetalburgCity_Gym_Movement_PlayerExitWithWallyEast
waitmovement 0
return
PetalburgCity_Gym_EventScript_NormanAddressPlayerSouth::
- applymovement LOCALID_NORMAN, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_PETALBURG_GYM_NORMAN, Common_Movement_WalkInPlaceFasterUp
waitmovement 0
return
PetalburgCity_Gym_EventScript_NormanAddressPlayerNorth::
- applymovement LOCALID_NORMAN, Common_Movement_WalkInPlaceFasterDown
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_PETALBURG_GYM_NORMAN, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterUp
waitmovement 0
return
PetalburgCity_Gym_EventScript_NormanAddressPlayerWest::
- applymovement LOCALID_NORMAN, Common_Movement_WalkInPlaceFasterRight
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
+ applymovement LOCALID_PETALBURG_GYM_NORMAN, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
waitmovement 0
return
PetalburgCity_Gym_EventScript_NormanAddressPlayerEast::
- applymovement LOCALID_NORMAN, Common_Movement_WalkInPlaceFasterLeft
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_PETALBURG_GYM_NORMAN, Common_Movement_WalkInPlaceFasterLeft
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterRight
waitmovement 0
return
PetalburgCity_Gym_EventScript_NormanAddressWallySouth::
- applymovement LOCALID_NORMAN, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_PETALBURG_GYM_NORMAN, Common_Movement_WalkInPlaceFasterDown
waitmovement 0
return
PetalburgCity_Gym_EventScript_NormanAddressWallyNorth::
- applymovement LOCALID_NORMAN, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_PETALBURG_GYM_NORMAN, Common_Movement_WalkInPlaceFasterRight
waitmovement 0
return
PetalburgCity_Gym_EventScript_NormanAddressWallyWest::
- applymovement LOCALID_NORMAN, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_PETALBURG_GYM_NORMAN, Common_Movement_WalkInPlaceFasterDown
waitmovement 0
return
PetalburgCity_Gym_EventScript_NormanAddressWallyEast::
- applymovement LOCALID_NORMAN, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_PETALBURG_GYM_NORMAN, Common_Movement_WalkInPlaceFasterDown
waitmovement 0
return
PetalburgCity_Gym_EventScript_WallyFacePlayer::
- applymovement LOCALID_WALLY, Common_Movement_FacePlayer
+ applymovement LOCALID_PETALBURG_GYM_WALLY, Common_Movement_FacePlayer
waitmovement 0
return
PetalburgCity_Gym_EventScript_WallyFaceDown::
- applymovement LOCALID_WALLY, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_PETALBURG_GYM_WALLY, Common_Movement_WalkInPlaceFasterDown
waitmovement 0
return
@@ -319,7 +315,7 @@ PetalburgCity_Gym_EventScript_NormanFaceDoorSouth::
@ For all other NormanFaceDoorX, Norman is already facing the door from NormanAddressWallyX
PetalburgCity_Gym_EventScript_NormanFaceDoorNorth::
- applymovement LOCALID_NORMAN, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_PETALBURG_GYM_NORMAN, Common_Movement_WalkInPlaceFasterDown
waitmovement 0
return
@@ -397,7 +393,7 @@ PetalburgCity_Gym_EventScript_NormanBattle::
delay 40
playse SE_DOOR
delay 10
- addobject LOCALID_WALLYS_DAD
+ addobject LOCALID_PETALBURG_GYM_WALLYS_DAD
switch VAR_FACING
case DIR_NORTH, PetalburgCity_Gym_EventScript_WallysDadArrivesNorth
case DIR_WEST, PetalburgCity_Gym_EventScript_WallysDadArrivesWest
@@ -424,12 +420,12 @@ PetalburgCity_Gym_EventScript_WallysDadArrivesWest::
goto PetalburgCity_Gym_EventScript_WallysDadArrives
PetalburgCity_Gym_EventScript_WallysDadArrives::
- applymovement LOCALID_WALLYS_DAD, PetalburgCity_Gym_Movement_WallysDadEnterGym
+ applymovement LOCALID_PETALBURG_GYM_WALLYS_DAD, PetalburgCity_Gym_Movement_WallysDadEnterGym
waitmovement 0
playse SE_PIN
- applymovement LOCALID_WALLYS_DAD, Common_Movement_ExclamationMark
+ applymovement LOCALID_PETALBURG_GYM_WALLYS_DAD, Common_Movement_ExclamationMark
waitmovement 0
- applymovement LOCALID_WALLYS_DAD, Common_Movement_Delay48
+ applymovement LOCALID_PETALBURG_GYM_WALLYS_DAD, Common_Movement_Delay48
waitmovement 0
delay 10
call_if_eq VAR_0x8008, 1, PetalburgCity_Gym_EventScript_WallysDadApproachPlayerNorth
@@ -448,7 +444,7 @@ PetalburgCity_Gym_EventScript_WallysDadArrives::
call_if_eq VAR_0x8008, 1, PetalburgCity_Gym_EventScript_ExitGymWithWallysDadNorth
call_if_eq VAR_0x8008, 2, PetalburgCity_Gym_EventScript_ExitGymWithWallysDadEast
call_if_eq VAR_0x8008, 3, PetalburgCity_Gym_EventScript_ExitGymWithWallysDadWest
- removeobject LOCALID_WALLYS_DAD
+ removeobject LOCALID_PETALBURG_GYM_WALLYS_DAD
setvar VAR_PETALBURG_CITY_STATE, 4
clearflag FLAG_HIDE_PETALBURG_CITY_WALLYS_DAD
warp MAP_PETALBURG_CITY, 15, 8
@@ -457,60 +453,60 @@ PetalburgCity_Gym_EventScript_WallysDadArrives::
end
PetalburgCity_Gym_EventScript_WallysDadFaceNormanNorth::
- applymovement LOCALID_WALLYS_DAD, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_PETALBURG_GYM_WALLYS_DAD, Common_Movement_WalkInPlaceFasterUp
waitmovement 0
return
PetalburgCity_Gym_EventScript_WallysDadFaceNormanEast::
- applymovement LOCALID_WALLYS_DAD, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_PETALBURG_GYM_WALLYS_DAD, Common_Movement_WalkInPlaceFasterRight
waitmovement 0
return
PetalburgCity_Gym_EventScript_WallysDadFaceNormanWest::
- applymovement LOCALID_WALLYS_DAD, Common_Movement_WalkInPlaceFasterLeft
+ applymovement LOCALID_PETALBURG_GYM_WALLYS_DAD, Common_Movement_WalkInPlaceFasterLeft
waitmovement 0
return
PetalburgCity_Gym_EventScript_WallysDadApproachPlayerNorth::
- applymovement LOCALID_WALLYS_DAD, PetalburgCity_Gym_Movement_WallysDadApproachPlayerNorth
+ applymovement LOCALID_PETALBURG_GYM_WALLYS_DAD, PetalburgCity_Gym_Movement_WallysDadApproachPlayerNorth
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
- applymovement LOCALID_NORMAN, Common_Movement_WalkInPlaceFasterLeft
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
+ applymovement LOCALID_PETALBURG_GYM_NORMAN, Common_Movement_WalkInPlaceFasterLeft
waitmovement 0
return
PetalburgCity_Gym_EventScript_WallysDadApproachPlayerEast::
- applymovement LOCALID_WALLYS_DAD, PetalburgCity_Gym_Movement_WallysDadApproachPlayerEast
+ applymovement LOCALID_PETALBURG_GYM_WALLYS_DAD, PetalburgCity_Gym_Movement_WallysDadApproachPlayerEast
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterDown
- applymovement LOCALID_NORMAN, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_PETALBURG_GYM_NORMAN, Common_Movement_WalkInPlaceFasterDown
waitmovement 0
return
PetalburgCity_Gym_EventScript_WallysDadApproachPlayerWest::
- applymovement LOCALID_WALLYS_DAD, PetalburgCity_Gym_Movement_WallysDadApproachPlayerWest
+ applymovement LOCALID_PETALBURG_GYM_WALLYS_DAD, PetalburgCity_Gym_Movement_WallysDadApproachPlayerWest
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterDown
- applymovement LOCALID_NORMAN, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_PETALBURG_GYM_NORMAN, Common_Movement_WalkInPlaceFasterDown
waitmovement 0
return
PetalburgCity_Gym_EventScript_ExitGymWithWallysDadNorth::
- applymovement LOCALID_WALLYS_DAD, PetalburgCity_Gym_Movement_WallysDadExitNorth
- applymovement LOCALID_NORMAN, Common_Movement_WalkInPlaceFasterDown
- applymovement OBJ_EVENT_ID_PLAYER, PetalburgCity_Gym_Movement_PlayerExitWithWallysDadNorth
+ applymovement LOCALID_PETALBURG_GYM_WALLYS_DAD, PetalburgCity_Gym_Movement_WallysDadExitNorth
+ applymovement LOCALID_PETALBURG_GYM_NORMAN, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_PLAYER, PetalburgCity_Gym_Movement_PlayerExitWithWallysDadNorth
waitmovement 0
return
PetalburgCity_Gym_EventScript_ExitGymWithWallysDadEast::
- applymovement LOCALID_WALLYS_DAD, PetalburgCity_Gym_Movement_WallysDadExitEast
- applymovement OBJ_EVENT_ID_PLAYER, PetalburgCity_Gym_Movement_PlayerExitWithWallysDadEast
+ applymovement LOCALID_PETALBURG_GYM_WALLYS_DAD, PetalburgCity_Gym_Movement_WallysDadExitEast
+ applymovement LOCALID_PLAYER, PetalburgCity_Gym_Movement_PlayerExitWithWallysDadEast
waitmovement 0
return
PetalburgCity_Gym_EventScript_ExitGymWithWallysDadWest::
- applymovement LOCALID_WALLYS_DAD, PetalburgCity_Gym_Movement_WallysDadExitWest
- applymovement OBJ_EVENT_ID_PLAYER, PetalburgCity_Gym_Movement_PlayerExitWithWallysDadWest
+ applymovement LOCALID_PETALBURG_GYM_WALLYS_DAD, PetalburgCity_Gym_Movement_WallysDadExitWest
+ applymovement LOCALID_PLAYER, PetalburgCity_Gym_Movement_PlayerExitWithWallysDadWest
waitmovement 0
return
diff --git a/data/maps/PetalburgCity_Mart/map.json b/data/maps/PetalburgCity_Mart/map.json
index 7c8a70b28e..884e25d3ea 100644
--- a/data/maps/PetalburgCity_Mart/map.json
+++ b/data/maps/PetalburgCity_Mart/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_PETALBURG_MART_CLERK",
"graphics_id": "OBJ_EVENT_GFX_MART_EMPLOYEE",
"x": 1,
"y": 3,
diff --git a/data/maps/PetalburgCity_PokemonCenter_1F/map.json b/data/maps/PetalburgCity_PokemonCenter_1F/map.json
index 12b7810df9..ae19e848b3 100644
--- a/data/maps/PetalburgCity_PokemonCenter_1F/map.json
+++ b/data/maps/PetalburgCity_PokemonCenter_1F/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_PETALBURG_NURSE",
"graphics_id": "OBJ_EVENT_GFX_NURSE",
"x": 7,
"y": 2,
diff --git a/data/maps/PetalburgCity_PokemonCenter_1F/scripts.inc b/data/maps/PetalburgCity_PokemonCenter_1F/scripts.inc
index 3dadd3184b..032007dcfc 100644
--- a/data/maps/PetalburgCity_PokemonCenter_1F/scripts.inc
+++ b/data/maps/PetalburgCity_PokemonCenter_1F/scripts.inc
@@ -1,5 +1,3 @@
-.set LOCALID_NURSE, 1
-
PetalburgCity_PokemonCenter_1F_MapScripts::
map_script MAP_SCRIPT_ON_TRANSITION, PetalburgCity_PokemonCenter_1F_OnTransition
map_script MAP_SCRIPT_ON_RESUME, CableClub_OnResume
@@ -11,7 +9,7 @@ PetalburgCity_PokemonCenter_1F_OnTransition:
end
PetalburgCity_PokemonCenter_1F_EventScript_Nurse::
- setvar VAR_0x800B, LOCALID_NURSE
+ setvar VAR_0x800B, LOCALID_PETALBURG_NURSE
call Common_EventScript_PkmnCenterNurse
waitmessage
waitbuttonpress
diff --git a/data/maps/PetalburgCity_WallysHouse/map.json b/data/maps/PetalburgCity_WallysHouse/map.json
index f2fd03e7ff..8fb48df1ba 100644
--- a/data/maps/PetalburgCity_WallysHouse/map.json
+++ b/data/maps/PetalburgCity_WallysHouse/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_WALLYS_HOUSE_WALLYS_DAD",
"graphics_id": "OBJ_EVENT_GFX_POKEFAN_M",
"x": 3,
"y": 4,
diff --git a/data/maps/PetalburgCity_WallysHouse/scripts.inc b/data/maps/PetalburgCity_WallysHouse/scripts.inc
index f7e2e97828..fd8896064e 100644
--- a/data/maps/PetalburgCity_WallysHouse/scripts.inc
+++ b/data/maps/PetalburgCity_WallysHouse/scripts.inc
@@ -1,5 +1,3 @@
-.set LOCALID_WALLYS_DAD, 1
-
PetalburgCity_WallysHouse_MapScripts::
map_script MAP_SCRIPT_ON_FRAME_TABLE, PetalburgCity_WallysHouse_OnFrame
map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, PetalburgCity_WallysHouse_OnWarp
@@ -10,8 +8,8 @@ PetalburgCity_WallysHouse_OnWarp:
.2byte 0
PetalburgCity_WallysHouse_EventScript_PlayerWallysDadFaceEachOther::
- turnobject OBJ_EVENT_ID_PLAYER, DIR_EAST
- turnobject LOCALID_WALLYS_DAD, DIR_WEST
+ turnobject LOCALID_PLAYER, DIR_EAST
+ turnobject LOCALID_WALLYS_HOUSE_WALLYS_DAD, DIR_WEST
end
PetalburgCity_WallysHouse_OnFrame:
diff --git a/data/maps/PetalburgWoods/map.json b/data/maps/PetalburgWoods/map.json
index 9ef6c93ae6..3a68525fa7 100644
--- a/data/maps/PetalburgWoods/map.json
+++ b/data/maps/PetalburgWoods/map.json
@@ -41,6 +41,7 @@
"flag": "FLAG_TEMP_12"
},
{
+ "local_id": "LOCALID_PETALBURG_WOODS_GRUNT",
"graphics_id": "OBJ_EVENT_GFX_AQUA_MEMBER_M",
"x": 26,
"y": 17,
@@ -54,6 +55,7 @@
"flag": "FLAG_HIDE_PETALBURG_WOODS_AQUA_GRUNT"
},
{
+ "local_id": "LOCALID_PETALBURG_WOODS_DEVON_EMPLOYEE",
"graphics_id": "OBJ_EVENT_GFX_MAN_2",
"x": 26,
"y": 20,
diff --git a/data/maps/PetalburgWoods/scripts.inc b/data/maps/PetalburgWoods/scripts.inc
index 94bd390148..14cf1aabb4 100644
--- a/data/maps/PetalburgWoods/scripts.inc
+++ b/data/maps/PetalburgWoods/scripts.inc
@@ -1,40 +1,37 @@
-.set LOCALID_GRUNT, 3
-.set LOCALID_DEVON_EMPLOYEE, 4
-
PetalburgWoods_MapScripts::
.byte 0
PetalburgWoods_EventScript_DevonResearcherLeft::
lockall
call PetalburgWoods_EventScript_DevonResearcherIntro
- applymovement LOCALID_DEVON_EMPLOYEE, PetalburgWoods_Movement_DevonResearcherApproachPlayerLeft
+ applymovement LOCALID_PETALBURG_WOODS_DEVON_EMPLOYEE, PetalburgWoods_Movement_DevonResearcherApproachPlayerLeft
waitmovement 0
msgbox PetalburgWoods_Text_HaveYouSeenShroomish, MSGBOX_DEFAULT
closemessage
playbgm MUS_ENCOUNTER_AQUA, FALSE
- applymovement LOCALID_GRUNT, PetalburgWoods_Movement_AquaEntrance
+ applymovement LOCALID_PETALBURG_WOODS_GRUNT, PetalburgWoods_Movement_AquaEntrance
waitmovement 0
msgbox PetalburgWoods_Text_IWasGoingToAmbushYou, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_GRUNT, PetalburgWoods_Movement_AquaApproachResearcherLeft
+ applymovement LOCALID_PETALBURG_WOODS_GRUNT, PetalburgWoods_Movement_AquaApproachResearcherLeft
waitmovement 0
- applymovement LOCALID_DEVON_EMPLOYEE, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_PETALBURG_WOODS_DEVON_EMPLOYEE, Common_Movement_WalkInPlaceFasterUp
waitmovement 0
msgbox PetalburgWoods_Text_HandOverThosePapers, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_DEVON_EMPLOYEE, PetalburgWoods_Movement_DevonResearcherFleeToPlayerLeft
+ applymovement LOCALID_PETALBURG_WOODS_DEVON_EMPLOYEE, PetalburgWoods_Movement_DevonResearcherFleeToPlayerLeft
waitmovement 0
msgbox PetalburgWoods_Text_YouHaveToHelpMe, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_GRUNT, PetalburgWoods_Movement_AquaApproachPlayer
+ applymovement LOCALID_PETALBURG_WOODS_GRUNT, PetalburgWoods_Movement_AquaApproachPlayer
waitmovement 0
msgbox PetalburgWoods_Text_NoOneCrossesTeamAqua, MSGBOX_DEFAULT
trainerbattle_no_intro TRAINER_GRUNT_PETALBURG_WOODS, PetalburgWoods_Text_YoureKiddingMe
- applymovement LOCALID_GRUNT, PetalburgWoods_Movement_AquaBackOff
+ applymovement LOCALID_PETALBURG_WOODS_GRUNT, PetalburgWoods_Movement_AquaBackOff
waitmovement 0
call PetalburgWoods_EventScript_DevonResearcherPostBattle
- applymovement OBJ_EVENT_ID_PLAYER, PetalburgWoods_Movement_WatchResearcherLeave
- applymovement LOCALID_DEVON_EMPLOYEE, PetalburgWoods_Movement_DevonResearcherExitLeft
+ applymovement LOCALID_PLAYER, PetalburgWoods_Movement_WatchResearcherLeave
+ applymovement LOCALID_PETALBURG_WOODS_DEVON_EMPLOYEE, PetalburgWoods_Movement_DevonResearcherExitLeft
waitmovement 0
goto PetalburgWoods_EventScript_RemoveDevonResearcher
end
@@ -42,41 +39,41 @@ PetalburgWoods_EventScript_DevonResearcherLeft::
PetalburgWoods_EventScript_DevonResearcherRight::
lockall
call PetalburgWoods_EventScript_DevonResearcherIntro
- applymovement LOCALID_DEVON_EMPLOYEE, PetalburgWoods_Movement_DevonResearcherApproachPlayerRight
+ applymovement LOCALID_PETALBURG_WOODS_DEVON_EMPLOYEE, PetalburgWoods_Movement_DevonResearcherApproachPlayerRight
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
waitmovement 0
msgbox PetalburgWoods_Text_HaveYouSeenShroomish, MSGBOX_DEFAULT
closemessage
playbgm MUS_ENCOUNTER_AQUA, FALSE
- applymovement LOCALID_GRUNT, PetalburgWoods_Movement_AquaEntrance
+ applymovement LOCALID_PETALBURG_WOODS_GRUNT, PetalburgWoods_Movement_AquaEntrance
waitmovement 0
msgbox PetalburgWoods_Text_IWasGoingToAmbushYou, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_GRUNT, PetalburgWoods_Movement_AquaApproachResearcherRight
+ applymovement LOCALID_PETALBURG_WOODS_GRUNT, PetalburgWoods_Movement_AquaApproachResearcherRight
waitmovement 0
- applymovement LOCALID_DEVON_EMPLOYEE, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_PETALBURG_WOODS_DEVON_EMPLOYEE, Common_Movement_WalkInPlaceFasterUp
waitmovement 0
msgbox PetalburgWoods_Text_HandOverThosePapers, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_DEVON_EMPLOYEE, PetalburgWoods_Movement_DevonResearcherFleeToPlayerRight
+ applymovement LOCALID_PETALBURG_WOODS_DEVON_EMPLOYEE, PetalburgWoods_Movement_DevonResearcherFleeToPlayerRight
waitmovement 0
msgbox PetalburgWoods_Text_YouHaveToHelpMe, MSGBOX_DEFAULT
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterUp
waitmovement 0
msgbox PetalburgWoods_Text_NoOneCrossesTeamAqua, MSGBOX_DEFAULT
trainerbattle_no_intro TRAINER_GRUNT_PETALBURG_WOODS, PetalburgWoods_Text_YoureKiddingMe
- applymovement LOCALID_GRUNT, PetalburgWoods_Movement_AquaBackOff
+ applymovement LOCALID_PETALBURG_WOODS_GRUNT, PetalburgWoods_Movement_AquaBackOff
waitmovement 0
call PetalburgWoods_EventScript_DevonResearcherPostBattle
- applymovement OBJ_EVENT_ID_PLAYER, PetalburgWoods_Movement_WatchResearcherLeave
- applymovement LOCALID_DEVON_EMPLOYEE, PetalburgWoods_Movement_DevonResearcherExitRight
+ applymovement LOCALID_PLAYER, PetalburgWoods_Movement_WatchResearcherLeave
+ applymovement LOCALID_PETALBURG_WOODS_DEVON_EMPLOYEE, PetalburgWoods_Movement_DevonResearcherExitRight
waitmovement 0
goto PetalburgWoods_EventScript_RemoveDevonResearcher
end
PetalburgWoods_EventScript_DevonResearcherIntro::
- applymovement LOCALID_DEVON_EMPLOYEE, PetalburgWoods_Movement_DevonResearcherLookAround
+ applymovement LOCALID_PETALBURG_WOODS_DEVON_EMPLOYEE, PetalburgWoods_Movement_DevonResearcherLookAround
waitmovement 0
msgbox PetalburgWoods_Text_NotAOneToBeFound, MSGBOX_DEFAULT
closemessage
@@ -85,10 +82,10 @@ PetalburgWoods_EventScript_DevonResearcherIntro::
PetalburgWoods_EventScript_DevonResearcherPostBattle::
msgbox PetalburgWoods_Text_YouveGotSomeNerve, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_GRUNT, PetalburgWoods_Movement_AquaRunAway
+ applymovement LOCALID_PETALBURG_WOODS_GRUNT, PetalburgWoods_Movement_AquaRunAway
waitmovement 0
- removeobject LOCALID_GRUNT
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterDown
+ removeobject LOCALID_PETALBURG_WOODS_GRUNT
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterDown
waitmovement 0
msgbox PetalburgWoods_Text_ThatWasAwfullyClose, MSGBOX_DEFAULT
giveitem ITEM_GREAT_BALL
@@ -103,14 +100,14 @@ PetalburgWoods_EventScript_BagFull::
PetalburgWoods_EventScript_DevonResearcherFinish::
msgbox PetalburgWoods_Text_TeamAquaAfterSomethingInRustboro, MSGBOX_DEFAULT
- applymovement LOCALID_DEVON_EMPLOYEE, PetalburgWoods_Movement_DevonResearcherStartExit
+ applymovement LOCALID_PETALBURG_WOODS_DEVON_EMPLOYEE, PetalburgWoods_Movement_DevonResearcherStartExit
waitmovement 0
msgbox PetalburgWoods_Text_ICantBeWastingTime, MSGBOX_DEFAULT
closemessage
return
PetalburgWoods_EventScript_RemoveDevonResearcher::
- removeobject LOCALID_DEVON_EMPLOYEE
+ removeobject LOCALID_PETALBURG_WOODS_DEVON_EMPLOYEE
setvar VAR_PETALBURG_WOODS_STATE, 1
releaseall
end
diff --git a/data/maps/Route101/map.json b/data/maps/Route101/map.json
index 1abb23030b..d24d997151 100644
--- a/data/maps/Route101/map.json
+++ b/data/maps/Route101/map.json
@@ -39,6 +39,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_ROUTE101_BIRCH",
"graphics_id": "OBJ_EVENT_GFX_PROF_BIRCH",
"x": 9,
"y": 13,
@@ -65,6 +66,7 @@
"flag": "FLAG_HIDE_ROUTE_101_BIRCH_STARTERS_BAG"
},
{
+ "local_id": "LOCALID_ROUTE101_ZIGZAGOON",
"graphics_id": "OBJ_EVENT_GFX_ZIGZAGOON_1",
"x": 10,
"y": 13,
diff --git a/data/maps/Route101/scripts.inc b/data/maps/Route101/scripts.inc
index dd0ef5dcec..b02c69e279 100644
--- a/data/maps/Route101/scripts.inc
+++ b/data/maps/Route101/scripts.inc
@@ -1,6 +1,3 @@
-.set LOCALID_BIRCH, 2
-.set LOCALID_ZIGZAGOON, 4
-
Route101_MapScripts::
map_script MAP_SCRIPT_ON_TRANSITION, Route101_OnTransition
map_script MAP_SCRIPT_ON_FRAME_TABLE, Route101_OnFrame
@@ -24,19 +21,19 @@ Route101_EventScript_StartBirchRescue::
playbgm MUS_HELP, TRUE
msgbox Route101_Text_HelpMe, MSGBOX_DEFAULT
closemessage
- setobjectxy LOCALID_BIRCH, 0, 15
- setobjectxy LOCALID_ZIGZAGOON, 0, 16
- applymovement OBJ_EVENT_ID_PLAYER, Route101_Movement_EnterScene
- applymovement LOCALID_BIRCH, Route101_Movement_BirchRunAway1
- applymovement LOCALID_ZIGZAGOON, Route101_Movement_ZigzagoonChase1
+ setobjectxy LOCALID_ROUTE101_BIRCH, 0, 15
+ setobjectxy LOCALID_ROUTE101_ZIGZAGOON, 0, 16
+ applymovement LOCALID_PLAYER, Route101_Movement_EnterScene
+ applymovement LOCALID_ROUTE101_BIRCH, Route101_Movement_BirchRunAway1
+ applymovement LOCALID_ROUTE101_ZIGZAGOON, Route101_Movement_ZigzagoonChase1
waitmovement 0
- applymovement LOCALID_ZIGZAGOON, Route101_Movement_ZigzagoonChaseInCircles
- applymovement LOCALID_BIRCH, Route101_Movement_BirchRunInCircles
+ applymovement LOCALID_ROUTE101_ZIGZAGOON, Route101_Movement_ZigzagoonChaseInCircles
+ applymovement LOCALID_ROUTE101_BIRCH, Route101_Movement_BirchRunInCircles
waitmovement 0
- applymovement LOCALID_BIRCH, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_ROUTE101_BIRCH, Common_Movement_WalkInPlaceFasterRight
waitmovement 0
- applymovement LOCALID_ZIGZAGOON, Route101_Movement_ZigzagoonFaceBirch
- applymovement LOCALID_BIRCH, Route101_Movement_BirchFaceZigzagoon
+ applymovement LOCALID_ROUTE101_ZIGZAGOON, Route101_Movement_ZigzagoonFaceBirch
+ applymovement LOCALID_ROUTE101_BIRCH, Route101_Movement_BirchFaceZigzagoon
waitmovement 0
msgbox Route101_Text_PleaseHelp, MSGBOX_DEFAULT
closemessage
@@ -48,7 +45,7 @@ Route101_EventScript_PreventExitSouth::
lockall
msgbox Route101_Text_DontLeaveMe, MSGBOX_DEFAULT
closemessage
- applymovement OBJ_EVENT_ID_PLAYER, Route101_Movement_PreventExitSouth
+ applymovement LOCALID_PLAYER, Route101_Movement_PreventExitSouth
waitmovement 0
releaseall
end
@@ -57,7 +54,7 @@ Route101_EventScript_PreventExitWest::
lockall
msgbox Route101_Text_DontLeaveMe, MSGBOX_DEFAULT
closemessage
- applymovement OBJ_EVENT_ID_PLAYER, Route101_Movement_PreventExitWest
+ applymovement LOCALID_PLAYER, Route101_Movement_PreventExitWest
waitmovement 0
releaseall
end
@@ -66,7 +63,7 @@ Route101_EventScript_PreventExitNorth::
lockall
msgbox Route101_Text_DontLeaveMe, MSGBOX_DEFAULT
closemessage
- applymovement OBJ_EVENT_ID_PLAYER, Route101_Movement_PreventExitNorth
+ applymovement LOCALID_PLAYER, Route101_Movement_PreventExitNorth
waitmovement 0
releaseall
end
@@ -224,13 +221,13 @@ Route101_EventScript_BirchsBag::
setflag FLAG_SYS_POKEMON_GET
setflag FLAG_RESCUED_BIRCH
fadescreen FADE_TO_BLACK
- removeobject LOCALID_ZIGZAGOON
- setobjectxy OBJ_EVENT_ID_PLAYER, 6, 13
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
+ removeobject LOCALID_ROUTE101_ZIGZAGOON
+ setobjectxy LOCALID_PLAYER, 6, 13
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
waitmovement 0
special ChooseStarter
waitstate
- applymovement LOCALID_BIRCH, Route101_Movement_BirchApproachPlayer
+ applymovement LOCALID_ROUTE101_BIRCH, Route101_Movement_BirchApproachPlayer
waitmovement 0
msgbox Route101_Text_YouSavedMe, MSGBOX_DEFAULT
special HealPlayerParty
diff --git a/data/maps/Route103/map.json b/data/maps/Route103/map.json
index 45c8fb8742..05b15d7043 100644
--- a/data/maps/Route103/map.json
+++ b/data/maps/Route103/map.json
@@ -39,6 +39,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_ROUTE103_RIVAL",
"graphics_id": "OBJ_EVENT_GFX_VAR_0",
"x": 10,
"y": 3,
diff --git a/data/maps/Route103/scripts.inc b/data/maps/Route103/scripts.inc
index 557db64e29..941d464c37 100644
--- a/data/maps/Route103/scripts.inc
+++ b/data/maps/Route103/scripts.inc
@@ -1,5 +1,3 @@
-.set LOCALID_RIVAL, 2
-
Route103_MapScripts::
map_script MAP_SCRIPT_ON_TRANSITION, Route103_OnTransition
map_script MAP_SCRIPT_ON_LOAD, Route103_OnLoad
@@ -30,11 +28,11 @@ Route103_EventScript_RivalMay::
msgbox Route103_Text_MayRoute103Pokemon, MSGBOX_DEFAULT
closemessage
playbgm MUS_ENCOUNTER_MAY, TRUE
- applymovement LOCALID_RIVAL, Common_Movement_FacePlayer
+ applymovement LOCALID_ROUTE103_RIVAL, Common_Movement_FacePlayer
waitmovement 0
- applymovement LOCALID_RIVAL, Common_Movement_ExclamationMark
+ applymovement LOCALID_ROUTE103_RIVAL, Common_Movement_ExclamationMark
waitmovement 0
- applymovement LOCALID_RIVAL, Common_Movement_Delay48
+ applymovement LOCALID_ROUTE103_RIVAL, Common_Movement_Delay48
waitmovement 0
msgbox Route103_Text_MayLetsBattle, MSGBOX_DEFAULT
switch VAR_STARTER_MON
@@ -47,11 +45,11 @@ Route103_EventScript_RivalBrendan::
msgbox Route103_Text_BrendanRoute103Pokemon, MSGBOX_DEFAULT
closemessage
playbgm MUS_ENCOUNTER_BRENDAN, TRUE
- applymovement LOCALID_RIVAL, Common_Movement_FacePlayer
+ applymovement LOCALID_ROUTE103_RIVAL, Common_Movement_FacePlayer
waitmovement 0
- applymovement LOCALID_RIVAL, Common_Movement_ExclamationMark
+ applymovement LOCALID_ROUTE103_RIVAL, Common_Movement_ExclamationMark
waitmovement 0
- applymovement LOCALID_RIVAL, Common_Movement_Delay48
+ applymovement LOCALID_ROUTE103_RIVAL, Common_Movement_Delay48
waitmovement 0
msgbox Route103_Text_BrendanLetsBattle, MSGBOX_DEFAULT
switch VAR_STARTER_MON
@@ -110,36 +108,36 @@ Route103_EventScript_RivalExit::
end
Route103_EventScript_RivalExitFacingNorth::
- applymovement OBJ_EVENT_ID_PLAYER, Route103_Movement_WatchRivalExitFacingNorth
- applymovement LOCALID_RIVAL, Route103_Movement_RivalExitFacingNorth1
+ applymovement LOCALID_PLAYER, Route103_Movement_WatchRivalExitFacingNorth
+ applymovement LOCALID_ROUTE103_RIVAL, Route103_Movement_RivalExitFacingNorth1
waitmovement 0
playse SE_LEDGE
- applymovement LOCALID_RIVAL, Route103_Movement_RivalExitFacingNorth2
+ applymovement LOCALID_ROUTE103_RIVAL, Route103_Movement_RivalExitFacingNorth2
waitmovement 0
goto Route103_EventScript_RivalEnd
end
Route103_EventScript_RivalExitFacingEastOrWest::
- applymovement OBJ_EVENT_ID_PLAYER, Route103_Movement_WatchRivalExitFacingEastOrWest
- applymovement LOCALID_RIVAL, Route103_Movement_RivalExit1
+ applymovement LOCALID_PLAYER, Route103_Movement_WatchRivalExitFacingEastOrWest
+ applymovement LOCALID_ROUTE103_RIVAL, Route103_Movement_RivalExit1
waitmovement 0
playse SE_LEDGE
- applymovement LOCALID_RIVAL, Route103_Movement_RivalExit2
+ applymovement LOCALID_ROUTE103_RIVAL, Route103_Movement_RivalExit2
waitmovement 0
goto Route103_EventScript_RivalEnd
end
Route103_EventScript_RivalExitFacingSouth::
- applymovement LOCALID_RIVAL, Route103_Movement_RivalExit1
+ applymovement LOCALID_ROUTE103_RIVAL, Route103_Movement_RivalExit1
waitmovement 0
playse SE_LEDGE
- applymovement LOCALID_RIVAL, Route103_Movement_RivalExit2
+ applymovement LOCALID_ROUTE103_RIVAL, Route103_Movement_RivalExit2
waitmovement 0
goto Route103_EventScript_RivalEnd
end
Route103_EventScript_RivalEnd::
- removeobject LOCALID_RIVAL
+ removeobject LOCALID_ROUTE103_RIVAL
setvar VAR_BIRCH_LAB_STATE, 4
clearflag FLAG_HIDE_LITTLEROOT_TOWN_BIRCHS_LAB_RIVAL
setflag FLAG_DEFEATED_RIVAL_ROUTE103
diff --git a/data/maps/Route104/map.json b/data/maps/Route104/map.json
index 5ae19796a7..306e7eabfc 100644
--- a/data/maps/Route104/map.json
+++ b/data/maps/Route104/map.json
@@ -109,6 +109,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_ROUTE104_BOAT",
"graphics_id": "OBJ_EVENT_GFX_MR_BRINEYS_BOAT",
"x": 12,
"y": 54,
@@ -122,6 +123,7 @@
"flag": "FLAG_HIDE_ROUTE_104_MR_BRINEY_BOAT"
},
{
+ "local_id": "LOCALID_ROUTE104_BRINEY",
"graphics_id": "OBJ_EVENT_GFX_EXPERT_M",
"x": 12,
"y": 51,
@@ -460,6 +462,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_ROUTE104_RIVAL",
"graphics_id": "OBJ_EVENT_GFX_VAR_0",
"x": 17,
"y": 50,
diff --git a/data/maps/Route104/scripts.inc b/data/maps/Route104/scripts.inc
index dfb7675e90..e2c66a837c 100644
--- a/data/maps/Route104/scripts.inc
+++ b/data/maps/Route104/scripts.inc
@@ -1,7 +1,3 @@
-@ NOTE: Route 104's sail to Dewford script references local IDs from Dewford's map.
-@ These are labeled in DewfordTown/scripts.inc
-.set LOCALID_RIVAL, 34
-
Route104_MapScripts::
map_script MAP_SCRIPT_ON_FRAME_TABLE, Route104_OnFrame
map_script MAP_SCRIPT_ON_TRANSITION, Route104_OnTransition
@@ -36,7 +32,7 @@ Route104_EventScript_TrySetRivalPos::
goto_if_ge VAR_BOARD_BRINEY_BOAT_STATE, 1, Route104_EventScript_DontSetRivalPos
goto_if_set FLAG_MET_RIVAL_RUSTBORO, Route104_EventScript_DontSetRivalPos
goto_if_unset FLAG_REGISTER_RIVAL_POKENAV, Route104_EventScript_DontSetRivalPos
- setobjectxyperm LOCALID_RIVAL, 17, 52
+ setobjectxyperm LOCALID_ROUTE104_RIVAL, 17, 52
return
Route104_EventScript_DontSetRivalPos::
@@ -45,7 +41,7 @@ Route104_EventScript_DontSetRivalPos::
Route104_EventScript_Rival::
lockall
setvar VAR_0x8008, 1
- applymovement LOCALID_RIVAL, Common_Movement_FacePlayer
+ applymovement LOCALID_ROUTE104_RIVAL, Common_Movement_FacePlayer
waitmovement 0
goto Route104_EventScript_RivalEncounter
@@ -54,22 +50,22 @@ Route104_EventScript_RivalTrigger::
setflag FLAG_HIDE_RUSTBORO_CITY_RIVAL
setvar VAR_RUSTBORO_CITY_STATE, 8
setvar VAR_ROUTE104_STATE, 2
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterUp
waitmovement 0
delay 10
- addobject LOCALID_RIVAL
+ addobject LOCALID_ROUTE104_RIVAL
clearflag FLAG_HIDE_ROUTE_104_RIVAL
- applymovement OBJ_EVENT_ID_PLAYER, Route104_Movement_PlayerBackUp
+ applymovement LOCALID_PLAYER, Route104_Movement_PlayerBackUp
waitmovement 0
- applymovement LOCALID_RIVAL, Route104_Movement_RivalExitBrineysCottage
+ applymovement LOCALID_ROUTE104_RIVAL, Route104_Movement_RivalExitBrineysCottage
waitmovement 0
delay 20
setvar VAR_0x8008, 0
call RustboroCity_EventScript_PlayRivalMusic
playse SE_PIN
- applymovement LOCALID_RIVAL, Common_Movement_ExclamationMark
+ applymovement LOCALID_ROUTE104_RIVAL, Common_Movement_ExclamationMark
waitmovement 0
- applymovement LOCALID_RIVAL, Common_Movement_Delay48
+ applymovement LOCALID_ROUTE104_RIVAL, Common_Movement_Delay48
waitmovement 0
goto Route104_EventScript_RivalEncounter
@@ -107,14 +103,14 @@ Route104_EventScript_MayEncounter::
closemessage
delay 30
setflag FLAG_ENABLE_RIVAL_MATCH_CALL
- applymovement OBJ_EVENT_ID_PLAYER, Route104_Movement_PlayerFaceRival
- applymovement LOCALID_RIVAL, Route104_Movement_RivalWalkSlowLeft
+ applymovement LOCALID_PLAYER, Route104_Movement_PlayerFaceRival
+ applymovement LOCALID_ROUTE104_RIVAL, Route104_Movement_RivalWalkSlowLeft
msgbox Route104_Text_MayHowsYourPokedex, MSGBOX_DEFAULT
closemessage
waitmovement 0
- applymovement LOCALID_RIVAL, Route104_Movement_RivalApproachPlayer
+ applymovement LOCALID_ROUTE104_RIVAL, Route104_Movement_RivalApproachPlayer
waitmovement 0
- copyobjectxytoperm LOCALID_RIVAL
+ copyobjectxytoperm LOCALID_ROUTE104_RIVAL
msgbox Route104_Text_MayMinesDecentLetsBattle, MSGBOX_YESNO
goto_if_eq VAR_RESULT, YES, Route104_EventScript_BattleMay
msgbox Route104_Text_MayHaventRaisedPokemon, MSGBOX_DEFAULT
@@ -193,14 +189,14 @@ Route104_EventScript_BrendanEncounter::
closemessage
delay 30
setflag FLAG_ENABLE_RIVAL_MATCH_CALL
- applymovement OBJ_EVENT_ID_PLAYER, Route104_Movement_PlayerFaceRival
- applymovement LOCALID_RIVAL, Route104_Movement_RivalWalkSlowLeft
+ applymovement LOCALID_PLAYER, Route104_Movement_PlayerFaceRival
+ applymovement LOCALID_ROUTE104_RIVAL, Route104_Movement_RivalWalkSlowLeft
msgbox Route104_Text_BrendanHowsYourPokedex, MSGBOX_DEFAULT
closemessage
waitmovement 0
- applymovement LOCALID_RIVAL, Route104_Movement_RivalApproachPlayer
+ applymovement LOCALID_ROUTE104_RIVAL, Route104_Movement_RivalApproachPlayer
waitmovement 0
- copyobjectxytoperm LOCALID_RIVAL
+ copyobjectxytoperm LOCALID_ROUTE104_RIVAL
msgbox Route104_Text_BrendanDoingGreatLetsBattle, MSGBOX_YESNO
goto_if_eq VAR_RESULT, YES, Route104_EventScript_BattleBrendan
msgbox Route104_Text_BrendanNoConfidence, MSGBOX_DEFAULT
@@ -347,28 +343,28 @@ Route104_EventScript_Girl2::
end
Route104_EventScript_SailToDewford::
- setobjectsubpriority LOCALID_BRINEY_R104, MAP_ROUTE104, 0
- setobjectsubpriority OBJ_EVENT_ID_PLAYER, MAP_ROUTE104, 0
- applymovement LOCALID_BRINEY_R104, Route104_Movement_BrineyBoardBoat
+ setobjectsubpriority LOCALID_ROUTE104_BRINEY, MAP_ROUTE104, 0
+ setobjectsubpriority LOCALID_PLAYER, MAP_ROUTE104, 0
+ applymovement LOCALID_ROUTE104_BRINEY, Route104_Movement_BrineyBoardBoat
waitmovement 0
- removeobject LOCALID_BRINEY_R104
- applymovement OBJ_EVENT_ID_PLAYER, Route104_Movement_PlayerBoardBoat
+ removeobject LOCALID_ROUTE104_BRINEY
+ applymovement LOCALID_PLAYER, Route104_Movement_PlayerBoardBoat
waitmovement 0
- hideobjectat OBJ_EVENT_ID_PLAYER, MAP_ROUTE104
+ hideobjectat LOCALID_PLAYER, MAP_ROUTE104
call Common_EventScript_PlayBrineysBoatMusic
goto_if_set FLAG_ENABLE_NORMAN_MATCH_CALL, Route104_EventScript_SailToDewfordNoCall
goto_if_unset FLAG_ENABLE_NORMAN_MATCH_CALL, Route104_EventScript_SailToDewfordDadCalls
end
Route104_EventScript_SailToDewfordNoCall::
- applymovement LOCALID_BOAT_R104, Route104_Movement_SailToDewford
- applymovement OBJ_EVENT_ID_PLAYER, Route104_Movement_SailToDewford
+ applymovement LOCALID_ROUTE104_BOAT, Route104_Movement_SailToDewford
+ applymovement LOCALID_PLAYER, Route104_Movement_SailToDewford
waitmovement 0
goto Route104_EventScript_ArriveInDewford
Route104_EventScript_SailToDewfordDadCalls::
- applymovement LOCALID_BOAT_R104, Route104_Movement_SailToDewfordBeforeDadCalls
- applymovement OBJ_EVENT_ID_PLAYER, Route104_Movement_SailToDewfordBeforeDadCalls
+ applymovement LOCALID_ROUTE104_BOAT, Route104_Movement_SailToDewfordBeforeDadCalls
+ applymovement LOCALID_PLAYER, Route104_Movement_SailToDewfordBeforeDadCalls
waitmovement 0
pokenavcall Route104_Text_DadPokenavCall
waitmessage
@@ -379,35 +375,35 @@ Route104_EventScript_SailToDewfordDadCalls::
closemessage
delay 30
setflag FLAG_ENABLE_NORMAN_MATCH_CALL
- applymovement OBJ_EVENT_ID_PLAYER, Route104_Movement_SailToDewfordAfterDadCalls
- applymovement LOCALID_BOAT_R104, Route104_Movement_SailToDewfordAfterDadCalls, MAP_ROUTE104
- waitmovement LOCALID_BOAT_R104, MAP_ROUTE104
+ applymovement LOCALID_PLAYER, Route104_Movement_SailToDewfordAfterDadCalls
+ applymovement LOCALID_ROUTE104_BOAT, Route104_Movement_SailToDewfordAfterDadCalls, MAP_ROUTE104
+ waitmovement LOCALID_ROUTE104_BOAT, MAP_ROUTE104
waitmovement 0
goto Route104_EventScript_ArriveInDewford
Route104_EventScript_ArriveInDewford::
delay 50
- applymovement OBJ_EVENT_ID_PLAYER, Route104_Movement_PlayerExitBoat
+ applymovement LOCALID_PLAYER, Route104_Movement_PlayerExitBoat
waitmovement 0
call Common_EventScript_StopBrineysBoatMusic
- showobjectat OBJ_EVENT_ID_PLAYER, MAP_DEWFORD_TOWN
- applymovement OBJ_EVENT_ID_PLAYER, Route104_Movement_PlayerMoveForBriney
+ showobjectat LOCALID_PLAYER, MAP_DEWFORD_TOWN
+ applymovement LOCALID_PLAYER, Route104_Movement_PlayerMoveForBriney
waitmovement 0
- setobjectxyperm LOCALID_BRINEY_DEWFORD, 12, 8
- addobject LOCALID_BRINEY_DEWFORD
- setobjectsubpriority LOCALID_BRINEY_DEWFORD, MAP_DEWFORD_TOWN, 0
+ setobjectxyperm LOCALID_DEWFORD_BRINEY, 12, 8
+ addobject LOCALID_DEWFORD_BRINEY
+ setobjectsubpriority LOCALID_DEWFORD_BRINEY, MAP_DEWFORD_TOWN, 0
clearflag FLAG_HIDE_MR_BRINEY_DEWFORD_TOWN
- applymovement LOCALID_BRINEY_DEWFORD, Route104_Movement_BrineyExitBoat
+ applymovement LOCALID_DEWFORD_BRINEY, Route104_Movement_BrineyExitBoat
waitmovement 0
- addobject LOCALID_BOAT_DEWFORD
+ addobject LOCALID_DEWFORD_BOAT
clearflag FLAG_HIDE_MR_BRINEY_BOAT_DEWFORD_TOWN
call Common_EventScript_StopBrineysBoatMusic
setflag FLAG_HIDE_ROUTE_104_MR_BRINEY_BOAT
- hideobjectat LOCALID_BOAT_R104, MAP_ROUTE104
+ hideobjectat LOCALID_ROUTE104_BOAT, MAP_ROUTE104
copyvar VAR_BRINEY_LOCATION, VAR_0x8008
- resetobjectsubpriority OBJ_EVENT_ID_PLAYER, MAP_ROUTE104
- resetobjectsubpriority LOCALID_BRINEY_DEWFORD, MAP_DEWFORD_TOWN
- copyobjectxytoperm LOCALID_BRINEY_DEWFORD
+ resetobjectsubpriority LOCALID_PLAYER, MAP_ROUTE104
+ resetobjectsubpriority LOCALID_DEWFORD_BRINEY, MAP_DEWFORD_TOWN
+ copyobjectxytoperm LOCALID_DEWFORD_BRINEY
setvar VAR_BOARD_BRINEY_BOAT_STATE, 0
goto_if_unset FLAG_DELIVERED_STEVEN_LETTER, Route104_EventScript_DeliverLetterReminder
goto_if_set FLAG_DELIVERED_STEVEN_LETTER, Route104_EventScript_LandedInDewford
diff --git a/data/maps/Route104_MrBrineysHouse/map.json b/data/maps/Route104_MrBrineysHouse/map.json
index 6424965291..91420bd746 100644
--- a/data/maps/Route104_MrBrineysHouse/map.json
+++ b/data/maps/Route104_MrBrineysHouse/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_BRINEYS_HOUSE_BRINEY",
"graphics_id": "OBJ_EVENT_GFX_EXPERT_M",
"x": 5,
"y": 3,
@@ -28,6 +29,7 @@
"flag": "FLAG_HIDE_BRINEYS_HOUSE_MR_BRINEY"
},
{
+ "local_id": "LOCALID_BRINEYS_HOUSE_PEEKO",
"graphics_id": "OBJ_EVENT_GFX_WINGULL",
"x": 6,
"y": 3,
diff --git a/data/maps/Route104_MrBrineysHouse/scripts.inc b/data/maps/Route104_MrBrineysHouse/scripts.inc
index 4c693cb4fa..bce0895919 100644
--- a/data/maps/Route104_MrBrineysHouse/scripts.inc
+++ b/data/maps/Route104_MrBrineysHouse/scripts.inc
@@ -1,6 +1,3 @@
-.set LOCALID_BRINEY, 1
-.set LOCALID_PEEKO, 2
-
Route104_MrBrineysHouse_MapScripts::
map_script MAP_SCRIPT_ON_TRANSITION, Route104_MrBrineysHouse_OnTransition
.byte 0
@@ -16,10 +13,10 @@ Route104_MrBrineysHouse_EventScript_HideRustboroRival::
return
Route104_MrBrineysHouse_EventScript_SetBrineyPeekoPos::
- setobjectxyperm LOCALID_BRINEY, 9, 3
- setobjectmovementtype LOCALID_BRINEY, MOVEMENT_TYPE_WALK_SEQUENCE_DOWN_LEFT_UP_RIGHT
- setobjectxyperm LOCALID_PEEKO, 9, 6
- setobjectmovementtype LOCALID_PEEKO, MOVEMENT_TYPE_WALK_SEQUENCE_LEFT_UP_RIGHT_DOWN
+ setobjectxyperm LOCALID_BRINEYS_HOUSE_BRINEY, 9, 3
+ setobjectmovementtype LOCALID_BRINEYS_HOUSE_BRINEY, MOVEMENT_TYPE_WALK_SEQUENCE_DOWN_LEFT_UP_RIGHT
+ setobjectxyperm LOCALID_BRINEYS_HOUSE_PEEKO, 9, 6
+ setobjectmovementtype LOCALID_BRINEYS_HOUSE_PEEKO, MOVEMENT_TYPE_WALK_SEQUENCE_LEFT_UP_RIGHT_DOWN
return
Route104_MrBrineysHouse_EventScript_Briney::
diff --git a/data/maps/Route104_PrettyPetalFlowerShop/map.json b/data/maps/Route104_PrettyPetalFlowerShop/map.json
index 27e18ddc71..9f81453c60 100644
--- a/data/maps/Route104_PrettyPetalFlowerShop/map.json
+++ b/data/maps/Route104_PrettyPetalFlowerShop/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_FLOWER_SHOP_OWNER",
"graphics_id": "OBJ_EVENT_GFX_WOMAN_2",
"x": 0,
"y": 3,
diff --git a/data/maps/Route104_PrettyPetalFlowerShop/scripts.inc b/data/maps/Route104_PrettyPetalFlowerShop/scripts.inc
index fec03cc681..7486b11093 100644
--- a/data/maps/Route104_PrettyPetalFlowerShop/scripts.inc
+++ b/data/maps/Route104_PrettyPetalFlowerShop/scripts.inc
@@ -1,5 +1,3 @@
-.set LOCALID_OWNER, 1
-
Route104_PrettyPetalFlowerShop_MapScripts::
map_script MAP_SCRIPT_ON_TRANSITION, Route104_PrettyPetalFlowerShop_OnTransition
.byte 0
@@ -12,7 +10,7 @@ Route104_PrettyPetalFlowerShop_OnTransition:
end
Route104_PrettyPetalFlowerShop_EventScript_MoveShopOwner::
- setobjectxyperm LOCALID_OWNER, 4, 6
+ setobjectxyperm LOCALID_FLOWER_SHOP_OWNER, 4, 6
end
Route104_PrettyPetalFlowerShop_EventScript_ShopOwner::
diff --git a/data/maps/Route109/map.json b/data/maps/Route109/map.json
index 72d9f5c0af..c2629a2bc3 100644
--- a/data/maps/Route109/map.json
+++ b/data/maps/Route109/map.json
@@ -26,6 +26,7 @@
],
"object_events": [
{
+ "local_id": "LOCALID_ROUTE109_BOAT",
"graphics_id": "OBJ_EVENT_GFX_MR_BRINEYS_BOAT",
"x": 21,
"y": 26,
@@ -39,6 +40,7 @@
"flag": "FLAG_HIDE_ROUTE_109_MR_BRINEY_BOAT"
},
{
+ "local_id": "LOCALID_ROUTE109_BRINEY",
"graphics_id": "OBJ_EVENT_GFX_EXPERT_M",
"x": 21,
"y": 24,
diff --git a/data/maps/Route109/scripts.inc b/data/maps/Route109/scripts.inc
index f0353fef4d..88b802a8e7 100644
--- a/data/maps/Route109/scripts.inc
+++ b/data/maps/Route109/scripts.inc
@@ -6,11 +6,11 @@ Route109_MapScripts::
Route109_EventScript_StartDepartForDewford::
call EventScript_BackupMrBrineyLocation
- setobjectsubpriority LOCALID_BRINEY_R109, MAP_ROUTE109, 0
- setobjectsubpriority OBJ_EVENT_ID_PLAYER, MAP_ROUTE109, 0
- applymovement LOCALID_BRINEY_R109, Route109_Movement_BrineyEnterBoat
+ setobjectsubpriority LOCALID_ROUTE109_BRINEY, MAP_ROUTE109, 0
+ setobjectsubpriority LOCALID_PLAYER, MAP_ROUTE109, 0
+ applymovement LOCALID_ROUTE109_BRINEY, Route109_Movement_BrineyEnterBoat
waitmovement 0
- removeobject LOCALID_BRINEY_R109
+ removeobject LOCALID_ROUTE109_BRINEY
switch VAR_FACING
case DIR_SOUTH, Route109_EventScript_EnterBoatSouth
case DIR_WEST, Route109_EventScript_EnterBoatWest
@@ -18,50 +18,50 @@ Route109_EventScript_StartDepartForDewford::
end
Route109_EventScript_EnterBoatSouth::
- applymovement OBJ_EVENT_ID_PLAYER, Route109_Movement_PlayerEnterBoatSouth
+ applymovement LOCALID_PLAYER, Route109_Movement_PlayerEnterBoatSouth
waitmovement 0
goto Route109_EventScript_DoSailToDewford
end
Route109_EventScript_EnterBoatEast::
- applymovement OBJ_EVENT_ID_PLAYER, Route109_Movement_PlayerEnterBoatEast
+ applymovement LOCALID_PLAYER, Route109_Movement_PlayerEnterBoatEast
waitmovement 0
goto Route109_EventScript_DoSailToDewford
end
Route109_EventScript_EnterBoatWest::
- applymovement OBJ_EVENT_ID_PLAYER, Route109_Movement_PlayerEnterBoatWest
+ applymovement LOCALID_PLAYER, Route109_Movement_PlayerEnterBoatWest
waitmovement 0
goto Route109_EventScript_DoSailToDewford
end
Route109_EventScript_DoSailToDewford::
- hideobjectat OBJ_EVENT_ID_PLAYER, MAP_ROUTE109
+ hideobjectat LOCALID_PLAYER, MAP_ROUTE109
call Common_EventScript_PlayBrineysBoatMusic
- applymovement LOCALID_BOAT_R109, Route109_Movement_SailToDewford
- applymovement OBJ_EVENT_ID_PLAYER, Route109_Movement_SailToDewford
+ applymovement LOCALID_ROUTE109_BOAT, Route109_Movement_SailToDewford
+ applymovement LOCALID_PLAYER, Route109_Movement_SailToDewford
waitmovement 0
delay 50
call Common_EventScript_StopBrineysBoatMusic
- showobjectat OBJ_EVENT_ID_PLAYER, MAP_DEWFORD_TOWN
- applymovement OBJ_EVENT_ID_PLAYER, Route109_Movement_PlayerExitBoat
+ showobjectat LOCALID_PLAYER, MAP_DEWFORD_TOWN
+ applymovement LOCALID_PLAYER, Route109_Movement_PlayerExitBoat
waitmovement 0
- addobject LOCALID_BOAT_DEWFORD
+ addobject LOCALID_DEWFORD_BOAT
clearflag FLAG_HIDE_MR_BRINEY_BOAT_DEWFORD_TOWN
- setobjectxyperm LOCALID_BRINEY_DEWFORD, 12, 8
- addobject LOCALID_BRINEY_DEWFORD
- setobjectsubpriority LOCALID_BRINEY_DEWFORD, MAP_DEWFORD_TOWN, 0
- applymovement LOCALID_BRINEY_DEWFORD, Route109_Movement_BrineyExitBoat
+ setobjectxyperm LOCALID_DEWFORD_BRINEY, 12, 8
+ addobject LOCALID_DEWFORD_BRINEY
+ setobjectsubpriority LOCALID_DEWFORD_BRINEY, MAP_DEWFORD_TOWN, 0
+ applymovement LOCALID_DEWFORD_BRINEY, Route109_Movement_BrineyExitBoat
waitmovement 0
clearflag FLAG_HIDE_MR_BRINEY_DEWFORD_TOWN
setflag FLAG_HIDE_ROUTE_109_MR_BRINEY_BOAT
- hideobjectat LOCALID_BOAT_R109, MAP_ROUTE109
+ hideobjectat LOCALID_ROUTE109_BOAT, MAP_ROUTE109
msgbox DewfordTown_Text_BrineyLandedInDewford, MSGBOX_DEFAULT
closemessage
copyvar VAR_BRINEY_LOCATION, VAR_0x8008
- resetobjectsubpriority OBJ_EVENT_ID_PLAYER, MAP_ROUTE109
- resetobjectsubpriority LOCALID_BRINEY_DEWFORD, MAP_DEWFORD_TOWN
- copyobjectxytoperm LOCALID_BRINEY_DEWFORD
+ resetobjectsubpriority LOCALID_PLAYER, MAP_ROUTE109
+ resetobjectsubpriority LOCALID_DEWFORD_BRINEY, MAP_DEWFORD_TOWN
+ copyobjectxytoperm LOCALID_DEWFORD_BRINEY
release
end
diff --git a/data/maps/Route110/map.json b/data/maps/Route110/map.json
index 5db6ad5d2f..14a9c4e1d6 100644
--- a/data/maps/Route110/map.json
+++ b/data/maps/Route110/map.json
@@ -291,6 +291,7 @@
"flag": "FLAG_ITEM_ROUTE_110_RARE_CANDY"
},
{
+ "local_id": "LOCALID_CHALLENGE_BIKER",
"graphics_id": "OBJ_EVENT_GFX_CYCLING_TRIATHLETE_M",
"x": 27,
"y": 92,
@@ -382,6 +383,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_ROUTE110_RIVAL",
"graphics_id": "OBJ_EVENT_GFX_VAR_0",
"x": 34,
"y": 54,
@@ -395,6 +397,7 @@
"flag": "FLAG_HIDE_ROUTE_110_RIVAL"
},
{
+ "local_id": "LOCALID_ROUTE110_RIVAL_ON_BIKE",
"graphics_id": "OBJ_EVENT_GFX_VAR_3",
"x": 34,
"y": 54,
@@ -486,6 +489,7 @@
"flag": "FLAG_ITEM_ROUTE_110_ELIXIR"
},
{
+ "local_id": "LOCALID_ROUTE110_BIRCH",
"graphics_id": "OBJ_EVENT_GFX_PROF_BIRCH",
"x": 9,
"y": 79,
diff --git a/data/maps/Route110/scripts.inc b/data/maps/Route110/scripts.inc
index 8447604aca..ac47cae922 100644
--- a/data/maps/Route110/scripts.inc
+++ b/data/maps/Route110/scripts.inc
@@ -1,8 +1,3 @@
-.set LOCALID_CHALLENGE_BIKER, 21
-.set LOCALID_RIVAL, 28
-.set LOCALID_RIVAL_ON_BIKE, 29
-.set LOCALID_BIRCH, 36
-
Route110_MapScripts::
map_script MAP_SCRIPT_ON_RESUME, Route110_OnResume
map_script MAP_SCRIPT_ON_TRANSITION, Route110_OnTransition
@@ -378,11 +373,11 @@ Route110_EventScript_RivalScene::
checkplayergender
call_if_eq VAR_RESULT, MALE, Route110_EventScript_PlayMayMusic
call_if_eq VAR_RESULT, FEMALE, Route110_EventScript_PlayBrendanMusic
- applymovement LOCALID_RIVAL, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_ROUTE110_RIVAL, Common_Movement_WalkInPlaceFasterDown
waitmovement 0
- applymovement LOCALID_RIVAL, Common_Movement_ExclamationMark
+ applymovement LOCALID_ROUTE110_RIVAL, Common_Movement_ExclamationMark
waitmovement 0
- applymovement LOCALID_RIVAL, Common_Movement_Delay48
+ applymovement LOCALID_ROUTE110_RIVAL, Common_Movement_Delay48
waitmovement 0
delay 30
call_if_eq VAR_0x8008, 1, Route110_EventScript_RivalApproachPlayer1
@@ -471,15 +466,15 @@ Route110_EventScript_RivalExit::
call_if_eq VAR_0x8008, 1, Route110_EventScript_MoveRival1
call_if_eq VAR_0x8008, 2, Route110_EventScript_MoveRival2
call_if_eq VAR_0x8008, 3, Route110_EventScript_MoveRival3
- setobjectmovementtype LOCALID_RIVAL, MOVEMENT_TYPE_FACE_RIGHT
- setobjectmovementtype LOCALID_RIVAL_ON_BIKE, MOVEMENT_TYPE_FACE_RIGHT
- removeobject LOCALID_RIVAL
- addobject LOCALID_RIVAL_ON_BIKE
+ setobjectmovementtype LOCALID_ROUTE110_RIVAL, MOVEMENT_TYPE_FACE_RIGHT
+ setobjectmovementtype LOCALID_ROUTE110_RIVAL_ON_BIKE, MOVEMENT_TYPE_FACE_RIGHT
+ removeobject LOCALID_ROUTE110_RIVAL
+ addobject LOCALID_ROUTE110_RIVAL_ON_BIKE
delay 45
call_if_eq VAR_0x8008, 1, Route110_EventScript_RivalExit1
call_if_eq VAR_0x8008, 2, Route110_EventScript_RivalExit2
call_if_eq VAR_0x8008, 3, Route110_EventScript_RivalExit3
- removeobject LOCALID_RIVAL_ON_BIKE
+ removeobject LOCALID_ROUTE110_RIVAL_ON_BIKE
setvar VAR_ROUTE110_STATE, 1
savebgm MUS_DUMMY
fadedefaultbgm
@@ -487,45 +482,45 @@ Route110_EventScript_RivalExit::
end
Route110_EventScript_RivalApproachPlayer1::
- applymovement LOCALID_RIVAL, Route110_Movement_RivalApproachPlayer1
+ applymovement LOCALID_ROUTE110_RIVAL, Route110_Movement_RivalApproachPlayer1
waitmovement 0
return
Route110_EventScript_RivalApproachPlayer2::
- applymovement LOCALID_RIVAL, Route110_Movement_RivalApproachPlayer2
+ applymovement LOCALID_ROUTE110_RIVAL, Route110_Movement_RivalApproachPlayer2
waitmovement 0
return
Route110_EventScript_RivalApproachPlayer3::
- applymovement LOCALID_RIVAL, Route110_Movement_RivalApproachPlayer3
+ applymovement LOCALID_ROUTE110_RIVAL, Route110_Movement_RivalApproachPlayer3
waitmovement 0
return
Route110_EventScript_RivalExit1::
- applymovement LOCALID_RIVAL_ON_BIKE, Route110_Movement_RivalExit1
+ applymovement LOCALID_ROUTE110_RIVAL_ON_BIKE, Route110_Movement_RivalExit1
waitmovement 0
return
Route110_EventScript_RivalExit2::
- applymovement LOCALID_RIVAL_ON_BIKE, Route110_Movement_RivalExit2
+ applymovement LOCALID_ROUTE110_RIVAL_ON_BIKE, Route110_Movement_RivalExit2
waitmovement 0
return
Route110_EventScript_RivalExit3::
- applymovement LOCALID_RIVAL_ON_BIKE, Route110_Movement_RivalExit3
+ applymovement LOCALID_ROUTE110_RIVAL_ON_BIKE, Route110_Movement_RivalExit3
waitmovement 0
return
Route110_EventScript_MoveRival1::
- setobjectxyperm LOCALID_RIVAL_ON_BIKE, 33, 55
+ setobjectxyperm LOCALID_ROUTE110_RIVAL_ON_BIKE, 33, 55
return
Route110_EventScript_MoveRival2::
- setobjectxyperm LOCALID_RIVAL_ON_BIKE, 34, 55
+ setobjectxyperm LOCALID_ROUTE110_RIVAL_ON_BIKE, 34, 55
return
Route110_EventScript_MoveRival3::
- setobjectxyperm LOCALID_RIVAL_ON_BIKE, 35, 55
+ setobjectxyperm LOCALID_ROUTE110_RIVAL_ON_BIKE, 35, 55
return
Route110_Movement_RivalApproachPlayer1:
@@ -596,13 +591,13 @@ Route110_EventScript_BirchScene4::
goto Route110_EventScript_BirchScene
Route110_EventScript_BirchScene::
- addobject LOCALID_BIRCH
- applymovement LOCALID_BIRCH, Route110_Movement_BirchEntrance
+ addobject LOCALID_ROUTE110_BIRCH
+ applymovement LOCALID_ROUTE110_BIRCH, Route110_Movement_BirchEntrance
waitmovement 0
playse SE_PIN
- applymovement LOCALID_BIRCH, Common_Movement_ExclamationMark
+ applymovement LOCALID_ROUTE110_BIRCH, Common_Movement_ExclamationMark
waitmovement 0
- applymovement LOCALID_BIRCH, Common_Movement_Delay48
+ applymovement LOCALID_ROUTE110_BIRCH, Common_Movement_Delay48
waitmovement 0
call_if_eq VAR_0x8008, 1, Route110_EventScript_BirchApproachPlayer1
call_if_eq VAR_0x8008, 2, Route110_EventScript_BirchApproachPlayer2
@@ -611,13 +606,13 @@ Route110_EventScript_BirchScene::
msgbox Route110_Text_ImagineSeeingYouHere, MSGBOX_DEFAULT
closemessage
delay 20
- applymovement LOCALID_BIRCH, Common_Movement_WalkInPlaceFasterLeft
+ applymovement LOCALID_ROUTE110_BIRCH, Common_Movement_WalkInPlaceFasterLeft
waitmovement 0
delay 10
- applymovement LOCALID_BIRCH, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_ROUTE110_BIRCH, Common_Movement_WalkInPlaceFasterRight
waitmovement 0
delay 20
- applymovement LOCALID_BIRCH, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_ROUTE110_BIRCH, Common_Movement_WalkInPlaceFasterDown
waitmovement 0
delay 30
msgbox Route110_Text_HeardYouInstallMatchCall, MSGBOX_DEFAULT
@@ -635,48 +630,48 @@ Route110_EventScript_BirchScene::
call_if_eq VAR_0x8008, 2, Route110_EventScript_BirchExit2
call_if_eq VAR_0x8008, 3, Route110_EventScript_BirchExit3
call_if_eq VAR_0x8008, 4, Route110_EventScript_BirchExit4
- removeobject LOCALID_BIRCH
+ removeobject LOCALID_ROUTE110_BIRCH
setvar VAR_REGISTER_BIRCH_STATE, 2
releaseall
end
Route110_EventScript_BirchApproachPlayer1::
- applymovement LOCALID_BIRCH, Route110_Movement_BirchApproachPlayer1
+ applymovement LOCALID_ROUTE110_BIRCH, Route110_Movement_BirchApproachPlayer1
waitmovement 0
return
Route110_EventScript_BirchApproachPlayer2::
- applymovement LOCALID_BIRCH, Route110_Movement_BirchApproachPlayer2
+ applymovement LOCALID_ROUTE110_BIRCH, Route110_Movement_BirchApproachPlayer2
waitmovement 0
return
Route110_EventScript_BirchApproachPlayer3::
- applymovement LOCALID_BIRCH, Route110_Movement_BirchApproachPlayer3
+ applymovement LOCALID_ROUTE110_BIRCH, Route110_Movement_BirchApproachPlayer3
waitmovement 0
return
Route110_EventScript_BirchApproachPlayer4::
- applymovement LOCALID_BIRCH, Route110_Movement_BirchApproachPlayer4
+ applymovement LOCALID_ROUTE110_BIRCH, Route110_Movement_BirchApproachPlayer4
waitmovement 0
return
Route110_EventScript_BirchExit1::
- applymovement LOCALID_BIRCH, Route110_Movement_BirchExit1
+ applymovement LOCALID_ROUTE110_BIRCH, Route110_Movement_BirchExit1
waitmovement 0
return
Route110_EventScript_BirchExit2::
- applymovement LOCALID_BIRCH, Route110_Movement_BirchExit2
+ applymovement LOCALID_ROUTE110_BIRCH, Route110_Movement_BirchExit2
waitmovement 0
return
Route110_EventScript_BirchExit3::
- applymovement LOCALID_BIRCH, Route110_Movement_BirchExit3
+ applymovement LOCALID_ROUTE110_BIRCH, Route110_Movement_BirchExit3
waitmovement 0
return
Route110_EventScript_BirchExit4::
- applymovement LOCALID_BIRCH, Route110_Movement_BirchExit4
+ applymovement LOCALID_ROUTE110_BIRCH, Route110_Movement_BirchExit4
waitmovement 0
return
diff --git a/data/maps/Route110_SeasideCyclingRoadNorthEntrance/scripts.inc b/data/maps/Route110_SeasideCyclingRoadNorthEntrance/scripts.inc
index fb1cdc5c71..cc3a867f8b 100644
--- a/data/maps/Route110_SeasideCyclingRoadNorthEntrance/scripts.inc
+++ b/data/maps/Route110_SeasideCyclingRoadNorthEntrance/scripts.inc
@@ -35,7 +35,7 @@ Route110_SeasideCyclingRoadNorthEntrance_EventScript_OnMachBike::
Route110_SeasideCyclingRoadNorthEntrance_EventScript_NoBike::
msgbox Route110_SeasideCyclingRoadNorthEntrance_Text_TooDangerousToWalk, MSGBOX_DEFAULT
closemessage
- applymovement OBJ_EVENT_ID_PLAYER, Route110_SeasideCyclingRoadNorthEntrance_Movement_PushPlayerBackFromCounter
+ applymovement LOCALID_PLAYER, Route110_SeasideCyclingRoadNorthEntrance_Movement_PushPlayerBackFromCounter
waitmovement 0
releaseall
end
diff --git a/data/maps/Route110_SeasideCyclingRoadSouthEntrance/scripts.inc b/data/maps/Route110_SeasideCyclingRoadSouthEntrance/scripts.inc
index 5c4dcfa219..1f88b6e27c 100644
--- a/data/maps/Route110_SeasideCyclingRoadSouthEntrance/scripts.inc
+++ b/data/maps/Route110_SeasideCyclingRoadSouthEntrance/scripts.inc
@@ -20,7 +20,7 @@ Route110_SeasideCyclingRoadSouthEntrance_EventScript_BikeCheck::
Route110_SeasideCyclingRoadSouthEntrance_EventScript_NoBike::
msgbox Route110_SeasideCyclingRoadSouthEntrance_Text_TooDangerousToWalk, MSGBOX_DEFAULT
closemessage
- applymovement OBJ_EVENT_ID_PLAYER, Route110_SeasideCyclingRoadSouthEntrance_Movement_PushPlayerBackFromCounter
+ applymovement LOCALID_PLAYER, Route110_SeasideCyclingRoadSouthEntrance_Movement_PushPlayerBackFromCounter
waitmovement 0
releaseall
end
diff --git a/data/maps/Route110_TrickHouseEnd/map.json b/data/maps/Route110_TrickHouseEnd/map.json
index 90d2285496..2a44e297c4 100644
--- a/data/maps/Route110_TrickHouseEnd/map.json
+++ b/data/maps/Route110_TrickHouseEnd/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_TRICK_MASTER_END",
"graphics_id": "OBJ_EVENT_GFX_MAN_1",
"x": 4,
"y": 5,
diff --git a/data/maps/Route110_TrickHouseEnd/scripts.inc b/data/maps/Route110_TrickHouseEnd/scripts.inc
index 9f31d89e4c..e3b4660dad 100644
--- a/data/maps/Route110_TrickHouseEnd/scripts.inc
+++ b/data/maps/Route110_TrickHouseEnd/scripts.inc
@@ -1,5 +1,3 @@
-.set LOCALID_TRICK_MASTER, 1
-
Route110_TrickHouseEnd_MapScripts::
map_script MAP_SCRIPT_ON_RESUME, Route110_TrickHouseEnd_OnResume
map_script MAP_SCRIPT_ON_TRANSITION, Route110_TrickHouseEnd_OnTransition
@@ -22,9 +20,9 @@ Route110_TrickHouseEnd_OnWarp:
.2byte 0
Route110_TrickHouseEnd_EventScript_SetTrickMasterPos::
- addobject LOCALID_TRICK_MASTER
- showobjectat LOCALID_TRICK_MASTER, MAP_ROUTE110_TRICK_HOUSE_END
- turnobject LOCALID_TRICK_MASTER, DIR_EAST
+ addobject LOCALID_TRICK_MASTER_END
+ showobjectat LOCALID_TRICK_MASTER_END, MAP_ROUTE110_TRICK_HOUSE_END
+ turnobject LOCALID_TRICK_MASTER_END, DIR_EAST
end
Route110_TrickHouseEnd_OnFrame:
@@ -151,7 +149,7 @@ Route110_TrickHouseEnd_EventScript_CompletedPuzzle8::
delay 30
msgbox Route110_TrickHouseEnd_Text_FountainOfIdeasRunDry, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_TRICK_MASTER, Common_Movement_FacePlayer
+ applymovement LOCALID_TRICK_MASTER_END, Common_Movement_FacePlayer
waitmovement 0
delay 30
msgbox Route110_TrickHouseEnd_Text_DefeatedMePreferWhichTent, MSGBOX_DEFAULT
@@ -179,12 +177,12 @@ Route110_TrickHouseEnd_EventScript_GiveBlueTent::
return
Route110_TrickHouseEnd_EventScript_TrickMasterExit::
- applymovement LOCALID_TRICK_MASTER, Route110_TrickHouse_Movement_TrickMasterSpin
+ applymovement LOCALID_TRICK_MASTER_END, Route110_TrickHouse_Movement_TrickMasterSpin
waitmovement 0
playse SE_M_EXPLOSION
- applymovement LOCALID_TRICK_MASTER, Route110_TrickHouse_Movement_TrickMasterJumpAway
+ applymovement LOCALID_TRICK_MASTER_END, Route110_TrickHouse_Movement_TrickMasterJumpAway
waitmovement 0
- removeobject LOCALID_TRICK_MASTER
+ removeobject LOCALID_TRICK_MASTER_END
addvar VAR_TRICK_HOUSE_LEVEL, 1
return
@@ -201,43 +199,43 @@ Route110_TrickHouseEnd_EventScript_NoRoomForTent::
return
Route110_TrickHouseEnd_EventScript_TrickMasterFaceAwaySouth::
- applymovement LOCALID_TRICK_MASTER, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_TRICK_MASTER_END, Common_Movement_WalkInPlaceFasterDown
waitmovement 0
return
Route110_TrickHouseEnd_EventScript_TrickMasterFaceAwayNorth::
- applymovement LOCALID_TRICK_MASTER, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_TRICK_MASTER_END, Common_Movement_WalkInPlaceFasterUp
waitmovement 0
return
Route110_TrickHouseEnd_EventScript_TrickMasterFaceAwayWest::
- applymovement LOCALID_TRICK_MASTER, Common_Movement_WalkInPlaceFasterLeft
+ applymovement LOCALID_TRICK_MASTER_END, Common_Movement_WalkInPlaceFasterLeft
waitmovement 0
return
Route110_TrickHouseEnd_EventScript_TrickMasterFaceAwayEast::
- applymovement LOCALID_TRICK_MASTER, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_TRICK_MASTER_END, Common_Movement_WalkInPlaceFasterRight
waitmovement 0
return
Route110_TrickHouseEnd_EventScript_TrickMasterExitTrigger::
lockall
- turnobject LOCALID_TRICK_MASTER, DIR_WEST
+ turnobject LOCALID_TRICK_MASTER_END, DIR_WEST
playse SE_PIN
- applymovement LOCALID_TRICK_MASTER, Common_Movement_ExclamationMark
+ applymovement LOCALID_TRICK_MASTER_END, Common_Movement_ExclamationMark
waitmovement 0
delay 20
- applymovement LOCALID_TRICK_MASTER, Route110_TrickHouseEnd_Movement_TrickMasterSurprise
+ applymovement LOCALID_TRICK_MASTER_END, Route110_TrickHouseEnd_Movement_TrickMasterSurprise
waitmovement 0
playse SE_M_EXPLOSION
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterDown
waitmovement 0
msgbox Route110_TrickHouseEnd_Text_YoureIgnoringMe, MSGBOX_DEFAULT
closemessage
- applymovement OBJ_EVENT_ID_PLAYER, Route110_TrickHouseEnd_Movement_KeepPlayerInRoom
+ applymovement LOCALID_PLAYER, Route110_TrickHouseEnd_Movement_KeepPlayerInRoom
waitmovement 0
delay 4
- turnobject LOCALID_TRICK_MASTER, DIR_EAST
+ turnobject LOCALID_TRICK_MASTER_END, DIR_EAST
releaseall
end
diff --git a/data/maps/Route110_TrickHouseEntrance/map.json b/data/maps/Route110_TrickHouseEntrance/map.json
index 5584a534c3..60f2bec2a0 100644
--- a/data/maps/Route110_TrickHouseEntrance/map.json
+++ b/data/maps/Route110_TrickHouseEntrance/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_TRICK_MASTER",
"graphics_id": "OBJ_EVENT_GFX_MAN_1",
"x": 6,
"y": 2,
diff --git a/data/maps/Route110_TrickHouseEntrance/scripts.inc b/data/maps/Route110_TrickHouseEntrance/scripts.inc
index 51135ac339..93daa17b0b 100644
--- a/data/maps/Route110_TrickHouseEntrance/scripts.inc
+++ b/data/maps/Route110_TrickHouseEntrance/scripts.inc
@@ -1,5 +1,3 @@
-.set LOCALID_TRICK_MASTER, 1
-
Route110_TrickHouseEntrance_MapScripts::
map_script MAP_SCRIPT_ON_TRANSITION, Route110_TrickHouseEntrance_OnTransition
map_script MAP_SCRIPT_ON_FRAME_TABLE, Route110_TrickHouseEntrance_OnFrame
@@ -129,7 +127,7 @@ Route110_TrickHouseEntrance_EventScript_TrickMasterFound::
addobject LOCALID_TRICK_MASTER
showobjectat LOCALID_TRICK_MASTER, MAP_ROUTE110_TRICK_HOUSE_ENTRANCE
turnobject LOCALID_TRICK_MASTER, DIR_EAST
- turnobject OBJ_EVENT_ID_PLAYER, DIR_WEST
+ turnobject LOCALID_PLAYER, DIR_WEST
end
Route110_TrickHouseEntrance_EventScript_SetTrickMasterHidingSpot::
@@ -231,9 +229,9 @@ Route110_TrickHouseEntrance_EventScript_TrickMaster::
Route110_TrickHouseEntrance_EventScript_FoundTrickMaster::
playse SE_PIN
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_ExclamationMark
+ applymovement LOCALID_PLAYER, Common_Movement_ExclamationMark
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_Delay48
+ applymovement LOCALID_PLAYER, Common_Movement_Delay48
waitmovement 0
call_if_eq VAR_TRICK_HOUSE_LEVEL, 0, Route110_TrickHouseEntrance_EventScript_FoundBeneathDesk
call_if_eq VAR_TRICK_HOUSE_LEVEL, 1, Route110_TrickHouseEntrance_EventScript_FoundBehindTree
@@ -467,9 +465,9 @@ Route110_TrickHouseEntrance_EventScript_EnterPuzzleRoom::
setmetatile 5, 1, METATILE_GenericBuilding_TrickHouse_Stairs_Down, FALSE
special DrawWholeMapView
delay 20
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkUp
+ applymovement LOCALID_PLAYER, Common_Movement_WalkUp
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, Route110_TrickHouseEntrance_Movement_EnterRoom
+ applymovement LOCALID_PLAYER, Route110_TrickHouseEntrance_Movement_EnterRoom
waitmovement 0
switch VAR_TRICK_HOUSE_LEVEL
case 0, Route110_TrickHouseEntrance_EventScript_EnterPuzzleRoom1
diff --git a/data/maps/Route110_TrickHousePuzzle5/map.json b/data/maps/Route110_TrickHousePuzzle5/map.json
index 3775505235..e094688bbf 100644
--- a/data/maps/Route110_TrickHousePuzzle5/map.json
+++ b/data/maps/Route110_TrickHousePuzzle5/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_MECHADOLL_1",
"graphics_id": "OBJ_EVENT_GFX_MAN_1",
"x": 6,
"y": 17,
@@ -28,6 +29,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_MECHADOLL_2",
"graphics_id": "OBJ_EVENT_GFX_MAN_1",
"x": 0,
"y": 7,
@@ -41,6 +43,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_MECHADOLL_3",
"graphics_id": "OBJ_EVENT_GFX_MAN_1",
"x": 14,
"y": 10,
@@ -54,6 +57,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_MECHADOLL_4",
"graphics_id": "OBJ_EVENT_GFX_MAN_1",
"x": 14,
"y": 19,
@@ -67,6 +71,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_MECHADOLL_5",
"graphics_id": "OBJ_EVENT_GFX_MAN_1",
"x": 10,
"y": 4,
diff --git a/data/maps/Route110_TrickHousePuzzle5/scripts.inc b/data/maps/Route110_TrickHousePuzzle5/scripts.inc
index e0fa432bd2..c59dad2e57 100644
--- a/data/maps/Route110_TrickHousePuzzle5/scripts.inc
+++ b/data/maps/Route110_TrickHousePuzzle5/scripts.inc
@@ -1,9 +1,3 @@
-.set LOCALID_MECHADOLL_1, 1
-.set LOCALID_MECHADOLL_2, 2
-.set LOCALID_MECHADOLL_3, 3
-.set LOCALID_MECHADOLL_4, 4
-.set LOCALID_MECHADOLL_5, 5
-
Route110_TrickHousePuzzle5_MapScripts::
map_script MAP_SCRIPT_ON_TRANSITION, Route110_TrickHousePuzzle5_OnTransition
.byte 0
diff --git a/data/maps/Route111/map.json b/data/maps/Route111/map.json
index 3e893d0a6f..a9581c725c 100644
--- a/data/maps/Route111/map.json
+++ b/data/maps/Route111/map.json
@@ -31,6 +31,7 @@
],
"object_events": [
{
+ "local_id": "LOCALID_ROUTE111_VICTOR",
"graphics_id": "OBJ_EVENT_GFX_MAN_1",
"x": 13,
"y": 114,
@@ -44,6 +45,7 @@
"flag": "FLAG_HIDE_ROUTE_111_VICTOR_WINSTRATE"
},
{
+ "local_id": "LOCALID_ROUTE111_VICTORIA",
"graphics_id": "OBJ_EVENT_GFX_POKEFAN_F",
"x": 13,
"y": 113,
@@ -57,6 +59,7 @@
"flag": "FLAG_HIDE_ROUTE_111_VICTORIA_WINSTRATE"
},
{
+ "local_id": "LOCALID_ROUTE111_VIVI",
"graphics_id": "OBJ_EVENT_GFX_LASS",
"x": 13,
"y": 113,
@@ -70,6 +73,7 @@
"flag": "FLAG_HIDE_ROUTE_111_VIVI_WINSTRATE"
},
{
+ "local_id": "LOCALID_ROUTE111_VICKY",
"graphics_id": "OBJ_EVENT_GFX_EXPERT_F",
"x": 13,
"y": 113,
@@ -187,6 +191,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_ROUTE111_TY_1",
"graphics_id": "OBJ_EVENT_GFX_CAMERAMAN",
"x": 14,
"y": 86,
@@ -200,6 +205,7 @@
"flag": "FLAG_HIDE_ROUTE_111_GABBY_AND_TY_1"
},
{
+ "local_id": "LOCALID_ROUTE111_GABBY_1",
"graphics_id": "OBJ_EVENT_GFX_REPORTER_F",
"x": 13,
"y": 86,
@@ -291,6 +297,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_ROUTE111_GABBY_2",
"graphics_id": "OBJ_EVENT_GFX_REPORTER_F",
"x": 13,
"y": 86,
@@ -301,9 +308,10 @@
"trainer_type": "TRAINER_TYPE_NONE",
"trainer_sight_or_berry_tree_id": "0",
"script": "GabbyAndTy_EventScript_GabbyBattle4",
- "flag": "FLAG_HIDE_ROUTE_111_GABBY_AND_TY_3"
+ "flag": "FLAG_HIDE_ROUTE_111_GABBY_AND_TY_2"
},
{
+ "local_id": "LOCALID_ROUTE111_TY_2",
"graphics_id": "OBJ_EVENT_GFX_CAMERAMAN",
"x": 14,
"y": 86,
@@ -314,9 +322,10 @@
"trainer_type": "TRAINER_TYPE_NONE",
"trainer_sight_or_berry_tree_id": "0",
"script": "GabbyAndTy_EventScript_TyBattle4",
- "flag": "FLAG_HIDE_ROUTE_111_GABBY_AND_TY_3"
+ "flag": "FLAG_HIDE_ROUTE_111_GABBY_AND_TY_2"
},
{
+ "local_id": "LOCALID_ROUTE111_GABBY_3",
"graphics_id": "OBJ_EVENT_GFX_REPORTER_F",
"x": 13,
"y": 86,
@@ -327,9 +336,10 @@
"trainer_type": "TRAINER_TYPE_NONE",
"trainer_sight_or_berry_tree_id": "0",
"script": "GabbyAndTy_EventScript_GabbyBattle6",
- "flag": "FLAG_HIDE_ROUTE_111_GABBY_AND_TY_2"
+ "flag": "FLAG_HIDE_ROUTE_111_GABBY_AND_TY_3"
},
{
+ "local_id": "LOCALID_ROUTE111_TY_3",
"graphics_id": "OBJ_EVENT_GFX_CAMERAMAN",
"x": 14,
"y": 86,
@@ -340,7 +350,7 @@
"trainer_type": "TRAINER_TYPE_NONE",
"trainer_sight_or_berry_tree_id": "0",
"script": "GabbyAndTy_EventScript_TyBattle6",
- "flag": "FLAG_HIDE_ROUTE_111_GABBY_AND_TY_2"
+ "flag": "FLAG_HIDE_ROUTE_111_GABBY_AND_TY_3"
},
{
"graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
@@ -603,6 +613,7 @@
"flag": "FLAG_HIDE_ROUTE_111_DESERT_FOSSIL"
},
{
+ "local_id": "LOCALID_ROUTE111_PLAYER_FALLING",
"graphics_id": "OBJ_EVENT_GFX_VAR_0",
"x": 19,
"y": 53,
@@ -616,6 +627,7 @@
"flag": "FLAG_HIDE_ROUTE_111_PLAYER_DESCENT"
},
{
+ "local_id": "LOCALID_ROUTE111_ROCK_SMASH_MAN",
"graphics_id": "OBJ_EVENT_GFX_FAT_MAN",
"x": 19,
"y": 101,
diff --git a/data/maps/Route111/scripts.inc b/data/maps/Route111/scripts.inc
index 7335d0e1ce..5e0b5dcda4 100644
--- a/data/maps/Route111/scripts.inc
+++ b/data/maps/Route111/scripts.inc
@@ -1,11 +1,3 @@
-.set LOCALID_VICTOR, 1
-.set LOCALID_VICTORIA, 2
-.set LOCALID_VIVI, 3
-.set LOCALID_VICKY, 4
-.set LOCALID_ROCK_SMASH_MAN, 46
-
-@ Note: LOCALID_ROUTE111_PLAYER_FALLING is a local id for this map used elsewhere. It's defined in event_objects.h
-
Route111_MapScripts::
map_script MAP_SCRIPT_ON_LOAD, Route111_OnLoad
map_script MAP_SCRIPT_ON_TRANSITION, Route111_OnTransition
@@ -105,7 +97,7 @@ Route111_OnWarp:
.2byte 0
Route111_EventScript_HidePlayerForMirageTower::
- hideobjectat OBJ_EVENT_ID_PLAYER, MAP_LITTLEROOT_TOWN
+ hideobjectat LOCALID_PLAYER, MAP_LITTLEROOT_TOWN
end
Route111_OnFrame:
@@ -121,10 +113,10 @@ Route111_EventScript_MirageTowerDisappear::
addobject LOCALID_ROUTE111_PLAYER_FALLING
special StartPlayerDescendMirageTower
waitstate
- showobjectat OBJ_EVENT_ID_PLAYER, MAP_LITTLEROOT_TOWN
+ showobjectat LOCALID_PLAYER, MAP_LITTLEROOT_TOWN
removeobject LOCALID_ROUTE111_PLAYER_FALLING
delay 16
- turnobject OBJ_EVENT_ID_PLAYER, DIR_NORTH
+ turnobject LOCALID_PLAYER, DIR_NORTH
delay 16
special StartMirageTowerDisintegration
waitstate
@@ -216,22 +208,22 @@ Route111_EventScript_PreventRouteAccess::
end
Route111_EventScript_PushUpFromRoute::
- applymovement OBJ_EVENT_ID_PLAYER, Route111_Movement_PushUpFromRoute
+ applymovement LOCALID_PLAYER, Route111_Movement_PushUpFromRoute
waitmovement 0
return
Route111_EventScript_PushDownFromRoute::
- applymovement OBJ_EVENT_ID_PLAYER, Route111_Movement_PushDownFromRoute
+ applymovement LOCALID_PLAYER, Route111_Movement_PushDownFromRoute
waitmovement 0
return
Route111_EventScript_PushLeftFromRoute::
- applymovement OBJ_EVENT_ID_PLAYER, Route111_Movement_PushLeftFromRoute
+ applymovement LOCALID_PLAYER, Route111_Movement_PushLeftFromRoute
waitmovement 0
return
Route111_EventScript_PushRightFromRoute::
- applymovement OBJ_EVENT_ID_PLAYER, Route111_Movement_PushRightFromRoute
+ applymovement LOCALID_PLAYER, Route111_Movement_PushRightFromRoute
waitmovement 0
return
@@ -277,68 +269,68 @@ Route111_EventScript_Victor::
Route111_EventScript_BattleWinstrates::
msgbox Route111_Text_VictorIntro, MSGBOX_DEFAULT
trainerbattle_no_intro TRAINER_VICTOR, Route111_Text_VictorDefeat
- applymovement LOCALID_VICTOR, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_ROUTE111_VICTOR, Common_Movement_WalkInPlaceFasterUp
waitmovement 0
call Route111_EventScript_OpenWinstrateDoor
msgbox Route111_Text_VictorPostBattle, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_VICTOR, Route111_Movement_WinstrateEnterHouse
+ applymovement LOCALID_ROUTE111_VICTOR, Route111_Movement_WinstrateEnterHouse
waitmovement 0
- removeobject LOCALID_VICTOR
+ removeobject LOCALID_ROUTE111_VICTOR
call Route111_EventScript_CloseWinstrateDoor
- applymovement OBJ_EVENT_ID_PLAYER, Route111_Movement_WaitForNextWinstrate
+ applymovement LOCALID_PLAYER, Route111_Movement_WaitForNextWinstrate
waitmovement 0
call Route111_EventScript_OpenWinstrateDoor
- addobject LOCALID_VICTORIA
- applymovement LOCALID_VICTORIA, Route111_Movement_WinstrateExitHouse
+ addobject LOCALID_ROUTE111_VICTORIA
+ applymovement LOCALID_ROUTE111_VICTORIA, Route111_Movement_WinstrateExitHouse
waitmovement 0
call Route111_EventScript_CloseWinstrateDoor
msgbox Route111_Text_VictoriaIntro, MSGBOX_DEFAULT
trainerbattle_no_intro TRAINER_VICTORIA, Route111_Text_VictoriaDefeat
- applymovement LOCALID_VICTORIA, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_ROUTE111_VICTORIA, Common_Movement_WalkInPlaceFasterUp
waitmovement 0
call Route111_EventScript_OpenWinstrateDoor
msgbox Route111_Text_VictoriaPostBattle, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_VICTORIA, Route111_Movement_WinstrateEnterHouse
+ applymovement LOCALID_ROUTE111_VICTORIA, Route111_Movement_WinstrateEnterHouse
waitmovement 0
- removeobject LOCALID_VICTORIA
+ removeobject LOCALID_ROUTE111_VICTORIA
call Route111_EventScript_CloseWinstrateDoor
- applymovement OBJ_EVENT_ID_PLAYER, Route111_Movement_WaitForNextWinstrate
+ applymovement LOCALID_PLAYER, Route111_Movement_WaitForNextWinstrate
waitmovement 0
call Route111_EventScript_OpenWinstrateDoor
- addobject LOCALID_VIVI
- applymovement LOCALID_VIVI, Route111_Movement_WinstrateExitHouse
+ addobject LOCALID_ROUTE111_VIVI
+ applymovement LOCALID_ROUTE111_VIVI, Route111_Movement_WinstrateExitHouse
waitmovement 0
call Route111_EventScript_CloseWinstrateDoor
msgbox Route111_Text_ViviIntro, MSGBOX_DEFAULT
trainerbattle_no_intro TRAINER_VIVI, Route111_Text_ViviDefeat
- applymovement LOCALID_VIVI, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_ROUTE111_VIVI, Common_Movement_WalkInPlaceFasterUp
waitmovement 0
call Route111_EventScript_OpenWinstrateDoor
msgbox Route111_Text_ViviPostBattle, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_VIVI, Route111_Movement_WinstrateEnterHouse
+ applymovement LOCALID_ROUTE111_VIVI, Route111_Movement_WinstrateEnterHouse
waitmovement 0
- removeobject LOCALID_VIVI
+ removeobject LOCALID_ROUTE111_VIVI
call Route111_EventScript_CloseWinstrateDoor
- applymovement OBJ_EVENT_ID_PLAYER, Route111_Movement_WaitForNextWinstrate
+ applymovement LOCALID_PLAYER, Route111_Movement_WaitForNextWinstrate
waitmovement 0
call Route111_EventScript_OpenWinstrateDoor
- addobject LOCALID_VICKY
- applymovement LOCALID_VICKY, Route111_Movement_WinstrateExitHouse
+ addobject LOCALID_ROUTE111_VICKY
+ applymovement LOCALID_ROUTE111_VICKY, Route111_Movement_WinstrateExitHouse
waitmovement 0
call Route111_EventScript_CloseWinstrateDoor
msgbox Route111_Text_VickyIntro, MSGBOX_DEFAULT
trainerbattle_no_intro TRAINER_VICKY, Route111_Text_VickyDefeat
msgbox Route111_Text_VickyPostBattle, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_VICKY, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_ROUTE111_VICKY, Common_Movement_WalkInPlaceFasterUp
waitmovement 0
call Route111_EventScript_OpenWinstrateDoor
- applymovement LOCALID_VICKY, Route111_Movement_WinstrateEnterHouse
+ applymovement LOCALID_ROUTE111_VICKY, Route111_Movement_WinstrateEnterHouse
waitmovement 0
- removeobject LOCALID_VICKY
+ removeobject LOCALID_ROUTE111_VICKY
call Route111_EventScript_CloseWinstrateDoor
release
end
@@ -427,11 +419,11 @@ Route111_EventScript_HikerMirageTowerVisible::
Route111_EventScript_RockSmashTipFatMan::
lockall
- applymovement LOCALID_ROCK_SMASH_MAN, Common_Movement_FacePlayer
+ applymovement LOCALID_ROUTE111_ROCK_SMASH_MAN, Common_Movement_FacePlayer
waitmovement 0
msgbox Route111_Text_MauvilleUncleToldMeToTakeRockSmash, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_ROCK_SMASH_MAN, Common_Movement_FaceOriginalDirection
+ applymovement LOCALID_ROUTE111_ROCK_SMASH_MAN, Common_Movement_FaceOriginalDirection
waitmovement 0
releaseall
end
diff --git a/data/maps/Route111_WinstrateFamilysHouse/map.json b/data/maps/Route111_WinstrateFamilysHouse/map.json
index 5e6f9d75e8..3e061ae94e 100644
--- a/data/maps/Route111_WinstrateFamilysHouse/map.json
+++ b/data/maps/Route111_WinstrateFamilysHouse/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_WINSTRATE_HOUSE_VIVI",
"graphics_id": "OBJ_EVENT_GFX_LASS",
"x": 7,
"y": 5,
@@ -28,6 +29,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_WINSTRATE_HOUSE_VICTOR",
"graphics_id": "OBJ_EVENT_GFX_MAN_1",
"x": 4,
"y": 5,
@@ -41,6 +43,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_WINSTRATE_HOUSE_VICTORIA",
"graphics_id": "OBJ_EVENT_GFX_POKEFAN_F",
"x": 7,
"y": 4,
@@ -54,6 +57,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_WINSTRATE_HOUSE_VICKY",
"graphics_id": "OBJ_EVENT_GFX_EXPERT_F",
"x": 4,
"y": 4,
diff --git a/data/maps/Route111_WinstrateFamilysHouse/scripts.inc b/data/maps/Route111_WinstrateFamilysHouse/scripts.inc
index a163c7b4f2..4f44241cf9 100644
--- a/data/maps/Route111_WinstrateFamilysHouse/scripts.inc
+++ b/data/maps/Route111_WinstrateFamilysHouse/scripts.inc
@@ -1,15 +1,10 @@
-.set LOCALID_VIVI, 1
-.set LOCALID_VICTOR, 2
-.set LOCALID_VICTORIA, 3
-.set LOCALID_VICKY, 4
-
Route111_WinstrateFamilysHouse_MapScripts::
.byte 0
Route111_WinstrateFamilysHouse_EventScript_Victor::
lock
faceplayer
- setvar VAR_0x8008, LOCALID_VICTOR
+ setvar VAR_0x8008, LOCALID_WINSTRATE_HOUSE_VICTOR
msgbox Route111_WinstrateFamilysHouse_Text_MySonIsStrongerThanYou, MSGBOX_DEFAULT
goto Route111_WinstrateFamilysHouse_EventScript_FaceOriginalDirection
end
@@ -17,7 +12,7 @@ Route111_WinstrateFamilysHouse_EventScript_Victor::
Route111_WinstrateFamilysHouse_EventScript_Victoria::
lock
faceplayer
- setvar VAR_0x8008, LOCALID_VICTORIA
+ setvar VAR_0x8008, LOCALID_WINSTRATE_HOUSE_VICTORIA
goto_if_set FLAG_RECEIVED_MACHO_BRACE, Route111_WinstrateFamilysHouse_EventScript_ReceivedMachoBrace
msgbox Route111_WinstrateFamilysHouse_Text_LikeYouToHaveMachoBrace, MSGBOX_DEFAULT
giveitem ITEM_MACHO_BRACE
@@ -34,7 +29,7 @@ Route111_WinstrateFamilysHouse_EventScript_ReceivedMachoBrace::
Route111_WinstrateFamilysHouse_EventScript_Vivi::
lock
faceplayer
- setvar VAR_0x8008, LOCALID_VIVI
+ setvar VAR_0x8008, LOCALID_WINSTRATE_HOUSE_VIVI
msgbox Route111_WinstrateFamilysHouse_Text_StrongerFamilyMembers, MSGBOX_DEFAULT
goto Route111_WinstrateFamilysHouse_EventScript_FaceOriginalDirection
end
@@ -42,7 +37,7 @@ Route111_WinstrateFamilysHouse_EventScript_Vivi::
Route111_WinstrateFamilysHouse_EventScript_Vicky::
lock
faceplayer
- setvar VAR_0x8008, LOCALID_VICKY
+ setvar VAR_0x8008, LOCALID_WINSTRATE_HOUSE_VICKY
goto_if_set FLAG_TEMP_4, Route111_WinstrateFamilysHouse_EventScript_AlreadySpokenTo
msgbox Route111_WinstrateFamilysHouse_Text_GrandsonStrong, MSGBOX_DEFAULT
setflag FLAG_TEMP_4
diff --git a/data/maps/Route112/map.json b/data/maps/Route112/map.json
index f8e8851fa2..aee786dece 100644
--- a/data/maps/Route112/map.json
+++ b/data/maps/Route112/map.json
@@ -31,6 +31,7 @@
],
"object_events": [
{
+ "local_id": "LOCALID_ROUTE112_GRUNT_1",
"graphics_id": "OBJ_EVENT_GFX_MAGMA_MEMBER_M",
"x": 26,
"y": 30,
@@ -96,6 +97,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_ROUTE112_GRUNT_2",
"graphics_id": "OBJ_EVENT_GFX_MAGMA_MEMBER_M",
"x": 27,
"y": 30,
diff --git a/data/maps/Route112/scripts.inc b/data/maps/Route112/scripts.inc
index a6c248e1f6..73e229532f 100644
--- a/data/maps/Route112/scripts.inc
+++ b/data/maps/Route112/scripts.inc
@@ -1,6 +1,3 @@
-.set LOCALID_GRUNT_1, 1
-.set LOCALID_GRUNT_2, 6
-
Route112_MapScripts::
map_script MAP_SCRIPT_ON_TRANSITION, Route112_OnTransition
.byte 0
@@ -13,36 +10,36 @@ Route112_OnTransition:
Route112_EventScript_MagmaGrunts::
lockall
delay 40
- applymovement LOCALID_GRUNT_1, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_ROUTE112_GRUNT_1, Common_Movement_WalkInPlaceFasterRight
waitmovement 0
delay 20
msgbox Route112_Text_LeaderGoingToAwakenThing, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_GRUNT_1, Common_Movement_FaceOriginalDirection
+ applymovement LOCALID_ROUTE112_GRUNT_1, Common_Movement_FaceOriginalDirection
waitmovement 0
delay 40
- applymovement LOCALID_GRUNT_2, Common_Movement_WalkInPlaceFasterLeft
+ applymovement LOCALID_ROUTE112_GRUNT_2, Common_Movement_WalkInPlaceFasterLeft
waitmovement 0
delay 20
msgbox Route112_Text_YeahWeNeedMeteorite, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_GRUNT_2, Common_Movement_FaceOriginalDirection
+ applymovement LOCALID_ROUTE112_GRUNT_2, Common_Movement_FaceOriginalDirection
waitmovement 0
delay 40
- applymovement LOCALID_GRUNT_1, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_ROUTE112_GRUNT_1, Common_Movement_WalkInPlaceFasterRight
waitmovement 0
delay 20
msgbox Route112_Text_OhThatsWhyCrewWentToFallarbor, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_GRUNT_1, Common_Movement_FaceOriginalDirection
+ applymovement LOCALID_ROUTE112_GRUNT_1, Common_Movement_FaceOriginalDirection
waitmovement 0
delay 40
- applymovement LOCALID_GRUNT_2, Common_Movement_WalkInPlaceFasterLeft
+ applymovement LOCALID_ROUTE112_GRUNT_2, Common_Movement_WalkInPlaceFasterLeft
waitmovement 0
delay 20
msgbox Route112_Text_CantLetAnyonePassUntilTheyreBack, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_GRUNT_2, Common_Movement_FaceOriginalDirection
+ applymovement LOCALID_ROUTE112_GRUNT_2, Common_Movement_FaceOriginalDirection
waitmovement 0
releaseall
end
diff --git a/data/maps/Route112_CableCarStation/map.json b/data/maps/Route112_CableCarStation/map.json
index 09401d83b0..3aeadc6f1f 100644
--- a/data/maps/Route112_CableCarStation/map.json
+++ b/data/maps/Route112_CableCarStation/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_ROUTE112_CABLE_CAR_ATTENDANT",
"graphics_id": "OBJ_EVENT_GFX_BEAUTY",
"x": 6,
"y": 6,
diff --git a/data/maps/Route112_CableCarStation/scripts.inc b/data/maps/Route112_CableCarStation/scripts.inc
index 3ce4f62e2a..63f6673f34 100644
--- a/data/maps/Route112_CableCarStation/scripts.inc
+++ b/data/maps/Route112_CableCarStation/scripts.inc
@@ -1,5 +1,3 @@
-.set LOCALID_ATTENDANT, 1
-
Route112_CableCarStation_MapScripts::
map_script MAP_SCRIPT_ON_TRANSITION, Route112_CableCarStation_OnTransition
map_script MAP_SCRIPT_ON_FRAME_TABLE, Route112_CableCarStation_OnFrame
@@ -11,8 +9,8 @@ Route112_CableCarStation_OnTransition:
end
Route112_CableCarStation_EventScript_MoveAttendantAside::
- setobjectxyperm LOCALID_ATTENDANT, 7, 4
- setobjectmovementtype LOCALID_ATTENDANT, MOVEMENT_TYPE_FACE_LEFT
+ setobjectxyperm LOCALID_ROUTE112_CABLE_CAR_ATTENDANT, 7, 4
+ setobjectmovementtype LOCALID_ROUTE112_CABLE_CAR_ATTENDANT, MOVEMENT_TYPE_FACE_LEFT
return
Route112_CableCarStation_OnFrame:
@@ -21,12 +19,12 @@ Route112_CableCarStation_OnFrame:
Route112_CableCarStation_EventScript_ExitCableCar::
lockall
- applymovement OBJ_EVENT_ID_PLAYER, Route112_CableCarStation_Movement_ExitCableCar
- applymovement LOCALID_ATTENDANT, Route112_CableCarStation_Movement_FollowPlayerOutFromCableCar
+ applymovement LOCALID_PLAYER, Route112_CableCarStation_Movement_ExitCableCar
+ applymovement LOCALID_ROUTE112_CABLE_CAR_ATTENDANT, Route112_CableCarStation_Movement_FollowPlayerOutFromCableCar
waitmovement 0
setvar VAR_CABLE_CAR_STATION_STATE, 0
- setobjectxyperm LOCALID_ATTENDANT, 6, 7
- setobjectmovementtype LOCALID_ATTENDANT, MOVEMENT_TYPE_FACE_DOWN
+ setobjectxyperm LOCALID_ROUTE112_CABLE_CAR_ATTENDANT, 6, 7
+ setobjectmovementtype LOCALID_ROUTE112_CABLE_CAR_ATTENDANT, MOVEMENT_TYPE_FACE_DOWN
releaseall
end
@@ -41,8 +39,8 @@ Route112_CableCarStation_EventScript_Attendant::
Route112_CableCarStation_EventScript_RideCableCar::
msgbox Route112_CableCarStation_Text_StepThisWay, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_ATTENDANT, Route112_CableCarStation_Movement_LeadPlayerToCableCar
- applymovement OBJ_EVENT_ID_PLAYER, Route112_CableCarStation_Movement_BoardCableCar
+ applymovement LOCALID_ROUTE112_CABLE_CAR_ATTENDANT, Route112_CableCarStation_Movement_LeadPlayerToCableCar
+ applymovement LOCALID_PLAYER, Route112_CableCarStation_Movement_BoardCableCar
waitmovement 0
setvar VAR_0x8004, FALSE @ Going up
setvar VAR_CABLE_CAR_STATION_STATE, 1
diff --git a/data/maps/Route114_FossilManiacsTunnel/map.json b/data/maps/Route114_FossilManiacsTunnel/map.json
index 034545e6ba..625c5afc08 100644
--- a/data/maps/Route114_FossilManiacsTunnel/map.json
+++ b/data/maps/Route114_FossilManiacsTunnel/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_FOSSIL_MANIAC",
"graphics_id": "OBJ_EVENT_GFX_MANIAC",
"x": 5,
"y": 3,
diff --git a/data/maps/Route114_FossilManiacsTunnel/scripts.inc b/data/maps/Route114_FossilManiacsTunnel/scripts.inc
index 72138bbe40..6961a14714 100644
--- a/data/maps/Route114_FossilManiacsTunnel/scripts.inc
+++ b/data/maps/Route114_FossilManiacsTunnel/scripts.inc
@@ -1,5 +1,3 @@
-.set LOCALID_FOSSIL_MANIAC, 1
-
Route114_FossilManiacsTunnel_MapScripts::
map_script MAP_SCRIPT_ON_TRANSITION, Route114_FossilManiacsTunnel_OnTransition
map_script MAP_SCRIPT_ON_LOAD, Route114_FossilManiacsTunnel_OnLoad
@@ -26,7 +24,7 @@ Route114_FossilManiacsTunnel_EventScript_CloseDesertUnderpass::
Route114_FossilManiacsTunnel_EventScript_ManiacMentionCaveIn::
lockall
applymovement LOCALID_FOSSIL_MANIAC, Common_Movement_WalkInPlaceFasterUp
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterDown
waitmovement 0
msgbox Route114_FossilManiacsTunnel_Text_NotSafeThatWay, MSGBOX_DEFAULT
setvar VAR_FOSSIL_MANIAC_STATE, 2
diff --git a/data/maps/Route116/map.json b/data/maps/Route116/map.json
index 18239a42a4..75a0c23beb 100644
--- a/data/maps/Route116/map.json
+++ b/data/maps/Route116/map.json
@@ -156,6 +156,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_ROUTE116_BRINEY",
"graphics_id": "OBJ_EVENT_GFX_EXPERT_M",
"x": 46,
"y": 9,
@@ -286,6 +287,7 @@
"flag": "FLAG_ITEM_ROUTE_116_X_SPECIAL"
},
{
+ "local_id": "LOCALID_ROUTE116_WANDAS_BF",
"graphics_id": "OBJ_EVENT_GFX_BLACK_BELT",
"x": 38,
"y": 9,
diff --git a/data/maps/Route116/scripts.inc b/data/maps/Route116/scripts.inc
index 2a464d1996..617ff90d19 100644
--- a/data/maps/Route116/scripts.inc
+++ b/data/maps/Route116/scripts.inc
@@ -1,6 +1,3 @@
-.set LOCALID_BRINEY, 11
-.set LOCALID_WANDAS_BF_OUTSIDE, 21
-
Route116_MapScripts::
map_script MAP_SCRIPT_ON_TRANSITION, Route116_OnTransition
map_script MAP_SCRIPT_ON_LOAD, Route116_OnLoad
@@ -15,7 +12,7 @@ Route116_OnTransition:
end
Route116_EventScript_SetWandasBoyfriendPos::
- setobjectxyperm LOCALID_WANDAS_BF_OUTSIDE, 38, 10
+ setobjectxyperm LOCALID_ROUTE116_WANDAS_BF, 38, 10
return
Route116_OnLoad:
@@ -144,8 +141,8 @@ Route116_EventScript_Briney::
Route116_EventScript_BrineyTrigger::
lockall
- applymovement LOCALID_BRINEY, Common_Movement_WalkInPlaceFasterRight
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
+ applymovement LOCALID_ROUTE116_BRINEY, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
waitmovement 0
msgbox Route116_Text_ScoundrelMadeOffWithPeeko, MSGBOX_DEFAULT
setvar VAR_ROUTE116_STATE, 2
diff --git a/data/maps/Route117/map.json b/data/maps/Route117/map.json
index 4c8d19e6f1..e075510848 100644
--- a/data/maps/Route117/map.json
+++ b/data/maps/Route117/map.json
@@ -52,6 +52,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_DAYCARE_MAN",
"graphics_id": "OBJ_EVENT_GFX_OLD_MAN",
"x": 47,
"y": 4,
diff --git a/data/maps/Route117/scripts.inc b/data/maps/Route117/scripts.inc
index 1a3920f13a..27b017f6a4 100644
--- a/data/maps/Route117/scripts.inc
+++ b/data/maps/Route117/scripts.inc
@@ -1,4 +1,3 @@
-.set LOCALID_DAYCARE_MAN, 3
.set LOCALID_DAYCARE_MON_0, 25
.set LOCALID_DAYCARE_MON_1, 26
diff --git a/data/maps/Route117_PokemonDayCare/map.json b/data/maps/Route117_PokemonDayCare/map.json
index 128c9f6e72..31849863de 100644
--- a/data/maps/Route117_PokemonDayCare/map.json
+++ b/data/maps/Route117_PokemonDayCare/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_DAYCARE_LADY",
"graphics_id": "OBJ_EVENT_GFX_OLD_WOMAN",
"x": 2,
"y": 2,
diff --git a/data/maps/Route118/map.json b/data/maps/Route118/map.json
index 09d7d8e46b..f0c481b9b0 100644
--- a/data/maps/Route118/map.json
+++ b/data/maps/Route118/map.json
@@ -83,6 +83,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_ROUTE118_GABBY_1",
"graphics_id": "OBJ_EVENT_GFX_REPORTER_F",
"x": 33,
"y": 8,
@@ -96,6 +97,7 @@
"flag": "FLAG_HIDE_ROUTE_118_GABBY_AND_TY_1"
},
{
+ "local_id": "LOCALID_ROUTE118_TY_1",
"graphics_id": "OBJ_EVENT_GFX_CAMERAMAN",
"x": 34,
"y": 8,
@@ -122,6 +124,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_ROUTE118_GABBY_2",
"graphics_id": "OBJ_EVENT_GFX_REPORTER_F",
"x": 33,
"y": 8,
@@ -135,6 +138,7 @@
"flag": "FLAG_HIDE_ROUTE_118_GABBY_AND_TY_2"
},
{
+ "local_id": "LOCALID_ROUTE118_TY_2",
"graphics_id": "OBJ_EVENT_GFX_CAMERAMAN",
"x": 34,
"y": 8,
@@ -148,6 +152,7 @@
"flag": "FLAG_HIDE_ROUTE_118_GABBY_AND_TY_2"
},
{
+ "local_id": "LOCALID_ROUTE118_GABBY_3",
"graphics_id": "OBJ_EVENT_GFX_REPORTER_F",
"x": 33,
"y": 8,
@@ -161,6 +166,7 @@
"flag": "FLAG_HIDE_ROUTE_118_GABBY_AND_TY_3"
},
{
+ "local_id": "LOCALID_ROUTE118_TY_3",
"graphics_id": "OBJ_EVENT_GFX_CAMERAMAN",
"x": 34,
"y": 8,
@@ -265,6 +271,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_ROUTE118_STEVEN",
"graphics_id": "OBJ_EVENT_GFX_STEVEN",
"x": 44,
"y": 7,
diff --git a/data/maps/Route118/scripts.inc b/data/maps/Route118/scripts.inc
index 092c3d12fe..92dd10592a 100644
--- a/data/maps/Route118/scripts.inc
+++ b/data/maps/Route118/scripts.inc
@@ -1,5 +1,3 @@
-.set LOCALID_STEVEN, 19
-
Route118_MapScripts::
map_script MAP_SCRIPT_ON_TRANSITION, Route118_OnTransition
map_script MAP_SCRIPT_ON_LOAD, Route118_OnLoad
@@ -65,9 +63,9 @@ Route118_EventScript_RouteSign119::
Route118_EventScript_StevenTrigger0::
lockall
setvar VAR_0x8008, 0
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_FaceUp
+ applymovement LOCALID_PLAYER, Common_Movement_FaceUp
waitmovement 0
- applymovement LOCALID_STEVEN, Route118_Movement_StevenApproachLedge0
+ applymovement LOCALID_ROUTE118_STEVEN, Route118_Movement_StevenApproachLedge0
waitmovement 0
goto Route118_EventScript_StevenTrigger
end
@@ -75,7 +73,7 @@ Route118_EventScript_StevenTrigger0::
Route118_EventScript_StevenTrigger1::
lockall
setvar VAR_0x8008, 1
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_FaceUp
+ applymovement LOCALID_PLAYER, Common_Movement_FaceUp
waitmovement 0
goto Route118_EventScript_StevenTrigger
end
@@ -83,16 +81,16 @@ Route118_EventScript_StevenTrigger1::
Route118_EventScript_StevenTrigger2::
lockall
setvar VAR_0x8008, 2
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_FaceUp
+ applymovement LOCALID_PLAYER, Common_Movement_FaceUp
waitmovement 0
- applymovement LOCALID_STEVEN, Route118_Movement_StevenApproachLedge2
+ applymovement LOCALID_ROUTE118_STEVEN, Route118_Movement_StevenApproachLedge2
waitmovement 0
goto Route118_EventScript_StevenTrigger
end
Route118_EventScript_StevenTrigger::
playse SE_LEDGE
- applymovement LOCALID_STEVEN, Route118_Movement_StevenJumpLedge
+ applymovement LOCALID_ROUTE118_STEVEN, Route118_Movement_StevenJumpLedge
waitmovement 0
delay 30
msgbox Route118_Text_StevenQuestions, MSGBOX_DEFAULT
@@ -101,25 +99,25 @@ Route118_EventScript_StevenTrigger::
call_if_eq VAR_0x8008, 1, Route118_EventScript_StevenExit1
call_if_eq VAR_0x8008, 2, Route118_EventScript_StevenExit2
setvar VAR_ROUTE118_STATE, 1
- removeobject LOCALID_STEVEN
+ removeobject LOCALID_ROUTE118_STEVEN
releaseall
end
Route118_EventScript_StevenExit0::
- applymovement OBJ_EVENT_ID_PLAYER, Route118_Movement_PlayerWatchStevenExit
- applymovement LOCALID_STEVEN, Route118_Movement_StevenExit0
+ applymovement LOCALID_PLAYER, Route118_Movement_PlayerWatchStevenExit
+ applymovement LOCALID_ROUTE118_STEVEN, Route118_Movement_StevenExit0
waitmovement 0
return
Route118_EventScript_StevenExit1::
- applymovement OBJ_EVENT_ID_PLAYER, Route118_Movement_PlayerWatchStevenExit
- applymovement LOCALID_STEVEN, Route118_Movement_StevenExit1
+ applymovement LOCALID_PLAYER, Route118_Movement_PlayerWatchStevenExit
+ applymovement LOCALID_ROUTE118_STEVEN, Route118_Movement_StevenExit1
waitmovement 0
return
Route118_EventScript_StevenExit2::
- applymovement OBJ_EVENT_ID_PLAYER, Route118_Movement_PlayerWatchStevenExit
- applymovement LOCALID_STEVEN, Route118_Movement_StevenExit2
+ applymovement LOCALID_PLAYER, Route118_Movement_PlayerWatchStevenExit
+ applymovement LOCALID_ROUTE118_STEVEN, Route118_Movement_StevenExit2
waitmovement 0
return
diff --git a/data/maps/Route119/map.json b/data/maps/Route119/map.json
index 22473850d0..70a98d65d6 100644
--- a/data/maps/Route119/map.json
+++ b/data/maps/Route119/map.json
@@ -221,6 +221,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_ROUTE119_RIVAL",
"graphics_id": "OBJ_EVENT_GFX_VAR_0",
"x": 25,
"y": 32,
@@ -338,6 +339,7 @@
"flag": "FLAG_HIDE_ROUTE_119_TEAM_AQUA"
},
{
+ "local_id": "LOCALID_ROUTE119_RIVAL_ON_BIKE",
"graphics_id": "OBJ_EVENT_GFX_VAR_3",
"x": 17,
"y": 33,
@@ -572,6 +574,7 @@
"flag": "FLAG_ITEM_ROUTE_119_ELIXIR_2"
},
{
+ "local_id": "LOCALID_ROUTE119_SCOTT",
"graphics_id": "OBJ_EVENT_GFX_SCOTT",
"x": 28,
"y": 25,
diff --git a/data/maps/Route119/scripts.inc b/data/maps/Route119/scripts.inc
index 6c9767dcb6..d218fb60dc 100644
--- a/data/maps/Route119/scripts.inc
+++ b/data/maps/Route119/scripts.inc
@@ -1,7 +1,3 @@
-.set LOCALID_RIVAL, 16
-.set LOCALID_RIVAL_ON_BIKE, 25
-.set LOCALID_SCOTT, 43
-
Route119_MapScripts::
map_script MAP_SCRIPT_ON_RESUME, Route119_OnResume
map_script MAP_SCRIPT_ON_TRANSITION, Route119_OnTransition
@@ -42,20 +38,20 @@ Route119_EventScript_RivalTrigger2::
Route119_EventScript_RivalEncounter::
lockall
- addobject LOCALID_RIVAL_ON_BIKE
+ addobject LOCALID_ROUTE119_RIVAL_ON_BIKE
checkplayergender
call_if_eq VAR_RESULT, MALE, Route119_EventScript_PlayMayMusic
call_if_eq VAR_RESULT, FEMALE, Route119_EventScript_PlayBrendanMusic
delay 65
call_if_eq VAR_TEMP_1, 1, Route119_EventScript_RivalEnter1
call_if_eq VAR_TEMP_1, 2, Route119_EventScript_RivalEnter2
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterDown
waitmovement 0
delay 30
call_if_eq VAR_TEMP_1, 1, Route119_EventScript_SetRivalPos1
call_if_eq VAR_TEMP_1, 2, Route119_EventScript_SetRivalPos2
- removeobject LOCALID_RIVAL_ON_BIKE
- addobject LOCALID_RIVAL
+ removeobject LOCALID_ROUTE119_RIVAL_ON_BIKE
+ addobject LOCALID_ROUTE119_RIVAL
delay 30
checkplayergender
goto_if_eq VAR_RESULT, MALE, Route119_EventScript_BattleMay
@@ -140,78 +136,78 @@ Route119_EventScript_RivalExitScottArrive::
closemessage
call_if_eq VAR_TEMP_1, 1, Route119_EventScript_SetRivalPos1
call_if_eq VAR_TEMP_1, 2, Route119_EventScript_SetRivalPos2
- removeobject LOCALID_RIVAL
- addobject LOCALID_RIVAL_ON_BIKE
+ removeobject LOCALID_ROUTE119_RIVAL
+ addobject LOCALID_ROUTE119_RIVAL_ON_BIKE
delay 30
call_if_eq VAR_TEMP_1, 1, Route119_EventScript_RivalExit1
call_if_eq VAR_TEMP_1, 2, Route119_EventScript_RivalExit2
- removeobject LOCALID_RIVAL_ON_BIKE
+ removeobject LOCALID_ROUTE119_RIVAL_ON_BIKE
setvar VAR_ROUTE119_STATE, 1
savebgm MUS_DUMMY
fadedefaultbgm
delay 60
call_if_eq VAR_TEMP_1, 1, Route119_EventScript_SetScottPos1
call_if_eq VAR_TEMP_1, 2, Route119_EventScript_SetScottPos2
- addobject LOCALID_SCOTT
- applymovement LOCALID_SCOTT, Route119_Movement_ScottEnter
+ addobject LOCALID_ROUTE119_SCOTT
+ applymovement LOCALID_ROUTE119_SCOTT, Route119_Movement_ScottEnter
waitmovement 0
addvar VAR_SCOTT_STATE, 1
msgbox Route119_Text_ScottWayToGoBeSeeingYou, MSGBOX_DEFAULT
closemessage
call_if_eq VAR_TEMP_1, 1, Route119_EventScript_ScottExit1
call_if_eq VAR_TEMP_1, 2, Route119_EventScript_ScottExit2
- removeobject LOCALID_SCOTT
+ removeobject LOCALID_ROUTE119_SCOTT
releaseall
end
Route119_EventScript_SetScottPos1::
- setobjectxyperm LOCALID_SCOTT, 27, 25
+ setobjectxyperm LOCALID_ROUTE119_SCOTT, 27, 25
return
Route119_EventScript_SetScottPos2::
- setobjectxyperm LOCALID_SCOTT, 28, 25
+ setobjectxyperm LOCALID_ROUTE119_SCOTT, 28, 25
return
Route119_EventScript_ScottExit1::
- applymovement LOCALID_SCOTT, Route119_Movement_ScottExit1
+ applymovement LOCALID_ROUTE119_SCOTT, Route119_Movement_ScottExit1
waitmovement 0
return
Route119_EventScript_ScottExit2::
- applymovement LOCALID_SCOTT, Route119_Movement_ScottExit2
+ applymovement LOCALID_ROUTE119_SCOTT, Route119_Movement_ScottExit2
waitmovement 0
return
Route119_EventScript_RivalEnter1::
- applymovement LOCALID_RIVAL_ON_BIKE, Route119_Movement_RivalEnter1
+ applymovement LOCALID_ROUTE119_RIVAL_ON_BIKE, Route119_Movement_RivalEnter1
waitmovement 0
return
Route119_EventScript_RivalEnter2::
- applymovement LOCALID_RIVAL_ON_BIKE, Route119_Movement_RivalEnter2
+ applymovement LOCALID_ROUTE119_RIVAL_ON_BIKE, Route119_Movement_RivalEnter2
waitmovement 0
return
Route119_EventScript_RivalExit1::
- applymovement OBJ_EVENT_ID_PLAYER, Route119_Movement_PlayerWatchRivalExit1
- applymovement LOCALID_RIVAL_ON_BIKE, Route119_Movement_RivalExit1
+ applymovement LOCALID_PLAYER, Route119_Movement_PlayerWatchRivalExit1
+ applymovement LOCALID_ROUTE119_RIVAL_ON_BIKE, Route119_Movement_RivalExit1
waitmovement 0
return
Route119_EventScript_RivalExit2::
- applymovement OBJ_EVENT_ID_PLAYER, Route119_Movement_PlayerWatchRivalExit2
- applymovement LOCALID_RIVAL_ON_BIKE, Route119_Movement_RivalExit2
+ applymovement LOCALID_PLAYER, Route119_Movement_PlayerWatchRivalExit2
+ applymovement LOCALID_ROUTE119_RIVAL_ON_BIKE, Route119_Movement_RivalExit2
waitmovement 0
return
Route119_EventScript_SetRivalPos1::
- setobjectxyperm LOCALID_RIVAL, 25, 32
- setobjectxyperm LOCALID_RIVAL_ON_BIKE, 25, 32
+ setobjectxyperm LOCALID_ROUTE119_RIVAL, 25, 32
+ setobjectxyperm LOCALID_ROUTE119_RIVAL_ON_BIKE, 25, 32
return
Route119_EventScript_SetRivalPos2::
- setobjectxyperm LOCALID_RIVAL, 26, 32
- setobjectxyperm LOCALID_RIVAL_ON_BIKE, 26, 32
+ setobjectxyperm LOCALID_ROUTE119_RIVAL, 26, 32
+ setobjectxyperm LOCALID_ROUTE119_RIVAL_ON_BIKE, 26, 32
return
Route119_Movement_PlayerWatchRivalExit1:
diff --git a/data/maps/Route119_WeatherInstitute_1F/map.json b/data/maps/Route119_WeatherInstitute_1F/map.json
index 02f2ffe37f..a0d5e12ff3 100644
--- a/data/maps/Route119_WeatherInstitute_1F/map.json
+++ b/data/maps/Route119_WeatherInstitute_1F/map.json
@@ -67,6 +67,7 @@
"flag": "FLAG_HIDE_WEATHER_INSTITUTE_1F_WORKERS"
},
{
+ "local_id": "LOCALID_WEATHER_INSTITUTE_LITTLE_BOY",
"graphics_id": "OBJ_EVENT_GFX_NINJA_BOY",
"x": 14,
"y": 11,
diff --git a/data/maps/Route119_WeatherInstitute_1F/scripts.inc b/data/maps/Route119_WeatherInstitute_1F/scripts.inc
index cce41bfb5f..927984aebe 100644
--- a/data/maps/Route119_WeatherInstitute_1F/scripts.inc
+++ b/data/maps/Route119_WeatherInstitute_1F/scripts.inc
@@ -1,5 +1,3 @@
-.set LOCALID_LITTLE_BOY, 5
-
Route119_WeatherInstitute_1F_MapScripts::
map_script MAP_SCRIPT_ON_TRANSITION, Route119_WeatherInstitute_1F_OnTransition
.byte 0
@@ -9,8 +7,8 @@ Route119_WeatherInstitute_1F_OnTransition:
end
Route119_WeatherInstitute_1F_EventScript_SetLittleBoyPos::
- setobjectxyperm LOCALID_LITTLE_BOY, 0, 5
- setobjectmovementtype LOCALID_LITTLE_BOY, MOVEMENT_TYPE_FACE_RIGHT
+ setobjectxyperm LOCALID_WEATHER_INSTITUTE_LITTLE_BOY, 0, 5
+ setobjectmovementtype LOCALID_WEATHER_INSTITUTE_LITTLE_BOY, MOVEMENT_TYPE_FACE_RIGHT
return
Route119_WeatherInstitute_1F_EventScript_LittleBoy::
diff --git a/data/maps/Route119_WeatherInstitute_2F/map.json b/data/maps/Route119_WeatherInstitute_2F/map.json
index 935ea48dd9..8b62e63a91 100644
--- a/data/maps/Route119_WeatherInstitute_2F/map.json
+++ b/data/maps/Route119_WeatherInstitute_2F/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_WEATHER_INSTITUTE_2F_GRUNT_1",
"graphics_id": "OBJ_EVENT_GFX_AQUA_MEMBER_M",
"x": 15,
"y": 6,
@@ -28,6 +29,7 @@
"flag": "FLAG_HIDE_ROUTE_119_TEAM_AQUA"
},
{
+ "local_id": "LOCALID_WEATHER_INSTITUTE_2F_GRUNT_2",
"graphics_id": "OBJ_EVENT_GFX_AQUA_MEMBER_M",
"x": 10,
"y": 8,
@@ -41,6 +43,7 @@
"flag": "FLAG_HIDE_ROUTE_119_TEAM_AQUA"
},
{
+ "local_id": "LOCALID_WEATHER_INSTITUTE_2F_SHELLY",
"graphics_id": "OBJ_EVENT_GFX_AQUA_MEMBER_F",
"x": 4,
"y": 6,
@@ -67,6 +70,7 @@
"flag": "FLAG_HIDE_WEATHER_INSTITUTE_2F_WORKERS"
},
{
+ "local_id": "LOCALID_WEATHER_INSTITUTE_2F_SCIENTIST",
"graphics_id": "OBJ_EVENT_GFX_SCIENTIST_1",
"x": 18,
"y": 6,
@@ -93,6 +97,7 @@
"flag": "FLAG_HIDE_WEATHER_INSTITUTE_2F_WORKERS"
},
{
+ "local_id": "LOCALID_WEATHER_INSTITUTE_2F_GRUNT_3",
"graphics_id": "OBJ_EVENT_GFX_AQUA_MEMBER_M",
"x": 16,
"y": 6,
@@ -106,6 +111,7 @@
"flag": "FLAG_HIDE_WEATHER_INSTITUTE_2F_AQUA_GRUNT_M"
},
{
+ "local_id": "LOCALID_WEATHER_INSTITUTE_2F_GRUNT_4",
"graphics_id": "OBJ_EVENT_GFX_AQUA_MEMBER_F",
"x": 19,
"y": 6,
diff --git a/data/maps/Route119_WeatherInstitute_2F/scripts.inc b/data/maps/Route119_WeatherInstitute_2F/scripts.inc
index 2dfec9bffe..5dd797ab3f 100644
--- a/data/maps/Route119_WeatherInstitute_2F/scripts.inc
+++ b/data/maps/Route119_WeatherInstitute_2F/scripts.inc
@@ -1,10 +1,3 @@
-.set LOCALID_GRUNT_1, 1
-.set LOCALID_GRUNT_2, 2
-.set LOCALID_SHELLY, 3
-.set LOCALID_SCIENTIST, 5
-.set LOCALID_GRUNT_3, 7
-.set LOCALID_GRUNT_4, 8
-
Route119_WeatherInstitute_2F_MapScripts::
map_script MAP_SCRIPT_ON_TRANSITION, Route119_WeatherInstitute_2F_OnTransition
.byte 0
@@ -16,18 +9,18 @@ Route119_WeatherInstitute_2F_OnTransition:
end
Route119_WeatherInstitute_2F_EventScript_SetScientistPosAquaHere::
- setobjectxyperm LOCALID_SCIENTIST, 1, 6
- setobjectmovementtype LOCALID_SCIENTIST, MOVEMENT_TYPE_FACE_RIGHT
+ setobjectxyperm LOCALID_WEATHER_INSTITUTE_2F_SCIENTIST, 1, 6
+ setobjectmovementtype LOCALID_WEATHER_INSTITUTE_2F_SCIENTIST, MOVEMENT_TYPE_FACE_RIGHT
return
Route119_WeatherInstitute_2F_EventScript_SetScientistPosAquaGone::
- setobjectxyperm LOCALID_SCIENTIST, 4, 6
- setobjectmovementtype LOCALID_SCIENTIST, MOVEMENT_TYPE_FACE_RIGHT
+ setobjectxyperm LOCALID_WEATHER_INSTITUTE_2F_SCIENTIST, 4, 6
+ setobjectmovementtype LOCALID_WEATHER_INSTITUTE_2F_SCIENTIST, MOVEMENT_TYPE_FACE_RIGHT
return
Route119_WeatherInstitute_2F_EventScript_SetScientistPosGameClear::
- setobjectxyperm LOCALID_SCIENTIST, 2, 2
- setobjectmovementtype LOCALID_SCIENTIST, MOVEMENT_TYPE_FACE_UP
+ setobjectxyperm LOCALID_WEATHER_INSTITUTE_2F_SCIENTIST, 2, 2
+ setobjectmovementtype LOCALID_WEATHER_INSTITUTE_2F_SCIENTIST, MOVEMENT_TYPE_FACE_UP
return
Route119_WeatherInstitute_2F_EventScript_Grunt5::
@@ -53,16 +46,16 @@ Route119_WeatherInstitute_2F_EventScript_Shelly::
Route119_WeatherInstitute_2F_EventScript_ShellyDefeated::
msgbox Route119_WeatherInstitute_2F_Text_ShellyPostBattle, MSGBOX_DEFAULT
closemessage
- addobject LOCALID_GRUNT_3
- applymovement LOCALID_GRUNT_3, Route119_WeatherInstitute_2F_Movement_GruntApproachShelly
- applymovement OBJ_EVENT_ID_PLAYER, Route119_WeatherInstitute_2F_Movement_ShovePlayerOutOfWay
+ addobject LOCALID_WEATHER_INSTITUTE_2F_GRUNT_3
+ applymovement LOCALID_WEATHER_INSTITUTE_2F_GRUNT_3, Route119_WeatherInstitute_2F_Movement_GruntApproachShelly
+ applymovement LOCALID_PLAYER, Route119_WeatherInstitute_2F_Movement_ShovePlayerOutOfWay
waitmovement 0
msgbox Route119_WeatherInstitute_2F_Text_TeamMagmaJustPassedBy, MSGBOX_DEFAULT
closemessage
playse SE_PIN
- applymovement LOCALID_SHELLY, Common_Movement_ExclamationMark
+ applymovement LOCALID_WEATHER_INSTITUTE_2F_SHELLY, Common_Movement_ExclamationMark
waitmovement 0
- applymovement LOCALID_SHELLY, Common_Movement_Delay48
+ applymovement LOCALID_WEATHER_INSTITUTE_2F_SHELLY, Common_Movement_Delay48
waitmovement 0
msgbox Route119_WeatherInstitute_2F_Text_WeHaveToHurryToMtPyre, MSGBOX_DEFAULT
closemessage
@@ -72,17 +65,17 @@ Route119_WeatherInstitute_2F_EventScript_ShellyDefeated::
fadescreen FADE_TO_BLACK
setflag FLAG_HIDE_ROUTE_119_TEAM_AQUA
setflag FLAG_HIDE_WEATHER_INSTITUTE_2F_AQUA_GRUNT_M
- removeobject LOCALID_GRUNT_1
- removeobject LOCALID_GRUNT_2
- removeobject LOCALID_SHELLY
- removeobject LOCALID_GRUNT_4
- removeobject LOCALID_GRUNT_3
- applymovement OBJ_EVENT_ID_PLAYER, Route119_WeatherInstitute_2F_Movement_PlayerReturnToPosition
+ removeobject LOCALID_WEATHER_INSTITUTE_2F_GRUNT_1
+ removeobject LOCALID_WEATHER_INSTITUTE_2F_GRUNT_2
+ removeobject LOCALID_WEATHER_INSTITUTE_2F_SHELLY
+ removeobject LOCALID_WEATHER_INSTITUTE_2F_GRUNT_4
+ removeobject LOCALID_WEATHER_INSTITUTE_2F_GRUNT_3
+ applymovement LOCALID_PLAYER, Route119_WeatherInstitute_2F_Movement_PlayerReturnToPosition
waitmovement 0
fadescreen FADE_FROM_BLACK
- applymovement LOCALID_SCIENTIST, Route119_WeatherInstitute_2F_Movement_ScientistApproachPlayer
+ applymovement LOCALID_WEATHER_INSTITUTE_2F_SCIENTIST, Route119_WeatherInstitute_2F_Movement_ScientistApproachPlayer
waitmovement 0
- copyobjectxytoperm LOCALID_SCIENTIST
+ copyobjectxytoperm LOCALID_WEATHER_INSTITUTE_2F_SCIENTIST
goto Route119_WeatherInstitute_2F_EventScript_ReceiveCastform
end
diff --git a/data/maps/Route120/map.json b/data/maps/Route120/map.json
index 29712c35ae..3f1b38807e 100644
--- a/data/maps/Route120/map.json
+++ b/data/maps/Route120/map.json
@@ -234,6 +234,7 @@
"flag": "FLAG_ITEM_ROUTE_120_NUGGET"
},
{
+ "local_id": "LOCALID_ROUTE120_TY_1",
"graphics_id": "OBJ_EVENT_GFX_CAMERAMAN",
"x": 37,
"y": 5,
@@ -247,6 +248,7 @@
"flag": "FLAG_HIDE_ROUTE_120_GABBY_AND_TY_1"
},
{
+ "local_id": "LOCALID_ROUTE120_GABBY_1",
"graphics_id": "OBJ_EVENT_GFX_REPORTER_F",
"x": 36,
"y": 5,
@@ -260,6 +262,7 @@
"flag": "FLAG_HIDE_ROUTE_120_GABBY_AND_TY_1"
},
{
+ "local_id": "LOCALID_ROUTE120_GABBY_2",
"graphics_id": "OBJ_EVENT_GFX_REPORTER_F",
"x": 36,
"y": 5,
@@ -273,6 +276,7 @@
"flag": "FLAG_HIDE_ROUTE_120_GABBY_AND_TY_2"
},
{
+ "local_id": "LOCALID_ROUTE120_TY_2",
"graphics_id": "OBJ_EVENT_GFX_CAMERAMAN",
"x": 37,
"y": 5,
@@ -403,6 +407,7 @@
"flag": "FLAG_ITEM_ROUTE_120_HYPER_POTION"
},
{
+ "local_id": "LOCALID_BRIDGE_KECLEON",
"graphics_id": "OBJ_EVENT_GFX_KECLEON",
"x": 12,
"y": 16,
@@ -416,6 +421,7 @@
"flag": "FLAG_HIDE_ROUTE_120_KECLEON_BRIDGE"
},
{
+ "local_id": "LOCALID_ROUTE120_STEVEN",
"graphics_id": "OBJ_EVENT_GFX_STEVEN",
"x": 13,
"y": 15,
@@ -481,6 +487,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_BRIDGE_KECLEON_SHADOW",
"graphics_id": "OBJ_EVENT_GFX_KECLEON_BRIDGE_SHADOW",
"x": 12,
"y": 16,
diff --git a/data/maps/Route120/scripts.inc b/data/maps/Route120/scripts.inc
index a0bfbc60c3..c3162ecd9d 100644
--- a/data/maps/Route120/scripts.inc
+++ b/data/maps/Route120/scripts.inc
@@ -1,7 +1,4 @@
-.set LOCALID_BRIDGE_KECLEON, 30
-.set LOCALID_STEVEN, 31
-.set LOCALID_BRIDGE_KECLEON_SHADOW, 36 @ They use a second object which is identical to Kecleon but has a reflection palette tag for the bridge shadow
-
+@ LOCALID_BRIDGE_KECLEON_SHADOW is a second object which is identical to LOCALID_BRIDGE_KECLEON but has a reflection palette tag for the bridge shadow
Route120_MapScripts::
map_script MAP_SCRIPT_ON_RESUME, Route120_OnResume
map_script MAP_SCRIPT_ON_TRANSITION, Route120_OnTransition
@@ -180,7 +177,7 @@ Route120_EventScript_StevenBattleKecleon::
closemessage
call_if_eq VAR_FACING, DIR_NORTH, Route120_EventScript_PlayerApproachKecleonNorth
call_if_eq VAR_FACING, DIR_WEST, Route120_EventScript_PlayerApproachKecleonWest
- applymovement LOCALID_STEVEN, Common_Movement_WalkInPlaceFasterLeft
+ applymovement LOCALID_ROUTE120_STEVEN, Common_Movement_WalkInPlaceFasterLeft
waitmovement 0
delay 20
msgbox Route120_Text_StevenUsedDevonScope, MSGBOX_DEFAULT
@@ -214,21 +211,21 @@ Route120_EventScript_RemoveBridgeKecleonPostBattle::
end
Route120_EventScript_StevenGiveDeconScope::
- applymovement LOCALID_STEVEN, Common_Movement_WalkInPlaceFasterDown
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_ROUTE120_STEVEN, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterUp
waitmovement 0
msgbox Route120_Text_StevenGiveDevonScope, MSGBOX_DEFAULT
giveitem ITEM_DEVON_SCOPE
setflag FLAG_RECEIVED_DEVON_SCOPE
msgbox Route120_Text_StevenGoodbye, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_STEVEN, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_ROUTE120_STEVEN, Common_Movement_WalkInPlaceFasterDown
waitmovement 0
delay 50
setfieldeffectargument 0, 1
dofieldeffect FLDEFF_NPCFLY_OUT
delay 15
- removeobject LOCALID_STEVEN
+ removeobject LOCALID_ROUTE120_STEVEN
waitfieldeffect FLDEFF_NPCFLY_OUT
setmetatile 13, 15, METATILE_Fortree_WoodBridge1_Top, FALSE
setmetatile 12, 16, METATILE_Fortree_WoodBridge1_Bottom, FALSE
@@ -239,12 +236,12 @@ Route120_EventScript_StevenGiveDeconScope::
end
Route120_EventScript_PlayerApproachKecleonNorth::
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
waitmovement 0
return
Route120_EventScript_PlayerApproachKecleonWest::
- applymovement OBJ_EVENT_ID_PLAYER, Route120_Movement_ApproachKecleonWest
+ applymovement LOCALID_PLAYER, Route120_Movement_ApproachKecleonWest
waitmovement 0
return
diff --git a/data/maps/Route121/map.json b/data/maps/Route121/map.json
index f7a27d4c7a..3d840037e7 100644
--- a/data/maps/Route121/map.json
+++ b/data/maps/Route121/map.json
@@ -174,6 +174,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_ROUTE121_GRUNT_1",
"graphics_id": "OBJ_EVENT_GFX_AQUA_MEMBER_M",
"x": 30,
"y": 8,
@@ -187,6 +188,7 @@
"flag": "FLAG_HIDE_ROUTE_121_TEAM_AQUA_GRUNTS"
},
{
+ "local_id": "LOCALID_ROUTE121_GRUNT_2",
"graphics_id": "OBJ_EVENT_GFX_AQUA_MEMBER_M",
"x": 30,
"y": 7,
@@ -200,6 +202,7 @@
"flag": "FLAG_HIDE_ROUTE_121_TEAM_AQUA_GRUNTS"
},
{
+ "local_id": "LOCALID_ROUTE121_GRUNT_3",
"graphics_id": "OBJ_EVENT_GFX_AQUA_MEMBER_M",
"x": 31,
"y": 7,
diff --git a/data/maps/Route121/scripts.inc b/data/maps/Route121/scripts.inc
index 317328825c..beb9e3a91d 100644
--- a/data/maps/Route121/scripts.inc
+++ b/data/maps/Route121/scripts.inc
@@ -1,7 +1,3 @@
-.set LOCALID_GRUNT_1, 12
-.set LOCALID_GRUNT_2, 13
-.set LOCALID_GRUNT_3, 14
-
Route121_MapScripts::
.byte 0
@@ -20,18 +16,18 @@ Route121_EventScript_SafariZoneSign::
Route121_EventScript_AquaGruntsMoveOut::
lockall
playbgm MUS_ENCOUNTER_AQUA, FALSE
- applymovement LOCALID_GRUNT_2, Common_Movement_WalkInPlaceRight
+ applymovement LOCALID_ROUTE121_GRUNT_2, Common_Movement_WalkInPlaceRight
waitmovement 0
msgbox Route121_Text_OkayMoveOutToMtPyre, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_GRUNT_1, Route121_Movement_Grunt1Exit
- applymovement LOCALID_GRUNT_2, Route121_Movement_Grunt2Exit
- applymovement LOCALID_GRUNT_3, Route121_Movement_Grunt3Exit
+ applymovement LOCALID_ROUTE121_GRUNT_1, Route121_Movement_Grunt1Exit
+ applymovement LOCALID_ROUTE121_GRUNT_2, Route121_Movement_Grunt2Exit
+ applymovement LOCALID_ROUTE121_GRUNT_3, Route121_Movement_Grunt3Exit
waitmovement 0
fadedefaultbgm
- removeobject LOCALID_GRUNT_1
- removeobject LOCALID_GRUNT_2
- removeobject LOCALID_GRUNT_3
+ removeobject LOCALID_ROUTE121_GRUNT_1
+ removeobject LOCALID_ROUTE121_GRUNT_2
+ removeobject LOCALID_ROUTE121_GRUNT_3
setvar VAR_ROUTE121_STATE, 1
releaseall
end
diff --git a/data/maps/Route121_SafariZoneEntrance/scripts.inc b/data/maps/Route121_SafariZoneEntrance/scripts.inc
index 92fdc2d0bd..0fb6411406 100644
--- a/data/maps/Route121_SafariZoneEntrance/scripts.inc
+++ b/data/maps/Route121_SafariZoneEntrance/scripts.inc
@@ -8,7 +8,7 @@ Route121_SafariZoneEntrance_OnFrame:
Route121_SafariZoneEntrance_EventScript_ExitSafariZone::
lockall
- applymovement OBJ_EVENT_ID_PLAYER, Route121_SafariZoneEntrance_Movement_ExitSafariZone
+ applymovement LOCALID_PLAYER, Route121_SafariZoneEntrance_Movement_ExitSafariZone
waitmovement 0
setvar VAR_SAFARI_ZONE_STATE, 0
releaseall
@@ -45,7 +45,7 @@ Route121_SafariZoneEntrance_EventScript_FirstTimeInfo::
Route121_SafariZoneEntrance_EventScript_EntranceCounterTrigger::
lockall
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterUp
waitmovement 0
showmoneybox 0, 0
msgbox Route121_SafariZoneEntrance_Text_WouldYouLikeToPlay, MSGBOX_YESNO
@@ -71,7 +71,7 @@ Route121_SafariZoneEntrance_EventScript_TryEnterSafariZone::
msgbox Route121_SafariZoneEntrance_Text_PleaseEnjoyYourself, MSGBOX_DEFAULT
closemessage
hidemoneybox
- applymovement OBJ_EVENT_ID_PLAYER, Route121_SafariZoneEntrance_Movement_EnterSafariZone
+ applymovement LOCALID_PLAYER, Route121_SafariZoneEntrance_Movement_EnterSafariZone
waitmovement 0
special EnterSafariMode
setvar VAR_SAFARI_ZONE_STATE, 2
@@ -105,7 +105,7 @@ Route121_SafariZoneEntrance_EventScript_NotEnoughMoney::
Route121_SafariZoneEntrance_EventScript_MovePlayerBackFromCounter::
closemessage
hidemoneybox
- applymovement OBJ_EVENT_ID_PLAYER, Route121_SafariZoneEntrance_Movement_BackAwayFromCounter
+ applymovement LOCALID_PLAYER, Route121_SafariZoneEntrance_Movement_BackAwayFromCounter
waitmovement 0
releaseall
end
diff --git a/data/maps/Route128/map.json b/data/maps/Route128/map.json
index 464aa83fcc..6ca7fbc908 100644
--- a/data/maps/Route128/map.json
+++ b/data/maps/Route128/map.json
@@ -62,6 +62,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_ROUTE128_STEVEN",
"graphics_id": "OBJ_EVENT_GFX_STEVEN",
"x": 40,
"y": 22,
@@ -75,6 +76,7 @@
"flag": "FLAG_HIDE_ROUTE_128_STEVEN"
},
{
+ "local_id": "LOCALID_ROUTE128_ARCHIE",
"graphics_id": "OBJ_EVENT_GFX_ARCHIE",
"x": 37,
"y": 22,
@@ -88,6 +90,7 @@
"flag": "FLAG_HIDE_ROUTE_128_ARCHIE"
},
{
+ "local_id": "LOCALID_ROUTE128_MAXIE",
"graphics_id": "OBJ_EVENT_GFX_MAXIE",
"x": 38,
"y": 21,
diff --git a/data/maps/Route128/scripts.inc b/data/maps/Route128/scripts.inc
index d08605128a..06a75d87c4 100644
--- a/data/maps/Route128/scripts.inc
+++ b/data/maps/Route128/scripts.inc
@@ -1,7 +1,3 @@
-.set LOCALID_STEVEN, 3
-.set LOCALID_ARCHIE, 4
-.set LOCALID_MAXIE, 5
-
Route128_MapScripts::
map_script MAP_SCRIPT_ON_TRANSITION, Route128_OnTransition
map_script MAP_SCRIPT_ON_FRAME_TABLE, Route128_OnFrame
@@ -18,64 +14,64 @@ Route128_OnFrame:
Route128_EventScript_KyogreAwakenedScene::
lockall
delay 20
- applymovement LOCALID_ARCHIE, Route128_Movement_ArchieLookAround
+ applymovement LOCALID_ROUTE128_ARCHIE, Route128_Movement_ArchieLookAround
waitmovement 0
msgbox Route128_Text_ArchieWhatHappened, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_ARCHIE, Route128_Movement_ArchieBackUp
+ applymovement LOCALID_ROUTE128_ARCHIE, Route128_Movement_ArchieBackUp
waitmovement 0
msgbox Route128_Text_ArchieIOnlyWanted, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_MAXIE, Route128_Movement_MaxieApproachArchie
+ applymovement LOCALID_ROUTE128_MAXIE, Route128_Movement_MaxieApproachArchie
waitmovement 0
- applymovement LOCALID_ARCHIE, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_ROUTE128_ARCHIE, Common_Movement_WalkInPlaceFasterUp
waitmovement 0
msgbox Route128_Text_MaxieDoYouUnderstandNow, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_MAXIE, Route128_Movement_MaxieApproachPlayer
+ applymovement LOCALID_ROUTE128_MAXIE, Route128_Movement_MaxieApproachPlayer
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterUp
waitmovement 0
msgbox Route128_Text_MaxieResposibilityFallsToArchieAndMe, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_ARCHIE, Route128_Movement_ArchieRunLeft
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
- applymovement LOCALID_MAXIE, Route128_Movement_MaxieWalkLeft
+ applymovement LOCALID_ROUTE128_ARCHIE, Route128_Movement_ArchieRunLeft
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
+ applymovement LOCALID_ROUTE128_MAXIE, Route128_Movement_MaxieWalkLeft
waitmovement 0
msgbox Route128_Text_MaxieThisDefiesBelief, MSGBOX_DEFAULT
closemessage
delay 40
- applymovement LOCALID_MAXIE, Route128_Movement_MaxieExit
- applymovement LOCALID_ARCHIE, Route128_Movement_ArchieExit
+ applymovement LOCALID_ROUTE128_MAXIE, Route128_Movement_MaxieExit
+ applymovement LOCALID_ROUTE128_ARCHIE, Route128_Movement_ArchieExit
waitmovement 0
- removeobject LOCALID_MAXIE
- removeobject LOCALID_ARCHIE
+ removeobject LOCALID_ROUTE128_MAXIE
+ removeobject LOCALID_ROUTE128_ARCHIE
delay 100
setfieldeffectargument 0, 1
dofieldeffect FLDEFF_NPCFLY_OUT
waitfieldeffect FLDEFF_NPCFLY_OUT
- addobject LOCALID_STEVEN
- applymovement LOCALID_STEVEN, Route128_Movement_StevenApproachPlayer
+ addobject LOCALID_ROUTE128_STEVEN
+ applymovement LOCALID_ROUTE128_STEVEN, Route128_Movement_StevenApproachPlayer
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterRight
waitmovement 0
msgbox Route128_Text_StevenWhatIsHappening, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_STEVEN, Route128_Movement_StevenWalkUp
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_ROUTE128_STEVEN, Route128_Movement_StevenWalkUp
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterUp
waitmovement 0
msgbox Route128_Text_StevenWholeWorldWillDrown, MSGBOX_DEFAULT
- applymovement LOCALID_STEVEN, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_ROUTE128_STEVEN, Common_Movement_WalkInPlaceFasterDown
waitmovement 0
msgbox Route128_Text_StevenImGoingToSootopolis, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_STEVEN, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_ROUTE128_STEVEN, Common_Movement_WalkInPlaceFasterDown
waitmovement 0
delay 50
setfieldeffectargument 0, 1
dofieldeffect FLDEFF_NPCFLY_OUT
delay 15
- removeobject LOCALID_STEVEN
+ removeobject LOCALID_ROUTE128_STEVEN
waitfieldeffect FLDEFF_NPCFLY_OUT
clearflag FLAG_HIDE_MAP_NAME_POPUP
setvar VAR_ROUTE128_STATE, 2
diff --git a/data/maps/RustboroCity/map.json b/data/maps/RustboroCity/map.json
index 9a987ab284..4f0f7248a1 100644
--- a/data/maps/RustboroCity/map.json
+++ b/data/maps/RustboroCity/map.json
@@ -109,6 +109,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_RUSTBORO_LITTLE_BOY",
"graphics_id": "OBJ_EVENT_GFX_LITTLE_BOY",
"x": 24,
"y": 51,
@@ -122,6 +123,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_RUSTBORO_LITTLE_GIRL",
"graphics_id": "OBJ_EVENT_GFX_LITTLE_GIRL",
"x": 25,
"y": 51,
@@ -135,6 +137,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_RUSTBORO_DEVON_EMPLOYEE",
"graphics_id": "OBJ_EVENT_GFX_MAN_2",
"x": 30,
"y": 10,
@@ -148,6 +151,7 @@
"flag": "FLAG_HIDE_RUSTBORO_CITY_DEVON_EMPLOYEE_1"
},
{
+ "local_id": "LOCALID_RUSTBORO_GRUNT",
"graphics_id": "OBJ_EVENT_GFX_AQUA_MEMBER_M",
"x": 13,
"y": 21,
@@ -200,6 +204,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_RUSTBORO_RIVAL",
"graphics_id": "OBJ_EVENT_GFX_VAR_0",
"x": 16,
"y": 50,
@@ -213,6 +218,7 @@
"flag": "FLAG_HIDE_RUSTBORO_CITY_RIVAL"
},
{
+ "local_id": "LOCALID_RUSTBORO_SCIENTIST",
"graphics_id": "OBJ_EVENT_GFX_SCIENTIST_1",
"x": 11,
"y": 15,
diff --git a/data/maps/RustboroCity/scripts.inc b/data/maps/RustboroCity/scripts.inc
index 28fd389210..b502e7b615 100644
--- a/data/maps/RustboroCity/scripts.inc
+++ b/data/maps/RustboroCity/scripts.inc
@@ -1,10 +1,3 @@
-.set LOCALID_LITTLE_BOY, 7
-.set LOCALID_LITTLE_GIRL, 8
-.set LOCALID_DEVON_EMPLOYEE, 9
-.set LOCALID_GRUNT, 10
-.set LOCALID_RIVAL, 14
-.set LOCALID_SCIENTIST, 15
-
RustboroCity_MapScripts::
map_script MAP_SCRIPT_ON_TRANSITION, RustboroCity_OnTransition
map_script MAP_SCRIPT_ON_FRAME_TABLE, RustboroCity_OnFrame
@@ -20,11 +13,11 @@ RustboroCity_OnTransition:
RustboroCity_EventScript_PositionScientistForExit::
goto_if_eq VAR_TEMP_0, 11, RustboroCity_EventScript_PositionScientistLeftExit
- setobjectxyperm LOCALID_SCIENTIST, 12, 15
+ setobjectxyperm LOCALID_RUSTBORO_SCIENTIST, 12, 15
end
RustboroCity_EventScript_PositionScientistLeftExit::
- setobjectxyperm LOCALID_SCIENTIST, 11, 15
+ setobjectxyperm LOCALID_RUSTBORO_SCIENTIST, 11, 15
end
RustboroCity_EventScript_HideMapNamePopup::
@@ -38,26 +31,26 @@ RustboroCity_OnFrame:
RustboroCity_EventScript_ScientistAddMatchCall::
lockall
setvar VAR_ROUTE104_STATE, 1
- applymovement OBJ_EVENT_ID_PLAYER, RustboroCity_Movement_PlayerWalkDown
+ applymovement LOCALID_PLAYER, RustboroCity_Movement_PlayerWalkDown
waitmovement 0
playse SE_EXIT
delay 10
- addobject LOCALID_SCIENTIST
- applymovement LOCALID_SCIENTIST, RustboroCity_Movement_ScientistApproachPlayer
+ addobject LOCALID_RUSTBORO_SCIENTIST
+ applymovement LOCALID_RUSTBORO_SCIENTIST, RustboroCity_Movement_ScientistApproachPlayer
waitmovement 0
playse SE_PIN
- applymovement LOCALID_SCIENTIST, Common_Movement_ExclamationMark
+ applymovement LOCALID_RUSTBORO_SCIENTIST, Common_Movement_ExclamationMark
waitmovement 0
- applymovement LOCALID_SCIENTIST, Common_Movement_Delay48
+ applymovement LOCALID_RUSTBORO_SCIENTIST, Common_Movement_Delay48
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterUp
waitmovement 0
- applymovement LOCALID_SCIENTIST, RustboroCity_Movement_ScientistWalkInPlaceDown
+ applymovement LOCALID_RUSTBORO_SCIENTIST, RustboroCity_Movement_ScientistWalkInPlaceDown
waitmovement 0
msgbox RustboroCity_Text_DevelopedNewPokenavFeature, MSGBOX_DEFAULT
closemessage
setflag FLAG_HAS_MATCH_CALL
- applymovement LOCALID_SCIENTIST, Common_Movement_WalkInPlaceFasterLeft
+ applymovement LOCALID_RUSTBORO_SCIENTIST, Common_Movement_WalkInPlaceFasterLeft
waitmovement 0
playse SE_CLICK
delay 10
@@ -67,7 +60,7 @@ RustboroCity_EventScript_ScientistAddMatchCall::
delay 10
playse SE_CLICK
delay 20
- applymovement LOCALID_SCIENTIST, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_RUSTBORO_SCIENTIST, Common_Movement_WalkInPlaceFasterDown
waitmovement 0
msgbox RustboroCity_Text_AddedMatchCallPleaseCallMrStone, MSGBOX_DEFAULT
closemessage
@@ -98,10 +91,10 @@ RustboroCity_EventScript_MatchCallTutorial::
delay 20
msgbox RustboroCity_Text_IdBetterGetBackToWork, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_SCIENTIST, RustboroCity_Movement_ScientistLeave
+ applymovement LOCALID_RUSTBORO_SCIENTIST, RustboroCity_Movement_ScientistLeave
waitmovement 0
playse SE_EXIT
- removeobject LOCALID_SCIENTIST
+ removeobject LOCALID_RUSTBORO_SCIENTIST
setflag FLAG_HIDE_RUSTBORO_CITY_SCIENTIST
setvar VAR_RUSTBORO_CITY_STATE, 7
clearflag FLAG_HIDE_MAP_NAME_POPUP
@@ -227,7 +220,7 @@ RustboroCity_EventScript_LittleBoy::
lock
faceplayer
msgbox RustboroCity_Text_PokemonCanChangeLookFromExp, MSGBOX_DEFAULT
- applymovement LOCALID_LITTLE_BOY, Common_Movement_FaceOriginalDirection
+ applymovement LOCALID_RUSTBORO_LITTLE_BOY, Common_Movement_FaceOriginalDirection
waitmovement 0
release
end
@@ -236,7 +229,7 @@ RustboroCity_EventScript_LittleGirl::
lock
faceplayer
msgbox RustboroCity_Text_PokemonChangeShape, MSGBOX_DEFAULT
- applymovement LOCALID_LITTLE_GIRL, Common_Movement_FaceOriginalDirection
+ applymovement LOCALID_RUSTBORO_LITTLE_GIRL, Common_Movement_FaceOriginalDirection
waitmovement 0
release
end
@@ -250,40 +243,40 @@ RustboroCity_EventScript_Man2::
RustboroCity_EventScript_StolenGoodsTrigger0::
lockall
- setobjectxyperm LOCALID_DEVON_EMPLOYEE, 14, 21
- setobjectmovementtype LOCALID_DEVON_EMPLOYEE, MOVEMENT_TYPE_FACE_RIGHT
+ setobjectxyperm LOCALID_RUSTBORO_DEVON_EMPLOYEE, 14, 21
+ setobjectmovementtype LOCALID_RUSTBORO_DEVON_EMPLOYEE, MOVEMENT_TYPE_FACE_RIGHT
setvar VAR_0x8004, 0
goto RustboroCity_EventScript_StolenGoodsScene
end
RustboroCity_EventScript_StolenGoodsTrigger1::
lockall
- setobjectxyperm LOCALID_DEVON_EMPLOYEE, 14, 21
- setobjectmovementtype LOCALID_DEVON_EMPLOYEE, MOVEMENT_TYPE_FACE_RIGHT
+ setobjectxyperm LOCALID_RUSTBORO_DEVON_EMPLOYEE, 14, 21
+ setobjectmovementtype LOCALID_RUSTBORO_DEVON_EMPLOYEE, MOVEMENT_TYPE_FACE_RIGHT
setvar VAR_0x8004, 1
goto RustboroCity_EventScript_StolenGoodsScene
end
RustboroCity_EventScript_StolenGoodsTrigger2::
lockall
- setobjectxyperm LOCALID_DEVON_EMPLOYEE, 14, 21
- setobjectmovementtype LOCALID_DEVON_EMPLOYEE, MOVEMENT_TYPE_FACE_RIGHT
+ setobjectxyperm LOCALID_RUSTBORO_DEVON_EMPLOYEE, 14, 21
+ setobjectmovementtype LOCALID_RUSTBORO_DEVON_EMPLOYEE, MOVEMENT_TYPE_FACE_RIGHT
setvar VAR_0x8004, 2
goto RustboroCity_EventScript_StolenGoodsScene
end
RustboroCity_EventScript_StolenGoodsTrigger3::
lockall
- setobjectxyperm LOCALID_DEVON_EMPLOYEE, 14, 21
- setobjectmovementtype LOCALID_DEVON_EMPLOYEE, MOVEMENT_TYPE_FACE_RIGHT
+ setobjectxyperm LOCALID_RUSTBORO_DEVON_EMPLOYEE, 14, 21
+ setobjectmovementtype LOCALID_RUSTBORO_DEVON_EMPLOYEE, MOVEMENT_TYPE_FACE_RIGHT
setvar VAR_0x8004, 3
goto RustboroCity_EventScript_StolenGoodsScene
end
RustboroCity_EventScript_StolenGoodsTrigger4::
lockall
- setobjectxyperm LOCALID_DEVON_EMPLOYEE, 14, 21
- setobjectmovementtype LOCALID_DEVON_EMPLOYEE, MOVEMENT_TYPE_FACE_RIGHT
+ setobjectxyperm LOCALID_RUSTBORO_DEVON_EMPLOYEE, 14, 21
+ setobjectmovementtype LOCALID_RUSTBORO_DEVON_EMPLOYEE, MOVEMENT_TYPE_FACE_RIGHT
setvar VAR_0x8004, 4
goto RustboroCity_EventScript_StolenGoodsScene
end
@@ -292,20 +285,20 @@ RustboroCity_EventScript_StolenGoodsScene::
msgbox RustboroCity_Text_OutOfTheWay, MSGBOX_DEFAULT
closemessage
playbgm MUS_ENCOUNTER_AQUA, FALSE
- addobject LOCALID_GRUNT
- addobject LOCALID_DEVON_EMPLOYEE
- applymovement LOCALID_GRUNT, RustboroCity_Movement_GruntEscape
+ addobject LOCALID_RUSTBORO_GRUNT
+ addobject LOCALID_RUSTBORO_DEVON_EMPLOYEE
+ applymovement LOCALID_RUSTBORO_GRUNT, RustboroCity_Movement_GruntEscape
waitmovement 0
- removeobject LOCALID_GRUNT
- applymovement LOCALID_DEVON_EMPLOYEE, RustboroCity_Movement_EmployeeChaseGrunt1
+ removeobject LOCALID_RUSTBORO_GRUNT
+ applymovement LOCALID_RUSTBORO_DEVON_EMPLOYEE, RustboroCity_Movement_EmployeeChaseGrunt1
waitmovement 0
msgbox RustboroCity_Text_WaitDontTakeMyGoods, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_DEVON_EMPLOYEE, RustboroCity_Movement_EmployeeChaseGrunt2
+ applymovement LOCALID_RUSTBORO_DEVON_EMPLOYEE, RustboroCity_Movement_EmployeeChaseGrunt2
waitmovement 0
fadedefaultbgm
- removeobject LOCALID_DEVON_EMPLOYEE
- setobjectxyperm LOCALID_DEVON_EMPLOYEE, 30, 10
+ removeobject LOCALID_RUSTBORO_DEVON_EMPLOYEE
+ setobjectxyperm LOCALID_RUSTBORO_DEVON_EMPLOYEE, 30, 10
clearflag FLAG_HIDE_RUSTBORO_CITY_DEVON_EMPLOYEE_1
setflag FLAG_DEVON_GOODS_STOLEN
setvar VAR_RUSTBORO_CITY_STATE, 2
@@ -331,33 +324,33 @@ RustboroCity_EventScript_YouGotItThankYou::
@ Unknown, unused employee movements. Based on the differences in movement theyre for approaching an object (probably the player) in different positions
RustboroCity_EventScript_EmployeeApproachUp::
- applymovement LOCALID_DEVON_EMPLOYEE, RustboroCity_Movement_EmployeeApproachUp
+ applymovement LOCALID_RUSTBORO_DEVON_EMPLOYEE, RustboroCity_Movement_EmployeeApproachUp
waitmovement 0
return
@ Unused, see above
RustboroCity_EventScript_EmployeeApproachLeft::
- applymovement LOCALID_DEVON_EMPLOYEE, RustboroCity_Movement_EmployeeApproachLeft
+ applymovement LOCALID_RUSTBORO_DEVON_EMPLOYEE, RustboroCity_Movement_EmployeeApproachLeft
waitmovement 0
return
@ Unused, see above
RustboroCity_EventScript_EmployeeApproachRight::
- applymovement LOCALID_DEVON_EMPLOYEE, RustboroCity_Movement_EmployeeApproachRight
+ applymovement LOCALID_RUSTBORO_DEVON_EMPLOYEE, RustboroCity_Movement_EmployeeApproachRight
waitmovement 0
return
@ Unused, see above
RustboroCity_EventScript_EmployeeApproachDown::
- applymovement LOCALID_DEVON_EMPLOYEE, RustboroCity_Movement_EmployeeApproachDown
+ applymovement LOCALID_RUSTBORO_DEVON_EMPLOYEE, RustboroCity_Movement_EmployeeApproachDown
waitmovement 0
return
@ Unused, similar movement to the above scripts
RustboroCity_EventScript_EmployeeApproachPlayerFar::
- applymovement LOCALID_DEVON_EMPLOYEE, RustboroCity_Movement_EmployeeApproachPlayerFar
+ applymovement LOCALID_RUSTBORO_DEVON_EMPLOYEE, RustboroCity_Movement_EmployeeApproachPlayerFar
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterUp
waitmovement 0
return
@@ -509,59 +502,59 @@ RustboroCity_EventScript_EmployeeAskToGetGoods::
call_if_eq VAR_TEMP_1, 3, RustboroCity_EventScript_EmployeeApproachPlayerDown1
setflag FLAG_INTERACTED_WITH_DEVON_EMPLOYEE_GOODS_STOLEN
setvar VAR_RUSTBORO_CITY_STATE, 3
- copyobjectxytoperm LOCALID_DEVON_EMPLOYEE
+ copyobjectxytoperm LOCALID_RUSTBORO_DEVON_EMPLOYEE
msgbox RustboroCity_Text_HelpMeIWasRobbed, MSGBOX_DEFAULT
releaseall
end
@ The below movement scripts are either partially or fully duplicated by the movement scripts when the player returns the goods
RustboroCity_EventScript_EmployeeFacePlayerUp1::
- applymovement LOCALID_DEVON_EMPLOYEE, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_RUSTBORO_DEVON_EMPLOYEE, Common_Movement_WalkInPlaceFasterUp
waitmovement 0
playse SE_PIN
- applymovement LOCALID_DEVON_EMPLOYEE, Common_Movement_ExclamationMark
+ applymovement LOCALID_RUSTBORO_DEVON_EMPLOYEE, Common_Movement_ExclamationMark
waitmovement 0
- applymovement LOCALID_DEVON_EMPLOYEE, Common_Movement_Delay48
+ applymovement LOCALID_RUSTBORO_DEVON_EMPLOYEE, Common_Movement_Delay48
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterDown
waitmovement 0
return
RustboroCity_EventScript_EmployeeFacePlayerLeft1::
- applymovement LOCALID_DEVON_EMPLOYEE, Common_Movement_WalkInPlaceFasterLeft
+ applymovement LOCALID_RUSTBORO_DEVON_EMPLOYEE, Common_Movement_WalkInPlaceFasterLeft
waitmovement 0
playse SE_PIN
- applymovement LOCALID_DEVON_EMPLOYEE, Common_Movement_ExclamationMark
+ applymovement LOCALID_RUSTBORO_DEVON_EMPLOYEE, Common_Movement_ExclamationMark
waitmovement 0
- applymovement LOCALID_DEVON_EMPLOYEE, Common_Movement_Delay48
+ applymovement LOCALID_RUSTBORO_DEVON_EMPLOYEE, Common_Movement_Delay48
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_FaceRight
+ applymovement LOCALID_PLAYER, Common_Movement_FaceRight
waitmovement 0
return
RustboroCity_EventScript_EmployeeFacePlayerDown1::
- applymovement LOCALID_DEVON_EMPLOYEE, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_RUSTBORO_DEVON_EMPLOYEE, Common_Movement_WalkInPlaceFasterDown
waitmovement 0
playse SE_PIN
- applymovement LOCALID_DEVON_EMPLOYEE, Common_Movement_ExclamationMark
+ applymovement LOCALID_RUSTBORO_DEVON_EMPLOYEE, Common_Movement_ExclamationMark
waitmovement 0
- applymovement LOCALID_DEVON_EMPLOYEE, Common_Movement_Delay48
+ applymovement LOCALID_RUSTBORO_DEVON_EMPLOYEE, Common_Movement_Delay48
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterUp
waitmovement 0
return
RustboroCity_EventScript_EmployeeApproachPlayerDown1::
- applymovement LOCALID_DEVON_EMPLOYEE, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_RUSTBORO_DEVON_EMPLOYEE, Common_Movement_WalkInPlaceFasterDown
waitmovement 0
playse SE_PIN
- applymovement LOCALID_DEVON_EMPLOYEE, Common_Movement_ExclamationMark
+ applymovement LOCALID_RUSTBORO_DEVON_EMPLOYEE, Common_Movement_ExclamationMark
waitmovement 0
- applymovement LOCALID_DEVON_EMPLOYEE, Common_Movement_Delay48
+ applymovement LOCALID_RUSTBORO_DEVON_EMPLOYEE, Common_Movement_Delay48
waitmovement 0
- applymovement LOCALID_DEVON_EMPLOYEE, RustboroCity_Movement_EmployeeApproachPlayerDown
+ applymovement LOCALID_RUSTBORO_DEVON_EMPLOYEE, RustboroCity_Movement_EmployeeApproachPlayerDown
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterUp
waitmovement 0
return
@@ -618,69 +611,69 @@ RustboroCity_EventScript_BagFull::
return
RustboroCity_EventScript_EmployeeFacePlayerUp2::
- applymovement LOCALID_DEVON_EMPLOYEE, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_RUSTBORO_DEVON_EMPLOYEE, Common_Movement_WalkInPlaceFasterUp
waitmovement 0
playse SE_PIN
- applymovement LOCALID_DEVON_EMPLOYEE, Common_Movement_ExclamationMark
+ applymovement LOCALID_RUSTBORO_DEVON_EMPLOYEE, Common_Movement_ExclamationMark
waitmovement 0
- applymovement LOCALID_DEVON_EMPLOYEE, Common_Movement_Delay48
+ applymovement LOCALID_RUSTBORO_DEVON_EMPLOYEE, Common_Movement_Delay48
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterDown
waitmovement 0
return
RustboroCity_EventScript_EmployeeFacePlayerLeft2::
- applymovement LOCALID_DEVON_EMPLOYEE, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_RUSTBORO_DEVON_EMPLOYEE, Common_Movement_WalkInPlaceFasterRight
waitmovement 0
playse SE_PIN
- applymovement LOCALID_DEVON_EMPLOYEE, Common_Movement_ExclamationMark
+ applymovement LOCALID_RUSTBORO_DEVON_EMPLOYEE, Common_Movement_ExclamationMark
waitmovement 0
- applymovement LOCALID_DEVON_EMPLOYEE, Common_Movement_Delay48
+ applymovement LOCALID_RUSTBORO_DEVON_EMPLOYEE, Common_Movement_Delay48
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_FaceLeft
+ applymovement LOCALID_PLAYER, Common_Movement_FaceLeft
waitmovement 0
return
RustboroCity_EventScript_EmployeeFacePlayerDown2::
- applymovement LOCALID_DEVON_EMPLOYEE, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_RUSTBORO_DEVON_EMPLOYEE, Common_Movement_WalkInPlaceFasterDown
waitmovement 0
playse SE_PIN
- applymovement LOCALID_DEVON_EMPLOYEE, Common_Movement_ExclamationMark
+ applymovement LOCALID_RUSTBORO_DEVON_EMPLOYEE, Common_Movement_ExclamationMark
waitmovement 0
- applymovement LOCALID_DEVON_EMPLOYEE, Common_Movement_Delay48
+ applymovement LOCALID_RUSTBORO_DEVON_EMPLOYEE, Common_Movement_Delay48
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterUp
waitmovement 0
return
RustboroCity_EventScript_EmployeeApproachPlayerDown2::
- applymovement LOCALID_DEVON_EMPLOYEE, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_RUSTBORO_DEVON_EMPLOYEE, Common_Movement_WalkInPlaceFasterDown
waitmovement 0
playse SE_PIN
- applymovement LOCALID_DEVON_EMPLOYEE, Common_Movement_ExclamationMark
+ applymovement LOCALID_RUSTBORO_DEVON_EMPLOYEE, Common_Movement_ExclamationMark
waitmovement 0
- applymovement LOCALID_DEVON_EMPLOYEE, Common_Movement_Delay48
+ applymovement LOCALID_RUSTBORO_DEVON_EMPLOYEE, Common_Movement_Delay48
waitmovement 0
- applymovement LOCALID_DEVON_EMPLOYEE, RustboroCity_Movement_EmployeeApproachPlayerDown
+ applymovement LOCALID_RUSTBORO_DEVON_EMPLOYEE, RustboroCity_Movement_EmployeeApproachPlayerDown
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterUp
waitmovement 0
return
RustboroCity_EventScript_EmployeeFacePlayerRight::
- applymovement LOCALID_DEVON_EMPLOYEE, Common_Movement_WalkInPlaceFasterLeft
+ applymovement LOCALID_RUSTBORO_DEVON_EMPLOYEE, Common_Movement_WalkInPlaceFasterLeft
waitmovement 0
playse SE_PIN
- applymovement LOCALID_DEVON_EMPLOYEE, Common_Movement_ExclamationMark
+ applymovement LOCALID_RUSTBORO_DEVON_EMPLOYEE, Common_Movement_ExclamationMark
waitmovement 0
- applymovement LOCALID_DEVON_EMPLOYEE, Common_Movement_Delay48
+ applymovement LOCALID_RUSTBORO_DEVON_EMPLOYEE, Common_Movement_Delay48
waitmovement 0
return
RustboroCity_EventScript_Rival::
lockall
call_if_unset FLAG_MET_RIVAL_RUSTBORO, RustboroCity_EventScript_PlayRivalMusic
- applymovement LOCALID_RIVAL, Common_Movement_FacePlayer
+ applymovement LOCALID_RUSTBORO_RIVAL, Common_Movement_FacePlayer
waitmovement 0
goto RustboroCity_EventScript_RivalEncounter
@@ -701,128 +694,128 @@ RustboroCity_EventScript_PlayBrendanMusic::
RustboroCity_EventScript_RivalTrigger0::
lockall
call RustboroCity_EventScript_PlayRivalMusic
- applymovement LOCALID_RIVAL, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_RUSTBORO_RIVAL, Common_Movement_WalkInPlaceFasterDown
waitmovement 0
playse SE_PIN
- applymovement LOCALID_RIVAL, Common_Movement_ExclamationMark
+ applymovement LOCALID_RUSTBORO_RIVAL, Common_Movement_ExclamationMark
waitmovement 0
- applymovement LOCALID_RIVAL, Common_Movement_Delay48
+ applymovement LOCALID_RUSTBORO_RIVAL, Common_Movement_Delay48
waitmovement 0
- applymovement LOCALID_RIVAL, RustboroCity_Movement_RivalApproachPlayer0
+ applymovement LOCALID_RUSTBORO_RIVAL, RustboroCity_Movement_RivalApproachPlayer0
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterUp
waitmovement 0
goto RustboroCity_EventScript_RivalEncounter
RustboroCity_EventScript_RivalTrigger1::
lockall
call RustboroCity_EventScript_PlayRivalMusic
- applymovement LOCALID_RIVAL, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_RUSTBORO_RIVAL, Common_Movement_WalkInPlaceFasterDown
waitmovement 0
playse SE_PIN
- applymovement LOCALID_RIVAL, Common_Movement_ExclamationMark
+ applymovement LOCALID_RUSTBORO_RIVAL, Common_Movement_ExclamationMark
waitmovement 0
- applymovement LOCALID_RIVAL, Common_Movement_Delay48
+ applymovement LOCALID_RUSTBORO_RIVAL, Common_Movement_Delay48
waitmovement 0
- applymovement LOCALID_RIVAL, RustboroCity_Movement_RivalApproachPlayer1
+ applymovement LOCALID_RUSTBORO_RIVAL, RustboroCity_Movement_RivalApproachPlayer1
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterUp
waitmovement 0
goto RustboroCity_EventScript_RivalEncounter
RustboroCity_EventScript_RivalTrigger2::
lockall
call RustboroCity_EventScript_PlayRivalMusic
- applymovement LOCALID_RIVAL, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_RUSTBORO_RIVAL, Common_Movement_WalkInPlaceFasterDown
waitmovement 0
playse SE_PIN
- applymovement LOCALID_RIVAL, Common_Movement_ExclamationMark
+ applymovement LOCALID_RUSTBORO_RIVAL, Common_Movement_ExclamationMark
waitmovement 0
- applymovement LOCALID_RIVAL, Common_Movement_Delay48
+ applymovement LOCALID_RUSTBORO_RIVAL, Common_Movement_Delay48
waitmovement 0
- applymovement LOCALID_RIVAL, RustboroCity_Movement_RivalApproachPlayer2
+ applymovement LOCALID_RUSTBORO_RIVAL, RustboroCity_Movement_RivalApproachPlayer2
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterUp
waitmovement 0
goto RustboroCity_EventScript_RivalEncounter
RustboroCity_EventScript_RivalTrigger3::
lockall
call RustboroCity_EventScript_PlayRivalMusic
- applymovement LOCALID_RIVAL, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_RUSTBORO_RIVAL, Common_Movement_WalkInPlaceFasterDown
waitmovement 0
playse SE_PIN
- applymovement LOCALID_RIVAL, Common_Movement_ExclamationMark
+ applymovement LOCALID_RUSTBORO_RIVAL, Common_Movement_ExclamationMark
waitmovement 0
- applymovement LOCALID_RIVAL, Common_Movement_Delay48
+ applymovement LOCALID_RUSTBORO_RIVAL, Common_Movement_Delay48
waitmovement 0
- applymovement LOCALID_RIVAL, RustboroCity_Movement_RivalApproachPlayer3
+ applymovement LOCALID_RUSTBORO_RIVAL, RustboroCity_Movement_RivalApproachPlayer3
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterUp
waitmovement 0
goto RustboroCity_EventScript_RivalEncounter
RustboroCity_EventScript_RivalTrigger4::
lockall
call RustboroCity_EventScript_PlayRivalMusic
- applymovement LOCALID_RIVAL, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_RUSTBORO_RIVAL, Common_Movement_WalkInPlaceFasterDown
waitmovement 0
playse SE_PIN
- applymovement LOCALID_RIVAL, Common_Movement_ExclamationMark
+ applymovement LOCALID_RUSTBORO_RIVAL, Common_Movement_ExclamationMark
waitmovement 0
- applymovement LOCALID_RIVAL, Common_Movement_Delay48
+ applymovement LOCALID_RUSTBORO_RIVAL, Common_Movement_Delay48
waitmovement 0
- applymovement LOCALID_RIVAL, RustboroCity_Movement_RivalApproachPlayer4
+ applymovement LOCALID_RUSTBORO_RIVAL, RustboroCity_Movement_RivalApproachPlayer4
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterUp
waitmovement 0
goto RustboroCity_EventScript_RivalEncounter
RustboroCity_EventScript_RivalTrigger5::
lockall
call RustboroCity_EventScript_PlayRivalMusic
- applymovement LOCALID_RIVAL, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_RUSTBORO_RIVAL, Common_Movement_WalkInPlaceFasterDown
waitmovement 0
playse SE_PIN
- applymovement LOCALID_RIVAL, Common_Movement_ExclamationMark
+ applymovement LOCALID_RUSTBORO_RIVAL, Common_Movement_ExclamationMark
waitmovement 0
- applymovement LOCALID_RIVAL, Common_Movement_Delay48
+ applymovement LOCALID_RUSTBORO_RIVAL, Common_Movement_Delay48
waitmovement 0
- applymovement LOCALID_RIVAL, RustboroCity_Movement_RivalApproachPlayer5
+ applymovement LOCALID_RUSTBORO_RIVAL, RustboroCity_Movement_RivalApproachPlayer5
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterUp
waitmovement 0
goto RustboroCity_EventScript_RivalEncounter
RustboroCity_EventScript_RivalTrigger6::
lockall
call RustboroCity_EventScript_PlayRivalMusic
- applymovement LOCALID_RIVAL, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_RUSTBORO_RIVAL, Common_Movement_WalkInPlaceFasterDown
waitmovement 0
playse SE_PIN
- applymovement LOCALID_RIVAL, Common_Movement_ExclamationMark
+ applymovement LOCALID_RUSTBORO_RIVAL, Common_Movement_ExclamationMark
waitmovement 0
- applymovement LOCALID_RIVAL, Common_Movement_Delay48
+ applymovement LOCALID_RUSTBORO_RIVAL, Common_Movement_Delay48
waitmovement 0
- applymovement LOCALID_RIVAL, RustboroCity_Movement_RivalApproachPlayer6
+ applymovement LOCALID_RUSTBORO_RIVAL, RustboroCity_Movement_RivalApproachPlayer6
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterUp
waitmovement 0
goto RustboroCity_EventScript_RivalEncounter
RustboroCity_EventScript_RivalTrigger7::
lockall
call RustboroCity_EventScript_PlayRivalMusic
- applymovement LOCALID_RIVAL, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_RUSTBORO_RIVAL, Common_Movement_WalkInPlaceFasterDown
waitmovement 0
playse SE_PIN
- applymovement LOCALID_RIVAL, Common_Movement_ExclamationMark
+ applymovement LOCALID_RUSTBORO_RIVAL, Common_Movement_ExclamationMark
waitmovement 0
- applymovement LOCALID_RIVAL, Common_Movement_Delay48
+ applymovement LOCALID_RUSTBORO_RIVAL, Common_Movement_Delay48
waitmovement 0
- applymovement LOCALID_RIVAL, RustboroCity_Movement_RivalApproachPlayer7
+ applymovement LOCALID_RUSTBORO_RIVAL, RustboroCity_Movement_RivalApproachPlayer7
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterUp
waitmovement 0
goto RustboroCity_EventScript_RivalEncounter
diff --git a/data/maps/RustboroCity_DevonCorp_1F/map.json b/data/maps/RustboroCity_DevonCorp_1F/map.json
index 64a8b917a1..ecbf542589 100644
--- a/data/maps/RustboroCity_DevonCorp_1F/map.json
+++ b/data/maps/RustboroCity_DevonCorp_1F/map.json
@@ -28,6 +28,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_DEVON_CORP_STAIR_GUARD",
"graphics_id": "OBJ_EVENT_GFX_DEVON_EMPLOYEE",
"x": 15,
"y": 5,
diff --git a/data/maps/RustboroCity_DevonCorp_1F/scripts.inc b/data/maps/RustboroCity_DevonCorp_1F/scripts.inc
index 11953d3386..c9111d0e16 100644
--- a/data/maps/RustboroCity_DevonCorp_1F/scripts.inc
+++ b/data/maps/RustboroCity_DevonCorp_1F/scripts.inc
@@ -1,5 +1,3 @@
-.set LOCALID_STAIR_GUARD, 2
-
RustboroCity_DevonCorp_1F_MapScripts::
map_script MAP_SCRIPT_ON_TRANSITION, RustboroCity_DevonCorp_1F_OnTransition
.byte 0
@@ -9,8 +7,8 @@ RustboroCity_DevonCorp_1F_OnTransition:
end
RustboroCity_DevonCorp_1F_EventScript_BlockStairs::
- setobjectxyperm LOCALID_STAIR_GUARD, 14, 2
- setobjectmovementtype LOCALID_STAIR_GUARD, MOVEMENT_TYPE_FACE_DOWN
+ setobjectxyperm LOCALID_DEVON_CORP_STAIR_GUARD, 14, 2
+ setobjectmovementtype LOCALID_DEVON_CORP_STAIR_GUARD, MOVEMENT_TYPE_FACE_DOWN
return
RustboroCity_DevonCorp_1F_EventScript_Employee::
diff --git a/data/maps/RustboroCity_DevonCorp_2F/map.json b/data/maps/RustboroCity_DevonCorp_2F/map.json
index 3892ba40ae..70a5312f9f 100644
--- a/data/maps/RustboroCity_DevonCorp_2F/map.json
+++ b/data/maps/RustboroCity_DevonCorp_2F/map.json
@@ -67,6 +67,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_FOSSIL_SCIENTIST",
"graphics_id": "OBJ_EVENT_GFX_SCIENTIST_1",
"x": 14,
"y": 8,
diff --git a/data/maps/RustboroCity_DevonCorp_2F/scripts.inc b/data/maps/RustboroCity_DevonCorp_2F/scripts.inc
index ba3a259ec3..bd796aab6f 100644
--- a/data/maps/RustboroCity_DevonCorp_2F/scripts.inc
+++ b/data/maps/RustboroCity_DevonCorp_2F/scripts.inc
@@ -1,5 +1,3 @@
-.set LOCALID_FOSSIL_SCIENTIST, 5
-
RustboroCity_DevonCorp_2F_MapScripts::
map_script MAP_SCRIPT_ON_TRANSITION, RustboroCity_DevonCorp_2F_OnTransition
.byte 0
diff --git a/data/maps/RustboroCity_DevonCorp_3F/map.json b/data/maps/RustboroCity_DevonCorp_3F/map.json
index 4ddb727185..ffe289e759 100644
--- a/data/maps/RustboroCity_DevonCorp_3F/map.json
+++ b/data/maps/RustboroCity_DevonCorp_3F/map.json
@@ -28,6 +28,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_DEVON_CORP_3F_EMPLOYEE",
"graphics_id": "OBJ_EVENT_GFX_MAN_2",
"x": 3,
"y": 5,
diff --git a/data/maps/RustboroCity_DevonCorp_3F/scripts.inc b/data/maps/RustboroCity_DevonCorp_3F/scripts.inc
index ebf9044c54..91b1ad5222 100644
--- a/data/maps/RustboroCity_DevonCorp_3F/scripts.inc
+++ b/data/maps/RustboroCity_DevonCorp_3F/scripts.inc
@@ -1,5 +1,3 @@
-.set LOCALID_DEVON_EMPLOYEE, 2
-
RustboroCity_DevonCorp_3F_MapScripts::
map_script MAP_SCRIPT_ON_TRANSITION, RustboroCity_DevonCorp_3F_OnTransition
map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, RustboroCity_DevonCorp_3F_OnWarp
@@ -11,8 +9,8 @@ RustboroCity_DevonCorp_3F_OnTransition:
end
RustboroCity_DevonCorp_3F_EventScript_SetEmployeePos::
- setobjectxyperm LOCALID_DEVON_EMPLOYEE, 3, 2
- setobjectmovementtype LOCALID_DEVON_EMPLOYEE, MOVEMENT_TYPE_FACE_LEFT
+ setobjectxyperm LOCALID_DEVON_CORP_3F_EMPLOYEE, 3, 2
+ setobjectmovementtype LOCALID_DEVON_CORP_3F_EMPLOYEE, MOVEMENT_TYPE_FACE_LEFT
return
RustboroCity_DevonCorp_3F_OnWarp:
@@ -20,7 +18,7 @@ RustboroCity_DevonCorp_3F_OnWarp:
.2byte 0
RustboroCity_DevonCorp_3F_EventScript_PlayerFaceEast::
- turnobject OBJ_EVENT_ID_PLAYER, DIR_EAST
+ turnobject LOCALID_PLAYER, DIR_EAST
end
RustboroCity_DevonCorp_3F_OnFrame:
@@ -31,22 +29,22 @@ RustboroCity_DevonCorp_3F_EventScript_MeetPresident::
lockall
msgbox RustboroCity_DevonCorp_3F_Text_ThisIs3rdFloorWaitHere, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_DEVON_EMPLOYEE, RustboroCity_DevonCorp_3F_Movement_EmployeeWalkOffscreen
+ applymovement LOCALID_DEVON_CORP_3F_EMPLOYEE, RustboroCity_DevonCorp_3F_Movement_EmployeeWalkOffscreen
waitmovement 0
delay 80
- applymovement LOCALID_DEVON_EMPLOYEE, RustboroCity_DevonCorp_3F_Movement_EmployeeReturnToPlayer
+ applymovement LOCALID_DEVON_CORP_3F_EMPLOYEE, RustboroCity_DevonCorp_3F_Movement_EmployeeReturnToPlayer
waitmovement 0
msgbox RustboroCity_DevonCorp_3F_Text_WordWithPresidentComeWithMe, MSGBOX_DEFAULT
closemessage
playbgm MUS_FOLLOW_ME, FALSE
- applymovement LOCALID_DEVON_EMPLOYEE, RustboroCity_DevonCorp_3F_Movement_LeadPlayerToPresident
- applymovement OBJ_EVENT_ID_PLAYER, RustboroCity_DevonCorp_3F_Movement_PlayerFollowToPresident
+ applymovement LOCALID_DEVON_CORP_3F_EMPLOYEE, RustboroCity_DevonCorp_3F_Movement_LeadPlayerToPresident
+ applymovement LOCALID_PLAYER, RustboroCity_DevonCorp_3F_Movement_PlayerFollowToPresident
waitmovement 0
msgbox RustboroCity_DevonCorp_3F_Text_PleaseGoAhead, MSGBOX_DEFAULT
closemessage
fadedefaultbgm
- applymovement LOCALID_DEVON_EMPLOYEE, RustboroCity_DevonCorp_3F_Movement_EmployeeFaceDesk
- applymovement OBJ_EVENT_ID_PLAYER, RustboroCity_DevonCorp_3F_Movement_PlayerApproachDesk
+ applymovement LOCALID_DEVON_CORP_3F_EMPLOYEE, RustboroCity_DevonCorp_3F_Movement_EmployeeFaceDesk
+ applymovement LOCALID_PLAYER, RustboroCity_DevonCorp_3F_Movement_PlayerApproachDesk
waitmovement 0
msgbox RustboroCity_DevonCorp_3F_Text_MrStoneIHaveFavor, MSGBOX_DEFAULT
giveitem ITEM_LETTER
diff --git a/data/maps/RustboroCity_Flat1_2F/map.json b/data/maps/RustboroCity_Flat1_2F/map.json
index bb87670627..5591c344ff 100644
--- a/data/maps/RustboroCity_Flat1_2F/map.json
+++ b/data/maps/RustboroCity_Flat1_2F/map.json
@@ -80,6 +80,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_WALDAS_DAD",
"graphics_id": "OBJ_EVENT_GFX_MAN_1",
"x": 8,
"y": 5,
diff --git a/data/maps/RustboroCity_Flat1_2F/scripts.inc b/data/maps/RustboroCity_Flat1_2F/scripts.inc
index 8e972182c1..038dfbf746 100644
--- a/data/maps/RustboroCity_Flat1_2F/scripts.inc
+++ b/data/maps/RustboroCity_Flat1_2F/scripts.inc
@@ -1,5 +1,3 @@
-.set LOCALID_WALDAS_DAD, 6
-
RustboroCity_Flat1_2F_MapScripts::
.byte 0
diff --git a/data/maps/RustboroCity_Mart/map.json b/data/maps/RustboroCity_Mart/map.json
index 92a23b6bf0..886b500df6 100644
--- a/data/maps/RustboroCity_Mart/map.json
+++ b/data/maps/RustboroCity_Mart/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_RUSTBORO_MART_CLERK",
"graphics_id": "OBJ_EVENT_GFX_MART_EMPLOYEE",
"x": 1,
"y": 3,
diff --git a/data/maps/RustboroCity_PokemonCenter_1F/map.json b/data/maps/RustboroCity_PokemonCenter_1F/map.json
index d187d49a32..be36274d8f 100644
--- a/data/maps/RustboroCity_PokemonCenter_1F/map.json
+++ b/data/maps/RustboroCity_PokemonCenter_1F/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_RUSTBORO_NURSE",
"graphics_id": "OBJ_EVENT_GFX_NURSE",
"x": 7,
"y": 2,
diff --git a/data/maps/RustboroCity_PokemonCenter_1F/scripts.inc b/data/maps/RustboroCity_PokemonCenter_1F/scripts.inc
index ff7d765682..363230eb41 100644
--- a/data/maps/RustboroCity_PokemonCenter_1F/scripts.inc
+++ b/data/maps/RustboroCity_PokemonCenter_1F/scripts.inc
@@ -1,5 +1,3 @@
-.set LOCALID_NURSE, 1
-
RustboroCity_PokemonCenter_1F_MapScripts::
map_script MAP_SCRIPT_ON_TRANSITION, RustboroCity_PokemonCenter_1F_OnTransition
map_script MAP_SCRIPT_ON_RESUME, CableClub_OnResume
@@ -11,7 +9,7 @@ RustboroCity_PokemonCenter_1F_OnTransition:
end
RustboroCity_PokemonCenter_1F_EventScript_Nurse::
- setvar VAR_0x800B, LOCALID_NURSE
+ setvar VAR_0x800B, LOCALID_RUSTBORO_NURSE
call Common_EventScript_PkmnCenterNurse
waitmessage
waitbuttonpress
diff --git a/data/maps/RusturfTunnel/map.json b/data/maps/RusturfTunnel/map.json
index 93c6aea072..61a223ba79 100644
--- a/data/maps/RusturfTunnel/map.json
+++ b/data/maps/RusturfTunnel/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_RUSTURF_TUNNEL_WANDAS_BF",
"graphics_id": "OBJ_EVENT_GFX_BLACK_BELT",
"x": 23,
"y": 5,
@@ -67,6 +68,7 @@
"flag": "FLAG_ITEM_RUSTURF_TUNNEL_MAX_ETHER"
},
{
+ "local_id": "LOCALID_RUSTURF_TUNNEL_BRINEY",
"graphics_id": "OBJ_EVENT_GFX_EXPERT_M",
"x": 5,
"y": 4,
@@ -80,6 +82,7 @@
"flag": "FLAG_HIDE_RUSTURF_TUNNEL_BRINEY"
},
{
+ "local_id": "LOCALID_RUSTURF_TUNNEL_GRUNT",
"graphics_id": "OBJ_EVENT_GFX_AQUA_MEMBER_M",
"x": 14,
"y": 5,
@@ -93,6 +96,7 @@
"flag": "FLAG_HIDE_RUSTURF_TUNNEL_AQUA_GRUNT"
},
{
+ "local_id": "LOCALID_RUSTURF_TUNNEL_PEEKO",
"graphics_id": "OBJ_EVENT_GFX_WINGULL",
"x": 14,
"y": 4,
@@ -132,6 +136,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_RUSTURF_TUNNEL_WANDA",
"graphics_id": "OBJ_EVENT_GFX_WOMAN_2",
"x": 25,
"y": 4,
diff --git a/data/maps/RusturfTunnel/scripts.inc b/data/maps/RusturfTunnel/scripts.inc
index 47f7dd9b4d..943fbf29a6 100644
--- a/data/maps/RusturfTunnel/scripts.inc
+++ b/data/maps/RusturfTunnel/scripts.inc
@@ -1,9 +1,3 @@
-.equ LOCALID_WANDAS_BF, 1
-.set LOCALID_BRINEY, 5
-.set LOCALID_GRUNT, 6
-.set LOCALID_PEEKO, 7
-.equ LOCALID_WANDA, 10
-
RusturfTunnel_MapScripts::
map_script MAP_SCRIPT_ON_TRANSITION, RusturfTunnel_OnTransition
map_script MAP_SCRIPT_ON_FRAME_TABLE, RusturfTunnel_OnFrame
@@ -19,8 +13,8 @@ RusturfTunnel_OnTransition:
end
RusturfTunnel_EventScript_SetAquaGruntAndPeekoPos::
- setobjectxyperm LOCALID_PEEKO, 13, 4
- setobjectxyperm LOCALID_GRUNT, 13, 5
+ setobjectxyperm LOCALID_RUSTURF_TUNNEL_PEEKO, 13, 4
+ setobjectxyperm LOCALID_RUSTURF_TUNNEL_GRUNT, 13, 5
return
RusturfTunnel_EventScript_Wanda::
@@ -79,36 +73,36 @@ RusturfTunnel_EventScript_ClearTunnelScene::
end
RusturfTunnel_EventScript_BoyfriendApproachWanda1::
- applymovement OBJ_EVENT_ID_PLAYER, RusturfTunnel_Movement_PlayerWatchBoyfriend1
- applymovement LOCALID_WANDAS_BF, RusturfTunnel_Movement_BoyfriendApproachWanda1
+ applymovement LOCALID_PLAYER, RusturfTunnel_Movement_PlayerWatchBoyfriend1
+ applymovement LOCALID_RUSTURF_TUNNEL_WANDAS_BF, RusturfTunnel_Movement_BoyfriendApproachWanda1
waitmovement 0
return
RusturfTunnel_EventScript_BoyfriendApproachWanda2::
- applymovement OBJ_EVENT_ID_PLAYER, RusturfTunnel_Movement_PlayerWatchBoyfriend
- applymovement LOCALID_WANDAS_BF, RusturfTunnel_Movement_BoyfriendApproachWanda
+ applymovement LOCALID_PLAYER, RusturfTunnel_Movement_PlayerWatchBoyfriend
+ applymovement LOCALID_RUSTURF_TUNNEL_WANDAS_BF, RusturfTunnel_Movement_BoyfriendApproachWanda
waitmovement 0
- applymovement LOCALID_WANDA, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_RUSTURF_TUNNEL_WANDA, Common_Movement_WalkInPlaceFasterDown
waitmovement 0
return
RusturfTunnel_EventScript_BoyfriendApproachWanda3::
- applymovement OBJ_EVENT_ID_PLAYER, RusturfTunnel_Movement_PlayerWatchBoyfriend
- applymovement LOCALID_WANDAS_BF, RusturfTunnel_Movement_BoyfriendApproachWanda
+ applymovement LOCALID_PLAYER, RusturfTunnel_Movement_PlayerWatchBoyfriend
+ applymovement LOCALID_RUSTURF_TUNNEL_WANDAS_BF, RusturfTunnel_Movement_BoyfriendApproachWanda
waitmovement 0
- applymovement LOCALID_WANDA, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_RUSTURF_TUNNEL_WANDA, Common_Movement_WalkInPlaceFasterDown
waitmovement 0
return
RusturfTunnel_EventScript_FaceWandasBoyfriend1::
- applymovement LOCALID_WANDAS_BF, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_RUSTURF_TUNNEL_WANDAS_BF, Common_Movement_WalkInPlaceFasterUp
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterDown
waitmovement 0
return
RusturfTunnel_EventScript_FaceWandasBoyfriend2::
- applymovement LOCALID_WANDAS_BF, RusturfTunnel_Movement_BoyfriendFaceRight
+ applymovement LOCALID_RUSTURF_TUNNEL_WANDAS_BF, RusturfTunnel_Movement_BoyfriendFaceRight
waitmovement 0
return
@@ -117,28 +111,28 @@ RusturfTunnel_EventScript_FaceWandasBoyfriend3::
RusturfTunnel_EventScript_WandasBoyfriendApproachPlayer::
closemessage
- applymovement LOCALID_WANDAS_BF, RusturfTunnel_Movement_WandasBoyfriendApproachPlayer
+ applymovement LOCALID_RUSTURF_TUNNEL_WANDAS_BF, RusturfTunnel_Movement_WandasBoyfriendApproachPlayer
waitmovement 0
return
RusturfTunnel_EventScript_WandaAndBoyfriendExit1::
- applymovement LOCALID_WANDA, RusturfTunnel_Movement_WandaExit1
- applymovement LOCALID_WANDAS_BF, RusturfTunnel_Movement_WandasBoyfriendExit1
+ applymovement LOCALID_RUSTURF_TUNNEL_WANDA, RusturfTunnel_Movement_WandaExit1
+ applymovement LOCALID_RUSTURF_TUNNEL_WANDAS_BF, RusturfTunnel_Movement_WandasBoyfriendExit1
waitmovement 0
return
RusturfTunnel_EventScript_WandaAndBoyfriendExit::
- applymovement OBJ_EVENT_ID_PLAYER, RusturfTunnel_Movement_PlayerWatchWandaExit
- applymovement LOCALID_WANDA, RusturfTunnel_Movement_WandaExit
- applymovement LOCALID_WANDAS_BF, RusturfTunnel_Movement_WandasBoyfriendExit
+ applymovement LOCALID_PLAYER, RusturfTunnel_Movement_PlayerWatchWandaExit
+ applymovement LOCALID_RUSTURF_TUNNEL_WANDA, RusturfTunnel_Movement_WandaExit
+ applymovement LOCALID_RUSTURF_TUNNEL_WANDAS_BF, RusturfTunnel_Movement_WandasBoyfriendExit
waitmovement 0
return
RusturfTunnel_EventScript_WandasBoyfriendNotice::
playse SE_PIN
- applymovement LOCALID_WANDAS_BF, Common_Movement_ExclamationMark
+ applymovement LOCALID_RUSTURF_TUNNEL_WANDAS_BF, Common_Movement_ExclamationMark
waitmovement 0
- applymovement LOCALID_WANDAS_BF, Common_Movement_Delay48
+ applymovement LOCALID_RUSTURF_TUNNEL_WANDAS_BF, Common_Movement_Delay48
waitmovement 0
return
@@ -277,11 +271,11 @@ RusturfTunnel_EventScript_AquaGruntBackUp::
setflag FLAG_SAFE_FOLLOWER_MOVEMENT
msgbox RusturfTunnel_Text_ComeAndGetSome, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_GRUNT, RusturfTunnel_Movement_GruntAndPeekoBackUp
- applymovement LOCALID_PEEKO, RusturfTunnel_Movement_GruntAndPeekoBackUp
+ applymovement LOCALID_RUSTURF_TUNNEL_GRUNT, RusturfTunnel_Movement_GruntAndPeekoBackUp
+ applymovement LOCALID_RUSTURF_TUNNEL_PEEKO, RusturfTunnel_Movement_GruntAndPeekoBackUp
waitmovement 0
- copyobjectxytoperm LOCALID_GRUNT
- copyobjectxytoperm LOCALID_PEEKO
+ copyobjectxytoperm LOCALID_RUSTURF_TUNNEL_GRUNT
+ copyobjectxytoperm LOCALID_RUSTURF_TUNNEL_PEEKO
setvar VAR_RUSTURF_TUNNEL_STATE, 3
releaseall
end
@@ -311,19 +305,19 @@ RusturfTunnel_EventScript_Grunt::
msgbox RusturfTunnel_Text_GruntTakePackage, MSGBOX_DEFAULT
giveitem ITEM_DEVON_PARTS
closemessage
- applymovement OBJ_EVENT_ID_PLAYER, RusturfTunnel_Movement_PushPlayerAsideForGrunt
- applymovement LOCALID_GRUNT, RusturfTunnel_Movement_GruntEscape
+ applymovement LOCALID_PLAYER, RusturfTunnel_Movement_PushPlayerAsideForGrunt
+ applymovement LOCALID_RUSTURF_TUNNEL_GRUNT, RusturfTunnel_Movement_GruntEscape
waitmovement 0
- removeobject LOCALID_GRUNT
+ removeobject LOCALID_RUSTURF_TUNNEL_GRUNT
delay 50
- addobject LOCALID_BRINEY
- applymovement LOCALID_BRINEY, RusturfTunnel_Movement_BrineyApproachPeeko1
+ addobject LOCALID_RUSTURF_TUNNEL_BRINEY
+ applymovement LOCALID_RUSTURF_TUNNEL_BRINEY, RusturfTunnel_Movement_BrineyApproachPeeko1
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, RusturfTunnel_Movement_PlayerMoveAsideForBriney
- applymovement LOCALID_BRINEY, RusturfTunnel_Movement_BrineyApproachPeeko2
+ applymovement LOCALID_PLAYER, RusturfTunnel_Movement_PlayerMoveAsideForBriney
+ applymovement LOCALID_RUSTURF_TUNNEL_BRINEY, RusturfTunnel_Movement_BrineyApproachPeeko2
waitmovement 0
msgbox RusturfTunnel_Text_PeekoGladToSeeYouSafe, MSGBOX_DEFAULT
- applymovement LOCALID_BRINEY, Common_Movement_FacePlayer
+ applymovement LOCALID_RUSTURF_TUNNEL_BRINEY, Common_Movement_FacePlayer
waitmovement 0
message RusturfTunnel_Text_ThankYouLetsGoHomePeeko
waitmessage
@@ -332,12 +326,12 @@ RusturfTunnel_EventScript_Grunt::
waitbuttonpress
waitmoncry
closemessage
- applymovement OBJ_EVENT_ID_PLAYER, RusturfTunnel_Movement_PlayerWatchBrineyExit
- applymovement LOCALID_BRINEY, RusturfTunnel_Movement_BrineyExit
- applymovement LOCALID_PEEKO, RusturfTunnel_Movement_PeekoExit
+ applymovement LOCALID_PLAYER, RusturfTunnel_Movement_PlayerWatchBrineyExit
+ applymovement LOCALID_RUSTURF_TUNNEL_BRINEY, RusturfTunnel_Movement_BrineyExit
+ applymovement LOCALID_RUSTURF_TUNNEL_PEEKO, RusturfTunnel_Movement_PeekoExit
waitmovement 0
- removeobject LOCALID_BRINEY
- removeobject LOCALID_PEEKO
+ removeobject LOCALID_RUSTURF_TUNNEL_BRINEY
+ removeobject LOCALID_RUSTURF_TUNNEL_PEEKO
clearflag FLAG_DEVON_GOODS_STOLEN
setflag FLAG_RECOVERED_DEVON_GOODS
setvar VAR_RUSTBORO_CITY_STATE, 4
diff --git a/data/maps/SSTidalCorridor/map.json b/data/maps/SSTidalCorridor/map.json
index 7a25d4450c..460359a82c 100644
--- a/data/maps/SSTidalCorridor/map.json
+++ b/data/maps/SSTidalCorridor/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_SS_TIDAL_EXIT_SAILOR",
"graphics_id": "OBJ_EVENT_GFX_SAILOR",
"x": 1,
"y": 11,
@@ -67,6 +68,7 @@
"flag": "FLAG_HIDE_SS_TIDAL_CORRIDOR_MR_BRINEY"
},
{
+ "local_id": "LOCALID_SS_TIDAL_SCOTT",
"graphics_id": "OBJ_EVENT_GFX_SCOTT",
"x": 9,
"y": 10,
diff --git a/data/maps/SSTidalCorridor/scripts.inc b/data/maps/SSTidalCorridor/scripts.inc
index 0d425889a7..4d63b7dad8 100644
--- a/data/maps/SSTidalCorridor/scripts.inc
+++ b/data/maps/SSTidalCorridor/scripts.inc
@@ -1,6 +1,3 @@
-.set LOCALID_SAILOR, 1
-.set LOCALID_SCOTT, 5
-
SSTidalCorridor_MapScripts::
map_script MAP_SCRIPT_ON_FRAME_TABLE, SSTidalCorridor_OnFrame
.byte 0
@@ -188,20 +185,20 @@ SSTidalCorridor_EventScript_TrainerNotDefeated::
SSTidalCorridor_EventScript_ScottScene::
lockall
- applymovement LOCALID_SCOTT, SSTidalCorridor_Movement_ScottApproachPlayer
+ applymovement LOCALID_SS_TIDAL_SCOTT, SSTidalCorridor_Movement_ScottApproachPlayer
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterRight
waitmovement 0
msgbox SSTidalCorridor_Text_ScottBattleFrontierInvite, MSGBOX_DEFAULT
closemessage
- applymovement OBJ_EVENT_ID_PLAYER, SSTidalCorridor_Movement_PlayerWatchScottExit
- applymovement LOCALID_SAILOR, SSTidalCorridor_Movement_SailorMoveForScott
- applymovement LOCALID_SCOTT, SSTidalCorridor_Movement_ScottExit
+ applymovement LOCALID_PLAYER, SSTidalCorridor_Movement_PlayerWatchScottExit
+ applymovement LOCALID_SS_TIDAL_EXIT_SAILOR, SSTidalCorridor_Movement_SailorMoveForScott
+ applymovement LOCALID_SS_TIDAL_SCOTT, SSTidalCorridor_Movement_ScottExit
waitmovement 0
playse SE_EXIT
waitse
- removeobject LOCALID_SCOTT
- applymovement LOCALID_SAILOR, SSTidalCorridor_Movement_SailorReturn
+ removeobject LOCALID_SS_TIDAL_SCOTT
+ applymovement LOCALID_SS_TIDAL_EXIT_SAILOR, SSTidalCorridor_Movement_SailorReturn
waitmovement 0
delay 30
setflag FLAG_MET_SCOTT_ON_SS_TIDAL
diff --git a/data/maps/SafariZone_South/map.json b/data/maps/SafariZone_South/map.json
index dee1e40629..4fffe8afb9 100644
--- a/data/maps/SafariZone_South/map.json
+++ b/data/maps/SafariZone_South/map.json
@@ -31,6 +31,7 @@
],
"object_events": [
{
+ "local_id": "LOCALID_SAFARI_EXIT_ATTENDANT",
"graphics_id": "OBJ_EVENT_GFX_CAMPER",
"x": 32,
"y": 34,
diff --git a/data/maps/SafariZone_South/scripts.inc b/data/maps/SafariZone_South/scripts.inc
index 6b4c774c2b..446175add6 100644
--- a/data/maps/SafariZone_South/scripts.inc
+++ b/data/maps/SafariZone_South/scripts.inc
@@ -1,5 +1,3 @@
-.set LOCALID_ATTENDANT, 1
-
SafariZone_South_MapScripts::
map_script MAP_SCRIPT_ON_TRANSITION, SafariZone_South_OnTransition
map_script MAP_SCRIPT_ON_FRAME_TABLE, SafariZone_South_OnFrame
@@ -11,11 +9,11 @@ SafariZone_South_OnFrame:
SafariZone_South_EventScript_EnterSafariZone::
lockall
- applymovement OBJ_EVENT_ID_PLAYER, SafariZone_South_Movement_PlayerEnter
+ applymovement LOCALID_PLAYER, SafariZone_South_Movement_PlayerEnter
waitmovement 0
- applymovement LOCALID_ATTENDANT, SafariZone_South_Movement_ExitAttendantBlockDoor
+ applymovement LOCALID_SAFARI_EXIT_ATTENDANT, SafariZone_South_Movement_ExitAttendantBlockDoor
waitmovement 0
- setobjectxyperm LOCALID_ATTENDANT, 32, 34
+ setobjectxyperm LOCALID_SAFARI_EXIT_ATTENDANT, 32, 34
setvar VAR_SAFARI_ZONE_STATE, 0
releaseall
end
@@ -25,7 +23,7 @@ SafariZone_South_OnTransition:
end
SafariZone_South_EventScript_SetExitAttendantAside::
- setobjectxyperm LOCALID_ATTENDANT, 31, 34
+ setobjectxyperm LOCALID_SAFARI_EXIT_ATTENDANT, 31, 34
return
SafariZone_South_Movement_PlayerEnter:
@@ -74,17 +72,17 @@ SafariZone_South_EventScript_ExitEarly::
end
SafariZone_South_EventScript_ExitEarlyNorth::
- applymovement LOCALID_ATTENDANT, SafariZone_South_Movement_MoveExitAttendantNorth
+ applymovement LOCALID_SAFARI_EXIT_ATTENDANT, SafariZone_South_Movement_MoveExitAttendantNorth
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, SafariZone_South_Movement_PlayerExitNorth
+ applymovement LOCALID_PLAYER, SafariZone_South_Movement_PlayerExitNorth
waitmovement 0
goto SafariZone_South_EventScript_Exit
end
SafariZone_South_EventScript_ExitEarlyEast::
- applymovement LOCALID_ATTENDANT, SafariZone_South_Movement_MoveExitAttendantEast
+ applymovement LOCALID_SAFARI_EXIT_ATTENDANT, SafariZone_South_Movement_MoveExitAttendantEast
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, SafariZone_South_Movement_PlayerExitEast
+ applymovement LOCALID_PLAYER, SafariZone_South_Movement_PlayerExitEast
waitmovement 0
goto SafariZone_South_EventScript_Exit
end
diff --git a/data/maps/SeafloorCavern_Entrance/map.json b/data/maps/SeafloorCavern_Entrance/map.json
index 5e88d71432..7968d7afe9 100644
--- a/data/maps/SeafloorCavern_Entrance/map.json
+++ b/data/maps/SeafloorCavern_Entrance/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_SEAFLOOR_CAVERN_ENTRANCE_GRUNT",
"graphics_id": "OBJ_EVENT_GFX_AQUA_MEMBER_M",
"x": 10,
"y": 2,
diff --git a/data/maps/SeafloorCavern_Entrance/scripts.inc b/data/maps/SeafloorCavern_Entrance/scripts.inc
index eec69e6f80..05bf490e7d 100644
--- a/data/maps/SeafloorCavern_Entrance/scripts.inc
+++ b/data/maps/SeafloorCavern_Entrance/scripts.inc
@@ -1,5 +1,3 @@
-.set LOCALID_GRUNT, 1
-
SeafloorCavern_Entrance_MapScripts::
map_script MAP_SCRIPT_ON_RESUME, SeafloorCavern_Entrance_OnResume
.byte 0
@@ -14,9 +12,9 @@ SeafloorCavern_Entrance_EventScript_Grunt::
goto_if_eq VAR_HAS_TALKED_TO_SEAFLOOR_CAVERN_ENTRANCE_GRUNT, 1, SeafloorCavern_Entrance_EventScript_GruntSpeechShort
waitse
playse SE_PIN
- applymovement LOCALID_GRUNT, Common_Movement_ExclamationMark
+ applymovement LOCALID_SEAFLOOR_CAVERN_ENTRANCE_GRUNT, Common_Movement_ExclamationMark
waitmovement 0
- applymovement LOCALID_GRUNT, Common_Movement_Delay48
+ applymovement LOCALID_SEAFLOOR_CAVERN_ENTRANCE_GRUNT, Common_Movement_Delay48
waitmovement 0
delay 20
call_if_eq VAR_FACING, DIR_WEST, SeafloorCavern_Entrance_EventScript_GruntFacePlayerWest
@@ -24,10 +22,10 @@ SeafloorCavern_Entrance_EventScript_Grunt::
call_if_eq VAR_FACING, DIR_NORTH, SeafloorCavern_Entrance_EventScript_GruntFacePlayerNorth
delay 30
setvar VAR_HAS_TALKED_TO_SEAFLOOR_CAVERN_ENTRANCE_GRUNT, 1
- copyobjectxytoperm LOCALID_GRUNT
+ copyobjectxytoperm LOCALID_SEAFLOOR_CAVERN_ENTRANCE_GRUNT
msgbox SeafloorCavern_Entrance_Text_HearMagmaNearMossdeep, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_GRUNT, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_SEAFLOOR_CAVERN_ENTRANCE_GRUNT, Common_Movement_WalkInPlaceFasterUp
waitmovement 0
releaseall
end
@@ -38,23 +36,23 @@ SeafloorCavern_Entrance_EventScript_GruntSpeechShort::
call_if_eq VAR_FACING, DIR_NORTH, SeafloorCavern_Entrance_EventScript_GruntFacePlayerNorth
msgbox SeafloorCavern_Entrance_Text_HearMagmaNearMossdeepShort, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_GRUNT, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_SEAFLOOR_CAVERN_ENTRANCE_GRUNT, Common_Movement_WalkInPlaceFasterUp
waitmovement 0
releaseall
end
SeafloorCavern_Entrance_EventScript_GruntFacePlayerEast::
- applymovement LOCALID_GRUNT, Common_Movement_WalkInPlaceFasterLeft
+ applymovement LOCALID_SEAFLOOR_CAVERN_ENTRANCE_GRUNT, Common_Movement_WalkInPlaceFasterLeft
waitmovement 0
return
SeafloorCavern_Entrance_EventScript_GruntFacePlayerWest::
- applymovement LOCALID_GRUNT, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_SEAFLOOR_CAVERN_ENTRANCE_GRUNT, Common_Movement_WalkInPlaceFasterRight
waitmovement 0
return
SeafloorCavern_Entrance_EventScript_GruntFacePlayerNorth::
- applymovement LOCALID_GRUNT, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_SEAFLOOR_CAVERN_ENTRANCE_GRUNT, Common_Movement_WalkInPlaceFasterDown
waitmovement 0
return
diff --git a/data/maps/SeafloorCavern_Room9/map.json b/data/maps/SeafloorCavern_Room9/map.json
index 0cf1b44a07..fc06c3c76e 100644
--- a/data/maps/SeafloorCavern_Room9/map.json
+++ b/data/maps/SeafloorCavern_Room9/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_SEAFLOOR_CAVERN_KYOGRE",
"graphics_id": "OBJ_EVENT_GFX_KYOGRE_FRONT",
"x": 17,
"y": 38,
@@ -28,6 +29,7 @@
"flag": "FLAG_HIDE_SEAFLOOR_CAVERN_ROOM_9_KYOGRE"
},
{
+ "local_id": "LOCALID_SEAFLOOR_CAVERN_ARCHIE",
"graphics_id": "OBJ_EVENT_GFX_ARCHIE",
"x": 9,
"y": 42,
@@ -41,6 +43,7 @@
"flag": "FLAG_HIDE_SEAFLOOR_CAVERN_ROOM_9_ARCHIE"
},
{
+ "local_id": "LOCALID_SEAFLOOR_CAVERN_MAXIE",
"graphics_id": "OBJ_EVENT_GFX_MAXIE",
"x": 9,
"y": 42,
@@ -54,6 +57,7 @@
"flag": "FLAG_HIDE_SEAFLOOR_CAVERN_ROOM_9_MAXIE"
},
{
+ "local_id": "LOCALID_SEAFLOOR_CAVERN_GRUNT_1",
"graphics_id": "OBJ_EVENT_GFX_MAGMA_MEMBER_M",
"x": 8,
"y": 41,
@@ -67,6 +71,7 @@
"flag": "FLAG_HIDE_SEAFLOOR_CAVERN_ROOM_9_MAGMA_GRUNTS"
},
{
+ "local_id": "LOCALID_SEAFLOOR_CAVERN_GRUNT_2",
"graphics_id": "OBJ_EVENT_GFX_MAGMA_MEMBER_F",
"x": 8,
"y": 42,
@@ -93,6 +98,7 @@
"flag": "FLAG_ITEM_SEAFLOOR_CAVERN_ROOM_9_TM_EARTHQUAKE"
},
{
+ "local_id": "LOCALID_SEAFLOOR_CAVERN_KYOGRE_SLEEPING",
"graphics_id": "OBJ_EVENT_GFX_KYOGRE_ASLEEP",
"x": 17,
"y": 38,
diff --git a/data/maps/SeafloorCavern_Room9/scripts.inc b/data/maps/SeafloorCavern_Room9/scripts.inc
index 63e6baf3c7..a14faa71d5 100644
--- a/data/maps/SeafloorCavern_Room9/scripts.inc
+++ b/data/maps/SeafloorCavern_Room9/scripts.inc
@@ -1,28 +1,21 @@
-.set LOCALID_KYOGRE, 1
-.set LOCALID_ARCHIE, 2
-.set LOCALID_MAXIE, 3
-.set LOCALID_GRUNT_1, 4
-.set LOCALID_GRUNT_2, 5
-.set LOCALID_KYOGRE_SLEEPING, 7
-
SeafloorCavern_Room9_MapScripts::
.byte 0
SeafloorCavern_Room9_EventScript_ArchieAwakenKyogre::
lockall
- setvar VAR_0x8004, LOCALID_ARCHIE
- setvar VAR_0x8005, LOCALID_MAXIE
- setvar VAR_0x8006, LOCALID_GRUNT_1
- setvar VAR_0x8007, LOCALID_GRUNT_2
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterUp
+ setvar VAR_0x8004, LOCALID_SEAFLOOR_CAVERN_ARCHIE
+ setvar VAR_0x8005, LOCALID_SEAFLOOR_CAVERN_MAXIE
+ setvar VAR_0x8006, LOCALID_SEAFLOOR_CAVERN_GRUNT_1
+ setvar VAR_0x8007, LOCALID_SEAFLOOR_CAVERN_GRUNT_2
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterUp
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, SeafloorCavern_Room9_Movement_Delay32
+ applymovement LOCALID_PLAYER, SeafloorCavern_Room9_Movement_Delay32
waitmovement 0
playbgm MUS_ENCOUNTER_AQUA, FALSE
msgbox SeafloorCavern_Room9_Text_ArchieHoldItRightThere, MSGBOX_DEFAULT
closemessage
addobject VAR_0x8004
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
waitmovement 0
applymovement VAR_0x8004, SeafloorCavern_Room9_Movement_ArchieApproachPlayer
waitmovement 0
@@ -52,14 +45,14 @@ SeafloorCavern_Room9_EventScript_ArchieAwakenKyogre::
playse SE_ORB
special DoOrbEffect
applymovement VAR_0x8004, Common_Movement_WalkInPlaceFasterUp
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterUp
waitmovement 0
delay 150
- removeobject LOCALID_KYOGRE_SLEEPING
- addobject LOCALID_KYOGRE
+ removeobject LOCALID_SEAFLOOR_CAVERN_KYOGRE_SLEEPING
+ addobject LOCALID_SEAFLOOR_CAVERN_KYOGRE
waitstate
delay 60
- applymovement LOCALID_KYOGRE, SeafloorCavern_Room9_Movement_KyogreApproach
+ applymovement LOCALID_SEAFLOOR_CAVERN_KYOGRE, SeafloorCavern_Room9_Movement_KyogreApproach
waitmovement 0
special FadeOutOrbEffect
waitstate
@@ -69,9 +62,9 @@ SeafloorCavern_Room9_EventScript_ArchieAwakenKyogre::
setvar VAR_0x8007, 5 @ shake delay
special ShakeCamera
waitstate
- applymovement LOCALID_KYOGRE, SeafloorCavern_Room9_Movement_KyogreExit
+ applymovement LOCALID_SEAFLOOR_CAVERN_KYOGRE, SeafloorCavern_Room9_Movement_KyogreExit
waitmovement 0
- removeobject LOCALID_KYOGRE
+ removeobject LOCALID_SEAFLOOR_CAVERN_KYOGRE
delay 4
setvar VAR_0x8004, 2 @ vertical pan
setvar VAR_0x8005, 2 @ horizontal pan
@@ -80,13 +73,13 @@ SeafloorCavern_Room9_EventScript_ArchieAwakenKyogre::
special ShakeCamera
waitstate
delay 30
- setvar VAR_0x8004, LOCALID_ARCHIE
- setvar VAR_0x8005, LOCALID_MAXIE
- setvar VAR_0x8006, LOCALID_GRUNT_1
- setvar VAR_0x8007, LOCALID_GRUNT_2
+ setvar VAR_0x8004, LOCALID_SEAFLOOR_CAVERN_ARCHIE
+ setvar VAR_0x8005, LOCALID_SEAFLOOR_CAVERN_MAXIE
+ setvar VAR_0x8006, LOCALID_SEAFLOOR_CAVERN_GRUNT_1
+ setvar VAR_0x8007, LOCALID_SEAFLOOR_CAVERN_GRUNT_2
msgbox SeafloorCavern_Room9_Text_ArchieWhereDidKyogreGo, MSGBOX_DEFAULT
playse SE_PC_LOGIN
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
waitmovement 0
msgbox SeafloorCavern_Room9_Text_ArchieAMessageFromOutside, MSGBOX_DEFAULT
closemessage
diff --git a/data/maps/SkyPillar_Outside/map.json b/data/maps/SkyPillar_Outside/map.json
index d72441266e..545ebcd25e 100644
--- a/data/maps/SkyPillar_Outside/map.json
+++ b/data/maps/SkyPillar_Outside/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_SKY_PILLAR_WALLACE",
"graphics_id": "OBJ_EVENT_GFX_WALLACE",
"x": 13,
"y": 7,
diff --git a/data/maps/SkyPillar_Outside/scripts.inc b/data/maps/SkyPillar_Outside/scripts.inc
index f25c82df65..cfacf141d1 100644
--- a/data/maps/SkyPillar_Outside/scripts.inc
+++ b/data/maps/SkyPillar_Outside/scripts.inc
@@ -1,5 +1,3 @@
-.set LOCALID_WALLACE, 1
-
SkyPillar_Outside_MapScripts::
map_script MAP_SCRIPT_ON_TRANSITION, SkyPillar_Outside_OnTransition
map_script MAP_SCRIPT_ON_LOAD, SkyPillar_Outside_OnLoad
@@ -34,9 +32,9 @@ SkyPillar_Outside_OnFrame:
SkyPillar_Outside_EventScript_WallaceScene::
lockall
- applymovement LOCALID_WALLACE, SkyPillar_Outside_Movement_WallaceApproachPlayer
+ applymovement LOCALID_SKY_PILLAR_WALLACE, SkyPillar_Outside_Movement_WallaceApproachPlayer
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
waitmovement 0
msgbox SkyPillar_Outside_Text_OpenedDoorToSkyPillar, MSGBOX_DEFAULT
closemessage
@@ -50,8 +48,8 @@ SkyPillar_Outside_EventScript_WallaceScene::
delay 40
msgbox SkyPillar_Outside_Text_EarthquakeNotMomentToWaste, MSGBOX_DEFAULT
closemessage
- applymovement OBJ_EVENT_ID_PLAYER, SkyPillar_Outside_Movement_PlayerClimbSkyPillar
- applymovement LOCALID_WALLACE, SkyPillar_Outside_Movement_WallaceClimbSkyPillar
+ applymovement LOCALID_PLAYER, SkyPillar_Outside_Movement_PlayerClimbSkyPillar
+ applymovement LOCALID_SKY_PILLAR_WALLACE, SkyPillar_Outside_Movement_WallaceClimbSkyPillar
waitmovement 0
setvar VAR_0x8004, 1 @ vertical pan
setvar VAR_0x8005, 3 @ horizontal pan
@@ -60,13 +58,13 @@ SkyPillar_Outside_EventScript_WallaceScene::
special ShakeCamera
waitstate
delay 20
- applymovement LOCALID_WALLACE, Common_Movement_WalkInPlaceFasterLeft
+ applymovement LOCALID_SKY_PILLAR_WALLACE, Common_Movement_WalkInPlaceFasterLeft
waitmovement 0
delay 10
- applymovement LOCALID_WALLACE, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_SKY_PILLAR_WALLACE, Common_Movement_WalkInPlaceFasterRight
waitmovement 0
delay 20
- applymovement LOCALID_WALLACE, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_SKY_PILLAR_WALLACE, Common_Movement_WalkInPlaceFasterDown
waitmovement 0
delay 30
msgbox SkyPillar_Outside_Text_SituationGettingWorse, MSGBOX_DEFAULT
@@ -83,7 +81,7 @@ SkyPillar_Outside_EventScript_WallaceScene::
fadescreenswapbuffers FADE_TO_BLACK
clearflag FLAG_HIDE_MAP_NAME_POPUP
setvar VAR_SOOTOPOLIS_CITY_STATE, 4
- removeobject LOCALID_WALLACE
+ removeobject LOCALID_SKY_PILLAR_WALLACE
clearflag FLAG_HIDE_SOOTOPOLIS_CITY_WALLACE
fadescreenswapbuffers FADE_FROM_BLACK
releaseall
diff --git a/data/maps/SkyPillar_Top/map.json b/data/maps/SkyPillar_Top/map.json
index 4c7ea03d15..888e05805d 100644
--- a/data/maps/SkyPillar_Top/map.json
+++ b/data/maps/SkyPillar_Top/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_RAYQUAZA_SLEEPING",
"graphics_id": "OBJ_EVENT_GFX_RAYQUAZA",
"x": 14,
"y": 7,
diff --git a/data/maps/SkyPillar_Top/scripts.inc b/data/maps/SkyPillar_Top/scripts.inc
index 19cd7e4f42..3975cc0512 100644
--- a/data/maps/SkyPillar_Top/scripts.inc
+++ b/data/maps/SkyPillar_Top/scripts.inc
@@ -1,5 +1,3 @@
-.set LOCALID_RAYQUAZA_SLEEPING, 1
-
SkyPillar_Top_MapScripts::
map_script MAP_SCRIPT_ON_RESUME, SkyPillar_Top_OnResume
map_script MAP_SCRIPT_ON_TRANSITION, SkyPillar_Top_OnTransition
@@ -90,10 +88,10 @@ SkyPillar_Top_EventScript_RanFromRayquaza2::
SkyPillar_Top_EventScript_AwakenRayquaza::
lockall
fadeoutbgm 1
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_FaceUp
+ applymovement LOCALID_PLAYER, Common_Movement_FaceUp
waitmovement 0
special SpawnCameraObject
- applymovement OBJ_EVENT_ID_CAMERA, SkyPillar_Top_Movement_CameraPanUp
+ applymovement LOCALID_CAMERA, SkyPillar_Top_Movement_CameraPanUp
waitmovement 0
special RemoveCameraObject
applymovement LOCALID_RAYQUAZA_SLEEPING, SkyPillar_Top_Movement_RayquazaStir
@@ -123,7 +121,7 @@ SkyPillar_Top_EventScript_AwakenRayquaza::
delay 20
fadeinbgm 1
special SpawnCameraObject
- applymovement OBJ_EVENT_ID_CAMERA, SkyPillar_Top_Movement_CameraPanDown
+ applymovement LOCALID_CAMERA, SkyPillar_Top_Movement_CameraPanDown
waitmovement 0
special RemoveCameraObject
setvar VAR_SOOTOPOLIS_CITY_STATE, 5
diff --git a/data/maps/SlateportCity/map.json b/data/maps/SlateportCity/map.json
index 972b51447e..aa281c6bb8 100644
--- a/data/maps/SlateportCity/map.json
+++ b/data/maps/SlateportCity/map.json
@@ -31,6 +31,7 @@
],
"object_events": [
{
+ "local_id": "LOCALID_SLATEPORT_FAT_MAN",
"graphics_id": "OBJ_EVENT_GFX_FAT_MAN",
"x": 21,
"y": 11,
@@ -44,6 +45,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_SLATEPORT_MAN_1",
"graphics_id": "OBJ_EVENT_GFX_MAN_1",
"x": 34,
"y": 29,
@@ -57,6 +59,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_SLATEPORT_RICH_BOY",
"graphics_id": "OBJ_EVENT_GFX_RICH_BOY",
"x": 5,
"y": 13,
@@ -83,6 +86,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_SLATEPORT_GRUNT_1",
"graphics_id": "OBJ_EVENT_GFX_AQUA_MEMBER_F",
"x": 31,
"y": 27,
@@ -96,6 +100,7 @@
"flag": "FLAG_HIDE_SLATEPORT_CITY_TEAM_AQUA"
},
{
+ "local_id": "LOCALID_SLATEPORT_COOK",
"graphics_id": "OBJ_EVENT_GFX_COOK",
"x": 5,
"y": 43,
@@ -109,6 +114,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_SLATEPORT_OLD_WOMAN",
"graphics_id": "OBJ_EVENT_GFX_OLD_WOMAN",
"x": 20,
"y": 37,
@@ -122,6 +128,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_SLATEPORT_GIRL",
"graphics_id": "OBJ_EVENT_GFX_GIRL_1",
"x": 8,
"y": 42,
@@ -135,6 +142,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_SLATEPORT_TY",
"graphics_id": "OBJ_EVENT_GFX_CAMERAMAN",
"x": 29,
"y": 13,
@@ -148,6 +156,7 @@
"flag": "FLAG_HIDE_SLATEPORT_CITY_GABBY_AND_TY"
},
{
+ "local_id": "LOCALID_SLATEPORT_GABBY",
"graphics_id": "OBJ_EVENT_GFX_REPORTER_F",
"x": 28,
"y": 14,
@@ -161,6 +170,7 @@
"flag": "FLAG_HIDE_SLATEPORT_CITY_GABBY_AND_TY"
},
{
+ "local_id": "LOCALID_SLATEPORT_CAPT_STERN",
"graphics_id": "OBJ_EVENT_GFX_SCIENTIST_1",
"x": 28,
"y": 13,
@@ -252,6 +262,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_SLATEPORT_GRUNT_2",
"graphics_id": "OBJ_EVENT_GFX_AQUA_MEMBER_M",
"x": 30,
"y": 27,
@@ -265,6 +276,7 @@
"flag": "FLAG_HIDE_SLATEPORT_CITY_TEAM_AQUA"
},
{
+ "local_id": "LOCALID_SLATEPORT_GRUNT_3",
"graphics_id": "OBJ_EVENT_GFX_AQUA_MEMBER_M",
"x": 29,
"y": 27,
@@ -343,6 +355,7 @@
"flag": "FLAG_HIDE_SLATEPORT_CITY_TM_SALESMAN"
},
{
+ "local_id": "LOCALID_SLATEPORT_ENERGY_GURU",
"graphics_id": "OBJ_EVENT_GFX_POKEFAN_M",
"x": 5,
"y": 47,
@@ -356,6 +369,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_SLATEPORT_GRUNT_4",
"graphics_id": "OBJ_EVENT_GFX_AQUA_MEMBER_M",
"x": 22,
"y": 27,
@@ -369,6 +383,7 @@
"flag": "FLAG_HIDE_SLATEPORT_CITY_TEAM_AQUA"
},
{
+ "local_id": "LOCALID_SLATEPORT_GRUNT_5",
"graphics_id": "OBJ_EVENT_GFX_AQUA_MEMBER_M",
"x": 23,
"y": 27,
@@ -382,6 +397,7 @@
"flag": "FLAG_HIDE_SLATEPORT_CITY_TEAM_AQUA"
},
{
+ "local_id": "LOCALID_SLATEPORT_GRUNT_6",
"graphics_id": "OBJ_EVENT_GFX_AQUA_MEMBER_M",
"x": 24,
"y": 27,
@@ -395,6 +411,7 @@
"flag": "FLAG_HIDE_SLATEPORT_CITY_TEAM_AQUA"
},
{
+ "local_id": "LOCALID_SLATEPORT_GRUNT_7",
"graphics_id": "OBJ_EVENT_GFX_AQUA_MEMBER_M",
"x": 21,
"y": 26,
@@ -408,6 +425,7 @@
"flag": "FLAG_HIDE_SLATEPORT_CITY_TEAM_AQUA"
},
{
+ "local_id": "LOCALID_SLATEPORT_GRUNT_8",
"graphics_id": "OBJ_EVENT_GFX_AQUA_MEMBER_M",
"x": 20,
"y": 26,
@@ -421,6 +439,7 @@
"flag": "FLAG_HIDE_SLATEPORT_CITY_TEAM_AQUA"
},
{
+ "local_id": "LOCALID_SLATEPORT_GRUNT_9",
"graphics_id": "OBJ_EVENT_GFX_AQUA_MEMBER_M",
"x": 26,
"y": 27,
@@ -447,6 +466,7 @@
"flag": "FLAG_HIDE_SLATEPORT_CITY_TEAM_AQUA"
},
{
+ "local_id": "LOCALID_SLATEPORT_GRUNT_11",
"graphics_id": "OBJ_EVENT_GFX_AQUA_MEMBER_M",
"x": 25,
"y": 27,
@@ -473,6 +493,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_SLATEPORT_SCOTT",
"graphics_id": "OBJ_EVENT_GFX_SCOTT",
"x": 10,
"y": 12,
diff --git a/data/maps/SlateportCity/scripts.inc b/data/maps/SlateportCity/scripts.inc
index 5438a7f364..923ae7ee95 100644
--- a/data/maps/SlateportCity/scripts.inc
+++ b/data/maps/SlateportCity/scripts.inc
@@ -1,26 +1,3 @@
-.set LOCALID_FAT_MAN, 1
-.set LOCALID_MAN_1, 2
-.set LOCALID_RICH_BOY, 3
-.set LOCALID_GRUNT_1, 5
-.set LOCALID_COOK, 6
-.set LOCALID_OLD_WOMAN, 7
-.set LOCALID_GIRL, 8
-.set LOCALID_TY, 9
-.set LOCALID_GABBY, 10
-.set LOCALID_CAPT_STERN, 11
-.set LOCALID_GRUNT_2, 18
-.set LOCALID_GRUNT_3, 19
-.set LOCALID_GRUNT_4, 26
-.set LOCALID_GRUNT_5, 27
-.set LOCALID_GRUNT_6, 28
-.set LOCALID_GRUNT_7, 29
-.set LOCALID_GRUNT_8, 30
-.set LOCALID_GRUNT_9, 31
-.set LOCALID_GRUNT_11, 33
-.set LOCALID_SCOTT, 35
-
-@ Note: LOCALID_SLATEPORT_ENERGY_GURU is a local id for this map used elsewhere. It's defined in event_objects.h
-
SlateportCity_MapScripts::
map_script MAP_SCRIPT_ON_TRANSITION, SlateportCity_OnTransition
map_script MAP_SCRIPT_ON_FRAME_TABLE, SlateportCity_OnFrame
@@ -40,33 +17,33 @@ SlateportCity_EventScript_EnterSlateport::
return
SlateportCity_EventScript_MovePeopleForSternInterview::
- setobjectxyperm LOCALID_CAPT_STERN, 28, 13
- setobjectxyperm LOCALID_OLD_WOMAN, 25, 13
- setobjectxyperm LOCALID_RICH_BOY, 25, 14
- setobjectxyperm LOCALID_COOK, 27, 16
- setobjectxyperm LOCALID_GIRL, 28, 16
- setobjectxyperm LOCALID_FAT_MAN, 29, 16
- setobjectxyperm LOCALID_MAN_1, 31, 14
- setobjectmovementtype LOCALID_CAPT_STERN, MOVEMENT_TYPE_FACE_DOWN
- setobjectmovementtype LOCALID_OLD_WOMAN, MOVEMENT_TYPE_FACE_DOWN_AND_RIGHT
- setobjectmovementtype LOCALID_RICH_BOY, MOVEMENT_TYPE_FACE_UP_AND_RIGHT
- setobjectmovementtype LOCALID_COOK, MOVEMENT_TYPE_FACE_UP
- setobjectmovementtype LOCALID_GIRL, MOVEMENT_TYPE_FACE_UP
- setobjectmovementtype LOCALID_FAT_MAN, MOVEMENT_TYPE_FACE_UP
- setobjectmovementtype LOCALID_MAN_1, MOVEMENT_TYPE_FACE_LEFT
+ setobjectxyperm LOCALID_SLATEPORT_CAPT_STERN, 28, 13
+ setobjectxyperm LOCALID_SLATEPORT_OLD_WOMAN, 25, 13
+ setobjectxyperm LOCALID_SLATEPORT_RICH_BOY, 25, 14
+ setobjectxyperm LOCALID_SLATEPORT_COOK, 27, 16
+ setobjectxyperm LOCALID_SLATEPORT_GIRL, 28, 16
+ setobjectxyperm LOCALID_SLATEPORT_FAT_MAN, 29, 16
+ setobjectxyperm LOCALID_SLATEPORT_MAN_1, 31, 14
+ setobjectmovementtype LOCALID_SLATEPORT_CAPT_STERN, MOVEMENT_TYPE_FACE_DOWN
+ setobjectmovementtype LOCALID_SLATEPORT_OLD_WOMAN, MOVEMENT_TYPE_FACE_DOWN_AND_RIGHT
+ setobjectmovementtype LOCALID_SLATEPORT_RICH_BOY, MOVEMENT_TYPE_FACE_UP_AND_RIGHT
+ setobjectmovementtype LOCALID_SLATEPORT_COOK, MOVEMENT_TYPE_FACE_UP
+ setobjectmovementtype LOCALID_SLATEPORT_GIRL, MOVEMENT_TYPE_FACE_UP
+ setobjectmovementtype LOCALID_SLATEPORT_FAT_MAN, MOVEMENT_TYPE_FACE_UP
+ setobjectmovementtype LOCALID_SLATEPORT_MAN_1, MOVEMENT_TYPE_FACE_LEFT
return
SlateportCity_EventScript_SetReadyForScottScene::
setflag FLAG_HIDE_MAP_NAME_POPUP
getplayerxy VAR_0x8004, VAR_0x8005
goto_if_eq VAR_0x8004, 30, SlateportCity_EventScript_MoveScottLeft
- setobjectxyperm LOCALID_SCOTT, 23, 27
- setobjectmovementtype LOCALID_SCOTT, MOVEMENT_TYPE_FACE_RIGHT
+ setobjectxyperm LOCALID_SLATEPORT_SCOTT, 23, 27
+ setobjectmovementtype LOCALID_SLATEPORT_SCOTT, MOVEMENT_TYPE_FACE_RIGHT
return
SlateportCity_EventScript_MoveScottLeft::
- setobjectxyperm LOCALID_SCOTT, 22, 27
- setobjectmovementtype LOCALID_SCOTT, MOVEMENT_TYPE_FACE_RIGHT
+ setobjectxyperm LOCALID_SLATEPORT_SCOTT, 22, 27
+ setobjectmovementtype LOCALID_SLATEPORT_SCOTT, MOVEMENT_TYPE_FACE_RIGHT
return
SlateportCity_OnFrame:
@@ -75,17 +52,17 @@ SlateportCity_OnFrame:
SlateportCity_EventScript_ScottScene::
lockall
- addobject LOCALID_SCOTT
- applymovement OBJ_EVENT_ID_PLAYER, SlateportCity_Movement_PlayerFaceScott
- applymovement LOCALID_SCOTT, SlateportCity_Movement_ScottApproachPlayer
+ addobject LOCALID_SLATEPORT_SCOTT
+ applymovement LOCALID_PLAYER, SlateportCity_Movement_PlayerFaceScott
+ applymovement LOCALID_SLATEPORT_SCOTT, SlateportCity_Movement_ScottApproachPlayer
waitmovement 0
msgbox SlateportCity_Text_YouDroveTeamAquaAway, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_SCOTT, Common_Movement_WalkInPlaceFasterLeft
+ applymovement LOCALID_SLATEPORT_SCOTT, Common_Movement_WalkInPlaceFasterLeft
waitmovement 0
delay 60
msgbox SlateportCity_Text_MaybeThisTrainer, MSGBOX_DEFAULT
- applymovement LOCALID_SCOTT, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_SLATEPORT_SCOTT, Common_Movement_WalkInPlaceFasterRight
waitmovement 0
msgbox SlateportCity_Text_LetsRegisterEachOther, MSGBOX_DEFAULT
closemessage
@@ -98,11 +75,11 @@ SlateportCity_EventScript_ScottScene::
setflag FLAG_ENABLE_SCOTT_MATCH_CALL
msgbox SlateportCity_Text_KeepEyeOnTrainersBeSeeingYou, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_SCOTT, SlateportCity_Movement_ScottExit
+ applymovement LOCALID_SLATEPORT_SCOTT, SlateportCity_Movement_ScottExit
waitmovement 0
- removeobject LOCALID_SCOTT
- setobjectxyperm LOCALID_SCOTT, 10, 12
- setobjectmovementtype LOCALID_SCOTT, MOVEMENT_TYPE_FACE_DOWN
+ removeobject LOCALID_SLATEPORT_SCOTT
+ setobjectxyperm LOCALID_SLATEPORT_SCOTT, 10, 12
+ setobjectmovementtype LOCALID_SLATEPORT_SCOTT, MOVEMENT_TYPE_FACE_DOWN
clearflag FLAG_HIDE_MAP_NAME_POPUP
setvar VAR_SLATEPORT_OUTSIDE_MUSEUM_STATE, 2
addvar VAR_SCOTT_STATE, 1
@@ -370,7 +347,7 @@ SlateportCity_EventScript_AquaGrunt1::
faceplayer
msgbox SlateportCity_Text_QuitPushing, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_GRUNT_1, Common_Movement_FaceOriginalDirection
+ applymovement LOCALID_SLATEPORT_GRUNT_1, Common_Movement_FaceOriginalDirection
waitmovement 0
release
end
@@ -380,7 +357,7 @@ SlateportCity_EventScript_AquaGrunt2::
faceplayer
msgbox SlateportCity_Text_AquaHasPolicy, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_GRUNT_2, Common_Movement_FaceOriginalDirection
+ applymovement LOCALID_SLATEPORT_GRUNT_2, Common_Movement_FaceOriginalDirection
waitmovement 0
release
end
@@ -390,7 +367,7 @@ SlateportCity_EventScript_AquaGrunt3::
faceplayer
msgbox SlateportCity_Text_BossIsBrilliant, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_GRUNT_3, Common_Movement_FaceOriginalDirection
+ applymovement LOCALID_SLATEPORT_GRUNT_3, Common_Movement_FaceOriginalDirection
waitmovement 0
release
end
@@ -400,7 +377,7 @@ SlateportCity_EventScript_AquaGrunt4::
faceplayer
msgbox SlateportCity_Text_WhatsNewSchemeIWonder, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_GRUNT_4, Common_Movement_FaceOriginalDirection
+ applymovement LOCALID_SLATEPORT_GRUNT_4, Common_Movement_FaceOriginalDirection
waitmovement 0
release
end
@@ -410,7 +387,7 @@ SlateportCity_EventScript_AquaGrunt5::
faceplayer
msgbox SlateportCity_Text_ShouldTakeItAll, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_GRUNT_5, Common_Movement_FaceOriginalDirection
+ applymovement LOCALID_SLATEPORT_GRUNT_5, Common_Movement_FaceOriginalDirection
waitmovement 0
release
end
@@ -420,7 +397,7 @@ SlateportCity_EventScript_AquaGrunt6::
faceplayer
msgbox SlateportCity_Text_DontButtIn, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_GRUNT_6, Common_Movement_FaceOriginalDirection
+ applymovement LOCALID_SLATEPORT_GRUNT_6, Common_Movement_FaceOriginalDirection
waitmovement 0
release
end
@@ -430,7 +407,7 @@ SlateportCity_EventScript_AquaGrunt7::
faceplayer
msgbox SlateportCity_Text_RemindsMeOfLongLineForGames, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_GRUNT_7, Common_Movement_FaceOriginalDirection
+ applymovement LOCALID_SLATEPORT_GRUNT_7, Common_Movement_FaceOriginalDirection
waitmovement 0
release
end
@@ -440,7 +417,7 @@ SlateportCity_EventScript_AquaGrunt8::
faceplayer
msgbox SlateportCity_Text_WhyAreWeLiningUp, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_GRUNT_8, Common_Movement_FaceOriginalDirection
+ applymovement LOCALID_SLATEPORT_GRUNT_8, Common_Movement_FaceOriginalDirection
waitmovement 0
release
end
@@ -449,31 +426,31 @@ SlateportCity_EventScript_AquaGrunt9::
lock
faceplayer
playse SE_PIN
- applymovement LOCALID_GRUNT_9, Common_Movement_ExclamationMark
+ applymovement LOCALID_SLATEPORT_GRUNT_9, Common_Movement_ExclamationMark
waitmovement 0
- applymovement LOCALID_GRUNT_9, Common_Movement_Delay48
+ applymovement LOCALID_SLATEPORT_GRUNT_9, Common_Movement_Delay48
waitmovement 0
msgbox SlateportCity_Text_WhatDoYouWant, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_GRUNT_9, Common_Movement_FaceOriginalDirection
+ applymovement LOCALID_SLATEPORT_GRUNT_9, Common_Movement_FaceOriginalDirection
waitmovement 0
- applymovement LOCALID_GRUNT_9, SlateportCity_Movement_DelayAquaGrunt
+ applymovement LOCALID_SLATEPORT_GRUNT_9, SlateportCity_Movement_DelayAquaGrunt
waitmovement 0
- applymovement LOCALID_GRUNT_9, Common_Movement_FacePlayer
+ applymovement LOCALID_SLATEPORT_GRUNT_9, Common_Movement_FacePlayer
waitmovement 0
msgbox SlateportCity_Text_IllReadSignForYou, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_GRUNT_9, Common_Movement_FaceOriginalDirection
+ applymovement LOCALID_SLATEPORT_GRUNT_9, Common_Movement_FaceOriginalDirection
waitmovement 0
- applymovement LOCALID_GRUNT_9, SlateportCity_Movement_DelayAquaGrunt
+ applymovement LOCALID_SLATEPORT_GRUNT_9, SlateportCity_Movement_DelayAquaGrunt
waitmovement 0
msgbox SlateportCity_Text_SaysSomethingLikeSeaIsEndless, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_GRUNT_9, Common_Movement_FacePlayer
+ applymovement LOCALID_SLATEPORT_GRUNT_9, Common_Movement_FacePlayer
waitmovement 0
- applymovement LOCALID_GRUNT_9, SlateportCity_Movement_DelayAquaGrunt
+ applymovement LOCALID_SLATEPORT_GRUNT_9, SlateportCity_Movement_DelayAquaGrunt
waitmovement 0
- applymovement LOCALID_GRUNT_9, Common_Movement_FaceOriginalDirection
+ applymovement LOCALID_SLATEPORT_GRUNT_9, Common_Movement_FaceOriginalDirection
waitmovement 0
release
end
@@ -492,7 +469,7 @@ SlateportCity_EventScript_AquaGrunt11::
faceplayer
msgbox SlateportCity_Text_HotSpringsAfterOperation, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_GRUNT_11, Common_Movement_FaceOriginalDirection
+ applymovement LOCALID_SLATEPORT_GRUNT_11, Common_Movement_FaceOriginalDirection
waitmovement 0
release
end
@@ -570,48 +547,48 @@ SlateportCity_EventScript_CaptStern::
msgbox SlateportCity_Text_SternMoveAheadWithExploration, MSGBOX_DEFAULT
msgbox SlateportCity_Text_GabbyWonderfulThanksForInterview, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_GABBY, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_SLATEPORT_GABBY, Common_Movement_WalkInPlaceFasterRight
waitmovement 0
delay 10
- applymovement LOCALID_TY, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_SLATEPORT_TY, Common_Movement_WalkInPlaceFasterDown
waitmovement 0
delay 25
- applymovement LOCALID_CAPT_STERN, SlateportCity_Movement_SternWatchGabbyAndTyExit
- applymovement OBJ_EVENT_ID_PLAYER, SlateportCity_Movement_PlayerFaceStern
- applymovement LOCALID_GABBY, SlateportCity_Movement_GabbyExit
- applymovement LOCALID_TY, SlateportCity_Movement_TyExit
+ applymovement LOCALID_SLATEPORT_CAPT_STERN, SlateportCity_Movement_SternWatchGabbyAndTyExit
+ applymovement LOCALID_PLAYER, SlateportCity_Movement_PlayerFaceStern
+ applymovement LOCALID_SLATEPORT_GABBY, SlateportCity_Movement_GabbyExit
+ applymovement LOCALID_SLATEPORT_TY, SlateportCity_Movement_TyExit
waitmovement 0
- removeobject LOCALID_GABBY
- removeobject LOCALID_TY
+ removeobject LOCALID_SLATEPORT_GABBY
+ removeobject LOCALID_SLATEPORT_TY
msgbox SlateportCity_Text_SternWhewFirstInterview, MSGBOX_DEFAULT
- applymovement LOCALID_CAPT_STERN, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_SLATEPORT_CAPT_STERN, Common_Movement_WalkInPlaceFasterUp
waitmovement 0
msgbox SlateportCity_Text_OhPlayerWeMadeDiscovery, MSGBOX_DEFAULT
playbgm MUS_ENCOUNTER_AQUA, FALSE
msgbox SlateportCity_Text_AquaWillAssumeControlOfSubmarine, MSGBOX_DEFAULT
- applymovement LOCALID_COOK, Common_Movement_WalkInPlaceFasterLeft
- applymovement LOCALID_FAT_MAN, Common_Movement_WalkInPlaceFasterLeft
- applymovement LOCALID_OLD_WOMAN, SlateportCity_Movement_OldWomanConcern
- applymovement LOCALID_RICH_BOY, Common_Movement_QuestionMark
- applymovement LOCALID_MAN_1, SlateportCity_Movement_ManConcern
+ applymovement LOCALID_SLATEPORT_COOK, Common_Movement_WalkInPlaceFasterLeft
+ applymovement LOCALID_SLATEPORT_FAT_MAN, Common_Movement_WalkInPlaceFasterLeft
+ applymovement LOCALID_SLATEPORT_OLD_WOMAN, SlateportCity_Movement_OldWomanConcern
+ applymovement LOCALID_SLATEPORT_RICH_BOY, Common_Movement_QuestionMark
+ applymovement LOCALID_SLATEPORT_MAN_1, SlateportCity_Movement_ManConcern
waitmovement 0
- applymovement LOCALID_CAPT_STERN, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_SLATEPORT_CAPT_STERN, Common_Movement_WalkInPlaceFasterDown
waitmovement 0
msgbox SlateportCity_Text_SternWhatWasAllThat, MSGBOX_DEFAULT
playse SE_PIN
- applymovement LOCALID_CAPT_STERN, Common_Movement_ExclamationMark
+ applymovement LOCALID_SLATEPORT_CAPT_STERN, Common_Movement_ExclamationMark
waitmovement 0
- applymovement LOCALID_CAPT_STERN, Common_Movement_Delay48
+ applymovement LOCALID_SLATEPORT_CAPT_STERN, Common_Movement_Delay48
waitmovement 0
- applymovement LOCALID_CAPT_STERN, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_SLATEPORT_CAPT_STERN, Common_Movement_WalkInPlaceFasterUp
waitmovement 0
msgbox SlateportCity_Text_FromHarborTryingToTakeSub, MSGBOX_DEFAULT
msgbox SlateportCity_Text_PleaseComeWithMe, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_CAPT_STERN, SlateportCity_Movement_SternEnterHarbor
- applymovement OBJ_EVENT_ID_PLAYER, SlateportCity_Movement_PlayerEnterHarbor
+ applymovement LOCALID_SLATEPORT_CAPT_STERN, SlateportCity_Movement_SternEnterHarbor
+ applymovement LOCALID_PLAYER, SlateportCity_Movement_PlayerEnterHarbor
waitmovement 0
- removeobject LOCALID_CAPT_STERN
+ removeobject LOCALID_SLATEPORT_CAPT_STERN
clearflag FLAG_HIDE_SLATEPORT_CITY_HARBOR_CAPTAIN_STERN
clearflag FLAG_HIDE_SLATEPORT_CITY_HARBOR_SUBMARINE_SHADOW
clearflag FLAG_HIDE_SLATEPORT_CITY_HARBOR_AQUA_GRUNT
@@ -887,22 +864,22 @@ SlateportCity_EventScript_NotEnoughBerryPowder::
SlateportCity_EventScript_ScottBattleTentScene::
lockall
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_FaceUp
+ applymovement LOCALID_PLAYER, Common_Movement_FaceUp
waitmovement 0
opendoor 10, 12
waitdooranim
- addobject LOCALID_SCOTT
- applymovement OBJ_EVENT_ID_PLAYER, SlateportCity_Movement_PushPlayerDown
- applymovement LOCALID_SCOTT, SlateportCity_Movement_ScottExitBattleTent
+ addobject LOCALID_SLATEPORT_SCOTT
+ applymovement LOCALID_PLAYER, SlateportCity_Movement_PushPlayerDown
+ applymovement LOCALID_SLATEPORT_SCOTT, SlateportCity_Movement_ScottExitBattleTent
waitmovement 0
closedoor 10, 12
waitdooranim
msgbox SlateportCity_Text_TakingBattleTentChallenge, MSGBOX_DEFAULT
closemessage
- applymovement OBJ_EVENT_ID_PLAYER, SlateportCity_Movement_PlayerWatchScottExit
- applymovement LOCALID_SCOTT, SlateportCity_Movement_ScottExitAfterBattleTent
+ applymovement LOCALID_PLAYER, SlateportCity_Movement_PlayerWatchScottExit
+ applymovement LOCALID_SLATEPORT_SCOTT, SlateportCity_Movement_ScottExitAfterBattleTent
waitmovement 0
- removeobject LOCALID_SCOTT
+ removeobject LOCALID_SLATEPORT_SCOTT
addvar VAR_SCOTT_STATE, 1
setvar VAR_SLATEPORT_OUTSIDE_MUSEUM_STATE, 3
releaseall
diff --git a/data/maps/SlateportCity_BattleTentBattleRoom/map.json b/data/maps/SlateportCity_BattleTentBattleRoom/map.json
index 27cce84b49..13b8005364 100644
--- a/data/maps/SlateportCity_BattleTentBattleRoom/map.json
+++ b/data/maps/SlateportCity_BattleTentBattleRoom/map.json
@@ -28,6 +28,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_SLATEPORT_TENT_BATTLE_OPPONENT",
"graphics_id": "OBJ_EVENT_GFX_VAR_0",
"x": 5,
"y": 1,
@@ -41,6 +42,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_SLATEPORT_TENT_BATTLE_PLAYER",
"graphics_id": "OBJ_EVENT_GFX_VAR_1",
"x": 4,
"y": 8,
diff --git a/data/maps/SlateportCity_BattleTentBattleRoom/scripts.inc b/data/maps/SlateportCity_BattleTentBattleRoom/scripts.inc
index 76b6784562..78d5527311 100644
--- a/data/maps/SlateportCity_BattleTentBattleRoom/scripts.inc
+++ b/data/maps/SlateportCity_BattleTentBattleRoom/scripts.inc
@@ -1,5 +1,7 @@
-.set LOCALID_OPPONENT, 2
-.set LOCALID_PLAYER, 3
+@ On this map the player will automatically walk into the room, but the camera is supposed to remain still.
+@ To do this GF sets the player (LOCALID_PLAYER) invisible and creates a fake player object (LOCALID_SLATEPORT_TENT_BATTLE_PLAYER).
+@ The graphics of this fake player object are represented with VAR_OBJ_GFX_ID_1.
+@ The graphics of the opponent are represented with VAR_OBJ_GFX_ID_0, which will ultimately be set by factory_setopponentgfx.
SlateportCity_BattleTentBattleRoom_MapScripts::
map_script MAP_SCRIPT_ON_TRANSITION, SlateportCity_BattleTentBattleRoom_OnTransition
@@ -7,9 +9,6 @@ SlateportCity_BattleTentBattleRoom_MapScripts::
map_script MAP_SCRIPT_ON_FRAME_TABLE, SlateportCity_BattleTentBattleRoom_OnFrame
.byte 0
- @ On this map the player (OBJ_EVENT_ID_PLAYER) is hidden
- @ The player is represented instead by LOCALID_PLAYER, which has the gfx id VAR_OBJ_GFX_ID_1
-
SlateportCity_BattleTentBattleRoom_OnTransition:
call SlateportCity_BattleTentBattleRoom_EventScript_SetPlayerGfx
end
@@ -34,8 +33,8 @@ SlateportCity_BattleTentBattleRoom_OnWarp:
SlateportCity_BattleTentBattleRoom_EventScript_SetUpObjects::
setvar VAR_TEMP_1, 1
- hideobjectat OBJ_EVENT_ID_PLAYER, MAP_FALLARBOR_TOWN_BATTLE_TENT_BATTLE_ROOM
- hideobjectat LOCALID_OPPONENT, MAP_SLATEPORT_CITY_BATTLE_TENT_BATTLE_ROOM
+ hideobjectat LOCALID_PLAYER, MAP_FALLARBOR_TOWN_BATTLE_TENT_BATTLE_ROOM
+ hideobjectat LOCALID_SLATEPORT_TENT_BATTLE_OPPONENT, MAP_SLATEPORT_CITY_BATTLE_TENT_BATTLE_ROOM
end
SlateportCity_BattleTentBattleRoom_OnFrame:
@@ -43,14 +42,14 @@ SlateportCity_BattleTentBattleRoom_OnFrame:
.2byte 0
SlateportCity_BattleTentBattleRoom_EventScript_EnterRoom::
- applymovement LOCALID_PLAYER, SlateportCity_BattleTentBattleRoom_Movement_PlayerEnter
+ applymovement LOCALID_SLATEPORT_TENT_BATTLE_PLAYER, SlateportCity_BattleTentBattleRoom_Movement_PlayerEnter
waitmovement 0
factory_setopponentgfx
- setobjectxyperm LOCALID_OPPONENT, 5, 1
- removeobject LOCALID_OPPONENT
+ setobjectxyperm LOCALID_SLATEPORT_TENT_BATTLE_OPPONENT, 5, 1
+ removeobject LOCALID_SLATEPORT_TENT_BATTLE_OPPONENT
delay 1
- addobject LOCALID_OPPONENT
- applymovement LOCALID_OPPONENT, SlateportCity_BattleTentBattleRoom_Movement_OpponentEnter
+ addobject LOCALID_SLATEPORT_TENT_BATTLE_OPPONENT
+ applymovement LOCALID_SLATEPORT_TENT_BATTLE_OPPONENT, SlateportCity_BattleTentBattleRoom_Movement_OpponentEnter
waitmovement 0
battletent_getopponentintro
lockall
diff --git a/data/maps/SlateportCity_BattleTentCorridor/map.json b/data/maps/SlateportCity_BattleTentCorridor/map.json
index c9cd4b1a71..a6f1e60de7 100644
--- a/data/maps/SlateportCity_BattleTentCorridor/map.json
+++ b/data/maps/SlateportCity_BattleTentCorridor/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_SLATEPORT_TENT_CORRIDOR_ATTENDANT",
"graphics_id": "OBJ_EVENT_GFX_SCIENTIST_1",
"x": 2,
"y": 6,
diff --git a/data/maps/SlateportCity_BattleTentCorridor/scripts.inc b/data/maps/SlateportCity_BattleTentCorridor/scripts.inc
index 75156f68f0..d0c90a8b7a 100644
--- a/data/maps/SlateportCity_BattleTentCorridor/scripts.inc
+++ b/data/maps/SlateportCity_BattleTentCorridor/scripts.inc
@@ -1,5 +1,3 @@
-.set LOCALID_ATTENDANT, 1
-
SlateportCity_BattleTentCorridor_MapScripts::
map_script MAP_SCRIPT_ON_FRAME_TABLE, SlateportCity_BattleTentCorridor_OnFrame
map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, SlateportCity_BattleTentCorridor_OnWarp
@@ -14,10 +12,10 @@ SlateportCity_BattleTentCorridor_OnWarp:
SlateportCity_BattleTentCorridor_EventScript_SetUpObjects::
setvar VAR_TEMP_1, 1
goto_if_ne VAR_0x8006, 1, SlateportCity_BattleTentCorridor_EventScript_TurnPlayerNorth
- setobjectxy LOCALID_ATTENDANT, 2, 2
- turnobject LOCALID_ATTENDANT, DIR_SOUTH
+ setobjectxy LOCALID_SLATEPORT_TENT_CORRIDOR_ATTENDANT, 2, 2
+ turnobject LOCALID_SLATEPORT_TENT_CORRIDOR_ATTENDANT, DIR_SOUTH
SlateportCity_BattleTentCorridor_EventScript_TurnPlayerNorth::
- turnobject OBJ_EVENT_ID_PLAYER, DIR_NORTH
+ turnobject LOCALID_PLAYER, DIR_NORTH
end
SlateportCity_BattleTentCorridor_OnFrame:
@@ -27,8 +25,8 @@ SlateportCity_BattleTentCorridor_OnFrame:
SlateportCity_BattleTentCorridor_EventScript_EnterCorridor::
goto_if_eq VAR_0x8006, 1, SlateportCity_BattleTentCorridor_EventScript_ReturnToRoomFromBattle
setvar VAR_TEMP_0, 1
- applymovement LOCALID_ATTENDANT, SlateportCity_BattleTentCorridor_Movement_AttendantEnter
- applymovement OBJ_EVENT_ID_PLAYER, SlateportCity_BattleTentCorridor_Movement_PlayerEnter
+ applymovement LOCALID_SLATEPORT_TENT_CORRIDOR_ATTENDANT, SlateportCity_BattleTentCorridor_Movement_AttendantEnter
+ applymovement LOCALID_PLAYER, SlateportCity_BattleTentCorridor_Movement_PlayerEnter
waitmovement 0
goto_if_eq VAR_0x8006, 2, SlateportCity_BattleTentCorridor_EventScript_ResumeChallenge
slateporttent_generaterentalmons
@@ -40,12 +38,12 @@ SlateportCity_BattleTentCorridor_EventScript_EnterCorridor::
SlateportCity_BattleTentCorridor_EventScript_EnterBattleRoom::
msgbox BattleFrontier_BattleFactoryPreBattleRoom_Text_RightThisWay, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_ATTENDANT, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_SLATEPORT_TENT_CORRIDOR_ATTENDANT, Common_Movement_WalkInPlaceFasterUp
waitmovement 0
opendoor 2, 1
waitdooranim
- applymovement LOCALID_ATTENDANT, SlateportCity_BattleTentCorridor_Movement_AttendantExit
- applymovement OBJ_EVENT_ID_PLAYER, SlateportCity_BattleTentCorridor_Movement_PlayerExit
+ applymovement LOCALID_SLATEPORT_TENT_CORRIDOR_ATTENDANT, SlateportCity_BattleTentCorridor_Movement_AttendantExit
+ applymovement LOCALID_PLAYER, SlateportCity_BattleTentCorridor_Movement_PlayerExit
waitmovement 0
closedoor 2, 1
waitdooranim
diff --git a/data/maps/SlateportCity_BattleTentLobby/map.json b/data/maps/SlateportCity_BattleTentLobby/map.json
index 6a599df8f3..227c0bb414 100644
--- a/data/maps/SlateportCity_BattleTentLobby/map.json
+++ b/data/maps/SlateportCity_BattleTentLobby/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_SLATEPORT_TENT_ATTENDANT",
"graphics_id": "OBJ_EVENT_GFX_SCIENTIST_1",
"x": 6,
"y": 5,
diff --git a/data/maps/SlateportCity_BattleTentLobby/scripts.inc b/data/maps/SlateportCity_BattleTentLobby/scripts.inc
index 88dd323da0..26c6e56f47 100644
--- a/data/maps/SlateportCity_BattleTentLobby/scripts.inc
+++ b/data/maps/SlateportCity_BattleTentLobby/scripts.inc
@@ -1,5 +1,3 @@
-.set LOCALID_ATTENDANT, 1
-
SlateportCity_BattleTentLobby_MapScripts::
map_script MAP_SCRIPT_ON_FRAME_TABLE, SlateportCity_BattleTentLobby_OnFrame
map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, SlateportCity_BattleTentLobby_OnWarp
@@ -11,7 +9,7 @@ SlateportCity_BattleTentLobby_OnWarp:
SlateportCity_BattleTentLobby_EventScript_TurnPlayerNorth::
setvar VAR_TEMP_1, 1
- turnobject OBJ_EVENT_ID_PLAYER, DIR_NORTH
+ turnobject LOCALID_PLAYER, DIR_NORTH
end
SlateportCity_BattleTentLobby_OnFrame:
@@ -138,13 +136,13 @@ SlateportCity_BattleTentLobby_EventScript_EnterChallenge::
end
SlateportCity_BattleTentLobby_EventScript_WalkToDoor::
- applymovement LOCALID_ATTENDANT, SlateportCity_BattleTentLobby_Movement_AttendantWalkToDoor
- applymovement OBJ_EVENT_ID_PLAYER, SlateportCity_BattleTentLobby_Movement_PlayerWalkToDoor
+ applymovement LOCALID_SLATEPORT_TENT_ATTENDANT, SlateportCity_BattleTentLobby_Movement_AttendantWalkToDoor
+ applymovement LOCALID_PLAYER, SlateportCity_BattleTentLobby_Movement_PlayerWalkToDoor
waitmovement 0
opendoor 6, 1
waitdooranim
- applymovement LOCALID_ATTENDANT, SlateportCity_BattleTentLobby_Movement_AttendantEnterDoor
- applymovement OBJ_EVENT_ID_PLAYER, SlateportCity_BattleTentLobby_Movement_PlayerEnterDoor
+ applymovement LOCALID_SLATEPORT_TENT_ATTENDANT, SlateportCity_BattleTentLobby_Movement_AttendantEnterDoor
+ applymovement LOCALID_PLAYER, SlateportCity_BattleTentLobby_Movement_PlayerEnterDoor
waitmovement 0
closedoor 6, 1
waitdooranim
diff --git a/data/maps/SlateportCity_Harbor/map.json b/data/maps/SlateportCity_Harbor/map.json
index 05fe77c61c..11b530cd1e 100644
--- a/data/maps/SlateportCity_Harbor/map.json
+++ b/data/maps/SlateportCity_Harbor/map.json
@@ -54,6 +54,7 @@
"flag": "FLAG_HIDE_SLATEPORT_CITY_HARBOR_PATRONS"
},
{
+ "local_id": "LOCALID_SLATEPORT_HARBOR_CAPT_STERN",
"graphics_id": "OBJ_EVENT_GFX_SCIENTIST_1",
"x": 6,
"y": 13,
@@ -67,6 +68,7 @@
"flag": "FLAG_HIDE_SLATEPORT_CITY_HARBOR_CAPTAIN_STERN"
},
{
+ "local_id": "LOCALID_SLATEPORT_HARBOR_SS_TIDAL",
"graphics_id": "OBJ_EVENT_GFX_SS_TIDAL",
"x": 8,
"y": 9,
@@ -80,6 +82,7 @@
"flag": "FLAG_HIDE_SLATEPORT_CITY_HARBOR_SS_TIDAL"
},
{
+ "local_id": "LOCALID_SLATEPORT_HARBOR_GRUNT",
"graphics_id": "OBJ_EVENT_GFX_AQUA_MEMBER_M",
"x": 7,
"y": 10,
@@ -93,6 +96,7 @@
"flag": "FLAG_HIDE_SLATEPORT_CITY_HARBOR_AQUA_GRUNT"
},
{
+ "local_id": "LOCALID_SLATEPORT_HARBOR_ARCHIE",
"graphics_id": "OBJ_EVENT_GFX_ARCHIE",
"x": 8,
"y": 10,
@@ -106,6 +110,7 @@
"flag": "FLAG_HIDE_SLATEPORT_CITY_HARBOR_ARCHIE"
},
{
+ "local_id": "LOCALID_SLATEPORT_HARBOR_SUBMARINE",
"graphics_id": "OBJ_EVENT_GFX_SUBMARINE_SHADOW",
"x": 7,
"y": 9,
diff --git a/data/maps/SlateportCity_Harbor/scripts.inc b/data/maps/SlateportCity_Harbor/scripts.inc
index b2a71f2b7c..ebcd40ab0c 100644
--- a/data/maps/SlateportCity_Harbor/scripts.inc
+++ b/data/maps/SlateportCity_Harbor/scripts.inc
@@ -1,9 +1,3 @@
-.set LOCALID_CAPT_STERN, 4
-.set LOCALID_SS_TIDAL, 5
-.set LOCALID_GRUNT, 6
-.set LOCALID_ARCHIE, 7
-.set LOCALID_SUBMARINE, 8
-
SlateportCity_Harbor_MapScripts::
map_script MAP_SCRIPT_ON_TRANSITION, SlateportCity_Harbor_OnTransition
.byte 0
@@ -21,8 +15,8 @@ SlateportCity_Harbor_EventScript_ShowSSTidal::
SlateportCity_Harbor_EventScript_ReadyAquaEscapeScene::
savebgm MUS_ENCOUNTER_AQUA
- setobjectxyperm LOCALID_CAPT_STERN, 12, 13
- setobjectmovementtype LOCALID_CAPT_STERN, MOVEMENT_TYPE_FACE_LEFT
+ setobjectxyperm LOCALID_SLATEPORT_HARBOR_CAPT_STERN, 12, 13
+ setobjectmovementtype LOCALID_SLATEPORT_HARBOR_CAPT_STERN, MOVEMENT_TYPE_FACE_LEFT
setflag FLAG_HIDE_SLATEPORT_CITY_HARBOR_PATRONS
return
@@ -47,26 +41,26 @@ SlateportCity_Harbor_EventScript_AquaEscapeTrigger2::
SlateportCity_Harbor_EventScript_AquaEscapeTrigger3::
lockall
setvar VAR_0x8008, 3
- applymovement OBJ_EVENT_ID_PLAYER, SlateportCity_Harbor_Movement_PlayerWalkUp
+ applymovement LOCALID_PLAYER, SlateportCity_Harbor_Movement_PlayerWalkUp
waitmovement 0
goto SlateportCity_Harbor_EventScript_AquaEscapeScene
end
SlateportCity_Harbor_EventScript_AquaEscapeScene::
- applymovement LOCALID_ARCHIE, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_SLATEPORT_HARBOR_ARCHIE, Common_Movement_WalkInPlaceFasterDown
waitmovement 0
- applymovement LOCALID_GRUNT, Common_Movement_WalkInPlaceFasterDown
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_SLATEPORT_HARBOR_GRUNT, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterUp
waitmovement 0
msgbox SlateportCity_Harbor_Text_ArchieYouAgainHideoutInLilycove, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_GRUNT, SlateportCity_Harbor_Movement_AquaBoardSub
- applymovement LOCALID_ARCHIE, SlateportCity_Harbor_Movement_AquaBoardSub
- applymovement LOCALID_SUBMARINE, SlateportCity_Harbor_Movement_SubmarineExit
+ applymovement LOCALID_SLATEPORT_HARBOR_GRUNT, SlateportCity_Harbor_Movement_AquaBoardSub
+ applymovement LOCALID_SLATEPORT_HARBOR_ARCHIE, SlateportCity_Harbor_Movement_AquaBoardSub
+ applymovement LOCALID_SLATEPORT_HARBOR_SUBMARINE, SlateportCity_Harbor_Movement_SubmarineExit
waitmovement 0
- removeobject LOCALID_GRUNT
- removeobject LOCALID_ARCHIE
- removeobject LOCALID_SUBMARINE
+ removeobject LOCALID_SLATEPORT_HARBOR_GRUNT
+ removeobject LOCALID_SLATEPORT_HARBOR_ARCHIE
+ removeobject LOCALID_SLATEPORT_HARBOR_SUBMARINE
setvar VAR_SLATEPORT_HARBOR_STATE, 2
setflag FLAG_MET_TEAM_AQUA_HARBOR
setflag FLAG_HIDE_LILYCOVE_MOTEL_SCOTT
@@ -78,29 +72,29 @@ SlateportCity_Harbor_EventScript_AquaEscapeScene::
closemessage
setflag FLAG_HIDE_AQUA_HIDEOUT_1F_GRUNT_1_BLOCKING_ENTRANCE
setflag FLAG_HIDE_AQUA_HIDEOUT_1F_GRUNT_2_BLOCKING_ENTRANCE
- copyobjectxytoperm LOCALID_CAPT_STERN
- setobjectmovementtype LOCALID_CAPT_STERN, MOVEMENT_TYPE_FACE_RIGHT
+ copyobjectxytoperm LOCALID_SLATEPORT_HARBOR_CAPT_STERN
+ setobjectmovementtype LOCALID_SLATEPORT_HARBOR_CAPT_STERN, MOVEMENT_TYPE_FACE_RIGHT
releaseall
end
SlateportCity_Harbor_EventScript_SternApproachPlayer0::
- applymovement LOCALID_CAPT_STERN, SlateportCity_Harbor_Movement_SternApproachPlayer0
+ applymovement LOCALID_SLATEPORT_HARBOR_CAPT_STERN, SlateportCity_Harbor_Movement_SternApproachPlayer0
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterDown
waitmovement 0
return
SlateportCity_Harbor_EventScript_SternApproachPlayer1::
- applymovement LOCALID_CAPT_STERN, SlateportCity_Harbor_Movement_SternApproachPlayer1
+ applymovement LOCALID_SLATEPORT_HARBOR_CAPT_STERN, SlateportCity_Harbor_Movement_SternApproachPlayer1
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterRight
waitmovement 0
return
SlateportCity_Harbor_EventScript_SternApproachPlayer::
- applymovement LOCALID_CAPT_STERN, SlateportCity_Harbor_Movement_SternApproachPlayer
+ applymovement LOCALID_SLATEPORT_HARBOR_CAPT_STERN, SlateportCity_Harbor_Movement_SternApproachPlayer
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterRight
waitmovement 0
return
@@ -234,8 +228,8 @@ SlateportCity_Harbor_EventScript_BoardFerry::
call_if_eq VAR_FACING, DIR_NORTH, SlateportCity_Harbor_EventScript_BoardFerryNorth
call_if_eq VAR_FACING, DIR_EAST, SlateportCity_Harbor_EventScript_BoardFerryEast
delay 30
- hideobjectat OBJ_EVENT_ID_PLAYER, 0
- setvar VAR_0x8004, LOCALID_SS_TIDAL
+ hideobjectat LOCALID_PLAYER, 0
+ setvar VAR_0x8004, LOCALID_SLATEPORT_HARBOR_SS_TIDAL
call Common_EventScript_FerryDepart
return
@@ -245,12 +239,12 @@ SlateportCity_Harbor_EventScript_CancelDestinationSelect::
end
SlateportCity_Harbor_EventScript_BoardFerryEast::
- applymovement OBJ_EVENT_ID_PLAYER, SlateportCity_Harbor_Movement_BoardFerryEast
+ applymovement LOCALID_PLAYER, SlateportCity_Harbor_Movement_BoardFerryEast
waitmovement 0
return
SlateportCity_Harbor_EventScript_BoardFerryNorth::
- applymovement OBJ_EVENT_ID_PLAYER, SlateportCity_Harbor_Movement_BoardFerryNorth
+ applymovement LOCALID_PLAYER, SlateportCity_Harbor_Movement_BoardFerryNorth
waitmovement 0
return
diff --git a/data/maps/SlateportCity_Mart/map.json b/data/maps/SlateportCity_Mart/map.json
index a86614bd14..d0f698013e 100644
--- a/data/maps/SlateportCity_Mart/map.json
+++ b/data/maps/SlateportCity_Mart/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_SLATEPORT_MART_CLERK",
"graphics_id": "OBJ_EVENT_GFX_MART_EMPLOYEE",
"x": 1,
"y": 3,
diff --git a/data/maps/SlateportCity_OceanicMuseum_1F/map.json b/data/maps/SlateportCity_OceanicMuseum_1F/map.json
index fd3468a52d..14d6b0583d 100644
--- a/data/maps/SlateportCity_OceanicMuseum_1F/map.json
+++ b/data/maps/SlateportCity_OceanicMuseum_1F/map.json
@@ -171,6 +171,7 @@
"flag": "FLAG_HIDE_SLATEPORT_MUSEUM_POPULATION"
},
{
+ "local_id": "LOCALID_OCEANIC_MUSEUM_FAMILIAR_GRUNT",
"graphics_id": "OBJ_EVENT_GFX_AQUA_MEMBER_M",
"x": 9,
"y": 4,
diff --git a/data/maps/SlateportCity_OceanicMuseum_1F/scripts.inc b/data/maps/SlateportCity_OceanicMuseum_1F/scripts.inc
index 8b464f73ae..08c8c41ff1 100644
--- a/data/maps/SlateportCity_OceanicMuseum_1F/scripts.inc
+++ b/data/maps/SlateportCity_OceanicMuseum_1F/scripts.inc
@@ -1,5 +1,3 @@
-.set LOCALID_FAMILIAR_GRUNT, 13
-
SlateportCity_OceanicMuseum_1F_MapScripts::
.byte 0
@@ -9,14 +7,14 @@ SlateportCity_OceanicMuseum_1F_EventScript_EntranceAttendant::
SlateportCity_OceanicMuseum_1F_EventScript_PayEntranceFeeLeft::
lockall
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
waitmovement 0
goto SlateportCity_OceanicMuseum_1F_EventScript_PayEntranceFee
end
SlateportCity_OceanicMuseum_1F_EventScript_PayEntranceFeeRight::
lockall
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterRight
waitmovement 0
goto SlateportCity_OceanicMuseum_1F_EventScript_PayEntranceFee
end
@@ -27,7 +25,7 @@ SlateportCity_OceanicMuseum_1F_EventScript_PayEntranceFee::
goto_if_eq VAR_RESULT, YES, SlateportCity_OceanicMuseum_1F_EventScript_CheckMoneyForFee
closemessage
hidemoneybox
- applymovement OBJ_EVENT_ID_PLAYER, SlateportCity_OceanicMuseum_1F_Movement_PushPlayerBackFromCounter
+ applymovement LOCALID_PLAYER, SlateportCity_OceanicMuseum_1F_Movement_PushPlayerBackFromCounter
waitmovement 0
releaseall
end
@@ -49,7 +47,7 @@ SlateportCity_OceanicMuseum_1F_EventScript_NotEnoughMoney::
msgbox SlateportCity_OceanicMuseum_1F_Text_NotEnoughMoney, MSGBOX_DEFAULT
closemessage
hidemoneybox
- applymovement OBJ_EVENT_ID_PLAYER, SlateportCity_OceanicMuseum_1F_Movement_PushPlayerBackFromCounter
+ applymovement LOCALID_PLAYER, SlateportCity_OceanicMuseum_1F_Movement_PushPlayerBackFromCounter
waitmovement 0
releaseall
end
@@ -146,9 +144,9 @@ SlateportCity_OceanicMuseum_1F_EventScript_FamiliarGrunt::
faceplayer
delay 8
playse SE_PIN
- applymovement LOCALID_FAMILIAR_GRUNT, Common_Movement_ExclamationMark
+ applymovement LOCALID_OCEANIC_MUSEUM_FAMILIAR_GRUNT, Common_Movement_ExclamationMark
waitmovement 0
- applymovement LOCALID_FAMILIAR_GRUNT, Common_Movement_Delay48
+ applymovement LOCALID_OCEANIC_MUSEUM_FAMILIAR_GRUNT, Common_Movement_Delay48
waitmovement 0
msgbox SlateportCity_OceanicMuseum_1F_Text_RememberMeTakeThis, MSGBOX_DEFAULT
giveitem ITEM_TM_THIEF
@@ -163,21 +161,21 @@ SlateportCity_OceanicMuseum_1F_EventScript_FamiliarGrunt::
end
SlateportCity_OceanicMuseum_1F_EventScript_FamiliarGruntExitNorth::
- applymovement OBJ_EVENT_ID_PLAYER, SlateportCity_OceanicMuseum_1F_Movement_PlayerWatchGruntExitNorth
- applymovement LOCALID_FAMILIAR_GRUNT, SlateportCity_OceanicMuseum_1F_Movement_FamiliarGruntExitNorth
+ applymovement LOCALID_PLAYER, SlateportCity_OceanicMuseum_1F_Movement_PlayerWatchGruntExitNorth
+ applymovement LOCALID_OCEANIC_MUSEUM_FAMILIAR_GRUNT, SlateportCity_OceanicMuseum_1F_Movement_FamiliarGruntExitNorth
waitmovement 0
goto SlateportCity_OceanicMuseum_1F_EventScript_FamiliarGruntExited
end
SlateportCity_OceanicMuseum_1F_EventScript_FamiliarGruntExitSouth::
- applymovement LOCALID_FAMILIAR_GRUNT, SlateportCity_OceanicMuseum_1F_Movement_FamiliarGruntExit
+ applymovement LOCALID_OCEANIC_MUSEUM_FAMILIAR_GRUNT, SlateportCity_OceanicMuseum_1F_Movement_FamiliarGruntExit
waitmovement 0
goto SlateportCity_OceanicMuseum_1F_EventScript_FamiliarGruntExited
end
SlateportCity_OceanicMuseum_1F_EventScript_FamiliarGruntExitWestEast::
- applymovement OBJ_EVENT_ID_PLAYER, SlateportCity_OceanicMuseum_1F_Movement_PlayerWatchGruntExitWestEast
- applymovement LOCALID_FAMILIAR_GRUNT, SlateportCity_OceanicMuseum_1F_Movement_FamiliarGruntExit
+ applymovement LOCALID_PLAYER, SlateportCity_OceanicMuseum_1F_Movement_PlayerWatchGruntExitWestEast
+ applymovement LOCALID_OCEANIC_MUSEUM_FAMILIAR_GRUNT, SlateportCity_OceanicMuseum_1F_Movement_FamiliarGruntExit
waitmovement 0
goto SlateportCity_OceanicMuseum_1F_EventScript_FamiliarGruntExited
end
@@ -185,7 +183,7 @@ SlateportCity_OceanicMuseum_1F_EventScript_FamiliarGruntExitWestEast::
SlateportCity_OceanicMuseum_1F_EventScript_FamiliarGruntExited::
setflag FLAG_HIDE_SLATEPORT_CITY_OCEANIC_MUSEUM_FAMILIAR_AQUA_GRUNT
playse SE_EXIT
- removeobject LOCALID_FAMILIAR_GRUNT
+ removeobject LOCALID_OCEANIC_MUSEUM_FAMILIAR_GRUNT
release
end
diff --git a/data/maps/SlateportCity_OceanicMuseum_2F/map.json b/data/maps/SlateportCity_OceanicMuseum_2F/map.json
index bab9c1ea58..7ada1f8ac1 100644
--- a/data/maps/SlateportCity_OceanicMuseum_2F/map.json
+++ b/data/maps/SlateportCity_OceanicMuseum_2F/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_OCEANIC_MUSEUM_2F_CAPT_STERN",
"graphics_id": "OBJ_EVENT_GFX_SCIENTIST_1",
"x": 13,
"y": 6,
@@ -28,6 +29,7 @@
"flag": "FLAG_HIDE_SLATEPORT_CITY_OCEANIC_MUSEUM_2F_CAPTAIN_STERN"
},
{
+ "local_id": "LOCALID_OCEANIC_MUSEUM_2F_ARCHIE",
"graphics_id": "OBJ_EVENT_GFX_ARCHIE",
"x": 6,
"y": 1,
@@ -41,6 +43,7 @@
"flag": "FLAG_HIDE_SLATEPORT_CITY_OCEANIC_MUSEUM_2F_ARCHIE"
},
{
+ "local_id": "LOCALID_OCEANIC_MUSEUM_2F_GRUNT_1",
"graphics_id": "OBJ_EVENT_GFX_AQUA_MEMBER_M",
"x": 6,
"y": 1,
@@ -54,6 +57,7 @@
"flag": "FLAG_HIDE_SLATEPORT_CITY_OCEANIC_MUSEUM_2F_AQUA_GRUNT_1"
},
{
+ "local_id": "LOCALID_OCEANIC_MUSEUM_2F_GRUNT_2",
"graphics_id": "OBJ_EVENT_GFX_AQUA_MEMBER_M",
"x": 6,
"y": 1,
diff --git a/data/maps/SlateportCity_OceanicMuseum_2F/scripts.inc b/data/maps/SlateportCity_OceanicMuseum_2F/scripts.inc
index 3565b95809..70463728f3 100644
--- a/data/maps/SlateportCity_OceanicMuseum_2F/scripts.inc
+++ b/data/maps/SlateportCity_OceanicMuseum_2F/scripts.inc
@@ -1,8 +1,3 @@
-.set LOCALID_CAPT_STERN, 1
-.set LOCALID_ARCHIE, 2
-.set LOCALID_GRUNT_1, 3
-.set LOCALID_GRUNT_2, 4
-
SlateportCity_OceanicMuseum_2F_MapScripts::
.byte 0
@@ -12,14 +7,14 @@ SlateportCity_OceanicMuseum_2F_EventScript_CaptStern::
msgbox SlateportCity_OceanicMuseum_2F_Text_ThankYouForTheParts, MSGBOX_DEFAULT
closemessage
playbgm MUS_ENCOUNTER_AQUA, TRUE
- addobject LOCALID_GRUNT_1
- applymovement LOCALID_GRUNT_1, SlateportCity_OceanicMuseum_2F_Movement_FirstGruntEnter
+ addobject LOCALID_OCEANIC_MUSEUM_2F_GRUNT_1
+ applymovement LOCALID_OCEANIC_MUSEUM_2F_GRUNT_1, SlateportCity_OceanicMuseum_2F_Movement_FirstGruntEnter
waitmovement 0
- addobject LOCALID_GRUNT_2
- applymovement LOCALID_GRUNT_2, SlateportCity_OceanicMuseum_2F_Movement_SecondGruntEnter
+ addobject LOCALID_OCEANIC_MUSEUM_2F_GRUNT_2
+ applymovement LOCALID_OCEANIC_MUSEUM_2F_GRUNT_2, SlateportCity_OceanicMuseum_2F_Movement_SecondGruntEnter
waitmovement 0
- applymovement LOCALID_GRUNT_1, SlateportCity_OceanicMuseum_2F_Movement_FirstGruntApproach
- applymovement LOCALID_GRUNT_2, SlateportCity_OceanicMuseum_2F_Movement_SecondGruntApproach
+ applymovement LOCALID_OCEANIC_MUSEUM_2F_GRUNT_1, SlateportCity_OceanicMuseum_2F_Movement_FirstGruntApproach
+ applymovement LOCALID_OCEANIC_MUSEUM_2F_GRUNT_2, SlateportCity_OceanicMuseum_2F_Movement_SecondGruntApproach
waitmovement 0
call_if_eq VAR_FACING, DIR_SOUTH, SlateportCity_OceanicMuseum_2F_EventScript_PlayerFaceGrunts
call_if_eq VAR_FACING, DIR_EAST, SlateportCity_OceanicMuseum_2F_EventScript_PlayerFaceGrunts
@@ -28,47 +23,47 @@ SlateportCity_OceanicMuseum_2F_EventScript_CaptStern::
msgbox SlateportCity_OceanicMuseum_2F_Text_SternWhoAreYou, MSGBOX_DEFAULT
msgbox SlateportCity_OceanicMuseum_2F_Text_WereTeamAqua, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_GRUNT_2, SlateportCity_OceanicMuseum_2F_Movement_GruntApproachToBattle
+ applymovement LOCALID_OCEANIC_MUSEUM_2F_GRUNT_2, SlateportCity_OceanicMuseum_2F_Movement_GruntApproachToBattle
waitmovement 0
call_if_eq VAR_FACING, DIR_SOUTH, SlateportCity_OceanicMuseum_2F_EventScript_PlayerApproachGruntSouth
call_if_eq VAR_FACING, DIR_WEST, SlateportCity_OceanicMuseum_2F_EventScript_PlayerApproachGruntWest
trainerbattle_no_intro TRAINER_GRUNT_MUSEUM_1, SlateportCity_OceanicMuseum_2F_Text_Grunt1Defeat
msgbox SlateportCity_OceanicMuseum_2F_Text_BossGoingToBeFurious, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_GRUNT_2, SlateportCity_OceanicMuseum_2F_Movement_GruntDefeated
+ applymovement LOCALID_OCEANIC_MUSEUM_2F_GRUNT_2, SlateportCity_OceanicMuseum_2F_Movement_GruntDefeated
waitmovement 0
- applymovement LOCALID_GRUNT_1, SlateportCity_OceanicMuseum_2F_Movement_GruntApproachToBattle
+ applymovement LOCALID_OCEANIC_MUSEUM_2F_GRUNT_1, SlateportCity_OceanicMuseum_2F_Movement_GruntApproachToBattle
waitmovement 0
msgbox SlateportCity_OceanicMuseum_2F_Text_LetMeTakeCareOfThis, MSGBOX_DEFAULT
trainerbattle_no_intro TRAINER_GRUNT_MUSEUM_2, SlateportCity_OceanicMuseum_2F_Text_Grunt2Defeat
- applymovement LOCALID_GRUNT_1, SlateportCity_OceanicMuseum_2F_Movement_GruntDefeated
+ applymovement LOCALID_OCEANIC_MUSEUM_2F_GRUNT_1, SlateportCity_OceanicMuseum_2F_Movement_GruntDefeated
waitmovement 0
- applymovement LOCALID_GRUNT_1, Common_Movement_WalkInPlaceFasterDown
- applymovement LOCALID_GRUNT_2, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_OCEANIC_MUSEUM_2F_GRUNT_1, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_OCEANIC_MUSEUM_2F_GRUNT_2, Common_Movement_WalkInPlaceFasterUp
waitmovement 0
msgbox SlateportCity_OceanicMuseum_2F_Text_MeddlingKid, MSGBOX_DEFAULT
closemessage
delay 35
- addobject LOCALID_ARCHIE
- applymovement LOCALID_ARCHIE, SlateportCity_OceanicMuseum_2F_Movement_ArchieEnter
- applymovement LOCALID_GRUNT_2, SlateportCity_OceanicMuseum_2F_Movement_GruntMoveForArchie
+ addobject LOCALID_OCEANIC_MUSEUM_2F_ARCHIE
+ applymovement LOCALID_OCEANIC_MUSEUM_2F_ARCHIE, SlateportCity_OceanicMuseum_2F_Movement_ArchieEnter
+ applymovement LOCALID_OCEANIC_MUSEUM_2F_GRUNT_2, SlateportCity_OceanicMuseum_2F_Movement_GruntMoveForArchie
waitmovement 0
msgbox SlateportCity_OceanicMuseum_2F_Text_CameToSeeWhatsTakingSoLong, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_ARCHIE, SlateportCity_OceanicMuseum_2F_Movement_ArchieApproachPlayer
+ applymovement LOCALID_OCEANIC_MUSEUM_2F_ARCHIE, SlateportCity_OceanicMuseum_2F_Movement_ArchieApproachPlayer
waitmovement 0
msgbox SlateportCity_OceanicMuseum_2F_Text_ArchieWarning, MSGBOX_DEFAULT
closemessage
savebgm MUS_DUMMY
fadedefaultbgm
fadescreen FADE_TO_BLACK
- removeobject LOCALID_ARCHIE
- removeobject LOCALID_GRUNT_1
- removeobject LOCALID_GRUNT_2
+ removeobject LOCALID_OCEANIC_MUSEUM_2F_ARCHIE
+ removeobject LOCALID_OCEANIC_MUSEUM_2F_GRUNT_1
+ removeobject LOCALID_OCEANIC_MUSEUM_2F_GRUNT_2
fadescreen FADE_FROM_BLACK
delay 30
setflag FLAG_HIDE_SLATEPORT_CITY_OCEANIC_MUSEUM_AQUA_GRUNTS
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterRight
waitmovement 0
msgbox SlateportCity_OceanicMuseum_2F_Text_SternThankYouForSavingUs, MSGBOX_DEFAULT
setvar VAR_0x8004, ITEM_DEVON_PARTS
@@ -80,7 +75,7 @@ SlateportCity_OceanicMuseum_2F_EventScript_CaptStern::
waitfanfare
special HealPlayerParty
callnative UpdateFollowingPokemon
- removeobject LOCALID_CAPT_STERN
+ removeobject LOCALID_OCEANIC_MUSEUM_2F_CAPT_STERN
setflag FLAG_HIDE_ROUTE_110_TEAM_AQUA
call_if_eq VAR_REGISTER_BIRCH_STATE, 0, SlateportCity_OceanicMuseum_2F_EventScript_ReadyRegisterBirch
setflag FLAG_DELIVERED_DEVON_GOODS
@@ -96,22 +91,22 @@ SlateportCity_OceanicMuseum_2F_EventScript_ReadyRegisterBirch::
return
SlateportCity_OceanicMuseum_2F_EventScript_PlayerFaceGrunts::
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
waitmovement 0
return
SlateportCity_OceanicMuseum_2F_EventScript_SternFaceGrunts::
- applymovement LOCALID_CAPT_STERN, Common_Movement_WalkInPlaceFasterLeft
+ applymovement LOCALID_OCEANIC_MUSEUM_2F_CAPT_STERN, Common_Movement_WalkInPlaceFasterLeft
waitmovement 0
return
SlateportCity_OceanicMuseum_2F_EventScript_PlayerApproachGruntSouth::
- applymovement OBJ_EVENT_ID_PLAYER, SlateportCity_OceanicMuseum_2F_Movement_PlayerApproachGruntSouth
+ applymovement LOCALID_PLAYER, SlateportCity_OceanicMuseum_2F_Movement_PlayerApproachGruntSouth
waitmovement 0
return
SlateportCity_OceanicMuseum_2F_EventScript_PlayerApproachGruntWest::
- applymovement OBJ_EVENT_ID_PLAYER, SlateportCity_OceanicMuseum_2F_Movement_PlayerApproachGruntWest
+ applymovement LOCALID_PLAYER, SlateportCity_OceanicMuseum_2F_Movement_PlayerApproachGruntWest
waitmovement 0
return
diff --git a/data/maps/SlateportCity_PokemonCenter_1F/map.json b/data/maps/SlateportCity_PokemonCenter_1F/map.json
index 418210f0bd..458ab934e0 100644
--- a/data/maps/SlateportCity_PokemonCenter_1F/map.json
+++ b/data/maps/SlateportCity_PokemonCenter_1F/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_SLATEPORT_NURSE",
"graphics_id": "OBJ_EVENT_GFX_NURSE",
"x": 7,
"y": 2,
diff --git a/data/maps/SlateportCity_PokemonCenter_1F/scripts.inc b/data/maps/SlateportCity_PokemonCenter_1F/scripts.inc
index 295409df81..76f9d58fd5 100644
--- a/data/maps/SlateportCity_PokemonCenter_1F/scripts.inc
+++ b/data/maps/SlateportCity_PokemonCenter_1F/scripts.inc
@@ -1,5 +1,3 @@
-.set LOCALID_NURSE, 1
-
SlateportCity_PokemonCenter_1F_MapScripts::
map_script MAP_SCRIPT_ON_TRANSITION, SlateportCity_PokemonCenter_1F_OnTransition
map_script MAP_SCRIPT_ON_RESUME, CableClub_OnResume
@@ -11,7 +9,7 @@ SlateportCity_PokemonCenter_1F_OnTransition:
end
SlateportCity_PokemonCenter_1F_EventScript_Nurse::
- setvar VAR_0x800B, LOCALID_NURSE
+ setvar VAR_0x800B, LOCALID_SLATEPORT_NURSE
call Common_EventScript_PkmnCenterNurse
waitmessage
waitbuttonpress
diff --git a/data/maps/SlateportCity_SternsShipyard_1F/map.json b/data/maps/SlateportCity_SternsShipyard_1F/map.json
index 4414fcfb12..cd5bd174aa 100644
--- a/data/maps/SlateportCity_SternsShipyard_1F/map.json
+++ b/data/maps/SlateportCity_SternsShipyard_1F/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_DOCK",
"graphics_id": "OBJ_EVENT_GFX_MAN_1",
"x": 5,
"y": 5,
diff --git a/data/maps/SlateportCity_SternsShipyard_1F/scripts.inc b/data/maps/SlateportCity_SternsShipyard_1F/scripts.inc
index 8b4a4de54a..cf2752fd2c 100644
--- a/data/maps/SlateportCity_SternsShipyard_1F/scripts.inc
+++ b/data/maps/SlateportCity_SternsShipyard_1F/scripts.inc
@@ -1,5 +1,3 @@
-.set LOCALID_DOCK, 1
-
SlateportCity_SternsShipyard_1F_MapScripts::
.byte 0
diff --git a/data/maps/SootopolisCity/map.json b/data/maps/SootopolisCity/map.json
index c6a6757d23..35bd4d51eb 100644
--- a/data/maps/SootopolisCity/map.json
+++ b/data/maps/SootopolisCity/map.json
@@ -15,6 +15,7 @@
"connections": [],
"object_events": [
{
+ "local_id": "LOCALID_SOOTOPOLIS_EXPERT",
"graphics_id": "OBJ_EVENT_GFX_EXPERT_M",
"x": 31,
"y": 18,
@@ -28,6 +29,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_SOOTOPOLIS_WOMAN_2",
"graphics_id": "OBJ_EVENT_GFX_WOMAN_4",
"x": 47,
"y": 33,
@@ -41,6 +43,7 @@
"flag": "FLAG_HIDE_SOOTOPOLIS_CITY_RESIDENTS"
},
{
+ "local_id": "LOCALID_KIRI",
"graphics_id": "OBJ_EVENT_GFX_GIRL_2",
"x": 9,
"y": 43,
@@ -54,6 +57,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_SOOTOPOLIS_NINJA_BOY",
"graphics_id": "OBJ_EVENT_GFX_NINJA_BOY",
"x": 51,
"y": 14,
@@ -67,6 +71,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_SOOTOPOLIS_BOY_1",
"graphics_id": "OBJ_EVENT_GFX_BOY_1",
"x": 43,
"y": 26,
@@ -93,6 +98,7 @@
"flag": "FLAG_HIDE_SOOTOPOLIS_CITY_MAN_1"
},
{
+ "local_id": "LOCALID_SOOTOPOLIS_STEVEN",
"graphics_id": "OBJ_EVENT_GFX_STEVEN",
"x": 20,
"y": 36,
@@ -106,6 +112,7 @@
"flag": "FLAG_HIDE_SOOTOPOLIS_CITY_STEVEN"
},
{
+ "local_id": "LOCALID_SOOTOPOLIS_WOMAN_1",
"graphics_id": "OBJ_EVENT_GFX_WOMAN_5",
"x": 49,
"y": 34,
@@ -119,6 +126,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_SOOTOPOLIS_GROUDON",
"graphics_id": "OBJ_EVENT_GFX_GROUDON_SIDE",
"x": 28,
"y": 44,
@@ -132,6 +140,7 @@
"flag": "FLAG_HIDE_SOOTOPOLIS_CITY_GROUDON"
},
{
+ "local_id": "LOCALID_SOOTOPOLIS_KYOGRE",
"graphics_id": "OBJ_EVENT_GFX_KYOGRE_SIDE",
"x": 34,
"y": 44,
@@ -145,6 +154,7 @@
"flag": "FLAG_HIDE_SOOTOPOLIS_CITY_KYOGRE"
},
{
+ "local_id": "LOCALID_SOOTOPOLIS_RAYQUAZA",
"graphics_id": "OBJ_EVENT_GFX_RAYQUAZA",
"x": 31,
"y": 41,
@@ -158,6 +168,7 @@
"flag": "FLAG_HIDE_SOOTOPOLIS_CITY_RAYQUAZA"
},
{
+ "local_id": "LOCALID_SOOTOPOLIS_MANIAC",
"graphics_id": "OBJ_EVENT_GFX_MANIAC",
"x": 17,
"y": 44,
@@ -171,6 +182,7 @@
"flag": "FLAG_HIDE_SOOTOPOLIS_CITY_RESIDENTS"
},
{
+ "local_id": "LOCALID_SOOTOPOLIS_GIRL",
"graphics_id": "OBJ_EVENT_GFX_GIRL_3",
"x": 14,
"y": 42,
@@ -184,6 +196,7 @@
"flag": "FLAG_HIDE_SOOTOPOLIS_CITY_RESIDENTS"
},
{
+ "local_id": "LOCALID_SOOTOPOLIS_BLACK_BELT",
"graphics_id": "OBJ_EVENT_GFX_BLACK_BELT",
"x": 17,
"y": 40,
@@ -197,6 +210,7 @@
"flag": "FLAG_HIDE_SOOTOPOLIS_CITY_RESIDENTS"
},
{
+ "local_id": "LOCALID_SOOTOPOLIS_BOY_2",
"graphics_id": "OBJ_EVENT_GFX_BOY_2",
"x": 19,
"y": 37,
@@ -210,6 +224,7 @@
"flag": "FLAG_HIDE_SOOTOPOLIS_CITY_RESIDENTS"
},
{
+ "local_id": "LOCALID_SOOTOPOLIS_MAXIE",
"graphics_id": "OBJ_EVENT_GFX_MAXIE",
"x": 29,
"y": 33,
@@ -223,6 +238,7 @@
"flag": "FLAG_HIDE_SOOTOPOLIS_CITY_MAXIE"
},
{
+ "local_id": "LOCALID_SOOTOPOLIS_ARCHIE",
"graphics_id": "OBJ_EVENT_GFX_ARCHIE",
"x": 31,
"y": 33,
@@ -236,6 +252,7 @@
"flag": "FLAG_HIDE_SOOTOPOLIS_CITY_ARCHIE"
},
{
+ "local_id": "LOCALID_SOOTOPOLIS_WALLACE",
"graphics_id": "OBJ_EVENT_GFX_WALLACE",
"x": 31,
"y": 18,
diff --git a/data/maps/SootopolisCity/scripts.inc b/data/maps/SootopolisCity/scripts.inc
index 938fd96c69..eb6edd3245 100644
--- a/data/maps/SootopolisCity/scripts.inc
+++ b/data/maps/SootopolisCity/scripts.inc
@@ -1,21 +1,3 @@
-.set LOCALID_EXPERT, 1
-.set LOCALID_WOMAN_2, 2
-.set LOCALID_KIRI, 3
-.set LOCALID_NINJA_BOY, 4
-.set LOCALID_BOY_1, 5
-.set LOCALID_STEVEN, 7
-.set LOCALID_WOMAN_1, 8
-.set LOCALID_GROUDON, 9
-.set LOCALID_KYOGRE, 10
-.set LOCALID_RAYQUAZA, 11
-.set LOCALID_MANIAC, 12
-.set LOCALID_GIRL, 13
-.set LOCALID_BLACK_BELT, 14
-.set LOCALID_BOY_2, 15
-.set LOCALID_MAXIE, 16
-.set LOCALID_ARCHIE, 17
-.set LOCALID_WALLACE, 18
-
SootopolisCity_MapScripts::
map_script MAP_SCRIPT_ON_LOAD, SootopolisCity_OnLoad
map_script MAP_SCRIPT_ON_TRANSITION, SootopolisCity_OnTransition
@@ -73,13 +55,13 @@ SootopolisCity_EventScript_HideMapNamePopup::
SootopolisCity_EventScript_SetBattleSpectators::
setobjectxyperm LOCALID_KIRI, 13, 48
- setobjectxyperm LOCALID_BOY_1, 46, 32
- setobjectxyperm LOCALID_NINJA_BOY, 48, 41
- setobjectxyperm LOCALID_WOMAN_1, 45, 43
+ setobjectxyperm LOCALID_SOOTOPOLIS_BOY_1, 46, 32
+ setobjectxyperm LOCALID_SOOTOPOLIS_NINJA_BOY, 48, 41
+ setobjectxyperm LOCALID_SOOTOPOLIS_WOMAN_1, 45, 43
setobjectmovementtype LOCALID_KIRI, MOVEMENT_TYPE_FACE_UP
- setobjectmovementtype LOCALID_BOY_1, MOVEMENT_TYPE_FACE_LEFT
- setobjectmovementtype LOCALID_NINJA_BOY, MOVEMENT_TYPE_FACE_LEFT
- setobjectmovementtype LOCALID_WOMAN_1, MOVEMENT_TYPE_FACE_LEFT
+ setobjectmovementtype LOCALID_SOOTOPOLIS_BOY_1, MOVEMENT_TYPE_FACE_LEFT
+ setobjectmovementtype LOCALID_SOOTOPOLIS_NINJA_BOY, MOVEMENT_TYPE_FACE_LEFT
+ setobjectmovementtype LOCALID_SOOTOPOLIS_WOMAN_1, MOVEMENT_TYPE_FACE_LEFT
return
SootopolisCity_EventScript_SetLayout::
@@ -119,43 +101,43 @@ SootopolisCity_EventScript_CheckSetEnterCaveOfOriginObjPos::
return
SootopolisCity_EventScript_SetEnterCaveOfOriginObjPos::
- setobjectxyperm LOCALID_EXPERT, 30, 18
- setobjectxyperm LOCALID_STEVEN, 32, 18
+ setobjectxyperm LOCALID_SOOTOPOLIS_EXPERT, 30, 18
+ setobjectxyperm LOCALID_SOOTOPOLIS_STEVEN, 32, 18
return
SootopolisCity_EventScript_SetExitCaveOfOriginObjPos::
- setobjectxyperm LOCALID_EXPERT, 30, 18
- setobjectxyperm LOCALID_WALLACE, 31, 18
- setobjectxyperm LOCALID_STEVEN, 32, 18
+ setobjectxyperm LOCALID_SOOTOPOLIS_EXPERT, 30, 18
+ setobjectxyperm LOCALID_SOOTOPOLIS_WALLACE, 31, 18
+ setobjectxyperm LOCALID_SOOTOPOLIS_STEVEN, 32, 18
end
SootopolisCity_EventScript_SetOutsideGymObjPos::
- setobjectxyperm LOCALID_EXPERT, 31, 18
- setobjectxyperm LOCALID_STEVEN, 29, 33
- setobjectxyperm LOCALID_MAXIE, 33, 35
- setobjectxyperm LOCALID_ARCHIE, 34, 35
+ setobjectxyperm LOCALID_SOOTOPOLIS_EXPERT, 31, 18
+ setobjectxyperm LOCALID_SOOTOPOLIS_STEVEN, 29, 33
+ setobjectxyperm LOCALID_SOOTOPOLIS_MAXIE, 33, 35
+ setobjectxyperm LOCALID_SOOTOPOLIS_ARCHIE, 34, 35
call_if_eq VAR_SOOTOPOLIS_WALLACE_STATE, 0, SootopolisCity_EventScript_SetWallaceMiddle
call_if_eq VAR_SOOTOPOLIS_WALLACE_STATE, 1, SootopolisCity_EventScript_SetWallaceRight
call_if_eq VAR_SOOTOPOLIS_WALLACE_STATE, 2, SootopolisCity_EventScript_SetWallaceLeft
return
SootopolisCity_EventScript_SetWallaceMiddle::
- setobjectxyperm LOCALID_WALLACE, 31, 33
- setobjectmovementtype LOCALID_WALLACE, MOVEMENT_TYPE_FACE_DOWN
+ setobjectxyperm LOCALID_SOOTOPOLIS_WALLACE, 31, 33
+ setobjectmovementtype LOCALID_SOOTOPOLIS_WALLACE, MOVEMENT_TYPE_FACE_DOWN
return
SootopolisCity_EventScript_SetWallaceRight::
- setobjectxyperm LOCALID_WALLACE, 32, 33
- setobjectmovementtype LOCALID_WALLACE, MOVEMENT_TYPE_FACE_DOWN
+ setobjectxyperm LOCALID_SOOTOPOLIS_WALLACE, 32, 33
+ setobjectmovementtype LOCALID_SOOTOPOLIS_WALLACE, MOVEMENT_TYPE_FACE_DOWN
return
SootopolisCity_EventScript_SetWallaceLeft::
- setobjectxyperm LOCALID_WALLACE, 30, 33
- setobjectmovementtype LOCALID_WALLACE, MOVEMENT_TYPE_FACE_DOWN
+ setobjectxyperm LOCALID_SOOTOPOLIS_WALLACE, 30, 33
+ setobjectmovementtype LOCALID_SOOTOPOLIS_WALLACE, MOVEMENT_TYPE_FACE_DOWN
return
SootopolisCity_EventScript_SetExpertBlockCaveEntrance::
- setobjectxyperm LOCALID_EXPERT, 31, 18
+ setobjectxyperm LOCALID_SOOTOPOLIS_EXPERT, 31, 18
return
SootopolisCity_OnWarp:
@@ -168,11 +150,11 @@ SootopolisCity_EventScript_PlayerFaceLegendaries::
end
SootopolisCity_EventScript_PlayerFaceLegendaries1::
- turnobject OBJ_EVENT_ID_PLAYER, DIR_NORTH
+ turnobject LOCALID_PLAYER, DIR_NORTH
return
SootopolisCity_EventScript_PlayerFaceLegendaries2::
- turnobject OBJ_EVENT_ID_PLAYER, DIR_NORTH
+ turnobject LOCALID_PLAYER, DIR_NORTH
setvar VAR_SKY_PILLAR_STATE, 3
return
@@ -197,7 +179,7 @@ SootopolisCity_EventScript_StartLegendariesScene::
SootopolisCity_EventScript_LegendariesSceneFromPokeCenter::
delay 60
special SpawnCameraObject
- applymovement OBJ_EVENT_ID_CAMERA, SootopolisCity_Movement_PanToActionFromPokeCenter
+ applymovement LOCALID_CAMERA, SootopolisCity_Movement_PanToActionFromPokeCenter
waitmovement 0
special RemoveCameraObject
delay 60
@@ -207,14 +189,14 @@ SootopolisCity_EventScript_LegendariesSceneFromPokeCenter::
setvar VAR_0x8004, FALSE @ Just do Groudon/Kyogre fight scene
special Script_DoRayquazaScene
waitstate
- applymovement LOCALID_KYOGRE, Common_Movement_WalkInPlaceFasterLeft
- applymovement LOCALID_GROUDON, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_SOOTOPOLIS_KYOGRE, Common_Movement_WalkInPlaceFasterLeft
+ applymovement LOCALID_SOOTOPOLIS_GROUDON, Common_Movement_WalkInPlaceFasterRight
waitmovement 0
delay 60
waitse
playmoncry SPECIES_KYOGRE, CRY_MODE_ENCOUNTER
- applymovement LOCALID_KYOGRE, SootopolisCity_Movement_KyogreAttack
- applymovement LOCALID_GROUDON, SootopolisCity_Movement_GroudonDefend
+ applymovement LOCALID_SOOTOPOLIS_KYOGRE, SootopolisCity_Movement_KyogreAttack
+ applymovement LOCALID_SOOTOPOLIS_GROUDON, SootopolisCity_Movement_GroudonDefend
waitmovement 0
setvar VAR_0x8004, 1 @ vertical pan
setvar VAR_0x8005, 1 @ horizontal pan
@@ -222,13 +204,13 @@ SootopolisCity_EventScript_LegendariesSceneFromPokeCenter::
setvar VAR_0x8007, 5 @ shake delay
special ShakeCamera
waitstate
- applymovement LOCALID_KYOGRE, SootopolisCity_Movement_KyogreMoveBack
- applymovement LOCALID_GROUDON, SootopolisCity_Movement_GroudonMoveBack
+ applymovement LOCALID_SOOTOPOLIS_KYOGRE, SootopolisCity_Movement_KyogreMoveBack
+ applymovement LOCALID_SOOTOPOLIS_GROUDON, SootopolisCity_Movement_GroudonMoveBack
waitmovement 0
waitse
playmoncry SPECIES_GROUDON, CRY_MODE_ENCOUNTER
- applymovement LOCALID_KYOGRE, SootopolisCity_Movement_KyogreDefend
- applymovement LOCALID_GROUDON, SootopolisCity_Movement_GroudonAttack
+ applymovement LOCALID_SOOTOPOLIS_KYOGRE, SootopolisCity_Movement_KyogreDefend
+ applymovement LOCALID_SOOTOPOLIS_GROUDON, SootopolisCity_Movement_GroudonAttack
waitmovement 0
setvar VAR_0x8004, 1 @ vertical pan
setvar VAR_0x8005, 1 @ horizontal pan
@@ -236,13 +218,13 @@ SootopolisCity_EventScript_LegendariesSceneFromPokeCenter::
setvar VAR_0x8007, 5 @ shake delay
special ShakeCamera
waitstate
- applymovement LOCALID_KYOGRE, SootopolisCity_Movement_KyogreMoveBack
- applymovement LOCALID_GROUDON, SootopolisCity_Movement_GroudonMoveBack
+ applymovement LOCALID_SOOTOPOLIS_KYOGRE, SootopolisCity_Movement_KyogreMoveBack
+ applymovement LOCALID_SOOTOPOLIS_GROUDON, SootopolisCity_Movement_GroudonMoveBack
waitmovement 0
waitse
playmoncry SPECIES_KYOGRE, CRY_MODE_ENCOUNTER
- applymovement LOCALID_KYOGRE, SootopolisCity_Movement_KyogreAttack
- applymovement LOCALID_GROUDON, SootopolisCity_Movement_GroudonDefend
+ applymovement LOCALID_SOOTOPOLIS_KYOGRE, SootopolisCity_Movement_KyogreAttack
+ applymovement LOCALID_SOOTOPOLIS_GROUDON, SootopolisCity_Movement_GroudonDefend
waitmovement 0
setvar VAR_0x8004, 1 @ vertical pan
setvar VAR_0x8005, 1 @ horizontal pan
@@ -250,13 +232,13 @@ SootopolisCity_EventScript_LegendariesSceneFromPokeCenter::
setvar VAR_0x8007, 5 @ shake delay
special ShakeCamera
waitstate
- applymovement LOCALID_KYOGRE, SootopolisCity_Movement_KyogreMoveBack
- applymovement LOCALID_GROUDON, SootopolisCity_Movement_GroudonMoveBack
+ applymovement LOCALID_SOOTOPOLIS_KYOGRE, SootopolisCity_Movement_KyogreMoveBack
+ applymovement LOCALID_SOOTOPOLIS_GROUDON, SootopolisCity_Movement_GroudonMoveBack
waitmovement 0
special SpawnCameraObject
- applymovement LOCALID_KYOGRE, SootopolisCity_Movement_KyogreIdle
- applymovement LOCALID_GROUDON, SootopolisCity_Movement_GroudonIdle
- applymovement OBJ_EVENT_ID_CAMERA, SootopolisCity_Movement_PanBackToPokeCenter
+ applymovement LOCALID_SOOTOPOLIS_KYOGRE, SootopolisCity_Movement_KyogreIdle
+ applymovement LOCALID_SOOTOPOLIS_GROUDON, SootopolisCity_Movement_GroudonIdle
+ applymovement LOCALID_CAMERA, SootopolisCity_Movement_PanBackToPokeCenter
waitmovement 0
special RemoveCameraObject
setvar VAR_SOOTOPOLIS_CITY_STATE, 2
@@ -297,7 +279,7 @@ SootopolisCity_Movement_PanBackToPokeCenter:
SootopolisCity_EventScript_LegendariesSceneFromDive::
delay 60
special SpawnCameraObject
- applymovement OBJ_EVENT_ID_CAMERA, SootopolisCity_Movement_PanToActionFromDive
+ applymovement LOCALID_CAMERA, SootopolisCity_Movement_PanToActionFromDive
waitmovement 0
special RemoveCameraObject
delay 60
@@ -307,14 +289,14 @@ SootopolisCity_EventScript_LegendariesSceneFromDive::
setvar VAR_0x8004, FALSE @ Just do Groudon/Kyogre fight scene
special Script_DoRayquazaScene
waitstate
- applymovement LOCALID_KYOGRE, Common_Movement_WalkInPlaceFasterLeft
- applymovement LOCALID_GROUDON, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_SOOTOPOLIS_KYOGRE, Common_Movement_WalkInPlaceFasterLeft
+ applymovement LOCALID_SOOTOPOLIS_GROUDON, Common_Movement_WalkInPlaceFasterRight
waitmovement 0
delay 60
waitse
playmoncry SPECIES_KYOGRE, CRY_MODE_ENCOUNTER
- applymovement LOCALID_KYOGRE, SootopolisCity_Movement_KyogreAttack
- applymovement LOCALID_GROUDON, SootopolisCity_Movement_GroudonDefend
+ applymovement LOCALID_SOOTOPOLIS_KYOGRE, SootopolisCity_Movement_KyogreAttack
+ applymovement LOCALID_SOOTOPOLIS_GROUDON, SootopolisCity_Movement_GroudonDefend
waitmovement 0
setvar VAR_0x8004, 1 @ vertical pan
setvar VAR_0x8005, 1 @ horizontal pan
@@ -322,13 +304,13 @@ SootopolisCity_EventScript_LegendariesSceneFromDive::
setvar VAR_0x8007, 5 @ shake delay
special ShakeCamera
waitstate
- applymovement LOCALID_KYOGRE, SootopolisCity_Movement_KyogreMoveBack
- applymovement LOCALID_GROUDON, SootopolisCity_Movement_GroudonMoveBack
+ applymovement LOCALID_SOOTOPOLIS_KYOGRE, SootopolisCity_Movement_KyogreMoveBack
+ applymovement LOCALID_SOOTOPOLIS_GROUDON, SootopolisCity_Movement_GroudonMoveBack
waitmovement 0
waitse
playmoncry SPECIES_GROUDON, CRY_MODE_ENCOUNTER
- applymovement LOCALID_KYOGRE, SootopolisCity_Movement_KyogreDefend
- applymovement LOCALID_GROUDON, SootopolisCity_Movement_GroudonAttack
+ applymovement LOCALID_SOOTOPOLIS_KYOGRE, SootopolisCity_Movement_KyogreDefend
+ applymovement LOCALID_SOOTOPOLIS_GROUDON, SootopolisCity_Movement_GroudonAttack
waitmovement 0
setvar VAR_0x8004, 1 @ vertical pan
setvar VAR_0x8005, 1 @ horizontal pan
@@ -336,13 +318,13 @@ SootopolisCity_EventScript_LegendariesSceneFromDive::
setvar VAR_0x8007, 5 @ shake delay
special ShakeCamera
waitstate
- applymovement LOCALID_KYOGRE, SootopolisCity_Movement_KyogreMoveBack
- applymovement LOCALID_GROUDON, SootopolisCity_Movement_GroudonMoveBack
+ applymovement LOCALID_SOOTOPOLIS_KYOGRE, SootopolisCity_Movement_KyogreMoveBack
+ applymovement LOCALID_SOOTOPOLIS_GROUDON, SootopolisCity_Movement_GroudonMoveBack
waitmovement 0
waitse
playmoncry SPECIES_KYOGRE, CRY_MODE_ENCOUNTER
- applymovement LOCALID_KYOGRE, SootopolisCity_Movement_KyogreAttack
- applymovement LOCALID_GROUDON, SootopolisCity_Movement_GroudonDefend
+ applymovement LOCALID_SOOTOPOLIS_KYOGRE, SootopolisCity_Movement_KyogreAttack
+ applymovement LOCALID_SOOTOPOLIS_GROUDON, SootopolisCity_Movement_GroudonDefend
waitmovement 0
setvar VAR_0x8004, 1 @ vertical pan
setvar VAR_0x8005, 1 @ horizontal pan
@@ -350,13 +332,13 @@ SootopolisCity_EventScript_LegendariesSceneFromDive::
setvar VAR_0x8007, 5 @ shake delay
special ShakeCamera
waitstate
- applymovement LOCALID_KYOGRE, SootopolisCity_Movement_KyogreMoveBack
- applymovement LOCALID_GROUDON, SootopolisCity_Movement_GroudonMoveBack
+ applymovement LOCALID_SOOTOPOLIS_KYOGRE, SootopolisCity_Movement_KyogreMoveBack
+ applymovement LOCALID_SOOTOPOLIS_GROUDON, SootopolisCity_Movement_GroudonMoveBack
waitmovement 0
special SpawnCameraObject
- applymovement LOCALID_KYOGRE, SootopolisCity_Movement_KyogreIdle
- applymovement LOCALID_GROUDON, SootopolisCity_Movement_GroudonIdle
- applymovement OBJ_EVENT_ID_CAMERA, SootopolisCity_Movement_PanBackToDive
+ applymovement LOCALID_SOOTOPOLIS_KYOGRE, SootopolisCity_Movement_KyogreIdle
+ applymovement LOCALID_SOOTOPOLIS_GROUDON, SootopolisCity_Movement_GroudonIdle
+ applymovement LOCALID_CAMERA, SootopolisCity_Movement_PanBackToDive
waitmovement 0
special RemoveCameraObject
setvar VAR_SOOTOPOLIS_CITY_STATE, 2
@@ -486,22 +468,22 @@ SootopolisCity_EventScript_StartRayquazaScene::
SootopolisCity_EventScript_RayquazaSceneFromPokeCenter::
delay 60
special SpawnCameraObject
- applymovement OBJ_EVENT_ID_CAMERA, SootopolisCity_Movement_PanToActionFromPokeCenter
+ applymovement LOCALID_CAMERA, SootopolisCity_Movement_PanToActionFromPokeCenter
waitmovement 0
special RemoveCameraObject
delay 60
fadescreenspeed FADE_TO_BLACK, 8
call SootopolisCity_EventScript_SetRoughWater
- removeobject LOCALID_GROUDON
- removeobject LOCALID_KYOGRE
- addobject LOCALID_RAYQUAZA
- hideobjectat LOCALID_RAYQUAZA, MAP_SOOTOPOLIS_CITY
+ removeobject LOCALID_SOOTOPOLIS_GROUDON
+ removeobject LOCALID_SOOTOPOLIS_KYOGRE
+ addobject LOCALID_SOOTOPOLIS_RAYQUAZA
+ hideobjectat LOCALID_SOOTOPOLIS_RAYQUAZA, MAP_SOOTOPOLIS_CITY
setvar VAR_0x8004, TRUE
special Script_DoRayquazaScene
waitstate
playse SE_THUNDER
special SpawnCameraObject
- applymovement OBJ_EVENT_ID_CAMERA, SootopolisCity_Movement_PanUp
+ applymovement LOCALID_CAMERA, SootopolisCity_Movement_PanUp
waitmovement 0
waitse
playmoncry SPECIES_RAYQUAZA, CRY_MODE_ENCOUNTER
@@ -522,9 +504,9 @@ SootopolisCity_EventScript_RayquazaSceneFromPokeCenter::
waitmoncry
setweather WEATHER_NONE
doweather
- applymovement LOCALID_RAYQUAZA, SootopolisCity_Movement_RayquazaFlyOff
+ applymovement LOCALID_SOOTOPOLIS_RAYQUAZA, SootopolisCity_Movement_RayquazaFlyOff
waitmovement 0
- removeobject LOCALID_RAYQUAZA
+ removeobject LOCALID_SOOTOPOLIS_RAYQUAZA
special WaitWeather
waitstate
clearflag FLAG_SYS_WEATHER_CTRL
@@ -540,21 +522,21 @@ SootopolisCity_EventScript_RayquazaSceneFromPokeCenter::
SootopolisCity_EventScript_RayquazaSceneFromDive::
delay 60
special SpawnCameraObject
- applymovement OBJ_EVENT_ID_CAMERA, SootopolisCity_Movement_PanToActionFromDive
+ applymovement LOCALID_CAMERA, SootopolisCity_Movement_PanToActionFromDive
waitmovement 0
special RemoveCameraObject
delay 60
fadescreenspeed FADE_TO_BLACK, 8
call SootopolisCity_EventScript_SetRoughWater
- removeobject LOCALID_GROUDON
- removeobject LOCALID_KYOGRE
- addobject LOCALID_RAYQUAZA
+ removeobject LOCALID_SOOTOPOLIS_GROUDON
+ removeobject LOCALID_SOOTOPOLIS_KYOGRE
+ addobject LOCALID_SOOTOPOLIS_RAYQUAZA
setvar VAR_0x8004, TRUE
special Script_DoRayquazaScene
waitstate
special SpawnCameraObject
- applymovement OBJ_EVENT_ID_CAMERA, SootopolisCity_Movement_PanUp
- applymovement OBJ_EVENT_ID_PLAYER, SootopolisCity_Movement_PlayerApproachLegendaries
+ applymovement LOCALID_CAMERA, SootopolisCity_Movement_PanUp
+ applymovement LOCALID_PLAYER, SootopolisCity_Movement_PlayerApproachLegendaries
waitmovement 0
waitse
playmoncry SPECIES_RAYQUAZA, CRY_MODE_ENCOUNTER
@@ -575,9 +557,9 @@ SootopolisCity_EventScript_RayquazaSceneFromDive::
waitmoncry
setweather WEATHER_NONE
doweather
- applymovement LOCALID_RAYQUAZA, SootopolisCity_Movement_RayquazaFlyOff
+ applymovement LOCALID_SOOTOPOLIS_RAYQUAZA, SootopolisCity_Movement_RayquazaFlyOff
waitmovement 0
- removeobject LOCALID_RAYQUAZA
+ removeobject LOCALID_SOOTOPOLIS_RAYQUAZA
special WaitWeather
waitstate
clearflag FLAG_SYS_WEATHER_CTRL
@@ -772,12 +754,12 @@ SootopolisCity_EventScript_KiriLikeSeasonBornIn::
SootopolisCity_EventScript_Woman2::
lockall
- applymovement LOCALID_WOMAN_2, Common_Movement_FacePlayer
+ applymovement LOCALID_SOOTOPOLIS_WOMAN_2, Common_Movement_FacePlayer
waitmovement 0
goto_if_eq VAR_SOOTOPOLIS_CITY_STATE, 5, SootopolisCity_EventScript_Woman2Rayquaza
msgbox SootopolisCity_Text_WeatherWentWild, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_WOMAN_2, Common_Movement_FaceOriginalDirection
+ applymovement LOCALID_SOOTOPOLIS_WOMAN_2, Common_Movement_FaceOriginalDirection
waitmovement 0
releaseall
end
@@ -813,7 +795,7 @@ SootopolisCity_EventScript_Woman1::
SootopolisCity_EventScript_Woman1Legendaries::
msgbox SootopolisCity_Text_GiganticPokemonFight, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_WOMAN_1, Common_Movement_FaceOriginalDirection
+ applymovement LOCALID_SOOTOPOLIS_WOMAN_1, Common_Movement_FaceOriginalDirection
waitmovement 0
release
end
@@ -830,14 +812,14 @@ SootopolisCity_EventScript_Woman1Rayquaza::
SootopolisCity_EventScript_NinjaBoy::
lockall
- applymovement LOCALID_NINJA_BOY, Common_Movement_FacePlayer
+ applymovement LOCALID_SOOTOPOLIS_NINJA_BOY, Common_Movement_FacePlayer
waitmovement 0
goto_if_eq VAR_SOOTOPOLIS_CITY_STATE, 5, SootopolisCity_EventScript_NinjaBoyRayquaza
goto_if_ge VAR_SOOTOPOLIS_CITY_STATE, 6, SootopolisCity_EventScript_NinjaBoyNormal
goto_if_le VAR_SOOTOPOLIS_CITY_STATE, 1, SootopolisCity_EventScript_NinjaBoyNormal
msgbox SootopolisCity_Text_ThisIsWicked, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_NINJA_BOY, Common_Movement_FaceOriginalDirection
+ applymovement LOCALID_SOOTOPOLIS_NINJA_BOY, Common_Movement_FaceOriginalDirection
waitmovement 0
release
end
@@ -854,7 +836,7 @@ SootopolisCity_EventScript_NinjaBoyRayquaza::
SootopolisCity_EventScript_Boy1::
lockall
- applymovement LOCALID_BOY_1, Common_Movement_FacePlayer
+ applymovement LOCALID_SOOTOPOLIS_BOY_1, Common_Movement_FacePlayer
waitmovement 0
goto_if_eq VAR_SOOTOPOLIS_CITY_STATE, 5, SootopolisCity_EventScript_Boy1Rayquaza
goto_if_set FLAG_SYS_GAME_CLEAR, SootopolisCity_EventScript_Boy1GameClear
@@ -862,7 +844,7 @@ SootopolisCity_EventScript_Boy1::
goto_if_le VAR_SOOTOPOLIS_CITY_STATE, 1, SootopolisCity_EventScript_Boy1Normal
msgbox SootopolisCity_Text_GiantPokemonSuddenlyAppeared, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_BOY_1, Common_Movement_FaceOriginalDirection
+ applymovement LOCALID_SOOTOPOLIS_BOY_1, Common_Movement_FaceOriginalDirection
waitmovement 0
release
end
@@ -896,7 +878,7 @@ EventScript_ClosedSootopolisDoor::
SootopolisCity_EventScript_Steven::
lockall
- applymovement LOCALID_STEVEN, Common_Movement_FacePlayer
+ applymovement LOCALID_SOOTOPOLIS_STEVEN, Common_Movement_FacePlayer
waitmovement 0
call_if_unset FLAG_STEVEN_GUIDES_TO_CAVE_OF_ORIGIN, SootopolisCity_EventScript_StevenLeadPlayerCaveOfOrigin
goto_if_eq VAR_SOOTOPOLIS_CITY_STATE, 2, SootopolisCity_EventScript_StevenHelpWallace
@@ -929,33 +911,33 @@ SootopolisCity_EventScript_StevenLeadPlayerCaveOfOrigin::
call_if_eq VAR_FACING, DIR_NORTH, SootopolisCity_EventScript_StartWalkToCaveOfOriginNorth
msgbox SootopolisCity_Text_DoesThisMakeYourFearPokemon, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_STEVEN, SootopolisCity_Movement_StevenWalkToCaveOfOrigin
- applymovement OBJ_EVENT_ID_PLAYER, SootopolisCity_Movement_PlayerWalkToCaveOfOrigin
+ applymovement LOCALID_SOOTOPOLIS_STEVEN, SootopolisCity_Movement_StevenWalkToCaveOfOrigin
+ applymovement LOCALID_PLAYER, SootopolisCity_Movement_PlayerWalkToCaveOfOrigin
waitmovement 0
delay 120
- applymovement LOCALID_EXPERT, SootopolisCity_Movement_ExpertMoveAside
+ applymovement LOCALID_SOOTOPOLIS_EXPERT, SootopolisCity_Movement_ExpertMoveAside
waitmovement 0
- applymovement LOCALID_STEVEN, SootopolisCity_Movement_StevenArriveCaveEntrance
- applymovement OBJ_EVENT_ID_PLAYER, SootopolisCity_Movement_PlayerArriveCaveEntrance
+ applymovement LOCALID_SOOTOPOLIS_STEVEN, SootopolisCity_Movement_StevenArriveCaveEntrance
+ applymovement LOCALID_PLAYER, SootopolisCity_Movement_PlayerArriveCaveEntrance
waitmovement 0
msgbox SootopolisCity_Text_HereWereAreHelpWallace, MSGBOX_DEFAULT
closemessage
setflag FLAG_STEVEN_GUIDES_TO_CAVE_OF_ORIGIN
- applymovement OBJ_EVENT_ID_PLAYER, SootopolisCity_Movement_PlayerEnterCaveOfOrigin
+ applymovement LOCALID_PLAYER, SootopolisCity_Movement_PlayerEnterCaveOfOrigin
waitmovement 0
warp MAP_CAVE_OF_ORIGIN_ENTRANCE, 9, 20
waitstate
end
SootopolisCity_EventScript_StartWalkToCaveOfOriginWest::
- applymovement LOCALID_STEVEN, SootopolisCity_Movement_StevenStartWalkToCaveOfOrigin
- applymovement OBJ_EVENT_ID_PLAYER, SootopolisCity_Movement_PlayerStartWalkToCaveOfOriginWest
+ applymovement LOCALID_SOOTOPOLIS_STEVEN, SootopolisCity_Movement_StevenStartWalkToCaveOfOrigin
+ applymovement LOCALID_PLAYER, SootopolisCity_Movement_PlayerStartWalkToCaveOfOriginWest
waitmovement 0
return
SootopolisCity_EventScript_StartWalkToCaveOfOriginNorth::
- applymovement LOCALID_STEVEN, SootopolisCity_Movement_StevenStartWalkToCaveOfOrigin
- applymovement OBJ_EVENT_ID_PLAYER, SootopolisCity_Movement_PlayerStartWalkToCaveOfOriginNorth
+ applymovement LOCALID_SOOTOPOLIS_STEVEN, SootopolisCity_Movement_StevenStartWalkToCaveOfOrigin
+ applymovement LOCALID_PLAYER, SootopolisCity_Movement_PlayerStartWalkToCaveOfOriginNorth
waitmovement 0
return
@@ -1225,12 +1207,12 @@ SootopolisCity_Movement_PlayerEnterCaveOfOrigin:
SootopolisCity_EventScript_Boy2::
lockall
- applymovement LOCALID_BOY_2, Common_Movement_FacePlayer
+ applymovement LOCALID_SOOTOPOLIS_BOY_2, Common_Movement_FacePlayer
waitmovement 0
goto_if_eq VAR_SOOTOPOLIS_CITY_STATE, 5, SootopolisCity_EventScript_Boy2Rayquaza
msgbox SootopolisCity_Text_TwoPokemonArentAngry, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_BOY_2, Common_Movement_FaceOriginalDirection
+ applymovement LOCALID_SOOTOPOLIS_BOY_2, Common_Movement_FaceOriginalDirection
waitmovement 0
releaseall
end
@@ -1246,17 +1228,17 @@ SootopolisCity_EventScript_BlackBelt::
goto_if_eq VAR_SOOTOPOLIS_CITY_STATE, 5, SootopolisCity_EventScript_BlackBeltRayquaza
msgbox SootopolisCity_Text_GoRedAndBlueMon, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_BLACK_BELT, Common_Movement_FacePlayer
+ applymovement LOCALID_SOOTOPOLIS_BLACK_BELT, Common_Movement_FacePlayer
waitmovement 0
msgbox SootopolisCity_Text_DoYouKnowMonNames, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_BLACK_BELT, Common_Movement_FaceOriginalDirection
+ applymovement LOCALID_SOOTOPOLIS_BLACK_BELT, Common_Movement_FaceOriginalDirection
waitmovement 0
releaseall
end
SootopolisCity_EventScript_BlackBeltRayquaza::
- applymovement LOCALID_BLACK_BELT, Common_Movement_FacePlayer
+ applymovement LOCALID_SOOTOPOLIS_BLACK_BELT, Common_Movement_FacePlayer
waitmovement 0
msgbox SootopolisCity_Text_GreenOneSettlesThings, MSGBOX_DEFAULT
releaseall
@@ -1264,12 +1246,12 @@ SootopolisCity_EventScript_BlackBeltRayquaza::
SootopolisCity_EventScript_Girl::
lockall
- applymovement LOCALID_GIRL, Common_Movement_FacePlayer
+ applymovement LOCALID_SOOTOPOLIS_GIRL, Common_Movement_FacePlayer
waitmovement 0
goto_if_eq VAR_SOOTOPOLIS_CITY_STATE, 5, SootopolisCity_EventScript_GirlRayquaza
msgbox SootopolisCity_Text_SootopolisWillBeWrecked, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_GIRL, Common_Movement_FaceOriginalDirection
+ applymovement LOCALID_SOOTOPOLIS_GIRL, Common_Movement_FaceOriginalDirection
waitmovement 0
releaseall
end
@@ -1282,12 +1264,12 @@ SootopolisCity_EventScript_GirlRayquaza::
SootopolisCity_EventScript_Maniac::
lockall
- applymovement LOCALID_MANIAC, Common_Movement_FacePlayer
+ applymovement LOCALID_SOOTOPOLIS_MANIAC, Common_Movement_FacePlayer
waitmovement 0
goto_if_eq VAR_SOOTOPOLIS_CITY_STATE, 5, SootopolisCity_EventScript_ManiacRayquaza
msgbox SootopolisCity_Text_SeeingLegendWithOwnEyes, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_MANIAC, Common_Movement_FaceOriginalDirection
+ applymovement LOCALID_SOOTOPOLIS_MANIAC, Common_Movement_FaceOriginalDirection
waitmovement 0
releaseall
end
@@ -1320,16 +1302,16 @@ SootopolisCity_EventScript_GiveWaterfall::
end
SootopolisCity_EventScript_WallaceMoveFromGym::
- applymovement LOCALID_WALLACE, SootopolisCity_Movement_WallaceMoveFromGym
+ applymovement LOCALID_SOOTOPOLIS_WALLACE, SootopolisCity_Movement_WallaceMoveFromGym
waitmovement 0
- copyobjectxytoperm LOCALID_WALLACE
+ copyobjectxytoperm LOCALID_SOOTOPOLIS_WALLACE
setvar VAR_SOOTOPOLIS_WALLACE_STATE, 1
return
SootopolisCity_EventScript_WallaceMoveFromGymWest::
- applymovement LOCALID_WALLACE, SootopolisCity_Movement_WallaceMoveFromGymWest
+ applymovement LOCALID_SOOTOPOLIS_WALLACE, SootopolisCity_Movement_WallaceMoveFromGymWest
waitmovement 0
- copyobjectxytoperm LOCALID_WALLACE
+ copyobjectxytoperm LOCALID_SOOTOPOLIS_WALLACE
setvar VAR_SOOTOPOLIS_WALLACE_STATE, 2
return
diff --git a/data/maps/SootopolisCity_Gym_1F/scripts.inc b/data/maps/SootopolisCity_Gym_1F/scripts.inc
index 5ae8145299..22fae5922c 100644
--- a/data/maps/SootopolisCity_Gym_1F/scripts.inc
+++ b/data/maps/SootopolisCity_Gym_1F/scripts.inc
@@ -67,7 +67,7 @@ SootopolisCity_Gym_1F_EventScript_UnlockThirdStairs::
SootopolisCity_Gym_1F_EventScript_FallThroughIce::
lockall
delay 20
- applymovement OBJ_EVENT_ID_PLAYER, SootopolisCity_Gym_1F_Movement_FallThroughIce
+ applymovement LOCALID_PLAYER, SootopolisCity_Gym_1F_Movement_FallThroughIce
waitmovement 0
playse SE_FALL
delay 60
diff --git a/data/maps/SootopolisCity_Mart/map.json b/data/maps/SootopolisCity_Mart/map.json
index 1f75af5de4..cf8dbae571 100644
--- a/data/maps/SootopolisCity_Mart/map.json
+++ b/data/maps/SootopolisCity_Mart/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_SOOTOPOLIS_MART_CLERK",
"graphics_id": "OBJ_EVENT_GFX_MART_EMPLOYEE",
"x": 1,
"y": 3,
diff --git a/data/maps/SootopolisCity_MysteryEventsHouse_1F/map.json b/data/maps/SootopolisCity_MysteryEventsHouse_1F/map.json
index 0b2ad974c0..f9307a231b 100644
--- a/data/maps/SootopolisCity_MysteryEventsHouse_1F/map.json
+++ b/data/maps/SootopolisCity_MysteryEventsHouse_1F/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_MYSTERY_EVENTS_OLD_MAN",
"graphics_id": "OBJ_EVENT_GFX_OLD_MAN",
"x": 6,
"y": 4,
diff --git a/data/maps/SootopolisCity_MysteryEventsHouse_1F/scripts.inc b/data/maps/SootopolisCity_MysteryEventsHouse_1F/scripts.inc
index 374adbfc66..9553fd9f77 100644
--- a/data/maps/SootopolisCity_MysteryEventsHouse_1F/scripts.inc
+++ b/data/maps/SootopolisCity_MysteryEventsHouse_1F/scripts.inc
@@ -1,5 +1,3 @@
-.set LOCALID_OLD_MAN, 1
-
SootopolisCity_MysteryEventsHouse_1F_MapScripts::
map_script MAP_SCRIPT_ON_TRANSITION, SootopolisCity_MysteryEventsHouse_1F_OnTransition
map_script MAP_SCRIPT_ON_FRAME_TABLE, SootopolisCity_MysteryEventsHouse_1F_OnFrame
@@ -13,14 +11,14 @@ SootopolisCity_MysteryEventsHouse_1F_OnTransition:
SootopolisCity_MysteryEventsHouse_1F_EventScript_SetTrainerVisitingLayout::
setvar VAR_TEMP_1, 1
- setobjectxyperm LOCALID_OLD_MAN, 3, 2
- setobjectmovementtype LOCALID_OLD_MAN, MOVEMENT_TYPE_FACE_DOWN
+ setobjectxyperm LOCALID_MYSTERY_EVENTS_OLD_MAN, 3, 2
+ setobjectmovementtype LOCALID_MYSTERY_EVENTS_OLD_MAN, MOVEMENT_TYPE_FACE_DOWN
setmaplayoutindex LAYOUT_SOOTOPOLIS_CITY_MYSTERY_EVENTS_HOUSE_1F_STAIRS_UNBLOCKED
return
SootopolisCity_MysteryEventsHouse_1F_EventScript_MoveOldManToDoor::
- setobjectxyperm LOCALID_OLD_MAN, 2, 2
- setobjectmovementtype LOCALID_OLD_MAN, MOVEMENT_TYPE_FACE_RIGHT
+ setobjectxyperm LOCALID_MYSTERY_EVENTS_OLD_MAN, 2, 2
+ setobjectmovementtype LOCALID_MYSTERY_EVENTS_OLD_MAN, MOVEMENT_TYPE_FACE_RIGHT
return
SootopolisCity_MysteryEventsHouse_1F_OnFrame:
@@ -31,12 +29,12 @@ SootopolisCity_MysteryEventsHouse_1F_OnFrame:
SootopolisCity_MysteryEventsHouse_1F_EventScript_OldManCommentOnBattle::
lockall
- applymovement OBJ_EVENT_ID_PLAYER, SootopolisCity_MysteryEventsHouse_1F_Movement_PlayerExitStairs
+ applymovement LOCALID_PLAYER, SootopolisCity_MysteryEventsHouse_1F_Movement_PlayerExitStairs
waitmovement 0
- applymovement LOCALID_OLD_MAN, SootopolisCity_MysteryEventsHouse_1F_Movement_OldManWalkBehindPlayer
+ applymovement LOCALID_MYSTERY_EVENTS_OLD_MAN, SootopolisCity_MysteryEventsHouse_1F_Movement_OldManWalkBehindPlayer
waitmovement 0
- copyobjectxytoperm LOCALID_OLD_MAN
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterUp
+ copyobjectxytoperm LOCALID_MYSTERY_EVENTS_OLD_MAN
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterUp
waitmovement 0
call_if_eq VAR_SOOTOPOLIS_MYSTERY_EVENTS_STATE, 1, SootopolisCity_MysteryEventsHouse_1F_EventScript_BattleWonComment
call_if_eq VAR_SOOTOPOLIS_MYSTERY_EVENTS_STATE, 2, SootopolisCity_MysteryEventsHouse_1F_EventScript_BattleLostComment
@@ -121,19 +119,19 @@ SootopolisCity_MysteryEventsHouse_1F_EventScript_ChooseParty::
SootopolisCity_MysteryEventsHouse_1F_EventScript_EnterBasementNorth::
applymovement VAR_LAST_TALKED, SootopolisCity_MysteryEventsHouse_1F_Movement_OldManMoveAsideLeft
- applymovement OBJ_EVENT_ID_PLAYER, SootopolisCity_MysteryEventsHouse_1F_Movement_PlayerEnterBasementNorth
+ applymovement LOCALID_PLAYER, SootopolisCity_MysteryEventsHouse_1F_Movement_PlayerEnterBasementNorth
waitmovement 0
return
SootopolisCity_MysteryEventsHouse_1F_EventScript_EnterBasementEast::
applymovement VAR_LAST_TALKED, SootopolisCity_MysteryEventsHouse_1F_Movement_OldManMoveAsideRight
- applymovement OBJ_EVENT_ID_PLAYER, SootopolisCity_MysteryEventsHouse_1F_Movement_PlayerEnterBasementEast
+ applymovement LOCALID_PLAYER, SootopolisCity_MysteryEventsHouse_1F_Movement_PlayerEnterBasementEast
waitmovement 0
return
SootopolisCity_MysteryEventsHouse_1F_EventScript_EnterBasementWest::
applymovement VAR_LAST_TALKED, SootopolisCity_MysteryEventsHouse_1F_Movement_OldManMoveAsideLeft
- applymovement OBJ_EVENT_ID_PLAYER, SootopolisCity_MysteryEventsHouse_1F_Movement_PlayerEnterBasementWest
+ applymovement LOCALID_PLAYER, SootopolisCity_MysteryEventsHouse_1F_Movement_PlayerEnterBasementWest
waitmovement 0
return
diff --git a/data/maps/SootopolisCity_MysteryEventsHouse_B1F/scripts.inc b/data/maps/SootopolisCity_MysteryEventsHouse_B1F/scripts.inc
index 533eb7cfa5..32ee8da2b9 100644
--- a/data/maps/SootopolisCity_MysteryEventsHouse_B1F/scripts.inc
+++ b/data/maps/SootopolisCity_MysteryEventsHouse_B1F/scripts.inc
@@ -13,7 +13,7 @@ SootopolisCity_MysteryEventsHouse_B1F_OnFrame:
SootopolisCity_MysteryEventsHouse_B1F_EventScript_BattleVisitingTrainer::
lockall
- applymovement OBJ_EVENT_ID_PLAYER, SootopolisCity_MysteryEventsHouse_B1F_Movement_PlayerEnterBasement
+ applymovement LOCALID_PLAYER, SootopolisCity_MysteryEventsHouse_B1F_Movement_PlayerEnterBasement
waitmovement 0
special CopyEReaderTrainerGreeting
msgbox gStringVar4, MSGBOX_DEFAULT
@@ -27,7 +27,7 @@ SootopolisCity_MysteryEventsHouse_B1F_EventScript_BattleVisitingTrainer::
call_if_eq VAR_RESULT, B_OUTCOME_LOST, SootopolisCity_MysteryEventsHouse_B1F_EventScript_BattleLost
closemessage
special HealPlayerParty
- applymovement OBJ_EVENT_ID_PLAYER, SootopolisCity_MysteryEventsHouse_B1F_Movement_PlayerExitBasement
+ applymovement LOCALID_PLAYER, SootopolisCity_MysteryEventsHouse_B1F_Movement_PlayerExitBasement
waitmovement 0
special LoadPlayerParty
setvar VAR_TEMP_1, 1
diff --git a/data/maps/SootopolisCity_PokemonCenter_1F/map.json b/data/maps/SootopolisCity_PokemonCenter_1F/map.json
index 0fa27599da..8db695278d 100644
--- a/data/maps/SootopolisCity_PokemonCenter_1F/map.json
+++ b/data/maps/SootopolisCity_PokemonCenter_1F/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_SOOTOPOLIS_NURSE",
"graphics_id": "OBJ_EVENT_GFX_NURSE",
"x": 7,
"y": 2,
diff --git a/data/maps/SootopolisCity_PokemonCenter_1F/scripts.inc b/data/maps/SootopolisCity_PokemonCenter_1F/scripts.inc
index e1e13b35c8..757c9063e4 100644
--- a/data/maps/SootopolisCity_PokemonCenter_1F/scripts.inc
+++ b/data/maps/SootopolisCity_PokemonCenter_1F/scripts.inc
@@ -1,5 +1,3 @@
-.set LOCALID_NURSE, 1
-
SootopolisCity_PokemonCenter_1F_MapScripts::
map_script MAP_SCRIPT_ON_TRANSITION, SootopolisCity_PokemonCenter_1F_OnTransition
map_script MAP_SCRIPT_ON_RESUME, CableClub_OnResume
@@ -10,7 +8,7 @@ SootopolisCity_PokemonCenter_1F_OnTransition:
end
SootopolisCity_PokemonCenter_1F_EventScript_Nurse::
- setvar VAR_0x800B, LOCALID_NURSE
+ setvar VAR_0x800B, LOCALID_SOOTOPOLIS_NURSE
call Common_EventScript_PkmnCenterNurse
waitmessage
waitbuttonpress
diff --git a/data/maps/SouthernIsland_Exterior/map.json b/data/maps/SouthernIsland_Exterior/map.json
index 53a988398c..f6775f2483 100644
--- a/data/maps/SouthernIsland_Exterior/map.json
+++ b/data/maps/SouthernIsland_Exterior/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_SOUTHERN_ISLAND_SAILOR",
"graphics_id": "OBJ_EVENT_GFX_SAILOR",
"x": 13,
"y": 23,
@@ -28,6 +29,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_SOUTHERN_ISLAND_SS_TIDAL",
"graphics_id": "OBJ_EVENT_GFX_SS_TIDAL",
"x": 13,
"y": 25,
diff --git a/data/maps/SouthernIsland_Exterior/scripts.inc b/data/maps/SouthernIsland_Exterior/scripts.inc
index 6e7009a1f2..f6d8436dbe 100644
--- a/data/maps/SouthernIsland_Exterior/scripts.inc
+++ b/data/maps/SouthernIsland_Exterior/scripts.inc
@@ -1,6 +1,3 @@
-.set LOCALID_SAILOR, 1
-.set LOCALID_SS_TIDAL, 2
-
SouthernIsland_Exterior_MapScripts::
map_script MAP_SCRIPT_ON_TRANSITION, SouthernIsland_Exterior_OnTransition
.byte 0
@@ -19,8 +16,8 @@ SouthernIsland_Exterior_EventScript_Sailor::
applymovement VAR_LAST_TALKED, Common_Movement_WalkInPlaceFasterDown
waitmovement 0
delay 30
- hideobjectat LOCALID_SAILOR, MAP_SOUTHERN_ISLAND_EXTERIOR
- setvar VAR_0x8004, LOCALID_SS_TIDAL
+ hideobjectat LOCALID_SOUTHERN_ISLAND_SAILOR, MAP_SOUTHERN_ISLAND_EXTERIOR
+ setvar VAR_0x8004, LOCALID_SOUTHERN_ISLAND_SS_TIDAL
call Common_EventScript_FerryDepartIsland
warp MAP_LILYCOVE_CITY_HARBOR, 8, 11
waitstate
@@ -33,12 +30,12 @@ SouthernIsland_Exterior_EventScript_AsYouLike::
end
Ferry_EventScript_DepartIslandSouth::
- applymovement OBJ_EVENT_ID_PLAYER, Ferry_Movement_DepartIslandBoardSouth
+ applymovement LOCALID_PLAYER, Ferry_Movement_DepartIslandBoardSouth
waitmovement 0
return
Ferry_EventScript_DepartIslandWest::
- applymovement OBJ_EVENT_ID_PLAYER, Ferry_Movement_DepartIslandBoardWest
+ applymovement LOCALID_PLAYER, Ferry_Movement_DepartIslandBoardWest
waitmovement 0
return
diff --git a/data/maps/SouthernIsland_Interior/map.json b/data/maps/SouthernIsland_Interior/map.json
index 76212cbbd1..6871b7704f 100644
--- a/data/maps/SouthernIsland_Interior/map.json
+++ b/data/maps/SouthernIsland_Interior/map.json
@@ -28,6 +28,7 @@
"flag": "FLAG_HIDE_SOUTHERN_ISLAND_EON_STONE"
},
{
+ "local_id": "LOCALID_SOUTHERN_ISLAND_LATI",
"graphics_id": "OBJ_EVENT_GFX_VAR_1",
"x": 13,
"y": 2,
diff --git a/data/maps/SouthernIsland_Interior/scripts.inc b/data/maps/SouthernIsland_Interior/scripts.inc
index 8486739d93..f92d3f080e 100644
--- a/data/maps/SouthernIsland_Interior/scripts.inc
+++ b/data/maps/SouthernIsland_Interior/scripts.inc
@@ -1,5 +1,3 @@
-.set LOCALID_LATI, 2
-
SouthernIsland_Interior_MapScripts::
map_script MAP_SCRIPT_ON_RESUME, SouthernIsland_Interior_OnResume
map_script MAP_SCRIPT_ON_TRANSITION, SouthernIsland_Interior_OnTransition
@@ -12,7 +10,7 @@ SouthernIsland_Interior_OnResume:
SouthernIsland_Interior_EventScript_TryRemoveLati::
specialvar VAR_RESULT, GetBattleOutcome
goto_if_ne VAR_RESULT, B_OUTCOME_CAUGHT, Common_EventScript_NopReturn
- removeobject LOCALID_LATI
+ removeobject LOCALID_SOUTHERN_ISLAND_LATI
return
SouthernIsland_Interior_OnTransition:
@@ -59,21 +57,21 @@ SouthernIsland_Interior_EventScript_Lati::
setflag FLAG_ENCOUNTERED_LATIAS_OR_LATIOS
setflag FLAG_TEMP_2
special SpawnCameraObject
- applymovement OBJ_EVENT_ID_CAMERA, SouthernIsland_Interior_Movement_CameraPanUp
+ applymovement LOCALID_CAMERA, SouthernIsland_Interior_Movement_CameraPanUp
waitmovement 0
delay 50
waitse
playmoncry VAR_TEMP_4, CRY_MODE_NORMAL
delay 30
waitmoncry
- addobject LOCALID_LATI
+ addobject LOCALID_SOUTHERN_ISLAND_LATI
delay 30
- applymovement OBJ_EVENT_ID_CAMERA, SouthernIsland_Interior_Movement_CameraPanDown
- applymovement LOCALID_LATI, SouthernIsland_Interior_Movement_LatiApproach
+ applymovement LOCALID_CAMERA, SouthernIsland_Interior_Movement_CameraPanDown
+ applymovement LOCALID_SOUTHERN_ISLAND_LATI, SouthernIsland_Interior_Movement_LatiApproach
waitmovement 0
delay 50
special RemoveCameraObject
- setvar VAR_LAST_TALKED, LOCALID_LATI
+ setvar VAR_LAST_TALKED, LOCALID_SOUTHERN_ISLAND_LATI
call_if_eq VAR_ROAMER_POKEMON, 0, SouthernIsland_Interior_EventScript_SetLatiosBattleVars
call_if_ne VAR_ROAMER_POKEMON, 0, SouthernIsland_Interior_EventScript_SetLatiasBattleVars
setflag FLAG_SYS_CTRL_OBJ_DELETE
diff --git a/data/maps/TerraCave_End/map.json b/data/maps/TerraCave_End/map.json
index 264b35af23..78cf26b168 100644
--- a/data/maps/TerraCave_End/map.json
+++ b/data/maps/TerraCave_End/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_TERRA_CAVE_GROUDON",
"graphics_id": "OBJ_EVENT_GFX_GROUDON_FRONT",
"x": 17,
"y": 22,
diff --git a/data/maps/TerraCave_End/scripts.inc b/data/maps/TerraCave_End/scripts.inc
index 8b2732d45e..e1e1cd684b 100644
--- a/data/maps/TerraCave_End/scripts.inc
+++ b/data/maps/TerraCave_End/scripts.inc
@@ -1,5 +1,3 @@
-.set LOCALID_GROUDON, 1
-
TerraCave_End_MapScripts::
map_script MAP_SCRIPT_ON_RESUME, TerraCave_End_OnResume
map_script MAP_SCRIPT_ON_TRANSITION, TerraCave_End_OnTransition
@@ -12,7 +10,7 @@ TerraCave_End_OnResume:
TerraCave_End_EventScript_TryRemoveGroudon::
specialvar VAR_RESULT, GetBattleOutcome
goto_if_ne VAR_RESULT, B_OUTCOME_CAUGHT, Common_EventScript_NopReturn
- removeobject LOCALID_GROUDON
+ removeobject LOCALID_TERRA_CAVE_GROUDON
return
TerraCave_End_OnTransition:
@@ -26,15 +24,15 @@ TerraCave_End_EventScript_ShowGroudon::
TerraCave_End_EventScript_Groudon::
lockall
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_FaceUp
+ applymovement LOCALID_PLAYER, Common_Movement_FaceUp
waitmovement 0
- applymovement LOCALID_GROUDON, TerraCave_End_Movement_GroudonApproach
+ applymovement LOCALID_TERRA_CAVE_GROUDON, TerraCave_End_Movement_GroudonApproach
waitmovement 0
waitse
playmoncry SPECIES_GROUDON, CRY_MODE_ENCOUNTER
delay 40
waitmoncry
- setvar VAR_LAST_TALKED, LOCALID_GROUDON
+ setvar VAR_LAST_TALKED, LOCALID_TERRA_CAVE_GROUDON
setwildbattle SPECIES_GROUDON, 70
setflag FLAG_SYS_CTRL_OBJ_DELETE
special BattleSetup_StartLegendaryBattle
diff --git a/data/maps/TrainerHill_Elevator/map.json b/data/maps/TrainerHill_Elevator/map.json
index a611cbf641..c24a063633 100644
--- a/data/maps/TrainerHill_Elevator/map.json
+++ b/data/maps/TrainerHill_Elevator/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_TRAINER_HILL_ELEVATOR_ATTENDANT",
"graphics_id": "OBJ_EVENT_GFX_TEALA",
"x": 0,
"y": 6,
diff --git a/data/maps/TrainerHill_Elevator/scripts.inc b/data/maps/TrainerHill_Elevator/scripts.inc
index bec1ffbff1..c394fc4736 100644
--- a/data/maps/TrainerHill_Elevator/scripts.inc
+++ b/data/maps/TrainerHill_Elevator/scripts.inc
@@ -1,5 +1,3 @@
-.set LOCALID_ATTENDANT, 1
-
TrainerHill_Elevator_MapScripts::
map_script MAP_SCRIPT_ON_FRAME_TABLE, TrainerHill_Elevator_OnFrame
.byte 0
@@ -12,7 +10,7 @@ TrainerHill_Elevator_EventScript_Attendant::
end
TrainerHill_Elevator_EventScript_ExitToRoof::
- applymovement OBJ_EVENT_ID_PLAYER, TrainerHill_Elevator_Movement_PlayerExitElevatorToRoof
+ applymovement LOCALID_PLAYER, TrainerHill_Elevator_Movement_PlayerExitElevatorToRoof
waitmovement 0
releaseall
warp MAP_TRAINER_HILL_ROOF, 15, 5
@@ -20,21 +18,21 @@ TrainerHill_Elevator_EventScript_ExitToRoof::
end
TrainerHill_Elevator_EventScript_EnterElevator::
- applymovement OBJ_EVENT_ID_PLAYER, TrainerHill_Elevator_Movement_PlayerApproachAttendant
+ applymovement LOCALID_PLAYER, TrainerHill_Elevator_Movement_PlayerApproachAttendant
waitmovement 0
- applymovement LOCALID_ATTENDANT, TrainerHill_Elevator_Movement_AttendantFacePlayer
+ applymovement LOCALID_TRAINER_HILL_ELEVATOR_ATTENDANT, TrainerHill_Elevator_Movement_AttendantFacePlayer
waitmovement 0
lockall
msgbox TrainerHill_Elevator_Text_ReturnToReception, MSGBOX_YESNO
goto_if_eq VAR_RESULT, NO, TrainerHill_Elevator_EventScript_ExitToRoof
releaseall
- applymovement LOCALID_ATTENDANT, TrainerHill_Elevator_Movement_AttendantFaceDown
+ applymovement LOCALID_TRAINER_HILL_ELEVATOR_ATTENDANT, TrainerHill_Elevator_Movement_AttendantFaceDown
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, TrainerHill_Elevator_Movement_PlayerMoveToCenterOfElevator
+ applymovement LOCALID_PLAYER, TrainerHill_Elevator_Movement_PlayerMoveToCenterOfElevator
waitmovement 0
call TrainerHill_Elevator_EventScript_MoveElevator
delay 25
- applymovement OBJ_EVENT_ID_PLAYER, TrainerHill_Elevator_Movement_PlayerExitElevator
+ applymovement LOCALID_PLAYER, TrainerHill_Elevator_Movement_PlayerExitElevator
waitmovement 0
warp MAP_TRAINER_HILL_ENTRANCE, 17, 8
waitstate
diff --git a/data/maps/TrainerHill_Entrance/map.json b/data/maps/TrainerHill_Entrance/map.json
index 0f2b4ec558..5c931215c4 100644
--- a/data/maps/TrainerHill_Entrance/map.json
+++ b/data/maps/TrainerHill_Entrance/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_TRAINER_HILL_ATTENDANT",
"graphics_id": "OBJ_EVENT_GFX_TEALA",
"x": 11,
"y": 6,
@@ -28,6 +29,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_TRAINER_HILL_NURSE",
"graphics_id": "OBJ_EVENT_GFX_NURSE",
"x": 4,
"y": 9,
@@ -54,6 +56,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_TRAINER_HILL_GIRL",
"graphics_id": "OBJ_EVENT_GFX_GIRL_3",
"x": 5,
"y": 14,
@@ -67,6 +70,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_TRAINER_HILL_MAN",
"graphics_id": "OBJ_EVENT_GFX_MAN_3",
"x": 14,
"y": 15,
diff --git a/data/maps/TrainerHill_Entrance/scripts.inc b/data/maps/TrainerHill_Entrance/scripts.inc
index 4efceaa1cc..0ab5545175 100644
--- a/data/maps/TrainerHill_Entrance/scripts.inc
+++ b/data/maps/TrainerHill_Entrance/scripts.inc
@@ -1,8 +1,3 @@
-.set LOCALID_ATTENDANT, 1
-.set LOCALID_NURSE, 2
-.set LOCALID_GIRL, 4
-.set LOCALID_MAN, 5
-
TrainerHill_Entrance_MapScripts::
map_script MAP_SCRIPT_ON_RESUME, TrainerHill_Entrance_OnResume
map_script MAP_SCRIPT_ON_RETURN_TO_FIELD, TrainerHill_Entrance_OnReturn
@@ -25,24 +20,24 @@ TrainerHill_Entrance_OnResume:
setvar VAR_TEMP_0, 0
trainerhill_getusingereader
goto_if_eq VAR_RESULT, FALSE, TrainerHill_Entrance_EventScript_TryFaceAttendant @ VAR_RESULT always FALSE here
- setobjectxy OBJ_EVENT_ID_PLAYER, 9, 6
- applymovement OBJ_EVENT_ID_PLAYER, TrainerHill_Entrance_Movement_PlayerFaceAttendant
+ setobjectxy LOCALID_PLAYER, 9, 6
+ applymovement LOCALID_PLAYER, TrainerHill_Entrance_Movement_PlayerFaceAttendant
end
TrainerHill_Entrance_EventScript_TryFaceAttendant::
trainerhill_getwon
goto_if_eq VAR_RESULT, TRUE, TrainerHill_Entrance_EventScript_PlayerDontFaceAttendant
- applymovement OBJ_EVENT_ID_PLAYER, TrainerHill_Entrance_Movement_PlayerFaceAttendant
+ applymovement LOCALID_PLAYER, TrainerHill_Entrance_Movement_PlayerFaceAttendant
end
TrainerHill_Entrance_EventScript_PlayerDontFaceAttendant::
end
TrainerHill_Entrance_OnReturn:
- addobject LOCALID_NURSE
- addobject LOCALID_ATTENDANT
- addobject LOCALID_MAN
- addobject LOCALID_GIRL
+ addobject LOCALID_TRAINER_HILL_NURSE
+ addobject LOCALID_TRAINER_HILL_ATTENDANT
+ addobject LOCALID_TRAINER_HILL_MAN
+ addobject LOCALID_TRAINER_HILL_GIRL
end
TrainerHill_Entrance_OnLoad:
@@ -62,7 +57,7 @@ TrainerHill_Entrance_OnFrame:
TrainerHill_Entrance_EventScript_ExitElevator::
lockall
- applymovement OBJ_EVENT_ID_PLAYER, TrainerHill_Entrance_Movement_PlayerExitElevator
+ applymovement LOCALID_PLAYER, TrainerHill_Entrance_Movement_PlayerExitElevator
waitmovement 0
setmetatile 17, 10, METATILE_TrainerHill_CounterDoor, TRUE
special DrawWholeMapView
@@ -82,17 +77,17 @@ TrainerHill_Entrance_EventScript_ExitChallenge::
TrainerHill_Entrance_EventScript_ExitChallengeLost::
lockall
- applymovement OBJ_EVENT_ID_PLAYER, TrainerHill_Entrance_Movement_PlayerFaceAttendant
+ applymovement LOCALID_PLAYER, TrainerHill_Entrance_Movement_PlayerFaceAttendant
msgbox TrainerHill_Entrance_Text_TooBadTremendousEffort, MSGBOX_DEFAULT
goto TrainerHill_Entrance_EventScript_PlayerExitChallenge
TrainerHill_Entrance_EventScript_ExitChallengeECard::
lockall
- applymovement OBJ_EVENT_ID_PLAYER, TrainerHill_Entrance_Movement_PlayerFaceAttendant
+ applymovement LOCALID_PLAYER, TrainerHill_Entrance_Movement_PlayerFaceAttendant
msgbox TrainerHill_Entrance_Text_MovedReceptionHereForSwitch, MSGBOX_DEFAULT
TrainerHill_Entrance_EventScript_PlayerExitChallenge::
closemessage
- applymovement OBJ_EVENT_ID_PLAYER, TrainerHill_Entrance_Movement_PushPlayerBackFromCounter
+ applymovement LOCALID_PLAYER, TrainerHill_Entrance_Movement_PushPlayerBackFromCounter
waitmovement 0
setvar VAR_TRAINER_HILL_IS_ACTIVE, 0
special HealPlayerParty
@@ -102,7 +97,7 @@ TrainerHill_Entrance_EventScript_EndExitChallenge::
end
TrainerHill_Entrance_EventScript_Nurse::
- setvar VAR_0x800B, LOCALID_NURSE
+ setvar VAR_0x800B, LOCALID_TRAINER_HILL_NURSE
call Common_EventScript_PkmnCenterNurse
waitmessage
waitbuttonpress
@@ -125,7 +120,7 @@ TrainerHill_Entrance_EventScript_AttendantEnd::
TrainerHill_Entrance_EventScript_EntryTrigger::
lockall
- applymovement OBJ_EVENT_ID_PLAYER, TrainerHill_Entrance_Movement_PlayerFaceAttendant
+ applymovement LOCALID_PLAYER, TrainerHill_Entrance_Movement_PlayerFaceAttendant
goto_if_unset FLAG_SYS_GAME_CLEAR, TrainerHill_Entrance_EventScript_Closed
msgbox TrainerHill_Entrance_Text_WelcomeToTrainerHill, MSGBOX_DEFAULT
trainerhill_getsaved
@@ -172,7 +167,7 @@ TrainerHill_Entrance_EventScript_CancelEntry::
setvar VAR_TEMP_5, 0
msgbox TrainerHill_Entrance_Text_PleaseVisitUsAgain, MSGBOX_DEFAULT
closemessage
- applymovement OBJ_EVENT_ID_PLAYER, TrainerHill_Entrance_Movement_PushPlayerBackFromCounter
+ applymovement LOCALID_PLAYER, TrainerHill_Entrance_Movement_PushPlayerBackFromCounter
waitmovement 0
releaseall
end
@@ -194,7 +189,7 @@ TrainerHill_Entrance_EventScript_SaveFailed::
TrainerHill_Entrance_EventScript_Closed::
msgbox TrainerHill_Entrance_Text_StillGettingReady, MSGBOX_DEFAULT
closemessage
- applymovement OBJ_EVENT_ID_PLAYER, TrainerHill_Entrance_Movement_PushPlayerBackFromCounter
+ applymovement LOCALID_PLAYER, TrainerHill_Entrance_Movement_PushPlayerBackFromCounter
waitmovement 0
releaseall
end
diff --git a/data/maps/UnionRoom/map.json b/data/maps/UnionRoom/map.json
index 8c663eb42e..e54ac0c228 100644
--- a/data/maps/UnionRoom/map.json
+++ b/data/maps/UnionRoom/map.json
@@ -28,6 +28,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_UNION_ROOM_PLAYER_4",
"graphics_id": "OBJ_EVENT_GFX_VAR_3",
"x": 1,
"y": 8,
@@ -41,6 +42,7 @@
"flag": "FLAG_HIDE_UNION_ROOM_PLAYER_4"
},
{
+ "local_id": "LOCALID_UNION_ROOM_PLAYER_8",
"graphics_id": "OBJ_EVENT_GFX_VAR_7",
"x": 7,
"y": 8,
@@ -54,6 +56,7 @@
"flag": "FLAG_HIDE_UNION_ROOM_PLAYER_8"
},
{
+ "local_id": "LOCALID_UNION_ROOM_PLAYER_7",
"graphics_id": "OBJ_EVENT_GFX_VAR_6",
"x": 1,
"y": 4,
@@ -67,6 +70,7 @@
"flag": "FLAG_HIDE_UNION_ROOM_PLAYER_7"
},
{
+ "local_id": "LOCALID_UNION_ROOM_PLAYER_6",
"graphics_id": "OBJ_EVENT_GFX_VAR_5",
"x": 7,
"y": 4,
@@ -80,6 +84,7 @@
"flag": "FLAG_HIDE_UNION_ROOM_PLAYER_6"
},
{
+ "local_id": "LOCALID_UNION_ROOM_PLAYER_5",
"graphics_id": "OBJ_EVENT_GFX_VAR_4",
"x": 13,
"y": 4,
@@ -93,6 +98,7 @@
"flag": "FLAG_HIDE_UNION_ROOM_PLAYER_5"
},
{
+ "local_id": "LOCALID_UNION_ROOM_PLAYER_3",
"graphics_id": "OBJ_EVENT_GFX_VAR_2",
"x": 10,
"y": 6,
@@ -106,6 +112,7 @@
"flag": "FLAG_HIDE_UNION_ROOM_PLAYER_3"
},
{
+ "local_id": "LOCALID_UNION_ROOM_PLAYER_2",
"graphics_id": "OBJ_EVENT_GFX_VAR_1",
"x": 13,
"y": 8,
@@ -119,6 +126,7 @@
"flag": "FLAG_HIDE_UNION_ROOM_PLAYER_2"
},
{
+ "local_id": "LOCALID_UNION_ROOM_PLAYER_1",
"graphics_id": "OBJ_EVENT_GFX_VAR_0",
"x": 4,
"y": 6,
diff --git a/data/maps/UnionRoom/scripts.inc b/data/maps/UnionRoom/scripts.inc
index 927c406184..ff16e53dc7 100644
--- a/data/maps/UnionRoom/scripts.inc
+++ b/data/maps/UnionRoom/scripts.inc
@@ -1,5 +1,3 @@
-@ Note: LOCALID_UNION_ROOM_PLAYER_# are local ids for this map used elsewhere. They're defined in event_objects.h
-
UnionRoom_MapScripts::
map_script MAP_SCRIPT_ON_RESUME, UnionRoom_OnResume
map_script MAP_SCRIPT_ON_TRANSITION, UnionRoom_OnTransition
diff --git a/data/maps/VerdanturfTown/map.json b/data/maps/VerdanturfTown/map.json
index ae40730c0e..1b29ea7153 100644
--- a/data/maps/VerdanturfTown/map.json
+++ b/data/maps/VerdanturfTown/map.json
@@ -39,6 +39,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_VERDANTURF_TWIN",
"graphics_id": "OBJ_EVENT_GFX_TWIN",
"x": 9,
"y": 2,
diff --git a/data/maps/VerdanturfTown/scripts.inc b/data/maps/VerdanturfTown/scripts.inc
index 133fd62865..1e115e6762 100644
--- a/data/maps/VerdanturfTown/scripts.inc
+++ b/data/maps/VerdanturfTown/scripts.inc
@@ -1,5 +1,3 @@
-.set LOCALID_TWIN, 2
-
VerdanturfTown_MapScripts::
map_script MAP_SCRIPT_ON_TRANSITION, VerdanturfTown_OnTransition
.byte 0
@@ -14,14 +12,14 @@ VerdanturfTown_EventScript_Twin::
faceplayer
goto_if_set FLAG_RUSTURF_TUNNEL_OPENED, VerdanturfTown_EventScript_TwinTunnelOpen
msgbox VerdanturfTown_Text_ManTryingToDigTunnel, MSGBOX_DEFAULT
- applymovement LOCALID_TWIN, Common_Movement_FaceOriginalDirection
+ applymovement LOCALID_VERDANTURF_TWIN, Common_Movement_FaceOriginalDirection
waitmovement 0
release
end
VerdanturfTown_EventScript_TwinTunnelOpen::
msgbox VerdanturfTown_Text_ManDugTunnelForLove, MSGBOX_DEFAULT
- applymovement LOCALID_TWIN, Common_Movement_FaceOriginalDirection
+ applymovement LOCALID_VERDANTURF_TWIN, Common_Movement_FaceOriginalDirection
waitmovement 0
release
end
diff --git a/data/maps/VerdanturfTown_BattleTentBattleRoom/map.json b/data/maps/VerdanturfTown_BattleTentBattleRoom/map.json
index 72eca1d95c..7913b66e98 100644
--- a/data/maps/VerdanturfTown_BattleTentBattleRoom/map.json
+++ b/data/maps/VerdanturfTown_BattleTentBattleRoom/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_VERDANTURF_TENT_BATTLE_PLAYER",
"graphics_id": "OBJ_EVENT_GFX_VAR_1",
"x": 2,
"y": 8,
@@ -28,6 +29,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_VERDANTURF_TENT_BATTLE_OPPONENT",
"graphics_id": "OBJ_EVENT_GFX_VAR_0",
"x": 11,
"y": 1,
@@ -41,6 +43,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_VERDANTURF_TENT_BATTLE_ATTENDANT",
"graphics_id": "OBJ_EVENT_GFX_EXPERT_M",
"x": 2,
"y": 4,
diff --git a/data/maps/VerdanturfTown_BattleTentBattleRoom/scripts.inc b/data/maps/VerdanturfTown_BattleTentBattleRoom/scripts.inc
index 29008b7c0f..8caf65eebc 100644
--- a/data/maps/VerdanturfTown_BattleTentBattleRoom/scripts.inc
+++ b/data/maps/VerdanturfTown_BattleTentBattleRoom/scripts.inc
@@ -1,17 +1,13 @@
-.set LOCALID_PLAYER, 1
-.set LOCALID_OPPONENT, 2
-.set LOCALID_ATTENDANT, 3
-
+@ On this map the player will automatically walk into the room, but the camera is supposed to remain still.
+@ To do this GF sets the player (LOCALID_PLAYER) invisible and creates a fake player object (LOCALID_VERDANTURF_TENT_BATTLE_PLAYER).
+@ The graphics of this fake player object are represented with VAR_OBJ_GFX_ID_1.
+@ The graphics of the opponent are represented with VAR_OBJ_GFX_ID_0, which will ultimately be set by tower_setopponent.
VerdanturfTown_BattleTentBattleRoom_MapScripts::
map_script MAP_SCRIPT_ON_TRANSITION, VerdanturfTown_BattleTentBattleRoom_OnTransition
map_script MAP_SCRIPT_ON_FRAME_TABLE, VerdanturfTown_BattleTentBattleRoom_OnFrame
map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, VerdanturfTown_BattleTentBattleRoom_OnWarp
.byte 0
- @ On this map the player (OBJ_EVENT_ID_PLAYER) is hidden
- @ The player is represented instead by object event 1, which has the gfx id VAR_OBJ_GFX_ID_1
- @ The opponent is represented by object event 2, which has the gfx id VAR_OBJ_GFX_ID_0
-
VerdanturfTown_BattleTentBattleRoom_OnTransition:
call VerdanturfTown_BattleTentBattleRoom_EventScript_SetPlayerGfx
end
@@ -37,15 +33,15 @@ VerdanturfTown_BattleTentBattleRoom_OnFrame:
.2byte 0
VerdanturfTown_BattleTentBattleRoom_EventScript_EnterRoom::
- showobjectat LOCALID_PLAYER, MAP_VERDANTURF_TOWN_BATTLE_TENT_BATTLE_ROOM
- applymovement LOCALID_PLAYER, VerdanturfTown_BattleTentBattleRoom_Movement_PlayerEnter
+ showobjectat LOCALID_VERDANTURF_TENT_BATTLE_PLAYER, MAP_VERDANTURF_TOWN_BATTLE_TENT_BATTLE_ROOM
+ applymovement LOCALID_VERDANTURF_TENT_BATTLE_PLAYER, VerdanturfTown_BattleTentBattleRoom_Movement_PlayerEnter
waitmovement 0
frontier_get FRONTIER_DATA_BATTLE_NUM
goto_if_ne VAR_RESULT, 0, VerdanturfTown_BattleTentBattleRoom_EventScript_AskContinueChallenge
VerdanturfTown_BattleTentBattleRoom_EventScript_NextOpponentEnter::
tower_setopponent
- addobject LOCALID_OPPONENT
- applymovement LOCALID_OPPONENT, VerdanturfTown_BattleTentBattleRoom_Movement_OpponentEnter
+ addobject LOCALID_VERDANTURF_TENT_BATTLE_OPPONENT
+ applymovement LOCALID_VERDANTURF_TENT_BATTLE_OPPONENT, VerdanturfTown_BattleTentBattleRoom_Movement_OpponentEnter
waitmovement 0
battletent_getopponentintro
msgbox gStringVar4, MSGBOX_DEFAULT
@@ -65,11 +61,11 @@ VerdanturfTown_BattleTentBattleRoom_EventScript_DefeatedOpponent::
frontier_set FRONTIER_DATA_BATTLE_NUM, VAR_RESULT
switch VAR_RESULT
case 3, VerdanturfTown_BattleTentBattleRoom_EventScript_WarpToLobbyWon
- applymovement LOCALID_OPPONENT, VerdanturfTown_BattleTentBattleRoom_Movement_OpponentExit
+ applymovement LOCALID_VERDANTURF_TENT_BATTLE_OPPONENT, VerdanturfTown_BattleTentBattleRoom_Movement_OpponentExit
waitmovement 0
- removeobject LOCALID_OPPONENT
- applymovement LOCALID_ATTENDANT, Common_Movement_WalkInPlaceFasterDown
- applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterUp
+ removeobject LOCALID_VERDANTURF_TENT_BATTLE_OPPONENT
+ applymovement LOCALID_VERDANTURF_TENT_BATTLE_ATTENDANT, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_VERDANTURF_TENT_BATTLE_PLAYER, Common_Movement_WalkInPlaceFasterUp
waitmovement 0
msgbox BattleFrontier_BattlePalaceBattleRoom_Text_LetMeRestoreYourMons, MSGBOX_DEFAULT
special LoadPlayerParty
@@ -106,8 +102,8 @@ VerdanturfTown_BattleTentBattleRoom_EventScript_AskRetireChallenge::
case MULTI_B_PRESSED, VerdanturfTown_BattleTentBattleRoom_EventScript_AskContinueChallenge
VerdanturfTown_BattleTentBattleRoom_EventScript_ContinueChallenge::
- applymovement LOCALID_ATTENDANT, Common_Movement_WalkInPlaceFasterRight
- applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_VERDANTURF_TENT_BATTLE_ATTENDANT, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_VERDANTURF_TENT_BATTLE_PLAYER, Common_Movement_WalkInPlaceFasterRight
waitmovement 0
closemessage
goto VerdanturfTown_BattleTentBattleRoom_EventScript_NextOpponentEnter
@@ -133,11 +129,11 @@ VerdanturfTown_BattleTentBattleRoom_OnWarp:
.2byte 0
VerdanturfTown_BattleTentBattleRoom_EventScript_SetUpObjects::
- hideobjectat LOCALID_PLAYER, MAP_VERDANTURF_TOWN_BATTLE_TENT_BATTLE_ROOM
+ hideobjectat LOCALID_VERDANTURF_TENT_BATTLE_PLAYER, MAP_VERDANTURF_TOWN_BATTLE_TENT_BATTLE_ROOM
call VerdanturfTown_BattleTentBattleRoom_EventScript_SetPlayerGfx
setvar VAR_TEMP_1, 1
- applymovement OBJ_EVENT_ID_PLAYER, VerdanturfTown_BattleTentBattleRoom_Movement_SetInvisible
- removeobject LOCALID_OPPONENT
+ applymovement LOCALID_PLAYER, VerdanturfTown_BattleTentBattleRoom_Movement_SetInvisible
+ removeobject LOCALID_VERDANTURF_TENT_BATTLE_OPPONENT
end
VerdanturfTown_BattleTentBattleRoom_EventScript_ReadyFor2ndOpponent::
diff --git a/data/maps/VerdanturfTown_BattleTentCorridor/map.json b/data/maps/VerdanturfTown_BattleTentCorridor/map.json
index 2b875b9009..95c0dffc5a 100644
--- a/data/maps/VerdanturfTown_BattleTentCorridor/map.json
+++ b/data/maps/VerdanturfTown_BattleTentCorridor/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_VERDANTURF_TENT_CORRIDOR_ATTENDANT",
"graphics_id": "OBJ_EVENT_GFX_EXPERT_M",
"x": 2,
"y": 6,
diff --git a/data/maps/VerdanturfTown_BattleTentCorridor/scripts.inc b/data/maps/VerdanturfTown_BattleTentCorridor/scripts.inc
index debf1b177f..028e56037a 100644
--- a/data/maps/VerdanturfTown_BattleTentCorridor/scripts.inc
+++ b/data/maps/VerdanturfTown_BattleTentCorridor/scripts.inc
@@ -1,5 +1,3 @@
-.set LOCALID_ATTENDANT, 1
-
VerdanturfTown_BattleTentCorridor_MapScripts::
map_script MAP_SCRIPT_ON_FRAME_TABLE, VerdanturfTown_BattleTentCorridor_OnFrame
.byte 0
@@ -11,13 +9,13 @@ VerdanturfTown_BattleTentCorridor_OnFrame:
VerdanturfTown_BattleTentCorridor_EventScript_EnterCorridor::
lockall
setvar VAR_TEMP_0, 1
- applymovement LOCALID_ATTENDANT, VerdanturfTown_BattleTentCorridor_Movement_WalkToDoor
- applymovement OBJ_EVENT_ID_PLAYER, VerdanturfTown_BattleTentCorridor_Movement_WalkToDoor
+ applymovement LOCALID_VERDANTURF_TENT_CORRIDOR_ATTENDANT, VerdanturfTown_BattleTentCorridor_Movement_WalkToDoor
+ applymovement LOCALID_PLAYER, VerdanturfTown_BattleTentCorridor_Movement_WalkToDoor
waitmovement 0
opendoor 2, 1
waitdooranim
- applymovement LOCALID_ATTENDANT, VerdanturfTown_BattleTentCorridor_Movement_AttendantEnterDoor
- applymovement OBJ_EVENT_ID_PLAYER, VerdanturfTown_BattleTentCorridor_Movement_PlayerEnterDoor
+ applymovement LOCALID_VERDANTURF_TENT_CORRIDOR_ATTENDANT, VerdanturfTown_BattleTentCorridor_Movement_AttendantEnterDoor
+ applymovement LOCALID_PLAYER, VerdanturfTown_BattleTentCorridor_Movement_PlayerEnterDoor
waitmovement 0
closedoor 2, 1
waitdooranim
diff --git a/data/maps/VerdanturfTown_BattleTentLobby/map.json b/data/maps/VerdanturfTown_BattleTentLobby/map.json
index ddb4b9dd35..132e08c9c0 100644
--- a/data/maps/VerdanturfTown_BattleTentLobby/map.json
+++ b/data/maps/VerdanturfTown_BattleTentLobby/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_VERDANTURF_TENT_ATTENDANT",
"graphics_id": "OBJ_EVENT_GFX_EXPERT_M",
"x": 6,
"y": 5,
diff --git a/data/maps/VerdanturfTown_BattleTentLobby/scripts.inc b/data/maps/VerdanturfTown_BattleTentLobby/scripts.inc
index f70baac84f..61901bbfaa 100644
--- a/data/maps/VerdanturfTown_BattleTentLobby/scripts.inc
+++ b/data/maps/VerdanturfTown_BattleTentLobby/scripts.inc
@@ -1,5 +1,3 @@
-.set LOCALID_ATTENDANT, 1
-
VerdanturfTown_BattleTentLobby_MapScripts::
map_script MAP_SCRIPT_ON_FRAME_TABLE, VerdanturfTown_BattleTentLobby_OnFrame
map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, VerdanturfTown_BattleTentLobby_OnWarp
@@ -11,7 +9,7 @@ VerdanturfTown_BattleTentLobby_OnWarp:
VerdanturfTown_BattleTentLobby_EventScript_TurnPlayerNorth::
setvar VAR_TEMP_1, 1
- turnobject OBJ_EVENT_ID_PLAYER, DIR_NORTH
+ turnobject LOCALID_PLAYER, DIR_NORTH
end
VerdanturfTown_BattleTentLobby_OnFrame:
@@ -193,13 +191,13 @@ VerdanturfTown_BattleTentLobby_EventScript_EndCancelChallenge::
end
VerdanturfTown_BattleTentLobby_EventScript_WalkToDoor::
- applymovement LOCALID_ATTENDANT, VerdanturfTown_BattleTentLobby_Movement_WalkToDoor
- applymovement OBJ_EVENT_ID_PLAYER, VerdanturfTown_BattleTentLobby_Movement_WalkToDoor
+ applymovement LOCALID_VERDANTURF_TENT_ATTENDANT, VerdanturfTown_BattleTentLobby_Movement_WalkToDoor
+ applymovement LOCALID_PLAYER, VerdanturfTown_BattleTentLobby_Movement_WalkToDoor
waitmovement 0
opendoor 6, 1
waitdooranim
- applymovement LOCALID_ATTENDANT, VerdanturfTown_BattleTentLobby_Movement_AttendantEnterDoor
- applymovement OBJ_EVENT_ID_PLAYER, VerdanturfTown_BattleTentLobby_Movement_PlayerEnterDoor
+ applymovement LOCALID_VERDANTURF_TENT_ATTENDANT, VerdanturfTown_BattleTentLobby_Movement_AttendantEnterDoor
+ applymovement LOCALID_PLAYER, VerdanturfTown_BattleTentLobby_Movement_PlayerEnterDoor
waitmovement 0
closedoor 6, 1
waitdooranim
diff --git a/data/maps/VerdanturfTown_Mart/map.json b/data/maps/VerdanturfTown_Mart/map.json
index 096d63552e..0faadcf266 100644
--- a/data/maps/VerdanturfTown_Mart/map.json
+++ b/data/maps/VerdanturfTown_Mart/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_VERDANTURF_MART_CLERK",
"graphics_id": "OBJ_EVENT_GFX_MART_EMPLOYEE",
"x": 1,
"y": 3,
diff --git a/data/maps/VerdanturfTown_PokemonCenter_1F/map.json b/data/maps/VerdanturfTown_PokemonCenter_1F/map.json
index 20a144afb9..4bae6ce2f4 100644
--- a/data/maps/VerdanturfTown_PokemonCenter_1F/map.json
+++ b/data/maps/VerdanturfTown_PokemonCenter_1F/map.json
@@ -15,6 +15,7 @@
"connections": null,
"object_events": [
{
+ "local_id": "LOCALID_VERDANTURF_NURSE",
"graphics_id": "OBJ_EVENT_GFX_NURSE",
"x": 7,
"y": 2,
diff --git a/data/maps/VerdanturfTown_PokemonCenter_1F/scripts.inc b/data/maps/VerdanturfTown_PokemonCenter_1F/scripts.inc
index 5fbdba42f4..2531a7501b 100644
--- a/data/maps/VerdanturfTown_PokemonCenter_1F/scripts.inc
+++ b/data/maps/VerdanturfTown_PokemonCenter_1F/scripts.inc
@@ -1,5 +1,3 @@
-.set LOCALID_NURSE, 1
-
VerdanturfTown_PokemonCenter_1F_MapScripts::
map_script MAP_SCRIPT_ON_TRANSITION, VerdanturfTown_PokemonCenter_1F_OnTransition
map_script MAP_SCRIPT_ON_RESUME, CableClub_OnResume
@@ -11,7 +9,7 @@ VerdanturfTown_PokemonCenter_1F_OnTransition:
end
VerdanturfTown_PokemonCenter_1F_EventScript_Nurse::
- setvar VAR_0x800B, LOCALID_NURSE
+ setvar VAR_0x800B, LOCALID_VERDANTURF_NURSE
call Common_EventScript_PkmnCenterNurse
waitmessage
waitbuttonpress
diff --git a/data/maps/VictoryRoad_1F/map.json b/data/maps/VictoryRoad_1F/map.json
index 4c348ba8e8..3027129d84 100644
--- a/data/maps/VictoryRoad_1F/map.json
+++ b/data/maps/VictoryRoad_1F/map.json
@@ -54,6 +54,7 @@
"flag": "0"
},
{
+ "local_id": "LOCALID_VICTORY_ROAD_ENTRANCE_WALLY",
"graphics_id": "OBJ_EVENT_GFX_WALLY",
"x": 12,
"y": 25,
diff --git a/data/maps/VictoryRoad_1F/scripts.inc b/data/maps/VictoryRoad_1F/scripts.inc
index 4bce6b4c1d..3b16f26d90 100644
--- a/data/maps/VictoryRoad_1F/scripts.inc
+++ b/data/maps/VictoryRoad_1F/scripts.inc
@@ -1,5 +1,3 @@
-.set LOCALID_WALLY_ENTRANCE, 4
-
VictoryRoad_1F_MapScripts::
map_script MAP_SCRIPT_ON_TRANSITION, VictoryRoad_1F_OnTransition
.byte 0
@@ -10,20 +8,20 @@ VictoryRoad_1F_OnTransition:
end
VictoryRoad_1F_EventScript_SetEntranceWallyPos1::
- setobjectxyperm LOCALID_WALLY_ENTRANCE, 2, 24
- setobjectmovementtype LOCALID_WALLY_ENTRANCE, MOVEMENT_TYPE_FACE_DOWN
+ setobjectxyperm LOCALID_VICTORY_ROAD_ENTRANCE_WALLY, 2, 24
+ setobjectmovementtype LOCALID_VICTORY_ROAD_ENTRANCE_WALLY, MOVEMENT_TYPE_FACE_DOWN
return
VictoryRoad_1F_EventScript_SetEntranceWallyPos2::
- setobjectxyperm LOCALID_WALLY_ENTRANCE, 3, 24
- setobjectmovementtype LOCALID_WALLY_ENTRANCE, MOVEMENT_TYPE_FACE_DOWN
+ setobjectxyperm LOCALID_VICTORY_ROAD_ENTRANCE_WALLY, 3, 24
+ setobjectmovementtype LOCALID_VICTORY_ROAD_ENTRANCE_WALLY, MOVEMENT_TYPE_FACE_DOWN
return
VictoryRoad_1F_EventScript_WallyBattleTrigger1::
lockall
setvar VAR_0x8008, 1
- addobject LOCALID_WALLY_ENTRANCE
- applymovement LOCALID_WALLY_ENTRANCE, VictoryRoad_1F_Movement_WallyApproachPlayer1
+ addobject LOCALID_VICTORY_ROAD_ENTRANCE_WALLY
+ applymovement LOCALID_VICTORY_ROAD_ENTRANCE_WALLY, VictoryRoad_1F_Movement_WallyApproachPlayer1
waitmovement 0
goto VictoryRoad_1F_EventScript_WallyEntranceBattle
end
@@ -31,20 +29,20 @@ VictoryRoad_1F_EventScript_WallyBattleTrigger1::
VictoryRoad_1F_EventScript_WallyBattleTrigger2::
lockall
setvar VAR_0x8008, 2
- addobject LOCALID_WALLY_ENTRANCE
- applymovement LOCALID_WALLY_ENTRANCE, VictoryRoad_1F_Movement_WallyApproachPlayer2
+ addobject LOCALID_VICTORY_ROAD_ENTRANCE_WALLY
+ applymovement LOCALID_VICTORY_ROAD_ENTRANCE_WALLY, VictoryRoad_1F_Movement_WallyApproachPlayer2
waitmovement 0
goto VictoryRoad_1F_EventScript_WallyEntranceBattle
end
VictoryRoad_1F_EventScript_WallyEntranceBattle::
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterDown
waitmovement 0
msgbox VictoryRoad_1F_Text_WallyNotGoingToLoseAnymore, MSGBOX_DEFAULT
trainerbattle_no_intro TRAINER_WALLY_VR_1, VictoryRoad_1F_Text_WallyEntranceDefeat
msgbox VictoryRoad_1F_Text_WallyPostEntranceBattle, MSGBOX_DEFAULT
clearflag FLAG_HIDE_VICTORY_ROAD_ENTRANCE_WALLY
- copyobjectxytoperm LOCALID_WALLY_ENTRANCE
+ copyobjectxytoperm LOCALID_VICTORY_ROAD_ENTRANCE_WALLY
setflag FLAG_DEFEATED_WALLY_VICTORY_ROAD
copyvar VAR_VICTORY_ROAD_1F_STATE, VAR_0x8008
releaseall
diff --git a/data/scripts/apprentice.inc b/data/scripts/apprentice.inc
index 6b3a99e728..246922f7f2 100644
--- a/data/scripts/apprentice.inc
+++ b/data/scripts/apprentice.inc
@@ -1,5 +1,3 @@
-.set LOCALID_APPRENTICE, 6
-
BattleFrontier_BattleTowerLobby_EventScript_Apprentice::
lock
faceplayer
diff --git a/data/scripts/battle_pike.inc b/data/scripts/battle_pike.inc
index 3393f808d3..2108becd06 100644
--- a/data/scripts/battle_pike.inc
+++ b/data/scripts/battle_pike.inc
@@ -1,4 +1,3 @@
-@ Note: LOCALIDs shared with BattleFrontier_BattlePikeRoomNormal
BattleFrontier_BattlePikeRoom_MapScripts:
map_script MAP_SCRIPT_ON_TRANSITION, BattleFrontier_BattlePikeRoom_OnTransition
map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, BattleFrontier_BattlePikeRoom_OnWarp
@@ -18,28 +17,28 @@ BattleFrontier_BattlePikeRoom_OnTransition:
end
BattleFrontier_BattlePikeRoomNormal_EventScript_SetDoubleBattleObjPos::
- setobjectxyperm LOCALID_OBJ_0, 2, 5
- setobjectxyperm LOCALID_OBJ_1, 6, 5
+ setobjectxyperm LOCALID_PIKE_ROOM_NPC_1, 2, 5
+ setobjectxyperm LOCALID_PIKE_ROOM_NPC_2, 6, 5
end
BattleFrontier_BattlePikeRoomNormal_EventScript_SetTwoObjectRoomPos::
- setobjectxyperm LOCALID_OBJ_0, 4, 4
- setobjectxyperm LOCALID_OBJ_1, 3, 4
+ setobjectxyperm LOCALID_PIKE_ROOM_NPC_1, 4, 4
+ setobjectxyperm LOCALID_PIKE_ROOM_NPC_2, 3, 4
end
BattleFrontier_BattlePikeRoomNormal_EventScript_SetOneObjectRoomPos::
- setobjectxyperm LOCALID_OBJ_0, 4, 4
- setobjectxyperm LOCALID_OBJ_1, 0, 0
+ setobjectxyperm LOCALID_PIKE_ROOM_NPC_1, 4, 4
+ setobjectxyperm LOCALID_PIKE_ROOM_NPC_2, 0, 0
end
BattleFrontier_BattlePikeRoomNormal_EventScript_SetNPCRoomObjPos::
- setobjectxyperm LOCALID_OBJ_0, 5, 5
- setobjectxyperm LOCALID_OBJ_1, 0, 0
+ setobjectxyperm LOCALID_PIKE_ROOM_NPC_1, 5, 5
+ setobjectxyperm LOCALID_PIKE_ROOM_NPC_2, 0, 0
end
BattleFrontier_BattlePikeRoomNormal_EventScript_SetBrainRoomObjPos::
- setobjectxyperm LOCALID_OBJ_0, 4, 3
- setobjectxyperm LOCALID_OBJ_1, 4, 4
+ setobjectxyperm LOCALID_PIKE_ROOM_NPC_1, 4, 3
+ setobjectxyperm LOCALID_PIKE_ROOM_NPC_2, 4, 4
end
BattleFrontier_BattlePikeRoom_OnWarp:
@@ -54,20 +53,20 @@ BattleFrontier_BattlePikeRoomNormal_EventScript_InitRoomObjects::
goto_if_eq VAR_RESULT, PIKE_ROOM_HARD_BATTLE, BattleFrontier_BattlePikeRoomNormal_EventScript_InitTwoObjectRoom
goto_if_eq VAR_RESULT, PIKE_ROOM_DOUBLE_BATTLE, BattleFrontier_BattlePikeRoomNormal_EventScript_InitTwoObjectRoom
goto_if_eq VAR_RESULT, PIKE_ROOM_BRAIN, BattleFrontier_BattlePikeRoomNormal_EventScript_InitBrainRoomObjects
- hideobjectat LOCALID_OBJ_1, MAP_BATTLE_FRONTIER_BATTLE_PIKE_ROOM_NORMAL
+ hideobjectat LOCALID_PIKE_ROOM_NPC_2, MAP_BATTLE_FRONTIER_BATTLE_PIKE_ROOM_NORMAL
setvar VAR_TEMP_4, 1
- turnobject OBJ_EVENT_ID_PLAYER, DIR_NORTH
+ turnobject LOCALID_PLAYER, DIR_NORTH
end
BattleFrontier_BattlePikeRoomNormal_EventScript_InitTwoObjectRoom::
setvar VAR_TEMP_4, 1
- turnobject OBJ_EVENT_ID_PLAYER, DIR_NORTH
+ turnobject LOCALID_PLAYER, DIR_NORTH
end
BattleFrontier_BattlePikeRoomNormal_EventScript_InitBrainRoomObjects::
setvar VAR_TEMP_4, 1
- turnobject OBJ_EVENT_ID_PLAYER, DIR_NORTH
- hideobjectat LOCALID_OBJ_0, MAP_BATTLE_FRONTIER_BATTLE_PIKE_ROOM_NORMAL @ Pike Queen hidden initially
+ turnobject LOCALID_PLAYER, DIR_NORTH
+ hideobjectat LOCALID_PIKE_ROOM_NPC_1, MAP_BATTLE_FRONTIER_BATTLE_PIKE_ROOM_NORMAL @ Pike Queen hidden initially
end
BattleFrontier_BattlePikeThreePathRoom_EventScript_LeftRoomWarp::
@@ -107,7 +106,7 @@ BattleFrontier_BattlePikeThreePathRoom_EventScript_RoomWarp::
end
BattleFrontier_BattlePikeThreePathRoom_EventScript_WarpNPCRoom::
- applymovement OBJ_EVENT_ID_PLAYER, BattleFrontier_BattlePikeRoom_Movement_HidePlayer
+ applymovement LOCALID_PLAYER, BattleFrontier_BattlePikeRoom_Movement_HidePlayer
waitmovement 0
call BattleFrontier_BattlePike_EventScript_CloseCurtain
warpsilent MAP_BATTLE_FRONTIER_BATTLE_PIKE_ROOM_NORMAL, 4, 7
@@ -115,7 +114,7 @@ BattleFrontier_BattlePikeThreePathRoom_EventScript_WarpNPCRoom::
end
BattleFrontier_BattlePikeThreePathRoom_EventScript_WarpWildMonRoom::
- applymovement OBJ_EVENT_ID_PLAYER, BattleFrontier_BattlePikeRoom_Movement_HidePlayer
+ applymovement LOCALID_PLAYER, BattleFrontier_BattlePikeRoom_Movement_HidePlayer
waitmovement 0
call BattleFrontier_BattlePike_EventScript_CloseCurtain
warpsilent MAP_BATTLE_FRONTIER_BATTLE_PIKE_ROOM_WILD_MONS, 4, 19
@@ -175,14 +174,14 @@ BattleFrontier_BattlePikeRoom_EventScript_EnableHealing::
return
BattleFrontier_BattlePikeRoom_EventScript_WarpToFinalRoom::
- applymovement OBJ_EVENT_ID_PLAYER, BattleFrontier_BattlePikeRoom_Movement_HidePlayer
+ applymovement LOCALID_PLAYER, BattleFrontier_BattlePikeRoom_Movement_HidePlayer
waitmovement 0
call BattleFrontier_BattlePike_EventScript_CloseCurtain
warpsilent MAP_BATTLE_FRONTIER_BATTLE_PIKE_ROOM_FINAL, 2, 7
return
BattleFrontier_BattlePikeRoom_EventScript_WarpToThreePathRoom::
- applymovement OBJ_EVENT_ID_PLAYER, BattleFrontier_BattlePikeRoom_Movement_HidePlayer
+ applymovement LOCALID_PLAYER, BattleFrontier_BattlePikeRoom_Movement_HidePlayer
waitmovement 0
call BattleFrontier_BattlePike_EventScript_CloseCurtain
warpsilent MAP_BATTLE_FRONTIER_BATTLE_PIKE_THREE_PATH_ROOM, 6, 10
diff --git a/data/scripts/berry_blender.inc b/data/scripts/berry_blender.inc
index f860ef066c..3fab60a58b 100644
--- a/data/scripts/berry_blender.inc
+++ b/data/scripts/berry_blender.inc
@@ -1,11 +1,3 @@
-@ Note: local IDs shared with scripts.inc for LilycoveCity_ContestLobby
-.set LOCALID_MAN, 3
-.set LOCALID_BOY, 9
-.set LOCALID_TWIN, 10
-.set LOCALID_POKEFAN_F, 15
-.set LOCALID_EXPERT_M, 16
-.set LOCALID_GIRL, 17
-
.set NUM_OPPONENTS, VAR_0x8009
BerryBlender_Text_WantToMakePokeblocks:
@@ -246,7 +238,7 @@ BerryBlender_EventScript_BerryBlender1::
lockall
goto_if_unset FLAG_HIDE_LILYCOVE_CONTEST_HALL_BLEND_MASTER, BerryBlender_EventScript_BlendMasterPresent
setvar NUM_OPPONENTS, 1
- applymovement LOCALID_EXPERT_M, BerryBlender_Movement_BlendLeaderWalkInPlace
+ applymovement LOCALID_BLEND_MASTER, BerryBlender_Movement_BlendLeaderWalkInPlace
waitmovement 0
msgbox BerryBlender_Text_WantToMakePokeblocks, MSGBOX_YESNO
goto_if_eq VAR_RESULT, YES, BerryBlender_EventScript_TryUseBerryBlender1
@@ -325,8 +317,8 @@ BerryBlender_EventScript_Blender1NoCase:
BerryBlender_EventScript_BerryBlender2::
lockall
setvar NUM_OPPONENTS, 2
- applymovement LOCALID_TWIN, Common_Movement_FaceOriginalDirection
- applymovement LOCALID_MAN, BerryBlender_Movement_BlendLeaderWalkInPlace
+ applymovement LOCALID_CONTEST_LOBBY_BLENDER_2_PARTICIPANT, Common_Movement_FaceOriginalDirection
+ applymovement LOCALID_CONTEST_LOBBY_BLENDER_2_LEADER, BerryBlender_Movement_BlendLeaderWalkInPlace
waitmovement 0
msgbox BerryBlender_Text_WantToBlendPokeblocksWithUs, MSGBOX_YESNO
goto_if_eq VAR_RESULT, YES, BerryBlender_EventScript_TryUseBerryBlender2
@@ -382,10 +374,10 @@ BerryBlender_EventScript_Blender2NoCase:
BerryBlender_EventScript_BerryBlender3::
lockall
- setvar VAR_0x8008, LOCALID_POKEFAN_F
+ setvar VAR_0x8008, LOCALID_CONTEST_LOBBY_BLENDER_3_LEADER
setvar NUM_OPPONENTS, 3
- applymovement LOCALID_BOY, Common_Movement_FaceOriginalDirection
- applymovement LOCALID_GIRL, Common_Movement_FaceOriginalDirection
+ applymovement LOCALID_CONTEST_LOBBY_BLENDER_3_PARTICIPANT_1, Common_Movement_FaceOriginalDirection
+ applymovement LOCALID_CONTEST_LOBBY_BLENDER_3_PARTICIPANT_2, Common_Movement_FaceOriginalDirection
applymovement VAR_0x8008, BerryBlender_Movement_BlendLeaderWalkInPlace
waitmovement 0
msgbox BerryBlender_Text_LookGoodAtBlendingJoinUs, MSGBOX_YESNO
diff --git a/data/scripts/cable_club.inc b/data/scripts/cable_club.inc
index 9120787ea9..227981578f 100644
--- a/data/scripts/cable_club.inc
+++ b/data/scripts/cable_club.inc
@@ -138,7 +138,7 @@ CableClub_EventScript_CloseLinkAndExitLinkRoom::
goto_if_eq VAR_0x8007, 0, CableClub_EventScript_PlayerExitLinkRoom
applymovement VAR_0x8007, Movement_AttendantFaceLeft
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, Movement_PlayerExitLinkRoom
+ applymovement LOCALID_PLAYER, Movement_PlayerExitLinkRoom
waitmovement 0
applymovement VAR_0x8007, Movement_AttendantFaceDown
waitmovement 0
@@ -158,7 +158,7 @@ CableClub_EventScript_PlayerExitTradeCenter::
special CloseLink
setvar VAR_CABLE_CLUB_STATE, 0
goto_if_eq VAR_0x8007, 0, CableClub_EventScript_PlayerExitLinkRoom
- applymovement OBJ_EVENT_ID_PLAYER, Movement_PlayerFaceAttendantRight
+ applymovement LOCALID_PLAYER, Movement_PlayerFaceAttendantRight
waitmovement 0
applymovement VAR_0x8007, Movement_AttendantFaceLeft
waitmovement 0
@@ -178,7 +178,7 @@ CableClub_EventScript_ExitRecordCorner::
CableClub_EventScript_PlayerExitRecordCorner::
special CloseLink
setvar VAR_CABLE_CLUB_STATE, 0
- applymovement OBJ_EVENT_ID_PLAYER, Movement_PlayerExitLinkRoom
+ applymovement LOCALID_PLAYER, Movement_PlayerExitLinkRoom
waitmovement 0
goto_if_eq VAR_0x8007, 0, CableClub_EventScript_ExitRecordCornerRet
applymovement VAR_0x8007, Movement_AttendantFaceDown
@@ -199,7 +199,7 @@ CableClub_EventScript_ExitUnionRoom::
CableClub_EventScript_PlayerExitUnionRoom::
setvar VAR_CABLE_CLUB_STATE, 0
goto_if_eq VAR_0x8007, 0, CableClub_EventScript_PlayerExitLinkRoom
- applymovement OBJ_EVENT_ID_PLAYER, Movement_PlayerFaceAttendantRight
+ applymovement LOCALID_PLAYER, Movement_PlayerFaceAttendantRight
waitmovement 0
applymovement VAR_0x8007, Movement_AttendantFaceLeft
waitmovement 0
@@ -213,24 +213,24 @@ CableClub_EventScript_TrainerCardDataOverwritten::
delay 60
message CableClub_Text_HopeToSeeYouAgain
waitmessage
- applymovement OBJ_EVENT_ID_PLAYER, Movement_PlayerExitLinkRoom
+ applymovement LOCALID_PLAYER, Movement_PlayerExitLinkRoom
waitmovement 0
applymovement VAR_0x8007, Movement_AttendantFaceDown
waitmovement 0
return
CableClub_EventScript_PlayerExitLinkRoom::
- applymovement OBJ_EVENT_ID_PLAYER, Movement_PlayerExitLinkRoom
+ applymovement LOCALID_PLAYER, Movement_PlayerExitLinkRoom
waitmovement 0
return
CableClub_EventScript_Tutorial::
lockall
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterUp
waitmovement 0
msgbox CableClub_Text_FirstTimeRightThisWay, MSGBOX_DEFAULT
closemessage
- applymovement OBJ_EVENT_ID_PLAYER, CableClub_Movement_PlayerApproachCounter
+ applymovement LOCALID_PLAYER, CableClub_Movement_PlayerApproachCounter
waitmovement 0
delay 30
msgbox CableClub_Text_ExplainWirelessClubFirstTime, MSGBOX_DEFAULT
@@ -350,13 +350,13 @@ CableClub_EventScript_EnterColosseum::
applymovement VAR_LAST_TALKED, Movement_AttendantFaceLeft
waitmovement 0
closemessage
- applymovement OBJ_EVENT_ID_PLAYER, Movement_PlayerApproachLinkRoomLeft
+ applymovement LOCALID_PLAYER, Movement_PlayerApproachLinkRoomLeft
waitmovement 0
opendoor 9, 1
waitdooranim
- applymovement OBJ_EVENT_ID_PLAYER, Movement_PlayerEnterLinkRoom
+ applymovement LOCALID_PLAYER, Movement_PlayerEnterLinkRoom
waitmovement 0
- hideobjectat OBJ_EVENT_ID_PLAYER, 0
+ hideobjectat LOCALID_PLAYER, 0
closedoor 9, 1
waitdooranim
release
@@ -369,7 +369,7 @@ CableClub_EventScript_EnterColosseum::
@ Unused
CableClub_EventScript_PlayerApproachLinkRoomRight::
- applymovement OBJ_EVENT_ID_PLAYER, Movement_PlayerApproachLinkRoomRight
+ applymovement LOCALID_PLAYER, Movement_PlayerApproachLinkRoomRight
waitmovement 0
return
@@ -444,13 +444,13 @@ CableClub_EventScript_EnterTradeCenter::
applymovement VAR_LAST_TALKED, Movement_AttendantFaceLeft
waitmovement 0
closemessage
- applymovement OBJ_EVENT_ID_PLAYER, Movement_PlayerApproachLinkRoomLeft
+ applymovement LOCALID_PLAYER, Movement_PlayerApproachLinkRoomLeft
waitmovement 0
opendoor 9, 1
waitdooranim
- applymovement OBJ_EVENT_ID_PLAYER, Movement_PlayerEnterLinkRoom
+ applymovement LOCALID_PLAYER, Movement_PlayerEnterLinkRoom
waitmovement 0
- hideobjectat OBJ_EVENT_ID_PLAYER, 0
+ hideobjectat LOCALID_PLAYER, 0
closedoor 9, 1
waitdooranim
release
@@ -509,13 +509,13 @@ CableClub_EventScript_EnterRecordCorner::
applymovement VAR_LAST_TALKED, Movement_AttendantFaceLeft
waitmovement 0
closemessage
- applymovement OBJ_EVENT_ID_PLAYER, Movement_PlayerApproachLinkRoomLeft
+ applymovement LOCALID_PLAYER, Movement_PlayerApproachLinkRoomLeft
waitmovement 0
opendoor 9, 1
waitdooranim
- applymovement OBJ_EVENT_ID_PLAYER, Movement_PlayerEnterLinkRoom
+ applymovement LOCALID_PLAYER, Movement_PlayerEnterLinkRoom
waitmovement 0
- hideobjectat OBJ_EVENT_ID_PLAYER, 0
+ hideobjectat LOCALID_PLAYER, 0
closedoor 9, 1
waitdooranim
release
@@ -896,13 +896,13 @@ CableClub_EventScript_EnterUnionRoom::
delay 60
applymovement VAR_LAST_TALKED, Movement_AttendantFaceLeft
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, Movement_PlayerApproachLinkRoomLeft
+ applymovement LOCALID_PLAYER, Movement_PlayerApproachLinkRoomLeft
waitmovement 0
opendoor 5, 1
waitdooranim
- applymovement OBJ_EVENT_ID_PLAYER, Movement_PlayerEnterLinkRoom
+ applymovement LOCALID_PLAYER, Movement_PlayerEnterLinkRoom
waitmovement 0
- hideobjectat OBJ_EVENT_ID_PLAYER, 0
+ hideobjectat LOCALID_PLAYER, 0
closedoor 5, 1
waitdooranim
special Script_ResetUnionRoomTrade
@@ -1196,13 +1196,13 @@ CableClub_EventScript_EnterWirelessLinkRoom::
applymovement VAR_LAST_TALKED, Movement_AttendantFaceLeft
waitmovement 0
closemessage
- applymovement OBJ_EVENT_ID_PLAYER, Movement_PlayerApproachLinkRoomLeft
+ applymovement LOCALID_PLAYER, Movement_PlayerApproachLinkRoomLeft
waitmovement 0
opendoor 9, 1
waitdooranim
- applymovement OBJ_EVENT_ID_PLAYER, Movement_PlayerEnterLinkRoom
+ applymovement LOCALID_PLAYER, Movement_PlayerEnterLinkRoom
waitmovement 0
- hideobjectat OBJ_EVENT_ID_PLAYER, 0
+ hideobjectat LOCALID_PLAYER, 0
closedoor 9, 1
waitdooranim
release
@@ -1382,9 +1382,9 @@ MossdeepCity_GameCorner_1F_EventScript_EnterMinigameRoom::
applymovement VAR_LAST_TALKED, Movement_AttendantFaceLeft
waitmovement 0
closemessage
- applymovement OBJ_EVENT_ID_PLAYER, Movement_PlayerEnterMinigameRoom
+ applymovement LOCALID_PLAYER, Movement_PlayerEnterMinigameRoom
waitmovement 0
- hideobjectat OBJ_EVENT_ID_PLAYER, 0
+ hideobjectat LOCALID_PLAYER, 0
release
waitstate
end
diff --git a/data/scripts/cave_hole.inc b/data/scripts/cave_hole.inc
index d7acf29d96..fc4962912a 100644
--- a/data/scripts/cave_hole.inc
+++ b/data/scripts/cave_hole.inc
@@ -9,7 +9,7 @@ CaveHole_FixCrackedGround:
EventScript_FallDownHole::
lockall
delay 20
- applymovement OBJ_EVENT_ID_PLAYER, Movement_SetInvisible
+ applymovement LOCALID_PLAYER, Movement_SetInvisible
waitmovement 0
playse SE_FALL
delay 60
@@ -20,7 +20,7 @@ EventScript_FallDownHole::
EventScript_FallDownHoleMtPyre::
lockall
delay 20
- applymovement OBJ_EVENT_ID_PLAYER, Movement_SetInvisible
+ applymovement LOCALID_PLAYER, Movement_SetInvisible
waitmovement 0
playse SE_FALL
delay 60
diff --git a/data/scripts/contest_hall.inc b/data/scripts/contest_hall.inc
index 3874e1a59e..1e5125db96 100644
--- a/data/scripts/contest_hall.inc
+++ b/data/scripts/contest_hall.inc
@@ -1,19 +1,3 @@
-.set LOCALID_MC, 1
-.set LOCALID_JUDGE, 2
-.set LOCALID_CONTESTANT_1, 3
-.set LOCALID_CONTESTANT_2, 4
-.set LOCALID_CONTESTANT_3, 5
-.set LOCALID_AUDIENCE_1, 6
-.set LOCALID_AUDIENCE_3, 7
-.set LOCALID_AUDIENCE_4, 8
-.set LOCALID_AUDIENCE_5, 9
-.set LOCALID_AUDIENCE_6, 10
-.set LOCALID_AUDIENCE_7, 11
-.set LOCALID_AUDIENCE_2, 12
-.set LOCALID_POKEBALL, 13
-.set LOCALID_CONTESTANT_4, 14
-.set LOCALID_ARTIST, 15
-
@ Either ends or returns to EventScript_ContestReceptionist after submitting a contest entry
LilycoveCity_ContestLobby_EventScript_SpeakToContestReceptionist::
lock
@@ -204,7 +188,7 @@ ContestHall_EventScript_DoContest::
lockall
applymovement LOCALID_CONTESTANT_4, ContestHall_Movement_Player4FaceUp
waitmovement 0
- applymovement LOCALID_MC, ContestHall_Movement_MCWalkDown
+ applymovement LOCALID_CONTEST_MC, ContestHall_Movement_MCWalkDown
waitmovement 0
releaseall
call ContestHall_EventScript_TryWaitForLink
@@ -280,7 +264,7 @@ ContestHall_EventScript_ContestGettingStarted::
bufferstdstring STR_VAR_3, VAR_0x8009
call ContestHall_EventScript_GettingStarted
lockall
- applymovement LOCALID_MC, ContestHall_Movement_MCBackUp
+ applymovement LOCALID_CONTEST_MC, ContestHall_Movement_MCBackUp
waitmovement 0
releaseall
return
@@ -385,7 +369,7 @@ ContestHall_EventScript_ShowContestMonPic::
releaseall
call ContestHall_EventScript_TryWaitForLink
call ContestHall_EventScript_CheckIfContestWithRSPlayer
- addobject LOCALID_POKEBALL
+ addobject LOCALID_CONTEST_POKEBALL
playse SE_LEDGE
lockall
applymovement VAR_0x800B, ContestHall_Movement_ContestantDelay32
@@ -414,13 +398,13 @@ ContestHall_EventScript_AudienceVote::
playse SE_M_ENCORE2
waitmessage
call ContestHall_EventScript_AudienceLookAround
- applymovement LOCALID_MC, ContestHall_Movement_MCFaceJudge2
+ applymovement LOCALID_CONTEST_MC, ContestHall_Movement_MCFaceJudge2
waitmovement 0
- applymovement LOCALID_JUDGE, ContestHall_Movement_JudgeFaceMC
+ applymovement LOCALID_CONTEST_JUDGE, ContestHall_Movement_JudgeFaceMC
waitmovement 0
delay 20
- applymovement LOCALID_MC, ContestHall_Movement_FaceContestants
- applymovement LOCALID_JUDGE, ContestHall_Movement_FaceContestants
+ applymovement LOCALID_CONTEST_MC, ContestHall_Movement_FaceContestants
+ applymovement LOCALID_CONTEST_JUDGE, ContestHall_Movement_FaceContestants
waitmovement 0
return
@@ -460,25 +444,25 @@ ContestHall_EventScript_VotingUnderWayLink::
ContestHall_EventScript_AudienceReactToContestant::
call ContestHall_EventScript_TryWaitForLink
- applymovement LOCALID_MC, ContestHall_Movement_AudienceMemberLookLeft
+ applymovement LOCALID_CONTEST_MC, ContestHall_Movement_AudienceMemberLookLeft
waitmovement 0
playse SE_M_ENCORE2
call ContestHall_EventScript_VObjectAudienceLookAround
- applymovement LOCALID_AUDIENCE_5, ContestHall_Movement_AudienceMemberLookRight
- applymovement LOCALID_AUDIENCE_2, ContestHall_Movement_AudienceMemberLookDown
- applymovement LOCALID_AUDIENCE_3, ContestHall_Movement_AudienceMemberLookRight
+ applymovement LOCALID_CONTEST_AUDIENCE_5, ContestHall_Movement_AudienceMemberLookRight
+ applymovement LOCALID_CONTEST_AUDIENCE_2, ContestHall_Movement_AudienceMemberLookDown
+ applymovement LOCALID_CONTEST_AUDIENCE_3, ContestHall_Movement_AudienceMemberLookRight
waitmovement 0
- applymovement LOCALID_MC, ContestHall_Movement_AudienceMemberLookRight
+ applymovement LOCALID_CONTEST_MC, ContestHall_Movement_AudienceMemberLookRight
waitmovement 0
- applymovement LOCALID_AUDIENCE_6, ContestHall_Movement_AudienceMemberLookLeft
- applymovement LOCALID_AUDIENCE_7, ContestHall_Movement_AudienceMemberLookDown
- applymovement LOCALID_AUDIENCE_1, ContestHall_Movement_AudienceMemberLookUp
- applymovement LOCALID_AUDIENCE_4, ContestHall_Movement_AudienceMemberLookLeft
+ applymovement LOCALID_CONTEST_AUDIENCE_6, ContestHall_Movement_AudienceMemberLookLeft
+ applymovement LOCALID_CONTEST_AUDIENCE_7, ContestHall_Movement_AudienceMemberLookDown
+ applymovement LOCALID_CONTEST_AUDIENCE_1, ContestHall_Movement_AudienceMemberLookUp
+ applymovement LOCALID_CONTEST_AUDIENCE_4, ContestHall_Movement_AudienceMemberLookLeft
waitmovement 0
- applymovement LOCALID_MC, ContestHall_Movement_MCLookAtJudge
+ applymovement LOCALID_CONTEST_MC, ContestHall_Movement_MCLookAtJudge
waitmovement 0
- applymovement LOCALID_MC, ContestHall_Movement_MCWalkInPlaceDown
- applymovement LOCALID_JUDGE, ContestHall_Movement_JudgeLookAtMC
+ applymovement LOCALID_CONTEST_MC, ContestHall_Movement_MCWalkInPlaceDown
+ applymovement LOCALID_CONTEST_JUDGE, ContestHall_Movement_JudgeLookAtMC
waitmovement 0
releaseall
call ContestHall_EventScript_TryWaitForLink
@@ -624,7 +608,7 @@ ContestHall_EventScript_Set8Hearts::
ContestHall_EventScript_TryDisplayHeartAudienceMember1::
goto_if_eq VAR_TEMP_1, 1, ContestHall_EventScript_AudienceMember1AlreadyEmoted
- applymovement LOCALID_AUDIENCE_1, ContestHall_Movement_Heart
+ applymovement LOCALID_CONTEST_AUDIENCE_1, ContestHall_Movement_Heart
playse SE_PIN
delay 14
setvar VAR_TEMP_1, 1
@@ -636,7 +620,7 @@ ContestHall_EventScript_AudienceMember1AlreadyEmoted::
ContestHall_EventScript_TryDisplayHeartAudienceMember2::
goto_if_eq VAR_TEMP_2, 1, ContestHall_EventScript_AudienceMember2AlreadyEmoted
- applymovement LOCALID_AUDIENCE_2, ContestHall_Movement_Heart
+ applymovement LOCALID_CONTEST_AUDIENCE_2, ContestHall_Movement_Heart
playse SE_PIN
delay 14
setvar VAR_TEMP_2, 1
@@ -648,7 +632,7 @@ ContestHall_EventScript_AudienceMember2AlreadyEmoted::
ContestHall_EventScript_TryDisplayHeartAudienceMember3::
goto_if_eq VAR_TEMP_3, 1, ContestHall_EventScript_AudienceMember3AlreadyEmoted
- applymovement LOCALID_AUDIENCE_3, ContestHall_Movement_Heart
+ applymovement LOCALID_CONTEST_AUDIENCE_3, ContestHall_Movement_Heart
playse SE_PIN
delay 14
setvar VAR_TEMP_3, 1
@@ -660,7 +644,7 @@ ContestHall_EventScript_AudienceMember3AlreadyEmoted::
ContestHall_EventScript_TryDisplayHeartAudienceMember4::
goto_if_eq VAR_TEMP_4, 1, ContestHall_EventScript_Audience4MemberAlreadyEmoted
- applymovement LOCALID_AUDIENCE_4, ContestHall_Movement_Heart
+ applymovement LOCALID_CONTEST_AUDIENCE_4, ContestHall_Movement_Heart
playse SE_PIN
delay 14
setvar VAR_TEMP_4, 1
@@ -672,7 +656,7 @@ ContestHall_EventScript_Audience4MemberAlreadyEmoted::
ContestHall_EventScript_TryDisplayHeartAudienceMember5::
goto_if_eq VAR_TEMP_5, 1, ContestHall_EventScript_AudienceMember5AlreadyEmoted
- applymovement LOCALID_AUDIENCE_5, ContestHall_Movement_Heart
+ applymovement LOCALID_CONTEST_AUDIENCE_5, ContestHall_Movement_Heart
playse SE_PIN
delay 14
setvar VAR_TEMP_5, 1
@@ -684,7 +668,7 @@ ContestHall_EventScript_AudienceMember5AlreadyEmoted::
ContestHall_EventScript_TryDisplayHeartAudienceMember6::
goto_if_eq VAR_TEMP_6, 1, ContestHall_EventScript_AudienceMember6AlreadyEmoted
- applymovement LOCALID_AUDIENCE_6, ContestHall_Movement_Heart
+ applymovement LOCALID_CONTEST_AUDIENCE_6, ContestHall_Movement_Heart
playse SE_PIN
delay 14
setvar VAR_TEMP_6, 1
@@ -696,7 +680,7 @@ ContestHall_EventScript_AudienceMember6AlreadyEmoted::
ContestHall_EventScript_TryDisplayHeartAudienceMember7::
goto_if_eq VAR_TEMP_7, 1, ContestHall_EventScript_AudienceMember7AlreadyEmoted
- applymovement LOCALID_AUDIENCE_7, ContestHall_Movement_Heart
+ applymovement LOCALID_CONTEST_AUDIENCE_7, ContestHall_Movement_Heart
playse SE_PIN
delay 14
setvar VAR_TEMP_7, 1
@@ -708,7 +692,7 @@ ContestHall_EventScript_AudienceMember7AlreadyEmoted::
ContestHall_EventScript_TryDisplayHeartAudienceMember8::
goto_if_eq VAR_TEMP_8, 1, ContestHall_EventScript_AudienceMember8AlreadyEmoted
- applymovement LOCALID_ARTIST, ContestHall_Movement_Heart
+ applymovement LOCALID_CONTEST_ARTIST, ContestHall_Movement_Heart
playse SE_PIN
delay 14
setvar VAR_TEMP_8, 1
@@ -721,7 +705,7 @@ ContestHall_EventScript_AudienceMember8AlreadyEmoted::
ContestHall_EventScript_ContestantReturn::
closemessage
release
- removeobject LOCALID_POKEBALL
+ removeobject LOCALID_CONTEST_POKEBALL
special HideContestEntryMonPic
call ContestHall_EventScript_TryWaitForLink
switch VAR_0x8006
@@ -765,13 +749,13 @@ ContestHall_EventScript_Player4WalkBack::
ContestHall_EventScript_DoContestAppeals::
lockall
- applymovement LOCALID_MC, ContestHall_Movement_FaceContestants2
+ applymovement LOCALID_CONTEST_MC, ContestHall_Movement_FaceContestants2
waitmovement 0
call ContestHall_EventScript_TryWaitForLink
call ContestHall_EventScript_LetsAppeal
waitmessage
- applymovement LOCALID_MC, ContestHall_Movement_WalkStageLeft
- applymovement LOCALID_JUDGE, ContestHall_Movement_WalkStageRight
+ applymovement LOCALID_CONTEST_MC, ContestHall_Movement_WalkStageLeft
+ applymovement LOCALID_CONTEST_JUDGE, ContestHall_Movement_WalkStageRight
waitmovement 0
releaseall
call ContestHall_EventScript_TryWaitForLink
@@ -781,8 +765,8 @@ ContestHall_EventScript_DoContestAppeals::
special LinkContestTryShowWirelessIndicator
setvar VAR_TEMP_9, 0
lockall
- applymovement LOCALID_MC, ContestHall_Movement_WalkStageRight
- applymovement LOCALID_JUDGE, ContestHall_Movement_WalkStageLeft
+ applymovement LOCALID_CONTEST_MC, ContestHall_Movement_WalkStageRight
+ applymovement LOCALID_CONTEST_JUDGE, ContestHall_Movement_WalkStageLeft
waitmovement 0
releaseall
return
@@ -818,13 +802,13 @@ ContestHall_EventScript_ContestResults::
call ContestHall_EventScript_TryWaitForLink
call ContestHall_EventScript_ThankYouForAppeals
call ContestHall_EventScript_TryWaitForLink
- applymovement LOCALID_MC, ContestHall_Movement_MCFaceJudge
+ applymovement LOCALID_CONTEST_MC, ContestHall_Movement_MCFaceJudge
waitmovement 0
call ContestHall_EventScript_JudgeLooksReady
call ContestHall_EventScript_TryWaitForLink
call ContestHall_EventScript_WeWillDeclareWinner
call ContestHall_EventScript_TryWaitForLink
- applymovement LOCALID_MC, ContestHall_Movement_FaceContestants
+ applymovement LOCALID_CONTEST_MC, ContestHall_Movement_FaceContestants
waitmovement 0
closemessage
releaseall
@@ -935,14 +919,14 @@ ContestHall_EventScript_AudienceLookAround::
addvar VAR_TEMP_1, 1
lockall
call_if_gt VAR_CONTEST_TYPE, CONTEST_TYPE_NPC_NORMAL, ContestHall_EventScript_VObjectAudienceLookAround
- applymovement LOCALID_AUDIENCE_5, ContestHall_Movement_AudienceMemberLookRight
- applymovement LOCALID_AUDIENCE_2, ContestHall_Movement_AudienceMemberLookDown
- applymovement LOCALID_AUDIENCE_3, ContestHall_Movement_AudienceMemberLookRight
+ applymovement LOCALID_CONTEST_AUDIENCE_5, ContestHall_Movement_AudienceMemberLookRight
+ applymovement LOCALID_CONTEST_AUDIENCE_2, ContestHall_Movement_AudienceMemberLookDown
+ applymovement LOCALID_CONTEST_AUDIENCE_3, ContestHall_Movement_AudienceMemberLookRight
delay 30
- applymovement LOCALID_AUDIENCE_6, ContestHall_Movement_AudienceMemberLookLeft
- applymovement LOCALID_AUDIENCE_7, ContestHall_Movement_AudienceMemberLookDown
- applymovement LOCALID_AUDIENCE_1, ContestHall_Movement_AudienceMemberLookUp
- applymovement LOCALID_AUDIENCE_4, ContestHall_Movement_AudienceMemberLookLeft
+ applymovement LOCALID_CONTEST_AUDIENCE_6, ContestHall_Movement_AudienceMemberLookLeft
+ applymovement LOCALID_CONTEST_AUDIENCE_7, ContestHall_Movement_AudienceMemberLookDown
+ applymovement LOCALID_CONTEST_AUDIENCE_1, ContestHall_Movement_AudienceMemberLookUp
+ applymovement LOCALID_CONTEST_AUDIENCE_4, ContestHall_Movement_AudienceMemberLookLeft
goto_if_ne VAR_TEMP_1, 4, ContestHall_EventScript_AudienceLookAround
delay 30
return
diff --git a/data/scripts/day_care.inc b/data/scripts/day_care.inc
index ce5c02a935..f183b73633 100644
--- a/data/scripts/day_care.inc
+++ b/data/scripts/day_care.inc
@@ -1,5 +1,3 @@
-.set LOCALID_DAYCARE_LADY, 1
-
Route117_EventScript_DaycareMan::
lock
faceplayer
diff --git a/data/scripts/elite_four.inc b/data/scripts/elite_four.inc
index 97d7f41314..1d1f7ab3eb 100644
--- a/data/scripts/elite_four.inc
+++ b/data/scripts/elite_four.inc
@@ -1,5 +1,5 @@
PokemonLeague_EliteFour_SetAdvanceToNextRoomMetatiles::
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_Delay32
+ applymovement LOCALID_PLAYER, Common_Movement_Delay32
waitmovement 0
playse SE_DOOR
setmetatile 6, 1, METATILE_EliteFour_OpenDoor_Frame, FALSE
@@ -18,7 +18,7 @@ PokemonLeague_EliteFour_SetAdvanceToNextRoomMetatiles::
return
PokemonLeague_EliteFour_EventScript_WalkInCloseDoor::
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkUp6
+ applymovement LOCALID_PLAYER, Common_Movement_WalkUp6
waitmovement 0
playse SE_TRUCK_DOOR
setmetatile 5, 12, METATILE_EliteFour_EntryDoor_ClosedTop, TRUE
diff --git a/data/scripts/field_move_scripts.inc b/data/scripts/field_move_scripts.inc
index 4cd069c7ee..1845e10297 100644
--- a/data/scripts/field_move_scripts.inc
+++ b/data/scripts/field_move_scripts.inc
@@ -354,7 +354,7 @@ 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
@@ -369,6 +369,7 @@ EventScript_CantSurface::
EventScript_EndSurface::
callnative SetFollowerNPCSurfSpriteAfterDive
+EventScript_NoSurface::
releaseall
end
diff --git a/data/scripts/gabby_and_ty.inc b/data/scripts/gabby_and_ty.inc
index 260526c4b6..06e1010589 100644
--- a/data/scripts/gabby_and_ty.inc
+++ b/data/scripts/gabby_and_ty.inc
@@ -1,8 +1,15 @@
-@ Gabby and Ty always move to the same spots for the first 5 battles
-@ From the 6th battle onwards, they move randomly between locations 6-8
-@ Note: The local IDs of Gabby and Ty are hard-coded in GetGabbyAndTyLocalIds
+@ Gabby and Ty can appear in a fixed location on 3 different routes.
+@ Each time they are battled they will disappear from the route they're on
+@ and relocate to the next one, in the order Route 111 -> Route 118 -> Route 120.
+@ Gabby and Ty have 6 different parties which will get cycled on each appearance.
+@ After they're defeated 6 times they will stick to their 6th party but continue
+@ cycling between the 3 routes. To determine which trainer party gets used GF created
+@ multiple object events for Gabby and Ty on each of the 3 routes. The scripts below
+@ handle hiding and showing these objects so the correct party appears on the correct route.
+@ Route 111 and Route 118 have 3 object events each (parties 1,4,6 and 2,5,6 respectively)
+@ and Route 120 has 2 object events each (parties 3 and 6).
GabbyAndTy_EventScript_UpdateLocation::
- cleartrainerflag TRAINER_GABBY_AND_TY_6
+ cleartrainerflag TRAINER_GABBY_AND_TY_6 @ Clear flag for their final party to allow infinite rematches.
specialvar VAR_RESULT, GabbyAndTyGetBattleNum
switch VAR_RESULT
case 0, GabbyAndTy_EventScript_MoveForBattle1
@@ -31,13 +38,13 @@ GabbyAndTy_EventScript_MoveForBattle3::
return
GabbyAndTy_EventScript_MoveForBattle4::
- call GabbyAndTy_EventScript_ShowAtRoute111_3
+ call GabbyAndTy_EventScript_ShowAtRoute111_2
call GabbyAndTy_EventScript_HideAtRoute120_1
return
GabbyAndTy_EventScript_MoveForBattle5::
call GabbyAndTy_EventScript_ShowAtRoute118_2
- call GabbyAndTy_EventScript_HideAtRoute111_3
+ call GabbyAndTy_EventScript_HideAtRoute111_2
return
GabbyAndTy_EventScript_MoveForBattle6::
@@ -46,13 +53,13 @@ GabbyAndTy_EventScript_MoveForBattle6::
return
GabbyAndTy_EventScript_MoveForBattle7::
- call GabbyAndTy_EventScript_ShowAtRoute111_2
+ call GabbyAndTy_EventScript_ShowAtRoute111_3
call GabbyAndTy_EventScript_HideAtRoute120_2
return
GabbyAndTy_EventScript_MoveForBattle8::
call GabbyAndTy_EventScript_ShowAtRoute118_3
- call GabbyAndTy_EventScript_HideAtRoute111_2
+ call GabbyAndTy_EventScript_HideAtRoute111_3
return
GabbyAndTy_EventScript_MoveForBattle9::
@@ -84,12 +91,12 @@ GabbyAndTy_EventScript_ShowAtRoute120_1::
clearflag FLAG_HIDE_ROUTE_120_GABBY_AND_TY_1
return
-GabbyAndTy_EventScript_HideAtRoute111_3::
- setflag FLAG_HIDE_ROUTE_111_GABBY_AND_TY_3
+GabbyAndTy_EventScript_HideAtRoute111_2::
+ setflag FLAG_HIDE_ROUTE_111_GABBY_AND_TY_2
return
-GabbyAndTy_EventScript_ShowAtRoute111_3::
- clearflag FLAG_HIDE_ROUTE_111_GABBY_AND_TY_3
+GabbyAndTy_EventScript_ShowAtRoute111_2::
+ clearflag FLAG_HIDE_ROUTE_111_GABBY_AND_TY_2
return
GabbyAndTy_EventScript_HideAtRoute118_2::
@@ -108,12 +115,12 @@ GabbyAndTy_EventScript_ShowAtRoute120_2::
clearflag FLAG_HIDE_ROUTE_120_GABBY_AND_TY_2
return
-GabbyAndTy_EventScript_HideAtRoute111_2::
- setflag FLAG_HIDE_ROUTE_111_GABBY_AND_TY_2
+GabbyAndTy_EventScript_HideAtRoute111_3::
+ setflag FLAG_HIDE_ROUTE_111_GABBY_AND_TY_3
return
-GabbyAndTy_EventScript_ShowAtRoute111_2::
- clearflag FLAG_HIDE_ROUTE_111_GABBY_AND_TY_2
+GabbyAndTy_EventScript_ShowAtRoute111_3::
+ clearflag FLAG_HIDE_ROUTE_111_GABBY_AND_TY_3
return
GabbyAndTy_EventScript_HideAtRoute118_3::
diff --git a/data/scripts/lilycove_lady.inc b/data/scripts/lilycove_lady.inc
index 5519de9791..0eb8be19ba 100644
--- a/data/scripts/lilycove_lady.inc
+++ b/data/scripts/lilycove_lady.inc
@@ -1,6 +1,3 @@
-.set LOCALID_LILYCOVE_LADY, 4
-.set LOCALID_LADYS_MON, 5
-
LilycoveCity_PokemonCenter_1F_EventScript_LilycoveLady::
special Script_GetLilycoveLadyId
switch VAR_RESULT
@@ -390,7 +387,7 @@ LilycoveCity_PokemonCenter_1F_EventScript_FeedPokeblock::
applymovement LOCALID_LILYCOVE_LADY, LilycoveCity_PokemonCenter_1F_Movement_LadyFaceMon
waitmovement 0
delay 60
- applymovement LOCALID_LADYS_MON, LilycoveCity_PokemonCenter_1F_Movement_MonFaceLady
+ applymovement LOCALID_LILYCOVE_LADYS_MON, LilycoveCity_PokemonCenter_1F_Movement_MonFaceLady
waitmovement 0
delay 60
waitse
@@ -403,7 +400,7 @@ LilycoveCity_PokemonCenter_1F_EventScript_FeedPokeblock::
@ VAR_0x8004 here is the return value from GivePokeblockToContestLady
LilycoveCity_PokemonCenter_1F_EventScript_MonEnjoyPokeblock::
- applymovement LOCALID_LADYS_MON, LilycoveCity_PokemonCenter_1F_Movement_MonJump
+ applymovement LOCALID_LILYCOVE_LADYS_MON, LilycoveCity_PokemonCenter_1F_Movement_MonJump
waitmovement 0
delay 60
LilycoveCity_PokemonCenter_1F_EventScript_FinishFeedPokeblock::
diff --git a/data/scripts/new_game.inc b/data/scripts/new_game.inc
index e9c8dd8d56..1803199e42 100644
--- a/data/scripts/new_game.inc
+++ b/data/scripts/new_game.inc
@@ -161,10 +161,10 @@ EventScript_ResetAllMapFlags::
setflag FLAG_HIDE_LILYCOVE_FAN_CLUB_INTERVIEWER
setflag FLAG_HIDE_ROUTE_118_GABBY_AND_TY_1
setflag FLAG_HIDE_ROUTE_120_GABBY_AND_TY_1
- setflag FLAG_HIDE_ROUTE_111_GABBY_AND_TY_3
+ setflag FLAG_HIDE_ROUTE_111_GABBY_AND_TY_2
setflag FLAG_HIDE_ROUTE_118_GABBY_AND_TY_2
setflag FLAG_HIDE_ROUTE_120_GABBY_AND_TY_2
- setflag FLAG_HIDE_ROUTE_111_GABBY_AND_TY_2
+ setflag FLAG_HIDE_ROUTE_111_GABBY_AND_TY_3
setflag FLAG_HIDE_ROUTE_118_GABBY_AND_TY_3
setflag FLAG_HIDE_SLATEPORT_CITY_CONTEST_REPORTER
setflag FLAG_HIDE_LILYCOVE_CONTEST_HALL_REPORTER
diff --git a/data/scripts/players_house.inc b/data/scripts/players_house.inc
index caa4e69551..4bcb31aa24 100644
--- a/data/scripts/players_house.inc
+++ b/data/scripts/players_house.inc
@@ -1,8 +1,3 @@
-@ Local IDs are the same for both players houses
-.set LOCALID_MOM, 1
-.set LOCALID_DAD, 5
-.set LOCALID_MOM_2F, 14
-
PlayersHouse_2F_EventScript_BlockStairsUntilClockIsSet::
setvar VAR_LITTLEROOT_INTRO_STATE, 5
return
@@ -16,19 +11,19 @@ PlayersHouse_1F_EventScript_EnterHouseMovingIn::
msgbox PlayersHouse_1F_Text_MoversPokemonGoSetClock, MSGBOX_DEFAULT
closemessage
setvar VAR_LITTLEROOT_INTRO_STATE, 4
- applymovement OBJ_EVENT_ID_PLAYER, PlayersHouse_1F_Movement_PlayerWalkIn
+ applymovement LOCALID_PLAYER, PlayersHouse_1F_Movement_PlayerWalkIn
applymovement VAR_0x8004, Common_Movement_WalkInPlaceFasterUp
waitmovement 0
releaseall
end
PlayersHouse_1F_EventScript_MomFacePlayerMovingInMale::
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterRight
waitmovement 0
return
PlayersHouse_1F_EventScript_MomFacePlayerMovingInFemale::
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
waitmovement 0
return
@@ -40,7 +35,7 @@ PlayersHouse_1F_EventScript_MomGoSeeRoom::
msgbox PlayersHouse_1F_Text_ArentYouInterestedInRoom, MSGBOX_DEFAULT
closemessage
applymovement VAR_0x8004, Common_Movement_WalkInPlaceFasterUp
- applymovement OBJ_EVENT_ID_PLAYER, PlayersHouse_1F_Movement_MovePlayerAwayFromDoor
+ applymovement LOCALID_PLAYER, PlayersHouse_1F_Movement_MovePlayerAwayFromDoor
waitmovement 0
releaseall
end
@@ -75,11 +70,11 @@ PlayersHouse_2F_EventScript_WallClock::
end
PlayersHouse_2F_EventScript_MomComesUpstairsMale::
- setvar VAR_0x8008, LOCALID_MOM_2F
+ setvar VAR_0x8008, LOCALID_PLAYERS_HOUSE_2F_MOM
addobject VAR_0x8008
applymovement VAR_0x8008, PlayersHouse_2F_Movement_MomEntersMale
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterRight
waitmovement 0
msgbox PlayersHouse_2F_Text_HowDoYouLikeYourRoom, MSGBOX_DEFAULT
closemessage
@@ -88,11 +83,11 @@ PlayersHouse_2F_EventScript_MomComesUpstairsMale::
return
PlayersHouse_2F_EventScript_MomComesUpstairsFemale::
- setvar VAR_0x8008, LOCALID_MOM_2F
+ setvar VAR_0x8008, LOCALID_PLAYERS_HOUSE_2F_MOM
addobject VAR_0x8008
applymovement VAR_0x8008, PlayersHouse_2F_Movement_MomEntersFemale
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
waitmovement 0
msgbox PlayersHouse_2F_Text_HowDoYouLikeYourRoom, MSGBOX_DEFAULT
closemessage
@@ -153,17 +148,17 @@ PlayersHouse_1F_EventScript_PetalburgGymReportMale::
applymovement VAR_0x8005, Common_Movement_WalkInPlaceFasterRight
waitmovement 0
call PlayersHouse_1F_EventScript_MomNoticeGymBroadcast
- applymovement OBJ_EVENT_ID_PLAYER, PlayersHouse_1F_Movement_PlayerApproachTVForGymMale
+ applymovement LOCALID_PLAYER, PlayersHouse_1F_Movement_PlayerApproachTVForGymMale
waitmovement 0
playbgm MUS_ENCOUNTER_INTERVIEWER, FALSE
msgbox PlayersHouse_1F_Text_MaybeDadWillBeOn, MSGBOX_DEFAULT
closemessage
applymovement VAR_0x8005, PlayersHouse_1F_Movement_MomMakeRoomToSeeTVMale
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, PlayersHouse_1F_Movement_PlayerMoveToTVMale
+ applymovement LOCALID_PLAYER, PlayersHouse_1F_Movement_PlayerMoveToTVMale
waitmovement 0
call PlayersHouse_1F_EventScript_WatchGymBroadcast
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
waitmovement 0
msgbox PlayersHouse_1F_Text_ItsOverWeMissedHim, MSGBOX_DEFAULT
msgbox PlayersHouse_1F_Text_GoIntroduceYourselfNextDoor, MSGBOX_DEFAULT
@@ -178,17 +173,17 @@ PlayersHouse_1F_EventScript_PetalburgGymReportFemale::
applymovement VAR_0x8005, Common_Movement_WalkInPlaceFasterLeft
waitmovement 0
call PlayersHouse_1F_EventScript_MomNoticeGymBroadcast
- applymovement OBJ_EVENT_ID_PLAYER, PlayersHouse_1F_Movement_PlayerApproachTVForGymFemale
+ applymovement LOCALID_PLAYER, PlayersHouse_1F_Movement_PlayerApproachTVForGymFemale
waitmovement 0
playbgm MUS_ENCOUNTER_INTERVIEWER, FALSE
msgbox PlayersHouse_1F_Text_MaybeDadWillBeOn, MSGBOX_DEFAULT
closemessage
applymovement VAR_0x8005, PlayersHouse_1F_Movement_MomMakeRoomToSeeTVFemale
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, PlayersHouse_1F_Movement_PlayerMoveToTVFemale
+ applymovement LOCALID_PLAYER, PlayersHouse_1F_Movement_PlayerMoveToTVFemale
waitmovement 0
call PlayersHouse_1F_EventScript_WatchGymBroadcast
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterRight
waitmovement 0
msgbox PlayersHouse_1F_Text_ItsOverWeMissedHim, MSGBOX_DEFAULT
msgbox PlayersHouse_1F_Text_GoIntroduceYourselfNextDoor, MSGBOX_DEFAULT
@@ -210,7 +205,7 @@ PlayersHouse_1F_EventScript_MomNoticeGymBroadcast::
return
PlayersHouse_1F_EventScript_WatchGymBroadcast::
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterUp
waitmovement 0
msgbox PlayersHouse_1F_Text_ReportFromPetalburgGym, MSGBOX_DEFAULT
fadedefaultbgm
@@ -492,14 +487,14 @@ PlayersHouse_1F_EventScript_AirLatiBroadcast::
PlayersHouse_1F_EventScript_SetUpObjectEventVarsMale::
setvar VAR_0x8008, MALE
- setvar VAR_0x8009, LOCALID_DAD
- setvar VAR_0x800A, LOCALID_MOM
+ setvar VAR_0x8009, LOCALID_PLAYERS_HOUSE_1F_DAD
+ setvar VAR_0x800A, LOCALID_PLAYERS_HOUSE_1F_MOM
return
PlayersHouse_1F_EventScript_SetUpObjectEventVarsFemale::
setvar VAR_0x8008, FEMALE
- setvar VAR_0x8009, LOCALID_DAD
- setvar VAR_0x800A, LOCALID_MOM
+ setvar VAR_0x8009, LOCALID_PLAYERS_HOUSE_1F_DAD
+ setvar VAR_0x800A, LOCALID_PLAYERS_HOUSE_1F_MOM
return
PlayersHouse_1F_EventScript_DadApproachPlayerMale::
@@ -527,38 +522,38 @@ PlayersHouse_1F_EventScript_MomApproachDadFemale::
return
PlayersHouse_1F_EventScript_DadExitsMale::
- applymovement OBJ_EVENT_ID_PLAYER, PlayersHouse_1F_Movement_MomAndPlayerWatchDadExit
+ applymovement LOCALID_PLAYER, PlayersHouse_1F_Movement_MomAndPlayerWatchDadExit
applymovement VAR_0x800A, PlayersHouse_1F_Movement_MomAndPlayerWatchDadExit
applymovement VAR_0x8009, PlayersHouse_1F_Movement_DadExitsMale
waitmovement 0
return
PlayersHouse_1F_EventScript_DadExitsFemale::
- applymovement OBJ_EVENT_ID_PLAYER, PlayersHouse_1F_Movement_MomAndPlayerWatchDadExit
+ applymovement LOCALID_PLAYER, PlayersHouse_1F_Movement_MomAndPlayerWatchDadExit
applymovement VAR_0x800A, PlayersHouse_1F_Movement_MomAndPlayerWatchDadExit
applymovement VAR_0x8009, PlayersHouse_1F_Movement_DadExitsFemale
waitmovement 0
return
PlayersHouse_1F_EventScript_PlayerEnterRoomMale::
- applymovement OBJ_EVENT_ID_PLAYER, PlayersHouse_1F_Movement_PlayerEnterRoomMale
+ applymovement LOCALID_PLAYER, PlayersHouse_1F_Movement_PlayerEnterRoomMale
waitmovement 0
return
PlayersHouse_1F_EventScript_PlayerEnterRoomFemale::
- applymovement OBJ_EVENT_ID_PLAYER, PlayersHouse_1F_Movement_PlayerEnterRoomFemale
+ applymovement LOCALID_PLAYER, PlayersHouse_1F_Movement_PlayerEnterRoomFemale
waitmovement 0
return
PlayersHouse_1F_EventScript_PlayerApproachTVForLatiMale::
- applymovement OBJ_EVENT_ID_PLAYER, PlayersHouse_1F_Movement_PlayerApproachTVForLatiMale
+ applymovement LOCALID_PLAYER, PlayersHouse_1F_Movement_PlayerApproachTVForLatiMale
waitmovement 0
applymovement VAR_0x800A, Common_Movement_WalkInPlaceFasterLeft
waitmovement 0
return
PlayersHouse_1F_EventScript_PlayerApproachTVForLatiFemale::
- applymovement OBJ_EVENT_ID_PLAYER, PlayersHouse_1F_Movement_PlayerApproachTVForLatiFemale
+ applymovement LOCALID_PLAYER, PlayersHouse_1F_Movement_PlayerApproachTVForLatiFemale
waitmovement 0
applymovement VAR_0x800A, Common_Movement_WalkInPlaceFasterRight
waitmovement 0
@@ -567,14 +562,14 @@ PlayersHouse_1F_EventScript_PlayerApproachTVForLatiFemale::
PlayersHouse_1F_EventScript_MomApproachPlayerMale::
applymovement VAR_0x800A, PlayersHouse_1F_Movement_MomApproachPlayerMale
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
waitmovement 0
return
PlayersHouse_1F_EventScript_MomApproachPlayerFemale::
applymovement VAR_0x800A, PlayersHouse_1F_Movement_MomApproachPlayerFemale
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterRight
waitmovement 0
return
@@ -591,14 +586,14 @@ PlayersHouse_1F_EventScript_MomNoticesLatiBroadcastFemale::
PlayersHouse_1F_EventScript_MomApproachPlayerAfterTVMale::
applymovement VAR_0x800A, PlayersHouse_1F_Movement_MomApproachPlayerAfterTVMale
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterRight
waitmovement 0
return
PlayersHouse_1F_EventScript_MomApproachPlayerAfterTVFemale::
applymovement VAR_0x800A, PlayersHouse_1F_Movement_MomApproachPlayerAfterTVFemale
waitmovement 0
- applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
waitmovement 0
return
diff --git a/data/scripts/secret_base.inc b/data/scripts/secret_base.inc
index 9a6fd77253..15faddfa9d 100644
--- a/data/scripts/secret_base.inc
+++ b/data/scripts/secret_base.inc
@@ -144,7 +144,7 @@ SecretBase_EventScript_InitSecretBase::
end
SecretBase_EventScript_FirstEntrance::
- applymovement OBJ_EVENT_ID_PLAYER, SecretBase_Movement_EnterBase
+ applymovement LOCALID_PLAYER, SecretBase_Movement_EnterBase
waitmovement 0
setvar VAR_INIT_SECRET_BASE, 1
msgbox SecretBase_Text_WantToMakeYourSecretBaseHere, MSGBOX_YESNO
diff --git a/docs/STYLEGUIDE.md b/docs/STYLEGUIDE.md
index bb8f715ae4..f53e1a2dcc 100644
--- a/docs/STYLEGUIDE.md
+++ b/docs/STYLEGUIDE.md
@@ -202,7 +202,7 @@ if (runTasks) // correct
if (runTasks != 0) // incorrect
RunTasks();
-
+
if (!PlayerIsOutside()) // correct
RemoveSunglasses();
diff --git a/docs/SUMMARY.md b/docs/SUMMARY.md
index e38949773d..fa03ca20ee 100644
--- a/docs/SUMMARY.md
+++ b/docs/SUMMARY.md
@@ -19,7 +19,11 @@
- [How to add new Trainer Slides](tutorials/how_to_new_trainer_slide.md)
- [Day/Night System FAQ](tutorials/dns.md)
- [Changelog](./CHANGELOG.md)
+ - [1.12.x]()
+ - [Version 1.12.0](changelogs/1.12.x/1.12.0.md)
- [1.11.x]()
+ - [Version 1.11.4](changelogs/1.11.x/1.11.4.md)
+ - [Version 1.11.3](changelogs/1.11.x/1.11.3.md)
- [Version 1.11.2](changelogs/1.11.x/1.11.2.md)
- [Version 1.11.1](changelogs/1.11.x/1.11.1.md)
- [Version 1.11.0](changelogs/1.11.x/1.11.0.md)
diff --git a/docs/changelogs/1.11.x/1.11.3.md b/docs/changelogs/1.11.x/1.11.3.md
new file mode 100644
index 0000000000..41956a4b10
--- /dev/null
+++ b/docs/changelogs/1.11.x/1.11.3.md
@@ -0,0 +1,133 @@
+```md
+## How to update
+- If you haven't set up a remote, run the command `git remote add RHH https://github.com/rh-hideout/pokeemerald-expansion`.
+- Once you have your remote set up, run the command `git pull RHH expansion/1.11.3
+`.
+```
+
+
+## 🧬 General 🧬
+### Changed
+* Remove old slide workaround by @hedara90 in [#6754](https://github.com/rh-hideout/pokeemerald-expansion/pull/6754)
+* Changed github CI to use arm-none-eabi-gcc by @hedara90 in [#6829](https://github.com/rh-hideout/pokeemerald-expansion/pull/6829)
+* Add move description data for Z-Moves and Max/G-Max moves by @kittenchilly in [#6852](https://github.com/rh-hideout/pokeemerald-expansion/pull/6852)
+* Add CREDITS.md & FEATURES.md, rewrite README.md & INSTALL.md by @pkmnsnfrn in [#6700](https://github.com/rh-hideout/pokeemerald-expansion/pull/6700)
+* Fixed URL for contributors badge on README.md by @pkmnsnfrn in [#6897](https://github.com/rh-hideout/pokeemerald-expansion/pull/6897)
+* Fix typo in the readme by @Bassoonian in [#6908](https://github.com/rh-hideout/pokeemerald-expansion/pull/6908)
+* Cleanup identical if blocks by @malad1211 in [#6988](https://github.com/rh-hideout/pokeemerald-expansion/pull/6988)
+
+### Fixed
+* Add AUTO_GEN_TARGETS for .party files and map_groups_count, but on master by @hedara90 and @mrgriffin in [#6824](https://github.com/rh-hideout/pokeemerald-expansion/pull/6824)
+* Make make clean work again by @hedara90 in [#6848](https://github.com/rh-hideout/pokeemerald-expansion/pull/6848)
+* Fix trainers.party parser failing on apostrophes by @jfb1337 in [#6938](https://github.com/rh-hideout/pokeemerald-expansion/pull/6938)
+* Explicit -std=gnu17 in CPPFLAGS to mirror CFLAGS by @mrgriffin in [#6839](https://github.com/rh-hideout/pokeemerald-expansion/pull/6839)
+* Missed ItemId_GetDescription change by @AlexOn1ine in [#6992](https://github.com/rh-hideout/pokeemerald-expansion/pull/6992)
+
+## 🐉 Pokémon 🐉
+### Changed
+* New Lurantis animation by @Cafeei in [#6725](https://github.com/rh-hideout/pokeemerald-expansion/pull/6725)
+* Added Egg Moves for Basculin White Striped by @PCG06 in [#6769](https://github.com/rh-hideout/pokeemerald-expansion/pull/6769)
+ - Added Egg Moves for Basculin White Striped.
+* PokeCommunity sprites batch (April 2025) by @kittenchilly in [#6840](https://github.com/rh-hideout/pokeemerald-expansion/pull/6840)
+* Improve a few Gen 9 Pokemon sprites by @kittenchilly in [#6885](https://github.com/rh-hideout/pokeemerald-expansion/pull/6885)
+
+### Fixed
+* Fix rerolls overwriting Fixed Personality by @i0brendan0 in [#6774](https://github.com/rh-hideout/pokeemerald-expansion/pull/6774)
+
+## ⚔️ Battle General ⚔️
+### Changed
+* Remove redundant script declaration in `battle_scripts.h` by @Bassoonian and @i0brendan0 in [#6837](https://github.com/rh-hideout/pokeemerald-expansion/pull/6837)
+* BattleScript_BerryStatRaiseRet Ripen checks berry and cleanup by @ghoulslash in [#6835](https://github.com/rh-hideout/pokeemerald-expansion/pull/6835)
+
+### Fixed
+* Bugfixes batch by @AlexOn1ine in [#6750](https://github.com/rh-hideout/pokeemerald-expansion/pull/6750)
+* Fix Life Orb inflicting self damage when using status moves (#6767) by @spindrift64 in [#6773](https://github.com/rh-hideout/pokeemerald-expansion/pull/6773)
+* Fixes Stomping Tantrum not boosting damage when missed due to Accuracy by @AlexOn1ine in [#6762](https://github.com/rh-hideout/pokeemerald-expansion/pull/6762)
+* Fixes Symbiosis not triggering when a weakness berry was consumed by @AlexOn1ine in [#6782](https://github.com/rh-hideout/pokeemerald-expansion/pull/6782)
+* Fix gems activating for moves that don't deal type damage by @spindrift64 in [#6789](https://github.com/rh-hideout/pokeemerald-expansion/pull/6789) (reverted in #6806)
+* Fix Iron Ball type effectiveness check by @spindrift64 in [#6794](https://github.com/rh-hideout/pokeemerald-expansion/pull/6794)
+* Toxic Spikes print whether the target is poisoned or badly poisoned by @spindrift64 in [#6814](https://github.com/rh-hideout/pokeemerald-expansion/pull/6814)
+* Fixes Berserk Gene infinite loop by @AlexOn1ine in [#6813](https://github.com/rh-hideout/pokeemerald-expansion/pull/6813)
+* Fixes restoretarget on empty stack when using G-Max Gravitas by @PhallenTree in [#6827](https://github.com/rh-hideout/pokeemerald-expansion/pull/6827)
+* Fixed double battles send out breaking by @cawtds in [#6822](https://github.com/rh-hideout/pokeemerald-expansion/pull/6822)
+* Fix potential bug in BattleScript_FriskActivates by @AlexOn1ine in [#6850](https://github.com/rh-hideout/pokeemerald-expansion/pull/6850)
+* Reverts wrongly done gem fix and renames struggle effect by @AlexOn1ine in [#6806](https://github.com/rh-hideout/pokeemerald-expansion/pull/6806)
+* add fail ptr arg to JumpIfMoveFailed, fix tryworryseed by @ghoulslash in [#6925](https://github.com/rh-hideout/pokeemerald-expansion/pull/6925)
+* Fixes Life Orb damage still happening after attacker was unable to at… by @AlexOn1ine in [#6940](https://github.com/rh-hideout/pokeemerald-expansion/pull/6940)
+* Fixes Dazzling abilities activating on all multi hit move hits by @AlexOn1ine in [#6943](https://github.com/rh-hideout/pokeemerald-expansion/pull/6943)
+* Fixes ate type being ignored after checking summary screen by @AlexOn1ine in [#6888](https://github.com/rh-hideout/pokeemerald-expansion/pull/6888)
+* Fixes Unnerve activation not limited to 1 per switch-in by @AlexOn1ine in [#6960](https://github.com/rh-hideout/pokeemerald-expansion/pull/6960)
+* Fixes checking wrong move's Dynamic Move Type in Summary Screen by @PhallenTree in [#6975](https://github.com/rh-hideout/pokeemerald-expansion/pull/6975)
+* Fix Wish healing even if the target is Heal Blocked by @DarkVexon in [#6979](https://github.com/rh-hideout/pokeemerald-expansion/pull/6979)
+ - Fixed Heal Block not applying to Wish moves that had already been used
+* Prankster block check was missng the IsStatusMove check by @AlexOn1ine in [#6987](https://github.com/rh-hideout/pokeemerald-expansion/pull/6987)
+
+## 🤖 Battle AI 🤖
+### Fixed
+* Fixes ai moves being recorded without correct index by @AlexOn1ine in [#6803](https://github.com/rh-hideout/pokeemerald-expansion/pull/6803)
+* Fixes AI repeated use of weather set up moves by @AlexOn1ine in [#6963](https://github.com/rh-hideout/pokeemerald-expansion/pull/6963)
+* Fixes AI not seeing primal weather and partner absorbing abilities by @AlexOn1ine in [#6936](https://github.com/rh-hideout/pokeemerald-expansion/pull/6936)
+
+## 🧹 Other Cleanup 🧹
+* Remove old slide workaround by @hedara90 in [#6754](https://github.com/rh-hideout/pokeemerald-expansion/pull/6754)
+* Remove redundant script declaration in `battle_scripts.h` by @Bassoonian and @i0brendan0 in [#6837](https://github.com/rh-hideout/pokeemerald-expansion/pull/6837)
+* BattleScript_BerryStatRaiseRet Ripen checks berry and cleanup by @ghoulslash in [#6835](https://github.com/rh-hideout/pokeemerald-expansion/pull/6835)
+* Consolidated stat-priority ability tests by @AsparagusEduardo in [#6863](https://github.com/rh-hideout/pokeemerald-expansion/pull/6863)
+* Fix typo in the readme by @Bassoonian in [#6908](https://github.com/rh-hideout/pokeemerald-expansion/pull/6908)
+* add fail ptr arg to JumpIfMoveFailed, fix tryworryseed by @ghoulslash in [#6925](https://github.com/rh-hideout/pokeemerald-expansion/pull/6925)
+* Rename AI test by @AlexOn1ine in [#6977](https://github.com/rh-hideout/pokeemerald-expansion/pull/6977)
+* Missed ItemId_GetDescription change by @AlexOn1ine in [#6992](https://github.com/rh-hideout/pokeemerald-expansion/pull/6992)
+* Cleanup identical if blocks by @malad1211 in [#6988](https://github.com/rh-hideout/pokeemerald-expansion/pull/6988)
+
+## 🧪 Test Runner 🧪
+### Changed
+* Changed Tackle for Scratch in tests by @AsparagusEduardo and @Pawkkie, @PurrfectDoodle, @hedara90 in [#6730](https://github.com/rh-hideout/pokeemerald-expansion/pull/6730)
+ - Tackle's power varies too much across generations. When writing new tests, please use Scratch instead.
+* Adds RNG tags and tests for Moody and Starf Berry by @PhallenTree in [#6718](https://github.com/rh-hideout/pokeemerald-expansion/pull/6718)
+* A lot of tests by @hedara90 in [#6734](https://github.com/rh-hideout/pokeemerald-expansion/pull/6734)
+* Added Ability TODO tests - Volume B by @AsparagusEduardo in [#6836](https://github.com/rh-hideout/pokeemerald-expansion/pull/6836)
+* Consolidated stat-priority ability tests by @AsparagusEduardo in [#6863](https://github.com/rh-hideout/pokeemerald-expansion/pull/6863)
+* Create missing ability and move effect test files by @AsparagusEduardo in [#6845](https://github.com/rh-hideout/pokeemerald-expansion/pull/6845)
+* Fix `KNOWN_FAILING` Bestow tests by @AsparagusEduardo in [#6947](https://github.com/rh-hideout/pokeemerald-expansion/pull/6947)
+* Added check for gBattleStringsTable by @AsparagusEduardo in [#6948](https://github.com/rh-hideout/pokeemerald-expansion/pull/6948)
+* Rename AI test by @AlexOn1ine in [#6977](https://github.com/rh-hideout/pokeemerald-expansion/pull/6977)
+* Fix heal bell test, add sparkly swirl test by @ghoulslash in [#6262](https://github.com/rh-hideout/pokeemerald-expansion/pull/6262)
+
+### Fixed
+* Fix test not referencing AI_TRAINER_NAME by @Pawkkie in [#6926](https://github.com/rh-hideout/pokeemerald-expansion/pull/6926)
+* Backport #6712 Fix party data assignment by @Pawkkie in [#6980](https://github.com/rh-hideout/pokeemerald-expansion/pull/6980)
+
+## 📚 Documentation 📚
+* Fixed URL for contributors badge on README.md by @pkmnsnfrn in [#6897](https://github.com/rh-hideout/pokeemerald-expansion/pull/6897)
+
+## 📦 Branch Synchronisation 📦
+### pret
+* 2nd of May 2025 in [#6752](https://github.com/rh-hideout/pokeemerald-expansion/pull/6752)
+ * Added missing include due to g++ changes by @hedara90 in [pret#2131](https://github.com/pret/pokeemerald/pull/2131)
+* 15th of May, 2025 in [#6870](https://github.com/rh-hideout/pokeemerald-expansion/pull/6870)
+ * Identified task and sprite fields related to battle weather animations by @DavidJCobb in [pret#2128](https://github.com/pret/pokeemerald/pull/2128)
+ * Battle link reverse-engineering by @DavidJCobb in [pret#2125](https://github.com/pret/pokeemerald/pull/2125)
+ * `InitSpritePosToAnimAttacker` documentation by @AsparagusEduardo in [pret#2132](https://github.com/pret/pokeemerald/pull/2132)
+ * Rename battlerId to battler for consistency by @AlexOn1ine in [pret#2126](https://github.com/pret/pokeemerald/pull/2126)
+ * Replace: moveId -> move, moveIdx -> moveIndex by @AlexOn1ine in [pret#2134](https://github.com/pret/pokeemerald/pull/2134)
+ * Add BattlerId enum and document by @AlexOn1ine in [pret#2135](https://github.com/pret/pokeemerald/pull/2135)
+ * Remove files that should not have been committed in #2126 by @mrgriffin in [pret#2136](https://github.com/pret/pokeemerald/pull/2136)
+* 24th of May, 2025 in [#6978](https://github.com/rh-hideout/pokeemerald-expansion/pull/6978)
+ * Warn on suspicious setvar usages by @mrgriffin in [pret#2137](https://github.com/pret/pokeemerald/pull/2137)
+ * Streamline pointer notation by @Bassoonian in [pret#2139](https://github.com/pret/pokeemerald/pull/2139)
+ * Fixes for C23 Support by @Kurausukun in [pret#2138](https://github.com/pret/pokeemerald/pull/2138)
+ * Update header files to match source files by @Bassoonian in [pret#2143](https://github.com/pret/pokeemerald/pull/2143)
+ * Correct C23 Checks by @Kurausukun in [pret#2144](https://github.com/pret/pokeemerald/pull/2144)
+ * Rename ItemId_GetX to GetItemX by @AlexOn1ine in [pret#2116](https://github.com/pret/pokeemerald/pull/2116)
+ * Remove files that were wrongly commited by @AlexOn1ine in [pret#2146](https://github.com/pret/pokeemerald/pull/2146)
+
+## New Contributors
+* @i0brendan0 made their first contribution in [#6774](https://github.com/rh-hideout/pokeemerald-expansion/pull/6774)
+* @allcontributors made their first contribution in [#6896](https://github.com/rh-hideout/pokeemerald-expansion/pull/6896)
+* @DarkVexon made their first contribution in [#6979](https://github.com/rh-hideout/pokeemerald-expansion/pull/6979)
+
+**Full Changelog**: https://github.com/rh-hideout/pokeemerald-expansion/compare/expansion/1.11.2...expansion/1.11.3
+
+
+
+
diff --git a/docs/changelogs/1.11.x/1.11.4.md b/docs/changelogs/1.11.x/1.11.4.md
new file mode 100644
index 0000000000..051323075d
--- /dev/null
+++ b/docs/changelogs/1.11.x/1.11.4.md
@@ -0,0 +1,45 @@
+```md
+## How to update
+- If you haven't set up a remote, run the command `git remote add RHH https://github.com/rh-hideout/pokeemerald-expansion`.
+- Once you have your remote set up, run the command `git pull RHH expansion/1.11.4
+`.
+```
+
+
+## 🐉 Pokémon 🐉
+### Fixed
+* Fixed `CreateMon` param order in `CreateFacilityMon` by @PCG06 in [#6989](https://github.com/rh-hideout/pokeemerald-expansion/pull/6989)
+ - Fixed `CreateMon` param order in `CreateFacilityMon`.
+
+## ⚔️ Battle General ⚔️
+### Fixed
+* Fix Eiscue not resetting back to Ice Face form after battle. by @DarkVexon in [#6997](https://github.com/rh-hideout/pokeemerald-expansion/pull/6997)
+* Fixes spread move fire types not defrosting all targets by @AlexOn1ine in [#6998](https://github.com/rh-hideout/pokeemerald-expansion/pull/6998)
+* Update Supersweet Syrup with eject pack fix by @AlexOn1ine in [#7015](https://github.com/rh-hideout/pokeemerald-expansion/pull/7015)
+* fix battle controller macros by @cawtds in [#7021](https://github.com/rh-hideout/pokeemerald-expansion/pull/7021)
+
+
+## 🧪 Test Runner 🧪
+### Fixed
+* Fix out-of-bounds in Heal Bell Cures Entire Party test by @rayrobdod in [#7011](https://github.com/rh-hideout/pokeemerald-expansion/pull/7011)
+
+
+## 📦 Branch Synchronisation 📦
+### pret
+* 27th of May, 2025 in [#6995](https://github.com/rh-hideout/pokeemerald-expansion/pull/6995)
+ * Fix defines in MAP_NUM and MAP_GROUP by @Bassoonian in [pret#2023](https://github.com/pret/pokeemerald/pull/2023)
+ * Change metatile behaviors to enum by @pkmnsnfrn in [pret#2027](https://github.com/pret/pokeemerald/pull/2027)
+ * Move heal locations data to their associated map.json by @GriffinRichards in [pret#2034](https://github.com/pret/pokeemerald/pull/2034)
+ * Generate local IDs from map.json files by @GriffinRichards in [pret#2047](https://github.com/pret/pokeemerald/pull/2047)
+ * Generate MAPSEC constants from JSON by @GriffinRichards in [pret#2063](https://github.com/pret/pokeemerald/pull/2063)
+ * Generate heal location constants automatically by @GriffinRichards in [pret#2101](https://github.com/pret/pokeemerald/pull/2101)
+ * Update for Porymap 6 by @GriffinRichards in [pret#2141](https://github.com/pret/pokeemerald/pull/2141)
+* 29th of May, 2025 in [#7012](https://github.com/rh-hideout/pokeemerald-expansion/pull/7012)
+ * Update for Porymap 6 by @GriffinRichards in [pret#2141](https://github.com/pret/pokeemerald/pull/2141)
+
+
+**Full Changelog**: https://github.com/rh-hideout/pokeemerald-expansion/compare/expansion/1.11.3...expansion/1.11.4
+
+
+
+
diff --git a/docs/changelogs/1.12.x/1.12.0.md b/docs/changelogs/1.12.x/1.12.0.md
new file mode 100644
index 0000000000..b223e040da
--- /dev/null
+++ b/docs/changelogs/1.12.x/1.12.0.md
@@ -0,0 +1,464 @@
+```md
+## How to update
+- If you haven't set up a remote, run the command `git remote add RHH https://github.com/rh-hideout/pokeemerald-expansion`.
+- Once you have your remote set up, run the command `git pull RHH expansion/1.12.0
+`.
+```
+
+## 🌋 *REFACTORS* 🌋
+📜 = Uses a migration script.
+* Minor Recoil Effect refactor by @AlexOn1ine in [#6409](https://github.com/rh-hideout/pokeemerald-expansion/pull/6409)
+* Refactor HasWeatherEffect and IsUnnerveAbilityOnOpposingSide by @AlexOn1ine in [#6441](https://github.com/rh-hideout/pokeemerald-expansion/pull/6441)
+* Refactor the function IsAbilityPreventingEscape by @AlexOn1ine in [#6439](https://github.com/rh-hideout/pokeemerald-expansion/pull/6439)
+* Unifies dynamic move category checks by @AlexOn1ine in [#6443](https://github.com/rh-hideout/pokeemerald-expansion/pull/6443)
+* Refactors faint target abilities and adds Battle Bond config by @AlexOn1ine in [#6519](https://github.com/rh-hideout/pokeemerald-expansion/pull/6519)
+* Refactor protect to allow at least 126 different types of protect eff… by @AlexOn1ine in [#6506](https://github.com/rh-hideout/pokeemerald-expansion/pull/6506)
+* Refactor / Simlify Cmd_adjustdamage and remove redundancy by @AlexOn1ine in [#6499](https://github.com/rh-hideout/pokeemerald-expansion/pull/6499)
+* Refactors Move absorb / block function calls to remove redundancy by @AlexOn1ine in [#6490](https://github.com/rh-hideout/pokeemerald-expansion/pull/6490)
+* Refactor fixed damage moves by @AlexOn1ine in [#6449](https://github.com/rh-hideout/pokeemerald-expansion/pull/6449)
+* EndTurnEffectOrder Refactor by @AlexOn1ine in [#6224](https://github.com/rh-hideout/pokeemerald-expansion/pull/6224)
+* Refactor hit escape moves to use moveend by @AlexOn1ine in [#6671](https://github.com/rh-hideout/pokeemerald-expansion/pull/6671)
+* 📜 Evolution Refactor by @khbsd, @AsparagusEduardo for everything he did, including #6530! and @AlexOn1ine for writing the migration script! in [#6556](https://github.com/rh-hideout/pokeemerald-expansion/pull/6556)
+ - make sure to back up your alcremie evolution data if you have it implemented already: pulling this will overwrite it
+* Centralizes non volatile status effect checks by @AlexOn1ine in [#6533](https://github.com/rh-hideout/pokeemerald-expansion/pull/6533)
+* Refactor battler flee and watch options + clean up by @AlexOn1ine in [#6724](https://github.com/rh-hideout/pokeemerald-expansion/pull/6724)
+* Refactor AI flags to u64 by @Pawkkie and @DizzyEggg, @AlexOn1ine, @hedara90 in [#6753](https://github.com/rh-hideout/pokeemerald-expansion/pull/6753)
+* Refactor battler message ids by @AlexOn1ine in [#6765](https://github.com/rh-hideout/pokeemerald-expansion/pull/6765)
+* Refactor stockpile resets by @AlexOn1ine in [#6810](https://github.com/rh-hideout/pokeemerald-expansion/pull/6810)
+* Move out ai structs out of BattleResources by @AlexOn1ine in [#6741](https://github.com/rh-hideout/pokeemerald-expansion/pull/6741)
+* Consolidates a bunch of battle controller functions by @Bassoonian in [#6838](https://github.com/rh-hideout/pokeemerald-expansion/pull/6838)
+* Further moveend changes (move blocks) by @AlexOn1ine in [#6820](https://github.com/rh-hideout/pokeemerald-expansion/pull/6820)
+* Added weather accuracy move flags by @AsparagusEduardo in [#6857](https://github.com/rh-hideout/pokeemerald-expansion/pull/6857)
+ - Removed `EFFECT_THUNDER`, `EFFECT_BLIZZARD` and `EFFECT_RAIN_ALWAYS_HIT` effects in favor of `alwaysHitsInRain`, `alwaysHitsInHailSnow` and `accuracy50InSun` move flags.
+* Remove non-volatile status EFFECTs by @AsparagusEduardo in [#6772](https://github.com/rh-hideout/pokeemerald-expansion/pull/6772)
+* 📜 Remove compressed palettes by @hedara90 in [#6455](https://github.com/rh-hideout/pokeemerald-expansion/pull/6455)
+ - All handling for compressed palettes has been removed, use `u16 *` for palettes instead.
+ - Has migration script to convert palettes to `u16`, `struct SpritePalette` and palette loading calls from their compressed variants.
+
+## 🧬 General 🧬
+### Added
+* Low Health Beeps Configuration by @khbsd in [#6328](https://github.com/rh-hideout/pokeemerald-expansion/pull/6328)
+* Adds SHOW_TYPES_SEEN to the B_SHOW_TYPES option by @khbsd in [#6561](https://github.com/rh-hideout/pokeemerald-expansion/pull/6561)
+ - this slightly alters how the flag `FLAG_GET_SEEN` is set, so keep that in mind if you have any functionality that relies on it being at the start of the battle.
+* Type Effectiveness Indicators when selecting moves by @agsmgmaster64 in [#6559](https://github.com/rh-hideout/pokeemerald-expansion/pull/6559)
+* FakeRtc datetime and ResetRtcScreen day increments by @cawtds in [#5695](https://github.com/rh-hideout/pokeemerald-expansion/pull/5695)
+* Battle Transition: mugshots for multibattles by @grintoul1 and @AlexOn1ine for advice on simplifying the conditions that check for 2nd opponent and presence of battle partner, and general advice/troubleshooting in [#6567](https://github.com/rh-hideout/pokeemerald-expansion/pull/6567)
+* Time menu for RTC in debug menu. by @RubyRaven6, @cawtds for RTC refactors that makes all of this easier, @HashtagMarky for helping me understand how the debug menu works, especially with destroying menus, @zetraphes, for helping with refactoring the redundant functions into a single function. and @makosear for originally getting me into the RTC hellhole in [#6634](https://github.com/rh-hideout/pokeemerald-expansion/pull/6634)
+ - In order to apply the new time the map is reloaded through The LoadMap Callback (CB2_LoadMap). As such, this will also do everything else that comes with loading map in.
+* Pokedex Plus HGSS move configs by @PCG06 in [#6687](https://github.com/rh-hideout/pokeemerald-expansion/pull/6687)
+ Adds three configs for Pokedex Plus HGSS.
+ - To sort TM moves by num.
+ - To show egg moves for evolved Pokémon.
+ - Creating a dynamic tutor moves array to use for tutor moves counting.
+* Allow different flags for Badge boost by @AsparagusEduardo and @ghoulslash, @klemniops, whose' code I was using for comparison when I found these in [#6805](https://github.com/rh-hideout/pokeemerald-expansion/pull/6805)
+* Timemacros by @RubyRaven6 in [#6696](https://github.com/rh-hideout/pokeemerald-expansion/pull/6696)
+
+### Changed
+* Rename absentBattlerFlags to absent by @AlexOn1ine in [#6432](https://github.com/rh-hideout/pokeemerald-expansion/pull/6432)
+* Removed unused debug EWRAM variables by @hedara90 in [#6468](https://github.com/rh-hideout/pokeemerald-expansion/pull/6468)
+* Removes unused Special Status members by @AlexOn1ine in [#6479](https://github.com/rh-hideout/pokeemerald-expansion/pull/6479)
+* Remove potential pitfall with saved damage for recoil moves by @AlexOn1ine in [#6485](https://github.com/rh-hideout/pokeemerald-expansion/pull/6485)
+* Add CONTRIBUTING.md and STYLEGUIDE.md by @pkmnsnfrn and @Pawkkie, @garakmon in [#6340](https://github.com/rh-hideout/pokeemerald-expansion/pull/6340)
+* Alcremie Evolution clean up follow up by @AlexOn1ine in [#6557](https://github.com/rh-hideout/pokeemerald-expansion/pull/6557)
+* Fix broken links in merge_checklist.md by @pkmnsnfrn and @grintoul1 in [#6570](https://github.com/rh-hideout/pokeemerald-expansion/pull/6570)
+* Converts some defines to enums by @Bassoonian in [#6592](https://github.com/rh-hideout/pokeemerald-expansion/pull/6592)
+* Removes vestigial EWRAM variable from debug menu. by @RubyRaven6 in [#6686](https://github.com/rh-hideout/pokeemerald-expansion/pull/6686)
+* Keep Steven Multi Debug Option at the Bottom Forever by @Pawkkie in [#6694](https://github.com/rh-hideout/pokeemerald-expansion/pull/6694)
+* Better handling of battle coords by @AsparagusEduardo and @ghoulslash, @klemniops for the original code. in [#6787](https://github.com/rh-hideout/pokeemerald-expansion/pull/6787)
+* `battle_main` enum cleanup by @AsparagusEduardo and @ghoulslash, @klemniops, whose' code I was using for comparison when I found these in [#6788](https://github.com/rh-hideout/pokeemerald-expansion/pull/6788)
+* Add missing uses of `IsBattlerAlly` by @AsparagusEduardo and @ghoulslash, @klemniops, whose' code I was using for comparison when I found these in [#6793](https://github.com/rh-hideout/pokeemerald-expansion/pull/6793)
+* Adds partyState to BattleStruct by @AlexOn1ine in [#6783](https://github.com/rh-hideout/pokeemerald-expansion/pull/6783)
+* Rename `GetPartyBattlerData` to `GetBattlerMon` by @AsparagusEduardo and @ghoulslash, @klemniops, whose' code I was using for comparison when I found these in [#6800](https://github.com/rh-hideout/pokeemerald-expansion/pull/6800)
+* Added JSON as the preferred data format by @hedara90 in [#6801](https://github.com/rh-hideout/pokeemerald-expansion/pull/6801)
+* Remove non-existent functions from header files by @Bassoonian in [#6825](https://github.com/rh-hideout/pokeemerald-expansion/pull/6825)
+* Added `IsOnPlayerSide` by @AsparagusEduardo in [#6832](https://github.com/rh-hideout/pokeemerald-expansion/pull/6832)
+* Battle TV expansion by @AsparagusEduardo in [#6826](https://github.com/rh-hideout/pokeemerald-expansion/pull/6826)
+* Prevent scaninc touching tests when `make`-ing non-test builds by @mudskipper13 in [#6812](https://github.com/rh-hideout/pokeemerald-expansion/pull/6812)
+* Reword move and ability descriptions to improve clarity by @jfb1337 in [#6861](https://github.com/rh-hideout/pokeemerald-expansion/pull/6861)
+ - Updated move and ability descriptions to increase clarity.
+* Optimized `PokemonUseItemEffects` function by @AsparagusEduardo in [#6878](https://github.com/rh-hideout/pokeemerald-expansion/pull/6878)
+* Expand trainerproc to support additional battle types by @AsparagusEduardo in [#6770](https://github.com/rh-hideout/pokeemerald-expansion/pull/6770)
+* Debug menu cleanup by @AsparagusEduardo in [#6881](https://github.com/rh-hideout/pokeemerald-expansion/pull/6881)
+* Commenting in config files to explain limits of map popups and wild AI flags by @surskitty in [#6923](https://github.com/rh-hideout/pokeemerald-expansion/pull/6923)
+* Documented usage of `createsprite gSimplePaletteBlendSpriteTemplate` by @AsparagusEduardo in [#6956](https://github.com/rh-hideout/pokeemerald-expansion/pull/6956)
+* Documented usage of `createsprite gDirtPlumeSpriteTemplate` by @AsparagusEduardo in [#6954](https://github.com/rh-hideout/pokeemerald-expansion/pull/6954)
+* Updated CONTRIBUTING.md and Merge Freeze definition by @pkmnsnfrn in [#6952](https://github.com/rh-hideout/pokeemerald-expansion/pull/6952)
+* Documented usage of `createsprite gBasicHitSplatSpriteTemplate` by @AsparagusEduardo in [#6950](https://github.com/rh-hideout/pokeemerald-expansion/pull/6950)
+* Documented usage of `createsprite gSparkElectricitySpriteTemplate` by @AsparagusEduardo in [#6955](https://github.com/rh-hideout/pokeemerald-expansion/pull/6955)
+* Documented usage of `createsprite gSlideMonToOffsetSpriteTemplate` by @AsparagusEduardo in [#6953](https://github.com/rh-hideout/pokeemerald-expansion/pull/6953)
+* Remove trailing whitespace by @AsparagusEduardo in [#6968](https://github.com/rh-hideout/pokeemerald-expansion/pull/6968)
+* Beefing up the DNS tutorial for some of the common questions/errors. by @surskitty in [#6922](https://github.com/rh-hideout/pokeemerald-expansion/pull/6922)
+* Clarifies when to use each merge type for maintainers by @pkmnsnfrn in [#6999](https://github.com/rh-hideout/pokeemerald-expansion/pull/6999)
+* Moved time constants to dedicated files by @pkmnsnfrn in [#7019](https://github.com/rh-hideout/pokeemerald-expansion/pull/7019)
+
+### Fixed
+* fix: missing break statement by @khbsd in [#6572](https://github.com/rh-hideout/pokeemerald-expansion/pull/6572)
+* Fix dynamax message by @hedara90 in [#6589](https://github.com/rh-hideout/pokeemerald-expansion/pull/6589)
+* Fix pc mon pic by @hedara90 in [#6709](https://github.com/rh-hideout/pokeemerald-expansion/pull/6709)
+* Fixed upcoming not compiling in gcc 11.4.0 by @AsparagusEduardo in [#6710](https://github.com/rh-hideout/pokeemerald-expansion/pull/6710)
+* Fix the Move Item option in the PC still expecting compressed palettes by @hedara90 in [#6739](https://github.com/rh-hideout/pokeemerald-expansion/pull/6739)
+* Fix upcoming compile by @AsparagusEduardo in [#6804](https://github.com/rh-hideout/pokeemerald-expansion/pull/6804)
+* Added missing root folder check in trainer battle type migration script by @AsparagusEduardo in [#6944](https://github.com/rh-hideout/pokeemerald-expansion/pull/6944)
+* Fixed forfeit money for `B_WHITEOUT_MONEY <= GEN_3` by @AsparagusEduardo in [#6942](https://github.com/rh-hideout/pokeemerald-expansion/pull/6942)
+* Fix UB when using time menu by @cawtds in [#7023](https://github.com/rh-hideout/pokeemerald-expansion/pull/7023)
+
+## 🗺️ Overworld 🗺️
+### Added
+* Add OW_DEFOG_FIELD_MOVE to allow players to clear overworld Fog by @pkmnsnfrn in [#6477](https://github.com/rh-hideout/pokeemerald-expansion/pull/6477)
+ This behavior is enabled by setting `OW_DEFOG_FIELD_MOVE` to `TRUE`.
+* Add Time-Based Encounters by @khbsd and @Pawkkie, @Artrios, @GriffinRichards, @ravepossum, @ghoulslash, @lhearachel probably more so tag me somewhere and ill add you! in [#6454](https://github.com/rh-hideout/pokeemerald-expansion/pull/6454)
+ - Comes with a new conversion script, `wild_encounters_to_header.py`. On my machine i timed it out to about .02s, hopefully it wont add too much to the compile time on anyone elses computers
+ - The conversion script can handle an unchanged `wild_encounters.json` just fine, but also plays nice with edited ones as far as I can tell
+ - The migration script takes one optional argument, `--copy`
+ - `--copy` will copy over all of the encounter tables (`land_mons`, `water_mons`, etc). default behavior just adds the `base_label` and if applicable, the `map`.
+* Add B_RUN_TRAINER_BATTLE - players can run from Trainer Battles by @pkmnsnfrn and @wiz1989 [wrote the original feature](https://github.com/TeamAquasHideout/pokeemerald/commit/19c0c32e3718d4fab340cf4f15f29882916a829e). in [#6456](https://github.com/rh-hideout/pokeemerald-expansion/pull/6456)
+* Integrated merrp's lighting branch (Day/Night System) by @hedara90, @AsparagusEduardo for doing most of this PR and @aarant for the original implementation and feature branch, @Greenphx9 for their help merging to current expansion. in [#6562](https://github.com/rh-hideout/pokeemerald-expansion/pull/6562)
+ - Changes from the base branch:
+ - Uses Expansion's Fake RTC and updates its tinting refresh rate alongside with it.
+ - Uses Expansion's constants (`TIME_NIGHT` instead of `TIME_OF_DAY_NIGHT`). This allows it to:
+ - Use different tinting for Morning vs Evening compared to the original branch.
+ - Use Expansion's `OW_TIMES_OF_DAY`config that allows users to set their own times by generation.
+ - Added option to disable object event shadows
+ - Added option to turn DNS on or off, `OW_ENABLE_DNS`
+ - Added option to for vanilla shadow behaviour, `OW_OBJECT_VANILLA_SHADOWS`
+ - Scripts containing consecutive `removeobject and `addobject ` needs a `delay 1` between the commands.
+ ```diff
+ removeobject MY_OBJECT
+ + delay 1
+ addobject MY_OBJECT
+ ```
+ - Changes to base Hoenn to integrate DNS can be enabled by reverting commit [a5b079d](https://github.com/rh-hideout/pokeemerald-expansion/pull/6562/commits/a5b079d833f18f66ebd53ac77f00227ae4a1f389)
+ - Other changes:
+ - Changed the BW Map Popup to update its time while active.
+* Follower NPCs (follow-me) by @Bivurnum, @ghoulslash Much of their original code is still present. and @grintoul1 Invaluable play testing and feedback. in [#6500](https://github.com/rh-hideout/pokeemerald-expansion/pull/6500)
+ - Turn any NPC into a follower.
+ - Specify a battle partner to turn all trainer battles into multi battles automatically while an NPC follower is present.
+
+### Changed
+* Add Time-Based Encounter Tutorial by @khbsd and @Pawkkie (ty for reviewing!!) in [#6568](https://github.com/rh-hideout/pokeemerald-expansion/pull/6568)
+* Remove vestigial AdvanceScript function used for testing by @RubyRaven6 in [#6664](https://github.com/rh-hideout/pokeemerald-expansion/pull/6664)
+* Rename follower npc macros for better specificity and to match documentation by @Bivurnum in [#6742](https://github.com/rh-hideout/pokeemerald-expansion/pull/6742)
+* Add follower NPC documentation by @Bivurnum in [#6704](https://github.com/rh-hideout/pokeemerald-expansion/pull/6704)
+
+### Fixed
+* Fixed DNS off config sometimes breaking palettes on map change by @hedara90 in [#6603](https://github.com/rh-hideout/pokeemerald-expansion/pull/6603)
+* Fixed objects not getting unloaded properly when event flags are set by @Bivurnum in [#6715](https://github.com/rh-hideout/pokeemerald-expansion/pull/6715)
+* Bug fix: add proper elevation handling for npc followers by @Bivurnum in [#6871](https://github.com/rh-hideout/pokeemerald-expansion/pull/6871)
+* fix: avoid unexpected data shifting by removing preproc'd array size by @khbsd in [#6916](https://github.com/rh-hideout/pokeemerald-expansion/pull/6916)
+* Fix OW_POPUP_BW_TIME_MODE burning a lot of cycles due to RTC queries. by @SBird1337 in [#6974](https://github.com/rh-hideout/pokeemerald-expansion/pull/6974)
+ - Fixed an issue that causes the game to lag in some configurations that involve `OW_POPUP_BW_TIME_MODE`.
+* Make setobjextxy work with npc followers during ON_WARP map script by @Bivurnum in [#6913](https://github.com/rh-hideout/pokeemerald-expansion/pull/6913)
+* `removeobject` and `removeobjectat` macros work properly with npc followers by @Bivurnum in [#6889](https://github.com/rh-hideout/pokeemerald-expansion/pull/6889)
+* Fixes follower NPC not changing state with player after warp by @Bivurnum in [#7009](https://github.com/rh-hideout/pokeemerald-expansion/pull/7009)
+* Fixed follower NPC changing to surf sprite when choosing not to surface from dive by @Bivurnum in [#7010](https://github.com/rh-hideout/pokeemerald-expansion/pull/7010)
+* Fix follower NPC not reappearing after Mossdeep gym warp by @Bivurnum in [#7014](https://github.com/rh-hideout/pokeemerald-expansion/pull/7014)
+* Fixed surf blob binding to invisible follower NPC on map reload by @Bivurnum in [#7013](https://github.com/rh-hideout/pokeemerald-expansion/pull/7013)
+* fix: better area mons handling, no longer duplicates `hiddenMons` field by @khbsd in [#6945](https://github.com/rh-hideout/pokeemerald-expansion/pull/6945)
+* Bug fix: setfollowernpc macro no longer runs when FNPC_ENABLE_NPC_FOLLOWERS is FALSE by @Bivurnum in [#6755](https://github.com/rh-hideout/pokeemerald-expansion/pull/6755)
+
+## 🐉 Pokémon 🐉
+### Added
+* Configuration to scale Critical Capture odds based on local Pokedex or estimated National Pokedex by @surskitty in [#6250](https://github.com/rh-hideout/pokeemerald-expansion/pull/6250)
+* Add B_ANIMATE_MON_AFTER_KO - mons animate after scoring a KO by @pkmnsnfrn and @NicoSwag [wrote the original feature](https://github.com/Pawkkie/Team-Aquas-Asset-Repo/wiki/Make-Pok%C3%A9mon-animate-after-a-KO). in [#6451](https://github.com/rh-hideout/pokeemerald-expansion/pull/6451)
+ - This can be disabled by setting `B_ANIMATE_MON_AFTER_KO` to `FALSE`.
+* Add OW_DEFOG_FIELD_MOVE to allow players to clear overworld Fog by @pkmnsnfrn in [#6477](https://github.com/rh-hideout/pokeemerald-expansion/pull/6477)
+ This behavior is enabled by setting `OW_DEFOG_FIELD_MOVE` to `TRUE`.
+* Add "Move Item" option in party menu by @AsparagusEduardo in [#6758](https://github.com/rh-hideout/pokeemerald-expansion/pull/6758)
+
+### Changed
+* Implemented Alcremie Evolution Method by @AsparagusEduardo in [#6530](https://github.com/rh-hideout/pokeemerald-expansion/pull/6530)
+* Make form change methods into enum + type checking by @Bassoonian in [#6631](https://github.com/rh-hideout/pokeemerald-expansion/pull/6631)
+* Remove hardcoded values from wild_encounter.h generation by @khbsd and @moostoet and @/Nopinou on discord for reporting bugs and dealing with my ping spam <3 in [#6640](https://github.com/rh-hideout/pokeemerald-expansion/pull/6640)
+* Evolution Refactor by @khbsd, @AsparagusEduardo for everything he did, including #6530! and @AlexOn1ine for writing the migration script! in [#6556](https://github.com/rh-hideout/pokeemerald-expansion/pull/6556)
+ - make sure to back up your alcremie evolution data if you have it implemented already: pulling this will overwrite it
+* Disable `P_TUTOR_MOVES_ARRAY` config by @PCG06 in [#6693](https://github.com/rh-hideout/pokeemerald-expansion/pull/6693)
+ - `P_TUTOR_MOVES_ARRAY` set to `FALSE` by default.
+
+### Fixed
+* Change HasTwoFramesAnimation to take into account species with 1 frame by @hedara90 in [#6655](https://github.com/rh-hideout/pokeemerald-expansion/pull/6655)
+* Fix Rage Fist evolution method by @AsparagusEduardo in [#6937](https://github.com/rh-hideout/pokeemerald-expansion/pull/6937)
+* Fixed `CreateMon` param order in `CreateFacilityMon` by @PCG06 in [#6989](https://github.com/rh-hideout/pokeemerald-expansion/pull/6989)
+
+## ⚔️ Battle General ⚔️
+### Added
+* Gen 1's Special base stat by @AsparagusEduardo in [#6330](https://github.com/rh-hideout/pokeemerald-expansion/pull/6330)
+* Add B_RUN_TRAINER_BATTLE - players can run from Trainer Battles by @pkmnsnfrn and @wiz1989 [wrote the original feature](https://github.com/TeamAquasHideout/pokeemerald/commit/19c0c32e3718d4fab340cf4f15f29882916a829e). in [#6456](https://github.com/rh-hideout/pokeemerald-expansion/pull/6456)
+* Add B_LEVEL_UP_NOTIFICATION to improve player QoL when performing multiple level ups by @pkmnsnfrn in [#4901](https://github.com/rh-hideout/pokeemerald-expansion/pull/4901)
+* "Aerilate"-esque Ability Tests and Config by @Pawkkie and @hedara90 in [#6313](https://github.com/rh-hideout/pokeemerald-expansion/pull/6313)
+ - Adds new `B_ATE_MULTIPLIER` config in `config/battle.h`
+* Gen 1 no recharge on KO by @spindrift64 in [#6869](https://github.com/rh-hideout/pokeemerald-expansion/pull/6869)
+* Add no-whiteout feature by @Bassoonian and @/Gudf in [#6795](https://github.com/rh-hideout/pokeemerald-expansion/pull/6795)
+
+### Changed
+* "no additional effect" text for status Z moves without effects by @wiz1989 in [#6368](https://github.com/rh-hideout/pokeemerald-expansion/pull/6368)
+* Configuration to make all Hail moves summon Snow or vis versa, to have only one ice weather by @surskitty in [#6149](https://github.com/rh-hideout/pokeemerald-expansion/pull/6149)
+ - Added a config to homogenize Ice weathers between Hail, Snow, or both.
+* Create move end Sheer Force by @AlexOn1ine in [#6411](https://github.com/rh-hideout/pokeemerald-expansion/pull/6411)
+* Added Dynamax/Gigantamax battle messages by @wiz1989 in [#6440](https://github.com/rh-hideout/pokeemerald-expansion/pull/6440)
+* Refactor HasWeatherEffect and IsUnnerveAbilityOnOpposingSide by @AlexOn1ine in [#6441](https://github.com/rh-hideout/pokeemerald-expansion/pull/6441)
+* Refactor the function IsAbilityPreventingEscape by @AlexOn1ine in [#6439](https://github.com/rh-hideout/pokeemerald-expansion/pull/6439)
+* Unifies dynamic move category checks by @AlexOn1ine in [#6443](https://github.com/rh-hideout/pokeemerald-expansion/pull/6443)
+* Refactors faint target abilities and adds Battle Bond config by @AlexOn1ine in [#6519](https://github.com/rh-hideout/pokeemerald-expansion/pull/6519)
+* Refactor protect to allow at least 126 different types of protect eff… by @AlexOn1ine in [#6506](https://github.com/rh-hideout/pokeemerald-expansion/pull/6506)
+* Refactor / Simlify Cmd_adjustdamage and remove redundancy by @AlexOn1ine in [#6499](https://github.com/rh-hideout/pokeemerald-expansion/pull/6499)
+* Refactors Move absorb / block function calls to remove redundancy by @AlexOn1ine in [#6490](https://github.com/rh-hideout/pokeemerald-expansion/pull/6490)
+* Refactor fixed damage moves by @AlexOn1ine in [#6449](https://github.com/rh-hideout/pokeemerald-expansion/pull/6449)
+* Turn battle string ids into enums by @Bassoonian in [#6594](https://github.com/rh-hideout/pokeemerald-expansion/pull/6594)
+* Remove redundant bit for Throat Spray by @AlexOn1ine in [#6593](https://github.com/rh-hideout/pokeemerald-expansion/pull/6593)
+* Add type checking for hold item effects by @Bassoonian in [#6619](https://github.com/rh-hideout/pokeemerald-expansion/pull/6619)
+* Adds move effect type checking by @Bassoonian in [#6618](https://github.com/rh-hideout/pokeemerald-expansion/pull/6618)
+* Refactor hit escape moves to use moveend by @AlexOn1ine in [#6671](https://github.com/rh-hideout/pokeemerald-expansion/pull/6671)
+* Fix party access in NoAliveMonsForBattlerSide by @AlexOn1ine in [#6677](https://github.com/rh-hideout/pokeemerald-expansion/pull/6677)
+* Some Me First tests plus minor clean up by @AlexOn1ine in [#6678](https://github.com/rh-hideout/pokeemerald-expansion/pull/6678)
+* Centralizes non volatile status effect checks by @AlexOn1ine in [#6533](https://github.com/rh-hideout/pokeemerald-expansion/pull/6533)
+* Use `GetPartyBattlerData` where appropiate by @AsparagusEduardo and @ghoulslash, @klemniops, whose' code I was using for comparison when I found these in [#6779](https://github.com/rh-hideout/pokeemerald-expansion/pull/6779)
+* Refactor battler message ids by @AlexOn1ine in [#6765](https://github.com/rh-hideout/pokeemerald-expansion/pull/6765)
+* General MoveEnd clean up and Fell Stinger adjustments by @AlexOn1ine in [#6674](https://github.com/rh-hideout/pokeemerald-expansion/pull/6674)
+* Adds partyState to BattleStruct by @AlexOn1ine in [#6783](https://github.com/rh-hideout/pokeemerald-expansion/pull/6783)
+* Refactor stockpile resets by @AlexOn1ine in [#6810](https://github.com/rh-hideout/pokeemerald-expansion/pull/6810)
+* Changed White Herb hold effect name by @AlexOn1ine in [#6815](https://github.com/rh-hideout/pokeemerald-expansion/pull/6815)
+* Fixes a mistake made by me by @AlexOn1ine in [#6828](https://github.com/rh-hideout/pokeemerald-expansion/pull/6828)
+* Combined type-enhancing hold effects by @AsparagusEduardo in [#6846](https://github.com/rh-hideout/pokeemerald-expansion/pull/6846)
+ - The following hold effects have been combined into `HOLD_EFFECT_TYPE_POWER`:
+ - `HOLD_EFFECT_BUG_POWER`
+ - `HOLD_EFFECT_STEEL_POWER`
+ - `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_FAIRY_POWER`
+* Removed multiple instances of hardcoded move IDs by @AsparagusEduardo in [#6856](https://github.com/rh-hideout/pokeemerald-expansion/pull/6856)
+* New animations for Mega Evolution, Primal Reversion, Ultra Burst, and Power Construct by @LinathanZel in [#6834](https://github.com/rh-hideout/pokeemerald-expansion/pull/6834)
+* Consolidates a bunch of battle controller functions by @Bassoonian in [#6838](https://github.com/rh-hideout/pokeemerald-expansion/pull/6838)
+* Further moveend changes (move blocks) by @AlexOn1ine in [#6820](https://github.com/rh-hideout/pokeemerald-expansion/pull/6820)
+* Added weather accuracy move flags by @AsparagusEduardo in [#6857](https://github.com/rh-hideout/pokeemerald-expansion/pull/6857)
+ - Removed `EFFECT_THUNDER`, `EFFECT_BLIZZARD` and `EFFECT_RAIN_ALWAYS_HIT` effects in favor of `alwaysHitsInRain`, `alwaysHitsInHailSnow` and `accuracy50InSun` move flags.
+* Consolidated HasMoveFlagX functions by @AlexOn1ine in [#6874](https://github.com/rh-hideout/pokeemerald-expansion/pull/6874)
+
+### Fixed
+* Fix declaration after label for Psywave switch by @hedara90 in [#6595](https://github.com/rh-hideout/pokeemerald-expansion/pull/6595)
+* Fix regression from EndTurnRefactor by @AlexOn1ine in [#6616](https://github.com/rh-hideout/pokeemerald-expansion/pull/6616)
+* Fixes Z and Max moves dmg reduction against side protection - upcoming by @AlexOn1ine in [#6698](https://github.com/rh-hideout/pokeemerald-expansion/pull/6698)
+* Illusion struct cleanup and many Illusion fixes by @PhallenTree in [#6798](https://github.com/rh-hideout/pokeemerald-expansion/pull/6798)
+* Fixes wrongly usage of arguments without checking effect by @AlexOn1ine in [#6859](https://github.com/rh-hideout/pokeemerald-expansion/pull/6859)
+* Fixes Magic Guard causing Wrap to end immediately by @PhallenTree in [#6876](https://github.com/rh-hideout/pokeemerald-expansion/pull/6876)
+* Mugshot Transitions 2v1 fix by @grintoul1 in [#6911](https://github.com/rh-hideout/pokeemerald-expansion/pull/6911)
+* Fixes Ice Body healing HP regardless of weather by @PhallenTree in [#6939](https://github.com/rh-hideout/pokeemerald-expansion/pull/6939)
+* Fixes global usage in super fang effect. by @AlexOn1ine in [#6941](https://github.com/rh-hideout/pokeemerald-expansion/pull/6941)
+* Fixes Knock Off/Smack Down effect on immune target/protect by @PhallenTree in [#6958](https://github.com/rh-hideout/pokeemerald-expansion/pull/6958)
+* Fixes weather anim damage being applied to the wrong mon by @AlexOn1ine in [#6973](https://github.com/rh-hideout/pokeemerald-expansion/pull/6973)
+* Fixes repeated learning of level up moves by @AlexOn1ine in [#6981](https://github.com/rh-hideout/pokeemerald-expansion/pull/6981)
+* Fixes Gen3 berry activation timing by @AlexOn1ine in [#6993](https://github.com/rh-hideout/pokeemerald-expansion/pull/6993)
+* Fix Eiscue not resetting back to Ice Face form after battle. by @DarkVexon in [#6997](https://github.com/rh-hideout/pokeemerald-expansion/pull/6997)
+* Fixes spread move fire types not defrosting all targets by @AlexOn1ine in [#6998](https://github.com/rh-hideout/pokeemerald-expansion/pull/6998)
+* Update Supersweet Syrup with eject pack fix by @AlexOn1ine in [#7015](https://github.com/rh-hideout/pokeemerald-expansion/pull/7015)
+* fix battle controller macros by @cawtds in [#7021](https://github.com/rh-hideout/pokeemerald-expansion/pull/7021)
+
+## 🤹 Moves 🤹
+### Added
+* Add B_ANIMATE_MON_AFTER_KO - mons animate after scoring a KO by @pkmnsnfrn and @NicoSwag [wrote the original feature](https://github.com/Pawkkie/Team-Aquas-Asset-Repo/wiki/Make-Pok%C3%A9mon-animate-after-a-KO). in [#6451](https://github.com/rh-hideout/pokeemerald-expansion/pull/6451)
+ - This can be disabled by setting `B_ANIMATE_MON_AFTER_KO` to `FALSE`.
+* Add OW_DEFOG_FIELD_MOVE to allow players to clear overworld Fog by @pkmnsnfrn in [#6477](https://github.com/rh-hideout/pokeemerald-expansion/pull/6477)
+ - This behavior is enabled by setting `OW_DEFOG_FIELD_MOVE` to `TRUE`.
+
+### Changed
+* Minor Recoil Effect refactor by @AlexOn1ine in [#6409](https://github.com/rh-hideout/pokeemerald-expansion/pull/6409)
+* Replaced Blue Sky background for Rock Field by @SundayMoonday in [#6516](https://github.com/rh-hideout/pokeemerald-expansion/pull/6516)
+* Use missing constants with GetBattlerSpriteCoord by @AsparagusEduardo in [#6778](https://github.com/rh-hideout/pokeemerald-expansion/pull/6778)
+* `InitSpritePosToAnimAttacker` documentation by @AsparagusEduardo and @ghoulslash, @klemniops, whose' code I was using for comparison when I found these in [#6781](https://github.com/rh-hideout/pokeemerald-expansion/pull/6781)
+* Document battler side in anim code by @AlexOn1ine in [#6780](https://github.com/rh-hideout/pokeemerald-expansion/pull/6780)
+* New animations for Mega Evolution, Primal Reversion, Ultra Burst, and Power Construct by @LinathanZel in [#6834](https://github.com/rh-hideout/pokeemerald-expansion/pull/6834)
+
+### Fixed
+* Fix to warnings pertaining to Mega Evolution and Ultra Burst RGB values by @LinathanZel in [#6883](https://github.com/rh-hideout/pokeemerald-expansion/pull/6883)
+
+## 🤖 Battle AI 🤖
+### Added
+* Improve AI's handling of player's Encore by @Pawkkie and @iriv24 in [#6305](https://github.com/rh-hideout/pokeemerald-expansion/pull/6305)
+* Switch AI will factor in player's choice lock when determining hits to KO by @Pawkkie in [#6343](https://github.com/rh-hideout/pokeemerald-expansion/pull/6343)
+* Switch AI considers Wind Rider by @innocenthedgehog in [#6391](https://github.com/rh-hideout/pokeemerald-expansion/pull/6391)
+* Fix AI using Scald / fire moves against frozen / frostbitten targets by @Pawkkie in [#6442](https://github.com/rh-hideout/pokeemerald-expansion/pull/6442)
+* Improve "all moves bad" switching by @Pawkkie and @wiz1989 in [#6453](https://github.com/rh-hideout/pokeemerald-expansion/pull/6453)
+* Fix Choice'd AI not switching if player immune to move by @Pawkkie in [#6464](https://github.com/rh-hideout/pokeemerald-expansion/pull/6464)
+* Add basic Unaware check bad move scoring by @Pawkkie in [#6524](https://github.com/rh-hideout/pokeemerald-expansion/pull/6524)
+* AI smarter status handling by @Pawkkie in [#6550](https://github.com/rh-hideout/pokeemerald-expansion/pull/6550)
+* Improve AI's defense against Focus Punch by @Pawkkie in [#6713](https://github.com/rh-hideout/pokeemerald-expansion/pull/6713)
+* Add AI_FLAG_PP_STALL_PREVENTION by @hedara90 in [#6743](https://github.com/rh-hideout/pokeemerald-expansion/pull/6743)
+ - Chance to trigger and score modifier can be changed in `include/config/ai.h` under the "AI PP Stall detection" section
+* Adjust switch AI based on move scoring by @Pawkkie and @ghoulslash, @AlexOn1ine in [#6615](https://github.com/rh-hideout/pokeemerald-expansion/pull/6615)
+ - Change `AI_BAD_SCORE_THRESHOLD` and `AI_GOOD_SCORE_THRESHOLD` to modify what `ShouldSwitchIfAllScoresBad` considers, found in `config/ai.h`
+* Add AI for Zero to Hero Palafin by @Pawkkie and @kittenchilly in [#6791](https://github.com/rh-hideout/pokeemerald-expansion/pull/6791)
+* Add AI_FLAG_PREDICT_MOVES by @Pawkkie in [#6551](https://github.com/rh-hideout/pokeemerald-expansion/pull/6551)
+ - Use AI_FLAG_PREDICT_MOVES to enable behaviour
+ - Works best when used with AI_FLAG_OMNISCIENT
+
+### Changed
+* Minor Clean up for AI_CalcDamage to remove some duplicate code by @AlexOn1ine in [#6397](https://github.com/rh-hideout/pokeemerald-expansion/pull/6397)
+* Moved some AI stuff out of the battlestruct by @hedara90 in [#6405](https://github.com/rh-hideout/pokeemerald-expansion/pull/6405)
+ - AI data in `gBattleStruct` has been moved to `gAiBattleStructData`.
+* Allow the AI to see the second hit of Parental Bond by @AlexOn1ine in [#6403](https://github.com/rh-hideout/pokeemerald-expansion/pull/6403)
+* Split ai function IsBattlerTrapped by @AlexOn1ine in [#6438](https://github.com/rh-hideout/pokeemerald-expansion/pull/6438)
+* Optimization / Clean up of AI move usability by @AlexOn1ine in [#6332](https://github.com/rh-hideout/pokeemerald-expansion/pull/6332)
+* Clean up AI code duplication and unify checks by @AlexOn1ine in [#6348](https://github.com/rh-hideout/pokeemerald-expansion/pull/6348)
+* Ability access cleanup for #6550 by @Pawkkie in [#6565](https://github.com/rh-hideout/pokeemerald-expansion/pull/6565)
+* Adjust enum AIScore by @AlexOn1ine in [#6598](https://github.com/rh-hideout/pokeemerald-expansion/pull/6598)
+* Refactor battler flee and watch options + clean up by @AlexOn1ine in [#6724](https://github.com/rh-hideout/pokeemerald-expansion/pull/6724)
+* Add AI_FLAG_PP_STALL_PREVENTION to `ai_flags.md` by @Pawkkie in [#6756](https://github.com/rh-hideout/pokeemerald-expansion/pull/6756)
+* Refactor AI flags to u64 by @Pawkkie and @DizzyEggg, @AlexOn1ine, @hedara90 in [#6753](https://github.com/rh-hideout/pokeemerald-expansion/pull/6753)
+* Move out ai structs out of BattleResources by @AlexOn1ine in [#6741](https://github.com/rh-hideout/pokeemerald-expansion/pull/6741)
+* Add prediction function by @AlexOn1ine in [#6858](https://github.com/rh-hideout/pokeemerald-expansion/pull/6858)
+* AI double battle friendly fire logic improvements by @surskitty and @Pawkkie in [#6766](https://github.com/rh-hideout/pokeemerald-expansion/pull/6766)
+* Remove non-volatile status EFFECTs by @AsparagusEduardo in [#6772](https://github.com/rh-hideout/pokeemerald-expansion/pull/6772)
+* Fix misleading name by @AlexOn1ine in [#6865](https://github.com/rh-hideout/pokeemerald-expansion/pull/6865)
+* Fix HasBattlerSideMoveWithEffect comment by @Pawkkie in [#6965](https://github.com/rh-hideout/pokeemerald-expansion/pull/6965)
+
+### Fixed
+* Fix damage roll order for AI calcs by @AlexOn1ine in [#6356](https://github.com/rh-hideout/pokeemerald-expansion/pull/6356)
+* Fix roll handling in AI damage calcs by @Pawkkie in [#6396](https://github.com/rh-hideout/pokeemerald-expansion/pull/6396)
+* fixed damage calculations in CanTargetFaintAiWithMod() by @wiz1989 in [#6446](https://github.com/rh-hideout/pokeemerald-expansion/pull/6446)
+* Fix bracket typo in AI_CheckBadMove conditional by @Pawkkie in [#6695](https://github.com/rh-hideout/pokeemerald-expansion/pull/6695)
+* Fix party data assignment by @Pawkkie in [#6712](https://github.com/rh-hideout/pokeemerald-expansion/pull/6712)
+* Fix Wonder Guard potential double switching by @Pawkkie in [#6737](https://github.com/rh-hideout/pokeemerald-expansion/pull/6737)
+* Fix roll handling in AI party damage calcs by @Pawkkie in [#6733](https://github.com/rh-hideout/pokeemerald-expansion/pull/6733)
+* Fix AI function table to match new u64 flags by @Pawkkie in [#6796](https://github.com/rh-hideout/pokeemerald-expansion/pull/6796)
+* Fix FindMonThatAbsorbsOpponentsMove not seeing Mold Breaker or choice items by @Pawkkie in [#6864](https://github.com/rh-hideout/pokeemerald-expansion/pull/6864)
+* Fix AI_FLAG_PREDICT_MOVES scoring bug by @Pawkkie and @innocenthedgehog for test in [#6867](https://github.com/rh-hideout/pokeemerald-expansion/pull/6867)
+* Switch AI considers Bulletproof ability by @innocenthedgehog in [#6872](https://github.com/rh-hideout/pokeemerald-expansion/pull/6872)
+* Fix AI boosting stats into mon with Haze by @Pawkkie in [#6894](https://github.com/rh-hideout/pokeemerald-expansion/pull/6894)
+* Fix switch AI considering non-choiced SE moves when choiced by @Pawkkie in [#6892](https://github.com/rh-hideout/pokeemerald-expansion/pull/6892)
+* Fix bad odds / defensive switchin double switch cases by @Pawkkie in [#6927](https://github.com/rh-hideout/pokeemerald-expansion/pull/6927)
+
+## 🧹 Other Cleanup 🧹
+* Moved Pokémon Jump types to gSpeciesInfo by @AsparagusEduardo in [#5602](https://github.com/rh-hideout/pokeemerald-expansion/pull/5602)
+* Change ability to abilityNum in CreateTrainerMon by @AlexOn1ine in [#6370](https://github.com/rh-hideout/pokeemerald-expansion/pull/6370)
+* Small Code clean up in GetBattlerAbility (removes duplication) by @AlexOn1ine in [#6362](https://github.com/rh-hideout/pokeemerald-expansion/pull/6362)
+* Minor Clean up for AI_CalcDamage to remove some duplicate code by @AlexOn1ine in [#6397](https://github.com/rh-hideout/pokeemerald-expansion/pull/6397)
+* Create move end Sheer Force by @AlexOn1ine in [#6411](https://github.com/rh-hideout/pokeemerald-expansion/pull/6411)
+* Rename absentBattlerFlags to absent by @AlexOn1ine in [#6432](https://github.com/rh-hideout/pokeemerald-expansion/pull/6432)
+* Split ai function IsBattlerTrapped by @AlexOn1ine in [#6438](https://github.com/rh-hideout/pokeemerald-expansion/pull/6438)
+* Optimization / Clean up of AI move usability by @AlexOn1ine in [#6332](https://github.com/rh-hideout/pokeemerald-expansion/pull/6332)
+* Clean up AI code duplication and unify checks by @AlexOn1ine in [#6348](https://github.com/rh-hideout/pokeemerald-expansion/pull/6348)
+* Removed unused debug EWRAM variables by @hedara90 in [#6468](https://github.com/rh-hideout/pokeemerald-expansion/pull/6468)
+* Removes unused Special Status members by @AlexOn1ine in [#6479](https://github.com/rh-hideout/pokeemerald-expansion/pull/6479)
+* Remove potential pitfall with saved damage for recoil moves by @AlexOn1ine in [#6485](https://github.com/rh-hideout/pokeemerald-expansion/pull/6485)
+* Update maintainer list by @AsparagusEduardo in [#6521](https://github.com/rh-hideout/pokeemerald-expansion/pull/6521)
+* Alcremie Evolution clean up follow up by @AlexOn1ine in [#6557](https://github.com/rh-hideout/pokeemerald-expansion/pull/6557)
+* Ability access cleanup for #6550 by @Pawkkie in [#6565](https://github.com/rh-hideout/pokeemerald-expansion/pull/6565)
+* Fix broken links in merge_checklist.md by @pkmnsnfrn and @grintoul1 in [#6570](https://github.com/rh-hideout/pokeemerald-expansion/pull/6570)
+* Converts some defines to enums by @Bassoonian in [#6592](https://github.com/rh-hideout/pokeemerald-expansion/pull/6592)
+* Turn battle string ids into enums by @Bassoonian in [#6594](https://github.com/rh-hideout/pokeemerald-expansion/pull/6594)
+* Remove redundant bit for Throat Spray by @AlexOn1ine in [#6593](https://github.com/rh-hideout/pokeemerald-expansion/pull/6593)
+* Adjust enum AIScore by @AlexOn1ine in [#6598](https://github.com/rh-hideout/pokeemerald-expansion/pull/6598)
+* Add type checking for hold item effects by @Bassoonian in [#6619](https://github.com/rh-hideout/pokeemerald-expansion/pull/6619)
+* Adds move effect type checking by @Bassoonian in [#6618](https://github.com/rh-hideout/pokeemerald-expansion/pull/6618)
+* Remove hardcoded values from wild_encounter.h generation by @khbsd and @moostoet and @/Nopinou on discord for reporting bugs and dealing with my ping spam <3 in [#6640](https://github.com/rh-hideout/pokeemerald-expansion/pull/6640)
+* Sky Drop clean up and tests by @AlexOn1ine in [#6218](https://github.com/rh-hideout/pokeemerald-expansion/pull/6218)
+* Remove vestigial AdvanceScript function used for testing by @RubyRaven6 in [#6664](https://github.com/rh-hideout/pokeemerald-expansion/pull/6664)
+* Fix party access in NoAliveMonsForBattlerSide by @AlexOn1ine in [#6677](https://github.com/rh-hideout/pokeemerald-expansion/pull/6677)
+* Some Me First tests plus minor clean up by @AlexOn1ine in [#6678](https://github.com/rh-hideout/pokeemerald-expansion/pull/6678)
+* Removes vestigial EWRAM variable from debug menu. by @RubyRaven6 in [#6686](https://github.com/rh-hideout/pokeemerald-expansion/pull/6686)
+* Disable `P_TUTOR_MOVES_ARRAY` config by @PCG06 in [#6693](https://github.com/rh-hideout/pokeemerald-expansion/pull/6693)
+ - `P_TUTOR_MOVES_ARRAY` set to `FALSE` by default.
+* Remove compressed palettes by @hedara90 in [#6455](https://github.com/rh-hideout/pokeemerald-expansion/pull/6455)
+ - All handling for compressed palettes has been removed, use `u16 *` for palettes instead.
+ - Has migration script to convert palettes to `u16`, `struct SpritePalette` and palette loading calls from their compressed variants.
+* Rename follower npc macros for better specificity and to match documentation by @Bivurnum in [#6742](https://github.com/rh-hideout/pokeemerald-expansion/pull/6742)
+* Use missing constants with GetBattlerSpriteCoord by @AsparagusEduardo in [#6778](https://github.com/rh-hideout/pokeemerald-expansion/pull/6778)
+* Use `GetPartyBattlerData` where appropiate by @AsparagusEduardo and @ghoulslash, @klemniops, whose' code I was using for comparison when I found these in [#6779](https://github.com/rh-hideout/pokeemerald-expansion/pull/6779)
+* `InitSpritePosToAnimAttacker` documentation by @AsparagusEduardo and @ghoulslash, @klemniops, whose' code I was using for comparison when I found these in [#6781](https://github.com/rh-hideout/pokeemerald-expansion/pull/6781)
+* General MoveEnd clean up and Fell Stinger adjustments by @AlexOn1ine in [#6674](https://github.com/rh-hideout/pokeemerald-expansion/pull/6674)
+* Better handling of battle coords by @AsparagusEduardo and @ghoulslash, @klemniops for the original code. in [#6787](https://github.com/rh-hideout/pokeemerald-expansion/pull/6787)
+* `battle_main` enum cleanup by @AsparagusEduardo and @ghoulslash, @klemniops, whose' code I was using for comparison when I found these in [#6788](https://github.com/rh-hideout/pokeemerald-expansion/pull/6788)
+* Add missing uses of `IsBattlerAlly` by @AsparagusEduardo and @ghoulslash, @klemniops, whose' code I was using for comparison when I found these in [#6793](https://github.com/rh-hideout/pokeemerald-expansion/pull/6793)
+* Rename `GetPartyBattlerData` to `GetBattlerMon` by @AsparagusEduardo and @ghoulslash, @klemniops, whose' code I was using for comparison when I found these in [#6800](https://github.com/rh-hideout/pokeemerald-expansion/pull/6800)
+* Changed White Herb hold effect name by @AlexOn1ine in [#6815](https://github.com/rh-hideout/pokeemerald-expansion/pull/6815)
+* Fixes a mistake made by me by @AlexOn1ine in [#6828](https://github.com/rh-hideout/pokeemerald-expansion/pull/6828)
+* Remove non-existent functions from header files by @Bassoonian in [#6825](https://github.com/rh-hideout/pokeemerald-expansion/pull/6825)
+* Added `IsOnPlayerSide` by @AsparagusEduardo in [#6832](https://github.com/rh-hideout/pokeemerald-expansion/pull/6832)
+* Battle TV expansion by @AsparagusEduardo in [#6826](https://github.com/rh-hideout/pokeemerald-expansion/pull/6826)
+* Removed multiple instances of hardcoded move IDs by @AsparagusEduardo in [#6856](https://github.com/rh-hideout/pokeemerald-expansion/pull/6856)
+* Add prediction function by @AlexOn1ine in [#6858](https://github.com/rh-hideout/pokeemerald-expansion/pull/6858)
+* Reword move and ability descriptions to improve clarity by @jfb1337 in [#6861](https://github.com/rh-hideout/pokeemerald-expansion/pull/6861)
+ - Updated move and ability descriptions to increase clarity.
+* Consolidated HasMoveFlagX functions by @AlexOn1ine in [#6874](https://github.com/rh-hideout/pokeemerald-expansion/pull/6874)
+* Optimized `PokemonUseItemEffects` function by @AsparagusEduardo in [#6878](https://github.com/rh-hideout/pokeemerald-expansion/pull/6878)
+* Fix misleading name by @AlexOn1ine in [#6865](https://github.com/rh-hideout/pokeemerald-expansion/pull/6865)
+* Debug menu cleanup by @AsparagusEduardo in [#6881](https://github.com/rh-hideout/pokeemerald-expansion/pull/6881)
+* Updated CONTRIBUTING.md and Merge Freeze definition by @pkmnsnfrn in [#6952](https://github.com/rh-hideout/pokeemerald-expansion/pull/6952)
+* Fix HasBattlerSideMoveWithEffect comment by @Pawkkie in [#6965](https://github.com/rh-hideout/pokeemerald-expansion/pull/6965)
+* Documented usage of `createsprite gSlideMonToOffsetSpriteTemplate` by @AsparagusEduardo in [#6953](https://github.com/rh-hideout/pokeemerald-expansion/pull/6953)
+* Remove trailing whitespace by @AsparagusEduardo in [#6968](https://github.com/rh-hideout/pokeemerald-expansion/pull/6968)
+* Moved time constants to dedicated files by @pkmnsnfrn in [#7019](https://github.com/rh-hideout/pokeemerald-expansion/pull/7019)
+
+## 🧪 Test Runner 🧪
+### Added
+* "Aerilate"-esque Ability Tests and Config by @Pawkkie and @hedara90 in [#6313](https://github.com/rh-hideout/pokeemerald-expansion/pull/6313)
+ - Adds new `B_ATE_MULTIPLIER` config in `config/battle.h`
+
+### Changed
+* Tests for checking all move animations by @hedara90 and @AsparagusEduardo wrote the original tests that I updated in [#6297](https://github.com/rh-hideout/pokeemerald-expansion/pull/6297)
+ - Set `T_SHOULD_RUN_MOVE_ANIM` to `TRUE` to run these tests, they take a long time to run.
+* Update the All Move Animations test by @hedara90 in [#6460](https://github.com/rh-hideout/pokeemerald-expansion/pull/6460)
+* Updated move animation tests by @hedara90 in [#6554](https://github.com/rh-hideout/pokeemerald-expansion/pull/6554)
+
+### Fixed
+* Fix out-of-bounds in Heal Bell Cures Entire Party test by @rayrobdod in [#7011](https://github.com/rh-hideout/pokeemerald-expansion/pull/7011)
+
+## 📚 Documentation 📚
+* Add CONTRIBUTING.md and STYLEGUIDE.md by @pkmnsnfrn and @Pawkkie, @garakmon in [#6340](https://github.com/rh-hideout/pokeemerald-expansion/pull/6340)
+* Update maintainer list by @AsparagusEduardo in [#6521](https://github.com/rh-hideout/pokeemerald-expansion/pull/6521)
+* Fix broken links in merge_checklist.md by @pkmnsnfrn and @grintoul1 in [#6570](https://github.com/rh-hideout/pokeemerald-expansion/pull/6570)
+* Turn battle string ids into enums by @Bassoonian in [#6594](https://github.com/rh-hideout/pokeemerald-expansion/pull/6594)
+* Add Time-Based Encounter Tutorial by @khbsd and @Pawkkie (ty for reviewing!!) in [#6568](https://github.com/rh-hideout/pokeemerald-expansion/pull/6568)
+* Add type checking for hold item effects by @Bassoonian in [#6619](https://github.com/rh-hideout/pokeemerald-expansion/pull/6619)
+* Adds move effect type checking by @Bassoonian in [#6618](https://github.com/rh-hideout/pokeemerald-expansion/pull/6618)
+* Make form change methods into enum + type checking by @Bassoonian in [#6631](https://github.com/rh-hideout/pokeemerald-expansion/pull/6631)
+* Add AI_FLAG_PP_STALL_PREVENTION to `ai_flags.md` by @Pawkkie in [#6756](https://github.com/rh-hideout/pokeemerald-expansion/pull/6756)
+* Document battler side in anim code by @AlexOn1ine in [#6780](https://github.com/rh-hideout/pokeemerald-expansion/pull/6780)
+* Added JSON as the preferred data format by @hedara90 in [#6801](https://github.com/rh-hideout/pokeemerald-expansion/pull/6801)
+* Commenting in config files to explain limits of map popups and wild AI flags by @surskitty in [#6923](https://github.com/rh-hideout/pokeemerald-expansion/pull/6923)
+* Documented usage of `createsprite gSimplePaletteBlendSpriteTemplate` by @AsparagusEduardo in [#6956](https://github.com/rh-hideout/pokeemerald-expansion/pull/6956)
+* Documented usage of `createsprite gDirtPlumeSpriteTemplate` by @AsparagusEduardo in [#6954](https://github.com/rh-hideout/pokeemerald-expansion/pull/6954)
+* Updated CONTRIBUTING.md and Merge Freeze definition by @pkmnsnfrn in [#6952](https://github.com/rh-hideout/pokeemerald-expansion/pull/6952)
+* Documented usage of `createsprite gBasicHitSplatSpriteTemplate` by @AsparagusEduardo in [#6950](https://github.com/rh-hideout/pokeemerald-expansion/pull/6950)
+* Documented usage of `createsprite gSparkElectricitySpriteTemplate` by @AsparagusEduardo in [#6955](https://github.com/rh-hideout/pokeemerald-expansion/pull/6955)
+* Beefing up the DNS tutorial for some of the common questions/errors. by @surskitty in [#6922](https://github.com/rh-hideout/pokeemerald-expansion/pull/6922)
+* Add follower NPC documentation by @Bivurnum in [#6704](https://github.com/rh-hideout/pokeemerald-expansion/pull/6704)
+* Clarifies when to use each merge type for maintainers by @pkmnsnfrn in [#6999](https://github.com/rh-hideout/pokeemerald-expansion/pull/6999)
+
+## 📦 Branch Synchronisation 📦
+### pret
+* 27th of May, 2025 in [#6995](https://github.com/rh-hideout/pokeemerald-expansion/pull/6995)
+ * Fix defines in MAP_NUM and MAP_GROUP by @Bassoonian in [pret#2023](https://github.com/pret/pokeemerald/pull/2023)
+ * Change metatile behaviors to enum by @pkmnsnfrn in [pret#2027](https://github.com/pret/pokeemerald/pull/2027)
+ * Move heal locations data to their associated map.json by @GriffinRichards in [pret#2034](https://github.com/pret/pokeemerald/pull/2034)
+ * Generate local IDs from map.json files by @GriffinRichards in [pret#2047](https://github.com/pret/pokeemerald/pull/2047)
+ * Generate MAPSEC constants from JSON by @GriffinRichards in [pret#2063](https://github.com/pret/pokeemerald/pull/2063)
+ * Generate heal location constants automatically by @GriffinRichards in [pret#2101](https://github.com/pret/pokeemerald/pull/2101)
+ * Update for Porymap 6 by @GriffinRichards in [pret#2141](https://github.com/pret/pokeemerald/pull/2141)
+* 29th of May, 2025 in [#7012](https://github.com/rh-hideout/pokeemerald-expansion/pull/7012)
+ * Update for Porymap 6 by @GriffinRichards in [pret#2141](https://github.com/pret/pokeemerald/pull/2141)
+
+## New Contributors
+* @SundayMoonday made their first contribution in [#6516](https://github.com/rh-hideout/pokeemerald-expansion/pull/6516)
+* @agsmgmaster64 made their first contribution in [#6559](https://github.com/rh-hideout/pokeemerald-expansion/pull/6559)
+* @grintoul1 made their first contribution in [#6567](https://github.com/rh-hideout/pokeemerald-expansion/pull/6567)
+* @LinathanZel made their first contribution in [#6834](https://github.com/rh-hideout/pokeemerald-expansion/pull/6834)
+* @mudskipper13 made their first contribution in [#6812](https://github.com/rh-hideout/pokeemerald-expansion/pull/6812)
+
+**Full Changelog**: https://github.com/rh-hideout/pokeemerald-expansion/compare/expansion/1.11.3...expansion/1.12.0
+
+
+
+
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
index 107f5a0f9f..ae3ff60b19 100644
--- a/docs/team_procedures/merge_checklist.md
+++ b/docs/team_procedures/merge_checklist.md
@@ -60,7 +60,11 @@ This should be used for all PRs _except_ when merging from either:
* `upcoming`, `master` or `pret/pokeemerald`.
## Create a merge commit
-When the branch uses a publicly available feature branch from by the community, use "Create a merge commit" to preserve history for users.
+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/dns.md b/docs/tutorials/dns.md
index 41d306c500..6fb5e92c7e 100644
--- a/docs/tutorials/dns.md
+++ b/docs/tutorials/dns.md
@@ -3,8 +3,32 @@
### 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?
+
+
+
+
+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.
+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:
@@ -18,8 +42,21 @@ on separate lines to mark those colors as being light-blended, i.e:
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.
+
+
+
+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*
+
+
+
+## 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_trainer_pic.md b/docs/tutorials/how_to_trainer_pic.md
index 78f8a717e4..beddb641e4 100644
--- a/docs/tutorials/how_to_trainer_pic.md
+++ b/docs/tutorials/how_to_trainer_pic.md
@@ -31,13 +31,13 @@ Export the palette and place into the same folder.
Sadly, just putting the image files into the graphics folder is not enough. To use the sprites we have to register them by linking the graphic files.
[src/data/graphics/trainers](https://github.com/rh-hideout/pokeemerald-expansion/blob/master/src/data/graphics/trainers.h):
```diff
-const u32 gTrainerPalette_RubySapphireBrendan[] = INCBIN_U32("graphics/trainers/palettes/ruby_sapphire_brendan.gbapal.lz");
+const u16 gTrainerPalette_RubySapphireBrendan[] = INCBIN_U16("graphics/trainers/palettes/ruby_sapphire_brendan.gbapal");
const u32 gTrainerFrontPic_RubySapphireMay[] = INCBIN_U32("graphics/trainers/front_pics/ruby_sapphire.4bpp.lz");
-const u32 gTrainerPalette_RubySapphireMay[] = INCBIN_U32("graphics/trainers/palettes/ruby_sapphire_may.gbapal.lz");
+const u16 gTrainerPalette_RubySapphireMay[] = INCBIN_U16("graphics/trainers/palettes/ruby_sapphire_may.gbapal");
+ const u32 gTrainerFrontPic_myTrainerClass[] = INCBIN_U32("graphics/trainers/front_pics/myTrainerClass.4bpp.lz");
-+ const u32 gTrainerPalette_myTrainerClass[] = INCBIN_U32("graphics/trainers/palettes/myTrainerClass.gbapal.lz");
++ const u16 gTrainerPalette_myTrainerClass[] = INCBIN_U16("graphics/trainers/palettes/myTrainerClass.gbapal");
const u8 gTrainerBackPic_Brendan[] = INCBIN_U8("graphics/trainers/back_pics/brendan.4bpp");
```
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/pokemon/bombirdier/back.png b/graphics/pokemon/bombirdier/back.png
index eb45117013..d2f321a35b 100644
Binary files a/graphics/pokemon/bombirdier/back.png and b/graphics/pokemon/bombirdier/back.png differ
diff --git a/graphics/pokemon/bombirdier/front.png b/graphics/pokemon/bombirdier/front.png
index b8aa83644b..618c5c7c9b 100644
Binary files a/graphics/pokemon/bombirdier/front.png and b/graphics/pokemon/bombirdier/front.png differ
diff --git a/graphics/pokemon/bombirdier/normal.pal b/graphics/pokemon/bombirdier/normal.pal
index 21129ad828..73f336b876 100644
--- a/graphics/pokemon/bombirdier/normal.pal
+++ b/graphics/pokemon/bombirdier/normal.pal
@@ -1,19 +1,19 @@
JASC-PAL
0100
16
-153 210 164
+153 211 165
52 41 48
+80 29 37
74 57 66
-15 15 15
-38 210 161
102 91 96
-185 170 175
-239 227 225
-147 125 133
-80 29 37
-77 74 75
-230 76 98
-255 251 255
+117 105 110
153 62 73
-167 171 167
-123 130 123
+230 76 98
+147 125 133
+180 165 170
+16 16 16
+225 215 218
+249 247 248
+0 0 0
+0 0 0
+0 0 0
diff --git a/graphics/pokemon/bombirdier/shiny.pal b/graphics/pokemon/bombirdier/shiny.pal
index 7c57659ed5..013bc938de 100644
--- a/graphics/pokemon/bombirdier/shiny.pal
+++ b/graphics/pokemon/bombirdier/shiny.pal
@@ -1,19 +1,19 @@
JASC-PAL
0100
16
-153 210 164
+153 211 165
52 41 48
+84 81 81
74 57 66
-15 15 15
-38 210 161
102 91 96
-185 170 175
-239 227 225
+186 80 100
+121 120 119
+189 184 186
147 125 133
-80 29 37
-160 74 85
-171 167 168
-255 251 255
-136 134 133
-167 171 167
-123 130 123
+180 165 170
+16 16 16
+225 215 218
+230 220 223
+0 0 0
+0 0 0
+0 0 0
diff --git a/graphics/pokemon/dipplin/back.png b/graphics/pokemon/dipplin/back.png
index d99452c70b..9fb357c7b4 100644
Binary files a/graphics/pokemon/dipplin/back.png and b/graphics/pokemon/dipplin/back.png differ
diff --git a/graphics/pokemon/dipplin/front.png b/graphics/pokemon/dipplin/front.png
index 6311f69be9..4e3cef7589 100644
Binary files a/graphics/pokemon/dipplin/front.png and b/graphics/pokemon/dipplin/front.png differ
diff --git a/graphics/pokemon/dipplin/normal.pal b/graphics/pokemon/dipplin/normal.pal
index 3c68d0216a..94e56ce1b8 100644
--- a/graphics/pokemon/dipplin/normal.pal
+++ b/graphics/pokemon/dipplin/normal.pal
@@ -1,17 +1,19 @@
JASC-PAL
0100
-14
+16
0 183 239
-43 97 14
-164 216 74
-16 16 16
-95 171 29
-241 201 80
-198 169 83
-254 254 254
101 16 12
-157 24 17
-222 81 69
-249 164 162
36 77 28
+43 97 14
+143 19 11
+189 28 16
+230 74 53
+95 171 29
75 133 61
+197 168 80
+250 136 107
+164 216 74
+16 16 16
+229 238 129
+253 253 253
+0 0 0
diff --git a/graphics/pokemon/dipplin/shiny.pal b/graphics/pokemon/dipplin/shiny.pal
index 81c9ff3c86..ef289139fe 100644
--- a/graphics/pokemon/dipplin/shiny.pal
+++ b/graphics/pokemon/dipplin/shiny.pal
@@ -1,17 +1,19 @@
JASC-PAL
0100
-14
+16
0 183 239
+128 65 0
+160 53 43
43 97 14
-164 216 74
-16 16 16
+184 93 0
+214 143 1
+255 211 22
95 171 29
-241 201 80
-198 169 83
-254 254 254
-194 80 3
-221 143 0
-255 212 22
-249 164 162
-185 77 49
255 118 66
+197 168 80
+255 250 137
+164 216 74
+16 16 16
+229 238 129
+253 253 253
+0 0 0
diff --git a/graphics/pokemon/frigibax/anim_front.png b/graphics/pokemon/frigibax/anim_front.png
deleted file mode 100644
index cfdaf7de70..0000000000
Binary files a/graphics/pokemon/frigibax/anim_front.png and /dev/null differ
diff --git a/graphics/pokemon/frigibax/back.png b/graphics/pokemon/frigibax/back.png
index d48c105e34..41b741e46d 100644
Binary files a/graphics/pokemon/frigibax/back.png and b/graphics/pokemon/frigibax/back.png differ
diff --git a/graphics/pokemon/frigibax/front.png b/graphics/pokemon/frigibax/front.png
new file mode 100644
index 0000000000..a4e3378b48
Binary files /dev/null and b/graphics/pokemon/frigibax/front.png differ
diff --git a/graphics/pokemon/frigibax/normal.pal b/graphics/pokemon/frigibax/normal.pal
index 7b65763603..ec79d21b8d 100644
--- a/graphics/pokemon/frigibax/normal.pal
+++ b/graphics/pokemon/frigibax/normal.pal
@@ -1,19 +1,19 @@
JASC-PAL
0100
16
-153 210 164
-102 104 113
-65 73 73
-170 177 183
-143 153 163
-175 155 10
-249 216 0
-222 223 222
-15 15 15
-156 151 156
-142 187 183
-194 231 233
-114 94 22
-255 181 9
-209 147 16
-118 152 148
+153 211 165
+62 66 87
+153 121 3
+196 154 0
+227 193 44
+252 215 39
+106 115 138
+145 162 173
+166 175 189
+16 16 16
+174 186 207
+214 223 232
+195 232 233
+255 255 255
+62 103 133
+46 63 92
diff --git a/graphics/pokemon/frigibax/shiny.pal b/graphics/pokemon/frigibax/shiny.pal
index 62e5c6dac1..77398cf7ad 100644
--- a/graphics/pokemon/frigibax/shiny.pal
+++ b/graphics/pokemon/frigibax/shiny.pal
@@ -1,19 +1,19 @@
JASC-PAL
0100
16
-153 210 164
-75 114 106
-52 74 64
-134 186 173
-116 161 150
-175 155 10
-249 216 0
-222 223 222
-15 15 15
-156 151 156
-142 187 183
-194 231 233
-143 103 130
-255 179 230
-255 143 219
-118 152 148
+153 211 165
+61 89 106
+151 98 104
+196 154 0
+246 201 215
+252 215 39
+92 137 147
+145 162 173
+159 184 189
+16 16 16
+174 186 207
+214 223 232
+195 232 233
+255 255 255
+62 103 133
+46 63 92
diff --git a/graphics/pokemon/great_tusk/anim_front.png b/graphics/pokemon/great_tusk/anim_front.png
deleted file mode 100644
index c4362af29c..0000000000
Binary files a/graphics/pokemon/great_tusk/anim_front.png and /dev/null differ
diff --git a/graphics/pokemon/great_tusk/back.png b/graphics/pokemon/great_tusk/back.png
index 0b7c0f6620..e89f81b6d7 100644
Binary files a/graphics/pokemon/great_tusk/back.png and b/graphics/pokemon/great_tusk/back.png differ
diff --git a/graphics/pokemon/great_tusk/front.png b/graphics/pokemon/great_tusk/front.png
new file mode 100644
index 0000000000..26c6b5cff7
Binary files /dev/null and b/graphics/pokemon/great_tusk/front.png differ
diff --git a/graphics/pokemon/great_tusk/normal.pal b/graphics/pokemon/great_tusk/normal.pal
index b5c23a1288..b91f7def1e 100644
--- a/graphics/pokemon/great_tusk/normal.pal
+++ b/graphics/pokemon/great_tusk/normal.pal
@@ -1,19 +1,19 @@
JASC-PAL
0100
16
-0 160 232
-112 24 48
-144 8 56
-232 48 120
-104 24 40
+153 211 165
+41 32 62
+109 27 27
+112 24 50
+66 55 99
+180 46 46
+184 19 73
+129 87 69
+228 77 109
+249 240 67
+118 127 157
+92 89 163
+184 168 158
16 16 16
-40 32 64
-96 88 160
-56 48 88
-120 80 64
-184 168 160
-240 240 216
-128 136 160
-168 192 216
-248 240 88
-8 8 8
+169 192 216
+238 241 218
diff --git a/graphics/pokemon/great_tusk/shiny.pal b/graphics/pokemon/great_tusk/shiny.pal
index c7449781d5..7c0d005a40 100644
--- a/graphics/pokemon/great_tusk/shiny.pal
+++ b/graphics/pokemon/great_tusk/shiny.pal
@@ -1,19 +1,19 @@
JASC-PAL
0100
16
-0 160 232
-160 104 16
-216 168 88
-248 240 152
-104 24 40
-16 16 16
-56 24 24
+153 211 165
+48 25 18
+109 27 27
+101 107 8
+85 53 42
+180 46 46
+166 175 26
+129 87 69
+229 240 58
+249 240 67
+111 152 126
128 80 64
-96 64 48
-120 80 64
-184 168 160
-240 240 216
-72 176 144
-176 240 200
-248 240 88
-8 8 8
+184 168 158
+16 16 16
+167 205 188
+238 241 218
diff --git a/graphics/pokemon/hydrapple/back.png b/graphics/pokemon/hydrapple/back.png
index f84712a508..19ffd6d199 100644
Binary files a/graphics/pokemon/hydrapple/back.png and b/graphics/pokemon/hydrapple/back.png differ
diff --git a/graphics/pokemon/hydrapple/front.png b/graphics/pokemon/hydrapple/front.png
index eecdea6d78..ca82294df1 100644
Binary files a/graphics/pokemon/hydrapple/front.png and b/graphics/pokemon/hydrapple/front.png differ
diff --git a/graphics/pokemon/hydrapple/normal.pal b/graphics/pokemon/hydrapple/normal.pal
index 6fec9a7957..b29a319b81 100644
--- a/graphics/pokemon/hydrapple/normal.pal
+++ b/graphics/pokemon/hydrapple/normal.pal
@@ -1,19 +1,19 @@
JASC-PAL
0100
16
-152 208 160
-88 56 32
+0 183 239
16 16 16
-152 24 16
-96 16 8
-32 72 24
-136 88 56
-216 80 64
-72 128 56
-248 160 160
-192 168 80
-40 96 8
-88 168 24
-160 216 72
-240 200 80
-32 88 8
+101 16 12
+36 77 28
+43 97 14
+143 19 11
+189 28 16
+194 44 58
+230 74 53
+211 34 61
+95 171 29
+250 136 107
+204 170 118
+164 216 74
+240 221 157
+125 0 0
diff --git a/graphics/pokemon/hydrapple/shiny.pal b/graphics/pokemon/hydrapple/shiny.pal
index d3d0f68f92..35e42dc80f 100644
--- a/graphics/pokemon/hydrapple/shiny.pal
+++ b/graphics/pokemon/hydrapple/shiny.pal
@@ -1,19 +1,19 @@
JASC-PAL
0100
16
-152 208 160
-88 56 32
+0 183 239
16 16 16
-216 136 0
-192 80 0
-32 72 24
-136 88 56
-248 208 16
-72 128 56
-248 232 144
-192 168 80
-40 96 8
-88 168 24
-160 216 72
-240 200 80
-32 88 8
+128 65 0
+160 53 43
+43 97 14
+184 93 0
+214 143 1
+194 44 58
+255 211 22
+29 171 38
+95 171 29
+255 250 137
+204 170 118
+164 216 74
+240 221 157
+0 83 0
diff --git a/graphics/pokemon/koraidon/back.png b/graphics/pokemon/koraidon/back.png
index fd4fb143b8..35aa59572c 100644
Binary files a/graphics/pokemon/koraidon/back.png and b/graphics/pokemon/koraidon/back.png differ
diff --git a/graphics/pokemon/koraidon/front.png b/graphics/pokemon/koraidon/front.png
index 64f07479f9..d5c6e9f148 100644
Binary files a/graphics/pokemon/koraidon/front.png and b/graphics/pokemon/koraidon/front.png differ
diff --git a/graphics/pokemon/koraidon/normal.pal b/graphics/pokemon/koraidon/normal.pal
index 151d848ab8..ad38b622a3 100644
--- a/graphics/pokemon/koraidon/normal.pal
+++ b/graphics/pokemon/koraidon/normal.pal
@@ -1,19 +1,19 @@
JASC-PAL
0100
16
-153 210 164
-51 55 62
-103 96 105
-237 235 230
-255 118 155
-6 6 6
-255 73 153
-168 150 153
-159 65 193
-18 26 80
-36 49 136
-0 97 173
-119 32 32
-255 70 57
-185 57 56
-253 214 0
+152 208 160
+95 46 56
+48 49 65
+14 28 103
+81 83 94
+255 127 39
+176 57 72
+250 80 71
+255 242 0
+24 48 177
+57 99 240
+166 91 227
+243 75 239
+186 183 171
+16 16 18
+231 230 226
diff --git a/graphics/pokemon/koraidon/shiny.pal b/graphics/pokemon/koraidon/shiny.pal
index 2d198cf721..613608d4e3 100644
--- a/graphics/pokemon/koraidon/shiny.pal
+++ b/graphics/pokemon/koraidon/shiny.pal
@@ -1,19 +1,19 @@
JASC-PAL
0100
16
-153 210 164
-51 55 62
-103 96 105
-237 235 230
-168 150 153
-6 6 6
-255 191 0
-168 150 153
-159 65 193
-18 26 80
-172 24 67
-255 11 119
-33 34 50
-82 83 113
-67 68 90
-253 214 0
+152 208 160
+28 29 42
+48 49 65
+96 30 38
+81 83 94
+255 127 39
+64 59 74
+98 98 123
+255 242 0
+172 49 49
+213 74 82
+226 127 103
+234 198 4
+186 183 171
+16 16 18
+231 230 226
diff --git a/graphics/pokemon/miraidon/back.png b/graphics/pokemon/miraidon/back.png
index 3d4b2d703a..0d2fbf5869 100644
Binary files a/graphics/pokemon/miraidon/back.png and b/graphics/pokemon/miraidon/back.png differ
diff --git a/graphics/pokemon/miraidon/front.png b/graphics/pokemon/miraidon/front.png
index 28eaa96923..8e0452c608 100644
Binary files a/graphics/pokemon/miraidon/front.png and b/graphics/pokemon/miraidon/front.png differ
diff --git a/graphics/pokemon/miraidon/normal.pal b/graphics/pokemon/miraidon/normal.pal
index 12737537e5..44085a3918 100644
--- a/graphics/pokemon/miraidon/normal.pal
+++ b/graphics/pokemon/miraidon/normal.pal
@@ -1,19 +1,19 @@
JASC-PAL
0100
16
-156 210 164
-156 153 205
-82 76 115
-49 48 106
-222 218 230
-246 255 255
-16 16 16
-123 97 164
-65 170 222
-57 64 139
-189 182 180
-255 226 115
-24 40 74
-82 68 156
-180 165 189
-57 48 74
+152 208 160
+29 29 41
+26 27 74
+70 70 100
+255 242 0
+45 47 130
+101 81 156
+32 132 191
+85 174 227
+140 138 172
+16 16 18
+158 152 202
+194 190 223
+255 255 255
+176 168 0
+0 0 0
diff --git a/graphics/pokemon/miraidon/shiny.pal b/graphics/pokemon/miraidon/shiny.pal
index 18064fb9d1..4a02150723 100644
--- a/graphics/pokemon/miraidon/shiny.pal
+++ b/graphics/pokemon/miraidon/shiny.pal
@@ -1,19 +1,19 @@
JASC-PAL
0100
16
-156 210 164
-156 153 205
-82 76 115
-57 58 62
-222 218 230
-246 255 255
-16 16 16
-200 200 200
-65 170 222
-134 134 134
-189 182 180
-255 226 115
-24 40 74
-133 133 133
-180 165 189
-57 48 74
+152 208 160
+29 29 41
+70 70 100
+70 70 100
+255 242 0
+140 138 172
+194 190 223
+32 132 191
+85 174 227
+140 138 172
+16 16 18
+158 152 202
+194 190 223
+255 255 255
+176 168 0
+0 0 0
diff --git a/graphics/pokemon/ogerpon/back.png b/graphics/pokemon/ogerpon/back.png
index 8cd9136f9e..0884029493 100644
Binary files a/graphics/pokemon/ogerpon/back.png and b/graphics/pokemon/ogerpon/back.png differ
diff --git a/graphics/pokemon/ogerpon/cornerstone/back.png b/graphics/pokemon/ogerpon/cornerstone/back.png
index ffface9d68..a81975d346 100644
Binary files a/graphics/pokemon/ogerpon/cornerstone/back.png and b/graphics/pokemon/ogerpon/cornerstone/back.png differ
diff --git a/graphics/pokemon/ogerpon/cornerstone/front.png b/graphics/pokemon/ogerpon/cornerstone/front.png
index 9b7f279238..7e12867992 100644
Binary files a/graphics/pokemon/ogerpon/cornerstone/front.png and b/graphics/pokemon/ogerpon/cornerstone/front.png differ
diff --git a/graphics/pokemon/ogerpon/cornerstone/normal.pal b/graphics/pokemon/ogerpon/cornerstone/normal.pal
index eb11f81f7e..7f29c65bde 100644
--- a/graphics/pokemon/ogerpon/cornerstone/normal.pal
+++ b/graphics/pokemon/ogerpon/cornerstone/normal.pal
@@ -1,19 +1,19 @@
JASC-PAL
0100
16
-238 230 180
-49 49 49
-148 156 148
+152 208 160
+29 29 29
+44 43 41
+64 112 54
+75 76 76
+89 96 106
+141 98 59
+91 171 49
+34 177 76
+232 157 2
+255 218 70
+0 150 176
+0 211 249
+148 152 151
16 16 16
-65 115 49
-90 172 49
-90 98 106
-41 41 41
-74 74 74
-0 213 255
-24 24 24
-0 148 180
-255 222 65
-255 255 255
-238 156 0
-139 98 57
+253 253 253
diff --git a/graphics/pokemon/ogerpon/cornerstone/shiny.pal b/graphics/pokemon/ogerpon/cornerstone/shiny.pal
index 71dd9d6e9e..91e31c9a75 100644
--- a/graphics/pokemon/ogerpon/cornerstone/shiny.pal
+++ b/graphics/pokemon/ogerpon/cornerstone/shiny.pal
@@ -1,19 +1,19 @@
JASC-PAL
0100
16
-238 230 180
-49 49 49
-148 156 148
+152 208 160
+29 29 29
+44 43 41
+64 112 54
+75 76 76
+89 96 106
+141 98 59
+91 171 49
+34 177 76
+162 205 29
+255 218 70
+0 150 176
+0 211 249
+148 152 151
16 16 16
-65 115 49
-90 172 49
-90 98 106
-41 41 41
-74 74 74
-0 213 255
-24 24 24
-0 148 180
-255 222 65
-255 255 255
-164 205 24
-139 98 57
+253 253 253
diff --git a/graphics/pokemon/ogerpon/front.png b/graphics/pokemon/ogerpon/front.png
index 6c2a769081..a15d509b2e 100644
Binary files a/graphics/pokemon/ogerpon/front.png and b/graphics/pokemon/ogerpon/front.png differ
diff --git a/graphics/pokemon/ogerpon/hearthflame/back.png b/graphics/pokemon/ogerpon/hearthflame/back.png
index 73f95efbf2..f81aef124f 100644
Binary files a/graphics/pokemon/ogerpon/hearthflame/back.png and b/graphics/pokemon/ogerpon/hearthflame/back.png differ
diff --git a/graphics/pokemon/ogerpon/hearthflame/front.png b/graphics/pokemon/ogerpon/hearthflame/front.png
index 098041cf76..29f17af77c 100644
Binary files a/graphics/pokemon/ogerpon/hearthflame/front.png and b/graphics/pokemon/ogerpon/hearthflame/front.png differ
diff --git a/graphics/pokemon/ogerpon/hearthflame/normal.pal b/graphics/pokemon/ogerpon/hearthflame/normal.pal
index 2ed9b8c050..a7a922f08b 100644
--- a/graphics/pokemon/ogerpon/hearthflame/normal.pal
+++ b/graphics/pokemon/ogerpon/hearthflame/normal.pal
@@ -1,19 +1,19 @@
JASC-PAL
0100
16
-238 230 180
+152 208 160
+41 41 41
+87 15 15
+66 115 49
74 74 74
-213 156 24
-255 222 65
-65 115 49
-90 172 49
+132 24 24
+206 57 49
+141 98 59
+90 173 49
+232 157 2
+198 156 41
+247 222 82
+0 211 249
16 16 16
-41 41 41
-238 57 41
-156 16 16
-82 8 8
255 255 255
-238 156 0
-123 106 49
-0 213 255
-139 98 57
+0 0 0
diff --git a/graphics/pokemon/ogerpon/hearthflame/shiny.pal b/graphics/pokemon/ogerpon/hearthflame/shiny.pal
index 81f60abe80..4724e3d7df 100644
--- a/graphics/pokemon/ogerpon/hearthflame/shiny.pal
+++ b/graphics/pokemon/ogerpon/hearthflame/shiny.pal
@@ -1,19 +1,19 @@
JASC-PAL
0100
16
-238 230 180
+152 208 160
+41 41 41
+87 15 15
+66 115 49
74 74 74
-213 156 24
-255 222 65
-65 115 49
-90 172 49
+132 24 24
+206 57 49
+141 98 59
+90 173 49
+162 205 29
+198 156 41
+247 222 82
+0 211 249
16 16 16
-41 41 41
-238 57 41
-156 16 16
-82 8 8
255 255 255
-164 205 24
-123 106 49
-0 213 255
-139 98 57
+0 0 0
diff --git a/graphics/pokemon/ogerpon/normal.pal b/graphics/pokemon/ogerpon/normal.pal
index f578e22342..943a658de4 100644
--- a/graphics/pokemon/ogerpon/normal.pal
+++ b/graphics/pokemon/ogerpon/normal.pal
@@ -1,19 +1,19 @@
JASC-PAL
0100
16
-238 230 180
-41 41 41
-65 115 49
-74 74 74
-8 164 156
-90 172 49
+152 208 160
+44 43 41
+64 112 54
+15 106 67
+75 76 76
+141 98 59
+97 167 27
+91 171 49
+84 182 101
+232 157 2
+219 156 94
+255 218 70
+9 164 156
16 16 16
-8 106 65
-180 222 164
-255 255 255
-98 164 24
-82 180 98
-238 156 0
-139 98 57
-255 222 65
-222 156 90
+178 216 161
+253 253 253
diff --git a/graphics/pokemon/ogerpon/shiny.pal b/graphics/pokemon/ogerpon/shiny.pal
index 02b6d9c5ae..8fb51b7d1d 100644
--- a/graphics/pokemon/ogerpon/shiny.pal
+++ b/graphics/pokemon/ogerpon/shiny.pal
@@ -1,19 +1,19 @@
JASC-PAL
0100
16
-238 230 180
-41 41 41
-65 115 49
-74 74 74
-8 164 156
-90 172 49
+152 208 160
+44 43 41
+64 112 54
+15 106 67
+75 76 76
+141 98 59
+97 167 27
+91 171 49
+84 182 101
+162 205 29
+219 156 94
+255 218 70
+9 164 156
16 16 16
-8 106 65
-180 222 164
-255 255 255
-98 164 24
-82 180 98
-164 205 24
-139 98 57
-255 222 65
-222 156 90
+178 216 161
+253 253 253
diff --git a/graphics/pokemon/ogerpon/wellspring/back.png b/graphics/pokemon/ogerpon/wellspring/back.png
index d90a8afe3e..b9346bfc65 100644
Binary files a/graphics/pokemon/ogerpon/wellspring/back.png and b/graphics/pokemon/ogerpon/wellspring/back.png differ
diff --git a/graphics/pokemon/ogerpon/wellspring/front.png b/graphics/pokemon/ogerpon/wellspring/front.png
index 556f9f2688..4a7b6cefe0 100644
Binary files a/graphics/pokemon/ogerpon/wellspring/front.png and b/graphics/pokemon/ogerpon/wellspring/front.png differ
diff --git a/graphics/pokemon/ogerpon/wellspring/normal.pal b/graphics/pokemon/ogerpon/wellspring/normal.pal
index b91b6ee255..f771734921 100644
--- a/graphics/pokemon/ogerpon/wellspring/normal.pal
+++ b/graphics/pokemon/ogerpon/wellspring/normal.pal
@@ -1,19 +1,19 @@
JASC-PAL
0100
16
-238 230 180
-65 115 49
-90 172 49
+152 208 160
+44 43 41
+64 112 54
+75 76 76
+141 98 59
+91 171 49
+232 157 2
+255 218 70
+12 65 129
+15 94 181
+3 129 229
+59 213 249
16 16 16
-8 65 131
-41 41 41
-0 131 230
-74 74 74
-139 98 57
-8 90 180
-57 213 255
-205 222 255
-238 156 0
-255 222 65
-255 255 255
-156 205 222
+156 206 220
+206 221 255
+253 253 253
diff --git a/graphics/pokemon/ogerpon/wellspring/shiny.pal b/graphics/pokemon/ogerpon/wellspring/shiny.pal
index 4f4e60c157..f284e35c37 100644
--- a/graphics/pokemon/ogerpon/wellspring/shiny.pal
+++ b/graphics/pokemon/ogerpon/wellspring/shiny.pal
@@ -1,19 +1,19 @@
JASC-PAL
0100
16
-238 230 180
-65 115 49
-90 172 49
+152 208 160
+44 43 41
+64 112 54
+75 76 76
+141 98 59
+91 171 49
+162 205 29
+255 218 70
+12 65 129
+15 94 181
+3 129 229
+59 213 249
16 16 16
-8 65 131
-41 41 41
-0 131 230
-74 74 74
-139 98 57
-8 90 180
-57 213 255
-205 222 255
-164 205 24
-255 222 65
-255 255 255
-156 205 222
+156 206 220
+206 221 255
+253 253 253
diff --git a/graphics/pokemon/oinkologne/back.png b/graphics/pokemon/oinkologne/back.png
index 81810c233f..42c6c3bf30 100644
Binary files a/graphics/pokemon/oinkologne/back.png and b/graphics/pokemon/oinkologne/back.png differ
diff --git a/graphics/pokemon/oinkologne/f/back.png b/graphics/pokemon/oinkologne/f/back.png
index d71dab3908..5d965be41a 100644
Binary files a/graphics/pokemon/oinkologne/f/back.png and b/graphics/pokemon/oinkologne/f/back.png differ
diff --git a/graphics/pokemon/oinkologne/f/front.png b/graphics/pokemon/oinkologne/f/front.png
index c3f10ed9f3..a4841d6b0f 100644
Binary files a/graphics/pokemon/oinkologne/f/front.png and b/graphics/pokemon/oinkologne/f/front.png differ
diff --git a/graphics/pokemon/oinkologne/f/normal.pal b/graphics/pokemon/oinkologne/f/normal.pal
index ba2c645dc6..2dc009715d 100644
--- a/graphics/pokemon/oinkologne/f/normal.pal
+++ b/graphics/pokemon/oinkologne/f/normal.pal
@@ -1,18 +1,19 @@
JASC-PAL
0100
-15
-152 208 160
-216 80 128
-248 160 200
-144 40 64
-248 120 144
-24 24 24
-96 64 72
-64 40 40
-248 160 8
-200 104 88
-0 0 0
-144 88 80
-248 200 8
+16
+153 211 165
+40 24 24
+88 40 40
+64 48 48
+88 64 64
+120 72 64
+128 48 48
+176 104 88
+184 80 96
+200 144 80
+184 184 184
+240 128 136
+16 16 16
+248 232 136
248 248 248
-168 160 160
+0 0 0
diff --git a/graphics/pokemon/oinkologne/f/shiny.pal b/graphics/pokemon/oinkologne/f/shiny.pal
index 9a427f2a72..ed20dc8af3 100644
--- a/graphics/pokemon/oinkologne/f/shiny.pal
+++ b/graphics/pokemon/oinkologne/f/shiny.pal
@@ -1,18 +1,19 @@
JASC-PAL
0100
-15
-152 208 160
-216 80 128
-248 160 200
-144 40 64
-248 120 144
-24 24 24
-232 192 206
-217 158 179
-248 160 8
-248 240 240
-0 0 0
-241 223 226
-248 200 8
+16
+153 211 165
+174 80 82
+120 104 112
+193 122 128
+217 164 169
+200 186 180
+128 48 48
+248 224 232
+184 80 96
+200 144 80
+184 184 184
+240 128 136
+16 16 16
+248 232 136
248 248 248
-168 160 160
+0 0 0
diff --git a/graphics/pokemon/oinkologne/front.png b/graphics/pokemon/oinkologne/front.png
index 22263f0903..d3fd42dd29 100644
Binary files a/graphics/pokemon/oinkologne/front.png and b/graphics/pokemon/oinkologne/front.png differ
diff --git a/graphics/pokemon/oinkologne/normal.pal b/graphics/pokemon/oinkologne/normal.pal
index 6487815766..b58cdc7561 100644
--- a/graphics/pokemon/oinkologne/normal.pal
+++ b/graphics/pokemon/oinkologne/normal.pal
@@ -1,19 +1,19 @@
JASC-PAL
0100
16
-156 210 164
-131 97 49
-197 80 131
+153 211 165
+32 16 40
+40 32 48
+48 40 56
+71 62 76
+64 56 80
+112 32 64
+94 86 101
+152 56 104
+200 144 80
+240 80 160
+184 184 184
16 16 16
-96 92 107
-246 214 65
-230 113 164
-59 50 72
-83 81 104
-31 33 45
-255 255 255
-43 43 43
-87 83 97
-68 61 84
-70 69 95
-131 60 90
+248 232 136
+248 248 248
+0 0 0
diff --git a/graphics/pokemon/oinkologne/shiny.pal b/graphics/pokemon/oinkologne/shiny.pal
index 8faecfbad6..12096079fb 100644
--- a/graphics/pokemon/oinkologne/shiny.pal
+++ b/graphics/pokemon/oinkologne/shiny.pal
@@ -1,19 +1,19 @@
JASC-PAL
0100
16
-156 210 164
-131 97 49
-197 80 131
+153 211 165
+120 104 112
+174 80 82
+200 186 180
+193 122 128
+248 224 232
+112 32 64
+217 164 169
+152 56 104
+200 144 80
+240 80 160
+184 184 184
16 16 16
-255 206 222
-246 214 65
-230 113 164
-249 241 242
-205 153 172
-139 89 115
-255 255 255
-57 60 65
-246 186 205
-247 233 235
-255 226 238
-131 60 90
+248 232 136
+248 248 248
+0 0 0
diff --git a/graphics/pokemon/terapagos/anim_front.png b/graphics/pokemon/terapagos/anim_front.png
deleted file mode 100644
index 4ef2270bd3..0000000000
Binary files a/graphics/pokemon/terapagos/anim_front.png and /dev/null differ
diff --git a/graphics/pokemon/terapagos/back.png b/graphics/pokemon/terapagos/back.png
index 8ec4f6c5b0..87794dd646 100644
Binary files a/graphics/pokemon/terapagos/back.png and b/graphics/pokemon/terapagos/back.png differ
diff --git a/graphics/pokemon/terapagos/front.png b/graphics/pokemon/terapagos/front.png
new file mode 100644
index 0000000000..bc24378858
Binary files /dev/null and b/graphics/pokemon/terapagos/front.png differ
diff --git a/graphics/pokemon/terapagos/normal.pal b/graphics/pokemon/terapagos/normal.pal
index 533a2e7c68..369c0e9495 100644
--- a/graphics/pokemon/terapagos/normal.pal
+++ b/graphics/pokemon/terapagos/normal.pal
@@ -1,19 +1,19 @@
JASC-PAL
0100
16
-152 208 160
-38 26 108
-49 34 133
-103 230 225
-60 76 160
-160 64 109
-228 103 181
-0 0 0
-115 162 235
-52 201 163
-76 244 204
-153 228 201
-230 244 173
-205 251 128
-63 50 194
+153 211 165
+33 33 105
+53 53 168
+62 85 198
+85 85 202
+242 56 141
+147 78 192
+43 189 156
+40 138 191
+44 211 177
+65 132 243
+165 230 153
+16 16 16
+143 143 220
+212 245 255
255 255 255
diff --git a/graphics/pokemon/terapagos/shiny.pal b/graphics/pokemon/terapagos/shiny.pal
index 1a59467bd6..a1742f9030 100644
--- a/graphics/pokemon/terapagos/shiny.pal
+++ b/graphics/pokemon/terapagos/shiny.pal
@@ -1,19 +1,19 @@
JASC-PAL
0100
16
-152 208 160
-37 114 136
-66 151 189
-151 58 210
-63 209 230
-160 64 109
-234 243 49
-0 0 0
-218 32 48
-52 201 163
-76 244 204
-153 228 201
-230 244 173
-205 251 128
-63 50 194
+153 211 165
+39 80 120
+71 161 196
+62 85 198
+70 209 236
+237 183 87
+147 78 192
+138 48 220
+191 40 81
+44 211 177
+65 132 243
+165 230 153
+16 16 16
+148 226 243
+212 245 255
255 255 255
diff --git a/graphics/pokemon/terapagos/terastal/anim_front.png b/graphics/pokemon/terapagos/terastal/anim_front.png
deleted file mode 100644
index 90a42f88b5..0000000000
Binary files a/graphics/pokemon/terapagos/terastal/anim_front.png and /dev/null differ
diff --git a/graphics/pokemon/terapagos/terastal/back.png b/graphics/pokemon/terapagos/terastal/back.png
index cfa96b0ab0..083593c6fb 100644
Binary files a/graphics/pokemon/terapagos/terastal/back.png and b/graphics/pokemon/terapagos/terastal/back.png differ
diff --git a/graphics/pokemon/terapagos/terastal/front.png b/graphics/pokemon/terapagos/terastal/front.png
new file mode 100644
index 0000000000..fbdf844767
Binary files /dev/null and b/graphics/pokemon/terapagos/terastal/front.png differ
diff --git a/graphics/pokemon/terapagos/terastal/normal.pal b/graphics/pokemon/terapagos/terastal/normal.pal
index 453f7ce70c..bb1d11f8f6 100644
--- a/graphics/pokemon/terapagos/terastal/normal.pal
+++ b/graphics/pokemon/terapagos/terastal/normal.pal
@@ -1,19 +1,19 @@
JASC-PAL
0100
16
-152 208 160
-90 53 7
-42 121 78
-70 70 70
-215 38 89
-41 45 164
-77 151 158
-78 190 242
-170 172 227
-122 228 243
-147 245 227
-252 252 182
+153 211 165
+26 26 26
+247 69 26
+255 213 45
+45 45 140
+62 85 198
+85 85 202
+242 70 153
+147 78 192
+40 138 191
+44 211 177
+65 132 243
+165 230 153
+16 16 16
+245 160 222
255 255 255
-52 66 152
-0 200 255
-197 34 91
diff --git a/graphics/pokemon/terapagos/terastal/shiny.pal b/graphics/pokemon/terapagos/terastal/shiny.pal
index f6103ac9f6..652a01f638 100644
--- a/graphics/pokemon/terapagos/terastal/shiny.pal
+++ b/graphics/pokemon/terapagos/terastal/shiny.pal
@@ -1,19 +1,19 @@
JASC-PAL
0100
16
-152 208 160
-90 53 7
-42 121 78
-70 70 70
-215 38 89
-41 45 164
-77 151 158
-78 190 242
-170 172 227
-122 228 243
-147 245 227
-252 252 182
+153 211 165
+26 26 26
+247 69 26
+255 213 45
+61 126 192
+62 85 198
+70 209 236
+237 183 87
+147 78 192
+191 40 81
+44 211 177
+65 132 243
+165 230 153
+16 16 16
+245 160 222
255 255 255
-84 215 251
-255 0 0
-244 255 0
diff --git a/include/AgbRfu_LinkManager.h b/include/AgbRfu_LinkManager.h
index 3b38b85fc9..f8f3ca72ae 100644
--- a/include/AgbRfu_LinkManager.h
+++ b/include/AgbRfu_LinkManager.h
@@ -189,9 +189,9 @@ extern struct linkManagerTag lman;
u32 rfu_LMAN_REQBN_softReset_and_checkID(void);
void rfu_LMAN_requestChangeAgbClockMaster(void);
-void rfu_LMAN_initializeRFU(INIT_PARAM *init_params);
+void rfu_LMAN_initializeRFU(INIT_PARAM *init_parameters);
u8 rfu_LMAN_establishConnection(u8 parent_child, u16 connect_period, u16 name_accept_period, u16 *acceptable_serialNo_list);
-void rfu_LMAN_stopManager(bool8 forced_stop_and_RFU_reset_flag);
+void rfu_LMAN_stopManager(u8 forced_stop_and_RFU_reset_flag);
void rfu_LMAN_setMSCCallback(void (*MSC_callback_p)(u16));
void rfu_LMAN_REQ_sendData(bool8 clockChangeFlag);
void rfu_LMAN_powerDownRFU(void);
diff --git a/include/battle.h b/include/battle.h
index b07af7ce92..1dbc8f447c 100644
--- a/include/battle.h
+++ b/include/battle.h
@@ -132,6 +132,7 @@ struct DisableStruct
u8 unburdenActive:1;
u8 neutralizingGas:1;
u8 iceFaceActivationPrevention:1; // fixes hit escape move edge case
+ u8 unnerveActivated:1; // Unnerve and As One (Unnerve part) activate only once per switch in
u8 padding:3;
};
@@ -282,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];
@@ -341,7 +343,7 @@ struct AiLogicData
u16 predictedMove[MAX_BATTLERS_COUNT];
};
-struct AI_ThinkingStruct
+struct AiThinkingStruct
{
u8 aiState;
u8 movesetIndex;
@@ -383,29 +385,21 @@ struct BattleCallbacksStack
struct StatsArray
{
u16 stats[NUM_STATS];
- u16 level;
+ u16 level:15;
+ u16 learnMultipleMoves:1;
};
struct BattleResources
{
- struct SecretBase* secretBase;
- struct BattleScriptsStack* battleScriptsStack;
- struct BattleCallbacksStack* battleCallbackStack;
- struct StatsArray* beforeLvlUp;
- struct AI_ThinkingStruct *ai;
- struct AiLogicData *aiData;
- struct AIPartyData *aiParty;
- struct BattleHistory *battleHistory;
+ struct SecretBase *secretBase;
+ struct BattleScriptsStack *battleScriptsStack;
+ struct BattleCallbacksStack *battleCallbackStack;
+ struct StatsArray *beforeLvlUp;
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
@@ -728,7 +722,6 @@ struct BattleStruct
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)
@@ -828,47 +821,42 @@ 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 'battlerId' is any of the types.
+/* 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. */
-#define _IS_BATTLER_ANY_TYPE(battlerId, ignoreTera, ...) \
- ({ \
- u32 types[3]; \
- GetBattlerTypes(battlerId, ignoreTera, types); \
+#define _IS_BATTLER_ANY_TYPE(battler, ignoreTera, ...) \
+ ({ \
+ u32 types[3]; \
+ GetBattlerTypes(battler, ignoreTera, types); \
RECURSIVELY(R_FOR_EACH(_IS_BATTLER_ANY_TYPE_HELPER, __VA_ARGS__)) FALSE; \
})
#define _IS_BATTLER_ANY_TYPE_HELPER(type) (types[0] == type) || (types[1] == type) || (types[2] == type) ||
-#define IS_BATTLER_ANY_TYPE(battlerId, ...) _IS_BATTLER_ANY_TYPE(battlerId, FALSE, __VA_ARGS__)
+#define IS_BATTLER_ANY_TYPE(battler, ...) _IS_BATTLER_ANY_TYPE(battler, FALSE, __VA_ARGS__)
#define IS_BATTLER_OF_TYPE IS_BATTLER_ANY_TYPE
-#define IS_BATTLER_ANY_BASE_TYPE(battlerId, ...) _IS_BATTLER_ANY_TYPE(battlerId, TRUE, __VA_ARGS__)
+#define IS_BATTLER_ANY_BASE_TYPE(battler, ...) _IS_BATTLER_ANY_TYPE(battler, TRUE, __VA_ARGS__)
#define IS_BATTLER_OF_BASE_TYPE IS_BATTLER_ANY_BASE_TYPE
-#define IS_BATTLER_TYPELESS(battlerId) \
- ({ \
- u32 types[3]; \
- GetBattlerTypes(battlerId, FALSE, types); \
+#define IS_BATTLER_TYPELESS(battlerId) \
+ ({ \
+ u32 types[3]; \
+ GetBattlerTypes(battlerId, FALSE, types); \
types[0] == TYPE_MYSTERY && types[1] == TYPE_MYSTERY && types[2] == TYPE_MYSTERY; \
})
-#define SET_BATTLER_TYPE(battlerId, type) \
-{ \
- gBattleMons[battlerId].types[0] = type; \
- gBattleMons[battlerId].types[1] = type; \
- gBattleMons[battlerId].types[2] = TYPE_MYSTERY; \
+#define SET_BATTLER_TYPE(battler, type) \
+{ \
+ gBattleMons[battler].types[0] = type; \
+ gBattleMons[battler].types[1] = type; \
+ gBattleMons[battler].types[2] = TYPE_MYSTERY; \
}
-#define RESTORE_BATTLER_TYPE(battlerId) \
-{ \
- gBattleMons[battlerId].types[0] = gSpeciesInfo[gBattleMons[battlerId].species].types[0]; \
- gBattleMons[battlerId].types[1] = gSpeciesInfo[gBattleMons[battlerId].species].types[1]; \
- gBattleMons[battlerId].types[2] = TYPE_MYSTERY; \
+#define RESTORE_BATTLER_TYPE(battler) \
+{ \
+ gBattleMons[battler].types[0] = gSpeciesInfo[gBattleMons[battler].species].types[0]; \
+ gBattleMons[battler].types[1] = gSpeciesInfo[gBattleMons[battler].species].types[1]; \
+ gBattleMons[battler].types[2] = TYPE_MYSTERY; \
}
#define GET_STAT_BUFF_ID(n) ((n & 7)) // first three bits 0x1, 0x2, 0x4
@@ -1108,6 +1096,10 @@ 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;
diff --git a/include/battle_ai_main.h b/include/battle_ai_main.h
index a385d7ce21..31d6437b97 100644
--- a/include/battle_ai_main.h
+++ b/include/battle_ai_main.h
@@ -60,7 +60,7 @@ enum AIScore
{ \
TestRunner_Battle_AISetScore(__FILE__, __LINE__, battler, movesetIndex, val); \
} \
- AI_THINKING_STRUCT->score[movesetIndex] = val; \
+ gAiThinkingStruct->score[movesetIndex] = val; \
} while (0) \
#define ADJUST_SCORE(val) \
@@ -68,7 +68,7 @@ enum AIScore
{ \
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) \
@@ -78,7 +78,7 @@ enum AIScore
{ \
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; \
@@ -89,7 +89,7 @@ enum AIScore
{ \
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) \
diff --git a/include/battle_ai_script_commands.h b/include/battle_ai_script_commands.h
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/include/battle_ai_util.h b/include/battle_ai_util.h
index ca3f7c1d1e..66fe8d550d 100644
--- a/include/battle_ai_util.h
+++ b/include/battle_ai_util.h
@@ -30,6 +30,14 @@ enum AIPivot
SHOULD_PIVOT,
};
+enum WeatherState
+{
+ WEATHER_INACTIVE,
+ WEATHER_ACTIVE,
+ WEATHER_ACTIVE_BUT_BLOCKED,
+ WEATHER_INACTIVE_AND_BLOCKED,
+};
+
static inline bool32 IsMoveUnusable(u32 moveIndex, u32 move, u32 moveLimitations)
{
return move == MOVE_NONE
@@ -37,6 +45,8 @@ static inline bool32 IsMoveUnusable(u32 moveIndex, u32 move, u32 moveLimitations
|| 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);
@@ -74,6 +84,7 @@ s32 AI_DecideKnownAbilityForTurn(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, enum DamageCalcContext calcContext);
bool32 CanIndexMoveGuaranteeFaintTarget(u32 battlerAtk, u32 battlerDef, u32 index);
@@ -132,7 +143,8 @@ 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, enum BattleMoveEffects moveEffect);
+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);
@@ -141,7 +153,7 @@ 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(enum BattleMoveEffects moveEffect);
-bool32 IsNonVolatileStatusMoveEffect(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);
@@ -167,10 +179,7 @@ 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(enum BattleMoveEffects effect);
@@ -194,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);
@@ -209,6 +222,8 @@ bool32 PartnerMoveIsSameAsAttacker(u32 battlerAtkPartner, u32 battlerDef, u32 mo
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);
@@ -238,6 +253,7 @@ 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);
diff --git a/include/battle_anim.h b/include/battle_anim.h
index 0075010f77..e62c170cc0 100644
--- a/include/battle_anim.h
+++ b/include/battle_anim.h
@@ -68,21 +68,21 @@ void DestroyAnimSprite(struct Sprite *sprite);
void DestroyAnimVisualTask(u8 taskId);
void DestroyAnimSoundTask(u8 taskId);
u8 GetAnimBattlerId(u8 wantedBattler);
-bool8 IsBattlerSpriteVisible(u8 battlerId);
-void MoveBattlerSpriteToBG(u8 battlerId, bool8 toBG_2, bool8 setSpriteInvisible);
+bool8 IsBattlerSpriteVisible(u8 battler);
+void MoveBattlerSpriteToBG(u8 battler, bool8 toBG_2, bool8 setSpriteInvisible);
bool8 IsContest(void);
s8 BattleAnimAdjustPanning(s8 pan);
s8 BattleAnimAdjustPanning2(s8 pan);
s16 KeepPanInRange(s16 panArg, int oldPan);
s16 CalculatePanIncrement(s16 sourcePan, s16 targetPan, s16 incrementPan);
void RelocateBattleBgPal(u16 paletteNum, u16 *dest, u32 offset, bool8 largeScreen);
-void ResetBattleAnimBg(bool8);
+void ResetBattleAnimBg(bool8 toBG2);
void LoadMoveBg(u16 bgId);
// battle_intro.c
void SetAnimBgAttribute(u8 bgId, u8 attributeId, u8 value);
void DrawBattlerOnBg(int bgId, u8 x, u8 y, u8 battlerPosition, u8 paletteId, u8 *tiles, u16 *tilemap, u16 tilesOffset);
-void HandleIntroSlide(u8 environmentId);
+void HandleIntroSlide(u8 environment);
int GetAnimBgAttribute(u8 bgId, u8 attributeId);
// battle_anim_mons.c
@@ -92,7 +92,7 @@ void AnimTranslateLinearAndFlicker_Flipped(struct Sprite *sprite);
void AnimWeatherBallUp(struct Sprite *sprite);
void AnimWeatherBallDown(struct Sprite *sprite);
void AnimSpinningSparkle(struct Sprite *sprite);
-void SetAverageBattlerPositions(u8 battlerId, bool8 respectMonPicOffsets, s16 *x, s16 *y);
+void SetAverageBattlerPositions(u8 battler, bool8 respectMonPicOffsets, s16 *x, s16 *y);
void DestroySpriteAndMatrix(struct Sprite *sprite);
void TranslateSpriteLinearFixedPoint(struct Sprite *sprite);
void InitSpritePosToAnimAttacker(struct Sprite *sprite, bool8 respectMonPicOffsets);
@@ -102,7 +102,7 @@ void StartAnimLinearTranslation(struct Sprite *sprite);
void InitAnimArcTranslation(struct Sprite *sprite);
bool8 AnimTranslateLinear(struct Sprite *sprite);
void TranslateAnimSpriteToTargetMonLocation(struct Sprite *sprite);
-u8 GetBattlerSpriteCoord2(u8 battlerId, u8 attributeId);
+u8 GetBattlerSpriteCoord2(u8 battler, u8 coordType);
void InitAnimLinearTranslationWithSpeed(struct Sprite *sprite);
u16 ArcTan2Neg(s16 x, s16 y);
void TrySetSpriteRotScale(struct Sprite *sprite, bool8 recalcCenterVector, s16 xScale, s16 yScale, u16 rotation);
@@ -111,19 +111,19 @@ void TranslateSpriteLinearAndFlicker(struct Sprite *sprite);
void SetSpriteCoordsToAnimAttackerCoords(struct Sprite *sprite);
void RunStoredCallbackWhenAnimEnds(struct Sprite *sprite);
void SetAnimSpriteInitialXOffset(struct Sprite *sprite, s16 xOffset);
-s16 GetBattlerSpriteCoordAttr(u8 battlerId, u8 attr);
-u8 GetBattlerYCoordWithElevation(u8 battlerId);
+s16 GetBattlerSpriteCoordAttr(u8 battler, u8 attr);
+u8 GetBattlerYCoordWithElevation(u8 battler);
void WaitAnimForDuration(struct Sprite *sprite);
void AnimTravelDiagonally(struct Sprite *sprite);
void InitAnimLinearTranslation(struct Sprite *sprite);
void AnimTranslateLinear_WithFollowup(struct Sprite *sprite);
-u8 GetBattlerSpriteBGPriority(u8 battlerId);
-void *LoadPointerFromVars(s16 bottom, s16 top);
-void StorePointerInVars(s16 *bottom, s16 *top, const void *ptr);
+u8 GetBattlerSpriteBGPriority(u8 battler);
+void *LoadPointerFromVars(s16 lo, s16 hi);
+void StorePointerInVars(s16 *lo, s16 *hi, const void *ptr);
void InitPrioritiesForVisibleBattlers(void);
-void GetBattleAnimBg1Data(struct BattleAnimBgData *);
-void GetBattleAnimBgData(struct BattleAnimBgData *, u32 bgId);
-u8 GetBattlerSpriteSubpriority(u8 battlerId);
+void GetBattleAnimBg1Data(struct BattleAnimBgData *out);
+void GetBattleAnimBgData(struct BattleAnimBgData *out, u32 bgId);
+u8 GetBattlerSpriteSubpriority(u8 battler);
bool8 TranslateAnimHorizontalArc(struct Sprite *sprite);
void TranslateSpriteLinearByIdFixedPoint(struct Sprite *sprite);
void ResetSpriteRotScale(u8 spriteId);
@@ -135,16 +135,16 @@ u32 GetBattlePalettesMask(bool8 battleBackground, bool8 attacker, bool8 target,
u32 GetBattleMonSpritePalettesMask(u8 playerLeft, u8 playerRight, u8 opponentLeft, u8 opponentRight);
u8 GetSpritePalIdxByBattler(u8 battler);
s16 CloneBattlerSpriteWithBlend(u8 animBattler);
-void DestroySpriteWithActiveSheet(struct Sprite *);
-u8 CreateInvisibleSpriteCopy(int, u8, int);
-void AnimLoadCompressedBgTilemapHandleContest(struct BattleAnimBgData *, const void *, bool32);
-void AnimLoadCompressedBgGfx(u32, const u32 *, u32);
-void UpdateAnimBg3ScreenSize(bool8);
-void TranslateSpriteInGrowingCircle(struct Sprite *);
+void DestroySpriteWithActiveSheet(struct Sprite *sprite);
+u8 CreateInvisibleSpriteCopy(int battler, u8 spriteId, int species);
+void AnimLoadCompressedBgTilemapHandleContest(struct BattleAnimBgData *data, const void *src, bool32 largeScreen);
+void AnimLoadCompressedBgGfx(u32 bgId, const u32 *src, u32 tilesOffset);
+void UpdateAnimBg3ScreenSize(bool8 largeScreenSize);
+void TranslateSpriteInGrowingCircle(struct Sprite *sprite);
void SetBattlerSpriteYOffsetFromYScale(u8 spriteId);
void PrepareEruptAnimTaskData(struct Task *task, u8 spriteId, s16 xScaleStart, s16 yScaleStart, s16 xScaleEnd, s16 yScaleEnd, u16 duration);
u8 UpdateEruptAnimTask(struct Task *task);
-void DestroyAnimSpriteAndDisableBlend(struct Sprite *);
+void DestroyAnimSpriteAndDisableBlend(struct Sprite *sprite);
void AnimLoadCompressedBgTilemap(u32 bgId, const void *src);
void InitAnimFastLinearTranslationWithSpeed(struct Sprite *sprite);
bool8 AnimFastTranslateLinear(struct Sprite *sprite);
@@ -154,12 +154,12 @@ void TranslateSpriteLinear(struct Sprite *sprite);
void AnimSpriteOnMonPos(struct Sprite *sprite);
void InitAnimLinearTranslationWithSpeedAndPos(struct Sprite *sprite);
void TranslateSpriteInCircle(struct Sprite *sprite);
-void SetGrayscaleOrOriginalPalette(u16 palNum, bool8 restoreOriginal);
+void SetGrayscaleOrOriginalPalette(u16 paletteNum, bool8 restoreOriginalColor);
void PrepareAffineAnimInTaskData(struct Task *task, u8 spriteId, const union AffineAnimCmd *affineAnimCmds);
bool8 RunAffineAnimFromTaskData(struct Task *task);
void AnimThrowProjectile(struct Sprite *sprite);
-void GetBgDataForTransform(struct BattleAnimBgData *dest, u8 battlerId);
-u8 CreateAdditionalMonSpriteForMoveAnim(u16 species, bool8 isBackpic, u8 id, s16 x, s16 y, u8 subpriority, u32 personality, bool8 isShiny, u32 battlerId);
+void GetBgDataForTransform(struct BattleAnimBgData *out, u8 battler);
+u8 CreateAdditionalMonSpriteForMoveAnim(u16 species, bool8 isBackpic, u8 id, s16 x, s16 y, u8 subpriority, u32 personality, bool8 isShiny, u32 battler);
void ResetSpriteRotScale_PreserveAffine(struct Sprite *sprite);
void Trade_MoveSelectedMonToTarget(struct Sprite *sprite);
void DestroyAnimVisualTaskAndDisableBlend(u8 taskId);
@@ -188,17 +188,17 @@ enum
BATTLER_COORD_ATTR_RAW_BOTTOM,
};
-u8 GetBattlerSpriteCoord(u8 battlerId, u8 attributeId);
+u8 GetBattlerSpriteCoord(u8 battler, u8 coordType);
-bool8 IsBattlerSpritePresent(u8 battlerId);
+bool8 IsBattlerSpritePresent(u8 battler);
void ClearBattleAnimBg(u32 bgId);
u8 GetAnimBattlerSpriteId(u8 wantedBattler);
u8 GetBattleBgPaletteNum(void);
-u8 GetBattlerSpriteBGPriorityRank(u8 battlerId);
-void StoreSpriteCallbackInData6(struct Sprite *sprite, void (*spriteCallback)(struct Sprite *));
+u8 GetBattlerSpriteBGPriorityRank(u8 battler);
+void StoreSpriteCallbackInData6(struct Sprite *sprite, void (*callback)(struct Sprite *));
void SetSpritePrimaryCoordsFromSecondaryCoords(struct Sprite *sprite);
-u8 GetBattlerSpriteDefault_Y(u8 battlerId);
-u8 GetSubstituteSpriteDefault_Y(u8 battlerId);
+u8 GetBattlerSpriteDefault_Y(u8 battler);
+u8 GetSubstituteSpriteDefault_Y(u8 battler);
// battle_anim_status_effects.c
#define STAT_ANIM_PLUS1 (MOVE_EFFECT_ATK_PLUS_1 - 1)
@@ -221,7 +221,7 @@ enum {
STAT_ANIM_PAL_MULTIPLE = 0xFF
};
-void LaunchStatusAnimation(u8 battlerId, u8 statusAnimId);
+void LaunchStatusAnimation(u8 battler, u8 statusAnimId);
extern const union AnimCmd *const gAnims_SpinningSparkle[];
// battle_anim_ground.c
@@ -235,18 +235,17 @@ extern const union AffineAnimCmd *const gAffineAnims_SpinningBone[];
// battle_anim_throw.c
void TryShinyAnimation(u8 battler, struct Pokemon *mon);
u8 AnimateBallOpenParticles(u8 x, u8 y, u8 priority, u8 subpriority, u8 ballId);
-u8 LaunchBallFadeMonTask(bool8 unFadeLater, u8 spritePalNum, u32 selectedPalettes, u8 ballId);
+u8 LaunchBallFadeMonTask(bool8 unfadeLater, u8 spritePalNum, u32 selectedPalettes, u8 ballId);
bool32 IsCriticalCapture(void);
-
// battle_anim_utility_funcs.c
-void InitStatsChangeAnimation(u8);
-void StartMonScrollingBgMask(u8 taskId, int unused, u16 scrollSpeed, u8 battler, bool8 includePartner, u8 numFadeSteps, u8 fadeStepDelay, u8 duration, const u32 *gfx, const u32 *tilemap, const u16 *palette);
+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 u16 *palette);
// battle_anim_effects_1.c
void AnimFalseSwipeSlice_Step3(struct Sprite *);
void SetSpriteNextToMonHead(u8 battler, struct Sprite *sprite);
void AnimMoveTwisterParticle(struct Sprite *sprite);
-void AnimParticleBurst(struct Sprite *);
+void AnimParticleBurst(struct Sprite *sprite);
void AnimPowerAbsorptionOrb(struct Sprite *sprite);
void AnimNeedleArmSpike(struct Sprite *);
void AnimTask_CompressTargetHorizontally(u8 taskId);
@@ -382,9 +381,9 @@ void AnimPsychoBoost(struct Sprite *sprite);
// battle_anim_smokescreen.c
u8 SmokescreenImpact(s16 x, s16 y, bool8 persist);
-u32 UnpackSelectedBattlePalettes(s16);
+u32 UnpackSelectedBattlePalettes(s16 selector);
-u8 GetBattlerSpriteFinal_Y(u8, u16, u8);
+u8 GetBattlerSpriteFinal_Y(u8 battler, u16 species, bool8 a3);
extern const struct OamData gOamData_AffineOff_ObjNormal_8x16;
extern const struct OamData gOamData_AffineNormal_ObjBlend_16x16;
@@ -555,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 1afe471387..64c0239561 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_controllers.h b/include/battle_controllers.h
index a338e8707a..2ce28ca609 100644
--- a/include/battle_controllers.h
+++ b/include/battle_controllers.h
@@ -64,11 +64,87 @@ enum {
REQUEST_TOUGH_RIBBON_BATTLE,
};
+// Accessors for gBattleControllerExecFlags.
+//
+// These are provided for documentation purposes, to make the battle
+// controller internals and the link communication internals more
+// legible. Several of these have functions that you should call
+// (e.g. MarkBattlerForControllerExec) instead of using these macros
+// directly.
+
+static inline void MarkBattleControllerActiveOnLocal(u32 battler)
+{
+ gBattleControllerExecFlags |= (1u << battler);
+}
+
+static inline void MarkBattleControllerIdleOnLocal(u32 battler)
+{
+ gBattleControllerExecFlags &= ~(1u << battler);
+}
+
+static inline bool32 IsBattleControllerActiveOnLocal(u32 battler)
+{
+ return gBattleControllerExecFlags & (1u << battler);
+}
+
+static inline void MarkBattleControllerMessageOutboundOverLink(u32 battler)
+{
+ gBattleControllerExecFlags |= ((1u << battler) << (32 - MAX_BATTLERS_COUNT));
+}
+
+static inline void MarkBattleControllerMessageSynchronizedOverLink(u32 battler)
+{
+ gBattleControllerExecFlags &= ~((1 << 28) << (battler));
+}
+
+static inline bool32 IsBattleControllerMessageSynchronizedOverLink(u32 battler)
+{
+ return gBattleControllerExecFlags & (1u << (battler + 28));
+}
+
+static inline void MarkBattleControllerActiveForPlayer(u32 battler, u32 playerId)
+{
+ gBattleControllerExecFlags |= ((1u << battler) << ((playerId) << 2));
+}
+
+static inline void MarkBattleControllerIdleForPlayer(u32 battler, u32 playerId)
+{
+ gBattleControllerExecFlags &= ~((1u << battler) << ((playerId) * 4));
+}
+
+static inline bool32 IsBattleControllerActiveForPlayer(u32 battler, u32 playerId)
+{
+ return gBattleControllerExecFlags & ((1u << battler) << ((playerId) * 4));
+}
+
+// This actually checks if a specific controller is active on any player or if
+// *any* controller is pending sync over link communications, but the macro name
+// can only be so specific before it just gets ridiculous.
+static inline bool32 IsBattleControllerActiveOrPendingSyncAnywhere(u32 battler)
+{
+ return gBattleControllerExecFlags & (
+ (1u << battler)
+ | (0xF << 28)
+ | (1u << battler << 4)
+ | (1u << battler << 8)
+ | (1u << battler << 12));
+}
+
// Special arguments for Battle Controller functions.
-enum { // Values given to the emit functions to choose gBattleBufferA or gBattleBufferB
- BUFFER_A,
- BUFFER_B
+enum {
+ // For commands sent from the core battle engine to a controller.
+ B_COMM_TO_CONTROLLER, // gBattleBufferA
+
+ // For replies sent from a controller to the core battle engine.
+ B_COMM_TO_ENGINE, // gBattleBufferB
+
+ // During local play, a controller must directly mark itself as
+ // inactive when it's done processing, whether or not it sends
+ // a reply. During multiplayer, it must NOT directly mark itself
+ // as inactive, but instead send one of these, with the player's
+ // multiplayer ID as data.
+ B_COMM_CONTROLLER_IS_DONE
};
enum {
@@ -237,11 +313,11 @@ void BtlController_EmitPlayFanfareOrBGM(u32 battler, u32 bufferId, u16 songId, b
void BtlController_EmitFaintingCry(u32 battler, u32 bufferId);
void BtlController_EmitIntroSlide(u32 battler, u32 bufferId, u8 terrainId);
void BtlController_EmitIntroTrainerBallThrow(u32 battler, u32 bufferId);
-void BtlController_EmitDrawPartyStatusSummary(u32 battler, u32 bufferId, struct HpAndStatus* hpAndStatus, u8 flags);
+void BtlController_EmitDrawPartyStatusSummary(u32 battler, u32 bufferId, struct HpAndStatus *hpAndStatus, u8 flags);
void BtlController_EmitHidePartyStatusSummary(u32 battler, u32 bufferId);
void BtlController_EmitEndBounceEffect(u32 battler, u32 bufferId);
void BtlController_EmitSpriteInvisibility(u32 battler, u32 bufferId, bool8 isInvisible);
-void BtlController_EmitBattleAnimation(u32 battler, u32 bufferId, u8 animationId, struct DisableStruct* disableStructPtr, u16 argument);
+void BtlController_EmitBattleAnimation(u32 battler, u32 bufferId, u8 animationId, struct DisableStruct *disableStructPtr, u16 argument);
void BtlController_EmitLinkStandbyMsg(u32 battler, u32 bufferId, u8 mode, bool32 record);
void BtlController_EmitResetActionMoveSelection(u32 battler, u32 bufferId, u8 caseId);
void BtlController_EmitEndLinkBattle(u32 battler, u32 bufferId, u8 battleOutcome);
@@ -297,8 +373,8 @@ u32 LinkPlayerGetTrainerPicId(u32 multiplayerId);
void CB2_SetUpReshowBattleScreenAfterMenu(void);
void CB2_SetUpReshowBattleScreenAfterMenu2(void);
void Task_PlayerController_RestoreBgmAfterCry(u8 taskId);
-void ActionSelectionCreateCursorAt(u8 cursorPos, u8 unused);
-void ActionSelectionDestroyCursorAt(u8 cursorPos);
+void ActionSelectionCreateCursorAt(u8 cursorPosition, u8 baseTileNum);
+void ActionSelectionDestroyCursorAt(u8 cursorPosition);
void InitMoveSelectionsVarsAndStrings(u32 battler);
void MoveSelectionCreateCursorAt(u8 cursorPos, u8 arg1);
void MoveSelectionDestroyCursorAt(u8 cursorPosition);
@@ -336,4 +412,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_gfx_sfx_util.h b/include/battle_gfx_sfx_util.h
index d84af67f35..c2cc901171 100644
--- a/include/battle_gfx_sfx_util.h
+++ b/include/battle_gfx_sfx_util.h
@@ -22,7 +22,7 @@ bool8 BattleInitAllSprites(u8 *state1, u8 *battler);
void ClearSpritesHealthboxAnimData(void);
void CopyAllBattleSpritesInvisibilities(void);
void CopyBattleSpriteInvisibility(u8 battler);
-void HandleSpeciesGfxDataChange(u8 attacker, u8 target, bool32 megaEvo, bool8 trackEnemyPersonality);
+void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool32 megaEvo, bool8 trackEnemyPersonality);
void BattleLoadSubstituteOrMonSpriteGfx(u8 battler, bool8 loadMonSprite);
void LoadBattleMonGfxAndAnimate(u8 battler, bool8 loadMonSprite, u8 spriteId);
void TrySetBehindSubstituteSpriteBit(u8 battler, u16 move);
diff --git a/include/battle_interface.h b/include/battle_interface.h
index dc3348cfba..5bc1e10aa7 100644
--- a/include/battle_interface.h
+++ b/include/battle_interface.h
@@ -111,10 +111,10 @@ enum
enum BattleCoordTypes GetBattlerCoordsIndex(u32 battler);
u8 CreateBattlerHealthboxSprites(u8 battler);
u8 CreateSafariPlayerHealthboxSprites(void);
-void SetBattleBarStruct(u8 battler, u8 healthboxSpriteId, s32 maxVal, s32 currVal, s32 receivedValue);
+void SetBattleBarStruct(u8 battler, u8 healthboxSpriteId, s32 maxVal, s32 oldVal, s32 receivedValue);
void SetHealthboxSpriteInvisible(u8 healthboxSpriteId);
void SetHealthboxSpriteVisible(u8 healthboxSpriteId);
-void DummyBattleInterfaceFunc(u8 healthboxSpriteId, bool8 isDoubleBattleBankOnly);
+void DummyBattleInterfaceFunc(u8 healthboxSpriteId, bool8 isDoubleBattleBattlerOnly);
void UpdateOamPriorityInAllHealthboxes(u8 priority, bool32 hideHpBoxes);
void InitBattlerHealthboxCoords(u8 battler);
void GetBattlerHealthboxCoords(u8 battler, s16 *x, s16 *y);
diff --git a/include/battle_main.h b/include/battle_main.h
index 064ca705d1..42c2dc2b32 100644
--- a/include/battle_main.h
+++ b/include/battle_main.h
@@ -71,7 +71,7 @@ void SpriteCB_VsLetterDummy(struct Sprite *sprite);
void SpriteCB_VsLetterInit(struct Sprite *sprite);
void CB2_InitEndLinkBattle(void);
u32 GetBattleBgTemplateData(u8 arrayId, u8 caseId);
-u32 GetBattleWindowTemplatePixelWidth(u32 setId, u32 tableId);
+u32 GetBattleWindowTemplatePixelWidth(u32 windowsType, u32 tableId);
void SpriteCB_WildMon(struct Sprite *sprite);
void SpriteCallbackDummy_2(struct Sprite *sprite);
void SpriteCB_FaintOpponentMon(struct Sprite *sprite);
@@ -93,7 +93,7 @@ const u8* FaintClearSetData(u32 battler);
void BattleTurnPassed(void);
u8 IsRunningFromBattleImpossible(u32 battler);
void SwitchTwoBattlersInParty(u32 battler, u32 battler2);
-void SwitchPartyOrder(u32 battlerId);
+void SwitchPartyOrder(u32 battler);
void SwapTurnOrder(u8 id1, u8 id2);
u32 GetBattlerTotalSpeedStatArgs(u32 battler, u32 ability, enum ItemHoldEffect holdEffect);
u32 GetBattlerTotalSpeedStat(u32 battler);
@@ -106,7 +106,7 @@ s32 GetWhichBattlerFaster(u32 battler1, u32 battler2, bool32 ignoreChosenMoves);
void RunBattleScriptCommands_PopCallbacksStack(void);
void RunBattleScriptCommands(void);
void SpecialStatusesClear(void);
-u32 GetDynamicMoveType(struct Pokemon *mon, u32 move, u32 battler, u8 *ateBoost);
+u32 GetDynamicMoveType(struct Pokemon *mon, u32 move, u32 battler, enum MonState monInBattle);
void SetTypeBeforeUsingMove(u32 move, u32 battlerAtk);
bool32 IsWildMonSmart(void);
u8 CreateNPCTrainerPartyFromTrainer(struct Pokemon *party, const struct Trainer *trainer, bool32 firstTrainer, u32 battleTypeFlags);
diff --git a/include/battle_pyramid.h b/include/battle_pyramid.h
index 62320358b6..ec80fdeed3 100644
--- a/include/battle_pyramid.h
+++ b/include/battle_pyramid.h
@@ -15,7 +15,7 @@ void CopyPyramidTrainerSpeechBefore(u16 trainerId);
void CopyPyramidTrainerWinSpeech(u16 trainerId);
void CopyPyramidTrainerLoseSpeech(u16 trainerId);
u8 GetTrainerEncounterMusicIdInBattlePyramid(u16 trainerId);
-void GenerateBattlePyramidFloorLayout(u16 *mapArg, bool8 setPlayerPosition);
+void GenerateBattlePyramidFloorLayout(u16 *backupMapData, bool8 setPlayerPosition);
void LoadBattlePyramidObjectEventTemplates(void);
void LoadBattlePyramidFloorObjectEventScripts(void);
u8 GetNumBattlePyramidObjectEvents(void);
diff --git a/include/battle_records.h b/include/battle_records.h
index 88ff6adc96..fe71570389 100644
--- a/include/battle_records.h
+++ b/include/battle_records.h
@@ -4,7 +4,7 @@
extern u8 gRecordsWindowId;
void ClearPlayerLinkBattleRecords(void);
-void UpdatePlayerLinkBattleRecords(s32 battlerId);
+void UpdatePlayerLinkBattleRecords(s32 battler);
void ShowLinkBattleRecords(void);
void RemoveRecordsWindow(void);
void ShowTrainerHillRecords(void);
diff --git a/include/battle_script_commands.h b/include/battle_script_commands.h
index 7f5d2caa08..c0d47436fd 100644
--- a/include/battle_script_commands.h
+++ b/include/battle_script_commands.h
@@ -26,7 +26,7 @@ s32 CalcCritChanceStage(u32 battlerAtk, u32 battlerDef, u32 move, bool32 recordA
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 battlerId);
+u8 GetBattlerTurnOrderNum(u8 battler);
bool32 NoAliveMonsForBattlerSide(u32 battler);
bool32 NoAliveMonsForPlayer(void);
bool32 NoAliveMonsForEitherParty(void);
@@ -36,7 +36,7 @@ void BattleDestroyYesNoCursorAt(u8 cursorPosition);
void BattleCreateYesNoCursorAt(u8 cursorPosition);
void BufferMoveToLearnIntoBattleTextBuff2(void);
void HandleBattleWindow(u8 xStart, u8 yStart, u8 xEnd, u8 yEnd, u8 flags);
-bool8 UproarWakeUpCheck(u8 battlerId);
+bool8 UproarWakeUpCheck(u8 battler);
bool32 DoesSubstituteBlockMove(u32 battlerAtk, u32 battlerDef, u32 move);
bool32 DoesDisguiseBlockMove(u32 battler, u32 move);
bool32 CanUseLastResort(u8 battlerId);
@@ -60,7 +60,7 @@ void SaveBattlerAttacker(u32 battler);
bool32 CanBurnHitThaw(u16 move);
void SetNonVolatileStatusCondition(u32 target, enum MoveEffects effect);
-extern void (* const gBattleScriptingCommandsTable[])(void);
+extern void (*const gBattleScriptingCommandsTable[])(void);
extern const struct StatFractions gAccuracyStageRatios[];
#endif // GUARD_BATTLE_SCRIPT_COMMANDS_H
diff --git a/include/battle_scripts.h b/include/battle_scripts.h
index 03f3d30730..ac4d08bc84 100644
--- a/include/battle_scripts.h
+++ b/include/battle_scripts.h
@@ -101,6 +101,7 @@ 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[];
@@ -235,8 +236,8 @@ extern const u8 BattleScript_SelectingNotAllowedMoveChoiceItemInPalace[];
extern const u8 BattleScript_HangedOnMsg[];
extern const u8 BattleScript_BerryConfuseHealEnd2[];
extern const u8 BattleScript_BerryConfuseHealRet[];
-extern const u8 BattleScript_BerryStatRaiseEnd2[];
-extern const u8 BattleScript_BerryStatRaiseRet[];
+extern const u8 BattleScript_ConsumableStatRaiseEnd2[];
+extern const u8 BattleScript_ConsumableStatRaiseRet[];
extern const u8 BattleScript_BerryFocusEnergyRet[];
extern const u8 BattleScript_BerryFocusEnergyEnd2[];
extern const u8 BattleScript_ActionSelectionItemsCantBeUsed[];
@@ -491,7 +492,6 @@ extern const u8 BattleScript_ShellTrapSetUp[];
extern const u8 BattleScript_StealthRockActivates[];
extern const u8 BattleScript_CouldntFullyProtect[];
extern const u8 BattleScript_MoveEffectStockpileWoreOff[];
-extern const u8 BattleScript_StealthRockActivates[];
extern const u8 BattleScript_SpikesActivates[];
extern const u8 BattleScript_BerserkGeneRet[];
extern const u8 BattleScript_BerserkGeneRetEnd2[];
@@ -519,6 +519,7 @@ 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[];
@@ -823,7 +824,7 @@ extern const u8 BattleScript_MoveEffectEerieSpell[];
extern const u8 BattleScript_EffectJungleHealing[];
extern const u8 BattleScript_EffectCoaching[];
extern const u8 BattleScript_EffectDecorate[];
-extern const u8 BattleScript_EffectRecoilHP25[];
+extern const u8 BattleScript_EffectStruggle[];
extern const u8 BattleScript_EffectStuffCheeks[];
extern const u8 BattleScript_MoveEffectLightScreen[];
extern const u8 BattleScript_MoveEffectReflect[];
diff --git a/include/battle_tv.h b/include/battle_tv.h
index 94b3cd92e5..8f6c5a182f 100644
--- a/include/battle_tv.h
+++ b/include/battle_tv.h
@@ -6,6 +6,6 @@ void BattleTv_SetDataBasedOnMove(u16 move, u16 weatherFlags, struct DisableStruc
void BattleTv_SetDataBasedOnAnimation(u8 animationId);
void TryPutLinkBattleTvShowOnAir(void);
void BattleTv_ClearExplosionFaintCause(void);
-u8 GetBattlerMoveSlotId(u8 battlerId, u16 moveId);
+u8 GetBattlerMoveSlotId(u8 battler, u16 move);
#endif // GUARD_BATTLE_TV_H
diff --git a/include/battle_util.h b/include/battle_util.h
index 18811ca4a5..c0782c560b 100644
--- a/include/battle_util.h
+++ b/include/battle_util.h
@@ -235,7 +235,7 @@ bool32 HandleFaintedMonActions(void);
void TryClearRageAndFuryCutter(void);
u32 AtkCanceller_MoveSuccessOrder(void);
void SetAtkCancellerForCalledMove(void);
-bool32 HasNoMonsToSwitch(u32 battler, u8 r1, u8 r2);
+bool32 HasNoMonsToSwitch(u32 battler, u8 partyIdBattlerOn1, u8 partyIdBattlerOn2);
bool32 TryChangeBattleWeather(u32 battler, u32 battleWeatherId, bool32 viaAbility);
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);
@@ -384,5 +384,6 @@ u32 RestoreWhiteHerbStats(u32 battler);
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/berry.h b/include/berry.h
index 311207989c..4aad7daa68 100644
--- a/include/berry.h
+++ b/include/berry.h
@@ -10,10 +10,10 @@ bool8 IsPlayerFacingEmptyBerryTreePatch(void);
bool8 TryToWaterBerryTree(void);
void ClearBerryTrees(void);
void BerryTreeTimeUpdate(s32 minutes);
-void PlantBerryTree(u8 id, u8 berry, u8 stage, bool8 sparkle);
+void PlantBerryTree(u8 id, u8 berry, u8 stage, bool8 allowGrowth);
void RemoveBerryTree(u8 id);
u8 GetBerryTypeByBerryTreeId(u8 id);
-u8 GetStageByBerryTreeId(u8);
+u8 GetStageByBerryTreeId(u8 id);
u8 ItemIdToBerryType(u16 item);
void GetBerryNameByBerryType(u8 berry, u8 *string);
void Bag_ChooseBerry(void);
diff --git a/include/cable_club.h b/include/cable_club.h
index c493691c1c..5a68df621c 100644
--- a/include/cable_club.h
+++ b/include/cable_club.h
@@ -4,7 +4,7 @@
#include "task.h"
#include "constants/cable_club.h"
-void CreateTask_EnterCableClubSeat(TaskFunc taskFunc);
+void CreateTask_EnterCableClubSeat(TaskFunc followupFunc);
u8 CreateTask_ReestablishCableClubLink(void);
void CB2_ReturnFromCableClubBattle(void);
bool32 AreBattleTowerLinkSpeciesSame(u16 *speciesList1, u16 *speciesList2);
diff --git a/include/config/ai.h b/include/config/ai.h
index c734eb2c1d..db98f72ee9 100644
--- a/include/config/ai.h
+++ b/include/config/ai.h
@@ -69,4 +69,9 @@
// 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 195e1f82b4..f4a14f4df4 100644
--- a/include/config/battle.h
+++ b/include/config/battle.h
@@ -128,6 +128,7 @@
#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_GALE_WINGS GEN_LATEST // In Gen7+ requires full HP to trigger.
@@ -210,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, 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
diff --git a/include/config/overworld.h b/include/config/overworld.h
index ad926820f2..50cad2f5fe 100644
--- a/include/config/overworld.h
+++ b/include/config/overworld.h
@@ -114,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
@@ -129,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/constants/.gitignore b/include/constants/.gitignore
index 761af9db76..5923892b4f 100644
--- a/include/constants/.gitignore
+++ b/include/constants/.gitignore
@@ -1,3 +1,6 @@
# Will be moved to build/ eventually
map_groups.h
-layouts.h
\ No newline at end of file
+layouts.h
+region_map_sections.h
+map_event_ids.h
+heal_locations.h
diff --git a/include/constants/battle.h b/include/constants/battle.h
index 1803561a28..b41e1a6eba 100644
--- a/include/constants/battle.h
+++ b/include/constants/battle.h
@@ -23,12 +23,23 @@
* +---------------------------+
*/
-#define MAX_BATTLERS_COUNT 4
+enum BattlerPosition
+{
+ B_POSITION_PLAYER_LEFT,
+ B_POSITION_OPPONENT_LEFT,
+ B_POSITION_PLAYER_RIGHT,
+ B_POSITION_OPPONENT_RIGHT,
+ MAX_POSITION_COUNT,
+};
-#define B_POSITION_PLAYER_LEFT 0
-#define B_POSITION_OPPONENT_LEFT 1
-#define B_POSITION_PLAYER_RIGHT 2
-#define B_POSITION_OPPONENT_RIGHT 3
+enum BattlerId
+{
+ B_BATTLER_0,
+ B_BATTLER_1,
+ B_BATTLER_2,
+ B_BATTLER_3,
+ MAX_BATTLERS_COUNT,
+};
// These macros can be used with either battler ID or positions to get the partner or the opposite mon
#define BATTLE_OPPOSITE(id) ((id) ^ BIT_SIDE)
@@ -374,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,
@@ -608,4 +617,10 @@ enum SlideMsgStates
RESTORE_BATTLER_SLIDE_CONTROL,
};
+enum MonState
+{
+ MON_IN_BATTLE,
+ MON_OUTSIDE_BATTLE,
+};
+
#endif // GUARD_CONSTANTS_BATTLE_H
diff --git a/include/constants/battle_anim.h b/include/constants/battle_anim.h
index ac312a3c01..c85dcc9fe7 100644
--- a/include/constants/battle_anim.h
+++ b/include/constants/battle_anim.h
@@ -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 3b89851eaf..9304805b68 100644
--- a/include/constants/battle_move_effects.h
+++ b/include/constants/battle_move_effects.h
@@ -5,7 +5,7 @@ enum BattleMoveEffects
{
EFFECT_PLACEHOLDER,
EFFECT_HIT,
- EFFECT_SLEEP,
+ EFFECT_NON_VOLATILE_STATUS,
EFFECT_ABSORB,
EFFECT_EXPLOSION,
EFFECT_DREAM_EATER,
@@ -31,7 +31,6 @@ enum BattleMoveEffects
EFFECT_MULTI_HIT,
EFFECT_CONVERSION,
EFFECT_RESTORE_HP,
- EFFECT_TOXIC,
EFFECT_LIGHT_SCREEN,
EFFECT_REST,
EFFECT_OHKO,
@@ -59,8 +58,6 @@ enum BattleMoveEffects
EFFECT_ACCURACY_DOWN_2,
EFFECT_EVASION_DOWN_2,
EFFECT_REFLECT,
- EFFECT_POISON,
- EFFECT_PARALYZE,
EFFECT_TWO_TURNS_ATTACK,
EFFECT_SUBSTITUTE,
EFFECT_RAGE,
@@ -124,7 +121,6 @@ enum BattleMoveEffects
EFFECT_EARTHQUAKE,
EFFECT_FUTURE_SIGHT,
EFFECT_SOLAR_BEAM,
- EFFECT_THUNDER,
EFFECT_TELEPORT,
EFFECT_BEAT_UP,
EFFECT_SEMI_INVULNERABLE,
@@ -139,7 +135,6 @@ enum BattleMoveEffects
EFFECT_HAIL,
EFFECT_TORMENT,
EFFECT_FLATTER,
- EFFECT_WILL_O_WISP,
EFFECT_MEMENTO,
EFFECT_FACADE,
EFFECT_FOCUS_PUNCH,
@@ -293,7 +288,7 @@ enum BattleMoveEffects
EFFECT_DYNAMAX_DOUBLE_DMG,
EFFECT_DECORATE,
EFFECT_SNIPE_SHOT,
- EFFECT_RECOIL_HP_25,
+ EFFECT_STRUGGLE,
EFFECT_STUFF_CHEEKS,
EFFECT_GRAV_APPLE,
EFFECT_HYPERSPACE_FURY,
@@ -337,8 +332,6 @@ enum BattleMoveEffects
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,
@@ -355,6 +348,7 @@ enum BattleMoveEffects
EFFECT_SPECTRAL_THIEF,
EFFECT_GIPHANT_CAPTURE,
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 051a49b076..2b0287be40 100644
--- a/include/constants/battle_script_commands.h
+++ b/include/constants/battle_script_commands.h
@@ -203,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,
@@ -264,15 +263,14 @@ enum MoveEndEffects
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 spread move
MOVEEND_MULTIHIT_MOVE,
- MOVEEND_DEFROST,
MOVEEND_SECOND_MOVE_BLOCK,
MOVEEND_ITEM_EFFECTS_ATTACKER,
MOVEEND_ABILITY_BLOCK,
diff --git a/include/constants/battle_string_ids.h b/include/constants/battle_string_ids.h
index 6025d5c454..306bbd7d28 100644
--- a/include/constants/battle_string_ids.h
+++ b/include/constants/battle_string_ids.h
@@ -739,6 +739,8 @@ enum StringID
STRINGID_GIPHANT_CAPTURE_FAIL,
STRINGID_GIPHANT_CAPTURE_SUCCESS,
STRINGID_TOXICSPIKESBADLYPOISONED,
+ STRINGID_POWERCONSTRUCTPRESENCEOFMANY,
+ STRINGID_POWERCONSTRUCTTRANSFORM,
STRINGID_COUNT
};
diff --git a/include/constants/event_objects.h b/include/constants/event_objects.h
index b064fa8d75..a0ca0063dc 100644
--- a/include/constants/event_objects.h
+++ b/include/constants/event_objects.h
@@ -1,6 +1,9 @@
#ifndef GUARD_CONSTANTS_EVENT_OBJECTS_H
#define GUARD_CONSTANTS_EVENT_OBJECTS_H
+#include "constants/global.h"
+#include "constants/map_event_ids.h"
+
#define OBJ_EVENT_GFX_BRENDAN_NORMAL 0
#define OBJ_EVENT_GFX_BRENDAN_MACH_BIKE 1
#define OBJ_EVENT_GFX_BRENDAN_SURFING 2
@@ -320,40 +323,21 @@
// Used for link player OWs in CreateLinkPlayerSprite
#define OBJ_EVENT_ID_DYNAMIC_BASE 0xF0
-#define OBJ_EVENT_ID_PLAYER 0xFF
-#define OBJ_EVENT_ID_CAMERA 0x7F
+// 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
+// in regular offline play, five for linked players while playing Berry Blender, and one for an invisible object that
+// can be spawned for the camera to track instead of the player. Additionally, the value 0 is reserved as an "empty" indicator.
+#define LOCALID_NONE 0
+#define LOCALID_CAMERA 127
+#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
-// Object event local ids referenced in C files
-#define LOCALID_ROUTE111_PLAYER_FALLING 45
-#define LOCALID_BIRTH_ISLAND_EXTERIOR_ROCK 1
-#define LOCALID_FARAWAY_ISLAND_MEW 1
-#define LOCALID_UNION_ROOM_PLAYER_4 2
-#define LOCALID_UNION_ROOM_PLAYER_8 3
-#define LOCALID_UNION_ROOM_PLAYER_7 4
-#define LOCALID_UNION_ROOM_PLAYER_6 5
-#define LOCALID_UNION_ROOM_PLAYER_5 6
-#define LOCALID_UNION_ROOM_PLAYER_3 7
-#define LOCALID_UNION_ROOM_PLAYER_2 8
-#define LOCALID_UNION_ROOM_PLAYER_1 9
-#define LOCALID_BATTLE_TOWER_LOBBY_REPORTER 5
-#define LOCALID_TRUCK_BOX_TOP 1
-#define LOCALID_TRUCK_BOX_BOTTOM_L 2
-#define LOCALID_TRUCK_BOX_BOTTOM_R 3
-#define LOCALID_OLDALE_MART_CLERK 1
-#define LOCALID_LAVARIDGE_MART_CLERK 1
-#define LOCALID_FALLARBOR_MART_CLERK 1
-#define LOCALID_VERDANTURF_MART_CLERK 1
-#define LOCALID_PETALBURG_MART_CLERK 1
-#define LOCALID_SLATEPORT_MART_CLERK 1
-#define LOCALID_MAUVILLE_MART_CLERK 1
-#define LOCALID_RUSTBORO_MART_CLERK 1
-#define LOCALID_FORTREE_MART_CLERK 1
-#define LOCALID_MOSSDEEP_MART_CLERK 1
-#define LOCALID_SOOTOPOLIS_MART_CLERK 1
-#define LOCALID_BATTLE_FRONTIER_MART_CLERK 1
-#define LOCALID_SLATEPORT_ENERGY_GURU 25
+// 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
+#define OBJ_EVENT_ID_PLAYER LOCALID_PLAYER
// Moved from src/event_object_movement.c so that they're accesible from other files.
#define OBJ_EVENT_PAL_TAG_BRENDAN 0x1100
diff --git a/include/constants/expansion.h b/include/constants/expansion.h
index 9d61a24a3b..b0e7397b56 100644
--- a/include/constants/expansion.h
+++ b/include/constants/expansion.h
@@ -1,10 +1,10 @@
#ifndef GUARD_CONSTANTS_EXPANSION_H
#define GUARD_CONSTANTS_EXPANSION_H
-// Last version: 1.11.2
+// Last version: 1.12.0
#define EXPANSION_VERSION_MAJOR 1
#define EXPANSION_VERSION_MINOR 12
-#define EXPANSION_VERSION_PATCH 0
+#define EXPANSION_VERSION_PATCH 1
// FALSE if this this version of Expansion is not a tagged commit, i.e.
// it contains unreleased changes.
diff --git a/include/constants/flags.h b/include/constants/flags.h
index 47e96c528f..71a9116728 100644
--- a/include/constants/flags.h
+++ b/include/constants/flags.h
@@ -847,7 +847,7 @@
#define FLAG_HIDE_ROUTE_111_GABBY_AND_TY_1 0x31C
#define FLAG_HIDE_ROUTE_118_GABBY_AND_TY_1 0x31D
#define FLAG_HIDE_ROUTE_120_GABBY_AND_TY_1 0x31E
-#define FLAG_HIDE_ROUTE_111_GABBY_AND_TY_3 0x31F
+#define FLAG_HIDE_ROUTE_111_GABBY_AND_TY_2 0x31F
#define FLAG_HIDE_LUGIA 0x320
#define FLAG_HIDE_HO_OH 0x321
#define FLAG_HIDE_LILYCOVE_CONTEST_HALL_REPORTER 0x322
@@ -951,7 +951,7 @@
#define FLAG_HIDE_ROUTE_110_TEAM_AQUA 0x384
#define FLAG_HIDE_ROUTE_118_GABBY_AND_TY_2 0x385
#define FLAG_HIDE_ROUTE_120_GABBY_AND_TY_2 0x386
-#define FLAG_HIDE_ROUTE_111_GABBY_AND_TY_2 0x387
+#define FLAG_HIDE_ROUTE_111_GABBY_AND_TY_3 0x387
#define FLAG_HIDE_ROUTE_118_GABBY_AND_TY_3 0x388
#define FLAG_HIDE_SLATEPORT_CITY_HARBOR_PATRONS 0x389
#define FLAG_HIDE_ROUTE_104_WHITE_HERB_FLORIST 0x38A
diff --git a/include/constants/heal_locations.h b/include/constants/heal_locations.h
index 217594d0b7..82392f8780 100644
--- a/include/constants/heal_locations.h
+++ b/include/constants/heal_locations.h
@@ -1,29 +1,36 @@
#ifndef GUARD_CONSTANTS_HEAL_LOCATIONS_H
#define GUARD_CONSTANTS_HEAL_LOCATIONS_H
-#define HEAL_LOCATION_NONE 0
-#define HEAL_LOCATION_LITTLEROOT_TOWN_BRENDANS_HOUSE_2F 1
-#define HEAL_LOCATION_LITTLEROOT_TOWN_MAYS_HOUSE_2F 2
-#define HEAL_LOCATION_PETALBURG_CITY 3
-#define HEAL_LOCATION_SLATEPORT_CITY 4
-#define HEAL_LOCATION_MAUVILLE_CITY 5
-#define HEAL_LOCATION_RUSTBORO_CITY 6
-#define HEAL_LOCATION_FORTREE_CITY 7
-#define HEAL_LOCATION_LILYCOVE_CITY 8
-#define HEAL_LOCATION_MOSSDEEP_CITY 9
-#define HEAL_LOCATION_SOOTOPOLIS_CITY 10
-#define HEAL_LOCATION_EVER_GRANDE_CITY 11
-#define HEAL_LOCATION_LITTLEROOT_TOWN_BRENDANS_HOUSE 12
-#define HEAL_LOCATION_LITTLEROOT_TOWN_MAYS_HOUSE 13
-#define HEAL_LOCATION_OLDALE_TOWN 14
-#define HEAL_LOCATION_DEWFORD_TOWN 15
-#define HEAL_LOCATION_LAVARIDGE_TOWN 16
-#define HEAL_LOCATION_FALLARBOR_TOWN 17
-#define HEAL_LOCATION_VERDANTURF_TOWN 18
-#define HEAL_LOCATION_PACIFIDLOG_TOWN 19
-#define HEAL_LOCATION_EVER_GRANDE_CITY_POKEMON_LEAGUE 20
-#define HEAL_LOCATION_SOUTHERN_ISLAND_EXTERIOR 21
-#define HEAL_LOCATION_BATTLE_FRONTIER_OUTSIDE_EAST 22
-#define HEAL_LOCATION_COUNT 23
+//
+// DO NOT MODIFY THIS FILE! It is auto-generated from src/data/heal_locations.json and Inja template src/data/heal_locations.constants.json.txt
+//
+
+
+enum {
+ HEAL_LOCATION_NONE,
+ HEAL_LOCATION_LITTLEROOT_TOWN_BRENDANS_HOUSE_2F,
+ HEAL_LOCATION_LITTLEROOT_TOWN_MAYS_HOUSE_2F,
+ HEAL_LOCATION_PETALBURG_CITY,
+ HEAL_LOCATION_SLATEPORT_CITY,
+ HEAL_LOCATION_MAUVILLE_CITY,
+ HEAL_LOCATION_RUSTBORO_CITY,
+ HEAL_LOCATION_FORTREE_CITY,
+ HEAL_LOCATION_LILYCOVE_CITY,
+ HEAL_LOCATION_MOSSDEEP_CITY,
+ HEAL_LOCATION_SOOTOPOLIS_CITY,
+ HEAL_LOCATION_EVER_GRANDE_CITY,
+ HEAL_LOCATION_LITTLEROOT_TOWN_BRENDANS_HOUSE,
+ HEAL_LOCATION_LITTLEROOT_TOWN_MAYS_HOUSE,
+ HEAL_LOCATION_OLDALE_TOWN,
+ HEAL_LOCATION_DEWFORD_TOWN,
+ HEAL_LOCATION_LAVARIDGE_TOWN,
+ HEAL_LOCATION_FALLARBOR_TOWN,
+ HEAL_LOCATION_VERDANTURF_TOWN,
+ HEAL_LOCATION_PACIFIDLOG_TOWN,
+ HEAL_LOCATION_EVER_GRANDE_CITY_POKEMON_LEAGUE,
+ HEAL_LOCATION_SOUTHERN_ISLAND_EXTERIOR,
+ HEAL_LOCATION_BATTLE_FRONTIER_OUTSIDE_EAST,
+ NUM_HEAL_LOCATIONS
+};
#endif // GUARD_CONSTANTS_HEAL_LOCATIONS_H
diff --git a/include/constants/hold_effects.h b/include/constants/hold_effects.h
index 096d9ad624..c7ed811601 100644
--- a/include/constants/hold_effects.h
+++ b/include/constants/hold_effects.h
@@ -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/maps.h b/include/constants/maps.h
index 1bf11fa5cc..d41f03c683 100644
--- a/include/constants/maps.h
+++ b/include/constants/maps.h
@@ -9,8 +9,8 @@
#define MAP_UNDEFINED (0xFF | (0xFF << 8))
-#define MAP_GROUP(map) (MAP_##map >> 8)
-#define MAP_NUM(map) (MAP_##map & 0xFF)
+#define MAP_GROUP(map) (map >> 8)
+#define MAP_NUM(map) (map & 0xFF)
// IDs for dynamic warps. Both are used in the dest_warp_id field for warp events, but they
// are never read in practice. A dest_map of MAP_DYNAMIC is used to indicate that a
diff --git a/include/constants/metatile_behaviors.h b/include/constants/metatile_behaviors.h
index f5a8f38506..505f279f73 100755
--- a/include/constants/metatile_behaviors.h
+++ b/include/constants/metatile_behaviors.h
@@ -1,249 +1,250 @@
#ifndef GUARD_METATILE_BEHAVIORS_H
#define GUARD_METATILE_BEHAVIORS_H
-#define MB_NORMAL 0x00
-#define MB_SECRET_BASE_WALL 0x01
-#define MB_TALL_GRASS 0x02
-#define MB_LONG_GRASS 0x03
-#define MB_UNUSED_04 0x04
-#define MB_UNUSED_05 0x05
-#define MB_DEEP_SAND 0x06
-#define MB_SHORT_GRASS 0x07
-#define MB_CAVE 0x08
-#define MB_LONG_GRASS_SOUTH_EDGE 0x09
-#define MB_NO_RUNNING 0x0A
-#define MB_INDOOR_ENCOUNTER 0x0B
-#define MB_MOUNTAIN_TOP 0x0C
-#define MB_BATTLE_PYRAMID_WARP 0x0D
-#define MB_MOSSDEEP_GYM_WARP 0x0E
-#define MB_MT_PYRE_HOLE 0x0F
-#define MB_POND_WATER 0x10
-#define MB_INTERIOR_DEEP_WATER 0x11 // Used by interior maps; functionally the same as MB_DEEP_WATER
-#define MB_DEEP_WATER 0x12
-#define MB_WATERFALL 0x13
-#define MB_SOOTOPOLIS_DEEP_WATER 0x14
-#define MB_OCEAN_WATER 0x15
-#define MB_PUDDLE 0x16
-#define MB_SHALLOW_WATER 0x17
-#define MB_UNUSED_SOOTOPOLIS_DEEP_WATER 0x18
-#define MB_NO_SURFACING 0x19
-#define MB_UNUSED_SOOTOPOLIS_DEEP_WATER_2 0x1A
-#define MB_STAIRS_OUTSIDE_ABANDONED_SHIP 0x1B
-#define MB_SHOAL_CAVE_ENTRANCE 0x1C
-#define MB_SIGNPOST 0x1D
-#define MB_POKEMON_CENTER_SIGN 0x1E
-#define MB_POKEMART_SIGN 0x1F
-#define MB_ICE 0x20
-#define MB_SAND 0x21
-#define MB_SEAWEED 0x22
-#define MB_UNUSED_23 0x23
-#define MB_ASHGRASS 0x24
-#define MB_FOOTPRINTS 0x25
-#define MB_THIN_ICE 0x26
-#define MB_CRACKED_ICE 0x27
-#define MB_HOT_SPRINGS 0x28
-#define MB_LAVARIDGE_GYM_B1F_WARP 0x29
-#define MB_SEAWEED_NO_SURFACING 0x2A
-#define MB_REFLECTION_UNDER_BRIDGE 0x2B
-#define MB_UNUSED_2C 0x2C
-#define MB_UNUSED_2D 0x2D
-#define MB_UNUSED_2E 0x2E
-#define MB_UNUSED_2F 0x2F
-#define MB_IMPASSABLE_EAST 0x30
-#define MB_IMPASSABLE_WEST 0x31
-#define MB_IMPASSABLE_NORTH 0x32
-#define MB_IMPASSABLE_SOUTH 0x33
-#define MB_IMPASSABLE_NORTHEAST 0x34
-#define MB_IMPASSABLE_NORTHWEST 0x35
-#define MB_IMPASSABLE_SOUTHEAST 0x36
-#define MB_IMPASSABLE_SOUTHWEST 0x37
-#define MB_JUMP_EAST 0x38
-#define MB_JUMP_WEST 0x39
-#define MB_JUMP_NORTH 0x3A
-#define MB_JUMP_SOUTH 0x3B
-#define MB_JUMP_NORTHEAST 0x3C
-#define MB_JUMP_NORTHWEST 0x3D
-#define MB_JUMP_SOUTHEAST 0x3E
-#define MB_JUMP_SOUTHWEST 0x3F
-#define MB_WALK_EAST 0x40
-#define MB_WALK_WEST 0x41
-#define MB_WALK_NORTH 0x42
-#define MB_WALK_SOUTH 0x43
-#define MB_SLIDE_EAST 0x44
-#define MB_SLIDE_WEST 0x45
-#define MB_SLIDE_NORTH 0x46
-#define MB_SLIDE_SOUTH 0x47
-#define MB_TRICK_HOUSE_PUZZLE_8_FLOOR 0x48
-#define MB_SIDEWAYS_STAIRS_RIGHT_SIDE 0x49
-#define MB_SIDEWAYS_STAIRS_LEFT_SIDE 0x4A
-#define MB_SIDEWAYS_STAIRS_RIGHT_SIDE_TOP 0x4B
-#define MB_SIDEWAYS_STAIRS_LEFT_SIDE_TOP 0x4C
-#define MB_SIDEWAYS_STAIRS_RIGHT_SIDE_BOTTOM 0x4D
-#define MB_SIDEWAYS_STAIRS_LEFT_SIDE_BOTTOM 0x4E
-#define MB_ROCK_STAIRS 0x4F
-#define MB_EASTWARD_CURRENT 0x50
-#define MB_WESTWARD_CURRENT 0x51
-#define MB_NORTHWARD_CURRENT 0x52
-#define MB_SOUTHWARD_CURRENT 0x53
-#define MB_UNUSED_54 0x54
-#define MB_UNUSED_55 0x55
-#define MB_UNUSED_56 0x56
-#define MB_UNUSED_57 0x57
-#define MB_UNUSED_58 0x58
-#define MB_UNUSED_59 0x59
-#define MB_UNUSED_5A 0x5A
-#define MB_UNUSED_5B 0x5B
-#define MB_UNUSED_5C 0x5C
-#define MB_UNUSED_5D 0x5D
-#define MB_UNUSED_5E 0x5E
-#define MB_UNUSED_5F 0x5F
-#define MB_NON_ANIMATED_DOOR 0x60
-#define MB_LADDER 0x61
-#define MB_EAST_ARROW_WARP 0x62
-#define MB_WEST_ARROW_WARP 0x63
-#define MB_NORTH_ARROW_WARP 0x64
-#define MB_SOUTH_ARROW_WARP 0x65
-#define MB_CRACKED_FLOOR_HOLE 0x66
-#define MB_AQUA_HIDEOUT_WARP 0x67
-#define MB_LAVARIDGE_GYM_1F_WARP 0x68
-#define MB_ANIMATED_DOOR 0x69
-#define MB_UP_ESCALATOR 0x6A
-#define MB_DOWN_ESCALATOR 0x6B
-#define MB_WATER_DOOR 0x6C
-#define MB_WATER_SOUTH_ARROW_WARP 0x6D
-#define MB_DEEP_SOUTH_WARP 0x6E
-#define MB_UNUSED_6F 0x6F
-#define MB_BRIDGE_OVER_OCEAN 0x70
-#define MB_BRIDGE_OVER_POND_LOW 0x71
-#define MB_BRIDGE_OVER_POND_MED 0x72
-#define MB_BRIDGE_OVER_POND_HIGH 0x73
-#define MB_PACIFIDLOG_VERTICAL_LOG_TOP 0x74
-#define MB_PACIFIDLOG_VERTICAL_LOG_BOTTOM 0x75
-#define MB_PACIFIDLOG_HORIZONTAL_LOG_LEFT 0x76
-#define MB_PACIFIDLOG_HORIZONTAL_LOG_RIGHT 0x77
-#define MB_FORTREE_BRIDGE 0x78
-#define MB_UNUSED_79 0x79
-#define MB_BRIDGE_OVER_POND_MED_EDGE_1 0x7A
-#define MB_BRIDGE_OVER_POND_MED_EDGE_2 0x7B
-#define MB_BRIDGE_OVER_POND_HIGH_EDGE_1 0x7C
-#define MB_BRIDGE_OVER_POND_HIGH_EDGE_2 0x7D
-#define MB_UNUSED_BRIDGE 0x7E
-#define MB_BIKE_BRIDGE_OVER_BARRIER 0x7F
-#define MB_COUNTER 0x80
-#define MB_UNUSED_81 0x81
-#define MB_UNUSED_82 0x82
-#define MB_PC 0x83
-#define MB_CABLE_BOX_RESULTS_1 0x84
-#define MB_REGION_MAP 0x85
-#define MB_TELEVISION 0x86
-#define MB_POKEBLOCK_FEEDER 0x87
-#define MB_UNUSED_88 0x88
-#define MB_SLOT_MACHINE 0x89
-#define MB_ROULETTE 0x8A
-#define MB_CLOSED_SOOTOPOLIS_DOOR 0x8B
-#define MB_TRICK_HOUSE_PUZZLE_DOOR 0x8C
-#define MB_PETALBURG_GYM_DOOR 0x8D
-#define MB_RUNNING_SHOES_INSTRUCTION 0x8E
-#define MB_QUESTIONNAIRE 0x8F
-#define MB_SECRET_BASE_SPOT_RED_CAVE 0x90
-#define MB_SECRET_BASE_SPOT_RED_CAVE_OPEN 0x91
-#define MB_SECRET_BASE_SPOT_BROWN_CAVE 0x92
-#define MB_SECRET_BASE_SPOT_BROWN_CAVE_OPEN 0x93
-#define MB_SECRET_BASE_SPOT_YELLOW_CAVE 0x94
-#define MB_SECRET_BASE_SPOT_YELLOW_CAVE_OPEN 0x95
-#define MB_SECRET_BASE_SPOT_TREE_LEFT 0x96
-#define MB_SECRET_BASE_SPOT_TREE_LEFT_OPEN 0x97
-#define MB_SECRET_BASE_SPOT_SHRUB 0x98
-#define MB_SECRET_BASE_SPOT_SHRUB_OPEN 0x99
-#define MB_SECRET_BASE_SPOT_BLUE_CAVE 0x9A
-#define MB_SECRET_BASE_SPOT_BLUE_CAVE_OPEN 0x9B
-#define MB_SECRET_BASE_SPOT_TREE_RIGHT 0x9C
-#define MB_SECRET_BASE_SPOT_TREE_RIGHT_OPEN 0x9D
-#define MB_UNUSED_9E 0x9E
-#define MB_UNUSED_9F 0x9F
-#define MB_BERRY_TREE_SOIL 0xA0
-#define MB_UNUSED_A1 0xA1
-#define MB_UNUSED_A2 0xA2
-#define MB_UNUSED_A3 0xA3
-#define MB_UNUSED_A4 0xA4
-#define MB_UNUSED_A5 0xA5
-#define MB_UNUSED_A6 0xA6
-#define MB_UNUSED_A7 0xA7
-#define MB_UNUSED_A8 0xA8
-#define MB_UNUSED_A9 0xA9
-#define MB_UNUSED_AA 0xAA
-#define MB_UNUSED_AB 0xAB
-#define MB_UNUSED_AC 0xAC
-#define MB_UNUSED_AD 0xAD
-#define MB_UNUSED_AE 0xAE
-#define MB_UNUSED_AF 0xAF
-#define MB_SECRET_BASE_PC 0xB0
-#define MB_SECRET_BASE_REGISTER_PC 0xB1
-#define MB_SECRET_BASE_SCENERY 0xB2
-#define MB_SECRET_BASE_TRAINER_SPOT 0xB3
-#define MB_SECRET_BASE_DECORATION 0xB4
-#define MB_HOLDS_SMALL_DECORATION 0xB5
-#define MB_UNUSED_B6 0xB6
-#define MB_SECRET_BASE_NORTH_WALL 0xB7
-#define MB_SECRET_BASE_BALLOON 0xB8
-#define MB_SECRET_BASE_IMPASSABLE 0xB9
-#define MB_SECRET_BASE_GLITTER_MAT 0xBA
-#define MB_SECRET_BASE_JUMP_MAT 0xBB
-#define MB_SECRET_BASE_SPIN_MAT 0xBC
-#define MB_SECRET_BASE_SOUND_MAT 0xBD
-#define MB_SECRET_BASE_BREAKABLE_DOOR 0xBE
-#define MB_SECRET_BASE_SAND_ORNAMENT 0xBF
-#define MB_IMPASSABLE_SOUTH_AND_NORTH 0xC0
-#define MB_IMPASSABLE_WEST_AND_EAST 0xC1
-#define MB_SECRET_BASE_HOLE 0xC2
-#define MB_HOLDS_LARGE_DECORATION 0xC3
-#define MB_SECRET_BASE_TV_SHIELD 0xC4
-#define MB_PLAYER_ROOM_PC_ON 0xC5
-#define MB_SECRET_BASE_DECORATION_BASE 0xC6
-#define MB_SECRET_BASE_POSTER 0xC7
-#define MB_UNUSED_C8 0xC8
-#define MB_UNUSED_C9 0xC9
-#define MB_UNUSED_CA 0xCA
-#define MB_UNUSED_CB 0xCB
-#define MB_UNUSED_CC 0xCC
-#define MB_UNUSED_CD 0xCD
-#define MB_UNUSED_CE 0xCE
-#define MB_UNUSED_CF 0xCF
-#define MB_MUDDY_SLOPE 0xD0
-#define MB_BUMPY_SLOPE 0xD1
-#define MB_CRACKED_FLOOR 0xD2
-#define MB_ISOLATED_VERTICAL_RAIL 0xD3
-#define MB_ISOLATED_HORIZONTAL_RAIL 0xD4
-#define MB_VERTICAL_RAIL 0xD5
-#define MB_HORIZONTAL_RAIL 0xD6
-#define MB_UNUSED_D7 0xD7
-#define MB_UNUSED_D8 0xD8
-#define MB_UNUSED_D9 0xD9
-#define MB_UNUSED_DA 0xDA
-#define MB_UNUSED_DB 0xDB
-#define MB_UNUSED_DC 0xDC
-#define MB_UNUSED_DD 0xDD
-#define MB_UNUSED_DE 0xDE
-#define MB_UNUSED_DF 0xDF
-#define MB_PICTURE_BOOK_SHELF 0xE0
-#define MB_BOOKSHELF 0xE1
-#define MB_POKEMON_CENTER_BOOKSHELF 0xE2
-#define MB_VASE 0xE3
-#define MB_TRASH_CAN 0xE4
-#define MB_SHOP_SHELF 0xE5
-#define MB_BLUEPRINT 0xE6
-#define MB_CABLE_BOX_RESULTS_2 0xE7
-#define MB_WIRELESS_BOX_RESULTS 0xE8
-#define MB_TRAINER_HILL_TIMER 0xE9
-#define MB_SKY_PILLAR_CLOSED_DOOR 0xEA
-#define MB_UP_RIGHT_STAIR_WARP 0xEB
-#define MB_UP_LEFT_STAIR_WARP 0xEC
-#define MB_DOWN_RIGHT_STAIR_WARP 0xED
-#define MB_DOWN_LEFT_STAIR_WARP 0xEE
-#define MB_UNUSED_EF 0xEF
+enum {
+ MB_NORMAL,
+ MB_SECRET_BASE_WALL,
+ MB_TALL_GRASS,
+ MB_LONG_GRASS,
+ MB_UNUSED_04,
+ MB_UNUSED_05,
+ MB_DEEP_SAND,
+ MB_SHORT_GRASS,
+ MB_CAVE,
+ MB_LONG_GRASS_SOUTH_EDGE,
+ MB_NO_RUNNING,
+ MB_INDOOR_ENCOUNTER,
+ MB_MOUNTAIN_TOP,
+ MB_BATTLE_PYRAMID_WARP,
+ MB_MOSSDEEP_GYM_WARP,
+ MB_MT_PYRE_HOLE,
+ MB_POND_WATER,
+ MB_INTERIOR_DEEP_WATER, // Used by interior maps; functionally the same as MB_DEEP_WATER
+ MB_DEEP_WATER,
+ MB_WATERFALL,
+ MB_SOOTOPOLIS_DEEP_WATER,
+ MB_OCEAN_WATER,
+ MB_PUDDLE,
+ MB_SHALLOW_WATER,
+ MB_UNUSED_SOOTOPOLIS_DEEP_WATER,
+ MB_NO_SURFACING,
+ MB_UNUSED_SOOTOPOLIS_DEEP_WATER_2,
+ MB_STAIRS_OUTSIDE_ABANDONED_SHIP,
+ MB_SHOAL_CAVE_ENTRANCE,
+ MB_SIGNPOST,
+ MB_POKEMON_CENTER_SIGN,
+ MB_POKEMART_SIGN,
+ MB_ICE,
+ MB_SAND,
+ MB_SEAWEED,
+ MB_UNUSED_23,
+ MB_ASHGRASS,
+ MB_FOOTPRINTS,
+ MB_THIN_ICE,
+ MB_CRACKED_ICE,
+ MB_HOT_SPRINGS,
+ MB_LAVARIDGE_GYM_B1F_WARP,
+ MB_SEAWEED_NO_SURFACING,
+ MB_REFLECTION_UNDER_BRIDGE,
+ MB_UNUSED_2C,
+ MB_UNUSED_2D,
+ MB_UNUSED_2E,
+ MB_UNUSED_2F,
+ MB_IMPASSABLE_EAST,
+ MB_IMPASSABLE_WEST,
+ MB_IMPASSABLE_NORTH,
+ MB_IMPASSABLE_SOUTH,
+ MB_IMPASSABLE_NORTHEAST,
+ MB_IMPASSABLE_NORTHWEST,
+ MB_IMPASSABLE_SOUTHEAST,
+ MB_IMPASSABLE_SOUTHWEST,
+ MB_JUMP_EAST,
+ MB_JUMP_WEST,
+ MB_JUMP_NORTH,
+ MB_JUMP_SOUTH,
+ MB_JUMP_NORTHEAST,
+ MB_JUMP_NORTHWEST,
+ MB_JUMP_SOUTHEAST,
+ MB_JUMP_SOUTHWEST,
+ MB_WALK_EAST,
+ MB_WALK_WEST,
+ MB_WALK_NORTH,
+ MB_WALK_SOUTH,
+ MB_SLIDE_EAST,
+ MB_SLIDE_WEST,
+ MB_SLIDE_NORTH,
+ MB_SLIDE_SOUTH,
+ MB_TRICK_HOUSE_PUZZLE_8_FLOOR,
+ MB_SIDEWAYS_STAIRS_RIGHT_SIDE,
+ MB_SIDEWAYS_STAIRS_LEFT_SIDE,
+ MB_SIDEWAYS_STAIRS_RIGHT_SIDE_TOP,
+ MB_SIDEWAYS_STAIRS_LEFT_SIDE_TOP,
+ MB_SIDEWAYS_STAIRS_RIGHT_SIDE_BOTTOM,
+ MB_SIDEWAYS_STAIRS_LEFT_SIDE_BOTTOM,
+ MB_ROCK_STAIRS,
+ MB_EASTWARD_CURRENT,
+ MB_WESTWARD_CURRENT,
+ MB_NORTHWARD_CURRENT,
+ MB_SOUTHWARD_CURRENT,
+ MB_UNUSED_54,
+ MB_UNUSED_55,
+ MB_UNUSED_56,
+ MB_UNUSED_57,
+ MB_UNUSED_58,
+ MB_UNUSED_59,
+ MB_UNUSED_5A,
+ MB_UNUSED_5B,
+ MB_UNUSED_5C,
+ MB_UNUSED_5D,
+ MB_UNUSED_5E,
+ MB_UNUSED_5F,
+ MB_NON_ANIMATED_DOOR,
+ MB_LADDER,
+ MB_EAST_ARROW_WARP,
+ MB_WEST_ARROW_WARP,
+ MB_NORTH_ARROW_WARP,
+ MB_SOUTH_ARROW_WARP,
+ MB_CRACKED_FLOOR_HOLE,
+ MB_AQUA_HIDEOUT_WARP,
+ MB_LAVARIDGE_GYM_1F_WARP,
+ MB_ANIMATED_DOOR,
+ MB_UP_ESCALATOR,
+ MB_DOWN_ESCALATOR,
+ MB_WATER_DOOR,
+ MB_WATER_SOUTH_ARROW_WARP,
+ MB_DEEP_SOUTH_WARP,
+ MB_UNUSED_6F,
+ MB_BRIDGE_OVER_OCEAN,
+ MB_BRIDGE_OVER_POND_LOW,
+ MB_BRIDGE_OVER_POND_MED,
+ MB_BRIDGE_OVER_POND_HIGH,
+ MB_PACIFIDLOG_VERTICAL_LOG_TOP,
+ MB_PACIFIDLOG_VERTICAL_LOG_BOTTOM,
+ MB_PACIFIDLOG_HORIZONTAL_LOG_LEFT,
+ MB_PACIFIDLOG_HORIZONTAL_LOG_RIGHT,
+ MB_FORTREE_BRIDGE,
+ MB_UNUSED_79,
+ MB_BRIDGE_OVER_POND_MED_EDGE_1,
+ MB_BRIDGE_OVER_POND_MED_EDGE_2,
+ MB_BRIDGE_OVER_POND_HIGH_EDGE_1,
+ MB_BRIDGE_OVER_POND_HIGH_EDGE_2,
+ MB_UNUSED_BRIDGE,
+ MB_BIKE_BRIDGE_OVER_BARRIER,
+ MB_COUNTER,
+ MB_UNUSED_81,
+ MB_UNUSED_82,
+ MB_PC,
+ MB_CABLE_BOX_RESULTS_1,
+ MB_REGION_MAP,
+ MB_TELEVISION,
+ MB_POKEBLOCK_FEEDER,
+ MB_UNUSED_88,
+ MB_SLOT_MACHINE,
+ MB_ROULETTE,
+ MB_CLOSED_SOOTOPOLIS_DOOR,
+ MB_TRICK_HOUSE_PUZZLE_DOOR,
+ MB_PETALBURG_GYM_DOOR,
+ MB_RUNNING_SHOES_INSTRUCTION,
+ MB_QUESTIONNAIRE,
+ MB_SECRET_BASE_SPOT_RED_CAVE,
+ MB_SECRET_BASE_SPOT_RED_CAVE_OPEN,
+ MB_SECRET_BASE_SPOT_BROWN_CAVE,
+ MB_SECRET_BASE_SPOT_BROWN_CAVE_OPEN,
+ MB_SECRET_BASE_SPOT_YELLOW_CAVE,
+ MB_SECRET_BASE_SPOT_YELLOW_CAVE_OPEN,
+ MB_SECRET_BASE_SPOT_TREE_LEFT,
+ MB_SECRET_BASE_SPOT_TREE_LEFT_OPEN,
+ MB_SECRET_BASE_SPOT_SHRUB,
+ MB_SECRET_BASE_SPOT_SHRUB_OPEN,
+ MB_SECRET_BASE_SPOT_BLUE_CAVE,
+ MB_SECRET_BASE_SPOT_BLUE_CAVE_OPEN,
+ MB_SECRET_BASE_SPOT_TREE_RIGHT,
+ MB_SECRET_BASE_SPOT_TREE_RIGHT_OPEN,
+ MB_UNUSED_9E,
+ MB_UNUSED_9F,
+ MB_BERRY_TREE_SOIL,
+ MB_UNUSED_A1,
+ MB_UNUSED_A2,
+ MB_UNUSED_A3,
+ MB_UNUSED_A4,
+ MB_UNUSED_A5,
+ MB_UNUSED_A6,
+ MB_UNUSED_A7,
+ MB_UNUSED_A8,
+ MB_UNUSED_A9,
+ MB_UNUSED_AA,
+ MB_UNUSED_AB,
+ MB_UNUSED_AC,
+ MB_UNUSED_AD,
+ MB_UNUSED_AE,
+ MB_UNUSED_AF,
+ MB_SECRET_BASE_PC,
+ MB_SECRET_BASE_REGISTER_PC,
+ MB_SECRET_BASE_SCENERY,
+ MB_SECRET_BASE_TRAINER_SPOT,
+ MB_SECRET_BASE_DECORATION,
+ MB_HOLDS_SMALL_DECORATION,
+ MB_UNUSED_B6,
+ MB_SECRET_BASE_NORTH_WALL,
+ MB_SECRET_BASE_BALLOON,
+ MB_SECRET_BASE_IMPASSABLE,
+ MB_SECRET_BASE_GLITTER_MAT,
+ MB_SECRET_BASE_JUMP_MAT,
+ MB_SECRET_BASE_SPIN_MAT,
+ MB_SECRET_BASE_SOUND_MAT,
+ MB_SECRET_BASE_BREAKABLE_DOOR,
+ MB_SECRET_BASE_SAND_ORNAMENT,
+ MB_IMPASSABLE_SOUTH_AND_NORTH,
+ MB_IMPASSABLE_WEST_AND_EAST,
+ MB_SECRET_BASE_HOLE,
+ MB_HOLDS_LARGE_DECORATION,
+ MB_SECRET_BASE_TV_SHIELD,
+ MB_PLAYER_ROOM_PC_ON,
+ MB_SECRET_BASE_DECORATION_BASE,
+ MB_SECRET_BASE_POSTER,
+ MB_UNUSED_C8,
+ MB_UNUSED_C9,
+ MB_UNUSED_CA,
+ MB_UNUSED_CB,
+ MB_UNUSED_CC,
+ MB_UNUSED_CD,
+ MB_UNUSED_CE,
+ MB_UNUSED_CF,
+ MB_MUDDY_SLOPE,
+ MB_BUMPY_SLOPE,
+ MB_CRACKED_FLOOR,
+ MB_ISOLATED_VERTICAL_RAIL,
+ MB_ISOLATED_HORIZONTAL_RAIL,
+ MB_VERTICAL_RAIL,
+ MB_HORIZONTAL_RAIL,
+ MB_UNUSED_D7,
+ MB_UNUSED_D8,
+ MB_UNUSED_D9,
+ MB_UNUSED_DA,
+ MB_UNUSED_DB,
+ MB_UNUSED_DC,
+ MB_UNUSED_DD,
+ MB_UNUSED_DE,
+ MB_UNUSED_DF,
+ MB_PICTURE_BOOK_SHELF,
+ MB_BOOKSHELF,
+ MB_POKEMON_CENTER_BOOKSHELF,
+ MB_VASE,
+ MB_TRASH_CAN,
+ MB_SHOP_SHELF,
+ MB_BLUEPRINT,
+ MB_CABLE_BOX_RESULTS_2,
+ MB_WIRELESS_BOX_RESULTS,
+ MB_TRAINER_HILL_TIMER,
+ MB_SKY_PILLAR_CLOSED_DOOR,
+ MB_UP_RIGHT_STAIR_WARP,
+ MB_UP_LEFT_STAIR_WARP,
+ MB_DOWN_RIGHT_STAIR_WARP,
+ MB_DOWN_LEFT_STAIR_WARP,
+ MB_UNUSED_EF,
+ NUM_METATILE_BEHAVIORS
+};
-#define NUM_METATILE_BEHAVIORS 0xF0
-
-#define MB_INVALID 0xFF
+#define MB_INVALID UCHAR_MAX
#endif // GUARD_METATILE_BEHAVIORS_H
diff --git a/include/constants/region_map_sections.h b/include/constants/region_map_sections.h
deleted file mode 100644
index 5b8029acf5..0000000000
--- a/include/constants/region_map_sections.h
+++ /dev/null
@@ -1,227 +0,0 @@
-#ifndef GUARD_REGIONMAPSEC_H
-#define GUARD_REGIONMAPSEC_H
-
-#define MAPSEC_LITTLEROOT_TOWN 0x00
-#define MAPSEC_OLDALE_TOWN 0x01
-#define MAPSEC_DEWFORD_TOWN 0x02
-#define MAPSEC_LAVARIDGE_TOWN 0x03
-#define MAPSEC_FALLARBOR_TOWN 0x04
-#define MAPSEC_VERDANTURF_TOWN 0x05
-#define MAPSEC_PACIFIDLOG_TOWN 0x06
-#define MAPSEC_PETALBURG_CITY 0x07
-#define MAPSEC_SLATEPORT_CITY 0x08
-#define MAPSEC_MAUVILLE_CITY 0x09
-#define MAPSEC_RUSTBORO_CITY 0x0A
-#define MAPSEC_FORTREE_CITY 0x0B
-#define MAPSEC_LILYCOVE_CITY 0x0C
-#define MAPSEC_MOSSDEEP_CITY 0x0D
-#define MAPSEC_SOOTOPOLIS_CITY 0x0E
-#define MAPSEC_EVER_GRANDE_CITY 0x0F
-#define MAPSEC_ROUTE_101 0x10
-#define MAPSEC_ROUTE_102 0x11
-#define MAPSEC_ROUTE_103 0x12
-#define MAPSEC_ROUTE_104 0x13
-#define MAPSEC_ROUTE_105 0x14
-#define MAPSEC_ROUTE_106 0x15
-#define MAPSEC_ROUTE_107 0x16
-#define MAPSEC_ROUTE_108 0x17
-#define MAPSEC_ROUTE_109 0x18
-#define MAPSEC_ROUTE_110 0x19
-#define MAPSEC_ROUTE_111 0x1A
-#define MAPSEC_ROUTE_112 0x1B
-#define MAPSEC_ROUTE_113 0x1C
-#define MAPSEC_ROUTE_114 0x1D
-#define MAPSEC_ROUTE_115 0x1E
-#define MAPSEC_ROUTE_116 0x1F
-#define MAPSEC_ROUTE_117 0x20
-#define MAPSEC_ROUTE_118 0x21
-#define MAPSEC_ROUTE_119 0x22
-#define MAPSEC_ROUTE_120 0x23
-#define MAPSEC_ROUTE_121 0x24
-#define MAPSEC_ROUTE_122 0x25
-#define MAPSEC_ROUTE_123 0x26
-#define MAPSEC_ROUTE_124 0x27
-#define MAPSEC_ROUTE_125 0x28
-#define MAPSEC_ROUTE_126 0x29
-#define MAPSEC_ROUTE_127 0x2A
-#define MAPSEC_ROUTE_128 0x2B
-#define MAPSEC_ROUTE_129 0x2C
-#define MAPSEC_ROUTE_130 0x2D
-#define MAPSEC_ROUTE_131 0x2E
-#define MAPSEC_ROUTE_132 0x2F
-#define MAPSEC_ROUTE_133 0x30
-#define MAPSEC_ROUTE_134 0x31
-#define MAPSEC_UNDERWATER_124 0x32
-#define MAPSEC_UNDERWATER_126 0x33
-#define MAPSEC_UNDERWATER_127 0x34
-#define MAPSEC_UNDERWATER_128 0x35
-#define MAPSEC_UNDERWATER_SOOTOPOLIS 0x36
-#define MAPSEC_GRANITE_CAVE 0x37
-#define MAPSEC_MT_CHIMNEY 0x38
-#define MAPSEC_SAFARI_ZONE 0x39
-#define MAPSEC_BATTLE_FRONTIER 0x3A
-#define MAPSEC_PETALBURG_WOODS 0x3B
-#define MAPSEC_RUSTURF_TUNNEL 0x3C
-#define MAPSEC_ABANDONED_SHIP 0x3D
-#define MAPSEC_NEW_MAUVILLE 0x3E
-#define MAPSEC_METEOR_FALLS 0x3F
-#define MAPSEC_METEOR_FALLS2 0x40
-#define MAPSEC_MT_PYRE 0x41
-#define MAPSEC_AQUA_HIDEOUT_OLD 0x42
-#define MAPSEC_SHOAL_CAVE 0x43
-#define MAPSEC_SEAFLOOR_CAVERN 0x44
-#define MAPSEC_UNDERWATER_SEAFLOOR_CAVERN 0x45
-#define MAPSEC_VICTORY_ROAD 0x46
-#define MAPSEC_MIRAGE_ISLAND 0x47
-#define MAPSEC_CAVE_OF_ORIGIN 0x48
-#define MAPSEC_SOUTHERN_ISLAND 0x49
-#define MAPSEC_FIERY_PATH 0x4A
-#define MAPSEC_FIERY_PATH2 0x4B
-#define MAPSEC_JAGGED_PASS 0x4C
-#define MAPSEC_JAGGED_PASS2 0x4D
-#define MAPSEC_SEALED_CHAMBER 0x4E
-#define MAPSEC_UNDERWATER_SEALED_CHAMBER 0x4F
-#define MAPSEC_SCORCHED_SLAB 0x50
-#define MAPSEC_ISLAND_CAVE 0x51
-#define MAPSEC_DESERT_RUINS 0x52
-#define MAPSEC_ANCIENT_TOMB 0x53
-#define MAPSEC_INSIDE_OF_TRUCK 0x54
-#define MAPSEC_SKY_PILLAR 0x55
-#define MAPSEC_SECRET_BASE 0x56
-#define MAPSEC_DYNAMIC 0x57
-#define MAPSEC_PALLET_TOWN 0x58
-#define MAPSEC_VIRIDIAN_CITY 0x59
-#define MAPSEC_PEWTER_CITY 0x5A
-#define MAPSEC_CERULEAN_CITY 0x5B
-#define MAPSEC_LAVENDER_TOWN 0x5C
-#define MAPSEC_VERMILION_CITY 0x5D
-#define MAPSEC_CELADON_CITY 0x5E
-#define MAPSEC_FUCHSIA_CITY 0x5F
-#define MAPSEC_CINNABAR_ISLAND 0x60
-#define MAPSEC_INDIGO_PLATEAU 0x61
-#define MAPSEC_SAFFRON_CITY 0x62
-#define MAPSEC_ROUTE_4_POKECENTER 0x63
-#define MAPSEC_ROUTE_10_POKECENTER 0x64
-#define MAPSEC_ROUTE_1 0x65
-#define MAPSEC_ROUTE_2 0x66
-#define MAPSEC_ROUTE_3 0x67
-#define MAPSEC_ROUTE_4 0x68
-#define MAPSEC_ROUTE_5 0x69
-#define MAPSEC_ROUTE_6 0x6A
-#define MAPSEC_ROUTE_7 0x6B
-#define MAPSEC_ROUTE_8 0x6C
-#define MAPSEC_ROUTE_9 0x6D
-#define MAPSEC_ROUTE_10 0x6E
-#define MAPSEC_ROUTE_11 0x6F
-#define MAPSEC_ROUTE_12 0x70
-#define MAPSEC_ROUTE_13 0x71
-#define MAPSEC_ROUTE_14 0x72
-#define MAPSEC_ROUTE_15 0x73
-#define MAPSEC_ROUTE_16 0x74
-#define MAPSEC_ROUTE_17 0x75
-#define MAPSEC_ROUTE_18 0x76
-#define MAPSEC_ROUTE_19 0x77
-#define MAPSEC_ROUTE_20 0x78
-#define MAPSEC_ROUTE_21 0x79
-#define MAPSEC_ROUTE_22 0x7A
-#define MAPSEC_ROUTE_23 0x7B
-#define MAPSEC_ROUTE_24 0x7C
-#define MAPSEC_ROUTE_25 0x7D
-#define MAPSEC_VIRIDIAN_FOREST 0x7E
-#define MAPSEC_MT_MOON 0x7F
-#define MAPSEC_S_S_ANNE 0x80
-#define MAPSEC_UNDERGROUND_PATH 0x81
-#define MAPSEC_UNDERGROUND_PATH_2 0x82
-#define MAPSEC_DIGLETTS_CAVE 0x83
-#define MAPSEC_KANTO_VICTORY_ROAD 0x84
-#define MAPSEC_ROCKET_HIDEOUT 0x85
-#define MAPSEC_SILPH_CO 0x86
-#define MAPSEC_POKEMON_MANSION 0x87
-#define MAPSEC_KANTO_SAFARI_ZONE 0x88
-#define MAPSEC_POKEMON_LEAGUE 0x89
-#define MAPSEC_ROCK_TUNNEL 0x8A
-#define MAPSEC_SEAFOAM_ISLANDS 0x8B
-#define MAPSEC_POKEMON_TOWER 0x8C
-#define MAPSEC_CERULEAN_CAVE 0x8D
-#define MAPSEC_POWER_PLANT 0x8E
-#define MAPSEC_ONE_ISLAND 0x8F
-#define MAPSEC_TWO_ISLAND 0x90
-#define MAPSEC_THREE_ISLAND 0x91
-#define MAPSEC_FOUR_ISLAND 0x92
-#define MAPSEC_FIVE_ISLAND 0x93
-#define MAPSEC_SEVEN_ISLAND 0x94
-#define MAPSEC_SIX_ISLAND 0x95
-#define MAPSEC_KINDLE_ROAD 0x96
-#define MAPSEC_TREASURE_BEACH 0x97
-#define MAPSEC_CAPE_BRINK 0x98
-#define MAPSEC_BOND_BRIDGE 0x99
-#define MAPSEC_THREE_ISLE_PORT 0x9A
-#define MAPSEC_SEVII_ISLE_6 0x9B
-#define MAPSEC_SEVII_ISLE_7 0x9C
-#define MAPSEC_SEVII_ISLE_8 0x9D
-#define MAPSEC_SEVII_ISLE_9 0x9E
-#define MAPSEC_RESORT_GORGEOUS 0x9F
-#define MAPSEC_WATER_LABYRINTH 0xA0
-#define MAPSEC_FIVE_ISLE_MEADOW 0xA1
-#define MAPSEC_MEMORIAL_PILLAR 0xA2
-#define MAPSEC_OUTCAST_ISLAND 0xA3
-#define MAPSEC_GREEN_PATH 0xA4
-#define MAPSEC_WATER_PATH 0xA5
-#define MAPSEC_RUIN_VALLEY 0xA6
-#define MAPSEC_TRAINER_TOWER 0xA7
-#define MAPSEC_CANYON_ENTRANCE 0xA8
-#define MAPSEC_SEVAULT_CANYON 0xA9
-#define MAPSEC_TANOBY_RUINS 0xAA
-#define MAPSEC_SEVII_ISLE_22 0xAB
-#define MAPSEC_SEVII_ISLE_23 0xAC
-#define MAPSEC_SEVII_ISLE_24 0xAD
-#define MAPSEC_NAVEL_ROCK_FRLG 0xAE
-#define MAPSEC_MT_EMBER 0xAF
-#define MAPSEC_BERRY_FOREST 0xB0
-#define MAPSEC_ICEFALL_CAVE 0xB1
-#define MAPSEC_ROCKET_WAREHOUSE 0xB2
-#define MAPSEC_TRAINER_TOWER_2 0xB3
-#define MAPSEC_DOTTED_HOLE 0xB4
-#define MAPSEC_LOST_CAVE 0xB5
-#define MAPSEC_PATTERN_BUSH 0xB6
-#define MAPSEC_ALTERING_CAVE_FRLG 0xB7
-#define MAPSEC_TANOBY_CHAMBERS 0xB8
-#define MAPSEC_THREE_ISLE_PATH 0xB9
-#define MAPSEC_TANOBY_KEY 0xBA
-#define MAPSEC_BIRTH_ISLAND_FRLG 0xBB
-#define MAPSEC_MONEAN_CHAMBER 0xBC
-#define MAPSEC_LIPTOO_CHAMBER 0xBD
-#define MAPSEC_WEEPTH_CHAMBER 0xBE
-#define MAPSEC_DILFORD_CHAMBER 0xBF
-#define MAPSEC_SCUFIB_CHAMBER 0xC0
-#define MAPSEC_RIXY_CHAMBER 0xC1
-#define MAPSEC_VIAPOIS_CHAMBER 0xC2
-#define MAPSEC_EMBER_SPA 0xC3
-#define MAPSEC_SPECIAL_AREA 0xC4
-#define MAPSEC_AQUA_HIDEOUT 0xC5
-#define MAPSEC_MAGMA_HIDEOUT 0xC6
-#define MAPSEC_MIRAGE_TOWER 0xC7
-#define MAPSEC_BIRTH_ISLAND 0xC8
-#define MAPSEC_FARAWAY_ISLAND 0xC9
-#define MAPSEC_ARTISAN_CAVE 0xCA
-#define MAPSEC_MARINE_CAVE 0xCB
-#define MAPSEC_UNDERWATER_MARINE_CAVE 0xCC
-#define MAPSEC_TERRA_CAVE 0xCD
-#define MAPSEC_UNDERWATER_105 0xCE
-#define MAPSEC_UNDERWATER_125 0xCF
-#define MAPSEC_UNDERWATER_129 0xD0
-#define MAPSEC_DESERT_UNDERPASS 0xD1
-#define MAPSEC_ALTERING_CAVE 0xD2
-#define MAPSEC_NAVEL_ROCK 0xD3
-#define MAPSEC_TRAINER_HILL 0xD4
-#define MAPSEC_NONE 0xD5
-
-#define METLOC_SPECIAL_EGG 0xFD
-#define METLOC_IN_GAME_TRADE 0xFE
-#define METLOC_FATEFUL_ENCOUNTER 0xFF
-
-#define KANTO_MAPSEC_START MAPSEC_PALLET_TOWN
-#define KANTO_MAPSEC_END MAPSEC_SPECIAL_AREA
-#define KANTO_MAPSEC_COUNT (KANTO_MAPSEC_END - KANTO_MAPSEC_START + 1)
-
-#endif //GUARD_REGIONMAPSEC_H
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/contest.h b/include/contest.h
index a10ec5babd..80a1370541 100644
--- a/include/contest.h
+++ b/include/contest.h
@@ -295,11 +295,11 @@ struct ContestResources
struct ContestGraphicsState *gfxState;
struct ContestMoveAnimData *moveAnim;
struct ContestTV *tv;
- struct ContestUnused * unused;
+ struct ContestUnused *unused;
u8 *contestBgTilemaps[CONTESTANT_COUNT];
- void * boxBlinkTiles1;
- void * boxBlinkTiles2;
- void * animBgTileBuffer;
+ void *boxBlinkTiles1;
+ void *boxBlinkTiles2;
+ void *animBgTileBuffer;
};
#define eContest (*gContestResources->contest)
diff --git a/include/contest_ai.h b/include/contest_ai.h
index 20b9eec10d..4ba2c9ca2e 100644
--- a/include/contest_ai.h
+++ b/include/contest_ai.h
@@ -10,7 +10,7 @@ enum
CONTESTAI_DO_NOT_PROCESS
};
-void ContestAI_ResetAI(u8);
+void ContestAI_ResetAI(u8 contestantAI);
u8 ContestAI_GetActionToUse(void);
#endif // GUARD_CONTESTAI_H
diff --git a/include/contest_link.h b/include/contest_link.h
index cd26825246..091d344609 100644
--- a/include/contest_link.h
+++ b/include/contest_link.h
@@ -1,23 +1,23 @@
#ifndef GUARD_CONTEST_LINK_H
#define GUARD_CONTEST_LINK_H
-void Task_LinkContest_CommunicateAppealsState(u8);
-void Task_LinkContest_CommunicateFinalStandings(u8);
-void Task_LinkContest_Init(u8);
-void Task_LinkContest_CommunicateMonsRS(u8);
-void Task_LinkContest_CommunicateRngRS(u8);
-void Task_LinkContest_CommunicateLeaderIdsRS(u8);
-void Task_LinkContest_CommunicateCategoryRS(u8);
-void Task_LinkContest_CommunicateMonIdxs(u8);
-void Task_LinkContest_StartCommunicationEm(u8);
-void Task_LinkContest_CommunicateRound1Points(u8);
-void Task_LinkContest_CommunicateTurnOrder(u8);
-void Task_LinkContest_FinalizeConnection(u8);
-void Task_LinkContest_CommunicateMoveSelections(u8);
-bool32 LinkContest_TryLinkStandby(s16 *);
-bool32 LinkContest_SendBlock(void *, u16);
+void Task_LinkContest_CommunicateAppealsState(u8 taskId);
+void Task_LinkContest_CommunicateFinalStandings(u8 taskId);
+void Task_LinkContest_Init(u8 taskId);
+void Task_LinkContest_CommunicateMonsRS(u8 taskId);
+void Task_LinkContest_CommunicateRngRS(u8 taskId);
+void Task_LinkContest_CommunicateLeaderIdsRS(u8 taskId);
+void Task_LinkContest_CommunicateCategoryRS(u8 taskId);
+void Task_LinkContest_CommunicateMonIdxs(u8 taskId);
+void Task_LinkContest_StartCommunicationEm(u8 taskId);
+void Task_LinkContest_CommunicateRound1Points(u8 taskId);
+void Task_LinkContest_CommunicateTurnOrder(u8 taskId);
+void Task_LinkContest_FinalizeConnection(u8 taskId);
+void Task_LinkContest_CommunicateMoveSelections(u8 taskId);
+bool32 LinkContest_TryLinkStandby(s16 *state);
+bool32 LinkContest_SendBlock(void *src, u16 size);
bool8 LinkContest_GetBlockReceivedFromAllPlayers(void);
-bool8 LinkContest_GetBlockReceived(u8);
-u8 LinkContest_GetLeaderIndex(u8 *);
+bool8 LinkContest_GetBlockReceived(u8 flag);
+u8 LinkContest_GetLeaderIndex(u8 *ids);
#endif //GUARD_CONTEST_LINK_H
diff --git a/include/contest_painting.h b/include/contest_painting.h
index f16a0d2f32..06277dec1f 100644
--- a/include/contest_painting.h
+++ b/include/contest_painting.h
@@ -1,7 +1,7 @@
#ifndef GUARD_CONTESTPAINTING_H
#define GUARD_CONTESTPAINTING_H
-void SetContestWinnerForPainting(int);
+void SetContestWinnerForPainting(int contestWinnerId);
void CB2_ContestPainting(void);
#endif
diff --git a/include/contest_util.h b/include/contest_util.h
index 1e97d91d35..fcf742012f 100644
--- a/include/contest_util.h
+++ b/include/contest_util.h
@@ -6,7 +6,7 @@ void BufferContestantMonNickname(void);
void StartContest(void);
void BufferContestantMonSpecies(void);
void ShowContestResults(void);
-void ContestLinkTransfer(u8);
+void ContestLinkTransfer(u8 category);
void ShowContestPainting(void);
u16 GetContestRand(void);
u8 CountPlayerMuseumPaintings(void);
diff --git a/include/coord_event_weather.h b/include/coord_event_weather.h
index 86fb487932..92cceae68f 100644
--- a/include/coord_event_weather.h
+++ b/include/coord_event_weather.h
@@ -1,6 +1,6 @@
#ifndef GUARD_COORD_EVENT_WEATHER_H
#define GUARD_COORD_EVENT_WEATHER_H
-void DoCoordEventWeather(u8);
+void DoCoordEventWeather(u8 coordEventWeather);
#endif // GUARD_COORD_EVENT_WEATHER_H
diff --git a/include/data.h b/include/data.h
index 07511f1d7f..3a697d573c 100644
--- a/include/data.h
+++ b/include/data.h
@@ -81,6 +81,12 @@ struct TrainerMon
#define TRAINER_PARTY(partyArray) partyArray, .partySize = ARRAY_COUNT(partyArray)
+enum TrainerBattleType
+{
+ TRAINER_BATTLE_TYPE_SINGLES,
+ TRAINER_BATTLE_TYPE_DOUBLES,
+};
+
struct Trainer
{
/*0x00*/ u64 aiFlags;
@@ -90,8 +96,7 @@ struct Trainer
/*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;
@@ -253,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)
diff --git a/include/decoration.h b/include/decoration.h
index db0f337f4d..415ffb85ae 100644
--- a/include/decoration.h
+++ b/include/decoration.h
@@ -58,10 +58,10 @@ extern u8 gCurDecorationIndex;
void InitDecorationContextItems(void);
void DoSecretBaseDecorationMenu(u8 taskId);
-void ShowDecorationOnMap(u16 mapX, u16 mapY, u16 decor);
+void ShowDecorationOnMap(u16 mapX, u16 mapY, u16 decoration);
void DoPlayerRoomDecorationMenu(u8 taskId);
void ShowDecorationCategoriesWindow(u8 taskId);
-void CopyDecorationCategoryName(u8 *dest, u8 decorCat);
+void CopyDecorationCategoryName(u8 *dest, u8 category);
bool8 IsSelectedDecorInThePC(void);
u8 AddDecorationIconObject(u8 decor, s16 x, s16 y, u8 priority, u16 tilesTag, u16 paletteTag);
diff --git a/include/decoration_inventory.h b/include/decoration_inventory.h
index f43b91d7a1..6bb9910ba4 100644
--- a/include/decoration_inventory.h
+++ b/include/decoration_inventory.h
@@ -12,9 +12,9 @@ extern struct DecorationInventory gDecorationInventories[];
void SetDecorationInventoriesPointers(void);
void ClearDecorationInventories(void);
s8 GetFirstEmptyDecorSlot(u8 category);
-u8 CheckHasDecoration(u8 decor);
-u8 DecorationAdd(u8 decor);
-u8 DecorationCheckSpace(u8 decor);
+bool8 CheckHasDecoration(u8 decor);
+bool8 DecorationAdd(u8 decor);
+bool8 DecorationCheckSpace(u8 decor);
s8 DecorationRemove(u8 decor);
void CondenseDecorationsInCategory(u8 category);
u8 GetNumOwnedDecorationsInCategory(u8 category);
diff --git a/include/easy_chat.h b/include/easy_chat.h
index 2cec441d55..0434bb0100 100644
--- a/include/easy_chat.h
+++ b/include/easy_chat.h
@@ -122,16 +122,16 @@ struct EasyChatWordsByLetter
void InitEasyChatPhrases(void);
void ShowEasyChatScreen(void);
-u8 *CopyEasyChatWord(u8 *dest, u16 word);
-bool32 IsEasyChatAnswerUnlocked(int word);
+u8 *CopyEasyChatWord(u8 *dest, u16 easyChatWord);
+bool32 IsEasyChatAnswerUnlocked(int easyChatWord);
void InitializeEasyChatWordArray(u16 *words, u16 length);
u8 *ConvertEasyChatWordsToString(u8 *dest, const u16 *src, u16 columns, u16 rows);
-bool8 IsBardWordInvalid(u16 word);
-u16 GetRandomEasyChatWordFromGroup(u16 group);
+bool8 IsBardWordInvalid(u16 easyChatWord);
+u16 GetRandomEasyChatWordFromGroup(u16 groupId);
u16 UnlockRandomTrendySaying(void);
-u16 EasyChat_GetNumWordsInGroup(u8);
-u16 GetRandomEasyChatWordFromUnlockedGroup(u16);
-void DoEasyChatScreen(u8 type, u16 *words, MainCallback callback, u8 displayedPersonType);
+u16 EasyChat_GetNumWordsInGroup(u8 groupId);
+u16 GetRandomEasyChatWordFromUnlockedGroup(u16 groupId);
+void DoEasyChatScreen(u8 type, u16 *words, MainCallback exitCallback, u8 displayedPersonType);
void InitQuestionnaireWords(void);
void UnlockTrendySaying(u8 wordIndex);
diff --git a/include/ereader_helpers.h b/include/ereader_helpers.h
index 29386bcb22..0e3d122b58 100755
--- a/include/ereader_helpers.h
+++ b/include/ereader_helpers.h
@@ -49,10 +49,10 @@ struct EReaderTrainerHillSet
u8 unk_ec0[40];
}; // size = 0xf00
-bool8 ValidateTrainerHillData(struct EReaderTrainerHillSet *);
-bool32 TryWriteTrainerHill(struct EReaderTrainerHillSet *);
+bool8 ValidateTrainerHillData(struct EReaderTrainerHillSet *hillSet);
+bool32 TryWriteTrainerHill(struct EReaderTrainerHillSet *hillSet);
bool32 ReadTrainerHillAndValidate(void);
-int EReaderHandleTransfer(u8, size_t, const void *, void *);
+int EReaderHandleTransfer(u8 mode, size_t size, const void *data, void *recvBuffer);
void EReaderHelper_Timer3Callback(void);
void EReaderHelper_SerialCallback(void);
void EReaderHelper_SaveRegsState(void);
diff --git a/include/event_object_movement.h b/include/event_object_movement.h
index 7d8309257e..51cc2c991c 100644
--- a/include/event_object_movement.h
+++ b/include/event_object_movement.h
@@ -134,13 +134,13 @@ void LoadSpecialObjectReflectionPalette(u16 tag, u8 slot);
void TryMoveObjectEventToMapCoords(u8 localId, u8 mapNum, u8 mapGroup, s16 x, s16 y);
void PatchObjectPalette(u16 paletteTag, u8 paletteSlot);
void SpawnObjectEventsOnReturnToField(s16 x, s16 y);
-void OverrideSecretBaseDecorationSpriteScript(u8 localId, u8 mapNum, u8 mapGroup, u8 decorCat);
+void OverrideSecretBaseDecorationSpriteScript(u8 localId, u8 mapNum, u8 mapGroup, u8 decorationCategory);
void GetMapCoordsFromSpritePos(s16 x, s16 y, s16 *destX, s16 *destY);
u8 GetFaceDirectionAnimNum(u8 direction);
void SetSpritePosToOffsetMapCoords(s16 *x, s16 *y, s16 dx, s16 dy);
void ClearObjectEventMovement(struct ObjectEvent *objectEvent, struct Sprite *sprite);
-void ObjectEventClearHeldMovement(struct ObjectEvent *);
-void ObjectEventClearHeldMovementIfActive(struct ObjectEvent *);
+void ObjectEventClearHeldMovement(struct ObjectEvent *objectEvent);
+void ObjectEventClearHeldMovementIfActive(struct ObjectEvent *objectEvent);
struct Pokemon *GetFirstLiveMon(void);
u16 GetOverworldWeatherSpecies(u16 species);
void UpdateFollowingPokemon(void);
@@ -150,16 +150,16 @@ 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, void (*)(struct Sprite *), s16 x, s16 y, u8 subpriority);
+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 *);
+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 *, struct Sprite *);
-void ObjectEventSetGraphicsId(struct ObjectEvent *, u16 graphicsId);
-void ObjectEventTurn(struct ObjectEvent *, u8 direction);
+u8 UpdateSpritePaletteByTemplate(const struct SpriteTemplate *spriteTemplate, struct Sprite *sprite);
+void ObjectEventSetGraphicsId(struct ObjectEvent *objectEvent, u16 graphicsId);
+void ObjectEventTurn(struct ObjectEvent *objectEvent, u8 direction);
void ObjectEventTurnByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup, u8 direction);
const struct ObjectEventGraphicsInfo *GetObjectEventGraphicsInfo(u16 graphicsId);
void SetObjectInvisibility(u8 localId, u8 mapNum, u8 mapGroup, bool8 invisible);
@@ -171,12 +171,12 @@ void ResetObjectSubpriority(u8 localId, u8 mapNum, u8 mapGroup);
void SetObjectSubpriority(u8 localId, u8 mapNum, u8 mapGroup, u8 subpriority);
void AllowObjectAtPosTriggerGroundEffects(s16 x, s16 y);
void ObjectEventGetLocalIdAndMap(struct ObjectEvent *objectEvent, void *localId, void *mapNum, void *mapGroup);
-void ShiftObjectEventCoords(struct ObjectEvent *, s16 x, s16 y);
-void MoveObjectEventToMapCoords(struct ObjectEvent *, s16 x, s16 y);
+void ShiftObjectEventCoords(struct ObjectEvent *objectEvent, s16 x, s16 y);
+void MoveObjectEventToMapCoords(struct ObjectEvent *objectEvent, s16 x, s16 y);
void TryOverrideObjectEventTemplateCoords(u8 localId, u8 mapNum, u8 mapGroup);
-void InitObjectEventPalettes(u8 palSlot);
-void UpdateObjectEventCurrentMovement(struct ObjectEvent *, struct Sprite *, bool8(struct ObjectEvent *, struct Sprite *));
-u8 ObjectEventFaceOppositeDirection(struct ObjectEvent *, u8 direction);
+void InitObjectEventPalettes(u8 reflectionType);
+void UpdateObjectEventCurrentMovement(struct ObjectEvent *objectEvent, struct Sprite *sprite, bool8 (*callback)(struct ObjectEvent *, struct Sprite *));
+bool8 ObjectEventFaceOppositeDirection(struct ObjectEvent *objectEvent, u8 direction);
u8 GetOppositeDirection(u8 direction);
u8 GetWalkInPlaceFasterMovementAction(u32);
u8 GetWalkInPlaceFastMovementAction(u32);
@@ -185,8 +185,8 @@ u8 GetWalkInPlaceSlowMovementAction(u32);
u8 GetCollisionAtCoords(struct ObjectEvent *, s16 x, s16 y, u32 dir);
u32 GetObjectObjectCollidesWith(struct ObjectEvent *objectEvent, s16 x, s16 y, bool32 addCoords);
void MoveCoords(u8 direction, s16 *x, s16 *y);
-bool8 ObjectEventIsHeldMovementActive(struct ObjectEvent *);
-u8 ObjectEventClearHeldMovementIfFinished(struct ObjectEvent *);
+bool8 ObjectEventIsHeldMovementActive(struct ObjectEvent *objectEvent);
+u8 ObjectEventClearHeldMovementIfFinished(struct ObjectEvent *objectEvent);
u8 GetObjectEventIdByPosition(u16 x, u16 y, u8 elevation);
void SetTrainerMovementType(struct ObjectEvent *objectEvent, u8 movementType);
u8 GetTrainerFacingDirectionMovementType(u8 direction);
@@ -230,12 +230,12 @@ u8 GetWalkSlowMovementAction(u32);
u8 GetWalkSlowStairsMovementAction(u32);
u8 GetJumpMovementAction(u32);
u8 ElevationToPriority(u8 elevation);
-void ObjectEventUpdateElevation(struct ObjectEvent *objEvent, struct Sprite *);
-void SetObjectSubpriorityByElevation(u8 elevation, struct Sprite *, u8 subpriority);
-void UnfreezeObjectEvent(struct ObjectEvent *);
-u8 FindLockedObjectEventIndex(struct ObjectEvent *);
-void SetAndStartSpriteAnim(struct Sprite *, u8 animNum, u8 animCmdIndex);
-bool8 SpriteAnimEnded(struct Sprite *);
+void ObjectEventUpdateElevation(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+void SetObjectSubpriorityByElevation(u8 elevation, struct Sprite *sprite, u8 subpriority);
+void UnfreezeObjectEvent(struct ObjectEvent *objectEvent);
+u8 FindLockedObjectEventIndex(struct ObjectEvent *objectEvent);
+void SetAndStartSpriteAnim(struct Sprite *sprite, u8 animNum, u8 animCmdIndex);
+bool8 SpriteAnimEnded(struct Sprite *sprite);
void UnfreezeObjectEvents(void);
void FreezeObjectEventsExceptOne(u8 objectEventId);
void FreezeObjectEventsExceptTwo(u8 objectEventId1, u8 objectEventId2);
@@ -260,75 +260,75 @@ 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 *);
-void MovementType_LookAround(struct Sprite *);
-void MovementType_WanderAround(struct Sprite *);
-void MovementType_WanderUpAndDown(struct Sprite *);
-void MovementType_WanderLeftAndRight(struct Sprite *);
-void MovementType_FaceDirection(struct Sprite *);
-void MovementType_Player(struct Sprite *);
-void MovementType_BerryTreeGrowth(struct Sprite *);
-void MovementType_FaceDownAndUp(struct Sprite *);
-void MovementType_FaceLeftAndRight(struct Sprite *);
-void MovementType_FaceUpAndLeft(struct Sprite *);
-void MovementType_FaceUpAndRight(struct Sprite *);
-void MovementType_FaceDownAndLeft(struct Sprite *);
-void MovementType_FaceDownAndRight(struct Sprite *);
-void MovementType_FaceDownUpAndLeft(struct Sprite *);
-void MovementType_FaceDownUpAndRight(struct Sprite *);
-void MovementType_FaceUpRightAndLeft(struct Sprite *);
-void MovementType_FaceDownRightAndLeft(struct Sprite *);
-void MovementType_RotateCounterclockwise(struct Sprite *);
-void MovementType_RotateClockwise(struct Sprite *);
-void MovementType_WalkBackAndForth(struct Sprite *);
-void MovementType_WalkSequenceUpRightLeftDown(struct Sprite *);
-void MovementType_WalkSequenceRightLeftDownUp(struct Sprite *);
-void MovementType_WalkSequenceDownUpRightLeft(struct Sprite *);
-void MovementType_WalkSequenceLeftDownUpRight(struct Sprite *);
-void MovementType_WalkSequenceUpLeftRightDown(struct Sprite *);
-void MovementType_WalkSequenceLeftRightDownUp(struct Sprite *);
-void MovementType_WalkSequenceDownUpLeftRight(struct Sprite *);
-void MovementType_WalkSequenceRightDownUpLeft(struct Sprite *);
-void MovementType_WalkSequenceLeftUpDownRight(struct Sprite *);
-void MovementType_WalkSequenceUpDownRightLeft(struct Sprite *);
-void MovementType_WalkSequenceRightLeftUpDown(struct Sprite *);
-void MovementType_WalkSequenceDownRightLeftUp(struct Sprite *);
-void MovementType_WalkSequenceRightUpDownLeft(struct Sprite *);
-void MovementType_WalkSequenceUpDownLeftRight(struct Sprite *);
-void MovementType_WalkSequenceLeftRightUpDown(struct Sprite *);
-void MovementType_WalkSequenceDownLeftRightUp(struct Sprite *);
-void MovementType_WalkSequenceUpLeftDownRight(struct Sprite *);
-void MovementType_WalkSequenceDownRightUpLeft(struct Sprite *);
-void MovementType_WalkSequenceLeftDownRightUp(struct Sprite *);
-void MovementType_WalkSequenceRightUpLeftDown(struct Sprite *);
-void MovementType_WalkSequenceUpRightDownLeft(struct Sprite *);
-void MovementType_WalkSequenceDownLeftUpRight(struct Sprite *);
-void MovementType_WalkSequenceLeftUpRightDown(struct Sprite *);
-void MovementType_WalkSequenceRightDownLeftUp(struct Sprite *);
-void MovementType_CopyPlayer(struct Sprite *);
-void MovementType_TreeDisguise(struct Sprite *);
-void MovementType_MountainDisguise(struct Sprite *);
-void MovementType_CopyPlayerInGrass(struct Sprite *);
-void MovementType_Buried(struct Sprite *);
-void MovementType_WalkInPlace(struct Sprite *);
-void MovementType_JogInPlace(struct Sprite *);
-void MovementType_RunInPlace(struct Sprite *);
-void MovementType_Invisible(struct Sprite *);
-void MovementType_WalkSlowlyInPlace(struct Sprite *);
-void MovementType_FollowPlayer(struct Sprite *);
+void MovementType_None(struct Sprite *sprite);
+void MovementType_LookAround(struct Sprite *sprite);
+void MovementType_WanderAround(struct Sprite *sprite);
+void MovementType_WanderUpAndDown(struct Sprite *sprite);
+void MovementType_WanderLeftAndRight(struct Sprite *sprite);
+void MovementType_FaceDirection(struct Sprite *sprite);
+void MovementType_Player(struct Sprite *sprite);
+void MovementType_BerryTreeGrowth(struct Sprite *sprite);
+void MovementType_FaceDownAndUp(struct Sprite *sprite);
+void MovementType_FaceLeftAndRight(struct Sprite *sprite);
+void MovementType_FaceUpAndLeft(struct Sprite *sprite);
+void MovementType_FaceUpAndRight(struct Sprite *sprite);
+void MovementType_FaceDownAndLeft(struct Sprite *sprite);
+void MovementType_FaceDownAndRight(struct Sprite *sprite);
+void MovementType_FaceDownUpAndLeft(struct Sprite *sprite);
+void MovementType_FaceDownUpAndRight(struct Sprite *sprite);
+void MovementType_FaceUpRightAndLeft(struct Sprite *sprite);
+void MovementType_FaceDownRightAndLeft(struct Sprite *sprite);
+void MovementType_RotateCounterclockwise(struct Sprite *sprite);
+void MovementType_RotateClockwise(struct Sprite *sprite);
+void MovementType_WalkBackAndForth(struct Sprite *sprite);
+void MovementType_WalkSequenceUpRightLeftDown(struct Sprite *sprite);
+void MovementType_WalkSequenceRightLeftDownUp(struct Sprite *sprite);
+void MovementType_WalkSequenceDownUpRightLeft(struct Sprite *sprite);
+void MovementType_WalkSequenceLeftDownUpRight(struct Sprite *sprite);
+void MovementType_WalkSequenceUpLeftRightDown(struct Sprite *sprite);
+void MovementType_WalkSequenceLeftRightDownUp(struct Sprite *sprite);
+void MovementType_WalkSequenceDownUpLeftRight(struct Sprite *sprite);
+void MovementType_WalkSequenceRightDownUpLeft(struct Sprite *sprite);
+void MovementType_WalkSequenceLeftUpDownRight(struct Sprite *sprite);
+void MovementType_WalkSequenceUpDownRightLeft(struct Sprite *sprite);
+void MovementType_WalkSequenceRightLeftUpDown(struct Sprite *sprite);
+void MovementType_WalkSequenceDownRightLeftUp(struct Sprite *sprite);
+void MovementType_WalkSequenceRightUpDownLeft(struct Sprite *sprite);
+void MovementType_WalkSequenceUpDownLeftRight(struct Sprite *sprite);
+void MovementType_WalkSequenceLeftRightUpDown(struct Sprite *sprite);
+void MovementType_WalkSequenceDownLeftRightUp(struct Sprite *sprite);
+void MovementType_WalkSequenceUpLeftDownRight(struct Sprite *sprite);
+void MovementType_WalkSequenceDownRightUpLeft(struct Sprite *sprite);
+void MovementType_WalkSequenceLeftDownRightUp(struct Sprite *sprite);
+void MovementType_WalkSequenceRightUpLeftDown(struct Sprite *sprite);
+void MovementType_WalkSequenceUpRightDownLeft(struct Sprite *sprite);
+void MovementType_WalkSequenceDownLeftUpRight(struct Sprite *sprite);
+void MovementType_WalkSequenceLeftUpRightDown(struct Sprite *sprite);
+void MovementType_WalkSequenceRightDownLeftUp(struct Sprite *sprite);
+void MovementType_CopyPlayer(struct Sprite *sprite);
+void MovementType_TreeDisguise(struct Sprite *sprite);
+void MovementType_MountainDisguise(struct Sprite *sprite);
+void MovementType_CopyPlayerInGrass(struct Sprite *sprite);
+void MovementType_Buried(struct Sprite *sprite);
+void MovementType_WalkInPlace(struct Sprite *sprite);
+void MovementType_JogInPlace(struct Sprite *sprite);
+void MovementType_RunInPlace(struct Sprite *sprite);
+void MovementType_Invisible(struct Sprite *sprite);
+void MovementType_WalkSlowlyInPlace(struct Sprite *sprite);
+void MovementType_FollowPlayer(struct Sprite *sprite);
u8 GetSlideMovementAction(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);
bool8 IsElevationMismatchAt(u8, s16, s16);
-u8 MovementType_WanderAround_Step0(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_WanderAround_Step1(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_WanderAround_Step2(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_Wander_Step3(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_WanderAround_Step4(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_WanderAround_Step5(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_WanderAround_Step6(struct ObjectEvent *, struct Sprite *);
+u8 MovementType_WanderAround_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_WanderAround_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_WanderAround_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_Wander_Step3(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_WanderAround_Step4(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_WanderAround_Step5(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_WanderAround_Step6(struct ObjectEvent *objectEvent, struct Sprite *sprite);
u8 GetVectorDirection(s16 dx, s16 dy, s16 absdx, s16 absdy);
u8 GetLimitedVectorDirection_SouthNorth(s16 dx, s16 dy, s16 absdx, s16 absdy);
u8 GetLimitedVectorDirection_WestEast(s16 dx, s16 dy, s16 absdx, s16 absdy);
@@ -340,156 +340,156 @@ u8 GetLimitedVectorDirection_SouthNorthWest(s16 dx, s16 dy, s16 absdx, s16 absdy
u8 GetLimitedVectorDirection_SouthNorthEast(s16 dx, s16 dy, s16 absdx, s16 absdy);
u8 GetLimitedVectorDirection_NorthWestEast(s16 dx, s16 dy, s16 absdx, s16 absdy);
u8 GetLimitedVectorDirection_SouthWestEast(s16 dx, s16 dy, s16 absdx, s16 absdy);
-u8 MovementType_LookAround_Step0(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_LookAround_Step1(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_LookAround_Step2(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_LookAround_Step3(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_LookAround_Step4(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_WanderUpAndDown_Step0(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_WanderUpAndDown_Step1(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_WanderUpAndDown_Step2(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_WanderUpAndDown_Step4(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_WanderUpAndDown_Step5(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_WanderUpAndDown_Step6(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_WanderLeftAndRight_Step0(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_WanderLeftAndRight_Step1(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_WanderLeftAndRight_Step2(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_WanderLeftAndRight_Step4(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_WanderLeftAndRight_Step5(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_WanderLeftAndRight_Step6(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_FaceDirection_Step0(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_FaceDirection_Step1(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_FaceDirection_Step2(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_BerryTreeGrowth_Normal(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_BerryTreeGrowth_Move(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_BerryTreeGrowth_SparkleStart(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_BerryTreeGrowth_Sparkle(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_BerryTreeGrowth_SparkleEnd(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_FaceDownAndUp_Step0(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_FaceDownAndUp_Step1(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_FaceDownAndUp_Step2(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_FaceDownAndUp_Step3(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_FaceDownAndUp_Step4(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_FaceLeftAndRight_Step0(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_FaceLeftAndRight_Step1(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_FaceLeftAndRight_Step2(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_FaceLeftAndRight_Step3(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_FaceLeftAndRight_Step4(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_FaceUpAndLeft_Step0(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_FaceUpAndLeft_Step1(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_FaceUpAndLeft_Step2(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_FaceUpAndLeft_Step3(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_FaceUpAndLeft_Step4(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_FaceUpAndRight_Step0(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_FaceUpAndRight_Step1(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_FaceUpAndRight_Step2(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_FaceUpAndRight_Step3(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_FaceUpAndRight_Step4(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_FaceDownAndLeft_Step0(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_FaceDownAndLeft_Step1(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_FaceDownAndLeft_Step2(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_FaceDownAndLeft_Step3(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_FaceDownAndLeft_Step4(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_FaceDownAndRight_Step0(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_FaceDownAndRight_Step1(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_FaceDownAndRight_Step2(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_FaceDownAndRight_Step3(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_FaceDownAndRight_Step4(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_FaceDownUpAndLeft_Step0(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_FaceDownUpAndLeft_Step1(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_FaceDownUpAndLeft_Step2(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_FaceDownUpAndLeft_Step3(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_FaceDownUpAndLeft_Step4(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_FaceDownUpAndRight_Step0(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_FaceDownUpAndRight_Step1(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_FaceDownUpAndRight_Step2(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_FaceDownUpAndRight_Step3(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_FaceDownUpAndRight_Step4(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_FaceUpLeftAndRight_Step0(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_FaceUpLeftAndRight_Step1(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_FaceUpLeftAndRight_Step2(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_FaceUpLeftAndRight_Step3(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_FaceUpLeftAndRight_Step4(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_FaceDownLeftAndRight_Step0(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_FaceDownLeftAndRight_Step1(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_FaceDownLeftAndRight_Step2(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_FaceDownLeftAndRight_Step3(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_FaceDownLeftAndRight_Step4(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_RotateCounterclockwise_Step0(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_RotateCounterclockwise_Step1(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_RotateCounterclockwise_Step2(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_RotateCounterclockwise_Step3(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_RotateClockwise_Step0(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_RotateClockwise_Step1(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_RotateClockwise_Step2(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_RotateClockwise_Step3(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_WalkBackAndForth_Step0(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_WalkBackAndForth_Step1(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_WalkBackAndForth_Step2(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_WalkBackAndForth_Step3(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_WalkSequence_Step0(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_WalkSequence_Step2(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_WalkSequenceUpRightLeftDown_Step1(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_WalkSequenceRightLeftDownUp_Step1(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_WalkSequenceDownUpRightLeft_Step1(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_WalkSequenceLeftDownUpRight_Step1(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_WalkSequenceUpLeftRightDown_Step1(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_WalkSequenceLeftRightDownUp_Step1(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_WalkSequenceDownUpLeftRight_Step1(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_WalkSequenceRightDownUpLeft_Step1(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_WalkSequenceLeftUpDownRight_Step1(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_WalkSequenceUpDownRightLeft_Step1(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_WalkSequenceRightLeftUpDown_Step1(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_WalkSequenceDownRightLeftUp_Step1(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_WalkSequenceRightUpDownLeft_Step1(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_WalkSequenceUpDownLeftRight_Step1(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_WalkSequenceLeftRightUpDown_Step1(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_WalkSequenceDownLeftRightUp_Step1(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_WalkSequenceUpLeftDownRight_Step1(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_WalkSequenceDownRightUpLeft_Step1(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_WalkSequenceLeftDownRightUp_Step1(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_WalkSequenceRightUpLeftDown_Step1(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_WalkSequenceUpRightDownLeft_Step1(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_WalkSequenceDownLeftUpRight_Step1(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_WalkSequenceLeftUpRightDown_Step1(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_WalkSequenceRightDownLeftUp_Step1(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_CopyPlayer_Step0(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_CopyPlayer_Step1(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_CopyPlayer_Step2(struct ObjectEvent *, struct Sprite *);
-bool8 CopyablePlayerMovement_None(struct ObjectEvent *, struct Sprite *, u8, bool8(u8));
-bool8 CopyablePlayerMovement_FaceDirection(struct ObjectEvent *, struct Sprite *, u8, bool8(u8));
-bool8 CopyablePlayerMovement_WalkNormal(struct ObjectEvent *, struct Sprite *, u8, bool8(u8));
-bool8 CopyablePlayerMovement_WalkFast(struct ObjectEvent *, struct Sprite *, u8, bool8(u8));
-bool8 CopyablePlayerMovement_WalkFaster(struct ObjectEvent *, struct Sprite *, u8, bool8(u8));
-bool8 CopyablePlayerMovement_Slide(struct ObjectEvent *, struct Sprite *, u8, bool8(u8));
-bool8 CopyablePlayerMovement_JumpInPlace(struct ObjectEvent *, struct Sprite *, u8, bool8(u8));
-bool8 CopyablePlayerMovement_Jump(struct ObjectEvent *, struct Sprite *, u8, bool8(u8));
+u8 MovementType_LookAround_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_LookAround_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_LookAround_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_LookAround_Step3(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_LookAround_Step4(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_WanderUpAndDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_WanderUpAndDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_WanderUpAndDown_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_WanderUpAndDown_Step4(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_WanderUpAndDown_Step5(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_WanderUpAndDown_Step6(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_WanderLeftAndRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_WanderLeftAndRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_WanderLeftAndRight_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_WanderLeftAndRight_Step4(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_WanderLeftAndRight_Step5(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_WanderLeftAndRight_Step6(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_FaceDirection_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_FaceDirection_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_FaceDirection_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_BerryTreeGrowth_Normal(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_BerryTreeGrowth_Move(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_BerryTreeGrowth_SparkleStart(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_BerryTreeGrowth_Sparkle(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_BerryTreeGrowth_SparkleEnd(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_FaceDownAndUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_FaceDownAndUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_FaceDownAndUp_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_FaceDownAndUp_Step3(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_FaceDownAndUp_Step4(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_FaceLeftAndRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_FaceLeftAndRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_FaceLeftAndRight_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_FaceLeftAndRight_Step3(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_FaceLeftAndRight_Step4(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_FaceUpAndLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_FaceUpAndLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_FaceUpAndLeft_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_FaceUpAndLeft_Step3(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_FaceUpAndLeft_Step4(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_FaceUpAndRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_FaceUpAndRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_FaceUpAndRight_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_FaceUpAndRight_Step3(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_FaceUpAndRight_Step4(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_FaceDownAndLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_FaceDownAndLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_FaceDownAndLeft_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_FaceDownAndLeft_Step3(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_FaceDownAndLeft_Step4(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_FaceDownAndRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_FaceDownAndRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_FaceDownAndRight_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_FaceDownAndRight_Step3(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_FaceDownAndRight_Step4(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_FaceDownUpAndLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_FaceDownUpAndLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_FaceDownUpAndLeft_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_FaceDownUpAndLeft_Step3(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_FaceDownUpAndLeft_Step4(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_FaceDownUpAndRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_FaceDownUpAndRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_FaceDownUpAndRight_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_FaceDownUpAndRight_Step3(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_FaceDownUpAndRight_Step4(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_FaceUpLeftAndRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_FaceUpLeftAndRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_FaceUpLeftAndRight_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_FaceUpLeftAndRight_Step3(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_FaceUpLeftAndRight_Step4(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_FaceDownLeftAndRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_FaceDownLeftAndRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_FaceDownLeftAndRight_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_FaceDownLeftAndRight_Step3(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_FaceDownLeftAndRight_Step4(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_RotateCounterclockwise_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_RotateCounterclockwise_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_RotateCounterclockwise_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_RotateCounterclockwise_Step3(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_RotateClockwise_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_RotateClockwise_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_RotateClockwise_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_RotateClockwise_Step3(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_WalkBackAndForth_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_WalkBackAndForth_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_WalkBackAndForth_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_WalkBackAndForth_Step3(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_WalkSequence_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_WalkSequence_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_WalkSequenceUpRightLeftDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_WalkSequenceRightLeftDownUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_WalkSequenceDownUpRightLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_WalkSequenceLeftDownUpRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_WalkSequenceUpLeftRightDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_WalkSequenceLeftRightDownUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_WalkSequenceDownUpLeftRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_WalkSequenceRightDownUpLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_WalkSequenceLeftUpDownRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_WalkSequenceUpDownRightLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_WalkSequenceRightLeftUpDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_WalkSequenceDownRightLeftUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_WalkSequenceRightUpDownLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_WalkSequenceUpDownLeftRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_WalkSequenceLeftRightUpDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_WalkSequenceDownLeftRightUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_WalkSequenceUpLeftDownRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_WalkSequenceDownRightUpLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_WalkSequenceLeftDownRightUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_WalkSequenceRightUpLeftDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_WalkSequenceUpRightDownLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_WalkSequenceDownLeftUpRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_WalkSequenceLeftUpRightDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_WalkSequenceRightDownLeftUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_CopyPlayer_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_CopyPlayer_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_CopyPlayer_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 CopyablePlayerMovement_None(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8));
+bool8 CopyablePlayerMovement_FaceDirection(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8));
+bool8 CopyablePlayerMovement_WalkNormal(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8));
+bool8 CopyablePlayerMovement_WalkFast(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8));
+bool8 CopyablePlayerMovement_WalkFaster(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8));
+bool8 CopyablePlayerMovement_Slide(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8));
+bool8 CopyablePlayerMovement_JumpInPlace(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8));
+bool8 CopyablePlayerMovement_Jump(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8));
-u8 MovementType_FollowPlayer_Shadow(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_FollowPlayer_Active(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_FollowPlayer_Moving(struct ObjectEvent *, struct Sprite *);
+u8 MovementType_FollowPlayer_Shadow(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_FollowPlayer_Active(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_FollowPlayer_Moving(struct ObjectEvent *objectEvent, struct Sprite *sprite);
void StartSpriteAnimInDirection(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction, u8 animNum);
-bool8 FollowablePlayerMovement_Idle(struct ObjectEvent *, struct Sprite *, u8, bool8(u8));
-bool8 FollowablePlayerMovement_FaceDirection(struct ObjectEvent *, struct Sprite *, u8, bool8(u8));
-bool8 FollowablePlayerMovement_Step(struct ObjectEvent *, struct Sprite *, u8, bool8(u8));
-bool8 FollowablePlayerMovement_GoSpeed1(struct ObjectEvent *, struct Sprite *, u8, bool8(u8));
-bool8 FollowablePlayerMovement_GoSpeed2(struct ObjectEvent *, struct Sprite *, u8, bool8(u8));
-bool8 FollowablePlayerMovement_Slide(struct ObjectEvent *, struct Sprite *, u8, bool8(u8));
-bool8 FollowablePlayerMovement_JumpInPlace(struct ObjectEvent *, struct Sprite *, u8, bool8(u8));
-bool8 FollowablePlayerMovement_GoSpeed4(struct ObjectEvent *, struct Sprite *, u8, bool8(u8));
-bool8 FollowablePlayerMovement_Jump(struct ObjectEvent *, struct Sprite *, u8, bool8(u8));
-bool8 CopyablePlayerMovement_Jump2(struct ObjectEvent *, struct Sprite *, u8, bool8(u8));
-u8 MovementType_CopyPlayerInGrass_Step1(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_Buried_Step0(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_WalkInPlace_Step0(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_MoveInPlace_Step1(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_WalkSlowlyInPlace_Step0(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_JogInPlace_Step0(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_RunInPlace_Step0(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_Invisible_Step0(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_Invisible_Step1(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_Invisible_Step2(struct ObjectEvent *, struct Sprite *);
+bool8 FollowablePlayerMovement_Idle(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8, bool8 tileCallback(u8));
+bool8 FollowablePlayerMovement_FaceDirection(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8, bool8 tileCallback(u8));
+bool8 FollowablePlayerMovement_Step(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8, bool8 tileCallback(u8));
+bool8 FollowablePlayerMovement_GoSpeed1(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8, bool8 tileCallback(u8));
+bool8 FollowablePlayerMovement_GoSpeed2(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8, bool8 tileCallback(u8));
+bool8 FollowablePlayerMovement_Slide(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8, bool8 tileCallback(u8));
+bool8 FollowablePlayerMovement_JumpInPlace(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8, bool8 tileCallback(u8));
+bool8 FollowablePlayerMovement_GoSpeed4(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8, bool8 tileCallback(u8));
+bool8 FollowablePlayerMovement_Jump(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8, bool8 tileCallback(u8));
+bool8 CopyablePlayerMovement_Jump2(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8, bool8 tileCallback(u8));
+u8 MovementType_CopyPlayerInGrass_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_Buried_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_WalkInPlace_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_MoveInPlace_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_WalkSlowlyInPlace_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_JogInPlace_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_RunInPlace_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_Invisible_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_Invisible_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+u8 MovementType_Invisible_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite);
u8 CreateVirtualObject(u16 graphicsId, u8 virtualObjId, s16 x, s16 y, u8 elevation, u8 direction);
void TurnVirtualObject(u8 virtualObjId, u8 direction);
diff --git a/include/evolution_graphics.h b/include/evolution_graphics.h
index eab5c6eb70..52586fc4f5 100644
--- a/include/evolution_graphics.h
+++ b/include/evolution_graphics.h
@@ -8,6 +8,6 @@ u8 EvolutionSparkles_ArcDown(void);
u8 EvolutionSparkles_CircleInward(void);
u8 EvolutionSparkles_SprayAndFlash(u16 species);
u8 EvolutionSparkles_SprayAndFlash_Trade(u16 species);
-u8 CycleEvolutionMonSprite(u8 preEvoSpriteID, u8 postEvoSpriteID);
+u8 CycleEvolutionMonSprite(u8 preEvoSpriteId, u8 postEvoSpriteId);
#endif // GUARD_EVOLUTION_GRAPHICS_H
diff --git a/include/evolution_scene.h b/include/evolution_scene.h
index 25d34eddfb..1b8999c775 100644
--- a/include/evolution_scene.h
+++ b/include/evolution_scene.h
@@ -1,9 +1,9 @@
#ifndef GUARD_EVOLUTION_SCENE_H
#define GUARD_EVOLUTION_SCENE_H
-void BeginEvolutionScene(struct Pokemon *mon, u16 speciesToEvolve, bool8 canStopEvo, u8 partyID);
-void EvolutionScene(struct Pokemon *mon, u16 speciesToEvolve, bool8 canStopEvo, u8 partyID);
-void TradeEvolutionScene(struct Pokemon *mon, u16 speciesToEvolve, u8 preEvoSpriteID, u8 partyID);
+void BeginEvolutionScene(struct Pokemon *mon, u16 postEvoSpecies, bool8 canStopEvo, u8 partyId);
+void EvolutionScene(struct Pokemon *mon, u16 postEvoSpecies, bool8 canStopEvo, u8 partyId);
+void TradeEvolutionScene(struct Pokemon *mon, u16 postEvoSpecies, u8 preEvoSpriteId, u8 partyId);
extern void (*gCB2_AfterEvolution)(void);
diff --git a/include/faraway_island.h b/include/faraway_island.h
index 9fd2a69fc4..f7cef9b8c3 100755
--- a/include/faraway_island.h
+++ b/include/faraway_island.h
@@ -2,9 +2,9 @@
#define GUARD_FARAWAY_ISLAND_H
u32 GetMewMoveDirection(void);
-bool8 ShouldMewShakeGrass(struct ObjectEvent *);
+bool8 ShouldMewShakeGrass(struct ObjectEvent *objectEvent);
void UpdateFarawayIslandStepCounter(void);
-bool8 ObjectEventIsFarawayIslandMew(struct ObjectEvent *);
+bool8 ObjectEventIsFarawayIslandMew(struct ObjectEvent *objectEvent);
bool8 IsMewPlayingHideAndSeek(void);
#endif // GUARD_FARAWAY_ISLAND_H
diff --git a/include/field_camera.h b/include/field_camera.h
index 6e8af1a539..edbd2c09fa 100644
--- a/include/field_camera.h
+++ b/include/field_camera.h
@@ -18,7 +18,7 @@ extern u16 gTotalCameraPixelOffsetY;
void DrawWholeMapView(void);
void CurrentMapDrawMetatileAt(int x, int y);
void GetCameraOffsetWithPan(s16 *x, s16 *y);
-void DrawDoorMetatileAt(int x, int y, u16 *arr);
+void DrawDoorMetatileAt(int x, int y, u16 *tiles);
void ResetFieldCamera(void);
void ResetCameraUpdateInfo(void);
u32 InitCameraUpdateCallback(u8 trackedSpriteId);
diff --git a/include/field_control_avatar.h b/include/field_control_avatar.h
index 11c0f1c17d..635102fbf6 100644
--- a/include/field_control_avatar.h
+++ b/include/field_control_avatar.h
@@ -27,7 +27,7 @@ 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 b);
+bool8 TryDoDiveWarp(struct MapPosition *position, u16 metatileBehavior);
int SetCableClubWarp(void);
u8 TrySetDiveWarp(void);
const u8 *GetInteractedLinkPlayerScript(struct MapPosition *position, u8 metatileBehavior, u8 direction);
diff --git a/include/field_door.h b/include/field_door.h
index 2e32005c6c..1d8a30ca14 100644
--- a/include/field_door.h
+++ b/include/field_door.h
@@ -1,10 +1,10 @@
#ifndef GUARD_FIELD_DOOR_H
#define GUARD_FIELD_DOOR_H
-void FieldSetDoorOpened(u32, u32);
-void FieldSetDoorClosed(u32, u32);
-s8 FieldAnimateDoorClose(u32, u32);
-s8 FieldAnimateDoorOpen(u32, u32);
+void FieldSetDoorOpened(u32 x, u32 y);
+void FieldSetDoorClosed(u32 x, u32 y);
+s8 FieldAnimateDoorClose(u32 x, u32 y);
+s8 FieldAnimateDoorOpen(u32 x, u32 y);
bool8 FieldIsDoorAnimationRunning(void);
u32 GetDoorSoundEffect(u32 x, u32 y);
diff --git a/include/field_effect.h b/include/field_effect.h
index 1e28be75f1..2e13879353 100644
--- a/include/field_effect.h
+++ b/include/field_effect.h
@@ -9,12 +9,12 @@ extern s32 gFieldEffectArguments[8];
extern void (*gPostMenuFieldCallback)(void);
extern bool8 (*gFieldCallback2)(void);
-u32 FieldEffectStart(u8);
+u32 FieldEffectStart(u8 id);
bool8 FieldEffectActiveListContains(u8 id);
void FieldEffectActiveListClear(void);
void ReturnToFieldFromFlyMapSelect(void);
void FieldCallback_UseFly(void);
-u8 AddNewGameBirchObject(s16, s16, u8);
+u8 AddNewGameBirchObject(s16 x, s16 y, u8 subpriority);
void FieldEffectStop(struct Sprite *sprite, u8 id);
u8 CreateTrainerSprite(u8 trainerSpriteID, s16 x, s16 y, u8 subpriority, u8 *buffer);
void FldEff_TeleportWarpOut(void);
@@ -41,8 +41,8 @@ void StartEscalatorWarp(u8 metatileBehavior, u8 priority);
void StartLavaridgeGymB1FWarp(u8 priority);
void StartLavaridgeGym1FWarp(u8 priority);
-void SpriteCB_AshPuff(struct Sprite *);
-void SpriteCB_AshLaunch(struct Sprite *);
+void SpriteCB_AshPuff(struct Sprite *sprite);
+void SpriteCB_AshLaunch(struct Sprite *sprite);
void MultiplyPaletteRGBComponents(u16 i, u8 r, u8 g, u8 b);
void FreeResourcesAndDestroySprite(struct Sprite *sprite, u8 spriteId);
diff --git a/include/field_effect_helpers.h b/include/field_effect_helpers.h
index 890e5ca3ac..0c97da4337 100644
--- a/include/field_effect_helpers.h
+++ b/include/field_effect_helpers.h
@@ -13,33 +13,33 @@ enum {
};
u8 CreateWarpArrowSprite(void);
-u8 StartUnderwaterSurfBlobBobbing(u8 oldSpriteId);
+u8 StartUnderwaterSurfBlobBobbing(u8 blobSpriteId);
void SetSurfBlob_BobState(u8 spriteId, u8 state);
void SetSurfBlob_DontSyncAnim(u8 spriteId, bool8 dontSync);
void SetSurfBlob_PlayerOffset(u8 spriteId, bool8 hasOffset, s16 offset);
-bool8 UpdateRevealDisguise(struct ObjectEvent *);
-void StartRevealDisguise(struct ObjectEvent *);
-void StartAshFieldEffect(s16, s16, u16, s16);
-void SetUpReflection(struct ObjectEvent *, struct Sprite *, u8);
-void SetUpShadow(struct ObjectEvent *);
-u32 StartFieldEffectForObjectEvent(u8, struct ObjectEvent *);
+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);
+u32 StartFieldEffectForObjectEvent(u8, struct ObjectEvent *objectEvent);
u8 FindTallGrassFieldEffectSpriteId(u8 localId, u8 mapNum, u8 mapGroup, s16 x, s16 y);
-void UpdateRayquazaSpotlightEffect(struct Sprite *);
-void UpdateShadowFieldEffect(struct Sprite *);
-void UpdateTallGrassFieldEffect(struct Sprite *);
-void WaitFieldEffectSpriteAnim(struct Sprite *);
-void UpdateAshFieldEffect(struct Sprite *);
-void UpdateSurfBlobFieldEffect(struct Sprite *);
-void UpdateJumpImpactEffect(struct Sprite *);
-void UpdateFootprintsTireTracksFieldEffect(struct Sprite *);
-void UpdateSplashFieldEffect(struct Sprite *);
-void UpdateLongGrassFieldEffect(struct Sprite *);
-void UpdateSandPileFieldEffect(struct Sprite *);
-void UpdateDisguiseFieldEffect(struct Sprite *);
-void UpdateShortGrassFieldEffect(struct Sprite *);
-void UpdateHotSpringsWaterFieldEffect(struct Sprite *);
-void UpdateBubblesFieldEffect(struct Sprite *);
-void UpdateSparkleFieldEffect(struct Sprite *);
+void UpdateRayquazaSpotlightEffect(struct Sprite *sprite);
+void UpdateShadowFieldEffect(struct Sprite *sprite);
+void UpdateTallGrassFieldEffect(struct Sprite *sprite);
+void WaitFieldEffectSpriteAnim(struct Sprite *sprite);
+void UpdateAshFieldEffect(struct Sprite *sprite);
+void UpdateSurfBlobFieldEffect(struct Sprite *sprite);
+void UpdateJumpImpactEffect(struct Sprite *sprite);
+void UpdateFootprintsTireTracksFieldEffect(struct Sprite *sprite);
+void UpdateSplashFieldEffect(struct Sprite *sprite);
+void UpdateLongGrassFieldEffect(struct Sprite *sprite);
+void UpdateSandPileFieldEffect(struct Sprite *sprite);
+void UpdateDisguiseFieldEffect(struct Sprite *sprite);
+void UpdateShortGrassFieldEffect(struct Sprite *sprite);
+void UpdateHotSpringsWaterFieldEffect(struct Sprite *sprite);
+void UpdateBubblesFieldEffect(struct Sprite *sprite);
+void UpdateSparkleFieldEffect(struct Sprite *sprite);
void SetSpriteInvisible(u8 spriteId);
void ShowWarpArrowSprite(u8 spriteId, u8 direction, s16 x, s16 y);
diff --git a/include/field_message_box.h b/include/field_message_box.h
index 810ac0fc20..6942d7452a 100644
--- a/include/field_message_box.h
+++ b/include/field_message_box.h
@@ -9,10 +9,10 @@ enum
FIELD_MESSAGE_BOX_AUTO_SCROLL,
};
-bool8 ShowFieldMessage(const u8 *message);
-bool8 ShowPokenavFieldMessage(const u8 *message);
+bool8 ShowFieldMessage(const u8 *str);
+bool8 ShowPokenavFieldMessage(const u8 *str);
bool8 ShowFieldMessageFromBuffer(void);
-bool8 ShowFieldAutoScrollMessage(const u8 *message);
+bool8 ShowFieldAutoScrollMessage(const u8 *str);
void HideFieldMessageBox(void);
bool8 IsFieldMessageBoxHidden(void);
u8 GetFieldMessageBoxMode(void);
diff --git a/include/field_player_avatar.h b/include/field_player_avatar.h
index 2db24300cc..cb7128f203 100644
--- a/include/field_player_avatar.h
+++ b/include/field_player_avatar.h
@@ -4,11 +4,11 @@
void PlayerStep(u8 direction, u16 newKeys, u16 heldKeys);
bool8 TryDoMetatileBehaviorForcedMovement();
void ClearPlayerAvatarInfo(void);
-void SetPlayerAvatarExtraStateTransition(u16, u8);
-u8 GetPlayerAvatarGenderByGraphicsId(u16);
-bool8 TestPlayerAvatarFlags(u8);
+void SetPlayerAvatarExtraStateTransition(u16 graphicsId, u8 transitionFlag);
+u8 GetPlayerAvatarGenderByGraphicsId(u16 gfxId);
+u8 TestPlayerAvatarFlags(u8 flag);
u8 GetPlayerAvatarSpriteId(void);
-void PlayerGetDestCoords(s16 *, s16 *);
+void PlayerGetDestCoords(s16 *x, s16 *y);
u8 GetPlayerFacingDirection(void);
u8 GetPlayerMovementDirection(void);
u8 PlayerGetCopyableMovement(void);
@@ -37,7 +37,7 @@ void CancelPlayerForcedMovement(void);
void InitPlayerAvatar(s16 x, s16 y, u8 direction, u8 gender);
void PlayerFreeze(void);
void StopPlayerAvatar(void);
-void SetSpinStartFacingDir(u8);
+void SetSpinStartFacingDir(u8 direction);
void GetXYCoordsOneStepInFrontOfPlayer(s16 *xPtr, s16 *yPtr);
u16 GetRivalAvatarGraphicsIdByStateIdAndGender(u8 state, u8 gender);
void SetPlayerAvatarFieldMove(void);
@@ -51,8 +51,8 @@ bool8 IsPlayerSurfingNorth(void);
void SetPlayerAvatarWatering(u8 direction);
u8 GetPlayerAvatarFlags(void);
void UpdatePlayerAvatarTransitionState(void);
-u16 GetFRLGAvatarGraphicsIdByGender(u8);
-u16 GetRSAvatarGraphicsIdByGender(u8);
+u16 GetFRLGAvatarGraphicsIdByGender(u8 gender);
+u16 GetRSAvatarGraphicsIdByGender(u8 gender);
void PlayerWheelieInPlace(u8 direction);
void PlayerWheelieMove(u8 direction);
void PlayerPopWheelieWhileMoving(u8 direction);
diff --git a/include/field_specials.h b/include/field_specials.h
index 975a57970b..50afecf2fb 100644
--- a/include/field_specials.h
+++ b/include/field_specials.h
@@ -6,7 +6,7 @@ extern u8 gBikeCollisions;
extern u16 gScrollableMultichoice_ScrollOffset;
u8 GetLeadMonIndex(void);
-u8 IsDestinationBoxFull(void);
+bool8 IsDestinationBoxFull(void);
u16 GetPCBoxToSendMon(void);
bool8 InMultiPartnerRoom(void);
void UpdateTrainerFansAfterLinkBattle(void);
diff --git a/include/fieldmap.h b/include/fieldmap.h
index 318e916039..54f676421b 100644
--- a/include/fieldmap.h
+++ b/include/fieldmap.h
@@ -24,19 +24,19 @@
extern struct BackupMapLayout gBackupMapLayout;
extern u16 ALIGNED(4) sBackupMapData[MAX_MAP_DATA_SIZE];
-u32 MapGridGetMetatileIdAt(int, int);
-u32 MapGridGetMetatileBehaviorAt(int, int);
-void MapGridSetMetatileIdAt(int, int, u16);
-void MapGridSetMetatileEntryAt(int, int, u16);
-void GetCameraCoords(u16 *, u16 *);
-u8 MapGridGetCollisionAt(int, int);
+u32 MapGridGetMetatileIdAt(int x, int y);
+u32 MapGridGetMetatileBehaviorAt(int x, int y);
+void MapGridSetMetatileIdAt(int x, int y, u16 metatile);
+void MapGridSetMetatileEntryAt(int x, int y, u16 metatile);
+void GetCameraCoords(u16 *x, u16 *y);
+u8 MapGridGetCollisionAt(int x, int y);
int GetMapBorderIdAt(int x, int y);
bool32 CanCameraMoveInDirection(int direction);
-u16 GetMetatileAttributesById(u16 metatileId);
+u16 GetMetatileAttributesById(u16 metatile);
void GetCameraFocusCoords(u16 *x, u16 *y);
u8 MapGridGetMetatileLayerTypeAt(int x, int y);
u8 MapGridGetElevationAt(int x, int y);
-bool8 CameraMove(int deltaX, int deltaY);
+bool8 CameraMove(int x, int y);
void SaveMapView(void);
void SetCameraFocusCoords(u16 x, u16 y);
void InitMap(void);
@@ -47,8 +47,8 @@ void CopyMapTilesetsToVram(struct MapLayout const *mapLayout);
void LoadMapTilesetPalettes(struct MapLayout const *mapLayout);
void LoadSecondaryTilesetPalette(struct MapLayout const *mapLayout, bool8 skipFaded);
void CopySecondaryTilesetToVramUsingHeap(struct MapLayout const *mapLayout);
-void CopyPrimaryTilesetToVram(const struct MapLayout *);
-void CopySecondaryTilesetToVram(const struct MapLayout *);
+void CopyPrimaryTilesetToVram(struct MapLayout const *mapLayout);
+void CopySecondaryTilesetToVram(struct MapLayout const *mapLayout);
const struct MapHeader *const GetMapHeaderFromConnection(const struct MapConnection *connection);
const struct MapConnection *GetMapConnectionAtPos(s16 x, s16 y);
void MapGridSetMetatileImpassabilityAt(int x, int y, bool32 impassable);
diff --git a/include/fldeff.h b/include/fldeff.h
index 822c6ffbec..9bad320c74 100644
--- a/include/fldeff.h
+++ b/include/fldeff.h
@@ -13,7 +13,7 @@ extern const struct SpritePalette gSpritePalette_CutGrass;
extern struct MapPosition gPlayerFacingPosition;
// escalator
-void StartEscalator(bool8 var);
+void StartEscalator(bool8 goingUp);
void StopEscalator(void);
bool8 IsEscalatorMoving(void);
diff --git a/include/follower_npc.h b/include/follower_npc.h
index 90941e56cf..52355a78b7 100644
--- a/include/follower_npc.h
+++ b/include/follower_npc.h
@@ -44,7 +44,8 @@ enum FollowerNPCSpriteTypes
enum FollowerNPCDoorStairsStates
{
FNPC_DOOR_NONE,
- FNPC_DOOR_NEEDS_TO_EXIT
+ FNPC_DOOR_NEEDS_TO_EXIT,
+ FNPC_DOOR_NO_POS_SET
};
enum FollowerNPCWarpEndStates
diff --git a/include/gba/m4a_internal.h b/include/gba/m4a_internal.h
index fc8205efd9..a90771048d 100644
--- a/include/gba/m4a_internal.h
+++ b/include/gba/m4a_internal.h
@@ -170,7 +170,11 @@ struct SoundChannel
struct MusicPlayerInfo;
+#if __STDC_VERSION__ < 202311L
typedef void (*MPlayFunc)();
+#else
+typedef void (*MPlayFunc)(...);
+#endif
typedef void (*PlyNoteFunc)(u32, struct MusicPlayerInfo *, struct MusicPlayerTrack *);
typedef void (*CgbSoundFunc)(void);
typedef void (*CgbOscOffFunc)(u8);
diff --git a/include/global.h b/include/global.h
index 74ed0c11d3..057a53b498 100644
--- a/include/global.h
+++ b/include/global.h
@@ -28,6 +28,10 @@
#define asm_unified(x) asm(".syntax unified\n" x "\n.syntax divided")
#define NAKED __attribute__((naked))
+#if MODERN
+#define asm __asm__
+#endif
+
/// IDE support
#if defined(__APPLE__) || defined(__CYGWIN__) || defined(__INTELLISENSE__)
// We define these when using certain IDEs to fool preproc
@@ -518,7 +522,7 @@ struct ApprenticeQuestion
u8 moveSlot:2;
u8 suggestedChange:2; // TRUE if told to use held item or second move, FALSE if told to use no item or first move
//u8 padding;
- u16 data; // used both as an itemId and a moveId
+ u16 data; // used both as an itemId and a move
};
struct PlayersApprentice
@@ -684,7 +688,7 @@ struct RamScriptData
u8 magic;
u8 mapGroup;
u8 mapNum;
- u8 objectId;
+ u8 localId;
u8 script[995];
//u8 padding;
};
@@ -1153,7 +1157,7 @@ struct SaveBlock1
// sizeof: 0x3???
};
-extern struct SaveBlock1* gSaveBlock1Ptr;
+extern struct SaveBlock1 *gSaveBlock1Ptr;
struct MapPosition
{
diff --git a/include/heal_location.h b/include/heal_location.h
index 8c4ebae965..255168fee1 100644
--- a/include/heal_location.h
+++ b/include/heal_location.h
@@ -3,8 +3,8 @@
struct HealLocation
{
- s8 group;
- s8 map;
+ s8 mapGroup;
+ s8 mapNum;
u16 x;
u16 y;
};
diff --git a/include/image_processing_effects.h b/include/image_processing_effects.h
index 7f726707cd..20ee822e46 100755
--- a/include/image_processing_effects.h
+++ b/include/image_processing_effects.h
@@ -46,8 +46,8 @@ struct ImageProcessingContext
u8 personality;
};
-void ApplyImageProcessingEffects(struct ImageProcessingContext *);
-void ApplyImageProcessingQuantization(struct ImageProcessingContext *);
-void ConvertImageProcessingToGBA(struct ImageProcessingContext *);
+void ApplyImageProcessingEffects(struct ImageProcessingContext *context);
+void ApplyImageProcessingQuantization(struct ImageProcessingContext *context);
+void ConvertImageProcessingToGBA(struct ImageProcessingContext *context);
#endif
diff --git a/include/international_string_util.h b/include/international_string_util.h
index 0628ab932a..04def5ac53 100644
--- a/include/international_string_util.h
+++ b/include/international_string_util.h
@@ -4,7 +4,7 @@
#include "menu.h"
#include "list_menu.h"
-void ConvertInternationalPlayerName(u8 *src);
+void ConvertInternationalPlayerName(u8 *str);
void TVShowConvertInternationalString(u8 *dest, const u8 *src, int language);
int GetStringCenterAlignXOffset(int fontId, const u8 *str, int totalWidth);
int GetStringRightAlignXOffset(int fontId, const u8 *str, int totalWidth);
@@ -16,9 +16,9 @@ int Intl_GetListMenuWidth(const struct ListMenuTemplate *listMenu);
void CopyMonCategoryText(u16 species, u8 *dest);
u8 *GetStringClearToWidth(u8 *dest, int fontId, const u8 *str, int totalStringWidth);
void PadNameString(u8 *dest, u8 padChar);
-void ConvertInternationalPlayerNameStripChar(u8 *, u8);
-void ConvertInternationalContestantName(u8 *);
-int GetNicknameLanguage(u8 *);
+void ConvertInternationalPlayerNameStripChar(u8 *str, u8 removeChar);
+void ConvertInternationalContestantName(u8 *str);
+int GetNicknameLanguage(u8 *str);
void FillWindowTilesByRow(int windowId, int columnStart, int rowStart, int numFillTiles, int numRows);
#endif // GUARD_INTERNATIONAL_STRING_UTIL_H
diff --git a/include/intro.h b/include/intro.h
index 1c89c65952..e77811299e 100644
--- a/include/intro.h
+++ b/include/intro.h
@@ -8,7 +8,7 @@
// Exported ROM declarations
void CB2_InitCopyrightScreenAfterBootup(void);
void CB2_InitCopyrightScreenAfterTitleScreen(void);
-void PanFadeAndZoomScreen(u16, u16, u16, u16);
+void PanFadeAndZoomScreen(u16 screenX, u16 screenY, u16 zoom, u16 alpha);
void MainCB2_Intro(void);
void Task_Scene1_Load(u8);
diff --git a/include/intro_credits_graphics.h b/include/intro_credits_graphics.h
index c6f4a73c55..b37846f345 100644
--- a/include/intro_credits_graphics.h
+++ b/include/intro_credits_graphics.h
@@ -35,10 +35,10 @@ extern const struct SpritePalette gSpritePalettes_Credits[];
void LoadIntroPart2Graphics(u8 scenery);
void SetIntroPart2BgCnt(u8 scenery);
-void LoadCreditsSceneGraphics(u8);
-void SetCreditsSceneBgCnt(u8);
+void LoadCreditsSceneGraphics(u8 scene);
+void SetCreditsSceneBgCnt(u8 scene);
u8 CreateBicycleBgAnimationTask(u8 mode, u16 bg1Speed, u16 bg2Speed, u16 bg3Speed);
-void CycleSceneryPalette(u8);
+void CycleSceneryPalette(u8 mode);
u8 CreateIntroBrendanSprite(s16 x, s16 y);
u8 CreateIntroMaySprite(s16 x, s16 y);
u8 CreateIntroFlygonSprite(s16 x, s16 y);
diff --git a/include/item.h b/include/item.h
index f3fa6a0a3b..519c3842c0 100644
--- a/include/item.h
+++ b/include/item.h
@@ -63,25 +63,25 @@ u16 BagGetItemIdByPocketPosition(u8 pocketId, u16 pocketPos);
u16 BagGetQuantityByPocketPosition(u8 pocketId, u16 pocketPos);
void CompactItemsInBagPocket(struct BagPocket *bagPocket);
void SortBerriesOrTMHMs(struct BagPocket *bagPocket);
-void MoveItemSlotInList(struct ItemSlot* itemSlots_, u32 from, u32 to_);
+void MoveItemSlotInList(struct ItemSlot *itemSlots_, u32 from, u32 to_);
void ClearBag(void);
u16 CountTotalItemQuantityInBag(u16 itemId);
bool8 AddPyramidBagItem(u16 itemId, u16 count);
bool8 RemovePyramidBagItem(u16 itemId, u16 count);
-const u8 *ItemId_GetName(u16 itemId);
-u32 ItemId_GetPrice(u16 itemId);
-const u8 *ItemId_GetEffect(u32 itemId);
-u32 ItemId_GetHoldEffect(u32 itemId);
-u32 ItemId_GetHoldEffectParam(u32 itemId);
-const u8 *ItemId_GetDescription(u16 itemId);
-u8 ItemId_GetImportance(u16 itemId);
-u8 ItemId_GetConsumability(u16 itemId);
-u8 ItemId_GetPocket(u16 itemId);
-u8 ItemId_GetType(u16 itemId);
-ItemUseFunc ItemId_GetFieldFunc(u16 itemId);
-u8 ItemId_GetBattleUsage(u16 itemId);
-u32 ItemId_GetSecondaryId(u32 itemId);
-u32 ItemId_GetFlingPower(u32 itemId);
+const u8 *GetItemName(u16 itemId);
+u32 GetItemPrice(u16 itemId);
+const u8 *GetItemEffect(u32 itemId);
+u32 GetItemHoldEffect(u32 itemId);
+u32 GetItemHoldEffectParam(u32 itemId);
+const u8 *GetItemDescription(u16 itemId);
+u8 GetItemImportance(u16 itemId);
+u8 GetItemConsumability(u16 itemId);
+u8 GetItemPocket(u16 itemId);
+u8 GetItemType(u16 itemId);
+ItemUseFunc GetItemFieldFunc(u16 itemId);
+u8 GetItemBattleUsage(u16 itemId);
+u32 GetItemSecondaryId(u32 itemId);
+u32 GetItemFlingPower(u32 itemId);
u32 GetItemStatus1Mask(u16 itemId);
u32 GetItemStatus2Mask(u16 itemId);
diff --git a/include/item_menu.h b/include/item_menu.h
index 75912eca62..84137da1de 100644
--- a/include/item_menu.h
+++ b/include/item_menu.h
@@ -97,17 +97,17 @@ void CB2_BagMenuFromStartMenu(void);
u8 GetItemListPosition(u8 pocketId);
bool8 UseRegisteredKeyItemOnField(void);
void CB2_GoToSellMenu(void);
-void GoToBagMenu(u8 bagMenuType, u8 pocketId, void ( *exitCallback)());
+void GoToBagMenu(u8 location, u8 pocket, void ( *exitCallback)());
void DoWallyTutorialBagMenu(void);
void ResetBagScrollPositions(void);
void ChooseBerryForMachine(void (*exitCallback)(void));
void CB2_ChooseBerry(void);
void CB2_ChooseMulch(void);
void Task_FadeAndCloseBagMenu(u8 taskId);
-void BagMenu_YesNo(u8 taskId, u8 windowType, const struct YesNoFuncTable* funcTable);
+void BagMenu_YesNo(u8 taskId, u8 windowType, const struct YesNoFuncTable *funcTable);
void UpdatePocketItemList(u8 pocketId);
-void DisplayItemMessage(u8 taskId, u8 fontId, const u8 *str, void ( *callback)(u8 taskId));
-void DisplayItemMessageOnField(u8 taskId, const u8 *src, TaskFunc callback);
+void DisplayItemMessage(u8 taskId, u8 fontId, const u8 *str, void (*callback)(u8 taskId));
+void DisplayItemMessageOnField(u8 taskId, const u8 *string, TaskFunc callback);
void CloseItemMessage(u8 taskId);
void ItemMenu_RotomCatalog(u8 taskId);
diff --git a/include/item_use.h b/include/item_use.h
index d7871fd6f2..ad8018d67d 100644
--- a/include/item_use.h
+++ b/include/item_use.h
@@ -1,48 +1,48 @@
#ifndef GUARD_ITEM_USE_H
#define GUARD_ITEM_USE_H
-void ItemUseOutOfBattle_Mail(u8);
-void ItemUseOutOfBattle_Bike(u8);
-void ItemUseOutOfBattle_Rod(u8);
-void ItemUseOutOfBattle_Itemfinder(u8);
-void ItemUseOutOfBattle_PokeblockCase(u8);
-void ItemUseOutOfBattle_CoinCase(u8);
-void ItemUseOutOfBattle_PokemonBoxLink(u8);
-void ItemUseOutOfBattle_PowderJar(u8);
-void ItemUseOutOfBattle_SSTicket(u8);
-void ItemUseOutOfBattle_WailmerPail(u8);
-void ItemUseOutOfBattle_Medicine(u8);
-void ItemUseOutOfBattle_AbilityCapsule(u8);
-void ItemUseOutOfBattle_AbilityPatch(u8);
-void ItemUseOutOfBattle_Mint(u8);
-void ItemUseOutOfBattle_ResetEVs(u8);
-void ItemUseOutOfBattle_ReduceEV(u8);
-void ItemUseOutOfBattle_SacredAsh(u8);
-void ItemUseOutOfBattle_PPRecovery(u8);
-void ItemUseOutOfBattle_PPUp(u8);
-void ItemUseOutOfBattle_RareCandy(u8);
-void ItemUseOutOfBattle_DynamaxCandy(u8);
-void ItemUseOutOfBattle_TMHM(u8);
-void ItemUseOutOfBattle_Repel(u8);
-void ItemUseOutOfBattle_Lure(u8);
-void ItemUseOutOfBattle_EscapeRope(u8);
-void ItemUseOutOfBattle_BlackWhiteFlute(u8);
-void ItemUseOutOfBattle_EvolutionStone(u8);
-void ItemUseOutOfBattle_Berry(u8);
-void ItemUseOutOfBattle_EnigmaBerry(u8);
-void ItemUseOutOfBattle_FormChange(u8);
-void ItemUseOutOfBattle_FormChange_ConsumedOnUse(u8);
-void ItemUseOutOfBattle_RotomCatalog(u8);
-void ItemUseOutOfBattle_ZygardeCube(u8);
-void ItemUseOutOfBattle_Fusion(u8);
-void ItemUseOutOfBattle_Honey(u8);
-void ItemUseOutOfBattle_CannotUse(u8);
-void ItemUseOutOfBattle_ExpShare(u8);
+void ItemUseOutOfBattle_Mail(u8 taskId);
+void ItemUseOutOfBattle_Bike(u8 taskId);
+void ItemUseOutOfBattle_Rod(u8 taskId);
+void ItemUseOutOfBattle_Itemfinder(u8 taskId);
+void ItemUseOutOfBattle_PokeblockCase(u8 taskId);
+void ItemUseOutOfBattle_CoinCase(u8 taskId);
+void ItemUseOutOfBattle_PokemonBoxLink(u8 taskId);
+void ItemUseOutOfBattle_PowderJar(u8 taskId);
+void ItemUseOutOfBattle_SSTicket(u8 taskId);
+void ItemUseOutOfBattle_WailmerPail(u8 taskId);
+void ItemUseOutOfBattle_Medicine(u8 taskId);
+void ItemUseOutOfBattle_AbilityCapsule(u8 taskId);
+void ItemUseOutOfBattle_AbilityPatch(u8 taskId);
+void ItemUseOutOfBattle_Mint(u8 taskId);
+void ItemUseOutOfBattle_ResetEVs(u8 taskId);
+void ItemUseOutOfBattle_ReduceEV(u8 taskId);
+void ItemUseOutOfBattle_SacredAsh(u8 taskId);
+void ItemUseOutOfBattle_PPRecovery(u8 taskId);
+void ItemUseOutOfBattle_PPUp(u8 taskId);
+void ItemUseOutOfBattle_RareCandy(u8 taskId);
+void ItemUseOutOfBattle_DynamaxCandy(u8 taskId);
+void ItemUseOutOfBattle_TMHM(u8 taskId);
+void ItemUseOutOfBattle_Repel(u8 taskId);
+void ItemUseOutOfBattle_Lure(u8 taskId);
+void ItemUseOutOfBattle_EscapeRope(u8 taskId);
+void ItemUseOutOfBattle_BlackWhiteFlute(u8 taskId);
+void ItemUseOutOfBattle_EvolutionStone(u8 taskId);
+void ItemUseOutOfBattle_Berry(u8 taskId);
+void ItemUseOutOfBattle_EnigmaBerry(u8 taskId);
+void ItemUseOutOfBattle_FormChange(u8 taskId);
+void ItemUseOutOfBattle_FormChange_ConsumedOnUse(u8 taskId);
+void ItemUseOutOfBattle_RotomCatalog(u8 taskId);
+void ItemUseOutOfBattle_ZygardeCube(u8 taskId);
+void ItemUseOutOfBattle_Fusion(u8 taskId);
+void ItemUseOutOfBattle_Honey(u8 taskId);
+void ItemUseOutOfBattle_CannotUse(u8 taskId);
+void ItemUseOutOfBattle_ExpShare(u8 taskId);
void ItemUseInBattle_BagMenu(u8 taskId);
void ItemUseInBattle_PartyMenu(u8 taskId);
void ItemUseInBattle_PartyMenuChooseMove(u8 taskId);
void Task_UseDigEscapeRopeOnField(u8 taskId);
-u8 CanUseDigOrEscapeRopeOnCurMap(void);
+bool8 CanUseDigOrEscapeRopeOnCurMap(void);
u8 CheckIfItemIsTMHMOrEvolutionStone(u16 itemId);
void FieldUseFunc_VsSeeker(u8 taskId);
void Task_ItemUse_CloseMessageBoxAndReturnToField_VsSeeker(u8 taskId);
diff --git a/include/librfu.h b/include/librfu.h
index 6b0bd97c71..8125d64043 100644
--- a/include/librfu.h
+++ b/include/librfu.h
@@ -316,7 +316,11 @@ struct STWIStatus
u8 recoveryCount;
u8 unk_16;
u8 unk_17;
+#if __STDC_VERSION__ < 202311L
void (*callbackM)();
+#else
+ void (*callbackM)(...);
+#endif
void (*callbackS)(u16);
void (*callbackID)(void);
union RfuPacket *txPacket;
@@ -515,7 +519,7 @@ void rfu_REQ_endSearchParent(void);
void rfu_REQ_startConnectParent(u16 pid);
void rfu_REQ_pollConnectParent(void);
void rfu_REQ_endConnectParent(void);
-u16 rfu_getConnectParentStatus(u8 *status,u8 *connectSlotNo);
+u16 rfu_getConnectParentStatus(u8 *status, u8 *connectSlotNo);
// Restore link from child device
void rfu_REQ_CHILD_startConnectRecovery(u8 bmRecoverySlot);
void rfu_REQ_CHILD_pollConnectRecovery(void);
@@ -607,7 +611,7 @@ void STWI_send_DataRxREQ(void);
void STWI_send_MS_ChangeREQ(void);
void STWI_send_StopModeREQ(void);
void STWI_send_SystemStatusREQ(void);
-void STWI_send_GameConfigREQ(const u8 *serial_uname, const u8 *gname);
+void STWI_send_GameConfigREQ(const u8 *serial_gname, const u8 *uname);
void STWI_send_ResetREQ(void);
void STWI_send_LinkStatusREQ(void);
void STWI_send_VersionStatusREQ(void);
diff --git a/include/lilycove_lady.h b/include/lilycove_lady.h
index d3cce4ca83..0f2b4f19dd 100644
--- a/include/lilycove_lady.h
+++ b/include/lilycove_lady.h
@@ -8,7 +8,7 @@ void FieldCallback_FavorLadyEnableScriptContexts(void);
void FieldCallback_QuizLadyEnableScriptContexts(void);
void QuizLadyClearQuestionForRecordMix(const LilycoveLady *lilycoveLady);
bool8 GivePokeblockToContestLady(struct Pokeblock *pokeblock);
-void BufferContestLadyMonName(u8 *dest1, u8 *dest2);
+void BufferContestLadyMonName(u8 *category, u8 *nickname);
void BufferContestLadyPlayerName(u8 *dest);
void BufferContestLadyLanguage(u8 *dest);
void BufferContestName(u8 *dest, u8 category);
diff --git a/include/link.h b/include/link.h
index 6763065055..4b8179d2af 100644
--- a/include/link.h
+++ b/include/link.h
@@ -233,7 +233,7 @@ struct Link
struct BlockRequest
{
- void * address;
+ void *address;
u32 size;
};
@@ -255,21 +255,21 @@ bool8 IsWirelessAdapterConnected(void);
void Task_DestroySelf(u8 taskId);
void OpenLink(void);
void CloseLink(void);
-u16 LinkMain2(const u16 *);
+u16 LinkMain2(const u16 *heldKeys);
void ClearLinkCallback(void);
void ClearLinkCallback_2(void);
u8 GetLinkPlayerCount(void);
void OpenLinkTimed(void);
-u8 GetLinkPlayerDataExchangeStatusTimed(int lower, int upper);
+u8 GetLinkPlayerDataExchangeStatusTimed(int minPlayers, int maxPlayers);
bool8 IsLinkPlayerDataExchangeComplete(void);
-u32 GetLinkPlayerTrainerId(u8);
+u32 GetLinkPlayerTrainerId(u8 who);
void ResetLinkPlayers(void);
u8 GetMultiplayerId(void);
u8 BitmaskAllOtherLinkPlayers(void);
-bool8 SendBlock(u8, const void *, u16);
+bool8 SendBlock(u8 unused, const void *src, u16 size);
u8 GetBlockReceivedStatus(void);
void ResetBlockReceivedFlags(void);
-void ResetBlockReceivedFlag(u8);
+void ResetBlockReceivedFlag(u8 who);
u8 GetLinkPlayerCount_2(void);
bool8 IsLinkMaster(void);
void CB2_LinkError(void);
@@ -293,7 +293,7 @@ bool8 HandleLinkConnection(void);
void SetLinkDebugValues(u32 seed, u32 flags);
void SetBerryBlenderLinkCallback(void);
void SetSuppressLinkErrorMessage(bool8 flag);
-void ConvertLinkPlayerName(struct LinkPlayer *linkPlayer);
+void ConvertLinkPlayerName(struct LinkPlayer *player);
void ClearSavedLinkPlayers(void);
void SetLinkErrorBuffer(u32 status, u8 lastSendQueueCount, u8 lastRecvQueueCount, bool8 disconnected);
void LocalLinkPlayerToBlock(void);
@@ -331,10 +331,10 @@ extern u16 gLinkSavedIme;
extern struct LinkPlayer gLocalLinkPlayer;
bool32 Link_AnyPartnersPlayingRubyOrSapphire(void);
-bool32 LinkDummy_Return2(void);
-void SetLocalLinkPlayerId(u8);
+u32 LinkDummy_Return2(void);
+void SetLocalLinkPlayerId(u8 playerId);
u8 GetSavedPlayerCount(void);
-bool8 SendBlockRequest(u8 type);
+bool8 SendBlockRequest(u8 blockReqType);
u8 GetLinkPlayerCountAsBitFlags(void);
u8 GetSavedLinkPlayerCountAsBitFlags(void);
void SetCloseLinkCallbackHandleJP(void);
diff --git a/include/link_rfu.h b/include/link_rfu.h
index f3ae61afba..aadaf70412 100644
--- a/include/link_rfu.h
+++ b/include/link_rfu.h
@@ -268,7 +268,7 @@ void RfuVSync(void);
void RfuSetIgnoreError(bool32 enable);
u8 RfuGetStatus(void);
struct RfuGameData *GetHostRfuGameData(void);
-void UpdateGameData_GroupLockedIn(u8 startedActivity);
+void UpdateGameData_GroupLockedIn(bool8 startedActivity);
void RfuSetErrorParams(u32 errorInfo);
void RfuSetStatus(u8 status, u16 errorInfo);
u8 Rfu_SetLinkRecovery(bool32 enable);
@@ -320,8 +320,8 @@ void RfuRecvQueue_Reset(struct RfuRecvQueue *queue);
void RfuSendQueue_Reset(struct RfuSendQueue *queue);
void RfuRecvQueue_Enqueue(struct RfuRecvQueue *queue, u8 *data);
void RfuSendQueue_Enqueue(struct RfuSendQueue *queue, u8 *data);
-bool8 RfuRecvQueue_Dequeue(struct RfuRecvQueue *queue, u8 *dest);
-bool8 RfuSendQueue_Dequeue(struct RfuSendQueue *queue, u8 *dest);
+bool8 RfuRecvQueue_Dequeue(struct RfuRecvQueue *queue, u8 *src);
+bool8 RfuSendQueue_Dequeue(struct RfuSendQueue *queue, u8 *src);
void RfuBackupQueue_Enqueue(struct RfuBackupQueue *queue, const u8 *data);
bool8 RfuBackupQueue_Dequeue(struct RfuBackupQueue *queue, u8 *src);
void InitHostRfuGameData(struct RfuGameData *data, u8 activity, bool32 startedActivity, s32 partnerInfo);
diff --git a/include/list_menu.h b/include/list_menu.h
index 413b978227..17587afa1d 100644
--- a/include/list_menu.h
+++ b/include/list_menu.h
@@ -38,8 +38,8 @@ struct ListMenuItem
struct ListMenuTemplate
{
const struct ListMenuItem *items;
- void (* moveCursorFunc)(s32 itemIndex, bool8 onInit, struct ListMenu *list);
- void (* itemPrintFunc)(u8 windowId, u32 itemId, u8 y);
+ void (*moveCursorFunc)(s32 itemIndex, bool8 onInit, struct ListMenu *list);
+ void (*itemPrintFunc)(u8 windowId, u32 itemId, u8 y);
u32 totalItems:12;
u32 maxShowed:12;
u32 textNarrowWidth:8;
@@ -107,7 +107,7 @@ struct CursorStruct
extern struct ScrollArrowsTemplate gTempScrollArrowTemplate;
extern struct ListMenuTemplate gMultiuseListMenuTemplate;
-s32 DoMysteryGiftListMenu(const struct WindowTemplate *windowTemplate, const struct ListMenuTemplate *listMenuTemplate, u8 drawMode, u16 tileNum, u16 palNum);
+s32 DoMysteryGiftListMenu(const struct WindowTemplate *windowTemplate, const struct ListMenuTemplate *listMenuTemplate, u8 drawMode, u16 tileNum, u16 palOffset);
u8 ListMenuInit(struct ListMenuTemplate *listMenuTemplate, u16 scrollOffset, u16 selectedRow);
u8 ListMenuInitInRect(struct ListMenuTemplate *listMenuTemplate, struct ListMenuWindowRect *rect, u16 scrollOffset, u16 selectedRow);
s32 ListMenu_ProcessInput(u8 listTaskId);
@@ -120,11 +120,11 @@ void ListMenuGetCurrentItemArrayId(u8 listTaskId, u16 *arrayId);
void ListMenuGetScrollAndRow(u8 listTaskId, u16 *scrollOffset, u16 *selectedRow);
u16 ListMenuGetYCoordForPrintingArrowCursor(u8 listTaskId);
void ListMenuOverrideSetColors(u8 cursorPal, u8 fillValue, u8 cursorShadowPal);
-void ListMenuDefaultCursorMoveFunc(s32 itemIndex, u8 onInit, struct ListMenu *list);
+void ListMenuDefaultCursorMoveFunc(s32 itemIndex, bool8 onInit, struct ListMenu *list);
s32 ListMenuGetUnkIndicatorsStructFields(u8 taskId, u8 field);
void ListMenuSetUnkIndicatorsStructField(u8 taskId, u8 field, s32 value);
u8 AddScrollIndicatorArrowPair(const struct ScrollArrowsTemplate *arrowInfo, u16 *scrollOffset);
-u8 AddScrollIndicatorArrowPairParameterized(u32 arrowType, s32 commonPos, s32 firstPos, s32 secondPos, s32 fullyDownThreshold, s32 tileTag, s32 palTag, u16 *currItemPtr);
+u8 AddScrollIndicatorArrowPairParameterized(u32 arrowType, s32 commonPos, s32 firstPos, s32 secondPos, s32 fullyDownThreshold, s32 tileTag, s32 palTag, u16 *scrollOffset);
void RemoveScrollIndicatorArrowPair(u8 taskId);
void Task_ScrollIndicatorArrowPairOnMainMenu(u8 taskId);
bool8 ListMenuChangeSelection(struct ListMenu *list, bool8 updateCursorAndCallCallback, u8 count, bool8 movingDown);
diff --git a/include/main.h b/include/main.h
index b64c9349a8..962f269b5a 100644
--- a/include/main.h
+++ b/include/main.h
@@ -64,7 +64,7 @@ void SetHBlankCallback(IntrCallback callback);
void SetVCountCallback(IntrCallback callback);
void SetSerialCallback(IntrCallback callback);
void InitFlashTimer(void);
-void SetTrainerHillVBlankCounter(u32 *var);
+void SetTrainerHillVBlankCounter(u32 *counter);
void ClearTrainerHillVBlankCounter(void);
void DoSoftReset(void);
void ClearPokemonCrySongs(void);
diff --git a/include/malloc.h b/include/malloc.h
index 60421dac2f..ca4ff8af7e 100644
--- a/include/malloc.h
+++ b/include/malloc.h
@@ -59,7 +59,7 @@ extern u8 gHeap[HEAP_SIZE];
void *Alloc_(u32 size, const char *location);
void *AllocZeroed_(u32 size, const char *location);
void Free(void *pointer);
-void InitHeap(void *pointer, u32 size);
+void InitHeap(void *heapStart, u32 heapSize);
const struct MemBlock *HeapHead(void);
const char *MemBlockLocation(const struct MemBlock *block);
diff --git a/include/match_call.h b/include/match_call.h
index 8aebb3bc77..ed2cf506c5 100644
--- a/include/match_call.h
+++ b/include/match_call.h
@@ -16,7 +16,7 @@ bool32 TryStartMatchCall(void);
bool32 IsMatchCallTaskActive(void);
void StartMatchCallFromScript(const u8 *message);
void BufferPokedexRatingForMatchCall(u8 *destStr);
-bool32 SelectMatchCallMessage(int, u8 *);
+bool32 SelectMatchCallMessage(int trainerId, u8 *str);
void LoadMatchCallWindowGfx(u32 windowId, u32 destOffset, u32 paletteId);
void DrawMatchCallTextBoxBorder(u32 windowId, u32 tileOffset, u32 paletteId);
diff --git a/include/mauville_old_man.h b/include/mauville_old_man.h
index 9e5986ee81..dc7d16b743 100644
--- a/include/mauville_old_man.h
+++ b/include/mauville_old_man.h
@@ -6,9 +6,9 @@ extern struct BardSong gBardSong;
void SetMauvilleOldMan(void);
u8 GetCurrentMauvilleOldMan(void);
void SetMauvilleOldManObjEventGfx(void);
-void SanitizeMauvilleOldManForRuby(OldMan *dest);
-void SanitizeReceivedRubyOldMan(union OldMan * oldMan, u32 version, u32 language);
-void SanitizeReceivedEmeraldOldMan(union OldMan * oldMan, u32 version, u32 language);
+void SanitizeMauvilleOldManForRuby(union OldMan *oldMan);
+void SanitizeReceivedRubyOldMan(union OldMan *oldMan, u32 version, u32 language);
+void SanitizeReceivedEmeraldOldMan(union OldMan *oldMan, u32 version, u32 language);
void ResetMauvilleOldManFlag(void);
#endif // GUARD_MAUVILLE_OLD_MAN_H
diff --git a/include/menu.h b/include/menu.h
index d2190fb854..ca7f8d008c 100644
--- a/include/menu.h
+++ b/include/menu.h
@@ -57,7 +57,7 @@ void LoadMessageBoxAndBorderGfx(void);
void DrawDialogueFrame(u8 windowId, bool8 copyToVram);
void ClearStdWindowAndFrame(u8 windowId, bool8 copyToVram);
u16 AddTextPrinterParameterized2(u8 windowId, u8 fontId, const u8 *str, u8 speed, void (*callback)(struct TextPrinterTemplate *, u16), u8 fgColor, u8 bgColor, u8 shadowColor);
-void PrintPlayerNameOnWindow(u8, const u8 *, u16, u16);
+void PrintPlayerNameOnWindow(u8 windowId, const u8 *src, u16 x, u16 y);
void ClearDialogWindowAndFrame(u8 windowId, bool8 copyToVram);
void SetStandardWindowBorderStyle(u8 windowId, bool8 copyToVram);
void DisplayYesNoMenuDefaultYes(void);
@@ -68,11 +68,11 @@ void AddTextPrinterWithCallbackForMessage(bool8 canSpeedUp, void (*callback)(str
void BgDmaFill(u32 bg, u8 value, int offset, int size);
void AddTextPrinterParameterized3(u8 windowId, u8 fontId, u8 left, u8 top, const u8 *color, s8 speed, const u8 *str);
void ClearStdWindowAndFrameToTransparent(u8 windowId, bool8 copyToVram);
-void SetWindowTemplateFields(struct WindowTemplate *template, u8 priority, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 palNum, u16 baseBlock);
-void DrawStdFrameWithCustomTileAndPalette(u8 windowId, bool8 copyToVram, u16 tileStart, u8 palette);
-void ScheduleBgCopyTilemapToVram(u8 bgNum);
-void PrintMenuTable(u8 windowId, u8 itemCount, const struct MenuAction *strs);
-u8 InitMenuInUpperLeftCornerNormal(u8 windowId, u8 numItems, u8 initialCursorPos);
+void SetWindowTemplateFields(struct WindowTemplate *template, u8 bg, u8 left, u8 top, u8 width, u8 height, u8 paletteNum, u16 baseBlock);
+void DrawStdFrameWithCustomTileAndPalette(u8 windowId, bool8 copyToVram, u16 baseTileNum, u8 paletteNum);
+void ScheduleBgCopyTilemapToVram(u8 bgId);
+void PrintMenuTable(u8 windowId, u8 itemCount, const struct MenuAction *menuActions);
+u8 InitMenuInUpperLeftCornerNormal(u8 windowId, u8 itemCount, u8 initialCursorPos);
u8 Menu_GetCursorPos(void);
s8 Menu_ProcessInput(void);
s8 Menu_ProcessInputNoWrap(void);
@@ -81,17 +81,17 @@ void ResetTempTileDataBuffers(void);
void *DecompressAndCopyTileDataToVram(u8 bgId, const void *src, u32 size, u16 offset, u8 mode);
bool8 FreeTempTileDataBuffersIfPossible(void);
struct WindowTemplate CreateWindowTemplate(u8 bg, u8 left, u8 top, u8 width, u8 height, u8 paletteNum, u16 baseBlock);
-void CreateYesNoMenu(const struct WindowTemplate *windowTemplate, u16 borderFirstTileNum, u8 borderPalette, u8 initialCursorPos);
+void CreateYesNoMenu(const struct WindowTemplate *window, u16 baseTileNum, u8 paletteNum, u8 initialCursorPos);
void DecompressAndLoadBgGfxUsingHeap(u8 bgId, const void *src, u32 size, u16 offset, u8 mode);
s8 Menu_ProcessInputNoWrapClearOnChoose(void);
s8 ProcessMenuInput_other(void);
void DoScheduledBgTilemapCopiesToVram(void);
void ClearScheduledBgCopiesToVram(void);
-void AddTextPrinterParameterized4(u8 windowId, u8 fontId, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, const u8 *color, s8 speed, const u8 *str);
+void AddTextPrinterParameterized4(u8 windowId, u8 fontId, u8 left, u8 top, u8 letterSpacing, u8 lineSpacing, const u8 *color, s8 speed, const u8 *str);
void DrawDialogFrameWithCustomTileAndPalette(u8 windowId, bool8 copyToVram, u16 tileNum, u8 paletteNum);
-void PrintMenuActionTextsInUpperLeftCorner(u8 windowId, u8 optionsNo, const struct MenuAction *actions, const u8 *actionIds);
+void PrintMenuActionTextsInUpperLeftCorner(u8 windowId, u8 itemCount, const struct MenuAction *menuActions, const u8 *actionIds);
void ClearDialogWindowAndFrameToTransparent(u8 windowId, bool8 copyToVram);
-void *malloc_and_decompress(const void *src, u32 *sizeOut);
+void *malloc_and_decompress(const void *src, u32 *size);
u16 copy_decompressed_tile_data_to_vram(u8 bgId, const void *src, u16 size, u16 offset, u8 mode);
void AddTextPrinterForMessage(bool8 allowSkippingDelayWithButtonPress);
void PrintMenuActionTexts(u8 windowId, u8 fontId, u8 left, u8 top, u8 letterSpacing, u8 lineHeight, u8 itemCount, const struct MenuAction *menuActions, const u8 *actionIds);
@@ -102,7 +102,7 @@ u8 GetStartMenuWindowId(void);
void ListMenuLoadStdPalAt(u8 palOffset, u8 palId);
u8 Menu_MoveCursor(s8 cursorDelta);
u8 Menu_MoveCursorNoWrapAround(s8 cursorDelta);
-void DrawStdWindowFrame(u8 windowId, bool8 CopyToVram);
+void DrawStdWindowFrame(u8 windowId, bool8 copyToVram);
u8 AddStartMenuWindow(u8 numActions);
u8 InitMenuNormal(u8 windowId, u8 fontId, u8 left, u8 top, u8 cursorHeight, u8 numChoices, u8 initialCursorPos);
void LoadMessageBoxAndFrameGfx(u8 windowId, bool8 copyToVram);
@@ -115,9 +115,9 @@ u8 GetMapNamePopUpWindowId(void);
u8 AddMapNamePopUpWindow(void);
void AddTextPrinterParameterized5(u8 windowId, u8 fontId, const u8 *str, u8 left, u8 top, u8 speed, void (*callback)(struct TextPrinterTemplate *, u16), u8 letterSpacing, u8 lineSpacing);
void SetBgTilemapPalette(u8 bgId, u8 left, u8 top, u8 width, u8 height, u8 palette);
-void AddValToTilemapBuffer(void *ptr, int delta, int width, int height, bool32 is8BPP);
+void AddValToTilemapBuffer(void *ptr, int delta, int width, int height, bool32 isAffine);
void EraseFieldMessageBox(bool8 copyToVram);
-void PrintMenuGridTable(u8 windowId, u8 optionWidth, u8 columns, u8 rows, const struct MenuAction *strs);
+void PrintMenuGridTable(u8 windowId, u8 optionWidth, u8 columns, u8 rows, const struct MenuAction *menuActions);
s8 Menu_ProcessGridInput(void);
u8 InitMenuInUpperLeftCorner(u8 windowId, u8 itemCount, u8 initialCursorPos, bool8 APressMuted);
s8 Menu_ProcessInputNoWrapAround_other(void);
@@ -129,7 +129,7 @@ void HofPCTopBar_PrintPair(const u8 *string, const u8 *string2, bool8 noBg, u8 l
void ResetBgPositions(void);
void AddTextPrinterWithCustomSpeedForMessage(bool8 allowSkippingDelayWithButtonPress, u8 speed);
void EraseYesNoWindow(void);
-void PrintMenuActionTextsAtPos(u8 windowId, u8 fontId, u8 left, u8 top, u8 lineHeight, u8 itemCount, const struct MenuAction *strs);
+void PrintMenuActionTextsAtPos(u8 windowId, u8 fontId, u8 left, u8 top, u8 lineHeight, u8 itemCount, const struct MenuAction *menuActions);
void Menu_LoadStdPal(void);
u8 AddSecondaryPopUpWindow(void);
u8 GetSecondaryPopUpWindowId(void);
diff --git a/include/menu_specialized.h b/include/menu_specialized.h
index 152afb59ac..fccd989ffb 100644
--- a/include/menu_specialized.h
+++ b/include/menu_specialized.h
@@ -112,16 +112,16 @@ bool8 ConditionMenu_UpdateMonExit(struct ConditionGraph *graph, s16 *x);
bool8 MoveConditionMonOnscreen(s16 *x);
bool8 MoveConditionMonOffscreen(s16 *x);
void GetConditionMenuMonNameAndLocString(u8 *locationDst, u8 *nameDst, u16 boxId, u16 monId, u16 partyId, u16 numMons, bool8 excludesCancel);
-void GetConditionMenuMonConditions(struct ConditionGraph *graph, u8 *sheen, u16 boxId, u16 monId, u16 partyId, u16 id, u16 numMons, bool8 excludesCancel);
+void GetConditionMenuMonConditions(struct ConditionGraph *graph, u8 *numSparkles, u16 boxId, u16 monId, u16 partyId, u16 id, u16 numMons, bool8 excludesCancel);
void GetConditionMenuMonGfx(void *tilesDst, void *palDst, u16 boxId, u16 monId, u16 partyId, u16 numMons, bool8 excludesCancel);
void LoadConditionMonPicTemplate(struct SpriteSheet *sheet, struct SpriteTemplate *template, struct SpritePalette *pal);
-void LoadConditionSelectionIcons(struct SpriteSheet *sheets, struct SpriteTemplate * template, struct SpritePalette *pals);
+void LoadConditionSelectionIcons(struct SpriteSheet *sheets, struct SpriteTemplate *template, struct SpritePalette *pals);
s32 GetBoxOrPartyMonData(u16 boxId, u16 monId, s32 request, u8 *dst);
// Condition sparkles
void LoadConditionSparkle(struct SpriteSheet *sheet, struct SpritePalette *pal);
void ResetConditionSparkleSprites(struct Sprite **sprites);
-void CreateConditionSparkleSprites(struct Sprite **sprites, u8 monSpriteId, u8 count);
+void CreateConditionSparkleSprites(struct Sprite **sprites, u8 monSpriteId, u8 _count);
void DestroyConditionSparkleSprites(struct Sprite **sprites);
void FreeConditionSparkles(struct Sprite **sprites);
diff --git a/include/metatile_behavior.h b/include/metatile_behavior.h
index 58eb83ea7b..ecdc696d41 100644
--- a/include/metatile_behavior.h
+++ b/include/metatile_behavior.h
@@ -9,145 +9,144 @@ enum {
BRIDGE_TYPE_POND_HIGH,
};
-bool8 MetatileBehavior_IsATile(u8);
-bool8 MetatileBehavior_IsEncounterTile(u8);
-bool8 MetatileBehavior_IsJumpEast(u8);
-bool8 MetatileBehavior_IsJumpWest(u8);
-bool8 MetatileBehavior_IsJumpNorth(u8);
-bool8 MetatileBehavior_IsJumpSouth(u8);
-bool8 MetatileBehavior_IsPokeGrass(u8);
-bool8 MetatileBehavior_IsSandOrDeepSand(u8);
-bool8 MetatileBehavior_IsDeepSand(u8);
-bool8 MetatileBehavior_IsReflective(u8);
-bool8 MetatileBehavior_IsIce(u8);
-bool8 MetatileBehavior_IsWarpDoor(u8);
-bool8 MetatileBehavior_IsDoor(u8);
-bool8 MetatileBehavior_IsEscalator(u8);
-bool8 MetatileBehavior_IsLadder(u8);
-bool8 MetatileBehavior_IsNonAnimDoor(u8);
-bool8 MetatileBehavior_IsDeepSouthWarp(u8);
-bool8 MetatileBehavior_IsSurfableWaterOrUnderwater(u8);
-bool8 MetatileBehavior_IsEastArrowWarp(u8);
-bool8 MetatileBehavior_IsWestArrowWarp(u8);
-bool8 MetatileBehavior_IsNorthArrowWarp(u8);
-bool8 MetatileBehavior_IsSouthArrowWarp(u8);
-bool8 MetatileBehavior_IsArrowWarp(u8);
-bool8 MetatileBehavior_IsForcedMovementTile(u8);
-bool8 MetatileBehavior_IsIce_2(u8);
-bool8 MetatileBehavior_IsTrickHouseSlipperyFloor(u8);
-bool8 MetatileBehavior_IsWalkNorth(u8);
-bool8 MetatileBehavior_IsWalkSouth(u8);
-bool8 MetatileBehavior_IsWalkWest(u8);
-bool8 MetatileBehavior_IsWalkEast(u8);
-bool8 MetatileBehavior_IsNorthwardCurrent(u8);
-bool8 MetatileBehavior_IsSouthwardCurrent(u8);
-bool8 MetatileBehavior_IsWestwardCurrent(u8);
-bool8 MetatileBehavior_IsEastwardCurrent(u8);
-bool8 MetatileBehavior_IsSlideNorth(u8);
-bool8 MetatileBehavior_IsSlideSouth(u8);
-bool8 MetatileBehavior_IsSlideWest(u8);
-bool8 MetatileBehavior_IsSlideEast(u8);
-bool8 MetatileBehavior_IsCounter(u8);
-bool8 MetatileBehavior_IsPlayerFacingTVScreen(u8 tile, u8 playerDir);
-bool8 MetatileBehavior_IsPC(u8);
-bool8 MetatileBehavior_IsCableBoxResults1(u8);
-bool8 MetatileBehavior_IsOpenSecretBaseDoor(u8);
-bool8 MetatileBehavior_IsSecretBaseCave(u8);
-bool8 MetatileBehavior_IsSecretBaseTree(u8);
-bool8 MetatileBehavior_IsSecretBaseShrub(u8);
-bool8 MetatileBehavior_IsSecretBasePC(u8);
-bool8 MetatileBehavior_IsRecordMixingSecretBasePC(u8);
-bool8 MetatileBehavior_IsSecretBaseTrainerSpot(u8);
-bool8 MetatileBehavior_IsSecretBaseImpassable(u8);
-bool8 MetatileBehavior_IsSecretBaseDecorationBase(u8);
-bool8 MetatileBehavior_IsSecretBasePoster(u8);
-bool8 MetatileBehavior_IsNormal(u8);
-bool8 MetatileBehavior_IsSecretBaseNorthWall(u8);
-bool8 MetatileBehavior_HoldsSmallDecoration(u8);
-bool8 MetatileBehavior_HoldsLargeDecoration(u8);
-bool8 MetatileBehavior_IsSecretBaseHole(u8);
-bool8 MetatileBehavior_IsSecretBaseBalloon(u8);
-bool8 MetatileBehavior_IsSecretBaseBreakableDoor(u8);
-bool8 MetatileBehavior_IsSecretBaseSoundMat(u8);
-bool8 MetatileBehavior_IsSecretBaseGlitterMat(u8);
-bool8 MetatileBehavior_IsSecretBaseSandOrnament(u8);
-bool8 MetatileBehavior_IsSecretBaseShieldOrToyTV(u8);
-bool8 MetatileBehavior_IsPlayerRoomPCOn(u8);
-bool8 MetatileBehavior_HasRipples(u8);
-bool8 MetatileBehavior_IsPuddle(u8);
-bool8 MetatileBehavior_IsTallGrass(u8);
-bool8 MetatileBehavior_IsLongGrass(u8);
-bool8 MetatileBehavior_IsBerryTreeSoil(u8);
-bool8 MetatileBehavior_IsAshGrass(u8);
-bool8 MetatileBehavior_IsFootprints(u8);
-bool8 MetatileBehavior_IsBridgeOverWater(u8);
-u8 MetatileBehavior_GetBridgeType(u8);
-bool8 MetatileBehavior_IsBridgeOverWaterNoEdge(u8);
-bool8 MetatileBehavior_IsLandWildEncounter(u8);
-bool8 MetatileBehavior_IsWaterWildEncounter(u8);
-bool8 MetatileBehavior_IsIndoorEncounter(u8);
-bool8 MetatileBehavior_IsMountain(u8);
-bool8 MetatileBehavior_IsDiveable(u8);
-bool8 MetatileBehavior_IsUnableToEmerge(u8);
-bool8 MetatileBehavior_IsShallowFlowingWater(u8);
-bool8 MetatileBehavior_IsThinIce(u8);
-bool8 MetatileBehavior_IsCrackedIce(u8);
-bool8 MetatileBehavior_IsDeepOrOceanWater(u8);
-bool8 MetatileBehavior_IsSurfableAndNotWaterfall(u8);
-bool8 MetatileBehavior_IsEastBlocked(u8);
-bool8 MetatileBehavior_IsWestBlocked(u8);
-bool8 MetatileBehavior_IsNorthBlocked(u8);
-bool8 MetatileBehavior_IsSouthBlocked(u8);
-bool8 MetatileBehavior_IsShortGrass(u8);
-bool8 MetatileBehavior_IsHotSprings(u8);
-bool8 MetatileBehavior_IsWaterfall(u8);
-bool8 MetatileBehavior_IsFortreeBridge(u8);
-bool8 MetatileBehavior_IsPacifidlogVerticalLogTop(u8);
-bool8 MetatileBehavior_IsPacifidlogVerticalLogBottom(u8);
-bool8 MetatileBehavior_IsPacifidlogHorizontalLogLeft(u8);
-bool8 MetatileBehavior_IsPacifidlogHorizontalLogRight(u8);
-bool8 MetatileBehavior_IsPacifidlogLog(u8);
-bool8 MetatileBehavior_IsTrickHousePuzzleDoor(u8);
-bool8 MetatileBehavior_IsRegionMap(u8);
-bool8 MetatileBehavior_IsClosedSootopolisDoor(u8);
-bool8 MetatileBehavior_IsSkyPillarClosedDoor(u8);
-bool8 MetatileBehavior_IsRoulette(u8);
-bool8 MetatileBehavior_IsPokeblockFeeder(u8);
-bool8 MetatileBehavior_IsSecretBaseJumpMat(u8);
-bool8 MetatileBehavior_IsSecretBaseSpinMat(u8);
-bool8 MetatileBehavior_IsLavaridgeB1FWarp(u8);
-bool8 MetatileBehavior_IsLavaridge1FWarp(u8);
-bool8 MetatileBehavior_IsAquaHideoutWarp(u8);
-bool8 MetatileBehavior_IsUnionRoomWarp(u8);
-bool8 MetatileBehavior_IsMossdeepGymWarp(u8);
-bool8 MetatileBehavior_IsSurfableFishableWater(u8);
-bool8 MetatileBehavior_IsMtPyreHole(u8);
-bool8 MetatileBehavior_IsCrackedFloorHole(u8);
-bool8 MetatileBehavior_IsCrackedFloor(u8);
-bool8 MetatileBehavior_IsMuddySlope(u8);
-bool8 MetatileBehavior_IsBumpySlope(u8);
-bool8 MetatileBehavior_IsIsolatedVerticalRail(u8);
-bool8 MetatileBehavior_IsIsolatedHorizontalRail(u8);
-bool8 MetatileBehavior_IsVerticalRail(u8);
-bool8 MetatileBehavior_IsHorizontalRail(u8);
-bool8 MetatileBehavior_IsSeaweed(u8);
-bool8 MetatileBehavior_IsRunningDisallowed(u8);
-bool8 MetatileBehavior_IsCuttableGrass(u8);
-bool8 MetatileBehavior_IsRunningShoesManual(u8);
-bool8 MetatileBehavior_IsPictureBookShelf(u8);
-bool8 MetatileBehavior_IsBookShelf(u8);
-bool8 MetatileBehavior_IsPokeCenterBookShelf(u8);
-bool8 MetatileBehavior_IsVase(u8);
-bool8 MetatileBehavior_IsTrashCan(u8);
-bool8 MetatileBehavior_IsShopShelf(u8);
-bool8 MetatileBehavior_IsBlueprint(u8);
-bool8 MetatileBehavior_IsBattlePyramidWarp(u8);
+bool8 MetatileBehavior_IsATile(u8 metatileBehavior);
+bool8 MetatileBehavior_IsEncounterTile(u8 metatileBehavior);
+bool8 MetatileBehavior_IsJumpEast(u8 metatileBehavior);
+bool8 MetatileBehavior_IsJumpWest(u8 metatileBehavior);
+bool8 MetatileBehavior_IsJumpNorth(u8 metatileBehavior);
+bool8 MetatileBehavior_IsJumpSouth(u8 metatileBehavior);
+bool8 MetatileBehavior_IsPokeGrass(u8 metatileBehavior);
+bool8 MetatileBehavior_IsSandOrDeepSand(u8 metatileBehavior);
+bool8 MetatileBehavior_IsDeepSand(u8 metatileBehavior);
+bool8 MetatileBehavior_IsReflective(u8 metatileBehavior);
+bool8 MetatileBehavior_IsIce(u8 metatileBehavior);
+bool8 MetatileBehavior_IsWarpDoor(u8 metatileBehavior);
+bool8 MetatileBehavior_IsDoor(u8 metatileBehavior);
+bool8 MetatileBehavior_IsEscalator(u8 metatileBehavior);
+bool8 MetatileBehavior_IsLadder(u8 metatileBehavior);
+bool8 MetatileBehavior_IsNonAnimDoor(u8 metatileBehavior);
+bool8 MetatileBehavior_IsDeepSouthWarp(u8 metatileBehavior);
+bool8 MetatileBehavior_IsSurfableWaterOrUnderwater(u8 metatileBehavior);
+bool8 MetatileBehavior_IsEastArrowWarp(u8 metatileBehavior);
+bool8 MetatileBehavior_IsWestArrowWarp(u8 metatileBehavior);
+bool8 MetatileBehavior_IsNorthArrowWarp(u8 metatileBehavior);
+bool8 MetatileBehavior_IsSouthArrowWarp(u8 metatileBehavior);
+bool8 MetatileBehavior_IsForcedMovementTile(u8 metatileBehavior);
+bool8 MetatileBehavior_IsIce_2(u8 metatileBehavior);
+bool8 MetatileBehavior_IsTrickHouseSlipperyFloor(u8 metatileBehavior);
+bool8 MetatileBehavior_IsWalkNorth(u8 metatileBehavior);
+bool8 MetatileBehavior_IsWalkSouth(u8 metatileBehavior);
+bool8 MetatileBehavior_IsWalkWest(u8 metatileBehavior);
+bool8 MetatileBehavior_IsWalkEast(u8 metatileBehavior);
+bool8 MetatileBehavior_IsNorthwardCurrent(u8 metatileBehavior);
+bool8 MetatileBehavior_IsSouthwardCurrent(u8 metatileBehavior);
+bool8 MetatileBehavior_IsWestwardCurrent(u8 metatileBehavior);
+bool8 MetatileBehavior_IsEastwardCurrent(u8 metatileBehavior);
+bool8 MetatileBehavior_IsSlideNorth(u8 metatileBehavior);
+bool8 MetatileBehavior_IsSlideSouth(u8 metatileBehavior);
+bool8 MetatileBehavior_IsSlideWest(u8 metatileBehavior);
+bool8 MetatileBehavior_IsSlideEast(u8 metatileBehavior);
+bool8 MetatileBehavior_IsCounter(u8 metatileBehavior);
+bool8 MetatileBehavior_IsPlayerFacingTVScreen(u8 metatileBehavior, u8 playerDir);
+bool8 MetatileBehavior_IsPC(u8 metatileBehavior);
+bool8 MetatileBehavior_IsCableBoxResults1(u8 metatileBehavior);
+bool8 MetatileBehavior_IsOpenSecretBaseDoor(u8 metatileBehavior);
+bool8 MetatileBehavior_IsSecretBaseCave(u8 metatileBehavior);
+bool8 MetatileBehavior_IsSecretBaseTree(u8 metatileBehavior);
+bool8 MetatileBehavior_IsSecretBaseShrub(u8 metatileBehavior);
+bool8 MetatileBehavior_IsSecretBasePC(u8 metatileBehavior);
+bool8 MetatileBehavior_IsRecordMixingSecretBasePC(u8 metatileBehavior);
+bool8 MetatileBehavior_IsSecretBaseTrainerSpot(u8 metatileBehavior);
+bool8 MetatileBehavior_IsSecretBaseImpassable(u8 metatileBehavior);
+bool8 MetatileBehavior_IsSecretBaseDecorationBase(u8 metatileBehavior);
+bool8 MetatileBehavior_IsSecretBasePoster(u8 metatileBehavior);
+bool8 MetatileBehavior_IsNormal(u8 metatileBehavior);
+bool8 MetatileBehavior_IsSecretBaseNorthWall(u8 metatileBehavior);
+bool8 MetatileBehavior_HoldsSmallDecoration(u8 metatileBehavior);
+bool8 MetatileBehavior_HoldsLargeDecoration(u8 metatileBehavior);
+bool8 MetatileBehavior_IsSecretBaseHole(u8 metatileBehavior);
+bool8 MetatileBehavior_IsSecretBaseBalloon(u8 metatileBehavior);
+bool8 MetatileBehavior_IsSecretBaseBreakableDoor(u8 metatileBehavior);
+bool8 MetatileBehavior_IsSecretBaseSoundMat(u8 metatileBehavior);
+bool8 MetatileBehavior_IsSecretBaseGlitterMat(u8 metatileBehavior);
+bool8 MetatileBehavior_IsSecretBaseSandOrnament(u8 metatileBehavior);
+bool8 MetatileBehavior_IsSecretBaseShieldOrToyTV(u8 metatileBehavior);
+bool8 MetatileBehavior_IsPlayerRoomPCOn(u8 metatileBehavior);
+bool8 MetatileBehavior_HasRipples(u8 metatileBehavior);
+bool8 MetatileBehavior_IsPuddle(u8 metatileBehavior);
+bool8 MetatileBehavior_IsTallGrass(u8 metatileBehavior);
+bool8 MetatileBehavior_IsLongGrass(u8 metatileBehavior);
+bool8 MetatileBehavior_IsBerryTreeSoil(u8 metatileBehavior);
+bool8 MetatileBehavior_IsAshGrass(u8 metatileBehavior);
+bool8 MetatileBehavior_IsFootprints(u8 metatileBehavior);
+bool8 MetatileBehavior_IsBridgeOverWater(u8 metatileBehavior);
+u8 MetatileBehavior_GetBridgeType(u8 metatileBehavior);
+bool8 MetatileBehavior_IsBridgeOverWaterNoEdge(u8 metatileBehavior);
+bool8 MetatileBehavior_IsLandWildEncounter(u8 metatileBehavior);
+bool8 MetatileBehavior_IsWaterWildEncounter(u8 metatileBehavior);
+bool8 MetatileBehavior_IsIndoorEncounter(u8 metatileBehavior);
+bool8 MetatileBehavior_IsMountain(u8 metatileBehavior);
+bool8 MetatileBehavior_IsDiveable(u8 metatileBehavior);
+bool8 MetatileBehavior_IsUnableToEmerge(u8 metatileBehavior);
+bool8 MetatileBehavior_IsShallowFlowingWater(u8 metatileBehavior);
+bool8 MetatileBehavior_IsThinIce(u8 metatileBehavior);
+bool8 MetatileBehavior_IsCrackedIce(u8 metatileBehavior);
+bool8 MetatileBehavior_IsDeepOrOceanWater(u8 metatileBehavior);
+bool8 MetatileBehavior_IsSurfableAndNotWaterfall(u8 metatileBehavior);
+bool8 MetatileBehavior_IsEastBlocked(u8 metatileBehavior);
+bool8 MetatileBehavior_IsWestBlocked(u8 metatileBehavior);
+bool8 MetatileBehavior_IsNorthBlocked(u8 metatileBehavior);
+bool8 MetatileBehavior_IsSouthBlocked(u8 metatileBehavior);
+bool8 MetatileBehavior_IsShortGrass(u8 metatileBehavior);
+bool8 MetatileBehavior_IsHotSprings(u8 metatileBehavior);
+bool8 MetatileBehavior_IsWaterfall(u8 metatileBehavior);
+bool8 MetatileBehavior_IsFortreeBridge(u8 metatileBehavior);
+bool8 MetatileBehavior_IsPacifidlogVerticalLogTop(u8 metatileBehavior);
+bool8 MetatileBehavior_IsPacifidlogVerticalLogBottom(u8 metatileBehavior);
+bool8 MetatileBehavior_IsPacifidlogHorizontalLogLeft(u8 metatileBehavior);
+bool8 MetatileBehavior_IsPacifidlogHorizontalLogRight(u8 metatileBehavior);
+bool8 MetatileBehavior_IsPacifidlogLog(u8 metatileBehavior);
+bool8 MetatileBehavior_IsTrickHousePuzzleDoor(u8 metatileBehavior);
+bool8 MetatileBehavior_IsRegionMap(u8 metatileBehavior);
+bool8 MetatileBehavior_IsClosedSootopolisDoor(u8 metatileBehavior);
+bool8 MetatileBehavior_IsSkyPillarClosedDoor(u8 metatileBehavior);
+bool8 MetatileBehavior_IsRoulette(u8 metatileBehavior);
+bool8 MetatileBehavior_IsPokeblockFeeder(u8 metatileBehavior);
+bool8 MetatileBehavior_IsSecretBaseJumpMat(u8 metatileBehavior);
+bool8 MetatileBehavior_IsSecretBaseSpinMat(u8 metatileBehavior);
+bool8 MetatileBehavior_IsLavaridgeB1FWarp(u8 metatileBehavior);
+bool8 MetatileBehavior_IsLavaridge1FWarp(u8 metatileBehavior);
+bool8 MetatileBehavior_IsAquaHideoutWarp(u8 metatileBehavior);
+bool8 MetatileBehavior_IsUnionRoomWarp(u8 metatileBehavior);
+bool8 MetatileBehavior_IsMossdeepGymWarp(u8 metatileBehavior);
+bool8 MetatileBehavior_IsSurfableFishableWater(u8 metatileBehavior);
+bool8 MetatileBehavior_IsMtPyreHole(u8 metatileBehavior);
+bool8 MetatileBehavior_IsCrackedFloorHole(u8 metatileBehavior);
+bool8 MetatileBehavior_IsCrackedFloor(u8 metatileBehavior);
+bool8 MetatileBehavior_IsMuddySlope(u8 metatileBehavior);
+bool8 MetatileBehavior_IsBumpySlope(u8 metatileBehavior);
+bool8 MetatileBehavior_IsIsolatedVerticalRail(u8 metatileBehavior);
+bool8 MetatileBehavior_IsIsolatedHorizontalRail(u8 metatileBehavior);
+bool8 MetatileBehavior_IsVerticalRail(u8 metatileBehavior);
+bool8 MetatileBehavior_IsHorizontalRail(u8 metatileBehavior);
+bool8 MetatileBehavior_IsSeaweed(u8 metatileBehavior);
+bool8 MetatileBehavior_IsRunningDisallowed(u8 metatileBehavior);
+bool8 MetatileBehavior_IsCuttableGrass(u8 metatileBehavior);
+bool8 MetatileBehavior_IsRunningShoesManual(u8 metatileBehavior);
+bool8 MetatileBehavior_IsPictureBookShelf(u8 metatileBehavior);
+bool8 MetatileBehavior_IsBookShelf(u8 metatileBehavior);
+bool8 MetatileBehavior_IsPokeCenterBookShelf(u8 metatileBehavior);
+bool8 MetatileBehavior_IsVase(u8 metatileBehavior);
+bool8 MetatileBehavior_IsTrashCan(u8 metatileBehavior);
+bool8 MetatileBehavior_IsShopShelf(u8 metatileBehavior);
+bool8 MetatileBehavior_IsBlueprint(u8 metatileBehavior);
+bool8 MetatileBehavior_IsBattlePyramidWarp(u8 metatileBehavior);
bool8 MetatileBehavior_IsPlayerFacingWirelessBoxResults(u8 tile, u8 playerDir);
bool8 MetatileBehavior_IsCableBoxResults2(u8 tile, u8 playerDir);
-bool8 MetatileBehavior_IsQuestionnaire(u8);
-bool8 MetatileBehavior_IsLongGrass_Duplicate(u8);
-bool8 MetatileBehavior_IsLongGrassSouthEdge(u8);
-bool8 MetatileBehavior_IsTrainerHillTimer(u8);
+bool8 MetatileBehavior_IsQuestionnaire(u8 metatileBehavior);
+bool8 MetatileBehavior_IsLongGrass_Duplicate(u8 metatileBehavior);
+bool8 MetatileBehavior_IsLongGrassSouthEdge(u8 metatileBehavior);
+bool8 MetatileBehavior_IsTrainerHillTimer(u8 metatileBehavior);
bool8 MetatileBehavior_IsDirectionalUpRightStairWarp(u8 metatileBehavior);
bool8 MetatileBehavior_IsDirectionalUpLeftStairWarp(u8 metatileBehavior);
bool8 MetatileBehavior_IsDirectionalDownRightStairWarp(u8 metatileBehavior);
diff --git a/include/mini_printf.h b/include/mini_printf.h
index a891327cc4..ae5c226628 100644
--- a/include/mini_printf.h
+++ b/include/mini_printf.h
@@ -45,8 +45,8 @@
#else
-s32 mini_vsnprintf(char* buffer, u32 buffer_len, const char *fmt, va_list va);
-s32 mini_vpprintf(void* buf, const char *fmt, va_list va);
+s32 mini_vsnprintf(char *buffer, u32 buffer_len, const char *fmt, va_list va);
+s32 mini_vpprintf(void *buf, const char *fmt, va_list va);
#endif
#endif
diff --git a/include/move.h b/include/move.h
index c49ba84f9a..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"
@@ -113,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;
@@ -129,7 +133,7 @@ struct MoveInfo
bool32 sketchBanned:1;
//Other
bool32 validApprenticeMove:1;
- u32 padding:10;
+ u32 padding:7;
// end of word
union {
@@ -389,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;
@@ -517,9 +536,18 @@ static inline u32 GetMoveRecoil(u32 moveId)
return gMovesInfo[SanitizeMoveId(moveId)].argument.recoilPercentage;
}
-static inline u32 GetMoveNonVolatileStatus(u32 moveId)
+static inline u32 GetMoveNonVolatileStatus(u32 move)
{
- return gMovesInfo[SanitizeMoveId(moveId)].argument.nonVolatileStatus;
+ 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)
diff --git a/include/move_relearner.h b/include/move_relearner.h
index c97b3894b1..9aab3974df 100644
--- a/include/move_relearner.h
+++ b/include/move_relearner.h
@@ -2,7 +2,7 @@
#define GUARD_MOVE_RELEARNER_H
void TeachMoveRelearnerMove(void);
-void MoveRelearnerShowHideHearts(s32);
+void MoveRelearnerShowHideHearts(s32 move);
void MoveRelearnerShowHideCategoryIcon(s32);
void CB2_InitLearnMove(void);
diff --git a/include/mystery_event_script.h b/include/mystery_event_script.h
index 198a07e857..09032b4395 100644
--- a/include/mystery_event_script.h
+++ b/include/mystery_event_script.h
@@ -12,7 +12,7 @@ enum {
void InitMysteryEventScriptContext(u8 *script);
bool32 RunMysteryEventScriptContextCommand(u32 *status);
u32 RunMysteryEventScript(u8 *script);
-void SetMysteryEventScriptStatus(u32 val);
+void SetMysteryEventScriptStatus(u32 status);
u16 GetRecordMixingGift(void);
#endif // GUARD_MYSTERY_EVENT_SCRIPT_H
diff --git a/include/mystery_gift_client.h b/include/mystery_gift_client.h
index a17778f41a..63520b42d1 100644
--- a/include/mystery_gift_client.h
+++ b/include/mystery_gift_client.h
@@ -75,19 +75,19 @@ struct MysteryGiftClient
u32 funcId;
u32 funcState;
u32 cmdidx;
- void * sendBuffer;
- void * recvBuffer;
- struct MysteryGiftClientCmd * script;
- void * msg;
+ void *sendBuffer;
+ void *recvBuffer;
+ struct MysteryGiftClientCmd *script;
+ void *msg;
struct MysteryGiftLink link;
bool32 isWonderNews;
ALIGNED(4) u8 bufferScript[MG_LINK_BUFFER_SIZE];
};
void MysteryGiftClient_Create(bool32 isWonderNews);
-u32 MysteryGiftClient_Run(u16 * endVal);
+u32 MysteryGiftClient_Run(u16 *endVal);
void MysteryGiftClient_AdvanceState(void);
void * MysteryGiftClient_GetMsg(void);
-void MysteryGiftClient_SetParam(u32 value);
+void MysteryGiftClient_SetParam(u32 val);
#endif //GUARD_MYSTERY_GIFT_CLIENT_H
diff --git a/include/mystery_gift_link.h b/include/mystery_gift_link.h
index 32100db5f1..5f6b655270 100644
--- a/include/mystery_gift_link.h
+++ b/include/mystery_gift_link.h
@@ -34,16 +34,16 @@ struct MysteryGiftLink
u16 sendCounter;
u16 sendCRC;
u16 sendSize;
- void * recvBuffer;
- const void * sendBuffer;
+ void *recvBuffer;
+ const void *sendBuffer;
u32 (*recvFunc)(struct MysteryGiftLink *);
u32 (*sendFunc)(struct MysteryGiftLink *);
};
-void MysteryGiftLink_Init(struct MysteryGiftLink * link, u32 sendPlayerId, u32 recvPlayerId);
-void MysteryGiftLink_InitSend(struct MysteryGiftLink * link, u32 ident, const void * src, u32 size);
-bool32 MysteryGiftLink_Recv(struct MysteryGiftLink * link);
-bool32 MysteryGiftLink_Send(struct MysteryGiftLink * link);
-void MysteryGiftLink_InitRecv(struct MysteryGiftLink * link, u32 ident, void * dest);
+void MysteryGiftLink_Init(struct MysteryGiftLink *link, u32 sendPlayerId, u32 recvPlayerId);
+void MysteryGiftLink_InitSend(struct MysteryGiftLink *link, u32 ident, const void *src, u32 size);
+u32 MysteryGiftLink_Recv(struct MysteryGiftLink *link);
+u32 MysteryGiftLink_Send(struct MysteryGiftLink *link);
+void MysteryGiftLink_InitRecv(struct MysteryGiftLink *link, u32 ident, void *dest);
#endif //GUARD_MYSTERY_GIFT_LINK_H
diff --git a/include/mystery_gift_menu.h b/include/mystery_gift_menu.h
index 665c4596e7..6d694bc3e1 100644
--- a/include/mystery_gift_menu.h
+++ b/include/mystery_gift_menu.h
@@ -5,11 +5,11 @@ extern bool8 gGiftIsFromEReader;
u16 GetMysteryGiftBaseBlock(void);
void CB2_MysteryGiftEReader(void);
-void PrintMysteryGiftOrEReaderHeader(bool8 isJapanese, bool32 usePickOkCancel);
+void PrintMysteryGiftOrEReaderHeader(bool8 isEReader, bool32 useCancel);
void MG_DrawCheckerboardPattern(u32 bg);
void MainCB_FreeAllBuffersAndReturnToInitTitleScreen(void);
bool32 PrintMysteryGiftMenuMessage(u8 *textState, const u8 *str);
-void MG_AddMessageTextPrinter(const u8 *src);
+void MG_AddMessageTextPrinter(const u8 *str);
void CB2_InitEReader(void);
void CB2_InitMysteryGift(void);
void MG_DrawTextBorder(u8 windowId);
diff --git a/include/mystery_gift_server.h b/include/mystery_gift_server.h
index 8e3842f73c..e16ebc76d0 100644
--- a/include/mystery_gift_server.h
+++ b/include/mystery_gift_server.h
@@ -71,7 +71,7 @@ struct MysteryGiftServerCmd
{
u32 instr;
u32 parameter;
- const void * ptr;
+ const void *ptr;
};
struct MysteryGiftServer
@@ -80,21 +80,21 @@ struct MysteryGiftServer
u32 param;
u32 funcId;
u32 cmdidx;
- const struct MysteryGiftServerCmd * script;
- void * recvBuffer;
- struct WonderCard * card;
- struct WonderNews * news;
- struct MysteryGiftLinkGameData * linkGameData;
- const void * ramScript;
+ const struct MysteryGiftServerCmd *script;
+ void *recvBuffer;
+ struct WonderCard *card;
+ struct WonderNews *news;
+ struct MysteryGiftLinkGameData *linkGameData;
+ const void *ramScript;
u32 ramScriptSize;
- const void * clientScript;
+ const void *clientScript;
u32 clientScriptSize;
u32 stamp;
struct MysteryGiftLink link;
};
-void MysterGiftServer_CreateForCard();
-void MysterGiftServer_CreateForNews();
-u32 MysterGiftServer_Run(u16 * endVal);
+void MysterGiftServer_CreateForCard(void);
+void MysterGiftServer_CreateForNews(void);
+u32 MysterGiftServer_Run(u16 *endVal);
#endif //GUARD_MYSTERY_GIFT_SERVER_H
diff --git a/include/mystery_gift_view.h b/include/mystery_gift_view.h
index 038093c7a1..4abe7db920 100644
--- a/include/mystery_gift_view.h
+++ b/include/mystery_gift_view.h
@@ -9,12 +9,12 @@ enum {
NEWS_INPUT_NONE = 0xFF
};
-bool32 WonderCard_Init(struct WonderCard * card, struct WonderCardMetadata * metadata);
-bool32 WonderNews_Init(const struct WonderNews * news);
+bool32 WonderCard_Init(struct WonderCard *card, struct WonderCardMetadata *metadata);
+bool32 WonderNews_Init(const struct WonderNews *news);
s32 WonderCard_Enter(void);
s32 WonderNews_Enter(void);
-s32 WonderCard_Exit(bool32 flag);
-s32 WonderNews_Exit(bool32 flag);
+s32 WonderCard_Exit(bool32 useCancel);
+s32 WonderNews_Exit(bool32 useCancel);
void WonderCard_Destroy(void);
void WonderNews_Destroy(void);
u32 WonderNews_GetInput(u16 input);
diff --git a/include/overworld.h b/include/overworld.h
index 4408fd5a9d..09992cf482 100644
--- a/include/overworld.h
+++ b/include/overworld.h
@@ -88,7 +88,7 @@ void SetWarpDestination(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y);
void SetWarpDestinationToMapWarp(s8 mapGroup, s8 mapNum, s8 warpId);
void SetDynamicWarp(s32 unused, s8 mapGroup, s8 mapNum, s8 warpId);
void SetDynamicWarpWithCoords(s32 unused, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y);
-void SetWarpDestinationToDynamicWarp(u8 unused);
+void SetWarpDestinationToDynamicWarp(u8 unusedWarpId);
void SetWarpDestinationToHealLocation(u8 healLocationId);
void SetWarpDestinationToLastHealLocation(void);
void SetLastHealLocationWarp(u8 healLocationId);
@@ -111,7 +111,7 @@ void SetDefaultFlashLevel(void);
void SetFlashLevel(s32 flashLevel);
u8 GetFlashLevel(void);
void SetCurrentMapLayout(u16 mapLayoutId);
-void SetObjectEventLoadFlag(u8 var);
+void SetObjectEventLoadFlag(u8 flag);
u16 GetLocationMusic(struct WarpData *warp);
u16 GetCurrLocationDefaultMusic(void);
u16 GetWarpDestinationMusic(void);
diff --git a/include/palette_util.h b/include/palette_util.h
index 12ffc145e4..a81078f498 100644
--- a/include/palette_util.h
+++ b/include/palette_util.h
@@ -66,18 +66,18 @@ struct RouletteFlashUtil
struct RouletteFlashPalette palettes[16];
};
-int InitPulseBlendPaletteSettings(struct PulseBlend *, const struct PulseBlendSettings *);
-void InitPulseBlend(struct PulseBlend *);
-void MarkUsedPulseBlendPalettes(struct PulseBlend *, u16, u8);
-void UnloadUsedPulseBlendPalettes(struct PulseBlend *, u16, u8);
-void UnmarkUsedPulseBlendPalettes(struct PulseBlend *, u16, u8);
-void UpdatePulseBlend(struct PulseBlend *);
-void FillTilemapRect(u16 *dest, u16 src, u8 left, u8 top, u8 width, u8 height);
+int InitPulseBlendPaletteSettings(struct PulseBlend *pulseBlend, const struct PulseBlendSettings *settings);
+void InitPulseBlend(struct PulseBlend *pulseBlend);
+void MarkUsedPulseBlendPalettes(struct PulseBlend *pulseBlend, u16 pulseBlendPaletteSelector, u8 multiSelection);
+void UnloadUsedPulseBlendPalettes(struct PulseBlend *pulseBlend, u16 pulseBlendPaletteSelector, u8 multiSelection);
+void UnmarkUsedPulseBlendPalettes(struct PulseBlend *pulseBlend, u16 pulseBlendPaletteSelector, u8 multiSelection);
+void UpdatePulseBlend(struct PulseBlend *pulseBlend);
+void FillTilemapRect(u16 *dest, u16 value, u8 left, u8 top, u8 width, u8 height);
void SetTilemapRect(u16 *dest, u16 *src, u8 left, u8 top, u8 width, u8 height);
-void RouletteFlash_Run(struct RouletteFlashUtil *r0);
-void RouletteFlash_Reset(struct RouletteFlashUtil *r0);
-u8 RouletteFlash_Add(struct RouletteFlashUtil *r0, u8 r1, const struct RouletteFlashSettings *r2);
-void RouletteFlash_Stop(struct RouletteFlashUtil *r0, u16 r1);
-void RouletteFlash_Enable(struct RouletteFlashUtil *r0, u16 r1);
+void RouletteFlash_Run(struct RouletteFlashUtil *flash);
+void RouletteFlash_Reset(struct RouletteFlashUtil *flash);
+u8 RouletteFlash_Add(struct RouletteFlashUtil *flash, u8 id, const struct RouletteFlashSettings *settings);
+void RouletteFlash_Stop(struct RouletteFlashUtil *flash, u16 flags);
+void RouletteFlash_Enable(struct RouletteFlashUtil *flash, u16 flags);
#endif // GUARD_PALETTE_UTIL_H
diff --git a/include/party_menu.h b/include/party_menu.h
index 5236dd27a7..7c4af8c3a4 100644
--- a/include/party_menu.h
+++ b/include/party_menu.h
@@ -16,7 +16,7 @@ struct PartyMenu
s8 slotId2;
u8 action;
u16 bagItem;
- s16 data1; // used variously as a moveId, counter, moveSlotId, or cursorPos
+ s16 data1; // used variously as a move, counter, moveSlotId, or cursorPos
s16 learnMoveState; // data2, used only as a learn move state
};
@@ -41,7 +41,7 @@ void Task_HandleChooseMonInput(u8 taskId);
u8 *GetMonNickname(struct Pokemon *mon, u8 *dest);
u8 DisplayPartyMenuMessage(const u8 *str, bool8 keepOpen);
bool8 IsPartyMenuTextPrinterActive(void);
-void PartyMenuModifyHP(u8 taskId, u8 slot, s8 hpIncrement, s16 HPDifference, TaskFunc task);
+void PartyMenuModifyHP(u8 taskId, u8 slot, s8 hpIncrement, s16 hpDifference, TaskFunc task);
u8 GetAilmentFromStatus(u32 status);
u8 GetMonAilment(struct Pokemon *mon);
void DisplayPartyMenuStdMessage(u32 stringId);
@@ -87,10 +87,10 @@ void ChooseMonForWirelessMinigame(void);
void OpenPartyMenuInBattle(u8 partyAction);
void ChooseMonForInBattleItem(void);
void BufferBattlePartyCurrentOrder(void);
-void BufferBattlePartyCurrentOrderBySide(u8 battlerId, u8 flankId);
-void SwitchPartyOrderLinkMulti(u8 battlerId, u8 slot, u8 arrayIndex);
+void BufferBattlePartyCurrentOrderBySide(u8 battler, u8 flankId);
+void SwitchPartyOrderLinkMulti(u8 battler, u8 slot, u8 slot2);
void SwitchPartyMonSlots(u8 slot, u8 slot2);
-u8 GetPartyIdFromBattlePartyId(u8 slot);
+u8 GetPartyIdFromBattlePartyId(u8 battlePartyId);
void ShowPartyMenuToShowcaseMultiBattleParty(void);
void ChooseMonForDaycare(void);
bool8 CB2_FadeFromPartyMenu(void);
diff --git a/include/player_pc.h b/include/player_pc.h
index 305c661766..5deb02bbab 100644
--- a/include/player_pc.h
+++ b/include/player_pc.h
@@ -16,7 +16,7 @@ extern struct PlayerPCItemPageStruct gPlayerPCItemPageInfo;
extern const struct MenuAction gMailboxMailOptions[];
-void ReshowPlayerPC(u8 taskId);
+void ReshowPlayerPC(u8 var);
void CB2_PlayerPCExitBagMenu(void);
void Mailbox_ReturnToMailListAfterDeposit(void);
void NewGameInitPCItems(void);
diff --git a/include/pokedex.h b/include/pokedex.h
index 0bd91449c3..aa88834e67 100644
--- a/include/pokedex.h
+++ b/include/pokedex.h
@@ -5,12 +5,12 @@ extern u8 gUnusedPokedexU8;
extern void (*gPokedexVBlankCB)(void);
void ResetPokedex(void);
-u16 GetNationalPokedexCount(u8);
-u16 GetHoennPokedexCount(u8);
+u16 GetNationalPokedexCount(u8 caseID);
+u16 GetHoennPokedexCount(u8 caseID);
u8 DisplayCaughtMonDexPage(u16 species, bool32 isShiny, u32 personality);
-s8 GetSetPokedexFlag(u16 nationalNum, u8 caseId);
+s8 GetSetPokedexFlag(u16 nationalDexNo, u8 caseID);
void DrawFootprint(u8 windowId, u16 species);
-u16 CreateMonSpriteFromNationalDexNumber(u16, s16, s16, u16);
+u16 CreateMonSpriteFromNationalDexNumber(u16 nationalNum, s16 x, s16 y, u16 paletteSlot);
bool16 HasAllHoennMons(void);
void ResetPokedexScrollPositions(void);
bool16 HasAllMons(void);
diff --git a/include/pokedex_area_region_map.h b/include/pokedex_area_region_map.h
index 6526d7b458..0a5fc72fc8 100755
--- a/include/pokedex_area_region_map.h
+++ b/include/pokedex_area_region_map.h
@@ -9,9 +9,9 @@ struct PokedexAreaMapTemplate
u32 unk:20; // never read
};
-void LoadPokedexAreaMapGfx(const struct PokedexAreaMapTemplate *);
+void LoadPokedexAreaMapGfx(const struct PokedexAreaMapTemplate *template);
bool32 TryShowPokedexAreaMap(void);
-void PokedexAreaMapChangeBgY(u32);
+void PokedexAreaMapChangeBgY(u32 move);
void FreePokedexAreaMapBgNum(void);
#endif // GUARD_POKEDEX_AREA_REGION_MAP_H
diff --git a/include/pokedex_area_screen.h b/include/pokedex_area_screen.h
index 1127d780f2..ba577d1230 100755
--- a/include/pokedex_area_screen.h
+++ b/include/pokedex_area_screen.h
@@ -12,5 +12,6 @@ enum PokedexAreaScreenState
};
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/pokedex_cry_screen.h b/include/pokedex_cry_screen.h
index 3401db22da..c44035605f 100755
--- a/include/pokedex_cry_screen.h
+++ b/include/pokedex_cry_screen.h
@@ -12,10 +12,10 @@ struct CryScreenWindow
extern u8 gDexCryScreenState;
-bool8 LoadCryWaveformWindow(struct CryScreenWindow *, u8);
-void UpdateCryWaveformWindow(u8);
-void CryScreenPlayButton(u16);
-bool8 LoadCryMeter(struct CryScreenWindow *, u8);
+bool8 LoadCryWaveformWindow(struct CryScreenWindow *window, u8 windowId);
+void UpdateCryWaveformWindow(u8 windowId);
+void CryScreenPlayButton(u16 species);
+bool8 LoadCryMeter(struct CryScreenWindow *window, u8 windowId);
void FreeCryScreen(void);
#endif
diff --git a/include/pokemon.h b/include/pokemon.h
index ee1a77ce97..edc37a1a0b 100644
--- a/include/pokemon.h
+++ b/include/pokemon.h
@@ -7,6 +7,7 @@
#include "constants/regions.h"
#include "constants/region_map_sections.h"
#include "constants/map_groups.h"
+#include "constants/battle.h"
#include "contest_effect.h"
#define GET_BASE_SPECIES_ID(speciesId) (GetFormSpeciesId(speciesId, 0))
@@ -656,7 +657,7 @@ void CreateBattleTowerMon_HandleLevel(struct Pokemon *mon, struct BattleTowerPok
void CreateApprenticeMon(struct Pokemon *mon, const struct Apprentice *src, u8 monId);
void CreateMonWithEVSpreadNatureOTID(struct Pokemon *mon, u16 species, u8 level, u8 nature, u8 fixedIV, u8 evSpread, u32 otId);
void ConvertPokemonToBattleTowerPokemon(struct Pokemon *mon, struct BattleTowerPokemon *dest);
-bool8 ShouldIgnoreDeoxysForm(u8 caseId, u8 battlerId);
+bool8 ShouldIgnoreDeoxysForm(u8 caseId, u8 battler);
u16 GetUnionRoomTrainerPic(void);
u16 GetUnionRoomTrainerClass(void);
void CreateEnemyEventMon(void);
@@ -676,14 +677,14 @@ u16 MonTryLearningNewMove(struct Pokemon *mon, bool8 firstMove);
void DeleteFirstMoveAndGiveMoveToMon(struct Pokemon *mon, u16 move);
void DeleteFirstMoveAndGiveMoveToBoxMon(struct BoxPokemon *boxMon, u16 move);
u8 CountAliveMonsInBattle(u8 caseId, u32 battler);
-u8 GetDefaultMoveTarget(u8 battlerId);
+u8 GetDefaultMoveTarget(u8 battler);
u8 GetMonGender(struct Pokemon *mon);
u8 GetBoxMonGender(struct BoxPokemon *boxMon);
u8 GetGenderFromSpeciesAndPersonality(u16 species, u32 personality);
bool32 IsPersonalityFemale(u16 species, u32 personality);
u32 GetUnownSpeciesId(u32 personality);
void SetMultiuseSpriteTemplateToPokemon(u16 speciesTag, u8 battlerPosition);
-void SetMultiuseSpriteTemplateToTrainerBack(u16 trainerSpriteId, u8 battlerPosition);
+void SetMultiuseSpriteTemplateToTrainerBack(u16 trainerPicId, u8 battlerPosition);
void SetMultiuseSpriteTemplateToTrainerFront(u16 trainerPicId, u8 battlerPosition);
/* GameFreak called Get(Box)MonData with either 2 or 3 arguments, for
@@ -730,10 +731,10 @@ u8 CalculatePPWithBonus(u16 move, u8 ppBonuses, u8 moveIndex);
void RemoveMonPPBonus(struct Pokemon *mon, u8 moveIndex);
void RemoveBattleMonPPBonus(struct BattlePokemon *mon, u8 moveIndex);
void PokemonToBattleMon(struct Pokemon *src, struct BattlePokemon *dst);
-void CopyPartyMonToBattleData(u32 battlerId, u32 partyIndex);
+void CopyPartyMonToBattleData(u32 battler, u32 partyIndex);
bool8 ExecuteTableBasedItemEffect(struct Pokemon *mon, u16 item, u8 partyIndex, u8 moveIndex);
-bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 moveIndex, u8 e);
-bool8 HealStatusConditions(struct Pokemon *mon, u32 healMask, u8 battlerId);
+bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 moveIndex, u8 usedByAI);
+bool8 HealStatusConditions(struct Pokemon *mon, u32 healMask, u8 battler);
u8 GetItemEffectParamOffset(u32 battler, u16 itemId, u8 effectByte, u8 effectBit);
u8 *UseStatIncreaseItem(u16 itemId);
u8 GetNature(struct Pokemon *mon);
@@ -750,10 +751,10 @@ u16 HoennToNationalOrder(u16 hoennNum);
void DrawSpindaSpots(u32 personality, u8 *dest, bool32 isSecondFrame);
void EvolutionRenameMon(struct Pokemon *mon, u16 oldSpecies, u16 newSpecies);
u8 GetPlayerFlankId(void);
-u16 GetLinkTrainerFlankId(u8 id);
+u16 GetLinkTrainerFlankId(u8 linkPlayerId);
s32 GetBattlerMultiplayerId(u16 id);
u8 GetTrainerEncounterMusicId(u16 trainerOpponentId);
-u16 ModifyStatByNature(u8 nature, u16 n, u8 statIndex);
+u16 ModifyStatByNature(u8 nature, u16 stat, u8 statIndex);
void AdjustFriendship(struct Pokemon *mon, u8 event);
void MonGainEVs(struct Pokemon *mon, u16 defeatedSpecies);
u16 GetMonEVCount(struct Pokemon *mon);
@@ -824,7 +825,7 @@ void HealPokemon(struct Pokemon *mon);
void HealBoxPokemon(struct BoxPokemon *boxMon);
void UpdateDaysPassedSinceFormChange(u16 days);
void TrySetDayLimitToFormChange(struct Pokemon *mon);
-u32 CheckDynamicMoveType(struct Pokemon *mon, u32 move, u32 battler);
+u32 CheckDynamicMoveType(struct Pokemon *mon, u32 move, u32 battler, enum MonState state);
uq4_12_t GetDynamaxLevelHPMultiplier(u32 dynamaxLevel, bool32 inverseMultiplier);
u32 GetRegionalFormByRegion(u32 species, u32 region);
bool32 IsSpeciesForeignRegionalForm(u32 species, u32 currentRegion);
diff --git a/include/pokemon_icon.h b/include/pokemon_icon.h
index 3986f8948b..a16d2e2b1b 100644
--- a/include/pokemon_icon.h
+++ b/include/pokemon_icon.h
@@ -6,11 +6,11 @@ extern const struct SpritePalette gMonIconPaletteTable[];
const u8 *GetMonIconTiles(u16 species, u32 personality);
void TryLoadAllMonIconPalettesAtOffset(u16 offset);
u8 GetValidMonIconPalIndex(u16 species);
-const u8 *GetMonIconPtr(u16 speciesId, u32 personality);
-const u16 *GetValidMonIconPalettePtr(u16 speciesId);
+const u8 *GetMonIconPtr(u16 species, u32 personality);
+const u16 *GetValidMonIconPalettePtr(u16 species);
u16 GetIconSpecies(u16 species, u32 personality);
u16 GetUnownLetterByPersonality(u32 personality);
-u16 GetIconSpeciesNoPersonality(u16 speciesId);
+u16 GetIconSpeciesNoPersonality(u16 species);
void LoadMonIconPalettes(void);
void LoadMonIconPalette(u16 species);
void FreeMonIconPalettes(void);
diff --git a/include/pokemon_storage_system.h b/include/pokemon_storage_system.h
index c2825bf779..397ec24dea 100644
--- a/include/pokemon_storage_system.h
+++ b/include/pokemon_storage_system.h
@@ -59,7 +59,7 @@ bool8 CheckFreePokemonStorageSpace(void);
bool32 CheckBoxMonSanityAt(u32 boxId, u32 boxPosition);
u32 CountStorageNonEggMons(void);
u32 CountAllStorageMons(void);
-bool32 AnyStorageMonWithMove(u16 moveId);
+bool32 AnyStorageMonWithMove(u16 move);
void ResetWaldaWallpaper(void);
void SetWaldaWallpaperLockedOrUnlocked(bool32 unlocked);
diff --git a/include/pokenav.h b/include/pokenav.h
index 5c238a6c54..2992a76d12 100644
--- a/include/pokenav.h
+++ b/include/pokenav.h
@@ -33,7 +33,7 @@ typedef void (*PokenavListBufferItemFunc)(struct PokenavListItem *, u8 *);
struct PokenavListTemplate
{
- struct PokenavListItem * list;
+ struct PokenavListItem *list;
u16 count;
u16 startIndex;
u8 itemSize;
@@ -309,7 +309,7 @@ enum {
};
// pokenav.c
-void SetSelectedConditionSearch(u32);
+void SetSelectedConditionSearch(u32 cursorPos);
u32 GetSelectedConditionSearch(void);
void CB2_InitPokeNav(void);
@@ -336,7 +336,7 @@ int PokenavList_MoveCursorDown(void);
int PokenavList_PageDown(void);
int PokenavList_PageUp(void);
bool32 PokenavList_IsMoveWindowTaskActive(void);
-void PokenavList_ToggleVerticalArrows(bool32 shouldHide);
+void PokenavList_ToggleVerticalArrows(bool32 invisible);
void PokenavList_DrawCurrentItemIcon(void);
void PokenavList_EraseListForCheckPage(void);
bool32 PokenavList_IsTaskActive(void);
@@ -362,7 +362,7 @@ void CopyPaletteIntoBufferUnfaded(const u16 *palette, u32 bufferOffset, u32 size
void RunMainMenuLoopedTask(u32 state);
u32 IsActiveMenuLoopTaskActive(void);
void LoadLeftHeaderGfxForIndex(u32 menuGfxId);
-void ShowLeftHeaderGfx(u32 menugfxId, bool32 isMain, bool32 isOnRightSide);
+void ShowLeftHeaderGfx(u32 menuGfxId, bool32 isMain, bool32 isOnRightSide);
void PokenavFadeScreen(s32 fadeType);
bool32 AreLeftHeaderSpritesMoving(void);
void InitBgTemplates(const struct BgTemplate *templates, int count);
@@ -372,7 +372,7 @@ bool32 WaitForHelpBar(void);
void SlideMenuHeaderDown(void);
bool32 MainMenuLoopedTaskIsBusy(void);
void SetLeftHeaderSpritesInvisibility(void);
-void PokenavCopyPalette(const u16 *a0, const u16 *a1, int a2, int a3, int a4, u16 *palette);
+void PokenavCopyPalette(const u16 *src, const u16 *dest, int size, int a3, int a4, u16 *palette);
void FadeToBlackExceptPrimary(void);
struct Sprite *GetSpinningPokenavSprite(void);
void HideSpinningPokenavSprite(void);
@@ -382,7 +382,7 @@ void SlideMenuHeaderUp(void);
void PokenavFillPalette(u32 palIndex, u16 fillValue);
u32 PokenavMainMenuLoopedTaskIsActive(void);
bool32 WaitForPokenavShutdownFade(void);
-void SetActiveMenuLoopTasks(void *func1, void *func2);
+void SetActiveMenuLoopTasks(void *createLoopTask, void *isLoopTaskActive); // Fix types later.
void ShutdownPokenav(void);
// pokenav_menu_handler.c
@@ -413,11 +413,11 @@ void FreeMatchCallSubstruct1(void);
int IsMatchCallListInitFinished(void);
int GetNumberRegistered(void);
struct PokenavMatchCallEntry *GetMatchCallList(void);
-u16 GetMatchCallMapSec(int);
+u16 GetMatchCallMapSec(int index);
bool32 ShouldDrawRematchPokeballIcon(int index);
void ClearRematchPokeballIcon(u16 windowId, u32 tileOffset);
int GetMatchCallTrainerPic(int index);
-const u8 *GetMatchCallFlavorText(int index, int textType);
+const u8 *GetMatchCallFlavorText(int index, int checkPageEntry);
const u8 *GetMatchCallMessageText(int index, bool8 *newRematchRequest);
u16 GetMatchCallOptionCursorPos(void);
u16 GetMatchCallOptionId(int optionId);
@@ -425,7 +425,7 @@ void BufferMatchCallNameAndDesc(struct PokenavMatchCallEntry *matchCallEntry, u8
u8 GetMatchTableMapSectionId(int rematchIndex);
int GetIndexDeltaOfNextCheckPageDown(int index);
int GetIndexDeltaOfNextCheckPageUp(int index);
-bool32 IsRematchEntryRegistered(int index);
+bool32 IsRematchEntryRegistered(int rematchIndex);
// pokenav_match_call_gfx.c
bool32 OpenMatchCall(void);
@@ -437,15 +437,15 @@ void FreeMatchCallSubstruct2(void);
u32 PokenavCallback_Init_RegionMap(void);
u32 GetRegionMapCallback(void);
bool32 OpenPokenavRegionMap(void);
-void CreateRegionMapLoopedTask(s32);
+void CreateRegionMapLoopedTask(s32 index);
bool32 IsRegionMapLoopedTaskActive(void);
void FreeRegionMapSubstruct1(void);
void FreeRegionMapSubstruct2(void);
void UpdateRegionMapHelpBarText(void);
// pokenav_conditions.c
-u32 PokenavCallback_Init_ConditionGraph_Party(void);
-u32 PokenavCallback_Init_ConditionGraph_Search(void);
+bool32 PokenavCallback_Init_ConditionGraph_Party(void);
+bool32 PokenavCallback_Init_ConditionGraph_Search(void);
u32 GetConditionGraphMenuCallback(void);
void FreeConditionGraphMenuSubstruct1(void);
bool32 LoadConditionGraphMenuGfx(void);
@@ -456,47 +456,47 @@ u16 GetMonListCount(void);
u8 GetNumConditionMonSparkles(void);
bool32 LoadNextConditionMenuMonData(u8 mode);
u8 TryGetMonMarkId(void);
-u8 *GetConditionMonNameText(u8 id);
-u8 *GetConditionMonLocationText(u8 id);
+u8 *GetConditionMonNameText(u8 loadId);
+u8 *GetConditionMonLocationText(u8 loadId);
u16 GetConditionMonDataBuffer(void);
-void *GetConditionMonPicGfx(u8 id);
-void *GetConditionMonPal(u8 id);
+void *GetConditionMonPicGfx(u8 loadId);
+void *GetConditionMonPal(u8 loadId);
// pokenav_conditions_gfx.c
bool32 OpenConditionGraphMenu(void);
-void CreateConditionGraphMenuLoopedTask(s32);
+void CreateConditionGraphMenuLoopedTask(s32 id);
u32 IsConditionGraphMenuLoopedTaskActive(void);
void FreeConditionGraphMenuSubstruct2(void);
u8 GetMonMarkingsData(void);
// pokenav_conditions_search_results.c
-u32 PokenavCallback_Init_ConditionSearch(void);
-u32 PokenavCallback_Init_ReturnToMonSearchList(void);
+bool32 PokenavCallback_Init_ConditionSearch(void);
+bool32 PokenavCallback_Init_ReturnToMonSearchList(void);
u32 GetConditionSearchResultsCallback(void);
void FreeSearchResultSubstruct1(void);
bool32 OpenConditionSearchResults(void);
bool32 OpenConditionSearchListFromGraph(void);
-void CreateSearchResultsLoopedTask(s32);
-u32 IsSearchResultLoopedTaskActive(void);
+void CreateSearchResultsLoopedTask(s32 idx);
+bool32 IsSearchResultLoopedTaskActive(void);
void FreeSearchResultSubstruct2(void);
// pokenav_ribbons_list.c
-u32 PokenavCallback_Init_MonRibbonList(void);
-u32 PokenavCallback_Init_RibbonsMonListFromSummary(void);
+bool32 PokenavCallback_Init_MonRibbonList(void);
+bool32 PokenavCallback_Init_RibbonsMonListFromSummary(void);
u32 GetRibbonsMonListCallback(void);
void FreeRibbonsMonList(void);
bool32 OpenRibbonsMonList(void);
bool32 OpenRibbonsMonListFromRibbonsSummary(void);
-void CreateRibbonsMonListLoopedTask(s32);
-u32 IsRibbonsMonListLoopedTaskActive(void);
+void CreateRibbonsMonListLoopedTask(s32 idx);
+bool32 IsRibbonsMonListLoopedTaskActive(void);
void FreeRibbonsMonMenu(void);
// pokenav_ribbons_summary.c
-u32 PokenavCallback_Init_RibbonsSummaryMenu(void);
+bool32 PokenavCallback_Init_RibbonsSummaryMenu(void);
u32 GetRibbonsSummaryMenuCallback(void);
void FreeRibbonsSummaryScreen1(void);
bool32 OpenRibbonsSummaryMenu(void);
-void CreateRibbonsSummaryLoopedTask(s32);
+void CreateRibbonsSummaryLoopedTask(s32 id);
u32 IsRibbonsSummaryLoopedTaskActive(void);
void FreeRibbonsSummaryScreen2(void);
diff --git a/include/rayquaza_scene.h b/include/rayquaza_scene.h
index 5aa21981eb..422b591273 100644
--- a/include/rayquaza_scene.h
+++ b/include/rayquaza_scene.h
@@ -1,6 +1,6 @@
#ifndef GUARD_RAYQUAZA_SCENE_H
#define GUARD_RAYQUAZA_SCENE_H
-void DoRayquazaScene(u8 animId, bool8 endEarly, void (*callback)(void));
+void DoRayquazaScene(u8 animId, bool8 endEarly, void (*exitCallback)(void));
#endif // GUARD_RAYQUAZA_SCENE_H
diff --git a/include/recorded_battle.h b/include/recorded_battle.h
index 15a3a05286..faf966109f 100644
--- a/include/recorded_battle.h
+++ b/include/recorded_battle.h
@@ -60,11 +60,11 @@ extern u8 gRecordedBattleMultiplayerId;
void RecordedBattle_Init(u8 mode);
void RecordedBattle_SetTrainerInfo(void);
-void RecordedBattle_SetBattlerAction(u8 battlerId, u8 action);
-void RecordedBattle_ClearBattlerAction(u8 battlerId, u8 bytesToClear);
-u8 RecordedBattle_GetBattlerAction(u32 actionType, u8 battlerId);
+void RecordedBattle_SetBattlerAction(u8 battler, u8 action);
+void RecordedBattle_ClearBattlerAction(u8 battler, u8 bytesToClear);
+u8 RecordedBattle_GetBattlerAction(u32 actionType, u8 battler);
u8 RecordedBattle_BufferNewBattlerData(u8 *dst);
-void RecordedBattle_RecordAllBattlerData(u8 *data);
+void RecordedBattle_RecordAllBattlerData(u8 *src);
bool32 CanCopyRecordedBattleSaveData(void);
bool32 MoveRecordedBattleToSaveData(void);
void SetPartiesFromRecordedSave(struct RecordedBattleSave *src);
diff --git a/include/region_map.h b/include/region_map.h
index 08277651de..2ca153e92f 100644
--- a/include/region_map.h
+++ b/include/region_map.h
@@ -96,7 +96,7 @@ struct RegionMapLocation
void InitRegionMapData(struct RegionMap *regionMap, const struct BgTemplate *template, bool8 zoomed);
bool8 LoadRegionMapGfx(void);
void UpdateRegionMapVideoRegs(void);
-void InitRegionMap(struct RegionMap *regionMap, u8 argument);
+void InitRegionMap(struct RegionMap *regionMap, bool8 zoomed);
u8 DoRegionMapInputCallback(void);
bool8 UpdateRegionMapZoom(void);
void FreeRegionMapIconResources(void);
@@ -104,7 +104,7 @@ u16 GetRegionMapSecIdAt(u16 x, u16 y);
void CreateRegionMapPlayerIcon(u16 tileTag, u16 paletteTag);
void CreateRegionMapCursor(u16 tileTag, u16 paletteTag);
bool32 IsEventIslandMapSecId(u8 mapSecId);
-u8 *GetMapName(u8 *, u16, u16);
+u8 *GetMapName(u8 *dest, u16 regionMapId, u16 padLength);
u8 *GetMapNameGeneric(u8 *dest, u16 mapSecId);
u8 *GetMapNameHandleAquaHideout(u8 *dest, u16 mapSecId);
u16 CorrectSpecialMapSecId(u16 mapSecId);
diff --git a/include/roamer.h b/include/roamer.h
index 36e9f14000..eac732a74c 100644
--- a/include/roamer.h
+++ b/include/roamer.h
@@ -8,7 +8,7 @@ void RoamerMoveToOtherLocationSet(u32 roamerIndex);
void RoamerMove(u32 roamerIndex);
bool8 IsRoamerAt(u32 roamerIndex, u8 mapGroup, u8 mapNum);
void CreateRoamerMonInstance(u32 roamerIndex);
-u8 TryStartRoamerEncounter(void);
+bool8 TryStartRoamerEncounter(void);
void UpdateRoamerHPStatus(struct Pokemon *mon);
void SetRoamerInactive(u32 roamerIndex);
void GetRoamerLocation(u32 roamerIndex, u8 *mapGroup, u8 *mapNum);
diff --git a/include/rtc.h b/include/rtc.h
index 13a1207b56..8ee3071615 100644
--- a/include/rtc.h
+++ b/include/rtc.h
@@ -4,101 +4,10 @@
#include "global.h"
#include "siirtc.h"
#include "config/overworld.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
+#include "constants/rtc.h"
extern struct Time gLocalTime;
-extern const s32 sNumDaysInMonths[12];
+extern const s32 sNumDaysInMonths[MONTH_COUNT];
void RtcDisableInterrupts(void);
void RtcRestoreInterrupts(void);
diff --git a/include/safari_zone.h b/include/safari_zone.h
index 39ee3ccb3e..5336c81057 100644
--- a/include/safari_zone.h
+++ b/include/safari_zone.h
@@ -16,6 +16,6 @@ void SafariZoneRetirePrompt(void);
void CB2_EndSafariBattle(void);
struct Pokeblock *SafariZoneGetActivePokeblock(void);
-void SafariZoneActivatePokeblockFeeder(u8 pokeblock_index);
+void SafariZoneActivatePokeblockFeeder(u8 pkblId);
#endif // GUARD_SAFARI_ZONE_H
diff --git a/include/scanline_effect.h b/include/scanline_effect.h
index 0b395d4f60..18f5307f87 100644
--- a/include/scanline_effect.h
+++ b/include/scanline_effect.h
@@ -39,7 +39,7 @@ extern u16 ALIGNED(4) gScanlineEffectRegBuffers[2][0x3C0];
void ScanlineEffect_Stop(void);
void ScanlineEffect_Clear(void);
-void ScanlineEffect_SetParams(struct ScanlineEffectParams);
+void ScanlineEffect_SetParams(struct ScanlineEffectParams params);
void ScanlineEffect_InitHBlankDmaTransfer(void);
u8 ScanlineEffect_InitWave(u8 startLine, u8 endLine, u8 frequency, u8 amplitude, u8 delayInterval, u8 regOffset, bool8 applyBattleBgOffsets);
diff --git a/include/script_menu.h b/include/script_menu.h
index d690939fae..7b92de04ea 100644
--- a/include/script_menu.h
+++ b/include/script_menu.h
@@ -42,7 +42,7 @@ bool8 (*ScriptMenu_HidePokemonPic(void))(void);
int ConvertPixelWidthToTileWidth(int width);
u8 CreateWindowFromRect(u8 x, u8 y, u8 width, u8 height);
void ClearToTransparentAndRemoveWindow(u8 windowId);
-int DisplayTextAndGetWidth(const u8 *str, int width);
+int DisplayTextAndGetWidth(const u8 *str, int prevWidth);
int ScriptMenu_AdjustLeftCoordFromWidth(int left, int width);
bool16 ScriptMenu_CreatePCMultichoice(void);
void ScriptMenu_DisplayPCStartupPrompt(void);
diff --git a/include/script_pokemon_util.h b/include/script_pokemon_util.h
index 6508295a2d..050bc0ed32 100644
--- a/include/script_pokemon_util.h
+++ b/include/script_pokemon_util.h
@@ -1,11 +1,11 @@
#ifndef GUARD_SCRIPT_POKEMON_UTIL_H
#define GUARD_SCRIPT_POKEMON_UTIL_H
-u32 ScriptGiveMon(u16, u8, u16);
-u8 ScriptGiveEgg(u16);
-void CreateScriptedWildMon(u16, u8, u16);
-void CreateScriptedDoubleWildMon(u16, u8, u16, u16, u8, u16);
-void ScriptSetMonMoveSlot(u8, u16, u8);
+u32 ScriptGiveMon(u16 species, u8 level, u16 item);
+u8 ScriptGiveEgg(u16 species);
+void CreateScriptedWildMon(u16 species, u8 level, u16 item);
+void CreateScriptedDoubleWildMon(u16 species, u8 level, u16 item, u16 species2, u8 level2, u16 item2);
+void ScriptSetMonMoveSlot(u8 monIndex, u16 move, u8 slot);
void ReducePlayerPartyToSelectedMons(void);
void HealPlayerParty(void);
void Script_GetChosenMonOffensiveEVs(void);
diff --git a/include/secret_base.h b/include/secret_base.h
index 567316cf9c..5502194ff2 100644
--- a/include/secret_base.h
+++ b/include/secret_base.h
@@ -3,7 +3,7 @@
void HideSecretBaseDecorationSprites(void);
void CopyCurSecretBaseOwnerName_StrVar1(void);
-void ClearJapaneseSecretBases(struct SecretBase *dest);
+void ClearJapaneseSecretBases(struct SecretBase *bases);
void SetPlayerSecretBaseParty(void);
u8 *GetSecretBaseMapName(u8 *dest);
const u8 *GetSecretBaseTrainerLoseText(void);
@@ -24,6 +24,6 @@ void SetCurSecretBaseIdFromPosition(const struct MapPosition *position, const st
void TrySetCurSecretBaseIndex(void);
void CheckPlayerHasSecretBase(void);
void ToggleSecretBaseEntranceMetatile(void);
-void ReceiveSecretBasesData(void *records, size_t recordSize, u8 linkIdx);
+void ReceiveSecretBasesData(void *secretBases, size_t recordSize, u8 linkIdx);
#endif //GUARD_SECRET_BASE_H
diff --git a/include/shop.h b/include/shop.h
index 6644ba0aa0..367c06ed6c 100644
--- a/include/shop.h
+++ b/include/shop.h
@@ -3,9 +3,9 @@
extern struct ItemSlot gMartPurchaseHistory[3];
-void CreatePokemartMenu(const u16 *);
-void CreateDecorationShop1Menu(const u16 *);
-void CreateDecorationShop2Menu(const u16 *);
+void CreatePokemartMenu(const u16 *itemsForSale);
+void CreateDecorationShop1Menu(const u16 *itemsForSale);
+void CreateDecorationShop2Menu(const u16 *itemsForSale);
void CB2_ExitSellMenu(void);
#endif // GUARD_SHOP_H
diff --git a/include/siirtc.h b/include/siirtc.h
index 8e6958ca08..44dabfd11d 100644
--- a/include/siirtc.h
+++ b/include/siirtc.h
@@ -2,45 +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 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
-};
+#include "constants/siirtc.h"
struct SiiRtcInfo
{
diff --git a/include/slot_machine.h b/include/slot_machine.h
index 88bbbd91bd..56617b23d7 100644
--- a/include/slot_machine.h
+++ b/include/slot_machine.h
@@ -1,6 +1,6 @@
#ifndef GUARD_SLOT_MACHINE_H
#define GUARD_SLOT_MACHINE_H
-void PlaySlotMachine(u8, void (callback)(void));
+void PlaySlotMachine(u8 machineId, MainCallback exitCallback);
#endif // GUARD_SLOT_MACHINE_H
diff --git a/include/sprite.h b/include/sprite.h
index ccf0424c0a..5b5fd5e62f 100644
--- a/include/sprite.h
+++ b/include/sprite.h
@@ -314,7 +314,7 @@ u32 IndexOfSpritePaletteTag(u16 tag);
u16 GetSpritePaletteTagByPaletteNum(u8 paletteNum);
void FreeSpritePaletteByTag(u16 tag);
void SetSubspriteTables(struct Sprite *sprite, const struct SubspriteTable *subspriteTables);
-bool8 AddSpriteToOamBuffer(struct Sprite *object, u8 *oamIndex);
+bool8 AddSpriteToOamBuffer(struct Sprite *sprite, u8 *oamIndex);
bool8 AddSubspritesToOamBuffer(struct Sprite *sprite, struct OamData *destOam, u8 *oamIndex);
void CopyToSprites(u8 *src);
void CopyFromSprites(u8 *dest);
diff --git a/include/text.h b/include/text.h
index a148410c2f..040fe49f13 100644
--- a/include/text.h
+++ b/include/text.h
@@ -141,14 +141,14 @@ extern struct TextGlyph gCurGlyph;
void DeactivateAllTextPrinters(void);
u16 AddTextPrinterParameterized(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 speed, void (*callback)(struct TextPrinterTemplate *, u16));
-bool32 AddTextPrinter(struct TextPrinterTemplate *template, u8 speed, void (*callback)(struct TextPrinterTemplate *, u16));
+bool32 AddTextPrinter(struct TextPrinterTemplate *printerTemplate, u8 speed, void (*callback)(struct TextPrinterTemplate *, u16));
void RunTextPrinters(void);
bool32 IsTextPrinterActive(u8 id);
void GenerateFontHalfRowLookupTable(u8 fgColor, u8 bgColor, u8 shadowColor);
void SaveTextColors(u8 *fgColor, u8 *bgColor, u8 *shadowColor);
void RestoreTextColors(u8 *fgColor, u8 *bgColor, u8 *shadowColor);
void DecompressGlyphTile(const void *src_, void *dest_);
-void CopyGlyphToWindow(struct TextPrinter *x);
+void CopyGlyphToWindow(struct TextPrinter *textPrinter);
void ClearTextSpan(struct TextPrinter *textPrinter, u32 width);
void TextPrinterInitDownArrowCounters(struct TextPrinter *textPrinter);
diff --git a/include/tilesets.h b/include/tilesets.h
index b495b6c52c..976c8342e7 100644
--- a/include/tilesets.h
+++ b/include/tilesets.h
@@ -4,8 +4,8 @@
extern const u32 gTilesetTiles_General[];
extern const u16 gTilesetPalettes_General[][16];
-extern const struct Tileset * const gTilesetPointer_SecretBase;
-extern const struct Tileset * const gTilesetPointer_SecretBaseRedCave;
+extern const struct Tileset *const gTilesetPointer_SecretBase;
+extern const struct Tileset *const gTilesetPointer_SecretBaseRedCave;
extern const struct Tileset gTileset_Building;
extern const struct Tileset gTileset_BrendansMaysHouse;
diff --git a/include/time_events.h b/include/time_events.h
index fd6d29f390..f40b9b45ef 100644
--- a/include/time_events.h
+++ b/include/time_events.h
@@ -1,8 +1,8 @@
#ifndef GUARD_TIME_EVENTS_H
#define GUARD_TIME_EVENTS_H
-void UpdateMirageRnd(u16);
-u8 IsMirageIslandPresent(void);
-void UpdateBirchState(u16);
+void UpdateMirageRnd(u16 days);
+bool8 IsMirageIslandPresent(void);
+void UpdateBirchState(u16 days);
#endif // GUARD_TIME_EVENTS_H
diff --git a/include/trade.h b/include/trade.h
index 6b621038fc..33191f0ac6 100644
--- a/include/trade.h
+++ b/include/trade.h
@@ -14,10 +14,10 @@ void CB2_StartCreateTradeMenu(void);
void CB2_LinkTrade(void);
int CanRegisterMonForTradingBoard(struct RfuGameCompatibilityData player, u16 species2, u16 species, bool8 isModernFatefulEncounter);
int GetUnionRoomTradeMessageId(struct RfuGameCompatibilityData player, struct RfuGameCompatibilityData partner, u16 playerSpecies2, u16 partnerSpecies, u8 requestedType, u16 playerSpecies, bool8 isModernFatefulEncounter);
-int CanSpinTradeMon(struct Pokemon *, u16);
+int CanSpinTradeMon(struct Pokemon *mon, u16 monIdx);
void InitTradeSequenceBgGpuRegs(void);
void LinkTradeDrawWindow(void);
void LoadTradeAnimGfx(void);
-void DrawTextOnTradeWindow(u8, const u8 *, u8);
+void DrawTextOnTradeWindow(u8 windowId, const u8 *str, u8 speed);
#endif //GUARD_TRADE_H
diff --git a/include/trainer_card.h b/include/trainer_card.h
index 9e5e53df66..ecba9fd1f2 100644
--- a/include/trainer_card.h
+++ b/include/trainer_card.h
@@ -69,6 +69,6 @@ u8 GetTrainerCardStars(u8 cardId);
void CopyTrainerCardData(struct TrainerCard *dst, struct TrainerCard *src, u8 gameVersion);
void ShowPlayerTrainerCard(void (*callback)(void));
void ShowTrainerCardInLink(u8 cardId, void (*callback)(void));
-void TrainerCard_GenerateCardForLinkPlayer(struct TrainerCard *);
+void TrainerCard_GenerateCardForLinkPlayer(struct TrainerCard *trainerCard);
#endif // GUARD_TRAINER_CARD_H
diff --git a/include/trainer_see.h b/include/trainer_see.h
index 5518a91761..438bf43ce2 100644
--- a/include/trainer_see.h
+++ b/include/trainer_see.h
@@ -17,7 +17,7 @@ extern bool8 gTrainerApproachedPlayer;
extern u8 gApproachingTrainerId;
bool8 CheckForTrainersWantingBattle(void);
-void SetBuriedTrainerMovement(struct ObjectEvent *var);
+void SetBuriedTrainerMovement(struct ObjectEvent *objEvent);
void DoTrainerApproach(void);
void TryPrepareSecondApproachingTrainer(void);
u8 FldEff_ExclamationMarkIcon(void);
diff --git a/include/tv.h b/include/tv.h
index 31c8fcc50f..a9a387e95b 100644
--- a/include/tv.h
+++ b/include/tv.h
@@ -5,8 +5,8 @@ extern u8 *const gTVStringVarPtrs[3];
void ClearTVShowData(void);
void TryPutBreakingNewsOnAir(void);
-void TryPutBattleSeminarOnAir(u16 foeSpecies, u16 species, u8 moveIdx, const u16 *movePtr, u16 betterMove);
-void TryPutFrontierTVShowOnAir(u16 winStreak, u8 facility);
+void TryPutBattleSeminarOnAir(u16 foeSpecies, u16 species, u8 moveIndex, const u16 *movePtr, u16 betterMove);
+void TryPutFrontierTVShowOnAir(u16 winStreak, u8 facilityAndMode);
void DoTVShow(void);
void DoTVShowInSearchOfTrainers(void);
void TryPutTreasureInvestigatorsOnAir(void);
@@ -16,7 +16,7 @@ void IncrementDailyPlantedBerries(void);
void IncrementDailyPickedBerries(void);
void IncrementDailyBattlePoints(u16 delta);
void HideBattleTowerReporter(void);
-void ReceiveTvShowsData(void *src, u32 size, u8 masterIdx);
+void ReceiveTvShowsData(void *src, u32 size, u8 playersLinkId);
void TryPutSpotTheCutiesOnAir(struct Pokemon *pokemon, u8 ribbonMonDataIdx);
u32 GetPlayerIDAsU32(void);
bool8 IsPokeNewsActive(u8 newsKind);
@@ -29,7 +29,7 @@ void TryPutFindThatGamerOnAir(u16 nCoinsPaidOut);
void TryPutSecretBaseSecretsOnAir(void);
void TryPutTodaysRivalTrainerOnAir(void);
void TryPutTrendWatcherOnAir(const u16 *words);
-void ReceivePokeNewsData(void *src, u32 size, u8 masterIdx);
+void ReceivePokeNewsData(void *src, u32 size, u8 playersLinkId);
void DeactivateAllNormalTVShows(void);
void RecordFishingAttemptForTV(bool8 caughtFish);
void IncrementDailySlotsUses(void);
@@ -37,8 +37,8 @@ void IncrementDailyRouletteUses(void);
void IncrementDailyWildBattles(void);
void IncrementDailyBerryBlender(void);
void SanitizeTVShowsForRuby(TVShow *shows);
-void TryPutSafariFanClubOnAir(u8 nMonsCaught, u8 nPkblkUsed);
-bool8 Put3CheersForPokeblocksOnTheAir(const u8 *partnersName, u8 flavor, u8 unused, u8 sheen, u8 language);
+void TryPutSafariFanClubOnAir(u8 monsCaught, u8 pokeblocksUsed);
+bool8 Put3CheersForPokeblocksOnTheAir(const u8 *partnersName, u8 flavor, u8 color, u8 sheen, u8 language);
void SetPokemonAnglerSpecies(u16 species);
void UpdateTVShowsPerDay(u16 days);
void TryPutPokemonTodayOnAir(void);
@@ -47,7 +47,7 @@ void PutBattleUpdateOnTheAir(u8 opponentLinkPlayerId, u16 move, u16 speciesPlaye
void BravoTrainerPokemonProfile_BeforeInterview1(u16 move);
void InterviewBefore(void);
void InterviewAfter(void);
-void UpdateTVScreensOnMap(int, int);
+void UpdateTVScreensOnMap(int width, int height);
void ConvertIntToDecimalString(u8 varIdx, int value);
void TryPutSmartShopperOnAir(void);
bool8 ShouldAirFrontierTVShow(void);
diff --git a/include/util.h b/include/util.h
index fcc4e37bb1..f5a7785f4b 100644
--- a/include/util.h
+++ b/include/util.h
@@ -5,9 +5,9 @@
extern const u8 gMiscBlank_Gfx[]; // unused in Emerald
-u8 CreateInvisibleSpriteWithCallback(void (*)(struct Sprite *));
-void StoreWordInTwoHalfwords(u16 *, u32);
-void LoadWordFromTwoHalfwords(u16 *, u32 *);
+u8 CreateInvisibleSpriteWithCallback(void (*callback)(struct Sprite *));
+void StoreWordInTwoHalfwords(u16 *h, u32 w);
+void LoadWordFromTwoHalfwords(u16 *h, u32 *w);
int CountTrailingZeroBits(u32 value);
u16 CalcCRC16(const u8 *data, s32 length);
u16 CalcCRC16WithTable(const u8 *data, u32 length);
diff --git a/include/wild_encounter.h b/include/wild_encounter.h
index 0edf396164..8a0eb671f6 100644
--- a/include/wild_encounter.h
+++ b/include/wild_encounter.h
@@ -40,12 +40,7 @@ struct WildPokemonHeader
{
u8 mapGroup;
u8 mapNum;
-
-#if OW_TIME_OF_DAY_ENCOUNTERS
const struct WildEncounterTypes encounterTypes[TIMES_OF_DAY_COUNT];
-#else
- const struct WildEncounterTypes encounterTypes[1];
-#endif
};
@@ -56,7 +51,7 @@ extern u8 gChainFishingDexNavStreak;
void DisableWildEncounters(bool8 disabled);
u8 PickWildMonNature(void);
-bool8 StandardWildEncounter(u16 currMetaTileBehavior, u16 previousMetaTileBehavior);
+bool8 StandardWildEncounter(u16 curMetatileBehavior, u16 prevMetatileBehavior);
bool8 SweetScentWildEncounter(void);
bool8 DoesCurrentMapHaveFishingMons(void);
void FishingWildEncounter(u8 rod);
diff --git a/json_data_rules.mk b/json_data_rules.mk
index 1969496b0e..d545459d43 100755
--- a/json_data_rules.mk
+++ b/json_data_rules.mk
@@ -6,3 +6,17 @@ $(DATA_SRC_SUBDIR)/region_map/region_map_entries.h: $(DATA_SRC_SUBDIR)/region_ma
$(JSONPROC) $^ $@
$(C_BUILDDIR)/region_map.o: c_dep += $(DATA_SRC_SUBDIR)/region_map/region_map_entries.h
+
+AUTO_GEN_TARGETS += include/constants/region_map_sections.h
+include/constants/region_map_sections.h: $(DATA_SRC_SUBDIR)/region_map/region_map_sections.json $(DATA_SRC_SUBDIR)/region_map/region_map_sections.constants.json.txt
+ $(JSONPROC) $^ $@
+
+AUTO_GEN_TARGETS += $(DATA_SRC_SUBDIR)/heal_locations.h
+$(DATA_SRC_SUBDIR)/heal_locations.h: $(DATA_SRC_SUBDIR)/heal_locations.json $(DATA_SRC_SUBDIR)/heal_locations.json.txt
+ $(JSONPROC) $^ $@
+
+$(C_BUILDDIR)/heal_location.o: c_dep += $(DATA_SRC_SUBDIR)/heal_locations.h
+
+AUTO_GEN_TARGETS += include/constants/heal_locations.h
+include/constants/heal_locations.h: $(DATA_SRC_SUBDIR)/heal_locations.json $(DATA_SRC_SUBDIR)/heal_locations.constants.json.txt
+ $(JSONPROC) $^ $@
diff --git a/map_data_rules.mk b/map_data_rules.mk
index f3e8d5dc89..e0d3d3b71a 100755
--- a/map_data_rules.mk
+++ b/map_data_rules.mk
@@ -11,12 +11,14 @@ INCLUDECONSTS_OUTDIR := include/constants
AUTO_GEN_TARGETS += $(INCLUDECONSTS_OUTDIR)/map_groups.h
AUTO_GEN_TARGETS += $(INCLUDECONSTS_OUTDIR)/layouts.h
+AUTO_GEN_TARGETS += $(INCLUDECONSTS_OUTDIR)/map_event_ids.h
AUTO_GEN_TARGETS += $(DATA_SRC_SUBDIR)/map_group_count.h
MAP_DIRS := $(dir $(wildcard $(MAPS_DIR)/*/map.json))
MAP_CONNECTIONS := $(patsubst $(MAPS_DIR)/%/,$(MAPS_DIR)/%/connections.inc,$(MAP_DIRS))
MAP_EVENTS := $(patsubst $(MAPS_DIR)/%/,$(MAPS_DIR)/%/events.inc,$(MAP_DIRS))
MAP_HEADERS := $(patsubst $(MAPS_DIR)/%/,$(MAPS_DIR)/%/header.inc,$(MAP_DIRS))
+MAP_JSONS := $(patsubst $(MAPS_DIR)/%/,$(MAPS_DIR)/%/map.json,$(MAP_DIRS))
$(DATA_ASM_BUILDDIR)/maps.o: $(DATA_ASM_SUBDIR)/maps.s $(LAYOUTS_DIR)/layouts.inc $(LAYOUTS_DIR)/layouts_table.inc $(MAPS_DIR)/headers.inc $(MAPS_DIR)/groups.inc $(MAPS_DIR)/connections.inc $(MAP_CONNECTIONS) $(MAP_HEADERS)
$(PREPROC) $< charmap.txt | $(CPP) -I include - | $(PREPROC) -ie $< charmap.txt | $(AS) $(ASFLAGS) -o $@
@@ -31,3 +33,9 @@ $(MAPS_OUTDIR)/connections.inc $(MAPS_OUTDIR)/groups.inc $(MAPS_OUTDIR)/events.i
$(LAYOUTS_OUTDIR)/layouts.inc $(LAYOUTS_OUTDIR)/layouts_table.inc $(INCLUDECONSTS_OUTDIR)/layouts.h: $(LAYOUTS_DIR)/layouts.json
$(MAPJSON) layouts emerald $< $(LAYOUTS_OUTDIR) $(INCLUDECONSTS_OUTDIR)
+
+# Generate constants for map events, which depend on data that's distributed across the map.json files.
+# There's a lot of map.json files, so we print an abbreviated output with echo.
+$(INCLUDECONSTS_OUTDIR)/map_event_ids.h: $(MAP_JSONS)
+ @$(MAPJSON) event_constants emerald $^ $(INCLUDECONSTS_OUTDIR)/map_event_ids.h
+ @echo "$(MAPJSON) event_constants emerald $(INCLUDECONSTS_OUTDIR)/map_event_ids.h"
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/src/agb_flash_1m.c b/src/agb_flash_1m.c
index 037f7a964d..49696a7bbf 100644
--- a/src/agb_flash_1m.c
+++ b/src/agb_flash_1m.c
@@ -3,7 +3,7 @@
USED static const char AgbLibFlashVersion[] = "FLASH1M_V103";
-static const struct FlashSetupInfo * const sSetupInfos[] =
+static const struct FlashSetupInfo *const sSetupInfos[] =
{
&MX29L010,
&LE26FV10N1TS,
@@ -14,7 +14,7 @@ u16 IdentifyFlash(void)
{
u16 result;
u16 flashId;
- const struct FlashSetupInfo * const *setupInfo;
+ const struct FlashSetupInfo *const *setupInfo;
REG_WAITCNT = (REG_WAITCNT & ~WAITCNT_SRAM_MASK) | WAITCNT_SRAM_8;
diff --git a/src/apprentice.c b/src/apprentice.c
index 7dcca7b28b..4b0403b281 100644
--- a/src/apprentice.c
+++ b/src/apprentice.c
@@ -70,8 +70,8 @@ struct ApprenticeQuestionData
{
u16 speciesId;
u16 altSpeciesId;
- u16 moveId1;
- u16 moveId2;
+ u16 move1;
+ u16 move2;
};
// IWRAM common
@@ -81,7 +81,7 @@ COMMON_DATA void (*gApprenticeFunc)(void) = NULL;
// This file's functions.
static u16 GetRandomAlternateMove(u8 monId);
-static bool8 TrySetMove(u8 monId, u16 moveId);
+static bool8 TrySetMove(u8 monId, u16 move);
static void CreateChooseAnswerTask(bool8 noBButton, u8 itemsCount, u8 windowId);
static u8 CreateAndShowWindow(u8 left, u8 top, u8 width, u8 height);
static void RemoveAndHideWindow(u8 windowId);
@@ -316,7 +316,7 @@ static u16 GetRandomAlternateMove(u8 monId)
u16 species;
const struct LevelUpMove *learnset;
bool32 needTMs = FALSE;
- u16 moveId = MOVE_NONE;
+ u16 move = MOVE_NONE;
bool32 shouldUseMove;
u8 level;
@@ -358,7 +358,7 @@ static u16 GetRandomAlternateMove(u8 monId)
}
while (!shouldUseMove);
- moveId = ItemIdToBattleMoveId(ITEM_TM01 + id);
+ move = ItemIdToBattleMoveId(ITEM_TM01 + id);
shouldUseMove = TRUE;
if (numLearnsetMoves <= MAX_MON_MOVES)
@@ -369,7 +369,7 @@ static u16 GetRandomAlternateMove(u8 monId)
for (; j < numLearnsetMoves; j++)
{
// Keep looking for TMs until one not in the level up learnset is found
- if ((learnset[j].move) == moveId)
+ if ((learnset[j].move) == move)
{
shouldUseMove = FALSE;
break;
@@ -393,13 +393,13 @@ static u16 GetRandomAlternateMove(u8 monId)
{
// Get a random move excluding the 4 it would know at max level
u8 learnsetId = Random() % (numLearnsetMoves - MAX_MON_MOVES);
- moveId = learnset[learnsetId].move;
+ move = learnset[learnsetId].move;
shouldUseMove = TRUE;
for (j = numLearnsetMoves - MAX_MON_MOVES; j < numLearnsetMoves; j++)
{
// Keep looking for moves until one not in the last 4 is found
- if ((learnset[j].move) == moveId)
+ if ((learnset[j].move) == move)
{
shouldUseMove = FALSE;
break;
@@ -409,29 +409,29 @@ static u16 GetRandomAlternateMove(u8 monId)
}
}
- if (TrySetMove(monId, moveId))
+ if (TrySetMove(monId, move))
{
- if (IsValidApprenticeMove(moveId))
+ if (IsValidApprenticeMove(move))
break;
i++;
}
}
gApprenticePartyMovesData->moveCounter++;
- return moveId;
+ return move;
}
-static bool8 TrySetMove(u8 monId, u16 moveId)
+static bool8 TrySetMove(u8 monId, u16 move)
{
u8 i;
for (i = 0; i < NUM_WHICH_MOVE_QUESTIONS; i++)
{
- if (gApprenticePartyMovesData->moves[monId][i] == moveId)
+ if (gApprenticePartyMovesData->moves[monId][i] == move)
return FALSE;
}
- gApprenticePartyMovesData->moves[monId][gApprenticePartyMovesData->moveCounter] = moveId;
+ gApprenticePartyMovesData->moves[monId][gApprenticePartyMovesData->moveCounter] = move;
return TRUE;
}
@@ -584,8 +584,8 @@ static void CreateApprenticeMenu(u8 menu)
case APPRENTICE_ASK_MOVES:
left = 17;
top = 8;
- strings[0] = GetMoveName(gApprenticeQuestionData->moveId1);
- strings[1] = GetMoveName(gApprenticeQuestionData->moveId2);
+ strings[0] = GetMoveName(gApprenticeQuestionData->move1);
+ strings[1] = GetMoveName(gApprenticeQuestionData->move2);
break;
case APPRENTICE_ASK_GIVE:
left = 18;
@@ -985,8 +985,8 @@ static void InitQuestionData(void)
count = PLAYER_APPRENTICE.questions[CURRENT_QUESTION_NUM].monId;
APPRENTICE_SPECIES_ID_NO_COND(id1, count);
gApprenticeQuestionData->speciesId = gApprentices[PLAYER_APPRENTICE.id].species[id1];
- gApprenticeQuestionData->moveId1 = GetDefaultMove(count, id1, PLAYER_APPRENTICE.questions[CURRENT_QUESTION_NUM].moveSlot);
- gApprenticeQuestionData->moveId2 = PLAYER_APPRENTICE.questions[CURRENT_QUESTION_NUM].data;
+ gApprenticeQuestionData->move1 = GetDefaultMove(count, id1, PLAYER_APPRENTICE.questions[CURRENT_QUESTION_NUM].moveSlot);
+ gApprenticeQuestionData->move2 = PLAYER_APPRENTICE.questions[CURRENT_QUESTION_NUM].data;
}
}
else if (gSpecialVar_0x8005 == APPRENTICE_QUESTION_WHAT_ITEM)
@@ -1041,13 +1041,13 @@ static void ApprenticeBufferString(void)
StringCopy(stringDst, GetSpeciesName(gApprenticeQuestionData->speciesId));
break;
case APPRENTICE_BUFF_MOVE1:
- StringCopy(stringDst, GetMoveName(gApprenticeQuestionData->moveId1));
+ StringCopy(stringDst, GetMoveName(gApprenticeQuestionData->move1));
break;
case APPRENTICE_BUFF_MOVE2:
- StringCopy(stringDst, GetMoveName(gApprenticeQuestionData->moveId2));
+ StringCopy(stringDst, GetMoveName(gApprenticeQuestionData->move2));
break;
case APPRENTICE_BUFF_ITEM:
- StringCopy(stringDst, ItemId_GetName(PLAYER_APPRENTICE.questions[CURRENT_QUESTION_NUM].data));
+ StringCopy(stringDst, GetItemName(PLAYER_APPRENTICE.questions[CURRENT_QUESTION_NUM].data));
break;
case APPRENTICE_BUFF_NAME:
TVShowConvertInternationalString(text, GetApprenticeNameInLanguage(PLAYER_APPRENTICE.id, GAME_LANGUAGE), GAME_LANGUAGE);
diff --git a/src/battle_ai_main.c b/src/battle_ai_main.c
index 321d0b880d..2805a10692 100644
--- a/src/battle_ai_main.c
+++ b/src/battle_ai_main.c
@@ -34,8 +34,8 @@
static u32 ChooseMoveOrAction_Singles(u32 battler);
static u32 ChooseMoveOrAction_Doubles(u32 battler);
-static inline void BattleAI_DoAIProcessing(struct AI_ThinkingStruct *aiThink, u32 battlerAtk, u32 battlerDef);
-static inline void BattleAI_DoAIProcessing_PredictedSwitchin(struct AI_ThinkingStruct *aiThink, struct AiLogicData *aiData, u32 battlerAtk, u32 battlerDef);
+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
@@ -132,7 +132,7 @@ static s32 (*const sBattleAiFuncTable[])(u32, u32, u32, s32) =
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++)
@@ -150,8 +150,8 @@ 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++;
}
}
}
@@ -229,43 +229,43 @@ static u64 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
}
}
@@ -277,11 +277,11 @@ void BattleAI_SetupAIData(u8 defaultScoreMoves, u32 battler)
u32 moveIndex;
// Clear AI data but preserve the flags.
- memcpy(&flags[0], &AI_THINKING_STRUCT->aiFlags[0], sizeof(u64) * MAX_BATTLERS_COUNT);
- memset(AI_THINKING_STRUCT, 0, sizeof(struct AI_ThinkingStruct));
- memcpy(&AI_THINKING_STRUCT->aiFlags[0], &flags[0], sizeof(u64) * 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 = AI_DATA->moveLimitations[battler];
+ moveLimitations = gAiLogicData->moveLimitations[battler];
// Conditional score reset, unlike Ruby.
for (moveIndex = 0; moveIndex < MAX_MON_MOVES; moveIndex++)
@@ -300,10 +300,10 @@ void BattleAI_SetupAIData(u8 defaultScoreMoves, u32 battler)
gAiBattleData->chosenTarget[battler] = gBattlerTarget;
// Initialize move prediction scores
- if (AI_THINKING_STRUCT->aiFlags[battler] & AI_FLAG_PREDICT_MOVE)
+ if (gAiThinkingStruct->aiFlags[battler] & AI_FLAG_PREDICT_MOVE)
{
u32 opposingBattler = GetOppositeBattler(battler);
- moveLimitationsTarget = AI_DATA->moveLimitations[opposingBattler];
+ moveLimitationsTarget = gAiLogicData->moveLimitations[opposingBattler];
for (moveIndex = 0; moveIndex < MAX_MON_MOVES; moveIndex++)
{
@@ -321,13 +321,13 @@ void BattleAI_SetupAIData(u8 defaultScoreMoves, u32 battler)
bool32 BattlerChoseNonMoveAction(void)
{
- if (AI_THINKING_STRUCT->aiAction & AI_ACTION_FLEE)
+ if (gAiThinkingStruct->aiAction & AI_ACTION_FLEE)
{
gAiBattleData->actionFlee = TRUE;
return TRUE;
}
- if (AI_THINKING_STRUCT->aiAction & AI_ACTION_WATCH)
+ if (gAiThinkingStruct->aiAction & AI_ACTION_WATCH)
{
gAiBattleData->choiceWatch = TRUE;
return TRUE;
@@ -339,32 +339,31 @@ bool32 BattlerChoseNonMoveAction(void)
void SetupAIPredictionData(u32 battler, enum SwitchType switchType)
{
s32 opposingBattler = GetOppositeBattler(battler);
- AI_DATA->aiPredictionInProgress = TRUE;
- AI_DATA->battlerDoingPrediction = battler;
-
+ gAiLogicData->aiPredictionInProgress = TRUE;
+ gAiLogicData->battlerDoingPrediction = battler;
+
// Switch prediction
- if ((AI_THINKING_STRUCT->aiFlags[battler] & AI_FLAG_PREDICT_SWITCH))
+ if ((gAiThinkingStruct->aiFlags[battler] & AI_FLAG_PREDICT_SWITCH))
{
- AI_DATA->mostSuitableMonId[opposingBattler] = GetMostSuitableMonToSwitchInto(opposingBattler, switchType);
+ gAiLogicData->mostSuitableMonId[opposingBattler] = GetMostSuitableMonToSwitchInto(opposingBattler, switchType);
if (ShouldSwitch(opposingBattler))
- AI_DATA->shouldSwitch |= (1u << opposingBattler);
+ gAiLogicData->shouldSwitch |= (1u << opposingBattler);
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);
+ gAiLogicData->predictingSwitch = RandomPercentage(RNG_AI_PREDICT_SWITCH, PREDICT_SWITCH_CHANCE);
}
// Move prediction
- if (AI_THINKING_STRUCT->aiFlags[battler] & AI_FLAG_PREDICT_MOVE)
+ if (gAiThinkingStruct->aiFlags[battler] & AI_FLAG_PREDICT_MOVE)
{
- AI_DATA->predictedMove[opposingBattler] = gBattleMons[opposingBattler].moves[BattleAI_ChooseMoveIndex(opposingBattler)];
- DebugPrintf("Predicted move: %d", AI_DATA->predictedMove[opposingBattler]);
+ gAiLogicData->predictedMove[opposingBattler] = gBattleMons[opposingBattler].moves[BattleAI_ChooseMoveIndex(opposingBattler)];
ModifySwitchAfterMoveScoring(opposingBattler);
// Determine whether AI will use predictions this turn
- AI_DATA->predictingMove = RandomPercentage(RNG_AI_PREDICT_MOVE, PREDICT_MOVE_CHANCE);
+ gAiLogicData->predictingMove = RandomPercentage(RNG_AI_PREDICT_MOVE, PREDICT_MOVE_CHANCE);
}
- AI_DATA->aiPredictionInProgress = FALSE;
+ gAiLogicData->aiPredictionInProgress = FALSE;
}
void ComputeBattlerDecisions(u32 battler)
@@ -378,25 +377,25 @@ void ComputeBattlerDecisions(u32 battler)
return;
// Risky AI switches aggressively even mid battle
- enum SwitchType switchType = (AI_THINKING_STRUCT->aiFlags[battler] & AI_FLAG_RISKY) ? SWITCH_AFTER_KO : SWITCH_MID_BATTLE;
+ enum SwitchType switchType = (gAiThinkingStruct->aiFlags[battler] & AI_FLAG_RISKY) ? SWITCH_AFTER_KO : SWITCH_MID_BATTLE;
- AI_DATA->aiCalcInProgress = TRUE;
+ gAiLogicData->aiCalcInProgress = TRUE;
// Setup battler and prediction data
BattleAI_SetupAIData(0xF, battler);
SetupAIPredictionData(battler, switchType);
// AI's own switching data
- AI_DATA->mostSuitableMonId[battler] = GetMostSuitableMonToSwitchInto(battler, switchType);
+ gAiLogicData->mostSuitableMonId[battler] = GetMostSuitableMonToSwitchInto(battler, switchType);
if (ShouldSwitch(battler))
- AI_DATA->shouldSwitch |= (1u << 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);
- AI_DATA->aiCalcInProgress = FALSE;
+ gAiLogicData->aiCalcInProgress = FALSE;
}
}
@@ -422,7 +421,7 @@ u32 BattleAI_ChooseMoveIndex(u32 battler)
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;
@@ -437,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);
@@ -456,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 = ItemId_GetHoldEffect(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);
}
}
}
@@ -478,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.
@@ -506,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);
@@ -601,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++)
@@ -622,7 +621,7 @@ 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;
}
u32 GetPartyMonAbility(struct Pokemon *mon)
@@ -677,29 +676,30 @@ static u32 ChooseMoveOrAction_Singles(u32 battler)
u8 consideredMoveArray[MAX_MON_MOVES];
u32 numOfBestMoves;
s32 i;
- u64 flags = AI_THINKING_STRUCT->aiFlags[GetThinkingBattler(battler)];
+ 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[battler] & AI_FLAG_PREDICT_INCOMING_MON))
- BattleAI_DoAIProcessing_PredictedSwitchin(AI_THINKING_STRUCT, AI_DATA, battler, 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, battler, gBattlerTarget);
+ BattleAI_DoAIProcessing(gAiThinkingStruct, battler, opposingBattler);
}
flags >>= (u64)1;
- AI_THINKING_STRUCT->aiLogicId++;
+ gAiThinkingStruct->aiLogicId++;
}
for (i = 0; i < MAX_MON_MOVES; i++)
{
- gAiBattleData->finalScore[battler][gBattlerTarget][i] = AI_THINKING_STRUCT->score[i];
+ gAiBattleData->finalScore[battler][opposingBattler][i] = gAiThinkingStruct->score[i];
}
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++)
@@ -707,15 +707,15 @@ static u32 ChooseMoveOrAction_Singles(u32 battler)
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;
}
}
@@ -752,25 +752,25 @@ static u32 ChooseMoveOrAction_Doubles(u32 battler)
gBattlerTarget = i;
- AI_DATA->partnerMove = GetAllyChosenMove(battler);
- AI_THINKING_STRUCT->aiLogicId = 0;
- AI_THINKING_STRUCT->movesetIndex = 0;
- flags = AI_THINKING_STRUCT->aiFlags[GetThinkingBattler(battler)];
+ 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[battler] & AI_FLAG_PREDICT_INCOMING_MON))
- BattleAI_DoAIProcessing_PredictedSwitchin(AI_THINKING_STRUCT, AI_DATA, battler, 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, battler, gBattlerTarget);
+ BattleAI_DoAIProcessing(gAiThinkingStruct, battler, gBattlerTarget);
}
flags >>= (u64)1;
- AI_THINKING_STRUCT->aiLogicId++;
+ gAiThinkingStruct->aiLogicId++;
}
- mostViableMovesScores[0] = AI_THINKING_STRUCT->score[0];
+ mostViableMovesScores[0] = gAiThinkingStruct->score[0];
mostViableMovesIndices[0] = 0;
mostViableMovesNo = 1;
for (j = 1; j < MAX_MON_MOVES; j++)
@@ -780,15 +780,15 @@ static u32 ChooseMoveOrAction_Doubles(u32 battler)
if (!CanTargetBattler(battler, i, gBattleMons[battler].moves[j]))
continue;
- if (mostViableMovesScores[0] == AI_THINKING_STRUCT->score[j])
+ if (mostViableMovesScores[0] == gAiThinkingStruct->score[j])
{
- mostViableMovesScores[mostViableMovesNo] = AI_THINKING_STRUCT->score[j];
+ mostViableMovesScores[mostViableMovesNo] = gAiThinkingStruct->score[j];
mostViableMovesIndices[mostViableMovesNo] = j;
mostViableMovesNo++;
}
- if (mostViableMovesScores[0] < AI_THINKING_STRUCT->score[j])
+ if (mostViableMovesScores[0] < gAiThinkingStruct->score[j])
{
- mostViableMovesScores[0] = AI_THINKING_STRUCT->score[j];
+ mostViableMovesScores[0] = gAiThinkingStruct->score[j];
mostViableMovesIndices[0] = j;
mostViableMovesNo = 1;
}
@@ -805,7 +805,7 @@ static u32 ChooseMoveOrAction_Doubles(u32 battler)
for (j = 0; j < MAX_MON_MOVES; j++)
{
- gAiBattleData->finalScore[battler][gBattlerTarget][j] = AI_THINKING_STRUCT->score[j];
+ gAiBattleData->finalScore[battler][gBattlerTarget][j] = gAiThinkingStruct->score[j];
}
}
}
@@ -845,7 +845,7 @@ static inline bool32 ShouldConsiderMoveForBattler(u32 battlerAi, u32 battlerDef,
return TRUE;
}
-static inline void BattleAI_DoAIProcessing(struct AI_ThinkingStruct *aiThink, u32 battlerAtk, u32 battlerDef)
+static inline void BattleAI_DoAIProcessing(struct AiThinkingStruct *aiThink, u32 battlerAtk, u32 battlerDef)
{
do
{
@@ -880,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];
@@ -996,14 +996,15 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
{
// move data
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 = ((AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_PREDICT_MOVE) && aiData->predictingMove) ? AI_DATA->predictedMove[battlerDef] : 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);
@@ -1027,8 +1028,11 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
RETURN_SCORE_MINUS(20);
// Don't setup into expected Focus Punch.
- if (GetMoveCategory(move) == DAMAGE_CATEGORY_STATUS && moveEffect != 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))
+ 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);
}
@@ -1091,9 +1095,6 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
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;
@@ -1104,13 +1105,23 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
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))
+ if (moveType == TYPE_DARK && !IsBattleMoveStatus(move) && !IS_TARGETING_PARTNER(battlerAtk, battlerDef))
RETURN_SCORE_MINUS(10);
break;
case ABILITY_RATTLED:
@@ -1123,11 +1134,11 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
RETURN_SCORE_MINUS(10);
break;
case ABILITY_SWEET_VEIL:
- if (moveEffect == EFFECT_SLEEP || moveEffect == EFFECT_YAWN)
+ if (nonVolatileStatus == MOVE_EFFECT_SLEEP)
RETURN_SCORE_MINUS(10);
break;
case ABILITY_FLOWER_VEIL:
- if (IS_BATTLER_OF_TYPE(battlerDef, TYPE_GRASS) && (IsNonVolatileStatusMoveEffect(moveEffect)))
+ if (IS_BATTLER_OF_TYPE(battlerDef, TYPE_GRASS) && (IsNonVolatileStatusMove(move)))
RETURN_SCORE_MINUS(10);
break;
case ABILITY_MAGIC_BOUNCE:
@@ -1139,17 +1150,17 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
RETURN_SCORE_MINUS(20);
break;
case ABILITY_COMATOSE:
- if (IsNonVolatileStatusMoveEffect(moveEffect))
+ if (IsNonVolatileStatusMove(move))
RETURN_SCORE_MINUS(10);
break;
case ABILITY_SHIELDS_DOWN:
- if (IsShieldsDownProtected(battlerAtk, aiData->abilities[battlerAtk]) && IsNonVolatileStatusMoveEffect(moveEffect))
+ 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
- && IsNonVolatileStatusMoveEffect(moveEffect))
+ && IsNonVolatileStatusMove(move))
RETURN_SCORE_MINUS(10);
break;
} // def ability checks
@@ -1172,11 +1183,11 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
RETURN_SCORE_MINUS(20);
break;
case ABILITY_SWEET_VEIL:
- if (moveEffect == EFFECT_SLEEP || moveEffect == EFFECT_YAWN)
+ if (nonVolatileStatus == MOVE_EFFECT_SLEEP)
RETURN_SCORE_MINUS(20);
break;
case ABILITY_FLOWER_VEIL:
- if ((IS_BATTLER_OF_TYPE(battlerDef, TYPE_GRASS)) && (IsNonVolatileStatusMoveEffect(moveEffect) || IsStatLoweringEffect(moveEffect)))
+ if ((IS_BATTLER_OF_TYPE(battlerDef, TYPE_GRASS)) && (IsNonVolatileStatusMove(move) || IsStatLoweringEffect(moveEffect)))
RETURN_SCORE_MINUS(10);
break;
case ABILITY_AROMA_VEIL:
@@ -1195,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);
}
@@ -1261,14 +1272,8 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
break;
default:
break; // check move damage
- case EFFECT_SLEEP:
- if (!AI_CanPutToSleep(battlerAtk, battlerDef, abilityDef, 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))
@@ -1295,7 +1300,7 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
ADJUST_SCORE(-10);
break;
case EFFECT_STUFF_CHEEKS:
- if (ItemId_GetPocket(gBattleMons[battlerAtk].item) != POCKET_BERRIES)
+ if (GetItemPocket(gBattleMons[battlerAtk].item) != POCKET_BERRIES)
return 0; // cannot even select
//fallthrough
case EFFECT_DEFENSE_UP:
@@ -1607,9 +1612,9 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
|| 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:
@@ -1618,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;
@@ -1634,13 +1639,6 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
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, abilityDef, move, aiData->partnerMove))
- ADJUST_SCORE(-10);
- if (!ShouldPoison(battlerAtk, battlerDef))
- ADJUST_SCORE(-5);
- break;
case EFFECT_LIGHT_SCREEN:
if (gSideStatuses[GetBattlerSide(battlerAtk)] & SIDE_STATUS_LIGHTSCREEN
|| PartnerHasSameMoveEffectWithoutTarget(BATTLE_PARTNER(battlerAtk), move, aiData->partnerMove))
@@ -1680,18 +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);
- if (!ShouldParalyze(battlerAtk, battlerDef, aiData->abilities[battlerDef]))
- ADJUST_SCORE(-5);
- 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:
@@ -1701,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:
@@ -1974,12 +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);
- if (!ShouldBurn(battlerAtk, battlerDef, aiData->abilities[battlerDef]))
- ADJUST_SCORE(-5);
- break;
case EFFECT_MEMENTO:
if (CountUsablePartyMons(battlerAtk) == 0 || DoesPartnerHaveSameMoveEffect(BATTLE_PARTNER(battlerAtk), battlerDef, move, aiData->partnerMove))
ADJUST_SCORE(-10);
@@ -2123,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:
@@ -2221,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
}
@@ -2239,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);
@@ -2367,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:
@@ -2414,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:
@@ -2553,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
{
@@ -2865,6 +2850,36 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
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))
{
@@ -2876,7 +2891,7 @@ 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
+ || gAiLogicData->mostSuitableMonId[battlerAtk] == PARTY_SIZE
|| (!AI_CanBattlerEscape(battlerAtk) && IsBattlerTrapped(battlerDef, battlerAtk))))
ADJUST_SCORE(-30);
}
@@ -2889,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;
@@ -2908,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, AI_DATA->abilities[battlerAtk], move) > 0)
+ && GetBattleMovePriority(battlerAtk, gAiLogicData->abilities[battlerAtk], move) > 0)
{
ADJUST_SCORE(LAST_CHANCE);
}
@@ -2925,18 +2940,24 @@ static s32 AI_DoubleBattle(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
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)];
enum BattleMoveEffects partnerEffect = GetMoveEffect(aiData->partnerMove);
- bool32 partnerProtecting = (partnerEffect == EFFECT_PROTECT);
+ 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 = ((AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_PREDICT_MOVE) && aiData->predictingMove) ? AI_DATA->predictedMove[battlerDef] : 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)
{
@@ -2987,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))
@@ -3054,9 +3075,103 @@ static s32 AI_DoubleBattle(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
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))
{
@@ -3066,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, AI_ATTACKING))
+ && 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);
+ isMoveAffectedByPartnerAbility = FALSE;
}
- break; // handled in AI_HPAware
+ break;
+ case ABILITY_LIGHTNING_ROD:
case ABILITY_MOTOR_DRIVE:
- if (moveType == TYPE_ELECTRIC && BattlerStatCanRise(battlerAtkPartner, atkPartnerAbility, STAT_SPEED))
+ 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);
+ }
}
- 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))
+ else
{
- RETURN_SCORE_PLUS(WEAK_EFFECT);
+ 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, AI_ATTACKING) >= 4)
+ if (moveType == TYPE_WATER && isFriendlyFireOK
+ && ShouldTriggerAbility(battlerAtkPartner, atkPartnerAbility))
+ {
+ if (moveTarget == MOVE_TARGET_FOES_AND_ALLY)
+ {
+ ADJUST_SCORE(DECENT_EFFECT);
+ }
+
+ if (GetMoveStrikeCount(move) > 1 && effect != EFFECT_DRAGON_DARTS)
+ {
+ ADJUST_SCORE(DECENT_EFFECT);
+ }
+ }
+ else
{
- 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
+ isMoveAffectedByPartnerAbility = FALSE;
}
- RETURN_SCORE_MINUS(10);
break;
- case ABILITY_FLASH_FIRE:
- if (moveType == TYPE_FIRE
- && HasMoveWithType(battlerAtkPartner, TYPE_FIRE)
- && !gDisableStructs[battlerAtkPartner].flashFireBoosted)
+ 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_SAP_SIPPER:
- if (moveType == TYPE_GRASS
- && HasMoveWithCategory(battlerAtkPartner, DAMAGE_CATEGORY_PHYSICAL)
- && BattlerStatCanRise(battlerAtkPartner, atkPartnerAbility, STAT_ATK))
+ 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;
+ }
+ break;
+ case ABILITY_FLASH_FIRE:
+ case ABILITY_WELL_BAKED_BODY:
+ if (moveType == TYPE_FIRE)
+ {
+ 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)
+ {
+ 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, AI_ATTACKING))
+ && 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, AI_ATTACKING))
+ && 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;
}
@@ -3163,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:
@@ -3200,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, AI_ATTACKING))
+ && !wouldPartnerFaint)
{
+ if (isFriendlyFireOK)
+ {
+ ADJUST_SCORE(DECENT_EFFECT);
+ }
RETURN_SCORE_PLUS(WEAK_EFFECT);
}
break;
@@ -3298,7 +3569,12 @@ static s32 AI_DoubleBattle(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
} // 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
{
@@ -3342,8 +3618,8 @@ static bool32 IsPinchBerryItemEffect(enum ItemHoldEffect holdEffect)
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;
@@ -3356,12 +3632,13 @@ static inline bool32 ShouldUseSpreadDamageMove(u32 battlerAtk, u32 move, u32 mov
{
u32 partnerBattler = BATTLE_PARTNER(battlerAtk);
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)
@@ -3466,7 +3743,7 @@ 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;
+ struct AiLogicData *aiData = gAiLogicData;
enum ItemHoldEffect holdEffect = aiData->holdEffects[battlerAtk];
s32 score = 0;
@@ -3475,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)
{
@@ -3498,12 +3775,12 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move)
{
// move data
enum BattleMoveEffects moveEffect = GetMoveEffect(move);
- struct AiLogicData *aiData = AI_DATA;
- u32 movesetIndex = AI_THINKING_STRUCT->movesetIndex;
+ struct AiLogicData *aiData = gAiLogicData;
+ u32 movesetIndex = gAiThinkingStruct->movesetIndex;
uq4_12_t effectiveness = aiData->effectiveness[battlerAtk][battlerDef][movesetIndex];
s32 score = 0;
- u32 predictedMove = ((AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_PREDICT_MOVE) && aiData->predictingMove) ? AI_DATA->predictedMove[battlerDef] : aiData->lastUsedMove[battlerDef];
+ u32 predictedMove = GetIncomingMove(battlerAtk, battlerDef, gAiLogicData);
u32 predictedType = GetMoveType(predictedMove);
u32 predictedMoveSlot = GetMoveSlot(GetMovesArray(battlerDef), predictedMove);
bool32 isDoubleBattle = IsValidDoubleBattle(battlerAtk);
@@ -3514,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
@@ -3522,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;
@@ -3548,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:
@@ -3768,10 +4061,6 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move)
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:
@@ -3791,8 +4080,8 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move)
{
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))
@@ -3812,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));
@@ -3837,7 +4123,7 @@ 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;
@@ -3884,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);
@@ -3903,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);
@@ -4000,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;
@@ -4040,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;
@@ -4084,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);
@@ -4101,7 +4399,7 @@ 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;
@@ -4133,7 +4431,7 @@ 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;
@@ -4146,16 +4444,16 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move)
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);
@@ -4203,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
@@ -4258,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:
@@ -4308,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:
@@ -4327,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:
@@ -4361,7 +4656,7 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move)
if (aiData->abilities[battlerAtk] == ABILITY_RIPEN)
{
u32 item = GetUsedHeldItem(battlerAtk);
- u32 toHeal = (ItemId_GetHoldEffectParam(item) == 10) ? 10 : gBattleMons[battlerAtk].maxHP / ItemId_GetHoldEffectParam(item);
+ u32 toHeal = (GetItemHoldEffectParam(item) == 10) ? 10 : gBattleMons[battlerAtk].maxHP / GetItemHoldEffectParam(item);
if (IsStatBoostingBerry(item) && aiData->hpPercents[battlerAtk] > 60)
ADJUST_SCORE(WEAK_EFFECT);
@@ -4564,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);
@@ -4648,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:
@@ -4737,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;
@@ -4765,6 +5060,28 @@ 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
@@ -4895,37 +5212,15 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move)
case MOVE_EFFECT_BUG_BITE: // And pluck
if (gBattleMons[battlerDef].status2 & STATUS2_SUBSTITUTE || aiData->abilities[battlerDef] == ABILITY_STICKY_HOLD)
break;
- else if (ItemId_GetPocket(aiData->items[battlerDef]) == POCKET_BERRIES)
+ else if (GetItemPocket(aiData->items[battlerDef]) == POCKET_BERRIES)
ADJUST_SCORE(DECENT_EFFECT);
break;
case MOVE_EFFECT_INCINERATE:
if (gBattleMons[battlerDef].status2 & STATUS2_SUBSTITUTE || aiData->abilities[battlerDef] == ABILITY_STICKY_HOLD)
break;
- else if (ItemId_GetPocket(aiData->items[battlerDef]) == POCKET_BERRIES || aiData->holdEffects[battlerDef] == HOLD_EFFECT_GEMS)
+ 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;
@@ -4939,7 +5234,7 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move)
&& 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])
@@ -4964,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:
@@ -5002,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:
@@ -5026,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, AI_ATTACKING) == 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)
+ 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));
}
}
@@ -5052,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, AI_DATA->abilities[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..
}
@@ -5099,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:
@@ -5111,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:
@@ -5179,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;
@@ -5255,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, AI_ATTACKING) == 1)
+ if (GetNoOfHitsToKOBattler(battlerAtk, battlerDef, gAiThinkingStruct->movesetIndex, AI_ATTACKING) == 1)
ADJUST_SCORE(BEST_EFFECT);
- else if (GetNoOfHitsToKOBattler(battlerAtk, battlerDef, AI_THINKING_STRUCT->movesetIndex, AI_ATTACKING) == 2)
+ else if (GetNoOfHitsToKOBattler(battlerAtk, battlerDef, gAiThinkingStruct->movesetIndex, AI_ATTACKING) == 2)
ADJUST_SCORE(DECENT_EFFECT);
return score;
@@ -5269,7 +5562,7 @@ 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)
+ || !HasMoveWithEffect(battlerAtk, EFFECT_BATON_PASS)
|| (!AI_CanBattlerEscape(battlerAtk) && IsBattlerTrapped(battlerDef, battlerAtk)))
return score;
@@ -5279,7 +5572,7 @@ static s32 AI_PreferBatonPass(u32 battlerAtk, u32 battlerDef, u32 move, s32 scor
{
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);
@@ -5327,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;
@@ -5338,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)
@@ -5370,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))
@@ -5433,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, AI_ATTACKING))
+ 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)
@@ -5480,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:
@@ -5496,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
{
@@ -5512,7 +5811,7 @@ static s32 AI_PowerfulStatus(u32 battlerAtk, u32 battlerDef, u32 move, s32 score
{
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)
@@ -5522,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:
@@ -5555,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:
@@ -5579,19 +5878,19 @@ static s32 AI_PowerfulStatus(u32 battlerAtk, u32 battlerDef, u32 move, s32 score
ADJUST_SCORE(POWERFUL_STATUS_MOVE);
break;
case EFFECT_SUNNY_DAY:
- if (!(AI_GetWeather() & (B_WEATHER_SUN | B_WEATHER_PRIMAL_ANY)))
+ if (IsWeatherActive(B_WEATHER_SUN | B_WEATHER_PRIMAL_ANY) == WEATHER_INACTIVE)
ADJUST_SCORE(POWERFUL_STATUS_MOVE);
break;
case EFFECT_RAIN_DANCE:
- if (!(AI_GetWeather() & (B_WEATHER_RAIN | B_WEATHER_PRIMAL_ANY)))
+ if (IsWeatherActive(B_WEATHER_RAIN | B_WEATHER_PRIMAL_ANY) == WEATHER_INACTIVE)
ADJUST_SCORE(POWERFUL_STATUS_MOVE);
break;
case EFFECT_HAIL:
- if (!(AI_GetWeather() & (B_WEATHER_HAIL | B_WEATHER_PRIMAL_ANY)))
+ if (IsWeatherActive(B_WEATHER_HAIL | B_WEATHER_PRIMAL_ANY) == WEATHER_INACTIVE)
ADJUST_SCORE(POWERFUL_STATUS_MOVE);
break;
case EFFECT_SNOWSCAPE:
- if (!(AI_GetWeather() & (B_WEATHER_SNOW | B_WEATHER_PRIMAL_ANY)))
+ if (IsWeatherActive(B_WEATHER_SNOW | B_WEATHER_PRIMAL_ANY) == WEATHER_INACTIVE)
ADJUST_SCORE(POWERFUL_STATUS_MOVE);
break;
default:
@@ -5609,16 +5908,16 @@ static s32 AI_PredictSwitch(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
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);
enum BattleMoveEffects moveEffect = GetMoveEffect(move);
- struct AiLogicData *aiData = AI_DATA;
- uq4_12_t effectiveness = aiData->effectiveness[battlerAtk][battlerDef][AI_THINKING_STRUCT->movesetIndex];
- u32 predictedMove = ((AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_PREDICT_MOVE) && aiData->predictingMove) ? AI_DATA->predictedMove[battlerDef] : aiData->lastUsedMove[battlerDef];
+ 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, AI_ATTACKING);
+ u32 hitsToKO = GetNoOfHitsToKOBattler(battlerAtk, battlerDef, gAiThinkingStruct->movesetIndex, AI_ATTACKING);
if (hitsToKO == 2)
ADJUST_SCORE(GOOD_EFFECT);
else if (hitsToKO == 1)
@@ -5630,7 +5929,7 @@ static s32 AI_PredictSwitch(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
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);
@@ -5691,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;
@@ -5764,12 +6063,12 @@ static s32 AI_CheckPpStall(u32 battlerAtk, u32 battlerDef, u32 move, s32 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
@@ -5779,9 +6078,9 @@ static s32 AI_Roaming(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
if (AI_CanBattlerEscape(battlerAtk))
roamerCanFlee = TRUE;
- else if (AI_DATA->abilities[battlerAtk] == ABILITY_RUN_AWAY)
+ else if (gAiLogicData->abilities[battlerAtk] == ABILITY_RUN_AWAY)
roamerCanFlee = TRUE;
- else if (AI_DATA->holdEffects[battlerAtk] == HOLD_EFFECT_CAN_ALWAYS_RUN)
+ else if (gAiLogicData->holdEffects[battlerAtk] == HOLD_EFFECT_CAN_ALWAYS_RUN)
roamerCanFlee = TRUE;
if (!roamerCanFlee && IsBattlerTrapped(battlerDef, battlerAtk))
@@ -5807,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_script_commands.c b/src/battle_ai_script_commands.c
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/src/battle_ai_switch_items.c b/src/battle_ai_switch_items.c
index c1ecf13913..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);
@@ -34,8 +34,8 @@ 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)
@@ -110,11 +110,11 @@ u32 GetSwitchChance(enum ShouldSwitchScenario shouldSwitchScenario)
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;
@@ -163,7 +163,7 @@ static inline bool32 SetSwitchinAndSwitch(u32 battler, u32 switchinId)
static bool32 AI_DoesChoiceItemBlockMove(u32 battler, u32 move)
{
// Choice locked into something else
- if (AI_DATA->lastUsedMove[battler] != MOVE_NONE && AI_DATA->lastUsedMove[battler] != move && HOLD_EFFECT_CHOICE(GetBattlerHoldEffect(battler, FALSE)) && IsBattlerItemEnabled(battler))
+ if (gAiLogicData->lastUsedMove[battler] != MOVE_NONE && gAiLogicData->lastUsedMove[battler] != move && HOLD_EFFECT_CHOICE(GetBattlerHoldEffect(battler, FALSE)) && IsBattlerItemEnabled(battler))
return TRUE;
return FALSE;
}
@@ -176,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;
+ 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); //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
@@ -204,11 +205,16 @@ static bool32 ShouldSwitchIfHasBadOdds(u32 battler)
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
)
{
@@ -223,7 +229,7 @@ static bool32 ShouldSwitchIfHasBadOdds(u32 battler)
hasSuperEffectiveMove = TRUE;
// Get maximum damage mon can deal
- damageDealt = AI_GetDamage(battler, opposingBattler, i, AI_ATTACKING, AI_DATA);
+ damageDealt = AI_GetDamage(battler, opposingBattler, i, AI_ATTACKING, gAiLogicData);
if(damageDealt > maxDamageDealt && !AI_DoesChoiceItemBlockMove(battler, aiMove))
{
maxDamageDealt = damageDealt;
@@ -233,6 +239,8 @@ static bool32 ShouldSwitchIfHasBadOdds(u32 battler)
}
}
+ hitsToKoPlayer = GetNoOfHitsToKOBattlerDmg(maxDamageDealt, opposingBattler);
+
// Calculate type advantage
typeEffectiveness = uq4_12_multiply(typeEffectiveness, (GetTypeModifier(atkType1, defType1)));
if (atkType2 != atkType1)
@@ -250,7 +258,7 @@ static bool32 ShouldSwitchIfHasBadOdds(u32 battler)
playerMove = gBattleMons[opposingBattler].moves[i];
if (playerMove != MOVE_NONE && !IsBattleMoveStatus(playerMove) && GetMoveEffect(playerMove) != EFFECT_FOCUS_PUNCH)
{
- damageTaken = AI_GetDamage(opposingBattler, battler, i, AI_DEFENDING, AI_DATA);
+ 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;
@@ -261,6 +269,8 @@ static bool32 ShouldSwitchIfHasBadOdds(u32 battler)
}
}
+ 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)))
@@ -268,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
@@ -288,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->aiPredictionInProgress)
+ if (RandomPercentage(RNG_AI_SWITCH_HASBADODDS, (100 - GetSwitchChance(SHOULD_SWITCH_HASBADODDS))) && !gAiLogicData->aiPredictionInProgress)
return FALSE;
// Switch mon out
@@ -308,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->aiPredictionInProgress)
+ if (RandomPercentage(RNG_AI_SWITCH_HASBADODDS, (100 - GetSwitchChance(SHOULD_SWITCH_HASBADODDS))) && !gAiLogicData->aiPredictionInProgress)
return FALSE;
// Switch mon out
@@ -321,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);
@@ -397,7 +404,7 @@ static bool32 ShouldSwitchIfAllMovesBad(u32 battler)
if (RandomPercentage(RNG_AI_SWITCH_ALL_MOVES_BAD, GetSwitchChance(SHOULD_SWITCH_ALL_MOVES_BAD)))
{
- if (AI_DATA->mostSuitableMonId[battler] == PARTY_SIZE) // No good candidate mons, find any one that can deal damage
+ 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);
@@ -414,7 +421,7 @@ static bool32 ShouldSwitchIfWonderGuard(u32 battler)
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.
@@ -430,7 +437,7 @@ static bool32 ShouldSwitchIfWonderGuard(u32 battler)
if (RandomPercentage(RNG_AI_SWITCH_WONDER_GUARD, GetSwitchChance(SHOULD_SWITCH_WONDER_GUARD)))
{
- if (AI_DATA->mostSuitableMonId[battler] == PARTY_SIZE) // No good candidate mons, find any one that can deal damage
+ 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);
@@ -449,19 +456,21 @@ static bool32 FindMonThatAbsorbsOpponentsMove(u32 battler)
struct Pokemon *party;
u16 monAbility, aiMove;
u32 opposingBattler = GetOppositeBattler(battler);
- u32 incomingMove = ((AI_THINKING_STRUCT->aiFlags[battler] & AI_FLAG_PREDICT_MOVE) && AI_DATA->predictingMove) ? AI_DATA->predictedMove[opposingBattler] : AI_DATA->lastUsedMove[opposingBattler];
+ u32 incomingMove = GetIncomingMove(battler, opposingBattler, gAiLogicData);
u32 incomingType = GetMoveType(incomingMove);
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_THINKING_STRUCT->aiFlags[battler] & AI_FLAG_PREDICT_MOVE)) // AI mon has changed, player's behaviour no longer reliable; override this if using AI_FLAG_PREDICT_MOVE
+ 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 (HasSuperEffectiveMoveAgainstOpponents(battler, TRUE) && (RandomPercentage(RNG_AI_SWITCH_ABSORBING_STAY_IN, STAY_IN_ABSORBING_PERCENTAGE) || AI_DATA->aiPredictionInProgress))
+ 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++)
@@ -472,7 +481,7 @@ static bool32 FindMonThatAbsorbsOpponentsMove(u32 battler)
// Only check damage if it's a damaging move
if (!IsBattleMoveStatus(aiMove))
{
- if (AI_GetDamage(battler, opposingBattler, i, AI_ATTACKING, AI_DATA) > gBattleMons[opposingBattler].hp)
+ if (!AI_DoesChoiceItemBlockMove(battler, aiMove) && AI_GetDamage(battler, opposingBattler, i, AI_ATTACKING, gAiLogicData) > gBattleMons[opposingBattler].hp)
return FALSE;
}
}
@@ -524,6 +533,10 @@ static bool32 FindMonThatAbsorbsOpponentsMove(u32 battler)
{
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;
@@ -574,13 +587,14 @@ static bool32 FindMonThatAbsorbsOpponentsMove(u32 battler)
static bool32 ShouldSwitchIfOpponentChargingOrInvulnerable(u32 battler)
{
u32 opposingBattler = GetOppositeBattler(battler);
- u32 incomingMove = ((AI_THINKING_STRUCT->aiFlags[battler] & AI_FLAG_PREDICT_MOVE) && AI_DATA->predictingMove) ? AI_DATA->predictedMove[opposingBattler] : 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;
@@ -596,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
@@ -617,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);
}
}
@@ -627,8 +641,8 @@ static bool32 ShouldSwitchIfTrapperInParty(u32 battler)
static bool32 ShouldSwitchIfBadlyStatused(u32 battler)
{
bool32 switchMon = FALSE;
- u16 monAbility = AI_DATA->abilities[battler];
- enum ItemHoldEffect 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);
@@ -640,7 +654,7 @@ 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
@@ -651,7 +665,7 @@ static bool32 ShouldSwitchIfBadlyStatused(u32 battler)
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
@@ -665,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)))
)
@@ -673,10 +687,10 @@ 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;
@@ -688,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);
@@ -716,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);
}
@@ -733,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;
@@ -755,12 +769,12 @@ 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)
@@ -773,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;
@@ -786,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;
}
}
}
@@ -808,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;
}
}
}
@@ -834,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)
@@ -896,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->aiPredictionInProgress))
+ if (AI_GetMoveEffectiveness(move, battler, battlerIn1) >= UQ_4_12(2.0) && (RandomPercentage(RNG_AI_SWITCH_SE_DEFENSIVE, percentChance) || gAiLogicData->aiPredictionInProgress))
return SetSwitchinAndSwitch(battler, i);
}
}
@@ -909,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;
@@ -972,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
@@ -988,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->aiPredictionInProgress) && 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;
@@ -997,13 +1005,13 @@ static bool32 ShouldSwitchIfEncored(u32 battler)
static bool32 ShouldSwitchIfBadChoiceLock(u32 battler)
{
enum ItemHoldEffect holdEffect = GetBattlerHoldEffect(battler, FALSE);
- u32 lastUsedMove = AI_DATA->lastUsedMove[battler];
+ 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, AI_DATA->abilities[opposingBattler], lastUsedMove, GetMoveType(lastUsedMove), ABILITY_CHECK_TRIGGER)
- || CanAbilityBlockMove(battler, opposingBattler, AI_DATA->abilities[battler], AI_DATA->abilities[opposingBattler], lastUsedMove, ABILITY_CHECK_TRIGGER)))
+ || 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))
@@ -1022,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
@@ -1034,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->aiPredictionInProgress))
+ 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
@@ -1051,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->aiPredictionInProgress))
+ 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
@@ -1080,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;
@@ -1132,7 +1140,7 @@ bool32 ShouldSwitch(u32 battler)
if (ShouldSwitchIfWonderGuard(battler))
return TRUE;
- if ((AI_THINKING_STRUCT->aiFlags[GetThinkingBattler(battler)] & AI_FLAG_SMART_SWITCHING) && (CanMonSurviveHazardSwitchin(battler) == FALSE))
+ if ((gAiThinkingStruct->aiFlags[GetThinkingBattler(battler)] & AI_FLAG_SMART_SWITCHING) && (CanMonSurviveHazardSwitchin(battler) == FALSE))
return FALSE;
if (ShouldSwitchIfTrapperInParty(battler))
return TRUE;
@@ -1160,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;
@@ -1179,7 +1187,7 @@ bool32 ShouldSwitch(u32 battler)
bool32 ShouldSwitchIfAllScoresBad(u32 battler)
{
u32 i, score, opposingBattler = GetOppositeBattler(battler);
- if (!(AI_THINKING_STRUCT->aiFlags[GetThinkingBattler(battler)] & AI_FLAG_SMART_SWITCHING))
+ if (!(gAiThinkingStruct->aiFlags[GetThinkingBattler(battler)] & AI_FLAG_SMART_SWITCHING))
return FALSE;
for (i = 0; i < MAX_MON_MOVES; i++)
@@ -1229,7 +1237,7 @@ void ModifySwitchAfterMoveScoring(u32 battler)
return;
// 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;
availableToSwitch = 0;
@@ -1274,9 +1282,9 @@ void ModifySwitchAfterMoveScoring(u32 battler)
return;
if (ShouldSwitchIfAllScoresBad(battler))
- AI_DATA->shouldSwitch |= (1u << battler);
+ gAiLogicData->shouldSwitch |= (1u << battler);
else if (ShouldStayInToUseMove(battler))
- AI_DATA->shouldSwitch &= ~(1u << battler);
+ gAiLogicData->shouldSwitch &= ~(1u << battler);
}
bool32 IsSwitchinValid(u32 battler)
@@ -1287,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;
}
@@ -1314,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())
@@ -1358,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))
@@ -1367,7 +1375,7 @@ void AI_TrySwitchOrUseItem(u32 battler)
}
}
- BtlController_EmitTwoReturnValues(battler, BUFFER_B, B_ACTION_USE_MOVE, BATTLE_OPPOSITE(battler) << 8);
+ BtlController_EmitTwoReturnValues(battler, B_COMM_TO_ENGINE, B_ACTION_USE_MOVE, BATTLE_OPPOSITE(battler) << 8);
}
// If there are two(or more) mons to choose from, always choose one that has baton pass
@@ -1481,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, AI_ATTACKING);
+ dmg = AI_CalcPartyMonDamage(aiMove, battler, opposingBattler, gAiLogicData->switchinCandidate.battleMon, AI_ATTACKING);
if (bestDmg < dmg)
{
bestDmg = dmg;
@@ -1518,7 +1526,7 @@ bool32 IsMonGrounded(u16 heldItemEffect, u32 ability, u8 type1, u8 type2)
static u32 GetSwitchinHazardsDamage(u32 battler, struct BattlePokemon *battleMon)
{
u8 defType1 = battleMon->types[0], defType2 = battleMon->types[1], tSpikesLayers;
- u16 heldItemEffect = ItemId_GetHoldEffect(battleMon->item);
+ u16 heldItemEffect = GetItemHoldEffect(battleMon->item);
u32 maxHP = battleMon->maxHP, ability = battleMon->ability, status = battleMon->status1;
u32 spikesDamage = 0, tSpikesDamage = 0, hazardDamage = 0;
u32 hazardFlags = gSideStatuses[GetBattlerSide(battler)] & (SIDE_STATUS_SPIKES | SIDE_STATUS_STEALTH_ROCK | SIDE_STATUS_STICKY_WEB | SIDE_STATUS_TOXIC_SPIKES | SIDE_STATUS_SAFEGUARD);
@@ -1575,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;
- enum ItemHoldEffect holdEffect = ItemId_GetHoldEffect(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())
{
@@ -1584,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;
@@ -1592,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;
@@ -1639,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;
- enum ItemHoldEffect holdEffect = ItemId_GetHoldEffect(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)
@@ -1660,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)
@@ -1673,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;
- enum ItemHoldEffect holdEffect = ItemId_GetHoldEffect(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)
@@ -1704,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 = ItemId_GetHoldEffect(AI_DATA->switchinCandidate.battleMon.item);
- u32 status = AI_DATA->switchinCandidate.battleMon.status1, ability = AI_DATA->switchinCandidate.battleMon.ability, maxHP = AI_DATA->switchinCandidate.battleMon.maxHP;
+ 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)
{
@@ -1742,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;
}
}
@@ -1762,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;
@@ -1778,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 = ItemId_GetHoldEffect(item);
- u8 weatherDuration = gWishFutureKnock.weatherDuration, holdEffectParam = ItemId_GetHoldEffectParam(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;
@@ -1818,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)
@@ -1865,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
@@ -1876,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;
}
@@ -1956,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;
@@ -1978,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
@@ -2050,35 +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))
- damageDealt = AI_CalcPartyMonDamage(aiMove, battler, opposingBattler, AI_DATA->switchinCandidate.battleMon, AI_ATTACKING);
+ 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;
@@ -2094,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))
{
@@ -2149,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;
@@ -2185,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;
@@ -2247,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;
@@ -2302,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;
@@ -2365,14 +2373,14 @@ 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 = ItemId_GetEffect(item);
+ itemEffects = GetItemEffect(item);
if (itemEffects == NULL)
continue;
- switch (ItemId_GetBattleUsage(item))
+ switch (GetItemBattleUsage(item))
{
case EFFECT_ITEM_HEAL_AND_CURE_STATUS:
healAmount = GetHPHealAmount(itemEffects[GetItemEffectParamOffset(battler, item, 4, ITEM4_HEAL_HP)], GetBattlerMon(battler));
@@ -2433,9 +2441,9 @@ static bool32 ShouldUseItem(u32 battler)
// Set selected party ID to current battler if none chosen.
if (gBattleStruct->itemPartyIndex[battler] == PARTY_SIZE)
gBattleStruct->itemPartyIndex[battler] = gBattlerPartyIndexes[battler];
- BtlController_EmitTwoReturnValues(battler, BUFFER_B, B_ACTION_USE_ITEM, 0);
+ 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;
}
}
diff --git a/src/battle_ai_util.c b/src/battle_ai_util.c
index cdb5629e36..e71f11c70f 100644
--- a/src/battle_ai_util.c
+++ b/src/battle_ai_util.c
@@ -55,17 +55,17 @@ u32 AI_GetDamage(u32 battlerAtk, u32 battlerDef, u32 moveIndex, enum DamageCalcC
if (calcContext == AI_ATTACKING && BattlerHasAi(battlerAtk))
{
- if ((AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_RISKY) && !(AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_CONSERVATIVE)) // Risky assumes it deals max damage
+ 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 ((AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_CONSERVATIVE) && !(AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_RISKY)) // Conservative assumes it deals min damage
+ 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 ((AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_RISKY) && !(AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_CONSERVATIVE)) // Risky assumes it takes min damage
+ 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 ((AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_CONSERVATIVE) && !(AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_RISKY)) // Conservative assumes it takes max damage
+ 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
}
@@ -125,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);
@@ -134,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);
@@ -144,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)
@@ -179,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)
@@ -236,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;
@@ -269,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);
@@ -290,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])
@@ -300,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;
}
}
@@ -313,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)
@@ -335,7 +344,7 @@ u32 GetHealthPercentage(u32 battlerId)
bool32 AI_BattlerAtMaxHp(u32 battlerId)
{
- if (AI_DATA->hpPercents[battlerId] == 100)
+ if (gAiLogicData->hpPercents[battlerId] == 100)
return TRUE;
return FALSE;
}
@@ -343,7 +352,7 @@ bool32 AI_BattlerAtMaxHp(u32 battlerId)
bool32 AI_CanBattlerEscape(u32 battler)
{
- enum ItemHoldEffect 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 TRUE;
@@ -362,7 +371,7 @@ bool32 IsBattlerTrapped(u32 battlerAtk, u32 battlerDef)
if (gFieldStatuses & STATUS_FIELD_FAIRY_LOCK)
return TRUE;
if (AI_IsAbilityOnSide(battlerAtk, ABILITY_SHADOW_TAG)
- && (B_SHADOW_TAG_ESCAPE >= GEN_4 && AI_DATA->abilities[battlerDef] != 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))
@@ -390,7 +399,7 @@ bool32 IsTruantMonVulnerable(u32 battlerAI, u32 opposingBattler)
for (i = 0; i < MAX_MON_MOVES; i++)
{
- u32 move = gBattleResources->battleHistory->usedMoves[opposingBattler][i];
+ u32 move = gBattleHistory->usedMoves[opposingBattler][i];
enum BattleMoveEffects effect = GetMoveEffect(move);
if (effect == EFFECT_PROTECT && move != MOVE_ENDURE)
return TRUE;
@@ -417,7 +426,7 @@ bool32 MovesWithCategoryUnusable(u32 attacker, u32 target, u32 category)
s32 i, moveType;
u32 usable = 0;
u16 *moves = GetMovesArray(attacker);
- u32 moveLimitations = AI_DATA->moveLimitations[attacker];
+ u32 moveLimitations = gAiLogicData->moveLimitations[attacker];
for (i = 0; i < MAX_MON_MOVES; i++)
{
@@ -428,7 +437,7 @@ bool32 MovesWithCategoryUnusable(u32 attacker, u32 target, u32 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;
}
}
@@ -472,19 +481,50 @@ static inline s32 DmgRoll(s32 dmg)
return dmg;
}
-bool32 IsDamageMoveUnusable(u32 battlerAtk, u32 battlerDef, u32 move, u32 moveType)
+bool32 IsDamageMoveUnusable(u32 battlerAtk, u32 battlerDef, u32 move, u32 moveType, uq4_12_t effectiveness, u32 weather)
{
- struct AiLogicData *aiData = AI_DATA;
+ u32 battlerDefAbility;
+ u32 partnerDefAbility;
+ struct AiLogicData *aiData = gAiLogicData;
+ if (effectiveness == UQ_4_12(0.0))
+ return TRUE;
if (gBattleStruct->battlerState[battlerDef].commandingDondozo)
return TRUE;
- if (CanAbilityBlockMove(battlerAtk, battlerDef, aiData->abilities[battlerAtk], aiData->abilities[battlerDef], move, ABILITY_CHECK_TRIGGER_AI))
+ // aiData->abilities does not check for Mold Breaker since it happens during combat so it needs to be done manually
+ if (IsMoldBreakerTypeAbility(battlerAtk, aiData->abilities[battlerAtk]) || MoveIgnoresTargetAbility(move))
+ {
+ battlerDefAbility = ABILITY_NONE;
+ partnerDefAbility = ABILITY_NONE;
+ }
+ else
+ {
+ battlerDefAbility = aiData->abilities[battlerDef];
+ partnerDefAbility = aiData->abilities[BATTLE_PARTNER(battlerDef)];
+ }
+
+ if (CanAbilityBlockMove(battlerAtk, battlerDef, aiData->abilities[battlerAtk], battlerDefAbility, move, ABILITY_CHECK_TRIGGER))
return TRUE;
- if (CanAbilityAbsorbMove(battlerAtk, battlerDef, aiData->abilities[battlerDef], move, moveType, ABILITY_CHECK_TRIGGER_AI))
+ if (CanAbilityAbsorbMove(battlerAtk, battlerDef, battlerDefAbility, move, moveType, ABILITY_CHECK_TRIGGER))
return TRUE;
+ // Limited to Lighning Rod and Storm Drain because otherwise the AI would consider Water Absorb, etc...
+ if (partnerDefAbility == ABILITY_LIGHTNING_ROD || partnerDefAbility == ABILITY_STORM_DRAIN)
+ {
+ if (CanAbilityAbsorbMove(battlerAtk, BATTLE_PARTNER(battlerDef), partnerDefAbility, move, moveType, ABILITY_CHECK_TRIGGER))
+ return TRUE;
+ }
+
+ if (HasWeatherEffect())
+ {
+ if (weather & B_WEATHER_SUN_PRIMAL && moveType == TYPE_WATER)
+ return TRUE;
+ if (weather & B_WEATHER_RAIN_PRIMAL && moveType == TYPE_FIRE)
+ return TRUE;
+ }
+
switch (GetMoveEffect(move))
{
case EFFECT_DREAM_EATER:
@@ -513,13 +553,18 @@ 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:
if (!gDisableStructs[battlerAtk].isFirstTurn)
return TRUE;
break;
+ case EFFECT_EXPLOSION:
+ case EFFECT_MIND_BLOWN:
+ if (battlerDefAbility == ABILITY_DAMP || partnerDefAbility == ABILITY_DAMP)
+ return TRUE;
+ break;
default:
break;
}
@@ -677,11 +722,11 @@ static inline bool32 ShouldCalcCritDamage(u32 battlerAtk, u32 battlerDef, u32 mo
if (critChanceIndex == CRITICAL_HIT_ALWAYS)
return TRUE;
if (critChanceIndex >= RISKY_AI_CRIT_STAGE_THRESHOLD // Not guaranteed but above Risky threshold
- && (AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_RISKY)
+ && (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
- && (AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_RISKY)
+ && (gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_RISKY)
&& GetGenConfig(GEN_CONFIG_CRIT_CHANCE) == GEN_1)
return TRUE;
return FALSE;
@@ -695,8 +740,8 @@ struct SimulatedDamage AI_CalcDamage(u32 move, u32 battlerAtk, u32 battlerDef, u
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);
@@ -720,7 +765,7 @@ struct SimulatedDamage AI_CalcDamage(u32 move, u32 battlerAtk, u32 battlerDef, u
u32 movePower = GetMovePower(move);
if (movePower)
- isDamageMoveUnusable = IsDamageMoveUnusable(battlerAtk, battlerDef, move, moveType);
+ isDamageMoveUnusable = IsDamageMoveUnusable(battlerAtk, battlerDef, move, moveType, effectivenessMultiplier, weather);
if (movePower && !isDamageMoveUnusable)
{
@@ -817,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;
@@ -833,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:
@@ -961,8 +1006,8 @@ 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;
switch (GetMoveEffect(move))
@@ -972,10 +1017,8 @@ static bool32 AI_IsMoveEffectInMinus(u32 battlerAtk, u32 battlerDef, u32 move, s
case EFFECT_EXPLOSION:
case EFFECT_FINAL_GAMBIT:
return TRUE;
- case EFFECT_RECOIL_IF_MISS:
- if (AI_IsDamagedByRecoil(battlerAtk))
- return TRUE;
case EFFECT_RECOIL:
+ case EFFECT_RECOIL_IF_MISS:
if (AI_IsDamagedByRecoil(battlerAtk))
return TRUE;
break;
@@ -1041,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);
@@ -1089,12 +1132,12 @@ u32 GetNoOfHitsToKOBattlerDmg(u32 dmg, u32 battlerDef)
u32 GetNoOfHitsToKOBattler(u32 battlerAtk, u32 battlerDef, u32 moveIndex, enum DamageCalcContext calcContext)
{
- return GetNoOfHitsToKOBattlerDmg(AI_GetDamage(battlerAtk, battlerDef, moveIndex, calcContext, AI_DATA), battlerDef);
+ return GetNoOfHitsToKOBattlerDmg(AI_GetDamage(battlerAtk, battlerDef, moveIndex, calcContext, gAiLogicData), battlerDef);
}
u32 GetCurrDamageHpPercent(u32 battlerAtk, u32 battlerDef, enum DamageCalcContext calcContext)
{
- int bestDmg = AI_GetDamage(battlerAtk, battlerDef, AI_THINKING_STRUCT->movesetIndex, calcContext, AI_DATA);
+ int bestDmg = AI_GetDamage(battlerAtk, battlerDef, gAiThinkingStruct->movesetIndex, calcContext, gAiLogicData);
return (bestDmg * 100) / gBattleMons[battlerDef].maxHP;
}
@@ -1113,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);
@@ -1130,12 +1173,12 @@ uq4_12_t AI_GetMoveEffectiveness(u32 move, u32 battlerAtk, u32 battlerDef)
s32 AI_WhoStrikesFirst(u32 battlerAI, u32 battler, u32 moveConsidered)
{
u32 speedBattlerAI, speedBattler;
- enum ItemHoldEffect holdEffectAI = AI_DATA->holdEffects[battlerAI];
- enum ItemHoldEffect 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_THINKING_STRUCT->aiFlags[battlerAI] & AI_FLAG_PREDICT_MOVE) && AI_DATA->predictingMove) ? AI_DATA->predictedMove[battler] : AI_DATA->lastUsedMove[battler];
+ u32 predictedMove = GetIncomingMove(battlerAI, battler, gAiLogicData);
s8 aiPriority = GetBattleMovePriority(battlerAI, abilityAI, moveConsidered);
s8 playerPriority = GetBattleMovePriority(battler, abilityPlayer, predictedMove);
@@ -1187,12 +1230,12 @@ static bool32 CanEndureHit(u32 battler, u32 battlerTarget, u32 move)
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;
@@ -1204,7 +1247,7 @@ static bool32 CanEndureHit(u32 battler, u32 battlerTarget, u32 move)
// Check if target has means to faint ai mon.
bool32 CanTargetFaintAi(u32 battlerDef, u32 battlerAtk)
{
- struct AiLogicData *aiData = AI_DATA;
+ struct AiLogicData *aiData = gAiLogicData;
s32 moveIndex;
u16 *moves = GetMovesArray(battlerDef);
u32 moveLimitations = aiData->moveLimitations[battlerDef];
@@ -1242,7 +1285,7 @@ u32 NoOfHitsForTargetToFaintAI(u32 battlerDef, u32 battlerAtk)
u32 GetBestDmgMoveFromBattler(u32 battlerAtk, u32 battlerDef, enum DamageCalcContext calcContext)
{
- struct AiLogicData *aiData = AI_DATA;
+ struct AiLogicData *aiData = gAiLogicData;
u32 moveIndex;
u32 move = 0;
u32 bestDmg = 0;
@@ -1265,7 +1308,7 @@ u32 GetBestDmgMoveFromBattler(u32 battlerAtk, u32 battlerDef, enum DamageCalcCon
u32 GetBestDmgFromBattler(u32 battler, u32 battlerTarget, enum DamageCalcContext calcContext)
{
- struct AiLogicData *aiData = AI_DATA;
+ struct AiLogicData *aiData = gAiLogicData;
u32 moveIndex;
u32 bestDmg = 0;
u16 *moves = GetMovesArray(battler);
@@ -1288,7 +1331,7 @@ u32 GetBestDmgFromBattler(u32 battler, u32 battlerTarget, enum DamageCalcContext
// 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)
{
- struct AiLogicData *aiData = AI_DATA;
+ struct AiLogicData *aiData = gAiLogicData;
s32 moveIndex, dmg;
u16 *moves = gBattleMons[battlerAtk].moves;
u32 moveLimitations = aiData->moveLimitations[battlerAtk];
@@ -1321,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_GetDamage(battlerDef, battlerAtk, indexSlot, AI_DEFENDING, AI_DATA), gBattleMons[battlerAtk].hp) <= nHits)
+ if (GetNoOfHitsToKO(AI_GetDamage(battlerDef, battlerAtk, indexSlot, AI_DEFENDING, gAiLogicData), gBattleMons[battlerAtk].hp) <= nHits)
return TRUE;
}
return FALSE;
@@ -1330,7 +1373,7 @@ 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)
{
- struct AiLogicData *aiData = AI_DATA;
+ struct AiLogicData *aiData = gAiLogicData;
u32 moveIndex;
s32 dmg;
u16 *moves = GetMovesArray(battlerDef);
@@ -1359,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;
@@ -1392,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;
@@ -1404,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)
@@ -1435,18 +1478,18 @@ enum ItemHoldEffect AI_DecideHoldEffectForTurn(u32 battlerId)
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;
@@ -1454,7 +1497,7 @@ enum ItemHoldEffect 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))
@@ -1465,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)
@@ -1481,6 +1524,26 @@ u32 AI_GetWeather(void)
return gBattleWeather;
}
+enum WeatherState IsWeatherActive(u32 flags)
+{
+ enum WeatherState state = WEATHER_INACTIVE;
+
+ if (gBattleWeather & flags)
+ state = WEATHER_ACTIVE;
+ else
+ state = WEATHER_INACTIVE;
+
+ if (!AI_WeatherHasEffect())
+ {
+ if (state == WEATHER_ACTIVE)
+ state = WEATHER_ACTIVE_BUT_BLOCKED;
+ else
+ state = WEATHER_INACTIVE_AND_BLOCKED;
+ }
+
+ return state;
+}
+
bool32 IsAromaVeilProtectedEffect(enum BattleMoveEffects moveEffect)
{
switch (moveEffect)
@@ -1497,20 +1560,9 @@ bool32 IsAromaVeilProtectedEffect(enum BattleMoveEffects moveEffect)
}
}
-bool32 IsNonVolatileStatusMoveEffect(enum BattleMoveEffects 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(enum BattleMoveEffects moveEffect)
@@ -1581,9 +1633,54 @@ 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;
enum BattleMoveEffects effect = GetMoveEffect(move);
@@ -1623,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;
- enum BattleMoveEffects 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;
@@ -1650,11 +1748,11 @@ bool32 IsMoveEncouragedToHit(u32 battlerAtk, u32 battlerDef, u32 move)
bool32 ShouldTryOHKO(u32 battlerAtk, u32 battlerDef, u32 atkAbility, u32 defAbility, u32 move)
{
- enum ItemHoldEffect 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;
@@ -1682,19 +1780,18 @@ bool32 ShouldTryOHKO(u32 battlerAtk, u32 battlerDef, u32 atkAbility, u32 defAbil
bool32 ShouldSetSandstorm(u32 battler, u32 ability, enum ItemHoldEffect holdEffect)
{
- u32 weather = AI_GetWeather();
- if (weather & B_WEATHER_SANDSTORM)
+ if (IsWeatherActive(B_WEATHER_SANDSTORM | B_WEATHER_PRIMAL_ANY) != WEATHER_INACTIVE)
return FALSE;
if (ability == ABILITY_SAND_VEIL
- || ability == ABILITY_SAND_RUSH
- || ability == ABILITY_SAND_FORCE
- || ability == ABILITY_OVERCOAT
- || 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))
+ || ability == ABILITY_SAND_RUSH
+ || ability == ABILITY_SAND_FORCE
+ || ability == ABILITY_OVERCOAT
+ || ability == ABILITY_MAGIC_GUARD
+ || holdEffect == HOLD_EFFECT_SAFETY_GOGGLES
+ || IS_BATTLER_ANY_TYPE(battler, TYPE_ROCK, TYPE_GROUND, TYPE_STEEL)
+ || HasMoveWithEffect(battler, EFFECT_SHORE_UP)
+ || HasMoveWithEffect(battler, EFFECT_WEATHER_BALL))
{
return TRUE;
}
@@ -1703,21 +1800,20 @@ bool32 ShouldSetSandstorm(u32 battler, u32 ability, enum ItemHoldEffect holdEffe
bool32 ShouldSetHail(u32 battler, u32 ability, enum ItemHoldEffect holdEffect)
{
- u32 weather = AI_GetWeather();
- if (weather & (B_WEATHER_HAIL | B_WEATHER_SNOW))
+ if (IsWeatherActive(B_WEATHER_HAIL | B_WEATHER_SNOW | B_WEATHER_PRIMAL_ANY) != WEATHER_INACTIVE)
return FALSE;
if (ability == ABILITY_SNOW_CLOAK
- || ability == ABILITY_ICE_BODY
- || ability == ABILITY_FORECAST
- || ability == ABILITY_SLUSH_RUSH
- || ability == ABILITY_MAGIC_GUARD
- || 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))
+ || ability == ABILITY_ICE_BODY
+ || ability == ABILITY_FORECAST
+ || ability == ABILITY_SLUSH_RUSH
+ || ability == ABILITY_MAGIC_GUARD
+ || ability == ABILITY_OVERCOAT
+ || holdEffect == HOLD_EFFECT_SAFETY_GOGGLES
+ || IS_BATTLER_OF_TYPE(battler, TYPE_ICE)
+ || HasMoveWithFlag(battler, MoveAlwaysHitsInHailSnow)
+ || HasMoveWithEffect(battler, EFFECT_AURORA_VEIL)
+ || HasMoveWithEffect(battler, EFFECT_WEATHER_BALL))
{
return TRUE;
}
@@ -1726,8 +1822,7 @@ bool32 ShouldSetHail(u32 battler, u32 ability, enum ItemHoldEffect holdEffect)
bool32 ShouldSetRain(u32 battlerAtk, u32 atkAbility, enum ItemHoldEffect holdEffect)
{
- u32 weather = AI_GetWeather();
- if (weather & B_WEATHER_RAIN)
+ if (IsWeatherActive(B_WEATHER_RAIN | B_WEATHER_PRIMAL_ANY) != WEATHER_INACTIVE)
return FALSE;
if (holdEffect != HOLD_EFFECT_UTILITY_UMBRELLA
@@ -1736,8 +1831,8 @@ bool32 ShouldSetRain(u32 battlerAtk, u32 atkAbility, enum ItemHoldEffect holdEff
|| 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;
@@ -1747,8 +1842,7 @@ bool32 ShouldSetRain(u32 battlerAtk, u32 atkAbility, enum ItemHoldEffect holdEff
bool32 ShouldSetSun(u32 battlerAtk, u32 atkAbility, enum ItemHoldEffect holdEffect)
{
- u32 weather = AI_GetWeather();
- if (weather & B_WEATHER_SUN)
+ if (IsWeatherActive(B_WEATHER_SUN | B_WEATHER_PRIMAL_ANY) != WEATHER_INACTIVE)
return FALSE;
if (holdEffect != HOLD_EFFECT_UTILITY_UMBRELLA
@@ -1758,12 +1852,12 @@ bool32 ShouldSetSun(u32 battlerAtk, u32 atkAbility, enum ItemHoldEffect holdEffe
|| 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;
@@ -1773,18 +1867,17 @@ bool32 ShouldSetSun(u32 battlerAtk, u32 atkAbility, enum ItemHoldEffect holdEffe
bool32 ShouldSetSnow(u32 battler, u32 ability, enum ItemHoldEffect holdEffect)
{
- u32 weather = AI_GetWeather();
- if (weather & (B_WEATHER_SNOW | B_WEATHER_HAIL))
+ if (IsWeatherActive(B_WEATHER_SNOW | B_WEATHER_HAIL | B_WEATHER_PRIMAL_ANY) != WEATHER_INACTIVE)
return FALSE;
if (ability == ABILITY_SNOW_CLOAK
- || ability == ABILITY_ICE_BODY
- || 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))
+ || ability == ABILITY_ICE_BODY
+ || ability == ABILITY_FORECAST
+ || ability == ABILITY_SLUSH_RUSH
+ || IS_BATTLER_OF_TYPE(battler, TYPE_ICE)
+ || HasMoveWithFlag(battler, MoveAlwaysHitsInHailSnow)
+ || HasMoveWithEffect(battler, EFFECT_AURORA_VEIL)
+ || HasMoveWithEffect(battler, EFFECT_WEATHER_BALL))
{
return TRUE;
}
@@ -1836,7 +1929,7 @@ bool32 ShouldLowerStat(u32 battlerAtk, u32 battlerDef, u32 abilityDef, u32 stat)
if (gBattleMons[battlerDef].statStages[stat] == MIN_STAT_STAGE)
return FALSE;
- if (AI_DATA->holdEffects[battlerDef] == HOLD_EFFECT_CLEAR_AMULET)
+ if (gAiLogicData->holdEffects[battlerDef] == HOLD_EFFECT_CLEAR_AMULET)
return FALSE;
switch (abilityDef)
@@ -1872,9 +1965,9 @@ bool32 ShouldLowerStat(u32 battlerAtk, u32 battlerDef, u32 abilityDef, u32 stat)
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, AI_THINKING_STRUCT->moveConsidered)
+ return !(AI_IsFaster(battlerAtk, battlerDef, gAiThinkingStruct->moveConsidered)
&& CountUsablePartyMons(battlerAtk) == 0
- && !HasMoveEffect(battlerAtk, EFFECT_ELECTRO_BALL));
+ && !HasMoveWithEffect(battlerAtk, EFFECT_ELECTRO_BALL));
}
return TRUE;
@@ -1937,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.
@@ -1949,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.
@@ -1968,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;
}
@@ -1979,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.
@@ -1998,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.
@@ -2016,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.
@@ -2035,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.
@@ -2052,7 +2145,7 @@ 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;
}
@@ -2063,9 +2156,9 @@ bool32 CanIndexMoveFaintTarget(u32 battlerAtk, u32 battlerDef, u32 moveIndex, en
u16 *moves = gBattleMons[battlerAtk].moves;
if (IsDoubleBattle() && battlerDef == BATTLE_PARTNER(battlerAtk))
- dmg = AI_DATA->simulatedDmg[battlerAtk][battlerDef][moveIndex].maximum; // Attacking partner, be careful
+ dmg = gAiLogicData->simulatedDmg[battlerAtk][battlerDef][moveIndex].maximum; // Attacking partner, be careful
else
- dmg = AI_GetDamage(battlerAtk, battlerDef, moveIndex, calcContext, AI_DATA);
+ dmg = AI_GetDamage(battlerAtk, battlerDef, moveIndex, calcContext, gAiLogicData);
if (gBattleMons[battlerDef].hp <= dmg && !CanEndureHit(battlerAtk, battlerDef, moves[moveIndex]))
return TRUE;
@@ -2077,7 +2170,7 @@ bool32 CanIndexMoveGuaranteeFaintTarget(u32 battlerAtk, u32 battlerDef, u32 move
s32 dmg;
u16 *moves = gBattleMons[battlerAtk].moves;
- dmg = AI_DATA->simulatedDmg[battlerAtk][battlerDef][moveIndex].minimum; // Explictly care about guaranteed KOs universally
+ 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;
@@ -2089,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)
@@ -2135,7 +2228,7 @@ bool32 HasMoveWithType(u32 battler, u32 type)
return FALSE;
}
-bool32 HasMoveEffect(u32 battlerId, enum BattleMoveEffects effect)
+bool32 HasMoveWithEffect(u32 battlerId, enum BattleMoveEffects effect)
{
s32 i;
u16 *moves = GetMovesArray(battlerId);
@@ -2150,6 +2243,45 @@ bool32 HasMoveEffect(u32 battlerId, enum BattleMoveEffects effect)
return FALSE;
}
+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;
@@ -2181,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;
@@ -2266,7 +2423,7 @@ 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++)
{
@@ -2279,7 +2436,7 @@ bool32 HasMoveWithLowAccuracy(u32 battlerAtk, u32 battlerDef, u32 accCheck, bool
|| GetBattlerMoveTargetType(battlerAtk, moves[i]) & (MOVE_TARGET_USER | MOVE_TARGET_OPPONENTS_FIELD))
continue;
- if (AI_DATA->moveAccuracy[battlerAtk][battlerDef][i] <= accCheck)
+ if (gAiLogicData->moveAccuracy[battlerAtk][battlerDef][i] <= accCheck)
return TRUE;
}
@@ -2290,14 +2447,15 @@ bool32 HasSleepMoveWithLowAccuracy(u32 battlerAtk, u32 battlerDef)
{
u32 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 (IsMoveUnusable(i, moves[i], moveLimitations))
continue;
- if (GetMoveEffect(moves[i]) == EFFECT_SLEEP && AI_DATA->moveAccuracy[battlerAtk][battlerDef][i] < 85)
+ if (GetMoveNonVolatileStatus(moves[i]) == MOVE_EFFECT_SLEEP
+ && gAiLogicData->moveAccuracy[battlerAtk][battlerDef][i] < 85)
return TRUE;
}
return FALSE;
@@ -2543,13 +2701,17 @@ static inline bool32 IsMoveSleepClauseTrigger(u32 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.
u32 additionalEffectCount = GetMoveAdditionalEffectCount(move);
@@ -2596,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++)
- {
- if (moves[i] != MOVE_NONE && moves[i] != MOVE_UNAVAILABLE && MoveIgnoresSubstitute(moves[i]))
- return TRUE;
- }
- return FALSE;
-}
-
-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;
- }
+ u32 moveLimitations = gAiLogicData->moveLimitations[battler];
- return FALSE;
-}
-
-bool32 HasMagicCoatAffectedMove(u32 battler)
-{
- s32 i;
- u16 *moves = GetMovesArray(battler);
- for (i = 0; i < MAX_MON_MOVES; i++)
+ for (s32 moveIndex = 0; moveIndex < MAX_MON_MOVES; moveIndex++)
{
- if (moves[i] != MOVE_NONE && moves[i] != MOVE_UNAVAILABLE && MoveCanBeBouncedBack(moves[i]))
- return TRUE;
- }
- return FALSE;
-}
+ if (IsMoveUnusable(moveIndex, moves[moveIndex], moveLimitations))
+ continue;
-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;
@@ -2652,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;
@@ -2700,7 +2828,7 @@ static u32 GetTrapDamage(u32 battlerId)
{
// ai has no knowledge about turns remaining
u32 damage = 0;
- enum ItemHoldEffect 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)
@@ -2718,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)
@@ -2763,8 +2891,8 @@ static bool32 BattlerAffectedByHail(u32 battlerId, u32 ability)
static u32 GetWeatherDamage(u32 battlerId)
{
- u32 ability = AI_DATA->abilities[battlerId];
- enum ItemHoldEffect 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)
@@ -2799,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)
@@ -2934,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))))
@@ -2943,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)
@@ -2999,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
@@ -3011,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;
@@ -3020,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;
@@ -3089,7 +3217,7 @@ bool32 CanKnockOffItem(u32 battler, u32 item)
)) && 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))
@@ -3104,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))
@@ -3128,17 +3256,17 @@ static inline bool32 DoesBattlerBenefitFromAllVolatileStatus(u32 battler, u32 ab
|| ability == ABILITY_QUICK_FEET
|| ability == ABILITY_MAGIC_GUARD
|| (ability == ABILITY_GUTS && HasMoveWithCategory(battler, DAMAGE_CATEGORY_PHYSICAL))
- || HasMoveEffect(battler, EFFECT_FACADE)
- || HasMoveEffect(battler, EFFECT_PSYCHO_SHIFT))
+ || HasMoveWithEffect(battler, EFFECT_FACADE)
+ || HasMoveWithEffect(battler, EFFECT_PSYCHO_SHIFT))
return TRUE;
return FALSE;
}
bool32 ShouldPoison(u32 battlerAtk, u32 battlerDef)
{
- u32 abilityDef = AI_DATA->abilities[battlerDef];
+ u32 abilityDef = gAiLogicData->abilities[battlerDef];
// Battler can be poisoned and has move/ability that synergizes with being poisoned
- if (CanBePoisoned(battlerAtk, battlerDef, AI_DATA->abilities[battlerAtk], abilityDef) && (
+ if (CanBePoisoned(battlerAtk, battlerDef, gAiLogicData->abilities[battlerAtk], abilityDef) && (
DoesBattlerBenefitFromAllVolatileStatus(battlerDef, abilityDef)
|| abilityDef == ABILITY_POISON_HEAL
|| (abilityDef == ABILITY_TOXIC_BOOST && HasMoveWithCategory(battlerDef, DAMAGE_CATEGORY_PHYSICAL))))
@@ -3225,8 +3353,8 @@ bool32 ShouldParalyze(u32 battlerAtk, u32 battlerDef, u32 abilityDef)
bool32 AI_CanPoison(u32 battlerAtk, u32 battlerDef, u32 defAbility, u32 move, u32 partnerMove)
{
- if (!CanBePoisoned(battlerAtk, battlerDef, AI_DATA->abilities[battlerAtk], defAbility)
- || 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;
@@ -3237,7 +3365,7 @@ bool32 AI_CanPoison(u32 battlerAtk, u32 battlerDef, u32 defAbility, u32 move, u3
bool32 AI_CanParalyze(u32 battlerAtk, u32 battlerDef, u32 defAbility, u32 move, u32 partnerMove)
{
if (!CanBeParalyzed(battlerAtk, battlerDef, defAbility)
- || 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)
|| DoesSubstituteBlockMove(battlerAtk, battlerDef, move)
|| PartnerMoveEffectIsStatusSameTarget(BATTLE_PARTNER(battlerAtk), battlerDef, partnerMove))
return FALSE;
@@ -3247,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))
@@ -3259,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)
@@ -3272,7 +3400,7 @@ bool32 AI_CanConfuse(u32 battlerAtk, u32 battlerDef, u32 defAbility, u32 battler
bool32 AI_CanBurn(u32 battlerAtk, u32 battlerDef, u32 defAbility, u32 battlerAtkPartner, u32 move, u32 partnerMove)
{
if (!CanBeBurned(battlerAtk, battlerDef, defAbility)
- || 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)
|| DoesSubstituteBlockMove(battlerAtk, battlerDef, move)
|| PartnerMoveEffectIsStatusSameTarget(battlerAtkPartner, battlerDef, partnerMove))
{
@@ -3284,7 +3412,7 @@ 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 (!CanBeFrozen(battlerAtk, battlerDef, defAbility)
- || 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)
|| DoesSubstituteBlockMove(battlerAtk, battlerDef, move)
|| PartnerMoveEffectIsStatusSameTarget(battlerAtkPartner, battlerDef, partnerMove))
{
@@ -3296,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))
@@ -3306,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
{
@@ -3333,10 +3461,10 @@ bool32 ShouldTrap(u32 battlerAtk, u32 battlerDef, u32 move)
if (IsBattlerTrapped(battlerAtk, battlerDef))
return FALSE;
- if (BattlerWillFaintFromSecondaryDamage(battlerDef, AI_DATA->abilities[battlerDef]))
+ 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
@@ -3348,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;
@@ -3361,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)
@@ -3392,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;
@@ -3406,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;
@@ -3434,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++;
}
@@ -3474,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
@@ -3492,7 +3620,7 @@ bool32 ShouldRecover(u32 battlerAtk, u32 battlerDef, u32 move, u32 healPercent,
if (move == 0xFFFF || AI_IsFaster(battlerAtk, battlerDef, move))
{
// using item or user going first
- s32 damage = AI_GetDamage(battlerAtk, battlerDef, AI_THINKING_STRUCT->movesetIndex, calcContext, AI_DATA);
+ s32 damage = AI_GetDamage(battlerAtk, battlerDef, gAiThinkingStruct->movesetIndex, calcContext, gAiLogicData);
s32 healAmount = (healPercent * damage) / 100;
if (gStatuses3[battlerAtk] & STATUS3_HEAL_BLOCK)
healAmount = 0;
@@ -3500,7 +3628,7 @@ 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;
@@ -3511,8 +3639,8 @@ bool32 ShouldSetScreen(u32 battlerAtk, u32 battlerDef, enum BattleMoveEffects mo
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)
@@ -3597,13 +3725,14 @@ bool32 PartnerMoveEffectIsStatusSameTarget(u32 battlerAtkPartner, u32 battlerDef
return FALSE;
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;
@@ -3703,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++)
@@ -3780,16 +3909,16 @@ s32 AI_CalcPartyMonDamage(u32 move, u32 battlerAtk, u32 battlerDef, struct Battl
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 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());
@@ -3799,10 +3928,10 @@ s32 AI_CalcPartyMonDamage(u32 move, u32 battlerAtk, u32 battlerDef, struct Battl
if (calcContext == AI_ATTACKING)
{
- SetBattlerAiData(battlerAtk, AI_DATA);
- if (AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_RISKY && !(AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_CONSERVATIVE))
+ SetBattlerAiData(battlerAtk, gAiLogicData);
+ if (gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_RISKY && !(gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_CONSERVATIVE))
return dmg.maximum;
- else if (AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_CONSERVATIVE && !(AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_RISKY))
+ else if (gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_CONSERVATIVE && !(gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_RISKY))
return dmg.minimum;
else
return dmg.median;
@@ -3810,10 +3939,10 @@ s32 AI_CalcPartyMonDamage(u32 move, u32 battlerAtk, u32 battlerDef, struct Battl
else if (calcContext == AI_DEFENDING)
{
- SetBattlerAiData(battlerDef, AI_DATA);
- if (AI_THINKING_STRUCT->aiFlags[battlerDef] & AI_FLAG_RISKY && !(AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_CONSERVATIVE))
+ SetBattlerAiData(battlerDef, gAiLogicData);
+ if (gAiThinkingStruct->aiFlags[battlerDef] & AI_FLAG_RISKY && !(gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_CONSERVATIVE))
return dmg.minimum;
- else if (AI_THINKING_STRUCT->aiFlags[battlerDef] & AI_FLAG_CONSERVATIVE && !(AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_RISKY))
+ else if (gAiThinkingStruct->aiFlags[battlerDef] & AI_FLAG_CONSERVATIVE && !(gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_RISKY))
return dmg.maximum;
else
return dmg.median;
@@ -3827,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;
}
@@ -4019,11 +4148,11 @@ static enum AIScore IncreaseStatUpScoreInternal(u32 battlerAtk, u32 battlerDef,
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, AI_DATA))
+ if (HasBattlerSideAbility(battlerDef, ABILITY_UNAWARE, gAiLogicData))
return NO_INCREASE;
// Don't increase stat if AI is at +4
@@ -4031,7 +4160,7 @@ static enum AIScore IncreaseStatUpScoreInternal(u32 battlerAtk, u32 battlerDef,
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
@@ -4039,14 +4168,23 @@ static enum AIScore IncreaseStatUpScoreInternal(u32 battlerAtk, u32 battlerDef,
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;
// Don't increase stats if opposing battler has Encore
- if (HasMoveEffect(battlerDef, EFFECT_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;
- if (IsDoubleBattle() && HasMoveEffect(GetPartnerBattler(battlerDef), EFFECT_ENCORE))
+ // 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
@@ -4056,10 +4194,10 @@ static enum AIScore IncreaseStatUpScoreInternal(u32 battlerAtk, u32 battlerDef,
// If expected switchin outspeeds and has Encore, don't increase
for (i = 0; i < MAX_MON_MOVES; i++)
{
- if (GetMoveEffect(GetMonData(&playerParty[AI_DATA->mostSuitableMonId[battlerDef]], MON_DATA_MOVE1 + i, NULL)) == EFFECT_ENCORE
- && GetMonData(&playerParty[AI_DATA->mostSuitableMonId[battlerDef]], MON_DATA_PP1 + i, NULL) > 0);
+ 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[AI_DATA->mostSuitableMonId[battlerDef]], MON_DATA_SPEED, NULL) > gBattleMons[battlerAtk].speed)
+ if (GetMonData(&playerParty[gAiLogicData->mostSuitableMonId[battlerDef]], MON_DATA_SPEED, NULL) > gBattleMons[battlerAtk].speed)
return NO_INCREASE;
}
}
@@ -4076,7 +4214,7 @@ static enum AIScore IncreaseStatUpScoreInternal(u32 battlerAtk, u32 battlerDef,
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;
@@ -4093,7 +4231,7 @@ static enum AIScore IncreaseStatUpScoreInternal(u32 battlerAtk, u32 battlerDef,
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;
@@ -4106,7 +4244,7 @@ static enum AIScore IncreaseStatUpScoreInternal(u32 battlerAtk, u32 battlerDef,
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;
@@ -4123,7 +4261,7 @@ static enum AIScore IncreaseStatUpScoreInternal(u32 battlerAtk, u32 battlerDef,
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;
@@ -4156,21 +4294,21 @@ u32 IncreaseStatUpScoreContrary(u32 battlerAtk, u32 battlerDef, enum StatChange
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);
@@ -4179,14 +4317,14 @@ 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, AI_DEFENDING)) == DAMAGE_CATEGORY_PHYSICAL)
@@ -4203,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)
@@ -4225,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, AI_ATTACKING)) != 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)
@@ -4245,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);
@@ -4264,13 +4402,13 @@ 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, AI_DEFENDING)) == DAMAGE_CATEGORY_SPECIAL)
@@ -4336,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)
@@ -4368,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);
}
}
}
@@ -4381,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;
@@ -4423,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
@@ -4461,7 +4599,7 @@ u32 IncreaseSubstituteMoveScore(u32 battlerAtk, u32 battlerDef, u32 move)
}
else if (effect == EFFECT_SHED_TAIL) // Shed Tail specific
{
- if ((ShouldPivot(battlerAtk, battlerDef, AI_DATA->abilities[battlerDef], move, AI_THINKING_STRUCT->movesetIndex))
+ if ((ShouldPivot(battlerAtk, battlerDef, gAiLogicData->abilities[battlerDef], move, gAiThinkingStruct->movesetIndex))
&& (HasAnyKnownMove(battlerDef) && (GetBestDmgFromBattler(battlerDef, battlerAtk, AI_DEFENDING) < gBattleMons[battlerAtk].maxHP / 2)))
scoreIncrease += BEST_EFFECT;
}
@@ -4477,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;
}
@@ -4496,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;
@@ -4504,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;
@@ -4519,14 +4656,86 @@ bool32 HasBattlerSideAbility(u32 battler, u32 ability, struct AiLogicData *aiDat
{
if (aiData->abilities[battler] == ability)
return TRUE;
- if (IsDoubleBattle() && AI_DATA->abilities[BATTLE_PARTNER(battler)] == ability)
+ 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 (AI_DATA->aiPredictionInProgress)
- return AI_DATA->battlerDoingPrediction;
+ if (gAiLogicData->aiPredictionInProgress)
+ return gAiLogicData->battlerDoingPrediction;
return battler;
}
diff --git a/src/battle_anim.c b/src/battle_anim.c
index b8118313dd..3840c91012 100644
--- a/src/battle_anim.c
+++ b/src/battle_anim.c
@@ -122,7 +122,7 @@ EWRAM_DATA static bool8 sAnimHideHpBoxes = FALSE;
#include "data/battle_anim.h"
-static void (* const sScriptCmdTable[])(void) =
+static void (*const sScriptCmdTable[])(void) =
{
Cmd_loadspritegfx, // 0x00
Cmd_unloadspritegfx, // 0x01
@@ -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:
@@ -954,30 +956,30 @@ static void Cmd_monbg(void)
{
bool8 toBG_2;
u8 taskId;
- u8 battlerId;
+ u8 battler;
u8 animBattler;
sBattleAnimScriptPtr++;
animBattler = sBattleAnimScriptPtr[0];
if (animBattler & ANIM_TARGET)
- battlerId = gBattleAnimTarget;
+ battler = gBattleAnimTarget;
else
- battlerId = gBattleAnimAttacker;
+ battler = gBattleAnimAttacker;
// Move designated battler to background
- if (IsBattlerSpriteVisible(battlerId))
+ if (IsBattlerSpriteVisible(battler))
{
- u8 position = GetBattlerPosition(battlerId);
+ u8 position = GetBattlerPosition(battler);
if (position == B_POSITION_OPPONENT_LEFT || position == B_POSITION_PLAYER_RIGHT || IsContest())
toBG_2 = FALSE;
else
toBG_2 = TRUE;
- MoveBattlerSpriteToBG(battlerId, toBG_2, FALSE);
+ MoveBattlerSpriteToBG(battler, toBG_2, FALSE);
taskId = CreateTask(Task_InitUpdateMonBg, 10);
gAnimVisualTaskCount++;
- gTasks[taskId].tBattlerId = battlerId;
+ gTasks[taskId].tBattlerId = battler;
gTasks[taskId].tInBg2 = toBG_2;
gTasks[taskId].tActive = TRUE;
gTasks[taskId].tIsPartner = FALSE;
@@ -985,19 +987,19 @@ static void Cmd_monbg(void)
}
// Move battler's partner to background
- battlerId ^= BIT_FLANK;
- if (IsBattlerSpriteVisible(battlerId))
+ battler ^= BIT_FLANK;
+ if (IsBattlerSpriteVisible(battler))
{
- u8 position = GetBattlerPosition(battlerId);
+ u8 position = GetBattlerPosition(battler);
if (position == B_POSITION_OPPONENT_LEFT || position == B_POSITION_PLAYER_RIGHT || IsContest())
toBG_2 = FALSE;
else
toBG_2 = TRUE;
- MoveBattlerSpriteToBG(battlerId, toBG_2, FALSE);
+ MoveBattlerSpriteToBG(battler, toBG_2, FALSE);
taskId = CreateTask(Task_InitUpdateMonBg, 10);
gAnimVisualTaskCount++;
- gTasks[taskId].tBattlerId = battlerId;
+ gTasks[taskId].tBattlerId = battler;
gTasks[taskId].tInBg2 = toBG_2;
gTasks[taskId].tActive = TRUE;
gTasks[taskId].tIsPartner = TRUE;
@@ -1026,26 +1028,26 @@ u8 GetAnimBattlerId(u8 wantedBattler)
}
}
-bool8 IsBattlerSpriteVisible(u8 battlerId)
+bool8 IsBattlerSpriteVisible(u8 battler)
{
if (IsContest())
{
- if (battlerId == gBattleAnimAttacker)
+ if (battler == gBattleAnimAttacker)
return TRUE;
else
return FALSE;
}
- if (!IsBattlerSpritePresent(battlerId))
+ if (!IsBattlerSpritePresent(battler))
return FALSE;
if (IsContest())
return TRUE; // This line won't ever be reached.
- if (!gBattleSpritesDataPtr->battlerData[battlerId].invisible || !gSprites[gBattlerSpriteIds[battlerId]].invisible)
+ if (!gBattleSpritesDataPtr->battlerData[battler].invisible || !gSprites[gBattlerSpriteIds[battler]].invisible)
return TRUE;
return FALSE;
}
-void MoveBattlerSpriteToBG(u8 battlerId, bool8 toBG_2, bool8 setSpriteInvisible)
+void MoveBattlerSpriteToBG(u8 battler, bool8 toBG_2, bool8 setSpriteInvisible)
{
struct BattleAnimBgData animBg;
u8 battlerSpriteId;
@@ -1073,7 +1075,7 @@ void MoveBattlerSpriteToBG(u8 battlerId, bool8 toBG_2, bool8 setSpriteInvisible)
SetAnimBgAttribute(1, BG_ANIM_SCREEN_SIZE, 1);
SetAnimBgAttribute(1, BG_ANIM_AREA_OVERFLOW_MODE, 0);
- battlerSpriteId = gBattlerSpriteIds[battlerId];
+ battlerSpriteId = gBattlerSpriteIds[battler];
gBattle_BG1_X = -(gSprites[battlerSpriteId].x + gSprites[battlerSpriteId].x2) + 0x20;
if (IsContest() && IsSpeciesNotUnown(gContestResources->moveAnim->species))
@@ -1081,18 +1083,18 @@ void MoveBattlerSpriteToBG(u8 battlerId, bool8 toBG_2, bool8 setSpriteInvisible)
gBattle_BG1_Y = -(gSprites[battlerSpriteId].y + gSprites[battlerSpriteId].y2) + 0x20;
if (setSpriteInvisible)
- gSprites[gBattlerSpriteIds[battlerId]].invisible = TRUE;
+ gSprites[gBattlerSpriteIds[battler]].invisible = TRUE;
SetGpuReg(REG_OFFSET_BG1HOFS, gBattle_BG1_X);
SetGpuReg(REG_OFFSET_BG1VOFS, gBattle_BG1_Y);
- LoadPalette(&gPlttBufferUnfaded[OBJ_PLTT_ID(battlerId)], BG_PLTT_ID(animBg.paletteId), PLTT_SIZE_4BPP);
- CpuCopy32(&gPlttBufferUnfaded[OBJ_PLTT_ID(battlerId)], (void *)(BG_PLTT + PLTT_OFFSET_4BPP(animBg.paletteId)), PLTT_SIZE_4BPP);
+ LoadPalette(&gPlttBufferUnfaded[OBJ_PLTT_ID(battler)], BG_PLTT_ID(animBg.paletteId), PLTT_SIZE_4BPP);
+ CpuCopy32(&gPlttBufferUnfaded[OBJ_PLTT_ID(battler)], (void *)(BG_PLTT + PLTT_OFFSET_4BPP(animBg.paletteId)), PLTT_SIZE_4BPP);
if (IsContest())
battlerPosition = 0;
else
- battlerPosition = GetBattlerPosition(battlerId);
+ battlerPosition = GetBattlerPosition(battler);
DrawBattlerOnBg(1, 0, 0, battlerPosition, animBg.paletteId, animBg.bgTiles, animBg.bgTilemap, animBg.tilesOffset);
@@ -1110,21 +1112,21 @@ void MoveBattlerSpriteToBG(u8 battlerId, bool8 toBG_2, bool8 setSpriteInvisible)
SetAnimBgAttribute(2, BG_ANIM_SCREEN_SIZE, 1);
SetAnimBgAttribute(2, BG_ANIM_AREA_OVERFLOW_MODE, 0);
- battlerSpriteId = gBattlerSpriteIds[battlerId];
+ battlerSpriteId = gBattlerSpriteIds[battler];
gBattle_BG2_X = -(gSprites[battlerSpriteId].x + gSprites[battlerSpriteId].x2) + 0x20;
gBattle_BG2_Y = -(gSprites[battlerSpriteId].y + gSprites[battlerSpriteId].y2) + 0x20;
if (setSpriteInvisible)
- gSprites[gBattlerSpriteIds[battlerId]].invisible = TRUE;
+ gSprites[gBattlerSpriteIds[battler]].invisible = TRUE;
SetGpuReg(REG_OFFSET_BG2HOFS, gBattle_BG2_X);
SetGpuReg(REG_OFFSET_BG2VOFS, gBattle_BG2_Y);
- LoadPalette(&gPlttBufferUnfaded[OBJ_PLTT_ID(battlerId)], BG_PLTT_ID(9), PLTT_SIZE_4BPP);
- CpuCopy32(&gPlttBufferUnfaded[OBJ_PLTT_ID(battlerId)], (void *)(BG_PLTT + PLTT_OFFSET_4BPP(9)), PLTT_SIZE_4BPP);
+ LoadPalette(&gPlttBufferUnfaded[OBJ_PLTT_ID(battler)], BG_PLTT_ID(9), PLTT_SIZE_4BPP);
+ CpuCopy32(&gPlttBufferUnfaded[OBJ_PLTT_ID(battler)], (void *)(BG_PLTT + PLTT_OFFSET_4BPP(9)), PLTT_SIZE_4BPP);
- DrawBattlerOnBg(2, 0, 0, GetBattlerPosition(battlerId), animBg.paletteId, animBg.bgTiles + 0x1000, animBg.bgTilemap + 0x400, animBg.tilesOffset);
+ DrawBattlerOnBg(2, 0, 0, GetBattlerPosition(battler), animBg.paletteId, animBg.bgTiles + 0x1000, animBg.bgTilemap + 0x400, animBg.tilesOffset);
}
}
@@ -1192,12 +1194,12 @@ void ResetBattleAnimBg(bool8 toBG2)
static void Task_UpdateMonBg(u8 taskId)
{
- u8 spriteId, battlerId;
+ u8 spriteId, battler;
s16 x, y;
struct BattleAnimBgData animBg;
spriteId = gTasks[taskId].t2_SpriteId;
- battlerId = gTasks[taskId].t2_BattlerId;
+ battler = gTasks[taskId].t2_BattlerId;
GetBattleAnimBg1Data(&animBg);
x = gTasks[taskId].t2_SpriteX - (gSprites[spriteId].x + gSprites[spriteId].x2);
y = gTasks[taskId].t2_SpriteY - (gSprites[spriteId].y + gSprites[spriteId].y2);
@@ -1206,13 +1208,13 @@ static void Task_UpdateMonBg(u8 taskId)
{
gBattle_BG1_X = x + gTasks[taskId].t2_BgX;
gBattle_BG1_Y = y + gTasks[taskId].t2_BgY;
- CpuCopy32(&gPlttBufferFaded[OBJ_PLTT_ID(battlerId)], &gPlttBufferFaded[BG_PLTT_ID(animBg.paletteId)], PLTT_SIZE_4BPP);
+ CpuCopy32(&gPlttBufferFaded[OBJ_PLTT_ID(battler)], &gPlttBufferFaded[BG_PLTT_ID(animBg.paletteId)], PLTT_SIZE_4BPP);
}
else
{
gBattle_BG2_X = x + gTasks[taskId].t2_BgX;
gBattle_BG2_Y = y + gTasks[taskId].t2_BgY;
- CpuCopy32(&gPlttBufferFaded[OBJ_PLTT_ID(battlerId)], &gPlttBufferFaded[BG_PLTT_ID(9)], PLTT_SIZE_4BPP);
+ CpuCopy32(&gPlttBufferFaded[OBJ_PLTT_ID(battler)], &gPlttBufferFaded[BG_PLTT_ID(9)], PLTT_SIZE_4BPP);
}
}
@@ -1232,7 +1234,7 @@ static void Task_UpdateMonBg(u8 taskId)
static void Cmd_clearmonbg(void)
{
u8 animBattlerId;
- u8 battlerId;
+ u8 battler;
u8 taskId;
sBattleAnimScriptPtr++;
@@ -1244,20 +1246,20 @@ static void Cmd_clearmonbg(void)
animBattlerId = ANIM_DEF_PARTNER;
if (animBattlerId == ANIM_ATTACKER || animBattlerId == ANIM_ATK_PARTNER)
- battlerId = gBattleAnimAttacker;
+ battler = gBattleAnimAttacker;
else
- battlerId = gBattleAnimTarget;
+ battler = gBattleAnimTarget;
if (sMonAnimTaskIdArray[0] != TASK_NONE)
- gSprites[gBattlerSpriteIds[battlerId]].invisible = FALSE;
+ gSprites[gBattlerSpriteIds[battler]].invisible = FALSE;
if (animBattlerId > 1 && sMonAnimTaskIdArray[1] != TASK_NONE)
- gSprites[gBattlerSpriteIds[BATTLE_PARTNER(battlerId)]].invisible = FALSE;
+ gSprites[gBattlerSpriteIds[BATTLE_PARTNER(battler)]].invisible = FALSE;
else
animBattlerId = 0;
taskId = CreateTask(Task_ClearMonBg, 5);
gTasks[taskId].data[0] = animBattlerId;
- gTasks[taskId].data[2] = battlerId;
+ gTasks[taskId].data[2] = battler;
sBattleAnimScriptPtr++;
}
@@ -1294,7 +1296,7 @@ static void Task_ClearMonBg(u8 taskId)
static void Cmd_monbg_static(void)
{
bool8 toBG_2;
- u8 battlerId;
+ u8 battler;
u8 animBattlerId;
sBattleAnimScriptPtr++;
@@ -1307,31 +1309,31 @@ static void Cmd_monbg_static(void)
animBattlerId = ANIM_DEF_PARTNER;
if (animBattlerId == ANIM_ATTACKER || animBattlerId == ANIM_ATK_PARTNER)
- battlerId = gBattleAnimAttacker;
+ battler = gBattleAnimAttacker;
else
- battlerId = gBattleAnimTarget;
+ battler = gBattleAnimTarget;
- if (IsBattlerSpriteVisible(battlerId))
+ if (IsBattlerSpriteVisible(battler))
{
- u8 position = GetBattlerPosition(battlerId);
+ u8 position = GetBattlerPosition(battler);
if (position == B_POSITION_OPPONENT_LEFT || position == B_POSITION_PLAYER_RIGHT || IsContest())
toBG_2 = FALSE;
else
toBG_2 = TRUE;
- MoveBattlerSpriteToBG(battlerId, toBG_2, FALSE);
+ MoveBattlerSpriteToBG(battler, toBG_2, FALSE);
}
- battlerId ^= BIT_FLANK;
- if (animBattlerId > 1 && IsBattlerSpriteVisible(battlerId))
+ battler ^= BIT_FLANK;
+ if (animBattlerId > 1 && IsBattlerSpriteVisible(battler))
{
- u8 position = GetBattlerPosition(battlerId);
+ u8 position = GetBattlerPosition(battler);
if (position == B_POSITION_OPPONENT_LEFT || position == B_POSITION_PLAYER_RIGHT || IsContest())
toBG_2 = FALSE;
else
toBG_2 = TRUE;
- MoveBattlerSpriteToBG(battlerId, toBG_2, FALSE);
+ MoveBattlerSpriteToBG(battler, toBG_2, FALSE);
}
sBattleAnimScriptPtr++;
@@ -1340,7 +1342,7 @@ static void Cmd_monbg_static(void)
static void Cmd_clearmonbg_static(void)
{
u8 animBattlerId;
- u8 battlerId;
+ u8 battler;
u8 taskId;
sBattleAnimScriptPtr++;
@@ -1352,20 +1354,20 @@ static void Cmd_clearmonbg_static(void)
animBattlerId = ANIM_DEF_PARTNER;
if (animBattlerId == ANIM_ATTACKER || animBattlerId == ANIM_ATK_PARTNER)
- battlerId = gBattleAnimAttacker;
+ battler = gBattleAnimAttacker;
else
- battlerId = gBattleAnimTarget;
+ battler = gBattleAnimTarget;
- if (IsBattlerSpriteVisible(battlerId))
- gSprites[gBattlerSpriteIds[battlerId]].invisible = FALSE;
- if (animBattlerId > 1 && IsBattlerSpriteVisible(BATTLE_PARTNER(battlerId)))
- gSprites[gBattlerSpriteIds[BATTLE_PARTNER(battlerId)]].invisible = FALSE;
+ if (IsBattlerSpriteVisible(battler))
+ gSprites[gBattlerSpriteIds[battler]].invisible = FALSE;
+ if (animBattlerId > 1 && IsBattlerSpriteVisible(BATTLE_PARTNER(battler)))
+ gSprites[gBattlerSpriteIds[BATTLE_PARTNER(battler)]].invisible = FALSE;
else
animBattlerId = 0;
taskId = CreateTask(Task_ClearMonBgStatic, 5);
gTasks[taskId].data[0] = animBattlerId;
- gTasks[taskId].data[2] = battlerId;
+ gTasks[taskId].data[2] = battler;
sBattleAnimScriptPtr++;
}
@@ -1376,16 +1378,16 @@ static void Task_ClearMonBgStatic(u8 taskId)
if (gTasks[taskId].data[1] != 1)
{
bool8 toBG_2;
- u8 battlerId = gTasks[taskId].data[2];
- u8 position = GetBattlerPosition(battlerId);
+ u8 battler = gTasks[taskId].data[2];
+ u8 position = GetBattlerPosition(battler);
if (position == B_POSITION_OPPONENT_LEFT || position == B_POSITION_PLAYER_RIGHT || IsContest())
toBG_2 = FALSE;
else
toBG_2 = TRUE;
- if (IsBattlerSpriteVisible(battlerId))
+ if (IsBattlerSpriteVisible(battler))
ResetBattleAnimBg(toBG_2);
- if (gTasks[taskId].data[0] > 1 && IsBattlerSpriteVisible(BATTLE_PARTNER(battlerId)))
+ if (gTasks[taskId].data[0] > 1 && IsBattlerSpriteVisible(BATTLE_PARTNER(battler)))
ResetBattleAnimBg(toBG_2 ^ 1);
DestroyTask(taskId);
@@ -2067,19 +2069,19 @@ static void Cmd_jumpifcontest(void)
static void Cmd_splitbgprio(void)
{
u8 wantedBattler;
- u8 battlerId;
+ u8 battler;
u8 battlerPosition;
wantedBattler = sBattleAnimScriptPtr[1];
sBattleAnimScriptPtr += 2;
if (wantedBattler != ANIM_ATTACKER)
- battlerId = gBattleAnimTarget;
+ battler = gBattleAnimTarget;
else
- battlerId = gBattleAnimAttacker;
+ battler = gBattleAnimAttacker;
// Apply only if the given battler is the lead (on left from team's perspective)
- battlerPosition = GetBattlerPosition(battlerId);
+ battlerPosition = GetBattlerPosition(battler);
if (!IsContest() && (battlerPosition == B_POSITION_PLAYER_LEFT || battlerPosition == B_POSITION_OPPONENT_RIGHT))
{
SetAnimBgAttribute(1, BG_ANIM_PRIORITY, 1);
@@ -2101,7 +2103,7 @@ static void Cmd_splitbgprio_foes(void)
{
u8 wantedBattler;
u8 battlerPosition;
- u8 battlerId;
+ u8 battler;
wantedBattler = sBattleAnimScriptPtr[1];
sBattleAnimScriptPtr += 2;
@@ -2110,12 +2112,12 @@ static void Cmd_splitbgprio_foes(void)
if (!IsBattlerAlly(gBattleAnimAttacker, gBattleAnimTarget))
{
if (wantedBattler != ANIM_ATTACKER)
- battlerId = gBattleAnimTarget;
+ battler = gBattleAnimTarget;
else
- battlerId = gBattleAnimAttacker;
+ battler = gBattleAnimAttacker;
// Apply only if the given battler is the lead (on left from team's perspective)
- battlerPosition = GetBattlerPosition(battlerId);
+ battlerPosition = GetBattlerPosition(battler);
if (!IsContest() && (battlerPosition == B_POSITION_PLAYER_LEFT || battlerPosition == B_POSITION_OPPONENT_RIGHT))
{
SetAnimBgAttribute(1, BG_ANIM_PRIORITY, 1);
diff --git a/src/battle_anim_effects_1.c b/src/battle_anim_effects_1.c
index 1fe3b7fc0b..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"
@@ -6931,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;
}
diff --git a/src/battle_anim_effects_2.c b/src/battle_anim_effects_2.c
index e0583c7cf8..10080dc84b 100755
--- a/src/battle_anim_effects_2.c
+++ b/src/battle_anim_effects_2.c
@@ -3395,7 +3395,7 @@ void AnimTask_ScaryFace(u8 taskId)
bool32 onPlayer;
if (gAnimMoveIndex == MOVE_BITTER_MALICE)
- onPlayer = IsOnPlayerSide(gBattleAnimAttacker);
+ onPlayer = !IsOnPlayerSide(gBattleAnimAttacker);
else
onPlayer = !IsOnPlayerSide(gBattleAnimTarget);
diff --git a/src/battle_anim_effects_3.c b/src/battle_anim_effects_3.c
index affa5e7ce3..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 =
diff --git a/src/battle_anim_flying.c b/src/battle_anim_flying.c
index 41eef4718a..2a346bb2ee 100644
--- a/src/battle_anim_flying.c
+++ b/src/battle_anim_flying.c
@@ -920,7 +920,7 @@ static void AnimUnusedBubbleThrow(struct Sprite *sprite)
sprite->callback = TranslateAnimSpriteToTargetMonLocation;
}
-static void AnimWhirlwindLine(struct Sprite * sprite)
+static void AnimWhirlwindLine(struct Sprite *sprite)
{
u16 offset;
u8 mult;
diff --git a/src/battle_anim_ground.c b/src/battle_anim_ground.c
index bd230a1403..eb96414b55 100644
--- a/src/battle_anim_ground.c
+++ b/src/battle_anim_ground.c
@@ -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 ac2205c692..8aa4ae2563 100644
--- a/src/battle_anim_ice.c
+++ b/src/battle_anim_ice.c
@@ -13,11 +13,16 @@
#include "constants/battle_anim.h"
#include "constants/rgb.h"
+enum {
+ HAILSTRUCTTYPE_NEGATIVE_POS_MOD = 0,
+ HAILSTRUCTTYPE_POSITIVE_POS_MOD = 1,
+ HAILSTRUCTTYPE_FIXED_POSITION = 2,
+};
struct HailStruct {
s32 x:10;
s32 y:10;
s32 bPosition:8;
- s32 unk3:4;
+ s32 type:4;
};
static void AnimUnusedIceCrystalThrow(struct Sprite *);
@@ -382,16 +387,16 @@ const struct SpriteTemplate gPoisonGasCloudSpriteTemplate =
static const struct HailStruct sHailCoordData[] =
{
- {.x = 100, .y = 120, .bPosition = B_POSITION_PLAYER_LEFT, .unk3 = 2},
- {.x = 85, .y = 120, .bPosition = B_POSITION_PLAYER_LEFT, .unk3 = 0},
- {.x = 242, .y = 120, .bPosition = B_POSITION_OPPONENT_LEFT, .unk3 = 1},
- {.x = 66, .y = 120, .bPosition = B_POSITION_PLAYER_RIGHT, .unk3 = 1},
- {.x = 182, .y = 120, .bPosition = B_POSITION_OPPONENT_RIGHT, .unk3 = 0},
- {.x = 60, .y = 120, .bPosition = B_POSITION_PLAYER_LEFT, .unk3 = 2},
- {.x = 214, .y = 120, .bPosition = B_POSITION_OPPONENT_LEFT, .unk3 = 0},
- {.x = 113, .y = 120, .bPosition = B_POSITION_PLAYER_LEFT, .unk3 = 1},
- {.x = 210, .y = 120, .bPosition = B_POSITION_OPPONENT_RIGHT, .unk3 = 1},
- {.x = 38, .y = 120, .bPosition = B_POSITION_PLAYER_RIGHT, .unk3 = 0},
+ {.x = 100, .y = 120, .bPosition = B_POSITION_PLAYER_LEFT, .type = HAILSTRUCTTYPE_FIXED_POSITION},
+ {.x = 85, .y = 120, .bPosition = B_POSITION_PLAYER_LEFT, .type = HAILSTRUCTTYPE_NEGATIVE_POS_MOD},
+ {.x = 242, .y = 120, .bPosition = B_POSITION_OPPONENT_LEFT, .type = HAILSTRUCTTYPE_POSITIVE_POS_MOD},
+ {.x = 66, .y = 120, .bPosition = B_POSITION_PLAYER_RIGHT, .type = HAILSTRUCTTYPE_POSITIVE_POS_MOD},
+ {.x = 182, .y = 120, .bPosition = B_POSITION_OPPONENT_RIGHT, .type = HAILSTRUCTTYPE_NEGATIVE_POS_MOD},
+ {.x = 60, .y = 120, .bPosition = B_POSITION_PLAYER_LEFT, .type = HAILSTRUCTTYPE_FIXED_POSITION},
+ {.x = 214, .y = 120, .bPosition = B_POSITION_OPPONENT_LEFT, .type = HAILSTRUCTTYPE_NEGATIVE_POS_MOD},
+ {.x = 113, .y = 120, .bPosition = B_POSITION_PLAYER_LEFT, .type = HAILSTRUCTTYPE_POSITIVE_POS_MOD},
+ {.x = 210, .y = 120, .bPosition = B_POSITION_OPPONENT_RIGHT, .type = HAILSTRUCTTYPE_POSITIVE_POS_MOD},
+ {.x = 38, .y = 120, .bPosition = B_POSITION_PLAYER_RIGHT, .type = HAILSTRUCTTYPE_NEGATIVE_POS_MOD},
};
static const union AffineAnimCmd sAffineAnim_HailParticle_0[] =
@@ -1445,6 +1450,13 @@ static void MovePoisonGasCloud(struct Sprite *sprite)
}
}
+#define tState data[0]
+#define tSpriteCount data[1]
+#define tHailAffineAnimNum data[2]
+#define tHailStructId data[3]
+#define tInitialDelayTimer data[4]
+#define tHailSpawnTimer data[5]
+
void AnimTask_Hail(u8 taskId)
{
struct Task *task = &gTasks[taskId];
@@ -1455,71 +1467,86 @@ void AnimTask_Hail(u8 taskId)
static void AnimTask_Hail2(u8 taskId)
{
struct Task *task = &gTasks[taskId];
- switch (task->data[0])
+ switch (task->tState)
{
case 0:
- if (++task->data[4] > 2)
+ if (++task->tInitialDelayTimer > 2)
{
- task->data[4] = 0;
- task->data[5] = 0;
- task->data[2] = 0;
- task->data[0]++;
+ task->tInitialDelayTimer = 0;
+ task->tHailSpawnTimer = 0;
+ task->tHailAffineAnimNum = 0;
+ task->tState++;
}
break;
case 1:
- if (task->data[5] == 0)
+ if (task->tHailSpawnTimer == 0)
{
- if (GenerateHailParticle(task->data[3], task->data[2], taskId, 1))
- task->data[1]++;
+ if (GenerateHailParticle(task->tHailStructId, task->tHailAffineAnimNum, taskId, 1))
+ task->tSpriteCount++;
- if (++task->data[2] == 3)
+ if (++task->tHailAffineAnimNum == (int)ARRAY_COUNT(sAffineAnims_HailParticle))
{
- if (++task->data[3] == 10)
- task->data[0]++;
+ if (++task->tHailStructId == (int)ARRAY_COUNT(sHailCoordData))
+ task->tState++;
else
- task->data[0]--;
+ task->tState--;
}
else
{
- task->data[5] = 1;
+ task->tHailSpawnTimer = 1;
}
}
else
{
- task->data[5]--;
+ task->tHailSpawnTimer--;
}
break;
case 2:
- if (task->data[1] == 0)
+ if (task->tSpriteCount == 0)
DestroyAnimVisualTask(taskId);
break;
}
}
+#undef tState
+#undef tSpriteCount
+#undef tHailAffineAnimNum
+#undef tHailStructId
+#undef tInitialDelayTimer
+#undef tHailSpawnTimer
+
+// Hail falling particle sprite vars
+#define sSpawnImpactEffect data[0]
+#define sTargetX data[3]
+#define sTargetY data[4]
+#define sAffineAnimNum data[5]
+#define sOwnerTaskId data[6]
+#define sOwnerTaskSpriteCountField data[7]
+
static bool8 GenerateHailParticle(u8 hailStructId, u8 affineAnimNum, u8 taskId, u8 c)
{
u8 id;
s16 battlerX, battlerY;
s16 spriteX;
- bool8 possibleBool = FALSE;
- s8 unk = sHailCoordData[hailStructId].unk3;
+ bool8 shouldSpawnImpactEffect = FALSE;
+ s8 type = sHailCoordData[hailStructId].type;
- if (unk != 2)
+ if (type != HAILSTRUCTTYPE_FIXED_POSITION)
{
id = GetBattlerAtPosition(sHailCoordData[hailStructId].bPosition);
if (IsBattlerSpriteVisible(id))
{
- possibleBool = TRUE;
+ shouldSpawnImpactEffect = TRUE;
battlerX = GetBattlerSpriteCoord(id, BATTLER_COORD_X_2);
battlerY = GetBattlerSpriteCoord(id, BATTLER_COORD_Y_PIC_OFFSET);
- switch (unk)
+ switch (type)
{
- case 0:
+ case HAILSTRUCTTYPE_NEGATIVE_POS_MOD:
battlerX -= GetBattlerSpriteCoordAttr(id, BATTLER_COORD_ATTR_WIDTH) / 6;
battlerY -= GetBattlerSpriteCoordAttr(id, BATTLER_COORD_ATTR_HEIGHT) / 6;
break;
- case 1:
+ case HAILSTRUCTTYPE_POSITIVE_POS_MOD:
battlerX += GetBattlerSpriteCoordAttr(id, BATTLER_COORD_ATTR_WIDTH) / 6;
battlerY += GetBattlerSpriteCoordAttr(id, BATTLER_COORD_ATTR_HEIGHT) / 6;
break;
@@ -1545,12 +1572,12 @@ static bool8 GenerateHailParticle(u8 hailStructId, u8 affineAnimNum, u8 taskId,
else
{
StartSpriteAffineAnim(&gSprites[id], affineAnimNum);
- gSprites[id].data[0] = possibleBool;
- gSprites[id].data[3] = battlerX;
- gSprites[id].data[4] = battlerY;
- gSprites[id].data[5] = affineAnimNum;
- gSprites[id].data[6] = taskId;
- gSprites[id].data[7] = c;
+ gSprites[id].sSpawnImpactEffect = shouldSpawnImpactEffect;
+ gSprites[id].sTargetX = battlerX;
+ gSprites[id].sTargetY = battlerY;
+ gSprites[id].sAffineAnimNum = affineAnimNum;
+ gSprites[id].sOwnerTaskId = taskId;
+ gSprites[id].sOwnerTaskSpriteCountField = c;
return TRUE;
}
}
@@ -1562,20 +1589,23 @@ static void AnimHailBegin(struct Sprite *sprite)
sprite->x += 4;
sprite->y += 8;
- if (sprite->x < sprite->data[3] && sprite->y < sprite->data[4])
+ if (sprite->x < sprite->sTargetX && sprite->y < sprite->sTargetY)
return;
- if (sprite->data[0] == 1 && sprite->data[5] == 0)
+ if (sprite->sSpawnImpactEffect == 1 && sprite->sAffineAnimNum == 0)
{
spriteId = CreateSprite(&gIceCrystalHitLargeSpriteTemplate,
- sprite->data[3], sprite->data[4], sprite->subpriority);
+ sprite->sTargetX, sprite->sTargetY, sprite->subpriority);
sprite->data[0] = spriteId;
if (spriteId != MAX_SPRITES)
{
+ // The sprite template we're using is shared amongst a few other
+ // places, which make the sprite flicker. That's not what we want
+ // here, though. Override the callback.
gSprites[sprite->data[0]].callback = AnimHailContinue;
- gSprites[sprite->data[0]].data[6] = sprite->data[6];
- gSprites[sprite->data[0]].data[7] = sprite->data[7];
+ gSprites[sprite->data[0]].sOwnerTaskId = sprite->sOwnerTaskId;
+ gSprites[sprite->data[0]].sOwnerTaskSpriteCountField = sprite->sOwnerTaskSpriteCountField;
}
FreeOamMatrix(sprite->oam.matrixNum);
@@ -1583,22 +1613,34 @@ static void AnimHailBegin(struct Sprite *sprite)
}
else
{
- gTasks[sprite->data[6]].data[sprite->data[7]]--;
+ gTasks[sprite->sOwnerTaskId].data[sprite->sOwnerTaskSpriteCountField]--;
FreeOamMatrix(sprite->oam.matrixNum);
DestroySprite(sprite);
}
}
+#undef sSpawnImpactEffect
+#undef sTargetX
+#undef sTargetY
+#undef sAffineAnimNum
+
+// Hail impact VFX sprite vars
+#define sTimer data[0]
+
static void AnimHailContinue(struct Sprite *sprite)
{
- if (++sprite->data[0] == 20)
+ if (++sprite->sTimer == 20)
{
- gTasks[sprite->data[6]].data[sprite->data[7]]--;
+ gTasks[sprite->sOwnerTaskId].data[sprite->sOwnerTaskSpriteCountField]--;
FreeOamMatrix(sprite->oam.matrixNum);
DestroySprite(sprite);
}
}
+#undef sTimer
+#undef sOwnerTaskId
+#undef sOwnerTaskSpriteCountField
+
// Initializes the animation for Ice Ball.
// arg 0: initial x pixel offset
// arg 1: initial y pixel offset
diff --git a/src/battle_anim_mon_movement.c b/src/battle_anim_mon_movement.c
index 995c39d6d0..a44e0caf6a 100644
--- a/src/battle_anim_mon_movement.c
+++ b/src/battle_anim_mon_movement.c
@@ -183,7 +183,7 @@ void AnimTask_ShakeMon2(u8 taskId)
{
u8 spriteId;
bool8 abort = FALSE;
- u8 battlerId;
+ u8 battler;
if (gBattleAnimArgs[0] < MAX_BATTLERS_COUNT)
{
@@ -196,24 +196,24 @@ void AnimTask_ShakeMon2(u8 taskId)
switch (gBattleAnimArgs[0])
{
case ANIM_PLAYER_LEFT:
- battlerId = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT);
+ battler = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT);
break;
case ANIM_PLAYER_RIGHT:
- battlerId = GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT);
+ battler = GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT);
break;
case ANIM_OPPONENT_LEFT:
- battlerId = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
+ battler = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
break;
case ANIM_OPPONENT_RIGHT:
default:
- battlerId = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT);
+ battler = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT);
break;
}
- if (IsBattlerSpriteVisible(battlerId) == FALSE)
+ if (IsBattlerSpriteVisible(battler) == FALSE)
abort = TRUE;
- spriteId = gBattlerSpriteIds[battlerId];
+ spriteId = gBattlerSpriteIds[battler];
}
else
{
@@ -675,16 +675,16 @@ static void SlideMonToOffsetPartner(struct Sprite *sprite)
static void SlideMonToOffsetAndBack(struct Sprite *sprite)
{
u8 spriteId;
- u8 battlerId;
+ u8 battler;
sprite->invisible = TRUE;
if (gBattleAnimArgs[0] == ANIM_ATTACKER)
- battlerId = gBattleAnimAttacker;
+ battler = gBattleAnimAttacker;
else
- battlerId = gBattleAnimTarget;
+ battler = gBattleAnimTarget;
- spriteId = gBattlerSpriteIds[battlerId];
- if (!IsOnPlayerSide(battlerId))
+ spriteId = gBattlerSpriteIds[battler];
+ if (!IsOnPlayerSide(battler))
{
gBattleAnimArgs[1] = -gBattleAnimArgs[1];
if (gBattleAnimArgs[3] == 1)
diff --git a/src/battle_anim_mons.c b/src/battle_anim_mons.c
index 3ab6716e10..f7c98bef56 100644
--- a/src/battle_anim_mons.c
+++ b/src/battle_anim_mons.c
@@ -84,7 +84,7 @@ static const struct SpriteSheet sSpriteSheets_MoveEffectMons[] =
{ gMiscBlank_Gfx, MON_PIC_SIZE, TAG_MOVE_EFFECT_MON_2, },
};
-u8 GetBattlerSpriteCoord(u8 battlerId, u8 coordType)
+u8 GetBattlerSpriteCoord(u8 battler, u8 coordType)
{
u8 retVal;
u16 species;
@@ -93,7 +93,7 @@ u8 GetBattlerSpriteCoord(u8 battlerId, u8 coordType)
if (IsContest())
{
- if (coordType == BATTLER_COORD_Y_PIC_OFFSET && battlerId == 3)
+ if (coordType == BATTLER_COORD_Y_PIC_OFFSET && battler == 3)
coordType = BATTLER_COORD_Y;
}
@@ -101,10 +101,10 @@ u8 GetBattlerSpriteCoord(u8 battlerId, u8 coordType)
{
case BATTLER_COORD_X:
case BATTLER_COORD_X_2:
- retVal = sBattlerCoords[GetBattlerCoordsIndex(battlerId)][GetBattlerPosition(battlerId)].x;
+ retVal = sBattlerCoords[GetBattlerCoordsIndex(battler)][GetBattlerPosition(battler)].x;
break;
case BATTLER_COORD_Y:
- retVal = sBattlerCoords[GetBattlerCoordsIndex(battlerId)][GetBattlerPosition(battlerId)].y;
+ retVal = sBattlerCoords[GetBattlerCoordsIndex(battler)][GetBattlerPosition(battler)].y;
break;
case BATTLER_COORD_Y_PIC_OFFSET:
case BATTLER_COORD_Y_PIC_OFFSET_DEFAULT:
@@ -118,27 +118,27 @@ u8 GetBattlerSpriteCoord(u8 battlerId, u8 coordType)
}
else
{
- mon = GetBattlerMon(battlerId);
- illusionMon = GetIllusionMonPtr(battlerId);
+ mon = GetBattlerMon(battler);
+ illusionMon = GetIllusionMonPtr(battler);
if (illusionMon != NULL)
mon = illusionMon;
spriteInfo = gBattleSpritesDataPtr->battlerData;
- if (!spriteInfo[battlerId].transformSpecies)
+ if (!spriteInfo[battler].transformSpecies)
species = GetMonData(mon, MON_DATA_SPECIES);
else
- species = spriteInfo[battlerId].transformSpecies;
+ species = spriteInfo[battler].transformSpecies;
}
if (coordType == BATTLER_COORD_Y_PIC_OFFSET)
- retVal = GetBattlerSpriteFinal_Y(battlerId, species, TRUE);
+ retVal = GetBattlerSpriteFinal_Y(battler, species, TRUE);
else
- retVal = GetBattlerSpriteFinal_Y(battlerId, species, FALSE);
+ retVal = GetBattlerSpriteFinal_Y(battler, species, FALSE);
break;
}
return retVal;
}
-u8 GetBattlerYDelta(u8 battlerId, u16 species)
+u8 GetBattlerYDelta(u8 battler, u16 species)
{
u32 personality;
struct BattleSpriteInfo *spriteInfo;
@@ -161,25 +161,25 @@ u8 GetBattlerYDelta(u8 battlerId, u16 species)
if (species == SPECIES_UNOWN)
{
spriteInfo = gBattleSpritesDataPtr->battlerData;
- if (!spriteInfo[battlerId].transformSpecies)
- personality = GetMonData(GetBattlerMon(battlerId), MON_DATA_PERSONALITY);
+ if (!spriteInfo[battler].transformSpecies)
+ personality = GetMonData(GetBattlerMon(battler), MON_DATA_PERSONALITY);
else
- personality = gTransformedPersonalities[battlerId];
+ personality = gTransformedPersonalities[battler];
species = GetUnownSpeciesId(personality);
}
}
- if (IsOnPlayerSide(battlerId) || IsContest())
+ if (IsOnPlayerSide(battler) || IsContest())
ret = gSpeciesInfo[species].backPicYOffset;
else
ret = gSpeciesInfo[species].frontPicYOffset;
return ret;
}
-u8 GetBattlerElevation(u8 battlerId, u16 species)
+u8 GetBattlerElevation(u8 battler, u16 species)
{
u8 ret = 0;
- if (!IsOnPlayerSide(battlerId))
+ if (!IsOnPlayerSide(battler))
{
if (!IsContest())
{
@@ -190,24 +190,24 @@ u8 GetBattlerElevation(u8 battlerId, u16 species)
return ret;
}
-u8 GetBattlerSpriteFinal_Y(u8 battlerId, u16 species, bool8 a3)
+u8 GetBattlerSpriteFinal_Y(u8 battler, u16 species, bool8 a3)
{
u16 offset;
u8 y;
- if (IsOnPlayerSide(battlerId) || IsContest())
+ if (IsOnPlayerSide(battler) || IsContest())
{
- offset = GetBattlerYDelta(battlerId, species);
+ offset = GetBattlerYDelta(battler, species);
}
else
{
- offset = GetBattlerYDelta(battlerId, species);
- offset -= GetBattlerElevation(battlerId, species);
+ offset = GetBattlerYDelta(battler, species);
+ offset -= GetBattlerElevation(battler, species);
}
- y = offset + sBattlerCoords[GetBattlerCoordsIndex(battlerId)][GetBattlerPosition(battlerId)].y;
+ y = offset + sBattlerCoords[GetBattlerCoordsIndex(battler)][GetBattlerPosition(battler)].y;
if (a3)
{
- if (IsOnPlayerSide(battlerId))
+ if (IsOnPlayerSide(battler))
y += 8;
if (y > DISPLAY_HEIGHT - MON_PIC_HEIGHT + 8)
y = DISPLAY_HEIGHT - MON_PIC_HEIGHT + 8;
@@ -215,7 +215,7 @@ u8 GetBattlerSpriteFinal_Y(u8 battlerId, u16 species, bool8 a3)
return y;
}
-u8 GetBattlerSpriteCoord2(u8 battlerId, u8 coordType)
+u8 GetBattlerSpriteCoord2(u8 battler, u8 coordType)
{
u16 species;
struct BattleSpriteInfo *spriteInfo;
@@ -232,55 +232,55 @@ u8 GetBattlerSpriteCoord2(u8 battlerId, u8 coordType)
else
{
spriteInfo = gBattleSpritesDataPtr->battlerData;
- if (!spriteInfo[battlerId].transformSpecies)
- species = gAnimBattlerSpecies[battlerId];
+ if (!spriteInfo[battler].transformSpecies)
+ species = gAnimBattlerSpecies[battler];
else
- species = spriteInfo[battlerId].transformSpecies;
+ species = spriteInfo[battler].transformSpecies;
}
if (coordType == BATTLER_COORD_Y_PIC_OFFSET)
- return GetBattlerSpriteFinal_Y(battlerId, species, TRUE);
+ return GetBattlerSpriteFinal_Y(battler, species, TRUE);
else
- return GetBattlerSpriteFinal_Y(battlerId, species, FALSE);
+ return GetBattlerSpriteFinal_Y(battler, species, FALSE);
}
else
{
- return GetBattlerSpriteCoord(battlerId, coordType);
+ return GetBattlerSpriteCoord(battler, coordType);
}
}
-u8 GetBattlerSpriteDefault_Y(u8 battlerId)
+u8 GetBattlerSpriteDefault_Y(u8 battler)
{
- return GetBattlerSpriteCoord(battlerId, BATTLER_COORD_Y_PIC_OFFSET_DEFAULT);
+ return GetBattlerSpriteCoord(battler, BATTLER_COORD_Y_PIC_OFFSET_DEFAULT);
}
-u8 GetSubstituteSpriteDefault_Y(u8 battlerId)
+u8 GetSubstituteSpriteDefault_Y(u8 battler)
{
u16 y;
- if (!IsOnPlayerSide(battlerId))
- y = GetBattlerSpriteCoord(battlerId, BATTLER_COORD_Y) + 16;
+ if (!IsOnPlayerSide(battler))
+ y = GetBattlerSpriteCoord(battler, BATTLER_COORD_Y) + 16;
else
- y = GetBattlerSpriteCoord(battlerId, BATTLER_COORD_Y) + 17;
+ y = GetBattlerSpriteCoord(battler, BATTLER_COORD_Y) + 17;
return y;
}
-u8 GetBattlerYCoordWithElevation(u8 battlerId)
+u8 GetBattlerYCoordWithElevation(u8 battler)
{
u16 species;
u8 y;
struct BattleSpriteInfo *spriteInfo;
- y = GetBattlerSpriteCoord(battlerId, BATTLER_COORD_Y);
+ y = GetBattlerSpriteCoord(battler, BATTLER_COORD_Y);
if (!IsContest())
{
spriteInfo = gBattleSpritesDataPtr->battlerData;
- if (!spriteInfo[battlerId].transformSpecies)
- species = GetMonData(GetBattlerMon(battlerId), MON_DATA_SPECIES);
+ if (!spriteInfo[battler].transformSpecies)
+ species = GetMonData(GetBattlerMon(battler), MON_DATA_SPECIES);
else
- species = spriteInfo[battlerId].transformSpecies;
+ species = spriteInfo[battler].transformSpecies;
- if (!IsOnPlayerSide(battlerId))
- y -= GetBattlerElevation(battlerId, species);
+ if (!IsOnPlayerSide(battler))
+ y -= GetBattlerElevation(battler, species);
}
return y;
}
@@ -779,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;
@@ -788,36 +788,36 @@ 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];
return TRUE;
}
-bool8 IsBattlerSpritePresent(u8 battlerId)
+bool8 IsBattlerSpritePresent(u8 battler)
{
if (IsContest())
{
- if (gBattleAnimAttacker == battlerId)
+ if (gBattleAnimAttacker == battler)
return TRUE;
- else if (gBattleAnimTarget == battlerId)
+ else if (gBattleAnimTarget == battler)
return TRUE;
else
return FALSE;
}
else
{
- if (GetBattlerPosition(battlerId) == 0xff)
+ if (GetBattlerPosition(battler) == 0xff)
return FALSE;
- if (!gBattleStruct->spriteIgnore0Hp && GetMonData(GetBattlerMon(battlerId), MON_DATA_HP) == 0)
+ if (!gBattleStruct->spriteIgnore0Hp && GetMonData(GetBattlerMon(battler), MON_DATA_HP) == 0)
return FALSE;
return TRUE;
}
@@ -875,7 +875,7 @@ void GetBattleAnimBgData(struct BattleAnimBgData *out, u32 bgId)
}
}
-void GetBgDataForTransform(struct BattleAnimBgData *out, u8 battlerId)
+void GetBgDataForTransform(struct BattleAnimBgData *out, u8 battler)
{
out->bgTiles = gBattleAnimBgTileBuffer;
out->bgTilemap = (u16 *)gBattleAnimBgTilemapBuffer;
@@ -1213,14 +1213,14 @@ static bool8 ShouldRotScaleSpeciesBeFlipped(void)
void PrepareBattlerSpriteForRotScale(u8 spriteId, u8 objMode)
{
- u8 battlerId = gSprites[spriteId].data[0];
+ u8 battler = gSprites[spriteId].data[0];
- if (IsContest() || IsBattlerSpriteVisible(battlerId))
+ if (IsContest() || IsBattlerSpriteVisible(battler))
gSprites[spriteId].invisible = FALSE;
gSprites[spriteId].oam.objMode = objMode;
gSprites[spriteId].affineAnimPaused = TRUE;
if (!IsContest() && !gSprites[spriteId].oam.affineMode)
- gSprites[spriteId].oam.matrixNum = gBattleSpritesDataPtr->healthBoxesData[battlerId].matrixNum;
+ gSprites[spriteId].oam.matrixNum = gBattleSpritesDataPtr->healthBoxesData[battler].matrixNum;
gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_DOUBLE;
CalcCenterToCornerVec(&gSprites[spriteId], gSprites[spriteId].oam.shape, gSprites[spriteId].oam.size, gSprites[spriteId].oam.affineMode);
}
@@ -1523,7 +1523,7 @@ static void AnimThrowProjectile_Step(struct Sprite *sprite)
void AnimTravelDiagonally(struct Sprite *sprite)
{
bool8 respectOffsets;
- u8 battlerId, coordType;
+ u8 battler, coordType;
if (!gBattleAnimArgs[6])
{
@@ -1538,19 +1538,19 @@ void AnimTravelDiagonally(struct Sprite *sprite)
if (gBattleAnimArgs[5] == ANIM_ATTACKER)
{
InitSpritePosToAnimAttacker(sprite, respectOffsets);
- battlerId = gBattleAnimAttacker;
+ battler = gBattleAnimAttacker;
}
else
{
InitSpritePosToAnimTarget(sprite, respectOffsets);
- battlerId = gBattleAnimTarget;
+ battler = gBattleAnimTarget;
}
if (!IsOnPlayerSide(gBattleAnimAttacker))
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
InitSpritePosToAnimTarget(sprite, respectOffsets);
sprite->data[0] = gBattleAnimArgs[4];
- sprite->data[2] = GetBattlerSpriteCoord(battlerId, BATTLER_COORD_X_2) + gBattleAnimArgs[2];
- sprite->data[4] = GetBattlerSpriteCoord(battlerId, coordType) + gBattleAnimArgs[3];
+ sprite->data[2] = GetBattlerSpriteCoord(battler, BATTLER_COORD_X_2) + gBattleAnimArgs[2];
+ sprite->data[4] = GetBattlerSpriteCoord(battler, coordType) + gBattleAnimArgs[3];
sprite->callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
}
@@ -1834,7 +1834,7 @@ void SetBattlerSpriteYOffsetFromOtherYScale(u8 spriteId, u8 otherSpriteId)
static u16 GetBattlerYDeltaFromSpriteId(u8 spriteId)
{
struct BattleSpriteInfo *spriteInfo;
- u8 battlerId = gSprites[spriteId].data[0];
+ u8 battler = gSprites[spriteId].data[0];
u16 species;
u16 i;
@@ -1850,10 +1850,10 @@ static u16 GetBattlerYDeltaFromSpriteId(u8 spriteId)
else
{
spriteInfo = gBattleSpritesDataPtr->battlerData;
- if (!spriteInfo[battlerId].transformSpecies)
+ if (!spriteInfo[battler].transformSpecies)
species = GetMonData(GetBattlerMon(i), MON_DATA_SPECIES);
else
- species = spriteInfo[battlerId].transformSpecies;
+ species = spriteInfo[battler].transformSpecies;
if (IsOnPlayerSide(i))
return gSpeciesInfo[species].backPicYOffset;
@@ -1953,21 +1953,21 @@ void InitPrioritiesForVisibleBattlers(void)
}
}
-u8 GetBattlerSpriteSubpriority(u8 battlerId)
+u8 GetBattlerSpriteSubpriority(u8 battler)
{
u8 position;
u8 subpriority;
if (IsContest())
{
- if (battlerId == 2)
+ if (battler == 2)
return 30;
else
return 40;
}
else
{
- position = GetBattlerPosition(battlerId);
+ position = GetBattlerPosition(battler);
if (position == B_POSITION_PLAYER_LEFT)
subpriority = 30;
else if (position == B_POSITION_PLAYER_RIGHT)
@@ -1981,9 +1981,9 @@ u8 GetBattlerSpriteSubpriority(u8 battlerId)
return subpriority;
}
-u8 GetBattlerSpriteBGPriority(u8 battlerId)
+u8 GetBattlerSpriteBGPriority(u8 battler)
{
- u8 position = GetBattlerPosition(battlerId);
+ u8 position = GetBattlerPosition(battler);
if (IsContest())
return 2;
@@ -1993,11 +1993,11 @@ u8 GetBattlerSpriteBGPriority(u8 battlerId)
return GetAnimBgAttribute(1, BG_ANIM_PRIORITY);
}
-u8 GetBattlerSpriteBGPriorityRank(u8 battlerId)
+u8 GetBattlerSpriteBGPriorityRank(u8 battler)
{
if (!IsContest())
{
- u8 position = GetBattlerPosition(battlerId);
+ u8 position = GetBattlerPosition(battler);
if (position == B_POSITION_PLAYER_LEFT || position == B_POSITION_OPPONENT_RIGHT)
return 2;
else
@@ -2007,7 +2007,7 @@ u8 GetBattlerSpriteBGPriorityRank(u8 battlerId)
}
// Create Pokémon sprite to be used for a move animation effect (e.g. Role Play / Snatch)
-u8 CreateAdditionalMonSpriteForMoveAnim(u16 species, bool8 isBackpic, u8 id, s16 x, s16 y, u8 subpriority, u32 personality, bool8 isShiny, u32 battlerId)
+u8 CreateAdditionalMonSpriteForMoveAnim(u16 species, bool8 isBackpic, u8 id, s16 x, s16 y, u8 subpriority, u32 personality, bool8 isShiny, u32 battler)
{
u8 spriteId;
u16 sheet = LoadSpriteSheet(&sSpriteSheets_MoveEffectMons[id]);
@@ -2053,7 +2053,7 @@ void DestroySpriteAndFreeResources_(struct Sprite *sprite)
DestroySpriteAndFreeResources(sprite);
}
-s16 GetBattlerSpriteCoordAttr(u8 battlerId, u8 attr)
+s16 GetBattlerSpriteCoordAttr(u8 battler, u8 attr)
{
u16 species;
u32 personality;
@@ -2082,25 +2082,25 @@ s16 GetBattlerSpriteCoordAttr(u8 battlerId, u8 attr)
}
else
{
- struct Pokemon *mon = GetBattlerMon(battlerId);
+ struct Pokemon *mon = GetBattlerMon(battler);
spriteInfo = gBattleSpritesDataPtr->battlerData;
- if (!spriteInfo[battlerId].transformSpecies)
+ if (!spriteInfo[battler].transformSpecies)
{
species = GetMonData(mon, MON_DATA_SPECIES);
personality = GetMonData(mon, MON_DATA_PERSONALITY);
}
else
{
- species = spriteInfo[battlerId].transformSpecies;
- personality = gTransformedPersonalities[battlerId];
+ species = spriteInfo[battler].transformSpecies;
+ personality = gTransformedPersonalities[battler];
}
species = SanitizeSpeciesId(species);
if (species == SPECIES_UNOWN)
species = GetUnownSpeciesId(personality);
- if (IsOnPlayerSide(battlerId))
+ if (IsOnPlayerSide(battler))
{
#if P_GENDER_DIFFERENCES
if (gSpeciesInfo[species].backPicFemale != NULL && IsPersonalityFemale(species, personality))
@@ -2131,22 +2131,22 @@ s16 GetBattlerSpriteCoordAttr(u8 battlerId, u8 attr)
case BATTLER_COORD_ATTR_WIDTH:
return GET_MON_COORDS_WIDTH(size);
case BATTLER_COORD_ATTR_LEFT:
- return GetBattlerSpriteCoord(battlerId, BATTLER_COORD_X_2) - (GET_MON_COORDS_WIDTH(size) / 2);
+ return GetBattlerSpriteCoord(battler, BATTLER_COORD_X_2) - (GET_MON_COORDS_WIDTH(size) / 2);
case BATTLER_COORD_ATTR_RIGHT:
- return GetBattlerSpriteCoord(battlerId, BATTLER_COORD_X_2) + (GET_MON_COORDS_WIDTH(size) / 2);
+ return GetBattlerSpriteCoord(battler, BATTLER_COORD_X_2) + (GET_MON_COORDS_WIDTH(size) / 2);
case BATTLER_COORD_ATTR_TOP:
- return GetBattlerSpriteCoord(battlerId, BATTLER_COORD_Y_PIC_OFFSET) - (GET_MON_COORDS_HEIGHT(size) / 2);
+ return GetBattlerSpriteCoord(battler, BATTLER_COORD_Y_PIC_OFFSET) - (GET_MON_COORDS_HEIGHT(size) / 2);
case BATTLER_COORD_ATTR_BOTTOM:
- return GetBattlerSpriteCoord(battlerId, BATTLER_COORD_Y_PIC_OFFSET) + (GET_MON_COORDS_HEIGHT(size) / 2);
+ return GetBattlerSpriteCoord(battler, BATTLER_COORD_Y_PIC_OFFSET) + (GET_MON_COORDS_HEIGHT(size) / 2);
case BATTLER_COORD_ATTR_RAW_BOTTOM:
- ret = GetBattlerSpriteCoord(battlerId, BATTLER_COORD_Y) + 31;
+ ret = GetBattlerSpriteCoord(battler, BATTLER_COORD_Y) + 31;
return ret - y_offset;
default:
return 0;
}
}
-void SetAverageBattlerPositions(u8 battlerId, bool8 respectMonPicOffsets, s16 *x, s16 *y)
+void SetAverageBattlerPositions(u8 battler, bool8 respectMonPicOffsets, s16 *x, s16 *y)
{
u8 xCoordType, yCoordType;
s16 battlerX, battlerY;
@@ -2163,12 +2163,12 @@ void SetAverageBattlerPositions(u8 battlerId, bool8 respectMonPicOffsets, s16 *x
yCoordType = BATTLER_COORD_Y_PIC_OFFSET;
}
- battlerX = GetBattlerSpriteCoord(battlerId, xCoordType);
- battlerY = GetBattlerSpriteCoord(battlerId, yCoordType);
+ battlerX = GetBattlerSpriteCoord(battler, xCoordType);
+ battlerY = GetBattlerSpriteCoord(battler, yCoordType);
if (IsDoubleBattle() && !IsContest())
{
- partnerX = GetBattlerSpriteCoord(BATTLE_PARTNER(battlerId), xCoordType);
- partnerY = GetBattlerSpriteCoord(BATTLE_PARTNER(battlerId), yCoordType);
+ partnerX = GetBattlerSpriteCoord(BATTLE_PARTNER(battler), xCoordType);
+ partnerY = GetBattlerSpriteCoord(BATTLE_PARTNER(battler), yCoordType);
}
else
{
@@ -2180,7 +2180,7 @@ void SetAverageBattlerPositions(u8 battlerId, bool8 respectMonPicOffsets, s16 *x
*y = (battlerY + partnerY) / 2;
}
-u8 CreateInvisibleSpriteCopy(int battlerId, u8 spriteId, int species)
+u8 CreateInvisibleSpriteCopy(int battler, u8 spriteId, int species)
{
u8 newSpriteId = CreateInvisibleSpriteWithCallback(SpriteCallbackDummy);
gSprites[newSpriteId] = gSprites[spriteId];
diff --git a/src/battle_anim_new.c b/src/battle_anim_new.c
index 1ecf064be8..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),
@@ -8698,8 +8720,8 @@ void AnimTask_PurpleFlamesOnTarget(u8 taskId)
void AnimTask_TechnoBlast(u8 taskId)
{
- if (ItemId_GetHoldEffect(gBattleMons[gBattleAnimAttacker].item) == HOLD_EFFECT_DRIVE)
- gBattleAnimArgs[0] = ItemId_GetSecondaryId(gBattleMons[gBattleAnimAttacker].item);
+ if (GetItemHoldEffect(gBattleMons[gBattleAnimAttacker].item) == HOLD_EFFECT_DRIVE)
+ gBattleAnimArgs[0] = GetItemSecondaryId(gBattleMons[gBattleAnimAttacker].item);
else
gBattleAnimArgs[0] = 0;
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_rock.c b/src/battle_anim_rock.c
index 2fccb9201d..4ac83e4446 100644
--- a/src/battle_anim_rock.c
+++ b/src/battle_anim_rock.c
@@ -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);
@@ -515,6 +511,11 @@ static void AnimParticleInVortex_Step(struct Sprite *sprite)
}
}
+#define tBlendTimer data[10]
+#define tBlend data[11]
+#define tFullAlphaTimer data[11] // not a typo; this data field is used for multiple purposes
+#define tState data[12]
+
void AnimTask_LoadSandstormBackground(u8 taskId)
{
int var0;
@@ -557,45 +558,45 @@ static void AnimTask_LoadSandstormBackground_Step(u8 taskId)
gBattle_BG1_Y += -1;
- switch (gTasks[taskId].data[12])
+ switch (gTasks[taskId].tState)
{
case 0:
- if (++gTasks[taskId].data[10] == 4)
+ if (++gTasks[taskId].tBlendTimer == 4)
{
- gTasks[taskId].data[10] = 0;
- gTasks[taskId].data[11]++;
- SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[11], 16 - gTasks[taskId].data[11]));
- if (gTasks[taskId].data[11] == 7)
+ gTasks[taskId].tBlendTimer = 0;
+ gTasks[taskId].tBlend++;
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].tBlend, 16 - gTasks[taskId].tBlend));
+ if (gTasks[taskId].tBlend == 7)
{
- gTasks[taskId].data[12]++;
- gTasks[taskId].data[11] = 0;
+ gTasks[taskId].tState++;
+ gTasks[taskId].tFullAlphaTimer = 0;
}
}
break;
case 1:
- if (++gTasks[taskId].data[11] == 101)
+ if (++gTasks[taskId].tFullAlphaTimer == 101)
{
- gTasks[taskId].data[11] = 7;
- gTasks[taskId].data[12]++;
+ gTasks[taskId].tBlend = 7;
+ gTasks[taskId].tState++;
}
break;
case 2:
- if (++gTasks[taskId].data[10] == 4)
+ if (++gTasks[taskId].tBlendTimer == 4)
{
- gTasks[taskId].data[10] = 0;
- gTasks[taskId].data[11]--;
- SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[11], 16 - gTasks[taskId].data[11]));
- if (gTasks[taskId].data[11] == 0)
+ gTasks[taskId].tBlendTimer = 0;
+ gTasks[taskId].tBlend--;
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].tBlend, 16 - gTasks[taskId].tBlend));
+ if (gTasks[taskId].tBlend == 0)
{
- gTasks[taskId].data[12]++;
- gTasks[taskId].data[11] = 0;
+ gTasks[taskId].tState++;
+ gTasks[taskId].tFullAlphaTimer = 0;
}
}
break;
case 3:
GetBattleAnimBg1Data(&animBg);
ClearBattleAnimBg(animBg.bgId);
- gTasks[taskId].data[12]++;
+ gTasks[taskId].tState++;
break;
case 4:
if (!IsContest())
@@ -611,21 +612,36 @@ static void AnimTask_LoadSandstormBackground_Step(u8 taskId)
}
}
+#undef tBlendTimer
+#undef tBlend
+#undef tFullAlphaTimer
+#undef tState
+
// Animates the sprites that fly diagonally across the screen
// in Sandstorm and Heat Wave.
-// arg 0: initial y pixel offset
-// arg 1: projectile speed
-// arg 2: y pixel drop
-// arg 3: ??? unknown (possibly a color bit)
+
+#define sState data[0]
+#define sVelocityX data[1] // 256ths of a pixel // init'd from gBattleAnimArgs[1]
+#define sVelocityY data[2] // 256ths of a pixel // init'd from gBattleAnimArgs[2]
+#define sFractionalX data[3] // 256ths of a pixel
+#define sFractionalY data[4] // 256ths of a pixel
+#define sMirroredX data[5] // init'd from gBattleAnimArgs[3]
+
+// The fields named "velocity" are arguably more like "acceleration,"
+// and the fields named "fractional" are arguably more like "velocity."
+//
+// ...is what I WOULD say if the "fractional" fields weren't AND'd with
+// 0xFF after every frame.
+
void AnimFlyingSandCrescent(struct Sprite *sprite)
{
- if (sprite->data[0] == 0)
+ if (sprite->sState == 0)
{
if (gBattleAnimArgs[3] != 0 && !IsOnPlayerSide(gBattleAnimAttacker))
{
sprite->x = DISPLAY_WIDTH + 64;
gBattleAnimArgs[1] = -gBattleAnimArgs[1];
- sprite->data[5] = 1;
+ sprite->sMirroredX = 1;
sprite->oam.matrixNum = ST_OAM_HFLIP;
}
else
@@ -635,18 +651,18 @@ void AnimFlyingSandCrescent(struct Sprite *sprite)
sprite->y = gBattleAnimArgs[0];
SetSubspriteTables(sprite, sFlyingSandSubspriteTable);
- sprite->data[1] = gBattleAnimArgs[1];
- sprite->data[2] = gBattleAnimArgs[2];
- sprite->data[0]++;
+ sprite->sVelocityX = gBattleAnimArgs[1];
+ sprite->sVelocityY = gBattleAnimArgs[2];
+ sprite->sState++;
}
else
{
- sprite->data[3] += sprite->data[1];
- sprite->data[4] += sprite->data[2];
- sprite->x2 += (sprite->data[3] >> 8);
- sprite->y2 += (sprite->data[4] >> 8);
- sprite->data[3] &= 0xFF;
- sprite->data[4] &= 0xFF;
+ sprite->sFractionalX += sprite->sVelocityX;
+ sprite->sFractionalY += sprite->sVelocityY;
+ sprite->x2 += (sprite->sFractionalX >> 8);
+ sprite->y2 += (sprite->sFractionalY >> 8);
+ sprite->sFractionalX &= 0xFF;
+ sprite->sFractionalY &= 0xFF;
if (sprite->data[5] == 0)
{
@@ -662,6 +678,13 @@ void AnimFlyingSandCrescent(struct Sprite *sprite)
}
}
+#undef sState
+#undef sVelocityX
+#undef sVelocityY
+#undef sFractionalX
+#undef sFractionalY
+#undef sMirroredX
+
// Animates the rising rocks in Ancient Power.
// arg 0: initial x pixel offset
// arg 1: initial y pixel offset
diff --git a/src/battle_anim_sound_tasks.c b/src/battle_anim_sound_tasks.c
index c4ad988a0b..1bd7008aa4 100644
--- a/src/battle_anim_sound_tasks.c
+++ b/src/battle_anim_sound_tasks.c
@@ -148,26 +148,26 @@ void SoundTask_PlayCryHighPitch(u8 taskId)
}
else
{
- u8 battlerId;
+ u8 battler;
// Get wanted battler.
if (gBattleAnimArgs[0] == ANIM_ATTACKER)
- battlerId = gBattleAnimAttacker;
+ battler = gBattleAnimAttacker;
else if (gBattleAnimArgs[0] == ANIM_TARGET)
- battlerId = gBattleAnimTarget;
+ battler = gBattleAnimTarget;
else if (gBattleAnimArgs[0] == ANIM_ATK_PARTNER)
- battlerId = BATTLE_PARTNER(gBattleAnimAttacker);
+ battler = BATTLE_PARTNER(gBattleAnimAttacker);
else
- battlerId = BATTLE_PARTNER(gBattleAnimTarget);
+ battler = BATTLE_PARTNER(gBattleAnimTarget);
// Check if battler is visible.
- if ((gBattleAnimArgs[0] == ANIM_TARGET || gBattleAnimArgs[0] == ANIM_DEF_PARTNER) && !IsBattlerSpriteVisible(battlerId))
+ if ((gBattleAnimArgs[0] == ANIM_TARGET || gBattleAnimArgs[0] == ANIM_DEF_PARTNER) && !IsBattlerSpriteVisible(battler))
{
DestroyAnimVisualTask(taskId);
return;
}
- species = (GetIllusionMonSpecies(battlerId) != SPECIES_NONE) ? GetIllusionMonSpecies(battlerId) : gAnimBattlerSpecies[battlerId];
+ species = (GetIllusionMonSpecies(battler) != SPECIES_NONE) ? GetIllusionMonSpecies(battler) : gAnimBattlerSpecies[battler];
}
if (species != SPECIES_NONE)
@@ -193,26 +193,26 @@ void SoundTask_PlayDoubleCry(u8 taskId)
}
else
{
- u8 battlerId;
+ u8 battler;
// Get wanted battler.
if (gBattleAnimArgs[0] == ANIM_ATTACKER)
- battlerId = gBattleAnimAttacker;
+ battler = gBattleAnimAttacker;
else if (gBattleAnimArgs[0] == ANIM_TARGET)
- battlerId = gBattleAnimTarget;
+ battler = gBattleAnimTarget;
else if (gBattleAnimArgs[0] == ANIM_ATK_PARTNER)
- battlerId = BATTLE_PARTNER(gBattleAnimAttacker);
+ battler = BATTLE_PARTNER(gBattleAnimAttacker);
else
- battlerId = BATTLE_PARTNER(gBattleAnimTarget);
+ battler = BATTLE_PARTNER(gBattleAnimTarget);
// Check if battler is visible.
- if ((gBattleAnimArgs[0] == ANIM_TARGET || gBattleAnimArgs[0] == ANIM_DEF_PARTNER) && !IsBattlerSpriteVisible(battlerId))
+ if ((gBattleAnimArgs[0] == ANIM_TARGET || gBattleAnimArgs[0] == ANIM_DEF_PARTNER) && !IsBattlerSpriteVisible(battler))
{
DestroyAnimVisualTask(taskId);
return;
}
- species = (GetIllusionMonSpecies(battlerId) != SPECIES_NONE) ? GetIllusionMonSpecies(battlerId) : gAnimBattlerSpecies[battlerId];
+ species = (GetIllusionMonSpecies(battler) != SPECIES_NONE) ? GetIllusionMonSpecies(battler) : gAnimBattlerSpecies[battler];
}
gTasks[taskId].data[0] = gBattleAnimArgs[1];
diff --git a/src/battle_anim_status_effects.c b/src/battle_anim_status_effects.c
index e2741c2b09..b70f481d6c 100644
--- a/src/battle_anim_status_effects.c
+++ b/src/battle_anim_status_effects.c
@@ -269,16 +269,16 @@ static const struct SpriteTemplate sFlashingCircleImpactSpriteTemplate =
.callback = AnimFlashingCircleImpact,
};
-static u8 UNUSED Task_FlashingCircleImpacts(u8 battlerId, bool8 red)
+static u8 UNUSED Task_FlashingCircleImpacts(u8 battler, bool8 red)
{
- u8 battlerSpriteId = gBattlerSpriteIds[battlerId];
+ u8 battlerSpriteId = gBattlerSpriteIds[battler];
u8 taskId = CreateTask(Task_UpdateFlashingCircleImpacts, 10);
u8 spriteId;
u8 i;
LoadCompressedSpriteSheetUsingHeap(&gBattleAnimPicTable[GET_TRUE_SPRITE_INDEX(ANIM_TAG_CIRCLE_IMPACT)]);
LoadSpritePalette(&gBattleAnimPaletteTable[GET_TRUE_SPRITE_INDEX(ANIM_TAG_CIRCLE_IMPACT)]);
- gTasks[taskId].data[0] = battlerId;
+ gTasks[taskId].data[0] = battler;
if (red)
{
gTasks[taskId].data[1] = RGB_RED;
@@ -588,15 +588,15 @@ void AnimTask_StatsChange(u8 taskId)
#undef CASE
-void LaunchStatusAnimation(u8 battlerId, u8 statusAnimId)
+void LaunchStatusAnimation(u8 battler, u8 statusAnimId)
{
u8 taskId;
- gBattleAnimAttacker = battlerId;
- gBattleAnimTarget = battlerId;
+ gBattleAnimAttacker = battler;
+ gBattleAnimTarget = battler;
LaunchBattleAnimation(ANIM_TYPE_STATUS, statusAnimId);
taskId = CreateTask(Task_DoStatusAnimation, 10);
- gTasks[taskId].data[0] = battlerId;
+ gTasks[taskId].data[0] = battler;
}
static void Task_DoStatusAnimation(u8 taskId)
diff --git a/src/battle_anim_water.c b/src/battle_anim_water.c
index 0da1a08993..490136d116 100644
--- a/src/battle_anim_water.c
+++ b/src/battle_anim_water.c
@@ -657,27 +657,37 @@ static void AnimKnockOffAquaTailStep(struct Sprite *sprite)
sprite->data[2]++;
}
+#define tRaindropSpawnTimer data[0]
+#define tRaindropUnused data[1]
+#define tRaindropSpawnInterval data[2]
+#define tRaindropSpawnDuration data[3] // number of frames over which we spawn raindrops
+
void AnimTask_CreateRaindrops(u8 taskId)
{
u8 x, y;
- if (gTasks[taskId].data[0] == 0)
+ if (gTasks[taskId].tRaindropSpawnTimer == 0)
{
- gTasks[taskId].data[1] = gBattleAnimArgs[0];
- gTasks[taskId].data[2] = gBattleAnimArgs[1];
- gTasks[taskId].data[3] = gBattleAnimArgs[2];
+ gTasks[taskId].tRaindropUnused = gBattleAnimArgs[0];
+ gTasks[taskId].tRaindropSpawnInterval = gBattleAnimArgs[1];
+ gTasks[taskId].tRaindropSpawnDuration = gBattleAnimArgs[2];
}
- gTasks[taskId].data[0]++;
- if (gTasks[taskId].data[0] % gTasks[taskId].data[2] == 1)
+ gTasks[taskId].tRaindropSpawnTimer++;
+ if (gTasks[taskId].tRaindropSpawnTimer % gTasks[taskId].tRaindropSpawnInterval == 1)
{
x = Random2() % DISPLAY_WIDTH;
y = Random2() % (DISPLAY_HEIGHT / 2);
CreateSprite(&gRainDropSpriteTemplate, x, y, 4);
}
- if (gTasks[taskId].data[0] == gTasks[taskId].data[3])
+ if (gTasks[taskId].tRaindropSpawnTimer == gTasks[taskId].tRaindropSpawnDuration)
DestroyAnimVisualTask(taskId);
}
+#undef tRaindropSpawnTimer
+#undef tRaindropUnused
+#undef tRaindropSpawnInterval
+#undef tRaindropSpawnDuration
+
static void AnimRainDrop(struct Sprite *sprite)
{
sprite->callback = AnimRainDrop_Step;
@@ -687,6 +697,10 @@ static void AnimRainDrop_Step(struct Sprite *sprite)
{
if (++sprite->data[0] <= 13)
{
+ //
+ // Make the raindrop fall, but only until it reaches the
+ // impact/splash frames of its animation.
+ //
sprite->x2++;
sprite->y2 += 4;
}
diff --git a/src/battle_arena.c b/src/battle_arena.c
index 941a9c5827..8474595b0d 100644
--- a/src/battle_arena.c
+++ b/src/battle_arena.c
@@ -116,7 +116,7 @@ static const struct CompressedSpriteSheet sBattleArenaJudgmentSymbolsSpriteSheet
{0}
};
-static void (* const sArenaFunctions[])(void) =
+static void (*const sArenaFunctions[])(void) =
{
[BATTLE_ARENA_FUNC_INIT] = InitArenaChallenge,
[BATTLE_ARENA_FUNC_GET_DATA] = GetArenaData,
diff --git a/src/battle_bg.c b/src/battle_bg.c
index a315b962dd..a0df9017c7 100644
--- a/src/battle_bg.c
+++ b/src/battle_bg.c
@@ -604,7 +604,7 @@ static const struct WindowTemplate sBattleArenaWindowTemplates[] =
DUMMY_WIN_TEMPLATE
};
-const struct WindowTemplate * const gBattleWindowTemplates[] =
+const struct WindowTemplate *const gBattleWindowTemplates[] =
{
[B_WIN_TYPE_NORMAL] = sStandardBattleWindowTemplates,
[B_WIN_TYPE_ARENA] = sBattleArenaWindowTemplates,
diff --git a/src/battle_controller_link_opponent.c b/src/battle_controller_link_opponent.c
index 2f4d579996..a039a5b522 100644
--- a/src/battle_controller_link_opponent.c
+++ b/src/battle_controller_link_opponent.c
@@ -114,7 +114,7 @@ void SetControllerToLinkOpponent(u32 battler)
static void LinkOpponentBufferRunCommand(u32 battler)
{
- if (gBattleControllerExecFlags & (1u << battler))
+ if (IsBattleControllerActiveOnLocal(battler))
{
if (gBattleResources->bufferA[battler][0] < ARRAY_COUNT(sLinkOpponentBufferCommands))
sLinkOpponentBufferCommands[gBattleResources->bufferA[battler][0]](battler);
@@ -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, GetBattlerMon(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], GetBattlerMon(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, GetBattlerMon(battler));
- }
-
- if (gSprites[gBattleControllerData[battler]].callback == SpriteCallbackDummy
- && !gBattleSpritesDataPtr->healthBoxesData[battler].ballAnimActive)
- {
- DestroySprite(&gSprites[gBattleControllerData[battler]]);
- SetBattlerShadowSpriteCallback(battler, GetMonData(GetBattlerMon(battler), MON_DATA_SPECIES));
+ if (SwitchIn_TryShinyAnimUtil(battler))
gBattlerControllerFuncs[battler] = SwitchIn_ShowHealthbox;
- }
}
static void LinkOpponentBufferExecCompleted(u32 battler)
@@ -367,12 +315,12 @@ static void LinkOpponentBufferExecCompleted(u32 battler)
{
u8 playerId = GetMultiplayerId();
- PrepareBufferDataTransferLink(battler, 2, 4, &playerId);
+ PrepareBufferDataTransferLink(battler, B_COMM_CONTROLLER_IS_DONE, 4, &playerId);
gBattleResources->bufferA[battler][0] = CONTROLLER_TERMINATOR_NOP;
}
else
{
- gBattleControllerExecFlags &= ~(1u << battler);
+ MarkBattleControllerIdleOnLocal(battler);
}
}
diff --git a/src/battle_controller_link_partner.c b/src/battle_controller_link_partner.c
index 7815793ca8..9b27309bf6 100644
--- a/src/battle_controller_link_partner.c
+++ b/src/battle_controller_link_partner.c
@@ -113,7 +113,7 @@ void SetControllerToLinkPartner(u32 battler)
static void LinkPartnerBufferRunCommand(u32 battler)
{
- if (gBattleControllerExecFlags & (1u << battler))
+ if (IsBattleControllerActiveOnLocal(battler))
{
if (gBattleResources->bufferA[battler][0] < ARRAY_COUNT(sLinkPartnerBufferCommands))
sLinkPartnerBufferCommands[gBattleResources->bufferA[battler][0]](battler);
@@ -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(GetBattlerMon(battler), battler);
- StartSpriteAnim(&gSprites[gBattlerSpriteIds[battler]], 0);
- UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], GetBattlerMon(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, GetBattlerMon(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)
@@ -193,12 +159,12 @@ static void LinkPartnerBufferExecCompleted(u32 battler)
{
u8 playerId = GetMultiplayerId();
- PrepareBufferDataTransferLink(battler, 2, 4, &playerId);
+ PrepareBufferDataTransferLink(battler, B_COMM_CONTROLLER_IS_DONE, 4, &playerId);
gBattleResources->bufferA[battler][0] = CONTROLLER_TERMINATOR_NOP;
}
else
{
- gBattleControllerExecFlags &= ~(1u << battler);
+ MarkBattleControllerIdleOnLocal(battler);
}
}
diff --git a/src/battle_controller_opponent.c b/src/battle_controller_opponent.c
index 5839dcf6b4..f6fae5ae57 100644
--- a/src/battle_controller_opponent.c
+++ b/src/battle_controller_opponent.c
@@ -127,7 +127,7 @@ void SetControllerToOpponent(u32 battler)
static void OpponentBufferRunCommand(u32 battler)
{
- if (gBattleControllerExecFlags & (1u << battler))
+ if (IsBattleControllerActiveOnLocal(battler))
{
if (gBattleResources->bufferA[battler][0] < ARRAY_COUNT(sOpponentBufferCommands))
sOpponentBufferCommands[gBattleResources->bufferA[battler][0]](battler);
@@ -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(GetBattlerMon(battler), MON_DATA_SPECIES));
- }
- }
-}
-
static void Intro_TryShinyAnimShowHealthbox(u32 battler)
{
bool32 bgmRestored = FALSE;
@@ -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], GetBattlerMon(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, GetBattlerMon(battler));
-
- if (gSprites[gBattleControllerData[battler]].callback == SpriteCallbackDummy
- && !gBattleSpritesDataPtr->healthBoxesData[battler].ballAnimActive)
- {
- DestroySprite(&gSprites[gBattleControllerData[battler]]);
- SetBattlerShadowSpriteCallback(battler, GetMonData(GetBattlerMon(battler), MON_DATA_SPECIES));
+ if (SwitchIn_TryShinyAnimUtil(battler))
gBattlerControllerFuncs[battler] = SwitchIn_ShowHealthbox;
- }
}
static void OpponentBufferExecCompleted(u32 battler)
@@ -404,12 +359,12 @@ static void OpponentBufferExecCompleted(u32 battler)
{
u8 playerId = GetMultiplayerId();
- PrepareBufferDataTransferLink(battler, 2, 4, &playerId);
+ PrepareBufferDataTransferLink(battler, B_COMM_CONTROLLER_IS_DONE, 4, &playerId);
gBattleResources->bufferA[battler][0] = CONTROLLER_TERMINATOR_NOP;
}
else
{
- gBattleControllerExecFlags &= ~(1u << battler);
+ MarkBattleControllerIdleOnLocal(battler);
}
}
@@ -540,17 +495,17 @@ static void OpponentHandleChooseMove(u32 battler)
{
if (gBattleTypeFlags & BATTLE_TYPE_PALACE)
{
- BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, ChooseMoveAndTargetInBattlePalace(battler));
+ BtlController_EmitTwoReturnValues(battler, B_COMM_TO_ENGINE, 10, ChooseMoveAndTargetInBattlePalace(battler));
}
else if (gAiBattleData->actionFlee)
{
gAiBattleData->actionFlee = FALSE;
- BtlController_EmitTwoReturnValues(battler, BUFFER_B, B_ACTION_RUN, 0);
+ BtlController_EmitTwoReturnValues(battler, B_COMM_TO_ENGINE, B_ACTION_RUN, 0);
}
else if (gAiBattleData->choiceWatch)
{
gAiBattleData->choiceWatch = FALSE;
- BtlController_EmitTwoReturnValues(battler, BUFFER_B, B_ACTION_SAFARI_WATCH_CAREFULLY, 0);
+ BtlController_EmitTwoReturnValues(battler, B_COMM_TO_ENGINE, B_ACTION_SAFARI_WATCH_CAREFULLY, 0);
}
else
{
@@ -571,11 +526,11 @@ static void OpponentHandleChooseMove(u32 battler)
&& !(gBattleStruct->gimmick.usableGimmick[battler] == GIMMICK_Z_MOVE
&& !ShouldUseZMove(battler, gBattlerTarget, moveInfo->moves[chosenMoveIndex])))
{
- BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, (chosenMoveIndex) | (RET_GIMMICK) | (gBattlerTarget << 8));
+ BtlController_EmitTwoReturnValues(battler, B_COMM_TO_ENGINE, 10, (chosenMoveIndex) | (RET_GIMMICK) | (gBattlerTarget << 8));
}
else
{
- BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, (chosenMoveIndex) | (gBattlerTarget << 8));
+ BtlController_EmitTwoReturnValues(battler, B_COMM_TO_ENGINE, 10, (chosenMoveIndex) | (gBattlerTarget << 8));
}
}
OpponentBufferExecCompleted(battler);
@@ -592,7 +547,7 @@ static void OpponentHandleChooseMove(u32 battler)
if (GetBattlerMoveTargetType(battler, move) & MOVE_TARGET_USER)
{
- BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, (chosenMoveIndex) | (battler << 8));
+ BtlController_EmitTwoReturnValues(battler, B_COMM_TO_ENGINE, 10, (chosenMoveIndex) | (battler << 8));
}
else if (IsDoubleBattle())
{
@@ -626,17 +581,17 @@ static void OpponentHandleChooseMove(u32 battler)
}
}
if (isPartnerEnemy && CanTargetBattler(battler, target, move))
- BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, (chosenMoveIndex) | (GetBattlerAtPosition(BATTLE_PARTNER(battler)) << 8));
+ BtlController_EmitTwoReturnValues(battler, B_COMM_TO_ENGINE, 10, (chosenMoveIndex) | (GetBattlerAtPosition(BATTLE_PARTNER(battler)) << 8));
else
- BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, (chosenMoveIndex) | (target << 8));
+ BtlController_EmitTwoReturnValues(battler, B_COMM_TO_ENGINE, 10, (chosenMoveIndex) | (target << 8));
}
else
{
- BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, (chosenMoveIndex) | (target << 8));
+ BtlController_EmitTwoReturnValues(battler, B_COMM_TO_ENGINE, 10, (chosenMoveIndex) | (target << 8));
}
}
else
- BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, (chosenMoveIndex) | (GetBattlerAtPosition(B_POSITION_PLAYER_LEFT) << 8));
+ BtlController_EmitTwoReturnValues(battler, B_COMM_TO_ENGINE, 10, (chosenMoveIndex) | (GetBattlerAtPosition(B_POSITION_PLAYER_LEFT) << 8));
OpponentBufferExecCompleted(battler);
}
@@ -644,20 +599,20 @@ static void OpponentHandleChooseMove(u32 battler)
static void OpponentHandleChooseItem(u32 battler)
{
- BtlController_EmitOneReturnValue(battler, BUFFER_B, gBattleStruct->chosenItem[battler]);
+ BtlController_EmitOneReturnValue(battler, B_COMM_TO_ENGINE, gBattleStruct->chosenItem[battler]);
OpponentBufferExecCompleted(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
@@ -717,7 +672,7 @@ static void OpponentHandleChoosePokemon(u32 battler)
#if TESTING
TestRunner_Battle_CheckSwitch(battler, chosenMonId);
#endif // TESTING
- BtlController_EmitChosenMonReturnValue(battler, BUFFER_B, chosenMonId, NULL);
+ BtlController_EmitChosenMonReturnValue(battler, B_COMM_TO_ENGINE, chosenMonId, NULL);
OpponentBufferExecCompleted(battler);
}
diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c
index 2acf9ebb5f..f437d8ee13 100644
--- a/src/battle_controller_player.c
+++ b/src/battle_controller_player.c
@@ -177,18 +177,18 @@ static void PlayerBufferExecCompleted(u32 battler)
{
u8 playerId = GetMultiplayerId();
- PrepareBufferDataTransferLink(battler, 2, 4, &playerId);
+ PrepareBufferDataTransferLink(battler, B_COMM_CONTROLLER_IS_DONE, 4, &playerId);
gBattleResources->bufferA[battler][0] = CONTROLLER_TERMINATOR_NOP;
}
else
{
- gBattleControllerExecFlags &= ~(1u << battler);
+ MarkBattleControllerIdleOnLocal(battler);
}
}
static void PlayerBufferRunCommand(u32 battler)
{
- if (gBattleControllerExecFlags & (1u << battler))
+ if (IsBattleControllerActiveOnLocal(battler))
{
if (gBattleResources->bufferA[battler][0] < ARRAY_COUNT(sPlayerBufferCommands))
sPlayerBufferCommands[gBattleResources->bufferA[battler][0]](battler);
@@ -310,7 +310,7 @@ static void HandleInputChooseAction(u32 battler)
PlaySE(SE_SELECT);
ArrowsChangeColorLastBallCycle(FALSE);
TryHideLastUsedBall();
- BtlController_EmitTwoReturnValues(battler, BUFFER_B, B_ACTION_THROW_BALL, 0);
+ BtlController_EmitTwoReturnValues(battler, B_COMM_TO_ENGINE, B_ACTION_THROW_BALL, 0);
PlayerBufferExecCompleted(battler);
}
return;
@@ -325,16 +325,16 @@ static void HandleInputChooseAction(u32 battler)
switch (gActionSelectionCursor[battler])
{
case 0: // Top left
- BtlController_EmitTwoReturnValues(battler, BUFFER_B, B_ACTION_USE_MOVE, 0);
+ BtlController_EmitTwoReturnValues(battler, B_COMM_TO_ENGINE, B_ACTION_USE_MOVE, 0);
break;
case 1: // Top right
- BtlController_EmitTwoReturnValues(battler, BUFFER_B, B_ACTION_USE_ITEM, 0);
+ BtlController_EmitTwoReturnValues(battler, B_COMM_TO_ENGINE, B_ACTION_USE_ITEM, 0);
break;
case 2: // Bottom left
- BtlController_EmitTwoReturnValues(battler, BUFFER_B, B_ACTION_SWITCH, 0);
+ BtlController_EmitTwoReturnValues(battler, B_COMM_TO_ENGINE, B_ACTION_SWITCH, 0);
break;
case 3: // Bottom right
- BtlController_EmitTwoReturnValues(battler, BUFFER_B, B_ACTION_RUN, 0);
+ BtlController_EmitTwoReturnValues(battler, B_COMM_TO_ENGINE, B_ACTION_RUN, 0);
break;
}
PlayerBufferExecCompleted(battler);
@@ -387,12 +387,12 @@ static void HandleInputChooseAction(u32 battler)
&& !(gBattleTypeFlags & BATTLE_TYPE_MULTI))
{
// Return item to bag if partner had selected one (if consumable).
- if (gBattleResources->bufferA[battler][1] == B_ACTION_USE_ITEM && ItemId_GetConsumability(itemId))
+ if (gBattleResources->bufferA[battler][1] == B_ACTION_USE_ITEM && GetItemConsumability(itemId))
{
AddBagItem(itemId, 1);
}
PlaySE(SE_SELECT);
- BtlController_EmitTwoReturnValues(battler, BUFFER_B, B_ACTION_CANCEL_PARTNER, 0);
+ BtlController_EmitTwoReturnValues(battler, B_COMM_TO_ENGINE, B_ACTION_CANCEL_PARTNER, 0);
PlayerBufferExecCompleted(battler);
}
else if (B_QUICK_MOVE_CURSOR_TO_RUN)
@@ -412,7 +412,7 @@ static void HandleInputChooseAction(u32 battler)
}
else if (DEBUG_BATTLE_MENU == TRUE && JOY_NEW(SELECT_BUTTON))
{
- BtlController_EmitTwoReturnValues(battler, BUFFER_B, B_ACTION_DEBUG, 0);
+ BtlController_EmitTwoReturnValues(battler, B_COMM_TO_ENGINE, B_ACTION_DEBUG, 0);
PlayerBufferExecCompleted(battler);
}
else if (B_LAST_USED_BALL == TRUE && B_LAST_USED_BALL_CYCLE == FALSE
@@ -420,7 +420,7 @@ static void HandleInputChooseAction(u32 battler)
{
PlaySE(SE_SELECT);
TryHideLastUsedBall();
- BtlController_EmitTwoReturnValues(battler, BUFFER_B, B_ACTION_THROW_BALL, 0);
+ BtlController_EmitTwoReturnValues(battler, B_COMM_TO_ENGINE, B_ACTION_THROW_BALL, 0);
PlayerBufferExecCompleted(battler);
}
}
@@ -449,9 +449,9 @@ void HandleInputChooseTarget(u32 battler)
PlaySE(SE_SELECT);
gSprites[gBattlerSpriteIds[gMultiUsePlayerCursor]].callback = SpriteCB_HideAsMoveTarget;
if (gBattleStruct->gimmick.playerSelect)
- BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, gMoveSelectionCursor[battler] | RET_GIMMICK | (gMultiUsePlayerCursor << 8));
+ BtlController_EmitTwoReturnValues(battler, B_COMM_TO_ENGINE, 10, gMoveSelectionCursor[battler] | RET_GIMMICK | (gMultiUsePlayerCursor << 8));
else
- BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, gMoveSelectionCursor[battler] | (gMultiUsePlayerCursor << 8));
+ BtlController_EmitTwoReturnValues(battler, B_COMM_TO_ENGINE, 10, gMoveSelectionCursor[battler] | (gMultiUsePlayerCursor << 8));
EndBounceEffect(gMultiUsePlayerCursor, BOUNCE_HEALTHBOX);
TryHideLastUsedBall();
HideGimmickTriggerSprite();
@@ -609,9 +609,9 @@ void HandleInputShowEntireFieldTargets(u32 battler)
PlaySE(SE_SELECT);
HideAllTargets();
if (gBattleStruct->gimmick.playerSelect)
- BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, gMoveSelectionCursor[battler] | RET_GIMMICK | (gMultiUsePlayerCursor << 8));
+ BtlController_EmitTwoReturnValues(battler, B_COMM_TO_ENGINE, 10, gMoveSelectionCursor[battler] | RET_GIMMICK | (gMultiUsePlayerCursor << 8));
else
- BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, gMoveSelectionCursor[battler] | (gMultiUsePlayerCursor << 8));
+ BtlController_EmitTwoReturnValues(battler, B_COMM_TO_ENGINE, 10, gMoveSelectionCursor[battler] | (gMultiUsePlayerCursor << 8));
HideGimmickTriggerSprite();
PlayerBufferExecCompleted(battler);
}
@@ -637,9 +637,9 @@ void HandleInputShowTargets(u32 battler)
PlaySE(SE_SELECT);
HideShownTargets(battler);
if (gBattleStruct->gimmick.playerSelect)
- BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, gMoveSelectionCursor[battler] | RET_GIMMICK | (gMultiUsePlayerCursor << 8));
+ BtlController_EmitTwoReturnValues(battler, B_COMM_TO_ENGINE, 10, gMoveSelectionCursor[battler] | RET_GIMMICK | (gMultiUsePlayerCursor << 8));
else
- BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, gMoveSelectionCursor[battler] | (gMultiUsePlayerCursor << 8));
+ BtlController_EmitTwoReturnValues(battler, B_COMM_TO_ENGINE, 10, gMoveSelectionCursor[battler] | (gMultiUsePlayerCursor << 8));
HideGimmickTriggerSprite();
TryHideLastUsedBall();
PlayerBufferExecCompleted(battler);
@@ -741,9 +741,9 @@ void HandleInputChooseMove(u32 battler)
case 0:
default:
if (gBattleStruct->gimmick.playerSelect)
- BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, gMoveSelectionCursor[battler] | RET_GIMMICK | (gMultiUsePlayerCursor << 8));
+ BtlController_EmitTwoReturnValues(battler, B_COMM_TO_ENGINE, 10, gMoveSelectionCursor[battler] | RET_GIMMICK | (gMultiUsePlayerCursor << 8));
else
- BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, gMoveSelectionCursor[battler] | (gMultiUsePlayerCursor << 8));
+ BtlController_EmitTwoReturnValues(battler, B_COMM_TO_ENGINE, 10, gMoveSelectionCursor[battler] | (gMultiUsePlayerCursor << 8));
HideGimmickTriggerSprite();
TryHideLastUsedBall();
PlayerBufferExecCompleted(battler);
@@ -781,7 +781,7 @@ void HandleInputChooseMove(u32 battler)
}
else
{
- BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, 0xFFFF);
+ BtlController_EmitTwoReturnValues(battler, B_COMM_TO_ENGINE, 10, 0xFFFF);
HideGimmickTriggerSprite();
PlayerBufferExecCompleted(battler);
TryToHideMoveInfoWindow();
@@ -1384,10 +1384,8 @@ 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(GetBattlerMon(battler), battler);
PlayerBufferExecCompleted(battler);
}
@@ -1395,16 +1393,8 @@ static void SwitchIn_HandleSoundAndEnd(u32 battler)
static void SwitchIn_TryShinyAnimShowHealthbox(u32 battler)
{
- // Start shiny animation if applicable
- if (!gBattleSpritesDataPtr->healthBoxesData[battler].triedShinyMonAnim
- && !gBattleSpritesDataPtr->healthBoxesData[battler].ballAnimActive)
- TryShinyAnimation(battler, GetBattlerMon(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], GetBattlerMon(battler), HEALTHBOX_ALL);
StartHealthboxSlideIn(battler);
SetHealthboxSpriteVisible(gHealthboxSpriteIds[battler]);
@@ -1467,7 +1457,7 @@ static void Task_GiveExpToMon(u8 taskId)
DynamaxModifyHPLevelUp(mon, battler, oldMaxHP);
gainedExp -= nextLvlExp - currExp;
- BtlController_EmitTwoReturnValues(battler, BUFFER_B, RET_VALUE_LEVELED_UP, (B_LEVEL_UP_NOTIFICATION >= GEN_9) ? 0 : 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)]))
@@ -1553,7 +1543,7 @@ static void Task_GiveExpWithExpBar(u8 taskId)
DynamaxModifyHPLevelUp(mon, battler, oldMaxHP);
gainedExp -= expOnNextLvl - currExp;
- BtlController_EmitTwoReturnValues(battler, BUFFER_B, RET_VALUE_LEVELED_UP, (B_LEVEL_UP_NOTIFICATION >= GEN_9) ? 0 : 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
@@ -1622,9 +1612,9 @@ static void WaitForMonSelection(u32 battler)
if (gMain.callback2 == BattleMainCB2 && !gPaletteFade.active)
{
if (gPartyMenuUseExitCallback == TRUE)
- BtlController_EmitChosenMonReturnValue(battler, BUFFER_B, gSelectedMonPartyId, gBattlePartyCurrentOrder);
+ BtlController_EmitChosenMonReturnValue(battler, B_COMM_TO_ENGINE, gSelectedMonPartyId, gBattlePartyCurrentOrder);
else
- BtlController_EmitChosenMonReturnValue(battler, BUFFER_B, PARTY_SIZE, NULL);
+ BtlController_EmitChosenMonReturnValue(battler, B_COMM_TO_ENGINE, PARTY_SIZE, NULL);
if ((gBattleResources->bufferA[battler][1] & 0xF) == 1)
PrintLinkStandbyMsg();
@@ -1648,7 +1638,7 @@ static void CompleteWhenChoseItem(u32 battler)
{
if (gMain.callback2 == BattleMainCB2 && !gPaletteFade.active)
{
- BtlController_EmitOneReturnValue(battler, BUFFER_B, gSpecialVar_ItemId);
+ BtlController_EmitOneReturnValue(battler, B_COMM_TO_ENGINE, gSpecialVar_ItemId);
PlayerBufferExecCompleted(battler);
}
}
@@ -1675,9 +1665,9 @@ static void PlayerHandleYesNoInput(u32 battler)
PlaySE(SE_SELECT);
if (gMultiUsePlayerCursor != 0)
- BtlController_EmitTwoReturnValues(battler, BUFFER_B, 0xE, 0);
+ BtlController_EmitTwoReturnValues(battler, B_COMM_TO_ENGINE, 0xE, 0);
else
- BtlController_EmitTwoReturnValues(battler, BUFFER_B, 0xD, 0);
+ BtlController_EmitTwoReturnValues(battler, B_COMM_TO_ENGINE, 0xD, 0);
PlayerBufferExecCompleted(battler);
}
@@ -1749,7 +1739,6 @@ static void MoveSelectionDisplayMoveType(u32 battler)
}
else if (effect == EFFECT_IVY_CUDGEL)
{
-
if (speciesId == SPECIES_OGERPON_WELLSPRING || speciesId == SPECIES_OGERPON_WELLSPRING_TERA
|| speciesId == SPECIES_OGERPON_HEARTHFLAME || speciesId == SPECIES_OGERPON_HEARTHFLAME_TERA
|| speciesId == SPECIES_OGERPON_CORNERSTONE || speciesId == SPECIES_OGERPON_CORNERSTONE_TERA)
@@ -1769,7 +1758,7 @@ static void MoveSelectionDisplayMoveType(u32 battler)
else if (P_SHOW_DYNAMIC_TYPES) // Non-vanilla changes to battle UI showing dynamic types
{
struct Pokemon *mon = GetBattlerMon(battler);
- type = CheckDynamicMoveType(mon, move, battler);
+ type = CheckDynamicMoveType(mon, move, battler, MON_IN_BATTLE);
}
end = StringCopy(txtPtr, gTypesInfo[type].name);
@@ -2149,7 +2138,7 @@ static void PlayerChooseMoveInBattlePalace(u32 battler)
if (--gBattleStruct->arenaMindPoints[battler] == 0)
{
gBattlePalaceMoveSelectionRngValue = gRngValue;
- BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, ChooseMoveAndTargetInBattlePalace(battler));
+ BtlController_EmitTwoReturnValues(battler, B_COMM_TO_ENGINE, 10, ChooseMoveAndTargetInBattlePalace(battler));
PlayerBufferExecCompleted(battler);
}
}
@@ -2218,7 +2207,7 @@ static void PlayerHandleChoosePokemon(u32 battler)
&& (gBattleResources->bufferA[battler][1] & 0xF) != PARTY_ACTION_CHOOSE_FAINTED_MON
&& (gBattleResources->bufferA[battler][1] & 0xF) != PARTY_ACTION_SEND_MON_TO_BOX)
{
- BtlController_EmitChosenMonReturnValue(battler, BUFFER_B, gBattlerPartyIndexes[battler] + 1, gBattlePartyCurrentOrder);
+ BtlController_EmitChosenMonReturnValue(battler, B_COMM_TO_ENGINE, gBattlerPartyIndexes[battler] + 1, gBattlePartyCurrentOrder);
PlayerBufferExecCompleted(battler);
}
else
@@ -2317,25 +2306,25 @@ static void PlayerHandlePlayBGM(u32 battler)
static void PlayerHandleTwoReturnValues(u32 battler)
{
- BtlController_EmitTwoReturnValues(battler, BUFFER_B, 0, 0);
+ BtlController_EmitTwoReturnValues(battler, B_COMM_TO_ENGINE, 0, 0);
PlayerBufferExecCompleted(battler);
}
static void PlayerHandleChosenMonReturnValue(u32 battler)
{
- BtlController_EmitChosenMonReturnValue(battler, BUFFER_B, 0, NULL);
+ BtlController_EmitChosenMonReturnValue(battler, B_COMM_TO_ENGINE, 0, NULL);
PlayerBufferExecCompleted(battler);
}
static void PlayerHandleOneReturnValue(u32 battler)
{
- BtlController_EmitOneReturnValue(battler, BUFFER_B, 0);
+ BtlController_EmitOneReturnValue(battler, B_COMM_TO_ENGINE, 0);
PlayerBufferExecCompleted(battler);
}
static void PlayerHandleOneReturnValue_Duplicate(u32 battler)
{
- BtlController_EmitOneReturnValue_Duplicate(battler, BUFFER_B, 0);
+ BtlController_EmitOneReturnValue_Duplicate(battler, B_COMM_TO_ENGINE, 0);
PlayerBufferExecCompleted(battler);
}
@@ -2451,7 +2440,7 @@ 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);
+ u32 moveType = CheckDynamicMoveType(mon, move, battler, MON_IN_BATTLE);
uq4_12_t modifier = CalcTypeEffectivenessMultiplier(move, moveType, battler, targetId, GetBattlerAbility(targetId), FALSE);
if (!ShouldShowTypeEffectiveness(targetId))
@@ -2470,7 +2459,7 @@ static u32 CheckTargetTypeEffectiveness(u32 battler)
{
u32 battlerFoe = BATTLE_OPPOSITE(GetBattlerPosition(battler));
u32 foeEffectiveness = CheckTypeEffectiveness(battlerFoe, battler);
-
+
if (IsDoubleBattle())
{
u32 partnerFoe = BATTLE_PARTNER(battlerFoe);
diff --git a/src/battle_controller_player_partner.c b/src/battle_controller_player_partner.c
index ed3cb9db0b..9929f421cc 100644
--- a/src/battle_controller_player_partner.c
+++ b/src/battle_controller_player_partner.c
@@ -117,7 +117,7 @@ void SetControllerToPlayerPartner(u32 battler)
static void PlayerPartnerBufferRunCommand(u32 battler)
{
- if (gBattleControllerExecFlags & (1u << battler))
+ if (IsBattleControllerActiveOnLocal(battler))
{
if (gBattleResources->bufferA[battler][0] < ARRAY_COUNT(sPlayerPartnerBufferCommands))
sPlayerPartnerBufferCommands[gBattleResources->bufferA[battler][0]](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(GetBattlerMon(battler), battler);
- StartSpriteAnim(&gSprites[gBattlerSpriteIds[battler]], 0);
- UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], GetBattlerMon(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, GetBattlerMon(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)
@@ -265,12 +231,12 @@ static void PlayerPartnerBufferExecCompleted(u32 battler)
{
u8 playerId = GetMultiplayerId();
- PrepareBufferDataTransferLink(battler, 2, 4, &playerId);
+ PrepareBufferDataTransferLink(battler, B_COMM_CONTROLLER_IS_DONE, 4, &playerId);
gBattleResources->bufferA[battler][0] = CONTROLLER_TERMINATOR_NOP;
}
else
{
- gBattleControllerExecFlags &= ~(1u << battler);
+ MarkBattleControllerIdleOnLocal(battler);
}
}
@@ -366,11 +332,11 @@ static void PlayerPartnerHandleChooseMove(u32 battler)
&& !(gBattleStruct->gimmick.usableGimmick[battler] == GIMMICK_Z_MOVE
&& !ShouldUseZMove(battler, gBattlerTarget, moveInfo->moves[chosenMoveIndex])))
{
- BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, (chosenMoveIndex) | (RET_GIMMICK) | (gBattlerTarget << 8));
+ BtlController_EmitTwoReturnValues(battler, B_COMM_TO_ENGINE, 10, (chosenMoveIndex) | (RET_GIMMICK) | (gBattlerTarget << 8));
}
else
{
- BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, (chosenMoveIndex) | (gBattlerTarget << 8));
+ BtlController_EmitTwoReturnValues(battler, B_COMM_TO_ENGINE, 10, (chosenMoveIndex) | (gBattlerTarget << 8));
}
PlayerPartnerBufferExecCompleted(battler);
@@ -413,7 +379,7 @@ static void PlayerPartnerHandleChoosePokemon(u32 battler)
gBattleStruct->AI_monToSwitchIntoId[battler] = PARTY_SIZE;
gBattleStruct->monToSwitchIntoId[battler] = chosenMonId;
}
- BtlController_EmitChosenMonReturnValue(battler, BUFFER_B, chosenMonId, NULL);
+ BtlController_EmitChosenMonReturnValue(battler, B_COMM_TO_ENGINE, chosenMonId, NULL);
PlayerPartnerBufferExecCompleted(battler);
}
diff --git a/src/battle_controller_recorded_opponent.c b/src/battle_controller_recorded_opponent.c
index 7cfd74c057..944cf6e072 100644
--- a/src/battle_controller_recorded_opponent.c
+++ b/src/battle_controller_recorded_opponent.c
@@ -120,7 +120,7 @@ void SetControllerToRecordedOpponent(u32 battler)
static void RecordedOpponentBufferRunCommand(u32 battler)
{
- if (gBattleControllerExecFlags & (1u << battler))
+ if (IsBattleControllerActiveOnLocal(battler))
{
if (gBattleResources->bufferA[battler][0] < ARRAY_COUNT(sRecordedOpponentBufferCommands))
sRecordedOpponentBufferCommands[gBattleResources->bufferA[battler][0]](battler);
@@ -141,7 +141,7 @@ static void RecordedOpponentBufferExecCompleted(u32 battler)
}
else
{
- gBattleControllerExecFlags &= ~(1u << battler);
+ MarkBattleControllerIdleOnLocal(battler);
}
}
@@ -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(GetBattlerMon(battler), MON_DATA_SPECIES));
- }
- }
-}
-
static void Intro_TryShinyAnimShowHealthbox(u32 battler)
{
bool32 bgmRestored = FALSE;
@@ -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, GetBattlerMon(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], GetBattlerMon(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, GetBattlerMon(battler));
-
- if (gSprites[gBattleControllerData[battler]].callback == SpriteCallbackDummy
- && !gBattleSpritesDataPtr->healthBoxesData[battler].ballAnimActive)
- {
- DestroySprite(&gSprites[gBattleControllerData[battler]]);
- SetBattlerShadowSpriteCallback(battler, GetMonData(GetBattlerMon(battler), MON_DATA_SPECIES));
+ if (SwitchIn_TryShinyAnimUtil(battler))
gBattlerControllerFuncs[battler] = SwitchIn_ShowHealthbox;
- }
}
static void RecordedOpponentHandleLoadMonSprite(u32 battler)
@@ -451,7 +383,7 @@ static void RecordedOpponentHandlePrintString(u32 battler)
static void RecordedOpponentHandleChooseAction(u32 battler)
{
- BtlController_EmitTwoReturnValues(battler, BUFFER_B, RecordedBattle_GetBattlerAction(RECORDED_ACTION_TYPE, battler), 0);
+ BtlController_EmitTwoReturnValues(battler, B_COMM_TO_ENGINE, RecordedBattle_GetBattlerAction(RECORDED_ACTION_TYPE, battler), 0);
RecordedOpponentBufferExecCompleted(battler);
}
@@ -459,13 +391,13 @@ static void RecordedOpponentHandleChooseMove(u32 battler)
{
if (gBattleTypeFlags & BATTLE_TYPE_PALACE)
{
- BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, ChooseMoveAndTargetInBattlePalace(battler));
+ BtlController_EmitTwoReturnValues(battler, B_COMM_TO_ENGINE, 10, ChooseMoveAndTargetInBattlePalace(battler));
}
else
{
u8 moveId = RecordedBattle_GetBattlerAction(RECORDED_MOVE_SLOT, battler);
u8 target = RecordedBattle_GetBattlerAction(RECORDED_MOVE_TARGET, battler);
- BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, moveId | (target << 8));
+ BtlController_EmitTwoReturnValues(battler, B_COMM_TO_ENGINE, 10, moveId | (target << 8));
}
RecordedOpponentBufferExecCompleted(battler);
@@ -478,7 +410,7 @@ static void RecordedOpponentHandleChooseItem(u32 battler)
gBattleStruct->chosenItem[battler] = (byte1 << 8) | byte2;
gBattleStruct->itemPartyIndex[battler] = RecordedBattle_GetBattlerAction(RECORDED_ITEM_TARGET, battler);
gBattleStruct->itemMoveIndex[battler] = RecordedBattle_GetBattlerAction(RECORDED_ITEM_MOVE, battler);
- BtlController_EmitOneReturnValue(battler, BUFFER_B, gBattleStruct->chosenItem[battler]);
+ BtlController_EmitOneReturnValue(battler, B_COMM_TO_ENGINE, gBattleStruct->chosenItem[battler]);
RecordedOpponentBufferExecCompleted(battler);
}
@@ -486,7 +418,7 @@ static void RecordedOpponentHandleChoosePokemon(u32 battler)
{
gBattleStruct->monToSwitchIntoId[battler] = RecordedBattle_GetBattlerAction(RECORDED_PARTY_INDEX, battler);
gSelectedMonPartyId = gBattleStruct->monToSwitchIntoId[battler]; // Revival Blessing
- BtlController_EmitChosenMonReturnValue(battler, BUFFER_B, gBattleStruct->monToSwitchIntoId[battler], NULL);
+ BtlController_EmitChosenMonReturnValue(battler, B_COMM_TO_ENGINE, gBattleStruct->monToSwitchIntoId[battler], NULL);
RecordedOpponentBufferExecCompleted(battler);
}
diff --git a/src/battle_controller_recorded_player.c b/src/battle_controller_recorded_player.c
index bf7b6c03d4..a3032db1a8 100644
--- a/src/battle_controller_recorded_player.c
+++ b/src/battle_controller_recorded_player.c
@@ -117,7 +117,7 @@ void SetControllerToRecordedPlayer(u32 battler)
static void RecordedPlayerBufferRunCommand(u32 battler)
{
- if (gBattleControllerExecFlags & (1u << battler))
+ if (IsBattleControllerActiveOnLocal(battler))
{
if (gBattleResources->bufferA[battler][0] < ARRAY_COUNT(sRecordedPlayerBufferCommands))
sRecordedPlayerBufferCommands[gBattleResources->bufferA[battler][0]](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(GetBattlerMon(battler), battler);
- StartSpriteAnim(&gSprites[gBattlerSpriteIds[battler]], 0);
- UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], GetBattlerMon(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, GetBattlerMon(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)
@@ -342,12 +308,12 @@ static void RecordedPlayerBufferExecCompleted(u32 battler)
{
u8 playerId = GetMultiplayerId();
- PrepareBufferDataTransferLink(battler, 2, 4, &playerId);
+ PrepareBufferDataTransferLink(battler, B_COMM_CONTROLLER_IS_DONE, 4, &playerId);
gBattleResources->bufferA[battler][0] = CONTROLLER_TERMINATOR_NOP;
}
else
{
- gBattleControllerExecFlags &= ~(1u << battler);
+ MarkBattleControllerIdleOnLocal(battler);
}
}
@@ -430,7 +396,7 @@ static void ChooseActionInBattlePalace(u32 battler)
{
if (gBattleCommunication[4] >= gBattlersCount / 2)
{
- BtlController_EmitTwoReturnValues(battler, BUFFER_B, RecordedBattle_GetBattlerAction(RECORDED_BATTLE_PALACE_ACTION, battler), 0);
+ BtlController_EmitTwoReturnValues(battler, B_COMM_TO_ENGINE, RecordedBattle_GetBattlerAction(RECORDED_BATTLE_PALACE_ACTION, battler), 0);
RecordedPlayerBufferExecCompleted(battler);
}
}
@@ -443,7 +409,7 @@ static void RecordedPlayerHandleChooseAction(u32 battler)
}
else
{
- BtlController_EmitTwoReturnValues(battler, BUFFER_B, RecordedBattle_GetBattlerAction(RECORDED_ACTION_TYPE, battler), 0);
+ BtlController_EmitTwoReturnValues(battler, B_COMM_TO_ENGINE, RecordedBattle_GetBattlerAction(RECORDED_ACTION_TYPE, battler), 0);
RecordedPlayerBufferExecCompleted(battler);
}
}
@@ -452,13 +418,13 @@ static void RecordedPlayerHandleChooseMove(u32 battler)
{
if (gBattleTypeFlags & BATTLE_TYPE_PALACE)
{
- BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, ChooseMoveAndTargetInBattlePalace(battler));
+ BtlController_EmitTwoReturnValues(battler, B_COMM_TO_ENGINE, 10, ChooseMoveAndTargetInBattlePalace(battler));
}
else
{
- u8 moveId = RecordedBattle_GetBattlerAction(RECORDED_MOVE_SLOT, battler);
+ u8 moveIndex = RecordedBattle_GetBattlerAction(RECORDED_MOVE_SLOT, battler);
u8 target = RecordedBattle_GetBattlerAction(RECORDED_MOVE_TARGET, battler);
- BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, moveId | (target << 8));
+ BtlController_EmitTwoReturnValues(battler, B_COMM_TO_ENGINE, 10, moveIndex | (target << 8));
}
RecordedPlayerBufferExecCompleted(battler);
@@ -471,7 +437,7 @@ static void RecordedPlayerHandleChooseItem(u32 battler)
gBattleStruct->chosenItem[battler] = (byte1 << 8) | byte2;
gBattleStruct->itemPartyIndex[battler] = RecordedBattle_GetBattlerAction(RECORDED_ITEM_TARGET, battler);
gBattleStruct->itemMoveIndex[battler] = RecordedBattle_GetBattlerAction(RECORDED_ITEM_MOVE, battler);
- BtlController_EmitOneReturnValue(battler, BUFFER_B, gBattleStruct->chosenItem[battler]);
+ BtlController_EmitOneReturnValue(battler, B_COMM_TO_ENGINE, gBattleStruct->chosenItem[battler]);
RecordedPlayerBufferExecCompleted(battler);
}
@@ -479,7 +445,7 @@ static void RecordedPlayerHandleChoosePokemon(u32 battler)
{
gBattleStruct->monToSwitchIntoId[battler] = RecordedBattle_GetBattlerAction(RECORDED_PARTY_INDEX, battler);
gSelectedMonPartyId = gBattleStruct->monToSwitchIntoId[battler]; // Revival Blessing
- BtlController_EmitChosenMonReturnValue(battler, BUFFER_B, gBattleStruct->monToSwitchIntoId[battler], NULL);
+ BtlController_EmitChosenMonReturnValue(battler, B_COMM_TO_ENGINE, gBattleStruct->monToSwitchIntoId[battler], NULL);
RecordedPlayerBufferExecCompleted(battler);
}
diff --git a/src/battle_controller_safari.c b/src/battle_controller_safari.c
index 2e097a11b6..4a1fc3888c 100644
--- a/src/battle_controller_safari.c
+++ b/src/battle_controller_safari.c
@@ -109,7 +109,7 @@ void SetControllerToSafari(u32 battler)
static void SafariBufferRunCommand(u32 battler)
{
- if (gBattleControllerExecFlags & (1u << battler))
+ if (IsBattleControllerActiveOnLocal(battler))
{
if (gBattleResources->bufferA[battler][0] < ARRAY_COUNT(sSafariBufferCommands))
sSafariBufferCommands[gBattleResources->bufferA[battler][0]](battler);
@@ -127,16 +127,16 @@ static void HandleInputChooseAction(u32 battler)
switch (gActionSelectionCursor[battler])
{
case 0:
- BtlController_EmitTwoReturnValues(battler, BUFFER_B, B_ACTION_SAFARI_BALL, 0);
+ BtlController_EmitTwoReturnValues(battler, B_COMM_TO_ENGINE, B_ACTION_SAFARI_BALL, 0);
break;
case 1:
- BtlController_EmitTwoReturnValues(battler, BUFFER_B, B_ACTION_SAFARI_POKEBLOCK, 0);
+ BtlController_EmitTwoReturnValues(battler, B_COMM_TO_ENGINE, B_ACTION_SAFARI_POKEBLOCK, 0);
break;
case 2:
- BtlController_EmitTwoReturnValues(battler, BUFFER_B, B_ACTION_SAFARI_GO_NEAR, 0);
+ BtlController_EmitTwoReturnValues(battler, B_COMM_TO_ENGINE, B_ACTION_SAFARI_GO_NEAR, 0);
break;
case 3:
- BtlController_EmitTwoReturnValues(battler, BUFFER_B, B_ACTION_SAFARI_RUN, 0);
+ BtlController_EmitTwoReturnValues(battler, B_COMM_TO_ENGINE, B_ACTION_SAFARI_RUN, 0);
break;
}
SafariBufferExecCompleted(battler);
@@ -220,7 +220,7 @@ static void CompleteWhenChosePokeblock(u32 battler)
{
if (gMain.callback2 == BattleMainCB2 && !gPaletteFade.active)
{
- BtlController_EmitOneReturnValue(battler, BUFFER_B, gSpecialVar_ItemId);
+ BtlController_EmitOneReturnValue(battler, B_COMM_TO_ENGINE, gSpecialVar_ItemId);
SafariBufferExecCompleted(battler);
}
}
@@ -232,12 +232,12 @@ static void SafariBufferExecCompleted(u32 battler)
{
u8 playerId = GetMultiplayerId();
- PrepareBufferDataTransferLink(battler, 2, 4, &playerId);
+ PrepareBufferDataTransferLink(battler, B_COMM_CONTROLLER_IS_DONE, 4, &playerId);
gBattleResources->bufferA[battler][0] = CONTROLLER_TERMINATOR_NOP;
}
else
{
- gBattleControllerExecFlags &= ~(1u << battler);
+ MarkBattleControllerIdleOnLocal(battler);
}
}
diff --git a/src/battle_controller_wally.c b/src/battle_controller_wally.c
index cc929de786..6cba0fc3e7 100644
--- a/src/battle_controller_wally.c
+++ b/src/battle_controller_wally.c
@@ -125,7 +125,7 @@ void SetControllerToWally(u32 battler)
static void WallyBufferRunCommand(u32 battler)
{
- if (gBattleControllerExecFlags & (1u << battler))
+ if (IsBattleControllerActiveOnLocal(battler))
{
if (gBattleResources->bufferA[battler][0] < ARRAY_COUNT(sWallyBufferCommands))
sWallyBufferCommands[gBattleResources->bufferA[battler][0]](battler);
@@ -145,7 +145,7 @@ static void WallyHandleActions(u32 battler)
if (--gBattleStruct->wallyWaitFrames == 0)
{
PlaySE(SE_SELECT);
- BtlController_EmitTwoReturnValues(battler, BUFFER_B, B_ACTION_USE_MOVE, 0);
+ BtlController_EmitTwoReturnValues(battler, B_COMM_TO_ENGINE, B_ACTION_USE_MOVE, 0);
WallyBufferExecCompleted(battler);
gBattleStruct->wallyBattleState++;
gBattleStruct->wallyMovesState = 0;
@@ -156,7 +156,7 @@ static void WallyHandleActions(u32 battler)
if (--gBattleStruct->wallyWaitFrames == 0)
{
PlaySE(SE_SELECT);
- BtlController_EmitTwoReturnValues(battler, BUFFER_B, B_ACTION_USE_MOVE, 0);
+ BtlController_EmitTwoReturnValues(battler, B_COMM_TO_ENGINE, B_ACTION_USE_MOVE, 0);
WallyBufferExecCompleted(battler);
gBattleStruct->wallyBattleState++;
gBattleStruct->wallyMovesState = 0;
@@ -166,7 +166,7 @@ static void WallyHandleActions(u32 battler)
case 3:
if (--gBattleStruct->wallyWaitFrames == 0)
{
- BtlController_EmitTwoReturnValues(battler, BUFFER_B, B_ACTION_WALLY_THROW, 0);
+ BtlController_EmitTwoReturnValues(battler, B_COMM_TO_ENGINE, B_ACTION_WALLY_THROW, 0);
WallyBufferExecCompleted(battler);
gBattleStruct->wallyBattleState++;
gBattleStruct->wallyMovesState = 0;
@@ -187,7 +187,7 @@ static void WallyHandleActions(u32 battler)
if (--gBattleStruct->wallyWaitFrames == 0)
{
PlaySE(SE_SELECT);
- BtlController_EmitTwoReturnValues(battler, BUFFER_B, B_ACTION_USE_ITEM, 0);
+ BtlController_EmitTwoReturnValues(battler, B_COMM_TO_ENGINE, B_ACTION_USE_ITEM, 0);
WallyBufferExecCompleted(battler);
}
break;
@@ -209,7 +209,7 @@ static void CompleteOnChosenItem(u32 battler)
{
if (gMain.callback2 == BattleMainCB2 && !gPaletteFade.active)
{
- BtlController_EmitOneReturnValue(battler, BUFFER_B, gSpecialVar_ItemId);
+ BtlController_EmitOneReturnValue(battler, B_COMM_TO_ENGINE, gSpecialVar_ItemId);
WallyBufferExecCompleted(battler);
}
}
@@ -279,12 +279,12 @@ static void WallyBufferExecCompleted(u32 battler)
{
u8 playerId = GetMultiplayerId();
- PrepareBufferDataTransferLink(battler, 2, 4, &playerId);
+ PrepareBufferDataTransferLink(battler, B_COMM_CONTROLLER_IS_DONE, 4, &playerId);
gBattleResources->bufferA[battler][0] = CONTROLLER_TERMINATOR_NOP;
}
else
{
- gBattleControllerExecFlags &= ~(1u << battler);
+ MarkBattleControllerIdleOnLocal(battler);
}
}
@@ -378,7 +378,7 @@ static void WallyHandleChooseMove(u32 battler)
if (--gBattleStruct->wallyMoveFrames == 0)
{
PlaySE(SE_SELECT);
- BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, 0x100);
+ BtlController_EmitTwoReturnValues(battler, B_COMM_TO_ENGINE, 10, 0x100);
WallyBufferExecCompleted(battler);
}
break;
diff --git a/src/battle_controllers.c b/src/battle_controllers.c
index ed6a95ef8d..4faec49613 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"
@@ -131,31 +132,31 @@ static void InitSinglePlayerBtlControllers(void)
if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
{
- gBattlerControllerFuncs[0] = SetControllerToRecordedPlayer;
- gBattlerPositions[0] = B_POSITION_PLAYER_LEFT;
+ gBattlerControllerFuncs[B_BATTLER_0] = SetControllerToRecordedPlayer;
+ gBattlerPositions[B_BATTLER_0] = B_POSITION_PLAYER_LEFT;
- gBattlerControllerFuncs[1] = SetControllerToOpponent;
- gBattlerPositions[1] = B_POSITION_OPPONENT_LEFT;
+ gBattlerControllerFuncs[B_BATTLER_1] = SetControllerToOpponent;
+ gBattlerPositions[B_BATTLER_1] = B_POSITION_OPPONENT_LEFT;
- gBattlerControllerFuncs[2] = SetControllerToPlayerPartner;
- gBattlerPositions[2] = B_POSITION_PLAYER_RIGHT;
+ gBattlerControllerFuncs[B_BATTLER_2] = SetControllerToPlayerPartner;
+ gBattlerPositions[B_BATTLER_2] = B_POSITION_PLAYER_RIGHT;
- gBattlerControllerFuncs[3] = SetControllerToOpponent;
- gBattlerPositions[3] = B_POSITION_OPPONENT_RIGHT;
+ gBattlerControllerFuncs[B_BATTLER_3] = SetControllerToOpponent;
+ gBattlerPositions[B_BATTLER_3] = B_POSITION_OPPONENT_RIGHT;
}
else
{
- gBattlerControllerFuncs[0] = SetControllerToPlayer;
- gBattlerPositions[0] = B_POSITION_PLAYER_LEFT;
+ gBattlerControllerFuncs[B_BATTLER_0] = SetControllerToPlayer;
+ gBattlerPositions[B_BATTLER_0] = B_POSITION_PLAYER_LEFT;
- gBattlerControllerFuncs[1] = SetControllerToOpponent;
- gBattlerPositions[1] = B_POSITION_OPPONENT_LEFT;
+ gBattlerControllerFuncs[B_BATTLER_1] = SetControllerToOpponent;
+ gBattlerPositions[B_BATTLER_1] = B_POSITION_OPPONENT_LEFT;
- gBattlerControllerFuncs[2] = SetControllerToPlayerPartner;
- gBattlerPositions[2] = B_POSITION_PLAYER_RIGHT;
+ gBattlerControllerFuncs[B_BATTLER_2] = SetControllerToPlayerPartner;
+ gBattlerPositions[B_BATTLER_2] = B_POSITION_PLAYER_RIGHT;
- gBattlerControllerFuncs[3] = SetControllerToOpponent;
- gBattlerPositions[3] = B_POSITION_OPPONENT_RIGHT;
+ gBattlerControllerFuncs[B_BATTLER_3] = SetControllerToOpponent;
+ gBattlerPositions[B_BATTLER_3] = B_POSITION_OPPONENT_RIGHT;
}
gBattlersCount = MAX_BATTLERS_COUNT;
@@ -183,18 +184,18 @@ static void InitSinglePlayerBtlControllers(void)
gBattleMainFunc = BeginBattleIntro;
if (gBattleTypeFlags & BATTLE_TYPE_SAFARI)
- gBattlerControllerFuncs[0] = SetControllerToSafari;
+ gBattlerControllerFuncs[B_BATTLER_0] = SetControllerToSafari;
else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL)
- gBattlerControllerFuncs[0] = SetControllerToWally;
+ gBattlerControllerFuncs[B_BATTLER_0] = SetControllerToWally;
else if (IsAiVsAiBattle())
- gBattlerControllerFuncs[0] = SetControllerToPlayerPartner;
+ gBattlerControllerFuncs[B_BATTLER_0] = SetControllerToPlayerPartner;
else
- gBattlerControllerFuncs[0] = SetControllerToPlayer;
+ gBattlerControllerFuncs[B_BATTLER_0] = SetControllerToPlayer;
- gBattlerPositions[0] = B_POSITION_PLAYER_LEFT;
+ gBattlerPositions[B_BATTLER_0] = B_POSITION_PLAYER_LEFT;
- gBattlerControllerFuncs[1] = SetControllerToOpponent;
- gBattlerPositions[1] = B_POSITION_OPPONENT_LEFT;
+ gBattlerControllerFuncs[B_BATTLER_1] = SetControllerToOpponent;
+ gBattlerPositions[B_BATTLER_1] = B_POSITION_OPPONENT_LEFT;
gBattlersCount = 2;
@@ -206,32 +207,32 @@ static void InitSinglePlayerBtlControllers(void)
{
gBattleMainFunc = BeginBattleIntro;
- gBattlerControllerFuncs[0] = SetControllerToRecordedPlayer;
- gBattlerPositions[0] = B_POSITION_PLAYER_LEFT;
+ gBattlerControllerFuncs[B_BATTLER_0] = SetControllerToRecordedPlayer;
+ gBattlerPositions[B_BATTLER_0] = B_POSITION_PLAYER_LEFT;
- gBattlerControllerFuncs[1] = SetControllerToRecordedOpponent;
- gBattlerPositions[1] = B_POSITION_OPPONENT_LEFT;
+ gBattlerControllerFuncs[B_BATTLER_1] = SetControllerToRecordedOpponent;
+ gBattlerPositions[B_BATTLER_1] = B_POSITION_OPPONENT_LEFT;
gBattlersCount = 2;
}
else // see how the banks are switched
{
- gBattlerControllerFuncs[1] = SetControllerToRecordedPlayer;
- gBattlerPositions[1] = B_POSITION_PLAYER_LEFT;
+ gBattlerControllerFuncs[B_BATTLER_1] = SetControllerToRecordedPlayer;
+ gBattlerPositions[B_BATTLER_1] = B_POSITION_PLAYER_LEFT;
- gBattlerControllerFuncs[0] = SetControllerToRecordedOpponent;
- gBattlerPositions[0] = B_POSITION_OPPONENT_LEFT;
+ gBattlerControllerFuncs[B_BATTLER_0] = SetControllerToRecordedOpponent;
+ gBattlerPositions[B_BATTLER_0] = B_POSITION_OPPONENT_LEFT;
gBattlersCount = 2;
}
}
else
{
- gBattlerControllerFuncs[0] = SetControllerToRecordedPlayer;
- gBattlerPositions[0] = B_POSITION_PLAYER_LEFT;
+ gBattlerControllerFuncs[B_BATTLER_0] = SetControllerToRecordedPlayer;
+ gBattlerPositions[B_BATTLER_0] = B_POSITION_PLAYER_LEFT;
- gBattlerControllerFuncs[1] = SetControllerToOpponent;
- gBattlerPositions[1] = B_POSITION_OPPONENT_LEFT;
+ gBattlerControllerFuncs[B_BATTLER_1] = SetControllerToOpponent;
+ gBattlerPositions[B_BATTLER_1] = B_POSITION_OPPONENT_LEFT;
}
}
}
@@ -240,22 +241,22 @@ static void InitSinglePlayerBtlControllers(void)
gBattleMainFunc = BeginBattleIntro;
if (IsAiVsAiBattle())
- gBattlerControllerFuncs[0] = SetControllerToPlayerPartner;
+ gBattlerControllerFuncs[B_BATTLER_0] = SetControllerToPlayerPartner;
else
- gBattlerControllerFuncs[0] = SetControllerToPlayer;
- gBattlerPositions[0] = B_POSITION_PLAYER_LEFT;
+ gBattlerControllerFuncs[B_BATTLER_0] = SetControllerToPlayer;
+ gBattlerPositions[B_BATTLER_0] = B_POSITION_PLAYER_LEFT;
- gBattlerControllerFuncs[1] = SetControllerToOpponent;
- gBattlerPositions[1] = B_POSITION_OPPONENT_LEFT;
+ gBattlerControllerFuncs[B_BATTLER_1] = SetControllerToOpponent;
+ gBattlerPositions[B_BATTLER_1] = B_POSITION_OPPONENT_LEFT;
if (IsAiVsAiBattle())
- gBattlerControllerFuncs[2] = SetControllerToPlayerPartner;
+ gBattlerControllerFuncs[B_BATTLER_2] = SetControllerToPlayerPartner;
else
- gBattlerControllerFuncs[2] = SetControllerToPlayer;
- gBattlerPositions[2] = B_POSITION_PLAYER_RIGHT;
+ gBattlerControllerFuncs[B_BATTLER_2] = SetControllerToPlayer;
+ gBattlerPositions[B_BATTLER_2] = B_POSITION_PLAYER_RIGHT;
- gBattlerControllerFuncs[3] = SetControllerToOpponent;
- gBattlerPositions[3] = B_POSITION_OPPONENT_RIGHT;
+ gBattlerControllerFuncs[B_BATTLER_3] = SetControllerToOpponent;
+ gBattlerPositions[B_BATTLER_3] = B_POSITION_OPPONENT_RIGHT;
gBattlersCount = MAX_BATTLERS_COUNT;
@@ -265,17 +266,17 @@ static void InitSinglePlayerBtlControllers(void)
{
gBattleMainFunc = BeginBattleIntro;
- gBattlerControllerFuncs[0] = SetControllerToRecordedPlayer;
- gBattlerPositions[0] = B_POSITION_PLAYER_LEFT;
+ gBattlerControllerFuncs[B_BATTLER_0] = SetControllerToRecordedPlayer;
+ gBattlerPositions[B_BATTLER_0] = B_POSITION_PLAYER_LEFT;
- gBattlerControllerFuncs[1] = SetControllerToOpponent;
- gBattlerPositions[1] = B_POSITION_OPPONENT_LEFT;
+ gBattlerControllerFuncs[B_BATTLER_1] = SetControllerToOpponent;
+ gBattlerPositions[B_BATTLER_1] = B_POSITION_OPPONENT_LEFT;
- gBattlerControllerFuncs[2] = SetControllerToRecordedPlayer;
- gBattlerPositions[2] = B_POSITION_PLAYER_RIGHT;
+ gBattlerControllerFuncs[B_BATTLER_2] = SetControllerToRecordedPlayer;
+ gBattlerPositions[B_BATTLER_2] = B_POSITION_PLAYER_RIGHT;
- gBattlerControllerFuncs[3] = SetControllerToOpponent;
- gBattlerPositions[3] = B_POSITION_OPPONENT_RIGHT;
+ gBattlerControllerFuncs[B_BATTLER_3] = SetControllerToOpponent;
+ gBattlerPositions[B_BATTLER_3] = B_POSITION_OPPONENT_RIGHT;
gBattlersCount = MAX_BATTLERS_COUNT;
@@ -363,52 +364,52 @@ static void InitSinglePlayerBtlControllers(void)
}
else if (gBattleTypeFlags & BATTLE_TYPE_IS_MASTER)
{
- gBattlerControllerFuncs[0] = SetControllerToRecordedPlayer;
- gBattlerPositions[0] = B_POSITION_PLAYER_LEFT;
+ gBattlerControllerFuncs[B_BATTLER_0] = SetControllerToRecordedPlayer;
+ gBattlerPositions[B_BATTLER_0] = B_POSITION_PLAYER_LEFT;
- gBattlerControllerFuncs[2] = SetControllerToRecordedPlayer;
- gBattlerPositions[2] = B_POSITION_PLAYER_RIGHT;
+ gBattlerControllerFuncs[B_BATTLER_2] = SetControllerToRecordedPlayer;
+ gBattlerPositions[B_BATTLER_2] = B_POSITION_PLAYER_RIGHT;
if (gBattleTypeFlags & BATTLE_TYPE_RECORDED_LINK)
{
- gBattlerControllerFuncs[1] = SetControllerToRecordedOpponent;
- gBattlerPositions[1] = B_POSITION_OPPONENT_LEFT;
+ gBattlerControllerFuncs[B_BATTLER_1] = SetControllerToRecordedOpponent;
+ gBattlerPositions[B_BATTLER_1] = B_POSITION_OPPONENT_LEFT;
- gBattlerControllerFuncs[3] = SetControllerToRecordedOpponent;
- gBattlerPositions[3] = B_POSITION_OPPONENT_RIGHT;
+ gBattlerControllerFuncs[B_BATTLER_3] = SetControllerToRecordedOpponent;
+ gBattlerPositions[B_BATTLER_3] = B_POSITION_OPPONENT_RIGHT;
}
else
{
- gBattlerControllerFuncs[1] = SetControllerToOpponent;
- gBattlerPositions[1] = B_POSITION_OPPONENT_LEFT;
+ gBattlerControllerFuncs[B_BATTLER_1] = SetControllerToOpponent;
+ gBattlerPositions[B_BATTLER_1] = B_POSITION_OPPONENT_LEFT;
- gBattlerControllerFuncs[3] = SetControllerToOpponent;
- gBattlerPositions[3] = B_POSITION_OPPONENT_RIGHT;
+ gBattlerControllerFuncs[B_BATTLER_3] = SetControllerToOpponent;
+ gBattlerPositions[B_BATTLER_3] = B_POSITION_OPPONENT_RIGHT;
}
}
else
{
- gBattlerControllerFuncs[1] = SetControllerToRecordedPlayer;
- gBattlerPositions[1] = B_POSITION_PLAYER_LEFT;
+ gBattlerControllerFuncs[B_BATTLER_1] = SetControllerToRecordedPlayer;
+ gBattlerPositions[B_BATTLER_1] = B_POSITION_PLAYER_LEFT;
- gBattlerControllerFuncs[3] = SetControllerToRecordedPlayer;
- gBattlerPositions[3] = B_POSITION_PLAYER_RIGHT;
+ gBattlerControllerFuncs[B_BATTLER_3] = SetControllerToRecordedPlayer;
+ gBattlerPositions[B_BATTLER_3] = B_POSITION_PLAYER_RIGHT;
if (gBattleTypeFlags & BATTLE_TYPE_RECORDED_LINK)
{
- gBattlerControllerFuncs[0] = SetControllerToRecordedOpponent;
- gBattlerPositions[0] = B_POSITION_OPPONENT_LEFT;
+ gBattlerControllerFuncs[B_BATTLER_0] = SetControllerToRecordedOpponent;
+ gBattlerPositions[B_BATTLER_0] = B_POSITION_OPPONENT_LEFT;
- gBattlerControllerFuncs[2] = SetControllerToRecordedOpponent;
- gBattlerPositions[2] = B_POSITION_OPPONENT_RIGHT;
+ gBattlerControllerFuncs[B_BATTLER_2] = SetControllerToRecordedOpponent;
+ gBattlerPositions[B_BATTLER_2] = B_POSITION_OPPONENT_RIGHT;
}
else
{
- gBattlerControllerFuncs[0] = SetControllerToOpponent;
- gBattlerPositions[0] = B_POSITION_OPPONENT_LEFT;
+ gBattlerControllerFuncs[B_BATTLER_0] = SetControllerToOpponent;
+ gBattlerPositions[B_BATTLER_0] = B_POSITION_OPPONENT_LEFT;
- gBattlerControllerFuncs[2] = SetControllerToOpponent;
- gBattlerPositions[2] = B_POSITION_OPPONENT_RIGHT;
+ gBattlerControllerFuncs[B_BATTLER_2] = SetControllerToOpponent;
+ gBattlerPositions[B_BATTLER_2] = B_POSITION_OPPONENT_RIGHT;
}
}
}
@@ -426,21 +427,21 @@ static void InitLinkBtlControllers(void)
{
gBattleMainFunc = BeginBattleIntro;
- gBattlerControllerFuncs[0] = SetControllerToPlayer;
- gBattlerPositions[0] = B_POSITION_PLAYER_LEFT;
+ gBattlerControllerFuncs[B_BATTLER_0] = SetControllerToPlayer;
+ gBattlerPositions[B_BATTLER_0] = B_POSITION_PLAYER_LEFT;
- gBattlerControllerFuncs[1] = SetControllerToLinkOpponent;
- gBattlerPositions[1] = B_POSITION_OPPONENT_LEFT;
+ gBattlerControllerFuncs[B_BATTLER_1] = SetControllerToLinkOpponent;
+ gBattlerPositions[B_BATTLER_1] = B_POSITION_OPPONENT_LEFT;
gBattlersCount = 2;
}
else
{
- gBattlerControllerFuncs[1] = SetControllerToPlayer;
- gBattlerPositions[1] = B_POSITION_PLAYER_LEFT;
+ gBattlerControllerFuncs[B_BATTLER_1] = SetControllerToPlayer;
+ gBattlerPositions[B_BATTLER_1] = B_POSITION_PLAYER_LEFT;
- gBattlerControllerFuncs[0] = SetControllerToLinkOpponent;
- gBattlerPositions[0] = B_POSITION_OPPONENT_LEFT;
+ gBattlerControllerFuncs[B_BATTLER_0] = SetControllerToLinkOpponent;
+ gBattlerPositions[B_BATTLER_0] = B_POSITION_OPPONENT_LEFT;
gBattlersCount = 2;
}
@@ -451,33 +452,33 @@ static void InitLinkBtlControllers(void)
{
gBattleMainFunc = BeginBattleIntro;
- gBattlerControllerFuncs[0] = SetControllerToPlayer;
- gBattlerPositions[0] = B_POSITION_PLAYER_LEFT;
+ gBattlerControllerFuncs[B_BATTLER_0] = SetControllerToPlayer;
+ gBattlerPositions[B_BATTLER_0] = B_POSITION_PLAYER_LEFT;
- gBattlerControllerFuncs[1] = SetControllerToLinkOpponent;
- gBattlerPositions[1] = B_POSITION_OPPONENT_LEFT;
+ gBattlerControllerFuncs[B_BATTLER_1] = SetControllerToLinkOpponent;
+ gBattlerPositions[B_BATTLER_1] = B_POSITION_OPPONENT_LEFT;
- gBattlerControllerFuncs[2] = SetControllerToPlayer;
- gBattlerPositions[2] = B_POSITION_PLAYER_RIGHT;
+ gBattlerControllerFuncs[B_BATTLER_2] = SetControllerToPlayer;
+ gBattlerPositions[B_BATTLER_2] = B_POSITION_PLAYER_RIGHT;
- gBattlerControllerFuncs[3] = SetControllerToLinkOpponent;
- gBattlerPositions[3] = B_POSITION_OPPONENT_RIGHT;
+ gBattlerControllerFuncs[B_BATTLER_3] = SetControllerToLinkOpponent;
+ gBattlerPositions[B_BATTLER_3] = B_POSITION_OPPONENT_RIGHT;
gBattlersCount = MAX_BATTLERS_COUNT;
}
else
{
- gBattlerControllerFuncs[1] = SetControllerToPlayer;
- gBattlerPositions[1] = B_POSITION_PLAYER_LEFT;
+ gBattlerControllerFuncs[B_BATTLER_1] = SetControllerToPlayer;
+ gBattlerPositions[B_BATTLER_1] = B_POSITION_PLAYER_LEFT;
- gBattlerControllerFuncs[0] = SetControllerToLinkOpponent;
- gBattlerPositions[0] = B_POSITION_OPPONENT_LEFT;
+ gBattlerControllerFuncs[B_BATTLER_0] = SetControllerToLinkOpponent;
+ gBattlerPositions[B_BATTLER_0] = B_POSITION_OPPONENT_LEFT;
- gBattlerControllerFuncs[3] = SetControllerToPlayer;
- gBattlerPositions[3] = B_POSITION_PLAYER_RIGHT;
+ gBattlerControllerFuncs[B_BATTLER_3] = SetControllerToPlayer;
+ gBattlerPositions[B_BATTLER_3] = B_POSITION_PLAYER_RIGHT;
- gBattlerControllerFuncs[2] = SetControllerToLinkOpponent;
- gBattlerPositions[2] = B_POSITION_OPPONENT_RIGHT;
+ gBattlerControllerFuncs[B_BATTLER_2] = SetControllerToLinkOpponent;
+ gBattlerPositions[B_BATTLER_2] = B_POSITION_OPPONENT_RIGHT;
gBattlersCount = MAX_BATTLERS_COUNT;
}
@@ -488,33 +489,33 @@ static void InitLinkBtlControllers(void)
{
gBattleMainFunc = BeginBattleIntro;
- gBattlerControllerFuncs[0] = SetControllerToPlayer;
- gBattlerPositions[0] = B_POSITION_PLAYER_LEFT;
+ gBattlerControllerFuncs[B_BATTLER_0] = SetControllerToPlayer;
+ gBattlerPositions[B_BATTLER_0] = B_POSITION_PLAYER_LEFT;
- gBattlerControllerFuncs[1] = SetControllerToOpponent;
- gBattlerPositions[1] = B_POSITION_OPPONENT_LEFT;
+ gBattlerControllerFuncs[B_BATTLER_1] = SetControllerToOpponent;
+ gBattlerPositions[B_BATTLER_1] = B_POSITION_OPPONENT_LEFT;
- gBattlerControllerFuncs[2] = SetControllerToLinkPartner;
- gBattlerPositions[2] = B_POSITION_PLAYER_RIGHT;
+ gBattlerControllerFuncs[B_BATTLER_2] = SetControllerToLinkPartner;
+ gBattlerPositions[B_BATTLER_2] = B_POSITION_PLAYER_RIGHT;
- gBattlerControllerFuncs[3] = SetControllerToOpponent;
- gBattlerPositions[3] = B_POSITION_OPPONENT_RIGHT;
+ gBattlerControllerFuncs[B_BATTLER_3] = SetControllerToOpponent;
+ gBattlerPositions[B_BATTLER_3] = B_POSITION_OPPONENT_RIGHT;
gBattlersCount = MAX_BATTLERS_COUNT;
}
else
{
- gBattlerControllerFuncs[0] = SetControllerToLinkPartner;
- gBattlerPositions[0] = B_POSITION_PLAYER_LEFT;
+ gBattlerControllerFuncs[B_BATTLER_0] = SetControllerToLinkPartner;
+ gBattlerPositions[B_BATTLER_0] = B_POSITION_PLAYER_LEFT;
- gBattlerControllerFuncs[1] = SetControllerToLinkOpponent;
- gBattlerPositions[1] = B_POSITION_OPPONENT_LEFT;
+ gBattlerControllerFuncs[B_BATTLER_1] = SetControllerToLinkOpponent;
+ gBattlerPositions[B_BATTLER_1] = B_POSITION_OPPONENT_LEFT;
- gBattlerControllerFuncs[2] = SetControllerToPlayer;
- gBattlerPositions[2] = B_POSITION_PLAYER_RIGHT;
+ gBattlerControllerFuncs[B_BATTLER_2] = SetControllerToPlayer;
+ gBattlerPositions[B_BATTLER_2] = B_POSITION_PLAYER_RIGHT;
- gBattlerControllerFuncs[3] = SetControllerToLinkOpponent;
- gBattlerPositions[3] = B_POSITION_OPPONENT_RIGHT;
+ gBattlerControllerFuncs[B_BATTLER_3] = SetControllerToLinkOpponent;
+ gBattlerPositions[B_BATTLER_3] = B_POSITION_OPPONENT_RIGHT;
gBattlersCount = MAX_BATTLERS_COUNT;
}
@@ -693,11 +694,11 @@ static void PrepareBufferDataTransfer(u32 battler, u32 bufferId, u8 *data, u16 s
{
switch (bufferId)
{
- case BUFFER_A:
+ case B_COMM_TO_CONTROLLER:
for (i = 0; i < size; data++, i++)
gBattleResources->bufferA[battler][i] = *data;
break;
- case BUFFER_B:
+ case B_COMM_TO_ENGINE:
for (i = 0; i < size; data++, i++)
gBattleResources->bufferB[battler][i] = *data;
break;
@@ -705,20 +706,41 @@ static void PrepareBufferDataTransfer(u32 battler, u32 bufferId, u8 *data, u16 s
}
}
+#define tInitialDelayTimer data[10]
+#define tState data[11]
+#define tCurrentBlock_WrapFrom data[12]
+#define tBlockSendDelayTimer data[13]
+#define tCurrentBlock_End data[14]
+#define tCurrentBlock_Start data[15]
+//
+// Inbound communications are stored in one buffer; outbound communications
+// in another. Both buffers work pretty similarly: the next message will be
+// written into the buffer after the previous message (with 4-byte alignment),
+// unless we're too close to the end of the buffer, in which case we jump back
+// to the start.
+//
+// Regarding the task variable names above: these variables are altered in-
+// place, so the precise operational definition of "current" depends on when
+// the variables are being accessed. When data is present in the send and
+// receive buffers, "current" refers to the most recently received message;
+// but when a message is actually being placed in the buffers, "current"
+// refers to the previous message, until such time that we finish updating it
+// to refer to the new message.
+
static void CreateTasksForSendRecvLinkBuffers(void)
{
sLinkSendTaskId = CreateTask(Task_HandleSendLinkBuffersData, 0);
- gTasks[sLinkSendTaskId].data[11] = 0;
- gTasks[sLinkSendTaskId].data[12] = 0;
- gTasks[sLinkSendTaskId].data[13] = 0;
- gTasks[sLinkSendTaskId].data[14] = 0;
- gTasks[sLinkSendTaskId].data[15] = 0;
+ gTasks[sLinkSendTaskId].tState = 0;
+ gTasks[sLinkSendTaskId].tCurrentBlock_WrapFrom = 0;
+ gTasks[sLinkSendTaskId].tBlockSendDelayTimer = 0;
+ gTasks[sLinkSendTaskId].tCurrentBlock_End = 0;
+ gTasks[sLinkSendTaskId].tCurrentBlock_Start = 0;
sLinkReceiveTaskId = CreateTask(Task_HandleCopyReceivedLinkBuffersData, 0);
- gTasks[sLinkReceiveTaskId].data[12] = 0;
- gTasks[sLinkReceiveTaskId].data[13] = 0;
- gTasks[sLinkReceiveTaskId].data[14] = 0;
- gTasks[sLinkReceiveTaskId].data[15] = 0;
+ gTasks[sLinkReceiveTaskId].tCurrentBlock_WrapFrom = 0;
+ gTasks[sLinkReceiveTaskId].tBlockSendDelayTimer = 0; // not used by "receive" task
+ gTasks[sLinkReceiveTaskId].tCurrentBlock_End = 0;
+ gTasks[sLinkReceiveTaskId].tCurrentBlock_Start = 0;
}
enum
@@ -734,52 +756,72 @@ enum
LINK_BUFF_DATA,
};
+// We want to send a message. Place it into the "send" buffer.
+// First argument is a BATTLELINKCOMMTYPE_
void PrepareBufferDataTransferLink(u32 battler, u32 bufferId, u16 size, u8 *data)
{
s32 alignedSize;
s32 i;
alignedSize = size - size % 4 + 4;
- if (gTasks[sLinkSendTaskId].data[14] + alignedSize + LINK_BUFF_DATA + 1 > BATTLE_BUFFER_LINK_SIZE)
+ if (gTasks[sLinkSendTaskId].tCurrentBlock_End + alignedSize + LINK_BUFF_DATA + 1 > BATTLE_BUFFER_LINK_SIZE)
{
- gTasks[sLinkSendTaskId].data[12] = gTasks[sLinkSendTaskId].data[14];
- gTasks[sLinkSendTaskId].data[14] = 0;
+ gTasks[sLinkSendTaskId].tCurrentBlock_WrapFrom = gTasks[sLinkSendTaskId].tCurrentBlock_End;
+ gTasks[sLinkSendTaskId].tCurrentBlock_End = 0;
}
- gLinkBattleSendBuffer[gTasks[sLinkSendTaskId].data[14] + LINK_BUFF_BUFFER_ID] = bufferId;
- gLinkBattleSendBuffer[gTasks[sLinkSendTaskId].data[14] + LINK_BUFF_ACTIVE_BATTLER] = battler;
- gLinkBattleSendBuffer[gTasks[sLinkSendTaskId].data[14] + LINK_BUFF_ATTACKER] = gBattlerAttacker;
- gLinkBattleSendBuffer[gTasks[sLinkSendTaskId].data[14] + LINK_BUFF_TARGET] = gBattlerTarget;
- gLinkBattleSendBuffer[gTasks[sLinkSendTaskId].data[14] + LINK_BUFF_SIZE_LO] = alignedSize;
- gLinkBattleSendBuffer[gTasks[sLinkSendTaskId].data[14] + LINK_BUFF_SIZE_HI] = (alignedSize & 0x0000FF00) >> 8;
- gLinkBattleSendBuffer[gTasks[sLinkSendTaskId].data[14] + LINK_BUFF_ABSENT_BATTLER_FLAGS] = gAbsentBattlerFlags;
- gLinkBattleSendBuffer[gTasks[sLinkSendTaskId].data[14] + LINK_BUFF_EFFECT_BATTLER] = gEffectBattler;
+
+ #define BYTE_TO_SEND(offset) \
+ gLinkBattleSendBuffer[gTasks[sLinkSendTaskId].tCurrentBlock_End + offset]
+
+ BYTE_TO_SEND(LINK_BUFF_BUFFER_ID) = bufferId;
+ BYTE_TO_SEND(LINK_BUFF_ACTIVE_BATTLER) = battler;
+ BYTE_TO_SEND(LINK_BUFF_ATTACKER) = gBattlerAttacker;
+ BYTE_TO_SEND(LINK_BUFF_TARGET) = gBattlerTarget;
+ BYTE_TO_SEND(LINK_BUFF_SIZE_LO) = alignedSize;
+ BYTE_TO_SEND(LINK_BUFF_SIZE_HI) = (alignedSize & 0x0000FF00) >> 8;
+ BYTE_TO_SEND(LINK_BUFF_ABSENT_BATTLER_FLAGS) = gAbsentBattlerFlags;
+ BYTE_TO_SEND(LINK_BUFF_EFFECT_BATTLER) = gEffectBattler;
for (i = 0; i < size; i++)
- gLinkBattleSendBuffer[gTasks[sLinkSendTaskId].data[14] + LINK_BUFF_DATA + i] = data[i];
+ BYTE_TO_SEND(LINK_BUFF_DATA + i) = data[i];
- gTasks[sLinkSendTaskId].data[14] = gTasks[sLinkSendTaskId].data[14] + alignedSize + LINK_BUFF_DATA;
+ #undef BYTE_TO_SEND
+
+ gTasks[sLinkSendTaskId].tCurrentBlock_End = gTasks[sLinkSendTaskId].tCurrentBlock_End + alignedSize + LINK_BUFF_DATA;
}
+enum {
+ SENDTASK_STATE_INITIALIZE = 0,
+ SENDTASK_STATE_INITIAL_DELAY = 1,
+ SENDTASK_STATE_COUNT_PLAYERS = 2,
+ SENDTASK_STATE_BEGIN_SEND_BLOCK = 3,
+ SENDTASK_STATE_FINISH_SEND_BLOCK = 4,
+ SENDTASK_STATE_UNUSED_STATE = 5,
+};
+
static void Task_HandleSendLinkBuffersData(u8 taskId)
{
u16 numPlayers;
u16 blockSize;
- switch (gTasks[taskId].data[11])
+ #define BYTE_TO_SEND(offset) \
+ gLinkBattleSendBuffer[gTasks[taskId].tCurrentBlock_Start + offset]
+
+ switch (gTasks[taskId].tState)
{
- case 0:
- gTasks[taskId].data[10] = 100;
- gTasks[taskId].data[11]++;
+ case SENDTASK_STATE_INITIALIZE:
+ gTasks[taskId].tInitialDelayTimer = 100;
+ gTasks[taskId].tState++;
break;
- case 1:
- gTasks[taskId].data[10]--;
- if (gTasks[taskId].data[10] == 0)
- gTasks[taskId].data[11]++;
+ case SENDTASK_STATE_INITIAL_DELAY:
+ gTasks[taskId].tInitialDelayTimer--;
+ if (gTasks[taskId].tInitialDelayTimer == 0)
+ gTasks[taskId].tState++;
break;
- case 2:
+ case SENDTASK_STATE_COUNT_PLAYERS:
if (gWirelessCommType)
{
- gTasks[taskId].data[11]++;
+ gTasks[taskId].tState++;
}
else
{
@@ -793,56 +835,66 @@ static void Task_HandleSendLinkBuffersData(u8 taskId)
if (IsLinkMaster())
{
CheckShouldAdvanceLinkState();
- gTasks[taskId].data[11]++;
+ gTasks[taskId].tState++;
}
else
{
- gTasks[taskId].data[11]++;
+ gTasks[taskId].tState++;
}
}
}
break;
- case 3:
- if (gTasks[taskId].data[15] != gTasks[taskId].data[14])
+ case SENDTASK_STATE_BEGIN_SEND_BLOCK:
+ if (gTasks[taskId].tCurrentBlock_Start != gTasks[taskId].tCurrentBlock_End)
{
- if (gTasks[taskId].data[13] == 0)
+ if (gTasks[taskId].tBlockSendDelayTimer == 0)
{
- if (gTasks[taskId].data[15] > gTasks[taskId].data[14]
- && gTasks[taskId].data[15] == gTasks[taskId].data[12])
+ if (gTasks[taskId].tCurrentBlock_Start > gTasks[taskId].tCurrentBlock_End
+ && gTasks[taskId].tCurrentBlock_Start == gTasks[taskId].tCurrentBlock_WrapFrom)
{
- gTasks[taskId].data[12] = 0;
- gTasks[taskId].data[15] = 0;
+ gTasks[taskId].tCurrentBlock_WrapFrom = 0;
+ gTasks[taskId].tCurrentBlock_Start = 0;
}
- blockSize = (gLinkBattleSendBuffer[gTasks[taskId].data[15] + LINK_BUFF_SIZE_LO] | (gLinkBattleSendBuffer[gTasks[taskId].data[15] + LINK_BUFF_SIZE_HI] << 8)) + LINK_BUFF_DATA;
- SendBlock(BitmaskAllOtherLinkPlayers(), &gLinkBattleSendBuffer[gTasks[taskId].data[15]], blockSize);
- gTasks[taskId].data[11]++;
+ blockSize = (BYTE_TO_SEND(LINK_BUFF_SIZE_LO) | (BYTE_TO_SEND(LINK_BUFF_SIZE_HI) << 8)) + LINK_BUFF_DATA;
+ SendBlock(BitmaskAllOtherLinkPlayers(), &BYTE_TO_SEND(0), blockSize);
+ gTasks[taskId].tState++;
}
else
{
- gTasks[taskId].data[13]--;
+ gTasks[taskId].tBlockSendDelayTimer--;
break;
}
}
break;
- case 4:
+ case SENDTASK_STATE_FINISH_SEND_BLOCK:
if (IsLinkTaskFinished())
{
- blockSize = gLinkBattleSendBuffer[gTasks[taskId].data[15] + LINK_BUFF_SIZE_LO] | (gLinkBattleSendBuffer[gTasks[taskId].data[15] + LINK_BUFF_SIZE_HI] << 8);
- gTasks[taskId].data[13] = 1;
- gTasks[taskId].data[15] = gTasks[taskId].data[15] + blockSize + LINK_BUFF_DATA;
- gTasks[taskId].data[11] = 3;
+ blockSize = BYTE_TO_SEND(LINK_BUFF_SIZE_LO) | (BYTE_TO_SEND(LINK_BUFF_SIZE_HI) << 8);
+ gTasks[taskId].tBlockSendDelayTimer = 1;
+ gTasks[taskId].tCurrentBlock_Start = gTasks[taskId].tCurrentBlock_Start + blockSize + LINK_BUFF_DATA;
+ gTasks[taskId].tState = SENDTASK_STATE_BEGIN_SEND_BLOCK;
}
break;
- case 5:
- if (--gTasks[taskId].data[13] == 0)
+ case SENDTASK_STATE_UNUSED_STATE:
+ if (--gTasks[taskId].tBlockSendDelayTimer == 0)
{
- gTasks[taskId].data[13] = 1;
- gTasks[taskId].data[11] = 3;
+ gTasks[taskId].tBlockSendDelayTimer = 1;
+ gTasks[taskId].tState = SENDTASK_STATE_BEGIN_SEND_BLOCK;
}
break;
}
+
+ #undef BYTE_TO_SEND
}
+// We have received a message. Place it into the "receive" buffer.
+//
+// Counterintuitively, we also "receive" the outbound messages that
+// we send to other players. The GBA basically stores communicated
+// data for all four players, so inbound and outbound data can be
+// handled uniformly unless a game specifically decides to do
+// otherwise. Pokemon, evidently, did not specifically decide to do
+// otherwise.
void TryReceiveLinkBattleData(void)
{
u8 i;
@@ -862,19 +914,19 @@ void TryReceiveLinkBattleData(void)
u8 *dest, *src;
u16 dataSize = gBlockRecvBuffer[i][2];
- if (gTasks[sLinkReceiveTaskId].data[14] + 9 + dataSize > 0x1000)
+ if (gTasks[sLinkReceiveTaskId].tCurrentBlock_End + 9 + dataSize > 0x1000)
{
- gTasks[sLinkReceiveTaskId].data[12] = gTasks[sLinkReceiveTaskId].data[14];
- gTasks[sLinkReceiveTaskId].data[14] = 0;
+ gTasks[sLinkReceiveTaskId].tCurrentBlock_WrapFrom = gTasks[sLinkReceiveTaskId].tCurrentBlock_End;
+ gTasks[sLinkReceiveTaskId].tCurrentBlock_End = 0;
}
- dest = &gLinkBattleRecvBuffer[gTasks[sLinkReceiveTaskId].data[14]];
+ dest = &gLinkBattleRecvBuffer[gTasks[sLinkReceiveTaskId].tCurrentBlock_End];
src = recvBuffer;
for (j = 0; j < dataSize + 8; j++)
dest[j] = src[j];
- gTasks[sLinkReceiveTaskId].data[14] = gTasks[sLinkReceiveTaskId].data[14] + dataSize + 8;
+ gTasks[sLinkReceiveTaskId].tCurrentBlock_End = gTasks[sLinkReceiveTaskId].tCurrentBlock_End + dataSize + 8;
}
}
}
@@ -885,49 +937,61 @@ static void Task_HandleCopyReceivedLinkBuffersData(u8 taskId)
{
u16 blockSize;
u8 battler;
- u8 var;
+ u8 playerId;
+
+ #define BYTE_TO_RECEIVE(offset) \
+ gLinkBattleRecvBuffer[gTasks[taskId].tCurrentBlock_Start + offset]
- if (gTasks[taskId].data[15] != gTasks[taskId].data[14])
+ if (gTasks[taskId].tCurrentBlock_Start != gTasks[taskId].tCurrentBlock_End)
{
- if (gTasks[taskId].data[15] > gTasks[taskId].data[14]
- && gTasks[taskId].data[15] == gTasks[taskId].data[12])
+ if (gTasks[taskId].tCurrentBlock_Start > gTasks[taskId].tCurrentBlock_End
+ && gTasks[taskId].tCurrentBlock_Start == gTasks[taskId].tCurrentBlock_WrapFrom)
{
- gTasks[taskId].data[12] = 0;
- gTasks[taskId].data[15] = 0;
+ gTasks[taskId].tCurrentBlock_WrapFrom = 0;
+ gTasks[taskId].tCurrentBlock_Start = 0;
}
- battler = gLinkBattleRecvBuffer[gTasks[taskId].data[15] + LINK_BUFF_ACTIVE_BATTLER];
- blockSize = gLinkBattleRecvBuffer[gTasks[taskId].data[15] + LINK_BUFF_SIZE_LO] | (gLinkBattleRecvBuffer[gTasks[taskId].data[15] + LINK_BUFF_SIZE_HI] << 8);
+ battler = BYTE_TO_RECEIVE(LINK_BUFF_ACTIVE_BATTLER);
+ blockSize = BYTE_TO_RECEIVE(LINK_BUFF_SIZE_LO) | (BYTE_TO_RECEIVE(LINK_BUFF_SIZE_HI) << 8);
- switch (gLinkBattleRecvBuffer[gTasks[taskId].data[15] + 0])
+ switch (BYTE_TO_RECEIVE(0))
{
- case 0:
- if (gBattleControllerExecFlags & (1u << battler))
+ case B_COMM_TO_CONTROLLER:
+ if (IsBattleControllerActiveOnLocal(battler))
return;
- memcpy(gBattleResources->bufferA[battler], &gLinkBattleRecvBuffer[gTasks[taskId].data[15] + LINK_BUFF_DATA], blockSize);
+ memcpy(gBattleResources->bufferA[battler], &BYTE_TO_RECEIVE(LINK_BUFF_DATA), blockSize);
MarkBattlerReceivedLinkData(battler);
if (!(gBattleTypeFlags & BATTLE_TYPE_IS_MASTER))
{
- gBattlerAttacker = gLinkBattleRecvBuffer[gTasks[taskId].data[15] + LINK_BUFF_ATTACKER];
- gBattlerTarget = gLinkBattleRecvBuffer[gTasks[taskId].data[15] + LINK_BUFF_TARGET];
- gAbsentBattlerFlags = gLinkBattleRecvBuffer[gTasks[taskId].data[15] + LINK_BUFF_ABSENT_BATTLER_FLAGS];
- gEffectBattler = gLinkBattleRecvBuffer[gTasks[taskId].data[15] + LINK_BUFF_EFFECT_BATTLER];
+ gBattlerAttacker = BYTE_TO_RECEIVE(LINK_BUFF_ATTACKER);
+ gBattlerTarget = BYTE_TO_RECEIVE(LINK_BUFF_TARGET);
+ gAbsentBattlerFlags = BYTE_TO_RECEIVE(LINK_BUFF_ABSENT_BATTLER_FLAGS);
+ gEffectBattler = BYTE_TO_RECEIVE(LINK_BUFF_EFFECT_BATTLER);
}
break;
- case 1:
- memcpy(gBattleResources->bufferB[battler], &gLinkBattleRecvBuffer[gTasks[taskId].data[15] + LINK_BUFF_DATA], blockSize);
+ case B_COMM_TO_ENGINE:
+ memcpy(gBattleResources->bufferB[battler], &gLinkBattleRecvBuffer[gTasks[taskId].tCurrentBlock_Start + LINK_BUFF_DATA], blockSize);
break;
- case 2:
- var = gLinkBattleRecvBuffer[gTasks[taskId].data[15] + LINK_BUFF_DATA];
- gBattleControllerExecFlags &= ~(1u << (battler + var * 4));
+ case B_COMM_CONTROLLER_IS_DONE:
+ playerId = BYTE_TO_RECEIVE(LINK_BUFF_DATA);
+ MarkBattleControllerIdleForPlayer(battler, playerId);
break;
}
- gTasks[taskId].data[15] = gTasks[taskId].data[15] + blockSize + LINK_BUFF_DATA;
+ gTasks[taskId].tCurrentBlock_Start = gTasks[taskId].tCurrentBlock_Start + blockSize + LINK_BUFF_DATA;
}
+
+ #undef BYTE_TO_RECEIVE
}
+#undef tInitialDelayTimer
+#undef tState
+#undef tCurrentBlock_WrapFrom
+#undef tBlockSendDelayTimer
+#undef tCurrentBlock_End
+#undef tCurrentBlock_Start
+
void BtlController_EmitGetMonData(u32 battler, u32 bufferId, u8 requestId, u8 monToCheck)
{
gBattleResources->transferBuffer[0] = CONTROLLER_GETMONDATA;
@@ -1435,7 +1499,7 @@ void BtlController_EmitIntroTrainerBallThrow(u32 battler, u32 bufferId)
PrepareBufferDataTransfer(battler, bufferId, gBattleResources->transferBuffer, 4);
}
-void BtlController_EmitDrawPartyStatusSummary(u32 battler, u32 bufferId, struct HpAndStatus* hpAndStatus, u8 flags)
+void BtlController_EmitDrawPartyStatusSummary(u32 battler, u32 bufferId, struct HpAndStatus *hpAndStatus, u8 flags)
{
s32 i;
@@ -1475,7 +1539,7 @@ void BtlController_EmitSpriteInvisibility(u32 battler, u32 bufferId, bool8 isInv
PrepareBufferDataTransfer(battler, bufferId, gBattleResources->transferBuffer, 4);
}
-void BtlController_EmitBattleAnimation(u32 battler, u32 bufferId, u8 animationId, struct DisableStruct* disableStructPtr, u16 argument)
+void BtlController_EmitBattleAnimation(u32 battler, u32 bufferId, u8 animationId, struct DisableStruct *disableStructPtr, u16 argument)
{
gBattleResources->transferBuffer[0] = CONTROLLER_BATTLEANIMATION;
gBattleResources->transferBuffer[1] = animationId;
@@ -2367,7 +2431,7 @@ void BtlController_HandleGetMonData(u32 battler)
monToCheck >>= 1;
}
}
- BtlController_EmitDataTransfer(battler, BUFFER_B, size, monData);
+ BtlController_EmitDataTransfer(battler, B_COMM_TO_ENGINE, size, monData);
BattleControllerComplete(battler);
}
@@ -2383,7 +2447,7 @@ void BtlController_HandleGetRawMonData(u32 battler)
for (i = 0; i < gBattleResources->bufferA[battler][2]; i++)
dst[i] = src[i];
- BtlController_EmitDataTransfer(battler, BUFFER_B, gBattleResources->bufferA[battler][2], dst);
+ BtlController_EmitDataTransfer(battler, B_COMM_TO_ENGINE, gBattleResources->bufferA[battler][2], dst);
BattleControllerComplete(battler);
}
@@ -3081,3 +3145,115 @@ static u32 ReturnAnimIdForBattler(bool32 wasPlayerSideKnockedOut, u32 specificBa
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 2f83f1d4ab..ffe1b76cea 100644
--- a/src/battle_debug.c
+++ b/src/battle_debug.c
@@ -972,7 +972,7 @@ static void PutMovesPointsText(struct BattleDebugMenu *data)
AddTextPrinterParameterized(data->aiMovesWindowId, FONT_NORMAL, text, 83 + count * 54, i * 15, 0, NULL);
ConvertIntToDecimalStringN(text,
- AI_GetDamage(data->aiBattlerId, battlerDef, i, AI_ATTACKING, AI_DATA),
+ 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);
@@ -1128,12 +1128,12 @@ static void PutAiInfoText(struct BattleDebugMenu *data)
{
if (IsOnPlayerSide(i) && IsBattlerAlive(i))
{
- u16 ability = AI_DATA->abilities[i];
- enum ItemHoldEffect 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, ItemId_GetName(item), x, 15, 0, NULL);
+ AddTextPrinterParameterized(data->aiMovesWindowId, FONT_SMALL, GetItemName(item), x, 15, 0, NULL);
AddTextPrinterParameterized(data->aiMovesWindowId, FONT_SMALL, GetHoldEffectName(holdEffect), x, 30, 0, NULL);
}
}
@@ -1146,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)
@@ -1275,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)
@@ -1696,7 +1696,7 @@ static void PrintSecondaryEntries(struct BattleDebugMenu *data)
AddTextPrinter(&printer, 0, NULL);
break;
case LIST_ITEM_HELD_ITEM:
- PadString(ItemId_GetName(gBattleMons[data->battlerId].item), text);
+ PadString(GetItemName(gBattleMons[data->battlerId].item), text);
printer.currentY = printer.y = sSecondaryListTemplate.upText_Y;
AddTextPrinter(&printer, 0, NULL);
break;
@@ -2191,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:
@@ -2339,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");
@@ -2350,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");
@@ -2428,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 +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,
@@ -2501,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,
@@ -2580,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,
diff --git a/src/battle_dome.c b/src/battle_dome.c
index 9c7c4527cb..28de62c07a 100644
--- a/src/battle_dome.c
+++ b/src/battle_dome.c
@@ -622,7 +622,7 @@ static const union AnimCmd sSpriteAnim_TourneyTreePokeballSelected[] =
ANIMCMD_END,
};
-static const union AnimCmd * const sSpriteAnimTable_TourneyTreePokeball[] =
+static const union AnimCmd *const sSpriteAnimTable_TourneyTreePokeball[] =
{
sSpriteAnim_TourneyTreePokeballNormal,
sSpriteAnim_TourneyTreePokeballSelected,
@@ -652,7 +652,7 @@ static const union AnimCmd sSpriteAnim_TourneyTreeCancelButtonSelected[] =
ANIMCMD_END,
};
-static const union AnimCmd * const sSpriteAnimTable_TourneyTreeCancelButton[] =
+static const union AnimCmd *const sSpriteAnimTable_TourneyTreeCancelButton[] =
{
sSpriteAnim_TourneyTreeCancelButtonNormal,
sSpriteAnim_TourneyTreeCancelButtonSelected,
@@ -681,7 +681,7 @@ static const union AnimCmd sSpriteAnim_TourneyTreeExitButtonSelected[] =
ANIMCMD_END,
};
-static const union AnimCmd * const sSpriteAnimTable_TourneyTreeExitButton[] =
+static const union AnimCmd *const sSpriteAnimTable_TourneyTreeExitButton[] =
{
sSpriteAnim_TourneyTreeExitButtonNormal,
sSpriteAnim_TourneyTreeExitButtonSelected,
@@ -722,13 +722,13 @@ static const union AnimCmd sSpriteAnim_RightArrow[] =
ANIMCMD_END,
};
-static const union AnimCmd * const sSpriteAnimTable_VerticalScrollArrow[] =
+static const union AnimCmd *const sSpriteAnimTable_VerticalScrollArrow[] =
{
sSpriteAnim_UpArrow,
sSpriteAnim_DownArrow,
};
-static const union AnimCmd * const sSpriteAnimTable_HorizontalScrollArrow[] =
+static const union AnimCmd *const sSpriteAnimTable_HorizontalScrollArrow[] =
{
sSpriteAnim_LeftArrow,
sSpriteAnim_RightArrow,
@@ -759,7 +759,7 @@ static const struct SpriteTemplate sVerticalScrollArrowSpriteTemplate =
// Organized by seed starting position, i.e. seed 0 battles seed 8 first
static const u8 sTourneyTreeTrainerIds[DOME_TOURNAMENT_TRAINERS_COUNT] = {0, 8, 12, 4, 7, 15, 11, 3, 2, 10, 14, 6, 5, 13, 9, 1};
-static void (* const sBattleDomeFunctions[])(void) =
+static void (*const sBattleDomeFunctions[])(void) =
{
[BATTLE_DOME_FUNC_INIT] = InitDomeChallenge,
[BATTLE_DOME_FUNC_GET_DATA] = GetDomeData,
@@ -2270,24 +2270,24 @@ int GetDomeTrainerSelectedMons(u16 tournamentTrainerId)
static int SelectOpponentMons_Good(u16 tournamentTrainerId, bool8 allowRandom)
{
- int i, moveId, playerMonId;
+ int i, moveIndex, playerMonId;
int partyMovePoints[FRONTIER_PARTY_SIZE];
for (i = 0; i < FRONTIER_PARTY_SIZE; i++)
{
partyMovePoints[i] = 0;
- for (moveId = 0; moveId < MAX_MON_MOVES; moveId++)
+ for (moveIndex = 0; moveIndex < MAX_MON_MOVES; moveIndex++)
{
for (playerMonId = 0; playerMonId < FRONTIER_PARTY_SIZE; playerMonId++)
{
if (DOME_TRAINERS[tournamentTrainerId].trainerId == TRAINER_FRONTIER_BRAIN)
{
- partyMovePoints[i] += GetTypeEffectivenessPoints(GetFrontierBrainMonMove(i, moveId),
+ partyMovePoints[i] += GetTypeEffectivenessPoints(GetFrontierBrainMonMove(i, moveIndex),
GetMonData(&gPlayerParty[playerMonId], MON_DATA_SPECIES, NULL), EFFECTIVENESS_MODE_GOOD);
}
else
{
- partyMovePoints[i] += GetTypeEffectivenessPoints(gFacilityTrainerMons[DOME_MONS[tournamentTrainerId][i]].moves[moveId],
+ partyMovePoints[i] += GetTypeEffectivenessPoints(gFacilityTrainerMons[DOME_MONS[tournamentTrainerId][i]].moves[moveIndex],
GetMonData(&gPlayerParty[playerMonId], MON_DATA_SPECIES, NULL), EFFECTIVENESS_MODE_GOOD);
}
}
@@ -2299,24 +2299,24 @@ static int SelectOpponentMons_Good(u16 tournamentTrainerId, bool8 allowRandom)
// Identical to function above, but uses EFFECTIVENESS_MODE_BAD
static int SelectOpponentMons_Bad(u16 tournamentTrainerId, bool8 allowRandom)
{
- int i, moveId, playerMonId;
+ int i, moveIndex, playerMonId;
int partyMovePoints[FRONTIER_PARTY_SIZE];
for (i = 0; i < FRONTIER_PARTY_SIZE; i++)
{
partyMovePoints[i] = 0;
- for (moveId = 0; moveId < MAX_MON_MOVES; moveId++)
+ for (moveIndex = 0; moveIndex < MAX_MON_MOVES; moveIndex++)
{
for (playerMonId = 0; playerMonId < FRONTIER_PARTY_SIZE; playerMonId++)
{
if (DOME_TRAINERS[tournamentTrainerId].trainerId == TRAINER_FRONTIER_BRAIN)
{
- partyMovePoints[i] += GetTypeEffectivenessPoints(GetFrontierBrainMonMove(i, moveId),
+ partyMovePoints[i] += GetTypeEffectivenessPoints(GetFrontierBrainMonMove(i, moveIndex),
GetMonData(&gPlayerParty[playerMonId], MON_DATA_SPECIES, NULL), EFFECTIVENESS_MODE_BAD);
}
else
{
- partyMovePoints[i] += GetTypeEffectivenessPoints(gFacilityTrainerMons[DOME_MONS[tournamentTrainerId][i]].moves[moveId],
+ partyMovePoints[i] += GetTypeEffectivenessPoints(gFacilityTrainerMons[DOME_MONS[tournamentTrainerId][i]].moves[moveIndex],
GetMonData(&gPlayerParty[playerMonId], MON_DATA_SPECIES, NULL), EFFECTIVENESS_MODE_BAD);
}
}
@@ -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(enum BattleMoveEffects effect)
+static bool32 IsDomeComboMove(u32 move)
{
+ enum BattleMoveEffects effect = GetMoveEffect(move);
switch(effect)
{
// Weather moves
@@ -4064,8 +4066,6 @@ static bool32 IsDomeComboMoveEffect(enum BattleMoveEffects 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(enum BattleMoveEffects 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(enum BattleMoveEffects 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
@@ -4307,7 +4322,7 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTourneyId)
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;
@@ -5091,7 +5106,7 @@ static u16 GetWinningMove(int winnerTournamentId, int loserTournamentId, u8 roun
{
int i, j, k;
int moveScores[MAX_MON_MOVES * FRONTIER_PARTY_SIZE];
- u16 moveIds[MAX_MON_MOVES * FRONTIER_PARTY_SIZE];
+ u16 moves[MAX_MON_MOVES * FRONTIER_PARTY_SIZE];
u16 bestScore = 0;
u16 bestId = 0;
int movePower = 0;
@@ -5105,16 +5120,16 @@ static u16 GetWinningMove(int winnerTournamentId, int loserTournamentId, u8 roun
// TODO: Clean this up, looks like a different data structure (2D array)
moveScores[i * MAX_MON_MOVES + j] = 0;
if (DOME_TRAINERS[winnerTournamentId].trainerId == TRAINER_FRONTIER_BRAIN)
- moveIds[i * MAX_MON_MOVES + j] = GetFrontierBrainMonMove(i, j);
+ moves[i * MAX_MON_MOVES + j] = GetFrontierBrainMonMove(i, j);
else
- moveIds[i * MAX_MON_MOVES + j] = gFacilityTrainerMons[DOME_MONS[winnerTournamentId][i]].moves[j];
+ moves[i * MAX_MON_MOVES + j] = gFacilityTrainerMons[DOME_MONS[winnerTournamentId][i]].moves[j];
- movePower = GetMovePower(moveIds[i * MAX_MON_MOVES + j]);
- if (IsBattleMoveStatus(moveIds[i * MAX_MON_MOVES + j]))
+ movePower = GetMovePower(moves[i * MAX_MON_MOVES + j]);
+ if (IsBattleMoveStatus(moves[i * MAX_MON_MOVES + j]))
movePower = 40;
else if (movePower == 1)
movePower = 60;
- else if (GetMoveEffect(moveIds[i * MAX_MON_MOVES + j]) == EFFECT_EXPLOSION)
+ else if (GetMoveEffect(moves[i * MAX_MON_MOVES + j]) == EFFECT_EXPLOSION)
movePower /= 2;
for (k = 0; k < FRONTIER_PARTY_SIZE; k++)
@@ -5135,7 +5150,7 @@ static u16 GetWinningMove(int winnerTournamentId, int loserTournamentId, u8 roun
else
targetAbility = gSpeciesInfo[targetSpecies].abilities[0];
- typeMultiplier = CalcPartyMonTypeEffectivenessMultiplier(moveIds[i * 4 + j], targetSpecies, targetAbility);
+ typeMultiplier = CalcPartyMonTypeEffectivenessMultiplier(moves[i * 4 + j], targetSpecies, targetAbility);
if (typeMultiplier == UQ_4_12(0))
moveScores[i * MAX_MON_MOVES + j] += 0;
else if (typeMultiplier >= UQ_4_12(2))
@@ -5153,7 +5168,7 @@ static u16 GetWinningMove(int winnerTournamentId, int loserTournamentId, u8 roun
}
else if (bestScore == moveScores[i * MAX_MON_MOVES + j])
{
- if (moveIds[bestId] < moveIds[i * MAX_MON_MOVES + j]) // Why not use (Random() & 1) instead of promoting moves with a higher id?
+ if (moves[bestId] < moves[i * MAX_MON_MOVES + j]) // Why not use (Random() & 1) instead of promoting moves with a higher id?
bestId = i * MAX_MON_MOVES + j;
}
}
@@ -5164,7 +5179,7 @@ static u16 GetWinningMove(int winnerTournamentId, int loserTournamentId, u8 roun
{
for (i = 0; i < roundId - 1; i++)
{
- if (gSaveBlock2Ptr->frontier.domeWinningMoves[GetOpposingNPCTournamentIdByRound(winnerTournamentId, i)] == moveIds[j])
+ if (gSaveBlock2Ptr->frontier.domeWinningMoves[GetOpposingNPCTournamentIdByRound(winnerTournamentId, i)] == moves[j])
break;
}
if (i != roundId - 1)
@@ -5184,7 +5199,7 @@ static u16 GetWinningMove(int winnerTournamentId, int loserTournamentId, u8 roun
j = k;
bestScore = moveScores[k];
}
- else if (bestScore == moveScores[k] && moveIds[j] < moveIds[k]) // Yes, these conditions are redundant
+ else if (bestScore == moveScores[k] && moves[j] < moves[k]) // Yes, these conditions are redundant
{
j = k;
bestScore = moveScores[k];
@@ -5196,7 +5211,7 @@ static u16 GetWinningMove(int winnerTournamentId, int loserTournamentId, u8 roun
if (moveScores[j] == 0)
j = bestId;
- return moveIds[j];
+ return moves[j];
}
static void Task_ShowTourneyTree(u8 taskId)
diff --git a/src/battle_end_turn.c b/src/battle_end_turn.c
index 319db26012..7e9f8b15f5 100644
--- a/src/battle_end_turn.c
+++ b/src/battle_end_turn.c
@@ -20,6 +20,7 @@ enum EndTurnResolutionOrder
ENDTURN_VARIOUS,
ENDTURN_WEATHER,
ENDTURN_WEATHER_DAMAGE,
+ ENDTURN_GEN_3_BERRY_ACTIVATION,
ENDTURN_EMERGENCY_EXIT_1,
ENDTURN_AFFECTION,
ENDTURN_FUTURE_SIGHT,
@@ -283,6 +284,20 @@ static bool32 HandleEndTurnWeatherDamage(u32 battler)
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;
@@ -401,7 +416,9 @@ static bool32 HandleEndTurnWish(u32 battler)
}
gBattleStruct->moveDamage[battler] *= -1;
- if (gBattleMons[battler].hp == gBattleMons[battler].maxHP)
+ if (gStatuses3[battler] & STATUS3_HEAL_BLOCK)
+ BattleScriptExecute(BattleScript_WishButHealBlocked);
+ else if (gBattleMons[battler].hp == gBattleMons[battler].maxHP)
BattleScriptExecute(BattleScript_WishButFullHp);
else
BattleScriptExecute(BattleScript_WishComesTrue);
@@ -442,7 +459,7 @@ static bool32 HandleEndTurnFirstEventBlock(u32 battler)
{
gBattlerAttacker = battler;
gBattleStruct->moveDamage[battler] = GetNonDynamaxMaxHP(battler) / 8;
- BtlController_EmitStatusAnimation(battler, BUFFER_A, FALSE, STATUS1_BURN);
+ BtlController_EmitStatusAnimation(battler, B_COMM_TO_CONTROLLER, FALSE, STATUS1_BURN);
MarkBattlerForControllerExec(battler);
BattleScriptExecute(BattleScript_HurtByTheSeaOfFire);
effect = TRUE;
@@ -746,8 +763,11 @@ static bool32 HandleEndTurnWrap(u32 battler)
if (gBattleMons[battler].status2 & STATUS2_WRAPPED && IsBattlerAlive(battler))
{
- if (--gDisableStructs[battler].wrapTurns != 0 && !IsBattlerProtectedByMagicGuard(battler, GetBattlerAbility(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]);
@@ -1027,7 +1047,7 @@ static bool32 HandleEndTurnYawn(u32 battler)
gBattleMons[battler].status1 |= ((Random() % 4) + 3);
TryActivateSleepClause(battler, gBattlerPartyIndexes[battler]);
- BtlController_EmitSetMonData(battler, BUFFER_A, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[battler].status1);
+ BtlController_EmitSetMonData(battler, B_COMM_TO_CONTROLLER, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[battler].status1);
MarkBattlerForControllerExec(battler);
BattleScriptExecute(BattleScript_YawnMakesAsleep);
}
@@ -1349,7 +1369,7 @@ static bool32 HandleEndTurnThirdEventBlock(u32 battler)
gBattleMons[gBattlerAttacker].status2 &= ~STATUS2_NIGHTMARE;
gBattleCommunication[MULTISTRING_CHOOSER] = 1;
BattleScriptExecute(BattleScript_MonWokeUpInUproar);
- BtlController_EmitSetMonData(gBattlerAttacker, BUFFER_A, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gBattlerAttacker].status1);
+ BtlController_EmitSetMonData(gBattlerAttacker, B_COMM_TO_CONTROLLER, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gBattlerAttacker].status1);
MarkBattlerForControllerExec(gBattlerAttacker);
break;
}
@@ -1509,6 +1529,7 @@ static bool32 (*const sEndTurnEffectHandlers[])(u32 battler) =
[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,
diff --git a/src/battle_factory.c b/src/battle_factory.c
index b1f2619366..5a9ab56127 100644
--- a/src/battle_factory.c
+++ b/src/battle_factory.c
@@ -121,7 +121,7 @@ static const u16 *const sMoveStyles[FACTORY_NUM_STYLES - 1] =
[FACTORY_STYLE_WEATHER - 1] = sMoves_DependsOnTheBattlesFlow,
};
-static void (* const sBattleFactoryFunctions[])(void) =
+static void (*const sBattleFactoryFunctions[])(void) =
{
[BATTLE_FACTORY_FUNC_INIT] = InitFactoryChallenge,
[BATTLE_FACTORY_FUNC_GET_DATA] = GetBattleFactoryData,
diff --git a/src/battle_factory_screen.c b/src/battle_factory_screen.c
index 4119db47bd..d6233c88fb 100644
--- a/src/battle_factory_screen.c
+++ b/src/battle_factory_screen.c
@@ -299,7 +299,7 @@ static const struct SpritePalette sSelect_SpritePalettes[] =
{},
};
-u8 static (* const sSelect_MenuOptionFuncs[])(void) =
+u8 static (*const sSelect_MenuOptionFuncs[])(void) =
{
Select_OptionSummary,
Select_OptionRentDeselect,
@@ -517,17 +517,17 @@ static const union AnimCmd sAnim_Select_Pokeball_Moving[] =
ANIMCMD_END,
};
-static const union AnimCmd * const sAnims_Select_Interface[] =
+static const union AnimCmd *const sAnims_Select_Interface[] =
{
sAnim_Select_Interface,
};
-static const union AnimCmd * const sAnims_Select_MonPicBgAnim[] =
+static const union AnimCmd *const sAnims_Select_MonPicBgAnim[] =
{
sAnim_Select_MonPicBgAnim,
};
-static const union AnimCmd * const sAnims_Select_Pokeball[] =
+static const union AnimCmd *const sAnims_Select_Pokeball[] =
{
sAnim_Select_Pokeball_Still,
sAnim_Select_Pokeball_Moving,
@@ -569,7 +569,7 @@ static const union AffineAnimCmd sAffineAnim_Select_MonPicBg_Open[] =
AFFINEANIMCMD_END,
};
-static const union AffineAnimCmd * const sAffineAnims_Select_MonPicBgAnim[] =
+static const union AffineAnimCmd *const sAffineAnims_Select_MonPicBgAnim[] =
{
sAffineAnim_Select_MonPicBg_Opening,
sAffineAnim_Select_MonPicBg_Closing,
@@ -772,17 +772,17 @@ static const union AnimCmd sAnim_Swap_Pokeball_Moving[] =
ANIMCMD_END,
};
-static const union AnimCmd * const sAnims_Swap_Interface[] =
+static const union AnimCmd *const sAnims_Swap_Interface[] =
{
sAnim_Swap_Interface,
};
-static const union AnimCmd * const sAnims_Swap_MonPicBgAnim[] =
+static const union AnimCmd *const sAnims_Swap_MonPicBgAnim[] =
{
sAnim_Swap_MonPicBgAnim,
};
-static const union AnimCmd * const sAnims_Swap_Pokeball[] =
+static const union AnimCmd *const sAnims_Swap_Pokeball[] =
{
sAnim_Swap_Pokeball_Still,
sAnim_Swap_Pokeball_Moving,
@@ -824,7 +824,7 @@ static const union AffineAnimCmd sAffineAnim_Swap_MonPicBg_Open[] =
AFFINEANIMCMD_END,
};
-static const union AffineAnimCmd * const sAffineAnims_Swap_MonPicBgAnim[] =
+static const union AffineAnimCmd *const sAffineAnims_Swap_MonPicBgAnim[] =
{
sAffineAnim_Swap_MonPicBg_Opening,
sAffineAnim_Swap_MonPicBg_Closing,
@@ -886,7 +886,7 @@ static const struct SpriteTemplate sSpriteTemplate_Swap_MonPicBgAnim =
.callback = SpriteCallbackDummy
};
-void static (* const sSwap_MenuOptionFuncs[])(u8 taskId) =
+void static (*const sSwap_MenuOptionFuncs[])(u8 taskId) =
{
Swap_OptionSummary,
Swap_OptionSwap,
diff --git a/src/battle_gfx_sfx_util.c b/src/battle_gfx_sfx_util.c
index f5bf97f983..3d8d2f48be 100644
--- a/src/battle_gfx_sfx_util.c
+++ b/src/battle_gfx_sfx_util.c
@@ -762,11 +762,11 @@ bool8 BattleLoadAllHealthBoxesGfx(u8 state)
}
else if (state == 4)
{
- LoadCompressedSpriteSheet(&sSpriteSheets_HealthBar[GetBattlerPosition(0)]);
+ LoadCompressedSpriteSheet(&sSpriteSheets_HealthBar[GetBattlerPosition(B_BATTLER_0)]);
}
else if (state == 5)
{
- LoadCompressedSpriteSheet(&sSpriteSheets_HealthBar[GetBattlerPosition(1)]);
+ LoadCompressedSpriteSheet(&sSpriteSheets_HealthBar[GetBattlerPosition(B_BATTLER_1)]);
}
else
{
@@ -794,13 +794,13 @@ bool8 BattleLoadAllHealthBoxesGfx(u8 state)
else if (state == 5)
LoadCompressedSpriteSheet(&sSpriteSheets_DoublesOpponentHealthbox[1]);
else if (state == 6)
- LoadCompressedSpriteSheet(&sSpriteSheets_HealthBar[GetBattlerPosition(0)]);
+ LoadCompressedSpriteSheet(&sSpriteSheets_HealthBar[GetBattlerPosition(B_BATTLER_0)]);
else if (state == 7)
- LoadCompressedSpriteSheet(&sSpriteSheets_HealthBar[GetBattlerPosition(1)]);
+ LoadCompressedSpriteSheet(&sSpriteSheets_HealthBar[GetBattlerPosition(B_BATTLER_1)]);
else if (state == 8)
- LoadCompressedSpriteSheet(&sSpriteSheets_HealthBar[GetBattlerPosition(2)]);
+ LoadCompressedSpriteSheet(&sSpriteSheets_HealthBar[GetBattlerPosition(B_BATTLER_2)]);
else if (state == 9)
- LoadCompressedSpriteSheet(&sSpriteSheets_HealthBar[GetBattlerPosition(3)]);
+ LoadCompressedSpriteSheet(&sSpriteSheets_HealthBar[GetBattlerPosition(B_BATTLER_3)]);
else
retVal = TRUE;
}
diff --git a/src/battle_interface.c b/src/battle_interface.c
index bb79106a5f..80c85bb141 100644
--- a/src/battle_interface.c
+++ b/src/battle_interface.c
@@ -646,19 +646,19 @@ enum BattleCoordTypes GetBattlerCoordsIndex(u32 battler)
return BATTLE_COORDS_SINGLES;
}
-u8 CreateBattlerHealthboxSprites(u8 battlerId)
+u8 CreateBattlerHealthboxSprites(u8 battler)
{
s16 data6 = 0;
u8 healthboxLeftSpriteId, healthboxRightSpriteId;
u8 healthbarSpriteId;
struct Sprite *healthBarSpritePtr;
- switch (GetBattlerCoordsIndex(battlerId))
+ switch (GetBattlerCoordsIndex(battler))
{
default:
case BATTLE_COORDS_SINGLES:
{
- if (IsOnPlayerSide(battlerId))
+ if (IsOnPlayerSide(battler))
{
healthboxLeftSpriteId = CreateSprite(&sHealthboxPlayerSpriteTemplates[0], DISPLAY_WIDTH, DISPLAY_HEIGHT, 1);
healthboxRightSpriteId = CreateSpriteAtEnd(&sHealthboxPlayerSpriteTemplates[0], DISPLAY_WIDTH, DISPLAY_HEIGHT, 1);
@@ -685,16 +685,16 @@ u8 CreateBattlerHealthboxSprites(u8 battlerId)
}
case BATTLE_COORDS_DOUBLES:
{
- if (IsOnPlayerSide(battlerId))
+ if (IsOnPlayerSide(battler))
{
- healthboxLeftSpriteId = CreateSprite(&sHealthboxPlayerSpriteTemplates[GetBattlerPosition(battlerId) / 2], DISPLAY_WIDTH, DISPLAY_HEIGHT, 1);
- healthboxRightSpriteId = CreateSpriteAtEnd(&sHealthboxPlayerSpriteTemplates[GetBattlerPosition(battlerId) / 2], DISPLAY_WIDTH, DISPLAY_HEIGHT, 1);
+ healthboxLeftSpriteId = CreateSprite(&sHealthboxPlayerSpriteTemplates[GetBattlerPosition(battler) / 2], DISPLAY_WIDTH, DISPLAY_HEIGHT, 1);
+ healthboxRightSpriteId = CreateSpriteAtEnd(&sHealthboxPlayerSpriteTemplates[GetBattlerPosition(battler) / 2], DISPLAY_WIDTH, DISPLAY_HEIGHT, 1);
data6 = 1;
}
else
{
- healthboxLeftSpriteId = CreateSprite(&sHealthboxOpponentSpriteTemplates[GetBattlerPosition(battlerId) / 2], DISPLAY_WIDTH, DISPLAY_HEIGHT, 1);
- healthboxRightSpriteId = CreateSpriteAtEnd(&sHealthboxOpponentSpriteTemplates[GetBattlerPosition(battlerId) / 2], DISPLAY_WIDTH, DISPLAY_HEIGHT, 1);
+ healthboxLeftSpriteId = CreateSprite(&sHealthboxOpponentSpriteTemplates[GetBattlerPosition(battler) / 2], DISPLAY_WIDTH, DISPLAY_HEIGHT, 1);
+ healthboxRightSpriteId = CreateSpriteAtEnd(&sHealthboxOpponentSpriteTemplates[GetBattlerPosition(battler) / 2], DISPLAY_WIDTH, DISPLAY_HEIGHT, 1);
data6 = 2;
}
gSprites[healthboxLeftSpriteId].oam.affineParam = healthboxRightSpriteId;
@@ -706,16 +706,16 @@ u8 CreateBattlerHealthboxSprites(u8 battlerId)
}
}
- healthbarSpriteId = CreateSpriteAtEnd(&sHealthbarSpriteTemplates[gBattlerPositions[battlerId]], 140, 60, 0);
+ healthbarSpriteId = CreateSpriteAtEnd(&sHealthbarSpriteTemplates[gBattlerPositions[battler]], 140, 60, 0);
healthBarSpritePtr = &gSprites[healthbarSpriteId];
- SetSubspriteTables(healthBarSpritePtr, &sHealthBar_SubspriteTables[GetBattlerSide(battlerId)]);
+ SetSubspriteTables(healthBarSpritePtr, &sHealthBar_SubspriteTables[GetBattlerSide(battler)]);
healthBarSpritePtr->subspriteMode = SUBSPRITES_IGNORE_PRIORITY;
healthBarSpritePtr->oam.priority = 1;
CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_1), (void *)(OBJ_VRAM0 + healthBarSpritePtr->oam.tileNum * TILE_SIZE_4BPP), 64);
gSprites[healthboxLeftSpriteId].hMain_HealthBarSpriteId = healthbarSpriteId;
- gSprites[healthboxLeftSpriteId].hMain_Battler = battlerId;
+ gSprites[healthboxLeftSpriteId].hMain_Battler = battler;
gSprites[healthboxLeftSpriteId].invisible = TRUE;
gSprites[healthboxRightSpriteId].invisible = TRUE;
@@ -724,7 +724,7 @@ u8 CreateBattlerHealthboxSprites(u8 battlerId)
healthBarSpritePtr->hBar_Data6 = data6;
healthBarSpritePtr->invisible = TRUE;
- CreateIndicatorSprite(battlerId);
+ CreateIndicatorSprite(battler);
gBattleStruct->ballSpriteIds[0] = MAX_SPRITES;
gBattleStruct->ballSpriteIds[1] = MAX_SPRITES;
@@ -795,13 +795,13 @@ static void SpriteCB_HealthBoxOther(struct Sprite *sprite)
sprite->y2 = gSprites[healthboxMainSpriteId].y2;
}
-void SetBattleBarStruct(u8 battlerId, u8 healthboxSpriteId, s32 maxVal, s32 oldVal, s32 receivedValue)
+void SetBattleBarStruct(u8 battler, u8 healthboxSpriteId, s32 maxVal, s32 oldVal, s32 receivedValue)
{
- gBattleSpritesDataPtr->battleBars[battlerId].healthboxSpriteId = healthboxSpriteId;
- gBattleSpritesDataPtr->battleBars[battlerId].maxValue = maxVal;
- gBattleSpritesDataPtr->battleBars[battlerId].oldValue = oldVal;
- gBattleSpritesDataPtr->battleBars[battlerId].receivedValue = receivedValue;
- gBattleSpritesDataPtr->battleBars[battlerId].currValue = -32768;
+ gBattleSpritesDataPtr->battleBars[battler].healthboxSpriteId = healthboxSpriteId;
+ gBattleSpritesDataPtr->battleBars[battler].maxValue = maxVal;
+ gBattleSpritesDataPtr->battleBars[battler].oldValue = oldVal;
+ gBattleSpritesDataPtr->battleBars[battler].receivedValue = receivedValue;
+ gBattleSpritesDataPtr->battleBars[battler].currValue = -32768;
}
void SetHealthboxSpriteInvisible(u8 healthboxSpriteId)
@@ -986,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)
@@ -1247,7 +1247,7 @@ void SwapHpBarsWithHpText(void)
#define tIsBattleStart data[10]
#define tBlend data[15]
-u8 CreatePartyStatusSummarySprites(u8 battlerId, struct HpAndStatus *partyInfo, bool8 skipPlayer, bool8 isBattleStart)
+u8 CreatePartyStatusSummarySprites(u8 battler, struct HpAndStatus *partyInfo, bool8 skipPlayer, bool8 isBattleStart)
{
bool8 isOpponent;
s16 bar_X, bar_Y, bar_pos2_X, bar_data0;
@@ -1256,9 +1256,9 @@ u8 CreatePartyStatusSummarySprites(u8 battlerId, struct HpAndStatus *partyInfo,
u8 ballIconSpritesIds[PARTY_SIZE];
u8 taskId;
- if (!skipPlayer || GetBattlerPosition(battlerId) != B_POSITION_OPPONENT_RIGHT)
+ if (!skipPlayer || GetBattlerPosition(battler) != B_POSITION_OPPONENT_RIGHT)
{
- if (IsOnPlayerSide(battlerId))
+ if (IsOnPlayerSide(battler))
{
isOpponent = FALSE;
bar_X = 136, bar_Y = 96;
@@ -1269,7 +1269,7 @@ u8 CreatePartyStatusSummarySprites(u8 battlerId, struct HpAndStatus *partyInfo,
{
isOpponent = TRUE;
- if (!skipPlayer || GetBattlerCoordsIndex(battlerId) == BATTLE_COORDS_SINGLES)
+ if (!skipPlayer || GetBattlerCoordsIndex(battler) == BATTLE_COORDS_SINGLES)
bar_X = 104, bar_Y = 40;
else
bar_X = 104, bar_Y = 16;
@@ -1337,7 +1337,7 @@ u8 CreatePartyStatusSummarySprites(u8 battlerId, struct HpAndStatus *partyInfo,
gSprites[ballIconSpritesIds[i]].data[2] = isOpponent;
}
- if (IsOnPlayerSide(battlerId))
+ if (IsOnPlayerSide(battler))
{
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
{
@@ -1450,7 +1450,7 @@ u8 CreatePartyStatusSummarySprites(u8 battlerId, struct HpAndStatus *partyInfo,
}
taskId = CreateTask(TaskDummy, 5);
- gTasks[taskId].tBattler = battlerId;
+ gTasks[taskId].tBattler = battler;
gTasks[taskId].tSummaryBarSpriteId = summaryBarSpriteId;
for (i = 0; i < PARTY_SIZE; i++)
@@ -1473,12 +1473,12 @@ void Task_HidePartyStatusSummary(u8 taskId)
u8 ballIconSpriteIds[PARTY_SIZE];
bool8 isBattleStart;
u8 summaryBarSpriteId;
- u8 battlerId;
+ u8 battler;
s32 i;
isBattleStart = gTasks[taskId].tIsBattleStart;
summaryBarSpriteId = gTasks[taskId].tSummaryBarSpriteId;
- battlerId = gTasks[taskId].tBattler;
+ battler = gTasks[taskId].tBattler;
for (i = 0; i < PARTY_SIZE; i++)
ballIconSpriteIds[i] = gTasks[taskId].tBallIconSpriteId(i);
@@ -1497,7 +1497,7 @@ void Task_HidePartyStatusSummary(u8 taskId)
{
for (i = 0; i < PARTY_SIZE; i++)
{
- if (!IsOnPlayerSide(battlerId))
+ if (!IsOnPlayerSide(battler))
{
gSprites[ballIconSpriteIds[PARTY_SIZE - 1 - i]].data[1] = 7 * i;
gSprites[ballIconSpriteIds[PARTY_SIZE - 1 - i]].data[3] = 0;
@@ -1542,7 +1542,7 @@ static void Task_HidePartyStatusSummary_BattleStart_2(u8 taskId)
u8 ballIconSpriteIds[PARTY_SIZE];
s32 i;
- u8 battlerId = gTasks[taskId].tBattler;
+ u8 battler = gTasks[taskId].tBattler;
if (--gTasks[taskId].tBlend == -1)
{
u8 summaryBarSpriteId = gTasks[taskId].tSummaryBarSpriteId;
@@ -1569,7 +1569,7 @@ static void Task_HidePartyStatusSummary_BattleStart_2(u8 taskId)
}
else if (gTasks[taskId].tBlend == -3)
{
- gBattleSpritesDataPtr->healthBoxesData[battlerId].partyStatusSummaryShown = 0;
+ gBattleSpritesDataPtr->healthBoxesData[battler].partyStatusSummaryShown = 0;
SetGpuReg(REG_OFFSET_BLDCNT, 0);
SetGpuReg(REG_OFFSET_BLDALPHA, 0);
DestroyTask(taskId);
@@ -1580,7 +1580,7 @@ static void Task_HidePartyStatusSummary_DuringBattle(u8 taskId)
{
u8 ballIconSpriteIds[PARTY_SIZE];
s32 i;
- u8 battlerId = gTasks[taskId].tBattler;
+ u8 battler = gTasks[taskId].tBattler;
if (--gTasks[taskId].tBlend >= 0)
{
@@ -1601,7 +1601,7 @@ static void Task_HidePartyStatusSummary_DuringBattle(u8 taskId)
}
else if (gTasks[taskId].tBlend == -3)
{
- gBattleSpritesDataPtr->healthBoxesData[battlerId].partyStatusSummaryShown = 0;
+ gBattleSpritesDataPtr->healthBoxesData[battler].partyStatusSummaryShown = 0;
SetGpuReg(REG_OFFSET_BLDCNT, 0);
SetGpuReg(REG_OFFSET_BLDALPHA, 0);
DestroyTask(taskId);
@@ -1773,17 +1773,17 @@ static void UpdateNickInHealthbox(u8 healthboxSpriteId, struct Pokemon *mon)
static void TryAddPokeballIconToHealthbox(u8 healthboxSpriteId, bool8 noStatus)
{
- u8 battlerId, healthBarSpriteId;
+ u8 battler, healthBarSpriteId;
if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL)
return;
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
return;
- battlerId = gSprites[healthboxSpriteId].hMain_Battler;
- if (IsOnPlayerSide(battlerId))
+ battler = gSprites[healthboxSpriteId].hMain_Battler;
+ if (IsOnPlayerSide(battler))
return;
- if (!GetSetPokedexFlag(SpeciesToNationalPokedexNum(GetMonData(GetBattlerMon(battlerId), MON_DATA_SPECIES)), FLAG_GET_CAUGHT))
+ if (!GetSetPokedexFlag(SpeciesToNationalPokedexNum(GetMonData(GetBattlerMon(battler), MON_DATA_SPECIES)), FLAG_GET_CAUGHT))
return;
healthBarSpriteId = gSprites[healthboxSpriteId].hMain_HealthBarSpriteId;
@@ -1797,18 +1797,18 @@ static void TryAddPokeballIconToHealthbox(u8 healthboxSpriteId, bool8 noStatus)
static void UpdateStatusIconInHealthbox(u8 healthboxSpriteId)
{
s32 i;
- u8 battlerId, healthBarSpriteId;
+ u8 battler, healthBarSpriteId;
u32 status, pltAdder;
const u8 *statusGfxPtr;
s16 tileNumAdder;
u8 statusPalId;
- battlerId = gSprites[healthboxSpriteId].hMain_Battler;
+ battler = gSprites[healthboxSpriteId].hMain_Battler;
healthBarSpriteId = gSprites[healthboxSpriteId].hMain_HealthBarSpriteId;
- if (IsOnPlayerSide(battlerId))
+ if (IsOnPlayerSide(battler))
{
- status = GetMonData(GetBattlerMon(battlerId), MON_DATA_STATUS);
- switch (GetBattlerCoordsIndex(battlerId))
+ status = GetMonData(GetBattlerMon(battler), MON_DATA_STATUS);
+ switch (GetBattlerCoordsIndex(battler))
{
case BATTLE_COORDS_SINGLES:
tileNumAdder = 0x1A;
@@ -1820,38 +1820,38 @@ static void UpdateStatusIconInHealthbox(u8 healthboxSpriteId)
}
else
{
- status = GetMonData(GetBattlerMon(battlerId), MON_DATA_STATUS);
+ status = GetMonData(GetBattlerMon(battler), MON_DATA_STATUS);
tileNumAdder = 0x11;
}
if (status & STATUS1_SLEEP)
{
- statusGfxPtr = GetHealthboxElementGfxPtr(GetStatusIconForBattlerId(HEALTHBOX_GFX_STATUS_SLP_BATTLER0, battlerId));
+ statusGfxPtr = GetHealthboxElementGfxPtr(GetStatusIconForBattlerId(HEALTHBOX_GFX_STATUS_SLP_BATTLER0, battler));
statusPalId = PAL_STATUS_SLP;
}
else if (status & STATUS1_PSN_ANY)
{
- statusGfxPtr = GetHealthboxElementGfxPtr(GetStatusIconForBattlerId(HEALTHBOX_GFX_STATUS_PSN_BATTLER0, battlerId));
+ statusGfxPtr = GetHealthboxElementGfxPtr(GetStatusIconForBattlerId(HEALTHBOX_GFX_STATUS_PSN_BATTLER0, battler));
statusPalId = PAL_STATUS_PSN;
}
else if (status & STATUS1_BURN)
{
- statusGfxPtr = GetHealthboxElementGfxPtr(GetStatusIconForBattlerId(HEALTHBOX_GFX_STATUS_BRN_BATTLER0, battlerId));
+ statusGfxPtr = GetHealthboxElementGfxPtr(GetStatusIconForBattlerId(HEALTHBOX_GFX_STATUS_BRN_BATTLER0, battler));
statusPalId = PAL_STATUS_BRN;
}
else if (status & STATUS1_FREEZE)
{
- statusGfxPtr = GetHealthboxElementGfxPtr(GetStatusIconForBattlerId(HEALTHBOX_GFX_STATUS_FRZ_BATTLER0, battlerId));
+ statusGfxPtr = GetHealthboxElementGfxPtr(GetStatusIconForBattlerId(HEALTHBOX_GFX_STATUS_FRZ_BATTLER0, battler));
statusPalId = PAL_STATUS_FRZ;
}
else if (status & STATUS1_FROSTBITE)
{
- statusGfxPtr = GetHealthboxElementGfxPtr(GetStatusIconForBattlerId(HEALTHBOX_GFX_STATUS_FRB_BATTLER0, battlerId));
+ statusGfxPtr = GetHealthboxElementGfxPtr(GetStatusIconForBattlerId(HEALTHBOX_GFX_STATUS_FRB_BATTLER0, battler));
statusPalId = PAL_STATUS_FRZ;
}
else if (status & STATUS1_PARALYSIS)
{
- statusGfxPtr = GetHealthboxElementGfxPtr(GetStatusIconForBattlerId(HEALTHBOX_GFX_STATUS_PRZ_BATTLER0, battlerId));
+ statusGfxPtr = GetHealthboxElementGfxPtr(GetStatusIconForBattlerId(HEALTHBOX_GFX_STATUS_PRZ_BATTLER0, battler));
statusPalId = PAL_STATUS_PAR;
}
else
@@ -1861,7 +1861,7 @@ static void UpdateStatusIconInHealthbox(u8 healthboxSpriteId)
for (i = 0; i < 3; i++)
CpuCopy32(statusGfxPtr, (void *)(OBJ_VRAM0 + (gSprites[healthboxSpriteId].oam.tileNum + tileNumAdder + i) * TILE_SIZE_4BPP), 32);
- if (!gBattleSpritesDataPtr->battlerData[battlerId].hpNumbersNoBars)
+ if (!gBattleSpritesDataPtr->battlerData[battler].hpNumbersNoBars)
CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_1), (void *)(OBJ_VRAM0 + gSprites[healthBarSpriteId].oam.tileNum * TILE_SIZE_4BPP), 64);
TryAddPokeballIconToHealthbox(healthboxSpriteId, TRUE);
@@ -1869,14 +1869,14 @@ static void UpdateStatusIconInHealthbox(u8 healthboxSpriteId)
}
pltAdder = PLTT_ID(gSprites[healthboxSpriteId].oam.paletteNum);
- pltAdder += battlerId + 12;
+ pltAdder += battler + 12;
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 (GetBattlerCoordsIndex(battlerId) == BATTLE_COORDS_DOUBLES || !IsOnPlayerSide(battlerId))
+ if (GetBattlerCoordsIndex(battler) == BATTLE_COORDS_DOUBLES || !IsOnPlayerSide(battler))
{
- if (!gBattleSpritesDataPtr->battlerData[battlerId].hpNumbersNoBars)
+ if (!gBattleSpritesDataPtr->battlerData[battler].hpNumbersNoBars)
{
CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_0), (void *)(OBJ_VRAM0 + gSprites[healthBarSpriteId].oam.tileNum * TILE_SIZE_4BPP), 32);
CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_65), (void *)(OBJ_VRAM0 + (gSprites[healthBarSpriteId].oam.tileNum + 1) * TILE_SIZE_4BPP), 32);
@@ -1885,68 +1885,68 @@ static void UpdateStatusIconInHealthbox(u8 healthboxSpriteId)
TryAddPokeballIconToHealthbox(healthboxSpriteId, FALSE);
}
-static u8 GetStatusIconForBattlerId(u8 statusElementId, u8 battlerId)
+static u8 GetStatusIconForBattlerId(u8 statusElementId, u8 battler)
{
u8 ret = statusElementId;
switch (statusElementId)
{
case HEALTHBOX_GFX_STATUS_PSN_BATTLER0:
- if (battlerId == 0)
+ if (battler == 0)
ret = HEALTHBOX_GFX_STATUS_PSN_BATTLER0;
- else if (battlerId == 1)
+ else if (battler == 1)
ret = HEALTHBOX_GFX_STATUS_PSN_BATTLER1;
- else if (battlerId == 2)
+ else if (battler == 2)
ret = HEALTHBOX_GFX_STATUS_PSN_BATTLER2;
else
ret = HEALTHBOX_GFX_STATUS_PSN_BATTLER3;
break;
case HEALTHBOX_GFX_STATUS_PRZ_BATTLER0:
- if (battlerId == 0)
+ if (battler == 0)
ret = HEALTHBOX_GFX_STATUS_PRZ_BATTLER0;
- else if (battlerId == 1)
+ else if (battler == 1)
ret = HEALTHBOX_GFX_STATUS_PRZ_BATTLER1;
- else if (battlerId == 2)
+ else if (battler == 2)
ret = HEALTHBOX_GFX_STATUS_PRZ_BATTLER2;
else
ret = HEALTHBOX_GFX_STATUS_PRZ_BATTLER3;
break;
case HEALTHBOX_GFX_STATUS_SLP_BATTLER0:
- if (battlerId == 0)
+ if (battler == 0)
ret = HEALTHBOX_GFX_STATUS_SLP_BATTLER0;
- else if (battlerId == 1)
+ else if (battler == 1)
ret = HEALTHBOX_GFX_STATUS_SLP_BATTLER1;
- else if (battlerId == 2)
+ else if (battler == 2)
ret = HEALTHBOX_GFX_STATUS_SLP_BATTLER2;
else
ret = HEALTHBOX_GFX_STATUS_SLP_BATTLER3;
break;
case HEALTHBOX_GFX_STATUS_FRZ_BATTLER0:
- if (battlerId == 0)
+ if (battler == 0)
ret = HEALTHBOX_GFX_STATUS_FRZ_BATTLER0;
- else if (battlerId == 1)
+ else if (battler == 1)
ret = HEALTHBOX_GFX_STATUS_FRZ_BATTLER1;
- else if (battlerId == 2)
+ else if (battler == 2)
ret = HEALTHBOX_GFX_STATUS_FRZ_BATTLER2;
else
ret = HEALTHBOX_GFX_STATUS_FRZ_BATTLER3;
break;
case HEALTHBOX_GFX_STATUS_FRB_BATTLER0:
- if (battlerId == 0)
+ if (battler == 0)
ret = HEALTHBOX_GFX_STATUS_FRB_BATTLER0;
- else if (battlerId == 1)
+ else if (battler == 1)
ret = HEALTHBOX_GFX_STATUS_FRB_BATTLER1;
- else if (battlerId == 2)
+ else if (battler == 2)
ret = HEALTHBOX_GFX_STATUS_FRB_BATTLER2;
else
ret = HEALTHBOX_GFX_STATUS_FRB_BATTLER3;
break;
case HEALTHBOX_GFX_STATUS_BRN_BATTLER0:
- if (battlerId == 0)
+ if (battler == 0)
ret = HEALTHBOX_GFX_STATUS_BRN_BATTLER0;
- else if (battlerId == 1)
+ else if (battler == 1)
ret = HEALTHBOX_GFX_STATUS_BRN_BATTLER1;
- else if (battlerId == 2)
+ else if (battler == 2)
ret = HEALTHBOX_GFX_STATUS_BRN_BATTLER2;
else
ret = HEALTHBOX_GFX_STATUS_BRN_BATTLER3;
@@ -1986,13 +1986,13 @@ static void UpdateLeftNoOfBallsTextOnHealthbox(u8 healthboxSpriteId)
void UpdateHealthboxAttribute(u8 healthboxSpriteId, struct Pokemon *mon, u8 elementId)
{
- u32 battlerId = gSprites[healthboxSpriteId].hMain_Battler;
+ u32 battler = gSprites[healthboxSpriteId].hMain_Battler;
s32 maxHp = GetMonData(mon, MON_DATA_MAX_HP);
s32 currHp = GetMonData(mon, MON_DATA_HP);
- if (IsOnPlayerSide(battlerId))
+ if (IsOnPlayerSide(battler))
{
- u8 isDoubles = GetBattlerCoordsIndex(battlerId) == BATTLE_COORDS_DOUBLES;
+ u8 isDoubles = GetBattlerCoordsIndex(battler) == BATTLE_COORDS_DOUBLES;
if (elementId == HEALTHBOX_LEVEL || elementId == HEALTHBOX_ALL)
UpdateLvlInHealthbox(healthboxSpriteId, GetMonData(mon, MON_DATA_LEVEL));
@@ -2007,8 +2007,8 @@ void UpdateHealthboxAttribute(u8 healthboxSpriteId, struct Pokemon *mon, u8 elem
if (elementId == HEALTHBOX_HEALTH_BAR || elementId == HEALTHBOX_ALL)
{
LoadBattleBarGfx(0);
- SetBattleBarStruct(battlerId, healthboxSpriteId, maxHp, currHp, 0);
- MoveBattleBar(battlerId, healthboxSpriteId, HEALTH_BAR, 0);
+ SetBattleBarStruct(battler, healthboxSpriteId, maxHp, currHp, 0);
+ MoveBattleBar(battler, healthboxSpriteId, HEALTH_BAR, 0);
}
if (!isDoubles && (elementId == HEALTHBOX_EXP_BAR || elementId == HEALTHBOX_ALL))
@@ -2025,8 +2025,8 @@ void UpdateHealthboxAttribute(u8 healthboxSpriteId, struct Pokemon *mon, u8 elem
currLevelExp = gExperienceTables[gSpeciesInfo[species].growthRate][level];
currExpBarValue = exp - currLevelExp;
maxExpBarValue = gExperienceTables[gSpeciesInfo[species].growthRate][level + 1] - currLevelExp;
- SetBattleBarStruct(battlerId, healthboxSpriteId, maxExpBarValue, currExpBarValue, isDoubles);
- MoveBattleBar(battlerId, healthboxSpriteId, EXP_BAR, 0);
+ SetBattleBarStruct(battler, healthboxSpriteId, maxExpBarValue, currExpBarValue, isDoubles);
+ MoveBattleBar(battler, healthboxSpriteId, EXP_BAR, 0);
}
if (elementId == HEALTHBOX_NICK || elementId == HEALTHBOX_ALL)
UpdateNickInHealthbox(healthboxSpriteId, mon);
@@ -2041,7 +2041,7 @@ void UpdateHealthboxAttribute(u8 healthboxSpriteId, struct Pokemon *mon, u8 elem
{
if (elementId == HEALTHBOX_LEVEL || elementId == HEALTHBOX_ALL)
UpdateLvlInHealthbox(healthboxSpriteId, GetMonData(mon, MON_DATA_LEVEL));
- if (gBattleSpritesDataPtr->battlerData[battlerId].hpNumbersNoBars)
+ if (gBattleSpritesDataPtr->battlerData[battler].hpNumbersNoBars)
{
if (elementId == HEALTHBOX_ALL)
UpdateHpTextInHealthbox(healthboxSpriteId, HP_BOTH, currHp, maxHp);
@@ -2053,8 +2053,8 @@ void UpdateHealthboxAttribute(u8 healthboxSpriteId, struct Pokemon *mon, u8 elem
if (elementId == HEALTHBOX_HEALTH_BAR || elementId == HEALTHBOX_ALL)
{
LoadBattleBarGfx(0);
- SetBattleBarStruct(battlerId, healthboxSpriteId, maxHp, currHp, 0);
- MoveBattleBar(battlerId, healthboxSpriteId, HEALTH_BAR, 0);
+ SetBattleBarStruct(battler, healthboxSpriteId, maxHp, currHp, 0);
+ MoveBattleBar(battler, healthboxSpriteId, HEALTH_BAR, 0);
}
if (elementId == HEALTHBOX_NICK || elementId == HEALTHBOX_ALL)
UpdateNickInHealthbox(healthboxSpriteId, mon);
@@ -2066,45 +2066,45 @@ void UpdateHealthboxAttribute(u8 healthboxSpriteId, struct Pokemon *mon, u8 elem
#define B_EXPBAR_PIXELS 64
#define B_HEALTHBAR_PIXELS 48
-s32 MoveBattleBar(u8 battlerId, u8 healthboxSpriteId, u8 whichBar, u8 unused)
+s32 MoveBattleBar(u8 battler, u8 healthboxSpriteId, u8 whichBar, u8 unused)
{
s32 currentBarValue;
if (whichBar == HEALTH_BAR) // health bar
{
- u16 hpFraction = B_FAST_HP_DRAIN == FALSE ? 1 : max(gBattleSpritesDataPtr->battleBars[battlerId].maxValue / (B_HEALTHBAR_PIXELS / 2), 1);
- currentBarValue = CalcNewBarValue(gBattleSpritesDataPtr->battleBars[battlerId].maxValue,
- gBattleSpritesDataPtr->battleBars[battlerId].oldValue,
- gBattleSpritesDataPtr->battleBars[battlerId].receivedValue,
- &gBattleSpritesDataPtr->battleBars[battlerId].currValue,
+ u16 hpFraction = B_FAST_HP_DRAIN == FALSE ? 1 : max(gBattleSpritesDataPtr->battleBars[battler].maxValue / (B_HEALTHBAR_PIXELS / 2), 1);
+ currentBarValue = CalcNewBarValue(gBattleSpritesDataPtr->battleBars[battler].maxValue,
+ gBattleSpritesDataPtr->battleBars[battler].oldValue,
+ gBattleSpritesDataPtr->battleBars[battler].receivedValue,
+ &gBattleSpritesDataPtr->battleBars[battler].currValue,
B_HEALTHBAR_PIXELS / 8, hpFraction);
}
else // exp bar
{
- u16 expFraction = GetScaledExpFraction(gBattleSpritesDataPtr->battleBars[battlerId].oldValue,
- gBattleSpritesDataPtr->battleBars[battlerId].receivedValue,
- gBattleSpritesDataPtr->battleBars[battlerId].maxValue, 8);
+ u16 expFraction = GetScaledExpFraction(gBattleSpritesDataPtr->battleBars[battler].oldValue,
+ gBattleSpritesDataPtr->battleBars[battler].receivedValue,
+ gBattleSpritesDataPtr->battleBars[battler].maxValue, 8);
if (expFraction == 0)
expFraction = 1;
- expFraction = abs(gBattleSpritesDataPtr->battleBars[battlerId].receivedValue / expFraction);
+ expFraction = abs(gBattleSpritesDataPtr->battleBars[battler].receivedValue / expFraction);
- currentBarValue = CalcNewBarValue(gBattleSpritesDataPtr->battleBars[battlerId].maxValue,
- gBattleSpritesDataPtr->battleBars[battlerId].oldValue,
- gBattleSpritesDataPtr->battleBars[battlerId].receivedValue,
- &gBattleSpritesDataPtr->battleBars[battlerId].currValue,
+ currentBarValue = CalcNewBarValue(gBattleSpritesDataPtr->battleBars[battler].maxValue,
+ gBattleSpritesDataPtr->battleBars[battler].oldValue,
+ gBattleSpritesDataPtr->battleBars[battler].receivedValue,
+ &gBattleSpritesDataPtr->battleBars[battler].currValue,
B_EXPBAR_PIXELS / 8, expFraction);
}
- if (whichBar == EXP_BAR || (whichBar == HEALTH_BAR && !gBattleSpritesDataPtr->battlerData[battlerId].hpNumbersNoBars))
- MoveBattleBarGraphically(battlerId, whichBar);
+ if (whichBar == EXP_BAR || (whichBar == HEALTH_BAR && !gBattleSpritesDataPtr->battlerData[battler].hpNumbersNoBars))
+ MoveBattleBarGraphically(battler, whichBar);
if (currentBarValue == -1)
- gBattleSpritesDataPtr->battleBars[battlerId].currValue = 0;
+ gBattleSpritesDataPtr->battleBars[battler].currValue = 0;
return currentBarValue;
}
-static void MoveBattleBarGraphically(u8 battlerId, u8 whichBar)
+static void MoveBattleBarGraphically(u8 battler, u8 whichBar)
{
u8 array[8];
u8 filledPixelsCount, level;
@@ -2114,10 +2114,10 @@ static void MoveBattleBarGraphically(u8 battlerId, u8 whichBar)
switch (whichBar)
{
case HEALTH_BAR:
- filledPixelsCount = CalcBarFilledPixels(gBattleSpritesDataPtr->battleBars[battlerId].maxValue,
- gBattleSpritesDataPtr->battleBars[battlerId].oldValue,
- gBattleSpritesDataPtr->battleBars[battlerId].receivedValue,
- &gBattleSpritesDataPtr->battleBars[battlerId].currValue,
+ filledPixelsCount = CalcBarFilledPixels(gBattleSpritesDataPtr->battleBars[battler].maxValue,
+ gBattleSpritesDataPtr->battleBars[battler].oldValue,
+ gBattleSpritesDataPtr->battleBars[battler].receivedValue,
+ &gBattleSpritesDataPtr->battleBars[battler].currValue,
array, B_HEALTHBAR_PIXELS / 8);
if (filledPixelsCount > (B_HEALTHBAR_PIXELS * 50 / 100)) // more than 50 % hp
@@ -2129,7 +2129,7 @@ static void MoveBattleBarGraphically(u8 battlerId, u8 whichBar)
for (i = 0; i < 6; i++)
{
- u8 healthbarSpriteId = gSprites[gBattleSpritesDataPtr->battleBars[battlerId].healthboxSpriteId].hMain_HealthBarSpriteId;
+ u8 healthbarSpriteId = gSprites[gBattleSpritesDataPtr->battleBars[battler].healthboxSpriteId].hMain_HealthBarSpriteId;
if (i < 2)
CpuCopy32(GetHealthboxElementGfxPtr(barElementId) + array[i] * 32,
(void *)(OBJ_VRAM0 + (gSprites[healthbarSpriteId].oam.tileNum + 2 + i) * TILE_SIZE_4BPP), 32);
@@ -2139,12 +2139,12 @@ static void MoveBattleBarGraphically(u8 battlerId, u8 whichBar)
}
break;
case EXP_BAR:
- CalcBarFilledPixels(gBattleSpritesDataPtr->battleBars[battlerId].maxValue,
- gBattleSpritesDataPtr->battleBars[battlerId].oldValue,
- gBattleSpritesDataPtr->battleBars[battlerId].receivedValue,
- &gBattleSpritesDataPtr->battleBars[battlerId].currValue,
+ CalcBarFilledPixels(gBattleSpritesDataPtr->battleBars[battler].maxValue,
+ gBattleSpritesDataPtr->battleBars[battler].oldValue,
+ gBattleSpritesDataPtr->battleBars[battler].receivedValue,
+ &gBattleSpritesDataPtr->battleBars[battler].currValue,
array, B_EXPBAR_PIXELS / 8);
- level = GetMonData(GetBattlerMon(battlerId), MON_DATA_LEVEL);
+ level = GetMonData(GetBattlerMon(battler), MON_DATA_LEVEL);
if (level >= MAX_LEVEL)
{
for (i = 0; i < 8; i++)
@@ -2154,10 +2154,10 @@ static void MoveBattleBarGraphically(u8 battlerId, u8 whichBar)
{
if (i < 4)
CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_12) + array[i] * 32,
- (void *)(OBJ_VRAM0 + (gSprites[gBattleSpritesDataPtr->battleBars[battlerId].healthboxSpriteId].oam.tileNum + 0x24 + i) * TILE_SIZE_4BPP), 32);
+ (void *)(OBJ_VRAM0 + (gSprites[gBattleSpritesDataPtr->battleBars[battler].healthboxSpriteId].oam.tileNum + 0x24 + i) * TILE_SIZE_4BPP), 32);
else
CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_12) + array[i] * 32,
- (void *)(OBJ_VRAM0 + 0xB80 + (i + gSprites[gBattleSpritesDataPtr->battleBars[battlerId].healthboxSpriteId].oam.tileNum) * TILE_SIZE_4BPP), 32);
+ (void *)(OBJ_VRAM0 + 0xB80 + (i + gSprites[gBattleSpritesDataPtr->battleBars[battler].healthboxSpriteId].oam.tileNum) * TILE_SIZE_4BPP), 32);
}
break;
}
@@ -2540,19 +2540,19 @@ 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};
- struct Pokemon *illusionMon = GetIllusionMonPtr(battlerId);
+ struct Pokemon *illusionMon = GetIllusionMonPtr(battler);
u8 nick[POKEMON_NAME_LENGTH + 1] = {0};
if (illusionMon != NULL)
GetMonData(illusionMon, MON_DATA_NICKNAME, nick);
else
- GetMonData(GetBattlerMon(battlerId), MON_DATA_NICKNAME, nick);
+ GetMonData(GetBattlerMon(battler), MON_DATA_NICKNAME, nick);
for (i = 0; i < POKEMON_NAME_LENGTH; ++i)
{
@@ -2720,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;
@@ -2733,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;
}
@@ -2744,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;
@@ -2781,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));
@@ -2847,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 b0ab1e6592..7a4cc31dde 100644
--- a/src/battle_main.c
+++ b/src/battle_main.c
@@ -147,7 +147,7 @@ EWRAM_DATA u8 gBattleTextBuff3[TEXT_BUFF_ARRAY_COUNT + 13] = {0}; // expanded
EWRAM_DATA u32 gBattleTypeFlags = 0;
EWRAM_DATA u8 gBattleEnvironment = 0;
EWRAM_DATA struct MultiPartnerMenuPokemon gMultiPartnerParty[MULTI_PARTY_SIZE] = {0};
-EWRAM_DATA static struct MultiPartnerMenuPokemon* sMultiPartnerPartyBuffer = NULL;
+EWRAM_DATA static struct MultiPartnerMenuPokemon *sMultiPartnerPartyBuffer = NULL;
EWRAM_DATA u8 *gBattleAnimBgTileBuffer = NULL;
EWRAM_DATA u8 *gBattleAnimBgTilemapBuffer = NULL;
EWRAM_DATA u32 gBattleControllerExecFlags = 0;
@@ -209,7 +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;
@@ -365,7 +372,7 @@ const struct TrainerClass gTrainerClasses[TRAINER_CLASS_COUNT] =
[TRAINER_CLASS_RS_PROTAG] = { _("{PKMN} TRAINER") },
};
-static void (* const sTurnActionsFuncsTable[])(void) =
+static void (*const sTurnActionsFuncsTable[])(void) =
{
[B_ACTION_USE_MOVE] = HandleAction_UseMove,
[B_ACTION_USE_ITEM] = HandleAction_UseItem,
@@ -384,7 +391,7 @@ static void (* const sTurnActionsFuncsTable[])(void) =
[B_ACTION_THROW_BALL] = HandleAction_ThrowBall,
};
-static void (* const sEndTurnFuncsTable[])(void) =
+static void (*const sEndTurnFuncsTable[])(void) =
{
[0] = HandleEndTurn_ContinueBattle,
[B_OUTCOME_WON] = HandleEndTurn_BattleWon,
@@ -526,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();
@@ -1903,7 +1917,7 @@ u8 CreateNPCTrainerPartyFromTrainer(struct Pokemon *party, const struct Trainer
u32 fixedOtId = 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
@@ -3230,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;
@@ -3327,7 +3341,7 @@ const u8* FaintClearSetData(u32 battler)
u32 partner = BATTLE_PARTNER(battler);
if (IsBattlerAlive(partner))
{
- BtlController_EmitSpriteInvisibility(partner, BUFFER_A, FALSE);
+ BtlController_EmitSpriteInvisibility(partner, B_COMM_TO_CONTROLLER, FALSE);
MarkBattlerForControllerExec(partner);
}
}
@@ -3405,7 +3419,7 @@ static void DoBattleIntro(void)
{
case BATTLE_INTRO_STATE_GET_MON_DATA:
battler = gBattleCommunication[1];
- BtlController_EmitGetMonData(battler, BUFFER_A, REQUEST_ALL_BATTLE, 0);
+ BtlController_EmitGetMonData(battler, B_COMM_TO_CONTROLLER, REQUEST_ALL_BATTLE, 0);
MarkBattlerForControllerExec(battler);
gBattleStruct->introState++;
break;
@@ -3422,7 +3436,7 @@ static void DoBattleIntro(void)
if (!gBattleControllerExecFlags)
{
battler = GetBattlerAtPosition(0);
- BtlController_EmitIntroSlide(battler, BUFFER_A, gBattleEnvironment);
+ BtlController_EmitIntroSlide(battler, B_COMM_TO_CONTROLLER, gBattleEnvironment);
MarkBattlerForControllerExec(battler);
gBattleCommunication[0] = 0;
gBattleCommunication[1] = 0;
@@ -3466,18 +3480,18 @@ static void DoBattleIntro(void)
switch (GetBattlerPosition(battler))
{
case B_POSITION_PLAYER_LEFT: // player sprite
- BtlController_EmitDrawTrainerPic(battler, BUFFER_A);
+ BtlController_EmitDrawTrainerPic(battler, B_COMM_TO_CONTROLLER);
MarkBattlerForControllerExec(battler);
break;
case B_POSITION_OPPONENT_LEFT:
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) // opponent 1 sprite
{
- BtlController_EmitDrawTrainerPic(battler, BUFFER_A);
+ BtlController_EmitDrawTrainerPic(battler, B_COMM_TO_CONTROLLER);
MarkBattlerForControllerExec(battler);
}
else // wild mon 1
{
- BtlController_EmitLoadMonSprite(battler, BUFFER_A);
+ BtlController_EmitLoadMonSprite(battler, B_COMM_TO_CONTROLLER);
MarkBattlerForControllerExec(battler);
gBattleResults.lastOpponentSpecies = GetMonData(GetBattlerMon(battler), MON_DATA_SPECIES, NULL);
}
@@ -3485,7 +3499,7 @@ static void DoBattleIntro(void)
case B_POSITION_PLAYER_RIGHT:
if (gBattleTypeFlags & (BATTLE_TYPE_MULTI | BATTLE_TYPE_INGAME_PARTNER)) // partner sprite
{
- BtlController_EmitDrawTrainerPic(battler, BUFFER_A);
+ BtlController_EmitDrawTrainerPic(battler, B_COMM_TO_CONTROLLER);
MarkBattlerForControllerExec(battler);
}
break;
@@ -3494,13 +3508,13 @@ static void DoBattleIntro(void)
{
if (gBattleTypeFlags & (BATTLE_TYPE_MULTI | BATTLE_TYPE_TWO_OPPONENTS) && !BATTLE_TWO_VS_ONE_OPPONENT) // opponent 2 if exists
{
- BtlController_EmitDrawTrainerPic(battler, BUFFER_A);
+ BtlController_EmitDrawTrainerPic(battler, B_COMM_TO_CONTROLLER);
MarkBattlerForControllerExec(battler);
}
}
else if (IsBattlerAlive(battler)) // wild mon 2 if alive
{
- BtlController_EmitLoadMonSprite(battler, BUFFER_A);
+ BtlController_EmitLoadMonSprite(battler, B_COMM_TO_CONTROLLER);
MarkBattlerForControllerExec(battler);
gBattleResults.lastOpponentSpecies = GetMonData(GetBattlerMon(battler), MON_DATA_SPECIES, NULL);
}
@@ -3537,7 +3551,7 @@ static void DoBattleIntro(void)
}
battler = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
- BtlController_EmitDrawPartyStatusSummary(battler, BUFFER_A, hpStatus, PARTY_SUMM_SKIP_DRAW_DELAY);
+ BtlController_EmitDrawPartyStatusSummary(battler, B_COMM_TO_CONTROLLER, hpStatus, PARTY_SUMM_SKIP_DRAW_DELAY);
MarkBattlerForControllerExec(battler);
for (i = 0; i < PARTY_SIZE; i++)
@@ -3556,7 +3570,7 @@ static void DoBattleIntro(void)
}
battler = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT);
- BtlController_EmitDrawPartyStatusSummary(battler, BUFFER_A, hpStatus, PARTY_SUMM_SKIP_DRAW_DELAY);
+ BtlController_EmitDrawPartyStatusSummary(battler, B_COMM_TO_CONTROLLER, hpStatus, PARTY_SUMM_SKIP_DRAW_DELAY);
MarkBattlerForControllerExec(battler);
gBattleStruct->introState++;
@@ -3606,7 +3620,7 @@ static void DoBattleIntro(void)
else
battler = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
- BtlController_EmitIntroTrainerBallThrow(battler, BUFFER_A);
+ BtlController_EmitIntroTrainerBallThrow(battler, B_COMM_TO_CONTROLLER);
MarkBattlerForControllerExec(battler);
gBattleStruct->introState++;
break;
@@ -3618,7 +3632,7 @@ static void DoBattleIntro(void)
else
battler = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT);
- BtlController_EmitIntroTrainerBallThrow(battler, BUFFER_A);
+ BtlController_EmitIntroTrainerBallThrow(battler, B_COMM_TO_CONTROLLER);
MarkBattlerForControllerExec(battler);
}
if (B_FAST_INTRO_PKMN_TEXT == TRUE
@@ -3674,7 +3688,7 @@ static void DoBattleIntro(void)
else
battler = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT);
- BtlController_EmitIntroTrainerBallThrow(battler, BUFFER_A);
+ BtlController_EmitIntroTrainerBallThrow(battler, B_COMM_TO_CONTROLLER);
MarkBattlerForControllerExec(battler);
gBattleStruct->introState++;
break;
@@ -3686,7 +3700,7 @@ static void DoBattleIntro(void)
else
battler = GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT);
- BtlController_EmitIntroTrainerBallThrow(battler, BUFFER_A);
+ BtlController_EmitIntroTrainerBallThrow(battler, B_COMM_TO_CONTROLLER);
MarkBattlerForControllerExec(battler);
}
gBattleStruct->introState++;
@@ -3887,7 +3901,7 @@ static void TryDoEventsBeforeFirstTurn(void)
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)
{
@@ -3990,7 +4004,7 @@ void BattleTurnPassed(void)
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)
@@ -4027,7 +4041,7 @@ u8 IsRunningFromBattleImpossible(u32 battler)
if (gBattleMons[battler].item == ITEM_ENIGMA_BERRY_E_READER)
holdEffect = gEnigmaBerries[battler].holdEffect;
else
- holdEffect = ItemId_GetHoldEffect(gBattleMons[battler].item);
+ holdEffect = GetItemHoldEffect(gBattleMons[battler].item);
gPotentialItemEffectBattler = battler;
@@ -4188,7 +4202,7 @@ static void HandleTurnActionSelectionState(void)
else
{
gBattleStruct->itemPartyIndex[battler] = PARTY_SIZE;
- BtlController_EmitChooseAction(battler, BUFFER_A, gChosenActionByBattler[0], gBattleResources->bufferB[0][1] | (gBattleResources->bufferB[0][2] << 8));
+ BtlController_EmitChooseAction(battler, B_COMM_TO_CONTROLLER, gChosenActionByBattler[0], gBattleResources->bufferB[0][1] | (gBattleResources->bufferB[0][2] << 8));
MarkBattlerForControllerExec(battler);
gBattleCommunication[battler]++;
}
@@ -4196,7 +4210,7 @@ static void HandleTurnActionSelectionState(void)
}
break;
case STATE_WAIT_ACTION_CHOSEN: // Try to perform an action.
- if (!(gBattleControllerExecFlags & (((1u << battler)) | (0xF << 28) | ((1u << battler) << 4) | ((1u << battler) << 8) | ((1u << battler) << 12))))
+ if (!IsBattleControllerActiveOrPendingSyncAnywhere(battler))
{
RecordedBattle_SetBattlerAction(battler, gBattleResources->bufferB[battler][1]);
gChosenActionByBattler[battler] = gBattleResources->bufferB[battler][1];
@@ -4239,7 +4253,7 @@ static void HandleTurnActionSelectionState(void)
i);
}
- BtlController_EmitChooseMove(battler, BUFFER_A, IsDoubleBattle() != 0, FALSE, &moveInfo);
+ BtlController_EmitChooseMove(battler, B_COMM_TO_CONTROLLER, IsDoubleBattle() != 0, FALSE, &moveInfo);
MarkBattlerForControllerExec(battler);
}
break;
@@ -4271,7 +4285,7 @@ static void HandleTurnActionSelectionState(void)
}
else
{
- BtlController_EmitChooseItem(battler, BUFFER_A, gBattleStruct->battlerPartyOrders[battler]);
+ BtlController_EmitChooseItem(battler, B_COMM_TO_CONTROLLER, gBattleStruct->battlerPartyOrders[battler]);
MarkBattlerForControllerExec(battler);
}
break;
@@ -4280,21 +4294,21 @@ static void HandleTurnActionSelectionState(void)
if (gBattleTypeFlags & BATTLE_TYPE_ARENA
|| !CanBattlerEscape(battler))
{
- BtlController_EmitChoosePokemon(battler, BUFFER_A, PARTY_ACTION_CANT_SWITCH, PARTY_SIZE, ABILITY_NONE, gBattleStruct->battlerPartyOrders[battler]);
+ BtlController_EmitChoosePokemon(battler, B_COMM_TO_CONTROLLER, PARTY_ACTION_CANT_SWITCH, PARTY_SIZE, ABILITY_NONE, gBattleStruct->battlerPartyOrders[battler]);
}
- else if (ItemId_GetHoldEffect(gBattleMons[battler].item) != HOLD_EFFECT_SHED_SHELL
+ else if (GetItemHoldEffect(gBattleMons[battler].item) != HOLD_EFFECT_SHED_SHELL
&& (i = IsAbilityPreventingEscape(battler))) // must be last to keep i value integrity
{
- BtlController_EmitChoosePokemon(battler, BUFFER_A, ((i - 1) << 4) | PARTY_ACTION_ABILITY_PREVENTS, PARTY_SIZE, gBattleMons[i - 1].ability, gBattleStruct->battlerPartyOrders[battler]);
+ BtlController_EmitChoosePokemon(battler, B_COMM_TO_CONTROLLER, ((i - 1) << 4) | PARTY_ACTION_ABILITY_PREVENTS, PARTY_SIZE, gBattleMons[i - 1].ability, gBattleStruct->battlerPartyOrders[battler]);
}
else
{
if (battler == 2 && gChosenActionByBattler[0] == B_ACTION_SWITCH)
- BtlController_EmitChoosePokemon(battler, BUFFER_A, PARTY_ACTION_CHOOSE_MON, gBattleStruct->monToSwitchIntoId[0], ABILITY_NONE, gBattleStruct->battlerPartyOrders[battler]);
+ BtlController_EmitChoosePokemon(battler, B_COMM_TO_CONTROLLER, PARTY_ACTION_CHOOSE_MON, gBattleStruct->monToSwitchIntoId[0], ABILITY_NONE, gBattleStruct->battlerPartyOrders[battler]);
else if (battler == 3 && gChosenActionByBattler[1] == B_ACTION_SWITCH)
- BtlController_EmitChoosePokemon(battler, BUFFER_A, PARTY_ACTION_CHOOSE_MON, gBattleStruct->monToSwitchIntoId[1], ABILITY_NONE, gBattleStruct->battlerPartyOrders[battler]);
+ BtlController_EmitChoosePokemon(battler, B_COMM_TO_CONTROLLER, PARTY_ACTION_CHOOSE_MON, gBattleStruct->monToSwitchIntoId[1], ABILITY_NONE, gBattleStruct->battlerPartyOrders[battler]);
else
- BtlController_EmitChoosePokemon(battler, BUFFER_A, PARTY_ACTION_CHOOSE_MON, PARTY_SIZE, ABILITY_NONE, gBattleStruct->battlerPartyOrders[battler]);
+ BtlController_EmitChoosePokemon(battler, B_COMM_TO_CONTROLLER, PARTY_ACTION_CHOOSE_MON, PARTY_SIZE, ABILITY_NONE, gBattleStruct->battlerPartyOrders[battler]);
}
MarkBattlerForControllerExec(battler);
break;
@@ -4309,7 +4323,7 @@ static void HandleTurnActionSelectionState(void)
}
break;
case B_ACTION_SAFARI_POKEBLOCK:
- BtlController_EmitChooseItem(battler, BUFFER_A, gBattleStruct->battlerPartyOrders[battler]);
+ BtlController_EmitChooseItem(battler, B_COMM_TO_CONTROLLER, gBattleStruct->battlerPartyOrders[battler]);
MarkBattlerForControllerExec(battler);
break;
case B_ACTION_CANCEL_PARTNER:
@@ -4319,7 +4333,7 @@ static void HandleTurnActionSelectionState(void)
if (gBattleMons[GetPartnerBattler(battler)].status2 & STATUS2_MULTIPLETURNS
|| gBattleMons[GetPartnerBattler(battler)].status2 & STATUS2_RECHARGE)
{
- BtlController_EmitEndBounceEffect(battler, BUFFER_A);
+ BtlController_EmitEndBounceEffect(battler, B_COMM_TO_CONTROLLER);
MarkBattlerForControllerExec(battler);
return;
}
@@ -4349,11 +4363,11 @@ static void HandleTurnActionSelectionState(void)
}
gBattleStruct->gimmick.toActivate &= ~((1u << BATTLE_PARTNER(GetBattlerPosition(battler))));
- BtlController_EmitEndBounceEffect(battler, BUFFER_A);
+ BtlController_EmitEndBounceEffect(battler, B_COMM_TO_CONTROLLER);
MarkBattlerForControllerExec(battler);
return;
case B_ACTION_DEBUG:
- BtlController_EmitDebugMenu(battler, BUFFER_A);
+ BtlController_EmitDebugMenu(battler, B_COMM_TO_CONTROLLER);
MarkBattlerForControllerExec(battler);
break;
}
@@ -4400,7 +4414,7 @@ static void HandleTurnActionSelectionState(void)
}
break;
case STATE_WAIT_ACTION_CASE_CHOSEN:
- if (!(gBattleControllerExecFlags & (((1u << battler)) | (0xF << 28) | ((1u << battler) << 4) | ((1u << battler) << 8) | ((1u << battler) << 12))))
+ if (!IsBattleControllerActiveOrPendingSyncAnywhere(battler))
{
switch (gChosenActionByBattler[battler])
{
@@ -4476,7 +4490,7 @@ static void HandleTurnActionSelectionState(void)
else
{
gLastUsedItem = (gBattleResources->bufferB[battler][1] | (gBattleResources->bufferB[battler][2] << 8));
- if (ItemId_GetPocket(gLastUsedItem) == POCKET_POKE_BALLS)
+ if (GetItemPocket(gLastUsedItem) == POCKET_POKE_BALLS)
gBattleStruct->throwingPokeBall = TRUE;
gBattleCommunication[battler]++;
}
@@ -4530,11 +4544,7 @@ static void HandleTurnActionSelectionState(void)
}
break;
case STATE_WAIT_ACTION_CONFIRMED_STANDBY:
- if (!(gBattleControllerExecFlags & ((1u << battler)
- | (0xF << 28)
- | (1u << (battler + 4))
- | (1u << (battler + 8))
- | (1u << (battler + 12)))))
+ if (!IsBattleControllerActiveOrPendingSyncAnywhere(battler))
{
if (AllAtActionConfirmed())
i = TRUE;
@@ -4545,18 +4555,18 @@ static void HandleTurnActionSelectionState(void)
|| (position & BIT_FLANK) != B_FLANK_LEFT
|| gBattleStruct->battlerState[GetBattlerAtPosition(BATTLE_PARTNER(position))].absent)
{
- BtlController_EmitLinkStandbyMsg(battler, BUFFER_A, LINK_STANDBY_MSG_STOP_BOUNCE, i);
+ BtlController_EmitLinkStandbyMsg(battler, B_COMM_TO_CONTROLLER, LINK_STANDBY_MSG_STOP_BOUNCE, i);
}
else
{
- BtlController_EmitLinkStandbyMsg(battler, BUFFER_A, LINK_STANDBY_STOP_BOUNCE_ONLY, i);
+ BtlController_EmitLinkStandbyMsg(battler, B_COMM_TO_CONTROLLER, LINK_STANDBY_STOP_BOUNCE_ONLY, i);
}
MarkBattlerForControllerExec(battler);
gBattleCommunication[battler]++;
}
break;
case STATE_WAIT_ACTION_CONFIRMED:
- if (!(gBattleControllerExecFlags & ((1u << battler) | (0xF << 28) | (1u << (battler + 4)) | (1u << (battler + 8)) | (1u << (battler + 12)))))
+ if (!IsBattleControllerActiveOrPendingSyncAnywhere(battler))
{
gBattleCommunication[ACTIONS_CONFIRMED_COUNT]++;
}
@@ -4570,7 +4580,7 @@ static void HandleTurnActionSelectionState(void)
{
gBattlerAttacker = battler;
gBattlescriptCurrInstr = gSelectionBattleScripts[battler];
- if (!(gBattleControllerExecFlags & ((1u << battler) | (0xF << 28) | (1u << (battler + 4)) | (1u << (battler + 8)) | (1u << (battler + 12)))))
+ if (!IsBattleControllerActiveOrPendingSyncAnywhere(battler))
{
gBattleScriptingCommandsTable[gBattlescriptCurrInstr[0]]();
}
@@ -4578,7 +4588,7 @@ static void HandleTurnActionSelectionState(void)
}
break;
case STATE_WAIT_SET_BEFORE_ACTION:
- if (!(gBattleControllerExecFlags & ((1u << battler) | (0xF << 28) | (1u << (battler + 4)) | (1u << (battler + 8)) | (1u << (battler + 12)))))
+ if (!IsBattleControllerActiveOrPendingSyncAnywhere(battler))
{
gBattleCommunication[battler] = STATE_BEFORE_ACTION_CHOSEN;
}
@@ -4602,7 +4612,7 @@ static void HandleTurnActionSelectionState(void)
{
gBattlerAttacker = battler;
gBattlescriptCurrInstr = gSelectionBattleScripts[battler];
- if (!(gBattleControllerExecFlags & ((1u << battler) | (0xF << 28) | (1u << (battler + 4)) | (1u << (battler + 8)) | (1u << (battler + 12)))))
+ if (!IsBattleControllerActiveOrPendingSyncAnywhere(battler))
{
gBattleScriptingCommandsTable[gBattlescriptCurrInstr[0]]();
}
@@ -4637,7 +4647,7 @@ static void HandleTurnActionSelectionState(void)
for (i = 0; i < gBattlersCount; i++)
{
if (gChosenActionByBattler[i] == B_ACTION_SWITCH)
- SwitchPartyOrderInGameMulti(i, gBattleStruct->monToSwitchIntoId[battler]);
+ SwitchPartyOrderInGameMulti(i, gBattleStruct->monToSwitchIntoId[i]);
}
}
}
@@ -5736,19 +5746,19 @@ void RunBattleScriptCommands(void)
gBattleScriptingCommandsTable[gBattlescriptCurrInstr[0]]();
}
-bool32 TrySetAteType(u32 move, u32 battlerAtk, u32 attackerAbility)
+u32 TrySetAteType(u32 move, u32 battlerAtk, u32 attackerAbility)
{
- u32 ateType;
+ u32 ateType = TYPE_NONE;
switch (GetMoveEffect(move))
{
case EFFECT_TERA_BLAST:
if (GetActiveGimmick(battlerAtk) == GIMMICK_TERA)
- return FALSE;
+ return ateType;
break;
case EFFECT_TERA_STARSTORM:
if (gBattleMons[battlerAtk].species == SPECIES_TERAPAGOS_STELLAR)
- return FALSE;
+ return ateType;
break;
case EFFECT_HIDDEN_POWER:
case EFFECT_WEATHER_BALL:
@@ -5756,12 +5766,11 @@ bool32 TrySetAteType(u32 move, u32 battlerAtk, u32 attackerAbility)
case EFFECT_CHANGE_TYPE_ON_ITEM:
case EFFECT_REVELATION_DANCE:
case EFFECT_TERRAIN_PULSE:
- return FALSE;
+ return ateType;
default:
break;
}
- ateType = TYPE_NONE;
switch (attackerAbility)
{
case ABILITY_PIXILATE:
@@ -5781,29 +5790,22 @@ bool32 TrySetAteType(u32 move, u32 battlerAtk, u32 attackerAbility)
break;
}
- if (ateType != TYPE_NONE && GetActiveGimmick(battlerAtk) != GIMMICK_Z_MOVE)
- {
- gBattleStruct->dynamicMoveType = ateType | F_DYNAMIC_TYPE_SET;
- return TRUE;
- }
-
- return FALSE;
+ return ateType;
}
// Returns TYPE_NONE if type doesn't change.
-// NULL can be passed to ateBoost to avoid applying ate-ability boosts when opening the summary screen in-battle.
-u32 GetDynamicMoveType(struct Pokemon *mon, u32 move, u32 battler, u8 *ateBoost)
+u32 GetDynamicMoveType(struct Pokemon *mon, u32 move, u32 battler, enum MonState state)
{
u32 moveType = GetMoveType(move);
enum BattleMoveEffects moveEffect = GetMoveEffect(move);
u32 species, heldItem, ability, type1, type2, type3;
- bool32 monInBattle = gMain.inBattle && gPartyMenu.menuType != PARTY_MENU_TYPE_IN_BATTLE;
enum ItemHoldEffect holdEffect;
+ enum Gimmick gimmick = GetActiveGimmick(battler);
if (move == MOVE_STRUGGLE)
return TYPE_NORMAL;
- if (monInBattle)
+ if (state == MON_IN_BATTLE)
{
species = gBattleMons[battler].species;
heldItem = gBattleMons[battler].item;
@@ -5817,7 +5819,7 @@ u32 GetDynamicMoveType(struct Pokemon *mon, u32 move, u32 battler, u8 *ateBoost)
{
species = GetMonData(mon, MON_DATA_SPECIES);
heldItem = GetMonData(mon, MON_DATA_HELD_ITEM, 0);
- holdEffect = ItemId_GetHoldEffect(heldItem);
+ holdEffect = GetItemHoldEffect(heldItem);
ability = GetMonAbility(mon);
type1 = gSpeciesInfo[species].types[0];
type2 = gSpeciesInfo[species].types[1];
@@ -5827,7 +5829,7 @@ u32 GetDynamicMoveType(struct Pokemon *mon, u32 move, u32 battler, u8 *ateBoost)
switch (moveEffect)
{
case EFFECT_WEATHER_BALL:
- if (monInBattle)
+ if (state == MON_IN_BATTLE)
{
if (HasWeatherEffect())
{
@@ -5868,7 +5870,7 @@ u32 GetDynamicMoveType(struct Pokemon *mon, u32 move, u32 battler, u8 *ateBoost)
case EFFECT_HIDDEN_POWER:
{
u32 typeBits = 0;
- if (monInBattle)
+ if (state == MON_IN_BATTLE)
{
typeBits = ((gBattleMons[battler].hpIV & 1) << 0)
| ((gBattleMons[battler].attackIV & 1) << 1)
@@ -5900,13 +5902,13 @@ u32 GetDynamicMoveType(struct Pokemon *mon, u32 move, u32 battler, u8 *ateBoost)
break;
case EFFECT_CHANGE_TYPE_ON_ITEM:
if (holdEffect == GetMoveEffectArg_HoldEffect(move))
- return ItemId_GetSecondaryId(heldItem);
+ return GetItemSecondaryId(heldItem);
break;
case EFFECT_REVELATION_DANCE:
- if (GetActiveGimmick(battler) != GIMMICK_Z_MOVE)
+ if (gimmick != GIMMICK_Z_MOVE)
{
u32 teraType;
- if (GetActiveGimmick(battler) == GIMMICK_TERA && ((teraType = GetMonData(mon, MON_DATA_TERA_TYPE)) != TYPE_STELLAR))
+ if (gimmick == GIMMICK_TERA && ((teraType = GetMonData(mon, MON_DATA_TERA_TYPE)) != TYPE_STELLAR))
return teraType;
else if (type1 != TYPE_MYSTERY && !(gDisableStructs[battler].roostActive && type1 == TYPE_FLYING))
return type1;
@@ -5944,12 +5946,12 @@ u32 GetDynamicMoveType(struct Pokemon *mon, u32 move, u32 battler, u8 *ateBoost)
}
break;
case EFFECT_NATURAL_GIFT:
- if (ItemId_GetPocket(heldItem) == POCKET_BERRIES)
+ if (GetItemPocket(heldItem) == POCKET_BERRIES)
return gNaturalGiftTable[ITEM_TO_BERRY(heldItem)].type;
else
return moveType;
case EFFECT_TERRAIN_PULSE:
- if (monInBattle)
+ if (state == MON_IN_BATTLE)
{
if (IsBattlerTerrainAffected(battler, STATUS_FIELD_TERRAIN_ANY))
{
@@ -5983,7 +5985,7 @@ u32 GetDynamicMoveType(struct Pokemon *mon, u32 move, u32 battler, u8 *ateBoost)
}
break;
case EFFECT_TERA_BLAST:
- if (GetActiveGimmick(battler) == GIMMICK_TERA)
+ if (gimmick == GIMMICK_TERA)
return GetMonData(mon, MON_DATA_TERA_TYPE);
break;
case EFFECT_TERA_STARSTORM:
@@ -6003,20 +6005,23 @@ u32 GetDynamicMoveType(struct Pokemon *mon, u32 move, u32 battler, u8 *ateBoost)
return TYPE_DARK;
}
else if (moveType == TYPE_NORMAL
- && ((!gMain.inBattle || TrySetAteType(move, battler, ability))
- && GetActiveGimmick(battler) != GIMMICK_DYNAMAX))
+ && ability != ABILITY_NORMALIZE
+ && gimmick != GIMMICK_DYNAMAX
+ && gimmick != GIMMICK_Z_MOVE)
{
- if (gMain.inBattle && ateBoost != NULL)
- *ateBoost = TRUE;
+ u32 ateType = TrySetAteType(move, battler, ability);
+ if (ateType != TYPE_NONE && state == MON_IN_BATTLE)
+ gBattleStruct->ateBoost[battler] = TRUE;
+ return ateType;
}
else if (moveType != TYPE_NORMAL
&& moveEffect != EFFECT_HIDDEN_POWER
&& moveEffect != EFFECT_WEATHER_BALL
&& ability == ABILITY_NORMALIZE
- && GetActiveGimmick(battler) != GIMMICK_Z_MOVE)
+ && gimmick != GIMMICK_Z_MOVE)
{
- if (gMain.inBattle && ateBoost != NULL && GetActiveGimmick(battler) != GIMMICK_DYNAMAX)
- *ateBoost = TRUE;
+ if (state == MON_IN_BATTLE && gimmick != GIMMICK_DYNAMAX)
+ gBattleStruct->ateBoost[battler] = TRUE;
return TYPE_NORMAL;
}
@@ -6036,7 +6041,8 @@ void SetTypeBeforeUsingMove(u32 move, u32 battler)
moveType = GetDynamicMoveType(GetBattlerMon(battler),
move,
battler,
- &gBattleStruct->ateBoost[battler]);
+ MON_IN_BATTLE);
+
if (moveType != TYPE_NONE)
gBattleStruct->dynamicMoveType = moveType | F_DYNAMIC_TYPE_SET;
@@ -6045,10 +6051,12 @@ void SetTypeBeforeUsingMove(u32 move, u32 battler)
gBattleStruct->dynamicMoveType = TYPE_ELECTRIC | F_DYNAMIC_TYPE_SET;
// Check if a gem should activate.
+ u32 effect = GetMoveEffect(move);
if (holdEffect == HOLD_EFFECT_GEMS
- && GetBattleMoveType(move) == ItemId_GetSecondaryId(heldItem)
- && GetMoveEffect(move) != EFFECT_PLEDGE
- && GetMovePower(move) > 1)
+ && GetBattleMoveType(move) == GetItemSecondaryId(heldItem)
+ && effect != EFFECT_PLEDGE
+ && effect != EFFECT_OHKO
+ && effect != EFFECT_STRUGGLE)
{
gSpecialStatuses[battler].gemParam = GetBattlerHoldEffectParam(battler);
gSpecialStatuses[battler].gemBoost = TRUE;
diff --git a/src/battle_message.c b/src/battle_message.c
index f7c39dca85..7422e173ef 100644
--- a/src/battle_message.c
+++ b/src/battle_message.c
@@ -901,7 +901,8 @@ const u8 *const gBattleStringsTable[STRINGID_COUNT] =
[STRINGID_FORFEITBATTLEGAVEMONEY] = COMPOUND_STRING("You gave ¥{B_BUFF1} to the winner…{PAUSE_UNTIL_PRESS}"),
[STRINGID_GIPHANT_CAPTURE_FAIL] = COMPOUND_STRING("But Giphant Capture couldn't seal any move!"),
[STRINGID_GIPHANT_CAPTURE_SUCCESS] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} sealed {B_BUFF1} for {B_DEF_TEAM2} team!"),
-
+ [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[] =
@@ -1471,7 +1472,7 @@ const u8 gText_Body[] = _("Body");
const u8 gText_Judgment[] = _("{B_BUFF1}{CLEAR 13}Judgment{CLEAR 13}{B_BUFF2}");
static const u8 sText_TwoTrainersSentPkmn[] = _("{B_TRAINER1_NAME_WITH_CLASS} sent out {B_OPPONENT_MON1_NAME}!\p{B_TRAINER2_NAME_WITH_CLASS} sent out {B_OPPONENT_MON2_NAME}!");
static const u8 sText_Trainer2SentOutPkmn[] = _("{B_TRAINER2_NAME_WITH_CLASS} sent out {B_BUFF1}!");
-static const u8 sText_TwoTrainersWantToBattle[] = _("You are challenged by {B_TRAINER1_NAME_WITH_CLASS} and {B_TRAINER2_NAME_WITH_CLASS}!\p");
+static const u8 sText_TwoTrainersWantToBattle[] = _("You are challenged by\n{B_TRAINER1_NAME_WITH_CLASS} and {B_TRAINER2_NAME_WITH_CLASS}!\p");
static const u8 sText_InGamePartnerSentOutZGoN[] = _("{B_PARTNER_NAME_WITH_CLASS} sent out {B_PLAYER_MON2_NAME}! Go, {B_PLAYER_MON1_NAME}!");
const u16 gBattlePalaceFlavorTextTable[] =
@@ -3170,7 +3171,7 @@ u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst, u32 dstSize)
dst[dstID] = *src;
dstID++;
- BreakStringAutomatic(dst, BATTLE_MSG_MAX_WIDTH, BATTLE_MSG_MAX_LINES, fontId, TRUE);
+ BreakStringAutomatic(dst, BATTLE_MSG_MAX_WIDTH, BATTLE_MSG_MAX_LINES, fontId, SHOW_SCROLL_PROMPT);
return dstID;
}
@@ -3190,7 +3191,7 @@ static void IllusionNickHack(u32 battler, u32 partyId, u8 *dst)
id = GetIllusionMonPartyId(gEnemyParty, mon, partnerMon);
}
-
+
if (id != PARTY_SIZE)
GetMonData(&gEnemyParty[id], MON_DATA_NICKNAME, dst);
else
diff --git a/src/battle_palace.c b/src/battle_palace.c
index 68f01f84f7..94a266e6c8 100644
--- a/src/battle_palace.c
+++ b/src/battle_palace.c
@@ -26,7 +26,7 @@ static void SetRandomPalacePrize(void);
static void GivePalacePrize(void);
// Const rom data.
-static void (* const sBattlePalaceFunctions[])(void) =
+static void (*const sBattlePalaceFunctions[])(void) =
{
[BATTLE_PALACE_FUNC_INIT] = InitPalaceChallenge,
[BATTLE_PALACE_FUNC_GET_DATA] = GetPalaceData,
diff --git a/src/battle_pike.c b/src/battle_pike.c
index 9c93a164a9..f1857b5d82 100644
--- a/src/battle_pike.c
+++ b/src/battle_pike.c
@@ -476,7 +476,7 @@ static const u8 sFrontierBrainStreakAppearances[NUM_FRONTIER_FACILITIES][4] =
[FRONTIER_FACILITY_PYRAMID] = {21, 70, 35, 0},
};
-static void (* const sBattlePikeFunctions[])(void) =
+static void (*const sBattlePikeFunctions[])(void) =
{
[BATTLE_PIKE_FUNC_SET_ROOM_TYPE] = SetRoomType,
[BATTLE_PIKE_FUNC_GET_DATA] = GetBattlePikeData,
@@ -531,7 +531,7 @@ static const u8 sNumMonsToHealBeforePikeQueen[][3] =
{0, 1, 2},
};
-static bool8 (* const sStatusInflictionScreenFlashFuncs[])(struct Task *) =
+static bool8 (*const sStatusInflictionScreenFlashFuncs[])(struct Task *) =
{
StatusInflictionFadeOut, StatusInflictionFadeIn
};
diff --git a/src/battle_pyramid.c b/src/battle_pyramid.c
index 7d633e345d..6e56f4867b 100644
--- a/src/battle_pyramid.c
+++ b/src/battle_pyramid.c
@@ -791,7 +791,7 @@ static const u8 sHintTextTypes[] =
HINT_EXIT_SHORT_REMAINING_ITEMS,
};
-static void (* const sBattlePyramidFunctions[])(void) =
+static void (*const sBattlePyramidFunctions[])(void) =
{
[BATTLE_PYRAMID_FUNC_INIT] = InitPyramidChallenge,
[BATTLE_PYRAMID_FUNC_GET_DATA] = GetBattlePyramidData,
@@ -1037,7 +1037,7 @@ static void HidePyramidItem(void)
break;
}
i++;
- if (events[i].localId == 0)
+ if (events[i].localId == LOCALID_NONE)
break;
}
}
@@ -2081,7 +2081,7 @@ static bool8 TrySetPyramidObjectEventPositionAtCoords(u8 objType, u8 x, u8 y, u8
const struct MapHeader *mapHeader;
struct ObjectEventTemplate *floorEvents = gSaveBlock1Ptr->objectEventTemplates;
- mapHeader = Overworld_GetMapHeaderByGroupAndId(MAP_GROUP(BATTLE_PYRAMID_SQUARE01), floorLayoutOffsets[squareId] + MAP_NUM(BATTLE_PYRAMID_SQUARE01));
+ mapHeader = Overworld_GetMapHeaderByGroupAndId(MAP_GROUP(MAP_BATTLE_PYRAMID_SQUARE01), floorLayoutOffsets[squareId] + MAP_NUM(MAP_BATTLE_PYRAMID_SQUARE01));
for (i = 0; i < mapHeader->events->objectEventCount; i++)
{
if (mapHeader->events->objectEvents[i].x != x || mapHeader->events->objectEvents[i].y != y)
@@ -2158,7 +2158,7 @@ u8 GetNumBattlePyramidObjectEvents(void)
for (i = 0; i < OBJECT_EVENTS_COUNT; i++)
{
- if (events[i].localId == 0)
+ if (events[i].localId == LOCALID_NONE)
break;
}
diff --git a/src/battle_pyramid_bag.c b/src/battle_pyramid_bag.c
index 875ad0bf1f..5d5c6c1f03 100644
--- a/src/battle_pyramid_bag.c
+++ b/src/battle_pyramid_bag.c
@@ -327,7 +327,7 @@ static const union AnimCmd sAnim_PyramidBag[] =
ANIMCMD_END,
};
-static const union AnimCmd * const sAnims_PyramidBag[] =
+static const union AnimCmd *const sAnims_PyramidBag[] =
{
sAnim_PyramidBag,
};
@@ -352,7 +352,7 @@ enum {
ANIM_BAG_SHAKE,
};
-static const union AffineAnimCmd * const sAffineAnims_PyramidBag[] =
+static const union AffineAnimCmd *const sAffineAnims_PyramidBag[] =
{
[ANIM_BAG_STILL] = sAffineAnim_PyramidBag_Still,
[ANIM_BAG_SHAKE] = sAffineAnim_PyramidBag_Shake,
@@ -620,7 +620,7 @@ static void SetBagItemsListTemplate(void)
static void CopyBagItemName(u8 *dst, u16 itemId)
{
- if (ItemId_GetPocket(itemId) == POCKET_BERRIES)
+ if (GetItemPocket(itemId) == POCKET_BERRIES)
{
ConvertIntToDecimalStringN(gStringVar1, ITEM_TO_BERRY(itemId), STR_CONV_MODE_LEADING_ZEROS, MAX_PYRAMID_ITEM_DIGITS);
CopyItemName(itemId, gStringVar2);
@@ -681,7 +681,7 @@ static void PrintItemDescription(s32 listMenuId)
const u8 *desc;
if (listMenuId != LIST_CANCEL)
{
- desc = ItemId_GetDescription(gSaveBlock2Ptr->frontier.pyramidBag.itemId[gSaveBlock2Ptr->frontier.lvlMode][listMenuId]);
+ desc = GetItemDescription(gSaveBlock2Ptr->frontier.pyramidBag.itemId[gSaveBlock2Ptr->frontier.lvlMode][listMenuId]);
}
else
{
@@ -954,7 +954,7 @@ static void OpenContextMenu(u8 taskId)
gPyramidBagMenu->menuActionsCount = ARRAY_COUNT(sMenuActionIds_Field);
break;
case PYRAMIDBAG_LOC_BATTLE:
- if (ItemId_GetBattleUsage(gSpecialVar_ItemId))
+ if (GetItemBattleUsage(gSpecialVar_ItemId))
{
gPyramidBagMenu->menuActionIds = sMenuActionIds_Battle;
gPyramidBagMenu->menuActionsCount = ARRAY_COUNT(sMenuActionIds_Battle);
@@ -1097,7 +1097,7 @@ static void CloseMenuActionWindow(void)
static void BagAction_UseOnField(u8 taskId)
{
- u8 pocketId = ItemId_GetPocket(gSpecialVar_ItemId);
+ u8 pocketId = GetItemPocket(gSpecialVar_ItemId);
if (pocketId == POCKET_KEY_ITEMS
|| pocketId == POCKET_POKE_BALLS
@@ -1107,12 +1107,12 @@ static void BagAction_UseOnField(u8 taskId)
CloseMenuActionWindow();
DisplayItemMessageInBattlePyramid(taskId, gText_DadsAdvice, Task_CloseBattlePyramidBagMessage);
}
- else if (ItemId_GetFieldFunc(gSpecialVar_ItemId) != NULL)
+ else if (GetItemFieldFunc(gSpecialVar_ItemId) != NULL)
{
CloseMenuActionWindow();
FillWindowPixelBuffer(WIN_INFO, PIXEL_FILL(0));
ScheduleBgCopyTilemapToVram(0);
- ItemId_GetFieldFunc(gSpecialVar_ItemId)(taskId);
+ GetItemFieldFunc(gSpecialVar_ItemId)(taskId);
}
}
@@ -1262,7 +1262,7 @@ static void BagAction_Give(u8 taskId)
{
DisplayItemMessageInBattlePyramid(taskId, gText_CantWriteMail, Task_WaitCloseErrorMessage);
}
- else if (!ItemId_GetImportance(gSpecialVar_ItemId))
+ else if (!GetItemImportance(gSpecialVar_ItemId))
{
gPyramidBagMenu->newScreenCallback = CB2_ChooseMonToGiveItem;
CloseBattlePyramidBag(taskId);
@@ -1303,7 +1303,7 @@ static void TryCloseBagToGiveItem(u8 taskId)
{
if (!IsWritingMailAllowed(gSpecialVar_ItemId))
DisplayItemMessageInBattlePyramid(taskId, gText_CantWriteMail, Task_WaitCloseErrorMessage);
- else if (!ItemId_GetImportance(gSpecialVar_ItemId))
+ else if (!GetItemImportance(gSpecialVar_ItemId))
CloseBattlePyramidBag(taskId);
else
ShowCantHoldMessage(taskId);
@@ -1312,8 +1312,8 @@ static void TryCloseBagToGiveItem(u8 taskId)
static void BagAction_UseInBattle(u8 taskId)
{
// Safety check
- u16 type = ItemId_GetType(gSpecialVar_ItemId);
- if (!ItemId_GetBattleUsage(gSpecialVar_ItemId))
+ u16 type = GetItemType(gSpecialVar_ItemId);
+ if (!GetItemBattleUsage(gSpecialVar_ItemId))
return;
CloseMenuActionWindow();
diff --git a/src/battle_records.c b/src/battle_records.c
index bec0f48370..c829702c75 100644
--- a/src/battle_records.c
+++ b/src/battle_records.c
@@ -202,7 +202,7 @@ static void UpdateLinkBattleGameStats(s32 battleOutcome)
IncrementGameStat(stat);
}
-static void UpdateLinkBattleRecords(struct LinkBattleRecords *records, const u8 *name, u16 trainerId, s32 battleOutcome, u8 battlerId)
+static void UpdateLinkBattleRecords(struct LinkBattleRecords *records, const u8 *name, u16 trainerId, s32 battleOutcome, u8 battler)
{
s32 index;
@@ -215,7 +215,7 @@ static void UpdateLinkBattleRecords(struct LinkBattleRecords *records, const u8
ClearLinkBattleRecord(&records->entries[index]);
StringCopyN(records->entries[index].name, name, PLAYER_NAME_LENGTH);
records->entries[index].trainerId = trainerId;
- records->languages[index] = gLinkPlayers[battlerId].language;
+ records->languages[index] = gLinkPlayers[battler].language;
}
UpdateLinkBattleRecord(&records->entries[index], battleOutcome);
SortLinkBattleRecords(records);
@@ -230,50 +230,50 @@ void ClearPlayerLinkBattleRecords(void)
}
#if FREE_LINK_BATTLE_RECORDS == FALSE
-static void IncTrainerCardWins(s32 battlerId)
+static void IncTrainerCardWins(s32 battler)
{
- u16 *wins = &gTrainerCards[battlerId].linkBattleWins;
+ u16 *wins = &gTrainerCards[battler].linkBattleWins;
(*wins)++;
if (*wins > 9999)
*wins = 9999;
}
-static void IncTrainerCardLosses(s32 battlerId)
+static void IncTrainerCardLosses(s32 battler)
{
- u16 *losses = &gTrainerCards[battlerId].linkBattleLosses;
+ u16 *losses = &gTrainerCards[battler].linkBattleLosses;
(*losses)++;
if (*losses > 9999)
*losses = 9999;
}
-static void UpdateTrainerCardWinsLosses(s32 battlerId)
+static void UpdateTrainerCardWinsLosses(s32 battler)
{
switch (gBattleOutcome)
{
case B_OUTCOME_WON:
- IncTrainerCardWins(BATTLE_OPPOSITE(battlerId));
- IncTrainerCardLosses(battlerId);
+ IncTrainerCardWins(BATTLE_OPPOSITE(battler));
+ IncTrainerCardLosses(battler);
break;
case B_OUTCOME_LOST:
- IncTrainerCardLosses(BATTLE_OPPOSITE(battlerId));
- IncTrainerCardWins(battlerId);
+ IncTrainerCardLosses(BATTLE_OPPOSITE(battler));
+ IncTrainerCardWins(battler);
break;
}
}
#endif //FREE_LINK_BATTLE_RECORDS
-void UpdatePlayerLinkBattleRecords(s32 battlerId)
+void UpdatePlayerLinkBattleRecords(s32 battler)
{
#if FREE_LINK_BATTLE_RECORDS == FALSE
if (InUnionRoom() != TRUE)
{
- UpdateTrainerCardWinsLosses(battlerId);
+ UpdateTrainerCardWinsLosses(battler);
UpdateLinkBattleRecords(
&gSaveBlock1Ptr->linkBattleRecords,
- gTrainerCards[battlerId].playerName,
- gTrainerCards[battlerId].trainerId,
+ gTrainerCards[battler].playerName,
+ gTrainerCards[battler].trainerId,
gBattleOutcome,
- battlerId);
+ battler);
}
#endif //FREE_LINK_BATTLE_RECORDS
}
diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c
index 3497445051..4db91c5d19 100644
--- a/src/battle_script_commands.c
+++ b/src/battle_script_commands.c
@@ -533,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_tryhealingitem(void);
+static void Cmd_tryrestorehpberry(void);
static void Cmd_halvehp(void);
static void Cmd_copyfoestats(void);
static void Cmd_rapidspinfree(void);
@@ -603,7 +603,7 @@ static void Cmd_setnonvolatilestatus(void);
static void Cmd_tryworryseed(void);
static void Cmd_callnative(void);
-void (* const gBattleScriptingCommandsTable[])(void) =
+void (*const gBattleScriptingCommandsTable[])(void) =
{
Cmd_attackcanceler, //0x0
Cmd_accuracycheck, //0x1
@@ -792,7 +792,7 @@ void (* const gBattleScriptingCommandsTable[])(void) =
Cmd_setsafeguard, //0xB8
Cmd_magnitudedamagecalculation, //0xB9
Cmd_jumpifnopursuitswitchdmg, //0xBA
- Cmd_tryhealingitem, //0xBB
+ Cmd_tryrestorehpberry, //0xBB
Cmd_halvehp, //0xBC
Cmd_copyfoestats, //0xBD
Cmd_rapidspinfree, //0xBE
@@ -965,7 +965,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,
@@ -1282,7 +1281,7 @@ static void Cmd_attackcanceler(void)
ABILITY_RUN_SCRIPT))
return;
- if (effect == EFFECT_PARALYZE)
+ if (GetMoveNonVolatileStatus(gCurrentMove) == MOVE_EFFECT_PARALYSIS)
{
if (CanAbilityAbsorbMove(gBattlerAttacker,
gBattlerTarget,
@@ -1449,13 +1448,13 @@ static void Cmd_attackcanceler(void)
}
}
-static void JumpIfMoveFailed(u32 adder, u32 move, u32 moveType)
+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 = T1_READ_PTR(gBattlescriptCurrInstr + 1);
+ gBattlescriptCurrInstr = failInstr;
return;
}
else
@@ -1478,14 +1477,14 @@ static void Cmd_unused5(void)
{
}
-static bool32 JumpIfMoveAffectedByProtect(u32 move, u32 battler, u32 shouldJump)
+static bool32 JumpIfMoveAffectedByProtect(u32 move, u32 battler, u32 shouldJump, const u8 *failInstr)
{
bool32 affected = IsBattlerProtected(gBattlerAttacker, battler, move);
if (affected)
{
gBattleStruct->moveResultFlags[battler] |= MOVE_RESULT_MISSED;
if (shouldJump)
- JumpIfMoveFailed(7, move, GetBattleMoveType(move));
+ JumpIfMoveFailed(7, move, GetBattleMoveType(move), failInstr);
}
return affected;
}
@@ -1495,9 +1494,12 @@ static bool32 AccuracyCalcHelper(u32 move, u32 battler)
bool32 effect = FALSE;
u32 ability = ABILITY_NONE;
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;
@@ -1554,10 +1556,9 @@ static bool32 AccuracyCalcHelper(u32 move, u32 battler)
if (!effect && HasWeatherEffect())
{
- if ((moveEffect == EFFECT_THUNDER || moveEffect == EFFECT_RAIN_ALWAYS_HIT)
- && IsBattlerWeatherAffected(battler, B_WEATHER_RAIN))
+ if (MoveAlwaysHitsInRain(move) && IsBattlerWeatherAffected(battler, B_WEATHER_RAIN))
effect = TRUE;
- else if ((gBattleWeather & (B_WEATHER_HAIL | B_WEATHER_SNOW)) && moveEffect == EFFECT_BLIZZARD)
+ else if ((gBattleWeather & (B_WEATHER_HAIL | B_WEATHER_SNOW)) && MoveAlwaysHitsInHailSnow(move))
effect = TRUE;
if (effect)
@@ -1602,7 +1603,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)
@@ -1707,7 +1708,7 @@ static void AccuracyCheck(bool32 recalcDragonDarts, const u8 *nextInstr, const u
gBattlescriptCurrInstr = nextInstr;
else if (gStatuses3[gBattlerTarget] & (STATUS3_SEMI_INVULNERABLE))
gBattlescriptCurrInstr = failInstr;
- else if (!JumpIfMoveAffectedByProtect(gCurrentMove, gBattlerTarget, TRUE))
+ else if (!JumpIfMoveAffectedByProtect(gCurrentMove, gBattlerTarget, TRUE, failInstr))
gBattlescriptCurrInstr = nextInstr;
if (GetActiveGimmick(gBattlerAttacker) == GIMMICK_DYNAMAX)
{
@@ -1749,7 +1750,7 @@ static void AccuracyCheck(bool32 recalcDragonDarts, const u8 *nextInstr, const u
continue;
numTargets++;
- if (JumpIfMoveAffectedByProtect(move, battlerDef, FALSE) || AccuracyCalcHelper(move, battlerDef))
+ if (JumpIfMoveAffectedByProtect(move, battlerDef, FALSE, failInstr) || AccuracyCalcHelper(move, battlerDef))
continue;
u32 accuracy = GetTotalAccuracy(gBattlerAttacker,
@@ -1796,7 +1797,7 @@ static void AccuracyCheck(bool32 recalcDragonDarts, const u8 *nextInstr, const u
if (calcSpreadMove)
gBattleStruct->calculatedSpreadMoveAccuracy = TRUE;
- JumpIfMoveFailed(7, move, moveType);
+ JumpIfMoveFailed(7, move, moveType, failInstr);
}
}
@@ -1871,7 +1872,7 @@ static void Cmd_ppreduce(void)
if (MOVE_IS_PERMANENT(gBattlerAttacker, gCurrMovePos))
{
- BtlController_EmitSetMonData(gBattlerAttacker, BUFFER_A, REQUEST_PPMOVE1_BATTLE + gCurrMovePos, 0,
+ BtlController_EmitSetMonData(gBattlerAttacker, B_COMM_TO_CONTROLLER, REQUEST_PPMOVE1_BATTLE + gCurrMovePos, 0,
sizeof(gBattleMons[gBattlerAttacker].pp[gCurrMovePos]),
&gBattleMons[gBattlerAttacker].pp[gCurrMovePos]);
MarkBattlerForControllerExec(gBattlerAttacker);
@@ -2280,8 +2281,7 @@ static void Cmd_adjustdamage(void)
if (gSpecialStatuses[gBattlerAttacker].gemBoost
&& !(gBattleStruct->moveResultFlags[gBattlerTarget] & MOVE_RESULT_NO_EFFECT)
&& !(gHitMarker & HITMARKER_UNABLE_TO_USE_MOVE)
- && gBattleMons[gBattlerAttacker].item
- && gCurrentMove != MOVE_STRUGGLE)
+ && gBattleMons[gBattlerAttacker].item)
{
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_GemActivates;
@@ -2529,7 +2529,7 @@ static void Cmd_attackanimation(void)
}
BtlController_EmitMoveAnimation(gBattlerAttacker,
- BUFFER_A,
+ B_COMM_TO_CONTROLLER,
gCurrentMove,
gBattleScripting.animTurn,
gBattleMovePower,
@@ -2575,7 +2575,7 @@ static void DoublesHPBarReduction(void)
s32 currDmg = gBattleStruct->moveDamage[battlerDef];
s32 healthValue = min(currDmg, 10000); // Max damage (10000) not present in R/S, ensures that huge damage values don't change sign
- BtlController_EmitHealthBarUpdate(battlerDef, BUFFER_A, healthValue);
+ BtlController_EmitHealthBarUpdate(battlerDef, B_COMM_TO_CONTROLLER, healthValue);
MarkBattlerForControllerExec(battlerDef);
if (IsOnPlayerSide(battlerDef) && currDmg > 0)
@@ -2611,7 +2611,7 @@ static void Cmd_healthbarupdate(void)
{
s16 healthValue = min(gBattleStruct->moveDamage[battler], 10000); // Max damage (10000) not present in R/S, ensures that huge damage values don't change sign
- BtlController_EmitHealthBarUpdate(battler, BUFFER_A, healthValue);
+ BtlController_EmitHealthBarUpdate(battler, B_COMM_TO_CONTROLLER, healthValue);
MarkBattlerForControllerExec(battler);
if (IsOnPlayerSide(battler) && gBattleStruct->moveDamage[battler] > 0)
@@ -2739,7 +2739,7 @@ static void Cmd_datahpupdate(void)
}
gHitMarker &= ~HITMARKER_PASSIVE_DAMAGE;
// Send updated HP
- BtlController_EmitSetMonData(battler, BUFFER_A, REQUEST_HP_BATTLE, 0, sizeof(gBattleMons[battler].hp), &gBattleMons[battler].hp);
+ BtlController_EmitSetMonData(battler, B_COMM_TO_CONTROLLER, REQUEST_HP_BATTLE, 0, sizeof(gBattleMons[battler].hp), &gBattleMons[battler].hp);
MarkBattlerForControllerExec(battler);
}
@@ -2800,11 +2800,11 @@ static void Cmd_effectivenesssound(void)
switch (moveResultFlags & ~MOVE_RESULT_MISSED)
{
case MOVE_RESULT_SUPER_EFFECTIVE:
- BtlController_EmitPlaySE(gBattlerTarget, BUFFER_A, SE_SUPER_EFFECTIVE);
+ BtlController_EmitPlaySE(gBattlerTarget, B_COMM_TO_CONTROLLER, SE_SUPER_EFFECTIVE);
MarkBattlerForControllerExec(gBattlerTarget);
break;
case MOVE_RESULT_NOT_VERY_EFFECTIVE:
- BtlController_EmitPlaySE(gBattlerTarget, BUFFER_A, SE_NOT_EFFECTIVE);
+ BtlController_EmitPlaySE(gBattlerTarget, B_COMM_TO_CONTROLLER, SE_NOT_EFFECTIVE);
MarkBattlerForControllerExec(gBattlerTarget);
break;
case MOVE_RESULT_DOESNT_AFFECT_FOE:
@@ -2818,17 +2818,17 @@ static void Cmd_effectivenesssound(void)
default:
if (moveResultFlags & MOVE_RESULT_SUPER_EFFECTIVE)
{
- BtlController_EmitPlaySE(gBattlerTarget, BUFFER_A, SE_SUPER_EFFECTIVE);
+ BtlController_EmitPlaySE(gBattlerTarget, B_COMM_TO_CONTROLLER, SE_SUPER_EFFECTIVE);
MarkBattlerForControllerExec(gBattlerTarget);
}
else if (moveResultFlags & MOVE_RESULT_NOT_VERY_EFFECTIVE)
{
- BtlController_EmitPlaySE(gBattlerTarget, BUFFER_A, SE_NOT_EFFECTIVE);
+ BtlController_EmitPlaySE(gBattlerTarget, B_COMM_TO_CONTROLLER, SE_NOT_EFFECTIVE);
MarkBattlerForControllerExec(gBattlerTarget);
}
else if (!(moveResultFlags & (MOVE_RESULT_DOESNT_AFFECT_FOE | MOVE_RESULT_FAILED)))
{
- BtlController_EmitPlaySE(gBattlerTarget, BUFFER_A, SE_EFFECTIVE);
+ BtlController_EmitPlaySE(gBattlerTarget, B_COMM_TO_CONTROLLER, SE_EFFECTIVE);
MarkBattlerForControllerExec(gBattlerTarget);
}
break;
@@ -2867,6 +2867,9 @@ static void Cmd_resultmessage(void)
if (gDisableStructs[gBattlerTarget].iceFaceActivationPrevention)
{
gDisableStructs[gBattlerTarget].iceFaceActivationPrevention = FALSE;
+ u32 side = GetBattlerSide(gBattlerTarget);
+ if (gBattleStruct->changedSpecies[side][gBattlerPartyIndexes[gBattlerTarget]] == SPECIES_NONE)
+ gBattleStruct->changedSpecies[side][gBattlerPartyIndexes[gBattlerTarget]] = gBattleMons[gBattlerTarget].species;
gBattleMons[gBattlerTarget].species = SPECIES_EISCUE_NOICE;
gBattleScripting.battler = gBattlerTarget; // For STRINGID_PKMNTRANSFORMED
BattleScriptPushCursor();
@@ -3035,7 +3038,7 @@ static void Cmd_printselectionstring(void)
{
CMD_ARGS(u16 id);
- BtlController_EmitPrintSelectionString(gBattlerAttacker, BUFFER_A, cmd->id);
+ BtlController_EmitPrintSelectionString(gBattlerAttacker, B_COMM_TO_CONTROLLER, cmd->id);
MarkBattlerForControllerExec(gBattlerAttacker);
gBattlescriptCurrInstr = cmd->nextInstr;
@@ -3091,7 +3094,7 @@ static void Cmd_printselectionstringfromtable(void)
const u16 *ptr = cmd->ptr;
ptr += gBattleCommunication[MULTISTRING_CHOOSER];
- BtlController_EmitPrintSelectionString(gBattlerAttacker, BUFFER_A, *ptr);
+ BtlController_EmitPrintSelectionString(gBattlerAttacker, B_COMM_TO_CONTROLLER, *ptr);
MarkBattlerForControllerExec(gBattlerAttacker);
gBattlescriptCurrInstr = cmd->nextInstr;
@@ -3134,18 +3137,18 @@ void StealTargetItem(u8 battlerStealer, u8 battlerItem)
}
else
{
- RecordItemEffectBattle(battlerStealer, ItemId_GetHoldEffect(gLastUsedItem));
+ RecordItemEffectBattle(battlerStealer, GetItemHoldEffect(gLastUsedItem));
gBattleMons[battlerStealer].item = gLastUsedItem;
gDisableStructs[battlerStealer].unburdenActive = FALSE;
- BtlController_EmitSetMonData(battlerStealer, BUFFER_A, REQUEST_HELDITEM_BATTLE, 0, sizeof(gLastUsedItem), &gLastUsedItem); // set attacker item
+ BtlController_EmitSetMonData(battlerStealer, B_COMM_TO_CONTROLLER, REQUEST_HELDITEM_BATTLE, 0, sizeof(gLastUsedItem), &gLastUsedItem); // set attacker item
MarkBattlerForControllerExec(battlerStealer);
}
RecordItemEffectBattle(battlerItem, ITEM_NONE);
CheckSetUnburden(battlerItem);
- BtlController_EmitSetMonData(battlerItem, BUFFER_A, REQUEST_HELDITEM_BATTLE, 0, sizeof(gBattleMons[gBattlerTarget].item), &gBattleMons[battlerItem].item); // remove target item
+ BtlController_EmitSetMonData(battlerItem, B_COMM_TO_CONTROLLER, REQUEST_HELDITEM_BATTLE, 0, sizeof(gBattleMons[gBattlerTarget].item), &gBattleMons[battlerItem].item); // remove target item
MarkBattlerForControllerExec(battlerItem);
gBattleStruct->choicedMove[battlerItem] = 0;
@@ -3224,7 +3227,7 @@ void SetNonVolatileStatusCondition(u32 effectBattler, enum MoveEffects effect)
gBattlescriptCurrInstr = sMoveEffectBS_Ptrs[effect];
- BtlController_EmitSetMonData(effectBattler, BUFFER_A, REQUEST_STATUS_BATTLE, 0, sizeof(gBattleMons[effectBattler].status1), &gBattleMons[effectBattler].status1);
+ 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)
@@ -3283,17 +3286,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:
- 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;
}
@@ -3382,7 +3379,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;
@@ -3627,6 +3624,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;
@@ -3637,34 +3637,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:
@@ -3796,14 +3794,14 @@ void SetMoveEffect(bool32 primary, bool32 certain)
gBattleMons[gEffectBattler].item = 0;
CheckSetUnburden(gEffectBattler);
- BtlController_EmitSetMonData(gEffectBattler, BUFFER_A, REQUEST_HELDITEM_BATTLE, 0, sizeof(gBattleMons[gEffectBattler].item), &gBattleMons[gEffectBattler].item);
+ BtlController_EmitSetMonData(gEffectBattler, B_COMM_TO_CONTROLLER, REQUEST_HELDITEM_BATTLE, 0, sizeof(gBattleMons[gEffectBattler].item), &gBattleMons[gEffectBattler].item);
MarkBattlerForControllerExec(gEffectBattler);
BattleScriptPush(gBattlescriptCurrInstr + 1);
gBattlescriptCurrInstr = BattleScript_MoveEffectIncinerate;
}
break;
case MOVE_EFFECT_BUG_BITE:
- if (ItemId_GetPocket(gBattleMons[gEffectBattler].item) == POCKET_BERRIES
+ if (GetItemPocket(gBattleMons[gEffectBattler].item) == POCKET_BERRIES
&& battlerAbility != ABILITY_STICKY_HOLD)
{
// target loses their berry
@@ -3811,7 +3809,7 @@ void SetMoveEffect(bool32 primary, bool32 certain)
gBattleMons[gEffectBattler].item = 0;
CheckSetUnburden(gEffectBattler);
- BtlController_EmitSetMonData(gEffectBattler, BUFFER_A, REQUEST_HELDITEM_BATTLE, 0, sizeof(gBattleMons[gEffectBattler].item), &gBattleMons[gEffectBattler].item);
+ BtlController_EmitSetMonData(gEffectBattler, B_COMM_TO_CONTROLLER, REQUEST_HELDITEM_BATTLE, 0, sizeof(gBattleMons[gEffectBattler].item), &gBattleMons[gEffectBattler].item);
MarkBattlerForControllerExec(gEffectBattler);
BattleScriptPush(gBattlescriptCurrInstr + 1);
gBattlescriptCurrInstr = BattleScript_MoveEffectBugBite;
@@ -4113,7 +4111,7 @@ void SetMoveEffect(bool32 primary, bool32 certain)
if (!(gDisableStructs[gBattlerTarget].mimickedMoves & (1u << i))
&& !(gBattleMons[gBattlerTarget].status2 & STATUS2_TRANSFORMED))
{
- BtlController_EmitSetMonData(gBattlerTarget, BUFFER_A, REQUEST_PPMOVE1_BATTLE + i, 0, sizeof(gBattleMons[gBattlerTarget].pp[i]), &gBattleMons[gBattlerTarget].pp[i]);
+ BtlController_EmitSetMonData(gBattlerTarget, B_COMM_TO_CONTROLLER, REQUEST_PPMOVE1_BATTLE + i, 0, sizeof(gBattleMons[gBattlerTarget].pp[i]), &gBattleMons[gBattlerTarget].pp[i]);
MarkBattlerForControllerExec(gBattlerTarget);
}
@@ -4476,6 +4474,44 @@ void SetMoveEffect(bool32 primary, bool32 certain)
SetMoveEffect(primary, 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;
+ }
}
}
}
@@ -4671,7 +4707,7 @@ static void Cmd_tryfaintmon(void)
gBattleMons[gBattlerAttacker].pp[moveIndex] = 0;
BattleScriptPush(gBattlescriptCurrInstr);
gBattlescriptCurrInstr = BattleScript_GrudgeTakesPp;
- BtlController_EmitSetMonData(gBattlerAttacker, BUFFER_A, moveIndex + REQUEST_PPMOVE1_BATTLE, 0, sizeof(gBattleMons[gBattlerAttacker].pp[moveIndex]), &gBattleMons[gBattlerAttacker].pp[moveIndex]);
+ BtlController_EmitSetMonData(gBattlerAttacker, B_COMM_TO_CONTROLLER, moveIndex + REQUEST_PPMOVE1_BATTLE, 0, sizeof(gBattleMons[gBattlerAttacker].pp[moveIndex]), &gBattleMons[gBattlerAttacker].pp[moveIndex]);
MarkBattlerForControllerExec(gBattlerAttacker);
PREPARE_MOVE_BUFFER(gBattleTextBuff1, gBattleMons[gBattlerAttacker].moves[moveIndex])
@@ -4704,7 +4740,7 @@ static void Cmd_dofaintanimation(void)
return;
}
- BtlController_EmitFaintAnimation(battler, BUFFER_A);
+ BtlController_EmitFaintAnimation(battler, B_COMM_TO_CONTROLLER);
MarkBattlerForControllerExec(battler);
gBattlescriptCurrInstr = cmd->nextInstr;
}
@@ -4720,7 +4756,7 @@ static void Cmd_cleareffectsonfaint(void)
if (!(gBattleTypeFlags & BATTLE_TYPE_ARENA) || !IsBattlerAlive(battler))
{
gBattleMons[battler].status1 = 0;
- BtlController_EmitSetMonData(battler, BUFFER_A, REQUEST_STATUS_BATTLE, 0, sizeof(gBattleMons[battler].status1), &gBattleMons[battler].status1);
+ BtlController_EmitSetMonData(battler, B_COMM_TO_CONTROLLER, REQUEST_STATUS_BATTLE, 0, sizeof(gBattleMons[battler].status1), &gBattleMons[battler].status1);
MarkBattlerForControllerExec(battler);
}
@@ -4914,7 +4950,7 @@ static u32 GetMonHoldEffect(struct Pokemon *mon)
holdEffect = 0;
#endif //FREE_ENIGMA_BERRY
else
- holdEffect = ItemId_GetHoldEffect(item);
+ holdEffect = GetItemHoldEffect(item);
return holdEffect;
}
@@ -5151,8 +5187,9 @@ static void Cmd_getexp(void)
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, BUFFER_A, *expMonId, gBattleStruct->battlerExpReward);
+ BtlController_EmitExpUpdate(gBattleStruct->expGetterBattlerId, B_COMM_TO_CONTROLLER, *expMonId, gBattleStruct->battlerExpReward);
MarkBattlerForControllerExec(gBattleStruct->expGetterBattlerId);
}
gBattleScripting.getexpState++;
@@ -5232,8 +5269,9 @@ static void Cmd_getexp(void)
}
}
-bool32 NoAliveMonsForBattlerSide(u32 battler)
+static u32 CountAliveMonsForBattlerSide(u32 battler)
{
+ u32 aliveMons = 0;
struct Pokemon *party = GetBattlerParty(battler);
for (u32 partyMon = 0; partyMon < PARTY_SIZE; partyMon++)
@@ -5241,10 +5279,15 @@ bool32 NoAliveMonsForBattlerSide(u32 battler)
if (GetMonData(&party[partyMon], MON_DATA_SPECIES)
&& GetMonData(&party[partyMon], MON_DATA_HP) > 0
&& !GetMonData(&party[partyMon], MON_DATA_IS_EGG))
- return FALSE;
+ aliveMons++;
}
- return TRUE;
+ return aliveMons;
+}
+
+bool32 NoAliveMonsForBattlerSide(u32 battler)
+{
+ return CountAliveMonsForBattlerSide(battler) == 0;
}
bool32 NoAliveMonsForPlayer(void)
@@ -5362,7 +5405,12 @@ static void Cmd_checkteamslost(void)
}
else
{
- if (emptyOpponentSpots != 0 && emptyPlayerSpots != 0)
+ u32 occupiedPlayerSpots = (gBattlersCount / 2) - emptyPlayerSpots;
+ u32 occupiedOpponentSpots = (gBattlersCount / 2) - emptyOpponentSpots;
+ u32 alivePlayerPartyMons = CountAliveMonsForBattlerSide(B_POSITION_PLAYER_LEFT) - occupiedPlayerSpots;
+ u32 aliveOpponentPartyMons = CountAliveMonsForBattlerSide(B_POSITION_OPPONENT_LEFT) - occupiedOpponentSpots;
+
+ if (emptyPlayerSpots > 0 && alivePlayerPartyMons > 0 && emptyOpponentSpots > 0 && aliveOpponentPartyMons > 0)
gBattlescriptCurrInstr = cmd->jumpInstr;
else
gBattlescriptCurrInstr = cmd->nextInstr;
@@ -5738,7 +5786,7 @@ static void Cmd_absorb(void)
return;
u32 battler = GetBattlerForBattleScript(cmd->battler);
- BtlController_EmitHealthBarUpdate(battler, BUFFER_A, gBattleStruct->moveDamage[battler]);
+ BtlController_EmitHealthBarUpdate(battler, B_COMM_TO_CONTROLLER, gBattleStruct->moveDamage[battler]);
MarkBattlerForControllerExec(battler);
if (IsOnPlayerSide(battler) && gBattleStruct->moveDamage[battler] > 0)
@@ -5843,7 +5891,7 @@ static void PlayAnimation(u32 battler, u8 animId, const u16 *argPtr, const u8 *n
|| animId == B_ANIM_TERA_CHARGE
|| animId == B_ANIM_TERA_ACTIVATE)
{
- BtlController_EmitBattleAnimation(battler, BUFFER_A, animId, &gDisableStructs[battler], *argPtr);
+ BtlController_EmitBattleAnimation(battler, B_COMM_TO_CONTROLLER, animId, &gDisableStructs[battler], *argPtr);
MarkBattlerForControllerExec(battler);
gBattlescriptCurrInstr = nextInstr;
}
@@ -5859,7 +5907,7 @@ static void PlayAnimation(u32 battler, u8 animId, const u16 *argPtr, const u8 *n
|| animId == B_ANIM_SNOW_CONTINUES
|| animId == B_ANIM_FOG_CONTINUES)
{
- BtlController_EmitBattleAnimation(battler, BUFFER_A, animId, &gDisableStructs[battler], *argPtr);
+ BtlController_EmitBattleAnimation(battler, B_COMM_TO_CONTROLLER, animId, &gDisableStructs[battler], *argPtr);
MarkBattlerForControllerExec(battler);
gBattlescriptCurrInstr = nextInstr;
}
@@ -5869,7 +5917,7 @@ static void PlayAnimation(u32 battler, u8 animId, const u16 *argPtr, const u8 *n
}
else
{
- BtlController_EmitBattleAnimation(battler, BUFFER_A, animId, &gDisableStructs[battler], *argPtr);
+ BtlController_EmitBattleAnimation(battler, B_COMM_TO_CONTROLLER, animId, &gDisableStructs[battler], *argPtr);
MarkBattlerForControllerExec(battler);
gBattlescriptCurrInstr = nextInstr;
}
@@ -6034,7 +6082,7 @@ static void Cmd_playstatchangeanimation(void)
}
else if (changeableStatsCount != 0 && !gBattleScripting.statAnimPlayed)
{
- BtlController_EmitBattleAnimation(battler, BUFFER_A, B_ANIM_STATS_CHANGE, &gDisableStructs[battler], statAnimId);
+ BtlController_EmitBattleAnimation(battler, B_COMM_TO_CONTROLLER, B_ANIM_STATS_CHANGE, &gDisableStructs[battler], statAnimId);
MarkBattlerForControllerExec(battler);
if (flags & STAT_CHANGE_MULTIPLE_STATS && changeableStatsCount > 1)
gBattleScripting.statAnimPlayed = TRUE;
@@ -6071,7 +6119,7 @@ static bool32 TryKnockOffBattleScript(u32 battlerDef)
// In Gen 5+, Knock Off removes the target's item rather than rendering it unusable.
if (B_KNOCK_OFF_REMOVAL >= GEN_5)
{
- BtlController_EmitSetMonData(battlerDef, BUFFER_A, REQUEST_HELDITEM_BATTLE, 0, sizeof(gBattleMons[battlerDef].item), &gBattleMons[battlerDef].item);
+ BtlController_EmitSetMonData(battlerDef, B_COMM_TO_CONTROLLER, REQUEST_HELDITEM_BATTLE, 0, sizeof(gBattleMons[battlerDef].item), &gBattleMons[battlerDef].item);
MarkBattlerForControllerExec(battlerDef);
}
else
@@ -6426,7 +6474,7 @@ static void Cmd_moveend(void)
{
gProtectStructs[gBattlerAttacker].touchedProtectLike = FALSE;
gBattleMons[gBattlerAttacker].status1 = STATUS1_BURN;
- BtlController_EmitSetMonData(gBattlerAttacker, BUFFER_A, REQUEST_STATUS_BATTLE, 0, sizeof(gBattleMons[gBattlerAttacker].status1), &gBattleMons[gBattlerAttacker].status1);
+ BtlController_EmitSetMonData(gBattlerAttacker, B_COMM_TO_CONTROLLER, REQUEST_STATUS_BATTLE, 0, sizeof(gBattleMons[gBattlerAttacker].status1), &gBattleMons[gBattlerAttacker].status1);
MarkBattlerForControllerExec(gBattlerAttacker);
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_BeakBlastBurn;
@@ -6542,17 +6590,56 @@ static void Cmd_moveend(void)
effect = TRUE;
gBattleScripting.moveendState++;
break;
- case MOVEEND_FIRST_MOVE_BLOCK: // 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)
+ {
+ gBattleScripting.moveendState++;
+ break;
+ }
+
+ switch (moveEffect)
{
- case MOVE_EFFECT_KNOCK_OFF:
+ case EFFECT_KNOCK_OFF:
if (!DoesSubstituteBlockMove(gBattlerAttacker, gBattlerTarget, gCurrentMove))
- {
effect = TryKnockOffBattleScript(gBattlerTarget);
+ break;
+ case EFFECT_HIT_SWITCH_TARGET:
+ if (IsBattlerTurnDamaged(gBattlerTarget)
+ && IsBattlerAlive(gBattlerTarget)
+ && IsBattlerAlive(gBattlerAttacker)
+ && !(gStatuses3[BATTLE_PARTNER(gBattlerTarget)] & STATUS3_COMMANDER))
+ {
+ 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;
+ }
}
break;
- case MOVE_EFFECT_SMACK_DOWN:
+ case EFFECT_SMACK_DOWN:
if (!IsBattlerGrounded(gBattlerTarget)
&& IsBattlerAlive(gBattlerTarget)
&& !DoesSubstituteBlockMove(gBattlerAttacker, gBattlerTarget, gCurrentMove))
@@ -6564,97 +6651,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))
@@ -6665,7 +6672,7 @@ static void Cmd_moveend(void)
if (gStatuses3[gBattlerAttacker] & (STATUS3_SEMI_INVULNERABLE)
&& gHitMarker & (HITMARKER_NO_ANIMATIONS | HITMARKER_DISABLE_ANIMATION))
{
- BtlController_EmitSpriteInvisibility(gBattlerAttacker, BUFFER_A, TRUE);
+ BtlController_EmitSpriteInvisibility(gBattlerAttacker, B_COMM_TO_CONTROLLER, TRUE);
MarkBattlerForControllerExec(gBattlerAttacker);
gBattleScripting.moveendState++;
return;
@@ -6677,7 +6684,7 @@ static void Cmd_moveend(void)
|| !(gStatuses3[gBattlerAttacker] & (STATUS3_SEMI_INVULNERABLE))
|| WasUnableToUseMove(gBattlerAttacker))
{
- BtlController_EmitSpriteInvisibility(gBattlerAttacker, BUFFER_A, FALSE);
+ BtlController_EmitSpriteInvisibility(gBattlerAttacker, B_COMM_TO_CONTROLLER, FALSE);
MarkBattlerForControllerExec(gBattlerAttacker);
gStatuses3[gBattlerAttacker] &= ~STATUS3_SEMI_INVULNERABLE;
gSpecialStatuses[gBattlerAttacker].restoredBattlerSprite = TRUE;
@@ -6690,7 +6697,7 @@ static void Cmd_moveend(void)
if (!gSpecialStatuses[gBattlerTarget].restoredBattlerSprite && gBattlerTarget < gBattlersCount
&& !(gStatuses3[gBattlerTarget] & STATUS3_SEMI_INVULNERABLE))
{
- BtlController_EmitSpriteInvisibility(gBattlerTarget, BUFFER_A, FALSE);
+ BtlController_EmitSpriteInvisibility(gBattlerTarget, B_COMM_TO_CONTROLLER, FALSE);
MarkBattlerForControllerExec(gBattlerTarget);
gStatuses3[gBattlerTarget] &= ~STATUS3_SEMI_INVULNERABLE;
gBattleScripting.moveendState++;
@@ -6924,9 +6931,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)
@@ -6964,7 +6973,7 @@ static void Cmd_moveend(void)
&& !(gBattleStruct->moveResultFlags[gBattlerTarget] & MOVE_RESULT_NO_EFFECT))
{
gBattleMons[gBattlerTarget].status1 &= ~STATUS1_FREEZE;
- BtlController_EmitSetMonData(gBattlerTarget, BUFFER_A, REQUEST_STATUS_BATTLE, 0, sizeof(gBattleMons[gBattlerTarget].status1), &gBattleMons[gBattlerTarget].status1);
+ BtlController_EmitSetMonData(gBattlerTarget, B_COMM_TO_CONTROLLER, REQUEST_STATUS_BATTLE, 0, sizeof(gBattleMons[gBattlerTarget].status1), &gBattleMons[gBattlerTarget].status1);
MarkBattlerForControllerExec(gBattlerTarget);
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_DefrostedViaFireMove;
@@ -6977,7 +6986,7 @@ static void Cmd_moveend(void)
&& !(gBattleStruct->moveResultFlags[gBattlerTarget] & MOVE_RESULT_NO_EFFECT))
{
gBattleMons[gBattlerTarget].status1 &= ~STATUS1_FROSTBITE;
- BtlController_EmitSetMonData(gBattlerTarget, BUFFER_A, REQUEST_STATUS_BATTLE, 0, sizeof(gBattleMons[gBattlerTarget].status1), &gBattleMons[gBattlerTarget].status1);
+ BtlController_EmitSetMonData(gBattlerTarget, B_COMM_TO_CONTROLLER, REQUEST_STATUS_BATTLE, 0, sizeof(gBattleMons[gBattlerTarget].status1), &gBattleMons[gBattlerTarget].status1);
MarkBattlerForControllerExec(gBattlerTarget);
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_FrostbiteHealedViaFireMove;
@@ -7065,6 +7074,7 @@ static void Cmd_moveend(void)
gBattlescriptCurrInstr = BattleScript_FellStingerRaisesStat;
effect = TRUE;
}
+ break;
default:
break;
}
@@ -7123,7 +7133,7 @@ static void Cmd_moveend(void)
gBattleStruct->battlerState[battler].usedEjectItem = TRUE;
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_EjectButtonActivates;
- AI_DATA->ejectButtonSwitch = TRUE;
+ gAiLogicData->ejectButtonSwitch = TRUE;
break; // Only the fastest Eject Button activates
}
}
@@ -7177,7 +7187,7 @@ static void Cmd_moveend(void)
gBattleStruct->battlerState[battler].usedEjectItem = TRUE;
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_EjectPackActivates;
- AI_DATA->ejectPackSwitch = TRUE;
+ gAiLogicData->ejectPackSwitch = TRUE;
break; // Only the fastest Eject item activates
}
}
@@ -7578,7 +7588,7 @@ static void Cmd_returnatktoball(void)
if (!(gHitMarker & HITMARKER_FAINTED(gBattlerAttacker)))
{
- BtlController_EmitReturnMonToBall(gBattlerAttacker, BUFFER_A, FALSE);
+ BtlController_EmitReturnMonToBall(gBattlerAttacker, B_COMM_TO_CONTROLLER, FALSE);
MarkBattlerForControllerExec(gBattlerAttacker);
}
gBattlescriptCurrInstr = cmd->nextInstr;
@@ -7594,7 +7604,7 @@ static void Cmd_getswitchedmondata(void)
gBattlerPartyIndexes[battler] = gBattleStruct->monToSwitchIntoId[battler];
- BtlController_EmitGetMonData(battler, BUFFER_A, REQUEST_ALL_BATTLE, 1u << gBattlerPartyIndexes[battler]);
+ BtlController_EmitGetMonData(battler, B_COMM_TO_CONTROLLER, REQUEST_ALL_BATTLE, 1u << gBattlerPartyIndexes[battler]);
MarkBattlerForControllerExec(battler);
gBattlescriptCurrInstr = cmd->nextInstr;
@@ -7640,7 +7650,7 @@ static void Cmd_switchindataupdate(void)
if (i != PARTY_SIZE)
{
gBattlerPartyIndexes[battler] = gBattleStruct->monToSwitchIntoId[battler] = i;
- BtlController_EmitGetMonData(battler, BUFFER_A, REQUEST_ALL_BATTLE, 1u << gBattlerPartyIndexes[battler]);
+ BtlController_EmitGetMonData(battler, B_COMM_TO_CONTROLLER, REQUEST_ALL_BATTLE, 1u << gBattlerPartyIndexes[battler]);
MarkBattlerForControllerExec(battler);
return;
}
@@ -7715,7 +7725,7 @@ static void Cmd_switchinanim(void)
gAbsentBattlerFlags &= ~(1u << battler);
- BtlController_EmitSwitchInAnim(battler, BUFFER_A, gBattlerPartyIndexes[battler], cmd->dontClearTransform, cmd->dontClearSubstitute);
+ BtlController_EmitSwitchInAnim(battler, B_COMM_TO_CONTROLLER, gBattlerPartyIndexes[battler], cmd->dontClearTransform, cmd->dontClearSubstitute);
MarkBattlerForControllerExec(battler);
gBattlescriptCurrInstr = cmd->nextInstr;
@@ -7894,7 +7904,7 @@ static void ChooseMonToSendOut(u32 battler, u8 slotId)
gBattleStruct->monToSwitchIntoId[battler] = PARTY_SIZE;
gBattleStruct->field_93 &= ~(1u << battler);
- BtlController_EmitChoosePokemon(battler, BUFFER_A, PARTY_ACTION_SEND_OUT, slotId, ABILITY_NONE, gBattleStruct->battlerPartyOrders[battler]);
+ BtlController_EmitChoosePokemon(battler, B_COMM_TO_CONTROLLER, PARTY_ACTION_SEND_OUT, slotId, ABILITY_NONE, gBattleStruct->battlerPartyOrders[battler]);
MarkBattlerForControllerExec(battler);
}
@@ -7919,7 +7929,7 @@ static void Cmd_openpartyscreen(void)
{
gAbsentBattlerFlags |= 1u << battler;
gHitMarker &= ~HITMARKER_FAINTED(battler);
- BtlController_EmitLinkStandbyMsg(battler, BUFFER_A, LINK_STANDBY_MSG_ONLY, FALSE);
+ BtlController_EmitLinkStandbyMsg(battler, B_COMM_TO_CONTROLLER, LINK_STANDBY_MSG_ONLY, FALSE);
MarkBattlerForControllerExec(battler);
}
else if (!gSpecialStatuses[battler].faintedHasReplacement)
@@ -7930,7 +7940,7 @@ static void Cmd_openpartyscreen(void)
}
else
{
- BtlController_EmitLinkStandbyMsg(battler, BUFFER_A, LINK_STANDBY_MSG_ONLY, FALSE);
+ BtlController_EmitLinkStandbyMsg(battler, B_COMM_TO_CONTROLLER, LINK_STANDBY_MSG_ONLY, FALSE);
MarkBattlerForControllerExec(battler);
}
}
@@ -7952,7 +7962,7 @@ static void Cmd_openpartyscreen(void)
{
gAbsentBattlerFlags |= 1u << battler;
gHitMarker &= ~HITMARKER_FAINTED(battler);
- BtlController_EmitCantSwitch(battler, BUFFER_A);
+ BtlController_EmitCantSwitch(battler, B_COMM_TO_CONTROLLER);
MarkBattlerForControllerExec(battler);
}
else if (!gSpecialStatuses[battler].faintedHasReplacement)
@@ -7962,7 +7972,7 @@ static void Cmd_openpartyscreen(void)
}
else if (battler < 2 || (battler > 1 && !(flags & BATTLE_PARTNER(battler))))
{
- BtlController_EmitLinkStandbyMsg(battler, BUFFER_A, LINK_STANDBY_MSG_ONLY, FALSE);
+ BtlController_EmitLinkStandbyMsg(battler, B_COMM_TO_CONTROLLER, LINK_STANDBY_MSG_ONLY, FALSE);
MarkBattlerForControllerExec(battler);
flags |= battler;
}
@@ -7981,7 +7991,7 @@ static void Cmd_openpartyscreen(void)
else
battler = i;
- BtlController_EmitLinkStandbyMsg(battler, BUFFER_A, LINK_STANDBY_MSG_ONLY, FALSE);
+ BtlController_EmitLinkStandbyMsg(battler, B_COMM_TO_CONTROLLER, LINK_STANDBY_MSG_ONLY, FALSE);
MarkBattlerForControllerExec(battler);
}
}
@@ -8005,7 +8015,7 @@ static void Cmd_openpartyscreen(void)
{
gAbsentBattlerFlags |= (1u << battler);
gHitMarker &= ~(HITMARKER_FAINTED(battler));
- BtlController_EmitCantSwitch(battler, BUFFER_A);
+ BtlController_EmitCantSwitch(battler, B_COMM_TO_CONTROLLER);
MarkBattlerForControllerExec(battler);
}
else if (!gSpecialStatuses[battler].faintedHasReplacement)
@@ -8063,7 +8073,7 @@ static void Cmd_openpartyscreen(void)
gBattleStruct->monToSwitchIntoId[battler] = PARTY_SIZE;
gBattleStruct->field_93 &= ~(1u << battler);
- BtlController_EmitChoosePokemon(battler, BUFFER_A, hitmarkerFaintBits, gBattleStruct->monToSwitchIntoId[BATTLE_PARTNER(battler)], ABILITY_NONE, gBattleStruct->battlerPartyOrders[battler]);
+ BtlController_EmitChoosePokemon(battler, B_COMM_TO_CONTROLLER, hitmarkerFaintBits, gBattleStruct->monToSwitchIntoId[BATTLE_PARTNER(battler)], ABILITY_NONE, gBattleStruct->battlerPartyOrders[battler]);
MarkBattlerForControllerExec(battler);
gBattlescriptCurrInstr = cmd->nextInstr;
@@ -8077,7 +8087,7 @@ static void Cmd_openpartyscreen(void)
{
if (i != battler)
{
- BtlController_EmitLinkStandbyMsg(i, BUFFER_A, LINK_STANDBY_MSG_ONLY, FALSE);
+ BtlController_EmitLinkStandbyMsg(i, B_COMM_TO_CONTROLLER, LINK_STANDBY_MSG_ONLY, FALSE);
MarkBattlerForControllerExec(i);
}
}
@@ -8091,7 +8101,7 @@ static void Cmd_openpartyscreen(void)
// Make sure we're checking a valid battler. In edge case scenarios - battler could be absent and battlerOpposite would become a non-existent one softlocking the game.
if (battlerOpposite < gBattlersCount)
{
- BtlController_EmitLinkStandbyMsg(battlerOpposite, BUFFER_A, LINK_STANDBY_MSG_ONLY, FALSE);
+ BtlController_EmitLinkStandbyMsg(battlerOpposite, B_COMM_TO_CONTROLLER, LINK_STANDBY_MSG_ONLY, FALSE);
MarkBattlerForControllerExec(battlerOpposite);
}
}
@@ -8286,7 +8296,7 @@ static bool32 DoSwitchInEffectsForBattler(u32 battler)
else
gBattleMons[battler].status1 |= STATUS1_POISON;
- BtlController_EmitSetMonData(battler, BUFFER_A, REQUEST_STATUS_BATTLE, 0, sizeof(gBattleMons[battler].status1), &gBattleMons[battler].status1);
+ BtlController_EmitSetMonData(battler, B_COMM_TO_CONTROLLER, REQUEST_STATUS_BATTLE, 0, sizeof(gBattleMons[battler].status1), &gBattleMons[battler].status1);
MarkBattlerForControllerExec(battler);
gBattleScripting.battler = battler;
BattleScriptPushCursor();
@@ -8455,7 +8465,7 @@ static void Cmd_trainerslidein(void)
CMD_ARGS(u8 position);
u32 battler = GetBattlerForBattleScript(cmd->position);
- BtlController_EmitTrainerSlide(battler, BUFFER_A);
+ BtlController_EmitTrainerSlide(battler, B_COMM_TO_CONTROLLER);
MarkBattlerForControllerExec(battler);
gBattlescriptCurrInstr = cmd->nextInstr;
@@ -8465,7 +8475,7 @@ static void Cmd_playse(void)
{
CMD_ARGS(u16 song);
- BtlController_EmitPlaySE(gBattlerAttacker, BUFFER_A, cmd->song);
+ BtlController_EmitPlaySE(gBattlerAttacker, B_COMM_TO_CONTROLLER, cmd->song);
MarkBattlerForControllerExec(gBattlerAttacker);
gBattlescriptCurrInstr = cmd->nextInstr;
@@ -8475,7 +8485,7 @@ static void Cmd_fanfare(void)
{
CMD_ARGS(u16 song);
- BtlController_EmitPlayFanfareOrBGM(gBattlerAttacker, BUFFER_A, cmd->song, FALSE);
+ BtlController_EmitPlayFanfareOrBGM(gBattlerAttacker, B_COMM_TO_CONTROLLER, cmd->song, FALSE);
MarkBattlerForControllerExec(gBattlerAttacker);
gBattlescriptCurrInstr = cmd->nextInstr;
@@ -8486,7 +8496,7 @@ static void Cmd_playfaintcry(void)
CMD_ARGS(u8 battler);
u32 battler = GetBattlerForBattleScript(cmd->battler);
- BtlController_EmitFaintingCry(battler, BUFFER_A);
+ BtlController_EmitFaintingCry(battler, B_COMM_TO_CONTROLLER);
MarkBattlerForControllerExec(battler);
gBattlescriptCurrInstr = cmd->nextInstr;
@@ -8497,7 +8507,7 @@ static void Cmd_endlinkbattle(void)
CMD_ARGS();
u32 battler = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT);
- BtlController_EmitEndLinkBattle(battler, BUFFER_A, gBattleOutcome);
+ BtlController_EmitEndLinkBattle(battler, B_COMM_TO_CONTROLLER, gBattleOutcome);
MarkBattlerForControllerExec(battler);
gBattlescriptCurrInstr = cmd->nextInstr;
@@ -8508,7 +8518,7 @@ static void Cmd_returntoball(void)
CMD_ARGS(u8 battler, bool8 changingForm);
u32 battler = GetBattlerForBattleScript(cmd->battler);
- BtlController_EmitReturnMonToBall(battler, BUFFER_A, TRUE);
+ BtlController_EmitReturnMonToBall(battler, B_COMM_TO_CONTROLLER, TRUE);
MarkBattlerForControllerExec(battler);
// Don't always execute a form change here otherwise we can stomp gigantamax
@@ -8524,11 +8534,13 @@ static void Cmd_handlelearnnewmove(void)
u16 learnMove = MOVE_NONE;
u32 monId = gBattleStruct->expGetterMonId;
+ u32 currLvl = GetMonData(&gPlayerParty[monId], MON_DATA_LEVEL);
- if (B_LEVEL_UP_NOTIFICATION >= GEN_9)
- {
- 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);
@@ -8652,8 +8664,8 @@ static void Cmd_yesnoboxlearnmove(void)
}
else
{
- u16 moveId = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_MOVE1 + movePosition);
- if (IsMoveHM(moveId))
+ u16 move = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_MOVE1 + movePosition);
+ if (IsMoveHM(move))
{
PrepareStringBattle(STRINGID_HMMOVESCANTBEFORGOTTEN, B_POSITION_PLAYER_LEFT);
gBattleScripting.learnMoveState = 6;
@@ -8662,7 +8674,7 @@ static void Cmd_yesnoboxlearnmove(void)
{
gBattlescriptCurrInstr = cmd->forgotMovePtr;
- PREPARE_MOVE_BUFFER(gBattleTextBuff2, moveId)
+ PREPARE_MOVE_BUFFER(gBattleTextBuff2, move)
RemoveMonPPBonus(&gPlayerParty[gBattleStruct->expGetterMonId], movePosition);
SetMonMoveSlot(&gPlayerParty[gBattleStruct->expGetterMonId], gMoveToLearn, movePosition);
@@ -8759,7 +8771,7 @@ static void Cmd_hitanimation(void)
|| !(DoesSubstituteBlockMove(gBattlerAttacker, battler, gCurrentMove))
|| gDisableStructs[battler].substituteHP == 0)
{
- BtlController_EmitHitAnimation(battler, BUFFER_A);
+ BtlController_EmitHitAnimation(battler, B_COMM_TO_CONTROLLER);
MarkBattlerForControllerExec(battler);
}
}
@@ -8777,7 +8789,7 @@ static void Cmd_hitanimation(void)
|| !(DoesSubstituteBlockMove(gBattlerAttacker, battlerDef, gCurrentMove))
|| gDisableStructs[battlerDef].substituteHP == 0)
{
- BtlController_EmitHitAnimation(battlerDef, BUFFER_A);
+ BtlController_EmitHitAnimation(battlerDef, B_COMM_TO_CONTROLLER);
MarkBattlerForControllerExec(battlerDef);
}
}
@@ -8831,22 +8843,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)
- {
- if (GetMonData(&gPlayerParty[i], MON_DATA_LEVEL) > sPartyLevel)
- sPartyLevel = GetMonData(&gPlayerParty[i], MON_DATA_LEVEL);
- }
+ money = GetMoney(&gSaveBlock1Ptr->money) / 2;
}
- for (count = 0, i = 0; i < ARRAY_COUNT(gBadgeFlags); i++)
+ else
{
- if (FlagGet(gBadgeFlags[i]) == TRUE)
- ++count;
+ s32 i, count;
+ for (i = 0; i < PARTY_SIZE; i++)
+ {
+ 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;
}
- money = sWhiteOutBadgeMoney[count] * sPartyLevel;
RemoveMoney(&gSaveBlock1Ptr->money, money);
}
@@ -8864,7 +8883,7 @@ static void Cmd_updatebattlermoves(void)
switch (gBattleCommunication[0])
{
case 0:
- BtlController_EmitGetMonData(battler, BUFFER_A, REQUEST_ALL_BATTLE, 0);
+ BtlController_EmitGetMonData(battler, B_COMM_TO_CONTROLLER, REQUEST_ALL_BATTLE, 0);
MarkBattlerForControllerExec(battler);
gBattleCommunication[0]++;
break;
@@ -8932,7 +8951,7 @@ static void Cmd_drawpartystatussummary(void)
}
}
- BtlController_EmitDrawPartyStatusSummary(battler, BUFFER_A, hpStatuses, 1);
+ BtlController_EmitDrawPartyStatusSummary(battler, B_COMM_TO_CONTROLLER, hpStatuses, 1);
MarkBattlerForControllerExec(battler);
gBattlescriptCurrInstr = cmd->nextInstr;
@@ -8943,7 +8962,7 @@ static void Cmd_hidepartystatussummary(void)
CMD_ARGS(u8 battler);
u32 battler = GetBattlerForBattleScript(cmd->battler);
- BtlController_EmitHidePartyStatusSummary(battler, BUFFER_A);
+ BtlController_EmitHidePartyStatusSummary(battler, B_COMM_TO_CONTROLLER);
MarkBattlerForControllerExec(battler);
gBattlescriptCurrInstr = cmd->nextInstr;
@@ -8987,7 +9006,7 @@ static void Cmd_statusanimation(void)
&& gDisableStructs[battler].substituteHP == 0
&& !(gHitMarker & (HITMARKER_NO_ANIMATIONS | HITMARKER_DISABLE_ANIMATION)))
{
- BtlController_EmitStatusAnimation(battler, BUFFER_A, FALSE, gBattleMons[battler].status1);
+ BtlController_EmitStatusAnimation(battler, B_COMM_TO_CONTROLLER, FALSE, gBattleMons[battler].status1);
MarkBattlerForControllerExec(battler);
}
gBattlescriptCurrInstr = cmd->nextInstr;
@@ -9006,7 +9025,7 @@ static void Cmd_status2animation(void)
&& gDisableStructs[battler].substituteHP == 0
&& !(gHitMarker & (HITMARKER_NO_ANIMATIONS | HITMARKER_DISABLE_ANIMATION)))
{
- BtlController_EmitStatusAnimation(battler, BUFFER_A, TRUE, gBattleMons[battler].status2 & status2ToAnim);
+ BtlController_EmitStatusAnimation(battler, B_COMM_TO_CONTROLLER, TRUE, gBattleMons[battler].status2 & status2ToAnim);
MarkBattlerForControllerExec(battler);
}
gBattlescriptCurrInstr = cmd->nextInstr;
@@ -9025,7 +9044,7 @@ static void Cmd_chosenstatusanimation(void)
&& gDisableStructs[battler].substituteHP == 0
&& !(gHitMarker & (HITMARKER_NO_ANIMATIONS | HITMARKER_DISABLE_ANIMATION)))
{
- BtlController_EmitStatusAnimation(battler, BUFFER_A, cmd->isStatus2, wantedStatus);
+ BtlController_EmitStatusAnimation(battler, B_COMM_TO_CONTROLLER, cmd->isStatus2, wantedStatus);
MarkBattlerForControllerExec(battler);
}
gBattlescriptCurrInstr = cmd->nextInstr;
@@ -9107,7 +9126,7 @@ static void Cmd_setgravity(void)
static bool32 TryCheekPouch(u32 battler, u32 itemId)
{
- if (ItemId_GetPocket(itemId) == POCKET_BERRIES
+ if (GetItemPocket(itemId) == POCKET_BERRIES
&& GetBattlerAbility(battler) == ABILITY_CHEEK_POUCH
&& !(gStatuses3[battler] & STATUS3_HEAL_BLOCK)
&& gBattleStruct->partyState[GetBattlerSide(battler)][gBattlerPartyIndexes[battler]].ateBerry
@@ -9143,12 +9162,12 @@ static void BestowItem(u32 battlerAtk, u32 battlerDef)
gLastUsedItem = gBattleMons[battlerAtk].item;
gBattleMons[battlerAtk].item = ITEM_NONE;
- BtlController_EmitSetMonData(battlerAtk, BUFFER_A, REQUEST_HELDITEM_BATTLE, 0, sizeof(gBattleMons[battlerAtk].item), &gBattleMons[battlerAtk].item);
+ BtlController_EmitSetMonData(battlerAtk, B_COMM_TO_CONTROLLER, REQUEST_HELDITEM_BATTLE, 0, sizeof(gBattleMons[battlerAtk].item), &gBattleMons[battlerAtk].item);
MarkBattlerForControllerExec(battlerAtk);
CheckSetUnburden(battlerAtk);
gBattleMons[battlerDef].item = gLastUsedItem;
- BtlController_EmitSetMonData(battlerDef, BUFFER_A, REQUEST_HELDITEM_BATTLE, 0, sizeof(gBattleMons[battlerDef].item), &gBattleMons[battlerDef].item);
+ BtlController_EmitSetMonData(battlerDef, B_COMM_TO_CONTROLLER, REQUEST_HELDITEM_BATTLE, 0, sizeof(gBattleMons[battlerDef].item), &gBattleMons[battlerDef].item);
MarkBattlerForControllerExec(battlerDef);
gDisableStructs[battlerDef].unburdenActive = FALSE;
}
@@ -9203,7 +9222,7 @@ static void Cmd_removeitem(void)
gBattleStruct->battlerState[battler].canPickupItem = TRUE;
CheckSetUnburden(battler);
- BtlController_EmitSetMonData(battler, BUFFER_A, REQUEST_HELDITEM_BATTLE, 0, sizeof(gBattleMons[battler].item), &gBattleMons[battler].item);
+ BtlController_EmitSetMonData(battler, B_COMM_TO_CONTROLLER, REQUEST_HELDITEM_BATTLE, 0, sizeof(gBattleMons[battler].item), &gBattleMons[battler].item);
MarkBattlerForControllerExec(battler);
ClearBattlerItemEffectHistory(battler);
@@ -9525,7 +9544,7 @@ static void Cmd_makevisible(void)
return;
battler = GetBattlerForBattleScript(cmd->battler);
- BtlController_EmitSpriteInvisibility(battler, BUFFER_A, FALSE);
+ BtlController_EmitSpriteInvisibility(battler, B_COMM_TO_CONTROLLER, FALSE);
MarkBattlerForControllerExec(battler);
gBattlescriptCurrInstr = cmd->nextInstr;
@@ -9878,7 +9897,7 @@ static bool32 IsElectricAbilityAffected(u32 battler, u32 ability)
static bool32 IsTeatimeAffected(u32 battler)
{
- if (ItemId_GetPocket(gBattleMons[battler].item) != POCKET_BERRIES)
+ if (GetItemPocket(gBattleMons[battler].item) != POCKET_BERRIES)
return FALSE; // Only berries
if (gStatuses3[battler] & STATUS3_SEMI_INVULNERABLE)
return FALSE; // Teatime doesn't affected semi-invulnerable battlers
@@ -9965,7 +9984,7 @@ static void HandleScriptMegaPrimalBurst(u32 caseId, u32 battler, u32 type)
PREPARE_SPECIES_BUFFER(gBattleTextBuff1, gBattleMons[battler].species);
- BtlController_EmitSetMonData(battler, BUFFER_A, REQUEST_SPECIES_BATTLE, 1u << gBattlerPartyIndexes[battler], sizeof(gBattleMons[battler].species), &gBattleMons[battler].species);
+ BtlController_EmitSetMonData(battler, B_COMM_TO_CONTROLLER, REQUEST_SPECIES_BATTLE, 1u << gBattlerPartyIndexes[battler], sizeof(gBattleMons[battler].species), &gBattleMons[battler].species);
MarkBattlerForControllerExec(battler);
}
// Update healthbox and elevation and play cry.
@@ -10222,7 +10241,7 @@ static void Cmd_various(void)
case VARIOUS_JUMP_IF_NOT_BERRY:
{
VARIOUS_ARGS(const u8 *jumpInstr);
- if (ItemId_GetPocket(gBattleMons[battler].item) == POCKET_BERRIES)
+ if (GetItemPocket(gBattleMons[battler].item) == POCKET_BERRIES)
gBattlescriptCurrInstr = cmd->nextInstr;
else
gBattlescriptCurrInstr = cmd->jumpInstr;
@@ -10429,7 +10448,7 @@ static void Cmd_various(void)
case VARIOUS_EMIT_YESNOBOX:
{
VARIOUS_ARGS();
- BtlController_EmitYesNoBox(battler, BUFFER_A);
+ BtlController_EmitYesNoBox(battler, B_COMM_TO_CONTROLLER);
MarkBattlerForControllerExec(battler);
break;
}
@@ -10472,7 +10491,7 @@ static void Cmd_various(void)
battler = 1;
if (IsBattlerAlive(battler))
{
- BtlController_EmitReturnMonToBall(battler, BUFFER_A, FALSE);
+ BtlController_EmitReturnMonToBall(battler, B_COMM_TO_CONTROLLER, FALSE);
MarkBattlerForControllerExec(battler);
}
break;
@@ -10485,7 +10504,7 @@ static void Cmd_various(void)
battler = 3;
if (IsBattlerAlive(battler))
{
- BtlController_EmitReturnMonToBall(battler, BUFFER_A, FALSE);
+ BtlController_EmitReturnMonToBall(battler, B_COMM_TO_CONTROLLER, FALSE);
MarkBattlerForControllerExec(battler);
}
}
@@ -10543,7 +10562,7 @@ static void Cmd_various(void)
case VARIOUS_PLAY_TRAINER_DEFEATED_MUSIC:
{
VARIOUS_ARGS();
- BtlController_EmitPlayFanfareOrBGM(battler, BUFFER_A, MUS_VICTORY_TRAINER, TRUE);
+ BtlController_EmitPlayFanfareOrBGM(battler, B_COMM_TO_CONTROLLER, MUS_VICTORY_TRAINER, TRUE);
MarkBattlerForControllerExec(battler);
break;
}
@@ -10565,7 +10584,7 @@ static void Cmd_various(void)
case VARIOUS_INSTANT_HP_DROP:
{
VARIOUS_ARGS();
- BtlController_EmitHealthBarUpdate(battler, BUFFER_A, INSTANT_HP_BAR_DROP);
+ BtlController_EmitHealthBarUpdate(battler, B_COMM_TO_CONTROLLER, INSTANT_HP_BAR_DROP);
MarkBattlerForControllerExec(battler);
break;
}
@@ -10573,7 +10592,7 @@ static void Cmd_various(void)
{
VARIOUS_ARGS();
gBattleMons[battler].status1 = 0;
- BtlController_EmitSetMonData(battler, BUFFER_A, REQUEST_STATUS_BATTLE, 0, sizeof(gBattleMons[battler].status1), &gBattleMons[battler].status1);
+ BtlController_EmitSetMonData(battler, B_COMM_TO_CONTROLLER, REQUEST_STATUS_BATTLE, 0, sizeof(gBattleMons[battler].status1), &gBattleMons[battler].status1);
MarkBattlerForControllerExec(battler);
break;
}
@@ -10586,7 +10605,7 @@ static void Cmd_various(void)
data[i] = gBattleMons[battler].pp[i];
}
data[i] = gBattleMons[battler].ppBonuses;
- BtlController_EmitSetMonData(battler, BUFFER_A, REQUEST_PP_DATA_BATTLE, 0, 5, data);
+ BtlController_EmitSetMonData(battler, B_COMM_TO_CONTROLLER, REQUEST_PP_DATA_BATTLE, 0, 5, data);
MarkBattlerForControllerExec(battler);
break;
}
@@ -10632,7 +10651,7 @@ static void Cmd_various(void)
case VARIOUS_PLAY_MOVE_ANIMATION:
{
VARIOUS_ARGS(u16 move);
- BtlController_EmitMoveAnimation(battler, BUFFER_A, cmd->move, gBattleScripting.animTurn, 0, 0, gBattleMons[battler].friendship, &gDisableStructs[battler], gMultiHitCounter);
+ BtlController_EmitMoveAnimation(battler, B_COMM_TO_CONTROLLER, cmd->move, gBattleScripting.animTurn, 0, 0, gBattleMons[battler].friendship, &gDisableStructs[battler], gMultiHitCounter);
MarkBattlerForControllerExec(battler);
gBattlescriptCurrInstr = cmd->nextInstr;
return;
@@ -10815,7 +10834,7 @@ static void Cmd_various(void)
if (!gBattleTextBuff1)
PREPARE_SPECIES_BUFFER(gBattleTextBuff1, gBattleMons[battler].species);
*/
- BtlController_EmitSetMonData(battler, BUFFER_A, REQUEST_SPECIES_BATTLE, 1u << gBattlerPartyIndexes[battler], sizeof(gBattleMons[battler].species), &gBattleMons[battler].species);
+ BtlController_EmitSetMonData(battler, B_COMM_TO_CONTROLLER, REQUEST_SPECIES_BATTLE, 1u << gBattlerPartyIndexes[battler], sizeof(gBattleMons[battler].species), &gBattleMons[battler].species);
MarkBattlerForControllerExec(battler);
}
// Change stats.
@@ -10958,7 +10977,7 @@ static void Cmd_various(void)
}
gBattleMons[gBattlerTarget].status1 = gBattleMons[gBattlerAttacker].status1 & STATUS1_ANY;
battler = gBattlerTarget;
- BtlController_EmitSetMonData(battler, BUFFER_A, REQUEST_STATUS_BATTLE, 0, sizeof(gBattleMons[battler].status1), &gBattleMons[battler].status1);
+ BtlController_EmitSetMonData(battler, B_COMM_TO_CONTROLLER, REQUEST_STATUS_BATTLE, 0, sizeof(gBattleMons[battler].status1), &gBattleMons[battler].status1);
MarkBattlerForControllerExec(battler);
gBattlescriptCurrInstr = cmd->nextInstr;
TryActivateSleepClause(battler, gBattlerPartyIndexes[battler]);
@@ -10972,7 +10991,7 @@ static void Cmd_various(void)
TryDeactivateSleepClause(GetBattlerSide(battler), gBattlerPartyIndexes[battler]);
gBattleMons[battler].status1 = 0;
- BtlController_EmitSetMonData(battler, BUFFER_A, REQUEST_STATUS_BATTLE, 0, sizeof(gBattleMons[battler].status1), &gBattleMons[battler].status1);
+ BtlController_EmitSetMonData(battler, B_COMM_TO_CONTROLLER, REQUEST_STATUS_BATTLE, 0, sizeof(gBattleMons[battler].status1), &gBattleMons[battler].status1);
MarkBattlerForControllerExec(battler);
break;
}
@@ -11029,7 +11048,7 @@ static void Cmd_various(void)
VARIOUS_ARGS(u8 case_);
if (cmd->case_ == PRINT_SLIDE_MESSAGE)
{
- BtlController_EmitPrintString(battler, BUFFER_A, STRINGID_TRAINERSLIDE);
+ BtlController_EmitPrintString(battler, B_COMM_TO_CONTROLLER, STRINGID_TRAINERSLIDE);
MarkBattlerForControllerExec(battler);
}
else if (cmd->case_ == RESTORE_BATTLER_SLIDE_CONTROL)
@@ -11170,7 +11189,7 @@ static void Cmd_various(void)
if (GetBattlerHoldEffect(battler, TRUE) == HOLD_EFFECT_ROOM_SERVICE && TryRoomService(battler))
{
BattleScriptPushCursor();
- gBattlescriptCurrInstr = BattleScript_BerryStatRaiseRet;
+ gBattlescriptCurrInstr = BattleScript_ConsumableStatRaiseRet;
}
else
{
@@ -11213,7 +11232,7 @@ static void Cmd_various(void)
if (gBattleControllerExecFlags)
break;
- BtlController_EmitSpriteInvisibility(battler, BUFFER_A, TRUE);
+ BtlController_EmitSpriteInvisibility(battler, B_COMM_TO_CONTROLLER, TRUE);
MarkBattlerForControllerExec(battler);
break;
}
@@ -11609,16 +11628,7 @@ static void Cmd_various(void)
case VARIOUS_JUMP_IF_LAST_USED_ITEM_BERRY:
{
VARIOUS_ARGS(const u8 *jumpInstr);
- if (ItemId_GetPocket(gLastUsedItem) == POCKET_BERRIES)
- gBattlescriptCurrInstr = cmd->jumpInstr;
- else
- gBattlescriptCurrInstr = cmd->nextInstr;
- return;
- }
- case VARIOUS_JUMP_IF_LAST_USED_ITEM_HOLD_EFFECT:
- {
- VARIOUS_ARGS(u8 holdEffect, const u8 *jumpInstr);
- if (ItemId_GetHoldEffect(gLastUsedItem) == cmd->holdEffect)
+ if (GetItemPocket(gLastUsedItem) == POCKET_BERRIES)
gBattlescriptCurrInstr = cmd->jumpInstr;
else
gBattlescriptCurrInstr = cmd->nextInstr;
@@ -11627,13 +11637,13 @@ static void Cmd_various(void)
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:
@@ -11713,7 +11723,7 @@ static void Cmd_tryexplosion(void)
return;
gBattleStruct->moveDamage[gBattlerAttacker] = gBattleMons[gBattlerAttacker].hp;
- BtlController_EmitHealthBarUpdate(gBattlerAttacker, BUFFER_A, INSTANT_HP_BAR_DROP);
+ BtlController_EmitHealthBarUpdate(gBattlerAttacker, B_COMM_TO_CONTROLLER, INSTANT_HP_BAR_DROP);
MarkBattlerForControllerExec(gBattlerAttacker);
gBattlescriptCurrInstr = cmd->nextInstr;
}
@@ -11726,7 +11736,7 @@ static void Cmd_setatkhptozero(void)
return;
gBattleMons[gBattlerAttacker].hp = 0;
- BtlController_EmitSetMonData(gBattlerAttacker, BUFFER_A, REQUEST_HP_BATTLE, 0, sizeof(gBattleMons[gBattlerAttacker].hp), &gBattleMons[gBattlerAttacker].hp);
+ BtlController_EmitSetMonData(gBattlerAttacker, B_COMM_TO_CONTROLLER, REQUEST_HP_BATTLE, 0, sizeof(gBattleMons[gBattlerAttacker].hp), &gBattleMons[gBattlerAttacker].hp);
MarkBattlerForControllerExec(gBattlerAttacker);
gBattlescriptCurrInstr = cmd->nextInstr;
@@ -11959,7 +11969,7 @@ static void Cmd_trysetrest(void)
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_REST;
gBattleMons[gBattlerTarget].status1 = STATUS1_SLEEP_TURN(3);
- BtlController_EmitSetMonData(gBattlerTarget, BUFFER_A, REQUEST_STATUS_BATTLE, 0, sizeof(gBattleMons[gBattlerTarget].status1), &gBattleMons[gBattlerTarget].status1);
+ BtlController_EmitSetMonData(gBattlerTarget, B_COMM_TO_CONTROLLER, REQUEST_STATUS_BATTLE, 0, sizeof(gBattleMons[gBattlerTarget].status1), &gBattleMons[gBattlerTarget].status1);
MarkBattlerForControllerExec(gBattlerTarget);
gBattlescriptCurrInstr = cmd->nextInstr;
}
@@ -12293,9 +12303,8 @@ static u32 ChangeStatBuffs(s8 statValue, u32 statId, u32 flags, const u8 *BS_ptr
return STAT_CHANGE_DIDNT_WORK;
}
else if (gCurrentMove != MOVE_CURSE
- && notProtectAffected != TRUE && JumpIfMoveAffectedByProtect(gCurrentMove, gBattlerTarget, TRUE))
+ && notProtectAffected != TRUE && JumpIfMoveAffectedByProtect(gCurrentMove, gBattlerTarget, TRUE, BattleScript_ButItFailed))
{
- gBattlescriptCurrInstr = BattleScript_ButItFailed;
return STAT_CHANGE_DIDNT_WORK;
}
else if ((battlerHoldEffect == HOLD_EFFECT_CLEAR_AMULET || CanAbilityPreventStatLoss(battlerAbility))
@@ -13087,7 +13096,7 @@ static void Cmd_updatestatusicon(void)
{
if (!(gAbsentBattlerFlags & (1u << battler)))
{
- BtlController_EmitStatusIconUpdate(battler, BUFFER_A, gBattleMons[battler].status1, gBattleMons[battler].status2);
+ BtlController_EmitStatusIconUpdate(battler, B_COMM_TO_CONTROLLER, gBattleMons[battler].status1, gBattleMons[battler].status2);
MarkBattlerForControllerExec(battler);
}
}
@@ -13098,7 +13107,7 @@ static void Cmd_updatestatusicon(void)
battler = gBattlerAttacker;
if (!(gAbsentBattlerFlags & (1u << battler)))
{
- BtlController_EmitStatusIconUpdate(battler, BUFFER_A, gBattleMons[battler].status1, gBattleMons[battler].status2);
+ BtlController_EmitStatusIconUpdate(battler, B_COMM_TO_CONTROLLER, gBattleMons[battler].status1, gBattleMons[battler].status2);
MarkBattlerForControllerExec(battler);
}
if ((IsDoubleBattle()))
@@ -13106,7 +13115,7 @@ static void Cmd_updatestatusicon(void)
battler = GetBattlerAtPosition(BATTLE_PARTNER(GetBattlerPosition(gBattlerAttacker)));
if (!(gAbsentBattlerFlags & (1u << battler)))
{
- BtlController_EmitStatusIconUpdate(battler, BUFFER_A, gBattleMons[battler].status1, gBattleMons[battler].status2);
+ BtlController_EmitStatusIconUpdate(battler, B_COMM_TO_CONTROLLER, gBattleMons[battler].status1, gBattleMons[battler].status2);
MarkBattlerForControllerExec(battler);
}
}
@@ -13115,7 +13124,7 @@ static void Cmd_updatestatusicon(void)
else
{
battler = GetBattlerForBattleScript(cmd->battler);
- BtlController_EmitStatusIconUpdate(battler, BUFFER_A, gBattleMons[battler].status1, gBattleMons[battler].status2);
+ BtlController_EmitStatusIconUpdate(battler, B_COMM_TO_CONTROLLER, gBattleMons[battler].status1, gBattleMons[battler].status2);
MarkBattlerForControllerExec(battler);
gBattlescriptCurrInstr = cmd->nextInstr;
}
@@ -13219,7 +13228,7 @@ static void Cmd_transformdataexecution(void)
RecordAllMoves(gBattlerAttacker);
RecordAbilityBattle(gBattlerAttacker, gBattleMons[gBattlerAttacker].ability);
- BtlController_EmitResetActionMoveSelection(gBattlerAttacker, BUFFER_A, RESET_MOVE_SELECTION);
+ BtlController_EmitResetActionMoveSelection(gBattlerAttacker, B_COMM_TO_CONTROLLER, RESET_MOVE_SELECTION);
MarkBattlerForControllerExec(gBattlerAttacker);
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_TRANSFORMED;
}
@@ -13652,7 +13661,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;
@@ -13676,7 +13685,7 @@ static void Cmd_copymovepermanently(void)
}
movePpData.ppBonuses = gBattleMons[gBattlerAttacker].ppBonuses;
- BtlController_EmitSetMonData(gBattlerAttacker, BUFFER_A, REQUEST_MOVES_PP_BATTLE, 0, sizeof(movePpData), &movePpData);
+ BtlController_EmitSetMonData(gBattlerAttacker, B_COMM_TO_CONTROLLER, REQUEST_MOVES_PP_BATTLE, 0, sizeof(movePpData), &movePpData);
MarkBattlerForControllerExec(gBattlerAttacker);
PREPARE_MOVE_BUFFER(gBattleTextBuff1, gLastPrintedMoves[gBattlerTarget])
@@ -13853,7 +13862,7 @@ static void Cmd_tryspiteppreduce(void)
if (!(gDisableStructs[gBattlerTarget].mimickedMoves & (1u << i))
&& !(gBattleMons[gBattlerTarget].status2 & STATUS2_TRANSFORMED))
{
- BtlController_EmitSetMonData(gBattlerTarget, BUFFER_A, REQUEST_PPMOVE1_BATTLE + i, 0, sizeof(gBattleMons[gBattlerTarget].pp[i]), &gBattleMons[gBattlerTarget].pp[i]);
+ BtlController_EmitSetMonData(gBattlerTarget, B_COMM_TO_CONTROLLER, REQUEST_PPMOVE1_BATTLE + i, 0, sizeof(gBattleMons[gBattlerTarget].pp[i]), &gBattleMons[gBattlerTarget].pp[i]);
MarkBattlerForControllerExec(gBattlerTarget);
}
@@ -13964,7 +13973,7 @@ static void Cmd_healpartystatus(void)
if (toHeal)
{
- BtlController_EmitSetMonData(gBattlerAttacker, BUFFER_A, REQUEST_STATUS_BATTLE, toHeal, sizeof(zero), &zero);
+ BtlController_EmitSetMonData(gBattlerAttacker, B_COMM_TO_CONTROLLER, REQUEST_STATUS_BATTLE, toHeal, sizeof(zero), &zero);
MarkBattlerForControllerExec(gBattlerAttacker);
}
@@ -14297,17 +14306,11 @@ static void Cmd_jumpifnopursuitswitchdmg(void)
}
}
-static void Cmd_tryhealingitem(void)
+static void Cmd_tryrestorehpberry(void)
{
CMD_ARGS();
-
- if (gItemsInfo[gBattleMons[gBattlerAttacker].item].pocket == POCKET_BERRIES
- || GetBattlerHoldEffect(gBattlerAttacker, TRUE) == HOLD_EFFECT_RESTORE_HP) // Edge case for Berry Juice
- {
- if (ItemBattleEffects(ITEMEFFECT_TRY_HEALING, gBattlerAttacker, FALSE))
- return;
- }
-
+ if (TryRestoreHPBerries(gBattlerAttacker, ITEMEFFECT_TRY_HEALING))
+ return;
gBattlescriptCurrInstr = cmd->nextInstr;
}
@@ -14428,7 +14431,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;
@@ -14659,7 +14662,7 @@ static void Cmd_trymemento(void)
{
// Success, drop user's HP bar to 0
gBattleStruct->moveDamage[gBattlerAttacker] = gBattleMons[gBattlerAttacker].hp;
- BtlController_EmitHealthBarUpdate(gBattlerAttacker, BUFFER_A, INSTANT_HP_BAR_DROP);
+ BtlController_EmitHealthBarUpdate(gBattlerAttacker, B_COMM_TO_CONTROLLER, INSTANT_HP_BAR_DROP);
MarkBattlerForControllerExec(gBattlerAttacker);
gBattlescriptCurrInstr = cmd->nextInstr;
}
@@ -14741,7 +14744,7 @@ static void Cmd_curestatuswithmove(void)
gBattleMons[gBattlerAttacker].status1 = 0;
gBattlescriptCurrInstr = cmd->nextInstr;
- BtlController_EmitSetMonData(gBattlerAttacker, BUFFER_A, REQUEST_STATUS_BATTLE, 0, sizeof(gBattleMons[gBattlerAttacker].status1), &gBattleMons[gBattlerAttacker].status1);
+ BtlController_EmitSetMonData(gBattlerAttacker, B_COMM_TO_CONTROLLER, REQUEST_STATUS_BATTLE, 0, sizeof(gBattleMons[gBattlerAttacker].status1), &gBattleMons[gBattlerAttacker].status1);
MarkBattlerForControllerExec(gBattlerAttacker);
}
else
@@ -14897,12 +14900,12 @@ static void Cmd_tryswapitems(void)
gBattleMons[gBattlerTarget].item = oldItemAtk;
RecordItemEffectBattle(gBattlerAttacker, 0);
- RecordItemEffectBattle(gBattlerTarget, ItemId_GetHoldEffect(oldItemAtk));
+ RecordItemEffectBattle(gBattlerTarget, GetItemHoldEffect(oldItemAtk));
- BtlController_EmitSetMonData(gBattlerAttacker, BUFFER_A, REQUEST_HELDITEM_BATTLE, 0, sizeof(*newItemAtk), newItemAtk);
+ BtlController_EmitSetMonData(gBattlerAttacker, B_COMM_TO_CONTROLLER, REQUEST_HELDITEM_BATTLE, 0, sizeof(*newItemAtk), newItemAtk);
MarkBattlerForControllerExec(gBattlerAttacker);
- BtlController_EmitSetMonData(gBattlerTarget, BUFFER_A, REQUEST_HELDITEM_BATTLE, 0, sizeof(gBattleMons[gBattlerTarget].item), &gBattleMons[gBattlerTarget].item);
+ BtlController_EmitSetMonData(gBattlerTarget, B_COMM_TO_CONTROLLER, REQUEST_HELDITEM_BATTLE, 0, sizeof(gBattleMons[gBattlerTarget].item), &gBattleMons[gBattlerTarget].item);
MarkBattlerForControllerExec(gBattlerTarget);
gBattleStruct->choicedMove[gBattlerTarget] = MOVE_NONE;
@@ -14971,7 +14974,11 @@ static void Cmd_trywish(void)
{
CMD_ARGS(const u8 *failInstr);
- if (gWishFutureKnock.wishCounter[gBattlerAttacker] <= gBattleTurnCounter)
+ if (gStatuses3[gBattlerTarget] & STATUS3_HEAL_BLOCK)
+ {
+ gBattlescriptCurrInstr = cmd->failInstr;
+ }
+ else if (gWishFutureKnock.wishCounter[gBattlerAttacker] <= gBattleTurnCounter)
{
gWishFutureKnock.wishCounter[gBattlerAttacker] = gBattleTurnCounter + 2;
gWishFutureKnock.wishPartyId[gBattlerAttacker] = gBattlerPartyIndexes[gBattlerAttacker];
@@ -15322,7 +15329,7 @@ static void Cmd_switchoutabilities(void)
TryDeactivateSleepClause(GetBattlerSide(battler), gBattlerPartyIndexes[battler]);
gBattleMons[battler].status1 = 0;
- BtlController_EmitSetMonData(battler, BUFFER_A, REQUEST_STATUS_BATTLE,
+ BtlController_EmitSetMonData(battler, B_COMM_TO_CONTROLLER, REQUEST_STATUS_BATTLE,
1u << gBattleStruct->battlerPartyIndexes[battler],
sizeof(gBattleMons[battler].status1),
&gBattleMons[battler].status1);
@@ -15334,7 +15341,7 @@ static void Cmd_switchoutabilities(void)
regenerate += gBattleMons[battler].hp;
if (regenerate > gBattleMons[battler].maxHP)
regenerate = gBattleMons[battler].maxHP;
- BtlController_EmitSetMonData(battler, BUFFER_A, REQUEST_HP_BATTLE,
+ BtlController_EmitSetMonData(battler, B_COMM_TO_CONTROLLER, REQUEST_HP_BATTLE,
1u << gBattleStruct->battlerPartyIndexes[battler],
sizeof(regenerate),
®enerate);
@@ -15562,7 +15569,7 @@ static void Cmd_tryrecycleitem(void)
*usedHeldItem = ITEM_NONE;
gBattleMons[gBattlerAttacker].item = gLastUsedItem;
- BtlController_EmitSetMonData(gBattlerAttacker, BUFFER_A, REQUEST_HELDITEM_BATTLE, 0, sizeof(gBattleMons[gBattlerAttacker].item), &gBattleMons[gBattlerAttacker].item);
+ BtlController_EmitSetMonData(gBattlerAttacker, B_COMM_TO_CONTROLLER, REQUEST_HELDITEM_BATTLE, 0, sizeof(gBattleMons[gBattlerAttacker].item), &gBattleMons[gBattlerAttacker].item);
MarkBattlerForControllerExec(gBattlerAttacker);
gBattlescriptCurrInstr = cmd->nextInstr;
@@ -15711,13 +15718,13 @@ static void Cmd_handleballthrow(void)
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
{
- BtlController_EmitBallThrowAnim(gBattlerAttacker, BUFFER_A, BALL_TRAINER_BLOCK);
+ BtlController_EmitBallThrowAnim(gBattlerAttacker, B_COMM_TO_CONTROLLER, BALL_TRAINER_BLOCK);
MarkBattlerForControllerExec(gBattlerAttacker);
gBattlescriptCurrInstr = BattleScript_TrainerBallBlock;
}
else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL)
{
- BtlController_EmitBallThrowAnim(gBattlerAttacker, BUFFER_A, BALL_3_SHAKES_SUCCESS);
+ BtlController_EmitBallThrowAnim(gBattlerAttacker, B_COMM_TO_CONTROLLER, BALL_3_SHAKES_SUCCESS);
MarkBattlerForControllerExec(gBattlerAttacker);
gBattlescriptCurrInstr = BattleScript_WallyBallThrow;
}
@@ -15920,7 +15927,7 @@ static void Cmd_handleballthrow(void)
if (odds > 254) // mon caught
{
- BtlController_EmitBallThrowAnim(gBattlerAttacker, BUFFER_A, BALL_3_SHAKES_SUCCESS);
+ BtlController_EmitBallThrowAnim(gBattlerAttacker, B_COMM_TO_CONTROLLER, BALL_3_SHAKES_SUCCESS);
MarkBattlerForControllerExec(gBattlerAttacker);
TryBattleFormChange(gBattlerTarget, FORM_CHANGE_END_BATTLE);
gBattlescriptCurrInstr = BattleScript_SuccessBallThrow;
@@ -15973,7 +15980,7 @@ static void Cmd_handleballthrow(void)
for (shakes = 0; shakes < maxShakes && Random() < odds; shakes++);
}
- BtlController_EmitBallThrowAnim(gBattlerAttacker, BUFFER_A, shakes);
+ BtlController_EmitBallThrowAnim(gBattlerAttacker, B_COMM_TO_CONTROLLER, shakes);
MarkBattlerForControllerExec(gBattlerAttacker);
if (shakes == maxShakes) // mon caught, copy of the code above
@@ -16082,7 +16089,7 @@ static void Cmd_givecaughtmon(void)
case GIVECAUGHTMON_DO_CHOOSE_MON:
if (!gPaletteFade.active)
{
- BtlController_EmitChoosePokemon(gBattlerAttacker, BUFFER_A, PARTY_ACTION_SEND_MON_TO_BOX, PARTY_SIZE, ABILITY_NONE, gBattleStruct->battlerPartyOrders[gBattlerAttacker]);
+ BtlController_EmitChoosePokemon(gBattlerAttacker, B_COMM_TO_CONTROLLER, PARTY_ACTION_SEND_MON_TO_BOX, PARTY_SIZE, ABILITY_NONE, gBattleStruct->battlerPartyOrders[gBattlerAttacker]);
MarkBattlerForControllerExec(gBattlerAttacker);
gBattleCommunication[MULTIUSE_STATE] = GIVECAUGHTMON_HANDLE_CHOSEN_MON;
}
@@ -16121,7 +16128,7 @@ static void Cmd_givecaughtmon(void)
if (B_RESTORE_HELD_BATTLE_ITEMS >= GEN_9)
{
u16 lostItem = gBattleStruct->itemLost[B_SIDE_OPPONENT][gBattlerPartyIndexes[GetCatchingBattler()]].originalItem;
- if (lostItem != ITEM_NONE && ItemId_GetPocket(lostItem) != POCKET_BERRIES)
+ if (lostItem != ITEM_NONE && GetItemPocket(lostItem) != POCKET_BERRIES)
SetMonData(GetBattlerMon(GetCatchingBattler()), MON_DATA_HELD_ITEM, &lostItem); // Restore non-berry items
}
@@ -16411,7 +16418,7 @@ static void Cmd_trainerslideout(void)
CMD_ARGS(u8 position);
u32 battler = GetBattlerForBattleScript(cmd->position);
- BtlController_EmitTrainerSlideBack(battler, BUFFER_A);
+ BtlController_EmitTrainerSlideBack(battler, B_COMM_TO_CONTROLLER);
MarkBattlerForControllerExec(battler);
gBattlescriptCurrInstr = cmd->nextInstr;
@@ -16531,7 +16538,6 @@ static void Cmd_tryworryseed(void)
|| gBattleMons[gBattlerTarget].ability == ABILITY_INSOMNIA)
{
RecordAbilityBattle(gBattlerTarget, gBattleMons[gBattlerTarget].ability);
- gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1);
gBattlescriptCurrInstr = cmd->failInstr;
}
else if (GetBattlerHoldEffect(gBattlerTarget, TRUE) == HOLD_EFFECT_ABILITY_SHIELD)
@@ -16996,7 +17002,7 @@ void BS_ItemRestoreHP(void)
NATIVE_ARGS(const u8 *alreadyMaxHpInstr, const u8 *restoreBattlerInstr);
u16 healAmount;
u32 battler = MAX_BATTLERS_COUNT;
- u32 healParam = ItemId_GetEffect(gLastUsedItem)[6];
+ u32 healParam = GetItemEffect(gLastUsedItem)[6];
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);
@@ -17113,8 +17119,8 @@ void BS_ItemCureStatus(void)
void BS_ItemIncreaseStat(void)
{
NATIVE_ARGS();
- u16 statId = ItemId_GetEffect(gLastUsedItem)[1];
- u16 stages = ItemId_GetHoldEffectParam(gLastUsedItem);
+ u16 statId = GetItemEffect(gLastUsedItem)[1];
+ u16 stages = GetItemHoldEffectParam(gLastUsedItem);
SET_STATCHANGER(statId, stages, FALSE);
gBattlescriptCurrInstr = cmd->nextInstr;
}
@@ -17122,7 +17128,7 @@ void BS_ItemIncreaseStat(void)
void BS_ItemRestorePP(void)
{
NATIVE_ARGS();
- const u8 *effect = ItemId_GetEffect(gLastUsedItem);
+ const u8 *effect = GetItemEffect(gLastUsedItem);
u32 i, pp, maxPP, moveId, loopEnd;
u32 battler = MAX_BATTLERS_COUNT;
struct Pokemon *mon = (IsOnPlayerSide(gBattlerAttacker)) ? &gPlayerParty[gBattleStruct->itemPartyIndex[gBattlerAttacker]] : &gEnemyParty[gBattleStruct->itemPartyIndex[gBattlerAttacker]];
@@ -18045,7 +18051,7 @@ void BS_TeatimeInvul(void)
NATIVE_ARGS(u8 battler, const u8 *jumpInstr);
u32 battler = GetBattlerForBattleScript(cmd->battler);
- if (ItemId_GetPocket(gBattleMons[battler].item) == POCKET_BERRIES && !(gStatuses3[gBattlerTarget] & (STATUS3_SEMI_INVULNERABLE)))
+ if (GetItemPocket(gBattleMons[battler].item) == POCKET_BERRIES && !(gStatuses3[gBattlerTarget] & (STATUS3_SEMI_INVULNERABLE)))
gBattlescriptCurrInstr = cmd->nextInstr;
else
gBattlescriptCurrInstr = cmd->jumpInstr;
@@ -18135,7 +18141,7 @@ void BS_TryRevivalBlessing(void)
struct Pokemon *party = GetBattlerParty(gBattlerAttacker);
u16 hp = GetMonData(&party[gSelectedMonPartyId], MON_DATA_MAX_HP) / 2;
- BtlController_EmitSetMonData(gBattlerAttacker, BUFFER_A, REQUEST_HP_BATTLE, 1u << gSelectedMonPartyId, sizeof(hp), &hp);
+ BtlController_EmitSetMonData(gBattlerAttacker, B_COMM_TO_CONTROLLER, REQUEST_HP_BATTLE, 1u << gSelectedMonPartyId, sizeof(hp), &hp);
MarkBattlerForControllerExec(gBattlerAttacker);
PREPARE_SPECIES_BUFFER(gBattleTextBuff1, GetMonData(&party[gSelectedMonPartyId], MON_DATA_SPECIES));
@@ -18156,7 +18162,7 @@ void BS_TryRevivalBlessing(void)
else
{
// Open party menu, wait to go to next instruction.
- BtlController_EmitChoosePokemon(gBattlerAttacker, BUFFER_A, PARTY_ACTION_CHOOSE_FAINTED_MON, PARTY_SIZE, ABILITY_NONE, gBattleStruct->battlerPartyOrders[gBattlerAttacker]);
+ BtlController_EmitChoosePokemon(gBattlerAttacker, B_COMM_TO_CONTROLLER, PARTY_ACTION_CHOOSE_FAINTED_MON, PARTY_SIZE, ABILITY_NONE, gBattleStruct->battlerPartyOrders[gBattlerAttacker]);
MarkBattlerForControllerExec(gBattlerAttacker);
}
}
@@ -18195,7 +18201,7 @@ static void UpdatePokeFlutePartyStatus(struct Pokemon* party, u8 position)
{
battler = GetBattlerAtPosition(position);
status = 0;
- BtlController_EmitSetMonData(battler, BUFFER_A, REQUEST_STATUS_BATTLE, monToCheck, 4, &status);
+ BtlController_EmitSetMonData(battler, B_COMM_TO_CONTROLLER, REQUEST_STATUS_BATTLE, monToCheck, 4, &status);
MarkBattlerForControllerExec(battler);
gBattleCommunication[MULTISTRING_CHOOSER] = 1;
}
@@ -18396,7 +18402,7 @@ static void TrySetParalysis(const u8 *nextInstr, const u8 *failInstr)
gBattleMons[gBattlerTarget].status1 |= STATUS1_PARALYSIS;
gBattleCommunication[MULTISTRING_CHOOSER] = 3;
gEffectBattler = gBattlerTarget;
- BtlController_EmitSetMonData(gBattlerTarget, BUFFER_A, REQUEST_STATUS_BATTLE, 0, sizeof(gBattleMons[gBattlerTarget].status1), &gBattleMons[gBattlerTarget].status1);
+ BtlController_EmitSetMonData(gBattlerTarget, B_COMM_TO_CONTROLLER, REQUEST_STATUS_BATTLE, 0, sizeof(gBattleMons[gBattlerTarget].status1), &gBattleMons[gBattlerTarget].status1);
MarkBattlerForControllerExec(gBattlerTarget);
gBattlescriptCurrInstr = nextInstr;
}
@@ -18413,7 +18419,7 @@ static void TrySetPoison(const u8 *nextInstr, const u8 *failInstr)
gBattleMons[gBattlerTarget].status1 |= STATUS1_POISON;
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
gEffectBattler = gBattlerTarget;
- BtlController_EmitSetMonData(gBattlerTarget, BUFFER_A, REQUEST_STATUS_BATTLE, 0, sizeof(gBattleMons[gBattlerTarget].status1), &gBattleMons[gBattlerTarget].status1);
+ BtlController_EmitSetMonData(gBattlerTarget, B_COMM_TO_CONTROLLER, REQUEST_STATUS_BATTLE, 0, sizeof(gBattleMons[gBattlerTarget].status1), &gBattleMons[gBattlerTarget].status1);
MarkBattlerForControllerExec(gBattlerTarget);
gBattlescriptCurrInstr = nextInstr;
}
@@ -18435,7 +18441,7 @@ static void TrySetSleep(const u8 *nextInstr, const u8 *failInstr)
TryActivateSleepClause(gBattlerTarget, gBattlerPartyIndexes[gBattlerTarget]);
gBattleCommunication[MULTISTRING_CHOOSER] = 4;
gEffectBattler = gBattlerTarget;
- BtlController_EmitSetMonData(gBattlerTarget, BUFFER_A, REQUEST_STATUS_BATTLE, 0, sizeof(gBattleMons[gBattlerTarget].status1), &gBattleMons[gBattlerTarget].status1);
+ BtlController_EmitSetMonData(gBattlerTarget, B_COMM_TO_CONTROLLER, REQUEST_STATUS_BATTLE, 0, sizeof(gBattleMons[gBattlerTarget].status1), &gBattleMons[gBattlerTarget].status1);
MarkBattlerForControllerExec(gBattlerTarget);
gBattlescriptCurrInstr = nextInstr;
}
@@ -18583,13 +18589,13 @@ void BS_TryRecycleBerry(void)
u16* usedHeldItem = &gBattleStruct->usedHeldItems[gBattlerPartyIndexes[gBattlerTarget]][GetBattlerSide(gBattlerTarget)];
if (gBattleMons[gBattlerTarget].item == ITEM_NONE
&& gBattleStruct->changedItems[gBattlerTarget] == ITEM_NONE // Will not inherit an item
- && ItemId_GetPocket(*usedHeldItem) == POCKET_BERRIES)
+ && GetItemPocket(*usedHeldItem) == POCKET_BERRIES)
{
gLastUsedItem = *usedHeldItem;
*usedHeldItem = ITEM_NONE;
gBattleMons[gBattlerTarget].item = gLastUsedItem;
- BtlController_EmitSetMonData(gBattlerTarget, BUFFER_A, REQUEST_HELDITEM_BATTLE, 0, sizeof(gBattleMons[gBattlerTarget].item), &gBattleMons[gBattlerTarget].item);
+ BtlController_EmitSetMonData(gBattlerTarget, B_COMM_TO_CONTROLLER, REQUEST_HELDITEM_BATTLE, 0, sizeof(gBattleMons[gBattlerTarget].item), &gBattleMons[gBattlerTarget].item);
MarkBattlerForControllerExec(gBattlerTarget);
gBattlescriptCurrInstr = cmd->nextInstr;
@@ -18692,7 +18698,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);
@@ -18740,3 +18746,23 @@ void BS_JumpIfCanGigantamax(void)
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 f2d4ebd497..5c6a01c932 100644
--- a/src/battle_setup.c
+++ b/src/battle_setup.c
@@ -44,6 +44,7 @@
#include "item.h"
#include "constants/battle_frontier.h"
#include "constants/battle_setup.h"
+#include "constants/event_objects.h"
#include "constants/game_stat.h"
#include "constants/items.h"
#include "constants/songs.h"
@@ -148,84 +149,84 @@ static const u8 sBattleTransitionTable_BattleDome[] =
const struct RematchTrainer gRematchTable[REMATCH_TABLE_ENTRIES] =
{
- [REMATCH_ROSE] = REMATCH(TRAINER_ROSE_1, TRAINER_ROSE_2, TRAINER_ROSE_3, TRAINER_ROSE_4, TRAINER_ROSE_5, ROUTE118),
- [REMATCH_ANDRES] = REMATCH(TRAINER_ANDRES_1, TRAINER_ANDRES_2, TRAINER_ANDRES_3, TRAINER_ANDRES_4, TRAINER_ANDRES_5, ROUTE105),
- [REMATCH_DUSTY] = REMATCH(TRAINER_DUSTY_1, TRAINER_DUSTY_2, TRAINER_DUSTY_3, TRAINER_DUSTY_4, TRAINER_DUSTY_5, ROUTE111),
- [REMATCH_LOLA] = REMATCH(TRAINER_LOLA_1, TRAINER_LOLA_2, TRAINER_LOLA_3, TRAINER_LOLA_4, TRAINER_LOLA_5, ROUTE109),
- [REMATCH_RICKY] = REMATCH(TRAINER_RICKY_1, TRAINER_RICKY_2, TRAINER_RICKY_3, TRAINER_RICKY_4, TRAINER_RICKY_5, ROUTE109),
- [REMATCH_LILA_AND_ROY] = REMATCH(TRAINER_LILA_AND_ROY_1, TRAINER_LILA_AND_ROY_2, TRAINER_LILA_AND_ROY_3, TRAINER_LILA_AND_ROY_4, TRAINER_LILA_AND_ROY_5, ROUTE124),
- [REMATCH_CRISTIN] = REMATCH(TRAINER_CRISTIN_1, TRAINER_CRISTIN_2, TRAINER_CRISTIN_3, TRAINER_CRISTIN_4, TRAINER_CRISTIN_5, ROUTE121),
- [REMATCH_BROOKE] = REMATCH(TRAINER_BROOKE_1, TRAINER_BROOKE_2, TRAINER_BROOKE_3, TRAINER_BROOKE_4, TRAINER_BROOKE_5, ROUTE111),
- [REMATCH_WILTON] = REMATCH(TRAINER_WILTON_1, TRAINER_WILTON_2, TRAINER_WILTON_3, TRAINER_WILTON_4, TRAINER_WILTON_5, ROUTE111),
- [REMATCH_VALERIE] = REMATCH(TRAINER_VALERIE_1, TRAINER_VALERIE_2, TRAINER_VALERIE_3, TRAINER_VALERIE_4, TRAINER_VALERIE_5, MT_PYRE_6F),
- [REMATCH_CINDY] = REMATCH(TRAINER_CINDY_1, TRAINER_CINDY_3, TRAINER_CINDY_4, TRAINER_CINDY_5, TRAINER_CINDY_6, ROUTE104),
- [REMATCH_THALIA] = REMATCH(TRAINER_THALIA_1, TRAINER_THALIA_2, TRAINER_THALIA_3, TRAINER_THALIA_4, TRAINER_THALIA_5, ABANDONED_SHIP_ROOMS_1F),
- [REMATCH_JESSICA] = REMATCH(TRAINER_JESSICA_1, TRAINER_JESSICA_2, TRAINER_JESSICA_3, TRAINER_JESSICA_4, TRAINER_JESSICA_5, ROUTE121),
- [REMATCH_WINSTON] = REMATCH(TRAINER_WINSTON_1, TRAINER_WINSTON_2, TRAINER_WINSTON_3, TRAINER_WINSTON_4, TRAINER_WINSTON_5, ROUTE104),
- [REMATCH_STEVE] = REMATCH(TRAINER_STEVE_1, TRAINER_STEVE_2, TRAINER_STEVE_3, TRAINER_STEVE_4, TRAINER_STEVE_5, ROUTE114),
- [REMATCH_TONY] = REMATCH(TRAINER_TONY_1, TRAINER_TONY_2, TRAINER_TONY_3, TRAINER_TONY_4, TRAINER_TONY_5, ROUTE107),
- [REMATCH_NOB] = REMATCH(TRAINER_NOB_1, TRAINER_NOB_2, TRAINER_NOB_3, TRAINER_NOB_4, TRAINER_NOB_5, ROUTE115),
- [REMATCH_KOJI] = REMATCH(TRAINER_KOJI_1, TRAINER_KOJI_2, TRAINER_KOJI_3, TRAINER_KOJI_4, TRAINER_KOJI_5, ROUTE127),
- [REMATCH_FERNANDO] = REMATCH(TRAINER_FERNANDO_1, TRAINER_FERNANDO_2, TRAINER_FERNANDO_3, TRAINER_FERNANDO_4, TRAINER_FERNANDO_5, ROUTE123),
- [REMATCH_DALTON] = REMATCH(TRAINER_DALTON_1, TRAINER_DALTON_2, TRAINER_DALTON_3, TRAINER_DALTON_4, TRAINER_DALTON_5, ROUTE118),
- [REMATCH_BERNIE] = REMATCH(TRAINER_BERNIE_1, TRAINER_BERNIE_2, TRAINER_BERNIE_3, TRAINER_BERNIE_4, TRAINER_BERNIE_5, ROUTE114),
- [REMATCH_ETHAN] = REMATCH(TRAINER_ETHAN_1, TRAINER_ETHAN_2, TRAINER_ETHAN_3, TRAINER_ETHAN_4, TRAINER_ETHAN_5, JAGGED_PASS),
- [REMATCH_JOHN_AND_JAY] = REMATCH(TRAINER_JOHN_AND_JAY_1, TRAINER_JOHN_AND_JAY_2, TRAINER_JOHN_AND_JAY_3, TRAINER_JOHN_AND_JAY_4, TRAINER_JOHN_AND_JAY_5, METEOR_FALLS_1F_2R),
- [REMATCH_JEFFREY] = REMATCH(TRAINER_JEFFREY_1, TRAINER_JEFFREY_2, TRAINER_JEFFREY_3, TRAINER_JEFFREY_4, TRAINER_JEFFREY_5, ROUTE120),
- [REMATCH_CAMERON] = REMATCH(TRAINER_CAMERON_1, TRAINER_CAMERON_2, TRAINER_CAMERON_3, TRAINER_CAMERON_4, TRAINER_CAMERON_5, ROUTE123),
- [REMATCH_JACKI] = REMATCH(TRAINER_JACKI_1, TRAINER_JACKI_2, TRAINER_JACKI_3, TRAINER_JACKI_4, TRAINER_JACKI_5, ROUTE123),
- [REMATCH_WALTER] = REMATCH(TRAINER_WALTER_1, TRAINER_WALTER_2, TRAINER_WALTER_3, TRAINER_WALTER_4, TRAINER_WALTER_5, ROUTE121),
- [REMATCH_KAREN] = REMATCH(TRAINER_KAREN_1, TRAINER_KAREN_2, TRAINER_KAREN_3, TRAINER_KAREN_4, TRAINER_KAREN_5, ROUTE116),
- [REMATCH_JERRY] = REMATCH(TRAINER_JERRY_1, TRAINER_JERRY_2, TRAINER_JERRY_3, TRAINER_JERRY_4, TRAINER_JERRY_5, ROUTE116),
- [REMATCH_ANNA_AND_MEG] = REMATCH(TRAINER_ANNA_AND_MEG_1, TRAINER_ANNA_AND_MEG_2, TRAINER_ANNA_AND_MEG_3, TRAINER_ANNA_AND_MEG_4, TRAINER_ANNA_AND_MEG_5, ROUTE117),
- [REMATCH_ISABEL] = REMATCH(TRAINER_ISABEL_1, TRAINER_ISABEL_2, TRAINER_ISABEL_3, TRAINER_ISABEL_4, TRAINER_ISABEL_5, ROUTE110),
- [REMATCH_MIGUEL] = REMATCH(TRAINER_MIGUEL_1, TRAINER_MIGUEL_2, TRAINER_MIGUEL_3, TRAINER_MIGUEL_4, TRAINER_MIGUEL_5, ROUTE103),
- [REMATCH_TIMOTHY] = REMATCH(TRAINER_TIMOTHY_1, TRAINER_TIMOTHY_2, TRAINER_TIMOTHY_3, TRAINER_TIMOTHY_4, TRAINER_TIMOTHY_5, ROUTE115),
- [REMATCH_SHELBY] = REMATCH(TRAINER_SHELBY_1, TRAINER_SHELBY_2, TRAINER_SHELBY_3, TRAINER_SHELBY_4, TRAINER_SHELBY_5, MT_CHIMNEY),
- [REMATCH_CALVIN] = REMATCH(TRAINER_CALVIN_1, TRAINER_CALVIN_2, TRAINER_CALVIN_3, TRAINER_CALVIN_4, TRAINER_CALVIN_5, ROUTE102),
- [REMATCH_ELLIOT] = REMATCH(TRAINER_ELLIOT_1, TRAINER_ELLIOT_2, TRAINER_ELLIOT_3, TRAINER_ELLIOT_4, TRAINER_ELLIOT_5, ROUTE106),
- [REMATCH_ISAIAH] = REMATCH(TRAINER_ISAIAH_1, TRAINER_ISAIAH_2, TRAINER_ISAIAH_3, TRAINER_ISAIAH_4, TRAINER_ISAIAH_5, ROUTE128),
- [REMATCH_MARIA] = REMATCH(TRAINER_MARIA_1, TRAINER_MARIA_2, TRAINER_MARIA_3, TRAINER_MARIA_4, TRAINER_MARIA_5, ROUTE117),
- [REMATCH_ABIGAIL] = REMATCH(TRAINER_ABIGAIL_1, TRAINER_ABIGAIL_2, TRAINER_ABIGAIL_3, TRAINER_ABIGAIL_4, TRAINER_ABIGAIL_5, ROUTE110),
- [REMATCH_DYLAN] = REMATCH(TRAINER_DYLAN_1, TRAINER_DYLAN_2, TRAINER_DYLAN_3, TRAINER_DYLAN_4, TRAINER_DYLAN_5, ROUTE117),
- [REMATCH_KATELYN] = REMATCH(TRAINER_KATELYN_1, TRAINER_KATELYN_2, TRAINER_KATELYN_3, TRAINER_KATELYN_4, TRAINER_KATELYN_5, ROUTE128),
- [REMATCH_BENJAMIN] = REMATCH(TRAINER_BENJAMIN_1, TRAINER_BENJAMIN_2, TRAINER_BENJAMIN_3, TRAINER_BENJAMIN_4, TRAINER_BENJAMIN_5, ROUTE110),
- [REMATCH_PABLO] = REMATCH(TRAINER_PABLO_1, TRAINER_PABLO_2, TRAINER_PABLO_3, TRAINER_PABLO_4, TRAINER_PABLO_5, ROUTE126),
- [REMATCH_NICOLAS] = REMATCH(TRAINER_NICOLAS_1, TRAINER_NICOLAS_2, TRAINER_NICOLAS_3, TRAINER_NICOLAS_4, TRAINER_NICOLAS_5, METEOR_FALLS_1F_2R),
- [REMATCH_ROBERT] = REMATCH(TRAINER_ROBERT_1, TRAINER_ROBERT_2, TRAINER_ROBERT_3, TRAINER_ROBERT_4, TRAINER_ROBERT_5, ROUTE120),
- [REMATCH_LAO] = REMATCH(TRAINER_LAO_1, TRAINER_LAO_2, TRAINER_LAO_3, TRAINER_LAO_4, TRAINER_LAO_5, ROUTE113),
- [REMATCH_CYNDY] = REMATCH(TRAINER_CYNDY_1, TRAINER_CYNDY_2, TRAINER_CYNDY_3, TRAINER_CYNDY_4, TRAINER_CYNDY_5, ROUTE115),
- [REMATCH_MADELINE] = REMATCH(TRAINER_MADELINE_1, TRAINER_MADELINE_2, TRAINER_MADELINE_3, TRAINER_MADELINE_4, TRAINER_MADELINE_5, ROUTE113),
- [REMATCH_JENNY] = REMATCH(TRAINER_JENNY_1, TRAINER_JENNY_2, TRAINER_JENNY_3, TRAINER_JENNY_4, TRAINER_JENNY_5, ROUTE124),
- [REMATCH_DIANA] = REMATCH(TRAINER_DIANA_1, TRAINER_DIANA_2, TRAINER_DIANA_3, TRAINER_DIANA_4, TRAINER_DIANA_5, JAGGED_PASS),
- [REMATCH_AMY_AND_LIV] = REMATCH(TRAINER_AMY_AND_LIV_1, TRAINER_AMY_AND_LIV_2, TRAINER_AMY_AND_LIV_4, TRAINER_AMY_AND_LIV_5, TRAINER_AMY_AND_LIV_6, ROUTE103),
- [REMATCH_ERNEST] = REMATCH(TRAINER_ERNEST_1, TRAINER_ERNEST_2, TRAINER_ERNEST_3, TRAINER_ERNEST_4, TRAINER_ERNEST_5, ROUTE125),
- [REMATCH_CORY] = REMATCH(TRAINER_CORY_1, TRAINER_CORY_2, TRAINER_CORY_3, TRAINER_CORY_4, TRAINER_CORY_5, ROUTE108),
- [REMATCH_EDWIN] = REMATCH(TRAINER_EDWIN_1, TRAINER_EDWIN_2, TRAINER_EDWIN_3, TRAINER_EDWIN_4, TRAINER_EDWIN_5, ROUTE110),
- [REMATCH_LYDIA] = REMATCH(TRAINER_LYDIA_1, TRAINER_LYDIA_2, TRAINER_LYDIA_3, TRAINER_LYDIA_4, TRAINER_LYDIA_5, ROUTE117),
- [REMATCH_ISAAC] = REMATCH(TRAINER_ISAAC_1, TRAINER_ISAAC_2, TRAINER_ISAAC_3, TRAINER_ISAAC_4, TRAINER_ISAAC_5, ROUTE117),
- [REMATCH_GABRIELLE] = REMATCH(TRAINER_GABRIELLE_1, TRAINER_GABRIELLE_2, TRAINER_GABRIELLE_3, TRAINER_GABRIELLE_4, TRAINER_GABRIELLE_5, MT_PYRE_3F),
- [REMATCH_CATHERINE] = REMATCH(TRAINER_CATHERINE_1, TRAINER_CATHERINE_2, TRAINER_CATHERINE_3, TRAINER_CATHERINE_4, TRAINER_CATHERINE_5, ROUTE119),
- [REMATCH_JACKSON] = REMATCH(TRAINER_JACKSON_1, TRAINER_JACKSON_2, TRAINER_JACKSON_3, TRAINER_JACKSON_4, TRAINER_JACKSON_5, ROUTE119),
- [REMATCH_HALEY] = REMATCH(TRAINER_HALEY_1, TRAINER_HALEY_2, TRAINER_HALEY_3, TRAINER_HALEY_4, TRAINER_HALEY_5, ROUTE104),
- [REMATCH_JAMES] = REMATCH(TRAINER_JAMES_1, TRAINER_JAMES_2, TRAINER_JAMES_3, TRAINER_JAMES_4, TRAINER_JAMES_5, PETALBURG_WOODS),
- [REMATCH_TRENT] = REMATCH(TRAINER_TRENT_1, TRAINER_TRENT_2, TRAINER_TRENT_3, TRAINER_TRENT_4, TRAINER_TRENT_5, ROUTE112),
- [REMATCH_SAWYER] = REMATCH(TRAINER_SAWYER_1, TRAINER_SAWYER_2, TRAINER_SAWYER_3, TRAINER_SAWYER_4, TRAINER_SAWYER_5, MT_CHIMNEY),
- [REMATCH_KIRA_AND_DAN] = REMATCH(TRAINER_KIRA_AND_DAN_1, TRAINER_KIRA_AND_DAN_2, TRAINER_KIRA_AND_DAN_3, TRAINER_KIRA_AND_DAN_4, TRAINER_KIRA_AND_DAN_5, ABANDONED_SHIP_ROOMS2_1F),
- [REMATCH_WALLY_VR] = REMATCH(TRAINER_WALLY_VR_2, TRAINER_WALLY_VR_3, TRAINER_WALLY_VR_4, TRAINER_WALLY_VR_5, TRAINER_WALLY_VR_5, VICTORY_ROAD_1F),
- [REMATCH_ROXANNE] = REMATCH(TRAINER_ROXANNE_1, TRAINER_ROXANNE_2, TRAINER_ROXANNE_3, TRAINER_ROXANNE_4, TRAINER_ROXANNE_5, RUSTBORO_CITY),
- [REMATCH_BRAWLY] = REMATCH(TRAINER_BRAWLY_1, TRAINER_BRAWLY_2, TRAINER_BRAWLY_3, TRAINER_BRAWLY_4, TRAINER_BRAWLY_5, DEWFORD_TOWN),
- [REMATCH_WATTSON] = REMATCH(TRAINER_WATTSON_1, TRAINER_WATTSON_2, TRAINER_WATTSON_3, TRAINER_WATTSON_4, TRAINER_WATTSON_5, MAUVILLE_CITY),
- [REMATCH_FLANNERY] = REMATCH(TRAINER_FLANNERY_1, TRAINER_FLANNERY_2, TRAINER_FLANNERY_3, TRAINER_FLANNERY_4, TRAINER_FLANNERY_5, LAVARIDGE_TOWN),
- [REMATCH_NORMAN] = REMATCH(TRAINER_NORMAN_1, TRAINER_NORMAN_2, TRAINER_NORMAN_3, TRAINER_NORMAN_4, TRAINER_NORMAN_5, PETALBURG_CITY),
- [REMATCH_WINONA] = REMATCH(TRAINER_WINONA_1, TRAINER_WINONA_2, TRAINER_WINONA_3, TRAINER_WINONA_4, TRAINER_WINONA_5, FORTREE_CITY),
- [REMATCH_TATE_AND_LIZA] = REMATCH(TRAINER_TATE_AND_LIZA_1, TRAINER_TATE_AND_LIZA_2, TRAINER_TATE_AND_LIZA_3, TRAINER_TATE_AND_LIZA_4, TRAINER_TATE_AND_LIZA_5, MOSSDEEP_CITY),
- [REMATCH_JUAN] = REMATCH(TRAINER_JUAN_1, TRAINER_JUAN_2, TRAINER_JUAN_3, TRAINER_JUAN_4, TRAINER_JUAN_5, SOOTOPOLIS_CITY),
- [REMATCH_SIDNEY] = REMATCH(TRAINER_SIDNEY, TRAINER_SIDNEY, TRAINER_SIDNEY, TRAINER_SIDNEY, TRAINER_SIDNEY, EVER_GRANDE_CITY),
- [REMATCH_PHOEBE] = REMATCH(TRAINER_PHOEBE, TRAINER_PHOEBE, TRAINER_PHOEBE, TRAINER_PHOEBE, TRAINER_PHOEBE, EVER_GRANDE_CITY),
- [REMATCH_GLACIA] = REMATCH(TRAINER_GLACIA, TRAINER_GLACIA, TRAINER_GLACIA, TRAINER_GLACIA, TRAINER_GLACIA, EVER_GRANDE_CITY),
- [REMATCH_DRAKE] = REMATCH(TRAINER_DRAKE, TRAINER_DRAKE, TRAINER_DRAKE, TRAINER_DRAKE, TRAINER_DRAKE, EVER_GRANDE_CITY),
- [REMATCH_WALLACE] = REMATCH(TRAINER_WALLACE, TRAINER_WALLACE, TRAINER_WALLACE, TRAINER_WALLACE, TRAINER_WALLACE, EVER_GRANDE_CITY),
+ [REMATCH_ROSE] = REMATCH(TRAINER_ROSE_1, TRAINER_ROSE_2, TRAINER_ROSE_3, TRAINER_ROSE_4, TRAINER_ROSE_5, MAP_ROUTE118),
+ [REMATCH_ANDRES] = REMATCH(TRAINER_ANDRES_1, TRAINER_ANDRES_2, TRAINER_ANDRES_3, TRAINER_ANDRES_4, TRAINER_ANDRES_5, MAP_ROUTE105),
+ [REMATCH_DUSTY] = REMATCH(TRAINER_DUSTY_1, TRAINER_DUSTY_2, TRAINER_DUSTY_3, TRAINER_DUSTY_4, TRAINER_DUSTY_5, MAP_ROUTE111),
+ [REMATCH_LOLA] = REMATCH(TRAINER_LOLA_1, TRAINER_LOLA_2, TRAINER_LOLA_3, TRAINER_LOLA_4, TRAINER_LOLA_5, MAP_ROUTE109),
+ [REMATCH_RICKY] = REMATCH(TRAINER_RICKY_1, TRAINER_RICKY_2, TRAINER_RICKY_3, TRAINER_RICKY_4, TRAINER_RICKY_5, MAP_ROUTE109),
+ [REMATCH_LILA_AND_ROY] = REMATCH(TRAINER_LILA_AND_ROY_1, TRAINER_LILA_AND_ROY_2, TRAINER_LILA_AND_ROY_3, TRAINER_LILA_AND_ROY_4, TRAINER_LILA_AND_ROY_5, MAP_ROUTE124),
+ [REMATCH_CRISTIN] = REMATCH(TRAINER_CRISTIN_1, TRAINER_CRISTIN_2, TRAINER_CRISTIN_3, TRAINER_CRISTIN_4, TRAINER_CRISTIN_5, MAP_ROUTE121),
+ [REMATCH_BROOKE] = REMATCH(TRAINER_BROOKE_1, TRAINER_BROOKE_2, TRAINER_BROOKE_3, TRAINER_BROOKE_4, TRAINER_BROOKE_5, MAP_ROUTE111),
+ [REMATCH_WILTON] = REMATCH(TRAINER_WILTON_1, TRAINER_WILTON_2, TRAINER_WILTON_3, TRAINER_WILTON_4, TRAINER_WILTON_5, MAP_ROUTE111),
+ [REMATCH_VALERIE] = REMATCH(TRAINER_VALERIE_1, TRAINER_VALERIE_2, TRAINER_VALERIE_3, TRAINER_VALERIE_4, TRAINER_VALERIE_5, MAP_MT_PYRE_6F),
+ [REMATCH_CINDY] = REMATCH(TRAINER_CINDY_1, TRAINER_CINDY_3, TRAINER_CINDY_4, TRAINER_CINDY_5, TRAINER_CINDY_6, MAP_ROUTE104),
+ [REMATCH_THALIA] = REMATCH(TRAINER_THALIA_1, TRAINER_THALIA_2, TRAINER_THALIA_3, TRAINER_THALIA_4, TRAINER_THALIA_5, MAP_ABANDONED_SHIP_ROOMS_1F),
+ [REMATCH_JESSICA] = REMATCH(TRAINER_JESSICA_1, TRAINER_JESSICA_2, TRAINER_JESSICA_3, TRAINER_JESSICA_4, TRAINER_JESSICA_5, MAP_ROUTE121),
+ [REMATCH_WINSTON] = REMATCH(TRAINER_WINSTON_1, TRAINER_WINSTON_2, TRAINER_WINSTON_3, TRAINER_WINSTON_4, TRAINER_WINSTON_5, MAP_ROUTE104),
+ [REMATCH_STEVE] = REMATCH(TRAINER_STEVE_1, TRAINER_STEVE_2, TRAINER_STEVE_3, TRAINER_STEVE_4, TRAINER_STEVE_5, MAP_ROUTE114),
+ [REMATCH_TONY] = REMATCH(TRAINER_TONY_1, TRAINER_TONY_2, TRAINER_TONY_3, TRAINER_TONY_4, TRAINER_TONY_5, MAP_ROUTE107),
+ [REMATCH_NOB] = REMATCH(TRAINER_NOB_1, TRAINER_NOB_2, TRAINER_NOB_3, TRAINER_NOB_4, TRAINER_NOB_5, MAP_ROUTE115),
+ [REMATCH_KOJI] = REMATCH(TRAINER_KOJI_1, TRAINER_KOJI_2, TRAINER_KOJI_3, TRAINER_KOJI_4, TRAINER_KOJI_5, MAP_ROUTE127),
+ [REMATCH_FERNANDO] = REMATCH(TRAINER_FERNANDO_1, TRAINER_FERNANDO_2, TRAINER_FERNANDO_3, TRAINER_FERNANDO_4, TRAINER_FERNANDO_5, MAP_ROUTE123),
+ [REMATCH_DALTON] = REMATCH(TRAINER_DALTON_1, TRAINER_DALTON_2, TRAINER_DALTON_3, TRAINER_DALTON_4, TRAINER_DALTON_5, MAP_ROUTE118),
+ [REMATCH_BERNIE] = REMATCH(TRAINER_BERNIE_1, TRAINER_BERNIE_2, TRAINER_BERNIE_3, TRAINER_BERNIE_4, TRAINER_BERNIE_5, MAP_ROUTE114),
+ [REMATCH_ETHAN] = REMATCH(TRAINER_ETHAN_1, TRAINER_ETHAN_2, TRAINER_ETHAN_3, TRAINER_ETHAN_4, TRAINER_ETHAN_5, MAP_JAGGED_PASS),
+ [REMATCH_JOHN_AND_JAY] = REMATCH(TRAINER_JOHN_AND_JAY_1, TRAINER_JOHN_AND_JAY_2, TRAINER_JOHN_AND_JAY_3, TRAINER_JOHN_AND_JAY_4, TRAINER_JOHN_AND_JAY_5, MAP_METEOR_FALLS_1F_2R),
+ [REMATCH_JEFFREY] = REMATCH(TRAINER_JEFFREY_1, TRAINER_JEFFREY_2, TRAINER_JEFFREY_3, TRAINER_JEFFREY_4, TRAINER_JEFFREY_5, MAP_ROUTE120),
+ [REMATCH_CAMERON] = REMATCH(TRAINER_CAMERON_1, TRAINER_CAMERON_2, TRAINER_CAMERON_3, TRAINER_CAMERON_4, TRAINER_CAMERON_5, MAP_ROUTE123),
+ [REMATCH_JACKI] = REMATCH(TRAINER_JACKI_1, TRAINER_JACKI_2, TRAINER_JACKI_3, TRAINER_JACKI_4, TRAINER_JACKI_5, MAP_ROUTE123),
+ [REMATCH_WALTER] = REMATCH(TRAINER_WALTER_1, TRAINER_WALTER_2, TRAINER_WALTER_3, TRAINER_WALTER_4, TRAINER_WALTER_5, MAP_ROUTE121),
+ [REMATCH_KAREN] = REMATCH(TRAINER_KAREN_1, TRAINER_KAREN_2, TRAINER_KAREN_3, TRAINER_KAREN_4, TRAINER_KAREN_5, MAP_ROUTE116),
+ [REMATCH_JERRY] = REMATCH(TRAINER_JERRY_1, TRAINER_JERRY_2, TRAINER_JERRY_3, TRAINER_JERRY_4, TRAINER_JERRY_5, MAP_ROUTE116),
+ [REMATCH_ANNA_AND_MEG] = REMATCH(TRAINER_ANNA_AND_MEG_1, TRAINER_ANNA_AND_MEG_2, TRAINER_ANNA_AND_MEG_3, TRAINER_ANNA_AND_MEG_4, TRAINER_ANNA_AND_MEG_5, MAP_ROUTE117),
+ [REMATCH_ISABEL] = REMATCH(TRAINER_ISABEL_1, TRAINER_ISABEL_2, TRAINER_ISABEL_3, TRAINER_ISABEL_4, TRAINER_ISABEL_5, MAP_ROUTE110),
+ [REMATCH_MIGUEL] = REMATCH(TRAINER_MIGUEL_1, TRAINER_MIGUEL_2, TRAINER_MIGUEL_3, TRAINER_MIGUEL_4, TRAINER_MIGUEL_5, MAP_ROUTE103),
+ [REMATCH_TIMOTHY] = REMATCH(TRAINER_TIMOTHY_1, TRAINER_TIMOTHY_2, TRAINER_TIMOTHY_3, TRAINER_TIMOTHY_4, TRAINER_TIMOTHY_5, MAP_ROUTE115),
+ [REMATCH_SHELBY] = REMATCH(TRAINER_SHELBY_1, TRAINER_SHELBY_2, TRAINER_SHELBY_3, TRAINER_SHELBY_4, TRAINER_SHELBY_5, MAP_MT_CHIMNEY),
+ [REMATCH_CALVIN] = REMATCH(TRAINER_CALVIN_1, TRAINER_CALVIN_2, TRAINER_CALVIN_3, TRAINER_CALVIN_4, TRAINER_CALVIN_5, MAP_ROUTE102),
+ [REMATCH_ELLIOT] = REMATCH(TRAINER_ELLIOT_1, TRAINER_ELLIOT_2, TRAINER_ELLIOT_3, TRAINER_ELLIOT_4, TRAINER_ELLIOT_5, MAP_ROUTE106),
+ [REMATCH_ISAIAH] = REMATCH(TRAINER_ISAIAH_1, TRAINER_ISAIAH_2, TRAINER_ISAIAH_3, TRAINER_ISAIAH_4, TRAINER_ISAIAH_5, MAP_ROUTE128),
+ [REMATCH_MARIA] = REMATCH(TRAINER_MARIA_1, TRAINER_MARIA_2, TRAINER_MARIA_3, TRAINER_MARIA_4, TRAINER_MARIA_5, MAP_ROUTE117),
+ [REMATCH_ABIGAIL] = REMATCH(TRAINER_ABIGAIL_1, TRAINER_ABIGAIL_2, TRAINER_ABIGAIL_3, TRAINER_ABIGAIL_4, TRAINER_ABIGAIL_5, MAP_ROUTE110),
+ [REMATCH_DYLAN] = REMATCH(TRAINER_DYLAN_1, TRAINER_DYLAN_2, TRAINER_DYLAN_3, TRAINER_DYLAN_4, TRAINER_DYLAN_5, MAP_ROUTE117),
+ [REMATCH_KATELYN] = REMATCH(TRAINER_KATELYN_1, TRAINER_KATELYN_2, TRAINER_KATELYN_3, TRAINER_KATELYN_4, TRAINER_KATELYN_5, MAP_ROUTE128),
+ [REMATCH_BENJAMIN] = REMATCH(TRAINER_BENJAMIN_1, TRAINER_BENJAMIN_2, TRAINER_BENJAMIN_3, TRAINER_BENJAMIN_4, TRAINER_BENJAMIN_5, MAP_ROUTE110),
+ [REMATCH_PABLO] = REMATCH(TRAINER_PABLO_1, TRAINER_PABLO_2, TRAINER_PABLO_3, TRAINER_PABLO_4, TRAINER_PABLO_5, MAP_ROUTE126),
+ [REMATCH_NICOLAS] = REMATCH(TRAINER_NICOLAS_1, TRAINER_NICOLAS_2, TRAINER_NICOLAS_3, TRAINER_NICOLAS_4, TRAINER_NICOLAS_5, MAP_METEOR_FALLS_1F_2R),
+ [REMATCH_ROBERT] = REMATCH(TRAINER_ROBERT_1, TRAINER_ROBERT_2, TRAINER_ROBERT_3, TRAINER_ROBERT_4, TRAINER_ROBERT_5, MAP_ROUTE120),
+ [REMATCH_LAO] = REMATCH(TRAINER_LAO_1, TRAINER_LAO_2, TRAINER_LAO_3, TRAINER_LAO_4, TRAINER_LAO_5, MAP_ROUTE113),
+ [REMATCH_CYNDY] = REMATCH(TRAINER_CYNDY_1, TRAINER_CYNDY_2, TRAINER_CYNDY_3, TRAINER_CYNDY_4, TRAINER_CYNDY_5, MAP_ROUTE115),
+ [REMATCH_MADELINE] = REMATCH(TRAINER_MADELINE_1, TRAINER_MADELINE_2, TRAINER_MADELINE_3, TRAINER_MADELINE_4, TRAINER_MADELINE_5, MAP_ROUTE113),
+ [REMATCH_JENNY] = REMATCH(TRAINER_JENNY_1, TRAINER_JENNY_2, TRAINER_JENNY_3, TRAINER_JENNY_4, TRAINER_JENNY_5, MAP_ROUTE124),
+ [REMATCH_DIANA] = REMATCH(TRAINER_DIANA_1, TRAINER_DIANA_2, TRAINER_DIANA_3, TRAINER_DIANA_4, TRAINER_DIANA_5, MAP_JAGGED_PASS),
+ [REMATCH_AMY_AND_LIV] = REMATCH(TRAINER_AMY_AND_LIV_1, TRAINER_AMY_AND_LIV_2, TRAINER_AMY_AND_LIV_4, TRAINER_AMY_AND_LIV_5, TRAINER_AMY_AND_LIV_6, MAP_ROUTE103),
+ [REMATCH_ERNEST] = REMATCH(TRAINER_ERNEST_1, TRAINER_ERNEST_2, TRAINER_ERNEST_3, TRAINER_ERNEST_4, TRAINER_ERNEST_5, MAP_ROUTE125),
+ [REMATCH_CORY] = REMATCH(TRAINER_CORY_1, TRAINER_CORY_2, TRAINER_CORY_3, TRAINER_CORY_4, TRAINER_CORY_5, MAP_ROUTE108),
+ [REMATCH_EDWIN] = REMATCH(TRAINER_EDWIN_1, TRAINER_EDWIN_2, TRAINER_EDWIN_3, TRAINER_EDWIN_4, TRAINER_EDWIN_5, MAP_ROUTE110),
+ [REMATCH_LYDIA] = REMATCH(TRAINER_LYDIA_1, TRAINER_LYDIA_2, TRAINER_LYDIA_3, TRAINER_LYDIA_4, TRAINER_LYDIA_5, MAP_ROUTE117),
+ [REMATCH_ISAAC] = REMATCH(TRAINER_ISAAC_1, TRAINER_ISAAC_2, TRAINER_ISAAC_3, TRAINER_ISAAC_4, TRAINER_ISAAC_5, MAP_ROUTE117),
+ [REMATCH_GABRIELLE] = REMATCH(TRAINER_GABRIELLE_1, TRAINER_GABRIELLE_2, TRAINER_GABRIELLE_3, TRAINER_GABRIELLE_4, TRAINER_GABRIELLE_5, MAP_MT_PYRE_3F),
+ [REMATCH_CATHERINE] = REMATCH(TRAINER_CATHERINE_1, TRAINER_CATHERINE_2, TRAINER_CATHERINE_3, TRAINER_CATHERINE_4, TRAINER_CATHERINE_5, MAP_ROUTE119),
+ [REMATCH_JACKSON] = REMATCH(TRAINER_JACKSON_1, TRAINER_JACKSON_2, TRAINER_JACKSON_3, TRAINER_JACKSON_4, TRAINER_JACKSON_5, MAP_ROUTE119),
+ [REMATCH_HALEY] = REMATCH(TRAINER_HALEY_1, TRAINER_HALEY_2, TRAINER_HALEY_3, TRAINER_HALEY_4, TRAINER_HALEY_5, MAP_ROUTE104),
+ [REMATCH_JAMES] = REMATCH(TRAINER_JAMES_1, TRAINER_JAMES_2, TRAINER_JAMES_3, TRAINER_JAMES_4, TRAINER_JAMES_5, MAP_PETALBURG_WOODS),
+ [REMATCH_TRENT] = REMATCH(TRAINER_TRENT_1, TRAINER_TRENT_2, TRAINER_TRENT_3, TRAINER_TRENT_4, TRAINER_TRENT_5, MAP_ROUTE112),
+ [REMATCH_SAWYER] = REMATCH(TRAINER_SAWYER_1, TRAINER_SAWYER_2, TRAINER_SAWYER_3, TRAINER_SAWYER_4, TRAINER_SAWYER_5, MAP_MT_CHIMNEY),
+ [REMATCH_KIRA_AND_DAN] = REMATCH(TRAINER_KIRA_AND_DAN_1, TRAINER_KIRA_AND_DAN_2, TRAINER_KIRA_AND_DAN_3, TRAINER_KIRA_AND_DAN_4, TRAINER_KIRA_AND_DAN_5, MAP_ABANDONED_SHIP_ROOMS2_1F),
+ [REMATCH_WALLY_VR] = REMATCH(TRAINER_WALLY_VR_2, TRAINER_WALLY_VR_3, TRAINER_WALLY_VR_4, TRAINER_WALLY_VR_5, TRAINER_WALLY_VR_5, MAP_VICTORY_ROAD_1F),
+ [REMATCH_ROXANNE] = REMATCH(TRAINER_ROXANNE_1, TRAINER_ROXANNE_2, TRAINER_ROXANNE_3, TRAINER_ROXANNE_4, TRAINER_ROXANNE_5, MAP_RUSTBORO_CITY),
+ [REMATCH_BRAWLY] = REMATCH(TRAINER_BRAWLY_1, TRAINER_BRAWLY_2, TRAINER_BRAWLY_3, TRAINER_BRAWLY_4, TRAINER_BRAWLY_5, MAP_DEWFORD_TOWN),
+ [REMATCH_WATTSON] = REMATCH(TRAINER_WATTSON_1, TRAINER_WATTSON_2, TRAINER_WATTSON_3, TRAINER_WATTSON_4, TRAINER_WATTSON_5, MAP_MAUVILLE_CITY),
+ [REMATCH_FLANNERY] = REMATCH(TRAINER_FLANNERY_1, TRAINER_FLANNERY_2, TRAINER_FLANNERY_3, TRAINER_FLANNERY_4, TRAINER_FLANNERY_5, MAP_LAVARIDGE_TOWN),
+ [REMATCH_NORMAN] = REMATCH(TRAINER_NORMAN_1, TRAINER_NORMAN_2, TRAINER_NORMAN_3, TRAINER_NORMAN_4, TRAINER_NORMAN_5, MAP_PETALBURG_CITY),
+ [REMATCH_WINONA] = REMATCH(TRAINER_WINONA_1, TRAINER_WINONA_2, TRAINER_WINONA_3, TRAINER_WINONA_4, TRAINER_WINONA_5, MAP_FORTREE_CITY),
+ [REMATCH_TATE_AND_LIZA] = REMATCH(TRAINER_TATE_AND_LIZA_1, TRAINER_TATE_AND_LIZA_2, TRAINER_TATE_AND_LIZA_3, TRAINER_TATE_AND_LIZA_4, TRAINER_TATE_AND_LIZA_5, MAP_MOSSDEEP_CITY),
+ [REMATCH_JUAN] = REMATCH(TRAINER_JUAN_1, TRAINER_JUAN_2, TRAINER_JUAN_3, TRAINER_JUAN_4, TRAINER_JUAN_5, MAP_SOOTOPOLIS_CITY),
+ [REMATCH_SIDNEY] = REMATCH(TRAINER_SIDNEY, TRAINER_SIDNEY, TRAINER_SIDNEY, TRAINER_SIDNEY, TRAINER_SIDNEY, MAP_EVER_GRANDE_CITY),
+ [REMATCH_PHOEBE] = REMATCH(TRAINER_PHOEBE, TRAINER_PHOEBE, TRAINER_PHOEBE, TRAINER_PHOEBE, TRAINER_PHOEBE, MAP_EVER_GRANDE_CITY),
+ [REMATCH_GLACIA] = REMATCH(TRAINER_GLACIA, TRAINER_GLACIA, TRAINER_GLACIA, TRAINER_GLACIA, TRAINER_GLACIA, MAP_EVER_GRANDE_CITY),
+ [REMATCH_DRAKE] = REMATCH(TRAINER_DRAKE, TRAINER_DRAKE, TRAINER_DRAKE, TRAINER_DRAKE, TRAINER_DRAKE, MAP_EVER_GRANDE_CITY),
+ [REMATCH_WALLACE] = REMATCH(TRAINER_WALLACE, TRAINER_WALLACE, TRAINER_WALLACE, TRAINER_WALLACE, TRAINER_WALLACE, MAP_EVER_GRANDE_CITY),
};
#define tState data[0]
@@ -580,7 +581,7 @@ static void CB2_EndWildBattle(void)
{
CpuFill16(0, (void *)(BG_PLTT), BG_PLTT_SIZE);
ResetOamRange(0, 128);
-
+
if (IsNPCFollowerWildBattle())
{
RestorePartyAfterFollowerNPCBattle();
@@ -677,7 +678,7 @@ u8 BattleSetup_GetEnvironmentId(void)
if (MetatileBehavior_IsBridgeOverWater(tileBehavior) == TRUE)
return BATTLE_ENVIRONMENT_WATER;
}
- if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(ROUTE113) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(ROUTE113))
+ if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(MAP_ROUTE113) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(MAP_ROUTE113))
return BATTLE_ENVIRONMENT_SAND;
if (GetSavedWeather() == WEATHER_SANDSTORM)
return BATTLE_ENVIRONMENT_SAND;
@@ -772,7 +773,7 @@ u8 GetWildBattleTransition(void)
u8 GetTrainerBattleTransition(void)
{
- u8 minPartyCount;
+ u8 minPartyCount = 1;
u8 transitionType;
u8 enemyLevel;
u8 playerLevel;
@@ -792,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);
@@ -1008,7 +1014,7 @@ void SetMapVarsToTrainerA(void)
void SetMapVarsToTrainerB(void)
{
- if (TRAINER_BATTLE_PARAM.objEventLocalIdB != 0)
+ if (TRAINER_BATTLE_PARAM.objEventLocalIdB != LOCALID_NONE)
{
gSpecialVar_LastTalked = TRAINER_BATTLE_PARAM.objEventLocalIdB;
gSelectedObjectEvent = GetObjectEventIdByLocalIdAndMap(TRAINER_BATTLE_PARAM.objEventLocalIdB, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
@@ -1299,7 +1305,7 @@ 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);
diff --git a/src/battle_terastal.c b/src/battle_terastal.c
index 942d761c2b..6984f3fc6c 100644
--- a/src/battle_terastal.c
+++ b/src/battle_terastal.c
@@ -63,10 +63,10 @@ void ApplyBattlerVisualsForTeraAnim(u32 battler)
bool32 CanTerastallize(u32 battler)
{
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 && !IsOnPlayerSide(battler))
return FALSE;
diff --git a/src/battle_tower.c b/src/battle_tower.c
index 54a081884b..19a123c412 100644
--- a/src/battle_tower.c
+++ b/src/battle_tower.c
@@ -703,7 +703,7 @@ const struct Trainer gBattlePartners[DIFFICULTY_COUNT][PARTNER_COUNT] =
#include "data/battle_partners.h"
};
-static void (* const sBattleTowerFuncs[])(void) =
+static void (*const sBattleTowerFuncs[])(void) =
{
[BATTLE_TOWER_FUNC_INIT] = InitTowerChallenge,
[BATTLE_TOWER_FUNC_GET_DATA] = GetTowerData,
@@ -1580,7 +1580,7 @@ void CreateFacilityMon(const struct TrainerMon *fmon, u16 level, u8 fixedIV, u32
}
ModifyPersonalityForNature(&personality, fmon->nature);
- CreateMon(dst, fmon->species, level, fixedIV, TRUE, personality, otID, OT_ID_PRESET);
+ CreateMon(dst, fmon->species, level, fixedIV, TRUE, personality, OT_ID_PRESET, otID);
friendship = MAX_FRIENDSHIP;
// Give the chosen Pokémon its specified moves.
@@ -2392,7 +2392,7 @@ static void LoadMultiPartnerCandidatesData(void)
static void GetPotentialPartnerMoveAndSpecies(u16 trainerId, u16 monId)
{
- u16 move = 0;
+ u16 move = MOVE_NONE;
u16 species = 0;
SetFacilityPtrsGetLevel();
diff --git a/src/battle_transition.c b/src/battle_transition.c
index 77cd376ae4..fe7188203b 100644
--- a/src/battle_transition.c
+++ b/src/battle_transition.c
@@ -81,7 +81,7 @@ struct RectangularSpiralLine
{
u8 state;
s16 position;
- u8 moveIdx;
+ u8 moveIndex;
s16 reboundPosition;
bool8 outward;
};
@@ -275,7 +275,7 @@ static s16 IsTrainerPicSlideDone(s16);
static bool8 TransitionIntro_FadeToGray(struct Task *);
static bool8 TransitionIntro_FadeFromGray(struct Task *);
static bool8 IsIntroTaskDone(void);
-static bool16 UpdateRectangularSpiralLine(const s16 * const *, struct RectangularSpiralLine *);
+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 *);
@@ -2376,16 +2376,25 @@ static bool8 Mugshot_StartOpponentSlide(struct Task *task)
sTransitionData->BG0HOFS_Upper += 8;
SetTrainerPicSlideDirection(task->tOpponentSpriteAId, 0);
- SetTrainerPicSlideDirection(task->tOpponentSpriteBId, 0);
+ if (TRAINER_BATTLE_PARAM.opponentB != TRAINER_NONE && gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS)
+ {
+ SetTrainerPicSlideDirection(task->tOpponentSpriteBId, 0);
+ }
SetTrainerPicSlideDirection(task->tPlayerSpriteId, 1);
- SetTrainerPicSlideDirection(task->tPartnerSpriteId, 1);
+ if (gPartnerTrainerId != TRAINER_PARTNER(PARTNER_NONE) && gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER)
+ {
+ SetTrainerPicSlideDirection(task->tPartnerSpriteId, 1);
+ }
// Start opponent slide
IncrementTrainerPicState(task->tOpponentSpriteAId);
PlaySE(SE_MUGSHOT);
- IncrementTrainerPicState(task->tOpponentSpriteBId);
+ if (TRAINER_BATTLE_PARAM.opponentB != TRAINER_NONE && gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS)
+ {
+ IncrementTrainerPicState(task->tOpponentSpriteBId);
+ }
sTransitionData->VBlank_DMA++;
return FALSE;
@@ -2400,7 +2409,10 @@ static bool8 Mugshot_WaitStartPlayerSlide(struct Task *task)
if (IsTrainerPicSlideDone(task->tOpponentSpriteAId))
{
task->tState++;
- IncrementTrainerPicState(task->tPartnerSpriteId);
+ if (gPartnerTrainerId != TRAINER_PARTNER(PARTNER_NONE) && gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER)
+ {
+ IncrementTrainerPicState(task->tPartnerSpriteId);
+ }
IncrementTrainerPicState(task->tPlayerSpriteId);
}
return FALSE;
@@ -2577,8 +2589,8 @@ static void Mugshots_CreateTrainerPics(struct Task *task)
s16 opponentBRotationScales = 0;
gReservedSpritePaletteCount = 10;
- if (TRAINER_BATTLE_PARAM.opponentB != TRAINER_NONE && gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS)
- {
+ 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,
@@ -2593,12 +2605,12 @@ static void Mugshots_CreateTrainerPics(struct Task *task)
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;
if (gPartnerTrainerId != TRAINER_PARTNER(PARTNER_NONE) && gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER)
{
@@ -3231,28 +3243,28 @@ static bool8 RectangularSpiral_Init(struct Task *task)
// Line starting in top left
sRectangularSpiralLines[0].state = SPIRAL_INWARD_START;
sRectangularSpiralLines[0].position = -1;
- sRectangularSpiralLines[0].moveIdx = 1;
+ sRectangularSpiralLines[0].moveIndex = 1;
sRectangularSpiralLines[0].reboundPosition = 308;
sRectangularSpiralLines[0].outward = FALSE;
// Line starting in bottom right
sRectangularSpiralLines[1].state = SPIRAL_INWARD_START;
sRectangularSpiralLines[1].position = -1;
- sRectangularSpiralLines[1].moveIdx = 1;
+ sRectangularSpiralLines[1].moveIndex = 1;
sRectangularSpiralLines[1].reboundPosition = 308;
sRectangularSpiralLines[1].outward = FALSE;
// Line starting in top right
sRectangularSpiralLines[2].state = SPIRAL_INWARD_START;
sRectangularSpiralLines[2].position = -3;
- sRectangularSpiralLines[2].moveIdx = 1;
+ sRectangularSpiralLines[2].moveIndex = 1;
sRectangularSpiralLines[2].reboundPosition = 307;
sRectangularSpiralLines[2].outward = FALSE;
// Line starting in bottom left
sRectangularSpiralLines[3].state = SPIRAL_INWARD_START;
sRectangularSpiralLines[3].position = -3;
- sRectangularSpiralLines[3].moveIdx = 1;
+ sRectangularSpiralLines[3].moveIndex = 1;
sRectangularSpiralLines[3].reboundPosition = 307;
sRectangularSpiralLines[3].outward = FALSE;
@@ -3308,14 +3320,14 @@ static bool8 RectangularSpiral_End(struct Task *task)
}
// Returns TRUE if a tile should be drawn, FALSE otherwise
-static bool16 UpdateRectangularSpiralLine(const s16 * const *moveDataTable, struct RectangularSpiralLine *line)
+static bool16 UpdateRectangularSpiralLine(const s16 *const *moveDataTable, struct RectangularSpiralLine *line)
{
const s16 *moveData = moveDataTable[line->state];
// Has spiral finished?
// Note that most move data arrays endsin SPIRAL_END but it is
// only ever reached on the final array of spiraling outward.
- if (moveData[line->moveIdx] == SPIRAL_END)
+ if (moveData[line->moveIndex] == SPIRAL_END)
return FALSE;
// Presumably saving data for debug.
@@ -3346,21 +3358,21 @@ static bool16 UpdateRectangularSpiralLine(const s16 * const *moveDataTable, stru
// Below check is never true.
// SPIRAL_END was already checked, and position is never >= 640
- if (line->position >= 640 || moveData[line->moveIdx] == SPIRAL_END)
+ if (line->position >= 640 || moveData[line->moveIndex] == SPIRAL_END)
return FALSE;
- if (!line->outward && moveData[line->moveIdx] == SPIRAL_REBOUND)
+ if (!line->outward && moveData[line->moveIndex] == SPIRAL_REBOUND)
{
// Line has reached the final point of spiraling inward.
// Time to flip and start spiraling outward.
line->outward = TRUE;
- line->moveIdx = 1;
+ line->moveIndex = 1;
line->position = line->reboundPosition;
line->state = SPIRAL_OUTWARD_START;
}
// Reached move target, advance to next movement.
- if (line->position == moveData[line->moveIdx])
+ if (line->position == moveData[line->moveIndex])
{
line->state++;
if (line->outward == TRUE)
@@ -3370,7 +3382,7 @@ static bool16 UpdateRectangularSpiralLine(const s16 * const *moveDataTable, stru
// Still spiraling outward, loop back to the first state
// but use the second set of move targets.
// For example, the 28 in sRectangularSpiral_Major_OutwardUp
- line->moveIdx++;
+ line->moveIndex++;
line->state = SPIRAL_OUTWARD_START;
}
}
@@ -3381,7 +3393,7 @@ static bool16 UpdateRectangularSpiralLine(const s16 * const *moveDataTable, stru
// Still spiraling inward, loop back to the first state
// but use the second set of move targets.
// For example, the 275 in sRectangularSpiral_Major_InwardRight
- line->moveIdx++;
+ line->moveIndex++;
line->state = SPIRAL_INWARD_START;
}
}
diff --git a/src/battle_tv.c b/src/battle_tv.c
index 0758bf4107..96ce633440 100644
--- a/src/battle_tv.c
+++ b/src/battle_tv.c
@@ -15,8 +15,8 @@ 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);
-static void AddPointsBasedOnWeather(u16 weatherFlags, u16 moveId, u8 moveSlot);
-static bool8 ShouldCalculateDamage(u16 moveId, s32 *dmg, u16 *powerOverride);
+static void AddPointsBasedOnWeather(u16 weatherFlags, u16 move, u8 moveSlot);
+static bool8 ShouldCalculateDamage(u16 move, s32 *dmg, u16 *powerOverride);
#define TABLE_END ((u16)-1)
@@ -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
@@ -359,16 +173,19 @@ void BattleTv_SetDataBasedOnString(enum StringID 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(enum StringID 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(enum StringID 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(enum StringID 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(enum StringID 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(enum StringID 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(enum StringID 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(enum StringID 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(enum StringID 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:
@@ -831,7 +654,7 @@ void TryPutLinkBattleTvShowOnAir(void)
u8 countPlayer = 0, countOpponent = 0;
s16 sum = 0;
u16 species = 0;
- u16 moveId = 0;
+ u16 move = MOVE_NONE;
s32 i, j;
int zero = 0, one = 1; //needed for matching
@@ -899,8 +722,8 @@ void TryPutLinkBattleTvShowOnAir(void)
}
}
- moveId = GetMonData(&gPlayerParty[playerBestMonId], MON_DATA_MOVE1 + i, NULL);
- if (playerBestSum == 0 || moveId == 0)
+ move = GetMonData(&gPlayerParty[playerBestMonId], MON_DATA_MOVE1 + i, NULL);
+ if (playerBestSum == 0 || move == MOVE_NONE)
return;
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
@@ -909,12 +732,12 @@ void TryPutLinkBattleTvShowOnAir(void)
|| (playerBestMonId >= MULTI_PARTY_SIZE && GetLinkTrainerFlankId(gBattleScripting.multiplayerId)))
{
j = (opponentBestMonId < MULTI_PARTY_SIZE) ? FALSE : TRUE;
- PutBattleUpdateOnTheAir(GetOpposingLinkMultiBattlerId(j, gBattleScripting.multiplayerId), moveId, playerBestSpecies, opponentBestSpecies);
+ PutBattleUpdateOnTheAir(GetOpposingLinkMultiBattlerId(j, gBattleScripting.multiplayerId), move, playerBestSpecies, opponentBestSpecies);
}
}
else
{
- PutBattleUpdateOnTheAir(gBattleScripting.multiplayerId ^ 1, moveId, playerBestSpecies, opponentBestSpecies);
+ PutBattleUpdateOnTheAir(gBattleScripting.multiplayerId ^ 1, move, playerBestSpecies, opponentBestSpecies);
}
}
@@ -924,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))
- baseFromEffect += 3;
- if (MoveHasAdditionalEffect(arg2, MOVE_EFFECT_WRAP) || MoveHasAdditionalEffectSelf(arg2, MOVE_EFFECT_THRASH))
+ break;
+ case MOVE_EFFECT_PARALYSIS:
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:
+ movePoints->points[atkSide][gBattlerPartyIndexes[gBattlerAttacker] * 4 + arg1] += sPointsArray[caseId][arg2];
+ break;
case PTS_STAT_INCREASE_1:
- case PTS_STAT_INCREASE_2:
- case PTS_STAT_DECREASE_SELF:
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] += sPointsArray[caseId][arg2];
+ 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:
+ 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] += sPointsArray[caseId][arg1];
+ 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
@@ -1014,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;
@@ -1030,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;
@@ -1044,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:
@@ -1297,9 +1304,9 @@ static void TrySetBattleSeminarShow(void)
gCurrentMove = currMoveSaved;
}
-static bool8 ShouldCalculateDamage(u16 moveId, s32 *dmg, u16 *powerOverride)
+static bool8 ShouldCalculateDamage(u16 move, s32 *dmg, u16 *powerOverride)
{
- if (IsBattleMoveStatus(moveId))
+ if (IsBattleMoveStatus(move))
{
*dmg = 0;
return FALSE;
@@ -1309,7 +1316,7 @@ static bool8 ShouldCalculateDamage(u16 moveId, s32 *dmg, u16 *powerOverride)
s32 i = 0;
do
{
- if (moveId == sVariableDmgMoves[i])
+ if (move == sVariableDmgMoves[i])
break;
i++;
} while (sVariableDmgMoves[i] != TABLE_END);
@@ -1319,13 +1326,13 @@ static bool8 ShouldCalculateDamage(u16 moveId, s32 *dmg, u16 *powerOverride)
*dmg = 0;
return FALSE;
}
- else if (moveId == MOVE_PSYWAVE)
+ else if (move == MOVE_PSYWAVE)
{
*dmg = gBattleMons[gBattlerAttacker].level;
*dmg /= 2;
return FALSE;
}
- else if (moveId == MOVE_MAGNITUDE)
+ else if (move == MOVE_MAGNITUDE)
{
*powerOverride = 10;
return TRUE;
@@ -1360,17 +1367,17 @@ void BattleTv_ClearExplosionFaintCause(void)
}
}
-u8 GetBattlerMoveSlotId(u8 battlerId, u16 moveId)
+u8 GetBattlerMoveSlotId(u8 battler, u16 move)
{
s32 i;
- struct Pokemon *mon = GetBattlerMon(battlerId);
+ struct Pokemon *mon = GetBattlerMon(battler);
i = 0;
while (1)
{
if (i >= MAX_MON_MOVES)
break;
- if (GetMonData(mon, MON_DATA_MOVE1 + i, NULL) == moveId)
+ if (GetMonData(mon, MON_DATA_MOVE1 + i, NULL) == move)
break;
i++;
}
@@ -1378,14 +1385,14 @@ u8 GetBattlerMoveSlotId(u8 battlerId, u16 moveId)
return i;
}
-static void AddPointsBasedOnWeather(u16 weatherFlags, u16 moveId, u8 moveSlot)
+static void AddPointsBasedOnWeather(u16 weatherFlags, u16 move, u8 moveSlot)
{
if (weatherFlags & B_WEATHER_RAIN)
- AddMovePoints(PTS_RAIN, moveId, moveSlot, 0);
+ AddMovePoints(PTS_RAIN, move, moveSlot, 0);
else if (weatherFlags & B_WEATHER_SUN)
- AddMovePoints(PTS_SUN, moveId, moveSlot, 0);
+ AddMovePoints(PTS_SUN, move, moveSlot, 0);
else if (weatherFlags & B_WEATHER_SANDSTORM)
- AddMovePoints(PTS_SANDSTORM, moveId, moveSlot, 0);
+ AddMovePoints(PTS_SANDSTORM, move, moveSlot, 0);
else if (weatherFlags & (B_WEATHER_HAIL | B_WEATHER_SNOW))
- AddMovePoints(PTS_HAIL, moveId, moveSlot, 0);
+ AddMovePoints(PTS_HAIL_SNOW, move, moveSlot, 0);
}
diff --git a/src/battle_util.c b/src/battle_util.c
index 55c41d4556..2c48f0e202 100644
--- a/src/battle_util.c
+++ b/src/battle_util.c
@@ -570,7 +570,7 @@ void HandleAction_UseItem(void)
ClearVariousBattlerFlags(gBattlerAttacker);
gLastUsedItem = gBattleResources->bufferB[gBattlerAttacker][1] | (gBattleResources->bufferB[gBattlerAttacker][2] << 8);
- gBattlescriptCurrInstr = gBattlescriptsForUsingItem[ItemId_GetBattleUsage(gLastUsedItem) - 1];
+ gBattlescriptCurrInstr = gBattlescriptsForUsingItem[GetItemBattleUsage(gLastUsedItem) - 1];
gCurrentActionFuncId = B_ACTION_EXEC_SCRIPT;
}
@@ -588,7 +588,7 @@ bool32 TryRunFromBattle(u32 battler)
if (gBattleMons[battler].item == ITEM_ENIGMA_BERRY_E_READER)
holdEffect = gEnigmaBerries[battler].holdEffect;
else
- holdEffect = ItemId_GetHoldEffect(gBattleMons[battler].item);
+ holdEffect = GetItemHoldEffect(gBattleMons[battler].item);
gPotentialItemEffectBattler = battler;
@@ -748,7 +748,7 @@ void HandleAction_ThrowBall(void)
gBattle_BG0_X = 0;
gBattle_BG0_Y = 0;
gLastUsedItem = gBallToDisplay;
- if (!ItemId_GetImportance(gLastUsedItem))
+ if (!GetItemImportance(gLastUsedItem))
RemoveBagItem(gLastUsedItem, 1);
gBattlescriptCurrInstr = BattleScript_BallThrow;
gCurrentActionFuncId = B_ACTION_EXEC_SCRIPT;
@@ -917,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)
@@ -1010,29 +988,29 @@ static void UNUSED MarkAllBattlersForControllerExec(void)
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
{
for (i = 0; i < gBattlersCount; i++)
- gBattleControllerExecFlags |= 1u << (i + 32 - MAX_BATTLERS_COUNT);
+ MarkBattleControllerMessageOutboundOverLink(i);
}
else
{
for (i = 0; i < gBattlersCount; i++)
- gBattleControllerExecFlags |= 1u << i;
+ MarkBattleControllerActiveOnLocal(i);
}
}
bool32 IsBattlerMarkedForControllerExec(u32 battler)
{
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
- return (gBattleControllerExecFlags & (1u << (battler + 28))) != 0;
+ return IsBattleControllerMessageSynchronizedOverLink(battler);
else
- return (gBattleControllerExecFlags & (1u << battler)) != 0;
+ return IsBattleControllerActiveOnLocal(battler);
}
void MarkBattlerForControllerExec(u32 battler)
{
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
- gBattleControllerExecFlags |= 1u << (battler + 32 - MAX_BATTLERS_COUNT);
+ MarkBattleControllerMessageOutboundOverLink(battler);
else
- gBattleControllerExecFlags |= 1u << battler;
+ MarkBattleControllerActiveOnLocal(battler);
}
void MarkBattlerReceivedLinkData(u32 battler)
@@ -1040,9 +1018,9 @@ void MarkBattlerReceivedLinkData(u32 battler)
s32 i;
for (i = 0; i < GetLinkPlayerCount(); i++)
- gBattleControllerExecFlags |= 1u << (battler + (i << 2));
+ MarkBattleControllerActiveForPlayer(battler, i);
- gBattleControllerExecFlags &= ~(1u << (28 + battler));
+ MarkBattleControllerMessageSynchronizedOverLink(battler);
}
const u8 *CheckSkyDropState(u32 battler, enum SkyDropState skyDropState)
@@ -1192,7 +1170,7 @@ void PrepareStringBattle(enum StringID stringId, u32 battler)
if ((stringId == STRINGID_ITDOESNTAFFECT || stringId == STRINGID_PKMNWASNTAFFECTED || stringId == STRINGID_PKMNUNAFFECTED))
TryInitializeTrainerSlideEnemyMonUnaffected(gBattlerTarget);
- BtlController_EmitPrintString(battler, BUFFER_A, stringId);
+ BtlController_EmitPrintString(battler, B_COMM_TO_CONTROLLER, stringId);
MarkBattlerForControllerExec(battler);
}
@@ -1420,7 +1398,7 @@ u32 TrySetCantSelectMoveBattleScript(u32 battler)
}
}
- if (DYNAMAX_BYPASS_CHECK && moveEffect == EFFECT_STUFF_CHEEKS && ItemId_GetPocket(gBattleMons[battler].item) != POCKET_BERRIES)
+ if (DYNAMAX_BYPASS_CHECK && moveEffect == EFFECT_STUFF_CHEEKS && GetItemPocket(gBattleMons[battler].item) != POCKET_BERRIES)
{
gCurrentMove = move;
if (gBattleTypeFlags & BATTLE_TYPE_PALACE)
@@ -1592,7 +1570,7 @@ u8 CheckMoveLimitations(u32 battler, u8 unusableMoves, u16 check)
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 && ItemId_GetPocket(gBattleMons[battler].item) != POCKET_BERRIES)
+ else if (check & MOVE_LIMITATION_STUFF_CHEEKS && moveEffect == EFFECT_STUFF_CHEEKS && GetItemPocket(gBattleMons[battler].item) != POCKET_BERRIES)
unusableMoves |= 1u << i;
// Gorilla Tactics
else if (check & MOVE_LIMITATION_CHOICE_ITEM && GetBattlerAbility(battler) == ABILITY_GORILLA_TACTICS && *choicedMove != MOVE_NONE && *choicedMove != MOVE_UNAVAILABLE && *choicedMove != move)
@@ -2586,7 +2564,7 @@ u32 AtkCanceller_MoveSuccessOrder(void)
if (effect == 2)
{
- BtlController_EmitSetMonData(gBattlerAttacker, BUFFER_A, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gBattlerAttacker].status1);
+ BtlController_EmitSetMonData(gBattlerAttacker, B_COMM_TO_CONTROLLER, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gBattlerAttacker].status1);
MarkBattlerForControllerExec(gBattlerAttacker);
}
@@ -3012,6 +2990,7 @@ bool32 CanAbilityBlockMove(u32 battlerAtk, u32 battlerDef, u32 abilityAtk, u32 a
{
// Prankster check
if (battleScriptBlocksMove == NULL
+ && IsBattleMoveStatus(move)
&& BlocksPrankster(move, battlerAtk, battlerDef, TRUE)
&& !(IsBattleMoveStatus(move) && (abilityDef == ABILITY_MAGIC_BOUNCE || gProtectStructs[battlerDef].bounceMove)))
{
@@ -3029,7 +3008,7 @@ bool32 CanAbilityBlockMove(u32 battlerAtk, u32 battlerDef, u32 abilityAtk, u32 a
&& !IsBattlerAlly(battlerAtk, partnerDef))
{
if (option == ABILITY_CHECK_TRIGGER_AI)
- abilityDef = AI_DATA->abilities[partnerDef];
+ abilityDef = gAiLogicData->abilities[partnerDef];
else
abilityDef = GetBattlerAbility(partnerDef);
@@ -3052,6 +3031,7 @@ bool32 CanAbilityBlockMove(u32 battlerAtk, u32 battlerDef, u32 abilityAtk, u32 a
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;
@@ -3593,10 +3573,11 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32
}
break;
case ABILITY_UNNERVE:
- if (!gSpecialStatuses[battler].switchInAbilityDone)
+ if (!gSpecialStatuses[battler].switchInAbilityDone && !gDisableStructs[battler].unnerveActivated)
{
gBattlerTarget = GetOppositeBattler(battler);
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_SWITCHIN_UNNERVE;
+ gDisableStructs[battler].unnerveActivated = TRUE;
gSpecialStatuses[battler].switchInAbilityDone = TRUE;
BattleScriptPushCursorAndCallback(BattleScript_SwitchInAbilityMsg);
effect++;
@@ -3604,10 +3585,11 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32
break;
case ABILITY_AS_ONE_ICE_RIDER:
case ABILITY_AS_ONE_SHADOW_RIDER:
- if (!gSpecialStatuses[battler].switchInAbilityDone)
+ if (!gSpecialStatuses[battler].switchInAbilityDone && !gDisableStructs[battler].unnerveActivated)
{
gBattlerTarget = GetOppositeBattler(battler);
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_SWITCHIN_ASONE;
+ gDisableStructs[battler].unnerveActivated = TRUE;
gSpecialStatuses[battler].switchInAbilityDone = TRUE;
BattleScriptPushCursorAndCallback(BattleScript_ActivateAsOne);
effect++;
@@ -4141,7 +4123,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32
if (gBattleMons[battler].status2 & STATUS2_CONFUSION
&& !(gStatuses4[battler] & STATUS4_INFINITE_CONFUSION))
gBattleMons[battler].status2 -= STATUS2_CONFUSION_TURN(1);
- BtlController_EmitSpriteInvisibility(battler, BUFFER_A, TRUE);
+ BtlController_EmitSpriteInvisibility(battler, B_COMM_TO_CONTROLLER, TRUE);
MarkBattlerForControllerExec(battler);
BattleScriptPushCursorAndCallback(BattleScript_CommanderActivates);
effect++;
@@ -4170,7 +4152,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32
if ((IsBattlerWeatherAffected(battler, B_WEATHER_SUN) || RandomPercentage(RNG_HARVEST, 50))
&& gBattleMons[battler].item == ITEM_NONE
&& gBattleStruct->changedItems[battler] == ITEM_NONE // Will not inherit an item
- && ItemId_GetPocket(GetUsedHeldItem(battler)) == POCKET_BERRIES)
+ && GetItemPocket(GetUsedHeldItem(battler)) == POCKET_BERRIES)
{
gLastUsedItem = GetUsedHeldItem(battler);
BattleScriptPushCursorAndCallback(BattleScript_HarvestActivates);
@@ -4178,7 +4160,8 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32
}
break;
case ABILITY_ICE_BODY:
- if (!IsBattlerAtMaxHp(battler)
+ if (IsBattlerWeatherAffected(battler, B_WEATHER_HAIL | B_WEATHER_SNOW)
+ && !IsBattlerAtMaxHp(battler)
&& !(gStatuses3[battler] & (STATUS3_UNDERGROUND | STATUS3_UNDERWATER))
&& !(gStatuses3[battler] & STATUS3_HEAL_BLOCK))
{
@@ -4238,7 +4221,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32
gBattleMons[battler].status2 &= ~STATUS2_NIGHTMARE;
gBattleScripting.battler = battler;
BattleScriptPushCursorAndCallback(BattleScript_ShedSkinActivates);
- BtlController_EmitSetMonData(battler, BUFFER_A, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[battler].status1);
+ BtlController_EmitSetMonData(battler, B_COMM_TO_CONTROLLER, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[battler].status1);
MarkBattlerForControllerExec(battler);
effect++;
}
@@ -4324,7 +4307,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;
@@ -4332,13 +4314,21 @@ 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
&& !gHasFetchedBall)
{
gBattleScripting.battler = battler;
- BtlController_EmitSetMonData(battler, BUFFER_A, REQUEST_HELDITEM_BATTLE, 0, 2, &gLastUsedBall);
+ BtlController_EmitSetMonData(battler, B_COMM_TO_CONTROLLER, REQUEST_HELDITEM_BATTLE, 0, 2, &gLastUsedBall);
MarkBattlerForControllerExec(battler);
gHasFetchedBall = TRUE;
gLastUsedItem = gLastUsedBall;
@@ -4364,7 +4354,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32
BattleScriptPushCursorAndCallback(BattleScript_CudChewActivates);
effect++;
}
- else if (!gDisableStructs[battler].cudChew && ItemId_GetPocket(GetUsedHeldItem(battler)) == POCKET_BERRIES)
+ else if (!gDisableStructs[battler].cudChew && GetItemPocket(GetUsedHeldItem(battler)) == POCKET_BERRIES)
{
gDisableStructs[battler].cudChew = TRUE;
}
@@ -5164,7 +5154,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32
}
gBattleScripting.battler = gBattlerAbility = battler;
- BtlController_EmitSetMonData(battler, BUFFER_A, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[battler].status1);
+ BtlController_EmitSetMonData(battler, B_COMM_TO_CONTROLLER, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[battler].status1);
MarkBattlerForControllerExec(battler);
return effect;
}
@@ -5873,7 +5863,7 @@ bool32 CanBeConfused(u32 battler)
// second argument is 1/X of current hp compared to max hp
bool32 HasEnoughHpToEatBerry(u32 battler, u32 hpFraction, u32 itemId)
{
- bool32 isBerry = (ItemId_GetPocket(itemId) == POCKET_BERRIES);
+ bool32 isBerry = (GetItemPocket(itemId) == POCKET_BERRIES);
if (!IsBattlerAlive(battler))
return FALSE;
@@ -5939,7 +5929,7 @@ static enum ItemEffect StatRaiseBerry(u32 battler, u32 itemId, u32 statId, enum
if (CompareStat(battler, statId, MAX_STAT_STAGE, CMP_LESS_THAN) && HasEnoughHpToEatBerry(battler, GetBattlerItemHoldEffectParam(battler, itemId), itemId))
{
BufferStatChange(battler, statId, STRINGID_STATROSE);
- gEffectBattler = battler;
+ gEffectBattler = gBattleScripting.battler = battler;
if (GetBattlerAbility(battler) == ABILITY_RIPEN)
SET_STATCHANGER(statId, 2, FALSE);
else
@@ -5950,12 +5940,12 @@ static enum ItemEffect StatRaiseBerry(u32 battler, u32 itemId, u32 statId, enum
if (caseID == ITEMEFFECT_ON_SWITCH_IN_FIRST_TURN || caseID == ITEMEFFECT_NORMAL)
{
- BattleScriptExecute(BattleScript_BerryStatRaiseEnd2);
+ BattleScriptExecute(BattleScript_ConsumableStatRaiseEnd2);
}
else
{
BattleScriptPushCursor();
- gBattlescriptCurrInstr = BattleScript_BerryStatRaiseRet;
+ gBattlescriptCurrInstr = BattleScript_ConsumableStatRaiseRet;
}
return ITEM_STATS_CHANGE;
}
@@ -5977,7 +5967,7 @@ static enum ItemEffect RandomStatRaiseBerry(u32 battler, u32 itemId, enum ItemCa
u16 battlerAbility = GetBattlerAbility(battler);
u32 savedAttacker = gBattlerAttacker;
// MoodyCantRaiseStat requires that the battler is set to gBattlerAttacker
- gBattlerAttacker = battler;
+ gBattlerAttacker = gBattleScripting.battler = battler;
stat = RandomUniformExcept(RNG_RANDOM_STAT_UP, STAT_ATK, NUM_STATS - 1, MoodyCantRaiseStat);
gBattlerAttacker = savedAttacker;
@@ -6001,12 +5991,12 @@ static enum ItemEffect RandomStatRaiseBerry(u32 battler, u32 itemId, enum ItemCa
gBattleScripting.animArg2 = 0;
if (caseID == ITEMEFFECT_ON_SWITCH_IN_FIRST_TURN || caseID == ITEMEFFECT_NORMAL)
{
- BattleScriptExecute(BattleScript_BerryStatRaiseEnd2);
+ BattleScriptExecute(BattleScript_ConsumableStatRaiseEnd2);
}
else
{
BattleScriptPushCursor();
- gBattlescriptCurrInstr = BattleScript_BerryStatRaiseRet;
+ gBattlescriptCurrInstr = BattleScript_ConsumableStatRaiseRet;
}
return ITEM_STATS_CHANGE;
@@ -6076,7 +6066,7 @@ static enum ItemEffect DamagedStatBoostBerryEffect(u32 battler, u8 statId, u8 ca
gBattleScripting.animArg1 = STAT_ANIM_PLUS1 + statId;
gBattleScripting.animArg2 = 0;
BattleScriptPushCursor();
- gBattlescriptCurrInstr = BattleScript_BerryStatRaiseRet;
+ gBattlescriptCurrInstr = BattleScript_ConsumableStatRaiseRet;
return ITEM_STATS_CHANGE;
}
return ITEM_NO_EFFECT;
@@ -6094,12 +6084,12 @@ enum ItemEffect TryHandleSeed(u32 battler, u32 terrainFlag, u32 statId, u32 item
gBattleScripting.animArg2 = 0;
if (caseID == ITEMEFFECT_ON_SWITCH_IN_FIRST_TURN)
{
- BattleScriptExecute(BattleScript_BerryStatRaiseEnd2);
+ BattleScriptExecute(BattleScript_ConsumableStatRaiseEnd2);
}
else
{
BattleScriptPushCursor();
- gBattlescriptCurrInstr = BattleScript_BerryStatRaiseRet;
+ gBattlescriptCurrInstr = BattleScript_ConsumableStatRaiseRet;
}
return ITEM_STATS_CHANGE;
}
@@ -6111,11 +6101,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);
@@ -6188,7 +6178,7 @@ static u32 ItemRestorePp(u32 battler, u32 itemId, enum ItemCaseId caseID)
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_BerryPPHealRet;
}
- BtlController_EmitSetMonData(battler, BUFFER_A, i + REQUEST_PPMOVE1_BATTLE, 0, 1, &changedPP);
+ BtlController_EmitSetMonData(battler, B_COMM_TO_CONTROLLER, i + REQUEST_PPMOVE1_BATTLE, 0, 1, &changedPP);
MarkBattlerForControllerExec(battler);
if (MOVE_IS_PERMANENT(battler, i))
gBattleMons[battler].pp[i] = changedPP;
@@ -6210,7 +6200,7 @@ static u32 ItemHealHp(u32 battler, u32 itemId, enum ItemCaseId caseID, bool32 pe
gBattleStruct->moveDamage[battler] = GetBattlerItemHoldEffectParam(battler, itemId) * -1;
// check ripen
- if (ItemId_GetPocket(itemId) == POCKET_BERRIES && GetBattlerAbility(battler) == ABILITY_RIPEN)
+ if (GetItemPocket(itemId) == POCKET_BERRIES && GetBattlerAbility(battler) == ABILITY_RIPEN)
gBattleStruct->moveDamage[battler] *= 2;
gBattlerAbility = battler; // in SWSH, berry juice shows ability pop up but has no effect. This is mimicked here
@@ -6234,7 +6224,7 @@ static bool32 UnnerveOn(u32 battler, u32 itemId)
if (gBattleScripting.overrideBerryRequirements > 0) // Berries that aren't eaten naturally ignore unnerve
return FALSE;
- if (ItemId_GetPocket(itemId) == POCKET_BERRIES && IsUnnerveAbilityOnOpposingSide(battler))
+ if (GetItemPocket(itemId) == POCKET_BERRIES && IsUnnerveAbilityOnOpposingSide(battler))
return TRUE;
return FALSE;
}
@@ -6813,7 +6803,7 @@ u32 ItemBattleEffects(enum ItemCaseId caseID, u32 battler, bool32 moveTurn)
case HOLD_EFFECT_ROOM_SERVICE:
if (TryRoomService(battler))
{
- BattleScriptExecute(BattleScript_BerryStatRaiseEnd2);
+ BattleScriptExecute(BattleScript_ConsumableStatRaiseEnd2);
effect = ITEM_STATS_CHANGE;
}
break;
@@ -6855,7 +6845,7 @@ u32 ItemBattleEffects(enum ItemCaseId caseID, u32 battler, bool32 moveTurn)
gBattlerAttacker = gPotentialItemEffectBattler = gBattleScripting.battler = battler;
if (effect == ITEM_STATUS_CHANGE)
{
- BtlController_EmitSetMonData(battler, BUFFER_A, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[battler].status1);
+ BtlController_EmitSetMonData(battler, B_COMM_TO_CONTROLLER, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[battler].status1);
MarkBattlerForControllerExec(battler);
}
}
@@ -7058,21 +7048,21 @@ u32 ItemBattleEffects(enum ItemCaseId caseID, u32 battler, bool32 moveTurn)
gBattlerAttacker = gPotentialItemEffectBattler = gBattleScripting.battler = battler;
if (effect == ITEM_STATUS_CHANGE)
{
- BtlController_EmitSetMonData(battler, BUFFER_A, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[battler].status1);
+ BtlController_EmitSetMonData(battler, B_COMM_TO_CONTROLLER, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[battler].status1);
MarkBattlerForControllerExec(battler);
}
}
}
break;
case ITEMEFFECT_USE_LAST_ITEM:
- effect = ItemEffectMoveEnd(battler, ItemId_GetHoldEffect(gLastUsedItem));
+ effect = ItemEffectMoveEnd(battler, GetItemHoldEffect(gLastUsedItem));
gBattleScripting.overrideBerryRequirements = 2; // to exit VARIOUS_CONSUME_BERRIES
if (effect)
{
gPotentialItemEffectBattler = gBattleScripting.battler = battler;
if (effect == ITEM_STATUS_CHANGE)
{
- BtlController_EmitSetMonData(battler, BUFFER_A, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[battler].status1);
+ BtlController_EmitSetMonData(battler, B_COMM_TO_CONTROLLER, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[battler].status1);
MarkBattlerForControllerExec(battler);
}
break;
@@ -7088,7 +7078,7 @@ u32 ItemBattleEffects(enum ItemCaseId caseID, u32 battler, bool32 moveTurn)
gPotentialItemEffectBattler = gBattleScripting.battler = battler;
if (effect == ITEM_STATUS_CHANGE)
{
- BtlController_EmitSetMonData(battler, BUFFER_A, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[battler].status1);
+ BtlController_EmitSetMonData(battler, B_COMM_TO_CONTROLLER, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[battler].status1);
MarkBattlerForControllerExec(battler);
}
break;
@@ -7142,6 +7132,7 @@ u32 ItemBattleEffects(enum ItemCaseId caseID, u32 battler, bool32 moveTurn)
{
case HOLD_EFFECT_SHELL_BELL:
if (gBattleScripting.savedDmg > 0
+ && !(gHitMarker & HITMARKER_UNABLE_TO_USE_MOVE)
&& !(gBattleStruct->moveResultFlags[gBattlerTarget] & MOVE_RESULT_NO_EFFECT)
&& gBattlerAttacker != gBattlerTarget
&& !IsBattlerAtMaxHp(gBattlerAttacker)
@@ -7163,6 +7154,7 @@ u32 ItemBattleEffects(enum ItemCaseId caseID, u32 battler, bool32 moveTurn)
break;
case HOLD_EFFECT_LIFE_ORB:
if (IsBattlerAlive(gBattlerAttacker)
+ && !(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
&& GetBattlerAbility(gBattlerAttacker) != ABILITY_MAGIC_GUARD
@@ -7407,7 +7399,7 @@ u32 ItemBattleEffects(enum ItemCaseId caseID, u32 battler, bool32 moveTurn)
if (effect == ITEM_STATUS_CHANGE)
{
- BtlController_EmitSetMonData(battler, BUFFER_A, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[battler].status1);
+ BtlController_EmitSetMonData(battler, B_COMM_TO_CONTROLLER, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[battler].status1);
MarkBattlerForControllerExec(battler);
}
}
@@ -7626,9 +7618,9 @@ u8 GetAttackerObedienceForAction()
}
// is not obedient
- if (gCurrentMove == MOVE_RAGE)
- gBattleMons[gBattlerAttacker].status2 &= ~STATUS2_RAGE;
enum BattleMoveEffects moveEffect = GetMoveEffect(gCurrentMove);
+ if (moveEffect == EFFECT_RAGE)
+ gBattleMons[gBattlerAttacker].status2 &= ~STATUS2_RAGE;
if (gBattleMons[gBattlerAttacker].status1 & STATUS1_SLEEP && (moveEffect == EFFECT_SNORE || moveEffect == EFFECT_SLEEP_TALK))
return DISOBEYS_WHILE_ASLEEP;
@@ -7694,7 +7686,7 @@ enum ItemHoldEffect GetBattlerHoldEffectInternal(u32 battler, bool32 checkNegati
if (gBattleMons[battler].item == ITEM_ENIGMA_BERRY_E_READER)
return gEnigmaBerries[battler].holdEffect;
else
- return ItemId_GetHoldEffect(gBattleMons[battler].item);
+ return GetItemHoldEffect(gBattleMons[battler].item);
}
static u32 GetBattlerItemHoldEffectParam(u32 battler, u32 item)
@@ -7702,7 +7694,7 @@ static u32 GetBattlerItemHoldEffectParam(u32 battler, u32 item)
if (item == ITEM_ENIGMA_BERRY_E_READER)
return gEnigmaBerries[battler].holdEffectParam;
else
- return ItemId_GetHoldEffectParam(item);
+ return GetItemHoldEffectParam(item);
}
u32 GetBattlerHoldEffectParam(u32 battler)
@@ -7710,7 +7702,7 @@ u32 GetBattlerHoldEffectParam(u32 battler)
if (gBattleMons[battler].item == ITEM_ENIGMA_BERRY_E_READER)
return gEnigmaBerries[battler].holdEffectParam;
else
- return ItemId_GetHoldEffectParam(gBattleMons[battler].item);
+ return GetItemHoldEffectParam(gBattleMons[battler].item);
}
bool32 IsMoveMakingContact(u32 move, u32 battlerAtk)
@@ -7850,7 +7842,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;
@@ -8150,9 +8142,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;
@@ -8337,7 +8327,6 @@ static inline u32 CalcMoveBasePower(struct DamageCalculationData *damageCalcData
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;
@@ -8429,7 +8418,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:
@@ -8612,36 +8601,9 @@ 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 == ItemId_GetSecondaryId(gBattleMons[battlerAtk].item))
+ if (moveType == GetItemSecondaryId(gBattleMons[battlerAtk].item))
modifier = uq4_12_multiply(modifier, holdEffectModifier);
break;
case HOLD_EFFECT_PUNCHING_GLOVE:
@@ -9524,7 +9486,7 @@ static inline s32 DoFixedDamageMoveCalc(struct DamageCalculationData *damageCalc
dmg = GetMoveFixedDamage(damageCalcData->move);
break;
case EFFECT_SUPER_FANG:
- dmg = GetNonDynamaxHP(gBattlerTarget) / 2;
+ dmg = GetNonDynamaxHP(damageCalcData->battlerDef) / 2;
break;
default:
return INT32_MAX;
@@ -10341,10 +10303,11 @@ bool32 DoBattlersShareType(u32 battler1, u32 battler2)
bool32 CanBattlerGetOrLoseItem(u32 battler, u16 itemId)
{
u16 species = gBattleMons[battler].species;
- enum ItemHoldEffect holdEffect = ItemId_GetHoldEffect(itemId);
+ enum ItemHoldEffect holdEffect = GetItemHoldEffect(itemId);
- // Mail can be stolen now
- if (itemId == ITEM_ENIGMA_BERRY_E_READER)
+ if (ItemIsMail(itemId))
+ return FALSE;
+ else if (itemId == ITEM_ENIGMA_BERRY_E_READER)
return FALSE;
else if (DoesSpeciesUseHoldItemToChangeForm(species, itemId))
return FALSE;
@@ -10607,7 +10570,7 @@ static u32 GetFlingPowerFromItemId(u32 itemId)
return 10; // Status moves and moves with variable power always return 10 power.
}
else
- return ItemId_GetFlingPower(itemId);
+ return GetItemFlingPower(itemId);
}
bool32 CanFling(u32 battler)
@@ -10678,11 +10641,11 @@ void TryRestoreHeldItems(void)
u16 lostItem = gBattleStruct->itemLost[B_SIDE_PLAYER][i].originalItem;
// Check if the lost item is a berry and the mon is not holding it
- if (ItemId_GetPocket(lostItem) == POCKET_BERRIES && GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM) != lostItem)
+ if (GetItemPocket(lostItem) == POCKET_BERRIES && GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM) != lostItem)
lostItem = ITEM_NONE;
// Check if the lost item should be restored
- if ((lostItem != ITEM_NONE || returnNPCItems) && ItemId_GetPocket(lostItem) != POCKET_BERRIES)
+ if ((lostItem != ITEM_NONE || returnNPCItems) && GetItemPocket(lostItem) != POCKET_BERRIES)
SetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM, &lostItem);
}
}
@@ -10720,7 +10683,7 @@ bool32 CanStealItem(u32 battlerStealing, u32 battlerItem, u16 item)
}
// It's supposed to pop before trying to steal but this also works
- if (ItemId_GetHoldEffect(item) == HOLD_EFFECT_AIR_BALLOON)
+ if (GetItemHoldEffect(item) == HOLD_EFFECT_AIR_BALLOON)
return FALSE;
if (!CanBattlerGetOrLoseItem(battlerItem, item) // Battler with item cannot have it stolen
@@ -10920,9 +10883,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))
- return MOVE_TARGET_USER;
enum BattleMoveEffects effect = GetMoveEffect(move);
+ if (effect == EFFECT_CURSE && !IS_BATTLER_OF_TYPE(battler, TYPE_GHOST))
+ return MOVE_TARGET_USER;
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)
@@ -11496,3 +11459,14 @@ void UpdateStallMons(void)
}
// 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 FALSE;
+}
diff --git a/src/battle_util2.c b/src/battle_util2.c
index 61684ff535..fd2312bb5b 100644
--- a/src/battle_util2.c
+++ b/src/battle_util2.c
@@ -19,6 +19,10 @@ void AllocateBattleResources(void)
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);
@@ -29,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);
@@ -57,15 +57,15 @@ void FreeBattleResources(void)
{
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);
@@ -208,7 +208,7 @@ u32 BattlePalace_TryEscapeStatus(u8 battler)
if (effect == 2)
{
- BtlController_EmitSetMonData(battler, BUFFER_A, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[battler].status1);
+ BtlController_EmitSetMonData(battler, B_COMM_TO_CONTROLLER, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[battler].status1);
MarkBattlerForControllerExec(battler);
}
diff --git a/src/battle_z_move.c b/src/battle_z_move.c
index 01f2069304..53df466af8 100644
--- a/src/battle_z_move.c
+++ b/src/battle_z_move.c
@@ -152,7 +152,7 @@ u32 GetUsableZMove(u32 battler, u32 move)
if (zMove != MOVE_NONE)
return zMove; // Signature z move exists
- if (move != MOVE_NONE && zMove != MOVE_Z_STATUS && GetMoveType(move) == ItemId_GetSecondaryId(item))
+ if (move != MOVE_NONE && zMove != MOVE_Z_STATUS && GetMoveType(move) == GetItemSecondaryId(item))
return GetTypeBasedZMove(move);
}
@@ -196,7 +196,7 @@ bool32 IsViableZMove(u32 battler, u32 move)
if (zMove != MOVE_NONE)
return TRUE;
- if (move != MOVE_NONE && GetMoveType(move) == ItemId_GetSecondaryId(item))
+ if (move != MOVE_NONE && GetMoveType(move) == GetItemSecondaryId(item))
return TRUE;
}
@@ -364,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 5833f74793..5475208126 100644
--- a/src/berry_blender.c
+++ b/src/berry_blender.c
@@ -1203,7 +1203,7 @@ static void CreateBerrySprite(u32 itemId, u32 playerId)
berryId);
}
-static void ConvertItemToBlenderBerry(struct BlenderBerry* berry, u16 itemId)
+static void ConvertItemToBlenderBerry(struct BlenderBerry *berry, u16 itemId)
{
const struct Berry *berryInfo = GetBerryInfo(ITEM_TO_BERRY(itemId));
@@ -1535,7 +1535,7 @@ static u8 GetArrowProximity(u16 arrowPos, u8 playerId)
return PROXIMITY_MISS;
}
-static void SetOpponentsBerryData(u16 playerBerryItemId, u8 playersNum, struct BlenderBerry* playerBerry)
+static void SetOpponentsBerryData(u16 playerBerryItemId, u8 playersNum, struct BlenderBerry *playerBerry)
{
u16 opponentSetId = 0;
u16 opponentBerryId;
@@ -2240,7 +2240,7 @@ static void Blender_DummiedOutFunc(s16 bgX, s16 bgY)
}
-static bool8 AreBlenderBerriesSame(struct BlenderBerry* berries, u8 a, u8 b)
+static bool8 AreBlenderBerriesSame(struct BlenderBerry *berries, u8 a, u8 b)
{
// First check to itemId is pointless (and wrong anyway?), always false when this is called
// Only used to determine if two enigma berries are equivalent
@@ -2257,7 +2257,7 @@ static bool8 AreBlenderBerriesSame(struct BlenderBerry* berries, u8 a, u8 b)
return FALSE;
}
-static u32 CalculatePokeblockColor(struct BlenderBerry* berries, s16 *_flavors, u8 numPlayers, u8 negativeFlavors)
+static u32 CalculatePokeblockColor(struct BlenderBerry *berries, s16 *_flavors, u8 numPlayers, u8 negativeFlavors)
{
s16 flavors[FLAVOR_COUNT + 1];
s32 i, j;
@@ -2481,7 +2481,7 @@ static void CalculatePokeblock(struct BlenderBerry *berries, struct Pokeblock *p
flavors[i] = sPokeblockFlavors[i];
}
-static void UNUSED Debug_CalculatePokeblock(struct BlenderBerry* berries, struct Pokeblock* pokeblock, u8 numPlayers, u8 *flavors, u16 maxRPM)
+static void UNUSED Debug_CalculatePokeblock(struct BlenderBerry *berries, struct Pokeblock *pokeblock, u8 numPlayers, u8 *flavors, u16 maxRPM)
{
CalculatePokeblock(berries, pokeblock, numPlayers, flavors, maxRPM);
}
diff --git a/src/berry_crush.c b/src/berry_crush.c
index 8010639840..3a2274f189 100644
--- a/src/berry_crush.c
+++ b/src/berry_crush.c
@@ -914,7 +914,7 @@ static const u8 *const sResultsTexts[] =
[RESULTS_PAGE_POWER + NUM_RESULTS_PAGES] = gText_PressingPowerRankings,
};
-static u32 (*const sBerryCrushCommands[])(struct BerryCrushGame * game, u8 *data) =
+static u32 (*const sBerryCrushCommands[])(struct BerryCrushGame *game, u8 *data) =
{
[CMD_NONE] = NULL,
[CMD_FADE] = Cmd_BeginNormalPaletteFade,
@@ -1590,14 +1590,14 @@ static void PrintTextCentered(u8 windowId, u8 left, u8 colorId, const u8 *string
AddTextPrinterParameterized3(windowId, FONT_SHORT, left, 0, sTextColorTable[colorId], 0, string);
}
-static void PrintResultsText(struct BerryCrushGame * game, u8 page, u8 sp14, u8 baseY)
+static void PrintResultsText(struct BerryCrushGame *game, u8 page, u8 sp14, u8 baseY)
{
u8 i, j;
u8 playerId = 0;
u8 ranking = 0;
s32 x;
u8 stat;
- struct BerryCrushGame_Results * results = &game->results;
+ struct BerryCrushGame_Results *results = &game->results;
u32 xOffset;
s32 y;
diff --git a/src/berry_fix_program.c b/src/berry_fix_program.c
index 5900cb298a..98938c78b5 100644
--- a/src/berry_fix_program.c
+++ b/src/berry_fix_program.c
@@ -26,7 +26,7 @@ struct {
u8 curScene;
u16 timer;
struct MultiBootParam mb;
-} static * sBerryFix;
+} static *sBerryFix;
static void BerryFix_Main(void);
static void BerryFix_GpuSet(void);
diff --git a/src/bg.c b/src/bg.c
index 73b5be14e8..ab7b48c58d 100644
--- a/src/bg.c
+++ b/src/bg.c
@@ -920,7 +920,7 @@ void CopyToBgTilemapBufferRect(u32 bg, const void *src, u8 destX, u8 destY, u8 w
{
case BG_TYPE_NORMAL:
{
- const u16 * srcCopy = src;
+ const u16 *srcCopy = src;
for (destY16 = destY; destY16 < (destY + height); destY16++)
{
for (destX16 = destX; destX16 < (destX + width); destX16++)
diff --git a/src/braille_puzzles.c b/src/braille_puzzles.c
index 757cac43b8..31497e137c 100644
--- a/src/braille_puzzles.c
+++ b/src/braille_puzzles.c
@@ -62,8 +62,8 @@ static void DoBrailleRegisteelEffect(void);
bool8 ShouldDoBrailleDigEffect(void)
{
if (!FlagGet(FLAG_SYS_BRAILLE_DIG)
- && (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(SEALED_CHAMBER_OUTER_ROOM)
- && gSaveBlock1Ptr->location.mapNum == MAP_NUM(SEALED_CHAMBER_OUTER_ROOM)))
+ && (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(MAP_SEALED_CHAMBER_OUTER_ROOM)
+ && gSaveBlock1Ptr->location.mapNum == MAP_NUM(MAP_SEALED_CHAMBER_OUTER_ROOM)))
{
if (gSaveBlock1Ptr->pos.x == 10 && gSaveBlock1Ptr->pos.y == 3)
return TRUE;
@@ -167,8 +167,8 @@ static void Task_SealedChamberShakingEffect(u8 taskId)
bool8 ShouldDoBrailleRegirockEffect(void)
{
if (!FlagGet(FLAG_SYS_REGIROCK_PUZZLE_COMPLETED)
- && gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(DESERT_RUINS)
- && gSaveBlock1Ptr->location.mapNum == MAP_NUM(DESERT_RUINS))
+ && gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(MAP_DESERT_RUINS)
+ && gSaveBlock1Ptr->location.mapNum == MAP_NUM(MAP_DESERT_RUINS))
{
if (gSaveBlock1Ptr->pos.x == 6 && gSaveBlock1Ptr->pos.y == 23)
{
@@ -219,7 +219,7 @@ static void DoBrailleRegirockEffect(void)
bool8 ShouldDoBrailleRegisteelEffect(void)
{
- if (!FlagGet(FLAG_SYS_REGISTEEL_PUZZLE_COMPLETED) && (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(ANCIENT_TOMB) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(ANCIENT_TOMB)))
+ if (!FlagGet(FLAG_SYS_REGISTEEL_PUZZLE_COMPLETED) && (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(MAP_ANCIENT_TOMB) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(MAP_ANCIENT_TOMB)))
{
if (gSaveBlock1Ptr->pos.x == 8 && gSaveBlock1Ptr->pos.y == 25)
{
@@ -286,8 +286,8 @@ bool8 ShouldDoBrailleRegicePuzzle(void)
{
u8 i;
- if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(ISLAND_CAVE)
- && gSaveBlock1Ptr->location.mapNum == MAP_NUM(ISLAND_CAVE))
+ if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(MAP_ISLAND_CAVE)
+ && gSaveBlock1Ptr->location.mapNum == MAP_NUM(MAP_ISLAND_CAVE))
{
if (FlagGet(FLAG_SYS_BRAILLE_REGICE_COMPLETED))
return FALSE;
diff --git a/src/contest.c b/src/contest.c
index f18c6e5ec0..da11859dee 100644
--- a/src/contest.c
+++ b/src/contest.c
@@ -420,7 +420,7 @@ static const union AffineAnimCmd sAffineAnim_SliderHeart_SpinAppear[] =
AFFINEANIMCMD_END
};
-static const union AffineAnimCmd* const sAffineAnims_SliderHeart[] =
+static const union AffineAnimCmd *const sAffineAnims_SliderHeart[] =
{
[SLIDER_HEART_ANIM_NORMAL] = sAffineAnim_SliderHeart_Normal,
[SLIDER_HEART_ANIM_DISAPPEAR] = sAffineAnim_SliderHeart_SpinDisappear,
@@ -1449,13 +1449,13 @@ static bool8 SetupContestGraphics(u8 *stateVar)
CreateApplauseMeterSprite();
CreateJudgeAttentionEyeTask();
CreateUnusedBlendTask();
- gBattlerPositions[0] = B_POSITION_PLAYER_LEFT;
- gBattlerPositions[1] = B_POSITION_OPPONENT_LEFT;
- gBattlerPositions[2] = B_POSITION_OPPONENT_RIGHT;
- gBattlerPositions[3] = B_POSITION_PLAYER_RIGHT;
+ gBattlerPositions[B_BATTLER_0] = B_POSITION_PLAYER_LEFT;
+ gBattlerPositions[B_BATTLER_1] = B_POSITION_OPPONENT_LEFT;
+ gBattlerPositions[B_BATTLER_2] = B_POSITION_OPPONENT_RIGHT;
+ gBattlerPositions[B_BATTLER_3] = B_POSITION_PLAYER_RIGHT;
gBattleTypeFlags = 0;
- gBattlerAttacker = B_POSITION_PLAYER_RIGHT;
- gBattlerTarget = B_POSITION_OPPONENT_RIGHT;
+ gBattlerAttacker = B_BATTLER_2;
+ gBattlerTarget = B_BATTLER_3;
// Unclear why judge sprite is assigned here
// Overwritten in APPEALSTATE_SLIDE_MON_IN with the attacking contest mon
gBattlerSpriteIds[gBattlerAttacker] = CreateJudgeSprite();
diff --git a/src/contest_ai.c b/src/contest_ai.c
index 4386aeee64..77f27fcc91 100644
--- a/src/contest_ai.c
+++ b/src/contest_ai.c
@@ -326,8 +326,8 @@ u8 ContestAI_GetActionToUse(void)
{
// Randomly choose a move index. If it's the move
// with the highest (or tied highest) score, return
- u8 moveIdx = MOD(Random(), MAX_MON_MOVES);
- u8 score = eContestAI.moveScores[moveIdx];
+ u8 moveIndex = MOD(Random(), MAX_MON_MOVES);
+ u8 score = eContestAI.moveScores[moveIndex];
int i;
for (i = 0; i < MAX_MON_MOVES; i++)
{
@@ -335,7 +335,7 @@ u8 ContestAI_GetActionToUse(void)
break;
}
if (i == MAX_MON_MOVES)
- return moveIdx;
+ return moveIndex;
}
}
diff --git a/src/contest_util.c b/src/contest_util.c
index d1395713ba..66d0b575fe 100644
--- a/src/contest_util.c
+++ b/src/contest_util.c
@@ -2293,13 +2293,13 @@ void GetNpcContestantLocalId(void)
switch (contestant)
{
case 0:
- localId = 3;
+ localId = LOCALID_CONTESTANT_1;
break;
case 1:
- localId = 4;
+ localId = LOCALID_CONTESTANT_2;
break;
case 2:
- localId = 5;
+ localId = LOCALID_CONTESTANT_3;
break;
default: // Invalid
localId = 100;
@@ -2499,7 +2499,12 @@ void LoadLinkContestPlayerPalettes(void)
u8 objectEventId;
int version;
struct Sprite *sprite;
- static const u8 sContestantLocalIds[CONTESTANT_COUNT] = { 3, 4, 5, 14 };
+ static const u8 sContestantLocalIds[CONTESTANT_COUNT] = {
+ LOCALID_CONTESTANT_1,
+ LOCALID_CONTESTANT_2,
+ LOCALID_CONTESTANT_3,
+ LOCALID_CONTESTANT_4,
+ };
// gReservedSpritePaletteCount = 12;
// TODO: Does dynamically allocating link player palettes break link contests?
diff --git a/src/data/.gitignore b/src/data/.gitignore
index 1a13fa3eeb..791e2f25f1 100755
--- a/src/data/.gitignore
+++ b/src/data/.gitignore
@@ -1,3 +1,4 @@
+heal_locations.h
wild_encounters.h
region_map/region_map_entries.h
region_map/porymap_config.json
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_frontier/apprentice.h b/src/data/battle_frontier/apprentice.h
index f517b26c4c..54771bda44 100644
--- a/src/data/battle_frontier/apprentice.h
+++ b/src/data/battle_frontier/apprentice.h
@@ -587,7 +587,7 @@ static const u8 sQuestionPossibilities[MAX_APPRENTICE_QUESTIONS] =
QUESTION_ID_WIN_SPEECH
};
-static void (* const sApprenticeFunctions[])(void) =
+static void (*const sApprenticeFunctions[])(void) =
{
[APPRENTICE_FUNC_GAVE_LVLMODE] = Script_GivenApprenticeLvlMode,
[APPRENTICE_FUNC_SET_LVLMODE] = Script_SetApprenticeLvlMode,
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 89294e7dc5..fdcfa9c229 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_EffectNonVolatileStatus,
- .battleTvScore = 1,
+ .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_EffectNonVolatileStatus,
- .battleTvScore = 5,
- .encourageEncore = TRUE,
- },
-
[EFFECT_LIGHT_SCREEN] =
{
.battleScript = BattleScript_EffectLightScreen,
@@ -366,20 +359,6 @@ const struct BattleMoveEffect gBattleMoveEffects[NUM_BATTLE_MOVE_EFFECTS] =
.encourageEncore = TRUE,
},
- [EFFECT_POISON] =
- {
- .battleScript = BattleScript_EffectNonVolatileStatus,
- .battleTvScore = 4,
- .encourageEncore = TRUE,
- },
-
- [EFFECT_PARALYZE] =
- {
- .battleScript = BattleScript_EffectNonVolatileStatus,
- .battleTvScore = 4,
- .encourageEncore = TRUE,
- },
-
[EFFECT_TWO_TURNS_ATTACK] =
{
.battleScript = BattleScript_EffectTwoTurnsAttack,
@@ -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_EffectNonVolatileStatus,
- .battleTvScore = 5,
- .encourageEncore = TRUE,
- },
-
[EFFECT_MEMENTO] =
{
.battleScript = BattleScript_EffectMemento,
@@ -1876,9 +1842,9 @@ const struct BattleMoveEffect gBattleMoveEffects[NUM_BATTLE_MOVE_EFFECTS] =
.battleTvScore = 0, // TODO: Assign points
},
- [EFFECT_RECOIL_HP_25] =
+ [EFFECT_STRUGGLE] =
{
- .battleScript = BattleScript_EffectRecoilHP25,
+ .battleScript = BattleScript_EffectStruggle,
.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,
@@ -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] =
@@ -2257,4 +2211,10 @@ const struct BattleMoveEffect gBattleMoveEffects[NUM_BATTLE_MOVE_EFFECTS] =
.battleScript = BattleScript_EffectHit,
.battleTvScore = 0, // TODO: Assign points
},
+
+ [EFFECT_SMACK_DOWN] =
+ {
+ .battleScript = BattleScript_EffectHit,
+ .battleTvScore = 0, // TODO: Assign points
+ },
};
diff --git a/src/data/graphics/pokemon.h b/src/data/graphics/pokemon.h
index 91163906b9..c04b914736 100644
--- a/src/data/graphics/pokemon.h
+++ b/src/data/graphics/pokemon.h
@@ -25932,7 +25932,7 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_
#endif //P_FAMILY_DONDOZO
#if P_FAMILY_GREAT_TUSK
- const u32 gMonFrontPic_GreatTusk[] = INCBIN_U32("graphics/pokemon/great_tusk/anim_front.4bpp.lz");
+ const u32 gMonFrontPic_GreatTusk[] = INCBIN_U32("graphics/pokemon/great_tusk/front.4bpp.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 u16 gMonShinyPalette_GreatTusk[] = INCBIN_U16("graphics/pokemon/great_tusk/shiny.gbapal");
@@ -26148,7 +26148,7 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_
#endif //P_FAMILY_IRON_THORNS
#if P_FAMILY_FRIGIBAX
- const u32 gMonFrontPic_Frigibax[] = INCBIN_U32("graphics/pokemon/frigibax/anim_front.4bpp.lz");
+ const u32 gMonFrontPic_Frigibax[] = INCBIN_U32("graphics/pokemon/frigibax/front.4bpp.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 u16 gMonShinyPalette_Frigibax[] = INCBIN_U16("graphics/pokemon/frigibax/shiny.gbapal");
@@ -26665,7 +26665,7 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_
#endif //P_FAMILY_IRON_CROWN
#if P_FAMILY_TERAPAGOS
- const u32 gMonFrontPic_TerapagosNormal[] = INCBIN_U32("graphics/pokemon/terapagos/anim_front.4bpp.lz");
+ const u32 gMonFrontPic_TerapagosNormal[] = INCBIN_U32("graphics/pokemon/terapagos/front.4bpp.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 u16 gMonShinyPalette_TerapagosNormal[] = INCBIN_U16("graphics/pokemon/terapagos/shiny.gbapal");
@@ -26681,7 +26681,7 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_
#endif //OW_PKMN_OBJECTS_SHARE_PALETTES
#endif //OW_POKEMON_OBJECT_EVENTS
- const u32 gMonFrontPic_TerapagosTerastal[] = INCBIN_U32("graphics/pokemon/terapagos/terastal/anim_front.4bpp.lz");
+ const u32 gMonFrontPic_TerapagosTerastal[] = INCBIN_U32("graphics/pokemon/terapagos/terastal/front.4bpp.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 u16 gMonShinyPalette_TerapagosTerastal[] = INCBIN_U16("graphics/pokemon/terapagos/terastal/shiny.gbapal");
diff --git a/src/data/heal_locations.constants.json.txt b/src/data/heal_locations.constants.json.txt
new file mode 100644
index 0000000000..e9ca860b35
--- /dev/null
+++ b/src/data/heal_locations.constants.json.txt
@@ -0,0 +1,14 @@
+#ifndef GUARD_CONSTANTS_HEAL_LOCATIONS_H
+#define GUARD_CONSTANTS_HEAL_LOCATIONS_H
+
+{{ doNotModifyHeader }}
+
+enum {
+ HEAL_LOCATION_NONE,
+## for heal_location in heal_locations
+ {{ heal_location.id }},
+## endfor
+ NUM_HEAL_LOCATIONS
+};
+
+#endif // GUARD_CONSTANTS_HEAL_LOCATIONS_H
diff --git a/src/data/heal_locations.h b/src/data/heal_locations.h
deleted file mode 100644
index 04530a1dbf..0000000000
--- a/src/data/heal_locations.h
+++ /dev/null
@@ -1,25 +0,0 @@
-static const struct HealLocation sHealLocations[] =
-{
- [HEAL_LOCATION_LITTLEROOT_TOWN_BRENDANS_HOUSE_2F - 1] = {MAP_GROUP(LITTLEROOT_TOWN_BRENDANS_HOUSE_2F), MAP_NUM(LITTLEROOT_TOWN_BRENDANS_HOUSE_2F), 4, 2},
- [HEAL_LOCATION_LITTLEROOT_TOWN_MAYS_HOUSE_2F - 1] = {MAP_GROUP(LITTLEROOT_TOWN_MAYS_HOUSE_2F), MAP_NUM(LITTLEROOT_TOWN_MAYS_HOUSE_2F), 4, 2},
- [HEAL_LOCATION_PETALBURG_CITY - 1] = {MAP_GROUP(PETALBURG_CITY), MAP_NUM(PETALBURG_CITY), 20, 17},
- [HEAL_LOCATION_SLATEPORT_CITY - 1] = {MAP_GROUP(SLATEPORT_CITY), MAP_NUM(SLATEPORT_CITY), 19, 20},
- [HEAL_LOCATION_MAUVILLE_CITY - 1] = {MAP_GROUP(MAUVILLE_CITY), MAP_NUM(MAUVILLE_CITY), 22, 6},
- [HEAL_LOCATION_RUSTBORO_CITY - 1] = {MAP_GROUP(RUSTBORO_CITY), MAP_NUM(RUSTBORO_CITY), 16, 39},
- [HEAL_LOCATION_FORTREE_CITY - 1] = {MAP_GROUP(FORTREE_CITY), MAP_NUM(FORTREE_CITY), 5, 7},
- [HEAL_LOCATION_LILYCOVE_CITY - 1] = {MAP_GROUP(LILYCOVE_CITY), MAP_NUM(LILYCOVE_CITY), 24, 15},
- [HEAL_LOCATION_MOSSDEEP_CITY - 1] = {MAP_GROUP(MOSSDEEP_CITY), MAP_NUM(MOSSDEEP_CITY), 28, 17},
- [HEAL_LOCATION_SOOTOPOLIS_CITY - 1] = {MAP_GROUP(SOOTOPOLIS_CITY), MAP_NUM(SOOTOPOLIS_CITY), 43, 32},
- [HEAL_LOCATION_EVER_GRANDE_CITY - 1] = {MAP_GROUP(EVER_GRANDE_CITY), MAP_NUM(EVER_GRANDE_CITY), 27, 49},
- [HEAL_LOCATION_LITTLEROOT_TOWN_BRENDANS_HOUSE - 1] = {MAP_GROUP(LITTLEROOT_TOWN), MAP_NUM(LITTLEROOT_TOWN), 5, 9},
- [HEAL_LOCATION_LITTLEROOT_TOWN_MAYS_HOUSE - 1] = {MAP_GROUP(LITTLEROOT_TOWN), MAP_NUM(LITTLEROOT_TOWN), 14, 9},
- [HEAL_LOCATION_OLDALE_TOWN - 1] = {MAP_GROUP(OLDALE_TOWN), MAP_NUM(OLDALE_TOWN), 6, 17},
- [HEAL_LOCATION_DEWFORD_TOWN - 1] = {MAP_GROUP(DEWFORD_TOWN), MAP_NUM(DEWFORD_TOWN), 2, 11},
- [HEAL_LOCATION_LAVARIDGE_TOWN - 1] = {MAP_GROUP(LAVARIDGE_TOWN), MAP_NUM(LAVARIDGE_TOWN), 9, 7},
- [HEAL_LOCATION_FALLARBOR_TOWN - 1] = {MAP_GROUP(FALLARBOR_TOWN), MAP_NUM(FALLARBOR_TOWN), 14, 8},
- [HEAL_LOCATION_VERDANTURF_TOWN - 1] = {MAP_GROUP(VERDANTURF_TOWN), MAP_NUM(VERDANTURF_TOWN), 16, 4},
- [HEAL_LOCATION_PACIFIDLOG_TOWN - 1] = {MAP_GROUP(PACIFIDLOG_TOWN), MAP_NUM(PACIFIDLOG_TOWN), 8, 16},
- [HEAL_LOCATION_EVER_GRANDE_CITY_POKEMON_LEAGUE - 1] = {MAP_GROUP(EVER_GRANDE_CITY), MAP_NUM(EVER_GRANDE_CITY), 18, 6},
- [HEAL_LOCATION_SOUTHERN_ISLAND_EXTERIOR - 1] = {MAP_GROUP(SOUTHERN_ISLAND_EXTERIOR), MAP_NUM(SOUTHERN_ISLAND_EXTERIOR), 15, 20},
- [HEAL_LOCATION_BATTLE_FRONTIER_OUTSIDE_EAST - 1] = {MAP_GROUP(BATTLE_FRONTIER_OUTSIDE_EAST), MAP_NUM(BATTLE_FRONTIER_OUTSIDE_EAST), 3, 52},
-};
diff --git a/src/data/heal_locations.json b/src/data/heal_locations.json
new file mode 100644
index 0000000000..c465ff65c3
--- /dev/null
+++ b/src/data/heal_locations.json
@@ -0,0 +1,136 @@
+{
+ "heal_locations": [
+ {
+ "id": "HEAL_LOCATION_LITTLEROOT_TOWN_BRENDANS_HOUSE_2F",
+ "map": "MAP_LITTLEROOT_TOWN_BRENDANS_HOUSE_2F",
+ "x": 4,
+ "y": 2
+ },
+ {
+ "id": "HEAL_LOCATION_LITTLEROOT_TOWN_MAYS_HOUSE_2F",
+ "map": "MAP_LITTLEROOT_TOWN_MAYS_HOUSE_2F",
+ "x": 4,
+ "y": 2
+ },
+ {
+ "id": "HEAL_LOCATION_PETALBURG_CITY",
+ "map": "MAP_PETALBURG_CITY",
+ "x": 20,
+ "y": 17
+ },
+ {
+ "id": "HEAL_LOCATION_SLATEPORT_CITY",
+ "map": "MAP_SLATEPORT_CITY",
+ "x": 19,
+ "y": 20
+ },
+ {
+ "id": "HEAL_LOCATION_MAUVILLE_CITY",
+ "map": "MAP_MAUVILLE_CITY",
+ "x": 22,
+ "y": 6
+ },
+ {
+ "id": "HEAL_LOCATION_RUSTBORO_CITY",
+ "map": "MAP_RUSTBORO_CITY",
+ "x": 16,
+ "y": 39
+ },
+ {
+ "id": "HEAL_LOCATION_FORTREE_CITY",
+ "map": "MAP_FORTREE_CITY",
+ "x": 5,
+ "y": 7
+ },
+ {
+ "id": "HEAL_LOCATION_LILYCOVE_CITY",
+ "map": "MAP_LILYCOVE_CITY",
+ "x": 24,
+ "y": 15
+ },
+ {
+ "id": "HEAL_LOCATION_MOSSDEEP_CITY",
+ "map": "MAP_MOSSDEEP_CITY",
+ "x": 28,
+ "y": 17
+ },
+ {
+ "id": "HEAL_LOCATION_SOOTOPOLIS_CITY",
+ "map": "MAP_SOOTOPOLIS_CITY",
+ "x": 43,
+ "y": 32
+ },
+ {
+ "id": "HEAL_LOCATION_EVER_GRANDE_CITY",
+ "map": "MAP_EVER_GRANDE_CITY",
+ "x": 27,
+ "y": 49
+ },
+ {
+ "id": "HEAL_LOCATION_LITTLEROOT_TOWN_BRENDANS_HOUSE",
+ "map": "MAP_LITTLEROOT_TOWN",
+ "x": 5,
+ "y": 9
+ },
+ {
+ "id": "HEAL_LOCATION_LITTLEROOT_TOWN_MAYS_HOUSE",
+ "map": "MAP_LITTLEROOT_TOWN",
+ "x": 14,
+ "y": 9
+ },
+ {
+ "id": "HEAL_LOCATION_OLDALE_TOWN",
+ "map": "MAP_OLDALE_TOWN",
+ "x": 6,
+ "y": 17
+ },
+ {
+ "id": "HEAL_LOCATION_DEWFORD_TOWN",
+ "map": "MAP_DEWFORD_TOWN",
+ "x": 2,
+ "y": 11
+ },
+ {
+ "id": "HEAL_LOCATION_LAVARIDGE_TOWN",
+ "map": "MAP_LAVARIDGE_TOWN",
+ "x": 9,
+ "y": 7
+ },
+ {
+ "id": "HEAL_LOCATION_FALLARBOR_TOWN",
+ "map": "MAP_FALLARBOR_TOWN",
+ "x": 14,
+ "y": 8
+ },
+ {
+ "id": "HEAL_LOCATION_VERDANTURF_TOWN",
+ "map": "MAP_VERDANTURF_TOWN",
+ "x": 16,
+ "y": 4
+ },
+ {
+ "id": "HEAL_LOCATION_PACIFIDLOG_TOWN",
+ "map": "MAP_PACIFIDLOG_TOWN",
+ "x": 8,
+ "y": 16
+ },
+ {
+ "id": "HEAL_LOCATION_EVER_GRANDE_CITY_POKEMON_LEAGUE",
+ "map": "MAP_EVER_GRANDE_CITY",
+ "x": 18,
+ "y": 6
+ },
+ {
+ "id": "HEAL_LOCATION_SOUTHERN_ISLAND_EXTERIOR",
+ "map": "MAP_SOUTHERN_ISLAND_EXTERIOR",
+ "x": 15,
+ "y": 20
+ },
+ {
+ "id": "HEAL_LOCATION_BATTLE_FRONTIER_OUTSIDE_EAST",
+ "map": "MAP_BATTLE_FRONTIER_OUTSIDE_EAST",
+ "x": 3,
+ "y": 52
+ }
+ ]
+}
diff --git a/src/data/heal_locations.json.txt b/src/data/heal_locations.json.txt
new file mode 100644
index 0000000000..fd63228e33
--- /dev/null
+++ b/src/data/heal_locations.json.txt
@@ -0,0 +1,28 @@
+{{ doNotModifyHeader }}
+
+static const struct HealLocation sHealLocations[NUM_HEAL_LOCATIONS - 1] = {
+## for heal_location in heal_locations
+ [{{ heal_location.id }} - 1] = {
+ .mapGroup = MAP_GROUP({{ heal_location.map }}),
+ .mapNum = MAP_NUM({{ heal_location.map }}),
+ .x = {{ heal_location.x }},
+ .y = {{ heal_location.y }},
+ },
+## endfor
+};
+
+static const u16 sWhiteoutRespawnHealCenterMapIdxs[][2] = {
+## for heal_location in heal_locations
+{% if existsIn(heal_location, "respawn_map") %}
+ [{{ heal_location.id }} - 1] = { MAP_GROUP({{ heal_location.respawn_map }}), MAP_NUM({{ heal_location.respawn_map }})},
+{% endif %}
+## endfor
+};
+
+static const u8 sWhiteoutRespawnHealerNpcIds[] = {
+## for heal_location in heal_locations
+{% if existsIn(heal_location, "respawn_npc") %}
+ [{{ heal_location.id }} - 1] = {{ heal_location.respawn_npc }},
+{% endif %}
+## endfor
+};
diff --git a/src/data/heal_locations_pkm_center.h b/src/data/heal_locations_pkm_center.h
index 278f5d68b0..388f77d5ec 100644
--- a/src/data/heal_locations_pkm_center.h
+++ b/src/data/heal_locations_pkm_center.h
@@ -1,143 +1,143 @@
#define DEFAULT_POKEMON_CENTER_COORDS .x = 7, .y = 4
-static const struct HealLocation sHealLocationsPokemonCenter[HEAL_LOCATION_COUNT - 1] =
+static const struct HealLocation sHealLocationsPokemonCenter[NUM_HEAL_LOCATIONS - 1] =
{
[HEAL_LOCATION_LITTLEROOT_TOWN_BRENDANS_HOUSE_2F - 1] =
{
- .group = MAP_GROUP(LITTLEROOT_TOWN_BRENDANS_HOUSE_1F),
- .map = MAP_NUM(LITTLEROOT_TOWN_BRENDANS_HOUSE_1F),
+ .mapGroup = MAP_GROUP(MAP_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F),
+ .mapNum = MAP_NUM(MAP_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F),
.x = 2,
.y = 7,
},
[HEAL_LOCATION_LITTLEROOT_TOWN_MAYS_HOUSE_2F - 1] =
{
- .group = MAP_GROUP(LITTLEROOT_TOWN_MAYS_HOUSE_1F),
- .map = MAP_NUM(LITTLEROOT_TOWN_MAYS_HOUSE_1F),
+ .mapGroup = MAP_GROUP(MAP_LITTLEROOT_TOWN_MAYS_HOUSE_1F),
+ .mapNum = MAP_NUM(MAP_LITTLEROOT_TOWN_MAYS_HOUSE_1F),
.x = 8,
.y = 7,
},
[HEAL_LOCATION_PETALBURG_CITY - 1] =
{
- .group = MAP_GROUP(PETALBURG_CITY_POKEMON_CENTER_1F),
- .map = MAP_NUM(PETALBURG_CITY_POKEMON_CENTER_1F),
+ .mapGroup = MAP_GROUP(MAP_PETALBURG_CITY_POKEMON_CENTER_1F),
+ .mapNum = MAP_NUM(MAP_PETALBURG_CITY_POKEMON_CENTER_1F),
DEFAULT_POKEMON_CENTER_COORDS,
},
[HEAL_LOCATION_SLATEPORT_CITY - 1] =
{
- .group = MAP_GROUP(SLATEPORT_CITY_POKEMON_CENTER_1F),
- .map = MAP_NUM(SLATEPORT_CITY_POKEMON_CENTER_1F),
+ .mapGroup = MAP_GROUP(MAP_SLATEPORT_CITY_POKEMON_CENTER_1F),
+ .mapNum = MAP_NUM(MAP_SLATEPORT_CITY_POKEMON_CENTER_1F),
DEFAULT_POKEMON_CENTER_COORDS,
},
[HEAL_LOCATION_MAUVILLE_CITY - 1] =
{
- .group = MAP_GROUP(MAUVILLE_CITY_POKEMON_CENTER_1F),
- .map = MAP_NUM(MAUVILLE_CITY_POKEMON_CENTER_1F),
+ .mapGroup = MAP_GROUP(MAP_MAUVILLE_CITY_POKEMON_CENTER_1F),
+ .mapNum = MAP_NUM(MAP_MAUVILLE_CITY_POKEMON_CENTER_1F),
DEFAULT_POKEMON_CENTER_COORDS,
},
[HEAL_LOCATION_RUSTBORO_CITY - 1] =
{
- .group = MAP_GROUP(RUSTBORO_CITY_POKEMON_CENTER_1F),
- .map = MAP_NUM(RUSTBORO_CITY_POKEMON_CENTER_1F),
+ .mapGroup = MAP_GROUP(MAP_RUSTBORO_CITY_POKEMON_CENTER_1F),
+ .mapNum = MAP_NUM(MAP_RUSTBORO_CITY_POKEMON_CENTER_1F),
DEFAULT_POKEMON_CENTER_COORDS,
},
[HEAL_LOCATION_FORTREE_CITY - 1] =
{
- .group = MAP_GROUP(FORTREE_CITY_POKEMON_CENTER_1F),
- .map = MAP_NUM(FORTREE_CITY_POKEMON_CENTER_1F),
+ .mapGroup = MAP_GROUP(MAP_FORTREE_CITY_POKEMON_CENTER_1F),
+ .mapNum = MAP_NUM(MAP_FORTREE_CITY_POKEMON_CENTER_1F),
DEFAULT_POKEMON_CENTER_COORDS,
},
[HEAL_LOCATION_LILYCOVE_CITY - 1] =
{
- .group = MAP_GROUP(LILYCOVE_CITY_POKEMON_CENTER_1F),
- .map = MAP_NUM(LILYCOVE_CITY_POKEMON_CENTER_1F),
+ .mapGroup = MAP_GROUP(MAP_LILYCOVE_CITY_POKEMON_CENTER_1F),
+ .mapNum = MAP_NUM(MAP_LILYCOVE_CITY_POKEMON_CENTER_1F),
DEFAULT_POKEMON_CENTER_COORDS,
},
[HEAL_LOCATION_MOSSDEEP_CITY - 1] =
{
- .group = MAP_GROUP(MOSSDEEP_CITY_POKEMON_CENTER_1F),
- .map = MAP_NUM(MOSSDEEP_CITY_POKEMON_CENTER_1F),
+ .mapGroup = MAP_GROUP(MAP_MOSSDEEP_CITY_POKEMON_CENTER_1F),
+ .mapNum = MAP_NUM(MAP_MOSSDEEP_CITY_POKEMON_CENTER_1F),
DEFAULT_POKEMON_CENTER_COORDS,
},
[HEAL_LOCATION_SOOTOPOLIS_CITY - 1] =
{
- .group = MAP_GROUP(SOOTOPOLIS_CITY_POKEMON_CENTER_1F),
- .map = MAP_NUM(SOOTOPOLIS_CITY_POKEMON_CENTER_1F),
+ .mapGroup = MAP_GROUP(MAP_SOOTOPOLIS_CITY_POKEMON_CENTER_1F),
+ .mapNum = MAP_NUM(MAP_SOOTOPOLIS_CITY_POKEMON_CENTER_1F),
DEFAULT_POKEMON_CENTER_COORDS,
},
[HEAL_LOCATION_EVER_GRANDE_CITY - 1] =
{
- .group = MAP_GROUP(EVER_GRANDE_CITY_POKEMON_CENTER_1F),
- .map = MAP_NUM(EVER_GRANDE_CITY_POKEMON_CENTER_1F),
+ .mapGroup = MAP_GROUP(MAP_EVER_GRANDE_CITY_POKEMON_CENTER_1F),
+ .mapNum = MAP_NUM(MAP_EVER_GRANDE_CITY_POKEMON_CENTER_1F),
DEFAULT_POKEMON_CENTER_COORDS,
},
[HEAL_LOCATION_LITTLEROOT_TOWN_BRENDANS_HOUSE - 1] =
{
- .group = MAP_GROUP(LITTLEROOT_TOWN_BRENDANS_HOUSE_1F),
- .map = MAP_NUM(LITTLEROOT_TOWN_BRENDANS_HOUSE_1F),
+ .mapGroup = MAP_GROUP(MAP_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F),
+ .mapNum = MAP_NUM(MAP_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F),
.x = 2,
.y = 7,
},
[HEAL_LOCATION_LITTLEROOT_TOWN_MAYS_HOUSE - 1] =
{
- .group = MAP_GROUP(LITTLEROOT_TOWN_MAYS_HOUSE_1F),
- .map = MAP_NUM(LITTLEROOT_TOWN_MAYS_HOUSE_1F),
+ .mapGroup = MAP_GROUP(MAP_LITTLEROOT_TOWN_MAYS_HOUSE_1F),
+ .mapNum = MAP_NUM(MAP_LITTLEROOT_TOWN_MAYS_HOUSE_1F),
.x = 8,
.y = 7,
},
[HEAL_LOCATION_OLDALE_TOWN - 1] =
{
- .group = MAP_GROUP(OLDALE_TOWN_POKEMON_CENTER_1F),
- .map = MAP_NUM(OLDALE_TOWN_POKEMON_CENTER_1F),
+ .mapGroup = MAP_GROUP(MAP_OLDALE_TOWN_POKEMON_CENTER_1F),
+ .mapNum = MAP_NUM(MAP_OLDALE_TOWN_POKEMON_CENTER_1F),
DEFAULT_POKEMON_CENTER_COORDS,
},
[HEAL_LOCATION_DEWFORD_TOWN - 1] =
{
- .group = MAP_GROUP(DEWFORD_TOWN_POKEMON_CENTER_1F),
- .map = MAP_NUM(DEWFORD_TOWN_POKEMON_CENTER_1F),
+ .mapGroup = MAP_GROUP(MAP_DEWFORD_TOWN_POKEMON_CENTER_1F),
+ .mapNum = MAP_NUM(MAP_DEWFORD_TOWN_POKEMON_CENTER_1F),
DEFAULT_POKEMON_CENTER_COORDS,
},
[HEAL_LOCATION_LAVARIDGE_TOWN - 1] =
{
- .group = MAP_GROUP(LAVARIDGE_TOWN_POKEMON_CENTER_1F),
- .map = MAP_NUM(LAVARIDGE_TOWN_POKEMON_CENTER_1F),
+ .mapGroup = MAP_GROUP(MAP_LAVARIDGE_TOWN_POKEMON_CENTER_1F),
+ .mapNum = MAP_NUM(MAP_LAVARIDGE_TOWN_POKEMON_CENTER_1F),
DEFAULT_POKEMON_CENTER_COORDS,
},
[HEAL_LOCATION_FALLARBOR_TOWN - 1] =
{
- .group = MAP_GROUP(FALLARBOR_TOWN_POKEMON_CENTER_1F),
- .map = MAP_NUM(FALLARBOR_TOWN_POKEMON_CENTER_1F),
+ .mapGroup = MAP_GROUP(MAP_FALLARBOR_TOWN_POKEMON_CENTER_1F),
+ .mapNum = MAP_NUM(MAP_FALLARBOR_TOWN_POKEMON_CENTER_1F),
DEFAULT_POKEMON_CENTER_COORDS,
},
[HEAL_LOCATION_VERDANTURF_TOWN - 1] =
{
- .group = MAP_GROUP(VERDANTURF_TOWN_POKEMON_CENTER_1F),
- .map = MAP_NUM(VERDANTURF_TOWN_POKEMON_CENTER_1F),
+ .mapGroup = MAP_GROUP(MAP_VERDANTURF_TOWN_POKEMON_CENTER_1F),
+ .mapNum = MAP_NUM(MAP_VERDANTURF_TOWN_POKEMON_CENTER_1F),
DEFAULT_POKEMON_CENTER_COORDS,
},
[HEAL_LOCATION_PACIFIDLOG_TOWN - 1] =
{
- .group = MAP_GROUP(PACIFIDLOG_TOWN_POKEMON_CENTER_1F),
- .map = MAP_NUM(PACIFIDLOG_TOWN_POKEMON_CENTER_1F),
+ .mapGroup = MAP_GROUP(MAP_PACIFIDLOG_TOWN_POKEMON_CENTER_1F),
+ .mapNum = MAP_NUM(MAP_PACIFIDLOG_TOWN_POKEMON_CENTER_1F),
DEFAULT_POKEMON_CENTER_COORDS,
},
[HEAL_LOCATION_EVER_GRANDE_CITY_POKEMON_LEAGUE - 1] =
{
- .group = MAP_GROUP(EVER_GRANDE_CITY_POKEMON_LEAGUE_1F),
- .map = MAP_NUM(EVER_GRANDE_CITY_POKEMON_LEAGUE_1F),
+ .mapGroup = MAP_GROUP(MAP_EVER_GRANDE_CITY_POKEMON_LEAGUE_1F),
+ .mapNum = MAP_NUM(MAP_EVER_GRANDE_CITY_POKEMON_LEAGUE_1F),
.x = 3,
.y = 4,
},
[HEAL_LOCATION_SOUTHERN_ISLAND_EXTERIOR - 1] =
{
- .group = MAP_GROUP(SOUTHERN_ISLAND_EXTERIOR),
- .map = MAP_NUM(SOUTHERN_ISLAND_EXTERIOR),
+ .mapGroup = MAP_GROUP(MAP_SOUTHERN_ISLAND_EXTERIOR),
+ .mapNum = MAP_NUM(MAP_SOUTHERN_ISLAND_EXTERIOR),
.x = 15,
.y = 20,
},
[HEAL_LOCATION_BATTLE_FRONTIER_OUTSIDE_EAST - 1] =
{
- .group = MAP_GROUP(BATTLE_FRONTIER_POKEMON_CENTER_1F),
- .map = MAP_NUM(BATTLE_FRONTIER_POKEMON_CENTER_1F),
+ .mapGroup = MAP_GROUP(MAP_BATTLE_FRONTIER_POKEMON_CENTER_1F),
+ .mapNum = MAP_NUM(MAP_BATTLE_FRONTIER_POKEMON_CENTER_1F),
DEFAULT_POKEMON_CENTER_COORDS,
},
};
@@ -148,7 +148,7 @@ static const struct HealLocation sHealLocationsPokemonCenter[HEAL_LOCATION_COUNT
// e.g. for OldaleTown_PokemonCenter1F/events.inc the following entry gets generated:
// object_event 1, OBJ_EVENT_GFX_NURSE, 7, 2, 3, MOVEMENT_TYPE_FACE_DOWN, 0, 0, TRAINER_TYPE_NONE, 0, OldaleTown_PokemonCenter_1F_EventScript_Nurse, 0
// In this case the localId is 1.
-static const u8 sHealNpcLocalId[HEAL_LOCATION_COUNT - 1] =
+static const u8 sHealNpcLocalId[NUM_HEAL_LOCATIONS - 1] =
{
[HEAL_LOCATION_LITTLEROOT_TOWN_BRENDANS_HOUSE_2F - 1] = 1,
[HEAL_LOCATION_LITTLEROOT_TOWN_MAYS_HOUSE_2F - 1] = 1,
diff --git a/src/data/items.h b/src/data/items.h
index 696c5f9954..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,
@@ -13631,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"
@@ -13640,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 6264f23324..b50c70730d 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"
@@ -105,6 +111,14 @@ static const u8 sFeintDescription[] = _(
"An attack that hits foes\n"
"using moves like Protect.");
+static const u8 sProtectDescription[] = _(
+ "Evades attack, but may fail\n"
+ "if used in succession.");
+
+static const u8 sGMaxOneBlowDescription[] = _(
+ "G-max Urshifu attack.\n"
+ "Ignores Max Guard.");
+
const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
{
[MOVE_NONE] =
@@ -404,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,
@@ -426,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,
@@ -546,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,
@@ -789,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,
@@ -1141,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,
@@ -1190,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,
@@ -1266,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,
@@ -1297,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,
@@ -1371,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
@@ -1483,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,
@@ -1552,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,
@@ -1607,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,
@@ -1622,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,
@@ -2008,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,
@@ -2059,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,
@@ -2085,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,
@@ -2111,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,
@@ -2296,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,
@@ -2321,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,
@@ -2330,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,
@@ -2367,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,
@@ -2446,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,
@@ -2522,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,
@@ -2641,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,
@@ -2688,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,
@@ -2830,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,
@@ -2982,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,
@@ -3034,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,
@@ -3347,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,
@@ -3619,7 +3656,7 @@ 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,
@@ -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,7 +3715,7 @@ 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,
@@ -3744,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,
@@ -3767,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,
@@ -3885,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,
@@ -4206,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,
@@ -4231,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,
@@ -4336,7 +4385,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
"Used only if all PP are gone.\n"
"Also hurts the user a little."),
#if B_UPDATED_MOVE_DATA >= GEN_4
- .effect = EFFECT_RECOIL_HP_25,
+ .effect = EFFECT_STRUGGLE,
.accuracy = 0,
.mirrorMoveBanned = TRUE,
.additionalEffects = ADDITIONAL_EFFECTS({
@@ -4441,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,
@@ -4560,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,
@@ -4688,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,
@@ -4737,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,
@@ -4761,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
@@ -4789,9 +4846,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_PROTECT] =
{
.name = COMPOUND_STRING("Protect"),
- .description = COMPOUND_STRING(
- "Evades attack, but may fail\n"
- "if used in succession."),
+ .description = sProtectDescription,
.effect = EFFECT_PROTECT,
.power = 0,
.type = TYPE_NORMAL,
@@ -4913,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,
@@ -5180,9 +5235,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_DETECT] =
{
.name = COMPOUND_STRING("Detect"),
- .description = COMPOUND_STRING(
- "Evades attack, but may fail\n"
- "if used in succession."),
+ .description = sProtectDescription,
.effect = EFFECT_PROTECT,
.power = 0,
.type = TYPE_FIGHTING,
@@ -5432,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,
@@ -5745,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,
@@ -5895,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,
@@ -5948,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,
@@ -5997,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,
@@ -6029,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,
@@ -6212,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,
@@ -6259,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,
@@ -6397,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,
@@ -6607,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,
@@ -6745,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,
@@ -6853,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,
@@ -6876,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,
@@ -6899,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,
@@ -6922,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,
@@ -7038,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,
@@ -7088,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,
@@ -7144,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,
@@ -7412,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,
@@ -7427,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,
@@ -7707,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,
@@ -7865,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,
@@ -8283,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,
@@ -8390,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,
@@ -8756,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,
@@ -8998,9 +9067,15 @@ 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,
@@ -9052,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,
@@ -9226,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,
@@ -9328,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,
@@ -9352,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,
@@ -9451,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,
@@ -9542,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,
@@ -9792,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,
@@ -9861,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,
@@ -10017,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,
@@ -10836,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,
@@ -11221,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,
@@ -11925,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,
@@ -12295,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,
@@ -12305,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,
@@ -12365,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,
@@ -12439,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,
@@ -12481,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,
@@ -12631,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,
@@ -12654,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,
@@ -12676,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,
@@ -12894,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,
@@ -13192,7 +13269,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
.category = DAMAGE_CATEGORY_STATUS,
.zMove = { .effect = Z_EFFECT_SPD_UP_2 },
.ignoresProtect = B_UPDATED_MOVE_FLAGS >= GEN_6,
- .ignoresSubstitute = TRUE,
+ .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6,
.metronomeBanned = TRUE,
.copycatBanned = TRUE,
.assistBanned = TRUE,
@@ -13318,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,
@@ -13343,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,
@@ -13435,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,
@@ -13792,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,
@@ -13802,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,
@@ -13964,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,
@@ -14275,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,
@@ -14436,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,
@@ -14532,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,
@@ -14557,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,
@@ -15225,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,
@@ -15598,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,
@@ -15610,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,
@@ -15929,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,
@@ -16190,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,
@@ -16481,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,
@@ -16557,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,
@@ -17159,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,
@@ -17621,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,
@@ -19482,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,
@@ -19491,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,
@@ -19504,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,
@@ -19513,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,
@@ -19526,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,
@@ -19535,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,
@@ -19588,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,
@@ -20997,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,
@@ -21180,7 +21259,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_BREAKNECK_BLITZ] =
{
.name = COMPOUND_STRING("Breakneck Blitz"),
- .description = sNullDescription,
+ .description = COMPOUND_STRING(
+ "Builds momentum and crashes\n"
+ "into the foe. Power varies."),
.effect = EFFECT_HIT,
.power = 1,
.type = TYPE_NORMAL,
@@ -21193,8 +21274,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
},
[MOVE_ALL_OUT_PUMMELING] =
{
- .name = COMPOUND_STRING("All Out Pummeling"),
- .description = sNullDescription,
+ .name = COMPOUND_STRING("All-Out Pummeling"),
+ .description = COMPOUND_STRING(
+ "Rams an energy orb into\n"
+ "the target. Power varies."),
.effect = EFFECT_HIT,
.power = 1,
.type = TYPE_FIGHTING,
@@ -21208,7 +21291,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_SUPERSONIC_SKYSTRIKE] =
{
.name = COMPOUND_STRING("Supersonic Skystrike"),
- .description = sNullDescription,
+ .description = COMPOUND_STRING(
+ "Soars up and plummets toward\n"
+ "the target. Power varies."),
.effect = EFFECT_HIT,
.power = 1,
.type = TYPE_FLYING,
@@ -21222,7 +21307,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_ACID_DOWNPOUR] =
{
.name = COMPOUND_STRING("Acid Downpour"),
- .description = sNullDescription,
+ .description = COMPOUND_STRING(
+ "Sinks the target in a poison\n"
+ "swamp. Power varies."),
.effect = EFFECT_HIT,
.power = 1,
.type = TYPE_POISON,
@@ -21236,7 +21323,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_TECTONIC_RAGE] =
{
.name = COMPOUND_STRING("Tectonic Rage"),
- .description = sNullDescription,
+ .description = COMPOUND_STRING(
+ "Burrows deep and slams into\n"
+ "the target. Power varies."),
.effect = EFFECT_HIT,
.power = 1,
.type = TYPE_GROUND,
@@ -21251,7 +21340,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_CONTINENTAL_CRUSH] =
{
.name = COMPOUND_STRING("Continental Crush"),
- .description = sNullDescription,
+ .description = COMPOUND_STRING(
+ "Drops a huge rock mountain\n"
+ "on the foe. Power varies."),
.effect = EFFECT_HIT,
.power = 1,
.type = TYPE_ROCK,
@@ -21264,8 +21355,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
},
[MOVE_SAVAGE_SPIN_OUT] =
{
- .name = COMPOUND_STRING("Savage Spin Out"),
- .description = sNullDescription,
+ .name = COMPOUND_STRING("Savage Spin-Out"),
+ .description = COMPOUND_STRING(
+ "Spits threads of silk to\n"
+ "bind the foe. Power varies."),
.effect = EFFECT_HIT,
.power = 1,
.type = TYPE_BUG,
@@ -21278,8 +21371,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
},
[MOVE_NEVER_ENDING_NIGHTMARE] =
{
- .name = COMPOUND_STRING("Never Ending Nightmare"),
- .description = sNullDescription,
+ .name = COMPOUND_STRING("Never-Ending Nightmare"),
+ .description = COMPOUND_STRING(
+ "Deep-seated grudges trap\n"
+ "the target. Power varies."),
.effect = EFFECT_HIT,
.power = 1,
.type = TYPE_GHOST,
@@ -21293,7 +21388,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_CORKSCREW_CRASH] =
{
.name = COMPOUND_STRING("Corkscrew Crash"),
- .description = sNullDescription,
+ .description = COMPOUND_STRING(
+ "Spins very fast and rams\n"
+ "the target. Power varies."),
.effect = EFFECT_HIT,
.power = 1,
.type = TYPE_STEEL,
@@ -21307,7 +21404,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_INFERNO_OVERDRIVE] =
{
.name = COMPOUND_STRING("Inferno Overdrive"),
- .description = sNullDescription,
+ .description = COMPOUND_STRING(
+ "Breathes intense fire at\n"
+ "the target. Power varies."),
.effect = EFFECT_HIT,
.power = 1,
.type = TYPE_FIRE,
@@ -21321,7 +21420,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_HYDRO_VORTEX] =
{
.name = COMPOUND_STRING("Hydro Vortex"),
- .description = sNullDescription,
+ .description = COMPOUND_STRING(
+ "A huge whirlpool swallows\n"
+ "the target. Power varies."),
.effect = EFFECT_HIT,
.power = 1,
.type = TYPE_WATER,
@@ -21335,7 +21436,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_BLOOM_DOOM] =
{
.name = COMPOUND_STRING("Bloom Doom"),
- .description = sNullDescription,
+ .description = COMPOUND_STRING(
+ "Uses plant energy to attack\n"
+ "the target. Power varies."),
.effect = EFFECT_HIT,
.power = 1,
.type = TYPE_GRASS,
@@ -21349,7 +21452,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_GIGAVOLT_HAVOC] =
{
.name = COMPOUND_STRING("Gigavolt Havoc"),
- .description = sNullDescription,
+ .description = COMPOUND_STRING(
+ "Hits the foe with powerful\n"
+ "electricity. Power varies."),
.effect = EFFECT_HIT,
.power = 1,
.type = TYPE_ELECTRIC,
@@ -21363,7 +21468,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_SHATTERED_PSYCHE] =
{
.name = COMPOUND_STRING("Shattered Psyche"),
- .description = sNullDescription,
+ .description = COMPOUND_STRING(
+ "Controls the target to\n"
+ "hurt it. Power varies."),
.effect = EFFECT_HIT,
.power = 1,
.type = TYPE_PSYCHIC,
@@ -21377,7 +21484,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_SUBZERO_SLAMMER] =
{
.name = COMPOUND_STRING("Subzero Slammer"),
- .description = sNullDescription,
+ .description = COMPOUND_STRING(
+ "Drops the temp and freezes\n"
+ "the target. Power varies."),
.effect = EFFECT_HIT,
.power = 1,
.type = TYPE_ICE,
@@ -21391,7 +21500,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_DEVASTATING_DRAKE] =
{
.name = COMPOUND_STRING("Devastating Drake"),
- .description = sNullDescription,
+ .description = COMPOUND_STRING(
+ "Develops aura and attacks\n"
+ "the target. Power varies."),
.effect = EFFECT_HIT,
.power = 1,
.type = TYPE_DRAGON,
@@ -21405,7 +21516,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_BLACK_HOLE_ECLIPSE] =
{
.name = COMPOUND_STRING("Black Hole Eclipse"),
- .description = sNullDescription,
+ .description = COMPOUND_STRING(
+ "Sucks the target into dark\n"
+ "energy. Power varies."),
.effect = EFFECT_HIT,
.power = 1,
.type = TYPE_DARK,
@@ -21419,7 +21532,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_TWINKLE_TACKLE] =
{
.name = COMPOUND_STRING("Twinkle Tackle"),
- .description = sNullDescription,
+ .description = COMPOUND_STRING(
+ "Toys with the target in a\n"
+ "charming space. Power varies."),
.effect = EFFECT_HIT,
.power = 1,
.type = TYPE_FAIRY,
@@ -21433,7 +21548,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_CATASTROPIKA] =
{
.name = COMPOUND_STRING("Catastropika"),
- .description = sNullDescription,
+ .description = COMPOUND_STRING(
+ "Pikachu uses the max amount\n"
+ "of electricity and pounces."),
.effect = EFFECT_HIT,
.power = 210,
.type = TYPE_ELECTRIC,
@@ -21447,7 +21564,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_10000000_VOLT_THUNDERBOLT] =
{
.name = COMPOUND_STRING("10,000,000 Volt Thunderbolt"),
- .description = sNullDescription,
+ .description = COMPOUND_STRING(
+ "Cap Pikachu unleashes jolt.\n"
+ "High critical-hit ratio."),
.effect = EFFECT_HIT,
.power = 195,
.type = TYPE_ELECTRIC,
@@ -21462,7 +21581,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_STOKED_SPARKSURFER] =
{
.name = COMPOUND_STRING("Stoked Sparksurfer"),
- .description = sNullDescription,
+ .description = COMPOUND_STRING(
+ "Alolan Raichu attacks with\n"
+ "full force. Causes paralysis."),
.effect = EFFECT_HIT,
.power = 175,
.type = TYPE_ELECTRIC,
@@ -21480,7 +21601,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_EXTREME_EVOBOOST] =
{
.name = COMPOUND_STRING("Extreme Evoboost"),
- .description = sNullDescription,
+ .description = COMPOUND_STRING(
+ "Eevee gets energy from\n"
+ "its friends. Boosts stats."),
.effect = EFFECT_EXTREME_EVOBOOST,
.power = 0,
.type = TYPE_NORMAL,
@@ -21494,7 +21617,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_PULVERIZING_PANCAKE] =
{
.name = COMPOUND_STRING("Pulverizing Pancake"),
- .description = sNullDescription,
+ .description = COMPOUND_STRING(
+ "Snorlax energetically moves\n"
+ "and attacks with full force."),
.effect = EFFECT_HIT,
.power = 210,
.type = TYPE_NORMAL,
@@ -21508,7 +21633,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_GENESIS_SUPERNOVA] =
{
.name = COMPOUND_STRING("Genesis Supernova"),
- .description = sNullDescription,
+ .description = COMPOUND_STRING(
+ "Mew attacks with full force.\n"
+ "Psychically charges terrain."),
.effect = EFFECT_HIT_SET_REMOVE_TERRAIN,
.power = 185,
.type = TYPE_PSYCHIC,
@@ -21523,7 +21650,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_SINISTER_ARROW_RAID] =
{
.name = COMPOUND_STRING("Sinister Arrow Raid"),
- .description = sNullDescription,
+ .description = COMPOUND_STRING(
+ "Decidueye shoots countless\n"
+ "arrows with full force."),
.effect = EFFECT_HIT,
.power = 180,
.type = TYPE_GHOST,
@@ -21537,7 +21666,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_MALICIOUS_MOONSAULT] =
{
.name = COMPOUND_STRING("Malicious Moonsault"),
- .description = sNullDescription,
+ .description = COMPOUND_STRING(
+ "Incineroar crashes into\n"
+ "the target with full force."),
.effect = EFFECT_HIT,
.power = 180,
.type = TYPE_DARK,
@@ -21551,7 +21682,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_OCEANIC_OPERETTA] =
{
.name = COMPOUND_STRING("Oceanic Operetta"),
- .description = sNullDescription,
+ .description = COMPOUND_STRING(
+ "Primarina summons a massive\n"
+ "amount of water at the foe."),
.effect = EFFECT_HIT,
.power = 195,
.type = TYPE_WATER,
@@ -21565,7 +21698,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_SPLINTERED_STORMSHARDS] =
{
.name = COMPOUND_STRING("Splintered Stormshards"),
- .description = sNullDescription,
+ .description = COMPOUND_STRING(
+ "Lycanroc attacks with full\n"
+ "force. Removes all terrain."),
.effect = EFFECT_HIT_SET_REMOVE_TERRAIN,
.power = 190,
.type = TYPE_ROCK,
@@ -21580,7 +21715,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_LETS_SNUGGLE_FOREVER] =
{
.name = COMPOUND_STRING("Let's Snuggle Forever"),
- .description = sNullDescription,
+ .description = COMPOUND_STRING(
+ "Mimikyu punches the target\n"
+ "with full force."),
.effect = EFFECT_HIT,
.power = 190,
.type = TYPE_FAIRY,
@@ -21594,7 +21731,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_CLANGOROUS_SOULBLAZE] =
{
.name = COMPOUND_STRING("Clangorous Soulblaze"),
- .description = sNullDescription,
+ .description = COMPOUND_STRING(
+ "Kommo-o attacks with full\n"
+ "force. Boosts all stats."),
.effect = EFFECT_HIT,
.power = 185,
.type = TYPE_DRAGON,
@@ -21615,7 +21754,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_GUARDIAN_OF_ALOLA] =
{
.name = COMPOUND_STRING("Guardian of Alola"),
- .description = sNullDescription,
+ .description = COMPOUND_STRING(
+ "The Land Spirit Pokémon\n"
+ "greatly reduces the foe's HP."),
.effect = EFFECT_GUARDIAN_OF_ALOLA,
.power = 1,
.type = TYPE_FAIRY,
@@ -21629,7 +21770,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_SEARING_SUNRAZE_SMASH] =
{
.name = COMPOUND_STRING("Searing Sunraze Smash"),
- .description = sNullDescription,
+ .description = COMPOUND_STRING(
+ "Solgaleo attacks with full\n"
+ "force. Ignores abilities."),
.effect = EFFECT_HIT,
.power = 200,
.type = TYPE_STEEL,
@@ -21644,7 +21787,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_MENACING_MOONRAZE_MAELSTROM] =
{
.name = COMPOUND_STRING("Menacing Moonraze Maelstrom"),
- .description = sNullDescription,
+ .description = COMPOUND_STRING(
+ "Lunala attacks with full\n"
+ "force. Ignores abilities."),
.effect = EFFECT_HIT,
.power = 200,
.type = TYPE_GHOST,
@@ -21658,8 +21803,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
},
[MOVE_LIGHT_THAT_BURNS_THE_SKY] =
{
- .name = COMPOUND_STRING("Light That Burns The Sky"),
- .description = sNullDescription,
+ .name = COMPOUND_STRING("Light That Burns the Sky"),
+ .description = COMPOUND_STRING(
+ "Uses Necrozma's highest\n"
+ "attack. Ignores abilities."),
.effect = EFFECT_PHOTON_GEYSER,
.power = 200,
.type = TYPE_PSYCHIC,
@@ -21673,8 +21820,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
},
[MOVE_SOUL_STEALING_7_STAR_STRIKE] =
{
- .name = COMPOUND_STRING("Soul Stealing 7 Star Strike"),
- .description = sNullDescription,
+ .name = COMPOUND_STRING("Soul-Stealing 7-Star Strike"),
+ .description = COMPOUND_STRING(
+ "Marshadow punches and\n"
+ "kicks with full force."),
.effect = EFFECT_HIT,
.power = 195,
.type = TYPE_GHOST,
@@ -21689,7 +21838,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_MAX_GUARD] =
{
.name = COMPOUND_STRING("Max Guard"),
- .description = sNullDescription,
+ .description = sProtectDescription,
.effect = EFFECT_PROTECT,
.power = 0,
.type = TYPE_NORMAL,
@@ -21705,7 +21854,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_MAX_FLARE] =
{
.name = COMPOUND_STRING("Max Flare"),
- .description = sNullDescription,
+ .description = COMPOUND_STRING(
+ "Fire Dynamax attack.\n"
+ "Intensifies sun for 5 turns."),
.effect = EFFECT_MAX_MOVE,
.power = 1,
.type = TYPE_FIRE,
@@ -21725,7 +21876,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_MAX_FLUTTERBY] =
{
.name = COMPOUND_STRING("Max Flutterby"),
- .description = sNullDescription,
+ .description = COMPOUND_STRING(
+ "Bug Dynamax attack.\n"
+ "Lowers foe's Sp. Atk stat."),
.effect = EFFECT_MAX_MOVE,
.power = 1,
.type = TYPE_BUG,
@@ -21745,7 +21898,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_MAX_LIGHTNING] =
{
.name = COMPOUND_STRING("Max Lightning"),
- .description = sNullDescription,
+ .description = COMPOUND_STRING(
+ "Electric Dynamax attack.\n"
+ "Turns the terrain electric."),
.effect = EFFECT_MAX_MOVE,
.power = 1,
.type = TYPE_ELECTRIC,
@@ -21765,7 +21920,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_MAX_STRIKE] =
{
.name = COMPOUND_STRING("Max Strike"),
- .description = sNullDescription,
+ .description = COMPOUND_STRING(
+ "Normal Dynamax attack.\n"
+ "Lowers foe's Speed stat."),
.effect = EFFECT_MAX_MOVE,
.power = 1,
.type = TYPE_NORMAL,
@@ -21785,7 +21942,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_MAX_KNUCKLE] =
{
.name = COMPOUND_STRING("Max Knuckle"),
- .description = sNullDescription,
+ .description = COMPOUND_STRING(
+ "Fighting Dynamax attack.\n"
+ "Boosts ally Attack stats."),
.effect = EFFECT_MAX_MOVE,
.power = 1,
.type = TYPE_FIGHTING,
@@ -21805,7 +21964,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_MAX_PHANTASM] =
{
.name = COMPOUND_STRING("Max Phantasm"),
- .description = sNullDescription,
+ .description = COMPOUND_STRING(
+ "Ghost Dynamax attack.\n"
+ "Lowers foe's Defense stat."),
.effect = EFFECT_MAX_MOVE,
.power = 1,
.type = TYPE_GHOST,
@@ -21825,7 +21986,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_MAX_HAILSTORM] =
{
.name = COMPOUND_STRING("Max Hailstorm"),
- .description = sNullDescription,
+ .description = COMPOUND_STRING(
+ "Ice Dynamax attack.\n"
+ "Summons hail for 5 turns."),
.effect = EFFECT_MAX_MOVE,
.power = 1,
.type = TYPE_ICE,
@@ -21845,7 +22008,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_MAX_OOZE] =
{
.name = COMPOUND_STRING("Max Ooze"),
- .description = sNullDescription,
+ .description = COMPOUND_STRING(
+ "Poison Dynamax attack.\n"
+ "Boosts ally Sp. Atk stats."),
.effect = EFFECT_MAX_MOVE,
.power = 1,
.type = TYPE_POISON,
@@ -21865,7 +22030,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_MAX_GEYSER] =
{
.name = COMPOUND_STRING("Max Geyser"),
- .description = sNullDescription,
+ .description = COMPOUND_STRING(
+ "Water Dynamax attack.\n"
+ "Summons rain for 5 turns."),
.effect = EFFECT_MAX_MOVE,
.power = 1,
.type = TYPE_WATER,
@@ -21885,7 +22052,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_MAX_AIRSTREAM] =
{
.name = COMPOUND_STRING("Max Airstream"),
- .description = sNullDescription,
+ .description = COMPOUND_STRING(
+ "Flying Dynamax attack.\n"
+ "Boosts ally Speed stats."),
.effect = EFFECT_MAX_MOVE,
.power = 1,
.type = TYPE_FLYING,
@@ -21905,7 +22074,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_MAX_STARFALL] =
{
.name = COMPOUND_STRING("Max Starfall"),
- .description = sNullDescription,
+ .description = COMPOUND_STRING(
+ "Fairy Dynamax attack.\n"
+ "Turns the terrain misty."),
.effect = EFFECT_MAX_MOVE,
.power = 1,
.type = TYPE_FAIRY,
@@ -21925,7 +22096,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_MAX_WYRMWIND] =
{
.name = COMPOUND_STRING("Max Wyrmwind"),
- .description = sNullDescription,
+ .description = COMPOUND_STRING(
+ "Dragon Dynamax attack.\n"
+ "Lowers foe's Attack stat."),
.effect = EFFECT_MAX_MOVE,
.power = 1,
.type = TYPE_DRAGON,
@@ -21945,7 +22118,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_MAX_MINDSTORM] =
{
.name = COMPOUND_STRING("Max Mindstorm"),
- .description = sNullDescription,
+ .description = COMPOUND_STRING(
+ "Psychic Dynamax attack.\n"
+ "Turns the terrain psychic."),
.effect = EFFECT_MAX_MOVE,
.power = 1,
.type = TYPE_PSYCHIC,
@@ -21965,7 +22140,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_MAX_ROCKFALL] =
{
.name = COMPOUND_STRING("Max Rockfall"),
- .description = sNullDescription,
+ .description = COMPOUND_STRING(
+ "Rock Dynamax attack.\n"
+ "Summons a sandstorm."),
.effect = EFFECT_MAX_MOVE,
.power = 1,
.type = TYPE_ROCK,
@@ -21985,7 +22162,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_MAX_QUAKE] =
{
.name = COMPOUND_STRING("Max Quake"),
- .description = sNullDescription,
+ .description = COMPOUND_STRING(
+ "Ground Dynamax attack.\n"
+ "Boosts ally Sp. Def stats."),
.effect = EFFECT_MAX_MOVE,
.power = 1,
.type = TYPE_GROUND,
@@ -22006,7 +22185,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_MAX_DARKNESS] =
{
.name = COMPOUND_STRING("Max Darkness"),
- .description = sNullDescription,
+ .description = COMPOUND_STRING(
+ "Dark Dynamax attack.\n"
+ "Lowers foe's Sp. Def stat."),
.effect = EFFECT_MAX_MOVE,
.power = 1,
.type = TYPE_DARK,
@@ -22026,7 +22207,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_MAX_OVERGROWTH] =
{
.name = COMPOUND_STRING("Max Overgrowth"),
- .description = sNullDescription,
+ .description = COMPOUND_STRING(
+ "Grass Dynamax attack.\n"
+ "Turns the terrain grassy."),
.effect = EFFECT_MAX_MOVE,
.power = 10,
.type = TYPE_GRASS,
@@ -22046,7 +22229,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_MAX_STEELSPIKE] =
{
.name = COMPOUND_STRING("Max Steelspike"),
- .description = sNullDescription,
+ .description = COMPOUND_STRING(
+ "Steel Dynamax attack.\n"
+ "Boosts ally Defense stats."),
.effect = EFFECT_MAX_MOVE,
.power = 10,
.type = TYPE_STEEL,
@@ -22066,7 +22251,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_G_MAX_VINE_LASH] =
{
.name = COMPOUND_STRING("G-Max Vine Lash"),
- .description = sNullDescription, //ANIM TODO
+ .description = COMPOUND_STRING(
+ "G-max Venusaur attack.\n"
+ "Damages for 4 turns."), //ANIM TODO
.effect = EFFECT_MAX_MOVE,
.power = 10,
.type = TYPE_GRASS,
@@ -22086,7 +22273,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_G_MAX_WILDFIRE] =
{
.name = COMPOUND_STRING("G-Max Wildfire"),
- .description = sNullDescription,
+ .description = COMPOUND_STRING(
+ "G-max Charizard attack.\n"
+ "Damages for 4 turns."), //ANIM TODO
.effect = EFFECT_MAX_MOVE,
.power = 10,
.type = TYPE_FIRE,
@@ -22106,7 +22295,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_G_MAX_CANNONADE] =
{
.name = COMPOUND_STRING("G-Max Cannonade"),
- .description = sNullDescription, //ANIM TODO
+ .description = COMPOUND_STRING(
+ "G-max Blastoise attack.\n"
+ "Damages for 4 turns."), //ANIM TODO
.effect = EFFECT_MAX_MOVE,
.power = 10,
.type = TYPE_WATER,
@@ -22126,7 +22317,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_G_MAX_BEFUDDLE] =
{
.name = COMPOUND_STRING("G-Max Befuddle"),
- .description = sNullDescription,
+ .description = COMPOUND_STRING(
+ "G-max Butterfree attack.\n"
+ "Poison, paralysis, or sleep."), //ANIM TODO
.effect = EFFECT_MAX_MOVE,
.power = 10,
.type = TYPE_BUG,
@@ -22146,7 +22339,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_G_MAX_VOLT_CRASH] =
{
.name = COMPOUND_STRING("G-Max Volt Crash"),
- .description = sNullDescription,
+ .description = COMPOUND_STRING(
+ "G-max Pikachu attack.\n"
+ "Paralyzes opponents."), //ANIM TODO
.effect = EFFECT_MAX_MOVE,
.power = 10,
.type = TYPE_ELECTRIC,
@@ -22166,7 +22361,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_G_MAX_GOLD_RUSH] =
{
.name = COMPOUND_STRING("G-Max Gold Rush"),
- .description = sNullDescription,
+ .description = COMPOUND_STRING(
+ "G-max Meowth attack.\n"
+ "Confuses and earns money."), //ANIM TODO
.effect = EFFECT_MAX_MOVE,
.power = 10,
.type = TYPE_NORMAL,
@@ -22186,7 +22383,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_G_MAX_CHI_STRIKE] =
{
.name = COMPOUND_STRING("G-Max Chi Strike"),
- .description = sNullDescription,
+ .description = COMPOUND_STRING(
+ "G-max Machamp attack.\n"
+ "Boosts critical-hit ratio."), //ANIM TODO
.effect = EFFECT_MAX_MOVE,
.power = 10,
.type = TYPE_FIGHTING,
@@ -22206,7 +22405,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_G_MAX_TERROR] =
{
.name = COMPOUND_STRING("G-Max Terror"),
- .description = sNullDescription,
+ .description = COMPOUND_STRING(
+ "G-max Gengar attack.\n"
+ "Prevents foes from escaping."), //ANIM TODO
.effect = EFFECT_MAX_MOVE,
.power = 10,
.type = TYPE_GHOST,
@@ -22226,7 +22427,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_G_MAX_FOAM_BURST] =
{
.name = COMPOUND_STRING("G-Max Foam Burst"),
- .description = sNullDescription,
+ .description = COMPOUND_STRING(
+ "G-max Kingler attack.\n"
+ "Harshly lowers foe's Speed."), //ANIM TODO
.effect = EFFECT_MAX_MOVE,
.power = 10,
.type = TYPE_WATER,
@@ -22246,7 +22449,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_G_MAX_RESONANCE] =
{
.name = COMPOUND_STRING("G-Max Resonance"),
- .description = sNullDescription,
+ .description = COMPOUND_STRING(
+ "G-max Lapras attack.\n"
+ "Reduces damage for 5 turns."), //ANIM TODO
.effect = EFFECT_MAX_MOVE,
.power = 10,
.type = TYPE_ICE,
@@ -22266,7 +22471,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_G_MAX_CUDDLE] =
{
.name = COMPOUND_STRING("G-Max Cuddle"),
- .description = sNullDescription,
+ .description = COMPOUND_STRING(
+ "G-max Eevee attack.\n"
+ "Infatuates opponents."), //ANIM TODO
.effect = EFFECT_MAX_MOVE,
.power = 10,
.type = TYPE_NORMAL,
@@ -22286,7 +22493,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_G_MAX_REPLENISH] =
{
.name = COMPOUND_STRING("G-Max Replenish"),
- .description = sNullDescription,
+ .description = COMPOUND_STRING(
+ "G-max Snorlax attack.\n"
+ "Restores eaten Berries."), //ANIM TODO
.effect = EFFECT_MAX_MOVE,
.power = 10,
.type = TYPE_NORMAL,
@@ -22306,7 +22515,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_G_MAX_MALODOR] =
{
.name = COMPOUND_STRING("G-Max Malodor"),
- .description = sNullDescription,
+ .description = COMPOUND_STRING(
+ "G-max Garbodor attack.\n"
+ "Poisons opponents."), //ANIM TODO
.effect = EFFECT_MAX_MOVE,
.power = 10,
.type = TYPE_POISON,
@@ -22326,7 +22537,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_G_MAX_MELTDOWN] =
{
.name = COMPOUND_STRING("G-Max Meltdown"),
- .description = sNullDescription,
+ .description = COMPOUND_STRING(
+ "G-max Melmetal attack.\n"
+ "Prevents repeat move use."), //ANIM TODO
.effect = EFFECT_MAX_MOVE,
.power = 10,
.type = TYPE_STEEL,
@@ -22346,7 +22559,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_G_MAX_DRUM_SOLO] =
{
.name = COMPOUND_STRING("G-Max Drum Solo"),
- .description = sNullDescription, //ANIM TODO
+ .description = COMPOUND_STRING(
+ "G-max Rillaboom attack.\n"
+ "Ignores target's abilities."), //ANIM TODO
.effect = EFFECT_MAX_MOVE,
.power = 10,
.type = TYPE_GRASS,
@@ -22367,7 +22582,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_G_MAX_FIREBALL] =
{
.name = COMPOUND_STRING("G-Max Fireball"),
- .description = sNullDescription, //ANIM TODO
+ .description = COMPOUND_STRING(
+ "G-max Cinderace attack.\n"
+ "Ignores target's abilities."), //ANIM TODO
.effect = EFFECT_MAX_MOVE,
.power = 10,
.type = TYPE_FIRE,
@@ -22388,7 +22605,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_G_MAX_HYDROSNIPE] =
{
.name = COMPOUND_STRING("G-Max Hydrosnipe"),
- .description = sNullDescription, //ANIM TODO
+ .description = COMPOUND_STRING(
+ "G-max Inteleon attack.\n"
+ "Ignores target's abilities."), //ANIM TODO
.effect = EFFECT_MAX_MOVE,
.power = 10,
.type = TYPE_WATER,
@@ -22409,7 +22628,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_G_MAX_WIND_RAGE] =
{
.name = COMPOUND_STRING("G-Max Wind Rage"),
- .description = sNullDescription,
+ .description = COMPOUND_STRING(
+ "G-max Corviknight attack.\n"
+ "Removes opponent screens."), //ANIM TODO
.effect = EFFECT_MAX_MOVE,
.power = 10,
.type = TYPE_FLYING,
@@ -22429,7 +22650,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_G_MAX_GRAVITAS] =
{
.name = COMPOUND_STRING("G-Max Gravitas"),
- .description = sNullDescription,
+ .description = COMPOUND_STRING(
+ "G-max Orbeetle attack.\n"
+ "Changes gravity for 5 turns."), //ANIM TODO
.effect = EFFECT_MAX_MOVE,
.power = 10,
.type = TYPE_PSYCHIC,
@@ -22449,7 +22672,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_G_MAX_STONESURGE] =
{
.name = COMPOUND_STRING("G-Max Stonesurge"),
- .description = sNullDescription,
+ .description = COMPOUND_STRING(
+ "G-max Drednaw attack.\n"
+ "Scatters sharp rocks."), //ANIM TODO
.effect = EFFECT_MAX_MOVE,
.power = 10,
.type = TYPE_WATER,
@@ -22469,7 +22694,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_G_MAX_VOLCALITH] =
{
.name = COMPOUND_STRING("G-Max Volcalith"),
- .description = sNullDescription,
+ .description = COMPOUND_STRING(
+ "G-max Coalossal attack.\n"
+ "Damages for 4 turns."), //ANIM TODO
.effect = EFFECT_MAX_MOVE,
.power = 10,
.type = TYPE_ROCK,
@@ -22489,7 +22716,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_G_MAX_TARTNESS] =
{
.name = COMPOUND_STRING("G-Max Tartness"),
- .description = sNullDescription,
+ .description = COMPOUND_STRING(
+ "G-max Flapple attack.\n"
+ "Lowers foe's evasiveness."), //ANIM TODO
.effect = EFFECT_MAX_MOVE,
.power = 10,
.type = TYPE_GRASS,
@@ -22509,7 +22738,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_G_MAX_SWEETNESS] =
{
.name = COMPOUND_STRING("G-Max Sweetness"),
- .description = sNullDescription,
+ .description = COMPOUND_STRING(
+ "G-max Appletun attack.\n"
+ "Heals ally status conditions."), //ANIM TODO
.effect = EFFECT_MAX_MOVE,
.power = 10,
.type = TYPE_GRASS,
@@ -22529,7 +22760,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_G_MAX_SANDBLAST] =
{
.name = COMPOUND_STRING("G-Max Sandblast"),
- .description = sNullDescription,
+ .description = COMPOUND_STRING(
+ "G-max Sandaconda attack.\n"
+ "Traps foes in a sandstorm."), //ANIM TODO
.effect = EFFECT_MAX_MOVE,
.power = 10,
.type = TYPE_GROUND,
@@ -22549,7 +22782,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_G_MAX_STUN_SHOCK] =
{
.name = COMPOUND_STRING("G-Max Stun Shock"),
- .description = sNullDescription,
+ .description = COMPOUND_STRING(
+ "G-max Toxtricity attack.\n"
+ "Poisons or paralyzes foes."), //ANIM TODO
.effect = EFFECT_MAX_MOVE,
.power = 10,
.type = TYPE_ELECTRIC,
@@ -22569,7 +22804,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_G_MAX_CENTIFERNO] =
{
.name = COMPOUND_STRING("G-Max Centiferno"),
- .description = sNullDescription,
+ .description = COMPOUND_STRING(
+ "G-max Toxtricity attack.\n"
+ "Traps foes in flames."), //ANIM TODO
.effect = EFFECT_MAX_MOVE,
.power = 10,
.type = TYPE_FIRE,
@@ -22589,7 +22826,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_G_MAX_SMITE] =
{
.name = COMPOUND_STRING("G-Max Smite"),
- .description = sNullDescription,
+ .description = COMPOUND_STRING(
+ "G-max Hatterene attack.\n"
+ "Confuses opponents."), //ANIM TODO
.effect = EFFECT_MAX_MOVE,
.power = 10,
.type = TYPE_FAIRY,
@@ -22610,7 +22849,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_G_MAX_SNOOZE] =
{
.name = COMPOUND_STRING("G-Max Snooze"),
- .description = sNullDescription,
+ .description = COMPOUND_STRING(
+ "G-max Grimmsnarl attack.\n"
+ "Lulls foes into sleep."), //ANIM TODO
.effect = EFFECT_MAX_MOVE,
.power = 10,
.type = TYPE_DARK,
@@ -22630,7 +22871,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_G_MAX_FINALE] =
{
.name = COMPOUND_STRING("G-Max Finale"),
- .description = sNullDescription,
+ .description = COMPOUND_STRING(
+ "G-max Alcremie attack.\n"
+ "Heals ally HP."), //ANIM TODO
.effect = EFFECT_MAX_MOVE,
.power = 10,
.type = TYPE_FAIRY,
@@ -22650,7 +22893,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_G_MAX_STEELSURGE] =
{
.name = COMPOUND_STRING("G-Max Steelsurge"),
- .description = sNullDescription,
+ .description = COMPOUND_STRING(
+ "G-max Copperajah attack.\n"
+ "Scatters sharp spikes."), //ANIM TODO
.effect = EFFECT_MAX_MOVE,
.power = 10,
.type = TYPE_STEEL,
@@ -22670,7 +22915,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_G_MAX_DEPLETION] =
{
.name = COMPOUND_STRING("G-Max Depletion"),
- .description = sNullDescription,
+ .description = COMPOUND_STRING(
+ "G-max Duraludon attack.\n"
+ "Reduces target's PP."), //ANIM TODO
.effect = EFFECT_MAX_MOVE,
.power = 10,
.type = TYPE_DRAGON,
@@ -22690,7 +22937,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_G_MAX_ONE_BLOW] =
{
.name = COMPOUND_STRING("G-Max One Blow"),
- .description = sNullDescription,
+ .description = sGMaxOneBlowDescription, //ANIM TODO
.effect = EFFECT_MAX_MOVE,
.power = 10,
.type = TYPE_DARK,
@@ -22706,7 +22953,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_G_MAX_RAPID_FLOW] =
{
.name = COMPOUND_STRING("G-Max Rapid Flow"),
- .description = sNullDescription,
+ .description = sGMaxOneBlowDescription, //ANIM TODO
.effect = EFFECT_MAX_MOVE,
.power = 10,
.type = TYPE_WATER,
diff --git a/src/data/pokemon/species_info/gen_8_families.h b/src/data/pokemon/species_info/gen_8_families.h
index 297888d9e5..8495287bf7 100644
--- a/src/data/pokemon/species_info/gen_8_families.h
+++ b/src/data/pokemon/species_info/gen_8_families.h
@@ -2817,13 +2817,13 @@ const struct SpeciesInfo gSpeciesInfoGen8[] =
.trainerOffset = 0,
.frontPic = gMonFrontPic_Hydrapple,
.frontPicSize = MON_COORDS_SIZE(64, 64),
- .frontPicYOffset = 1,
+ .frontPicYOffset = 0,
.frontAnimFrames = sAnims_SingleFramePlaceHolder,
- .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,
+ //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,
.backPic = gMonBackPic_Hydrapple,
.backPicSize = MON_COORDS_SIZE(64, 64),
- .backPicYOffset = 0,
- .backAnimId = BACK_ANIM_NONE,
+ .backPicYOffset = 2,
+ //.backAnimId = BACK_ANIM_NONE,
.palette = gMonPalette_Hydrapple,
.shinyPalette = gMonShinyPalette_Hydrapple,
.iconSprite = gMonIcon_Hydrapple,
diff --git a/src/data/pokemon/species_info/gen_9_families.h b/src/data/pokemon/species_info/gen_9_families.h
index c13944e406..f239836cfd 100644
--- a/src/data/pokemon/species_info/gen_9_families.h
+++ b/src/data/pokemon/species_info/gen_9_families.h
@@ -687,19 +687,19 @@ const struct SpeciesInfo gSpeciesInfoGen9[] =
.trainerOffset = 0,
.frontPic = gMonFrontPic_OinkologneM,
.frontPicSize = MON_COORDS_SIZE(64, 64),
- .frontPicYOffset = 6,
+ .frontPicYOffset = 7,
.frontAnimFrames = sAnims_SingleFramePlaceHolder,
//.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,
.backPic = gMonBackPic_OinkologneM,
.backPicSize = MON_COORDS_SIZE(64, 64),
- .backPicYOffset = 8,
+ .backPicYOffset = 12,
//.backAnimId = BACK_ANIM_NONE,
.palette = gMonPalette_OinkologneM,
.shinyPalette = gMonShinyPalette_OinkologneM,
.iconSprite = gMonIcon_OinkologneM,
.iconPalIndex = 1,
.pokemonJumpType = PKMN_JUMP_TYPE_NONE,
- SHADOW(-2, 6, SHADOW_SIZE_M)
+ SHADOW(5, 6, SHADOW_SIZE_M)
FOOTPRINT(Oinkologne)
OVERWORLD(
sPicTable_OinkologneM,
@@ -751,19 +751,19 @@ const struct SpeciesInfo gSpeciesInfoGen9[] =
.trainerOffset = 0,
.frontPic = gMonFrontPic_OinkologneF,
.frontPicSize = MON_COORDS_SIZE(64, 64),
- .frontPicYOffset = 6,
+ .frontPicYOffset = 7,
.frontAnimFrames = sAnims_SingleFramePlaceHolder,
//.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,
.backPic = gMonBackPic_OinkologneF,
.backPicSize = MON_COORDS_SIZE(64, 64),
- .backPicYOffset = 7,
+ .backPicYOffset = 12,
//.backAnimId = BACK_ANIM_NONE,
.palette = gMonPalette_OinkologneF,
.shinyPalette = gMonShinyPalette_OinkologneF,
.iconSprite = gMonIcon_OinkologneF,
.iconPalIndex = 0,
.pokemonJumpType = PKMN_JUMP_TYPE_NONE,
- SHADOW(3, 7, SHADOW_SIZE_M)
+ SHADOW(5, 6, SHADOW_SIZE_M)
FOOTPRINT(Oinkologne)
OVERWORLD(
sPicTable_OinkologneF,
@@ -4003,10 +4003,9 @@ const struct SpeciesInfo gSpeciesInfoGen9[] =
.trainerOffset = 0,
.frontPic = gMonFrontPic_Bombirdier,
.frontPicSize = MON_COORDS_SIZE(64, 64),
- .frontPicYOffset = 1,
+ .frontPicYOffset = 0,
.frontAnimFrames = sAnims_SingleFramePlaceHolder,
//.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,
- .enemyMonElevation = 8,
.backPic = gMonBackPic_Bombirdier,
.backPicSize = MON_COORDS_SIZE(64, 64),
.backPicYOffset = 4,
@@ -4016,7 +4015,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] =
.iconSprite = gMonIcon_Bombirdier,
.iconPalIndex = 0,
.pokemonJumpType = PKMN_JUMP_TYPE_NONE,
- SHADOW(1, 18, SHADOW_SIZE_M)
+ SHADOW(8, 12, SHADOW_SIZE_M)
FOOTPRINT(Bombirdier)
OVERWORLD(
sPicTable_Bombirdier,
@@ -5316,19 +5315,19 @@ const struct SpeciesInfo gSpeciesInfoGen9[] =
.trainerOffset = 0,
.frontPic = gMonFrontPic_GreatTusk,
.frontPicSize = MON_COORDS_SIZE(64, 64),
- .frontPicYOffset = 5,
- .frontAnimFrames = sAnims_TwoFramePlaceHolder,
+ .frontPicYOffset = 0,
+ .frontAnimFrames = sAnims_SingleFramePlaceHolder,
//.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,
.backPic = gMonBackPic_GreatTusk,
.backPicSize = MON_COORDS_SIZE(64, 64),
- .backPicYOffset = 4,
+ .backPicYOffset = 9,
//.backAnimId = BACK_ANIM_NONE,
.palette = gMonPalette_GreatTusk,
.shinyPalette = gMonShinyPalette_GreatTusk,
.iconSprite = gMonIcon_GreatTusk,
.iconPalIndex = 0,
.pokemonJumpType = PKMN_JUMP_TYPE_NONE,
- SHADOW(3, 6, SHADOW_SIZE_L)
+ SHADOW(2, 13, SHADOW_SIZE_XL_BATTLE_ONLY)
FOOTPRINT(GreatTusk)
OVERWORLD(
sPicTable_GreatTusk,
@@ -6123,19 +6122,19 @@ const struct SpeciesInfo gSpeciesInfoGen9[] =
.trainerOffset = 0,
.frontPic = gMonFrontPic_Frigibax,
.frontPicSize = MON_COORDS_SIZE(64, 64),
- .frontPicYOffset = 7,
- .frontAnimFrames = sAnims_TwoFramePlaceHolder,
+ .frontPicYOffset = 13,
+ .frontAnimFrames = sAnims_SingleFramePlaceHolder,
//.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,
.backPic = gMonBackPic_Frigibax,
.backPicSize = MON_COORDS_SIZE(64, 64),
- .backPicYOffset = 11,
+ .backPicYOffset = 13,
//.backAnimId = BACK_ANIM_NONE,
.palette = gMonPalette_Frigibax,
.shinyPalette = gMonShinyPalette_Frigibax,
.iconSprite = gMonIcon_Frigibax,
.iconPalIndex = 0,
.pokemonJumpType = PKMN_JUMP_TYPE_SLOW,
- SHADOW(0, 7, SHADOW_SIZE_S)
+ SHADOW(2, -1, SHADOW_SIZE_S)
FOOTPRINT(Frigibax)
OVERWORLD(
sPicTable_Frigibax,
@@ -6977,6 +6976,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] =
.frontPicYOffset = 0,
.frontAnimFrames = sAnims_SingleFramePlaceHolder,
//.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,
+ .enemyMonElevation = 8,
.backPic = gMonBackPic_Miraidon,
.backPicSize = MON_COORDS_SIZE(64, 64),
.backPicYOffset = 0,
@@ -6986,7 +6986,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] =
.iconSprite = gMonIcon_Miraidon,
.iconPalIndex = 2,
.pokemonJumpType = PKMN_JUMP_TYPE_NONE,
- SHADOW(10, 14, SHADOW_SIZE_L)
+ SHADOW(3, 22, SHADOW_SIZE_L)
FOOTPRINT(Miraidon)
OVERWORLD(
sPicTable_Miraidon,
@@ -7666,10 +7666,10 @@ const struct SpeciesInfo gSpeciesInfoGen9[] =
.perfectIVCount = LEGENDARY_PERFECT_IV_COUNT, \
}
- [SPECIES_OGERPON_TEAL] = OGERPON_SPECIES_INFO(Teal, Teal, TYPE_GRASS, ABILITY_DEFIANT, BODY_COLOR_GREEN, 1, 7, 1, FALSE),
- [SPECIES_OGERPON_WELLSPRING] = OGERPON_SPECIES_INFO(Wellspring, Wellspring, TYPE_WATER, ABILITY_WATER_ABSORB, BODY_COLOR_BLUE, 1, 7, 0, FALSE),
- [SPECIES_OGERPON_HEARTHFLAME] = OGERPON_SPECIES_INFO(Hearthflame, Hearthflame, TYPE_FIRE, ABILITY_MOLD_BREAKER, BODY_COLOR_RED, 1, 7, 0, FALSE),
- [SPECIES_OGERPON_CORNERSTONE] = OGERPON_SPECIES_INFO(Cornerstone, Cornerstone, TYPE_ROCK, ABILITY_STURDY, BODY_COLOR_GRAY, 1, 7, 0, FALSE),
+ [SPECIES_OGERPON_TEAL] = OGERPON_SPECIES_INFO(Teal, Teal, TYPE_GRASS, ABILITY_DEFIANT, BODY_COLOR_GREEN, 1, 6, 1, FALSE),
+ [SPECIES_OGERPON_WELLSPRING] = OGERPON_SPECIES_INFO(Wellspring, Wellspring, TYPE_WATER, ABILITY_WATER_ABSORB, BODY_COLOR_BLUE, 1, 6, 0, FALSE),
+ [SPECIES_OGERPON_HEARTHFLAME] = OGERPON_SPECIES_INFO(Hearthflame, Hearthflame, TYPE_FIRE, ABILITY_MOLD_BREAKER, BODY_COLOR_RED, 1, 6, 0, FALSE),
+ [SPECIES_OGERPON_CORNERSTONE] = OGERPON_SPECIES_INFO(Cornerstone, Cornerstone, TYPE_ROCK, ABILITY_STURDY, BODY_COLOR_GRAY, 1, 6, 0, FALSE),
#if P_TERA_FORMS
[SPECIES_OGERPON_TEAL_TERA] = OGERPON_SPECIES_INFO(Teal, TealTera, TYPE_GRASS, ABILITY_EMBODY_ASPECT_TEAL_MASK, BODY_COLOR_GREEN, 0, 0, 1, TRUE),
[SPECIES_OGERPON_WELLSPRING_TERA] = OGERPON_SPECIES_INFO(Wellspring, WellspringTera, TYPE_WATER, ABILITY_EMBODY_ASPECT_WELLSPRING_MASK, BODY_COLOR_BLUE, 0, 0, 0, TRUE),
@@ -7984,20 +7984,19 @@ const struct SpeciesInfo gSpeciesInfoGen9[] =
.trainerOffset = 7,
.frontPic = gMonFrontPic_TerapagosNormal,
.frontPicSize = MON_COORDS_SIZE(64, 64),
- .frontPicYOffset = 0,
- .frontAnimFrames = sAnims_TwoFramePlaceHolder,
- .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,
- .enemyMonElevation = 1,
+ .frontPicYOffset = 10,
+ .frontAnimFrames = sAnims_SingleFramePlaceHolder,
+ //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,
.backPic = gMonBackPic_TerapagosNormal,
.backPicSize = MON_COORDS_SIZE(64, 64),
- .backPicYOffset = 0,
- .backAnimId = BACK_ANIM_NONE,
+ .backPicYOffset = 9,
+ //.backAnimId = BACK_ANIM_NONE,
.palette = gMonPalette_TerapagosNormal,
.shinyPalette = gMonShinyPalette_TerapagosNormal,
.iconSprite = gMonIcon_TerapagosNormal,
.iconPalIndex = 0,
.pokemonJumpType = PKMN_JUMP_TYPE_NORMAL,
- SHADOW(3, 13, SHADOW_SIZE_L)
+ SHADOW(0, 2, SHADOW_SIZE_M)
FOOTPRINT(TerapagosNormal)
OVERWORLD(
sPicTable_TerapagosNormal,
@@ -8056,19 +8055,19 @@ const struct SpeciesInfo gSpeciesInfoGen9[] =
.frontPic = gMonFrontPic_TerapagosTerastal,
.frontPicSize = MON_COORDS_SIZE(64, 64),
.frontPicYOffset = 8,
- .frontAnimFrames = sAnims_TwoFramePlaceHolder,
- .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,
- .enemyMonElevation = 1,
+ .frontAnimFrames = sAnims_SingleFramePlaceHolder,
+ //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,
+ .enemyMonElevation = 8,
.backPic = gMonBackPic_TerapagosTerastal,
.backPicSize = MON_COORDS_SIZE(64, 64),
- .backPicYOffset = 0,
- .backAnimId = BACK_ANIM_NONE,
+ .backPicYOffset = 11,
+ //.backAnimId = BACK_ANIM_NONE,
.palette = gMonPalette_TerapagosTerastal,
.shinyPalette = gMonShinyPalette_TerapagosTerastal,
.iconSprite = gMonIcon_TerapagosTerastal,
.iconPalIndex = 0,
.pokemonJumpType = PKMN_JUMP_TYPE_NONE,
- SHADOW(-4, 4, SHADOW_SIZE_L)
+ SHADOW(-4, 8, SHADOW_SIZE_L)
FOOTPRINT(TerapagosTerastal)
OVERWORLD(
sPicTable_TerapagosTerastal,
diff --git a/src/data/region_map/region_map_sections.constants.json.txt b/src/data/region_map/region_map_sections.constants.json.txt
new file mode 100644
index 0000000000..340c29b33d
--- /dev/null
+++ b/src/data/region_map/region_map_sections.constants.json.txt
@@ -0,0 +1,22 @@
+{{ doNotModifyHeader }}
+#ifndef GUARD_CONSTANTS_REGION_MAP_SECTIONS_H
+#define GUARD_CONSTANTS_REGION_MAP_SECTIONS_H
+
+enum {
+## for map_section in map_sections
+ {{ map_section.id }},
+## endfor
+ MAPSEC_NONE,
+ MAPSEC_COUNT
+};
+
+// Special location IDs that use the same value space as MAPSECs.
+#define METLOC_SPECIAL_EGG 0xFD
+#define METLOC_IN_GAME_TRADE 0xFE
+#define METLOC_FATEFUL_ENCOUNTER 0xFF
+
+#define KANTO_MAPSEC_START MAPSEC_PALLET_TOWN
+#define KANTO_MAPSEC_END MAPSEC_SPECIAL_AREA
+#define KANTO_MAPSEC_COUNT (KANTO_MAPSEC_END - KANTO_MAPSEC_START + 1)
+
+#endif // GUARD_CONSTANTS_REGION_MAP_SECTIONS_H
diff --git a/src/data/region_map/region_map_sections.json b/src/data/region_map/region_map_sections.json
index 8fa0079117..fa7eb5efa4 100644
--- a/src/data/region_map/region_map_sections.json
+++ b/src/data/region_map/region_map_sections.json
@@ -1,7 +1,7 @@
{
"map_sections": [
{
- "map_section": "MAPSEC_LITTLEROOT_TOWN",
+ "id": "MAPSEC_LITTLEROOT_TOWN",
"name": "LITTLEROOT TOWN",
"x": 4,
"y": 11,
@@ -9,7 +9,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_OLDALE_TOWN",
+ "id": "MAPSEC_OLDALE_TOWN",
"name": "OLDALE TOWN",
"x": 4,
"y": 9,
@@ -17,7 +17,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_DEWFORD_TOWN",
+ "id": "MAPSEC_DEWFORD_TOWN",
"name": "DEWFORD TOWN",
"x": 2,
"y": 14,
@@ -25,7 +25,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_LAVARIDGE_TOWN",
+ "id": "MAPSEC_LAVARIDGE_TOWN",
"name": "LAVARIDGE TOWN",
"x": 5,
"y": 3,
@@ -33,7 +33,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_FALLARBOR_TOWN",
+ "id": "MAPSEC_FALLARBOR_TOWN",
"name": "FALLARBOR TOWN",
"x": 3,
"y": 0,
@@ -41,7 +41,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_VERDANTURF_TOWN",
+ "id": "MAPSEC_VERDANTURF_TOWN",
"name": "VERDANTURF TOWN",
"x": 4,
"y": 6,
@@ -49,7 +49,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_PACIFIDLOG_TOWN",
+ "id": "MAPSEC_PACIFIDLOG_TOWN",
"name": "PACIFIDLOG TOWN",
"x": 17,
"y": 10,
@@ -57,7 +57,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_PETALBURG_CITY",
+ "id": "MAPSEC_PETALBURG_CITY",
"name": "PETALBURG CITY",
"x": 1,
"y": 9,
@@ -65,7 +65,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_SLATEPORT_CITY",
+ "id": "MAPSEC_SLATEPORT_CITY",
"name": "SLATEPORT CITY",
"x": 8,
"y": 10,
@@ -73,7 +73,7 @@
"height": 2
},
{
- "map_section": "MAPSEC_MAUVILLE_CITY",
+ "id": "MAPSEC_MAUVILLE_CITY",
"name": "MAUVILLE CITY",
"x": 8,
"y": 6,
@@ -81,7 +81,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_RUSTBORO_CITY",
+ "id": "MAPSEC_RUSTBORO_CITY",
"name": "RUSTBORO CITY",
"x": 0,
"y": 5,
@@ -89,7 +89,7 @@
"height": 2
},
{
- "map_section": "MAPSEC_FORTREE_CITY",
+ "id": "MAPSEC_FORTREE_CITY",
"name": "FORTREE CITY",
"x": 12,
"y": 0,
@@ -97,7 +97,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_LILYCOVE_CITY",
+ "id": "MAPSEC_LILYCOVE_CITY",
"name": "LILYCOVE CITY",
"x": 18,
"y": 3,
@@ -105,7 +105,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_MOSSDEEP_CITY",
+ "id": "MAPSEC_MOSSDEEP_CITY",
"name": "MOSSDEEP CITY",
"x": 24,
"y": 5,
@@ -113,7 +113,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_SOOTOPOLIS_CITY",
+ "id": "MAPSEC_SOOTOPOLIS_CITY",
"name": "SOOTOPOLIS CITY",
"x": 21,
"y": 7,
@@ -121,7 +121,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_EVER_GRANDE_CITY",
+ "id": "MAPSEC_EVER_GRANDE_CITY",
"name": "EVER GRANDE CITY",
"x": 27,
"y": 8,
@@ -129,7 +129,7 @@
"height": 2
},
{
- "map_section": "MAPSEC_ROUTE_101",
+ "id": "MAPSEC_ROUTE_101",
"name": "ROUTE 101",
"x": 4,
"y": 10,
@@ -137,7 +137,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_ROUTE_102",
+ "id": "MAPSEC_ROUTE_102",
"name": "ROUTE 102",
"x": 2,
"y": 9,
@@ -145,7 +145,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_ROUTE_103",
+ "id": "MAPSEC_ROUTE_103",
"name": "ROUTE 103",
"x": 4,
"y": 8,
@@ -153,7 +153,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_ROUTE_104",
+ "id": "MAPSEC_ROUTE_104",
"name": "ROUTE 104",
"x": 0,
"y": 7,
@@ -161,7 +161,7 @@
"height": 3
},
{
- "map_section": "MAPSEC_ROUTE_105",
+ "id": "MAPSEC_ROUTE_105",
"name": "ROUTE 105",
"x": 0,
"y": 10,
@@ -169,7 +169,7 @@
"height": 3
},
{
- "map_section": "MAPSEC_ROUTE_106",
+ "id": "MAPSEC_ROUTE_106",
"name": "ROUTE 106",
"x": 0,
"y": 13,
@@ -177,7 +177,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_ROUTE_107",
+ "id": "MAPSEC_ROUTE_107",
"name": "ROUTE 107",
"x": 3,
"y": 14,
@@ -185,7 +185,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_ROUTE_108",
+ "id": "MAPSEC_ROUTE_108",
"name": "ROUTE 108",
"x": 6,
"y": 14,
@@ -193,7 +193,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_ROUTE_109",
+ "id": "MAPSEC_ROUTE_109",
"name": "ROUTE 109",
"x": 8,
"y": 12,
@@ -201,7 +201,7 @@
"height": 3
},
{
- "map_section": "MAPSEC_ROUTE_110",
+ "id": "MAPSEC_ROUTE_110",
"name": "ROUTE 110",
"x": 8,
"y": 7,
@@ -209,7 +209,7 @@
"height": 3
},
{
- "map_section": "MAPSEC_ROUTE_111",
+ "id": "MAPSEC_ROUTE_111",
"name": "ROUTE 111",
"x": 8,
"y": 0,
@@ -217,7 +217,7 @@
"height": 6
},
{
- "map_section": "MAPSEC_ROUTE_112",
+ "id": "MAPSEC_ROUTE_112",
"name": "ROUTE 112",
"x": 6,
"y": 3,
@@ -225,7 +225,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_ROUTE_113",
+ "id": "MAPSEC_ROUTE_113",
"name": "ROUTE 113",
"x": 4,
"y": 0,
@@ -233,7 +233,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_ROUTE_114",
+ "id": "MAPSEC_ROUTE_114",
"name": "ROUTE 114",
"x": 1,
"y": 0,
@@ -241,7 +241,7 @@
"height": 3
},
{
- "map_section": "MAPSEC_ROUTE_115",
+ "id": "MAPSEC_ROUTE_115",
"name": "ROUTE 115",
"x": 0,
"y": 2,
@@ -249,7 +249,7 @@
"height": 3
},
{
- "map_section": "MAPSEC_ROUTE_116",
+ "id": "MAPSEC_ROUTE_116",
"name": "ROUTE 116",
"x": 1,
"y": 5,
@@ -257,7 +257,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_ROUTE_117",
+ "id": "MAPSEC_ROUTE_117",
"name": "ROUTE 117",
"x": 5,
"y": 6,
@@ -265,7 +265,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_ROUTE_118",
+ "id": "MAPSEC_ROUTE_118",
"name": "ROUTE 118",
"x": 10,
"y": 6,
@@ -273,7 +273,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_ROUTE_119",
+ "id": "MAPSEC_ROUTE_119",
"name": "ROUTE 119",
"x": 11,
"y": 0,
@@ -281,7 +281,7 @@
"height": 6
},
{
- "map_section": "MAPSEC_ROUTE_120",
+ "id": "MAPSEC_ROUTE_120",
"name": "ROUTE 120",
"x": 13,
"y": 0,
@@ -289,7 +289,7 @@
"height": 4
},
{
- "map_section": "MAPSEC_ROUTE_121",
+ "id": "MAPSEC_ROUTE_121",
"name": "ROUTE 121",
"x": 14,
"y": 3,
@@ -297,7 +297,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_ROUTE_122",
+ "id": "MAPSEC_ROUTE_122",
"name": "ROUTE 122",
"x": 16,
"y": 4,
@@ -305,7 +305,7 @@
"height": 2
},
{
- "map_section": "MAPSEC_ROUTE_123",
+ "id": "MAPSEC_ROUTE_123",
"name": "ROUTE 123",
"x": 12,
"y": 6,
@@ -313,7 +313,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_ROUTE_124",
+ "id": "MAPSEC_ROUTE_124",
"name": "ROUTE 124",
"x": 20,
"y": 3,
@@ -321,7 +321,7 @@
"height": 3
},
{
- "map_section": "MAPSEC_ROUTE_125",
+ "id": "MAPSEC_ROUTE_125",
"name": "ROUTE 125",
"x": 24,
"y": 3,
@@ -329,7 +329,7 @@
"height": 2
},
{
- "map_section": "MAPSEC_ROUTE_126",
+ "id": "MAPSEC_ROUTE_126",
"name": "ROUTE 126",
"x": 20,
"y": 6,
@@ -337,7 +337,7 @@
"height": 3
},
{
- "map_section": "MAPSEC_ROUTE_127",
+ "id": "MAPSEC_ROUTE_127",
"name": "ROUTE 127",
"x": 23,
"y": 6,
@@ -345,7 +345,7 @@
"height": 3
},
{
- "map_section": "MAPSEC_ROUTE_128",
+ "id": "MAPSEC_ROUTE_128",
"name": "ROUTE 128",
"x": 23,
"y": 9,
@@ -353,7 +353,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_ROUTE_129",
+ "id": "MAPSEC_ROUTE_129",
"name": "ROUTE 129",
"x": 24,
"y": 10,
@@ -361,7 +361,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_ROUTE_130",
+ "id": "MAPSEC_ROUTE_130",
"name": "ROUTE 130",
"x": 21,
"y": 10,
@@ -369,7 +369,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_ROUTE_131",
+ "id": "MAPSEC_ROUTE_131",
"name": "ROUTE 131",
"x": 18,
"y": 10,
@@ -377,7 +377,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_ROUTE_132",
+ "id": "MAPSEC_ROUTE_132",
"name": "ROUTE 132",
"x": 15,
"y": 10,
@@ -385,7 +385,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_ROUTE_133",
+ "id": "MAPSEC_ROUTE_133",
"name": "ROUTE 133",
"x": 12,
"y": 10,
@@ -393,7 +393,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_ROUTE_134",
+ "id": "MAPSEC_ROUTE_134",
"name": "ROUTE 134",
"x": 9,
"y": 10,
@@ -401,7 +401,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_UNDERWATER_124",
+ "id": "MAPSEC_UNDERWATER_124",
"name": "UNDERWATER",
"x": 20,
"y": 3,
@@ -409,7 +409,7 @@
"height": 3
},
{
- "map_section": "MAPSEC_UNDERWATER_126",
+ "id": "MAPSEC_UNDERWATER_126",
"name": "UNDERWATER",
"x": 20,
"y": 6,
@@ -417,7 +417,7 @@
"height": 3
},
{
- "map_section": "MAPSEC_UNDERWATER_127",
+ "id": "MAPSEC_UNDERWATER_127",
"name": "UNDERWATER",
"x": 23,
"y": 6,
@@ -425,7 +425,7 @@
"height": 3
},
{
- "map_section": "MAPSEC_UNDERWATER_128",
+ "id": "MAPSEC_UNDERWATER_128",
"name": "UNDERWATER",
"x": 23,
"y": 9,
@@ -433,7 +433,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_UNDERWATER_SOOTOPOLIS",
+ "id": "MAPSEC_UNDERWATER_SOOTOPOLIS",
"name": "UNDERWATER",
"x": 21,
"y": 7,
@@ -441,7 +441,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_GRANITE_CAVE",
+ "id": "MAPSEC_GRANITE_CAVE",
"name": "GRANITE CAVE",
"x": 1,
"y": 13,
@@ -449,7 +449,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_MT_CHIMNEY",
+ "id": "MAPSEC_MT_CHIMNEY",
"name": "MT. CHIMNEY",
"x": 6,
"y": 2,
@@ -457,7 +457,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_SAFARI_ZONE",
+ "id": "MAPSEC_SAFARI_ZONE",
"name": "SAFARI ZONE",
"x": 16,
"y": 2,
@@ -465,7 +465,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_BATTLE_FRONTIER",
+ "id": "MAPSEC_BATTLE_FRONTIER",
"name": "BATTLE FRONTIER",
"x": 22,
"y": 12,
@@ -473,7 +473,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_PETALBURG_WOODS",
+ "id": "MAPSEC_PETALBURG_WOODS",
"name": "PETALBURG WOODS",
"x": 0,
"y": 8,
@@ -481,7 +481,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_RUSTURF_TUNNEL",
+ "id": "MAPSEC_RUSTURF_TUNNEL",
"name": "RUSTURF TUNNEL",
"x": 2,
"y": 5,
@@ -489,7 +489,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_ABANDONED_SHIP",
+ "id": "MAPSEC_ABANDONED_SHIP",
"name": "ABANDONED SHIP",
"x": 6,
"y": 14,
@@ -497,7 +497,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_NEW_MAUVILLE",
+ "id": "MAPSEC_NEW_MAUVILLE",
"name": "NEW MAUVILLE",
"x": 8,
"y": 7,
@@ -505,7 +505,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_METEOR_FALLS",
+ "id": "MAPSEC_METEOR_FALLS",
"name": "METEOR FALLS",
"x": 0,
"y": 3,
@@ -513,7 +513,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_METEOR_FALLS2",
+ "id": "MAPSEC_METEOR_FALLS2",
"name": "METEOR FALLS",
"x": 1,
"y": 2,
@@ -521,7 +521,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_MT_PYRE",
+ "id": "MAPSEC_MT_PYRE",
"name": "MT. PYRE",
"x": 16,
"y": 4,
@@ -529,7 +529,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_AQUA_HIDEOUT_OLD",
+ "id": "MAPSEC_AQUA_HIDEOUT_OLD",
"name": "{AQUA} HIDEOUT",
"name_clone": true,
"x": 19,
@@ -538,7 +538,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_SHOAL_CAVE",
+ "id": "MAPSEC_SHOAL_CAVE",
"name": "SHOAL CAVE",
"x": 24,
"y": 4,
@@ -546,7 +546,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_SEAFLOOR_CAVERN",
+ "id": "MAPSEC_SEAFLOOR_CAVERN",
"name": "SEAFLOOR CAVERN",
"x": 24,
"y": 9,
@@ -554,7 +554,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_UNDERWATER_SEAFLOOR_CAVERN",
+ "id": "MAPSEC_UNDERWATER_SEAFLOOR_CAVERN",
"name": "UNDERWATER",
"x": 24,
"y": 9,
@@ -562,7 +562,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_VICTORY_ROAD",
+ "id": "MAPSEC_VICTORY_ROAD",
"name": "VICTORY ROAD",
"x": 27,
"y": 9,
@@ -570,7 +570,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_MIRAGE_ISLAND",
+ "id": "MAPSEC_MIRAGE_ISLAND",
"name": "MIRAGE ISLAND",
"x": 17,
"y": 10,
@@ -578,7 +578,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_CAVE_OF_ORIGIN",
+ "id": "MAPSEC_CAVE_OF_ORIGIN",
"name": "CAVE OF ORIGIN",
"x": 21,
"y": 7,
@@ -586,7 +586,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_SOUTHERN_ISLAND",
+ "id": "MAPSEC_SOUTHERN_ISLAND",
"name": "SOUTHERN ISLAND",
"x": 12,
"y": 14,
@@ -594,7 +594,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_FIERY_PATH",
+ "id": "MAPSEC_FIERY_PATH",
"name": "FIERY PATH",
"x": 6,
"y": 3,
@@ -602,7 +602,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_FIERY_PATH2",
+ "id": "MAPSEC_FIERY_PATH2",
"name": "FIERY PATH",
"x": 7,
"y": 3,
@@ -610,7 +610,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_JAGGED_PASS",
+ "id": "MAPSEC_JAGGED_PASS",
"name": "JAGGED PASS",
"x": 6,
"y": 3,
@@ -618,7 +618,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_JAGGED_PASS2",
+ "id": "MAPSEC_JAGGED_PASS2",
"name": "JAGGED PASS",
"x": 7,
"y": 2,
@@ -626,7 +626,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_SEALED_CHAMBER",
+ "id": "MAPSEC_SEALED_CHAMBER",
"name": "SEALED CHAMBER",
"x": 11,
"y": 10,
@@ -634,7 +634,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_UNDERWATER_SEALED_CHAMBER",
+ "id": "MAPSEC_UNDERWATER_SEALED_CHAMBER",
"name": "UNDERWATER",
"x": 11,
"y": 10,
@@ -642,7 +642,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_SCORCHED_SLAB",
+ "id": "MAPSEC_SCORCHED_SLAB",
"name": "SCORCHED SLAB",
"x": 13,
"y": 0,
@@ -650,7 +650,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_ISLAND_CAVE",
+ "id": "MAPSEC_ISLAND_CAVE",
"name": "ISLAND CAVE",
"x": 0,
"y": 10,
@@ -658,7 +658,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_DESERT_RUINS",
+ "id": "MAPSEC_DESERT_RUINS",
"name": "DESERT RUINS",
"x": 8,
"y": 3,
@@ -666,7 +666,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_ANCIENT_TOMB",
+ "id": "MAPSEC_ANCIENT_TOMB",
"name": "ANCIENT TOMB",
"x": 13,
"y": 2,
@@ -674,7 +674,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_INSIDE_OF_TRUCK",
+ "id": "MAPSEC_INSIDE_OF_TRUCK",
"name": "INSIDE OF TRUCK",
"x": 0,
"y": 0,
@@ -682,7 +682,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_SKY_PILLAR",
+ "id": "MAPSEC_SKY_PILLAR",
"name": "SKY PILLAR",
"x": 19,
"y": 10,
@@ -690,7 +690,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_SECRET_BASE",
+ "id": "MAPSEC_SECRET_BASE",
"name": "SECRET BASE",
"x": 0,
"y": 0,
@@ -698,7 +698,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_DYNAMIC",
+ "id": "MAPSEC_DYNAMIC",
"name": "",
"x": 0,
"y": 0,
@@ -706,7 +706,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_PALLET_TOWN",
+ "id": "MAPSEC_PALLET_TOWN",
"name": "PALLET TOWN",
"x": 0,
"y": 0,
@@ -714,7 +714,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_VIRIDIAN_CITY",
+ "id": "MAPSEC_VIRIDIAN_CITY",
"name": "VIRIDIAN CITY",
"x": 0,
"y": 0,
@@ -722,7 +722,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_PEWTER_CITY",
+ "id": "MAPSEC_PEWTER_CITY",
"name": "PEWTER CITY",
"x": 0,
"y": 0,
@@ -730,7 +730,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_CERULEAN_CITY",
+ "id": "MAPSEC_CERULEAN_CITY",
"name": "CERULEAN CITY",
"x": 0,
"y": 0,
@@ -738,7 +738,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_LAVENDER_TOWN",
+ "id": "MAPSEC_LAVENDER_TOWN",
"name": "LAVENDER TOWN",
"x": 0,
"y": 0,
@@ -746,7 +746,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_VERMILION_CITY",
+ "id": "MAPSEC_VERMILION_CITY",
"name": "VERMILION CITY",
"x": 0,
"y": 0,
@@ -754,7 +754,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_CELADON_CITY",
+ "id": "MAPSEC_CELADON_CITY",
"name": "CELADON CITY",
"x": 0,
"y": 0,
@@ -762,7 +762,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_FUCHSIA_CITY",
+ "id": "MAPSEC_FUCHSIA_CITY",
"name": "FUCHSIA CITY",
"x": 0,
"y": 0,
@@ -770,7 +770,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_CINNABAR_ISLAND",
+ "id": "MAPSEC_CINNABAR_ISLAND",
"name": "CINNABAR ISLAND",
"x": 0,
"y": 0,
@@ -778,7 +778,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_INDIGO_PLATEAU",
+ "id": "MAPSEC_INDIGO_PLATEAU",
"name": "INDIGO PLATEAU",
"x": 0,
"y": 0,
@@ -786,7 +786,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_SAFFRON_CITY",
+ "id": "MAPSEC_SAFFRON_CITY",
"name": "SAFFRON CITY",
"x": 0,
"y": 0,
@@ -794,7 +794,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_ROUTE_4_POKECENTER",
+ "id": "MAPSEC_ROUTE_4_POKECENTER",
"name": "ROUTE 4",
"name_clone": true,
"x": 0,
@@ -803,7 +803,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_ROUTE_10_POKECENTER",
+ "id": "MAPSEC_ROUTE_10_POKECENTER",
"name": "ROUTE 10",
"name_clone": true,
"x": 0,
@@ -812,7 +812,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_ROUTE_1",
+ "id": "MAPSEC_ROUTE_1",
"name": "ROUTE 1",
"x": 0,
"y": 0,
@@ -820,7 +820,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_ROUTE_2",
+ "id": "MAPSEC_ROUTE_2",
"name": "ROUTE 2",
"x": 0,
"y": 0,
@@ -828,7 +828,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_ROUTE_3",
+ "id": "MAPSEC_ROUTE_3",
"name": "ROUTE 3",
"x": 0,
"y": 0,
@@ -836,7 +836,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_ROUTE_4",
+ "id": "MAPSEC_ROUTE_4",
"name": "ROUTE 4",
"x": 0,
"y": 0,
@@ -844,7 +844,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_ROUTE_5",
+ "id": "MAPSEC_ROUTE_5",
"name": "ROUTE 5",
"x": 0,
"y": 0,
@@ -852,7 +852,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_ROUTE_6",
+ "id": "MAPSEC_ROUTE_6",
"name": "ROUTE 6",
"x": 0,
"y": 0,
@@ -860,7 +860,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_ROUTE_7",
+ "id": "MAPSEC_ROUTE_7",
"name": "ROUTE 7",
"x": 0,
"y": 0,
@@ -868,7 +868,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_ROUTE_8",
+ "id": "MAPSEC_ROUTE_8",
"name": "ROUTE 8",
"x": 0,
"y": 0,
@@ -876,7 +876,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_ROUTE_9",
+ "id": "MAPSEC_ROUTE_9",
"name": "ROUTE 9",
"x": 0,
"y": 0,
@@ -884,7 +884,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_ROUTE_10",
+ "id": "MAPSEC_ROUTE_10",
"name": "ROUTE 10",
"x": 0,
"y": 0,
@@ -892,7 +892,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_ROUTE_11",
+ "id": "MAPSEC_ROUTE_11",
"name": "ROUTE 11",
"x": 0,
"y": 0,
@@ -900,7 +900,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_ROUTE_12",
+ "id": "MAPSEC_ROUTE_12",
"name": "ROUTE 12",
"x": 0,
"y": 0,
@@ -908,7 +908,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_ROUTE_13",
+ "id": "MAPSEC_ROUTE_13",
"name": "ROUTE 13",
"x": 0,
"y": 0,
@@ -916,7 +916,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_ROUTE_14",
+ "id": "MAPSEC_ROUTE_14",
"name": "ROUTE 14",
"x": 0,
"y": 0,
@@ -924,7 +924,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_ROUTE_15",
+ "id": "MAPSEC_ROUTE_15",
"name": "ROUTE 15",
"x": 0,
"y": 0,
@@ -932,7 +932,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_ROUTE_16",
+ "id": "MAPSEC_ROUTE_16",
"name": "ROUTE 16",
"x": 0,
"y": 0,
@@ -940,7 +940,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_ROUTE_17",
+ "id": "MAPSEC_ROUTE_17",
"name": "ROUTE 17",
"x": 0,
"y": 0,
@@ -948,7 +948,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_ROUTE_18",
+ "id": "MAPSEC_ROUTE_18",
"name": "ROUTE 18",
"x": 0,
"y": 0,
@@ -956,7 +956,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_ROUTE_19",
+ "id": "MAPSEC_ROUTE_19",
"name": "ROUTE 19",
"x": 0,
"y": 0,
@@ -964,7 +964,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_ROUTE_20",
+ "id": "MAPSEC_ROUTE_20",
"name": "ROUTE 20",
"x": 0,
"y": 0,
@@ -972,7 +972,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_ROUTE_21",
+ "id": "MAPSEC_ROUTE_21",
"name": "ROUTE 21",
"x": 0,
"y": 0,
@@ -980,7 +980,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_ROUTE_22",
+ "id": "MAPSEC_ROUTE_22",
"name": "ROUTE 22",
"x": 0,
"y": 0,
@@ -988,7 +988,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_ROUTE_23",
+ "id": "MAPSEC_ROUTE_23",
"name": "ROUTE 23",
"x": 0,
"y": 0,
@@ -996,7 +996,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_ROUTE_24",
+ "id": "MAPSEC_ROUTE_24",
"name": "ROUTE 24",
"x": 0,
"y": 0,
@@ -1004,7 +1004,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_ROUTE_25",
+ "id": "MAPSEC_ROUTE_25",
"name": "ROUTE 25",
"x": 0,
"y": 0,
@@ -1012,7 +1012,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_VIRIDIAN_FOREST",
+ "id": "MAPSEC_VIRIDIAN_FOREST",
"name": "VIRIDIAN FOREST",
"x": 0,
"y": 0,
@@ -1020,7 +1020,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_MT_MOON",
+ "id": "MAPSEC_MT_MOON",
"name": "MT. MOON",
"x": 0,
"y": 0,
@@ -1028,7 +1028,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_S_S_ANNE",
+ "id": "MAPSEC_S_S_ANNE",
"name": "S.S. ANNE",
"x": 0,
"y": 0,
@@ -1036,7 +1036,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_UNDERGROUND_PATH",
+ "id": "MAPSEC_UNDERGROUND_PATH",
"name": "UNDERGROUND PATH",
"x": 0,
"y": 0,
@@ -1044,7 +1044,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_UNDERGROUND_PATH_2",
+ "id": "MAPSEC_UNDERGROUND_PATH_2",
"name": "UNDERGROUND PATH",
"name_clone": true,
"x": 0,
@@ -1053,7 +1053,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_DIGLETTS_CAVE",
+ "id": "MAPSEC_DIGLETTS_CAVE",
"name": "DIGLETT'S CAVE",
"x": 0,
"y": 0,
@@ -1061,7 +1061,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_KANTO_VICTORY_ROAD",
+ "id": "MAPSEC_KANTO_VICTORY_ROAD",
"name": "VICTORY ROAD",
"name_clone": true,
"x": 0,
@@ -1070,7 +1070,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_ROCKET_HIDEOUT",
+ "id": "MAPSEC_ROCKET_HIDEOUT",
"name": "ROCKET HIDEOUT",
"x": 0,
"y": 0,
@@ -1078,7 +1078,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_SILPH_CO",
+ "id": "MAPSEC_SILPH_CO",
"name": "SILPH CO.",
"x": 0,
"y": 0,
@@ -1086,7 +1086,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_POKEMON_MANSION",
+ "id": "MAPSEC_POKEMON_MANSION",
"name": "POKéMON MANSION",
"x": 0,
"y": 0,
@@ -1094,7 +1094,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_KANTO_SAFARI_ZONE",
+ "id": "MAPSEC_KANTO_SAFARI_ZONE",
"name": "SAFARI ZONE",
"name_clone": true,
"x": 0,
@@ -1103,7 +1103,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_POKEMON_LEAGUE",
+ "id": "MAPSEC_POKEMON_LEAGUE",
"name": "POKéMON LEAGUE",
"x": 0,
"y": 0,
@@ -1111,7 +1111,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_ROCK_TUNNEL",
+ "id": "MAPSEC_ROCK_TUNNEL",
"name": "ROCK TUNNEL",
"x": 0,
"y": 0,
@@ -1119,7 +1119,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_SEAFOAM_ISLANDS",
+ "id": "MAPSEC_SEAFOAM_ISLANDS",
"name": "SEAFOAM ISLANDS",
"x": 0,
"y": 0,
@@ -1127,7 +1127,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_POKEMON_TOWER",
+ "id": "MAPSEC_POKEMON_TOWER",
"name": "POKéMON TOWER",
"x": 0,
"y": 0,
@@ -1135,7 +1135,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_CERULEAN_CAVE",
+ "id": "MAPSEC_CERULEAN_CAVE",
"name": "CERULEAN CAVE",
"x": 0,
"y": 0,
@@ -1143,7 +1143,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_POWER_PLANT",
+ "id": "MAPSEC_POWER_PLANT",
"name": "POWER PLANT",
"x": 0,
"y": 0,
@@ -1151,7 +1151,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_ONE_ISLAND",
+ "id": "MAPSEC_ONE_ISLAND",
"name": "ONE ISLAND",
"x": 0,
"y": 0,
@@ -1159,7 +1159,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_TWO_ISLAND",
+ "id": "MAPSEC_TWO_ISLAND",
"name": "TWO ISLAND",
"x": 0,
"y": 0,
@@ -1167,7 +1167,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_THREE_ISLAND",
+ "id": "MAPSEC_THREE_ISLAND",
"name": "THREE ISLAND",
"x": 0,
"y": 0,
@@ -1175,7 +1175,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_FOUR_ISLAND",
+ "id": "MAPSEC_FOUR_ISLAND",
"name": "FOUR ISLAND",
"x": 0,
"y": 0,
@@ -1183,7 +1183,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_FIVE_ISLAND",
+ "id": "MAPSEC_FIVE_ISLAND",
"name": "FIVE ISLAND",
"x": 0,
"y": 0,
@@ -1191,7 +1191,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_SEVEN_ISLAND",
+ "id": "MAPSEC_SEVEN_ISLAND",
"name": "SEVEN ISLAND",
"x": 0,
"y": 0,
@@ -1199,7 +1199,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_SIX_ISLAND",
+ "id": "MAPSEC_SIX_ISLAND",
"name": "SIX ISLAND",
"x": 0,
"y": 0,
@@ -1207,7 +1207,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_KINDLE_ROAD",
+ "id": "MAPSEC_KINDLE_ROAD",
"name": "KINDLE ROAD",
"x": 0,
"y": 0,
@@ -1215,7 +1215,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_TREASURE_BEACH",
+ "id": "MAPSEC_TREASURE_BEACH",
"name": "TREASURE BEACH",
"x": 0,
"y": 0,
@@ -1223,7 +1223,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_CAPE_BRINK",
+ "id": "MAPSEC_CAPE_BRINK",
"name": "CAPE BRINK",
"x": 0,
"y": 0,
@@ -1231,7 +1231,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_BOND_BRIDGE",
+ "id": "MAPSEC_BOND_BRIDGE",
"name": "BOND BRIDGE",
"x": 0,
"y": 0,
@@ -1239,7 +1239,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_THREE_ISLE_PORT",
+ "id": "MAPSEC_THREE_ISLE_PORT",
"name": "THREE ISLE PORT",
"x": 0,
"y": 0,
@@ -1247,7 +1247,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_SEVII_ISLE_6",
+ "id": "MAPSEC_SEVII_ISLE_6",
"name": "SEVII ISLE 6",
"x": 0,
"y": 0,
@@ -1255,7 +1255,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_SEVII_ISLE_7",
+ "id": "MAPSEC_SEVII_ISLE_7",
"name": "SEVII ISLE 7",
"x": 0,
"y": 0,
@@ -1263,7 +1263,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_SEVII_ISLE_8",
+ "id": "MAPSEC_SEVII_ISLE_8",
"name": "SEVII ISLE 8",
"x": 0,
"y": 0,
@@ -1271,7 +1271,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_SEVII_ISLE_9",
+ "id": "MAPSEC_SEVII_ISLE_9",
"name": "SEVII ISLE 9",
"x": 0,
"y": 0,
@@ -1279,7 +1279,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_RESORT_GORGEOUS",
+ "id": "MAPSEC_RESORT_GORGEOUS",
"name": "RESORT GORGEOUS",
"x": 0,
"y": 0,
@@ -1287,7 +1287,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_WATER_LABYRINTH",
+ "id": "MAPSEC_WATER_LABYRINTH",
"name": "WATER LABYRINTH",
"x": 0,
"y": 0,
@@ -1295,7 +1295,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_FIVE_ISLE_MEADOW",
+ "id": "MAPSEC_FIVE_ISLE_MEADOW",
"name": "FIVE ISLE MEADOW",
"x": 0,
"y": 0,
@@ -1303,7 +1303,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_MEMORIAL_PILLAR",
+ "id": "MAPSEC_MEMORIAL_PILLAR",
"name": "MEMORIAL PILLAR",
"x": 0,
"y": 0,
@@ -1311,7 +1311,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_OUTCAST_ISLAND",
+ "id": "MAPSEC_OUTCAST_ISLAND",
"name": "OUTCAST ISLAND",
"x": 0,
"y": 0,
@@ -1319,7 +1319,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_GREEN_PATH",
+ "id": "MAPSEC_GREEN_PATH",
"name": "GREEN PATH",
"x": 0,
"y": 0,
@@ -1327,7 +1327,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_WATER_PATH",
+ "id": "MAPSEC_WATER_PATH",
"name": "WATER PATH",
"x": 0,
"y": 0,
@@ -1335,7 +1335,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_RUIN_VALLEY",
+ "id": "MAPSEC_RUIN_VALLEY",
"name": "RUIN VALLEY",
"x": 0,
"y": 0,
@@ -1343,7 +1343,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_TRAINER_TOWER",
+ "id": "MAPSEC_TRAINER_TOWER",
"name": "TRAINER TOWER",
"x": 0,
"y": 0,
@@ -1351,7 +1351,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_CANYON_ENTRANCE",
+ "id": "MAPSEC_CANYON_ENTRANCE",
"name": "CANYON ENTRANCE",
"x": 0,
"y": 0,
@@ -1359,7 +1359,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_SEVAULT_CANYON",
+ "id": "MAPSEC_SEVAULT_CANYON",
"name": "SEVAULT CANYON",
"x": 0,
"y": 0,
@@ -1367,7 +1367,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_TANOBY_RUINS",
+ "id": "MAPSEC_TANOBY_RUINS",
"name": "TANOBY RUINS",
"x": 0,
"y": 0,
@@ -1375,7 +1375,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_SEVII_ISLE_22",
+ "id": "MAPSEC_SEVII_ISLE_22",
"name": "SEVII ISLE 22",
"x": 0,
"y": 0,
@@ -1383,7 +1383,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_SEVII_ISLE_23",
+ "id": "MAPSEC_SEVII_ISLE_23",
"name": "SEVII ISLE 23",
"x": 0,
"y": 0,
@@ -1391,7 +1391,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_SEVII_ISLE_24",
+ "id": "MAPSEC_SEVII_ISLE_24",
"name": "SEVII ISLE 24",
"x": 0,
"y": 0,
@@ -1399,7 +1399,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_NAVEL_ROCK_FRLG",
+ "id": "MAPSEC_NAVEL_ROCK_FRLG",
"name": "NAVEL ROCK",
"x": 0,
"y": 0,
@@ -1407,7 +1407,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_MT_EMBER",
+ "id": "MAPSEC_MT_EMBER",
"name": "MT. EMBER",
"x": 0,
"y": 0,
@@ -1415,7 +1415,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_BERRY_FOREST",
+ "id": "MAPSEC_BERRY_FOREST",
"name": "BERRY FOREST",
"x": 0,
"y": 0,
@@ -1423,7 +1423,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_ICEFALL_CAVE",
+ "id": "MAPSEC_ICEFALL_CAVE",
"name": "ICEFALL CAVE",
"x": 0,
"y": 0,
@@ -1431,7 +1431,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_ROCKET_WAREHOUSE",
+ "id": "MAPSEC_ROCKET_WAREHOUSE",
"name": "ROCKET WAREHOUSE",
"x": 0,
"y": 0,
@@ -1439,7 +1439,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_TRAINER_TOWER_2",
+ "id": "MAPSEC_TRAINER_TOWER_2",
"name": "TRAINER TOWER",
"name_clone": true,
"x": 0,
@@ -1448,7 +1448,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_DOTTED_HOLE",
+ "id": "MAPSEC_DOTTED_HOLE",
"name": "DOTTED HOLE",
"x": 0,
"y": 0,
@@ -1456,7 +1456,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_LOST_CAVE",
+ "id": "MAPSEC_LOST_CAVE",
"name": "LOST CAVE",
"x": 0,
"y": 0,
@@ -1464,7 +1464,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_PATTERN_BUSH",
+ "id": "MAPSEC_PATTERN_BUSH",
"name": "PATTERN BUSH",
"x": 0,
"y": 0,
@@ -1472,7 +1472,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_ALTERING_CAVE_FRLG",
+ "id": "MAPSEC_ALTERING_CAVE_FRLG",
"name": "ALTERING CAVE",
"x": 0,
"y": 0,
@@ -1480,7 +1480,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_TANOBY_CHAMBERS",
+ "id": "MAPSEC_TANOBY_CHAMBERS",
"name": "TANOBY CHAMBERS",
"x": 0,
"y": 0,
@@ -1488,7 +1488,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_THREE_ISLE_PATH",
+ "id": "MAPSEC_THREE_ISLE_PATH",
"name": "THREE ISLE PATH",
"x": 0,
"y": 0,
@@ -1496,7 +1496,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_TANOBY_KEY",
+ "id": "MAPSEC_TANOBY_KEY",
"name": "TANOBY KEY",
"x": 0,
"y": 0,
@@ -1504,7 +1504,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_BIRTH_ISLAND_FRLG",
+ "id": "MAPSEC_BIRTH_ISLAND_FRLG",
"name": "BIRTH ISLAND",
"x": 0,
"y": 0,
@@ -1512,7 +1512,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_MONEAN_CHAMBER",
+ "id": "MAPSEC_MONEAN_CHAMBER",
"name": "MONEAN CHAMBER",
"x": 0,
"y": 0,
@@ -1520,7 +1520,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_LIPTOO_CHAMBER",
+ "id": "MAPSEC_LIPTOO_CHAMBER",
"name": "LIPTOO CHAMBER",
"x": 0,
"y": 0,
@@ -1528,7 +1528,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_WEEPTH_CHAMBER",
+ "id": "MAPSEC_WEEPTH_CHAMBER",
"name": "WEEPTH CHAMBER",
"x": 0,
"y": 0,
@@ -1536,7 +1536,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_DILFORD_CHAMBER",
+ "id": "MAPSEC_DILFORD_CHAMBER",
"name": "DILFORD CHAMBER",
"x": 0,
"y": 0,
@@ -1544,7 +1544,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_SCUFIB_CHAMBER",
+ "id": "MAPSEC_SCUFIB_CHAMBER",
"name": "SCUFIB CHAMBER",
"x": 0,
"y": 0,
@@ -1552,7 +1552,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_RIXY_CHAMBER",
+ "id": "MAPSEC_RIXY_CHAMBER",
"name": "RIXY CHAMBER",
"x": 0,
"y": 0,
@@ -1560,7 +1560,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_VIAPOIS_CHAMBER",
+ "id": "MAPSEC_VIAPOIS_CHAMBER",
"name": "VIAPOIS CHAMBER",
"x": 0,
"y": 0,
@@ -1568,7 +1568,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_EMBER_SPA",
+ "id": "MAPSEC_EMBER_SPA",
"name": "EMBER SPA",
"x": 0,
"y": 0,
@@ -1576,7 +1576,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_SPECIAL_AREA",
+ "id": "MAPSEC_SPECIAL_AREA",
"name": "SPECIAL AREA",
"x": 0,
"y": 0,
@@ -1584,7 +1584,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_AQUA_HIDEOUT",
+ "id": "MAPSEC_AQUA_HIDEOUT",
"name": "AQUA HIDEOUT",
"x": 19,
"y": 3,
@@ -1592,7 +1592,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_MAGMA_HIDEOUT",
+ "id": "MAPSEC_MAGMA_HIDEOUT",
"name": "MAGMA HIDEOUT",
"x": 6,
"y": 3,
@@ -1600,7 +1600,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_MIRAGE_TOWER",
+ "id": "MAPSEC_MIRAGE_TOWER",
"name": "MIRAGE TOWER",
"x": 8,
"y": 2,
@@ -1608,7 +1608,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_BIRTH_ISLAND",
+ "id": "MAPSEC_BIRTH_ISLAND",
"name": "BIRTH ISLAND",
"x": 0,
"y": 0,
@@ -1616,7 +1616,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_FARAWAY_ISLAND",
+ "id": "MAPSEC_FARAWAY_ISLAND",
"name": "FARAWAY ISLAND",
"x": 0,
"y": 0,
@@ -1624,7 +1624,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_ARTISAN_CAVE",
+ "id": "MAPSEC_ARTISAN_CAVE",
"name": "ARTISAN CAVE",
"x": 22,
"y": 12,
@@ -1632,7 +1632,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_MARINE_CAVE",
+ "id": "MAPSEC_MARINE_CAVE",
"name": "MARINE CAVE",
"x": 0,
"y": 0,
@@ -1640,7 +1640,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_UNDERWATER_MARINE_CAVE",
+ "id": "MAPSEC_UNDERWATER_MARINE_CAVE",
"name": "UNDERWATER",
"x": 0,
"y": 0,
@@ -1648,7 +1648,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_TERRA_CAVE",
+ "id": "MAPSEC_TERRA_CAVE",
"name": "TERRA CAVE",
"x": 0,
"y": 0,
@@ -1656,7 +1656,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_UNDERWATER_105",
+ "id": "MAPSEC_UNDERWATER_105",
"name": "UNDERWATER",
"x": 0,
"y": 10,
@@ -1664,7 +1664,7 @@
"height": 3
},
{
- "map_section": "MAPSEC_UNDERWATER_125",
+ "id": "MAPSEC_UNDERWATER_125",
"name": "UNDERWATER",
"x": 24,
"y": 3,
@@ -1672,7 +1672,7 @@
"height": 2
},
{
- "map_section": "MAPSEC_UNDERWATER_129",
+ "id": "MAPSEC_UNDERWATER_129",
"name": "UNDERWATER",
"x": 24,
"y": 10,
@@ -1680,7 +1680,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_DESERT_UNDERPASS",
+ "id": "MAPSEC_DESERT_UNDERPASS",
"name": "DESERT UNDERPASS",
"x": 2,
"y": 0,
@@ -1688,7 +1688,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_ALTERING_CAVE",
+ "id": "MAPSEC_ALTERING_CAVE",
"name": "ALTERING CAVE",
"x": 6,
"y": 8,
@@ -1696,7 +1696,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_NAVEL_ROCK",
+ "id": "MAPSEC_NAVEL_ROCK",
"name": "NAVEL ROCK",
"x": 0,
"y": 0,
@@ -1704,7 +1704,7 @@
"height": 1
},
{
- "map_section": "MAPSEC_TRAINER_HILL",
+ "id": "MAPSEC_TRAINER_HILL",
"name": "TRAINER HILL",
"x": 8,
"y": 4,
diff --git a/src/data/region_map/region_map_sections.json.txt b/src/data/region_map/region_map_sections.json.txt
index e9c372cb54..b73f992d6d 100644
--- a/src/data/region_map/region_map_sections.json.txt
+++ b/src/data/region_map/region_map_sections.json.txt
@@ -3,21 +3,25 @@
#define GUARD_DATA_REGION_MAP_REGION_MAP_ENTRIES_H
## for map_section in map_sections
-{% if isEmptyString(getVar(map_section.name)) and not existsIn(map_section, "name_clone") %}{{ setVar(map_section.name, map_section.map_section) }}{% endif %}
+{% if existsIn(map_section, "name") and isEmptyString(getVar(map_section.name)) and not existsIn(map_section, "name_clone") %}{{ setVar(map_section.name, map_section.id) }}{% endif %}
## endfor
## for map_section in map_sections
-{% if getVar(map_section.name) == map_section.map_section %}
+{% if existsIn(map_section, "name") %}
+{% if getVar(map_section.name) == map_section.id %}
static const u8 sMapName_{{ cleanString(map_section.name) }}[] = _("{{ map_section.name }}");
{% endif %}
{% if existsIn(map_section, "name_clone") %}
static const u8 sMapName_{{ cleanString(map_section.name) }}_Clone[] = _("{{ map_section.name }}");
{% endif %}
+{% endif %}
## endfor
const struct RegionMapLocation gRegionMapEntries[] = {
## for map_section in map_sections
- [{{ map_section.map_section }}] = { {{ map_section.x }}, {{ map_section.y }}, {{ map_section.width }}, {{ map_section.height }}, sMapName_{{ cleanString(map_section.name) }}{% if existsIn(map_section, "name_clone") %}_Clone{% endif %} },
+{% if existsIn(map_section, "x") and existsIn(map_section, "y") and existsIn(map_section, "width") and existsIn(map_section, "height") and existsIn(map_section, "name") %}
+ [{{ map_section.id }}] = { {{ map_section.x }}, {{ map_section.y }}, {{ map_section.width }}, {{ map_section.height }}, sMapName_{{ cleanString(map_section.name) }}{% if existsIn(map_section, "name_clone") %}_Clone{% endif %} },
+{% endif %}
## endfor
};
diff --git a/src/data/tilesets/headers.h b/src/data/tilesets/headers.h
index 2401b65309..fb763892f5 100644
--- a/src/data/tilesets/headers.h
+++ b/src/data/tilesets/headers.h
@@ -641,8 +641,8 @@ const struct Tileset gTileset_SecretBase =
.callback = NULL,
};
-const struct Tileset * const gTilesetPointer_SecretBase = &gTileset_SecretBase;
-const struct Tileset * const gTilesetPointer_SecretBaseRedCave = &gTileset_SecretBaseRedCave;
+const struct Tileset *const gTilesetPointer_SecretBase = &gTileset_SecretBase;
+const struct Tileset *const gTilesetPointer_SecretBaseRedCave = &gTileset_SecretBaseRedCave;
const struct Tileset gTileset_EliteFour =
{
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/data/wild_encounters.json.txt b/src/data/wild_encounters.json.txt
index 20ac1c7889..8ae70efc6e 100755
--- a/src/data/wild_encounters.json.txt
+++ b/src/data/wild_encounters.json.txt
@@ -81,8 +81,8 @@ const struct WildPokemonHeader {{ wild_encounter_group.label }}[] =
{
## for encounter in wild_encounter_group.encounters
{
- .mapGroup = {% if wild_encounter_group.for_maps %}MAP_GROUP({{ removePrefix(encounter.map, "MAP_") }}){% else %}0{% endif %},
- .mapNum = {% if wild_encounter_group.for_maps %}MAP_NUM({{ removePrefix(encounter.map, "MAP_") }}){% else %}{{ loop.index1 }}{% endif %},
+ .mapGroup = {% if wild_encounter_group.for_maps %}MAP_GROUP({{ encounter.map }}){% else %}0{% endif %},
+ .mapNum = {% if wild_encounter_group.for_maps %}MAP_NUM({{ encounter.map }}){% else %}{{ loop.index1 }}{% endif %},
.landMonsInfo = {% if existsIn(encounter, "land_mons") %}&{{ encounter.base_label }}_LandMonsInfo{% else %}NULL{% endif %},
.waterMonsInfo = {% if existsIn(encounter, "water_mons") %}&{{ encounter.base_label }}_WaterMonsInfo{% else %}NULL{% endif %},
.rockSmashMonsInfo = {% if existsIn(encounter, "rock_smash_mons") %}&{{ encounter.base_label }}_RockSmashMonsInfo{% else %}NULL{% endif %},
@@ -91,8 +91,8 @@ const struct WildPokemonHeader {{ wild_encounter_group.label }}[] =
},
## endfor
{
- .mapGroup = MAP_GROUP(UNDEFINED),
- .mapNum = MAP_NUM(UNDEFINED),
+ .mapGroup = MAP_GROUP(MAP_UNDEFINED),
+ .mapNum = MAP_NUM(MAP_UNDEFINED),
.landMonsInfo = NULL,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = NULL,
diff --git a/src/datetime.c b/src/datetime.c
index 1f02813b69..fbbb3ea6b7 100644
--- a/src/datetime.c
+++ b/src/datetime.c
@@ -44,7 +44,7 @@ void DateTime_AddDays(struct DateTime *dateTime, u32 days)
void DateTime_AddHours(struct DateTime *dateTime, u32 hours)
{
u32 days = 0;
-
+
dateTime->hour += hours;
while (dateTime->hour >= HOURS_PER_DAY)
{
diff --git a/src/daycare.c b/src/daycare.c
index bedaf35dd2..e2f6f8f070 100644
--- a/src/daycare.c
+++ b/src/daycare.c
@@ -537,7 +537,7 @@ static s32 GetParentToInheritNature(struct DayCare *daycare)
for (i = 0; i < DAYCARE_MON_COUNT; i++)
{
- if (ItemId_GetHoldEffect(GetBoxMonData(&daycare->mons[i].mon, MON_DATA_HELD_ITEM)) == HOLD_EFFECT_PREVENT_EVOLVE
+ if (GetItemHoldEffect(GetBoxMonData(&daycare->mons[i].mon, MON_DATA_HELD_ITEM)) == HOLD_EFFECT_PREVENT_EVOLVE
&& (P_NATURE_INHERITANCE != GEN_3 || GetBoxMonGender(&daycare->mons[i].mon) == MON_FEMALE || IS_DITTO(GetBoxMonData(&daycare->mons[i].mon, MON_DATA_SPECIES))))
{
slot = i;
@@ -627,26 +627,26 @@ static void InheritIVs(struct Pokemon *egg, struct DayCare *daycare)
}
start = 0;
- if (ItemId_GetHoldEffect(motherItem) == HOLD_EFFECT_POWER_ITEM &&
- ItemId_GetHoldEffect(fatherItem) == HOLD_EFFECT_POWER_ITEM)
+ if (GetItemHoldEffect(motherItem) == HOLD_EFFECT_POWER_ITEM &&
+ GetItemHoldEffect(fatherItem) == HOLD_EFFECT_POWER_ITEM)
{
whichParents[0] = Random() % DAYCARE_MON_COUNT;
- selectedIvs[0] = ItemId_GetSecondaryId(
+ selectedIvs[0] = GetItemSecondaryId(
GetBoxMonData(&daycare->mons[whichParents[0]].mon, MON_DATA_HELD_ITEM));
RemoveIVIndexFromList(availableIVs, selectedIvs[0]);
start++;
}
- else if (ItemId_GetHoldEffect(motherItem) == HOLD_EFFECT_POWER_ITEM)
+ else if (GetItemHoldEffect(motherItem) == HOLD_EFFECT_POWER_ITEM)
{
whichParents[0] = 0;
- selectedIvs[0] = ItemId_GetSecondaryId(motherItem);
+ selectedIvs[0] = GetItemSecondaryId(motherItem);
RemoveIVIndexFromList(availableIVs, selectedIvs[0]);
start++;
}
- else if (ItemId_GetHoldEffect(fatherItem) == HOLD_EFFECT_POWER_ITEM)
+ else if (GetItemHoldEffect(fatherItem) == HOLD_EFFECT_POWER_ITEM)
{
whichParents[0] = 1;
- selectedIvs[0] = ItemId_GetSecondaryId(fatherItem);
+ selectedIvs[0] = GetItemSecondaryId(fatherItem);
RemoveIVIndexFromList(availableIVs, selectedIvs[0]);
start++;
}
@@ -1019,8 +1019,8 @@ static u16 DetermineEggSpeciesAndParentSlots(struct DayCare *daycare, u8 *parent
motherEggSpecies = GetEggSpecies(species[parentSlots[0]]);
fatherEggSpecies = GetEggSpecies(species[parentSlots[1]]);
- hasMotherEverstone = ItemId_GetHoldEffect(GetBoxMonData(&daycare->mons[parentSlots[0]].mon, MON_DATA_HELD_ITEM)) == HOLD_EFFECT_PREVENT_EVOLVE;
- hasFatherEverstone = ItemId_GetHoldEffect(GetBoxMonData(&daycare->mons[parentSlots[1]].mon, MON_DATA_HELD_ITEM)) == HOLD_EFFECT_PREVENT_EVOLVE;
+ hasMotherEverstone = GetItemHoldEffect(GetBoxMonData(&daycare->mons[parentSlots[0]].mon, MON_DATA_HELD_ITEM)) == HOLD_EFFECT_PREVENT_EVOLVE;
+ hasFatherEverstone = GetItemHoldEffect(GetBoxMonData(&daycare->mons[parentSlots[1]].mon, MON_DATA_HELD_ITEM)) == HOLD_EFFECT_PREVENT_EVOLVE;
motherIsForeign = IsSpeciesForeignRegionalForm(motherEggSpecies, currentRegion);
fatherIsForeign = IsSpeciesForeignRegionalForm(fatherEggSpecies, currentRegion);
diff --git a/src/debug.c b/src/debug.c
index 147246ec1a..5a585ef62d 100644
--- a/src/debug.c
+++ b/src/debug.c
@@ -78,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,
};
@@ -89,21 +91,13 @@ 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_TIME_MENU,
DEBUG_UTIL_MENU_ITEM_STEVEN_MULTI // Please keep this at the bottom <3
};
@@ -113,6 +107,8 @@ enum TimeMenuDebugMenu
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
@@ -120,7 +116,7 @@ enum TimeMenuTimeOfDay
DEBUG_TIME_MENU_ITEM_MORNING,
DEBUG_TIME_MENU_ITEM_DAY,
DEBUG_TIME_MENU_ITEM_EVENING,
- DEBUG_TIME_MENU_ITEM_NIGHT,
+ DEBUG_TIME_MENU_ITEM_NIGHT,
};
enum TimeMenuWeekdays
@@ -271,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
@@ -367,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);
@@ -385,19 +397,13 @@ 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);
@@ -489,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[];
@@ -576,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}");
@@ -621,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},
};
@@ -632,30 +647,24 @@ 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},
- [DEBUG_UTIL_MENU_ITEM_TIME_MENU] = {COMPOUND_STRING("Time Menu"), DEBUG_UTIL_MENU_ITEM_TIME_MENU},
};
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_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[] =
@@ -814,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) =
@@ -822,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
};
@@ -833,22 +858,14 @@ 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,
- [DEBUG_UTIL_MENU_ITEM_TIME_MENU] = DebugAction_Util_OpenTimeMenu,
};
static void (*const sDebugMenu_Actions_PCBag[])(u8) =
@@ -947,6 +964,8 @@ static void (*const sDebugMenu_Actions_TimeMenu[])(u8) =
[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) =
@@ -968,6 +987,20 @@ static void (*const sDebugMenu_Actions_TimeMenu_Weekdays[])(u8) =
[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 =
@@ -1139,6 +1172,20 @@ static const struct ListMenuTemplate sDebugMenu_ListTemplate_TimeMenu_Weekdays =
.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)
@@ -1586,7 +1633,7 @@ static void DebugTask_HandleMenuInput_Scripts(u8 taskId)
static void DebugTask_HandleMenuInput_TimeMenu(u8 taskId)
{
- DebugTask_HandleMenuInput_General(taskId, sDebugMenu_Actions_TimeMenu, DebugTask_HandleMenuInput_Main, sDebugMenu_ListTemplate_Main);
+ DebugTask_HandleMenuInput_General(taskId, sDebugMenu_Actions_TimeMenu, DebugTask_HandleMenuInput_Utilities, sDebugMenu_ListTemplate_Utilities);
}
static void DebugTask_HandleMenuInput_TimeMenu_TimesOfDay(u8 taskId)
@@ -1806,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)
@@ -1859,26 +1916,46 @@ static void DebugAction_Util_BerryFunctions(u8 taskId)
static void DebugAction_Util_OpenTimeMenu(u8 taskId)
{
- Debug_DestroyMenu_Full(taskId);
+ Debug_DestroyMenu(taskId);
Debug_ShowMenu(DebugTask_HandleMenuInput_TimeMenu, sDebugMenu_ListTemplate_TimeMenu);
}
static void DebugAction_TimeMenu_TimesOfDay(u8 taskId)
{
- Debug_DestroyMenu_Full(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)
{
- Debug_DestroyMenu_Full(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);
}
// *******************************
@@ -2082,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);
}
@@ -2135,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();
@@ -2236,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);
}
@@ -2252,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;
@@ -2267,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);
@@ -2284,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();
@@ -2315,7 +2392,6 @@ void BufferExpansionVersion(struct ScriptContext *ctx)
static void DebugAction_TimeMenu_PrintTime(u8 taskId)
{
- Debug_DestroyMenu_Full(taskId);
LockPlayerFieldControls();
Debug_DestroyMenu_Full_Script(taskId, Debug_EventScript_TellTheTime);
}
@@ -2341,7 +2417,6 @@ void DebugMenu_CalculateTime(struct ScriptContext *ctx)
static void DebugAction_TimeMenu_PrintTimeOfDay(u8 taskId)
{
- Debug_DestroyMenu_Full(taskId);
LockPlayerFieldControls();
Debug_DestroyMenu_Full_Script(taskId, Debug_EventScript_PrintTimeOfDay);
}
@@ -3066,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))
@@ -3086,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;
}
@@ -3104,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))
@@ -3136,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;
}
}
@@ -3156,20 +3236,23 @@ static void DebugAction_Give_Pokemon_SelectLevel(u8 taskId)
}
}
-static void DebugAction_Give_Pokemon_SelectShiny(u8 taskId)
+static void Debug_Display_Nature(u32 natureId, u32 digit, u8 windowId)
{
- static const u8 *txtStr;
+ 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)
+{
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))
@@ -3177,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))
@@ -3195,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))
@@ -3214,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;
}
@@ -3250,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;
@@ -3275,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))
@@ -3376,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))
@@ -3407,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))
@@ -3776,7 +3831,7 @@ static void DebugAction_Give_DayCareEgg(u8 taskId)
static void DebugAction_TimeMenu_ChangeTimeOfDay(u8 taskId)
{
u32 input = ListMenu_ProcessInput(gTasks[taskId].tMenuTaskId);
-
+
DebugAction_DestroyExtraWindow(taskId);
switch (input)
{
@@ -3808,7 +3863,7 @@ static void DebugAction_TimeMenu_ChangeWeekdays(u8 taskId)
{
case DEBUG_TIME_MENU_ITEM_SUNDAY:
daysToAdd = ((WEEKDAY_SUN - rtc->dayOfWeek) + WEEKDAY_COUNT) % WEEKDAY_COUNT;
- FakeRtc_AdvanceTimeBy(daysToAdd, 0, 0, 0);
+ FakeRtc_AdvanceTimeBy(daysToAdd, 0, 0, 0);
break;
case DEBUG_TIME_MENU_ITEM_MONDAY:
daysToAdd = ((WEEKDAY_MON - rtc->dayOfWeek) + WEEKDAY_COUNT) % WEEKDAY_COUNT;
@@ -3929,7 +3984,7 @@ static void DebugAction_PCBag_Fill_PocketItems(u8 taskId)
for (itemId = 1; itemId < ITEMS_COUNT; itemId++)
{
- if (ItemId_GetPocket(itemId) == POCKET_ITEMS && CheckBagHasSpace(itemId, MAX_BAG_ITEM_CAPACITY))
+ if (GetItemPocket(itemId) == POCKET_ITEMS && CheckBagHasSpace(itemId, MAX_BAG_ITEM_CAPACITY))
AddBagItem(itemId, MAX_BAG_ITEM_CAPACITY);
}
}
@@ -3973,7 +4028,7 @@ static void DebugAction_PCBag_Fill_PocketKeyItems(u8 taskId)
for (itemId = 1; itemId < ITEMS_COUNT; itemId++)
{
- if (ItemId_GetPocket(itemId) == POCKET_KEY_ITEMS && CheckBagHasSpace(itemId, 1))
+ if (GetItemPocket(itemId) == POCKET_KEY_ITEMS && CheckBagHasSpace(itemId, 1))
AddBagItem(itemId, 1);
}
}
diff --git a/src/dexnav.c b/src/dexnav.c
index 526dc4a177..48dd75829b 100644
--- a/src/dexnav.c
+++ b/src/dexnav.c
@@ -1737,7 +1737,7 @@ static bool8 CapturedAllLandMons(u32 headerId)
u16 i, species;
int count = 0;
enum TimeOfDay timeOfDay = GetTimeOfDayForEncounters(headerId, WILD_AREA_LAND);
-
+
const struct WildPokemonInfo *landMonsInfo = gWildMonHeaders[headerId].encounterTypes[timeOfDay].landMonsInfo;
if (landMonsInfo != NULL)
@@ -1807,7 +1807,7 @@ static bool8 CapturedAllHiddenMons(u32 headerId)
enum TimeOfDay timeOfDay = GetTimeOfDayForEncounters(headerId, WILD_AREA_HIDDEN);
const struct WildPokemonInfo *hiddenMonsInfo = gWildMonHeaders[headerId].encounterTypes[timeOfDay].hiddenMonsInfo;
-
+
if (hiddenMonsInfo != NULL)
{
for (i = 0; i < HIDDEN_WILD_COUNT; ++i)
@@ -1959,7 +1959,7 @@ static void DexNavLoadEncounterData(void)
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));
memset(sDexNavUiDataPtr->waterSpecies, 0, sizeof(sDexNavUiDataPtr->waterSpecies));
@@ -2534,7 +2534,7 @@ bool8 TryFindHiddenPokemon(void)
enum EncounterType environment;
u8 taskId;
enum TimeOfDay timeOfDay = GetTimeOfDayForEncounters(headerId, WILD_AREA_HIDDEN);
-
+
const struct WildPokemonInfo *hiddenMonsInfo = gWildMonHeaders[headerId].encounterTypes[timeOfDay].hiddenMonsInfo;
bool8 isHiddenMon = FALSE;
diff --git a/src/dodrio_berry_picking.c b/src/dodrio_berry_picking.c
index ce1877c6cd..16ea035c7c 100644
--- a/src/dodrio_berry_picking.c
+++ b/src/dodrio_berry_picking.c
@@ -275,13 +275,13 @@ struct DodrioGame
/*0x3308*/ struct DodrioGame_ScoreResults scoreResults[MAX_RFU_PLAYERS];
}; // size = 0x3330
-EWRAM_DATA static struct DodrioGame * sGame = NULL;
-EWRAM_DATA static u16 * sDodrioSpriteIds[MAX_RFU_PLAYERS] = {NULL};
-EWRAM_DATA static u16 * sCloudSpriteIds[NUM_CLOUDS] = {NULL};
-EWRAM_DATA static u16 * sBerrySpriteIds[NUM_BERRY_COLUMNS] = {NULL};
-EWRAM_DATA static u16 * sBerryIconSpriteIds[NUM_BERRY_TYPES] = {NULL};
-EWRAM_DATA static struct StatusBar * sStatusBar = NULL;
-EWRAM_DATA static struct DodrioGame_Gfx * sGfx = NULL;
+EWRAM_DATA static struct DodrioGame *sGame = NULL;
+EWRAM_DATA static u16 *sDodrioSpriteIds[MAX_RFU_PLAYERS] = {NULL};
+EWRAM_DATA static u16 *sCloudSpriteIds[NUM_CLOUDS] = {NULL};
+EWRAM_DATA static u16 *sBerrySpriteIds[NUM_BERRY_COLUMNS] = {NULL};
+EWRAM_DATA static u16 *sBerryIconSpriteIds[NUM_BERRY_TYPES] = {NULL};
+EWRAM_DATA static struct StatusBar *sStatusBar = NULL;
+EWRAM_DATA static struct DodrioGame_Gfx *sGfx = NULL;
static bool32 sExitingGame;
@@ -695,7 +695,7 @@ static void ResetTasksAndSprites(void)
FreeAllSpritePalettes();
}
-static void InitDodrioGame(struct DodrioGame * game)
+static void InitDodrioGame(struct DodrioGame *game)
{
u8 i;
@@ -1433,7 +1433,7 @@ static void Task_NewGameIntro(u8 taskId)
static void Task_CommunicateMonInfo(u8 taskId)
{
- s16 * data = gTasks[taskId].data;
+ s16 *data = gTasks[taskId].data;
u8 i;
switch (tState)
@@ -1759,7 +1759,7 @@ static void HandleSound_Member(void)
}
for (i = berryStart; i < berryEnd; i++)
{
- struct DodrioGame_Berries * berries = &sGame->players[sGame->multiplayerId].berries;
+ struct DodrioGame_Berries *berries = &sGame->players[sGame->multiplayerId].berries;
if (berries->fallDist[i] >= MAX_FALL_DIST)
{
if (!sGame->playingSquishSound[i])
@@ -1802,7 +1802,7 @@ static void VBlankCB_DodrioGame(void)
ProcessSpriteCopyRequests();
}
-static void InitMonInfo(struct DodrioGame_MonInfo * monInfo, struct Pokemon *mon)
+static void InitMonInfo(struct DodrioGame_MonInfo *monInfo, struct Pokemon *mon)
{
monInfo->isShiny = IsMonShiny(mon);
}
@@ -1861,7 +1861,7 @@ static void InitFirstWaveOfBerries(void)
for (i = berryStart; i < berryEnd; i++)
{
- struct DodrioGame_Berries * berries = &sGame->player.berries;
+ struct DodrioGame_Berries *berries = &sGame->player.berries;
berries->fallDist[i] = (i % 2 == 0) ? 1 : 0;
berries->ids[i] = BERRY_BLUE;
}
@@ -1995,7 +1995,7 @@ static bool32 TryPickBerry(u8 playerId, u8 pickState, u8 column)
{
s32 pick = 0;
u8 numPlayersIdx = sGame->numPlayers - 1;
- struct DodrioGame_Berries * berries = &sGame->player.berries;
+ struct DodrioGame_Berries *berries = &sGame->player.berries;
switch (pickState)
{
@@ -3841,7 +3841,7 @@ static void LoadDodrioGfx(void)
LoadSpritePalette(&shiny);
}
-static void CreateDodrioSprite(struct DodrioGame_MonInfo * monInfo, u8 playerId, u8 id, u8 numPlayers)
+static void CreateDodrioSprite(struct DodrioGame_MonInfo *monInfo, u8 playerId, u8 id, u8 numPlayers)
{
struct SpriteTemplate template =
{
diff --git a/src/ereader_helpers.c b/src/ereader_helpers.c
index d28940538f..b476c01caa 100755
--- a/src/ereader_helpers.c
+++ b/src/ereader_helpers.c
@@ -382,7 +382,7 @@ static u8 GetTrainerHillUnkVal(void)
#endif //FREE_TRAINER_HILL
}
-static bool32 ValidateTrainerChecksum(struct EReaderTrainerHillTrainer * hillTrainer)
+static bool32 ValidateTrainerChecksum(struct EReaderTrainerHillTrainer *hillTrainer)
{
int checksum = CalcByteArraySum((u8 *)hillTrainer, offsetof(typeof(*hillTrainer), checksum));
if (checksum != hillTrainer->checksum)
@@ -391,7 +391,7 @@ static bool32 ValidateTrainerChecksum(struct EReaderTrainerHillTrainer * hillTra
return TRUE;
}
-bool8 ValidateTrainerHillData(struct EReaderTrainerHillSet * hillSet)
+bool8 ValidateTrainerHillData(struct EReaderTrainerHillSet *hillSet)
{
u32 i;
u32 checksum;
@@ -430,7 +430,7 @@ static bool32 ValidateTrainerHillChecksum(struct EReaderTrainerHillSet *hillSet)
return TRUE;
}
-static bool32 TryWriteTrainerHill_Internal(struct EReaderTrainerHillSet * hillSet, struct TrainerHillChallenge * challenge)
+static bool32 TryWriteTrainerHill_Internal(struct EReaderTrainerHillSet *hillSet, struct TrainerHillChallenge *challenge)
{
int i;
@@ -469,7 +469,7 @@ static bool32 TryWriteTrainerHill_Internal(struct EReaderTrainerHillSet * hillSe
return TRUE;
}
-bool32 TryWriteTrainerHill(struct EReaderTrainerHillSet * hillSet)
+bool32 TryWriteTrainerHill(struct EReaderTrainerHillSet *hillSet)
{
void *buffer = AllocZeroed(SECTOR_SIZE);
bool32 result = TryWriteTrainerHill_Internal(hillSet, buffer);
@@ -477,7 +477,7 @@ bool32 TryWriteTrainerHill(struct EReaderTrainerHillSet * hillSet)
return result;
}
-static bool32 TryReadTrainerHill_Internal(struct EReaderTrainerHillSet * dest, u8 *buffer)
+static bool32 TryReadTrainerHill_Internal(struct EReaderTrainerHillSet *dest, u8 *buffer)
{
if (TryReadSpecialSaveSector(SECTOR_ID_TRAINER_HILL, buffer) != SAVE_STATUS_OK)
return FALSE;
@@ -489,7 +489,7 @@ static bool32 TryReadTrainerHill_Internal(struct EReaderTrainerHillSet * dest, u
return TRUE;
}
-static bool32 TryReadTrainerHill(struct EReaderTrainerHillSet * hillSet)
+static bool32 TryReadTrainerHill(struct EReaderTrainerHillSet *hillSet)
{
u8 *buffer = AllocZeroed(SECTOR_SIZE);
bool32 result = TryReadTrainerHill_Internal(hillSet, buffer);
@@ -505,7 +505,7 @@ bool32 ReadTrainerHillAndValidate(void)
return result;
}
-int EReader_Send(int size, const void * src)
+int EReader_Send(int size, const void *src)
{
int result;
int sendStatus;
@@ -546,7 +546,7 @@ int EReader_Send(int size, const void * src)
return result;
}
-int EReader_Recv(void * dest)
+int EReader_Recv(void *dest)
{
int result;
int recvStatus;
@@ -623,7 +623,7 @@ static void OpenSerial32(void)
sCounter2 = 0;
}
-int EReaderHandleTransfer(u8 mode, size_t size, const void * data, void * recvBuffer)
+int EReaderHandleTransfer(u8 mode, size_t size, const void *data, void *recvBuffer)
{
switch (sSendRecvMgr.state)
{
@@ -665,16 +665,8 @@ int EReaderHandleTransfer(u8 mode, size_t size, const void * data, void * recvBu
if (sSendRecvMgr.xferState != EREADER_XFER_CHK)
{
- if (sSendRecvMgr.isParent && sCounter1 > 2)
- {
- EnableSio();
- sSendRecvMgr.xferState = EREADER_XFER_CHK;
- }
- else
- {
- EnableSio();
- sSendRecvMgr.xferState = EREADER_XFER_CHK;
- }
+ EnableSio();
+ sSendRecvMgr.xferState = EREADER_XFER_CHK;
}
}
break;
@@ -716,7 +708,7 @@ static u16 DetermineSendRecvState(u8 mode)
return resp;
}
-static void SetUpTransferManager(size_t size, const void * data, void * recvBuffer)
+static void SetUpTransferManager(size_t size, const void *data, void *recvBuffer)
{
if (sSendRecvMgr.isParent)
{
diff --git a/src/event_object_lock.c b/src/event_object_lock.c
index 3215c61f2c..54a558fd1e 100644
--- a/src/event_object_lock.c
+++ b/src/event_object_lock.c
@@ -98,7 +98,7 @@ void FreezeObjects_WaitForPlayerAndSelected(void)
void ScriptUnfreezeObjectEvents(void)
{
- u8 playerObjectId = GetObjectEventIdByLocalIdAndMap(OBJ_EVENT_ID_PLAYER, 0, 0);
+ u8 playerObjectId = GetObjectEventIdByLocalIdAndMap(LOCALID_PLAYER, 0, 0);
ObjectEventClearHeldMovementIfFinished(&gObjectEvents[playerObjectId]);
ScriptMovement_UnfreezeObjectEvents();
UnfreezeObjectEvents();
@@ -110,7 +110,7 @@ void UnionRoom_UnlockPlayerAndChatPartner(void)
if (gObjectEvents[gSelectedObjectEvent].active)
ObjectEventClearHeldMovementIfFinished(&gObjectEvents[gSelectedObjectEvent]);
- playerObjectId = GetObjectEventIdByLocalIdAndMap(OBJ_EVENT_ID_PLAYER, 0, 0);
+ playerObjectId = GetObjectEventIdByLocalIdAndMap(LOCALID_PLAYER, 0, 0);
ObjectEventClearHeldMovementIfFinished(&gObjectEvents[playerObjectId]);
ScriptMovement_UnfreezeObjectEvents();
UnfreezeObjectEvents();
diff --git a/src/event_object_movement.c b/src/event_object_movement.c
index 1184c27ec4..361111ac4e 100644
--- a/src/event_object_movement.c
+++ b/src/event_object_movement.c
@@ -58,6 +58,17 @@
#include "constants/union_room.h"
#include "constants/weather.h"
+#define SPECIAL_LOCALIDS_START (min(LOCALID_CAMERA, \
+ min(LOCALID_PLAYER, \
+ LOCALID_BERRY_BLENDER_PLAYER_END - MAX_RFU_PLAYERS + 1)))
+
+// The object event templates on a map cannot use the special IDs listed above or they can behave unexpectedly.
+// For more details on these special IDs see their definitions in 'include/constants/event_objects.h'.
+// OBJECT_EVENT_TEMPLATES_COUNT should always be low enough that it doesn't overlap with these IDs.
+#if OBJECT_EVENT_TEMPLATES_COUNT >= SPECIAL_LOCALIDS_START
+#error "OBJECT_EVENT_TEMPLATES_COUNT is too large. Object event local IDs may overlap with reserved IDs."
+#endif
+
// this file was known as evobjmv.c in Game Freak's original source
enum {
@@ -1302,9 +1313,9 @@ static const u8 sPlayerDirectionToCopyDirection[][4] = {
static void ClearObjectEvent(struct ObjectEvent *objectEvent)
{
*objectEvent = (struct ObjectEvent){};
- objectEvent->localId = OBJ_EVENT_ID_PLAYER;
- objectEvent->mapNum = MAP_NUM(UNDEFINED);
- objectEvent->mapGroup = MAP_GROUP(UNDEFINED);
+ objectEvent->localId = LOCALID_PLAYER;
+ objectEvent->mapNum = MAP_NUM(MAP_UNDEFINED);
+ objectEvent->mapGroup = MAP_GROUP(MAP_UNDEFINED);
objectEvent->movementActionId = MOVEMENT_ACTION_NONE;
}
@@ -8228,7 +8239,7 @@ bool8 MovementAction_FacePlayer_Step0(struct ObjectEvent *objectEvent, struct Sp
{
u8 playerObjectId;
- if (!TryGetObjectEventIdByLocalIdAndMap(OBJ_EVENT_ID_PLAYER, 0, 0, &playerObjectId))
+ if (!TryGetObjectEventIdByLocalIdAndMap(LOCALID_PLAYER, 0, 0, &playerObjectId))
FaceDirection(objectEvent, sprite, GetDirectionToFace(objectEvent->currentCoords.x,
objectEvent->currentCoords.y,
gObjectEvents[playerObjectId].currentCoords.x,
@@ -8241,7 +8252,7 @@ bool8 MovementAction_FaceAwayPlayer_Step0(struct ObjectEvent *objectEvent, struc
{
u8 playerObjectId;
- if (!TryGetObjectEventIdByLocalIdAndMap(OBJ_EVENT_ID_PLAYER, 0, 0, &playerObjectId))
+ if (!TryGetObjectEventIdByLocalIdAndMap(LOCALID_PLAYER, 0, 0, &playerObjectId))
FaceDirection(objectEvent, sprite, GetOppositeDirection(GetDirectionToFace(objectEvent->currentCoords.x,
objectEvent->currentCoords.y,
gObjectEvents[playerObjectId].currentCoords.x,
@@ -9826,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)
@@ -9889,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);
@@ -11043,7 +11054,7 @@ u8 MovementAction_LockAnim_Step0(struct ObjectEvent *objectEvent, struct Sprite
bool32 found = FALSE;
for (i = 0; i < OBJECT_EVENTS_COUNT; i++)
{
- if (firstFreeSlot == OBJECT_EVENTS_COUNT && sLockedAnimObjectEvents->localIds[i] == 0)
+ if (firstFreeSlot == OBJECT_EVENTS_COUNT && sLockedAnimObjectEvents->localIds[i] == LOCALID_NONE)
firstFreeSlot = i;
if (sLockedAnimObjectEvents->localIds[i] == objectEvent->localId)
@@ -11083,7 +11094,7 @@ u8 MovementAction_UnlockAnim_Step0(struct ObjectEvent *objectEvent, struct Sprit
index = FindLockedObjectEventIndex(objectEvent);
if (index != OBJECT_EVENTS_COUNT)
{
- sLockedAnimObjectEvents->localIds[index] = 0;
+ sLockedAnimObjectEvents->localIds[index] = LOCALID_NONE;
sLockedAnimObjectEvents->count--;
ableToStore = TRUE;
}
diff --git a/src/evolution_scene.c b/src/evolution_scene.c
index 70accb3f2a..d0dbb688fa 100644
--- a/src/evolution_scene.c
+++ b/src/evolution_scene.c
@@ -560,7 +560,7 @@ static void CreateShedinja(u32 preEvoSpecies, u32 postEvoSpecies, struct Pokemon
{
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));
@@ -571,22 +571,22 @@ static void CreateShedinja(u32 preEvoSpecies, u32 postEvoSpecies, struct Pokemon
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)
@@ -825,12 +825,12 @@ static void Task_EvolutionScene(u8 taskId)
{
StopMapMusic();
Overworld_PlaySpecialMapMusic();
-
+
}
if (!gTasks[taskId].tEvoWasStopped)
CreateShedinja(gTasks[taskId].tPreEvoSpecies, gTasks[taskId].tPostEvoSpecies, mon);
-
+
DestroyTask(taskId);
FreeMonSpritesGfx();
FREE_AND_SET_NULL(sEvoStructPtr);
diff --git a/src/faraway_island.c b/src/faraway_island.c
index 68be69d267..e275bcfa37 100755
--- a/src/faraway_island.c
+++ b/src/faraway_island.c
@@ -321,8 +321,8 @@ static u8 GetValidMewMoveDirection(u8 ignoredDir)
void UpdateFarawayIslandStepCounter(void)
{
u16 steps = VarGet(VAR_FARAWAY_ISLAND_STEP_COUNTER);
- if (gSaveBlock1Ptr->location.mapNum == MAP_NUM(FARAWAY_ISLAND_INTERIOR)
- && gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(FARAWAY_ISLAND_INTERIOR))
+ if (gSaveBlock1Ptr->location.mapNum == MAP_NUM(MAP_FARAWAY_ISLAND_INTERIOR)
+ && gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(MAP_FARAWAY_ISLAND_INTERIOR))
{
steps++;
if (steps >= 9999)
@@ -334,8 +334,8 @@ void UpdateFarawayIslandStepCounter(void)
bool8 ObjectEventIsFarawayIslandMew(struct ObjectEvent *objectEvent)
{
- if (gSaveBlock1Ptr->location.mapNum == MAP_NUM(FARAWAY_ISLAND_INTERIOR)
- && gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(FARAWAY_ISLAND_INTERIOR))
+ if (gSaveBlock1Ptr->location.mapNum == MAP_NUM(MAP_FARAWAY_ISLAND_INTERIOR)
+ && gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(MAP_FARAWAY_ISLAND_INTERIOR))
{
if (objectEvent->graphicsId == OBJ_EVENT_GFX_MEW)
return TRUE;
@@ -346,8 +346,8 @@ bool8 ObjectEventIsFarawayIslandMew(struct ObjectEvent *objectEvent)
bool8 IsMewPlayingHideAndSeek(void)
{
- if (gSaveBlock1Ptr->location.mapNum == MAP_NUM(FARAWAY_ISLAND_INTERIOR)
- && gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(FARAWAY_ISLAND_INTERIOR))
+ if (gSaveBlock1Ptr->location.mapNum == MAP_NUM(MAP_FARAWAY_ISLAND_INTERIOR)
+ && gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(MAP_FARAWAY_ISLAND_INTERIOR))
{
if (FlagGet(FLAG_CAUGHT_MEW) != TRUE && FlagGet(FLAG_HIDE_MEW) != TRUE)
return TRUE;
diff --git a/src/field_control_avatar.c b/src/field_control_avatar.c
index e1b9cb3a83..a83990cc58 100644
--- a/src/field_control_avatar.c
+++ b/src/field_control_avatar.c
@@ -162,7 +162,7 @@ int ProcessPlayerFieldInput(struct FieldInput *input)
u8 playerDirection;
u16 metatileBehavior;
- gSpecialVar_LastTalked = 0;
+ gSpecialVar_LastTalked = LOCALID_NONE;
gSelectedObjectEvent = 0;
gMsgIsSignPost = FALSE;
@@ -226,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;
@@ -331,7 +331,7 @@ const u8 *GetInteractedLinkPlayerScript(struct MapPosition *position, u8 metatil
else
objectEventId = GetObjectEventIdByPosition(position->x + gDirectionToVectors[direction].x, position->y + gDirectionToVectors[direction].y, position->elevation);
- if (objectEventId == OBJECT_EVENTS_COUNT || gObjectEvents[objectEventId].localId == OBJ_EVENT_ID_PLAYER)
+ if (objectEventId == OBJECT_EVENTS_COUNT || gObjectEvents[objectEventId].localId == LOCALID_PLAYER)
return NULL;
for (i = 0; i < 4; i++)
@@ -383,14 +383,14 @@ static const u8 *GetInteractedObjectEventScript(struct MapPosition *position, u8
break;
}
- if (objectEventId == OBJECT_EVENTS_COUNT || gObjectEvents[objectEventId].localId == OBJ_EVENT_ID_PLAYER)
+ if (objectEventId == OBJECT_EVENTS_COUNT || gObjectEvents[objectEventId].localId == LOCALID_PLAYER)
{
if (MetatileBehavior_IsCounter(metatileBehavior) != TRUE)
return NULL;
// Look for an object event on the other side of the counter.
objectEventId = GetObjectEventIdByPosition(position->x + gDirectionToVectors[direction].x, position->y + gDirectionToVectors[direction].y, position->elevation);
- if (objectEventId == OBJECT_EVENTS_COUNT || gObjectEvents[objectEventId].localId == OBJ_EVENT_ID_PLAYER)
+ if (objectEventId == OBJECT_EVENTS_COUNT || gObjectEvents[objectEventId].localId == LOCALID_PLAYER)
return NULL;
}
@@ -983,7 +983,7 @@ static void SetupWarp(struct MapHeader *unused, s8 warpEventId, struct MapPositi
warpEvent = &gMapHeader.events->warps[warpEventId];
}
- if (warpEvent->mapNum == MAP_NUM(DYNAMIC))
+ if (warpEvent->mapNum == MAP_NUM(MAP_DYNAMIC))
{
SetWarpDestinationToDynamicWarp(warpEvent->warpId);
}
@@ -994,7 +994,7 @@ static void SetupWarp(struct MapHeader *unused, s8 warpEventId, struct MapPositi
SetWarpDestinationToMapWarp(warpEvent->mapGroup, warpEvent->mapNum, warpEvent->warpId);
UpdateEscapeWarp(position->x, position->y);
mapHeader = Overworld_GetMapHeaderByGroupAndId(warpEvent->mapGroup, warpEvent->mapNum);
- if (mapHeader->events->warps[warpEvent->warpId].mapNum == MAP_NUM(DYNAMIC))
+ if (mapHeader->events->warps[warpEvent->warpId].mapNum == MAP_NUM(MAP_DYNAMIC))
SetDynamicWarp(mapHeader->events->warps[warpEventId].warpId, gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, warpEventId);
}
}
diff --git a/src/field_door.c b/src/field_door.c
index 1810811191..bb7a38359f 100644
--- a/src/field_door.c
+++ b/src/field_door.c
@@ -562,8 +562,8 @@ static bool8 ShouldUseMultiCorridorDoor(void)
{
if (FlagGet(FLAG_ENABLE_MULTI_CORRIDOR_DOOR))
{
- if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(BATTLE_FRONTIER_BATTLE_TOWER_MULTI_CORRIDOR)
- && gSaveBlock1Ptr->location.mapNum == MAP_NUM(BATTLE_FRONTIER_BATTLE_TOWER_MULTI_CORRIDOR))
+ if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(MAP_BATTLE_FRONTIER_BATTLE_TOWER_MULTI_CORRIDOR)
+ && gSaveBlock1Ptr->location.mapNum == MAP_NUM(MAP_BATTLE_FRONTIER_BATTLE_TOWER_MULTI_CORRIDOR))
{
return TRUE;
}
diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c
index 8174d11135..f7a6531ec2 100755
--- a/src/field_effect_helpers.c
+++ b/src/field_effect_helpers.c
@@ -1045,7 +1045,7 @@ u32 FldEff_ShakingGrass(void)
sprite->oam.priority = gFieldEffectArguments[3];
sprite->sWaitFldEff = FLDEFF_SHAKING_GRASS;
}
-
+
return spriteId;
}
@@ -1062,7 +1062,7 @@ u32 FldEff_ShakingGrass2(void)
sprite->oam.priority = gFieldEffectArguments[3];
sprite->sWaitFldEff = FLDEFF_SHAKING_LONG_GRASS;
}
-
+
return spriteId;
}
@@ -1095,7 +1095,7 @@ u32 FldEff_WaterSurfacing(void)
sprite->oam.priority = gFieldEffectArguments[3];
sprite->sWaitFldEff = FLDEFF_WATER_SURFACING;
}
-
+
return spriteId;
}
diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c
index d264fb2581..07f4b74e08 100644
--- a/src/field_player_avatar.c
+++ b/src/field_player_avatar.c
@@ -62,13 +62,12 @@ EWRAM_DATA struct PlayerAvatar gPlayerAvatar = {};
EWRAM_DATA struct SpinData gPlayerSpinData = {};
// static declarations
-
-static u8 ObjectEventCB2_NoMovement2();
+static u8 ObjectEventCB2_NoMovement2(void);
static bool8 TryInterruptObjectEventSpecialAnim(struct ObjectEvent *, u8);
static void npc_clear_strange_bits(struct ObjectEvent *);
static void MovePlayerAvatarUsingKeypadInput(u8, u16, u16);
-static void PlayerAllowForcedMovementIfMovingSameDirection();
-static u8 GetForcedMovementByMetatileBehavior();
+static void PlayerAllowForcedMovementIfMovingSameDirection(void);
+static u8 GetForcedMovementByMetatileBehavior(void);
static bool8 ForcedMovement_None(void);
static bool8 ForcedMovement_Slip(void);
@@ -361,7 +360,7 @@ static bool8 (*const sPlayerAvatarSecretBaseMatSpin[])(struct Task *, struct Obj
void MovementType_Player(struct Sprite *sprite)
{
- UpdateObjectEventCurrentMovement(&gObjectEvents[sprite->data[0]], sprite, ObjectEventCB2_NoMovement2);
+ UpdateObjectEventCurrentMovement(&gObjectEvents[sprite->data[0]], sprite, (bool8 (*)(struct ObjectEvent *, struct Sprite *))ObjectEventCB2_NoMovement2);
}
static u8 ObjectEventCB2_NoMovement2(void)
@@ -521,8 +520,8 @@ static bool8 DoForcedMovement(u8 direction, void (*moveFunc)(u8))
{
playerAvatar->runningState = MOVING;
moveFunc(direction);
- if (PlayerHasFollowerNPC()
- && gObjectEvents[GetFollowerNPCObjectId()].invisible == FALSE
+ if (PlayerHasFollowerNPC()
+ && gObjectEvents[GetFollowerNPCObjectId()].invisible == FALSE
&& FindTaskIdByFunc(Task_MoveNPCFollowerAfterForcedMovement) == TASK_NONE)
CreateTask(Task_MoveNPCFollowerAfterForcedMovement, 3);
return TRUE;
@@ -992,7 +991,7 @@ bool8 IsPlayerCollidingWithFarawayIslandMew(u8 direction)
playerY = object->currentCoords.y;
MoveCoords(direction, &playerX, &playerY);
- mewObjectId = GetObjectEventIdByLocalIdAndMap(1, MAP_NUM(FARAWAY_ISLAND_INTERIOR), MAP_GROUP(FARAWAY_ISLAND_INTERIOR));
+ mewObjectId = GetObjectEventIdByLocalIdAndMap(LOCALID_FARAWAY_ISLAND_MEW, MAP_NUM(MAP_FARAWAY_ISLAND_INTERIOR), MAP_GROUP(MAP_FARAWAY_ISLAND_INTERIOR));
if (mewObjectId == OBJECT_EVENTS_COUNT)
return FALSE;
@@ -1219,8 +1218,8 @@ void PlayerOnBikeCollide(u8 direction)
struct ObjectEvent *npcFollower = &gObjectEvents[GetFollowerNPCObjectId()];
struct ObjectEvent *player = &gObjectEvents[gPlayerAvatar.objectEventId];
- if (npcFollower->invisible == FALSE
- && player->currentMetatileBehavior != MB_MUDDY_SLOPE
+ if (npcFollower->invisible == FALSE
+ && player->currentMetatileBehavior != MB_MUDDY_SLOPE
&& npcFollower->currentMetatileBehavior == MB_MUDDY_SLOPE)
{
gPlayerAvatar.preventStep = TRUE;
@@ -1595,7 +1594,7 @@ void InitPlayerAvatar(s16 x, s16 y, u8 direction, u8 gender)
u8 objectEventId;
struct ObjectEvent *objectEvent;
- playerObjEventTemplate.localId = OBJ_EVENT_ID_PLAYER;
+ playerObjEventTemplate.localId = LOCALID_PLAYER;
playerObjEventTemplate.graphicsId = GetPlayerAvatarGraphicsIdByStateIdAndGender(PLAYER_AVATAR_STATE_NORMAL, gender);
playerObjEventTemplate.x = x - MAP_OFFSET;
playerObjEventTemplate.y = y - MAP_OFFSET;
diff --git a/src/field_screen_effect.c b/src/field_screen_effect.c
index 54e330149d..9ac99465ca 100644
--- a/src/field_screen_effect.c
+++ b/src/field_screen_effect.c
@@ -353,7 +353,7 @@ static void Task_ExitDoor(u8 taskId)
{
u8 objEventId;
SetPlayerVisibility(TRUE);
- objEventId = GetObjectEventIdByLocalIdAndMap(OBJ_EVENT_ID_PLAYER, 0, 0);
+ objEventId = GetObjectEventIdByLocalIdAndMap(LOCALID_PLAYER, 0, 0);
ObjectEventSetHeldMovement(&gObjectEvents[objEventId], MOVEMENT_ACTION_WALK_NORMAL_DOWN);
task->tState = 2;
}
@@ -363,7 +363,7 @@ static void Task_ExitDoor(u8 taskId)
{
u8 objEventId;
task->data[1] = FieldAnimateDoorClose(*x, *y);
- objEventId = GetObjectEventIdByLocalIdAndMap(OBJ_EVENT_ID_PLAYER, 0, 0);
+ objEventId = GetObjectEventIdByLocalIdAndMap(LOCALID_PLAYER, 0, 0);
ObjectEventClearHeldMovementIfFinished(&gObjectEvents[objEventId]);
task->tState = 3;
}
@@ -404,7 +404,7 @@ static void Task_ExitNonAnimDoor(u8 taskId)
{
u8 objEventId;
SetPlayerVisibility(TRUE);
- objEventId = GetObjectEventIdByLocalIdAndMap(OBJ_EVENT_ID_PLAYER, 0, 0);
+ objEventId = GetObjectEventIdByLocalIdAndMap(LOCALID_PLAYER, 0, 0);
ObjectEventSetHeldMovement(&gObjectEvents[objEventId], GetWalkNormalMovementAction(GetPlayerFacingDirection()));
task->tState = 2;
}
@@ -593,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;
diff --git a/src/field_special_scene.c b/src/field_special_scene.c
index a2b3d6366f..ccb15f02b4 100644
--- a/src/field_special_scene.c
+++ b/src/field_special_scene.c
@@ -312,7 +312,7 @@ void Task_HandlePorthole(u8 taskId)
case IDLE_CHECK:
if (JOY_NEW(A_BUTTON))
data[1] = 1;
- if (!ScriptMovement_IsObjectMovementFinished(OBJ_EVENT_ID_PLAYER, location->mapNum, location->mapGroup))
+ if (!ScriptMovement_IsObjectMovementFinished(LOCALID_PLAYER, location->mapNum, location->mapGroup))
return;
if (CountSSTidalStep(1) == TRUE)
{
@@ -334,12 +334,12 @@ void Task_HandlePorthole(u8 taskId)
if (*cruiseState == SS_TIDAL_DEPART_SLATEPORT)
{
- ScriptMovement_StartObjectMovementScript(OBJ_EVENT_ID_PLAYER, location->mapNum, location->mapGroup, sSSTidalSailEastMovementScript);
+ ScriptMovement_StartObjectMovementScript(LOCALID_PLAYER, location->mapNum, location->mapGroup, sSSTidalSailEastMovementScript);
data[0] = IDLE_CHECK;
}
else
{
- ScriptMovement_StartObjectMovementScript(OBJ_EVENT_ID_PLAYER, location->mapNum, location->mapGroup, sSSTidalSailWestMovementScript);
+ ScriptMovement_StartObjectMovementScript(LOCALID_PLAYER, location->mapNum, location->mapGroup, sSSTidalSailWestMovementScript);
data[0] = IDLE_CHECK;
}
break;
diff --git a/src/field_specials.c b/src/field_specials.c
index db86f99f32..971847888a 100644
--- a/src/field_specials.c
+++ b/src/field_specials.c
@@ -284,7 +284,7 @@ u16 GetRecordedCyclingRoadResults(void)
void UpdateCyclingRoadState(void)
{
- if (gLastUsedWarp.mapNum == MAP_NUM(ROUTE110_SEASIDE_CYCLING_ROAD_NORTH_ENTRANCE) && gLastUsedWarp.mapGroup == MAP_GROUP(ROUTE110_SEASIDE_CYCLING_ROAD_NORTH_ENTRANCE))
+ if (gLastUsedWarp.mapNum == MAP_NUM(MAP_ROUTE110_SEASIDE_CYCLING_ROAD_NORTH_ENTRANCE) && gLastUsedWarp.mapGroup == MAP_GROUP(MAP_ROUTE110_SEASIDE_CYCLING_ROAD_NORTH_ENTRANCE))
return;
if (VarGet(VAR_CYCLING_CHALLENGE_STATE) == 2 || VarGet(VAR_CYCLING_CHALLENGE_STATE) == 3)
@@ -334,39 +334,39 @@ u8 GetSSTidalLocation(s8 *mapGroup, s8 *mapNum, s16 *x, s16 *y)
case SS_TIDAL_DEPART_SLATEPORT:
if (*varCruiseStepCount < 60)
{
- *mapNum = MAP_NUM(ROUTE134);
+ *mapNum = MAP_NUM(MAP_ROUTE134);
*x = *varCruiseStepCount + 19;
}
else if (*varCruiseStepCount < 140)
{
- *mapNum = MAP_NUM(ROUTE133);
+ *mapNum = MAP_NUM(MAP_ROUTE133);
*x = *varCruiseStepCount - 60;
}
else
{
- *mapNum = MAP_NUM(ROUTE132);
+ *mapNum = MAP_NUM(MAP_ROUTE132);
*x = *varCruiseStepCount - 140;
}
break;
case SS_TIDAL_HALFWAY_SLATEPORT:
if (*varCruiseStepCount < 66)
{
- *mapNum = MAP_NUM(ROUTE132);
+ *mapNum = MAP_NUM(MAP_ROUTE132);
*x = 65 - *varCruiseStepCount;
}
else if (*varCruiseStepCount < 146)
{
- *mapNum = MAP_NUM(ROUTE133);
+ *mapNum = MAP_NUM(MAP_ROUTE133);
*x = 145 - *varCruiseStepCount;
}
else
{
- *mapNum = MAP_NUM(ROUTE134);
+ *mapNum = MAP_NUM(MAP_ROUTE134);
*x = 224 - *varCruiseStepCount;
}
break;
}
- *mapGroup = MAP_GROUP(ROUTE132);
+ *mapGroup = MAP_GROUP(MAP_ROUTE132);
*y = 20;
return SS_TIDAL_LOCATION_CURRENTS;
}
@@ -584,8 +584,8 @@ void SpawnLinkPartnerObjectEvent(void)
linkSpriteId = OBJ_EVENT_GFX_RIVAL_MAY_NORMAL;
break;
}
- SpawnSpecialObjectEventParameterized(linkSpriteId, movementTypes[j], 240 - i, coordOffsets[j][0] + x + MAP_OFFSET, coordOffsets[j][1] + y + MAP_OFFSET, 0);
- LoadLinkPartnerObjectEventSpritePalette(linkSpriteId, 240 - i, i);
+ SpawnSpecialObjectEventParameterized(linkSpriteId, movementTypes[j], LOCALID_BERRY_BLENDER_PLAYER_END - i, coordOffsets[j][0] + x + MAP_OFFSET, coordOffsets[j][1] + y + MAP_OFFSET, 0);
+ LoadLinkPartnerObjectEventSpritePalette(linkSpriteId, LOCALID_BERRY_BLENDER_PLAYER_END - i, i);
j++;
if (j == MAX_LINK_PLAYERS)
j = 0;
@@ -948,9 +948,9 @@ u8 GetBattleOutcome(void)
void CableCarWarp(void)
{
if (gSpecialVar_0x8004 != 0)
- SetWarpDestination(MAP_GROUP(ROUTE112_CABLE_CAR_STATION), MAP_NUM(ROUTE112_CABLE_CAR_STATION), WARP_ID_NONE, 6, 4);
+ SetWarpDestination(MAP_GROUP(MAP_ROUTE112_CABLE_CAR_STATION), MAP_NUM(MAP_ROUTE112_CABLE_CAR_STATION), WARP_ID_NONE, 6, 4);
else
- SetWarpDestination(MAP_GROUP(MT_CHIMNEY_CABLE_CAR_STATION), MAP_NUM(MT_CHIMNEY_CABLE_CAR_STATION), WARP_ID_NONE, 6, 4);
+ SetWarpDestination(MAP_GROUP(MAP_MT_CHIMNEY_CABLE_CAR_STATION), MAP_NUM(MAP_MT_CHIMNEY_CABLE_CAR_STATION), WARP_ID_NONE, 6, 4);
}
void SetHiddenItemFlag(void)
@@ -1287,7 +1287,7 @@ void SpawnCameraObject(void)
{
u8 obj = SpawnSpecialObjectEventParameterized(OBJ_EVENT_GFX_BOY_1,
MOVEMENT_TYPE_FACE_DOWN,
- OBJ_EVENT_ID_CAMERA,
+ LOCALID_CAMERA,
gSaveBlock1Ptr->pos.x + MAP_OFFSET,
gSaveBlock1Ptr->pos.y + MAP_OFFSET,
3); // elevation
@@ -1298,7 +1298,7 @@ void SpawnCameraObject(void)
void RemoveCameraObject(void)
{
CameraObjectSetFollowedSpriteId(GetPlayerAvatarSpriteId());
- RemoveObjectEventByLocalIdAndMap(OBJ_EVENT_ID_CAMERA, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
+ RemoveObjectEventByLocalIdAndMap(LOCALID_CAMERA, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
}
u8 GetPokeblockNameByMonNature(void)
@@ -1433,8 +1433,8 @@ bool8 Special_AreLeadMonEVsMaxedOut(void)
u8 TryUpdateRusturfTunnelState(void)
{
if (!FlagGet(FLAG_RUSTURF_TUNNEL_OPENED)
- && gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(RUSTURF_TUNNEL)
- && gSaveBlock1Ptr->location.mapNum == MAP_NUM(RUSTURF_TUNNEL))
+ && gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(MAP_RUSTURF_TUNNEL)
+ && gSaveBlock1Ptr->location.mapNum == MAP_NUM(MAP_RUSTURF_TUNNEL))
{
if (FlagGet(FLAG_HIDE_RUSTURF_TUNNEL_ROCK_1))
{
@@ -1697,8 +1697,8 @@ bool8 IsBadEggInParty(void)
bool8 InMultiPartnerRoom(void)
{
- if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(BATTLE_FRONTIER_BATTLE_TOWER_MULTI_PARTNER_ROOM)
- && gSaveBlock1Ptr->location.mapNum == MAP_NUM(BATTLE_FRONTIER_BATTLE_TOWER_MULTI_PARTNER_ROOM) &&
+ if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(MAP_BATTLE_FRONTIER_BATTLE_TOWER_MULTI_PARTNER_ROOM)
+ && gSaveBlock1Ptr->location.mapNum == MAP_NUM(MAP_BATTLE_FRONTIER_BATTLE_TOWER_MULTI_PARTNER_ROOM) &&
VarGet(VAR_FRONTIER_BATTLE_MODE) == FRONTIER_MODE_MULTIS)
return TRUE;
return FALSE;
@@ -1784,22 +1784,22 @@ void SetDeptStoreFloor(void)
u8 deptStoreFloor;
switch (gSaveBlock1Ptr->dynamicWarp.mapNum)
{
- case MAP_NUM(LILYCOVE_CITY_DEPARTMENT_STORE_1F):
+ case MAP_NUM(MAP_LILYCOVE_CITY_DEPARTMENT_STORE_1F):
deptStoreFloor = DEPT_STORE_FLOORNUM_1F;
break;
- case MAP_NUM(LILYCOVE_CITY_DEPARTMENT_STORE_2F):
+ case MAP_NUM(MAP_LILYCOVE_CITY_DEPARTMENT_STORE_2F):
deptStoreFloor = DEPT_STORE_FLOORNUM_2F;
break;
- case MAP_NUM(LILYCOVE_CITY_DEPARTMENT_STORE_3F):
+ case MAP_NUM(MAP_LILYCOVE_CITY_DEPARTMENT_STORE_3F):
deptStoreFloor = DEPT_STORE_FLOORNUM_3F;
break;
- case MAP_NUM(LILYCOVE_CITY_DEPARTMENT_STORE_4F):
+ case MAP_NUM(MAP_LILYCOVE_CITY_DEPARTMENT_STORE_4F):
deptStoreFloor = DEPT_STORE_FLOORNUM_4F;
break;
- case MAP_NUM(LILYCOVE_CITY_DEPARTMENT_STORE_5F):
+ case MAP_NUM(MAP_LILYCOVE_CITY_DEPARTMENT_STORE_5F):
deptStoreFloor = DEPT_STORE_FLOORNUM_5F;
break;
- case MAP_NUM(LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP):
+ case MAP_NUM(MAP_LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP):
deptStoreFloor = DEPT_STORE_FLOORNUM_ROOFTOP;
break;
default:
@@ -1814,27 +1814,27 @@ u16 GetDeptStoreDefaultFloorChoice(void)
sLilycoveDeptStore_NeverRead = 0;
sLilycoveDeptStore_DefaultFloorChoice = 0;
- if (gSaveBlock1Ptr->dynamicWarp.mapGroup == MAP_GROUP(LILYCOVE_CITY_DEPARTMENT_STORE_1F))
+ if (gSaveBlock1Ptr->dynamicWarp.mapGroup == MAP_GROUP(MAP_LILYCOVE_CITY_DEPARTMENT_STORE_1F))
{
switch (gSaveBlock1Ptr->dynamicWarp.mapNum)
{
- case MAP_NUM(LILYCOVE_CITY_DEPARTMENT_STORE_5F):
+ case MAP_NUM(MAP_LILYCOVE_CITY_DEPARTMENT_STORE_5F):
sLilycoveDeptStore_NeverRead = 0;
sLilycoveDeptStore_DefaultFloorChoice = 0;
break;
- case MAP_NUM(LILYCOVE_CITY_DEPARTMENT_STORE_4F):
+ case MAP_NUM(MAP_LILYCOVE_CITY_DEPARTMENT_STORE_4F):
sLilycoveDeptStore_NeverRead = 0;
sLilycoveDeptStore_DefaultFloorChoice = 1;
break;
- case MAP_NUM(LILYCOVE_CITY_DEPARTMENT_STORE_3F):
+ case MAP_NUM(MAP_LILYCOVE_CITY_DEPARTMENT_STORE_3F):
sLilycoveDeptStore_NeverRead = 0;
sLilycoveDeptStore_DefaultFloorChoice = 2;
break;
- case MAP_NUM(LILYCOVE_CITY_DEPARTMENT_STORE_2F):
+ case MAP_NUM(MAP_LILYCOVE_CITY_DEPARTMENT_STORE_2F):
sLilycoveDeptStore_NeverRead = 0;
sLilycoveDeptStore_DefaultFloorChoice = 3;
break;
- case MAP_NUM(LILYCOVE_CITY_DEPARTMENT_STORE_1F):
+ case MAP_NUM(MAP_LILYCOVE_CITY_DEPARTMENT_STORE_1F):
sLilycoveDeptStore_NeverRead = 0;
sLilycoveDeptStore_DefaultFloorChoice = 4;
break;
@@ -2079,7 +2079,7 @@ bool8 UsedPokemonCenterWarp(void)
bool32 PlayerNotAtTrainerHillEntrance(void)
{
- if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(TRAINER_HILL_ENTRANCE) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(TRAINER_HILL_ENTRANCE))
+ if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(MAP_TRAINER_HILL_ENTRANCE) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(MAP_TRAINER_HILL_ENTRANCE))
return FALSE;
return TRUE;
@@ -3291,8 +3291,8 @@ static void ChangeDeoxysRockLevel(u8 rockLevel)
CreateTask(WaitForDeoxysRockMovement, 8);
gFieldEffectArguments[0] = LOCALID_BIRTH_ISLAND_EXTERIOR_ROCK;
- gFieldEffectArguments[1] = MAP_NUM(BIRTH_ISLAND_EXTERIOR);
- gFieldEffectArguments[2] = MAP_GROUP(BIRTH_ISLAND_EXTERIOR);
+ gFieldEffectArguments[1] = MAP_NUM(MAP_BIRTH_ISLAND_EXTERIOR);
+ gFieldEffectArguments[2] = MAP_GROUP(MAP_BIRTH_ISLAND_EXTERIOR);
gFieldEffectArguments[3] = sDeoxysRockCoords[rockLevel][0];
gFieldEffectArguments[4] = sDeoxysRockCoords[rockLevel][1];
@@ -3319,7 +3319,7 @@ static void WaitForDeoxysRockMovement(u8 taskId)
void IncrementBirthIslandRockStepCount(void)
{
u16 stepCount = VarGet(VAR_DEOXYS_ROCK_STEP_COUNT);
- if (gSaveBlock1Ptr->location.mapNum == MAP_NUM(BIRTH_ISLAND_EXTERIOR) && gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(BIRTH_ISLAND_EXTERIOR))
+ if (gSaveBlock1Ptr->location.mapNum == MAP_NUM(MAP_BIRTH_ISLAND_EXTERIOR) && gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(MAP_BIRTH_ISLAND_EXTERIOR))
{
if (++stepCount > 99)
VarSet(VAR_DEOXYS_ROCK_STEP_COUNT, 0);
@@ -3415,22 +3415,22 @@ void CreateAbnormalWeatherEvent(void)
bool32 GetAbnormalWeatherMapNameAndType(void)
{
static const u8 sAbnormalWeatherMapNumbers[] = {
- MAP_NUM(ROUTE114),
- MAP_NUM(ROUTE114),
- MAP_NUM(ROUTE115),
- MAP_NUM(ROUTE115),
- MAP_NUM(ROUTE116),
- MAP_NUM(ROUTE116),
- MAP_NUM(ROUTE118),
- MAP_NUM(ROUTE118),
- MAP_NUM(ROUTE105),
- MAP_NUM(ROUTE105),
- MAP_NUM(ROUTE125),
- MAP_NUM(ROUTE125),
- MAP_NUM(ROUTE127),
- MAP_NUM(ROUTE127),
- MAP_NUM(ROUTE129),
- MAP_NUM(ROUTE129)
+ MAP_NUM(MAP_ROUTE114),
+ MAP_NUM(MAP_ROUTE114),
+ MAP_NUM(MAP_ROUTE115),
+ MAP_NUM(MAP_ROUTE115),
+ MAP_NUM(MAP_ROUTE116),
+ MAP_NUM(MAP_ROUTE116),
+ MAP_NUM(MAP_ROUTE118),
+ MAP_NUM(MAP_ROUTE118),
+ MAP_NUM(MAP_ROUTE105),
+ MAP_NUM(MAP_ROUTE105),
+ MAP_NUM(MAP_ROUTE125),
+ MAP_NUM(MAP_ROUTE125),
+ MAP_NUM(MAP_ROUTE127),
+ MAP_NUM(MAP_ROUTE127),
+ MAP_NUM(MAP_ROUTE129),
+ MAP_NUM(MAP_ROUTE129)
};
u16 abnormalWeather = VarGet(VAR_ABNORMAL_WEATHER_LOCATION);
@@ -3448,22 +3448,22 @@ bool8 AbnormalWeatherHasExpired(void)
// Duplicate array.
static const u8 sAbnormalWeatherMapNumbers[] =
{
- MAP_NUM(ROUTE114),
- MAP_NUM(ROUTE114),
- MAP_NUM(ROUTE115),
- MAP_NUM(ROUTE115),
- MAP_NUM(ROUTE116),
- MAP_NUM(ROUTE116),
- MAP_NUM(ROUTE118),
- MAP_NUM(ROUTE118),
- MAP_NUM(ROUTE105),
- MAP_NUM(ROUTE105),
- MAP_NUM(ROUTE125),
- MAP_NUM(ROUTE125),
- MAP_NUM(ROUTE127),
- MAP_NUM(ROUTE127),
- MAP_NUM(ROUTE129),
- MAP_NUM(ROUTE129)
+ MAP_NUM(MAP_ROUTE114),
+ MAP_NUM(MAP_ROUTE114),
+ MAP_NUM(MAP_ROUTE115),
+ MAP_NUM(MAP_ROUTE115),
+ MAP_NUM(MAP_ROUTE116),
+ MAP_NUM(MAP_ROUTE116),
+ MAP_NUM(MAP_ROUTE118),
+ MAP_NUM(MAP_ROUTE118),
+ MAP_NUM(MAP_ROUTE105),
+ MAP_NUM(MAP_ROUTE105),
+ MAP_NUM(MAP_ROUTE125),
+ MAP_NUM(MAP_ROUTE125),
+ MAP_NUM(MAP_ROUTE127),
+ MAP_NUM(MAP_ROUTE127),
+ MAP_NUM(MAP_ROUTE129),
+ MAP_NUM(MAP_ROUTE129)
};
u16 steps = VarGet(VAR_ABNORMAL_WEATHER_STEP_COUNTER);
@@ -3475,15 +3475,15 @@ bool8 AbnormalWeatherHasExpired(void)
if (++steps > 999)
{
VarSet(VAR_ABNORMAL_WEATHER_STEP_COUNTER, 0);
- if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(UNDERWATER_MARINE_CAVE))
+ if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(MAP_UNDERWATER_MARINE_CAVE))
{
switch (gSaveBlock1Ptr->location.mapNum)
{
- case MAP_NUM(UNDERWATER_MARINE_CAVE):
- case MAP_NUM(MARINE_CAVE_ENTRANCE):
- case MAP_NUM(MARINE_CAVE_END):
- case MAP_NUM(TERRA_CAVE_ENTRANCE):
- case MAP_NUM(TERRA_CAVE_END):
+ case MAP_NUM(MAP_UNDERWATER_MARINE_CAVE):
+ case MAP_NUM(MAP_MARINE_CAVE_ENTRANCE):
+ case MAP_NUM(MAP_MARINE_CAVE_END):
+ case MAP_NUM(MAP_TERRA_CAVE_ENTRANCE):
+ case MAP_NUM(MAP_TERRA_CAVE_END):
VarSet(VAR_SHOULD_END_ABNORMAL_WEATHER, 1);
return FALSE;
default:
@@ -3491,14 +3491,14 @@ bool8 AbnormalWeatherHasExpired(void)
}
}
- if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(UNDERWATER_ROUTE127))
+ if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(MAP_UNDERWATER_ROUTE127))
{
switch (gSaveBlock1Ptr->location.mapNum)
{
- case MAP_NUM(UNDERWATER_ROUTE127):
- case MAP_NUM(UNDERWATER_ROUTE129):
- case MAP_NUM(UNDERWATER_ROUTE105):
- case MAP_NUM(UNDERWATER_ROUTE125):
+ case MAP_NUM(MAP_UNDERWATER_ROUTE127):
+ case MAP_NUM(MAP_UNDERWATER_ROUTE129):
+ case MAP_NUM(MAP_UNDERWATER_ROUTE105):
+ case MAP_NUM(MAP_UNDERWATER_ROUTE125):
VarSet(VAR_SHOULD_END_ABNORMAL_WEATHER, 1);
return FALSE;
default:
@@ -3534,18 +3534,18 @@ u32 GetMartEmployeeObjectEventId(void)
{
static const u8 sPokeMarts[][3] =
{
- { MAP_GROUP(OLDALE_TOWN_MART), MAP_NUM(OLDALE_TOWN_MART), LOCALID_OLDALE_MART_CLERK },
- { MAP_GROUP(LAVARIDGE_TOWN_MART), MAP_NUM(LAVARIDGE_TOWN_MART), LOCALID_LAVARIDGE_MART_CLERK },
- { MAP_GROUP(FALLARBOR_TOWN_MART), MAP_NUM(FALLARBOR_TOWN_MART), LOCALID_FALLARBOR_MART_CLERK },
- { MAP_GROUP(VERDANTURF_TOWN_MART), MAP_NUM(VERDANTURF_TOWN_MART), LOCALID_VERDANTURF_MART_CLERK },
- { MAP_GROUP(PETALBURG_CITY_MART), MAP_NUM(PETALBURG_CITY_MART), LOCALID_PETALBURG_MART_CLERK },
- { MAP_GROUP(SLATEPORT_CITY_MART), MAP_NUM(SLATEPORT_CITY_MART), LOCALID_SLATEPORT_MART_CLERK },
- { MAP_GROUP(MAUVILLE_CITY_MART), MAP_NUM(MAUVILLE_CITY_MART), LOCALID_MAUVILLE_MART_CLERK },
- { MAP_GROUP(RUSTBORO_CITY_MART), MAP_NUM(RUSTBORO_CITY_MART), LOCALID_RUSTBORO_MART_CLERK },
- { MAP_GROUP(FORTREE_CITY_MART), MAP_NUM(FORTREE_CITY_MART), LOCALID_FORTREE_MART_CLERK },
- { MAP_GROUP(MOSSDEEP_CITY_MART), MAP_NUM(MOSSDEEP_CITY_MART), LOCALID_MOSSDEEP_MART_CLERK },
- { MAP_GROUP(SOOTOPOLIS_CITY_MART), MAP_NUM(SOOTOPOLIS_CITY_MART), LOCALID_SOOTOPOLIS_MART_CLERK },
- { MAP_GROUP(BATTLE_FRONTIER_MART), MAP_NUM(BATTLE_FRONTIER_MART), LOCALID_BATTLE_FRONTIER_MART_CLERK }
+ { MAP_GROUP(MAP_OLDALE_TOWN_MART), MAP_NUM(MAP_OLDALE_TOWN_MART), LOCALID_OLDALE_MART_CLERK },
+ { MAP_GROUP(MAP_LAVARIDGE_TOWN_MART), MAP_NUM(MAP_LAVARIDGE_TOWN_MART), LOCALID_LAVARIDGE_MART_CLERK },
+ { MAP_GROUP(MAP_FALLARBOR_TOWN_MART), MAP_NUM(MAP_FALLARBOR_TOWN_MART), LOCALID_FALLARBOR_MART_CLERK },
+ { MAP_GROUP(MAP_VERDANTURF_TOWN_MART), MAP_NUM(MAP_VERDANTURF_TOWN_MART), LOCALID_VERDANTURF_MART_CLERK },
+ { MAP_GROUP(MAP_PETALBURG_CITY_MART), MAP_NUM(MAP_PETALBURG_CITY_MART), LOCALID_PETALBURG_MART_CLERK },
+ { MAP_GROUP(MAP_SLATEPORT_CITY_MART), MAP_NUM(MAP_SLATEPORT_CITY_MART), LOCALID_SLATEPORT_MART_CLERK },
+ { MAP_GROUP(MAP_MAUVILLE_CITY_MART), MAP_NUM(MAP_MAUVILLE_CITY_MART), LOCALID_MAUVILLE_MART_CLERK },
+ { MAP_GROUP(MAP_RUSTBORO_CITY_MART), MAP_NUM(MAP_RUSTBORO_CITY_MART), LOCALID_RUSTBORO_MART_CLERK },
+ { MAP_GROUP(MAP_FORTREE_CITY_MART), MAP_NUM(MAP_FORTREE_CITY_MART), LOCALID_FORTREE_MART_CLERK },
+ { MAP_GROUP(MAP_MOSSDEEP_CITY_MART), MAP_NUM(MAP_MOSSDEEP_CITY_MART), LOCALID_MOSSDEEP_MART_CLERK },
+ { MAP_GROUP(MAP_SOOTOPOLIS_CITY_MART), MAP_NUM(MAP_SOOTOPOLIS_CITY_MART), LOCALID_SOOTOPOLIS_MART_CLERK },
+ { MAP_GROUP(MAP_BATTLE_FRONTIER_MART), MAP_NUM(MAP_BATTLE_FRONTIER_MART), LOCALID_FRONTIER_MART_CLERK },
};
u8 i;
@@ -3825,7 +3825,7 @@ void GetBattlePyramidHint(void)
// Used to avoid a potential softlock if the player respawns on Dewford with no way off
void ResetHealLocationFromDewford(void)
{
- if (gSaveBlock1Ptr->lastHealLocation.mapGroup == MAP_GROUP(DEWFORD_TOWN) && gSaveBlock1Ptr->lastHealLocation.mapNum == MAP_NUM(DEWFORD_TOWN))
+ if (gSaveBlock1Ptr->lastHealLocation.mapGroup == MAP_GROUP(MAP_DEWFORD_TOWN) && gSaveBlock1Ptr->lastHealLocation.mapNum == MAP_NUM(MAP_DEWFORD_TOWN))
SetLastHealLocationWarp(HEAL_LOCATION_PETALBURG_CITY);
}
diff --git a/src/follower_helper.c b/src/follower_helper.c
index 76481bb75f..e85289d1f7 100644
--- a/src/follower_helper.c
+++ b/src/follower_helper.c
@@ -106,7 +106,7 @@ const struct FollowerMsgInfoExtended gFollowerConditionalMessages[COND_MSG_COUNT
.emotion = FOLLOWER_EMOTION_HAPPY,
.conditions =
{
- MATCH_MAP(EVER_GRANDE_CITY),
+ MATCH_MAP(MAP_EVER_GRANDE_CITY),
},
},
[COND_MSG_ROUTE_112] =
@@ -115,7 +115,7 @@ const struct FollowerMsgInfoExtended gFollowerConditionalMessages[COND_MSG_COUNT
.emotion = FOLLOWER_EMOTION_HAPPY,
.conditions =
{
- MATCH_MAP(ROUTE112),
+ MATCH_MAP(MAP_ROUTE112),
},
},
[COND_MSG_DAY_CARE] =
@@ -125,7 +125,7 @@ const struct FollowerMsgInfoExtended gFollowerConditionalMessages[COND_MSG_COUNT
.emotion = FOLLOWER_EMOTION_NEUTRAL,
.conditions =
{
- MATCH_MAP(ROUTE117_POKEMON_DAY_CARE)
+ MATCH_MAP(MAP_ROUTE117_POKEMON_DAY_CARE)
},
},
[COND_MSG_MART] =
@@ -154,7 +154,7 @@ const struct FollowerMsgInfoExtended gFollowerConditionalMessages[COND_MSG_COUNT
.emotion = FOLLOWER_EMOTION_PENSIVE,
.conditions =
{
- MATCH_MAP(MAUVILLE_CITY_BIKE_SHOP)
+ MATCH_MAP(MAP_MAUVILLE_CITY_BIKE_SHOP)
},
},
[COND_MSG_MACHINES] =
@@ -165,9 +165,9 @@ const struct FollowerMsgInfoExtended gFollowerConditionalMessages[COND_MSG_COUNT
.orFlag = 1, // match any of these maps
.conditions =
{
- MATCH_MAP(NEW_MAUVILLE_INSIDE),
- MATCH_MAP(SLATEPORT_CITY_STERNS_SHIPYARD_1F),
- MATCH_MAP(SLATEPORT_CITY_STERNS_SHIPYARD_2F),
+ MATCH_MAP(MAP_NEW_MAUVILLE_INSIDE),
+ MATCH_MAP(MAP_SLATEPORT_CITY_STERNS_SHIPYARD_1F),
+ MATCH_MAP(MAP_SLATEPORT_CITY_STERNS_SHIPYARD_2F),
},
},
[COND_MSG_SAILING] =
@@ -225,7 +225,7 @@ const struct FollowerMsgInfoExtended gFollowerConditionalMessages[COND_MSG_COUNT
.emotion = FOLLOWER_EMOTION_SURPRISE,
.conditions =
{
- MATCH_MAP(LILYCOVE_CITY_DEPARTMENT_STORE_ELEVATOR),
+ MATCH_MAP(MAP_LILYCOVE_CITY_DEPARTMENT_STORE_ELEVATOR),
},
},
[COND_MSG_ICE_ROOM] =
@@ -235,7 +235,7 @@ const struct FollowerMsgInfoExtended gFollowerConditionalMessages[COND_MSG_COUNT
.emotion = FOLLOWER_EMOTION_SURPRISE,
.conditions =
{
- MATCH_MAP(SHOAL_CAVE_LOW_TIDE_ICE_ROOM),
+ MATCH_MAP(MAP_SHOAL_CAVE_LOW_TIDE_ICE_ROOM),
},
},
[COND_MSG_ROUTE_117] =
@@ -244,7 +244,7 @@ const struct FollowerMsgInfoExtended gFollowerConditionalMessages[COND_MSG_COUNT
.emotion = FOLLOWER_EMOTION_SURPRISE,
.conditions =
{
- MATCH_MAP(ROUTE117),
+ MATCH_MAP(MAP_ROUTE117),
},
},
[COND_MSG_DRAGON_GROWL] =
diff --git a/src/follower_npc.c b/src/follower_npc.c
index e363261d4e..40b08cb365 100644
--- a/src/follower_npc.c
+++ b/src/follower_npc.c
@@ -137,7 +137,7 @@ const u8 *GetFollowerNPCScriptPointer(void)
#if FNPC_ENABLE_NPC_FOLLOWERS
if (PlayerHasFollowerNPC())
return gSaveBlock3Ptr->NPCfollower.script;
-
+
#endif
return NULL;
}
@@ -735,7 +735,7 @@ u32 DetermineFollowerNPCState(struct ObjectEvent *follower, u32 state, u32 direc
follower->facingDirectionLocked = TRUE;
newState = delayedState + (direction -1);
- }
+ }
// Clear ice tile stuff.
follower->disableAnim = FALSE;
@@ -1022,6 +1022,17 @@ void NPCFollow(struct ObjectEvent *npc, u32 state, bool32 ignoreScriptActive)
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)
{
@@ -1250,7 +1261,6 @@ void FollowerNPC_WarpSetEnd(void)
{
struct ObjectEvent *player;
struct ObjectEvent *follower;
- u32 toY;
if (!PlayerHasFollowerNPC())
return;
@@ -1258,14 +1268,31 @@ void FollowerNPC_WarpSetEnd(void)
player = &gObjectEvents[gPlayerAvatar.objectEventId];
follower = &gObjectEvents[GetFollowerNPCObjectId()];
- SetFollowerNPCData(FNPC_DATA_WARP_END, FNPC_WARP_REAPPEAR);
PlayerLogCoordinates(player);
- 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);
+ // 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;
@@ -1330,7 +1357,7 @@ void FollowerNPC_BindToSurfBlobOnReloadScreen(void)
follower = &gObjectEvents[GetFollowerNPCObjectId()];
TryUpdateFollowerNPCSpriteUnderwater();
- if (GetFollowerNPCData(FNPC_DATA_SURF_BLOB) != FNPC_SURF_BLOB_RECREATE && GetFollowerNPCData(FNPC_DATA_SURF_BLOB) != FNPC_SURF_BLOB_DESTROY)
+ 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.
@@ -1543,7 +1570,7 @@ void Task_MoveNPCFollowerAfterForcedMovement(u8 taskId)
// 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;
@@ -1576,7 +1603,7 @@ void Task_MoveNPCFollowerAfterForcedMovement(u8 taskId)
void Task_HideNPCFollowerAfterMovementFinish(u8 taskId)
{
struct ObjectEvent *npcFollower = &gObjectEvents[GetFollowerNPCObjectId()];
-
+
if (ObjectEventClearHeldMovementIfFinished(npcFollower) != 0)
{
HideNPCFollower();
@@ -1601,25 +1628,27 @@ void ScriptSetFollowerNPC(struct ScriptContext *ctx)
void ScriptDestroyFollowerNPC(struct ScriptContext *ctx)
{
- if (PlayerHasFollowerNPC())
- {
- RemoveObjectEvent(&gObjectEvents[GetFollowerNPCData(FNPC_DATA_OBJ_ID)]);
- FlagSet(GetFollowerNPCData(FNPC_DATA_EVENT_FLAG));
- ClearFollowerNPCData();
- }
+ if (!PlayerHasFollowerNPC())
+ return;
+ RemoveObjectEvent(&gObjectEvents[GetFollowerNPCData(FNPC_DATA_OBJ_ID)]);
+ FlagSet(GetFollowerNPCData(FNPC_DATA_EVENT_FLAG));
+ ClearFollowerNPCData();
UpdateFollowingPokemon();
}
void ScriptFaceFollowerNPC(struct ScriptContext *ctx)
{
- if (PlayerHasFollowerNPC())
- {
- u32 playerDirection, followerDirection;
- struct ObjectEvent *player, *follower;
+ if (!FNPC_ENABLE_NPC_FOLLOWERS || !PlayerHasFollowerNPC())
+ return;
- player = &gObjectEvents[gPlayerAvatar.objectEventId];
- follower = &gObjectEvents[GetFollowerNPCData(FNPC_DATA_OBJ_ID)];
+ 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;
@@ -1655,10 +1684,13 @@ static const u8 *const FollowerNPCHideMovementsSpeedTable[][4] =
void ScriptHideNPCFollower(struct ScriptContext *ctx)
{
+ if (!FNPC_ENABLE_NPC_FOLLOWERS || !PlayerHasFollowerNPC())
+ return;
+
u32 walkSpeed = ScriptReadByte(ctx);
struct ObjectEvent *npc = &gObjectEvents[GetFollowerNPCObjectId()];
- if (PlayerHasFollowerNPC() && npc->invisible == FALSE)
+ if (npc->invisible == FALSE)
{
u32 direction = DetermineFollowerNPCDirection(&gObjectEvents[gPlayerAvatar.objectEventId], npc);
@@ -1682,8 +1714,10 @@ void ScriptUpdateFollowingMon(struct ScriptContext *ctx)
void ScriptChangeFollowerNPCBattlePartner(struct ScriptContext *ctx)
{
+ if (!FNPC_ENABLE_NPC_FOLLOWERS || !PlayerHasFollowerNPC())
+ return;
+
u32 newBattlePartner = ScriptReadHalfword(ctx);
- if (PlayerHasFollowerNPC())
- SetFollowerNPCData(FNPC_DATA_BATTLE_PARTNER, newBattlePartner);
+ SetFollowerNPCData(FNPC_DATA_BATTLE_PARTNER, newBattlePartner);
}
diff --git a/src/frontier_pass.c b/src/frontier_pass.c
index a351d81ce9..12bb1f3ea7 100644
--- a/src/frontier_pass.c
+++ b/src/frontier_pass.c
@@ -1580,48 +1580,48 @@ static void Task_HandleFrontierMap(u8 taskId)
static u8 MapNumToFrontierFacilityId(u16 mapNum) // id + 1, zero means not a frontier map number
{
// In Battle Tower
- if ((mapNum >= MAP_NUM(BATTLE_FRONTIER_BATTLE_TOWER_LOBBY) && mapNum <= MAP_NUM(BATTLE_FRONTIER_BATTLE_TOWER_BATTLE_ROOM))
- || (mapNum >= MAP_NUM(BATTLE_FRONTIER_BATTLE_TOWER_MULTI_PARTNER_ROOM) && mapNum <= MAP_NUM(BATTLE_FRONTIER_BATTLE_TOWER_MULTI_BATTLE_ROOM)))
+ if ((mapNum >= MAP_NUM(MAP_BATTLE_FRONTIER_BATTLE_TOWER_LOBBY) && mapNum <= MAP_NUM(MAP_BATTLE_FRONTIER_BATTLE_TOWER_BATTLE_ROOM))
+ || (mapNum >= MAP_NUM(MAP_BATTLE_FRONTIER_BATTLE_TOWER_MULTI_PARTNER_ROOM) && mapNum <= MAP_NUM(MAP_BATTLE_FRONTIER_BATTLE_TOWER_MULTI_BATTLE_ROOM)))
return FRONTIER_FACILITY_TOWER + 1;
// In Battle Dome
- else if (mapNum == MAP_NUM(BATTLE_FRONTIER_BATTLE_DOME_LOBBY)
- || mapNum == MAP_NUM(BATTLE_FRONTIER_BATTLE_DOME_CORRIDOR)
- || mapNum == MAP_NUM(BATTLE_FRONTIER_BATTLE_DOME_PRE_BATTLE_ROOM)
- || mapNum == MAP_NUM(BATTLE_FRONTIER_BATTLE_DOME_BATTLE_ROOM))
+ else if (mapNum == MAP_NUM(MAP_BATTLE_FRONTIER_BATTLE_DOME_LOBBY)
+ || mapNum == MAP_NUM(MAP_BATTLE_FRONTIER_BATTLE_DOME_CORRIDOR)
+ || mapNum == MAP_NUM(MAP_BATTLE_FRONTIER_BATTLE_DOME_PRE_BATTLE_ROOM)
+ || mapNum == MAP_NUM(MAP_BATTLE_FRONTIER_BATTLE_DOME_BATTLE_ROOM))
return FRONTIER_FACILITY_DOME + 1;
// In Battle Palace
- else if (mapNum == MAP_NUM(BATTLE_FRONTIER_BATTLE_PALACE_LOBBY)
- || mapNum == MAP_NUM(BATTLE_FRONTIER_BATTLE_PALACE_CORRIDOR)
- || mapNum == MAP_NUM(BATTLE_FRONTIER_BATTLE_PALACE_BATTLE_ROOM))
+ else if (mapNum == MAP_NUM(MAP_BATTLE_FRONTIER_BATTLE_PALACE_LOBBY)
+ || mapNum == MAP_NUM(MAP_BATTLE_FRONTIER_BATTLE_PALACE_CORRIDOR)
+ || mapNum == MAP_NUM(MAP_BATTLE_FRONTIER_BATTLE_PALACE_BATTLE_ROOM))
return FRONTIER_FACILITY_PALACE + 1;
// In Battle Arena
- else if (mapNum == MAP_NUM(BATTLE_FRONTIER_BATTLE_ARENA_LOBBY)
- || mapNum == MAP_NUM(BATTLE_FRONTIER_BATTLE_ARENA_CORRIDOR)
- || mapNum == MAP_NUM(BATTLE_FRONTIER_BATTLE_ARENA_BATTLE_ROOM))
+ else if (mapNum == MAP_NUM(MAP_BATTLE_FRONTIER_BATTLE_ARENA_LOBBY)
+ || mapNum == MAP_NUM(MAP_BATTLE_FRONTIER_BATTLE_ARENA_CORRIDOR)
+ || mapNum == MAP_NUM(MAP_BATTLE_FRONTIER_BATTLE_ARENA_BATTLE_ROOM))
return FRONTIER_FACILITY_ARENA + 1;
// In Battle Factory
- else if (mapNum == MAP_NUM(BATTLE_FRONTIER_BATTLE_FACTORY_LOBBY)
- || mapNum == MAP_NUM(BATTLE_FRONTIER_BATTLE_FACTORY_PRE_BATTLE_ROOM)
- || mapNum == MAP_NUM(BATTLE_FRONTIER_BATTLE_FACTORY_BATTLE_ROOM))
+ else if (mapNum == MAP_NUM(MAP_BATTLE_FRONTIER_BATTLE_FACTORY_LOBBY)
+ || mapNum == MAP_NUM(MAP_BATTLE_FRONTIER_BATTLE_FACTORY_PRE_BATTLE_ROOM)
+ || mapNum == MAP_NUM(MAP_BATTLE_FRONTIER_BATTLE_FACTORY_BATTLE_ROOM))
return FRONTIER_FACILITY_FACTORY + 1;
// In Battle Pike
- else if (mapNum == MAP_NUM(BATTLE_FRONTIER_BATTLE_PIKE_LOBBY)
- || mapNum == MAP_NUM(BATTLE_FRONTIER_BATTLE_PIKE_CORRIDOR)
- || mapNum == MAP_NUM(BATTLE_FRONTIER_BATTLE_PIKE_THREE_PATH_ROOM)
- || mapNum == MAP_NUM(BATTLE_FRONTIER_BATTLE_PIKE_ROOM_NORMAL)
- || mapNum == MAP_NUM(BATTLE_FRONTIER_BATTLE_PIKE_ROOM_FINAL)
- || mapNum == MAP_NUM(BATTLE_FRONTIER_BATTLE_PIKE_ROOM_WILD_MONS))
+ else if (mapNum == MAP_NUM(MAP_BATTLE_FRONTIER_BATTLE_PIKE_LOBBY)
+ || mapNum == MAP_NUM(MAP_BATTLE_FRONTIER_BATTLE_PIKE_CORRIDOR)
+ || mapNum == MAP_NUM(MAP_BATTLE_FRONTIER_BATTLE_PIKE_THREE_PATH_ROOM)
+ || mapNum == MAP_NUM(MAP_BATTLE_FRONTIER_BATTLE_PIKE_ROOM_NORMAL)
+ || mapNum == MAP_NUM(MAP_BATTLE_FRONTIER_BATTLE_PIKE_ROOM_FINAL)
+ || mapNum == MAP_NUM(MAP_BATTLE_FRONTIER_BATTLE_PIKE_ROOM_WILD_MONS))
return FRONTIER_FACILITY_PIKE + 1;
// In Battle Pyramid
- else if (mapNum == MAP_NUM(BATTLE_FRONTIER_BATTLE_PYRAMID_LOBBY)
- || mapNum == MAP_NUM(BATTLE_FRONTIER_BATTLE_PYRAMID_FLOOR)
- || mapNum == MAP_NUM(BATTLE_FRONTIER_BATTLE_PYRAMID_TOP))
+ else if (mapNum == MAP_NUM(MAP_BATTLE_FRONTIER_BATTLE_PYRAMID_LOBBY)
+ || mapNum == MAP_NUM(MAP_BATTLE_FRONTIER_BATTLE_PYRAMID_FLOOR)
+ || mapNum == MAP_NUM(MAP_BATTLE_FRONTIER_BATTLE_PYRAMID_TOP))
return FRONTIER_FACILITY_PYRAMID + 1;
else
@@ -1657,8 +1657,8 @@ static void InitFrontierMapSprites(void)
{
s8 mapNum = gSaveBlock1Ptr->location.mapNum;
- if (mapNum == MAP_NUM(BATTLE_FRONTIER_OUTSIDE_WEST)
- || (mapNum == MAP_NUM(BATTLE_FRONTIER_OUTSIDE_EAST) && (x = 55)))
+ if (mapNum == MAP_NUM(MAP_BATTLE_FRONTIER_OUTSIDE_WEST)
+ || (mapNum == MAP_NUM(MAP_BATTLE_FRONTIER_OUTSIDE_EAST) && (x = 55)))
{
x += gSaveBlock1Ptr->pos.x;
y = gSaveBlock1Ptr->pos.y;
@@ -1679,7 +1679,7 @@ static void InitFrontierMapSprites(void)
else
{
// Handle Artisan Cave.
- if (gSaveBlock1Ptr->escapeWarp.mapNum == MAP_NUM(BATTLE_FRONTIER_OUTSIDE_EAST))
+ if (gSaveBlock1Ptr->escapeWarp.mapNum == MAP_NUM(MAP_BATTLE_FRONTIER_OUTSIDE_EAST))
x = gSaveBlock1Ptr->escapeWarp.x + 55;
else
x = gSaveBlock1Ptr->escapeWarp.x;
diff --git a/src/frontier_util.c b/src/frontier_util.c
index ab6dc867fd..cf2cbaba8d 100644
--- a/src/frontier_util.c
+++ b/src/frontier_util.c
@@ -690,7 +690,7 @@ static const u8 sBattlePointAwards[NUM_FRONTIER_FACILITIES][FRONTIER_MODE_COUNT]
},
};
-static void (* const sFrontierUtilFuncs[])(void) =
+static void (*const sFrontierUtilFuncs[])(void) =
{
[FRONTIER_UTIL_FUNC_GET_STATUS] = GetChallengeStatus,
[FRONTIER_UTIL_FUNC_GET_DATA] = GetFrontierData,
diff --git a/src/hall_of_fame.c b/src/hall_of_fame.c
index 55208dd33f..06142b0bb0 100644
--- a/src/hall_of_fame.c
+++ b/src/hall_of_fame.c
@@ -84,7 +84,7 @@ static void Task_HofPC_HandlePaletteOnExit(u8 taskId);
static void Task_HofPC_HandleExit(u8 taskId);
static void Task_HofPC_ExitOnButtonPress(u8 taskId);
static void SpriteCB_GetOnScreenAndAnimate(struct Sprite *sprite);
-static void HallOfFame_PrintMonInfo(struct HallofFameMon* currMon, u8 unused1, u8 unused2);
+static void HallOfFame_PrintMonInfo(struct HallofFameMon *currMon, u8 unused1, u8 unused2);
static void HallOfFame_PrintWelcomeText(u8 unusedPossiblyWindowId, u8 unused2);
static void HallOfFame_PrintPlayerInfo(u8 unused1, u8 unused2);
static void Task_DoDomeConfetti(u8 taskId);
@@ -283,7 +283,7 @@ static const union AnimCmd sAnim_WhiteConfettiC[] =
ANIMCMD_END
};
-static const union AnimCmd * const sAnims_Confetti[] =
+static const union AnimCmd *const sAnims_Confetti[] =
{
sAnim_PinkConfettiA,
sAnim_RedConfettiA,
@@ -565,7 +565,7 @@ static void Task_Hof_DisplayMon(u8 taskId)
s16 startX, startY, destX, destY;
u16 currMonId = gTasks[taskId].tDisplayedMonId;
- struct HallofFameMon* currMon = &sHofMonPtr->mon[currMonId];
+ struct HallofFameMon *currMon = &sHofMonPtr->mon[currMonId];
if (gTasks[taskId].tMonNumber > PARTY_SIZE / 2)
{
@@ -599,7 +599,7 @@ static void Task_Hof_DisplayMon(u8 taskId)
static void Task_Hof_PrintMonInfoAfterAnimating(u8 taskId)
{
u16 currMonId = gTasks[taskId].tDisplayedMonId;
- struct HallofFameMon* currMon = &sHofMonPtr->mon[currMonId];
+ struct HallofFameMon *currMon = &sHofMonPtr->mon[currMonId];
struct Sprite *monSprite = &gSprites[gTasks[taskId].tMonSpriteId(currMonId)];
if (monSprite->callback == SpriteCallbackDummy)
@@ -614,7 +614,7 @@ static void Task_Hof_PrintMonInfoAfterAnimating(u8 taskId)
static void Task_Hof_TryDisplayAnotherMon(u8 taskId)
{
u16 currPokeID = gTasks[taskId].tDisplayedMonId;
- struct HallofFameMon* currMon = &sHofMonPtr->mon[currPokeID];
+ struct HallofFameMon *currMon = &sHofMonPtr->mon[currPokeID];
if (gTasks[taskId].tFrameCount != 0)
{
@@ -887,7 +887,7 @@ static void Task_HofPC_CopySaveData(u8 taskId)
static void Task_HofPC_DrawSpritesPrintText(u8 taskId)
{
struct HallofFameTeam *savedTeams = gHoFSaveBuffer;
- struct HallofFameMon* currMon;
+ struct HallofFameMon *currMon;
u16 i;
for (i = 0; i < gTasks[taskId].tCurrTeamNo; i++)
@@ -953,7 +953,7 @@ static void Task_HofPC_DrawSpritesPrintText(u8 taskId)
static void Task_HofPC_PrintMonInfo(u8 taskId)
{
struct HallofFameTeam *savedTeams = gHoFSaveBuffer;
- struct HallofFameMon* currMon;
+ struct HallofFameMon *currMon;
u16 i;
u16 currMonID;
@@ -1108,7 +1108,7 @@ static void HallOfFame_PrintWelcomeText(u8 unusedPossiblyWindowId, u8 unused2)
CopyWindowToVram(0, COPYWIN_FULL);
}
-static void HallOfFame_PrintMonInfo(struct HallofFameMon* currMon, u8 unused1, u8 unused2)
+static void HallOfFame_PrintMonInfo(struct HallofFameMon *currMon, u8 unused1, u8 unused2)
{
u8 text[max(32, POKEMON_NAME_LENGTH + 1)];
u8 *stringPtr;
diff --git a/src/heal_location.c b/src/heal_location.c
index 1743925885..b261fce17d 100644
--- a/src/heal_location.c
+++ b/src/heal_location.c
@@ -13,7 +13,7 @@ u32 GetHealLocationIndexByMap(u16 mapGroup, u16 mapNum)
for (i = 0; i < ARRAY_COUNT(sHealLocations); i++)
{
- if (sHealLocations[i].group == mapGroup && sHealLocations[i].map == mapNum)
+ if (sHealLocations[i].mapGroup == mapGroup && sHealLocations[i].mapNum == mapNum)
return i + 1;
}
return HEAL_LOCATION_NONE;
@@ -34,8 +34,8 @@ u32 GetHealLocationIndexByWarpData(struct WarpData *warp)
u32 i;
for (i = 0; i < ARRAY_COUNT(sHealLocations); i++)
{
- if (sHealLocations[i].group == warp->mapGroup
- && sHealLocations[i].map == warp->mapNum
+ if (sHealLocations[i].mapGroup == warp->mapGroup
+ && sHealLocations[i].mapNum == warp->mapNum
&& sHealLocations[i].x == warp->x
&& sHealLocations[i].y == warp->y)
return i + 1;
@@ -58,8 +58,8 @@ static bool32 IsLastHealLocation(u32 healLocation)
const struct HealLocation *loc = GetHealLocation(healLocation);
const struct WarpData *warpData = &gSaveBlock1Ptr->lastHealLocation;
- return warpData->mapGroup == loc->group
- && warpData->mapNum == loc->map
+ return warpData->mapGroup == loc->mapGroup
+ && warpData->mapNum == loc->mapNum
&& warpData->warpId == WARP_ID_NONE
&& warpData->x == loc->x
&& warpData->y == loc->y;
@@ -78,7 +78,7 @@ bool32 IsLastHealLocationPlayerHouse()
u32 GetHealNpcLocalId(u32 healLocationId)
{
- if (healLocationId == HEAL_LOCATION_NONE || healLocationId >= HEAL_LOCATION_COUNT)
+ if (healLocationId == HEAL_LOCATION_NONE || healLocationId >= NUM_HEAL_LOCATIONS)
return 0;
return sHealNpcLocalId[healLocationId - 1];
@@ -97,8 +97,8 @@ void SetWhiteoutRespawnWarpAndHealerNPC(struct WarpData *warp)
}
pkmCenterHealLocation = sHealLocationsPokemonCenter[healLocationId - 1];
- warp->mapGroup = pkmCenterHealLocation.group;
- warp->mapNum = pkmCenterHealLocation.map;
+ warp->mapGroup = pkmCenterHealLocation.mapGroup;
+ warp->mapNum = pkmCenterHealLocation.mapNum;
warp->warpId = WARP_ID_NONE;
warp->x = pkmCenterHealLocation.x;
warp->y = pkmCenterHealLocation.y;
diff --git a/src/item.c b/src/item.c
index b0135d8f83..d93531e4db 100644
--- a/src/item.c
+++ b/src/item.c
@@ -23,7 +23,7 @@
static bool8 CheckPyramidBagHasItem(u16 itemId, u16 count);
static bool8 CheckPyramidBagHasSpace(u16 itemId, u16 count);
-static const u8 *ItemId_GetPluralName(u16);
+static const u8 *GetItemPluralName(u16);
static bool32 DoesItemHavePluralName(u16);
EWRAM_DATA struct BagPocket gBagPockets[POCKETS_COUNT] = {0};
@@ -86,7 +86,7 @@ void SetBagItemsPointers(void)
u8 *CopyItemName(u16 itemId, u8 *dst)
{
- return StringCopy(dst, ItemId_GetName(itemId));
+ return StringCopy(dst, GetItemName(itemId));
}
const u8 sText_s[] =_("s");
@@ -95,15 +95,15 @@ u8 *CopyItemNameHandlePlural(u16 itemId, u8 *dst, u32 quantity)
{
if (quantity == 1)
{
- return StringCopy(dst, ItemId_GetName(itemId));
+ return StringCopy(dst, GetItemName(itemId));
}
else if (DoesItemHavePluralName(itemId))
{
- return StringCopy(dst, ItemId_GetPluralName(itemId));
+ return StringCopy(dst, GetItemPluralName(itemId));
}
else
{
- u8 *end = StringCopy(dst, ItemId_GetName(itemId));
+ u8 *end = StringCopy(dst, GetItemName(itemId));
return StringCopy(end, sText_s);
}
}
@@ -125,11 +125,11 @@ bool8 CheckBagHasItem(u16 itemId, u16 count)
u8 i;
u8 pocket;
- if (ItemId_GetPocket(itemId) == 0)
+ if (GetItemPocket(itemId) == 0)
return FALSE;
if (InBattlePyramid() || FlagGet(FLAG_STORING_ITEMS_IN_PYRAMID_BAG) == TRUE)
return CheckPyramidBagHasItem(itemId, count);
- pocket = ItemId_GetPocket(itemId) - 1;
+ pocket = GetItemPocket(itemId) - 1;
// Check for item slots that contain the item
for (i = 0; i < gBagPockets[pocket].capacity; i++)
{
@@ -179,7 +179,7 @@ bool8 HasAtLeastOnePokeBall(void)
bool8 CheckBagHasSpace(u16 itemId, u16 count)
{
- if (ItemId_GetPocket(itemId) == POCKET_NONE)
+ if (GetItemPocket(itemId) == POCKET_NONE)
return FALSE;
if (InBattlePyramid() || FlagGet(FLAG_STORING_ITEMS_IN_PYRAMID_BAG) == TRUE)
@@ -191,11 +191,11 @@ bool8 CheckBagHasSpace(u16 itemId, u16 count)
u32 GetFreeSpaceForItemInBag(u16 itemId)
{
u8 i;
- u8 pocket = ItemId_GetPocket(itemId) - 1;
+ u8 pocket = GetItemPocket(itemId) - 1;
u16 ownedCount;
u32 spaceForItem = 0;
- if (ItemId_GetPocket(itemId) == POCKET_NONE)
+ if (GetItemPocket(itemId) == POCKET_NONE)
return 0;
// Check space in any existing item slots that already contain this item
@@ -218,7 +218,7 @@ bool8 AddBagItem(u16 itemId, u16 count)
{
u8 i;
- if (ItemId_GetPocket(itemId) == POCKET_NONE)
+ if (GetItemPocket(itemId) == POCKET_NONE)
return FALSE;
// check Battle Pyramid Bag
@@ -231,7 +231,7 @@ bool8 AddBagItem(u16 itemId, u16 count)
struct BagPocket *itemPocket;
struct ItemSlot *newItems;
u16 ownedCount;
- u8 pocket = ItemId_GetPocket(itemId) - 1;
+ u8 pocket = GetItemPocket(itemId) - 1;
itemPocket = &gBagPockets[pocket];
newItems = AllocZeroed(itemPocket->capacity * sizeof(struct ItemSlot));
@@ -320,7 +320,7 @@ bool8 RemoveBagItem(u16 itemId, u16 count)
u8 i;
u16 totalQuantity = 0;
- if (ItemId_GetPocket(itemId) == POCKET_NONE || itemId == ITEM_NONE)
+ if (GetItemPocket(itemId) == POCKET_NONE || itemId == ITEM_NONE)
return FALSE;
// check Battle Pyramid Bag
@@ -335,7 +335,7 @@ bool8 RemoveBagItem(u16 itemId, u16 count)
u16 ownedCount;
struct BagPocket *itemPocket;
- pocket = ItemId_GetPocket(itemId) - 1;
+ pocket = GetItemPocket(itemId) - 1;
itemPocket = &gBagPockets[pocket];
for (i = 0; i < itemPocket->capacity; i++)
@@ -405,7 +405,7 @@ bool8 RemoveBagItem(u16 itemId, u16 count)
u8 GetPocketByItemId(u16 itemId)
{
- return ItemId_GetPocket(itemId);
+ return GetItemPocket(itemId);
}
void ClearItemSlots(struct ItemSlot *itemSlots, u8 itemCount)
@@ -605,7 +605,7 @@ void SortBerriesOrTMHMs(struct BagPocket *bagPocket)
}
}
-void MoveItemSlotInList(struct ItemSlot* itemSlots_, u32 from, u32 to_)
+void MoveItemSlotInList(struct ItemSlot *itemSlots_, u32 from, u32 to_)
{
// dumb assignments needed to match
struct ItemSlot *itemSlots = itemSlots_;
@@ -645,7 +645,7 @@ u16 CountTotalItemQuantityInBag(u16 itemId)
{
u16 i;
u16 ownedCount = 0;
- struct BagPocket *bagPocket = &gBagPockets[ItemId_GetPocket(itemId) - 1];
+ struct BagPocket *bagPocket = &gBagPockets[GetItemPocket(itemId) - 1];
for (i = 0; i < bagPocket->capacity; i++)
{
@@ -865,12 +865,12 @@ static u16 SanitizeItemId(u16 itemId)
return itemId;
}
-const u8 *ItemId_GetName(u16 itemId)
+const u8 *GetItemName(u16 itemId)
{
return gItemsInfo[SanitizeItemId(itemId)].name;
}
-u32 ItemId_GetPrice(u16 itemId)
+u32 GetItemPrice(u16 itemId)
{
return gItemsInfo[SanitizeItemId(itemId)].price;
}
@@ -880,12 +880,12 @@ static bool32 DoesItemHavePluralName(u16 itemId)
return (gItemsInfo[SanitizeItemId(itemId)].pluralName[0] != '\0');
}
-static const u8 *ItemId_GetPluralName(u16 itemId)
+static const u8 *GetItemPluralName(u16 itemId)
{
return gItemsInfo[SanitizeItemId(itemId)].pluralName;
}
-const u8 *ItemId_GetEffect(u32 itemId)
+const u8 *GetItemEffect(u32 itemId)
{
if (itemId == ITEM_ENIGMA_BERRY_E_READER)
#if FREE_ENIGMA_BERRY == FALSE
@@ -897,48 +897,48 @@ const u8 *ItemId_GetEffect(u32 itemId)
return gItemsInfo[SanitizeItemId(itemId)].effect;
}
-u32 ItemId_GetHoldEffect(u32 itemId)
+u32 GetItemHoldEffect(u32 itemId)
{
return gItemsInfo[SanitizeItemId(itemId)].holdEffect;
}
-u32 ItemId_GetHoldEffectParam(u32 itemId)
+u32 GetItemHoldEffectParam(u32 itemId)
{
return gItemsInfo[SanitizeItemId(itemId)].holdEffectParam;
}
-const u8 *ItemId_GetDescription(u16 itemId)
+const u8 *GetItemDescription(u16 itemId)
{
return gItemsInfo[SanitizeItemId(itemId)].description;
}
-u8 ItemId_GetImportance(u16 itemId)
+u8 GetItemImportance(u16 itemId)
{
return gItemsInfo[SanitizeItemId(itemId)].importance;
}
-u8 ItemId_GetConsumability(u16 itemId)
+u8 GetItemConsumability(u16 itemId)
{
return !gItemsInfo[SanitizeItemId(itemId)].notConsumed;
}
-u8 ItemId_GetPocket(u16 itemId)
+u8 GetItemPocket(u16 itemId)
{
return gItemsInfo[SanitizeItemId(itemId)].pocket;
}
-u8 ItemId_GetType(u16 itemId)
+u8 GetItemType(u16 itemId)
{
return gItemsInfo[SanitizeItemId(itemId)].type;
}
-ItemUseFunc ItemId_GetFieldFunc(u16 itemId)
+ItemUseFunc GetItemFieldFunc(u16 itemId)
{
return gItemsInfo[SanitizeItemId(itemId)].fieldUseFunc;
}
// Returns an item's battle effect script ID.
-u8 ItemId_GetBattleUsage(u16 itemId)
+u8 GetItemBattleUsage(u16 itemId)
{
u16 item = SanitizeItemId(itemId);
// Handle E-Reader berries.
@@ -969,12 +969,12 @@ u8 ItemId_GetBattleUsage(u16 itemId)
return gItemsInfo[item].battleUsage;
}
-u32 ItemId_GetSecondaryId(u32 itemId)
+u32 GetItemSecondaryId(u32 itemId)
{
return gItemsInfo[SanitizeItemId(itemId)].secondaryId;
}
-u32 ItemId_GetFlingPower(u32 itemId)
+u32 GetItemFlingPower(u32 itemId)
{
return gItemsInfo[SanitizeItemId(itemId)].flingPower;
}
@@ -982,7 +982,7 @@ u32 ItemId_GetFlingPower(u32 itemId)
u32 GetItemStatus1Mask(u16 itemId)
{
- const u8 *effect = ItemId_GetEffect(itemId);
+ const u8 *effect = GetItemEffect(itemId);
switch (effect[3])
{
case ITEM3_PARALYSIS:
@@ -1003,7 +1003,7 @@ u32 GetItemStatus1Mask(u16 itemId)
u32 GetItemStatus2Mask(u16 itemId)
{
- const u8 *effect = ItemId_GetEffect(itemId);
+ const u8 *effect = GetItemEffect(itemId);
if (effect[3] & ITEM3_STATUS_ALL)
return STATUS2_INFATUATION | STATUS2_CONFUSION;
else if (effect[0] & ITEM0_INFATUATION)
diff --git a/src/item_menu.c b/src/item_menu.c
index 5ed5e33024..900ddd3bc3 100755
--- a/src/item_menu.c
+++ b/src/item_menu.c
@@ -138,7 +138,7 @@ static void PrepareTMHMMoveWindow(void);
static bool8 IsWallysBag(void);
static void Task_WallyTutorialBagMenu(u8);
static void Task_BagMenu_HandleInput(u8);
-static void GetItemName(u8 *, u16);
+static void GetItemNameFromPocket(u8 *, u16);
static void PrintItemDescription(int);
static void BagMenu_PrintCursorAtPos(u8, u8);
static void BagMenu_Print(u8, u8, const u8 *, u8, u8, u8, u8, u8, u8);
@@ -883,7 +883,7 @@ static void LoadBagItemListBuffers(u8 pocketId)
{
for (i = 0; i < gBagMenu->numItemStacks[pocketId] - 1; i++)
{
- GetItemName(sListBuffer2->name[i], pocket->itemSlots[i].itemId);
+ GetItemNameFromPocket(sListBuffer2->name[i], pocket->itemSlots[i].itemId);
subBuffer = sListBuffer1->subBuffers;
subBuffer[i].name = sListBuffer2->name[i];
subBuffer[i].id = i;
@@ -897,7 +897,7 @@ static void LoadBagItemListBuffers(u8 pocketId)
{
for (i = 0; i < gBagMenu->numItemStacks[pocketId]; i++)
{
- GetItemName(sListBuffer2->name[i], pocket->itemSlots[i].itemId);
+ GetItemNameFromPocket(sListBuffer2->name[i], pocket->itemSlots[i].itemId);
subBuffer = sListBuffer1->subBuffers;
subBuffer[i].name = sListBuffer2->name[i];
subBuffer[i].id = i;
@@ -909,7 +909,7 @@ static void LoadBagItemListBuffers(u8 pocketId)
gMultiuseListMenuTemplate.maxShowed = gBagMenu->numShownItems[pocketId];
}
-static void GetItemName(u8 *dest, u16 itemId)
+static void GetItemNameFromPocket(u8 *dest, u16 itemId)
{
u8 *end;
switch (gBagPosition.pocket)
@@ -987,7 +987,7 @@ static void BagMenu_ItemPrintCallback(u8 windowId, u32 itemIndex, u8 y)
if (itemId >= ITEM_HM01 && itemId <= ITEM_HM08)
BlitBitmapToWindow(windowId, gBagMenuHMIcon_Gfx, 8, y - 1, 16, 16);
- if (gBagPosition.pocket != KEYITEMS_POCKET && ItemId_GetImportance(itemId) == FALSE)
+ if (gBagPosition.pocket != KEYITEMS_POCKET && GetItemImportance(itemId) == FALSE)
{
// Print item quantity
ConvertIntToDecimalStringN(gStringVar1, itemQuantity, STR_CONV_MODE_RIGHT_ALIGN, MAX_ITEM_DIGITS);
@@ -1009,7 +1009,7 @@ static void PrintItemDescription(int itemIndex)
const u8 *str;
if (itemIndex != LIST_CANCEL)
{
- str = ItemId_GetDescription(BagGetItemIdByPocketPosition(gBagPosition.pocket + 1, itemIndex));
+ str = GetItemDescription(BagGetItemIdByPocketPosition(gBagPosition.pocket + 1, itemIndex));
}
else
{
@@ -1559,7 +1559,7 @@ static void OpenContextMenu(u8 taskId)
{
case ITEMMENULOCATION_BATTLE:
case ITEMMENULOCATION_WALLY:
- if (ItemId_GetBattleUsage(gSpecialVar_ItemId))
+ if (GetItemBattleUsage(gSpecialVar_ItemId))
{
gBagMenu->contextMenuItemsPtr = sContextMenuItems_BattleUse;
gBagMenu->contextMenuNumItems = ARRAY_COUNT(sContextMenuItems_BattleUse);
@@ -1575,7 +1575,7 @@ static void OpenContextMenu(u8 taskId)
gBagMenu->contextMenuNumItems = ARRAY_COUNT(sContextMenuItems_BerryBlenderCrush);
break;
case ITEMMENULOCATION_APPRENTICE:
- if (!ItemId_GetImportance(gSpecialVar_ItemId) && gSpecialVar_ItemId != ITEM_ENIGMA_BERRY_E_READER)
+ if (!GetItemImportance(gSpecialVar_ItemId) && gSpecialVar_ItemId != ITEM_ENIGMA_BERRY_E_READER)
{
gBagMenu->contextMenuItemsPtr = sContextMenuItems_Apprentice;
gBagMenu->contextMenuNumItems = ARRAY_COUNT(sContextMenuItems_Apprentice);
@@ -1587,7 +1587,7 @@ static void OpenContextMenu(u8 taskId)
}
break;
case ITEMMENULOCATION_FAVOR_LADY:
- if (!ItemId_GetImportance(gSpecialVar_ItemId) && gSpecialVar_ItemId != ITEM_ENIGMA_BERRY_E_READER)
+ if (!GetItemImportance(gSpecialVar_ItemId) && gSpecialVar_ItemId != ITEM_ENIGMA_BERRY_E_READER)
{
gBagMenu->contextMenuItemsPtr = sContextMenuItems_FavorLady;
gBagMenu->contextMenuNumItems = ARRAY_COUNT(sContextMenuItems_FavorLady);
@@ -1599,7 +1599,7 @@ static void OpenContextMenu(u8 taskId)
}
break;
case ITEMMENULOCATION_QUIZ_LADY:
- if (!ItemId_GetImportance(gSpecialVar_ItemId) && gSpecialVar_ItemId != ITEM_ENIGMA_BERRY_E_READER)
+ if (!GetItemImportance(gSpecialVar_ItemId) && gSpecialVar_ItemId != ITEM_ENIGMA_BERRY_E_READER)
{
gBagMenu->contextMenuItemsPtr = sContextMenuItems_QuizLady;
gBagMenu->contextMenuNumItems = ARRAY_COUNT(sContextMenuItems_QuizLady);
@@ -1813,10 +1813,10 @@ static void RemoveContextWindow(void)
static void ItemMenu_UseOutOfBattle(u8 taskId)
{
- if (ItemId_GetFieldFunc(gSpecialVar_ItemId))
+ if (GetItemFieldFunc(gSpecialVar_ItemId))
{
RemoveContextWindow();
- if (CalculatePlayerPartyCount() == 0 && ItemId_GetType(gSpecialVar_ItemId) == ITEM_USE_PARTY_MENU)
+ if (CalculatePlayerPartyCount() == 0 && GetItemType(gSpecialVar_ItemId) == ITEM_USE_PARTY_MENU)
{
PrintThereIsNoPokemon(taskId);
}
@@ -1825,7 +1825,7 @@ static void ItemMenu_UseOutOfBattle(u8 taskId)
FillWindowPixelBuffer(WIN_DESCRIPTION, PIXEL_FILL(0));
ScheduleBgCopyTilemapToVram(0);
if (gBagPosition.pocket != BERRIES_POCKET)
- ItemId_GetFieldFunc(gSpecialVar_ItemId)(taskId);
+ GetItemFieldFunc(gSpecialVar_ItemId)(taskId);
else
ItemUseOutOfBattle_Berry(taskId);
}
@@ -1957,7 +1957,7 @@ static void ItemMenu_Give(u8 taskId)
{
DisplayItemMessage(taskId, FONT_NORMAL, gText_CantWriteMail, HandleErrorMessage);
}
- else if (!ItemId_GetImportance(gSpecialVar_ItemId))
+ else if (!GetItemImportance(gSpecialVar_ItemId))
{
if (CalculatePlayerPartyCount() == 0)
{
@@ -2017,8 +2017,8 @@ static void ItemMenu_Cancel(u8 taskId)
static void ItemMenu_UseInBattle(u8 taskId)
{
// Safety check
- u16 type = ItemId_GetType(gSpecialVar_ItemId);
- if (!ItemId_GetBattleUsage(gSpecialVar_ItemId))
+ u16 type = GetItemType(gSpecialVar_ItemId);
+ if (!GetItemBattleUsage(gSpecialVar_ItemId))
return;
RemoveContextWindow();
@@ -2047,7 +2047,7 @@ static void Task_ItemContext_GiveToParty(u8 taskId)
StringExpandPlaceholders(gStringVar4, sText_Var1CantBeHeldHere);
DisplayItemMessage(taskId, FONT_NORMAL, gStringVar4, HandleErrorMessage);
}
- else if (gBagPosition.pocket != KEYITEMS_POCKET && !ItemId_GetImportance(gSpecialVar_ItemId))
+ else if (gBagPosition.pocket != KEYITEMS_POCKET && !GetItemImportance(gSpecialVar_ItemId))
{
Task_FadeAndCloseBagMenu(taskId);
}
@@ -2062,7 +2062,7 @@ static void Task_ItemContext_GiveToPC(u8 taskId)
{
if (ItemIsMail(gSpecialVar_ItemId) == TRUE)
DisplayItemMessage(taskId, FONT_NORMAL, gText_CantWriteMail, HandleErrorMessage);
- else if (gBagPosition.pocket != KEYITEMS_POCKET && !ItemId_GetImportance(gSpecialVar_ItemId))
+ else if (gBagPosition.pocket != KEYITEMS_POCKET && !GetItemImportance(gSpecialVar_ItemId))
gTasks[taskId].func = Task_FadeAndCloseBagMenu;
else
PrintItemCantBeHeld(taskId);
@@ -2087,7 +2087,7 @@ bool8 UseRegisteredKeyItemOnField(void)
PlayerFreeze();
StopPlayerAvatar();
gSpecialVar_ItemId = gSaveBlock1Ptr->registeredItem;
- taskId = CreateTask(ItemId_GetFieldFunc(gSaveBlock1Ptr->registeredItem), 8);
+ taskId = CreateTask(GetItemFieldFunc(gSaveBlock1Ptr->registeredItem), 8);
gTasks[taskId].tUsingRegisteredKeyItem = TRUE;
return TRUE;
}
@@ -2106,7 +2106,7 @@ static void Task_ItemContext_Sell(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- if (ItemId_GetPrice(gSpecialVar_ItemId) == 0 || ItemId_GetImportance(gSpecialVar_ItemId))
+ if (GetItemPrice(gSpecialVar_ItemId) == 0 || GetItemImportance(gSpecialVar_ItemId))
{
CopyItemName(gSpecialVar_ItemId, gStringVar2);
StringExpandPlaceholders(gStringVar4, gText_CantBuyKeyItem);
@@ -2135,7 +2135,7 @@ static void DisplaySellItemPriceAndConfirm(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- ConvertIntToDecimalStringN(gStringVar1, (ItemId_GetPrice(gSpecialVar_ItemId) / ITEM_SELL_FACTOR) * tItemCount, STR_CONV_MODE_LEFT_ALIGN, MAX_MONEY_DIGITS);
+ ConvertIntToDecimalStringN(gStringVar1, (GetItemPrice(gSpecialVar_ItemId) / ITEM_SELL_FACTOR) * tItemCount, STR_CONV_MODE_LEFT_ALIGN, MAX_MONEY_DIGITS);
StringExpandPlaceholders(gStringVar4, gText_ICanPayVar1);
DisplayItemMessage(taskId, FONT_NORMAL, gStringVar4, AskSellItems);
}
@@ -2160,7 +2160,7 @@ static void InitSellHowManyInput(u8 taskId)
s16 *data = gTasks[taskId].data;
u8 windowId = BagMenu_AddWindow(ITEMWIN_QUANTITY_WIDE);
- PrintItemSoldAmount(windowId, 1, (ItemId_GetPrice(gSpecialVar_ItemId) / ITEM_SELL_FACTOR) * tItemCount);
+ PrintItemSoldAmount(windowId, 1, (GetItemPrice(gSpecialVar_ItemId) / ITEM_SELL_FACTOR) * tItemCount);
DisplayCurrentMoneyWindow();
gTasks[taskId].func = Task_ChooseHowManyToSell;
}
@@ -2171,7 +2171,7 @@ static void Task_ChooseHowManyToSell(u8 taskId)
if (AdjustQuantityAccordingToDPadInput(&tItemCount, tQuantity) == TRUE)
{
- PrintItemSoldAmount(gBagMenu->windowIds[ITEMWIN_QUANTITY_WIDE], tItemCount, (ItemId_GetPrice(gSpecialVar_ItemId) / ITEM_SELL_FACTOR) * tItemCount);
+ PrintItemSoldAmount(gBagMenu->windowIds[ITEMWIN_QUANTITY_WIDE], tItemCount, (GetItemPrice(gSpecialVar_ItemId) / ITEM_SELL_FACTOR) * tItemCount);
}
else if (JOY_NEW(A_BUTTON))
{
@@ -2195,7 +2195,7 @@ static void ConfirmSell(u8 taskId)
s16 *data = gTasks[taskId].data;
CopyItemName(gSpecialVar_ItemId, gStringVar2);
- ConvertIntToDecimalStringN(gStringVar1, (ItemId_GetPrice(gSpecialVar_ItemId) / ITEM_SELL_FACTOR) * tItemCount, STR_CONV_MODE_LEFT_ALIGN, MAX_MONEY_DIGITS);
+ ConvertIntToDecimalStringN(gStringVar1, (GetItemPrice(gSpecialVar_ItemId) / ITEM_SELL_FACTOR) * tItemCount, STR_CONV_MODE_LEFT_ALIGN, MAX_MONEY_DIGITS);
StringExpandPlaceholders(gStringVar4, gText_TurnedOverVar1ForVar2);
DisplayItemMessage(taskId, FONT_NORMAL, gStringVar4, SellItem);
}
@@ -2208,7 +2208,7 @@ static void SellItem(u8 taskId)
PlaySE(SE_SHOP);
RemoveBagItem(gSpecialVar_ItemId, tItemCount);
- AddMoney(&gSaveBlock1Ptr->money, (ItemId_GetPrice(gSpecialVar_ItemId) / ITEM_SELL_FACTOR) * tItemCount);
+ AddMoney(&gSaveBlock1Ptr->money, (GetItemPrice(gSpecialVar_ItemId) / ITEM_SELL_FACTOR) * tItemCount);
DestroyListMenuTask(tListTaskId, scrollPos, cursorPos);
UpdatePocketItemList(gBagPosition.pocket);
UpdatePocketListPosition(gBagPosition.pocket);
@@ -2279,7 +2279,7 @@ static void TryDepositItem(u8 taskId)
s16 *data = gTasks[taskId].data;
FillWindowPixelBuffer(WIN_DESCRIPTION, PIXEL_FILL(0));
- if (ItemId_GetImportance(gSpecialVar_ItemId))
+ if (GetItemImportance(gSpecialVar_ItemId))
{
// Can't deposit important items
BagMenu_Print(WIN_DESCRIPTION, FONT_NORMAL, sText_CantStoreImportantItems, 3, 1, 0, 0, 0, COLORID_NORMAL);
@@ -2591,7 +2591,7 @@ static void PrepareTMHMMoveWindow(void)
static void PrintTMHMMoveData(u16 itemId)
{
u8 i;
- u16 moveId;
+ u16 move;
const u8 *text;
FillWindowPixelBuffer(WIN_TMHM_INFO, PIXEL_FILL(0));
@@ -2603,11 +2603,11 @@ static void PrintTMHMMoveData(u16 itemId)
}
else
{
- moveId = ItemIdToBattleMoveId(itemId);
- BlitMenuInfoIcon(WIN_TMHM_INFO, GetMoveType(moveId) + 1, 0, 0);
+ move = ItemIdToBattleMoveId(itemId);
+ BlitMenuInfoIcon(WIN_TMHM_INFO, GetMoveType(move) + 1, 0, 0);
// Print TMHM power
- u32 power = GetMovePower(moveId);
+ u32 power = GetMovePower(move);
if (power <= 1)
{
text = gText_ThreeDashes;
@@ -2619,7 +2619,7 @@ static void PrintTMHMMoveData(u16 itemId)
}
BagMenu_Print(WIN_TMHM_INFO, FONT_NORMAL, text, 7, 12, 0, 0, TEXT_SKIP_DRAW, COLORID_TMHM_INFO);
- u32 accuracy = GetMoveAccuracy(moveId);
+ u32 accuracy = GetMoveAccuracy(move);
// Print TMHM accuracy
if (accuracy == 0)
{
@@ -2633,7 +2633,7 @@ static void PrintTMHMMoveData(u16 itemId)
BagMenu_Print(WIN_TMHM_INFO, FONT_NORMAL, text, 7, 24, 0, 0, TEXT_SKIP_DRAW, COLORID_TMHM_INFO);
// Print TMHM pp
- ConvertIntToDecimalStringN(gStringVar1, GetMovePP(moveId), STR_CONV_MODE_RIGHT_ALIGN, 3);
+ ConvertIntToDecimalStringN(gStringVar1, GetMovePP(move), STR_CONV_MODE_RIGHT_ALIGN, 3);
BagMenu_Print(WIN_TMHM_INFO, FONT_NORMAL, gStringVar1, 7, 36, 0, 0, TEXT_SKIP_DRAW, COLORID_TMHM_INFO);
CopyWindowToVram(WIN_TMHM_INFO, COPYWIN_GFX);
diff --git a/src/item_use.c b/src/item_use.c
index 6f823aad8d..44858183c1 100644
--- a/src/item_use.c
+++ b/src/item_use.c
@@ -127,7 +127,7 @@ static void SetUpItemUseCallback(u8 taskId)
if (gSpecialVar_ItemId == ITEM_ENIGMA_BERRY_E_READER)
type = gTasks[taskId].tEnigmaBerryType - 1;
else
- type = ItemId_GetType(gSpecialVar_ItemId) - 1;
+ type = GetItemType(gSpecialVar_ItemId) - 1;
if (!InBattlePyramid())
{
gBagMenu->newScreenCallback = sItemUseCallbacks[type];
@@ -201,9 +201,9 @@ static void Task_CloseCantUseKeyItemMessage(u8 taskId)
u8 CheckIfItemIsTMHMOrEvolutionStone(u16 itemId)
{
- if (ItemId_GetFieldFunc(itemId) == ItemUseOutOfBattle_TMHM)
+ if (GetItemFieldFunc(itemId) == ItemUseOutOfBattle_TMHM)
return 1;
- else if (ItemId_GetFieldFunc(itemId) == ItemUseOutOfBattle_EvolutionStone)
+ else if (GetItemFieldFunc(itemId) == ItemUseOutOfBattle_EvolutionStone)
return 2;
else
return 0;
@@ -278,11 +278,11 @@ void ItemUseOutOfBattle_Bike(u8 taskId)
static void ItemUseOnFieldCB_Bike(u8 taskId)
{
- if (ItemId_GetSecondaryId(gSpecialVar_ItemId) == MACH_BIKE)
+ if (GetItemSecondaryId(gSpecialVar_ItemId) == MACH_BIKE)
GetOnOffBike(PLAYER_AVATAR_FLAG_MACH_BIKE);
else // ACRO_BIKE
GetOnOffBike(PLAYER_AVATAR_FLAG_ACRO_BIKE);
-
+
FollowerNPC_HandleBike();
ScriptUnfreezeObjectEvents();
UnlockPlayerFieldControls();
@@ -334,7 +334,7 @@ void ItemUseOutOfBattle_Rod(u8 taskId)
static void ItemUseOnFieldCB_Rod(u8 taskId)
{
- StartFishing(ItemId_GetSecondaryId(gSpecialVar_ItemId));
+ StartFishing(GetItemSecondaryId(gSpecialVar_ItemId));
DestroyTask(taskId);
}
@@ -634,15 +634,15 @@ static u8 GetDirectionToHiddenItem(s16 itemDistanceX, s16 itemDistanceY)
static void PlayerFaceHiddenItem(u8 direction)
{
- ObjectEventClearHeldMovementIfFinished(&gObjectEvents[GetObjectEventIdByLocalIdAndMap(OBJ_EVENT_ID_PLAYER, 0, 0)]);
- ObjectEventClearHeldMovement(&gObjectEvents[GetObjectEventIdByLocalIdAndMap(OBJ_EVENT_ID_PLAYER, 0, 0)]);
- UnfreezeObjectEvent(&gObjectEvents[GetObjectEventIdByLocalIdAndMap(OBJ_EVENT_ID_PLAYER, 0, 0)]);
+ ObjectEventClearHeldMovementIfFinished(&gObjectEvents[GetObjectEventIdByLocalIdAndMap(LOCALID_PLAYER, 0, 0)]);
+ ObjectEventClearHeldMovement(&gObjectEvents[GetObjectEventIdByLocalIdAndMap(LOCALID_PLAYER, 0, 0)]);
+ UnfreezeObjectEvent(&gObjectEvents[GetObjectEventIdByLocalIdAndMap(LOCALID_PLAYER, 0, 0)]);
PlayerTurnInPlace(direction);
}
static void Task_HiddenItemNearby(u8 taskId)
{
- if (ObjectEventCheckHeldMovementStatus(&gObjectEvents[GetObjectEventIdByLocalIdAndMap(OBJ_EVENT_ID_PLAYER, 0, 0)]) == TRUE)
+ if (ObjectEventCheckHeldMovementStatus(&gObjectEvents[GetObjectEventIdByLocalIdAndMap(LOCALID_PLAYER, 0, 0)]) == TRUE)
DisplayItemMessageOnField(taskId, sText_ItemFinderNearby, Task_CloseItemfinderMessage);
}
@@ -650,7 +650,7 @@ static void Task_StandingOnHiddenItem(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- if (ObjectEventCheckHeldMovementStatus(&gObjectEvents[GetObjectEventIdByLocalIdAndMap(OBJ_EVENT_ID_PLAYER, 0, 0)]) == TRUE
+ if (ObjectEventCheckHeldMovementStatus(&gObjectEvents[GetObjectEventIdByLocalIdAndMap(LOCALID_PLAYER, 0, 0)]) == TRUE
|| tItemFound == FALSE)
{
// Spin player around on item
@@ -759,7 +759,7 @@ void ItemUseOutOfBattle_Berry(u8 taskId)
}
else
{
- ItemId_GetFieldFunc(gSpecialVar_ItemId)(taskId);
+ GetItemFieldFunc(gSpecialVar_ItemId)(taskId);
}
}
@@ -925,8 +925,8 @@ static void RemoveUsedItem(void)
StringExpandPlaceholders(gStringVar4, gText_PlayerUsedVar2);
if (!InBattlePyramid())
{
- UpdatePocketItemList(ItemId_GetPocket(gSpecialVar_ItemId));
- UpdatePocketListPosition(ItemId_GetPocket(gSpecialVar_ItemId));
+ UpdatePocketItemList(GetItemPocket(gSpecialVar_ItemId));
+ UpdatePocketListPosition(GetItemPocket(gSpecialVar_ItemId));
}
else
{
@@ -961,7 +961,7 @@ static void Task_UseRepel(u8 taskId)
{
if (!IsSEPlaying())
{
- VarSet(VAR_REPEL_STEP_COUNT, ItemId_GetHoldEffectParam(gSpecialVar_ItemId));
+ VarSet(VAR_REPEL_STEP_COUNT, GetItemHoldEffectParam(gSpecialVar_ItemId));
#if VAR_LAST_REPEL_LURE_USED != 0
VarSet(VAR_LAST_REPEL_LURE_USED, gSpecialVar_ItemId);
#endif
@@ -975,7 +975,7 @@ static void Task_UseRepel(u8 taskId)
void HandleUseExpiredRepel(struct ScriptContext *ctx)
{
#if VAR_LAST_REPEL_LURE_USED != 0
- VarSet(VAR_REPEL_STEP_COUNT, ItemId_GetHoldEffectParam(VarGet(VAR_LAST_REPEL_LURE_USED)));
+ VarSet(VAR_REPEL_STEP_COUNT, GetItemHoldEffectParam(VarGet(VAR_LAST_REPEL_LURE_USED)));
#endif
}
@@ -1005,7 +1005,7 @@ static void Task_UseLure(u8 taskId)
{
if (!IsSEPlaying())
{
- VarSet(VAR_REPEL_STEP_COUNT, ItemId_GetHoldEffectParam(gSpecialVar_ItemId) | REPEL_LURE_MASK);
+ VarSet(VAR_REPEL_STEP_COUNT, GetItemHoldEffectParam(gSpecialVar_ItemId) | REPEL_LURE_MASK);
#if VAR_LAST_REPEL_LURE_USED != 0
VarSet(VAR_LAST_REPEL_LURE_USED, gSpecialVar_ItemId);
#endif
@@ -1020,7 +1020,7 @@ static void Task_UseLure(u8 taskId)
void HandleUseExpiredLure(struct ScriptContext *ctx)
{
#if VAR_LAST_REPEL_LURE_USED != 0
- VarSet(VAR_REPEL_STEP_COUNT, ItemId_GetHoldEffectParam(VarGet(VAR_LAST_REPEL_LURE_USED)) | REPEL_LURE_MASK);
+ VarSet(VAR_REPEL_STEP_COUNT, GetItemHoldEffectParam(VarGet(VAR_LAST_REPEL_LURE_USED)) | REPEL_LURE_MASK);
#endif
}
@@ -1204,7 +1204,7 @@ static bool32 SelectedMonHasStatus2(u16 itemId)
// Returns whether an item can be used in battle and sets the fail text.
bool32 CannotUseItemsInBattle(u16 itemId, struct Pokemon *mon)
{
- u16 battleUsage = ItemId_GetBattleUsage(itemId);
+ u16 battleUsage = GetItemBattleUsage(itemId);
bool8 cannotUse = FALSE;
const u8* failStr = NULL;
u32 i;
@@ -1221,7 +1221,7 @@ bool32 CannotUseItemsInBattle(u16 itemId, struct Pokemon *mon)
switch (battleUsage)
{
case EFFECT_ITEM_INCREASE_STAT:
- if (gBattleMons[gBattlerInMenuId].statStages[ItemId_GetEffect(itemId)[1]] == MAX_STAT_STAGE)
+ if (gBattleMons[gBattlerInMenuId].statStages[GetItemEffect(itemId)[1]] == MAX_STAT_STAGE)
cannotUse = TRUE;
break;
case EFFECT_ITEM_SET_FOCUS_ENERGY:
@@ -1287,7 +1287,7 @@ bool32 CannotUseItemsInBattle(u16 itemId, struct Pokemon *mon)
cannotUse = TRUE;
break;
case EFFECT_ITEM_RESTORE_PP:
- if (ItemId_GetEffect(itemId)[4] == ITEM4_HEAL_PP)
+ if (GetItemEffect(itemId)[4] == ITEM4_HEAL_PP)
{
for (i = 0; i < MAX_MON_MOVES; i++)
{
@@ -1324,7 +1324,7 @@ void ItemUseInBattle_BagMenu(u8 taskId)
else
{
PlaySE(SE_SELECT);
- if (!ItemId_GetImportance(gSpecialVar_ItemId) && !(B_TRY_CATCH_TRAINER_BALL >= GEN_4 && (ItemId_GetBattleUsage(gSpecialVar_ItemId) == EFFECT_ITEM_THROW_BALL) && (gBattleTypeFlags & BATTLE_TYPE_TRAINER)))
+ if (!GetItemImportance(gSpecialVar_ItemId) && !(B_TRY_CATCH_TRAINER_BALL >= GEN_4 && (GetItemBattleUsage(gSpecialVar_ItemId) == EFFECT_ITEM_THROW_BALL) && (gBattleTypeFlags & BATTLE_TYPE_TRAINER)))
RemoveUsedItem();
ScheduleBgCopyTilemapToVram(2);
if (!InBattlePyramid())
@@ -1497,26 +1497,26 @@ static bool32 IsValidLocationForVsSeeker(void)
u32 i;
Location validIndoorLocations[] =
{
- { MAP_GROUP(MT_PYRE_SUMMIT), MAP_NUM(MT_PYRE_SUMMIT) },
- { MAP_GROUP(SAFARI_ZONE_NORTH), MAP_NUM(SAFARI_ZONE_NORTH) },
- { MAP_GROUP(SAFARI_ZONE_NORTHEAST), MAP_NUM(SAFARI_ZONE_NORTHEAST) },
- { MAP_GROUP(SAFARI_ZONE_NORTHWEST), MAP_NUM(SAFARI_ZONE_NORTHWEST) },
- { MAP_GROUP(SAFARI_ZONE_SOUTH), MAP_NUM(SAFARI_ZONE_SOUTH) },
- { MAP_GROUP(SAFARI_ZONE_SOUTHEAST), MAP_NUM(SAFARI_ZONE_SOUTHEAST) },
- { MAP_GROUP(SAFARI_ZONE_SOUTHWEST), MAP_NUM(SAFARI_ZONE_SOUTHWEST) },
- { MAP_GROUP(SKY_PILLAR_TOP), MAP_NUM(SKY_PILLAR_TOP) },
- { MAP_GROUP(SOUTHERN_ISLAND_EXTERIOR), MAP_NUM(SOUTHERN_ISLAND_EXTERIOR) },
- { MAP_GROUP(SOUTHERN_ISLAND_INTERIOR), MAP_NUM(SOUTHERN_ISLAND_INTERIOR) },
- { MAP_GROUP(RUSTBORO_CITY_GYM), MAP_NUM(RUSTBORO_CITY_GYM) },
- { MAP_GROUP(DEWFORD_TOWN_GYM), MAP_NUM(DEWFORD_TOWN_GYM) },
- { MAP_GROUP(MAUVILLE_CITY_GYM), MAP_NUM(MAUVILLE_CITY_GYM) },
- { MAP_GROUP(LAVARIDGE_TOWN_GYM_1F), MAP_NUM(LAVARIDGE_TOWN_GYM_1F) },
- { MAP_GROUP(LAVARIDGE_TOWN_GYM_B1F), MAP_NUM(LAVARIDGE_TOWN_GYM_B1F) },
- { MAP_GROUP(PETALBURG_CITY_GYM), MAP_NUM(PETALBURG_CITY_GYM) },
- { MAP_GROUP(FORTREE_CITY_GYM), MAP_NUM(FORTREE_CITY_GYM) },
- { MAP_GROUP(MOSSDEEP_CITY_GYM), MAP_NUM(MOSSDEEP_CITY_GYM) },
- { MAP_GROUP(SOOTOPOLIS_CITY_GYM_1F), MAP_NUM(SOOTOPOLIS_CITY_GYM_1F) },
- { MAP_GROUP(SOOTOPOLIS_CITY_GYM_B1F), MAP_NUM(SOOTOPOLIS_CITY_GYM_B1F) },
+ { MAP_GROUP(MAP_MT_PYRE_SUMMIT), MAP_NUM(MAP_MT_PYRE_SUMMIT) },
+ { MAP_GROUP(MAP_SAFARI_ZONE_NORTH), MAP_NUM(MAP_SAFARI_ZONE_NORTH) },
+ { MAP_GROUP(MAP_SAFARI_ZONE_NORTHEAST), MAP_NUM(MAP_SAFARI_ZONE_NORTHEAST) },
+ { MAP_GROUP(MAP_SAFARI_ZONE_NORTHWEST), MAP_NUM(MAP_SAFARI_ZONE_NORTHWEST) },
+ { MAP_GROUP(MAP_SAFARI_ZONE_SOUTH), MAP_NUM(MAP_SAFARI_ZONE_SOUTH) },
+ { MAP_GROUP(MAP_SAFARI_ZONE_SOUTHEAST), MAP_NUM(MAP_SAFARI_ZONE_SOUTHEAST) },
+ { MAP_GROUP(MAP_SAFARI_ZONE_SOUTHWEST), MAP_NUM(MAP_SAFARI_ZONE_SOUTHWEST) },
+ { MAP_GROUP(MAP_SKY_PILLAR_TOP), MAP_NUM(MAP_SKY_PILLAR_TOP) },
+ { MAP_GROUP(MAP_SOUTHERN_ISLAND_EXTERIOR), MAP_NUM(MAP_SOUTHERN_ISLAND_EXTERIOR) },
+ { MAP_GROUP(MAP_SOUTHERN_ISLAND_INTERIOR), MAP_NUM(MAP_SOUTHERN_ISLAND_INTERIOR) },
+ { MAP_GROUP(MAP_RUSTBORO_CITY_GYM), MAP_NUM(MAP_RUSTBORO_CITY_GYM) },
+ { MAP_GROUP(MAP_DEWFORD_TOWN_GYM), MAP_NUM(MAP_DEWFORD_TOWN_GYM) },
+ { MAP_GROUP(MAP_MAUVILLE_CITY_GYM), MAP_NUM(MAP_MAUVILLE_CITY_GYM) },
+ { MAP_GROUP(MAP_LAVARIDGE_TOWN_GYM_1F), MAP_NUM(MAP_LAVARIDGE_TOWN_GYM_1F) },
+ { MAP_GROUP(MAP_LAVARIDGE_TOWN_GYM_B1F), MAP_NUM(MAP_LAVARIDGE_TOWN_GYM_B1F) },
+ { MAP_GROUP(MAP_PETALBURG_CITY_GYM), MAP_NUM(MAP_PETALBURG_CITY_GYM) },
+ { MAP_GROUP(MAP_FORTREE_CITY_GYM), MAP_NUM(MAP_FORTREE_CITY_GYM) },
+ { MAP_GROUP(MAP_MOSSDEEP_CITY_GYM), MAP_NUM(MAP_MOSSDEEP_CITY_GYM) },
+ { MAP_GROUP(MAP_SOOTOPOLIS_CITY_GYM_1F), MAP_NUM(MAP_SOOTOPOLIS_CITY_GYM_1F) },
+ { MAP_GROUP(MAP_SOOTOPOLIS_CITY_GYM_B1F), MAP_NUM(MAP_SOOTOPOLIS_CITY_GYM_B1F) },
};
if (IsMapTypeOutdoors(mapType))
diff --git a/src/libisagbprn.c b/src/libisagbprn.c
index 6724059ff8..0cf51a18d5 100644
--- a/src/libisagbprn.c
+++ b/src/libisagbprn.c
@@ -224,7 +224,7 @@ void MgbaClose(void)
*REG_DEBUG_ENABLE = 0;
}
-void MgbaPrintf(s32 level, const char* ptr, ...)
+void MgbaPrintf(s32 level, const char *ptr, ...)
{
va_list args;
diff --git a/src/librfu_intr.c b/src/librfu_intr.c
index ab4392e229..5ae53ab4e3 100644
--- a/src/librfu_intr.c
+++ b/src/librfu_intr.c
@@ -7,7 +7,11 @@ static u16 handshake_wait(u16 slot);
static void STWI_set_timer_in_RAM(u8 count);
static void STWI_stop_timer_in_RAM(void);
static void STWI_init_slave(void);
+#if __STDC_VERSION__ < 202311L
static void Callback_Dummy_M(int reqCommandId, int error, void (*callbackM)());
+#else
+static void Callback_Dummy_M(int reqCommandId, int error, void (*callbackM)(...));
+#endif
static void Callback_Dummy_S(u16 reqCommandId, void (*callbackS)(u16));
static void Callback_Dummy_ID(void (*callbackId)(void));
@@ -135,7 +139,11 @@ static void sio32intr_clock_master(void)
}
gSTWIStatus->sending = 0;
if (gSTWIStatus->callbackM != NULL)
+#if __STDC_VERSION__ < 202311L
Callback_Dummy_M(gSTWIStatus->reqActiveCommand, gSTWIStatus->error, gSTWIStatus->callbackM);
+#else
+ Callback_Dummy_M(gSTWIStatus->reqActiveCommand, gSTWIStatus->error, (void (*)(...))gSTWIStatus->callbackM);
+#endif
}
else
{
@@ -388,7 +396,11 @@ static void STWI_init_slave(void)
}
NAKED
+#if __STDC_VERSION__ < 202311L
static void Callback_Dummy_M(int reqCommandId, int error, void (*callbackM)())
+#else
+static void Callback_Dummy_M(int reqCommandId, int error, void (*callbackM)(...))
+#endif
{
asm("bx r2");
}
diff --git a/src/lilycove_lady.c b/src/lilycove_lady.c
index 5acb9d3a40..845237ed82 100644
--- a/src/lilycove_lady.c
+++ b/src/lilycove_lady.c
@@ -192,7 +192,7 @@ bool8 HasAnotherPlayerGivenFavorLadyItem(void)
static void BufferItemName(u8 *dest, u16 itemId)
{
- StringCopy(dest, ItemId_GetName(itemId));
+ StringCopy(dest, GetItemName(itemId));
}
void BufferFavorLadyItemName(void)
@@ -451,7 +451,7 @@ static u8 GetPlayerNameLength(const u8 *playerName)
void BufferQuizPrizeName(void)
{
- StringCopy(gStringVar1, ItemId_GetName(sQuizLadyPtr->prize));
+ StringCopy(gStringVar1, GetItemName(sQuizLadyPtr->prize));
}
bool8 BufferQuizAuthorNameAndCheckIfLady(void)
diff --git a/src/load_save.c b/src/load_save.c
index 52305b1918..ed9a9852e7 100644
--- a/src/load_save.c
+++ b/src/load_save.c
@@ -82,7 +82,7 @@ void ClearSav1(void)
// Offset is the sum of the trainer id bytes
void SetSaveBlocksPointers(u16 offset)
{
- struct SaveBlock1** sav1_LocalVar = &gSaveBlock1Ptr;
+ struct SaveBlock1 **sav1_LocalVar = &gSaveBlock1Ptr;
offset = (offset + Random()) & (SAVEBLOCK_MOVE_RANGE - 4);
diff --git a/src/m4a.c b/src/m4a.c
index 493577cc23..24f9f3e16c 100644
--- a/src/m4a.c
+++ b/src/m4a.c
@@ -1,4 +1,4 @@
-#include
+#include "global.h"
#include "gba/m4a_internal.h"
#include "global.h"
@@ -280,6 +280,7 @@ void MPlayExtender(struct CgbChannel *cgbChans)
soundInfo->ident++;
+#if __STDC_VERSION__ < 202311L
gMPlayJumpTable[8] = ply_memacc;
gMPlayJumpTable[17] = ply_lfos;
gMPlayJumpTable[19] = ply_mod;
@@ -289,6 +290,17 @@ void MPlayExtender(struct CgbChannel *cgbChans)
gMPlayJumpTable[31] = TrackStop;
gMPlayJumpTable[32] = FadeOutBody;
gMPlayJumpTable[33] = TrkVolPitSet;
+#else
+ gMPlayJumpTable[8] = (void (*)(...))ply_memacc;
+ gMPlayJumpTable[17] = (void (*)(...))ply_lfos;
+ gMPlayJumpTable[19] = (void (*)(...))ply_mod;
+ gMPlayJumpTable[28] = (void (*)(...))ply_xcmd;
+ gMPlayJumpTable[29] = (void (*)(...))ply_endtie;
+ gMPlayJumpTable[30] = (void (*)(...))SampleFreqSet;
+ gMPlayJumpTable[31] = (void (*)(...))TrackStop;
+ gMPlayJumpTable[32] = (void (*)(...))FadeOutBody;
+ gMPlayJumpTable[33] = (void (*)(...))TrkVolPitSet;
+#endif
soundInfo->cgbChans = cgbChans;
soundInfo->CgbSound = CgbSound;
@@ -317,13 +329,21 @@ void MusicPlayerJumpTableCopy(void)
void ClearChain(void *x)
{
+#if __STDC_VERSION__ < 202311L
void (*func)(void *) = *(&gMPlayJumpTable[34]);
+#else
+ void (*func)(...) = *(&gMPlayJumpTable[34]);
+#endif
func(x);
}
void Clear64byte(void *x)
{
+#if __STDC_VERSION__ < 202311L
void (*func)(void *) = *(&gMPlayJumpTable[35]);
+#else
+ void (*func)(...) = *(&gMPlayJumpTable[35]);
+#endif
func(x);
}
diff --git a/src/m4a_tables.c b/src/m4a_tables.c
index 4d012cea28..6fb3b273a3 100644
--- a/src/m4a_tables.c
+++ b/src/m4a_tables.c
@@ -3,7 +3,7 @@
// Some of these functions have different signatures, so we need to make this
// an array of void pointers or a struct. It's simpler to just make it an array
// for now.
-void * const gMPlayJumpTableTemplate[] =
+void *const gMPlayJumpTableTemplate[] =
{
ply_fine,
ply_goto,
diff --git a/src/main.c b/src/main.c
index c27d56bacd..3fd080c75b 100644
--- a/src/main.c
+++ b/src/main.c
@@ -89,7 +89,7 @@ void EnableVCountIntrAtLine150(void);
#define B_START_SELECT (B_BUTTON | START_BUTTON | SELECT_BUTTON)
-void AgbMain()
+void AgbMain(void)
{
*(vu16 *)BG_PLTT = RGB_WHITE; // Set the backdrop to white on startup
InitGpuRegManager();
diff --git a/src/main_menu.c b/src/main_menu.c
index cb02eba1f8..5dd421043d 100644
--- a/src/main_menu.c
+++ b/src/main_menu.c
@@ -237,7 +237,7 @@ static void SpriteCB_MovePlayerDownWhileShrinking(struct Sprite *);
static void Task_NewGameBirchSpeech_WaitForPlayerShrink(u8);
static void Task_NewGameBirchSpeech_FadePlayerToWhite(u8);
static void Task_NewGameBirchSpeech_Cleanup(u8);
-static void SpriteCB_Null();
+static void SpriteCB_Null(struct Sprite *);
static void Task_NewGameBirchSpeech_ReturnFromNamingScreenShowTextbox(u8);
static void MainMenu_FormatSavegamePlayer(void);
static void MainMenu_FormatSavegamePokedex(void);
diff --git a/src/map_name_popup.c b/src/map_name_popup.c
index fe10073fc8..c14203fc56 100644
--- a/src/map_name_popup.c
+++ b/src/map_name_popup.c
@@ -81,7 +81,10 @@ static const u16 sMapPopUp_PaletteTable[][16] =
static const u16 sMapPopUp_Palette_Underwater[16] = INCBIN_U16("graphics/map_popup/underwater.gbapal");
-static const u8 sRegionMapSectionId_To_PopUpThemeIdMapping[] =
+// -1 in the size excludes MAPSEC_NONE.
+// The MAPSEC values for Kanto (between MAPSEC_DYNAMIC and MAPSEC_AQUA_HIDEOUT) are also excluded,
+// and this is then handled by subtracting KANTO_MAPSEC_COUNT here and in LoadMapNamePopUpWindowBg.
+static const u8 sMapSectionToThemeId[MAPSEC_COUNT - KANTO_MAPSEC_COUNT - 1] =
{
[MAPSEC_LITTLEROOT_TOWN] = MAPPOPUP_THEME_WOOD,
[MAPSEC_OLDALE_TOWN] = MAPPOPUP_THEME_WOOD,
@@ -186,7 +189,7 @@ static const u8 sRegionMapSectionId_To_PopUpThemeIdMapping[] =
[MAPSEC_DESERT_UNDERPASS - KANTO_MAPSEC_COUNT] = MAPPOPUP_THEME_STONE,
[MAPSEC_ALTERING_CAVE - KANTO_MAPSEC_COUNT] = MAPPOPUP_THEME_STONE,
[MAPSEC_NAVEL_ROCK - KANTO_MAPSEC_COUNT] = MAPPOPUP_THEME_STONE,
- [MAPSEC_TRAINER_HILL - KANTO_MAPSEC_COUNT] = MAPPOPUP_THEME_MARBLE
+ [MAPSEC_TRAINER_HILL - KANTO_MAPSEC_COUNT] = MAPPOPUP_THEME_MARBLE,
};
#if OW_POPUP_GENERATION == GEN_5
@@ -424,7 +427,6 @@ static void Task_MapNamePopUpWindow(u8 taskId)
break;
case STATE_WAIT:
// Wait while the window is fully onscreen.
- UpdateSecondaryPopUpWindow(GetSecondaryPopUpWindowId());
if (++task->tOnscreenTimer > 120)
{
task->tOnscreenTimer = 0;
@@ -649,7 +651,7 @@ static void LoadMapNamePopUpWindowBg(void)
}
else
{
- popUpThemeId = sRegionMapSectionId_To_PopUpThemeIdMapping[regionMapSectionId];
+ popUpThemeId = sMapSectionToThemeId[regionMapSectionId];
LoadBgTiles(GetWindowAttribute(popupWindowId, WINDOW_BG), sMapPopUp_OutlineTable[popUpThemeId], 0x400, 0x21D);
CallWindowFunction(popupWindowId, DrawMapNamePopUpFrame);
PutWindowTilemap(popupWindowId);
diff --git a/src/match_call.c b/src/match_call.c
index 4d937381b5..7b76d63813 100644
--- a/src/match_call.c
+++ b/src/match_call.c
@@ -1369,7 +1369,7 @@ static bool32 MatchCall_EndCall(u8 taskId)
if (!sMatchCallState.triggeredFromScript)
{
LoadMessageBoxAndBorderGfx();
- playerObjectId = GetObjectEventIdByLocalIdAndMap(OBJ_EVENT_ID_PLAYER, 0, 0);
+ playerObjectId = GetObjectEventIdByLocalIdAndMap(LOCALID_PLAYER, 0, 0);
ObjectEventClearHeldMovementIfFinished(&gObjectEvents[playerObjectId]);
ScriptMovement_UnfreezeObjectEvents();
UnfreezeObjectEvents();
@@ -1754,9 +1754,9 @@ static void PopulateSpeciesFromTrainerLocation(int matchCallId, u8 *destStr)
int i = 0;
enum TimeOfDay timeOfDay;
- if (gWildMonHeaders[i].mapGroup != MAP_GROUP(UNDEFINED)) // ??? This check is nonsense.
+ if (gWildMonHeaders[i].mapGroup != MAP_GROUP(MAP_UNDEFINED)) // ??? This check is nonsense.
{
- while (gWildMonHeaders[i].mapGroup != MAP_GROUP(UNDEFINED))
+ while (gWildMonHeaders[i].mapGroup != MAP_GROUP(MAP_UNDEFINED))
{
if (gWildMonHeaders[i].mapGroup == gRematchTable[matchCallId].mapGroup
&& gWildMonHeaders[i].mapNum == gRematchTable[matchCallId].mapNum)
@@ -1765,7 +1765,7 @@ static void PopulateSpeciesFromTrainerLocation(int matchCallId, u8 *destStr)
i++;
}
- if (gWildMonHeaders[i].mapGroup != MAP_GROUP(UNDEFINED))
+ if (gWildMonHeaders[i].mapGroup != MAP_GROUP(MAP_UNDEFINED))
{
timeOfDay = GetTimeOfDayForEncounters(i, WILD_AREA_LAND);
numSpecies = 0;
diff --git a/src/mauville_old_man.c b/src/mauville_old_man.c
index a4b56bf674..ec00261ad7 100644
--- a/src/mauville_old_man.c
+++ b/src/mauville_old_man.c
@@ -34,7 +34,7 @@ static u8 sSelectedStory;
COMMON_DATA struct BardSong gBardSong = {0};
static EWRAM_DATA u16 sUnusedPitchTableIndex = 0;
-static EWRAM_DATA struct MauvilleManStoryteller * sStorytellerPtr = NULL;
+static EWRAM_DATA struct MauvilleManStoryteller *sStorytellerPtr = NULL;
static EWRAM_DATA u8 sStorytellerWindowId = 0;
static const u16 sDefaultBardSongLyrics[NUM_BARD_SONG_WORDS] = {
@@ -176,7 +176,7 @@ void SaveBardSongLyrics(void)
static void PrepareSongText(void)
{
struct MauvilleManBard *bard = &gSaveBlock1Ptr->oldMan.bard;
- u16 * lyrics = !gSpecialVar_0x8004 ? bard->songLyrics : bard->newSongLyrics;
+ u16 *lyrics = !gSpecialVar_0x8004 ? bard->songLyrics : bard->newSongLyrics;
u8 *wordEnd = gStringVar4;
u8 *str = wordEnd;
u16 paragraphNum;
@@ -450,7 +450,7 @@ static void EnableTextPrinters(void)
gDisableTextPrinters = FALSE;
}
-static void DisableTextPrinters(struct TextPrinterTemplate * printer, u16 renderCmd)
+static void DisableTextPrinters(struct TextPrinterTemplate *printer, u16 renderCmd)
{
gDisableTextPrinters = TRUE;
}
@@ -746,7 +746,7 @@ void SetMauvilleOldManObjEventGfx(void)
// Language fixers?
-void SanitizeMauvilleOldManForRuby(union OldMan * oldMan)
+void SanitizeMauvilleOldManForRuby(union OldMan *oldMan)
{
s32 i;
u8 playerName[PLAYER_NAME_LENGTH + 1];
@@ -755,7 +755,7 @@ void SanitizeMauvilleOldManForRuby(union OldMan * oldMan)
{
case MAUVILLE_MAN_TRADER:
{
- struct MauvilleOldManTrader * trader = &oldMan->trader;
+ struct MauvilleOldManTrader *trader = &oldMan->trader;
for (i = 0; i < NUM_TRADER_ITEMS; i++)
{
if (trader->language[i] == LANGUAGE_JAPANESE)
@@ -765,7 +765,7 @@ void SanitizeMauvilleOldManForRuby(union OldMan * oldMan)
}
case MAUVILLE_MAN_STORYTELLER:
{
- struct MauvilleManStoryteller * storyteller = &oldMan->storyteller;
+ struct MauvilleManStoryteller *storyteller = &oldMan->storyteller;
for (i = 0; i < NUM_STORYTELLER_TALES; i++)
{
if (storyteller->gameStatIDs[i] != 0)
@@ -786,7 +786,7 @@ void SanitizeMauvilleOldManForRuby(union OldMan * oldMan)
}
}
-static void UNUSED SetMauvilleOldManLanguage(union OldMan * oldMan, u32 language1, u32 language2, u32 language3)
+static void UNUSED SetMauvilleOldManLanguage(union OldMan *oldMan, u32 language1, u32 language2, u32 language3)
{
s32 i;
@@ -794,7 +794,7 @@ static void UNUSED SetMauvilleOldManLanguage(union OldMan * oldMan, u32 language
{
case MAUVILLE_MAN_TRADER:
{
- struct MauvilleOldManTrader * trader = &oldMan->trader;
+ struct MauvilleOldManTrader *trader = &oldMan->trader;
for (i = 0; i < NUM_TRADER_ITEMS; i++)
{
@@ -807,7 +807,7 @@ static void UNUSED SetMauvilleOldManLanguage(union OldMan * oldMan, u32 language
break;
case MAUVILLE_MAN_STORYTELLER:
{
- struct MauvilleManStoryteller * storyteller = &oldMan->storyteller;
+ struct MauvilleManStoryteller *storyteller = &oldMan->storyteller;
for (i = 0; i < NUM_STORYTELLER_TALES; i++)
{
@@ -820,7 +820,7 @@ static void UNUSED SetMauvilleOldManLanguage(union OldMan * oldMan, u32 language
break;
case MAUVILLE_MAN_BARD:
{
- struct MauvilleManBard * bard = &oldMan->bard;
+ struct MauvilleManBard *bard = &oldMan->bard;
if (language3 == LANGUAGE_JAPANESE)
bard->language = language1;
@@ -830,7 +830,7 @@ static void UNUSED SetMauvilleOldManLanguage(union OldMan * oldMan, u32 language
break;
case MAUVILLE_MAN_HIPSTER:
{
- struct MauvilleManHipster * hipster = &oldMan->hipster;
+ struct MauvilleManHipster *hipster = &oldMan->hipster;
if (language3 == LANGUAGE_JAPANESE)
hipster->language = language1;
@@ -840,7 +840,7 @@ static void UNUSED SetMauvilleOldManLanguage(union OldMan * oldMan, u32 language
break;
case MAUVILLE_MAN_GIDDY:
{
- struct MauvilleManGiddy * giddy = &oldMan->giddy;
+ struct MauvilleManGiddy *giddy = &oldMan->giddy;
if (language3 == LANGUAGE_JAPANESE)
giddy->language = language1;
@@ -851,13 +851,13 @@ static void UNUSED SetMauvilleOldManLanguage(union OldMan * oldMan, u32 language
}
}
-void SanitizeReceivedEmeraldOldMan(union OldMan * oldMan, u32 version, u32 language)
+void SanitizeReceivedEmeraldOldMan(union OldMan *oldMan, u32 version, u32 language)
{
u8 playerName[PLAYER_NAME_LENGTH + 1];
s32 i;
if (oldMan->common.id == MAUVILLE_MAN_STORYTELLER && language == LANGUAGE_JAPANESE)
{
- struct MauvilleManStoryteller * storyteller = &oldMan->storyteller;
+ struct MauvilleManStoryteller *storyteller = &oldMan->storyteller;
for (i = 0; i < NUM_STORYTELLER_TALES; i++)
{
@@ -874,7 +874,7 @@ void SanitizeReceivedEmeraldOldMan(union OldMan * oldMan, u32 version, u32 langu
}
}
-void SanitizeReceivedRubyOldMan(union OldMan * oldMan, u32 version, u32 language)
+void SanitizeReceivedRubyOldMan(union OldMan *oldMan, u32 version, u32 language)
{
bool32 isRuby = (version == VERSION_SAPPHIRE || version == VERSION_RUBY);
@@ -882,7 +882,7 @@ void SanitizeReceivedRubyOldMan(union OldMan * oldMan, u32 version, u32 language
{
case MAUVILLE_MAN_TRADER:
{
- struct MauvilleOldManTrader * trader = &oldMan->trader;
+ struct MauvilleOldManTrader *trader = &oldMan->trader;
s32 i;
if (isRuby)
@@ -916,7 +916,7 @@ void SanitizeReceivedRubyOldMan(union OldMan * oldMan, u32 version, u32 language
case MAUVILLE_MAN_STORYTELLER:
{
- struct MauvilleManStoryteller * storyteller = &oldMan->storyteller;
+ struct MauvilleManStoryteller *storyteller = &oldMan->storyteller;
s32 i;
if (isRuby)
@@ -931,7 +931,7 @@ void SanitizeReceivedRubyOldMan(union OldMan * oldMan, u32 version, u32 language
break;
case MAUVILLE_MAN_BARD:
{
- struct MauvilleManBard * bard = &oldMan->bard;
+ struct MauvilleManBard *bard = &oldMan->bard;
if (isRuby)
{
@@ -941,7 +941,7 @@ void SanitizeReceivedRubyOldMan(union OldMan * oldMan, u32 version, u32 language
break;
case MAUVILLE_MAN_HIPSTER:
{
- struct MauvilleManHipster * hipster = &oldMan->hipster;
+ struct MauvilleManHipster *hipster = &oldMan->hipster;
if (isRuby)
{
@@ -951,7 +951,7 @@ void SanitizeReceivedRubyOldMan(union OldMan * oldMan, u32 version, u32 language
break;
case MAUVILLE_MAN_GIDDY:
{
- struct MauvilleManGiddy * giddy = &oldMan->giddy;
+ struct MauvilleManGiddy *giddy = &oldMan->giddy;
if (isRuby)
{
diff --git a/src/menu_helpers.c b/src/menu_helpers.c
index 747db09342..e1483c9579 100644
--- a/src/menu_helpers.c
+++ b/src/menu_helpers.c
@@ -279,8 +279,8 @@ bool8 IsHoldingItemAllowed(u16 itemId)
{
// e-Reader Enigma Berry can't be held in link areas
if (itemId == ITEM_ENIGMA_BERRY_E_READER
- && ((gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(TRADE_CENTER)
- && gSaveBlock1Ptr->location.mapNum == MAP_NUM(TRADE_CENTER))
+ && ((gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(MAP_TRADE_CENTER)
+ && gSaveBlock1Ptr->location.mapNum == MAP_NUM(MAP_TRADE_CENTER))
|| InUnionRoom() == TRUE))
return FALSE;
else
diff --git a/src/menu_specialized.c b/src/menu_specialized.c
index 14f6852e30..df4233fd14 100644
--- a/src/menu_specialized.c
+++ b/src/menu_specialized.c
@@ -1192,7 +1192,7 @@ void LoadConditionMonPicTemplate(struct SpriteSheet *sheet, struct SpriteTemplat
*pal = dataPal;
}
-void LoadConditionSelectionIcons(struct SpriteSheet *sheets, struct SpriteTemplate * template, struct SpritePalette *pals)
+void LoadConditionSelectionIcons(struct SpriteSheet *sheets, struct SpriteTemplate *template, struct SpritePalette *pals)
{
u8 i;
diff --git a/src/metatile_behavior.c b/src/metatile_behavior.c
index e432827f31..2d61e9a75a 100644
--- a/src/metatile_behavior.c
+++ b/src/metatile_behavior.c
@@ -328,7 +328,7 @@ bool8 MetatileBehavior_IsSouthArrowWarp(u8 metatileBehavior)
return FALSE;
}
-bool8 Unref_MetatileBehavior_IsArrowWarp(u8 metatileBehavior)
+bool8 UNUSED Unref_MetatileBehavior_IsArrowWarp(u8 metatileBehavior)
{
u8 isArrowWarp = FALSE;
diff --git a/src/mini_printf.c b/src/mini_printf.c
index c2e35354f1..ded744ce85 100644
--- a/src/mini_printf.c
+++ b/src/mini_printf.c
@@ -214,11 +214,11 @@ static s32 mini_itoa(s32 value, u32 radix, s32 uppercase, bool32 unsig, char *bu
return len;
}
-static s32 mini_pad(char* ptr, s32 len, char pad_char, s32 pad_to, char *buffer)
+static s32 mini_pad(char *ptr, s32 len, char pad_char, s32 pad_to, char *buffer)
{
s32 i;
bool32 overflow = FALSE;
- char * pbuffer = buffer;
+ char *pbuffer = buffer;
if(pad_to == 0)
pad_to = len;
if (len > pad_to)
@@ -260,7 +260,7 @@ s32 mini_vsnprintf(char *buffer, u32 buffer_len, const char *fmt, va_list va)
return b.pbuffer - b.buffer;
}
-s32 mini_vpprintf(void* buf, const char *fmt, va_list va)
+s32 mini_vpprintf(void *buf, const char *fmt, va_list va)
{
char bf[24];
char bf2[24];
diff --git a/src/mirage_tower.c b/src/mirage_tower.c
index 0b5408ecdf..e2ed74a21a 100644
--- a/src/mirage_tower.c
+++ b/src/mirage_tower.c
@@ -262,7 +262,7 @@ static u16 sDebug_DisintegrationData[8];
bool8 IsMirageTowerVisible(void)
{
- if (!(gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(ROUTE111) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(ROUTE111)))
+ if (!(gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(MAP_ROUTE111) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(MAP_ROUTE111)))
return FALSE;
return FlagGet(FLAG_MIRAGE_TOWER_VISIBLE);
}
@@ -285,8 +285,8 @@ void TryStartMirageTowerPulseBlendEffect(void)
return;
}
- if (gSaveBlock1Ptr->location.mapGroup != MAP_GROUP(ROUTE111)
- || gSaveBlock1Ptr->location.mapNum != MAP_NUM(ROUTE111)
+ if (gSaveBlock1Ptr->location.mapGroup != MAP_GROUP(MAP_ROUTE111)
+ || gSaveBlock1Ptr->location.mapNum != MAP_NUM(MAP_ROUTE111)
|| !FlagGet(FLAG_MIRAGE_TOWER_VISIBLE))
return;
@@ -299,8 +299,8 @@ void TryStartMirageTowerPulseBlendEffect(void)
void ClearMirageTowerPulseBlendEffect(void)
{
- if (gSaveBlock1Ptr->location.mapGroup != MAP_GROUP(ROUTE111)
- || gSaveBlock1Ptr->location.mapNum != MAP_NUM(ROUTE111)
+ if (gSaveBlock1Ptr->location.mapGroup != MAP_GROUP(MAP_ROUTE111)
+ || gSaveBlock1Ptr->location.mapNum != MAP_NUM(MAP_ROUTE111)
|| !FlagGet(FLAG_MIRAGE_TOWER_VISIBLE)
|| sMirageTowerPulseBlend == NULL)
return;
diff --git a/src/move_relearner.c b/src/move_relearner.c
index 8ed5e24375..b48d31677a 100644
--- a/src/move_relearner.c
+++ b/src/move_relearner.c
@@ -733,10 +733,10 @@ static void DoMoveRelearnerMain(void)
}
else
{
- u16 moveId = GetMonData(&gPlayerParty[sMoveRelearnerStruct->partyMon], MON_DATA_MOVE1 + sMoveRelearnerStruct->moveSlot);
+ 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(moveId));
+ StringCopy(gStringVar3, GetMoveName(move));
RemoveMonPPBonus(&gPlayerParty[sMoveRelearnerStruct->partyMon], sMoveRelearnerStruct->moveSlot);
SetMonMoveSlot(&gPlayerParty[sMoveRelearnerStruct->partyMon], GetCurrentSelectedMove(), sMoveRelearnerStruct->moveSlot);
u8 newPP = GetMonData(&gPlayerParty[sMoveRelearnerStruct->partyMon], MON_DATA_PP1 + sMoveRelearnerStruct->moveSlot);
@@ -955,19 +955,19 @@ static void CreateLearnableMovesList(void)
sMoveRelearnerStruct->numToShowAtOnce = LoadMoveRelearnerMovesList(sMoveRelearnerStruct->menuItems, sMoveRelearnerStruct->numMenuChoices);
}
-void MoveRelearnerShowHideHearts(s32 moveId)
+void MoveRelearnerShowHideHearts(s32 move)
{
u16 numHearts;
u16 i;
- if (!sMoveRelearnerMenuSate.showContestInfo || moveId == LIST_CANCEL)
+ if (!sMoveRelearnerMenuSate.showContestInfo || move == LIST_CANCEL)
{
for (i = 0; i < 16; i++)
gSprites[sMoveRelearnerStruct->heartSpriteIds[i]].invisible = TRUE;
}
else
{
- numHearts = (u8)(gContestEffects[GetMoveContestEffect(moveId)].appeal / 10);
+ numHearts = (u8)(gContestEffects[GetMoveContestEffect(move)].appeal / 10);
if (numHearts == 0xFF)
numHearts = 0;
@@ -981,7 +981,7 @@ void MoveRelearnerShowHideHearts(s32 moveId)
gSprites[sMoveRelearnerStruct->heartSpriteIds[i]].invisible = FALSE;
}
- numHearts = (u8)(gContestEffects[GetMoveContestEffect(moveId)].jam / 10);
+ numHearts = (u8)(gContestEffects[GetMoveContestEffect(move)].jam / 10);
if (numHearts == 0xFF)
numHearts = 0;
diff --git a/src/mystery_gift_client.c b/src/mystery_gift_client.c
index 3663df43d5..2d2ccec545 100644
--- a/src/mystery_gift_client.c
+++ b/src/mystery_gift_client.c
@@ -19,7 +19,7 @@ enum {
FUNC_RUN_BUFFER,
};
-EWRAM_DATA static struct MysteryGiftClient * sClient = NULL;
+EWRAM_DATA static struct MysteryGiftClient *sClient = NULL;
static void MysteryGiftClient_Init(struct MysteryGiftClient *, u32, u32);
static u32 MysteryGiftClient_CallFunc(struct MysteryGiftClient *);
@@ -34,7 +34,7 @@ void MysteryGiftClient_Create(bool32 isWonderNews)
sClient->isWonderNews = isWonderNews;
}
-u32 MysteryGiftClient_Run(u16 * endVal)
+u32 MysteryGiftClient_Run(u16 *endVal)
{
u32 result;
if (sClient == NULL)
@@ -64,7 +64,7 @@ void MysteryGiftClient_SetParam(u32 val)
sClient->param = val;
}
-static void MysteryGiftClient_Init(struct MysteryGiftClient * client, u32 sendPlayerId, u32 recvPlayerId)
+static void MysteryGiftClient_Init(struct MysteryGiftClient *client, u32 sendPlayerId, u32 recvPlayerId)
{
client->unused = 0;
client->funcId = FUNC_INIT;
@@ -76,7 +76,7 @@ static void MysteryGiftClient_Init(struct MysteryGiftClient * client, u32 sendPl
MysteryGiftLink_Init(&client->link, sendPlayerId, recvPlayerId);
}
-static void MysteryGiftClient_Free(struct MysteryGiftClient * client)
+static void MysteryGiftClient_Free(struct MysteryGiftClient *client)
{
Free(client->sendBuffer);
Free(client->recvBuffer);
@@ -84,20 +84,20 @@ static void MysteryGiftClient_Free(struct MysteryGiftClient * client)
Free(client->msg);
}
-static void MysteryGiftClient_CopyRecvScript(struct MysteryGiftClient * client)
+static void MysteryGiftClient_CopyRecvScript(struct MysteryGiftClient *client)
{
memcpy(client->script, client->recvBuffer, MG_LINK_BUFFER_SIZE);
client->cmdidx = 0;
}
-static void MysteryGiftClient_InitSendWord(struct MysteryGiftClient * client, u32 ident, u32 word)
+static void MysteryGiftClient_InitSendWord(struct MysteryGiftClient *client, u32 ident, u32 word)
{
CpuFill32(0, client->sendBuffer, MG_LINK_BUFFER_SIZE);
*(u32 *)client->sendBuffer = word;
MysteryGiftLink_InitSend(&client->link, ident, client->sendBuffer, sizeof(word));
}
-static u32 Client_Init(struct MysteryGiftClient * client)
+static u32 Client_Init(struct MysteryGiftClient *client)
{
memcpy(client->script, gMysteryGiftClientScript_Init, MG_LINK_BUFFER_SIZE);
client->cmdidx = 0;
@@ -106,13 +106,13 @@ static u32 Client_Init(struct MysteryGiftClient * client)
return CLI_RET_INIT;
}
-static u32 Client_Done(struct MysteryGiftClient * client)
+static u32 Client_Done(struct MysteryGiftClient *client)
{
return CLI_RET_END;
}
-static u32 Client_Recv(struct MysteryGiftClient * client)
+static u32 Client_Recv(struct MysteryGiftClient *client)
{
if (MysteryGiftLink_Recv(&client->link))
{
@@ -122,7 +122,7 @@ static u32 Client_Recv(struct MysteryGiftClient * client)
return CLI_RET_ACTIVE;
}
-static u32 Client_Send(struct MysteryGiftClient * client)
+static u32 Client_Send(struct MysteryGiftClient *client)
{
if (MysteryGiftLink_Send(&client->link))
{
@@ -132,10 +132,10 @@ static u32 Client_Send(struct MysteryGiftClient * client)
return CLI_RET_ACTIVE;
}
-static u32 Client_Run(struct MysteryGiftClient * client)
+static u32 Client_Run(struct MysteryGiftClient *client)
{
// process command
- struct MysteryGiftClientCmd * cmd = &client->script[client->cmdidx];
+ struct MysteryGiftClientCmd *cmd = &client->script[client->cmdidx];
client->cmdidx++;
switch (cmd->instr)
{
@@ -247,7 +247,7 @@ static u32 Client_Run(struct MysteryGiftClient * client)
return CLI_RET_ACTIVE;
}
-static u32 Client_Wait(struct MysteryGiftClient * client)
+static u32 Client_Wait(struct MysteryGiftClient *client)
{
if (client->funcState)
{
@@ -257,7 +257,7 @@ static u32 Client_Wait(struct MysteryGiftClient * client)
return CLI_RET_ACTIVE;
}
-static u32 Client_RunMysteryEventScript(struct MysteryGiftClient * client)
+static u32 Client_RunMysteryEventScript(struct MysteryGiftClient *client)
{
switch (client->funcState)
{
@@ -276,7 +276,7 @@ static u32 Client_RunMysteryEventScript(struct MysteryGiftClient * client)
return CLI_RET_ACTIVE;
}
-static u32 Client_RunBufferScript(struct MysteryGiftClient * client)
+static u32 Client_RunBufferScript(struct MysteryGiftClient *client)
{
// exec arbitrary code
u32 (*func)(u32 *, struct SaveBlock2 *, struct SaveBlock1 *) = (void *)client->bufferScript;
@@ -288,7 +288,7 @@ static u32 Client_RunBufferScript(struct MysteryGiftClient * client)
return CLI_RET_ACTIVE;
}
-static u32 MysteryGiftClient_CallFunc(struct MysteryGiftClient * client)
+static u32 MysteryGiftClient_CallFunc(struct MysteryGiftClient *client)
{
u32 (*funcs[])(struct MysteryGiftClient *) = {
[FUNC_INIT] = Client_Init,
diff --git a/src/mystery_gift_link.c b/src/mystery_gift_link.c
index 55f4b78527..2e0031722d 100644
--- a/src/mystery_gift_link.c
+++ b/src/mystery_gift_link.c
@@ -26,17 +26,17 @@ struct SendRecvHeader
static u32 MGL_Receive(struct MysteryGiftLink *);
static u32 MGL_Send(struct MysteryGiftLink *);
-u32 MysteryGiftLink_Recv(struct MysteryGiftLink * link)
+u32 MysteryGiftLink_Recv(struct MysteryGiftLink *link)
{
return link->recvFunc(link);
}
-u32 MysteryGiftLink_Send(struct MysteryGiftLink * link)
+u32 MysteryGiftLink_Send(struct MysteryGiftLink *link)
{
return link->sendFunc(link);
}
-void MysteryGiftLink_Init(struct MysteryGiftLink * link, u32 sendPlayerId, u32 recvPlayerId)
+void MysteryGiftLink_Init(struct MysteryGiftLink *link, u32 sendPlayerId, u32 recvPlayerId)
{
link->sendPlayerId = sendPlayerId;
link->recvPlayerId = recvPlayerId;
@@ -53,7 +53,7 @@ void MysteryGiftLink_Init(struct MysteryGiftLink * link, u32 sendPlayerId, u32 r
link->recvFunc = MGL_Receive;
}
-void MysteryGiftLink_InitSend(struct MysteryGiftLink * link, u32 ident, const void * src, u32 size)
+void MysteryGiftLink_InitSend(struct MysteryGiftLink *link, u32 ident, const void *src, u32 size)
{
link->state = 0;
link->sendIdent = ident;
@@ -66,7 +66,7 @@ void MysteryGiftLink_InitSend(struct MysteryGiftLink * link, u32 ident, const vo
link->sendBuffer = src;
}
-void MysteryGiftLink_InitRecv(struct MysteryGiftLink * link, u32 ident, void * dest)
+void MysteryGiftLink_InitRecv(struct MysteryGiftLink *link, u32 ident, void *dest)
{
link->state = 0;
link->recvIdent = ident;
@@ -76,7 +76,7 @@ void MysteryGiftLink_InitRecv(struct MysteryGiftLink * link, u32 ident, void * d
link->recvBuffer = dest;
}
-static void MGL_ReceiveBlock(u32 playerId, void * dest, size_t size)
+static void MGL_ReceiveBlock(u32 playerId, void *dest, size_t size)
{
memcpy(dest, gBlockRecvBuffer[playerId], size);
}
@@ -94,7 +94,7 @@ static void MGL_ResetReceived(u32 playerId)
ResetBlockReceivedFlag(playerId);
}
-static bool32 MGL_Receive(struct MysteryGiftLink * link)
+static bool32 MGL_Receive(struct MysteryGiftLink *link)
{
struct SendRecvHeader header;
@@ -159,7 +159,7 @@ static bool32 MGL_Receive(struct MysteryGiftLink * link)
return FALSE;
}
-static bool32 MGL_Send(struct MysteryGiftLink * link)
+static bool32 MGL_Send(struct MysteryGiftLink *link)
{
struct SendRecvHeader header;
diff --git a/src/mystery_gift_menu.c b/src/mystery_gift_menu.c
index 179be0d56b..8cbbbac3f9 100644
--- a/src/mystery_gift_menu.c
+++ b/src/mystery_gift_menu.c
@@ -631,7 +631,7 @@ static bool32 PrintStringAndWait2Seconds(u8 *counter, const u8 *str)
}
}
-static u32 MysteryGift_HandleThreeOptionMenu(u8 *unused0, u16 * unused1, u8 whichMenu)
+static u32 MysteryGift_HandleThreeOptionMenu(u8 *unused0, u16 *unused1, u8 whichMenu)
{
struct ListMenuTemplate listMenuTemplate = sListMenuTemplate_ThreeOptions;
struct WindowTemplate windowTemplate = sWindowTemplate_ThreeOptions;
@@ -662,7 +662,7 @@ static u32 MysteryGift_HandleThreeOptionMenu(u8 *unused0, u16 * unused1, u8 whic
return response;
}
-s8 DoMysteryGiftYesNo(u8 *textState, u16 * windowId, bool8 yesNoBoxPlacement, const u8 *str)
+s8 DoMysteryGiftYesNo(u8 *textState, u16 *windowId, bool8 yesNoBoxPlacement, const u8 *str)
{
struct WindowTemplate windowTemplate;
s8 input;
@@ -719,7 +719,7 @@ s8 DoMysteryGiftYesNo(u8 *textState, u16 * windowId, bool8 yesNoBoxPlacement, co
}
// Handle the "Receive/Send/Toss" menu that appears when selecting Wonder Card/News
-static s32 HandleGiftSelectMenu(u8 *textState, u16 * windowId, bool32 cannotToss, bool32 cannotSend)
+static s32 HandleGiftSelectMenu(u8 *textState, u16 *windowId, bool32 cannotToss, bool32 cannotSend)
{
struct WindowTemplate UNUSED windowTemplate;
s32 input;
@@ -852,7 +852,7 @@ static bool32 ExitWonderCardOrNews(bool32 isWonderNews, bool32 useCancel)
}
}
-static s32 AskDiscardGift(u8 *textState, u16 * windowId, bool32 isWonderNews)
+static s32 AskDiscardGift(u8 *textState, u16 *windowId, bool32 isWonderNews)
{
if (!isWonderNews)
return DoMysteryGiftYesNo(textState, windowId, TRUE, gText_IfThrowAwayCardEventWontHappen);
@@ -897,7 +897,7 @@ static bool32 SaveOnMysteryGiftMenu(u8 *state)
return FALSE;
}
-static const u8 *GetClientResultMessage(bool32 * successMsg, bool8 isWonderNews, bool8 sourceIsFriend, u32 msgId)
+static const u8 *GetClientResultMessage(bool32 *successMsg, bool8 isWonderNews, bool8 sourceIsFriend, u32 msgId)
{
const u8 *msg = NULL;
*successMsg = FALSE;
@@ -969,7 +969,7 @@ static const u8 *GetClientResultMessage(bool32 * successMsg, bool8 isWonderNews,
return msg;
}
-static bool32 PrintSuccessMessage(u8 *state, const u8 *msg, u16 * timer)
+static bool32 PrintSuccessMessage(u8 *state, const u8 *msg, u16 *timer)
{
switch (*state)
{
@@ -996,7 +996,7 @@ static bool32 PrintSuccessMessage(u8 *state, const u8 *msg, u16 * timer)
return FALSE;
}
-static const u8 *GetServerResultMessage(bool32 * wonderSuccess, bool8 sourceIsFriend, u32 msgId)
+static const u8 *GetServerResultMessage(bool32 *wonderSuccess, bool8 sourceIsFriend, u32 msgId)
{
const u8 *result = gText_CommunicationError;
*wonderSuccess = FALSE;
@@ -1053,7 +1053,7 @@ static const u8 *GetServerResultMessage(bool32 * wonderSuccess, bool8 sourceIsFr
return result;
}
-static bool32 PrintServerResultMessage(u8 *state, u16 * timer, bool8 sourceIsFriend, u32 msgId)
+static bool32 PrintServerResultMessage(u8 *state, u16 *timer, bool8 sourceIsFriend, u32 msgId)
{
bool32 wonderSuccess;
const u8 *str = GetServerResultMessage(&wonderSuccess, sourceIsFriend, msgId);
@@ -1111,7 +1111,7 @@ enum {
static void CreateMysteryGiftTask(void)
{
u8 taskId = CreateTask(Task_MysteryGift, 0);
- struct MysteryGiftTaskData * data = (void *)gTasks[taskId].data;
+ struct MysteryGiftTaskData *data = (void *)gTasks[taskId].data;
data->state = MG_STATE_TO_MAIN_MENU;
data->textState = 0;
data->unused4 = 0;
diff --git a/src/mystery_gift_server.c b/src/mystery_gift_server.c
index 891870659d..c90e43dee0 100644
--- a/src/mystery_gift_server.c
+++ b/src/mystery_gift_server.c
@@ -13,7 +13,7 @@ enum {
FUNC_RUN,
};
-EWRAM_DATA static struct MysteryGiftServer * sServer = NULL;
+EWRAM_DATA static struct MysteryGiftServer *sServer = NULL;
static void MysteryGiftServer_Init(struct MysteryGiftServer *, const void *, u32, u32);
static void MysteryGiftServer_Free(struct MysteryGiftServer *);
@@ -34,7 +34,7 @@ void MysterGiftServer_CreateForCard(void)
MysteryGiftServer_Init(sServer, gMysteryGiftServerScript_SendWonderCard, 0, 1);
}
-u32 MysterGiftServer_Run(u16 * endVal)
+u32 MysterGiftServer_Run(u16 *endVal)
{
u32 result;
if (sServer == NULL)
@@ -49,7 +49,7 @@ u32 MysterGiftServer_Run(u16 * endVal)
return result;
}
-static void MysteryGiftServer_Init(struct MysteryGiftServer * svr, const void * script, u32 sendPlayerId, u32 recvPlayerId)
+static void MysteryGiftServer_Init(struct MysteryGiftServer *svr, const void *script, u32 sendPlayerId, u32 recvPlayerId)
{
svr->unused = 0;
svr->funcId = FUNC_INIT;
@@ -62,7 +62,7 @@ static void MysteryGiftServer_Init(struct MysteryGiftServer * svr, const void *
MysteryGiftLink_Init(&svr->link, sendPlayerId, recvPlayerId);
}
-static void MysteryGiftServer_Free(struct MysteryGiftServer * svr)
+static void MysteryGiftServer_Free(struct MysteryGiftServer *svr)
{
Free(svr->card);
Free(svr->news);
@@ -70,7 +70,7 @@ static void MysteryGiftServer_Free(struct MysteryGiftServer * svr)
Free(svr->linkGameData);
}
-static void MysteryGiftServer_InitSend(struct MysteryGiftServer * svr, u32 ident, const void * src, u32 size)
+static void MysteryGiftServer_InitSend(struct MysteryGiftServer *svr, u32 ident, const void *src, u32 size)
{
AGB_ASSERT(size <= MG_LINK_BUFFER_SIZE);
MysteryGiftLink_InitSend(&svr->link, ident, src, size);
@@ -78,7 +78,7 @@ static void MysteryGiftServer_InitSend(struct MysteryGiftServer * svr, u32 ident
// Given the command pointer parameter and the 'default' normal data.
// If the command's pointer is not empty use that as the send data, otherwise use the default.
-static const void * MysteryGiftServer_GetSendData(const void * dynamicData, const void * defaultData)
+static const void * MysteryGiftServer_GetSendData(const void *dynamicData, const void *defaultData)
{
if (dynamicData != NULL)
return dynamicData;
@@ -86,7 +86,7 @@ static const void * MysteryGiftServer_GetSendData(const void * dynamicData, cons
return defaultData;
}
-static u32 MysteryGiftServer_Compare(const void * a, const void * b)
+static u32 MysteryGiftServer_Compare(const void *a, const void *b)
{
if (b < a)
return 0;
@@ -96,36 +96,36 @@ static u32 MysteryGiftServer_Compare(const void * a, const void * b)
return 2;
}
-static u32 Server_Init(struct MysteryGiftServer * svr)
+static u32 Server_Init(struct MysteryGiftServer *svr)
{
svr->funcId = FUNC_RUN;
return SVR_RET_INIT;
}
-static u32 Server_Done(struct MysteryGiftServer * svr)
+static u32 Server_Done(struct MysteryGiftServer *svr)
{
return SVR_RET_END;
}
-static u32 Server_Recv(struct MysteryGiftServer * svr)
+static u32 Server_Recv(struct MysteryGiftServer *svr)
{
if (MysteryGiftLink_Recv(&svr->link))
svr->funcId = FUNC_RUN;
return SVR_RET_ACTIVE;
}
-static u32 Server_Send(struct MysteryGiftServer * svr)
+static u32 Server_Send(struct MysteryGiftServer *svr)
{
if (MysteryGiftLink_Send(&svr->link))
svr->funcId = FUNC_RUN;
return SVR_RET_ACTIVE;
}
-static u32 Server_Run(struct MysteryGiftServer * svr)
+static u32 Server_Run(struct MysteryGiftServer *svr)
{
// process command
- const struct MysteryGiftServerCmd * cmd = &svr->script[svr->cmdidx];
- const void * ptr;
+ const struct MysteryGiftServerCmd *cmd = &svr->script[svr->cmdidx];
+ const void *ptr;
svr->cmdidx++;
switch (cmd->instr)
@@ -280,7 +280,7 @@ static u32 (*const sFuncTable[])(struct MysteryGiftServer *) = {
[FUNC_RUN] = Server_Run
};
-static u32 MysteryGiftServer_CallFunc(struct MysteryGiftServer * svr)
+static u32 MysteryGiftServer_CallFunc(struct MysteryGiftServer *svr)
{
u32 response;
AGB_ASSERT(svr->funcId < ARRAY_COUNT(sFuncTable));
diff --git a/src/mystery_gift_view.c b/src/mystery_gift_view.c
index bc1939adf1..9d1ae836dc 100644
--- a/src/mystery_gift_view.c
+++ b/src/mystery_gift_view.c
@@ -23,9 +23,9 @@ struct WonderGraphics
u8 bodyTextPal:4;
u8 footerTextPal:4; // Card only
u8 stampShadowPal:4; // Card only
- const u32 * tiles;
- const u32 * map;
- const u16 * pal;
+ const u32 *tiles;
+ const u32 *map;
+ const u16 *pal;
};
//======================
@@ -52,7 +52,7 @@ struct WonderCardData
{
/*0000*/ struct WonderCard card;
/*014c*/ struct WonderCardMetadata cardMetadata;
- /*0170*/ const struct WonderGraphics * gfx;
+ /*0170*/ const struct WonderGraphics *gfx;
/*0174*/ u8 enterExitState;
/*0175*/ u8 statFooterWidth;
/*0176*/ u16 windowIds[CARD_WIN_COUNT];
@@ -68,7 +68,7 @@ struct WonderCardData
/*045C*/ u8 bgTilemapBuffer[0x1000];
};
-EWRAM_DATA static struct WonderCardData * sWonderCardData = NULL;
+EWRAM_DATA static struct WonderCardData *sWonderCardData = NULL;
static void BufferCardText(void);
static void DrawCardWindow(u8 whichWindow);
@@ -184,7 +184,7 @@ static const struct WonderGraphics sCardGraphics[NUM_WONDER_BGS] = {
{.titleTextPal = 1, .bodyTextPal = 0, .footerTextPal = 0, .stampShadowPal = 7, .tiles = sWonderCardBgGfx8, .map = sWonderCardBgTilemap8, .pal = sWonderCardBgPal8}
};
-bool32 WonderCard_Init(struct WonderCard * card, struct WonderCardMetadata * metadata)
+bool32 WonderCard_Init(struct WonderCard *card, struct WonderCardMetadata *metadata)
{
if (card == NULL || metadata == NULL)
return FALSE;
@@ -551,7 +551,7 @@ enum {
struct WonderNewsData
{
/*0000*/ struct WonderNews news;
- /*01bc*/ const struct WonderGraphics * gfx;
+ /*01bc*/ const struct WonderGraphics *gfx;
/*01c0*/ u8 arrowsRemoved:1;
u8 enterExitState:7;
/*01c1*/ u8 arrowTaskId;
@@ -569,7 +569,7 @@ struct WonderNewsData
/*03a4*/ u8 bgTilemapBuffer[0x1000];
};
-EWRAM_DATA static struct WonderNewsData * sWonderNewsData = NULL;
+EWRAM_DATA static struct WonderNewsData *sWonderNewsData = NULL;
static void BufferNewsText(void);
static void DrawNewsWindows(void);
@@ -640,7 +640,7 @@ static const struct WonderGraphics sNewsGraphics[NUM_WONDER_BGS] = {
{.titleTextPal = 1, .bodyTextPal = 0, .tiles = sWonderNewsGfx8, .map = sWonderNewsTilemap8, .pal = sWonderNewsPal8}
};
-bool32 WonderNews_Init(const struct WonderNews * news)
+bool32 WonderNews_Init(const struct WonderNews *news)
{
if (news == NULL)
return FALSE;
diff --git a/src/new_game.c b/src/new_game.c
index 8a88753322..1adcee7566 100644
--- a/src/new_game.c
+++ b/src/new_game.c
@@ -131,7 +131,7 @@ static void ClearFrontierRecord(void)
static void WarpToTruck(void)
{
- SetWarpDestination(MAP_GROUP(NEW_MAP1), MAP_NUM(NEW_MAP1), WARP_ID_NONE, -1, -1);
+ SetWarpDestination(MAP_GROUP(MAP_INSIDE_OF_TRUCK), MAP_NUM(MAP_INSIDE_OF_TRUCK), WARP_ID_NONE, -1, -1);
WarpIntoMap();
}
diff --git a/src/overworld.c b/src/overworld.c
index 2cdb6ddf8c..d9a688c7b5 100644
--- a/src/overworld.c
+++ b/src/overworld.c
@@ -222,8 +222,8 @@ EWRAM_DATA bool8 gExitStairsMovementDisabled = FALSE;
static const struct WarpData sDummyWarpData =
{
- .mapGroup = MAP_GROUP(UNDEFINED),
- .mapNum = MAP_NUM(UNDEFINED),
+ .mapGroup = MAP_GROUP(MAP_UNDEFINED),
+ .mapNum = MAP_NUM(MAP_UNDEFINED),
.warpId = WARP_ID_NONE,
.x = -1,
.y = -1,
@@ -378,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();
@@ -440,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
@@ -609,9 +608,9 @@ static void SetWarpData(struct WarpData *warp, s8 mapGroup, s8 mapNum, s8 warpId
static bool32 IsDummyWarp(struct WarpData *warp)
{
- if (warp->mapGroup != (s8)MAP_GROUP(UNDEFINED))
+ if (warp->mapGroup != (s8)MAP_GROUP(MAP_UNDEFINED))
return FALSE;
- else if (warp->mapNum != (s8)MAP_NUM(UNDEFINED))
+ else if (warp->mapNum != (s8)MAP_NUM(MAP_UNDEFINED))
return FALSE;
else if (warp->warpId != WARP_ID_NONE)
return FALSE;
@@ -706,7 +705,7 @@ void SetWarpDestinationToHealLocation(u8 healLocationId)
{
const struct HealLocation *healLocation = GetHealLocation(healLocationId);
if (healLocation)
- SetWarpDestination(healLocation->group, healLocation->map, WARP_ID_NONE, healLocation->x, healLocation->y);
+ SetWarpDestination(healLocation->mapGroup, healLocation->mapNum, WARP_ID_NONE, healLocation->x, healLocation->y);
}
static bool32 IsFRLGWhiteout(void)
@@ -728,7 +727,7 @@ void SetLastHealLocationWarp(u8 healLocationId)
{
const struct HealLocation *healLocation = GetHealLocation(healLocationId);
if (healLocation)
- SetWarpData(&gSaveBlock1Ptr->lastHealLocation, healLocation->group, healLocation->map, WARP_ID_NONE, healLocation->x, healLocation->y);
+ SetWarpData(&gSaveBlock1Ptr->lastHealLocation, healLocation->mapGroup, healLocation->mapNum, WARP_ID_NONE, healLocation->x, healLocation->y);
}
void UpdateEscapeWarp(s16 x, s16 y)
@@ -786,7 +785,7 @@ void SetContinueGameWarpToHealLocation(u8 healLocationId)
{
const struct HealLocation *healLocation = GetHealLocation(healLocationId);
if (healLocation)
- SetWarpData(&gSaveBlock1Ptr->continueGameWarp, healLocation->group, healLocation->map, WARP_ID_NONE, healLocation->x, healLocation->y);
+ SetWarpData(&gSaveBlock1Ptr->continueGameWarp, healLocation->mapGroup, healLocation->mapNum, WARP_ID_NONE, healLocation->x, healLocation->y);
}
void SetContinueGameWarpToDynamicWarp(int unused)
@@ -1098,24 +1097,24 @@ static bool16 ShouldLegendaryMusicPlayAtLocation(struct WarpData *warp)
{
switch (warp->mapNum)
{
- case MAP_NUM(LILYCOVE_CITY):
- case MAP_NUM(MOSSDEEP_CITY):
- case MAP_NUM(SOOTOPOLIS_CITY):
- case MAP_NUM(EVER_GRANDE_CITY):
- case MAP_NUM(ROUTE124):
- case MAP_NUM(ROUTE125):
- case MAP_NUM(ROUTE126):
- case MAP_NUM(ROUTE127):
- case MAP_NUM(ROUTE128):
+ case MAP_NUM(MAP_LILYCOVE_CITY):
+ case MAP_NUM(MAP_MOSSDEEP_CITY):
+ case MAP_NUM(MAP_SOOTOPOLIS_CITY):
+ case MAP_NUM(MAP_EVER_GRANDE_CITY):
+ case MAP_NUM(MAP_ROUTE124):
+ case MAP_NUM(MAP_ROUTE125):
+ case MAP_NUM(MAP_ROUTE126):
+ case MAP_NUM(MAP_ROUTE127):
+ case MAP_NUM(MAP_ROUTE128):
return TRUE;
default:
if (VarGet(VAR_SOOTOPOLIS_CITY_STATE) < 4)
return FALSE;
switch (warp->mapNum)
{
- case MAP_NUM(ROUTE129):
- case MAP_NUM(ROUTE130):
- case MAP_NUM(ROUTE131):
+ case MAP_NUM(MAP_ROUTE129):
+ case MAP_NUM(MAP_ROUTE130):
+ case MAP_NUM(MAP_ROUTE131):
return TRUE;
}
}
@@ -1127,9 +1126,9 @@ static bool16 NoMusicInSotopolisWithLegendaries(struct WarpData *warp)
{
if (VarGet(VAR_SKY_PILLAR_STATE) != 1)
return FALSE;
- else if (warp->mapGroup != MAP_GROUP(SOOTOPOLIS_CITY))
+ else if (warp->mapGroup != MAP_GROUP(MAP_SOOTOPOLIS_CITY))
return FALSE;
- else if (warp->mapNum == MAP_NUM(SOOTOPOLIS_CITY))
+ else if (warp->mapNum == MAP_NUM(MAP_SOOTOPOLIS_CITY))
return TRUE;
else
return FALSE;
@@ -1139,10 +1138,10 @@ static bool16 IsInfiltratedWeatherInstitute(struct WarpData *warp)
{
if (VarGet(VAR_WEATHER_INSTITUTE_STATE))
return FALSE;
- else if (warp->mapGroup != MAP_GROUP(ROUTE119_WEATHER_INSTITUTE_1F))
+ else if (warp->mapGroup != MAP_GROUP(MAP_ROUTE119_WEATHER_INSTITUTE_1F))
return FALSE;
- else if (warp->mapNum == MAP_NUM(ROUTE119_WEATHER_INSTITUTE_1F)
- || warp->mapNum == MAP_NUM(ROUTE119_WEATHER_INSTITUTE_2F))
+ else if (warp->mapNum == MAP_NUM(MAP_ROUTE119_WEATHER_INSTITUTE_1F)
+ || warp->mapNum == MAP_NUM(MAP_ROUTE119_WEATHER_INSTITUTE_2F))
return TRUE;
else
return FALSE;
@@ -1154,10 +1153,10 @@ static bool16 IsInflitratedSpaceCenter(struct WarpData *warp)
return FALSE;
else if (VarGet(VAR_MOSSDEEP_CITY_STATE) > 2)
return FALSE;
- else if (warp->mapGroup != MAP_GROUP(MOSSDEEP_CITY_SPACE_CENTER_1F))
+ else if (warp->mapGroup != MAP_GROUP(MAP_MOSSDEEP_CITY_SPACE_CENTER_1F))
return FALSE;
- else if (warp->mapNum == MAP_NUM(MOSSDEEP_CITY_SPACE_CENTER_1F)
- || warp->mapNum == MAP_NUM(MOSSDEEP_CITY_SPACE_CENTER_2F))
+ else if (warp->mapNum == MAP_NUM(MAP_MOSSDEEP_CITY_SPACE_CENTER_1F)
+ || warp->mapNum == MAP_NUM(MAP_MOSSDEEP_CITY_SPACE_CENTER_2F))
return TRUE;
return FALSE;
}
@@ -1181,8 +1180,8 @@ u16 GetCurrLocationDefaultMusic(void)
u16 music;
// Play the desert music only when the sandstorm is active on Route 111.
- if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(ROUTE111)
- && gSaveBlock1Ptr->location.mapNum == MAP_NUM(ROUTE111)
+ if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(MAP_ROUTE111)
+ && gSaveBlock1Ptr->location.mapNum == MAP_NUM(MAP_ROUTE111)
&& GetSavedWeather() == WEATHER_SANDSTORM)
return MUS_DESERT;
@@ -1209,8 +1208,8 @@ u16 GetWarpDestinationMusic(void)
}
else
{
- if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(MAUVILLE_CITY)
- && gSaveBlock1Ptr->location.mapNum == MAP_NUM(MAUVILLE_CITY))
+ if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(MAP_MAUVILLE_CITY)
+ && gSaveBlock1Ptr->location.mapNum == MAP_NUM(MAP_MAUVILLE_CITY))
return MUS_ROUTE110;
else
return MUS_ROUTE119;
@@ -1304,10 +1303,10 @@ void TryFadeOutOldMapMusic(void)
{
if (currentMusic == MUS_SURF
&& VarGet(VAR_SKY_PILLAR_STATE) == 2
- && gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(SOOTOPOLIS_CITY)
- && gSaveBlock1Ptr->location.mapNum == MAP_NUM(SOOTOPOLIS_CITY)
- && sWarpDestination.mapGroup == MAP_GROUP(SOOTOPOLIS_CITY)
- && sWarpDestination.mapNum == MAP_NUM(SOOTOPOLIS_CITY)
+ && gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(MAP_SOOTOPOLIS_CITY)
+ && gSaveBlock1Ptr->location.mapNum == MAP_NUM(MAP_SOOTOPOLIS_CITY)
+ && sWarpDestination.mapGroup == MAP_GROUP(MAP_SOOTOPOLIS_CITY)
+ && sWarpDestination.mapNum == MAP_NUM(MAP_SOOTOPOLIS_CITY)
&& sWarpDestination.x == 29
&& sWarpDestination.y == 53)
return;
@@ -1399,8 +1398,8 @@ void UpdateAmbientCry(s16 *state, u16 *delayCounter)
static void ChooseAmbientCrySpecies(void)
{
- if ((gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(ROUTE130)
- && gSaveBlock1Ptr->location.mapNum == MAP_NUM(ROUTE130))
+ if ((gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(MAP_ROUTE130)
+ && gSaveBlock1Ptr->location.mapNum == MAP_NUM(MAP_ROUTE130))
&& !IsMirageIslandPresent())
{
// Only play water Pokémon cries on this route
@@ -2433,9 +2432,9 @@ static void InitObjectEventsLocal(void)
SetPlayerAvatarTransitionFlags(player->transitionFlags);
ResetInitialPlayerAvatarState();
TrySpawnObjectEvents(0, 0);
+ FollowerNPC_HandleSprite();
UpdateFollowingPokemon();
TryRunOnWarpIntoMapScript();
- FollowerNPC_HandleSprite();
}
static void InitObjectEventsReturnToField(void)
@@ -3528,7 +3527,7 @@ static u8 ReformatItemDescription(u16 item, u8 *dest)
u8 count = 0;
u8 numLines = 1;
u8 maxChars = 32;
- u8 *desc = (u8 *)ItemId_GetDescription(item);
+ u8 *desc = (u8 *)GetItemDescription(item);
while (*desc != EOS)
{
diff --git a/src/party_menu.c b/src/party_menu.c
index 23f04df2c7..f05c42bd0a 100644
--- a/src/party_menu.c
+++ b/src/party_menu.c
@@ -4617,7 +4617,7 @@ static void Task_SetSacredAshCB(u8 taskId)
static bool8 IsHPRecoveryItem(u16 item)
{
- const u8 *effect = ItemId_GetEffect(item);
+ const u8 *effect = GetItemEffect(item);
if (effect == NULL)
return FALSE;
@@ -5092,7 +5092,7 @@ void ItemUseCB_Mint(u8 taskId, TaskFunc task)
tState = 0;
tMonId = gPartyMenu.slotId;
tOldNature = GetMonData(&gPlayerParty[tMonId], MON_DATA_HIDDEN_NATURE);
- tNewNature = ItemId_GetSecondaryId(gSpecialVar_ItemId);
+ tNewNature = GetItemSecondaryId(gSpecialVar_ItemId);
SetWordTaskArg(taskId, tOldFunc, (uintptr_t)(gTasks[taskId].func));
gTasks[taskId].func = Task_Mint;
}
@@ -5283,7 +5283,7 @@ static void Task_HandleWhichMoveInput(u8 taskId)
void ItemUseCB_PPRecovery(u8 taskId, TaskFunc task)
{
- const u8 *effect = ItemId_GetEffect(gSpecialVar_ItemId);
+ const u8 *effect = GetItemEffect(gSpecialVar_ItemId);
if (effect == NULL || !(effect[4] & ITEM4_HEAL_PP_ONE))
{
@@ -5379,7 +5379,7 @@ void ItemUseCB_PPUp(u8 taskId, TaskFunc task)
u16 ItemIdToBattleMoveId(u16 item)
{
- return (ItemId_GetPocket(item) == POCKET_TM_HM) ? gItemsInfo[item].secondaryId : MOVE_NONE;
+ return (GetItemPocket(item) == POCKET_TM_HM) ? gItemsInfo[item].secondaryId : MOVE_NONE;
}
bool8 MonKnowsMove(struct Pokemon *mon, u16 move)
@@ -5466,7 +5466,7 @@ static void Task_LearnedMove(u8 taskId)
if (move[1] == 0)
{
AdjustFriendship(mon, FRIENDSHIP_EVENT_LEARN_TMHM);
- if (!ItemId_GetImportance(item))
+ if (!GetItemImportance(item))
RemoveBagItem(item, 1);
}
GetMonNickname(mon, gStringVar1);
@@ -5547,7 +5547,7 @@ static void CB2_ReturnToPartyMenuWhileLearningMove(void)
{
if (sFinalLevel != 0)
SetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_LEVEL, &sFinalLevel); // to avoid displaying incorrect level
- if (ItemId_GetFieldFunc(gSpecialVar_ItemId) == ItemUseOutOfBattle_RareCandy && gPartyMenu.menuType == PARTY_MENU_TYPE_FIELD && CheckBagHasItem(gSpecialVar_ItemId, 1))
+ if (GetItemFieldFunc(gSpecialVar_ItemId) == ItemUseOutOfBattle_RareCandy && gPartyMenu.menuType == PARTY_MENU_TYPE_FIELD && CheckBagHasItem(gSpecialVar_ItemId, 1))
InitPartyMenu(PARTY_MENU_TYPE_FIELD, PARTY_LAYOUT_SINGLE, PARTY_ACTION_USE_ITEM, TRUE, PARTY_MSG_NONE, Task_ReturnToPartyMenuWhileLearningMove, gPartyMenu.exitCallback);
else
InitPartyMenu(PARTY_MENU_TYPE_FIELD, PARTY_LAYOUT_SINGLE, PARTY_ACTION_CHOOSE_MON, TRUE, PARTY_MSG_NONE, Task_ReturnToPartyMenuWhileLearningMove, gPartyMenu.exitCallback);
@@ -5665,7 +5665,7 @@ void ItemUseCB_RareCandy(u8 taskId, TaskFunc task)
s16 *arrayPtr = ptr->data;
u16 *itemPtr = &gSpecialVar_ItemId;
bool8 cannotUseEffect;
- u8 holdEffectParam = ItemId_GetHoldEffectParam(*itemPtr);
+ u8 holdEffectParam = GetItemHoldEffectParam(*itemPtr);
sInitialLevel = GetMonData(mon, MON_DATA_LEVEL);
if (!(B_RARE_CANDY_CAP && sInitialLevel >= GetCurrentLevelCap()))
@@ -5886,7 +5886,7 @@ static void PartyMenuTryEvolution(u8 taskId)
{
GetEvolutionTargetSpecies(mon, EVO_MODE_NORMAL, ITEM_NONE, NULL, &canStopEvo, DO_EVO);
FreePartyPointers();
- if (ItemId_GetFieldFunc(gSpecialVar_ItemId) == ItemUseOutOfBattle_RareCandy && gPartyMenu.menuType == PARTY_MENU_TYPE_FIELD && CheckBagHasItem(gSpecialVar_ItemId, 1))
+ 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;
@@ -6098,7 +6098,7 @@ void ItemUseCB_EvolutionStone(u8 taskId, TaskFunc task)
}
else
{
- if (ItemId_GetPocket(gSpecialVar_ItemId) != POCKET_KEY_ITEMS)
+ if (GetItemPocket(gSpecialVar_ItemId) != POCKET_KEY_ITEMS)
RemoveBagItem(gSpecialVar_ItemId, 1);
FreePartyPointers();
}
@@ -6742,7 +6742,7 @@ void TryItemHoldFormChange(struct Pokemon *mon, s8 slotId)
u8 GetItemEffectType(u16 item)
{
u32 statusCure;
- const u8 *itemEffect = ItemId_GetEffect(item);
+ const u8 *itemEffect = GetItemEffect(item);
if (itemEffect == NULL)
return ITEM_EFFECT_NONE;
@@ -7076,8 +7076,8 @@ static bool8 GetBattleEntryEligibility(struct Pokemon *mon)
if (GetMonData(mon, MON_DATA_IS_EGG)
|| GetMonData(mon, MON_DATA_LEVEL) > GetBattleEntryLevelCap()
- || (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(BATTLE_FRONTIER_BATTLE_PYRAMID_LOBBY)
- && gSaveBlock1Ptr->location.mapNum == MAP_NUM(BATTLE_FRONTIER_BATTLE_PYRAMID_LOBBY)
+ || (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(MAP_BATTLE_FRONTIER_BATTLE_PYRAMID_LOBBY)
+ && gSaveBlock1Ptr->location.mapNum == MAP_NUM(MAP_BATTLE_FRONTIER_BATTLE_PYRAMID_LOBBY)
&& GetMonData(mon, MON_DATA_HELD_ITEM) != ITEM_NONE))
{
return FALSE;
@@ -7401,20 +7401,20 @@ static void BufferBattlePartyOrder(u8 *partyBattleOrder, u8 flankId)
partyBattleOrder[i] = (partyIds[0 + (i * 2)] << 4) | partyIds[1 + (i * 2)];
}
-void BufferBattlePartyCurrentOrderBySide(u8 battlerId, u8 flankId)
+void BufferBattlePartyCurrentOrderBySide(u8 battler, u8 flankId)
{
- BufferBattlePartyOrderBySide(gBattleStruct->battlerPartyOrders[battlerId], flankId, battlerId);
+ BufferBattlePartyOrderBySide(gBattleStruct->battlerPartyOrders[battler], flankId, battler);
}
// when IsOnPlayerSide(battlerId), this function is identical the one above
-static void BufferBattlePartyOrderBySide(u8 *partyBattleOrder, u8 flankId, u8 battlerId)
+static void BufferBattlePartyOrderBySide(u8 *partyBattleOrder, u8 flankId, u8 battler)
{
u8 partyIndexes[PARTY_SIZE];
int i, j;
u8 leftBattler;
u8 rightBattler;
- if (IsOnPlayerSide(battlerId))
+ if (IsOnPlayerSide(battler))
{
leftBattler = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT);
rightBattler = GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT);
@@ -7473,7 +7473,7 @@ static void BufferBattlePartyOrderBySide(u8 *partyBattleOrder, u8 flankId, u8 ba
partyBattleOrder[i] = (partyIndexes[0 + (i * 2)] << 4) | partyIndexes[1 + (i * 2)];
}
-void SwitchPartyOrderLinkMulti(u8 battlerId, u8 slot, u8 slot2)
+void SwitchPartyOrderLinkMulti(u8 battler, u8 slot, u8 slot2)
{
u8 partyIds[PARTY_SIZE];
u8 tempSlot = 0;
@@ -7483,7 +7483,7 @@ void SwitchPartyOrderLinkMulti(u8 battlerId, u8 slot, u8 slot2)
if (IsMultiBattle())
{
- partyBattleOrder = gBattleStruct->battlerPartyOrders[battlerId];
+ partyBattleOrder = gBattleStruct->battlerPartyOrders[battler];
for (i = j = 0; i < PARTY_SIZE / 2; j++, i++)
{
partyIds[j] = partyBattleOrder[i] >> 4;
diff --git a/src/player_pc.c b/src/player_pc.c
index 352a7a11f8..02f4fc4cd5 100644
--- a/src/player_pc.c
+++ b/src/player_pc.c
@@ -1062,7 +1062,7 @@ static void ItemStorage_PrintDescription(s32 id)
// Get item description (or Cancel text)
if (id != LIST_CANCEL)
- description = (u8 *)ItemId_GetDescription(gSaveBlock1Ptr->pcItems[id].itemId);
+ description = (u8 *)GetItemDescription(gSaveBlock1Ptr->pcItems[id].itemId);
else
description = ItemStorage_GetMessage(MSG_GO_BACK_TO_PREV);
@@ -1206,7 +1206,7 @@ static const u8 *ItemStorage_GetMessage(u16 itemId)
string = gText_MoveVar1Where;
break;
default:
- string = ItemId_GetDescription(itemId);
+ string = GetItemDescription(itemId);
break;
}
return string;
@@ -1462,7 +1462,7 @@ static void ItemStorage_DoItemToss(u8 taskId)
s16 *data = gTasks[taskId].data;
u16 pos = gPlayerPCItemPageInfo.cursorPos + gPlayerPCItemPageInfo.itemsAbove;
- if (!ItemId_GetImportance(gSaveBlock1Ptr->pcItems[pos].itemId))
+ if (!GetItemImportance(gSaveBlock1Ptr->pcItems[pos].itemId))
{
// Show toss confirmation prompt
u8 *end = CopyItemNameHandlePlural(gSaveBlock1Ptr->pcItems[pos].itemId, gStringVar1, tQuantity);
diff --git a/src/pokeball.c b/src/pokeball.c
index 2b893aa060..86b5bc9d9e 100644
--- a/src/pokeball.c
+++ b/src/pokeball.c
@@ -44,7 +44,7 @@ static void SpriteCB_TradePokeballEnd(struct Sprite *sprite);
static void SpriteCB_HealthboxSlideInDelayed(struct Sprite *sprite);
static void SpriteCB_HealthboxSlideIn(struct Sprite *sprite);
static void SpriteCB_HitAnimHealthoxEffect(struct Sprite *sprite);
-static u16 GetBattlerPokeballItemId(u8 battlerId);
+static u16 GetBattlerPokeballItemId(u8 battler);
// rom const data
@@ -563,7 +563,7 @@ u8 DoPokeballSendOutAnimation(u32 battler, s16 pan, u8 kindOfThrow)
static void Task_DoPokeballSendOutAnim(u8 taskId)
{
- u32 throwCaseId, ballId, battlerId, ballSpriteId;
+ u32 throwCaseId, ballId, battler, ballSpriteId;
bool32 notSendOut = FALSE;
u32 throwXoffset = (B_ENEMY_THROW_BALLS >= GEN_6) ? 24 : 0;
s32 throwYoffset = (B_ENEMY_THROW_BALLS >= GEN_6) ? -16 : 24;
@@ -575,8 +575,8 @@ static void Task_DoPokeballSendOutAnim(u8 taskId)
}
throwCaseId = gTasks[taskId].tThrowId;
- battlerId = gTasks[taskId].tBattler;
- ballId = GetBattlerPokeballItemId(battlerId);
+ battler = gTasks[taskId].tBattler;
+ ballId = GetBattlerPokeballItemId(battler);
LoadBallGfx(ballId);
ballSpriteId = CreateSprite(&gBallSpriteTemplates[ballId], 32, 80, 29);
gSprites[ballSpriteId].data[0] = 0x80;
@@ -586,24 +586,24 @@ static void Task_DoPokeballSendOutAnim(u8 taskId)
switch (throwCaseId)
{
case POKEBALL_PLAYER_SLIDEIN: // don't actually send out, trigger the slide-in animation
- gBattlerTarget = battlerId;
+ gBattlerTarget = battler;
gSprites[ballSpriteId].callback = HandleBallAnimEnd;
gSprites[ballSpriteId].invisible = TRUE;
break;
case POKEBALL_PLAYER_SENDOUT:
- gBattlerTarget = battlerId;
+ gBattlerTarget = battler;
gSprites[ballSpriteId].x = 24;
gSprites[ballSpriteId].y = 68;
gSprites[ballSpriteId].callback = SpriteCB_MonSendOut_1;
- DoPokeballSendOutSoundEffect(battlerId);
+ DoPokeballSendOutSoundEffect(battler);
break;
case POKEBALL_OPPONENT_SENDOUT:
- gSprites[ballSpriteId].x = GetBattlerSpriteCoord(battlerId, BATTLER_COORD_X) + throwXoffset;
- gSprites[ballSpriteId].y = GetBattlerSpriteCoord(battlerId, BATTLER_COORD_Y) + throwYoffset;
- gBattlerTarget = battlerId;
+ gSprites[ballSpriteId].x = GetBattlerSpriteCoord(battler, BATTLER_COORD_X) + throwXoffset;
+ gSprites[ballSpriteId].y = GetBattlerSpriteCoord(battler, BATTLER_COORD_Y) + throwYoffset;
+ gBattlerTarget = battler;
gSprites[ballSpriteId].data[0] = 0;
gSprites[ballSpriteId].callback = GetOpponentMonSendOutCallback();
- DoPokeballSendOutSoundEffect(battlerId);
+ DoPokeballSendOutSoundEffect(battler);
break;
default:
gBattlerTarget = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
@@ -895,7 +895,7 @@ static void Task_PlayCryWhenReleasedFromBall(u8 taskId)
u8 wantedCry = gTasks[taskId].tCryTaskWantedCry;
s8 pan = gTasks[taskId].tCryTaskPan;
u16 species = gTasks[taskId].tCryTaskSpecies;
- u8 battlerId = gTasks[taskId].tCryTaskBattler;
+ u8 battler = gTasks[taskId].tCryTaskBattler;
u8 monSpriteId = gTasks[taskId].tCryTaskMonSpriteId;
struct Pokemon *mon = (void *)(u32)((gTasks[taskId].tCryTaskMonPtr1 << 16) | (u16)(gTasks[taskId].tCryTaskMonPtr2));
@@ -912,7 +912,7 @@ static void Task_PlayCryWhenReleasedFromBall(u8 taskId)
PlayCry_ByMode(species, pan, CRY_MODE_NORMAL);
else
PlayCry_ByMode(species, pan, CRY_MODE_WEAK);
- gBattleSpritesDataPtr->healthBoxesData[battlerId].waitForCry = FALSE;
+ gBattleSpritesDataPtr->healthBoxesData[battler].waitForCry = FALSE;
DestroyTask(taskId);
break;
case 2:
@@ -929,7 +929,7 @@ static void Task_PlayCryWhenReleasedFromBall(u8 taskId)
else
PlayCry_ReleaseDouble(species, pan, CRY_MODE_WEAK_DOUBLES);
- gBattleSpritesDataPtr->healthBoxesData[battlerId].waitForCry = FALSE;
+ gBattleSpritesDataPtr->healthBoxesData[battler].waitForCry = FALSE;
DestroyTask(taskId);
}
else
@@ -969,7 +969,7 @@ static void Task_PlayCryWhenReleasedFromBall(u8 taskId)
else
PlayCry_ReleaseDouble(species, pan, CRY_MODE_WEAK);
- gBattleSpritesDataPtr->healthBoxesData[battlerId].waitForCry = FALSE;
+ gBattleSpritesDataPtr->healthBoxesData[battler].waitForCry = FALSE;
DestroyTask(taskId);
break;
}
@@ -977,11 +977,11 @@ static void Task_PlayCryWhenReleasedFromBall(u8 taskId)
static void SpriteCB_ReleaseMonFromBall(struct Sprite *sprite)
{
- u8 battlerId = sprite->sBattler;
+ u8 battler = sprite->sBattler;
u32 ballId;
StartSpriteAnim(sprite, 1);
- ballId = GetBattlerPokeballItemId(battlerId);
+ ballId = GetBattlerPokeballItemId(battler);
AnimateBallOpenParticles(sprite->x, sprite->y - 5, 1, 28, ballId);
sprite->data[0] = LaunchBallFadeMonTask(TRUE, sprite->sBattler, 14, ballId);
sprite->callback = HandleBallAnimEnd;
@@ -993,13 +993,13 @@ static void SpriteCB_ReleaseMonFromBall(struct Sprite *sprite)
u16 wantedCryCase;
u8 taskId;
- mon = GetBattlerMon(battlerId);
- if (!IsOnPlayerSide(battlerId))
+ mon = GetBattlerMon(battler);
+ if (!IsOnPlayerSide(battler))
pan = 25;
else
pan = -25;
- if ((battlerId == GetBattlerAtPosition(B_POSITION_PLAYER_LEFT) || battlerId == GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT))
+ if ((battler == GetBattlerAtPosition(B_POSITION_PLAYER_LEFT) || battler == GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT))
&& IsDoubleBattle() && gBattleSpritesDataPtr->animationData->introAnimActive)
{
if (gBattleTypeFlags & BATTLE_TYPE_MULTI && gBattleTypeFlags & BATTLE_TYPE_LINK)
@@ -1015,16 +1015,16 @@ static void SpriteCB_ReleaseMonFromBall(struct Sprite *sprite)
if (!IsDoubleBattle() || !gBattleSpritesDataPtr->animationData->introAnimActive)
wantedCryCase = 0;
- else if (battlerId == GetBattlerAtPosition(B_POSITION_PLAYER_LEFT) || battlerId == GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT))
+ else if (battler == GetBattlerAtPosition(B_POSITION_PLAYER_LEFT) || battler == GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT))
wantedCryCase = 1;
else
wantedCryCase = 2;
- gBattleSpritesDataPtr->healthBoxesData[battlerId].waitForCry = TRUE;
+ gBattleSpritesDataPtr->healthBoxesData[battler].waitForCry = TRUE;
taskId = CreateTask(Task_PlayCryWhenReleasedFromBall, 3);
- illusionMon = GetIllusionMonPtr(battlerId);
+ illusionMon = GetIllusionMonPtr(battler);
if (illusionMon != NULL)
gTasks[taskId].tCryTaskSpecies = GetMonData(illusionMon, MON_DATA_SPECIES);
else
@@ -1032,7 +1032,7 @@ static void SpriteCB_ReleaseMonFromBall(struct Sprite *sprite)
gTasks[taskId].tCryTaskPan = pan;
gTasks[taskId].tCryTaskWantedCry = wantedCryCase;
- gTasks[taskId].tCryTaskBattler = battlerId;
+ gTasks[taskId].tCryTaskBattler = battler;
gTasks[taskId].tCryTaskMonSpriteId = gBattlerSpriteIds[sprite->sBattler];
gTasks[taskId].tCryTaskMonPtr1 = (u32)(mon) >> 16;
gTasks[taskId].tCryTaskMonPtr2 = (u32)(mon);
@@ -1072,35 +1072,35 @@ static void SpriteCB_BallThrow_StartCaptureMon(struct Sprite *sprite)
static void HandleBallAnimEnd(struct Sprite *sprite)
{
bool8 affineAnimEnded = FALSE;
- u8 battlerId = sprite->sBattler;
+ u8 battler = sprite->sBattler;
if (sprite->data[7] == POKEBALL_PLAYER_SLIDEIN)
{
- gSprites[gBattlerSpriteIds[sprite->sBattler]].callback = SpriteCB_PlayerMonSlideIn;
- AnimateSprite(&gSprites[gBattlerSpriteIds[sprite->sBattler]]);
- gSprites[gBattlerSpriteIds[sprite->sBattler]].data[1] = 0x1000;
+ gSprites[gBattlerSpriteIds[battler]].callback = SpriteCB_PlayerMonSlideIn;
+ AnimateSprite(&gSprites[gBattlerSpriteIds[battler]]);
+ gSprites[gBattlerSpriteIds[battler]].data[1] = 0x1000;
}
- gSprites[gBattlerSpriteIds[battlerId]].invisible = FALSE;
+ gSprites[gBattlerSpriteIds[battler]].invisible = FALSE;
if (sprite->animEnded)
sprite->invisible = TRUE;
- if (gSprites[gBattlerSpriteIds[battlerId]].affineAnimEnded)
+ if (gSprites[gBattlerSpriteIds[battler]].affineAnimEnded)
{
- StartSpriteAffineAnim(&gSprites[gBattlerSpriteIds[battlerId]], BATTLER_AFFINE_NORMAL);
+ StartSpriteAffineAnim(&gSprites[gBattlerSpriteIds[battler]], BATTLER_AFFINE_NORMAL);
affineAnimEnded = TRUE;
}
else
{
- gSprites[gBattlerSpriteIds[battlerId]].data[1] -= 288;
- gSprites[gBattlerSpriteIds[battlerId]].y2 = gSprites[gBattlerSpriteIds[battlerId]].data[1] >> 8;
+ gSprites[gBattlerSpriteIds[battler]].data[1] -= 288;
+ gSprites[gBattlerSpriteIds[battler]].y2 = gSprites[gBattlerSpriteIds[battler]].data[1] >> 8;
}
if (sprite->animEnded && affineAnimEnded)
{
s32 i, doneBattlers;
- gSprites[gBattlerSpriteIds[battlerId]].y2 = 0;
+ gSprites[gBattlerSpriteIds[battler]].y2 = 0;
gDoingBattleAnim = FALSE;
- gBattleSpritesDataPtr->healthBoxesData[battlerId].ballAnimActive = FALSE;
+ gBattleSpritesDataPtr->healthBoxesData[battler].ballAnimActive = FALSE;
FreeSpriteOamMatrix(sprite);
DestroySprite(sprite);
@@ -1119,7 +1119,7 @@ static void HandleBallAnimEnd(struct Sprite *sprite)
static void SpriteCB_BallThrow_CaptureMon(struct Sprite *sprite)
{
- u8 battlerId = sprite->sBattler;
+ u8 battler = sprite->sBattler;
sprite->data[4]++;
if (sprite->data[4] == 40)
@@ -1134,11 +1134,11 @@ static void SpriteCB_BallThrow_CaptureMon(struct Sprite *sprite)
}
else if (sprite->data[4] == 315)
{
- FreeOamMatrix(gSprites[gBattlerSpriteIds[sprite->sBattler]].oam.matrixNum);
- DestroySprite(&gSprites[gBattlerSpriteIds[sprite->sBattler]]);
+ FreeOamMatrix(gSprites[gBattlerSpriteIds[battler]].oam.matrixNum);
+ DestroySprite(&gSprites[gBattlerSpriteIds[battler]]);
DestroySpriteAndFreeResources(sprite);
if (gMain.inBattle)
- gBattleSpritesDataPtr->healthBoxesData[battlerId].ballAnimActive = FALSE;
+ gBattleSpritesDataPtr->healthBoxesData[battler].ballAnimActive = FALSE;
}
}
@@ -1482,16 +1482,16 @@ static void UNUSED DestroySpriteAndFreeResources_Ball(struct Sprite *sprite)
#define sDelayTimer data[1]
-void StartHealthboxSlideIn(u8 battlerId)
+void StartHealthboxSlideIn(u8 battler)
{
- struct Sprite *healthboxSprite = &gSprites[gHealthboxSpriteIds[battlerId]];
+ struct Sprite *healthboxSprite = &gSprites[gHealthboxSpriteIds[battler]];
healthboxSprite->sSpeedX = 5;
healthboxSprite->sSpeedY = 0;
healthboxSprite->x2 = 0x73;
healthboxSprite->y2 = 0;
healthboxSprite->callback = SpriteCB_HealthboxSlideIn;
- if (!IsOnPlayerSide(battlerId))
+ if (!IsOnPlayerSide(battler))
{
healthboxSprite->sSpeedX = -healthboxSprite->sSpeedX;
healthboxSprite->sSpeedY = -healthboxSprite->sSpeedY;
@@ -1499,7 +1499,7 @@ void StartHealthboxSlideIn(u8 battlerId)
healthboxSprite->y2 = -healthboxSprite->y2;
}
gSprites[healthboxSprite->data[5]].callback(&gSprites[healthboxSprite->data[5]]);
- if (GetBattlerPosition(battlerId) == B_POSITION_PLAYER_RIGHT)
+ if (GetBattlerPosition(battler) == B_POSITION_PLAYER_RIGHT)
healthboxSprite->callback = SpriteCB_HealthboxSlideInDelayed;
}
@@ -1525,13 +1525,13 @@ static void SpriteCB_HealthboxSlideIn(struct Sprite *sprite)
#undef sSpeedY
#undef sDelayTimer
-void DoHitAnimHealthboxEffect(u8 battlerId)
+void DoHitAnimHealthboxEffect(u8 battler)
{
u8 spriteId;
spriteId = CreateInvisibleSpriteWithCallback(SpriteCB_HitAnimHealthoxEffect);
gSprites[spriteId].data[0] = 1;
- gSprites[spriteId].data[1] = gHealthboxSpriteIds[battlerId];
+ gSprites[spriteId].data[1] = gHealthboxSpriteIds[battler];
gSprites[spriteId].callback = SpriteCB_HitAnimHealthoxEffect;
}
@@ -1578,12 +1578,12 @@ void FreeBallGfx(u8 ballId)
FreeSpritePaletteByTag(gBallSpritePalettes[ballId].tag);
}
-static u16 GetBattlerPokeballItemId(u8 battlerId)
+static u16 GetBattlerPokeballItemId(u8 battler)
{
struct Pokemon *illusionMon;
- struct Pokemon *mon = GetBattlerMon(battlerId);
+ struct Pokemon *mon = GetBattlerMon(battler);
- illusionMon = GetIllusionMonPtr(battlerId);
+ illusionMon = GetIllusionMonPtr(battler);
if (illusionMon != NULL)
mon = illusionMon;
@@ -1592,7 +1592,7 @@ static u16 GetBattlerPokeballItemId(u8 battlerId)
enum PokeBall ItemIdToBallId(u32 ballItem)
{
- enum PokeBall secondaryId = ItemId_GetSecondaryId(ballItem);
+ enum PokeBall secondaryId = GetItemSecondaryId(ballItem);
if (secondaryId <= BALL_STRANGE || secondaryId >= POKEBALL_COUNT)
return BALL_STRANGE;
diff --git a/src/pokeblock.c b/src/pokeblock.c
index ff71d64b7a..41d68ed8d6 100644
--- a/src/pokeblock.c
+++ b/src/pokeblock.c
@@ -704,7 +704,7 @@ static void DrawPokeblockMenuTitleText(void)
{
u8 i;
- const u8 *itemName = ItemId_GetName(ITEM_POKEBLOCK_CASE);
+ const u8 *itemName = GetItemName(ITEM_POKEBLOCK_CASE);
PrintOnPokeblockWindow(WIN_TITLE, itemName, GetStringCenterAlignXOffset(FONT_NORMAL, itemName, 0x48));
PrintOnPokeblockWindow(WIN_SPICY, COMPOUND_STRING("SPICY"), 0);
diff --git a/src/pokedex_area_region_map.c b/src/pokedex_area_region_map.c
index cd2975473a..06bd05a87b 100644
--- a/src/pokedex_area_region_map.c
+++ b/src/pokedex_area_region_map.c
@@ -17,7 +17,7 @@ static const u32 sPokedexAreaMapAffine_Tilemap[] = INCBIN_U32("graphics/pokedex/
void LoadPokedexAreaMapGfx(const struct PokedexAreaMapTemplate *template)
{
u8 mode;
- void * tilemap;
+ void *tilemap;
sPokedexAreaMapBgNum = Alloc(sizeof(sPokedexAreaMapBgNum));
mode = template->mode;
diff --git a/src/pokedex_area_screen.c b/src/pokedex_area_screen.c
index 1c8cebb7ea..93866817d2 100644
--- a/src/pokedex_area_screen.c
+++ b/src/pokedex_area_screen.c
@@ -36,9 +36,9 @@
// determined by the data for the corresponding MAPSEC in gRegionMapEntries.
// Only maps in the following map groups have their encounters considered for the area screen
-#define MAP_GROUP_TOWNS_AND_ROUTES MAP_GROUP(PETALBURG_CITY)
-#define MAP_GROUP_DUNGEONS MAP_GROUP(METEOR_FALLS_1F_1R)
-#define MAP_GROUP_SPECIAL_AREA MAP_GROUP(SAFARI_ZONE_NORTHWEST)
+#define MAP_GROUP_TOWNS_AND_ROUTES MAP_GROUP(MAP_PETALBURG_CITY)
+#define MAP_GROUP_DUNGEONS MAP_GROUP(MAP_METEOR_FALLS_1F_1R)
+#define MAP_GROUP_SPECIAL_AREA MAP_GROUP(MAP_SAFARI_ZONE_NORTHWEST)
#define AREA_SCREEN_WIDTH 32
#define AREA_SCREEN_HEIGHT 20
@@ -103,7 +103,7 @@ struct
/*0x6E8*/ u8 *screenSwitchState;
/*0x6EC*/ struct RegionMap regionMap;
/*0xF70*/ u8 charBuffer[64];
- /*0xFB0*/ struct Sprite * areaUnknownSprites[3];
+ /*0xFB0*/ struct Sprite *areaUnknownSprites[3];
/*0xFBC*/ u8 areaUnknownGraphicsBuffer[0x600];
/*0xFC0*/ u8 areaScreenLabelIds[NUM_LABEL_WINDOWS];
/*0xFC8*/ u8 areaState;
@@ -152,7 +152,7 @@ static const u16 sMovingRegionMapSections[3] =
static const u16 sFeebasData[][3] =
{
- {SPECIES_FEEBAS, MAP_GROUP(ROUTE119), MAP_NUM(ROUTE119)},
+ {SPECIES_FEEBAS, MAP_GROUP(MAP_ROUTE119), MAP_NUM(MAP_ROUTE119)},
{NUM_SPECIES}
};
@@ -339,7 +339,7 @@ static void FindMapsWithMon(u16 species)
}
// Add regular species to the area map
- for (i = 0; gWildMonHeaders[i].mapGroup != MAP_GROUP(UNDEFINED); i++)
+ for (i = 0; gWildMonHeaders[i].mapGroup != MAP_GROUP(MAP_UNDEFINED); i++)
{
if (MapHasSpecies(&gWildMonHeaders[i].encounterTypes[gAreaTimeOfDay], species))
{
@@ -921,7 +921,7 @@ static void Task_HandlePokedexAreaScreenInput(u8 taskId)
ClearAreaWindowLabel(DEX_AREA_LABEL_AREA_UNKNOWN);
RemoveAllWindowsOnBg(LABEL_WINDOW_BG);
}
-
+
sPokedexAreaScreen->screenSwitchState[0] = gTasks[taskId].data[1];
ResetPokedexAreaMapBg();
DestroyTask(taskId);
diff --git a/src/pokedex_plus_hgss.c b/src/pokedex_plus_hgss.c
index fd5cfaa71b..6541e9d3a7 100644
--- a/src/pokedex_plus_hgss.c
+++ b/src/pokedex_plus_hgss.c
@@ -4674,45 +4674,27 @@ static void LoadTilesetTilemapHGSS(u8 page)
switch (page)
{
case INFO_SCREEN:
- if (!HGSS_DECAPPED)
- DecompressAndLoadBgGfxUsingHeap(3, sPokedexPlusHGSS_Menu_1_Gfx, 0x2000, 0, 0);
- else
- DecompressAndLoadBgGfxUsingHeap(3, sPokedexPlusHGSS_Menu_1_Gfx, 0x2000, 0, 0);
+ DecompressAndLoadBgGfxUsingHeap(3, sPokedexPlusHGSS_Menu_1_Gfx, 0x2000, 0, 0);
CopyToBgTilemapBuffer(3, sPokedexPlusHGSS_ScreenInfo_Tilemap, 0, 0);
break;
case STATS_SCREEN:
- if (!HGSS_DECAPPED)
- DecompressAndLoadBgGfxUsingHeap(3, sPokedexPlusHGSS_Menu_1_Gfx, 0x2000, 0, 0);
- else
- DecompressAndLoadBgGfxUsingHeap(3, sPokedexPlusHGSS_Menu_1_Gfx, 0x2000, 0, 0);
+ DecompressAndLoadBgGfxUsingHeap(3, sPokedexPlusHGSS_Menu_1_Gfx, 0x2000, 0, 0);
CopyToBgTilemapBuffer(3, sPokedexPlusHGSS_ScreenStats_Tilemap, 0, 0);
break;
case EVO_SCREEN:
- if (!HGSS_DECAPPED)
- DecompressAndLoadBgGfxUsingHeap(3, sPokedexPlusHGSS_Menu_2_Gfx, 0x2000, 0, 0);
- else
- DecompressAndLoadBgGfxUsingHeap(3, sPokedexPlusHGSS_Menu_2_Gfx, 0x2000, 0, 0);
- CopyToBgTilemapBuffer(3, sPokedexPlusHGSS_ScreenEvolution_Tilemap_PE, 0, 0);
+ DecompressAndLoadBgGfxUsingHeap(3, sPokedexPlusHGSS_Menu_2_Gfx, 0x2000, 0, 0);
+ CopyToBgTilemapBuffer(3, sPokedexPlusHGSS_ScreenEvolution_Tilemap_PE, 0, 0);
break;
case FORMS_SCREEN:
- if (!HGSS_DECAPPED)
- DecompressAndLoadBgGfxUsingHeap(3, sPokedexPlusHGSS_Menu_2_Gfx, 0x2000, 0, 0);
- else
- DecompressAndLoadBgGfxUsingHeap(3, sPokedexPlusHGSS_Menu_2_Gfx, 0x2000, 0, 0);
+ DecompressAndLoadBgGfxUsingHeap(3, sPokedexPlusHGSS_Menu_2_Gfx, 0x2000, 0, 0);
CopyToBgTilemapBuffer(3, sPokedexPlusHGSS_ScreenForms_Tilemap, 0, 0);
break;
case CRY_SCREEN:
- if (!HGSS_DECAPPED)
- DecompressAndLoadBgGfxUsingHeap(3, sPokedexPlusHGSS_Menu_3_Gfx, 0x2000, 0, 0);
- else
- DecompressAndLoadBgGfxUsingHeap(3, sPokedexPlusHGSS_Menu_3_Gfx, 0x2000, 0, 0);
+ DecompressAndLoadBgGfxUsingHeap(3, sPokedexPlusHGSS_Menu_3_Gfx, 0x2000, 0, 0);
CopyToBgTilemapBuffer(3, sPokedexPlusHGSS_ScreenCry_Tilemap, 0, 0);
break;
case SIZE_SCREEN:
- if (!HGSS_DECAPPED)
- DecompressAndLoadBgGfxUsingHeap(3, sPokedexPlusHGSS_Menu_3_Gfx, 0x2000, 0, 0);
- else
- DecompressAndLoadBgGfxUsingHeap(3, sPokedexPlusHGSS_Menu_3_Gfx, 0x2000, 0, 0);
+ DecompressAndLoadBgGfxUsingHeap(3, sPokedexPlusHGSS_Menu_3_Gfx, 0x2000, 0, 0);
CopyToBgTilemapBuffer(3, sPokedexPlusHGSS_ScreenSize_Tilemap, 0, 0);
break;
}
@@ -6449,7 +6431,7 @@ u32 GetSpeciesNameWidthInChars(const u8 *speciesName)
bool32 IsSpeciesAlcremie(u32 targetSpecies)
{
- return targetSpecies >= SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM && targetSpecies <= SPECIES_ALCREMIE_RIBBON_RAINBOW_SWIRL;
+ return GET_BASE_SPECIES_ID(targetSpecies) == SPECIES_ALCREMIE;
}
bool32 IsItemSweet(u32 item)
@@ -6513,7 +6495,7 @@ static void PrintEvolutionTargetSpeciesAndMethod(u8 taskId, u16 species, u8 dept
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;
@@ -6588,7 +6570,7 @@ static void PrintEvolutionTargetSpeciesAndMethod(u8 taskId, u16 species, u8 dept
{
StringAppend(gStringVar4, COMPOUND_STRING(", "));
}
-
+
switch((enum EvolutionConditions)evolutions[i].params[j].condition)
{
// Gen 2
@@ -6646,10 +6628,10 @@ static void PrintEvolutionTargetSpeciesAndMethod(u8 taskId, u16 species, u8 dept
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
+ 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
+ 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);
@@ -6759,10 +6741,10 @@ static void PrintEvolutionTargetSpeciesAndMethod(u8 taskId, u16 species, u8 dept
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
+ 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
+ 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);
@@ -6794,7 +6776,7 @@ static void PrintEvolutionTargetSpeciesAndMethod(u8 taskId, u16 species, u8 dept
}
if (isAlcremie)
- fontId = FONT_NARROWER;
+ fontId = FONT_SMALL_NARROWER;
else
fontId = GetFontIdToFit(gStringVar4, FONT_SMALL, 0, maxScreenWidth);
@@ -6802,7 +6784,7 @@ static void PrintEvolutionTargetSpeciesAndMethod(u8 taskId, u16 species, u8 dept
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)++;
diff --git a/src/pokemon.c b/src/pokemon.c
index 157c0efdf4..d5219b568a 100644
--- a/src/pokemon.c
+++ b/src/pokemon.c
@@ -1177,7 +1177,7 @@ void CreateBoxMon(struct BoxPokemon *boxMon, u16 species, u8 level, u8 fixedIV,
isShiny = GET_SHINY_VALUE(value, personality) < SHINY_ODDS;
}
}
-
+
if (hasFixedPersonality)
personality = fixedPersonality;
@@ -1626,7 +1626,7 @@ static void CreateEventMon(struct Pokemon *mon, u16 species, u8 level, u8 fixedI
}
// If FALSE, should load this game's Deoxys form. If TRUE, should load normal Deoxys form
-bool8 ShouldIgnoreDeoxysForm(u8 caseId, u8 battlerId)
+bool8 ShouldIgnoreDeoxysForm(u8 caseId, u8 battler)
{
switch (caseId)
{
@@ -1638,7 +1638,7 @@ bool8 ShouldIgnoreDeoxysForm(u8 caseId, u8 battlerId)
return FALSE;
if (!gMain.inBattle)
return FALSE;
- if (gLinkPlayers[GetMultiplayerId()].id == battlerId)
+ if (gLinkPlayers[GetMultiplayerId()].id == battler)
return FALSE;
break;
case 2:
@@ -1648,7 +1648,7 @@ bool8 ShouldIgnoreDeoxysForm(u8 caseId, u8 battlerId)
return FALSE;
if (!gMain.inBattle)
return FALSE;
- if (battlerId == 1 || battlerId == 4 || battlerId == 5)
+ if (battler == 1 || battler == 4 || battler == 5)
return TRUE;
return FALSE;
case 4:
@@ -1660,12 +1660,12 @@ bool8 ShouldIgnoreDeoxysForm(u8 caseId, u8 battlerId)
return FALSE;
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
{
- if (gLinkPlayers[GetMultiplayerId()].id == battlerId)
+ if (gLinkPlayers[GetMultiplayerId()].id == battler)
return FALSE;
}
else
{
- if (IsOnPlayerSide(battlerId))
+ if (IsOnPlayerSide(battler))
return FALSE;
}
}
@@ -1673,7 +1673,7 @@ bool8 ShouldIgnoreDeoxysForm(u8 caseId, u8 battlerId)
{
if (!gMain.inBattle)
return FALSE;
- if (IsOnPlayerSide(battlerId))
+ if (IsOnPlayerSide(battler))
return FALSE;
}
break;
@@ -3367,7 +3367,7 @@ u8 CopyMonToPC(struct Pokemon *mon)
{
for (boxPos = 0; boxPos < IN_BOX_COUNT; boxPos++)
{
- struct BoxPokemon* checkingMon = GetBoxedMonPtr(boxNo, boxPos);
+ struct BoxPokemon *checkingMon = GetBoxedMonPtr(boxNo, boxPos);
if (GetBoxMonData(checkingMon, MON_DATA_SPECIES, NULL) == SPECIES_NONE)
{
MonRestorePP(mon);
@@ -3730,14 +3730,14 @@ void PokemonToBattleMon(struct Pokemon *src, struct BattlePokemon *dst)
dst->status2 = 0;
}
-void CopyPartyMonToBattleData(u32 battlerId, u32 partyIndex)
+void CopyPartyMonToBattleData(u32 battler, u32 partyIndex)
{
- u32 side = GetBattlerSide(battlerId);
+ u32 side = GetBattlerSide(battler);
struct Pokemon *party = GetSideParty(side);
- PokemonToBattleMon(&party[partyIndex], &gBattleMons[battlerId]);
- gBattleStruct->hpOnSwitchout[side] = gBattleMons[battlerId].hp;
- UpdateSentPokesToOpponentValue(battlerId);
- ClearTemporarySpeciesSpriteData(battlerId, FALSE, FALSE);
+ PokemonToBattleMon(&party[partyIndex], &gBattleMons[battler]);
+ gBattleStruct->hpOnSwitchout[side] = gBattleMons[battler].hp;
+ UpdateSentPokesToOpponentValue(battler);
+ ClearTemporarySpeciesSpriteData(battler, FALSE, FALSE);
}
bool8 ExecuteTableBasedItemEffect(struct Pokemon *mon, u16 item, u8 partyIndex, u8 moveIndex)
@@ -3793,7 +3793,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
u32 temp1, temp2;
s8 friendshipChange = 0;
u8 holdEffect;
- u8 battlerId = MAX_BATTLERS_COUNT;
+ u8 battler = MAX_BATTLERS_COUNT;
u32 friendshipOnly = FALSE;
u16 heldItem;
u8 effectFlags;
@@ -3812,14 +3812,14 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
holdEffect = 0;
#endif //FREE_ENIGMA_BERRY
else
- holdEffect = ItemId_GetHoldEffect(heldItem);
+ holdEffect = GetItemHoldEffect(heldItem);
// Skip using the item if it won't do anything
- if (ItemId_GetEffect(item) == NULL && item != ITEM_ENIGMA_BERRY_E_READER)
+ if (GetItemEffect(item) == NULL && item != ITEM_ENIGMA_BERRY_E_READER)
return TRUE;
// Get item effect
- itemEffect = ItemId_GetEffect(item);
+ itemEffect = GetItemEffect(item);
// Do item effect
for (i = 0; i < ITEM_EFFECT_ARG_START; i++)
@@ -3846,7 +3846,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
if ((itemEffect[i] & ITEM3_LEVEL_UP)
&& GetMonData(mon, MON_DATA_LEVEL, NULL) != MAX_LEVEL)
{
- u8 param = ItemId_GetHoldEffectParam(item);
+ u8 param = GetItemHoldEffectParam(item);
dataUnsigned = 0;
if (param == 0) // Rare Candy
@@ -3879,15 +3879,15 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
}
// Cure status
- if ((itemEffect[i] & ITEM3_SLEEP) && HealStatusConditions(mon, STATUS1_SLEEP, battlerId) == 0)
+ if ((itemEffect[i] & ITEM3_SLEEP) && HealStatusConditions(mon, STATUS1_SLEEP, battler) == 0)
retVal = FALSE;
- if ((itemEffect[i] & ITEM3_POISON) && HealStatusConditions(mon, STATUS1_PSN_ANY | STATUS1_TOXIC_COUNTER, battlerId) == 0)
+ if ((itemEffect[i] & ITEM3_POISON) && HealStatusConditions(mon, STATUS1_PSN_ANY | STATUS1_TOXIC_COUNTER, battler) == 0)
retVal = FALSE;
- if ((itemEffect[i] & ITEM3_BURN) && HealStatusConditions(mon, STATUS1_BURN, battlerId) == 0)
+ if ((itemEffect[i] & ITEM3_BURN) && HealStatusConditions(mon, STATUS1_BURN, battler) == 0)
retVal = FALSE;
- if ((itemEffect[i] & ITEM3_FREEZE) && HealStatusConditions(mon, STATUS1_FREEZE | STATUS1_FROSTBITE, battlerId) == 0)
+ if ((itemEffect[i] & ITEM3_FREEZE) && HealStatusConditions(mon, STATUS1_FREEZE | STATUS1_FROSTBITE, battler) == 0)
retVal = FALSE;
- if ((itemEffect[i] & ITEM3_PARALYSIS) && HealStatusConditions(mon, STATUS1_PARALYSIS, battlerId) == 0)
+ if ((itemEffect[i] & ITEM3_PARALYSIS) && HealStatusConditions(mon, STATUS1_PARALYSIS, battler) == 0)
retVal = FALSE;
break;
@@ -3898,12 +3898,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;
@@ -3988,9 +3989,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;
@@ -4001,10 +4005,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;
@@ -4012,39 +4016,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 moveId;
+ u32 move, ppBonus;
dataUnsigned = GetMonData(mon, MON_DATA_PP1 + temp2, NULL);
- moveId = GetMonData(mon, MON_DATA_MOVE1 + temp2, NULL);
- if (dataUnsigned != CalculatePPWithBonus(moveId, GetMonData(mon, MON_DATA_PP_BONUSES, NULL), temp2))
+ move = GetMonData(mon, MON_DATA_MOVE1 + temp2, NULL);
+ ppBonus = CalculatePPWithBonus(move, GetMonData(mon, MON_DATA_PP_BONUSES, NULL), temp2);
+ if (dataUnsigned != ppBonus)
{
dataUnsigned += itemEffect[itemEffectParam];
- if (dataUnsigned > CalculatePPWithBonus(moveId, GetMonData(mon, MON_DATA_PP_BONUSES, NULL), temp2))
- dataUnsigned = CalculatePPWithBonus(moveId, GetMonData(mon, MON_DATA_PP_BONUSES, NULL), temp2);
+ if (dataUnsigned > ppBonus)
+ dataUnsigned = ppBonus;
SetMonData(mon, MON_DATA_PP1 + temp2, &dataUnsigned);
retVal = FALSE;
}
@@ -4054,14 +4059,15 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
else
{
// Heal PP for one move
- u16 moveId;
+ u16 move;
dataUnsigned = GetMonData(mon, MON_DATA_PP1 + moveIndex, NULL);
- moveId = GetMonData(mon, MON_DATA_MOVE1 + moveIndex, NULL);
- if (dataUnsigned != CalculatePPWithBonus(moveId, GetMonData(mon, MON_DATA_PP_BONUSES, NULL), moveIndex))
+ move = GetMonData(mon, MON_DATA_MOVE1 + moveIndex, NULL);
+ u32 ppBonus = CalculatePPWithBonus(move, GetMonData(mon, MON_DATA_PP_BONUSES, NULL), moveIndex);
+ if (dataUnsigned != ppBonus)
{
dataUnsigned += itemEffect[itemEffectParam++];
- if (dataUnsigned > CalculatePPWithBonus(moveId, GetMonData(mon, MON_DATA_PP_BONUSES, NULL), moveIndex))
- dataUnsigned = CalculatePPWithBonus(moveId, GetMonData(mon, MON_DATA_PP_BONUSES, NULL), moveIndex);
+ if (dataUnsigned > ppBonus)
+ dataUnsigned = ppBonus;
SetMonData(mon, MON_DATA_PP1 + moveIndex, &dataUnsigned);
retVal = FALSE;
}
@@ -4171,13 +4177,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)
@@ -4188,7 +4196,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.
@@ -4221,7 +4229,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
return retVal;
}
-bool8 HealStatusConditions(struct Pokemon *mon, u32 healMask, u8 battlerId)
+bool8 HealStatusConditions(struct Pokemon *mon, u32 healMask, u8 battler)
{
u32 status = GetMonData(mon, MON_DATA_STATUS, 0);
@@ -4229,13 +4237,13 @@ bool8 HealStatusConditions(struct Pokemon *mon, u32 healMask, u8 battlerId)
{
status &= ~healMask;
SetMonData(mon, MON_DATA_STATUS, &status);
- if (gMain.inBattle && battlerId != MAX_BATTLERS_COUNT)
+ if (gMain.inBattle && battler != MAX_BATTLERS_COUNT)
{
- gBattleMons[battlerId].status1 &= ~healMask;
+ gBattleMons[battler].status1 &= ~healMask;
if((healMask & STATUS1_SLEEP))
{
u32 i = 0;
- u32 battlerSide = GetBattlerSide(battlerId);
+ u32 battlerSide = GetBattlerSide(battler);
struct Pokemon *party = GetSideParty(battlerSide);
for (i = 0; i < PARTY_SIZE; i++)
@@ -4267,7 +4275,7 @@ u8 GetItemEffectParamOffset(u32 battler, u16 itemId, u8 effectByte, u8 effectBit
offset = ITEM_EFFECT_ARG_START;
- temp = ItemId_GetEffect(itemId);
+ temp = GetItemEffect(itemId);
if (temp != NULL && !temp && itemId != ITEM_ENIGMA_BERRY_E_READER)
return 0;
@@ -4403,7 +4411,7 @@ u8 *UseStatIncreaseItem(u16 itemId)
}
else
{
- itemEffect = ItemId_GetEffect(itemId);
+ itemEffect = GetItemEffect(itemId);
}
gPotentialItemEffectBattler = gBattlerInMenuId;
@@ -4498,7 +4506,7 @@ bool32 DoesMonMeetAdditionalConditions(struct Pokemon *mon, const struct Evoluti
partnerHoldEffect = 0;
#endif //FREE_ENIGMA_BERRY
else
- partnerHoldEffect = ItemId_GetHoldEffect(partnerHeldItem);
+ partnerHoldEffect = GetItemHoldEffect(partnerHeldItem);
}
else
{
@@ -4539,7 +4547,7 @@ bool32 DoesMonMeetAdditionalConditions(struct Pokemon *mon, const struct Evoluti
case IF_TIME:
if (GetTimeOfDay() == params[i].arg1)
currentCondition = TRUE;
-
+
break;
case IF_NOT_TIME:
if (GetTimeOfDay() != params[i].arg1)
@@ -4579,8 +4587,8 @@ bool32 DoesMonMeetAdditionalConditions(struct Pokemon *mon, const struct Evoluti
currentCondition = TRUE;
break;
}
- case IF_MIN_SMARTNESS:
- // remember that even though it's called "Smart/Smartness" here,
+ 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);
@@ -4658,7 +4666,6 @@ bool32 DoesMonMeetAdditionalConditions(struct Pokemon *mon, const struct Evoluti
{
currentCondition = TRUE;
}
-
break;
case IF_KNOWS_MOVE_TYPE:
for (j = 0; j < MAX_MON_MOVES; j++)
@@ -4732,6 +4739,7 @@ bool32 DoesMonMeetAdditionalConditions(struct Pokemon *mon, const struct Evoluti
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)
@@ -4807,7 +4815,7 @@ u32 GetEvolutionTargetSpecies(struct Pokemon *mon, enum EvolutionMode mode, u16
holdEffect = 0;
#endif //FREE_ENIGMA_BERRY
else
- holdEffect = ItemId_GetHoldEffect(heldItem);
+ holdEffect = GetItemHoldEffect(heldItem);
// Prevent evolution with Everstone, unless we're just viewing the party menu with an evolution item
if (holdEffect == HOLD_EFFECT_PREVENT_EVOLVE
@@ -4939,7 +4947,7 @@ u32 GetEvolutionTargetSpecies(struct Pokemon *mon, enum EvolutionMode mode, u16
case EVO_SPIN:
if (gSpecialVar_0x8000 == evolutions[i].param)
conditionsMet = TRUE;
-
+
break;
}
@@ -5260,7 +5268,7 @@ void AdjustFriendship(struct Pokemon *mon, u8 event)
}
else
{
- holdEffect = ItemId_GetHoldEffect(heldItem);
+ holdEffect = GetItemHoldEffect(heldItem);
}
if (species && species != SPECIES_EGG)
@@ -5340,11 +5348,11 @@ void MonGainEVs(struct Pokemon *mon, u16 defeatedSpecies)
}
else
{
- holdEffect = ItemId_GetHoldEffect(heldItem);
+ holdEffect = GetItemHoldEffect(heldItem);
}
- stat = ItemId_GetSecondaryId(heldItem);
- bonus = ItemId_GetHoldEffectParam(heldItem);
+ stat = GetItemSecondaryId(heldItem);
+ bonus = GetItemHoldEffectParam(heldItem);
for (i = 0; i < NUM_STATS; i++)
{
@@ -6301,22 +6309,22 @@ void BattleAnimateBackSprite(struct Sprite *sprite, u16 species)
static u8 UNUSED GetOwnOpposingLinkMultiBattlerId(bool8 rightSide)
{
s32 i;
- s32 battlerId = 0;
+ s32 battler = 0;
u8 multiplayerId = GetMultiplayerId();
switch (gLinkPlayers[multiplayerId].id)
{
case 0:
case 2:
- battlerId = rightSide ? 1 : 3;
+ battler = rightSide ? 1 : 3;
break;
case 1:
case 3:
- battlerId = rightSide ? 2 : 0;
+ battler = rightSide ? 2 : 0;
break;
}
for (i = 0; i < MAX_LINK_PLAYERS; i++)
{
- if (gLinkPlayers[i].id == (s16)battlerId)
+ if (gLinkPlayers[i].id == (s16)battler)
break;
}
return i;
@@ -6325,21 +6333,21 @@ static u8 UNUSED GetOwnOpposingLinkMultiBattlerId(bool8 rightSide)
u8 GetOpposingLinkMultiBattlerId(bool8 rightSide, u8 multiplayerId)
{
s32 i;
- s32 battlerId = 0;
+ s32 battler = 0;
switch (gLinkPlayers[multiplayerId].id)
{
case 0:
case 2:
- battlerId = rightSide ? 1 : 3;
+ battler = rightSide ? 1 : 3;
break;
case 1:
case 3:
- battlerId = rightSide ? 2 : 0;
+ battler = rightSide ? 2 : 0;
break;
}
for (i = 0; i < MAX_LINK_PLAYERS; i++)
{
- if (gLinkPlayers[i].id == (s16)battlerId)
+ if (gLinkPlayers[i].id == (s16)battler)
break;
}
return i;
@@ -6373,9 +6381,9 @@ void HandleSetPokedexFlag(u16 nationalNum, u8 caseId, u32 personality)
bool8 HasTwoFramesAnimation(u16 species)
{
- return P_TWO_FRAME_FRONT_SPRITES
- && gSpeciesInfo[species].frontAnimFrames != sAnims_SingleFramePlaceHolder
- && species != SPECIES_UNOWN
+ return P_TWO_FRAME_FRONT_SPRITES
+ && gSpeciesInfo[species].frontAnimFrames != sAnims_SingleFramePlaceHolder
+ && species != SPECIES_UNOWN
&& !gTestRunnerHeadless;
}
@@ -6405,7 +6413,7 @@ static bool8 ShouldSkipFriendshipChange(void)
#define ALLOC_FAIL_STRUCT (1 << 1)
#define GFX_MANAGER_ACTIVE 0xA3 // Arbitrary value
-static void InitMonSpritesGfx_Battle(struct MonSpritesGfxManager* gfx)
+static void InitMonSpritesGfx_Battle(struct MonSpritesGfxManager *gfx)
{
u16 i, j;
for (i = 0; i < gfx->numSprites; i++)
@@ -6418,7 +6426,7 @@ static void InitMonSpritesGfx_Battle(struct MonSpritesGfxManager* gfx)
}
}
-static void InitMonSpritesGfx_FullParty(struct MonSpritesGfxManager* gfx)
+static void InitMonSpritesGfx_FullParty(struct MonSpritesGfxManager *gfx)
{
u16 i, j;
for (i = 0; i < gfx->numSprites; i++)
@@ -6815,7 +6823,7 @@ void TrySpecialOverworldEvo(void)
EvolutionScene(&gPlayerParty[i], targetSpecies, canStopEvo, i);
else
BeginEvolutionScene(&gPlayerParty[i], targetSpecies, canStopEvo, i);
-
+
if (tryMultiple)
gCB2_AfterEvolution = TrySpecialOverworldEvo;
else
@@ -7075,9 +7083,9 @@ void UpdateDaysPassedSinceFormChange(u16 days)
}
}
-u32 CheckDynamicMoveType(struct Pokemon *mon, u32 move, u32 battler)
+u32 CheckDynamicMoveType(struct Pokemon *mon, u32 move, u32 battler, enum MonState state)
{
- u32 moveType = GetDynamicMoveType(mon, move, battler, NULL);
+ u32 moveType = GetDynamicMoveType(mon, move, battler, state);
if (moveType != TYPE_NONE)
return moveType;
return GetMoveType(move);
diff --git a/src/pokemon_animation.c b/src/pokemon_animation.c
index a2d73af147..41bc400105 100644
--- a/src/pokemon_animation.c
+++ b/src/pokemon_animation.c
@@ -239,7 +239,7 @@ static const u8 sVerticalShakeData[][2] =
{-1, 0}
};
-static void (* const sMonAnimFunctions[])(struct Sprite *sprite) =
+static void (*const sMonAnimFunctions[])(struct Sprite *sprite) =
{
[ANIM_V_SQUISH_AND_BOUNCE] = Anim_VerticalSquishBounce,
[ANIM_CIRCULAR_STRETCH_TWICE] = Anim_CircularStretchTwice,
@@ -544,14 +544,14 @@ void StartMonSummaryAnimation(struct Sprite *sprite, u8 frontAnimId)
void LaunchAnimationTaskForBackSprite(struct Sprite *sprite, u8 backAnimSet)
{
- u8 nature, taskId, animId, battlerId;
+ u8 nature, taskId, animId, battler;
taskId = CreateTask(Task_HandleMonAnimation, 128);
gTasks[taskId].tPtrHi = (u32)(sprite) >> 16;
gTasks[taskId].tPtrLo = (u32)(sprite);
- battlerId = sprite->data[0];
- nature = GetNature(GetBattlerMon(battlerId));
+ battler = sprite->data[0];
+ 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 a8142e0fd8..e186e07b96 100755
--- a/src/pokemon_jump.c
+++ b/src/pokemon_jump.c
@@ -672,7 +672,7 @@ static void RecvLinkData_Leader(void)
sPokemonJump->allPlayersReady = TRUE;
}
-static bool32 (* const sPokeJumpLeaderFuncs[])(void) =
+static bool32 (*const sPokeJumpLeaderFuncs[])(void) =
{
[FUNC_GAME_INTRO] = GameIntro_Leader,
[FUNC_WAIT_ROUND] = WaitRound_Leader,
@@ -771,7 +771,7 @@ static void RecvLinkData_Member(void)
}
}
-static bool32 (* const sPokeJumpMemberFuncs[])(void) =
+static bool32 (*const sPokeJumpMemberFuncs[])(void) =
{
[FUNC_GAME_INTRO] = GameIntro_Member,
[FUNC_WAIT_ROUND] = WaitRound_Member,
diff --git a/src/pokemon_storage_system.c b/src/pokemon_storage_system.c
index b782e3ff9e..8c54c43f0c 100644
--- a/src/pokemon_storage_system.c
+++ b/src/pokemon_storage_system.c
@@ -6537,10 +6537,10 @@ struct
{
{MAP_GROUPS_COUNT, 0, MOVE_SURF},
{MAP_GROUPS_COUNT, 0, MOVE_DIVE},
- {MAP_GROUP(EVER_GRANDE_CITY_POKEMON_LEAGUE_1F), MAP_NUM(EVER_GRANDE_CITY_POKEMON_LEAGUE_1F), MOVE_STRENGTH},
- {MAP_GROUP(EVER_GRANDE_CITY_POKEMON_LEAGUE_1F), MAP_NUM(EVER_GRANDE_CITY_POKEMON_LEAGUE_1F), MOVE_ROCK_SMASH},
- {MAP_GROUP(EVER_GRANDE_CITY_POKEMON_LEAGUE_2F), MAP_NUM(EVER_GRANDE_CITY_POKEMON_LEAGUE_2F), MOVE_STRENGTH},
- {MAP_GROUP(EVER_GRANDE_CITY_POKEMON_LEAGUE_2F), MAP_NUM(EVER_GRANDE_CITY_POKEMON_LEAGUE_2F), MOVE_ROCK_SMASH},
+ {MAP_GROUP(MAP_EVER_GRANDE_CITY_POKEMON_LEAGUE_1F), MAP_NUM(MAP_EVER_GRANDE_CITY_POKEMON_LEAGUE_1F), MOVE_STRENGTH},
+ {MAP_GROUP(MAP_EVER_GRANDE_CITY_POKEMON_LEAGUE_1F), MAP_NUM(MAP_EVER_GRANDE_CITY_POKEMON_LEAGUE_1F), MOVE_ROCK_SMASH},
+ {MAP_GROUP(MAP_EVER_GRANDE_CITY_POKEMON_LEAGUE_2F), MAP_NUM(MAP_EVER_GRANDE_CITY_POKEMON_LEAGUE_2F), MOVE_STRENGTH},
+ {MAP_GROUP(MAP_EVER_GRANDE_CITY_POKEMON_LEAGUE_2F), MAP_NUM(MAP_EVER_GRANDE_CITY_POKEMON_LEAGUE_2F), MOVE_ROCK_SMASH},
};
static void GetRestrictedReleaseMoves(u16 *moves)
@@ -7047,7 +7047,7 @@ static void SetDisplayMonData(void *pokemon, u8 mode)
txtPtr[1] = EOS;
if (sStorage->displayMonItemId != ITEM_NONE)
- StringCopyPadded(sStorage->displayMonItemName, ItemId_GetName(sStorage->displayMonItemId), CHAR_SPACE, 8);
+ StringCopyPadded(sStorage->displayMonItemName, GetItemName(sStorage->displayMonItemId), CHAR_SPACE, 8);
else
StringFill(sStorage->displayMonItemName, CHAR_SPACE, 8);
}
@@ -9073,7 +9073,7 @@ static bool8 IsMovingItem(void)
static const u8 *GetMovingItemName(void)
{
- return ItemId_GetName(sStorage->movingItemId);
+ return GetItemName(sStorage->movingItemId);
}
static u16 GetMovingItemId(void)
@@ -9257,9 +9257,9 @@ static void PrintItemDescription(void)
const u8 *description;
if (IsMovingItem())
- description = ItemId_GetDescription(sStorage->movingItemId);
+ description = GetItemDescription(sStorage->movingItemId);
else
- description = ItemId_GetDescription(sStorage->displayMonItemId);
+ description = GetItemDescription(sStorage->displayMonItemId);
FillWindowPixelBuffer(WIN_ITEM_DESC, PIXEL_FILL(1));
AddTextPrinterParameterized5(WIN_ITEM_DESC, FONT_NORMAL, description, 4, 0, 0, NULL, 0, 1);
@@ -9709,9 +9709,9 @@ u32 CountAllStorageMons(void)
return count;
}
-bool32 AnyStorageMonWithMove(u16 moveId)
+bool32 AnyStorageMonWithMove(u16 move)
{
- u16 moves[] = {moveId, MOVES_COUNT};
+ u16 moves[] = {move, MOVES_COUNT};
s32 i, j;
for (i = 0; i < TOTAL_BOXES_COUNT; i++)
diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c
index a8fc2c559f..d4ea8e5d4e 100644
--- a/src/pokemon_summary_screen.c
+++ b/src/pokemon_summary_screen.c
@@ -2476,7 +2476,7 @@ static void ExitMovePositionSwitchMode(u8 taskId, bool8 swapMoves)
static void SwapMonMoves(struct Pokemon *mon, u8 moveIndex1, u8 moveIndex2)
{
- struct PokeSummary* summary = &sMonSummaryScreen->summary;
+ struct PokeSummary *summary = &sMonSummaryScreen->summary;
u16 move1 = summary->moves[moveIndex1];
u16 move2 = summary->moves[moveIndex2];
@@ -2511,7 +2511,7 @@ static void SwapMonMoves(struct Pokemon *mon, u8 moveIndex1, u8 moveIndex2)
static void SwapBoxMonMoves(struct BoxPokemon *mon, u8 moveIndex1, u8 moveIndex2)
{
- struct PokeSummary* summary = &sMonSummaryScreen->summary;
+ struct PokeSummary *summary = &sMonSummaryScreen->summary;
u16 move1 = summary->moves[moveIndex1];
u16 move2 = summary->moves[moveIndex2];
@@ -3721,7 +3721,7 @@ static void PrintHeldItemName(void)
&& IsMultiBattle() == TRUE
&& (sMonSummaryScreen->curMonIndex == 1 || sMonSummaryScreen->curMonIndex == 4 || sMonSummaryScreen->curMonIndex == 5))
{
- text = ItemId_GetName(ITEM_ENIGMA_BERRY_E_READER);
+ text = GetItemName(ITEM_ENIGMA_BERRY_E_READER);
}
else if (sMonSummaryScreen->summary.item == ITEM_NONE)
{
@@ -4306,7 +4306,11 @@ static void SetMoveTypeIcons(void)
{
type = GetMoveType(summary->moves[i]);
if (P_SHOW_DYNAMIC_TYPES)
- type = CheckDynamicMoveType(mon, summary->moves[i], 0);
+ {
+ enum MonState state = gMain.inBattle ? MON_IN_BATTLE : MON_OUTSIDE_BATTLE;
+ type = CheckDynamicMoveType(mon, summary->moves[i], 0, state); // Bug: in battle, this only shows the dynamic type of battler in position 0
+ }
+
SetTypeSpritePosAndPal(type, 85, 32 + (i * 16), i + SPRITE_ARR_ID_TYPE);
}
else
@@ -4335,7 +4339,10 @@ static void SetNewMoveTypeIcon(void)
struct Pokemon *mon = &sMonSummaryScreen->currentMon;
if (P_SHOW_DYNAMIC_TYPES)
- type = CheckDynamicMoveType(mon, sMonSummaryScreen->newMove, 0);
+ {
+ enum MonState state = gMain.inBattle ? MON_IN_BATTLE : MON_OUTSIDE_BATTLE;
+ type = CheckDynamicMoveType(mon, sMonSummaryScreen->newMove, 0, state); // Bug: in battle, this only shows the dynamic type of battler in position 0
+ }
if (sMonSummaryScreen->newMove == MOVE_NONE)
{
diff --git a/src/pokenav_conditions_search_results.c b/src/pokenav_conditions_search_results.c
index 09ad43706b..e7b317d7ea 100644
--- a/src/pokenav_conditions_search_results.c
+++ b/src/pokenav_conditions_search_results.c
@@ -240,27 +240,27 @@ static u32 GetReturningFromGraph(void)
static struct PokenavMonListItem * GetSearchResultsMonDataList(void)
{
- struct Pokenav_SearchResults * menu = GetSubstructPtr(POKENAV_SUBSTRUCT_CONDITION_SEARCH_RESULTS);
+ struct Pokenav_SearchResults *menu = GetSubstructPtr(POKENAV_SUBSTRUCT_CONDITION_SEARCH_RESULTS);
return menu->monList->monData;
}
static u16 GetSearchResultsMonListCount(void)
{
- struct Pokenav_SearchResults * menu = GetSubstructPtr(POKENAV_SUBSTRUCT_CONDITION_SEARCH_RESULTS);
+ struct Pokenav_SearchResults *menu = GetSubstructPtr(POKENAV_SUBSTRUCT_CONDITION_SEARCH_RESULTS);
return menu->monList->listCount;
}
// data below has been set by ConvertConditionsToListRanks
static s32 GetSearchResultsSelectedMonRank(void)
{
- struct Pokenav_SearchResults * menu = GetSubstructPtr(POKENAV_SUBSTRUCT_CONDITION_SEARCH_RESULTS);
+ struct Pokenav_SearchResults *menu = GetSubstructPtr(POKENAV_SUBSTRUCT_CONDITION_SEARCH_RESULTS);
s32 i = PokenavList_GetSelectedIndex();
return menu->monList->monData[i].data;
}
static u16 GetSearchResultsCurrentListIndex(void)
{
- struct Pokenav_SearchResults * menu = GetSubstructPtr(POKENAV_SUBSTRUCT_CONDITION_SEARCH_RESULTS);
+ struct Pokenav_SearchResults *menu = GetSubstructPtr(POKENAV_SUBSTRUCT_CONDITION_SEARCH_RESULTS);
return menu->monList->currIndex;
}
@@ -273,7 +273,7 @@ static u32 BuildPartyMonSearchResults(s32 state)
{
s32 i;
struct PokenavMonListItem item;
- struct Pokenav_SearchResults * menu = GetSubstructPtr(POKENAV_SUBSTRUCT_CONDITION_SEARCH_RESULTS);
+ struct Pokenav_SearchResults *menu = GetSubstructPtr(POKENAV_SUBSTRUCT_CONDITION_SEARCH_RESULTS);
menu->monList->listCount = 0;
menu->monList->currIndex = 0;
@@ -296,7 +296,7 @@ static u32 BuildPartyMonSearchResults(s32 state)
static u32 InitBoxMonSearchResults(s32 state)
{
- struct Pokenav_SearchResults * menu = GetSubstructPtr(POKENAV_SUBSTRUCT_CONDITION_SEARCH_RESULTS);
+ struct Pokenav_SearchResults *menu = GetSubstructPtr(POKENAV_SUBSTRUCT_CONDITION_SEARCH_RESULTS);
menu->monId = 0;
menu->boxId = 0;
return LT_INC_AND_CONTINUE;
@@ -304,7 +304,7 @@ static u32 InitBoxMonSearchResults(s32 state)
static u32 BuildBoxMonSearchResults(s32 state)
{
- struct Pokenav_SearchResults * menu = GetSubstructPtr(POKENAV_SUBSTRUCT_CONDITION_SEARCH_RESULTS);
+ struct Pokenav_SearchResults *menu = GetSubstructPtr(POKENAV_SUBSTRUCT_CONDITION_SEARCH_RESULTS);
s32 boxId = menu->boxId;
s32 monId = menu->monId;
s32 boxCount = 0;
@@ -342,7 +342,7 @@ static u32 BuildBoxMonSearchResults(s32 state)
// The condition value in data is then overwritten with their ranking.
static u32 ConvertConditionsToListRanks(s32 state)
{
- struct Pokenav_SearchResults * menu = GetSubstructPtr(POKENAV_SUBSTRUCT_CONDITION_SEARCH_RESULTS);
+ struct Pokenav_SearchResults *menu = GetSubstructPtr(POKENAV_SUBSTRUCT_CONDITION_SEARCH_RESULTS);
s32 listCount = menu->monList->listCount;
s32 prevCondition = menu->monList->monData[0].data;
s32 i;
@@ -700,7 +700,7 @@ static void CreateSearchResultsList(void)
CreatePokenavList(&sConditionSearchResultBgTemplates[1], &template, 0);
}
-static void BufferSearchMonListItem(struct PokenavMonListItem * item, u8 *dest)
+static void BufferSearchMonListItem(struct PokenavMonListItem *item, u8 *dest)
{
u8 gender;
u8 level;
@@ -719,7 +719,7 @@ static void BufferSearchMonListItem(struct PokenavMonListItem * item, u8 *dest)
// Mon is in PC
else
{
- struct BoxPokemon * mon = GetBoxedMonPtr(item->boxId, item->monId);
+ struct BoxPokemon *mon = GetBoxedMonPtr(item->boxId, item->monId);
gender = GetBoxMonGender(mon);
level = GetLevelFromBoxMonExp(mon);
GetBoxMonData(mon, MON_DATA_NICKNAME, gStringVar3);
diff --git a/src/pokenav_list.c b/src/pokenav_list.c
index dbcf137331..c39c7b1b4c 100644
--- a/src/pokenav_list.c
+++ b/src/pokenav_list.c
@@ -34,7 +34,7 @@ struct PokenavListWindowState {
u16 selectedIndexOffset;
u16 entriesOnscreen;
u32 listItemSize;
- void * listPtr;
+ void *listPtr;
};
struct PokenavListSub
@@ -43,7 +43,7 @@ struct PokenavListSub
u32 printStart;
u32 printIndex;
u32 itemSize;
- void * listPtr;
+ void *listPtr;
s32 startBgY;
s32 endBgY;
u32 loopedTaskId;
@@ -196,7 +196,7 @@ static void InitListItems(struct PokenavListWindowState *windowState, struct Pok
PrintListItems(windowState->listPtr, windowState->windowTopIndex, numToPrint, windowState->listItemSize, 0, subPtr);
}
-static void PrintListItems(void * listPtr, u32 topIndex, u32 numItems, u32 itemSize, u32 printStart, struct PokenavListSub *list)
+static void PrintListItems(void *listPtr, u32 topIndex, u32 numItems, u32 itemSize, u32 printStart, struct PokenavListSub *list)
{
if (numItems == 0)
return;
diff --git a/src/pokenav_menu_handler_gfx.c b/src/pokenav_menu_handler_gfx.c
index 42588aeed0..6004f52ebb 100644
--- a/src/pokenav_menu_handler_gfx.c
+++ b/src/pokenav_menu_handler_gfx.c
@@ -45,8 +45,8 @@ struct Pokenav_MenuGfx
u8 numIconsBlending;
bool8 pokenavAlreadyOpen;
bool32 iconVisible[MAX_POKENAV_MENUITEMS];
- struct Sprite * blueLightSprite;
- struct Sprite * iconSprites[MAX_POKENAV_MENUITEMS][NUM_OPTION_SUBSPRITES];
+ struct Sprite *blueLightSprite;
+ struct Sprite *iconSprites[MAX_POKENAV_MENUITEMS][NUM_OPTION_SUBSPRITES];
u8 bg1TilemapBuffer[BG_SCREEN_SIZE];
};
@@ -384,7 +384,7 @@ static bool32 AreAnyTrainerRematchesNearby(void)
bool32 OpenPokenavMenuInitial(void)
{
- struct Pokenav_MenuGfx * gfx = OpenPokenavMenu();
+ struct Pokenav_MenuGfx *gfx = OpenPokenavMenu();
if (gfx == NULL)
return FALSE;
@@ -395,7 +395,7 @@ bool32 OpenPokenavMenuInitial(void)
bool32 OpenPokenavMenuNotInitial(void)
{
- struct Pokenav_MenuGfx * gfx = OpenPokenavMenu();
+ struct Pokenav_MenuGfx *gfx = OpenPokenavMenu();
if (gfx == NULL)
return FALSE;
@@ -406,7 +406,7 @@ bool32 OpenPokenavMenuNotInitial(void)
static struct Pokenav_MenuGfx * OpenPokenavMenu(void)
{
- struct Pokenav_MenuGfx * gfx = AllocSubstruct(POKENAV_SUBSTRUCT_MENU_GFX, sizeof(struct Pokenav_MenuGfx));
+ struct Pokenav_MenuGfx *gfx = AllocSubstruct(POKENAV_SUBSTRUCT_MENU_GFX, sizeof(struct Pokenav_MenuGfx));
if (gfx != NULL)
{
@@ -420,20 +420,20 @@ static struct Pokenav_MenuGfx * OpenPokenavMenu(void)
void CreateMenuHandlerLoopedTask(s32 ltIdx)
{
- struct Pokenav_MenuGfx * gfx = GetSubstructPtr(POKENAV_SUBSTRUCT_MENU_GFX);
+ struct Pokenav_MenuGfx *gfx = GetSubstructPtr(POKENAV_SUBSTRUCT_MENU_GFX);
gfx->loopedTaskId = CreateLoopedTask(sMenuHandlerLoopTaskFuncs[ltIdx], 1);
gfx->isTaskActiveCB = GetCurrentLoopedTaskActive;
}
bool32 IsMenuHandlerLoopedTaskActive(void)
{
- struct Pokenav_MenuGfx * gfx = GetSubstructPtr(POKENAV_SUBSTRUCT_MENU_GFX);
+ struct Pokenav_MenuGfx *gfx = GetSubstructPtr(POKENAV_SUBSTRUCT_MENU_GFX);
return gfx->isTaskActiveCB();
}
void FreeMenuHandlerSubstruct2(void)
{
- struct Pokenav_MenuGfx * gfx = GetSubstructPtr(POKENAV_SUBSTRUCT_MENU_GFX);
+ struct Pokenav_MenuGfx *gfx = GetSubstructPtr(POKENAV_SUBSTRUCT_MENU_GFX);
DestroyMovingDotsBgTask();
RemoveWindow(gfx->optionDescWindowId);
@@ -444,14 +444,14 @@ void FreeMenuHandlerSubstruct2(void)
static bool32 GetCurrentLoopedTaskActive(void)
{
- struct Pokenav_MenuGfx * gfx = GetSubstructPtr(POKENAV_SUBSTRUCT_MENU_GFX);
+ struct Pokenav_MenuGfx *gfx = GetSubstructPtr(POKENAV_SUBSTRUCT_MENU_GFX);
return IsLoopedTaskActive(gfx->loopedTaskId);
}
static u32 LoopedTask_OpenMenu(s32 state)
{
- struct Pokenav_MenuGfx * gfx = GetSubstructPtr(POKENAV_SUBSTRUCT_MENU_GFX);
+ struct Pokenav_MenuGfx *gfx = GetSubstructPtr(POKENAV_SUBSTRUCT_MENU_GFX);
switch (state)
{
@@ -821,7 +821,7 @@ static void FreeAndDestroyMainMenuSprites(void)
static void CreateMenuOptionSprites(void)
{
s32 i, j;
- struct Pokenav_MenuGfx * gfx = GetSubstructPtr(POKENAV_SUBSTRUCT_MENU_GFX);
+ struct Pokenav_MenuGfx *gfx = GetSubstructPtr(POKENAV_SUBSTRUCT_MENU_GFX);
for (i = 0; i < MAX_POKENAV_MENUITEMS; i++)
{
@@ -837,7 +837,7 @@ static void CreateMenuOptionSprites(void)
static void DestroyMenuOptionSprites(void)
{
s32 i, j;
- struct Pokenav_MenuGfx * gfx = GetSubstructPtr(POKENAV_SUBSTRUCT_MENU_GFX);
+ struct Pokenav_MenuGfx *gfx = GetSubstructPtr(POKENAV_SUBSTRUCT_MENU_GFX);
for (i = 0; i < MAX_POKENAV_MENUITEMS; i++)
{
@@ -858,7 +858,7 @@ static void DrawCurrentMenuOptionLabels(void)
static void DrawOptionLabelGfx(const u16 *const *optionGfx, s32 yPos, s32 deltaY)
{
s32 i, j;
- struct Pokenav_MenuGfx * gfx = GetSubstructPtr(POKENAV_SUBSTRUCT_MENU_GFX);
+ struct Pokenav_MenuGfx *gfx = GetSubstructPtr(POKENAV_SUBSTRUCT_MENU_GFX);
s32 baseTile = GetSpriteTileStartByTag(GFXTAG_OPTIONS);
for (i = 0; i < MAX_POKENAV_MENUITEMS; i++)
@@ -991,7 +991,7 @@ static bool32 AreMenuOptionSpritesMoving(void)
#define sSlideSpeed data[2]
#define sSlideEndX data[7]
-static void StartOptionSlide(struct Sprite ** sprites, s32 startX, s32 endX, s32 time)
+static void StartOptionSlide(struct Sprite **sprites, s32 startX, s32 endX, s32 time)
{
s32 i;
@@ -1020,10 +1020,10 @@ static void StartOptionSlide(struct Sprite ** sprites, s32 startX, s32 endX, s32
// When an option is selected it zooms in and blends away as part
// of the transition to the next screen.
-static void StartOptionZoom(struct Sprite ** sprites)
+static void StartOptionZoom(struct Sprite **sprites)
{
s32 i;
- struct Pokenav_MenuGfx * gfx = GetSubstructPtr(POKENAV_SUBSTRUCT_MENU_GFX);
+ struct Pokenav_MenuGfx *gfx = GetSubstructPtr(POKENAV_SUBSTRUCT_MENU_GFX);
u8 taskId;
for (i = 0; i < NUM_OPTION_SUBSPRITES; i++)
@@ -1045,7 +1045,7 @@ static void StartOptionZoom(struct Sprite ** sprites)
gfx->numIconsBlending++;
}
-static void SetOptionInvisibility(struct Sprite ** sprites, bool32 invisible)
+static void SetOptionInvisibility(struct Sprite **sprites, bool32 invisible)
{
s32 i;
@@ -1056,7 +1056,7 @@ static void SetOptionInvisibility(struct Sprite ** sprites, bool32 invisible)
}
}
-static void SpriteCB_OptionSlide(struct Sprite * sprite)
+static void SpriteCB_OptionSlide(struct Sprite *sprite)
{
sprite->sSlideTime--;
if (sprite->sSlideTime != -1)
@@ -1076,7 +1076,7 @@ static void SpriteCB_OptionSlide(struct Sprite * sprite)
#undef sSlideSpeed
#undef sSlideEndX
-static void SpriteCB_OptionZoom(struct Sprite * sprite)
+static void SpriteCB_OptionZoom(struct Sprite *sprite)
{
s32 temp;
s32 x;
@@ -1137,7 +1137,7 @@ static void SpriteCB_OptionZoom(struct Sprite * sprite)
static void Task_OptionBlend(u8 taskId)
{
- s16 * data = gTasks[taskId].data;
+ s16 *data = gTasks[taskId].data;
if (tBlendDelay == 0)
{
@@ -1189,7 +1189,7 @@ static void Task_OptionBlend(u8 taskId)
// Blue light that blinks if there are available rematches nearby
static void CreateMatchCallBlueLightSprite(void)
{
- struct Pokenav_MenuGfx * gfx = GetSubstructPtr(POKENAV_SUBSTRUCT_MENU_GFX);
+ struct Pokenav_MenuGfx *gfx = GetSubstructPtr(POKENAV_SUBSTRUCT_MENU_GFX);
u8 spriteId = CreateSprite(&sMatchCallBlueLightSpriteTemplate, 0x10, 0x60, 4);
gfx->blueLightSprite = &gSprites[spriteId];
if (AreAnyTrainerRematchesNearby())
@@ -1204,7 +1204,7 @@ static void DestroyRematchBlueLightSprite(void)
DestroySprite(gfx->blueLightSprite);
}
-static void SpriteCB_BlinkingBlueLight(struct Sprite * sprite)
+static void SpriteCB_BlinkingBlueLight(struct Sprite *sprite)
{
sprite->data[0]++;
if (sprite->data[0] > 8)
@@ -1216,7 +1216,7 @@ static void SpriteCB_BlinkingBlueLight(struct Sprite * sprite)
static void AddOptionDescriptionWindow(void)
{
- struct Pokenav_MenuGfx * gfx = GetSubstructPtr(POKENAV_SUBSTRUCT_MENU_GFX);
+ struct Pokenav_MenuGfx *gfx = GetSubstructPtr(POKENAV_SUBSTRUCT_MENU_GFX);
gfx->optionDescWindowId = AddWindow(&sOptionDescWindowTemplate);
PutWindowTilemap(gfx->optionDescWindowId);
@@ -1226,7 +1226,7 @@ static void AddOptionDescriptionWindow(void)
static void PrintCurrentOptionDescription(void)
{
- struct Pokenav_MenuGfx * gfx = GetSubstructPtr(POKENAV_SUBSTRUCT_MENU_GFX);
+ struct Pokenav_MenuGfx *gfx = GetSubstructPtr(POKENAV_SUBSTRUCT_MENU_GFX);
int menuItem = GetCurrentMenuItemId();
const u8 *desc = sPageDescriptions[menuItem];
u32 width = GetStringWidth(FONT_NORMAL, desc, -1);
@@ -1238,7 +1238,7 @@ static void PrintCurrentOptionDescription(void)
// Can occur by obtaining a mon with a ribbon and then releasing all ribbon winners
static void PrintNoRibbonWinners(void)
{
- struct Pokenav_MenuGfx * gfx = GetSubstructPtr(POKENAV_SUBSTRUCT_MENU_GFX);
+ struct Pokenav_MenuGfx *gfx = GetSubstructPtr(POKENAV_SUBSTRUCT_MENU_GFX);
const u8 *s = gText_NoRibbonWinners;
u32 width = GetStringWidth(FONT_NORMAL, s, -1);
FillWindowPixelBuffer(gfx->optionDescWindowId, PIXEL_FILL(6));
@@ -1252,13 +1252,13 @@ static bool32 IsDma3ManagerBusyWithBgCopy_(void)
static void CreateMovingBgDotsTask(void)
{
- struct Pokenav_MenuGfx * gfx = GetSubstructPtr(POKENAV_SUBSTRUCT_MENU_GFX);
+ struct Pokenav_MenuGfx *gfx = GetSubstructPtr(POKENAV_SUBSTRUCT_MENU_GFX);
gfx->bg3ScrollTaskId = CreateTask(Task_MoveBgDots, 2);
}
static void DestroyMovingDotsBgTask(void)
{
- struct Pokenav_MenuGfx * gfx = GetSubstructPtr(POKENAV_SUBSTRUCT_MENU_GFX);
+ struct Pokenav_MenuGfx *gfx = GetSubstructPtr(POKENAV_SUBSTRUCT_MENU_GFX);
DestroyTask(gfx->bg3ScrollTaskId);
}
@@ -1294,9 +1294,9 @@ static bool32 IsTaskActive_UpdateBgDotsPalette(void)
static void Task_UpdateBgDotsPalette(u8 taskId)
{
u16 sp8[2];
- s16 * data = gTasks[taskId].data;
- const u16 * pal1 = (const u16 *)GetWordTaskArg(taskId, 1);
- const u16 * pal2 = (const u16 *)GetWordTaskArg(taskId, 3);
+ s16 *data = gTasks[taskId].data;
+ const u16 *pal1 = (const u16 *)GetWordTaskArg(taskId, 1);
+ const u16 *pal2 = (const u16 *)GetWordTaskArg(taskId, 3);
PokenavCopyPalette(pal1, pal2, 2, 12, ++data[0], sp8);
LoadPalette(sp8, BG_PLTT_ID(3) + 1, PLTT_SIZEOF(2));
@@ -1349,7 +1349,7 @@ static void InitMenuOptionGlow(void)
static void Task_CurrentMenuOptionGlow(u8 taskId)
{
- s16 * data = gTasks[taskId].data;
+ s16 *data = gTasks[taskId].data;
data[0]++;
if (data[0] > 0)
{
diff --git a/src/pokenav_ribbons_list.c b/src/pokenav_ribbons_list.c
index 834dc926ad..6b4ce42824 100644
--- a/src/pokenav_ribbons_list.c
+++ b/src/pokenav_ribbons_list.c
@@ -217,26 +217,26 @@ static u32 UpdateMonListBgs(void)
static struct PokenavMonListItem *GetMonRibbonMonListData(void)
{
- struct Pokenav_RibbonsMonList * list = GetSubstructPtr(POKENAV_SUBSTRUCT_RIBBONS_MON_LIST);
+ struct Pokenav_RibbonsMonList *list = GetSubstructPtr(POKENAV_SUBSTRUCT_RIBBONS_MON_LIST);
return list->monList->monData;
}
static s32 GetRibbonsMonListCount(void)
{
- struct Pokenav_RibbonsMonList * list = GetSubstructPtr(POKENAV_SUBSTRUCT_RIBBONS_MON_LIST);
+ struct Pokenav_RibbonsMonList *list = GetSubstructPtr(POKENAV_SUBSTRUCT_RIBBONS_MON_LIST);
return list->monList->listCount;
}
static s32 UNUSED GetMonRibbonSelectedMonData(void)
{
- struct Pokenav_RibbonsMonList * list = GetSubstructPtr(POKENAV_SUBSTRUCT_RIBBONS_MON_LIST);
+ struct Pokenav_RibbonsMonList *list = GetSubstructPtr(POKENAV_SUBSTRUCT_RIBBONS_MON_LIST);
s32 idx = PokenavList_GetSelectedIndex();
return list->monList->monData[idx].data;
}
static s32 GetRibbonListMenuCurrIndex(void)
{
- struct Pokenav_RibbonsMonList * list = GetSubstructPtr(POKENAV_SUBSTRUCT_RIBBONS_MON_LIST);
+ struct Pokenav_RibbonsMonList *list = GetSubstructPtr(POKENAV_SUBSTRUCT_RIBBONS_MON_LIST);
return list->monList->currIndex;
}
@@ -249,7 +249,7 @@ static u32 BuildPartyMonRibbonList(s32 state)
{
s32 i;
struct PokenavMonListItem item;
- struct Pokenav_RibbonsMonList * list = GetSubstructPtr(POKENAV_SUBSTRUCT_RIBBONS_MON_LIST);
+ struct Pokenav_RibbonsMonList *list = GetSubstructPtr(POKENAV_SUBSTRUCT_RIBBONS_MON_LIST);
list->monList->listCount = 0;
list->monList->currIndex = 0;
@@ -284,7 +284,7 @@ static u32 InitBoxMonRibbonList(s32 state)
static u32 BuildBoxMonRibbonList(s32 state)
{
- struct Pokenav_RibbonsMonList * list = GetSubstructPtr(POKENAV_SUBSTRUCT_RIBBONS_MON_LIST);
+ struct Pokenav_RibbonsMonList *list = GetSubstructPtr(POKENAV_SUBSTRUCT_RIBBONS_MON_LIST);
s32 boxId = list->boxId;
s32 monId = list->monId;
s32 boxCount = 0;
@@ -408,13 +408,13 @@ bool32 IsRibbonsMonListLoopedTaskActive(void)
bool32 GetRibbonsMonCurrentLoopedTaskActive(void)
{
- struct Pokenav_RibbonsMonMenu * menu = GetSubstructPtr(POKENAV_SUBSTRUCT_RIBBONS_MON_MENU);
+ struct Pokenav_RibbonsMonMenu *menu = GetSubstructPtr(POKENAV_SUBSTRUCT_RIBBONS_MON_MENU);
return IsLoopedTaskActive(menu->loopedTaskId);
}
void FreeRibbonsMonMenu(void)
{
- struct Pokenav_RibbonsMonMenu * menu = GetSubstructPtr(POKENAV_SUBSTRUCT_RIBBONS_MON_MENU);
+ struct Pokenav_RibbonsMonMenu *menu = GetSubstructPtr(POKENAV_SUBSTRUCT_RIBBONS_MON_MENU);
DestroyPokenavList();
RemoveWindow(menu->winid);
FreePokenavSubstruct(POKENAV_SUBSTRUCT_RIBBONS_MON_MENU);
@@ -695,13 +695,13 @@ static void CreateRibbonMonsList(void)
}
// Buffers the "Nickname gender/level" text for the ribbon mon list
-static void BufferRibbonMonInfoText(struct PokenavListItem * listItem, u8 *dest)
+static void BufferRibbonMonInfoText(struct PokenavListItem *listItem, u8 *dest)
{
u8 gender;
u8 level;
u8 *s, *end;
const u8 *genderStr;
- struct PokenavMonListItem * item = (struct PokenavMonListItem *)listItem;
+ struct PokenavMonListItem *item = (struct PokenavMonListItem *)listItem;
u32 fontId;
// Mon is in party
@@ -715,7 +715,7 @@ static void BufferRibbonMonInfoText(struct PokenavListItem * listItem, u8 *dest)
// Mon is in PC
else
{
- struct BoxPokemon * mon = GetBoxedMonPtr(item->boxId, item->monId);
+ struct BoxPokemon *mon = GetBoxedMonPtr(item->boxId, item->monId);
gender = GetBoxMonGender(mon);
level = GetLevelFromBoxMonExp(mon);
GetBoxMonData(mon, MON_DATA_NICKNAME, gStringVar3);
diff --git a/src/recorded_battle.c b/src/recorded_battle.c
index e93b93ac7b..52f9be63b5 100644
--- a/src/recorded_battle.c
+++ b/src/recorded_battle.c
@@ -26,7 +26,7 @@ struct PlayerInfo
u32 trainerId;
u8 name[PLAYER_NAME_LENGTH + 1];
u8 gender;
- u16 battlerId;
+ u16 battler;
u16 language;
};
@@ -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];
}
}
}
@@ -120,7 +120,7 @@ void RecordedBattle_SetTrainerInfo(void)
{
sPlayers[i].trainerId = gLinkPlayers[i].trainerId;
sPlayers[i].gender = gLinkPlayers[i].gender;
- sPlayers[i].battlerId = gLinkPlayers[i].id;
+ sPlayers[i].battler = gLinkPlayers[i].id;
sPlayers[i].language = gLinkPlayers[i].language;
// Record names
@@ -146,7 +146,7 @@ void RecordedBattle_SetTrainerInfo(void)
| (gSaveBlock2Ptr->playerTrainerId[3] << 24);
sPlayers[0].gender = gSaveBlock2Ptr->playerGender;
- sPlayers[0].battlerId = 0;
+ sPlayers[0].battler = 0;
sPlayers[0].language = gGameLanguage;
for (i = 0; i < PLAYER_NAME_LENGTH + 1; i++)
@@ -154,32 +154,32 @@ void RecordedBattle_SetTrainerInfo(void)
}
}
-void RecordedBattle_SetBattlerAction(u8 battlerId, u8 action)
+void RecordedBattle_SetBattlerAction(u8 battler, u8 action)
{
- if (sBattlerRecordSizes[battlerId] < BATTLER_RECORD_SIZE && sRecordMode != B_RECORD_MODE_PLAYBACK)
- sBattleRecords[battlerId][sBattlerRecordSizes[battlerId]++] = action;
+ if (sBattlerRecordSizes[battler] < BATTLER_RECORD_SIZE && sRecordMode != B_RECORD_MODE_PLAYBACK)
+ sBattleRecords[battler][sBattlerRecordSizes[battler]++] = action;
}
-void RecordedBattle_ClearBattlerAction(u8 battlerId, u8 bytesToClear)
+void RecordedBattle_ClearBattlerAction(u8 battler, u8 bytesToClear)
{
s32 i;
for (i = 0; i < bytesToClear; i++)
{
- sBattlerRecordSizes[battlerId]--;
- sBattleRecords[battlerId][sBattlerRecordSizes[battlerId]] = 0xFF;
- if (sBattlerRecordSizes[battlerId] == 0)
+ sBattlerRecordSizes[battler]--;
+ sBattleRecords[battler][sBattlerRecordSizes[battler]] = 0xFF;
+ if (sBattlerRecordSizes[battler] == 0)
break;
}
}
-u8 RecordedBattle_GetBattlerAction(u32 actionType, u8 battlerId)
+u8 RecordedBattle_GetBattlerAction(u32 actionType, u8 battler)
{
if (gTestRunnerEnabled)
- TestRunner_Battle_CheckBattleRecordActionType(battlerId, sBattlerRecordSizes[battlerId], actionType);
+ TestRunner_Battle_CheckBattleRecordActionType(battler, sBattlerRecordSizes[battler], actionType);
// Trying to read past array or invalid action byte, battle is over.
- if (sBattlerRecordSizes[battlerId] >= BATTLER_RECORD_SIZE || sBattleRecords[battlerId][sBattlerRecordSizes[battlerId]] == 0xFF)
+ if (sBattlerRecordSizes[battler] >= BATTLER_RECORD_SIZE || sBattleRecords[battler][sBattlerRecordSizes[battler]] == 0xFF)
{
gSpecialVar_Result = gBattleOutcome = B_OUTCOME_PLAYER_TELEPORTED; // hah
ResetPaletteFadeControl();
@@ -189,7 +189,7 @@ u8 RecordedBattle_GetBattlerAction(u32 actionType, u8 battlerId)
}
else
{
- return sBattleRecords[battlerId][sBattlerRecordSizes[battlerId]++];
+ return sBattleRecords[battler][sBattlerRecordSizes[battler]++];
}
}
@@ -239,11 +239,11 @@ void RecordedBattle_RecordAllBattlerData(u8 *src)
{
for (size = *src; size != 0;)
{
- u8 battlerId = GetNextRecordedDataByte(src, &idx, &size);
+ u8 battler = GetNextRecordedDataByte(src, &idx, &size);
u8 numActions = GetNextRecordedDataByte(src, &idx, &size);
for (i = 0; i < numActions; i++)
- sBattleRecords[battlerId][sBattlerSavedRecordSizes[battlerId]++] = GetNextRecordedDataByte(src, &idx, &size);
+ sBattleRecords[battler][sBattlerSavedRecordSizes[battler]++] = GetNextRecordedDataByte(src, &idx, &size);
}
}
}
@@ -310,7 +310,7 @@ bool32 MoveRecordedBattleToSaveData(void)
battleSave->playersName[i][j] = sPlayers[i].name[j];
battleSave->playersGender[i] = sPlayers[i].gender;
battleSave->playersLanguage[i] = sPlayers[i].language;
- battleSave->playersBattlers[i] = sPlayers[i].battlerId;
+ battleSave->playersBattlers[i] = sPlayers[i].battler;
battleSave->playersTrainerId[i] = sPlayers[i].trainerId;
}
@@ -329,16 +329,16 @@ bool32 MoveRecordedBattleToSaveData(void)
}
else if (sBattleFlags & BATTLE_TYPE_MULTI)
{
- switch (sPlayers[0].battlerId)
+ switch (sPlayers[0].battler)
{
case 0:
case 2:
- if (!(sPlayers[gRecordedBattleMultiplayerId].battlerId & 1))
+ if (!(sPlayers[gRecordedBattleMultiplayerId].battler & 1))
battleSave->battleFlags |= BATTLE_TYPE_RECORDED_IS_MASTER;
break;
case 1:
case 3:
- if ((sPlayers[gRecordedBattleMultiplayerId].battlerId & 1))
+ if ((sPlayers[gRecordedBattleMultiplayerId].battler & 1))
battleSave->battleFlags |= BATTLE_TYPE_RECORDED_IS_MASTER;
break;
}
@@ -683,35 +683,35 @@ void RecordedBattle_CopyBattlerMoves(u32 battler)
void RecordedBattle_CheckMovesetChanges(u8 mode)
{
- s32 battlerId, j, k;
+ s32 battler, j, k;
if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK))
return;
- for (battlerId = 0; battlerId < gBattlersCount; battlerId++)
+ for (battler = 0; battler < gBattlersCount; battler++)
{
// Player's side only
- if (IsOnPlayerSide(battlerId))
+ if (IsOnPlayerSide(battler))
{
if (mode == B_RECORD_MODE_RECORDING)
{
// Check if any of the battler's moves have changed.
for (j = 0; j < MAX_MON_MOVES; j++)
{
- if (gBattleMons[battlerId].moves[j] != sPlayerMonMoves[battlerId / 2][j])
+ if (gBattleMons[battler].moves[j] != sPlayerMonMoves[battler / 2][j])
break;
}
if (j != MAX_MON_MOVES)
{
// At least one of the moves has been changed
- RecordedBattle_SetBattlerAction(battlerId, ACTION_MOVE_CHANGE);
+ RecordedBattle_SetBattlerAction(battler, ACTION_MOVE_CHANGE);
for (j = 0; j < MAX_MON_MOVES; j++)
{
for (k = 0; k < MAX_MON_MOVES; k++)
{
- if (gBattleMons[battlerId].moves[j] == sPlayerMonMoves[battlerId / 2][k])
+ if (gBattleMons[battler].moves[j] == sPlayerMonMoves[battler / 2][k])
{
- RecordedBattle_SetBattlerAction(battlerId, k);
+ RecordedBattle_SetBattlerAction(battler, k);
break;
}
}
@@ -720,7 +720,7 @@ void RecordedBattle_CheckMovesetChanges(u8 mode)
}
else // B_RECORD_MODE_PLAYBACK
{
- if (sBattleRecords[battlerId][sBattlerRecordSizes[battlerId]] == ACTION_MOVE_CHANGE)
+ if (sBattleRecords[battler][sBattlerRecordSizes[battler]] == ACTION_MOVE_CHANGE)
{
u8 ppBonuses[MAX_MON_MOVES];
u8 moveSlots[MAX_MON_MOVES];
@@ -730,55 +730,55 @@ void RecordedBattle_CheckMovesetChanges(u8 mode)
// We know the current action is ACTION_MOVE_CHANGE, retrieve
// it without saving it to move on to the next action.
- RecordedBattle_GetBattlerAction(RECORDED_BYTE, battlerId);
+ RecordedBattle_GetBattlerAction(RECORDED_BYTE, battler);
for (j = 0; j < MAX_MON_MOVES; j++)
- ppBonuses[j] = ((gBattleMons[battlerId].ppBonuses & (3 << (j << 1))) >> (j << 1));
+ ppBonuses[j] = ((gBattleMons[battler].ppBonuses & (3 << (j << 1))) >> (j << 1));
for (j = 0; j < MAX_MON_MOVES; j++)
{
- moveSlots[j] = RecordedBattle_GetBattlerAction(RECORDED_BYTE, battlerId);
- movePp.moves[j] = gBattleMons[battlerId].moves[moveSlots[j]];
- movePp.currentPp[j] = gBattleMons[battlerId].pp[moveSlots[j]];
+ moveSlots[j] = RecordedBattle_GetBattlerAction(RECORDED_BYTE, battler);
+ movePp.moves[j] = gBattleMons[battler].moves[moveSlots[j]];
+ movePp.currentPp[j] = gBattleMons[battler].pp[moveSlots[j]];
movePp.maxPp[j] = ppBonuses[moveSlots[j]];
- mimickedMoveSlots[j] = (gDisableStructs[battlerId].mimickedMoves & (1u << j)) >> j;
+ mimickedMoveSlots[j] = (gDisableStructs[battler].mimickedMoves & (1u << j)) >> j;
}
for (j = 0; j < MAX_MON_MOVES; j++)
{
- gBattleMons[battlerId].moves[j] = movePp.moves[j];
- gBattleMons[battlerId].pp[j] = movePp.currentPp[j];
+ gBattleMons[battler].moves[j] = movePp.moves[j];
+ gBattleMons[battler].pp[j] = movePp.currentPp[j];
}
- gBattleMons[battlerId].ppBonuses = 0;
- gDisableStructs[battlerId].mimickedMoves = 0;
+ gBattleMons[battler].ppBonuses = 0;
+ gDisableStructs[battler].mimickedMoves = 0;
for (j = 0; j < MAX_MON_MOVES; j++)
{
- gBattleMons[battlerId].ppBonuses |= movePp.maxPp[j] << (j << 1);
- gDisableStructs[battlerId].mimickedMoves |= mimickedMoveSlots[j] << j;
+ gBattleMons[battler].ppBonuses |= movePp.maxPp[j] << (j << 1);
+ gDisableStructs[battler].mimickedMoves |= mimickedMoveSlots[j] << j;
}
- if (!(gBattleMons[battlerId].status2 & STATUS2_TRANSFORMED))
+ if (!(gBattleMons[battler].status2 & STATUS2_TRANSFORMED))
{
for (j = 0; j < MAX_MON_MOVES; j++)
- ppBonuses[j] = (GetMonData(GetBattlerMon(battlerId), 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(GetBattlerMon(battlerId), MON_DATA_MOVE1 + moveSlots[j], NULL);
- movePp.currentPp[j] = GetMonData(GetBattlerMon(battlerId), 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(GetBattlerMon(battlerId), MON_DATA_MOVE1 + j, &movePp.moves[j]);
- SetMonData(GetBattlerMon(battlerId), 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(GetBattlerMon(battlerId), MON_DATA_PP_BONUSES, &ppBonusSet);
+ SetMonData(GetBattlerMon(battler), MON_DATA_PP_BONUSES, &ppBonusSet);
}
- gChosenMoveByBattler[battlerId] = gBattleMons[battlerId].moves[gBattleStruct->chosenMovePositions[battlerId]];
+ gChosenMoveByBattler[battler] = gBattleMons[battler].moves[gBattleStruct->chosenMovePositions[battler]];
}
}
}
diff --git a/src/region_map.c b/src/region_map.c
index aba1162f5b..be033f8e47 100644
--- a/src/region_map.c
+++ b/src/region_map.c
@@ -288,56 +288,56 @@ static const u32 sFlyTargetIcons_Gfx[] = INCBIN_U32("graphics/pokenav/region_map
static const u8 sMapHealLocations[][3] =
{
- [MAPSEC_LITTLEROOT_TOWN] = {MAP_GROUP(LITTLEROOT_TOWN), MAP_NUM(LITTLEROOT_TOWN), HEAL_LOCATION_LITTLEROOT_TOWN_BRENDANS_HOUSE_2F},
- [MAPSEC_OLDALE_TOWN] = {MAP_GROUP(OLDALE_TOWN), MAP_NUM(OLDALE_TOWN), HEAL_LOCATION_OLDALE_TOWN},
- [MAPSEC_DEWFORD_TOWN] = {MAP_GROUP(DEWFORD_TOWN), MAP_NUM(DEWFORD_TOWN), HEAL_LOCATION_DEWFORD_TOWN},
- [MAPSEC_LAVARIDGE_TOWN] = {MAP_GROUP(LAVARIDGE_TOWN), MAP_NUM(LAVARIDGE_TOWN), HEAL_LOCATION_LAVARIDGE_TOWN},
- [MAPSEC_FALLARBOR_TOWN] = {MAP_GROUP(FALLARBOR_TOWN), MAP_NUM(FALLARBOR_TOWN), HEAL_LOCATION_FALLARBOR_TOWN},
- [MAPSEC_VERDANTURF_TOWN] = {MAP_GROUP(VERDANTURF_TOWN), MAP_NUM(VERDANTURF_TOWN), HEAL_LOCATION_VERDANTURF_TOWN},
- [MAPSEC_PACIFIDLOG_TOWN] = {MAP_GROUP(PACIFIDLOG_TOWN), MAP_NUM(PACIFIDLOG_TOWN), HEAL_LOCATION_PACIFIDLOG_TOWN},
- [MAPSEC_PETALBURG_CITY] = {MAP_GROUP(PETALBURG_CITY), MAP_NUM(PETALBURG_CITY), HEAL_LOCATION_PETALBURG_CITY},
- [MAPSEC_SLATEPORT_CITY] = {MAP_GROUP(SLATEPORT_CITY), MAP_NUM(SLATEPORT_CITY), HEAL_LOCATION_SLATEPORT_CITY},
- [MAPSEC_MAUVILLE_CITY] = {MAP_GROUP(MAUVILLE_CITY), MAP_NUM(MAUVILLE_CITY), HEAL_LOCATION_MAUVILLE_CITY},
- [MAPSEC_RUSTBORO_CITY] = {MAP_GROUP(RUSTBORO_CITY), MAP_NUM(RUSTBORO_CITY), HEAL_LOCATION_RUSTBORO_CITY},
- [MAPSEC_FORTREE_CITY] = {MAP_GROUP(FORTREE_CITY), MAP_NUM(FORTREE_CITY), HEAL_LOCATION_FORTREE_CITY},
- [MAPSEC_LILYCOVE_CITY] = {MAP_GROUP(LILYCOVE_CITY), MAP_NUM(LILYCOVE_CITY), HEAL_LOCATION_LILYCOVE_CITY},
- [MAPSEC_MOSSDEEP_CITY] = {MAP_GROUP(MOSSDEEP_CITY), MAP_NUM(MOSSDEEP_CITY), HEAL_LOCATION_MOSSDEEP_CITY},
- [MAPSEC_SOOTOPOLIS_CITY] = {MAP_GROUP(SOOTOPOLIS_CITY), MAP_NUM(SOOTOPOLIS_CITY), HEAL_LOCATION_SOOTOPOLIS_CITY},
- [MAPSEC_EVER_GRANDE_CITY] = {MAP_GROUP(EVER_GRANDE_CITY), MAP_NUM(EVER_GRANDE_CITY), HEAL_LOCATION_EVER_GRANDE_CITY},
- [MAPSEC_ROUTE_101] = {MAP_GROUP(ROUTE101), MAP_NUM(ROUTE101), HEAL_LOCATION_NONE},
- [MAPSEC_ROUTE_102] = {MAP_GROUP(ROUTE102), MAP_NUM(ROUTE102), HEAL_LOCATION_NONE},
- [MAPSEC_ROUTE_103] = {MAP_GROUP(ROUTE103), MAP_NUM(ROUTE103), HEAL_LOCATION_NONE},
- [MAPSEC_ROUTE_104] = {MAP_GROUP(ROUTE104), MAP_NUM(ROUTE104), HEAL_LOCATION_NONE},
- [MAPSEC_ROUTE_105] = {MAP_GROUP(ROUTE105), MAP_NUM(ROUTE105), HEAL_LOCATION_NONE},
- [MAPSEC_ROUTE_106] = {MAP_GROUP(ROUTE106), MAP_NUM(ROUTE106), HEAL_LOCATION_NONE},
- [MAPSEC_ROUTE_107] = {MAP_GROUP(ROUTE107), MAP_NUM(ROUTE107), HEAL_LOCATION_NONE},
- [MAPSEC_ROUTE_108] = {MAP_GROUP(ROUTE108), MAP_NUM(ROUTE108), HEAL_LOCATION_NONE},
- [MAPSEC_ROUTE_109] = {MAP_GROUP(ROUTE109), MAP_NUM(ROUTE109), HEAL_LOCATION_NONE},
- [MAPSEC_ROUTE_110] = {MAP_GROUP(ROUTE110), MAP_NUM(ROUTE110), HEAL_LOCATION_NONE},
- [MAPSEC_ROUTE_111] = {MAP_GROUP(ROUTE111), MAP_NUM(ROUTE111), HEAL_LOCATION_NONE},
- [MAPSEC_ROUTE_112] = {MAP_GROUP(ROUTE112), MAP_NUM(ROUTE112), HEAL_LOCATION_NONE},
- [MAPSEC_ROUTE_113] = {MAP_GROUP(ROUTE113), MAP_NUM(ROUTE113), HEAL_LOCATION_NONE},
- [MAPSEC_ROUTE_114] = {MAP_GROUP(ROUTE114), MAP_NUM(ROUTE114), HEAL_LOCATION_NONE},
- [MAPSEC_ROUTE_115] = {MAP_GROUP(ROUTE115), MAP_NUM(ROUTE115), HEAL_LOCATION_NONE},
- [MAPSEC_ROUTE_116] = {MAP_GROUP(ROUTE116), MAP_NUM(ROUTE116), HEAL_LOCATION_NONE},
- [MAPSEC_ROUTE_117] = {MAP_GROUP(ROUTE117), MAP_NUM(ROUTE117), HEAL_LOCATION_NONE},
- [MAPSEC_ROUTE_118] = {MAP_GROUP(ROUTE118), MAP_NUM(ROUTE118), HEAL_LOCATION_NONE},
- [MAPSEC_ROUTE_119] = {MAP_GROUP(ROUTE119), MAP_NUM(ROUTE119), HEAL_LOCATION_NONE},
- [MAPSEC_ROUTE_120] = {MAP_GROUP(ROUTE120), MAP_NUM(ROUTE120), HEAL_LOCATION_NONE},
- [MAPSEC_ROUTE_121] = {MAP_GROUP(ROUTE121), MAP_NUM(ROUTE121), HEAL_LOCATION_NONE},
- [MAPSEC_ROUTE_122] = {MAP_GROUP(ROUTE122), MAP_NUM(ROUTE122), HEAL_LOCATION_NONE},
- [MAPSEC_ROUTE_123] = {MAP_GROUP(ROUTE123), MAP_NUM(ROUTE123), HEAL_LOCATION_NONE},
- [MAPSEC_ROUTE_124] = {MAP_GROUP(ROUTE124), MAP_NUM(ROUTE124), HEAL_LOCATION_NONE},
- [MAPSEC_ROUTE_125] = {MAP_GROUP(ROUTE125), MAP_NUM(ROUTE125), HEAL_LOCATION_NONE},
- [MAPSEC_ROUTE_126] = {MAP_GROUP(ROUTE126), MAP_NUM(ROUTE126), HEAL_LOCATION_NONE},
- [MAPSEC_ROUTE_127] = {MAP_GROUP(ROUTE127), MAP_NUM(ROUTE127), HEAL_LOCATION_NONE},
- [MAPSEC_ROUTE_128] = {MAP_GROUP(ROUTE128), MAP_NUM(ROUTE128), HEAL_LOCATION_NONE},
- [MAPSEC_ROUTE_129] = {MAP_GROUP(ROUTE129), MAP_NUM(ROUTE129), HEAL_LOCATION_NONE},
- [MAPSEC_ROUTE_130] = {MAP_GROUP(ROUTE130), MAP_NUM(ROUTE130), HEAL_LOCATION_NONE},
- [MAPSEC_ROUTE_131] = {MAP_GROUP(ROUTE131), MAP_NUM(ROUTE131), HEAL_LOCATION_NONE},
- [MAPSEC_ROUTE_132] = {MAP_GROUP(ROUTE132), MAP_NUM(ROUTE132), HEAL_LOCATION_NONE},
- [MAPSEC_ROUTE_133] = {MAP_GROUP(ROUTE133), MAP_NUM(ROUTE133), HEAL_LOCATION_NONE},
- [MAPSEC_ROUTE_134] = {MAP_GROUP(ROUTE134), MAP_NUM(ROUTE134), HEAL_LOCATION_NONE},
+ [MAPSEC_LITTLEROOT_TOWN] = {MAP_GROUP(MAP_LITTLEROOT_TOWN), MAP_NUM(MAP_LITTLEROOT_TOWN), HEAL_LOCATION_LITTLEROOT_TOWN_BRENDANS_HOUSE_2F},
+ [MAPSEC_OLDALE_TOWN] = {MAP_GROUP(MAP_OLDALE_TOWN), MAP_NUM(MAP_OLDALE_TOWN), HEAL_LOCATION_OLDALE_TOWN},
+ [MAPSEC_DEWFORD_TOWN] = {MAP_GROUP(MAP_DEWFORD_TOWN), MAP_NUM(MAP_DEWFORD_TOWN), HEAL_LOCATION_DEWFORD_TOWN},
+ [MAPSEC_LAVARIDGE_TOWN] = {MAP_GROUP(MAP_LAVARIDGE_TOWN), MAP_NUM(MAP_LAVARIDGE_TOWN), HEAL_LOCATION_LAVARIDGE_TOWN},
+ [MAPSEC_FALLARBOR_TOWN] = {MAP_GROUP(MAP_FALLARBOR_TOWN), MAP_NUM(MAP_FALLARBOR_TOWN), HEAL_LOCATION_FALLARBOR_TOWN},
+ [MAPSEC_VERDANTURF_TOWN] = {MAP_GROUP(MAP_VERDANTURF_TOWN), MAP_NUM(MAP_VERDANTURF_TOWN), HEAL_LOCATION_VERDANTURF_TOWN},
+ [MAPSEC_PACIFIDLOG_TOWN] = {MAP_GROUP(MAP_PACIFIDLOG_TOWN), MAP_NUM(MAP_PACIFIDLOG_TOWN), HEAL_LOCATION_PACIFIDLOG_TOWN},
+ [MAPSEC_PETALBURG_CITY] = {MAP_GROUP(MAP_PETALBURG_CITY), MAP_NUM(MAP_PETALBURG_CITY), HEAL_LOCATION_PETALBURG_CITY},
+ [MAPSEC_SLATEPORT_CITY] = {MAP_GROUP(MAP_SLATEPORT_CITY), MAP_NUM(MAP_SLATEPORT_CITY), HEAL_LOCATION_SLATEPORT_CITY},
+ [MAPSEC_MAUVILLE_CITY] = {MAP_GROUP(MAP_MAUVILLE_CITY), MAP_NUM(MAP_MAUVILLE_CITY), HEAL_LOCATION_MAUVILLE_CITY},
+ [MAPSEC_RUSTBORO_CITY] = {MAP_GROUP(MAP_RUSTBORO_CITY), MAP_NUM(MAP_RUSTBORO_CITY), HEAL_LOCATION_RUSTBORO_CITY},
+ [MAPSEC_FORTREE_CITY] = {MAP_GROUP(MAP_FORTREE_CITY), MAP_NUM(MAP_FORTREE_CITY), HEAL_LOCATION_FORTREE_CITY},
+ [MAPSEC_LILYCOVE_CITY] = {MAP_GROUP(MAP_LILYCOVE_CITY), MAP_NUM(MAP_LILYCOVE_CITY), HEAL_LOCATION_LILYCOVE_CITY},
+ [MAPSEC_MOSSDEEP_CITY] = {MAP_GROUP(MAP_MOSSDEEP_CITY), MAP_NUM(MAP_MOSSDEEP_CITY), HEAL_LOCATION_MOSSDEEP_CITY},
+ [MAPSEC_SOOTOPOLIS_CITY] = {MAP_GROUP(MAP_SOOTOPOLIS_CITY), MAP_NUM(MAP_SOOTOPOLIS_CITY), HEAL_LOCATION_SOOTOPOLIS_CITY},
+ [MAPSEC_EVER_GRANDE_CITY] = {MAP_GROUP(MAP_EVER_GRANDE_CITY), MAP_NUM(MAP_EVER_GRANDE_CITY), HEAL_LOCATION_EVER_GRANDE_CITY},
+ [MAPSEC_ROUTE_101] = {MAP_GROUP(MAP_ROUTE101), MAP_NUM(MAP_ROUTE101), HEAL_LOCATION_NONE},
+ [MAPSEC_ROUTE_102] = {MAP_GROUP(MAP_ROUTE102), MAP_NUM(MAP_ROUTE102), HEAL_LOCATION_NONE},
+ [MAPSEC_ROUTE_103] = {MAP_GROUP(MAP_ROUTE103), MAP_NUM(MAP_ROUTE103), HEAL_LOCATION_NONE},
+ [MAPSEC_ROUTE_104] = {MAP_GROUP(MAP_ROUTE104), MAP_NUM(MAP_ROUTE104), HEAL_LOCATION_NONE},
+ [MAPSEC_ROUTE_105] = {MAP_GROUP(MAP_ROUTE105), MAP_NUM(MAP_ROUTE105), HEAL_LOCATION_NONE},
+ [MAPSEC_ROUTE_106] = {MAP_GROUP(MAP_ROUTE106), MAP_NUM(MAP_ROUTE106), HEAL_LOCATION_NONE},
+ [MAPSEC_ROUTE_107] = {MAP_GROUP(MAP_ROUTE107), MAP_NUM(MAP_ROUTE107), HEAL_LOCATION_NONE},
+ [MAPSEC_ROUTE_108] = {MAP_GROUP(MAP_ROUTE108), MAP_NUM(MAP_ROUTE108), HEAL_LOCATION_NONE},
+ [MAPSEC_ROUTE_109] = {MAP_GROUP(MAP_ROUTE109), MAP_NUM(MAP_ROUTE109), HEAL_LOCATION_NONE},
+ [MAPSEC_ROUTE_110] = {MAP_GROUP(MAP_ROUTE110), MAP_NUM(MAP_ROUTE110), HEAL_LOCATION_NONE},
+ [MAPSEC_ROUTE_111] = {MAP_GROUP(MAP_ROUTE111), MAP_NUM(MAP_ROUTE111), HEAL_LOCATION_NONE},
+ [MAPSEC_ROUTE_112] = {MAP_GROUP(MAP_ROUTE112), MAP_NUM(MAP_ROUTE112), HEAL_LOCATION_NONE},
+ [MAPSEC_ROUTE_113] = {MAP_GROUP(MAP_ROUTE113), MAP_NUM(MAP_ROUTE113), HEAL_LOCATION_NONE},
+ [MAPSEC_ROUTE_114] = {MAP_GROUP(MAP_ROUTE114), MAP_NUM(MAP_ROUTE114), HEAL_LOCATION_NONE},
+ [MAPSEC_ROUTE_115] = {MAP_GROUP(MAP_ROUTE115), MAP_NUM(MAP_ROUTE115), HEAL_LOCATION_NONE},
+ [MAPSEC_ROUTE_116] = {MAP_GROUP(MAP_ROUTE116), MAP_NUM(MAP_ROUTE116), HEAL_LOCATION_NONE},
+ [MAPSEC_ROUTE_117] = {MAP_GROUP(MAP_ROUTE117), MAP_NUM(MAP_ROUTE117), HEAL_LOCATION_NONE},
+ [MAPSEC_ROUTE_118] = {MAP_GROUP(MAP_ROUTE118), MAP_NUM(MAP_ROUTE118), HEAL_LOCATION_NONE},
+ [MAPSEC_ROUTE_119] = {MAP_GROUP(MAP_ROUTE119), MAP_NUM(MAP_ROUTE119), HEAL_LOCATION_NONE},
+ [MAPSEC_ROUTE_120] = {MAP_GROUP(MAP_ROUTE120), MAP_NUM(MAP_ROUTE120), HEAL_LOCATION_NONE},
+ [MAPSEC_ROUTE_121] = {MAP_GROUP(MAP_ROUTE121), MAP_NUM(MAP_ROUTE121), HEAL_LOCATION_NONE},
+ [MAPSEC_ROUTE_122] = {MAP_GROUP(MAP_ROUTE122), MAP_NUM(MAP_ROUTE122), HEAL_LOCATION_NONE},
+ [MAPSEC_ROUTE_123] = {MAP_GROUP(MAP_ROUTE123), MAP_NUM(MAP_ROUTE123), HEAL_LOCATION_NONE},
+ [MAPSEC_ROUTE_124] = {MAP_GROUP(MAP_ROUTE124), MAP_NUM(MAP_ROUTE124), HEAL_LOCATION_NONE},
+ [MAPSEC_ROUTE_125] = {MAP_GROUP(MAP_ROUTE125), MAP_NUM(MAP_ROUTE125), HEAL_LOCATION_NONE},
+ [MAPSEC_ROUTE_126] = {MAP_GROUP(MAP_ROUTE126), MAP_NUM(MAP_ROUTE126), HEAL_LOCATION_NONE},
+ [MAPSEC_ROUTE_127] = {MAP_GROUP(MAP_ROUTE127), MAP_NUM(MAP_ROUTE127), HEAL_LOCATION_NONE},
+ [MAPSEC_ROUTE_128] = {MAP_GROUP(MAP_ROUTE128), MAP_NUM(MAP_ROUTE128), HEAL_LOCATION_NONE},
+ [MAPSEC_ROUTE_129] = {MAP_GROUP(MAP_ROUTE129), MAP_NUM(MAP_ROUTE129), HEAL_LOCATION_NONE},
+ [MAPSEC_ROUTE_130] = {MAP_GROUP(MAP_ROUTE130), MAP_NUM(MAP_ROUTE130), HEAL_LOCATION_NONE},
+ [MAPSEC_ROUTE_131] = {MAP_GROUP(MAP_ROUTE131), MAP_NUM(MAP_ROUTE131), HEAL_LOCATION_NONE},
+ [MAPSEC_ROUTE_132] = {MAP_GROUP(MAP_ROUTE132), MAP_NUM(MAP_ROUTE132), HEAL_LOCATION_NONE},
+ [MAPSEC_ROUTE_133] = {MAP_GROUP(MAP_ROUTE133), MAP_NUM(MAP_ROUTE133), HEAL_LOCATION_NONE},
+ [MAPSEC_ROUTE_134] = {MAP_GROUP(MAP_ROUTE134), MAP_NUM(MAP_ROUTE134), HEAL_LOCATION_NONE},
};
static const u8 *const sEverGrandeCityNames[] =
@@ -984,10 +984,10 @@ static void InitMapBasedOnPlayerLocation(void)
u16 xOnMap;
struct WarpData *warp;
- if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(SS_TIDAL_CORRIDOR)
- && (gSaveBlock1Ptr->location.mapNum == MAP_NUM(SS_TIDAL_CORRIDOR)
- || gSaveBlock1Ptr->location.mapNum == MAP_NUM(SS_TIDAL_LOWER_DECK)
- || gSaveBlock1Ptr->location.mapNum == MAP_NUM(SS_TIDAL_ROOMS)))
+ if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(MAP_SS_TIDAL_CORRIDOR)
+ && (gSaveBlock1Ptr->location.mapNum == MAP_NUM(MAP_SS_TIDAL_CORRIDOR)
+ || gSaveBlock1Ptr->location.mapNum == MAP_NUM(MAP_SS_TIDAL_LOWER_DECK)
+ || gSaveBlock1Ptr->location.mapNum == MAP_NUM(MAP_SS_TIDAL_ROOMS)))
{
RegionMap_InitializeStateBasedOnSSTidalLocation();
return;
diff --git a/src/roamer.c b/src/roamer.c
index dc5977cc31..9bca6fdc45 100644
--- a/src/roamer.c
+++ b/src/roamer.c
@@ -19,7 +19,7 @@ EWRAM_DATA static u8 sLocationHistory[ROAMER_COUNT][3][2] = {0};
EWRAM_DATA static u8 sRoamerLocation[ROAMER_COUNT][2] = {0};
EWRAM_DATA u8 gEncounteredRoamerIndex = 0;
-#define ___ MAP_NUM(UNDEFINED) // For empty spots in the location table
+#define ___ MAP_NUM(MAP_UNDEFINED) // For empty spots in the location table
// Note: There are two potential softlocks that can occur with this table if its maps are
// changed in particular ways. They can be avoided by ensuring the following:
@@ -35,26 +35,26 @@ EWRAM_DATA u8 gEncounteredRoamerIndex = 0;
// from that map when it lands there.
static const u8 sRoamerLocations[][6] =
{
- { MAP_NUM(ROUTE110), MAP_NUM(ROUTE111), MAP_NUM(ROUTE117), MAP_NUM(ROUTE118), MAP_NUM(ROUTE134), ___ },
- { MAP_NUM(ROUTE111), MAP_NUM(ROUTE110), MAP_NUM(ROUTE117), MAP_NUM(ROUTE118), ___, ___ },
- { MAP_NUM(ROUTE117), MAP_NUM(ROUTE111), MAP_NUM(ROUTE110), MAP_NUM(ROUTE118), ___, ___ },
- { MAP_NUM(ROUTE118), MAP_NUM(ROUTE117), MAP_NUM(ROUTE110), MAP_NUM(ROUTE111), MAP_NUM(ROUTE119), MAP_NUM(ROUTE123) },
- { MAP_NUM(ROUTE119), MAP_NUM(ROUTE118), MAP_NUM(ROUTE120), ___, ___, ___ },
- { MAP_NUM(ROUTE120), MAP_NUM(ROUTE119), MAP_NUM(ROUTE121), ___, ___, ___ },
- { MAP_NUM(ROUTE121), MAP_NUM(ROUTE120), MAP_NUM(ROUTE122), MAP_NUM(ROUTE123), ___, ___ },
- { MAP_NUM(ROUTE122), MAP_NUM(ROUTE121), MAP_NUM(ROUTE123), ___, ___, ___ },
- { MAP_NUM(ROUTE123), MAP_NUM(ROUTE122), MAP_NUM(ROUTE118), ___, ___, ___ },
- { MAP_NUM(ROUTE124), MAP_NUM(ROUTE121), MAP_NUM(ROUTE125), MAP_NUM(ROUTE126), ___, ___ },
- { MAP_NUM(ROUTE125), MAP_NUM(ROUTE124), MAP_NUM(ROUTE127), ___, ___, ___ },
- { MAP_NUM(ROUTE126), MAP_NUM(ROUTE124), MAP_NUM(ROUTE127), ___, ___, ___ },
- { MAP_NUM(ROUTE127), MAP_NUM(ROUTE125), MAP_NUM(ROUTE126), MAP_NUM(ROUTE128), ___, ___ },
- { MAP_NUM(ROUTE128), MAP_NUM(ROUTE127), MAP_NUM(ROUTE129), ___, ___, ___ },
- { MAP_NUM(ROUTE129), MAP_NUM(ROUTE128), MAP_NUM(ROUTE130), ___, ___, ___ },
- { MAP_NUM(ROUTE130), MAP_NUM(ROUTE129), MAP_NUM(ROUTE131), ___, ___, ___ },
- { MAP_NUM(ROUTE131), MAP_NUM(ROUTE130), MAP_NUM(ROUTE132), ___, ___, ___ },
- { MAP_NUM(ROUTE132), MAP_NUM(ROUTE131), MAP_NUM(ROUTE133), ___, ___, ___ },
- { MAP_NUM(ROUTE133), MAP_NUM(ROUTE132), MAP_NUM(ROUTE134), ___, ___, ___ },
- { MAP_NUM(ROUTE134), MAP_NUM(ROUTE133), MAP_NUM(ROUTE110), ___, ___, ___ },
+ { MAP_NUM(MAP_ROUTE110), MAP_NUM(MAP_ROUTE111), MAP_NUM(MAP_ROUTE117), MAP_NUM(MAP_ROUTE118), MAP_NUM(MAP_ROUTE134), ___ },
+ { MAP_NUM(MAP_ROUTE111), MAP_NUM(MAP_ROUTE110), MAP_NUM(MAP_ROUTE117), MAP_NUM(MAP_ROUTE118), ___, ___ },
+ { MAP_NUM(MAP_ROUTE117), MAP_NUM(MAP_ROUTE111), MAP_NUM(MAP_ROUTE110), MAP_NUM(MAP_ROUTE118), ___, ___ },
+ { MAP_NUM(MAP_ROUTE118), MAP_NUM(MAP_ROUTE117), MAP_NUM(MAP_ROUTE110), MAP_NUM(MAP_ROUTE111), MAP_NUM(MAP_ROUTE119), MAP_NUM(MAP_ROUTE123) },
+ { MAP_NUM(MAP_ROUTE119), MAP_NUM(MAP_ROUTE118), MAP_NUM(MAP_ROUTE120), ___, ___, ___ },
+ { MAP_NUM(MAP_ROUTE120), MAP_NUM(MAP_ROUTE119), MAP_NUM(MAP_ROUTE121), ___, ___, ___ },
+ { MAP_NUM(MAP_ROUTE121), MAP_NUM(MAP_ROUTE120), MAP_NUM(MAP_ROUTE122), MAP_NUM(MAP_ROUTE123), ___, ___ },
+ { MAP_NUM(MAP_ROUTE122), MAP_NUM(MAP_ROUTE121), MAP_NUM(MAP_ROUTE123), ___, ___, ___ },
+ { MAP_NUM(MAP_ROUTE123), MAP_NUM(MAP_ROUTE122), MAP_NUM(MAP_ROUTE118), ___, ___, ___ },
+ { MAP_NUM(MAP_ROUTE124), MAP_NUM(MAP_ROUTE121), MAP_NUM(MAP_ROUTE125), MAP_NUM(MAP_ROUTE126), ___, ___ },
+ { MAP_NUM(MAP_ROUTE125), MAP_NUM(MAP_ROUTE124), MAP_NUM(MAP_ROUTE127), ___, ___, ___ },
+ { MAP_NUM(MAP_ROUTE126), MAP_NUM(MAP_ROUTE124), MAP_NUM(MAP_ROUTE127), ___, ___, ___ },
+ { MAP_NUM(MAP_ROUTE127), MAP_NUM(MAP_ROUTE125), MAP_NUM(MAP_ROUTE126), MAP_NUM(MAP_ROUTE128), ___, ___ },
+ { MAP_NUM(MAP_ROUTE128), MAP_NUM(MAP_ROUTE127), MAP_NUM(MAP_ROUTE129), ___, ___, ___ },
+ { MAP_NUM(MAP_ROUTE129), MAP_NUM(MAP_ROUTE128), MAP_NUM(MAP_ROUTE130), ___, ___, ___ },
+ { MAP_NUM(MAP_ROUTE130), MAP_NUM(MAP_ROUTE129), MAP_NUM(MAP_ROUTE131), ___, ___, ___ },
+ { MAP_NUM(MAP_ROUTE131), MAP_NUM(MAP_ROUTE130), MAP_NUM(MAP_ROUTE132), ___, ___, ___ },
+ { MAP_NUM(MAP_ROUTE132), MAP_NUM(MAP_ROUTE131), MAP_NUM(MAP_ROUTE133), ___, ___, ___ },
+ { MAP_NUM(MAP_ROUTE133), MAP_NUM(MAP_ROUTE132), MAP_NUM(MAP_ROUTE134), ___, ___, ___ },
+ { MAP_NUM(MAP_ROUTE134), MAP_NUM(MAP_ROUTE133), MAP_NUM(MAP_ROUTE110), ___, ___, ___ },
{ ___, ___, ___, ___, ___, ___ },
};
@@ -220,7 +220,7 @@ void RoamerMove(u32 roamerIndex)
mapNum = sRoamerLocations[locSet][(Random() % (NUM_LOCATIONS_PER_SET - 1)) + 1];
} while ((sLocationHistory[roamerIndex][2][MAP_GRP] == ROAMER_MAP_GROUP
&& sLocationHistory[roamerIndex][2][MAP_NUM] == mapNum)
- || mapNum == MAP_NUM(UNDEFINED));
+ || mapNum == MAP_NUM(MAP_UNDEFINED));
sRoamerLocation[roamerIndex][MAP_NUM] = mapNum;
return;
}
diff --git a/src/rom_header_gf.c b/src/rom_header_gf.c
index f56886ace3..182d879c83 100644
--- a/src/rom_header_gf.c
+++ b/src/rom_header_gf.c
@@ -21,16 +21,16 @@ struct GFRomHeader
u32 version;
u32 language;
u8 gameName[32];
- const struct CompressedSpriteSheet * monFrontPics;
- const struct CompressedSpriteSheet * monBackPics;
- const struct SpritePalette * monNormalPalettes;
- const struct SpritePalette * monShinyPalettes;
- const u8 *const * monIcons;
+ const struct CompressedSpriteSheet *monFrontPics;
+ const struct CompressedSpriteSheet *monBackPics;
+ const struct SpritePalette *monNormalPalettes;
+ const struct SpritePalette *monShinyPalettes;
+ const u8 *const *monIcons;
const u8 *monIconPaletteIds;
- const struct SpritePalette * monIconPalettes;
- const u8 (* monSpeciesNames)[];
- const u8 (* moveNames)[];
- const struct Decoration * decorations;
+ const struct SpritePalette *monIconPalettes;
+ const u8 (*monSpeciesNames)[];
+ const u8 (*moveNames)[];
+ const struct Decoration *decorations;
u32 flagsOffset;
u32 varsOffset;
u32 pokedexOffset;
@@ -70,13 +70,13 @@ struct GFRomHeader
u32 externalEventFlagsOffset;
u32 externalEventDataOffset;
u32 unk18;
- const struct SpeciesInfo * speciesInfo;
- const u8 (* abilityNames)[];
- const u8 *const * abilityDescriptions;
- const struct Item * items;
- const struct MoveInfo * moves;
- const struct CompressedSpriteSheet * ballGfx;
- const struct SpritePalette * ballPalettes;
+ const struct SpeciesInfo *speciesInfo;
+ const u8 (*abilityNames)[];
+ const u8 *const *abilityDescriptions;
+ const struct Item *items;
+ const struct MoveInfo *moves;
+ const struct CompressedSpriteSheet *ballGfx;
+ const struct SpritePalette *ballPalettes;
u32 gcnLinkFlagsOffset;
u32 gameClearFlag;
u32 ribbonFlag;
diff --git a/src/rotating_gate.c b/src/rotating_gate.c
index 7215fb4c7b..9dee8c89b7 100644
--- a/src/rotating_gate.c
+++ b/src/rotating_gate.c
@@ -624,14 +624,14 @@ static EWRAM_DATA u8 sRotatingGate_PuzzleCount = 0;
static s32 GetCurrentMapRotatingGatePuzzleType(void)
{
- if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(FORTREE_CITY_GYM) &&
- gSaveBlock1Ptr->location.mapNum == MAP_NUM(FORTREE_CITY_GYM))
+ if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(MAP_FORTREE_CITY_GYM) &&
+ gSaveBlock1Ptr->location.mapNum == MAP_NUM(MAP_FORTREE_CITY_GYM))
{
return PUZZLE_FORTREE_CITY_GYM;
}
- if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(ROUTE110_TRICK_HOUSE_PUZZLE6) &&
- gSaveBlock1Ptr->location.mapNum == MAP_NUM(ROUTE110_TRICK_HOUSE_PUZZLE6))
+ if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(MAP_ROUTE110_TRICK_HOUSE_PUZZLE6) &&
+ gSaveBlock1Ptr->location.mapNum == MAP_NUM(MAP_ROUTE110_TRICK_HOUSE_PUZZLE6))
{
return PUZZLE_ROUTE110_TRICK_HOUSE_PUZZLE6;
}
diff --git a/src/rotating_tile_puzzle.c b/src/rotating_tile_puzzle.c
index 7581b81072..0eb58f9c1e 100644
--- a/src/rotating_tile_puzzle.c
+++ b/src/rotating_tile_puzzle.c
@@ -100,7 +100,7 @@ void FreeRotatingTilePuzzle(void)
TRY_FREE_AND_SET_NULL(sRotatingTilePuzzle);
- id = GetObjectEventIdByLocalIdAndMap(OBJ_EVENT_ID_PLAYER, 0, 0);
+ id = GetObjectEventIdByLocalIdAndMap(LOCALID_PLAYER, 0, 0);
ObjectEventClearHeldMovementIfFinished(&gObjectEvents[id]);
ScriptMovement_UnfreezeObjectEvents();
}
@@ -109,7 +109,7 @@ u16 MoveRotatingTileObjects(u8 puzzleNumber)
{
u8 i;
struct ObjectEventTemplate *objectEvents = gSaveBlock1Ptr->objectEventTemplates;
- u16 localId = 0;
+ u16 localId = LOCALID_NONE;
for (i = 0; i < OBJECT_EVENT_TEMPLATES_COUNT; i++)
{
diff --git a/src/rtc.c b/src/rtc.c
index a0d85b2701..34f84183cf 100644
--- a/src/rtc.c
+++ b/src/rtc.c
@@ -454,7 +454,7 @@ enum Weekday GetDayOfWeek(void)
return dateTime.dayOfWeek;
}
-
+
enum TimeOfDay TryIncrementTimeOfDay(enum TimeOfDay timeOfDay)
{
return timeOfDay == TIME_NIGHT ? TIME_MORNING : timeOfDay + 1;
diff --git a/src/save.c b/src/save.c
index 65e496b0d0..4e6c41b6f9 100644
--- a/src/save.c
+++ b/src/save.c
@@ -836,7 +836,7 @@ bool8 LinkFullSave_SetLastSectorSignature(void)
return FALSE;
}
-u8 WriteSaveBlock2(void)
+bool8 WriteSaveBlock2(void)
{
if (gFlashMemoryPresent != TRUE)
return TRUE;
@@ -920,7 +920,7 @@ u8 LoadGameSave(u8 saveType)
u16 GetSaveBlocksPointersBaseOffset(void)
{
u16 i, slotOffset;
- struct SaveSector* sector;
+ struct SaveSector *sector;
sector = gReadWriteSector = &gSaveDataBuffer;
if (gFlashMemoryPresent != TRUE)
diff --git a/src/scrcmd.c b/src/scrcmd.c
index 3c4307099b..87bc8e6298 100644
--- a/src/scrcmd.c
+++ b/src/scrcmd.c
@@ -83,7 +83,7 @@ static void DynamicMultichoiceSortList(struct ListMenuItem *items, u32 count);
// This is defined in here so the optimizer can't see its value when compiling
// script.c.
-void * const gNullScriptPtr = NULL;
+void *const gNullScriptPtr = NULL;
static const u8 sScriptConditionTable[6][3] =
{
@@ -907,7 +907,7 @@ bool8 ScrCmd_gettime(struct ScriptContext *ctx)
bool8 ScrCmd_gettimeofday(struct ScriptContext *ctx)
{
Script_RequestEffects(SCREFF_V1);
-
+
gSpecialVar_0x8000 = GetTimeOfDay();
return FALSE;
}
@@ -1016,7 +1016,7 @@ bool8 ScrCmd_warphole(struct ScriptContext *ctx)
Script_RequestEffects(SCREFF_V1 | SCREFF_SAVE | SCREFF_HARDWARE);
PlayerGetDestCoords(&x, &y);
- if (mapGroup == MAP_GROUP(UNDEFINED) && mapNum == MAP_NUM(UNDEFINED))
+ if (mapGroup == MAP_GROUP(MAP_UNDEFINED) && mapNum == MAP_NUM(MAP_UNDEFINED))
SetWarpDestinationToFixedHoleWarp(x - MAP_OFFSET, y - MAP_OFFSET);
else
SetWarpDestination(mapGroup, mapNum, WARP_ID_NONE, x - MAP_OFFSET, y - MAP_OFFSET);
@@ -1343,7 +1343,7 @@ bool8 ScrCmd_waitmovement(struct ScriptContext *ctx)
Script_RequestEffects(SCREFF_V1 | SCREFF_HARDWARE);
- if (localId != 0)
+ if (localId != LOCALID_NONE)
sMovingNpcId = localId;
sMovingNpcMapGroup = gSaveBlock1Ptr->location.mapGroup;
sMovingNpcMapNum = gSaveBlock1Ptr->location.mapNum;
@@ -1359,7 +1359,7 @@ bool8 ScrCmd_waitmovementat(struct ScriptContext *ctx)
Script_RequestEffects(SCREFF_V1 | SCREFF_HARDWARE);
- if (localId != 0)
+ if (localId != LOCALID_NONE)
sMovingNpcId = localId;
mapGroup = ScriptReadByte(ctx);
mapNum = ScriptReadByte(ctx);
@@ -1421,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;
}
@@ -1639,7 +1643,7 @@ bool8 ScrCmd_releaseall(struct ScriptContext *ctx)
ClearObjectEventMovement(followerObject, &gSprites[followerObject->spriteId]);
HideFieldMessageBox();
- playerObjectId = GetObjectEventIdByLocalIdAndMap(OBJ_EVENT_ID_PLAYER, 0, 0);
+ playerObjectId = GetObjectEventIdByLocalIdAndMap(LOCALID_PLAYER, 0, 0);
ObjectEventClearHeldMovementIfFinished(&gObjectEvents[playerObjectId]);
ScriptMovement_UnfreezeObjectEvents();
UnfreezeObjectEvents();
@@ -1660,7 +1664,7 @@ bool8 ScrCmd_release(struct ScriptContext *ctx)
HideFieldMessageBox();
if (gObjectEvents[gSelectedObjectEvent].active)
ObjectEventClearHeldMovementIfFinished(&gObjectEvents[gSelectedObjectEvent]);
- playerObjectId = GetObjectEventIdByLocalIdAndMap(OBJ_EVENT_ID_PLAYER, 0, 0);
+ playerObjectId = GetObjectEventIdByLocalIdAndMap(LOCALID_PLAYER, 0, 0);
ObjectEventClearHeldMovementIfFinished(&gObjectEvents[playerObjectId]);
ScriptMovement_UnfreezeObjectEvents();
UnfreezeObjectEvents();
@@ -2170,11 +2174,11 @@ bool8 ScrCmd_bufferdecorationname(struct ScriptContext *ctx)
bool8 ScrCmd_buffermovename(struct ScriptContext *ctx)
{
u8 stringVarIndex = ScriptReadByte(ctx);
- u16 moveId = VarGet(ScriptReadHalfword(ctx));
+ u16 move = VarGet(ScriptReadHalfword(ctx));
Script_RequestEffects(SCREFF_V1);
- StringCopy(sScriptStringVars[stringVarIndex], GetMoveName(moveId));
+ StringCopy(sScriptStringVars[stringVarIndex], GetMoveName(move));
return FALSE;
}
@@ -2282,7 +2286,7 @@ bool8 ScrCmd_setmonmove(struct ScriptContext *ctx)
bool8 ScrCmd_checkpartymove(struct ScriptContext *ctx)
{
u8 i;
- u16 moveId = ScriptReadHalfword(ctx);
+ u16 move = ScriptReadHalfword(ctx);
Script_RequestEffects(SCREFF_V1);
@@ -2292,7 +2296,7 @@ bool8 ScrCmd_checkpartymove(struct ScriptContext *ctx)
u16 species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES, NULL);
if (!species)
break;
- if (!GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG) && MonKnowsMove(&gPlayerParty[i], moveId) == TRUE)
+ if (!GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG) && MonKnowsMove(&gPlayerParty[i], move) == TRUE)
{
gSpecialVar_Result = i;
gSpecialVar_0x8004 = species;
@@ -2421,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;
@@ -2573,10 +2577,7 @@ bool8 ScrCmd_setberrytree(struct ScriptContext *ctx)
Script_RequestEffects(SCREFF_V1 | SCREFF_SAVE);
- if (berry == 0)
- PlantBerryTree(treeId, berry, growthStage, FALSE);
- else
- PlantBerryTree(treeId, berry, growthStage, FALSE);
+ PlantBerryTree(treeId, berry, growthStage, FALSE);
return FALSE;
}
@@ -3173,7 +3174,7 @@ bool8 ScrCmd_addtime(struct ScriptContext *ctx)
u32 minutes = ScriptReadWord(ctx);
Script_RequestEffects(SCREFF_V1 | SCREFF_SAVE);
-
+
FakeRtc_AdvanceTimeBy(days, hours, minutes, 0);
return FALSE;
@@ -3184,7 +3185,7 @@ bool8 ScrCmd_adddays(struct ScriptContext *ctx)
u32 days = ScriptReadWord(ctx);
Script_RequestEffects(SCREFF_V1 | SCREFF_SAVE);
-
+
FakeRtc_AdvanceTimeBy(days, 0, 0, 0);
return FALSE;
@@ -3195,7 +3196,7 @@ bool8 ScrCmd_addhours(struct ScriptContext *ctx)
u32 hours = ScriptReadWord(ctx);
Script_RequestEffects(SCREFF_V1 | SCREFF_SAVE);
-
+
FakeRtc_AdvanceTimeBy(0, hours, 0, 0);
return FALSE;
@@ -3206,7 +3207,7 @@ bool8 ScrCmd_addminutes(struct ScriptContext *ctx)
u32 minutes = ScriptReadWord(ctx);
Script_RequestEffects(SCREFF_V1 | SCREFF_SAVE);
-
+
FakeRtc_AdvanceTimeBy(0, 0, minutes, 0);
return FALSE;
@@ -3218,7 +3219,7 @@ bool8 ScrCmd_fwdtime(struct ScriptContext *ctx)
u32 minutes = ScriptReadWord(ctx);
Script_RequestEffects(SCREFF_V1 | SCREFF_SAVE);
-
+
FakeRtc_ForwardTimeTo(hours, minutes, 0);
return FALSE;
@@ -3227,12 +3228,12 @@ bool8 ScrCmd_fwdtime(struct ScriptContext *ctx)
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;
}
diff --git a/src/script.c b/src/script.c
index 96a33acd05..3a0c7c7afd 100644
--- a/src/script.c
+++ b/src/script.c
@@ -35,7 +35,7 @@ EWRAM_DATA u8 gMsgBoxIsCancelable = FALSE;
extern ScrCmdFunc gScriptCmdTable[];
extern ScrCmdFunc gScriptCmdTableEnd[];
-extern void * const gNullScriptPtr;
+extern void *const gNullScriptPtr;
void InitScriptContext(struct ScriptContext *ctx, void *cmdTable, void *cmdTableEnd)
{
@@ -416,7 +416,7 @@ void ClearRamScript(void)
#endif //FREE_MYSTERY_EVENT_BUFFERS
}
-bool8 InitRamScript(const u8 *script, u16 scriptSize, u8 mapGroup, u8 mapNum, u8 objectId)
+bool8 InitRamScript(const u8 *script, u16 scriptSize, u8 mapGroup, u8 mapNum, u8 localId)
{
#if FREE_MYSTERY_EVENT_BUFFERS == FALSE
struct RamScriptData *scriptData = &gSaveBlock1Ptr->ramScript.data;
@@ -429,7 +429,7 @@ bool8 InitRamScript(const u8 *script, u16 scriptSize, u8 mapGroup, u8 mapNum, u8
scriptData->magic = RAM_SCRIPT_MAGIC;
scriptData->mapGroup = mapGroup;
scriptData->mapNum = mapNum;
- scriptData->objectId = objectId;
+ scriptData->localId = localId;
memcpy(scriptData->script, script, scriptSize);
gSaveBlock1Ptr->ramScript.checksum = CalculateRamScriptChecksum();
return TRUE;
@@ -438,7 +438,7 @@ bool8 InitRamScript(const u8 *script, u16 scriptSize, u8 mapGroup, u8 mapNum, u8
#endif //FREE_MYSTERY_EVENT_BUFFERS
}
-const u8 *GetRamScript(u8 objectId, const u8 *script)
+const u8 *GetRamScript(u8 localId, const u8 *script)
{
#if FREE_MYSTERY_EVENT_BUFFERS == FALSE
struct RamScriptData *scriptData = &gSaveBlock1Ptr->ramScript.data;
@@ -449,7 +449,7 @@ const u8 *GetRamScript(u8 objectId, const u8 *script)
return script;
if (scriptData->mapNum != gSaveBlock1Ptr->location.mapNum)
return script;
- if (scriptData->objectId != objectId)
+ if (scriptData->localId != localId)
return script;
if (CalculateRamScriptChecksum() != gSaveBlock1Ptr->ramScript.checksum)
{
@@ -466,7 +466,7 @@ const u8 *GetRamScript(u8 objectId, const u8 *script)
#endif //FREE_MYSTERY_EVENT_BUFFERS
}
-#define NO_OBJECT OBJ_EVENT_ID_PLAYER
+#define NO_OBJECT LOCALID_PLAYER
bool32 ValidateSavedRamScript(void)
{
@@ -474,11 +474,11 @@ bool32 ValidateSavedRamScript(void)
struct RamScriptData *scriptData = &gSaveBlock1Ptr->ramScript.data;
if (scriptData->magic != RAM_SCRIPT_MAGIC)
return FALSE;
- if (scriptData->mapGroup != MAP_GROUP(UNDEFINED))
+ if (scriptData->mapGroup != MAP_GROUP(MAP_UNDEFINED))
return FALSE;
- if (scriptData->mapNum != MAP_NUM(UNDEFINED))
+ if (scriptData->mapNum != MAP_NUM(MAP_UNDEFINED))
return FALSE;
- if (scriptData->objectId != NO_OBJECT)
+ if (scriptData->localId != NO_OBJECT)
return FALSE;
if (CalculateRamScriptChecksum() != gSaveBlock1Ptr->ramScript.checksum)
return FALSE;
@@ -496,11 +496,11 @@ u8 *GetSavedRamScriptIfValid(void)
return NULL;
if (scriptData->magic != RAM_SCRIPT_MAGIC)
return NULL;
- if (scriptData->mapGroup != MAP_GROUP(UNDEFINED))
+ if (scriptData->mapGroup != MAP_GROUP(MAP_UNDEFINED))
return NULL;
- if (scriptData->mapNum != MAP_NUM(UNDEFINED))
+ if (scriptData->mapNum != MAP_NUM(MAP_UNDEFINED))
return NULL;
- if (scriptData->objectId != NO_OBJECT)
+ if (scriptData->localId != NO_OBJECT)
return NULL;
if (CalculateRamScriptChecksum() != gSaveBlock1Ptr->ramScript.checksum)
{
@@ -521,7 +521,7 @@ void InitRamScript_NoObjectEvent(u8 *script, u16 scriptSize)
#if FREE_MYSTERY_EVENT_BUFFERS == FALSE
if (scriptSize > sizeof(gSaveBlock1Ptr->ramScript.data.script))
scriptSize = sizeof(gSaveBlock1Ptr->ramScript.data.script);
- InitRamScript(script, scriptSize, MAP_GROUP(UNDEFINED), MAP_NUM(UNDEFINED), NO_OBJECT);
+ InitRamScript(script, scriptSize, MAP_GROUP(MAP_UNDEFINED), MAP_NUM(MAP_UNDEFINED), NO_OBJECT);
#endif //FREE_MYSTERY_EVENT_BUFFERS
}
diff --git a/src/script_movement.c b/src/script_movement.c
index 80d9b323f6..bcf3dd1c84 100644
--- a/src/script_movement.c
+++ b/src/script_movement.c
@@ -90,7 +90,7 @@ static bool8 ScriptMovement_TryAddNewMovement(u8 taskId, u8 objEventId, const u8
return FALSE;
}
}
- moveScrId = GetMovementScriptIdFromObjectEventId(taskId, OBJ_EVENT_ID_PLAYER);
+ moveScrId = GetMovementScriptIdFromObjectEventId(taskId, LOCALID_PLAYER);
if (moveScrId == OBJECT_EVENTS_COUNT)
{
return TRUE;
diff --git a/src/secret_base.c b/src/secret_base.c
index d4dc43c5bd..de0825b91e 100644
--- a/src/secret_base.c
+++ b/src/secret_base.c
@@ -110,30 +110,30 @@ static const struct SecretBaseEntranceMetatiles sSecretBaseEntranceMetatiles[] =
// x, y positions are for when the player warps in for the first time (in front of the computer)
static const u8 sSecretBaseEntrancePositions[NUM_SECRET_BASE_GROUPS * 4] =
{
- [SECRET_BASE_RED_CAVE1] = MAP_NUM(SECRET_BASE_RED_CAVE1), 0, 1, 3,
- [SECRET_BASE_RED_CAVE2] = MAP_NUM(SECRET_BASE_RED_CAVE2), 0, 5, 9,
- [SECRET_BASE_RED_CAVE3] = MAP_NUM(SECRET_BASE_RED_CAVE3), 0, 1, 3,
- [SECRET_BASE_RED_CAVE4] = MAP_NUM(SECRET_BASE_RED_CAVE4), 0, 7, 13,
- [SECRET_BASE_BROWN_CAVE1] = MAP_NUM(SECRET_BASE_BROWN_CAVE1), 0, 2, 3,
- [SECRET_BASE_BROWN_CAVE2] = MAP_NUM(SECRET_BASE_BROWN_CAVE2), 0, 9, 2,
- [SECRET_BASE_BROWN_CAVE3] = MAP_NUM(SECRET_BASE_BROWN_CAVE3), 0, 13, 4,
- [SECRET_BASE_BROWN_CAVE4] = MAP_NUM(SECRET_BASE_BROWN_CAVE4), 0, 1, 2,
- [SECRET_BASE_BLUE_CAVE1] = MAP_NUM(SECRET_BASE_BLUE_CAVE1), 0, 1, 3,
- [SECRET_BASE_BLUE_CAVE2] = MAP_NUM(SECRET_BASE_BLUE_CAVE2), 0, 1, 2,
- [SECRET_BASE_BLUE_CAVE3] = MAP_NUM(SECRET_BASE_BLUE_CAVE3), 0, 3, 15,
- [SECRET_BASE_BLUE_CAVE4] = MAP_NUM(SECRET_BASE_BLUE_CAVE4), 0, 3, 14,
- [SECRET_BASE_YELLOW_CAVE1] = MAP_NUM(SECRET_BASE_YELLOW_CAVE1), 0, 9, 3,
- [SECRET_BASE_YELLOW_CAVE2] = MAP_NUM(SECRET_BASE_YELLOW_CAVE2), 0, 8, 7,
- [SECRET_BASE_YELLOW_CAVE3] = MAP_NUM(SECRET_BASE_YELLOW_CAVE3), 0, 3, 6,
- [SECRET_BASE_YELLOW_CAVE4] = MAP_NUM(SECRET_BASE_YELLOW_CAVE4), 0, 5, 9,
- [SECRET_BASE_TREE1] = MAP_NUM(SECRET_BASE_TREE1), 0, 2, 3,
- [SECRET_BASE_TREE2] = MAP_NUM(SECRET_BASE_TREE2), 0, 5, 6,
- [SECRET_BASE_TREE3] = MAP_NUM(SECRET_BASE_TREE3), 0, 15, 3,
- [SECRET_BASE_TREE4] = MAP_NUM(SECRET_BASE_TREE4), 0, 4, 10,
- [SECRET_BASE_SHRUB1] = MAP_NUM(SECRET_BASE_SHRUB1), 0, 3, 3,
- [SECRET_BASE_SHRUB2] = MAP_NUM(SECRET_BASE_SHRUB2), 0, 1, 2,
- [SECRET_BASE_SHRUB3] = MAP_NUM(SECRET_BASE_SHRUB3), 0, 7, 8,
- [SECRET_BASE_SHRUB4] = MAP_NUM(SECRET_BASE_SHRUB4), 0, 9, 6,
+ [SECRET_BASE_RED_CAVE1] = MAP_NUM(MAP_SECRET_BASE_RED_CAVE1), 0, 1, 3,
+ [SECRET_BASE_RED_CAVE2] = MAP_NUM(MAP_SECRET_BASE_RED_CAVE2), 0, 5, 9,
+ [SECRET_BASE_RED_CAVE3] = MAP_NUM(MAP_SECRET_BASE_RED_CAVE3), 0, 1, 3,
+ [SECRET_BASE_RED_CAVE4] = MAP_NUM(MAP_SECRET_BASE_RED_CAVE4), 0, 7, 13,
+ [SECRET_BASE_BROWN_CAVE1] = MAP_NUM(MAP_SECRET_BASE_BROWN_CAVE1), 0, 2, 3,
+ [SECRET_BASE_BROWN_CAVE2] = MAP_NUM(MAP_SECRET_BASE_BROWN_CAVE2), 0, 9, 2,
+ [SECRET_BASE_BROWN_CAVE3] = MAP_NUM(MAP_SECRET_BASE_BROWN_CAVE3), 0, 13, 4,
+ [SECRET_BASE_BROWN_CAVE4] = MAP_NUM(MAP_SECRET_BASE_BROWN_CAVE4), 0, 1, 2,
+ [SECRET_BASE_BLUE_CAVE1] = MAP_NUM(MAP_SECRET_BASE_BLUE_CAVE1), 0, 1, 3,
+ [SECRET_BASE_BLUE_CAVE2] = MAP_NUM(MAP_SECRET_BASE_BLUE_CAVE2), 0, 1, 2,
+ [SECRET_BASE_BLUE_CAVE3] = MAP_NUM(MAP_SECRET_BASE_BLUE_CAVE3), 0, 3, 15,
+ [SECRET_BASE_BLUE_CAVE4] = MAP_NUM(MAP_SECRET_BASE_BLUE_CAVE4), 0, 3, 14,
+ [SECRET_BASE_YELLOW_CAVE1] = MAP_NUM(MAP_SECRET_BASE_YELLOW_CAVE1), 0, 9, 3,
+ [SECRET_BASE_YELLOW_CAVE2] = MAP_NUM(MAP_SECRET_BASE_YELLOW_CAVE2), 0, 8, 7,
+ [SECRET_BASE_YELLOW_CAVE3] = MAP_NUM(MAP_SECRET_BASE_YELLOW_CAVE3), 0, 3, 6,
+ [SECRET_BASE_YELLOW_CAVE4] = MAP_NUM(MAP_SECRET_BASE_YELLOW_CAVE4), 0, 5, 9,
+ [SECRET_BASE_TREE1] = MAP_NUM(MAP_SECRET_BASE_TREE1), 0, 2, 3,
+ [SECRET_BASE_TREE2] = MAP_NUM(MAP_SECRET_BASE_TREE2), 0, 5, 6,
+ [SECRET_BASE_TREE3] = MAP_NUM(MAP_SECRET_BASE_TREE3), 0, 15, 3,
+ [SECRET_BASE_TREE4] = MAP_NUM(MAP_SECRET_BASE_TREE4), 0, 4, 10,
+ [SECRET_BASE_SHRUB1] = MAP_NUM(MAP_SECRET_BASE_SHRUB1), 0, 3, 3,
+ [SECRET_BASE_SHRUB2] = MAP_NUM(MAP_SECRET_BASE_SHRUB2), 0, 1, 2,
+ [SECRET_BASE_SHRUB3] = MAP_NUM(MAP_SECRET_BASE_SHRUB3), 0, 7, 8,
+ [SECRET_BASE_SHRUB4] = MAP_NUM(MAP_SECRET_BASE_SHRUB4), 0, 9, 6,
};
#define GET_BASE_MAP_NUM(group) (sSecretBaseEntrancePositions[(group) + 0])
@@ -412,7 +412,7 @@ void SetOccupiedSecretBaseEntranceMetatiles(struct MapEvents const *events)
static void SetSecretBaseWarpDestination(void)
{
s8 secretBaseGroup = SECRET_BASE_ID_TO_GROUP(sCurSecretBaseId);
- SetWarpDestinationToMapWarp(MAP_GROUP(SECRET_BASE_RED_CAVE1), GET_BASE_MAP_NUM(secretBaseGroup), GET_BASE_WARP_ID(secretBaseGroup));
+ SetWarpDestinationToMapWarp(MAP_GROUP(MAP_SECRET_BASE_RED_CAVE1), GET_BASE_MAP_NUM(secretBaseGroup), GET_BASE_WARP_ID(secretBaseGroup));
}
#define tState data[0]
@@ -509,8 +509,8 @@ void EnterNewlyCreatedSecretBase(void)
bool8 CurMapIsSecretBase(void)
{
- if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(SECRET_BASE_RED_CAVE1)
- && (u8)gSaveBlock1Ptr->location.mapNum <= MAP_NUM(SECRET_BASE_SHRUB4))
+ if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(MAP_SECRET_BASE_RED_CAVE1)
+ && (u8)gSaveBlock1Ptr->location.mapNum <= MAP_NUM(MAP_SECRET_BASE_SHRUB4))
return TRUE;
else
return FALSE;
@@ -771,7 +771,7 @@ static u8 GetAverageEVs(struct Pokemon *pokemon)
void SetPlayerSecretBaseParty(void)
{
u16 i;
- u16 moveIdx;
+ u16 moveIndex;
u16 partyId;
struct SecretBaseParty *party;
@@ -781,8 +781,8 @@ void SetPlayerSecretBaseParty(void)
{
for (i = 0; i < PARTY_SIZE; i++)
{
- for (moveIdx = 0; moveIdx < MAX_MON_MOVES; moveIdx++)
- party->moves[i * MAX_MON_MOVES + moveIdx] = MOVE_NONE;
+ for (moveIndex = 0; moveIndex < MAX_MON_MOVES; moveIndex++)
+ party->moves[i * MAX_MON_MOVES + moveIndex] = MOVE_NONE;
party->species[i] = SPECIES_NONE;
party->heldItems[i] = ITEM_NONE;
@@ -793,8 +793,8 @@ void SetPlayerSecretBaseParty(void)
if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) != SPECIES_NONE
&& !GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG))
{
- for (moveIdx = 0; moveIdx < MAX_MON_MOVES; moveIdx++)
- party->moves[partyId * MAX_MON_MOVES + moveIdx] = GetMonData(&gPlayerParty[i], MON_DATA_MOVE1 + moveIdx);
+ for (moveIndex = 0; moveIndex < MAX_MON_MOVES; moveIndex++)
+ party->moves[partyId * MAX_MON_MOVES + moveIndex] = GetMonData(&gPlayerParty[i], MON_DATA_MOVE1 + moveIndex);
party->species[partyId] = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES);
party->heldItems[partyId] = GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM);
diff --git a/src/shop.c b/src/shop.c
index bc9a4c0006..ac8a01a9b4 100644
--- a/src/shop.c
+++ b/src/shop.c
@@ -372,7 +372,7 @@ static u8 CreateShopMenu(u8 martType)
return CreateTask(Task_ShopMenu, 8);
}
-static void SetShopMenuCallback(void (* callback)(void))
+static void SetShopMenuCallback(void (*callback)(void))
{
sMartInfo.callback = callback;
}
@@ -606,7 +606,7 @@ static void BuyMenuPrintItemDescriptionAndShowItemIcon(s32 item, bool8 onInit, s
if (item != LIST_CANCEL)
{
if (sMartInfo.martType == MART_TYPE_NORMAL)
- description = ItemId_GetDescription(item);
+ description = GetItemDescription(item);
else
description = gDecorations[item].description;
}
@@ -629,7 +629,7 @@ static void BuyMenuPrintPriceInList(u8 windowId, u32 itemId, u8 y)
{
ConvertIntToDecimalStringN(
gStringVar1,
- ItemId_GetPrice(itemId) >> IsPokeNewsActive(POKENEWS_SLATEPORT),
+ GetItemPrice(itemId) >> IsPokeNewsActive(POKENEWS_SLATEPORT),
STR_CONV_MODE_LEFT_ALIGN,
6);
}
@@ -642,7 +642,7 @@ static void BuyMenuPrintPriceInList(u8 windowId, u32 itemId, u8 y)
6);
}
- if (ItemId_GetImportance(itemId) && (CheckBagHasItem(itemId, 1) || CheckPCHasItem(itemId, 1)))
+ if (GetItemImportance(itemId) && (CheckBagHasItem(itemId, 1) || CheckPCHasItem(itemId, 1)))
StringCopy(gStringVar4, gText_SoldOut);
else
StringExpandPlaceholders(gStringVar4, gText_PokedollarVar1);
@@ -1000,11 +1000,11 @@ static void Task_BuyMenu(u8 taskId)
BuyMenuPrintCursor(tListTaskId, COLORID_GRAY_CURSOR);
if (sMartInfo.martType == MART_TYPE_NORMAL)
- sShopData->totalCost = (ItemId_GetPrice(itemId) >> IsPokeNewsActive(POKENEWS_SLATEPORT));
+ sShopData->totalCost = (GetItemPrice(itemId) >> IsPokeNewsActive(POKENEWS_SLATEPORT));
else
sShopData->totalCost = gDecorations[itemId].price;
- if (ItemId_GetImportance(itemId) && (CheckBagHasItem(itemId, 1) || CheckPCHasItem(itemId, 1)))
+ if (GetItemImportance(itemId) && (CheckBagHasItem(itemId, 1) || CheckPCHasItem(itemId, 1)))
BuyMenuDisplayMessage(taskId, gText_ThatItemIsSoldOut, BuyMenuReturnToItemList);
else if (!IsEnoughMoney(&gSaveBlock1Ptr->money, sShopData->totalCost))
{
@@ -1015,15 +1015,15 @@ static void Task_BuyMenu(u8 taskId)
if (sMartInfo.martType == MART_TYPE_NORMAL)
{
CopyItemName(itemId, gStringVar1);
- if (ItemId_GetImportance(itemId))
+ if (GetItemImportance(itemId))
{
ConvertIntToDecimalStringN(gStringVar2, sShopData->totalCost, STR_CONV_MODE_LEFT_ALIGN, 6);
StringExpandPlaceholders(gStringVar4, gText_YouWantedVar1ThatllBeVar2);
tItemCount = 1;
- sShopData->totalCost = (ItemId_GetPrice(tItemId) >> IsPokeNewsActive(POKENEWS_SLATEPORT)) * tItemCount;
+ sShopData->totalCost = (GetItemPrice(tItemId) >> IsPokeNewsActive(POKENEWS_SLATEPORT)) * tItemCount;
BuyMenuDisplayMessage(taskId, gStringVar4, BuyMenuConfirmPurchase);
}
- else if (ItemId_GetPocket(itemId) == POCKET_TM_HM)
+ else if (GetItemPocket(itemId) == POCKET_TM_HM)
{
StringCopy(gStringVar2, GetMoveName(ItemIdToBattleMoveId(itemId)));
BuyMenuDisplayMessage(taskId, gText_Var1CertainlyHowMany2, Task_BuyHowManyDialogueInit);
@@ -1087,7 +1087,7 @@ static void Task_BuyHowManyDialogueHandleInput(u8 taskId)
if (AdjustQuantityAccordingToDPadInput(&tItemCount, sShopData->maxQuantity) == TRUE)
{
- sShopData->totalCost = (ItemId_GetPrice(tItemId) >> IsPokeNewsActive(POKENEWS_SLATEPORT)) * tItemCount;
+ sShopData->totalCost = (GetItemPrice(tItemId) >> IsPokeNewsActive(POKENEWS_SLATEPORT)) * tItemCount;
BuyMenuPrintItemQuantityAndPrice(taskId);
}
else
@@ -1179,7 +1179,7 @@ static void Task_ReturnToItemListAfterItemPurchase(u8 taskId)
u16 premierBallsToAdd = tItemCount / 10;
if (premierBallsToAdd >= 1
&& ((I_PREMIER_BALL_BONUS <= GEN_7 && tItemId == ITEM_POKE_BALL)
- || (I_PREMIER_BALL_BONUS >= GEN_8 && (ItemId_GetPocket(tItemId) == POCKET_POKE_BALLS))))
+ || (I_PREMIER_BALL_BONUS >= GEN_8 && (GetItemPocket(tItemId) == POCKET_POKE_BALLS))))
{
u32 spaceAvailable = GetFreeSpaceForItemInBag(ITEM_PREMIER_BALL);
if (spaceAvailable < premierBallsToAdd)
diff --git a/src/sound.c b/src/sound.c
index 9a67f2c21b..5b4ae29f71 100644
--- a/src/sound.c
+++ b/src/sound.c
@@ -16,7 +16,7 @@ struct Fanfare
u16 duration;
};
-EWRAM_DATA struct MusicPlayerInfo* gMPlay_PokemonCry = NULL;
+EWRAM_DATA struct MusicPlayerInfo *gMPlay_PokemonCry = NULL;
EWRAM_DATA u8 gPokemonCryBGMDuckingCounter = 0;
static u16 sCurrentMapMusic;
diff --git a/src/sprays.c b/src/sprays.c
index b553d125ac..1a57e3fe26 100644
--- a/src/sprays.c
+++ b/src/sprays.c
@@ -86,7 +86,7 @@ void DrawSprayMenu(void)
if (!CheckBagHasItem(currentSpray, 1))
continue;
- menuItems[count].text = ItemId_GetName(currentSpray);
+ menuItems[count].text = GetItemName(currentSpray);
VarSet(LOCAL_VAR_SPRAY_CONST + count, currentSpray);
if (VAR_LAST_REPEL_LURE_USED != 0)
@@ -109,7 +109,7 @@ void HandleSprayMenuChoice(void)
LOCAL_VAR_SPRAY = VarGet(LOCAL_VAR_SPRAY_CONST + gSpecialVar_Result);
- VarSet(VAR_REPEL_STEP_COUNT, ItemId_GetHoldEffectParam(LOCAL_VAR_SPRAY) | lureMask);
+ VarSet(VAR_REPEL_STEP_COUNT, GetItemHoldEffectParam(LOCAL_VAR_SPRAY) | lureMask);
if (VAR_LAST_REPEL_LURE_USED != 0)
VarSet(VAR_LAST_REPEL_LURE_USED, LOCAL_VAR_SPRAY);
diff --git a/src/sprite.c b/src/sprite.c
index 1e6a8f4c35..8367881e7d 100644
--- a/src/sprite.c
+++ b/src/sprite.c
@@ -115,8 +115,8 @@ typedef void (*AffineAnimCmdFunc)(u8 matrixNum, struct Sprite *);
#define AFFINE_ANIM_END 0x7FFF
// forward declarations
-const union AnimCmd * const gDummySpriteAnimTable[];
-const union AffineAnimCmd * const gDummySpriteAffineAnimTable[];
+const union AnimCmd *const gDummySpriteAnimTable[];
+const union AffineAnimCmd *const gDummySpriteAffineAnimTable[];
const struct SpriteTemplate gDummySpriteTemplate;
static const u8 sCenterToCornerVecTable[3][4][2] =
@@ -157,11 +157,11 @@ const struct OamData gDummyOamData = DUMMY_OAM_DATA;
static const union AnimCmd sDummyAnim = { ANIM_END };
-const union AnimCmd * const gDummySpriteAnimTable[] = { &sDummyAnim };
+const union AnimCmd *const gDummySpriteAnimTable[] = { &sDummyAnim };
static const union AffineAnimCmd sDummyAffineAnim = { AFFINE_ANIM_END };
-const union AffineAnimCmd * const gDummySpriteAffineAnimTable[] = { &sDummyAffineAnim };
+const union AffineAnimCmd *const gDummySpriteAffineAnimTable[] = { &sDummyAffineAnim };
const struct SpriteTemplate gDummySpriteTemplate =
{
diff --git a/src/starter_choose.c b/src/starter_choose.c
index 01b6600053..7eaff8254d 100644
--- a/src/starter_choose.c
+++ b/src/starter_choose.c
@@ -248,18 +248,18 @@ static const union AnimCmd sAnim_StarterCircle[] =
ANIMCMD_END,
};
-static const union AnimCmd * const sAnims_Hand[] =
+static const union AnimCmd *const sAnims_Hand[] =
{
sAnim_Hand,
};
-static const union AnimCmd * const sAnims_Pokeball[] =
+static const union AnimCmd *const sAnims_Pokeball[] =
{
sAnim_Pokeball_Still,
sAnim_Pokeball_Moving,
};
-static const union AnimCmd * const sAnims_StarterCircle[] =
+static const union AnimCmd *const sAnims_StarterCircle[] =
{
sAnim_StarterCircle,
};
@@ -278,8 +278,8 @@ static const union AffineAnimCmd sAffineAnim_StarterCircle[] =
AFFINEANIMCMD_END,
};
-static const union AffineAnimCmd * const sAffineAnims_StarterPokemon = {sAffineAnim_StarterPokemon};
-static const union AffineAnimCmd * const sAffineAnims_StarterCircle[] = {sAffineAnim_StarterCircle};
+static const union AffineAnimCmd *const sAffineAnims_StarterPokemon = {sAffineAnim_StarterPokemon};
+static const union AffineAnimCmd *const sAffineAnims_StarterCircle[] = {sAffineAnim_StarterCircle};
static const struct CompressedSpriteSheet sSpriteSheet_PokeballSelect[] =
{
diff --git a/src/trader.c b/src/trader.c
index 48ce5d2681..2e427e6f04 100644
--- a/src/trader.c
+++ b/src/trader.c
@@ -58,7 +58,7 @@ void Trader_ResetFlag(void)
void CreateAvailableDecorationsMenu(u8 taskId)
{
u8 i;
- s16 * data = gTasks[taskId].data;
+ s16 *data = gTasks[taskId].data;
struct MauvilleOldManTrader *trader = &gSaveBlock1Ptr->oldMan.trader;
struct WindowTemplate windowTemplate = {
.bg = 0,
@@ -98,7 +98,7 @@ void CreateAvailableDecorationsMenu(u8 taskId)
void Task_BufferDecorSelectionAndCloseWindow(u8 taskId, u8 decorationId)
{
- s16 * data = gTasks[taskId].data;
+ s16 *data = gTasks[taskId].data;
if (decorationId > NUM_DECORATIONS)
gSpecialVar_0x8004 = 0xFFFF;
else
diff --git a/src/trainer_hill.c b/src/trainer_hill.c
index 344e1fa215..3b2b74e1ab 100644
--- a/src/trainer_hill.c
+++ b/src/trainer_hill.c
@@ -229,7 +229,7 @@ static const u8 *const sFloorStrings[] =
gText_TrainerHill4F,
};
-static void (* const sHillFunctions[])(void) =
+static void (*const sHillFunctions[])(void) =
{
[TRAINER_HILL_FUNC_START] = TrainerHillStartChallenge,
[TRAINER_HILL_FUNC_GET_OWNER_STATE] = GetOwnerState,
@@ -271,10 +271,10 @@ static const struct ObjectEventTemplate sTrainerObjectEventTemplate =
static const u32 sNextFloorMapNum[NUM_TRAINER_HILL_FLOORS] =
{
- [TRAINER_HILL_1F - 1] = MAP_NUM(TRAINER_HILL_2F),
- [TRAINER_HILL_2F - 1] = MAP_NUM(TRAINER_HILL_3F),
- [TRAINER_HILL_3F - 1] = MAP_NUM(TRAINER_HILL_4F),
- [TRAINER_HILL_4F - 1] = MAP_NUM(TRAINER_HILL_ROOF)
+ [TRAINER_HILL_1F - 1] = MAP_NUM(MAP_TRAINER_HILL_2F),
+ [TRAINER_HILL_2F - 1] = MAP_NUM(MAP_TRAINER_HILL_3F),
+ [TRAINER_HILL_3F - 1] = MAP_NUM(MAP_TRAINER_HILL_4F),
+ [TRAINER_HILL_4F - 1] = MAP_NUM(MAP_TRAINER_HILL_ROOF)
};
static const u8 sTrainerPartySlots[HILL_TRAINERS_PER_FLOOR][PARTY_SIZE / 2] =
{
@@ -380,13 +380,13 @@ static void FreeDataStruct(void)
TRY_FREE_AND_SET_NULL(sHillData);
}
-void CopyTrainerHillTrainerText(u8 which, u16 trainerId)
+void CopyTrainerHillTrainerText(u8 which, u16 localId)
{
u8 id, floorId;
SetUpDataStruct();
floorId = GetFloorId();
- id = trainerId - 1;
+ id = localId - 1;
switch (which)
{
@@ -821,7 +821,7 @@ static bool32 UNUSED OnTrainerHillRoof(void)
const struct WarpEvent* SetWarpDestinationTrainerHill4F(void)
{
- const struct MapHeader *header = Overworld_GetMapHeaderByGroupAndId(MAP_GROUP(TRAINER_HILL_4F), MAP_NUM(TRAINER_HILL_4F));
+ const struct MapHeader *header = Overworld_GetMapHeaderByGroupAndId(MAP_GROUP(MAP_TRAINER_HILL_4F), MAP_NUM(MAP_TRAINER_HILL_4F));
return &header->events->warps[1];
}
@@ -840,7 +840,7 @@ const struct WarpEvent* SetWarpDestinationTrainerHillFinalFloor(u8 warpEventId)
if (numFloors == 0 || numFloors > NUM_TRAINER_HILL_FLOORS)
numFloors = NUM_TRAINER_HILL_FLOORS;
- header = Overworld_GetMapHeaderByGroupAndId(MAP_GROUP(TRAINER_HILL_4F), sNextFloorMapNum[numFloors - 1]);
+ header = Overworld_GetMapHeaderByGroupAndId(MAP_GROUP(MAP_TRAINER_HILL_4F), sNextFloorMapNum[numFloors - 1]);
return &header->events->warps[0];
}
diff --git a/src/trainer_see.c b/src/trainer_see.c
index d743706dc4..0a3b68f8c2 100644
--- a/src/trainer_see.c
+++ b/src/trainer_see.c
@@ -1044,15 +1044,15 @@ void PlayerFaceTrainerAfterBattle(void)
objEvent = &gObjectEvents[gApproachingTrainers[gWhichTrainerToFaceAfterBattle].objectEventId];
gPostBattleMovementScript[0] = GetFaceDirectionMovementAction(GetOppositeDirection(objEvent->facingDirection));
gPostBattleMovementScript[1] = MOVEMENT_ACTION_STEP_END;
- ScriptMovement_StartObjectMovementScript(OBJ_EVENT_ID_PLAYER, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, gPostBattleMovementScript);
+ ScriptMovement_StartObjectMovementScript(LOCALID_PLAYER, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, gPostBattleMovementScript);
}
else
{
objEvent = &gObjectEvents[gPlayerAvatar.objectEventId];
gPostBattleMovementScript[0] = GetFaceDirectionMovementAction(objEvent->facingDirection);
gPostBattleMovementScript[1] = MOVEMENT_ACTION_STEP_END;
- ScriptMovement_StartObjectMovementScript(OBJ_EVENT_ID_PLAYER, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, gPostBattleMovementScript);
+ ScriptMovement_StartObjectMovementScript(LOCALID_PLAYER, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, gPostBattleMovementScript);
}
- SetMovingNpcId(OBJ_EVENT_ID_PLAYER);
+ SetMovingNpcId(LOCALID_PLAYER);
}
diff --git a/src/tv.c b/src/tv.c
index 8313ee9bf5..4faf848f42 100644
--- a/src/tv.c
+++ b/src/tv.c
@@ -198,31 +198,31 @@ static const struct {
.species = SPECIES_SEEDOT,
.moves = {MOVE_BIDE, MOVE_HARDEN, MOVE_LEECH_SEED},
.level = 3,
- .location = MAP_NUM(ROUTE102)
+ .location = MAP_NUM(MAP_ROUTE102)
},
{
.species = SPECIES_NUZLEAF,
.moves = {MOVE_HARDEN, MOVE_GROWTH, MOVE_NATURE_POWER, MOVE_LEECH_SEED},
.level = 15,
- .location = MAP_NUM(ROUTE114),
+ .location = MAP_NUM(MAP_ROUTE114),
},
{
.species = SPECIES_SEEDOT,
.moves = {MOVE_HARDEN, MOVE_GROWTH, MOVE_NATURE_POWER, MOVE_LEECH_SEED},
.level = 13,
- .location = MAP_NUM(ROUTE117),
+ .location = MAP_NUM(MAP_ROUTE117),
},
{
.species = SPECIES_SEEDOT,
.moves = {MOVE_GIGA_DRAIN, MOVE_FRUSTRATION, MOVE_SOLAR_BEAM, MOVE_LEECH_SEED},
.level = 25,
- .location = MAP_NUM(ROUTE120),
+ .location = MAP_NUM(MAP_ROUTE120),
},
{
.species = SPECIES_SKITTY,
.moves = {MOVE_GROWL, MOVE_TACKLE, MOVE_TAIL_WHIP, MOVE_ATTRACT},
.level = 8,
- .location = MAP_NUM(ROUTE116),
+ .location = MAP_NUM(MAP_ROUTE116),
}
};
@@ -835,8 +835,8 @@ void UpdateTVScreensOnMap(int width, int height)
break;
// case PLAYERS_HOUSE_TV_NONE:
default:
- if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(LILYCOVE_CITY_COVE_LILY_MOTEL_1F)
- && gSaveBlock1Ptr->location.mapNum == MAP_NUM(LILYCOVE_CITY_COVE_LILY_MOTEL_1F))
+ if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(MAP_LILYCOVE_CITY_COVE_LILY_MOTEL_1F)
+ && gSaveBlock1Ptr->location.mapNum == MAP_NUM(MAP_LILYCOVE_CITY_COVE_LILY_MOTEL_1F))
{
// NPC in Lilycove Hotel is always watching TV
SetTVMetatilesOnMap(width, height, METATILE_Building_TV_On);
@@ -983,6 +983,7 @@ static void TakeGabbyAndTyOffTheAir(void)
gSaveBlock1Ptr->gabbyAndTyData.onAir = FALSE;
}
+// See gabby_and_ty.inc for details
u8 GabbyAndTyGetBattleNum(void)
{
if (gSaveBlock1Ptr->gabbyAndTyData.battleNum > 5)
@@ -1024,41 +1025,42 @@ u8 GabbyAndTyGetLastBattleTrivia(void)
return 0;
}
+// See gabby_and_ty.inc for details
void GetGabbyAndTyLocalIds(void)
{
switch (GabbyAndTyGetBattleNum())
{
case 1:
- gSpecialVar_0x8004 = 14;
- gSpecialVar_0x8005 = 13;
+ gSpecialVar_0x8004 = LOCALID_ROUTE111_GABBY_1;
+ gSpecialVar_0x8005 = LOCALID_ROUTE111_TY_1;
break;
case 2:
- gSpecialVar_0x8004 = 5;
- gSpecialVar_0x8005 = 6;
+ gSpecialVar_0x8004 = LOCALID_ROUTE118_GABBY_1;
+ gSpecialVar_0x8005 = LOCALID_ROUTE118_TY_1;
break;
case 3:
- gSpecialVar_0x8004 = 18;
- gSpecialVar_0x8005 = 17;
+ gSpecialVar_0x8004 = LOCALID_ROUTE120_GABBY_1;
+ gSpecialVar_0x8005 = LOCALID_ROUTE120_TY_1;
break;
case 4:
- gSpecialVar_0x8004 = 21;
- gSpecialVar_0x8005 = 22;
+ gSpecialVar_0x8004 = LOCALID_ROUTE111_GABBY_2;
+ gSpecialVar_0x8005 = LOCALID_ROUTE111_TY_2;
break;
case 5:
- gSpecialVar_0x8004 = 8;
- gSpecialVar_0x8005 = 9;
+ gSpecialVar_0x8004 = LOCALID_ROUTE118_GABBY_2;
+ gSpecialVar_0x8005 = LOCALID_ROUTE118_TY_2;
break;
case 6:
- gSpecialVar_0x8004 = 19;
- gSpecialVar_0x8005 = 20;
+ gSpecialVar_0x8004 = LOCALID_ROUTE120_GABBY_2;
+ gSpecialVar_0x8005 = LOCALID_ROUTE120_TY_2;
break;
case 7:
- gSpecialVar_0x8004 = 23;
- gSpecialVar_0x8005 = 24;
+ gSpecialVar_0x8004 = LOCALID_ROUTE111_GABBY_3;
+ gSpecialVar_0x8005 = LOCALID_ROUTE111_TY_3;
break;
case 8:
- gSpecialVar_0x8004 = 10;
- gSpecialVar_0x8005 = 11;
+ gSpecialVar_0x8004 = LOCALID_ROUTE118_GABBY_3;
+ gSpecialVar_0x8005 = LOCALID_ROUTE118_TY_3;
break;
}
}
@@ -1490,8 +1492,8 @@ void TryPutSmartShopperOnAir(void)
TVShow *show;
u8 i;
- if (!(gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(TRAINER_HILL_ENTRANCE) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(TRAINER_HILL_ENTRANCE))
- && !(gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(BATTLE_FRONTIER_MART) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(BATTLE_FRONTIER_MART))
+ if (!(gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(MAP_TRAINER_HILL_ENTRANCE) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(MAP_TRAINER_HILL_ENTRANCE))
+ && !(gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(MAP_BATTLE_FRONTIER_MART) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(MAP_BATTLE_FRONTIER_MART))
&& !rbernoulli(1, 3))
{
sCurTVShowSlot = FindFirstEmptyRecordMixTVShowSlot(gSaveBlock1Ptr->tvShows);
@@ -2169,7 +2171,7 @@ void TryPutLotteryWinnerReportOnAir(void)
}
}
-void TryPutBattleSeminarOnAir(u16 foeSpecies, u16 species, u8 moveIdx, const u16 *movePtr, u16 betterMove)
+void TryPutBattleSeminarOnAir(u16 foeSpecies, u16 species, u8 moveIndex, const u16 *movePtr, u16 betterMove)
{
TVShow *show;
u8 i;
@@ -2184,10 +2186,10 @@ void TryPutBattleSeminarOnAir(u16 foeSpecies, u16 species, u8 moveIdx, const u16
StringCopy(show->battleSeminar.playerName, gSaveBlock2Ptr->playerName);
show->battleSeminar.foeSpecies = foeSpecies;
show->battleSeminar.species = species;
- show->battleSeminar.move = movePtr[moveIdx];
+ show->battleSeminar.move = movePtr[moveIndex];
for (i = 0, j = 0; i < MAX_MON_MOVES; i++)
{
- if (i != moveIdx && movePtr[i])
+ if (i != moveIndex && movePtr[i])
{
show->battleSeminar.otherMoves[j] = movePtr[i];
j++;
@@ -2650,14 +2652,14 @@ static bool8 ShouldApplyPokeNewsEffect(u8 newsKind)
switch (newsKind)
{
case POKENEWS_SLATEPORT:
- if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(SLATEPORT_CITY)
- && gSaveBlock1Ptr->location.mapNum == MAP_NUM(SLATEPORT_CITY)
+ if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(MAP_SLATEPORT_CITY)
+ && gSaveBlock1Ptr->location.mapNum == MAP_NUM(MAP_SLATEPORT_CITY)
&& gSpecialVar_LastTalked == LOCALID_SLATEPORT_ENERGY_GURU)
return TRUE;
return FALSE;
case POKENEWS_LILYCOVE:
- if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP)
- && gSaveBlock1Ptr->location.mapNum == MAP_NUM(LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP))
+ if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(MAP_LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP)
+ && gSaveBlock1Ptr->location.mapNum == MAP_NUM(MAP_LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP))
return TRUE;
return FALSE;
}
@@ -2777,7 +2779,7 @@ static void SmartShopper_BufferPurchaseTotal(u8 varIdx, TVShow *show)
for (i = 0; i < SMARTSHOPPER_NUM_ITEMS; i++)
{
if (show->smartshopperShow.itemIds[i] != ITEM_NONE)
- price += ItemId_GetPrice(show->smartshopperShow.itemIds[i]) * show->smartshopperShow.itemAmounts[i];
+ price += GetItemPrice(show->smartshopperShow.itemIds[i]) * show->smartshopperShow.itemAmounts[i];
}
if (show->smartshopperShow.priceReduced == TRUE)
@@ -3327,18 +3329,18 @@ u32 GetPlayerIDAsU32(void)
u8 CheckForPlayersHouseNews(void)
{
// Check if not in Littleroot house map group
- if (gSaveBlock1Ptr->location.mapGroup != MAP_GROUP(LITTLEROOT_TOWN_BRENDANS_HOUSE_1F))
+ if (gSaveBlock1Ptr->location.mapGroup != MAP_GROUP(MAP_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F))
return PLAYERS_HOUSE_TV_NONE;
// Check if not in player's house (dependent on gender)
if (gSaveBlock2Ptr->playerGender == MALE)
{
- if (gSaveBlock1Ptr->location.mapNum != MAP_NUM(LITTLEROOT_TOWN_BRENDANS_HOUSE_1F))
+ if (gSaveBlock1Ptr->location.mapNum != MAP_NUM(MAP_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F))
return PLAYERS_HOUSE_TV_NONE;
}
else
{
- if (gSaveBlock1Ptr->location.mapNum != MAP_NUM(LITTLEROOT_TOWN_MAYS_HOUSE_1F))
+ if (gSaveBlock1Ptr->location.mapNum != MAP_NUM(MAP_LITTLEROOT_TOWN_MAYS_HOUSE_1F))
return PLAYERS_HOUSE_TV_NONE;
}
@@ -3354,11 +3356,11 @@ u8 CheckForPlayersHouseNews(void)
void GetMomOrDadStringForTVMessage(void)
{
// If the player is checking the TV in their house it will only refer to their Mom.
- if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(LITTLEROOT_TOWN_BRENDANS_HOUSE_1F))
+ if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(MAP_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F))
{
if (gSaveBlock2Ptr->playerGender == MALE)
{
- if (gSaveBlock1Ptr->location.mapNum == MAP_NUM(LITTLEROOT_TOWN_BRENDANS_HOUSE_1F))
+ if (gSaveBlock1Ptr->location.mapNum == MAP_NUM(MAP_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F))
{
StringCopy(gStringVar1, gText_Mom);
VarSet(VAR_TEMP_3, 1);
@@ -3366,7 +3368,7 @@ void GetMomOrDadStringForTVMessage(void)
}
else
{
- if (gSaveBlock1Ptr->location.mapNum == MAP_NUM(LITTLEROOT_TOWN_MAYS_HOUSE_1F))
+ if (gSaveBlock1Ptr->location.mapNum == MAP_NUM(MAP_LITTLEROOT_TOWN_MAYS_HOUSE_1F))
{
StringCopy(gStringVar1, gText_Mom);
VarSet(VAR_TEMP_3, 1);
@@ -3410,7 +3412,7 @@ void GetMomOrDadStringForTVMessage(void)
void HideBattleTowerReporter(void)
{
VarSet(VAR_BRAVO_TRAINER_BATTLE_TOWER_ON, 0);
- RemoveObjectEventByLocalIdAndMap(LOCALID_BATTLE_TOWER_LOBBY_REPORTER, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
+ RemoveObjectEventByLocalIdAndMap(LOCALID_TOWER_LOBBY_REPORTER, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
FlagSet(FLAG_HIDE_BATTLE_TOWER_REPORTER);
}
@@ -4459,7 +4461,7 @@ static void DoTVShowTodaysSmartShopper(void)
break;
case SMARTSHOPPER_STATE_CLERK_NORMAL:
TVShowConvertInternationalString(gStringVar1, show->smartshopperShow.playerName, show->smartshopperShow.language);
- StringCopy(gStringVar2, ItemId_GetName(show->smartshopperShow.itemIds[0]));
+ StringCopy(gStringVar2, GetItemName(show->smartshopperShow.itemIds[0]));
ConvertIntToDecimalString(2, show->smartshopperShow.itemAmounts[0]);
// Pick a random comment (SMARTSHOPPER_STATE_RAND_COMMENT_#)
sTVShowState += SMARTSHOPPER_STATE_CLERK_NORMAL + (Random() % (SMARTSHOPPER_STATE_RAND_COMMENT_4 - SMARTSHOPPER_STATE_RAND_COMMENT_1 + 1));
@@ -4481,7 +4483,7 @@ static void DoTVShowTodaysSmartShopper(void)
break;
case SMARTSHOPPER_STATE_SECOND_ITEM:
// Clerk describes 2nd type of item player purchased
- StringCopy(gStringVar2, ItemId_GetName(show->smartshopperShow.itemIds[1]));
+ StringCopy(gStringVar2, GetItemName(show->smartshopperShow.itemIds[1]));
ConvertIntToDecimalString(2, show->smartshopperShow.itemAmounts[1]);
if (show->smartshopperShow.itemIds[2] != ITEM_NONE)
sTVShowState = SMARTSHOPPER_STATE_THIRD_ITEM;
@@ -4492,7 +4494,7 @@ static void DoTVShowTodaysSmartShopper(void)
break;
case SMARTSHOPPER_STATE_THIRD_ITEM:
// Clerk describes 3rd type of item player purchased
- StringCopy(gStringVar2, ItemId_GetName(show->smartshopperShow.itemIds[2]));
+ StringCopy(gStringVar2, GetItemName(show->smartshopperShow.itemIds[2]));
ConvertIntToDecimalString(2, show->smartshopperShow.itemAmounts[2]);
if (show->smartshopperShow.priceReduced == TRUE)
sTVShowState = SMARTSHOPPER_STATE_DURING_SALE;
@@ -4520,7 +4522,7 @@ static void DoTVShowTodaysSmartShopper(void)
case SMARTSHOPPER_STATE_CLERK_MAX:
// Clerk's comments if player purchased maximum number of 1st item
TVShowConvertInternationalString(gStringVar1, show->smartshopperShow.playerName, show->smartshopperShow.language);
- StringCopy(gStringVar2, ItemId_GetName(show->smartshopperShow.itemIds[0]));
+ StringCopy(gStringVar2, GetItemName(show->smartshopperShow.itemIds[0]));
if (show->smartshopperShow.priceReduced == TRUE)
sTVShowState = SMARTSHOPPER_STATE_DURING_SALE;
else
@@ -4644,7 +4646,7 @@ static void DoTVShowPokemonTodaySuccessfulCapture(void)
sTVShowState = 2;
break;
case 2:
- StringCopy(gStringVar2, ItemId_GetName(show->pokemonToday.ball));
+ StringCopy(gStringVar2, GetItemName(show->pokemonToday.ball));
ConvertIntToDecimalString(2, show->pokemonToday.nBallsUsed);
if (show->pokemonToday.nBallsUsed < 4)
sTVShowState = 3;
@@ -5684,7 +5686,7 @@ static void DoTVShowHoennTreasureInvestigators(void)
switch (state)
{
case 0:
- StringCopy(gStringVar1, ItemId_GetName(show->treasureInvestigators.item));
+ StringCopy(gStringVar1, GetItemName(show->treasureInvestigators.item));
if (show->treasureInvestigators.location == MAPSEC_DYNAMIC)
{
switch (show->treasureInvestigators.mapLayoutId)
@@ -5705,13 +5707,13 @@ static void DoTVShowHoennTreasureInvestigators(void)
}
break;
case 1:
- StringCopy(gStringVar1, ItemId_GetName(show->treasureInvestigators.item));
+ StringCopy(gStringVar1, GetItemName(show->treasureInvestigators.item));
TVShowConvertInternationalString(gStringVar2, show->treasureInvestigators.playerName, show->treasureInvestigators.language);
GetMapName(gStringVar3, show->treasureInvestigators.location, 0);
TVShowDone();
break;
case 2:
- StringCopy(gStringVar1, ItemId_GetName(show->treasureInvestigators.item));
+ StringCopy(gStringVar1, GetItemName(show->treasureInvestigators.item));
TVShowConvertInternationalString(gStringVar2, show->treasureInvestigators.playerName, show->treasureInvestigators.language);
TVShowDone();
break;
@@ -5819,7 +5821,7 @@ static void DoTVShowBreakingNewsTV(void)
break;
case 3:
ConvertIntToDecimalString(0, show->breakingNews.balls);
- StringCopy(gStringVar2, ItemId_GetName(show->breakingNews.caughtMonBall));
+ StringCopy(gStringVar2, GetItemName(show->breakingNews.caughtMonBall));
sTVShowState = 4;
break;
case 4:
@@ -5981,7 +5983,7 @@ static void DoTVShowPokemonLotteryWinnerFlashReport(void)
StringCopy(gStringVar2, gText_Second);
else
StringCopy(gStringVar2, gText_Third);
- StringCopy(gStringVar3, ItemId_GetName(show->lottoWinner.item));
+ StringCopy(gStringVar3, GetItemName(show->lottoWinner.item));
TVShowDone();
ShowFieldMessage(sTVPokemonLotteryWinnerFlashReportTextGroup[state]);
}
@@ -6665,7 +6667,7 @@ static void DoTVShowSecretBaseSecrets(void)
sTVShowState = show->secretBaseSecrets.savedState;
break;
case SBSECRETS_STATE_USED_BAG:
- StringCopy(gStringVar2, ItemId_GetName(show->secretBaseSecrets.item));
+ StringCopy(gStringVar2, GetItemName(show->secretBaseSecrets.item));
sTVShowState = show->secretBaseSecrets.savedState;
break;
case SBSECRETS_STATE_USED_CUSHION:
diff --git a/src/union_room.c b/src/union_room.c
index 9fc2126880..6042c6420a 100644
--- a/src/union_room.c
+++ b/src/union_room.c
@@ -1629,7 +1629,7 @@ static void CB2_TransitionToCableClub(void)
static void CreateTrainerCardInBuffer(void *dest, bool32 setWonderCard)
{
- struct TrainerCard * card = (struct TrainerCard *)dest;
+ struct TrainerCard *card = (struct TrainerCard *)dest;
TrainerCard_GenerateCardForLinkPlayer(card);
// Below field is re-used, to be read by Task_ExchangeCards
@@ -1671,7 +1671,7 @@ static void Task_StartActivity(u8 taskId)
HealPlayerParty();
SavePlayerParty();
LoadPlayerBag();
- WarpForCableClubActivity(MAP_GROUP(BATTLE_COLOSSEUM_2P), MAP_NUM(BATTLE_COLOSSEUM_2P), 6, 8, USING_SINGLE_BATTLE);
+ WarpForCableClubActivity(MAP_GROUP(MAP_BATTLE_COLOSSEUM_2P), MAP_NUM(MAP_BATTLE_COLOSSEUM_2P), 6, 8, USING_SINGLE_BATTLE);
SetMainCallback2(CB2_TransitionToCableClub);
break;
case ACTIVITY_BATTLE_DOUBLE:
@@ -1680,7 +1680,7 @@ static void Task_StartActivity(u8 taskId)
SavePlayerParty();
LoadPlayerBag();
CreateTrainerCardInBuffer(gBlockSendBuffer, TRUE);
- WarpForCableClubActivity(MAP_GROUP(BATTLE_COLOSSEUM_2P), MAP_NUM(BATTLE_COLOSSEUM_2P), 6, 8, USING_DOUBLE_BATTLE);
+ WarpForCableClubActivity(MAP_GROUP(MAP_BATTLE_COLOSSEUM_2P), MAP_NUM(MAP_BATTLE_COLOSSEUM_2P), 6, 8, USING_DOUBLE_BATTLE);
SetMainCallback2(CB2_TransitionToCableClub);
break;
case ACTIVITY_BATTLE_MULTI:
@@ -1689,19 +1689,19 @@ static void Task_StartActivity(u8 taskId)
SavePlayerParty();
LoadPlayerBag();
CreateTrainerCardInBuffer(gBlockSendBuffer, TRUE);
- WarpForCableClubActivity(MAP_GROUP(BATTLE_COLOSSEUM_4P), MAP_NUM(BATTLE_COLOSSEUM_4P), 5, 8, USING_MULTI_BATTLE);
+ WarpForCableClubActivity(MAP_GROUP(MAP_BATTLE_COLOSSEUM_4P), MAP_NUM(MAP_BATTLE_COLOSSEUM_4P), 5, 8, USING_MULTI_BATTLE);
SetMainCallback2(CB2_TransitionToCableClub);
break;
case ACTIVITY_TRADE:
CreateTrainerCardInBuffer(gBlockSendBuffer, TRUE);
CleanupOverworldWindowsAndTilemaps();
- WarpForCableClubActivity(MAP_GROUP(TRADE_CENTER), MAP_NUM(TRADE_CENTER), 5, 8, USING_TRADE_CENTER);
+ WarpForCableClubActivity(MAP_GROUP(MAP_TRADE_CENTER), MAP_NUM(MAP_TRADE_CENTER), 5, 8, USING_TRADE_CENTER);
SetMainCallback2(CB2_TransitionToCableClub);
break;
case ACTIVITY_RECORD_CORNER:
CreateTrainerCardInBuffer(gBlockSendBuffer, TRUE);
CleanupOverworldWindowsAndTilemaps();
- WarpForCableClubActivity(MAP_GROUP(RECORD_CORNER), MAP_NUM(RECORD_CORNER), 8, 9, USING_RECORD_CORNER);
+ WarpForCableClubActivity(MAP_GROUP(MAP_RECORD_CORNER), MAP_NUM(MAP_RECORD_CORNER), 8, 9, USING_RECORD_CORNER);
SetMainCallback2(CB2_TransitionToCableClub);
break;
case ACTIVITY_TRADE | IN_UNION_ROOM:
@@ -3502,10 +3502,10 @@ static void Task_SearchForChildOrParent(u8 taskId)
}
}
-static u8 CreateTask_SearchForChildOrParent(struct RfuIncomingPlayerList * parentList, struct RfuIncomingPlayerList * childList, u32 linkGroup)
+static u8 CreateTask_SearchForChildOrParent(struct RfuIncomingPlayerList *parentList, struct RfuIncomingPlayerList *childList, u32 linkGroup)
{
u8 taskId = CreateTask(Task_SearchForChildOrParent, 0);
- struct RfuIncomingPlayerList ** data = (void *)gTasks[taskId].data;
+ struct RfuIncomingPlayerList **data = (void *)gTasks[taskId].data;
data[0] = parentList;
data[1] = childList;
gTasks[taskId].data[4] = linkGroup;
@@ -3569,7 +3569,7 @@ static void Task_ListenForWonderDistributor(u8 taskId)
}
}
-static u8 CreateTask_ListenForCompatiblePartners(struct RfuIncomingPlayerList * list, u32 linkGroup)
+static u8 CreateTask_ListenForCompatiblePartners(struct RfuIncomingPlayerList *list, u32 linkGroup)
{
u8 taskId = CreateTask(Task_ListenForCompatiblePartners, 0);
struct RfuIncomingPlayerList **oldList = (void *) gTasks[taskId].data;
@@ -3578,7 +3578,7 @@ static u8 CreateTask_ListenForCompatiblePartners(struct RfuIncomingPlayerList *
return taskId;
}
-static u8 CreateTask_ListenForWonderDistributor(struct RfuIncomingPlayerList * list, u32 linkGroup)
+static u8 CreateTask_ListenForWonderDistributor(struct RfuIncomingPlayerList *list, u32 linkGroup)
{
u8 taskId = CreateTask(Task_ListenForWonderDistributor, 0);
struct RfuIncomingPlayerList **oldList = (void *) gTasks[taskId].data;
@@ -3656,7 +3656,7 @@ static s8 UnionRoomHandleYesNo(u8 *state, bool32 noDraw)
return MENU_NOTHING_CHOSEN;
}
-static u8 CreateTradeBoardWindow(const struct WindowTemplate * template)
+static u8 CreateTradeBoardWindow(const struct WindowTemplate *template)
{
u8 windowId = AddWindow(template);
DrawStdWindowFrame(windowId, FALSE);
@@ -3886,7 +3886,7 @@ static void ClearIncomingPlayerList(struct RfuIncomingPlayerList *list, u8 count
}
// Checks player name and trainer id, returns TRUE if they are not the same
-static bool8 ArePlayersDifferent(struct RfuPlayerData* player1, const struct RfuPlayerData* player2)
+static bool8 ArePlayersDifferent(struct RfuPlayerData *player1, const struct RfuPlayerData *player2)
{
s32 i;
@@ -4050,7 +4050,7 @@ static s32 UnionRoomGetPlayerInteractionResponse(struct RfuPlayerList *list, boo
{
bool32 metBefore;
- struct RfuPlayer * player = &list->players[playerIdx];
+ struct RfuPlayer *player = &list->players[playerIdx];
if (!player->rfu.data.startedActivity && !overrideGender)
{
@@ -4100,7 +4100,7 @@ static void ItemPrintFunc_EmptyList(u8 windowId, u32 itemId, u8 y)
{
}
-static void TradeBoardPrintItemInfo(u8 windowId, u8 y, struct RfuGameData * data, const u8 *playerName, u8 colorIdx)
+static void TradeBoardPrintItemInfo(u8 windowId, u8 y, struct RfuGameData *data, const u8 *playerName, u8 colorIdx)
{
u8 levelStr[4];
u16 species = data->tradeSpecies;
@@ -4152,7 +4152,7 @@ static void TradeBoardListMenuItemPrintFunc(u8 windowId, u32 itemId, u8 y)
}
}
-static s32 GetIndexOfNthTradeBoardOffer(struct RfuPlayer * players, s32 n)
+static s32 GetIndexOfNthTradeBoardOffer(struct RfuPlayer *players, s32 n)
{
s32 i;
s32 j = 0;
@@ -4312,8 +4312,8 @@ static bool32 PollPartnerYesNoResponse(struct WirelessLink_URoom *data)
bool32 InUnionRoom(void)
{
- return gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(UNION_ROOM)
- && gSaveBlock1Ptr->location.mapNum == MAP_NUM(UNION_ROOM)
+ return gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(MAP_UNION_ROOM)
+ && gSaveBlock1Ptr->location.mapNum == MAP_NUM(MAP_UNION_ROOM)
? TRUE : FALSE;
}
diff --git a/src/union_room_battle.c b/src/union_room_battle.c
index 2bcbaef19c..af16a0d242 100644
--- a/src/union_room_battle.c
+++ b/src/union_room_battle.c
@@ -26,7 +26,7 @@ struct UnionRoomBattle
s16 textState;
};
-static EWRAM_DATA struct UnionRoomBattle * sBattle = NULL;
+static EWRAM_DATA struct UnionRoomBattle *sBattle = NULL;
static const struct BgTemplate sBgTemplates[] = {
{
@@ -81,7 +81,7 @@ static void AddTextPrinterForUnionRoomBattle(u8 windowId, const u8 *str, u8 x, u
AddTextPrinterParameterized4(windowId, FONT_NORMAL, x, y, letterSpacing, lineSpacing, sTextColors, speed, str);
}
-static bool32 PrintUnionRoomBattleMessage(s16 * state, const u8 *str, s32 speed)
+static bool32 PrintUnionRoomBattleMessage(s16 *state, const u8 *str, s32 speed)
{
switch (*state)
{
diff --git a/src/union_room_chat.c b/src/union_room_chat.c
index 6c2aa047e6..b32f23c467 100644
--- a/src/union_room_chat.c
+++ b/src/union_room_chat.c
@@ -155,7 +155,7 @@ struct UnionRoomChat
struct UnionRoomChatDisplay_Subtask
{
- bool32 (* callback)(u8 *);
+ bool32 (*callback)(u8 *);
bool8 active;
u8 state;
};
@@ -189,7 +189,7 @@ struct UnionRoomChatSprites
struct SubtaskInfo
{
u16 idx;
- bool32 (* callback)(u8 *);
+ bool32 (*callback)(u8 *);
};
struct MessageWindowInfo
diff --git a/src/union_room_player_avatar.c b/src/union_room_player_avatar.c
index c99cc0e493..eeed9fe176 100644
--- a/src/union_room_player_avatar.c
+++ b/src/union_room_player_avatar.c
@@ -16,7 +16,7 @@
// get the sprite index of that player.
#define UR_PLAYER_SPRITE_ID(leaderId, memberId) (MAX_RFU_PLAYERS * leaderId + memberId)
-static EWRAM_DATA struct UnionRoomObject * sUnionObjWork = NULL;
+static EWRAM_DATA struct UnionRoomObject *sUnionObjWork = NULL;
static EWRAM_DATA u32 sUnionObjRefreshTimer = 0;
static u8 CreateTask_AnimateUnionRoomPlayers(void);
@@ -135,7 +135,7 @@ static u16 GetUnionRoomPlayerGraphicsId(u32 gender, u32 id)
return sUnionRoomObjGfxIds[gender][id % NUM_UNION_ROOM_CLASSES];
}
-static void GetUnionRoomPlayerCoords(u32 leaderId, u32 memberId, s32 * x, s32 * y)
+static void GetUnionRoomPlayerCoords(u32 leaderId, u32 memberId, s32 *x, s32 *y)
{
*x = sUnionRoomPlayerCoords[leaderId][0] + sUnionRoomGroupOffsets[memberId][0] + MAP_OFFSET;
*y = sUnionRoomPlayerCoords[leaderId][1] + sUnionRoomGroupOffsets[memberId][1] + MAP_OFFSET;
@@ -183,7 +183,7 @@ static void RemoveUnionRoomPlayerObjectEvent(u32 leaderId)
static bool32 SetUnionRoomPlayerEnterExitMovement(u32 leaderId, const u8 *movement)
{
u8 objectId;
- struct ObjectEvent * object;
+ struct ObjectEvent *object;
if (TryGetObjectEventIdByLocalIdAndMap(sUnionRoomLocalIds[leaderId], gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, &objectId))
return FALSE;
object = &gObjectEvents[objectId];
@@ -197,7 +197,7 @@ static bool32 SetUnionRoomPlayerEnterExitMovement(u32 leaderId, const u8 *moveme
static bool32 TryReleaseUnionRoomPlayerObjectEvent(u32 leaderId)
{
u8 objectId;
- struct ObjectEvent * object;
+ struct ObjectEvent *object;
if (TryGetObjectEventIdByLocalIdAndMap(sUnionRoomLocalIds[leaderId], gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, &objectId))
return TRUE;
@@ -212,7 +212,7 @@ static bool32 TryReleaseUnionRoomPlayerObjectEvent(u32 leaderId)
return TRUE;
}
-u8 InitUnionRoomPlayerObjects(struct UnionRoomObject * players)
+u8 InitUnionRoomPlayerObjects(struct UnionRoomObject *players)
{
s32 i;
@@ -228,7 +228,7 @@ u8 InitUnionRoomPlayerObjects(struct UnionRoomObject * players)
return CreateTask_AnimateUnionRoomPlayers();
}
-static bool32 AnimateUnionRoomPlayerDespawn(s8 * state, u32 leaderId, struct UnionRoomObject * object)
+static bool32 AnimateUnionRoomPlayerDespawn(s8 *state, u32 leaderId, struct UnionRoomObject *object)
{
switch (*state)
{
@@ -252,7 +252,7 @@ static bool32 AnimateUnionRoomPlayerDespawn(s8 * state, u32 leaderId, struct Uni
return FALSE;
}
-static bool32 AnimateUnionRoomPlayerSpawn(s8 * state, u32 leaderId, struct UnionRoomObject * object)
+static bool32 AnimateUnionRoomPlayerSpawn(s8 *state, u32 leaderId, struct UnionRoomObject *object)
{
s16 x, y;
@@ -289,7 +289,7 @@ static bool32 AnimateUnionRoomPlayerSpawn(s8 * state, u32 leaderId, struct Union
static bool32 SpawnGroupLeader(u32 leaderId, u32 gender, u32 id)
{
- struct UnionRoomObject * object = &sUnionObjWork[leaderId];
+ struct UnionRoomObject *object = &sUnionObjWork[leaderId];
object->schedAnim = UNION_ROOM_SPAWN_IN;
object->gfxId = GetUnionRoomPlayerGraphicsId(gender, id);
@@ -301,7 +301,7 @@ static bool32 SpawnGroupLeader(u32 leaderId, u32 gender, u32 id)
static bool32 DespawnGroupLeader(u32 leaderId)
{
- struct UnionRoomObject * object = &sUnionObjWork[leaderId];
+ struct UnionRoomObject *object = &sUnionObjWork[leaderId];
object->schedAnim = UNION_ROOM_SPAWN_OUT;
if (object->state == 1)
@@ -310,7 +310,7 @@ static bool32 DespawnGroupLeader(u32 leaderId)
return FALSE;
}
-static void AnimateUnionRoomPlayer(u32 leaderId, struct UnionRoomObject * object)
+static void AnimateUnionRoomPlayer(u32 leaderId, struct UnionRoomObject *object)
{
switch (object->state)
{
@@ -426,7 +426,7 @@ void SetTilesAroundUnionRoomPlayersPassable(void)
}
}
-static u8 GetNewFacingDirectionForUnionRoomPlayer(u32 memberId, u32 leaderId, struct RfuGameData * gameData)
+static u8 GetNewFacingDirectionForUnionRoomPlayer(u32 memberId, u32 leaderId, struct RfuGameData *gameData)
{
if (memberId) // If not leader
return sMemberFacingDirections[memberId];
@@ -441,7 +441,7 @@ static bool32 IsUnionRoomPlayerInvisible(u32 leaderId, u32 memberId)
return IsVirtualObjectInvisible(UR_PLAYER_SPRITE_ID(leaderId, memberId) - UR_SPRITE_START_ID);
}
-static void SpawnGroupMember(u32 leaderId, u32 memberId, u16 graphicsId, struct RfuGameData * gameData)
+static void SpawnGroupMember(u32 leaderId, u32 memberId, u16 graphicsId, struct RfuGameData *gameData)
{
s32 x, y;
s32 id = UR_PLAYER_SPRITE_ID(leaderId, memberId);
@@ -464,7 +464,7 @@ static void DespawnGroupMember(u32 leaderId, u32 memberId)
MapGridSetMetatileImpassabilityAt(x, y, FALSE);
}
-static void AssembleGroup(u32 leaderId, struct RfuGameData * gameData)
+static void AssembleGroup(u32 leaderId, struct RfuGameData *gameData)
{
s16 x, y, x2, y2;
s32 i;
@@ -492,7 +492,7 @@ static void AssembleGroup(u32 leaderId, struct RfuGameData * gameData)
}
}
-static void SpawnGroupLeaderAndMembers(u32 leaderId, struct RfuGameData * gameData)
+static void SpawnGroupLeaderAndMembers(u32 leaderId, struct RfuGameData *gameData)
{
u32 i;
switch (gameData->activity)
@@ -527,7 +527,7 @@ static void DespawnGroupLeaderAndMembers(u32 leaderId, struct RfuGameData *gameD
static void UpdateUnionRoomPlayerSprites(struct WirelessLink_URoom *uroom)
{
s32 i;
- struct RfuPlayer * leaders;
+ struct RfuPlayer *leaders;
sUnionObjRefreshTimer = 0;
for (i = 0, leaders = uroom->playerList->players; i < MAX_UNION_ROOM_LEADERS; i++)
{
@@ -553,7 +553,7 @@ bool32 TryInteractWithUnionRoomMember(struct RfuPlayerList *list, s16 *memberIdP
{
s16 x, y;
s32 i, memberId;
- struct RfuPlayer * leaders;
+ struct RfuPlayer *leaders;
if (!IsPlayerStandingStill())
return FALSE;
diff --git a/src/wild_encounter.c b/src/wild_encounter.c
index 86923300f5..37b6a43443 100644
--- a/src/wild_encounter.c
+++ b/src/wild_encounter.c
@@ -117,8 +117,8 @@ static bool8 CheckFeebas(void)
u8 route119Section = 0;
u16 spotId;
- if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(ROUTE119)
- && gSaveBlock1Ptr->location.mapNum == MAP_NUM(ROUTE119))
+ if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(MAP_ROUTE119)
+ && gSaveBlock1Ptr->location.mapNum == MAP_NUM(MAP_ROUTE119))
{
GetXYCoordsOneStepInFrontOfPlayer(&x, &y);
x -= MAP_OFFSET;
@@ -353,14 +353,14 @@ u16 GetCurrentMapWildMonHeaderId(void)
for (i = 0; ; i++)
{
const struct WildPokemonHeader *wildHeader = &gWildMonHeaders[i];
- if (wildHeader->mapGroup == MAP_GROUP(UNDEFINED))
+ if (wildHeader->mapGroup == MAP_GROUP(MAP_UNDEFINED))
break;
if (gWildMonHeaders[i].mapGroup == gSaveBlock1Ptr->location.mapGroup &&
gWildMonHeaders[i].mapNum == gSaveBlock1Ptr->location.mapNum)
{
- if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(ALTERING_CAVE) &&
- gSaveBlock1Ptr->location.mapNum == MAP_NUM(ALTERING_CAVE))
+ if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(MAP_ALTERING_CAVE) &&
+ gSaveBlock1Ptr->location.mapNum == MAP_NUM(MAP_ALTERING_CAVE))
{
u16 alteringCaveId = VarGet(VAR_ALTERING_CAVE_WILD_SET);
if (alteringCaveId >= NUM_ALTERING_CAVE_TABLES)
@@ -687,8 +687,8 @@ static bool8 AllowWildCheckOnNewMetatile(void)
static bool8 AreLegendariesInSootopolisPreventingEncounters(void)
{
- if (gSaveBlock1Ptr->location.mapGroup != MAP_GROUP(SOOTOPOLIS_CITY)
- || gSaveBlock1Ptr->location.mapNum != MAP_NUM(SOOTOPOLIS_CITY))
+ if (gSaveBlock1Ptr->location.mapGroup != MAP_GROUP(MAP_SOOTOPOLIS_CITY)
+ || gSaveBlock1Ptr->location.mapNum != MAP_NUM(MAP_SOOTOPOLIS_CITY))
{
return FALSE;
}
@@ -924,7 +924,7 @@ bool8 SweetScentWildEncounter(void)
if (MetatileBehavior_IsLandWildEncounter(MapGridGetMetatileBehaviorAt(x, y)) == TRUE)
{
timeOfDay = GetTimeOfDayForEncounters(headerId, WILD_AREA_LAND);
-
+
if (gWildMonHeaders[headerId].encounterTypes[timeOfDay].landMonsInfo == NULL)
return FALSE;
diff --git a/src/window.c b/src/window.c
index 850b83d4fc..f393b109de 100644
--- a/src/window.c
+++ b/src/window.c
@@ -10,7 +10,7 @@ COMMON_DATA void *gWindowBgTilemapBuffers[NUM_BACKGROUNDS] = {0};
extern u32 gWindowTileAutoAllocEnabled;
EWRAM_DATA struct Window gWindows[WINDOWS_MAX] = {0};
-EWRAM_DATA static struct Window* sWindowPtr = NULL;
+EWRAM_DATA static struct Window *sWindowPtr = NULL;
EWRAM_DATA static u16 sWindowSize = 0;
static u32 GetNumActiveWindowsOnBg(u32 bgId);
diff --git a/src/wireless_communication_status_screen.c b/src/wireless_communication_status_screen.c
index 8c89312111..7734c39d24 100644
--- a/src/wireless_communication_status_screen.c
+++ b/src/wireless_communication_status_screen.c
@@ -54,7 +54,7 @@ struct WirelessCommunicationStatusScreen
u8 filler[10];
};
-static struct WirelessCommunicationStatusScreen * sStatusScreen;
+static struct WirelessCommunicationStatusScreen *sStatusScreen;
static void CB2_InitWirelessCommunicationScreen(void);
static void Task_WirelessCommunicationScreen(u8);
@@ -247,7 +247,7 @@ static void CB2_ExitWirelessCommunicationStatusScreen(void)
}
// Cycle through palettes that relocate various shades of blue to create the wave effect at the bottom of the screen.
-static void CyclePalette(s16 * counter, s16 * palIdx)
+static void CyclePalette(s16 *counter, s16 *palIdx)
{
s32 idx;
if (++(*counter) > 5)
@@ -381,7 +381,7 @@ static void WCSS_AddTextPrinterParameterized(u8 windowId, u8 fontId, const u8 *s
AddTextPrinterParameterized4(windowId, fontId, x, y, 0, 0, color, TEXT_SKIP_DRAW, str);
}
-static u32 CountPlayersInGroupAndGetActivity(struct RfuPlayer * player, u32 * groupCounts)
+static u32 CountPlayersInGroupAndGetActivity(struct RfuPlayer *player, u32 *groupCounts)
{
int i, j, k;
u32 activity = player->rfu.data.activity;
@@ -422,7 +422,7 @@ static u32 CountPlayersInGroupAndGetActivity(struct RfuPlayer * player, u32 * gr
#undef group_players
}
-static bool32 HaveCountsChanged(u32 * currCounts, u32 * prevCounts)
+static bool32 HaveCountsChanged(u32 *currCounts, u32 *prevCounts)
{
s32 i;
for (i = 0; i < NUM_GROUPTYPES; i++)
@@ -433,11 +433,11 @@ static bool32 HaveCountsChanged(u32 * currCounts, u32 * prevCounts)
return FALSE;
}
-static bool32 UpdateCommunicationCounts(u32 * groupCounts, u32 * prevGroupCounts, u32 * activities, u8 taskId)
+static bool32 UpdateCommunicationCounts(u32 *groupCounts, u32 *prevGroupCounts, u32 *activities, u8 taskId)
{
bool32 activitiesChanged = FALSE;
u32 groupCountBuffer[NUM_GROUPTYPES] = {0, 0, 0, 0};
- struct RfuPlayer ** players = (void *)gTasks[taskId].data;
+ struct RfuPlayer **players = (void *)gTasks[taskId].data;
s32 i;
for (i = 0; i < NUM_TASK_DATA; i++)
diff --git a/test/battle/ability/bad_dreams.c b/test/battle/ability/bad_dreams.c
index 8a1d3669a2..41cedf8e3e 100644
--- a/test/battle/ability/bad_dreams.c
+++ b/test/battle/ability/bad_dreams.c
@@ -2,7 +2,7 @@
#include "test/battle.h"
// Also checks that non-sleeping enemy is not affected.
-SINGLE_BATTLE_TEST("Bad Dreams causes the sleeping enemy Pokemon to lose 1/8 of hp")
+SINGLE_BATTLE_TEST("Bad Dreams causes the sleeping enemy Pokemon to lose 1/8 of HP")
{
u32 status;
PARAMETRIZE { status = STATUS1_NONE; }
diff --git a/test/battle/ability/ball_fetch.c b/test/battle/ability/ball_fetch.c
new file mode 100644
index 0000000000..7411d60a7d
--- /dev/null
+++ b/test/battle/ability/ball_fetch.c
@@ -0,0 +1,7 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("Ball Fetch causes the Pokémon to pick up the last failed Ball at the end of the turn");
+TO_DO_BATTLE_TEST("Ball Fetch doesn't trigger if the Pokémon is already holding an item");
+TO_DO_BATTLE_TEST("Ball Fetch only picks up the first failed ball, once per battle"); // Bestow can help test this
+TO_DO_BATTLE_TEST("Ball Fetch doesn't trigger in Max Raid Battles");
diff --git a/test/battle/ability/battery.c b/test/battle/ability/battery.c
new file mode 100644
index 0000000000..cecfa81d0c
--- /dev/null
+++ b/test/battle/ability/battery.c
@@ -0,0 +1,5 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("Battery increases Sp. Attack damage of allies by ~30%"); // 5325/4096
+TO_DO_BATTLE_TEST("Battery does not increase its own Sp. Attack damage");
diff --git a/test/battle/ability/beads_of_ruin.c b/test/battle/ability/beads_of_ruin.c
index cfcfb17467..37240d2d68 100644
--- a/test/battle/ability/beads_of_ruin.c
+++ b/test/battle/ability/beads_of_ruin.c
@@ -73,3 +73,5 @@ SINGLE_BATTLE_TEST("Beads of Ruin's message displays correctly after all battler
MESSAGE("The opposing Chi-Yu's Beads of Ruin weakened the Sp. Def of all surrounding Pokémon!");
}
}
+
+TO_DO_BATTLE_TEST("Beads of Ruin reduce Defense if Wonder Room is active");
diff --git a/test/battle/ability/beast_boost.c b/test/battle/ability/beast_boost.c
index f57236d17c..d6691c2f8f 100644
--- a/test/battle/ability/beast_boost.c
+++ b/test/battle/ability/beast_boost.c
@@ -56,3 +56,45 @@ SINGLE_BATTLE_TEST("Beast Boost doesn't trigger if user is fainted")
MESSAGE("2 sent out Wobbuffet!");
}
}
+
+SINGLE_BATTLE_TEST("Beast Boost prioritizes stats in the case of a tie in the following order: Atk, Def, Sp.Atk, Sp.Def, Speed")
+{
+ u8 stats[] = {1, 1, 1, 1, 1};
+
+ PARAMETRIZE { stats[4] = 255; stats[3] = 255; stats[2] = 255; stats[1] = 255; stats[0] = 255; }
+ PARAMETRIZE { stats[4] = 255; stats[3] = 255; stats[2] = 255; stats[1] = 255; }
+ PARAMETRIZE { stats[4] = 255; stats[3] = 255; stats[2] = 255; }
+ PARAMETRIZE { stats[4] = 255; stats[3] = 255; }
+ GIVEN {
+ PLAYER(SPECIES_NIHILEGO) { Ability(ABILITY_BEAST_BOOST); Attack(stats[0]); Defense(stats[1]); SpAttack(stats[2]); SpDefense(stats[3]); Speed(stats[4]); }
+ OPPONENT(SPECIES_WOBBUFFET) { HP(1); Speed(1); }
+ OPPONENT(SPECIES_WOBBUFFET) { Speed(1); }
+ } WHEN {
+ TURN { MOVE(player, MOVE_SCRATCH); SEND_OUT(opponent, 1); }
+ } SCENE {
+ ABILITY_POPUP(player, ABILITY_BEAST_BOOST);
+ switch(i) {
+ case 0:
+ MESSAGE("Nihilego's Attack rose!");
+ break;
+ case 1:
+ MESSAGE("Nihilego's Defense rose!");
+ break;
+ case 2:
+ MESSAGE("Nihilego's Sp. Atk rose!");
+ break;
+ case 3:
+ MESSAGE("Nihilego's Sp. Def rose!");
+ break;
+ }
+ }
+}
+
+TO_DO_BATTLE_TEST("Beast Boost considers Power Split");
+TO_DO_BATTLE_TEST("Beast Boost considers Guard Split");
+TO_DO_BATTLE_TEST("Beast Boost considers Power Trick");
+TO_DO_BATTLE_TEST("Beast Boost considers Wonder Room");
+TO_DO_BATTLE_TEST("Beast Boost considers Speed Swap");
+TO_DO_BATTLE_TEST("Beast Boost doesn't consider stat stages");
+TO_DO_BATTLE_TEST("Beast Boost doesn't consider held items");
+TO_DO_BATTLE_TEST("Beast Boost doesn't consider status condition reductions");
diff --git a/test/battle/ability/berserk.c b/test/battle/ability/berserk.c
index e4d625ebc5..80e418e3c5 100644
--- a/test/battle/ability/berserk.c
+++ b/test/battle/ability/berserk.c
@@ -1,7 +1,7 @@
#include "global.h"
#include "test/battle.h"
-SINGLE_BATTLE_TEST("Berserk activates only if the target had more than 50% of its hp")
+SINGLE_BATTLE_TEST("Berserk activates only if the target had more than 50% of its HP")
{
bool32 activates = FALSE;
u16 maxHp = 500, hp = 0;
diff --git a/test/battle/ability/bulletproof.c b/test/battle/ability/bulletproof.c
new file mode 100644
index 0000000000..733eb63a11
--- /dev/null
+++ b/test/battle/ability/bulletproof.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("Bulletproof makes ballistic moves fail against the ability user");
diff --git a/test/battle/ability/cheeck_pouch.c b/test/battle/ability/cheek_pouch.c
similarity index 100%
rename from test/battle/ability/cheeck_pouch.c
rename to test/battle/ability/cheek_pouch.c
diff --git a/test/battle/ability/competitive.c b/test/battle/ability/competitive.c
new file mode 100644
index 0000000000..cc3e582eab
--- /dev/null
+++ b/test/battle/ability/competitive.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Competitive (Ability) test titles")
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/dark_aura.c b/test/battle/ability/dark_aura.c
new file mode 100644
index 0000000000..eb1bf05246
--- /dev/null
+++ b/test/battle/ability/dark_aura.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Dark Aura (Ability) test titles")
diff --git a/test/battle/ability/dazzling.c b/test/battle/ability/dazzling.c
index e248c9ce0b..7541b8a566 100644
--- a/test/battle/ability/dazzling.c
+++ b/test/battle/ability/dazzling.c
@@ -72,3 +72,27 @@ DOUBLE_BATTLE_TEST("Dazzling, Queenly Majesty and Armor Tail don't protect the u
}
}
+SINGLE_BATTLE_TEST("Dazzling, Queenly Majesty and Armor Tail protect from all multi hit hits with one activation")
+{
+ u32 species, ability;
+
+ PARAMETRIZE { species = SPECIES_BRUXISH; ability = ABILITY_DAZZLING; }
+ PARAMETRIZE { species = SPECIES_FARIGIRAF; ability = ABILITY_ARMOR_TAIL; }
+ PARAMETRIZE { species = SPECIES_TSAREENA; ability = ABILITY_QUEENLY_MAJESTY; }
+
+ GIVEN {
+ PLAYER(SPECIES_WOBBUFFET);
+ OPPONENT(species) { Ability(ability); }
+ } WHEN {
+ TURN { MOVE(player, MOVE_WATER_SHURIKEN); }
+ } SCENE {
+ NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_WATER_SHURIKEN, opponent);
+ ABILITY_POPUP(opponent, ability);
+ NONE_OF {
+ ABILITY_POPUP(opponent, ability);
+ ABILITY_POPUP(opponent, ability);
+ ABILITY_POPUP(opponent, ability);
+ ABILITY_POPUP(opponent, ability);
+ }
+ }
+}
diff --git a/test/battle/ability/delta_stream.c b/test/battle/ability/delta_stream.c
new file mode 100644
index 0000000000..5b4081cb1e
--- /dev/null
+++ b/test/battle/ability/delta_stream.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Delta Stream (Ability) test titles")
diff --git a/test/battle/ability/early_bird.c b/test/battle/ability/early_bird.c
new file mode 100644
index 0000000000..9b368970f6
--- /dev/null
+++ b/test/battle/ability/early_bird.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Early Bird (Ability) test titles")
diff --git a/test/battle/ability/fairy_aura.c b/test/battle/ability/fairy_aura.c
new file mode 100644
index 0000000000..3b8d400b02
--- /dev/null
+++ b/test/battle/ability/fairy_aura.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Fairy Aura (Ability) test titles")
diff --git a/test/battle/ability/filter.c b/test/battle/ability/filter.c
new file mode 100644
index 0000000000..ca323b1be2
--- /dev/null
+++ b/test/battle/ability/filter.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Filter (Ability) test titles")
diff --git a/test/battle/ability/flare_boost.c b/test/battle/ability/flare_boost.c
new file mode 100644
index 0000000000..a4ff14382a
--- /dev/null
+++ b/test/battle/ability/flare_boost.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Flare Boost (Ability) test titles")
diff --git a/test/battle/ability/flower_veil.c b/test/battle/ability/flower_veil.c
index 97349b6ba3..2b36d08d60 100644
--- a/test/battle/ability/flower_veil.c
+++ b/test/battle/ability/flower_veil.c
@@ -3,15 +3,15 @@
ASSUMPTIONS
{
- ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_TOXIC);
+ ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_NON_VOLATILE_STATUS);
ASSUME(GetMoveNonVolatileStatus(MOVE_TOXIC) == MOVE_EFFECT_TOXIC);
- ASSUME(GetMoveEffect(MOVE_POISON_GAS) == EFFECT_POISON);
+ ASSUME(GetMoveEffect(MOVE_POISON_GAS) == EFFECT_NON_VOLATILE_STATUS);
ASSUME(GetMoveNonVolatileStatus(MOVE_POISON_GAS) == MOVE_EFFECT_POISON);
- 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_THUNDER_WAVE) == EFFECT_PARALYZE);
+ ASSUME(GetMoveEffect(MOVE_THUNDER_WAVE) == EFFECT_NON_VOLATILE_STATUS);
ASSUME(GetMoveNonVolatileStatus(MOVE_THUNDER_WAVE) == MOVE_EFFECT_PARALYSIS);
- ASSUME(GetMoveEffect(MOVE_HYPNOSIS) == EFFECT_SLEEP);
+ ASSUME(GetMoveEffect(MOVE_HYPNOSIS) == EFFECT_NON_VOLATILE_STATUS);
ASSUME(GetMoveNonVolatileStatus(MOVE_HYPNOSIS) == MOVE_EFFECT_SLEEP);
}
diff --git a/test/battle/ability/forewarn.c b/test/battle/ability/forewarn.c
new file mode 100644
index 0000000000..810fcd975f
--- /dev/null
+++ b/test/battle/ability/forewarn.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Forewarn (Ability) test titles")
diff --git a/test/battle/ability/friend_guard.c b/test/battle/ability/friend_guard.c
new file mode 100644
index 0000000000..5e4776731e
--- /dev/null
+++ b/test/battle/ability/friend_guard.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Friend Guard (Ability) test titles")
diff --git a/test/battle/ability/fur_coat.c b/test/battle/ability/fur_coat.c
new file mode 100644
index 0000000000..56fb197114
--- /dev/null
+++ b/test/battle/ability/fur_coat.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Fur Coat (Ability) test titles")
diff --git a/test/battle/ability/gluttony.c b/test/battle/ability/gluttony.c
new file mode 100644
index 0000000000..4ceda945f6
--- /dev/null
+++ b/test/battle/ability/gluttony.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Gluttony (Ability) test titles")
diff --git a/test/battle/ability/gooey.c b/test/battle/ability/gooey.c
new file mode 100644
index 0000000000..ad78e30c39
--- /dev/null
+++ b/test/battle/ability/gooey.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Gooey (Ability) test titles")
diff --git a/test/battle/ability/gorilla_tactics.c b/test/battle/ability/gorilla_tactics.c
new file mode 100644
index 0000000000..2bafd88165
--- /dev/null
+++ b/test/battle/ability/gorilla_tactics.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Gorilla Tactics (Ability) test titles")
diff --git a/test/battle/ability/grass_pelt.c b/test/battle/ability/grass_pelt.c
new file mode 100644
index 0000000000..1696b71e10
--- /dev/null
+++ b/test/battle/ability/grass_pelt.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Grass Pelt (Ability) test titles")
diff --git a/test/battle/ability/guts.c b/test/battle/ability/guts.c
new file mode 100644
index 0000000000..459adc0e69
--- /dev/null
+++ b/test/battle/ability/guts.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Guts (Ability) test titles")
diff --git a/test/battle/ability/hadron_engine.c b/test/battle/ability/hadron_engine.c
new file mode 100644
index 0000000000..e6324c0c51
--- /dev/null
+++ b/test/battle/ability/hadron_engine.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Hadron Engine (Ability) test titles")
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/heatproof.c b/test/battle/ability/heatproof.c
new file mode 100644
index 0000000000..7f1d772bb7
--- /dev/null
+++ b/test/battle/ability/heatproof.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Heatproof (Ability) test titles")
diff --git a/test/battle/ability/heavy_metal.c b/test/battle/ability/heavy_metal.c
new file mode 100644
index 0000000000..baaa039b19
--- /dev/null
+++ b/test/battle/ability/heavy_metal.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Heavy Metal (Ability) test titles")
diff --git a/test/battle/ability/honey_gather.c b/test/battle/ability/honey_gather.c
new file mode 100644
index 0000000000..56dbb22f2e
--- /dev/null
+++ b/test/battle/ability/honey_gather.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Honey Gather (Ability) test titles")
diff --git a/test/battle/ability/huge_power.c b/test/battle/ability/huge_power.c
new file mode 100644
index 0000000000..9362bf8ce3
--- /dev/null
+++ b/test/battle/ability/huge_power.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Huge Power (Ability) test titles")
diff --git a/test/battle/ability/hustle.c b/test/battle/ability/hustle.c
new file mode 100644
index 0000000000..c399bfa501
--- /dev/null
+++ b/test/battle/ability/hustle.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Hustle (Ability) test titles")
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/illuminate.c b/test/battle/ability/illuminate.c
new file mode 100644
index 0000000000..72bf1f6f81
--- /dev/null
+++ b/test/battle/ability/illuminate.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Illuminate (Ability) test titles")
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/imposter.c b/test/battle/ability/imposter.c
new file mode 100644
index 0000000000..98f6cc29fc
--- /dev/null
+++ b/test/battle/ability/imposter.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Imposter (Ability) test titles")
diff --git a/test/battle/ability/infiltrator.c b/test/battle/ability/infiltrator.c
new file mode 100644
index 0000000000..faf00ee113
--- /dev/null
+++ b/test/battle/ability/infiltrator.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Infiltrator (Ability) test titles")
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/iron_barbs.c b/test/battle/ability/iron_barbs.c
new file mode 100644
index 0000000000..8b1525a9f6
--- /dev/null
+++ b/test/battle/ability/iron_barbs.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Iron Barbs (Ability) test titles")
diff --git a/test/battle/ability/iron_fist.c b/test/battle/ability/iron_fist.c
new file mode 100644
index 0000000000..ae26f9cdd0
--- /dev/null
+++ b/test/battle/ability/iron_fist.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Iron Fist (Ability) test titles")
diff --git a/test/battle/ability/justified.c b/test/battle/ability/justified.c
new file mode 100644
index 0000000000..3416d77415
--- /dev/null
+++ b/test/battle/ability/justified.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Justified (Ability) test titles")
diff --git a/test/battle/ability/klutz.c b/test/battle/ability/klutz.c
new file mode 100644
index 0000000000..76216edd17
--- /dev/null
+++ b/test/battle/ability/klutz.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Klutz (Ability) test titles")
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/levitate.c b/test/battle/ability/levitate.c
new file mode 100644
index 0000000000..a1c1dc927d
--- /dev/null
+++ b/test/battle/ability/levitate.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Levitate (Ability) test titles")
diff --git a/test/battle/ability/libero.c b/test/battle/ability/libero.c
new file mode 100644
index 0000000000..8ea93df3c0
--- /dev/null
+++ b/test/battle/ability/libero.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Libero (Ability) test titles")
diff --git a/test/battle/ability/light_metal.c b/test/battle/ability/light_metal.c
new file mode 100644
index 0000000000..8ad4a6a4b5
--- /dev/null
+++ b/test/battle/ability/light_metal.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Light Metal (Ability) test titles")
diff --git a/test/battle/ability/limber.c b/test/battle/ability/limber.c
index fa18069946..f89f9a1e74 100644
--- a/test/battle/ability/limber.c
+++ b/test/battle/ability/limber.c
@@ -22,7 +22,7 @@ SINGLE_BATTLE_TEST("Limber prevents paralysis")
SINGLE_BATTLE_TEST("Limber prevents paralysis from Thunder Wave")
{
GIVEN {
- ASSUME(GetMoveEffect(MOVE_THUNDER_WAVE) == EFFECT_PARALYZE);
+ 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);
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/long_reach.c b/test/battle/ability/long_reach.c
new file mode 100644
index 0000000000..3558ea92b2
--- /dev/null
+++ b/test/battle/ability/long_reach.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Long Reach (Ability) test titles")
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/magma_armor.c b/test/battle/ability/magma_armor.c
new file mode 100644
index 0000000000..e61444baee
--- /dev/null
+++ b/test/battle/ability/magma_armor.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Magma Armor (Ability) test titles")
diff --git a/test/battle/ability/magnet_pull.c b/test/battle/ability/magnet_pull.c
new file mode 100644
index 0000000000..538b15f824
--- /dev/null
+++ b/test/battle/ability/magnet_pull.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Magnet Pull (Ability) test titles")
diff --git a/test/battle/ability/marvel_scale.c b/test/battle/ability/marvel_scale.c
new file mode 100644
index 0000000000..4fc7ee3c62
--- /dev/null
+++ b/test/battle/ability/marvel_scale.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Marvel Scale (Ability) test titles")
diff --git a/test/battle/ability/mega_launcher.c b/test/battle/ability/mega_launcher.c
new file mode 100644
index 0000000000..dae3799f81
--- /dev/null
+++ b/test/battle/ability/mega_launcher.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Mega Launcher (Ability) test titles")
diff --git a/test/battle/ability/minus.c b/test/battle/ability/minus.c
new file mode 100644
index 0000000000..bf841465a6
--- /dev/null
+++ b/test/battle/ability/minus.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Minus (Ability) test titles")
diff --git a/test/battle/ability/mold_breaker.c b/test/battle/ability/mold_breaker.c
new file mode 100644
index 0000000000..2c04deeeef
--- /dev/null
+++ b/test/battle/ability/mold_breaker.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Mold Breaker (Ability) test titles")
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/multiscale.c b/test/battle/ability/multiscale.c
new file mode 100644
index 0000000000..f2a808d69a
--- /dev/null
+++ b/test/battle/ability/multiscale.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Multiscale (Ability) test titles")
diff --git a/test/battle/ability/multitype.c b/test/battle/ability/multitype.c
new file mode 100644
index 0000000000..a8b384180f
--- /dev/null
+++ b/test/battle/ability/multitype.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Multitype (Ability) test titles")
diff --git a/test/battle/ability/natural_cure.c b/test/battle/ability/natural_cure.c
new file mode 100644
index 0000000000..760c341e12
--- /dev/null
+++ b/test/battle/ability/natural_cure.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Natural Cure (Ability) test titles")
diff --git a/test/battle/ability/no_guard.c b/test/battle/ability/no_guard.c
new file mode 100644
index 0000000000..e365968d45
--- /dev/null
+++ b/test/battle/ability/no_guard.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write No Guard (Ability) test titles")
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 e7cd83426e..1c0926ac80 100644
--- a/test/battle/ability/pastel_veil.c
+++ b/test/battle/ability/pastel_veil.c
@@ -3,7 +3,7 @@
ASSUMPTIONS
{
- ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_TOXIC);
+ ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_NON_VOLATILE_STATUS);
ASSUME(GetMoveNonVolatileStatus(MOVE_TOXIC) == MOVE_EFFECT_TOXIC);
}
diff --git a/test/battle/ability/perish_body.c b/test/battle/ability/perish_body.c
new file mode 100644
index 0000000000..92562ef885
--- /dev/null
+++ b/test/battle/ability/perish_body.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Perish Body (Ability) test titles")
diff --git a/test/battle/ability/pickpocket.c b/test/battle/ability/pickpocket.c
new file mode 100644
index 0000000000..1e8ec6a526
--- /dev/null
+++ b/test/battle/ability/pickpocket.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Pickpocket (Ability) test titles")
diff --git a/test/battle/ability/pickup.c b/test/battle/ability/pickup.c
index 501e7f37bd..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 {
diff --git a/test/battle/ability/plus.c b/test/battle/ability/plus.c
new file mode 100644
index 0000000000..5b56018bf6
--- /dev/null
+++ b/test/battle/ability/plus.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Plus (Ability) test titles")
diff --git a/test/battle/ability/poison_puppeteer.c b/test/battle/ability/poison_puppeteer.c
index d5c470ad37..db27691415 100644
--- a/test/battle/ability/poison_puppeteer.c
+++ b/test/battle/ability/poison_puppeteer.c
@@ -1,10 +1,6 @@
#include "global.h"
#include "test/battle.h"
-ASSUMPTIONS
-{
-}
-
SINGLE_BATTLE_TEST("Poison Puppeteer confuses target if it was poisoned by a damaging move")
{
GIVEN {
diff --git a/test/battle/ability/power_construct.c b/test/battle/ability/power_construct.c
new file mode 100644
index 0000000000..6a8ca9db5f
--- /dev/null
+++ b/test/battle/ability/power_construct.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Power Construct (Ability) test titles")
diff --git a/test/battle/ability/power_of_alchemy.c b/test/battle/ability/power_of_alchemy.c
new file mode 100644
index 0000000000..137a20a43d
--- /dev/null
+++ b/test/battle/ability/power_of_alchemy.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Power of Alchemy (Ability) test titles")
diff --git a/test/battle/ability/power_spot.c b/test/battle/ability/power_spot.c
new file mode 100644
index 0000000000..c44eb9a924
--- /dev/null
+++ b/test/battle/ability/power_spot.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Power Spot (Ability) test titles")
diff --git a/test/battle/ability/prism_armor.c b/test/battle/ability/prism_armor.c
new file mode 100644
index 0000000000..532642d3a2
--- /dev/null
+++ b/test/battle/ability/prism_armor.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Prism Armor (Ability) test titles")
diff --git a/test/battle/ability/propeller_tail.c b/test/battle/ability/propeller_tail.c
new file mode 100644
index 0000000000..eb8df38c8f
--- /dev/null
+++ b/test/battle/ability/propeller_tail.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Propeller Tail (Ability) test titles")
diff --git a/test/battle/ability/protosynthesis.c b/test/battle/ability/protosynthesis.c
index d895879c60..6fd271acb2 100644
--- a/test/battle/ability/protosynthesis.c
+++ b/test/battle/ability/protosynthesis.c
@@ -100,59 +100,36 @@ SINGLE_BATTLE_TEST("Protosynthesis activates on switch-in")
}
}
-SINGLE_BATTLE_TEST("Protosynthesis boosts Attack 1st in case of a stat tie")
+SINGLE_BATTLE_TEST("Protosynthesis prioritizes stats in the case of a tie in the following order: Atk, Def, Sp.Atk, Sp.Def, Speed")
{
- GIVEN {
- PLAYER(SPECIES_GREAT_TUSK) { Ability(ABILITY_PROTOSYNTHESIS); Attack(5); Defense(5); SpAttack(5); SpDefense(5); Speed(5); }
- OPPONENT(SPECIES_GROUDON) { Ability(ABILITY_DROUGHT); Speed(5); }
- } WHEN {
- TURN { }
- } SCENE {
- ABILITY_POPUP(opponent, ABILITY_DROUGHT);
- ABILITY_POPUP(player, ABILITY_PROTOSYNTHESIS);
- MESSAGE("Great Tusk's Attack was heightened!");
- }
-}
+ u8 stats[] = {1, 1, 1, 1, 1};
-SINGLE_BATTLE_TEST("Protosynthesis boosts Defense 2nd in case of a stat tie")
-{
+ PARAMETRIZE { stats[4] = 255; stats[3] = 255; stats[2] = 255; stats[1] = 255; stats[0] = 255; }
+ PARAMETRIZE { stats[4] = 255; stats[3] = 255; stats[2] = 255; stats[1] = 255; }
+ PARAMETRIZE { stats[4] = 255; stats[3] = 255; stats[2] = 255; }
+ PARAMETRIZE { stats[4] = 255; stats[3] = 255; }
GIVEN {
- PLAYER(SPECIES_GREAT_TUSK) { Ability(ABILITY_PROTOSYNTHESIS); Attack(4); Defense(5); SpAttack(5); SpDefense(5); Speed(5); }
+ PLAYER(SPECIES_GREAT_TUSK) { Ability(ABILITY_PROTOSYNTHESIS); Attack(stats[0]); Defense(stats[1]); SpAttack(stats[2]); SpDefense(stats[3]); Speed(stats[4]); }
OPPONENT(SPECIES_GROUDON) { Ability(ABILITY_DROUGHT); Speed(5); }
} WHEN {
TURN { }
} SCENE {
ABILITY_POPUP(opponent, ABILITY_DROUGHT);
ABILITY_POPUP(player, ABILITY_PROTOSYNTHESIS);
- MESSAGE("Great Tusk's Defense was heightened!");
- }
-}
-
-SINGLE_BATTLE_TEST("Protosynthesis boosts Special Attack 3rd in case of a stat tie")
-{
- GIVEN {
- PLAYER(SPECIES_GREAT_TUSK) { Ability(ABILITY_PROTOSYNTHESIS); Attack(4); Defense(4); SpAttack(5); SpDefense(5); Speed(5); }
- OPPONENT(SPECIES_GROUDON) { Ability(ABILITY_DROUGHT); Speed(5); }
- } WHEN {
- TURN { }
- } SCENE {
- ABILITY_POPUP(opponent, ABILITY_DROUGHT);
- ABILITY_POPUP(player, ABILITY_PROTOSYNTHESIS);
- MESSAGE("Great Tusk's Sp. Atk was heightened!");
- }
-}
-
-SINGLE_BATTLE_TEST("Protosynthesis boosts Special Defense 4th in case of a stat tie")
-{
- GIVEN {
- PLAYER(SPECIES_GREAT_TUSK) { Ability(ABILITY_PROTOSYNTHESIS); Attack(4); Defense(4); SpAttack(4); SpDefense(5); Speed(5); }
- OPPONENT(SPECIES_GROUDON) { Ability(ABILITY_DROUGHT); Speed(5); }
- } WHEN {
- TURN { }
- } SCENE {
- ABILITY_POPUP(opponent, ABILITY_DROUGHT);
- ABILITY_POPUP(player, ABILITY_PROTOSYNTHESIS);
- MESSAGE("Great Tusk's Sp. Def was heightened!");
+ switch(i) {
+ case 0:
+ MESSAGE("Great Tusk's Attack was heightened!");
+ break;
+ case 1:
+ MESSAGE("Great Tusk's Defense was heightened!");
+ break;
+ case 2:
+ MESSAGE("Great Tusk's Sp. Atk was heightened!");
+ break;
+ case 3:
+ MESSAGE("Great Tusk's Sp. Def was heightened!");
+ break;
+ }
}
}
diff --git a/test/battle/ability/punk_rock.c b/test/battle/ability/punk_rock.c
new file mode 100644
index 0000000000..01a5459a0d
--- /dev/null
+++ b/test/battle/ability/punk_rock.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Punk Rock (Ability) test titles")
diff --git a/test/battle/ability/pure_power.c b/test/battle/ability/pure_power.c
new file mode 100644
index 0000000000..e33479252c
--- /dev/null
+++ b/test/battle/ability/pure_power.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Pure Power (Ability) test titles")
diff --git a/test/battle/ability/purifying_salt.c b/test/battle/ability/purifying_salt.c
index 1c98466aef..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);
diff --git a/test/battle/ability/quark_drive.c b/test/battle/ability/quark_drive.c
index e4850e7001..61a51d3d35 100644
--- a/test/battle/ability/quark_drive.c
+++ b/test/battle/ability/quark_drive.c
@@ -115,59 +115,36 @@ SINGLE_BATTLE_TEST("Quark Drive activates on Electric Terrain even if not ground
}
}
-SINGLE_BATTLE_TEST("Quark Drive boosts Attack 1st in case of a stat tie")
+SINGLE_BATTLE_TEST("Quark Drive prioritizes stats in the case of a tie in the following order: Atk, Def, Sp.Atk, Sp.Def, Speed")
{
- GIVEN {
- PLAYER(SPECIES_IRON_TREADS) { Ability(ABILITY_QUARK_DRIVE); Attack(5); Defense(5); SpAttack(5); SpDefense(5); Speed(5); }
- OPPONENT(SPECIES_TAPU_KOKO) { Ability(ABILITY_ELECTRIC_SURGE); Speed(5); }
- } WHEN {
- TURN { }
- } SCENE {
- ABILITY_POPUP(opponent, ABILITY_ELECTRIC_SURGE);
- ABILITY_POPUP(player, ABILITY_QUARK_DRIVE);
- MESSAGE("Iron Treads's Attack was heightened!");
- }
-}
+ u8 stats[] = {1, 1, 1, 1, 1};
-SINGLE_BATTLE_TEST("Quark Drive boosts Defense 2nd in case of a stat tie")
-{
+ PARAMETRIZE { stats[4] = 255; stats[3] = 255; stats[2] = 255; stats[1] = 255; stats[0] = 255; }
+ PARAMETRIZE { stats[4] = 255; stats[3] = 255; stats[2] = 255; stats[1] = 255; }
+ PARAMETRIZE { stats[4] = 255; stats[3] = 255; stats[2] = 255; }
+ PARAMETRIZE { stats[4] = 255; stats[3] = 255; }
GIVEN {
- PLAYER(SPECIES_IRON_TREADS) { Ability(ABILITY_QUARK_DRIVE); Attack(4); Defense(5); SpAttack(5); SpDefense(5); Speed(5); }
+ PLAYER(SPECIES_IRON_TREADS) { Ability(ABILITY_QUARK_DRIVE); Attack(stats[0]); Defense(stats[1]); SpAttack(stats[2]); SpDefense(stats[3]); Speed(stats[4]); }
OPPONENT(SPECIES_TAPU_KOKO) { Ability(ABILITY_ELECTRIC_SURGE); Speed(5); }
} WHEN {
TURN { }
} SCENE {
ABILITY_POPUP(opponent, ABILITY_ELECTRIC_SURGE);
ABILITY_POPUP(player, ABILITY_QUARK_DRIVE);
- MESSAGE("Iron Treads's Defense was heightened!");
- }
-}
-
-SINGLE_BATTLE_TEST("Quark Drive boosts Special Attack 3rd in case of a stat tie")
-{
- GIVEN {
- PLAYER(SPECIES_IRON_TREADS) { Ability(ABILITY_QUARK_DRIVE); Attack(4); Defense(4); SpAttack(5); SpDefense(5); Speed(5); }
- OPPONENT(SPECIES_TAPU_KOKO) { Ability(ABILITY_ELECTRIC_SURGE); Speed(5); }
- } WHEN {
- TURN { }
- } SCENE {
- ABILITY_POPUP(opponent, ABILITY_ELECTRIC_SURGE);
- ABILITY_POPUP(player, ABILITY_QUARK_DRIVE);
- MESSAGE("Iron Treads's Sp. Atk was heightened!");
- }
-}
-
-SINGLE_BATTLE_TEST("Quark Drive boosts Special Defense 4th in case of a stat tie")
-{
- GIVEN {
- PLAYER(SPECIES_IRON_TREADS) { Ability(ABILITY_QUARK_DRIVE); Attack(4); Defense(4); SpAttack(4); SpDefense(5); Speed(5); }
- OPPONENT(SPECIES_TAPU_KOKO) { Ability(ABILITY_ELECTRIC_SURGE); Speed(5); }
- } WHEN {
- TURN { }
- } SCENE {
- ABILITY_POPUP(opponent, ABILITY_ELECTRIC_SURGE);
- ABILITY_POPUP(player, ABILITY_QUARK_DRIVE);
- MESSAGE("Iron Treads's Sp. Def was heightened!");
+ switch(i) {
+ case 0:
+ MESSAGE("Iron Treads's Attack was heightened!");
+ break;
+ case 1:
+ MESSAGE("Iron Treads's Defense was heightened!");
+ break;
+ case 2:
+ MESSAGE("Iron Treads's Sp. Atk was heightened!");
+ break;
+ case 3:
+ MESSAGE("Iron Treads's Sp. Def was heightened!");
+ break;
+ }
}
}
diff --git a/test/battle/ability/quick_feet.c b/test/battle/ability/quick_feet.c
new file mode 100644
index 0000000000..fde10a7593
--- /dev/null
+++ b/test/battle/ability/quick_feet.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Quick Feet (Ability) test titles")
diff --git a/test/battle/ability/receiver.c b/test/battle/ability/receiver.c
new file mode 100644
index 0000000000..a9155b7244
--- /dev/null
+++ b/test/battle/ability/receiver.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Receiver (Ability) test titles")
diff --git a/test/battle/ability/reckless.c b/test/battle/ability/reckless.c
new file mode 100644
index 0000000000..49d5c59262
--- /dev/null
+++ b/test/battle/ability/reckless.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Reckless (Ability) test titles")
diff --git a/test/battle/ability/rks_system.c b/test/battle/ability/rks_system.c
new file mode 100644
index 0000000000..17c4d2d4a7
--- /dev/null
+++ b/test/battle/ability/rks_system.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write RKS System (Ability) test titles")
diff --git a/test/battle/ability/rock_head.c b/test/battle/ability/rock_head.c
new file mode 100644
index 0000000000..56db705778
--- /dev/null
+++ b/test/battle/ability/rock_head.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Rock Head (Ability) test titles")
diff --git a/test/battle/ability/run_away.c b/test/battle/ability/run_away.c
new file mode 100644
index 0000000000..c49eef7213
--- /dev/null
+++ b/test/battle/ability/run_away.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Run Away (Ability) test titles")
diff --git a/test/battle/ability/sand_spit.c b/test/battle/ability/sand_spit.c
new file mode 100644
index 0000000000..c2128f65de
--- /dev/null
+++ b/test/battle/ability/sand_spit.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Sand Spit (Ability) test titles")
diff --git a/test/battle/ability/sand_stream.c b/test/battle/ability/sand_stream.c
new file mode 100644
index 0000000000..6cd1b06eb4
--- /dev/null
+++ b/test/battle/ability/sand_stream.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Sand Stream (Ability) test titles")
diff --git a/test/battle/ability/screen_cleaner.c b/test/battle/ability/screen_cleaner.c
new file mode 100644
index 0000000000..dd4ad761d1
--- /dev/null
+++ b/test/battle/ability/screen_cleaner.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Screen Cleaner (Ability) test titles")
diff --git a/test/battle/ability/serene_grace.c b/test/battle/ability/serene_grace.c
new file mode 100644
index 0000000000..75dad60618
--- /dev/null
+++ b/test/battle/ability/serene_grace.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Serene Grace (Ability) test titles")
diff --git a/test/battle/ability/shadow_shield.c b/test/battle/ability/shadow_shield.c
new file mode 100644
index 0000000000..7a28500761
--- /dev/null
+++ b/test/battle/ability/shadow_shield.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Shadow Shield (Ability) test titles")
diff --git a/test/battle/ability/shadow_tag.c b/test/battle/ability/shadow_tag.c
new file mode 100644
index 0000000000..f00696d8b7
--- /dev/null
+++ b/test/battle/ability/shadow_tag.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Shadow Tag (Ability) test titles")
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/simple.c b/test/battle/ability/simple.c
new file mode 100644
index 0000000000..cfdbf407ea
--- /dev/null
+++ b/test/battle/ability/simple.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Simple (Ability) test titles")
diff --git a/test/battle/ability/skill_link.c b/test/battle/ability/skill_link.c
new file mode 100644
index 0000000000..2da8ee2c58
--- /dev/null
+++ b/test/battle/ability/skill_link.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Skill Link (Ability) test titles")
diff --git a/test/battle/ability/slow_start.c b/test/battle/ability/slow_start.c
new file mode 100644
index 0000000000..d5b3f5bcb5
--- /dev/null
+++ b/test/battle/ability/slow_start.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Slow Start (Ability) test titles")
diff --git a/test/battle/ability/soul_heart.c b/test/battle/ability/soul_heart.c
new file mode 100644
index 0000000000..393fbb6c20
--- /dev/null
+++ b/test/battle/ability/soul_heart.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Soul Heart (Ability) test titles")
diff --git a/test/battle/ability/soundproof.c b/test/battle/ability/soundproof.c
new file mode 100644
index 0000000000..a7135942d1
--- /dev/null
+++ b/test/battle/ability/soundproof.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Soundproof (Ability) test titles")
diff --git a/test/battle/ability/stakeout.c b/test/battle/ability/stakeout.c
new file mode 100644
index 0000000000..2bbea394fd
--- /dev/null
+++ b/test/battle/ability/stakeout.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Stakeout (Ability) test titles")
diff --git a/test/battle/ability/stall.c b/test/battle/ability/stall.c
new file mode 100644
index 0000000000..f93eac14c4
--- /dev/null
+++ b/test/battle/ability/stall.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Stall (Ability) test titles")
diff --git a/test/battle/ability/steadfast.c b/test/battle/ability/steadfast.c
new file mode 100644
index 0000000000..fc35e94278
--- /dev/null
+++ b/test/battle/ability/steadfast.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Steadfast (Ability) test titles")
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/steely_spirit.c b/test/battle/ability/steely_spirit.c
new file mode 100644
index 0000000000..e84893ad8c
--- /dev/null
+++ b/test/battle/ability/steely_spirit.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Steely Spirit (Ability) test titles")
diff --git a/test/battle/ability/strong_jaw.c b/test/battle/ability/strong_jaw.c
new file mode 100644
index 0000000000..1b9ce7fba7
--- /dev/null
+++ b/test/battle/ability/strong_jaw.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Strong Jaw (Ability) test titles")
diff --git a/test/battle/ability/suction_cups.c b/test/battle/ability/suction_cups.c
new file mode 100644
index 0000000000..bcf23c5e18
--- /dev/null
+++ b/test/battle/ability/suction_cups.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Suction Cups (Ability) test titles")
diff --git a/test/battle/ability/surge_surfer.c b/test/battle/ability/surge_surfer.c
new file mode 100644
index 0000000000..c0b1056a2d
--- /dev/null
+++ b/test/battle/ability/surge_surfer.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Surge Surfer (Ability) test titles")
diff --git a/test/battle/ability/sweet_veil.c b/test/battle/ability/sweet_veil.c
index 0e1322925f..56431055c6 100644
--- a/test/battle/ability/sweet_veil.c
+++ b/test/battle/ability/sweet_veil.c
@@ -3,7 +3,7 @@
ASSUMPTIONS
{
- ASSUME(GetMoveEffect(MOVE_HYPNOSIS) == EFFECT_SLEEP);
+ ASSUME(GetMoveEffect(MOVE_HYPNOSIS) == EFFECT_NON_VOLATILE_STATUS);
ASSUME(GetMoveNonVolatileStatus(MOVE_HYPNOSIS) == MOVE_EFFECT_SLEEP);
}
diff --git a/test/battle/ability/synchronize.c b/test/battle/ability/synchronize.c
index 83f960973c..e150e2950e 100644
--- a/test/battle/ability/synchronize.c
+++ b/test/battle/ability/synchronize.c
@@ -5,7 +5,8 @@ SINGLE_BATTLE_TEST("Synchronize will mirror back non volatile status back at opp
{
GIVEN {
- ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_TOXIC);
+ 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); }
diff --git a/test/battle/ability/tangled_feet.c b/test/battle/ability/tangled_feet.c
new file mode 100644
index 0000000000..fb50ba191d
--- /dev/null
+++ b/test/battle/ability/tangled_feet.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Tangled Feet (Ability) test titles")
diff --git a/test/battle/ability/technician.c b/test/battle/ability/technician.c
new file mode 100644
index 0000000000..bd529a5a01
--- /dev/null
+++ b/test/battle/ability/technician.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Technician (Ability) test titles")
diff --git a/test/battle/ability/telepathy.c b/test/battle/ability/telepathy.c
new file mode 100644
index 0000000000..220b2e7180
--- /dev/null
+++ b/test/battle/ability/telepathy.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Telepathy (Ability) test titles")
diff --git a/test/battle/ability/teravolt.c b/test/battle/ability/teravolt.c
new file mode 100644
index 0000000000..e9739a720d
--- /dev/null
+++ b/test/battle/ability/teravolt.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Teravolt (Ability) test titles")
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/thick_fat.c b/test/battle/ability/thick_fat.c
new file mode 100644
index 0000000000..bcc4c9487c
--- /dev/null
+++ b/test/battle/ability/thick_fat.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Thick Fat (Ability) test titles")
diff --git a/test/battle/ability/tinted_lens.c b/test/battle/ability/tinted_lens.c
new file mode 100644
index 0000000000..9ddb69ec17
--- /dev/null
+++ b/test/battle/ability/tinted_lens.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Tinted Lens (Ability) test titles")
diff --git a/test/battle/ability/tough_claws.c b/test/battle/ability/tough_claws.c
new file mode 100644
index 0000000000..4e6f4ecf8b
--- /dev/null
+++ b/test/battle/ability/tough_claws.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Tough Claws (Ability) test titles")
diff --git a/test/battle/ability/toxic_boost.c b/test/battle/ability/toxic_boost.c
new file mode 100644
index 0000000000..85960c5b02
--- /dev/null
+++ b/test/battle/ability/toxic_boost.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Toxic Boost (Ability) test titles")
diff --git a/test/battle/ability/triage.c b/test/battle/ability/triage.c
new file mode 100644
index 0000000000..753d32b717
--- /dev/null
+++ b/test/battle/ability/triage.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Triage (Ability) test titles")
diff --git a/test/battle/ability/truant.c b/test/battle/ability/truant.c
new file mode 100644
index 0000000000..85c0fe7749
--- /dev/null
+++ b/test/battle/ability/truant.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Truant (Ability) test titles")
diff --git a/test/battle/ability/turboblaze.c b/test/battle/ability/turboblaze.c
new file mode 100644
index 0000000000..a715c23111
--- /dev/null
+++ b/test/battle/ability/turboblaze.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Turboblaze (Ability) test titles")
diff --git a/test/battle/ability/unaware.c b/test/battle/ability/unaware.c
new file mode 100644
index 0000000000..5eb83cb9df
--- /dev/null
+++ b/test/battle/ability/unaware.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Unaware (Ability) test titles")
diff --git a/test/battle/ability/unburden.c b/test/battle/ability/unburden.c
index 63a72e2ace..0ddce0f227 100644
--- a/test/battle/ability/unburden.c
+++ b/test/battle/ability/unburden.c
@@ -4,7 +4,7 @@
SINGLE_BATTLE_TEST("Unburden doubles speed once user uses item")
{
GIVEN {
- ASSUME(ItemId_GetHoldEffect(ITEM_GRASSY_SEED) == HOLD_EFFECT_SEEDS);
+ ASSUME(GetItemHoldEffect(ITEM_GRASSY_SEED) == HOLD_EFFECT_SEEDS);
ASSUME(GetMoveEffect(MOVE_U_TURN) == EFFECT_HIT_ESCAPE);
PLAYER(SPECIES_DRIFBLIM) { Ability(ABILITY_UNBURDEN); Item(ITEM_GRASSY_SEED); Speed(5); }
OPPONENT(SPECIES_WOBBUFFET) { Speed(7); }
@@ -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/unnerve.c b/test/battle/ability/unnerve.c
index 4547854231..9a8972eb5c 100644
--- a/test/battle/ability/unnerve.c
+++ b/test/battle/ability/unnerve.c
@@ -72,3 +72,30 @@ SINGLE_BATTLE_TEST("Unnerve prints the correct string (opponent)")
MESSAGE("Your team is too nervous to eat Berries!");
}
}
+
+SINGLE_BATTLE_TEST("Unnerve activates only once per switch-in")
+{
+ u16 mon;
+ u16 ability;
+ PARAMETRIZE { mon = SPECIES_JOLTIK, ability = ABILITY_UNNERVE; }
+ PARAMETRIZE { mon = SPECIES_CALYREX_ICE, ability = ABILITY_AS_ONE_ICE_RIDER; }
+ GIVEN {
+ PLAYER(SPECIES_WOBBUFFET);
+ PLAYER(SPECIES_WEEZING) { Ability(ABILITY_NEUTRALIZING_GAS); }
+ OPPONENT(mon) { Ability(ability); }
+ OPPONENT(mon) { Ability(ability); }
+ } WHEN {
+ TURN { SWITCH(player, 1); }
+ TURN { SWITCH(player, 0); }
+ TURN { SWITCH(player, 1); }
+ TURN { SWITCH(player, 0); }
+ TURN { SWITCH(opponent, 1); }
+ } SCENE {
+ ABILITY_POPUP(opponent, ability);
+ ABILITY_POPUP(player, ABILITY_NEUTRALIZING_GAS);
+ NOT ABILITY_POPUP(opponent, ability);
+ ABILITY_POPUP(player, ABILITY_NEUTRALIZING_GAS);
+ ABILITY_POPUP(opponent, ability);
+
+ }
+}
diff --git a/test/battle/ability/unseen_fist.c b/test/battle/ability/unseen_fist.c
new file mode 100644
index 0000000000..046ef7d2fb
--- /dev/null
+++ b/test/battle/ability/unseen_fist.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Unseen Fist (Ability) test titles")
diff --git a/test/battle/ability/victory_star.c b/test/battle/ability/victory_star.c
new file mode 100644
index 0000000000..46c3aca825
--- /dev/null
+++ b/test/battle/ability/victory_star.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Victory Star (Ability) test titles")
diff --git a/test/battle/ability/vital_spirit.c b/test/battle/ability/vital_spirit.c
new file mode 100644
index 0000000000..2539df2334
--- /dev/null
+++ b/test/battle/ability/vital_spirit.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Vital Spirit (Ability) test titles")
diff --git a/test/battle/ability/wandering_spirit.c b/test/battle/ability/wandering_spirit.c
new file mode 100644
index 0000000000..d32fb7c7b2
--- /dev/null
+++ b/test/battle/ability/wandering_spirit.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Wandering Spirit (Ability) test titles")
diff --git a/test/battle/ability/water_bubble.c b/test/battle/ability/water_bubble.c
index f6d838ae31..d140dac040 100644
--- a/test/battle/ability/water_bubble.c
+++ b/test/battle/ability/water_bubble.c
@@ -4,7 +4,7 @@
SINGLE_BATTLE_TEST("Water Bubble prevents burn from Will-o-Wisp")
{
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_DEWPIDER) { Ability(ABILITY_WATER_BUBBLE); }
OPPONENT(SPECIES_WOBBUFFET);
diff --git a/test/battle/ability/water_veil.c b/test/battle/ability/water_veil.c
new file mode 100644
index 0000000000..428243fc10
--- /dev/null
+++ b/test/battle/ability/water_veil.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Water Veil (Ability) test titles")
diff --git a/test/battle/ability/well_baked_body.c b/test/battle/ability/well_baked_body.c
new file mode 100644
index 0000000000..ae555b47cf
--- /dev/null
+++ b/test/battle/ability/well_baked_body.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Well-Baked Body (Ability) test titles")
diff --git a/test/battle/ability/wimp_out.c b/test/battle/ability/wimp_out.c
new file mode 100644
index 0000000000..3ceea91788
--- /dev/null
+++ b/test/battle/ability/wimp_out.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Wimp Out (Ability) test titles")
diff --git a/test/battle/ability/wonder_guard.c b/test/battle/ability/wonder_guard.c
new file mode 100644
index 0000000000..673b6c113a
--- /dev/null
+++ b/test/battle/ability/wonder_guard.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Wonder Guard (Ability) test titles")
diff --git a/test/battle/ability/wonder_skin.c b/test/battle/ability/wonder_skin.c
new file mode 100644
index 0000000000..6501894f1c
--- /dev/null
+++ b/test/battle/ability/wonder_skin.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Wonder Skin (Ability) test titles")
diff --git a/test/battle/ai/ai.c b/test/battle/ai/ai.c
index 6f7d0488b3..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;
@@ -903,7 +732,7 @@ AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_SWITCHING: AI considers Focus Sash when det
AI_SINGLE_BATTLE_TEST("AI sees popped Air Balloon")
{
GIVEN {
- ASSUME(ItemId_GetHoldEffect(ITEM_AIR_BALLOON) == HOLD_EFFECT_AIR_BALLOON);
+ ASSUME(GetItemHoldEffect(ITEM_AIR_BALLOON) == HOLD_EFFECT_AIR_BALLOON);
ASSUME(GetMoveType(MOVE_EARTHQUAKE) == TYPE_GROUND);
AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY | AI_FLAG_OMNISCIENT);
PLAYER(SPECIES_TORCHIC) { Item(ITEM_AIR_BALLOON); Moves(MOVE_SCRATCH); }
@@ -917,7 +746,7 @@ AI_SINGLE_BATTLE_TEST("AI sees popped Air Balloon")
AI_SINGLE_BATTLE_TEST("AI sees popped Air Balloon after Air Balloon mon switches out and back in")
{
GIVEN {
- ASSUME(ItemId_GetHoldEffect(ITEM_AIR_BALLOON) == HOLD_EFFECT_AIR_BALLOON);
+ ASSUME(GetItemHoldEffect(ITEM_AIR_BALLOON) == HOLD_EFFECT_AIR_BALLOON);
ASSUME(GetMoveType(MOVE_EARTHQUAKE) == TYPE_GROUND);
AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY | AI_FLAG_OMNISCIENT);
PLAYER(SPECIES_TORCHIC) { Item(ITEM_AIR_BALLOON); Moves(MOVE_SCRATCH); }
@@ -942,15 +771,15 @@ 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);
}
}
@@ -973,9 +802,12 @@ AI_SINGLE_BATTLE_TEST("AI won't use status moves against opponents that would be
PARAMETRIZE { aiMove = MOVE_TOXIC; }
PARAMETRIZE { aiMove = MOVE_THUNDER_WAVE; }
GIVEN {
- ASSUME(GetMoveEffect(MOVE_WILL_O_WISP) == EFFECT_WILL_O_WISP);
- ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_TOXIC);
- ASSUME(GetMoveEffect(MOVE_THUNDER_WAVE) == EFFECT_PARALYZE);
+ 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); }
@@ -983,3 +815,53 @@ AI_SINGLE_BATTLE_TEST("AI won't use status moves against opponents that would be
TURN { MOVE(player, MOVE_TACKLE); EXPECT_MOVE(opponent, MOVE_TACKLE); }
}
}
+
+AI_SINGLE_BATTLE_TEST("AI sees that Primal weather can block a move by type")
+{
+ GIVEN {
+ ASSUME(GetMoveType(MOVE_HYDRO_PUMP) == TYPE_WATER);
+ AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY | AI_FLAG_OMNISCIENT);
+ PLAYER(SPECIES_GROUDON) { Item(ITEM_RED_ORB); Moves(MOVE_SCRATCH); }
+ OPPONENT(SPECIES_BLASTOISE) { Moves(MOVE_HYDRO_PUMP, MOVE_POUND); }
+ } WHEN {
+ TURN { MOVE(player, MOVE_SCRATCH); EXPECT_MOVE(opponent, MOVE_POUND); }
+ }
+}
+
+AI_DOUBLE_BATTLE_TEST("AI sees opposing drain ability")
+{
+ GIVEN {
+ ASSUME(GetMoveType(MOVE_THUNDERBOLT) == TYPE_ELECTRIC);
+ ASSUME(GetMoveType(MOVE_RAZOR_LEAF) != TYPE_ELECTRIC);
+ ASSUME(GetMoveType(MOVE_METAL_CLAW) != TYPE_ELECTRIC);
+ AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_OMNISCIENT);
+ PLAYER(SPECIES_RAICHU) { Ability(ABILITY_LIGHTNING_ROD); Moves(MOVE_CELEBRATE); }
+ PLAYER(SPECIES_KRABBY) { Ability(ABILITY_VOLT_ABSORB); Moves(MOVE_CELEBRATE); }
+ OPPONENT(SPECIES_MAGNETON) { Moves(MOVE_THUNDERBOLT, MOVE_RAZOR_LEAF); }
+ OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_THUNDERBOLT, MOVE_METAL_CLAW); }
+ } WHEN {
+ TURN {
+ NOT_EXPECT_MOVE(opponentLeft, MOVE_THUNDERBOLT);
+ NOT_EXPECT_MOVE(opponentRight, MOVE_THUNDERBOLT); }
+ }
+}
+
+AI_SINGLE_BATTLE_TEST("AI will not set up Weather if it wont have any affect")
+{
+ u32 ability;
+
+ PARAMETRIZE { ability = ABILITY_CLOUD_NINE; }
+ PARAMETRIZE { ability = ABILITY_DAMP; }
+
+ GIVEN {
+ ASSUME(GetMoveEffect(MOVE_RAIN_DANCE) == EFFECT_RAIN_DANCE);
+ AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY);
+ PLAYER(SPECIES_GOLDUCK) { Ability(ability); Moves(MOVE_SCRATCH); }
+ OPPONENT(SPECIES_KABUTOPS) { Ability(ABILITY_SWIFT_SWIM); Moves(MOVE_RAIN_DANCE, MOVE_POUND); }
+ } WHEN {
+ if (ability == ABILITY_CLOUD_NINE)
+ TURN { MOVE(player, MOVE_SCRATCH); EXPECT_MOVE(opponent, MOVE_POUND); }
+ else
+ TURN { MOVE(player, MOVE_SCRATCH); EXPECT_MOVE(opponent, MOVE_RAIN_DANCE); }
+ }
+}
diff --git a/test/battle/ai/ai_calc_best_move_score.c b/test/battle/ai/ai_calc_best_move_score.c
index f3b339deba..a4a13c283f 100644
--- a/test/battle/ai/ai_calc_best_move_score.c
+++ b/test/battle/ai/ai_calc_best_move_score.c
@@ -54,7 +54,7 @@ AI_SINGLE_BATTLE_TEST("AI will increase speed if it is slower")
}
}
-AI_SINGLE_BATTLE_TEST("AI will correctly predict what move the opposing mon going to use")
+AI_SINGLE_BATTLE_TEST("AI will not waste a turn setting up if it knows target can faint it")
{
u16 move;
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 ae67b9c06a..fc3706ca29 100644
--- a/test/battle/ai/ai_choice.c
+++ b/test/battle/ai/ai_choice.c
@@ -230,3 +230,23 @@ AI_SINGLE_BATTLE_TEST("Choiced Pokémon will only see choiced moves when conside
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
index 362783f731..97a7c12afa 100644
--- a/test/battle/ai/ai_flag_predict_move.c
+++ b/test/battle/ai/ai_flag_predict_move.c
@@ -14,3 +14,16 @@ AI_SINGLE_BATTLE_TEST("AI_FLAG_PREDICT_MOVE: AI will predict player's move")
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_switching.c b/test/battle/ai/ai_switching.c
index bb33ab4489..46c419f211 100644
--- a/test/battle/ai/ai_switching.c
+++ b/test/battle/ai/ai_switching.c
@@ -113,11 +113,11 @@ AI_DOUBLE_BATTLE_TEST("AI will not try to switch for the same pokemon for 2 spot
} WHEN {
TURN { EXPECT_SWITCH(opponentLeft, 3); };
} SCENE {
- MESSAGE("{PKMN} TRAINER LEAF withdrew Linoone!");
- MESSAGE("{PKMN} TRAINER LEAF sent out Gengar!");
+ MESSAGE(AI_TRAINER_NAME " withdrew Linoone!");
+ MESSAGE(AI_TRAINER_NAME " sent out Gengar!");
NONE_OF {
- MESSAGE("{PKMN} TRAINER LEAF withdrew Zigzagoon!");
- MESSAGE("{PKMN} TRAINER LEAF sent out Gengar!");
+ MESSAGE(AI_TRAINER_NAME " withdrew Zigzagoon!");
+ MESSAGE(AI_TRAINER_NAME " sent out Gengar!");
}
}
}
@@ -296,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 {
@@ -612,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); }
@@ -837,6 +838,7 @@ 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);
@@ -1137,13 +1139,14 @@ AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_SWITCHING: AI will switch out if all moves
{
PASSES_RANDOMLY(SHOULD_SWITCH_ALL_SCORES_BAD_PERCENTAGE, 100, RNG_AI_SWITCH_ALL_SCORES_BAD);
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_POLTERGEIST) == EFFECT_POLTERGEIST);
ASSUME(GetMoveType(MOVE_SCALD) == TYPE_WATER);
ASSUME(GetMoveType(MOVE_EARTHQUAKE) == TYPE_GROUND);
ASSUME(gSpeciesInfo[SPECIES_MANTINE].types[1] == TYPE_FLYING);
- ASSUME(ItemId_GetHoldEffect(ITEM_WATER_GEM) == HOLD_EFFECT_GEMS);
- ASSUME(ItemId_GetSecondaryId(ITEM_WATER_GEM) == TYPE_WATER);
+ 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); }
@@ -1177,3 +1180,62 @@ AI_SINGLE_BATTLE_TEST("Switch AI: AI will use pivot move to activate Palafin's Z
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/defrost.c b/test/battle/defrost.c
new file mode 100644
index 0000000000..3d456d6673
--- /dev/null
+++ b/test/battle/defrost.c
@@ -0,0 +1,18 @@
+#include "global.h"
+#include "test/battle.h"
+
+DOUBLE_BATTLE_TEST("Defrost: A fire type spread move will thaw both targets")
+{
+ GIVEN {
+ PLAYER(SPECIES_WOBBUFFET);
+ PLAYER(SPECIES_WOBBUFFET);
+ OPPONENT(SPECIES_WOBBUFFET) { Status1(STATUS1_FREEZE); }
+ OPPONENT(SPECIES_WOBBUFFET) { Status1(STATUS1_FREEZE); }
+ } WHEN {
+ TURN { MOVE(playerLeft, MOVE_HEAT_WAVE); }
+ } SCENE {
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_HEAT_WAVE, playerLeft);
+ STATUS_ICON(opponentLeft, freeze: FALSE);
+ STATUS_ICON(opponentRight, freeze: FALSE);
+ }
+}
diff --git a/test/battle/gimmick/dynamax.c b/test/battle/gimmick/dynamax.c
index ee12bac875..a929c82068 100644
--- a/test/battle/gimmick/dynamax.c
+++ b/test/battle/gimmick/dynamax.c
@@ -455,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);
}
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/eject_pack.c b/test/battle/hold_effect/eject_pack.c
index 0a21362a99..f33a59de21 100644
--- a/test/battle/hold_effect/eject_pack.c
+++ b/test/battle/hold_effect/eject_pack.c
@@ -161,12 +161,16 @@ SINGLE_BATTLE_TEST("Eject Pack will miss timing to switch out user if Eject Butt
}
}
-DOUBLE_BATTLE_TEST("Eject Pack: Only the fastest Eject Pack will activate after intimidate")
+DOUBLE_BATTLE_TEST("Eject Pack: Only the fastest Eject Pack will activate after an ability stat drop")
{
u32 speed;
+ u32 species, ability;
- PARAMETRIZE { speed = 1; }
- PARAMETRIZE { speed = 11; }
+ PARAMETRIZE { species = SPECIES_EKANS; ability = ABILITY_INTIMIDATE; speed = 1; }
+ PARAMETRIZE { species = SPECIES_EKANS; ability = ABILITY_INTIMIDATE; speed = 11; }
+
+ PARAMETRIZE { species = SPECIES_DIPPLIN; ability = ABILITY_SUPERSWEET_SYRUP; speed = 1; }
+ PARAMETRIZE { species = SPECIES_DIPPLIN; ability = ABILITY_SUPERSWEET_SYRUP; speed = 11; }
GIVEN {
PLAYER(SPECIES_WOBBUFFET) { Speed(10); Item(ITEM_EJECT_PACK); }
@@ -174,7 +178,7 @@ DOUBLE_BATTLE_TEST("Eject Pack: Only the fastest Eject Pack will activate after
PLAYER(SPECIES_WOBBUFFET) { Speed(3); }
OPPONENT(SPECIES_WYNAUT) { Speed(4); }
OPPONENT(SPECIES_WOBBUFFET) { Speed(5); }
- OPPONENT(SPECIES_EKANS) { Speed(6); Ability(ABILITY_INTIMIDATE); }
+ OPPONENT(species) { Speed(6); Ability(ability); }
} WHEN {
TURN {
SWITCH(opponentLeft, 2);
@@ -184,14 +188,18 @@ DOUBLE_BATTLE_TEST("Eject Pack: Only the fastest Eject Pack will activate after
SEND_OUT(playerLeft, 2);
}
} SCENE {
- ABILITY_POPUP(opponentLeft, ABILITY_INTIMIDATE);
+ ABILITY_POPUP(opponentLeft, ability);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerLeft);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerRight);
if (speed == 11) {
+ NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, playerRight);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, playerRight);
NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, playerLeft);
} else {
- NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, playerRight);
+ NONE_OF {
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, playerLeft);
+ ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, playerRight);
+ }
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, playerLeft);
}
}
diff --git a/test/battle/hold_effect/gems.c b/test/battle/hold_effect/gems.c
index 5486443808..52c85d7fb5 100644
--- a/test/battle/hold_effect/gems.c
+++ b/test/battle/hold_effect/gems.c
@@ -87,19 +87,3 @@ SINGLE_BATTLE_TEST("Gem is consumed if the move type is changed")
ANIMATION(ANIM_TYPE_MOVE, MOVE_FEINT_ATTACK, player);
}
}
-
-SINGLE_BATTLE_TEST("Gem is not consumed if a no type damage move is used") //ie. Counter, Psywave, Super Fang. All these moves have 1 base power.
-{
- ASSUME(GetMovePower(MOVE_PSYWAVE) == 1);
- GIVEN {
- PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_PSYCHIC_GEM); };
- OPPONENT(SPECIES_WOBBUFFET);
- } WHEN {
- TURN { MOVE(player, MOVE_PSYWAVE); }
- } SCENE {
- NONE_OF {
- ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player);
- MESSAGE("The Psychic Gem strengthened Wobbuffet's power!");
- }
- }
-}
diff --git a/test/battle/hold_effect/life_orb.c b/test/battle/hold_effect/life_orb.c
index f27ce29d03..7f4fcc2ccf 100644
--- a/test/battle/hold_effect/life_orb.c
+++ b/test/battle/hold_effect/life_orb.c
@@ -1,6 +1,21 @@
#include "global.h"
#include "test/battle.h"
+SINGLE_BATTLE_TEST("Life Orb activates when users attack is succesful")
+{
+ GIVEN {
+ PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_LIFE_ORB); }
+ OPPONENT(SPECIES_WOBBUFFET);
+ } WHEN {
+ TURN { MOVE(player, MOVE_POUND); }
+ } SCENE {
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_POUND, player);
+ HP_BAR(opponent);
+ HP_BAR(player);
+ MESSAGE("Wobbuffet was hurt by the Life Orb!");
+ }
+}
+
SINGLE_BATTLE_TEST("Life Orb activates if it hits a Substitute")
{
GIVEN {
@@ -31,3 +46,21 @@ SINGLE_BATTLE_TEST("Life Orb does not activate if using a status move")
}
}
}
+
+SINGLE_BATTLE_TEST("Life Orb doesn't cause any HP loss if user is unable to attack")
+{
+ PASSES_RANDOMLY(25, 100, RNG_PARALYSIS);
+ GIVEN {
+ PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_LIFE_ORB); Status1(STATUS1_PARALYSIS); }
+ OPPONENT(SPECIES_WOBBUFFET);
+ } WHEN {
+ TURN { MOVE(player, MOVE_POUND); }
+ } SCENE {
+ NONE_OF {
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player);
+ HP_BAR(opponent);
+ HP_BAR(player);
+ MESSAGE("Wobbuffet was hurt by the Life Orb!");
+ }
+ }
+}
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/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
index 2c74387158..67e596c277 100644
--- a/test/battle/hold_effect/throat_spray.c
+++ b/test/battle/hold_effect/throat_spray.c
@@ -3,7 +3,7 @@
ASSUMPTIONS
{
- ASSUME(ItemId_GetHoldEffect(ITEM_THROAT_SPRAY) == HOLD_EFFECT_THROAT_SPRAY);
+ ASSUME(GetItemHoldEffect(ITEM_THROAT_SPRAY) == HOLD_EFFECT_THROAT_SPRAY);
ASSUME(IsSoundMove(MOVE_HYPER_VOICE) == TRUE);
}
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_effect/bestow.c b/test/battle/move_effect/bestow.c
index 24abdb3bea..4ca86119b6 100644
--- a/test/battle/move_effect/bestow.c
+++ b/test/battle/move_effect/bestow.c
@@ -47,8 +47,6 @@ SINGLE_BATTLE_TEST("Bestow fails if the target already has a held item")
#include "mail.h"
SINGLE_BATTLE_TEST("Bestow fails if the user is holding Mail")
{
- KNOWN_FAILING;
-
GIVEN {
ASSUME(ItemIsMail(ITEM_ORANGE_MAIL));
PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_ORANGE_MAIL); }
@@ -81,7 +79,7 @@ SINGLE_BATTLE_TEST("Bestow fails if the user's held item is a Mega Stone")
SINGLE_BATTLE_TEST("Bestow fails if the user's held item is a Z-Crystal")
{
GIVEN {
- ASSUME(ItemId_GetHoldEffect(ITEM_FIGHTINIUM_Z) == HOLD_EFFECT_Z_CRYSTAL);
+ ASSUME(GetItemHoldEffect(ITEM_FIGHTINIUM_Z) == HOLD_EFFECT_Z_CRYSTAL);
PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_FIGHTINIUM_Z); }
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {
@@ -94,36 +92,41 @@ SINGLE_BATTLE_TEST("Bestow fails if the user's held item is a Z-Crystal")
}
}
-SINGLE_BATTLE_TEST("Bestow fails if the target is behind a Substitute")
+SINGLE_BATTLE_TEST("Bestow fails if the target is behind a Substitute (Gen 6+)")
{
- KNOWN_FAILING;
-
GIVEN {
PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_SITRUS_BERRY); Speed(50); }
OPPONENT(SPECIES_WOBBUFFET) { Speed(100); }
} WHEN {
TURN { MOVE(opponent, MOVE_SUBSTITUTE); MOVE(player, MOVE_BESTOW); }
} SCENE {
- MESSAGE("But it failed!");
+ if (B_UPDATED_MOVE_FLAGS >= GEN_6) {
+ NOT MESSAGE("But it failed!");
+ } else {
+ MESSAGE("But it failed!");
+ }
} THEN {
- EXPECT(player->item == ITEM_SITRUS_BERRY);
- EXPECT(opponent->item == ITEM_NONE);
+ if (B_UPDATED_MOVE_FLAGS >= GEN_6) {
+ EXPECT(player->item == ITEM_NONE);
+ EXPECT(opponent->item == ITEM_SITRUS_BERRY);
+ } else {
+ EXPECT(player->item == ITEM_SITRUS_BERRY);
+ EXPECT(opponent->item == ITEM_NONE);
+ }
}
}
SINGLE_BATTLE_TEST("Bestow fails if the user's held item changes its form")
{
- KNOWN_FAILING;
-
GIVEN {
- PLAYER(SPECIES_GIRATINA_ORIGIN) { Item(ITEM_GRISEOUS_ORB); }
+ PLAYER(SPECIES_GIRATINA_ORIGIN) { Item(ITEM_GRISEOUS_CORE); }
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {
TURN { MOVE(player, MOVE_BESTOW); }
} SCENE {
MESSAGE("But it failed!");
} THEN {
- EXPECT(player->item == ITEM_GRISEOUS_ORB);
+ EXPECT(player->item == ITEM_GRISEOUS_CORE);
EXPECT(opponent->item == ITEM_NONE);
}
}
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/facade.c b/test/battle/move_effect/facade.c
new file mode 100644
index 0000000000..cc1e21e34f
--- /dev/null
+++ b/test/battle/move_effect/facade.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Facade (Move Effect) test titles")
diff --git a/test/battle/move_effect/fairy_lock.c b/test/battle/move_effect/fairy_lock.c
new file mode 100644
index 0000000000..a42aa6aa48
--- /dev/null
+++ b/test/battle/move_effect/fairy_lock.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Fairy Lock (Move Effect) test titles")
diff --git a/test/battle/move_effect/false_swipe.c b/test/battle/move_effect/false_swipe.c
new file mode 100644
index 0000000000..da2cbf6a21
--- /dev/null
+++ b/test/battle/move_effect/false_swipe.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write False Swipe (Move Effect) test titles")
diff --git a/test/battle/move_effect/final_gambit.c b/test/battle/move_effect/final_gambit.c
new file mode 100644
index 0000000000..be815abf5a
--- /dev/null
+++ b/test/battle/move_effect/final_gambit.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Final Gambit (Move Effect) test titles")
diff --git a/test/battle/move_effect/first_turn_only.c b/test/battle/move_effect/first_turn_only.c
new file mode 100644
index 0000000000..b26245a3d9
--- /dev/null
+++ b/test/battle/move_effect/first_turn_only.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Fake Out/First Impression (Move Effect) test titles")
diff --git a/test/battle/move_effect/flail.c b/test/battle/move_effect/flail.c
new file mode 100644
index 0000000000..af5544d9b4
--- /dev/null
+++ b/test/battle/move_effect/flail.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Flail (Move Effect) test titles")
diff --git a/test/battle/move_effect/flatter.c b/test/battle/move_effect/flatter.c
new file mode 100644
index 0000000000..7effb09329
--- /dev/null
+++ b/test/battle/move_effect/flatter.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Flatter (Move Effect) test titles")
diff --git a/test/battle/move_effect/foresight.c b/test/battle/move_effect/foresight.c
new file mode 100644
index 0000000000..082e2d6fa4
--- /dev/null
+++ b/test/battle/move_effect/foresight.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Foresight (Move Effect) test titles")
diff --git a/test/battle/move_effect/frustration.c b/test/battle/move_effect/frustration.c
new file mode 100644
index 0000000000..eb994c5076
--- /dev/null
+++ b/test/battle/move_effect/frustration.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Frustration (Move Effect) test titles")
diff --git a/test/battle/move_effect/fusion_combo.c b/test/battle/move_effect/fusion_combo.c
new file mode 100644
index 0000000000..7561536b11
--- /dev/null
+++ b/test/battle/move_effect/fusion_combo.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Fusion Flare/Bolt (Move Effect) test titles")
diff --git a/test/battle/move_effect/gear_up.c b/test/battle/move_effect/gear_up.c
new file mode 100644
index 0000000000..03aba9a395
--- /dev/null
+++ b/test/battle/move_effect/gear_up.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Gear Up (Move Effect) test titles")
diff --git a/test/battle/move_effect/geomancy.c b/test/battle/move_effect/geomancy.c
new file mode 100644
index 0000000000..f5b113a452
--- /dev/null
+++ b/test/battle/move_effect/geomancy.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Geomancy (Move Effect) test titles")
diff --git a/test/battle/move_effect/grassy_glide.c b/test/battle/move_effect/grassy_glide.c
new file mode 100644
index 0000000000..00219fb1dd
--- /dev/null
+++ b/test/battle/move_effect/grassy_glide.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Grassy Glide (Move Effect) test titles")
diff --git a/test/battle/move_effect/grav_apple.c b/test/battle/move_effect/grav_apple.c
new file mode 100644
index 0000000000..7ce2dd26c7
--- /dev/null
+++ b/test/battle/move_effect/grav_apple.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Grav Apple (Move Effect) test titles")
diff --git a/test/battle/move_effect/growth.c b/test/battle/move_effect/growth.c
new file mode 100644
index 0000000000..7b53f56cfc
--- /dev/null
+++ b/test/battle/move_effect/growth.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Growth (Move Effect) test titles")
diff --git a/test/battle/move_effect/grudge.c b/test/battle/move_effect/grudge.c
new file mode 100644
index 0000000000..f0e0e53b6a
--- /dev/null
+++ b/test/battle/move_effect/grudge.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Grudge (Move Effect) test titles")
diff --git a/test/battle/move_effect/guard_swap.c b/test/battle/move_effect/guard_swap.c
new file mode 100644
index 0000000000..f0e0e53b6a
--- /dev/null
+++ b/test/battle/move_effect/guard_swap.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Grudge (Move Effect) test titles")
diff --git a/test/battle/move_effect/guardian_of_alola.c b/test/battle/move_effect/guardian_of_alola.c
new file mode 100644
index 0000000000..fe33236363
--- /dev/null
+++ b/test/battle/move_effect/guardian_of_alola.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Guardian of Alola (Move Effect) test titles")
diff --git a/test/battle/move_effect/gyro_ball.c b/test/battle/move_effect/gyro_ball.c
new file mode 100644
index 0000000000..e6cbfa46c9
--- /dev/null
+++ b/test/battle/move_effect/gyro_ball.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Gyro Ball (Move Effect) test titles")
diff --git a/test/battle/move_effect/hail.c b/test/battle/move_effect/hail.c
new file mode 100644
index 0000000000..9fdbe0ab37
--- /dev/null
+++ b/test/battle/move_effect/hail.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Hail (Move Effect) test titles")
diff --git a/test/battle/move_effect/happy_hour.c b/test/battle/move_effect/happy_hour.c
new file mode 100644
index 0000000000..4e271068e2
--- /dev/null
+++ b/test/battle/move_effect/happy_hour.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Happy Hour (Move Effect) test titles")
diff --git a/test/battle/move_effect/heal_bell.c b/test/battle/move_effect/heal_bell.c
index 7730879d45..67bdfda1b8 100644
--- a/test/battle/move_effect/heal_bell.c
+++ b/test/battle/move_effect/heal_bell.c
@@ -3,7 +3,35 @@
ASSUMPTIONS
{
- ASSUME(GetMoveEffect(MOVE_HEAL_BELL) == EFFECT_HEAL_BELL);
+ ASSUME(gMovesInfo[MOVE_HEAL_BELL].effect == EFFECT_HEAL_BELL);
+ ASSUME(gMovesInfo[MOVE_AROMATHERAPY].effect == EFFECT_HEAL_BELL);
+ ASSUME(MoveHasAdditionalEffect(MOVE_SPARKLY_SWIRL, MOVE_EFFECT_AROMATHERAPY));
+}
+
+DOUBLE_BATTLE_TEST("Sparkly Swirl cures the entire party")
+{
+ GIVEN {
+ PLAYER(SPECIES_WOBBUFFET) { Status1(STATUS1_POISON); }
+ PLAYER(SPECIES_WOBBUFFET) { Status1(STATUS1_POISON); }
+ PLAYER(SPECIES_WOBBUFFET) { Status1(STATUS1_POISON); }
+ PLAYER(SPECIES_WOBBUFFET) { Status1(STATUS1_POISON); }
+ PLAYER(SPECIES_WOBBUFFET) { Status1(STATUS1_POISON); }
+ PLAYER(SPECIES_WOBBUFFET) { Status1(STATUS1_POISON); }
+ OPPONENT(SPECIES_WYNAUT);
+ OPPONENT(SPECIES_WYNAUT);
+ } WHEN {
+ TURN { MOVE(playerLeft, MOVE_SPARKLY_SWIRL, target: opponentLeft); }
+ TURN { SWITCH(playerLeft, 2); SWITCH(playerRight, 3); }
+ } SCENE {
+ int i;
+
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_SPARKLY_SWIRL, playerLeft);
+ STATUS_ICON(playerLeft, none: TRUE);
+ STATUS_ICON(playerRight, none: TRUE);
+ NOT MESSAGE("Wobbuffet was hurt by its poisoning!");
+ for (i = 0; i < PARTY_SIZE; i++)
+ EXPECT_EQ(GetMonData(&gPlayerParty[i], MON_DATA_STATUS), STATUS1_NONE);
+ }
}
DOUBLE_BATTLE_TEST("Heal Bell/Aromatherapy cures the entire party of the user from primary status effects")
@@ -52,7 +80,7 @@ DOUBLE_BATTLE_TEST("Heal Bell/Aromatherapy cures the entire party of the user fr
case STATUS1_FROSTBITE: STATUS_ICON(playerLeft, frostbite: FALSE); STATUS_ICON(playerRight, frostbite: FALSE); break;
}
for (j = 0; j < PARTY_SIZE; j++)
- EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_STATUS), STATUS1_NONE);
+ EXPECT_EQ(GetMonData(&gPlayerParty[j], MON_DATA_STATUS), STATUS1_NONE);
}
}
diff --git a/test/battle/move_effect/heal_block.c b/test/battle/move_effect/heal_block.c
new file mode 100644
index 0000000000..2bb4367dd4
--- /dev/null
+++ b/test/battle/move_effect/heal_block.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Heal Block (Move Effect) test titles")
diff --git a/test/battle/move_effect/heart_swap.c b/test/battle/move_effect/heart_swap.c
new file mode 100644
index 0000000000..1c4d22e204
--- /dev/null
+++ b/test/battle/move_effect/heart_swap.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Heart Swap (Move Effect) test titles")
diff --git a/test/battle/move_effect/heat_crash.c b/test/battle/move_effect/heat_crash.c
new file mode 100644
index 0000000000..8b2d0a0433
--- /dev/null
+++ b/test/battle/move_effect/heat_crash.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Heat Crash (Move Effect) test titles")
diff --git a/test/battle/move_effect/helping_hand.c b/test/battle/move_effect/helping_hand.c
new file mode 100644
index 0000000000..81d64e113d
--- /dev/null
+++ b/test/battle/move_effect/helping_hand.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Helping Hand (Move Effect) test titles")
diff --git a/test/battle/move_effect/hidden_power.c b/test/battle/move_effect/hidden_power.c
index 7f2bb5f2b9..124d78c96a 100644
--- a/test/battle/move_effect/hidden_power.c
+++ b/test/battle/move_effect/hidden_power.c
@@ -113,8 +113,8 @@ SINGLE_BATTLE_TEST("Hidden Power's type is determined by IVs")
ASSUME(gTypeEffectivenessTable[type][foeType] == UQ_4_12(2.0)); // Foe's Type resists
ASSUME(gSpeciesInfo[foeSpecies].types[0] == gSpeciesInfo[foeSpecies].types[1]); // Foe's pure type
ASSUME(gSpeciesInfo[foeSpecies].types[0] == foeType); // Foe is the super-effective type
- ASSUME(ItemId_GetHoldEffect(foeItem) == HOLD_EFFECT_RESIST_BERRY); // Item is resist berry
- ASSUME(ItemId_GetHoldEffectParam(foeItem) == type); // Resist berry of type
+ ASSUME(GetItemHoldEffect(foeItem) == HOLD_EFFECT_RESIST_BERRY); // Item is resist berry
+ ASSUME(GetItemHoldEffectParam(foeItem) == type); // Resist berry of type
PLAYER(SPECIES_DUNSPARCE) { HPIV(hp); AttackIV(atk); DefenseIV(def); SpAttackIV(spAtk); SpDefenseIV(spDef); SpeedIV(speed); }
} else {
PLAYER(SPECIES_DUNSPARCE);
diff --git a/test/battle/move_effect/hit_enemy_heal_ally.c b/test/battle/move_effect/hit_enemy_heal_ally.c
new file mode 100644
index 0000000000..018672cd6c
--- /dev/null
+++ b/test/battle/move_effect/hit_enemy_heal_ally.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Pollen Puff (Move Effect) test titles")
diff --git a/test/battle/move_effect/hyperspace_fury.c b/test/battle/move_effect/hyperspace_fury.c
new file mode 100644
index 0000000000..080758c94b
--- /dev/null
+++ b/test/battle/move_effect/hyperspace_fury.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Hyperspace Fury (Move Effect) test titles")
diff --git a/test/battle/move_effect/imprison.c b/test/battle/move_effect/imprison.c
new file mode 100644
index 0000000000..dd4e496692
--- /dev/null
+++ b/test/battle/move_effect/imprison.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Imprison (Move Effect) test titles")
diff --git a/test/battle/move_effect/ingrain.c b/test/battle/move_effect/ingrain.c
new file mode 100644
index 0000000000..19213f10d9
--- /dev/null
+++ b/test/battle/move_effect/ingrain.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Ingrain (Move Effect) test titles")
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/jungle_healing.c b/test/battle/move_effect/jungle_healing.c
new file mode 100644
index 0000000000..12b964a049
--- /dev/null
+++ b/test/battle/move_effect/jungle_healing.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Jungle Healing (Move Effect) test titles")
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/lash_out.c b/test/battle/move_effect/lash_out.c
new file mode 100644
index 0000000000..dd8e9eb0e9
--- /dev/null
+++ b/test/battle/move_effect/lash_out.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Lash Out (Move Effect) test titles")
diff --git a/test/battle/move_effect/light_screen.c b/test/battle/move_effect/light_screen.c
new file mode 100644
index 0000000000..56eedebbd4
--- /dev/null
+++ b/test/battle/move_effect/light_screen.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Light Screen (Move Effect) test titles")
diff --git a/test/battle/move_effect/lock_on.c b/test/battle/move_effect/lock_on.c
new file mode 100644
index 0000000000..9e7b93cff4
--- /dev/null
+++ b/test/battle/move_effect/lock_on.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Lock-On/Mind Reader (Move Effect) test titles")
diff --git a/test/battle/move_effect/low_kick.c b/test/battle/move_effect/low_kick.c
new file mode 100644
index 0000000000..c68b152e2d
--- /dev/null
+++ b/test/battle/move_effect/low_kick.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Low Kick (Move Effect) test titles")
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/magnet_rise.c b/test/battle/move_effect/magnet_rise.c
new file mode 100644
index 0000000000..9fde0046fd
--- /dev/null
+++ b/test/battle/move_effect/magnet_rise.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Magic Room (Move Effect) test titles")
diff --git a/test/battle/move_effect/magnetic_flux.c b/test/battle/move_effect/magnetic_flux.c
new file mode 100644
index 0000000000..f574db0089
--- /dev/null
+++ b/test/battle/move_effect/magnetic_flux.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Magnetic Flux (Move Effect) test titles")
diff --git a/test/battle/move_effect/magnitude.c b/test/battle/move_effect/magnitude.c
new file mode 100644
index 0000000000..75799a4dcb
--- /dev/null
+++ b/test/battle/move_effect/magnitude.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Magnitude (Move Effect) test titles")
diff --git a/test/battle/move_effect/mat_block.c b/test/battle/move_effect/mat_block.c
new file mode 100644
index 0000000000..78921a7329
--- /dev/null
+++ b/test/battle/move_effect/mat_block.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Mat Block (Move Effect) test titles")
diff --git a/test/battle/move_effect/max_move.c b/test/battle/move_effect/max_move.c
new file mode 100644
index 0000000000..41c2a4e32c
--- /dev/null
+++ b/test/battle/move_effect/max_move.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Max Moves (Move Effect) test titles")
diff --git a/test/battle/move_effect/mean_look.c b/test/battle/move_effect/mean_look.c
new file mode 100644
index 0000000000..a5fa8ff0c1
--- /dev/null
+++ b/test/battle/move_effect/mean_look.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Mean Look (Move Effect) test titles")
diff --git a/test/battle/move_effect/memento.c b/test/battle/move_effect/memento.c
new file mode 100644
index 0000000000..c83ffc1ab1
--- /dev/null
+++ b/test/battle/move_effect/memento.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Memento (Move Effect) test titles")
diff --git a/test/battle/move_effect/metal_burst.c b/test/battle/move_effect/metal_burst.c
new file mode 100644
index 0000000000..4fec370e85
--- /dev/null
+++ b/test/battle/move_effect/metal_burst.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Metal Burst (Move Effect) test titles")
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/mimic.c b/test/battle/move_effect/mimic.c
new file mode 100644
index 0000000000..4a51a4b79e
--- /dev/null
+++ b/test/battle/move_effect/mimic.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Mimic (Move Effect) test titles")
diff --git a/test/battle/move_effect/minimize.c b/test/battle/move_effect/minimize.c
new file mode 100644
index 0000000000..f0196936a5
--- /dev/null
+++ b/test/battle/move_effect/minimize.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Minimize (Move Effect) test titles")
diff --git a/test/battle/move_effect/miracle_eye.c b/test/battle/move_effect/miracle_eye.c
new file mode 100644
index 0000000000..784323f1cc
--- /dev/null
+++ b/test/battle/move_effect/miracle_eye.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Miracle Eye (Move Effect) test titles")
diff --git a/test/battle/move_effect/mirror_coat.c b/test/battle/move_effect/mirror_coat.c
new file mode 100644
index 0000000000..2a3d6ef250
--- /dev/null
+++ b/test/battle/move_effect/mirror_coat.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Mirror Coat (Move Effect) test titles")
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/mist.c b/test/battle/move_effect/mist.c
new file mode 100644
index 0000000000..332d82a6f9
--- /dev/null
+++ b/test/battle/move_effect/mist.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Mist (Move Effect) test titles")
diff --git a/test/battle/move_effect/mud_sport.c b/test/battle/move_effect/mud_sport.c
new file mode 100644
index 0000000000..143bbe1447
--- /dev/null
+++ b/test/battle/move_effect/mud_sport.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Mud Sport (Move Effect) test titles")
diff --git a/test/battle/move_effect/natural_gift.c b/test/battle/move_effect/natural_gift.c
new file mode 100644
index 0000000000..dd9b0bd466
--- /dev/null
+++ b/test/battle/move_effect/natural_gift.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Natural Gift (Move Effect) test titles")
diff --git a/test/battle/move_effect/nature_power.c b/test/battle/move_effect/nature_power.c
new file mode 100644
index 0000000000..1e9692f88d
--- /dev/null
+++ b/test/battle/move_effect/nature_power.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Nature Power (Move Effect) test titles")
diff --git a/test/battle/move_effect/nightmare.c b/test/battle/move_effect/nightmare.c
new file mode 100644
index 0000000000..c243664f2d
--- /dev/null
+++ b/test/battle/move_effect/nightmare.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Nightmare (Move Effect) test titles")
diff --git a/test/battle/move_effect/no_retreat.c b/test/battle/move_effect/no_retreat.c
new file mode 100644
index 0000000000..bf2a15dfbf
--- /dev/null
+++ b/test/battle/move_effect/no_retreat.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write No Retreat (Move Effect) test titles")
diff --git a/test/battle/move_effect/noble_roar.c b/test/battle/move_effect/noble_roar.c
new file mode 100644
index 0000000000..4fd182b84d
--- /dev/null
+++ b/test/battle/move_effect/noble_roar.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Noble Roar (Move Effect) test titles")
diff --git a/test/battle/move_effect/ohko.c b/test/battle/move_effect/ohko.c
index 6ca65a3ab3..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(ItemId_GetHoldEffect(ITEM_FOCUS_SASH) == HOLD_EFFECT_FOCUS_SASH);
+ ASSUME(GetItemHoldEffect(ITEM_FOCUS_SASH) == HOLD_EFFECT_FOCUS_SASH);
PLAYER(SPECIES_WOBBUFFET) { Ability(ABILITY_NO_GUARD); }
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {
diff --git a/test/battle/move_effect/order_up.c b/test/battle/move_effect/order_up.c
new file mode 100644
index 0000000000..fffd773403
--- /dev/null
+++ b/test/battle/move_effect/order_up.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Order Up (Move Effect) test titles")
diff --git a/test/battle/move_effect/pain_split.c b/test/battle/move_effect/pain_split.c
new file mode 100644
index 0000000000..be92aecc7d
--- /dev/null
+++ b/test/battle/move_effect/pain_split.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Pain Split (Move Effect) test titles")
diff --git a/test/battle/move_effect/paralyze.c b/test/battle/move_effect/paralyze.c
new file mode 100644
index 0000000000..a3f1a5574a
--- /dev/null
+++ b/test/battle/move_effect/paralyze.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Paralyze (Move Effect) test titles")
diff --git a/test/battle/move_effect/parting_shot.c b/test/battle/move_effect/parting_shot.c
new file mode 100644
index 0000000000..4d55d09315
--- /dev/null
+++ b/test/battle/move_effect/parting_shot.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Parting Shot (Move Effect) test titles")
diff --git a/test/battle/move_effect/payback.c b/test/battle/move_effect/payback.c
new file mode 100644
index 0000000000..1f078987a1
--- /dev/null
+++ b/test/battle/move_effect/payback.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Payback (Move Effect) test titles")
diff --git a/test/battle/move_effect/perish_song.c b/test/battle/move_effect/perish_song.c
new file mode 100644
index 0000000000..bfbe7eedc8
--- /dev/null
+++ b/test/battle/move_effect/perish_song.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Perish Song (Move Effect) test titles")
diff --git a/test/battle/move_effect/placeholder.c b/test/battle/move_effect/placeholder.c
new file mode 100644
index 0000000000..1b06392b9a
--- /dev/null
+++ b/test/battle/move_effect/placeholder.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Placeholder (Move Effect) test titles")
diff --git a/test/battle/move_effect/poison.c b/test/battle/move_effect/poison.c
new file mode 100644
index 0000000000..5b26ccf62d
--- /dev/null
+++ b/test/battle/move_effect/poison.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Poison (Move Effect) test titles")
diff --git a/test/battle/move_effect/poltergeist.c b/test/battle/move_effect/poltergeist.c
new file mode 100644
index 0000000000..f90031d8a8
--- /dev/null
+++ b/test/battle/move_effect/poltergeist.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Poltergeist (Move Effect) test titles")
diff --git a/test/battle/move_effect/power_swap.c b/test/battle/move_effect/power_swap.c
new file mode 100644
index 0000000000..214a8488cc
--- /dev/null
+++ b/test/battle/move_effect/power_swap.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Power Swap (Move Effect) test titles")
diff --git a/test/battle/move_effect/power_trick.c b/test/battle/move_effect/power_trick.c
new file mode 100644
index 0000000000..a8f89051e7
--- /dev/null
+++ b/test/battle/move_effect/power_trick.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Power Trick (Move Effect) test titles")
diff --git a/test/battle/move_effect/present.c b/test/battle/move_effect/present.c
new file mode 100644
index 0000000000..bd21f13de4
--- /dev/null
+++ b/test/battle/move_effect/present.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Present (Move Effect) test titles")
diff --git a/test/battle/move_effect/psyblade.c b/test/battle/move_effect/psyblade.c
new file mode 100644
index 0000000000..3a5778d1f4
--- /dev/null
+++ b/test/battle/move_effect/psyblade.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Psyblade (Move Effect) test titles")
diff --git a/test/battle/move_effect/psych_up.c b/test/battle/move_effect/psych_up.c
new file mode 100644
index 0000000000..36241a4ed7
--- /dev/null
+++ b/test/battle/move_effect/psych_up.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Psych Up (Move Effect) test titles")
diff --git a/test/battle/move_effect/psycho_shift.c b/test/battle/move_effect/psycho_shift.c
new file mode 100644
index 0000000000..4382ca4575
--- /dev/null
+++ b/test/battle/move_effect/psycho_shift.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Psycho Shift (Move Effect) test titles")
diff --git a/test/battle/move_effect/psyshock.c b/test/battle/move_effect/psyshock.c
new file mode 100644
index 0000000000..6b3ee54c5c
--- /dev/null
+++ b/test/battle/move_effect/psyshock.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Psyshock (Move Effect) test titles")
diff --git a/test/battle/move_effect/psywave.c b/test/battle/move_effect/psywave.c
new file mode 100644
index 0000000000..627e45ea3e
--- /dev/null
+++ b/test/battle/move_effect/psywave.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Psywave (Move Effect) test titles")
diff --git a/test/battle/move_effect/punishment.c b/test/battle/move_effect/punishment.c
new file mode 100644
index 0000000000..45f0b899af
--- /dev/null
+++ b/test/battle/move_effect/punishment.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Punishment (Move Effect) test titles")
diff --git a/test/battle/move_effect/purify.c b/test/battle/move_effect/purify.c
new file mode 100644
index 0000000000..134c96119f
--- /dev/null
+++ b/test/battle/move_effect/purify.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Purify (Move Effect) test titles")
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/quiver_dance.c b/test/battle/move_effect/quiver_dance.c
new file mode 100644
index 0000000000..5a7ff5b944
--- /dev/null
+++ b/test/battle/move_effect/quiver_dance.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Quiver Dance (Move Effect) test titles")
diff --git a/test/battle/move_effect/rage.c b/test/battle/move_effect/rage.c
new file mode 100644
index 0000000000..33025a6b0e
--- /dev/null
+++ b/test/battle/move_effect/rage.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Rage (Move Effect) test titles")
diff --git a/test/battle/move_effect/rain_always_hit.c b/test/battle/move_effect/rain_always_hit.c
new file mode 100644
index 0000000000..3bed952a37
--- /dev/null
+++ b/test/battle/move_effect/rain_always_hit.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Bleakwind/Wildbolt/Sandsear Storm (Move Effect) test titles")
diff --git a/test/battle/move_effect/rain_dance.c b/test/battle/move_effect/rain_dance.c
new file mode 100644
index 0000000000..f9c3786b71
--- /dev/null
+++ b/test/battle/move_effect/rain_dance.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Rain Dance (Move Effect) test titles")
diff --git a/test/battle/move_effect/recoil_hp_25.c b/test/battle/move_effect/recoil_hp_25.c
new file mode 100644
index 0000000000..9abb1bcfd0
--- /dev/null
+++ b/test/battle/move_effect/recoil_hp_25.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Struggle (Move Effect) test titles")
diff --git a/test/battle/move_effect/recycle.c b/test/battle/move_effect/recycle.c
new file mode 100644
index 0000000000..53f2e5c2ff
--- /dev/null
+++ b/test/battle/move_effect/recycle.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Recycle (Move Effect) test titles")
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/rest.c b/test/battle/move_effect/rest.c
new file mode 100644
index 0000000000..4d0d85b560
--- /dev/null
+++ b/test/battle/move_effect/rest.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Rest (Move Effect) test titles")
diff --git a/test/battle/move_effect/restore_hp.c b/test/battle/move_effect/restore_hp.c
new file mode 100644
index 0000000000..57f756115e
--- /dev/null
+++ b/test/battle/move_effect/restore_hp.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Recover/Slack Off/Heal Order (Move Effect) test titles")
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/return.c b/test/battle/move_effect/return.c
new file mode 100644
index 0000000000..50945ca556
--- /dev/null
+++ b/test/battle/move_effect/return.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Return (Move Effect) test titles")
diff --git a/test/battle/move_effect/revenge.c b/test/battle/move_effect/revenge.c
new file mode 100644
index 0000000000..980bca9e33
--- /dev/null
+++ b/test/battle/move_effect/revenge.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Revenge (Move Effect) test titles")
diff --git a/test/battle/move_effect/rising_voltage.c b/test/battle/move_effect/rising_voltage.c
new file mode 100644
index 0000000000..de6ca67c04
--- /dev/null
+++ b/test/battle/move_effect/rising_voltage.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Rising Voltage (Move Effect) test titles")
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/rollout.c b/test/battle/move_effect/rollout.c
new file mode 100644
index 0000000000..c137ca4fc8
--- /dev/null
+++ b/test/battle/move_effect/rollout.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Rollout (Move Effect) test titles")
diff --git a/test/battle/move_effect/safeguard.c b/test/battle/move_effect/safeguard.c
new file mode 100644
index 0000000000..44dee766ee
--- /dev/null
+++ b/test/battle/move_effect/safeguard.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Safeguard (Move Effect) test titles")
diff --git a/test/battle/move_effect/sandstorm.c b/test/battle/move_effect/sandstorm.c
new file mode 100644
index 0000000000..7a70a2f3ff
--- /dev/null
+++ b/test/battle/move_effect/sandstorm.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Sandstorm (Move Effect) test titles")
diff --git a/test/battle/move_effect/shell_smash.c b/test/battle/move_effect/shell_smash.c
new file mode 100644
index 0000000000..af31e771ad
--- /dev/null
+++ b/test/battle/move_effect/shell_smash.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Shell Smash (Move Effect) test titles")
diff --git a/test/battle/move_effect/shift_gear.c b/test/battle/move_effect/shift_gear.c
new file mode 100644
index 0000000000..990e815cb3
--- /dev/null
+++ b/test/battle/move_effect/shift_gear.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Shift Gear (Move Effect) test titles")
diff --git a/test/battle/move_effect/shore_up.c b/test/battle/move_effect/shore_up.c
new file mode 100644
index 0000000000..91ee4f05b6
--- /dev/null
+++ b/test/battle/move_effect/shore_up.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Shore Up (Move Effect) test titles")
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
index eb924ea1ac..e69de29bb2 100644
--- a/test/battle/move_effect/smack_down.c
+++ b/test/battle/move_effect/smack_down.c
@@ -1,19 +0,0 @@
-#include "global.h"
-#include "test/battle.h"
-
-ASSUMPTIONS
-{
- ASSUME(MoveHasAdditionalEffect(MOVE_SMACK_DOWN, MOVE_EFFECT_SMACK_DOWN) == TRUE);
-}
-
-SINGLE_BATTLE_TEST("Smack Down does not ground mons behind substitutes")
-{
- GIVEN {
- PLAYER(SPECIES_WOBBUFFET);
- OPPONENT(SPECIES_SKARMORY);
- } WHEN {
- TURN { MOVE(opponent, MOVE_SUBSTITUTE); MOVE(player, MOVE_SMACK_DOWN); }
- } SCENE {
- NOT MESSAGE("The opposing Skarmory fell straight down!");
- }
-}
diff --git a/test/battle/move_effect/smelling_salts.c b/test/battle/move_effect/smelling_salts.c
deleted file mode 100644
index 6b1d0b2d7e..0000000000
--- a/test/battle/move_effect/smelling_salts.c
+++ /dev/null
@@ -1,63 +0,0 @@
-#include "global.h"
-#include "test/battle.h"
-
-ASSUMPTIONS
-{
- ASSUME(MoveHasAdditionalEffect(MOVE_SMELLING_SALTS, MOVE_EFFECT_REMOVE_STATUS) == TRUE);
- ASSUME(GetMoveEffectArg_Status(MOVE_SMELLING_SALTS) == STATUS1_PARALYSIS);
-}
-
-SINGLE_BATTLE_TEST("Smelling Salts does not cure paralyzed pokemons behind substitutes or get increased power")
-{
- u32 ability;
- PARAMETRIZE { ability = ABILITY_INNER_FOCUS; }
- PARAMETRIZE { ability = ABILITY_INFILTRATOR; }
- GIVEN {
- PLAYER(SPECIES_CROBAT) { Ability(ability); }
- OPPONENT(SPECIES_SEISMITOAD) { Status1(STATUS1_PARALYSIS); }
- } WHEN {
- TURN { MOVE(opponent, MOVE_SUBSTITUTE); MOVE(player, MOVE_CELEBRATE); }
- TURN { MOVE(opponent, MOVE_CELEBRATE); MOVE(player, MOVE_SMELLING_SALTS); }
- } SCENE {
- ANIMATION(ANIM_TYPE_MOVE, MOVE_SMELLING_SALTS, player);
- if (ability == ABILITY_INNER_FOCUS)
- {
- MESSAGE("The substitute took damage for the opposing Seismitoad!");
- NONE_OF
- {
- MESSAGE("The opposing Seismitoad's substitute faded!"); // Smelling Salts does 86 damage, the sub has 122 HP, if hitting a sub it shouldn't get boosted damage.
- MESSAGE("The opposing Seismitoad was cured of paralysis!");
- STATUS_ICON(opponent, none: TRUE);
- }
- }
- else
- {
- MESSAGE("The opposing Seismitoad was cured of paralysis!");
- STATUS_ICON(opponent, none: TRUE);
- }
- }
-}
-
-SINGLE_BATTLE_TEST("Smelling Salts get incread power vs. paralyzed targets")
-{
- u32 status1;
- PARAMETRIZE { status1 = STATUS1_PARALYSIS; }
- PARAMETRIZE { status1 = STATUS1_NONE; }
- GIVEN {
- PLAYER(SPECIES_CROBAT);
- OPPONENT(SPECIES_LOTAD) { Status1(status1); }
- } WHEN {
- TURN { MOVE(player, MOVE_SMELLING_SALTS); }
- } SCENE {
- ANIMATION(ANIM_TYPE_MOVE, MOVE_SMELLING_SALTS, player);
- if (status1 == STATUS1_PARALYSIS)
- {
- MESSAGE("The opposing Lotad fainted!");
- }
- else
- {
- NOT MESSAGE("The opposing Lotad fainted!");
- MESSAGE("The opposing Lotad used Celebrate!");
- }
- }
-}
diff --git a/test/battle/move_effect/snatch.c b/test/battle/move_effect/snatch.c
new file mode 100644
index 0000000000..f8e2891837
--- /dev/null
+++ b/test/battle/move_effect/snatch.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Snatch (Move Effect) test titles")
diff --git a/test/battle/move_effect/snipe_shot.c b/test/battle/move_effect/snipe_shot.c
new file mode 100644
index 0000000000..7ef7cbeb28
--- /dev/null
+++ b/test/battle/move_effect/snipe_shot.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Snipe Shot (Move Effect) test titles")
diff --git a/test/battle/move_effect/snowscape.c b/test/battle/move_effect/snowscape.c
new file mode 100644
index 0000000000..a0d1275f66
--- /dev/null
+++ b/test/battle/move_effect/snowscape.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Snowscape (Move Effect) test titles")
diff --git a/test/battle/move_effect/soak.c b/test/battle/move_effect/soak.c
new file mode 100644
index 0000000000..156e1f9558
--- /dev/null
+++ b/test/battle/move_effect/soak.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Soak (Move Effect) test titles")
diff --git a/test/battle/move_effect/softboiled.c b/test/battle/move_effect/softboiled.c
new file mode 100644
index 0000000000..a4cbce5b93
--- /dev/null
+++ b/test/battle/move_effect/softboiled.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Softboiled (Move Effect) test titles")
diff --git a/test/battle/move_effect/sparkling_aria.c b/test/battle/move_effect/sparkling_aria.c
deleted file mode 100644
index 86b906228b..0000000000
--- a/test/battle/move_effect/sparkling_aria.c
+++ /dev/null
@@ -1,25 +0,0 @@
-#include "global.h"
-#include "test/battle.h"
-
-ASSUMPTIONS
-{
- ASSUME(MoveHasAdditionalEffect(MOVE_SPARKLING_ARIA, MOVE_EFFECT_REMOVE_STATUS) == TRUE);
- ASSUME(GetMoveEffectArg_Status(MOVE_SPARKLING_ARIA) == STATUS1_BURN);
- ASSUME(IsSoundMove(MOVE_SPARKLING_ARIA));
-}
-
-DOUBLE_BATTLE_TEST("Sparkling Aria cures burns from all Pokemon on the field and behind substitutes")
-{
- GIVEN {
- PLAYER(SPECIES_PRIMARINA);
- PLAYER(SPECIES_WOBBUFFET) { Status1(STATUS1_BURN); }
- OPPONENT(SPECIES_WOBBUFFET) { Status1(STATUS1_BURN); }
- OPPONENT(SPECIES_WYNAUT) { Status1(STATUS1_BURN); }
- } WHEN {
- TURN { MOVE(opponentLeft, MOVE_SUBSTITUTE); MOVE(opponentRight, MOVE_CELEBRATE); MOVE(playerRight, MOVE_CELEBRATE); MOVE(playerLeft, MOVE_SPARKLING_ARIA); }
- } SCENE {
- MESSAGE("The opposing Wobbuffet's burn was cured!");
- MESSAGE("Wobbuffet's burn was cured!");
- MESSAGE("The opposing Wynaut's burn was cured!");
- }
-}
diff --git a/test/battle/move_effect/special_attack_down_2.c b/test/battle/move_effect/special_attack_down_2.c
new file mode 100644
index 0000000000..b62d4b52ac
--- /dev/null
+++ b/test/battle/move_effect/special_attack_down_2.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Eerie Impulse (Move Effect) test titles")
diff --git a/test/battle/move_effect/special_attack_up.c b/test/battle/move_effect/special_attack_up.c
new file mode 100644
index 0000000000..964566a8db
--- /dev/null
+++ b/test/battle/move_effect/special_attack_up.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Sp.Atk +1 (Move Effect) test titles") // Pre-gen5 Growth
diff --git a/test/battle/move_effect/special_attack_up_2.c b/test/battle/move_effect/special_attack_up_2.c
new file mode 100644
index 0000000000..c4bf38d6aa
--- /dev/null
+++ b/test/battle/move_effect/special_attack_up_2.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Nasty Plot (Move Effect) test titles")
diff --git a/test/battle/move_effect/special_defense_down.c b/test/battle/move_effect/special_defense_down.c
new file mode 100644
index 0000000000..1769ff6975
--- /dev/null
+++ b/test/battle/move_effect/special_defense_down.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Sp.Def -1 (Move Effect) test titles") // No move has this effect
diff --git a/test/battle/move_effect/special_defense_down_2.c b/test/battle/move_effect/special_defense_down_2.c
new file mode 100644
index 0000000000..5fff5bdd7b
--- /dev/null
+++ b/test/battle/move_effect/special_defense_down_2.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Fake Tears/Metal Sound (Move Effect) test titles")
diff --git a/test/battle/move_effect/special_defense_up.c b/test/battle/move_effect/special_defense_up.c
new file mode 100644
index 0000000000..66bbfa4dc5
--- /dev/null
+++ b/test/battle/move_effect/special_defense_up.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Sp.Def +1 (Move Effect) test titles") // No move has this effect
diff --git a/test/battle/move_effect/special_defense_up_2.c b/test/battle/move_effect/special_defense_up_2.c
new file mode 100644
index 0000000000..1685663452
--- /dev/null
+++ b/test/battle/move_effect/special_defense_up_2.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Amnesia (Move Effect) test titles")
diff --git a/test/battle/move_effect/speed_down_2.c b/test/battle/move_effect/speed_down_2.c
new file mode 100644
index 0000000000..e3b95e3fe9
--- /dev/null
+++ b/test/battle/move_effect/speed_down_2.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Scary Face/Cotton Spore (Move Effect) test titles")
diff --git a/test/battle/move_effect/speed_up.c b/test/battle/move_effect/speed_up.c
new file mode 100644
index 0000000000..1b0d417ef6
--- /dev/null
+++ b/test/battle/move_effect/speed_up.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Speed +1 (Move Effect) test titles") // No move has this effect
diff --git a/test/battle/move_effect/speed_up_2.c b/test/battle/move_effect/speed_up_2.c
new file mode 100644
index 0000000000..7202555498
--- /dev/null
+++ b/test/battle/move_effect/speed_up_2.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Agility/Rock Polish (Move Effect) test titles")
diff --git a/test/battle/move_effect/spite.c b/test/battle/move_effect/spite.c
new file mode 100644
index 0000000000..6a23e16dd2
--- /dev/null
+++ b/test/battle/move_effect/spite.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Spite (Move Effect) test titles")
diff --git a/test/battle/move_effect/stored_power.c b/test/battle/move_effect/stored_power.c
new file mode 100644
index 0000000000..55788a1ff0
--- /dev/null
+++ b/test/battle/move_effect/stored_power.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Stored Power (Move Effect) test titles")
diff --git a/test/battle/move_effect/sunny_day.c b/test/battle/move_effect/sunny_day.c
new file mode 100644
index 0000000000..d7fed979d9
--- /dev/null
+++ b/test/battle/move_effect/sunny_day.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Sunny Day (Move Effect) test titles")
diff --git a/test/battle/move_effect/super_fang.c b/test/battle/move_effect/super_fang.c
new file mode 100644
index 0000000000..33e162395d
--- /dev/null
+++ b/test/battle/move_effect/super_fang.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Super Fang (Move Effect) test titles")
diff --git a/test/battle/move_effect/swagger.c b/test/battle/move_effect/swagger.c
new file mode 100644
index 0000000000..5845d4292f
--- /dev/null
+++ b/test/battle/move_effect/swagger.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Swagger (Move Effect) test titles")
diff --git a/test/battle/move_effect/synchronoise.c b/test/battle/move_effect/synchronoise.c
new file mode 100644
index 0000000000..9b68ccc63a
--- /dev/null
+++ b/test/battle/move_effect/synchronoise.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Synchronoise (Move Effect) test titles")
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/taunt.c b/test/battle/move_effect/taunt.c
new file mode 100644
index 0000000000..91fe13364d
--- /dev/null
+++ b/test/battle/move_effect/taunt.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Taunt (Move Effect) test titles")
diff --git a/test/battle/move_effect/terrain_pulse.c b/test/battle/move_effect/terrain_pulse.c
new file mode 100644
index 0000000000..75b6802451
--- /dev/null
+++ b/test/battle/move_effect/terrain_pulse.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Terrain Pulse (Move Effect) test titles")
diff --git a/test/battle/move_effect/third_type.c b/test/battle/move_effect/third_type.c
new file mode 100644
index 0000000000..c3bcab38d2
--- /dev/null
+++ b/test/battle/move_effect/third_type.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Trick-or-Treat/Forest's Curse (Move Effect) test titles")
diff --git a/test/battle/move_effect/tickle.c b/test/battle/move_effect/tickle.c
new file mode 100644
index 0000000000..b5f5a56d69
--- /dev/null
+++ b/test/battle/move_effect/tickle.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Tickle (Move Effect) test titles")
diff --git a/test/battle/move_effect/topsy_turvy.c b/test/battle/move_effect/topsy_turvy.c
new file mode 100644
index 0000000000..6e5ce38097
--- /dev/null
+++ b/test/battle/move_effect/topsy_turvy.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Topsy Turvy (Move Effect) test titles")
diff --git a/test/battle/move_effect/toxic.c b/test/battle/move_effect/toxic.c
index 26f54e5d57..c25b4fc640 100644
--- a/test/battle/move_effect/toxic.c
+++ b/test/battle/move_effect/toxic.c
@@ -3,7 +3,7 @@
ASSUMPTIONS
{
- ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_TOXIC);
+ ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_NON_VOLATILE_STATUS);
ASSUME(GetMoveNonVolatileStatus(MOVE_TOXIC) == MOVE_EFFECT_TOXIC);
}
diff --git a/test/battle/move_effect/toxic_thread.c b/test/battle/move_effect/toxic_thread.c
new file mode 100644
index 0000000000..9471b24bd6
--- /dev/null
+++ b/test/battle/move_effect/toxic_thread.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Toxic Thread (Move Effect) test titles")
diff --git a/test/battle/move_effect/transform.c b/test/battle/move_effect/transform.c
new file mode 100644
index 0000000000..fd6e5f5a94
--- /dev/null
+++ b/test/battle/move_effect/transform.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Transform (Move Effect) test titles")
diff --git a/test/battle/move_effect/trick.c b/test/battle/move_effect/trick.c
new file mode 100644
index 0000000000..3aa26af67a
--- /dev/null
+++ b/test/battle/move_effect/trick.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Trick (Move Effect) test titles")
diff --git a/test/battle/move_effect/trick_room.c b/test/battle/move_effect/trick_room.c
new file mode 100644
index 0000000000..615931ef15
--- /dev/null
+++ b/test/battle/move_effect/trick_room.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Trick Room (Move Effect) test titles")
diff --git a/test/battle/move_effect/trump_card.c b/test/battle/move_effect/trump_card.c
new file mode 100644
index 0000000000..21b5c48ca3
--- /dev/null
+++ b/test/battle/move_effect/trump_card.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Trump Card (Move Effect) test titles")
diff --git a/test/battle/move_effect/two_typed_move.c b/test/battle/move_effect/two_typed_move.c
new file mode 100644
index 0000000000..43c3515739
--- /dev/null
+++ b/test/battle/move_effect/two_typed_move.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Flying Press (Move Effect) test titles")
diff --git a/test/battle/move_effect/venom_drench.c b/test/battle/move_effect/venom_drench.c
new file mode 100644
index 0000000000..00dac65858
--- /dev/null
+++ b/test/battle/move_effect/venom_drench.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Venom Drench (Move Effect) test titles")
diff --git a/test/battle/move_effect/victory_dance.c b/test/battle/move_effect/victory_dance.c
new file mode 100644
index 0000000000..cd1d892428
--- /dev/null
+++ b/test/battle/move_effect/victory_dance.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Victory Dance (Move Effect) test titles")
diff --git a/test/battle/move_effect/wake_up_slap.c b/test/battle/move_effect/wake_up_slap.c
deleted file mode 100644
index 0e172bf053..0000000000
--- a/test/battle/move_effect/wake_up_slap.c
+++ /dev/null
@@ -1,57 +0,0 @@
-#include "global.h"
-#include "test/battle.h"
-
-ASSUMPTIONS
-{
- ASSUME(MoveHasAdditionalEffect(MOVE_WAKE_UP_SLAP, MOVE_EFFECT_REMOVE_STATUS) == TRUE);
- ASSUME(GetMoveEffectArg_Status(MOVE_WAKE_UP_SLAP) == STATUS1_SLEEP);
-}
-
-SINGLE_BATTLE_TEST("Wake-Up Slap does not cure paralyzed pokemons behind substitutes or get increased power")
-{
- u32 ability;
- PARAMETRIZE { ability = ABILITY_INNER_FOCUS; }
- PARAMETRIZE { ability = ABILITY_INFILTRATOR; }
- GIVEN {
- PLAYER(SPECIES_CROBAT) { Ability(ability); }
- OPPONENT(SPECIES_SEISMITOAD);
- } WHEN {
- TURN { MOVE(opponent, MOVE_SUBSTITUTE); MOVE(player, MOVE_SING); }
- TURN { MOVE(opponent, MOVE_CELEBRATE); MOVE(player, MOVE_WAKE_UP_SLAP); }
- } SCENE {
- ANIMATION(ANIM_TYPE_MOVE, MOVE_WAKE_UP_SLAP, player);
- if (ability == ABILITY_INNER_FOCUS) {
- MESSAGE("The substitute took damage for the opposing Seismitoad!");
- NONE_OF
- {
- MESSAGE("The opposing Seismitoad's substitute faded!"); // Smelling Salts does 86 damage, the sub has 122 HP, if hitting a sub it shouldn't get boosted damage.
- MESSAGE("The opposing Seismitoad woke up!");
- STATUS_ICON(opponent, none: TRUE);
- }
- } else {
- MESSAGE("The opposing Seismitoad woke up!");
- STATUS_ICON(opponent, none: TRUE);
- }
- }
-}
-
-SINGLE_BATTLE_TEST("Wake-Up Slap gets increased power against sleeping targets")
-{
- u32 status1;
- PARAMETRIZE { status1 = STATUS1_SLEEP; }
- PARAMETRIZE { status1 = STATUS1_NONE; }
- GIVEN {
- PLAYER(SPECIES_CROBAT);
- OPPONENT(SPECIES_LOTAD) { Status1(status1); }
- } WHEN {
- TURN { MOVE(player, MOVE_WAKE_UP_SLAP); }
- } SCENE {
- ANIMATION(ANIM_TYPE_MOVE, MOVE_WAKE_UP_SLAP, player);
- if (status1 == STATUS1_SLEEP) {
- MESSAGE("The opposing Lotad fainted!");
- } else {
- NOT MESSAGE("The opposing Lotad fainted!");
- MESSAGE("The opposing Lotad used Celebrate!");
- }
- }
-}
diff --git a/test/battle/move_effect/water_sport.c b/test/battle/move_effect/water_sport.c
new file mode 100644
index 0000000000..f7521c1fcc
--- /dev/null
+++ b/test/battle/move_effect/water_sport.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Water Sport (Move Effect) test titles")
diff --git a/test/battle/move_effect/will_o_wisp.c b/test/battle/move_effect/will_o_wisp.c
new file mode 100644
index 0000000000..08b1bd6c69
--- /dev/null
+++ b/test/battle/move_effect/will_o_wisp.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Will-O-Wisp (Move Effect) test titles")
diff --git a/test/battle/move_effect/wish.c b/test/battle/move_effect/wish.c
index c1e5459f02..8fa3842123 100644
--- a/test/battle/move_effect/wish.c
+++ b/test/battle/move_effect/wish.c
@@ -23,3 +23,42 @@ SINGLE_BATTLE_TEST("Wish restores 50% of max player HP")
}
}
+SINGLE_BATTLE_TEST("Wish heals the user at the end of the next turn")
+{
+ GIVEN {
+ PLAYER(SPECIES_WOBBUFFET);
+ OPPONENT(SPECIES_WOBBUFFET);
+ } WHEN {
+ TURN { MOVE(player, MOVE_WISH); MOVE(opponent, MOVE_POUND); }
+ TURN { }
+ } SCENE {
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_WISH, player);
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_POUND, opponent);
+ HP_BAR(player);
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, player);
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, opponent);
+ MESSAGE("Wobbuffet's wish came true!");
+ HP_BAR(player);
+ }
+}
+
+SINGLE_BATTLE_TEST("Wish is blocked by Heal Block")
+{
+ GIVEN {
+ PLAYER(SPECIES_WOBBUFFET);
+ OPPONENT(SPECIES_WOBBUFFET);
+ } WHEN {
+ TURN { MOVE(player, MOVE_WISH); MOVE(opponent, MOVE_POUND); }
+ TURN { MOVE(opponent, MOVE_HEAL_BLOCK); }
+ } SCENE {
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_WISH, player);
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_POUND, opponent);
+ HP_BAR(player);
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, player);
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_HEAL_BLOCK, opponent);
+ MESSAGE("Wobbuffet was prevented from healing!");
+ NOT HP_BAR(player);
+ }
+}
+
+TO_DO_BATTLE_TEST("TODO: Write Wish (Move Effect) test titles")
diff --git a/test/battle/move_effect/wonder_room.c b/test/battle/move_effect/wonder_room.c
new file mode 100644
index 0000000000..113b7c55eb
--- /dev/null
+++ b/test/battle/move_effect/wonder_room.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Wonder Room (Move Effect) test titles")
diff --git a/test/battle/move_effect/yawn.c b/test/battle/move_effect/yawn.c
new file mode 100644
index 0000000000..ec150cc9bb
--- /dev/null
+++ b/test/battle/move_effect/yawn.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Yawn (Move Effect) test titles")
diff --git a/test/battle/move_effect/flame_burst.c b/test/battle/move_effect_secondary/flame_burst.c
similarity index 100%
rename from test/battle/move_effect/flame_burst.c
rename to test/battle/move_effect_secondary/flame_burst.c
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/remove_status.c b/test/battle/move_effect_secondary/remove_status.c
new file mode 100644
index 0000000000..0ff3d0f78c
--- /dev/null
+++ b/test/battle/move_effect_secondary/remove_status.c
@@ -0,0 +1,132 @@
+#include "global.h"
+#include "test/battle.h"
+
+SINGLE_BATTLE_TEST("Smelling Salts does not cure paralyzed pokemons behind substitutes or get increased power")
+{
+ u32 ability;
+ PARAMETRIZE { ability = ABILITY_INNER_FOCUS; }
+ PARAMETRIZE { ability = ABILITY_INFILTRATOR; }
+ GIVEN {
+ ASSUME(MoveHasAdditionalEffect(MOVE_SMELLING_SALTS, MOVE_EFFECT_REMOVE_STATUS) == TRUE);
+ ASSUME(GetMoveEffectArg_Status(MOVE_SMELLING_SALTS) == STATUS1_PARALYSIS);
+ PLAYER(SPECIES_CROBAT) { Ability(ability); }
+ OPPONENT(SPECIES_SEISMITOAD) { Status1(STATUS1_PARALYSIS); }
+ } WHEN {
+ TURN { MOVE(opponent, MOVE_SUBSTITUTE); MOVE(player, MOVE_CELEBRATE); }
+ TURN { MOVE(opponent, MOVE_CELEBRATE); MOVE(player, MOVE_SMELLING_SALTS); }
+ } SCENE {
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_SMELLING_SALTS, player);
+ if (ability == ABILITY_INNER_FOCUS)
+ {
+ MESSAGE("The substitute took damage for the opposing Seismitoad!");
+ NONE_OF
+ {
+ MESSAGE("The opposing Seismitoad's substitute faded!"); // Smelling Salts does 86 damage, the sub has 122 HP, if hitting a sub it shouldn't get boosted damage.
+ MESSAGE("The opposing Seismitoad was cured of paralysis!");
+ STATUS_ICON(opponent, none: TRUE);
+ }
+ }
+ else
+ {
+ MESSAGE("The opposing Seismitoad was cured of paralysis!");
+ STATUS_ICON(opponent, none: TRUE);
+ }
+ }
+}
+
+SINGLE_BATTLE_TEST("Smelling Salts get incread power vs. paralyzed targets")
+{
+ u32 status1;
+ PARAMETRIZE { status1 = STATUS1_PARALYSIS; }
+ PARAMETRIZE { status1 = STATUS1_NONE; }
+ GIVEN {
+ ASSUME(MoveHasAdditionalEffect(MOVE_SMELLING_SALTS, MOVE_EFFECT_REMOVE_STATUS) == TRUE);
+ ASSUME(GetMoveEffectArg_Status(MOVE_SMELLING_SALTS) == STATUS1_PARALYSIS);
+ PLAYER(SPECIES_CROBAT);
+ OPPONENT(SPECIES_LOTAD) { Status1(status1); }
+ } WHEN {
+ TURN { MOVE(player, MOVE_SMELLING_SALTS); }
+ } SCENE {
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_SMELLING_SALTS, player);
+ if (status1 == STATUS1_PARALYSIS)
+ {
+ MESSAGE("The opposing Lotad fainted!");
+ }
+ else
+ {
+ NOT MESSAGE("The opposing Lotad fainted!");
+ MESSAGE("The opposing Lotad used Celebrate!");
+ }
+ }
+}
+
+SINGLE_BATTLE_TEST("Wake-Up Slap does not cure paralyzed pokemons behind substitutes or get increased power")
+{
+ u32 ability;
+ PARAMETRIZE { ability = ABILITY_INNER_FOCUS; }
+ PARAMETRIZE { ability = ABILITY_INFILTRATOR; }
+ GIVEN {
+ ASSUME(MoveHasAdditionalEffect(MOVE_WAKE_UP_SLAP, MOVE_EFFECT_REMOVE_STATUS) == TRUE);
+ ASSUME(GetMoveEffectArg_Status(MOVE_WAKE_UP_SLAP) == STATUS1_SLEEP);
+ PLAYER(SPECIES_CROBAT) { Ability(ability); }
+ OPPONENT(SPECIES_SEISMITOAD);
+ } WHEN {
+ TURN { MOVE(opponent, MOVE_SUBSTITUTE); MOVE(player, MOVE_SING); }
+ TURN { MOVE(opponent, MOVE_CELEBRATE); MOVE(player, MOVE_WAKE_UP_SLAP); }
+ } SCENE {
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_WAKE_UP_SLAP, player);
+ if (ability == ABILITY_INNER_FOCUS) {
+ MESSAGE("The substitute took damage for the opposing Seismitoad!");
+ NONE_OF
+ {
+ MESSAGE("The opposing Seismitoad's substitute faded!"); // Smelling Salts does 86 damage, the sub has 122 HP, if hitting a sub it shouldn't get boosted damage.
+ MESSAGE("The opposing Seismitoad woke up!");
+ STATUS_ICON(opponent, none: TRUE);
+ }
+ } else {
+ MESSAGE("The opposing Seismitoad woke up!");
+ STATUS_ICON(opponent, none: TRUE);
+ }
+ }
+}
+
+SINGLE_BATTLE_TEST("Wake-Up Slap gets increased power against sleeping targets")
+{
+ u32 status1;
+ PARAMETRIZE { status1 = STATUS1_SLEEP; }
+ PARAMETRIZE { status1 = STATUS1_NONE; }
+ GIVEN {
+ ASSUME(MoveHasAdditionalEffect(MOVE_WAKE_UP_SLAP, MOVE_EFFECT_REMOVE_STATUS) == TRUE);
+ ASSUME(GetMoveEffectArg_Status(MOVE_WAKE_UP_SLAP) == STATUS1_SLEEP);
+ PLAYER(SPECIES_CROBAT);
+ OPPONENT(SPECIES_LOTAD) { Status1(status1); }
+ } WHEN {
+ TURN { MOVE(player, MOVE_WAKE_UP_SLAP); }
+ } SCENE {
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_WAKE_UP_SLAP, player);
+ if (status1 == STATUS1_SLEEP) {
+ MESSAGE("The opposing Lotad fainted!");
+ } else {
+ NOT MESSAGE("The opposing Lotad fainted!");
+ MESSAGE("The opposing Lotad used Celebrate!");
+ }
+ }
+}
+
+DOUBLE_BATTLE_TEST("Sparkling Aria cures burns from all Pokemon on the field and behind substitutes")
+{
+ GIVEN {
+ ASSUME(MoveHasAdditionalEffect(MOVE_SPARKLING_ARIA, MOVE_EFFECT_REMOVE_STATUS) == TRUE);
+ ASSUME(GetMoveEffectArg_Status(MOVE_SPARKLING_ARIA) == STATUS1_BURN);
+ PLAYER(SPECIES_PRIMARINA);
+ PLAYER(SPECIES_WOBBUFFET) { Status1(STATUS1_BURN); }
+ OPPONENT(SPECIES_WOBBUFFET) { Status1(STATUS1_BURN); }
+ OPPONENT(SPECIES_WYNAUT) { Status1(STATUS1_BURN); }
+ } WHEN {
+ TURN { MOVE(opponentLeft, MOVE_SUBSTITUTE); MOVE(opponentRight, MOVE_CELEBRATE); MOVE(playerRight, MOVE_CELEBRATE); MOVE(playerLeft, MOVE_SPARKLING_ARIA); }
+ } SCENE {
+ MESSAGE("The opposing Wobbuffet's burn was cured!");
+ MESSAGE("Wobbuffet's burn was cured!");
+ MESSAGE("The opposing Wynaut's burn was cured!");
+ }
+}
diff --git a/test/battle/move_effect/salt_cure.c b/test/battle/move_effect_secondary/salt_cure.c
similarity index 100%
rename from test/battle/move_effect/salt_cure.c
rename to test/battle/move_effect_secondary/salt_cure.c
diff --git a/test/battle/move_effect_secondary/smack_down.c b/test/battle/move_effect_secondary/smack_down.c
new file mode 100644
index 0000000000..c0d0e55eca
--- /dev/null
+++ b/test/battle/move_effect_secondary/smack_down.c
@@ -0,0 +1,59 @@
+#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 {
+ PLAYER(SPECIES_WOBBUFFET);
+ OPPONENT(SPECIES_SKARMORY);
+ } WHEN {
+ TURN { MOVE(opponent, MOVE_SUBSTITUTE); MOVE(player, MOVE_SMACK_DOWN); }
+ } SCENE {
+ NOT MESSAGE("The opposing Skarmory fell straight down!");
+ }
+}
+
+SINGLE_BATTLE_TEST("Thousand Arrows does not ground mons behind substitutes")
+{
+ GIVEN {
+ ASSUME(GetMoveEffect(MOVE_THOUSAND_ARROWS) == EFFECT_SMACK_DOWN);
+ PLAYER(SPECIES_WOBBUFFET);
+ OPPONENT(SPECIES_SKARMORY);
+ } WHEN {
+ TURN { MOVE(opponent, MOVE_SUBSTITUTE); MOVE(player, MOVE_THOUSAND_ARROWS); }
+ } SCENE {
+ 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/will_o_wisp.c b/test/battle/move_effect_secondary/will_o_wisp.c
new file mode 100644
index 0000000000..08b1bd6c69
--- /dev/null
+++ b/test/battle/move_effect_secondary/will_o_wisp.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "test/battle.h"
+
+TO_DO_BATTLE_TEST("TODO: Write Will-O-Wisp (Move Effect) test titles")
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_effect/thousand_arrows.c b/test/battle/move_flags/ignore_type_if_flying_and_ungrounded.c
similarity index 70%
rename from test/battle/move_effect/thousand_arrows.c
rename to test/battle/move_flags/ignore_type_if_flying_and_ungrounded.c
index c62e71001d..8536986c6c 100644
--- a/test/battle/move_effect/thousand_arrows.c
+++ b/test/battle/move_flags/ignore_type_if_flying_and_ungrounded.c
@@ -1,30 +1,13 @@
#include "global.h"
#include "test/battle.h"
-ASSUMPTIONS
-{
- ASSUME(MoveHasAdditionalEffect(MOVE_THOUSAND_ARROWS, MOVE_EFFECT_SMACK_DOWN));
- ASSUME(MoveIgnoresTypeIfFlyingAndUngrounded(MOVE_THOUSAND_ARROWS) == TRUE);
-}
-
-SINGLE_BATTLE_TEST("Thousand Arrows does not ground mons behind substitutes")
-{
- GIVEN {
- PLAYER(SPECIES_WOBBUFFET);
- OPPONENT(SPECIES_SKARMORY);
- } WHEN {
- TURN { MOVE(opponent, MOVE_SUBSTITUTE); MOVE(player, MOVE_THOUSAND_ARROWS); }
- } SCENE {
- NOT MESSAGE("The opposing Skarmory fell straight down!");
- }
-}
-
SINGLE_BATTLE_TEST("Thousand Arrows does neutral damage to non-grounded Flying types regardless of other typings")
{
u32 pokemon;
PARAMETRIZE { pokemon = SPECIES_SKARMORY; }
PARAMETRIZE { pokemon = SPECIES_SCYTHER; }
GIVEN {
+ ASSUME(MoveIgnoresTypeIfFlyingAndUngrounded(MOVE_THOUSAND_ARROWS) == TRUE);
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(pokemon);
} WHEN {
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/spread_moves.c b/test/battle/spread_moves.c
index f617bd69c1..869d5bbebb 100644
--- a/test/battle/spread_moves.c
+++ b/test/battle/spread_moves.c
@@ -3,7 +3,6 @@
DOUBLE_BATTLE_TEST("Spread Moves: Ability and Item effects activate correctly after a multi target move")
{
- // TODO: Might be a bug, verify on cardridge
GIVEN {
PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_LUM_BERRY); }
PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_COVERT_CLOAK); }
diff --git a/test/battle/status1/burn.c b/test/battle/status1/burn.c
index 3e1ac36af5..689338cce8 100644
--- a/test/battle/status1/burn.c
+++ b/test/battle/status1/burn.c
@@ -3,7 +3,7 @@
ASSUMPTIONS
{
- 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);
}
diff --git a/test/battle/status1/poison.c b/test/battle/status1/poison.c
index 90d6fa032c..0a749ea96d 100644
--- a/test/battle/status1/poison.c
+++ b/test/battle/status1/poison.c
@@ -25,7 +25,8 @@ SINGLE_BATTLE_TEST("Poison can't bad poison a poison or steel type")
PARAMETRIZE { species = SPECIES_BULBASAUR; }
GIVEN {
- ASSUME(GetMoveEffect(MOVE_POISON_GAS) == EFFECT_POISON);
+ 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);
diff --git a/test/battle/ability/switch_in_abilities.c b/test/battle/switch_in_abilities.c
similarity index 100%
rename from test/battle/ability/switch_in_abilities.c
rename to test/battle/switch_in_abilities.c
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/test_runner.c b/test/test_runner.c
index f279835c4b..8ca5b488e3 100644
--- a/test/test_runner.c
+++ b/test/test_runner.c
@@ -684,12 +684,22 @@ static s32 MgbaVPrintf_(const char *fmt, va_list va)
break;
case 'S':
pokeS = va_arg(va, const u8 *);
- while ((c = *pokeS++) != EOS)
+ if (pokeS == NULL)
{
- if ((c = gWireless_RSEtoASCIITable[c]) != '\0')
- i = MgbaPutchar_(i, c);
- else
- i = MgbaPutchar_(i, '?');
+ i = MgbaPutchar_(i, 'N');
+ i = MgbaPutchar_(i, 'U');
+ i = MgbaPutchar_(i, 'L');
+ i = MgbaPutchar_(i, 'L');
+ }
+ else
+ {
+ while ((c = *pokeS++) != EOS)
+ {
+ if ((c = gWireless_RSEtoASCIITable[c]) != '\0')
+ i = MgbaPutchar_(i, c);
+ else
+ i = MgbaPutchar_(i, '?');
+ }
}
break;
}
diff --git a/test/test_runner_battle.c b/test/test_runner_battle.c
index 531804d7cc..981683b35a 100644
--- a/test/test_runner_battle.c
+++ b/test/test_runner_battle.c
@@ -2116,17 +2116,17 @@ 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);
- enum ItemHoldEffect holdEffect = ItemId_GetHoldEffect(item);
+ enum ItemHoldEffect holdEffect = GetItemHoldEffect(item);
u32 species = GetMonData(mon, MON_DATA_SPECIES);
u32 side = battlerId & BIT_SIDE;
// Check invalid item usage.
INVALID_IF(ctx->gimmick == GIMMICK_MEGA && holdEffect != HOLD_EFFECT_MEGA_STONE && species != SPECIES_RAYQUAZA, "Cannot Mega Evolve without a Mega Stone");
INVALID_IF(ctx->gimmick == GIMMICK_Z_MOVE && holdEffect != HOLD_EFFECT_Z_CRYSTAL, "Cannot use a Z-Move without a Z-Crystal");
- INVALID_IF(ctx->gimmick == GIMMICK_Z_MOVE && ItemId_GetSecondaryId(item) != GetMoveType(*moveId)
+ INVALID_IF(ctx->gimmick == GIMMICK_Z_MOVE && GetItemSecondaryId(item) != GetMoveType(*moveId)
&& GetSignatureZMove(*moveId, species, item) == MOVE_NONE
&& *moveId != MOVE_PHOTON_GEYSER, // exception because test won't recognize Ultra Necrozma pre-Burst
- "Cannot turn %S into a Z-Move with %S", GetMoveName(ctx->move), ItemId_GetName(item));
+ "Cannot turn %S into a Z-Move with %S", GetMoveName(ctx->move), GetItemName(item));
INVALID_IF(ctx->gimmick != GIMMICK_MEGA && holdEffect == HOLD_EFFECT_MEGA_STONE, "Cannot use another gimmick while holding a Mega Stone");
INVALID_IF(ctx->gimmick != GIMMICK_Z_MOVE && ctx->gimmick != GIMMICK_ULTRA_BURST && holdEffect == HOLD_EFFECT_Z_CRYSTAL, "Cannot use another gimmick while holding a Z-Crystal");
@@ -2464,19 +2464,19 @@ void UseItem(u32 sourceLine, struct BattlePokemon *battler, struct ItemContext c
{
s32 i;
s32 battlerId = battler - gBattleMons;
- bool32 requirePartyIndex = ItemId_GetType(ctx.itemId) == ITEM_USE_PARTY_MENU || ItemId_GetType(ctx.itemId) == ITEM_USE_PARTY_MENU_MOVES;
+ bool32 requirePartyIndex = GetItemType(ctx.itemId) == ITEM_USE_PARTY_MENU || GetItemType(ctx.itemId) == ITEM_USE_PARTY_MENU_MOVES;
// Check general bad use.
INVALID_IF(DATA.turnState == TURN_CLOSED, "USE_ITEM outside TURN");
INVALID_IF(DATA.actionBattlers & (1 << battlerId), "Multiple battler actions");
INVALID_IF(ctx.itemId >= ITEMS_COUNT, "Illegal item: %d", ctx.itemId);
// Check party menu items.
- INVALID_IF(requirePartyIndex && !ctx.explicitPartyIndex, "%S requires explicit party index", ItemId_GetName(ctx.itemId));
+ INVALID_IF(requirePartyIndex && !ctx.explicitPartyIndex, "%S requires explicit party index", GetItemName(ctx.itemId));
INVALID_IF(requirePartyIndex && ctx.partyIndex >= ((battlerId & BIT_SIDE) == B_SIDE_PLAYER ? DATA.playerPartySize : DATA.opponentPartySize), \
"USE_ITEM to invalid party index");
// Check move slot items.
- if (ItemId_GetType(ctx.itemId) == ITEM_USE_PARTY_MENU_MOVES)
+ if (GetItemType(ctx.itemId) == ITEM_USE_PARTY_MENU_MOVES)
{
- INVALID_IF(!ctx.explicitMove, "%S requires an explicit move", ItemId_GetName(ctx.itemId));
+ INVALID_IF(!ctx.explicitMove, "%S requires an explicit move", GetItemName(ctx.itemId));
for (i = 0; i < MAX_MON_MOVES; i++)
{
if (GetMonData(CurrentMon(battlerId), MON_DATA_MOVE1 + i, NULL) == ctx.move)
diff --git a/test/text.c b/test/text.c
index 93aed3f8a0..436f17c477 100644
--- a/test/text.c
+++ b/test/text.c
@@ -93,7 +93,7 @@ TEST("Move descriptions fit on Pokemon Summary Screen")
u32 i;
const u32 fontId = FONT_NORMAL, widthPx = 152;
u32 move = MOVE_NONE;
- for (i = 1; i < MOVES_COUNT; i++)
+ for (i = 1; i < MOVES_COUNT_ALL; i++)
{
PARAMETRIZE_LABEL("%S", GetMoveDescription(i)) { move = i; }
}
@@ -810,6 +810,7 @@ TEST("Battle strings fit on the battle message window")
default:
break;
}
+ EXPECT(gBattleStringsTable[battleStringId] != NULL);
BattleStringExpandPlaceholders(gBattleStringsTable[battleStringId], battleString, BATTLE_STRING_BUFFER_SIZE);
DebugPrintf("Battle String ID %d: %S", battleStringId, battleString);
for (j = 1;; j++)
diff --git a/tools/mapjson/mapjson.cpp b/tools/mapjson/mapjson.cpp
index 5956ddc506..4dd036dc19 100644
--- a/tools/mapjson/mapjson.cpp
+++ b/tools/mapjson/mapjson.cpp
@@ -96,6 +96,29 @@ string json_to_string(const Json &data, const string &field = "", bool silent =
return output;
}
+string get_generated_warning(const string &filename, bool isAsm) {
+ string comment = isAsm ? "@" : "//";
+
+ ostringstream warning;
+ warning << comment << "\n"
+ << comment << " DO NOT MODIFY THIS FILE! It is auto-generated from " << filename << "\n"
+ << comment << "\n\n";
+ return warning.str();
+}
+
+string get_include_guard_start(const string &name) {
+ ostringstream guard;
+ guard << "#ifndef GUARD_" << name << "_H\n"
+ << "#define GUARD_" << name << "_H\n\n";
+ return guard.str();
+}
+
+string get_include_guard_end(const string &name) {
+ ostringstream guard;
+ guard << "#endif // GUARD_" << name << "_H\n";
+ return guard.str();
+}
+
string generate_map_header_text(Json map_data, Json layouts_data) {
string map_layout_id = json_to_string(map_data, "layout");
@@ -114,8 +137,7 @@ string generate_map_header_text(Json map_data, Json layouts_data) {
ostringstream text;
string mapName = json_to_string(map_data, "name");
-
- text << "@\n@ DO NOT MODIFY THIS FILE! It is auto-generated from data/maps/" << mapName << "/map.json\n@\n\n";
+ text << get_generated_warning("data/maps/" + mapName + "/map.json", true);
text << mapName << ":\n"
<< "\t.4byte " << json_to_string(layout, "name") << "\n";
@@ -167,12 +189,10 @@ string generate_map_connections_text(Json map_data) {
if (map_data["connections"] == Json())
return string("\n");
- ostringstream text;
-
string mapName = json_to_string(map_data, "name");
- text << "@\n@ DO NOT MODIFY THIS FILE! It is auto-generated from data/maps/" << mapName << "/map.json\n@\n\n";
-
+ ostringstream text;
+ text << get_generated_warning("data/maps/" + mapName + "/map.json", true);
text << mapName << "_MapConnectionsList:\n";
for (auto &connection : map_data["connections"].array_items()) {
@@ -193,11 +213,11 @@ string generate_map_events_text(Json map_data) {
if (map_data.object_items().find("shared_events_map") != map_data.object_items().end())
return string("\n");
- ostringstream text;
-
string mapName = json_to_string(map_data, "name");
- text << "@\n@ DO NOT MODIFY THIS FILE! It is auto-generated from data/maps/" << mapName << "/map.json\n@\n\n\t.align 2\n\n";
+ ostringstream text;
+ text << get_generated_warning("data/maps/" + mapName + "/map.json", true);
+ text << "\t.align 2\n\n";
string objects_label, warps_label, coords_label, bgs_label;
@@ -371,10 +391,52 @@ void process_map(string map_filepath, string layouts_filepath, string output_dir
write_text_file(out_dir + "connections.inc", connections_text);
}
+void process_event_constants(const vector &map_filepaths, string output_ids_file) {
+ string warning = get_generated_warning("data/maps/*/map.json", false);
+
+ string guard_name = "CONSTANTS_MAP_EVENT_IDS";
+ ostringstream ids_file_text;
+ ids_file_text << get_include_guard_start(guard_name) << warning;
+
+ for (const string &filepath : map_filepaths) {
+ string err;
+ string map_json_text = read_text_file(filepath);
+ Json map_data = Json::parse(map_json_text, err);
+ if (map_data == Json())
+ FATAL_ERROR("Failed to read '%s' while generating map event constants: %s\n", filepath.c_str(), err.c_str());
+
+ string map_id = json_to_string(map_data, "id");
+
+ // Get IDs from the object/clone events.
+ ostringstream map_ids_text;
+ auto obj_events = map_data["object_events"].array_items();
+ for (unsigned int i = 0; i < obj_events.size(); i++) {
+ auto obj_event = obj_events[i];
+ if (obj_event.object_items().find("local_id") != obj_event.object_items().end())
+ map_ids_text << "#define " << json_to_string(obj_event, "local_id") << " " << i + 1 << "\n";
+ }
+ // Get IDs from the warp events.
+ auto warp_events = map_data["warp_events"].array_items();
+ for (unsigned int i = 0; i < warp_events.size(); i++) {
+ auto warp_event = warp_events[i];
+ if (warp_event.object_items().find("warp_id") != warp_event.object_items().end())
+ map_ids_text << "#define " << json_to_string(warp_event, "warp_id") << " " << i << "\n";
+ }
+ // Only output if we found any IDs
+ string temp = map_ids_text.str();
+ if (!temp.empty()) {
+ ids_file_text << "// " << map_id << "\n" << temp << "\n";
+ }
+ }
+
+ ids_file_text << get_include_guard_end(guard_name);
+ write_text_file(output_ids_file, ids_file_text.str());
+}
+
string generate_groups_text(Json groups_data) {
ostringstream text;
- text << "@\n@ DO NOT MODIFY THIS FILE! It is auto-generated from data/maps/map_groups.json\n@\n\n";
+ text << get_generated_warning("data/maps/map_groups.json", true);
for (auto &key : groups_data["group_order"].array_items()) {
string group = json_to_string(key);
@@ -415,7 +477,7 @@ string generate_connections_text(Json groups_data, string include_path) {
ostringstream text;
- text << "@\n@ DO NOT MODIFY THIS FILE! It is auto-generated from data/maps/map_groups.json\n@\n\n";
+ text << get_generated_warning("data/maps/map_groups.json", true);
for (Json map_name : map_names)
text << "\t.include \"" << include_path << "/" << json_to_string(map_name) << "/connections.inc\"\n";
@@ -432,7 +494,7 @@ string generate_headers_text(Json groups_data, string include_path) {
ostringstream text;
- text << "@\n@ DO NOT MODIFY THIS FILE! It is auto-generated from data/maps/map_groups.json\n@\n\n";
+ text << get_generated_warning("data/maps/map_groups.json", true);
for (string map_name : map_names)
text << "\t.include \"" << include_path << "/" << map_name << "/header.inc\"\n";
@@ -449,7 +511,7 @@ string generate_events_text(Json groups_data, string include_path) {
ostringstream text;
- text << "@\n@ DO NOT MODIFY THIS FILE! It is auto-generated from " << include_path << "/map_groups.json\n@\n\n";
+ text << get_generated_warning(include_path + "/map_groups.json", true);
for (string map_name : map_names)
text << "\t.include \"" << include_path << "/" << map_name << "/events.inc\"\n";
@@ -460,11 +522,11 @@ string generate_events_text(Json groups_data, string include_path) {
string generate_map_constants_text(string groups_filepath, Json groups_data) {
string file_dir = file_parent(groups_filepath) + sep;
+ string guard_name = "CONSTANTS_MAP_GROUPS";
ostringstream text;
ostringstream mapCountText;
- text << "#ifndef GUARD_CONSTANTS_MAP_GROUPS_H\n"
- << "#define GUARD_CONSTANTS_MAP_GROUPS_H\n\n";
+ text << get_include_guard_start(guard_name) << get_generated_warning("data/maps/map_groups.json", false);
text << "//\n// DO NOT MODIFY THIS FILE! It is auto-generated from data/maps/map_groups.json\n//\n\n";
@@ -504,7 +566,7 @@ string generate_map_constants_text(string groups_filepath, Json groups_data) {
}
text << "#define MAP_GROUPS_COUNT " << group_num << "\n\n";
- text << "#endif // GUARD_CONSTANTS_MAP_GROUPS_H\n";
+ text << get_include_guard_end(guard_name);
char s = file_dir.back();
mapCountText << "static const u8 MAP_GROUP_COUNT[] = {"; //DEBUG
@@ -544,7 +606,7 @@ void process_groups(string groups_filepath, string output_asm, string output_c)
string generate_layout_headers_text(Json layouts_data) {
ostringstream text;
- text << "@\n@ DO NOT MODIFY THIS FILE! It is auto-generated from data/layouts/layouts.json\n@\n\n";
+ text << get_generated_warning("data/layouts/layouts.json", true);
for (auto &layout : layouts_data["layouts"].array_items()) {
if (layout == Json::object()) continue;
@@ -577,7 +639,7 @@ string generate_layout_headers_text(Json layouts_data) {
string generate_layouts_table_text(Json layouts_data) {
ostringstream text;
- text << "@\n@ DO NOT MODIFY THIS FILE! It is auto-generated from data/layouts/layouts.json\n@\n\n";
+ text << get_generated_warning("data/layouts/layouts.json", true);
text << "\t.align 2\n"
<< json_to_string(layouts_data, "layouts_table_label") << "::\n";
@@ -592,12 +654,9 @@ string generate_layouts_table_text(Json layouts_data) {
}
string generate_layouts_constants_text(Json layouts_data) {
+ string guard_name = "CONSTANTS_LAYOUTS";
ostringstream text;
-
- text << "#ifndef GUARD_CONSTANTS_LAYOUTS_H\n"
- << "#define GUARD_CONSTANTS_LAYOUTS_H\n\n";
-
- text << "//\n// DO NOT MODIFY THIS FILE! It is auto-generated from data/layouts/layouts.json\n//\n\n";
+ text << get_include_guard_start(guard_name) << get_generated_warning("data/layouts/layouts.json", false);
int i = 1;
for (auto &layout : layouts_data["layouts"].array_items()) {
@@ -606,7 +665,7 @@ string generate_layouts_constants_text(Json layouts_data) {
i++;
}
- text << "\n#endif // GUARD_CONSTANTS_LAYOUTS_H\n";
+ text << get_include_guard_end(guard_name);
return text.str();
}
@@ -641,9 +700,6 @@ int main(int argc, char *argv[]) {
char *mode_arg = argv[1];
string mode(mode_arg);
- if (mode != "layouts" && mode != "map" && mode != "groups")
- FATAL_ERROR("ERROR: must be 'layouts', 'map', or 'groups'.\n");
-
if (mode == "map") {
if (argc != 6)
FATAL_ERROR("USAGE: mapjson map \n");
@@ -677,8 +733,24 @@ int main(int argc, char *argv[]) {
process_layouts(filepath, output_asm, output_c);
}
+ else if (mode == "event_constants") {
+ if (argc < 5)
+ FATAL_ERROR("USAGE: mapjson event_constants [additional_map_files] ");
+
+ infer_separator(argv[3]);
+
+ vector filepaths;
+ const int firstMapFileArg = 3;
+ const int lastMapFileArg = argc - 2;
+ for (int i = firstMapFileArg; i <= lastMapFileArg; i++) {
+ filepaths.push_back(argv[i]);
+ }
+ string output_ids_file(argv[argc - 1]);
+
+ process_event_constants(filepaths, output_ids_file);
+ }
else {
- FATAL_ERROR("ERROR: must be 'layouts', 'map', or 'groups'.\n");
+ FATAL_ERROR("ERROR: must be 'layouts', 'map', 'event_constants', or 'groups'.\n");
}
return 0;
diff --git a/tools/trainerproc/main.c b/tools/trainerproc/main.c
index 274f1f8dae..478f35dd3d 100644
--- a/tools/trainerproc/main.c
+++ b/tools/trainerproc/main.c
@@ -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;
@@ -459,7 +465,7 @@ static bool match_identifier(struct Parser *p, struct Token *t)
if (!peek_char(&p_, &c))
break;
- if (('A' <= c && c <= 'Z') || ('a' <= c && c <= 'z') || ('0' <= c && c <= '9') || c == '_')
+ if (('A' <= c && c <= 'Z') || ('a' <= c && c <= 'z') || ('0' <= c && c <= '9') || c == '_'|| c == '\'')
;
else
break;
@@ -493,7 +499,7 @@ static bool match_human_identifier(struct Parser *p, struct Token *t)
if (!peek_char(&p_, &c))
break;
- if (('A' <= c && c <= 'Z') || ('a' <= c && c <= 'z') || c == '_' || c == '-' || c == ' ')
+ if (('A' <= c && c <= 'Z') || ('a' <= c && c <= 'z') || c == '_' || c == '-' || c == ' ' || c == '\'')
;
else if (p_.offset > t->begin && ('0' <= c && c <= '9'))
;
@@ -573,7 +579,7 @@ static bool match_move_identifier(struct Parser *p, struct Token *t)
if (!peek_char(&p_, &c))
break;
- if (('A' <= c && c <= 'Z') || ('a' <= c && c <= 'z') || ('0' <= c && c <= '9') || c == '_' || c == '-' || c == ' ' || c == ',')
+ if (('A' <= c && c <= 'Z') || ('a' <= c && c <= 'z') || ('0' <= c && c <= '9') || c == '_' || c == '-' || c == ' ' || c == ',' || c == '\'')
;
else
break;
@@ -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;
@@ -1581,6 +1612,8 @@ static void fprint_constant(FILE *f, const char *prefix, struct String s)
fputc(c, f);
else if ('a' <= c && c <= 'z')
fputc(c - 'a' + 'A', f);
+ else if (c == '\'')
+ ;
else
fputc('_', f);
}
@@ -1757,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
index 38c62d5cc7..5de52fbea9 100644
--- a/tools/wild_encounters/wild_encounters_to_header.py
+++ b/tools/wild_encounters/wild_encounters_to_header.py
@@ -4,6 +4,7 @@
IS_ENABLED = False
+DEXNAV_ENABLED = False
# C string vars
define = "#define"
@@ -54,8 +55,6 @@
hForMaps = True
headersArray = [headerIndex]
-
-
# debug output control
mainSwitch = True
printWarningAndInclude = mainSwitch
@@ -115,6 +114,9 @@ def ImportWildEncounterFile():
if IsConfigEnabled():
IS_ENABLED = True
TIMES_OF_DAY_COUNT = len(TIME_OF_DAY)
+
+ global DEXNAV_ENABLED
+ DEXNAV_ENABLED = IsDexnavEnabled()
global fieldInfoStrings
global fieldStrings
@@ -160,26 +162,25 @@ def ImportWildEncounterFile():
if data["for_maps"]:
hForMaps = wData["wild_encounter_groups"][headerIndex]["for_maps"]
-
- # for the encounter rate macros, so we don't worry about hidden mons here
+
if headerIndex == 0:
wFields = wData["wild_encounter_groups"][headerIndex]["fields"]
fieldCounter = 0
for field in wFields:
- fieldData.append({})
- fieldData[fieldCounter]["name"] = field["type"]
- fieldData[fieldCounter]["pascalName"] = GetPascalCase(field["type"])
- fieldData[fieldCounter]["snakeName"] = GetSnakeCase(field["type"])
- fieldData[fieldCounter]["encounter_rates"] = field["encounter_rates"]
+ if not CheckFieldDataDupes(field["type"]):
+ AddFieldData(fieldCounter, field["type"], field["encounter_rates"])
if "groups" in field:
fieldData[fieldCounter]["groups"] = field["groups"]
- if fieldCounter == len(wFields) - 1:
- fieldData.append({})
- fieldData[fieldCounter + 1]["name"] = "hidden_mons"
- fieldData[fieldCounter + 1]["pascalName"] = GetPascalCase("hidden_mons")
- fieldData[fieldCounter + 1]["snakeName"] = GetSnakeCase("hidden_mons")
+ """
+ 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
@@ -437,25 +438,28 @@ def PrintEncounterRateMacros():
return
fieldCounter = 0
- # len(fieldData) - 1 here so we skip hidden_mons
- while fieldCounter < len(fieldData) - 1:
+ while fieldCounter < len(fieldData):
tempName = fieldData[fieldCounter]["name"].upper()
if "groups" not in fieldData[fieldCounter]:
rateCount = 0
- for percent in fieldData[fieldCounter]["encounter_rates"]:
- 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
+ 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"]
@@ -504,15 +508,15 @@ def GetIMonInfoStringFromIndex(index):
def GetMapGroupEnum(string, index = 0):
if "MAP_" in string and index == 0:
- return "MAP_GROUP(" + string[4:len(string)] + ")"
+ return "MAP_GROUP(" + string + ")"
elif "MAP_" in string and index != 0:
- return "MAP_NUM(" + string[4:len(string)] + ")"
+ return "MAP_NUM(" + string + ")"
return index
"""
get copied lhea :^ )
-- next three functions copied almost verbatim from @lhearachel's python scripts in tools/learnset_helpers
+- next four functions copied almost verbatim from @lhearachel's python scripts in tools/learnset_helpers
"""
def PrintGeneratedWarningText():
print("//")
@@ -530,10 +534,19 @@ def IsConfigEnabled():
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/rtc.h", "r") as rtc_include_file:
+ 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")
@@ -600,6 +613,21 @@ def GetSnakeCase(string):
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
@@ -651,6 +679,13 @@ def main():
#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 },