mirror of
https://github.com/pret/pokeemerald.git
synced 2026-10-02 06:47:52 -05:00
@@ -23,22 +23,26 @@ body:
|
||||
label: Version
|
||||
description: What version of pokeemerald-expansion are you using as a base?
|
||||
options:
|
||||
- 1.6.2 (Default)
|
||||
- 1.8.4 (Latest release)
|
||||
- master (default, unreleased bugfixes)
|
||||
- upcoming (Edge)
|
||||
- 1.6.1
|
||||
- 1.6.0
|
||||
- 1.5.3
|
||||
- 1.5.2
|
||||
- 1.5.1
|
||||
- 1.5.0
|
||||
- pre-1.5.0
|
||||
- 1.8.3
|
||||
- 1.8.2
|
||||
- 1.8.1
|
||||
- 1.8.0
|
||||
- 1.7.4
|
||||
- 1.7.3
|
||||
- 1.7.2
|
||||
- 1.7.1
|
||||
- 1.7.0
|
||||
- pre-1.7.0
|
||||
validations:
|
||||
required: true
|
||||
- type: input
|
||||
id: upcomingversion
|
||||
attributes:
|
||||
label: Upcoming Version
|
||||
description: If you're using the upcoming branch, please specify what was the commit hash you pulled from.
|
||||
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.
|
||||
validations:
|
||||
required: false
|
||||
- type: input
|
||||
|
||||
23
.github/ISSUE_TEMPLATE/02_battle_ai_issues.yaml
vendored
23
.github/ISSUE_TEMPLATE/02_battle_ai_issues.yaml
vendored
@@ -23,22 +23,25 @@ body:
|
||||
label: Version
|
||||
description: What version of pokeemerald-expansion are you using as a base?
|
||||
options:
|
||||
- 1.6.2 (Default)
|
||||
- 1.8.4 (Latest release)
|
||||
- master (default, unreleased bugfixes)
|
||||
- upcoming (Edge)
|
||||
- 1.6.1
|
||||
- 1.6.0
|
||||
- 1.5.3
|
||||
- 1.5.2
|
||||
- 1.5.1
|
||||
- 1.5.0
|
||||
- pre-1.5.0
|
||||
- 1.8.3
|
||||
- 1.8.1
|
||||
- 1.8.0
|
||||
- 1.7.4
|
||||
- 1.7.3
|
||||
- 1.7.2
|
||||
- 1.7.1
|
||||
- 1.7.0
|
||||
- pre-1.7.0
|
||||
validations:
|
||||
required: true
|
||||
- type: input
|
||||
id: upcomingversion
|
||||
attributes:
|
||||
label: Upcoming Version
|
||||
description: If you're using the upcoming branch, please specify what was the commit hash you pulled from.
|
||||
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.
|
||||
validations:
|
||||
required: false
|
||||
- type: input
|
||||
|
||||
23
.github/ISSUE_TEMPLATE/04_other_errors.yaml
vendored
23
.github/ISSUE_TEMPLATE/04_other_errors.yaml
vendored
@@ -23,22 +23,25 @@ body:
|
||||
label: Version
|
||||
description: What version of pokeemerald-expansion are you using as a base?
|
||||
options:
|
||||
- 1.6.2 (Default)
|
||||
- 1.8.4 (Latest release)
|
||||
- master (default, unreleased bugfixes)
|
||||
- upcoming (Edge)
|
||||
- 1.6.1
|
||||
- 1.6.0
|
||||
- 1.5.3
|
||||
- 1.5.2
|
||||
- 1.5.1
|
||||
- 1.5.0
|
||||
- pre-1.5.0
|
||||
- 1.8.3
|
||||
- 1.8.1
|
||||
- 1.8.0
|
||||
- 1.7.4
|
||||
- 1.7.3
|
||||
- 1.7.2
|
||||
- 1.7.1
|
||||
- 1.7.0
|
||||
- pre-1.7.0
|
||||
validations:
|
||||
required: true
|
||||
- type: input
|
||||
id: upcomingversion
|
||||
attributes:
|
||||
label: Upcoming Version
|
||||
description: If you're using the upcoming branch, please specify what was the commit hash you pulled from.
|
||||
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.
|
||||
validations:
|
||||
required: false
|
||||
- type: input
|
||||
|
||||
11
.github/pull_request_template.md
vendored
11
.github/pull_request_template.md
vendored
@@ -11,6 +11,15 @@
|
||||
<!-- Format: "Fixes #2345, fixes #4523, fixes #2222." -->
|
||||
<!-- If it doesn't apply, feel free to remove this section. -->
|
||||
|
||||
## **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. -->
|
||||
<!-- If it doesn't apply, feel free to remove this section. -->
|
||||
|
||||
## 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. -->
|
||||
|
||||
## **Discord contact info**
|
||||
<!--- formatted as name#numbers, e.g. Lunos#4026 -->
|
||||
<!--- Contributors must join https://discord.gg/6CzjAG6GZk -->
|
||||
<!--- Contributors must join https://discord.gg/6CzjAG6GZk -->
|
||||
|
||||
10
.github/workflows/build.yml
vendored
10
.github/workflows/build.yml
vendored
@@ -10,12 +10,14 @@ on:
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
container: devkitpro/devkitarm
|
||||
env:
|
||||
GAME_VERSION: EMERALD
|
||||
GAME_REVISION: 0
|
||||
GAME_LANGUAGE: ENGLISH
|
||||
MODERN: 0
|
||||
COMPARE: 0
|
||||
UNUSED_ERROR: 1
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
@@ -27,7 +29,9 @@ jobs:
|
||||
repository: pret/agbcc
|
||||
|
||||
- name: Install binutils
|
||||
run: sudo apt install gcc-arm-none-eabi binutils-arm-none-eabi libelf-dev
|
||||
run: |
|
||||
sudo apt update
|
||||
sudo apt install -y build-essential libpng-dev libelf-dev
|
||||
# build-essential, git, and libpng-dev are already installed
|
||||
# gcc-arm-none-eabi is only needed for the modern build
|
||||
# as an alternative to dkP
|
||||
@@ -39,6 +43,9 @@ jobs:
|
||||
working-directory: agbcc
|
||||
|
||||
- name: Agbcc
|
||||
env:
|
||||
MODERN: 0
|
||||
COMPARE: 0
|
||||
run: make -j${nproc} -O all
|
||||
|
||||
- name: Modern
|
||||
@@ -49,6 +56,7 @@ jobs:
|
||||
|
||||
- name: Test
|
||||
env:
|
||||
MODERN: 1
|
||||
TEST: 1
|
||||
run: |
|
||||
make -j${nproc} -O pokeemerald-test.elf
|
||||
|
||||
48
.github/workflows/docs.yml
vendored
Normal file
48
.github/workflows/docs.yml
vendored
Normal file
@@ -0,0 +1,48 @@
|
||||
name: Docs
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
|
||||
jobs:
|
||||
deploy:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: write
|
||||
pages: write
|
||||
id-token: write
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- name: Install latest mdbook
|
||||
run: |
|
||||
tag=$(curl 'https://api.github.com/repos/rust-lang/mdbook/releases/latest' | jq -r '.tag_name')
|
||||
url="https://github.com/rust-lang/mdbook/releases/download/${tag}/mdbook-${tag}-x86_64-unknown-linux-gnu.tar.gz"
|
||||
mkdir mdbook
|
||||
curl -sSL $url | tar -xz --directory=./mdbook
|
||||
echo `pwd`/mdbook >> $GITHUB_PATH
|
||||
- name: Build Book
|
||||
run: |
|
||||
cd docs
|
||||
mdbook build
|
||||
- name: Check if Pages is enabled
|
||||
uses: octokit/request-action@v2.x
|
||||
id: check_pages
|
||||
continue-on-error: true
|
||||
with:
|
||||
route: GET /repos/{repo}/pages
|
||||
repo: ${{ github.repository }}
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
- name: Setup Pages
|
||||
uses: actions/configure-pages@v4
|
||||
if: steps.check_pages.outcome == 'success'
|
||||
- name: Upload artifact
|
||||
uses: actions/upload-pages-artifact@v3
|
||||
with:
|
||||
path: 'docs/book'
|
||||
- name: Deploy to GitHub Pages
|
||||
id: deployment
|
||||
uses: actions/deploy-pages@v4
|
||||
if: steps.check_pages.outcome == 'success'
|
||||
3
.gitignore
vendored
3
.gitignore
vendored
@@ -21,7 +21,6 @@ sound/**/*.bin
|
||||
sound/songs/midi/*.s
|
||||
tools/agbcc
|
||||
*.map
|
||||
*.ld
|
||||
*.bat
|
||||
*.dump
|
||||
*.sa*
|
||||
@@ -39,3 +38,5 @@ prefabs.json
|
||||
*.diff
|
||||
*.sym
|
||||
*.js
|
||||
src/data/map_group_count.h
|
||||
tools/trainerproc/trainerproc
|
||||
|
||||
150
CHANGELOG.md
150
CHANGELOG.md
@@ -1,122 +1,48 @@
|
||||
# Pokeemerald-Expansion Changelog
|
||||
# Pokeemerald-Expansion Changelogs
|
||||
|
||||
# Version 1.6.2
|
||||
## 1.8.x
|
||||
- ### [Version 1.8.4](docs/changelogs/1.8.x/1.8.4.md) - Bugfix Release 🧹
|
||||
- ### [Version 1.8.3](docs/changelogs/1.8.x/1.8.3.md) - Bugfix Release 🧹
|
||||
- ### [Version 1.8.2](docs/changelogs/1.8.x/1.8.2.md) - Bugfix Release 🧹
|
||||
- ### [Version 1.8.1](docs/changelogs/1.8.x/1.8.1.md) - HOTFIX Release 🔥
|
||||
- ### [Version 1.8.0](docs/changelogs/1.8.x/1.8.0.md) - Feature Release ✨
|
||||
|
||||
## 🌋 *IMPORTANT CHANGES* 🌋
|
||||
### Battle changes
|
||||
* Battler Types are now obtained via `GetBattlerType` instead of `gBattleMons[battlerId].type1/2/3` to better consider Roost. Be sure to update your custom battle effects to account for this change.
|
||||
## 1.7.x
|
||||
- ### [Version 1.7.4](docs/changelogs/1.7.x/1.7.4.md) - Bugfix Release 🧹
|
||||
- ### [Version 1.7.3](docs/changelogs/1.7.x/1.7.3.md) - Bugfix Release 🧹
|
||||
- ### [Version 1.7.2](docs/changelogs/1.7.x/1.7.2.md) - Bugfix Release 🧹
|
||||
- ### [Version 1.7.1](docs/changelogs/1.7.x/1.7.1.md) - Bugfix Release 🧹
|
||||
- ### [Version 1.7.0](docs/changelogs/1.7.x/1.7.0.md) - Feature Release ✨
|
||||
|
||||
## 🧬 General 🧬
|
||||
### Fixed
|
||||
* Fixed Cheat Start not initiating time-based events by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3446
|
||||
## 1.6.x
|
||||
- ### [Version 1.6.2](docs/changelogs/1.6.x/1.6.2.md) - Bugfix Release 🧹
|
||||
- ### [Version 1.6.1](docs/changelogs/1.6.x/1.6.1.md) - HOTFIX Release 🔥
|
||||
- ### [Version 1.6.0](docs/changelogs/1.6.x/1.6.0.md) - Feature Release ✨
|
||||
|
||||
## 🐉 Pokémon 🐉
|
||||
### Changed
|
||||
* Updated Cresselia's base stats to Gen 9 by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/3419
|
||||
* Updated Zacian/Zamazenta base stats to Gen 9 by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3421
|
||||
### Fixed
|
||||
* Fixed Kleavor, Hisuian Sneasel and Sneasler missing their SV abilities by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/3391
|
||||
* Fixed Bergmite/Avalugg old and updated egg groups being switched by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3380
|
||||
## 1.5.x
|
||||
- ### [Version 1.5.3](docs/changelogs/1.5.x/1.5.3.md) - HOTFIX Release 🔥
|
||||
- ### [Version 1.5.2](docs/changelogs/1.5.x/1.5.2.md) - Bugfix Release 🧹
|
||||
- ### [Version 1.5.1](docs/changelogs/1.5.x/1.5.1.md) - Bugfix Release 🧹
|
||||
- ### [Version 1.5.0](docs/changelogs/1.5.x/1.5.0.md) - Feature Release ✨
|
||||
|
||||
## 🤹 Moves 🤹
|
||||
### Changed
|
||||
* Quick Draw now uses weighted RNG by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3399
|
||||
* Added `IS_BATTLER_TYPELESS` macro that checks if the specified battler has no valid type by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/3303
|
||||
### Fixed
|
||||
* Fixed Protect failing if the user flinched on the previous turn by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3345
|
||||
* Fixed entry hazards not working properly being cleared on switch-in by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3316
|
||||
* This includes Toxic Spikes not working if Pecha Berry actived on the previous turn.
|
||||
* Fixed Roost overwriting other type changing at the end of the turn (Soak, Forest's Curse, Color Change, etc.) by @BLourenco in https://github.com/rh-hideout/pokeemerald-expansion/pull/3258
|
||||
* Now it suppresses the user's Flying-type rather than remove and re-add it.
|
||||
* Fixes Salt Cure visual bug if mon fainted by direct attack by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3388
|
||||
* Fixed Purifying Salt not preventing the use of Rest by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3399
|
||||
* Fixed Make it Rain lowering Sp. Attack twice if hitting 2 targets in double battles by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3441
|
||||
* Fixed Reflect Type not properly handle 3rd types by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/3303
|
||||
* Fixed form change triggered by switching not occuring when using moves like U-Turn or Baton Pass by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3463
|
||||
* Fixed Last Resort not counting Sleep Talk as used for its effect by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3378
|
||||
## 1.4.x
|
||||
- ### [Version 1.4.3](docs/changelogs/1.4.x/1.4.3.md) - Bugfix Release 🧹
|
||||
- ### [Version 1.4.2](docs/changelogs/1.4.x/1.4.2.md) - Bugfix Release 🧹
|
||||
- ### [Version 1.4.1](docs/changelogs/1.4.x/1.4.1.md) - HOTFIX Release 🔥
|
||||
- ### [Version 1.4.0](docs/changelogs/1.4.x/1.4.0.md) - Feature Release ✨
|
||||
|
||||
## 🎭 Abilities 🎭
|
||||
### Changed
|
||||
* Removed unused `STATUS3_CANT_SCORE_A_CRIT` by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3377
|
||||
* Moved Beads of Ruin and Sword of Ruin damage to the appropiate damage modifier functions by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3415
|
||||
### Fixed
|
||||
* Fixed Intimidate increasing the attack of both opponents if one of them has Contrary in double battles by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3365
|
||||
* Fixed Battle/Shell Armor not preventing critical hits by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3377
|
||||
* Fixed Rivalry's effect being reversed by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3381
|
||||
* Fixed Rivalry lowering attack if either attacker or target were genderless by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3381
|
||||
* Fixed missing Poison Heal Ability Popup by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3385
|
||||
* Fixed Parental Bond not working at all by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3417
|
||||
* Fixed Beads of Ruin and Sword of Ruin damage modifiers by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3415
|
||||
* Fixed Sheer Force not negating effects that benefit the user (eg. Flame Charge, Power-Up Punch) by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3378
|
||||
* Fixed Strength Sap not healing the user when used on a Substitute by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3486
|
||||
* Fixed Substitute showing the "took damage for" message if Strength Sap was used on it by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3486
|
||||
* Fixed Weak Armor interrupting Multi Hit moves by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3497
|
||||
## 1.3.x
|
||||
- ### [Version 1.3.0](docs/changelogs/1.3.x/1.3.0.md) - Feature Release ✨
|
||||
|
||||
## 🧶 Items 🧶
|
||||
### Fixed
|
||||
* Fixed Shiny Charm doing too many rerolls by default by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3327
|
||||
* Fixed Berserk Gene activating for the wrong Pokémon double battles by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3363
|
||||
* Fixed Red Card not being consumed after opponent Sticky Web activation by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3364
|
||||
* Fixed implementation of Gen6 that didn't allow for the Exp Share flag to be set via script without setting the item to the Gen 6+ version by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3384
|
||||
* Fixed Kee Berry raising defense by 1 stage instead of 2 by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3409
|
||||
* Fixed Kee Berry incorrect stat raise message by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3409
|
||||
* Fixed Razor Fang not being able to be used directly even if `I_USE_EVO_HELD_ITEMS_FROM_BAG` was set to `TRUE` by @fdeblasio in https://github.com/rh-hideout/pokeemerald-expansion/pull/3456
|
||||
## 1.2.x
|
||||
- ### [Version 1.2.0](docs/changelogs/1.2.x/1.2.0.md) - Feature Release ✨
|
||||
|
||||
## 🧹 Cleanup 🧹
|
||||
* `AbilityBattleEffects` uses `B_MSG_TERRAIN` constants for field terrain intro text by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/3410
|
||||
* Removed all trailing whitespace by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3472
|
||||
## 1.1.x
|
||||
- ### [Version 1.1.1](docs/changelogs/1.1.x/1.1.1.md) - Bugfix Release 🧹
|
||||
- ### [Version 1.1.0](docs/changelogs/1.1.x/1.1.0.md) - Feature Release ✨
|
||||
|
||||
## 🧪 Test Runner 🧪
|
||||
### Added
|
||||
* Flinch tests by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3345
|
||||
* Berserk Gene double battle tests by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3363
|
||||
* More specific Toxic Spikes tests by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3316
|
||||
* Red Card/Sticky Web test @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3364
|
||||
* Intimidate/Contrary double battle test by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3365
|
||||
* Critical Hit tests by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3377
|
||||
* Roost tests by @BLourenco in https://github.com/rh-hideout/pokeemerald-expansion/pull/3258
|
||||
* Rivalry tests by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3381
|
||||
* Various tests by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3385
|
||||
* Defeatist, Dragon's Maw, Earth Eater, Gale Wings, Poison Heal, Rocky Payload, Sap Sipper, Steelworker and Transistor.
|
||||
* Various tests by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3399
|
||||
* Beast Boost, Ice Scales, Neuroforce, Purifying Salt, Quick Draw and Sharpness.
|
||||
* Berry tests @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3409
|
||||
* Full: Apicot, Custap, Ganlon, Jaboca, Kee, Lansat, Liechi, Maranga, Micle, Petaya, Rowap and Salac Berries.
|
||||
* TODO: Starf Berry.
|
||||
* Weather and type-specific tests by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3260
|
||||
* Full: Freezing, Hail, Moonlight, Morning Sun, Sandstorm, Snow, Solar Beam/Blade, Steel poisoning, Synthesis, Thunder and Weather Ball.
|
||||
* Partial: Prankster, Safety Goggles, Aurora Veil, Hurricane, Leech Seed and OHKO moves.
|
||||
* TODO: Harvest.
|
||||
* Single Parental Bond test by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3417
|
||||
* Several tests by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3378
|
||||
* Full: Weak Armor, Last Resort, Stealth Rock.
|
||||
* Completed Weak Armor tests by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3493
|
||||
* Partial: Defiant, Sheer Force, White Herb, Strength Sap.
|
||||
### Changed
|
||||
* Red Card tests now check if the item was consumed by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3364
|
||||
* Tests now cannot use `i` in their cycles to avoid messing with `PARAMETRIZE` by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/3408
|
||||
* Moved battle tests off the heap by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/3414
|
||||
* Moved Powder/Grass test to `move_flags` folder by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3260
|
||||
* Continuous `NOT x; NOT y;` are now not allowed in tests due to them not acting as one would expect by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/3459
|
||||
* Test writers should use `NONE_OF { x; y; }` instead.
|
||||
### Fixed
|
||||
* Fixed CreateNPCTrainerPartyForTrainer test failing on modern by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3367
|
||||
* Fixed `RNG_CRITICAL_HIT` by @mrgriffin and @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3377
|
||||
* Fixed `ASSUMPTIONS` block not working by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3368
|
||||
* Fixup by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/3408
|
||||
* Fixed Beads of Ruin and Sword of Ruin damage tests by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3415
|
||||
* Fixes test RNG by @mrgriffin and @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3433
|
||||
* Fixed battle test estimateCost bug by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/3448
|
||||
* Test cleanup and improvements by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3449
|
||||
* Removed duplicated Prankster TO_DO test.
|
||||
* Corrected Multi-hit test names (4 and 5 hits stated 35% instead of 15%).
|
||||
* Grouped Maranga Berry's Physical vs Special tests using PARAMETRIZE.
|
||||
* Improved Jaboca, Kee and Rowap tests by @AlexOn1ine
|
||||
* Fixed `ModifyPersonalityForNature` by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/3452
|
||||
* Fixed test_runner.c modern warning by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/3451
|
||||
## 1.0.x
|
||||
- ### [Version 1.0.0](docs/changelogs/1.0.x/1.0.0.md) - Feature Release ✨
|
||||
|
||||
## New Contributors
|
||||
* @BLourenco made their first contribution in https://github.com/rh-hideout/pokeemerald-expansion/pull/3258
|
||||
|
||||
## Full Changelog
|
||||
https://github.com/rh-hideout/pokeemerald-expansion/compare/expansion/1.6.1...expansion/1.6.2
|
||||
## Pre-1.0.x:
|
||||
- ### [Version 0.9.0](docs/changelogs/0.9.x/0.9.0.md) - Retroactive Version 🦕
|
||||
|
||||
426
INSTALL.md
426
INSTALL.md
@@ -1,6 +1,6 @@
|
||||
# Instructions
|
||||
|
||||
These instructions explain how to set up the tools required to build **pokeemerald**, which assembles the source files into a ROM.
|
||||
These instructions explain how to set up the tools required to build **pokeemerald Expansion**, which assembles the source files into a ROM (pokeemerald.gba).
|
||||
|
||||
These instructions come with notes which can be expanded by clicking the "<i>Note...</i>" text.
|
||||
In general, you should not need to open these unless if you get an error or if you need additional clarification.
|
||||
@@ -27,10 +27,10 @@ All of the Windows instructions assume that the default drive is C:\\. If this d
|
||||
**A note of caution**: As Windows 7 is officially unsupported by Microsoft and Windows 8 has very little usage, some maintainers are unwilling to maintain the Windows 7/8 instructions. Thus, these instructions may break in the future with fixes taking longer than fixes to the Windows 10 instructions.
|
||||
|
||||
## Windows 10/11 (WSL1)
|
||||
WSL1 is the preferred terminal to build **pokeemerald**. The following instructions will explain how to install WSL1 (referred to interchangeably as WSL).
|
||||
WSL1 is the preferred terminal to build **pokeemerald Expansion**. The following instructions will explain how to install WSL1 (referred to interchangeably as WSL).
|
||||
- If WSL (Debian or Ubuntu) is **not installed**, then go to [Installing WSL1](#Installing-WSL1).
|
||||
- Otherwise, if WSL is installed, but it **hasn't previously been set up for another decompilation project**, then go to [Setting up WSL1](#Setting-up-WSL1).
|
||||
- Otherwise, **open WSL** and go to [Choosing where to store pokeemerald (WSL1)](#Choosing-where-to-store-pokeemerald-WSL1).
|
||||
- Otherwise, **open WSL** and go to [Choosing where to store pokeemerald Expansion (WSL1)](#Choosing-where-to-store-pokeemerald-expansion-WSL1).
|
||||
|
||||
### Installing WSL1
|
||||
1. Open [Windows Powershell **as Administrator**](https://i.imgur.com/QKmVbP9.png), and run the following command (Right Click or Shift+Insert is paste in the Powershell).
|
||||
@@ -79,21 +79,60 @@ Some tips before proceeding:
|
||||
|
||||
> Note: If the repository you plan to build has an **[older revision of the INSTALL.md](https://github.com/pret/pokeemerald/blob/571c598/INSTALL.md)**, then follow the [legacy WSL1 instructions](docs/legacy_WSL1_INSTALL.md) from here.
|
||||
|
||||
4. Certain packages are required to build pokeemerald. Install these packages by running the following command:
|
||||
4. Certain packages are required to build pokeemerald Expansion. Install these packages by running the following command:
|
||||
|
||||
```bash
|
||||
sudo apt install build-essential binutils-arm-none-eabi git libpng-dev
|
||||
sudo apt install build-essential binutils-arm-none-eabi gcc-arm-none-eabi libnewlib-arm-none-eabi git libpng-dev
|
||||
```
|
||||
<details>
|
||||
<summary><i>Note...</i></summary>
|
||||
|
||||
> If the above command does not work, try the above command but replacing `apt` with `apt-get`.
|
||||
</details>
|
||||
This will install GCC v10 on Ubuntu 22.04. pokeemerald Expansion works with GCC v10, but remote repositories and the RHH Team use GCC v13 for stricter error-checking. If you want to upgrade from v10 to v13, also follow the devkitpro install instructions.
|
||||
|
||||
### Choosing where to store pokeemerald (WSL1)
|
||||
WSL has its own file system that's not natively accessible from Windows, but Windows files *are* accessible from WSL. So you're going to want to store pokeemerald within Windows.
|
||||
### Installing devkitARM on WSL1
|
||||
|
||||
For example, say you want to store pokeemerald (and agbcc) in **C:\Users\\_\<user>_\Desktop\decomps**. First, ensure that the folder already exists. Then, enter this command to **change directory** to said folder, where *\<user>* is your **Windows** username:
|
||||
1. Change directory to somewhere you can download a package, such as **C:\Users\\_\<user>_\Downloads** (the Downloads location for most users). To do so, enter this command, where *\<user> is your **Windows** username:
|
||||
|
||||
```bash
|
||||
cd /mnt/c/Users/<user>/Downloads
|
||||
```
|
||||
|
||||
2. Once the directory has been changed, run the following commands to install devkitARM.
|
||||
|
||||
```bash
|
||||
sudo apt install wget
|
||||
wget https://apt.devkitpro.org/install-devkitpro-pacman
|
||||
chmod +x ./install-devkitpro-pacman
|
||||
sudo ./install-devkitpro-pacman
|
||||
sudo dkp-pacman -S gba-dev
|
||||
```
|
||||
The last command will ask for the selection of packages to install. Just press Enter to install all of them, followed by entering Y to proceed with the installation.
|
||||
|
||||
3. Run the following command to set devkitPro related environment variables (alternatively, close and re-open WSL):
|
||||
|
||||
```bash
|
||||
source /etc/profile.d/devkit-env.sh
|
||||
```
|
||||
|
||||
devkitARM is now installed.
|
||||
|
||||
### Installing Python on WSL1
|
||||
|
||||
To install Python on WSL1, simply run the following commands:
|
||||
|
||||
```bash
|
||||
sudo apt update && sudo apt upgrade
|
||||
sudo apt install python3
|
||||
```
|
||||
|
||||
Python is now installed.
|
||||
|
||||
### Choosing where to store pokeemerald Expansion (WSL1)
|
||||
WSL has its own file system that's not natively accessible from Windows, but Windows files *are* accessible from WSL. So you're going to want to store pokeemerald Expansion within Windows.
|
||||
|
||||
For example, say you want to store pokeemerald Expansion in **C:\Users\\_\<user>_\Desktop\decomps**. First, ensure that the folder already exists. Then, enter this command to **change directory** to said folder, where *\<user>* is your **Windows** username:
|
||||
|
||||
```bash
|
||||
cd /mnt/c/Users/<user>/Desktop/decomps
|
||||
@@ -115,7 +154,7 @@ Otherwise, ask for help on Discord or IRC (see [README.md](README.md)), or conti
|
||||
|
||||
- If devkitARM is **not installed**, then go to [Installing devkitARM](#installing-devkitarm).
|
||||
- If devkitARM is installed, but msys2 **hasn't previously been set up for another decompilation project**, then go to [Setting up msys2](#setting-up-msys2).
|
||||
- Otherwise, **open msys2** and go to [Choosing where to store pokeemerald (msys2)](#choosing-where-to-store-pokeemerald-msys2).
|
||||
- Otherwise, **open msys2** and go to [Choosing where to store pokeemerald Expansion (msys2)](#choosing-where-to-store-pokeemerald-expansion-msys2).
|
||||
|
||||
### Installing devkitARM
|
||||
1. Download the devkitPro installer [here](https://github.com/devkitPro/installer/releases).
|
||||
@@ -127,7 +166,7 @@ Note that in msys2, Copy is Ctrl+Insert and Paste is Shift+Insert.
|
||||
|
||||
1. Open msys2 at C:\devkitPro\msys2\msys2_shell.bat.
|
||||
|
||||
2. Certain packages are required to build pokeemerald. Install these by running the following two commands:
|
||||
2. Certain packages are required to build pokeemerald Expansion. Install these by running the following two commands:
|
||||
|
||||
```bash
|
||||
pacman -Sy msys2-keyring
|
||||
@@ -172,10 +211,20 @@ Note that in msys2, Copy is Ctrl+Insert and Paste is Shift+Insert.
|
||||
cd
|
||||
```
|
||||
|
||||
### Choosing where to store pokeemerald (msys2)
|
||||
At this point, you can choose a folder to store pokeemerald into. If you're okay with storing pokeemerald in the user profile folder, then proceed to [Installation](#installation). Otherwise, you'll need to account for where pokeemerald is stored when changing directory to the pokeemerald folder.
|
||||
### Installing Python on msys2
|
||||
|
||||
For example, if you want to store pokeemerald (and agbcc) in **C:\Users\\_\<user>_\Desktop\decomps** (where *\<user>* is your **Windows** username), enter this command:
|
||||
To install Python on msys2, simply run the following commands:
|
||||
|
||||
```bash
|
||||
pacman -S mingw-w64-x86_64-python3
|
||||
```
|
||||
|
||||
Python is now installed.
|
||||
|
||||
### Choosing where to store pokeemerald Expansion (msys2)
|
||||
At this point, you can choose a folder to store pokeemerald Expansion into. If you're okay with storing pokeemerald Expansion in the user profile folder, then proceed to [Installation](#installation). Otherwise, you'll need to account for where pokeemerald Expansion is stored when changing directory to the pokeemerald-expansion folder.
|
||||
|
||||
For example, if you want to store pokeemerald Expansion in **C:\Users\\_\<user>_\Desktop\decomps** (where *\<user>* is your **Windows** username), enter this command:
|
||||
|
||||
```bash
|
||||
cd Desktop/decomps
|
||||
@@ -191,7 +240,7 @@ Otherwise, ask for help on Discord or IRC (see [README.md](README.md)), or conti
|
||||
2.
|
||||
- If Cygwin is **not installed**, or does not have all of the required packages installed, then go to [Installing Cygwin](#installing-cygwin).
|
||||
- If Cygwin is installed, but **is not configured to work with devkitARM**, then go to [Configuring devkitARM for Cygwin](#configuring-devkitarm-for-cygwin).
|
||||
- Otherwise, **open Cygwin** and go to [Choosing where to store pokeemerald (Cygwin)](#choosing-where-to-store-pokeemerald-cygwin)
|
||||
- Otherwise, **open Cygwin** and go to [Choosing where to store pokeemerald Expansion (Cygwin)](#choosing-where-to-store-pokeemerald-expansion-cygwin)
|
||||
|
||||
### Installing Cygwin
|
||||
1. Download [Cygwin](https://cygwin.com/install.html): setup-x86_64.exe for 64-bit Windows, setup-x86.exe for 32-bit.
|
||||
@@ -234,15 +283,15 @@ Note that in Cygwin, Copy is Ctrl+Insert and Paste is Shift+Insert.
|
||||
> Replace the drive letter c with the actual drive letter if it is not c.
|
||||
</details>
|
||||
|
||||
### Choosing where to store pokeemerald (Cygwin)
|
||||
### Choosing where to store pokeemerald Expansion (Cygwin)
|
||||
|
||||
Cygwin has its own file system that's within Windows, at **C:\cygwin64\home\\_\<user>_**. If you don't want to store pokeemerald there, you'll need to account for where pokeemerald is stored when **changing directory** to the pokeemerald folder.
|
||||
Cygwin has its own file system that's within Windows, at **C:\cygwin64\home\\_\<user>_**. If you don't want to store pokeemerald Expansion there, you'll need to account for where ppokeemerald Expansion is stored when **changing directory** to the pokeemerald-expansion folder.
|
||||
|
||||
For example, if you want to store pokeemerald (and agbcc) in **C:\Users\\_\<user>_\Desktop\decomps**, enter this command, where *\<user>* is your **Windows** username:
|
||||
For example, if you want to store pokeemerald Expansion in **C:\Users\\_\<user>_\Desktop\decomps**, enter this command, where *\<user>* is your **Windows** username:
|
||||
```bash
|
||||
cd c:/Users/<user>/Desktop/decomps
|
||||
```
|
||||
Note that the directory **must exist** in Windows. If you want to store pokeemerald in a dedicated folder that doesn't exist (e.g. the example provided above), then create the folder (e.g. using Windows Explorer) before executing the `cd` command.
|
||||
Note that the directory **must exist** in Windows. If you want to store pokeemerald Expansion in a dedicated folder that doesn't exist (e.g. the example provided above), then create the folder (e.g. using Windows Explorer) before executing the `cd` command.
|
||||
|
||||
<details>
|
||||
<summary><i>Notes...</i></summary>
|
||||
@@ -261,8 +310,9 @@ If this works, then proceed to [Installation](#installation). Otherwise, ask for
|
||||
```
|
||||
|
||||
2. - If libpng is **not installed**, then go to [Installing libpng (macOS)](#installing-libpng-macos).
|
||||
- If pkg-config is **not installed**, then go to [Installing pkg-config (macos)](#installing-pkg-config-macos).
|
||||
- If devkitARM is **not installed**, then go to [Installing devkitARM (macOS)](#installing-devkitarm-macos).
|
||||
- Otherwise, **open the Terminal** and go to [Choosing where to store pokeemerald (macOS)](#choosing-where-to-store-pokeemerald-macos)
|
||||
- Otherwise, **open the Terminal** and go to [Choosing where to store pokeemerald Expansion (macOS)](#choosing-where-to-store-pokeemerald-expansion-macos)
|
||||
|
||||
### Installing libpng (macOS)
|
||||
<details>
|
||||
@@ -280,7 +330,27 @@ If this works, then proceed to [Installation](#installation). Otherwise, ask for
|
||||
```
|
||||
libpng is now installed.
|
||||
|
||||
Continue to [Installing devkitARM (macOS)](#installing-devkitarm-macos) if **devkitARM is not installed**, otherwise, go to [Choosing where to store pokeemerald (macOS)](#choosing-where-to-store-pokeemerald-macos).
|
||||
Continue to [Installing pkg-config (macOS)](#installing-pkg-config-macos) if **pkg-config is not installed**. Otherwise, continue to [Installing devkitARM (macOS)](#installing-devkitarm-macos) if **devkitARM is not installed**.
|
||||
|
||||
If both pkg-config and devkitARM are already installed, go to [Choosing where to store pokeemerald Expansion (macOS)](#choosing-where-to-store-pokeemerald-expansion-macos).
|
||||
|
||||
### Installing pkg-config (macOS)
|
||||
<details>
|
||||
<summary><i>Note for advanced users...</i></summary>
|
||||
|
||||
> This guide installs pkg-config via Homebrew as it is the easiest method, however advanced users can install pkg-config through other means if they so desire.
|
||||
</details>
|
||||
|
||||
1. Open the Terminal.
|
||||
2. If Homebrew is not installed, then install [Homebrew](https://brew.sh/) by following the instructions on the website.
|
||||
3. Run the following command to install libpng.
|
||||
|
||||
```bash
|
||||
brew install pkg-config
|
||||
```
|
||||
pkg-config is now installed.
|
||||
|
||||
Continue to [Installing devkitARM (macOS)](#installing-devkitarm-macos) if **devkitARM is not installed**, otherwise, go to [Choosing where to store pokeemerald Expansion (macOS)](#choosing-where-to-store-pokeemerald-expansion-macos).
|
||||
|
||||
### Installing devkitARM (macOS)
|
||||
1. Download the `devkitpro-pacman-installer.pkg` package from [here](https://github.com/devkitPro/pacman/releases).
|
||||
@@ -297,6 +367,18 @@ If this works, then proceed to [Installation](#installation). Otherwise, ask for
|
||||
|
||||
4. After the tools are installed, devkitARM must now be made accessible from anywhere by the system. To do so, run the following commands:
|
||||
|
||||
```bash
|
||||
export DEVKITPRO=/opt/devkitpro
|
||||
echo "export DEVKITPRO=$DEVKITPRO" >> ~/.zshrc
|
||||
export DEVKITARM=$DEVKITPRO/devkitARM
|
||||
echo "export DEVKITARM=$DEVKITARM" >> ~/.zshrc
|
||||
|
||||
echo "if [ -f ~/.zshrc ]; then . ~/.zshrc; fi" >> ~/.zprofile
|
||||
```
|
||||
*Note: Starting with macOS 10.15, the default Unix shell is now zsh. If you migrated from an older version of macOS, you might still be using bash. You can check my running `echo $0` in the terminal.*
|
||||
<details>
|
||||
<summary><i>If your terminal is using bash instead of zsh...</i></summary>
|
||||
|
||||
```bash
|
||||
export DEVKITPRO=/opt/devkitpro
|
||||
echo "export DEVKITPRO=$DEVKITPRO" >> ~/.bashrc
|
||||
@@ -305,15 +387,22 @@ If this works, then proceed to [Installation](#installation). Otherwise, ask for
|
||||
|
||||
echo "if [ -f ~/.bashrc ]; then . ~/.bashrc; fi" >> ~/.bash_profile
|
||||
```
|
||||
</details>
|
||||
|
||||
### Choosing where to store pokeemerald (macOS)
|
||||
At this point, you can choose a folder to store pokeemerald into. If you're okay with storing pokeemerald in the user folder, then proceed to [Installation](#installation). Otherwise, you'll need to account for where pokeemerald is stored when changing directory to the pokeemerald folder.
|
||||
### Installing Python (macOS)
|
||||
1. Download the latest Python package from [here](https://www.python.org/downloads/).
|
||||
2. Open the package to install Python.
|
||||
|
||||
For example, if you want to store pokeemerald (and agbcc) in **~/Desktop/decomps**, enter this command to **change directory** to the desired folder:
|
||||
Python is now installed.
|
||||
|
||||
### Choosing where to store pokeemerald Expansion (macOS)
|
||||
At this point, you can choose a folder to store pokeemerald Expansion into. If you're okay with storing pokeemerald Expansion in the user folder, then proceed to [Installation](#installation). Otherwise, you'll need to account for where pokeemerald Expansion is stored when changing directory to the pokeemerald-expansion folder.
|
||||
|
||||
For example, if you want to store pokeemerald Expansion in **~/Desktop/decomps**, enter this command to **change directory** to the desired folder:
|
||||
```bash
|
||||
cd Desktop/decomps
|
||||
```
|
||||
Note that the directory **must exist** in the folder system. If you want to store pokeemerald in a dedicated folder that doesn't exist (e.g. the example provided above), then create the folder (e.g. using Finder) before executing the `cd` command.
|
||||
Note that the directory **must exist** in the folder system. If you want to store pokeemerald Expansion in a dedicated folder that doesn't exist (e.g. the example provided above), then create the folder (e.g. using Finder) before executing the `cd` command.
|
||||
|
||||
<details>
|
||||
<summary><i>Note..</i>.</summary>
|
||||
@@ -329,30 +418,69 @@ Open Terminal and enter the following commands, depending on which distro you're
|
||||
### Debian/Ubuntu-based distributions
|
||||
Run the following command to install the necessary packages:
|
||||
```bash
|
||||
sudo apt install build-essential binutils-arm-none-eabi git libpng-dev
|
||||
sudo apt install build-essential binutils-arm-none-eabi gcc-arm-none-eabi libnewlib-arm-none-eabi git libpng-dev
|
||||
```
|
||||
Then proceed to [Choosing where to store pokeemerald (Linux)](#choosing-where-to-store-pokeemerald-linux).
|
||||
Then proceed to [Choosing where to store pokeemerald Expansion (Linux)](#choosing-where-to-store-pokeemerald-expansion-linux).
|
||||
<details>
|
||||
<summary><i>Note for legacy repos...</i></summary>
|
||||
|
||||
> If the repository you plan to build has an **[older revision of the INSTALL.md](https://github.com/pret/pokeemerald/blob/571c598/INSTALL.md)**,
|
||||
> then you will have to install devkitARM. Install all the above packages except binutils-arm-none-eabi, and follow the instructions to
|
||||
> then you will have to install devkitARM. Install all the above packages except for the arm-none-eabi packages, and follow the instructions to
|
||||
> [install devkitARM on Debian/Ubuntu-based distributions](#installing-devkitarm-on-debianubuntu-based-distributions).
|
||||
</details>
|
||||
|
||||
### Installing devkitARM on Debian/Ubuntu-based distributions
|
||||
|
||||
1. Change directory to somewhere you can download a packages, like a Downloads folder. Then, run the following commands to install devkitARM:
|
||||
|
||||
```bash
|
||||
wget https://apt.devkitpro.org/install-devkitpro-pacman
|
||||
chmod +x ./install-devkitpro-pacman
|
||||
sudo ./install-devkitpro-pacman
|
||||
sudo dkp-pacman -S gba-dev
|
||||
```
|
||||
The last command will ask for the selection of packages to install. Just press Enter to install all of them, followed by entering Y to proceed with the installation.
|
||||
|
||||
4. Run the following command to set devkitPro related environment variables (alternatively, close and re-open the Terminal):
|
||||
|
||||
```bash
|
||||
source /etc/profile.d/devkit-env.sh
|
||||
```
|
||||
|
||||
devkitARM is now installed.
|
||||
|
||||
### Arch Linux
|
||||
Run this command as root to install the necessary packages:
|
||||
```bash
|
||||
pacman -S base-devel arm-none-eabi-binutils git libpng
|
||||
pacman -S base-devel arm-none-eabi-binutils arm-none-eabi-gcc arm-none-eabi-newlib git libpng
|
||||
```
|
||||
Then proceed to [Choosing where to store pokeemerald (Linux)](#choosing-where-to-store-pokeemerald-linux).
|
||||
<details>
|
||||
<summary><i>Note for legacy repos...</i></summary>
|
||||
|
||||
> If the repository you plan to build has an **[older revision of the INSTALL.md](https://github.com/pret/pokeemerald/blob/571c598/INSTALL.md)**,
|
||||
> then you will have to install devkitARM. Install all the above packages except binutils-arm-none-eabi, and follow the instructions to
|
||||
> [install devkitARM on Arch Linux](#installing-devkitarm-on-arch-linux).
|
||||
</details>
|
||||
### Installing devkitARM on Arch Linux
|
||||
|
||||
1. Follow [devkitPro's instructions](https://devkitpro.org/wiki/devkitPro_pacman#Customising_Existing_Pacman_Install) to configure `pacman` to download devkitPro packages.
|
||||
2. Install `gba-dev`: run the following command as root.
|
||||
|
||||
```console
|
||||
pacman -S gba-dev
|
||||
```
|
||||
This will ask for the selection of packages to install. Just press Enter to install all of them, followed by entering Y to proceed with the installation.
|
||||
|
||||
3. Run the following command to set devkitPro related environment variables (alternatively, close and re-open the Terminal):
|
||||
|
||||
```bash
|
||||
source /etc/profile.d/devkit-env.sh
|
||||
```
|
||||
|
||||
devkitARM is now installed.
|
||||
|
||||
Then proceed to [Choosing where to store pokeemerald Expansion (Linux)](#choosing-where-to-store-pokeemerald-expansion-linux).
|
||||
|
||||
### NixOS
|
||||
Run the following command to start an interactive shell with the necessary packages:
|
||||
```bash
|
||||
nix-shell -p pkgsCross.arm-embedded.stdenv.cc git pkg-config libpng
|
||||
```
|
||||
Then proceed to [Choosing where to store pokeemerald Expansion (Linux)](#choosing-where-to-store-pokeemerald-expansion-linux).
|
||||
|
||||
### Other distributions
|
||||
_(Specific instructions for other distributions would be greatly appreciated!)_
|
||||
@@ -374,8 +502,11 @@ _(Specific instructions for other distributions would be greatly appreciated!)_
|
||||
|
||||
The last command will ask for the selection of packages to install. Just press Enter to install all of them, followed by entering Y to proceed with the installation.
|
||||
|
||||
### Choosing where to store pokeemerald (Linux)
|
||||
At this point, you can choose a folder to store pokeemerald (and agbcc) into. If so, you'll have to account for the modified folder path when changing directory to the pokeemerald folder.
|
||||
### Installing Python in Linux
|
||||
Installing Python depends on your distribution, please refere to the instructions [here](https://docs.python-guide.org/starting/install3/linux/).
|
||||
|
||||
### Choosing where to store pokeemerald Expansion (Linux)
|
||||
At this point, you can choose a folder to store pokeemerald Expansion into. If so, you'll have to account for the modified folder path when changing directory to the pokeemerald-expansion folder.
|
||||
|
||||
If this works, then proceed to [Installation](#installation). Otherwise, ask for help on Discord or IRC (see [README.md](README.md)).
|
||||
|
||||
@@ -384,12 +515,12 @@ If this works, then proceed to [Installation](#installation). Otherwise, ask for
|
||||
<details>
|
||||
<summary><i>Note for Windows users...</i></summary>
|
||||
|
||||
> Consider adding an exception for the `pokeemerald` and/or `decomps` folder in Windows Security using
|
||||
> Consider adding an exception for the `pokeemerald-expansion` and/or `decomps` folder in Windows Security using
|
||||
> [these instructions](https://support.microsoft.com/help/4028485). This prevents Microsoft Defender from
|
||||
> scanning them which might improve performance while building.
|
||||
</details>
|
||||
|
||||
1. If pokeemerald is not already downloaded (some users may prefer to download pokeemerald via a git client like GitHub Desktop), run:
|
||||
1. If pokeemerald Expansion is not already downloaded (some users may prefer to download pokeemerald Expansion via a git client like GitHub Desktop), run:
|
||||
|
||||
```bash
|
||||
git clone https://github.com/rh-hideout/pokeemerald-expansion
|
||||
@@ -403,54 +534,18 @@ If this works, then proceed to [Installation](#installation). Otherwise, ask for
|
||||
> cd
|
||||
> sudo umount /mnt/c
|
||||
> sudo mount -t drvfs C: /mnt/c -o metadata,noatime
|
||||
> cd <folder where pokeemerald is to be stored>
|
||||
> cd <folder where pokeemerald-expansion is to be stored>
|
||||
> ```
|
||||
> Where *\<folder where pokeemerald is to be stored>* is the path of the folder [where you chose to store pokeemerald](#Choosing-where-to-store-pokeemerald-WSL1). Then run the `git clone` command again.
|
||||
> Where *\<folder where pokeemerald-expansion is to be stored>* is the path of the folder [where you chose to store pokeemerald Expansion](#Choosing-where-to-store-pokeemerald-expansion-WSL1). Then run the `git clone` command again.
|
||||
</details>
|
||||
|
||||
Now you're ready to build pokeemerald Expansion.
|
||||
|
||||
2. Install agbcc into pokeemerald. The commands to run depend on certain conditions. **You should only follow one of the listed instructions**:
|
||||
- If agbcc has **not been built before** in the folder where you chose to store pokeemerald, run the following commands to build and install it into pokeemerald:
|
||||
## Build pokeemerald Expansion
|
||||
|
||||
```bash
|
||||
git clone https://github.com/pret/agbcc
|
||||
cd agbcc
|
||||
./build.sh
|
||||
./install.sh ../pokeemerald
|
||||
```
|
||||
|
||||
- **Otherwise**, if agbcc has been built before (e.g. if the git clone above fails), but was **last built on a different terminal** than the one currently used (only relevant to Windows, e.g. switching from msys2 to WSL1), then run the following commands to build and install it into pokeemerald:
|
||||
|
||||
```bash
|
||||
cd agbcc
|
||||
git clean -fX
|
||||
./build.sh
|
||||
./install.sh ../pokeemerald
|
||||
```
|
||||
|
||||
- **Otherwise**, if agbcc has been built before on the same terminal, run the following commands to install agbcc into pokeemerald:
|
||||
|
||||
```bash
|
||||
cd agbcc
|
||||
./install.sh ../pokeemerald
|
||||
```
|
||||
|
||||
<details>
|
||||
<summary><i>Note...</i></summary>
|
||||
|
||||
> If building agbcc or pokeemerald results in an error, try deleting the agbcc folder and re-installing agbcc as if it has not been built before.
|
||||
</details>
|
||||
|
||||
3. Once agbcc is installed, change directory back to the base directory where pokeemerald and agbcc are stored:
|
||||
|
||||
```bash
|
||||
cd ..
|
||||
```
|
||||
|
||||
Now you're ready to [build **pokeemerald**](#build-pokeemerald)
|
||||
## Build pokeemerald
|
||||
If you aren't in the pokeemerald directory already, then **change directory** to the pokeemerald folder:
|
||||
If you aren't in the pokeemerald-expansion directory already, then **change directory** to the pokeemerald-expansion folder:
|
||||
```bash
|
||||
cd pokeemerald
|
||||
cd pokeemerald-expansion
|
||||
```
|
||||
To build **pokeemerald.gba** (Note: to speed up builds, see [Parallel builds](#parallel-builds)):
|
||||
```bash
|
||||
@@ -480,116 +575,6 @@ Replace `<output of nproc>` with the number that the `nproc` command returned.
|
||||
|
||||
`nproc` is not available on macOS. The alternative is `sysctl -n hw.ncpu` ([relevant Stack Overflow thread](https://stackoverflow.com/questions/1715580)).
|
||||
|
||||
## Compare ROM to the original
|
||||
|
||||
For contributing, or if you'd simply like to verify that your ROM is identical to the original game, run:
|
||||
```bash
|
||||
make compare
|
||||
```
|
||||
If it matches, you will see the following at the end of the output:
|
||||
```bash
|
||||
pokeemerald.gba: OK
|
||||
```
|
||||
If there are any changes from the original game, you will instead see:
|
||||
```bash
|
||||
pokeemerald.gba: FAILED
|
||||
shasum: WARNING: 1 computed checksum did NOT match
|
||||
```
|
||||
|
||||
## devkitARM's C compiler
|
||||
|
||||
This project supports the `arm-none-eabi-gcc` compiler included with devkitARM. If devkitARM (a.k.a. gba-dev) has already been installed as part of the platform-specific instructions, simply run:
|
||||
```bash
|
||||
make modern
|
||||
```
|
||||
Otherwise, follow the instructions below to install devkitARM.
|
||||
### Installing devkitARM on WSL1
|
||||
|
||||
1. `gdebi-core` must be installed beforehand in order to install devkitPro pacman (which facilitates the installation of devkitARM). Install this with the following command:
|
||||
|
||||
```bash
|
||||
sudo apt install gdebi-core
|
||||
```
|
||||
<details>
|
||||
<summary><i>Note...</i></summary>
|
||||
|
||||
> If the above command does not work, try the above command but replacing `apt` with `apt-get`.
|
||||
</details>
|
||||
|
||||
2. Once `gdebi-core` is done installing, download the devkitPro pacman package [here](https://github.com/devkitPro/pacman/releases). The file to download is `devkitpro-pacman.amd64.deb`.
|
||||
3. Change directory to where the package was downloaded. For example, if the package file was saved to **C:\Users\\_\<user>_\Downloads** (the Downloads location for most users), enter this command, where *\<user> is your **Windows** username:
|
||||
|
||||
```bash
|
||||
cd /mnt/c/Users/<user>/Downloads
|
||||
```
|
||||
|
||||
4. Once the directory has been changed to the folder containing the devkitPro pacman package, run the following commands to install devkitARM.
|
||||
|
||||
```bash
|
||||
sudo gdebi devkitpro-pacman.amd64.deb
|
||||
sudo dkp-pacman -Sy
|
||||
sudo dkp-pacman -S gba-dev
|
||||
```
|
||||
The last command will ask for the selection of packages to install. Just press Enter to install all of them, followed by entering Y to proceed with the installation.
|
||||
|
||||
<details>
|
||||
<summary><i>Note...</i></summary>
|
||||
|
||||
> Note: `devkitpro-pacman.amd64.deb` is the expected filename of the devkitPro package downloaded (for the first command). If the downloaded package filename differs, then use that filename instead.
|
||||
</details>
|
||||
|
||||
5. Run the following command to set devkitPro related environment variables (alternatively, close and re-open WSL):
|
||||
|
||||
```bash
|
||||
source /etc/profile.d/devkit-env.sh
|
||||
```
|
||||
|
||||
devkitARM is now installed.
|
||||
|
||||
### Installing devkitARM on Debian/Ubuntu-based distributions
|
||||
1. If `gdebi-core` is not installed, run the following command:
|
||||
|
||||
```bash
|
||||
sudo apt install gdebi-core
|
||||
```
|
||||
2. Download the devkitPro pacman package [here](https://github.com/devkitPro/pacman/releases). The file to download is `devkitpro-pacman.amd64.deb`.
|
||||
3. Change directory to where the package was downloaded. Then, run the following commands to install devkitARM:
|
||||
|
||||
```bash
|
||||
sudo gdebi devkitpro-pacman.amd64.deb
|
||||
sudo dkp-pacman -Sy
|
||||
sudo dkp-pacman -S gba-dev
|
||||
```
|
||||
The last command will ask for the selection of packages to install. Just press Enter to install all of them, followed by entering Y to proceed with the installation.
|
||||
|
||||
> Note: `devkitpro-pacman.amd64.deb` is the expected filename of the devkitPro package downloaded (for the first command). If the downloaded package filename differs, then use that filename instead.
|
||||
|
||||
4. Run the following command to set devkitPro related environment variables (alternatively, close and re-open the Terminal):
|
||||
|
||||
```bash
|
||||
source /etc/profile.d/devkit-env.sh
|
||||
```
|
||||
|
||||
devkitARM is now installed.
|
||||
|
||||
### Installing devkitARM on Arch Linux
|
||||
|
||||
1. Follow [devkitPro's instructions](https://devkitpro.org/wiki/devkitPro_pacman#Customising_Existing_Pacman_Install) to configure `pacman` to download devkitPro packages.
|
||||
2. Install `gba-dev`: run the following command as root.
|
||||
|
||||
```console
|
||||
pacman -S gba-dev
|
||||
```
|
||||
This will ask for the selection of packages to install. Just press Enter to install all of them, followed by entering Y to proceed with the installation.
|
||||
|
||||
3. Run the following command to set devkitPro related environment variables (alternatively, close and re-open the Terminal):
|
||||
|
||||
```bash
|
||||
source /etc/profile.d/devkit-env.sh
|
||||
```
|
||||
|
||||
devkitARM is now installed.
|
||||
|
||||
### Other toolchains
|
||||
|
||||
To build using a toolchain other than devkitARM, override the `TOOLCHAIN` environment variable with the path to your toolchain, which must contain the subdirectory `bin`.
|
||||
@@ -602,13 +587,64 @@ make TOOLCHAIN="/usr/local/arm-none-eabi"
|
||||
```
|
||||
To compile the `modern` target with this toolchain, the subdirectories `lib`, `include`, and `arm-none-eabi` must also be present.
|
||||
|
||||
### Building with debug info under a modern toolchain
|
||||
### Building with debug info
|
||||
|
||||
To build **pokeemerald.elf** with debug symbols under a modern toolchain:
|
||||
```bash
|
||||
make modern DINFO=1
|
||||
make DINFO=1
|
||||
```
|
||||
Note that this is not necessary for a non-modern build since those are built with debug symbols by default.
|
||||
Note that this is not necessary for a non-modern (agbcc) build since those are built with debug symbols by default.
|
||||
|
||||
### agbcc
|
||||
|
||||
<details>
|
||||
<summary><i>Deprecated; installing agbcc is optional since 1.7.0</i>.</summary>
|
||||
|
||||
1. Install agbcc into pokeemerald-expansion. The commands to run depend on certain conditions. **You should only follow one of the listed instructions**:
|
||||
- If agbcc has **not been built before** in the folder where you chose to store pokeemerald Expansion, run the following commands to build and install it into pokeemerald-expansion:
|
||||
|
||||
```bash
|
||||
git clone https://github.com/pret/agbcc
|
||||
cd agbcc
|
||||
./build.sh
|
||||
./install.sh ../pokeemerald-expansion
|
||||
```
|
||||
|
||||
- **Otherwise**, if agbcc has been built before (e.g. if the git clone above fails), but was **last built on a different terminal** than the one currently used (only relevant to Windows, e.g. switching from msys2 to WSL1), then run the following commands to build and install it into pokeemerald-expansion:
|
||||
|
||||
```bash
|
||||
cd agbcc
|
||||
git clean -fX
|
||||
./build.sh
|
||||
./install.sh ../pokeemerald-expansion
|
||||
```
|
||||
|
||||
- **Otherwise**, if agbcc has been built before on the same terminal, run the following commands to install agbcc into pokeemerald-expansion:
|
||||
|
||||
```bash
|
||||
cd agbcc
|
||||
./install.sh ../pokeemerald-expansion
|
||||
```
|
||||
|
||||
<details>
|
||||
<summary><i>Note...</i></summary>
|
||||
|
||||
> If building agbcc or pokeemerald results in an error, try deleting the agbcc folder and re-installing agbcc as if it has not been built before.
|
||||
</details>
|
||||
|
||||
2. Once agbcc is installed, change directory back to the base directory where pokeemerald-expansion and agbcc are stored:
|
||||
|
||||
```bash
|
||||
cd ..
|
||||
```
|
||||
|
||||
3. To compile with agbcc:
|
||||
|
||||
```bash
|
||||
make agbcc
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
# Useful additional tools
|
||||
|
||||
|
||||
76
Makefile
76
Makefile
@@ -36,16 +36,17 @@ else
|
||||
EXE :=
|
||||
endif
|
||||
|
||||
TITLE := POKEMON EMER
|
||||
GAME_CODE := BPEE
|
||||
MAKER_CODE := 01
|
||||
REVISION := 0
|
||||
MODERN ?= 0
|
||||
TEST ?= 0
|
||||
ANALYZE ?= 0
|
||||
TITLE := POKEMON EMER
|
||||
GAME_CODE := BPEE
|
||||
MAKER_CODE := 01
|
||||
REVISION := 0
|
||||
MODERN ?= 1
|
||||
TEST ?= 0
|
||||
ANALYZE ?= 0
|
||||
UNUSED_ERROR ?= 0
|
||||
|
||||
ifeq (modern,$(MAKECMDGOALS))
|
||||
MODERN := 1
|
||||
ifeq (agbcc,$(MAKECMDGOALS))
|
||||
MODERN := 0
|
||||
endif
|
||||
|
||||
ifeq (check,$(MAKECMDGOALS))
|
||||
@@ -69,26 +70,29 @@ else
|
||||
CPP := $(PREFIX)cpp
|
||||
endif
|
||||
|
||||
ROM_NAME := pokeemerald.gba
|
||||
ROM_NAME := pokeemerald_agbcc.gba
|
||||
ELF_NAME := $(ROM_NAME:.gba=.elf)
|
||||
MAP_NAME := $(ROM_NAME:.gba=.map)
|
||||
OBJ_DIR_NAME := build/emerald
|
||||
|
||||
MODERN_ROM_NAME := pokeemerald_modern.gba
|
||||
MODERN_ROM_NAME := pokeemerald.gba
|
||||
MODERN_ELF_NAME := $(MODERN_ROM_NAME:.gba=.elf)
|
||||
MODERN_MAP_NAME := $(MODERN_ROM_NAME:.gba=.map)
|
||||
MODERN_OBJ_DIR_NAME := build/modern
|
||||
|
||||
SHELL := /bin/bash -o pipefail
|
||||
SHELL := bash -o pipefail
|
||||
|
||||
ELF = $(ROM:.gba=.elf)
|
||||
MAP = $(ROM:.gba=.map)
|
||||
SYM = $(ROM:.gba=.sym)
|
||||
|
||||
TEST_OBJ_DIR_NAME_MODERN := build/modern-test
|
||||
TEST_OBJ_DIR_NAME_AGBCC := build/test
|
||||
|
||||
ifeq ($(MODERN),0)
|
||||
TEST_OBJ_DIR_NAME := build/test
|
||||
TEST_OBJ_DIR_NAME := $(TEST_OBJ_DIR_NAME_AGBCC)
|
||||
else
|
||||
TEST_OBJ_DIR_NAME := build/modern-test
|
||||
TEST_OBJ_DIR_NAME := $(TEST_OBJ_DIR_NAME_MODERN)
|
||||
endif
|
||||
TESTELF = $(ROM:.gba=-test.elf)
|
||||
HEADLESSELF = $(ROM:.gba=-test-headless.elf)
|
||||
@@ -123,10 +127,16 @@ LIBPATH := -L ../../tools/agbcc/lib
|
||||
LIB := $(LIBPATH) -lgcc -lc -L../../libagbsyscall -lagbsyscall
|
||||
else
|
||||
CC1 = $(shell $(PATH_MODERNCC) --print-prog-name=cc1) -quiet
|
||||
override CFLAGS += -mthumb -mthumb-interwork -O2 -mabi=apcs-gnu -mtune=arm7tdmi -march=armv4t -fno-toplevel-reorder -Wno-pointer-to-int-cast -std=gnu17
|
||||
override CFLAGS += -mthumb -mthumb-interwork -O2 -mabi=apcs-gnu -mtune=arm7tdmi -march=armv4t -fno-toplevel-reorder -Wno-pointer-to-int-cast -std=gnu17 -Werror -Wall -Wno-strict-aliasing -Wno-attribute-alias -Woverride-init
|
||||
ifeq ($(ANALYZE),1)
|
||||
override CFLAGS += -fanalyzer
|
||||
endif
|
||||
# Only throw an error for unused elements if its RH-Hideout's repo
|
||||
ifeq ($(UNUSED_ERROR),0)
|
||||
ifneq ($(GITHUB_REPOSITORY_OWNER),rh-hideout)
|
||||
override CFLAGS += -Wno-error=unused-variable -Wno-error=unused-const-variable -Wno-error=unused-parameter -Wno-error=unused-function -Wno-error=unused-but-set-parameter -Wno-error=unused-but-set-variable -Wno-error=unused-value -Wno-error=unused-local-typedefs
|
||||
endif
|
||||
endif
|
||||
ROM := $(MODERN_ROM_NAME)
|
||||
OBJ_DIR := $(MODERN_OBJ_DIR_NAME)
|
||||
LIBPATH := -L "$(dir $(shell $(PATH_MODERNCC) -mthumb -print-file-name=libgcc.a))" -L "$(dir $(shell $(PATH_MODERNCC) -mthumb -print-file-name=libnosys.a))" -L "$(dir $(shell $(PATH_MODERNCC) -mthumb -print-file-name=libc.a))"
|
||||
@@ -146,8 +156,6 @@ ifneq ($(MODERN),1)
|
||||
CPPFLAGS += -I tools/agbcc/include -I tools/agbcc -nostdinc -undef
|
||||
endif
|
||||
|
||||
LDFLAGS = -Map ../../$(MAP)
|
||||
|
||||
SHA1 := $(shell { command -v sha1sum || command -v shasum; } 2>/dev/null) -c
|
||||
GFX := tools/gbagfx/gbagfx$(EXE)
|
||||
AIF := tools/aif2pcm/aif2pcm$(EXE)
|
||||
@@ -182,7 +190,7 @@ MAKEFLAGS += --no-print-directory
|
||||
# Secondary expansion is required for dependency variables in object rules.
|
||||
.SECONDEXPANSION:
|
||||
|
||||
.PHONY: all rom clean compare tidy tools check-tools mostlyclean clean-tools clean-check-tools $(TOOLDIRS) $(CHECKTOOLDIRS) libagbsyscall modern tidymodern tidynonmodern check
|
||||
.PHONY: all rom clean compare tidy tools check-tools mostlyclean clean-tools clean-check-tools $(TOOLDIRS) $(CHECKTOOLDIRS) libagbsyscall agbcc modern tidymodern tidynonmodern check history
|
||||
|
||||
infoshell = $(foreach line, $(shell $1 | sed "s/ /__SPACE__/g"), $(info $(subst __SPACE__, ,$(line))))
|
||||
|
||||
@@ -190,7 +198,7 @@ infoshell = $(foreach line, $(shell $1 | sed "s/ /__SPACE__/g"), $(info $(subst
|
||||
# Disable dependency scanning for clean/tidy/tools
|
||||
# Use a separate minimal makefile for speed
|
||||
# Since we don't need to reload most of this makefile
|
||||
ifeq (,$(filter-out all rom compare modern check libagbsyscall syms $(TESTELF),$(MAKECMDGOALS)))
|
||||
ifeq (,$(filter-out all rom compare agbcc modern check libagbsyscall syms $(TESTELF),$(MAKECMDGOALS)))
|
||||
$(call infoshell, $(MAKE) -f make_tools.mk)
|
||||
else
|
||||
NODEP ?= 1
|
||||
@@ -249,7 +257,10 @@ endif
|
||||
|
||||
AUTO_GEN_TARGETS :=
|
||||
|
||||
all: rom
|
||||
all: history rom
|
||||
|
||||
history:
|
||||
@bash ./check_history.sh
|
||||
|
||||
tools: $(TOOLDIRS)
|
||||
|
||||
@@ -280,8 +291,7 @@ clean-check-tools:
|
||||
@$(foreach tooldir,$(CHECKTOOLDIRS),$(MAKE) clean -C $(tooldir);)
|
||||
|
||||
mostlyclean: tidynonmodern tidymodern tidycheck
|
||||
rm -f $(SAMPLE_SUBDIR)/*.bin
|
||||
rm -f $(CRY_SUBDIR)/*.bin
|
||||
find sound -iname '*.bin' -exec rm {} +
|
||||
rm -f $(MID_SUBDIR)/*.s
|
||||
find . \( -iname '*.1bpp' -o -iname '*.4bpp' -o -iname '*.8bpp' -o -iname '*.gbapal' -o -iname '*.lz' -o -iname '*.rl' -o -iname '*.latfont' -o -iname '*.hwjpnfont' -o -iname '*.fwjpnfont' \) -exec rm {} +
|
||||
rm -f $(DATA_ASM_SUBDIR)/layouts/layouts.inc $(DATA_ASM_SUBDIR)/layouts/layouts_table.inc
|
||||
@@ -302,7 +312,9 @@ tidymodern:
|
||||
|
||||
tidycheck:
|
||||
rm -f $(TESTELF) $(HEADLESSELF)
|
||||
rm -rf $(TEST_OBJ_DIR_NAME)
|
||||
rm -rf $(TEST_OBJ_DIR_NAME_MODERN)
|
||||
rm -rf $(TEST_OBJ_DIR_NAME_AGBCC)
|
||||
|
||||
|
||||
ifneq ($(MODERN),0)
|
||||
$(C_BUILDDIR)/berry_crush.o: override CFLAGS += -Wno-address-of-packed-member
|
||||
@@ -349,6 +361,7 @@ $(C_BUILDDIR)/librfu_intr.o: CC1 := tools/agbcc/bin/agbcc_arm$(EXE)
|
||||
$(C_BUILDDIR)/librfu_intr.o: CFLAGS := -O2 -mthumb-interwork -quiet
|
||||
else
|
||||
$(C_BUILDDIR)/librfu_intr.o: CFLAGS := -mthumb-interwork -O2 -mabi=apcs-gnu -mtune=arm7tdmi -march=armv4t -fno-toplevel-reorder -Wno-pointer-to-int-cast
|
||||
$(C_BUILDDIR)/pokedex_plus_hgss.o: CFLAGS := -mthumb -mthumb-interwork -O2 -mabi=apcs-gnu -mtune=arm7tdmi -march=armv4t -Wno-pointer-to-int-cast -std=gnu17 -Werror -Wall -Wno-strict-aliasing -Wno-attribute-alias -Woverride-init
|
||||
endif
|
||||
|
||||
ifeq ($(DINFO),1)
|
||||
@@ -456,6 +469,10 @@ $(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 > $@
|
||||
|
||||
# NOTE: Depending on event_scripts.o is hacky, but we want to depend on everything event_scripts.s depends on without having to alter scaninc
|
||||
$(DATA_SRC_SUBDIR)/pokemon/teachable_learnsets.h: $(DATA_ASM_BUILDDIR)/event_scripts.o
|
||||
python3 tools/learnset_helpers/teachable.py
|
||||
|
||||
# NOTE: Based on C_DEP above, but without NODEP and KEEP_TEMPS handling.
|
||||
define TEST_DEP
|
||||
$1: $2 $$(shell $(SCANINC) -I include -I tools/agbcc/include -I gflib $2)
|
||||
@@ -465,28 +482,31 @@ endef
|
||||
$(foreach src, $(TEST_SRCS), $(eval $(call TEST_DEP,$(patsubst $(TEST_SUBDIR)/%.c,$(TEST_BUILDDIR)/%.o,$(src)),$(src),$(patsubst $(TEST_SUBDIR)/%.c,%,$(src)))))
|
||||
|
||||
ifeq ($(MODERN),0)
|
||||
LD_SCRIPT := ld_script.txt
|
||||
LD_SCRIPT := ld_script.ld
|
||||
LD_SCRIPT_DEPS := $(OBJ_DIR)/sym_bss.ld $(OBJ_DIR)/sym_common.ld $(OBJ_DIR)/sym_ewram.ld
|
||||
else
|
||||
LD_SCRIPT := ld_script_modern.txt
|
||||
LD_SCRIPT := ld_script_modern.ld
|
||||
LD_SCRIPT_DEPS :=
|
||||
endif
|
||||
|
||||
$(OBJ_DIR)/ld_script.ld: $(LD_SCRIPT) $(LD_SCRIPT_DEPS)
|
||||
cd $(OBJ_DIR) && sed "s#tools/#../../tools/#g" ../../$(LD_SCRIPT) > ld_script.ld
|
||||
|
||||
LDFLAGS = -Map ../../$(MAP)
|
||||
$(ELF): $(OBJ_DIR)/ld_script.ld $(OBJS) libagbsyscall
|
||||
@echo "cd $(OBJ_DIR) && $(LD) $(LDFLAGS) -T ld_script.ld -o ../../$@ <objects> <lib>"
|
||||
@cd $(OBJ_DIR) && $(LD) $(LDFLAGS) -T ld_script.ld -o ../../$@ $(OBJS_REL) $(LIB)
|
||||
@cd $(OBJ_DIR) && $(LD) $(LDFLAGS) -T ld_script.ld --print-memory-usage -o ../../$@ $(OBJS_REL) $(LIB) | cat
|
||||
$(FIX) $@ -t"$(TITLE)" -c$(GAME_CODE) -m$(MAKER_CODE) -r$(REVISION) --silent
|
||||
|
||||
$(ROM): $(ELF)
|
||||
$(OBJCOPY) -O binary $< $@
|
||||
$(FIX) $@ -p --silent
|
||||
|
||||
agbcc: all
|
||||
|
||||
modern: all
|
||||
|
||||
LD_SCRIPT_TEST := ld_script_test.txt
|
||||
LD_SCRIPT_TEST := ld_script_test.ld
|
||||
|
||||
$(OBJ_DIR)/ld_script_test.ld: $(LD_SCRIPT_TEST) $(LD_SCRIPT_DEPS)
|
||||
cd $(OBJ_DIR) && sed "s#tools/#../../tools/#g" ../../$(LD_SCRIPT_TEST) > ld_script_test.ld
|
||||
@@ -494,7 +514,7 @@ $(OBJ_DIR)/ld_script_test.ld: $(LD_SCRIPT_TEST) $(LD_SCRIPT_DEPS)
|
||||
$(TESTELF): $(OBJ_DIR)/ld_script_test.ld $(OBJS) $(TEST_OBJS) libagbsyscall tools check-tools
|
||||
@echo "cd $(OBJ_DIR) && $(LD) -T ld_script_test.ld -o ../../$@ <objects> <test-objects> <lib>"
|
||||
@cd $(OBJ_DIR) && $(LD) $(TESTLDFLAGS) -T ld_script_test.ld -o ../../$@ $(OBJS_REL) $(TEST_OBJS_REL) $(LIB)
|
||||
$(FIX) $@ -t"$(TITLE)" -c$(GAME_CODE) -m$(MAKER_CODE) -r$(REVISION) --silent
|
||||
$(FIX) $@ -t"$(TITLE)" -c$(GAME_CODE) -m$(MAKER_CODE) -r$(REVISION) -d0 --silent
|
||||
$(PATCHELF) $(TESTELF) gTestRunnerArgv "$(TESTS)\0"
|
||||
|
||||
ifeq ($(GITHUB_REPOSITORY_OWNER),rh-hideout)
|
||||
|
||||
137
README.md
137
README.md
@@ -1,38 +1,49 @@
|
||||
# pokeemerald Expansion
|
||||
# pokeemerald-expansion
|
||||
|
||||
## What is the 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.
|
||||
|
||||
The pokeemerald Expansion is a decomp hack base project based off pret's [pokeemerald](https://github.com/pret/pokeemerald) decompilation project. It's recommended that any new projects that plan on using it, to clone this repository instead of pret's vanilla repository, as we regurlarly incorporate pret's documentation changes. This is ***NOT*** a standalone romhack, and as such, most features will be unavailable and/or unbalanced if played as is.
|
||||
## What is pokeemerald-expansion?
|
||||
|
||||
pokeemerald-expansion is a decomp hack base project based off pret's [pokeemerald](https://github.com/pret/pokeemerald) decompilation project. It's recommended that any new projects that plan on using it, to clone this repository instead of pret's vanilla repository, as we regurlarly incorporate pret's documentation changes. This is ***NOT*** a standalone romhack, and as such, most features will be unavailable and/or unbalanced if played as is.
|
||||
|
||||
If you use pokeemerald-expansion in your hack, please add RHH (Rom Hacking Hideout) to your credits list. Optionally, you can list the version used, so it can help players know what features to expect.
|
||||
You can phrase it as the following:
|
||||
```
|
||||
Based off RHH's pokeemerald-expansion v1.8.0 https://github.com/rh-hideout/pokeemerald-expansion/
|
||||
```
|
||||
|
||||
## What features are included?
|
||||
- ***IMPORTANT*❗❗ Read through these to learn what features you can toggle**:
|
||||
- [Battle configurations](/include/config/battle.h)
|
||||
- [Pokémon configurations](/include/config/pokemon.h)
|
||||
- [Item configurations](/include/config/item.h)
|
||||
- [Overworld configurations](/include/config/overworld.h)
|
||||
- [Debug configurations](/include/config/debug.h)
|
||||
- Upgraded battle engine.
|
||||
- [Battle configurations](https://github.com/rh-hideout/pokeemerald-expansion/blob/master/include/config/battle.h)
|
||||
- [Pokémon configurations](https://github.com/rh-hideout/pokeemerald-expansion/blob/master/include/config/pokemon.h)
|
||||
- [Item configurations](https://github.com/rh-hideout/pokeemerald-expansion/blob/master/include/config/item.h)
|
||||
- [Overworld configurations](https://github.com/rh-hideout/pokeemerald-expansion/blob/master/include/config/overworld.h)
|
||||
- [Debug configurations](https://github.com/rh-hideout/pokeemerald-expansion/blob/master/include/config/debug.h)
|
||||
- ***Upgraded battle engine.***
|
||||
- Gen5+ damage calculation.
|
||||
- 2v2 Wild battles support.
|
||||
- 1v2/2v1 battles support.
|
||||
- Fairy Type (configurable).
|
||||
- Physical/Special/Status Category Split (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/))
|
||||
- [Form change tables](/src/data/pokemon/form_change_tables.h) that allow customizing most form changes.
|
||||
- Mega Evolution, Primal Reversion and Ultra Burst.
|
||||
- Z-Moves
|
||||
- Gen 8+ damaging moves are given power extrapolated from Gen 7.
|
||||
- Gen 8+ status moves have no additional effects, like Healing Wish.
|
||||
- Battle gimmick support:
|
||||
- Mega Evolution
|
||||
- Primal Reversion
|
||||
- Ultra Burst
|
||||
- Z-Moves
|
||||
- Gen 8+ damaging moves are given power extrapolated from Gen 7.
|
||||
- Gen 8+ status moves have no additional effects, like Healing Wish.
|
||||
- Dynamax and Gigantamax
|
||||
- Initial battle parameters
|
||||
- Queueing stat boosts (aka, Totem Boosts)
|
||||
- Setting Terrains.
|
||||
- Mid-turn speed recalculation.
|
||||
- Quick Poké Ball selection in Wild Battles
|
||||
- Press `R` to use last selected Poké Ball.
|
||||
- Hold `R` to change selection with the D-Pad.
|
||||
- Faster battle intro
|
||||
- Message and animation/cry happens at the same time.
|
||||
- Press `R` to use last selected Poké Ball.
|
||||
- Run option shortcut
|
||||
- Faster battle intro - Message and animation/cry happens at the same time.
|
||||
- Faster HP drain.
|
||||
- Battle Debug menu.
|
||||
- Accessed by pressing `Select` on the "Fight/Bag/Pokémon/Run" menu.
|
||||
@@ -51,8 +62,8 @@ The pokeemerald Expansion is a decomp hack base project based off pret's [pokeem
|
||||
- Recalculating stats at the end of every battle.
|
||||
- Level 100 Pokémon can earn EVs.
|
||||
- Inverse battle support.
|
||||
- TONS of other features listed [here](/include/config/battle.h).
|
||||
- Full Trainer customization
|
||||
- TONS of other features listed [here](https://github.com/rh-hideout/pokeemerald-expansion/blob/master/include/config/battle.h).
|
||||
- ***Full Trainer customization***
|
||||
- Nickname, EVs, IVs, moves, ability, ball, friendship, nature, gender, shininess.
|
||||
- Custom tag battle support (teaming up an NPC in a double battle).
|
||||
- Sliding trainer messages.
|
||||
@@ -61,11 +72,12 @@ The pokeemerald Expansion is a decomp hack base project based off pret's [pokeem
|
||||
- New flag options to let you customize the intelligence of your trainers.
|
||||
- Faster calculations.
|
||||
- Specify Poké Balls by Trainer class.
|
||||
- Pokémon Species from Generations 1-8.
|
||||
- Option to disable unwanted generations.
|
||||
- ***Pokémon Species from Generations 1-9.***
|
||||
- Simplified process to add new Pokémon.
|
||||
- Option to disable unwanted families.
|
||||
- Updated sprites to DS style.
|
||||
- Updated stats, types, abilities and egg groups (configurable).
|
||||
- Updated Hoenn's Regional Dex to match ORAS'.
|
||||
- Updated Hoenn's Regional Dex to match ORAS' (configurable).
|
||||
- Updated National Dex incorporating the new species.
|
||||
- Sprite and animation visualizer.
|
||||
- Accesible by pressing `Select` on a Pokémon's Summary screen.
|
||||
@@ -80,40 +92,56 @@ The pokeemerald Expansion is a decomp hack base project based off pret's [pokeem
|
||||
- Available via Ability Patch.
|
||||
- Compatible with Ghoul's DexNav branch.
|
||||
- All gender differences.
|
||||
- Different icons for female Hippopotas and Hippowdon
|
||||
- 3 Perfect IVs on Legendaries, Mythicals and Ultra Beasts
|
||||
- Breeding
|
||||
- Custom female icons for female Hippopotas Hippowdon, Pikachu and Wobbufett
|
||||
- 3 Perfect IVs on Legendaries, Mythicals and Ultra Beasts.
|
||||
- ***Customizable form change tables. Full list of methods [here](https://github.com/rh-hideout/pokeemerald-expansion/blob/master/include/constants/form_change_types.h).***
|
||||
- Item holding (eg. Giratina/Arceus)
|
||||
- Item using (eg. Oricorio)
|
||||
- Time of day option for Shaymin
|
||||
- Fainting
|
||||
- Battle begin and end (eg. Xerneas)
|
||||
- Move change option for Zacian/Zamazenta
|
||||
- Battle end in terrains (eg. Burmy)
|
||||
- Switched in battle (eg. Palafin)
|
||||
- HP Threshold (eg. Darmanitan)
|
||||
- Weather (eg. Castform)
|
||||
- End of turn (eg. Morpeko)
|
||||
- Time of day (eg. Shaymin)
|
||||
- Fusions (eg. Kyurem)
|
||||
- ***Breeding Improvements***
|
||||
- Incense Baby Pokémon now happen automatically (configurable).
|
||||
- Level 1 eggs.
|
||||
- Poké Ball inheriting.
|
||||
- Egg Move Transfer, including Mirror Herb.
|
||||
- Nature inheriting 100% of the time with Everstone
|
||||
- Gen6+ Ability inheriting.
|
||||
- Items from newer Generations. Full list [here](/include/constants/items.h).
|
||||
- Level 1 eggs (configurable).
|
||||
- Poké Ball inheriting (configurable).
|
||||
- Egg Move Transfer, including Mirror Herb (configurable).
|
||||
- Nature inheriting 100% of the time with Everstone (configurable)
|
||||
- Gen6+ Ability inheriting (configurable).
|
||||
- ***Items from newer Generations. Full list [here](https://github.com/rh-hideout/pokeemerald-expansion/blob/master/include/constants/items.h).***
|
||||
- ***Gen 6+ Exp. Share*** (configurable)
|
||||
- Berserk Gene
|
||||
- Most battle items from Gen 4+
|
||||
- Existing item data but missing effects:
|
||||
- Mints
|
||||
- Dynamax Candy
|
||||
- Mulches
|
||||
- Rotom Catalog
|
||||
- DNA Splicers
|
||||
- Zygarde Cube
|
||||
- N Solarizer/Lunarizer
|
||||
- Reins of Unity
|
||||
- Dynamax Band
|
||||
- Gimmighoul Coin
|
||||
- Booster Energy
|
||||
- Tera Shards
|
||||
- Tera Orb
|
||||
- Feature branches incorporated:
|
||||
- [RHH intro credits](https://github.com/Xhyzi/pokeemerald/tree/rhh-intro-credits) by Xhyzi.
|
||||
- ***Feature branches incorporated (with permission):***
|
||||
- [RHH intro credits](https://github.com/Xhyzi/pokeemerald/tree/rhh-intro-credits) by @Xhyzi.
|
||||
- A small signature from all of us to show the collective effort in the project :)
|
||||
- [Overworld debug]() by TheXaman
|
||||
- [Overworld debug](https://github.com/TheXaman/pokeemerald/tree/tx_debug_system) by @TheXaman
|
||||
- May be disabled.
|
||||
- Accesible by pressing `R + Start` in the overworld by default.
|
||||
- **Additional features**:
|
||||
- *Clear Boxes*: cleans every Pokémon from the Boxes.
|
||||
- *Hatch an Egg*: lets you choose an Egg in your party and immediatly hatch it.
|
||||
- Other features
|
||||
- *Hatch an Egg*: lets you choose an Egg in your party and immediately hatch it.
|
||||
- [HGSS Pokédex](https://github.com/TheXaman/pokeemerald/tree/tx_pokedexPlus_hgss) by @TheXaman
|
||||
- May be disabled.
|
||||
- **Additional features**:
|
||||
- *Support for new evolution methods*.
|
||||
- *Dark Mode*.
|
||||
- [Nature Colors](https://github.com/DizzyEggg/pokeemerald/tree/nature_color) in summary screen by @DizzyEggg
|
||||
- [Dynamic Multichoice](https://github.com/SBird1337/pokeemerald/tree/feature/dynmulti) by @SBird1337
|
||||
- [Saveblock Cleansing](https://github.com/ghoulslash/pokeemerald/tree/saveblock) by @ghoulslash
|
||||
- ***Other features***
|
||||
- Pressing B while holding a Pokémon drops them like in modern games (configurable).
|
||||
- Running indoors (configurable).
|
||||
- Configurable overworld poison damage.
|
||||
@@ -130,16 +158,23 @@ There are some mechanics, moves and abilities that are missing and being develop
|
||||
|
||||
### [Documentation on features can be found here](https://github.com/rh-hideout/pokeemerald-expansion/wiki)
|
||||
|
||||
## If I already have a project based on regular pokeemerald, can I use the pokeemerald Expansion
|
||||
## If I already have a project based on regular pokeemerald, can I use pokeemerald-expansion?
|
||||
Yes! Keep in mind that we keep up with pret's documentation of pokeemerald, which means that if your project a bit old, you might get merge conflicts that you need to solve manually.
|
||||
- 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 master`.
|
||||
|
||||
With this, you'll get the latest version of the Expansion, plus a couple of bugfixes that haven't been released into the next patch version :)
|
||||
With this, you'll get the latest version of pokeemerald-expansion, plus a couple of bugfixes that haven't been released into the next patch version :)
|
||||
|
||||
## **How do I update my version of the pokeemerald Expansion?**
|
||||
## **How do I update my version of pokeemerald-expansion?**
|
||||
- If you haven't set up a remote, run the command `git remote add RHH https://github.com/rh-hideout/pokeemerald-expansion`.
|
||||
- Once you have your remote set up, run the command `git pull RHH expansion/1.6.2`.
|
||||
- Check your current version.
|
||||
- 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](CHANGELOG.md) to determine your version based on the features available on your repository.
|
||||
- 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.8.4, use `git pull RHH expansion/1.8.4`).
|
||||
- ***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`.
|
||||
- ***upcoming (unstable, with potential bugs):*** It contains unreleased **features** that will come in the next minor version. To merge, use `git pull RHH upcoming`.
|
||||
|
||||
### Please consider crediting the entire [list of contributors](https://github.com/rh-hideout/pokeemerald-expansion/wiki/Credits) in your project, as they have all worked hard to develop this project :)
|
||||
|
||||
@@ -156,7 +191,7 @@ The project was originally started by DizzyEgg alongside other contributors.
|
||||
|
||||
The project has now gotten larger and DizzyEgg is now maintaining the project as part of the ROM Hacking Hideout community. Some members of this community are taking on larger roles to help maintain the project.
|
||||
|
||||
## What is ROM Hacking Hideout?
|
||||
## What is the ROM Hacking Hideout?
|
||||
|
||||
A Discord-based ROM hacking community that has many members who hack using the disassembly and decompilation projects for Pokémon. Quite a few contributors to the original feature branches by DizzyEgg were members of ROM Hacking Hideout. You can call it RHH for short!
|
||||
|
||||
|
||||
@@ -1,783 +0,0 @@
|
||||
.macro if_random_less_than param0:req, param1:req
|
||||
.byte 0x0
|
||||
.byte \param0
|
||||
.4byte \param1
|
||||
.endm
|
||||
|
||||
.macro if_random_greater_than param0:req, param1:req
|
||||
.byte 0x1
|
||||
.byte \param0
|
||||
.4byte \param1
|
||||
.endm
|
||||
|
||||
.macro if_random_equal param0:req, param1:req
|
||||
.byte 0x2
|
||||
.byte \param0
|
||||
.4byte \param1
|
||||
.endm
|
||||
|
||||
.macro if_random_not_equal param0:req, param1:req
|
||||
.byte 0x3
|
||||
.byte \param0
|
||||
.4byte \param1
|
||||
.endm
|
||||
|
||||
.macro score param0:req
|
||||
.byte 0x4
|
||||
.byte \param0
|
||||
.endm
|
||||
|
||||
.macro if_hp_less_than battler:req, param1:req, param2:req
|
||||
.byte 0x5
|
||||
.byte \battler
|
||||
.byte \param1
|
||||
.4byte \param2
|
||||
.endm
|
||||
|
||||
.macro if_hp_more_than battler:req, param1:req, param2:req
|
||||
.byte 0x6
|
||||
.byte \battler
|
||||
.byte \param1
|
||||
.4byte \param2
|
||||
.endm
|
||||
|
||||
.macro if_hp_equal battler:req, param1:req, param2:req
|
||||
.byte 0x7
|
||||
.byte \battler
|
||||
.byte \param1
|
||||
.4byte \param2
|
||||
.endm
|
||||
|
||||
.macro if_hp_not_equal battler:req, param1:req, param2:req
|
||||
.byte 0x8
|
||||
.byte \battler
|
||||
.byte \param1
|
||||
.4byte \param2
|
||||
.endm
|
||||
|
||||
.macro if_status battler:req, status1:req, param2:req
|
||||
.byte 0x9
|
||||
.byte \battler
|
||||
.4byte \status1
|
||||
.4byte \param2
|
||||
.endm
|
||||
|
||||
.macro if_not_status battler:req, status1:req, param2:req
|
||||
.byte 0xa
|
||||
.byte \battler
|
||||
.4byte \status1
|
||||
.4byte \param2
|
||||
.endm
|
||||
|
||||
.macro if_status2 battler:req, status2:req, param2:req
|
||||
.byte 0xb
|
||||
.byte \battler
|
||||
.4byte \status2
|
||||
.4byte \param2
|
||||
.endm
|
||||
|
||||
.macro if_not_status2 battler:req, status2:req, param2:req
|
||||
.byte 0xc
|
||||
.byte \battler
|
||||
.4byte \status2
|
||||
.4byte \param2
|
||||
.endm
|
||||
|
||||
.macro if_status3 battler:req, status3:req, param2:req
|
||||
.byte 0xd
|
||||
.byte \battler
|
||||
.4byte \status3
|
||||
.4byte \param2
|
||||
.endm
|
||||
|
||||
.macro if_not_status3 battler:req, status3:req, param2:req
|
||||
.byte 0xe
|
||||
.byte \battler
|
||||
.4byte \status3
|
||||
.4byte \param2
|
||||
.endm
|
||||
|
||||
.macro if_side_affecting battler:req, sidestatus:req, param2:req
|
||||
.byte 0xf
|
||||
.byte \battler
|
||||
.4byte \sidestatus
|
||||
.4byte \param2
|
||||
.endm
|
||||
|
||||
.macro if_not_side_affecting battler:req, sidestatus:req, param2:req
|
||||
.byte 0x10
|
||||
.byte \battler
|
||||
.4byte \sidestatus
|
||||
.4byte \param2
|
||||
.endm
|
||||
|
||||
.macro if_less_than param0:req, param1:req
|
||||
.byte 0x11
|
||||
.byte \param0
|
||||
.4byte \param1
|
||||
.endm
|
||||
|
||||
.macro if_more_than param0:req, param1:req
|
||||
.byte 0x12
|
||||
.byte \param0
|
||||
.4byte \param1
|
||||
.endm
|
||||
|
||||
.macro if_equal param0:req, param1:req
|
||||
.byte 0x13
|
||||
.byte \param0
|
||||
.4byte \param1
|
||||
.endm
|
||||
|
||||
.macro if_not_equal param0:req, param1:req
|
||||
.byte 0x14
|
||||
.byte \param0
|
||||
.4byte \param1
|
||||
.endm
|
||||
|
||||
.macro if_less_than_ptr param0:req, param1:req
|
||||
.byte 0x15
|
||||
.4byte \param0
|
||||
.4byte \param1
|
||||
.endm
|
||||
|
||||
.macro if_more_than_ptr param0:req, param1:req
|
||||
.byte 0x16
|
||||
.4byte \param0
|
||||
.4byte \param1
|
||||
.endm
|
||||
|
||||
.macro if_equal_ptr param0:req, param1:req
|
||||
.byte 0x17
|
||||
.4byte \param0
|
||||
.4byte \param1
|
||||
.endm
|
||||
|
||||
.macro if_not_equal_ptr param0:req, param1:req
|
||||
.byte 0x18
|
||||
.4byte \param0
|
||||
.4byte \param1
|
||||
.endm
|
||||
|
||||
.macro if_move param0:req, param1:req
|
||||
.byte 0x19
|
||||
.2byte \param0
|
||||
.4byte \param1
|
||||
.endm
|
||||
|
||||
.macro if_not_move param0:req, param1:req
|
||||
.byte 0x1a
|
||||
.2byte \param0
|
||||
.4byte \param1
|
||||
.endm
|
||||
|
||||
.macro if_in_bytes param0:req, param1:req
|
||||
.byte 0x1b
|
||||
.4byte \param0
|
||||
.4byte \param1
|
||||
.endm
|
||||
|
||||
.macro if_not_in_bytes param0:req, param1:req
|
||||
.byte 0x1c
|
||||
.4byte \param0
|
||||
.4byte \param1
|
||||
.endm
|
||||
|
||||
.macro if_in_hwords param0:req, param1:req
|
||||
.byte 0x1d
|
||||
.4byte \param0
|
||||
.4byte \param1
|
||||
.endm
|
||||
|
||||
.macro if_not_in_hwords param0:req, param1:req
|
||||
.byte 0x1e
|
||||
.4byte \param0
|
||||
.4byte \param1
|
||||
.endm
|
||||
|
||||
.macro if_user_has_attacking_move param0:req
|
||||
.byte 0x1f
|
||||
.4byte \param0
|
||||
.endm
|
||||
|
||||
.macro if_user_has_no_attacking_moves param0:req
|
||||
.byte 0x20
|
||||
.4byte \param0
|
||||
.endm
|
||||
|
||||
.macro get_turn_count
|
||||
.byte 0x21
|
||||
.endm
|
||||
|
||||
.macro get_type param0:req
|
||||
.byte 0x22
|
||||
.byte \param0
|
||||
.endm
|
||||
|
||||
.macro get_considered_move_power
|
||||
.byte 0x23
|
||||
.endm
|
||||
|
||||
.macro get_how_powerful_move_is
|
||||
.byte 0x24
|
||||
.endm
|
||||
|
||||
.macro get_last_used_bank_move battler:req
|
||||
.byte 0x25
|
||||
.byte \battler
|
||||
.endm
|
||||
|
||||
.macro if_equal_u32 param0:req, param1:req
|
||||
.byte 0x26
|
||||
.4byte \param0
|
||||
.4byte \param1
|
||||
.endm
|
||||
|
||||
.macro if_not_equal_u32 param0:req, param1:req
|
||||
.byte 0x27
|
||||
.4byte \param0
|
||||
.4byte \param1
|
||||
.endm
|
||||
|
||||
.macro if_user_goes param0:req, param1:req
|
||||
.byte 0x28
|
||||
.byte \param0
|
||||
.4byte \param1
|
||||
.endm
|
||||
|
||||
.macro if_cant_use_belch battler:req, ptr:req
|
||||
.byte 0x29
|
||||
.byte \battler
|
||||
.4byte \ptr
|
||||
.endm
|
||||
|
||||
.macro nop_2A
|
||||
.byte 0x2a
|
||||
.endm
|
||||
|
||||
.macro nop_2B
|
||||
.byte 0x2b
|
||||
.endm
|
||||
|
||||
.macro count_usable_party_mons battler:req
|
||||
.byte 0x2c
|
||||
.byte \battler
|
||||
.endm
|
||||
|
||||
.macro get_considered_move
|
||||
.byte 0x2d
|
||||
.endm
|
||||
|
||||
.macro get_considered_move_effect
|
||||
.byte 0x2e
|
||||
.endm
|
||||
|
||||
.macro get_ability battler:req
|
||||
.byte 0x2f
|
||||
.byte \battler
|
||||
.endm
|
||||
|
||||
.macro get_highest_type_effectiveness
|
||||
.byte 0x30
|
||||
.endm
|
||||
|
||||
.macro if_type_effectiveness param0:req, param1:req
|
||||
.byte 0x31
|
||||
.byte \param0
|
||||
.4byte \param1
|
||||
.endm
|
||||
|
||||
.macro nop_32
|
||||
.byte 0x32
|
||||
.endm
|
||||
|
||||
.macro nop_33
|
||||
.byte 0x33
|
||||
.endm
|
||||
|
||||
.macro if_status_in_party battler:req, status1:req, param2:req
|
||||
.byte 0x34
|
||||
.byte \battler
|
||||
.4byte \status1
|
||||
.4byte \param2
|
||||
.endm
|
||||
|
||||
.macro if_status_not_in_party battler:req, status1:req, param2:req
|
||||
.byte 0x35
|
||||
.byte \battler
|
||||
.4byte \status1
|
||||
.4byte \param2
|
||||
.endm
|
||||
|
||||
.macro get_weather
|
||||
.byte 0x36
|
||||
.endm
|
||||
|
||||
.macro if_effect param0:req, param1:req
|
||||
.byte 0x37
|
||||
.2byte \param0
|
||||
.4byte \param1
|
||||
.endm
|
||||
|
||||
.macro if_not_effect param0:req, param1:req
|
||||
.byte 0x38
|
||||
.2byte \param0
|
||||
.4byte \param1
|
||||
.endm
|
||||
|
||||
.macro if_stat_level_less_than battler:req, stat:req, param2:req, param3:req
|
||||
.byte 0x39
|
||||
.byte \battler
|
||||
.byte \stat
|
||||
.byte \param2
|
||||
.4byte \param3
|
||||
.endm
|
||||
|
||||
.macro if_stat_level_more_than battler:req, stat:req, param2:req, param3:req
|
||||
.byte 0x3a
|
||||
.byte \battler
|
||||
.byte \stat
|
||||
.byte \param2
|
||||
.4byte \param3
|
||||
.endm
|
||||
|
||||
.macro if_stat_level_equal battler:req, stat:req, param2:req, param3:req
|
||||
.byte 0x3b
|
||||
.byte \battler
|
||||
.byte \stat
|
||||
.byte \param2
|
||||
.4byte \param3
|
||||
.endm
|
||||
|
||||
.macro if_stat_level_not_equal battler:req, stat:req, param2:req, param3:req
|
||||
.byte 0x3c
|
||||
.byte \battler
|
||||
.byte \stat
|
||||
.byte \param2
|
||||
.4byte \param3
|
||||
.endm
|
||||
|
||||
.macro if_can_faint param0:req
|
||||
.byte 0x3d
|
||||
.4byte \param0
|
||||
.endm
|
||||
|
||||
.macro if_cant_faint param0:req
|
||||
.byte 0x3e
|
||||
.4byte \param0
|
||||
.endm
|
||||
|
||||
.macro if_has_move battler:req, param1:req, param2:req
|
||||
.byte 0x3f
|
||||
.byte \battler
|
||||
.2byte \param1
|
||||
.4byte \param2
|
||||
.endm
|
||||
|
||||
.macro if_doesnt_have_move battler:req, param1:req, param2:req
|
||||
.byte 0x40
|
||||
.byte \battler
|
||||
.2byte \param1
|
||||
.4byte \param2
|
||||
.endm
|
||||
|
||||
.macro if_has_move_with_effect battler:req, param1:req, param2:req
|
||||
.byte 0x41
|
||||
.byte \battler
|
||||
.byte \param1
|
||||
.4byte \param2
|
||||
.endm
|
||||
|
||||
.macro if_doesnt_have_move_with_effect battler:req, param1:req, param2:req
|
||||
.byte 0x42
|
||||
.byte \battler
|
||||
.byte \param1
|
||||
.4byte \param2
|
||||
.endm
|
||||
|
||||
.macro if_any_move_disabled_or_encored battler:req, param1:req, param2:req
|
||||
.byte 0x43
|
||||
.byte \battler
|
||||
.byte \param1
|
||||
.4byte \param2
|
||||
.endm
|
||||
|
||||
.macro if_curr_move_disabled_or_encored param0:req, param1:req
|
||||
.byte 0x44
|
||||
.byte \param0
|
||||
.4byte \param1
|
||||
.endm
|
||||
|
||||
.macro flee
|
||||
.byte 0x45
|
||||
.endm
|
||||
|
||||
.macro if_random_safari_flee param0:req
|
||||
.byte 0x46
|
||||
.4byte \param0
|
||||
.endm
|
||||
|
||||
.macro watch
|
||||
.byte 0x47
|
||||
.endm
|
||||
|
||||
.macro get_hold_effect battler:req
|
||||
.byte 0x48
|
||||
.byte \battler
|
||||
.endm
|
||||
|
||||
.macro get_gender battler:req
|
||||
.byte 0x49
|
||||
.byte \battler
|
||||
.endm
|
||||
|
||||
.macro is_first_turn_for battler:req
|
||||
.byte 0x4a
|
||||
.byte \battler
|
||||
.endm
|
||||
|
||||
.macro get_stockpile_count battler:req
|
||||
.byte 0x4b
|
||||
.byte \battler
|
||||
.endm
|
||||
|
||||
.macro is_double_battle
|
||||
.byte 0x4c
|
||||
.endm
|
||||
|
||||
.macro get_used_held_item battler:req
|
||||
.byte 0x4d
|
||||
.byte \battler
|
||||
.endm
|
||||
|
||||
.macro get_move_type_from_result
|
||||
.byte 0x4e
|
||||
.endm
|
||||
|
||||
.macro get_move_power_from_result
|
||||
.byte 0x4f
|
||||
.endm
|
||||
|
||||
.macro get_move_effect_from_result
|
||||
.byte 0x50
|
||||
.endm
|
||||
|
||||
.macro get_protect_count battler:req
|
||||
.byte 0x51
|
||||
.byte \battler
|
||||
.endm
|
||||
|
||||
.macro if_move_flag flag jumpptr
|
||||
.byte 0x52
|
||||
.4byte \flag
|
||||
.4byte \jumpptr
|
||||
.endm
|
||||
|
||||
.macro if_field_status flag jumpptr
|
||||
.byte 0x53
|
||||
.4byte \flag
|
||||
.4byte \jumpptr
|
||||
.endm
|
||||
|
||||
.macro get_move_accuracy
|
||||
.byte 0x54
|
||||
.endm
|
||||
|
||||
.macro call_if_eq value, ptr
|
||||
.byte 0x55
|
||||
.2byte \value
|
||||
.4byte \ptr
|
||||
.endm
|
||||
|
||||
.macro call_if_move_flag flag ptr
|
||||
.byte 0x56
|
||||
.4byte \flag
|
||||
.4byte \ptr
|
||||
.endm
|
||||
|
||||
.macro nop_57
|
||||
.byte 0x57
|
||||
.endm
|
||||
|
||||
.macro call param0:req
|
||||
.byte 0x58
|
||||
.4byte \param0
|
||||
.endm
|
||||
|
||||
.macro goto param0:req
|
||||
.byte 0x59
|
||||
.4byte \param0
|
||||
.endm
|
||||
|
||||
.macro end
|
||||
.byte 0x5a
|
||||
.endm
|
||||
|
||||
.macro if_level_cond param0:req, param1:req
|
||||
.byte 0x5b
|
||||
.byte \param0
|
||||
.4byte \param1
|
||||
.endm
|
||||
|
||||
.macro if_target_taunted param0:req
|
||||
.byte 0x5c
|
||||
.4byte \param0
|
||||
.endm
|
||||
|
||||
.macro if_target_not_taunted param0:req
|
||||
.byte 0x5d
|
||||
.4byte \param0
|
||||
.endm
|
||||
|
||||
.macro if_target_is_ally param0:req
|
||||
.byte 0x5e
|
||||
.4byte \param0
|
||||
.endm
|
||||
|
||||
.macro is_of_type battler:req, type:req
|
||||
.byte 0x5f
|
||||
.byte \battler
|
||||
.byte \type
|
||||
.endm
|
||||
|
||||
.macro check_ability battler:req, ability:req
|
||||
.byte 0x60
|
||||
.byte \battler
|
||||
.byte \ability
|
||||
.endm
|
||||
|
||||
.macro if_flash_fired battler:req, param1:req
|
||||
.byte 0x61
|
||||
.byte \battler
|
||||
.4byte \param1
|
||||
.endm
|
||||
|
||||
.macro if_holds_item battler:req, param1:req, param2:req
|
||||
.byte 0x62
|
||||
.byte \battler
|
||||
.2byte \param1
|
||||
.4byte \param2
|
||||
.endm
|
||||
|
||||
.macro get_ally_chosen_move
|
||||
.byte 0x63
|
||||
.endm
|
||||
|
||||
.macro if_has_no_attacking_moves battler:req, param1:req
|
||||
.byte 0x64
|
||||
.byte \battler
|
||||
.4byte \param1
|
||||
.endm
|
||||
|
||||
.macro get_hazards_count battler:req, effect:req
|
||||
.byte 0x65
|
||||
.byte \battler
|
||||
.2byte \effect
|
||||
.endm
|
||||
|
||||
.macro if_doesnt_hold_berry battler:req, ptr:req
|
||||
.byte 0x66
|
||||
.byte \battler
|
||||
.4byte \ptr
|
||||
.endm
|
||||
|
||||
.macro if_share_type battler1:req, battler2:req, ptr:req
|
||||
.byte 0x67
|
||||
.byte \battler1
|
||||
.byte \battler2
|
||||
.4byte \ptr
|
||||
.endm
|
||||
|
||||
.macro if_cant_use_last_resort battler:req, ptr:req
|
||||
.byte 0x68
|
||||
.byte \battler
|
||||
.4byte \ptr
|
||||
.endm
|
||||
|
||||
.macro if_has_move_with_split battler:req, split:req, ptr:req
|
||||
.byte 0x69
|
||||
.byte \battler
|
||||
.byte \split
|
||||
.4byte \ptr
|
||||
.endm
|
||||
|
||||
.macro if_has_no_move_with_split battler:req, split:req, ptr:req
|
||||
.byte 0x6A
|
||||
.byte \battler
|
||||
.byte \split
|
||||
.4byte \ptr
|
||||
.endm
|
||||
|
||||
.macro if_physical_moves_unusable attacker:req, target:req, ptr:req
|
||||
.byte 0x6B
|
||||
.byte \attacker
|
||||
.byte \target
|
||||
.4byte \ptr
|
||||
.endm
|
||||
|
||||
.macro if_ai_can_go_down ptr:req
|
||||
.byte 0x6C
|
||||
.4byte \ptr
|
||||
.endm
|
||||
|
||||
.macro if_has_move_with_type battler:req, type:req, ptr:req
|
||||
.byte 0x6D
|
||||
.byte \battler
|
||||
.byte \type
|
||||
.4byte \ptr
|
||||
.endm
|
||||
|
||||
.macro if_no_move_used battler:req, ptr:req
|
||||
.byte 0x6E
|
||||
.byte \battler
|
||||
.4byte \ptr
|
||||
.endm
|
||||
|
||||
.macro if_has_move_with_flag battler:req, flag:req, ptr:req
|
||||
.byte 0x6F
|
||||
.byte \battler
|
||||
.4byte \flag
|
||||
.4byte \ptr
|
||||
.endm
|
||||
|
||||
.macro if_battler_absent battler:req, ptr:req
|
||||
.byte 0x70
|
||||
.byte \battler
|
||||
.4byte \ptr
|
||||
.endm
|
||||
|
||||
.macro if_grounded battler:req, ptr:req
|
||||
.byte 0x71
|
||||
.byte \battler
|
||||
.4byte \ptr
|
||||
.endm
|
||||
|
||||
.macro get_best_dmg_hp_percent
|
||||
.byte 0x72
|
||||
.endm
|
||||
|
||||
.macro get_curr_dmg_hp_percent
|
||||
.byte 0x73
|
||||
.endm
|
||||
|
||||
.macro get_move_split_from_result
|
||||
.byte 0x74
|
||||
.endm
|
||||
|
||||
.macro get_considered_move_split
|
||||
.byte 0x75
|
||||
.endm
|
||||
|
||||
.macro get_considered_move_target
|
||||
.byte 0x76
|
||||
.endm
|
||||
|
||||
.macro compare_speeds battler1:req, battler2:req
|
||||
.byte 0x77
|
||||
.byte \battler1
|
||||
.byte \battler2
|
||||
.endm
|
||||
|
||||
.macro is_wakeup_turn battler:req
|
||||
.byte 0x78
|
||||
.byte \battler
|
||||
.endm
|
||||
|
||||
.macro if_has_move_with_accuracy_lt battler:req, value:req, ptr:req
|
||||
.byte 0x79
|
||||
.byte \battler
|
||||
.byte \value
|
||||
.4byte \ptr
|
||||
.endm
|
||||
|
||||
@ useful script macros
|
||||
.macro if_has_physical_move battler:req, ptr:req
|
||||
if_has_move_with_split \battler, SPLIT_PHYSICAL, \ptr
|
||||
.endm
|
||||
|
||||
.macro if_has_no_physical_move battler:req, ptr:req
|
||||
if_has_no_move_with_split \battler, SPLIT_PHYSICAL, \ptr
|
||||
.endm
|
||||
|
||||
.macro if_has_special_move battler:req, ptr:req
|
||||
if_has_move_with_split \battler, SPLIT_SPECIAL, \ptr
|
||||
.endm
|
||||
|
||||
.macro if_has_no_special_move battler:req, ptr:req
|
||||
if_has_no_move_with_split \battler, SPLIT_SPECIAL, \ptr
|
||||
.endm
|
||||
|
||||
.macro if_holds_no_item battler, ptr:req
|
||||
if_holds_item \battler, 0, \ptr
|
||||
.endm
|
||||
|
||||
.macro get_curr_move_type
|
||||
get_type AI_TYPE_MOVE
|
||||
.endm
|
||||
|
||||
.macro get_user_type1
|
||||
get_type AI_TYPE1_USER
|
||||
.endm
|
||||
|
||||
.macro get_user_type2
|
||||
get_type AI_TYPE2_USER
|
||||
.endm
|
||||
|
||||
.macro get_target_type1
|
||||
get_type AI_TYPE1_TARGET
|
||||
.endm
|
||||
|
||||
.macro get_target_type2
|
||||
get_type AI_TYPE2_TARGET
|
||||
.endm
|
||||
|
||||
.macro if_ability battler:req, ability:req, ptr:req
|
||||
check_ability \battler, \ability
|
||||
if_equal 1, \ptr
|
||||
.endm
|
||||
|
||||
.macro if_no_ability battler:req, ability:req, ptr:req
|
||||
check_ability \battler, \ability
|
||||
if_equal 0, \ptr
|
||||
.endm
|
||||
|
||||
.macro if_type battler:req, type:req, ptr:req
|
||||
is_of_type \battler, \type
|
||||
if_equal 1, \ptr
|
||||
.endm
|
||||
|
||||
.macro if_no_type battler:req, type:req, ptr:req
|
||||
is_of_type \battler, \type
|
||||
if_equal 0, \ptr
|
||||
.endm
|
||||
|
||||
.macro if_target_faster ptr:req
|
||||
if_user_goes 1, \ptr
|
||||
.endm
|
||||
|
||||
.macro if_user_faster ptr:req
|
||||
if_user_goes 0, \ptr
|
||||
.endm
|
||||
|
||||
.macro if_double_battle ptr:req
|
||||
is_double_battle
|
||||
if_equal 1, \ptr
|
||||
.endm
|
||||
|
||||
.macro if_not_double_battle ptr:req
|
||||
is_double_battle
|
||||
if_equal 0, \ptr
|
||||
.endm
|
||||
|
||||
.macro if_any_move_disabled battler:req, ptr:req
|
||||
if_any_move_disabled_or_encored \battler, 0, \ptr
|
||||
.endm
|
||||
|
||||
.macro if_any_move_encored battler:req, ptr:req
|
||||
if_any_move_disabled_or_encored \battler, 1, \ptr
|
||||
.endm
|
||||
|
||||
.macro call_if_always_hit ptr:req
|
||||
get_move_accuracy
|
||||
call_if_eq 0, \ptr
|
||||
.endm
|
||||
@@ -98,7 +98,7 @@
|
||||
waitstate
|
||||
.endm
|
||||
|
||||
.macro multi_do type:req, partnerId:req, partnerPicId:req
|
||||
.macro multi_do type:req, partnerId:req
|
||||
special ReducePlayerPartyToSelectedMons
|
||||
setvar VAR_0x8004, FRONTIER_UTIL_FUNC_SET_DATA
|
||||
setvar VAR_0x8005, FRONTIER_DATA_SELECTED_MON_ORDER
|
||||
@@ -106,7 +106,6 @@
|
||||
setvar VAR_0x8004, SPECIAL_BATTLE_MULTI
|
||||
setvar VAR_0x8005, \type | MULTI_BATTLE_CHOOSE_MONS
|
||||
setvar VAR_0x8006, \partnerId
|
||||
setvar VAR_0x8007, \partnerPicId
|
||||
special DoSpecialTrainerBattle
|
||||
waitstate
|
||||
setvar VAR_0x8004, FRONTIER_UTIL_FUNC_SAVE_PARTY
|
||||
@@ -114,30 +113,29 @@
|
||||
special LoadPlayerParty
|
||||
.endm
|
||||
|
||||
.macro multi_2_vs_2 trainer1Id:req, trainer1LoseText:req, trainer2Id:req, trainer2LoseText:req, partnerId:req, partnerPicId:req
|
||||
.macro multi_2_vs_2 trainer1Id:req, trainer1LoseText:req, trainer2Id:req, trainer2LoseText:req, partnerId:req
|
||||
special SavePlayerParty
|
||||
trainerbattle TRAINER_BATTLE_SET_TRAINER_A, \trainer1Id, 0, NULL, \trainer1LoseText @ set first trainer mons
|
||||
trainerbattle TRAINER_BATTLE_SET_TRAINER_B, \trainer2Id, 0, NULL, \trainer2LoseText @ set second trainer mons
|
||||
multi_do MULTI_BATTLE_2_VS_2, \partnerId, \partnerPicId
|
||||
multi_do MULTI_BATTLE_2_VS_2, \partnerId
|
||||
.endm
|
||||
|
||||
.macro multi_2_vs_1 trainer1Id:req, trainer1LoseText:req, partnerId:req, partnerPicId:req
|
||||
.macro multi_2_vs_1 trainer1Id:req, trainer1LoseText:req, partnerId:req
|
||||
special SavePlayerParty
|
||||
trainerbattle TRAINER_BATTLE_SET_TRAINER_A, \trainer1Id, 0, NULL, \trainer1LoseText @ set first trainer mons
|
||||
multi_do MULTI_BATTLE_2_VS_1, \partnerId, \partnerPicId
|
||||
multi_do MULTI_BATTLE_2_VS_1, \partnerId
|
||||
.endm
|
||||
|
||||
@ Wild mons need to be assigned to gEnemyParty 0 and 3 slots, other slots need to be cleared out.
|
||||
.macro multi_wild partnerId:req, partnerPicId:req
|
||||
.macro multi_wild partnerId:req
|
||||
special SavePlayerParty
|
||||
multi_do MULTI_BATTLE_2_VS_WILD, \partnerId, \partnerPicId
|
||||
multi_do MULTI_BATTLE_2_VS_WILD, \partnerId
|
||||
.endm
|
||||
|
||||
.macro multi_do_fixed type:req, partnerId:req, partnerPicId:req
|
||||
.macro multi_do_fixed type:req, partnerId:req
|
||||
setvar VAR_0x8004, SPECIAL_BATTLE_MULTI
|
||||
setvar VAR_0x8005, \type
|
||||
setvar VAR_0x8006, \partnerId
|
||||
setvar VAR_0x8007, \partnerPicId
|
||||
special DoSpecialTrainerBattle
|
||||
waitstate
|
||||
setvar VAR_0x8004, FRONTIER_UTIL_FUNC_SAVE_PARTY
|
||||
@@ -145,21 +143,21 @@
|
||||
special LoadPlayerParty
|
||||
.endm
|
||||
|
||||
.macro multi_fixed_2_vs_2 trainer1Id:req, trainer1LoseText:req, trainer2Id:req, trainer2LoseText:req, partnerId:req, partnerPicId:req
|
||||
.macro multi_fixed_2_vs_2 trainer1Id:req, trainer1LoseText:req, trainer2Id:req, trainer2LoseText:req, partnerId:req
|
||||
special SavePlayerParty
|
||||
trainerbattle TRAINER_BATTLE_SET_TRAINER_A, \trainer1Id, 0, NULL, \trainer1LoseText @ set first trainer mons
|
||||
trainerbattle TRAINER_BATTLE_SET_TRAINER_B, \trainer2Id, 0, NULL, \trainer2LoseText @ set second trainer mons
|
||||
multi_do_fixed MULTI_BATTLE_2_VS_2, \partnerId, \partnerPicId
|
||||
multi_do_fixed MULTI_BATTLE_2_VS_2, \partnerId
|
||||
.endm
|
||||
|
||||
.macro multi_fixed_2_vs_1 trainer1Id:req, trainer1LoseText:req, partnerId:req, partnerPicId:req
|
||||
.macro multi_fixed_2_vs_1 trainer1Id:req, trainer1LoseText:req, partnerId:req
|
||||
special SavePlayerParty
|
||||
trainerbattle TRAINER_BATTLE_SET_TRAINER_A, \trainer1Id, 0, NULL, \trainer1LoseText @ set first trainer mons
|
||||
multi_do_fixed MULTI_BATTLE_2_VS_1, \partnerId, \partnerPicId
|
||||
multi_do_fixed MULTI_BATTLE_2_VS_1, \partnerId
|
||||
.endm
|
||||
|
||||
@ Wild mons need to be assigned to gEnemyParty 0 and 3 slots, other slots need to be cleared out.
|
||||
.macro multi_fixed_wild partnerId:req, partnerPicId:req
|
||||
.macro multi_fixed_wild partnerId:req
|
||||
special SavePlayerParty
|
||||
multi_do_fixed MULTI_BATTLE_2_VS_WILD, \partnerId, \partnerPicId
|
||||
multi_do_fixed MULTI_BATTLE_2_VS_WILD, \partnerId
|
||||
.endm
|
||||
|
||||
@@ -72,6 +72,10 @@
|
||||
.2byte \id
|
||||
.endm
|
||||
|
||||
.macro printsavedstring
|
||||
printstring 0
|
||||
.endm
|
||||
|
||||
.macro printselectionstring id:req
|
||||
.byte 0x11
|
||||
.2byte \id
|
||||
@@ -92,19 +96,30 @@
|
||||
.4byte \ptr
|
||||
.endm
|
||||
|
||||
.macro seteffectwithchance
|
||||
.macro setadditionaleffects
|
||||
1:
|
||||
.byte 0x15
|
||||
jumpifhalfword CMP_EQUAL, sMOVE_EFFECT, MOVE_EFFECT_CONTINUE, 1b
|
||||
.endm
|
||||
|
||||
.macro seteffectprimary
|
||||
.macro seteffectprimary moveEffect=0
|
||||
.if \moveEffect != 0
|
||||
setmoveeffect \moveEffect
|
||||
.endif
|
||||
.byte 0x16
|
||||
.endm
|
||||
|
||||
.macro seteffectsecondary
|
||||
.macro seteffectsecondary moveEffect=0
|
||||
.if \moveEffect != 0
|
||||
setmoveeffect \moveEffect
|
||||
.endif
|
||||
.byte 0x17
|
||||
.endm
|
||||
|
||||
.macro clearstatusfromeffect battler:req
|
||||
.macro clearstatusfromeffect battler:req, moveEffect=0
|
||||
.if \moveEffect != 0
|
||||
setmoveeffect \moveEffect
|
||||
.endif
|
||||
.byte 0x18
|
||||
.byte \battler
|
||||
.endm
|
||||
@@ -362,11 +377,6 @@
|
||||
.byte 0x3f
|
||||
.endm
|
||||
|
||||
.macro jumpifaffectedbyprotect failInstr:req
|
||||
.byte 0x40
|
||||
.4byte \failInstr
|
||||
.endm
|
||||
|
||||
.macro call instr:req
|
||||
.byte 0x41
|
||||
.4byte \instr
|
||||
@@ -521,9 +531,10 @@
|
||||
.byte 0x57
|
||||
.endm
|
||||
|
||||
.macro returntoball battler:req
|
||||
.macro returntoball battler:req, changingForm:req
|
||||
.byte 0x58
|
||||
.byte \battler
|
||||
.byte \changingForm
|
||||
.endm
|
||||
|
||||
.macro handlelearnnewmove learnedMoveInstr:req, nothingToLearnInstr:req, isFirstMove:req
|
||||
@@ -769,8 +780,21 @@
|
||||
.byte 0x8b
|
||||
.endm
|
||||
|
||||
.macro confuseifrepeatingattackends
|
||||
.macro twoturnmoveschargestringandanimation
|
||||
.byte 0x8c
|
||||
.4byte 1f @animation then attack string
|
||||
@default - attack string then animation
|
||||
printsavedstring
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
attackanimation
|
||||
waitanimation
|
||||
goto 2f
|
||||
1:
|
||||
attackanimation
|
||||
waitanimation
|
||||
printsavedstring
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
2:
|
||||
.endm
|
||||
|
||||
.macro setmultihitcounter value:req
|
||||
@@ -831,8 +855,9 @@
|
||||
.byte 0x99
|
||||
.endm
|
||||
|
||||
.macro setfocusenergy
|
||||
.macro setfocusenergy battler:req
|
||||
.byte 0x9a
|
||||
.byte \battler
|
||||
.endm
|
||||
|
||||
.macro transformdataexecution
|
||||
@@ -985,7 +1010,7 @@
|
||||
.byte 0xbb
|
||||
.endm
|
||||
|
||||
.macro maxattackhalvehp failInstr:req
|
||||
.macro halvehp failInstr:req
|
||||
.byte 0xbc
|
||||
.4byte \failInstr
|
||||
.endm
|
||||
@@ -1028,12 +1053,28 @@
|
||||
.4byte \failInstr
|
||||
.endm
|
||||
|
||||
.macro setsemiinvulnerablebit
|
||||
.macro setsemiinvulnerablebit clear=FALSE
|
||||
.byte 0xc5
|
||||
.byte \clear
|
||||
.endm
|
||||
|
||||
.macro clearsemiinvulnerablebit
|
||||
setsemiinvulnerablebit TRUE
|
||||
.endm
|
||||
|
||||
.macro tryfiretwoturnmovenowbyeffect battler:req, checkChargeTurnEffects:req, jumpInstr:req
|
||||
.byte 0xc6
|
||||
.byte \battler
|
||||
.byte \checkChargeTurnEffects
|
||||
.4byte \jumpInstr
|
||||
.endm
|
||||
|
||||
.macro tryfiretwoturnmovewithoutcharging battler:req, jumpInstr:req
|
||||
tryfiretwoturnmovenowbyeffect \battler, TRUE, \jumpInstr
|
||||
.endm
|
||||
|
||||
.macro tryfiretwoturnmoveaftercharging battler:req, jumpInstr:req
|
||||
tryfiretwoturnmovenowbyeffect \battler, FALSE, \jumpInstr
|
||||
.endm
|
||||
|
||||
.macro setminimize
|
||||
@@ -1092,8 +1133,9 @@
|
||||
.4byte \failInstr
|
||||
.endm
|
||||
|
||||
.macro trycopyability failInstr:req
|
||||
.macro trycopyability battler:req, failInstr:req
|
||||
.byte 0xd3
|
||||
.byte \battler
|
||||
.4byte \failInstr
|
||||
.endm
|
||||
|
||||
@@ -1179,8 +1221,10 @@
|
||||
.4byte \jumpInstr
|
||||
.endm
|
||||
|
||||
.macro getsecretpowereffect
|
||||
.macro jumpifnotcurrentmoveargtype battler:req, failInstr:req
|
||||
.byte 0xe4
|
||||
.byte \battler
|
||||
.4byte \failInstr
|
||||
.endm
|
||||
|
||||
.macro pickup
|
||||
@@ -1318,10 +1362,17 @@
|
||||
.4byte \jumpInstr
|
||||
.endm
|
||||
|
||||
.macro jumpifholdeffect battler:req, holdEffect:req, jumpInstr:req
|
||||
callnative BS_JumpIfHoldEffect
|
||||
.macro itemstatchangeeffects battler:req
|
||||
callnative BS_RunStatChangeItems
|
||||
.byte \battler
|
||||
.2byte \holdEffect
|
||||
.endm
|
||||
|
||||
.macro allyswitchswapbattlers
|
||||
callnative BS_AllySwitchSwapBattler
|
||||
.endm
|
||||
|
||||
.macro allyswitchfailchance jumpInstr:req
|
||||
callnative BS_AllySwitchFailChance
|
||||
.4byte \jumpInstr
|
||||
.endm
|
||||
|
||||
@@ -1337,12 +1388,15 @@
|
||||
.4byte \jumpInstr
|
||||
.endm
|
||||
|
||||
.macro itemrestorehp
|
||||
.macro itemrestorehp jumpInstr:req, restoreBattlerInstr:req
|
||||
callnative BS_ItemRestoreHP
|
||||
.4byte \jumpInstr
|
||||
.4byte \restoreBattlerInstr
|
||||
.endm
|
||||
|
||||
.macro itemcurestatus
|
||||
.macro itemcurestatus jumpInstr:req
|
||||
callnative BS_ItemCureStatus
|
||||
.4byte \jumpInstr
|
||||
.endm
|
||||
|
||||
.macro itemincreasestat
|
||||
@@ -1366,6 +1420,36 @@
|
||||
.byte \battler
|
||||
.endm
|
||||
|
||||
.macro trysetoctolock battler:req, failInstr:req
|
||||
callnative BS_TrySetOctolock
|
||||
.byte \battler
|
||||
.4byte \failInstr
|
||||
.endm
|
||||
|
||||
.macro setglaiverush
|
||||
callnative BS_SetGlaiveRush
|
||||
.endm
|
||||
|
||||
.macro tryrelicsong
|
||||
callnative BS_TryRelicSong
|
||||
.endm
|
||||
|
||||
.macro setpledge jumpInstr:req
|
||||
callnative BS_SetPledge
|
||||
.4byte \jumpInstr
|
||||
.endm
|
||||
|
||||
.macro setpledgestatus battler:req sidestatus:req
|
||||
callnative BS_SetPledgeStatus
|
||||
.byte \battler
|
||||
.4byte \sidestatus
|
||||
.endm
|
||||
|
||||
.macro trycopycat failInstr:req
|
||||
callnative BS_TryCopycat
|
||||
.4byte \failInstr
|
||||
.endm
|
||||
|
||||
.macro setzeffect
|
||||
callnative BS_SetZEffect
|
||||
.endm
|
||||
@@ -1461,6 +1545,108 @@
|
||||
.4byte \failInstr
|
||||
.endm
|
||||
|
||||
@ Used to active a different Max Move effects.
|
||||
.macro setmaxmoveeffect
|
||||
callnative BS_SetMaxMoveEffect
|
||||
.endm
|
||||
|
||||
.macro setsteelsurge, failInstr:req
|
||||
callnative BS_SetSteelsurge
|
||||
.4byte \failInstr
|
||||
.endm
|
||||
|
||||
.macro damagenontypes
|
||||
callnative BS_DamageNonTypes
|
||||
.endm
|
||||
|
||||
.macro trysetstatus1, ptr:req
|
||||
callnative BS_TrySetStatus1
|
||||
.4byte \ptr
|
||||
.endm
|
||||
|
||||
.macro trysetstatus2, ptr:req
|
||||
callnative BS_TrySetStatus2
|
||||
.4byte \ptr
|
||||
.endm
|
||||
|
||||
.macro tryhealsixthhealth, ptr:req
|
||||
callnative BS_HealOneSixth
|
||||
.4byte \ptr
|
||||
.endm
|
||||
|
||||
.macro tryrecycleberry, ptr:req
|
||||
callnative BS_TryRecycleBerry
|
||||
.4byte \ptr
|
||||
.endm
|
||||
|
||||
.macro updatedynamax
|
||||
callnative BS_UpdateDynamax
|
||||
.endm
|
||||
|
||||
.macro jumpiftargetdynamaxed, ptr:req
|
||||
callnative BS_JumpIfDynamaxed
|
||||
.4byte \ptr
|
||||
.endm
|
||||
|
||||
.macro trytrainerslidezmovemsg
|
||||
callnative BS_TryTrainerSlideZMoveMsg
|
||||
.endm
|
||||
|
||||
.macro trytrainerslidemegaevolutionmsg
|
||||
callnative BS_TryTrainerSlideMegaEvolutionMsg
|
||||
.endm
|
||||
|
||||
.macro trytrainerslidedynamaxmsg
|
||||
callnative BS_TryTrainerSlideDynamaxMsg
|
||||
.endm
|
||||
|
||||
.macro tryhealpulse failInstr:req
|
||||
callnative BS_TryHealPulse
|
||||
.4byte \failInstr
|
||||
.endm
|
||||
|
||||
.macro trydefog clear:req, failInstr:req
|
||||
callnative BS_TryDefog
|
||||
.byte \clear
|
||||
.4byte \failInstr
|
||||
.endm
|
||||
|
||||
.macro trytriggerstatusform
|
||||
callnative BS_TryTriggerStatusForm
|
||||
.endm
|
||||
|
||||
.macro setphotongeysercategory
|
||||
callnative BS_SetPhotonGeyserCategory
|
||||
.endm
|
||||
|
||||
.macro tryupperhand failInstr:req
|
||||
callnative BS_TryUpperHand
|
||||
.4byte \failInstr
|
||||
.endm
|
||||
|
||||
.macro tryupdaterecoiltracker
|
||||
callnative BS_TryUpdateRecoilTracker
|
||||
.endm
|
||||
|
||||
.macro trytidyup clear:req, jumpInstr:req
|
||||
callnative BS_TryTidyUp
|
||||
.byte \clear
|
||||
.4byte \jumpInstr
|
||||
.endm
|
||||
|
||||
.macro trygulpmissile
|
||||
callnative BS_TryGulpMissile
|
||||
.endm
|
||||
|
||||
.macro tryactivategulpmissile
|
||||
callnative BS_TryActivateGulpMissile
|
||||
.endm
|
||||
|
||||
.macro tryquash failInstr:req
|
||||
callnative BS_TryQuash
|
||||
.4byte \failInstr
|
||||
.endm
|
||||
|
||||
@ various command changed to more readable macros
|
||||
.macro cancelmultiturnmoves battler:req
|
||||
various \battler, VARIOUS_CANCEL_MULTI_TURN_MOVES
|
||||
@@ -1652,16 +1838,6 @@
|
||||
various \battler, VARIOUS_SET_LAST_USED_ABILITY
|
||||
.endm
|
||||
|
||||
.macro tryhealpulse battler:req, failInstr:req
|
||||
various \battler, VARIOUS_TRY_HEAL_PULSE
|
||||
.4byte \failInstr
|
||||
.endm
|
||||
|
||||
.macro tryquash failInstr:req
|
||||
various BS_ATTACKER, VARIOUS_TRY_QUASH
|
||||
.4byte \failInstr
|
||||
.endm
|
||||
|
||||
.macro tryafteryou failInstr:req
|
||||
various BS_ATTACKER, VARIOUS_AFTER_YOU
|
||||
.4byte \failInstr
|
||||
@@ -1706,8 +1882,8 @@
|
||||
.4byte \jumpInstr
|
||||
.endm
|
||||
|
||||
.macro argumentstatuseffect
|
||||
various BS_ATTACKER, VARIOUS_ARGUMENT_STATUS_EFFECT
|
||||
.macro setargtobattledamage
|
||||
various BS_ATTACKER, VARIOUS_SET_ARG_TO_BATTLE_DAMAGE
|
||||
.endm
|
||||
|
||||
.macro tryhitswitchtarget failInstr:req
|
||||
@@ -1725,11 +1901,6 @@
|
||||
.4byte \jumpInstr
|
||||
.endm
|
||||
|
||||
.macro trycopycat failInstr:req
|
||||
various BS_ATTACKER, VARIOUS_TRY_COPYCAT
|
||||
.4byte \failInstr
|
||||
.endm
|
||||
|
||||
.macro showabilitypopup battler:req
|
||||
various \battler, VARIOUS_ABILITY_POPUP
|
||||
.endm
|
||||
@@ -1738,12 +1909,6 @@
|
||||
various \battler, VARIOUS_UPDATE_ABILITY_POPUP
|
||||
.endm
|
||||
|
||||
.macro defogclear battler:req, clear:req, failInstr:req
|
||||
various \battler, VARIOUS_DEFOG
|
||||
.byte \clear
|
||||
.4byte \failInstr
|
||||
.endm
|
||||
|
||||
.macro jumpiftargetally jumpInstr:req
|
||||
various BS_ATTACKER, VARIOUS_JUMP_IF_TARGET_ALLY
|
||||
.4byte \jumpInstr
|
||||
@@ -1762,10 +1927,6 @@
|
||||
various \battler, VARIOUS_POWER_TRICK
|
||||
.endm
|
||||
|
||||
.macro argumenttomoveeffect
|
||||
various BS_ATTACKER, VARIOUS_ARGUMENT_TO_MOVE_EFFECT
|
||||
.endm
|
||||
|
||||
.macro jumpifnotgrounded battler:req, jumpInstr:req
|
||||
various \battler, VARIOUS_JUMP_IF_NOT_GROUNDED
|
||||
.4byte \jumpInstr
|
||||
@@ -1893,10 +2054,15 @@
|
||||
.4byte \jumpInstr
|
||||
.endm
|
||||
|
||||
.macro jumpifnoholdeffect battler:req, holdEffect:req, jumpInstr:req
|
||||
various \battler, VARIOUS_JUMP_IF_NO_HOLD_EFFECT
|
||||
.macro jumpifholdeffect battler:req, holdEffect:req, jumpInstr:req, equal=TRUE
|
||||
various \battler, VARIOUS_JUMP_IF_HOLD_EFFECT
|
||||
.byte \holdEffect
|
||||
.4byte \jumpInstr
|
||||
.byte \equal
|
||||
.endm
|
||||
|
||||
.macro jumpifnoholdeffect battler:req, holdEffect:req, jumpInstr:req
|
||||
jumpifholdeffect \battler, \holdEffect, \jumpInstr, FALSE
|
||||
.endm
|
||||
|
||||
.macro infatuatewithbattler battler:req, infatuateWith:req
|
||||
@@ -2004,10 +2170,6 @@
|
||||
.4byte \jumpInstr
|
||||
.endm
|
||||
|
||||
.macro applyplasmafists
|
||||
various BS_ATTACKER, VARIOUS_APPLY_PLASMA_FISTS
|
||||
.endm
|
||||
|
||||
.macro jumpifweatheraffected battler:req, flags:req, jumpInstr:req
|
||||
various \battler, VARIOUS_JUMP_IF_WEATHER_AFFECTED
|
||||
.4byte \flags
|
||||
@@ -2044,24 +2206,11 @@
|
||||
.4byte \failInstr
|
||||
.endm
|
||||
|
||||
.macro setoctolock battler:req, failInstr:req
|
||||
various \battler, VARIOUS_SET_OCTOLOCK
|
||||
.4byte \failInstr
|
||||
.endm
|
||||
|
||||
.macro cutonethirdhpraisestats failInstr:req
|
||||
various BS_ATTACKER, VARIOUS_CUT_1_3_HP_RAISE_STATS
|
||||
.4byte \failInstr
|
||||
.endm
|
||||
|
||||
.macro photongeysercheck battler:req
|
||||
various \battler, VARIOUS_PHOTON_GEYSER_CHECK
|
||||
.endm
|
||||
|
||||
.macro shellsidearmcheck
|
||||
various BS_ATTACKER, VARIOUS_SHELL_SIDE_ARM_CHECK
|
||||
.endm
|
||||
|
||||
.macro jumpifteanoberry jumpInstr:req
|
||||
various BS_ATTACKER, VARIOUS_TEATIME_TARGETS
|
||||
.4byte \jumpInstr
|
||||
@@ -2129,14 +2278,6 @@
|
||||
various \battler, VARIOUS_ACTIVATE_TERRAIN_CHANGE_ABILITIES
|
||||
.endm
|
||||
|
||||
.macro trytrainerslidezmovemsg battler:req
|
||||
various \battler, VARIOUS_TRY_TRAINER_SLIDE_MSG_Z_MOVE
|
||||
.endm
|
||||
|
||||
.macro trytrainerslidemegaevolutionmsg battler:req
|
||||
various \battler, VARIOUS_TRY_TRAINER_SLIDE_MSG_MEGA_EVOLUTION
|
||||
.endm
|
||||
|
||||
@ helpful macros
|
||||
.macro setstatchanger stat:req, stages:req, down:req
|
||||
setbyte sSTATCHANGER, \stat | \stages << 3 | \down << 7
|
||||
@@ -2236,10 +2377,6 @@
|
||||
manipulatedamage DMG_CURR_ATTACKER_HP
|
||||
.endm
|
||||
|
||||
.macro dmg_1_2_attackerhp
|
||||
manipulatedamage DMG_1_2_ATTACKER_HP
|
||||
.endm
|
||||
|
||||
.macro jumpifflowerveil jumpInstr:req
|
||||
jumpifnottype BS_TARGET, TYPE_GRASS, 1f
|
||||
jumpifability BS_TARGET_SIDE, ABILITY_FLOWER_VEIL, \jumpInstr
|
||||
@@ -2261,6 +2398,15 @@
|
||||
goto \jumpInstr
|
||||
.endm
|
||||
|
||||
.macro setallytonextattacker jumpInstr:req
|
||||
jumpifbyte CMP_GREATER_THAN, gBattlerAttacker, 0x1, 1f
|
||||
addbyte gBattlerAttacker, 0x2
|
||||
goto \jumpInstr
|
||||
1:
|
||||
subbyte gBattlerAttacker, 0x2
|
||||
goto \jumpInstr
|
||||
.endm
|
||||
|
||||
.macro jumpifleafguardprotected battler:req, jumpInstr:req
|
||||
various \battler, VARIOUS_JUMP_IF_LEAF_GUARD_PROTECTED
|
||||
.4byte \jumpInstr
|
||||
@@ -2340,3 +2486,8 @@
|
||||
getbattlerfainted \battler
|
||||
jumpifbyte CMP_EQUAL, gBattleCommunication, \value, \ptr
|
||||
.endm
|
||||
|
||||
.macro flushtextbox
|
||||
printstring STRINGID_EMPTYSTRING3
|
||||
waitmessage 1
|
||||
.endm
|
||||
|
||||
@@ -984,16 +984,62 @@
|
||||
.byte \textTop
|
||||
.endm
|
||||
|
||||
@ Gives the player a Pokémon of the specified species and level, holding the specified item. The trailing 0s are unused parameters.
|
||||
@ Gives the player a Pokémon of the specified species and level, and allows to customize extra parameters.
|
||||
@ VAR_RESULT will be set to MON_GIVEN_TO_PARTY, MON_GIVEN_TO_PC, or MON_CANT_GIVE depending on the outcome.
|
||||
.macro givemon species:req, level:req, item=ITEM_NONE
|
||||
.byte 0x79
|
||||
.macro givemon species:req, level:req, item, ball, nature, abilityNum, gender, hpEv, atkEv, defEv, speedEv, spAtkEv, spDefEv, hpIv, atkIv, defIv, speedIv, spAtkIv, spDefIv, move1, move2, move3, move4, isShiny, ggMaxFactor, teraType
|
||||
callnative ScrCmd_givemon
|
||||
.set givemon_flags, 0
|
||||
.2byte \species
|
||||
.byte \level
|
||||
.2byte \item
|
||||
.4byte 0
|
||||
.4byte 0
|
||||
.byte 0
|
||||
.2byte \level
|
||||
.ifnb \item; .set givemon_flags, givemon_flags | (1 << 0); .endif
|
||||
.ifnb \ball; .set givemon_flags, givemon_flags | (1 << 1); .endif
|
||||
.ifnb \nature; .set givemon_flags, givemon_flags | (1 << 2); .endif
|
||||
.ifnb \abilityNum; .set givemon_flags, givemon_flags | (1 << 3); .endif
|
||||
.ifnb \gender; .set givemon_flags, givemon_flags | (1 << 4); .endif
|
||||
.ifnb \hpEv; .set givemon_flags, givemon_flags | (1 << 5); .endif
|
||||
.ifnb \atkEv; .set givemon_flags, givemon_flags | (1 << 6); .endif
|
||||
.ifnb \defEv; .set givemon_flags, givemon_flags | (1 << 7); .endif
|
||||
.ifnb \speedEv; .set givemon_flags, givemon_flags | (1 << 8); .endif
|
||||
.ifnb \spAtkEv; .set givemon_flags, givemon_flags | (1 << 9); .endif
|
||||
.ifnb \spDefEv; .set givemon_flags, givemon_flags | (1 << 10); .endif
|
||||
.ifnb \hpIv; .set givemon_flags, givemon_flags | (1 << 11); .endif
|
||||
.ifnb \atkIv; .set givemon_flags, givemon_flags | (1 << 12); .endif
|
||||
.ifnb \defIv; .set givemon_flags, givemon_flags | (1 << 13); .endif
|
||||
.ifnb \speedIv; .set givemon_flags, givemon_flags | (1 << 14); .endif
|
||||
.ifnb \spAtkIv; .set givemon_flags, givemon_flags | (1 << 15); .endif
|
||||
.ifnb \spDefIv; .set givemon_flags, givemon_flags | (1 << 16); .endif
|
||||
.ifnb \move1; .set givemon_flags, givemon_flags | (1 << 17); .endif
|
||||
.ifnb \move2; .set givemon_flags, givemon_flags | (1 << 18); .endif
|
||||
.ifnb \move3; .set givemon_flags, givemon_flags | (1 << 19); .endif
|
||||
.ifnb \move4; .set givemon_flags, givemon_flags | (1 << 20); .endif
|
||||
.ifnb \isShiny; .set givemon_flags, givemon_flags | (1 << 21); .endif
|
||||
.ifnb \ggMaxFactor; .set givemon_flags, givemon_flags | (1 << 22); .endif
|
||||
.ifnb \teraType; .set givemon_flags, givemon_flags | (1 << 23); .endif
|
||||
.4byte givemon_flags
|
||||
.ifnb \item; .2byte \item; .endif
|
||||
.ifnb \ball; .2byte \ball; .endif
|
||||
.ifnb \nature; .2byte \nature; .endif
|
||||
.ifnb \abilityNum; .2byte \abilityNum; .endif
|
||||
.ifnb \gender; .2byte \gender; .endif
|
||||
.ifnb \hpEv; .2byte \hpEv; .endif
|
||||
.ifnb \atkEv; .2byte \atkEv; .endif
|
||||
.ifnb \defEv; .2byte \defEv; .endif
|
||||
.ifnb \speedEv; .2byte \speedEv; .endif
|
||||
.ifnb \spAtkEv; .2byte \spAtkEv; .endif
|
||||
.ifnb \spDefEv; .2byte \spDefEv; .endif
|
||||
.ifnb \hpIv; .2byte \hpIv; .endif
|
||||
.ifnb \atkIv; .2byte \atkIv; .endif
|
||||
.ifnb \defIv; .2byte \defIv; .endif
|
||||
.ifnb \speedIv; .2byte \speedIv; .endif
|
||||
.ifnb \spAtkIv; .2byte \spAtkIv; .endif
|
||||
.ifnb \spDefIv; .2byte \spDefIv; .endif
|
||||
.ifnb \move1; .2byte \move1; .endif
|
||||
.ifnb \move2; .2byte \move2; .endif
|
||||
.ifnb \move3; .2byte \move3; .endif
|
||||
.ifnb \move4; .2byte \move4; .endif
|
||||
.ifnb \isShiny; .2byte \isShiny; .endif
|
||||
.ifnb \ggMaxFactor; .2byte \ggMaxFactor; .endif
|
||||
.ifnb \teraType; .2byte \teraType; .endif
|
||||
.endm
|
||||
|
||||
@ Gives the player an Egg of the specified species.
|
||||
@@ -1735,6 +1781,38 @@
|
||||
.2byte \quantity
|
||||
.endm
|
||||
|
||||
.macro _dynmultichoice left:req, top:req, ignoreBPress:req, maxBeforeScroll:req, shouldSort:req, initialSelected:req, callbacks:req argv:vararg
|
||||
.byte 0xe3
|
||||
.2byte \left
|
||||
.2byte \top
|
||||
.byte \ignoreBPress
|
||||
.byte \maxBeforeScroll
|
||||
.byte \shouldSort
|
||||
.2byte \initialSelected
|
||||
.byte \callbacks
|
||||
.byte (.Ldynmultichoice_\@_2 - .Ldynmultichoice_\@_1) / 4
|
||||
.Ldynmultichoice_\@_1:
|
||||
.4byte \argv
|
||||
.Ldynmultichoice_\@_2:
|
||||
.endm
|
||||
|
||||
@ Displays a multichoice box from which the user can choose a selection, and blocks script execution until a selection is made.
|
||||
@ Lists of options are provided in argv.
|
||||
@ If ignoreBPress is set to a non-zero value, then the user will not be allowed to back out of the multichoice with the B button.
|
||||
.macro dynmultichoice left:req, top:req, ignoreBPress:req, maxBeforeScroll:req, initialSelected:req, callbacks:req argv:vararg
|
||||
_dynmultichoice \left, \top, \ignoreBPress, \maxBeforeScroll, FALSE, \initialSelected, \callbacks, \argv
|
||||
.endm
|
||||
|
||||
.macro dynmultipush name:req, id:req
|
||||
.byte 0xe4
|
||||
.4byte \name
|
||||
.2byte \id
|
||||
.endm
|
||||
|
||||
.macro dynmultistack left:req, top:req, ignoreBPress:req, maxBeforeScroll:req, shouldSort:req, initialSelected:req, callbacks:req
|
||||
_dynmultichoice \left, \top, \ignoreBPress, \maxBeforeScroll, \shouldSort, \initialSelected, \callbacks, NULL
|
||||
.endm
|
||||
|
||||
|
||||
@ Supplementary
|
||||
|
||||
@@ -2025,3 +2103,72 @@
|
||||
callnative CreateTrainerPartyForPlayer
|
||||
trainerbattle_no_intro \trainer2, NULL
|
||||
.endm
|
||||
|
||||
@ Sets VAR_RESULT to TRUE if stat can be hyper trained, or to
|
||||
@ FALSE otherwise.
|
||||
.macro canhypertrain stat:req, slot:req
|
||||
callnative CanHyperTrain
|
||||
.byte \stat
|
||||
.2byte \slot
|
||||
.endm
|
||||
|
||||
@ Hyper Trains a stat.
|
||||
.macro hypertrain stat:req, slot:req
|
||||
callnative HyperTrain
|
||||
.byte \stat
|
||||
.2byte \slot
|
||||
.endm
|
||||
|
||||
@ Sets VAR_RESULT to TRUE if the Pokemon has the Gigantamax Factor,
|
||||
@ or to FALSE otherwise.
|
||||
.macro hasgigantamaxfactor slot:req
|
||||
callnative HasGigantamaxFactor
|
||||
.2byte \slot
|
||||
.endm
|
||||
|
||||
@ Toggles the Gigantamax Factor for a Pokemon.
|
||||
@ Fails for Melmetal (vanilla behavior).
|
||||
@ Sets VAR_RESULT to TRUE if it succeeds, and FALSE otherwise.
|
||||
.macro togglegigantamaxfactor slot:req
|
||||
callnative ToggleGigantamaxFactor
|
||||
.2byte \slot
|
||||
.endm
|
||||
|
||||
@ Sets VAR_RESULT to one of the arguments (via setorcopyvar).
|
||||
.macro randomelement element:req, elements:vararg
|
||||
.set _randomelement_n, 0
|
||||
.irp el, \element, \elements
|
||||
.set _randomelement_n, _randomelement_n + 1
|
||||
.endr
|
||||
random _randomelement_n
|
||||
|
||||
.set _randomelement_n, 0
|
||||
.irp el, \element, \elements
|
||||
goto_if_ne VAR_RESULT, _randomelement_n, 1f
|
||||
setorcopyvar VAR_RESULT, \el
|
||||
goto 2f
|
||||
1:
|
||||
.set _randomelement_n, _randomelement_n + 1
|
||||
.endr
|
||||
2:
|
||||
.endm
|
||||
|
||||
@ Sets VAR_RESULT to TRUE with probability 'percent', and FALSE
|
||||
@ with probability '100% - percent'.
|
||||
.macro randompercentage percent:req
|
||||
random 100
|
||||
goto_if_lt VAR_RESULT, \percent, 1f
|
||||
setvar VAR_RESULT, FALSE
|
||||
goto 2f
|
||||
1:
|
||||
setvar VAR_RESULT, TRUE
|
||||
2:
|
||||
.endm
|
||||
|
||||
@ Inflicts \status1 to the Pokémon in \slot.
|
||||
@ If \slot is greater or equal than PARTY_SIZE, the status is inflicted on each of the Player's Pokémon.
|
||||
.macro setstatus1 status1:req, slot:req
|
||||
callnative Script_SetStatus1
|
||||
.2byte \status1
|
||||
.2byte \slot
|
||||
.endm
|
||||
|
||||
@@ -28,6 +28,10 @@
|
||||
.2byte \x, \y
|
||||
.byte \elevation
|
||||
.byte \movement_type
|
||||
.if \x_radius > 15
|
||||
@ This warning is relevant for GetItemBallIdAndAmountFromTemplate
|
||||
.error "movementRangeX has a bitfield of 4 bytes, so values over 15 will overflow. Use a custom script for item balls that should give the player more than 15 items."
|
||||
.endif
|
||||
.byte ((\y_radius << 4) | \x_radius)
|
||||
.space 1 @ Padding
|
||||
.2byte \trainer_type
|
||||
|
||||
@@ -162,5 +162,7 @@
|
||||
create_movement_action figure_8, MOVEMENT_ACTION_FIGURE_8
|
||||
create_movement_action fly_up, MOVEMENT_ACTION_FLY_UP
|
||||
create_movement_action fly_down, MOVEMENT_ACTION_FLY_DOWN
|
||||
create_movement_action emote_double_exclamation_mark, MOVEMENT_ACTION_EMOTE_DOUBLE_EXCL_MARK
|
||||
create_movement_action emote_x, MOVEMENT_ACTION_EMOTE_X
|
||||
|
||||
create_movement_action step_end, MOVEMENT_ACTION_STEP_END
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#!/bin/bash
|
||||
#!/usr/bin/env bash
|
||||
|
||||
if [[ -d "$DEVKITARM/bin/" ]]; then
|
||||
OBJDUMP_BIN="$DEVKITARM/bin/arm-none-eabi-objdump"
|
||||
|
||||
@@ -153,6 +153,7 @@ SUPER_RE = A0
|
||||
'ä' = F4
|
||||
'ö' = F5
|
||||
'ü' = F6
|
||||
EMOJI_DIZZYEGG = F7
|
||||
TALL_PLUS = FC 0C FB
|
||||
'$' = FF
|
||||
|
||||
|
||||
35
check_history.sh
Executable file
35
check_history.sh
Executable file
@@ -0,0 +1,35 @@
|
||||
#!/bin/bash
|
||||
|
||||
if [ -e .histignore ]
|
||||
then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ $GITHUB_ACTION ]
|
||||
then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
has_hist=false
|
||||
has_git=1
|
||||
if which git >/dev/null
|
||||
then
|
||||
has_hist="$(git rev-parse --is-inside-work-tree 2>/dev/null)"
|
||||
else
|
||||
has_git=0
|
||||
fi
|
||||
|
||||
if [ $has_git -ne 1 ]
|
||||
then
|
||||
echo -e "\033[0;31mfatal: \033[0m\033[1;33mgit was not found. You will be unable to use version control, update pokeemerald-expansion, or use feature branches. To use version control, install \`git\` and clone the repository instead of using \"Download Zip\" on GitHub. Run \`touch .histignore\` to ignore this and continue anyways.\033[0m"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$has_hist" ]
|
||||
then
|
||||
exit 0
|
||||
else
|
||||
echo -e "\033[0;31mfatal: \033[0m\033[1;33mno git history found. You will be unable to use version control, update pokeemerald-expansion, or use feature branches. To use version control, use \`git\` to clone the repository instead of using \"Download Zip\" on GitHub. Run \`touch .histignore\` to ignore this and continue anyways.\033[0m"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -6,255 +6,269 @@
|
||||
#include "constants/moves.h"
|
||||
#include "constants/songs.h"
|
||||
#include "constants/game_stat.h"
|
||||
.include "asm/macros.inc"
|
||||
.include "asm/macros/battle_script.inc"
|
||||
.include "constants/constants.inc"
|
||||
.include "asm/macros.inc"
|
||||
.include "asm/macros/battle_script.inc"
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.section script_data, "aw", %progbits
|
||||
.section script_data, "aw", %progbits
|
||||
|
||||
.align 2
|
||||
.align 2
|
||||
gBattlescriptsForUsingItem::
|
||||
.4byte BattleScript_ItemRestoreHP @ EFFECT_ITEM_RESTORE_HP
|
||||
.4byte BattleScript_ItemCureStatus @ EFFECT_ITEM_CURE_STATUS
|
||||
.4byte BattleScript_ItemHealAndCureStatus @ EFFECT_ITEM_HEAL_AND_CURE_STATUS
|
||||
.4byte BattleScript_ItemIncreaseStat @ EFFECT_ITEM_INCREASE_STAT
|
||||
.4byte BattleScript_ItemSetMist @ EFFECT_ITEM_SET_MIST
|
||||
.4byte BattleScript_ItemSetFocusEnergy @ EFFECT_ITEM_SET_FOCUS_ENERGY
|
||||
.4byte BattleScript_RunByUsingItem @ EFFECT_ITEM_ESCAPE
|
||||
.4byte BattleScript_BallThrow @ EFFECT_ITEM_THROW_BALL
|
||||
.4byte BattleScript_ItemRestoreHP @ EFFECT_ITEM_REVIVE
|
||||
.4byte BattleScript_ItemRestorePP @ EFFECT_ITEM_RESTORE_PP
|
||||
.4byte BattleScript_ItemIncreaseAllStats @ EFFECT_ITEM_INCREASE_ALL_STATS
|
||||
.4byte BattleScript_ItemRestoreHP @ EFFECT_ITEM_RESTORE_HP
|
||||
.4byte BattleScript_ItemCureStatus @ EFFECT_ITEM_CURE_STATUS
|
||||
.4byte BattleScript_ItemHealAndCureStatus @ EFFECT_ITEM_HEAL_AND_CURE_STATUS
|
||||
.4byte BattleScript_ItemIncreaseStat @ EFFECT_ITEM_INCREASE_STAT
|
||||
.4byte BattleScript_ItemSetMist @ EFFECT_ITEM_SET_MIST
|
||||
.4byte BattleScript_ItemSetFocusEnergy @ EFFECT_ITEM_SET_FOCUS_ENERGY
|
||||
.4byte BattleScript_RunByUsingItem @ EFFECT_ITEM_ESCAPE
|
||||
.4byte BattleScript_BallThrow @ EFFECT_ITEM_THROW_BALL
|
||||
.4byte BattleScript_ItemRestoreHP @ EFFECT_ITEM_REVIVE
|
||||
.4byte BattleScript_ItemRestorePP @ EFFECT_ITEM_RESTORE_PP
|
||||
.4byte BattleScript_ItemIncreaseAllStats @ EFFECT_ITEM_INCREASE_ALL_STATS
|
||||
|
||||
.align 2
|
||||
.align 2
|
||||
gBattlescriptsForSafariActions::
|
||||
.4byte BattleScript_ActionWatchesCarefully
|
||||
.4byte BattleScript_ActionGetNear
|
||||
.4byte BattleScript_ActionThrowPokeblock
|
||||
.4byte BattleScript_ActionWallyThrow
|
||||
.4byte BattleScript_ActionWatchesCarefully
|
||||
.4byte BattleScript_ActionGetNear
|
||||
.4byte BattleScript_ActionThrowPokeblock
|
||||
.4byte BattleScript_ActionWallyThrow
|
||||
|
||||
BattleScript_ItemEnd:
|
||||
end
|
||||
end
|
||||
|
||||
BattleScript_UseItemMessage:
|
||||
printstring STRINGID_EMPTYSTRING3
|
||||
pause B_WAIT_TIME_MED
|
||||
playse SE_USE_ITEM
|
||||
getbattlerside BS_ATTACKER
|
||||
copybyte cMULTISTRING_CHOOSER, gBattleCommunication
|
||||
printfromtable gTrainerUsedItemStringIds
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
return
|
||||
printstring STRINGID_EMPTYSTRING3
|
||||
pause B_WAIT_TIME_MED
|
||||
playse SE_USE_ITEM
|
||||
getbattlerside BS_ATTACKER
|
||||
copybyte cMULTISTRING_CHOOSER, gBattleCommunication
|
||||
printfromtable gTrainerUsedItemStringIds
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
return
|
||||
|
||||
BattleScript_ItemRestoreHPRet:
|
||||
bichalfword gMoveResultFlags, MOVE_RESULT_NO_EFFECT
|
||||
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE
|
||||
healthbarupdate BS_SCRIPTING
|
||||
datahpupdate BS_SCRIPTING
|
||||
printstring STRINGID_ITEMRESTOREDSPECIESHEALTH
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
return
|
||||
|
||||
BattleScript_ItemRestoreHP::
|
||||
call BattleScript_UseItemMessage
|
||||
itemrestorehp
|
||||
jumpifbyte CMP_EQUAL, gBattleCommunication, TRUE, BattleScript_ItemRestoreHP_SendOutRevivedBattler
|
||||
bichalfword gMoveResultFlags, MOVE_RESULT_NO_EFFECT
|
||||
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE
|
||||
healthbarupdate BS_ATTACKER
|
||||
datahpupdate BS_ATTACKER
|
||||
printstring STRINGID_ITEMRESTOREDSPECIESHEALTH
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
end
|
||||
call BattleScript_UseItemMessage
|
||||
itemrestorehp BattleScript_ItemRestoreHPEnd, BattleScript_ItemRestoreHP_Battler
|
||||
call BattleScript_ItemRestoreHP_Party
|
||||
goto BattleScript_ItemRestoreHPEnd
|
||||
|
||||
BattleScript_ItemRestoreHP_Battler::
|
||||
call BattleScript_ItemRestoreHPRet
|
||||
BattleScript_ItemRestoreHPEnd:
|
||||
end
|
||||
|
||||
BattleScript_ItemRestoreHP_Party::
|
||||
jumpifbyte CMP_EQUAL, gBattleCommunication, TRUE, BattleScript_ItemRestoreHP_SendOutRevivedBattler
|
||||
bichalfword gMoveResultFlags, MOVE_RESULT_NO_EFFECT
|
||||
printstring STRINGID_ITEMRESTOREDSPECIESHEALTH
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
return
|
||||
|
||||
BattleScript_ItemRestoreHP_SendOutRevivedBattler:
|
||||
switchinanim BS_SCRIPTING, FALSE
|
||||
waitstate
|
||||
switchineffects BS_SCRIPTING
|
||||
end
|
||||
switchinanim BS_SCRIPTING, FALSE
|
||||
waitstate
|
||||
switchineffects BS_SCRIPTING
|
||||
end
|
||||
|
||||
BattleScript_ItemCureStatus::
|
||||
call BattleScript_UseItemMessage
|
||||
itemcurestatus
|
||||
updatestatusicon BS_ATTACKER
|
||||
printstring STRINGID_ITEMCUREDSPECIESSTATUS
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
end
|
||||
call BattleScript_UseItemMessage
|
||||
BattleScript_ItemCureStatusAfterItemMsg:
|
||||
itemcurestatus BattleScript_ItemCureStatusEnd
|
||||
updatestatusicon BS_SCRIPTING
|
||||
printstring STRINGID_ITEMCUREDSPECIESSTATUS
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
BattleScript_ItemCureStatusEnd:
|
||||
end
|
||||
|
||||
BattleScript_ItemHealAndCureStatus::
|
||||
call BattleScript_UseItemMessage
|
||||
itemrestorehp
|
||||
itemcurestatus
|
||||
printstring STRINGID_ITEMRESTOREDSPECIESHEALTH
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
bichalfword gMoveResultFlags, MOVE_RESULT_NO_EFFECT
|
||||
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE
|
||||
healthbarupdate BS_ATTACKER
|
||||
datahpupdate BS_ATTACKER
|
||||
updatestatusicon BS_ATTACKER
|
||||
printstring STRINGID_ITEMRESTOREDSPECIESHEALTH
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
end
|
||||
call BattleScript_UseItemMessage
|
||||
itemrestorehp BattleScript_ItemCureStatusAfterItemMsg, BattleScript_ItemHealAndCureStatus_Battler
|
||||
call BattleScript_ItemRestoreHP_Party
|
||||
goto BattleScript_ItemHealAndCureStatusEnd
|
||||
|
||||
BattleScript_ItemHealAndCureStatus_Battler::
|
||||
call BattleScript_ItemRestoreHPRet
|
||||
BattleScript_ItemHealAndCureStatusEnd::
|
||||
goto BattleScript_ItemCureStatusAfterItemMsg
|
||||
|
||||
BattleScript_ItemIncreaseStat::
|
||||
call BattleScript_UseItemMessage
|
||||
itemincreasestat
|
||||
statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_CHANGE_NOT_PROTECT_AFFECTED | STAT_CHANGE_ALLOW_PTR, BattleScript_ItemEnd
|
||||
setgraphicalstatchangevalues
|
||||
playanimation BS_ATTACKER, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1
|
||||
printfromtable gStatUpStringIds
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
end
|
||||
call BattleScript_UseItemMessage
|
||||
itemincreasestat
|
||||
statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_CHANGE_NOT_PROTECT_AFFECTED | STAT_CHANGE_ALLOW_PTR, BattleScript_ItemEnd
|
||||
setgraphicalstatchangevalues
|
||||
playanimation BS_ATTACKER, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1
|
||||
printfromtable gStatUpStringIds
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
end
|
||||
|
||||
BattleScript_ItemSetMist::
|
||||
call BattleScript_UseItemMessage
|
||||
setmist
|
||||
playmoveanimation BS_ATTACKER, MOVE_MIST
|
||||
waitanimation
|
||||
printfromtable gMistUsedStringIds
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
end
|
||||
call BattleScript_UseItemMessage
|
||||
setmist
|
||||
playmoveanimation BS_ATTACKER, MOVE_MIST
|
||||
waitanimation
|
||||
printfromtable gMistUsedStringIds
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
end
|
||||
|
||||
BattleScript_ItemSetFocusEnergy::
|
||||
call BattleScript_UseItemMessage
|
||||
jumpifstatus2 BS_ATTACKER, STATUS2_FOCUS_ENERGY, BattleScript_ButItFailed
|
||||
setfocusenergy
|
||||
playmoveanimation BS_ATTACKER, MOVE_FOCUS_ENERGY
|
||||
waitanimation
|
||||
call BattleScript_UseItemMessage
|
||||
jumpifstatus2 BS_ATTACKER, STATUS2_FOCUS_ENERGY_ANY, BattleScript_ButItFailed
|
||||
setfocusenergy BS_ATTACKER
|
||||
playmoveanimation BS_ATTACKER, MOVE_FOCUS_ENERGY
|
||||
waitanimation
|
||||
copybyte sBATTLER, gBattlerAttacker
|
||||
printstring STRINGID_PKMNUSEDXTOGETPUMPED
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
end
|
||||
printstring STRINGID_PKMNUSEDXTOGETPUMPED
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
end
|
||||
|
||||
BattleScript_ItemRestorePP::
|
||||
call BattleScript_UseItemMessage
|
||||
itemrestorepp
|
||||
printstring STRINGID_ITEMRESTOREDSPECIESPP
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
end
|
||||
call BattleScript_UseItemMessage
|
||||
itemrestorepp
|
||||
printstring STRINGID_ITEMRESTOREDSPECIESPP
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
end
|
||||
|
||||
BattleScript_ItemIncreaseAllStats::
|
||||
call BattleScript_UseItemMessage
|
||||
call BattleScript_AllStatsUp
|
||||
end
|
||||
call BattleScript_UseItemMessage
|
||||
call BattleScript_AllStatsUp
|
||||
end
|
||||
|
||||
BattleScript_BallThrow::
|
||||
jumpifword CMP_COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_WALLY_TUTORIAL, BattleScript_BallThrowByWally
|
||||
printstring STRINGID_PLAYERUSEDITEM
|
||||
handleballthrow
|
||||
jumpifword CMP_COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_WALLY_TUTORIAL, BattleScript_BallThrowByWally
|
||||
printstring STRINGID_PLAYERUSEDITEM
|
||||
handleballthrow
|
||||
|
||||
BattleScript_BallThrowByWally::
|
||||
printstring STRINGID_WALLYUSEDITEM
|
||||
handleballthrow
|
||||
printstring STRINGID_WALLYUSEDITEM
|
||||
handleballthrow
|
||||
|
||||
BattleScript_SafariBallThrow::
|
||||
printstring STRINGID_PLAYERUSEDITEM
|
||||
updatestatusicon BS_ATTACKER
|
||||
handleballthrow
|
||||
printstring STRINGID_PLAYERUSEDITEM
|
||||
updatestatusicon BS_ATTACKER
|
||||
handleballthrow
|
||||
|
||||
BattleScript_SuccessBallThrow::
|
||||
setbyte sMON_CAUGHT, TRUE
|
||||
incrementgamestat GAME_STAT_POKEMON_CAPTURES
|
||||
setbyte sMON_CAUGHT, TRUE
|
||||
incrementgamestat GAME_STAT_POKEMON_CAPTURES
|
||||
BattleScript_PrintCaughtMonInfo::
|
||||
printstring STRINGID_GOTCHAPKMNCAUGHTPLAYER
|
||||
jumpifbyte CMP_NOT_EQUAL, sEXP_CATCH, TRUE, BattleScript_TryPrintCaughtMonInfo
|
||||
setbyte sGIVEEXP_STATE, 0
|
||||
getexp BS_TARGET
|
||||
sethword gBattle_BG2_X, 0
|
||||
printstring STRINGID_GOTCHAPKMNCAUGHTPLAYER
|
||||
jumpifbyte CMP_NOT_EQUAL, sEXP_CATCH, TRUE, BattleScript_TryPrintCaughtMonInfo
|
||||
setbyte sGIVEEXP_STATE, 0
|
||||
getexp BS_TARGET
|
||||
sethword gBattle_BG2_X, 0
|
||||
BattleScript_TryPrintCaughtMonInfo:
|
||||
trysetcaughtmondexflags BattleScript_TryNicknameCaughtMon
|
||||
printstring STRINGID_PKMNDATAADDEDTODEX
|
||||
waitstate
|
||||
setbyte gBattleCommunication, 0
|
||||
displaydexinfo
|
||||
jumpifbattletype BATTLE_TYPE_RECORDED, BattleScript_GiveCaughtMonEnd
|
||||
trysetcaughtmondexflags BattleScript_TryNicknameCaughtMon
|
||||
printstring STRINGID_PKMNDATAADDEDTODEX
|
||||
waitstate
|
||||
setbyte gBattleCommunication, 0
|
||||
displaydexinfo
|
||||
BattleScript_TryNicknameCaughtMon::
|
||||
printstring STRINGID_GIVENICKNAMECAPTURED
|
||||
waitstate
|
||||
setbyte gBattleCommunication, 0
|
||||
trygivecaughtmonnick BattleScript_GiveCaughtMonEnd
|
||||
givecaughtmon
|
||||
printfromtable gCaughtMonStringIds
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
goto BattleScript_SuccessBallThrowEnd
|
||||
printstring STRINGID_GIVENICKNAMECAPTURED
|
||||
waitstate
|
||||
setbyte gBattleCommunication, 0
|
||||
trygivecaughtmonnick BattleScript_GiveCaughtMonEnd
|
||||
givecaughtmon
|
||||
printfromtable gCaughtMonStringIds
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
goto BattleScript_SuccessBallThrowEnd
|
||||
BattleScript_GiveCaughtMonEnd::
|
||||
givecaughtmon
|
||||
givecaughtmon
|
||||
BattleScript_SuccessBallThrowEnd::
|
||||
setbyte gBattleOutcome, B_OUTCOME_CAUGHT
|
||||
finishturn
|
||||
setbyte gBattleOutcome, B_OUTCOME_CAUGHT
|
||||
finishturn
|
||||
|
||||
BattleScript_WallyBallThrow::
|
||||
printstring STRINGID_GOTCHAPKMNCAUGHTWALLY
|
||||
setbyte gBattleOutcome, B_OUTCOME_CAUGHT
|
||||
finishturn
|
||||
printstring STRINGID_GOTCHAPKMNCAUGHTWALLY
|
||||
setbyte gBattleOutcome, B_OUTCOME_CAUGHT
|
||||
finishturn
|
||||
|
||||
BattleScript_ShakeBallThrow::
|
||||
printfromtable gBallEscapeStringIds
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
jumpifword CMP_NO_COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_SAFARI, BattleScript_ShakeBallThrowEnd
|
||||
jumpifbyte CMP_NOT_EQUAL, gNumSafariBalls, 0, BattleScript_ShakeBallThrowEnd
|
||||
printstring STRINGID_OUTOFSAFARIBALLS
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
setbyte gBattleOutcome, B_OUTCOME_NO_SAFARI_BALLS
|
||||
printfromtable gBallEscapeStringIds
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
jumpifword CMP_NO_COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_SAFARI, BattleScript_ShakeBallThrowEnd
|
||||
jumpifbyte CMP_NOT_EQUAL, gNumSafariBalls, 0, BattleScript_ShakeBallThrowEnd
|
||||
printstring STRINGID_OUTOFSAFARIBALLS
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
setbyte gBattleOutcome, B_OUTCOME_NO_SAFARI_BALLS
|
||||
BattleScript_ShakeBallThrowEnd::
|
||||
finishaction
|
||||
finishaction
|
||||
|
||||
BattleScript_TrainerBallBlock::
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
printstring STRINGID_TRAINERBLOCKEDBALL
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
printstring STRINGID_DONTBEATHIEF
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
finishaction
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
printstring STRINGID_TRAINERBLOCKEDBALL
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
printstring STRINGID_DONTBEATHIEF
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
finishaction
|
||||
|
||||
BattleScript_RunByUsingItem::
|
||||
playse SE_FLEE
|
||||
setbyte gBattleOutcome, B_OUTCOME_RAN
|
||||
finishturn
|
||||
playse SE_FLEE
|
||||
setbyte gBattleOutcome, B_OUTCOME_RAN
|
||||
finishturn
|
||||
|
||||
BattleScript_ActionWatchesCarefully:
|
||||
printstring STRINGID_PKMNWATCHINGCAREFULLY
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
end2
|
||||
printstring STRINGID_PKMNWATCHINGCAREFULLY
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
end2
|
||||
|
||||
BattleScript_ActionGetNear:
|
||||
printfromtable gSafariGetNearStringIds
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
end2
|
||||
printfromtable gSafariGetNearStringIds
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
end2
|
||||
|
||||
BattleScript_ActionThrowPokeblock:
|
||||
printstring STRINGID_THREWPOKEBLOCKATPKMN
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
playanimation BS_ATTACKER, B_ANIM_POKEBLOCK_THROW, NULL
|
||||
printfromtable gSafariPokeblockResultStringIds
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
end2
|
||||
printstring STRINGID_THREWPOKEBLOCKATPKMN
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
playanimation BS_ATTACKER, B_ANIM_POKEBLOCK_THROW, NULL
|
||||
printfromtable gSafariPokeblockResultStringIds
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
end2
|
||||
|
||||
BattleScript_ActionWallyThrow:
|
||||
printstring STRINGID_RETURNMON
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
returnatktoball
|
||||
waitstate
|
||||
trainerslidein BS_TARGET
|
||||
waitstate
|
||||
printstring STRINGID_YOUTHROWABALLNOWRIGHT
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
end2
|
||||
printstring STRINGID_RETURNMON
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
returnatktoball
|
||||
waitstate
|
||||
trainerslidein BS_TARGET
|
||||
waitstate
|
||||
printstring STRINGID_YOUTHROWABALLNOWRIGHT
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
end2
|
||||
|
||||
BattleScript_TrainerASlideMsgRet::
|
||||
handletrainerslidemsg BS_SCRIPTING, 0
|
||||
trainerslidein B_POSITION_OPPONENT_LEFT
|
||||
handletrainerslidemsg BS_SCRIPTING, 1
|
||||
waitstate
|
||||
trainerslideout B_POSITION_OPPONENT_LEFT
|
||||
waitstate
|
||||
handletrainerslidemsg BS_SCRIPTING, 2
|
||||
return
|
||||
handletrainerslidemsg BS_SCRIPTING, 0
|
||||
trainerslidein B_POSITION_OPPONENT_LEFT
|
||||
handletrainerslidemsg BS_SCRIPTING, 1
|
||||
waitstate
|
||||
trainerslideout B_POSITION_OPPONENT_LEFT
|
||||
waitstate
|
||||
handletrainerslidemsg BS_SCRIPTING, 2
|
||||
return
|
||||
|
||||
BattleScript_TrainerASlideMsgEnd2::
|
||||
call BattleScript_TrainerASlideMsgRet
|
||||
end2
|
||||
call BattleScript_TrainerASlideMsgRet
|
||||
end2
|
||||
|
||||
BattleScript_TrainerBSlideMsgRet::
|
||||
handletrainerslidemsg BS_SCRIPTING, 0
|
||||
trainerslidein B_POSITION_OPPONENT_RIGHT
|
||||
handletrainerslidemsg BS_SCRIPTING, 1
|
||||
waitstate
|
||||
trainerslideout B_POSITION_OPPONENT_RIGHT
|
||||
waitstate
|
||||
handletrainerslidemsg BS_SCRIPTING, 2
|
||||
return
|
||||
handletrainerslidemsg BS_SCRIPTING, 0
|
||||
trainerslidein B_POSITION_OPPONENT_RIGHT
|
||||
handletrainerslidemsg BS_SCRIPTING, 1
|
||||
waitstate
|
||||
trainerslideout B_POSITION_OPPONENT_RIGHT
|
||||
waitstate
|
||||
handletrainerslidemsg BS_SCRIPTING, 2
|
||||
return
|
||||
|
||||
BattleScript_TrainerBSlideMsgEnd2::
|
||||
call BattleScript_TrainerBSlideMsgRet
|
||||
end2
|
||||
call BattleScript_TrainerBSlideMsgRet
|
||||
end2
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
#include "config.h"
|
||||
#include "constants/global.h"
|
||||
#include "constants/contest.h"
|
||||
.include "asm/macros.inc"
|
||||
@@ -435,11 +436,11 @@ AI_CGM_BetterWhenAudienceExcited:
|
||||
AI_CGM_BetterWhenAudienceExcited_1stUp:
|
||||
@ BUG: Should be if_appeal_num_eq 0
|
||||
@ 1st up on 1st appeal excitement will always be 0
|
||||
.ifdef BUGFIX
|
||||
#ifdef BUGFIX
|
||||
if_appeal_num_eq 0, AI_CGM_BetterWhenAudienceExcited_1stAppeal
|
||||
.else
|
||||
#else
|
||||
if_appeal_num_not_eq 0, AI_CGM_BetterWhenAudienceExcited_1stAppeal
|
||||
.endif
|
||||
#endif
|
||||
if_excitement_eq 4, AI_CGM_BetterWhenAudienceExcited_1AwayFromMax
|
||||
if_excitement_eq 3, AI_CGM_BetterWhenAudienceExcited_2AwayFromMax
|
||||
end
|
||||
@@ -546,11 +547,11 @@ AI_CGM_TargetMonWithJudgesAttention:
|
||||
end
|
||||
AI_CGM_TargetMonWithJudgesAttention_CheckMon1:
|
||||
if_cannot_participate MON_1, AI_CGM_TargetMonWithJudgesAttention_CheckMon2
|
||||
.ifdef BUGFIX
|
||||
#ifdef BUGFIX
|
||||
if_not_used_combo_starter MON_1, AI_CGM_TargetMonWithJudgesAttention_CheckMon2
|
||||
.else
|
||||
#else
|
||||
if_used_combo_starter MON_1, AI_CGM_TargetMonWithJudgesAttention_CheckMon2
|
||||
.endif
|
||||
#endif
|
||||
if_random_less_than 125, AI_CGM_TargetMonWithJudgesAttention_CheckMon2
|
||||
score +2
|
||||
if_not_completed_combo MON_1, AI_CGM_TargetMonWithJudgesAttention_CheckMon2
|
||||
@@ -559,11 +560,11 @@ AI_CGM_TargetMonWithJudgesAttention_CheckMon1:
|
||||
AI_CGM_TargetMonWithJudgesAttention_CheckMon2:
|
||||
if_user_order_eq MON_2, AI_CGM_End
|
||||
if_cannot_participate MON_2, AI_CGM_TargetMonWithJudgesAttention_CheckMon3
|
||||
.ifdef BUGFIX
|
||||
#ifdef BUGFIX
|
||||
if_not_used_combo_starter MON_2, AI_CGM_TargetMonWithJudgesAttention_CheckMon3
|
||||
.else
|
||||
#else
|
||||
if_used_combo_starter MON_2, AI_CGM_TargetMonWithJudgesAttention_CheckMon3
|
||||
.endif
|
||||
#endif
|
||||
if_random_less_than 125, AI_CGM_TargetMonWithJudgesAttention_CheckMon3
|
||||
score +2
|
||||
if_not_completed_combo MON_2, AI_CGM_TargetMonWithJudgesAttention_CheckMon3
|
||||
@@ -572,11 +573,11 @@ AI_CGM_TargetMonWithJudgesAttention_CheckMon2:
|
||||
AI_CGM_TargetMonWithJudgesAttention_CheckMon3:
|
||||
if_user_order_eq MON_3, AI_CGM_End
|
||||
if_cannot_participate MON_3, AI_CGM_End
|
||||
.ifdef BUGFIX
|
||||
#ifdef BUGFIX
|
||||
if_not_used_combo_starter MON_3, AI_CGM_End
|
||||
.else
|
||||
#else
|
||||
if_used_combo_starter MON_3, AI_CGM_End
|
||||
.endif
|
||||
#endif
|
||||
if_random_less_than 125, AI_CGM_End
|
||||
score +2
|
||||
if_not_completed_combo MON_3, AI_CGM_End
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
#include "config.h"
|
||||
#include "config/battle.h"
|
||||
#include "config/item.h"
|
||||
#include "constants/global.h"
|
||||
@@ -578,6 +579,7 @@ gStdScripts_End::
|
||||
.include "data/scripts/new_game.inc"
|
||||
.include "data/scripts/hall_of_fame.inc"
|
||||
|
||||
.include "data/scripts/config.inc"
|
||||
.include "data/scripts/debug.inc"
|
||||
|
||||
EventScript_WhiteOut::
|
||||
@@ -946,6 +948,10 @@ gText_PlayerFoundOneTMHM::
|
||||
.string "{PLAYER} found one {STR_VAR_1}\n"
|
||||
.string "{STR_VAR_2}!$"
|
||||
|
||||
gText_PlayerFoundTMHMs::
|
||||
.string "{PLAYER} found {STR_VAR_3} {STR_VAR_1}\n"
|
||||
.string "{STR_VAR_2}!$"
|
||||
|
||||
gText_Sudowoodo_Attacked::
|
||||
.string "The weird tree doesn't like the\n"
|
||||
.string "WAILMER PAIL!\p"
|
||||
@@ -1004,6 +1010,13 @@ Common_EventScript_LegendaryFlewAway::
|
||||
release
|
||||
end
|
||||
|
||||
EventScript_VsSeekerChargingDone::
|
||||
special VsSeekerFreezeObjectsAfterChargeComplete
|
||||
waitstate
|
||||
special VsSeekerResetObjectMovementAfterChargeComplete
|
||||
releaseall
|
||||
end
|
||||
|
||||
.include "data/scripts/pc_transfer.inc"
|
||||
.include "data/scripts/questionnaire.inc"
|
||||
.include "data/scripts/abnormal_weather.inc"
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
#include "config/item.h"
|
||||
.include "asm/macros.inc"
|
||||
.include "constants/constants.inc"
|
||||
|
||||
@@ -72,6 +73,9 @@ gFieldEffectScriptPointers::
|
||||
.4byte gFieldEffectScript_RayquazaSpotlight @ FLDEFF_RAYQUAZA_SPOTLIGHT
|
||||
.4byte gFieldEffectScript_DestroyDeoxysRock @ FLDEFF_DESTROY_DEOXYS_ROCK
|
||||
.4byte gFieldEffectScript_MoveDeoxysRock @ FLDEFF_MOVE_DEOXYS_ROCK
|
||||
.4byte gFldEffScript_UseVsSeeker @ FLDEFF_USE_VS_SEEKER
|
||||
.4byte gFldEffScript_XIcon @ FLDEFF_X_ICON
|
||||
.4byte gFldEffScript_DoubleExclMarkIcon @ FLDEFF_DOUBLE_EXCL_MARK_ICON
|
||||
|
||||
gFieldEffectScript_ExclamationMarkIcon1::
|
||||
field_eff_callnative FldEff_ExclamationMarkIcon
|
||||
@@ -343,3 +347,15 @@ gFieldEffectScript_DestroyDeoxysRock::
|
||||
gFieldEffectScript_MoveDeoxysRock::
|
||||
field_eff_callnative FldEff_MoveDeoxysRock
|
||||
field_eff_end
|
||||
|
||||
gFldEffScript_UseVsSeeker::
|
||||
field_eff_callnative FldEff_UseVsSeeker
|
||||
field_eff_end
|
||||
|
||||
gFldEffScript_XIcon::
|
||||
field_eff_callnative FldEff_XIcon
|
||||
field_eff_end
|
||||
|
||||
gFldEffScript_DoubleExclMarkIcon::
|
||||
field_eff_callnative FldEff_DoubleExclMarkIcon
|
||||
field_eff_end
|
||||
|
||||
@@ -36,8 +36,8 @@
|
||||
"movement_range_x": 1,
|
||||
"movement_range_y": 1,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "AbandonedShip_CaptainsOffice_EventScript_ItemStorageKey",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_STORAGE_KEY",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_ABANDONED_SHIP_CAPTAINS_OFFICE_STORAGE_KEY"
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
"movement_range_x": 0,
|
||||
"movement_range_y": 0,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "AbandonedShip_HiddenFloorRooms_EventScript_ItemLuxuryBall",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_LUXURY_BALL",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_ABANDONED_SHIP_HIDDEN_FLOOR_ROOM_6_LUXURY_BALL"
|
||||
},
|
||||
{
|
||||
@@ -36,8 +36,8 @@
|
||||
"movement_range_x": 0,
|
||||
"movement_range_y": 0,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "AbandonedShip_HiddenFloorRooms_EventScript_ItemScanner",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_SCANNER",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_ABANDONED_SHIP_HIDDEN_FLOOR_ROOM_2_SCANNER"
|
||||
},
|
||||
{
|
||||
@@ -49,8 +49,8 @@
|
||||
"movement_range_x": 1,
|
||||
"movement_range_y": 1,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "AbandonedShip_HiddenFloorRooms_EventScript_ItemTMRainDance",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_TM_RAIN_DANCE",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_ABANDONED_SHIP_HIDDEN_FLOOR_ROOM_1_TM_RAIN_DANCE"
|
||||
},
|
||||
{
|
||||
@@ -62,8 +62,8 @@
|
||||
"movement_range_x": 1,
|
||||
"movement_range_y": 1,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "AbandonedShip_HiddenFloorRooms_EventScript_ItemWaterStone",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_WATER_STONE",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_ABANDONED_SHIP_HIDDEN_FLOOR_ROOM_3_WATER_STONE"
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
"movement_range_x": 1,
|
||||
"movement_range_y": 1,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "AbandonedShip_Room_B1F_EventScript_ItemTMIceBeam",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_TM_ICE_BEAM",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_ABANDONED_SHIP_ROOMS_B1F_TM_ICE_BEAM"
|
||||
}
|
||||
],
|
||||
|
||||
@@ -49,8 +49,8 @@
|
||||
"movement_range_x": 1,
|
||||
"movement_range_y": 1,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "AbandonedShip_Rooms2_1F_EventScript_ItemRevive",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_REVIVE",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_ABANDONED_SHIP_ROOMS_2_1F_REVIVE"
|
||||
},
|
||||
{
|
||||
|
||||
@@ -36,8 +36,8 @@
|
||||
"movement_range_x": 1,
|
||||
"movement_range_y": 1,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "AbandonedShip_Rooms2_B1F_EventScript_ItemDiveBall",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_DIVE_BALL",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_ABANDONED_SHIP_ROOMS_2_B1F_DIVE_BALL"
|
||||
}
|
||||
],
|
||||
|
||||
@@ -36,8 +36,8 @@
|
||||
"movement_range_x": 1,
|
||||
"movement_range_y": 1,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "AbandonedShip_Rooms_1F_EventScript_ItemHarborMail",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_HARBOR_MAIL",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_ABANDONED_SHIP_ROOMS_1F_HARBOR_MAIL"
|
||||
},
|
||||
{
|
||||
|
||||
@@ -36,8 +36,8 @@
|
||||
"movement_range_x": 1,
|
||||
"movement_range_y": 1,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "AbandonedShip_Rooms_B1F_EventScript_ItemEscapeRope",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_ESCAPE_ROPE",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_ABANDONED_SHIP_ROOMS_B1F_ESCAPE_ROPE"
|
||||
}
|
||||
],
|
||||
|
||||
@@ -49,8 +49,8 @@
|
||||
"movement_range_x": 0,
|
||||
"movement_range_y": 0,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "AquaHideout_B1F_EventScript_ItemMaxElixir",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_MAX_ELIXIR",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_AQUA_HIDEOUT_B1F_MAX_ELIXIR"
|
||||
},
|
||||
{
|
||||
@@ -75,8 +75,8 @@
|
||||
"movement_range_x": 1,
|
||||
"movement_range_y": 1,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "AquaHideout_B1F_EventScript_ItemMasterBall",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_MASTER_BALL",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_AQUA_HIDEOUT_B1F_MASTER_BALL"
|
||||
},
|
||||
{
|
||||
@@ -101,8 +101,8 @@
|
||||
"movement_range_x": 1,
|
||||
"movement_range_y": 1,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "AquaHideout_B1F_EventScript_ItemNugget",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_NUGGET",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_AQUA_HIDEOUT_B1F_NUGGET"
|
||||
},
|
||||
{
|
||||
|
||||
@@ -49,8 +49,8 @@
|
||||
"movement_range_x": 0,
|
||||
"movement_range_y": 0,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "AquaHideout_B2F_EventScript_ItemNestBall",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_NEST_BALL",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_AQUA_HIDEOUT_B2F_NEST_BALL"
|
||||
},
|
||||
{
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
"movement_range_x": 1,
|
||||
"movement_range_y": 1,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "ArtisanCave_1F_EventScript_ItemCarbos",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_CARBOS",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_ARTISAN_CAVE_1F_CARBOS"
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
"movement_range_x": 1,
|
||||
"movement_range_y": 1,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "ArtisanCave_B1F_EventScript_ItemHPUp",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_HP_UP",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_ARTISAN_CAVE_B1F_HP_UP"
|
||||
}
|
||||
],
|
||||
|
||||
@@ -415,18 +415,18 @@ BattleFrontier_BattleTowerLobby_EventScript_SaveBeforeLinkMultisChallenge::
|
||||
@ to the flash, but not data in PokemonStorage. The SaveGame script that follows asks the player to do a full save,
|
||||
@ which they can opt out of. As a result the player can save their party and quit without having saved the PC.
|
||||
@ This allows players to clone pokemon and their held items by withdrawing them (or erase them by despositing).
|
||||
.ifndef BUGFIX
|
||||
#ifndef BUGFIX
|
||||
tower_save 0
|
||||
.endif
|
||||
#endif
|
||||
call Common_EventScript_SaveGame
|
||||
setvar VAR_TEMP_CHALLENGE_STATUS, 255
|
||||
goto_if_eq VAR_RESULT, 0, BattleFrontier_BattleTowerLobby_EventScript_CancelChallengeSaveFailed
|
||||
@ GAME_STAT_ENTERED_BATTLE_TOWER should not be incremented here, for two reasons:
|
||||
@ 1. It is incremented again in BattleFrontier_BattleTowerLobby_EventScript_CableLinkSuccessful or BattleFrontier_BattleTowerLobby_EventScript_WirelessLinkSuccessful
|
||||
@ 2. If the player tries to save, but fails, the counter will still be incremented even if the player never enters the tower.
|
||||
.ifndef BUGFIX
|
||||
@ 2. If the player tries to connect, but fails, the counter will still be incremented even if the player never enters the tower.
|
||||
#ifndef BUGFIX
|
||||
incrementgamestat GAME_STAT_ENTERED_BATTLE_TOWER
|
||||
.endif
|
||||
#endif
|
||||
specialvar VAR_RESULT, IsWirelessAdapterConnected
|
||||
goto_if_eq VAR_RESULT, TRUE, BattleFrontier_BattleTowerLobby_EventScript_TryWirelessLink
|
||||
goto BattleFrontier_BattleTowerLobby_EventScript_TryCableLink
|
||||
|
||||
@@ -81,11 +81,11 @@ BirthIsland_Exterior_EventScript_Deoxys::
|
||||
applymovement LOCALID_DEOXYS, BirthIsland_Exterior_Movement_DeoxysApproach
|
||||
waitmovement 0
|
||||
waitse
|
||||
playmoncry SPECIES_DEOXYS, CRY_MODE_ENCOUNTER
|
||||
playmoncry SPECIES_DEOXYS_NORMAL, CRY_MODE_ENCOUNTER
|
||||
delay 40
|
||||
waitmoncry
|
||||
setvar VAR_LAST_TALKED, LOCALID_DEOXYS
|
||||
seteventmon SPECIES_DEOXYS, 30
|
||||
seteventmon SPECIES_DEOXYS_NORMAL, 30
|
||||
setflag FLAG_SYS_CTRL_OBJ_DELETE
|
||||
special BattleSetup_StartLegendaryBattle
|
||||
waitstate
|
||||
@@ -100,12 +100,12 @@ BirthIsland_Exterior_EventScript_Deoxys::
|
||||
|
||||
BirthIsland_Exterior_EventScript_DefeatedDeoxys::
|
||||
setflag FLAG_DEFEATED_DEOXYS
|
||||
setvar VAR_0x8004, SPECIES_DEOXYS
|
||||
setvar VAR_0x8004, SPECIES_DEOXYS_NORMAL
|
||||
goto Common_EventScript_LegendaryFlewAway
|
||||
end
|
||||
|
||||
BirthIsland_Exterior_EventScript_RanFromDeoxys::
|
||||
setvar VAR_0x8004, SPECIES_DEOXYS
|
||||
setvar VAR_0x8004, SPECIES_DEOXYS_NORMAL
|
||||
goto Common_EventScript_LegendaryFlewAway
|
||||
end
|
||||
|
||||
|
||||
@@ -18,12 +18,14 @@ DesertUnderpass_EventScript_Fossil::
|
||||
|
||||
DesertUnderpass_EventScript_GiveClawFossil::
|
||||
giveitem ITEM_CLAW_FOSSIL
|
||||
goto_if_eq VAR_RESULT, FALSE, Common_EventScript_ShowBagIsFull
|
||||
removeobject LOCALID_FOSSIL
|
||||
release
|
||||
end
|
||||
|
||||
DesertUnderpass_EventScript_GiveRootFossil::
|
||||
giveitem ITEM_ROOT_FOSSIL
|
||||
goto_if_eq VAR_RESULT, FALSE, Common_EventScript_ShowBagIsFull
|
||||
removeobject LOCALID_FOSSIL
|
||||
release
|
||||
end
|
||||
|
||||
@@ -93,6 +93,7 @@ DewfordTown_EventScript_OldRodFisherman::
|
||||
DewfordTown_EventScript_GiveOldRod::
|
||||
msgbox DewfordTown_Text_GiveYouOneOfMyRods, MSGBOX_DEFAULT
|
||||
giveitem ITEM_OLD_ROD
|
||||
goto_if_eq VAR_RESULT, FALSE, Common_EventScript_ShowBagIsFull
|
||||
setflag FLAG_RECEIVED_OLD_ROD
|
||||
msgbox DewfordTown_Text_ThrowInFishingAdvice, MSGBOX_DEFAULT
|
||||
release
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
"movement_range_x": 1,
|
||||
"movement_range_y": 1,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "FieryPath_EventScript_ItemTMToxic",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_TM_TOXIC",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_FIERY_PATH_TM_TOXIC"
|
||||
},
|
||||
{
|
||||
@@ -114,8 +114,8 @@
|
||||
"movement_range_x": 1,
|
||||
"movement_range_y": 1,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "FieryPath_EventScript_ItemFireStone",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_FIRE_STONE",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_FIERY_PATH_FIRE_STONE"
|
||||
}
|
||||
],
|
||||
|
||||
@@ -36,8 +36,8 @@
|
||||
"movement_range_x": 0,
|
||||
"movement_range_y": 0,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "GraniteCave_1F_EventScript_ItemEscapeRope",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_ESCAPE_ROPE",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_GRANITE_CAVE_1F_ESCAPE_ROPE"
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
"movement_range_x": 0,
|
||||
"movement_range_y": 0,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "GraniteCave_B1F_EventScript_ItemPokeBall",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_POKE_BALL",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_GRANITE_CAVE_B1F_POKE_BALL"
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
"movement_range_x": 0,
|
||||
"movement_range_y": 0,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "GraniteCave_B2F_EventScript_ItemRepel",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_REPEL",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_GRANITE_CAVE_B2F_REPEL"
|
||||
},
|
||||
{
|
||||
@@ -36,8 +36,8 @@
|
||||
"movement_range_x": 0,
|
||||
"movement_range_y": 0,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "GraniteCave_B2F_EventScript_ItemRareCandy",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_RARE_CANDY",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_GRANITE_CAVE_B2F_RARE_CANDY"
|
||||
},
|
||||
{
|
||||
|
||||
@@ -49,8 +49,8 @@
|
||||
"movement_range_x": 0,
|
||||
"movement_range_y": 0,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "JaggedPass_EventScript_ItemBurnHeal",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_BURN_HEAL",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_JAGGED_PASS_BURN_HEAL"
|
||||
},
|
||||
{
|
||||
|
||||
@@ -164,8 +164,8 @@
|
||||
"movement_range_x": 0,
|
||||
"movement_range_y": 0,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "LilycoveCity_EventScript_ItemMaxRepel",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_MAX_REPEL",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_LILYCOVE_CITY_MAX_REPEL"
|
||||
},
|
||||
{
|
||||
|
||||
@@ -36,8 +36,8 @@
|
||||
"movement_range_x": 1,
|
||||
"movement_range_y": 1,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "MagmaHideout_1F_EventScript_ItemRareCandy",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_RARE_CANDY",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_MAGMA_HIDEOUT_1F_RARE_CANDY"
|
||||
},
|
||||
{
|
||||
|
||||
@@ -49,8 +49,8 @@
|
||||
"movement_range_x": 1,
|
||||
"movement_range_y": 1,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "MagmaHideout_2F_2R_EventScript_ItemMaxElixir",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_MAX_ELIXIR",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_MAGMA_HIDEOUT_2F_2R_MAX_ELIXIR"
|
||||
},
|
||||
{
|
||||
@@ -88,8 +88,8 @@
|
||||
"movement_range_x": 1,
|
||||
"movement_range_y": 1,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "MagmaHideout_2F_2R_EventScript_ItemFullRestore",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_FULL_RESTORE",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_MAGMA_HIDEOUT_2F_2R_FULL_RESTORE"
|
||||
}
|
||||
],
|
||||
|
||||
@@ -49,8 +49,8 @@
|
||||
"movement_range_x": 1,
|
||||
"movement_range_y": 1,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "MagmaHideout_3F_1R_EventScript_ItemNugget",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_NUGGET",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_MAGMA_HIDEOUT_3F_1R_NUGGET"
|
||||
}
|
||||
],
|
||||
|
||||
@@ -36,8 +36,8 @@
|
||||
"movement_range_x": 1,
|
||||
"movement_range_y": 1,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "MagmaHideout_3F_2R_EventScript_ItemPPMax",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_PP_MAX",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_MAGMA_HIDEOUT_3F_2R_PP_MAX"
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
"movement_range_x": 1,
|
||||
"movement_range_y": 1,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "MagmaHideout_3F_3R_EventScript_ItemEscapeRope",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_ESCAPE_ROPE",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_MAGMA_HIDEOUT_3F_3R_ECAPE_ROPE"
|
||||
}
|
||||
],
|
||||
|
||||
@@ -114,8 +114,8 @@
|
||||
"movement_range_x": 1,
|
||||
"movement_range_y": 1,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "MagmaHideout_4F_EventScript_ItemMaxRevive",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_MAX_REVIVE",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_MAGMA_HIDEOUT_4F_MAX_REVIVE"
|
||||
}
|
||||
],
|
||||
|
||||
@@ -148,8 +148,8 @@
|
||||
"movement_range_x": 1,
|
||||
"movement_range_y": 1,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "MauvilleCity_EventScript_ItemXSpeed",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_X_SPEED",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_MAUVILLE_CITY_X_SPEED"
|
||||
},
|
||||
{
|
||||
|
||||
@@ -423,6 +423,7 @@ MauvilleCity_EventScript_Wattson::
|
||||
goto_if_set FLAG_GOT_BASEMENT_KEY_FROM_WATTSON, MauvilleCity_EventScript_BegunNewMauville
|
||||
msgbox MauvilleCity_Text_WattsonNeedFavorTakeKey, MSGBOX_DEFAULT
|
||||
giveitem ITEM_BASEMENT_KEY
|
||||
goto_if_eq VAR_RESULT, FALSE, Common_EventScript_ShowBagIsFull
|
||||
setflag FLAG_GOT_BASEMENT_KEY_FROM_WATTSON
|
||||
msgbox MauvilleCity_Text_WattsonWontBeChallenge, MSGBOX_DEFAULT
|
||||
release
|
||||
|
||||
@@ -41,12 +41,14 @@ MauvilleCity_BikeShop_EventScript_YesFar::
|
||||
MauvilleCity_BikeShop_EventScript_GetMachBike::
|
||||
msgbox MauvilleCity_BikeShop_Text_ChoseMachBike, MSGBOX_DEFAULT
|
||||
giveitem ITEM_MACH_BIKE
|
||||
goto_if_eq VAR_RESULT, FALSE, Common_EventScript_ShowBagIsFull
|
||||
goto MauvilleCity_BikeShop_EventScript_ComeBackToSwitchBikes
|
||||
end
|
||||
|
||||
MauvilleCity_BikeShop_EventScript_GetAcroBike::
|
||||
msgbox MauvilleCity_BikeShop_Text_ChoseAcroBike, MSGBOX_DEFAULT
|
||||
giveitem ITEM_ACRO_BIKE
|
||||
goto_if_eq VAR_RESULT, FALSE, Common_EventScript_ShowBagIsFull
|
||||
goto MauvilleCity_BikeShop_EventScript_ComeBackToSwitchBikes
|
||||
end
|
||||
|
||||
|
||||
@@ -24,8 +24,9 @@ MauvilleCity_House2_EventScript_AskToTradeForHarborMail::
|
||||
|
||||
MauvilleCity_House2_EventScript_AcceptTrade::
|
||||
msgbox MauvilleCity_House2_Text_IllTradeYouCoinCase, MSGBOX_DEFAULT
|
||||
removeitem ITEM_HARBOR_MAIL
|
||||
giveitem ITEM_COIN_CASE
|
||||
goto_if_eq VAR_RESULT, FALSE, Common_EventScript_ShowBagIsFull
|
||||
removeitem ITEM_HARBOR_MAIL
|
||||
setflag FLAG_RECEIVED_COIN_CASE
|
||||
goto MauvilleCity_House2_EventScript_ReceivedCoinCase
|
||||
end
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
"movement_range_x": 0,
|
||||
"movement_range_y": 0,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "MeteorFalls_1F_1R_EventScript_ItemTMIronTail",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_TM_IRON_TAIL",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_METEOR_FALLS_1F_1R_TM_IRON_TAIL"
|
||||
},
|
||||
{
|
||||
@@ -36,8 +36,8 @@
|
||||
"movement_range_x": 0,
|
||||
"movement_range_y": 0,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "MeteorFalls_1F_1R_EventScript_ItemMoonStone",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_MOON_STONE",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_METEOR_FALLS_1F_1R_MOON_STONE"
|
||||
},
|
||||
{
|
||||
@@ -49,8 +49,8 @@
|
||||
"movement_range_x": 0,
|
||||
"movement_range_y": 0,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "MeteorFalls_1F_1R_EventScript_ItemFullHeal",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_FULL_HEAL",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_METEOR_FALLS_1F_1R_FULL_HEAL"
|
||||
},
|
||||
{
|
||||
@@ -62,8 +62,8 @@
|
||||
"movement_range_x": 0,
|
||||
"movement_range_y": 0,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "MeteorFalls_1F_1R_EventScript_ItemPPUP",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_PP_UP",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_METEOR_FALLS_1F_1R_PP_UP"
|
||||
},
|
||||
{
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
"movement_range_x": 1,
|
||||
"movement_range_y": 1,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "MeteorFalls_B1F_2R_EventScript_ItemTMDragonClaw",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_TM_DRAGON_CLAW",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_METEOR_FALLS_B1F_2R_TM_DRAGON_CLAW"
|
||||
}
|
||||
],
|
||||
|
||||
@@ -10,6 +10,7 @@ MirageTower_4F_EventScript_RootFossil::
|
||||
msgbox MirageTower_4F_Text_TakeRootFossil, MSGBOX_YESNO
|
||||
goto_if_eq VAR_RESULT, NO, MirageTower_4F_EventScript_LeaveRootFossil
|
||||
giveitem ITEM_ROOT_FOSSIL
|
||||
goto_if_eq VAR_RESULT, FALSE, Common_EventScript_ShowBagIsFull
|
||||
closemessage
|
||||
setflag FLAG_HIDE_MIRAGE_TOWER_ROOT_FOSSIL
|
||||
setflag FLAG_HIDE_MIRAGE_TOWER_CLAW_FOSSIL
|
||||
@@ -30,6 +31,7 @@ MirageTower_4F_EventScript_ClawFossil::
|
||||
msgbox MirageTower_4F_Text_TakeClawFossil, MSGBOX_YESNO
|
||||
goto_if_eq VAR_RESULT, NO, MirageTower_4F_EventScript_LeaveClawFossil
|
||||
giveitem ITEM_CLAW_FOSSIL
|
||||
goto_if_eq VAR_RESULT, FALSE, Common_EventScript_ShowBagIsFull
|
||||
closemessage
|
||||
setflag FLAG_HIDE_MIRAGE_TOWER_CLAW_FOSSIL
|
||||
setflag FLAG_HIDE_MIRAGE_TOWER_ROOT_FOSSIL
|
||||
|
||||
@@ -104,8 +104,8 @@
|
||||
"movement_range_x": 0,
|
||||
"movement_range_y": 0,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "MossdeepCity_EventScript_ItemNetBall",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_NET_BALL",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_MOSSDEEP_CITY_NET_BALL"
|
||||
},
|
||||
{
|
||||
|
||||
@@ -9,6 +9,7 @@ MossdeepCity_House3_EventScript_SuperRodFisherman::
|
||||
goto_if_eq VAR_RESULT, NO, MossdeepCity_House3_EventScript_DeclineSuperRod
|
||||
msgbox MossdeepCity_House3_Text_SuperRodIsSuper, MSGBOX_DEFAULT
|
||||
giveitem ITEM_SUPER_ROD
|
||||
goto_if_eq VAR_RESULT, FALSE, Common_EventScript_ShowBagIsFull
|
||||
setflag FLAG_RECEIVED_SUPER_ROD
|
||||
msgbox MossdeepCity_House3_Text_TryDroppingRodInWater, MSGBOX_DEFAULT
|
||||
release
|
||||
|
||||
@@ -229,11 +229,11 @@ MossdeepCity_SpaceCenter_1F_EventScript_Grunt2::
|
||||
copyobjectxytoperm LOCALID_STAIR_GRUNT
|
||||
switch VAR_FACING
|
||||
case DIR_WEST, MossdeepCity_SpaceCenter_1F_EventScript_MoveGruntFromStairsWest
|
||||
#ifdef BUGFIX
|
||||
#ifdef BUGFIX
|
||||
case DIR_EAST, MossdeepCity_SpaceCenter_1F_EventScript_MoveGruntFromStairsEast
|
||||
#else
|
||||
#else
|
||||
case DIR_WEST, MossdeepCity_SpaceCenter_1F_EventScript_MoveGruntFromStairsEast
|
||||
#endif
|
||||
#endif
|
||||
applymovement LOCALID_STAIR_GRUNT, MossdeepCity_SpaceCenter_1F_Movement_MoveGruntFromStairs
|
||||
waitmovement 0
|
||||
setvar VAR_MOSSDEEP_SPACE_CENTER_STAIR_GUARD_STATE, 2
|
||||
|
||||
@@ -257,14 +257,7 @@ MossdeepCity_SpaceCenter_2F_EventScript_ChoosePartyForMultiBattle::
|
||||
goto MossdeepCity_SpaceCenter_2F_EventScript_ReadyForBattlePrompt
|
||||
|
||||
MossdeepCity_SpaceCenter_2F_EventScript_DoStevenMultiBattle::
|
||||
special ReducePlayerPartyToSelectedMons
|
||||
frontier_set FRONTIER_DATA_SELECTED_MON_ORDER
|
||||
setvar VAR_0x8004, SPECIAL_BATTLE_STEVEN
|
||||
setvar VAR_0x8005, 0
|
||||
special DoSpecialTrainerBattle
|
||||
waitstate
|
||||
frontier_saveparty
|
||||
special LoadPlayerParty
|
||||
multi_2_vs_2 TRAINER_MAXIE_MOSSDEEP, MossdeepCity_SpaceCenter_2F_Text_JustWantToExpandLand, TRAINER_TABITHA_MOSSDEEP, MossdeepCity_SpaceCenter_Text_TabithaDefeat, PARTNER_STEVEN
|
||||
switch VAR_RESULT
|
||||
case 1, MossdeepCity_SpaceCenter_2F_EventScript_DefeatedMaxieTabitha
|
||||
fadescreen FADE_TO_BLACK
|
||||
@@ -320,6 +313,9 @@ MossdeepCity_SpaceCenter_2F_EventScript_DefeatedMaxieTabitha::
|
||||
setobjectmovementtype LOCALID_SCIENTIST, MOVEMENT_TYPE_WANDER_AROUND
|
||||
addobject LOCALID_SCIENTIST
|
||||
fadescreen FADE_FROM_BLACK
|
||||
#ifdef BUGFIX
|
||||
releaseall
|
||||
#endif
|
||||
end
|
||||
|
||||
MossdeepCity_SpaceCenter_2F_EventScript_StevenFacePlayer::
|
||||
@@ -336,14 +332,6 @@ MossdeepCity_SpaceCenter_2F_EventScript_StevenFacePlayerWest::
|
||||
turnobject LOCALID_STEVEN, DIR_EAST
|
||||
return
|
||||
|
||||
MossdeepCity_SpaceCenter_2F_EventScript_MaxieTrainer::
|
||||
trainerbattle TRAINER_BATTLE_SET_TRAINER_A, TRAINER_MAXIE_MOSSDEEP, 0, MossdeepCity_SpaceCenter_2F_Text_JustWantToExpandLand, MossdeepCity_SpaceCenter_2F_Text_JustWantToExpandLand
|
||||
end
|
||||
|
||||
MossdeepCity_SpaceCenter_2F_EventScript_TabithaTrainer::
|
||||
trainerbattle TRAINER_BATTLE_SET_TRAINER_B, TRAINER_TABITHA_MOSSDEEP, 0, MossdeepCity_SpaceCenter_Text_TabithaDefeat, MossdeepCity_SpaceCenter_Text_TabithaDefeat
|
||||
end
|
||||
|
||||
MossdeepCity_SpaceCenter_2F_EventScript_RivalRayquazaCall::
|
||||
lockall
|
||||
checkplayergender
|
||||
|
||||
@@ -448,6 +448,7 @@ MtChimney_EventScript_MeteoriteMachine::
|
||||
goto_if_eq VAR_RESULT, NO, MtChimney_EventScript_LeaveMeteoriteAlone
|
||||
msgbox MtChimney_Text_PlayerRemovedMeteorite, MSGBOX_DEFAULT
|
||||
giveitem ITEM_METEORITE
|
||||
goto_if_eq VAR_RESULT, FALSE, Common_EventScript_ShowBagIsFull
|
||||
setflag FLAG_RECEIVED_METEORITE
|
||||
releaseall
|
||||
end
|
||||
|
||||
@@ -36,8 +36,8 @@
|
||||
"movement_range_x": 1,
|
||||
"movement_range_y": 1,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "MtPyre_2F_EventScript_ItemUltraBall",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_ULTRA_BALL",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_MT_PYRE_2F_ULTRA_BALL"
|
||||
},
|
||||
{
|
||||
|
||||
@@ -49,8 +49,8 @@
|
||||
"movement_range_x": 1,
|
||||
"movement_range_y": 1,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "MtPyre_3F_EventScript_ItemSuperRepel",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_SUPER_REPEL",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_MT_PYRE_3F_SUPER_REPEL"
|
||||
},
|
||||
{
|
||||
|
||||
@@ -36,8 +36,8 @@
|
||||
"movement_range_x": 1,
|
||||
"movement_range_y": 1,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "MtPyre_4F_EventScript_ItemSeaIncense",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_SEA_INCENSE",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_MT_PYRE_4F_SEA_INCENSE"
|
||||
}
|
||||
],
|
||||
|
||||
@@ -36,8 +36,8 @@
|
||||
"movement_range_x": 1,
|
||||
"movement_range_y": 1,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "MtPyre_5F_EventScript_ItemLaxIncense",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_LAX_INCENSE",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_MT_PYRE_5F_LAX_INCENSE"
|
||||
}
|
||||
],
|
||||
|
||||
@@ -36,8 +36,8 @@
|
||||
"movement_range_x": 1,
|
||||
"movement_range_y": 1,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "MtPyre_6F_EventScript_ItemTMShadowBall",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_TM_SHADOW_BALL",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_MT_PYRE_6F_TM_SHADOW_BALL"
|
||||
},
|
||||
{
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
"movement_range_x": 0,
|
||||
"movement_range_y": 0,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "MtPyre_Exterior_EventScript_ItemMaxPotion",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_MAX_POTION",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_MT_PYRE_EXTERIOR_MAX_POTION"
|
||||
},
|
||||
{
|
||||
@@ -36,8 +36,8 @@
|
||||
"movement_range_x": 0,
|
||||
"movement_range_y": 0,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "MtPyre_Exterior_EventScript_ItemTMSkillSwap",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_TM_SKILL_SWAP",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_MT_PYRE_EXTERIOR_TM_SKILL_SWAP"
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
"movement_range_x": 0,
|
||||
"movement_range_y": 0,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "NewMauville_Inside_EventScript_ItemUltraBall",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_ULTRA_BALL",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_NEW_MAUVILLE_ULTRA_BALL"
|
||||
},
|
||||
{
|
||||
@@ -36,8 +36,8 @@
|
||||
"movement_range_x": 0,
|
||||
"movement_range_y": 0,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "NewMauville_Inside_EventScript_ItemEscapeRope",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_ESCAPE_ROPE",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_NEW_MAUVILLE_ESCAPE_ROPE"
|
||||
},
|
||||
{
|
||||
@@ -49,8 +49,8 @@
|
||||
"movement_range_x": 1,
|
||||
"movement_range_y": 1,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "NewMauville_Inside_EventScript_ItemThunderStone",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_THUNDER_STONE",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_NEW_MAUVILLE_THUNDER_STONE"
|
||||
},
|
||||
{
|
||||
@@ -62,8 +62,8 @@
|
||||
"movement_range_x": 1,
|
||||
"movement_range_y": 1,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "NewMauville_Inside_EventScript_ItemFullHeal",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_FULL_HEAL",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_NEW_MAUVILLE_FULL_HEAL"
|
||||
},
|
||||
{
|
||||
@@ -75,8 +75,8 @@
|
||||
"movement_range_x": 1,
|
||||
"movement_range_y": 1,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "NewMauville_Inside_EventScript_ItemParalyzeHeal",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_PARALYZE_HEAL",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_NEW_MAUVILLE_PARALYZE_HEAL"
|
||||
},
|
||||
{
|
||||
|
||||
@@ -99,8 +99,8 @@
|
||||
"movement_range_x": 0,
|
||||
"movement_range_y": 0,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "PetalburgCity_EventScript_ItemMaxRevive",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_MAX_REVIVE",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_PETALBURG_CITY_MAX_REVIVE"
|
||||
},
|
||||
{
|
||||
@@ -112,8 +112,8 @@
|
||||
"movement_range_x": 0,
|
||||
"movement_range_y": 0,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "PetalburgCity_EventScript_ItemEther",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_ETHER",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_PETALBURG_CITY_ETHER"
|
||||
},
|
||||
{
|
||||
|
||||
@@ -75,8 +75,8 @@
|
||||
"movement_range_x": 0,
|
||||
"movement_range_y": 0,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "PetalburgWoods_EventScript_ItemGreatBall",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_GREAT_BALL",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_PETALBURG_WOODS_GREAT_BALL"
|
||||
},
|
||||
{
|
||||
@@ -88,8 +88,8 @@
|
||||
"movement_range_x": 0,
|
||||
"movement_range_y": 0,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "PetalburgWoods_EventScript_ItemXAttack",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_X_ATTACK",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_PETALBURG_WOODS_X_ATTACK"
|
||||
},
|
||||
{
|
||||
@@ -101,8 +101,8 @@
|
||||
"movement_range_x": 0,
|
||||
"movement_range_y": 0,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "PetalburgWoods_EventScript_ItemEther",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_ETHER",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_PETALBURG_WOODS_ETHER"
|
||||
},
|
||||
{
|
||||
@@ -166,8 +166,8 @@
|
||||
"movement_range_x": 1,
|
||||
"movement_range_y": 1,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "PetalburgWoods_EventScript_ItemParalyzeHeal",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_PARALYZE_HEAL",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_PETALBURG_WOODS_PARALYZE_HEAL"
|
||||
},
|
||||
{
|
||||
|
||||
@@ -99,8 +99,8 @@
|
||||
"movement_range_x": 0,
|
||||
"movement_range_y": 0,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "Route102_EventScript_ItemPotion",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_POTION",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_ROUTE_102_POTION"
|
||||
},
|
||||
{
|
||||
|
||||
@@ -190,8 +190,8 @@
|
||||
"movement_range_x": 1,
|
||||
"movement_range_y": 1,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "Route103_EventScript_ItemGuardSpec",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_GUARD_SPEC",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_ROUTE_103_GUARD_SPEC"
|
||||
},
|
||||
{
|
||||
@@ -281,8 +281,8 @@
|
||||
"movement_range_x": 1,
|
||||
"movement_range_y": 1,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "Route103_EventScript_ItemPPUp",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_PP_UP",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_ROUTE_103_PP_UP"
|
||||
}
|
||||
],
|
||||
|
||||
@@ -299,8 +299,8 @@
|
||||
"movement_range_x": 0,
|
||||
"movement_range_y": 0,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "Route104_EventScript_ItemPPUp",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_PP_UP",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_ROUTE_104_PP_UP"
|
||||
},
|
||||
{
|
||||
@@ -377,8 +377,8 @@
|
||||
"movement_range_x": 1,
|
||||
"movement_range_y": 1,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "Route104_EventScript_ItemPokeBall",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_POKE_BALL",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_ROUTE_104_POKE_BALL"
|
||||
},
|
||||
{
|
||||
@@ -403,8 +403,8 @@
|
||||
"movement_range_x": 1,
|
||||
"movement_range_y": 1,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "Route104_EventScript_ItemXAccuracy",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_X_ACCURACY",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_ROUTE_104_X_ACCURACY"
|
||||
},
|
||||
{
|
||||
@@ -429,8 +429,8 @@
|
||||
"movement_range_x": 1,
|
||||
"movement_range_y": 1,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "Route104_EventScript_ItemPotion",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_POTION",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_ROUTE_104_POTION"
|
||||
},
|
||||
{
|
||||
|
||||
@@ -74,6 +74,7 @@ Route104_PrettyPetalFlowerShop_EventScript_WailmerPailGirl::
|
||||
Route104_PrettyPetalFlowerShop_EventScript_GiveWailmerPail::
|
||||
msgbox Route104_PrettyPetalFlowerShop_Text_YouCanHaveThis, MSGBOX_DEFAULT
|
||||
giveitem ITEM_WAILMER_PAIL
|
||||
goto_if_eq VAR_RESULT, FALSE, Common_EventScript_ShowBagIsFull
|
||||
msgbox Route104_PrettyPetalFlowerShop_Text_WailmerPailExplanation, MSGBOX_DEFAULT
|
||||
setflag FLAG_RECEIVED_WAILMER_PAIL
|
||||
release
|
||||
|
||||
@@ -91,8 +91,8 @@
|
||||
"movement_range_x": 0,
|
||||
"movement_range_y": 0,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "Route105_EventScript_ItemIron",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_IRON",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_ROUTE_105_IRON"
|
||||
},
|
||||
{
|
||||
|
||||
@@ -86,8 +86,8 @@
|
||||
"movement_range_x": 0,
|
||||
"movement_range_y": 0,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "Route106_EventScript_ItemProtein",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_PROTEIN",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_ROUTE_106_PROTEIN"
|
||||
}
|
||||
],
|
||||
|
||||
@@ -112,8 +112,8 @@
|
||||
"movement_range_x": 1,
|
||||
"movement_range_y": 1,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "Route108_EventScript_ItemStarPiece",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_STAR_PIECE",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_ROUTE_108_STAR_PIECE"
|
||||
}
|
||||
],
|
||||
|
||||
@@ -151,8 +151,8 @@
|
||||
"movement_range_x": 0,
|
||||
"movement_range_y": 0,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "Route109_EventScript_ItemPPUp",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_PP_UP",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_ROUTE_109_PP_UP"
|
||||
},
|
||||
{
|
||||
@@ -320,8 +320,8 @@
|
||||
"movement_range_x": 1,
|
||||
"movement_range_y": 1,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "Route109_EventScript_ItemPotion",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_POTION",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_ROUTE_109_POTION"
|
||||
},
|
||||
{
|
||||
|
||||
@@ -273,8 +273,8 @@
|
||||
"movement_range_x": 0,
|
||||
"movement_range_y": 0,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "Route110_EventScript_ItemDireHit",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_DIRE_HIT",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_ROUTE_110_DIRE_HIT"
|
||||
},
|
||||
{
|
||||
@@ -286,8 +286,8 @@
|
||||
"movement_range_x": 0,
|
||||
"movement_range_y": 0,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "Route110_EventScript_ItemRareCandy",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_RARE_CANDY",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_ROUTE_110_RARE_CANDY"
|
||||
},
|
||||
{
|
||||
@@ -481,8 +481,8 @@
|
||||
"movement_range_x": 1,
|
||||
"movement_range_y": 1,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "Route110_EventScript_ItemElixir",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_ELIXIR",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_ROUTE_110_ELIXIR"
|
||||
},
|
||||
{
|
||||
|
||||
@@ -179,8 +179,8 @@
|
||||
"movement_range_x": 0,
|
||||
"movement_range_y": 0,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "Route110_TrickHousePuzzle1_EventScript_ItemOrangeMail",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_ORANGE_MAIL",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_TRICK_HOUSE_PUZZLE_1_ORANGE_MAIL"
|
||||
},
|
||||
{
|
||||
|
||||
@@ -62,8 +62,8 @@
|
||||
"movement_range_x": 0,
|
||||
"movement_range_y": 0,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "Route110_TrickHousePuzzle2_EventScript_ItemWaveMail",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_WAVE_MAIL",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_TRICK_HOUSE_PUZZLE_2_WAVE_MAIL"
|
||||
},
|
||||
{
|
||||
@@ -75,8 +75,8 @@
|
||||
"movement_range_x": 0,
|
||||
"movement_range_y": 0,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "Route110_TrickHousePuzzle2_EventScript_ItemHarborMail",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_HARBOR_MAIL",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_TRICK_HOUSE_PUZZLE_2_HARBOR_MAIL"
|
||||
}
|
||||
],
|
||||
|
||||
@@ -62,8 +62,8 @@
|
||||
"movement_range_x": 0,
|
||||
"movement_range_y": 0,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "Route110_TrickHousePuzzle3_EventScript_ItemWoodMail",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_WOOD_MAIL",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_TRICK_HOUSE_PUZZLE_3_WOOD_MAIL"
|
||||
},
|
||||
{
|
||||
@@ -75,8 +75,8 @@
|
||||
"movement_range_x": 0,
|
||||
"movement_range_y": 0,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "Route110_TrickHousePuzzle3_EventScript_ItemShadowMail",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_SHADOW_MAIL",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_TRICK_HOUSE_PUZZLE_3_SHADOW_MAIL"
|
||||
},
|
||||
{
|
||||
|
||||
@@ -62,8 +62,8 @@
|
||||
"movement_range_x": 0,
|
||||
"movement_range_y": 0,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "Route110_TrickHousePuzzle4_EventScript_ItemMechMail",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_MECH_MAIL",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_TRICK_HOUSE_PUZZLE_4_MECH_MAIL"
|
||||
},
|
||||
{
|
||||
|
||||
@@ -62,8 +62,8 @@
|
||||
"movement_range_x": 0,
|
||||
"movement_range_y": 0,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "Route110_TrickHousePuzzle6_EventScript_ItemGlitterMail",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_GLITTER_MAIL",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_TRICK_HOUSE_PUZZLE_6_GLITTER_MAIL"
|
||||
}
|
||||
],
|
||||
|
||||
@@ -62,8 +62,8 @@
|
||||
"movement_range_x": 0,
|
||||
"movement_range_y": 0,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "Route110_TrickHousePuzzle7_EventScript_ItemTropicMail",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_TROPIC_MAIL",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_TRICK_HOUSE_PUZZLE_7_TROPIC_MAIL"
|
||||
},
|
||||
{
|
||||
|
||||
@@ -62,8 +62,8 @@
|
||||
"movement_range_x": 0,
|
||||
"movement_range_y": 0,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "Route110_TrickHousePuzzle8_EventScript_ItemBeadMail",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_BEAD_MAIL",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_TRICK_HOUSE_PUZZLE_8_BEAD_MAIL"
|
||||
}
|
||||
],
|
||||
|
||||
@@ -260,8 +260,8 @@
|
||||
"movement_range_x": 0,
|
||||
"movement_range_y": 0,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "Route111_EventScript_ItemTMSandstorm",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_TM_SANDSTORM",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_ROUTE_111_TM_SANDSTORM"
|
||||
},
|
||||
{
|
||||
@@ -351,8 +351,8 @@
|
||||
"movement_range_x": 0,
|
||||
"movement_range_y": 0,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "Route111_EventScript_ItemStardust",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_STARDUST",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_ROUTE_111_STARDUST"
|
||||
},
|
||||
{
|
||||
@@ -364,8 +364,8 @@
|
||||
"movement_range_x": 0,
|
||||
"movement_range_y": 0,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "Route111_EventScript_ItemHPUp",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_HP_UP",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_ROUTE_111_HP_UP"
|
||||
},
|
||||
{
|
||||
@@ -572,8 +572,8 @@
|
||||
"movement_range_x": 1,
|
||||
"movement_range_y": 1,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "Route111_EventScript_ItemElixir",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_ELIXIR",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_ROUTE_111_ELIXIR"
|
||||
},
|
||||
{
|
||||
|
||||
@@ -182,8 +182,8 @@
|
||||
"movement_range_x": 0,
|
||||
"movement_range_y": 0,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "Route112_EventScript_ItemNugget",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_NUGGET",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_ROUTE_112_NUGGET"
|
||||
},
|
||||
{
|
||||
|
||||
@@ -104,8 +104,8 @@
|
||||
"movement_range_x": 0,
|
||||
"movement_range_y": 0,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "Route113_EventScript_ItemMaxEther",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_MAX_ETHER",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_ROUTE_113_MAX_ETHER"
|
||||
},
|
||||
{
|
||||
@@ -117,8 +117,8 @@
|
||||
"movement_range_x": 0,
|
||||
"movement_range_y": 0,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "Route113_EventScript_ItemSuperRepel",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_SUPER_REPEL",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_ROUTE_113_SUPER_REPEL"
|
||||
},
|
||||
{
|
||||
@@ -182,8 +182,8 @@
|
||||
"movement_range_x": 1,
|
||||
"movement_range_y": 1,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "Route113_EventScript_ItemHyperPotion",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_HYPER_POTION",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_ROUTE_113_HYPER_POTION"
|
||||
},
|
||||
{
|
||||
|
||||
@@ -28,6 +28,7 @@ Route113_GlassWorkshop_EventScript_GlassWorker::
|
||||
goto_if_eq VAR_GLASS_WORKSHOP_STATE, 1, Route113_GlassWorkshop_EventScript_ExplainSootSack
|
||||
msgbox Route113_GlassWorkshop_Text_GoCollectAshWithThis, MSGBOX_DEFAULT
|
||||
giveitem ITEM_SOOT_SACK
|
||||
goto_if_eq VAR_RESULT, FALSE, Common_EventScript_ShowBagIsFull
|
||||
setvar VAR_GLASS_WORKSHOP_STATE, 1
|
||||
msgbox Route113_GlassWorkshop_Text_ExplainSootSack, MSGBOX_DEFAULT
|
||||
release
|
||||
|
||||
@@ -138,8 +138,8 @@
|
||||
"movement_range_x": 0,
|
||||
"movement_range_y": 0,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "Route114_EventScript_ItemRareCandy",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_RARE_CANDY",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_ROUTE_114_RARE_CANDY"
|
||||
},
|
||||
{
|
||||
@@ -151,8 +151,8 @@
|
||||
"movement_range_x": 0,
|
||||
"movement_range_y": 0,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "Route114_EventScript_ItemProtein",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_PROTEIN",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_ROUTE_114_PROTEIN"
|
||||
},
|
||||
{
|
||||
@@ -359,8 +359,8 @@
|
||||
"movement_range_x": 1,
|
||||
"movement_range_y": 1,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "Route114_EventScript_ItemEnergyPowder",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_ENERGY_POWDER",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_ROUTE_114_ENERGY_POWDER"
|
||||
},
|
||||
{
|
||||
|
||||
@@ -151,8 +151,8 @@
|
||||
"movement_range_x": 0,
|
||||
"movement_range_y": 0,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "Route115_EventScript_ItemSuperPotion",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_SUPER_POTION",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_ROUTE_115_SUPER_POTION"
|
||||
},
|
||||
{
|
||||
@@ -164,8 +164,8 @@
|
||||
"movement_range_x": 0,
|
||||
"movement_range_y": 0,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "Route115_EventScript_ItemTMFocusPunch",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_TM_FOCUS_PUNCH",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_ROUTE_115_TM_FOCUS_PUNCH"
|
||||
},
|
||||
{
|
||||
@@ -177,8 +177,8 @@
|
||||
"movement_range_x": 0,
|
||||
"movement_range_y": 0,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "Route115_EventScript_ItemIron",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_IRON",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_ROUTE_115_IRON"
|
||||
},
|
||||
{
|
||||
@@ -229,8 +229,8 @@
|
||||
"movement_range_x": 1,
|
||||
"movement_range_y": 1,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "Route115_EventScript_ItemGreatBall",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_GREAT_BALL",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_ROUTE_115_GREAT_BALL"
|
||||
},
|
||||
{
|
||||
@@ -307,8 +307,8 @@
|
||||
"movement_range_x": 1,
|
||||
"movement_range_y": 1,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "Route115_EventScript_ItemPPUp",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_PP_UP",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_ROUTE_115_PP_UP"
|
||||
},
|
||||
{
|
||||
@@ -320,8 +320,8 @@
|
||||
"movement_range_x": 1,
|
||||
"movement_range_y": 1,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "Route115_EventScript_ItemHealPowder",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_HEAL_POWDER",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_ROUTE_115_HEAL_POWDER"
|
||||
}
|
||||
],
|
||||
|
||||
@@ -112,8 +112,8 @@
|
||||
"movement_range_x": 0,
|
||||
"movement_range_y": 0,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "Route116_EventScript_ItemEther",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_ETHER",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_ROUTE_116_ETHER"
|
||||
},
|
||||
{
|
||||
@@ -125,8 +125,8 @@
|
||||
"movement_range_x": 0,
|
||||
"movement_range_y": 0,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "Route116_EventScript_ItemRepel",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_REPEL",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_ROUTE_116_REPEL"
|
||||
},
|
||||
{
|
||||
@@ -216,8 +216,8 @@
|
||||
"movement_range_x": 0,
|
||||
"movement_range_y": 0,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "Route116_EventScript_ItemHPUp",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_HP_UP",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_ROUTE_116_HP_UP"
|
||||
},
|
||||
{
|
||||
@@ -281,8 +281,8 @@
|
||||
"movement_range_x": 1,
|
||||
"movement_range_y": 1,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "Route116_EventScript_ItemXSpecial",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_X_SPECIAL",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_ROUTE_116_X_SPECIAL"
|
||||
},
|
||||
{
|
||||
@@ -346,8 +346,8 @@
|
||||
"movement_range_x": 1,
|
||||
"movement_range_y": 1,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "Route116_EventScript_ItemPotion",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_POTION",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_ROUTE_116_POTION"
|
||||
},
|
||||
{
|
||||
|
||||
@@ -203,8 +203,8 @@
|
||||
"movement_range_x": 0,
|
||||
"movement_range_y": 0,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "Route117_EventScript_ItemGreatBall",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_GREAT_BALL",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_ROUTE_117_GREAT_BALL"
|
||||
},
|
||||
{
|
||||
@@ -229,8 +229,8 @@
|
||||
"movement_range_x": 0,
|
||||
"movement_range_y": 0,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "Route117_EventScript_ItemRevive",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_REVIVE",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_ROUTE_117_REVIVE"
|
||||
},
|
||||
{
|
||||
|
||||
@@ -286,8 +286,8 @@
|
||||
"movement_range_x": 1,
|
||||
"movement_range_y": 1,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "Route118_EventScript_ItemHyperPotion",
|
||||
"trainer_sight_or_berry_tree_id": "ITEM_HYPER_POTION",
|
||||
"script": "Common_EventScript_FindItem",
|
||||
"flag": "FLAG_ITEM_ROUTE_118_HYPER_POTION"
|
||||
},
|
||||
{
|
||||
|
||||
@@ -34,6 +34,7 @@ Route118_EventScript_GoodRodFisherman::
|
||||
Route118_EventScript_ReceiveGoodRod::
|
||||
msgbox Route118_Text_IdenticalMindsTakeThis, MSGBOX_DEFAULT
|
||||
giveitem ITEM_GOOD_ROD
|
||||
goto_if_eq VAR_RESULT, FALSE, Common_EventScript_ShowBagIsFull
|
||||
setflag FLAG_RECEIVED_GOOD_ROD
|
||||
msgbox Route118_Text_TryYourLuckFishing, MSGBOX_DEFAULT
|
||||
release
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user