Merge branch 'upcoming' into merrps-dns
|
|
@ -5,49 +5,66 @@ body:
|
|||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
Please fill in all required fields with as many details as possible.
|
||||
Please fill in all fields with as many details as possible.
|
||||
- type: textarea
|
||||
id: description
|
||||
attributes:
|
||||
label: Description
|
||||
description: |
|
||||
Describe the issue you are experiencing.
|
||||
Attach images/videos if possible.
|
||||
What behavior are you expecting to happen? What behavior are you observing instead?
|
||||
placeholder: |
|
||||
Please enter a description of the issue. Here you can also attach log screenshots, gifs or a video
|
||||
Please be as descriptive as possible.
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: reproduction
|
||||
attributes:
|
||||
label: Reproduction Steps
|
||||
description: |
|
||||
What exact steps can somebody else follow in order to recreate the issue on their own?
|
||||
placeholder: |
|
||||
Provide as much context as possible as to what was done to create the issue.
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: media
|
||||
attributes:
|
||||
label: Images / Video
|
||||
description: |
|
||||
Do you have images or videos to show the problem happen?
|
||||
placeholder: |
|
||||
Here you can also attach logs, screenshots, gifs or a video.
|
||||
validations:
|
||||
required: false
|
||||
- type: dropdown
|
||||
id: version
|
||||
attributes:
|
||||
label: Version
|
||||
description: What version of pokeemerald-expansion are you using as a base?
|
||||
description: What version of pokeemerald-expansion are you using?
|
||||
options:
|
||||
- 1.10.2 (Latest release)
|
||||
- 1.11.1 (Latest release)
|
||||
- master (default, unreleased bugfixes)
|
||||
- upcoming (Edge)
|
||||
- 1.11.0
|
||||
- 1.10.3
|
||||
- 1.10.2
|
||||
- 1.10.1
|
||||
- 1.10.0
|
||||
- 1.9.4
|
||||
- 1.9.3
|
||||
- 1.9.2
|
||||
- 1.9.1
|
||||
- 1.9.0
|
||||
- pre-1.9.0
|
||||
- pre-1.10.0
|
||||
validations:
|
||||
required: true
|
||||
- type: input
|
||||
id: upcomingversion
|
||||
attributes:
|
||||
label: Upcoming/master Version
|
||||
description: If you're using the upcoming or master branches directly, please specify what was the commit hash you pulled from.
|
||||
description: If you're using the `upcoming` or `master` branches directly, please use the following command to give us the commit hash that you are on. `git log --merges RHH/upcoming -1 --format=%H` Replace `upcoming` with `master` if you're using `master`.
|
||||
validations:
|
||||
required: false
|
||||
- type: input
|
||||
id: contact
|
||||
attributes:
|
||||
label: Discord contact info
|
||||
description: Provide your Discord tag here so we can contact you in case we need more details. Be sure to join our server ([here](https://discord.gg/6CzjAG6GZk)).
|
||||
description: Provide your Discord tag here so we can contact you in case we need more details. Discussion around **`pokeemerald-expansion`** happens in our [Discord server](https://discord.gg/6CzjAG6GZk).
|
||||
placeholder: ex. Lunos#4026
|
||||
validations:
|
||||
required: false
|
||||
|
|
|
|||
45
.github/ISSUE_TEMPLATE/02_battle_ai_issues.yaml
vendored
|
|
@ -5,49 +5,66 @@ body:
|
|||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
Please fill in all required fields with as many details as possible.
|
||||
Please fill in all fields with as many details as possible.
|
||||
- type: textarea
|
||||
id: description
|
||||
attributes:
|
||||
label: Description
|
||||
description: |
|
||||
Describe the issue you are experiencing.
|
||||
Attach images/videos if possible.
|
||||
What behavior are you expecting to happen? What behavior are you observing instead?
|
||||
placeholder: |
|
||||
Please enter a description of the issue. Here you can also attach log screenshots, gifs or a video
|
||||
Please be as descriptive as possible.
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: reproduction
|
||||
attributes:
|
||||
label: Reproduction Steps
|
||||
description: |
|
||||
What exact steps can somebody else follow in order to recreate the issue on their own?
|
||||
placeholder: |
|
||||
Provide as much context as possible as to what was done to create the issue.
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: media
|
||||
attributes:
|
||||
label: Images / Video
|
||||
description: |
|
||||
Do you have images or videos to show the problem happen?
|
||||
placeholder: |
|
||||
Here you can also attach logs, screenshots, gifs or a video.
|
||||
validations:
|
||||
required: false
|
||||
- type: dropdown
|
||||
id: version
|
||||
attributes:
|
||||
label: Version
|
||||
description: What version of pokeemerald-expansion are you using as a base?
|
||||
description: What version of pokeemerald-expansion are you using?
|
||||
options:
|
||||
- 1.10.2 (Latest release)
|
||||
- 1.11.1 (Latest release)
|
||||
- master (default, unreleased bugfixes)
|
||||
- upcoming (Edge)
|
||||
- 1.11.0
|
||||
- 1.10.3
|
||||
- 1.10.2
|
||||
- 1.10.1
|
||||
- 1.10.0
|
||||
- 1.9.4
|
||||
- 1.9.3
|
||||
- 1.9.2
|
||||
- 1.9.1
|
||||
- 1.9.0
|
||||
- pre-1.9.0
|
||||
- pre-1.10.0
|
||||
validations:
|
||||
required: true
|
||||
- type: input
|
||||
id: upcomingversion
|
||||
attributes:
|
||||
label: Upcoming/master Version
|
||||
description: If you're using the upcoming or master branches directly, please specify what was the commit hash you pulled from.
|
||||
description: If you're using the `upcoming` or `master` branches directly, please use the following command to give us the commit hash that you are on. `git log --merges RHH/upcoming -1 --format=%H` Replace `upcoming` with `master` if you're using `master`.
|
||||
validations:
|
||||
required: false
|
||||
- type: input
|
||||
id: contact
|
||||
attributes:
|
||||
label: Discord contact info
|
||||
description: Provide your Discord tag here so we can contact you in case we need more details. Be sure to join our server ([here](https://discord.gg/6CzjAG6GZk)).
|
||||
description: Provide your Discord tag here so we can contact you in case we need more details. Discussion around **`pokeemerald-expansion`** happens in our [Discord server](https://discord.gg/6CzjAG6GZk).
|
||||
placeholder: ex. Lunos#4026
|
||||
validations:
|
||||
required: false
|
||||
|
|
|
|||
23
.github/ISSUE_TEMPLATE/03_feature_requests.yaml
vendored
|
|
@ -5,23 +5,32 @@ body:
|
|||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
Please fill in all required fields with as many details as possible.
|
||||
Please fill in all fields with as many details as possible.
|
||||
- type: textarea
|
||||
id: description
|
||||
id: behavior
|
||||
attributes:
|
||||
label: Description
|
||||
label: Behavior Description
|
||||
description: |
|
||||
Describe the issue you are experiencing.
|
||||
Attach images/videos if possible.
|
||||
What is the current behavior? What behavior would you expect your feature request to provide? What other information can you provide to help your feature get implemented?
|
||||
placeholder: |
|
||||
Please enter a description of the issue. Here you can also attach log screenshots, gifs or a video
|
||||
Provide as much context as possible.
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: media
|
||||
attributes:
|
||||
label: Images / Video
|
||||
description: |
|
||||
Have other projects or games solved this problem? Do you have images or video to show this happening?
|
||||
placeholder: |
|
||||
Here you can also attach logs, screenshots, gifs or a video.
|
||||
validations:
|
||||
required: false
|
||||
- type: input
|
||||
id: contact
|
||||
attributes:
|
||||
label: Discord contact info
|
||||
description: Provide your Discord tag here so we can contact you in case we need more details. Be sure to join our server ([here](https://discord.gg/6CzjAG6GZk)).
|
||||
description: Provide your Discord tag here so we can contact you in case we need more details. Discussion around **pokeemerald-expansion** happens in our [Discord server](https://discord.gg/6CzjAG6GZk).
|
||||
placeholder: ex. Lunos#4026
|
||||
validations:
|
||||
required: false
|
||||
|
|
|
|||
45
.github/ISSUE_TEMPLATE/04_other_errors.yaml
vendored
|
|
@ -5,49 +5,66 @@ body:
|
|||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
Please fill in all required fields with as many details as possible.
|
||||
Please fill in all fields with as many details as possible.
|
||||
- type: textarea
|
||||
id: description
|
||||
attributes:
|
||||
label: Description
|
||||
description: |
|
||||
Describe the issue you are experiencing.
|
||||
Attach images/videos if possible.
|
||||
What behavior are you expecting to happen? What behavior are you observing instead?
|
||||
placeholder: |
|
||||
Please enter a description of the issue. Here you can also attach log screenshots, gifs or a video
|
||||
Please be as descriptive as possible.
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: reproduction
|
||||
attributes:
|
||||
label: Reproduction Steps
|
||||
description: |
|
||||
What exact steps can somebody else follow in order to recreate the issue on their own?
|
||||
placeholder: |
|
||||
Provide as much context as possible as to what was done to create the issue.
|
||||
validations:
|
||||
required: false
|
||||
- type: textarea
|
||||
id: media
|
||||
attributes:
|
||||
label: Images / Video
|
||||
description: |
|
||||
Do you have images or videos to show the problem happen?
|
||||
placeholder: |
|
||||
Here you can also attach logs, screenshots, gifs or a video.
|
||||
validations:
|
||||
required: false
|
||||
- type: dropdown
|
||||
id: version
|
||||
attributes:
|
||||
label: Version
|
||||
description: What version of pokeemerald-expansion are you using as a base?
|
||||
description: What version of pokeemerald-expansion are you using?
|
||||
options:
|
||||
- 1.10.2 (Latest release)
|
||||
- 1.11.1 (Latest release)
|
||||
- master (default, unreleased bugfixes)
|
||||
- upcoming (Edge)
|
||||
- 1.11.0
|
||||
- 1.10.3
|
||||
- 1.10.2
|
||||
- 1.10.1
|
||||
- 1.10.0
|
||||
- 1.9.4
|
||||
- 1.9.3
|
||||
- 1.9.2
|
||||
- 1.9.1
|
||||
- 1.9.0
|
||||
- pre-1.9.0
|
||||
- pre-1.10.0
|
||||
validations:
|
||||
required: true
|
||||
- type: input
|
||||
id: upcomingversion
|
||||
attributes:
|
||||
label: Upcoming/master Version
|
||||
description: If you're using the upcoming or master branches directly, please specify what was the commit hash you pulled from.
|
||||
description: If you're using the `upcoming` or `master` branches directly, please use the following command to give us the commit hash that you are on. `git log --merges RHH/upcoming -1 --format=%H` Replace `upcoming` with `master` if you're using `master`.
|
||||
validations:
|
||||
required: false
|
||||
- type: input
|
||||
id: contact
|
||||
attributes:
|
||||
label: Discord contact info
|
||||
description: Provide your Discord tag here so we can contact you in case we need more details. Be sure to join our server ([here](https://discord.gg/6CzjAG6GZk)).
|
||||
description: Provide your Discord tag here so we can contact you in case we need more details. Discussion around **`pokeemerald-expansion`** happens in our [Discord server](https://discord.gg/6CzjAG6GZk).
|
||||
placeholder: ex. Lunos#4026
|
||||
validations:
|
||||
required: false
|
||||
|
|
|
|||
49
.github/pull_request_template.md
vendored
|
|
@ -1,36 +1,41 @@
|
|||
<!--- Provide a general summary of your changes in the Title above -->
|
||||
<!--- Provide a descriptive title that describes what was changed in this PR. --->
|
||||
|
||||
<!--- Before submitting, please make sure your pull request meets the scope guidelines. If unsure, please open a thread in #pr-discussions.-->
|
||||
<!--- Scope Guidelines: https://github.com/rh-hideout/pokeemerald-expansion/blob/master/docs/team_procedures/scope.md -->
|
||||
<!--- #pr-discussions: https://discord.com/channels/419213663107416084/1102784418369785948 -->
|
||||
<!--- CONTRIBUTING.md : https://github.com/rh-hideout/pokeemerald-expansion/blob/master/CONTRIBUTING.md --->
|
||||
|
||||
<!--- Before submitting, ensure the following:--->
|
||||
|
||||
<!--- Code compiles without errors. --->
|
||||
<!--- All functionality works as expected in-game. --->
|
||||
<!--- No unexpected test failures. --->
|
||||
<!--- New functionality is covered by tests if applicable. --->
|
||||
<!--- Code follows the style guide. --->
|
||||
<!--- No merge conflicts with the target branch. --->
|
||||
<!--- If any of the above are not true, submit the PR as a draft. --->
|
||||
|
||||
## Description
|
||||
<!--- Describe your changes in detail -->
|
||||
<!--- If you believe this PR qualifies as a "Big Feature" as defined in docs/team_procedures/schedule.md, please let a Maintainer know! -->
|
||||
<!-- Detail the changes made, why they were made, and any important context. -->
|
||||
|
||||
## Images
|
||||
<!-- Please provide with relevant GIFs or images to make it easier for reviewers to accept your PR quicker.-->
|
||||
<!-- If it doesn't apply, feel free to remove this section. -->
|
||||
## Media
|
||||
<!--- Add relevant images, GIFs, or videos to help reviewers understand the changes. Remove this section if not applicable. --->
|
||||
|
||||
## Issue(s) that this PR fixes
|
||||
<!-- Format: "Fixes #2345, fixes #4523, fixes #2222." -->
|
||||
<!-- If it doesn't apply, feel free to remove this section. -->
|
||||
<!-- Format: "Fixes #2345, fixes #4523, closes #2222." Remove this section if not applicable.-->
|
||||
|
||||
## **People who collaborated with me in this PR**
|
||||
<!-- Please credit everyone else that contributed to this PR, be it code and/or assets. -->
|
||||
<!-- Use their GitHub tag if they have one (or add "@/" at the start if they don't). Be sure to start the line using @ so the automatic changelog can properly detect the collaborators. -->
|
||||
## People who collaborated with me in this PR
|
||||
<!-- Credit anyone who helped with this PR. -->
|
||||
<!-- Use their GitHub tag if they have one (or add "@/" at the start if they don't). The line must start with @. -->
|
||||
<!-- Eg.: "@Lunos for sprites, @/Masuda for support" -->
|
||||
<!-- If it doesn't apply, feel free to remove this section. -->
|
||||
<!--- Remove this section if not applicable. --->
|
||||
|
||||
## Feature(s) this PR does NOT handle:
|
||||
<!-- If your PR contains any unfinished features that are not considered merge-blocking, please list them here for clarity so no one can forget. -->
|
||||
<!-- If it doesn't apply, feel free to remove this section. -->
|
||||
<!-- If this PR contains any unfinished and non-blocking work, please list them here for clarity. -->
|
||||
<!--- Remove this section if not applicable. --->
|
||||
|
||||
## Things to note in the release changelog:
|
||||
<!-- We use an automated system to generate our changelogs, so if there's something of note that our end users should know in regards to this change besides the title of this PR, they should be added here. -->
|
||||
<!-- *MUST* be structured as bullet points. -->
|
||||
<!-- If it doesn't apply, feel free to remove this section. -->
|
||||
<!-- Add any important details for the release changelog. Must be structed as bullet points. --->
|
||||
<!--- Remove this section if not applicable. --->
|
||||
|
||||
## **Discord contact info**
|
||||
<!--- Formatted as username (e.g. Lunos) or username#numbers (e.g. Lunos#4026) -->
|
||||
## Discord contact info
|
||||
<!-- Add your Discord username for any follow-up questions (e.g., Lunos#1234). -->
|
||||
<!--- Remove this section if not applicable. --->
|
||||
<!--- Contributors must join https://discord.gg/6CzjAG6GZk -->
|
||||
|
|
|
|||
27
.github/workflows/labels.yml
vendored
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
name: Labels
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
types: [opened, labeled, unlabeled]
|
||||
|
||||
jobs:
|
||||
label:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: check labels
|
||||
uses: mheap/github-action-required-labels@v5
|
||||
with:
|
||||
mode: minimum
|
||||
count: 1
|
||||
labels: |
|
||||
General
|
||||
category: ability
|
||||
category: battle-ai
|
||||
category: battle-mechanic
|
||||
category: battle-tests
|
||||
category: items
|
||||
category: move animation
|
||||
category: move effect
|
||||
category: overworld
|
||||
category: pokemon
|
||||
category: sprite-issue
|
||||
1
.gitignore
vendored
|
|
@ -45,3 +45,4 @@ tools/trainerproc/trainerproc
|
|||
*.smol
|
||||
*.fastSmol
|
||||
*.smolTM
|
||||
__pycache__
|
||||
|
|
|
|||
142
CONTRIBUTING.md
Normal file
|
|
@ -0,0 +1,142 @@
|
|||
# Contributing to pokeemerald-expansion
|
||||
|
||||
First off, thanks for helping improve `pokeemerald-expansion`! ❤️
|
||||
|
||||
All contributions are encouraged and valued. Please make sure to read the relevant section before making your contribution! It will make it a lot easier for you and the maintainers. We're excited to see your contributions. 🎉
|
||||
|
||||
## Bug Reports
|
||||
|
||||
We use [GitHub](https://github.com/rh-hideout/pokeemerald-expansion/issues?q=sort%3Aupdated-desc+is%3Aissue+is%3Aopen+label%3Abug) issues to track bugs.
|
||||
|
||||
### What should I do before making a bug report?
|
||||
|
||||
- Does your bug occur on the latest unmodified (clean) version of the [`upcoming`](https://github.com/rh-hideout/pokeemerald-expansion/tree/upcoming) or [`master`](https://github.com/rh-hideout/pokeemerald-expansion/tree/master) branch? If not, please do not submit a report - the issue is most likely one introduced by your game.
|
||||
- Has somebody else already found this issue? This is best done by searching the [bug tracker](https://github.com/rh-hideout/pokeemerald-expansion/issues?q=label%3Abug) to see if anybody else reported it. If there is already an issue, replying to the exsting issue with more information can help solve the problem.
|
||||
|
||||
### How do I submit a bug report?
|
||||
|
||||
If you run into an issue with the project, open an [issue](https://github.com/rh-hideout/pokeemerald-expansion/issues/new).
|
||||
|
||||
The best bug reports have enough information that we won't have to contact you for more information. We welcome all efforts to improve pokeemerald-expansion, but would be very grateful if you completed as much of the checklist as possible in your bug report. This will help other contributiors fix your issue.
|
||||
|
||||
### What happens after I submit a bug report?
|
||||
|
||||
- A maintainer will [label](https://github.com/rh-hideout/pokeemerald-expansion/labels) the bug report.
|
||||
- A maintainer will try to reproduce the bug with your provided steps.
|
||||
- If there are no reproduction steps or no obvious way to reproduce the issue, somebody will ask you for those steps. Until the bug can be reproduced, the bug will retain the `bug:unconfirmed` label. Unconfirmed bugs are less likely get fixed.
|
||||
- If the team is able to reproduce the issue, it will be labeled `bug:confirmed`, and the issue will be left to be [implemented by someone](#Pull-Requests).
|
||||
- If the issue is particularly game-breaking, a maintainer will add it to a future version's [milestone](), meaning that version will not be released until the problem is solved.
|
||||
|
||||
## Feature Requests
|
||||
|
||||
This section guides you through submitting a feature request for pokeemerald-expansion, **including completely new features and minor improvements to existing functionality**. Following these guidelines will help maintainers and the community to understand your suggestion and find related suggestions.
|
||||
|
||||
- We use [GitHub](https://github.com/rh-hideout/pokeemerald-expansion/issues?q=sort%3Aupdated-desc+is%3Aissue+is%3Aopen+label%3Afeature-request) issues to track feature requests.
|
||||
|
||||
### What should I do before making a feature request?
|
||||
|
||||
- Make sure your request is in [pokeemerald-expansion's scope](team_procedures/scope.md) - if it is not clear if something is in scope, you can start a discussion thread in the [#pr-discussions](https://discord.com/channels/419213663107416084/1102784418369785948) channel of the [the RHH Discord Server](https://discord.gg/6CzjAG6GZk).
|
||||
|
||||
### What should I do before making a feature request?
|
||||
|
||||
- Read the [documentation](https://rh-hideout.github.io/pokeemerald-expansion/) to find out if the functionality is already covered, maybe by an individual configuration.
|
||||
- Perform a [search](https://github.com/rh-hideout/pokeemerald-expansion/issues) to see if the feature has already been requested. If it has, add a comment to the existing issue instead of opening a new one.
|
||||
|
||||
### How do I submit a feature request?
|
||||
|
||||
To request a feature to be added to the project, open a [feature request](https://github.com/rh-hideout/pokeemerald-expansion/issues/new).
|
||||
|
||||
### What happens after I submit a feature request?
|
||||
|
||||
- A maintainer will [label](https://github.com/rh-hideout/pokeemerald-expansion/labels) the issue.
|
||||
- If the feature request is out of [scope](team_procedures/scope.md), it will be closed.
|
||||
- if the request is in scope, any other contributor can volunteer to [fufill it via a pull request](#Pull-Requests). When the request is filled, the request will be closed.
|
||||
|
||||
## Pull Requests
|
||||
|
||||
If you have read all of this and still need help, feel free to start a thread in #pr-discussions of the Discord server or ask questions in #expansion-dev.
|
||||
|
||||
### What should I do before starting a pull request?
|
||||
|
||||
- If you're new to git and GitHub, [Team Aqua's Asset Repo](https://github.com/Pawkkie/Team-Aquas-Asset-Repo/) has a [guide on forking and cloning the repository](https://github.com/Pawkkie/Team-Aquas-Asset-Repo/wiki/The-Basics-of-GitHub). Make sure you have a [local copy](INSTALL.md) of `pokeemerald-expansion`.
|
||||
- Make sure your contribution is in [scope](team_procedures/scope.md) - if it is not clear if something is in scope, you can start a discussion thread in the [#pr-discussions](https://discord.com/channels/419213663107416084/1102784418369785948) channel of the [the RHH Discord Server!](https://discord.gg/6CzjAG6GZk).
|
||||
- Choose a branch to contribute your PR to:
|
||||
- **`master`**: Fixes for bugs that are currently present in the `master` branch.
|
||||
- **`upcoming`**: All other pull requests.
|
||||
- Create a new branch from the most recent version of the branch you've chosen.
|
||||
- If your contribution introduces, removes, or changes a lot of existing code, we reccomend getting a maintainer to agree to review it before you start on the work! We have a table that lists all [current maintainers and their areas of expertise](#maintainers).
|
||||
|
||||
### How do I submit a pull request?
|
||||
|
||||
#### 1. Get a working local copy
|
||||
If you haven't already, follow [INSTALL.md](INSTALL.md) to get a working local copy of `pokeemerald-expansion`.
|
||||
|
||||
#### 2. Set RHH as a remote
|
||||
This will designate the main `pokeemerald-expansion` repository as a remote.
|
||||
```bash
|
||||
git remote add RHH https://github.com/rh-hideout/pokeemerald-expansion # You can replace RHH with anything you want. This tutorial assumes you used RHH.
|
||||
```
|
||||
|
||||
#### 3. Create a new branch
|
||||
This will create a new branch and switch to it.
|
||||
```bash
|
||||
git switch -c newFeature # the name newFeature can be anything you want. This tutorial assumes you used newFeature.
|
||||
```
|
||||
|
||||
#### 4. Copy your target branch to your new branch
|
||||
This will change your new branch to match the latest version of your chosen target branch.
|
||||
```bash
|
||||
git reset --hard RHH/upcoming # If your PR is going to target master, replace upcoming with master.
|
||||
```
|
||||
|
||||
#### 5. Implement your code
|
||||
All of your work should go on this new, clean branch. If you already started work on a different branch, you can [cherry-pick](https://git-scm.com/docs/git-cherry-pick) you old commits onto this new branch, or just copy and paste the changes from the original files.
|
||||
|
||||
##### Popular Features / Feature Branches
|
||||
|
||||
If you are implementing functionality from a known community feature branch, it is **strongly** 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.
|
||||
|
||||
This changes on a case by case basis.
|
||||
|
||||
#### 6. Push your changes
|
||||
When you push your first commit, you'll need to push the new branch to the remote repo.
|
||||
```bash
|
||||
git push --set-upstream origin newFeature
|
||||
```
|
||||
|
||||
#### 7. Open Pull Request
|
||||
Once your work is complete and pushed to the branch on Github, you can open a [pull request from your branch](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork), targeting the branch you've chosen from `pokeemerald-expansion`. Please fill out the pull request description as completely as possible.
|
||||
|
||||
### What happens after I submit a pull request?
|
||||
|
||||
A maintainer will then assign themselves as a reviewer of your pull request, and may provide feedback in the form of a PR review.
|
||||
|
||||
Contributors are responsible for responding to and updating their branch by addressing the feedback in the review. Contributors are also responsible for making sure the branch passes the checklist at all times.
|
||||
|
||||
Once a maintainer has begun reviewing your PR, **please** do not force-push new changes - normal pushes are fine. Do not worry about git history - we squash most incoming changes.
|
||||
|
||||
Maintainers will measure the submitted pull request against a [merge checklist](docs/team_procedures/merge_checklist.md).
|
||||
|
||||
Once all items on the merge checklist are true, the branch will be merged in.
|
||||
|
||||
|
||||
## Maintainers
|
||||
|
||||
This list was last updated 2025 April 1.
|
||||
|
||||
| Name | Discord | Currently Active | Areas of Expertise |
|
||||
| --- | --- | --- | --- |
|
||||
| [Alex](https://github.com/AlexOn1ine) | rainonline | ✅ | Battle Engine, Battle AI
|
||||
| [Egg](https://github.com/DizzyEggg) | egg9255 | ✅ | Battle Engine, Battle AI
|
||||
| [ghoulslash](https://github.com/ghoulslash) | ghoulslash | ✅ | Dexnav, Overworld, Battle Engine
|
||||
| [Jasper](https://github.com/Bassoonian) | bassoonian | ✅ | Berries, Day / Night System, Followers, Feature Branches
|
||||
| [MGriffin](https://github.com/mrgriffin) | mgriffin | ✅ | Tests, Trainer Control
|
||||
| [psf](https://github.com/pkmnsnfrn) | pkmnsnfrn | ✅ | Rematches, Difficulty, Trainer Slides, Fake RTC, Fishing Minigames, Imperial / Metric, OW Item Balls, Sky Battles
|
||||
| [Hedara](https://github.com/hedara90) | hedara | ✅ | Compression, Sprites
|
||||
| [Pawkkie](https://github.com/Pawkkie) | pawkkie | ✅ | Battle AI
|
||||
| [SBird](https://github.com/SBird1337) | karathan | ✅ | Dynamic Multichoice, Damage Calculation, Animations, Trainer Control, Tests
|
||||
| [Agustin](https://github.com/AgustinGDLV) | agustingdlv | Inactive | Gimmicks, Battle Engine, Tests, Items
|
||||
| [tertu](https://github.com/tertu-m) | tertu | Inactive | Randomizer
|
||||
|
||||
## Attribution
|
||||
This guide is based on the [contributing.md](https://contributing.md/generator)!
|
||||
27
Makefile
|
|
@ -165,6 +165,21 @@ PATCHELF := $(TOOLS_DIR)/patchelf/patchelf$(EXE)
|
|||
ROMTEST ?= $(shell { command -v mgba-rom-test || command -v $(TOOLS_DIR)/mgba/mgba-rom-test$(EXE); } 2>/dev/null)
|
||||
ROMTESTHYDRA := $(TOOLS_DIR)/mgba-rom-test-hydra/mgba-rom-test-hydra$(EXE)
|
||||
|
||||
# Learnset helper is a Python script
|
||||
LEARNSET_HELPERS_DIR := $(TOOLS_DIR)/learnset_helpers
|
||||
LEARNSET_HELPERS_DATA_DIR := $(LEARNSET_HELPERS_DIR)/porymoves_files
|
||||
LEARNSET_HELPERS_BUILD_DIR := $(LEARNSET_HELPERS_DIR)/build
|
||||
ALL_LEARNABLES_JSON := $(LEARNSET_HELPERS_BUILD_DIR)/all_learnables.json
|
||||
|
||||
# wild_encounters.h is generated by a Python script
|
||||
WILD_ENCOUNTERS_TOOL_DIR := $(TOOLS_DIR)/wild_encounters
|
||||
AUTO_GEN_TARGETS += $(DATA_SRC_SUBDIR)/wild_encounters.h
|
||||
|
||||
$(DATA_SRC_SUBDIR)/wild_encounters.h: $(DATA_SRC_SUBDIR)/wild_encounters.json $(WILD_ENCOUNTERS_TOOL_DIR)/wild_encounters_to_header.py $(INCLUDE_DIRS)/config/overworld.h
|
||||
python3 $(WILD_ENCOUNTERS_TOOL_DIR)/wild_encounters_to_header.py > $@
|
||||
|
||||
$(C_BUILDDIR)/wild_encounter.o: c_dep += $(DATA_SRC_SUBDIR)/wild_encounters.h
|
||||
|
||||
PERL := perl
|
||||
SHA1 := $(shell { command -v sha1sum || command -v shasum; } 2>/dev/null) -c
|
||||
|
||||
|
|
@ -338,6 +353,7 @@ generated: $(AUTO_GEN_TARGETS)
|
|||
|
||||
clean-generated:
|
||||
-rm -f $(AUTO_GEN_TARGETS)
|
||||
-rm -f $(ALL_LEARNABLES_JSON)
|
||||
|
||||
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)
|
||||
|
|
@ -427,11 +443,16 @@ $(OBJ_DIR)/sym_common.ld: sym_common.txt $(C_OBJS) $(wildcard common_syms/*.txt)
|
|||
$(OBJ_DIR)/sym_ewram.ld: sym_ewram.txt
|
||||
$(RAMSCRGEN) ewram_data $< ENGLISH > $@
|
||||
|
||||
MOVES_JSON_DIR := $(TOOLS_DIR)/learnset_helpers/porymoves_files
|
||||
TEACHABLE_DEPS := $(shell find data/ -type f -name '*.inc') $(INCLUDE_DIRS)/constants/tms_hms.h $(C_SUBDIR)/pokemon.c $(wildcard $(MOVES_JSON_DIR)/*.json)
|
||||
TEACHABLE_DEPS := $(ALL_LEARNABLES_JSON) $(shell find data/ -type f -name '*.inc') $(INCLUDE_DIRS)/constants/tms_hms.h $(C_SUBDIR)/pokemon.c
|
||||
|
||||
$(LEARNSET_HELPERS_BUILD_DIR):
|
||||
@mkdir -p $@
|
||||
|
||||
$(ALL_LEARNABLES_JSON): $(wildcard $(LEARNSET_HELPERS_DATA_DIR)/*.json) | $(LEARNSET_HELPERS_BUILD_DIR)
|
||||
python3 $(LEARNSET_HELPERS_DIR)/make_learnables.py $(LEARNSET_HELPERS_DATA_DIR) $@
|
||||
|
||||
$(DATA_SRC_SUBDIR)/pokemon/teachable_learnsets.h: $(TEACHABLE_DEPS)
|
||||
python3 $(TOOLS_DIR)/learnset_helpers/teachable.py
|
||||
python3 $(LEARNSET_HELPERS_DIR)/make_teachables.py $<
|
||||
|
||||
# Linker script
|
||||
LD_SCRIPT := ld_script_modern.ld
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ The main advantage of using vanilla pokeemerald as a base is being able to link
|
|||
If you use pokeemerald-expansion in your hack, please add RHH (Rom Hacking Hideout) to your credits list. Optionally, you can list the version used, so it can help players know what features to expect.
|
||||
You can phrase it as the following:
|
||||
```
|
||||
Based off RHH's pokeemerald-expansion 1.10.2 https://github.com/rh-hideout/pokeemerald-expansion/
|
||||
Based off RHH's pokeemerald-expansion 1.11.1 https://github.com/rh-hideout/pokeemerald-expansion/
|
||||
```
|
||||
|
||||
#### Important: DO NOT use GitHub's "Download Zip" option. Using this option will not download the commit history required to update your expansion version or merge other feature branches. Instead, please read [this guide](https://github.com/Pawkkie/Team-Aquas-Asset-Repo/wiki/The-Basics-of-GitHub) to learn how to fork the repository and clone locally from there.
|
||||
|
|
@ -33,7 +33,7 @@ With this, you'll get the latest version of pokeemerald-expansion, plus a couple
|
|||
- You can check in the debug menu's `Utilities -> Expansion Version` option.
|
||||
- If the option is not available, you possibly have version 1.6.2 or older. In that case, please check the [changelogs](docs/CHANGELOG.md) to determine your version based on the features available on your repository.
|
||||
- ***Important:*** If you are several versions behind, we recommend updating one minor version at a time, skipping directly to the latest patch version (eg, 1.5.3 -> 1.6.2 -> 1.7.4 and so on. Check the [online documentation site](https://rh-hideout.github.io/pokeemerald-expansion/CHANGELOG.html) to see the latest versions of each step.)
|
||||
- Once you have your remote set up, run the command `git pull RHH expansion/X.Y.Z`, replacing X, Y and Z with the digits of the respective version you want to update to (eg, to update to 1.9.3, use `git pull RHH expansion/1.9.3`).
|
||||
- Once you have your remote set up, run the command `git pull RHH expansion/X.Y.Z`, replacing X, Y and Z with the digits of the respective version you want to update to (eg, to update to 1.11.1, use `git pull RHH expansion/1.11.1`).
|
||||
- ***Important:*** If you are several versions behind, we recommend updating one minor version at a time, skipping directly to the latest patch version (eg, 1.5.3 -> 1.6.2 -> 1.7.4 and so on)
|
||||
- Alternatively, you can update to unreleased versions of the expansion.
|
||||
- ***master (stable):*** It contains unreleased **bugfixes** that will come in the next patch version. To merge, use `git pull RHH master`.
|
||||
|
|
@ -67,7 +67,7 @@ Also, *please follow the Pull Request template and feel free to discuss how the
|
|||
- 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/))
|
||||
- Custom Contest data up to SwSh, newer moves are WIP. ([source](https://web.archive.org/web/20240910012333/https://pokemonurpg.com/info/contests/rse-move-list/))
|
||||
- Battle gimmick support:
|
||||
- Mega Evolution
|
||||
- Primal Reversion
|
||||
|
|
|
|||
|
|
@ -1269,7 +1269,7 @@
|
|||
.byte 0xed
|
||||
.endm
|
||||
|
||||
.macro removelightscreenreflect
|
||||
.macro removescreens
|
||||
.byte 0xee
|
||||
.endm
|
||||
|
||||
|
|
@ -1614,6 +1614,11 @@
|
|||
.4byte \ptr
|
||||
.endm
|
||||
|
||||
.macro undodynamax battler:req
|
||||
callnative BS_UndoDynamax
|
||||
.byte \battler
|
||||
.endm
|
||||
|
||||
.macro trytrainerslidezmovemsg
|
||||
callnative BS_TryTrainerSlideZMoveMsg
|
||||
.endm
|
||||
|
|
@ -1641,10 +1646,6 @@
|
|||
callnative BS_TryTriggerStatusForm
|
||||
.endm
|
||||
|
||||
.macro setdynamicmovecategory
|
||||
callnative BS_SetDynamicMoveCategory
|
||||
.endm
|
||||
|
||||
.macro tryupperhand failInstr:req
|
||||
callnative BS_TryUpperHand
|
||||
.4byte \failInstr
|
||||
|
|
@ -1817,6 +1818,12 @@
|
|||
.4byte \failInstr
|
||||
.endm
|
||||
|
||||
.macro jumpifcangigantamax battler:req, jumpInstr:req
|
||||
callnative BS_JumpIfCanGigantamax
|
||||
.byte \battler
|
||||
.4byte \jumpInstr
|
||||
.endm
|
||||
|
||||
@ various command changed to more readable macros
|
||||
.macro cancelmultiturnmoves battler:req
|
||||
various \battler, VARIOUS_CANCEL_MULTI_TURN_MOVES
|
||||
|
|
@ -1942,14 +1949,6 @@
|
|||
various \battler, VARIOUS_RESTORE_PP
|
||||
.endm
|
||||
|
||||
.macro tryactivatemoxie battler:req
|
||||
various \battler, VARIOUS_TRY_ACTIVATE_MOXIE
|
||||
.endm
|
||||
|
||||
.macro tryactivatebeastboost battler:req
|
||||
various \battler, VARIOUS_TRY_ACTIVATE_BEAST_BOOST
|
||||
.endm
|
||||
|
||||
.macro tryactivatereceiver battler:req
|
||||
various \battler, VARIOUS_TRY_ACTIVATE_RECEIVER
|
||||
.endm
|
||||
|
|
@ -2233,10 +2232,6 @@
|
|||
.4byte \jumpInstr
|
||||
.endm
|
||||
|
||||
.macro tryactivategrimneigh, battler:req
|
||||
various \battler, VARIOUS_TRY_ACTIVATE_GRIM_NEIGH
|
||||
.endm
|
||||
|
||||
.macro consumeberry battler:req, fromBattler:req
|
||||
various \battler, VARIOUS_CONSUME_BERRY
|
||||
.byte \fromBattler
|
||||
|
|
@ -2297,10 +2292,6 @@
|
|||
.4byte \jumpInstr
|
||||
.endm
|
||||
|
||||
.macro tryactivatebattlebond battler:req
|
||||
various \battler, VARIOUS_TRY_ACTIVATE_BATTLE_BOND
|
||||
.endm
|
||||
|
||||
.macro jumpifcantreverttoprimal jumpInstr:req
|
||||
various BS_ATTACKER, VARIOUS_JUMP_IF_CANT_REVERT_TO_PRIMAL
|
||||
.4byte \jumpInstr
|
||||
|
|
@ -2377,6 +2368,10 @@
|
|||
.byte \stat
|
||||
.endm
|
||||
|
||||
.macro restoresavedmove
|
||||
callnative BS_RestoreSavedMove
|
||||
.endm
|
||||
|
||||
@ helpful macros
|
||||
.macro setstatchanger stat:req, stages:req, down:req
|
||||
setbyte sSTATCHANGER, \stat | \stages << 3 | \down << 7
|
||||
|
|
|
|||
|
|
@ -164,6 +164,10 @@
|
|||
create_movement_action fly_down, MOVEMENT_ACTION_FLY_DOWN
|
||||
create_movement_action emote_double_exclamation_mark, MOVEMENT_ACTION_EMOTE_DOUBLE_EXCL_MARK
|
||||
create_movement_action emote_x, MOVEMENT_ACTION_EMOTE_X
|
||||
create_movement_action walk_slow_stairs_down, MOVEMENT_ACTION_WALK_SLOW_STAIRS_DOWN
|
||||
create_movement_action walk_slow_stairs_up, MOVEMENT_ACTION_WALK_SLOW_STAIRS_UP
|
||||
create_movement_action walk_slow_stairs_left, MOVEMENT_ACTION_WALK_SLOW_STAIRS_LEFT
|
||||
create_movement_action walk_slow_stairs_right, MOVEMENT_ACTION_WALK_SLOW_STAIRS_RIGHT
|
||||
|
||||
create_movement_action exit_pokeball, MOVEMENT_ACTION_EXIT_POKEBALL
|
||||
create_movement_action enter_pokeball, MOVEMENT_ACTION_ENTER_POKEBALL
|
||||
|
|
|
|||
|
|
@ -6,12 +6,15 @@ MID_ASM_DIR := $(MID_SUBDIR)
|
|||
CRY_BIN_DIR := $(CRY_SUBDIR)
|
||||
SOUND_BIN_DIR := sound
|
||||
|
||||
# Needs to recompile for B_NUM_LOW_HEALTH_BEEPS in battle.h
|
||||
EXPANSION_BATTLE_CONFIG := include/config/battle.h
|
||||
|
||||
SPECIAL_OUTDIRS := $(MID_ASM_DIR) $(CRY_BIN_DIR)
|
||||
SPECIAL_OUTDIRS += $(SOUND_BIN_DIR) $(SOUND_BIN_DIR)/direct_sound_samples/phonemes $(SOUND_BIN_DIR)/direct_sound_samples/cries
|
||||
$(shell mkdir -p $(SPECIAL_OUTDIRS) )
|
||||
|
||||
# Assembly song compilation
|
||||
$(SONG_BUILDDIR)/%.o: $(SONG_SUBDIR)/%.s
|
||||
$(SONG_BUILDDIR)/%.o: $(SONG_SUBDIR)/%.s $(EXPANSION_BATTLE_CONFIG)
|
||||
$(AS) $(ASFLAGS) -I sound -o $@ $<
|
||||
$(MID_BUILDDIR)/%.o: $(MID_ASM_DIR)/%.s
|
||||
$(AS) $(ASFLAGS) -I sound -o $@ $<
|
||||
|
|
@ -34,7 +37,7 @@ MID_CFG_PATH := $(MID_SUBDIR)/midi.cfg
|
|||
|
||||
# $1: Source path no extension, $2 Options
|
||||
define MID_RULE
|
||||
$(MID_ASM_DIR)/$1.s: $(MID_SUBDIR)/$1.mid $(MID_CFG_PATH)
|
||||
$(MID_ASM_DIR)/$1.s: $(MID_SUBDIR)/$1.mid $(MID_CFG_PATH) $(EXPANSION_BATTLE_CONFIG)
|
||||
$(MID) $$< $$@ $2
|
||||
endef
|
||||
# source path, remaining text (options)
|
||||
|
|
|
|||
|
|
@ -424,6 +424,8 @@ B_TRAINER1_NAME_WITH_CLASS = FD 42
|
|||
B_TRAINER2_NAME_WITH_CLASS = FD 43
|
||||
B_PARTNER_NAME_WITH_CLASS = FD 44
|
||||
B_ATK_TRAINER_NAME_WITH_CLASS = FD 45
|
||||
B_SCR_TEAM1 = FD 46
|
||||
B_SCR_TEAM2 = FD 47
|
||||
|
||||
@ indicates the end of a town/city name (before " TOWN" or " CITY")
|
||||
NAME_END = FC 00
|
||||
|
|
|
|||
|
|
@ -1880,7 +1880,7 @@ gBattleAnimMove_Avalanche::
|
|||
loadspritegfx ANIM_TAG_ICE_CHUNK
|
||||
monbg ANIM_DEF_PARTNER
|
||||
createsprite gShakeMonOrTerrainSpriteTemplate, ANIM_TARGET, 2, 7, 1, 11, 1
|
||||
createsprite gAvalancheSpriteTemplate, ANIM_TARGET, 130, 4, -5, 1, -5, 1
|
||||
createsprite gAvalancheSpriteTemplate, ANIM_TARGET, 130, -5, 1, -5, 1
|
||||
playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET
|
||||
delay 2
|
||||
createsprite gAvalancheSpriteTemplate, ANIM_TARGET, 130, 5, 0, 6, 1
|
||||
|
|
@ -5623,7 +5623,6 @@ gBattleAnimMove_Bulldoze::
|
|||
gBattleAnimMove_FrostBreath::
|
||||
loadspritegfx ANIM_TAG_ICE_CHUNK
|
||||
loadspritegfx ANIM_TAG_SMALL_EMBER
|
||||
loadspritegfx ANIM_TAG_FIRE_PLUME
|
||||
fadetobg BG_ICE
|
||||
waitbgfadeout
|
||||
createvisualtask AnimTask_StartSlidingBg, 0x5, 0x300, 0x0, 0x0, 0xffff
|
||||
|
|
@ -5635,6 +5634,8 @@ gBattleAnimMove_FrostBreath::
|
|||
waitforvisualfinish
|
||||
createsprite gFrostBreathBlueBreathTemplate, ANIM_TARGET, 2, 0x1e, 0xf, 0x0, 0xa, 0xa
|
||||
waitforvisualfinish
|
||||
unloadspritegfx ANIM_TAG_SMALL_EMBER
|
||||
loadspritegfx ANIM_TAG_FIRE_PLUME
|
||||
loopsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET, 0xb, 0x3
|
||||
createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 3, 25, 1
|
||||
createsprite gFrostBreathBlueRageTemplate, ANIM_TARGET, 66, 0x1, 0x5, 0x0
|
||||
|
|
@ -7718,7 +7719,6 @@ gBattleAnimMove_ParabolicCharge::
|
|||
loadspritegfx ANIM_TAG_SPARK
|
||||
loadspritegfx ANIM_TAG_LIGHTNING
|
||||
loadspritegfx ANIM_TAG_ORBS
|
||||
loadspritegfx ANIM_TAG_BLUE_STAR
|
||||
monbg ANIM_ATTACKER
|
||||
setalpha 12, 8
|
||||
createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 6, RGB(18, 16, 3)
|
||||
|
|
@ -7741,6 +7741,11 @@ gBattleAnimMove_ParabolicCharge::
|
|||
createvisualtask AnimTask_BlendBattleAnimPal, 5, 4, 0, 0, 0, RGB_BLACK
|
||||
ParabolicChargeHeal:
|
||||
waitforvisualfinish
|
||||
unloadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT
|
||||
unloadspritegfx ANIM_TAG_ELECTRIC_ORBS
|
||||
unloadspritegfx ANIM_TAG_SPARK
|
||||
unloadspritegfx ANIM_TAG_LIGHTNING
|
||||
loadspritegfx ANIM_TAG_BLUE_STAR
|
||||
clearmonbg ANIM_ATTACKER
|
||||
waitforvisualfinish
|
||||
call HealingEffect
|
||||
|
|
@ -12314,14 +12319,13 @@ ZingZapSparks2:
|
|||
return
|
||||
|
||||
gBattleAnimMove_NaturesMadness::
|
||||
loadspritegfx ANIM_TAG_ICE_CRYSTALS @small circles
|
||||
loadspritegfx ANIM_TAG_THIN_RING @ring
|
||||
loadspritegfx ANIM_TAG_SPARKLE_2 @stars
|
||||
loadspritegfx ANIM_TAG_PINK_PETAL @pink
|
||||
loadspritegfx ANIM_TAG_ICE_CHUNK @blue green
|
||||
loadspritegfx ANIM_TAG_ICE_CRYSTALS @small circles CrystalsTemplate
|
||||
loadspritegfx ANIM_TAG_THIN_RING @ring PinkRingTemplate, GrayRingTemplate
|
||||
loadspritegfx ANIM_TAG_SPARKLE_2 @stars PinkStarsTemplate
|
||||
loadspritegfx ANIM_TAG_PINK_PETAL @pink PinkRingTemplate, PinkStarsTemplate
|
||||
loadspritegfx ANIM_TAG_ICE_CHUNK @blue green CrystalsTemplate
|
||||
loadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT @charge
|
||||
loadspritegfx ANIM_TAG_TEAL_ALERT @charge particles
|
||||
loadspritegfx ANIM_TAG_ECLIPSING_ORB @blue green
|
||||
monbg ANIM_ATTACKER
|
||||
setalpha 14, 8
|
||||
delay 0x1
|
||||
|
|
@ -12357,6 +12361,8 @@ gBattleAnimMove_NaturesMadness::
|
|||
delay 0x1
|
||||
monbg ANIM_TARGET
|
||||
waitforvisualfinish
|
||||
unloadspritegfx ANIM_TAG_SPARKLE_2
|
||||
loadspritegfx ANIM_TAG_ECLIPSING_ORB @blue green grayRing
|
||||
createsprite gNaturesMadnessGrayRingTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, 0x1, 0x0
|
||||
playsewithpan SE_M_HEAL_BELL, SOUND_PAN_ATTACKER
|
||||
delay 0xe
|
||||
|
|
@ -13140,7 +13146,6 @@ gBattleAnimMove_StuffCheeks::
|
|||
loadspritegfx ANIM_TAG_BERRY_NORMAL
|
||||
loadspritegfx ANIM_TAG_SHARP_TEETH
|
||||
loadspritegfx ANIM_TAG_THIN_RING
|
||||
loadspritegfx ANIM_TAG_SPARKLE_2
|
||||
playsewithpan SE_M_METRONOME, 0xc0
|
||||
createsprite gFloatingBerryTemplate, ANIM_ATTACKER, 1, 0x0
|
||||
delay 0x45
|
||||
|
|
@ -16757,6 +16762,7 @@ gBattleAnimMove_JetPunch::
|
|||
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 0, 9, RGB_BLUE
|
||||
delay 8
|
||||
createvisualtask AnimTask_ExtremeSpeedMonReappear, 2
|
||||
setarg 0x7, 0x1000
|
||||
createsprite gSmallBubblePairSpriteTemplate, ANIM_TARGET, 2, 0x14, 0xffec, 0x14, ANIM_TARGET
|
||||
createsprite gSmallBubblePairSpriteTemplate, ANIM_TARGET, 2, 0xa, 0xa, 0x14, ANIM_TARGET
|
||||
createsprite gFistFootSpriteTemplate, ANIM_TARGET, 3, 0, 0, 8, 1, 0
|
||||
|
|
@ -29685,13 +29691,13 @@ gBattleAnimMove_ContinentalCrush::
|
|||
jumpargeq 0x0 0x0 ContinentalCrushDay
|
||||
jumpargeq 0x0 0x2 ContinentalCrushAfternoon
|
||||
ContinentalCrushNight:
|
||||
fadetobg BG_BLUE_SKY_NIGHT
|
||||
fadetobg BG_ROCK_FIELD_NIGHT
|
||||
goto FinishContinentalCrush
|
||||
ContinentalCrushDay:
|
||||
fadetobg BG_BLUE_SKY_DAY
|
||||
fadetobg BG_ROCK_FIELD_DAY
|
||||
goto FinishContinentalCrush
|
||||
ContinentalCrushAfternoon:
|
||||
fadetobg BG_BLUE_SKY_AFTERNOON
|
||||
fadetobg BG_ROCK_FIELD_AFTERNOON
|
||||
FinishContinentalCrush:
|
||||
delay 0x18
|
||||
invisible ANIM_TARGET
|
||||
|
|
@ -31714,13 +31720,13 @@ gBattleAnimMove_Catastropika::
|
|||
jumpargeq 0x0 0x0 CatastropikaDaytime
|
||||
jumpargeq 0x0 0x2 CatastropikaAfternoon
|
||||
CatastropikaNight:
|
||||
fadetobg BG_BLUE_SKY_NIGHT
|
||||
fadetobg BG_MAX_LIGHTNING
|
||||
goto CatastropikaFinish
|
||||
CatastropikaDaytime:
|
||||
fadetobg BG_BLUE_SKY_DAY
|
||||
fadetobg BG_MAX_LIGHTNING
|
||||
goto CatastropikaFinish
|
||||
CatastropikaAfternoon:
|
||||
fadetobg BG_BLUE_SKY_AFTERNOON
|
||||
fadetobg BG_MAX_LIGHTNING
|
||||
CatastropikaFinish:
|
||||
waitbgfadeout
|
||||
visible ANIM_ATTACKER
|
||||
|
|
@ -32156,12 +32162,12 @@ gBattleAnimMove_StokedSparksurfer::
|
|||
jumpargeq 0x0 0x0 StokedSparksurferDay
|
||||
jumpargeq 0x0 0x2 StokedSparksurferAfternoon
|
||||
StokedSparksurferNight:
|
||||
fadetobg BG_BLUE_SKY_NIGHT
|
||||
fadetobg BG_MAX_LIGHTNING
|
||||
goto StokedSparksurferFinish
|
||||
StokedSparksurferAfternoon:
|
||||
fadetobg BG_BLUE_SKY_AFTERNOON
|
||||
fadetobg BG_MAX_LIGHTNING
|
||||
StokedSparksurferDay:
|
||||
fadetobg BG_BLUE_SKY_DAY
|
||||
fadetobg BG_MAX_LIGHTNING
|
||||
StokedSparksurferFinish:
|
||||
waitbgfadeout
|
||||
visible ANIM_ATTACKER
|
||||
|
|
@ -33317,20 +33323,24 @@ OceanicOperettaExplosion:
|
|||
|
||||
|
||||
gBattleAnimMove_SplinteredStormshards::
|
||||
createvisualtask AnimTask_GetLycanrocForm, 0x2
|
||||
jumpargeq 0x0 0x0 SplinteredStormshardsDayForme
|
||||
jumpargeq 0x0 0x2 SplinteredStormshardsDuskForme
|
||||
SplinteredStormshardsNightForme:
|
||||
fadetobg BG_ROCK_FIELD_NIGHT
|
||||
goto SplinteredStormshardsFinishFade
|
||||
SplinteredStormshardsDayForme:
|
||||
fadetobg BG_ROCK_FIELD_DAY
|
||||
goto SplinteredStormshardsFinishFade
|
||||
SplinteredStormshardsDuskForme:
|
||||
fadetobg BG_ROCK_FIELD_AFTERNOON
|
||||
SplinteredStormshardsFinishFade:
|
||||
waitbgfadeout
|
||||
waitforvisualfinish
|
||||
loadspritegfx ANIM_TAG_ROCKS @rock
|
||||
loadspritegfx ANIM_TAG_ICICLE_SPEAR @spear
|
||||
createvisualtask AnimTask_AllBattlersInvisibleExceptAttackerAndTarget, 0xA
|
||||
waitforvisualfinish
|
||||
createvisualtask AnimTask_GetLycanrocForm, 0x2
|
||||
jumpargeq 0x0 0x1 SplinteredStormshardsNightForme
|
||||
SplinteredStormshardsDayForme:
|
||||
createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x0, 0xc, 0x5bff
|
||||
goto SplinteredStormshardsFinishFade
|
||||
SplinteredStormshardsNightForme:
|
||||
createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x0, 0xc, 0x0000
|
||||
SplinteredStormshardsFinishFade:
|
||||
waitforvisualfinish
|
||||
setalpha 12, 8
|
||||
playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER
|
||||
createvisualtask AnimTask_IsTargetPlayerSide, 0x2
|
||||
jumpargeq 0x7 ANIM_TARGET SplinteredStormshardsByOpponent
|
||||
|
|
@ -33339,7 +33349,6 @@ SplinteredStormshardsByPlayer:
|
|||
call SplinteredStormshardsPlayer_Rising1
|
||||
delay 0x2
|
||||
loadspritegfx ANIM_TAG_ROUND_SHADOW @fly
|
||||
invisible ANIM_TARGET
|
||||
playsewithpan SE_M_FLY, SOUND_PAN_ATTACKER
|
||||
createsprite gSplinteredShardsFlySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0xd, 0x150
|
||||
call SplinteredStormshardsPlayer_Rising1
|
||||
|
|
@ -33354,8 +33363,6 @@ SplinteredStormshardsByPlayer:
|
|||
call SplinteredStormshardsPlayer_Rising1
|
||||
delay 16
|
||||
waitforvisualfinish
|
||||
visible ANIM_TARGET
|
||||
call SplinteredStormshardsFixBackgroundFade
|
||||
waitforvisualfinish
|
||||
loadspritegfx ANIM_TAG_METEOR @superpower
|
||||
loadspritegfx ANIM_TAG_EXPLOSION @explosion
|
||||
|
|
@ -33383,6 +33390,8 @@ SplinteredStormshardsEnd:
|
|||
waitforvisualfinish
|
||||
createvisualtask AnimTask_AllBattlersVisible, 0xA
|
||||
waitforvisualfinish
|
||||
restorebg
|
||||
waitbgfadein
|
||||
waitforvisualfinish
|
||||
end
|
||||
SplinteredStormshardsExplosionOpponent:
|
||||
|
|
@ -33422,7 +33431,6 @@ SplinteredStormshardsByOpponent:
|
|||
call SplinteredStormshardsOpponent_Rising1
|
||||
delay 0x2
|
||||
loadspritegfx ANIM_TAG_ROUND_SHADOW @fly
|
||||
invisible ANIM_TARGET
|
||||
createsprite gSplinteredShardsFlySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0xd, 0x150
|
||||
call SplinteredStormshardsOpponent_Rising1
|
||||
call SplinteredStormshardsOpponent_Rising2
|
||||
|
|
@ -33436,10 +33444,6 @@ SplinteredStormshardsByOpponent:
|
|||
call SplinteredStormshardsOpponent_Rising1
|
||||
delay 16
|
||||
waitforvisualfinish
|
||||
visible ANIM_TARGET
|
||||
call SplinteredStormshardsFixBackgroundFade
|
||||
waitforvisualfinish
|
||||
visible ANIM_TARGET
|
||||
loadspritegfx ANIM_TAG_METEOR @superpower
|
||||
loadspritegfx ANIM_TAG_EXPLOSION @explosion
|
||||
playsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER
|
||||
|
|
@ -33563,16 +33567,6 @@ SplinteredStormshardsOpponent_Rising2:
|
|||
createsprite gSplinteredShardsRisingSpearSpriteTemplate, ANIM_ATTACKER, 50, 0xdc, 0x40, 0xdc, 0x0, 0x30
|
||||
delay 0x2
|
||||
return
|
||||
SplinteredStormshardsFixBackgroundFade:
|
||||
createvisualtask AnimTask_GetLycanrocForm, 0x2
|
||||
jumpargeq 0x0 0x1 SplinteredStormshardsNightFormeReturn
|
||||
SplinteredStormshardsDayFormeReturn:
|
||||
createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0xc, 0x0, 0x5bff
|
||||
goto SplinteredStormshardsFinishFadeReturn
|
||||
SplinteredStormshardsNightFormeReturn:
|
||||
createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0xc, 0x0, 0x0000
|
||||
SplinteredStormshardsFinishFadeReturn:
|
||||
return
|
||||
|
||||
|
||||
gBattleAnimMove_LetsSnuggleForever::
|
||||
|
|
|
|||
|
|
@ -272,7 +272,11 @@ BattleScript_EffectChillyReception::
|
|||
jumpifhalfword CMP_COMMON_BITS, gBattleWeather, B_WEATHER_RAIN_PRIMAL, BattleScript_EffectChillyReceptionBlockedByPrimalRain
|
||||
jumpifhalfword CMP_COMMON_BITS, gBattleWeather, B_WEATHER_STRONG_WINDS, BattleScript_EffectChillyReceptionBlockedByStrongWinds
|
||||
call BattleScript_EffectChillyReceptionPlayAnimation
|
||||
#if B_PREFERRED_ICE_WEATHER == B_ICE_WEATHER_HAIL
|
||||
setfieldweather BATTLE_WEATHER_HAIL
|
||||
#else
|
||||
setfieldweather BATTLE_WEATHER_SNOW
|
||||
#endif
|
||||
call BattleScript_MoveWeatherChangeRet
|
||||
goto BattleScript_MoveSwitch
|
||||
BattleScript_EffectChillyReceptionPlayAnimation:
|
||||
|
|
@ -836,10 +840,6 @@ BattleScript_FlingMissed:
|
|||
ppreduce
|
||||
goto BattleScript_MoveMissedPause
|
||||
|
||||
BattleScript_EffectDynamicCategory::
|
||||
setdynamicmovecategory
|
||||
goto BattleScript_EffectHit
|
||||
|
||||
BattleScript_EffectAuraWheel:: @ Aura Wheel can only be used by Morpeko
|
||||
jumpifspecies BS_ATTACKER, SPECIES_MORPEKO_FULL_BELLY, BattleScript_EffectHit
|
||||
jumpifspecies BS_ATTACKER, SPECIES_MORPEKO_HANGRY, BattleScript_EffectHit
|
||||
|
|
@ -1034,6 +1034,7 @@ BattleScript_EffectCoaching::
|
|||
setallytonexttarget EffectCoaching_CheckAllyStats
|
||||
goto BattleScript_ButItFailed
|
||||
EffectCoaching_CheckAllyStats:
|
||||
accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON
|
||||
jumpifstat BS_TARGET, CMP_NOT_EQUAL, STAT_ATK, MAX_STAT_STAGE, BattleScript_CoachingWorks
|
||||
jumpifstat BS_TARGET, CMP_NOT_EQUAL, STAT_DEF, MAX_STAT_STAGE, BattleScript_CoachingWorks
|
||||
goto BattleScript_ButItFailed @ ally at max atk, def
|
||||
|
|
@ -3428,51 +3429,15 @@ BattleScript_EffectSuperFang::
|
|||
damagetohalftargethp
|
||||
goto BattleScript_HitFromAtkAnimation
|
||||
|
||||
BattleScript_EffectRecoilIfMiss::
|
||||
attackcanceler
|
||||
accuracycheck BattleScript_MoveMissedDoDamage, ACC_CURR_MOVE
|
||||
.if B_CRASH_IF_TARGET_IMMUNE >= GEN_4
|
||||
typecalc
|
||||
jumpifmoveresultflags MOVE_RESULT_DOESNT_AFFECT_FOE, BattleScript_MoveMissedDoDamage
|
||||
.endif
|
||||
goto BattleScript_HitFromAtkString
|
||||
BattleScript_MoveMissedDoDamage::
|
||||
jumpifability BS_ATTACKER, ABILITY_MAGIC_GUARD, BattleScript_PrintMoveMissed
|
||||
attackstring
|
||||
ppreduce
|
||||
pause B_WAIT_TIME_LONG
|
||||
resultmessage
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
.if B_CRASH_IF_TARGET_IMMUNE < GEN_4
|
||||
jumpifmoveresultflags MOVE_RESULT_DOESNT_AFFECT_FOE, BattleScript_MoveEnd
|
||||
.endif
|
||||
moveendcase MOVEEND_PROTECT_LIKE_EFFECT @ Spiky Shield's damage happens before recoil.
|
||||
jumpifhasnohp BS_ATTACKER, BattleScript_MoveEnd
|
||||
BattleScript_RecoilIfMiss::
|
||||
printstring STRINGID_PKMNCRASHED
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
damagecalc
|
||||
typecalc
|
||||
adjustdamage
|
||||
.if B_CRASH_IF_TARGET_IMMUNE == GEN_4
|
||||
manipulatedamage DMG_RECOIL_FROM_IMMUNE
|
||||
.else
|
||||
manipulatedamage DMG_RECOIL_FROM_MISS
|
||||
.endif
|
||||
.if B_CRASH_IF_TARGET_IMMUNE >= GEN_4
|
||||
clearmoveresultflags MOVE_RESULT_MISSED | MOVE_RESULT_DOESNT_AFFECT_FOE
|
||||
.else
|
||||
clearmoveresultflags MOVE_RESULT_MISSED
|
||||
.endif
|
||||
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_IGNORE_DISGUISE
|
||||
jumpifability BS_ATTACKER, ABILITY_MAGIC_GUARD, BattleScript_RecoilEnd
|
||||
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE | HITMARKER_IGNORE_DISGUISE
|
||||
healthbarupdate BS_ATTACKER
|
||||
datahpupdate BS_ATTACKER
|
||||
tryfaintmon BS_ATTACKER
|
||||
.if B_CRASH_IF_TARGET_IMMUNE >= GEN_4
|
||||
setmoveresultflags MOVE_RESULT_MISSED | MOVE_RESULT_DOESNT_AFFECT_FOE
|
||||
.else
|
||||
setmoveresultflags MOVE_RESULT_MISSED
|
||||
.endif
|
||||
goto BattleScript_MoveEnd
|
||||
return
|
||||
|
||||
BattleScript_EffectMist::
|
||||
attackcanceler
|
||||
|
|
@ -3776,6 +3741,7 @@ BattleScript_TwoTurnMovesSecondTurn::
|
|||
|
||||
BattleScript_TwoTurnMovesSecondTurnRet:
|
||||
setbyte sB_ANIM_TURN, 1
|
||||
setbyte sB_ANIM_TARGETS_HIT, 0
|
||||
clearstatusfromeffect BS_ATTACKER, MOVE_EFFECT_CHARGING
|
||||
clearsemiinvulnerablebit @ only for moves with EFFECT_SEMI_INVULNERABLE/EFFECT_SKY_DROP
|
||||
return
|
||||
|
|
@ -3870,7 +3836,7 @@ BattleScript_EffectHoldHands::
|
|||
attackcanceler
|
||||
attackstring
|
||||
ppreduce
|
||||
jumpifsideaffecting BS_TARGET, SIDE_STATUS_CRAFTY_SHIELD, BattleScript_ButItFailed
|
||||
accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON
|
||||
jumpifbyteequal gBattlerTarget, gBattlerAttacker, BattleScript_ButItFailed
|
||||
attackanimation
|
||||
waitanimation
|
||||
|
|
@ -5106,7 +5072,7 @@ BattleScript_EffectBrickBreak::
|
|||
attackstring
|
||||
ppreduce
|
||||
typecalc
|
||||
removelightscreenreflect
|
||||
removescreens
|
||||
critcalc
|
||||
damagecalc
|
||||
adjustdamage
|
||||
|
|
@ -5448,10 +5414,6 @@ BattleScript_FaintTarget::
|
|||
tryactivatefellstinger BS_ATTACKER
|
||||
tryactivatesoulheart
|
||||
tryactivatereceiver BS_TARGET
|
||||
tryactivatemoxie BS_ATTACKER @ and chilling neigh, as one ice rider
|
||||
tryactivatebeastboost BS_ATTACKER
|
||||
tryactivategrimneigh BS_ATTACKER @ and as one shadow rider
|
||||
tryactivatebattlebond BS_ATTACKER
|
||||
trytrainerslidefirstdownmsg BS_TARGET
|
||||
return
|
||||
|
||||
|
|
@ -5762,7 +5724,7 @@ BattleScript_ActionSwitch::
|
|||
|
||||
BattleScript_DoSwitchOut::
|
||||
switchoutabilities BS_ATTACKER
|
||||
updatedynamax
|
||||
undodynamax BS_ATTACKER
|
||||
waitstate
|
||||
returnatktoball
|
||||
waitstate
|
||||
|
|
@ -6043,6 +6005,8 @@ BattleScript_RoarSuccessSwitch::
|
|||
BattleScript_RoarSuccessSwitch_Ret:
|
||||
swapattackerwithtarget @ continuation of RedCardActivates
|
||||
restoretarget
|
||||
restoreattacker
|
||||
restoresavedmove
|
||||
setbyte sSWITCH_CASE, B_SWITCH_NORMAL
|
||||
return
|
||||
|
||||
|
|
@ -7107,7 +7071,7 @@ BattleScript_AnticipationActivates::
|
|||
|
||||
BattleScript_AftermathDmg::
|
||||
pause B_WAIT_TIME_SHORT
|
||||
call BattleScript_AbilityPopUp
|
||||
call BattleScript_AbilityPopUpScripting
|
||||
jumpifability BS_ATTACKER, ABILITY_MAGIC_GUARD, BattleScript_AftermathDmgRet
|
||||
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE
|
||||
healthbarupdate BS_ATTACKER
|
||||
|
|
@ -7589,35 +7553,37 @@ BattleScript_MoodyEnd:
|
|||
end3
|
||||
|
||||
BattleScript_EmergencyExit::
|
||||
.if B_ABILITY_POP_UP == TRUE
|
||||
pause 5
|
||||
call BattleScript_AbilityPopUp
|
||||
call BattleScript_AbilityPopUpScripting
|
||||
pause B_WAIT_TIME_LONG
|
||||
BattleScript_EmergencyExitNoPopUp::
|
||||
playanimation BS_TARGET, B_ANIM_SLIDE_OFFSCREEN
|
||||
.endif
|
||||
playanimation BS_SCRIPTING, B_ANIM_SLIDE_OFFSCREEN
|
||||
waitanimation
|
||||
openpartyscreen BS_TARGET, BattleScript_EmergencyExitRet
|
||||
switchoutabilities BS_TARGET
|
||||
openpartyscreen BS_SCRIPTING, BattleScript_EmergencyExitRet
|
||||
switchoutabilities BS_SCRIPTING
|
||||
waitstate
|
||||
switchhandleorder BS_TARGET, 2
|
||||
switchhandleorder BS_SCRIPTING, 2
|
||||
returntoball BS_TARGET, FALSE
|
||||
getswitchedmondata BS_TARGET
|
||||
switchindataupdate BS_TARGET
|
||||
hpthresholds BS_TARGET
|
||||
getswitchedmondata BS_SCRIPTING
|
||||
switchindataupdate BS_SCRIPTING
|
||||
hpthresholds BS_SCRIPTING
|
||||
printstring STRINGID_SWITCHINMON
|
||||
switchinanim BS_TARGET, FALSE, TRUE
|
||||
switchinanim BS_SCRIPTING, FALSE, TRUE
|
||||
waitstate
|
||||
switchineffects BS_TARGET
|
||||
switchineffects BS_SCRIPTING
|
||||
BattleScript_EmergencyExitRet:
|
||||
return
|
||||
|
||||
BattleScript_EmergencyExitWild::
|
||||
.if B_ABILITY_POP_UP == TRUE
|
||||
pause 5
|
||||
call BattleScript_AbilityPopUp
|
||||
call BattleScript_AbilityPopUpScripting
|
||||
pause B_WAIT_TIME_LONG
|
||||
BattleScript_EmergencyExitWildNoPopUp::
|
||||
playanimation BS_TARGET, B_ANIM_SLIDE_OFFSCREEN
|
||||
.endif
|
||||
playanimation BS_SCRIPTING, B_ANIM_SLIDE_OFFSCREEN
|
||||
waitanimation
|
||||
setoutcomeonteleport BS_TARGET
|
||||
setoutcomeonteleport BS_SCRIPTING
|
||||
finishaction
|
||||
return
|
||||
|
||||
|
|
@ -7719,13 +7685,15 @@ BattleScript_ShedSkinActivates::
|
|||
end3
|
||||
|
||||
BattleScript_ActivateWeatherAbilities:
|
||||
saveattacker
|
||||
savetarget
|
||||
setbyte gBattlerTarget, 0
|
||||
setbyte gBattlerAttacker, 0
|
||||
BattleScript_ActivateWeatherAbilities_Loop:
|
||||
copybyte sBATTLER, gBattlerTarget
|
||||
copyarraywithindex gBattlerTarget, gBattlerByTurnOrder, gBattlerAttacker, 1
|
||||
activateweatherchangeabilities BS_TARGET
|
||||
addbyte gBattlerTarget, 1
|
||||
jumpifbytenotequal gBattlerTarget, gBattlersCount, BattleScript_ActivateWeatherAbilities_Loop
|
||||
addbyte gBattlerAttacker, 1
|
||||
jumpifbytenotequal gBattlerAttacker, gBattlersCount, BattleScript_ActivateWeatherAbilities_Loop
|
||||
restoreattacker
|
||||
restoretarget
|
||||
return
|
||||
|
||||
|
|
@ -8019,7 +7987,7 @@ BattleScript_AttackWeakenedByStrongWinds::
|
|||
waitmessage B_WAIT_TIME_LONG
|
||||
return
|
||||
|
||||
BattleScript_MimicryActivates_End3::
|
||||
BattleScript_MimicryActivates::
|
||||
pause B_WAIT_TIME_SHORT
|
||||
call BattleScript_AbilityPopUp
|
||||
printstring STRINGID_BATTLERTYPECHANGEDTO
|
||||
|
|
@ -8045,16 +8013,18 @@ BattleScript_SnowWarningActivatesSnow::
|
|||
end3
|
||||
|
||||
BattleScript_ActivateTerrainEffects:
|
||||
saveattacker
|
||||
savetarget
|
||||
setbyte gBattlerTarget, 0
|
||||
setbyte gBattlerAttacker, 0
|
||||
BattleScript_ActivateTerrainSeed:
|
||||
copybyte sBATTLER, gBattlerTarget
|
||||
copyarraywithindex gBattlerTarget, gBattlerByTurnOrder, gBattlerAttacker, 1
|
||||
doterrainseed BS_TARGET, BattleScript_ActivateTerrainAbility
|
||||
removeitem BS_TARGET
|
||||
BattleScript_ActivateTerrainAbility:
|
||||
activateterrainchangeabilities BS_TARGET
|
||||
addbyte gBattlerTarget, 0x1
|
||||
jumpifbytenotequal gBattlerTarget, gBattlersCount, BattleScript_ActivateTerrainSeed
|
||||
addbyte gBattlerAttacker, 1
|
||||
jumpifbytenotequal gBattlerAttacker, gBattlersCount, BattleScript_ActivateTerrainSeed
|
||||
restoreattacker
|
||||
restoretarget
|
||||
return
|
||||
|
||||
|
|
@ -8472,10 +8442,9 @@ BattleScript_RaiseStatOnFaintingTarget::
|
|||
statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_CHANGE_ALLOW_PTR, BattleScript_RaiseStatOnFaintingTarget_End
|
||||
copybyte gBattlerAbility, gBattlerAttacker
|
||||
call BattleScript_AbilityPopUp
|
||||
setgraphicalstatchangevalues
|
||||
playanimation BS_ATTACKER, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1
|
||||
waitanimation
|
||||
printstring STRINGID_LASTABILITYRAISEDSTAT
|
||||
printfromtable gStatUpStringIds
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
BattleScript_RaiseStatOnFaintingTarget_End:
|
||||
return
|
||||
|
|
@ -8642,6 +8611,29 @@ BattleScript_BattleBondActivatesOnMoveEndAttacker::
|
|||
printstring STRINGID_ATTACKERBECAMEASHSPECIES
|
||||
return
|
||||
|
||||
BattleScript_EffectBattleBondStatIncrease::
|
||||
call BattleScript_AbilityPopUp
|
||||
playanimation BS_ATTACKER, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1
|
||||
setstatchanger STAT_ATK, 1, FALSE
|
||||
statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_CHANGE_ALLOW_PTR, BattleScript_EffectBattleBondStatIncreaseTrySpAtk
|
||||
jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_STAT_WONT_INCREASE, BattleScript_EffectBattleBondStatIncreaseTrySpAtk
|
||||
printfromtable gStatUpStringIds
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
BattleScript_EffectBattleBondStatIncreaseTrySpAtk:
|
||||
setstatchanger STAT_SPATK, 1, FALSE
|
||||
statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_CHANGE_ALLOW_PTR, BattleScript_EffectBattleBondStatIncreaseTrySpeed
|
||||
jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_STAT_WONT_INCREASE, BattleScript_EffectBattleBondStatIncreaseTrySpeed
|
||||
printfromtable gStatUpStringIds
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
BattleScript_EffectBattleBondStatIncreaseTrySpeed:
|
||||
setstatchanger STAT_SPEED, 1, FALSE
|
||||
statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_CHANGE_ALLOW_PTR, BattleScript_EffectBattleBondStatIncreaseRet
|
||||
jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_STAT_WONT_INCREASE, BattleScript_EffectBattleBondStatIncreaseRet
|
||||
printfromtable gStatUpStringIds
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
BattleScript_EffectBattleBondStatIncreaseRet:
|
||||
return
|
||||
|
||||
BattleScript_DancerActivates::
|
||||
call BattleScript_AbilityPopUp
|
||||
waitmessage B_WAIT_TIME_SHORT
|
||||
|
|
@ -9517,6 +9509,8 @@ BattleScript_RedCardActivationNoSwitch::
|
|||
waitmessage B_WAIT_TIME_LONG
|
||||
removeitem BS_SCRIPTING
|
||||
restoretarget
|
||||
restoreattacker
|
||||
restoresavedmove
|
||||
return
|
||||
|
||||
BattleScript_RedCardActivates::
|
||||
|
|
@ -9535,22 +9529,17 @@ BattleScript_RedCardEnd:
|
|||
return
|
||||
BattleScript_RedCardIngrain:
|
||||
printstring STRINGID_PKMNANCHOREDITSELF
|
||||
BattleScript_RedCardIngrainContinue:
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
removeitem BS_SCRIPTING
|
||||
restoretarget
|
||||
return
|
||||
BattleScript_RedCardSuctionCups:
|
||||
printstring STRINGID_PKMNANCHORSITSELFWITH
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
removeitem BS_SCRIPTING
|
||||
restoretarget
|
||||
return
|
||||
printstring STRINGID_PKMNANCHORSITSELFWITH
|
||||
goto BattleScript_RedCardIngrainContinue
|
||||
BattleScript_RedCardDynamaxed:
|
||||
printstring STRINGID_MOVEBLOCKEDBYDYNAMAX
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
removeitem BS_SCRIPTING
|
||||
restoretarget
|
||||
return
|
||||
goto BattleScript_RedCardIngrainContinue
|
||||
|
||||
BattleScript_EjectButtonActivates::
|
||||
makevisible BS_ATTACKER
|
||||
|
|
@ -9558,6 +9547,7 @@ BattleScript_EjectButtonActivates::
|
|||
printstring STRINGID_EJECTBUTTONACTIVATE
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
removeitem BS_SCRIPTING
|
||||
undodynamax BS_SCRIPTING
|
||||
makeinvisible BS_SCRIPTING
|
||||
openpartyscreen BS_SCRIPTING, BattleScript_EjectButtonEnd
|
||||
copybyte sSAVED_BATTLER, sBATTLER
|
||||
|
|
@ -9657,11 +9647,14 @@ BattleScript_NeutralizingGasExits::
|
|||
pause B_WAIT_TIME_SHORT
|
||||
printstring STRINGID_NEUTRALIZINGGASOVER
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
setbyte gBattlerTarget, 0
|
||||
setbyte gBattlerAttacker, 0
|
||||
BattleScript_NeutralizingGasExitsLoop:
|
||||
copyarraywithindex gBattlerTarget, gBattlerByTurnOrder, gBattlerAttacker, 1
|
||||
saveattacker
|
||||
switchinabilities BS_TARGET
|
||||
addbyte gBattlerTarget, 1
|
||||
jumpifbytenotequal gBattlerTarget, gBattlersCount, BattleScript_NeutralizingGasExitsLoop
|
||||
restoreattacker
|
||||
addbyte gBattlerAttacker, 1
|
||||
jumpifbytenotequal gBattlerAttacker, gBattlersCount, BattleScript_NeutralizingGasExitsLoop
|
||||
restoreattacker
|
||||
restoretarget
|
||||
return
|
||||
|
|
@ -10001,6 +9994,14 @@ BattleScript_EffectSteelsurge::
|
|||
BattleScript_DynamaxBegins::
|
||||
flushtextbox
|
||||
trytrainerslidedynamaxmsg
|
||||
jumpifcangigantamax BS_ATTACKER, BattleScript_DynamaxBegins_GigantamaxString_01
|
||||
printstring STRINGID_TIMETODYNAMAX
|
||||
waitmessage B_WAIT_TIME_MED
|
||||
goto BattleScript_DynamaxBegins_SwitchIn
|
||||
BattleScript_DynamaxBegins_GigantamaxString_01:
|
||||
printstring STRINGID_TIMETOGIGANTAMAX
|
||||
waitmessage B_WAIT_TIME_MED
|
||||
BattleScript_DynamaxBegins_SwitchIn:
|
||||
returnatktoball
|
||||
pause B_WAIT_TIME_SHORT
|
||||
returntoball BS_SCRIPTING, TRUE
|
||||
|
|
@ -10008,6 +10009,15 @@ BattleScript_DynamaxBegins::
|
|||
updatedynamax
|
||||
playanimation BS_SCRIPTING, B_ANIM_DYNAMAX_GROWTH
|
||||
waitanimation
|
||||
jumpifbyteequal B_SHOW_DYNAMAX_MESSAGE, FALSE, BattleScript_DynamaxBegins_End3
|
||||
jumpifcangigantamax BS_ATTACKER, BattleScript_DynamaxBegins_GigantamaxString_02
|
||||
printstring STRINGID_PKMNDYNAMAXED
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
goto BattleScript_DynamaxBegins_End3
|
||||
BattleScript_DynamaxBegins_GigantamaxString_02:
|
||||
printstring STRINGID_PKMNGIGANTAMAXED
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
BattleScript_DynamaxBegins_End3:
|
||||
end3
|
||||
|
||||
BattleScript_DynamaxEnds::
|
||||
|
|
@ -10017,6 +10027,13 @@ BattleScript_DynamaxEnds::
|
|||
waitanimation
|
||||
end2
|
||||
|
||||
BattleScript_DynamaxEnds_Ret::
|
||||
flushtextbox
|
||||
updatedynamax
|
||||
playanimation BS_SCRIPTING, B_ANIM_FORM_CHANGE
|
||||
waitanimation
|
||||
return
|
||||
|
||||
BattleScript_MoveBlockedByDynamax::
|
||||
accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE
|
||||
attackstring
|
||||
|
|
|
|||
|
|
@ -80,6 +80,7 @@ gFieldEffectScriptPointers::
|
|||
.4byte gFieldEffectScript_TracksBug @ FLDEFF_TRACKS_BUG
|
||||
.4byte gFieldEffectScript_TracksSpot @ FLDEFF_TRACKS_SPOT
|
||||
.4byte gFieldEffectScript_CaveDust @ FLDEFF_CAVE_DUST
|
||||
.4byte gFieldEffectScript_Defog @ FLDEFF_DEFOG
|
||||
|
||||
gFieldEffectScript_ExclamationMarkIcon1::
|
||||
field_eff_callnative FldEff_ExclamationMarkIcon
|
||||
|
|
@ -379,3 +380,7 @@ gFieldEffectScript_TracksSlither::
|
|||
gFieldEffectScript_CaveDust::
|
||||
field_eff_loadfadedpal_callnative gSpritePalette_CaveDust FldEff_CaveDust
|
||||
field_eff_end
|
||||
|
||||
gFieldEffectScript_Defog::
|
||||
field_eff_callnative FldEff_Defog
|
||||
field_eff_end
|
||||
|
|
|
|||
|
|
@ -418,3 +418,20 @@ EventScript_FailSweetScent::
|
|||
|
||||
Text_FailSweetScent:
|
||||
.string "Looks like there's nothing here…$"
|
||||
|
||||
EventScript_UseDefog::
|
||||
lockall
|
||||
bufferpartymonnick STR_VAR_1, VAR_RESULT
|
||||
buffermovename STR_VAR_2, MOVE_DEFOG
|
||||
msgbox Text_MonUsedFieldMove, MSGBOX_DEFAULT
|
||||
closemessage
|
||||
isfollowerfieldmoveuser VAR_0x8004
|
||||
setfieldeffectargument 3, VAR_0x8004 @ skip pose if so
|
||||
setflag FLAG_SAFE_FOLLOWER_MOVEMENT
|
||||
call_if_eq VAR_0x8004, TRUE, EventScript_FollowerFieldMove
|
||||
waitmovement 0
|
||||
setfieldeffectargument 0, VAR_RESULT
|
||||
dofieldeffect FLDEFF_DEFOG
|
||||
waitstate
|
||||
releaseall
|
||||
end
|
||||
|
|
|
|||
1
docs/CONTRIBUTING.md
Normal file
|
|
@ -0,0 +1 @@
|
|||
{{#include ../CONTRIBUTING.md}}
|
||||
1
docs/CREDITS.md
Normal file
|
|
@ -0,0 +1 @@
|
|||
{{#include ../CREDITS.md}}
|
||||
399
docs/STYLEGUIDE.md
Normal file
|
|
@ -0,0 +1,399 @@
|
|||
# Styleguide and Principles
|
||||
|
||||
## Naming Conventions
|
||||
|
||||
Function names and struct names should be formatted in `PascalCase`.
|
||||
|
||||
```c
|
||||
void ThisIsCorrect(void);
|
||||
|
||||
struct MyStruct
|
||||
{
|
||||
u8 firstField;
|
||||
u16 secondField;
|
||||
...
|
||||
};
|
||||
```
|
||||
|
||||
Variables and struct fields should be formatted in `camelCase`.
|
||||
|
||||
```c
|
||||
int thisIsCorrect = 0;
|
||||
```
|
||||
|
||||
Global variables should be prefixed with `g`, and static variables should be
|
||||
prefixed with `s`.
|
||||
|
||||
```c
|
||||
extern s32 gMyGlobalVariable;
|
||||
|
||||
static u8 sMyStaticVariable = 0;
|
||||
```
|
||||
|
||||
Macros and constants should use `CAPS_WITH_UNDERSCORES`.
|
||||
|
||||
```c
|
||||
#define MAX_LEVEL 100
|
||||
|
||||
enum
|
||||
{
|
||||
COLOR_RED,
|
||||
COLOR_BLUE,
|
||||
COLOR_GREEN,
|
||||
};
|
||||
|
||||
#define ADD_FIVE(x) ((x) + 5)
|
||||
```
|
||||
|
||||
## Coding Style
|
||||
|
||||
### Comments
|
||||
|
||||
Ideally, contributions have descriptive variable, function and constant names so as to explain functionality without comments. When a comment is used, the content of the comment should explain _WHY_ a specific system or component works the way it does.
|
||||
|
||||
When describing a system/component in-depth, use block comment syntax.
|
||||
|
||||
```c
|
||||
/*
|
||||
* This is an in-depth description of the save block format. Its format is as follows:
|
||||
*
|
||||
* Sectors 0 - 13: Save Slot 1
|
||||
* Sectors 14 - 27: Save Slot 2
|
||||
* ...
|
||||
*/
|
||||
```
|
||||
|
||||
When briefly describing a function or block of code, use a single-line comments
|
||||
placed on its own line.
|
||||
There should be a single space directly to the right of `//`.
|
||||
|
||||
```c
|
||||
// This is supplemental information for the function. If there is a bunch of info, it should
|
||||
// carry on to the next line.
|
||||
void ProcessSingleTask(void)
|
||||
{
|
||||
// Short comment describing some noteworthy aspect of the code immediately following.
|
||||
...
|
||||
// Comments should be capitalized and end in a period.
|
||||
}
|
||||
```
|
||||
|
||||
When tagging a data structure that corresponds to an `enum` or some noteworthy
|
||||
value, place the comment on the same line as the code.
|
||||
```c
|
||||
const u8 gPlantlikeMons[] =
|
||||
{
|
||||
FALSE, // SPECIES_BULBASAUR
|
||||
FALSE, // SPECIES_IVYSAUR
|
||||
TRUE, // SPECIES_VENUSAUR
|
||||
FALSE, // SPECIES_CHARMANDER
|
||||
...
|
||||
};
|
||||
```
|
||||
|
||||
### Whitespace
|
||||
|
||||
All `.c` and `.h` files should use 4 spaces--not tabs.
|
||||
Assembler files (`.s)` use tabs.
|
||||
Script files (`.inc)` use tabs.
|
||||
|
||||
### Operators
|
||||
|
||||
Assignments and comparison operators should have one space on both sides of `=`.
|
||||
|
||||
```c
|
||||
int i = 0; // correct
|
||||
int i=0; // incorrect
|
||||
|
||||
a > b // correct
|
||||
a>b // incorrect
|
||||
```
|
||||
|
||||
The incrementor and decrementor operators should NOT have a space.
|
||||
|
||||
```c
|
||||
i++; // correct
|
||||
i ++; // incorrect
|
||||
```
|
||||
|
||||
A control statement should have a space between them and their expressions, and the opening bracket should be on the next line.
|
||||
|
||||
```c
|
||||
for (...)
|
||||
{
|
||||
// correct
|
||||
}
|
||||
|
||||
for(...) {
|
||||
// incorrect
|
||||
}
|
||||
```
|
||||
|
||||
A `switch` statement's cases should left-align with the `switch`'s block.
|
||||
|
||||
```c
|
||||
switch (foo)
|
||||
{
|
||||
case 0: // correct
|
||||
...
|
||||
break;
|
||||
}
|
||||
|
||||
switch (foo)
|
||||
{
|
||||
case 0: // incorrect
|
||||
...
|
||||
break;
|
||||
}
|
||||
```
|
||||
|
||||
A single empty line should follow a block.
|
||||
|
||||
```c
|
||||
int MyFunction(int bar)
|
||||
{
|
||||
int foo = 0;
|
||||
if (bar)
|
||||
foo++;
|
||||
|
||||
return foo; // correct
|
||||
}
|
||||
|
||||
int MyFunction(int bar)
|
||||
{
|
||||
int foo = 0;
|
||||
if (bar)
|
||||
foo++;
|
||||
return foo; // incorrect
|
||||
}
|
||||
```
|
||||
|
||||
A chain of `if-else` statements in which any block is more than one line of
|
||||
code should use braces. If all blocks are single-line, then no braces are necessary.
|
||||
|
||||
```c
|
||||
if (foo) // correct
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
MyFunction();
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (foo) // incorrect
|
||||
return 1;
|
||||
else
|
||||
{
|
||||
MyFunction();
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
|
||||
### Control Structures
|
||||
|
||||
When comparing whether or not a value equals `0`, don't be explicit unless the
|
||||
situation calls for it.
|
||||
|
||||
```c
|
||||
if (runTasks) // correct
|
||||
RunTasks();
|
||||
|
||||
if (runTasks != 0) // incorrect
|
||||
RunTasks();
|
||||
|
||||
if (!PlayerIsOutside()) // correct
|
||||
RemoveSunglasses();
|
||||
|
||||
if (PlayerIsOutside() == 0) // incorrect
|
||||
RemoveSunglasses();
|
||||
```
|
||||
|
||||
When writing a `for` or `while` loop with no body, use a semicolon `;` on the
|
||||
same line, rather than empty braces.
|
||||
|
||||
```c
|
||||
for (i = 0; gParty[i].species != SPECIES_NONE; i++); // correct
|
||||
|
||||
for (i = 0; gParty[i].species != SPECIES_NONE; i++) // incorrect
|
||||
{ }
|
||||
```
|
||||
### Inline Configs
|
||||
|
||||
When adding functionality that is controlled by a config, defines should be checked within the normal control flow of the function unless a data structure requires a change at runtime.
|
||||
```c
|
||||
void SetCurrentDifficultyLevel(enum DifficultyLevel desiredDifficulty)
|
||||
{
|
||||
#ifdef B_VAR_DIFFICULTY
|
||||
return; // Incorrect
|
||||
#endif
|
||||
|
||||
if (desiredDifficulty > DIFFICULTY_MAX)
|
||||
desiredDifficulty = DIFFICULTY_MAX;
|
||||
|
||||
VarSet(B_VAR_DIFFICULTY, desiredDifficulty);
|
||||
}
|
||||
```
|
||||
```c
|
||||
void SetCurrentDifficultyLevel(enum DifficultyLevel desiredDifficulty)
|
||||
{
|
||||
if (!B_VAR_DIFFICULTY) // Correct
|
||||
return;
|
||||
|
||||
if (desiredDifficulty > DIFFICULTY_MAX)
|
||||
desiredDifficulty = DIFFICULTY_MAX;
|
||||
|
||||
VarSet(B_VAR_DIFFICULTY, desiredDifficulty);
|
||||
}
|
||||
```
|
||||
```c
|
||||
[MOVE_VINE_WHIP] =
|
||||
{
|
||||
.name = COMPOUND_STRING("Vine Whip"),
|
||||
.description = COMPOUND_STRING(
|
||||
"Strikes the foe with\n"
|
||||
"slender, whiplike vines."),
|
||||
#if B_UPDATED_MOVE_DATA >= GEN_6 // Correct
|
||||
.pp = 25,
|
||||
#elif B_UPDATED_MOVE_DATA >= GEN_4
|
||||
.pp = 15,
|
||||
#else
|
||||
.pp = 10,
|
||||
#endif
|
||||
.effect = EFFECT_HIT,
|
||||
.power = B_UPDATED_MOVE_DATA >= GEN_6 ? 45 : 35,
|
||||
},
|
||||
```
|
||||
## Data Type Sizes
|
||||
When a variable number is used, the data type should generally `u32` (unsigned) or `s32` (signed). There are a few exceptions to this rule, such as:
|
||||
* Values stored in the saveblock should use the smallest data type possible.
|
||||
* `EWRAM` variables should use the smallest data type possible.
|
||||
* Global variables / global struct members use the smallest data type possible.
|
||||
|
||||
## Constants, Enums and Type Checking
|
||||
Avoid using magic numbers when possible - constants help to make clear why a specific value is used.
|
||||
|
||||
```c
|
||||
// Incorrect
|
||||
if (gimmick == 5 && mon->teraType != 0)
|
||||
return TRUE;
|
||||
if (gimmick == 4 && mon->shouldUseDynamax)
|
||||
return TRUE;
|
||||
```
|
||||
|
||||
```c
|
||||
// Correct
|
||||
#define TYPE_NONE 0
|
||||
#define GIMMICK_DYNAMAX 4
|
||||
#define GIMMICK_TERA 5
|
||||
|
||||
if (gimmick == GIMMICK_TERA && mon->teraType != TYPE_NONE)
|
||||
return TRUE;
|
||||
if (gimmick == GIMMICK_DYNAMAX && mon->shouldUseDynamax)
|
||||
return TRUE;
|
||||
```
|
||||
|
||||
When several numbers in sequence are used AND those values are not utilized in the saveblock, an enum is used instead.
|
||||
|
||||
```c
|
||||
//Correct
|
||||
enum Gimmick
|
||||
{
|
||||
GIMMICK_NONE,
|
||||
GIMMICK_MEGA,
|
||||
GIMMICK_ULTRA_BURST,
|
||||
GIMMICK_Z_MOVE,
|
||||
GIMMICK_DYNAMAX,
|
||||
GIMMICK_TERA,
|
||||
GIMMICKS_COUNT,
|
||||
};
|
||||
|
||||
if (gimmick == GIMMICK_TERA && mon->teraType != TYPE_NONE)
|
||||
return TRUE;
|
||||
if (gimmick == GIMMICK_DYNAMAX && mon->shouldUseDynamax)
|
||||
return TRUE;
|
||||
```
|
||||
|
||||
When an enum is used, the enum type is used instead of a regular number type to prevent incorrectly set values.
|
||||
|
||||
```c
|
||||
// Incorrect
|
||||
bool32 CanActivateGimmick(u32 battler, u32 gimmick)
|
||||
{
|
||||
return gGimmicksInfo[gimmick].CanActivate != NULL && gGimmicksInfo[gimmick].CanActivate(battler);
|
||||
}
|
||||
|
||||
u32 GetCurrentDifficultyLevel(void)
|
||||
{
|
||||
if (!B_VAR_DIFFICULTY)
|
||||
return DIFFICULTY_NORMAL;
|
||||
|
||||
return VarGet(B_VAR_DIFFICULTY);
|
||||
}
|
||||
```
|
||||
|
||||
```c
|
||||
//Correct
|
||||
|
||||
bool32 CanActivateGimmick(u32 battler, enum Gimmick gimmick)
|
||||
{
|
||||
return gGimmicksInfo[gimmick].CanActivate != NULL && gGimmicksInfo[gimmick].CanActivate(battler);
|
||||
}
|
||||
|
||||
enum DifficultyLevel GetCurrentDifficultyLevel(void)
|
||||
{
|
||||
if (!B_VAR_DIFFICULTY)
|
||||
return DIFFICULTY_NORMAL;
|
||||
|
||||
return VarGet(B_VAR_DIFFICULTY);
|
||||
}
|
||||
```
|
||||
|
||||
## Principles
|
||||
|
||||
### Minimally Invasive
|
||||
|
||||
New functionality must be as minimally invasive to existing files as possible. When a large amount of new code is introduced, it is best to isolate it in its own file.
|
||||
|
||||
The [`B_VAR_DIFFICULTY`](https://patch-diff.githubusercontent.com/raw/rh-hideout/pokeemerald-expansion/pull/5337.diff) pull request is a good example of lots of new code being introduced in minimally invasive ways.
|
||||
|
||||
### `UNUSED`
|
||||
|
||||
If a function or data is introduced but is never called, it is designated as `UNUSED`. `UNUSED` functions should not be introduced unless neccesary.
|
||||
|
||||
```c
|
||||
static void UNUSED PadString(const u8 *src, u8 *dst)
|
||||
{
|
||||
u32 i;
|
||||
|
||||
for (i = 0; i < 17 && src[i] != EOS; i++)
|
||||
dst[i] = src[i];
|
||||
|
||||
for (; i < 17; i++)
|
||||
dst[i] = CHAR_SPACE;
|
||||
|
||||
dst[i] = EOS;
|
||||
}
|
||||
```
|
||||
|
||||
### Config Philosophy
|
||||
|
||||
If a branch can modifies saves, the functionality that does so must be gated behind a config, and off by default.
|
||||
|
||||
If a branch has a config that performs either of the following, it should be on by default:
|
||||
* improves the backend / developer quality of life
|
||||
* emulates present day, modern day Pokémon
|
||||
|
||||
If a branch's behavior is one that Game Freak does not have a consistent stance on, the default behavior of the config should be disussed by the maintainers.
|
||||
|
||||
All other configs should be off.
|
||||
|
||||
### Save Philosophy
|
||||
|
||||
Until [save migration](https://discord.com/channels/419213663107416084/1108733346864963746) is implemented, branches will only merged in if they do not forcefully break existing game saves.
|
||||
|
||||
When `pokemeerald-expansion` gets to a point where new functionality will require that we break saves, we will merge as many [save-breaking features](https://discord.com/channels/419213663107416084/1202774957776441427) together as possible, and increment the major version number of the project.
|
||||
|
||||
# Attribution
|
||||
* The majority of the styleguide was written by [garakmon](https://github.com/garakmon) as part of their [PR to pokefirered](<https://github.com/pret/pokefirered/pull/63>).
|
||||
|
|
@ -5,6 +5,8 @@
|
|||
- [Setting up WSL1 (Legacy Portion)](./legacy_WSL1_INSTALL.md)
|
||||
- [Run documentation site locally](local_mdbook/index.md)
|
||||
- [Ubuntu WSL1/WSL2](local_mdbook/ubuntu_WSL.md)
|
||||
- [Contributing](./CONTRIBUTING.md)
|
||||
- [Credits](./CREDITS.md)
|
||||
- [Tutorials]()
|
||||
- [What are AI Flags?](tutorials/ai_flags.md)
|
||||
- [How to add new AI Flags](tutorials/ai_logic.md)
|
||||
|
|
@ -22,7 +24,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.11.x]()
|
||||
- [Version 1.11.1](changelogs/1.11.x/1.11.1.md)
|
||||
- [Version 1.11.0](changelogs/1.11.x/1.11.0.md)
|
||||
- [1.10.x]()
|
||||
- [Version 1.10.3](changelogs/1.10.x/1.10.3.md)
|
||||
- [Version 1.10.2](changelogs/1.10.x/1.10.2.md)
|
||||
- [Version 1.10.1](changelogs/1.10.x/1.10.1.md)
|
||||
- [Version 1.10.0](changelogs/1.10.x/1.10.0.md)
|
||||
|
|
|
|||
120
docs/changelogs/1.10.x/1.10.3.md
Normal file
|
|
@ -0,0 +1,120 @@
|
|||
```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 test
|
||||
`.
|
||||
```
|
||||
|
||||
|
||||
## 🧬 General 🧬
|
||||
### Fixed
|
||||
* Fix Using a Safari Ball crashes the game #6206 by @ExMingYan in [#6220](https://github.com/rh-hideout/pokeemerald-expansion/pull/6220)
|
||||
* Try a new solution to Fix Safari #6206 by @ExMingYan in [#6228](https://github.com/rh-hideout/pokeemerald-expansion/pull/6228)
|
||||
* Remove obsolete check for steven when retrieving partner name by @u8-Salem and @hedara90 in [#6283](https://github.com/rh-hideout/pokeemerald-expansion/pull/6283)
|
||||
* Fix spit up getting skipped by @cawtds in [#6295](https://github.com/rh-hideout/pokeemerald-expansion/pull/6295)
|
||||
|
||||
## 🗺️ Overworld 🗺️
|
||||
### Changed
|
||||
* Merrp merge (12th of February) by @hedara90 in [#6244](https://github.com/rh-hideout/pokeemerald-expansion/pull/6244)
|
||||
|
||||
### Fixed
|
||||
* Follower Object Event refactor by @hedara90 and @AsparagusEduardo in [#6129](https://github.com/rh-hideout/pokeemerald-expansion/pull/6129)
|
||||
- Adds `OBJ_EVENT_GFX_SPECIES_FEMALE` and `OBJ_EVENT_GFX_SPECIES_SHINY_FEMALE`
|
||||
* Fixed Kecleon Shiny palette by @hedara90 in [#6298](https://github.com/rh-hideout/pokeemerald-expansion/pull/6298)
|
||||
* Shifted the follower graphicsIds by @hedara90 in [#6329](https://github.com/rh-hideout/pokeemerald-expansion/pull/6329)
|
||||
|
||||
## 🐉 Pokémon 🐉
|
||||
### Changed
|
||||
* Add Poltchageist family form data by @Bassoonian and @wiz1989 in [#6163](https://github.com/rh-hideout/pokeemerald-expansion/pull/6163)
|
||||
|
||||
### Fixed
|
||||
* Fixed non-regional forms breeding incorrectly by @AsparagusEduardo and @cawtds in [#4985](https://github.com/rh-hideout/pokeemerald-expansion/pull/4985)
|
||||
* Fixed compilation error when turning P_GENDER_DIFFERENCES off by @AsparagusEduardo in [#6223](https://github.com/rh-hideout/pokeemerald-expansion/pull/6223)
|
||||
|
||||
## ⚔️ Battle General ⚔️
|
||||
### Fixed
|
||||
* Fixes battler mutation during the intim script by @AlexOn1ine in [#6151](https://github.com/rh-hideout/pokeemerald-expansion/pull/6151)
|
||||
* Fixes Dynamic Moves types in SumScreen while in Battle by @AlexOn1ine in [#6145](https://github.com/rh-hideout/pokeemerald-expansion/pull/6145)
|
||||
* Fixes Dragon Tail missing timing against Rocky Helmet / Iron Barbs by @AlexOn1ine in [#6154](https://github.com/rh-hideout/pokeemerald-expansion/pull/6154)
|
||||
* Prevent sameMoveTurns from incrementing when unable to use move by @moostoet in [#6167](https://github.com/rh-hideout/pokeemerald-expansion/pull/6167)
|
||||
* Fixes Suction Cups ability popup and Red Card + Guard Dog interaction by @PhallenTree in [#6171](https://github.com/rh-hideout/pokeemerald-expansion/pull/6171)
|
||||
* Fixed Unnerve message and wrote tests by @hedara90 in [#6192](https://github.com/rh-hideout/pokeemerald-expansion/pull/6192)
|
||||
* Fixes Spectral Thief stealing boost at the wrong time by @AlexOn1ine in [#6197](https://github.com/rh-hideout/pokeemerald-expansion/pull/6197)
|
||||
* Fixes BATTLER_TURN_DAMAGED battler id by @AlexOn1ine in [#6236](https://github.com/rh-hideout/pokeemerald-expansion/pull/6236)
|
||||
* Fixed multi battle forced switches by @hedara90 in [#6243](https://github.com/rh-hideout/pokeemerald-expansion/pull/6243)
|
||||
* Fixes ability Embody Aspect triggering multiple times by @AlexOn1ine in [#6259](https://github.com/rh-hideout/pokeemerald-expansion/pull/6259)
|
||||
* Fixes Called moves ignoring redirection by @PhallenTree in [#6267](https://github.com/rh-hideout/pokeemerald-expansion/pull/6267)
|
||||
* Fixes Protean not restoring types after ai damage calcs by @AlexOn1ine in [#6280](https://github.com/rh-hideout/pokeemerald-expansion/pull/6280)
|
||||
* Restoretarget in Rototiller script + Tests by @AlexOn1ine in [#6296](https://github.com/rh-hideout/pokeemerald-expansion/pull/6296)
|
||||
* Fixes Brick Break/Psychic Fangs/Raging Bull breaking screens if target is immune by @PhallenTree in [#6308](https://github.com/rh-hideout/pokeemerald-expansion/pull/6308)
|
||||
* Fixes intimidate missing timing during a mega evo / switch by @AlexOn1ine in [#6322](https://github.com/rh-hideout/pokeemerald-expansion/pull/6322)
|
||||
* Fixes Coaching on semi-invulnerable ally, Air Balloon being stolen, Immunity abilities being ignored by Mold Breaker by @PhallenTree in [#6327](https://github.com/rh-hideout/pokeemerald-expansion/pull/6327)
|
||||
* Fixes effect paralyze not being absorbed by absorbing abilities by @AlexOn1ine in [#6338](https://github.com/rh-hideout/pokeemerald-expansion/pull/6338)
|
||||
* Added MOVE_TARGET_OPPONENT and added it to Me First, by @hedara90 in [#6336](https://github.com/rh-hideout/pokeemerald-expansion/pull/6336)
|
||||
* Fixes recoil moves causing recoil when absorbed by @AlexOn1ine in [#6341](https://github.com/rh-hideout/pokeemerald-expansion/pull/6341)
|
||||
* Fixed protect not resetting the counter in earlier gens by @hedara90 in [#6342](https://github.com/rh-hideout/pokeemerald-expansion/pull/6342)
|
||||
|
||||
## 🤹 Moves 🤹
|
||||
### Added
|
||||
* Added missing in-battle "Move Info" button prompt by @AsparagusEduardo and @TeamAquasHideout from who I got the source from and @BelialClover from who Archie got the source from. in [#6155](https://github.com/rh-hideout/pokeemerald-expansion/pull/6155)
|
||||
|
||||
### Changed
|
||||
* Fixes non-Ghost type Curse animation by @PhallenTree in [#6299](https://github.com/rh-hideout/pokeemerald-expansion/pull/6299)
|
||||
|
||||
### Fixed
|
||||
* Fixed Future Sight not being affected by Electrify by @AsparagusEduardo in [#6213](https://github.com/rh-hideout/pokeemerald-expansion/pull/6213)
|
||||
* Fixes Expanding Force and Spectral Thief move animations by @PhallenTree in [#6185](https://github.com/rh-hideout/pokeemerald-expansion/pull/6185)
|
||||
|
||||
## 🧶 Items 🧶
|
||||
### Fixed
|
||||
* Fixed curing status2 with items in double battles by @hedara90 and @wiz1989 in [#6335](https://github.com/rh-hideout/pokeemerald-expansion/pull/6335)
|
||||
|
||||
## 🤖 Battle AI 🤖
|
||||
### Fixed
|
||||
* Fix AI wrongly thinking it strikes first with priority even if player is using priority themselves by @moostoet in [#6274](https://github.com/rh-hideout/pokeemerald-expansion/pull/6274)
|
||||
* Big Root AI Fix by @Pawkkie in [#6309](https://github.com/rh-hideout/pokeemerald-expansion/pull/6309)
|
||||
* Fix AI hold effect considerations by @Pawkkie in [#6310](https://github.com/rh-hideout/pokeemerald-expansion/pull/6310)
|
||||
* fix for multi 2vs1 opponent sends out too many mons bug by @Bivurnum in [#6324](https://github.com/rh-hideout/pokeemerald-expansion/pull/6324)
|
||||
|
||||
## 🧹 Other Cleanup 🧹
|
||||
* Cleanup some global battler ID usage by @ghoulslash in [#6181](https://github.com/rh-hideout/pokeemerald-expansion/pull/6181)
|
||||
* Fix typo in Nuzzle's description by @Bassoonian in [#6209](https://github.com/rh-hideout/pokeemerald-expansion/pull/6209)
|
||||
* Remove whitespace from trainers data file by @AsparagusEduardo in [#6234](https://github.com/rh-hideout/pokeemerald-expansion/pull/6234)
|
||||
* Changed bit order for follower graphicsId creation by @hedara90 in [#6249](https://github.com/rh-hideout/pokeemerald-expansion/pull/6249)
|
||||
* Use more accurate count in MovesInfo by @AlexOn1ine in [#6260](https://github.com/rh-hideout/pokeemerald-expansion/pull/6260)
|
||||
* Fix Extra `task->tState++` and `break` in `Task_DrawFieldMessageBox` by @Deokishisu in [#6261](https://github.com/rh-hideout/pokeemerald-expansion/pull/6261)
|
||||
* Resized gimmick indicators to reduce VRAM usage by @hedara90 in [#6319](https://github.com/rh-hideout/pokeemerald-expansion/pull/6319)
|
||||
|
||||
## 🧪 Test Runner 🧪
|
||||
### Changed
|
||||
* Tests for Big Pecks by @hedara90 in [#6158](https://github.com/rh-hideout/pokeemerald-expansion/pull/6158)
|
||||
* Water Compaction tests by @hedara90 in [#6159](https://github.com/rh-hideout/pokeemerald-expansion/pull/6159)
|
||||
* Wrote tests for Electrify by @hedara90 in [#6179](https://github.com/rh-hideout/pokeemerald-expansion/pull/6179)
|
||||
* Sheer Force Test Fixes by @ghoulslash in [#6198](https://github.com/rh-hideout/pokeemerald-expansion/pull/6198)
|
||||
* Minor Terrain Seed Test Improvement by @ghoulslash in [#6207](https://github.com/rh-hideout/pokeemerald-expansion/pull/6207)
|
||||
* Added test support for 5 battle configs by @AsparagusEduardo in [#5914](https://github.com/rh-hideout/pokeemerald-expansion/pull/5914)
|
||||
* Added missing Dream Eater and Reflect Type tests by @AsparagusEduardo in [#6245](https://github.com/rh-hideout/pokeemerald-expansion/pull/6245)
|
||||
|
||||
### Fixed
|
||||
* Fixes Brick Break/Psychic Fangs/Raging Bull breaking screens if target is immune by @PhallenTree in [#6308](https://github.com/rh-hideout/pokeemerald-expansion/pull/6308)
|
||||
|
||||
## 📚 Documentation 📚
|
||||
* Update how_to_testing_system.md by @hedara90 in [#6281](https://github.com/rh-hideout/pokeemerald-expansion/pull/6281)
|
||||
* Update SCOPE.md with Intergenerational Feature Compatibility by @Pawkkie in [#6325](https://github.com/rh-hideout/pokeemerald-expansion/pull/6325)
|
||||
|
||||
## 📦 Branch Synchronisation 📦
|
||||
### pret
|
||||
* 11th of February in [#6231](https://github.com/rh-hideout/pokeemerald-expansion/pull/6231)
|
||||
* Replace easy_chat alphabetialOrder magic numbers with EC_INDEX values by @rayrobdod in [pret#2096](https://github.com/pret/pokeemerald/pull/2096)
|
||||
* Fixed switchout bug in multibattle where order of mons gets messed up by @shachar700 in [pret#2099](https://github.com/pret/pokeemerald/pull/2099)
|
||||
|
||||
## New Contributors
|
||||
* @ExMingYan made their first contribution in [#6220](https://github.com/rh-hideout/pokeemerald-expansion/pull/6220)
|
||||
* @Deokishisu made their first contribution in [#6261](https://github.com/rh-hideout/pokeemerald-expansion/pull/6261)
|
||||
* @Bivurnum made their first contribution in [#6324](https://github.com/rh-hideout/pokeemerald-expansion/pull/6324)
|
||||
|
||||
**Full Changelog**: https://github.com/rh-hideout/pokeemerald-expansion/compare/expansion/1.10.2...test
|
||||
|
||||
|
||||
<!--Last PR: 6342-->
|
||||
<!--Used to keep track of the last PR merged in case new ones come in before the changelog is done.-->
|
||||
385
docs/changelogs/1.11.x/1.11.0.md
Normal file
|
|
@ -0,0 +1,385 @@
|
|||
```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 test
|
||||
`.
|
||||
```
|
||||
|
||||
## 🌋 *REFACTORS* 🌋
|
||||
📜 = Uses a migration script.
|
||||
* Pursuit refactor by @PhallenTree in [#5707](https://github.com/rh-hideout/pokeemerald-expansion/pull/5707)
|
||||
* Atk Canceller refactor / reorder / clean up by @AlexOn1ine in [#5885](https://github.com/rh-hideout/pokeemerald-expansion/pull/5885)
|
||||
* Battle Weather Refactor by @AlexOn1ine in [#5833](https://github.com/rh-hideout/pokeemerald-expansion/pull/5833)
|
||||
* Replace WEATHER_HAS_EFFECT with HasWeatherEffect by @AlexOn1ine in [#6069](https://github.com/rh-hideout/pokeemerald-expansion/pull/6069)
|
||||
* Cleaned up Trainer Slides, added automated Trainer Slide tests, add new Enemy Critical Hit Slide by @pkmnsnfrn and @AlexOn1ine, @hedara90, @AsparagusEduardo, @mrgriffin in [#6018](https://github.com/rh-hideout/pokeemerald-expansion/pull/6018)
|
||||
* If users created new entries in sTrainerSlides, they will need to be ported to the new system.
|
||||
* Introduces BattleTurnCounter to simplify timer checks by @AlexOn1ine in [#6080](https://github.com/rh-hideout/pokeemerald-expansion/pull/6080)
|
||||
* Convert max effects to normal move effects by @AlexOn1ine in [#6143](https://github.com/rh-hideout/pokeemerald-expansion/pull/6143)
|
||||
* Redefine IsBattlerAlive in battle.h as a static inline by @AlexOn1ine in [#6211](https://github.com/rh-hideout/pokeemerald-expansion/pull/6211)
|
||||
* Consolidated Frontier teams into battle_frontier_trainers.h by @fdeblasio in [#5892](https://github.com/rh-hideout/pokeemerald-expansion/pull/5892)
|
||||
|
||||
## 🧬 General 🧬
|
||||
### Added
|
||||
* Add Script Cmd for Forcing Save Game by @ghoulslash in [#6090](https://github.com/rh-hideout/pokeemerald-expansion/pull/6090)
|
||||
* Trainer Party Pools by @hedara90 in [#5731](https://github.com/rh-hideout/pokeemerald-expansion/pull/5731)
|
||||
- Documentation on how to use this can be found under `docs/tutorials/how_to_trainer_party_pool.md`
|
||||
* Add Code Entry functionality by @Pawkkie and @PCG06 for the Mystery Gift iteration in [#5951](https://github.com/rh-hideout/pokeemerald-expansion/pull/5951)
|
||||
|
||||
### Changed
|
||||
* Added "Game Clear" flag toggle to debug menu by @AsparagusEduardo in [#5929](https://github.com/rh-hideout/pokeemerald-expansion/pull/5929)
|
||||
* Initialize m4a and IRQ handler in a loaded section by @SBird1337 in [#5912](https://github.com/rh-hideout/pokeemerald-expansion/pull/5912)
|
||||
* Debug menu and `createmon` additions/cleanup by @AsparagusEduardo in [#5994](https://github.com/rh-hideout/pokeemerald-expansion/pull/5994)
|
||||
- Added Tera Type, Dynamax Level, and Gigantamax Factor to the "Give Pokémon (complex)" debug menu option.
|
||||
- Added `dmaxLevel` option to `givemon` and `createmon`.
|
||||
- Added `WEATHER_COUNT`.
|
||||
- Cleaned up repeated code instances in debug menu.
|
||||
- Fixed mislabel of `ggMaxFactor` in `givemon` and `createmon`. Now it's `gmaxFactor`.
|
||||
* Introduces BattlerState struct for the Battle Engine by @AlexOn1ine and @mrgriffin provided the framework for this change in [#5954](https://github.com/rh-hideout/pokeemerald-expansion/pull/5954)
|
||||
* Reorder Makefile rules so that pokeemerald-test.elf builds in build/test by @mrgriffin in [#6004](https://github.com/rh-hideout/pokeemerald-expansion/pull/6004)
|
||||
* Use SET8 and SET32 consistently by @AZero13 in [#5544](https://github.com/rh-hideout/pokeemerald-expansion/pull/5544)
|
||||
* Ewram and unused function cleanup sweep by @hedara90 in [#6019](https://github.com/rh-hideout/pokeemerald-expansion/pull/6019)
|
||||
* Re-removed trainers.h trailing whitespace by @fdeblasio in [#6048](https://github.com/rh-hideout/pokeemerald-expansion/pull/6048)
|
||||
* Add Steven Multi to debug menu by @Pawkkie in [#6064](https://github.com/rh-hideout/pokeemerald-expansion/pull/6064)
|
||||
* Remove gDecompressionBuffer by @DizzyEggg in [#6029](https://github.com/rh-hideout/pokeemerald-expansion/pull/6029)
|
||||
* Trainer Battle Parameter Consolidation by @u8-Salem in [#5982](https://github.com/rh-hideout/pokeemerald-expansion/pull/5982)
|
||||
Breaking: raw uses of `trainerbattle` need to be adjusted to provide all possible parameter. Unused parameter musst be 0 or an alias. already parameterized macros like `trainerbattle_single` work out of the box.
|
||||
* Consolidated contest opponent filters into gContestOpponents by @fdeblasio in [#6119](https://github.com/rh-hideout/pokeemerald-expansion/pull/6119)
|
||||
* Don't use SeedRng some places where it isn't necessary by @tertu-m in [#6156](https://github.com/rh-hideout/pokeemerald-expansion/pull/6156)
|
||||
* Removed Trainer Slides footgun by @AsparagusEduardo in [#6205](https://github.com/rh-hideout/pokeemerald-expansion/pull/6205)
|
||||
* Consolidate duplicate dialogue of nature girl in Battle Frontier by @fdeblasio in [#6195](https://github.com/rh-hideout/pokeemerald-expansion/pull/6195)
|
||||
* Prevented fanfares from playing in headless mode by @pkmnsnfrn and @hedara90, @AsparagusEduardo in [#6219](https://github.com/rh-hideout/pokeemerald-expansion/pull/6219)
|
||||
|
||||
### Fixed
|
||||
* Don't write to NULL in TryFindHiddenPokemon by @DizzyEggg in [#5983](https://github.com/rh-hideout/pokeemerald-expansion/pull/5983)
|
||||
* Allow Party Menu with 0 Pokemon by @DizzyEggg in [#5997](https://github.com/rh-hideout/pokeemerald-expansion/pull/5997)
|
||||
* Revert map related enum conversion by @hedara90 in [#6078](https://github.com/rh-hideout/pokeemerald-expansion/pull/6078)
|
||||
* Revert "Revert map related enum conversion" by @hedara90 in [#6079](https://github.com/rh-hideout/pokeemerald-expansion/pull/6079)
|
||||
* Revert "Converts a bunch of defines to enums" by @Bassoonian in [#6082](https://github.com/rh-hideout/pokeemerald-expansion/pull/6082)
|
||||
* Fix upcoming not working on no cash by @DizzyEggg in [#6121](https://github.com/rh-hideout/pokeemerald-expansion/pull/6121)
|
||||
* Add the header required for TPP tags to work by @hedara90 in [#6162](https://github.com/rh-hideout/pokeemerald-expansion/pull/6162)
|
||||
* Fixed regression from master/upcoming merge by @AsparagusEduardo and @hedara90 , for doing the original merge when I couldn't in [#6199](https://github.com/rh-hideout/pokeemerald-expansion/pull/6199)
|
||||
* Fix Using a Safari Ball crashes the game #6206 by @ExMingYan in [#6220](https://github.com/rh-hideout/pokeemerald-expansion/pull/6220)
|
||||
* Fixed typo in requests_effects by @hedara90 and @purrfectdoodle in [#6215](https://github.com/rh-hideout/pokeemerald-expansion/pull/6215)
|
||||
* Try a new solution to Fix Safari #6206 by @ExMingYan in [#6228](https://github.com/rh-hideout/pokeemerald-expansion/pull/6228)
|
||||
* Remove obsolete check for steven when retrieving partner name by @u8-Salem and @hedara90 in [#6283](https://github.com/rh-hideout/pokeemerald-expansion/pull/6283)
|
||||
* Fix spit up getting skipped by @cawtds in [#6295](https://github.com/rh-hideout/pokeemerald-expansion/pull/6295)
|
||||
|
||||
## 🗺️ Overworld 🗺️
|
||||
### Added
|
||||
* Adds Dexnav by @ghoulslash in [#4818](https://github.com/rh-hideout/pokeemerald-expansion/pull/4818)
|
||||
* Fly from Pokenav by @khbsd in [#5679](https://github.com/rh-hideout/pokeemerald-expansion/pull/5679)
|
||||
* Expanded Pokémon Follower transformation functionality by @AsparagusEduardo in [#5048](https://github.com/rh-hideout/pokeemerald-expansion/pull/5048)
|
||||
|
||||
### Changed
|
||||
* Arbitrary trainer scripts + on frame/trigger softlock prevention by @mrgriffin in [#5033](https://github.com/rh-hideout/pokeemerald-expansion/pull/5033)
|
||||
* Removed OW_AUTO_SIGNPOST by @pkmnsnfrn in [#5974](https://github.com/rh-hideout/pokeemerald-expansion/pull/5974)
|
||||
* Fix leftover test change from #5033 by @mrgriffin in [#5987](https://github.com/rh-hideout/pokeemerald-expansion/pull/5987)
|
||||
* Match current gen behavior for battle environment after fishing by @kittenchilly in [#6099](https://github.com/rh-hideout/pokeemerald-expansion/pull/6099)
|
||||
* Add Mega Evolution, Primal Reversion, and Ultra Necrozma overworld sprites by @khbsd in [#5874](https://github.com/rh-hideout/pokeemerald-expansion/pull/5874)
|
||||
* Replaced hardcoded numbers in DexNav with variables by @fdeblasio in [#6241](https://github.com/rh-hideout/pokeemerald-expansion/pull/6241)
|
||||
* Merrp merge (12th of February) by @hedara90 in [#6244](https://github.com/rh-hideout/pokeemerald-expansion/pull/6244)
|
||||
* Adds a follower flag define to disable followers on the fly by @AlexOn1ine in [#6174](https://github.com/rh-hideout/pokeemerald-expansion/pull/6174)
|
||||
|
||||
### Fixed
|
||||
* Fix Trainer Hill OOB array access by @SBird1337 in [#5930](https://github.com/rh-hideout/pokeemerald-expansion/pull/5930)
|
||||
* Revert #5033 change to MapHeaderRunScriptType by @mrgriffin in [#5975](https://github.com/rh-hideout/pokeemerald-expansion/pull/5975)
|
||||
* Restore lock/lockall/locktrainer/release/releaseall in triggers by @mrgriffin in [#5976](https://github.com/rh-hideout/pokeemerald-expansion/pull/5976)
|
||||
* Follower Object Event refactor by @hedara90 and @AsparagusEduardo in [#6129](https://github.com/rh-hideout/pokeemerald-expansion/pull/6129)
|
||||
- Fixes `OBJ_EVENT_GFX_SPECIES_SHINY`
|
||||
- Adds `OBJ_EVENT_GFX_SPECIES_FEMALE` and `OBJ_EVENT_GFX_SPECIES_SHINY_FEMALE`
|
||||
* Fixes Static Assert from pr #6174 by @AlexOn1ine in [#6258](https://github.com/rh-hideout/pokeemerald-expansion/pull/6258)
|
||||
* Fixed Kecleon Shiny palette by @hedara90 in [#6298](https://github.com/rh-hideout/pokeemerald-expansion/pull/6298)
|
||||
|
||||
## 🐉 Pokémon 🐉
|
||||
### Added
|
||||
* IV/EV Info on Summary Screen by @khbsd in [#6027](https://github.com/rh-hideout/pokeemerald-expansion/pull/6027)
|
||||
* Add caught mon to full party by sending a different mon to the Box by @fakuzatsu in [#6058](https://github.com/rh-hideout/pokeemerald-expansion/pull/6058)
|
||||
|
||||
### Changed
|
||||
* Remove form change function footguns by @AsparagusEduardo and @AlexOn1ine for letting me know of this potential issue. in [#5995](https://github.com/rh-hideout/pokeemerald-expansion/pull/5995)
|
||||
- `GetBattleFormChangeTargetSpecies`, `GetFormChangeTargetSpecies` and `GetFormChangeTargetSpeciesBoxMon` now return the current species of the Pokémon instead of `SPECIES_NONE` as a precaution to avoid accidental deletions of Pokémon when using these functions.
|
||||
* Remove redundant calls to GetMonData in pokemon.c by @AZero13 in [#5545](https://github.com/rh-hideout/pokeemerald-expansion/pull/5545)
|
||||
* Rename Furfrou Species tags to match Pokemon Showdown exports by @moostoet in [#6041](https://github.com/rh-hideout/pokeemerald-expansion/pull/6041)
|
||||
* Add Mega Evolution, Primal Reversion, and Ultra Necrozma overworld sprites by @khbsd in [#5874](https://github.com/rh-hideout/pokeemerald-expansion/pull/5874)
|
||||
* Add Poltchageist family form data by @Bassoonian and @wiz1989 in [#6163](https://github.com/rh-hideout/pokeemerald-expansion/pull/6163)
|
||||
|
||||
### Fixed
|
||||
* Evolution level 1 learn by @hedara90 in [#5791](https://github.com/rh-hideout/pokeemerald-expansion/pull/5791)
|
||||
* Fixed non-regional forms breeding incorrectly by @AsparagusEduardo and @cawtds in [#4985](https://github.com/rh-hideout/pokeemerald-expansion/pull/4985)
|
||||
* Fixed compilation error when turning P_GENDER_DIFFERENCES off by @AsparagusEduardo in [#6223](https://github.com/rh-hideout/pokeemerald-expansion/pull/6223)
|
||||
* Reverted compound literal OW mon pic tables by @AsparagusEduardo in [#6216](https://github.com/rh-hideout/pokeemerald-expansion/pull/6216)
|
||||
|
||||
## ⚔️ Battle General ⚔️
|
||||
### Added
|
||||
* Add B_FLAG_SLEEP_CLAUSE by @Pawkkie, @Pawkkie and @iriv24 in [#5566](https://github.com/rh-hideout/pokeemerald-expansion/pull/5566)
|
||||
- Based on Smogon's sleep clause [philosophy](https://www.smogon.com/xy/articles/clauses#:~:text=Sleep%20Clause,t%20be%20put%20to%20sleep.)
|
||||
- Toggleable per-battle by setting / unsetting the flag assigned to B_FLAG_SLEEP_CLAUSE
|
||||
* Variadic IS_BATTLER_OF_TYPE and GetBattlerTypes by @mrgriffin in [#5708](https://github.com/rh-hideout/pokeemerald-expansion/pull/5708)
|
||||
* Simultaneous HP Reduction (CFRU Port) by @AsparagusEduardo and @AlexOn1ine for the port to expansion. @Skeli789 for the CFRU implementation. in [#5770](https://github.com/rh-hideout/pokeemerald-expansion/pull/5770)
|
||||
* Destiny Bond fails on repeated use in Gen 7+ by @Pawkkie in [#5652](https://github.com/rh-hideout/pokeemerald-expansion/pull/5652)
|
||||
* Adds Pledge Side Statuses as Starting Statuses by @AlexOn1ine in [#5899](https://github.com/rh-hideout/pokeemerald-expansion/pull/5899)
|
||||
* Adds B_VAR_DIFFICULTY and related functions READ DESC by @pkmnsnfrn in [#5337](https://github.com/rh-hideout/pokeemerald-expansion/pull/5337)
|
||||
* Config for move slot rearrangement in battle by @hedara90 and @ghoulslash for pointing out the exact point in the code where move slot rearrangement is handled. in [#6017](https://github.com/rh-hideout/pokeemerald-expansion/pull/6017)
|
||||
- Move slot rearrangement is disabled by default in battle, set `B_MOVE_REARRANGEMENT_IN_BATTLE` to `GEN_3` to enable rearrangement again.
|
||||
|
||||
### Changed
|
||||
* Sleep Clause global config by @Pawkkie in [#5762](https://github.com/rh-hideout/pokeemerald-expansion/pull/5762)
|
||||
* Pursuit refactor by @PhallenTree in [#5707](https://github.com/rh-hideout/pokeemerald-expansion/pull/5707)
|
||||
* Changes Various defines to an Enum by @AlexOn1ine in [#5839](https://github.com/rh-hideout/pokeemerald-expansion/pull/5839)
|
||||
* move overwrittenAbilities field to DisableStruct by @ghoulslash in [#5946](https://github.com/rh-hideout/pokeemerald-expansion/pull/5946)
|
||||
* Battle Weather Refactor by @AlexOn1ine in [#5833](https://github.com/rh-hideout/pokeemerald-expansion/pull/5833)
|
||||
* Easy customizable Hidden Move types by @AsparagusEduardo in [#5872](https://github.com/rh-hideout/pokeemerald-expansion/pull/5872)
|
||||
- `gTypesInfo` now has a `isHiddenPowerType` field that inserts them into the Hidden Power type calculation.
|
||||
- ***Warning:*** Changing this from the vanilla settings will change any existing Hidden Power's type, and external calculators will not work either.
|
||||
* Introduces BattlerState struct for the Battle Engine by @AlexOn1ine and @mrgriffin provided the framework for this change in [#5954](https://github.com/rh-hideout/pokeemerald-expansion/pull/5954)
|
||||
* Cleaned up Trainer Slides, added automated Trainer Slide tests, add new Enemy Critical Hit Slide by @pkmnsnfrn and @AlexOn1ine, @hedara90, @AsparagusEduardo, @mrgriffin in [#6018](https://github.com/rh-hideout/pokeemerald-expansion/pull/6018)
|
||||
* If users created new entries in sTrainerSlides, they will need to be ported to the new system.
|
||||
* Introduces BattleTurnCounter to simplfy timer checks by @AlexOn1ine in [#6080](https://github.com/rh-hideout/pokeemerald-expansion/pull/6080)
|
||||
* Replace BattleStruct members quickClawRandom/quickDrawRandom with locals by @AlexOn1ine in [#6136](https://github.com/rh-hideout/pokeemerald-expansion/pull/6136)
|
||||
* Added Difficulty Fallback for Trainer Slides by @pkmnsnfrn in [#6088](https://github.com/rh-hideout/pokeemerald-expansion/pull/6088)
|
||||
* CanAbilityX Function Cleanup by @ghoulslash in [#6183](https://github.com/rh-hideout/pokeemerald-expansion/pull/6183)
|
||||
* Unify setreflect/setlightscreen and MOVE_EFFECT_REFLECT/LIGHT_SCREEN by @ghoulslash in [#6196](https://github.com/rh-hideout/pokeemerald-expansion/pull/6196)
|
||||
|
||||
### Fixed
|
||||
* Fix Sleep Clause AI handling of partner sleeping moves by @Pawkkie in [#5761](https://github.com/rh-hideout/pokeemerald-expansion/pull/5761)
|
||||
* Fix fixed point damage calculation off-by-1s by @SBird1337 in [#5775](https://github.com/rh-hideout/pokeemerald-expansion/pull/5775)
|
||||
Fixes a bunch of rounding errors that cause wrong outputs in the damage calculation.
|
||||
* Fixes simu hp reduction when no partner was on field by @AlexOn1ine in [#5799](https://github.com/rh-hideout/pokeemerald-expansion/pull/5799)
|
||||
* Fixes Regenerator healing past maxHP by @PhallenTree in [#5861](https://github.com/rh-hideout/pokeemerald-expansion/pull/5861)
|
||||
* Fixes Pursuit + Emergency Exit causing double switches and Pursuit user fainting causing target to not finish switch by @PhallenTree in [#5849](https://github.com/rh-hideout/pokeemerald-expansion/pull/5849)
|
||||
* Fixes regression caused by argument refactor by @AlexOn1ine in [#5870](https://github.com/rh-hideout/pokeemerald-expansion/pull/5870)
|
||||
* Fixes Sparkling Aria Shield Dust / Covert Cloak interaction by @AlexOn1ine in [#5911](https://github.com/rh-hideout/pokeemerald-expansion/pull/5911)
|
||||
* Battle Weather Refactor oversight by @AlexOn1ine in [#5960](https://github.com/rh-hideout/pokeemerald-expansion/pull/5960)
|
||||
* Shell Bell Clean up / Simplification and Tests by @AlexOn1ine in [#5924](https://github.com/rh-hideout/pokeemerald-expansion/pull/5924)
|
||||
* Dynamic move type was ignored in doubles for spread moves by @AlexOn1ine in [#5984](https://github.com/rh-hideout/pokeemerald-expansion/pull/5984)
|
||||
* Fixes self effect moves not procing for spread moves when battler 3 w… by @AlexOn1ine in [#6020](https://github.com/rh-hideout/pokeemerald-expansion/pull/6020)
|
||||
* Fix UB when accessing move result flags by @cawtds in [#6030](https://github.com/rh-hideout/pokeemerald-expansion/pull/6030)
|
||||
* Fix Powder (status) config and some terrain timers not using gBattleTurnCounter by @PhallenTree in [#6109](https://github.com/rh-hideout/pokeemerald-expansion/pull/6109)
|
||||
* Fix Powder config not checking for Powder status by @PhallenTree in [#6113](https://github.com/rh-hideout/pokeemerald-expansion/pull/6113)
|
||||
* Fixes battler mutation during the intim script by @AlexOn1ine in [#6151](https://github.com/rh-hideout/pokeemerald-expansion/pull/6151)
|
||||
* Fixes Dynamic Moves types in SumScreen while in Battle by @AlexOn1ine in [#6145](https://github.com/rh-hideout/pokeemerald-expansion/pull/6145)
|
||||
* Fixes Dragon Tail missing timing against Rocky Helmet / Iron Barbs by @AlexOn1ine in [#6154](https://github.com/rh-hideout/pokeemerald-expansion/pull/6154)
|
||||
* Prevent sameMoveTurns from incrementing when unable to use move by @moostoet in [#6167](https://github.com/rh-hideout/pokeemerald-expansion/pull/6167)
|
||||
* Fixes Suction Cups ability popup and Red Card + Guard Dog interaction by @PhallenTree in [#6171](https://github.com/rh-hideout/pokeemerald-expansion/pull/6171)
|
||||
* Fixed Unnerve message and wrote tests by @hedara90 in [#6192](https://github.com/rh-hideout/pokeemerald-expansion/pull/6192)
|
||||
* Fixes Spectral Thief stealing boost at the wrong time by @AlexOn1ine in [#6197](https://github.com/rh-hideout/pokeemerald-expansion/pull/6197)
|
||||
* Fixes BATTLER_TURN_DAMAGED battler id by @AlexOn1ine in [#6236](https://github.com/rh-hideout/pokeemerald-expansion/pull/6236)
|
||||
* Fixed multi battle forced switches by @hedara90 in [#6243](https://github.com/rh-hideout/pokeemerald-expansion/pull/6243)
|
||||
* Fixes ability Embody Aspect triggering multiple times by @AlexOn1ine in [#6259](https://github.com/rh-hideout/pokeemerald-expansion/pull/6259)
|
||||
* Fixes Called moves ignoring redirection by @PhallenTree in [#6267](https://github.com/rh-hideout/pokeemerald-expansion/pull/6267)
|
||||
* Fixes Protean not restoring types after ai damage calcs by @AlexOn1ine in [#6280](https://github.com/rh-hideout/pokeemerald-expansion/pull/6280)
|
||||
* Restoretarget in Rototiller script + Tests by @AlexOn1ine in [#6296](https://github.com/rh-hideout/pokeemerald-expansion/pull/6296)
|
||||
* Fixes inconsistency for Kings rock. by @AlexOn1ine in [#6302](https://github.com/rh-hideout/pokeemerald-expansion/pull/6302)
|
||||
* Fixes Shell Bell for Spread Moves by @AlexOn1ine in [#6303](https://github.com/rh-hideout/pokeemerald-expansion/pull/6303)
|
||||
* Fixes Brick Break/Psychic Fangs/Raging Bull breaking screens if target is immune by @PhallenTree in [#6308](https://github.com/rh-hideout/pokeemerald-expansion/pull/6308)
|
||||
* Fixes doesnt effect message for Thunder Wave by @AlexOn1ine in [#6304](https://github.com/rh-hideout/pokeemerald-expansion/pull/6304)
|
||||
* Fixes Tera Shell activating on moves that have no effect on target by @AlexOn1ine in [#6271](https://github.com/rh-hideout/pokeemerald-expansion/pull/6271)
|
||||
* Fixes fainted battler being able to select an action by @PhallenTree in [#6339](https://github.com/rh-hideout/pokeemerald-expansion/pull/6339)
|
||||
|
||||
## 🤹 Moves 🤹
|
||||
### Added
|
||||
* Added missing in-battle "Move Info" button prompt by @AsparagusEduardo and @TeamAquasHideout from who I got the source from and @BelialClover from who Archie got the source from. in [#6155](https://github.com/rh-hideout/pokeemerald-expansion/pull/6155)
|
||||
|
||||
### Changed
|
||||
* New Volt Switch Animation by @AlexOn1ine in [#5729](https://github.com/rh-hideout/pokeemerald-expansion/pull/5729)
|
||||
* Refactors argument into a union by @AlexOn1ine in [#5853](https://github.com/rh-hideout/pokeemerald-expansion/pull/5853)
|
||||
* Encapsulate move data by @AsparagusEduardo in [#5852](https://github.com/rh-hideout/pokeemerald-expansion/pull/5852)
|
||||
* Removes Resource Flags and moves fields to DisableStruct by @AlexOn1ine in [#5945](https://github.com/rh-hideout/pokeemerald-expansion/pull/5945)
|
||||
* Tera starstorm by @hedara90 in [#6073](https://github.com/rh-hideout/pokeemerald-expansion/pull/6073)
|
||||
* Tachyon Cutter and Salt Cure animations by @hedara90 in [#6182](https://github.com/rh-hideout/pokeemerald-expansion/pull/6182)
|
||||
* Heal Bell/Aromatherapy/Sparkly Swirl improvements and fixes by @AsparagusEduardo in [#6210](https://github.com/rh-hideout/pokeemerald-expansion/pull/6210)
|
||||
- Removed `EFFECT_SPARKLY_SWIRL` in favor of `MOVE_EFFECT_AROMATHEROPY`.
|
||||
* Moved sValidApprenticeMove into gMovesInfo by @fdeblasio in [#6254](https://github.com/rh-hideout/pokeemerald-expansion/pull/6254)
|
||||
* Fixes non-Ghost type Curse animation by @PhallenTree in [#6299](https://github.com/rh-hideout/pokeemerald-expansion/pull/6299)
|
||||
* Remove pursuitSwitchByMove and additional if statement by @PhallenTree in [#6326](https://github.com/rh-hideout/pokeemerald-expansion/pull/6326)
|
||||
|
||||
### Fixed
|
||||
* Fixes moves based on Dragon Darts with strikeCount > 2 always hitting the same battler from the second hit onwards by @PhallenTree in [#5830](https://github.com/rh-hideout/pokeemerald-expansion/pull/5830)
|
||||
* Last fix for Sparkling Aria / Covert Cloak / Shield Dust interaction by @AlexOn1ine in [#5956](https://github.com/rh-hideout/pokeemerald-expansion/pull/5956)
|
||||
* Added WEATHER_DOWNPOUR to Weather Ball's dynamic type by @fdeblasio in [#6100](https://github.com/rh-hideout/pokeemerald-expansion/pull/6100)
|
||||
* Fixed Future Sight not being affected by Electrify by @AsparagusEduardo in [#6213](https://github.com/rh-hideout/pokeemerald-expansion/pull/6213)
|
||||
* Fixes Expanding Force and Spectral Thief move animations by @PhallenTree in [#6185](https://github.com/rh-hideout/pokeemerald-expansion/pull/6185)
|
||||
* Made some move animations fit in VRAM by @hedara90 in [#6289](https://github.com/rh-hideout/pokeemerald-expansion/pull/6289)
|
||||
|
||||
## 🧶 Items 🧶
|
||||
### Fixed
|
||||
* Adds missing Friend Ball friendship bonus upon catching by @PhallenTree in [#5795](https://github.com/rh-hideout/pokeemerald-expansion/pull/5795)
|
||||
|
||||
## 🤖 Battle AI 🤖
|
||||
### Added
|
||||
* Smart Switching handles Soundproof by @Pawkkie and @Robdeezy for the idea! in [#5703](https://github.com/rh-hideout/pokeemerald-expansion/pull/5703)
|
||||
* Add Revival Blessing AI by @Pawkkie in [#5704](https://github.com/rh-hideout/pokeemerald-expansion/pull/5704)
|
||||
* Add AI_FLAG_WEIGH_ABILITY_PREDICTION by @Pawkkie and @khbsd and @ghoulslash for the idea, @AlexOn1ine and @mrgriffin for getting it working :) in [#5636](https://github.com/rh-hideout/pokeemerald-expansion/pull/5636)
|
||||
* Add AI_FLAG_PREFER_HIGHEST_DAMAGE_MOVE by @Pawkkie in [#6025](https://github.com/rh-hideout/pokeemerald-expansion/pull/6025)
|
||||
* Add AI_FLAG_PREDICT_SWITCH by @Pawkkie and @kithr1 in [#6028](https://github.com/rh-hideout/pokeemerald-expansion/pull/6028)
|
||||
* Add AI_FLAG_PREDICT_INCOMING_MON: AI will score against predicted switchin if predicting switch by @Pawkkie in [#6037](https://github.com/rh-hideout/pokeemerald-expansion/pull/6037)
|
||||
* Switch trapping AI will consider Trace by @Pawkkie in [#6059](https://github.com/rh-hideout/pokeemerald-expansion/pull/6059)
|
||||
* AI adds score to Pursuit if it OHKOs by @Pawkkie in [#6166](https://github.com/rh-hideout/pokeemerald-expansion/pull/6166)
|
||||
* Switch chance config support by @Pawkkie in [#6187](https://github.com/rh-hideout/pokeemerald-expansion/pull/6187)
|
||||
- Config can be changed in config/ai.h
|
||||
* Add function to adjust AI scoring for generalized item effects by @moostoet and @AlexOn1ine and @Pawkkie for the input on slight changes to make to the logic (config, no magic numbers...) in [#6247](https://github.com/rh-hideout/pokeemerald-expansion/pull/6247)
|
||||
|
||||
### Changed
|
||||
* Fixed AI not handling type effectiveness beyond x8 by @AsparagusEduardo and @/sshadowzkmao in [#6127](https://github.com/rh-hideout/pokeemerald-expansion/pull/6127)
|
||||
- Removed the use of `AI_EFFECTIVENESS_` in favor of storing the actual type effectiveness.
|
||||
- Renamed `AI_GetTypeEffectiveness` to `AI_GetMoveEffectiveness`, removing the original one.
|
||||
* Remove global sBattler_AI by @AlexOn1ine in [#6128](https://github.com/rh-hideout/pokeemerald-expansion/pull/6128)
|
||||
* SwitchType enum to clean up GetMostSuitableMonToSwitchInto by @Pawkkie in [#6184](https://github.com/rh-hideout/pokeemerald-expansion/pull/6184)
|
||||
|
||||
### Fixed
|
||||
* Eject item ace flag switch AI fixes by @Pawkkie and @wiz1989 for reporting the bug in [#6098](https://github.com/rh-hideout/pokeemerald-expansion/pull/6098)
|
||||
* Fix Choice'd mons referring to incorrect move when switching by @Pawkkie and @/capncrunch in [#6204](https://github.com/rh-hideout/pokeemerald-expansion/pull/6204)
|
||||
* Fix AI switching in absorbing mon incorrectly by @Pawkkie in [#6227](https://github.com/rh-hideout/pokeemerald-expansion/pull/6227)
|
||||
* Improve Yawn and Status Switching by @Pawkkie and @/Chape for finding this behaviour in [#6202](https://github.com/rh-hideout/pokeemerald-expansion/pull/6202)
|
||||
* Fix AI wrongly thinking it strikes first with priority even if player is using priority themselves by @moostoet in [#6274](https://github.com/rh-hideout/pokeemerald-expansion/pull/6274)
|
||||
* Fix AI hazard move handling, minor AI tweaks by @Pawkkie and @ShadowzLmao2 in [#6311](https://github.com/rh-hideout/pokeemerald-expansion/pull/6311)
|
||||
* Fix Overzealous Absorber Switching by @Pawkkie and @iriv24 and @ravepossum for squinting at a conditional for nearly 30mins with me to find a semicolon in [#6318](https://github.com/rh-hideout/pokeemerald-expansion/pull/6318)
|
||||
* Fix Substitute / Shed Tail Switch AI by @Pawkkie in [#6334](https://github.com/rh-hideout/pokeemerald-expansion/pull/6334)
|
||||
|
||||
## 🧹 Other Cleanup 🧹
|
||||
* Split "Do nothing" move effects by @AsparagusEduardo in [#5613](https://github.com/rh-hideout/pokeemerald-expansion/pull/5613)
|
||||
* Sleep Clause global config by @Pawkkie in [#5762](https://github.com/rh-hideout/pokeemerald-expansion/pull/5762)
|
||||
* Converts multi-choice options to COMPOUND_STRINGs by @fdeblasio in [#5686](https://github.com/rh-hideout/pokeemerald-expansion/pull/5686)
|
||||
* Converted item-related variables to COMPOUND_STRINGs by @fdeblasio in [#5714](https://github.com/rh-hideout/pokeemerald-expansion/pull/5714)
|
||||
* Adds SleepClauseBlock enum to CanBeSlept by @Pawkkie and @AlexOn1ine in [#5773](https://github.com/rh-hideout/pokeemerald-expansion/pull/5773)
|
||||
* Swapped DESELECT and CHECK_TAG to be in right places by @fdeblasio in [#5794](https://github.com/rh-hideout/pokeemerald-expansion/pull/5794)
|
||||
* Changes target TURN_DAMAGED and MAX_HP to inlines by @AlexOn1ine in [#5822](https://github.com/rh-hideout/pokeemerald-expansion/pull/5822)
|
||||
* Changes Various defines to an Enum by @AlexOn1ine in [#5839](https://github.com/rh-hideout/pokeemerald-expansion/pull/5839)
|
||||
* Remove fno-toplevel-reorder by @DizzyEggg in [#5809](https://github.com/rh-hideout/pokeemerald-expansion/pull/5809)
|
||||
* Refactors argument into a union by @AlexOn1ine in [#5853](https://github.com/rh-hideout/pokeemerald-expansion/pull/5853)
|
||||
* Clean up redundancy for mugshots by @AlexOn1ine in [#5906](https://github.com/rh-hideout/pokeemerald-expansion/pull/5906)
|
||||
* Encapsulate move data by @AsparagusEduardo in [#5852](https://github.com/rh-hideout/pokeemerald-expansion/pull/5852)
|
||||
* Initialize m4a and IRQ handler in a loaded section by @SBird1337 in [#5912](https://github.com/rh-hideout/pokeemerald-expansion/pull/5912)
|
||||
* Remove EWRAM gHpDealt (not needed anymore) by @AlexOn1ine in [#5925](https://github.com/rh-hideout/pokeemerald-expansion/pull/5925)
|
||||
* Fix DexNav static asserts by @Bassoonian in [#5944](https://github.com/rh-hideout/pokeemerald-expansion/pull/5944)
|
||||
* Move overwrittenAbilities field to DisableStruct by @ghoulslash in [#5946](https://github.com/rh-hideout/pokeemerald-expansion/pull/5946)
|
||||
* Converted 2 various to callnative by @AsparagusEduardo in [#5950](https://github.com/rh-hideout/pokeemerald-expansion/pull/5950)
|
||||
- Removed `VARIOUS_SWAP_SIDE_STATUSES` and `VARIOUS_SWAP_STATS`.
|
||||
* Shell Bell Clean up / Simplification and Tests by @AlexOn1ine in [#5924](https://github.com/rh-hideout/pokeemerald-expansion/pull/5924)
|
||||
* Removed OW_AUTO_SIGNPOST by @pkmnsnfrn, @doejohn126 discovered the issue in [#5974](https://github.com/rh-hideout/pokeemerald-expansion/pull/5974)
|
||||
* Fix leftover test change from #5033 by @mrgriffin in [#5987](https://github.com/rh-hideout/pokeemerald-expansion/pull/5987)
|
||||
* Multiple removals of hardcoded move IDs by @AsparagusEduardo in [#5964](https://github.com/rh-hideout/pokeemerald-expansion/pull/5964)
|
||||
* Missed two uses of new hazard type enum by @Pawkkie in [#5996](https://github.com/rh-hideout/pokeemerald-expansion/pull/5996)
|
||||
* Debug menu and `createmon` additions/cleanup by @AsparagusEduardo in [#5994](https://github.com/rh-hideout/pokeemerald-expansion/pull/5994)
|
||||
- Added Tera Type, Dynamax Level, and Gigantamax Factor to the "Give Pokémon (complex)" debug menu option.
|
||||
- Added `dmaxLevel` option to `givemon` and `createmon`.
|
||||
- Added `WEATHER_COUNT`.
|
||||
- Cleaned up repeated code instances in debug menu.
|
||||
- Fixed mislabel of `ggMaxFactor` in `givemon` and `createmon`. Now it's `gmaxFactor`.
|
||||
* Free some IWRAM by @DizzyEggg in [#6000](https://github.com/rh-hideout/pokeemerald-expansion/pull/6000)
|
||||
* Removes Resource Flags and moves fields to DisableStruct by @AlexOn1ine in [#5945](https://github.com/rh-hideout/pokeemerald-expansion/pull/5945)
|
||||
* Future Sight Innards Out follow up for upcoming by @AlexOn1ine in [#5998](https://github.com/rh-hideout/pokeemerald-expansion/pull/5998)
|
||||
* Remove redundant calls to GetMonData in pokemon.c by @AZero13 in [#5545](https://github.com/rh-hideout/pokeemerald-expansion/pull/5545)
|
||||
* Use SET8 and SET32 consistently by @AZero13 in [#5544](https://github.com/rh-hideout/pokeemerald-expansion/pull/5544)
|
||||
* Rename Furfrou Species tags to match Pokemon Showdown exports by @moostoet in [#6041](https://github.com/rh-hideout/pokeemerald-expansion/pull/6041)
|
||||
* Rename DexNav flags and vars by @Bassoonian in [#6044](https://github.com/rh-hideout/pokeemerald-expansion/pull/6044)
|
||||
* Re-removed trainers.h trailing whitespace by @fdeblasio in [#6048](https://github.com/rh-hideout/pokeemerald-expansion/pull/6048)
|
||||
* Moved front animations frames to gSpeciesInfo by @AsparagusEduardo in [#5605](https://github.com/rh-hideout/pokeemerald-expansion/pull/5605)
|
||||
* Clean up array access by using index instead of dereferencing the value by @AlexOn1ine in [#6057](https://github.com/rh-hideout/pokeemerald-expansion/pull/6057)
|
||||
* Add a uniquely striking pair of brackets by @Pawkkie in [#6068](https://github.com/rh-hideout/pokeemerald-expansion/pull/6068)
|
||||
* Replace WEATHER_HAS_EFFECT with HasWeatherEffect by @AlexOn1ine in [#6069](https://github.com/rh-hideout/pokeemerald-expansion/pull/6069)
|
||||
* Converts a bunch of defines to enums by @Bassoonian in [#6071](https://github.com/rh-hideout/pokeemerald-expansion/pull/6071)
|
||||
- Replaced `BATTLE_TERRAIN` #defines with the `BattleTerrain` enum
|
||||
- Replaced `MAP_TYPE` #defines with the `MapType` enum
|
||||
- Replaced `MAP_BATTLE_SCENE` #defines with the `MapBattleScene` enum
|
||||
- Replaced `BACK_ANIM` #defines with the `BackAnim` enum
|
||||
- Replaced `ANIM` #defines with the `AnimFunctionIDs` enum
|
||||
- Replaced `INGAME_TRADE` #defines with the `InGameTradeID` enum
|
||||
- Replaced `TRAINER_CLASS` #defines with the `TRAINER_CLASS` enum
|
||||
* Return the universe to a state of balanced quilibrium by @Pawkkie in [#6074](https://github.com/rh-hideout/pokeemerald-expansion/pull/6074)
|
||||
* Cleaned up Debug Menu by @AsparagusEduardo in [#6070](https://github.com/rh-hideout/pokeemerald-expansion/pull/6070)
|
||||
* Remove gDecompressionBuffer by @DizzyEggg in [#6029](https://github.com/rh-hideout/pokeemerald-expansion/pull/6029)
|
||||
* Cleaned up Trainer Slides, added automated Trainer Slide tests, add new Enemy Critical Hit Slide by @pkmnsnfrn and @AlexOn1ine, @hedara90, @AsparagusEduardo, @mrgriffin in [#6018](https://github.com/rh-hideout/pokeemerald-expansion/pull/6018)
|
||||
* If users created new entries in sTrainerSlides, they will need to be ported to the new system.
|
||||
* Terrain function standarization by @fdeblasio in [#6097](https://github.com/rh-hideout/pokeemerald-expansion/pull/6097)
|
||||
* Updated trainer pic tutorial by @fdeblasio in [#6049](https://github.com/rh-hideout/pokeemerald-expansion/pull/6049)
|
||||
* Remove UnusedBattleInit from battle_bg.c by @DizzyEggg in [#6116](https://github.com/rh-hideout/pokeemerald-expansion/pull/6116)
|
||||
* Consolidated contest opponent filters into gContestOpponents by @fdeblasio in [#6119](https://github.com/rh-hideout/pokeemerald-expansion/pull/6119)
|
||||
* Replace BattleStruct members quickClawRandom/quickDrawRandom with locals by @AlexOn1ine in [#6136](https://github.com/rh-hideout/pokeemerald-expansion/pull/6136)
|
||||
* Updated Trainer Ids used in Trainer Slides tests by @pkmnsnfrn and @AlexOn1ine found the original bug, @AsparagusEduardo confirmed it in [#6138](https://github.com/rh-hideout/pokeemerald-expansion/pull/6138)
|
||||
* Added Difficulty Fallback for Trainer Slides by @pkmnsnfrn in [#6088](https://github.com/rh-hideout/pokeemerald-expansion/pull/6088)
|
||||
* Clean up follow up for Simultaneous Reduction HP by @AlexOn1ine in [#6139](https://github.com/rh-hideout/pokeemerald-expansion/pull/6139)
|
||||
* Remove global sBattler_AI by @AlexOn1ine in [#6128](https://github.com/rh-hideout/pokeemerald-expansion/pull/6128)
|
||||
* Clarify MOVE_EFFECT_SLEEP sleep clause handling by @Pawkkie in [#6161](https://github.com/rh-hideout/pokeemerald-expansion/pull/6161)
|
||||
* Remove unused PainSplit scripting global by @AlexOn1ine in [#6164](https://github.com/rh-hideout/pokeemerald-expansion/pull/6164)
|
||||
* Don't use SeedRng some places where it isn't necessary by @tertu-m in [#6156](https://github.com/rh-hideout/pokeemerald-expansion/pull/6156)
|
||||
* Cleaned up party data access GetPartyBattlerData by @AsparagusEduardo in [#6172](https://github.com/rh-hideout/pokeemerald-expansion/pull/6172)
|
||||
* Changed two LocalRandom calls to new LocalRandom32 by @hedara90 in [#6173](https://github.com/rh-hideout/pokeemerald-expansion/pull/6173)
|
||||
* Cleanup some global battler ID usage by @ghoulslash in [#6181](https://github.com/rh-hideout/pokeemerald-expansion/pull/6181)
|
||||
* Clean up - Add ability args instead of calcing the ability again by @AlexOn1ine in [#6186](https://github.com/rh-hideout/pokeemerald-expansion/pull/6186)
|
||||
* CanAbilityX Function Cleanup by @ghoulslash in [#6183](https://github.com/rh-hideout/pokeemerald-expansion/pull/6183)
|
||||
* SwitchType enum to clean up GetMostSuitableMonToSwitchInto by @Pawkkie in [#6184](https://github.com/rh-hideout/pokeemerald-expansion/pull/6184)
|
||||
* Unify setreflect/setlightscreen and MOVE_EFFECT_REFLECT/LIGHT_SCREEN by @ghoulslash in [#6196](https://github.com/rh-hideout/pokeemerald-expansion/pull/6196)
|
||||
* Removed Trainer Slides footgun by @AsparagusEduardo in [#6205](https://github.com/rh-hideout/pokeemerald-expansion/pull/6205)
|
||||
* Fix typo in Nuzzle's description by @Bassoonian in [#6209](https://github.com/rh-hideout/pokeemerald-expansion/pull/6209)
|
||||
* Consolidate duplicate dialogue of nature girl in Battle Frontier by @fdeblasio in [#6195](https://github.com/rh-hideout/pokeemerald-expansion/pull/6195)
|
||||
* Fixed missing move encapsulation in upcoming by @AsparagusEduardo in [#6226](https://github.com/rh-hideout/pokeemerald-expansion/pull/6226)
|
||||
* Consolidated Frontier teams into battle_frontier_trainers.h by @fdeblasio in [#5892](https://github.com/rh-hideout/pokeemerald-expansion/pull/5892)
|
||||
* Add abstraction layer for battler positions by @AlexOn1ine in [#6212](https://github.com/rh-hideout/pokeemerald-expansion/pull/6212)
|
||||
* Revert unintentional change by @AlexOn1ine in [#6239](https://github.com/rh-hideout/pokeemerald-expansion/pull/6239)
|
||||
* Remove whitespace from trainers data file by @AsparagusEduardo in [#6234](https://github.com/rh-hideout/pokeemerald-expansion/pull/6234)
|
||||
* Replaced hardcoded numbers in DexNav with variables by @fdeblasio in [#6241](https://github.com/rh-hideout/pokeemerald-expansion/pull/6241)
|
||||
* fix for battle ui for add to party menu (#6229) by @fakuzatsu in [#6240](https://github.com/rh-hideout/pokeemerald-expansion/pull/6240)
|
||||
* Changed bit order for follower graphicsId creation by @hedara90 in [#6249](https://github.com/rh-hideout/pokeemerald-expansion/pull/6249)
|
||||
* Minor Clean up for CanAbilityX. Follow up for #6183 by @AlexOn1ine in [#6252](https://github.com/rh-hideout/pokeemerald-expansion/pull/6252)
|
||||
* Moved sValidApprenticeMove into gMovesInfo by @fdeblasio in [#6254](https://github.com/rh-hideout/pokeemerald-expansion/pull/6254)
|
||||
* Use more accurate count in MovesInfo by @AlexOn1ine in [#6260](https://github.com/rh-hideout/pokeemerald-expansion/pull/6260)
|
||||
* Fix Extra `task->tState++` and `break` in `Task_DrawFieldMessageBox` by @Deokishisu in [#6261](https://github.com/rh-hideout/pokeemerald-expansion/pull/6261)
|
||||
* Expand usage of IsBattlerAlly (rename from IsAlly) by @AlexOn1ine in [#6251](https://github.com/rh-hideout/pokeemerald-expansion/pull/6251)
|
||||
* Rename SetPhotonGeyser to a more general use and clean up by @AlexOn1ine in [#6272](https://github.com/rh-hideout/pokeemerald-expansion/pull/6272)
|
||||
* Fix padding amount in MoveInfo by @AlexOn1ine in [#6307](https://github.com/rh-hideout/pokeemerald-expansion/pull/6307)
|
||||
* Refactor testing flags and vars to not conflict with user ones by @hedara90 in [#6301](https://github.com/rh-hideout/pokeemerald-expansion/pull/6301)
|
||||
* Clean up leftover from simu hp reduction development by @AlexOn1ine in [#6323](https://github.com/rh-hideout/pokeemerald-expansion/pull/6323)
|
||||
* Remove pursuitSwitchByMove and additional if statement by @PhallenTree in [#6326](https://github.com/rh-hideout/pokeemerald-expansion/pull/6326)
|
||||
|
||||
## 🧪 Test Runner 🧪
|
||||
### Changed
|
||||
* New Ally Switch test fails on CI by @AlexOn1ine in [#5896](https://github.com/rh-hideout/pokeemerald-expansion/pull/5896)
|
||||
* Added final Sparkling Aria+Shield Dust interaction test by @hedara90 in [#5923](https://github.com/rh-hideout/pokeemerald-expansion/pull/5923)
|
||||
* Converted 2 various to callnative by @AsparagusEduardo in [#5950](https://github.com/rh-hideout/pokeemerald-expansion/pull/5950)
|
||||
- Removed `VARIOUS_SWAP_SIDE_STATUSES` and `VARIOUS_SWAP_STATS`.
|
||||
* Cleaned up Trainer Slides, added automated Trainer Slide tests, add new Enemy Critical Hit Slide by @pkmnsnfrn and @AlexOn1ine, @hedara90, @AsparagusEduardo, @mrgriffin in [#6018](https://github.com/rh-hideout/pokeemerald-expansion/pull/6018)
|
||||
* If users created new entries in sTrainerSlides, they will need to be ported to the new system.
|
||||
* Tests for Big Pecks by @hedara90 in [#6158](https://github.com/rh-hideout/pokeemerald-expansion/pull/6158)
|
||||
* Water Compaction tests by @hedara90 in [#6159](https://github.com/rh-hideout/pokeemerald-expansion/pull/6159)
|
||||
* Wrote tests for Electrify by @hedara90 in [#6179](https://github.com/rh-hideout/pokeemerald-expansion/pull/6179)
|
||||
* Sheer Force Test Fixes by @ghoulslash in [#6198](https://github.com/rh-hideout/pokeemerald-expansion/pull/6198)
|
||||
* Minor Terrain Seed Test Improvement by @ghoulslash in [#6207](https://github.com/rh-hideout/pokeemerald-expansion/pull/6207)
|
||||
* Fix Liquid Ooze + Leech Seed Test by @ghoulslash in [#6217](https://github.com/rh-hideout/pokeemerald-expansion/pull/6217)
|
||||
* Prevented fanfares from playing in headless mode by @pkmnsnfrn and @hedara90, @AsparagusEduardo in [#6219](https://github.com/rh-hideout/pokeemerald-expansion/pull/6219)
|
||||
* Added test support for 5 battle configs by @AsparagusEduardo in [#5914](https://github.com/rh-hideout/pokeemerald-expansion/pull/5914)
|
||||
* Added missing Dream Eater and Reflect Type tests by @AsparagusEduardo in [#6245](https://github.com/rh-hideout/pokeemerald-expansion/pull/6245)
|
||||
* Refactor testing flags and vars to not conflict with user ones by @hedara90 in [#6301](https://github.com/rh-hideout/pokeemerald-expansion/pull/6301)
|
||||
|
||||
### Fixed
|
||||
* Fix ASSUMPTIONS not working by @DizzyEggg in [#5869](https://github.com/rh-hideout/pokeemerald-expansion/pull/5869)
|
||||
* Updated Trainer Ids used in Trainer Slides tests by @pkmnsnfrn and @AlexOn1ine found the original bug, @AsparagusEduardo confirmed it in [#6138](https://github.com/rh-hideout/pokeemerald-expansion/pull/6138)
|
||||
* Adjusted G-Max Depletion test by @AsparagusEduardo and @AlexOn1ine for being a cool dude being patient with me during the PR. in [#6201](https://github.com/rh-hideout/pokeemerald-expansion/pull/6201)
|
||||
* Do not add TRAINER_FLAG_DOUBLE_BATTLE to recorded battles by @mrgriffin in [#6285](https://github.com/rh-hideout/pokeemerald-expansion/pull/6285)
|
||||
* Fixes Brick Break/Psychic Fangs/Raging Bull breaking screens if target is immune by @PhallenTree in [#6308](https://github.com/rh-hideout/pokeemerald-expansion/pull/6308)
|
||||
|
||||
## 📚 Documentation 📚
|
||||
* Updating install instructions by @hedara90 in [#5610](https://github.com/rh-hideout/pokeemerald-expansion/pull/5610)
|
||||
- Install instructions have been moved into individual files under `docs/install/ `
|
||||
* Documentation for DisableStruct by @AlexOn1ine in [#6066](https://github.com/rh-hideout/pokeemerald-expansion/pull/6066)
|
||||
* Cleaned up Trainer Slides, added automated Trainer Slide tests, add new Enemy Critical Hit Slide by @pkmnsnfrn and @AlexOn1ine, @hedara90, @AsparagusEduardo, @mrgriffin in [#6018](https://github.com/rh-hideout/pokeemerald-expansion/pull/6018)
|
||||
* If users created new entries in sTrainerSlides, they will need to be ported to the new system.
|
||||
* Updated trainer pic tutorial by @fdeblasio in [#6049](https://github.com/rh-hideout/pokeemerald-expansion/pull/6049)
|
||||
* Update how_to_testing_system.md by @hedara90 in [#6281](https://github.com/rh-hideout/pokeemerald-expansion/pull/6281)
|
||||
|
||||
## 📦 Branch Synchronisation 📦
|
||||
### pret
|
||||
* 11th of February in [#6231](https://github.com/rh-hideout/pokeemerald-expansion/pull/6231)
|
||||
* Replace easy_chat alphabetialOrder magic numbers with EC_INDEX values by @rayrobdod in [pret#2096](https://github.com/pret/pokeemerald/pull/2096)
|
||||
* Fixed switchout bug in multibattle where order of mons gets messed up by @shachar700 in [pret#2099](https://github.com/pret/pokeemerald/pull/2099)
|
||||
|
||||
## New Contributors
|
||||
* @khbsd made their first contribution in [#5679](https://github.com/rh-hideout/pokeemerald-expansion/pull/5679)
|
||||
* @ExMingYan made their first contribution in [#6220](https://github.com/rh-hideout/pokeemerald-expansion/pull/6220)
|
||||
* @Deokishisu made their first contribution in [#6261](https://github.com/rh-hideout/pokeemerald-expansion/pull/6261)
|
||||
|
||||
**Full Changelog**: https://github.com/rh-hideout/pokeemerald-expansion/compare/expansion/1.10.2...test
|
||||
|
||||
|
||||
<!--Last PR: 6339-->
|
||||
<!--Used to keep track of the last PR merged in case new ones come in before the changelog is done.-->
|
||||
115
docs/changelogs/1.11.x/1.11.1.md
Normal file
|
|
@ -0,0 +1,115 @@
|
|||
```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.1
|
||||
`.
|
||||
```
|
||||
|
||||
|
||||
## 🧬 General 🧬
|
||||
### Added
|
||||
* Added workflow for labels check by @hedara90 in [#6488](https://github.com/rh-hideout/pokeemerald-expansion/pull/6488)
|
||||
|
||||
### Changed
|
||||
* metaprogram.h without global.h by @mrgriffin in [#6469](https://github.com/rh-hideout/pokeemerald-expansion/pull/6469)
|
||||
* Rename removelishtscreenreflect to removescreens by @AlexOn1ine in [#6495](https://github.com/rh-hideout/pokeemerald-expansion/pull/6495)
|
||||
|
||||
### Fixed
|
||||
* Fix Melmetal's weight by @kittenchilly in [#6382](https://github.com/rh-hideout/pokeemerald-expansion/pull/6382)
|
||||
* B_FAST_INTRO_PKMN_TEXT fix by @hedara90 in [#6395](https://github.com/rh-hideout/pokeemerald-expansion/pull/6395)
|
||||
* remove/replace IsAlly leftovers by @cawtds in [#6399](https://github.com/rh-hideout/pokeemerald-expansion/pull/6399)
|
||||
* Increase dex no digits from 3 to 4 by @PCG06 in [#6484](https://github.com/rh-hideout/pokeemerald-expansion/pull/6484)
|
||||
|
||||
## 🗺️ Overworld 🗺️
|
||||
### Changed
|
||||
* Replace Incorrect Slow Stairs Movement with Correct One by @Deokishisu in [#6275](https://github.com/rh-hideout/pokeemerald-expansion/pull/6275)
|
||||
|
||||
### Fixed
|
||||
* Fix compile errors with OW_BATTLE_ONLY_FORMS set to FALSE by @hedara90 in [#6400](https://github.com/rh-hideout/pokeemerald-expansion/pull/6400)
|
||||
* Include Missed `GetInteractedMetatileScript` Entries for Mart & Center Signs by @Deokishisu in [#6269](https://github.com/rh-hideout/pokeemerald-expansion/pull/6269)
|
||||
* Fix DexNav search level by @cawtds in [#6421](https://github.com/rh-hideout/pokeemerald-expansion/pull/6421)
|
||||
* Hide in-battle types from Union Room trade request by @aronson in [#6489](https://github.com/rh-hideout/pokeemerald-expansion/pull/6489)
|
||||
|
||||
## 🐉 Pokémon 🐉
|
||||
### Fixed
|
||||
* Fixed Zacian/Zamazenta learning Iron head while already knowing by @hedara90, @wiz1989 reported the issue, in [#6365](https://github.com/rh-hideout/pokeemerald-expansion/pull/6365)
|
||||
* Fix roamers having 0 hp on repeat encounters by @danaYatsuta in [#6366](https://github.com/rh-hideout/pokeemerald-expansion/pull/6366)
|
||||
* Fixed unfusion of traded materials by @hedara90, @mrgriffin found the issue, in [#6415](https://github.com/rh-hideout/pokeemerald-expansion/pull/6415)
|
||||
|
||||
## ⚔️ Battle General ⚔️
|
||||
### Changed
|
||||
* Fix Red Card overwriting gBattlerAttacker by @ghoulslash in [#6376](https://github.com/rh-hideout/pokeemerald-expansion/pull/6376)
|
||||
* Fixes Magic Coat message when move is bounced back by @AlexOn1ine in [#6419](https://github.com/rh-hideout/pokeemerald-expansion/pull/6419)
|
||||
|
||||
### Fixed
|
||||
* Reorder Dancer activation by @PhallenTree in [#6379](https://github.com/rh-hideout/pokeemerald-expansion/pull/6379)
|
||||
* Fixes crash damage move against absorbing abilities by @AlexOn1ine in [#6361](https://github.com/rh-hideout/pokeemerald-expansion/pull/6361)
|
||||
* Fixes gimmick icon flying off the screen by @PhallenTree in [#6401](https://github.com/rh-hideout/pokeemerald-expansion/pull/6401)
|
||||
* Fixed Parental Bond with two-turn attacks by @hedara90 in [#6408](https://github.com/rh-hideout/pokeemerald-expansion/pull/6408)
|
||||
* Wrong argument usage in `CalcCritChanceStage` by @AlexOn1ine in [#6429](https://github.com/rh-hideout/pokeemerald-expansion/pull/6429)
|
||||
* Fixes Neutralizing Gas Exits, Weather Abilities and Terrain Effects order by @PhallenTree in [#6435](https://github.com/rh-hideout/pokeemerald-expansion/pull/6435)
|
||||
* Fixes hazards not respecting tera types by @AlexOn1ine in [#6431](https://github.com/rh-hideout/pokeemerald-expansion/pull/6431)
|
||||
* Fixes dynamax reversion when ejected out + anim fix by @AlexOn1ine in [#6416](https://github.com/rh-hideout/pokeemerald-expansion/pull/6416)
|
||||
* Fixes negative priority being blocked by dazzling abilities by @AlexOn1ine in [#6433](https://github.com/rh-hideout/pokeemerald-expansion/pull/6433)
|
||||
* Fixes Cotton Spore failing if one of the targets blocks it by @AlexOn1ine in [#6418](https://github.com/rh-hideout/pokeemerald-expansion/pull/6418)
|
||||
* Fixes Toxic Spikes Absorbed message by @PhallenTree in [#6448](https://github.com/rh-hideout/pokeemerald-expansion/pull/6448)
|
||||
* Fixes Cheek Pouch mutating damage by @AlexOn1ine in [#6466](https://github.com/rh-hideout/pokeemerald-expansion/pull/6466)
|
||||
* Fixes choice move locking at the wrong time by @AlexOn1ine in [#6467](https://github.com/rh-hideout/pokeemerald-expansion/pull/6467)
|
||||
* Fixes protective pads against Protects secondary effects by @AlexOn1ine in [#6474](https://github.com/rh-hideout/pokeemerald-expansion/pull/6474)
|
||||
* Fixes clear body type effect and clear amulet against protect effects by @AlexOn1ine in [#6482](https://github.com/rh-hideout/pokeemerald-expansion/pull/6482)
|
||||
* Fixes Aftermath ability popup message by @AlexOn1ine in [#6491](https://github.com/rh-hideout/pokeemerald-expansion/pull/6491)
|
||||
* Fixes Emergency Exit and Eject Pack by @AlexOn1ine in [#6459](https://github.com/rh-hideout/pokeemerald-expansion/pull/6459)
|
||||
* Fixes Hospitality not being blocked by Heal Block by @AlexOn1ine in [#6494](https://github.com/rh-hideout/pokeemerald-expansion/pull/6494)
|
||||
* Fixes timesGotHit not increasing on forced switch out by @AlexOn1ine in [#6493](https://github.com/rh-hideout/pokeemerald-expansion/pull/6493)
|
||||
* Fixes Destiny Bond against Dynamax no failing by @AlexOn1ine in [#6501](https://github.com/rh-hideout/pokeemerald-expansion/pull/6501)
|
||||
|
||||
## 🤹 Moves 🤹
|
||||
### Fixed
|
||||
* Fixed Ivy Cudgel types with type changes by @hedara90 in [#6369](https://github.com/rh-hideout/pokeemerald-expansion/pull/6369)
|
||||
* Adds move description battle config by @AlexOn1ine in [#6364](https://github.com/rh-hideout/pokeemerald-expansion/pull/6364)
|
||||
* Fix Jet Punch in isolated tests by @hedara90 in [#6461](https://github.com/rh-hideout/pokeemerald-expansion/pull/6461)
|
||||
* Sucker punch vs struggle by @hedara90 in [#6475](https://github.com/rh-hideout/pokeemerald-expansion/pull/6475)
|
||||
|
||||
## 🤖 Battle AI 🤖
|
||||
### Changed
|
||||
* Update Battle Debug menu with new AI flags by @kittenchilly in [#6444](https://github.com/rh-hideout/pokeemerald-expansion/pull/6444)
|
||||
|
||||
### Fixed
|
||||
* Fixed AI_FLAG_CHECK_VIABILITY changing the toxic counter in some cases by @hedara90, @iriv24 discovered the issue, in [#6402](https://github.com/rh-hideout/pokeemerald-expansion/pull/6402)
|
||||
* Fix Focus Sash being considered in switch AI's hits to KO calcs by @Pawkkie in [#6436](https://github.com/rh-hideout/pokeemerald-expansion/pull/6436)
|
||||
* AI gimmick check changed from checking trainer data to a BattleStruct field by @hedara90 in [#6478](https://github.com/rh-hideout/pokeemerald-expansion/pull/6478)
|
||||
* Fix hit escape ace mon switching by @Pawkkie and @wiz1989, @AlexOn1ine in [#6498](https://github.com/rh-hideout/pokeemerald-expansion/pull/6498)
|
||||
|
||||
## 🧹 Other Cleanup 🧹
|
||||
* Update AI_TryTo2HKO comment by @Pawkkie in [#6349](https://github.com/rh-hideout/pokeemerald-expansion/pull/6349)
|
||||
* Fixing grammar of Berry Tree strings by @surskitty in [#6355](https://github.com/rh-hideout/pokeemerald-expansion/pull/6355)
|
||||
- Berry trees berries are no longer erroneously plural.
|
||||
* Move category test cleanup by @hedara90 in [#6447](https://github.com/rh-hideout/pokeemerald-expansion/pull/6447)
|
||||
* Fixes Magic Coat message when move is bounced back by @AlexOn1ine in [#6419](https://github.com/rh-hideout/pokeemerald-expansion/pull/6419)
|
||||
* Update Battle Debug menu with new AI flags by @kittenchilly in [#6444](https://github.com/rh-hideout/pokeemerald-expansion/pull/6444)
|
||||
* Rename removelishtscreenreflect to removescreens by @AlexOn1ine in [#6495](https://github.com/rh-hideout/pokeemerald-expansion/pull/6495)
|
||||
|
||||
## 🧪 Test Runner 🧪
|
||||
### Changed
|
||||
* Fix Red Card overwriting gBattlerAttacker by @ghoulslash in [#6376](https://github.com/rh-hideout/pokeemerald-expansion/pull/6376)
|
||||
* Move category test cleanup by @hedara90 in [#6447](https://github.com/rh-hideout/pokeemerald-expansion/pull/6447)
|
||||
* Changed KNOWN_FAILING test by @hedara90 in [#6492](https://github.com/rh-hideout/pokeemerald-expansion/pull/6492)
|
||||
|
||||
### Fixed
|
||||
* Fixes Known Failing Mold Breaker Sleep Clause test by @PhallenTree in [#6434](https://github.com/rh-hideout/pokeemerald-expansion/pull/6434)
|
||||
* Made memory integrity checks run betweeen PARAMETRIZE runs by @hedara90 and @mrgriffin in [#6462](https://github.com/rh-hideout/pokeemerald-expansion/pull/6462)
|
||||
|
||||
## 📚 Documentation 📚
|
||||
* Fixed a missing ) in trainers.party comment block. by @RubyRaven6 in [#6367](https://github.com/rh-hideout/pokeemerald-expansion/pull/6367)
|
||||
* Update README.md for contest src link by @lwelyk in [#6375](https://github.com/rh-hideout/pokeemerald-expansion/pull/6375)
|
||||
|
||||
## New Contributors
|
||||
* @RubyRaven6 made their first contribution in [#6367](https://github.com/rh-hideout/pokeemerald-expansion/pull/6367)
|
||||
* @lwelyk made their first contribution in [#6375](https://github.com/rh-hideout/pokeemerald-expansion/pull/6375)
|
||||
* @danaYatsuta made their first contribution in [#6366](https://github.com/rh-hideout/pokeemerald-expansion/pull/6366)
|
||||
|
||||
**Full Changelog**: https://github.com/rh-hideout/pokeemerald-expansion/compare/expansion/1.11.0...expansion/1.11.1
|
||||
|
||||
|
||||
<!--Last PR: 6501-->
|
||||
<!--Used to keep track of the last PR merged in case new ones come in before the changelog is done.-->
|
||||
66
docs/team_procedures/merge_checklist.md
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
# Document Purpose
|
||||
|
||||
This document is a guide for maintainers to account for all the reccomended steps before merging in a pull request.
|
||||
<!-- Here's an optional markdown checklist version that you can post in your reviews. -->
|
||||
<!-- https://files.catbox.moe/nqxvnl.md -->
|
||||
|
||||
# Checklist
|
||||
|
||||
## Is the branch's theoretical functionality in scope?
|
||||
If you're not sure if a branch's functionality is [in scope](docs/team_procedures/scope.md), start a conversation on Discord to resolve.
|
||||
|
||||
## Does the branch successfully compile?
|
||||
From `make clean`, the branch should locally compile.
|
||||
|
||||
## Do all CI tests pass?
|
||||
Contributors are asked to make sure tests pass locally, but maintainers should at least wait for the CI to pass before merging.
|
||||
|
||||
## Have you verified that the functionality works in game without any problems?
|
||||
If functionality cannot be verified with an automated test, proof of an in game test is required. Do not be afraid to reach out to the contributor or the community to make sure something works in game as it should.
|
||||
|
||||
## If the branch ports behavior from another Pokémon game, have you verified that the behavior functions as faithfully as possible?
|
||||
We have always tried to make sure we can mimic the original functionality as closely as possible so as to avoid confusion with users and players. Do not be afraid to ask the contributor / community for proof if you cannot personally verify.
|
||||
|
||||
## If the branch is a popular feature within the community with an established feature branch, is this using that established branch as a base?
|
||||
There are situations where this should and should not happen, and should be discussed with maintainers on a case by case basis.
|
||||
|
||||
## If this branch changes a function that is expected to be modified by users, is there a migration script?
|
||||
Not everything needs a migration script - if you're unsure, start a discussion.
|
||||
|
||||
## Should new functionality introduced by this branch be gated behind a config?
|
||||
We don't have a strict definition of when configs should be used, but you can start with
|
||||
|
||||
> Why SHOULDN'T this be a config?
|
||||
|
||||
## Are tests written for everything that can be tested?
|
||||
If you're not sure if something CAN be tested, start a discussion. Some contributors may not be capable of writing tests - we should guide them in #expansion-tests to do so.
|
||||
|
||||
If any new tests are `KNOWN_FAILING`, issues should be opened describing each of the `KNOWN_FAILING` tests and our understanding of why they fail.
|
||||
|
||||
## Does the branch meet our [config philosophy](docs/styleguide#config-philosophy)?
|
||||
|
||||
## Does the branch meet our [saves philosophy](docs/styleguide#saves-philosophy)?
|
||||
|
||||
## Does the submitted code follow the [styleguide](docs/styleguide)?
|
||||
This applies to code that comes from other branches or games.
|
||||
|
||||
## Is the pull request appropriately labeled?
|
||||
Without labels, the CHANGELOG will not be properly formatted. For specifically the `bugfix` label, an additional label, detailing what area the bug exists in is required.
|
||||
|
||||
## Is `pokeemerald-expansion` free from a merge freeze?
|
||||
Our [release schedule](docs/team_procedures/schedule.md) prevents us from merging Big Features and non-bugfixes within certain dates close to a release. Please use `/release` in the RHH Discord to clarify when these are occuring.
|
||||
|
||||
# Merging
|
||||
|
||||
When a feature has passed all of the items on the checklist, it is ready to be merged. From GitHub's interface, there are three different options for merging:
|
||||
|
||||
## Squash and merge
|
||||
This should be used for all PRs _except_ when merging from either:
|
||||
* a publicly available feature branch from by the community OR
|
||||
* `upcoming`, `master` or `pret/pokeemerald`.
|
||||
|
||||
## Create a merge commit
|
||||
When the branch uses a publicly available feature branch from by the community, use "Create a merge commit" to preserve history for users.
|
||||
|
||||
## Rebase and merge
|
||||
We do not use this ever.
|
||||
|
|
@ -54,6 +54,7 @@ Pull Requests that fall into this category are not in scope by default and shoul
|
|||
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
|
||||
|
||||
## Workflow for Proposed Feature Scope Discussion
|
||||
For the contributor:
|
||||
|
|
|
|||
19
graphics/battle_anims/backgrounds/rock_afternoon.pal
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
JASC-PAL
|
||||
0100
|
||||
16
|
||||
0 0 255
|
||||
246 189 49
|
||||
246 172 41
|
||||
238 156 32
|
||||
222 131 24
|
||||
205 115 8
|
||||
246 172 41
|
||||
246 172 41
|
||||
246 172 41
|
||||
246 172 41
|
||||
167 81 31
|
||||
139 74 49
|
||||
123 65 32
|
||||
98 49 32
|
||||
82 32 16
|
||||
74 24 8
|
||||
19
graphics/battle_anims/backgrounds/rock_day.pal
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
JASC-PAL
|
||||
0100
|
||||
16
|
||||
0 0 255
|
||||
129 196 237
|
||||
152 208 243
|
||||
174 221 250
|
||||
240 186 88
|
||||
232 144 39
|
||||
152 208 243
|
||||
152 208 243
|
||||
255 255 255
|
||||
255 241 188
|
||||
212 111 53
|
||||
227 148 56
|
||||
197 101 18
|
||||
163 70 36
|
||||
128 57 35
|
||||
113 41 18
|
||||
BIN
graphics/battle_anims/backgrounds/rock_field.bin
Normal file
BIN
graphics/battle_anims/backgrounds/rock_field.png
Normal file
|
After Width: | Height: | Size: 2.8 KiB |
19
graphics/battle_anims/backgrounds/rock_night.pal
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
JASC-PAL
|
||||
0100
|
||||
16
|
||||
0 0 255
|
||||
38 17 60
|
||||
22 29 82
|
||||
20 43 90
|
||||
91 97 155
|
||||
47 50 120
|
||||
255 255 255
|
||||
243 237 195
|
||||
22 29 82
|
||||
22 29 82
|
||||
43 29 98
|
||||
49 25 82
|
||||
40 5 57
|
||||
53 41 103
|
||||
58 65 118
|
||||
27 16 70
|
||||
|
|
@ -1,19 +0,0 @@
|
|||
JASC-PAL
|
||||
0100
|
||||
16
|
||||
0 0 0
|
||||
246 230 180
|
||||
255 222 139
|
||||
255 230 123
|
||||
255 222 106
|
||||
255 213 98
|
||||
255 197 57
|
||||
255 180 32
|
||||
255 172 8
|
||||
255 156 8
|
||||
230 131 8
|
||||
222 123 8
|
||||
205 106 8
|
||||
205 90 8
|
||||
197 74 8
|
||||
189 57 8
|
||||
|
|
@ -1,19 +0,0 @@
|
|||
JASC-PAL
|
||||
0100
|
||||
16
|
||||
0 0 0
|
||||
211 216 222
|
||||
198 208 221
|
||||
184 199 218
|
||||
170 191 215
|
||||
156 181 212
|
||||
142 172 207
|
||||
128 162 203
|
||||
117 154 198
|
||||
104 147 199
|
||||
101 141 189
|
||||
89 137 194
|
||||
82 127 179
|
||||
77 128 190
|
||||
63 117 184
|
||||
52 106 169
|
||||
|
Before Width: | Height: | Size: 7.3 KiB |
|
|
@ -1,19 +0,0 @@
|
|||
JASC-PAL
|
||||
0100
|
||||
16
|
||||
0 0 0
|
||||
139 90 222
|
||||
131 65 230
|
||||
106 41 230
|
||||
98 32 230
|
||||
98 16 255
|
||||
65 8 255
|
||||
49 8 205
|
||||
41 8 180
|
||||
24 0 172
|
||||
24 0 156
|
||||
32 0 148
|
||||
32 0 131
|
||||
32 0 115
|
||||
24 0 106
|
||||
24 0 98
|
||||
|
Before Width: | Height: | Size: 211 B After Width: | Height: | Size: 178 B |
|
Before Width: | Height: | Size: 4.8 KiB After Width: | Height: | Size: 568 B |
|
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 560 B |
|
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 567 B |
|
Before Width: | Height: | Size: 268 B After Width: | Height: | Size: 184 B |
|
Before Width: | Height: | Size: 4.8 KiB After Width: | Height: | Size: 555 B |
|
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 570 B |
|
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 563 B |
|
Before Width: | Height: | Size: 4.8 KiB After Width: | Height: | Size: 565 B |
|
Before Width: | Height: | Size: 4.8 KiB After Width: | Height: | Size: 568 B |
|
Before Width: | Height: | Size: 4.8 KiB After Width: | Height: | Size: 566 B |
|
Before Width: | Height: | Size: 4.8 KiB After Width: | Height: | Size: 557 B |
|
Before Width: | Height: | Size: 4.8 KiB After Width: | Height: | Size: 551 B |
|
Before Width: | Height: | Size: 4.8 KiB After Width: | Height: | Size: 558 B |
|
Before Width: | Height: | Size: 365 B After Width: | Height: | Size: 218 B |
|
Before Width: | Height: | Size: 4.8 KiB After Width: | Height: | Size: 559 B |
|
Before Width: | Height: | Size: 209 B After Width: | Height: | Size: 177 B |
|
Before Width: | Height: | Size: 4.8 KiB After Width: | Height: | Size: 566 B |
|
Before Width: | Height: | Size: 5.0 KiB After Width: | Height: | Size: 563 B |
|
Before Width: | Height: | Size: 4.8 KiB After Width: | Height: | Size: 563 B |
|
Before Width: | Height: | Size: 4.8 KiB After Width: | Height: | Size: 555 B |
|
Before Width: | Height: | Size: 5.3 KiB After Width: | Height: | Size: 582 B |
|
Before Width: | Height: | Size: 4.8 KiB After Width: | Height: | Size: 560 B |
100
include/battle.h
|
|
@ -130,20 +130,15 @@ struct DisableStruct
|
|||
u8 boosterEnergyActivates:1;
|
||||
u8 roostActive:1;
|
||||
u8 unburdenActive:1;
|
||||
u8 startEmergencyExit:1;
|
||||
u8 neutralizingGas:1;
|
||||
u8 iceFaceActivationPrevention:1; // fixes hit escape move edge case
|
||||
u8 padding:2;
|
||||
u8 padding:3;
|
||||
};
|
||||
|
||||
// Fully Cleared each turn after end turn effects are done. A few things are cleared before end turn effects
|
||||
struct ProtectStruct
|
||||
{
|
||||
u32 protected:1;
|
||||
u32 spikyShielded:1;
|
||||
u32 kingsShielded:1;
|
||||
u32 banefulBunkered:1;
|
||||
u32 obstructed:1;
|
||||
u32 protected:7; // 126 protect options
|
||||
u32 endured:1;
|
||||
u32 noValidMoves:1;
|
||||
u32 helpingHand:1;
|
||||
|
|
@ -168,9 +163,8 @@ struct ProtectStruct
|
|||
u32 usedThroatChopPreventedMove:1;
|
||||
u32 statRaised:1;
|
||||
u32 usedCustapBerry:1; // also quick claw
|
||||
u32 touchedProtectLike:1;
|
||||
u32 unused:1;
|
||||
// End of 32-bit bitfield
|
||||
u16 touchedProtectLike:1;
|
||||
u16 disableEjectPack:1;
|
||||
u16 statFell:1;
|
||||
u16 pranksterElevated:1;
|
||||
|
|
@ -178,16 +172,13 @@ struct ProtectStruct
|
|||
u16 beakBlastCharge:1;
|
||||
u16 quash:1;
|
||||
u16 shellTrap:1;
|
||||
u16 maxGuarded:1;
|
||||
u16 silkTrapped:1;
|
||||
u16 burningBulwarked:1;
|
||||
u16 eatMirrorHerb:1;
|
||||
u16 activateOpportunist:2; // 2 - to copy stats. 1 - stats copied (do not repeat). 0 - no stats to copy
|
||||
u16 usedAllySwitch:1;
|
||||
u16 padding:2;
|
||||
u16 padding:4;
|
||||
// End of 16-bit bitfield
|
||||
u32 physicalDmg;
|
||||
u32 specialDmg;
|
||||
u16 physicalDmg;
|
||||
u16 specialDmg;
|
||||
u8 physicalBattlerId;
|
||||
u8 specialBattlerId;
|
||||
};
|
||||
|
|
@ -197,24 +188,22 @@ struct SpecialStatus
|
|||
{
|
||||
s32 physicalDmg;
|
||||
s32 specialDmg;
|
||||
u8 physicalBattlerId;
|
||||
u8 specialBattlerId;
|
||||
u8 changedStatsBattlerId; // Battler that was responsible for the latest stat change. Can be self.
|
||||
u8 statLowered:1;
|
||||
u8 lightningRodRedirected:1;
|
||||
u8 restoredBattlerSprite: 1;
|
||||
u8 faintedHasReplacement:1;
|
||||
u8 focusBanded:1;
|
||||
u8 focusSashed:1;
|
||||
u8 emergencyExited:1;
|
||||
u8 afterYou:1;
|
||||
// End of byte
|
||||
u8 sturdied:1;
|
||||
u8 enduredDamage:1;
|
||||
u8 stormDrainRedirected:1;
|
||||
// End of byte
|
||||
u8 switchInAbilityDone:1;
|
||||
u8 switchInItemDone:1;
|
||||
u8 instructedChosenTarget:3;
|
||||
u8 berryReduced:1;
|
||||
u8 announceNeutralizingGas:1; // See Cmd_switchineffects
|
||||
u8 neutralizingGasRemoved:1; // See VARIOUS_TRY_END_NEUTRALIZING_GAS
|
||||
// End of byte
|
||||
u8 gemParam;
|
||||
// End of byte
|
||||
|
|
@ -222,19 +211,15 @@ struct SpecialStatus
|
|||
u8 rototillerAffected:1; // to be affected by rototiller
|
||||
u8 parentalBondState:2;
|
||||
u8 multiHitOn:1;
|
||||
u8 announceNeutralizingGas:1; // See Cmd_switchineffects
|
||||
u8 neutralizingGasRemoved:1; // See VARIOUS_TRY_END_NEUTRALIZING_GAS
|
||||
u8 affectionEndured:1;
|
||||
// End of byte
|
||||
u8 dancerUsedMove:1;
|
||||
u8 dancerOriginalTarget:3;
|
||||
u8 preventLifeOrbDamage:1; // So that Life Orb doesn't activate various effects.
|
||||
u8 distortedTypeMatchups:1;
|
||||
u8 teraShellAbilityDone:1;
|
||||
u8 criticalHit:1;
|
||||
// End of byte
|
||||
u8 enduredDamage:1;
|
||||
u8 padding:7;
|
||||
u8 dancerUsedMove:1;
|
||||
u8 dancerOriginalTarget:3;
|
||||
u8 preventLifeOrbDamage:1; // So that Life Orb doesn't activate various effects.
|
||||
u8 unused:3;
|
||||
// End of byte
|
||||
};
|
||||
|
||||
struct SideTimer
|
||||
|
|
@ -335,8 +320,9 @@ struct SwitchinCandidate
|
|||
|
||||
struct SimulatedDamage
|
||||
{
|
||||
s32 expected;
|
||||
s32 minimum;
|
||||
u16 minimum;
|
||||
u16 median;
|
||||
u16 maximum;
|
||||
};
|
||||
|
||||
// Ai Data used when deciding which move to use, computed only once before each turn's start.
|
||||
|
|
@ -627,7 +613,7 @@ struct BattlerState
|
|||
u8 targetsDone[MAX_BATTLERS_COUNT];
|
||||
|
||||
u32 commandingDondozo:1;
|
||||
u32 absentBattlerFlags:1;
|
||||
u32 absent:1;
|
||||
u32 focusPunchBattlers:1;
|
||||
u32 multipleSwitchInBattlers:1;
|
||||
u32 alreadyStatusedMoveAttempt:1; // For example when using Thunder Wave on an already paralyzed Pokémon.
|
||||
|
|
@ -690,7 +676,6 @@ struct BattleStruct
|
|||
u8 stateIdAfterSelScript[MAX_BATTLERS_COUNT];
|
||||
u8 prevSelectedPartySlot;
|
||||
u8 stringMoveType;
|
||||
u8 absentBattlerFlags;
|
||||
u8 palaceFlags; // First 4 bits are "is <= 50% HP and not asleep" for each battler, last 4 bits are selected moves to pass to AI
|
||||
u8 field_93; // related to choosing pokemon?
|
||||
u8 wallyBattleState;
|
||||
|
|
@ -728,7 +713,7 @@ struct BattleStruct
|
|||
u8 startingStatusDone:1;
|
||||
u8 terrainDone:1;
|
||||
u8 overworldWeatherDone:1;
|
||||
u8 obedienceResult:3;
|
||||
u8 unused:3;
|
||||
u8 isAtkCancelerForCalledMove:1; // Certain cases in atk canceler should only be checked once, when the original move is called, however others need to be checked the twice.
|
||||
u8 friskedAbility:1; // If identifies two mons, show the ability pop-up only once.
|
||||
u8 fickleBeamBoosted:1;
|
||||
|
|
@ -764,9 +749,6 @@ struct BattleStruct
|
|||
u16 tracedAbility[MAX_BATTLERS_COUNT];
|
||||
u16 hpBefore[MAX_BATTLERS_COUNT]; // Hp of battlers before using a move. For Berserk and Anger Shell.
|
||||
struct Illusion illusion[MAX_BATTLERS_COUNT];
|
||||
s32 aiFinalScore[MAX_BATTLERS_COUNT][MAX_BATTLERS_COUNT][MAX_MON_MOVES]; // AI, target, moves to make debugging easier
|
||||
u8 aiMoveOrAction[MAX_BATTLERS_COUNT];
|
||||
u8 aiChosenTarget[MAX_BATTLERS_COUNT];
|
||||
u8 soulheartBattlerId;
|
||||
u8 friskedBattler; // Frisk needs to identify 2 battlers in double battles.
|
||||
u8 sameMoveTurns[MAX_BATTLERS_COUNT]; // For Metronome, number of times the same moves has been SUCCESFULLY used.
|
||||
|
|
@ -792,7 +774,7 @@ struct BattleStruct
|
|||
u8 hitSwitchTargetFailed:1;
|
||||
u8 effectsBeforeUsingMoveDone:1; // Mega Evo and Focus Punch/Shell Trap effects.
|
||||
u8 spriteIgnore0Hp:1;
|
||||
u8 battleBondTransformed[NUM_BATTLE_SIDES]; // Bitfield for each party.
|
||||
u8 battleBondBoost[NUM_BATTLE_SIDES]; // Bitfield for each party.
|
||||
u8 bonusCritStages[MAX_BATTLERS_COUNT]; // G-Max Chi Strike boosts crit stages of allies.
|
||||
u8 itemPartyIndex[MAX_BATTLERS_COUNT];
|
||||
u8 itemMoveIndex[MAX_BATTLERS_COUNT];
|
||||
|
|
@ -814,14 +796,11 @@ struct BattleStruct
|
|||
u32 stellarBoostFlags[NUM_BATTLE_SIDES]; // stored as a bitfield of flags for all types for each side
|
||||
u8 monCausingSleepClause[NUM_BATTLE_SIDES]; // Stores which pokemon on a given side is causing Sleep Clause to be active as the mon's index in the party
|
||||
u8 additionalEffectsCounter:4; // A counter for the additionalEffects applied by the current move in Cmd_setadditionaleffects
|
||||
u8 redCardActivates:1;
|
||||
u8 padding2:2; // padding in the middle so pursuit fields are together
|
||||
u8 pursuitSwitchByMove:1;
|
||||
u8 cheekPouchActivated:1;
|
||||
u8 padding2:3;
|
||||
u8 pursuitStoredSwitch; // Stored id for the Pursuit target's switch
|
||||
s32 battlerExpReward;
|
||||
u16 prevTurnSpecies[MAX_BATTLERS_COUNT]; // Stores species the AI has in play at start of turn
|
||||
|
||||
// Simultaneous hp reduction for spread moves
|
||||
s32 moveDamage[MAX_BATTLERS_COUNT];
|
||||
s32 critChance[MAX_BATTLERS_COUNT];
|
||||
u16 moveResultFlags[MAX_BATTLERS_COUNT];
|
||||
|
|
@ -832,10 +811,24 @@ struct BattleStruct
|
|||
u8 calculatedSpreadMoveAccuracy:1;
|
||||
u8 printedStrongWindsWeakenedAttack:1;
|
||||
u8 numSpreadTargets:2;
|
||||
u8 padding3:2;
|
||||
u8 bypassMoldBreakerChecks:1; // for ABILITYEFFECT_IMMUNITY
|
||||
u8 noTargetPresent:1;
|
||||
u8 usedEjectItem;
|
||||
u8 usedMicleBerry;
|
||||
struct MessageStatus slideMessageStatus;
|
||||
u8 trainerSlideSpriteIds[MAX_BATTLERS_COUNT];
|
||||
u8 embodyAspectBoost[NUM_BATTLE_SIDES];
|
||||
u16 savedMove; // backup current move for mid-turn switching, e.g. Red Card
|
||||
u16 opponentMonCanTera:6;
|
||||
u16 opponentMonCanDynamax:6;
|
||||
u16 padding:4;
|
||||
};
|
||||
|
||||
struct AiBattleData
|
||||
{
|
||||
s32 finalScore[MAX_BATTLERS_COUNT][MAX_BATTLERS_COUNT][MAX_MON_MOVES]; // AI, target, moves to make debugging easier
|
||||
u8 moveOrAction[MAX_BATTLERS_COUNT];
|
||||
u8 chosenTarget[MAX_BATTLERS_COUNT];
|
||||
};
|
||||
|
||||
// The palaceFlags member of struct BattleStruct contains 1 flag per move to indicate which moves the AI should consider,
|
||||
|
|
@ -905,18 +898,6 @@ static inline bool32 IsBattleMoveRecoil(u32 move)
|
|||
gBattleMons[battlerId].types[2] = TYPE_MYSTERY; \
|
||||
}
|
||||
|
||||
#define IS_BATTLER_PROTECTED(battlerId)(gProtectStructs[battlerId].protected \
|
||||
|| gSideStatuses[GetBattlerSide(battlerId)] & SIDE_STATUS_WIDE_GUARD \
|
||||
|| gSideStatuses[GetBattlerSide(battlerId)] & SIDE_STATUS_QUICK_GUARD \
|
||||
|| gSideStatuses[GetBattlerSide(battlerId)] & SIDE_STATUS_CRAFTY_SHIELD \
|
||||
|| gSideStatuses[GetBattlerSide(battlerId)] & SIDE_STATUS_MAT_BLOCK \
|
||||
|| gProtectStructs[battlerId].spikyShielded \
|
||||
|| gProtectStructs[battlerId].kingsShielded \
|
||||
|| gProtectStructs[battlerId].banefulBunkered \
|
||||
|| gProtectStructs[battlerId].burningBulwarked \
|
||||
|| gProtectStructs[battlerId].obstructed \
|
||||
|| gProtectStructs[battlerId].silkTrapped)
|
||||
|
||||
#define GET_STAT_BUFF_ID(n) ((n & 7)) // first three bits 0x1, 0x2, 0x4
|
||||
#define GET_STAT_BUFF_VALUE_WITH_SIGN(n) ((n & 0xF8))
|
||||
#define GET_STAT_BUFF_VALUE(n) (((n >> 3) & 0xF)) // 0x8, 0x10, 0x20, 0x40
|
||||
|
|
@ -933,11 +914,11 @@ static inline bool32 IsBattleMoveRecoil(u32 move)
|
|||
// in include/constants/battle_script_commands.h
|
||||
struct BattleScripting
|
||||
{
|
||||
s32 painSplitHp;
|
||||
s32 unused1;
|
||||
s32 bideDmg;
|
||||
u8 multihitString[6];
|
||||
bool8 expOnCatch;
|
||||
u8 unused;
|
||||
u8 unused2;
|
||||
u8 animArg1;
|
||||
u8 animArg2;
|
||||
u16 savedStringId;
|
||||
|
|
@ -1153,6 +1134,7 @@ extern u8 gSentPokesToOpponent[2];
|
|||
extern struct BattleEnigmaBerry gEnigmaBerries[MAX_BATTLERS_COUNT];
|
||||
extern struct BattleScripting gBattleScripting;
|
||||
extern struct BattleStruct *gBattleStruct;
|
||||
extern struct AiBattleData *gAiBattleData;
|
||||
extern u8 *gLinkBattleSendBuffer;
|
||||
extern u8 *gLinkBattleRecvBuffer;
|
||||
extern struct BattleResources *gBattleResources;
|
||||
|
|
|
|||
|
|
@ -15,6 +15,12 @@ enum DamageRollType
|
|||
DMG_ROLL_HIGHEST,
|
||||
};
|
||||
|
||||
enum DamageCalcContext
|
||||
{
|
||||
AI_DEFENDING,
|
||||
AI_ATTACKING,
|
||||
};
|
||||
|
||||
enum AIPivot
|
||||
{
|
||||
DONT_PIVOT,
|
||||
|
|
@ -22,10 +28,17 @@ enum AIPivot
|
|||
SHOULD_PIVOT,
|
||||
};
|
||||
|
||||
static inline bool32 IsMoveUnusable(u32 moveIndex, u32 move, u32 moveLimitations)
|
||||
{
|
||||
return move == MOVE_NONE
|
||||
|| move == MOVE_UNAVAILABLE
|
||||
|| moveLimitations & 1u << moveIndex;
|
||||
}
|
||||
|
||||
bool32 AI_IsFaster(u32 battlerAi, u32 battlerDef, u32 move);
|
||||
bool32 AI_IsSlower(u32 battlerAi, u32 battlerDef, u32 move);
|
||||
bool32 AI_RandLessThan(u32 val);
|
||||
u32 GetDmgRollType(u32 battlerAtk);
|
||||
u32 AI_GetDamage(u32 battlerAtk, u32 battlerDef, u32 moveIndex, enum DamageCalcContext calcContext, struct AiLogicData *aiData);
|
||||
bool32 IsAiVsAiBattle(void);
|
||||
bool32 BattlerHasAi(u32 battlerId);
|
||||
bool32 IsAiBattlerAware(u32 battlerId);
|
||||
|
|
@ -46,12 +59,13 @@ u32 GetTotalBaseStat(u32 species);
|
|||
bool32 IsTruantMonVulnerable(u32 battlerAI, u32 opposingBattler);
|
||||
bool32 AI_BattlerAtMaxHp(u32 battler);
|
||||
u32 GetHealthPercentage(u32 battler);
|
||||
bool32 IsBattlerTrapped(u32 battler, bool32 switching);
|
||||
bool32 AI_CanBattlerEscape(u32 battler);
|
||||
bool32 IsBattlerTrapped(u32 battlerAtk, u32 battlerDef);
|
||||
s32 AI_WhoStrikesFirst(u32 battlerAI, u32 battler2, u32 moveConsidered);
|
||||
bool32 CanTargetFaintAi(u32 battlerDef, u32 battlerAtk);
|
||||
u32 NoOfHitsForTargetToFaintAI(u32 battlerDef, u32 battlerAtk);
|
||||
u32 GetBestDmgMoveFromBattler(u32 battlerAtk, u32 battlerDef);
|
||||
u32 GetBestDmgFromBattler(u32 battler, u32 battlerTarget);
|
||||
u32 GetBestDmgMoveFromBattler(u32 battlerAtk, u32 battlerDef, enum DamageCalcContext calcContext);
|
||||
u32 GetBestDmgFromBattler(u32 battler, u32 battlerTarget, enum DamageCalcContext calcContext);
|
||||
bool32 CanTargetMoveFaintAi(u32 move, u32 battlerDef, u32 battlerAtk, u32 nHits);
|
||||
bool32 CanTargetFaintAiWithMod(u32 battlerDef, u32 battlerAtk, s32 hpMod, s32 dmgMod);
|
||||
s32 AI_DecideKnownAbilityForTurn(u32 battlerId);
|
||||
|
|
@ -59,7 +73,8 @@ u32 AI_DecideHoldEffectForTurn(u32 battlerId);
|
|||
bool32 DoesBattlerIgnoreAbilityChecks(u32 battlerAtk, u32 atkAbility, u32 move);
|
||||
u32 AI_GetWeather(void);
|
||||
bool32 CanAIFaintTarget(u32 battlerAtk, u32 battlerDef, u32 numHits);
|
||||
bool32 CanIndexMoveFaintTarget(u32 battlerAtk, u32 battlerDef, u32 index, u32 numHits);
|
||||
bool32 CanIndexMoveFaintTarget(u32 battlerAtk, u32 battlerDef, u32 index, enum DamageCalcContext calcContext);
|
||||
bool32 CanIndexMoveGuaranteeFaintTarget(u32 battlerAtk, u32 battlerDef, u32 index);
|
||||
bool32 HasDamagingMove(u32 battlerId);
|
||||
bool32 HasDamagingMoveOfType(u32 battlerId, u32 type);
|
||||
u32 GetBattlerSecondaryDamage(u32 battlerId);
|
||||
|
|
@ -69,7 +84,7 @@ bool32 ShouldTryOHKO(u32 battlerAtk, u32 battlerDef, u32 atkAbility, u32 defAbil
|
|||
bool32 ShouldUseRecoilMove(u32 battlerAtk, u32 battlerDef, u32 recoilDmg, u32 moveIndex);
|
||||
u32 GetBattlerSideSpeedAverage(u32 battler);
|
||||
bool32 ShouldAbsorb(u32 battlerAtk, u32 battlerDef, u32 move, s32 damage);
|
||||
bool32 ShouldRecover(u32 battlerAtk, u32 battlerDef, u32 move, u32 healPercent);
|
||||
bool32 ShouldRecover(u32 battlerAtk, u32 battlerDef, u32 move, u32 healPercent, enum DamageCalcContext calcContext);
|
||||
bool32 ShouldSetScreen(u32 battlerAtk, u32 battlerDef, u32 moveEffect);
|
||||
enum AIPivot ShouldPivot(u32 battlerAtk, u32 battlerDef, u32 defAbility, u32 move, u32 moveIndex);
|
||||
bool32 IsRecycleEncouragedItem(u32 item);
|
||||
|
|
@ -84,7 +99,7 @@ u32 AI_GetBattlerAbility(u32 battler);
|
|||
|
||||
// stat stage checks
|
||||
bool32 AnyStatIsRaised(u32 battlerId);
|
||||
bool32 ShouldLowerStat(u32 battlerAtk, u32 battlerDef, u32 battlerAbility, u32 stat);
|
||||
bool32 ShouldLowerStat(u32 battlerAtk, u32 battlerDef, u32 abilityDef, u32 stat);
|
||||
bool32 BattlerStatCanRise(u32 battler, u32 battlerAbility, u32 stat);
|
||||
bool32 AreBattlersStatsMaxed(u32 battler);
|
||||
u32 CountPositiveStatStages(u32 battlerId);
|
||||
|
|
@ -101,13 +116,13 @@ bool32 ShouldLowerEvasion(u32 battlerAtk, u32 battlerDef, u32 defAbility);
|
|||
bool32 IsAffectedByPowder(u32 battler, u32 ability, u32 holdEffect);
|
||||
bool32 MovesWithCategoryUnusable(u32 attacker, u32 target, u32 category);
|
||||
s32 AI_WhichMoveBetter(u32 move1, u32 move2, u32 battlerAtk, u32 battlerDef, s32 noOfHitsToKo);
|
||||
struct SimulatedDamage AI_CalcDamageSaveBattlers(u32 move, u32 battlerAtk, u32 battlerDef, uq4_12_t *typeEffectiveness, bool32 considerZPower, enum DamageRollType rollType);
|
||||
struct SimulatedDamage AI_CalcDamage(u32 move, u32 battlerAtk, u32 battlerDef, uq4_12_t *typeEffectiveness, bool32 considerZPower, u32 weather, enum DamageRollType rollType);
|
||||
struct SimulatedDamage AI_CalcDamageSaveBattlers(u32 move, u32 battlerAtk, u32 battlerDef, uq4_12_t *typeEffectiveness, bool32 considerZPower);
|
||||
struct SimulatedDamage AI_CalcDamage(u32 move, u32 battlerAtk, u32 battlerDef, uq4_12_t *typeEffectiveness, bool32 considerZPower, u32 weather);
|
||||
bool32 AI_IsDamagedByRecoil(u32 battler);
|
||||
u32 GetNoOfHitsToKO(u32 dmg, s32 hp);
|
||||
u32 GetNoOfHitsToKOBattlerDmg(u32 dmg, u32 battlerDef);
|
||||
u32 GetNoOfHitsToKOBattler(u32 battlerAtk, u32 battlerDef, u32 moveIndex);
|
||||
u32 GetCurrDamageHpPercent(u32 battlerAtk, u32 battlerDef);
|
||||
u32 GetNoOfHitsToKOBattler(u32 battlerAtk, u32 battlerDef, u32 moveIndex, enum DamageCalcContext calcContext);
|
||||
u32 GetCurrDamageHpPercent(u32 battlerAtk, u32 battlerDef, enum DamageCalcContext calcContext);
|
||||
uq4_12_t AI_GetMoveEffectiveness(u32 move, u32 battlerAtk, u32 battlerDef);
|
||||
u16 *GetMovesArray(u32 battler);
|
||||
bool32 IsConfusionMoveEffect(u32 moveEffect);
|
||||
|
|
@ -127,7 +142,7 @@ bool32 IsAromaVeilProtectedEffect(u32 moveEffect);
|
|||
bool32 IsNonVolatileStatusMoveEffect(u32 moveEffect);
|
||||
bool32 IsMoveRedirectionPrevented(u32 battlerAtk, u32 move, u32 atkAbility);
|
||||
bool32 IsMoveEncouragedToHit(u32 battlerAtk, u32 battlerDef, u32 move);
|
||||
bool32 IsHazardMoveEffect(u32 moveEffect);
|
||||
bool32 IsHazardMove(u32 move);
|
||||
bool32 IsTwoTurnNotSemiInvulnerableMove(u32 battlerAtk, u32 move);
|
||||
void ProtectChecks(u32 battlerAtk, u32 battlerDef, u32 move, u32 predictedMove, s32 *score);
|
||||
bool32 ShouldSetSandstorm(u32 battler, u32 ability, u32 holdEffect);
|
||||
|
|
@ -154,17 +169,21 @@ bool32 HasSubstituteIgnoringMove(u32 battler);
|
|||
bool32 HasHighCritRatioMove(u32 battler);
|
||||
bool32 HasMagicCoatAffectedMove(u32 battler);
|
||||
bool32 HasSnatchAffectedMove(u32 battler);
|
||||
bool32 IsHazardClearingMove(u32 move);
|
||||
bool32 IsSubstituteEffect(u32 effect);
|
||||
|
||||
// status checks
|
||||
bool32 AI_CanGetFrostbite(u32 battler, u32 ability);
|
||||
bool32 AI_CanBeConfused(u32 battlerAtk, u32 battlerDef, u32 move, u32 ability);
|
||||
bool32 IsBattlerIncapacitated(u32 battler, u32 ability);
|
||||
bool32 AI_CanPutToSleep(u32 battlerAtk, u32 battlerDef, u32 defAbility, u32 move, u32 partnerMove);
|
||||
bool32 ShouldPoisonSelf(u32 battler, u32 ability);
|
||||
bool32 ShouldPoison(u32 battlerAtk, u32 battlerDef);
|
||||
bool32 AI_CanPoison(u32 battlerAtk, u32 battlerDef, u32 defAbility, u32 move, u32 partnerMove);
|
||||
bool32 AI_CanParalyze(u32 battlerAtk, u32 battlerDef, u32 defAbility, u32 move, u32 partnerMove);
|
||||
bool32 AI_CanConfuse(u32 battlerAtk, u32 battlerDef, u32 defAbility, u32 battlerAtkPartner, u32 move, u32 partnerMove);
|
||||
bool32 ShouldBurnSelf(u32 battler, u32 ability);
|
||||
bool32 ShouldBurn(u32 battlerAtk, u32 battlerDef);
|
||||
bool32 ShouldFreezeOrFrostbite(u32 battlerAtk, u32 battlerDef);
|
||||
bool32 ShouldParalyze(u32 battlerAtk, u32 battlerDef);
|
||||
bool32 AI_CanBurn(u32 battlerAtk, u32 battlerDef, u32 defAbility, u32 battlerAtkPartner, u32 move, u32 partnerMove);
|
||||
bool32 AI_CanGiveFrostbite(u32 battlerAtk, u32 battlerDef, u32 defAbility, u32 battlerAtkPartner, u32 move, u32 partnerMove);
|
||||
bool32 AI_CanBeInfatuated(u32 battlerAtk, u32 battlerDef, u32 defAbility);
|
||||
|
|
@ -208,14 +227,17 @@ void IncreaseSleepScore(u32 battlerAtk, u32 battlerDef, u32 move, s32 *score);
|
|||
void IncreaseConfusionScore(u32 battlerAtk, u32 battlerDef, u32 move, s32 *score);
|
||||
void IncreaseFrostbiteScore(u32 battlerAtk, u32 battlerDef, u32 move, s32 *score);
|
||||
|
||||
s32 AI_CalcPartyMonDamage(u32 move, u32 battlerAtk, u32 battlerDef, struct BattlePokemon switchinCandidate, bool32 isPartyMonAttacker, enum DamageRollType rollType);
|
||||
s32 AI_CalcPartyMonDamage(u32 move, u32 battlerAtk, u32 battlerDef, struct BattlePokemon switchinCandidate, bool32 isPartyMonAttacker);
|
||||
u32 AI_WhoStrikesFirstPartyMon(u32 battlerAtk, u32 battlerDef, struct BattlePokemon switchinCandidate, u32 moveConsidered);
|
||||
s32 AI_TryToClearStats(u32 battlerAtk, u32 battlerDef, bool32 isDoubleBattle);
|
||||
bool32 AI_ShouldCopyStatChanges(u32 battlerAtk, u32 battlerDef);
|
||||
bool32 AI_ShouldSetUpHazards(u32 battlerAtk, u32 battlerDef, struct AiLogicData *aiData);
|
||||
void IncreaseTidyUpScore(u32 battlerAtk, u32 battlerDef, u32 move, s32 *score);
|
||||
bool32 AI_ShouldSpicyExtract(u32 battlerAtk, u32 battlerAtkPartner, u32 move, struct AiLogicData *aiData);
|
||||
void IncreaseSubstituteMoveScore(u32 battlerAtk, u32 battlerDef, u32 move, s32 *score);
|
||||
u32 IncreaseSubstituteMoveScore(u32 battlerAtk, u32 battlerDef, u32 move);
|
||||
bool32 IsBattlerItemEnabled(u32 battler);
|
||||
bool32 IsBattlerPredictedToSwitch(u32 battler);
|
||||
bool32 HasLowAccuracyMove(u32 battlerAtk, u32 battlerDef);
|
||||
bool32 HasBattlerSideAbility(u32 battlerDef, u32 ability, struct AiLogicData *aiData);
|
||||
|
||||
#endif //GUARD_BATTLE_AI_UTIL_H
|
||||
|
|
|
|||
|
|
@ -71,8 +71,8 @@ void SwitchPartyOrder(u32 battlerId);
|
|||
void SwapTurnOrder(u8 id1, u8 id2);
|
||||
u32 GetBattlerTotalSpeedStatArgs(u32 battler, u32 ability, u32 holdEffect);
|
||||
u32 GetBattlerTotalSpeedStat(u32 battler);
|
||||
s8 GetChosenMovePriority(u32 battlerId);
|
||||
s8 GetBattleMovePriority(u32 battlerId, u16 move);
|
||||
s32 GetChosenMovePriority(u32 battler, u32 ability);
|
||||
s32 GetBattleMovePriority(u32 battler, u32 ability, u32 move);
|
||||
s32 GetWhichBattlerFasterArgs(u32 battler1, u32 battler2, bool32 ignoreChosenMoves, u32 ability1, u32 ability2,
|
||||
u32 holdEffectBattler1, u32 holdEffectBattler2, u32 speedBattler1, u32 speedBattler2, s32 priority1, s32 priority2);
|
||||
s32 GetWhichBattlerFasterOrTies(u32 battler1, u32 battler2, bool32 ignoreChosenMoves);
|
||||
|
|
|
|||
|
|
@ -83,6 +83,8 @@
|
|||
#define B_TXT_TRAINER2_NAME_WITH_CLASS 0x43
|
||||
#define B_TXT_PARTNER_NAME_WITH_CLASS 0x44
|
||||
#define B_TXT_ATK_TRAINER_NAME_WITH_CLASS 0x45
|
||||
#define B_TXT_SCR_TEAM1 0x46
|
||||
#define B_TXT_SCR_TEAM2 0x47
|
||||
|
||||
#define B_BUFF_STRING 0
|
||||
#define B_BUFF_NUMBER 1
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@ struct PickupItem
|
|||
};
|
||||
|
||||
s32 CalcCritChanceStage(u32 battlerAtk, u32 battlerDef, u32 move, bool32 recordAbility, u32 abilityAtk, u32 abilityDef, u32 holdEffectAtk);
|
||||
s32 CalcCritChanceStageGen1(u32 battlerAtk, u32 battlerDef, u32 move, bool32 recordAbility, u32 abilityAtk, u32 abilityDef, u32 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);
|
||||
|
|
@ -51,13 +52,13 @@ void StealTargetItem(u8 battlerStealer, u8 battlerItem);
|
|||
u8 GetCatchingBattler(void);
|
||||
u32 GetHighestStatId(u32 battlerId);
|
||||
bool32 ProteanTryChangeType(u32 battler, u32 ability, u32 move, u32 moveType);
|
||||
bool32 ShouldTeraShellDistortTypeMatchups(u32 move, u32 battlerDef);
|
||||
bool32 IsMoveNotAllowedInSkyBattles(u32 move);
|
||||
bool32 DoSwitchInAbilities(u32 battlerId);
|
||||
u8 GetFirstFaintedPartyIndex(u8 battlerId);
|
||||
bool32 IsMoveAffectedByParentalBond(u32 move, u32 battler);
|
||||
void SaveBattlerTarget(u32 battler);
|
||||
void SaveBattlerAttacker(u32 battler);
|
||||
bool32 CanBurnHitThaw(u16 move);
|
||||
|
||||
extern void (* const gBattleScriptingCommandsTable[])(void);
|
||||
extern const struct StatFractions gAccuracyStageRatios[];
|
||||
|
|
|
|||
|
|
@ -384,9 +384,7 @@ extern const u8 BattleScript_FriskMsg[];
|
|||
extern const u8 BattleScript_FriskMsgWithPopup[];
|
||||
extern const u8 BattleScript_MoodyActivates[];
|
||||
extern const u8 BattleScript_EmergencyExit[];
|
||||
extern const u8 BattleScript_EmergencyExitNoPopUp[];
|
||||
extern const u8 BattleScript_EmergencyExitWild[];
|
||||
extern const u8 BattleScript_EmergencyExitWildNoPopUp[];
|
||||
extern const u8 BattleScript_CheekPouchActivates[];
|
||||
extern const u8 BattleScript_TotemVar[];
|
||||
extern const u8 BattleScript_TotemFlaredToLife[];
|
||||
|
|
@ -427,6 +425,7 @@ extern const u8 BattleScript_GulpMissileGorging[];
|
|||
extern const u8 BattleScript_GulpMissileGulping[];
|
||||
extern const u8 BattleScript_GulpMissileFormChange[];
|
||||
extern const u8 BattleScript_BattleBondActivatesOnMoveEndAttacker[];
|
||||
extern const u8 BattleScript_EffectBattleBondStatIncrease[];
|
||||
extern const u8 BattleScript_DesolateLandActivates[];
|
||||
extern const u8 BattleScript_PrimordialSeaActivates[];
|
||||
extern const u8 BattleScript_PrimalWeatherBlocksMove[];
|
||||
|
|
@ -443,8 +442,6 @@ extern const u8 BattleScript_WanderingSpiritActivates[];
|
|||
extern const u8 BattleScript_MirrorArmorReflect[];
|
||||
extern const u8 BattleScript_GooeyActivates[];
|
||||
extern const u8 BattleScript_PastelVeilActivates[];
|
||||
extern const u8 BattleScript_MimicryActivatesEnd3[];
|
||||
extern const u8 BattleScript_ApplyMimicry[];
|
||||
extern const u8 BattleScript_AttackerFormChangeEnd3NoPopup[];
|
||||
extern const u8 BattleScript_AttackerFormChangeWithStringEnd3NoPopup[];
|
||||
extern const u8 BattleScript_AttackerFormChangeMoveEffect[];
|
||||
|
|
@ -480,7 +477,7 @@ extern const u8 BattleScript_CommanderActivates[];
|
|||
extern const u8 BattleScript_HospitalityActivates[];
|
||||
extern const u8 BattleScript_ToxicDebrisActivates[];
|
||||
extern const u8 BattleScript_EarthEaterActivates[];
|
||||
extern const u8 BattleScript_MimicryActivates_End3[];
|
||||
extern const u8 BattleScript_MimicryActivates[];
|
||||
extern const u8 BattleScript_IceFaceNullsDamage[];
|
||||
extern const u8 BattleScript_BattlerFormChangeWithStringEnd3[];
|
||||
extern const u8 BattleScript_DampPreventsAftermath[];
|
||||
|
|
@ -560,6 +557,7 @@ extern const u8 BattleScript_RemoveGenericType[];
|
|||
// dynamax and max raids
|
||||
extern const u8 BattleScript_DynamaxBegins[];
|
||||
extern const u8 BattleScript_DynamaxEnds[];
|
||||
extern const u8 BattleScript_DynamaxEnds_Ret[];
|
||||
extern const u8 BattleScript_MoveBlockedByDynamax[];
|
||||
|
||||
// Battle move scripts
|
||||
|
|
@ -597,7 +595,7 @@ extern const u8 BattleScript_EffectOHKO[];
|
|||
extern const u8 BattleScript_EffectSuperFang[];
|
||||
extern const u8 BattleScript_EffectFixedDamageArg[];
|
||||
extern const u8 BattleScript_EffectHealBlock[];
|
||||
extern const u8 BattleScript_EffectRecoilIfMiss[];
|
||||
extern const u8 BattleScript_RecoilIfMiss[];
|
||||
extern const u8 BattleScript_EffectMist[];
|
||||
extern const u8 BattleScript_EffectFocusEnergy[];
|
||||
extern const u8 BattleScript_EffectConfuse[];
|
||||
|
|
@ -825,7 +823,6 @@ extern const u8 BattleScript_MoveEffectHaze[];
|
|||
extern const u8 BattleScript_MoveEffectIonDeluge[];
|
||||
extern const u8 BattleScript_EffectHyperspaceFury[];
|
||||
extern const u8 BattleScript_EffectAuraWheel[];
|
||||
extern const u8 BattleScript_EffectDynamicCategory[];
|
||||
extern const u8 BattleScript_EffectNoRetreat[];
|
||||
extern const u8 BattleScript_EffectTarShot[];
|
||||
extern const u8 BattleScript_EffectPoltergeist[];
|
||||
|
|
|
|||
|
|
@ -25,6 +25,7 @@
|
|||
enum AbilityEffectOptions
|
||||
{
|
||||
ABILITY_CHECK_TRIGGER,
|
||||
ABILITY_CHECK_TRIGGER_AI,
|
||||
ABILITY_RUN_SCRIPT,
|
||||
};
|
||||
|
||||
|
|
@ -39,10 +40,6 @@ enum MoveAbsorbed
|
|||
enum {
|
||||
ABILITYEFFECT_ON_SWITCHIN,
|
||||
ABILITYEFFECT_ENDTURN,
|
||||
ABILITYEFFECT_MOVES_BLOCK,
|
||||
ABILITYEFFECT_WOULD_BLOCK, // Checks immunity without triggering a script
|
||||
ABILITYEFFECT_ABSORBING,
|
||||
ABILITYEFFECT_WOULD_ABSORB, // Checks immunity without triggering a script
|
||||
ABILITYEFFECT_MOVE_END_ATTACKER,
|
||||
ABILITYEFFECT_MOVE_END,
|
||||
ABILITYEFFECT_IMMUNITY,
|
||||
|
|
@ -96,6 +93,10 @@ enum ItemEffect
|
|||
#define DMG_ROLL_PERCENT_LO 85
|
||||
#define DMG_ROLL_PERCENT_HI 100
|
||||
|
||||
// Crit chance exceptions
|
||||
#define CRITICAL_HIT_BLOCKED -1
|
||||
#define CRITICAL_HIT_ALWAYS -2
|
||||
|
||||
// for Natural Gift and Fling
|
||||
struct TypePower
|
||||
{
|
||||
|
|
@ -129,7 +130,6 @@ enum
|
|||
CANCELLER_STANCE_CHANGE_2,
|
||||
CANCELLER_WEATHER_PRIMAL,
|
||||
CANCELLER_DYNAMAX_BLOCKED,
|
||||
CANCELLER_POWDER_MOVE,
|
||||
CANCELLER_POWDER_STATUS,
|
||||
CANCELLER_PROTEAN,
|
||||
CANCELLER_PSYCHIC_TERRAIN,
|
||||
|
|
@ -206,6 +206,7 @@ bool32 AreAllMovesUnusable(u32 battler);
|
|||
u8 GetImprisonedMovesCount(u32 battler, u16 move);
|
||||
u8 DoFieldEndTurnEffects(void);
|
||||
s32 GetDrainedBigRootHp(u32 battler, s32 hp);
|
||||
bool32 IsMagicGuardProtected(u32 battler, u32 ability);
|
||||
u8 DoBattlerEndTurnEffects(void);
|
||||
bool32 HandleWishPerishSongOnTurnEnd(void);
|
||||
bool32 HandleFaintedMonActions(void);
|
||||
|
|
@ -214,7 +215,7 @@ u32 AtkCanceller_MoveSuccessOrder(void);
|
|||
void SetAtkCancellerForCalledMove(void);
|
||||
bool32 HasNoMonsToSwitch(u32 battler, u8 r1, u8 r2);
|
||||
bool32 TryChangeBattleWeather(u32 battler, u32 battleWeatherId, bool32 viaAbility);
|
||||
bool32 CanAbilityBlockMove(u32 battlerAtk, u32 battlerDef, u32 move, u32 abilityDef, enum AbilityEffectOptions option);
|
||||
bool32 CanAbilityBlockMove(u32 battlerAtk, u32 battlerDef, u32 abilityAtk, u32 abilityDef, u32 move, enum AbilityEffectOptions option);
|
||||
bool32 CanAbilityAbsorbMove(u32 battlerAtk, u32 battlerDef, u32 abilityDef, u32 move, u32 moveType, enum AbilityEffectOptions option);
|
||||
u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 moveArg);
|
||||
bool32 TryPrimalReversion(u32 battler);
|
||||
|
|
@ -227,6 +228,7 @@ u32 IsAbilityOnField(u32 ability);
|
|||
u32 IsAbilityOnFieldExcept(u32 battler, u32 ability);
|
||||
u32 IsAbilityPreventingEscape(u32 battler);
|
||||
bool32 IsBattlerProtected(u32 battlerAtk, u32 battlerDef, u32 move);
|
||||
u32 GetProtectType(enum ProtectMethod method);
|
||||
bool32 CanBattlerEscape(u32 battler); // no ability check
|
||||
void BattleScriptExecute(const u8 *BS_ptr);
|
||||
void BattleScriptPushCursorAndCallback(const u8 *BS_ptr);
|
||||
|
|
@ -249,6 +251,7 @@ u32 CalcFuryCutterBasePower(u32 basePower, u32 furyCutterCounter);
|
|||
s32 CalculateMoveDamage(struct DamageCalculationData *damageCalcData, u32 fixedBasePower);
|
||||
s32 CalculateMoveDamageVars(struct DamageCalculationData *damageCalcData, u32 fixedBasePower, uq4_12_t typeEffectivenessModifier,
|
||||
u32 weather, u32 holdEffectAtk, u32 holdEffectDef, u32 abilityAtk, u32 abilityDef);
|
||||
s32 ApplyModifiersAfterDmgRoll(s32 dmg, struct DamageCalculationData *damageCalcData, uq4_12_t typeEffectivenessModifier, u32 abilityAtk, u32 abilityDef, u32 holdEffectAtk, u32 holdEffectDef);
|
||||
uq4_12_t CalcTypeEffectivenessMultiplier(u32 move, u32 moveType, u32 battlerAtk, u32 battlerDef, u32 defAbility, bool32 recordAbilities);
|
||||
uq4_12_t CalcPartyMonTypeEffectivenessMultiplier(u16 move, u16 speciesDef, u16 abilityDef);
|
||||
uq4_12_t GetTypeModifier(u32 atkType, u32 defType);
|
||||
|
|
@ -272,7 +275,8 @@ struct Pokemon *GetIllusionMonPtr(u32 battler);
|
|||
void ClearIllusionMon(u32 battler);
|
||||
bool32 SetIllusionMon(struct Pokemon *mon, u32 battler);
|
||||
bool32 ShouldGetStatBadgeBoost(u16 flagId, u32 battler);
|
||||
u8 GetBattleMoveCategory(u32 moveId);
|
||||
u32 GetBattleMoveCategory(u32 move);
|
||||
void SetDynamicMoveCategory(u32 battlerAtk, u32 battlerDef, u32 move);
|
||||
bool32 CanFling(u32 battler);
|
||||
bool32 IsTelekinesisBannedSpecies(u16 species);
|
||||
bool32 IsHealBlockPreventingMove(u32 battler, u32 move);
|
||||
|
|
@ -303,7 +307,6 @@ bool32 CanTargetBattler(u32 battlerAtk, u32 battlerDef, u16 move);
|
|||
void CopyMonLevelAndBaseStatsToBattleMon(u32 battler, struct Pokemon *mon);
|
||||
void CopyMonAbilityAndTypesToBattleMon(u32 battler, struct Pokemon *mon);
|
||||
void RecalcBattlerStats(u32 battler, struct Pokemon *mon, bool32 isDynamaxing);
|
||||
bool32 IsAlly(u32 battlerAtk, u32 battlerDef);
|
||||
bool32 IsGen6ExpShareEnabled(void);
|
||||
bool32 MoveHasAdditionalEffect(u32 move, u32 moveEffect);
|
||||
bool32 MoveHasAdditionalEffectWithChance(u32 move, u32 moveEffect, u32 chance);
|
||||
|
|
@ -344,10 +347,11 @@ bool32 IsSleepClauseEnabled();
|
|||
void ClearDamageCalcResults(void);
|
||||
u32 DoesDestinyBondFail(u32 battler);
|
||||
bool32 IsMoveEffectBlockedByTarget(u32 ability);
|
||||
u32 NumAffectedSpreadMoveTargets(void);
|
||||
bool32 IsPursuitTargetSet(void);
|
||||
void ClearPursuitValuesIfSet(u32 battler);
|
||||
void ClearPursuitValues(void);
|
||||
bool32 HasWeatherEffect(void);
|
||||
u32 RestoreWhiteHerbStats(u32 battler);
|
||||
bool32 HadMoreThanHalfHpNowDoesnt(u32 battler);
|
||||
|
||||
#endif // GUARD_BATTLE_UTIL_H
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@
|
|||
#define SHOULD_SWITCH_WONDER_GUARD_PERCENTAGE 100
|
||||
#define SHOULD_SWITCH_TRUANT_PERCENTAGE 100
|
||||
#define SHOULD_SWITCH_ALL_MOVES_BAD_PERCENTAGE 100
|
||||
#define STAY_IN_STATS_RAISED 2 // Number of stat stages that must be raised across any stats before the AI won't switch mon out in certain cases
|
||||
|
||||
// AI smart switching chances; if you want more complex behaviour, modify GetSwitchChance
|
||||
#define SHOULD_SWITCH_ABSORBS_MOVE_PERCENTAGE 100
|
||||
|
|
@ -43,8 +44,15 @@
|
|||
#define SHOULD_SWITCH_REGENERATOR_PERCENTAGE 50
|
||||
#define SHOULD_SWITCH_REGENERATOR_STATS_RAISED_PERCENTAGE 20
|
||||
|
||||
// AI switchin considerations
|
||||
#define ALL_MOVES_BAD_STATUS_MOVES_BAD FALSE // If the AI has no moves that affect the target, ShouldSwitchIfAllMovesBad can prompt a switch. Enabling this config will ignore status moves that can affect the target when making this decision.
|
||||
|
||||
// AI held item-based move scoring
|
||||
#define BLUNDER_POLICY_ACCURACY_THRESHOLD 75 // Moves with accuracy equal below this value are prioritized when holding Blunder Policy
|
||||
#define LOW_ACCURACY_THRESHOLD 75 // Moves with accuracy equal OR below this value are considered low accuracy
|
||||
|
||||
// AI damage calc considerations
|
||||
#define RISKY_AI_CRIT_STAGE_THRESHOLD 2 // Stat stages at which Risky will assume it gets a crit
|
||||
#define RISKY_AI_CRIT_THRESHOLD_GEN_1 128 // "Stat stage" at which Risky will assume it gets a crit with gen 1 mechanics (this translates to an X / 255 % crit threshold)
|
||||
|
||||
// AI prediction chances
|
||||
#define PREDICT_SWITCH_CHANCE 50
|
||||
|
|
|
|||
|
|
@ -9,7 +9,6 @@
|
|||
#define B_MULTI_HIT_CHANCE GEN_LATEST // In Gen5+, multi-hit moves have different %. See SetRandomMultiHitCounter for values.
|
||||
#define B_WHITEOUT_MONEY GEN_LATEST // In Gen4+, the amount of money lost by losing a battle is determined by the amount of badges earned. Previously, it would cut the current money by half. (While this change was also in FRLG, for the sake of simplicity, setting this to GEN_3 will result in RSE behavior.)
|
||||
#define B_LIGHT_BALL_ATTACK_BOOST GEN_LATEST // In Gen4+, Light Ball doubles the power of physical moves in addition to special moves.
|
||||
#define B_SANDSTORM_SPDEF_BOOST GEN_LATEST // In Gen4+, Sandstorm weather multiplies the Sp. Defense of Rock-type Pokémon by x1.5.
|
||||
|
||||
// Experience settings
|
||||
#define B_EXP_CATCH GEN_LATEST // In Gen6+, Pokémon get experience from catching.
|
||||
|
|
@ -130,7 +129,6 @@
|
|||
#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.
|
||||
|
||||
// Ability settings
|
||||
#define B_ABILITY_WEATHER GEN_LATEST // In Gen6+, ability-induced weather lasts 5 turns. Before, it lasted until the battle ended or until it was changed by a move or a different weather-affecting ability.
|
||||
#define B_GALE_WINGS GEN_LATEST // In Gen7+ requires full HP to trigger.
|
||||
#define B_STANCE_CHANGE_FAIL GEN_LATEST // In Gen7+, Stance Change fails if the Pokémon is unable to use a move because of confusion, paralysis, etc. In Gen6, it doesn't.
|
||||
#define B_SHADOW_TAG_ESCAPE GEN_LATEST // In Gen4+, if both sides have a Pokémon with Shadow Tag, all battlers can escape. Before, neither side could escape this situation.
|
||||
|
|
@ -147,7 +145,6 @@
|
|||
#define B_REDIRECT_ABILITY_IMMUNITY GEN_LATEST // In Gen5+, Pokémon with Lightning Rod/Storm Drain become immune to Electric/Water-type moves and increase their Sp. Attack by 1 stage on top of the redirecting effect.
|
||||
#define B_REDIRECT_ABILITY_ALLIES GEN_LATEST // In Gen4+, Lightning Rod/Storm Drain redirect ally's moves as well.
|
||||
#define B_LEAF_GUARD_PREVENTS_REST GEN_LATEST // In Gen5+, Leaf Guard prevents the use of Rest in harsh sunlight.
|
||||
#define B_SNOW_WARNING GEN_LATEST // In Gen9+, Snow Warning will summon snow instead of hail.
|
||||
#define B_TRANSISTOR_BOOST GEN_LATEST // In Gen9+, Transistor will only boost Electric-type moves by 1.3x as opposed to 1.5x.
|
||||
#define B_ILLUMINATE_EFFECT GEN_LATEST // In Gen9+, Illuminate prevents accuracy reductions and ignores the target's evasion.
|
||||
#define B_WEAK_ARMOR_SPEED GEN_LATEST // In Gen7+, Weak Armor raises Speed by 2 stages instead of 1 when hit by a physical move.
|
||||
|
|
@ -160,6 +157,7 @@
|
|||
// In Gen4, it's 30%. In Gen5+ it has 11% to sleep, 9% chance to poison and 10% chance to paralyze.
|
||||
#define B_PICKUP_WILD GEN_LATEST // In Gen9+, Pickup allows its user to pickup its own used item at the end of the turn in wild battles.
|
||||
#define B_MAGIC_GUARD GEN_LATEST // In Gen4 only, Magic Guard ignores immobilization caused by paralysis
|
||||
#define B_BATTLE_BOND GEN_LATEST // In Gen9+, Battle Bond increases Atk, SpAtk and Speed by one stage, once per battle
|
||||
|
||||
// Item settings
|
||||
#define B_HP_BERRIES GEN_LATEST // In Gen4+, berries which restore HP activate immediately after HP drops to half. In Gen3, the effect occurs at the end of the turn.
|
||||
|
|
@ -221,6 +219,22 @@
|
|||
// Ingame partner flag
|
||||
#define B_SHOW_PARTNER_TARGET FALSE // Shows the battler partner will target.
|
||||
|
||||
// Move description menu
|
||||
#define B_SHOW_MOVE_DESCRIPTION TRUE // Shows move information in battler
|
||||
|
||||
// Weather settings
|
||||
// Search for 'rain', 'sunny day', and 'hail' for move-specific or species-specific weather interactions.
|
||||
#define B_ICE_WEATHER_BOTH 0
|
||||
#define B_ICE_WEATHER_HAIL 1
|
||||
#define B_ICE_WEATHER_SNOW 2
|
||||
|
||||
#define B_ABILITY_WEATHER GEN_LATEST // In Gen6+, ability-induced weather lasts 5 turns. Before, it lasted until the battle ended or until it was changed by a move or a different weather-affecting ability.
|
||||
#define B_SANDSTORM_SPDEF_BOOST GEN_LATEST // In Gen4+, Sandstorm weather multiplies the Sp. Defense of Rock-type Pokémon by x1.5.
|
||||
#define B_OVERWORLD_FOG GEN_LATEST // In Gen8+, overworld Fog summons Misty Terrain in battle. In Gen4 only, overworld Fog summons the unique fog weather condition in battle.
|
||||
#define B_OVERWORLD_SNOW GEN_LATEST // In Gen9+, overworld Snow will summon snow instead of hail in battle.
|
||||
#define B_SNOW_WARNING GEN_LATEST // In Gen9+, Snow Warning will summon snow instead of hail.
|
||||
#define B_PREFERRED_ICE_WEATHER B_ICE_WEATHER_BOTH // Toggles Hail move effects to Snow and vice versa.
|
||||
|
||||
// Terrain settings
|
||||
#define B_TERRAIN_BG_CHANGE TRUE // If set to TRUE, terrain moves permanently change the default battle background until the effect fades.
|
||||
#define B_THUNDERSTORM_TERRAIN TRUE // If TRUE, overworld Thunderstorm generates Rain and Electric Terrain as in Gen 8.
|
||||
|
|
@ -243,11 +257,16 @@
|
|||
#define B_WAIT_TIME_MULTIPLIER 16 // This determines how long text pauses in battle last. Vanilla is 16. Lower values result in faster battles.
|
||||
#define B_QUICK_MOVE_CURSOR_TO_RUN FALSE // If set to TRUE, pushing B in the battle options against a wild encounter will move the cursor to the run option
|
||||
#define B_MOVE_DESCRIPTION_BUTTON L_BUTTON // If set to a button other than B_LAST_USED_BALL_BUTTON, pressing this button will open the move description menu
|
||||
#define B_SHOW_USELESS_Z_MOVE_INFO FALSE // If set to TRUE, Z-moves without additional effects like newer gen status moves will say "no additional effect"
|
||||
#define B_ANIMATE_MON_AFTER_KO TRUE // If set to TRUE, if a Pokémon on the opposite site faints, the non-fainted Pokemon will display a victory animation.
|
||||
#define B_SHOW_DYNAMAX_MESSAGE FALSE // If set to TRUE, an additional battle message is shown after completing Dynamaxing/Gigantamaxing.
|
||||
|
||||
// Catching settings
|
||||
#define B_SEMI_INVULNERABLE_CATCH GEN_LATEST // In Gen4+, you cannot throw a ball against a Pokemon that is in a semi-invulnerable state (dig/fly/etc)
|
||||
#define B_CATCHING_CHARM_BOOST 20 // % boost in Critical Capture odds if player has the Catching Charm.
|
||||
#define B_CRITICAL_CAPTURE TRUE // If set to TRUE, Critical Capture will be enabled.
|
||||
#define B_SEMI_INVULNERABLE_CATCH GEN_LATEST // In Gen4+, you cannot throw a ball against a Pokemon that is in a semi-invulnerable state (dig/fly/etc)
|
||||
#define B_CATCHING_CHARM_BOOST 20 // % boost in Critical Capture odds if player has the Catching Charm.
|
||||
#define B_CRITICAL_CAPTURE TRUE // If set to TRUE, Critical Capture will be enabled.
|
||||
#define B_CRITICAL_CAPTURE_LOCAL_DEX TRUE // If set to FALSE, Critical Capture % is based off of the National Pokedex estimated by enabled generations.
|
||||
|
||||
#define B_LAST_USED_BALL TRUE // If TRUE, the "last used ball" feature from Gen 7 will be implemented
|
||||
#define B_LAST_USED_BALL_BUTTON R_BUTTON // If last used ball is implemented, this button (or button combo) will trigger throwing the last used ball.
|
||||
#define B_LAST_USED_BALL_CYCLE TRUE // If TRUE, then holding B_LAST_USED_BALL_BUTTON while pressing the D-Pad cycles through the balls
|
||||
|
|
@ -265,12 +284,15 @@
|
|||
#define B_TRAINER_MON_RANDOM_ABILITY FALSE // If this is set to TRUE a random legal ability will be generated for a trainer mon
|
||||
#define B_OBEDIENCE_MECHANICS GEN_LATEST // In PLA+ (here Gen8+), obedience restrictions also apply to non-outsider Pokémon, albeit based on their level met rather than actual level
|
||||
#define B_USE_FROSTBITE FALSE // In PLA, Frostbite replaces Freeze. Enabling this flag does the same here. Moves can still be cherry-picked to either Freeze or Frostbite. Freeze-Dry, Secret Power & Tri Attack depend on this config.
|
||||
#define B_OVERWORLD_SNOW GEN_LATEST // In Gen9+, overworld Snow will summon snow instead of hail in battle.
|
||||
#define B_OVERWORLD_FOG GEN_LATEST // In Gen8+, overworld Fog summons Misty Terrain in battle. In Gen4 only, overworld Fog summons the unique fog weather condition in battle.
|
||||
#define B_TOXIC_REVERSAL GEN_LATEST // In Gen5+, bad poison will change to regular poison at the end of battles.
|
||||
#define B_TRY_CATCH_TRAINER_BALL GEN_LATEST // In Gen4+, trying to catch a Trainer's Pokémon does not consume the Poké Ball.
|
||||
#define B_SLEEP_CLAUSE FALSE // Enables Sleep Clause all the time in every case, overriding B_FLAG_SLEEP_CLAUSE. Use that for modularity.
|
||||
|
||||
#define NUM_BEEPS_GEN_LATEST 4 // Loops 4 times
|
||||
#define NUM_BEEPS_GEN_3 -1 // Loops infinitely
|
||||
#define NUM_BEEPS_OFF 0 // Doesn't play at all
|
||||
#define B_NUM_LOW_HEALTH_BEEPS NUM_BEEPS_GEN_LATEST // This controls the number of times the "low health" beep will loop. Setting this value to NUM_BEEPS_OFF will disable the beep, while NUM_BEEPS_GEN_3 will loop infinitely. You can set this to any number you want, the defines listed are just for ease of use.
|
||||
|
||||
// Animation Settings
|
||||
#define B_NEW_SWORD_PARTICLE FALSE // If set to TRUE, it updates Swords Dance's particle.
|
||||
#define B_NEW_LEECH_SEED_PARTICLE FALSE // If set to TRUE, it updates Leech Seed's animation particle.
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@
|
|||
#define OW_DOUBLE_APPROACH_WITH_ONE_MON FALSE // If enabled, you can be spotted by two trainers at the same time even if you only have one eligible Pokémon in your party.
|
||||
#define OW_HIDE_REPEAT_MAP_POPUP FALSE // If enabled, map popups will not appear if entering a map with the same Map Section Id as the last.
|
||||
#define OW_FRLG_WHITEOUT FALSE // If enabled, shows an additional whiteout message and post whiteout event script with healing NPC.
|
||||
#define OW_DEFOG_FIELD_MOVE FALSE // If enabled, Defog can be used as a Field Move as seen in DPPt.
|
||||
|
||||
// Item Obtain Description Box
|
||||
#define OW_ITEM_DESCRIPTIONS_OFF 0 // never show descriptions
|
||||
|
|
@ -83,10 +84,14 @@
|
|||
// These generational defines only make a distinction for OW_ALTERED_TIME_RATIO
|
||||
#define GEN_8_PLA GEN_LATEST + 2
|
||||
|
||||
// Time
|
||||
#define OW_TIMES_OF_DAY GEN_LATEST // Different generations have the times of day change at different times.
|
||||
#define OW_USE_FAKE_RTC FALSE // When TRUE, seconds on the in-game clock will only advance once every 60 playTimeVBlanks (every 60 frames).
|
||||
#define OW_ALTERED_TIME_RATIO GEN_LATEST // In GEN_8_PLA, the time in game moves forward 60 seconds for every second in the RTC. In GEN_9, it is 20 seconds. This has no effect if OW_USE_FAKE_RTC is FALSE.
|
||||
//Time
|
||||
#define OW_TIMES_OF_DAY GEN_LATEST // Different generations have the times of day change at different times.
|
||||
#define OW_USE_FAKE_RTC FALSE // When TRUE, seconds on the in-game clock will only advance once every 60 playTimeVBlanks (every 60 frames).
|
||||
#define OW_ALTERED_TIME_RATIO GEN_LATEST // In GEN_8_PLA, the time in game moves forward 60 seconds for every second in the RTC. In GEN_9, it is 20 seconds. This has no effect if OW_USE_FAKE_RTC is FALSE.
|
||||
#define OW_TIME_OF_DAY_ENCOUNTERS FALSE // If TRUE, will allow the user to define and use different encounter tables based on the time of day.
|
||||
#define OW_TIME_OF_DAY_DISABLE_FALLBACK FALSE // If TRUE, if the encounter table for a specific map and time is empty, the area will have no encounters instead of falling back to the vanilla map and time.
|
||||
#define OW_TIME_OF_DAY_DEFAULT TIME_MORNING // Should be set to whatever is the first value in the TimeOfDay enum in rtc.h
|
||||
#define OW_TIME_OF_DAY_FALLBACK OW_TIME_OF_DAY_DEFAULT // The time of day that encounter tables fall back to. Defaults to whatever OW_TIME_OF_DAY_FALLBACK is set to.
|
||||
|
||||
// Lighting
|
||||
#define OW_SHADOW_INTENSITY 4 // Ranges from 0 to 16, where 0 is fully transparent and 16 is black.
|
||||
|
|
|
|||
|
|
@ -1131,10 +1131,17 @@
|
|||
|
||||
// Vars
|
||||
#undef B_VAR_DIFFICULTY
|
||||
#define B_VAR_DIFFICULTY VAR_UNUSED_0x404E
|
||||
#define B_VAR_DIFFICULTY TESTING_VAR_DIFFICULTY
|
||||
|
||||
// Flags
|
||||
#undef B_FLAG_SLEEP_CLAUSE
|
||||
#define B_FLAG_SLEEP_CLAUSE FLAG_SPECIAL_FLAG_UNUSED_0x4003
|
||||
#define B_FLAG_SLEEP_CLAUSE TESTING_FLAG_SLEEP_CLAUSE
|
||||
|
||||
// Move animation testing
|
||||
#define T_SHOULD_RUN_MOVE_ANIM FALSE // If TRUE, enables the move animation tests, these are very computationally heavy and takes a long time to run.
|
||||
|
||||
#define ANIM_TEST_START_MOVE 1 // First move to test
|
||||
#define ANIM_TEST_END_MOVE MOVES_COUNT-1 // Last move to test
|
||||
|
||||
|
||||
#endif // GUARD_CONFIG_TEST_H
|
||||
|
|
|
|||
|
|
@ -239,15 +239,11 @@
|
|||
#define SIDE_STATUS_TOXIC_SPIKES (1 << 13)
|
||||
#define SIDE_STATUS_STEALTH_ROCK (1 << 14)
|
||||
// Missing flags previously were SIDE_STATUS_TOXIC_SPIKES_DAMAGED, SIDE_STATUS_STEALTH_ROCK_DAMAGED, SIDE_STATUS_STICKY_WEB_DAMAGED
|
||||
#define SIDE_STATUS_QUICK_GUARD (1 << 18)
|
||||
#define SIDE_STATUS_WIDE_GUARD (1 << 19)
|
||||
#define SIDE_STATUS_CRAFTY_SHIELD (1 << 20)
|
||||
#define SIDE_STATUS_MAT_BLOCK (1 << 21)
|
||||
#define SIDE_STATUS_STEELSURGE (1 << 22)
|
||||
#define SIDE_STATUS_DAMAGE_NON_TYPES (1 << 23)
|
||||
#define SIDE_STATUS_RAINBOW (1 << 24)
|
||||
#define SIDE_STATUS_SEA_OF_FIRE (1 << 25)
|
||||
#define SIDE_STATUS_SWAMP (1 << 26)
|
||||
#define SIDE_STATUS_STEELSURGE (1 << 18)
|
||||
#define SIDE_STATUS_DAMAGE_NON_TYPES (1 << 19)
|
||||
#define SIDE_STATUS_RAINBOW (1 << 20)
|
||||
#define SIDE_STATUS_SEA_OF_FIRE (1 << 21)
|
||||
#define SIDE_STATUS_SWAMP (1 << 22)
|
||||
|
||||
#define SIDE_STATUS_HAZARDS_ANY (SIDE_STATUS_SPIKES | SIDE_STATUS_STICKY_WEB | SIDE_STATUS_TOXIC_SPIKES | SIDE_STATUS_STEALTH_ROCK | SIDE_STATUS_STEELSURGE)
|
||||
#define SIDE_STATUS_SCREEN_ANY (SIDE_STATUS_REFLECT | SIDE_STATUS_LIGHTSCREEN | SIDE_STATUS_AURORA_VEIL)
|
||||
|
|
@ -558,7 +554,7 @@ enum MoveEffects
|
|||
|
||||
#define MOVE_TARGET_SELECTED 0
|
||||
#define MOVE_TARGET_DEPENDS (1 << 0)
|
||||
#define MOVE_TARGET_USER_OR_SELECTED (1 << 1)
|
||||
#define MOVE_TARGET_OPPONENT (1 << 1)
|
||||
#define MOVE_TARGET_RANDOM (1 << 2)
|
||||
#define MOVE_TARGET_BOTH (1 << 3)
|
||||
#define MOVE_TARGET_USER (1 << 4)
|
||||
|
|
|
|||
|
|
@ -506,9 +506,9 @@
|
|||
#define BG_BOLT_STRIKE 55
|
||||
#define BG_ZMOVE_ACTIVATE 56
|
||||
#define BG_TECTONIC_RAGE 57
|
||||
#define BG_BLUE_SKY_DAY 58
|
||||
#define BG_BLUE_SKY_AFTERNOON 59
|
||||
#define BG_BLUE_SKY_NIGHT 60
|
||||
#define BG_ROCK_FIELD_DAY 58
|
||||
#define BG_ROCK_FIELD_AFTERNOON 59
|
||||
#define BG_ROCK_FIELD_NIGHT 60
|
||||
#define BG_ZMOVE_MOUNTAIN 61
|
||||
#define BG_NEVERENDING_NIGHTMARE 62
|
||||
#define BG_WATER_PULSE 63
|
||||
|
|
|
|||
|
|
@ -352,6 +352,7 @@ enum {
|
|||
EFFECT_ORDER_UP,
|
||||
EFFECT_RAPID_SPIN,
|
||||
EFFECT_SPECTRAL_THIEF,
|
||||
EFFECT_RECOIL,
|
||||
NUM_BATTLE_MOVE_EFFECTS,
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -121,7 +121,6 @@ enum CmdVarious
|
|||
VARIOUS_INSTANT_HP_DROP,
|
||||
VARIOUS_CLEAR_STATUS,
|
||||
VARIOUS_RESTORE_PP,
|
||||
VARIOUS_TRY_ACTIVATE_MOXIE,
|
||||
VARIOUS_TRY_ACTIVATE_FELL_STINGER,
|
||||
VARIOUS_PLAY_MOVE_ANIMATION,
|
||||
VARIOUS_SET_LUCKY_CHANT,
|
||||
|
|
@ -168,7 +167,6 @@ enum CmdVarious
|
|||
VARIOUS_LOSE_TYPE,
|
||||
VARIOUS_TRY_ACTIVATE_SOULHEART,
|
||||
VARIOUS_TRY_ACTIVATE_RECEIVER,
|
||||
VARIOUS_TRY_ACTIVATE_BEAST_BOOST,
|
||||
VARIOUS_TRY_FRISK,
|
||||
VARIOUS_JUMP_IF_SHIELDS_DOWN_PROTECTED,
|
||||
VARIOUS_TRY_FAIRY_LOCK,
|
||||
|
|
@ -181,7 +179,6 @@ enum CmdVarious
|
|||
VARIOUS_JUMP_IF_ABSENT,
|
||||
VARIOUS_DESTROY_ABILITY_POPUP,
|
||||
VARIOUS_TOTEM_BOOST,
|
||||
VARIOUS_TRY_ACTIVATE_GRIM_NEIGH,
|
||||
VARIOUS_MOVEEND_ITEM_EFFECTS,
|
||||
VARIOUS_TERRAIN_SEED,
|
||||
VARIOUS_MAKE_INVISIBLE,
|
||||
|
|
@ -192,7 +189,6 @@ enum CmdVarious
|
|||
VARIOUS_TRY_TO_CLEAR_PRIMAL_WEATHER,
|
||||
VARIOUS_GET_ROTOTILLER_TARGETS,
|
||||
VARIOUS_JUMP_IF_NOT_ROTOTILLER_AFFECTED,
|
||||
VARIOUS_TRY_ACTIVATE_BATTLE_BOND,
|
||||
VARIOUS_CONSUME_BERRY,
|
||||
VARIOUS_JUMP_IF_CANT_REVERT_TO_PRIMAL,
|
||||
VARIOUS_JUMP_IF_SPECIES,
|
||||
|
|
@ -219,13 +215,11 @@ enum CmdVarious
|
|||
|
||||
// Cmd_manipulatedamage
|
||||
#define DMG_CHANGE_SIGN 1
|
||||
#define DMG_RECOIL_FROM_MISS 2
|
||||
#define DMG_DOUBLED 3
|
||||
#define DMG_1_8_TARGET_HP 4
|
||||
#define DMG_FULL_ATTACKER_HP 5
|
||||
#define DMG_CURR_ATTACKER_HP 6
|
||||
#define DMG_BIG_ROOT 7
|
||||
#define DMG_RECOIL_FROM_IMMUNE 8 // Used to calculate recoil for the Gen 4 version of Jump Kick
|
||||
#define DMG_DOUBLED 2
|
||||
#define DMG_1_8_TARGET_HP 3
|
||||
#define DMG_FULL_ATTACKER_HP 4
|
||||
#define DMG_CURR_ATTACKER_HP 5
|
||||
#define DMG_BIG_ROOT 6
|
||||
|
||||
// Cmd_jumpifcantswitch
|
||||
#define SWITCH_IGNORE_ESCAPE_PREVENTION (1 << 7)
|
||||
|
|
@ -273,9 +267,9 @@ enum MoveEndEffects
|
|||
MOVEEND_ITEM_EFFECTS_TARGET,
|
||||
MOVEEND_MOVE_EFFECTS2,
|
||||
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_NUM_HITS,
|
||||
MOVEEND_SUBSTITUTE,
|
||||
MOVEEND_SKY_DROP_CONFUSE,
|
||||
MOVEEND_UPDATE_LAST_MOVES,
|
||||
|
|
@ -286,20 +280,20 @@ enum MoveEndEffects
|
|||
MOVEEND_RECOIL,
|
||||
MOVEEND_RAPID_SPIN,
|
||||
MOVEEND_ITEM_EFFECTS_ATTACKER,
|
||||
MOVEEND_MAGICIAN, // Occurs after final multi-hit strike, and after other items/abilities would activate
|
||||
MOVEEND_ABILITY_BLOCK,
|
||||
MOVEEND_SHEER_FORCE, // If move is Sheer Force affected, skip until Eject Pack
|
||||
MOVEEND_RED_CARD, // Red Card triggers before Eject Pack
|
||||
MOVEEND_EJECT_ITEMS,
|
||||
MOVEEND_WHITE_HERB,
|
||||
MOVEEND_EJECT_BUTTON,
|
||||
MOVEEND_LIFEORB_SHELLBELL, // Includes shell bell, throat spray, etc
|
||||
MOVEEND_CHANGED_ITEMS,
|
||||
MOVEEND_PICKPOCKET,
|
||||
MOVEEND_DANCER,
|
||||
MOVEEND_EMERGENCY_EXIT,
|
||||
MOVEEND_SYMBIOSIS,
|
||||
MOVEEND_EJECT_PACK,
|
||||
MOVEEND_OPPORTUNIST, // Occurs after other stat change items/abilities to try and copy the boosts
|
||||
MOVEEND_PICKPOCKET,
|
||||
MOVEEND_WHITE_HERB,
|
||||
MOVEEND_CHANGED_ITEMS,
|
||||
MOVEEND_SAME_MOVE_TURNS,
|
||||
MOVEEND_SET_EVOLUTION_TRACKER,
|
||||
MOVEEND_CLEAR_BITS,
|
||||
MOVEEND_DANCER,
|
||||
MOVEEND_PURSUIT_NEXT_ACTION,
|
||||
MOVEEND_COUNT,
|
||||
};
|
||||
|
|
|
|||
|
|
@ -467,270 +467,273 @@
|
|||
#define STRINGID_FRISKACTIVATES 465
|
||||
#define STRINGID_UNNERVEENTERS 466
|
||||
#define STRINGID_HARVESTBERRY 467
|
||||
#define STRINGID_LASTABILITYRAISEDSTAT 468
|
||||
#define STRINGID_MAGICBOUNCEACTIVATES 469
|
||||
#define STRINGID_PROTEANTYPECHANGE 470
|
||||
#define STRINGID_SYMBIOSISITEMPASS 471
|
||||
#define STRINGID_STEALTHROCKDMG 472
|
||||
#define STRINGID_TOXICSPIKESABSORBED 473
|
||||
#define STRINGID_TOXICSPIKESPOISONED 474
|
||||
#define STRINGID_STICKYWEBSWITCHIN 475
|
||||
#define STRINGID_HEALINGWISHCAMETRUE 476
|
||||
#define STRINGID_HEALINGWISHHEALED 477
|
||||
#define STRINGID_LUNARDANCECAMETRUE 478
|
||||
#define STRINGID_CUSEDBODYDISABLED 479
|
||||
#define STRINGID_ATTACKERACQUIREDABILITY 480
|
||||
#define STRINGID_TARGETABILITYSTATLOWER 481
|
||||
#define STRINGID_TARGETSTATWONTGOHIGHER 482
|
||||
#define STRINGID_PKMNMOVEBOUNCEDABILITY 483
|
||||
#define STRINGID_IMPOSTERTRANSFORM 484
|
||||
#define STRINGID_ASSAULTVESTDOESNTALLOW 485
|
||||
#define STRINGID_GRAVITYPREVENTSUSAGE 486
|
||||
#define STRINGID_HEALBLOCKPREVENTSUSAGE 487
|
||||
#define STRINGID_NOTDONEYET 488
|
||||
#define STRINGID_STICKYWEBUSED 489
|
||||
#define STRINGID_QUASHSUCCESS 490
|
||||
#define STRINGID_PKMNBLEWAWAYTOXICSPIKES 491
|
||||
#define STRINGID_PKMNBLEWAWAYSTICKYWEB 492
|
||||
#define STRINGID_PKMNBLEWAWAYSTEALTHROCK 493
|
||||
#define STRINGID_IONDELUGEON 494
|
||||
#define STRINGID_TOPSYTURVYSWITCHEDSTATS 495
|
||||
#define STRINGID_TERRAINBECOMESMISTY 496
|
||||
#define STRINGID_TERRAINBECOMESGRASSY 497
|
||||
#define STRINGID_TERRAINBECOMESELECTRIC 498
|
||||
#define STRINGID_TERRAINBECOMESPSYCHIC 499
|
||||
#define STRINGID_TARGETELECTRIFIED 500
|
||||
#define STRINGID_MEGAEVOREACTING 501
|
||||
#define STRINGID_MEGAEVOEVOLVED 502
|
||||
#define STRINGID_DRASTICALLY 503
|
||||
#define STRINGID_SEVERELY 504
|
||||
#define STRINGID_INFESTATION 505
|
||||
#define STRINGID_NOEFFECTONTARGET 506
|
||||
#define STRINGID_BURSTINGFLAMESHIT 507
|
||||
#define STRINGID_BESTOWITEMGIVING 508
|
||||
#define STRINGID_THIRDTYPEADDED 509
|
||||
#define STRINGID_FELLFORFEINT 510
|
||||
#define STRINGID_POKEMONCANNOTUSEMOVE 511
|
||||
#define STRINGID_COVEREDINPOWDER 512
|
||||
#define STRINGID_POWDEREXPLODES 513
|
||||
#define STRINGID_BELCHCANTSELECT 514
|
||||
#define STRINGID_SPECTRALTHIEFSTEAL 515
|
||||
#define STRINGID_GRAVITYGROUNDING 516
|
||||
#define STRINGID_MISTYTERRAINPREVENTS 517
|
||||
#define STRINGID_GRASSYTERRAINHEALS 518
|
||||
#define STRINGID_ELECTRICTERRAINPREVENTS 519
|
||||
#define STRINGID_PSYCHICTERRAINPREVENTS 520
|
||||
#define STRINGID_SAFETYGOGGLESPROTECTED 521
|
||||
#define STRINGID_FLOWERVEILPROTECTED 522
|
||||
#define STRINGID_SWEETVEILPROTECTED 523
|
||||
#define STRINGID_AROMAVEILPROTECTED 524
|
||||
#define STRINGID_CELEBRATEMESSAGE 525
|
||||
#define STRINGID_USEDINSTRUCTEDMOVE 526
|
||||
#define STRINGID_THROATCHOPENDS 527
|
||||
#define STRINGID_PKMNCANTUSEMOVETHROATCHOP 528
|
||||
#define STRINGID_LASERFOCUS 529
|
||||
#define STRINGID_GEMACTIVATES 530
|
||||
#define STRINGID_BERRYDMGREDUCES 531
|
||||
#define STRINGID_AIRBALLOONFLOAT 532
|
||||
#define STRINGID_AIRBALLOONPOP 533
|
||||
#define STRINGID_INCINERATEBURN 534
|
||||
#define STRINGID_BUGBITE 535
|
||||
#define STRINGID_ILLUSIONWOREOFF 536
|
||||
#define STRINGID_ATTACKERCUREDTARGETSTATUS 537
|
||||
#define STRINGID_ATTACKERLOSTFIRETYPE 538
|
||||
#define STRINGID_HEALERCURE 539
|
||||
#define STRINGID_SCRIPTINGABILITYSTATRAISE 540
|
||||
#define STRINGID_RECEIVERABILITYTAKEOVER 541
|
||||
#define STRINGID_PKNMABSORBINGPOWER 542
|
||||
#define STRINGID_NOONEWILLBEABLETORUNAWAY 543
|
||||
#define STRINGID_DESTINYKNOTACTIVATES 544
|
||||
#define STRINGID_CLOAKEDINAFREEZINGLIGHT 545
|
||||
#define STRINGID_CLEARAMULETWONTLOWERSTATS 546
|
||||
#define STRINGID_FERVENTWISHREACHED 547
|
||||
#define STRINGID_AIRLOCKACTIVATES 548
|
||||
#define STRINGID_PRESSUREENTERS 549
|
||||
#define STRINGID_DARKAURAENTERS 550
|
||||
#define STRINGID_FAIRYAURAENTERS 551
|
||||
#define STRINGID_AURABREAKENTERS 552
|
||||
#define STRINGID_COMATOSEENTERS 553
|
||||
#define STRINGID_SCREENCLEANERENTERS 554
|
||||
#define STRINGID_FETCHEDPOKEBALL 555
|
||||
#define STRINGID_BATTLERABILITYRAISEDSTAT 556
|
||||
#define STRINGID_ASANDSTORMKICKEDUP 557
|
||||
#define STRINGID_PKMNSWILLPERISHIN3TURNS 558
|
||||
#define STRINGID_ABILITYRAISEDSTATDRASTICALLY 559
|
||||
#define STRINGID_AURAFLAREDTOLIFE 560
|
||||
#define STRINGID_ASONEENTERS 561
|
||||
#define STRINGID_CURIOUSMEDICINEENTERS 562
|
||||
#define STRINGID_CANACTFASTERTHANKSTO 563
|
||||
#define STRINGID_MICLEBERRYACTIVATES 564
|
||||
#define STRINGID_PKMNSHOOKOFFTHETAUNT 565
|
||||
#define STRINGID_PKMNGOTOVERITSINFATUATION 566
|
||||
#define STRINGID_ITEMCANNOTBEREMOVED 567
|
||||
#define STRINGID_STICKYBARBTRANSFER 568
|
||||
#define STRINGID_PKMNBURNHEALED 569
|
||||
#define STRINGID_REDCARDACTIVATE 570
|
||||
#define STRINGID_EJECTBUTTONACTIVATE 571
|
||||
#define STRINGID_ATKGOTOVERINFATUATION 572
|
||||
#define STRINGID_TORMENTEDNOMORE 573
|
||||
#define STRINGID_HEALBLOCKEDNOMORE 574
|
||||
#define STRINGID_ATTACKERBECAMEFULLYCHARGED 575
|
||||
#define STRINGID_ATTACKERBECAMEASHSPECIES 576
|
||||
#define STRINGID_EXTREMELYHARSHSUNLIGHT 577
|
||||
#define STRINGID_EXTREMESUNLIGHTFADED 578
|
||||
#define STRINGID_MOVEEVAPORATEDINTHEHARSHSUNLIGHT 579
|
||||
#define STRINGID_EXTREMELYHARSHSUNLIGHTWASNOTLESSENED 580
|
||||
#define STRINGID_HEAVYRAIN 581
|
||||
#define STRINGID_HEAVYRAINLIFTED 582
|
||||
#define STRINGID_MOVEFIZZLEDOUTINTHEHEAVYRAIN 583
|
||||
#define STRINGID_NORELIEFROMHEAVYRAIN 584
|
||||
#define STRINGID_MYSTERIOUSAIRCURRENT 585
|
||||
#define STRINGID_STRONGWINDSDISSIPATED 586
|
||||
#define STRINGID_MYSTERIOUSAIRCURRENTBLOWSON 587
|
||||
#define STRINGID_ATTACKWEAKENEDBSTRONGWINDS 588
|
||||
#define STRINGID_STUFFCHEEKSCANTSELECT 589
|
||||
#define STRINGID_PKMNREVERTEDTOPRIMAL 590
|
||||
#define STRINGID_BUTPOKEMONCANTUSETHEMOVE 591
|
||||
#define STRINGID_BUTHOOPACANTUSEIT 592
|
||||
#define STRINGID_BROKETHROUGHPROTECTION 593
|
||||
#define STRINGID_ABILITYALLOWSONLYMOVE 594
|
||||
#define STRINGID_SWAPPEDABILITIES 595
|
||||
#define STRINGID_PASTELVEILPROTECTED 596
|
||||
#define STRINGID_PASTELVEILENTERS 597
|
||||
#define STRINGID_BATTLERTYPECHANGEDTO 598
|
||||
#define STRINGID_BOTHCANNOLONGERESCAPE 599
|
||||
#define STRINGID_CANTESCAPEDUETOUSEDMOVE 600
|
||||
#define STRINGID_PKMNBECAMEWEAKERTOFIRE 601
|
||||
#define STRINGID_ABOUTTOUSEPOLTERGEIST 602
|
||||
#define STRINGID_CANTESCAPEBECAUSEOFCURRENTMOVE 603
|
||||
#define STRINGID_NEUTRALIZINGGASENTERS 604
|
||||
#define STRINGID_NEUTRALIZINGGASOVER 605
|
||||
#define STRINGID_TARGETTOOHEAVY 606
|
||||
#define STRINGID_PKMNTOOKTARGETHIGH 607
|
||||
#define STRINGID_PKMNINSNAPTRAP 608
|
||||
#define STRINGID_METEORBEAMCHARGING 609
|
||||
#define STRINGID_HEATUPBEAK 610
|
||||
#define STRINGID_COURTCHANGE 611
|
||||
#define STRINGID_PLAYERLOSTTOENEMYTRAINER 612
|
||||
#define STRINGID_PLAYERPAIDPRIZEMONEY 613
|
||||
#define STRINGID_ZPOWERSURROUNDS 614
|
||||
#define STRINGID_ZMOVEUNLEASHED 615
|
||||
#define STRINGID_ZMOVERESETSSTATS 616
|
||||
#define STRINGID_ZMOVEALLSTATSUP 617
|
||||
#define STRINGID_ZMOVEZBOOSTCRIT 618
|
||||
#define STRINGID_ZMOVERESTOREHP 619
|
||||
#define STRINGID_ZMOVESTATUP 620
|
||||
#define STRINGID_ZMOVEHPTRAP 621
|
||||
#define STRINGID_ATTACKEREXPELLEDTHEPOISON 622
|
||||
#define STRINGID_ATTACKERSHOOKITSELFAWAKE 623
|
||||
#define STRINGID_ATTACKERBROKETHROUGHPARALYSIS 624
|
||||
#define STRINGID_ATTACKERHEALEDITSBURN 625
|
||||
#define STRINGID_ATTACKERMELTEDTHEICE 626
|
||||
#define STRINGID_TARGETTOUGHEDITOUT 627
|
||||
#define STRINGID_ATTACKERLOSTELECTRICTYPE 628
|
||||
#define STRINGID_ATTACKERSWITCHEDSTATWITHTARGET 629
|
||||
#define STRINGID_BEINGHITCHARGEDPKMNWITHPOWER 630
|
||||
#define STRINGID_SUNLIGHTACTIVATEDABILITY 631
|
||||
#define STRINGID_STATWASHEIGHTENED 632
|
||||
#define STRINGID_ELECTRICTERRAINACTIVATEDABILITY 633
|
||||
#define STRINGID_ABILITYWEAKENEDSURROUNDINGMONSSTAT 634
|
||||
#define STRINGID_ATTACKERGAINEDSTRENGTHFROMTHEFALLEN 635
|
||||
#define STRINGID_PKMNSABILITYPREVENTSABILITY 636
|
||||
#define STRINGID_PREPARESHELLTRAP 637
|
||||
#define STRINGID_SHELLTRAPDIDNTWORK 638
|
||||
#define STRINGID_SPIKESDISAPPEAREDFROMTEAM 639
|
||||
#define STRINGID_TOXICSPIKESDISAPPEAREDFROMTEAM 640
|
||||
#define STRINGID_STICKYWEBDISAPPEAREDFROMTEAM 641
|
||||
#define STRINGID_STEALTHROCKDISAPPEAREDFROMTEAM 642
|
||||
#define STRINGID_COULDNTFULLYPROTECT 643
|
||||
#define STRINGID_STOCKPILEDEFFECTWOREOFF 644
|
||||
#define STRINGID_PKMNREVIVEDREADYTOFIGHT 645
|
||||
#define STRINGID_ITEMRESTOREDSPECIESHEALTH 646
|
||||
#define STRINGID_ITEMCUREDSPECIESSTATUS 647
|
||||
#define STRINGID_ITEMRESTOREDSPECIESPP 648
|
||||
#define STRINGID_THUNDERCAGETRAPPED 649
|
||||
#define STRINGID_PKMNHURTBYFROSTBITE 650
|
||||
#define STRINGID_PKMNGOTFROSTBITE 651
|
||||
#define STRINGID_PKMNSITEMHEALEDFROSTBITE 652
|
||||
#define STRINGID_ATTACKERHEALEDITSFROSTBITE 653
|
||||
#define STRINGID_PKMNFROSTBITEHEALED 654
|
||||
#define STRINGID_PKMNFROSTBITEHEALED2 655
|
||||
#define STRINGID_PKMNFROSTBITEHEALEDBY 656
|
||||
#define STRINGID_MIRRORHERBCOPIED 657
|
||||
#define STRINGID_STARTEDSNOW 658
|
||||
#define STRINGID_SNOWCONTINUES 659
|
||||
#define STRINGID_SNOWSTOPPED 660
|
||||
#define STRINGID_SNOWWARNINGSNOW 661
|
||||
#define STRINGID_PKMNITEMMELTED 662
|
||||
#define STRINGID_ULTRABURSTREACTING 663
|
||||
#define STRINGID_ULTRABURSTCOMPLETED 664
|
||||
#define STRINGID_TEAMGAINEDEXP 665
|
||||
#define STRINGID_CURRENTMOVECANTSELECT 666
|
||||
#define STRINGID_TARGETISBEINGSALTCURED 667
|
||||
#define STRINGID_TARGETISHURTBYSALTCURE 668
|
||||
#define STRINGID_TARGETCOVEREDINSTICKYCANDYSYRUP 669
|
||||
#define STRINGID_SHARPSTEELFLOATS 670
|
||||
#define STRINGID_SHARPSTEELDMG 671
|
||||
#define STRINGID_PKMNBLEWAWAYSHARPSTEEL 672
|
||||
#define STRINGID_SHARPSTEELDISAPPEAREDFROMTEAM 673
|
||||
#define STRINGID_TEAMTRAPPEDWITHVINES 674
|
||||
#define STRINGID_PKMNHURTBYVINES 675
|
||||
#define STRINGID_TEAMCAUGHTINVORTEX 676
|
||||
#define STRINGID_PKMNHURTBYVORTEX 677
|
||||
#define STRINGID_TEAMSURROUNDEDBYFIRE 678
|
||||
#define STRINGID_PKMNBURNINGUP 679
|
||||
#define STRINGID_TEAMSURROUNDEDBYROCKS 680
|
||||
#define STRINGID_PKMNHURTBYROCKSTHROWN 681
|
||||
#define STRINGID_MOVEBLOCKEDBYDYNAMAX 682
|
||||
#define STRINGID_ZEROTOHEROTRANSFORMATION 683
|
||||
#define STRINGID_THETWOMOVESBECOMEONE 684
|
||||
#define STRINGID_ARAINBOWAPPEAREDONSIDE 685
|
||||
#define STRINGID_THERAINBOWDISAPPEARED 686
|
||||
#define STRINGID_WAITINGFORPARTNERSMOVE 687
|
||||
#define STRINGID_SEAOFFIREENVELOPEDSIDE 688
|
||||
#define STRINGID_HURTBYTHESEAOFFIRE 689
|
||||
#define STRINGID_THESEAOFFIREDISAPPEARED 690
|
||||
#define STRINGID_SWAMPENVELOPEDSIDE 691
|
||||
#define STRINGID_THESWAMPDISAPPEARED 692
|
||||
#define STRINGID_PKMNTELLCHILLINGRECEPTIONJOKE 693
|
||||
#define STRINGID_HOSPITALITYRESTORATION 694
|
||||
#define STRINGID_ELECTROSHOTCHARGING 695
|
||||
#define STRINGID_ITEMWASUSEDUP 696
|
||||
#define STRINGID_ATTACKERLOSTITSTYPE 697
|
||||
#define STRINGID_SHEDITSTAIL 698
|
||||
#define STRINGID_CLOAKEDINAHARSHLIGHT 699
|
||||
#define STRINGID_SUPERSWEETAROMAWAFTS 700
|
||||
#define STRINGID_DIMENSIONSWERETWISTED 701
|
||||
#define STRINGID_BIZARREARENACREATED 702
|
||||
#define STRINGID_BIZARREAREACREATED 703
|
||||
#define STRINGID_TIDYINGUPCOMPLETE 704
|
||||
#define STRINGID_PKMNTERASTALLIZEDINTO 705
|
||||
#define STRINGID_BOOSTERENERGYACTIVATES 706
|
||||
#define STRINGID_FOGCREPTUP 707
|
||||
#define STRINGID_FOGISDEEP 708
|
||||
#define STRINGID_FOGLIFTED 709
|
||||
#define STRINGID_PKMNMADESHELLGLEAM 710
|
||||
#define STRINGID_FICKLEBEAMDOUBLED 711
|
||||
#define STRINGID_COMMANDERACTIVATES 712
|
||||
#define STRINGID_POKEFLUTECATCHY 713
|
||||
#define STRINGID_POKEFLUTE 714
|
||||
#define STRINGID_MONHEARINGFLUTEAWOKE 715
|
||||
#define STRINGID_SUNLIGHTISHARSH 716
|
||||
#define STRINGID_ITISHAILING 717
|
||||
#define STRINGID_ITISSNOWING 718
|
||||
#define STRINGID_ISCOVEREDWITHGRASS 719
|
||||
#define STRINGID_MISTSWIRLSAROUND 720
|
||||
#define STRINGID_ELECTRICCURRENTISRUNNING 721
|
||||
#define STRINGID_SEEMSWEIRD 722
|
||||
#define STRINGID_WAGGLINGAFINGER 723
|
||||
#define STRINGID_BLOCKEDBYSLEEPCLAUSE 724
|
||||
#define STRINGID_SUPEREFFECTIVETWOFOES 725
|
||||
#define STRINGID_NOTVERYEFFECTIVETWOFOES 726
|
||||
#define STRINGID_ITDOESNTAFFECTTWOFOES 727
|
||||
#define STRINGID_SENDCAUGHTMONPARTYORBOX 728
|
||||
#define STRINGID_PKMNSENTTOPCAFTERCATCH 729
|
||||
#define STRINGID_MAGICBOUNCEACTIVATES 468
|
||||
#define STRINGID_PROTEANTYPECHANGE 469
|
||||
#define STRINGID_SYMBIOSISITEMPASS 470
|
||||
#define STRINGID_STEALTHROCKDMG 471
|
||||
#define STRINGID_TOXICSPIKESABSORBED 472
|
||||
#define STRINGID_TOXICSPIKESPOISONED 473
|
||||
#define STRINGID_STICKYWEBSWITCHIN 474
|
||||
#define STRINGID_HEALINGWISHCAMETRUE 475
|
||||
#define STRINGID_HEALINGWISHHEALED 476
|
||||
#define STRINGID_LUNARDANCECAMETRUE 477
|
||||
#define STRINGID_CUSEDBODYDISABLED 478
|
||||
#define STRINGID_ATTACKERACQUIREDABILITY 479
|
||||
#define STRINGID_TARGETABILITYSTATLOWER 480
|
||||
#define STRINGID_TARGETSTATWONTGOHIGHER 481
|
||||
#define STRINGID_PKMNMOVEBOUNCEDABILITY 482
|
||||
#define STRINGID_IMPOSTERTRANSFORM 483
|
||||
#define STRINGID_ASSAULTVESTDOESNTALLOW 484
|
||||
#define STRINGID_GRAVITYPREVENTSUSAGE 485
|
||||
#define STRINGID_HEALBLOCKPREVENTSUSAGE 486
|
||||
#define STRINGID_NOTDONEYET 487
|
||||
#define STRINGID_STICKYWEBUSED 488
|
||||
#define STRINGID_QUASHSUCCESS 489
|
||||
#define STRINGID_PKMNBLEWAWAYTOXICSPIKES 490
|
||||
#define STRINGID_PKMNBLEWAWAYSTICKYWEB 491
|
||||
#define STRINGID_PKMNBLEWAWAYSTEALTHROCK 492
|
||||
#define STRINGID_IONDELUGEON 493
|
||||
#define STRINGID_TOPSYTURVYSWITCHEDSTATS 494
|
||||
#define STRINGID_TERRAINBECOMESMISTY 495
|
||||
#define STRINGID_TERRAINBECOMESGRASSY 496
|
||||
#define STRINGID_TERRAINBECOMESELECTRIC 497
|
||||
#define STRINGID_TERRAINBECOMESPSYCHIC 498
|
||||
#define STRINGID_TARGETELECTRIFIED 499
|
||||
#define STRINGID_MEGAEVOREACTING 500
|
||||
#define STRINGID_MEGAEVOEVOLVED 501
|
||||
#define STRINGID_DRASTICALLY 502
|
||||
#define STRINGID_SEVERELY 503
|
||||
#define STRINGID_INFESTATION 504
|
||||
#define STRINGID_NOEFFECTONTARGET 505
|
||||
#define STRINGID_BURSTINGFLAMESHIT 506
|
||||
#define STRINGID_BESTOWITEMGIVING 507
|
||||
#define STRINGID_THIRDTYPEADDED 508
|
||||
#define STRINGID_FELLFORFEINT 509
|
||||
#define STRINGID_POKEMONCANNOTUSEMOVE 510
|
||||
#define STRINGID_COVEREDINPOWDER 511
|
||||
#define STRINGID_POWDEREXPLODES 512
|
||||
#define STRINGID_BELCHCANTSELECT 513
|
||||
#define STRINGID_SPECTRALTHIEFSTEAL 514
|
||||
#define STRINGID_GRAVITYGROUNDING 515
|
||||
#define STRINGID_MISTYTERRAINPREVENTS 516
|
||||
#define STRINGID_GRASSYTERRAINHEALS 517
|
||||
#define STRINGID_ELECTRICTERRAINPREVENTS 518
|
||||
#define STRINGID_PSYCHICTERRAINPREVENTS 519
|
||||
#define STRINGID_SAFETYGOGGLESPROTECTED 520
|
||||
#define STRINGID_FLOWERVEILPROTECTED 521
|
||||
#define STRINGID_SWEETVEILPROTECTED 522
|
||||
#define STRINGID_AROMAVEILPROTECTED 523
|
||||
#define STRINGID_CELEBRATEMESSAGE 524
|
||||
#define STRINGID_USEDINSTRUCTEDMOVE 525
|
||||
#define STRINGID_THROATCHOPENDS 526
|
||||
#define STRINGID_PKMNCANTUSEMOVETHROATCHOP 527
|
||||
#define STRINGID_LASERFOCUS 528
|
||||
#define STRINGID_GEMACTIVATES 529
|
||||
#define STRINGID_BERRYDMGREDUCES 530
|
||||
#define STRINGID_AIRBALLOONFLOAT 531
|
||||
#define STRINGID_AIRBALLOONPOP 532
|
||||
#define STRINGID_INCINERATEBURN 533
|
||||
#define STRINGID_BUGBITE 534
|
||||
#define STRINGID_ILLUSIONWOREOFF 535
|
||||
#define STRINGID_ATTACKERCUREDTARGETSTATUS 536
|
||||
#define STRINGID_ATTACKERLOSTFIRETYPE 537
|
||||
#define STRINGID_HEALERCURE 538
|
||||
#define STRINGID_SCRIPTINGABILITYSTATRAISE 539
|
||||
#define STRINGID_RECEIVERABILITYTAKEOVER 540
|
||||
#define STRINGID_PKNMABSORBINGPOWER 541
|
||||
#define STRINGID_NOONEWILLBEABLETORUNAWAY 542
|
||||
#define STRINGID_DESTINYKNOTACTIVATES 543
|
||||
#define STRINGID_CLOAKEDINAFREEZINGLIGHT 544
|
||||
#define STRINGID_CLEARAMULETWONTLOWERSTATS 545
|
||||
#define STRINGID_FERVENTWISHREACHED 546
|
||||
#define STRINGID_AIRLOCKACTIVATES 547
|
||||
#define STRINGID_PRESSUREENTERS 548
|
||||
#define STRINGID_DARKAURAENTERS 549
|
||||
#define STRINGID_FAIRYAURAENTERS 550
|
||||
#define STRINGID_AURABREAKENTERS 551
|
||||
#define STRINGID_COMATOSEENTERS 552
|
||||
#define STRINGID_SCREENCLEANERENTERS 553
|
||||
#define STRINGID_FETCHEDPOKEBALL 554
|
||||
#define STRINGID_BATTLERABILITYRAISEDSTAT 555
|
||||
#define STRINGID_ASANDSTORMKICKEDUP 556
|
||||
#define STRINGID_PKMNSWILLPERISHIN3TURNS 557
|
||||
#define STRINGID_ABILITYRAISEDSTATDRASTICALLY 558
|
||||
#define STRINGID_AURAFLAREDTOLIFE 559
|
||||
#define STRINGID_ASONEENTERS 560
|
||||
#define STRINGID_CURIOUSMEDICINEENTERS 561
|
||||
#define STRINGID_CANACTFASTERTHANKSTO 562
|
||||
#define STRINGID_MICLEBERRYACTIVATES 563
|
||||
#define STRINGID_PKMNSHOOKOFFTHETAUNT 564
|
||||
#define STRINGID_PKMNGOTOVERITSINFATUATION 565
|
||||
#define STRINGID_ITEMCANNOTBEREMOVED 566
|
||||
#define STRINGID_STICKYBARBTRANSFER 567
|
||||
#define STRINGID_PKMNBURNHEALED 568
|
||||
#define STRINGID_REDCARDACTIVATE 569
|
||||
#define STRINGID_EJECTBUTTONACTIVATE 570
|
||||
#define STRINGID_ATKGOTOVERINFATUATION 571
|
||||
#define STRINGID_TORMENTEDNOMORE 572
|
||||
#define STRINGID_HEALBLOCKEDNOMORE 573
|
||||
#define STRINGID_ATTACKERBECAMEFULLYCHARGED 574
|
||||
#define STRINGID_ATTACKERBECAMEASHSPECIES 575
|
||||
#define STRINGID_EXTREMELYHARSHSUNLIGHT 576
|
||||
#define STRINGID_EXTREMESUNLIGHTFADED 577
|
||||
#define STRINGID_MOVEEVAPORATEDINTHEHARSHSUNLIGHT 578
|
||||
#define STRINGID_EXTREMELYHARSHSUNLIGHTWASNOTLESSENED 579
|
||||
#define STRINGID_HEAVYRAIN 580
|
||||
#define STRINGID_HEAVYRAINLIFTED 581
|
||||
#define STRINGID_MOVEFIZZLEDOUTINTHEHEAVYRAIN 582
|
||||
#define STRINGID_NORELIEFROMHEAVYRAIN 583
|
||||
#define STRINGID_MYSTERIOUSAIRCURRENT 584
|
||||
#define STRINGID_STRONGWINDSDISSIPATED 585
|
||||
#define STRINGID_MYSTERIOUSAIRCURRENTBLOWSON 586
|
||||
#define STRINGID_ATTACKWEAKENEDBSTRONGWINDS 587
|
||||
#define STRINGID_STUFFCHEEKSCANTSELECT 588
|
||||
#define STRINGID_PKMNREVERTEDTOPRIMAL 589
|
||||
#define STRINGID_BUTPOKEMONCANTUSETHEMOVE 590
|
||||
#define STRINGID_BUTHOOPACANTUSEIT 591
|
||||
#define STRINGID_BROKETHROUGHPROTECTION 592
|
||||
#define STRINGID_ABILITYALLOWSONLYMOVE 593
|
||||
#define STRINGID_SWAPPEDABILITIES 594
|
||||
#define STRINGID_PASTELVEILPROTECTED 595
|
||||
#define STRINGID_PASTELVEILENTERS 596
|
||||
#define STRINGID_BATTLERTYPECHANGEDTO 597
|
||||
#define STRINGID_BOTHCANNOLONGERESCAPE 598
|
||||
#define STRINGID_CANTESCAPEDUETOUSEDMOVE 599
|
||||
#define STRINGID_PKMNBECAMEWEAKERTOFIRE 600
|
||||
#define STRINGID_ABOUTTOUSEPOLTERGEIST 601
|
||||
#define STRINGID_CANTESCAPEBECAUSEOFCURRENTMOVE 602
|
||||
#define STRINGID_NEUTRALIZINGGASENTERS 603
|
||||
#define STRINGID_NEUTRALIZINGGASOVER 604
|
||||
#define STRINGID_TARGETTOOHEAVY 605
|
||||
#define STRINGID_PKMNTOOKTARGETHIGH 606
|
||||
#define STRINGID_PKMNINSNAPTRAP 607
|
||||
#define STRINGID_METEORBEAMCHARGING 608
|
||||
#define STRINGID_HEATUPBEAK 609
|
||||
#define STRINGID_COURTCHANGE 610
|
||||
#define STRINGID_PLAYERLOSTTOENEMYTRAINER 611
|
||||
#define STRINGID_PLAYERPAIDPRIZEMONEY 612
|
||||
#define STRINGID_ZPOWERSURROUNDS 613
|
||||
#define STRINGID_ZMOVEUNLEASHED 614
|
||||
#define STRINGID_ZMOVERESETSSTATS 615
|
||||
#define STRINGID_ZMOVEALLSTATSUP 616
|
||||
#define STRINGID_ZMOVEZBOOSTCRIT 617
|
||||
#define STRINGID_ZMOVERESTOREHP 618
|
||||
#define STRINGID_ZMOVESTATUP 619
|
||||
#define STRINGID_ZMOVEHPTRAP 620
|
||||
#define STRINGID_ATTACKEREXPELLEDTHEPOISON 621
|
||||
#define STRINGID_ATTACKERSHOOKITSELFAWAKE 622
|
||||
#define STRINGID_ATTACKERBROKETHROUGHPARALYSIS 623
|
||||
#define STRINGID_ATTACKERHEALEDITSBURN 624
|
||||
#define STRINGID_ATTACKERMELTEDTHEICE 625
|
||||
#define STRINGID_TARGETTOUGHEDITOUT 626
|
||||
#define STRINGID_ATTACKERLOSTELECTRICTYPE 627
|
||||
#define STRINGID_ATTACKERSWITCHEDSTATWITHTARGET 628
|
||||
#define STRINGID_BEINGHITCHARGEDPKMNWITHPOWER 629
|
||||
#define STRINGID_SUNLIGHTACTIVATEDABILITY 630
|
||||
#define STRINGID_STATWASHEIGHTENED 631
|
||||
#define STRINGID_ELECTRICTERRAINACTIVATEDABILITY 632
|
||||
#define STRINGID_ABILITYWEAKENEDSURROUNDINGMONSSTAT 633
|
||||
#define STRINGID_ATTACKERGAINEDSTRENGTHFROMTHEFALLEN 634
|
||||
#define STRINGID_PKMNSABILITYPREVENTSABILITY 635
|
||||
#define STRINGID_PREPARESHELLTRAP 636
|
||||
#define STRINGID_SHELLTRAPDIDNTWORK 637
|
||||
#define STRINGID_SPIKESDISAPPEAREDFROMTEAM 638
|
||||
#define STRINGID_TOXICSPIKESDISAPPEAREDFROMTEAM 639
|
||||
#define STRINGID_STICKYWEBDISAPPEAREDFROMTEAM 640
|
||||
#define STRINGID_STEALTHROCKDISAPPEAREDFROMTEAM 641
|
||||
#define STRINGID_COULDNTFULLYPROTECT 642
|
||||
#define STRINGID_STOCKPILEDEFFECTWOREOFF 643
|
||||
#define STRINGID_PKMNREVIVEDREADYTOFIGHT 644
|
||||
#define STRINGID_ITEMRESTOREDSPECIESHEALTH 645
|
||||
#define STRINGID_ITEMCUREDSPECIESSTATUS 646
|
||||
#define STRINGID_ITEMRESTOREDSPECIESPP 647
|
||||
#define STRINGID_THUNDERCAGETRAPPED 648
|
||||
#define STRINGID_PKMNHURTBYFROSTBITE 649
|
||||
#define STRINGID_PKMNGOTFROSTBITE 650
|
||||
#define STRINGID_PKMNSITEMHEALEDFROSTBITE 651
|
||||
#define STRINGID_ATTACKERHEALEDITSFROSTBITE 652
|
||||
#define STRINGID_PKMNFROSTBITEHEALED 653
|
||||
#define STRINGID_PKMNFROSTBITEHEALED2 654
|
||||
#define STRINGID_PKMNFROSTBITEHEALEDBY 655
|
||||
#define STRINGID_MIRRORHERBCOPIED 656
|
||||
#define STRINGID_STARTEDSNOW 657
|
||||
#define STRINGID_SNOWCONTINUES 658
|
||||
#define STRINGID_SNOWSTOPPED 659
|
||||
#define STRINGID_SNOWWARNINGSNOW 660
|
||||
#define STRINGID_PKMNITEMMELTED 661
|
||||
#define STRINGID_ULTRABURSTREACTING 662
|
||||
#define STRINGID_ULTRABURSTCOMPLETED 663
|
||||
#define STRINGID_TEAMGAINEDEXP 664
|
||||
#define STRINGID_CURRENTMOVECANTSELECT 665
|
||||
#define STRINGID_TARGETISBEINGSALTCURED 666
|
||||
#define STRINGID_TARGETISHURTBYSALTCURE 667
|
||||
#define STRINGID_TARGETCOVEREDINSTICKYCANDYSYRUP 668
|
||||
#define STRINGID_SHARPSTEELFLOATS 669
|
||||
#define STRINGID_SHARPSTEELDMG 670
|
||||
#define STRINGID_PKMNBLEWAWAYSHARPSTEEL 671
|
||||
#define STRINGID_SHARPSTEELDISAPPEAREDFROMTEAM 672
|
||||
#define STRINGID_TEAMTRAPPEDWITHVINES 673
|
||||
#define STRINGID_PKMNHURTBYVINES 674
|
||||
#define STRINGID_TEAMCAUGHTINVORTEX 675
|
||||
#define STRINGID_PKMNHURTBYVORTEX 676
|
||||
#define STRINGID_TEAMSURROUNDEDBYFIRE 677
|
||||
#define STRINGID_PKMNBURNINGUP 678
|
||||
#define STRINGID_TEAMSURROUNDEDBYROCKS 679
|
||||
#define STRINGID_PKMNHURTBYROCKSTHROWN 680
|
||||
#define STRINGID_MOVEBLOCKEDBYDYNAMAX 681
|
||||
#define STRINGID_ZEROTOHEROTRANSFORMATION 682
|
||||
#define STRINGID_THETWOMOVESBECOMEONE 683
|
||||
#define STRINGID_ARAINBOWAPPEAREDONSIDE 684
|
||||
#define STRINGID_THERAINBOWDISAPPEARED 685
|
||||
#define STRINGID_WAITINGFORPARTNERSMOVE 686
|
||||
#define STRINGID_SEAOFFIREENVELOPEDSIDE 687
|
||||
#define STRINGID_HURTBYTHESEAOFFIRE 688
|
||||
#define STRINGID_THESEAOFFIREDISAPPEARED 689
|
||||
#define STRINGID_SWAMPENVELOPEDSIDE 690
|
||||
#define STRINGID_THESWAMPDISAPPEARED 691
|
||||
#define STRINGID_PKMNTELLCHILLINGRECEPTIONJOKE 692
|
||||
#define STRINGID_HOSPITALITYRESTORATION 693
|
||||
#define STRINGID_ELECTROSHOTCHARGING 694
|
||||
#define STRINGID_ITEMWASUSEDUP 695
|
||||
#define STRINGID_ATTACKERLOSTITSTYPE 696
|
||||
#define STRINGID_SHEDITSTAIL 697
|
||||
#define STRINGID_CLOAKEDINAHARSHLIGHT 698
|
||||
#define STRINGID_SUPERSWEETAROMAWAFTS 699
|
||||
#define STRINGID_DIMENSIONSWERETWISTED 700
|
||||
#define STRINGID_BIZARREARENACREATED 701
|
||||
#define STRINGID_BIZARREAREACREATED 702
|
||||
#define STRINGID_TIDYINGUPCOMPLETE 703
|
||||
#define STRINGID_PKMNTERASTALLIZEDINTO 704
|
||||
#define STRINGID_BOOSTERENERGYACTIVATES 705
|
||||
#define STRINGID_FOGCREPTUP 706
|
||||
#define STRINGID_FOGISDEEP 707
|
||||
#define STRINGID_FOGLIFTED 708
|
||||
#define STRINGID_PKMNMADESHELLGLEAM 709
|
||||
#define STRINGID_FICKLEBEAMDOUBLED 710
|
||||
#define STRINGID_COMMANDERACTIVATES 711
|
||||
#define STRINGID_POKEFLUTECATCHY 712
|
||||
#define STRINGID_POKEFLUTE 713
|
||||
#define STRINGID_MONHEARINGFLUTEAWOKE 714
|
||||
#define STRINGID_SUNLIGHTISHARSH 715
|
||||
#define STRINGID_ITISHAILING 716
|
||||
#define STRINGID_ITISSNOWING 717
|
||||
#define STRINGID_ISCOVEREDWITHGRASS 718
|
||||
#define STRINGID_MISTSWIRLSAROUND 719
|
||||
#define STRINGID_ELECTRICCURRENTISRUNNING 720
|
||||
#define STRINGID_SEEMSWEIRD 721
|
||||
#define STRINGID_WAGGLINGAFINGER 722
|
||||
#define STRINGID_BLOCKEDBYSLEEPCLAUSE 723
|
||||
#define STRINGID_SUPEREFFECTIVETWOFOES 724
|
||||
#define STRINGID_NOTVERYEFFECTIVETWOFOES 725
|
||||
#define STRINGID_ITDOESNTAFFECTTWOFOES 726
|
||||
#define STRINGID_SENDCAUGHTMONPARTYORBOX 727
|
||||
#define STRINGID_PKMNSENTTOPCAFTERCATCH 728
|
||||
#define STRINGID_PKMNDYNAMAXED 729
|
||||
#define STRINGID_PKMNGIGANTAMAXED 730
|
||||
#define STRINGID_TIMETODYNAMAX 731
|
||||
#define STRINGID_TIMETOGIGANTAMAX 732
|
||||
|
||||
#define BATTLESTRINGS_COUNT 730
|
||||
#define BATTLESTRINGS_COUNT 733
|
||||
|
||||
// This is the string id that gBattleStringsTable starts with.
|
||||
// String ids before this (e.g. STRINGID_INTROMSG) are not in the table,
|
||||
|
|
|
|||
|
|
@ -251,6 +251,10 @@
|
|||
#define MOVEMENT_ACTION_RUN_UP_SLOW 0xA3
|
||||
#define MOVEMENT_ACTION_RUN_LEFT_SLOW 0xA4
|
||||
#define MOVEMENT_ACTION_RUN_RIGHT_SLOW 0xA5
|
||||
#define MOVEMENT_ACTION_WALK_SLOW_STAIRS_DOWN 0xA6
|
||||
#define MOVEMENT_ACTION_WALK_SLOW_STAIRS_UP 0xA7
|
||||
#define MOVEMENT_ACTION_WALK_SLOW_STAIRS_LEFT 0xA8
|
||||
#define MOVEMENT_ACTION_WALK_SLOW_STAIRS_RIGHT 0xA9
|
||||
|
||||
#define MOVEMENT_ACTION_STEP_END 0xFE
|
||||
#define MOVEMENT_ACTION_NONE 0xFF
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
#ifndef GUARD_CONSTANTS_EXPANSION_H
|
||||
#define GUARD_CONSTANTS_EXPANSION_H
|
||||
|
||||
// Last version: 1.10.2
|
||||
// Last version: 1.11.1
|
||||
#define EXPANSION_VERSION_MAJOR 1
|
||||
#define EXPANSION_VERSION_MINOR 11
|
||||
#define EXPANSION_VERSION_MINOR 12
|
||||
#define EXPANSION_VERSION_PATCH 0
|
||||
|
||||
// FALSE if this this version of Expansion is not a tagged commit, i.e.
|
||||
|
|
|
|||
|
|
@ -76,6 +76,7 @@
|
|||
#define FLDEFF_TRACKS_SPOT 71
|
||||
#define FLDEFF_TRACKS_BUG 72
|
||||
#define FLDEFF_CAVE_DUST 73
|
||||
#define FLDEFF_DEFOG 74
|
||||
|
||||
#define FLDEFFOBJ_SHADOW_S 0
|
||||
#define FLDEFFOBJ_SHADOW_M 1
|
||||
|
|
|
|||
|
|
@ -1660,4 +1660,16 @@
|
|||
#define FLAG_TEMP_HIDE_FOLLOWER FLAG_TEMP_E
|
||||
#define FLAG_TEMP_HIDE_MIRAGE_ISLAND_BERRY_TREE FLAG_TEMP_11
|
||||
|
||||
#if TESTING
|
||||
#define TESTING_FLAGS_START 0x5000
|
||||
#define TESTING_FLAG_SLEEP_CLAUSE (TESTING_FLAGS_START + 0x0)
|
||||
#define TESTING_FLAG_UNUSED_1 (TESTING_FLAGS_START + 0x1)
|
||||
#define TESTING_FLAG_UNUSED_2 (TESTING_FLAGS_START + 0x2)
|
||||
#define TESTING_FLAG_UNUSED_3 (TESTING_FLAGS_START + 0x3)
|
||||
#define TESTING_FLAG_UNUSED_4 (TESTING_FLAGS_START + 0x4)
|
||||
#define TESTING_FLAG_UNUSED_5 (TESTING_FLAGS_START + 0x5)
|
||||
#define TESTING_FLAG_UNUSED_6 (TESTING_FLAGS_START + 0x6)
|
||||
#define TESTING_FLAG_UNUSED_7 (TESTING_FLAGS_START + 0x7)
|
||||
#endif // TESTING
|
||||
|
||||
#endif // GUARD_CONSTANTS_FLAGS_H
|
||||
|
|
|
|||
|
|
@ -11,6 +11,8 @@ enum GenConfigTag
|
|||
GEN_CONFIG_MULTI_HIT_CHANCE,
|
||||
GEN_CONFIG_GALE_WINGS,
|
||||
GEN_CONFIG_HEAL_BELL_SOUNDPROOF,
|
||||
GEN_CONFIG_TELEPORT_BEHAVIOR,
|
||||
GEN_CONFIG_BATTLE_BOND,
|
||||
GEN_CONFIG_COUNT
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -300,6 +300,17 @@ enum EvolutionMethods {
|
|||
EVO_ITEM_COUNT_999, // Pokémon levels up after trainer has collected 999 of a specific item
|
||||
EVO_DEFEAT_THREE_WITH_ITEM, // Pokémon levels up after having defeat 3 Pokémon of the same species holding the specified item
|
||||
EVO_OVERWORLD_STEPS, // Pokémon levels up after having taken a specific amount of steps in the overworld
|
||||
|
||||
// Alcremie evolutions methods. Different combinations of day, spin rotation and duration.
|
||||
EVO_ITEM_HOLD_SPIN_DAY_LESS_THAN_5_SECS_CLOCKWISE,
|
||||
EVO_ITEM_HOLD_SPIN_DAY_LESS_THAN_5_SECS_COUNTER_CLOCKWISE,
|
||||
EVO_ITEM_HOLD_SPIN_NIGHT_LESS_THAN_5_SECS_CLOCKWISE,
|
||||
EVO_ITEM_HOLD_SPIN_NIGHT_LESS_THAN_5_SECS_COUNTER_CLOCKWISE,
|
||||
EVO_ITEM_HOLD_SPIN_DAY_MORE_THAN_5_SECS_CLOCKWISE,
|
||||
EVO_ITEM_HOLD_SPIN_DAY_MORE_THAN_5_SECS_COUNTER_CLOCKWISE,
|
||||
EVO_ITEM_HOLD_SPIN_NIGHT_MORE_THAN_5_SECS_CLOCKWISE,
|
||||
EVO_ITEM_HOLD_SPIN_NIGHT_MORE_THAN_5_SECS_COUNTER_CLOCKWISE,
|
||||
EVO_ITEM_HOLD_SPIN_DUSK_MORE_THAN_10_SECS,
|
||||
};
|
||||
|
||||
enum EvolutionMode {
|
||||
|
|
@ -313,6 +324,14 @@ enum EvolutionMode {
|
|||
EVO_MODE_BATTLE_ONLY, // This mode is only used in battles to support Tandemaus' unique requirement
|
||||
};
|
||||
|
||||
|
||||
enum PokemonJumpType{
|
||||
PKMN_JUMP_TYPE_NONE, // Not allowed in Pokémon Jump
|
||||
PKMN_JUMP_TYPE_NORMAL,
|
||||
PKMN_JUMP_TYPE_FAST,
|
||||
PKMN_JUMP_TYPE_SLOW,
|
||||
};
|
||||
|
||||
#define MON_PIC_WIDTH 64
|
||||
#define MON_PIC_HEIGHT 64
|
||||
#define MON_PIC_SIZE (MON_PIC_WIDTH * MON_PIC_HEIGHT / 2)
|
||||
|
|
|
|||
|
|
@ -324,4 +324,16 @@
|
|||
|
||||
#define VAR_TEMP_TRANSFERRED_SPECIES VAR_TEMP_1
|
||||
|
||||
#if TESTING
|
||||
#define TESTING_VARS_START 0x9000
|
||||
#define TESTING_VAR_DIFFICULTY (TESTING_VARS_START + 0x0)
|
||||
#define TESTING_VAR_UNUSED_1 (TESTING_VARS_START + 0x1)
|
||||
#define TESTING_VAR_UNUSED_2 (TESTING_VARS_START + 0x2)
|
||||
#define TESTING_VAR_UNUSED_3 (TESTING_VARS_START + 0x3)
|
||||
#define TESTING_VAR_UNUSED_4 (TESTING_VARS_START + 0x4)
|
||||
#define TESTING_VAR_UNUSED_5 (TESTING_VARS_START + 0x5)
|
||||
#define TESTING_VAR_UNUSED_6 (TESTING_VARS_START + 0x6)
|
||||
#define TESTING_VAR_UNUSED_7 (TESTING_VARS_START + 0x7)
|
||||
#endif // TESTING
|
||||
|
||||
#endif // GUARD_CONSTANTS_VARS_H
|
||||
|
|
|
|||
|
|
@ -66,12 +66,12 @@
|
|||
void EndDexNavSearch(u8 taskId);
|
||||
void Task_OpenDexNavFromStartMenu(u8 taskId);
|
||||
bool8 TryStartDexNavSearch(void);
|
||||
void TryIncrementSpeciesSearchLevel(u16 dexNum);
|
||||
void TryIncrementSpeciesSearchLevel(void);
|
||||
void ResetDexNavSearch(void);
|
||||
bool8 TryFindHiddenPokemon(void);
|
||||
u32 CalculateDexNavShinyRolls(void);
|
||||
void IncrementDexNavChain(void);
|
||||
|
||||
extern bool8 gDexNavBattle;
|
||||
extern u16 gDexNavSpecies;
|
||||
|
||||
#endif // GUARD_DEXNAV_H
|
||||
|
|
|
|||
|
|
@ -226,6 +226,7 @@ void ObjectEventMoveDestCoords(struct ObjectEvent *objEvent, u32 direction, s16
|
|||
u8 AddCameraObject(u8 linkedSpriteId);
|
||||
void UpdateObjectEventsForCameraUpdate(s16 x, s16 y);
|
||||
u8 GetWalkSlowMovementAction(u32);
|
||||
u8 GetWalkSlowStairsMovementAction(u32);
|
||||
u8 GetJumpMovementAction(u32);
|
||||
u8 ElevationToPriority(u8 elevation);
|
||||
void ObjectEventUpdateElevation(struct ObjectEvent *objEvent, struct Sprite *);
|
||||
|
|
|
|||
|
|
@ -407,6 +407,7 @@ extern const u8 EventScript_UseCut[];
|
|||
extern const u8 EventScript_UseRockSmash[];
|
||||
extern const u8 EventScript_UseDig[];
|
||||
extern const u8 EventScript_UseCutGrass[];
|
||||
extern const u8 EventScript_UseDefog[];
|
||||
|
||||
//player pc
|
||||
extern const u8 LittlerootTown_BrendansHouse_2F_EventScript_TurnOffPlayerPC[];
|
||||
|
|
|
|||
|
|
@ -68,5 +68,8 @@ bool8 ObjectMovingOnRockStairs(struct ObjectEvent *objectEvent, u8 direction);
|
|||
//sideways stairs
|
||||
u8 GetRightSideStairsDirection(u8 direction);
|
||||
u8 GetLeftSideStairsDirection(u8 direction);
|
||||
void UpdateSpinData(void);
|
||||
void ResetSpinTimer(void);
|
||||
bool32 CanTriggerSpinEvolution();
|
||||
|
||||
#endif // GUARD_FIELD_PLAYER_AVATAR_H
|
||||
|
|
|
|||
|
|
@ -51,4 +51,8 @@ u8 CreateFieldMoveTask(void);
|
|||
bool8 SetUpFieldMove_RockSmash(void);
|
||||
bool8 FldEff_UseRockSmash(void);
|
||||
|
||||
// defog
|
||||
bool8 SetUpFieldMove_Defog(void);
|
||||
bool8 FldEff_Defog(void);
|
||||
|
||||
#endif // GUARD_FLDEFF_H
|
||||
|
|
|
|||
|
|
@ -14,6 +14,8 @@ static const u8 sGenerationalChanges[GEN_CONFIG_COUNT] =
|
|||
[GEN_CONFIG_MULTI_HIT_CHANCE] = B_MULTI_HIT_CHANCE,
|
||||
[GEN_CONFIG_GALE_WINGS] = B_GALE_WINGS,
|
||||
[GEN_CONFIG_HEAL_BELL_SOUNDPROOF] = B_HEAL_BELL_SOUNDPROOF,
|
||||
[GEN_CONFIG_TELEPORT_BEHAVIOR] = B_TELEPORT_BEHAVIOR,
|
||||
[GEN_CONFIG_BATTLE_BOND] = B_BATTLE_BOND,
|
||||
};
|
||||
|
||||
#if TESTING
|
||||
|
|
|
|||
|
|
@ -1134,4 +1134,8 @@ struct MapPosition
|
|||
s8 elevation;
|
||||
};
|
||||
|
||||
#if T_SHOULD_RUN_MOVE_ANIM
|
||||
extern bool32 gLoadFail;
|
||||
#endif // T_SHOULD_RUN_MOVE_ANIM
|
||||
|
||||
#endif // GUARD_GLOBAL_H
|
||||
|
|
|
|||
|
|
@ -306,7 +306,7 @@ extern const u16 gPokedexSearchMenu_Pal[];
|
|||
extern const u32 gBerryCheck_Gfx[];
|
||||
extern const u32 gBerryCheck_Pal[];
|
||||
extern const u32 gBerryTag_Gfx[];
|
||||
extern const u32 gBerryTag_Pal[];
|
||||
extern const u32 gBerryTag_Tilemap[];
|
||||
|
||||
// rayquaza scene gfx
|
||||
extern const u32 gRaySceneDuoFight_Groudon_Gfx[];
|
||||
|
|
@ -3039,11 +3039,11 @@ extern const u32 gBattleAnimBgTilemap_PsychicTerrain[];
|
|||
extern const u32 gBattleAnimBgImage_ShatteredPsyche[];
|
||||
extern const u32 gBattleAnimBgPalette_ShatteredPsyche[];
|
||||
extern const u32 gBattleAnimBgTilemap_ShatteredPsyche[];
|
||||
extern const u32 gBattleAnimBgImage_SkyDay[];
|
||||
extern const u32 gBattleAnimBgPalette_SkyDay[];
|
||||
extern const u32 gBattleAnimBgTilemap_SkyDay[];
|
||||
extern const u32 gBattleAnimBgPalette_SkyAfternoon[];
|
||||
extern const u32 gBattleAnimBgPalette_SkyNight[];
|
||||
extern const u32 gBattleAnimBgImage_RockField[];
|
||||
extern const u32 gBattleAnimBgPalette_RockDay[];
|
||||
extern const u32 gBattleAnimBgTilemap_RockField[];
|
||||
extern const u32 gBattleAnimBgPalette_RockAfternoon[];
|
||||
extern const u32 gBattleAnimBgPalette_RockNight[];
|
||||
extern const u32 gBattleAnimBgImage_SnuggleForever[];
|
||||
extern const u32 gBattleAnimBgPalette_SnuggleForever[];
|
||||
extern const u32 gBattleAnimBgTilemap_SnuggleForever[];
|
||||
|
|
|
|||
|
|
@ -4,11 +4,11 @@
|
|||
|
||||
/* Check if VA_OPT_ is supported by the compiler. GCC's version should be at least 9.5*/
|
||||
#define PP_THIRD_ARG(a,b,c,...) c
|
||||
#define VA_OPT_SUPPORTED_I(...) PP_THIRD_ARG(__VA_OPT__(,),TRUE,FALSE,)
|
||||
#define VA_OPT_SUPPORTED_I(...) PP_THIRD_ARG(__VA_OPT__(,),1,0,)
|
||||
#define VA_OPT_SUPPORTED VA_OPT_SUPPORTED_I(?)
|
||||
|
||||
#if !VA_OPT_SUPPORTED
|
||||
#error ERROR: VA_OPT__ is not supported. Please update your gcc compiler to version 10 or higher
|
||||
#error ERROR: __VA_OPT__ is not supported. Please update your arm-none-eabi-gcc compiler to version 10 or higher
|
||||
#endif // VA_OPT_SUPPORTED
|
||||
|
||||
/* Calls m0/m1/.../m8 depending on how many arguments are passed. */
|
||||
|
|
|
|||
|
|
@ -38,6 +38,30 @@ struct AdditionalEffect
|
|||
u8 chance; // 0% = effect certain, primary effect
|
||||
};
|
||||
|
||||
enum ProtectType
|
||||
{
|
||||
PROTECT_TYPE_NONE,
|
||||
PROTECT_TYPE_SIDE,
|
||||
PROTECT_TYPE_SINGLE,
|
||||
};
|
||||
|
||||
enum ProtectMethod
|
||||
{
|
||||
PROTECT_NONE,
|
||||
PROTECT_NORMAL,
|
||||
PROTECT_SPIKY_SHIELD,
|
||||
PROTECT_KINGS_SHIELD,
|
||||
PROTECT_BANEFUL_BUNKER,
|
||||
PROTECT_BURNING_BULWARK,
|
||||
PROTECT_OBSTRUCT,
|
||||
PROTECT_SILK_TRAP,
|
||||
PROTECT_MAX_GUARD,
|
||||
PROTECT_WIDE_GUARD,
|
||||
PROTECT_QUICK_GUARD,
|
||||
PROTECT_CRAFTY_SHIELD,
|
||||
PROTECT_MAT_BLOCK,
|
||||
};
|
||||
|
||||
struct MoveInfo
|
||||
{
|
||||
const u8 *name;
|
||||
|
|
@ -56,7 +80,6 @@ struct MoveInfo
|
|||
} zMove;
|
||||
// end of word
|
||||
s32 priority:4;
|
||||
u32 recoil:7;
|
||||
u32 strikeCount:4; // Max 15 hits. Defaults to 1 if not set. May apply its effect on each hit.
|
||||
u32 criticalHitStage:2;
|
||||
bool32 alwaysCriticalHit:1;
|
||||
|
|
@ -74,7 +97,6 @@ struct MoveInfo
|
|||
bool32 ballisticMove:1;
|
||||
bool32 powderMove:1;
|
||||
bool32 danceMove:1;
|
||||
// end of word
|
||||
bool32 windMove:1;
|
||||
bool32 slicingMove:1;
|
||||
bool32 healingMove:1;
|
||||
|
|
@ -82,6 +104,7 @@ struct MoveInfo
|
|||
bool32 ignoresTargetAbility:1;
|
||||
bool32 ignoresTargetDefenseEvasionStages:1;
|
||||
bool32 damagesUnderground:1;
|
||||
// end of word
|
||||
bool32 damagesUnderwater:1;
|
||||
bool32 damagesAirborne:1;
|
||||
bool32 damagesAirborneDoubleDamage:1;
|
||||
|
|
@ -106,7 +129,7 @@ struct MoveInfo
|
|||
bool32 sketchBanned:1;
|
||||
//Other
|
||||
bool32 validApprenticeMove:1;
|
||||
u32 padding:3;
|
||||
u32 padding:10;
|
||||
// end of word
|
||||
|
||||
union {
|
||||
|
|
@ -114,16 +137,14 @@ struct MoveInfo
|
|||
u16 stringId;
|
||||
u16 status;
|
||||
} twoTurnAttack;
|
||||
struct {
|
||||
u16 side;
|
||||
u16 property; // can be used to remove the hardcoded values
|
||||
} protect;
|
||||
u32 protectMethod;
|
||||
u32 status;
|
||||
u16 moveProperty;
|
||||
u16 holdEffect;
|
||||
u16 type;
|
||||
u16 fixedDamage;
|
||||
u16 absorbPercentage;
|
||||
u32 moveProperty;
|
||||
u32 holdEffect;
|
||||
u32 type;
|
||||
u32 fixedDamage;
|
||||
u32 absorbPercentage;
|
||||
u32 recoilPercentage;
|
||||
} argument;
|
||||
|
||||
// primary/secondary effects
|
||||
|
|
@ -212,11 +233,6 @@ static inline s32 GetMovePriority(u32 moveId)
|
|||
return gMovesInfo[SanitizeMoveId(moveId)].priority;
|
||||
}
|
||||
|
||||
static inline u32 GetMoveRecoil(u32 moveId)
|
||||
{
|
||||
return gMovesInfo[SanitizeMoveId(moveId)].recoil;
|
||||
}
|
||||
|
||||
static inline u32 GetMoveStrikeCount(u32 moveId)
|
||||
{
|
||||
return gMovesInfo[SanitizeMoveId(moveId)].strikeCount;
|
||||
|
|
@ -452,9 +468,9 @@ static inline u32 GetMoveTwoTurnAttackWeather(u32 moveId)
|
|||
return gMovesInfo[SanitizeMoveId(moveId)].argument.twoTurnAttack.status;
|
||||
}
|
||||
|
||||
static inline u32 GetMoveProtectSide(u32 moveId)
|
||||
static inline u32 GetMoveProtectMethod(u32 moveId)
|
||||
{
|
||||
return gMovesInfo[SanitizeMoveId(moveId)].argument.protect.side;
|
||||
return gMovesInfo[SanitizeMoveId(moveId)].argument.protectMethod;
|
||||
}
|
||||
|
||||
static inline u32 GetMoveEffectArg_Status(u32 moveId)
|
||||
|
|
@ -490,6 +506,11 @@ static inline u32 GetMoveAbsorbPercentage(u32 moveId)
|
|||
return gMovesInfo[moveId].argument.absorbPercentage;
|
||||
}
|
||||
|
||||
static inline u32 GetMoveRecoil(u32 moveId)
|
||||
{
|
||||
return gMovesInfo[SanitizeMoveId(moveId)].argument.recoilPercentage;
|
||||
}
|
||||
|
||||
static inline const struct AdditionalEffect *GetMoveAdditionalEffectById(u32 moveId, u32 effect)
|
||||
{
|
||||
return &gMovesInfo[SanitizeMoveId(moveId)].additionalEffects[effect];
|
||||
|
|
|
|||
|
|
@ -1,6 +1,16 @@
|
|||
#ifndef GUARD_POKEDEX_AREA_SCREEN_H
|
||||
#define GUARD_POKEDEX_AREA_SCREEN_H
|
||||
|
||||
void ShowPokedexAreaScreen(u16, u8 *);
|
||||
#include "rtc.h"
|
||||
|
||||
extern u8 gAreaTimeOfDay;
|
||||
|
||||
enum PokedexAreaScreenState
|
||||
{
|
||||
DEX_SHOW_AREA_SCREEN,
|
||||
DEX_UPDATE_AREA_SCREEN
|
||||
};
|
||||
|
||||
void DisplayPokedexAreaScreen(u16 species, u8 *screenSwitchState, enum TimeOfDay timeOfDay, enum PokedexAreaScreenState areaState);
|
||||
|
||||
#endif // GUARD_POKEDEX_AREA_SCREEN_H
|
||||
|
|
|
|||
|
|
@ -428,7 +428,7 @@ struct SpeciesInfo /*0xC4*/
|
|||
#else
|
||||
u8 paddingF:3;
|
||||
#endif //P_GENDER_DIFFERENCES
|
||||
u8 padding3:2;
|
||||
u8 pokemonJumpType:2; // According to the clerk, the Pokémon allowed in Pokémon Jump are all <= 28 inches/71 cm, and do not only swim, burrow, or fly.
|
||||
u8 enemyMonElevation; // This determines how much higher above the usual position the enemy Pokémon is during battle. Species that float or fly have nonzero values.
|
||||
// Flags
|
||||
u32 isLegendary:1;
|
||||
|
|
@ -608,6 +608,9 @@ extern u8 gEnemyPartyCount;
|
|||
extern struct Pokemon gEnemyParty[PARTY_SIZE];
|
||||
extern struct SpriteTemplate gMultiuseSpriteTemplate;
|
||||
extern u16 gFollowerSteps;
|
||||
extern bool32 consumeItem;
|
||||
extern u32 removeBagItem;
|
||||
extern u32 removeBagItemCount;
|
||||
|
||||
extern const u8 gFacilityClassToPicIndex[];
|
||||
extern const u8 gFacilityClassToTrainerClass[];
|
||||
|
|
@ -790,6 +793,7 @@ u32 GetFormChangeTargetSpeciesBoxMon(struct BoxPokemon *boxMon, u16 method, u32
|
|||
bool32 DoesSpeciesHaveFormChangeMethod(u16 species, u16 method);
|
||||
u16 MonTryLearningNewMoveEvolution(struct Pokemon *mon, bool8 firstMove);
|
||||
void RemoveIVIndexFromList(u8 *ivs, u8 selectedIv);
|
||||
void TrySpecialOverworldEvo(void);
|
||||
bool32 SpeciesHasGenderDifferences(u16 species);
|
||||
bool32 TryFormChange(u32 monId, u32 side, u16 method);
|
||||
void TryToSetBattleFormChangeMoves(struct Pokemon *mon, u16 method);
|
||||
|
|
@ -809,5 +813,6 @@ u32 CheckDynamicMoveType(struct Pokemon *mon, u32 move, u32 battler);
|
|||
uq4_12_t GetDynamaxLevelHPMultiplier(u32 dynamaxLevel, bool32 inverseMultiplier);
|
||||
u32 GetRegionalFormByRegion(u32 species, u32 region);
|
||||
bool32 IsSpeciesForeignRegionalForm(u32 species, u32 currentRegion);
|
||||
void DoRemoveItems(struct Pokemon *mon);
|
||||
|
||||
#endif // GUARD_POKEMON_H
|
||||
|
|
|
|||
|
|
@ -1,7 +1,9 @@
|
|||
#ifndef GUARD_RTC_UTIL_H
|
||||
#define GUARD_RTC_UTIL_H
|
||||
|
||||
#include "global.h"
|
||||
#include "siirtc.h"
|
||||
#include "config/overworld.h"
|
||||
|
||||
#define RTC_INIT_ERROR 0x0001
|
||||
#define RTC_INIT_WARNING 0x0002
|
||||
|
|
@ -83,10 +85,17 @@
|
|||
#define NIGHT_HOUR_END 6
|
||||
#endif
|
||||
|
||||
#define TIME_MORNING 0
|
||||
#define TIME_DAY 1
|
||||
#define TIME_EVENING 2
|
||||
#define TIME_NIGHT 3
|
||||
// TIMES_OF_DAY_COUNT must be last
|
||||
enum TimeOfDay
|
||||
{
|
||||
TIME_MORNING,
|
||||
TIME_DAY,
|
||||
TIME_EVENING,
|
||||
TIME_NIGHT,
|
||||
TIMES_OF_DAY_COUNT,
|
||||
};
|
||||
|
||||
STATIC_ASSERT(OW_TIME_OF_DAY_DEFAULT == 0, TimeOfDayDefaultMustBeFirstElementInTimeOfDayEnum)
|
||||
|
||||
extern struct Time gLocalTime;
|
||||
|
||||
|
|
@ -112,12 +121,15 @@ void FormatHexDate(u8 *dest, s32 year, s32 month, s32 day);
|
|||
void RtcCalcTimeDifference(struct SiiRtcInfo *rtc, struct Time *result, struct Time *t);
|
||||
void RtcCalcLocalTime(void);
|
||||
bool8 IsBetweenHours(s32 hours, s32 begin, s32 end);
|
||||
u8 GetTimeOfDay(void);
|
||||
enum TimeOfDay GetTimeOfDay(void);
|
||||
enum TimeOfDay GetTimeOfDayForDex(void);
|
||||
void RtcInitLocalTimeOffset(s32 hour, s32 minute);
|
||||
void RtcCalcLocalTimeOffset(s32 days, s32 hours, s32 minutes, s32 seconds);
|
||||
void CalcTimeDifference(struct Time *result, struct Time *t1, struct Time *t2);
|
||||
u32 RtcGetMinuteCount(void);
|
||||
u32 RtcGetLocalDayCount(void);
|
||||
void FormatDecimalTimeWithoutSeconds(u8 *dest, s8 hour, s8 minute, bool32 is24Hour);
|
||||
enum TimeOfDay TryIncrementTimeOfDay(enum TimeOfDay timeOfDay);
|
||||
enum TimeOfDay TryDecrementTimeOfDay(enum TimeOfDay timeOfDay);
|
||||
|
||||
#endif // GUARD_RTC_UTIL_H
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@ void TestRunner_Battle_CheckAiMoveScores(u32 battlerId);
|
|||
void TestRunner_Battle_AISetScore(const char *file, u32 line, u32 battlerId, u32 moveIndex, s32 score);
|
||||
void TestRunner_Battle_AIAdjustScore(const char *file, u32 line, u32 battlerId, u32 moveIndex, s32 score);
|
||||
void TestRunner_Battle_InvalidNoHPMon(u32 battlerId, u32 partyIndex);
|
||||
void TestRunner_CheckMemory(void);
|
||||
|
||||
void TestRunner_Battle_CheckBattleRecordActionType(u32 battlerId, u32 recordIndex, u32 actionType);
|
||||
|
||||
|
|
|
|||
|
|
@ -1,8 +1,19 @@
|
|||
#ifndef GUARD_WILD_ENCOUNTER_H
|
||||
#define GUARD_WILD_ENCOUNTER_H
|
||||
|
||||
#include "rtc.h"
|
||||
#include "constants/wild_encounter.h"
|
||||
|
||||
#define HEADER_NONE 0xFFFF
|
||||
|
||||
enum WildPokemonArea {
|
||||
WILD_AREA_LAND,
|
||||
WILD_AREA_WATER,
|
||||
WILD_AREA_ROCKS,
|
||||
WILD_AREA_FISHING,
|
||||
WILD_AREA_HIDDEN
|
||||
};
|
||||
|
||||
struct WildPokemon
|
||||
{
|
||||
u8 minLevel;
|
||||
|
|
@ -16,17 +27,28 @@ struct WildPokemonInfo
|
|||
const struct WildPokemon *wildPokemon;
|
||||
};
|
||||
|
||||
struct WildEncounterTypes
|
||||
{
|
||||
const struct WildPokemonInfo *landMonsInfo;
|
||||
const struct WildPokemonInfo *waterMonsInfo;
|
||||
const struct WildPokemonInfo *rockSmashMonsInfo;
|
||||
const struct WildPokemonInfo *fishingMonsInfo;
|
||||
const struct WildPokemonInfo *hiddenMonsInfo;
|
||||
};
|
||||
|
||||
struct WildPokemonHeader
|
||||
{
|
||||
u8 mapGroup;
|
||||
u8 mapNum;
|
||||
const struct WildPokemonInfo *landMonsInfo;
|
||||
const struct WildPokemonInfo *waterMonsInfo;
|
||||
const struct WildPokemonInfo *rockSmashMonsInfo;
|
||||
const struct WildPokemonInfo *hiddenMonsInfo;
|
||||
const struct WildPokemonInfo *fishingMonsInfo;
|
||||
|
||||
#if OW_TIME_OF_DAY_ENCOUNTERS
|
||||
const struct WildEncounterTypes encounterTypes[TIMES_OF_DAY_COUNT];
|
||||
#else
|
||||
const struct WildEncounterTypes encounterTypes[1];
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
extern const struct WildPokemonHeader gWildMonHeaders[];
|
||||
extern bool8 gIsFishingEncounter;
|
||||
extern bool8 gIsSurfingEncounter;
|
||||
|
|
@ -50,5 +72,6 @@ u8 ChooseWildMonIndex_Land(void);
|
|||
u8 ChooseWildMonIndex_WaterRock(void);
|
||||
u8 ChooseHiddenMonIndex(void);
|
||||
bool32 MapHasNoEncounterData(void);
|
||||
enum TimeOfDay GetTimeOfDayForEncounters(u32 headerId, enum WildPokemonArea area);
|
||||
|
||||
#endif // GUARD_WILD_ENCOUNTER_H
|
||||
|
|
|
|||
|
|
@ -52,6 +52,7 @@ bool32 InitWindows(const struct WindowTemplate *templates);
|
|||
u32 AddWindow(const struct WindowTemplate *template);
|
||||
int AddWindowWithoutTileMap(const struct WindowTemplate *template);
|
||||
void RemoveWindow(u32 windowId);
|
||||
void RemoveAllWindowsOnBg(u32 bgId);
|
||||
void FreeAllWindowBuffers(void);
|
||||
void CopyWindowToVram(u32 windowId, u32 mode);
|
||||
void CopyWindowRectToVram(u32 windowId, u32 mode, u32 x, u32 y, u32 w, u32 h);
|
||||
|
|
|
|||
|
|
@ -1,12 +1,6 @@
|
|||
# JSON files are run through jsonproc, which is a tool that converts JSON data to an output file
|
||||
# based on an Inja template. https://github.com/pantor/inja
|
||||
|
||||
AUTO_GEN_TARGETS += $(DATA_SRC_SUBDIR)/wild_encounters.h
|
||||
$(DATA_SRC_SUBDIR)/wild_encounters.h: $(DATA_SRC_SUBDIR)/wild_encounters.json $(DATA_SRC_SUBDIR)/wild_encounters.json.txt
|
||||
$(JSONPROC) $^ $@
|
||||
|
||||
$(C_BUILDDIR)/wild_encounter.o: c_dep += $(DATA_SRC_SUBDIR)/wild_encounters.h
|
||||
|
||||
AUTO_GEN_TARGETS += $(DATA_SRC_SUBDIR)/region_map/region_map_entries.h
|
||||
$(DATA_SRC_SUBDIR)/region_map/region_map_entries.h: $(DATA_SRC_SUBDIR)/region_map/region_map_sections.json $(DATA_SRC_SUBDIR)/region_map/region_map_sections.json.txt
|
||||
$(JSONPROC) $^ $@
|
||||
|
|
|
|||