31-03-25 Master merge
This commit is contained in:
commit
ccebebf64f
@ -23,9 +23,10 @@ body:
|
||||
label: Version
|
||||
description: What version of pokeemerald-expansion are you using as a base?
|
||||
options:
|
||||
- 1.11.0 (Latest release)
|
||||
- 1.11.1 (Latest release)
|
||||
- master (default, unreleased bugfixes)
|
||||
- upcoming (Edge)
|
||||
- 1.11.0
|
||||
- 1.10.3
|
||||
- 1.10.2
|
||||
- 1.10.1
|
||||
|
||||
@ -23,9 +23,10 @@ body:
|
||||
label: Version
|
||||
description: What version of pokeemerald-expansion are you using as a base?
|
||||
options:
|
||||
- 1.11.0 (Latest release)
|
||||
- 1.11.1 (Latest release)
|
||||
- master (default, unreleased bugfixes)
|
||||
- upcoming (Edge)
|
||||
- 1.11.0
|
||||
- 1.10.3
|
||||
- 1.10.2
|
||||
- 1.10.1
|
||||
|
||||
3
.github/ISSUE_TEMPLATE/04_other_errors.yaml
vendored
3
.github/ISSUE_TEMPLATE/04_other_errors.yaml
vendored
@ -23,9 +23,10 @@ body:
|
||||
label: Version
|
||||
description: What version of pokeemerald-expansion are you using as a base?
|
||||
options:
|
||||
- 1.11.0 (Latest release)
|
||||
- 1.11.1 (Latest release)
|
||||
- master (default, unreleased bugfixes)
|
||||
- upcoming (Edge)
|
||||
- 1.11.0
|
||||
- 1.10.3
|
||||
- 1.10.2
|
||||
- 1.10.1
|
||||
|
||||
27
.github/workflows/labels.yml
vendored
Normal file
27
.github/workflows/labels.yml
vendored
Normal file
@ -0,0 +1,27 @@
|
||||
name: Labels
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
types: [opened, labeled, unlabeled]
|
||||
|
||||
jobs:
|
||||
label:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: check labels
|
||||
uses: mheap/github-action-required-labels@v5
|
||||
with:
|
||||
mode: minimum
|
||||
count: 1
|
||||
labels: |
|
||||
General
|
||||
category: ability
|
||||
category: battle-ai
|
||||
category: battle-mechanic
|
||||
category: battle-tests
|
||||
category: items
|
||||
category: move animation
|
||||
category: move effect
|
||||
category: overworld
|
||||
category: pokemon
|
||||
category: sprite-issue
|
||||
@ -10,7 +10,7 @@ The main advantage of using vanilla pokeemerald as a base is being able to link
|
||||
If you use pokeemerald-expansion in your hack, please add RHH (Rom Hacking Hideout) to your credits list. Optionally, you can list the version used, so it can help players know what features to expect.
|
||||
You can phrase it as the following:
|
||||
```
|
||||
Based off RHH's pokeemerald-expansion 1.11.0 https://github.com/rh-hideout/pokeemerald-expansion/
|
||||
Based off RHH's pokeemerald-expansion 1.11.1 https://github.com/rh-hideout/pokeemerald-expansion/
|
||||
```
|
||||
|
||||
#### Important: DO NOT use GitHub's "Download Zip" option. Using this option will not download the commit history required to update your expansion version or merge other feature branches. Instead, please read [this guide](https://github.com/Pawkkie/Team-Aquas-Asset-Repo/wiki/The-Basics-of-GitHub) to learn how to fork the repository and clone locally from there.
|
||||
@ -33,7 +33,7 @@ With this, you'll get the latest version of pokeemerald-expansion, plus a couple
|
||||
- You can check in the debug menu's `Utilities -> Expansion Version` option.
|
||||
- If the option is not available, you possibly have version 1.6.2 or older. In that case, please check the [changelogs](docs/CHANGELOG.md) to determine your version based on the features available on your repository.
|
||||
- ***Important:*** If you are several versions behind, we recommend updating one minor version at a time, skipping directly to the latest patch version (eg, 1.5.3 -> 1.6.2 -> 1.7.4 and so on. Check the [online documentation site](https://rh-hideout.github.io/pokeemerald-expansion/CHANGELOG.html) to see the latest versions of each step.)
|
||||
- Once you have your remote set up, run the command `git pull RHH expansion/X.Y.Z`, replacing X, Y and Z with the digits of the respective version you want to update to (eg, to update to 1.9.3, use `git pull RHH expansion/1.9.3`).
|
||||
- Once you have your remote set up, run the command `git pull RHH expansion/X.Y.Z`, replacing X, Y and Z with the digits of the respective version you want to update to (eg, to update to 1.11.1, use `git pull RHH expansion/1.11.1`).
|
||||
- ***Important:*** If you are several versions behind, we recommend updating one minor version at a time, skipping directly to the latest patch version (eg, 1.5.3 -> 1.6.2 -> 1.7.4 and so on)
|
||||
- Alternatively, you can update to unreleased versions of the expansion.
|
||||
- ***master (stable):*** It contains unreleased **bugfixes** that will come in the next patch version. To merge, use `git pull RHH master`.
|
||||
|
||||
@ -1269,7 +1269,7 @@
|
||||
.byte 0xed
|
||||
.endm
|
||||
|
||||
.macro removelightscreenreflect
|
||||
.macro removescreens
|
||||
.byte 0xee
|
||||
.endm
|
||||
|
||||
|
||||
@ -5072,7 +5072,7 @@ BattleScript_EffectBrickBreak::
|
||||
attackstring
|
||||
ppreduce
|
||||
typecalc
|
||||
removelightscreenreflect
|
||||
removescreens
|
||||
critcalc
|
||||
damagecalc
|
||||
adjustdamage
|
||||
@ -7075,7 +7075,7 @@ BattleScript_AnticipationActivates::
|
||||
|
||||
BattleScript_AftermathDmg::
|
||||
pause B_WAIT_TIME_SHORT
|
||||
call BattleScript_AbilityPopUp
|
||||
call BattleScript_AbilityPopUpScripting
|
||||
jumpifability BS_ATTACKER, ABILITY_MAGIC_GUARD, BattleScript_AftermathDmgRet
|
||||
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE
|
||||
healthbarupdate BS_ATTACKER
|
||||
@ -7557,35 +7557,37 @@ BattleScript_MoodyEnd:
|
||||
end3
|
||||
|
||||
BattleScript_EmergencyExit::
|
||||
.if B_ABILITY_POP_UP == TRUE
|
||||
pause 5
|
||||
call BattleScript_AbilityPopUp
|
||||
call BattleScript_AbilityPopUpScripting
|
||||
pause B_WAIT_TIME_LONG
|
||||
BattleScript_EmergencyExitNoPopUp::
|
||||
playanimation BS_TARGET, B_ANIM_SLIDE_OFFSCREEN
|
||||
.endif
|
||||
playanimation BS_SCRIPTING, B_ANIM_SLIDE_OFFSCREEN
|
||||
waitanimation
|
||||
openpartyscreen BS_TARGET, BattleScript_EmergencyExitRet
|
||||
switchoutabilities BS_TARGET
|
||||
openpartyscreen BS_SCRIPTING, BattleScript_EmergencyExitRet
|
||||
switchoutabilities BS_SCRIPTING
|
||||
waitstate
|
||||
switchhandleorder BS_TARGET, 2
|
||||
switchhandleorder BS_SCRIPTING, 2
|
||||
returntoball BS_TARGET, FALSE
|
||||
getswitchedmondata BS_TARGET
|
||||
switchindataupdate BS_TARGET
|
||||
hpthresholds BS_TARGET
|
||||
getswitchedmondata BS_SCRIPTING
|
||||
switchindataupdate BS_SCRIPTING
|
||||
hpthresholds BS_SCRIPTING
|
||||
printstring STRINGID_SWITCHINMON
|
||||
switchinanim BS_TARGET, FALSE, TRUE
|
||||
switchinanim BS_SCRIPTING, FALSE, TRUE
|
||||
waitstate
|
||||
switchineffects BS_TARGET
|
||||
switchineffects BS_SCRIPTING
|
||||
BattleScript_EmergencyExitRet:
|
||||
return
|
||||
|
||||
BattleScript_EmergencyExitWild::
|
||||
.if B_ABILITY_POP_UP == TRUE
|
||||
pause 5
|
||||
call BattleScript_AbilityPopUp
|
||||
call BattleScript_AbilityPopUpScripting
|
||||
pause B_WAIT_TIME_LONG
|
||||
BattleScript_EmergencyExitWildNoPopUp::
|
||||
playanimation BS_TARGET, B_ANIM_SLIDE_OFFSCREEN
|
||||
.endif
|
||||
playanimation BS_SCRIPTING, B_ANIM_SLIDE_OFFSCREEN
|
||||
waitanimation
|
||||
setoutcomeonteleport BS_TARGET
|
||||
setoutcomeonteleport BS_SCRIPTING
|
||||
finishaction
|
||||
return
|
||||
|
||||
|
||||
@ -21,6 +21,7 @@
|
||||
- [How to add new Trainer Slides](tutorials/how_to_new_trainer_slide.md)
|
||||
- [Changelog](./CHANGELOG.md)
|
||||
- [1.11.x]()
|
||||
- [Version 1.11.1](changelogs/1.11.x/1.11.1.md)
|
||||
- [Version 1.11.0](changelogs/1.11.x/1.11.0.md)
|
||||
- [1.10.x]()
|
||||
- [Version 1.10.3](changelogs/1.10.x/1.10.3.md)
|
||||
|
||||
115
docs/changelogs/1.11.x/1.11.1.md
Normal file
115
docs/changelogs/1.11.x/1.11.1.md
Normal file
@ -0,0 +1,115 @@
|
||||
```md
|
||||
## How to update
|
||||
- If you haven't set up a remote, run the command `git remote add RHH https://github.com/rh-hideout/pokeemerald-expansion`.
|
||||
- Once you have your remote set up, run the command `git pull RHH expansion/1.11.1
|
||||
`.
|
||||
```
|
||||
|
||||
|
||||
## 🧬 General 🧬
|
||||
### Added
|
||||
* Added workflow for labels check by @hedara90 in [#6488](https://github.com/rh-hideout/pokeemerald-expansion/pull/6488)
|
||||
|
||||
### Changed
|
||||
* metaprogram.h without global.h by @mrgriffin in [#6469](https://github.com/rh-hideout/pokeemerald-expansion/pull/6469)
|
||||
* Rename removelishtscreenreflect to removescreens by @AlexOn1ine in [#6495](https://github.com/rh-hideout/pokeemerald-expansion/pull/6495)
|
||||
|
||||
### Fixed
|
||||
* Fix Melmetal's weight by @kittenchilly in [#6382](https://github.com/rh-hideout/pokeemerald-expansion/pull/6382)
|
||||
* B_FAST_INTRO_PKMN_TEXT fix by @hedara90 in [#6395](https://github.com/rh-hideout/pokeemerald-expansion/pull/6395)
|
||||
* remove/replace IsAlly leftovers by @cawtds in [#6399](https://github.com/rh-hideout/pokeemerald-expansion/pull/6399)
|
||||
* Increase dex no digits from 3 to 4 by @PCG06 in [#6484](https://github.com/rh-hideout/pokeemerald-expansion/pull/6484)
|
||||
|
||||
## 🗺️ Overworld 🗺️
|
||||
### Changed
|
||||
* Replace Incorrect Slow Stairs Movement with Correct One by @Deokishisu in [#6275](https://github.com/rh-hideout/pokeemerald-expansion/pull/6275)
|
||||
|
||||
### Fixed
|
||||
* Fix compile errors with OW_BATTLE_ONLY_FORMS set to FALSE by @hedara90 in [#6400](https://github.com/rh-hideout/pokeemerald-expansion/pull/6400)
|
||||
* Include Missed `GetInteractedMetatileScript` Entries for Mart & Center Signs by @Deokishisu in [#6269](https://github.com/rh-hideout/pokeemerald-expansion/pull/6269)
|
||||
* Fix DexNav search level by @cawtds in [#6421](https://github.com/rh-hideout/pokeemerald-expansion/pull/6421)
|
||||
* Hide in-battle types from Union Room trade request by @aronson in [#6489](https://github.com/rh-hideout/pokeemerald-expansion/pull/6489)
|
||||
|
||||
## 🐉 Pokémon 🐉
|
||||
### Fixed
|
||||
* Fixed Zacian/Zamazenta learning Iron head while already knowing by @hedara90, @wiz1989 reported the issue, in [#6365](https://github.com/rh-hideout/pokeemerald-expansion/pull/6365)
|
||||
* Fix roamers having 0 hp on repeat encounters by @danaYatsuta in [#6366](https://github.com/rh-hideout/pokeemerald-expansion/pull/6366)
|
||||
* Fixed unfusion of traded materials by @hedara90, @mrgriffin found the issue, in [#6415](https://github.com/rh-hideout/pokeemerald-expansion/pull/6415)
|
||||
|
||||
## ⚔️ Battle General ⚔️
|
||||
### Changed
|
||||
* Fix Red Card overwriting gBattlerAttacker by @ghoulslash in [#6376](https://github.com/rh-hideout/pokeemerald-expansion/pull/6376)
|
||||
* Fixes Magic Coat message when move is bounced back by @AlexOn1ine in [#6419](https://github.com/rh-hideout/pokeemerald-expansion/pull/6419)
|
||||
|
||||
### Fixed
|
||||
* Reorder Dancer activation by @PhallenTree in [#6379](https://github.com/rh-hideout/pokeemerald-expansion/pull/6379)
|
||||
* Fixes crash damage move against absorbing abilities by @AlexOn1ine in [#6361](https://github.com/rh-hideout/pokeemerald-expansion/pull/6361)
|
||||
* Fixes gimmick icon flying off the screen by @PhallenTree in [#6401](https://github.com/rh-hideout/pokeemerald-expansion/pull/6401)
|
||||
* Fixed Parental Bond with two-turn attacks by @hedara90 in [#6408](https://github.com/rh-hideout/pokeemerald-expansion/pull/6408)
|
||||
* Wrong argument usage in `CalcCritChanceStage` by @AlexOn1ine in [#6429](https://github.com/rh-hideout/pokeemerald-expansion/pull/6429)
|
||||
* Fixes Neutralizing Gas Exits, Weather Abilities and Terrain Effects order by @PhallenTree in [#6435](https://github.com/rh-hideout/pokeemerald-expansion/pull/6435)
|
||||
* Fixes hazards not respecting tera types by @AlexOn1ine in [#6431](https://github.com/rh-hideout/pokeemerald-expansion/pull/6431)
|
||||
* Fixes dynamax reversion when ejected out + anim fix by @AlexOn1ine in [#6416](https://github.com/rh-hideout/pokeemerald-expansion/pull/6416)
|
||||
* Fixes negative priority being blocked by dazzling abilities by @AlexOn1ine in [#6433](https://github.com/rh-hideout/pokeemerald-expansion/pull/6433)
|
||||
* Fixes Cotton Spore failing if one of the targets blocks it by @AlexOn1ine in [#6418](https://github.com/rh-hideout/pokeemerald-expansion/pull/6418)
|
||||
* Fixes Toxic Spikes Absorbed message by @PhallenTree in [#6448](https://github.com/rh-hideout/pokeemerald-expansion/pull/6448)
|
||||
* Fixes Cheek Pouch mutating damage by @AlexOn1ine in [#6466](https://github.com/rh-hideout/pokeemerald-expansion/pull/6466)
|
||||
* Fixes choice move locking at the wrong time by @AlexOn1ine in [#6467](https://github.com/rh-hideout/pokeemerald-expansion/pull/6467)
|
||||
* Fixes protective pads against Protects secondary effects by @AlexOn1ine in [#6474](https://github.com/rh-hideout/pokeemerald-expansion/pull/6474)
|
||||
* Fixes clear body type effect and clear amulet against protect effects by @AlexOn1ine in [#6482](https://github.com/rh-hideout/pokeemerald-expansion/pull/6482)
|
||||
* Fixes Aftermath ability popup message by @AlexOn1ine in [#6491](https://github.com/rh-hideout/pokeemerald-expansion/pull/6491)
|
||||
* Fixes Emergency Exit and Eject Pack by @AlexOn1ine in [#6459](https://github.com/rh-hideout/pokeemerald-expansion/pull/6459)
|
||||
* Fixes Hospitality not being blocked by Heal Block by @AlexOn1ine in [#6494](https://github.com/rh-hideout/pokeemerald-expansion/pull/6494)
|
||||
* Fixes timesGotHit not increasing on forced switch out by @AlexOn1ine in [#6493](https://github.com/rh-hideout/pokeemerald-expansion/pull/6493)
|
||||
* Fixes Destiny Bond against Dynamax no failing by @AlexOn1ine in [#6501](https://github.com/rh-hideout/pokeemerald-expansion/pull/6501)
|
||||
|
||||
## 🤹 Moves 🤹
|
||||
### Fixed
|
||||
* Fixed Ivy Cudgel types with type changes by @hedara90 in [#6369](https://github.com/rh-hideout/pokeemerald-expansion/pull/6369)
|
||||
* Adds move description battle config by @AlexOn1ine in [#6364](https://github.com/rh-hideout/pokeemerald-expansion/pull/6364)
|
||||
* Fix Jet Punch in isolated tests by @hedara90 in [#6461](https://github.com/rh-hideout/pokeemerald-expansion/pull/6461)
|
||||
* Sucker punch vs struggle by @hedara90 in [#6475](https://github.com/rh-hideout/pokeemerald-expansion/pull/6475)
|
||||
|
||||
## 🤖 Battle AI 🤖
|
||||
### Changed
|
||||
* Update Battle Debug menu with new AI flags by @kittenchilly in [#6444](https://github.com/rh-hideout/pokeemerald-expansion/pull/6444)
|
||||
|
||||
### Fixed
|
||||
* Fixed AI_FLAG_CHECK_VIABILITY changing the toxic counter in some cases by @hedara90, @iriv24 discovered the issue, in [#6402](https://github.com/rh-hideout/pokeemerald-expansion/pull/6402)
|
||||
* Fix Focus Sash being considered in switch AI's hits to KO calcs by @Pawkkie in [#6436](https://github.com/rh-hideout/pokeemerald-expansion/pull/6436)
|
||||
* AI gimmick check changed from checking trainer data to a BattleStruct field by @hedara90 in [#6478](https://github.com/rh-hideout/pokeemerald-expansion/pull/6478)
|
||||
* Fix hit escape ace mon switching by @Pawkkie and @wiz1989, @AlexOn1ine in [#6498](https://github.com/rh-hideout/pokeemerald-expansion/pull/6498)
|
||||
|
||||
## 🧹 Other Cleanup 🧹
|
||||
* Update AI_TryTo2HKO comment by @Pawkkie in [#6349](https://github.com/rh-hideout/pokeemerald-expansion/pull/6349)
|
||||
* Fixing grammar of Berry Tree strings by @surskitty in [#6355](https://github.com/rh-hideout/pokeemerald-expansion/pull/6355)
|
||||
- Berry trees berries are no longer erroneously plural.
|
||||
* Move category test cleanup by @hedara90 in [#6447](https://github.com/rh-hideout/pokeemerald-expansion/pull/6447)
|
||||
* Fixes Magic Coat message when move is bounced back by @AlexOn1ine in [#6419](https://github.com/rh-hideout/pokeemerald-expansion/pull/6419)
|
||||
* Update Battle Debug menu with new AI flags by @kittenchilly in [#6444](https://github.com/rh-hideout/pokeemerald-expansion/pull/6444)
|
||||
* Rename removelishtscreenreflect to removescreens by @AlexOn1ine in [#6495](https://github.com/rh-hideout/pokeemerald-expansion/pull/6495)
|
||||
|
||||
## 🧪 Test Runner 🧪
|
||||
### Changed
|
||||
* Fix Red Card overwriting gBattlerAttacker by @ghoulslash in [#6376](https://github.com/rh-hideout/pokeemerald-expansion/pull/6376)
|
||||
* Move category test cleanup by @hedara90 in [#6447](https://github.com/rh-hideout/pokeemerald-expansion/pull/6447)
|
||||
* Changed KNOWN_FAILING test by @hedara90 in [#6492](https://github.com/rh-hideout/pokeemerald-expansion/pull/6492)
|
||||
|
||||
### Fixed
|
||||
* Fixes Known Failing Mold Breaker Sleep Clause test by @PhallenTree in [#6434](https://github.com/rh-hideout/pokeemerald-expansion/pull/6434)
|
||||
* Made memory integrity checks run betweeen PARAMETRIZE runs by @hedara90 and @mrgriffin in [#6462](https://github.com/rh-hideout/pokeemerald-expansion/pull/6462)
|
||||
|
||||
## 📚 Documentation 📚
|
||||
* Fixed a missing ) in trainers.party comment block. by @RubyRaven6 in [#6367](https://github.com/rh-hideout/pokeemerald-expansion/pull/6367)
|
||||
* Update README.md for contest src link by @lwelyk in [#6375](https://github.com/rh-hideout/pokeemerald-expansion/pull/6375)
|
||||
|
||||
## New Contributors
|
||||
* @RubyRaven6 made their first contribution in [#6367](https://github.com/rh-hideout/pokeemerald-expansion/pull/6367)
|
||||
* @lwelyk made their first contribution in [#6375](https://github.com/rh-hideout/pokeemerald-expansion/pull/6375)
|
||||
* @danaYatsuta made their first contribution in [#6366](https://github.com/rh-hideout/pokeemerald-expansion/pull/6366)
|
||||
|
||||
**Full Changelog**: https://github.com/rh-hideout/pokeemerald-expansion/compare/expansion/1.11.0...expansion/1.11.1
|
||||
|
||||
|
||||
<!--Last PR: 6501-->
|
||||
<!--Used to keep track of the last PR merged in case new ones come in before the changelog is done.-->
|
||||
@ -130,10 +130,9 @@ struct DisableStruct
|
||||
u8 boosterEnergyActivates:1;
|
||||
u8 roostActive:1;
|
||||
u8 unburdenActive:1;
|
||||
u8 startEmergencyExit:1;
|
||||
u8 neutralizingGas:1;
|
||||
u8 iceFaceActivationPrevention:1; // fixes hit escape move edge case
|
||||
u8 padding:2;
|
||||
u8 padding:3;
|
||||
};
|
||||
|
||||
// Fully Cleared each turn after end turn effects are done. A few things are cleared before end turn effects
|
||||
@ -809,9 +808,8 @@ struct BattleStruct
|
||||
u32 stellarBoostFlags[NUM_BATTLE_SIDES]; // stored as a bitfield of flags for all types for each side
|
||||
u8 monCausingSleepClause[NUM_BATTLE_SIDES]; // Stores which pokemon on a given side is causing Sleep Clause to be active as the mon's index in the party
|
||||
u8 additionalEffectsCounter:4; // A counter for the additionalEffects applied by the current move in Cmd_setadditionaleffects
|
||||
u8 redCardActivates:1;
|
||||
u8 cheekPouchActivated:1;
|
||||
u8 padding2:1; // padding in the middle so pursuit fields are together
|
||||
u8 padding2:3;
|
||||
u8 pursuitStoredSwitch; // Stored id for the Pursuit target's switch
|
||||
s32 battlerExpReward;
|
||||
u16 prevTurnSpecies[MAX_BATTLERS_COUNT]; // Stores species the AI has in play at start of turn
|
||||
|
||||
@ -384,9 +384,7 @@ extern const u8 BattleScript_FriskMsg[];
|
||||
extern const u8 BattleScript_FriskMsgWithPopup[];
|
||||
extern const u8 BattleScript_MoodyActivates[];
|
||||
extern const u8 BattleScript_EmergencyExit[];
|
||||
extern const u8 BattleScript_EmergencyExitNoPopUp[];
|
||||
extern const u8 BattleScript_EmergencyExitWild[];
|
||||
extern const u8 BattleScript_EmergencyExitWildNoPopUp[];
|
||||
extern const u8 BattleScript_CheekPouchActivates[];
|
||||
extern const u8 BattleScript_TotemVar[];
|
||||
extern const u8 BattleScript_TotemFlaredToLife[];
|
||||
|
||||
@ -209,6 +209,7 @@ bool32 AreAllMovesUnusable(u32 battler);
|
||||
u8 GetImprisonedMovesCount(u32 battler, u16 move);
|
||||
u8 DoFieldEndTurnEffects(void);
|
||||
s32 GetDrainedBigRootHp(u32 battler, s32 hp);
|
||||
bool32 IsMagicGuardProtected(u32 battler, u32 ability);
|
||||
u8 DoBattlerEndTurnEffects(void);
|
||||
bool32 HandleWishPerishSongOnTurnEnd(void);
|
||||
bool32 HandleFaintedMonActions(void);
|
||||
@ -354,5 +355,7 @@ void ClearPursuitValuesIfSet(u32 battler);
|
||||
void ClearPursuitValues(void);
|
||||
bool32 HasWeatherEffect(void);
|
||||
bool32 IsMovePowderBlocked(u32 battlerAtk, u32 battlerDef, u32 move);
|
||||
bool32 EmergencyExitCanBeTriggered(u32 battler);
|
||||
u32 RestoreWhiteHerbStats(u32 battler);
|
||||
|
||||
#endif // GUARD_BATTLE_UTIL_H
|
||||
|
||||
@ -274,7 +274,6 @@ enum MoveEndEffects
|
||||
MOVEEND_SYMBIOSIS,
|
||||
MOVEEND_HIT_SWITCH_TARGET,
|
||||
MOVEEND_KINGSROCK, // These item effects will occur each strike of a multi-hit move
|
||||
MOVEEND_NUM_HITS,
|
||||
MOVEEND_SUBSTITUTE,
|
||||
MOVEEND_SKY_DROP_CONFUSE,
|
||||
MOVEEND_UPDATE_LAST_MOVES,
|
||||
@ -286,15 +285,16 @@ enum MoveEndEffects
|
||||
MOVEEND_RAPID_SPIN,
|
||||
MOVEEND_ITEM_EFFECTS_ATTACKER,
|
||||
MOVEEND_MAGICIAN, // Occurs after final multi-hit strike, and after other items/abilities would activate
|
||||
MOVEEND_SHEER_FORCE, // If move is Sheer Force affected, skip until opportunist
|
||||
MOVEEND_SHEER_FORCE, // If move is Sheer Force affected, skip until Eject Pack
|
||||
MOVEEND_RED_CARD, // Red Card triggers before Eject Pack
|
||||
MOVEEND_EJECT_ITEMS,
|
||||
MOVEEND_WHITE_HERB,
|
||||
MOVEEND_EJECT_BUTTON,
|
||||
MOVEEND_LIFEORB_SHELLBELL, // Includes shell bell, throat spray, etc
|
||||
MOVEEND_CHANGED_ITEMS,
|
||||
MOVEEND_PICKPOCKET,
|
||||
MOVEEND_EMERGENCY_EXIT,
|
||||
MOVEEND_EJECT_PACK,
|
||||
MOVEEND_OPPORTUNIST, // Occurs after other stat change items/abilities to try and copy the boosts
|
||||
MOVEEND_PICKPOCKET,
|
||||
MOVEEND_WHITE_HERB,
|
||||
MOVEEND_CHANGED_ITEMS,
|
||||
MOVEEND_SAME_MOVE_TURNS,
|
||||
MOVEEND_CLEAR_BITS,
|
||||
MOVEEND_DANCER,
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
#ifndef GUARD_CONSTANTS_EXPANSION_H
|
||||
#define GUARD_CONSTANTS_EXPANSION_H
|
||||
|
||||
// Last version: 1.11.0
|
||||
// Last version: 1.11.1
|
||||
#define EXPANSION_VERSION_MAJOR 1
|
||||
#define EXPANSION_VERSION_MINOR 12
|
||||
#define EXPANSION_VERSION_PATCH 0
|
||||
|
||||
@ -11,6 +11,7 @@ enum GenConfigTag
|
||||
GEN_CONFIG_MULTI_HIT_CHANCE,
|
||||
GEN_CONFIG_GALE_WINGS,
|
||||
GEN_CONFIG_HEAL_BELL_SOUNDPROOF,
|
||||
GEN_CONFIG_TELEPORT_BEHAVIOR,
|
||||
GEN_CONFIG_COUNT
|
||||
};
|
||||
|
||||
|
||||
@ -14,6 +14,7 @@ static const u8 sGenerationalChanges[GEN_CONFIG_COUNT] =
|
||||
[GEN_CONFIG_MULTI_HIT_CHANCE] = B_MULTI_HIT_CHANCE,
|
||||
[GEN_CONFIG_GALE_WINGS] = B_GALE_WINGS,
|
||||
[GEN_CONFIG_HEAL_BELL_SOUNDPROOF] = B_HEAL_BELL_SOUNDPROOF,
|
||||
[GEN_CONFIG_TELEPORT_BEHAVIOR] = B_TELEPORT_BEHAVIOR,
|
||||
};
|
||||
|
||||
#if TESTING
|
||||
|
||||
@ -306,7 +306,7 @@ extern const u16 gPokedexSearchMenu_Pal[];
|
||||
extern const u32 gBerryCheck_Gfx[];
|
||||
extern const u32 gBerryCheck_Pal[];
|
||||
extern const u32 gBerryTag_Gfx[];
|
||||
extern const u32 gBerryTag_Pal[];
|
||||
extern const u32 gBerryTag_Tilemap[];
|
||||
|
||||
// rayquaza scene gfx
|
||||
extern const u32 gRaySceneDuoFight_Groudon_Gfx[];
|
||||
|
||||
@ -4,11 +4,11 @@
|
||||
|
||||
/* Check if VA_OPT_ is supported by the compiler. GCC's version should be at least 9.5*/
|
||||
#define PP_THIRD_ARG(a,b,c,...) c
|
||||
#define VA_OPT_SUPPORTED_I(...) PP_THIRD_ARG(__VA_OPT__(,),TRUE,FALSE,)
|
||||
#define VA_OPT_SUPPORTED_I(...) PP_THIRD_ARG(__VA_OPT__(,),1,0,)
|
||||
#define VA_OPT_SUPPORTED VA_OPT_SUPPORTED_I(?)
|
||||
|
||||
#if !VA_OPT_SUPPORTED
|
||||
#error ERROR: VA_OPT__ is not supported. Please update your gcc compiler to version 10 or higher
|
||||
#error ERROR: __VA_OPT__ is not supported. Please update your arm-none-eabi-gcc compiler to version 10 or higher
|
||||
#endif // VA_OPT_SUPPORTED
|
||||
|
||||
/* Calls m0/m1/.../m8 depending on how many arguments are passed. */
|
||||
|
||||
@ -20,6 +20,7 @@ void TestRunner_Battle_CheckAiMoveScores(u32 battlerId);
|
||||
void TestRunner_Battle_AISetScore(const char *file, u32 line, u32 battlerId, u32 moveIndex, s32 score);
|
||||
void TestRunner_Battle_AIAdjustScore(const char *file, u32 line, u32 battlerId, u32 moveIndex, s32 score);
|
||||
void TestRunner_Battle_InvalidNoHPMon(u32 battlerId, u32 partyIndex);
|
||||
void TestRunner_CheckMemory(void);
|
||||
|
||||
void TestRunner_Battle_CheckBattleRecordActionType(u32 battlerId, u32 recordIndex, u32 actionType);
|
||||
|
||||
|
||||
@ -1888,7 +1888,7 @@ static inline bool32 IsFreeSwitch(enum SwitchType switchType, u32 battlerSwitchi
|
||||
// Switch out effects
|
||||
if (!IsDoubleBattle()) // Not handling doubles' additional complexity
|
||||
{
|
||||
if (IsSwitchOutEffect(GetMoveEffect(gLastUsedMove)) && movedSecond)
|
||||
if (IsSwitchOutEffect(GetMoveEffect(gCurrentMove)) && movedSecond)
|
||||
return TRUE;
|
||||
if (AI_DATA->ejectButtonSwitch)
|
||||
return TRUE;
|
||||
@ -2102,7 +2102,7 @@ static u32 GetBestMonIntegrated(struct Pokemon *party, int firstId, int lastId,
|
||||
}
|
||||
// If ace mon is the last available Pokemon and U-Turn/Volt Switch or Eject Pack/Button was used - switch to the mon.
|
||||
if (aceMonId != PARTY_SIZE && CountUsablePartyMons(battler) <= aceMonCount
|
||||
&& (IsSwitchOutEffect(GetMoveEffect(gLastUsedMove)) || AI_DATA->ejectButtonSwitch || AI_DATA->ejectPackSwitch))
|
||||
&& (IsSwitchOutEffect(GetMoveEffect(gCurrentMove)) || AI_DATA->ejectButtonSwitch || AI_DATA->ejectPackSwitch))
|
||||
return aceMonId;
|
||||
|
||||
return PARTY_SIZE;
|
||||
@ -2219,7 +2219,7 @@ u32 GetMostSuitableMonToSwitchInto(u32 battler, enum SwitchType switchType)
|
||||
|
||||
// If ace mon is the last available Pokemon and U-Turn/Volt Switch or Eject Pack/Button was used - switch to the mon.
|
||||
if (aceMonId != PARTY_SIZE && CountUsablePartyMons(battler) <= aceMonCount
|
||||
&& (IsSwitchOutEffect(GetMoveEffect(gLastUsedMove)) || AI_DATA->ejectButtonSwitch || AI_DATA->ejectPackSwitch))
|
||||
&& (IsSwitchOutEffect(GetMoveEffect(gCurrentMove)) || AI_DATA->ejectButtonSwitch || AI_DATA->ejectPackSwitch))
|
||||
return aceMonId;
|
||||
|
||||
return PARTY_SIZE;
|
||||
|
||||
@ -2501,6 +2501,9 @@ bool32 IsSwitchOutEffect(u32 effect)
|
||||
// Switch out effects like U-Turn, Volt Switch, etc.
|
||||
switch (effect)
|
||||
{
|
||||
case EFFECT_TELEPORT:
|
||||
if (B_TELEPORT_BEHAVIOR >= GEN_8)
|
||||
return TRUE;
|
||||
case EFFECT_HIT_ESCAPE:
|
||||
case EFFECT_PARTING_SHOT:
|
||||
case EFFECT_BATON_PASS:
|
||||
|
||||
@ -339,7 +339,7 @@ static bool32 SetTargetToNextPursuiter(u32 battlerDef);
|
||||
void ApplyExperienceMultipliers(s32 *expAmount, u8 expGetterMonId, u8 faintedBattler);
|
||||
static void RemoveAllWeather(void);
|
||||
static void RemoveAllTerrains(void);
|
||||
static bool8 CanAbilityPreventStatLoss(u16 abilityDef);
|
||||
static bool32 CanAbilityPreventStatLoss(u32 abilityDef);
|
||||
static u32 GetNextTarget(u32 moveTarget, bool32 excludeCurrent);
|
||||
static void TryUpdateEvolutionTracker(u32 evolutionMethod, u32 upAmount, u16 usedMove);
|
||||
static void AccuracyCheck(bool32 recalcDragonDarts, const u8 *nextInstr, const u8 *failInstr, u16 move);
|
||||
@ -584,7 +584,7 @@ static void Cmd_tryrecycleitem(void);
|
||||
static void Cmd_settypetoterrain(void);
|
||||
static void Cmd_pursuitdoubles(void);
|
||||
static void Cmd_snatchsetbattlers(void);
|
||||
static void Cmd_removelightscreenreflect(void);
|
||||
static void Cmd_removescreens(void);
|
||||
static void Cmd_handleballthrow(void);
|
||||
static void Cmd_givecaughtmon(void);
|
||||
static void Cmd_trysetcaughtmondexflags(void);
|
||||
@ -843,7 +843,7 @@ void (* const gBattleScriptingCommandsTable[])(void) =
|
||||
Cmd_settypetoterrain, //0xEB
|
||||
Cmd_pursuitdoubles, //0xEC
|
||||
Cmd_snatchsetbattlers, //0xED
|
||||
Cmd_removelightscreenreflect, //0xEE
|
||||
Cmd_removescreens, //0xEE
|
||||
Cmd_handleballthrow, //0xEF
|
||||
Cmd_givecaughtmon, //0xF0
|
||||
Cmd_trysetcaughtmondexflags, //0xF1
|
||||
@ -1320,9 +1320,10 @@ static void Cmd_attackcanceler(void)
|
||||
RecordAbilityBattle(gBattlerTarget, gLastUsedAbility);
|
||||
}
|
||||
else if (IsBattlerProtected(gBattlerAttacker, gBattlerTarget, gCurrentMove)
|
||||
&& (gCurrentMove != MOVE_CURSE || IS_BATTLER_OF_TYPE(gBattlerAttacker, TYPE_GHOST))
|
||||
&& (effect != EFFECT_CURSE || IS_BATTLER_OF_TYPE(gBattlerAttacker, TYPE_GHOST))
|
||||
&& (!gBattleMoveEffects[effect].twoTurnEffect || (gBattleMons[gBattlerAttacker].status2 & STATUS2_MULTIPLETURNS))
|
||||
&& effect != EFFECT_SUCKER_PUNCH
|
||||
&& effect != EFFECT_COUNTER
|
||||
&& effect != EFFECT_UPPER_HAND)
|
||||
{
|
||||
if (IsMoveMakingContact(gCurrentMove, gBattlerAttacker))
|
||||
@ -2100,6 +2101,7 @@ static void Cmd_adjustdamage(void)
|
||||
gSpecialStatuses[battlerDef].enduredDamage = TRUE;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (GetBattlerAbility(battlerDef) == ABILITY_ICE_FACE && IsBattleMovePhysical(gCurrentMove) && gBattleMons[battlerDef].species == SPECIES_EISCUE)
|
||||
{
|
||||
// Damage deals typeless 0 HP.
|
||||
@ -2110,6 +2112,7 @@ static void Cmd_adjustdamage(void)
|
||||
// Form change will be done after attack animation in Cmd_resultmessage.
|
||||
continue;
|
||||
}
|
||||
|
||||
if (gBattleMons[gBattlerTarget].hp > gBattleStruct->moveDamage[battlerDef])
|
||||
continue;
|
||||
|
||||
@ -2649,6 +2652,11 @@ static void Cmd_datahpupdate(void)
|
||||
BtlController_EmitSetMonData(battler, BUFFER_A, REQUEST_HP_BATTLE, 0, sizeof(gBattleMons[battler].hp), &gBattleMons[battler].hp);
|
||||
MarkBattlerForControllerExec(battler);
|
||||
}
|
||||
|
||||
if (gBattlerAttacker != gBattlerTarget
|
||||
&& GetMoveCategory(gCurrentMove) != DAMAGE_CATEGORY_STATUS
|
||||
&& IsBattlerTurnDamaged(gBattlerTarget))
|
||||
gBattleStruct->timesGotHit[GetBattlerSide(gBattlerTarget)][gBattlerPartyIndexes[gBattlerTarget]]++;
|
||||
}
|
||||
|
||||
TryRestoreDamageAfterCheeckPouch(battler);
|
||||
@ -6155,17 +6163,61 @@ static u32 GetNextTarget(u32 moveTarget, bool32 excludeCurrent)
|
||||
return battler;
|
||||
}
|
||||
|
||||
static inline bool32 IsProtectivePadsProtected(u32 battler, u32 move)
|
||||
static inline bool32 IsProtectivePadsProtected(u32 battler, u32 holdEffect)
|
||||
{
|
||||
if (!IsMoveMakingContact(move, battler))
|
||||
if (holdEffect != HOLD_EFFECT_PROTECTIVE_PADS)
|
||||
return FALSE;
|
||||
|
||||
if (GetBattlerHoldEffect(battler, TRUE) == HOLD_EFFECT_PROTECTIVE_PADS)
|
||||
RecordItemEffectBattle(battler, holdEffect);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static inline bool32 IsProtectEffectAffected(u32 battler, u32 move)
|
||||
{
|
||||
u32 holdEffect = GetBattlerHoldEffect(gBattlerAttacker, TRUE);
|
||||
if (IsProtectivePadsProtected(battler, holdEffect))
|
||||
return TRUE;
|
||||
|
||||
if (holdEffect == HOLD_EFFECT_CLEAR_AMULET)
|
||||
{
|
||||
RecordItemEffectBattle(battler, HOLD_EFFECT_PROTECTIVE_PADS);
|
||||
RecordItemEffectBattle(battler, holdEffect);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
u32 ability = GetBattlerAbility(gBattlerAttacker);
|
||||
if (CanAbilityPreventStatLoss(ability))
|
||||
{
|
||||
RecordAbilityBattle(battler, ability);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static inline bool32 CanEjectButtonTrigger(u32 battlerAtk, u32 battlerDef, u32 moveEffect)
|
||||
{
|
||||
if (GetBattlerHoldEffect(battlerDef, TRUE) == HOLD_EFFECT_EJECT_BUTTON
|
||||
&& battlerAtk != battlerDef
|
||||
&& IsBattlerTurnDamaged(battlerDef)
|
||||
&& IsBattlerAlive(battlerDef)
|
||||
&& CountUsablePartyMons(battlerDef) > 0
|
||||
&& !(moveEffect == EFFECT_HIT_SWITCH_TARGET && CanBattlerSwitch(battlerAtk)))
|
||||
return TRUE;
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static inline bool32 CanEjectPackTrigger(u32 battlerAtk, u32 battlerDef, u32 moveEffect)
|
||||
{
|
||||
if (gProtectStructs[battlerDef].statFell
|
||||
&& GetBattlerHoldEffect(battlerDef, TRUE) == HOLD_EFFECT_EJECT_PACK
|
||||
&& IsBattlerAlive(battlerDef)
|
||||
&& CountUsablePartyMons(battlerDef) > 0
|
||||
&& !gProtectStructs[battlerDef].disableEjectPack
|
||||
&& !(moveEffect == EFFECT_HIT_SWITCH_TARGET && CanBattlerSwitch(battlerAtk))
|
||||
&& !(moveEffect == EFFECT_PARTING_SHOT && CanBattlerSwitch(battlerAtk)))
|
||||
return TRUE;
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@ -6205,9 +6257,8 @@ static void Cmd_moveend(void)
|
||||
if (gProtectStructs[gBattlerAttacker].touchedProtectLike)
|
||||
{
|
||||
if (gProtectStructs[gBattlerTarget].spikyShielded
|
||||
&& moveEffect != EFFECT_COUNTER
|
||||
&& !IsProtectivePadsProtected(gBattlerAttacker, gCurrentMove)
|
||||
&& GetBattlerAbility(gBattlerAttacker) != ABILITY_MAGIC_GUARD)
|
||||
&& !IsProtectivePadsProtected(gBattlerAttacker, GetBattlerHoldEffect(gBattlerAttacker, TRUE))
|
||||
&& !IsMagicGuardProtected(gBattlerAttacker, GetBattlerAbility(gBattlerAttacker)))
|
||||
{
|
||||
gProtectStructs[gBattlerAttacker].touchedProtectLike = FALSE;
|
||||
gBattleStruct->moveDamage[gBattlerAttacker] = GetNonDynamaxMaxHP(gBattlerAttacker) / 8;
|
||||
@ -6219,7 +6270,7 @@ static void Cmd_moveend(void)
|
||||
effect = 1;
|
||||
}
|
||||
else if (gProtectStructs[gBattlerTarget].kingsShielded
|
||||
&& !IsProtectivePadsProtected(gBattlerAttacker, gCurrentMove))
|
||||
&& !IsProtectEffectAffected(gBattlerAttacker, gCurrentMove))
|
||||
{
|
||||
gProtectStructs[gBattlerAttacker].touchedProtectLike = FALSE;
|
||||
i = gBattlerAttacker;
|
||||
@ -6234,7 +6285,7 @@ static void Cmd_moveend(void)
|
||||
effect = 1;
|
||||
}
|
||||
else if (gProtectStructs[gBattlerTarget].banefulBunkered
|
||||
&& !IsProtectivePadsProtected(gBattlerAttacker, gCurrentMove))
|
||||
&& !IsProtectivePadsProtected(gBattlerAttacker, GetBattlerHoldEffect(gBattlerAttacker, TRUE)))
|
||||
{
|
||||
gProtectStructs[gBattlerAttacker].touchedProtectLike = FALSE;
|
||||
gBattleScripting.moveEffect = MOVE_EFFECT_POISON | MOVE_EFFECT_AFFECTS_USER;
|
||||
@ -6246,7 +6297,7 @@ static void Cmd_moveend(void)
|
||||
else if (gProtectStructs[gBattlerTarget].obstructed
|
||||
&& moveEffect != EFFECT_SUCKER_PUNCH
|
||||
&& moveEffect != EFFECT_UPPER_HAND
|
||||
&& !IsProtectivePadsProtected(gBattlerAttacker, gCurrentMove))
|
||||
&& !IsProtectEffectAffected(gBattlerAttacker, gCurrentMove))
|
||||
{
|
||||
gProtectStructs[gBattlerAttacker].touchedProtectLike = FALSE;
|
||||
i = gBattlerAttacker;
|
||||
@ -6258,7 +6309,7 @@ static void Cmd_moveend(void)
|
||||
effect = 1;
|
||||
}
|
||||
else if (gProtectStructs[gBattlerTarget].silkTrapped
|
||||
&& !IsProtectivePadsProtected(gBattlerAttacker, gCurrentMove))
|
||||
&& !IsProtectEffectAffected(gBattlerAttacker, gCurrentMove))
|
||||
{
|
||||
gProtectStructs[gBattlerAttacker].touchedProtectLike = FALSE;
|
||||
i = gBattlerAttacker;
|
||||
@ -6270,7 +6321,7 @@ static void Cmd_moveend(void)
|
||||
effect = 1;
|
||||
}
|
||||
else if (gProtectStructs[gBattlerTarget].burningBulwarked
|
||||
&& !IsProtectivePadsProtected(gBattlerAttacker, gCurrentMove))
|
||||
&& !IsProtectivePadsProtected(gBattlerAttacker, GetBattlerHoldEffect(gBattlerAttacker, TRUE)))
|
||||
{
|
||||
gProtectStructs[gBattlerAttacker].touchedProtectLike = FALSE;
|
||||
gBattleScripting.moveEffect = MOVE_EFFECT_BURN | MOVE_EFFECT_AFFECTS_USER;
|
||||
@ -6690,16 +6741,6 @@ static void Cmd_moveend(void)
|
||||
}
|
||||
gBattleScripting.moveendState++;
|
||||
break;
|
||||
case MOVEEND_NUM_HITS:
|
||||
if (gBattlerAttacker != gBattlerTarget
|
||||
&& GetMoveCategory(gCurrentMove) != DAMAGE_CATEGORY_STATUS
|
||||
&& !(gBattleStruct->moveResultFlags[gBattlerTarget] & MOVE_RESULT_NO_EFFECT)
|
||||
&& IsBattlerTurnDamaged(gBattlerTarget))
|
||||
{
|
||||
gBattleStruct->timesGotHit[GetBattlerSide(gBattlerTarget)][gBattlerPartyIndexes[gBattlerTarget]]++;
|
||||
}
|
||||
gBattleScripting.moveendState++;
|
||||
break;
|
||||
case MOVEEND_SUBSTITUTE: // update substitute
|
||||
for (i = 0; i < gBattlersCount; i++)
|
||||
{
|
||||
@ -6962,13 +7003,6 @@ static void Cmd_moveend(void)
|
||||
gBattleScripting.moveendState++;
|
||||
break;
|
||||
}
|
||||
// The order of abilities/items activating after moves hitting multiple targets is
|
||||
// 1. Magician
|
||||
// 2. The fastest mon gets switched out using Eject Button / Eject Pack
|
||||
// 3. White Herb activates
|
||||
// 4. Red Card activates
|
||||
// 5. Life Orb / Shell Bell
|
||||
// 6. Pickpocket
|
||||
case MOVEEND_MAGICIAN:
|
||||
if (GetBattlerAbility(gBattlerAttacker) == ABILITY_MAGICIAN
|
||||
&& gCurrentMove != MOVE_FLING && gCurrentMove != MOVE_NATURAL_GIFT
|
||||
@ -6980,7 +7014,6 @@ static void Cmd_moveend(void)
|
||||
&& !gSpecialStatuses[gBattlerAttacker].gemBoost // In base game, gems are consumed after magician would activate.
|
||||
&& !(gWishFutureKnock.knockedOffMons[GetBattlerSide(gBattlerTarget)] & (1u << gBattlerPartyIndexes[gBattlerTarget]))
|
||||
&& !DoesSubstituteBlockMove(gBattlerAttacker, gBattlerTarget, gCurrentMove)
|
||||
&& !(gBattleStruct->moveResultFlags[gBattlerTarget] & MOVE_RESULT_NO_EFFECT)
|
||||
&& (GetBattlerAbility(gBattlerTarget) != ABILITY_STICKY_HOLD || !IsBattlerAlive(gBattlerTarget)))
|
||||
{
|
||||
StealTargetItem(gBattlerAttacker, gBattlerTarget);
|
||||
@ -6995,94 +7028,119 @@ static void Cmd_moveend(void)
|
||||
break;
|
||||
case MOVEEND_SHEER_FORCE:
|
||||
if (TestIfSheerForceAffected(gBattlerAttacker, gCurrentMove))
|
||||
gBattleScripting.moveendState = MOVEEND_OPPORTUNIST;
|
||||
gBattleScripting.moveendState = MOVEEND_EJECT_PACK;
|
||||
else
|
||||
gBattleScripting.moveendState++;
|
||||
break;
|
||||
case MOVEEND_EJECT_ITEMS:
|
||||
case MOVEEND_EJECT_BUTTON:
|
||||
{
|
||||
// Because sorting the battlers by speed takes lots of cycles, it's better to just check if any of the battlers has the Eject items.
|
||||
u32 ejectPackBattlers = 0, ejectButtonBattlers = 0, i;
|
||||
u32 numEjectButtonBattlers = 0;
|
||||
u32 ejectButtonBattlers = 0;
|
||||
|
||||
for (i = 0; i < gBattlersCount; i++)
|
||||
{
|
||||
u32 holdEffect;
|
||||
holdEffect = GetBattlerHoldEffect(i, TRUE);
|
||||
if (holdEffect == HOLD_EFFECT_EJECT_BUTTON)
|
||||
if (CanEjectButtonTrigger(gBattlerAttacker, i, moveEffect))
|
||||
{
|
||||
ejectButtonBattlers |= 1u << i;
|
||||
else if (holdEffect == HOLD_EFFECT_EJECT_PACK)
|
||||
ejectPackBattlers |= 1u << i;
|
||||
numEjectButtonBattlers++;
|
||||
}
|
||||
}
|
||||
if (ejectButtonBattlers || ejectPackBattlers)
|
||||
|
||||
if (numEjectButtonBattlers == 0)
|
||||
{
|
||||
u8 battlers[4] = {0, 1, 2, 3};
|
||||
gBattleScripting.moveendState++;
|
||||
break;
|
||||
}
|
||||
|
||||
u8 battlers[4] = {0, 1, 2, 3};
|
||||
if (numEjectButtonBattlers > 1)
|
||||
SortBattlersBySpeed(battlers, FALSE);
|
||||
|
||||
for (i = 0; i < gBattlersCount; i++)
|
||||
for (i = 0; i < gBattlersCount; i++)
|
||||
{
|
||||
u32 battler = battlers[i];
|
||||
|
||||
if (!(ejectButtonBattlers & 1u << battler))
|
||||
continue;
|
||||
|
||||
gBattleScripting.battler = battler;
|
||||
gLastUsedItem = gBattleMons[battler].item;
|
||||
if (moveEffect == EFFECT_HIT_ESCAPE)
|
||||
gBattlescriptCurrInstr = BattleScript_MoveEnd; // Prevent user switch-in selection
|
||||
|
||||
effect = TRUE;
|
||||
gBattleScripting.moveendState = MOVEEND_OPPORTUNIST;
|
||||
gBattleStruct->battlerState[battler].usedEjectItem = TRUE;
|
||||
BattleScriptPushCursor();
|
||||
gBattlescriptCurrInstr = BattleScript_EjectButtonActivates;
|
||||
AI_DATA->ejectButtonSwitch = TRUE;
|
||||
break; // Only the fastest Eject Button activates
|
||||
}
|
||||
}
|
||||
if (!effect)
|
||||
gBattleScripting.moveendState++;
|
||||
break;
|
||||
case MOVEEND_EJECT_PACK:
|
||||
{
|
||||
// Because sorting the battlers by speed takes lots of cycles, it's better to just check if any of the battlers has the Eject items.
|
||||
u32 ejectPackBattlers = 0;
|
||||
u32 numEjectPackBattlers = 0;
|
||||
|
||||
for (i = 0; i < gBattlersCount; i++)
|
||||
{
|
||||
if (CanEjectPackTrigger(gBattlerAttacker, i, moveEffect))
|
||||
{
|
||||
u32 battler = battlers[i];
|
||||
|
||||
if (battler != gBattlerAttacker && ejectButtonBattlers & (1u << battler))
|
||||
{
|
||||
// Since we check if battler was damaged, we don't need to check move result.
|
||||
// In fact, doing so actually prevents multi-target moves from activating eject button properly
|
||||
if (!IsBattlerTurnDamaged(battler))
|
||||
continue;
|
||||
}
|
||||
else if (ejectPackBattlers & (1u << battler))
|
||||
{
|
||||
if (!gProtectStructs[battler].statFell || gProtectStructs[battler].disableEjectPack)
|
||||
continue;
|
||||
}
|
||||
else
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (IsBattlerAlive(battler)
|
||||
&& CountUsablePartyMons(battler) > 0 // Has mon to switch into
|
||||
// Does not activate if attacker used Parting Shot and can switch out
|
||||
&& !(moveEffect == EFFECT_HIT_SWITCH_TARGET && CanBattlerSwitch(gBattlerAttacker))
|
||||
)
|
||||
{
|
||||
gBattleScripting.battler = battler;
|
||||
gLastUsedItem = gBattleMons[battler].item;
|
||||
if (moveEffect == EFFECT_HIT_ESCAPE)
|
||||
gBattlescriptCurrInstr = BattleScript_MoveEnd; // Prevent user switch-in selection
|
||||
if (ejectButtonBattlers & (1u << battler))
|
||||
{
|
||||
effect = TRUE;
|
||||
gBattleStruct->battlerState[battler].usedEjectItem = TRUE;
|
||||
BattleScriptPushCursor();
|
||||
gBattlescriptCurrInstr = BattleScript_EjectButtonActivates;
|
||||
AI_DATA->ejectButtonSwitch = TRUE;
|
||||
}
|
||||
else // Eject Pack
|
||||
{
|
||||
if (!gDisableStructs[gBattlerTarget].startEmergencyExit
|
||||
&& !(GetMoveEffect(gCurrentMove) == EFFECT_PARTING_SHOT && CanBattlerSwitch(gBattlerAttacker)))
|
||||
{
|
||||
effect = TRUE;
|
||||
gBattleStruct->battlerState[battler].usedEjectItem = TRUE;
|
||||
BattleScriptPushCursor();
|
||||
gBattlescriptCurrInstr = BattleScript_EjectPackActivates;
|
||||
AI_DATA->ejectPackSwitch = TRUE;
|
||||
gSpecialStatuses[gBattlerAttacker].preventLifeOrbDamage = TRUE;
|
||||
}
|
||||
gProtectStructs[battler].statFell = FALSE;
|
||||
}
|
||||
break; // Only the fastest Eject item activates
|
||||
}
|
||||
ejectPackBattlers |= 1u << i;
|
||||
numEjectPackBattlers++;
|
||||
}
|
||||
}
|
||||
|
||||
if (numEjectPackBattlers == 0)
|
||||
{
|
||||
gBattleScripting.moveendState++;
|
||||
break;
|
||||
}
|
||||
|
||||
u8 battlers[4] = {0, 1, 2, 3};
|
||||
if (numEjectPackBattlers > 1)
|
||||
SortBattlersBySpeed(battlers, FALSE);
|
||||
|
||||
for (i = 0; i < gBattlersCount; i++)
|
||||
{
|
||||
u32 battler = battlers[i];
|
||||
|
||||
if (!(ejectPackBattlers & 1u << battler))
|
||||
continue;
|
||||
|
||||
gBattleScripting.battler = battler;
|
||||
gLastUsedItem = gBattleMons[battler].item;
|
||||
|
||||
if (moveEffect == EFFECT_HIT_ESCAPE)
|
||||
gBattlescriptCurrInstr = BattleScript_MoveEnd; // Prevent user switch-in selection
|
||||
|
||||
effect = TRUE;
|
||||
gBattleStruct->battlerState[battler].usedEjectItem = TRUE;
|
||||
BattleScriptPushCursor();
|
||||
gBattlescriptCurrInstr = BattleScript_EjectPackActivates;
|
||||
AI_DATA->ejectPackSwitch = TRUE;
|
||||
gProtectStructs[battler].statFell = FALSE;
|
||||
break; // Only the fastest Eject item activates
|
||||
}
|
||||
}
|
||||
gBattleScripting.moveendState++;
|
||||
break;
|
||||
case MOVEEND_WHITE_HERB:
|
||||
for (i = 0; i < gBattlersCount; i++)
|
||||
{
|
||||
if (IsBattlerAlive(i)
|
||||
&& ItemBattleEffects(ITEMEFFECT_STATS_CHANGED, i, FALSE))
|
||||
if (!IsBattlerAlive(i))
|
||||
continue;
|
||||
|
||||
if (GetBattlerHoldEffect(i, TRUE) == HOLD_EFFECT_RESTORE_STATS
|
||||
&& RestoreWhiteHerbStats(i))
|
||||
{
|
||||
BattleScriptPushCursor();
|
||||
gBattlescriptCurrInstr = BattleScript_WhiteHerbRet;
|
||||
effect = TRUE;
|
||||
break;
|
||||
}
|
||||
@ -7102,8 +7160,7 @@ static void Cmd_moveend(void)
|
||||
}
|
||||
if (redCardBattlers
|
||||
&& (moveEffect != EFFECT_HIT_SWITCH_TARGET || gBattleStruct->hitSwitchTargetFailed)
|
||||
&& IsBattlerAlive(gBattlerAttacker)
|
||||
&& !TestIfSheerForceAffected(gBattlerAttacker, gCurrentMove))
|
||||
&& IsBattlerAlive(gBattlerAttacker))
|
||||
{
|
||||
// Since we check if battler was damaged, we don't need to check move result.
|
||||
// In fact, doing so actually prevents multi-target moves from activating red card properly
|
||||
@ -7120,33 +7177,29 @@ static void Cmd_moveend(void)
|
||||
&& IsBattlerTurnDamaged(battler)
|
||||
&& CanBattlerSwitch(gBattlerAttacker))
|
||||
{
|
||||
effect = TRUE;
|
||||
gBattleScripting.moveendState = MOVEEND_OPPORTUNIST;
|
||||
gLastUsedItem = gBattleMons[battler].item;
|
||||
SaveBattlerTarget(battler); // save battler with red card
|
||||
SaveBattlerAttacker(gBattlerAttacker);
|
||||
gBattleStruct->savedMove = gCurrentMove;
|
||||
gBattleScripting.battler = battler;
|
||||
gEffectBattler = gBattlerAttacker;
|
||||
gBattleStruct->redCardActivates = TRUE;
|
||||
if (moveEffect == EFFECT_HIT_ESCAPE)
|
||||
gBattlescriptCurrInstr = BattleScript_MoveEnd; // Prevent user switch-in selection
|
||||
BattleScriptPushCursor();
|
||||
if (gBattleStruct->commanderActive[gBattlerAttacker] != SPECIES_NONE
|
||||
|| GetBattlerAbility(gBattlerAttacker) == ABILITY_GUARD_DOG)
|
||||
{
|
||||
gBattlescriptCurrInstr = BattleScript_RedCardActivationNoSwitch;
|
||||
}
|
||||
else
|
||||
{
|
||||
gBattlescriptCurrInstr = BattleScript_RedCardActivates;
|
||||
gSpecialStatuses[gBattlerAttacker].preventLifeOrbDamage = TRUE;
|
||||
}
|
||||
effect = TRUE;
|
||||
break; // Only fastest red card activates
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
gBattleScripting.moveendState++;
|
||||
if (!effect)
|
||||
gBattleScripting.moveendState++;
|
||||
break;
|
||||
case MOVEEND_LIFEORB_SHELLBELL:
|
||||
if (ItemBattleEffects(ITEMEFFECT_LIFEORB_SHELLBELL, 0, FALSE))
|
||||
@ -7190,37 +7243,57 @@ static void Cmd_moveend(void)
|
||||
gBattleScripting.moveendState++;
|
||||
break;
|
||||
case MOVEEND_EMERGENCY_EXIT: // Special case, because moves hitting multiple opponents stop after switching out
|
||||
for (i = 0; i < gBattlersCount; i++)
|
||||
{
|
||||
if (gBattleStruct->redCardActivates)
|
||||
// Because sorting the battlers by speed takes lots of cycles,
|
||||
// we check if EE can be activated and cound how many.
|
||||
u32 numEmergencyExitBattlers = 0;
|
||||
u32 emergencyExitBattlers = 0;
|
||||
|
||||
for (i = 0; i < gBattlersCount; i++)
|
||||
{
|
||||
gDisableStructs[i].startEmergencyExit = FALSE;
|
||||
continue;
|
||||
if (EmergencyExitCanBeTriggered(i))
|
||||
{
|
||||
emergencyExitBattlers |= 1u << i;
|
||||
numEmergencyExitBattlers++;
|
||||
}
|
||||
}
|
||||
if (gDisableStructs[i].startEmergencyExit)
|
||||
|
||||
if (numEmergencyExitBattlers == 0)
|
||||
{
|
||||
gDisableStructs[i].startEmergencyExit = FALSE;
|
||||
gSpecialStatuses[i].emergencyExited = TRUE;
|
||||
gBattlerTarget = gBattlerAbility = i;
|
||||
gBattleScripting.moveendState++;
|
||||
break;
|
||||
}
|
||||
|
||||
u8 battlers[4] = {0, 1, 2, 3};
|
||||
if (numEmergencyExitBattlers > 1)
|
||||
SortBattlersBySpeed(battlers, FALSE);
|
||||
|
||||
for (i = 0; i < gBattlersCount; i++)
|
||||
{
|
||||
u32 battler = battlers[i];
|
||||
|
||||
if (!(emergencyExitBattlers & 1u << battler))
|
||||
continue;
|
||||
|
||||
if (moveEffect == EFFECT_HIT_ESCAPE)
|
||||
gBattlescriptCurrInstr = BattleScript_MoveEnd; // Prevent user switch-in selection
|
||||
|
||||
effect = TRUE;
|
||||
gBattleScripting.moveendState = MOVEEND_OPPORTUNIST;
|
||||
gSpecialStatuses[battler].emergencyExited = TRUE;
|
||||
gBattleScripting.battler = battler;
|
||||
BattleScriptPushCursor();
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER || GetBattlerSide(i) == B_SIDE_PLAYER)
|
||||
{
|
||||
if (B_ABILITY_POP_UP == TRUE)
|
||||
gBattlescriptCurrInstr = BattleScript_EmergencyExit;
|
||||
else
|
||||
gBattlescriptCurrInstr = BattleScript_EmergencyExitNoPopUp;
|
||||
}
|
||||
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER || GetBattlerSide(battler) == B_SIDE_PLAYER)
|
||||
gBattlescriptCurrInstr = BattleScript_EmergencyExit;
|
||||
else
|
||||
{
|
||||
if (B_ABILITY_POP_UP == TRUE)
|
||||
gBattlescriptCurrInstr = BattleScript_EmergencyExitWild;
|
||||
else
|
||||
gBattlescriptCurrInstr = BattleScript_EmergencyExitWildNoPopUp;
|
||||
}
|
||||
return;
|
||||
gBattlescriptCurrInstr = BattleScript_EmergencyExitWild;
|
||||
|
||||
break; // Only the fastest Emergency Exit / Wimp Out activates
|
||||
}
|
||||
}
|
||||
gBattleScripting.moveendState++;
|
||||
if (!effect)
|
||||
gBattleScripting.moveendState++;
|
||||
break;
|
||||
case MOVEEND_SYMBIOSIS:
|
||||
for (i = 0; i < gBattlersCount; i++)
|
||||
@ -7297,7 +7370,6 @@ static void Cmd_moveend(void)
|
||||
gBattleStruct->additionalEffectsCounter = 0;
|
||||
gBattleStruct->poisonPuppeteerConfusion = FALSE;
|
||||
gBattleStruct->fickleBeamBoosted = FALSE;
|
||||
gBattleStruct->redCardActivates = FALSE;
|
||||
gBattleStruct->battlerState[gBattlerAttacker].usedMicleBerry = FALSE;
|
||||
gBattleStruct->noTargetPresent = FALSE;
|
||||
if (gHitMarker & HITMARKER_UNABLE_TO_USE_MOVE)
|
||||
@ -13776,10 +13848,29 @@ static void Cmd_trychoosesleeptalkmove(void)
|
||||
}
|
||||
}
|
||||
|
||||
static inline bool32 IsDanamaxMonPresent(void)
|
||||
{
|
||||
for (u32 battler = 0; battler < gBattlersCount; battler++)
|
||||
{
|
||||
if (battler == gBattlerAttacker)
|
||||
continue;
|
||||
|
||||
if (GetActiveGimmick(battler) == GIMMICK_DYNAMAX)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void Cmd_trysetdestinybond(void)
|
||||
{
|
||||
CMD_ARGS(const u8 *failInstr);
|
||||
if (DoesDestinyBondFail(gBattlerAttacker))
|
||||
|
||||
if (IsDanamaxMonPresent())
|
||||
{
|
||||
gBattlescriptCurrInstr = BattleScript_MoveBlockedByDynamax;
|
||||
}
|
||||
else if (DoesDestinyBondFail(gBattlerAttacker))
|
||||
{
|
||||
gBattlescriptCurrInstr = cmd->failInstr;
|
||||
}
|
||||
@ -15694,8 +15785,7 @@ static void Cmd_snatchsetbattlers(void)
|
||||
gBattlescriptCurrInstr = cmd->nextInstr;
|
||||
}
|
||||
|
||||
// Brick Break
|
||||
static void Cmd_removelightscreenreflect(void)
|
||||
static void Cmd_removescreens(void)
|
||||
{
|
||||
CMD_ARGS();
|
||||
|
||||
@ -16819,7 +16909,7 @@ static bool8 IsFinalStrikeEffect(u32 moveEffect)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static bool8 CanAbilityPreventStatLoss(u16 abilityDef)
|
||||
static bool32 CanAbilityPreventStatLoss(u32 abilityDef)
|
||||
{
|
||||
switch (abilityDef)
|
||||
{
|
||||
|
||||
@ -2207,7 +2207,8 @@ s32 GetDrainedBigRootHp(u32 battler, s32 hp)
|
||||
return hp * -1;
|
||||
}
|
||||
|
||||
static inline bool32 IsBattlerProtectedByMagicGuard(u32 battler, u32 ability)
|
||||
// This should always be the last check. Otherwise the ability might be recorded when it is not supposed to be
|
||||
bool32 IsMagicGuardProtected(u32 battler, u32 ability)
|
||||
{
|
||||
if (ability != ABILITY_MAGIC_GUARD)
|
||||
return FALSE;
|
||||
@ -2343,7 +2344,7 @@ u8 DoBattlerEndTurnEffects(void)
|
||||
if ((gStatuses3[battler] & STATUS3_LEECHSEED)
|
||||
&& IsBattlerAlive(gStatuses3[battler] & STATUS3_LEECHSEED_BATTLER)
|
||||
&& IsBattlerAlive(battler)
|
||||
&& !IsBattlerProtectedByMagicGuard(battler, ability))
|
||||
&& !IsMagicGuardProtected(battler, ability))
|
||||
{
|
||||
gBattlerTarget = gStatuses3[battler] & STATUS3_LEECHSEED_BATTLER; // Notice gBattlerTarget is actually the HP receiver.
|
||||
gBattlerAttacker = battler;
|
||||
@ -2374,7 +2375,7 @@ u8 DoBattlerEndTurnEffects(void)
|
||||
case ENDTURN_POISON: // poison
|
||||
if ((gBattleMons[battler].status1 & STATUS1_POISON)
|
||||
&& IsBattlerAlive(battler)
|
||||
&& !IsBattlerProtectedByMagicGuard(battler, ability))
|
||||
&& !IsMagicGuardProtected(battler, ability))
|
||||
{
|
||||
if (ability == ABILITY_POISON_HEAL)
|
||||
{
|
||||
@ -2402,7 +2403,7 @@ u8 DoBattlerEndTurnEffects(void)
|
||||
case ENDTURN_BAD_POISON: // toxic poison
|
||||
if ((gBattleMons[battler].status1 & STATUS1_TOXIC_POISON)
|
||||
&& IsBattlerAlive(battler)
|
||||
&& !IsBattlerProtectedByMagicGuard(battler, ability))
|
||||
&& !IsMagicGuardProtected(battler, ability))
|
||||
{
|
||||
if (ability == ABILITY_POISON_HEAL)
|
||||
{
|
||||
@ -2433,7 +2434,7 @@ u8 DoBattlerEndTurnEffects(void)
|
||||
case ENDTURN_BURN: // burn
|
||||
if ((gBattleMons[battler].status1 & STATUS1_BURN)
|
||||
&& IsBattlerAlive(battler)
|
||||
&& !IsBattlerProtectedByMagicGuard(battler, ability))
|
||||
&& !IsMagicGuardProtected(battler, ability))
|
||||
{
|
||||
gBattleStruct->moveDamage[battler] = GetNonDynamaxMaxHP(battler) / (B_BURN_DAMAGE >= GEN_7 ? 16 : 8);
|
||||
if (ability == ABILITY_HEATPROOF)
|
||||
@ -2452,7 +2453,7 @@ u8 DoBattlerEndTurnEffects(void)
|
||||
case ENDTURN_FROSTBITE: // burn
|
||||
if ((gBattleMons[battler].status1 & STATUS1_FROSTBITE)
|
||||
&& IsBattlerAlive(battler)
|
||||
&& !IsBattlerProtectedByMagicGuard(battler, ability))
|
||||
&& !IsMagicGuardProtected(battler, ability))
|
||||
{
|
||||
gBattleStruct->moveDamage[battler] = GetNonDynamaxMaxHP(battler) / (B_BURN_DAMAGE >= GEN_7 ? 16 : 8);
|
||||
if (gBattleStruct->moveDamage[battler] == 0)
|
||||
@ -2465,7 +2466,7 @@ u8 DoBattlerEndTurnEffects(void)
|
||||
case ENDTURN_NIGHTMARES: // spooky nightmares
|
||||
if ((gBattleMons[battler].status2 & STATUS2_NIGHTMARE)
|
||||
&& IsBattlerAlive(battler)
|
||||
&& !IsBattlerProtectedByMagicGuard(battler, ability))
|
||||
&& !IsMagicGuardProtected(battler, ability))
|
||||
{
|
||||
// R/S does not perform this sleep check, which causes the nightmare effect to
|
||||
// persist even after the affected Pokémon has been awakened by Shed Skin.
|
||||
@ -2487,7 +2488,7 @@ u8 DoBattlerEndTurnEffects(void)
|
||||
case ENDTURN_CURSE: // curse
|
||||
if ((gBattleMons[battler].status2 & STATUS2_CURSED)
|
||||
&& IsBattlerAlive(battler)
|
||||
&& !IsBattlerProtectedByMagicGuard(battler, ability))
|
||||
&& !IsMagicGuardProtected(battler, ability))
|
||||
{
|
||||
gBattleStruct->moveDamage[battler] = GetNonDynamaxMaxHP(battler) / 4;
|
||||
if (gBattleStruct->moveDamage[battler] == 0)
|
||||
@ -2502,7 +2503,7 @@ u8 DoBattlerEndTurnEffects(void)
|
||||
{
|
||||
if (--gDisableStructs[battler].wrapTurns != 0) // damaged by wrap
|
||||
{
|
||||
if (IsBattlerProtectedByMagicGuard(battler, ability))
|
||||
if (IsMagicGuardProtected(battler, ability))
|
||||
{
|
||||
gBattleStruct->turnEffectsTracker++;
|
||||
break;
|
||||
@ -2812,7 +2813,7 @@ u8 DoBattlerEndTurnEffects(void)
|
||||
case ENDTURN_SALT_CURE:
|
||||
if (gStatuses4[battler] & STATUS4_SALT_CURE
|
||||
&& IsBattlerAlive(battler)
|
||||
&& !IsBattlerProtectedByMagicGuard(battler, ability))
|
||||
&& !IsMagicGuardProtected(battler, ability))
|
||||
{
|
||||
gBattlerTarget = battler;
|
||||
if (IS_BATTLER_ANY_TYPE(battler, TYPE_STEEL, TYPE_WATER))
|
||||
@ -5281,6 +5282,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32
|
||||
|
||||
if (!gSpecialStatuses[battler].switchInAbilityDone
|
||||
&& IsDoubleBattle()
|
||||
&& !(gStatuses3[partner] & STATUS3_HEAL_BLOCK)
|
||||
&& gBattleMons[partner].hp < gBattleMons[partner].maxHP
|
||||
&& IsBattlerAlive(partner))
|
||||
{
|
||||
@ -5682,25 +5684,6 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32
|
||||
effect++;
|
||||
}
|
||||
break;
|
||||
case ABILITY_EMERGENCY_EXIT:
|
||||
case ABILITY_WIMP_OUT:
|
||||
if (!(gBattleStruct->moveResultFlags[battler] & MOVE_RESULT_NO_EFFECT)
|
||||
&& IsBattlerTurnDamaged(gBattlerTarget)
|
||||
&& IsBattlerAlive(battler)
|
||||
// Had more than half of hp before, now has less
|
||||
&& HadMoreThanHalfHpNowDoesnt(battler)
|
||||
&& (gMultiHitCounter == 0 || gMultiHitCounter == 1)
|
||||
&& !(TestIfSheerForceAffected(gBattlerAttacker, gCurrentMove))
|
||||
&& (CanBattlerSwitch(battler) || !(gBattleTypeFlags & BATTLE_TYPE_TRAINER))
|
||||
&& !(gBattleTypeFlags & BATTLE_TYPE_ARENA)
|
||||
&& CountUsablePartyMons(battler) > 0
|
||||
// Not currently held by Sky Drop
|
||||
&& !(gStatuses3[battler] & STATUS3_SKY_DROPPED))
|
||||
{
|
||||
gDisableStructs[battler].startEmergencyExit = TRUE;
|
||||
effect++;
|
||||
}
|
||||
break;
|
||||
case ABILITY_WEAK_ARMOR:
|
||||
if (!(gBattleStruct->moveResultFlags[battler] & MOVE_RESULT_NO_EFFECT)
|
||||
&& IsBattlerTurnDamaged(gBattlerTarget)
|
||||
@ -5866,6 +5849,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32
|
||||
}
|
||||
else
|
||||
{
|
||||
gBattleScripting.battler = gBattlerTarget;
|
||||
gBattleStruct->moveDamage[gBattlerAttacker] = GetNonDynamaxMaxHP(gBattlerAttacker) / 4;
|
||||
if (gBattleStruct->moveDamage[gBattlerAttacker] == 0)
|
||||
gBattleStruct->moveDamage[gBattlerAttacker] = 1;
|
||||
@ -5888,6 +5872,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32
|
||||
break;
|
||||
}
|
||||
|
||||
gBattleScripting.battler = gBattlerTarget;
|
||||
gBattleStruct->moveDamage[gBattlerAttacker] = gBattleStruct->moveDamage[gBattlerTarget];
|
||||
BattleScriptPushCursor();
|
||||
gBattlescriptCurrInstr = BattleScript_AftermathDmg;
|
||||
@ -7233,8 +7218,6 @@ static u32 ItemHealHp(u32 battler, u32 itemId, enum ItemCaseId caseID, bool32 pe
|
||||
BattleScriptPushCursor();
|
||||
gBattlescriptCurrInstr = BattleScript_ItemHealHP_RemoveItemRet;
|
||||
}
|
||||
if (gDisableStructs[battler].startEmergencyExit && GetNonDynamaxHP(battler) >= GetNonDynamaxMaxHP(battler) / 2)
|
||||
gDisableStructs[battler].startEmergencyExit = FALSE;
|
||||
|
||||
return ITEM_HP_CHANGE;
|
||||
}
|
||||
@ -7355,7 +7338,7 @@ static inline u32 TryBoosterEnergy(u32 battler, enum ItemCaseId caseID)
|
||||
return ITEM_NO_EFFECT;
|
||||
}
|
||||
|
||||
static u32 RestoreWhiteHerbStats(u32 battler)
|
||||
u32 RestoreWhiteHerbStats(u32 battler)
|
||||
{
|
||||
u32 i, effect = 0;
|
||||
|
||||
@ -12379,3 +12362,22 @@ bool32 IsMovePowderBlocked(u32 battlerAtk, u32 battlerDef, u32 move)
|
||||
|
||||
return effect;
|
||||
}
|
||||
|
||||
bool32 EmergencyExitCanBeTriggered(u32 battler)
|
||||
{
|
||||
u32 ability = GetBattlerAbility(battler);
|
||||
|
||||
if (ability != ABILITY_EMERGENCY_EXIT && ability != ABILITY_WIMP_OUT)
|
||||
return FALSE;
|
||||
|
||||
if (IsBattlerTurnDamaged(battler)
|
||||
&& IsBattlerAlive(battler)
|
||||
&& HadMoreThanHalfHpNowDoesnt(battler)
|
||||
&& (CanBattlerSwitch(battler) || !(gBattleTypeFlags & BATTLE_TYPE_TRAINER))
|
||||
&& !(gBattleTypeFlags & BATTLE_TYPE_ARENA)
|
||||
&& CountUsablePartyMons(battler) > 0
|
||||
&& !(gStatuses3[battler] & STATUS3_SKY_DROPPED))
|
||||
return TRUE;
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@ -340,7 +340,7 @@ static bool8 LoadBerryTagGfx(void)
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
LZDecompressWram(gBerryTag_Pal, sBerryTag->tilemapBuffers[2]);
|
||||
LZDecompressWram(gBerryTag_Tilemap, sBerryTag->tilemapBuffers[2]);
|
||||
sBerryTag->gfxState++;
|
||||
break;
|
||||
case 3:
|
||||
|
||||
@ -298,7 +298,7 @@ const struct ApprenticeTrainer gApprentices[NUM_APPRENTICES] =
|
||||
{
|
||||
{
|
||||
.name = {_("サダヒロ"), _("ALANN"), _("ALAIN"), _("ADELFO"), _("CLAUS"), _("TEO")},
|
||||
.otId = 0xBDC9,
|
||||
.otId = 48585,
|
||||
.facilityClass = FACILITY_CLASS_BUG_CATCHER,
|
||||
.species = {SPECIES_BEAUTIFLY, SPECIES_DUSTOX, SPECIES_ILLUMISE, SPECIES_SHIFTRY, SPECIES_BRELOOM, SPECIES_NINJASK, SPECIES_SHEDINJA, SPECIES_PINSIR, SPECIES_HERACROSS, SPECIES_VOLBEAT},
|
||||
.id = 0,
|
||||
@ -306,7 +306,7 @@ const struct ApprenticeTrainer gApprentices[NUM_APPRENTICES] =
|
||||
},
|
||||
{
|
||||
.name = {_("ヒロオ"), _("LIONEL"), _("LIONEL"), _("CAIO"), _("LUDWIG"), _("LEO")},
|
||||
.otId = 0xCF09,
|
||||
.otId = 53001,
|
||||
.facilityClass = FACILITY_CLASS_YOUNGSTER,
|
||||
.species = {SPECIES_SWELLOW, SPECIES_SWALOT, SPECIES_SHUCKLE, SPECIES_MANECTRIC, SPECIES_TORKOAL, SPECIES_HARIYAMA, SPECIES_MIGHTYENA, SPECIES_LUDICOLO, SPECIES_CRAWDAUNT, SPECIES_WHISCASH},
|
||||
.id = 1,
|
||||
@ -314,7 +314,7 @@ const struct ApprenticeTrainer gApprentices[NUM_APPRENTICES] =
|
||||
},
|
||||
{
|
||||
.name = {_("ケイジ"), _("SONNY"), _("HERVE"), _("FEDRO"), _("WENZEL"), _("SANTI")},
|
||||
.otId = 0x2E34,
|
||||
.otId = 11828,
|
||||
.facilityClass = FACILITY_CLASS_SCHOOL_KID_M,
|
||||
.species = {SPECIES_LINOONE, SPECIES_MIGHTYENA, SPECIES_WHISCASH, SPECIES_ZANGOOSE, SPECIES_SEVIPER, SPECIES_NINETALES, SPECIES_KECLEON, SPECIES_SHUCKLE, SPECIES_MANECTRIC, SPECIES_MACHAMP},
|
||||
.id = 2,
|
||||
@ -322,7 +322,7 @@ const struct ApprenticeTrainer gApprentices[NUM_APPRENTICES] =
|
||||
},
|
||||
{
|
||||
.name = {_("ユラ"), _("LAYLA"), _("LAYLA"), _("ASTRID"), _("SONJA"), _("LOLA")},
|
||||
.otId = 0x84EF,
|
||||
.otId = 34031,
|
||||
.facilityClass = FACILITY_CLASS_LASS,
|
||||
.species = {SPECIES_SWALOT, SPECIES_XATU, SPECIES_ALTARIA, SPECIES_GOLDUCK, SPECIES_FLYGON, SPECIES_ALAKAZAM, SPECIES_GARDEVOIR, SPECIES_WAILORD, SPECIES_GRUMPIG, SPECIES_MIGHTYENA},
|
||||
.id = 3,
|
||||
@ -330,7 +330,7 @@ const struct ApprenticeTrainer gApprentices[NUM_APPRENTICES] =
|
||||
},
|
||||
{
|
||||
.name = {_("ヨウカ"), _("MACY"), _("AMELIE"), _("CLEO"), _("MARIA"), _("ELISA")},
|
||||
.otId = 0x1E43,
|
||||
.otId = 7747,
|
||||
.facilityClass = FACILITY_CLASS_SCHOOL_KID_F,
|
||||
.species = {SPECIES_WIGGLYTUFF, SPECIES_LINOONE, SPECIES_KINGDRA, SPECIES_DELCATTY, SPECIES_RAICHU, SPECIES_FEAROW, SPECIES_STARMIE, SPECIES_MEDICHAM, SPECIES_SHIFTRY, SPECIES_BEAUTIFLY},
|
||||
.id = 4,
|
||||
@ -338,7 +338,7 @@ const struct ApprenticeTrainer gApprentices[NUM_APPRENTICES] =
|
||||
},
|
||||
{
|
||||
.name = {_("ヤスシ"), _("DONTE"), _("BRAHIM"), _("GLAUCO"), _("JOSEF"), _("ROQUE")},
|
||||
.otId = 0x379F,
|
||||
.otId = 14239,
|
||||
.facilityClass = FACILITY_CLASS_RUNNING_TRIATHLETE_M,
|
||||
.species = {SPECIES_STARMIE, SPECIES_DODRIO, SPECIES_AGGRON, SPECIES_MAGNETON, SPECIES_MACHAMP, SPECIES_ARMALDO, SPECIES_HERACROSS, SPECIES_NOSEPASS, SPECIES_EXPLOUD, SPECIES_MIGHTYENA},
|
||||
.id = 5,
|
||||
@ -346,7 +346,7 @@ const struct ApprenticeTrainer gApprentices[NUM_APPRENTICES] =
|
||||
},
|
||||
{
|
||||
.name = {_("ミサオ"), _("AMIRA"), _("LAURE"), _("DAFNE"), _("AMELIE"), _("LARA")},
|
||||
.otId = 0xF555,
|
||||
.otId = 62805,
|
||||
.facilityClass = FACILITY_CLASS_RUNNING_TRIATHLETE_F,
|
||||
.species = {SPECIES_STARMIE, SPECIES_DODRIO, SPECIES_MAGNETON, SPECIES_MEDICHAM, SPECIES_MIGHTYENA, SPECIES_GLALIE, SPECIES_GOLEM, SPECIES_ELECTRODE, SPECIES_PELIPPER, SPECIES_SHARPEDO},
|
||||
.id = 6,
|
||||
@ -354,7 +354,7 @@ const struct ApprenticeTrainer gApprentices[NUM_APPRENTICES] =
|
||||
},
|
||||
{
|
||||
.name = {_("カズサ"), _("KALI"), _("JODIE"), _("ILENIA"), _("KARO"), _("ELSA")},
|
||||
.otId = 0x8D26,
|
||||
.otId = 36134,
|
||||
.facilityClass = FACILITY_CLASS_BEAUTY,
|
||||
.species = {SPECIES_NINETALES, SPECIES_ALAKAZAM, SPECIES_SCEPTILE, SPECIES_SALAMENCE, SPECIES_GOLDUCK, SPECIES_MAWILE, SPECIES_WEEZING, SPECIES_LANTURN, SPECIES_GARDEVOIR, SPECIES_MILOTIC},
|
||||
.id = 7,
|
||||
@ -362,7 +362,7 @@ const struct ApprenticeTrainer gApprentices[NUM_APPRENTICES] =
|
||||
},
|
||||
{
|
||||
.name = {_("スミレ"), _("ANNIE"), _("ANNIE"), _("IMELDA"), _("INES"), _("ROSA")},
|
||||
.otId = 0x800C,
|
||||
.otId = 32780,
|
||||
.facilityClass = FACILITY_CLASS_AROMA_LADY,
|
||||
.species = {SPECIES_SCEPTILE, SPECIES_VILEPLUME, SPECIES_BELLOSSOM, SPECIES_ROSELIA, SPECIES_CORSOLA, SPECIES_FLYGON, SPECIES_BRELOOM, SPECIES_MILOTIC, SPECIES_ALTARIA, SPECIES_CRADILY},
|
||||
.id = 8,
|
||||
@ -370,7 +370,7 @@ const struct ApprenticeTrainer gApprentices[NUM_APPRENTICES] =
|
||||
},
|
||||
{
|
||||
.name = {_("アキノリ"), _("DILLEN"), _("RENE"), _("INDRO"), _("DETLEF"), _("PEDRO")},
|
||||
.otId = 0x469f,
|
||||
.otId = 18079,
|
||||
.facilityClass = FACILITY_CLASS_HIKER,
|
||||
.species = {SPECIES_SKARMORY, SPECIES_GOLEM, SPECIES_BLAZIKEN, SPECIES_CAMERUPT, SPECIES_DONPHAN, SPECIES_MUK, SPECIES_SALAMENCE, SPECIES_TROPIUS, SPECIES_SOLROCK, SPECIES_RHYDON},
|
||||
.id = 9,
|
||||
@ -378,7 +378,7 @@ const struct ApprenticeTrainer gApprentices[NUM_APPRENTICES] =
|
||||
},
|
||||
{
|
||||
.name = {_("トウゾウ"), _("DALLAS"), _("BRUNO"), _("LEARCO"), _("ANSGAR"), _("MANOLO")},
|
||||
.otId = 0x71FC,
|
||||
.otId = 29180,
|
||||
.facilityClass = FACILITY_CLASS_FISHERMAN,
|
||||
.species = {SPECIES_SEAKING, SPECIES_STARMIE, SPECIES_GOLDUCK, SPECIES_TENTACRUEL, SPECIES_OCTILLERY, SPECIES_GOREBYSS, SPECIES_GLALIE, SPECIES_WAILORD, SPECIES_SHARPEDO, SPECIES_KINGDRA},
|
||||
.id = 10,
|
||||
@ -386,7 +386,7 @@ const struct ApprenticeTrainer gApprentices[NUM_APPRENTICES] =
|
||||
},
|
||||
{
|
||||
.name = {_("セイヤ"), _("FRANK"), _("FRANK"), _("OLINDO"), _("FRANK"), _("MAURO")},
|
||||
.otId = 0xA39E,
|
||||
.otId = 41886,
|
||||
.facilityClass = FACILITY_CLASS_SAILOR,
|
||||
.species = {SPECIES_QUAGSIRE, SPECIES_STARMIE, SPECIES_PELIPPER, SPECIES_CRAWDAUNT, SPECIES_WAILORD, SPECIES_GYARADOS, SPECIES_SWAMPERT, SPECIES_LANTURN, SPECIES_WHISCASH, SPECIES_SHUCKLE},
|
||||
.id = 11,
|
||||
@ -394,7 +394,7 @@ const struct ApprenticeTrainer gApprentices[NUM_APPRENTICES] =
|
||||
},
|
||||
{
|
||||
.name = {_("リュウジ"), _("LAMONT"), _("XAV"), _("ORFEO"), _("JÜRGEN"), _("JORGE")},
|
||||
.otId = 0xE590,
|
||||
.otId = 58768,
|
||||
.facilityClass = FACILITY_CLASS_GUITARIST,
|
||||
.species = {SPECIES_ABSOL, SPECIES_CROBAT, SPECIES_EXPLOUD, SPECIES_MAGNETON, SPECIES_SHARPEDO, SPECIES_MANECTRIC, SPECIES_METAGROSS, SPECIES_ELECTRODE, SPECIES_NOSEPASS, SPECIES_WEEZING},
|
||||
.id = 12,
|
||||
@ -402,7 +402,7 @@ const struct ApprenticeTrainer gApprentices[NUM_APPRENTICES] =
|
||||
},
|
||||
{
|
||||
.name = {_("カツアキ"), _("TYRESE"), _("ANDY"), _("PARIDE"), _("DAVID"), _("CHICHO")},
|
||||
.otId = 0xD018,
|
||||
.otId = 53272,
|
||||
.facilityClass = FACILITY_CLASS_BLACK_BELT,
|
||||
.species = {SPECIES_BLAZIKEN, SPECIES_GOLEM, SPECIES_MACHAMP, SPECIES_RHYDON, SPECIES_HARIYAMA, SPECIES_AGGRON, SPECIES_MEDICHAM, SPECIES_ZANGOOSE, SPECIES_VIGOROTH, SPECIES_SLAKING},
|
||||
.id = 13,
|
||||
@ -410,7 +410,7 @@ const struct ApprenticeTrainer gApprentices[NUM_APPRENTICES] =
|
||||
},
|
||||
{
|
||||
.name = {_("トシミツ"), _("DANTE"), _("DANTE"), _("RAOUL"), _("LOTHAR"), _("PABLO")},
|
||||
.otId = 0xBC75,
|
||||
.otId = 48245,
|
||||
.facilityClass = FACILITY_CLASS_RUIN_MANIAC,
|
||||
.species = {SPECIES_SCEPTILE, SPECIES_SANDSLASH, SPECIES_FLYGON, SPECIES_CLAYDOL, SPECIES_ARMALDO, SPECIES_CROBAT, SPECIES_CRADILY, SPECIES_SOLROCK, SPECIES_LUNATONE, SPECIES_GOLEM},
|
||||
.id = 14,
|
||||
@ -418,7 +418,7 @@ const struct ApprenticeTrainer gApprentices[NUM_APPRENTICES] =
|
||||
},
|
||||
{
|
||||
.name = {_("ローウェン"), _("ARTURO"), _("ARTURO"), _("ROMOLO"), _("BRIAN"), _("ARTURO")},
|
||||
.otId = 0xFA02,
|
||||
.otId = 64002,
|
||||
.facilityClass = FACILITY_CLASS_GENTLEMAN,
|
||||
.species = {SPECIES_ABSOL, SPECIES_MIGHTYENA, SPECIES_ALAKAZAM, SPECIES_BANETTE, SPECIES_NINETALES, SPECIES_CLAYDOL, SPECIES_MUK, SPECIES_SALAMENCE, SPECIES_WALREIN, SPECIES_DUSCLOPS},
|
||||
.id = 15,
|
||||
|
||||
@ -2,7 +2,7 @@ const u32 gBerryCheck_Gfx[] = INCBIN_U32("graphics/bag/check_berry.4bpp.lz");
|
||||
const u32 gBerryCheck_Pal[] = INCBIN_U32("graphics/bag/check_berry.gbapal.lz");
|
||||
|
||||
const u32 gBerryTag_Gfx[] = INCBIN_U32("graphics/bag/berry_tag.bin.lz");
|
||||
const u32 gBerryTag_Pal[] = INCBIN_U32("graphics/bag/berry_tag_title.bin.lz");
|
||||
const u32 gBerryTag_Tilemap[] = INCBIN_U32("graphics/bag/berry_tag_title.bin.lz");
|
||||
|
||||
const u32 gBerryCheckCircle_Gfx[] = INCBIN_U32("graphics/bag/check_berry_circle.4bpp.lz");
|
||||
|
||||
|
||||
@ -451,7 +451,7 @@ ALIGNED(4) static const u8 sText_NobodyHasRegistered[] = _("Nobody has registere
|
||||
ALIGNED(4) static const u8 sText_ChooseRequestedMonType[] = _("Please choose the type of POKéMON\nthat you would like in the trade.\n");
|
||||
ALIGNED(4) static const u8 sText_WhichMonWillYouOffer[] = _("Which of your party POKéMON will\nyou offer in trade?\p");
|
||||
ALIGNED(4) static const u8 sText_RegistrationCanceled[] = _("Registration has been canceled.\p");
|
||||
ALIGNED(4) static const u8 sText_RegistraionCompleted[] = _("Registration has been completed.\p");
|
||||
ALIGNED(4) static const u8 sText_RegistrationCompleted[] = _("Registration has been completed.\p");
|
||||
ALIGNED(4) static const u8 sText_TradeCanceled[] = _("The trade has been canceled.\p");
|
||||
ALIGNED(4) static const u8 sText_CancelRegistrationOfMon[] = _("Cancel the registration of your\nLv. {STR_VAR_2} {STR_VAR_1}?");
|
||||
ALIGNED(4) static const u8 sText_CancelRegistrationOfEgg[] = _("Cancel the registration of your\nEGG?");
|
||||
@ -867,7 +867,8 @@ static const struct WindowTemplate sWindowTemplate_TradingBoardRequestType = {
|
||||
.baseBlock = 0x0001
|
||||
};
|
||||
|
||||
static const struct ListMenuItem sTradingBoardTypes[NUMBER_OF_MON_TYPES] = {
|
||||
// Subtract two from the total type count to handle in-battle types not for display
|
||||
static const struct ListMenuItem sTradingBoardTypes[NUMBER_OF_MON_TYPES - 2] = {
|
||||
{ gTypesInfo[TYPE_NORMAL].name, TYPE_NORMAL },
|
||||
{ gTypesInfo[TYPE_FIRE].name, TYPE_FIRE },
|
||||
{ gTypesInfo[TYPE_WATER].name, TYPE_WATER },
|
||||
|
||||
@ -1932,7 +1932,7 @@ static void ClearPlaceDecorationGraphicsDataBuffer(struct PlaceDecorationGraphic
|
||||
|
||||
static void CopyPalette(u16 *dest, u16 pal)
|
||||
{
|
||||
CpuFastCopy(&((u16 *)gTilesetPointer_SecretBase->palettes)[pal * 16], dest, sizeof(u16) * 16);
|
||||
CpuFastCopy(&gTilesetPointer_SecretBase->palettes[pal], dest, PLTT_SIZE_4BPP);
|
||||
}
|
||||
|
||||
static void CopyTile(u8 *dest, u16 tile)
|
||||
@ -1945,7 +1945,7 @@ static void CopyTile(u8 *dest, u16 tile)
|
||||
if (tile != 0)
|
||||
tile &= 0x03FF;
|
||||
|
||||
CpuFastCopy(&((u8 *)gTilesetPointer_SecretBase->tiles)[tile * TILE_SIZE_4BPP], buffer, TILE_SIZE_4BPP);
|
||||
CpuFastCopy(&gTilesetPointer_SecretBase->tiles[tile * TILE_SIZE_4BPP / sizeof(u32)], buffer, TILE_SIZE_4BPP);
|
||||
switch (mode)
|
||||
{
|
||||
case 0:
|
||||
@ -1987,7 +1987,7 @@ static void SetDecorSelectionBoxTiles(struct PlaceDecorationGraphicsDataBuffer *
|
||||
|
||||
static u16 GetMetatile(u16 tile)
|
||||
{
|
||||
return ((u16 *)gTilesetPointer_SecretBaseRedCave->metatiles)[tile] & 0xFFF;
|
||||
return gTilesetPointer_SecretBaseRedCave->metatiles[tile] & 0xFFF;
|
||||
}
|
||||
|
||||
static void SetDecorSelectionMetatiles(struct PlaceDecorationGraphicsDataBuffer *data)
|
||||
@ -2058,7 +2058,7 @@ static u8 gpu_pal_decompress_alloc_tag_and_upload(struct PlaceDecorationGraphics
|
||||
SetDecorSelectionMetatiles(data);
|
||||
SetDecorSelectionBoxOamAttributes(data->decoration->shape);
|
||||
SetDecorSelectionBoxTiles(data);
|
||||
CopyPalette(data->palette, ((u16 *)gTilesetPointer_SecretBaseRedCave->metatiles)[(data->decoration->tiles[0] * NUM_TILES_PER_METATILE) + 7] >> 12);
|
||||
CopyPalette(data->palette, gTilesetPointer_SecretBaseRedCave->metatiles[(data->decoration->tiles[0] * NUM_TILES_PER_METATILE) + 7] >> 12);
|
||||
LoadSpritePalette(&sSpritePal_PlaceDecoration);
|
||||
return CreateSprite(&sDecorationSelectorSpriteTemplate, 0, 0, 0);
|
||||
}
|
||||
@ -2114,7 +2114,7 @@ static u8 AddDecorationIconObjectFromObjectEvent(u16 tilesTag, u16 paletteTag, u
|
||||
SetDecorSelectionMetatiles(&sPlaceDecorationGraphicsDataBuffer);
|
||||
SetDecorSelectionBoxOamAttributes(sPlaceDecorationGraphicsDataBuffer.decoration->shape);
|
||||
SetDecorSelectionBoxTiles(&sPlaceDecorationGraphicsDataBuffer);
|
||||
CopyPalette(sPlaceDecorationGraphicsDataBuffer.palette, ((u16 *)gTilesetPointer_SecretBaseRedCave->metatiles)[(sPlaceDecorationGraphicsDataBuffer.decoration->tiles[0] * NUM_TILES_PER_METATILE) + 7] >> 12);
|
||||
CopyPalette(sPlaceDecorationGraphicsDataBuffer.palette, gTilesetPointer_SecretBaseRedCave->metatiles[(sPlaceDecorationGraphicsDataBuffer.decoration->tiles[0] * NUM_TILES_PER_METATILE) + 7] >> 12);
|
||||
sheet.data = sPlaceDecorationGraphicsDataBuffer.image;
|
||||
sheet.size = sDecorShapeSizes[sPlaceDecorationGraphicsDataBuffer.decoration->shape] * TILE_SIZE_4BPP;
|
||||
sheet.tag = tilesTag;
|
||||
|
||||
@ -610,7 +610,7 @@ const u16 gBattleAnimUnused_Unknown2[] = INCBIN_U16("graphics/battle_anims/unuse
|
||||
const u16 gBattleAnimUnused_Unknown3[] = INCBIN_U16("graphics/battle_anims/unused/unknown_3.bin");
|
||||
|
||||
const u32 gBattleAnimUnusedGfx_LineSketch2[] = INCBIN_U32("graphics/battle_anims/unused/line_sketch_2.8bpp.lz");
|
||||
const u16 gBattleAnimUnusedPal_LineSketch2[] = INCBIN_U16("graphics/battle_anims/unused/line_sketch_2.gbapal.lz");
|
||||
const u32 gBattleAnimUnusedPal_LineSketch2[] = INCBIN_U32("graphics/battle_anims/unused/line_sketch_2.gbapal.lz");
|
||||
const u32 gBattleAnimUnusedTilemap_LineSketch2[] = INCBIN_U32("graphics/battle_anims/unused/line_sketch_2.bin.lz");
|
||||
|
||||
const u32 gBattleAnimSpriteGfx_BlueLines[] = INCBIN_U32("graphics/battle_anims/sprites/blue_lines.4bpp.lz");
|
||||
|
||||
@ -5344,7 +5344,7 @@ static void PrintStatsScreen_NameGender(u8 taskId, u32 num, u32 value)
|
||||
value = NationalToHoennOrder(num);
|
||||
else
|
||||
value = num;
|
||||
ConvertIntToDecimalStringN(StringCopy(str, gText_NumberClear01), value, STR_CONV_MODE_LEADING_ZEROS, 3);
|
||||
ConvertIntToDecimalStringN(StringCopy(str, gText_NumberClear01), value, STR_CONV_MODE_LEADING_ZEROS, 4);
|
||||
PrintStatsScreenTextSmall(WIN_STATS_NAME_GENDER, str, base_x, base_y + 10);
|
||||
|
||||
//Gender ratio //MON_GENDERLESS == 0xFF
|
||||
|
||||
@ -35,7 +35,7 @@ EWRAM_DATA u8 gMsgBoxIsCancelable = FALSE;
|
||||
|
||||
extern ScrCmdFunc gScriptCmdTable[];
|
||||
extern ScrCmdFunc gScriptCmdTableEnd[];
|
||||
extern void *gNullScriptPtr;
|
||||
extern void * const gNullScriptPtr;
|
||||
|
||||
void InitScriptContext(struct ScriptContext *ctx, void *cmdTable, void *cmdTableEnd)
|
||||
{
|
||||
|
||||
@ -75,7 +75,7 @@ static u8 ReadData();
|
||||
static void EnableGpioPortRead();
|
||||
static void DisableGpioPortRead();
|
||||
|
||||
static const char AgbLibRtcVersion[] = "SIIRTC_V001";
|
||||
USED static const char AgbLibRtcVersion[] = "SIIRTC_V001";
|
||||
|
||||
void SiiRtcUnprotect(void)
|
||||
{
|
||||
|
||||
@ -3125,7 +3125,7 @@ static void Task_RunUnionRoom(u8 taskId)
|
||||
break;
|
||||
case UR_STATE_REGISTER_COMPLETE:
|
||||
SetTradeBoardRegisteredMonInfo(sUnionRoomTrade.type, sUnionRoomTrade.playerSpecies, sUnionRoomTrade.playerLevel);
|
||||
ScheduleFieldMessageAndExit(sText_RegistraionCompleted);
|
||||
ScheduleFieldMessageAndExit(sText_RegistrationCompleted);
|
||||
break;
|
||||
case UR_STATE_CANCEL_REGISTRATION_PROMPT:
|
||||
switch (UnionRoomHandleYesNo(&uroom->textState, FALSE))
|
||||
|
||||
@ -20,3 +20,31 @@ SINGLE_BATTLE_TEST("Aftermath damages the attacker by 1/4th of its max HP if fai
|
||||
EXPECT_EQ(aftermathDamage, opponent->maxHP / 4);
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_BATTLE_TEST("Aftermath ability pop-up will be displayed correctly: player point of view")
|
||||
{
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_SHROOMISH) { Ability(ABILITY_POISON_HEAL); };
|
||||
OPPONENT(SPECIES_VOLTORB) { HP(1); Ability(ABILITY_AFTERMATH); };
|
||||
} WHEN {
|
||||
TURN {MOVE(player, MOVE_HEADBUTT);}
|
||||
} SCENE {
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_HEADBUTT, player);
|
||||
MESSAGE("The opposing Voltorb fainted!");
|
||||
ABILITY_POPUP(opponent, ABILITY_AFTERMATH);
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_BATTLE_TEST("Aftermath ability pop-up will be displayed correctly: opponent point of view")
|
||||
{
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_VOLTORB) { HP(1); Ability(ABILITY_AFTERMATH); };
|
||||
OPPONENT(SPECIES_SHROOMISH) { Ability(ABILITY_POISON_HEAL); };
|
||||
} WHEN {
|
||||
TURN {MOVE(opponent, MOVE_HEADBUTT);}
|
||||
} SCENE {
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_HEADBUTT, opponent);
|
||||
MESSAGE("Voltorb fainted!");
|
||||
ABILITY_POPUP(player, ABILITY_AFTERMATH);
|
||||
}
|
||||
}
|
||||
|
||||
@ -412,3 +412,43 @@ SINGLE_BATTLE_TEST("Clear Body, Full Metal Body, and White Smoke don't prevent S
|
||||
MESSAGE("The opposing Metang used Celebrate!");
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_BATTLE_TEST("Clear Body, Full Metal Body, and White Smoke protect from Protect's secondary effects")
|
||||
{
|
||||
u32 move = MOVE_NONE;
|
||||
u32 species = SPECIES_NONE;
|
||||
u32 ability = ABILITY_NONE;
|
||||
|
||||
static const u32 moves[] = {
|
||||
MOVE_SPIKY_SHIELD,
|
||||
MOVE_KINGS_SHIELD,
|
||||
MOVE_SILK_TRAP,
|
||||
MOVE_OBSTRUCT,
|
||||
};
|
||||
|
||||
for (u32 j = 0; j < ARRAY_COUNT(moves); j++)
|
||||
{
|
||||
PARAMETRIZE{ move = moves[j]; species = SPECIES_METANG; ability = ABILITY_CLEAR_BODY; }
|
||||
PARAMETRIZE{ move = moves[j]; species = SPECIES_SOLGALEO; ability = ABILITY_FULL_METAL_BODY; }
|
||||
PARAMETRIZE{ move = moves[j]; species = SPECIES_TORKOAL; ability = ABILITY_WHITE_SMOKE; }
|
||||
}
|
||||
|
||||
GIVEN {
|
||||
PLAYER(species) { Ability(ability); }
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
TURN { MOVE(opponent, move); MOVE(player, MOVE_TACKLE); }
|
||||
} SCENE {
|
||||
ANIMATION(ANIM_TYPE_MOVE, move, opponent);
|
||||
NONE_OF {
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player);
|
||||
if (move == MOVE_KINGS_SHIELD) {
|
||||
MESSAGE("Wobbuffet's Attack fell!");
|
||||
} else if (move == MOVE_SILK_TRAP) {
|
||||
MESSAGE("Wobbuffet's Speed fell!");
|
||||
} else if (move == MOVE_OBSTRUCT) {
|
||||
MESSAGE("Wobbuffet's Defense harshly fell!");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -47,3 +47,22 @@ SINGLE_BATTLE_TEST("Emergency Exit switches out when going below 50% max-HP but
|
||||
ABILITY_POPUP(opponent, ABILITY_EMERGENCY_EXIT);
|
||||
}
|
||||
}
|
||||
|
||||
DOUBLE_BATTLE_TEST("Only the fastest Wimp Out (Emergency Exit) user switches out")
|
||||
{
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_ZAPDOS) { Speed(10); }
|
||||
PLAYER(SPECIES_WOBBUFFET) { Speed(10); }
|
||||
OPPONENT(SPECIES_WIMPOD) { Speed(1); Ability(ABILITY_WIMP_OUT); Item(ITEM_FOCUS_SASH); };
|
||||
OPPONENT(SPECIES_WIMPOD) { Speed(2); Ability(ABILITY_WIMP_OUT); Item(ITEM_FOCUS_SASH); };
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Speed(10); }
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Speed(10); }
|
||||
} WHEN {
|
||||
TURN { MOVE(playerLeft, MOVE_HYPER_VOICE); SEND_OUT(opponentRight, 2); }
|
||||
} SCENE {
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_HYPER_VOICE, playerLeft);
|
||||
HP_BAR(opponentLeft);
|
||||
HP_BAR(opponentRight);
|
||||
ABILITY_POPUP(opponentRight, ABILITY_WIMP_OUT);
|
||||
}
|
||||
}
|
||||
|
||||
@ -89,3 +89,25 @@ DOUBLE_BATTLE_TEST("Hospitality does not trigger if there is no ally on the fiel
|
||||
NOT ABILITY_POPUP(playerLeft, ABILITY_HOSPITALITY);
|
||||
}
|
||||
}
|
||||
|
||||
DOUBLE_BATTLE_TEST("Hospitality is blocked by Heal Block")
|
||||
{
|
||||
GIVEN {
|
||||
ASSUME(GetMoveEffect(MOVE_HEAL_BLOCK) == EFFECT_HEAL_BLOCK);
|
||||
PLAYER(SPECIES_WOBBUFFET)
|
||||
PLAYER(SPECIES_WOBBUFFET) { HP(75); MaxHP(100); }
|
||||
PLAYER(SPECIES_POLTCHAGEIST) { Ability(ABILITY_HOSPITALITY); }
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
TURN { MOVE(opponentLeft, MOVE_HEAL_BLOCK, target: playerRight); }
|
||||
TURN { SWITCH(playerLeft, 2); }
|
||||
} SCENE {
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_HEAL_BLOCK, opponentLeft);
|
||||
NONE_OF {
|
||||
ABILITY_POPUP(playerLeft, ABILITY_HOSPITALITY);
|
||||
MESSAGE("Wobbuffet drank down all the matcha that Poltchageist made!");
|
||||
HP_BAR(playerRight, damage: -25);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -122,16 +122,30 @@ AI_DOUBLE_BATTLE_TEST("AI will not try to switch for the same pokemon for 2 spot
|
||||
}
|
||||
}
|
||||
|
||||
AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_MON_CHOICES: U-Turn will send out Ace Mon if it's the only one remaining")
|
||||
AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_MON_CHOICES: Switch effect moves will send out Ace Mon if it's the only one remaining")
|
||||
{
|
||||
u32 aiMove = 0;
|
||||
// Moves testing all effects in IsSwitchOutEffect
|
||||
PARAMETRIZE { aiMove = MOVE_U_TURN; }
|
||||
PARAMETRIZE { aiMove = MOVE_TELEPORT; }
|
||||
PARAMETRIZE { aiMove = MOVE_PARTING_SHOT; }
|
||||
PARAMETRIZE { aiMove = MOVE_BATON_PASS; }
|
||||
PARAMETRIZE { aiMove = MOVE_CHILLY_RECEPTION; }
|
||||
PARAMETRIZE { aiMove = MOVE_SHED_TAIL; }
|
||||
GIVEN {
|
||||
ASSUME(GetMoveEffect(MOVE_U_TURN) == EFFECT_HIT_ESCAPE);
|
||||
ASSUME(GetMoveEffect(MOVE_TELEPORT) == EFFECT_TELEPORT);
|
||||
ASSUME(GetMoveEffect(MOVE_PARTING_SHOT) == EFFECT_PARTING_SHOT);
|
||||
ASSUME(GetMoveEffect(MOVE_BATON_PASS) == EFFECT_BATON_PASS);
|
||||
ASSUME(GetMoveEffect(MOVE_CHILLY_RECEPTION) == EFFECT_CHILLY_RECEPTION);
|
||||
ASSUME(GetMoveEffect(MOVE_SHED_TAIL) == EFFECT_SHED_TAIL);
|
||||
WITH_CONFIG(GEN_CONFIG_TELEPORT_BEHAVIOR, GEN_8);
|
||||
AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SMART_MON_CHOICES | AI_FLAG_ACE_POKEMON);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_U_TURN); }
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Moves(aiMove); }
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
TURN { EXPECT_MOVE(opponent, MOVE_U_TURN); EXPECT_SEND_OUT(opponent, 1); }
|
||||
TURN { EXPECT_MOVE(opponent, aiMove); EXPECT_SEND_OUT(opponent, 1); }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -1624,3 +1624,15 @@ SINGLE_BATTLE_TEST("Dynamax: Dynamax is reverted before switch out")
|
||||
MESSAGE("Wobbuffet used Tackle!");
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_BATTLE_TEST("Dynamax: Destiny Bond if a dynamaxed battler is present on field")
|
||||
{
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
TURN { MOVE(opponent, MOVE_DESTINY_BOND); MOVE(player, MOVE_TACKLE, gimmick: GIMMICK_DYNAMAX); }
|
||||
} SCENE {
|
||||
MESSAGE("The move was blocked by the power of Dynamax!");
|
||||
}
|
||||
}
|
||||
|
||||
@ -88,3 +88,34 @@ SINGLE_BATTLE_TEST("Clear Amulet prevents secondary effects that reduce stats")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_BATTLE_TEST("Clear Amulet protects from Protect's secondary effects")
|
||||
{
|
||||
u32 move;
|
||||
|
||||
PARAMETRIZE { move = MOVE_SPIKY_SHIELD; }
|
||||
PARAMETRIZE { move = MOVE_BANEFUL_BUNKER; }
|
||||
PARAMETRIZE { move = MOVE_BURNING_BULWARK; }
|
||||
PARAMETRIZE { move = MOVE_KINGS_SHIELD; }
|
||||
PARAMETRIZE { move = MOVE_SILK_TRAP; }
|
||||
PARAMETRIZE { move = MOVE_OBSTRUCT; }
|
||||
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_CLEAR_AMULET); }
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
TURN { MOVE(opponent, move); MOVE(player, MOVE_TACKLE); }
|
||||
} SCENE {
|
||||
ANIMATION(ANIM_TYPE_MOVE, move, opponent);
|
||||
NONE_OF {
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player);
|
||||
if (move == MOVE_KINGS_SHIELD) {
|
||||
MESSAGE("Wobbuffet's Attack fell!");
|
||||
} else if (move == MOVE_SILK_TRAP) {
|
||||
MESSAGE("Wobbuffet's Speed fell!");
|
||||
} else if (move == MOVE_OBSTRUCT) {
|
||||
MESSAGE("Wobbuffet's Defense harshly fell!");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -137,3 +137,26 @@ DOUBLE_BATTLE_TEST("Eject Pack will not trigger if the conditions are not met")
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_BATTLE_TEST("Eject Pack will miss timing to switch out user if Eject Button was activated on target")
|
||||
{
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_WOBBUFFET) { Speed(10); Item(ITEM_EJECT_PACK); }
|
||||
PLAYER(SPECIES_WYNAUT) { Speed(10); }
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Speed(5); Item(ITEM_EJECT_BUTTON); }
|
||||
OPPONENT(SPECIES_WYNAUT) { Speed(10); }
|
||||
} WHEN {
|
||||
TURN { MOVE(player, MOVE_OVERHEAT); SEND_OUT(opponent, 1); }
|
||||
} SCENE {
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_OVERHEAT, player);
|
||||
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player);
|
||||
NONE_OF {
|
||||
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player);
|
||||
MESSAGE("Wobbuffet is switched out with the Eject Pack!");
|
||||
}
|
||||
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent);
|
||||
} THEN {
|
||||
EXPECT(player->species == SPECIES_WOBBUFFET);
|
||||
EXPECT(opponent->species == SPECIES_WYNAUT);
|
||||
}
|
||||
}
|
||||
|
||||
@ -97,9 +97,9 @@ SINGLE_BATTLE_TEST("Protective Pads protects from Protect's secondary effects")
|
||||
if (move == MOVE_SPIKY_SHIELD) {
|
||||
HP_BAR(player);
|
||||
} else if (move == MOVE_BANEFUL_BUNKER) {
|
||||
STATUS_ICON(player, STATUS1_BURN);
|
||||
} else if (move == MOVE_BURNING_BULWARK) {
|
||||
STATUS_ICON(player, STATUS1_POISON);
|
||||
} else if (move == MOVE_BURNING_BULWARK) {
|
||||
STATUS_ICON(player, STATUS1_BURN);
|
||||
} else if (move == MOVE_KINGS_SHIELD) {
|
||||
MESSAGE("Wobbuffet's Attack fell!");
|
||||
} else if (move == MOVE_SILK_TRAP) {
|
||||
|
||||
@ -1,6 +1,43 @@
|
||||
#include "global.h"
|
||||
#include "test/battle.h"
|
||||
|
||||
SINGLE_BATTLE_TEST("Counter is not affected by Protect effects")
|
||||
{
|
||||
u32 move;
|
||||
|
||||
PARAMETRIZE { move = MOVE_SPIKY_SHIELD; }
|
||||
PARAMETRIZE { move = MOVE_BANEFUL_BUNKER; }
|
||||
PARAMETRIZE { move = MOVE_BURNING_BULWARK; }
|
||||
PARAMETRIZE { move = MOVE_KINGS_SHIELD; }
|
||||
PARAMETRIZE { move = MOVE_SILK_TRAP; }
|
||||
PARAMETRIZE { move = MOVE_OBSTRUCT; }
|
||||
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
TURN { MOVE(opponent, move); MOVE(player, MOVE_COUNTER); }
|
||||
} SCENE {
|
||||
ANIMATION(ANIM_TYPE_MOVE, move, opponent);
|
||||
NONE_OF {
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_COUNTER, player);
|
||||
if (move == MOVE_SPIKY_SHIELD) {
|
||||
HP_BAR(player);
|
||||
} else if (move == MOVE_BANEFUL_BUNKER) {
|
||||
STATUS_ICON(player, STATUS1_POISON);
|
||||
} else if (move == MOVE_BURNING_BULWARK) {
|
||||
STATUS_ICON(player, STATUS1_BURN);
|
||||
} else if (move == MOVE_KINGS_SHIELD) {
|
||||
MESSAGE("Wobbuffet's Attack fell!");
|
||||
} else if (move == MOVE_SILK_TRAP) {
|
||||
MESSAGE("Wobbuffet's Speed fell!");
|
||||
} else if (move == MOVE_OBSTRUCT) {
|
||||
MESSAGE("Wobbuffet's Defense harshly fell!");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
TO_DO_BATTLE_TEST("Counter will do twice as much damage received from the opponent");
|
||||
TO_DO_BATTLE_TEST("Counter cannot affect ally Pokémon");
|
||||
TO_DO_BATTLE_TEST("Counter hits the last opponent that hit the user"); //Doubles
|
||||
|
||||
@ -563,23 +563,3 @@ DOUBLE_BATTLE_TEST("Crafty Shield does not protect against moves that target all
|
||||
MESSAGE("The opposing Sunflora's Defense rose!");
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_BATTLE_TEST("Spiky Shield does not damage users on Counter or Mirror Coat")
|
||||
{
|
||||
u32 move;
|
||||
PARAMETRIZE { move = MOVE_MIRROR_COAT; }
|
||||
PARAMETRIZE { move = MOVE_COUNTER; }
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
TURN { MOVE(player, MOVE_SPIKY_SHIELD); MOVE(opponent, move); }
|
||||
} SCENE {
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_SPIKY_SHIELD, player);
|
||||
NONE_OF {
|
||||
ANIMATION(ANIM_TYPE_MOVE, move, opponent);
|
||||
HP_BAR(opponent);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -296,3 +296,49 @@ SINGLE_BATTLE_TEST("Rage Fist number of hits is copied by Transform")
|
||||
EXPECT_MUL_EQ(timesGotHit[0], Q_4_12(2.0), timesGotHit[1]);
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_BATTLE_TEST("Rage Fist base power is increased by 50 if user was hit and forces out")
|
||||
{
|
||||
s16 timesGotHit[2];
|
||||
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_REGIROCK);
|
||||
OPPONENT(SPECIES_REGIROCK);
|
||||
OPPONENT(SPECIES_WYNAUT);
|
||||
} WHEN {
|
||||
TURN { MOVE(opponent, MOVE_RAGE_FIST); MOVE(player, MOVE_DRAGON_TAIL); }
|
||||
TURN { MOVE(player, MOVE_CELEBRATE); SWITCH(opponent, 0); }
|
||||
TURN { MOVE(opponent, MOVE_RAGE_FIST); MOVE(player, MOVE_CELEBRATE); }
|
||||
} SCENE {
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_RAGE_FIST, opponent);
|
||||
HP_BAR(player, captureDamage: ×GotHit[0]);
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_DRAGON_TAIL, player);
|
||||
HP_BAR(opponent);
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_RAGE_FIST, opponent);
|
||||
HP_BAR(player, captureDamage: ×GotHit[1]);
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, player);
|
||||
} THEN {
|
||||
EXPECT_MUL_EQ(timesGotHit[0], Q_4_12(2.0), timesGotHit[1]);
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_BATTLE_TEST("Rage Fist doesn't get increased power if Substitute is hit")
|
||||
{
|
||||
s16 timesGotHit[2];
|
||||
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
TURN { MOVE(opponent, MOVE_RAGE_FIST); MOVE(player, MOVE_CELEBRATE); }
|
||||
TURN { MOVE(opponent, MOVE_SUBSTITUTE); MOVE(player, MOVE_TACKLE); }
|
||||
TURN { MOVE(opponent, MOVE_RAGE_FIST); MOVE(player, MOVE_CELEBRATE); }
|
||||
} SCENE {
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_RAGE_FIST, opponent);
|
||||
HP_BAR(player, captureDamage: ×GotHit[0]);
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_RAGE_FIST, opponent);
|
||||
HP_BAR(player, captureDamage: ×GotHit[1]);
|
||||
} THEN {
|
||||
EXPECT_EQ(timesGotHit[0], timesGotHit[1]);
|
||||
}
|
||||
}
|
||||
|
||||
@ -186,13 +186,9 @@ SINGLE_BATTLE_TEST("Toxic Spikes are removed by grounded Poison-type Pokémon on
|
||||
}
|
||||
}
|
||||
|
||||
// This would test for what I believe to be a bug in the mainline games.
|
||||
// A Pokémon that gets passed magnet rise should still remove the Toxic
|
||||
// Spikes even though it is airborne.
|
||||
// The test currently fails, because we don't incorporate this bug.
|
||||
SINGLE_BATTLE_TEST("Toxic Spikes are removed by Poison-type Pokémon affected by Magnet Rise on switch in")
|
||||
// Tested in Gen 7 on cartridge
|
||||
SINGLE_BATTLE_TEST("Toxic Spikes are not removed by Poison-type Pokémon affected by Magnet Rise on switch in")
|
||||
{
|
||||
KNOWN_FAILING;
|
||||
GIVEN {
|
||||
ASSUME(gSpeciesInfo[SPECIES_EKANS].types[0] == TYPE_POISON);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
@ -203,9 +199,8 @@ SINGLE_BATTLE_TEST("Toxic Spikes are removed by Poison-type Pokémon affected by
|
||||
TURN { MOVE(player, MOVE_TOXIC_SPIKES); MOVE(opponent, MOVE_BATON_PASS); SEND_OUT(opponent, 1); }
|
||||
TURN { SWITCH(opponent, 0); }
|
||||
} SCENE {
|
||||
NOT STATUS_ICON(opponent, poison: TRUE);
|
||||
MESSAGE("The poison spikes disappeared from the ground around the opposing team!");
|
||||
NOT STATUS_ICON(opponent, poison: TRUE);
|
||||
NOT MESSAGE("The poison spikes disappeared from the ground around the opposing team!");
|
||||
STATUS_ICON(opponent, poison: TRUE);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -16,15 +16,16 @@ DOUBLE_BATTLE_TEST("Spread Moves: Ability and Item effects activate correctly af
|
||||
MOVE(opponentRight, MOVE_HEAT_WAVE);
|
||||
MOVE(playerLeft, MOVE_HYPER_VOICE);
|
||||
SEND_OUT(opponentRight, 3);
|
||||
SEND_OUT(opponentLeft, 2);
|
||||
}
|
||||
} SCENE {
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_HYPER_VOICE, playerLeft);
|
||||
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponentRight);
|
||||
MESSAGE("The opposing Wobbuffet is switched out with the Eject Button!");
|
||||
MESSAGE("2 sent out Pikachu!");
|
||||
ABILITY_POPUP(opponentLeft, ABILITY_EMERGENCY_EXIT);
|
||||
MESSAGE("2 sent out Wynaut!");
|
||||
NONE_OF {
|
||||
ABILITY_POPUP(opponentLeft, ABILITY_EMERGENCY_EXIT);
|
||||
MESSAGE("2 sent out Wynaut!");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -104,6 +104,62 @@ static u32 AssignCostToRunner(void)
|
||||
return minCostProcess;
|
||||
}
|
||||
|
||||
void TestRunner_CheckMemory(void)
|
||||
{
|
||||
if (gTestRunnerState.result == TEST_RESULT_PASS
|
||||
&& !gTestRunnerState.expectLeaks)
|
||||
{
|
||||
int i;
|
||||
const struct MemBlock *head = HeapHead();
|
||||
const struct MemBlock *block = head;
|
||||
do
|
||||
{
|
||||
if (block->magic != MALLOC_SYSTEM_ID
|
||||
|| !(EWRAM_START <= (uintptr_t)block->next && (uintptr_t)block->next < EWRAM_END)
|
||||
|| (block->next <= block && block->next != head))
|
||||
{
|
||||
Test_MgbaPrintf("gHeap corrupted block at %p", block);
|
||||
gTestRunnerState.result = TEST_RESULT_ERROR;
|
||||
break;
|
||||
}
|
||||
|
||||
if (block->allocated)
|
||||
{
|
||||
const char *location = MemBlockLocation(block);
|
||||
if (location)
|
||||
{
|
||||
const char *cmpString = "src/generational_changes.c";
|
||||
for (u32 charIndex = 0; charIndex < 26; charIndex++)
|
||||
{
|
||||
if (cmpString[charIndex] != location[charIndex])
|
||||
{
|
||||
Test_MgbaPrintf("%s: %d bytes not freed", location, block->size);
|
||||
gTestRunnerState.result = TEST_RESULT_FAIL;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Test_MgbaPrintf("<unknown>: %d bytes not freed", block->size);
|
||||
gTestRunnerState.result = TEST_RESULT_FAIL;
|
||||
}
|
||||
}
|
||||
block = block->next;
|
||||
}
|
||||
while (block != head);
|
||||
|
||||
for (i = 0; i < NUM_TASKS; i++)
|
||||
{
|
||||
if (gTasks[i].isActive)
|
||||
{
|
||||
Test_MgbaPrintf(":L%s:%d - %p: task not freed", gTestRunnerState.test->filename, SourceLine(0), gTasks[i].func);
|
||||
gTestRunnerState.result = TEST_RESULT_FAIL;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CB2_TestRunner(void)
|
||||
{
|
||||
top:
|
||||
@ -242,45 +298,7 @@ top:
|
||||
gTestRunnerState.tearDown = FALSE;
|
||||
}
|
||||
|
||||
if (gTestRunnerState.result == TEST_RESULT_PASS
|
||||
&& !gTestRunnerState.expectLeaks)
|
||||
{
|
||||
int i;
|
||||
const struct MemBlock *head = HeapHead();
|
||||
const struct MemBlock *block = head;
|
||||
do
|
||||
{
|
||||
if (block->magic != MALLOC_SYSTEM_ID
|
||||
|| !(EWRAM_START <= (uintptr_t)block->next && (uintptr_t)block->next < EWRAM_END)
|
||||
|| (block->next <= block && block->next != head))
|
||||
{
|
||||
Test_MgbaPrintf("gHeap corrupted block at %p", block);
|
||||
gTestRunnerState.result = TEST_RESULT_ERROR;
|
||||
break;
|
||||
}
|
||||
|
||||
if (block->allocated)
|
||||
{
|
||||
const char *location = MemBlockLocation(block);
|
||||
if (location)
|
||||
Test_MgbaPrintf("%s: %d bytes not freed", location, block->size);
|
||||
else
|
||||
Test_MgbaPrintf("<unknown>: %d bytes not freed", block->size);
|
||||
gTestRunnerState.result = TEST_RESULT_FAIL;
|
||||
}
|
||||
block = block->next;
|
||||
}
|
||||
while (block != head);
|
||||
|
||||
for (i = 0; i < NUM_TASKS; i++)
|
||||
{
|
||||
if (gTasks[i].isActive)
|
||||
{
|
||||
Test_MgbaPrintf(":L%s:%d - %p: task not freed", gTestRunnerState.test->filename, SourceLine(0), gTasks[i].func);
|
||||
gTestRunnerState.result = TEST_RESULT_FAIL;
|
||||
}
|
||||
}
|
||||
}
|
||||
TestRunner_CheckMemory();
|
||||
|
||||
if (gTestRunnerState.test->runner == &gAssumptionsRunner)
|
||||
{
|
||||
|
||||
@ -1347,6 +1347,7 @@ static void TearDownBattle(void)
|
||||
|
||||
static void CB2_BattleTest_NextParameter(void)
|
||||
{
|
||||
TestRunner_CheckMemory();
|
||||
if (++STATE->runParameter >= STATE->parameters)
|
||||
{
|
||||
SetMainCallback2(CB2_TestRunner);
|
||||
|
||||
@ -6536,7 +6536,7 @@
|
||||
"MOVE_REVENGE",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_SLEEP_TALK",
|
||||
"MOVE_SMELLING_SALT"
|
||||
"MOVE_SMELLING_SALTS"
|
||||
],
|
||||
"TutorMoves": [
|
||||
"MOVE_COVET",
|
||||
@ -6687,7 +6687,7 @@
|
||||
"MOVE_REVENGE",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_SLEEP_TALK",
|
||||
"MOVE_SMELLING_SALT"
|
||||
"MOVE_SMELLING_SALTS"
|
||||
],
|
||||
"TutorMoves": [
|
||||
"MOVE_COVET",
|
||||
@ -7754,7 +7754,7 @@
|
||||
"MOVE_MEDITATE",
|
||||
"MOVE_POWER_TRICK",
|
||||
"MOVE_ROLLING_KICK",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_THUNDER_PUNCH",
|
||||
"MOVE_TICKLE"
|
||||
],
|
||||
@ -7890,7 +7890,7 @@
|
||||
"MOVE_MEDITATE",
|
||||
"MOVE_POWER_TRICK",
|
||||
"MOVE_ROLLING_KICK",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_THUNDER_PUNCH",
|
||||
"MOVE_TICKLE"
|
||||
],
|
||||
@ -8033,7 +8033,7 @@
|
||||
"MOVE_MEDITATE",
|
||||
"MOVE_POWER_TRICK",
|
||||
"MOVE_ROLLING_KICK",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_THUNDER_PUNCH",
|
||||
"MOVE_TICKLE"
|
||||
],
|
||||
@ -13164,7 +13164,7 @@
|
||||
"MOVE_MAGNITUDE",
|
||||
"MOVE_MUDDY_WATER",
|
||||
"MOVE_SLEEP_TALK",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SNORE",
|
||||
"MOVE_ZEN_HEADBUTT"
|
||||
],
|
||||
@ -25781,7 +25781,7 @@
|
||||
"MOVE_METRONOME",
|
||||
"MOVE_MIMIC",
|
||||
"MOVE_PRESENT",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SNORE",
|
||||
"MOVE_THUNDER_FANG"
|
||||
],
|
||||
@ -25930,7 +25930,7 @@
|
||||
"MOVE_METRONOME",
|
||||
"MOVE_MIMIC",
|
||||
"MOVE_PRESENT",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SNORE",
|
||||
"MOVE_THUNDER_FANG"
|
||||
],
|
||||
@ -31544,7 +31544,7 @@
|
||||
"MOVE_LOW_KICK",
|
||||
"MOVE_NIGHT_SLASH",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_SMELLING_SALT"
|
||||
"MOVE_SMELLING_SALTS"
|
||||
],
|
||||
"TutorMoves": [
|
||||
"MOVE_BOUNCE",
|
||||
@ -31677,7 +31677,7 @@
|
||||
"MOVE_LOW_KICK",
|
||||
"MOVE_NIGHT_SLASH",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_SMELLING_SALT"
|
||||
"MOVE_SMELLING_SALTS"
|
||||
],
|
||||
"TutorMoves": [
|
||||
"MOVE_BOUNCE",
|
||||
@ -31834,7 +31834,7 @@
|
||||
"MOVE_LOW_KICK",
|
||||
"MOVE_NIGHT_SLASH",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_SMELLING_SALT"
|
||||
"MOVE_SMELLING_SALTS"
|
||||
],
|
||||
"TutorMoves": [
|
||||
"MOVE_BLAST_BURN",
|
||||
@ -35812,7 +35812,7 @@
|
||||
"MOVE_EXTRASENSORY",
|
||||
"MOVE_FAKE_TEARS",
|
||||
"MOVE_HAMMER_ARM",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SMOKESCREEN",
|
||||
"MOVE_SNORE",
|
||||
"MOVE_TAKE_DOWN"
|
||||
@ -35943,7 +35943,7 @@
|
||||
"MOVE_EXTRASENSORY",
|
||||
"MOVE_FAKE_TEARS",
|
||||
"MOVE_HAMMER_ARM",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SMOKESCREEN",
|
||||
"MOVE_SNORE",
|
||||
"MOVE_TAKE_DOWN"
|
||||
@ -36099,7 +36099,7 @@
|
||||
"MOVE_EXTRASENSORY",
|
||||
"MOVE_FAKE_TEARS",
|
||||
"MOVE_HAMMER_ARM",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SMOKESCREEN",
|
||||
"MOVE_SNORE",
|
||||
"MOVE_TAKE_DOWN"
|
||||
@ -36155,7 +36155,7 @@
|
||||
},
|
||||
{
|
||||
"Level": 22,
|
||||
"Move": "MOVE_SMELLING_SALT"
|
||||
"Move": "MOVE_SMELLING_SALTS"
|
||||
},
|
||||
{
|
||||
"Level": 25,
|
||||
@ -36301,7 +36301,7 @@
|
||||
},
|
||||
{
|
||||
"Level": 22,
|
||||
"Move": "MOVE_SMELLING_SALT"
|
||||
"Move": "MOVE_SMELLING_SALTS"
|
||||
},
|
||||
{
|
||||
"Level": 27,
|
||||
@ -37260,7 +37260,7 @@
|
||||
"MOVE_HEAD_SMASH",
|
||||
"MOVE_IRON_HEAD",
|
||||
"MOVE_SCREECH",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_STEALTH_ROCK",
|
||||
"MOVE_STOMP",
|
||||
"MOVE_SUPERPOWER"
|
||||
@ -37395,7 +37395,7 @@
|
||||
"MOVE_HEAD_SMASH",
|
||||
"MOVE_IRON_HEAD",
|
||||
"MOVE_SCREECH",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_STEALTH_ROCK",
|
||||
"MOVE_STOMP",
|
||||
"MOVE_SUPERPOWER"
|
||||
@ -37551,7 +37551,7 @@
|
||||
"MOVE_HEAD_SMASH",
|
||||
"MOVE_IRON_HEAD",
|
||||
"MOVE_SCREECH",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_STEALTH_ROCK",
|
||||
"MOVE_STOMP",
|
||||
"MOVE_SUPERPOWER"
|
||||
@ -40230,7 +40230,7 @@
|
||||
"MOVE_PSYCHO_CUT",
|
||||
"MOVE_RAPID_SPIN",
|
||||
"MOVE_ROLE_PLAY",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_TRICK",
|
||||
"MOVE_WATER_PULSE",
|
||||
"MOVE_WISH"
|
||||
@ -40775,7 +40775,7 @@
|
||||
"MOVE_MAGICAL_LEAF",
|
||||
"MOVE_NASTY_PLOT",
|
||||
"MOVE_SEED_BOMB",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SWITCHEROO",
|
||||
"MOVE_TEETER_DANCE",
|
||||
"MOVE_WORRY_SEED"
|
||||
@ -40920,7 +40920,7 @@
|
||||
"MOVE_MAGICAL_LEAF",
|
||||
"MOVE_NASTY_PLOT",
|
||||
"MOVE_SEED_BOMB",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SWITCHEROO",
|
||||
"MOVE_TEETER_DANCE",
|
||||
"MOVE_WORRY_SEED"
|
||||
@ -55166,7 +55166,7 @@
|
||||
"MOVE_HEADBUTT",
|
||||
"MOVE_ME_FIRST",
|
||||
"MOVE_MEDITATE",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_VACUUM_WAVE",
|
||||
"MOVE_WAKE_UP_SLAP"
|
||||
],
|
||||
@ -55321,7 +55321,7 @@
|
||||
"MOVE_HEADBUTT",
|
||||
"MOVE_ME_FIRST",
|
||||
"MOVE_MEDITATE",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_VACUUM_WAVE",
|
||||
"MOVE_WAKE_UP_SLAP"
|
||||
],
|
||||
@ -56469,7 +56469,7 @@
|
||||
"MOVE_MAGNITUDE",
|
||||
"MOVE_MUDDY_WATER",
|
||||
"MOVE_SLEEP_TALK",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SNORE",
|
||||
"MOVE_ZEN_HEADBUTT"
|
||||
],
|
||||
@ -65266,7 +65266,7 @@
|
||||
"MOVE_FORESIGHT",
|
||||
"MOVE_MACH_PUNCH",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_WIDE_GUARD"
|
||||
],
|
||||
"TutorMoves": [
|
||||
@ -65403,7 +65403,7 @@
|
||||
"MOVE_FORESIGHT",
|
||||
"MOVE_MACH_PUNCH",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_WIDE_GUARD"
|
||||
],
|
||||
"TutorMoves": [
|
||||
@ -65544,7 +65544,7 @@
|
||||
"MOVE_FORESIGHT",
|
||||
"MOVE_MACH_PUNCH",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_WIDE_GUARD"
|
||||
],
|
||||
"TutorMoves": [
|
||||
@ -76069,7 +76069,7 @@
|
||||
"MOVE_KNOCK_OFF",
|
||||
"MOVE_LOW_KICK",
|
||||
"MOVE_ME_FIRST",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_VITAL_THROW"
|
||||
],
|
||||
"TutorMoves": [
|
||||
@ -76215,7 +76215,7 @@
|
||||
"MOVE_KNOCK_OFF",
|
||||
"MOVE_LOW_KICK",
|
||||
"MOVE_ME_FIRST",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_VITAL_THROW"
|
||||
],
|
||||
"TutorMoves": [
|
||||
|
||||
@ -5876,7 +5876,7 @@
|
||||
"MOVE_REVENGE",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_SLEEP_TALK",
|
||||
"MOVE_SMELLING_SALT"
|
||||
"MOVE_SMELLING_SALTS"
|
||||
],
|
||||
"TutorMoves": []
|
||||
},
|
||||
@ -6010,7 +6010,7 @@
|
||||
"MOVE_REVENGE",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_SLEEP_TALK",
|
||||
"MOVE_SMELLING_SALT"
|
||||
"MOVE_SMELLING_SALTS"
|
||||
],
|
||||
"TutorMoves": []
|
||||
},
|
||||
@ -6954,7 +6954,7 @@
|
||||
"MOVE_MEDITATE",
|
||||
"MOVE_POWER_TRICK",
|
||||
"MOVE_ROLLING_KICK",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_THUNDER_PUNCH",
|
||||
"MOVE_TICKLE"
|
||||
],
|
||||
@ -7078,7 +7078,7 @@
|
||||
"MOVE_MEDITATE",
|
||||
"MOVE_POWER_TRICK",
|
||||
"MOVE_ROLLING_KICK",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_THUNDER_PUNCH",
|
||||
"MOVE_TICKLE"
|
||||
],
|
||||
@ -7209,7 +7209,7 @@
|
||||
"MOVE_MEDITATE",
|
||||
"MOVE_POWER_TRICK",
|
||||
"MOVE_ROLLING_KICK",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_THUNDER_PUNCH",
|
||||
"MOVE_TICKLE"
|
||||
],
|
||||
@ -11879,7 +11879,7 @@
|
||||
"MOVE_MAGNITUDE",
|
||||
"MOVE_MUDDY_WATER",
|
||||
"MOVE_SLEEP_TALK",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SNORE",
|
||||
"MOVE_ZEN_HEADBUTT"
|
||||
],
|
||||
@ -23106,7 +23106,7 @@
|
||||
"MOVE_METRONOME",
|
||||
"MOVE_MIMIC",
|
||||
"MOVE_PRESENT",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SNORE",
|
||||
"MOVE_THUNDER_FANG"
|
||||
],
|
||||
@ -23242,7 +23242,7 @@
|
||||
"MOVE_METRONOME",
|
||||
"MOVE_MIMIC",
|
||||
"MOVE_PRESENT",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SNORE",
|
||||
"MOVE_THUNDER_FANG"
|
||||
],
|
||||
@ -28253,7 +28253,7 @@
|
||||
"MOVE_LOW_KICK",
|
||||
"MOVE_NIGHT_SLASH",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_SMELLING_SALT"
|
||||
"MOVE_SMELLING_SALTS"
|
||||
],
|
||||
"TutorMoves": [
|
||||
"MOVE_FIRE_PLEDGE"
|
||||
@ -28379,7 +28379,7 @@
|
||||
"MOVE_LOW_KICK",
|
||||
"MOVE_NIGHT_SLASH",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_SMELLING_SALT"
|
||||
"MOVE_SMELLING_SALTS"
|
||||
],
|
||||
"TutorMoves": [
|
||||
"MOVE_FIRE_PLEDGE"
|
||||
@ -28526,7 +28526,7 @@
|
||||
"MOVE_LOW_KICK",
|
||||
"MOVE_NIGHT_SLASH",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_SMELLING_SALT"
|
||||
"MOVE_SMELLING_SALTS"
|
||||
],
|
||||
"TutorMoves": [
|
||||
"MOVE_BLAST_BURN",
|
||||
@ -32107,7 +32107,7 @@
|
||||
"MOVE_EXTRASENSORY",
|
||||
"MOVE_FAKE_TEARS",
|
||||
"MOVE_HAMMER_ARM",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SMOKESCREEN",
|
||||
"MOVE_SNORE",
|
||||
"MOVE_TAKE_DOWN"
|
||||
@ -32227,7 +32227,7 @@
|
||||
"MOVE_EXTRASENSORY",
|
||||
"MOVE_FAKE_TEARS",
|
||||
"MOVE_HAMMER_ARM",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SMOKESCREEN",
|
||||
"MOVE_SNORE",
|
||||
"MOVE_TAKE_DOWN"
|
||||
@ -32371,7 +32371,7 @@
|
||||
"MOVE_EXTRASENSORY",
|
||||
"MOVE_FAKE_TEARS",
|
||||
"MOVE_HAMMER_ARM",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SMOKESCREEN",
|
||||
"MOVE_SNORE",
|
||||
"MOVE_TAKE_DOWN"
|
||||
@ -32414,7 +32414,7 @@
|
||||
},
|
||||
{
|
||||
"Level": 22,
|
||||
"Move": "MOVE_SMELLING_SALT"
|
||||
"Move": "MOVE_SMELLING_SALTS"
|
||||
},
|
||||
{
|
||||
"Level": 25,
|
||||
@ -32549,7 +32549,7 @@
|
||||
},
|
||||
{
|
||||
"Level": 22,
|
||||
"Move": "MOVE_SMELLING_SALT"
|
||||
"Move": "MOVE_SMELLING_SALTS"
|
||||
},
|
||||
{
|
||||
"Level": 27,
|
||||
@ -33386,7 +33386,7 @@
|
||||
"MOVE_HEAD_SMASH",
|
||||
"MOVE_IRON_HEAD",
|
||||
"MOVE_SCREECH",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_STEALTH_ROCK",
|
||||
"MOVE_STOMP",
|
||||
"MOVE_SUPERPOWER"
|
||||
@ -33512,7 +33512,7 @@
|
||||
"MOVE_HEAD_SMASH",
|
||||
"MOVE_IRON_HEAD",
|
||||
"MOVE_SCREECH",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_STEALTH_ROCK",
|
||||
"MOVE_STOMP",
|
||||
"MOVE_SUPERPOWER"
|
||||
@ -33659,7 +33659,7 @@
|
||||
"MOVE_HEAD_SMASH",
|
||||
"MOVE_IRON_HEAD",
|
||||
"MOVE_SCREECH",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_STEALTH_ROCK",
|
||||
"MOVE_STOMP",
|
||||
"MOVE_SUPERPOWER"
|
||||
@ -36075,7 +36075,7 @@
|
||||
"MOVE_PSYCHO_CUT",
|
||||
"MOVE_RAPID_SPIN",
|
||||
"MOVE_ROLE_PLAY",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_TRICK",
|
||||
"MOVE_WATER_PULSE",
|
||||
"MOVE_WISH"
|
||||
@ -36505,7 +36505,7 @@
|
||||
"MOVE_MAGICAL_LEAF",
|
||||
"MOVE_NASTY_PLOT",
|
||||
"MOVE_SEED_BOMB",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SWITCHEROO",
|
||||
"MOVE_TEETER_DANCE",
|
||||
"MOVE_WORRY_SEED"
|
||||
@ -36636,7 +36636,7 @@
|
||||
"MOVE_MAGICAL_LEAF",
|
||||
"MOVE_NASTY_PLOT",
|
||||
"MOVE_SEED_BOMB",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SWITCHEROO",
|
||||
"MOVE_TEETER_DANCE",
|
||||
"MOVE_WORRY_SEED"
|
||||
@ -49431,7 +49431,7 @@
|
||||
"MOVE_HEADBUTT",
|
||||
"MOVE_ME_FIRST",
|
||||
"MOVE_MEDITATE",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_VACUUM_WAVE",
|
||||
"MOVE_WAKE_UP_SLAP"
|
||||
],
|
||||
@ -49567,7 +49567,7 @@
|
||||
"MOVE_HEADBUTT",
|
||||
"MOVE_ME_FIRST",
|
||||
"MOVE_MEDITATE",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_VACUUM_WAVE",
|
||||
"MOVE_WAKE_UP_SLAP"
|
||||
],
|
||||
@ -50591,7 +50591,7 @@
|
||||
"MOVE_MAGNITUDE",
|
||||
"MOVE_MUDDY_WATER",
|
||||
"MOVE_SLEEP_TALK",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SNORE",
|
||||
"MOVE_ZEN_HEADBUTT"
|
||||
],
|
||||
@ -58423,7 +58423,7 @@
|
||||
"MOVE_FORESIGHT",
|
||||
"MOVE_MACH_PUNCH",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_WIDE_GUARD"
|
||||
],
|
||||
"TutorMoves": []
|
||||
@ -58548,7 +58548,7 @@
|
||||
"MOVE_FORESIGHT",
|
||||
"MOVE_MACH_PUNCH",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_WIDE_GUARD"
|
||||
],
|
||||
"TutorMoves": []
|
||||
@ -58677,7 +58677,7 @@
|
||||
"MOVE_FORESIGHT",
|
||||
"MOVE_MACH_PUNCH",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_WIDE_GUARD"
|
||||
],
|
||||
"TutorMoves": []
|
||||
@ -68196,7 +68196,7 @@
|
||||
"MOVE_KNOCK_OFF",
|
||||
"MOVE_LOW_KICK",
|
||||
"MOVE_ME_FIRST",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_VITAL_THROW"
|
||||
],
|
||||
"TutorMoves": []
|
||||
@ -68332,7 +68332,7 @@
|
||||
"MOVE_KNOCK_OFF",
|
||||
"MOVE_LOW_KICK",
|
||||
"MOVE_ME_FIRST",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_VITAL_THROW"
|
||||
],
|
||||
"TutorMoves": []
|
||||
|
||||
@ -5745,7 +5745,7 @@
|
||||
"MOVE_REVENGE",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_ROCK_SLIDE",
|
||||
"MOVE_SMELLING_SALT"
|
||||
"MOVE_SMELLING_SALTS"
|
||||
],
|
||||
"TutorMoves": []
|
||||
},
|
||||
@ -5873,7 +5873,7 @@
|
||||
"MOVE_REVENGE",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_ROCK_SLIDE",
|
||||
"MOVE_SMELLING_SALT"
|
||||
"MOVE_SMELLING_SALTS"
|
||||
],
|
||||
"TutorMoves": []
|
||||
},
|
||||
@ -6789,7 +6789,7 @@
|
||||
"MOVE_MEDITATE",
|
||||
"MOVE_ROCK_SLIDE",
|
||||
"MOVE_ROLLING_KICK",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_THUNDER_PUNCH"
|
||||
],
|
||||
"TutorMoves": []
|
||||
@ -6902,7 +6902,7 @@
|
||||
"MOVE_MEDITATE",
|
||||
"MOVE_ROCK_SLIDE",
|
||||
"MOVE_ROLLING_KICK",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_THUNDER_PUNCH"
|
||||
],
|
||||
"TutorMoves": []
|
||||
@ -7018,7 +7018,7 @@
|
||||
"MOVE_MEDITATE",
|
||||
"MOVE_ROCK_SLIDE",
|
||||
"MOVE_ROLLING_KICK",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_THUNDER_PUNCH"
|
||||
],
|
||||
"TutorMoves": []
|
||||
@ -11489,7 +11489,7 @@
|
||||
"MOVE_HAMMER_ARM",
|
||||
"MOVE_MAGNITUDE",
|
||||
"MOVE_SLEEP_TALK",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SNORE",
|
||||
"MOVE_SUBSTITUTE"
|
||||
],
|
||||
@ -22486,7 +22486,7 @@
|
||||
"MOVE_METRONOME",
|
||||
"MOVE_PRESENT",
|
||||
"MOVE_REFLECT",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SNORE",
|
||||
"MOVE_THUNDER_FANG"
|
||||
],
|
||||
@ -22618,7 +22618,7 @@
|
||||
"MOVE_METRONOME",
|
||||
"MOVE_PRESENT",
|
||||
"MOVE_REFLECT",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SNORE",
|
||||
"MOVE_THUNDER_FANG"
|
||||
],
|
||||
@ -27537,7 +27537,7 @@
|
||||
"MOVE_NIGHT_SLASH",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_ROCK_SLIDE",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SWAGGER"
|
||||
],
|
||||
"TutorMoves": []
|
||||
@ -27658,7 +27658,7 @@
|
||||
"MOVE_NIGHT_SLASH",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_ROCK_SLIDE",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SWAGGER"
|
||||
],
|
||||
"TutorMoves": []
|
||||
@ -27795,7 +27795,7 @@
|
||||
"MOVE_NIGHT_SLASH",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_ROCK_SLIDE",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SWAGGER"
|
||||
],
|
||||
"TutorMoves": [
|
||||
@ -31332,7 +31332,7 @@
|
||||
"EggMoves": [
|
||||
"MOVE_ENDEAVOR",
|
||||
"MOVE_EXTRASENSORY",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SMOKESCREEN",
|
||||
"MOVE_SNORE",
|
||||
"MOVE_SWAGGER",
|
||||
@ -31446,7 +31446,7 @@
|
||||
"EggMoves": [
|
||||
"MOVE_ENDEAVOR",
|
||||
"MOVE_EXTRASENSORY",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SMOKESCREEN",
|
||||
"MOVE_SNORE",
|
||||
"MOVE_SWAGGER",
|
||||
@ -31586,7 +31586,7 @@
|
||||
"EggMoves": [
|
||||
"MOVE_ENDEAVOR",
|
||||
"MOVE_EXTRASENSORY",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SMOKESCREEN",
|
||||
"MOVE_SNORE",
|
||||
"MOVE_SWAGGER",
|
||||
@ -31630,7 +31630,7 @@
|
||||
},
|
||||
{
|
||||
"Level": 22,
|
||||
"Move": "MOVE_SMELLING_SALT"
|
||||
"Move": "MOVE_SMELLING_SALTS"
|
||||
},
|
||||
{
|
||||
"Level": 25,
|
||||
@ -31758,7 +31758,7 @@
|
||||
},
|
||||
{
|
||||
"Level": 22,
|
||||
"Move": "MOVE_SMELLING_SALT"
|
||||
"Move": "MOVE_SMELLING_SALTS"
|
||||
},
|
||||
{
|
||||
"Level": 27,
|
||||
@ -32577,7 +32577,7 @@
|
||||
"MOVE_ENDEAVOR",
|
||||
"MOVE_IRON_HEAD",
|
||||
"MOVE_SCREECH",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_STOMP"
|
||||
],
|
||||
"TutorMoves": []
|
||||
@ -32698,7 +32698,7 @@
|
||||
"MOVE_ENDEAVOR",
|
||||
"MOVE_IRON_HEAD",
|
||||
"MOVE_SCREECH",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_STOMP"
|
||||
],
|
||||
"TutorMoves": []
|
||||
@ -32842,7 +32842,7 @@
|
||||
"MOVE_ENDEAVOR",
|
||||
"MOVE_IRON_HEAD",
|
||||
"MOVE_SCREECH",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_STOMP"
|
||||
],
|
||||
"TutorMoves": []
|
||||
@ -35217,7 +35217,7 @@
|
||||
"MOVE_PSYCHO_CUT",
|
||||
"MOVE_ROCK_SLIDE",
|
||||
"MOVE_ROLE_PLAY",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_TRICK",
|
||||
"MOVE_WISH"
|
||||
],
|
||||
@ -35649,7 +35649,7 @@
|
||||
"MOVE_LOW_KICK",
|
||||
"MOVE_MAGICAL_LEAF",
|
||||
"MOVE_SEED_BOMB",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_TEETER_DANCE"
|
||||
],
|
||||
"TutorMoves": []
|
||||
@ -35782,7 +35782,7 @@
|
||||
"MOVE_LOW_KICK",
|
||||
"MOVE_MAGICAL_LEAF",
|
||||
"MOVE_SEED_BOMB",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_TEETER_DANCE"
|
||||
],
|
||||
"TutorMoves": []
|
||||
@ -48274,7 +48274,7 @@
|
||||
"MOVE_HEADBUTT",
|
||||
"MOVE_ME_FIRST",
|
||||
"MOVE_MEDITATE",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_VACUUM_WAVE",
|
||||
"MOVE_WAKE_UP_SLAP"
|
||||
],
|
||||
@ -48405,7 +48405,7 @@
|
||||
"MOVE_HEADBUTT",
|
||||
"MOVE_ME_FIRST",
|
||||
"MOVE_MEDITATE",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_VACUUM_WAVE",
|
||||
"MOVE_WAKE_UP_SLAP"
|
||||
],
|
||||
@ -49430,7 +49430,7 @@
|
||||
"MOVE_HAMMER_ARM",
|
||||
"MOVE_MAGNITUDE",
|
||||
"MOVE_SLEEP_TALK",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SNORE",
|
||||
"MOVE_SUBSTITUTE"
|
||||
],
|
||||
|
||||
@ -4694,7 +4694,7 @@
|
||||
"MOVE_REVENGE",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_ROCK_SLIDE",
|
||||
"MOVE_SMELLING_SALT"
|
||||
"MOVE_SMELLING_SALTS"
|
||||
],
|
||||
"TutorMoves": [
|
||||
"MOVE_BODY_SLAM",
|
||||
@ -4807,7 +4807,7 @@
|
||||
"MOVE_REVENGE",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_ROCK_SLIDE",
|
||||
"MOVE_SMELLING_SALT"
|
||||
"MOVE_SMELLING_SALTS"
|
||||
],
|
||||
"TutorMoves": [
|
||||
"MOVE_BODY_SLAM",
|
||||
@ -5582,7 +5582,7 @@
|
||||
"MOVE_MEDITATE",
|
||||
"MOVE_ROCK_SLIDE",
|
||||
"MOVE_ROLLING_KICK",
|
||||
"MOVE_SMELLING_SALT"
|
||||
"MOVE_SMELLING_SALTS"
|
||||
],
|
||||
"TutorMoves": [
|
||||
"MOVE_BODY_SLAM",
|
||||
@ -5685,7 +5685,7 @@
|
||||
"MOVE_MEDITATE",
|
||||
"MOVE_ROCK_SLIDE",
|
||||
"MOVE_ROLLING_KICK",
|
||||
"MOVE_SMELLING_SALT"
|
||||
"MOVE_SMELLING_SALTS"
|
||||
],
|
||||
"TutorMoves": [
|
||||
"MOVE_BODY_SLAM",
|
||||
@ -5789,7 +5789,7 @@
|
||||
"MOVE_MEDITATE",
|
||||
"MOVE_ROCK_SLIDE",
|
||||
"MOVE_ROLLING_KICK",
|
||||
"MOVE_SMELLING_SALT"
|
||||
"MOVE_SMELLING_SALTS"
|
||||
],
|
||||
"TutorMoves": [
|
||||
"MOVE_BODY_SLAM",
|
||||
@ -9379,7 +9379,7 @@
|
||||
"MOVE_CURSE",
|
||||
"MOVE_MAGNITUDE",
|
||||
"MOVE_SLEEP_TALK",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SNORE",
|
||||
"MOVE_SUBSTITUTE"
|
||||
],
|
||||
@ -18107,7 +18107,7 @@
|
||||
"MOVE_METRONOME",
|
||||
"MOVE_PRESENT",
|
||||
"MOVE_REFLECT",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SNORE"
|
||||
],
|
||||
"TutorMoves": [
|
||||
@ -18212,7 +18212,7 @@
|
||||
"MOVE_METRONOME",
|
||||
"MOVE_PRESENT",
|
||||
"MOVE_REFLECT",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SNORE"
|
||||
],
|
||||
"TutorMoves": [
|
||||
@ -22086,7 +22086,7 @@
|
||||
"MOVE_ENDURE",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_ROCK_SLIDE",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SWAGGER"
|
||||
],
|
||||
"TutorMoves": [
|
||||
@ -22195,7 +22195,7 @@
|
||||
"MOVE_ENDURE",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_ROCK_SLIDE",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SWAGGER"
|
||||
],
|
||||
"TutorMoves": [
|
||||
@ -22315,7 +22315,7 @@
|
||||
"MOVE_ENDURE",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_ROCK_SLIDE",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SWAGGER"
|
||||
],
|
||||
"TutorMoves": [
|
||||
@ -25387,7 +25387,7 @@
|
||||
],
|
||||
"EggMoves": [
|
||||
"MOVE_EXTRASENSORY",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SNORE",
|
||||
"MOVE_SWAGGER",
|
||||
"MOVE_TAKE_DOWN"
|
||||
@ -25495,7 +25495,7 @@
|
||||
],
|
||||
"EggMoves": [
|
||||
"MOVE_EXTRASENSORY",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SNORE",
|
||||
"MOVE_SWAGGER",
|
||||
"MOVE_TAKE_DOWN"
|
||||
@ -25609,7 +25609,7 @@
|
||||
],
|
||||
"EggMoves": [
|
||||
"MOVE_EXTRASENSORY",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SNORE",
|
||||
"MOVE_SWAGGER",
|
||||
"MOVE_TAKE_DOWN"
|
||||
@ -25662,7 +25662,7 @@
|
||||
},
|
||||
{
|
||||
"Level": 31,
|
||||
"Move": "MOVE_SMELLING_SALT"
|
||||
"Move": "MOVE_SMELLING_SALTS"
|
||||
},
|
||||
{
|
||||
"Level": 37,
|
||||
@ -25772,7 +25772,7 @@
|
||||
},
|
||||
{
|
||||
"Level": 33,
|
||||
"Move": "MOVE_SMELLING_SALT"
|
||||
"Move": "MOVE_SMELLING_SALTS"
|
||||
},
|
||||
{
|
||||
"Level": 40,
|
||||
@ -26446,7 +26446,7 @@
|
||||
"EggMoves": [
|
||||
"MOVE_BODY_SLAM",
|
||||
"MOVE_ENDEAVOR",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_STOMP"
|
||||
],
|
||||
"TutorMoves": [
|
||||
@ -26550,7 +26550,7 @@
|
||||
"EggMoves": [
|
||||
"MOVE_BODY_SLAM",
|
||||
"MOVE_ENDEAVOR",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_STOMP"
|
||||
],
|
||||
"TutorMoves": [
|
||||
@ -26667,7 +26667,7 @@
|
||||
"EggMoves": [
|
||||
"MOVE_BODY_SLAM",
|
||||
"MOVE_ENDEAVOR",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_STOMP"
|
||||
],
|
||||
"TutorMoves": [
|
||||
@ -28659,7 +28659,7 @@
|
||||
"MOVE_DISABLE",
|
||||
"MOVE_ENCORE",
|
||||
"MOVE_ROCK_SLIDE",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_TRICK",
|
||||
"MOVE_WISH"
|
||||
],
|
||||
|
||||
@ -6393,7 +6393,7 @@
|
||||
"MOVE_REVENGE",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_ROCK_SLIDE",
|
||||
"MOVE_SMELLING_SALT"
|
||||
"MOVE_SMELLING_SALTS"
|
||||
],
|
||||
"TutorMoves": [
|
||||
"MOVE_ENDEAVOR",
|
||||
@ -6539,7 +6539,7 @@
|
||||
"MOVE_REVENGE",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_ROCK_SLIDE",
|
||||
"MOVE_SMELLING_SALT"
|
||||
"MOVE_SMELLING_SALTS"
|
||||
],
|
||||
"TutorMoves": [
|
||||
"MOVE_ENDEAVOR",
|
||||
@ -7558,7 +7558,7 @@
|
||||
"MOVE_POWER_TRICK",
|
||||
"MOVE_ROCK_SLIDE",
|
||||
"MOVE_ROLLING_KICK",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_THUNDER_PUNCH"
|
||||
],
|
||||
"TutorMoves": [
|
||||
@ -7684,7 +7684,7 @@
|
||||
"MOVE_POWER_TRICK",
|
||||
"MOVE_ROCK_SLIDE",
|
||||
"MOVE_ROLLING_KICK",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_THUNDER_PUNCH"
|
||||
],
|
||||
"TutorMoves": [
|
||||
@ -7813,7 +7813,7 @@
|
||||
"MOVE_POWER_TRICK",
|
||||
"MOVE_ROCK_SLIDE",
|
||||
"MOVE_ROLLING_KICK",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_THUNDER_PUNCH"
|
||||
],
|
||||
"TutorMoves": [
|
||||
@ -12749,7 +12749,7 @@
|
||||
"MOVE_MAGNITUDE",
|
||||
"MOVE_MUDDY_WATER",
|
||||
"MOVE_SLEEP_TALK",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SNORE",
|
||||
"MOVE_SUBSTITUTE"
|
||||
],
|
||||
@ -25059,7 +25059,7 @@
|
||||
"MOVE_METRONOME",
|
||||
"MOVE_PRESENT",
|
||||
"MOVE_REFLECT",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SNORE",
|
||||
"MOVE_THUNDER_FANG"
|
||||
],
|
||||
@ -25203,7 +25203,7 @@
|
||||
"MOVE_METRONOME",
|
||||
"MOVE_PRESENT",
|
||||
"MOVE_REFLECT",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SNORE",
|
||||
"MOVE_THUNDER_FANG"
|
||||
],
|
||||
@ -30728,7 +30728,7 @@
|
||||
"MOVE_NIGHT_SLASH",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_ROCK_SLIDE",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SWAGGER"
|
||||
],
|
||||
"TutorMoves": [
|
||||
@ -30859,7 +30859,7 @@
|
||||
"MOVE_NIGHT_SLASH",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_ROCK_SLIDE",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SWAGGER"
|
||||
],
|
||||
"TutorMoves": [
|
||||
@ -31011,7 +31011,7 @@
|
||||
"MOVE_NIGHT_SLASH",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_ROCK_SLIDE",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SWAGGER"
|
||||
],
|
||||
"TutorMoves": [
|
||||
@ -34988,7 +34988,7 @@
|
||||
"MOVE_ENDEAVOR",
|
||||
"MOVE_EXTRASENSORY",
|
||||
"MOVE_HAMMER_ARM",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SMOKESCREEN",
|
||||
"MOVE_SNORE",
|
||||
"MOVE_SWAGGER",
|
||||
@ -35114,7 +35114,7 @@
|
||||
"MOVE_ENDEAVOR",
|
||||
"MOVE_EXTRASENSORY",
|
||||
"MOVE_HAMMER_ARM",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SMOKESCREEN",
|
||||
"MOVE_SNORE",
|
||||
"MOVE_SWAGGER",
|
||||
@ -35268,7 +35268,7 @@
|
||||
"MOVE_ENDEAVOR",
|
||||
"MOVE_EXTRASENSORY",
|
||||
"MOVE_HAMMER_ARM",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SMOKESCREEN",
|
||||
"MOVE_SNORE",
|
||||
"MOVE_SWAGGER",
|
||||
@ -35325,7 +35325,7 @@
|
||||
},
|
||||
{
|
||||
"Level": 22,
|
||||
"Move": "MOVE_SMELLING_SALT"
|
||||
"Move": "MOVE_SMELLING_SALTS"
|
||||
},
|
||||
{
|
||||
"Level": 25,
|
||||
@ -35468,7 +35468,7 @@
|
||||
},
|
||||
{
|
||||
"Level": 22,
|
||||
"Move": "MOVE_SMELLING_SALT"
|
||||
"Move": "MOVE_SMELLING_SALTS"
|
||||
},
|
||||
{
|
||||
"Level": 27,
|
||||
@ -36406,7 +36406,7 @@
|
||||
"MOVE_HEAD_SMASH",
|
||||
"MOVE_IRON_HEAD",
|
||||
"MOVE_SCREECH",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_STOMP"
|
||||
],
|
||||
"TutorMoves": [
|
||||
@ -36543,7 +36543,7 @@
|
||||
"MOVE_HEAD_SMASH",
|
||||
"MOVE_IRON_HEAD",
|
||||
"MOVE_SCREECH",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_STOMP"
|
||||
],
|
||||
"TutorMoves": [
|
||||
@ -36704,7 +36704,7 @@
|
||||
"MOVE_HEAD_SMASH",
|
||||
"MOVE_IRON_HEAD",
|
||||
"MOVE_SCREECH",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_STOMP"
|
||||
],
|
||||
"TutorMoves": [
|
||||
@ -39350,7 +39350,7 @@
|
||||
"MOVE_PSYCHO_CUT",
|
||||
"MOVE_ROCK_SLIDE",
|
||||
"MOVE_ROLE_PLAY",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_TRICK",
|
||||
"MOVE_WISH"
|
||||
],
|
||||
@ -39836,7 +39836,7 @@
|
||||
"MOVE_MAGICAL_LEAF",
|
||||
"MOVE_NASTY_PLOT",
|
||||
"MOVE_SEED_BOMB",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_TEETER_DANCE"
|
||||
],
|
||||
"TutorMoves": [
|
||||
@ -39983,7 +39983,7 @@
|
||||
"MOVE_MAGICAL_LEAF",
|
||||
"MOVE_NASTY_PLOT",
|
||||
"MOVE_SEED_BOMB",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_TEETER_DANCE"
|
||||
],
|
||||
"TutorMoves": [
|
||||
@ -54014,7 +54014,7 @@
|
||||
"MOVE_HEADBUTT",
|
||||
"MOVE_ME_FIRST",
|
||||
"MOVE_MEDITATE",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_VACUUM_WAVE",
|
||||
"MOVE_WAKE_UP_SLAP"
|
||||
],
|
||||
@ -54164,7 +54164,7 @@
|
||||
"MOVE_HEADBUTT",
|
||||
"MOVE_ME_FIRST",
|
||||
"MOVE_MEDITATE",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_VACUUM_WAVE",
|
||||
"MOVE_WAKE_UP_SLAP"
|
||||
],
|
||||
@ -55299,7 +55299,7 @@
|
||||
"MOVE_MAGNITUDE",
|
||||
"MOVE_MUDDY_WATER",
|
||||
"MOVE_SLEEP_TALK",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SNORE",
|
||||
"MOVE_SUBSTITUTE"
|
||||
],
|
||||
|
||||
@ -6941,7 +6941,7 @@
|
||||
"MOVE_REVENGE",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_SLEEP_TALK",
|
||||
"MOVE_SMELLING_SALT"
|
||||
"MOVE_SMELLING_SALTS"
|
||||
],
|
||||
"TutorMoves": [
|
||||
"MOVE_COVET",
|
||||
@ -7101,7 +7101,7 @@
|
||||
"MOVE_REVENGE",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_SLEEP_TALK",
|
||||
"MOVE_SMELLING_SALT"
|
||||
"MOVE_SMELLING_SALTS"
|
||||
],
|
||||
"TutorMoves": [
|
||||
"MOVE_COVET",
|
||||
@ -8220,7 +8220,7 @@
|
||||
"MOVE_POWER_TRICK",
|
||||
"MOVE_QUICK_GUARD",
|
||||
"MOVE_ROLLING_KICK",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_THUNDER_PUNCH",
|
||||
"MOVE_TICKLE"
|
||||
],
|
||||
@ -8372,7 +8372,7 @@
|
||||
"MOVE_POWER_TRICK",
|
||||
"MOVE_QUICK_GUARD",
|
||||
"MOVE_ROLLING_KICK",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_THUNDER_PUNCH",
|
||||
"MOVE_TICKLE"
|
||||
],
|
||||
@ -8531,7 +8531,7 @@
|
||||
"MOVE_POWER_TRICK",
|
||||
"MOVE_QUICK_GUARD",
|
||||
"MOVE_ROLLING_KICK",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_THUNDER_PUNCH",
|
||||
"MOVE_TICKLE"
|
||||
],
|
||||
@ -13938,7 +13938,7 @@
|
||||
"MOVE_MAGNITUDE",
|
||||
"MOVE_MUDDY_WATER",
|
||||
"MOVE_SLEEP_TALK",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SNORE",
|
||||
"MOVE_ZEN_HEADBUTT"
|
||||
],
|
||||
@ -27315,7 +27315,7 @@
|
||||
"MOVE_METRONOME",
|
||||
"MOVE_MIMIC",
|
||||
"MOVE_PRESENT",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SNORE",
|
||||
"MOVE_THUNDER_FANG"
|
||||
],
|
||||
@ -27475,7 +27475,7 @@
|
||||
"MOVE_METRONOME",
|
||||
"MOVE_MIMIC",
|
||||
"MOVE_PRESENT",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SNORE",
|
||||
"MOVE_THUNDER_FANG"
|
||||
],
|
||||
@ -33468,7 +33468,7 @@
|
||||
"MOVE_LOW_KICK",
|
||||
"MOVE_NIGHT_SLASH",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_SMELLING_SALT"
|
||||
"MOVE_SMELLING_SALTS"
|
||||
],
|
||||
"TutorMoves": [
|
||||
"MOVE_BOUNCE",
|
||||
@ -33608,7 +33608,7 @@
|
||||
"MOVE_LOW_KICK",
|
||||
"MOVE_NIGHT_SLASH",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_SMELLING_SALT"
|
||||
"MOVE_SMELLING_SALTS"
|
||||
],
|
||||
"TutorMoves": [
|
||||
"MOVE_BOUNCE",
|
||||
@ -33777,7 +33777,7 @@
|
||||
"MOVE_LOW_KICK",
|
||||
"MOVE_NIGHT_SLASH",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_SMELLING_SALT"
|
||||
"MOVE_SMELLING_SALTS"
|
||||
],
|
||||
"TutorMoves": [
|
||||
"MOVE_BLAST_BURN",
|
||||
@ -38135,7 +38135,7 @@
|
||||
"MOVE_EXTRASENSORY",
|
||||
"MOVE_FAKE_TEARS",
|
||||
"MOVE_HAMMER_ARM",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SMOKESCREEN",
|
||||
"MOVE_SNORE",
|
||||
"MOVE_TAKE_DOWN"
|
||||
@ -38275,7 +38275,7 @@
|
||||
"MOVE_EXTRASENSORY",
|
||||
"MOVE_FAKE_TEARS",
|
||||
"MOVE_HAMMER_ARM",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SMOKESCREEN",
|
||||
"MOVE_SNORE",
|
||||
"MOVE_TAKE_DOWN"
|
||||
@ -38448,7 +38448,7 @@
|
||||
"MOVE_EXTRASENSORY",
|
||||
"MOVE_FAKE_TEARS",
|
||||
"MOVE_HAMMER_ARM",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SMOKESCREEN",
|
||||
"MOVE_SNORE",
|
||||
"MOVE_TAKE_DOWN"
|
||||
@ -38513,7 +38513,7 @@
|
||||
},
|
||||
{
|
||||
"Level": 28,
|
||||
"Move": "MOVE_SMELLING_SALT"
|
||||
"Move": "MOVE_SMELLING_SALTS"
|
||||
},
|
||||
{
|
||||
"Level": 31,
|
||||
@ -38662,7 +38662,7 @@
|
||||
},
|
||||
{
|
||||
"Level": 30,
|
||||
"Move": "MOVE_SMELLING_SALT"
|
||||
"Move": "MOVE_SMELLING_SALTS"
|
||||
},
|
||||
{
|
||||
"Level": 34,
|
||||
@ -39698,7 +39698,7 @@
|
||||
"MOVE_IRON_HEAD",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_SCREECH",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_STEALTH_ROCK",
|
||||
"MOVE_STOMP",
|
||||
"MOVE_SUPERPOWER"
|
||||
@ -39846,7 +39846,7 @@
|
||||
"MOVE_IRON_HEAD",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_SCREECH",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_STEALTH_ROCK",
|
||||
"MOVE_STOMP",
|
||||
"MOVE_SUPERPOWER"
|
||||
@ -40017,7 +40017,7 @@
|
||||
"MOVE_IRON_HEAD",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_SCREECH",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_STEALTH_ROCK",
|
||||
"MOVE_STOMP",
|
||||
"MOVE_SUPERPOWER"
|
||||
@ -42918,7 +42918,7 @@
|
||||
"MOVE_PSYCHO_SHIFT",
|
||||
"MOVE_RAPID_SPIN",
|
||||
"MOVE_ROLE_PLAY",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_TRICK",
|
||||
"MOVE_WATER_PULSE",
|
||||
"MOVE_WISH"
|
||||
@ -43493,7 +43493,7 @@
|
||||
"MOVE_NASTY_PLOT",
|
||||
"MOVE_ROTOTILLER",
|
||||
"MOVE_SEED_BOMB",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SWITCHEROO",
|
||||
"MOVE_TEETER_DANCE",
|
||||
"MOVE_WORRY_SEED"
|
||||
@ -43658,7 +43658,7 @@
|
||||
"MOVE_NASTY_PLOT",
|
||||
"MOVE_ROTOTILLER",
|
||||
"MOVE_SEED_BOMB",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SWITCHEROO",
|
||||
"MOVE_TEETER_DANCE",
|
||||
"MOVE_WORRY_SEED"
|
||||
@ -58895,7 +58895,7 @@
|
||||
"MOVE_ME_FIRST",
|
||||
"MOVE_MEDITATE",
|
||||
"MOVE_QUICK_GUARD",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_VACUUM_WAVE",
|
||||
"MOVE_WAKE_UP_SLAP"
|
||||
],
|
||||
@ -59058,7 +59058,7 @@
|
||||
"MOVE_ME_FIRST",
|
||||
"MOVE_MEDITATE",
|
||||
"MOVE_QUICK_GUARD",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_VACUUM_WAVE",
|
||||
"MOVE_WAKE_UP_SLAP"
|
||||
],
|
||||
@ -60269,7 +60269,7 @@
|
||||
"MOVE_MAGNITUDE",
|
||||
"MOVE_MUDDY_WATER",
|
||||
"MOVE_SLEEP_TALK",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SNORE",
|
||||
"MOVE_ZEN_HEADBUTT"
|
||||
],
|
||||
@ -69623,7 +69623,7 @@
|
||||
"MOVE_FORESIGHT",
|
||||
"MOVE_MACH_PUNCH",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_WIDE_GUARD"
|
||||
],
|
||||
"TutorMoves": [
|
||||
@ -69763,7 +69763,7 @@
|
||||
"MOVE_FORESIGHT",
|
||||
"MOVE_MACH_PUNCH",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_WIDE_GUARD"
|
||||
],
|
||||
"TutorMoves": [
|
||||
@ -69907,7 +69907,7 @@
|
||||
"MOVE_FORESIGHT",
|
||||
"MOVE_MACH_PUNCH",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_WIDE_GUARD"
|
||||
],
|
||||
"TutorMoves": [
|
||||
@ -81039,7 +81039,7 @@
|
||||
"MOVE_KNOCK_OFF",
|
||||
"MOVE_LOW_KICK",
|
||||
"MOVE_ME_FIRST",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_VITAL_THROW"
|
||||
],
|
||||
"TutorMoves": [
|
||||
@ -81197,7 +81197,7 @@
|
||||
"MOVE_KNOCK_OFF",
|
||||
"MOVE_LOW_KICK",
|
||||
"MOVE_ME_FIRST",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_VITAL_THROW"
|
||||
],
|
||||
"TutorMoves": [
|
||||
|
||||
@ -6231,7 +6231,7 @@
|
||||
"MOVE_REVENGE",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_ROCK_SLIDE",
|
||||
"MOVE_SMELLING_SALT"
|
||||
"MOVE_SMELLING_SALTS"
|
||||
],
|
||||
"TutorMoves": [
|
||||
"MOVE_ENDEAVOR",
|
||||
@ -6373,7 +6373,7 @@
|
||||
"MOVE_REVENGE",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_ROCK_SLIDE",
|
||||
"MOVE_SMELLING_SALT"
|
||||
"MOVE_SMELLING_SALTS"
|
||||
],
|
||||
"TutorMoves": [
|
||||
"MOVE_ENDEAVOR",
|
||||
@ -7363,7 +7363,7 @@
|
||||
"MOVE_MEDITATE",
|
||||
"MOVE_ROCK_SLIDE",
|
||||
"MOVE_ROLLING_KICK",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_THUNDER_PUNCH"
|
||||
],
|
||||
"TutorMoves": [
|
||||
@ -7485,7 +7485,7 @@
|
||||
"MOVE_MEDITATE",
|
||||
"MOVE_ROCK_SLIDE",
|
||||
"MOVE_ROLLING_KICK",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_THUNDER_PUNCH"
|
||||
],
|
||||
"TutorMoves": [
|
||||
@ -7610,7 +7610,7 @@
|
||||
"MOVE_MEDITATE",
|
||||
"MOVE_ROCK_SLIDE",
|
||||
"MOVE_ROLLING_KICK",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_THUNDER_PUNCH"
|
||||
],
|
||||
"TutorMoves": [
|
||||
@ -12437,7 +12437,7 @@
|
||||
"MOVE_HAMMER_ARM",
|
||||
"MOVE_MAGNITUDE",
|
||||
"MOVE_SLEEP_TALK",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SNORE",
|
||||
"MOVE_SUBSTITUTE"
|
||||
],
|
||||
@ -24447,7 +24447,7 @@
|
||||
"MOVE_METRONOME",
|
||||
"MOVE_PRESENT",
|
||||
"MOVE_REFLECT",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SNORE",
|
||||
"MOVE_THUNDER_FANG"
|
||||
],
|
||||
@ -24587,7 +24587,7 @@
|
||||
"MOVE_METRONOME",
|
||||
"MOVE_PRESENT",
|
||||
"MOVE_REFLECT",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SNORE",
|
||||
"MOVE_THUNDER_FANG"
|
||||
],
|
||||
@ -29978,7 +29978,7 @@
|
||||
"MOVE_NIGHT_SLASH",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_ROCK_SLIDE",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SWAGGER"
|
||||
],
|
||||
"TutorMoves": [
|
||||
@ -30107,7 +30107,7 @@
|
||||
"MOVE_NIGHT_SLASH",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_ROCK_SLIDE",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SWAGGER"
|
||||
],
|
||||
"TutorMoves": [
|
||||
@ -30256,7 +30256,7 @@
|
||||
"MOVE_NIGHT_SLASH",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_ROCK_SLIDE",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SWAGGER"
|
||||
],
|
||||
"TutorMoves": [
|
||||
@ -34139,7 +34139,7 @@
|
||||
"EggMoves": [
|
||||
"MOVE_ENDEAVOR",
|
||||
"MOVE_EXTRASENSORY",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SMOKESCREEN",
|
||||
"MOVE_SNORE",
|
||||
"MOVE_SWAGGER",
|
||||
@ -34263,7 +34263,7 @@
|
||||
"EggMoves": [
|
||||
"MOVE_ENDEAVOR",
|
||||
"MOVE_EXTRASENSORY",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SMOKESCREEN",
|
||||
"MOVE_SNORE",
|
||||
"MOVE_SWAGGER",
|
||||
@ -34413,7 +34413,7 @@
|
||||
"EggMoves": [
|
||||
"MOVE_ENDEAVOR",
|
||||
"MOVE_EXTRASENSORY",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SMOKESCREEN",
|
||||
"MOVE_SNORE",
|
||||
"MOVE_SWAGGER",
|
||||
@ -34468,7 +34468,7 @@
|
||||
},
|
||||
{
|
||||
"Level": 22,
|
||||
"Move": "MOVE_SMELLING_SALT"
|
||||
"Move": "MOVE_SMELLING_SALTS"
|
||||
},
|
||||
{
|
||||
"Level": 25,
|
||||
@ -34606,7 +34606,7 @@
|
||||
},
|
||||
{
|
||||
"Level": 22,
|
||||
"Move": "MOVE_SMELLING_SALT"
|
||||
"Move": "MOVE_SMELLING_SALTS"
|
||||
},
|
||||
{
|
||||
"Level": 27,
|
||||
@ -35512,7 +35512,7 @@
|
||||
"MOVE_ENDEAVOR",
|
||||
"MOVE_IRON_HEAD",
|
||||
"MOVE_SCREECH",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_STOMP"
|
||||
],
|
||||
"TutorMoves": [
|
||||
@ -35647,7 +35647,7 @@
|
||||
"MOVE_ENDEAVOR",
|
||||
"MOVE_IRON_HEAD",
|
||||
"MOVE_SCREECH",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_STOMP"
|
||||
],
|
||||
"TutorMoves": [
|
||||
@ -35805,7 +35805,7 @@
|
||||
"MOVE_ENDEAVOR",
|
||||
"MOVE_IRON_HEAD",
|
||||
"MOVE_SCREECH",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_STOMP"
|
||||
],
|
||||
"TutorMoves": [
|
||||
@ -38387,7 +38387,7 @@
|
||||
"MOVE_PSYCHO_CUT",
|
||||
"MOVE_ROCK_SLIDE",
|
||||
"MOVE_ROLE_PLAY",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_TRICK",
|
||||
"MOVE_WISH"
|
||||
],
|
||||
@ -38859,7 +38859,7 @@
|
||||
"MOVE_LOW_KICK",
|
||||
"MOVE_MAGICAL_LEAF",
|
||||
"MOVE_SEED_BOMB",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_TEETER_DANCE"
|
||||
],
|
||||
"TutorMoves": [
|
||||
@ -39001,7 +39001,7 @@
|
||||
"MOVE_LOW_KICK",
|
||||
"MOVE_MAGICAL_LEAF",
|
||||
"MOVE_SEED_BOMB",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_TEETER_DANCE"
|
||||
],
|
||||
"TutorMoves": [
|
||||
@ -52668,7 +52668,7 @@
|
||||
"MOVE_HEADBUTT",
|
||||
"MOVE_ME_FIRST",
|
||||
"MOVE_MEDITATE",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_VACUUM_WAVE",
|
||||
"MOVE_WAKE_UP_SLAP"
|
||||
],
|
||||
@ -52813,7 +52813,7 @@
|
||||
"MOVE_HEADBUTT",
|
||||
"MOVE_ME_FIRST",
|
||||
"MOVE_MEDITATE",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_VACUUM_WAVE",
|
||||
"MOVE_WAKE_UP_SLAP"
|
||||
],
|
||||
@ -53921,7 +53921,7 @@
|
||||
"MOVE_HAMMER_ARM",
|
||||
"MOVE_MAGNITUDE",
|
||||
"MOVE_SLEEP_TALK",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SNORE",
|
||||
"MOVE_SUBSTITUTE"
|
||||
],
|
||||
|
||||
@ -5046,7 +5046,7 @@
|
||||
"MOVE_REVENGE",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_ROCK_SLIDE",
|
||||
"MOVE_SMELLING_SALT"
|
||||
"MOVE_SMELLING_SALTS"
|
||||
],
|
||||
"TutorMoves": [
|
||||
"MOVE_BODY_SLAM",
|
||||
@ -5167,7 +5167,7 @@
|
||||
"MOVE_REVENGE",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_ROCK_SLIDE",
|
||||
"MOVE_SMELLING_SALT"
|
||||
"MOVE_SMELLING_SALTS"
|
||||
],
|
||||
"TutorMoves": [
|
||||
"MOVE_BODY_SLAM",
|
||||
@ -6014,7 +6014,7 @@
|
||||
"MOVE_MEDITATE",
|
||||
"MOVE_ROCK_SLIDE",
|
||||
"MOVE_ROLLING_KICK",
|
||||
"MOVE_SMELLING_SALT"
|
||||
"MOVE_SMELLING_SALTS"
|
||||
],
|
||||
"TutorMoves": [
|
||||
"MOVE_BODY_SLAM",
|
||||
@ -6126,7 +6126,7 @@
|
||||
"MOVE_MEDITATE",
|
||||
"MOVE_ROCK_SLIDE",
|
||||
"MOVE_ROLLING_KICK",
|
||||
"MOVE_SMELLING_SALT"
|
||||
"MOVE_SMELLING_SALTS"
|
||||
],
|
||||
"TutorMoves": [
|
||||
"MOVE_BODY_SLAM",
|
||||
@ -6239,7 +6239,7 @@
|
||||
"MOVE_MEDITATE",
|
||||
"MOVE_ROCK_SLIDE",
|
||||
"MOVE_ROLLING_KICK",
|
||||
"MOVE_SMELLING_SALT"
|
||||
"MOVE_SMELLING_SALTS"
|
||||
],
|
||||
"TutorMoves": [
|
||||
"MOVE_BODY_SLAM",
|
||||
@ -10019,7 +10019,7 @@
|
||||
"MOVE_CURSE",
|
||||
"MOVE_MAGNITUDE",
|
||||
"MOVE_SLEEP_TALK",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SNORE",
|
||||
"MOVE_SUBSTITUTE"
|
||||
],
|
||||
@ -19386,7 +19386,7 @@
|
||||
"MOVE_METRONOME",
|
||||
"MOVE_PRESENT",
|
||||
"MOVE_REFLECT",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SNORE"
|
||||
],
|
||||
"TutorMoves": [
|
||||
@ -19501,7 +19501,7 @@
|
||||
"MOVE_METRONOME",
|
||||
"MOVE_PRESENT",
|
||||
"MOVE_REFLECT",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SNORE"
|
||||
],
|
||||
"TutorMoves": [
|
||||
@ -23705,7 +23705,7 @@
|
||||
"MOVE_ENDURE",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_ROCK_SLIDE",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SWAGGER"
|
||||
],
|
||||
"TutorMoves": [
|
||||
@ -23820,7 +23820,7 @@
|
||||
"MOVE_ENDURE",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_ROCK_SLIDE",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SWAGGER"
|
||||
],
|
||||
"TutorMoves": [
|
||||
@ -23950,7 +23950,7 @@
|
||||
"MOVE_ENDURE",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_ROCK_SLIDE",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SWAGGER"
|
||||
],
|
||||
"TutorMoves": [
|
||||
@ -27284,7 +27284,7 @@
|
||||
],
|
||||
"EggMoves": [
|
||||
"MOVE_EXTRASENSORY",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SNORE",
|
||||
"MOVE_SWAGGER",
|
||||
"MOVE_TAKE_DOWN"
|
||||
@ -27405,7 +27405,7 @@
|
||||
],
|
||||
"EggMoves": [
|
||||
"MOVE_EXTRASENSORY",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SNORE",
|
||||
"MOVE_SWAGGER",
|
||||
"MOVE_TAKE_DOWN"
|
||||
@ -27532,7 +27532,7 @@
|
||||
],
|
||||
"EggMoves": [
|
||||
"MOVE_EXTRASENSORY",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SNORE",
|
||||
"MOVE_SWAGGER",
|
||||
"MOVE_TAKE_DOWN"
|
||||
@ -27598,7 +27598,7 @@
|
||||
},
|
||||
{
|
||||
"Level": 31,
|
||||
"Move": "MOVE_SMELLING_SALT"
|
||||
"Move": "MOVE_SMELLING_SALTS"
|
||||
},
|
||||
{
|
||||
"Level": 37,
|
||||
@ -27717,7 +27717,7 @@
|
||||
},
|
||||
{
|
||||
"Level": 33,
|
||||
"Move": "MOVE_SMELLING_SALT"
|
||||
"Move": "MOVE_SMELLING_SALTS"
|
||||
},
|
||||
{
|
||||
"Level": 40,
|
||||
@ -28461,7 +28461,7 @@
|
||||
"EggMoves": [
|
||||
"MOVE_BODY_SLAM",
|
||||
"MOVE_ENDEAVOR",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_STOMP"
|
||||
],
|
||||
"TutorMoves": [
|
||||
@ -28573,7 +28573,7 @@
|
||||
"EggMoves": [
|
||||
"MOVE_BODY_SLAM",
|
||||
"MOVE_ENDEAVOR",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_STOMP"
|
||||
],
|
||||
"TutorMoves": [
|
||||
@ -28698,7 +28698,7 @@
|
||||
"EggMoves": [
|
||||
"MOVE_BODY_SLAM",
|
||||
"MOVE_ENDEAVOR",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_STOMP"
|
||||
],
|
||||
"TutorMoves": [
|
||||
@ -30867,7 +30867,7 @@
|
||||
"MOVE_DISABLE",
|
||||
"MOVE_ENCORE",
|
||||
"MOVE_ROCK_SLIDE",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_TRICK",
|
||||
"MOVE_WISH"
|
||||
],
|
||||
|
||||
@ -6229,7 +6229,7 @@
|
||||
"MOVE_REVENGE",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_SLEEP_TALK",
|
||||
"MOVE_SMELLING_SALT"
|
||||
"MOVE_SMELLING_SALTS"
|
||||
],
|
||||
"TutorMoves": []
|
||||
},
|
||||
@ -6382,7 +6382,7 @@
|
||||
"MOVE_REVENGE",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_SLEEP_TALK",
|
||||
"MOVE_SMELLING_SALT"
|
||||
"MOVE_SMELLING_SALTS"
|
||||
],
|
||||
"TutorMoves": []
|
||||
},
|
||||
@ -7355,7 +7355,7 @@
|
||||
"MOVE_POWER_TRICK",
|
||||
"MOVE_QUICK_GUARD",
|
||||
"MOVE_ROLLING_KICK",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_THUNDER_PUNCH",
|
||||
"MOVE_TICKLE"
|
||||
],
|
||||
@ -7489,7 +7489,7 @@
|
||||
"MOVE_POWER_TRICK",
|
||||
"MOVE_QUICK_GUARD",
|
||||
"MOVE_ROLLING_KICK",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_THUNDER_PUNCH",
|
||||
"MOVE_TICKLE"
|
||||
],
|
||||
@ -7638,7 +7638,7 @@
|
||||
"MOVE_POWER_TRICK",
|
||||
"MOVE_QUICK_GUARD",
|
||||
"MOVE_ROLLING_KICK",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_THUNDER_PUNCH",
|
||||
"MOVE_TICKLE"
|
||||
],
|
||||
@ -12606,7 +12606,7 @@
|
||||
"MOVE_MAGNITUDE",
|
||||
"MOVE_MUDDY_WATER",
|
||||
"MOVE_SLEEP_TALK",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SNORE",
|
||||
"MOVE_ZEN_HEADBUTT"
|
||||
],
|
||||
@ -24581,7 +24581,7 @@
|
||||
"MOVE_METRONOME",
|
||||
"MOVE_MIMIC",
|
||||
"MOVE_PRESENT",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SNORE",
|
||||
"MOVE_THUNDER_FANG"
|
||||
],
|
||||
@ -24720,7 +24720,7 @@
|
||||
"MOVE_METRONOME",
|
||||
"MOVE_MIMIC",
|
||||
"MOVE_PRESENT",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SNORE",
|
||||
"MOVE_THUNDER_FANG"
|
||||
],
|
||||
@ -30061,7 +30061,7 @@
|
||||
"MOVE_LOW_KICK",
|
||||
"MOVE_NIGHT_SLASH",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_SMELLING_SALT"
|
||||
"MOVE_SMELLING_SALTS"
|
||||
],
|
||||
"TutorMoves": [
|
||||
"MOVE_FIRE_PLEDGE"
|
||||
@ -30192,7 +30192,7 @@
|
||||
"MOVE_LOW_KICK",
|
||||
"MOVE_NIGHT_SLASH",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_SMELLING_SALT"
|
||||
"MOVE_SMELLING_SALTS"
|
||||
],
|
||||
"TutorMoves": [
|
||||
"MOVE_FIRE_PLEDGE"
|
||||
@ -30349,7 +30349,7 @@
|
||||
"MOVE_LOW_KICK",
|
||||
"MOVE_NIGHT_SLASH",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_SMELLING_SALT"
|
||||
"MOVE_SMELLING_SALTS"
|
||||
],
|
||||
"TutorMoves": [
|
||||
"MOVE_BLAST_BURN",
|
||||
@ -34270,7 +34270,7 @@
|
||||
"MOVE_EXTRASENSORY",
|
||||
"MOVE_FAKE_TEARS",
|
||||
"MOVE_HAMMER_ARM",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SMOKESCREEN",
|
||||
"MOVE_SNORE",
|
||||
"MOVE_TAKE_DOWN"
|
||||
@ -34397,7 +34397,7 @@
|
||||
"MOVE_EXTRASENSORY",
|
||||
"MOVE_FAKE_TEARS",
|
||||
"MOVE_HAMMER_ARM",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SMOKESCREEN",
|
||||
"MOVE_SNORE",
|
||||
"MOVE_TAKE_DOWN"
|
||||
@ -34558,7 +34558,7 @@
|
||||
"MOVE_EXTRASENSORY",
|
||||
"MOVE_FAKE_TEARS",
|
||||
"MOVE_HAMMER_ARM",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SMOKESCREEN",
|
||||
"MOVE_SNORE",
|
||||
"MOVE_TAKE_DOWN"
|
||||
@ -34609,7 +34609,7 @@
|
||||
},
|
||||
{
|
||||
"Level": 28,
|
||||
"Move": "MOVE_SMELLING_SALT"
|
||||
"Move": "MOVE_SMELLING_SALTS"
|
||||
},
|
||||
{
|
||||
"Level": 31,
|
||||
@ -34742,7 +34742,7 @@
|
||||
},
|
||||
{
|
||||
"Level": 30,
|
||||
"Move": "MOVE_SMELLING_SALT"
|
||||
"Move": "MOVE_SMELLING_SALTS"
|
||||
},
|
||||
{
|
||||
"Level": 34,
|
||||
@ -35641,7 +35641,7 @@
|
||||
"MOVE_IRON_HEAD",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_SCREECH",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_STEALTH_ROCK",
|
||||
"MOVE_STOMP",
|
||||
"MOVE_SUPERPOWER"
|
||||
@ -35769,7 +35769,7 @@
|
||||
"MOVE_IRON_HEAD",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_SCREECH",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_STEALTH_ROCK",
|
||||
"MOVE_STOMP",
|
||||
"MOVE_SUPERPOWER"
|
||||
@ -35920,7 +35920,7 @@
|
||||
"MOVE_IRON_HEAD",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_SCREECH",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_STEALTH_ROCK",
|
||||
"MOVE_STOMP",
|
||||
"MOVE_SUPERPOWER"
|
||||
@ -38534,7 +38534,7 @@
|
||||
"MOVE_PSYCHO_SHIFT",
|
||||
"MOVE_RAPID_SPIN",
|
||||
"MOVE_ROLE_PLAY",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SPOTLIGHT",
|
||||
"MOVE_TRICK",
|
||||
"MOVE_WATER_PULSE",
|
||||
@ -39048,7 +39048,7 @@
|
||||
"MOVE_NASTY_PLOT",
|
||||
"MOVE_ROTOTILLER",
|
||||
"MOVE_SEED_BOMB",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SWITCHEROO",
|
||||
"MOVE_TEETER_DANCE",
|
||||
"MOVE_WORRY_SEED"
|
||||
@ -39198,7 +39198,7 @@
|
||||
"MOVE_NASTY_PLOT",
|
||||
"MOVE_ROTOTILLER",
|
||||
"MOVE_SEED_BOMB",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SWITCHEROO",
|
||||
"MOVE_TEETER_DANCE",
|
||||
"MOVE_WORRY_SEED"
|
||||
@ -52913,7 +52913,7 @@
|
||||
"MOVE_ME_FIRST",
|
||||
"MOVE_MEDITATE",
|
||||
"MOVE_QUICK_GUARD",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_VACUUM_WAVE",
|
||||
"MOVE_WAKE_UP_SLAP"
|
||||
],
|
||||
@ -53052,7 +53052,7 @@
|
||||
"MOVE_ME_FIRST",
|
||||
"MOVE_MEDITATE",
|
||||
"MOVE_QUICK_GUARD",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_VACUUM_WAVE",
|
||||
"MOVE_WAKE_UP_SLAP"
|
||||
],
|
||||
@ -54137,7 +54137,7 @@
|
||||
"MOVE_MAGNITUDE",
|
||||
"MOVE_MUDDY_WATER",
|
||||
"MOVE_SLEEP_TALK",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SNORE",
|
||||
"MOVE_ZEN_HEADBUTT"
|
||||
],
|
||||
@ -62422,7 +62422,7 @@
|
||||
"MOVE_FORESIGHT",
|
||||
"MOVE_MACH_PUNCH",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_WIDE_GUARD"
|
||||
],
|
||||
"TutorMoves": []
|
||||
@ -62546,7 +62546,7 @@
|
||||
"MOVE_FORESIGHT",
|
||||
"MOVE_MACH_PUNCH",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_WIDE_GUARD"
|
||||
],
|
||||
"TutorMoves": []
|
||||
@ -62674,7 +62674,7 @@
|
||||
"MOVE_FORESIGHT",
|
||||
"MOVE_MACH_PUNCH",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_WIDE_GUARD"
|
||||
],
|
||||
"TutorMoves": []
|
||||
@ -72602,7 +72602,7 @@
|
||||
"MOVE_KNOCK_OFF",
|
||||
"MOVE_LOW_KICK",
|
||||
"MOVE_ME_FIRST",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_VITAL_THROW"
|
||||
],
|
||||
"TutorMoves": []
|
||||
@ -72745,7 +72745,7 @@
|
||||
"MOVE_KNOCK_OFF",
|
||||
"MOVE_LOW_KICK",
|
||||
"MOVE_ME_FIRST",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_VITAL_THROW"
|
||||
],
|
||||
"TutorMoves": []
|
||||
|
||||
@ -60044,7 +60044,7 @@
|
||||
},
|
||||
{
|
||||
"Level": 52,
|
||||
"Move": "MOVE_FOREST\u2019S_CURSE"
|
||||
"Move": "MOVE_FORESTS_CURSE"
|
||||
}
|
||||
],
|
||||
"PreEvoMoves": [],
|
||||
@ -60166,7 +60166,7 @@
|
||||
},
|
||||
{
|
||||
"Level": 52,
|
||||
"Move": "MOVE_FOREST\u2019S_CURSE"
|
||||
"Move": "MOVE_FORESTS_CURSE"
|
||||
}
|
||||
],
|
||||
"PreEvoMoves": [],
|
||||
|
||||
@ -6867,7 +6867,7 @@
|
||||
"MOVE_REVENGE",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_SLEEP_TALK",
|
||||
"MOVE_SMELLING_SALT"
|
||||
"MOVE_SMELLING_SALTS"
|
||||
],
|
||||
"TutorMoves": [
|
||||
"MOVE_COVET",
|
||||
@ -7039,7 +7039,7 @@
|
||||
"MOVE_REVENGE",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_SLEEP_TALK",
|
||||
"MOVE_SMELLING_SALT"
|
||||
"MOVE_SMELLING_SALTS"
|
||||
],
|
||||
"TutorMoves": [
|
||||
"MOVE_COVET",
|
||||
@ -8149,7 +8149,7 @@
|
||||
"MOVE_POWER_TRICK",
|
||||
"MOVE_QUICK_GUARD",
|
||||
"MOVE_ROLLING_KICK",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_THUNDER_PUNCH",
|
||||
"MOVE_TICKLE"
|
||||
],
|
||||
@ -8295,7 +8295,7 @@
|
||||
"MOVE_POWER_TRICK",
|
||||
"MOVE_QUICK_GUARD",
|
||||
"MOVE_ROLLING_KICK",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_THUNDER_PUNCH",
|
||||
"MOVE_TICKLE"
|
||||
],
|
||||
@ -8457,7 +8457,7 @@
|
||||
"MOVE_POWER_TRICK",
|
||||
"MOVE_QUICK_GUARD",
|
||||
"MOVE_ROLLING_KICK",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_THUNDER_PUNCH",
|
||||
"MOVE_TICKLE"
|
||||
],
|
||||
@ -13908,7 +13908,7 @@
|
||||
"MOVE_MAGNITUDE",
|
||||
"MOVE_MUDDY_WATER",
|
||||
"MOVE_SLEEP_TALK",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SNORE",
|
||||
"MOVE_THRASH",
|
||||
"MOVE_ZEN_HEADBUTT"
|
||||
@ -27257,7 +27257,7 @@
|
||||
"MOVE_METRONOME",
|
||||
"MOVE_MIMIC",
|
||||
"MOVE_PRESENT",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SNORE",
|
||||
"MOVE_THUNDER_FANG"
|
||||
],
|
||||
@ -27411,7 +27411,7 @@
|
||||
"MOVE_METRONOME",
|
||||
"MOVE_MIMIC",
|
||||
"MOVE_PRESENT",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SNORE",
|
||||
"MOVE_THUNDER_FANG"
|
||||
],
|
||||
@ -33325,7 +33325,7 @@
|
||||
"MOVE_LOW_KICK",
|
||||
"MOVE_NIGHT_SLASH",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_SMELLING_SALT"
|
||||
"MOVE_SMELLING_SALTS"
|
||||
],
|
||||
"TutorMoves": [
|
||||
"MOVE_BOUNCE",
|
||||
@ -33463,7 +33463,7 @@
|
||||
"MOVE_LOW_KICK",
|
||||
"MOVE_NIGHT_SLASH",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_SMELLING_SALT"
|
||||
"MOVE_SMELLING_SALTS"
|
||||
],
|
||||
"TutorMoves": [
|
||||
"MOVE_BOUNCE",
|
||||
@ -33631,7 +33631,7 @@
|
||||
"MOVE_LOW_KICK",
|
||||
"MOVE_NIGHT_SLASH",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_SMELLING_SALT"
|
||||
"MOVE_SMELLING_SALTS"
|
||||
],
|
||||
"TutorMoves": [
|
||||
"MOVE_BLAST_BURN",
|
||||
@ -37975,7 +37975,7 @@
|
||||
"MOVE_EXTRASENSORY",
|
||||
"MOVE_FAKE_TEARS",
|
||||
"MOVE_HAMMER_ARM",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SMOKESCREEN",
|
||||
"MOVE_SNORE",
|
||||
"MOVE_TAKE_DOWN",
|
||||
@ -38115,7 +38115,7 @@
|
||||
"MOVE_EXTRASENSORY",
|
||||
"MOVE_FAKE_TEARS",
|
||||
"MOVE_HAMMER_ARM",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SMOKESCREEN",
|
||||
"MOVE_SNORE",
|
||||
"MOVE_TAKE_DOWN",
|
||||
@ -38291,7 +38291,7 @@
|
||||
"MOVE_EXTRASENSORY",
|
||||
"MOVE_FAKE_TEARS",
|
||||
"MOVE_HAMMER_ARM",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SMOKESCREEN",
|
||||
"MOVE_SNORE",
|
||||
"MOVE_TAKE_DOWN",
|
||||
@ -38358,7 +38358,7 @@
|
||||
},
|
||||
{
|
||||
"Level": 28,
|
||||
"Move": "MOVE_SMELLING_SALT"
|
||||
"Move": "MOVE_SMELLING_SALTS"
|
||||
},
|
||||
{
|
||||
"Level": 31,
|
||||
@ -38502,7 +38502,7 @@
|
||||
},
|
||||
{
|
||||
"Level": 30,
|
||||
"Move": "MOVE_SMELLING_SALT"
|
||||
"Move": "MOVE_SMELLING_SALTS"
|
||||
},
|
||||
{
|
||||
"Level": 34,
|
||||
@ -39511,7 +39511,7 @@
|
||||
"MOVE_IRON_HEAD",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_SCREECH",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_STEALTH_ROCK",
|
||||
"MOVE_STOMP",
|
||||
"MOVE_SUPERPOWER"
|
||||
@ -39653,7 +39653,7 @@
|
||||
"MOVE_IRON_HEAD",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_SCREECH",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_STEALTH_ROCK",
|
||||
"MOVE_STOMP",
|
||||
"MOVE_SUPERPOWER"
|
||||
@ -39819,7 +39819,7 @@
|
||||
"MOVE_IRON_HEAD",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_SCREECH",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_STEALTH_ROCK",
|
||||
"MOVE_STOMP",
|
||||
"MOVE_SUPERPOWER"
|
||||
@ -42709,7 +42709,7 @@
|
||||
"MOVE_PSYCHO_SHIFT",
|
||||
"MOVE_RAPID_SPIN",
|
||||
"MOVE_ROLE_PLAY",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SPOTLIGHT",
|
||||
"MOVE_TRICK",
|
||||
"MOVE_WATER_PULSE",
|
||||
@ -43284,7 +43284,7 @@
|
||||
"MOVE_POWER_UP_PUNCH",
|
||||
"MOVE_ROTOTILLER",
|
||||
"MOVE_SEED_BOMB",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SWITCHEROO",
|
||||
"MOVE_TEETER_DANCE",
|
||||
"MOVE_WORRY_SEED"
|
||||
@ -43448,7 +43448,7 @@
|
||||
"MOVE_POWER_UP_PUNCH",
|
||||
"MOVE_ROTOTILLER",
|
||||
"MOVE_SEED_BOMB",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SWITCHEROO",
|
||||
"MOVE_TEETER_DANCE",
|
||||
"MOVE_WORRY_SEED"
|
||||
@ -58660,7 +58660,7 @@
|
||||
"MOVE_ME_FIRST",
|
||||
"MOVE_MEDITATE",
|
||||
"MOVE_QUICK_GUARD",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_VACUUM_WAVE",
|
||||
"MOVE_WAKE_UP_SLAP"
|
||||
],
|
||||
@ -58817,7 +58817,7 @@
|
||||
"MOVE_ME_FIRST",
|
||||
"MOVE_MEDITATE",
|
||||
"MOVE_QUICK_GUARD",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_VACUUM_WAVE",
|
||||
"MOVE_WAKE_UP_SLAP"
|
||||
],
|
||||
@ -60013,7 +60013,7 @@
|
||||
"MOVE_MAGNITUDE",
|
||||
"MOVE_MUDDY_WATER",
|
||||
"MOVE_SLEEP_TALK",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SNORE",
|
||||
"MOVE_THRASH",
|
||||
"MOVE_ZEN_HEADBUTT"
|
||||
@ -69340,7 +69340,7 @@
|
||||
"MOVE_MACH_PUNCH",
|
||||
"MOVE_POWER_UP_PUNCH",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_WIDE_GUARD"
|
||||
],
|
||||
"TutorMoves": [
|
||||
@ -69477,7 +69477,7 @@
|
||||
"MOVE_MACH_PUNCH",
|
||||
"MOVE_POWER_UP_PUNCH",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_WIDE_GUARD"
|
||||
],
|
||||
"TutorMoves": [
|
||||
@ -69618,7 +69618,7 @@
|
||||
"MOVE_MACH_PUNCH",
|
||||
"MOVE_POWER_UP_PUNCH",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_WIDE_GUARD"
|
||||
],
|
||||
"TutorMoves": [
|
||||
@ -80651,7 +80651,7 @@
|
||||
"MOVE_KNOCK_OFF",
|
||||
"MOVE_LOW_KICK",
|
||||
"MOVE_ME_FIRST",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_VITAL_THROW"
|
||||
],
|
||||
"TutorMoves": [
|
||||
@ -80805,7 +80805,7 @@
|
||||
"MOVE_KNOCK_OFF",
|
||||
"MOVE_LOW_KICK",
|
||||
"MOVE_ME_FIRST",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_VITAL_THROW"
|
||||
],
|
||||
"TutorMoves": [
|
||||
|
||||
@ -6251,7 +6251,7 @@
|
||||
"MOVE_REVENGE",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_SLEEP_TALK",
|
||||
"MOVE_SMELLING_SALT"
|
||||
"MOVE_SMELLING_SALTS"
|
||||
],
|
||||
"TutorMoves": []
|
||||
},
|
||||
@ -6392,7 +6392,7 @@
|
||||
"MOVE_REVENGE",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_SLEEP_TALK",
|
||||
"MOVE_SMELLING_SALT"
|
||||
"MOVE_SMELLING_SALTS"
|
||||
],
|
||||
"TutorMoves": []
|
||||
},
|
||||
@ -7365,7 +7365,7 @@
|
||||
"MOVE_POWER_TRICK",
|
||||
"MOVE_QUICK_GUARD",
|
||||
"MOVE_ROLLING_KICK",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_THUNDER_PUNCH",
|
||||
"MOVE_TICKLE"
|
||||
],
|
||||
@ -7492,7 +7492,7 @@
|
||||
"MOVE_POWER_TRICK",
|
||||
"MOVE_QUICK_GUARD",
|
||||
"MOVE_ROLLING_KICK",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_THUNDER_PUNCH",
|
||||
"MOVE_TICKLE"
|
||||
],
|
||||
@ -7626,7 +7626,7 @@
|
||||
"MOVE_POWER_TRICK",
|
||||
"MOVE_QUICK_GUARD",
|
||||
"MOVE_ROLLING_KICK",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_THUNDER_PUNCH",
|
||||
"MOVE_TICKLE"
|
||||
],
|
||||
@ -12530,7 +12530,7 @@
|
||||
"MOVE_MAGNITUDE",
|
||||
"MOVE_MUDDY_WATER",
|
||||
"MOVE_SLEEP_TALK",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SNORE",
|
||||
"MOVE_ZEN_HEADBUTT"
|
||||
],
|
||||
@ -24501,7 +24501,7 @@
|
||||
"MOVE_METRONOME",
|
||||
"MOVE_MIMIC",
|
||||
"MOVE_PRESENT",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SNORE",
|
||||
"MOVE_THUNDER_FANG"
|
||||
],
|
||||
@ -24645,7 +24645,7 @@
|
||||
"MOVE_METRONOME",
|
||||
"MOVE_MIMIC",
|
||||
"MOVE_PRESENT",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SNORE",
|
||||
"MOVE_THUNDER_FANG"
|
||||
],
|
||||
@ -30010,7 +30010,7 @@
|
||||
"MOVE_LOW_KICK",
|
||||
"MOVE_NIGHT_SLASH",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_SMELLING_SALT"
|
||||
"MOVE_SMELLING_SALTS"
|
||||
],
|
||||
"TutorMoves": [
|
||||
"MOVE_FIRE_PLEDGE"
|
||||
@ -30138,7 +30138,7 @@
|
||||
"MOVE_LOW_KICK",
|
||||
"MOVE_NIGHT_SLASH",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_SMELLING_SALT"
|
||||
"MOVE_SMELLING_SALTS"
|
||||
],
|
||||
"TutorMoves": [
|
||||
"MOVE_FIRE_PLEDGE"
|
||||
@ -30291,7 +30291,7 @@
|
||||
"MOVE_LOW_KICK",
|
||||
"MOVE_NIGHT_SLASH",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_SMELLING_SALT"
|
||||
"MOVE_SMELLING_SALTS"
|
||||
],
|
||||
"TutorMoves": [
|
||||
"MOVE_BLAST_BURN",
|
||||
@ -34074,7 +34074,7 @@
|
||||
"MOVE_EXTRASENSORY",
|
||||
"MOVE_FAKE_TEARS",
|
||||
"MOVE_HAMMER_ARM",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SMOKESCREEN",
|
||||
"MOVE_SNORE",
|
||||
"MOVE_TAKE_DOWN"
|
||||
@ -34197,7 +34197,7 @@
|
||||
"MOVE_EXTRASENSORY",
|
||||
"MOVE_FAKE_TEARS",
|
||||
"MOVE_HAMMER_ARM",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SMOKESCREEN",
|
||||
"MOVE_SNORE",
|
||||
"MOVE_TAKE_DOWN"
|
||||
@ -34352,7 +34352,7 @@
|
||||
"MOVE_EXTRASENSORY",
|
||||
"MOVE_FAKE_TEARS",
|
||||
"MOVE_HAMMER_ARM",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SMOKESCREEN",
|
||||
"MOVE_SNORE",
|
||||
"MOVE_TAKE_DOWN"
|
||||
@ -34395,7 +34395,7 @@
|
||||
},
|
||||
{
|
||||
"Level": 22,
|
||||
"Move": "MOVE_SMELLING_SALT"
|
||||
"Move": "MOVE_SMELLING_SALTS"
|
||||
},
|
||||
{
|
||||
"Level": 25,
|
||||
@ -34532,7 +34532,7 @@
|
||||
},
|
||||
{
|
||||
"Level": 22,
|
||||
"Move": "MOVE_SMELLING_SALT"
|
||||
"Move": "MOVE_SMELLING_SALTS"
|
||||
},
|
||||
{
|
||||
"Level": 27,
|
||||
@ -35457,7 +35457,7 @@
|
||||
"MOVE_IRON_HEAD",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_SCREECH",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_STEALTH_ROCK",
|
||||
"MOVE_STOMP",
|
||||
"MOVE_SUPERPOWER"
|
||||
@ -35582,7 +35582,7 @@
|
||||
"MOVE_IRON_HEAD",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_SCREECH",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_STEALTH_ROCK",
|
||||
"MOVE_STOMP",
|
||||
"MOVE_SUPERPOWER"
|
||||
@ -35730,7 +35730,7 @@
|
||||
"MOVE_IRON_HEAD",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_SCREECH",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_STEALTH_ROCK",
|
||||
"MOVE_STOMP",
|
||||
"MOVE_SUPERPOWER"
|
||||
@ -38335,7 +38335,7 @@
|
||||
"MOVE_PSYCHO_SHIFT",
|
||||
"MOVE_RAPID_SPIN",
|
||||
"MOVE_ROLE_PLAY",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_TRICK",
|
||||
"MOVE_WATER_PULSE",
|
||||
"MOVE_WISH"
|
||||
@ -38856,7 +38856,7 @@
|
||||
"MOVE_NASTY_PLOT",
|
||||
"MOVE_ROTOTILLER",
|
||||
"MOVE_SEED_BOMB",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SWITCHEROO",
|
||||
"MOVE_TEETER_DANCE",
|
||||
"MOVE_WORRY_SEED"
|
||||
@ -38999,7 +38999,7 @@
|
||||
"MOVE_NASTY_PLOT",
|
||||
"MOVE_ROTOTILLER",
|
||||
"MOVE_SEED_BOMB",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SWITCHEROO",
|
||||
"MOVE_TEETER_DANCE",
|
||||
"MOVE_WORRY_SEED"
|
||||
@ -52626,7 +52626,7 @@
|
||||
"MOVE_ME_FIRST",
|
||||
"MOVE_MEDITATE",
|
||||
"MOVE_QUICK_GUARD",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_VACUUM_WAVE",
|
||||
"MOVE_WAKE_UP_SLAP"
|
||||
],
|
||||
@ -52770,7 +52770,7 @@
|
||||
"MOVE_ME_FIRST",
|
||||
"MOVE_MEDITATE",
|
||||
"MOVE_QUICK_GUARD",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_VACUUM_WAVE",
|
||||
"MOVE_WAKE_UP_SLAP"
|
||||
],
|
||||
@ -53863,7 +53863,7 @@
|
||||
"MOVE_MAGNITUDE",
|
||||
"MOVE_MUDDY_WATER",
|
||||
"MOVE_SLEEP_TALK",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_SNORE",
|
||||
"MOVE_ZEN_HEADBUTT"
|
||||
],
|
||||
@ -62168,7 +62168,7 @@
|
||||
"MOVE_FORESIGHT",
|
||||
"MOVE_MACH_PUNCH",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_WIDE_GUARD"
|
||||
],
|
||||
"TutorMoves": []
|
||||
@ -62295,7 +62295,7 @@
|
||||
"MOVE_FORESIGHT",
|
||||
"MOVE_MACH_PUNCH",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_WIDE_GUARD"
|
||||
],
|
||||
"TutorMoves": []
|
||||
@ -62426,7 +62426,7 @@
|
||||
"MOVE_FORESIGHT",
|
||||
"MOVE_MACH_PUNCH",
|
||||
"MOVE_REVERSAL",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_WIDE_GUARD"
|
||||
],
|
||||
"TutorMoves": []
|
||||
@ -72468,7 +72468,7 @@
|
||||
"MOVE_KNOCK_OFF",
|
||||
"MOVE_LOW_KICK",
|
||||
"MOVE_ME_FIRST",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_VITAL_THROW"
|
||||
],
|
||||
"TutorMoves": []
|
||||
@ -72615,7 +72615,7 @@
|
||||
"MOVE_KNOCK_OFF",
|
||||
"MOVE_LOW_KICK",
|
||||
"MOVE_ME_FIRST",
|
||||
"MOVE_SMELLING_SALT",
|
||||
"MOVE_SMELLING_SALTS",
|
||||
"MOVE_VITAL_THROW"
|
||||
],
|
||||
"TutorMoves": []
|
||||
|
||||
@ -111,6 +111,8 @@ static const struct Symbol *lookup_address(uint32_t address)
|
||||
// available by default.
|
||||
void *memmem(const void *haystack, size_t haystacklen, const void *needle, size_t needlelen)
|
||||
{
|
||||
if (haystacklen < needlelen)
|
||||
return NULL;
|
||||
const char *haystack_ = haystack;
|
||||
const char *needle_ = needle;
|
||||
for (size_t i = 0; i < haystacklen - needlelen; i++)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user