From 7981887f0a695cc35e4a7830f88f468881aed546 Mon Sep 17 00:00:00 2001 From: AgustinGDLV Date: Tue, 24 May 2022 19:00:21 -0700 Subject: [PATCH 001/162] merge kyogre, groudon, rayquaza battle types --- include/constants/battle.h | 8 ++-- src/battle_bg.c | 86 ++++++++++++++++++++++---------------- src/battle_intro.c | 2 +- src/battle_setup.c | 5 +-- src/pokemon.c | 6 ++- src/recorded_battle.c | 5 +-- 6 files changed, 63 insertions(+), 49 deletions(-) diff --git a/include/constants/battle.h b/include/constants/battle.h index a5af07d98c..7c7dd0a47c 100644 --- a/include/constants/battle.h +++ b/include/constants/battle.h @@ -56,7 +56,7 @@ #define BATTLE_TYPE_WALLY_TUTORIAL (1 << 9) // Used in pokefirered as BATTLE_TYPE_OLD_MAN_TUTORIAL. #define BATTLE_TYPE_ROAMER (1 << 10) #define BATTLE_TYPE_EREADER_TRAINER (1 << 11) -#define BATTLE_TYPE_KYOGRE_GROUDON (1 << 12) +#define BATTLE_TYPE_RAID (1 << 12) #define BATTLE_TYPE_LEGENDARY (1 << 13) #define BATTLE_TYPE_REGI (1 << 14) #define BATTLE_TYPE_TWO_OPPONENTS (1 << 15) // Used in pokefirered as BATTLE_TYPE_GHOST. @@ -72,9 +72,9 @@ #define BATTLE_TYPE_RECORDED_LINK (1 << 25) #define BATTLE_TYPE_TRAINER_HILL (1 << 26) #define BATTLE_TYPE_SECRET_BASE (1 << 27) -#define BATTLE_TYPE_GROUDON (1 << 28) -#define BATTLE_TYPE_KYOGRE (1 << 29) -#define BATTLE_TYPE_RAYQUAZA (1 << 30) +#define BATTLE_TYPE_28 (1 << 28) +#define BATTLE_TYPE_29 (1 << 29) +#define BATTLE_TYPE_30 (1 << 30) #define BATTLE_TYPE_RECORDED_IS_MASTER (1 << 31) #define BATTLE_TYPE_FRONTIER (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_PIKE | BATTLE_TYPE_PYRAMID) #define BATTLE_TYPE_FRONTIER_NO_PYRAMID (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_PIKE) diff --git a/src/battle_bg.c b/src/battle_bg.c index 5ea08c97cc..c05fa44854 100644 --- a/src/battle_bg.c +++ b/src/battle_bg.c @@ -772,23 +772,26 @@ void DrawMainBattleBackground(void) LZDecompressVram(gBattleTerrainTilemap_Building, (void *)(BG_SCREEN_ADDR(26))); LoadCompressedPalette(gBattleTerrainPalette_Frontier, 0x20, 0x60); } - else if (gBattleTypeFlags & BATTLE_TYPE_GROUDON) + else if (gBattleTypeFlags & BATTLE_TYPE_LEGENDARY) { - LZDecompressVram(gBattleTerrainTiles_Cave, (void *)(BG_CHAR_ADDR(2))); - LZDecompressVram(gBattleTerrainTilemap_Cave, (void *)(BG_SCREEN_ADDR(26))); - LoadCompressedPalette(gBattleTerrainPalette_Groudon, 0x20, 0x60); - } - else if (gBattleTypeFlags & BATTLE_TYPE_KYOGRE) - { - LZDecompressVram(gBattleTerrainTiles_Water, (void *)(BG_CHAR_ADDR(2))); - LZDecompressVram(gBattleTerrainTilemap_Water, (void *)(BG_SCREEN_ADDR(26))); - LoadCompressedPalette(gBattleTerrainPalette_Kyogre, 0x20, 0x60); - } - else if (gBattleTypeFlags & BATTLE_TYPE_RAYQUAZA) - { - LZDecompressVram(gBattleTerrainTiles_Rayquaza, (void *)(BG_CHAR_ADDR(2))); - LZDecompressVram(gBattleTerrainTilemap_Rayquaza, (void *)(BG_SCREEN_ADDR(26))); - LoadCompressedPalette(gBattleTerrainPalette_Rayquaza, 0x20, 0x60); + switch (GetMonData(&gEnemyParty[0], MON_DATA_SPECIES, NULL)) + { + case SPECIES_GROUDON: + LZDecompressVram(gBattleTerrainTiles_Cave, (void*)(BG_CHAR_ADDR(2))); + LZDecompressVram(gBattleTerrainTilemap_Cave, (void*)(BG_SCREEN_ADDR(26))); + LoadCompressedPalette(gBattleTerrainPalette_Groudon, 0x20, 0x60); + break; + case SPECIES_KYOGRE: + LZDecompressVram(gBattleTerrainTiles_Water, (void*)(BG_CHAR_ADDR(2))); + LZDecompressVram(gBattleTerrainTilemap_Water, (void*)(BG_SCREEN_ADDR(26))); + LoadCompressedPalette(gBattleTerrainPalette_Kyogre, 0x20, 0x60); + break; + case SPECIES_RAYQUAZA: + LZDecompressVram(gBattleTerrainTiles_Rayquaza, (void*)(BG_CHAR_ADDR(2))); + LZDecompressVram(gBattleTerrainTilemap_Rayquaza, (void*)(BG_SCREEN_ADDR(26))); + LoadCompressedPalette(gBattleTerrainPalette_Rayquaza, 0x20, 0x60); + break; + } } else { @@ -1170,20 +1173,23 @@ void DrawBattleEntryBackground(void) CopyBgTilemapBufferToVram(2); } } - else if (gBattleTypeFlags & BATTLE_TYPE_GROUDON) + else if (gBattleTypeFlags & BATTLE_TYPE_LEGENDARY) { - LZDecompressVram(gBattleTerrainAnimTiles_Cave, (void *)(BG_CHAR_ADDR(1))); - LZDecompressVram(gBattleTerrainAnimTilemap_Cave, (void *)(BG_SCREEN_ADDR(28))); - } - else if (gBattleTypeFlags & BATTLE_TYPE_KYOGRE) - { - LZDecompressVram(gBattleTerrainAnimTiles_Underwater, (void *)(BG_CHAR_ADDR(1))); - LZDecompressVram(gBattleTerrainAnimTilemap_Underwater, (void *)(BG_SCREEN_ADDR(28))); - } - else if (gBattleTypeFlags & BATTLE_TYPE_RAYQUAZA) - { - LZDecompressVram(gBattleTerrainAnimTiles_Rayquaza, (void *)(BG_CHAR_ADDR(1))); - LZDecompressVram(gBattleTerrainAnimTilemap_Rayquaza, (void *)(BG_SCREEN_ADDR(28))); + switch (GetMonData(&gEnemyParty[0], MON_DATA_SPECIES, NULL)) + { + case SPECIES_GROUDON: + LZDecompressVram(gBattleTerrainAnimTiles_Cave, (void*)(BG_CHAR_ADDR(1))); + LZDecompressVram(gBattleTerrainAnimTilemap_Cave, (void*)(BG_SCREEN_ADDR(28))); + break; + case SPECIES_KYOGRE: + LZDecompressVram(gBattleTerrainAnimTiles_Underwater, (void*)(BG_CHAR_ADDR(1))); + LZDecompressVram(gBattleTerrainAnimTilemap_Underwater, (void*)(BG_SCREEN_ADDR(28))); + break; + case SPECIES_RAYQUAZA: + LZDecompressVram(gBattleTerrainAnimTiles_Rayquaza, (void*)(BG_CHAR_ADDR(1))); + LZDecompressVram(gBattleTerrainAnimTilemap_Rayquaza, (void*)(BG_SCREEN_ADDR(28))); + break; + } } else { @@ -1238,9 +1244,17 @@ bool8 LoadChosenBattleElement(u8 caseId) { LZDecompressVram(gBattleTerrainTiles_Building, (void *)(BG_CHAR_ADDR(2))); } - else if (gBattleTypeFlags & BATTLE_TYPE_GROUDON) + else if (gBattleTypeFlags & BATTLE_TYPE_LEGENDARY) { - LZDecompressVram(gBattleTerrainTiles_Cave, (void *)(BG_CHAR_ADDR(2))); + switch (GetMonData(&gEnemyParty[0], MON_DATA_SPECIES, NULL)) + { + case SPECIES_GROUDON: + LZDecompressVram(gBattleTerrainTiles_Cave, (void*)(BG_CHAR_ADDR(2))); + break; + case SPECIES_KYOGRE: + LZDecompressVram(gBattleTerrainTilemap_Water, (void*)(BG_SCREEN_ADDR(2))); + break; + } } else { @@ -1297,10 +1311,10 @@ bool8 LoadChosenBattleElement(u8 caseId) { LZDecompressVram(gBattleTerrainTilemap_Building, (void *)(BG_SCREEN_ADDR(26))); } - else if (gBattleTypeFlags & BATTLE_TYPE_KYOGRE_GROUDON) + else if (gBattleTypeFlags & BATTLE_TYPE_LEGENDARY) { - if (gGameVersion == VERSION_RUBY) - LZDecompressVram(gBattleTerrainTilemap_Cave, (void *)(BG_SCREEN_ADDR(26))); + if (GetMonData(&gEnemyParty[0], MON_DATA_SPECIES, NULL) == SPECIES_GROUDON) + LZDecompressVram(gBattleTerrainTilemap_Cave, (void*)(BG_SCREEN_ADDR(26))); else LZDecompressVram(gBattleTerrainTilemap_Water, (void *)(BG_SCREEN_ADDR(26))); } @@ -1359,9 +1373,9 @@ bool8 LoadChosenBattleElement(u8 caseId) { LoadCompressedPalette(gBattleTerrainPalette_Frontier, 0x20, 0x60); } - else if (gBattleTypeFlags & BATTLE_TYPE_KYOGRE_GROUDON) + else if (gBattleTypeFlags & BATTLE_TYPE_LEGENDARY) { - if (gGameVersion == VERSION_RUBY) + if (GetMonData(&gEnemyParty[0], MON_DATA_SPECIES, NULL) == SPECIES_GROUDON) LoadCompressedPalette(gBattleTerrainPalette_Groudon, 0x20, 0x60); else LoadCompressedPalette(gBattleTerrainPalette_Kyogre, 0x20, 0x60); diff --git a/src/battle_intro.c b/src/battle_intro.c index 78982ca4c3..3eacf57163 100644 --- a/src/battle_intro.c +++ b/src/battle_intro.c @@ -118,7 +118,7 @@ void HandleIntroSlide(u8 terrain) { taskId = CreateTask(BattleIntroSlide3, 0); } - else if ((gBattleTypeFlags & BATTLE_TYPE_KYOGRE_GROUDON) && gGameVersion != VERSION_RUBY) + else if (GetMonData(&gEnemyParty[0], MON_DATA_SPECIES, NULL) == SPECIES_KYOGRE) { terrain = BATTLE_TERRAIN_UNDERWATER; taskId = CreateTask(BattleIntroSlide2, 0); diff --git a/src/battle_setup.c b/src/battle_setup.c index b0b068ef39..a5e7c142cd 100644 --- a/src/battle_setup.c +++ b/src/battle_setup.c @@ -536,15 +536,12 @@ void BattleSetup_StartLegendaryBattle(void) { default: case SPECIES_GROUDON: - gBattleTypeFlags |= BATTLE_TYPE_GROUDON; CreateBattleStartTask(B_TRANSITION_GROUDON, MUS_VS_KYOGRE_GROUDON); break; case SPECIES_KYOGRE: - gBattleTypeFlags |= BATTLE_TYPE_KYOGRE; CreateBattleStartTask(B_TRANSITION_KYOGRE, MUS_VS_KYOGRE_GROUDON); break; case SPECIES_RAYQUAZA: - gBattleTypeFlags |= BATTLE_TYPE_RAYQUAZA; CreateBattleStartTask(B_TRANSITION_RAYQUAZA, MUS_VS_RAYQUAZA); break; case SPECIES_DEOXYS: @@ -569,7 +566,7 @@ void StartGroudonKyogreBattle(void) { LockPlayerFieldControls(); gMain.savedCallback = CB2_EndScriptedWildBattle; - gBattleTypeFlags = BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_KYOGRE_GROUDON; + gBattleTypeFlags = BATTLE_TYPE_LEGENDARY; if (gGameVersion == VERSION_RUBY) CreateBattleStartTask(B_TRANSITION_ANGLED_WIPES, MUS_VS_KYOGRE_GROUDON); // GROUDON diff --git a/src/pokemon.c b/src/pokemon.c index 98ac992560..c8164d7462 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -7514,8 +7514,12 @@ void ClearBattleMonForms(void) u16 GetBattleBGM(void) { - if (gBattleTypeFlags & BATTLE_TYPE_KYOGRE_GROUDON) + if (gBattleTypeFlags & BATTLE_TYPE_LEGENDARY) + { + if (GetMonData(&gEnemyParty[0], MON_DATA_SPECIES, NULL) == SPECIES_RAYQUAZA) + return MUS_VS_RAYQUAZA; return MUS_VS_KYOGRE_GROUDON; + } else if (gBattleTypeFlags & BATTLE_TYPE_REGI) return MUS_VS_REGI; else if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK)) diff --git a/src/recorded_battle.c b/src/recorded_battle.c index dead1dd7e3..772d39991e 100644 --- a/src/recorded_battle.c +++ b/src/recorded_battle.c @@ -23,9 +23,8 @@ #define BATTLER_RECORD_SIZE 664 #define ILLEGAL_BATTLE_TYPES ((BATTLE_TYPE_LINK | BATTLE_TYPE_SAFARI | BATTLE_TYPE_FIRST_BATTLE \ | BATTLE_TYPE_WALLY_TUTORIAL | BATTLE_TYPE_ROAMER | BATTLE_TYPE_EREADER_TRAINER \ - | BATTLE_TYPE_KYOGRE_GROUDON | BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_REGI \ - | BATTLE_TYPE_RECORDED | BATTLE_TYPE_TRAINER_HILL | BATTLE_TYPE_SECRET_BASE \ - | BATTLE_TYPE_GROUDON | BATTLE_TYPE_KYOGRE | BATTLE_TYPE_RAYQUAZA)) + | BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_REGI | BATTLE_TYPE_RECORDED \ + | BATTLE_TYPE_TRAINER_HILL | BATTLE_TYPE_SECRET_BASE)) struct PlayerInfo { From 056048daf9c4acc449691605542b9d1720858aa1 Mon Sep 17 00:00:00 2001 From: AgustinGDLV Date: Thu, 27 Oct 2022 13:17:15 -0700 Subject: [PATCH 002/162] added data for max moves --- data/battle_anim_scripts.s | 80 +- data/battle_scripts_1.s | 9 + include/battle.h | 1 + include/battle_dynamax.h | 55 + include/constants/battle_move_effects.h | 3 +- include/constants/moves.h | 112 ++ include/data.h | 2 +- src/data/battle_moves.h | 2044 ++++++++++++++++++++++- src/data/text/move_names.h | 214 ++- 9 files changed, 2514 insertions(+), 6 deletions(-) create mode 100644 include/battle_dynamax.h diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index e5f32e09ac..64fe5fbdbc 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -780,7 +780,7 @@ gBattleAnims_Moves:: .4byte Move_GLACIAL_LANCE .4byte Move_ASTRAL_BARRAGE .4byte Move_EERIE_SPELL -@@@@LA MOVES +@@@@ LA MOVES .4byte Move_DIRE_CLAW .4byte Move_PSYSHIELD_BASH .4byte Move_POWER_SHIFT @@ -841,6 +841,44 @@ gBattleAnims_Moves:: .4byte Move_MENACING_MOONRAZE_MAELSTROM .4byte Move_LIGHT_THAT_BURNS_THE_SKY .4byte Move_SOUL_STEALING_7_STAR_STRIKE +@@@@ MAX MOVES + .4byte Move_MAX_GUARD + .4byte Move_MAX_STRIKE_P + .4byte Move_MAX_STRIKE_S + .4byte Move_MAX_KNUCKLE_P + .4byte Move_MAX_KNUCKLE_S + .4byte Move_MAX_AIRSTREAM_P + .4byte Move_MAX_AIRSTREAM_S + .4byte Move_MAX_OOZE_P + .4byte Move_MAX_OOZE_S + .4byte Move_MAX_QUAKE_P + .4byte Move_MAX_QUAKE_S + .4byte Move_MAX_ROCKFALL_P + .4byte Move_MAX_ROCKFALL_S + .4byte Move_MAX_FLUTTERBY_P + .4byte Move_MAX_FLUTTERBY_S + .4byte Move_MAX_PHANTASM_P + .4byte Move_MAX_PHANTASM_S + .4byte Move_MAX_STEELSPIKE_P + .4byte Move_MAX_STEELSPIKE_S + .4byte Move_MAX_FLARE_P + .4byte Move_MAX_FLARE_S + .4byte Move_MAX_GEYSER_P + .4byte Move_MAX_GEYSER_S + .4byte Move_MAX_OVERGROWTH_P + .4byte Move_MAX_OVERGROWTH_S + .4byte Move_MAX_LIGHTNING_P + .4byte Move_MAX_LIGHTNING_S + .4byte Move_MAX_HAILSTORM_P + .4byte Move_MAX_HAILSTORM_S + .4byte Move_MAX_MINDSTORM_P + .4byte Move_MAX_MINDSTORM_S + .4byte Move_MAX_WYRMWIND_P + .4byte Move_MAX_WYRMWIND_S + .4byte Move_MAX_DARKNESS_P + .4byte Move_MAX_DARKNESS_S + .4byte Move_MAX_STARFALL_P + .4byte Move_MAX_STARFALL_S @@@ Last Move - cannot be reached .4byte Move_COUNT @@ -30632,3 +30670,43 @@ SoulStealingSevenStarStrikeExplosion: launchtemplate gSoulStealExplosionSpriteTemplate 0x83 0x4 0x10 0x10 ANIM_TARGET 0x1 delay 0x6 return + +@@@@@@@@@@ MAX MOVES @@@@@@@@@@ +Move_MAX_GUARD: +Move_MAX_KNUCKLE_P:: +Move_MAX_KNUCKLE_S:: +Move_MAX_QUAKE_P:: +Move_MAX_QUAKE_S:: +Move_MAX_ROCKFALL_P:: +Move_MAX_ROCKFALL_S:: +Move_MAX_FLUTTERBY_P:: +Move_MAX_FLUTTERBY_S:: +Move_MAX_PHANTASM_P:: +Move_MAX_PHANTASM_S:: +Move_MAX_STEELSPIKE_P:: +Move_MAX_STEELSPIKE_S:: +Move_MAX_HAILSTORM_P:: +Move_MAX_HAILSTORM_S:: +Move_MAX_MINDSTORM_P:: +Move_MAX_MINDSTORM_S:: +Move_MAX_WYRMWIND_P:: +Move_MAX_WYRMWIND_S:: +Move_MAX_DARKNESS_P:: +Move_MAX_DARKNESS_S:: +Move_MAX_STARFALL_P:: +Move_MAX_STARFALL_S:: +Move_MAX_STRIKE_P:: +Move_MAX_STRIKE_S:: +Move_MAX_AIRSTREAM_P:: +Move_MAX_AIRSTREAM_S:: +Move_MAX_OOZE_P:: +Move_MAX_OOZE_S:: +Move_MAX_FLARE_P:: +Move_MAX_FLARE_S:: +Move_MAX_GEYSER_P:: +Move_MAX_GEYSER_S:: +Move_MAX_OVERGROWTH_P:: +Move_MAX_OVERGROWTH_S:: +Move_MAX_LIGHTNING_P:: +Move_MAX_LIGHTNING_S:: + end diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index c3bf65edb7..b46fbba590 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -415,6 +415,15 @@ gBattleScriptsForMoveEffects:: .4byte BattleScript_EffectSteelBeam @ EFFECT_STEEL_BEAM .4byte BattleScript_EffectExtremeEvoboost @ EFFECT_EXTREME_EVOBOOST .4byte BattleScript_EffectTerrainHit @ EFFECT_DAMAGE_SET_TERRAIN + .4byte BattleScript_EffectMaxMove @ EFFECT_MAX_MOVE + +BattleScript_EffectMaxMove:: + attackcanceler + @setmaxmoveeffect + accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON + attackstring + ppreduce + goto BattleScript_HitFromCritCalc BattleScript_AffectionBasedEndurance:: playanimation BS_TARGET, B_ANIM_AFFECTION_HANGED_ON diff --git a/include/battle.h b/include/battle.h index b328b46bb2..3739a04307 100644 --- a/include/battle.h +++ b/include/battle.h @@ -13,6 +13,7 @@ #include "battle_bg.h" #include "pokeball.h" #include "battle_debug.h" +#include "battle_dynamax.h" #define GET_BATTLER_SIDE(battler) (GetBattlerPosition(battler) & BIT_SIDE) #define GET_BATTLER_SIDE2(battler) (gBattlerPositions[battler] & BIT_SIDE) diff --git a/include/battle_dynamax.h b/include/battle_dynamax.h new file mode 100644 index 0000000000..33613328a8 --- /dev/null +++ b/include/battle_dynamax.h @@ -0,0 +1,55 @@ +#ifndef GUARD_BATTLE_RAID_H +#define GUARD_BATTLE_RAID_H + +enum MaxMoveEffect +{ + MAX_EFFECT_NONE, + MAX_EFFECT_RAISE_TEAM_ATTACK, + MAX_EFFECT_RAISE_TEAM_DEFENSE, + MAX_EFFECT_RAISE_TEAM_SPEED, + MAX_EFFECT_RAISE_TEAM_SP_ATK, + MAX_EFFECT_RAISE_TEAM_SP_DEF, + MAX_EFFECT_LOWER_ATTACK, + MAX_EFFECT_LOWER_DEFENSE, + MAX_EFFECT_LOWER_SPEED, + MAX_EFFECT_LOWER_SP_ATK, + MAX_EFFECT_LOWER_SP_DEF, + MAX_EFFECT_SUN, + MAX_EFFECT_RAIN, + MAX_EFFECT_SANDSTORM, + MAX_EFFECT_HAIL, + MAX_EFFECT_MISTY_TERRAIN, + MAX_EFFECT_GRASSY_TERRAIN, + MAX_EFFECT_ELECTRIC_TERRAIN, + MAX_EFFECT_PSYCHIC_TERRAIN, + MAX_EFFECT_VINE_LASH, + MAX_EFFECT_WILDFIRE, + MAX_EFFECT_CANNONADE, + MAX_EFFECT_EFFECT_SPORE_FOES, + MAX_EFFECT_PARALYZE_FOES, + MAX_EFFECT_CONFUSE_FOES_PAY_DAY, + MAX_EFFECT_CRIT_PLUS, + MAX_EFFECT_MEAN_LOOK, + MAX_EFFECT_AURORA_VEIL, + MAX_EFFECT_INFATUATE_FOES, + MAX_EFFECT_RECYCLE_BERRIES, + MAX_EFFECT_POISON_FOES, + MAX_EFFECT_STEALTH_ROCK, + MAX_EFFECT_DEFOG, + MAX_EFFECT_POISON_PARALYZE_FOES, + MAX_EFFECT_HEAL_TEAM, + MAX_EFFECT_SPITE, + MAX_EFFECT_GRAVITY, + MAX_EFFECT_VOLCAITH_FOES, + MAX_EFFECT_SANDBLAST_FOES, + MAX_EFFECT_YAWN_FOE, + MAX_EFFECT_LOWER_EVASIVENESS_FOES, + MAX_EFFECT_AROMATHERAPY, + MAX_EFFECT_CONFUSE_FOES, + MAX_EFFECT_STEELSURGE, + MAX_EFFECT_TORMENT_FOES, + MAX_EFFECT_LOWER_SPEED_2_FOES, + MAX_EFFECT_FIRE_SPIN_FOES, +}; + +#endif diff --git a/include/constants/battle_move_effects.h b/include/constants/battle_move_effects.h index f217ecd33a..fdfed4a7ed 100644 --- a/include/constants/battle_move_effects.h +++ b/include/constants/battle_move_effects.h @@ -396,7 +396,8 @@ #define EFFECT_STEEL_BEAM 390 #define EFFECT_EXTREME_EVOBOOST 391 #define EFFECT_DAMAGE_SET_TERRAIN 392 // genesis supernova +#define EFFECT_MAX_MOVE 393 -#define NUM_BATTLE_MOVE_EFFECTS 393 +#define NUM_BATTLE_MOVE_EFFECTS 394 #endif // GUARD_CONSTANTS_BATTLE_MOVE_EFFECTS_H diff --git a/include/constants/moves.h b/include/constants/moves.h index 75691de76a..4025584477 100644 --- a/include/constants/moves.h +++ b/include/constants/moves.h @@ -830,6 +830,7 @@ #define MOVE_DEVASTATING_DRAKE (MOVES_COUNT + 15) #define MOVE_BLACK_HOLE_ECLIPSE (MOVES_COUNT + 16) #define MOVE_TWINKLE_TACKLE (MOVES_COUNT + 17) + // Signature Z Moves #define MOVE_CATASTROPIKA (MOVES_COUNT + 18) #define MOVE_10000000_VOLT_THUNDERBOLT (MOVES_COUNT + 19) @@ -854,6 +855,117 @@ #define MOVES_COUNT_Z (LAST_Z_MOVE + 1) +//Max Moves +#define MOVE_MAX_GUARD (FIRST_MAX_MOVE + 0) +#define MOVE_MAX_STRIKE_P (FIRST_MAX_MOVE + 1) +#define MOVE_MAX_STRIKE_S (FIRST_MAX_MOVE + 2) +#define MOVE_MAX_KNUCKLE_P (FIRST_MAX_MOVE + 3) +#define MOVE_MAX_KNUCKLE_S (FIRST_MAX_MOVE + 4) +#define MOVE_MAX_AIRSTREAM_P (FIRST_MAX_MOVE + 5) +#define MOVE_MAX_AIRSTREAM_S (FIRST_MAX_MOVE + 6) +#define MOVE_MAX_OOZE_P (FIRST_MAX_MOVE + 7) +#define MOVE_MAX_OOZE_S (FIRST_MAX_MOVE + 8) +#define MOVE_MAX_QUAKE_P (FIRST_MAX_MOVE + 9) +#define MOVE_MAX_QUAKE_S (FIRST_MAX_MOVE + 10) +#define MOVE_MAX_ROCKFALL_P (FIRST_MAX_MOVE + 11) +#define MOVE_MAX_ROCKFALL_S (FIRST_MAX_MOVE + 12) +#define MOVE_MAX_FLUTTERBY_P (FIRST_MAX_MOVE + 13) +#define MOVE_MAX_FLUTTERBY_S (FIRST_MAX_MOVE + 14) +#define MOVE_MAX_PHANTASM_P (FIRST_MAX_MOVE + 15) +#define MOVE_MAX_PHANTASM_S (FIRST_MAX_MOVE + 16) +#define MOVE_MAX_STEELSPIKE_P (FIRST_MAX_MOVE + 17) +#define MOVE_MAX_STEELSPIKE_S (FIRST_MAX_MOVE + 18) +#define MOVE_MAX_FLARE_P (FIRST_MAX_MOVE + 19) +#define MOVE_MAX_FLARE_S (FIRST_MAX_MOVE + 20) +#define MOVE_MAX_GEYSER_P (FIRST_MAX_MOVE + 21) +#define MOVE_MAX_GEYSER_S (FIRST_MAX_MOVE + 22) +#define MOVE_MAX_OVERGROWTH_P (FIRST_MAX_MOVE + 23) +#define MOVE_MAX_OVERGROWTH_S (FIRST_MAX_MOVE + 24) +#define MOVE_MAX_LIGHTNING_P (FIRST_MAX_MOVE + 25) +#define MOVE_MAX_LIGHTNING_S (FIRST_MAX_MOVE + 26) +#define MOVE_MAX_MINDSTORM_P (FIRST_MAX_MOVE + 27) +#define MOVE_MAX_MINDSTORM_S (FIRST_MAX_MOVE + 28) +#define MOVE_MAX_HAILSTORM_P (FIRST_MAX_MOVE + 29) +#define MOVE_MAX_HAILSTORM_S (FIRST_MAX_MOVE + 30) +#define MOVE_MAX_WYRMWIND_P (FIRST_MAX_MOVE + 31) +#define MOVE_MAX_WYRMWIND_S (FIRST_MAX_MOVE + 32) +#define MOVE_MAX_DARKNESS_P (FIRST_MAX_MOVE + 33) +#define MOVE_MAX_DARKNESS_S (FIRST_MAX_MOVE + 34) +#define MOVE_MAX_STARFALL_P (FIRST_MAX_MOVE + 35) +#define MOVE_MAX_STARFALL_S (FIRST_MAX_MOVE + 36) +// Gigantamax Moves +#define MOVE_G_MAX_VINE_LASH_P (FIRST_MAX_MOVE + 37) +#define MOVE_G_MAX_VINE_LASH_S (FIRST_MAX_MOVE + 38) +#define MOVE_G_MAX_WILDFIRE_P (FIRST_MAX_MOVE + 39) +#define MOVE_G_MAX_WILDFIRE_S (FIRST_MAX_MOVE + 40) +#define MOVE_G_MAX_CANNONADE_P (FIRST_MAX_MOVE + 41) +#define MOVE_G_MAX_CANNONADE_S (FIRST_MAX_MOVE + 42) +#define MOVE_G_MAX_BEFUDDLE_P (FIRST_MAX_MOVE + 43) +#define MOVE_G_MAX_BEFUDDLE_S (FIRST_MAX_MOVE + 44) +#define MOVE_G_MAX_VOLT_CRASH_P (FIRST_MAX_MOVE + 45) +#define MOVE_G_MAX_VOLT_CRASH_S (FIRST_MAX_MOVE + 46) +#define MOVE_G_MAX_GOLD_RUSH_P (FIRST_MAX_MOVE + 47) +#define MOVE_G_MAX_GOLD_RUSH_S (FIRST_MAX_MOVE + 48) +#define MOVE_G_MAX_CHI_STRIKE_P (FIRST_MAX_MOVE + 49) +#define MOVE_G_MAX_CHI_STRIKE_S (FIRST_MAX_MOVE + 50) +#define MOVE_G_MAX_TERROR_P (FIRST_MAX_MOVE + 51) +#define MOVE_G_MAX_TERROR_S (FIRST_MAX_MOVE + 52) +#define MOVE_G_MAX_FOAM_BURST_P (FIRST_MAX_MOVE + 53) +#define MOVE_G_MAX_FOAM_BURST_S (FIRST_MAX_MOVE + 54) +#define MOVE_G_MAX_RESONANCE_P (FIRST_MAX_MOVE + 55) +#define MOVE_G_MAX_RESONANCE_S (FIRST_MAX_MOVE + 56) +#define MOVE_G_MAX_CUDDLE_P (FIRST_MAX_MOVE + 57) +#define MOVE_G_MAX_CUDDLE_S (FIRST_MAX_MOVE + 58) +#define MOVE_G_MAX_REPLENISH_P (FIRST_MAX_MOVE + 59) +#define MOVE_G_MAX_REPLENISH_S (FIRST_MAX_MOVE + 60) +#define MOVE_G_MAX_MALODOR_P (FIRST_MAX_MOVE + 61) +#define MOVE_G_MAX_MALODOR_S (FIRST_MAX_MOVE + 62) +#define MOVE_G_MAX_MELTDOWN_P (FIRST_MAX_MOVE + 63) +#define MOVE_G_MAX_MELTDOWN_S (FIRST_MAX_MOVE + 64) +#define MOVE_G_MAX_DRUM_SOLO_P (FIRST_MAX_MOVE + 65) +#define MOVE_G_MAX_DRUM_SOLO_S (FIRST_MAX_MOVE + 66) +#define MOVE_G_MAX_FIREBALL_P (FIRST_MAX_MOVE + 67) +#define MOVE_G_MAX_FIREBALL_S (FIRST_MAX_MOVE + 68) +#define MOVE_G_MAX_HYDROSNIPE_P (FIRST_MAX_MOVE + 69) +#define MOVE_G_MAX_HYDROSNIPE_S (FIRST_MAX_MOVE + 70) +#define MOVE_G_MAX_WIND_RAGE_P (FIRST_MAX_MOVE + 71) +#define MOVE_G_MAX_WIND_RAGE_S (FIRST_MAX_MOVE + 72) +#define MOVE_G_MAX_GRAVITAS_P (FIRST_MAX_MOVE + 73) +#define MOVE_G_MAX_GRAVITAS_S (FIRST_MAX_MOVE + 74) +#define MOVE_G_MAX_STONESURGE_P (FIRST_MAX_MOVE + 75) +#define MOVE_G_MAX_STONESURGE_S (FIRST_MAX_MOVE + 76) +#define MOVE_G_MAX_VOLCALITH_P (FIRST_MAX_MOVE + 77) +#define MOVE_G_MAX_VOLCALITH_S (FIRST_MAX_MOVE + 78) +#define MOVE_G_MAX_TARTNESS_P (FIRST_MAX_MOVE + 79) +#define MOVE_G_MAX_TARTNESS_S (FIRST_MAX_MOVE + 80) +#define MOVE_G_MAX_SWEETNESS_P (FIRST_MAX_MOVE + 81) +#define MOVE_G_MAX_SWEETNESS_S (FIRST_MAX_MOVE + 82) +#define MOVE_G_MAX_SANDBLAST_P (FIRST_MAX_MOVE + 83) +#define MOVE_G_MAX_SANDBLAST_S (FIRST_MAX_MOVE + 84) +#define MOVE_G_MAX_STUN_SHOCK_P (FIRST_MAX_MOVE + 85) +#define MOVE_G_MAX_STUN_SHOCK_S (FIRST_MAX_MOVE + 86) +#define MOVE_G_MAX_CENTIFERNO_P (FIRST_MAX_MOVE + 87) +#define MOVE_G_MAX_CENTIFERNO_S (FIRST_MAX_MOVE + 88) +#define MOVE_G_MAX_SMITE_P (FIRST_MAX_MOVE + 89) +#define MOVE_G_MAX_SMITE_S (FIRST_MAX_MOVE + 90) +#define MOVE_G_MAX_SNOOZE_P (FIRST_MAX_MOVE + 91) +#define MOVE_G_MAX_SNOOZE_S (FIRST_MAX_MOVE + 92) +#define MOVE_G_MAX_FINALE_P (FIRST_MAX_MOVE + 93) +#define MOVE_G_MAX_FINALE_S (FIRST_MAX_MOVE + 94) +#define MOVE_G_MAX_STEELSURGE_P (FIRST_MAX_MOVE + 95) +#define MOVE_G_MAX_STEELSURGE_S (FIRST_MAX_MOVE + 96) +#define MOVE_G_MAX_DEPLETION_P (FIRST_MAX_MOVE + 97) +#define MOVE_G_MAX_DEPLETION_S (FIRST_MAX_MOVE + 98) +#define MOVE_G_MAX_ONE_BLOW_P (FIRST_MAX_MOVE + 99) +#define MOVE_G_MAX_ONE_BLOW_S (FIRST_MAX_MOVE + 100) +#define MOVE_G_MAX_RAPID_FLOW_P (FIRST_MAX_MOVE + 101) +#define MOVE_G_MAX_RAPID_FLOW_S (FIRST_MAX_MOVE + 102) + +#define FIRST_MAX_MOVE MOVES_COUNT_Z +#define LAST_MAX_MOVE MOVE_G_MAX_RAPID_FLOW_S + +#define MOVES_COUNT_DYNAMAX (LAST_MAX_MOVE + 1) + // Used for checks for moves affected by Disable, Mimic, etc. #define MOVE_UNAVAILABLE 0xFFFF diff --git a/include/data.h b/include/data.h index b018da3f3b..e08d486986 100644 --- a/include/data.h +++ b/include/data.h @@ -133,7 +133,7 @@ extern const struct CompressedSpriteSheet gMonFrontPicTableFemale[]; extern const struct Trainer gTrainers[]; extern const u8 gTrainerClassNames[][13]; extern const u8 gSpeciesNames[][POKEMON_NAME_LENGTH + 1]; -extern const u8 gMoveNames[MOVES_COUNT][MOVE_NAME_LENGTH + 1]; +extern const u8 gMoveNames[MOVES_COUNT_DYNAMAX][MOVE_NAME_LENGTH + 1]; extern const u8 *const gZMoveNames[]; #endif // GUARD_DATA_H diff --git a/src/data/battle_moves.h b/src/data/battle_moves.h index 2a0f884d46..f8fa922a42 100644 --- a/src/data/battle_moves.h +++ b/src/data/battle_moves.h @@ -1,4 +1,4 @@ -const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = +const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = { [MOVE_NONE] = { @@ -14146,4 +14146,2046 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_PHYSICAL, .zMoveEffect = 0 }, + + [MOVE_MAX_GUARD] = + { + .effect = EFFECT_PROTECT, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 4, + .flags = FLAG_PROTECTION_MOVE, + .split = SPLIT_STATUS, + }, + + [MOVE_MAX_FLARE_P] = + { + .effect = EFFECT_MAX_MOVE, + .power = 1, + .type = TYPE_FIRE, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_SUN, + }, + + [MOVE_MAX_FLARE_S] = + { + .effect = EFFECT_MAX_MOVE, + .power = 1, + .type = TYPE_FIRE, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_SPECIAL, + .argument = MAX_EFFECT_SUN, + }, + + [MOVE_MAX_FLUTTERBY_P] = + { + .effect = EFFECT_MAX_MOVE, + .power = 1, + .type = TYPE_BUG, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_LOWER_SP_ATK, + }, + + [MOVE_MAX_FLUTTERBY_S] = + { + .effect = EFFECT_MAX_MOVE, + .power = 1, + .type = TYPE_BUG, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_SPECIAL, + .argument = MAX_EFFECT_LOWER_SP_ATK, + }, + + [MOVE_MAX_LIGHTNING_P] = + { + .effect = EFFECT_MAX_MOVE, + .power = 1, + .type = TYPE_ELECTRIC, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_ELECTRIC_TERRAIN, + }, + + [MOVE_MAX_LIGHTNING_S] = + { + .effect = EFFECT_MAX_MOVE, + .power = 1, + .type = TYPE_ELECTRIC, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_SPECIAL, + .argument = MAX_EFFECT_ELECTRIC_TERRAIN, + }, + + [MOVE_MAX_STRIKE_P] = + { + .effect = EFFECT_MAX_MOVE, + .power = 1, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_LOWER_SPEED, + }, + + [MOVE_MAX_STRIKE_S] = + { + .effect = EFFECT_MAX_MOVE, + .power = 1, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_SPECIAL, + .argument = MAX_EFFECT_LOWER_SPEED, + }, + + [MOVE_MAX_KNUCKLE_P] = + { + .effect = EFFECT_MAX_MOVE, + .power = 1, + .type = TYPE_FIGHTING, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_RAISE_TEAM_ATTACK, + }, + + [MOVE_MAX_KNUCKLE_S] = + { + .effect = EFFECT_MAX_MOVE, + .power = 1, + .type = TYPE_FIGHTING, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_SPECIAL, + .argument = MAX_EFFECT_RAISE_TEAM_ATTACK, + }, + + [MOVE_MAX_PHANTASM_P] = + { + .effect = EFFECT_MAX_MOVE, + .power = 1, + .type = TYPE_GHOST, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_LOWER_DEFENSE, + }, + + [MOVE_MAX_PHANTASM_S] = + { + .effect = EFFECT_MAX_MOVE, + .power = 1, + .type = TYPE_GHOST, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_SPECIAL, + .argument = MAX_EFFECT_LOWER_DEFENSE, + }, + + [MOVE_MAX_HAILSTORM_P] = + { + .effect = EFFECT_MAX_MOVE, + .power = 1, + .type = TYPE_ICE, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_HAIL, + }, + + [MOVE_MAX_HAILSTORM_S] = + { + .effect = EFFECT_MAX_MOVE, + .power = 1, + .type = TYPE_ICE, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_SPECIAL, + .argument = MAX_EFFECT_HAIL, + }, + + [MOVE_MAX_OOZE_P] = + { + .effect = EFFECT_MAX_MOVE, + .power = 1, + .type = TYPE_POISON, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_RAISE_TEAM_SP_ATK, + }, + + [MOVE_MAX_OOZE_S] = + { + .effect = EFFECT_MAX_MOVE, + .power = 1, + .type = TYPE_POISON, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_SPECIAL, + .argument = MAX_EFFECT_RAISE_TEAM_SP_ATK, + }, + + [MOVE_MAX_GEYSER_P] = + { + .effect = EFFECT_MAX_MOVE, + .power = 1, + .type = TYPE_WATER, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_RAIN, + }, + + [MOVE_MAX_GEYSER_S] = + { + .effect = EFFECT_MAX_MOVE, + .power = 1, + .type = TYPE_WATER, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_SPECIAL, + .argument = MAX_EFFECT_RAIN, + }, + + [MOVE_MAX_AIRSTREAM_P] = + { + .effect = EFFECT_MAX_MOVE, + .power = 1, + .type = TYPE_FLYING, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_RAISE_TEAM_SPEED, + }, + + [MOVE_MAX_AIRSTREAM_S] = + { + .effect = EFFECT_MAX_MOVE, + .power = 1, + .type = TYPE_FLYING, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_SPECIAL, + .argument = MAX_EFFECT_RAISE_TEAM_SPEED, + }, + + [MOVE_MAX_STARFALL_P] = + { + .effect = EFFECT_MAX_MOVE, + .power = 1, + .type = TYPE_FAIRY, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_MISTY_TERRAIN, + }, + + [MOVE_MAX_STARFALL_S] = + { + .effect = EFFECT_MAX_MOVE, + .power = 1, + .type = TYPE_FAIRY, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_SPECIAL, + .argument = MAX_EFFECT_MISTY_TERRAIN, + }, + + [MOVE_MAX_WYRMWIND_P] = + { + .effect = EFFECT_MAX_MOVE, + .power = 1, + .type = TYPE_DRAGON, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_LOWER_ATTACK, + }, + + [MOVE_MAX_WYRMWIND_S] = + { + .effect = EFFECT_MAX_MOVE, + .power = 1, + .type = TYPE_DRAGON, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_SPECIAL, + .argument = MAX_EFFECT_LOWER_ATTACK, + }, + + [MOVE_MAX_MINDSTORM_P] = + { + .effect = EFFECT_MAX_MOVE, + .power = 1, + .type = TYPE_PSYCHIC, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_PSYCHIC_TERRAIN, + }, + + [MOVE_MAX_MINDSTORM_S] = + { + .effect = EFFECT_MAX_MOVE, + .power = 1, + .type = TYPE_PSYCHIC, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_SPECIAL, + .argument = MAX_EFFECT_PSYCHIC_TERRAIN, + }, + + [MOVE_MAX_ROCKFALL_P] = + { + .effect = EFFECT_MAX_MOVE, + .power = 1, + .type = TYPE_ROCK, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_SANDSTORM, + }, + + [MOVE_MAX_ROCKFALL_S] = + { + .effect = EFFECT_MAX_MOVE, + .power = 1, + .type = TYPE_ROCK, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_SPECIAL, + .argument = MAX_EFFECT_SANDSTORM, + }, + + [MOVE_MAX_QUAKE_P] = + { + .effect = EFFECT_MAX_MOVE, + .power = 1, + .type = TYPE_GROUND, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_RAISE_TEAM_SP_DEF, + }, + + [MOVE_MAX_QUAKE_S] = + { + .effect = EFFECT_MAX_MOVE, + .power = 1, + .type = TYPE_GROUND, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_SPECIAL, + .argument = MAX_EFFECT_RAISE_TEAM_SP_DEF, + }, + + [MOVE_MAX_DARKNESS_P] = + { + .effect = EFFECT_MAX_MOVE, + .power = 1, + .type = TYPE_DARK, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_LOWER_SP_DEF, + }, + + [MOVE_MAX_DARKNESS_S] = + { + .effect = EFFECT_MAX_MOVE, + .power = 1, + .type = TYPE_DARK, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_SPECIAL, + .argument = MAX_EFFECT_LOWER_SP_DEF, + }, + + [MOVE_MAX_OVERGROWTH_P] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_GRASS, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_GRASSY_TERRAIN, + }, + + [MOVE_MAX_OVERGROWTH_S] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_GRASS, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_SPECIAL, + .argument = MAX_EFFECT_GRASSY_TERRAIN, + }, + + [MOVE_MAX_STEELSPIKE_P] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_STEEL, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_RAISE_TEAM_DEFENSE, + }, + + [MOVE_MAX_STEELSPIKE_S] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_STEEL, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_SPECIAL, + .argument = MAX_EFFECT_RAISE_TEAM_DEFENSE, + }, + + [MOVE_G_MAX_VINE_LASH_P] = + { //ANIM TODO + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_GRASS, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_VINE_LASH, + }, + + [MOVE_G_MAX_VINE_LASH_S] = + { //ANIM TODO + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_GRASS, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_SPECIAL, + .argument = MAX_EFFECT_VINE_LASH, + }, + + [MOVE_G_MAX_WILDFIRE_P] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_FIRE, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_WILDFIRE, + }, + + [MOVE_G_MAX_WILDFIRE_S] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_FIRE, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_SPECIAL, + .argument = MAX_EFFECT_WILDFIRE, + }, + + [MOVE_G_MAX_CANNONADE_P] = + { //ANIM TODO + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_WATER, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_CANNONADE, + }, + + [MOVE_G_MAX_CANNONADE_S] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_WATER, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_SPECIAL, + .argument = MAX_EFFECT_CANNONADE, + }, + + [MOVE_G_MAX_BEFUDDLE_P] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_BUG, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_EFFECT_SPORE_FOES, + }, + + [MOVE_G_MAX_BEFUDDLE_S] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_BUG, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_SPECIAL, + .argument = MAX_EFFECT_EFFECT_SPORE_FOES, + }, + + [MOVE_G_MAX_VOLT_CRASH_P] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_ELECTRIC, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_PARALYZE_FOES, + }, + + [MOVE_G_MAX_VOLT_CRASH_S] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_ELECTRIC, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_SPECIAL, + .argument = MAX_EFFECT_PARALYZE_FOES, + }, + + [MOVE_G_MAX_GOLD_RUSH_P] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_CONFUSE_FOES_PAY_DAY, + }, + + [MOVE_G_MAX_GOLD_RUSH_S] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_SPECIAL, + //.z_move_power = 100, + .argument = MAX_EFFECT_CONFUSE_FOES_PAY_DAY, + }, + + [MOVE_G_MAX_CHI_STRIKE_P] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_FIGHTING, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_CRIT_PLUS, + }, + + [MOVE_G_MAX_CHI_STRIKE_S] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_FIGHTING, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_SPECIAL, + .argument = MAX_EFFECT_CRIT_PLUS, + }, + + [MOVE_G_MAX_TERROR_P] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_GHOST, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_MEAN_LOOK, + }, + + [MOVE_G_MAX_TERROR_S] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_GHOST, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_SPECIAL, + .argument = MAX_EFFECT_MEAN_LOOK, + }, + + [MOVE_G_MAX_FOAM_BURST_P] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_WATER, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_LOWER_SPEED_2_FOES, + }, + + [MOVE_G_MAX_FOAM_BURST_S] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_WATER, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_SPECIAL, + .argument = MAX_EFFECT_LOWER_SPEED_2_FOES, + }, + + [MOVE_G_MAX_RESONANCE_P] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_ICE, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_AURORA_VEIL, + }, + + [MOVE_G_MAX_RESONANCE_S] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_ICE, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_SPECIAL, + .argument = MAX_EFFECT_AURORA_VEIL, + }, + + [MOVE_G_MAX_CUDDLE_P] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_INFATUATE_FOES, + }, + + [MOVE_G_MAX_CUDDLE_S] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_SPECIAL, + .argument = MAX_EFFECT_INFATUATE_FOES, + }, + + [MOVE_G_MAX_REPLENISH_P] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_RECYCLE_BERRIES, + }, + + [MOVE_G_MAX_REPLENISH_S] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_SPECIAL, + .argument = MAX_EFFECT_RECYCLE_BERRIES, + }, + + [MOVE_G_MAX_MALODOR_P] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_POISON, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_POISON_FOES, + }, + + [MOVE_G_MAX_MALODOR_S] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_POISON, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_SPECIAL, + .argument = MAX_EFFECT_POISON_FOES, + }, + + [MOVE_G_MAX_MELTDOWN_P] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_STEEL, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_TORMENT_FOES, + }, + + [MOVE_G_MAX_MELTDOWN_S] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_STEEL, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_SPECIAL, + .argument = MAX_EFFECT_TORMENT_FOES, + }, + + [MOVE_G_MAX_DRUM_SOLO_P] = + { //ANIM TODO + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_GRASS, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_TORMENT_FOES, //EFFECT TODO + }, + + [MOVE_G_MAX_DRUM_SOLO_S] = + { //ANIM TODO + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_GRASS, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_SPECIAL, + .argument = MAX_EFFECT_TORMENT_FOES, //EFFECT TODO + }, + + [MOVE_G_MAX_FIREBALL_P] = + { //ANIM TODO + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_FIRE, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_TORMENT_FOES, //EFFECT TODO + }, + + [MOVE_G_MAX_FIREBALL_S] = + { //ANIM TODO + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_FIRE, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_SPECIAL, + .argument = MAX_EFFECT_TORMENT_FOES, //EFFECT TODO + }, + + [MOVE_G_MAX_HYDROSNIPE_P] = + { //ANIM TODO + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_WATER, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_TORMENT_FOES, //EFFECT TODO + }, + + [MOVE_G_MAX_HYDROSNIPE_S] = + { //ANIM TODO + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_WATER, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_SPECIAL, + .argument = MAX_EFFECT_TORMENT_FOES, //EFFECT TODO + }, + + [MOVE_G_MAX_WIND_RAGE_P] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_FLYING, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_DEFOG, + }, + + [MOVE_G_MAX_WIND_RAGE_S] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_FLYING, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_SPECIAL, + .argument = MAX_EFFECT_DEFOG, + }, + + [MOVE_G_MAX_GRAVITAS_P] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_PSYCHIC, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_GRAVITY, + }, + + [MOVE_G_MAX_GRAVITAS_S] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_PSYCHIC, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_SPECIAL, + .argument = MAX_EFFECT_GRAVITY, + }, + + [MOVE_G_MAX_STONESURGE_P] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_WATER, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_STEALTH_ROCK, + }, + + [MOVE_G_MAX_STONESURGE_S] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_WATER, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_SPECIAL, + .argument = MAX_EFFECT_STEALTH_ROCK, + }, + + [MOVE_G_MAX_VOLCALITH_P] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_ROCK, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_VOLCAITH_FOES, + }, + + [MOVE_G_MAX_VOLCALITH_S] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_ROCK, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_SPECIAL, + .argument = MAX_EFFECT_VOLCAITH_FOES, + }, + + [MOVE_G_MAX_TARTNESS_P] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_GRASS, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_LOWER_EVASIVENESS_FOES, + }, + + [MOVE_G_MAX_TARTNESS_S] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_GRASS, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_SPECIAL, + .argument = MAX_EFFECT_LOWER_EVASIVENESS_FOES, + }, + + [MOVE_G_MAX_SWEETNESS_P] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_GRASS, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_AROMATHERAPY, + }, + + [MOVE_G_MAX_SWEETNESS_S] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_GRASS, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_SPECIAL, + .argument = MAX_EFFECT_AROMATHERAPY, + }, + + [MOVE_G_MAX_SANDBLAST_P] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_GROUND, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_SANDBLAST_FOES, + }, + + [MOVE_G_MAX_SANDBLAST_S] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_GROUND, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_SPECIAL, + .argument = MAX_EFFECT_SANDBLAST_FOES, + }, + + [MOVE_G_MAX_STUN_SHOCK_P] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_ELECTRIC, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_POISON_PARALYZE_FOES, + }, + + [MOVE_G_MAX_STUN_SHOCK_S] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_ELECTRIC, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_SPECIAL, + .argument = MAX_EFFECT_POISON_PARALYZE_FOES, + }, + + [MOVE_G_MAX_CENTIFERNO_P] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_FIRE, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_FIRE_SPIN_FOES, + }, + + [MOVE_G_MAX_CENTIFERNO_S] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_FIRE, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_SPECIAL, + .argument = MAX_EFFECT_FIRE_SPIN_FOES, + }, + + [MOVE_G_MAX_SMITE_P] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_FAIRY, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_CONFUSE_FOES, + }, + + [MOVE_G_MAX_SMITE_S] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_FAIRY, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_SPECIAL, + .argument = MAX_EFFECT_CONFUSE_FOES, + }, + + + [MOVE_G_MAX_SNOOZE_P] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_DARK, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_YAWN_FOE, + }, + + [MOVE_G_MAX_SNOOZE_S] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_DARK, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_SPECIAL, + .argument = MAX_EFFECT_YAWN_FOE, + }, + + [MOVE_G_MAX_FINALE_P] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_FAIRY, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_HEAL_TEAM, + }, + + [MOVE_G_MAX_FINALE_S] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_FAIRY, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_SPECIAL, + .argument = MAX_EFFECT_HEAL_TEAM, + }, + + [MOVE_G_MAX_STEELSURGE_P] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_STEEL, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_STEELSURGE, + }, + + [MOVE_G_MAX_STEELSURGE_S] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_STEEL, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_SPECIAL, + .argument = MAX_EFFECT_STEELSURGE, + }, + + [MOVE_G_MAX_DEPLETION_P] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_DRAGON, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_SPITE, + }, + + [MOVE_G_MAX_DEPLETION_S] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_DRAGON, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_SPECIAL, + .argument = MAX_EFFECT_SPITE, + }, + + [MOVE_G_MAX_ONE_BLOW_P] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_DARK, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_TORMENT_FOES, //EFFECT TODO + }, + + [MOVE_G_MAX_ONE_BLOW_S] = + { //ANIM TODO + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_DARK, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_SPECIAL, + .argument = MAX_EFFECT_TORMENT_FOES, //EFFECT TODO + }, + + [MOVE_G_MAX_RAPID_FLOW_P] = + { //ANIM TODO + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_WATER, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_TORMENT_FOES, //EFFECT TODO + }, + + [MOVE_G_MAX_RAPID_FLOW_S] = + { //ANIM TODO + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_WATER, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + .split = SPLIT_SPECIAL, + .argument = MAX_EFFECT_TORMENT_FOES, //EFFECT TODO + }, +}; + +const u8 gDynamaxMovePowers[MOVES_COUNT] = +{ + [MOVE_POUND] = 90, + [MOVE_KARATE_CHOP] = 75, + [MOVE_DOUBLE_SLAP] = 90, + [MOVE_COMET_PUNCH] = 100, + [MOVE_MEGA_PUNCH] = 130, + [MOVE_PAY_DAY] = 90, + [MOVE_FIRE_PUNCH] = 130, + [MOVE_ICE_PUNCH] = 130, + [MOVE_THUNDER_PUNCH] = 130, + [MOVE_SCRATCH] = 90, + [MOVE_VISE_GRIP] = 110, + [MOVE_GUILLOTINE] = 130, + [MOVE_RAZOR_WIND] = 130, + [MOVE_CUT] = 100, + [MOVE_GUST] = 90, + [MOVE_WING_ATTACK] = 110, + [MOVE_FLY] = 130, + [MOVE_BIND] = 90, + [MOVE_SLAM] = 130, + [MOVE_VINE_WHIP] = 100, + [MOVE_STOMP] = 120, + [MOVE_DOUBLE_KICK] = 80, + [MOVE_MEGA_KICK] = 140, + [MOVE_JUMP_KICK] = 90, + [MOVE_ROLLING_KICK] = 80, + [MOVE_HEADBUTT] = 120, + [MOVE_HORN_ATTACK] = 120, + [MOVE_FURY_ATTACK] = 90, + [MOVE_HORN_DRILL] = 130, + [MOVE_TACKLE] = 90, + [MOVE_BODY_SLAM] = 130, + [MOVE_WRAP] = 90, + [MOVE_TAKE_DOWN] = 130, + [MOVE_THRASH] = 140, + [MOVE_DOUBLE_EDGE] = 140, + [MOVE_POISON_STING] = 70, + [MOVE_TWINEEDLE] = 100, + [MOVE_PIN_MISSILE] = 130, + [MOVE_BITE] = 110, + [MOVE_SONIC_BOOM] = 100, + [MOVE_ACID] = 70, + [MOVE_EMBER] = 90, + [MOVE_FLAMETHROWER] = 130, + [MOVE_WATER_GUN] = 90, + [MOVE_HYDRO_PUMP] = 140, + [MOVE_SURF] = 130, + [MOVE_ICE_BEAM] = 130, + [MOVE_BLIZZARD] = 140, + [MOVE_PSYBEAM] = 120, + [MOVE_BUBBLE_BEAM] = 120, + [MOVE_AURORA_BEAM] = 120, + [MOVE_HYPER_BEAM] = 150, + [MOVE_PECK] = 90, + [MOVE_DRILL_PECK] = 130, + [MOVE_SUBMISSION] = 90, + [MOVE_LOW_KICK] = 100, + [MOVE_COUNTER] = 75, + [MOVE_SEISMIC_TOSS] = 75, + [MOVE_STRENGTH] = 130, + [MOVE_ABSORB] = 90, + [MOVE_MEGA_DRAIN] = 90, + [MOVE_RAZOR_LEAF] = 110, + [MOVE_SOLAR_BEAM] = 140, + [MOVE_PETAL_DANCE] = 140, + [MOVE_DRAGON_RAGE] = 100, + [MOVE_FIRE_SPIN] = 90, + [MOVE_THUNDER_SHOCK] = 90, + [MOVE_THUNDERBOLT] = 130, + [MOVE_THUNDER] = 140, + [MOVE_ROCK_THROW] = 100, + [MOVE_EARTHQUAKE] = 130, + [MOVE_FISSURE] = 130, + [MOVE_DIG] = 130, + [MOVE_CONFUSION] = 100, + [MOVE_PSYCHIC] = 130, + [MOVE_QUICK_ATTACK] = 90, + [MOVE_RAGE] = 90, + [MOVE_NIGHT_SHADE] = 100, + [MOVE_BIDE] = 100, + [MOVE_SELF_DESTRUCT] = 150, + [MOVE_EGG_BOMB] = 130, + [MOVE_LICK] = 90, + [MOVE_SMOG] = 70, + [MOVE_SLUDGE] = 85, + [MOVE_BONE_CLUB] = 120, + [MOVE_FIRE_BLAST] = 140, + [MOVE_WATERFALL] = 130, + [MOVE_CLAMP] = 90, + [MOVE_SWIFT] = 110, + [MOVE_SKULL_BASH] = 140, + [MOVE_SPIKE_CANNON] = 120, + [MOVE_CONSTRICT] = 90, + [MOVE_HIGH_JUMP_KICK] = 95, + [MOVE_DREAM_EATER] = 130, + [MOVE_BARRAGE] = 90, + #ifdef B_UPDATED_MOVE_DATA + [MOVE_LEECH_LIFE] = 130, + #else + [MOVE_LEECH_LIFE] = 90, + #endif + [MOVE_SKY_ATTACK] = 140, + [MOVE_BUBBLE] = 90, + [MOVE_DIZZY_PUNCH] = 120, + [MOVE_PSYWAVE] = 100, + [MOVE_CRABHAMMER] = 130, + [MOVE_EXPLOSION] = 150, + [MOVE_FURY_SWIPES] = 100, + [MOVE_BONEMERANG] = 130, + [MOVE_ROCK_SLIDE] = 130, + [MOVE_HYPER_FANG] = 130, + [MOVE_TRI_ATTACK] = 130, + [MOVE_SUPER_FANG] = 100, + [MOVE_SLASH] = 120, + [MOVE_STRUGGLE] = 1, + [MOVE_TRIPLE_KICK] = 80, + [MOVE_THIEF] = 110, + [MOVE_FLAME_WHEEL] = 110, + [MOVE_SNORE] = 100, + [MOVE_FLAIL] = 130, + [MOVE_AEROBLAST] = 130, + [MOVE_REVERSAL] = 100, + [MOVE_POWDER_SNOW] = 90, + [MOVE_MACH_PUNCH] = 70, + [MOVE_FEINT_ATTACK] = 110, + [MOVE_SLUDGE_BOMB] = 90, + [MOVE_MUD_SLAP] = 90, + [MOVE_OCTAZOOKA] = 120, + [MOVE_ZAP_CANNON] = 140, + [MOVE_ICY_WIND] = 110, + [MOVE_BONE_RUSH] = 130, + [MOVE_OUTRAGE] = 140, + [MOVE_GIGA_DRAIN] = 130, + [MOVE_ROLLOUT] = 90, + [MOVE_FALSE_SWIPE] = 90, + [MOVE_SPARK] = 120, + [MOVE_FURY_CUTTER] = 90, + [MOVE_STEEL_WING] = 120, + [MOVE_RETURN] = 130, + [MOVE_PRESENT] = 100, + [MOVE_FRUSTRATION] = 130, + [MOVE_SACRED_FIRE] = 130, + [MOVE_MAGNITUDE] = 140, + [MOVE_DYNAMIC_PUNCH] = 90, + [MOVE_MEGAHORN] = 140, + [MOVE_DRAGON_BREATH] = 110, + [MOVE_PURSUIT] = 90, + [MOVE_RAPID_SPIN] = 100, + [MOVE_IRON_TAIL] = 130, + [MOVE_METAL_CLAW] = 100, + [MOVE_VITAL_THROW] = 85, + [MOVE_HIDDEN_POWER] = 110, + [MOVE_CROSS_CHOP] = 90, + [MOVE_TWISTER] = 90, + [MOVE_CRUNCH] = 130, + [MOVE_MIRROR_COAT] = 100, + [MOVE_EXTREME_SPEED] = 130, + [MOVE_ANCIENT_POWER] = 110, + [MOVE_SHADOW_BALL] = 130, + [MOVE_FUTURE_SIGHT] = 140, + [MOVE_ROCK_SMASH] = 70, + [MOVE_WHIRLPOOL] = 90, + [MOVE_BEAT_UP] = 100, + [MOVE_FAKE_OUT] = 90, + [MOVE_UPROAR] = 130, + [MOVE_SPIT_UP] = 100, + [MOVE_HEAT_WAVE] = 130, + [MOVE_FACADE] = 120, + [MOVE_FOCUS_PUNCH] = 100, + [MOVE_SMELLING_SALTS] = 120, + [MOVE_SUPERPOWER] = 95, + [MOVE_REVENGE] = 80, + [MOVE_BRICK_BREAK] = 90, + [MOVE_KNOCK_OFF] = 120, + [MOVE_ENDEAVOR] = 130, + [MOVE_ERUPTION] = 150, + [MOVE_SECRET_POWER] = 120, + [MOVE_DIVE] = 130, + [MOVE_ARM_THRUST] = 70, + [MOVE_LUSTER_PURGE] = 120, + [MOVE_MIST_BALL] = 120, + [MOVE_BLAZE_KICK] = 130, + [MOVE_ICE_BALL] = 90, + [MOVE_NEEDLE_ARM] = 110, + [MOVE_HYPER_VOICE] = 130, + [MOVE_POISON_FANG] = 75, + [MOVE_CRUSH_CLAW] = 130, + [MOVE_BLAST_BURN] = 150, + [MOVE_HYDRO_CANNON] = 150, + [MOVE_METEOR_MASH] = 130, + [MOVE_ASTONISH] = 90, + [MOVE_WEATHER_BALL] = 130, + [MOVE_AIR_CUTTER] = 110, + [MOVE_OVERHEAT] = 140, + [MOVE_ROCK_TOMB] = 110, + [MOVE_SILVER_WIND] = 110, + [MOVE_WATER_SPOUT] = 150, + [MOVE_SIGNAL_BEAM] = 130, + [MOVE_SHADOW_PUNCH] = 110, + [MOVE_EXTRASENSORY] = 130, + [MOVE_SKY_UPPERCUT] = 90, + [MOVE_SAND_TOMB] = 90, + [MOVE_SHEER_COLD] = 130, + [MOVE_MUDDY_WATER] = 130, + [MOVE_BULLET_SEED] = 130, + [MOVE_AERIAL_ACE] = 110, + [MOVE_ICICLE_SPEAR] = 130, + [MOVE_DRAGON_CLAW] = 130, + [MOVE_FRENZY_PLANT] = 150, + [MOVE_BOUNCE] = 130, + [MOVE_MUD_SHOT] = 110, + [MOVE_POISON_TAIL] = 75, + [MOVE_COVET] = 110, + [MOVE_VOLT_TACKLE] = 140, + [MOVE_MAGICAL_LEAF] = 110, + [MOVE_LEAF_BLADE] = 130, + [MOVE_ROCK_BLAST] = 130, + [MOVE_SHOCK_WAVE] = 110, + [MOVE_WATER_PULSE] = 110, + [MOVE_DOOM_DESIRE] = 140, + [MOVE_PSYCHO_BOOST] = 140, + [MOVE_WAKE_UP_SLAP] = 85, + [MOVE_HAMMER_ARM] = 90, + [MOVE_GYRO_BALL] = 130, + [MOVE_BRINE] = 120, + [MOVE_NATURAL_GIFT] = 130, + [MOVE_FEINT] = 90, + [MOVE_PLUCK] = 110, + [MOVE_METAL_BURST] = 100, + [MOVE_U_TURN] = 120, + [MOVE_CLOSE_COMBAT] = 95, + [MOVE_PAYBACK] = 100, + [MOVE_ASSURANCE] = 110, + [MOVE_FLING] = 100, + [MOVE_TRUMP_CARD] = 130, + [MOVE_WRING_OUT] = 140, + [MOVE_PUNISHMENT] = 130, + [MOVE_LAST_RESORT] = 140, + [MOVE_SUCKER_PUNCH] = 120, + [MOVE_FLARE_BLITZ] = 140, + [MOVE_FORCE_PALM] = 80, + [MOVE_AURA_SPHERE] = 90, + [MOVE_POISON_JAB] = 90, + [MOVE_DARK_PULSE] = 130, + [MOVE_NIGHT_SLASH] = 120, + [MOVE_AQUA_TAIL] = 130, + [MOVE_SEED_BOMB] = 130, + [MOVE_AIR_SLASH] = 130, + [MOVE_X_SCISSOR] = 130, + [MOVE_BUG_BUZZ] = 130, + [MOVE_DRAGON_PULSE] = 130, + [MOVE_DRAGON_RUSH] = 130, + [MOVE_POWER_GEM] = 130, + [MOVE_DRAIN_PUNCH] = 90, + [MOVE_VACUUM_WAVE] = 70, + [MOVE_FOCUS_BLAST] = 95, + [MOVE_ENERGY_BALL] = 130, + [MOVE_BRAVE_BIRD] = 140, + [MOVE_EARTH_POWER] = 130, + [MOVE_GIGA_IMPACT] = 150, + [MOVE_BULLET_PUNCH] = 90, + [MOVE_AVALANCHE] = 110, + [MOVE_ICE_SHARD] = 90, + [MOVE_SHADOW_CLAW] = 120, + [MOVE_THUNDER_FANG] = 120, + [MOVE_ICE_FANG] = 120, + [MOVE_FIRE_FANG] = 120, + [MOVE_SHADOW_SNEAK] = 90, + [MOVE_MUD_BOMB] = 120, + [MOVE_PSYCHO_CUT] = 120, + [MOVE_ZEN_HEADBUTT] = 130, + [MOVE_MIRROR_SHOT] = 120, + [MOVE_FLASH_CANNON] = 130, + [MOVE_ROCK_CLIMB] = 130, + [MOVE_DRACO_METEOR] = 140, + [MOVE_DISCHARGE] = 130, + [MOVE_LAVA_PLUME] = 130, + [MOVE_LEAF_STORM] = 140, + [MOVE_POWER_WHIP] = 140, + [MOVE_ROCK_WRECKER] = 150, + [MOVE_CROSS_POISON] = 85, + [MOVE_GUNK_SHOT] = 95, + [MOVE_IRON_HEAD] = 130, + [MOVE_MAGNET_BOMB] = 110, + [MOVE_STONE_EDGE] = 130, + [MOVE_GRASS_KNOT] = 130, + [MOVE_CHATTER] = 120, + [MOVE_JUDGMENT] = 130, + [MOVE_BUG_BITE] = 110, + [MOVE_CHARGE_BEAM] = 100, + [MOVE_WOOD_HAMMER] = 140, + [MOVE_AQUA_JET] = 90, + [MOVE_ATTACK_ORDER] = 130, + [MOVE_HEAD_SMASH] = 150, + [MOVE_DOUBLE_HIT] = 120, + [MOVE_ROAR_OF_TIME] = 150, + [MOVE_SPACIAL_REND] = 130, + [MOVE_CRUSH_GRIP] = 140, + [MOVE_MAGMA_STORM] = 130, + [MOVE_SEED_FLARE] = 140, + [MOVE_OMINOUS_WIND] = 110, + [MOVE_SHADOW_FORCE] = 140, + [MOVE_PSYSHOCK] = 130, + [MOVE_VENOSHOCK] = 85, + [MOVE_SMACK_DOWN] = 100, + [MOVE_STORM_THROW] = 80, + [MOVE_FLAME_BURST] = 120, + [MOVE_SLUDGE_WAVE] = 90, + [MOVE_HEAVY_SLAM] = 130, + [MOVE_SYNCHRONOISE] = 140, + [MOVE_ELECTRO_BALL] = 130, + [MOVE_FLAME_CHARGE] = 100, + [MOVE_LOW_SWEEP] = 85, + [MOVE_ACID_SPRAY] = 70, + [MOVE_FOUL_PLAY] = 130, + [MOVE_ROUND] = 110, + [MOVE_ECHOED_VOICE] = 90, + [MOVE_CHIP_AWAY] = 120, + [MOVE_CLEAR_SMOG] = 75, + [MOVE_STORED_POWER] = 130, + [MOVE_SCALD] = 130, + [MOVE_HEX] = 120, + [MOVE_SKY_DROP] = 110, + [MOVE_CIRCLE_THROW] = 80, + [MOVE_INCINERATE] = 110, + [MOVE_ACROBATICS] = 110, + [MOVE_RETALIATE] = 120, + [MOVE_FINAL_GAMBIT] = 100, + [MOVE_INFERNO] = 130, + [MOVE_WATER_PLEDGE] = 130, + [MOVE_FIRE_PLEDGE] = 130, + [MOVE_GRASS_PLEDGE] = 130, + [MOVE_VOLT_SWITCH] = 120, + [MOVE_STRUGGLE_BUG] = 100, + [MOVE_BULLDOZE] = 110, + [MOVE_FROST_BREATH] = 110, + [MOVE_DRAGON_TAIL] = 110, + [MOVE_ELECTROWEB] = 110, + [MOVE_WILD_CHARGE] = 130, + [MOVE_DRILL_RUN] = 130, + [MOVE_DUAL_CHOP] = 130, + [MOVE_HEART_STAMP] = 110, + [MOVE_HORN_LEECH] = 130, + [MOVE_SACRED_SWORD] = 90, + [MOVE_RAZOR_SHELL] = 130, + [MOVE_HEAT_CRASH] = 130, + [MOVE_LEAF_TORNADO] = 120, + [MOVE_STEAMROLLER] = 120, + [MOVE_NIGHT_DAZE] = 130, + [MOVE_PSYSTRIKE] = 130, + [MOVE_TAIL_SLAP] = 130, + [MOVE_HURRICANE] = 140, + [MOVE_HEAD_CHARGE] = 140, + [MOVE_GEAR_GRIND] = 130, + [MOVE_SEARING_SHOT] = 130, + [MOVE_TECHNO_BLAST] = 140, + [MOVE_RELIC_SONG] = 130, + [MOVE_SECRET_SWORD] = 90, + [MOVE_GLACIATE] = 120, + [MOVE_BOLT_STRIKE] = 140, + [MOVE_BLUE_FLARE] = 140, + [MOVE_FIERY_DANCE] = 130, + [MOVE_FREEZE_SHOCK] = 140, + [MOVE_ICE_BURN] = 140, + [MOVE_SNARL] = 110, + [MOVE_ICICLE_CRASH] = 130, + [MOVE_V_CREATE] = 150, + [MOVE_FUSION_FLARE] = 130, + [MOVE_FUSION_BOLT] = 130, + [MOVE_FLYING_PRESS] = 90, + [MOVE_BELCH] = 95, + [MOVE_FELL_STINGER] = 100, + [MOVE_PHANTOM_FORCE] = 130, + [MOVE_PARABOLIC_CHARGE] = 120, + [MOVE_PETAL_BLIZZARD] = 130, + [MOVE_FREEZE_DRY] = 120, + [MOVE_DISARMING_VOICE] = 90, + [MOVE_DRAINING_KISS] = 100, + [MOVE_PLAY_ROUGH] = 130, + [MOVE_FAIRY_WIND] = 90, + [MOVE_MOONBLAST] = 130, + [MOVE_BOOMBURST] = 140, + [MOVE_DIAMOND_STORM] = 130, + [MOVE_STEAM_ERUPTION] = 140, + [MOVE_HYPERSPACE_HOLE] = 130, + [MOVE_WATER_SHURIKEN] = 90, + [MOVE_MYSTICAL_FIRE] = 130, + [MOVE_DAZZLING_GLEAM] = 130, + [MOVE_NUZZLE] = 90, + [MOVE_HOLD_BACK] = 90, + [MOVE_INFESTATION] = 90, + [MOVE_POWER_UP_PUNCH] = 70, + [MOVE_OBLIVION_WING] = 130, + [MOVE_THOUSAND_ARROWS] = 130, + [MOVE_THOUSAND_WAVES] = 130, + [MOVE_LANDS_WRATH] = 130, + [MOVE_LIGHT_OF_RUIN] = 140, + [MOVE_ORIGIN_PULSE] = 140, + [MOVE_PRECIPICE_BLADES] = 140, + [MOVE_DRAGON_ASCENT] = 140, + [MOVE_HYPERSPACE_FURY] = 130, + [MOVE_FIRST_IMPRESSION] = 130, + [MOVE_SPIRIT_SHACKLE] = 130, + [MOVE_DARKEST_LARIAT] = 130, + [MOVE_SPARKLING_ARIA] = 130, + [MOVE_ICE_HAMMER] = 130, + [MOVE_HIGH_HORSEPOWER] = 130, + [MOVE_SOLAR_BLADE] = 140, + [MOVE_LEAFAGE] = 90, + [MOVE_THROAT_CHOP] = 130, + [MOVE_POLLEN_PUFF] = 130, + [MOVE_ANCHOR_SHOT] = 130, + [MOVE_LUNGE] = 130, + [MOVE_FIRE_LASH] = 130, + [MOVE_POWER_TRIP] = 130, + [MOVE_BURN_UP] = 140, + [MOVE_SMART_STRIKE] = 120, + [MOVE_REVELATION_DANCE] = 130, + [MOVE_CORE_ENFORCER] = 130, + [MOVE_TROP_KICK] = 120, + [MOVE_BEAK_BLAST] = 130, + [MOVE_CLANGING_SCALES] = 140, + [MOVE_DRAGON_HAMMER] = 130, + [MOVE_BRUTAL_SWING] = 110, + [MOVE_SHELL_TRAP] = 150, + [MOVE_FLEUR_CANNON] = 140, + [MOVE_PSYCHIC_FANGS] = 130, + [MOVE_STOMPING_TANTRUM] = 130, + [MOVE_SHADOW_BONE] = 130, + [MOVE_ACCELEROCK] = 90, + [MOVE_LIQUIDATION] = 130, + [MOVE_PRISMATIC_LASER] = 150, + [MOVE_SPECTRAL_THIEF] = 130, + [MOVE_SUNSTEEL_STRIKE] = 130, + [MOVE_MOONGEIST_BEAM] = 130, + [MOVE_ZING_ZAP] = 130, + [MOVE_NATURES_MADNESS] = 100, + [MOVE_MULTI_ATTACK] = 95, + [MOVE_MIND_BLOWN] = 150, + [MOVE_PLASMA_FISTS] = 130, + [MOVE_PHOTON_GEYSER] = 130, + [MOVE_DOUBLE_IRON_BASH] = 140, + [MOVE_DYNAMAX_CANNON] = 140, + [MOVE_SNIPE_SHOT] = 130, + [MOVE_JAW_LOCK] = 130, + [MOVE_DRAGON_DARTS] = 130, + [MOVE_BOLT_BEAK] = 130, + [MOVE_FISHIOUS_REND] = 130, + [MOVE_BODY_PRESS] = 90, + [MOVE_DRUM_BEATING] = 130, + [MOVE_SNAP_TRAP] = 90, + [MOVE_PYRO_BALL] = 140, + [MOVE_BEHEMOTH_BLADE] = 130, + [MOVE_BEHEMOTH_BASH] = 130, + [MOVE_AURA_WHEEL] = 140, + [MOVE_BREAKING_SWIPE] = 110, + [MOVE_BRANCH_POKE] = 90, + [MOVE_OVERDRIVE] = 130, + [MOVE_APPLE_ACID] = 130, + [MOVE_GRAV_APPLE] = 130, + [MOVE_SPIRIT_BREAK] = 130, + [MOVE_STRANGE_STEAM] = 130, + [MOVE_FALSE_SURRENDER] = 130, + [MOVE_METEOR_ASSAULT] = 100, + [MOVE_ETERNABEAM] = 150, + [MOVE_STEEL_BEAM] = 140, + [MOVE_EXPANDING_FORCE] = 100, //from here down are placeholders + [MOVE_STEEL_ROLLER] = 100, + [MOVE_SCALE_SHOT] = 100, + [MOVE_METEOR_BEAM] = 100, + [MOVE_SHELL_SIDE_ARM] = 100, + [MOVE_MISTY_EXPLOSION] = 100, + [MOVE_GRASSY_GLIDE] = 100, + [MOVE_RISING_VOLTAGE] = 100, + [MOVE_TERRAIN_PULSE] = 100, + [MOVE_SKITTER_SMACK] = 100, + [MOVE_BURNING_JEALOUSY] = 100, + [MOVE_LASH_OUT] = 100, + [MOVE_POLTERGEIST] = 100, + [MOVE_FLIP_TURN] = 100, + [MOVE_TRIPLE_AXEL] = 100, + [MOVE_DUAL_WINGBEAT] = 100, + [MOVE_SCORCHING_SANDS] = 100, + [MOVE_WICKED_BLOW] = 100, + [MOVE_SURGING_STRIKES] = 100, + [MOVE_FREEZING_GLARE] = 100, + [MOVE_THUNDEROUS_KICK] = 100, + [MOVE_FIERY_WRATH] = 100, + [MOVE_THUNDER_CAGE] = 100, + [MOVE_DRAGON_ENERGY] = 100, + [MOVE_EERIE_SPELL] = 100, + [MOVE_ASTRAL_BARRAGE] = 150, + [MOVE_GLACIAL_LANCE] = 150, }; diff --git a/src/data/text/move_names.h b/src/data/text/move_names.h index 5f0a741cb4..7f5a1685e6 100644 --- a/src/data/text/move_names.h +++ b/src/data/text/move_names.h @@ -1,6 +1,6 @@ #if B_EXPANDED_MOVE_NAMES == TRUE // 16 letters -const u8 gMoveNames[MOVES_COUNT][MOVE_NAME_LENGTH + 1] = +const u8 gMoveNames[MOVES_COUNT_DYNAMAX][MOVE_NAME_LENGTH + 1] = { [MOVE_NONE] = _("-"), [MOVE_POUND] = _("Pound"), @@ -781,10 +781,115 @@ const u8 gMoveNames[MOVES_COUNT][MOVE_NAME_LENGTH + 1] = [MOVE_SANDSEAR_STORM] = _("Sandsear Storm"), [MOVE_LUNAR_BLESSING] = _("Lunar Blessing"), [MOVE_TAKE_HEART] = _("Take Heart"), + // Max Moves + [MOVE_MAX_GUARD] = _("Max Guard"), + [MOVE_MAX_STRIKE_P] = _("Max Strike"), + [MOVE_MAX_STRIKE_S] = _("Max Strike"), + [MOVE_MAX_KNUCKLE_P] = _("Max Knuckle"), + [MOVE_MAX_KNUCKLE_S] = _("Max Knuckle"), + [MOVE_MAX_AIRSTREAM_P] = _("Max Airstream"), + [MOVE_MAX_AIRSTREAM_S] = _("Max Airstream"), + [MOVE_MAX_OOZE_P] = _("Max Ooze"), + [MOVE_MAX_OOZE_S] = _("Max Ooze"), + [MOVE_MAX_QUAKE_P] = _("Max Quake"), + [MOVE_MAX_QUAKE_S] = _("Max Quake"), + [MOVE_MAX_ROCKFALL_P] = _("Max Rockfall"), + [MOVE_MAX_ROCKFALL_S] = _("Max Rockfall"), + [MOVE_MAX_FLUTTERBY_P] = _("Max Flutterby"), + [MOVE_MAX_FLUTTERBY_S] = _("Max Flutterby"), + [MOVE_MAX_PHANTASM_P] = _("Max Phantasm"), + [MOVE_MAX_PHANTASM_S] = _("Max Phantasm"), + [MOVE_MAX_STEELSPIKE_P] = _("Max Steelspike"), + [MOVE_MAX_STEELSPIKE_S] = _("Max Steelspike"), + [MOVE_MAX_FLARE_P] = _("Max Flare"), + [MOVE_MAX_FLARE_S] = _("Max Flare"), + [MOVE_MAX_GEYSER_P] = _("Max Geyser"), + [MOVE_MAX_GEYSER_S] = _("Max Geyser"), + [MOVE_MAX_OVERGROWTH_P] = _("Max Overgrowth"), + [MOVE_MAX_OVERGROWTH_S] = _("Max Overgrowth"), + [MOVE_MAX_LIGHTNING_P] = _("Max Lightning"), + [MOVE_MAX_LIGHTNING_S] = _("Max Lightning"), + [MOVE_MAX_HAILSTORM_P] = _("Max Hailstorm"), + [MOVE_MAX_HAILSTORM_S] = _("Max Hailstorm"), + [MOVE_MAX_MINDSTORM_P] = _("Max Mindstorm"), + [MOVE_MAX_MINDSTORM_S] = _("Max Mindstorm"), + [MOVE_MAX_WYRMWIND_P] = _("Max Wyrmwind"), + [MOVE_MAX_WYRMWIND_S] = _("Max Wyrmwind"), + [MOVE_MAX_DARKNESS_P] = _("Max Darkness"), + [MOVE_MAX_DARKNESS_S] = _("Max Darkness"), + [MOVE_MAX_STARFALL_P] = _("Max Starfall"), + [MOVE_MAX_STARFALL_S] = _("Max Starfall"), +// Gigantamax Moves + [MOVE_G_MAX_VINE_LASH_P] = _("Gmax Vine Lash"), + [MOVE_G_MAX_VINE_LASH_S] = _("Gmax Vine Lash"), + [MOVE_G_MAX_WILDFIRE_P] = _("Gmax Wildfire"), + [MOVE_G_MAX_WILDFIRE_S] = _("Gmax Wildfire"), + [MOVE_G_MAX_CANNONADE_P] = _("Gmax Cannonade"), + [MOVE_G_MAX_CANNONADE_S] = _("Gmax Cannonade"), + [MOVE_G_MAX_BEFUDDLE_P] = _("Gmax Befuddle"), + [MOVE_G_MAX_BEFUDDLE_S] = _("Gmax Befuddle"), + [MOVE_G_MAX_VOLT_CRASH_P] = _("Gmax Volt Crash"), + [MOVE_G_MAX_VOLT_CRASH_S] = _("Gmax Volt Crash"), + [MOVE_G_MAX_GOLD_RUSH_P] = _("Gmax Gold Rush"), + [MOVE_G_MAX_GOLD_RUSH_S] = _("Gmax Gold Rush"), + [MOVE_G_MAX_CHI_STRIKE_P] = _("Gmax Chi Strike"), + [MOVE_G_MAX_CHI_STRIKE_S] = _("Gmax Chi Strike"), + [MOVE_G_MAX_TERROR_P] = _("Gmax Terror"), + [MOVE_G_MAX_TERROR_S] = _("Gmax Terror"), + [MOVE_G_MAX_FOAM_BURST_P] = _("Gmax Foam Burst"), + [MOVE_G_MAX_FOAM_BURST_S] = _("Gmax Foam Burst"), + [MOVE_G_MAX_RESONANCE_P] = _("Gmax Resonance"), + [MOVE_G_MAX_RESONANCE_S] = _("Gmax Resonance"), + [MOVE_G_MAX_CUDDLE_P] = _("Gmax Cuddle"), + [MOVE_G_MAX_CUDDLE_S] = _("Gmax Cuddle"), + [MOVE_G_MAX_REPLENISH_P] = _("Gmax Replenish"), + [MOVE_G_MAX_REPLENISH_S] = _("Gmax Replenish"), + [MOVE_G_MAX_MALODOR_P] = _("Gmax Malodor"), + [MOVE_G_MAX_MALODOR_S] = _("Gmax Malodor"), + [MOVE_G_MAX_MELTDOWN_P] = _("Gmax Meltdown"), + [MOVE_G_MAX_MELTDOWN_S] = _("Gmax Meltdown"), + [MOVE_G_MAX_DRUM_SOLO_P] = _("Gmax Drum Solo"), + [MOVE_G_MAX_DRUM_SOLO_S] = _("Gmax Drum Solo"), + [MOVE_G_MAX_FIREBALL_P] = _("Gmax Fireball"), + [MOVE_G_MAX_FIREBALL_S] = _("Gmax Fireball"), + [MOVE_G_MAX_HYDROSNIPE_P] = _("Gmax Hydrosnipe"), + [MOVE_G_MAX_HYDROSNIPE_S] = _("Gmax Hydrosnipe"), + [MOVE_G_MAX_WIND_RAGE_P] = _("Gmax Wind Rage"), + [MOVE_G_MAX_WIND_RAGE_S] = _("Gmax Wind Rage"), + [MOVE_G_MAX_GRAVITAS_P] = _("Gmax Gravitas"), + [MOVE_G_MAX_GRAVITAS_S] = _("Gmax Gravitas"), + [MOVE_G_MAX_STONESURGE_P] = _("Gmax Stonesurge"), + [MOVE_G_MAX_STONESURGE_S] = _("Gmax Stonesurge"), + [MOVE_G_MAX_VOLCALITH_P] = _("Gmax Volcalith"), + [MOVE_G_MAX_VOLCALITH_S] = _("Gmax Volcalith"), + [MOVE_G_MAX_TARTNESS_P] = _("Gmax Tartness"), + [MOVE_G_MAX_TARTNESS_S] = _("Gmax Tartness"), + [MOVE_G_MAX_SWEETNESS_P] = _("Gmax Sweetness"), + [MOVE_G_MAX_SWEETNESS_S] = _("Gmax Sweetness"), + [MOVE_G_MAX_SANDBLAST_P] = _("Gmax Sandblast"), + [MOVE_G_MAX_SANDBLAST_S] = _("Gmax Sandblast"), + [MOVE_G_MAX_STUN_SHOCK_P] = _("Gmax Stun Shock"), + [MOVE_G_MAX_STUN_SHOCK_S] = _("Gmax Stun Shock"), + [MOVE_G_MAX_CENTIFERNO_P] = _("Gmax Centiferno"), + [MOVE_G_MAX_CENTIFERNO_S] = _("Gmax Centiferno"), + [MOVE_G_MAX_SMITE_P] = _("Gmax Smite"), + [MOVE_G_MAX_SMITE_S] = _("Gmax Smite"), + [MOVE_G_MAX_SNOOZE_P] = _("Gmax Snooze"), + [MOVE_G_MAX_SNOOZE_S] = _("Gmax Snooze"), + [MOVE_G_MAX_FINALE_P] = _("Gmax Finale"), + [MOVE_G_MAX_FINALE_S] = _("Gmax Finale"), + [MOVE_G_MAX_STEELSURGE_P] = _("Gmax Steelsurge"), + [MOVE_G_MAX_STEELSURGE_S] = _("Gmax Steelsurge"), + [MOVE_G_MAX_DEPLETION_P] = _("Gmax Depletion"), + [MOVE_G_MAX_DEPLETION_S] = _("Gmax Depletion"), + [MOVE_G_MAX_ONE_BLOW_P] = _("Gmax One Blow"), + [MOVE_G_MAX_ONE_BLOW_S] = _("Gmax One Blow"), + [MOVE_G_MAX_RAPID_FLOW_P] = _("Gmax Rapid Flow"), + [MOVE_G_MAX_RAPID_FLOW_S] = _("Gmax Rapid Flow"), }; #else // 12 letters -const u8 gMoveNames[MOVES_COUNT][MOVE_NAME_LENGTH + 1] = +const u8 gMoveNames[MOVES_COUNT_DYNAMAX][MOVE_NAME_LENGTH + 1] = { [MOVE_NONE] = _("-"), [MOVE_POUND] = _("Pound"), @@ -1565,6 +1670,111 @@ const u8 gMoveNames[MOVES_COUNT][MOVE_NAME_LENGTH + 1] = [MOVE_SANDSEAR_STORM] = _("SndsearStorm"), [MOVE_LUNAR_BLESSING] = _("LunarBlessng"), [MOVE_TAKE_HEART] = _("Take Heart"), + // Max Moves + [MOVE_MAX_GUARD] = _("M-Guard"), + [MOVE_MAX_STRIKE_P] = _("M-Strike"), + [MOVE_MAX_STRIKE_S] = _("M-Strike"), + [MOVE_MAX_KNUCKLE_P] = _("M-Knuckle"), + [MOVE_MAX_KNUCKLE_S] = _("M-Knuckle"), + [MOVE_MAX_AIRSTREAM_P] = _("M-Airstream"), + [MOVE_MAX_AIRSTREAM_S] = _("M-Airstream"), + [MOVE_MAX_OOZE_P] = _("M-Ooze"), + [MOVE_MAX_OOZE_S] = _("M-Ooze"), + [MOVE_MAX_QUAKE_P] = _("M-Quake"), + [MOVE_MAX_QUAKE_S] = _("M-Quake"), + [MOVE_MAX_ROCKFALL_P] = _("M-Rockfall"), + [MOVE_MAX_ROCKFALL_S] = _("M-Rockfall"), + [MOVE_MAX_FLUTTERBY_P] = _("M-Flutterby"), + [MOVE_MAX_FLUTTERBY_S] = _("M-Flutterby"), + [MOVE_MAX_PHANTASM_P] = _("M-Phantasm"), + [MOVE_MAX_PHANTASM_S] = _("M-Phantasm"), + [MOVE_MAX_STEELSPIKE_P] = _("M-Steelspike"), + [MOVE_MAX_STEELSPIKE_S] = _("M-Steelspike"), + [MOVE_MAX_FLARE_P] = _("M-Flare"), + [MOVE_MAX_FLARE_S] = _("M-Flare"), + [MOVE_MAX_GEYSER_P] = _("M-Geyser"), + [MOVE_MAX_GEYSER_S] = _("M-Geyser"), + [MOVE_MAX_OVERGROWTH_P] = _("M-Overgrowth"), + [MOVE_MAX_OVERGROWTH_S] = _("M-Overgrowth"), + [MOVE_MAX_LIGHTNING_P] = _("M-Lightning"), + [MOVE_MAX_LIGHTNING_S] = _("M-Lightning"), + [MOVE_MAX_HAILSTORM_P] = _("M-Hailstorm"), + [MOVE_MAX_HAILSTORM_S] = _("M-Hailstorm"), + [MOVE_MAX_MINDSTORM_P] = _("M-Mindstorm"), + [MOVE_MAX_MINDSTORM_S] = _("M-Mindstorm"), + [MOVE_MAX_WYRMWIND_P] = _("M-Wyrmwind"), + [MOVE_MAX_WYRMWIND_S] = _("M-Wyrmwind"), + [MOVE_MAX_DARKNESS_P] = _("M-Darkness"), + [MOVE_MAX_DARKNESS_S] = _("M-Darkness"), + [MOVE_MAX_STARFALL_P] = _("M-Starfall"), + [MOVE_MAX_STARFALL_S] = _("M-Starfall"), +// Gigantamax Moves + [MOVE_G_MAX_VINE_LASH_P] = _("G-Vine Lash"), + [MOVE_G_MAX_VINE_LASH_S] = _("G-Vine Lash"), + [MOVE_G_MAX_WILDFIRE_P] = _("G-Wildfire"), + [MOVE_G_MAX_WILDFIRE_S] = _("G-Wildfire"), + [MOVE_G_MAX_CANNONADE_P] = _("G-Cannonade"), + [MOVE_G_MAX_CANNONADE_S] = _("G-Cannonade"), + [MOVE_G_MAX_BEFUDDLE_P] = _("G-Befuddle"), + [MOVE_G_MAX_BEFUDDLE_S] = _("G-Befuddle"), + [MOVE_G_MAX_VOLT_CRASH_P] = _("G-VoltCrash"), + [MOVE_G_MAX_VOLT_CRASH_S] = _("G-VoltCrash"), + [MOVE_G_MAX_GOLD_RUSH_P] = _("G-Gold Rush"), + [MOVE_G_MAX_GOLD_RUSH_S] = _("G-Gold Rush"), + [MOVE_G_MAX_CHI_STRIKE_P] = _("G-ChiStrike"), + [MOVE_G_MAX_CHI_STRIKE_S] = _("G-ChiStrike"), + [MOVE_G_MAX_TERROR_P] = _("G-Terror"), + [MOVE_G_MAX_TERROR_S] = _("G-Terror"), + [MOVE_G_MAX_FOAM_BURST_P] = _("G-FoamBurst"), + [MOVE_G_MAX_FOAM_BURST_S] = _("G-FoamBurst"), + [MOVE_G_MAX_RESONANCE_P] = _("G-Resonance"), + [MOVE_G_MAX_RESONANCE_S] = _("G-Resonance"), + [MOVE_G_MAX_CUDDLE_P] = _("G-Cuddle"), + [MOVE_G_MAX_CUDDLE_S] = _("G-Cuddle"), + [MOVE_G_MAX_REPLENISH_P] = _("G-Replenish"), + [MOVE_G_MAX_REPLENISH_S] = _("G-Replenish"), + [MOVE_G_MAX_MALODOR_P] = _("G-Malodor"), + [MOVE_G_MAX_MALODOR_S] = _("G-Malodor"), + [MOVE_G_MAX_MELTDOWN_P] = _("G-Meltdown"), + [MOVE_G_MAX_MELTDOWN_S] = _("G-Meltdown"), + [MOVE_G_MAX_DRUM_SOLO_P] = _("G-Drum Solo"), + [MOVE_G_MAX_DRUM_SOLO_S] = _("G-Drum Solo"), + [MOVE_G_MAX_FIREBALL_P] = _("G-Fireball"), + [MOVE_G_MAX_FIREBALL_S] = _("G-Fireball"), + [MOVE_G_MAX_HYDROSNIPE_P] = _("G-Hydrsnipe"), + [MOVE_G_MAX_HYDROSNIPE_S] = _("G-Hydrsnipe"), + [MOVE_G_MAX_WIND_RAGE_P] = _("G-Wind Rage"), + [MOVE_G_MAX_WIND_RAGE_S] = _("G-Wind Rage"), + [MOVE_G_MAX_GRAVITAS_P] = _("G-Gravitas"), + [MOVE_G_MAX_GRAVITAS_S] = _("G-Gravitas"), + [MOVE_G_MAX_STONESURGE_P] = _("G-Stonesrge"), + [MOVE_G_MAX_STONESURGE_S] = _("G-Stonesrge"), + [MOVE_G_MAX_VOLCALITH_P] = _("G-Volcalith"), + [MOVE_G_MAX_VOLCALITH_S] = _("G-Volcalith"), + [MOVE_G_MAX_TARTNESS_P] = _("G-Tartness"), + [MOVE_G_MAX_TARTNESS_S] = _("G-Tartness"), + [MOVE_G_MAX_SWEETNESS_P] = _("G-Sweetness"), + [MOVE_G_MAX_SWEETNESS_S] = _("G-Sweetness"), + [MOVE_G_MAX_SANDBLAST_P] = _("G-Sandblast"), + [MOVE_G_MAX_SANDBLAST_S] = _("G-Sandblast"), + [MOVE_G_MAX_STUN_SHOCK_P] = _("G-StunShock"), + [MOVE_G_MAX_STUN_SHOCK_S] = _("G-StunShock"), + [MOVE_G_MAX_CENTIFERNO_P] = _("G-Centiferno"), + [MOVE_G_MAX_CENTIFERNO_S] = _("G-Centiferno"), + [MOVE_G_MAX_SMITE_P] = _("G-Smite"), + [MOVE_G_MAX_SMITE_S] = _("G-Smite"), + [MOVE_G_MAX_SNOOZE_P] = _("G-Snooze"), + [MOVE_G_MAX_SNOOZE_S] = _("G-Snooze"), + [MOVE_G_MAX_FINALE_P] = _("G-Finale"), + [MOVE_G_MAX_FINALE_S] = _("G-Finale"), + [MOVE_G_MAX_STEELSURGE_P] = _("G-Steelsrge"), + [MOVE_G_MAX_STEELSURGE_S] = _("G-Steelsrge"), + [MOVE_G_MAX_DEPLETION_P] = _("G-Depletion"), + [MOVE_G_MAX_DEPLETION_S] = _("G-Depletion"), + [MOVE_G_MAX_ONE_BLOW_P] = _("G-One Blow"), + [MOVE_G_MAX_ONE_BLOW_S] = _("G-One Blow"), + [MOVE_G_MAX_RAPID_FLOW_P] = _("G-Rapid Flow"), + [MOVE_G_MAX_RAPID_FLOW_S] = _("G-Rapid Flow"), }; #endif From caaec99e779e3b1c21b0a195e2ecd93add825f1b Mon Sep 17 00:00:00 2001 From: AgustinGDLV Date: Thu, 27 Oct 2022 16:18:37 -0700 Subject: [PATCH 003/162] added data and graphics for gigantamax mons --- graphics/pokemon/alolan_diglett/back.png | Bin 0 -> 398 bytes graphics/pokemon/alolan_diglett/front.png | Bin 0 -> 451 bytes graphics/pokemon/alolan_diglett/icon.png | Bin 0 -> 358 bytes graphics/pokemon/alolan_diglett/normal.pal | 19 + graphics/pokemon/alolan_diglett/shiny.pal | 19 + graphics/pokemon/alolan_dugtrio/back.png | Bin 0 -> 519 bytes graphics/pokemon/alolan_dugtrio/front.png | Bin 0 -> 776 bytes graphics/pokemon/alolan_dugtrio/icon.png | Bin 0 -> 476 bytes graphics/pokemon/alolan_dugtrio/normal.pal | 19 + graphics/pokemon/alolan_dugtrio/shiny.pal | 19 + graphics/pokemon/alolan_exeggutor/back.png | Bin 0 -> 848 bytes graphics/pokemon/alolan_exeggutor/front.png | Bin 0 -> 939 bytes graphics/pokemon/alolan_exeggutor/icon.png | Bin 0 -> 536 bytes graphics/pokemon/alolan_exeggutor/normal.pal | 19 + graphics/pokemon/alolan_exeggutor/shiny.pal | 19 + graphics/pokemon/alolan_geodude/back.png | Bin 0 -> 621 bytes graphics/pokemon/alolan_geodude/front.png | Bin 0 -> 551 bytes graphics/pokemon/alolan_geodude/icon.png | Bin 0 -> 410 bytes graphics/pokemon/alolan_geodude/normal.pal | 19 + graphics/pokemon/alolan_geodude/shiny.pal | 19 + graphics/pokemon/alolan_golem/back.png | Bin 0 -> 696 bytes graphics/pokemon/alolan_golem/front.png | Bin 0 -> 893 bytes graphics/pokemon/alolan_golem/icon.png | Bin 0 -> 465 bytes graphics/pokemon/alolan_golem/normal.pal | 19 + graphics/pokemon/alolan_golem/shiny.pal | 19 + graphics/pokemon/alolan_graveler/back.png | Bin 0 -> 751 bytes graphics/pokemon/alolan_graveler/front.png | Bin 0 -> 889 bytes graphics/pokemon/alolan_graveler/icon.png | Bin 0 -> 519 bytes graphics/pokemon/alolan_graveler/normal.pal | 19 + graphics/pokemon/alolan_graveler/shiny.pal | 19 + graphics/pokemon/alolan_grimer/back.png | Bin 0 -> 647 bytes graphics/pokemon/alolan_grimer/front.png | Bin 0 -> 686 bytes graphics/pokemon/alolan_grimer/icon.png | Bin 0 -> 486 bytes graphics/pokemon/alolan_grimer/normal.pal | 19 + graphics/pokemon/alolan_grimer/shiny.pal | 19 + graphics/pokemon/alolan_marowak/back.png | Bin 0 -> 777 bytes graphics/pokemon/alolan_marowak/front.png | Bin 0 -> 846 bytes graphics/pokemon/alolan_marowak/icon.png | Bin 0 -> 495 bytes graphics/pokemon/alolan_marowak/normal.pal | 19 + graphics/pokemon/alolan_marowak/shiny.pal | 19 + graphics/pokemon/alolan_meowth/back.png | Bin 0 -> 661 bytes graphics/pokemon/alolan_meowth/front.png | Bin 0 -> 660 bytes graphics/pokemon/alolan_meowth/icon.png | Bin 0 -> 426 bytes graphics/pokemon/alolan_meowth/normal.pal | 19 + graphics/pokemon/alolan_meowth/shiny.pal | 19 + graphics/pokemon/alolan_muk/back.png | Bin 0 -> 883 bytes graphics/pokemon/alolan_muk/front.png | Bin 0 -> 917 bytes graphics/pokemon/alolan_muk/icon.png | Bin 0 -> 626 bytes graphics/pokemon/alolan_muk/normal.pal | 19 + graphics/pokemon/alolan_muk/shiny.pal | 19 + graphics/pokemon/alolan_ninetales/back.png | Bin 0 -> 806 bytes graphics/pokemon/alolan_ninetales/front.png | Bin 0 -> 1012 bytes graphics/pokemon/alolan_ninetales/icon.png | Bin 0 -> 601 bytes graphics/pokemon/alolan_ninetales/normal.pal | 19 + graphics/pokemon/alolan_ninetales/shiny.pal | 19 + graphics/pokemon/alolan_persian/back.png | Bin 0 -> 679 bytes graphics/pokemon/alolan_persian/front.png | Bin 0 -> 715 bytes graphics/pokemon/alolan_persian/icon.png | Bin 0 -> 456 bytes graphics/pokemon/alolan_persian/normal.pal | 19 + graphics/pokemon/alolan_persian/shiny.pal | 19 + graphics/pokemon/alolan_raichu/back.png | Bin 0 -> 674 bytes graphics/pokemon/alolan_raichu/front.png | Bin 0 -> 890 bytes graphics/pokemon/alolan_raichu/icon.png | Bin 0 -> 577 bytes graphics/pokemon/alolan_raichu/normal.pal | 19 + graphics/pokemon/alolan_raichu/shiny.pal | 19 + graphics/pokemon/alolan_raticate/back.png | Bin 0 -> 685 bytes graphics/pokemon/alolan_raticate/front.png | Bin 0 -> 821 bytes graphics/pokemon/alolan_raticate/icon.png | Bin 0 -> 506 bytes graphics/pokemon/alolan_raticate/normal.pal | 19 + graphics/pokemon/alolan_raticate/shiny.pal | 19 + graphics/pokemon/alolan_rattata/back.png | Bin 0 -> 667 bytes graphics/pokemon/alolan_rattata/front.png | Bin 0 -> 575 bytes graphics/pokemon/alolan_rattata/icon.png | Bin 0 -> 448 bytes graphics/pokemon/alolan_rattata/normal.pal | 19 + graphics/pokemon/alolan_rattata/shiny.pal | 19 + graphics/pokemon/alolan_sandshrew/back.png | Bin 0 -> 649 bytes graphics/pokemon/alolan_sandshrew/front.png | Bin 0 -> 599 bytes graphics/pokemon/alolan_sandshrew/icon.png | Bin 0 -> 425 bytes graphics/pokemon/alolan_sandshrew/normal.pal | 19 + graphics/pokemon/alolan_sandshrew/shiny.pal | 19 + graphics/pokemon/alolan_sandslash/back.png | Bin 0 -> 940 bytes graphics/pokemon/alolan_sandslash/front.png | Bin 0 -> 974 bytes graphics/pokemon/alolan_sandslash/icon.png | Bin 0 -> 524 bytes graphics/pokemon/alolan_sandslash/normal.pal | 19 + graphics/pokemon/alolan_sandslash/shiny.pal | 19 + graphics/pokemon/alolan_vulpix/back.png | Bin 0 -> 646 bytes graphics/pokemon/alolan_vulpix/front.png | Bin 0 -> 673 bytes graphics/pokemon/alolan_vulpix/icon.png | Bin 0 -> 487 bytes graphics/pokemon/alolan_vulpix/normal.pal | 19 + graphics/pokemon/alolan_vulpix/shiny.pal | 19 + graphics/pokemon/castform/anim_front.png | Bin 0 -> 382 bytes graphics/pokemon/castform/back.png | Bin 0 -> 373 bytes graphics/pokemon/castform/front.png | Bin 0 -> 382 bytes graphics/pokemon/castform/normal.pal | 19 + graphics/pokemon/castform/shiny.pal | 19 + graphics/pokemon/cherrim/anim_front.png | Bin 0 -> 862 bytes graphics/pokemon/cherrim/back.png | Bin 0 -> 600 bytes graphics/pokemon/cherrim/front.png | Bin 0 -> 544 bytes graphics/pokemon/cherrim/normal.pal | 19 + graphics/pokemon/cherrim/shiny.pal | 19 + graphics/pokemon/gmax_alcremie/back.png | Bin 0 -> 514 bytes graphics/pokemon/gmax_alcremie/front.png | Bin 0 -> 815 bytes graphics/pokemon/gmax_alcremie/icon.png | Bin 0 -> 484 bytes graphics/pokemon/gmax_alcremie/normal.pal | 19 + graphics/pokemon/gmax_alcremie/shiny.pal | 19 + graphics/pokemon/gmax_appletun/back.png | Bin 0 -> 581 bytes graphics/pokemon/gmax_appletun/front.png | Bin 0 -> 713 bytes graphics/pokemon/gmax_appletun/icon.png | Bin 0 -> 418 bytes graphics/pokemon/gmax_appletun/normal.pal | 19 + graphics/pokemon/gmax_appletun/shiny.pal | 19 + graphics/pokemon/gmax_blastoise/back.png | Bin 0 -> 871 bytes graphics/pokemon/gmax_blastoise/front.png | Bin 0 -> 1082 bytes graphics/pokemon/gmax_blastoise/icon.png | Bin 0 -> 510 bytes graphics/pokemon/gmax_blastoise/normal.pal | 19 + graphics/pokemon/gmax_blastoise/shiny.pal | 19 + graphics/pokemon/gmax_butterfree/back.png | Bin 0 -> 947 bytes graphics/pokemon/gmax_butterfree/front.png | Bin 0 -> 1787 bytes graphics/pokemon/gmax_butterfree/icon.png | Bin 0 -> 670 bytes graphics/pokemon/gmax_butterfree/normal.pal | 19 + graphics/pokemon/gmax_butterfree/shiny.pal | 19 + graphics/pokemon/gmax_centiskorch/back.png | Bin 0 -> 802 bytes graphics/pokemon/gmax_centiskorch/front.png | Bin 0 -> 996 bytes graphics/pokemon/gmax_centiskorch/icon.png | Bin 0 -> 644 bytes graphics/pokemon/gmax_centiskorch/normal.pal | 19 + graphics/pokemon/gmax_centiskorch/shiny.pal | 19 + graphics/pokemon/gmax_charizard/back.png | Bin 0 -> 970 bytes graphics/pokemon/gmax_charizard/front.png | Bin 0 -> 1260 bytes graphics/pokemon/gmax_charizard/icon.png | Bin 0 -> 626 bytes graphics/pokemon/gmax_charizard/normal.pal | 19 + graphics/pokemon/gmax_charizard/shiny.pal | 19 + graphics/pokemon/gmax_cinderace/back.png | Bin 0 -> 690 bytes graphics/pokemon/gmax_cinderace/front.png | Bin 0 -> 1239 bytes graphics/pokemon/gmax_cinderace/icon.png | Bin 0 -> 600 bytes graphics/pokemon/gmax_cinderace/normal.pal | 19 + graphics/pokemon/gmax_cinderace/shiny.pal | 19 + graphics/pokemon/gmax_coalossal/back.png | Bin 0 -> 715 bytes graphics/pokemon/gmax_coalossal/front.png | Bin 0 -> 1230 bytes graphics/pokemon/gmax_coalossal/icon.png | Bin 0 -> 489 bytes graphics/pokemon/gmax_coalossal/normal.pal | 19 + graphics/pokemon/gmax_coalossal/shiny.pal | 19 + graphics/pokemon/gmax_copperajah/back.png | Bin 0 -> 663 bytes graphics/pokemon/gmax_copperajah/front.png | Bin 0 -> 1087 bytes graphics/pokemon/gmax_copperajah/icon.png | Bin 0 -> 580 bytes graphics/pokemon/gmax_copperajah/normal.pal | 19 + graphics/pokemon/gmax_copperajah/shiny.pal | 19 + graphics/pokemon/gmax_corviknight/back.png | Bin 0 -> 823 bytes graphics/pokemon/gmax_corviknight/front.png | Bin 0 -> 1114 bytes graphics/pokemon/gmax_corviknight/icon.png | Bin 0 -> 478 bytes graphics/pokemon/gmax_corviknight/normal.pal | 19 + graphics/pokemon/gmax_corviknight/shiny.pal | 19 + graphics/pokemon/gmax_drednaw/back.png | Bin 0 -> 570 bytes graphics/pokemon/gmax_drednaw/front.png | Bin 0 -> 1194 bytes graphics/pokemon/gmax_drednaw/icon.png | Bin 0 -> 457 bytes graphics/pokemon/gmax_drednaw/normal.pal | 19 + graphics/pokemon/gmax_drednaw/shiny.pal | 19 + graphics/pokemon/gmax_duraludon/back.png | Bin 0 -> 719 bytes graphics/pokemon/gmax_duraludon/front.png | Bin 0 -> 864 bytes graphics/pokemon/gmax_duraludon/icon.png | Bin 0 -> 428 bytes graphics/pokemon/gmax_duraludon/normal.pal | 19 + graphics/pokemon/gmax_duraludon/shiny.pal | 19 + graphics/pokemon/gmax_eevee/back.png | Bin 0 -> 673 bytes graphics/pokemon/gmax_eevee/front.png | Bin 0 -> 579 bytes graphics/pokemon/gmax_eevee/icon.png | Bin 0 -> 500 bytes graphics/pokemon/gmax_eevee/normal.pal | 19 + graphics/pokemon/gmax_eevee/shiny.pal | 19 + graphics/pokemon/gmax_flapple/back.png | Bin 0 -> 581 bytes graphics/pokemon/gmax_flapple/front.png | Bin 0 -> 713 bytes graphics/pokemon/gmax_flapple/icon.png | Bin 0 -> 418 bytes graphics/pokemon/gmax_flapple/normal.pal | 19 + graphics/pokemon/gmax_flapple/shiny.pal | 19 + graphics/pokemon/gmax_garbodor/back.png | Bin 0 -> 946 bytes graphics/pokemon/gmax_garbodor/front.png | Bin 0 -> 1278 bytes graphics/pokemon/gmax_garbodor/icon.png | Bin 0 -> 624 bytes graphics/pokemon/gmax_garbodor/normal.pal | 19 + graphics/pokemon/gmax_garbodor/shiny.pal | 19 + graphics/pokemon/gmax_gengar/back.png | Bin 0 -> 596 bytes graphics/pokemon/gmax_gengar/front.png | Bin 0 -> 789 bytes graphics/pokemon/gmax_gengar/icon.png | Bin 0 -> 554 bytes graphics/pokemon/gmax_gengar/normal.pal | 19 + graphics/pokemon/gmax_gengar/shiny.pal | 19 + graphics/pokemon/gmax_grimmsnarl/back.png | Bin 0 -> 627 bytes graphics/pokemon/gmax_grimmsnarl/front.png | Bin 0 -> 994 bytes graphics/pokemon/gmax_grimmsnarl/icon.png | Bin 0 -> 493 bytes graphics/pokemon/gmax_grimmsnarl/normal.pal | 19 + graphics/pokemon/gmax_grimmsnarl/shiny.pal | 19 + graphics/pokemon/gmax_hatterene/back.png | Bin 0 -> 748 bytes graphics/pokemon/gmax_hatterene/front.png | Bin 0 -> 868 bytes graphics/pokemon/gmax_hatterene/icon.png | Bin 0 -> 495 bytes graphics/pokemon/gmax_hatterene/normal.pal | 19 + graphics/pokemon/gmax_hatterene/shiny.pal | 19 + graphics/pokemon/gmax_inteleon/back.png | Bin 0 -> 725 bytes graphics/pokemon/gmax_inteleon/front.png | Bin 0 -> 926 bytes graphics/pokemon/gmax_inteleon/icon.png | Bin 0 -> 501 bytes graphics/pokemon/gmax_inteleon/normal.pal | 19 + graphics/pokemon/gmax_inteleon/shiny.pal | 19 + graphics/pokemon/gmax_kingler/back.png | Bin 0 -> 751 bytes graphics/pokemon/gmax_kingler/front.png | Bin 0 -> 1114 bytes graphics/pokemon/gmax_kingler/icon.png | Bin 0 -> 610 bytes graphics/pokemon/gmax_kingler/normal.pal | 19 + graphics/pokemon/gmax_kingler/shiny.pal | 19 + graphics/pokemon/gmax_lapras/back.png | Bin 0 -> 1405 bytes graphics/pokemon/gmax_lapras/front.png | Bin 0 -> 1666 bytes graphics/pokemon/gmax_lapras/icon.png | Bin 0 -> 561 bytes graphics/pokemon/gmax_lapras/normal.pal | 19 + graphics/pokemon/gmax_lapras/shiny.pal | 19 + graphics/pokemon/gmax_machamp/back.png | Bin 0 -> 948 bytes graphics/pokemon/gmax_machamp/front.png | Bin 0 -> 1123 bytes graphics/pokemon/gmax_machamp/icon.png | Bin 0 -> 603 bytes graphics/pokemon/gmax_machamp/normal.pal | 19 + graphics/pokemon/gmax_machamp/shiny.pal | 19 + graphics/pokemon/gmax_melmetal/back.png | Bin 0 -> 1225 bytes graphics/pokemon/gmax_melmetal/front.png | Bin 0 -> 1828 bytes graphics/pokemon/gmax_melmetal/icon.png | Bin 0 -> 455 bytes graphics/pokemon/gmax_melmetal/normal.pal | 19 + graphics/pokemon/gmax_melmetal/shiny.pal | 19 + graphics/pokemon/gmax_meowth/back.png | Bin 0 -> 580 bytes graphics/pokemon/gmax_meowth/front.png | Bin 0 -> 844 bytes graphics/pokemon/gmax_meowth/icon.png | Bin 0 -> 413 bytes graphics/pokemon/gmax_meowth/normal.pal | 19 + graphics/pokemon/gmax_meowth/shiny.pal | 19 + graphics/pokemon/gmax_orbeetle/back.png | Bin 0 -> 727 bytes graphics/pokemon/gmax_orbeetle/front.png | Bin 0 -> 968 bytes graphics/pokemon/gmax_orbeetle/icon.png | Bin 0 -> 468 bytes graphics/pokemon/gmax_orbeetle/normal.pal | 19 + graphics/pokemon/gmax_orbeetle/shiny.pal | 19 + graphics/pokemon/gmax_pikachu/back.png | Bin 0 -> 739 bytes graphics/pokemon/gmax_pikachu/front.png | Bin 0 -> 757 bytes graphics/pokemon/gmax_pikachu/icon.png | Bin 0 -> 542 bytes graphics/pokemon/gmax_pikachu/normal.pal | 19 + graphics/pokemon/gmax_pikachu/shiny.pal | 19 + graphics/pokemon/gmax_rillaboom/back.png | Bin 0 -> 1109 bytes graphics/pokemon/gmax_rillaboom/front.png | Bin 0 -> 1435 bytes graphics/pokemon/gmax_rillaboom/icon.png | Bin 0 -> 667 bytes graphics/pokemon/gmax_rillaboom/normal.pal | 19 + graphics/pokemon/gmax_rillaboom/shiny.pal | 19 + graphics/pokemon/gmax_sandaconda/back.png | Bin 0 -> 857 bytes graphics/pokemon/gmax_sandaconda/front.png | Bin 0 -> 863 bytes graphics/pokemon/gmax_sandaconda/icon.png | Bin 0 -> 529 bytes graphics/pokemon/gmax_sandaconda/normal.pal | 19 + graphics/pokemon/gmax_sandaconda/shiny.pal | 19 + graphics/pokemon/gmax_snorlax/back.png | Bin 0 -> 847 bytes graphics/pokemon/gmax_snorlax/front.png | Bin 0 -> 1001 bytes graphics/pokemon/gmax_snorlax/icon.png | Bin 0 -> 551 bytes graphics/pokemon/gmax_snorlax/normal.pal | 19 + graphics/pokemon/gmax_snorlax/shiny.pal | 19 + graphics/pokemon/gmax_toxtricity/back.png | Bin 0 -> 978 bytes graphics/pokemon/gmax_toxtricity/front.png | Bin 0 -> 1062 bytes graphics/pokemon/gmax_toxtricity/icon.png | Bin 0 -> 539 bytes graphics/pokemon/gmax_toxtricity/normal.pal | 19 + graphics/pokemon/gmax_toxtricity/shiny.pal | 19 + graphics/pokemon/gmax_urshifu/back.png | Bin 0 -> 915 bytes graphics/pokemon/gmax_urshifu/front.png | Bin 0 -> 1168 bytes graphics/pokemon/gmax_urshifu/icon.png | Bin 0 -> 445 bytes graphics/pokemon/gmax_urshifu/normal.pal | 19 + graphics/pokemon/gmax_urshifu/shiny.pal | 19 + .../gmax_urshifu_rapid_strike/back.png | Bin 0 -> 821 bytes .../gmax_urshifu_rapid_strike/front.png | Bin 0 -> 924 bytes .../gmax_urshifu_rapid_strike/icon.png | Bin 0 -> 476 bytes .../gmax_urshifu_rapid_strike/normal.pal | 19 + .../gmax_urshifu_rapid_strike/shiny.pal | 19 + graphics/pokemon/gmax_venusaur/back.png | Bin 0 -> 842 bytes graphics/pokemon/gmax_venusaur/front.png | Bin 0 -> 1154 bytes graphics/pokemon/gmax_venusaur/icon.png | Bin 0 -> 542 bytes graphics/pokemon/gmax_venusaur/normal.pal | 19 + graphics/pokemon/gmax_venusaur/shiny.pal | 19 + include/constants/pokemon.h | 3 +- include/constants/species.h | 37 +- include/graphics.h | 165 ++ src/data/graphics/pokemon.h | 165 ++ src/data/pokemon/base_stats.h | 1534 +++++++++-------- src/data/pokemon/form_change_table_pointers.h | 67 + src/data/pokemon/form_change_tables.h | 42 + .../pokemon/form_species_table_pointers.h | 34 + src/data/pokemon/form_species_tables.h | 148 ++ src/data/pokemon/level_up_learnset_pointers.h | 34 + .../pokemon/teachable_learnset_pointers.h | 34 + .../pokemon_graphics/back_pic_coordinates.h | 34 + src/data/pokemon_graphics/back_pic_table.h | 35 + .../pokemon_graphics/enemy_mon_elevation.h | 1 + src/data/pokemon_graphics/front_pic_anims.h | 398 +++++ .../pokemon_graphics/front_pic_coordinates.h | 34 + src/data/pokemon_graphics/front_pic_table.h | 35 + src/data/pokemon_graphics/palette_table.h | 35 + .../pokemon_graphics/shiny_palette_table.h | 35 + src/data/text/species_names.h | 34 + src/pokemon.c | 34 + src/pokemon_icon.c | 67 + 287 files changed, 4302 insertions(+), 717 deletions(-) create mode 100644 graphics/pokemon/alolan_diglett/back.png create mode 100644 graphics/pokemon/alolan_diglett/front.png create mode 100644 graphics/pokemon/alolan_diglett/icon.png create mode 100644 graphics/pokemon/alolan_diglett/normal.pal create mode 100644 graphics/pokemon/alolan_diglett/shiny.pal create mode 100644 graphics/pokemon/alolan_dugtrio/back.png create mode 100644 graphics/pokemon/alolan_dugtrio/front.png create mode 100644 graphics/pokemon/alolan_dugtrio/icon.png create mode 100644 graphics/pokemon/alolan_dugtrio/normal.pal create mode 100644 graphics/pokemon/alolan_dugtrio/shiny.pal create mode 100644 graphics/pokemon/alolan_exeggutor/back.png create mode 100644 graphics/pokemon/alolan_exeggutor/front.png create mode 100644 graphics/pokemon/alolan_exeggutor/icon.png create mode 100644 graphics/pokemon/alolan_exeggutor/normal.pal create mode 100644 graphics/pokemon/alolan_exeggutor/shiny.pal create mode 100644 graphics/pokemon/alolan_geodude/back.png create mode 100644 graphics/pokemon/alolan_geodude/front.png create mode 100644 graphics/pokemon/alolan_geodude/icon.png create mode 100644 graphics/pokemon/alolan_geodude/normal.pal create mode 100644 graphics/pokemon/alolan_geodude/shiny.pal create mode 100644 graphics/pokemon/alolan_golem/back.png create mode 100644 graphics/pokemon/alolan_golem/front.png create mode 100644 graphics/pokemon/alolan_golem/icon.png create mode 100644 graphics/pokemon/alolan_golem/normal.pal create mode 100644 graphics/pokemon/alolan_golem/shiny.pal create mode 100644 graphics/pokemon/alolan_graveler/back.png create mode 100644 graphics/pokemon/alolan_graveler/front.png create mode 100644 graphics/pokemon/alolan_graveler/icon.png create mode 100644 graphics/pokemon/alolan_graveler/normal.pal create mode 100644 graphics/pokemon/alolan_graveler/shiny.pal create mode 100644 graphics/pokemon/alolan_grimer/back.png create mode 100644 graphics/pokemon/alolan_grimer/front.png create mode 100644 graphics/pokemon/alolan_grimer/icon.png create mode 100644 graphics/pokemon/alolan_grimer/normal.pal create mode 100644 graphics/pokemon/alolan_grimer/shiny.pal create mode 100644 graphics/pokemon/alolan_marowak/back.png create mode 100644 graphics/pokemon/alolan_marowak/front.png create mode 100644 graphics/pokemon/alolan_marowak/icon.png create mode 100644 graphics/pokemon/alolan_marowak/normal.pal create mode 100644 graphics/pokemon/alolan_marowak/shiny.pal create mode 100644 graphics/pokemon/alolan_meowth/back.png create mode 100644 graphics/pokemon/alolan_meowth/front.png create mode 100644 graphics/pokemon/alolan_meowth/icon.png create mode 100644 graphics/pokemon/alolan_meowth/normal.pal create mode 100644 graphics/pokemon/alolan_meowth/shiny.pal create mode 100644 graphics/pokemon/alolan_muk/back.png create mode 100644 graphics/pokemon/alolan_muk/front.png create mode 100644 graphics/pokemon/alolan_muk/icon.png create mode 100644 graphics/pokemon/alolan_muk/normal.pal create mode 100644 graphics/pokemon/alolan_muk/shiny.pal create mode 100644 graphics/pokemon/alolan_ninetales/back.png create mode 100644 graphics/pokemon/alolan_ninetales/front.png create mode 100644 graphics/pokemon/alolan_ninetales/icon.png create mode 100644 graphics/pokemon/alolan_ninetales/normal.pal create mode 100644 graphics/pokemon/alolan_ninetales/shiny.pal create mode 100644 graphics/pokemon/alolan_persian/back.png create mode 100644 graphics/pokemon/alolan_persian/front.png create mode 100644 graphics/pokemon/alolan_persian/icon.png create mode 100644 graphics/pokemon/alolan_persian/normal.pal create mode 100644 graphics/pokemon/alolan_persian/shiny.pal create mode 100644 graphics/pokemon/alolan_raichu/back.png create mode 100644 graphics/pokemon/alolan_raichu/front.png create mode 100644 graphics/pokemon/alolan_raichu/icon.png create mode 100644 graphics/pokemon/alolan_raichu/normal.pal create mode 100644 graphics/pokemon/alolan_raichu/shiny.pal create mode 100644 graphics/pokemon/alolan_raticate/back.png create mode 100644 graphics/pokemon/alolan_raticate/front.png create mode 100644 graphics/pokemon/alolan_raticate/icon.png create mode 100644 graphics/pokemon/alolan_raticate/normal.pal create mode 100644 graphics/pokemon/alolan_raticate/shiny.pal create mode 100644 graphics/pokemon/alolan_rattata/back.png create mode 100644 graphics/pokemon/alolan_rattata/front.png create mode 100644 graphics/pokemon/alolan_rattata/icon.png create mode 100644 graphics/pokemon/alolan_rattata/normal.pal create mode 100644 graphics/pokemon/alolan_rattata/shiny.pal create mode 100644 graphics/pokemon/alolan_sandshrew/back.png create mode 100644 graphics/pokemon/alolan_sandshrew/front.png create mode 100644 graphics/pokemon/alolan_sandshrew/icon.png create mode 100644 graphics/pokemon/alolan_sandshrew/normal.pal create mode 100644 graphics/pokemon/alolan_sandshrew/shiny.pal create mode 100644 graphics/pokemon/alolan_sandslash/back.png create mode 100644 graphics/pokemon/alolan_sandslash/front.png create mode 100644 graphics/pokemon/alolan_sandslash/icon.png create mode 100644 graphics/pokemon/alolan_sandslash/normal.pal create mode 100644 graphics/pokemon/alolan_sandslash/shiny.pal create mode 100644 graphics/pokemon/alolan_vulpix/back.png create mode 100644 graphics/pokemon/alolan_vulpix/front.png create mode 100644 graphics/pokemon/alolan_vulpix/icon.png create mode 100644 graphics/pokemon/alolan_vulpix/normal.pal create mode 100644 graphics/pokemon/alolan_vulpix/shiny.pal create mode 100644 graphics/pokemon/castform/anim_front.png create mode 100644 graphics/pokemon/castform/back.png create mode 100644 graphics/pokemon/castform/front.png create mode 100644 graphics/pokemon/castform/normal.pal create mode 100644 graphics/pokemon/castform/shiny.pal create mode 100644 graphics/pokemon/cherrim/anim_front.png create mode 100644 graphics/pokemon/cherrim/back.png create mode 100644 graphics/pokemon/cherrim/front.png create mode 100644 graphics/pokemon/cherrim/normal.pal create mode 100644 graphics/pokemon/cherrim/shiny.pal create mode 100644 graphics/pokemon/gmax_alcremie/back.png create mode 100644 graphics/pokemon/gmax_alcremie/front.png create mode 100644 graphics/pokemon/gmax_alcremie/icon.png create mode 100644 graphics/pokemon/gmax_alcremie/normal.pal create mode 100644 graphics/pokemon/gmax_alcremie/shiny.pal create mode 100644 graphics/pokemon/gmax_appletun/back.png create mode 100644 graphics/pokemon/gmax_appletun/front.png create mode 100644 graphics/pokemon/gmax_appletun/icon.png create mode 100644 graphics/pokemon/gmax_appletun/normal.pal create mode 100644 graphics/pokemon/gmax_appletun/shiny.pal create mode 100644 graphics/pokemon/gmax_blastoise/back.png create mode 100644 graphics/pokemon/gmax_blastoise/front.png create mode 100644 graphics/pokemon/gmax_blastoise/icon.png create mode 100644 graphics/pokemon/gmax_blastoise/normal.pal create mode 100644 graphics/pokemon/gmax_blastoise/shiny.pal create mode 100644 graphics/pokemon/gmax_butterfree/back.png create mode 100644 graphics/pokemon/gmax_butterfree/front.png create mode 100644 graphics/pokemon/gmax_butterfree/icon.png create mode 100644 graphics/pokemon/gmax_butterfree/normal.pal create mode 100644 graphics/pokemon/gmax_butterfree/shiny.pal create mode 100644 graphics/pokemon/gmax_centiskorch/back.png create mode 100644 graphics/pokemon/gmax_centiskorch/front.png create mode 100644 graphics/pokemon/gmax_centiskorch/icon.png create mode 100644 graphics/pokemon/gmax_centiskorch/normal.pal create mode 100644 graphics/pokemon/gmax_centiskorch/shiny.pal create mode 100644 graphics/pokemon/gmax_charizard/back.png create mode 100644 graphics/pokemon/gmax_charizard/front.png create mode 100644 graphics/pokemon/gmax_charizard/icon.png create mode 100644 graphics/pokemon/gmax_charizard/normal.pal create mode 100644 graphics/pokemon/gmax_charizard/shiny.pal create mode 100644 graphics/pokemon/gmax_cinderace/back.png create mode 100644 graphics/pokemon/gmax_cinderace/front.png create mode 100644 graphics/pokemon/gmax_cinderace/icon.png create mode 100644 graphics/pokemon/gmax_cinderace/normal.pal create mode 100644 graphics/pokemon/gmax_cinderace/shiny.pal create mode 100644 graphics/pokemon/gmax_coalossal/back.png create mode 100644 graphics/pokemon/gmax_coalossal/front.png create mode 100644 graphics/pokemon/gmax_coalossal/icon.png create mode 100644 graphics/pokemon/gmax_coalossal/normal.pal create mode 100644 graphics/pokemon/gmax_coalossal/shiny.pal create mode 100644 graphics/pokemon/gmax_copperajah/back.png create mode 100644 graphics/pokemon/gmax_copperajah/front.png create mode 100644 graphics/pokemon/gmax_copperajah/icon.png create mode 100644 graphics/pokemon/gmax_copperajah/normal.pal create mode 100644 graphics/pokemon/gmax_copperajah/shiny.pal create mode 100644 graphics/pokemon/gmax_corviknight/back.png create mode 100644 graphics/pokemon/gmax_corviknight/front.png create mode 100644 graphics/pokemon/gmax_corviknight/icon.png create mode 100644 graphics/pokemon/gmax_corviknight/normal.pal create mode 100644 graphics/pokemon/gmax_corviknight/shiny.pal create mode 100644 graphics/pokemon/gmax_drednaw/back.png create mode 100644 graphics/pokemon/gmax_drednaw/front.png create mode 100644 graphics/pokemon/gmax_drednaw/icon.png create mode 100644 graphics/pokemon/gmax_drednaw/normal.pal create mode 100644 graphics/pokemon/gmax_drednaw/shiny.pal create mode 100644 graphics/pokemon/gmax_duraludon/back.png create mode 100644 graphics/pokemon/gmax_duraludon/front.png create mode 100644 graphics/pokemon/gmax_duraludon/icon.png create mode 100644 graphics/pokemon/gmax_duraludon/normal.pal create mode 100644 graphics/pokemon/gmax_duraludon/shiny.pal create mode 100644 graphics/pokemon/gmax_eevee/back.png create mode 100644 graphics/pokemon/gmax_eevee/front.png create mode 100644 graphics/pokemon/gmax_eevee/icon.png create mode 100644 graphics/pokemon/gmax_eevee/normal.pal create mode 100644 graphics/pokemon/gmax_eevee/shiny.pal create mode 100644 graphics/pokemon/gmax_flapple/back.png create mode 100644 graphics/pokemon/gmax_flapple/front.png create mode 100644 graphics/pokemon/gmax_flapple/icon.png create mode 100644 graphics/pokemon/gmax_flapple/normal.pal create mode 100644 graphics/pokemon/gmax_flapple/shiny.pal create mode 100644 graphics/pokemon/gmax_garbodor/back.png create mode 100644 graphics/pokemon/gmax_garbodor/front.png create mode 100644 graphics/pokemon/gmax_garbodor/icon.png create mode 100644 graphics/pokemon/gmax_garbodor/normal.pal create mode 100644 graphics/pokemon/gmax_garbodor/shiny.pal create mode 100644 graphics/pokemon/gmax_gengar/back.png create mode 100644 graphics/pokemon/gmax_gengar/front.png create mode 100644 graphics/pokemon/gmax_gengar/icon.png create mode 100644 graphics/pokemon/gmax_gengar/normal.pal create mode 100644 graphics/pokemon/gmax_gengar/shiny.pal create mode 100644 graphics/pokemon/gmax_grimmsnarl/back.png create mode 100644 graphics/pokemon/gmax_grimmsnarl/front.png create mode 100644 graphics/pokemon/gmax_grimmsnarl/icon.png create mode 100644 graphics/pokemon/gmax_grimmsnarl/normal.pal create mode 100644 graphics/pokemon/gmax_grimmsnarl/shiny.pal create mode 100644 graphics/pokemon/gmax_hatterene/back.png create mode 100644 graphics/pokemon/gmax_hatterene/front.png create mode 100644 graphics/pokemon/gmax_hatterene/icon.png create mode 100644 graphics/pokemon/gmax_hatterene/normal.pal create mode 100644 graphics/pokemon/gmax_hatterene/shiny.pal create mode 100644 graphics/pokemon/gmax_inteleon/back.png create mode 100644 graphics/pokemon/gmax_inteleon/front.png create mode 100644 graphics/pokemon/gmax_inteleon/icon.png create mode 100644 graphics/pokemon/gmax_inteleon/normal.pal create mode 100644 graphics/pokemon/gmax_inteleon/shiny.pal create mode 100644 graphics/pokemon/gmax_kingler/back.png create mode 100644 graphics/pokemon/gmax_kingler/front.png create mode 100644 graphics/pokemon/gmax_kingler/icon.png create mode 100644 graphics/pokemon/gmax_kingler/normal.pal create mode 100644 graphics/pokemon/gmax_kingler/shiny.pal create mode 100644 graphics/pokemon/gmax_lapras/back.png create mode 100644 graphics/pokemon/gmax_lapras/front.png create mode 100644 graphics/pokemon/gmax_lapras/icon.png create mode 100644 graphics/pokemon/gmax_lapras/normal.pal create mode 100644 graphics/pokemon/gmax_lapras/shiny.pal create mode 100644 graphics/pokemon/gmax_machamp/back.png create mode 100644 graphics/pokemon/gmax_machamp/front.png create mode 100644 graphics/pokemon/gmax_machamp/icon.png create mode 100644 graphics/pokemon/gmax_machamp/normal.pal create mode 100644 graphics/pokemon/gmax_machamp/shiny.pal create mode 100644 graphics/pokemon/gmax_melmetal/back.png create mode 100644 graphics/pokemon/gmax_melmetal/front.png create mode 100644 graphics/pokemon/gmax_melmetal/icon.png create mode 100644 graphics/pokemon/gmax_melmetal/normal.pal create mode 100644 graphics/pokemon/gmax_melmetal/shiny.pal create mode 100644 graphics/pokemon/gmax_meowth/back.png create mode 100644 graphics/pokemon/gmax_meowth/front.png create mode 100644 graphics/pokemon/gmax_meowth/icon.png create mode 100644 graphics/pokemon/gmax_meowth/normal.pal create mode 100644 graphics/pokemon/gmax_meowth/shiny.pal create mode 100644 graphics/pokemon/gmax_orbeetle/back.png create mode 100644 graphics/pokemon/gmax_orbeetle/front.png create mode 100644 graphics/pokemon/gmax_orbeetle/icon.png create mode 100644 graphics/pokemon/gmax_orbeetle/normal.pal create mode 100644 graphics/pokemon/gmax_orbeetle/shiny.pal create mode 100644 graphics/pokemon/gmax_pikachu/back.png create mode 100644 graphics/pokemon/gmax_pikachu/front.png create mode 100644 graphics/pokemon/gmax_pikachu/icon.png create mode 100644 graphics/pokemon/gmax_pikachu/normal.pal create mode 100644 graphics/pokemon/gmax_pikachu/shiny.pal create mode 100644 graphics/pokemon/gmax_rillaboom/back.png create mode 100644 graphics/pokemon/gmax_rillaboom/front.png create mode 100644 graphics/pokemon/gmax_rillaboom/icon.png create mode 100644 graphics/pokemon/gmax_rillaboom/normal.pal create mode 100644 graphics/pokemon/gmax_rillaboom/shiny.pal create mode 100644 graphics/pokemon/gmax_sandaconda/back.png create mode 100644 graphics/pokemon/gmax_sandaconda/front.png create mode 100644 graphics/pokemon/gmax_sandaconda/icon.png create mode 100644 graphics/pokemon/gmax_sandaconda/normal.pal create mode 100644 graphics/pokemon/gmax_sandaconda/shiny.pal create mode 100644 graphics/pokemon/gmax_snorlax/back.png create mode 100644 graphics/pokemon/gmax_snorlax/front.png create mode 100644 graphics/pokemon/gmax_snorlax/icon.png create mode 100644 graphics/pokemon/gmax_snorlax/normal.pal create mode 100644 graphics/pokemon/gmax_snorlax/shiny.pal create mode 100644 graphics/pokemon/gmax_toxtricity/back.png create mode 100644 graphics/pokemon/gmax_toxtricity/front.png create mode 100644 graphics/pokemon/gmax_toxtricity/icon.png create mode 100644 graphics/pokemon/gmax_toxtricity/normal.pal create mode 100644 graphics/pokemon/gmax_toxtricity/shiny.pal create mode 100644 graphics/pokemon/gmax_urshifu/back.png create mode 100644 graphics/pokemon/gmax_urshifu/front.png create mode 100644 graphics/pokemon/gmax_urshifu/icon.png create mode 100644 graphics/pokemon/gmax_urshifu/normal.pal create mode 100644 graphics/pokemon/gmax_urshifu/shiny.pal create mode 100644 graphics/pokemon/gmax_urshifu_rapid_strike/back.png create mode 100644 graphics/pokemon/gmax_urshifu_rapid_strike/front.png create mode 100644 graphics/pokemon/gmax_urshifu_rapid_strike/icon.png create mode 100644 graphics/pokemon/gmax_urshifu_rapid_strike/normal.pal create mode 100644 graphics/pokemon/gmax_urshifu_rapid_strike/shiny.pal create mode 100644 graphics/pokemon/gmax_venusaur/back.png create mode 100644 graphics/pokemon/gmax_venusaur/front.png create mode 100644 graphics/pokemon/gmax_venusaur/icon.png create mode 100644 graphics/pokemon/gmax_venusaur/normal.pal create mode 100644 graphics/pokemon/gmax_venusaur/shiny.pal diff --git a/graphics/pokemon/alolan_diglett/back.png b/graphics/pokemon/alolan_diglett/back.png new file mode 100644 index 0000000000000000000000000000000000000000..26e060dc346577c083b40b883dcd09b47f5f0661 GIT binary patch literal 398 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|e#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6-A0X`wFGcGJ>Fi`k$g26*V00?emC~R<0`0?Y1LBIkIjf#c|A0jeN7$|5Y zL?le;nBZVwz`Bf;5vZ55z$3Dlfr0NZ2s0kfUy%Y7eD3Mu7~*mK?FC=1Lk0q@4<=SH zEZ2QE`3u8K{&mSVjomT|9hTkiY&PX)vU;aCb#WiuKDYnO>;v}ssq>lgK5GhCFPx#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_pjcS=$N*R{7!VK;*qB(ra6tI@_|P~= zZ~z$isF3(*STG$=qFzC!a(f|Me32;bRa{vGi!vFvd!vV){sAK>D0USw0 zK~zY`?U27t!!Qts9i?Li>>(2iDGz`UVy=+IM8%XcM?{Bs4~9Mgf>+=bvQUZ9X_k(~ zUNR<^g)x<|_%qcxPYg);EKk2r_d6XM`OgFg9zmRV224HkgDIyv!XqIPvg1@FXJp4D zIc78$GdkyjJ_An|8MR}OrVF?wg!m=}0AfU(!yP4rklROegm%71SUv+KoZr6`j{wgf0!GWv2N>M;mVYbHMA~Q zhbtQ^shjO)zX2<)biJ)gtagod2u*L5&VFonM%Vils>f?>u+xafDKLeyf5)yw?Aj04 tts-R|tfj_Yy|Mw6jnr^FGV<3j_6ZOzd{Bnd8#@31002ovPDHLkV1k0ju!8^q literal 0 HcmV?d00001 diff --git a/graphics/pokemon/alolan_diglett/icon.png b/graphics/pokemon/alolan_diglett/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..1b575078a3487ad1a735ad181c4242add98a764e GIT binary patch literal 358 zcmeAS@N?(olHy`uVBq!ia0vp^3P9|@!VDxk7i7!@QtTz3zOL+#x%oxS)Lng+`vHZ- zOI#yLg7ec#$`gxH8QgtbfW|14r4}g|>zNd`E_n!4!ckJ-=MI!H2C^Bv8Z_mB6id3J zuOkD)#(wTUiL5}rL4Z$)Yto$N>gwvfd$;`m|G&8S?2{(uD%$&Ztq=`(l=0IfsblJ8 vrsWx#c9-r{{r(l4cuJAy$42gAOZz(ZSqVDj^@_iMu43?X^>bP0l+XkK({O}8 literal 0 HcmV?d00001 diff --git a/graphics/pokemon/alolan_diglett/normal.pal b/graphics/pokemon/alolan_diglett/normal.pal new file mode 100644 index 0000000000..4f7aafe254 --- /dev/null +++ b/graphics/pokemon/alolan_diglett/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +160 88 88 +248 200 0 +88 48 24 +16 16 16 +216 152 88 +192 112 64 +248 248 248 +208 56 72 +112 0 24 +248 168 144 +248 104 88 +48 32 40 +96 88 96 +144 136 144 +64 48 48 diff --git a/graphics/pokemon/alolan_diglett/shiny.pal b/graphics/pokemon/alolan_diglett/shiny.pal new file mode 100644 index 0000000000..c0ce049798 --- /dev/null +++ b/graphics/pokemon/alolan_diglett/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +128 48 32 +248 200 0 +72 24 16 +16 16 16 +216 104 32 +176 64 32 +248 248 248 +48 80 160 +8 40 120 +128 144 240 +88 104 200 +48 32 40 +96 88 96 +144 136 144 +64 48 48 diff --git a/graphics/pokemon/alolan_dugtrio/back.png b/graphics/pokemon/alolan_dugtrio/back.png new file mode 100644 index 0000000000000000000000000000000000000000..e114284819b74add47b737b084e0bb2aed9ce800 GIT binary patch literal 519 zcmV+i0{H!jP)Px#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_fG{BV$N<=AAh19nNEi_K`1lYI5C|xE zSZK&FP@vF|2rwWhU|3*~h>+NrSlF;rX8-^I32;bRa{vGi!vFvd!vV){sAK>D0bof) zK~zY`?U1o}tA`(D6)-i(}6RlB6EgCcyXb}Np*d0%3V#re8B0O3EZ-BVBAUmo3vMC%% zC&+0=K|eIqGLOB{-U63t&H_JvM)M7$GPxx7dikV@j)<1P+l43UuK#o%&;#&( zz1cq%53Mo}4KNo z&7oQ!B9QPx#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_pjcS=$N<=wSio>VSTGp)`1lYI5O4q( z_-I(rI7rZt2rwWhU|3*~h>+NrSOc4UOaK4?32;bRa{vGi!vFvd!vV){sAK>D0%1u+ zK~zY`?UONY+CUV??V-xTkaOxXkPe&_7LU#su=-h20+(O&d#B82SsDWznuj~Vt5 zIwiJk6M9$%72p8x_QfOa_mttlW--%S|Q zgD5;+@G`W(8OuI-{E7p9di}@{Xc501YqXW(xm8x)2gL2ch&w7oXF3!AjZ}DwF51}>tHZrU(C!Pz4a9#v%5UBAnH(`41LKlJI_BBJeQd?3$YxWh2 zfKEejaZAmx$~{#J7|*Rsw?eff=sq9-pMT&}#|i+(6>vw!9=KQd(PV6U)HOa*K=Y1V zzRq%inOlYS>ftgAeN7!N-S1Sz}r} zz+#z5LE>MedYnkPT%>cB11fT!g?&+7NSU$#zdSwzqF|Y<3B*a3BBo$h@DxxCx`7io^(zHL_hA8$bgN6410000y}h*m|NnDy&7`dM zw1Zmi#f!zPDfad$_F__$d(Fk9&Alm{Vq#iBK|$$6v|j)K00Cl4M??UK1szBL0096= zL_t(|oXwIkZp0uEMY#du0`XCD8&;_(U8Z#^+NE+4X$vYsLqkhtb^-H zL^?NWbKXFRV;PW5u_ zAPnIwWBPWgU_*Qkkqn5~lHb)uHy|=l9`}{I~;ullnAV S5IQgb0000Px#1ZP1_K>z@;j|==^1poj5Fi=cXMF6nqz+gC-I1u=_Xb=z(;DAVoXaL}-Soqjz zplBfY`1r_Zi0Gimz@Py5@F<9=K=g7n@c;k-32;bRa{vGi!vFvd!vV){sAK>D0;x$v zK~zY`-IcM9+b|4x4Y6!#Ba*Jr9Jc?<6xZQh@ zh%N-M0`$BUbAmE*tQ4T5_Rr7o#8q@nLC=dml=CB!Kr}@+0xZGW*&H?quwtO0Mfb9= zlJuzv7{wxJ)f5K;@a-L;)3*gMd<+6``(`4#7~};U7s8FRtgLM$w=98#IHobPRe-V< zb&zfV)_cE>V`dPeb|Vqljc=uqoPwq|#Oh@RjDLy6`z=qv;K@AiyOf*{bp86A2%4^j zvS|wYuIWnl8BA~Om+^cXX{=%i6s*M!OOzd5^5RoZPWq^#15=BZJ0Dd~u9Ov0pXe@r z&^1gxavZ7W<(Xa!j8ZXF`8PrH;}b3W^NDu>xLd2-hnQeE+&I^1bQ*`TlT^KdfT!E- zj8zrLnAU|M5YpJcsoP@$}3%GzezQCR>S~9z;~hF6Y$}i zrynLcBLiHfywN4~7`U8y*jGt{RG0v%(ekhpAg_Zoy2$|7xIFVHzey6rn?nY;#+gTr zRq9a!_>UQAt{0go2C_!u{maWa0_DZW*JX$rMMC*m=L~TqX;@}JTO3AUeEap{ujQXy aMez$>8psSNRD(AF0000Px#1ZP1_K>z@;j|==^1poj5Fi=cXMF6nqIG{i%U@(Z_a1am>P{3eNNI1~AX!!8B zh=4Ho`1r_Zi0Gimka%Fgu$YLbKuORwY5)KL32;bRa{vGi!vFvd!vV){sAK>D0|ZG# zK~zY`g_N;x+CUV>56kk#a2Jv}c5wfIINfb}NmL|+NVuI;) z@E8+x-baeeSbG+^OZVAvs#OZBQLblY&y6yG)Jt59EQ*GQs z3T_CcEMtQAiBNJKU@0-4R;CEN- z1=vLBkiYjkl_6cB�!~tpqO0J}N!n-Vm)Lq?GnL099nL9#FZr9)J)p0IGCf0Qhh{ zfV`K0cA^YpTS>ocw8b(EM)b`Tp@s7tuq_0q*BrIyfJrGS(A0b)Z=M5|vs8Ut*wI;z zMVD%I!W$`@?ZsAU)yGM?w~0=8)u+dlp3LD@CzEuFd^FFYjjK<~BPhfFzP+&e2Q8gZ ztuFXfE@000+sMObuGZ)S9NVRB^vM@&RePDdbiWpW@hE;Mn4q~QPn00?w&PDe*f zL^A*Y002sWDIWj;00d`2O+f$vv5yP*_YUWBQVq#iBK|yIbeOmwk00Cl4M??UK1szBL00BHn zL_t(|oW;^jYJ@Np0N~u!lvI6-A0X`wFGcGKcU?K5i0>gy}4gmoH2?Yg@fB+2xgA+GS{P^($s0s}f^_55g zg*Xd5B8wRq_zr_G^yv zH(&9EX=}`W;||5ZMX$e=hP|qp`SbJnBQN~fyLP`6WxDd6fs>)?GsA?)9jAk5PH%CT z5aHOw!&17&q2ED{rNvFnfMt&;XP+RGR4adjX1}8LmnrM_#P6Q_S7LSw;|;mF`e}?A zu?-zZSg*-m{d=#Hg)uAd*84>j77A7_kK&4L)@HUnI?8nE^FrH+^*Q@j&Huo2^2pc5 zSIZ|TPn+Obq2_90@G#a{o%O?6uUEleOqpBRJtnM|eJOU}0DET38P>3!O{?rL$OX<% z`jO-+*HAe#{BNQCwu9dnsvX$&K+$7K$nE*(oV|M04s_j-+wJjbl9+C_>ra-c7Zdj8 z{XXBfrMy~cN6Vwq1+Q;q9!-<@#toLljqcjGSBKjsHjZ%BwTWo)|fqv8IdNAW)*9G0wD_Jl{{ z{ZsQNyqo$;BAxDRU|{=V!lvI6-A0X`wFGcGI$2q;*v;y^{k3;_WF2?Yg@fB+2xgA+GS{P^($s0t0N5nE;s z6yhxKh%9Dc;5!V$jK}j=qyQ~z@N{tu@i_i=l4D-8fq*Of$v1`Rc4|YF*I2)`TOoXTIO~aNX{Is~0^HSJ0i-G9`TD zp-(?HS|9IljhLVOxG~no>3n{phhl)TdI-bE7t`5!6xF;Py!mZDd}=V8Q>6GxWTl(* z_r7i+0j;J$~Tu? zi!FsAr0;~&tH!MleWvg1*~G2Tv87q!x?AaqS{;)kmSzlF*dDxFbM=ZOx04VngN-Ne zquehC3}pBG^$8X|7nQ8^taJ7E%l{mBmU!I~2(Y>FymHm)O#AC^jGRIb326vDe70;B zKi|%ux(iO2?}_~Wsjqd)#g`@e4Th|bz8zk1_S@;`so@MuUi3e{yr9ZthS9`Du?)Q8 z&!7Ei-|!)M9~+BheQ%%E*5taIj0ZjjYilmml$J}ec)oz=_kulz$6KNqKA7F){-bcb gY4^Kdn;G^oMk@t;eR1KCJ1EXPUHx3vIVCg!04e|EmjD0& literal 0 HcmV?d00001 diff --git a/graphics/pokemon/alolan_geodude/icon.png b/graphics/pokemon/alolan_geodude/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..1a5f9699716f979d3485d22db4898ce59047d23a GIT binary patch literal 410 zcmeAS@N?(olHy`uVBq!ia0vp^3P9|@!VDxk7i7!@QtTz3zOL+#x%ow{&1MDt{0I~h zFL8}13C>R|DNig)WpMX#0UD!FmRh7>tY=c#y5u2H2}enRpF2>-7|3SuYS5GiQY`6? zzK#qG8~eHcB(ehe1_3@Hu1Ry6tE;Q`?%neL|Nr9RvrE=|+tM8M?r8VXHJabPX?{xz zno@oC=#sO0HRmKHML9Y;zI53V57f(;%!#BZt9tLNnUEM)GQ zA}^QwGG3Salq{?D4JpM-CX-#X41lKokC9)>KWk&&F24Lr_YX|@x9;$aeXl-v#g|H4 zx?dX6_a(Glxi-^^=cT!9+ss*fmk->(_K-7WYYXcGImZh?pD=j3`njxgN@xNACX%DU literal 0 HcmV?d00001 diff --git a/graphics/pokemon/alolan_geodude/normal.pal b/graphics/pokemon/alolan_geodude/normal.pal new file mode 100644 index 0000000000..5eb12793fa --- /dev/null +++ b/graphics/pokemon/alolan_geodude/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +80 80 112 +160 168 192 +120 120 152 +16 16 16 +24 32 32 +72 80 80 +40 48 48 +200 216 200 +248 248 248 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/alolan_geodude/shiny.pal b/graphics/pokemon/alolan_geodude/shiny.pal new file mode 100644 index 0000000000..58b7f7c06b --- /dev/null +++ b/graphics/pokemon/alolan_geodude/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +144 56 24 +248 144 0 +208 88 8 +16 16 16 +24 32 32 +72 80 80 +40 48 48 +200 216 200 +248 248 248 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/alolan_golem/back.png b/graphics/pokemon/alolan_golem/back.png new file mode 100644 index 0000000000000000000000000000000000000000..bda1dfaa6f0933ec3c548c7166385568ec1f74a3 GIT binary patch literal 696 zcmV;p0!RIcP)Px#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_I5D0uf0> zK~zY`?U6xl+b|GC-N1`#S2{UBD)$01djK0CV6p3_=mCQC02M$vyTSrA^qPRl6WGux zJ2Rvt+sd|!0-1$G%{>13Gn&1}zlys&f24POP9y&;8{l-)AFGTmUt|ZxVQU9z9Ai0&UlICm`S#w95hb($_zB9E}h^ zU%L+a4q_PN5P{R?;ailt0g^!1Roe)*vBLngJ#gBl_x>6fIu4k?X+G;ltdjfb-nXi%uYqTMPyPS&zWZvvFP2UAm9SswfO#ML% z1bAb#1E-X4tI}Z9ss*ST~hZ_-Xw{qz+XG z3ZqPQQ-M_|0von~wro%yZw!FOB6?De*MxwkI)JhXU_%hVlEA!0*IWk&R{(f$1mNI0 zCYtid^?CqE0s)^AP+E53e7XR@z^+LNP&mCY%E16&kGb`Dh@lnD7xV};XrhEZ0l}$& zD;X4&XMnaA6T$KHI^A%{BB0`b;DielIySKy)zCv2038$q_(Z}oy}ke%x=Z17pjIIQ e@A1FHZ1xu@IFG4ux8hC!0000Px#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_I5T7a6nK< zC@3hHpqOY-P`Ie5kcfc5C@ARY=%Um?yZ`_I32;bRa{vGi!vFvd!vV){sAK>D0@g`H zK~zY`t<*tF+&~lu@a&R{^wPH*OQjUqiO`dWbiDLX*lh;ZQmt5MKY-vjSQzzM!GNcN z5FA|Gz3QtwXYp zI-Me_&`bwVIz==JKp&P3m|eHB6|kJL0UtICP%@$lk2cjB6$i>kRAF{K1sG9@<~Xnc z(h%t;rhqJji(SlNl>ilj5Cxn`P^FFvK`3?8T{vX`poXobv=7iM0q^Y`&(W0yto&Nv$DZ_W}ymR#V@_B-kAT6mLTj0xa$|$5UqDaR%lB zPa9#s2tMt7MBs5Z2m%T|Kh)Ro`8MaCx5s(F@n??nZEcMi&V8O1x}ET=&$qlo9gt^H z#EEh{VHlp^G!6Kn9SK2})PPWx@980rj$dM*DzGyZoKae9`$KTzd7~j`Lc1?)3X8Fy ztxyi2Chr412f9+WbFd%jpdrqjt1cAB@?^lw(yQp>vtC9`3sR5HcJ$NqhNHQ6-HpzkP7i-KP)Em@dmy#?HYZyT$w*_E+ z%YwIq%L}j|1z%Y2Hc3Xd;dk0>pg;>O6=K(Wfa`O% zYcUMkmJFH}4DFGcB~uD#9=>pRW=7d=No$YD&O`F~V%3M{F|=r(zx=%-$97TtmKc>o zaw-!Z%NEKBp1H_y&%off+Z-n6B>OEKc8tC+qFI)T9lhjmY;}t3H#VGRJy31KC5TwB}iM330{^ozFqFktw zXt3DR-3GUpG(9h|@il$u;(oAD=51-D!|E%BUPoT0Cj3@hhtN3+1hw*)`;*1Ac zXMQCl2)pIC8rtsz;&q4K{Jqg~^Y=#1&zJkR{b$Px#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_cpw0nH~_d<09XJ35D*a9kO(L+C{R#9 z(0~y5uqb$dXc!n6`1tt9FlYb(0DZB}tpET332;bRa{vGi!vFvd!vV){sAK>D0!T?j zK~zY`?US)?+b|G@Wgvo=4n0{M40I7~KY(;LyoL_7SBVG@=|co43JuZjp_7LW_TIsI zffz^^!$Ujxp>iaxIF@Mx1v2IaN#uR}`QM53KH~qQ1)neHI~cr!45{9oW~CTv5`)|3gWR37qD=`*rEH*m_IrqsRsLKWDpu|I+|M z=m0!5Ew(r#wt=ut4? zO6_OKz0;ya9|!-=2jxr7jzQpw)|C;sA6PM`ilJvTpU; hStj#7;$6b?UH}Y&pf{7&YgzyR002ovPDHLkV1igeNJanv literal 0 HcmV?d00001 diff --git a/graphics/pokemon/alolan_graveler/front.png b/graphics/pokemon/alolan_graveler/front.png new file mode 100644 index 0000000000000000000000000000000000000000..d2454334b548f456583d4e6f3b810d35a6709585 GIT binary patch literal 889 zcmV-<1BU#GP)Px#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_P*_-afOwdopfET%5D*Zkz_=(dC{R#9 z(0~y5uqb$dXc!n6`1tt9FlYb(01rW2ZU6uP32;bRa{vGi!vFvd!vV){sAK>D0@6uD zK~zY`?UTJ~+&~b=*Pz91MjtkTG#W_(m$xGu3@NOSbA6I-W9Op@XRb~N<_t-1*M=0A zH*j9SMVf#K7sxd(+@(zIXUME{hixP-50DJUv0{Gu&woa<;-3%rOWvl{#2N+kXcgcP zQSWbnvr59siNbi5M3O0Y1pp#({fzdOPpzmR0WQ)2Kz<7-$p?qjUXx#vLgdSXEP;XE zz}V&d60k;L&NDLINdTLo13stl&{qd)nXJ9v9gR) z-$l)*DhXmp3}B@_hph)SkP#uG@leHf0(K;FD<#JrtHPn}a0wjL4dnpdz#2n9Djcil zM`UAPl>9V}*u#241TYZQ&WQWUMrvd9;yj^&3~2YllLPUgA1D@Jq4?<=l@a&!@`6Yg zHUo#>gwR=uZt4jc#5*HyNYVDz1@-tuTc4ycxgREok+9r8jhi;}j3RTWd*CkEEJjw6 z9#wUoGK#qr?^6S;ms2MC8D--hEuwy3`Cct>QhYf_^fIbwRA)EeN2QrTq?-y_8X(|l zq!Y7;n`g5*^6QJViN~xEY!AoulZnmCvmeJ?KflWh%Vrbg(&W|U>E!EVe){@~N9x@H z5)BashsU#%v&r{sJz*fZ2MDcg-wyJAaWk9DZ?2!s*$a9PHn1@JHG6mS>m%EYd74v% z!F@m$P|}mDW(qOkE_e0-5K@s*s!T`J=agyKOW^sNu=lg)8 zQY3J5G9OB{Du}FyZkX2|`QD@51{8)Vrp8F6eAJ><0;fLT6#hlH*!PDa{mxj7k000+sMObuGZ)S9NVRB^vM@&RePDdbiWpW@hE;Mn4q~QPn00?w&PDe*f zL^A*Y002sWDIWj;00d`2O+f$vv5yPy}h*m|NnDy&7`dM zw1Zmi#f!zPDfad$_F__$d(Fk9&Alm{Vq#iBK|$$6v|j)K00Cl4M??UK1szBL00ApW zL_t(|oXyfPZp0uE1yF8)hHB*ki%Ao00gBQmXWOHs%eBk_226TpF$UY~A}KdCSmO^G z;0f`xAqivzS8_Qo1(}=-bp=A3b&X0OxGb{;?`o6*hsaSPVW?5*EsV-# zuL#%Oc>;xC0=}ADBVwM=po;TVt%_002ov JPDHLkV1iVl)O-K{ literal 0 HcmV?d00001 diff --git a/graphics/pokemon/alolan_graveler/normal.pal b/graphics/pokemon/alolan_graveler/normal.pal new file mode 100644 index 0000000000..e477581e89 --- /dev/null +++ b/graphics/pokemon/alolan_graveler/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +80 88 88 +120 128 120 +152 160 160 +48 56 56 +16 16 16 +168 192 184 +40 48 40 +80 80 64 +208 128 16 +248 176 40 +120 128 104 +24 24 24 +248 248 248 +200 48 104 +0 0 0 diff --git a/graphics/pokemon/alolan_graveler/shiny.pal b/graphics/pokemon/alolan_graveler/shiny.pal new file mode 100644 index 0000000000..ec4322ca84 --- /dev/null +++ b/graphics/pokemon/alolan_graveler/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +120 32 0 +152 56 0 +184 88 0 +88 0 0 +16 16 16 +216 144 8 +40 48 40 +80 80 64 +208 128 16 +248 176 40 +120 128 104 +24 24 24 +248 248 248 +200 48 104 +0 0 0 diff --git a/graphics/pokemon/alolan_grimer/back.png b/graphics/pokemon/alolan_grimer/back.png new file mode 100644 index 0000000000000000000000000000000000000000..41165aaa83378c32f0d0e9de54d03d09bf8421c5 GIT binary patch literal 647 zcmV;20(kw2P)Px#1ZP1_K>z@;j|==^1poj5Fi=cXMF6nqu!ykOsMugQcn}Z}=-B9ZNPzhG_?T#z za7Y;N;3&YL5I|6nP>9F?00000037!_k^lez32;bRa{vGi!vFvd!vV){sAK>D0pLkQ zK~zY`?UFrD<3JFGjqHN*98siYb4XW0;=<)BHV|EjWF0>MtxU}!OLW0jG?tsx(9*D1 z-br^de~y{i^+yut>eGo=`H=iRp4oYKoDco0I`Dn}(_eglB!oDI{eF@N(s;jbfIY;) zNs?R{K%5Q%k0-5PL<9bzX!RwI2TFw2^#P8~vjO1Do(}+mZ`u8h@4=EXARmFdT_6C! z6an@E3+Qw+(87a0aJdW2`api3U2l)^^-rG&64(N~`Ug9;)|SjSd^fB#5|t)dLiT~_ zxHXyF23%YcBG{^QNPopfhY=Bt>R*^iAsu(t9@Jf_v;!&~&jR$PV$#K^dPJ$^WhT+@ z1E3U}REmJ_a*lr6gK{QfrBG?9*RgcwVshqBPCI~2)~#OSv$>cGfArY^7r-T`2!2Zo z&~}(%J=5PF1Il_$*$RP=I4*agQl4{Z7p8tOUGw0A05{_5L|EYIrP+^Sfk4z8Foorq zD?PvBeylhc4AkR2<{?u1TRlih#$K7%T!ZT7%+_uQCfmaCMy7-zs7PA=e#ITPJ#d~L zVK3xOFQ_R5kju?|w|f3buPZ3x7-NWdKQ>fEbVQZL<{oBzhdt#Xx%lC&iPx#1ZP1_K>z@;j|==^1poj5Fi=cXMF6nqICxM%plA?CC=d`3Siq1VKrs0D_$XLN za7Y;N;3&YL5I|6nP>9F?0000006KfY=Kufz32;bRa{vGi!vFvd!vV){sAK>D0tZP% zK~zY`?UTQ5oInu9k>CZ!Aap62vr)<%>-D0+q@+xa`l1M38zoJg z){VLLD)I{FCvbR|%yLd-xW!$HNdACb;QKARGqYIt`d{7sfP}=rnGoXXth#6bzcmFPQsLQ*Ci$%T0x+3_ z>SW4tGW6dOsrMR?3bHO>y$aw59j@05c;LhF7T^E_SM|D*;2rx56YyY3b^S{N8K}WF z;Cjo$x~>_JK7gU#FaHAIXN%Kqz}eTpb*ZzYlxfFMxw^X6iR_l*kL3CCXH~B50A816 zxs;9X83B)d+I(PS0Bi;4mp8s~3cFAT7cfu?3Y8UxFe6yJS*b>hd^P~cTTx~GbJ)C} z8q4hgMj}FVN5CgD!T7ZnDF6Tf literal 0 HcmV?d00001 diff --git a/graphics/pokemon/alolan_grimer/icon.png b/graphics/pokemon/alolan_grimer/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..09d83cb95e7b5510ced85c7a56194067873a41ec GIT binary patch literal 486 zcmeAS@N?(olHy`uVBq!ia0vp^3P9|@!VDxk7i7!@QtTz3zOL+#x%ow{v>*5{$pi|C zm$*ih1m~xflqVLYGPwJ=0F6;7OD$3`)-x$=UGfm9grlUu&mAaZ3}iESHE7BMDVB6c zUq=Rpjs4tz5?O(Kg8-ip*Q7bk#l^*Y_wN1w|9|xyuQ_MErhM~yS3Kw2ly7^NM16av z`R&`9t5>t0d1)pkML9Y;W?I%p1NAZ{dAqwXbg;^L0NGrgE{-7;bKXwc=y%vapzSl8 zdbf{GE%UUp^;&vUBVrVPUMo?w5#;7^of4j`ltWxd0=9({q&Vg?I^eFd?&PBZrwJX7?R`Q8hmKuGpPX8&hFyRX9U$d*Qxg> z9rRtJsCB*4;KA8Fa&b?3vfuO?ny!kKZ@gJnzctr`eX$vP?fNer-g>Wnji*agJ-FPg zQ}TtYuH%l*qDonXT_ttTH`TlTl9c#g$!XxQSY$@|B9R%}B$$%h4><7qL_8HY*pqXB zPvXwg`+~E}4~Xok)3z~?c1}GX!hR+z&Qp!U)44$rjF6*2UngFm>zv=)0 literal 0 HcmV?d00001 diff --git a/graphics/pokemon/alolan_grimer/normal.pal b/graphics/pokemon/alolan_grimer/normal.pal new file mode 100644 index 0000000000..d6034f72b6 --- /dev/null +++ b/graphics/pokemon/alolan_grimer/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +56 120 80 +64 160 104 +16 72 40 +16 16 16 +88 192 144 +32 64 48 +248 248 248 +40 88 72 +112 72 24 +240 224 40 +192 160 16 +64 80 144 +80 136 200 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/alolan_grimer/shiny.pal b/graphics/pokemon/alolan_grimer/shiny.pal new file mode 100644 index 0000000000..60251d8f18 --- /dev/null +++ b/graphics/pokemon/alolan_grimer/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +176 136 176 +216 168 216 +96 56 120 +16 16 16 +232 216 232 +120 72 128 +248 248 248 +152 104 152 +112 72 24 +240 224 40 +192 160 16 +64 80 144 +80 136 200 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/alolan_marowak/back.png b/graphics/pokemon/alolan_marowak/back.png new file mode 100644 index 0000000000000000000000000000000000000000..69e99db6a22da6e99fb5af9ec9d4ed10160c5b10 GIT binary patch literal 777 zcmV+k1NQuhP)Px#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_DA=%o;Mkz}@EE9wSXfXH5D@tI_`txp zh>&<#7-(2fP>5i_Krk?1K!_+HAdR*-@Bjb+32;bRa{vGi!vFvd!vV){sAK>D0%A!- zK~zY`-O@2{+CUTsa6H6PH=a?VbZ9Hvd;xs@1d%^LI=F#OVaOFEY9@Mk=+MD%-nvkn zv1Ve_XDe6MhJG*fVwo|E{+FP*ve!TbR9hHCc9Q+P6PyZ4e(7~Sq zHEG?VUK#LW(WIm#gi2!Z5Rl?gNXdti8LtT$I4w%YWhpzvn-Wg|&ncNPo)QTtA(LVd z5JE(qj!8+*E+NB!#w`XVA%-*t^sKOj8pb6F{K6J$Tp?lHq6GM7ZIUeQk=1w{LJ9(m0#3A2q$TAIT+_=bmA}jNsFR8?M@Of9ws8UOcl%S z&5)!maznZjBvnUzdbuIuGTy_Xj2XyF3-as6QXD&B5IS<+$4XwbD1ca(Pw7QSM|mKU zw&7PuCp=GID;aSGkMR#mCm7@Vw@NjAd~*v&%T@O!-f65r`q=02bi2Gc-y59*^_H(; zyZpYN4XPQSU$0iBpugd3?b&u8D0&)Uw)j-jpR53?S)euUCd_(YW|{?H8hS=3wKT$p z%{d@lv+R>b2AC;`n9J8DLUjS|TL4NkeqIQmAM8-6sAp#=rpPS?{yG!j+lw5~kT`l3FMEu+;@<{F-QG=UBFjMf^$lZePDdC_YbS%a z&05_yEFK9Eja&|Z3?uU^?~UX`FSeuBgki-mAM@tJ^xyoT&02ol4~=UKc-tPx#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_DA=%o;Mkz}@EE9wSXfXH5D@tI_`txp zh>&<77%)gccu+`)sDO|#Fi>znP?@qm7XSbN32;bRa{vGi!vFvd!vV){sAK>D0;fqt zK~zY`y_2zy+CUJ7*99)9uu-J6U|s;67l^Yj5Glw+X`CXfQ*@Vfx1f{K#W+fRxl0q# zq(KfTa}qs;wW7>b<~oWK+BYDVe{C=je5Od05t6N)kN+R<%#i;an(_C9Svdey4*;`}lNAQ1TqsHDJfkN|z&>jbJu z2!s)yCc3K17>a110M0J}y!XnXn6P8lPqwI%8b+lq9D3JXDEKh&i2kZ;V6u`GU<)C> zo{fL-PuD#K2*H%`Q^&Sz>6eZ`yx<>urx%wAFi9#iD2QYO%I~0oE}j2uBOe@#v{hz< zI+m?AKxc4qaR+S(Ft!rVs%kvz>+xg?Q2KJQ62PJZpw{}jU3E!8a3U9}fC3tnHuiv- zT+JJ9;SqJV6qEyF@$7azkcQo&PQ97+0suRSZF?1AxxRKMO*B Y1FV2oZ&xgk@c;k-07*qoM6N<$g2rZYCjbBd literal 0 HcmV?d00001 diff --git a/graphics/pokemon/alolan_marowak/icon.png b/graphics/pokemon/alolan_marowak/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3ea2a868c353724056482bf33fe1f3c7edb715f0 GIT binary patch literal 495 zcmV*_YUWBQVq#iBK|yIbeOmwk00Cl4M??UK1szBL009$8 zL_t(|oYm65Z-gKe2kZh_?NTRtWKNiGuWPxab+pK3SDw^y;TjrkE)|fy(m4 z*x3hL`7$y_{eT=tRSgr;woeewpNDHkmwa{?*>YAXLY3Tuq(+%!88HL)6B7`1CdGp9 zD;h-BimtM7XC&|Z6OjeySi6x|-h&=ViO0zXyl*>{V~O3VkhY>ja*+7G1X2N@^@gX% zzjylug4^2C@E@x=^ae~U=#PS_4`7V)7)%2PFeb2I3b&%MV3vmu3uX&^>|jD4JDAYN l4NUCg1}65=?eCxa_yz-#m7O%YfQ|qF002ovPDHLkV1ic}&qe?M literal 0 HcmV?d00001 diff --git a/graphics/pokemon/alolan_marowak/normal.pal b/graphics/pokemon/alolan_marowak/normal.pal new file mode 100644 index 0000000000..0c57bcfa7d --- /dev/null +++ b/graphics/pokemon/alolan_marowak/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +40 216 176 +128 224 216 +160 248 240 +24 168 136 +88 88 80 +16 16 16 +248 248 248 +192 192 184 +136 144 120 +32 24 48 +72 64 120 +80 72 136 +168 128 144 +48 48 80 +112 64 80 diff --git a/graphics/pokemon/alolan_marowak/shiny.pal b/graphics/pokemon/alolan_marowak/shiny.pal new file mode 100644 index 0000000000..2b7d10ef9c --- /dev/null +++ b/graphics/pokemon/alolan_marowak/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +40 216 176 +128 224 216 +160 248 240 +24 168 136 +88 88 80 +16 16 16 +248 248 248 +192 192 184 +136 144 120 +88 24 104 +88 80 80 +136 96 192 +64 48 48 +96 64 136 +40 32 32 diff --git a/graphics/pokemon/alolan_meowth/back.png b/graphics/pokemon/alolan_meowth/back.png new file mode 100644 index 0000000000000000000000000000000000000000..84eafdae027197ea54f679aafe7d77d5d8f417c5 GIT binary patch literal 661 zcmV;G0&4wPx#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_C^%>k5D;*X&>$!{m{2f4XrS=$@ZiWO zFeq5afH+V%kbp?Y00000000000N&hBdH?_b32;bRa{vGi!vFvd!vV){sAK>D0q#je zK~zY`<&-;a+%OP^sR2^B(*sZ~aRCB(G!y|HAjk;`4YaCZt0lAwkA^@h5 z-}XenZChx>xlv zprw_vI0Vr2ZDou(21Xt7M}VN_ro7R3&?ZSt0L}nAobWTar*t3kI0S%gE$kVPhfaZv zw$wfcGRi7PEOl0=KvDI)6BtWOL!%5AvNqYtw1$>BJI*YJFa9whC|MP( z&0pU8M-Es~a1$SW2re-chIetZ1q|{osKS#=YFJEepMa~sa-dA|;5R_JZvvi(dEiY@ z6w5N;>i>A}R4R}eJ?nsT56)dypbT&6z-$7n70O9qT!EXjyPPkw=6R|>=QY>(?3|P$ z5`&E1YGVctoal(kmbF-!zFvTz6~Px#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_Ku}l^5D<`{xF9Gvm{2fac!2Qm@ZiWO zcz|%ofH<(QxbX1s000000000006PchumAu632;bRa{vGi!vFvd!vV){sAK>D0qsdd zK~zY`?Ub>K+dvS8SKD2uz2#g>BO_y6t%ht0cS27P2p7^>g1z1@_KaS@Wk@5$buLr- zASU?bGLn37u||E08-$zrJpar;BZ-grKO+d~M@^<>qzMSJNnoB|0f;7mLWf_4E}_VI zg#z@$bEKh|0`fL_d_LNF4pYD-`TpxmmM?!65fA*HJsyr5bvf~Xm{*o6ICLyP_QYtv z9gY=Z$pK`6Mx+XeXt*W=BecU$hvW*3440@7D+F|;5psqn7IAn82=r|ifs(OxeU|Dd zoiPe(y>(Q6z`d5NgI3@tkI}#wkQlH}!RT}{{>tc3UGZ;d2Mb8>A;bFFr)lEb%fg7&LC1+hACsGI?`z~ zaza)LO{Y*9p<*}VtjaX`NJ~?eDlsPkQ9q_h&_)sj7Xu)X&%OclW=-V>v-?fAEeoU_ z&>4N_>mMvY2jMzk;r)pNWaq<-T3FQ0mIXE)P${uE?|A_4<0?y0wG)6yB8izy@%*Pb z@nb|HEro=YuetX(P&7i?Wh5|W-L*}3Z7FlmL#%4Qqb*gR_q>Z@x%aO?XW@Ore?R2% u(h0-4d71bOUTzNd`E_n!4!ckJ-=MI!H2C^Bv8Z_mB6id3J zuOkD)#(wTUiL5}rL4Z$)Yto$N>gwvfd$;`m|G&8S?2~cZ#a_ryt+0Px#1ZP1_K>z@;j|==^1poj5Fi=cXMF6nqcu0VVI7s;T_z(~f@Q~1mpqSuTn82XO zATYq-xacr|;PBumz@QKS0000001~Ffm;e9(32;bRa{vGi!vFvd!vV){sAK>D0?bK7 zK~zY`)s(+$+dve@Wg|NG@Zm;j3~or`*~r{%*@s*~vlL8cM?!my!r?K{LG30GO>gK> z=n%AZ=+Jo07Ig@OLZJ7*^xY4|PAhxQcS!8}e(t?{_s-9H+CuGZ?*9IM=;Dobvp1bi z=SO6?$v>M)y*nCi^?~Tt1BcpX?CfnV(X4z>QU@>{elu{m3Q!BIXP6JSXE+#b&+zJb zeGSXy4;`S@uOpgEDX@FCA9?Z_bKbOVs0kA>1@?R&$oE5Dw=J1f7qO!5Ez`SQVs zQqq5Jy5Xd7jn#G#LXQE5=kk`X^ls3{;!%jkJ@Rf;Bd+vzlosFCfxT<@O{oaz#OL(A z@6z3Mpi$yzuPjU1N~xTNgsxw=xF)!iy5X6l02=zkM;VBxfM253mmw%dhE6)`5BS!>Pw@Bt9F)iL}*M}Gg^5v`EM27o-`&Kv

snDs>QL}7j3g2wr3=$Ufwtiz9@hk-$~$JZq9NtFb^yC!+-;E7l$1| z!R8tDIHs}r<=A8p2kJyI9O7PH6Siyz!_f`khB#0i@Z*8{&!N!)K;{J0jicT|u4ion zfD=5td^?FxCX4~`DU2fJXP9vALc| z5>P%%D4irp*HeHEvq%H1O(L#`SB7$$oVuz`YFx%(VP>Y=ch|}1o_iu6RiM}67Yw!F zj~;KW&>6uH>&ZbF$fPWB`=^A)6BBF{JNn~+Wd|y4;?5A6$aGLHgrKyifT3k`xxio| zwbg!IMx}XI0kCF(MddGaIdGe{zFTO6uR2!w>ce8wBzju1tiJ}N+Px#1ZP1_K>z@;j|==^1poj5Fi=cXMF6nq5J)J9I7s;T_z(~f@Q~1mpqSuTm_VRt zATYpKz>qM2;PBumz@QKS000000Dk@Tq5uE@32;bRa{vGi!vFvd!vV){sAK>D0`5sf zK~zY`)s!)7+fWe4Wuq_fqST2=hhkzpq#2Bb=LDaXh{i)gM21YkMtg(9Bcq_hb2ft@ zK1}xF&5$Li9lAS9FqA;`U3&NA*m4@VQ-}UH-~V^-&gVND|F3eQ^kF4n)tV=(h`d#A zdMA6?K)KNIJnuBqH@)L`1bExoK%%qEBB1?Jxtj$v06<=OC)vP-QXqv_$*N)Q4-|@a zGZQe(9`|lXL*@2u+x?~!f0n#+B(n7a>?Fw%elTI-Y>YM|;n zd!~_Ah0F8w!!8m~hs#&nR!RIQy6^Ud{Oljd?Ij|&LH;m`7#Q19^2&G9M578AY2C~H z4!Kt}s}zxMRNd$W;B@`}AQ#tPcIsQ>EwTjzoSqP{HwW5lmK{aonyAce?|4IWW-XRa z+Z&d>LqNO9nYzZAbx}y3$ZZB!APe?oH1=!FGkHzlmwyba?YJQmt_p5FuX`X%C5HyU zisp$$s;lmh+GRpuH^dr`(;-{?hCHX%M+@t>p<qV$qC0DusUV4 zE0B`x>lwcQ$<_OT_fubyKk)6I08AYC;he8iNoizr$bb(%%7hja9GGs_?NRJ2=SKhD#TCvWyZ+Gt3dUL zaAH#GJQPnA&cpE06=hX;UuCy05Cjm*%Q@FUdVs{wYOjFM zN&6alooo5Gkg~NT60t?TpK*-Mz1D0w#$dHFO2ddFvJPNlpg`rorxC)7e%bW!3(1VF)3ac zEr=1KIqEP)Px#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_a8PjQ*!Zxh$fzi&xKPLt5DD0)I(F zK~zY`)s(xg;xG_~lLp!tODWRXk)U=g1!Mg1*xFOA6+7DNl<4*{=XB zxG(|G%^Md?p93JHi+-xEd#2S)hfT_{W>EMn0<0eI`sr?(#S~JO0ERTy&e}mA;?ztG z4s4d+W&kQ8MLPh{D**c$QS)}J#i4ReD?anl>UK!-;9yrimyQ0NfEDR(e%_!en*VLO0`Q6R*7v58 z0K^c1W!2qZ=VrUmn;QaT5rH0V?!M-h1`F0piD;p5EBBz5q6kM&IS;xAL@4wr`)~ok z2loj`*`rd;HUiLngvTiaxcu2Ms&**V$`!{5+=GMt-*0?b6x~K(b@UN(40p*1Kq*y+ zqIVIW(-HeTA<76%XtQ{g3gM#7DNKJ*=VGR zG}Dyi6X1jMG>@sd#j*pLmVlPS)Z{ep38)og!AEnNMTjX%g&)0t-@{O3KKf?V<*tN& z*1Lri>X7QrP}2`dj6kj8`r*{Hsi(1-(@C8&*>VD6mVWhc9IbV7Ah+nLREb>qA@HWs z3dAbmMqgh56IWoZ&3>3|&ZmGU>aae{3ozMHR&y1H-vd1Dgkb&ISkvn69kA#0M`^QX kAVt9P!Ot%HDVAmb0JZ28YoW4hK>z>%07*qoM6N<$g4@?^B>(^b literal 0 HcmV?d00001 diff --git a/graphics/pokemon/alolan_ninetales/front.png b/graphics/pokemon/alolan_ninetales/front.png new file mode 100644 index 0000000000000000000000000000000000000000..22ae9d2c931abc281d59df4d1dd1676692411171 GIT binary patch literal 1012 zcmVPx#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_SYU9_@bH+xxF~q2NTA3N5D<`%kofrc z5I}Iq$jI>U@Bjb+00000000000Pnf@OaK4?32;bRa{vGi!vFvd!vV){sAK>D15HUp zK~zY`m6OeG+d2@1>5a6t=sLGs4gn=wiHIH`b%17hn=(Lmikvb+R&I)030b;;Ok{h} zMb`yVz)#sT`l%f^PLVMTNSbfX91cnGvWUii$&-4P84(#~_SR2Q;u!C*rxyUxpI$~$ z52)^0?GPg=Wluzr?7{7j^h(j=81Den6DiYYfp=0G(bN#&#`vK$pVE_o5f zfolmukri}UFUOC|pQUl$Z?N$eF(`Ooufs$*v!DWON`NA!f~M}c7BB?zXceIc|=p^K3?#)mj0IFu0thm zi7muwnwrE~dvWxct8b}Xu|nvpCAU=vT4Pk!zPIInDXLk8CE#a?HLB?a9|k>bfpb(7 zHQp^4a2^6v`)|8~sr_cl6#)MaGU6IQBivW1tnG%G%)Z$RU%`X(oyV{dqe-HUPrH*E zoz1LuaOmiD3xrUZkW#wqpp&!NDF`^w-A*{4^JdE)AaihqCiWU){h%G@6e&6$02!a1 zwm>rM1U6eq-FqaH(ACVI7nF|0uoV(FX|e^xGd?zQEQ0GEKrXVA4eOA-XU8M2L z%$)BJRHz3;<@4|pTo`B21Po~gd^rHvtvkQehJkr2!&Z^xt0e}T9(P8}GpPZ`OM{FjwwPT!2hVdnPoEoUo&PIa8L?N22KAUf-)a~Jj74}2G$wKEUXw1;Q*|v zdc6=qDk;Cg_nVA;J&3ReM9G$LILZOwVs23nF5Mb$0P5uixX*b4L+~dC{BPiHor|pq z+P9zs0_aui2k~bFb>mP7AaE{!8u$s|_5D*xj?g!E=-}&T04N9bmpyq5r!95+1fJ3E if&JQjxLmw6g!l!;88(%b3|TS&0000zqbAW literal 0 HcmV?d00001 diff --git a/graphics/pokemon/alolan_ninetales/icon.png b/graphics/pokemon/alolan_ninetales/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..71ac99d5a723e34befc7fd7f47c9d787b9bde132 GIT binary patch literal 601 zcmV-f0;c_mP)y}h*m|NnDy&7`dM zw1Zmi#f!zPDfad$_F__$d(Fk9&Alm{Vq#iBK|$$6v|j)K00Cl4M??UK1szBL00DhT zL_t(|oXwNFj)fo)hIxZ|n9)`WrF9FO79JjGJtTNq*#W$rO}5@OF~mP}{rME)Zy$&s zpHZZzkU@g1XHx+;7BZhL3=(48J;sEx1|-*g!8oFIxn*pq;)aN$Y^?x$lS8i&yPQf6 zXmUOf5u(GI^PajY5DvK&?Ym)KNKtRwSV=2fmxXAtkZaLS>A|z0bSgy>ccISsNo9?h z+w3%RNo9hGNtPVQnbV0@w5J8YLRbvq<-nU%FcfZKU&zlG=n`NxlS5~3KWDSzfH9xK z=B-FFNqI$t7n=-sQNdQR%U8xB{(fiw>4|O9b6*Cg?80x`w*Vs&FPQKK2G&sm9(T*Y zh^@nZKMX3sz{q%T+zCwFHRFL_7cj4x@zBNRlET1Lft6P)%D_xPEu@c|D!}-l6eG~a zsK69qAz21FfCPx#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_5D*YBICvl^I9Mofm{_<_XsC#w*bsow z`1tq`xbP52sIaiGKuDmd$mjq706Cx7Gynhq32;bRa{vGi!vFvd!vV){sAK>D0su)w zK~zY`?US*N+b|4IZ?vlR%OA34mM92bh&I9$@Mha?nlm|5P20Fm`DQ+Tb4^YmJ^8ip{>vJwg_r6J} znA=jMe3j?}i^^c*l@H7!Vt-xX!3X9V;loZnk*?98LX~=L{x>0n_ya_gTfRg14GaJP N002ovPDHLkV1lBd9F+h7 literal 0 HcmV?d00001 diff --git a/graphics/pokemon/alolan_persian/front.png b/graphics/pokemon/alolan_persian/front.png new file mode 100644 index 0000000000000000000000000000000000000000..83bfb2dc44e77158c5375e04a075775012303ef4 GIT binary patch literal 715 zcmV;+0yO=JP)Px#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_5D*YRKu{nkI6zQXV0eINaFCd&un>UI z`1tq`xbP52sIaiGSXgklz|a5y06MelqW}N^32;bRa{vGi!vFvd!vV){sAK>D0whU9 zK~zY`)s;bx(=Zf<Jkk2&+=0zAx|p-}AFm{YQ(frYGlRV7=SK_hL9^YtP^iaLhuLA%g7Jv_Ui|`wZ3Z$X%_yu8YE18F7 zRRdptMqsFi9B8EizI~6ts0t<+@Nob6*MkP68gh+#%ax{}*7qdQ$V`Kc62Bwx2U1Gp z8m+~%0L=4`;KCF<2z-iw1FTtXGN6{qJMO%tBB-ETf>FeI_#j{{pI(|L;tFa+AKEaD zRISj@a|mjXBnR-5Md}>pDVTc#s0MG32I>HhS1H`lz?6XYMqUF<*sx4<0z8s(BGGp< zU`Xm^ToQ5uNHGJV#>qJipeX@vb5U#)Ab4;W=ZvR4Z$o@uS_Z_4o3$@3(`CT*WCg%q z^*06V5rA9*XtPJmh#Ez}pNTr{Q||&Wo{gqJCDa*+MwL&2?g)&si|?xR{0L(S7{)Mc zLr^d|Kt2bB2}l*F5yC1Og18#myBsj$0x+AMK>CaBnQ6;Ro*-8g2k?-ONOuD3@_g2 xq7%ybW@Wo#1@UtxC`OO+_u$AZ$Nu4}s=p4l=}J9i*t`G$002ovPDHLkV1kXNG^PLm literal 0 HcmV?d00001 diff --git a/graphics/pokemon/alolan_persian/icon.png b/graphics/pokemon/alolan_persian/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..75348250d540167e73e477483b4a6d22335e1b28 GIT binary patch literal 456 zcmeAS@N?(olHy`uVBq!ia0vp^3P9|@!VDxk7i7!@QtTz3zOL+#x%ov+)XS@mo&gGp zm$*ih1m~xflqVLYGPwJ=0F6;7OD$3`)-x$=UGfm9grlUu&mAaZ3}iESHE7BMDVB6c zUq=Rpjs4tz5?O(Kg8-ip*Q7bk)z#H|_ip+B|9^4u*(GbfZE22rceMNH8qIItG`}SU zO{qS6bjjJhnsbtpq8uF^U%G6G2kK=^@^*J&=wOxg0CL`Vx;TbZ%(*(rk?)X#fa^|1 zzq`(V^n9~=3R4$N|F9%)Z_gKoEngU9R~lUji=Cyh`djJ`gTukEu1|Z$nPI3VRd=z6 zQH$}{zl+ln=Q^yI`bc6GYe`sUS17ZAOoo{D+7yumYeU}zX>7MXV{WSa_Ci{H)ZB** zJKf8VJZ;#-WV$k`^D!g0^Asmbx3CX-%vZ%2PFNcG<}okb?o+hx)uVbJo+-OOm;Slv zX7tPNSN3NE{%b#3W;SFWdysnQ|JHjPMtKHYo8~cGnXH>SVdZl1$4ZUu27lEm@2uxa v4nCTmc%)yaXEulNkBPx#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_kXR`Aut*RP5ZH(ykXRsaC@4@UAgE|S zh)6gPK!Eu8_!w}=fM{6g*suTq0C!r~V*mgE32;bRa{vGi!vFvd!vV){sAK>D0sBcr zK~zY`)swMG13?gmHv~*2cyYx#t6&k3r~$E1++#6yiX*KcMC?@5B!!KFUa!R4!aPLU zV4lHNLeiwpJ%h7%7j@>iwbg;ZhX1?&pP9X5f36(o(5mNzkV`gTTL@9I5!=eO6IB%v z*?l-lsn(T{nLu8tn%5|b%#a)hz*`k1OA~U%^Da{sa=swQxc0n;P^33#UGl^NGU`Q~ z0sDhmcfKu1MimT9@wr9aA%NMA@mPv2F1RY9Cb&`&5Kp(|z<-IFF#C%MuxP@%CC31` zLdZJ&O6)WMfJ+RRJ5mA=Ay$KXICF?NrWO(sT+#7kfXfGJAzfFv8#;23j*>pMFweju zI$8%X1613`7RwScN(um7O#p0RLL6QLT|XJUrUL?)KGl%{^bH(L)*}LPCc2|zq8S}( zEVYXSNXk8DWDs?R0D%Fv!;druDi~nPyBK(;04rcX{|3BJoh@MCDFvMU2H-X5W41W9 z0+q#4|J?#~3!{E{n%P75wAC(`hf~XxzV8k~8xZ(+!?0ojwEw(0Lrr#G!!R8GL^g4c z`(accKLC6i2O%ZakX}giaQ3|_1mx$ymj$_uG(g^mTN2Sd!8+TUV7*CSs69P4^4APg zq8G?zr+_@s^;-&8>Bvq|67cG0wFW16=H>RlK=n!07*qo IM6N<$g077di~s-t literal 0 HcmV?d00001 diff --git a/graphics/pokemon/alolan_raichu/front.png b/graphics/pokemon/alolan_raichu/front.png new file mode 100644 index 0000000000000000000000000000000000000000..20c88523f6fc66cf3d1ab747d45008355cc8df0d GIT binary patch literal 890 zcmV-=1BLvFP)Px#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_U|=Bl@IVj{5a_rNkXRs?I3Qps5a5U? zuvj1vK!Eu8_!w}=fM{6g*suTq0B6}Dga7~l32;bRa{vGi!vFvd!vV){sAK>D0@F!E zK~zY`eU&j!+dve@FS@}~CF0}@j+uCSC{sn}>f z4=gt3vbq64joG`s~Lcx6;J>iorI0V zYY_mpOrqcKOTZ!RBCtqM&u5JFZDRxxgE&%Wtd59dZ~%b&e58QSl-5i-fcxh{K0P1S zFfiM@p91)H!467v>(eg*T!=@z1Q@>fxWi5#mjbUC+hJcALu{`ESYRLg5qpmo4oU%O z{{dKRhy~#0%9P|NA$TwyuNUN-D~l^)$oWYaw(>3>H78g5Jh3-T6A*si<)bK)4tR6C zk*@_LaajvozoLau~))9qGUQ(qfSUoZ zbQY;XiMtA5+XQfZSG?`Y2BDg7Hw7T?C!YhyR04J*5Ac^5Ka~+&2~3qU$XgQ6 zfJ(qt0G!o9N$g#Bg;MG`8h{>YRE62o+wl61UN5=}c|6ix3tu}74dgRmp_)UaH}T2CD)Cmn)v zmLIJ+4%DkBdJhx~itoQO)8~N6s)_E@jDOEcRc|jD2(Fe(y17b1*h~iC9~uR9b261- Q6951J07*qoM6N<$f_3b7BLDyZ literal 0 HcmV?d00001 diff --git a/graphics/pokemon/alolan_raichu/icon.png b/graphics/pokemon/alolan_raichu/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..d005cf7e1de3978f2cf02d9ec165b6031cc2ce1c GIT binary patch literal 577 zcmV-H0>1r;P)y}h*m|NnDy&7`dM zw1Zmi#f!zPDfad$_F__$d(Fk9&Alm{Vq#iBK|$$6v|j)K00Cl4M??UK1szBL00Cu5 zL_t(|oW+x|Zi7G!hVKnL^ik;0iMdlBmCPKp$9OWdRC zfpb&0dI5jj@3VgyrT!M+65xjvoDzjSCZL*5uoED>vlTke3|4|0qOW@)K{U3n7cfph zDkjjM?i7e5ngxUJ&xlS+KKe=m(0HhD8&h_d^BZ=!kDnD>&IMtqe>LF&w_S#MwEzXX zhg=sfNS_Rc~iUcx^J$n_+Q;N9w5ESUdLyqsj7K%yugMGX}KSaO(v%STN#oE!VehYB#q@HpO!WK{bPIs3#0J{zwN-c P00000NkvXXu0mjfmB{hb literal 0 HcmV?d00001 diff --git a/graphics/pokemon/alolan_raichu/normal.pal b/graphics/pokemon/alolan_raichu/normal.pal new file mode 100644 index 0000000000..54ce683465 --- /dev/null +++ b/graphics/pokemon/alolan_raichu/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +96 96 32 +248 240 64 +16 16 16 +232 184 16 +144 88 32 +152 56 32 +96 40 16 +224 136 40 +176 88 32 +16 64 128 +248 248 248 +24 112 200 +128 104 88 +232 216 176 +0 0 0 diff --git a/graphics/pokemon/alolan_raichu/shiny.pal b/graphics/pokemon/alolan_raichu/shiny.pal new file mode 100644 index 0000000000..97f9a0451b --- /dev/null +++ b/graphics/pokemon/alolan_raichu/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +144 88 40 +248 176 72 +16 16 16 +216 136 32 +144 88 32 +112 40 40 +80 40 32 +168 104 64 +136 72 56 +16 64 128 +248 248 248 +24 112 200 +128 104 88 +232 216 176 +0 0 0 diff --git a/graphics/pokemon/alolan_raticate/back.png b/graphics/pokemon/alolan_raticate/back.png new file mode 100644 index 0000000000000000000000000000000000000000..7ea9895e56ac95bf1c5bf77f312f84c880a8de3c GIT binary patch literal 685 zcmV;e0#f~nP)Px#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_U?3UfU~phin1E=AI7o0D0tQJ$ zK~zY`?UX;Sn=ll`4MS14m`JYPMuud9;IO*2y zT_wTc{(R2CwqPIi-zq*a{%@eXUr%lr@l)96X`_nrPW`jY_8m@lucelvQ8@Z^mf!bN zuTr64BqS9MakL7w1jzD^vs{%dl2R`~GT3msk;>1v5@)GZ>Iraw*5%rlrNsY>MEBGF z78*606{t4g^XviDR1U!3v+b+X7J=nLiwZR=`bZL}y~E%gup}{BQi3BO@Rps3&4vVg zgk+=$vC_UO|2+aiA8T=NfDiFEkhE(AmIi&DCEYJ{n9NIuZo(AFY!#xQuk^QkdQe6S z2o(sV<6yEiV;(xZjYDr0I

b0|_;bIiN&O3Zf1}%u|+Ut3|PeTk40M&*GVY*!8em zZy_jSY$yW>)YM(I-X63-l))`St<%dMcqafx@DA83R4!KFOXdMwD1Y;U*IiuZ0Ne{N zunR~)OMvO7-{DTX5G{qo=ZxKX3jmux2Efa609w0-J%+&ZXn_NyfKI~A;3cO;JOU=S z9=9GnVvaz4a8NmI7KWGyOsR|Gsq}{$0hn9uR_Pg#^Z;gTH9tBm0K0)f<~@AMbb0@P z)o8=jTwXwUA^#QF*bLL%LOxJ8o(e-+`Q7-N3`bzF$s TTA5~u00000NkvXXu0mjflZ+?e literal 0 HcmV?d00001 diff --git a/graphics/pokemon/alolan_raticate/front.png b/graphics/pokemon/alolan_raticate/front.png new file mode 100644 index 0000000000000000000000000000000000000000..509c47662da78d5c350a99e5c6a89f7e56d6aa32 GIT binary patch literal 821 zcmV-51Iqk~P)Px#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_C@3Hh5D-vUP;f{{m|$2yKsab%VCdM$ zxS*KOC@}c=_^`0JSSTm}000000Mkd&W&i*H32;bRa{vGi!vFvd!vV){sAK>D0**;U zK~zY`?UXTdn=ll|F$-%jNv`cgMH-vyMATz%4|nU(oYlR!r5STxBvyv#X=MSeUGo8Q zxp?kJ=+^JjCmC>TaveM6Z{OMG|KtCjo{*hq{a^Xr=Onbh{1Fh@OVde!z{IB)BfzCc z=v)NUKbi!ThGQT|oJo+-DGd=C2RQEg#N3H`P5tZ%AX+9{p9V>mQ8ETt=hM~kf<4iM z`#D|Fl_fI9=yc!Zm=Ijuq}2CmT6{;q1aLk8bMCk)sPxtCCcRQ`IzYfcxa!&f#qHZ) zS5Pzd#SY37>UxN1#1ANMesTd#WB}Wv*UHZKxI#ck4vKTm*s7a@fG)xXAzASMNE4YxLL9QcQ>1pol*Kh@t5BDad1ssN7baN6z6RK642LwDU)w!T{cs<^h)(C*ha%0ly$^s}qA-FK)Hgs9+TQy?;rAwviC&Xp zl|W<@keI7#0OC5oEaG~(N?xe70dU%+g?a~^e`6nWvZQk%Rb&zfX{8=o@JR5EEzNr_ zxWri%xo)&B2Y{>NcZ@AqwjjJI4dA~-U_As#d6F4m!5A*M#uhN5d{m*Dofs3fyo_~( zei7?(*P<7CHS6_(7=MZd9v?54^nUiKu$q#C<9B9DEVJy-Z{z3Aq1pD{wl1DO z3Dwv~Z8t{DUy}h*m|NnDy&7`dM zw1Zmi#f!zPDfad$_F__$d(Fk9&Alm{Vq#iBK|$$6v|j)K00Cl4M??UK1szBL00ACJ zL_t(|oYj)CZp0uAhVuppbw8fr#Bkg3ELA1OM%4}3%ER2FRqAM5A;E_0Bo16MRqE2R zApiU}*nGqArxzY#6_3IzBAXO;fsEnJNr*$$+8_;SwJ4{wKIy1YEcBAj=HsNzpu!@Q zn|(`n%Fn1Qt|?#cO4f~hwg~C$?8UmQQL4^@CGylA#@d@BXf01bx)7^Z=N w5rKh;7q-OE#*rg2QninT`5>U(cmIZuZ`udcEWoWO=>Px#07*qoM6N<$f|dc(O8@`> literal 0 HcmV?d00001 diff --git a/graphics/pokemon/alolan_raticate/normal.pal b/graphics/pokemon/alolan_raticate/normal.pal new file mode 100644 index 0000000000..4f5d144e3b --- /dev/null +++ b/graphics/pokemon/alolan_raticate/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +40 40 32 +16 16 16 +80 88 80 +112 72 72 +152 96 88 +64 64 56 +104 96 96 +232 216 200 +184 160 152 +208 40 48 +248 248 248 +176 176 184 +88 40 40 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/alolan_raticate/shiny.pal b/graphics/pokemon/alolan_raticate/shiny.pal new file mode 100644 index 0000000000..02504c2696 --- /dev/null +++ b/graphics/pokemon/alolan_raticate/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +96 32 40 +16 16 16 +184 80 96 +112 96 80 +152 128 104 +136 56 72 +112 88 88 +232 216 200 +184 152 144 +208 40 48 +248 248 248 +176 176 184 +88 40 40 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/alolan_rattata/back.png b/graphics/pokemon/alolan_rattata/back.png new file mode 100644 index 0000000000000000000000000000000000000000..3ad8eb28f28a562bd646a22cb12b1a459d8c02ec GIT binary patch literal 667 zcmV;M0%ZM(P)Px#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_U?3>KP*@NU5QsQPaDb4IsG#uh@VE#F zuwYowpqSt|IEXkf00000000000E$GD0rW{k zK~zY`?UcQ4+%OEsZRo}hqR&f!EXVi(?321zHkWLDn?B10d4U*thyyYNE%Hz$^pLQRaFnvTfra~O!Il{nb)+mv}AJS_i)C_i@_;0&H(ph0$#qb-2C zf(Hhi_wNC~Q;iyI38CXH|iac_FH4t1TkF6^V6XjxktGkgN16|hB-qp|Fi)NE*Wc`Ric35}I1 zH8@MBJe856hQ15kqV}1EWk&8#I1B&#zG<^iryba(ekW0tc91 z%~~Gqb8&L`X%Z6d=9iBpO+On6=x7ive3~!UDi0x803?KT@aHuTp&4uZ1w+K+c4Ymx z1&|OJ%=P)Px#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_FgP$^XkZW!5J*T!aDb4IsG#uh@VE#F zxR`j@$e`djIDlwK00000000000PeFy0RR9132;bRa{vGi!vFvd!vV){sAK>D0hmcd zK~zY`?US)i!!QtrV?}Hk8aD&#=8G3Lx5v_MxCYd{s51k+KnHjSCMZj?p-i@T3Dk+G z55+l!0mbf$g!&JOlK<1)`OhUe>YpnAbqk0qe`V!ifaOsj2XAo@u^wDQp68$;Rw7*% z075Qd5Cd)jKwsYIL3Bt0;Ob7Rh|iz{?hgXONCJk64ZTke|$f!vXl2V_4jHbf4iA3*aSz{}MdgmcY)+&+M6wMKMy z{0#(-ak9>KAB7qE$VvzWfrT+fdke=QAP4zMezy*+5A1dTXO;qp0I74ZAfN&+$z#2s zwoSX4)|QYx&|AB$YE@R-+KS5fsCvLI*(RB@&W_xM9(i!>G79>wZG8tB+^Qh~&1^>A zWFGQa=_??0M-wc-{KtF-foOsS=o3wyozUKzxrzYus+xdAjO;y^29bc+Z;=!RDRM9| zpt9X)=ZgrCy|+HXWZESeP&#W=$GOi)iL`s4H8YG(xyRDvsJ~E>d;#ZUYADJ#puPYA N002ovPDHLkV1hB?>TCc2 literal 0 HcmV?d00001 diff --git a/graphics/pokemon/alolan_rattata/icon.png b/graphics/pokemon/alolan_rattata/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..b13e1e9bb949831a00fdca3ca756bc14cd5b1f55 GIT binary patch literal 448 zcmeAS@N?(olHy`uVBq!ia0vp^3P9|@!VDxk7i7!@QtTz3zOL+#x%ovcjn;FzNd`E_n!4!ckJ-=MI!H2C^Bv8Z_mB6id3J zuOkD)#(wTUiL5}rL4Z$)Yto$N>gwvfd$;`m|G&8S?2iR*vG8M*XcV@`~F}iM}vuzd1Q@DR;y~C-%fNcAk*v9KqJU<@wPw($BchH@MrGzM(~Ts_2e{ z6T(wE_#ZXttPN*+>{PIDYJw#%!vW1HF|7Ixwf445=kG8Ieel1dc6}k=&0CiifA#69 zNM>!5JER(_eQL_{r%x9$PS(7=naAJn+OblG?^pSw7tN8oeCtvv)0DH*=h<^P&-yLu z7I9L~r>*XcUXRWi)!7ENH(C|1A5iSsvaH>JHze^^zWgDR##IJfe2G@}T?P}aFLxUp l?f0DV+lnjr&xildk4yWwOzF+3I}Zw622WQ%mvv4FO#mS}u7dyo literal 0 HcmV?d00001 diff --git a/graphics/pokemon/alolan_rattata/normal.pal b/graphics/pokemon/alolan_rattata/normal.pal new file mode 100644 index 0000000000..59134847f1 --- /dev/null +++ b/graphics/pokemon/alolan_rattata/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 56 48 +96 104 96 +16 16 16 +72 72 72 +112 128 144 +144 168 160 +240 240 240 +184 8 8 +184 152 120 +216 200 160 +224 56 56 +128 104 72 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/alolan_rattata/shiny.pal b/graphics/pokemon/alolan_rattata/shiny.pal new file mode 100644 index 0000000000..07115520ab --- /dev/null +++ b/graphics/pokemon/alolan_rattata/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +96 32 40 +192 80 88 +16 16 16 +136 56 72 +112 128 144 +144 168 160 +240 240 240 +184 8 8 +176 96 88 +208 160 152 +224 56 56 +136 56 48 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/alolan_sandshrew/back.png b/graphics/pokemon/alolan_sandshrew/back.png new file mode 100644 index 0000000000000000000000000000000000000000..1e09ba38b6cdb50aeb0f5fd378ed8b8b9d2007cd GIT binary patch literal 649 zcmV;40(Sk0P)Px#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_P>7f?NO1W0_^{aEfUw9A5D*YJcoD0pdwS zK~zY`?UOx@+b|G?WfiJJLUfTTB19uVO8Wxwjt(${o@?8I1mqU!bC0Ch8|+>#L((Rd z#OecN2arH;KEC-Qt2g_v&AzK@YwfDPfmSWi&}q8{C>jXr*wXniz(l0Rp{HR5XrB%w zG5Wzj25Qn&?qca6rW`zsFS5t7lpZ;Tb^>hk?j{4a zmjFlWgn*kf(BA{1GGO4ka{_#TtPZ5^vV>eObE-2C{}RPzU}D3VOA!Kii^YYQMAGn_i-2O8HX{R9 z+4fSG3&K&SiyPZghFAyQI-LL;B2DFCG%iM$#BU+G@SAg)v5BE{u!}LgTuSKE;$2+D zC8>p@LHqPx#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_P>7f?NO1W0_^{aEfUw9A5D*YJc!+pl zD0s-wz>xU(sOaFZ$k5mT0000001^V|xBvhE32;bRa{vGi!vFvd!vV){sAK>D0kBC# zK~zY`?b5MM!!QsAU@Jp*OL6x^X@w9Q1-cf_Wj6Q%BQ1$R6(buX0#z_0W)=pkI|ED% z49E|_!n<%uCmOpu61QadKb>=#j|X6z6r2GMClfyhH#Uzd)No5wLA%ciQ=3~ z2?s&I>jII5Kq@3io(zi+=J7=g8Kwfcd zf&7?&qd|0EVE literal 0 HcmV?d00001 diff --git a/graphics/pokemon/alolan_sandshrew/icon.png b/graphics/pokemon/alolan_sandshrew/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..a1cc049bdb95d2e5cbaf2f4ef86a14cd92be2b8b GIT binary patch literal 425 zcmeAS@N?(olHy`uVBq!ia0vp^3P9|@!VDxk7i7!@QtTz3zOL+#x%ovc1d@yN&jW?T zOI#yLg7ec#$`gxH8QgtbfW|14r4}g|>zNd`E_n!4!ckJ-=MI!H2C^Bv8Z_mB6id3J zuOkD)#(wTUiL5}rL4Z$)Yto$N=H}wPd-wkT|9|fi$8X;>uO>Nuo1)oW{Xfa;?7QMQ z|Fua(-_QN_*f=+>oIhutrUnd*~tCk z-@>~mN}uY!FJ4~QGxy~EVwqDfXPn`Cu+Y=3`X`gZOdlIv%h2VwFWBYnx;IaCH$!FJ z;{E5;TOWGq^gOwro@mCV!}I&lp&cun1=tqzInFr3|7qs2hmYF-uanQ0>zKN7^RvF2 QK#wtay85}Sb4q9e09ui)Jpcdz literal 0 HcmV?d00001 diff --git a/graphics/pokemon/alolan_sandshrew/normal.pal b/graphics/pokemon/alolan_sandshrew/normal.pal new file mode 100644 index 0000000000..234fd3acec --- /dev/null +++ b/graphics/pokemon/alolan_sandshrew/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +80 136 152 +48 72 112 +248 248 248 +176 216 224 +128 176 200 +16 16 16 +16 56 120 +136 120 96 +40 120 200 +208 192 144 +248 248 168 +232 224 176 +200 208 216 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/alolan_sandshrew/shiny.pal b/graphics/pokemon/alolan_sandshrew/shiny.pal new file mode 100644 index 0000000000..6aaf4d2254 --- /dev/null +++ b/graphics/pokemon/alolan_sandshrew/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +80 136 152 +48 72 112 +248 248 248 +176 216 224 +128 176 200 +16 16 16 +16 56 120 +24 80 152 +40 120 200 +56 128 224 +136 184 232 +104 160 232 +200 208 216 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/alolan_sandslash/back.png b/graphics/pokemon/alolan_sandslash/back.png new file mode 100644 index 0000000000000000000000000000000000000000..c64d6953600ea700edd42ee0c6c29d251c21f8aa GIT binary patch literal 940 zcmV;d15^BoP)Px#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_I7o015D=*7@bK{Xc*yWLaEMT_$T*0w zIBD0|iM$ zK~zY`-IKp>+CUV?9S@y3i#RA^2p5^4C`)k=S&2}lF2y-HV@aD+6|p21I*+xh#-}R( zL=fuW|H4aDMfXSby*r!YijqAifr0no{rG<0S#Rp>kXHcPe}%AvfPC6Yc!SGnV=EA_ z%h5K%4hKNETL2af7`xcgsuxCc#)AJ7Bow~bM%YYG#6tiHsPSB@VF##y?}Z3JkuKD5>itD$Ai;!5bJ7Q;+MQa8Fq7FGxhVljPt=Up zME5{})StFWpba(XUu$;=aj&FE12!UGF`g&{zRapd?SX#*jPM3HZUs1WR?YhEGwceC zNdkNlEyPRyL{EyUfaeQX7S<0Vc=|xJpL00BjNmp4`r%n7AO>zo!Ge}_ZxP6sjnX9H zfjWSYI64F3z5G}L2c-xSrvwe}!z_|=KKa3ZY9Kd&MX%COY9BoGJ7XT*?_-6@CGyCm$VkQZ2VW^4_F9^ z0{n7Ziz5-IbT9IU(1w`wB!wOqYjIrJ-JmbCXow5fr+j}w$a)xDfNR&o|APp3oL|q> zGx=5lhyGCL&R|(G_%!cM@m{E8wG86>P;ZfAmMQDHN}r-4C=gobjsb`&&+2MWp{vWJ zr#HH7!qZ1}P&&b=PLL1>38zYss8q*yLlFa!fF(h{C(~=L!{kvpsaXabp$lOUlJ#kq zyR$Mu@uJ(*Lc1UY)Dg_(yvIv|jvJ*FX-7ASMgwsDz&Y@F(+ O0000Px#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_I7o015D=*7@bK{Pc*yWrn7~l5$T*0w zP^ieLsKB_m(5UF}00000000000K2)t`2YX_32;bRa{vGi!vFvd!vV){sAK>D11CvD zK~zY`mDIm;+AtIcaEqb6Zj}Z3;mKBrL&$^`$T1S!4s4in$qKo8&v6`HX^yip#+fvR z^U%}SHUC_nYy(c}hE{{&PM`bg=}ETspF`g>kDNV#>;dS@9#9>5?+3JVfXs3b`0a64 zN;&xO-EaG!RRAjo$e+!9GcBbY)W#V=?Y3DSu((<%P#gKBU@^`B8n??qExcbSP>Zh8 zQvY0mFE{{nGh2Ks3n1et0xGaKSb_8TDg0yr7b_)Z?S_W{ z?sS!-0Djd@ayI8M!JJ=5+d|Ci#vIRE29C<#(FssB9kU|fjVs_i$UU7vjaF@&mL0Z?V%_az}pw1Pi^Df*B zd%`Bh^>z~{89=Rc{;Mi5z*WOF3*b@Ri43F_+LOdcHURZ9KnlPyWG~rVCp5t6Ye-l% zUjYV{J=w!qr_i9e&Ng!apqBx=nHbkWFwH@_8WQo#%ge8HzLNv92r5Ec08lk_0(+Vm zc95S%GXvVWh(SQ3JHa%VCi;ZtRT}HG2CZ@|bV}_2#x!WI>GsX3(3B!7RKF?;P>WLS z%|KXW{ZJ8Q-$~>7I6E^d-`(4QXX9DKW|}Z54KSqC)r6{{EP+Z&vv&LiR5n#t4%nm& w?4%5&`7TJR?*pw~Uu%27`vJRh|7mF2Z~ELS_<|1r*8l(j07*qoM6N<$g3yh*0RR91 literal 0 HcmV?d00001 diff --git a/graphics/pokemon/alolan_sandslash/icon.png b/graphics/pokemon/alolan_sandslash/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..88cea6049b4e046380e320f632546c7f4e11b2e0 GIT binary patch literal 524 zcmV+n0`vWeP)$v%KlI4cR<@%45ScfHa?yU$}%@akbHQ7$yub_rbeAdD=w zLQOmyo!fkwzh8cY{AytB=5Xfc`p^lzmh&CbzaD z#WI#k+L@${qF4znnSJJ5W8(=flrkPPiyFL}U6!kSybP`a0*mrmiM$vqAP7kJTKYW`l+a;p`9K)F!P0m6AOlj4i4fkpd;sE4e0%`zBOLq01{7Za O0000Px#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_h-iqgn7H83=$L4L`1tq`5D?hN;COJj zh@jv|FlcyKpm1oon1Hwd000000D&0_XaE2J32;bRa{vGi!vFvd!vV){sAK>D0pCeP zK~zY`?UXTZt3V9LL8_R0hmx+bk=TQ!&K+p-1$vJ)Ii)Z^iR8ZivyUV|<22*zPz$2K z|97^Jvz`3f|FslX-|LpDZ;70U*0{UxfOYcpdQZotILN8mJ=Jg8`r@^qN}$6w?9>F- z7SR?23wH-Vk7BHAK*o|49hwmOHyw!f5<)m74}i^$T-O^r=)k&?Lgzk)46$RqSAgIK z06IN|jNgLnqYP>a0)&JuPm33wv-f-Dan3yWrcPL?c|TK^CwMpy2g7kE2V+yBPmSTI1z-2J>+pp6j^_S5U2ZO};Qn5<_go^{N gwxEuWpJ_?*4^rRWe^G`j9smFU07*qoM6N<$f{xu9dH?_b literal 0 HcmV?d00001 diff --git a/graphics/pokemon/alolan_vulpix/front.png b/graphics/pokemon/alolan_vulpix/front.png new file mode 100644 index 0000000000000000000000000000000000000000..0f138a6841bf25423863f9b7900453699a0a3f0b GIT binary patch literal 673 zcmV;S0$%-zP)Px#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_U~rhIu+ZS>@Mvg&`1tq`5D>t~=vauT zaKP9=P;hW~xKMbYkeJ8-0000009`>+%>V!Z32;bRa{vGi!vFvd!vV){sAK>D0s2Wq zK~zY`?UX%k+dvS7*MP7{DUwKf?n+KAPVBTQNJ*_>4{0YbK$8|}mH|RBCvd0>7$%T1 zo!c}ia)Y!fa+}Q3KR~#<0s^G;Q@I~z-n`+6J?o$4IJ@8XWU!m?f}O;iIUr$XB}TCW z0w4%d8*l`qK*GKS;2%8bb!Y?J**##Zum@z3Gzr7`4nR&K{B&(@;RzxpQPQ>+z=Z$; zJXv+OW`JEdFU1s>ad%soffDg+lwjPo=BNt9ckjPpa%Hpd6Y=i+JH{(2;28GKYs4Sj zZ^YArIT8X586o0%_X}~M5&`griyu*iUa2Yo6nilKn}|gJ9y2aI1sojv0~6D!0yZoM zPe=&}vw@3C0+J@>x$uQhd-I2LTsBQZ1!f8mYLKx;EEOPJdUxsTgRzzcl?a7;rW%GG zJ&=Tpq6g%G=8}z?K8&PLT~ruDVEK?$lHCKo4Zv6k-vgnI@dPB9?@B#v7Cr6*FZwA! z2Of#c46Ks~v8Er*p|aLmlt?ZjjA$ddDxi(Y@go88vT4$chBPFJCp9kekOJp)B%Z#D znoP{gH?Nz0P99z{O>0~eu*qqu85|nUqr?&y<%ZWA#tYN=RCR@`&)57cW=8RC(Y>Y1 zdePljfVS$sT(zkcU`4gP;RUO#z=O4FYx^sF!q~I^zZm-iQ=g!PsuUBR00000NkvXX Hu0mjf*e4w; literal 0 HcmV?d00001 diff --git a/graphics/pokemon/alolan_vulpix/icon.png b/graphics/pokemon/alolan_vulpix/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..f49562751b543e16fe7f4ab6e16e9c39cd406b7a GIT binary patch literal 487 zcmeAS@N?(olHy`uVBq!ia0vp^3P9|@!VDxk7i7!@QtTz3zOL+#x%oxSRX0U`R|X1+ zm$*ih1m~xflqVLYGPwJ=0F6;7OD$3`)-x$=UGfm9grlUu&mAaZ3}iESHE7BMDVB6c zUq=Rpjs4tz5?O(Kg8-ip*Q7bk)z#H|_ip+B|9^4u*(GbfZE22rceMNH8qIItG`}SU zO{qS6bjjJhnsbtpq8uF^U%G6G2kK=^@^*J&=wOxg0J6C~T^vIy=G>j+*mYPzq-}3w zxyLu&FX>@Uwk7#Xcj>=#L}naUEy+tav2DEmw0k(I9Q484x!m$~c(&m^_{kb5=F z=|_j;vnP`|98NXwzgafP=*U&(lP{-9T6}Xj`eJ3wLX8XIH`Ax@JF@u1zBA5E=MElh zF1|Nq`AsEd3BBF(Y|9%y#)jKx{MF()pCQl|9kN>9QG(lKwY&RsUCGM ziEQ!ek7jC|@h#VCRY}a++oaMXe0GY_B7-x_qQeq1q8w)k)jn&F{=elF{r5}E*VhQBQU literal 0 HcmV?d00001 diff --git a/graphics/pokemon/alolan_vulpix/normal.pal b/graphics/pokemon/alolan_vulpix/normal.pal new file mode 100644 index 0000000000..728db562eb --- /dev/null +++ b/graphics/pokemon/alolan_vulpix/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +96 112 152 +168 176 208 +224 232 240 +104 104 128 +248 248 248 +16 16 16 +192 200 232 +88 136 168 +112 192 216 +64 80 112 +112 120 184 +80 120 160 +144 152 200 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/alolan_vulpix/shiny.pal b/graphics/pokemon/alolan_vulpix/shiny.pal new file mode 100644 index 0000000000..d22bf6e220 --- /dev/null +++ b/graphics/pokemon/alolan_vulpix/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +136 104 136 +176 152 184 +224 208 232 +152 104 128 +248 248 248 +16 16 16 +216 200 224 +120 112 184 +136 160 224 +72 48 104 +120 88 160 +112 104 184 +152 128 184 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/castform/anim_front.png b/graphics/pokemon/castform/anim_front.png new file mode 100644 index 0000000000000000000000000000000000000000..39bfaf4266e50ef16a43b58634c1e69c3a56ece5 GIT binary patch literal 382 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|eg8-ip*P}dvo42zAB^XPB{DK)Ap4~_Ta{hR_IEHw1zMZr& z>rjA5TmCnPY^JhT6NFz}QF`W~ZvOtAGsp3j9I~^nPo8vfW%KMOoLs(bKCKn&7ES*D zk@eHs|HuE&=f1wPk+J*Y;<@iDvYr{5r#Z*yzHL19KmR?)%R5G8_v(!wD=U4Qcca4X z)Mi%Wbsfca&00zq1HvLCRx2!WV>J8ryZb|Vv_($X`yzovrbETLpFZB^R7||HGN4>l zWRiYWMUX=Eo=VZ5Y?(U9P)0iX$Vw}gTe~DWM4fbyla- literal 0 HcmV?d00001 diff --git a/graphics/pokemon/castform/back.png b/graphics/pokemon/castform/back.png new file mode 100644 index 0000000000000000000000000000000000000000..6348a35e8662a831b8b9856698c74a3519c452b9 GIT binary patch literal 373 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|eg8-ip*P}dvo42zAB^XPB{DK)Ap4~_Taz1;yIEHw1zMZ_6 zugO59H8Fj|gBMA&Ut~OxP#0pi{-xK~vv1a^Tjd`_zi@64sLLwi>g?uD&nnti^PTOM z!VKf|bN7?;9@j28pEhTQ{?`^|pHG@hk6R42pZv2ja^R{E4cvMCSI95X(tOT@hk_2~ zjD2#B{11+@zHlpOWzAaj&Qjno=j@3q7TOyqoMTIHZU|TzH&Ila>BO4w6OT?YT(w-H zqs4aOS|b0^$;`FO7Hgru>s9&Yr zviADaPkXwnxD{KjF0pgiV*R7R+(dvo42zAB^XPB{DK)Ap4~_Ta{hR_IEHw1zMZr& z>rjA5TmCnPY^JhT6NFz}QF`W~ZvOtAGsp3j9I~^nPo8vfW%KMOoLs(bKCKn&7ES*D zk@eHs|HuE&=f1wPk+J*Y;<@iDvYr{5r#Z*yzHL19KmR?)%R5G8_v(!wD=U4Qcca4X z)Mi%Wbsfca&00zq1HvLCRx2!WV>J8ryZb|Vv_($X`yzovrbETLpFZB^R7||HGN4>l zWRiYWMUX=Eo=VZ5Y?(U9P)0iX$Vw}gTe~DWM4fbyla- literal 0 HcmV?d00001 diff --git a/graphics/pokemon/castform/normal.pal b/graphics/pokemon/castform/normal.pal new file mode 100644 index 0000000000..3fe2b76928 --- /dev/null +++ b/graphics/pokemon/castform/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +197 197 148 +90 82 82 +205 189 189 +230 222 222 +246 246 238 +0 0 0 +255 255 255 +222 222 246 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +148 148 148 +74 82 74 +255 255 255 +24 24 24 diff --git a/graphics/pokemon/castform/shiny.pal b/graphics/pokemon/castform/shiny.pal new file mode 100644 index 0000000000..2fa401dd6f --- /dev/null +++ b/graphics/pokemon/castform/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +197 197 148 +98 90 90 +205 164 189 +230 197 222 +255 222 255 +0 0 0 +255 246 65 +230 180 32 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +148 148 148 +74 82 74 +255 255 255 +24 24 24 diff --git a/graphics/pokemon/cherrim/anim_front.png b/graphics/pokemon/cherrim/anim_front.png new file mode 100644 index 0000000000000000000000000000000000000000..8f6fb3d30f6a2f7904d3386d32cf72a3fbf3ccab GIT binary patch literal 862 zcmV-k1EKthP)Px#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_U@$<)Sa8^gh!7AEm_SevP!KS9FgU0< zV8CEtIB=MFuy|OQI3P#>000000I^3B9RL6T32;bRa{vGi!vFvd!vV){sAK>D0=G#- zK~z}7?U%7?<3JFGbs*ds&c3`rsNTpQ!8*2=`j*4#U=n;MOx=mWRSbOBK^10nkcmZby1epy^es8xQb0#mPmmz zQ7-A-Vh`l{NdhVZ+#4Vifd}+p03FFdg#>PZqZN3BuEkY&8w0FA0n`Sl8Mt!*+@rWp zI2XmPM;+RMbsG@10P6OhK!gNI;;3;^tyOY*#6&IvL~3#zBr#cZ&)h=&AV|o5 zkqwUs_l*4>^LnvINn%gn`OuUj!5%uqA^ul<+F}ea-(BCVI)g)SS&Sh&2q(ZM#Z_Y% zv;YbYLb(8VjJWSy22nT+TF&P1v;}BA{SDw>+H~LCFLWN-0gP3Wr#n<=u`xkng3k4H zwfZ$?lQWZ4mbV^d;V?msiIIjotjB8Wg5W`<9?;;J^~D$#L@I)D@sHn*^3i-g7uw{Z zhb1iT*@Q^<`3Cj?PU!+JMc2Z}=@xJYe;7cDT9};1UzD_90{|BiT7c@J4KQH=9@xS( zKrI19wM$Ut;#}NR`;dY96}S@(ME4blY?F5vbqlc8EkGoW|1K4;3Ero8ey;a=}mU1%3Vlo1*fD#sB~S07*qoM6N<$g3ai0I{*Lx literal 0 HcmV?d00001 diff --git a/graphics/pokemon/cherrim/back.png b/graphics/pokemon/cherrim/back.png new file mode 100644 index 0000000000000000000000000000000000000000..5819f4dd94b88b9a0e65926053318e0b0c275951 GIT binary patch literal 600 zcmV-e0;m0nP)Px#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_cqmBFSb*4om=F*Upg3R%P$(FPNFcyi zXxM;IXn=UY&`6lLC@4q(0000002+st@&Et;32;bRa{vGi!vFvd!vV){sAK>D0kKI$ zK~zY`?U6B0!cY{2Yhq+Fu>YlL8xv1A zCx{yp#{c4d4@&EMuV~_CJVS@xujib5tNm5!x_-5D?w%SaJBU5^+As{e7^u6hV;Gfc zp+VV2ITgJK*mt>{vmFUs=SRhW$x;eS)ZG?$af*Q|?@<7h{F>e1o7l%4#oWIoqZaAh zVMdGe-sY4sdp(g?}h}M8_qL&wr#Dp0-csTD` zfWpQiFozZ3uKqo6RTUjA23YGkEX4|R4Rkm2I8rRJg2vWh@g`*K;}QT*X#=1$B@m?v z38f-1=fEZ*jthWPGb#g+2UHI5YX>V2;1=SVn#B&4iN1({$xfYVF%{;lL>`D=CBXUu zfcUdmiH|%`RRGaQs^HMgf$ m{4AzP8j{ea_OG8y(>?(K1BjvS7B0pB0000Px#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_U@$<)Sa8^gh!7AEm_SevP!KS9FgU0< zV8CEtIB=MFuy|OQI3P#>000000I^3B9RL6T32;bRa{vGi!vFvd!vV){sAK>D0eMM8 zK~zY`?bN|)0x=K<;1tALp;}*{vA#fk0VxwLp(jc19>neg2x;#{;~Uibo`QXX?Qu_b z3q6Yu(@8`RWs-&V>Kyj+f6Pn*8+NWgRI62!bDk6z9P26p+Fb;<32@!NWhix8m50)cfBzVF6&4W30TTK|+Lj#;aUuR~IWhQa3@FSMgA#e$wPx13?qF^E2 z12$NaOCXp^=kg3Y&|6NyeN@f?mmwxI+L=(xAcyY2d3Cd|~d$Q?PvidcHaSfXX5V|Ybgd=#~ZK) iW+KtxgwFM=82bU?D*C+q(feos0000wO^$;w422s`Fc7wtTId0WB->da`~DIK;4Whm3U(6G&Fsc2q>8 ze^zb#RbR)cx^BW;7wEArVDJObe*jGQ1R&OjAO-NX7B2>-3Na!E@2ATwjRgSjuaU-w z;A2f~84y(>6i^~GP?$yoA&*Q02w95+$Wu2~1Mr;^qqKm9ogHYwdT$4n@_psiVOP3rs{;cccGAagOQGn8*a)|du0nZGWJ3WVX;b;^M+&U%V ze3rKzG~iKRcgk`QJtm4n1H9M`RFPswPBj4jjYn~t+cpJy2I8pB@(@-72KN=NjugUN z0*(nBIc%*A@&&tYblB3l>(!xo`NIMOGzC;?XjVg&nw&44E05#*^MP5%4(1#e`sLhnihY5)KL07*qoM6N<$ Eg2EQpiU0rr literal 0 HcmV?d00001 diff --git a/graphics/pokemon/gmax_alcremie/front.png b/graphics/pokemon/gmax_alcremie/front.png new file mode 100644 index 0000000000000000000000000000000000000000..30d6ee4e8f24d2fb99c3d5230e89f1b43c3080fa GIT binary patch literal 815 zcmV+~1JL}5P){qfM*!YKa#aJhHBq?xzyy~F-(Cg}bbR^ih3R*)Q*jN*EMB+x>h0008I zNklSeW}yfv6$68pL|!{HP$BUj@EnR%@Hq=SMY62-@%R0>ymz(Qe>R7Z`bvNU z=;kT`O%!xi0reUKSS3*_fXXcJ`X?Jmb~u}9tvbjE%BTS`k3fuvbRyv&!HNgF^&XLz#i4Fx7iWH|@dsLq$+ z`ufQetQDxGOw7&8gg5&UfT5!7cYt>`uky{S2G!QlaeZjg7AziLk5ynjO;^F%r3 z>vtluL@4YY8_h@f3v4G*7+1V7MyddMyfn&!rX6^n?PXbZp3SO&k9+d-O?Hu;S1Npm zy&F`x@a;)Bvl(#Dn`IBVt<%dQn9+ta&FlaRf>szQ=10_?1nrMUgEk$%X%DS{(|>XK zY0#cb-VO$RTb9o2N8i5o2WZcR$2NeDZxvAEn3ZEVdi;DedC=aNOg2U@ZF3>j1`l

*EcfJSgK;e?bYS@bR6~3Fh11$VvNz2>oqIhZ{?oN-p+~LA6?i&b& tEMGgw3se-ipJ?;*C2@Pn} z(&>bsEhNl&-`pHkHRKgIQ*d7iZy^ATJW+ZU$Gy?rlX6R8F8Sdj7iB7W0i~3vmp3BA z_bj8%%9_O8e;7P7MGFt9HC)NE-X;XOlGM%{nFS8IT;-;u(Y|7=**>E|ns1N;i4iF&d3 zfq|Kt*z4QCbfyCv7|F#tFgsg-AuC{3XC%WM7>f8f$uelhNAa^OJ_;NvJ_=weJ_@A% aoR1%EkLsWYy>7xV5C?Ea9lKy!6d}4a6)Gbo@B}yy0EDS80h5KIOe|SDpvr0F-V^7H-Mhz$yVc0f2D}kZqYJki2D_aN`z* z2Dm*ZuPAc6NZ%=|6D@xUy{|$}#htp^o@O;pMRohC?fNV$&y^%{bx?PlNuQN998`r2 zn50Wzx3Z=xX&`sn)xeYLPq#d+?KBfh4XFH4Yr{eK%o{seL|uXrZ9!j%l@yhTcHg5s z4+w;;6=P#ZyH(nL;X()RDk7?B;#qv;6FwCX4K{Q-8X$H7nkkt3Y+M10Q*h6E7r`T` z0NA9h`Z4vrx*kB9qH-7ehCG<+2P(u{2Iev>-uWkeVl4ph)*{|fS|cZAi`dQu(p3=; z-vELc(wBl3K%hYW55i&Z4Zwn`fqn3+I+(urx80PrW8Eco$;rWx>k;RzlAdz8R@qkpL%Ei6ZC Tcuq_E00000NkvXXu0mjfwZ`=T literal 0 HcmV?d00001 diff --git a/graphics/pokemon/gmax_appletun/front.png b/graphics/pokemon/gmax_appletun/front.png new file mode 100644 index 0000000000000000000000000000000000000000..65c716e9e8e080a202680e086a2f2ddd4802ea2d GIT binary patch literal 713 zcmV;)0yh1LP))~#)?RdLMiFRSVDF<(m74DtYZ23`7B5%+R%$Rq&?L{Ru2yktL-gc00071 zNklBjE6bJAV?vd4MOk+cq+Dpc^GO1Ugi|VPgRPs~`rSe0>5D2Acs5>YY z$E_Jk5j1Ot4uwvQah6O)aGg6C4;_-BLq9{GVnb`4bsm}r&hr1=yC=98LT=Hs1ek zTpXIEIU#Q@pKl#%a)LLk0sh4|J!q^0=60q91{vxBAwwBe{|jtL`C%>44l$Gxzmxi_ z7Su2?K#=*q3!nyp#hx!4Y5t} z4$9`81BPMHR`2jU_xiAHG61KQcd0Ie%{h3`#M5@{22KGyJ!%7E5Y)xU4LYLDHdz6P z8e{jFvm->!sf(K3vX^J5;3213vvE0N6MwfAFk;N!iR)rfM=EfbE&i$2@(8%v>p;h1 z<_lKX(f`X^)t@n1JV|*nsTDbKoKf1y2-Ei5b)}1>SYTL~sSr?wyzUe<037nD8W4 zUM3CWdJyIlB!k%*kJZ=T6Cun$VsLWiZbeE9)&(3Nd+@>cDXaiS=!PN*@H+`N4> zchp=E9B+YvJehu70SpGA3t<9qp3UA)-YJ0Ki@-OJJ|f#SMMnWgEmlIPo( v$F@lt>1sfTiG{6=MtZE?u-r?Z-)#K>h{FmX(t0Xf00000NkvXXu0mjfX5Br( literal 0 HcmV?d00001 diff --git a/graphics/pokemon/gmax_appletun/icon.png b/graphics/pokemon/gmax_appletun/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..b7ecabd4695c5e4b94d383ac9d77c45833c8bfac GIT binary patch literal 418 zcmV;T0bTxyP)$w`#f{g@Nf*<(OC^HU?x_q6<=&ki8NK160T; zak8M+kj7*o{v!lsK;kxk^8M^PeL?Vbfe%yzjR)Qr4%jWOT%c~^b0>2r(9VEO80Fe- z2(No$UD<@;k*q8Loh(zkCD@*3ne(x2TaMjPAaz0D1O0Y++gPcZlH_7+{t8?s@^vJJ zX%uHQqnfkND{6kgIhz{*f-~&N5TXPlL5M>}S723Cf`)hDk@EXhAs);=Xcp!1%8aL< zXW?B;2Ea1S1U^~gC|pnF$O52VCX>|JyG{~khkdYj{(b#dVYDv{oOr^(u_sKR_Ymgr zM`6~kFp`n{Mi}i2)Ahn264pbgpj=`ljUU}v8A;oZ4qML;+5W8`AAg4i0X#|7J^%m! M07*qoM6N<$f}$$DB>(^b literal 0 HcmV?d00001 diff --git a/graphics/pokemon/gmax_appletun/normal.pal b/graphics/pokemon/gmax_appletun/normal.pal new file mode 100644 index 0000000000..2d5dabef1e --- /dev/null +++ b/graphics/pokemon/gmax_appletun/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +16 16 16 +166 49 57 +119 38 40 +198 138 72 +141 66 41 +233 197 88 +66 118 56 +210 57 77 +179 172 98 +249 249 249 +44 72 40 +218 208 139 +57 164 61 +213 68 86 +15 15 15 diff --git a/graphics/pokemon/gmax_appletun/shiny.pal b/graphics/pokemon/gmax_appletun/shiny.pal new file mode 100644 index 0000000000..4514eb418d --- /dev/null +++ b/graphics/pokemon/gmax_appletun/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +16 16 16 +55 143 41 +35 91 27 +198 138 72 +141 66 41 +233 197 88 +66 118 56 +75 183 48 +179 172 98 +249 249 249 +44 72 40 +218 208 139 +57 164 61 +213 68 86 +15 15 15 diff --git a/graphics/pokemon/gmax_blastoise/back.png b/graphics/pokemon/gmax_blastoise/back.png new file mode 100644 index 0000000000000000000000000000000000000000..cd9d607f5545fb9413aae3cb1571b109d6bfec31 GIT binary patch literal 871 zcmV-t1DO1YP)BjE6bEowgS%Fapn-OXRXegk8d7=dB;~$93l5}HYHET#8PoII4>D05B7KId#BizaERwTFc{v?@BZ(ErD@NviU(`@&6}rz ze!ULdd|GoxtF;ES+w^H*({cAn;3n%ql71^5tlmk%&|XNHf@0^Uvjm3f8m7OckE1D` zQEcs1ueTPz+ z`k2uSa%Y6?<%qwY0QaS2( zn(?-aox)2yR*U%!V$2YC|n$)gJonw9()=vIOD~9%pr*TMmct z$wc*8wXqNXX1`8CNAMU<0A7Oi`i#v1Cj?$7b@(R_siyB&)c%Wt6DkV$ByfbS=^yX{ zk8=PM_&bJ46!=06Gh|utQ7vu2Vxc(H^v@;lOn8000BU zNkl#QDuj)@1gt|ZhEm9ur4^JHi}w}}eF?npQnD2?7P|F$?tl;g?c%Yv{-0{Ywnl@#`PF=US0ejmj9$Xt{Z4Az#@sX5Per{J&6Y=cK``h z*bx{APSP#`eb9h3Z!5$h_vzyK{Zbw@snV^mP2;ssTMN>Xr06t zI`k_=*nO%8&|@mR5=e<;N0lP%G0_AJxUqm<5|T+aS*1W0>GGSFGDC1lOI;-il?Rhs zy^*}KV~WfWxNsvq&)qE7BldKaU}_PnRWSq?4Ac!$`G6hYS_~4Rms3PqU1$;ILLT&j zl||N~g@GwiQnYd-3=Z_9)hB`FlRBS-FTD06ibUBYwWU8Wqe) zxM?{>V__Zu;9zrMa03+*lOtET(q$CD-f|OAp~=DZ{6ZI5wCn(YacR*gT7(?*T{>S_ z)PbTvggkxPb+2?m#QUchI}5;aO@24ZReTmDxk(~B0Bm6VSp^_oe$AH_NoOB{z64AT z?g>86<5Pa2buL-w+fArp*@gikbIw=Ni%l2FB>)W^I12!Bm={LSIpt=`19rLpy=C2Z z@B$z%@%VWrsLH@VCX98S0notcbvdXk0-YqO(AS4rju^WPe*nPR*+dHmPt4&e$3iQ3 z2^pJ&4~M^++HQ{yI#8TX%`zqE$9S&*Zi99OX{91b;auJ^cI05}RrNtS7D;3PxR;ns zaDbQPFD~xzch7yzQD%UI9h)W8fH*?lEJagT8HE=HCcIix*#vxOp$n0eKu`lL>k~FD zk9xq^vEMcpdo|$2*})Vx%0Xv6-^Z&pE#i3y;~SH6&?kNYEEm0q&@qIGNv{Mp>JCS{ z?eL(`k3feSf)BMK*S^^G3nF~>vT1<8dB0iH{lDPvFbs#om%l-Vz`=i34VrI#f7c{_ zI2@+P!5dC})YdlSeftLfL=aXJ$Pe#>rxl=KUJ=l@zcGm&_7DCF-}}32(LkW1?Y-iD zUa+5kY~y>V)~035QCav70}FIVuiK&jlRwV*7gt7H5bjYIQUCw|07*qoM6N<$f&?w; A#{d8T literal 0 HcmV?d00001 diff --git a/graphics/pokemon/gmax_blastoise/icon.png b/graphics/pokemon/gmax_blastoise/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..9761dfbe53cfc7801d7e943ad2b812002abb77a6 GIT binary patch literal 510 zcmVe_ zfN;3DxcK<^xS&Ar@F>t=K=6<#h5dr5CCA_z&byG5#GA=)(n;WHd*@`jua_UCy=V-c_Q^C%+`gUL#klm zYHUKFL)A=W0iVw2^YJCgLr=3=aUxEez`*@Bz&1ZLb8dL|_83zHu@TIi+oQRJ1Xf+E zG_kesAwcA6tg>47*4k;aP>>Q;AaQT=P_2cI$-!8D?O#Jtk*21Cs#WzqBy>&J`Z~Im z9fvlAL6efwEgFoC5z(kX0TRaEdBo8{>STtYcR`h|08-@u4^xWp*-*MxjuOvPXTq<{Ddg;d+>al zIu{qpNK9V8poP>; z&_e1iXePB16iM9$&7@X>BB`~YKx!>09=j40J9|h_5dtegRV1|t;yhmFE@%kGR)U0X zHiGIT7+VC5^Gp{(3mD#+AZP=|3)+J5g8mBT8@ConBDLOqW&i*H07*qoM6N<$f^7Tk As{jB1 literal 0 HcmV?d00001 diff --git a/graphics/pokemon/gmax_blastoise/normal.pal b/graphics/pokemon/gmax_blastoise/normal.pal new file mode 100644 index 0000000000..2b7f1254f5 --- /dev/null +++ b/graphics/pokemon/gmax_blastoise/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +8 58 99 +16 16 16 +90 140 206 +33 99 173 +205 205 213 +74 74 74 +53 46 39 +199 84 53 +148 148 148 +253 253 253 +108 232 214 +73 65 54 +95 86 71 +148 173 230 +206 206 214 diff --git a/graphics/pokemon/gmax_blastoise/shiny.pal b/graphics/pokemon/gmax_blastoise/shiny.pal new file mode 100644 index 0000000000..f7906a9da8 --- /dev/null +++ b/graphics/pokemon/gmax_blastoise/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +115 82 148 +16 16 16 +213 180 246 +164 123 189 +205 205 213 +74 74 74 +66 53 42 +199 84 53 +148 148 148 +253 253 253 +108 232 214 +92 75 62 +140 126 83 +238 222 255 +206 206 214 diff --git a/graphics/pokemon/gmax_butterfree/back.png b/graphics/pokemon/gmax_butterfree/back.png new file mode 100644 index 0000000000000000000000000000000000000000..a9bce5aaf1ad146242cad320a830c55a78942047 GIT binary patch literal 947 zcmV;k15EshP)6U96opqxNs(8vWJM|6ICY9-Yj>bErKLHBDO|WP-FA#F^jvak3>L}|B+~jOk(Tbe9hwx z$fQ-gD0#dc@U#kYkhMALaX2Vycl(QZKbKjv zJ_WE5Kx#3NXxuFTC4eFiRM)*MoB58>M+>A9C*eTJDT^r;8Ht`mB zXJZhqJ)TdaCgPdz?fX-JXM^2VL?h5&9)1B*Ss6Uv0^EK6co6nOwD(zqGUucjxE{Hsq7yi%a14FomuBmy%_bPXHz$ z$5FbGEcqk~Lyqz`8v$p+ts1FOg9y&mPV%uV#tkmtpJL2qRX=9^PEdE<6xITR&Zjf$VOWUC8cJvS(V~awNdq z2A^xZ5Li1=?M}25_V>fkFM!~<8$4RKD zvng+ZgcY*>-BhCy0K6O%G_6F!G4$DXk%O;MMaBUJW}j`pZ!bTrPE5$w*VNiHPtaxD z#k=*=WnfcYt|hgPsElTl{nzyiz(Tfoxr5D14r;hquMaP3@G(QB?DYowZU1_`o}-dR zTl@5h&p3A3<%l`wuS?)b4)tejD2lsolS3Z_Sj?9E?+G|$iZmz6`-^`M3*cW~KLO`+ VuL*|ex~%{J002ovPDHLkV1nM)zq|kd literal 0 HcmV?d00001 diff --git a/graphics/pokemon/gmax_butterfree/front.png b/graphics/pokemon/gmax_butterfree/front.png new file mode 100644 index 0000000000000000000000000000000000000000..0fc4c4c70f7bf39a1390d406f2dbd6b72080466e GIT binary patch literal 1787 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+yeRz|0Wf6XN>+5MNu>w3P5FHRZaVG{y@ooa`G zd10HUi(^Q|oU_w!mpwAzab;%G-01!1f4%jkiBBxV!=ir~<#DRI+;$f~{m$gC{o+?0 z_IAecB?q=mzOKbG zMaKK?J`0H$?`C$hogEDq!)-LPikB+pl&#!NRDdbaOke{yDP z-m~a)%V#kba568@mW-9`Qrj?#$t-)ifk2kH(U0iO32Y5@dN23yi}d?DJC=b-Eb90r zca8^k95W7Zgnyg)%D6$fwRO6x%AD!0XWQ3AwYWD3R$Mk?D*LA3u|vnY;of%}1t+%^ z;oqEBlW(gnvQ42xC<)w6v05X#5!#Nhe1bkF+LaV2qFKhG4tWH_qoz`0borBh~s zQOdEa8{d2iSReCi663+_=GeV^U$||*y*H>?F72ks}5*se{wfo z``W9V=klVKnco5}m>-EnbF{GiUVq&ySFTy0(n9M1Q@uP7N!LFqMbjeD;i^YOj>y|C{??PW7KS;8-B#ywWoR6BX9y8a-+kCD?A1|E z##rue#$6XgY^)g`CZ3xXrhiWE#q?c|t~gB>zP2zl$eH89<)X`pyAVRM_zq=5^)gA~!64!R(b`+kGLQkYs;CAX;!5t@(=2>pg zyy=v&f?d_bgzNsM+^aEiU*8B^_FtX#{{_RAlHI%~g6_{332tdSeQlHLB?jR|$AvUI z7M~9lt<=0(?W{fHi@UbbwxtX^{(k&XAtNAAZ!`D6h5vC5(;qY}zpb9Y{qch9dCwKM zneuaQFT+b=&8J7z-3e|n$KU9!p+xpPD`hWSGSkW5$ujfVfZNIPj lK>5J(OTr(_KmV`&!>keRRc78j^%AH!@^tlcS?83{1OO)6>a_p> literal 0 HcmV?d00001 diff --git a/graphics/pokemon/gmax_butterfree/icon.png b/graphics/pokemon/gmax_butterfree/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..9b18cd6e8d5f97e32a02c49852e79c26cda7d0be GIT binary patch literal 670 zcmV;P0%84$P)iFx^9Ny+YWocXb#p~3lSshMG6SwTTTz779l0006h zNkl zh!LVL4$v5cvcy1W^`Dfy%$dlu zZGpmSr5{pYjo=fRyQz!k`r)$0gprU}Zrtm$c}?h;&xOp3UTCI_jd6^32zzsCC?9dL zEy5KJEB1wAio%Kxh2!G&w>VI)s>+}#0zVe(73U2biGqML_H}uG*G$_HlLZjx+Y zP0JGOX{^7i`gMKN@Py5@0YBxGTt79ep}Olgc|2?=O}c?AFP~DZ6H@qQ4j7&iTjjZue(N3> zP?^Xp&!7k9vgHUv=6gC|b_tt^sgS{j2PR?j08|v3F`o#>i@S{jre)JviM)Vk-2*cg zju*e?<6@7%FowMNHTS?MR)n=jU>?UZR(N06_A3nC{M}-i7gybB*12lJ9)><(wGynhq07*qoM6N<$ Ef~cN2SpWb4 literal 0 HcmV?d00001 diff --git a/graphics/pokemon/gmax_butterfree/normal.pal b/graphics/pokemon/gmax_butterfree/normal.pal new file mode 100644 index 0000000000..17ad51006f --- /dev/null +++ b/graphics/pokemon/gmax_butterfree/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 194 14 +134 122 150 +100 87 122 +70 52 92 +106 189 205 +82 123 197 +179 242 219 +238 238 255 +189 189 230 +140 206 188 +146 233 150 +39 167 119 +255 156 180 +230 98 131 +222 49 49 +16 16 16 diff --git a/graphics/pokemon/gmax_butterfree/shiny.pal b/graphics/pokemon/gmax_butterfree/shiny.pal new file mode 100644 index 0000000000..3d3e6ed267 --- /dev/null +++ b/graphics/pokemon/gmax_butterfree/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 194 14 +131 131 189 +115 98 172 +90 74 115 +246 139 131 +222 82 98 +179 242 219 +238 238 255 +189 189 230 +140 206 188 +146 233 150 +39 167 119 +156 255 156 +115 238 115 +32 213 24 +16 16 16 diff --git a/graphics/pokemon/gmax_centiskorch/back.png b/graphics/pokemon/gmax_centiskorch/back.png new file mode 100644 index 0000000000000000000000000000000000000000..2279b3a0659fef1a9dd79eb676c531cf532f50d2 GIT binary patch literal 802 zcmV+-1Ks?IP)p?C=U-0??XmK00085 zNklctdFeJ}{O3iuMC2QUo^KKNi-YB2a_N*^G& z)?L)FZf*rbN*~jp!ZDQ#6nduH`Q z40JKkfcPnZF#w4V1NgemVOtHZ>;Q1W8QSXCoj~?>=VZs&8;RVl_ydG^LhOX|hl+Cl zfV-pnLslD~u+{y@GZvvStNq(QK(E$bLN(z1#jPj+65X%co+s3vR~`yS24jOAZ+z~_J45|}VHy;}6PEdSa!fYNqs$sZRzzReeVz!;4Izy~1d zQ)c8q-&9I~$0KSU7{IXBC_v6re|`WMJ%i`x)KP#Z`*qFRB@lMfG{rWj!rzjYbuHWl z0C_g+)aw9e6ePIG;j}C>4;M4XInx>)V2G#`F=1i0=)g{DS0BKoM&BwRPX{-S+tP;Z z(k6-KT*+jsk)Ps*#~MIs^kG{3mSwEgF5X#7SAoD#HG9I;8EV%F0lW0IYBnpcSp%S2 zN?!;CZ#j{79%x@WG(vo6(>X6T!k=|q(~k!6o97(!H>2!k&n@OvG)02vFboTT<2Xw& z0JOs5Z$PW~20s8V?Ev;t5N&AY+6MH+yfy@P;vmpgn{CU{t=0~2!zRM<$I_;p<)IZQ zBWzh1b&dhHRyL{&h6B$mA);v^2MT3$EkGk1s@;b&mRE-XQRmXP0COF%X_UP#1TeAy gxDo9#f*shie_j==&Hr&y0{{R307*qoM6N<$f-|&eYXATM literal 0 HcmV?d00001 diff --git a/graphics/pokemon/gmax_centiskorch/front.png b/graphics/pokemon/gmax_centiskorch/front.png new file mode 100644 index 0000000000000000000000000000000000000000..a35501c2bbb68945606457ffcd871288e9c08422 GIT binary patch literal 996 zcmVQYb0SEgJt?LjTnOoEs1O`}>p?C=U-0qxT}m000AT zNklq}r+Sd|{u_}oj#g1~=4Zz+5B-_VhN$W|OS*LJ|d^7k_{Z@zEL*#9lI z9s~Fzy8iO(l~Qhcp{F0L&dqs;l<`ofE#R>D-CPz*O9h={M7~ddJ~wBr^(>@8wl{jeIhllD$fH>dJu&7iIg+bgWwtr(hrCDAqkifAVZv7 z!?WPy-~vN@y#Z){xW#MT2tMMVdl=$X0-z&k=aCLZI5@PhjkZ0}J!E0~zPLB%tU!Z*^k=VZLqW zk4?7-VW})FE4Kvl6@&CY-($X=vpL;c7O#Aiy=4`pU3T={pZ<1AtzNDIaK}T-p6sKH zJ2X`j_;2rp(z<*y{qh%Nt=7*q#F$XLl*{2;!SZeIjz6EmO;^YoW)RP;IRUN{nW41A z6F%ktWCy}iJGDN(^LtBTk5nP(=rY}S0ke#JwsG^3{ixI<}B~j ztA}_?UsA6C(xjKGoFZ~@?x0}Q<1^X4SAOd4F=okXl+Slp%X07z{fh{Y1gM1rx+Zr7 z;UvC-P9Oa|l_*!LOg%okcryYRk3w7lG^e09TS`%u+Z`ZBVI0QSTp%ZW(iQuutVr%1 zfD5LR9duiZ61KJgScz|Qn`vg$f`Hgw4fp*SYza%`2%r{b7VX&E*vcHU=%YF2Xbea3 zl!`?_ebFvD76D+c0fi1-=h^ygRgx7%ZG?U|w+6h4#yrBM4|GKGsjwwKvS|}jEM;eg+7L(gjlO^I6ZOrx$A=h~dDWw(Jw z>%sIZ+AM@9q$lP$^8T<2tiViT$0~UR*-hB3+6-9+!wPUvL6F^354H$ExX+`xs{U#oN|{@><`id=B>mPJFp87b;IBgkxTPCreJaoI&5|UNrH3Rg#I{X zk?eNX#?^$+BN4B@E%`3|$9e&C3MVjHTHOjv%D_BGh~I$8KhzsAtfCOWJ&PGEYSXHioQV1$Mf?FLK+ieJZ2fEg_`1&9R}(MDvdMS?6QI?9A0I$t{v zK4`ab7!#IJ_Rueex+K)MQSQQNG!`HaC9Nd_c_W=cS;`RqWMQ}N*?F45dRhP@ znqJpm$1vJxGgwaI2B6LWgxcshj)w+F!d&ZQUg@W7BadUpInsK*NcDV>=y7}QTHWh8 zjth1^)^m4v^v?j^AP+-4w#40G@Y?75K%S&>GM{A^2j=E3K5{P?S)A2 z@yhC%&Uo7ruvh7kv38uZJ_j-Y0?9}TK;aHpAAdIhAyO2&OZGTI_rpxj<0*79D8?4x zg)2h&J|_QLz^?(mpf=OoTEVd56%ajQFswg4S< zhVquY3RxUQ>*^t7z$_*NkZNiHOCap_BXqC^7^jHJ+HI-uA(GaevmgLfXh&o>=J8tE zDB4tRx2k*fd(iJbl+}P3qKXtRTn2s(en0fX+SbUr6xN(Kp?V<;eR_j*O08QK3qCU- zCTT`7s*q%I?3-pOa%KQr8^8{AW*Wg369kVO00a%TeCd6G2oF~Ec^2fZYS7HY+ zRm3Ng^Gf6))>Zq7auG|rRG6}+Q(c-mRTY2{)&QXfrs}DE%BQyBD&VWVEWGYT`B2b} zvL#e`n|%C)6@Xp-mLL{@z0tm0K9?>iuD&g3qR;7*d}Dg|@=1~e7skebs)jn1rnA56#vd zL&(Kc@`J^fU>gLv>>l?Y$YF1xEd<=#mQ7*vzwDclCEKA75|8G6^nJf(L8e!xn3|iacnzBQwZ7O zpi!-)X-+L|nHUA1rH%k%QhF-Nrrh-H$?gu;YT|~%e!mXb0K9LtyoG44180Mt@<$MBA{h)p zB;74LLP4sQh_uOKZ~w3GSE_|vz{d1-+m^A15*`prYCGN@?F8X7N;VMCb-RMS)CnpW zQng$mm9KF09o92#jRVYf9BFZ!48x$<$rg$#-gDEopI{DWxNDRV*y6w=UTh76mh^4g zb~s?Lvwnb=M4UzAm;;WuAdXFgIv1$3^XuabkRBb2V=a!iOg9n^e1|IM{p{LFK|%^E z(J1_lG4um=_C)MS(F#Ddi1!Jd5Dpm2PDTN!NB9?sSunUu_Sqm<2SU6y5xg21jE(;t zK+Hy&LD{#C?0fUy3ijv6cpVwM9UhB{0AD?b{aO&EJq zXZ?T$VUMf3mg7WV_cD{1VYfKI;4y3#KzNZh zTb4CxA;1UHNB{7r+WP`{d67<9mk6b4cr5_D?a(ONpq^jciW1WF>ZLdr5e68}mpNXu z&qi9q60GTY1`KcBHkJ`k_Q0|XE43Q$g`f3m?`lf{am8;Cu#9;Q%;)o^0O8-tgZaCL zfx9CC#JE}t5dR*#*O$*{NpFA?;bvRtA3)ucnskEJU2f6 zho|ojV9kwoh%W`;dEUX?PY}L;2q+Lo;x)zdLrbh{s}PP{yyWY(SC9<68Kb(einlH1eS>Fi;WD`|NzPHqdmFPhRW`2PWW WAjUQw%StE!0000q{aVgtejzCSwTTTifG7&0005~ zNklmftb$LJt9*_?+EByAB~!^e#r0`oTMSp&n=CNl{{ZemGF zvJ*D%e>7$^2}Pad#3VbjhC#EWB73K7m_>hBpsL6(!a<#t)`Wc<>?j%dz8CUblAsHF!Y^O0|Q8t(23 zlN#kg6x+uZ$Kq-2?NDxpt&&e`webC~(rOyJQpLmvCg?Aki+U?|Rf<9K6 z-GsD0ewnWV_`i_wuLa8`w{+xstkN=l3G$1@cHxZSU>1TRC(cA*TqGwZmPRZ~&Zsiu^<;9P_!C9_&y&M?S8j`u}|V23V{_dddmm~Da9B5S;gm`%T{QR@Jum1l2L&!Tj0006# zNkln`$GdkF&Dj6=S7S+WK7FxVQ7o^|?q79rbA}l5 z=ZK4yiTl^`A2IPc9&2FzN(suZV#s3+oR-i6ix2=ftsXwnOa8}ziySC8A9p?YVc5N- z`ZtLX&_y<0KQQL0iLJj7ISc?2_somh9$*Ot^LZ9_X?*bYb)<63@x9`K$ou{H%-()c zFtGq1)By$nD`i>KIsg-30CM39><(B0N3a3(m~d_ri3Mcz%egu@CBOh=36X0_0E7kr z4luIP9v5Bj<4ItTz}YXlT}R6-cN(yS-j570gTTo%uH}zk3xUQ3gmxQxpyi_r__{+v zjh+bz;Zc1!0VY%^uRDpIawK%~fItGS$Z~7<@aTv#TE$lgq!7bw(^@@r2mST@R6Zk+ z!|c1=BZj_0$`HUVBLdn}1(rTdWu4ba5zf9TBjJbr5G*Z9Sx@WflYpW#^@!wDfLNG0d-l)O5yk13=;iC z%lZP1EPhpU1nve22bg04p_&MRTh&VpS2Z9&wIhKP{#AFkTV>ygo}H@(2H;M)_wKL7 YZw56L3@e!?T^?IcPYALPOOT z(T3n1f=`7tOT;V2pkZ|AWv3oGLV8(t7$?fWkN&;qrWJ zdmKP;8@WKr1sed|fXl^!?;{t!jZ~_$YU>_|tG61OW_u+3h0{1IhpLu7Y7mS``I5$B zFQ5e9_09n|OJ|L5vDdcBEdDs4l>WeZ$TkInwKKo%IXjHSms(#tPW>tgu}CGU(caWj zyS>-Wv*DD1TJ<_wp#C^ulalT@?X6F1jIqlIp=HVeUh`(sro!7jvb**7u*M8-pOb)> zC2DUhp8d47_4>pxDqx>?C=Er;(!o%#m2mCfh?xb;GK~2y0KP|pFiTW@T!|t430T(_`ONq}(Fts8pzP5<@VK~yV` z0X{S|kzv-sZLiBLy#%*KXFwdK16e>^hEMAvDFa}r_2dYQblnH>a(vZt+^4+C#;19;W92{8|0Bjoi z#M>bxr_u-9K{eWp@BqzDjRPU<3_AfDo14+*E4*xSAm$PT zAWkI?d=4}G3a$+*0g{%Imr73nJOWY&Smen8*!C^H|L>WU$~5@Ifd_sHIk?)y|0UqQy0Pw8+8+uCV&-dF03k32MF2F+u9JFs85|i#fbDT$10P%E??QI@n z&uJR~>^Zj%Or8c1S_XUwt@`WmDbH-K{oJ4ufEm@2eZzs{qadIG-G6=zmC_kY5haOH z9UPGmS{!^9nN*5Mkc$Zr6}=!Jg!~wpP{90%h%bs5)#$Pph92=quTKchfT5;WxC^7& zR}c~B8UP-?GxBgUBUJSIaNvu9crYkJ3-ot92tX0e_ zfN;3DxcK<^xS&Ar@F>t=K=6<#hH;q2P=(k<1-@m>zSAei@ zA#}RD@7j<7z-DbaU3Y3B%)|5y5S+~DjoUrP5c#~ZG?UplaY)jf zWt8R#`j`6Ooc~AA+!zR&fpN4UXbB8*mAdr6XloEnz*s(z)Aqm=F!Ip@b9@4`vFTf2 zZj!l{kFFemIcm38phL~50j6jiyV`re>!4C~-3&%<0VxA^@XO-}%t4*w8VW)OU^3+c zP*oDYLC3z~9lSyjg8c!QJz$@Bgb*>rdj)fAKCc*oF$Dm|bOL6NJ@5$MPAluUhbg5C mU@}g)6pI{mCZ+f*Fh2pi5H$fqpLjk10000cth;r4eCZoRpio|00073 zNklBjE6bEo2Ro}zNbgHIS0Sy^U{R}$CgGnV&8`FFhgU=w%k)X=lg5xoe zNlFWHJn5(*AE6(ikSP@UPP%h-N}EibS`E^0Ki>Pld(yOj_tBpMFM59$JOe#{9AvMb z1oxMJJk>c!9szbwGrctL0#gByR$cIJpnzo8NolSn(AlLHLVVN#?)sxFaC6l2A)a+Y zxaR`sH{=8XndE8-cf6W6;4VA8qCk>s6_{}y0zlu!@2>zznyWnwT7$QVy(K3>1C$a* zxL)BWOj$@~E(b-P-#$#~r+1Xh91f~V?Qt+(&oz^#TM(cqIz4zwykZx~8!9TOfMSRc z&Kv~ry9!!}A$&N)Gbg~COj-3=UAc=Pd{_iN!3Z4W*J=q&Iile63Js{fJV^No01rJ5 zG6cDLnV8a704r1wM(0ioP{!wM0W*rmZ7^YsDZq`QxD93;+!wtzSb_>L1M9V0EIOd7 zidXYrLv+At$%W!Y1DT?0n2_3s!810OpjZ95rC%*PukP84F;fn&wb( zI0Oz3OS=u?DgG?tPylAtU@G>IXoftL;Jd{zLj%k(8yGx7Ai;-2cFW4X1e!}y%?Sc< z0tsGnu!$rvXf}14Ap|(KzOmAwYY?~KkyHYlWaLK^%VvF_u9y2=Wd{P(eJI=6EC71p z$sQ3|>;W&szS^Y&-bEyPgs}pK?1$CIYhTe+0EaI9X3S>Ron<}8Zvu%}mr*aNo}j)h x3uoZJzn4vA3BZ&?z9{}0;;J|x(H{JNeggm0ZZXu>L|*^^002ovPDHLkV1h$yE4}~# literal 0 HcmV?d00001 diff --git a/graphics/pokemon/gmax_coalossal/front.png b/graphics/pokemon/gmax_coalossal/front.png new file mode 100644 index 0000000000000000000000000000000000000000..efd49d97e45ec1b7830ff88f5927bf3f384be3af GIT binary patch literal 1230 zcmV;<1Tp)GP)cth;r4eCZoGosw#000D8 zNklKpL6o%<2++(FsqAih8IE6B(J{h0@F9lD)9cm>mOagaCIy6HvD;+X7 zIs(TbEgT;KKET~NxE{TdMuDUn3K7WC4jG&-T{;w9+My_d_8le4a-Gy~kU+gp@BMf0 ze{`HPaml$L+BeQTZe0Mlowouv{uelME*;IEC{b|H}8xSdr!TsQ}`v;28GdtL#1 z=L%RL%Z_H^o;c{vQPLBhxvfQO-)Vzr%kY zXW68f0iziplIjf8$a7%4$7|p z!M92ve=|KsF&JV%;anX{`6Y*sPhJJAm)_es2OOkQ47mCF^-l@w!RF3E z3@Kd%z6A@w>yv(@J=m0Sn$rI4p39IRec(VT^he*TVkb^bUqVt5ZWw~xj<78#LdJar z0P|W$vozk17d|1HioRbIxB4%~I+2M%9aFn-9h+|dN$&YCHc0VYN5xpnG&LMbZ(fde zn}U*c-F`uEP6+6Y;*;fO42m)fxUw;fXva<4rC;(}2yCo9XyV|Y^z~A+@#uPh^vHu)mPu!#)Cd7Eq^OU^`jRbHip0xYJqDH>nqd(sojef))jbJ zjn+`}$X@2swbs?HMhgPm#?`emkcl3(9^d@pdQbv4TU|yR7bQKrU3`G~geTf>eeTtV zrRA1dgy8qK)%?sh00|M*r2EnR;nY&)r@O~AOd}1L)DeVhs|%KM#hwNlmw7Jmc&KP? zB{>BoN2B4SN=8H++rV~j0SGwlK@|b}1A-VQF`qVW7SJw$0d8!a_?JXcg^Li)B|u_& z9Pa8Lzlu}r@+JYrz@+~LUJrgBaLn}YB({|?ta4>-3Y-j12CvX4=F=oVfUCJ}YcT{p z1B1K2-6??}vRXJj^>q&yje=4?5B^G(F~R~mSOB_^`YKL=p?0tUMOO%Vx}7zqmB$T7 z#^81e?I94U1wd)-FY~= zKtmCS2<@L1K!ajQpJ*nqy|AwqkC5*CMY}Y7&|C)8>=6Wr=i95(is|`1)mN7vH1W{H z=@Q+kStB-go3K3ZQD3dEHcS81rUr8w!^Uv;;g$I*$=b?-zp%igVdK%&`&UkXsdbz) sK&w+U(Lre?r6fftpET307*qoM6N<$f~O)Ya{vGU literal 0 HcmV?d00001 diff --git a/graphics/pokemon/gmax_coalossal/icon.png b/graphics/pokemon/gmax_coalossal/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..82a769dd9521d76803b51169e8d1d861057d851e GIT binary patch literal 489 zcmVe_ zfN;3DxcK<^xS&Ar@F>t=K=6<#h#4gR!3vz;X>-m~Vjn25gF<27>*F0EYG^+7ts_12zI+eoK`Sy3^@A`lWyv7}Qaz zX%@Md$b*WXLxyoxoMJ}a%5^5AdgS|ss+}L zp?@63r zWG)a85XPG_B|j_~EgoNGS?=cPpOck7X;3FlH}lFqG+I?;rke6w06~9rQE}(t0006a zNkl$-2+@c1rl1+V<60*?kQ_;N2KF z-v$6`$;)c2&NWcW@~5$Gb1njq87#|3BM6oP0>}W8vV3m@00b039F791LHxD^V+eXy zX%Ny7V5mFPfmEPBjWL8x9Y`fXQp(0OQJYFJ<(A= zP%WTZ+e_RW2uI1V11Y5XA9d6WXF~J$GYw?uE1=oJ!h?DUvNX;pq*gRcrD7f(pjC|h@B{CfN8oS7guESq^qjl9I*)V@oQY2Z z;P+3rjR10Xarv|%8L%Pn2(ai(Je}R(YFOtH>M<7LX1`PcI|0ZBz&S`jO@lw&OZpJ@ z@(8@qAcFnTw3z{52>boAxe3$(+>C)sY*VN{#LNsZ?L)Z7;9mzSe-~mg1}uL*3A}zG z$AF;Pi!T#^Q-UA&cb3IQX2GxTUVbm;)@&54)?e?}hIQ&zk~VZztiL@>fQ={$8o>Z$ z2e4k5LDYc?&+6jAv=u_?D%N;`A3vM6!s|el2(0I(b<$U>Mr?AHw7V4?N9X};a(p~J x)7|CN;1}jt{yw=C?e*3G%RIrx{9=EG?LWT2RKB}me7^ty002ovPDHLkV1k5#F3bP` literal 0 HcmV?d00001 diff --git a/graphics/pokemon/gmax_copperajah/front.png b/graphics/pokemon/gmax_copperajah/front.png new file mode 100644 index 0000000000000000000000000000000000000000..9ba3497ae02fd007678e084ae0de606469cc30da GIT binary patch literal 1087 zcmV-F1i<@=P)QSooDMD&c-2OP*BK`X}r5^38 zj4@YHS$4KX=``s1jFo8MDyM8l=#2UU{gefi`YZs*l2g}d^$o2u4GQ32)Sw@90zzKI z0#I6gs<_PxuLN+zPd`q^Y1IxyMo*Sy&OhI9 zI4j~ZW**!I&B!fC=y+VL;jsWGJ8@?T!eI}GOds~c)QZdMc_h|7=c&|saYtjKn2eK{zHHpag=_^-<$xm-Zmou`S@R> zqttw5`n!Q$vk?Ix0FFUu3Y}EQ*!A~tlHJ^nnB^M3<`MAYpbemxLpyv3fQS(B7MX*? zb}O%;=Lii25E)&C(g~27`AQz|BeaWlhU1J(q2BasT6n*Vj}Vj)AQ~rAHm4_@D&V6C zz#7W(8nj?6zMqmX{vPAq2;`7FTB#(k3bm+&jL_G`?S<{+b5z1D+_Xdq*hkC7t)jAl z;w@6Lg)sy{^4za7szl2zMk`k6N@b0d4T=L^$(kVPmUx7cmei+lfKO3m(bod2|>q{aVgtej$ET0ucU;OLSj0005c zNkljkd6vzDyP6ran!l7fx7DvXj^IaI~p;c6|m?6Sh8Itr<1wGrJu25~K}tB=M2d&VkSjI^3|Tt$Chn(u|M!mjbvo}XRIJ+I_4cBTHvZ%7MPpx> zWA6WKB)AfQC~EL&ZXQ59tW!2$K?vWdL2lgNVPe%KA07if#7or!eSG2L-`=oF&2snP zYxW22lmjIT(vBq)_$Ua3CUu z)c?Fc0GuTu0P&7?HQO1mC`dF{0kCd|Hq!GZ8E$p#(I#H~#)qdK>Q@;T*yhsaN ScOhc{00007!zVF_9cR4tCj1?UH55Qp}kQ5IRfh89Y*#xA? z$ap|PYjP7aAfW`%#0*FPAvnEXVnoD*cCi=$C>9j&GXW2{ZvyrJwSXsR4-gvD5DXmB z?tWl+B`xyddk^4uT8$sK;~oH`2$~phWBW2_p(0fSf_f{#%_QkXKthiLuZZg?m_U1V z)C*{04WW_boBm2@LLw`z!l*w3yR(ATl8@Wx(Eyt0xdzt<)D8$9h{C=Q4Zz>?Xr+6A zpstYz=Bw5HE+86!*ZcYEemvgUM?K9N;H3Jrvwa{*oV5ThtGiu)Kvm|`8aS`2>f`PK z6s1L)d%!NM>UxU^d=uD#39iF=^`)A3fite(%>O*iLF3QmJc_!&@oS>8@PHs~)w24$ z?Z6F4{TZ$tDQEEHx=V~W0eOd6XwVs9u<8uKg4&?J`o?UHBJ*KU&;pQxb8w|8~|Cgc(-|R0^QsvcDPJObZA$l8QhJHUfh7-w*ihjj4Y77yv;LZ*ff0vN5P1 zXBjD|lkl*y6M7@jykVhvSl*}x$g+_Vo8$6`>o1}cGJ7-i25$fW002ovPDHLkV1oNz BW_tht literal 0 HcmV?d00001 diff --git a/graphics/pokemon/gmax_corviknight/front.png b/graphics/pokemon/gmax_corviknight/front.png new file mode 100644 index 0000000000000000000000000000000000000000..63c05fb7ab1ec3b51b79e4f14ae5680ff8e84570 GIT binary patch literal 1114 zcmV-g1f~0lP)FxYK0R$sRER7qSY&LdPC-yECNKYXpqLwVFs4Jn000B! zNkluf1zC2To*$+~HZZ5tReQyP z=&p*Djzx+TrP>tB${o6DMHOmqyA}6GoDga6p2s$Du$OA5U<}{SydU$PAA;}|)~oHK zD2V6~a1uh21p&+0Is|g=g{S~9lSPWCB_9BiQ*Uap|1ieZjH2j zFbqcFJGk!k-@61x=zSIJhs4IZ$;U!3Vr#4uqfM zMMcy&JNvzOmjJ6$$LI08*`*>{Hte^zcQeF+(rO(CA(gUVLBG`L{BB-QlPuiTqZYT! zX%dS_FIlUI=kwW^VV=dhQwASSO-T9=m)p$Mz4=^KO-N%!J9OP-TCR~rfLV(!G9{@64q|9Z#hIxC#2m>D=uPNOrIsgu1HT72(FB6Kjsy3;&1C&`06g>fy zE+j##7E?110zQY|dtgE_8S{K@g3=Rj3zR_av%c>6Dl>h%%df(ERCWN6FMD;J5uGW| z_4p=m^TgW#4#@qsTDQk4Lq>(cr0G~|>ru{rN~+F(IC}&0gDdh<7}OmM4k=pSaqAk(ta7u~aiz-Rx_o2hI7T zW)c7vxVp-Qs#x+xR+D;~~RieS~|lp_Z^et8CpisCx{0CBxjY_*6i4tMT;c#<$`UBy=fb3Qm~S|&|lHw zaLPy+l@qVx?BV<9zyJg#rBNMQ$K!`D0Gm~?K3at*0CB=5=+CDBt6+;aPXLmJHPL<| g1PGV^MSZpPFK;$23R^{VM*si-07*qoM6N<$f)%CuP5=M^ literal 0 HcmV?d00001 diff --git a/graphics/pokemon/gmax_corviknight/icon.png b/graphics/pokemon/gmax_corviknight/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..8104a49ba6ec7b667a629ed4da86a7f23b3541c0 GIT binary patch literal 478 zcmV<40U`d0P)e_ zfN;3DxcK<^xS&Ar@F>t=K=6<#hnajGI4f z1m?34zhChXffL>d;TrG^U~CDPz?cBk1j*YTy(uQM zR`_ADnAjQBdj?4w9fa1VDM>)$kkT^KJjz5y0>M+#hQV7uRPvorEDi~qZy|) zP-|VV2{`CA+pKBoofSaAh4r=h8r(L&W;jkd{!mIff@AnU%l(MEFb%*FG-2uqRhY8g zsxS>?VO|IeliuH2oP`ORVoA%w&?SWO*;yErin0zxm}Jm}*q|y*bF2u%7V_sp+=W@$ zQ_2$y135s!NTY~4GC0XG%|2qn0=!1?Tau_UfqSMv(|(u68uq^Z?z#l UX7Cz*1ONa407*qoM6N<$g5!JI&j0`b literal 0 HcmV?d00001 diff --git a/graphics/pokemon/gmax_corviknight/normal.pal b/graphics/pokemon/gmax_corviknight/normal.pal new file mode 100644 index 0000000000..1edbbecf93 --- /dev/null +++ b/graphics/pokemon/gmax_corviknight/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +37 29 78 +16 16 16 +67 68 117 +122 24 95 +215 0 67 +48 51 96 +24 23 61 +62 61 109 +77 84 136 +44 43 88 +100 108 168 +78 65 80 +46 38 47 +255 118 160 +152 27 117 diff --git a/graphics/pokemon/gmax_corviknight/shiny.pal b/graphics/pokemon/gmax_corviknight/shiny.pal new file mode 100644 index 0000000000..94086e3215 --- /dev/null +++ b/graphics/pokemon/gmax_corviknight/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +53 53 53 +16 16 16 +131 131 131 +139 121 31 +238 214 0 +77 77 77 +21 21 23 +65 64 68 +144 144 144 +41 41 44 +188 188 188 +35 34 34 +8 8 8 +255 247 153 +179 166 107 diff --git a/graphics/pokemon/gmax_drednaw/back.png b/graphics/pokemon/gmax_drednaw/back.png new file mode 100644 index 0000000000000000000000000000000000000000..f5e79c0a389966ee7ec400824bccd545e022b155 GIT binary patch literal 570 zcmV-A0>%A_P)xak+#^ky`nM0005S zNklgN_1aNf{^oS+Zzu6bQWl(%Sp&_dpUiwKNNUc9a^O@ zrzfgQZx|4rtyU-tWGNxK8cyCJEF6G+z)=y2-L&r$AbejbX_1rw?;u0Wps241$(;uS zP=w%GQgKP%SMD4(MT-Cil!DtrCFD^#U=0cZl$iRX#E}39g#>PM4lhA7*yF%4sE>e) zsdofeQLs5Auo8JR3=1RPt~y zryMg*ga@(_fSHFS<{?VjpAQKhg_ju<5W=3H1E?QB zZGlkjZ+7TCK2X5Es5Sl`ECDeC?k0lS4%x#Bm~`oH{$IaU-;?I3*5iyAE&u=k07*qo IM6N<$g1({l`~Uy| literal 0 HcmV?d00001 diff --git a/graphics/pokemon/gmax_drednaw/front.png b/graphics/pokemon/gmax_drednaw/front.png new file mode 100644 index 0000000000000000000000000000000000000000..a86a9474cba42cb08c2733240db7a4aef4f0d3ae GIT binary patch literal 1194 zcmV;b1XcTqP)`E==D6m>eae_%7H!z&000Cv zNklf=wo6tJjLI}yxVvkwh^wn)HXNL)_}+{p$H{KEF$6pBH}CuAdm|~z zgGF(@RGwO^lt$5SfBo@fnMGp7!*AEiaukh+tyXLI>$+%P0H1=%=aaAMSV@W|aXSbm z*N^p!&9Q9L4kqs(0^)3h5XmHT+!hiKY;2@yDj8{m4TH(#ItWf$3qXyLNE52-q%MKr z{RE8!yAN83bqPSDFlvbw?ImFKOt!cJFafMEidwC`$#rWPs3UQ8EC7>5!pU%N60{d# zu(N$D?Hr$T#|6_9CqV*j+ylw}pXu?r?{ixMQAEeX&&xo4KTg5t=e*Z3fsW-_QKB-j z8r8p#FFAK!@t;Biz{A9?Xm4^4oY9SRjr0C1&O+ZoBE_?|F|3o_(&K>uoS%P=z6aJ>Vp@ST5530Me3t@qa_C9vkWF1LN# z-b% zS(fR-2nE?93N5^RwGyz+U$Sf}>%CAHGsQH;+$(_Fx~>~?zZY^|q={j*B|v4RT#SaC z7HNtHpy+V03?yMM%Q zrv&2Rx&)GBY?gIh;~mfEephOgfI_be_ zfN;3DxcK<^xS&Ar@F>t=K=6<#ha6tpsWR!cxx?H@@)_{R$i)eUjV5~JH~y0D(5Vi35Q4_ zTc~Ser-Zdb)!ydczkT+9UljegjH!o9Vt}rO>k|b!bhN-B+tgP-r2w$+6=U}~Q#@O5 zyl~<`(}M)4*4{!|048>d+C$-v&q|k1OhFbb5!tbiXC{I5!dWt@b5yXeeb+)PmkWWC zd!dCQw^XRs2XZJhxFM)As-T)Js&H-bQ@Hj*S&JGwykjJ4Z955GxyrY|< z1I7{L9UYbzV2Yj(J0;79BdEFpWBIVX{x%<9ThBi#HgzNgv{RRR5$fir7eI00077 zNkl&1%~~5C`xGdhDgFp`f=2S}+s%Plz>f2r=hfp1SuztJx&+N#)xbR#P-JgA&t`fvC5JbzTaD^`be%yW}kVlB#p<(>KFw62O7l>0Ypa^Dp z+!h3c2LzGJcwaIC+6Opdm63qqz6gJ7fFocDg^8*nd{t0{=cvv$SnpX3 z05v#0PTC!EL7*xE&xVo~XLiXP}s49%GSLi%M;Q=sIO1;EW{^bSI&u9sr!B zV&NLy6rp4X=#`n-K8hYNN?rHB3~ZZhFX{-pDg9}z+9$}&0o$e;IgK&UwaE3WLLFDD}PETJrt-8dz#s2>OE@^f+i=0o(+5g^IR}8^30008( zNklAda6~jEAy-6HLWh(jbPTTPno8k;98_9L zs((R-1dI*FuVhN6Xy}~MP8kBB_L4y)VEqk!C&#v&R+ru&#Ji8)`#yc&T_$sLWf%Vn z-2m*{fN$!3GrOd&VG1*+1jP4SfL9;PygEZk4QLjaPu0MIsjEb2&(BS+0t^mjQwit? zCaOdjR010+06>{RvpW4-fPULVMV}f_i6*84)FlCq3UDq>RQxGpzE2|gcDjWA6}8z+ z2P`QP)BF4nz_}z1nA)dt+3$ZPAk|N!e^onD0n4=@-~^=oYt0Id+mTK{is4#_;1bYG zn+VOOF5L@kIw^p$Lh}L^B8PvAFjmV-pd|LWOhF=Saih2pi z3un#lIaUl{`^}C$CIkh+(Kpss&Me?kM63NpfSpV31Kr(^8H({ zxK*f*EPaeD!%s+~OCrDl*k-KiePSaw9d-aQ@6 z4C2FF5^!+#1pRuae!jr30hZ9H!7(9|jO0$_R2mxi(p!u6)@Oq`tz6=$PY19a{f(3&8U qi^S%k#f)@iFx^9Ny+YWod2|>p~3lTtejzCSwTTT27j|<0003u zNklIVuJ47&QEk-B{ZlOK*S7Y(}j!5E7MUHx#*ma{>>@5ehz W$JdmWXo0r?0000|K8^R)z!uQ{r&d#?h6YG3=9kn4Gj(s4i66xEY0YW0006k zNkl{m{AGPB@j_IdVDXhUZ@J#5oAg#fw27j>DmUWz{LehSt1L6z5Tpi z*{y>Nfkc+P$!?f*Xg|6@DjzxswG`kwC=W^#r4M4IfGW{^7*HJ)aJSSwKP@ke3j9#E zrXz75Q7YYKfb9yPI+^rkfItnGpJ;$CfS@3%5&9P($RX1}J_7DO>`5iD41tEM02=_A zIp{VtD#(gQu7Kbfo^}9G-U55*v5Ds%@*V-AT4^l6FM$8>eBP599~RO-8S0g9uT zx`2L}yJ>qEi)IIW;{Y1aV=@dE3#edj)69_uMw`>TS)~S=*Z^d9ux6R=X9sw)4#tBE z928|A9DfEg?e)tpNG{r%>>dkYH-3=9kn4Gj(s4i66xqsObX0005b zNklQXX=^0iGKY5V|y#0|s+bf}N%^4zM{PkTR{C z$}<{BHS@$|&;g%xY0%L{0nM{XM^BFmFf~93Z=?j5e*n>eH2_bW&VfXkrdt(k6L-Ll zGd;M7dE^Xrg5VtGBBj1#XJf#5yR6e%HY7Z{0C26t{o5g^gC_Y1!_ylB zVrUUEK?vC=B?(X5i!|WAEW|;GkDcJVi0@ytjB{RyLI}7yi+Dz(_ha8ch+F~U9C7gX z{=CFG&|ZQS3iwU?z(M? zd3n9GwEy|}b92q4toE^iS?R%v#jGjz_9^yaQj~km#iY%>DV$+pSwTTTSt_JA0004h zNkl;?7`LelLXW+->LCa|Dg{1Y{5;J%BtTI06sW6!6Bg-rgE8K<3E;(6Hrj>IZSLsAXAPPV}oF$ z$pGuYH84z?`*#r>IYVw`nlJ;H5Xy64E85oAKoXAbFT)J9o9;hWpMlODaOq{j6;NN! zQHk5&iyv|PSbq_Sxc5x48(zU8ss7v>;J3q%+OLyQpbj(<#HpaI;k7Qj5(gQ+7h&-G z_bLoN_6f2uej2aBc$PpBhQIRfQH6m#>>^AWb}LK*jW8)G3iHUqWKe|3?G|Cqd7r}6 qzcvZ8)-gq4)^?gG%-T)2#FJmuW+H+l$HZX(0000y>7xV5C?Ea9lKy!6d}4a6)Gbo@B}yy0EDS80h5KIOe|SDpvr0F-V^7H-Mhz$yVc0f2D}kZqYJki2D_aN`z* z2Dm*ZuPAc6NZ%=|6D@xUy{|$}#htp^o@O;pMRohC?fNV$&y^%{bx?PlNuQN998`r2 zn50Wzx3Z=xX&`sn)xeYLPq#d+?KBfh4XFH4Yr{eK%o{seL|uXrZ9!j%l@yhTcHg5s z4+w;;6=P#ZyH(nL;X()RDk7?B;#qv;6FwCX4K{Q-8X$H7nkkt3Y+M10Q*h6E7r`T` z0NA9h`Z4vrx*kB9qH-7ehCG<+2P(u{2Iev>-uWkeVl4ph)*{|fS|cZAi`dQu(p3=; z-vELc(wBl3K%hYW55i&Z4Zwn`fqn3+I+(urx80PrW8Eco$;rWx>k;RzlAdz8R@qkpL%Ei6ZC Tcuq_E00000NkvXXu0mjfwZ`=T literal 0 HcmV?d00001 diff --git a/graphics/pokemon/gmax_flapple/front.png b/graphics/pokemon/gmax_flapple/front.png new file mode 100644 index 0000000000000000000000000000000000000000..65c716e9e8e080a202680e086a2f2ddd4802ea2d GIT binary patch literal 713 zcmV;)0yh1LP))~#)?RdLMiFRSVDF<(m74DtYZ23`7B5%+R%$Rq&?L{Ru2yktL-gc00071 zNklBjE6bJAV?vd4MOk+cq+Dpc^GO1Ugi|VPgRPs~`rSe0>5D2Acs5>YY z$E_Jk5j1Ot4uwvQah6O)aGg6C4;_-BLq9{GVnb`4bsm}r&hr1=yC=98LT=Hs1ek zTpXIEIU#Q@pKl#%a)LLk0sh4|J!q^0=60q91{vxBAwwBe{|jtL`C%>44l$Gxzmxi_ z7Su2?K#=*q3!nyp#hx!4Y5t} z4$9`81BPMHR`2jU_xiAHG61KQcd0Ie%{h3`#M5@{22KGyJ!%7E5Y)xU4LYLDHdz6P z8e{jFvm->!sf(K3vX^J5;3213vvE0N6MwfAFk;N!iR)rfM=EfbE&i$2@(8%v>p;h1 z<_lKX(f`X^)t@n1JV|*nsTDbKoKf1y2-Ei5b)}1>SYTL~sSr?wyzUe<037nD8W4 zUM3CWdJyIlB!k%*kJZ=T6Cun$VsLWiZbeE9)&(3Nd+@>cDXaiS=!PN*@H+`N4> zchp=E9B+YvJehu70SpGA3t<9qp3UA)-YJ0Ki@-OJJ|f#SMMnWgEmlIPo( v$F@lt>1sfTiG{6=MtZE?u-r?Z-)#K>h{FmX(t0Xf00000NkvXXu0mjfX5Br( literal 0 HcmV?d00001 diff --git a/graphics/pokemon/gmax_flapple/icon.png b/graphics/pokemon/gmax_flapple/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..b7ecabd4695c5e4b94d383ac9d77c45833c8bfac GIT binary patch literal 418 zcmV;T0bTxyP)$w`#f{g@Nf*<(OC^HU?x_q6<=&ki8NK160T; zak8M+kj7*o{v!lsK;kxk^8M^PeL?Vbfe%yzjR)Qr4%jWOT%c~^b0>2r(9VEO80Fe- z2(No$UD<@;k*q8Loh(zkCD@*3ne(x2TaMjPAaz0D1O0Y++gPcZlH_7+{t8?s@^vJJ zX%uHQqnfkND{6kgIhz{*f-~&N5TXPlL5M>}S723Cf`)hDk@EXhAs);=Xcp!1%8aL< zXW?B;2Ea1S1U^~gC|pnF$O52VCX>|JyG{~khkdYj{(b#dVYDv{oOr^(u_sKR_Ymgr zM`6~kFp`n{Mi}i2)Ahn264pbgpj=`ljUU}v8A;oZ4qML;+5W8`AAg4i0X#|7J^%m! M07*qoM6N<$f}$$DB>(^b literal 0 HcmV?d00001 diff --git a/graphics/pokemon/gmax_flapple/normal.pal b/graphics/pokemon/gmax_flapple/normal.pal new file mode 100644 index 0000000000..2d5dabef1e --- /dev/null +++ b/graphics/pokemon/gmax_flapple/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +16 16 16 +166 49 57 +119 38 40 +198 138 72 +141 66 41 +233 197 88 +66 118 56 +210 57 77 +179 172 98 +249 249 249 +44 72 40 +218 208 139 +57 164 61 +213 68 86 +15 15 15 diff --git a/graphics/pokemon/gmax_flapple/shiny.pal b/graphics/pokemon/gmax_flapple/shiny.pal new file mode 100644 index 0000000000..4514eb418d --- /dev/null +++ b/graphics/pokemon/gmax_flapple/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +16 16 16 +55 143 41 +35 91 27 +198 138 72 +141 66 41 +233 197 88 +66 118 56 +75 183 48 +179 172 98 +249 249 249 +44 72 40 +218 208 139 +57 164 61 +213 68 86 +15 15 15 diff --git a/graphics/pokemon/gmax_garbodor/back.png b/graphics/pokemon/gmax_garbodor/back.png new file mode 100644 index 0000000000000000000000000000000000000000..645dae3c0124f82b3f6f1f47c7258a4c6eb5e848 GIT binary patch literal 946 zcmV;j15NyiP)c7>|Gio%q@?}*{r`rB|Aiy6R_3@VElXDarYqG00009$ zNkl;ZR-^o~ z1!#(T*%s()0EIUI{Rhyx(WNn|^)%f9W>OmYN+Avz5~&Tes+9VsO9ixYEpU2E@sEaH z2Vlw6-vWDZO96HOY5_4O0U6>Zff*M+k}~e z55WKg!}In9{!^Y94g3yJK}d;lvww_NlK0hsZ$Fh_s`5`n<;!6%lvo!8)#y+q%4c)U z^IUjV5HzJ{mQ!;@fOwvZ=#(k&j0z%mfnKfvQEn<6mp3~AR(~@2GFKI*KSw(Xd08Io zq;eptUrA*XLpAI9Nr~$i)Cte3U0^yLcEDs+t;U&M!2|+CL81nfV54qnJhB0Zg7U#D z%&Mej-E`6dqWer>26a_+gqpVj)RInL0VV1&PfQUbYb@wEN@f7B=#w+!q0NXkFRt%V z03}#mkGd8u1u>A<3D&4r6UHiC!2!hJdRZumx~eDIW{+&N&GiUCCQ#SO>umMQthEE= z;t(Y!C;)J$-@4w=sexT6iJD`xGY!NJfX`tGMUkzNs~PADd!Yk}wFFp#%vLqD0?aLO za=t8}kmIB_7A-(OY9k@<<^6bKc7*;}ZUN|_K?!*-uOFFjfWU3yaK3(!k1xyOVX-iP zT|oiRoMQ!m;^^tWfSAuSdA@|@w-@Ovq$=L+5osIE$@&27q0At000Du zNkl59pLT?eu-@w~lJ8|m@2{E$l@xE_< z@4cBfZwrP0GRB&ve+Nv^2U9x#3OhA9>r0FQe}w}8gR#CAGe;$G)fV%z=SrD*?g-!k z@AMaHKHG#dqX1B7Wdg3hxS3CfM-gz)G)e`3%~8Nadzb-gibClXz)IXqXXOkSNn;Gc zNQ7YuOa}nm7)gUgB96o-gcL8vA*K2VP#8zM=n6q5gt%YDLR$bo{Yp4)M-IK+Y%9$cGZL9G9lRqb9GT}@Mapi4s;-FG* zcu==X%Cje}TieO{tP=@GMkjz$IS(mt`uZ2GTXK&OQjNFeun$E8s94Iguw9LlC4__HFU?{&5f1?XKevl`qCYvw!$TJw z{EaYs+^zQQqT463GMO{^bK{-;y}kq9&MRE8>@pU|gg~GxzrSHYcHTn!XaLl$ zBBiBq5uk#Ui3Tee3`82g+OJAdDpI2m#jr-caij&%%7LM>b?H0`z}ofpXGsiz>7ZH{ z_hztHp3%)cTql$5U;xaSzE$e)g#Xn<_Uuz=U8Boa-^4Tn1cLd(LW9qz7uCOW6Fr22WH*j(pa9~x{USHb6yS@U zt_UL01vp~Z1Evw+=1S}rv-_vO*+r*Q)l%SNa+t7mqk_4+=+vc@X27+CoM$Vz?t@2% zN3!t-2Fc9~FkFmM<3>lF>Rl9pe?X4N;jEixfsO*7R;&~N&Zf@wevLtMjt(CEHM_7R zVxQs8K$EJawBJxVb$9N53?y+5$gEsm62bE0S_nk7(~VN_ua^=)KKB{ zV`*X5d0%y@ey=xo9~NpmNJw?(yolfY@ed6!<=0c9NcCRt(mk`LJ3ADKx+;R!tEy&fI{eJF3%q^#Sup96zds6`F!VGfj; z%drX4nKlx(l{`T4x?R@EhX+696$5bgDlo70+UHg+aejCJywV`83OJ>#6Dg?QHhsD4 z>od|S%ik@Edw9uPUA>UELd9j+#+RjB_V_tzzx7;YR9Ck=NO%sYj9~;7xwFeWPJgk9 z!CaW>c(A&gH$#=VX>+%oS-Fk7NAPeE*ur99ZYH6qtce6soeQgZALk~gX)!R?4?*jpAZ1F2f#ZH$P)O>8klbjbwsaJR ohCiFx^AO3mqUnfbAyp~3lSshMG6SwTTT0qzsQ0005| zNklIasKvLE2regMe3 zzZ5v8DInNZ(WHbzY7(|BgYo15J}asAc6nW$z*v5{zkMS$M*fK_9lgCQma|+fvO0jo zl@FKd`kP)ZW~P~dl@GFza({XM>82eiff-4X*NZ~>`QcT>VYa5hMqWrM%fKaq!!vV| zZ)BmgY1ZUmZeEY1Vlr(9`$_Ayf1#MddAn(~{z#`Xjn!_{EMrr1DyT?>-UeU`N^GId zwB9zU)R`MGV+pe+0H)^RsJc5CRG2h9j#EAq<}M$^SoeUPV`PV`>GO9ZjO+E_WrW3Q z_`;6UHVB-+kmW~Ki!f^fa7h?3!-O{5<3Q<9Vy1ED!{aevbA4=11i literal 0 HcmV?d00001 diff --git a/graphics/pokemon/gmax_garbodor/normal.pal b/graphics/pokemon/gmax_garbodor/normal.pal new file mode 100644 index 0000000000..5d365044cf --- /dev/null +++ b/graphics/pokemon/gmax_garbodor/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +16 16 16 +123 106 90 +189 189 189 +90 74 65 +164 139 115 +24 57 41 +0 172 213 +107 220 39 +41 106 74 +253 253 253 +254 188 164 +235 73 78 +230 218 0 +184 41 45 +239 143 255 diff --git a/graphics/pokemon/gmax_garbodor/shiny.pal b/graphics/pokemon/gmax_garbodor/shiny.pal new file mode 100644 index 0000000000..a70820775d --- /dev/null +++ b/graphics/pokemon/gmax_garbodor/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +16 16 16 +106 106 98 +189 189 189 +82 74 74 +148 139 131 +16 65 74 +82 238 106 +255 189 90 +41 164 164 +253 253 253 +255 134 134 +255 133 35 +178 86 230 +184 41 45 +75 86 255 diff --git a/graphics/pokemon/gmax_gengar/back.png b/graphics/pokemon/gmax_gengar/back.png new file mode 100644 index 0000000000000000000000000000000000000000..67f5bc6070d292f7662a217ebfd537ef64016f8e GIT binary patch literal 596 zcmV-a0;~OrP)SArfh z_X4w2M|p`CQ{YicHUwp$(>%Yv6&d7#O|cL`0gzo-hr&Pv#G~H^hX6^0pW-pNtRm(& z3k(3q2AGh~7J5#Gvg|`F46^2LK&P8&!VC=NC|`Nhx~Xs#izk{}5_pbf=xHX>0^qh; zbYHRnFPGK;RV?N(0$0T^xA?g!s&RI&qR!}lbXBc~0FZ&Xs-|=Ad+IfpT7|irt$^r~ zJE5eKmBbo>(5E~<6%ziW^Y>+%w^>S<;8K-SPxGM;FiW7?ot(#|8%{(j0kF@L;WKsR4^7OQ_?;giJFIM}oQ^I(aPKyy5J zbGVi`#W&Ri6v32~lb0Ik5jJZ=mcUS2gBF0r-cTI@s5;yLwD0l3TMf+lu0R{$ex`h@ i4nB91{L%paMf?EDoD0tya?C{l0000wzi-n(6vxl4#O$+OR4WXzofMU+&V{8=A;&LE2BbE4i$v*QW(rCdmWriF zZKY%LOeSxcGa;0%5`O^`Gb3W@z%g;Iz(cUX+{|+r)&b@W zVxYs^&nF<(09ylqJ^)1d0Q&U^jM-3BcLMP`z~~k_uC&ep+W!802m?Z{>UQ*50aXtN9*^cXBRrl5Gzh!eg##T8%>7xHQhL0aapvoq zDWK|MKs=+GVv2?anib#?>DrgK!9#X1@cg9u7rt3m|h4 z5I!y3tOJ-bYY{-2y#go)ioq)YH`vA^f>ah30XPRk=h)gZOF+l?umTthz%2l&fw0MJ z4IC!sMv;*mq;#{^5a-Y{0u3aIX)FQhNiS=mL)3GEB12*ZOTcoa@3w^ytq1~r!P?1T zFf0Kdf!zRs2NMWROQ5j?Jj>s;5D4>V=cE7<1?V;{yd_)$IuPv~R{^>yE#J%33IN5R z+sTn=sJnq*V4ZVUPAOy!m~NAP@gCPHfZ|biKRJ3$z_ykp&l;W(W2Xet^dvn+gW_~- z#{VS7FQ5eOAn?|oDqYg$_HTctDFKTRY$JU+QU;Qm^nZLAR{(T*r53n1zroEjKTE3s zOShH5nXZ(8Hvr=$z*WGzX<5ur@8!184K8J6n;tI#wH-|M=i-0Sky!KG`=9C;d|*#V TrfI6y00000NkvXXu0mjfqN!aP literal 0 HcmV?d00001 diff --git a/graphics/pokemon/gmax_gengar/icon.png b/graphics/pokemon/gmax_gengar/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..31b59d5370e1b8be69aa1a172004536df954693a GIT binary patch literal 554 zcmV+_0@eMAP){unldm^`H@`98!*mRf4Mc*0c}$^=onBiRd{lE(3n$*pS6 zcHD--g1|$pd%4`%xtAnAE_4Y74G%j7IZEty3U&uu>jc>|sOx%*_RkRbtiUqbE>MO7CYZi=XVTA--p z?F{1_VI9$#W zh}Y|;Ow&BZOG5~;g|CUof)I_YwNPGr0Pn^>8FoXaGd%M@um2S09@}Ooxn0}ZFLov=AK>92UwgC3|Ss3RB%BUBHdtr_)!}~EBCmok83jnzo{E#?{!+j?u_#ulz sk0AJA(lh`>mfjEKoBFEy>;BvI3GV`?&j8A<(f|Me07*qoM6N<$g0PnO>Hq)$ literal 0 HcmV?d00001 diff --git a/graphics/pokemon/gmax_gengar/normal.pal b/graphics/pokemon/gmax_gengar/normal.pal new file mode 100644 index 0000000000..963348184c --- /dev/null +++ b/graphics/pokemon/gmax_gengar/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +74 41 74 +16 16 16 +90 74 156 +148 115 180 +123 98 164 +150 62 128 +116 58 91 +204 30 91 +146 6 52 +180 139 189 +186 50 90 +255 246 255 +255 131 55 +255 255 0 +189 172 189 diff --git a/graphics/pokemon/gmax_gengar/shiny.pal b/graphics/pokemon/gmax_gengar/shiny.pal new file mode 100644 index 0000000000..b69ff97992 --- /dev/null +++ b/graphics/pokemon/gmax_gengar/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +99 75 99 +16 16 16 +168 157 196 +252 244 252 +209 188 214 +221 144 195 +183 142 184 +204 30 91 +146 6 52 +254 254 254 +84 84 84 +255 246 255 +95 95 95 +140 140 140 +189 172 189 diff --git a/graphics/pokemon/gmax_grimmsnarl/back.png b/graphics/pokemon/gmax_grimmsnarl/back.png new file mode 100644 index 0000000000000000000000000000000000000000..834e97f85380bf0023f32ae569538486f32283cc GIT binary patch literal 627 zcmV-(0*w8MP)A_Z;NBCC>0lJ-$FjKbt1JDH0NMR(+ZNo^w7cCJ}YUrBQZ2{ujERlfQJJ68C zog=xX+xS=k6A3VI*Z{Etl7JRA`;(XgJy6o=3w{KkZ~pZ3Y5)dMZ0!=;TE*{kX?O$P zs{(2dIGx$~YgLodoeN-N3`!}=3w2Pqn@f7DdOQ_ajvUuP;c=o^`Z;z!m$PbUmAcmq zn5*~xx&X!>JL5wlzEbq-2ADcJg(0ONi}tw%XjDkB(-WDFqhWxaBLIm`G6=Zfcx_iw zXdd1M7-;_Z+~Y#UH(o@ZUG4EGF%XbJtA6IckOj~W8(GfKx2QEGldB%Ke?&<8AYkC- z#tMW!UgoUFA8Xf@81#&0HQ!3J3M9pn<2J7W&Xi1Ko8}-F;D7y6{RO<{&PS-EAg=%b N002ovPDHLkV1h>s8WaEk literal 0 HcmV?d00001 diff --git a/graphics/pokemon/gmax_grimmsnarl/front.png b/graphics/pokemon/gmax_grimmsnarl/front.png new file mode 100644 index 0000000000000000000000000000000000000000..a49760571750cae4e97005a48e0cf82bccabf468 GIT binary patch literal 994 zcmV<810DQ{P)WGgbT>u{-q&x(X&uLTm z4oGt_kZV$>Hw?H*Wu!?yM|yvT3`srs&}9pW(*Ablzw=@cJhJ#>8-Y^o*Xq%Iyle<% z#v4!e`@Yy-MS+6Z7}$Q#Bl3)Su)T5$CI$%5QNUG67IwHY69d6^rz5V>SC_AME}QNL z%bj)_5tFZPu9NJH`sJ&amxvzy_V!w5XKwlAX1Be<3;X5G-2x4th*a$6VR_~Mv|ru6 z3H>ad08)K^yWCy8x9;{Hk~3jg!19-8JNWypdywf0(z%L;04vSgKi>R&_mf*8q)Juj zMudR)`tJ3^kG?`8a=P$XhS1+Vdw6w?3A(rf0*1lh5l4Uj>+km#RTWlE$Z#N(Q5fYv zAHR4nEM|BH2tqU$AD_Pa%L);8fFFq98xel<^urHifL8A4W0-PXIcsqF8*~7!>D$i+ zK->s_+3q9x@GumiJ6+AHYcip&w|#)e1myeUWm=)Ol=?nEx^go5-0q1C)xbpvsRIh~ zi+?*CAW&=9lOU-W*R=EEQ+Ep!gxd9E9iq?M;C!-_Cr{WCzMIZsF?u~)AD>%A9oh%4J36n`er$NxZ3Rb@0N10r;{uosagl&?vGNn1)L+{In zSqWkLtaBwzdQibDl30IBPxH(mHci7lNOP=hMcLIN7xZA!x+aUP1Y-{E#T{0ZVU2T3 zDX2PsA~wesCjih}O^CKB?gcS%3>5uO;VT_#N6ky_#(mWu#muh54yel!AW@<~DoUB< zz9MUG1hCX#xS;!GS%sypra)t+y$ zWDl?$E1-Qri9HXbbbeinU=Ha)1a;v2G}0v01?@9xvJT*prrCWOimaFyf~!~^0jGW0 zA9j3QPupZ;lCeltnFcYNFmc`{#812gRc3j*UEI QIRF3v07*qoM6N<$f}oSiYXATM literal 0 HcmV?d00001 diff --git a/graphics/pokemon/gmax_grimmsnarl/icon.png b/graphics/pokemon/gmax_grimmsnarl/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..23bc5fd0dc2667bd85fbfdb8c4269ff74b12da23 GIT binary patch literal 493 zcmViFx^9Ny+JPng6t;q{aVfshMG6SwTTT8;*KU0004a zNklI#nvqD&cGXiFq4Z^`?4TsiE-n^ zNednLx;y*s`!RO*K%`?KsCh&Ts(Auz87zp=TxgaAzQj;R#}%wcq3yI34jVhx zw0kQpM>7epFL=E{E{mX_-##{mm!E*XxVYOGI|(~;b1Ph_NF{Eysw~DLSae28JEnl% z$#;9N<<%(E79XD^3d~)BTAebC50%P;sAb)7&S}^{pvFXy(h%!>-cU!6M9=go|yZ^?Vq3j0A@iGALoGSW_+9iv;Q41_zf_VFaV=Uiwq2IM_~Y_8t01x zFkLy)br7Z+_f_pdp?56LNI>h!({3_Wj=z<^B*AS`3SZ; j;e!|Y2R=&tM?O9Q2FN()#qDUn00000NkvXXu0mjfi4@%V literal 0 HcmV?d00001 diff --git a/graphics/pokemon/gmax_grimmsnarl/normal.pal b/graphics/pokemon/gmax_grimmsnarl/normal.pal new file mode 100644 index 0000000000..806034cb62 --- /dev/null +++ b/graphics/pokemon/gmax_grimmsnarl/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +16 16 16 +38 19 63 +67 53 104 +93 70 148 +53 41 84 +53 106 60 +71 190 98 +253 11 66 +64 149 85 +248 116 160 +201 201 201 +253 253 253 +233 55 97 +247 92 144 +15 15 15 diff --git a/graphics/pokemon/gmax_grimmsnarl/shiny.pal b/graphics/pokemon/gmax_grimmsnarl/shiny.pal new file mode 100644 index 0000000000..5d5b1b75a4 --- /dev/null +++ b/graphics/pokemon/gmax_grimmsnarl/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +16 16 16 +94 89 96 +163 157 165 +221 215 223 +138 133 140 +107 46 103 +199 52 175 +253 11 66 +152 53 133 +248 116 160 +201 201 201 +253 253 253 +66 86 172 +85 134 201 +15 15 15 diff --git a/graphics/pokemon/gmax_hatterene/back.png b/graphics/pokemon/gmax_hatterene/back.png new file mode 100644 index 0000000000000000000000000000000000000000..68da7572c36312333c62a0718194a0ea4e3bca81 GIT binary patch literal 748 zcmVXW1yC5S8DKpGQU@3SpcIOTmk-1Hd{EVU4u%vT^Tb5TUFX(89@vU!HKzz0OJ@+@Sn2)OL|^ zk2fN}0-Us|KZhAx0DSXPVqiLic1&2)s>RKZAqMa;d)RPB96!1O6aYF)zx+f59M9pG zC#IAZ*yC&?V>{ULzH*(r3I<6X1w(ngf75OJ)ZjWXP64;NWU} znKp}oGBq*qoP>ZB3kRcC6WNZztKe`uW#!% z1P2v~@IA(*ju6=DR>~}Svc&lMvINqq<%P)d!;~Tdk{l5VoKP`EI7R@^s^Au0Kg9rI zc14$8fy4K>L&cvCc=%bJe#C(NwzM;l-2$ashu?=wv<#jjk8=VphvSmKBC;Y3afpZ; e;1m=8u>Jyc3QW9jUp+|x0000DvB>HFtiRuskHYo3!sLmd<>c?dS#8%3&fEFb+7Ay8BjE6ae6pH$w+q>Psl4kjQeOv`ceRcS}ks?IhU;fleXiOh-epk_?6p z0YNf&O7PsFAmXKT2!ssXOi~XX8%J}YgMLHbogI*Lmfs-RdY|5Vcakwe#i$s{rCbR=L02AEe7FIQNVKeUa>yiVKUl6cmS}T1NB8-6fp$o zGCv1Q#xlZl!Y*Uk5*3@}#7;<70p@LCIA%AaG9RJsd7k{_H9`0aFg+Q8q&Ud-kRX7A z6b)H~WJ_oQm^)Dr@_k~VyC%| z2x}++ZS32QN$DHjg??fYMWAi;KE36<(-j#pV-bJ|As`Q#U>QK#`C&K|*XA>-0Id(t z<&ToEn#hqNsPfM}u1jEwoav(?=VZtpsq$cjkcTDp>D?X&UxcfQK2n0{Ey_1n?+C3;D!NybQ<|N4*XtYC6#?#eF~< zar!Tgd*Y?4Z4zBmfOZte@pt)GP-$v9!V2I=kQcuTq~5*g5yxRDXH)K$QN4>t*TdrQ zSumT;uK%n6=yoj^7rxm-Nk5e_ zfN;3DxcK<^xS&Ar@F>t=K=6<#ho(WPD7kL&UR#vZ!F5Nfh2&|tdRLxwJL`>;PEOB#Z$ zY)&I^6W2B!3-m508WKIBAVg=1kOp+QH1?JfQVDdH@fb4`QT5%v zs1O4a0kOIFa;mCX&6*C(KW@A^is@4%;rv3N;&JciZ>v@VIv>*bn|)5HWJd#zS@E7_ zYiQ8`NVAMDD9KZwsHiVFD8XNkFC2HgiAMF*5`d6Q1XyuDc2{q=Kb=N zxvmD~Fl2VnV8uqDk((q7$*f{dFAiVXHNk_&V;iW~TOzy4R^8^8WkY*i{%_X56GpNN zVT?hRFug&RFseJ%5~gq85~c^=!hoq_6lMh6>4X6z5QK{)ikf{ ll)?Bh0%rUGtChd`@dc$disl7c&t?Ds002ovPDHLkV1m_A-t7PY literal 0 HcmV?d00001 diff --git a/graphics/pokemon/gmax_hatterene/normal.pal b/graphics/pokemon/gmax_hatterene/normal.pal new file mode 100644 index 0000000000..26aac7facb --- /dev/null +++ b/graphics/pokemon/gmax_hatterene/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +16 16 16 +114 122 177 +200 233 255 +172 191 223 +148 143 194 +245 186 194 +228 137 160 +229 228 239 +193 89 116 +254 254 254 +180 162 183 +133 109 139 +217 206 219 +249 213 218 +15 15 15 diff --git a/graphics/pokemon/gmax_hatterene/shiny.pal b/graphics/pokemon/gmax_hatterene/shiny.pal new file mode 100644 index 0000000000..9682f1ec43 --- /dev/null +++ b/graphics/pokemon/gmax_hatterene/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +16 16 16 +101 75 95 +234 213 208 +192 166 187 +144 116 138 +252 153 172 +217 94 115 +225 193 207 +144 53 68 +254 254 254 +177 134 149 +137 90 110 +217 206 219 +245 186 194 +15 15 15 diff --git a/graphics/pokemon/gmax_inteleon/back.png b/graphics/pokemon/gmax_inteleon/back.png new file mode 100644 index 0000000000000000000000000000000000000000..81be3b2c258fcbbf045f9ecbaf08de3461796a04 GIT binary patch literal 725 zcmV;`0xJE9P)BjE6vxjBKfj(3pDYZ!I@J?>e+OW$Ka*f z0^I@~gtHy^19yXC7gTW12H{VLu z zj9VJ8E*^Y|LuT3-JKzyDPV6C60BHfR?ok1d;fD{4-&*$ohZHjCJ`*22D1R-XcYYF^ z$0+f^qZ{#8Askr&^-)3zNbGR2<{$$NqyUTwNC>;p|9AcXDhFiK2faKr00000NkvXX Hu0mjf!h=Zv literal 0 HcmV?d00001 diff --git a/graphics/pokemon/gmax_inteleon/front.png b/graphics/pokemon/gmax_inteleon/front.png new file mode 100644 index 0000000000000000000000000000000000000000..6f55e4e29e35aa8a814124e6e63a5fd9f207d1b6 GIT binary patch literal 926 zcmV;P17ZA$P)6aQjT&a&uCn-H&Dm#37r+pz-~;&f`q^4)NL){g!p@;Kd?0BhEVaJg(m`-%`HGr;=& zN6Pam-3Tag1Nsz@{Ly{`j43Co76A|}B>;NZkgLiGMiHPT0HHn-HV?6;yv4P`*uosJ zQV?=mRAk31SPg*%g z@|JsHARGZwA}&aL-Mkq=kH{EE$~1{4PsSVHf;9EPrK6<)cZ3jwZ*&TPEgFx2pRholdlmpr zg#+^@?f_V|2>|A5#nH;?K*bJ$G!uDW6C}u;_c|P~Q(OW-BETkO9zccRDLf5?05E_< zhm%T}5LtWJ>BF5673<4@uOtDa^o?Q1Fxv33_8ksHO9Ep5wP|{Hb<;ErWBpsX$2#1@ z6exEs%ex5y=qT@s-y<`(26bP!-iQ$MeG#$~{|5}~2AkX(v|XxN1O260TrTnZNcdFr zfr|{#Z5b1II*`u8w24|6MgqhbfLG%fbJb9&5_|$cVV`jV_|0UT5Jjj=(A;!8hj|WfB*s;PG3a5UL9brnR?~~56K4lXfalgFU_?RRe&#T7E zoOVjmTXRJ~IB_i{LR%SOF6d0GChv8MNUZtjf5YWdt1tsQ!TiFx^9Ny+YWod2|>p~3lTtejzCSwTTTI-tBd0004i zNkl7thZqR!eOtnT}qRX_PfT+*Vtz9IWI1qu* z>u1MFESEyZYSZI=|9_1A`gk+@`%NnNb)Fj3F%9vRPC~d@nZy!a*H2v{yyXGY2&taK z)WMB0IuUdYp(Z`IXjlLrvjh^Bf`!h@vjWCj0JX}aZ^pThl}4x)1`B82X|f#Taid(H z0#;jRy;bfJeMs1s7O{2FMdVbP-&YYf!vbw)ec3QxK}vFbv`femL)B1Jg6jGbV`n_n zert;DWn5~k;pDjdxu#k{+1so`ccF081(D)pnXLV%Bc=w%%hbS5vp>V^_J4Z+4;bnw z1%_})fuYzG7<%nOFyvBQFF|L7?%?E@#-qJ6qRU678otwFiGx~u^uX{sep(y7jooHA zA2-|g0T{Rred)u)yR(_Q0>gam&%i83V2FkN3>X$_Oo1Uw!w_9{9ZryluiJ6^gM?z| r(xsCl-FkSLouBuaQsp!UVkG1n0BKB?kG15`00000NkvXXu0mjf7cuWm literal 0 HcmV?d00001 diff --git a/graphics/pokemon/gmax_inteleon/normal.pal b/graphics/pokemon/gmax_inteleon/normal.pal new file mode 100644 index 0000000000..122b980735 --- /dev/null +++ b/graphics/pokemon/gmax_inteleon/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +0 62 106 +156 210 226 +16 16 16 +84 155 195 +176 250 255 +253 253 253 +92 218 218 +1 89 154 +28 123 193 +49 48 47 +233 205 95 +100 101 101 +74 74 77 +242 248 137 +238 62 92 diff --git a/graphics/pokemon/gmax_inteleon/shiny.pal b/graphics/pokemon/gmax_inteleon/shiny.pal new file mode 100644 index 0000000000..f112483770 --- /dev/null +++ b/graphics/pokemon/gmax_inteleon/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +0 68 114 +16 122 192 +16 16 16 +0 96 164 +176 250 255 +253 253 253 +92 218 218 +14 166 168 +6 204 207 +152 157 172 +233 95 146 +247 251 252 +196 204 212 +248 137 182 +238 62 92 diff --git a/graphics/pokemon/gmax_kingler/back.png b/graphics/pokemon/gmax_kingler/back.png new file mode 100644 index 0000000000000000000000000000000000000000..d1a624ac479bbc987fc235fc20eb2ddb48aff0d9 GIT binary patch literal 751 zcmVG^0ItdbC1riCjM8GW|Q&I*&w%J}z^TKzhjFL}qKKV1NO{^2k}XOlBuf%=0Sw>(P~%EtLj`H4Go066mX@`{~Lq z<977W>`G<;_HB~@9*Ut{*&=SoqSKWt1Y%&j9{}h+EM6~qJ$~riBsuWu*G2<=0(p^M zdn9IpCKEguF{S+{3)se7jl^fl!2sq)KXLF>2?4|m)|~3OK@QlXO|HlHG*D+^)l#`u z4){=%@Mceod`Wkp7L5g&mVrJxH4FoxWBf8Lr5Hm9yu;usx hyqQCCc9;FP@f%+3eN$%y(~kfE002ovPDHLkV1jN>Qpo@S literal 0 HcmV?d00001 diff --git a/graphics/pokemon/gmax_kingler/front.png b/graphics/pokemon/gmax_kingler/front.png new file mode 100644 index 0000000000000000000000000000000000000000..075fc470c55ee224f70beeea007ca2517431d116 GIT binary patch literal 1114 zcmV-g1f~0lP)+*?>>}_J_Y<>x0VgsILC>th z6_!m*e4YUcXED|bz|Z%tx%1CcpbtQcX-e@1qQBWQ-_=rJ*2NfgODXCvBj)4e1TAA4 zQii$zgv`txWA(HM-5TOpI|7EgC{6+Cy*2eVzFq)8;mwZuX{*%{ahsbztTND!ihyon zJ)aB!uDJ&V5h7I$=gi`k11Hd-U6kf1T^qL}%fj`7f--?Nu^Wl;xes)bYO8T z3@Hqyx5K#?ZNjw=zQ(0gfwZ6imym89x(6c9@%=mijfI$nTB)LoF~k#nGOb%Z=ud6* z=bUTsB;;G;<`M)<+ttZrX4W|%Ir#5+wAoQ!0alIcDti5`{pyh?(W81BNjKX0JYaM! zO01naMs@vpM(G25UMu>z{!|-ia&wshGCFk}4m7=UVm{C~TKsbbuf2$^vq7HzN`v2H zN^SB3RKHj~0Dzi7>>ZY*NrN?we~HQGctt^rJHDZm6##C)EV!R0(v0OmiwZ|#9`yx) zS&+J`)hm|xk{{+*#e`aZ;+It8D&&Eb?N@Y3y})+_ku9=xX&CJ-3s|^k;g)ULu5ss7 zP;RRFtnG!{RlJ4k!+p5-aidxSMoL__EDZ7yyj|Fo0*d9j%r?a3=is#aq-UNYvn2<(*n?JhtCbPXj<2n5LrFr~`VQJoguWD@8M zfU5&A7Qo=ym(>A~p8(QeP?1^E=pCGKQDQ1efo`-|$o3mA*%rglN`M5-m)m@tzIFtl z`hCjM{aC|$#+fO0S19R5%H+7W;*$|3p_K(kE1)YxZv5P?=x?84J6QoF)8H2UBo%s zHf?7!vzSRpAU{!$$B&SIanXRUKA{cw5=Bm1~To1d;{Al6|gy@50nYff#IDAv?3H| zz6jAP!?`Qx`Wo!zQ8`!OX6oEu#`&z=XGM!^A1TAFt6>Ucy!Cae0-0+(h)eZ2n*50B zw?mu5p8`t$+l6g=218;IUciuP6JEg3?Ph!dLyPzTlXtiYE0~CSum^kvGi}r9PyJ~H zv#>M<GM2p`R?miHV(_oaUZ$1!=)YkbYA41w^9|)$khVPzy w@Bu{?tB(X`HX%NIAQ-BieWX_Aef^b>UrWhVQg0H-0000007*qoM6N<$f&_>a(*OVf literal 0 HcmV?d00001 diff --git a/graphics/pokemon/gmax_kingler/normal.pal b/graphics/pokemon/gmax_kingler/normal.pal new file mode 100644 index 0000000000..e3bbad0227 --- /dev/null +++ b/graphics/pokemon/gmax_kingler/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +115 82 16 +16 16 16 +131 41 8 +255 246 222 +164 106 65 +180 90 74 +222 172 156 +246 197 139 +255 139 82 +253 253 253 +189 189 230 +125 129 147 +163 153 170 +14 14 14 +15 15 15 diff --git a/graphics/pokemon/gmax_kingler/shiny.pal b/graphics/pokemon/gmax_kingler/shiny.pal new file mode 100644 index 0000000000..2dcc9678fa --- /dev/null +++ b/graphics/pokemon/gmax_kingler/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +106 98 8 +16 16 16 +74 90 0 +230 246 197 +148 139 57 +106 115 49 +205 213 115 +180 197 115 +139 156 74 +253 253 253 +189 189 230 +125 129 147 +163 153 170 +14 14 14 +15 15 15 diff --git a/graphics/pokemon/gmax_lapras/back.png b/graphics/pokemon/gmax_lapras/back.png new file mode 100644 index 0000000000000000000000000000000000000000..ee056d3a543de0221d248999a8dcb83ea47312db GIT binary patch literal 1405 zcmV-@1%mpCP)6ciK{6%`g178e&67#J8C85tTH8XFrM92^`S9UUGX9v>ecARr(iAt53nA|oRs zBqSsyB_$>%CMPE+C@3f?DJd!{Dl021EG#T7EiEoCE-x=HFfcGNF)=bSGBYzXG&D3d zH8nOiHa9mnI5;>tIXOByIy*Z%JUl!-Jv}}?K0iM{KtMo2K|w-7LPJACL_|bIMMXwN zMn^|SNJvOYNl8jdN=r*iOiWBoO-)WtPESuyP*6}&QBhJ-Qd3h?R8&+|RaI72R##V7 zSXfwDSy@_IT3cINTwGjTU0q&YUSD5dU|?WjVPRroVq;@tWMpJzWo2e&W@l$-XlQ6@ zX=!R|YHMq2Y;0_8ZEbFDZf|dIaBy&OadC2Ta&vQYbaZreb#-=jc6WDoczAeud3kzz zdV70&e0+R;eSLm@et&;|fPjF3fq{a8f`fyDgoK2Jg@uNOhKGlTh=_=ZiHVAeii?Yj zjEszpjg5|uj*pLzkdTm(k&%*;l9Q8@l$4Z}m6ev3mY0{8n3$NEnVFiJnwy)OoSdAU zot>VZo}ZteprD|kp`oIpqNAguq@<*!rKP5(rl+T;sHmu^si~@}s;jH3tgNi9t*x%E zuCK4Ju&}VPv9YqUva_?Zw6wIfwY9dkwzs#pxVX5vxw*Q!y1To(yu7@dCU$jHda$;ryf%FD~k%*@Qq&CSlv&d<-!(9qD) z(b3Y<($mw^)YR0~)z#M4*4Nk9*x1lt)=I7_<=;-L_>FMg~>g((4?Ck9A?d|UF?(gsK@bK{Q@$vHV^7Hfa z^z`)g_4W4l_V@Sq`1ttw`T6?#`uqF){QUg={r&#_{{R2~<=;0V0006wNklzqM+TaT$I!7*8M_Q-D>rH7y+KoiAJ`-1HmbG zg<}SYje_gbsB%C&>iJ7QAEL?w8y+Y#V2{+@&P%2T!huuQ2B*u3|f`jGAb3(Oty*AzZxKM$@& zTdcOUd(I0FA;7Ck> z7}EL*(E~8MPKg1G%7k?t61px*5)F{8#219o(Tor)AjBHN2nqo2Mxg>A9wMbu))xTM z(rar4ob+6b&`%OLd=l`;`?$THq61J3>t5O_7jxnxeGh=T8MB<`o&d_b8a)9ppQtS7 zGB?7Z0pDhTJU$6XnL-7O3=Dg~0HC)aNC~Tjk$#u~6M)OsroRA&`mqD9AM7Al_NH?5EZ!C00000 LNkvXXu0mjfgk!5k literal 0 HcmV?d00001 diff --git a/graphics/pokemon/gmax_lapras/front.png b/graphics/pokemon/gmax_lapras/front.png new file mode 100644 index 0000000000000000000000000000000000000000..aff7e7d5f2de6ffcee42d35b88a3201feef674b8 GIT binary patch literal 1666 zcmV-|27UR7P)p^#e??VtWr{Hq?DA^&BgZa=2}WY0000H5fKs+ z5)%^>6ciK{6%`g178e&67#J8C85tTH8XFrM92^`S9UUGX9v>ecARr(iAt53nA|oRs zBqSsyB_$>%CMPE+C@3f?DJd!{Dl021EG#T7EiEoCE-x=HFfcGNF)=bSGBYzXG&D3d zH8nOiHa9mnI5;>tIXOByIy*Z%JUl!-Jv}}?K0iM{KtMo2K|w-7LPJACL_|bIMMXwN zMn^|SNJvOYNl8jdN=r*iOiWBoO-)WtPESuyP*6}&QBhJ-Qd3h?R8&+|RaI72R##V7 zSXfwDSy@_IT3cINTwGjTU0q&YUSD5dU|?WjVPRroVq;@tWMpJzWo2e&W@l$-XlQ6@ zX=!R|YHMq2Y;0_8ZEbFDZf|dIaBy&OadC2Ta&vQYbaZreb#-=jc6WDoczAeud3kzz zdV70&e0+R;eSLm@et&;|fPjF3fq{a8f`fyDgoK2Jg@uNOhKGlTh=_=ZiHVAeii?Yj zjEszpjg5|uj*pLzkdTm(k&%*;l9Q8@l$4Z}m6ev3mY0{8n3$NEnVFiJnwy)OoSdAU zot>VZo}ZteprD|kp`oIpqNAguq@<*!rKP5(rl+T;sHmu^si~@}s;jH3tgNi9t*x%E zuCK4Ju&}VPv9YqUva_?Zw6wIfwY9dkwzs#pxVX5vxw*Q!y1To(yu7@dCU$jHda$;ryf%FD~k%*@Qq&CSlv&d<-!(9qD) z(b3Y<($mw^)YR0~)z#M4*4Nk9*x1lt)=I7_<=;-L_>FMg~>g((4?Ck9A?d|UF?(gsK@bK{Q@$vHV^7Hfa z^z`)g_4W4l_V@Sq`1ttw`T6?#`uqF){QUg={r&#_{{R2~&?l0w0009$Nklm( zkM!!l0=9ME?~}1v^yKrq7NKn0wvGT=0OqU&Q2n;uCjnMAp1qtapeUe765lCe0ny|+ zi~gm6wX7R(HNR!T7BG8!)WG^8Dd`CUjQUy%sDqO}H^90U0Wj*Wmb#h1=VLX1O@mV? z<<3FJu_EGj2)6PJ0Na@`upTNPUIC+ongNvZ(x3v!;TWN2FuDF!0Qe1KTSU#E9AiLw z%-~#sQpUEZLk6U&dAxW*4BVFa9~np;2X1UPaGgX>;@&~Km!Zw#lN_pneil6ld6$D% z0Dr9kSQ{_`K(0Z#*5Gb6)I}hGt(=&?8u0~9iiN&u0TA^`s4 z-|S#-zUf$t5`yZ*0#*x3C^9~Ok_f~$i&UuT?2X{rCP8R)9HFVTe6}!HEsWZvppHq!uMR*@9#^2u#^es@QwV$=dr+OW&M?c#^ZqVV z8JdG7m{=kFJh1U8Q(q#`>vyRNGzK?JEb#AOG8(F_vWAdprS|0Lz{NbLKCQ9odjxS2 zsYlgW)H=F@==~cr`d&;CPC)smV1&+rg#QQN9?BX(iFeKh;NhjqT)L1eP45KjquwGW zx$3Dq_a?I^HM6BDi?6>qc&V!AYQgYT4wL+ z>V#;|st$1`Oh;E;%Sb2v$NM|sH=r}2@1Mu?zXEN`{mZ}dgRA4oAK^GWE{l=Q zd3m|HvHAJ=adF9^sqwLaS?R%v#jGjz_9^yaQj~km!J)~$DV$+pSwTTTdB3t{0005J zNklsFAc)6UN@;i=HMf1x#P4HrfR7l+Ze&WmZhZJB8U7`dUp>+g8O?mU}^5w$7lUR8VS$u9L}PnUS%-# zvRLGt_DUG2)B0DqdQe7z|L^(W!2G)iCt%9YV_?WMPC{V*#)PCJUFt`SPu*^mY#sI?)K;jDmEDJp5Vq;bmD=*(;}V;1A;rp6-MjjeA6K2YAJ5b)7C-k*HunsDN1S(l)XwBEdb5MVuN!j_U@bw4Gj(s4i66xhJ}L_0009& zNklj7-$7lW{Fkcja<1$984b{STLewbv zF-jO`j5KfvQUP$9vM^_vvCwA$0$&|AMBe+PBMG zmw^HSqdsKd{k#A|;sScAyS{*)S#weDNfa`IEx1PZ^$4 ztaCK+N@O*Ek`A*KfJoQC>m<1*@v?{;A{b3|3hbd;03i|ugieu=d;)xw^Ylv-UvTRj{9s&z2MXt2IN<7NG?>8ym{iNv6gX%#fWa&R1H|h|cfG5d(4f56Gm*a_*zI?Tj)w@WjgE;l zGH~VwY`5=gFt+qrbJf0nd2tFcp^UBfsap4nx)~dQPhm9S@goqlYF!rEan;;60+>LY z)-e6my7j|Oq%V#`T>xMUbt3{ZfJ+ZS1N^|%#Z*Nb<^%Bn7?|ZK^G_o^HvL+qDo3)le5MvD>==@VuN!j_U@bw4Gj(s4i66xUP18?000B- zNkllnX+d=9QWTb!bSeb>QGG{?q<+CCm^i=px$k@T?%fe`a#T;7vr*F7#m!@Y z!L4fe2vIT|1BpiftHBND*{;Ns{iLco?di{)mxV>=`-ILYv#+iTP0o2`SApSp^XWrw zGZ3)0^9#kJzxPI7RSJPVw;uj0{dcnkz~gVX0OJnVjeZ7bbxL(+oe!m3M9?i=#VA#3 zYq$0<5kOmT3$Wd(;c)b;5Vdc$^~cSE5HT3CSAGUOK>@~6U|maU>!giD3v9?jlzM%P z>ENvMZIjfJWs7=k^N{cWH-Hk4r?!$wk@D?s>7-gB%h3C*@$=7pYg8_DJ3 z8o-CJX>smcWPk&zEIzpJlgsa}m+-}#Sn7Z>fEcy{09HRJh^JhuVs zG6+`7kMMbueE$Vxvx*Wcp(Nr;a?TmHP-Y}WI6?1Pk( zDxP{#%rXcnrTpQ~&0m*`7(ARe8MCK3K!k=iIaw}~#GE|<*10W<7$lHWSB9M=Ig5Q? zPNg@&1NHU*4+1};G>(OoLWVL3hfn}z6onuh$LI$y^s%tF_U#rZRfrIt3L%m3F@xy< zcjY>_FnB2B>$3L_1rU(auPWIPC<2_NKox=DR}AY4FUzLRfN zrBK07KLgbS!d8VU@iUEK-Lc1TCvvJX0Dq)95d^5FYIZ3zhTbps4e^yvrI$JgrD ztv=Ji?m2Z*_Q7|3TsR;*Lt_q}3f@0lRTj7$|B8mj8fZG+)$?K6q8ea3!cU#30E~V^ zy$0P@Hx1iq|M7drjCT|aNBLRrb?PVP-9Pv7-5sqL8K?lv+TIeab9aA#NB1POri#!_ zEl=Z^CJS|-aUoGsF&dTBKf}YM?XihKk*48LcJ?rx2{DfFgMb)k5+&RoP1mD<5F#>X zBdR99zE8(!HDlFuvt5aNs0>7!zN!2t0nAw=FS^;@Q}&9}*_ox67y*MKn4DG|WHKMdBF17BguMNAxHOB~bw83835- zc_UDI3{ZT<#3++!!{}fe_&{LCW`KHgMhAcw2Gc>dN<(0<50F+Mb3bY0B@GW_vk&6?V}L;gOYU1{{sWfhC>#2i30!t002ovPDHLkV1iG=_@@8> literal 0 HcmV?d00001 diff --git a/graphics/pokemon/gmax_machamp/icon.png b/graphics/pokemon/gmax_machamp/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..f0150630a694fba63e04428b5d5d062adae776ff GIT binary patch literal 603 zcmV-h0;K(kP)28gAG`xMtx=xv~OiYg4&4 z!fzo-SFZ*`p661r^13lXZ7lF0>X@;oi>@le%RP%HY z_B0V}k?g|0N>aR6F}9%0pCvRMqnuYXVt)BZ$GmVKMd!O&RJsw{;ORzqpQ5cx-_AccWrNWgSG><@3Jk0#z`%L}OuyD6 zFld1vDM4UHguv{4;Nu;E4USuEq~*gb&yL#{1@b}mnYHxGc;uriEK^-BM?Rpi4#*uJ pU_YIi_P__eAvyAK1mG=vyZ{~!O+lef$}DY$*PwP~>fk0000H5fKs+ z5)%^>6ciK{6%`g178e&67#J8C85tTH8XFrM92^`S9UUGX9v>ecARr(iAt53nA|oRs zBqSsyB_$>%CMPE+C@3f?DJd!{Dl021EG#T7EiEoCE-x=HFfcGNF)=bSGBYzXG&D3d zH8nOiHa9mnI5;>tIXOByIy*Z%JUl!-Jv}}?K0iM{KtMo2K|w-7LPJACL_|bIMMXwN zMn^|SNJvOYNl8jdN=r*iOiWBoO-)WtPESuyP*6}&QBhJ-Qd3h?R8&+|RaI72R##V7 zSXfwDSy@_IT3cINTwGjTU0q&YUSD5dU|?WjVPRroVq;@tWMpJzWo2e&W@l$-XlQ6@ zX=!R|YHMq2Y;0_8ZEbFDZf|dIaBy&OadC2Ta&vQYbaZreb#-=jc6WDoczAeud3kzz zdV70&e0+R;eSLm@et&;|fPjF3fq{a8f`fyDgoK2Jg@uNOhKGlTh=_=ZiHVAeii?Yj zjEszpjg5|uj*pLzkdTm(k&%*;l9Q8@l$4Z}m6ev3mY0{8n3$NEnVFiJnwy)OoSdAU zot>VZo}ZteprD|kp`oIpqNAguq@<*!rKP5(rl+T;sHmu^si~@}s;jH3tgNi9t*x%E zuCK4Ju&}VPv9YqUva_?Zw6wIfwY9dkwzs#pxVX5vxw*Q!y1To(yu7@dCU$jHda$;ryf%FD~k%*@Qq&CSlv&d<-!(9qD) z(b3Y<($mw^)YR0~)z#M4*4Nk9*x1lt)=I7_<=;-L_>FMg~>g((4?Ck9A?d|UF?(gsK@bK{Q@$vHV^7Hfa z^z`)g_4W4l_V@Sq`1ttw`T6?#`uqF){QUg={r&#_{{R2~eKhH{0004mNkl3`HfBCWfN_|F=^LVgUu6WRh8US1-nMykO-m%a<=-{x;U+*k96)v&Qi6_xM_H z$-5SepRpWi@tild#xW@#8x(IPU|$*X^9pWJ1dk2;(wYF_8w2({`NLr6@1o@qJROF0 zb@K|wVui!9L_@CNri+Lh0I2ar47q}vR*3f@K~BE-ra}_<5CR1%SBqg}V}bB)2Q8S4ytpz!fb^W!V6Zzf!Kq{4hia`CNWxyY2v!^C{4P60) nJJE`~xRv0*IWhb8~NPvmWj0000H5fKs+ z5)%^>6ciK{6%`g178e&67#J8C85tTH8XFrM92^`S9UUGX9v>ecARr(iAt53nA|oRs zBqSsyB_$>%CMPE+C@3f?DJd!{Dl021EG#T7EiEoCE-x=HFfcGNF)=bSGBYzXG&D3d zH8nOiHa9mnI5;>tIXOByIy*Z%JUl!-Jv}}?K0iM{KtMo2K|w-7LPJACL_|bIMMXwN zMn^|SNJvOYNl8jdN=r*iOiWBoO-)WtPESuyP*6}&QBhJ-Qd3h?R8&+|RaI72R##V7 zSXfwDSy@_IT3cINTwGjTU0q&YUSD5dU|?WjVPRroVq;@tWMpJzWo2e&W@l$-XlQ6@ zX=!R|YHMq2Y;0_8ZEbFDZf|dIaBy&OadC2Ta&vQYbaZreb#-=jc6WDoczAeud3kzz zdV70&e0+R;eSLm@et&;|fPjF3fq{a8f`fyDgoK2Jg@uNOhKGlTh=_=ZiHVAeii?Yj zjEszpjg5|uj*pLzkdTm(k&%*;l9Q8@l$4Z}m6ev3mY0{8n3$NEnVFiJnwy)OoSdAU zot>VZo}ZteprD|kp`oIpqNAguq@<*!rKP5(rl+T;sHmu^si~@}s;jH3tgNi9t*x%E zuCK4Ju&}VPv9YqUva_?Zw6wIfwY9dkwzs#pxVX5vxw*Q!y1To(yu7@dCU$jHda$;ryf%FD~k%*@Qq&CSlv&d<-!(9qD) z(b3Y<($mw^)YR0~)z#M4*4Nk9*x1lt)=I7_<=;-L_>FMg~>g((4?Ck9A?d|UF?(gsK@bK{Q@$vHV^7Hfa z^z`)g_4W4l_V@Sq`1ttw`T6?#`uqF){QUg={r&#_{{R2~!ZqIh000BuNkl#BUm9gnZOMplok1wIBBHspm($5p({|TabnpFNm z5QJG;0r>N^bbuj{lYVfln9!uu6bO0$-8#L10h#rE8>XY04aspQxEm>!V>hTFtpd-0I-P& zNKhkQ?;gvmVi(CyuLFQO!2!#11iT3l-RWge1aS{(3|OjhUo^SO#Q_0&1}qmq3%MHb zqr+FsAplXmC2Fu72txpmA^|A?Tttt?IawG2rUpO?R5M|0J#COB)o%pkzzqB_6fan5 zdsoQ-U?tRR5gi~YHj-~;=nVt{3T8|xF?nbBVY%v=f+lCA2MFB$KuoSwbcjH35KDa~ z7|xMrr{0i?A0MG9T7w5J_VxR7p>?wkK&G++VqVq&+cQd_(G?E>=uzhm zKbL2{^B@O(vyl2TpXmt5v8?bdUU(3MZqER3a;SpT1Aw;@<=nYW zm>p27*crfuMaQk-b_KY;xk)|^0664lK)Zo)3|kg*)o%n&wCURkZ#|}GVJl#N);0@M zt3#-IiVi>)XjC@R#{$SBsjr#XPVWTqEO>#|Za_`|?F6rbt{FH%W5)?zb->9$w}9E) zs()M9#<0`52djOsTmVeVXLGAaLrdLWCy!eDY!?Ho1)q&+tab;XR|5giHXGA0yVc8O z4H|a)at5#URzJ>Q%i((r)}RAEe9Juy9F*V>7OuPKZvY>53-|?r#U9q+mjGe!xCP8# z37loVu^`^rrXl<=OCAH#I&@IRG__0c1A+Qk{T8^65`UHTu0)|X%QCh= z1InLWHjh`?0sd_y4=unz_V4_d;>H5>g?-5_oCnbWe~XYXN-zL8e- zczC$Du=x1+aB#?=sPM3WSm?lrz^Ewj@F?(LP>^`Yz@W&uD41YiSU^BP_Fwts0003} zNkl-Dz3yxB|5P2F&&NxRwjOvJz3atZP^nX$0y$1TSV+@9~XFknVt*KZF`eq3_jz< zG_Z0$;|hQ?A<*q&R!w9yB9adv)zxH=}QheU{(P_)nkz zDhx2c5~f&j6b7V}2m?}-1>)(8Fnr2o2jYO^Pfl!p6oaVf*8E^VRH8?-gP}N;7xhCT xw0ZRdJ8ic4;er~}{7ANMgQ+{FgAfo9-kdrA?zGiXYOEToQ5QS|SsaxB?0pgH7V6v#XDe+u@sGOvysd|)Lu4BMpY#?2>BSjIs zkNJ6HAmslA<4;7^9Rb}h0Fu8S5LXnhM@?Aq5Xe!?KMnwjBHis$cw^9wIu!T_+&Q7C zj)4pep^}qN{54?W6xppPNzGp#HD>^(j4Rxf1>O*70HBHirOu>2y?)ha)FEnuO~Ci# z08nLp5<)gRz)h)2$iDCPfm7bw*aKkFi*^&B0J6VZ2@GtFiSAtr7^B%T3IR3g&}NXv zJ7pPwN1X6hBKRx|y8u5foFsX_6uNeL4cs`Dz1Jxl{qulIs?{Vc0KlBrRs=1CgGN2# zB&+AIT^a)kfY;+WDk1XTbBpN^kgE55S{pe;9ZZ3{0H0}fNkYKvPdOUlfb9c=O}Gl# zW&%R0W&-fP#Wm0@Ofdm?7+NeqWx)f$wFkzoQL3N}tsF26NR@rle0@F;>3AIgv<3&5 z;f7SI5KE1uF3jv>=>S-OOo7{XHhf*E)fa#&Xx$J9A|X+)(m8*f-})}thn6AqK&;RFxPc+?d#bBwn|c9kW~QTU>)D1fl$IRF0DA`f?f3zKfwQO0 S?;vOZ0000)>j2=1IQxe;Zo0008l zNklll`6aZjHuEccG*=M#caZ+_`?i^Jh#EB%Y0wILds`mp}Dn`muL0A66 z{QySB4u}z{;|=`-7lxb9U6}89cI<0%N$FBcZPdIk&(F`cO2{LPorl0t|ADU^*a3i7 zonLbc;Ak?LoWi{TCe_Hc0C#{%xo5#?zYT&A;{z_`_~=|;Z;aH*8? zAlw2^E`m@->f;8)jTDrB`SFQ!b$Et=@%9{we|<3(19gUgLB?BiD1Lc`;28pJBxG&y zVP9RHgeu+tHI z5y>6s%^eV6+MF@LGV|VpUb&uokPL92;cZ_5Hjq0|uGg!Zs@HKsh5*G7>m?50t3T_N zUQ~^U@Yi?cyYE16y_%Og@qlc4UzK3MQZMz5eN)>x4gSKS%jvRG0|Eqr zGqC5cZ#4&fZ$aqm5PK&km~TJ;7Dy(u#1=TQ!F)4^u+`$qLvE@HaDuQp9SxBBs%(!6 zrE*_H0CqJLucI6|5G(fuo{m6NfTSQu#ss*A(G&{XTfF-236Pp!{%q6g zIGI2L6bWgL)aAry;nQw|V)LY`6*sv(Xa_Bj7Wi6PV_x3ICPMS-#I)mjd27JvK;L$N z9^Qje|4j%zz~j2;1f|y4X}U5uq9cV`+BhB~lwE+}KMeaE-v|7lFRN7l8R~)fw}H} literal 0 HcmV?d00001 diff --git a/graphics/pokemon/gmax_meowth/icon.png b/graphics/pokemon/gmax_meowth/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..039f90a4adf5bade3e84a13818962ebfbc988a61 GIT binary patch literal 413 zcmV;O0b>4%P){C(a~w=cp>eSN$}~j`88-Uj9nJ?%iuEfZ_UMK+zPa#?QUH zC3U!~G5w~=Fz((6FHI6+azvId70@6OIXAAOLQIMK4E@?8pKxxPvl@MBTdTI8oGvhc zjW^&W$U}sKD2eEys=NlHdIh#pMXj4VcB%h+4-1$!WoFYQ>43VA^_)*Rm@ zfbw@=AGZ+ZblPZPHt+303DZ7aB@7h8KwO0BS7A)-ka{7ENyo&46ed3vbRDTjHgRyJ zFyu`VU={|dLYPn$!h|~wENlf>{0MUY*$V}msKBoEq|5a%48PH4K0007F zNkliWla7SjEScKF6z|>bP ztdJsCEUb_}D1v`O-kWuGR?Ve8$R~*S{ruiH^W0kPzn-Z$sr`fI@?il~*D#VAm`hYL#b7C+eZ^M0AVhgnU@36^_uEc4pM~KENO`iAq;0A>gtEzy)-I zKhLy!=?BRhjJhFhdc3q4?BqzG` zH&bSNvnD`e_pf6tx;DQHf1Azc->~RyQ$XkI{@L)@t6!GbZl+TtqT3k+?E3*gsr5Gf zvE8US0;p!kUo0z+cukr0daeBVJ^3@wUmgRsm$+!gd;(^Tn&($1P?7nP;k%iVj~`Be znm=z4cF&6AElz=j1B;>C000A1 zNklSp28*0ScbokwjoWUASP#aahZW|Hf-iw4jNwDK z!d{UItLm{z+sO>Vd&g|7f+q;=cJPo+gGS`wOX+#Aa}POhhr+%mDRwM5E!_wD5byVU zpZ@P5O?$1X8mi933t$>1?a;FnFfHWN!Ux`;$0=2u(sg{SvVpvlatf+h@0NM1kqND| zcMAD%JjvQeI3m9Vn zMd8W^)CyVj1O*mJIZ8*s`Duh;Oz9Q*5c_6?6QbWi&6iqoWKH5VVct~ z+`e{`eoXs^l-f?fSm?kyoEEM&P`GT4KSjZIWN6#B8z@XtRxjN|LHvXR=r>>5EXsvR z%4$C`pIBl~3H>CDW2Yco=p~R`_P##?xHRtCc+9w!-q*=7Y8&H?#1s7+1I0&-IYB0@ zWg{v8y~E_esDEQ`+=Wd%W|)1!fM#kCfQ`c=v6s9+4zS7C*ExsOFgp0s`@*@KjJpGv zmH}DLs!1;nVB<*i4|ljX!L4+Nx~mG%Ee`F6qn*!#f0WS1F|BNSmZ4^D@kTrFgCO`< z3I4#yah|aPO>y6_@7VUYFUYcC_>&;b{Gtf>-?yy&L4j+Fq|W(UrfEIZ ziRbz}=WEmdO034QFCN52 zp^^!I_}pdeju@5&cc=v4_i@ByB}BoDpy>pgQ|E%CFhnaX2$l0%<(~ccJ+8-b{Re*~ zDo#)icU)L=<5*wSS3?<=1>uQC%O@d;2p%@PRWj;)*Z`lCFbq+Ua|FScn}T~QQqC8u zzDJt(FP;dG$^v!e%5rBd<8o9MjHZ-7)2&=6pL21%E#-c)eWtL~Q>=F)lrQ33PsMxt zRl=`-=0f?L_I0(q{}LfvCua(goUKQ%D=ewSgS_Tl1PTYwCv`keI6gQy&I^Y;FJ0wv qq5duk+N=1iF^_B7n=i-zxBdeO{R19NBPpQ(0000 zd3m|HvHAJ=adF9^sqwLaS?I*QGEJ$o+iPS0S!cg9z&%qStESb7sDe1c)u~f1m zpg~H9vx7Q>O7Y>wX__)40k>HGe5dHYe2o2E5mEmN#1}rP<9)|DzX_Ht0k!owZWbP2 zT2MXsmua;2OqXq`LN`dGJTSzzKG z3d8q#j71br#42MA!6J@g%qK!f1GL0>RK)A)SRe{BqxB3CUo|2LVF1Y57o*!J666SB z5`vV^e41R)T`8Ny8fkZZH8cl0?IIL>3<)KcFE+}4jI>l#mdAxK)20B9`(j%4p8=`P z`he9)*;yZeP;~C}w_YiDT%H2<*&ku%gQviqZ!+TVb-Y zZiHc)8et?2Y+^uZh0(1ZK+*~$2hJg^f%|g0zuWqux&{3OKfVBB?qT*I8I=+M0000< KMNUMnLSTZ;na>db literal 0 HcmV?d00001 diff --git a/graphics/pokemon/gmax_orbeetle/normal.pal b/graphics/pokemon/gmax_orbeetle/normal.pal new file mode 100644 index 0000000000..af34ce0fac --- /dev/null +++ b/graphics/pokemon/gmax_orbeetle/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +16 16 16 +120 23 40 +189 20 43 +253 38 54 +164 86 0 +191 167 49 +16 189 220 +62 32 45 +78 58 61 +207 255 255 +87 251 231 +246 230 115 +172 156 173 +249 255 255 +214 213 211 diff --git a/graphics/pokemon/gmax_orbeetle/shiny.pal b/graphics/pokemon/gmax_orbeetle/shiny.pal new file mode 100644 index 0000000000..349aac2b6a --- /dev/null +++ b/graphics/pokemon/gmax_orbeetle/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +16 16 16 +50 41 102 +101 78 199 +146 115 230 +133 49 73 +199 83 105 +16 189 220 +62 32 45 +78 58 61 +207 255 255 +87 251 231 +234 134 149 +47 62 166 +249 255 255 +85 104 240 diff --git a/graphics/pokemon/gmax_pikachu/back.png b/graphics/pokemon/gmax_pikachu/back.png new file mode 100644 index 0000000000000000000000000000000000000000..fefeab9c22187441a8dc4e9aa1f7667e942e5ee8 GIT binary patch literal 739 zcmV<90v!E`P)h5D*Y4DJelgO8=w)a}WTuF#!L?G3H`H#VHu(g8*}LgAWf6uV%JY0007R zNklZ~tfw^a}oOCp2>>_25Ql>x?E;-3XBt#@jbg%_o zEbM)QJV5$%h{ErZ*}u1Q*yn6vS~RX7RH}S|G0D`q+n@=pK3<>M>Zo zcfhc`Mi$jW1HC3;#Pd*3qk5!K--o*xxKB=6^fxh3N0s^ekRD>7^d=JU8oQ&EGC<|; zTEn$iNxgOs`1U7c>1?J_#>Dp;fE;4LsRV%b(n_pM;pkg<0Cbe*zol(mNohUUSArfm zS5Kc@`$|Sx>pS7z;FMWJocjrUjw?RI!R6G+++hiTBNk!Ck=00d-l7|GUB_gIun|XT z_N+XHq|Z!{{mQpL+D)x*2IShr9gDHT`UP-%6+9ZE+C)Hp9)hj{K~KbAzL&cYw6Sn= zDDQ(u02tH<-g=yW^oNqd7D5c-8)1_US<@3ox4+k@<9_1+>JOO#;9U%;#XJO|&vow$ zj2KWp-ZDV{Fb=uKBm#2%!zehQ7(hOU01PM@KxO8j2?$DR*$g5w3Hm@>H-IgD_75uv Vlr|3t_GSP8002ovPDHLkV1g3=P%i)g literal 0 HcmV?d00001 diff --git a/graphics/pokemon/gmax_pikachu/front.png b/graphics/pokemon/gmax_pikachu/front.png new file mode 100644 index 0000000000000000000000000000000000000000..75f0c2beda7fa36d3b93048317e8cd6cd8a0d15b GIT binary patch literal 757 zcmVYe2loX8Yl{X3{b!ThfpYcezgs);V!DRo*S-z{|tpzRs` zkGj)0(kAeG*D?Bo6CHSsgpFRtnCWAXN`84z35@>m7qBKE=#&8CjQpH~3gA@&YrX*j!*)tQ zOI&fxkOm+i6(whrEA&ern;dzD=`hZ<&G~^YxOsUDQUo{_-qTjAbwI%Nn_~b}#Ka%4 zqX9>Ul%7&Z;hDHJS|{xwzEv6!Hl`E12uw03+}%^3HNgGv2e`%qQ3``x@&twomN3%wA)n48zi$^e`yWK|l>%_n(FLP_+8Tc9{H z+6c1KBqXV*%wC~N>q7ZQN-YIwGml|Ozy)T&5J4$G8{icE5tSIHfK$u>Fq2}WMuDo* ziWkRet?A2{S{PilX z9*VEM!Y-&BOYua+NX`6}UA`^fC&|i3J4gScVV3UO)_Jn>RH$k4 zd3n9PwE6k@b92q4toE^iS?DV$+pSwTTTY147(00050 zNklrNTN!5o|!k&d=}#8`a(W!6gWW{4QPtalNqt3pB*@z=Dgy1T@?k z@43b@VZy)>BxY8v#l}(f|Me07*qoM6N<$g8ifT&Hw-a literal 0 HcmV?d00001 diff --git a/graphics/pokemon/gmax_pikachu/normal.pal b/graphics/pokemon/gmax_pikachu/normal.pal new file mode 100644 index 0000000000..1bfa354f78 --- /dev/null +++ b/graphics/pokemon/gmax_pikachu/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +248 252 75 +255 246 164 +254 254 254 +16 16 16 +41 41 41 +65 65 74 +246 189 32 +98 49 8 +156 82 0 +246 230 82 +230 90 65 +197 32 24 +222 148 0 +115 115 131 +15 15 15 diff --git a/graphics/pokemon/gmax_pikachu/shiny.pal b/graphics/pokemon/gmax_pikachu/shiny.pal new file mode 100644 index 0000000000..377e03cd67 --- /dev/null +++ b/graphics/pokemon/gmax_pikachu/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +248 252 75 +255 230 131 +254 254 254 +16 16 16 +41 41 41 +65 65 74 +255 164 0 +115 16 0 +180 49 0 +255 197 49 +230 98 65 +197 41 24 +230 131 0 +115 115 131 +15 15 15 diff --git a/graphics/pokemon/gmax_rillaboom/back.png b/graphics/pokemon/gmax_rillaboom/back.png new file mode 100644 index 0000000000000000000000000000000000000000..d15e4e4c3ad88fe01073eaa2bf60d3f49caba93e GIT binary patch literal 1109 zcmV-b1giUqP)XJm1`rSswtq~Fv;bLk1e0t+E)yd5;-Q|9fjk~7WnNAE{QUZHJ+wkNmpTFt000Bv zNkl$c zB1{16Q$WW7nE!aUwJP(}?E%7nHUF*Se;b9#sQuJ25h4Q#o6-GXum|KoM2gT2EYv{g ziaiSmGSCEcTyAOr`)vTh3D6oaXqZ!JgZJxzq0!Y1p z)3M6R$nHW6>l6#Lj%(QoT9D{DY7fT!2%N%ebMPr%~P zN5DH?4b8^1LSC%nf6E2v65ne-lf;yy``Xv#RH literal 0 HcmV?d00001 diff --git a/graphics/pokemon/gmax_rillaboom/front.png b/graphics/pokemon/gmax_rillaboom/front.png new file mode 100644 index 0000000000000000000000000000000000000000..922860400d28a4a38ddff406c6530125f9089606 GIT binary patch literal 1435 zcmV;M1!Ve(P)ZFOzISG94rK;-R&geL^cQg>_K;{QUZHJ+wkNvS)}V000Fh zNklUE7{(?0vd7F?yINZdbz~&E^de_u<-@%Q4`}f%GGl0Ok&xJ{kYQkN zVWAjuD9O^p=$3U#km8HimnG`9EWKs>AN1H;3)w$lq4XVpB-!RQ#`3&BJ@d>n8e5Xq zC2vSlr70n})Zul%>M&^d@`>J*4Bdw>2=3TeHJg>DTsL&d^eYD4d_yDO*X4Y&P!;Vh z-`K2AOsWs5Ii$}{bxNaw%wMkn-5>aLS8rA#e@KmJ&^Vz`mQYX@fU!@hziaq#zbGAJ zxESiq#>Nt;7zl<#BN|3<;e-4j5QNpRWFmkn72~anNzoO03_^xwm^2Edx+S{{k8Kwe z28JIs8jTN+0&2Fl{GlXy=51ccm2zTXMV{h}zIo*I4}hg*ISN{#kn23c`k_i<}z z(DqXxJ`8m;jstjG2zhM)6av+=bYn0^S5s7T;s7M#I7W(_2#Kl<`SGYeX~GOH>KM<=Lu3rTy8eW;x75ew z+zEI2DZ!lq0K`qH9%{4B;Mels8G1_x(6cUkYa>N zv=vbWAs>KBWcO&?nj+MmU;kC28uYbd=0y7m@j9U-nFpi?oAoUWAK~shBuXnTCXvGG znIjZns)(9h7=Bm2J6Ztfs+gF{D0v-&f?<NTY0eJBR`YHEEWK})bk8JO$4??k4{VaI1Q-B)H;uP(Zk+l#YmQ<~g5kmw{nLC1mcGeb|!&q+(AifQK;;LjsJUD64 zepyUBvI2TC=aYoM=o#D&65Hp+IlBR505VRL0#eA%JaLp6W9RIp?RnO66{LNZxqU7w z0|B?qM5SaYAW7TAC1-BV3pkD(CQ*o*AOO5|4%LxMNP{n?00}6Su|%~!Vy%Eg0GZeb zo(ljy@v3WYqQG+zK7 zsxf9&$=c&Gt33aS((f{!FBR?qY0d=zE;3gUCR3ZRI{>=_5RauICifPQy*2>Cg8&#q z+l)b4EV%)CRkq7>ScOQ6C1^WIK!7RhWhwyd@kJ0BKZk7)KynMnkeCW{6pN$)NEuE< z+)8Z~1BM^dba$C`CiXFv6b}o?x^cm*8ixmlgFvEgLyVAOn{20d02K=l1si!Oga4wQ zm>SU29002ovPDHLkV1g%Skc$w`#3cx zlQtm+s~AL{MnqExEqeP#b_iM0q|6jT`Xs&IPpQ8gaEe{HULIBNK*!+S8G+{<#w7JR zg;EIuZ5=F6T8!N@6LY~4-%B1UeTAARN0y}%U8?M++E+2POz>*DP3dHT;IOc7Rk7= zQ5?%1ef_2rgXp|uSrR3dP8&lOIiw|{s~+*j#0e!**khJSt%PWu*Oiw#J`vuHJ&_Td z=F;taUX)nlJF_3tHe&%9GaZZV@kQC=ELW|Sp|m!d*~~pYJbYGwjvYw5m`lbcGzUdF zMv(yEHcYkeucG<>K0-4T69AiGeP0walU*(HFn5_(y?e9Ynm)@X00HRzHixKR1khqO z-wQBpG{sOYx5uU^TC?En{ELFfF-t)`_m>6p`NF?9{?CX15JoxaZxV(tuhZV0g&7=KZ5Ccp!_rC%l3yPNvm>cJbrgi~0{>LB0Nmz=%z1FgoRcbPs^Z?(LwNOlhf;-tm0)NzrS19Q^Bw6Tt;gi_Q(8X2e75E;Eyp9$cD}~4= zi<5YrwDfgU_-@No4AiOE1vVBMYgghdOJE1+>&zC=bBg*Bc7WpuoMUBD4yC>)eY33U zUcsHONMi$V$Kl6u0KQV;J`kW|rD?1K39y01C5Js0SWWx(f(jLGnpp$))C9ZMFgJ zfkB>ACH*egEe`>h&D1=;1u%?+^d84cDs_;wNAnFJ@n3)tXEU79`36t`y&-M6AI{V^ jV6g0nuo{V_;zg|gNuEIt3zX)O00000NkvXXu0mjf#m|5G literal 0 HcmV?d00001 diff --git a/graphics/pokemon/gmax_sandaconda/front.png b/graphics/pokemon/gmax_sandaconda/front.png new file mode 100644 index 0000000000000000000000000000000000000000..33e3451fa5b6c1f22671be19c10963a9852e75eb GIT binary patch literal 863 zcmV-l1EBngP)LqyB0008& zNkljkd6vq#;WaL!}tgZu6k}2_-w$4_3NVS@!V1}~MO2X@WNr`d{eBzZ5nx`e#d!(1 z*2!{meOMtD@w6|(rFg6k16=UodMdOz{d*Vauk;#9wXb3ZQQ$?v$KT0i#T+H&E@1|PAc;ITOwu_hRZ3~?0%njTiRUGY zioqUW0PC?HPm(A~)^p}ye%q)44mM^0_*f&wK}fKr+5&8uD}|8yj>PJ*0y{6ZW?_It z&w#qB{K_vM(@NnB#d8-13TAjI4EbffOe_8TOc<)nl+r2yuY^cZf?x&K6W~zeIUw^5 zfwwAi^b3tmM-}>ojBc(5RDrhgU7)Cea05tL12|Vyz=F!w3So?Sn?@;>r5&ikA^$i! zQ0{w3Vnrs)9Bo*J2CN#;)5ui@K>D=Q0Mar_U9nj&n}u?`s~TW- z2Dlj#H8<0IDrFfNb%C5g1=J?W1}F?$&ywzTy`<9`pgCGjeP|4ecGOnSQSYwBoPy~| zkPv$fO|o%8C&-~T$pvBF2w+noL(?j!W7cdr5hmv&Tq@|oJat7jw$AOjxUD|H+2|*n z*}BuRfbBdpUC#NM-&UiajvnjY7izjor40-@ihh@H*e zzRWZBuuA;ckLNdF>rt`YIGyn7mh&o{-PkhQOJm%-Xkq+eHjj~2M~4Ocr&pi-F5tu+j=L0aJNm72ZZxK0H{gn{CjSQ*9#J?Bm|@TC pbpa>S$m^~#2#>gA{D_I&_y?u|G~S-y@lpT)002ovPDHLkV1jrulBoay literal 0 HcmV?d00001 diff --git a/graphics/pokemon/gmax_sandaconda/icon.png b/graphics/pokemon/gmax_sandaconda/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..4b19d9570a9c256ffbb1a6d20eeab34853519128 GIT binary patch literal 529 zcmV+s0`C2ZP)e# zaB#S|xcK<^c$i3-$ViazNa%2w@R0DhpjhzWDDd#8(9me$NGM=nSU^BPXjtS=0004; zNkl)sb_BvW!x>Wf`@K87C#! zMF@m1J-7Z2n<0P`t?Qcouy!Ti2v9^%o02PVhgXtE1kf!?OBT4HjeyGFwc!5Q z7KMK100;(!8~|ki^;Sz383J_K$}h+B)(A4y91sd&qZ*f`fm88QQ-O|plvH!cCHaY=^MMoEA? zk_HI4y^2_N^!M{mKXSJeG5gVBBDvdL{Ky$Q0bRZL;Wt%?i2U$l$mvr*vi!;q0jVEZ z9{aJKBEI~n!rYXN{BWVPK~H`d0n9d3#*HA^C8WHm)UuMB2-oy9HPfMk-Vy_LZa0Vc z!HoLTj~oXR{Lss4x?R|HwC#MSoQRnCAx?J5G6%Za_Sn%ceuz_b3e-1Ye)Qu5vcGo1 T4@*}T00000NkvXXu0mjf`{Vi# literal 0 HcmV?d00001 diff --git a/graphics/pokemon/gmax_sandaconda/normal.pal b/graphics/pokemon/gmax_sandaconda/normal.pal new file mode 100644 index 0000000000..f06c695866 --- /dev/null +++ b/graphics/pokemon/gmax_sandaconda/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +167 114 78 +105 97 69 +16 16 16 +245 243 211 +180 163 109 +189 154 106 +217 202 179 +79 59 35 +126 85 67 +175 120 86 +187 32 15 +233 63 109 +13 13 13 +14 14 14 +15 15 15 diff --git a/graphics/pokemon/gmax_sandaconda/shiny.pal b/graphics/pokemon/gmax_sandaconda/shiny.pal new file mode 100644 index 0000000000..3c847bf83e --- /dev/null +++ b/graphics/pokemon/gmax_sandaconda/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +167 114 78 +94 98 76 +16 16 16 +231 238 218 +159 165 124 +189 154 106 +217 202 179 +59 59 55 +110 87 83 +150 119 111 +187 32 15 +233 63 109 +13 13 13 +14 14 14 +15 15 15 diff --git a/graphics/pokemon/gmax_snorlax/back.png b/graphics/pokemon/gmax_snorlax/back.png new file mode 100644 index 0000000000000000000000000000000000000000..c90fff95cc4c555e7f144eea652b0b3ed7102ed8 GIT binary patch literal 847 zcmV-V1F-ywP)e|%6vuNzhYqQDLb*fjo$?tXl&#`Bpy+Oldc%35Qkck)sNLvNDIGy9 zER`@>I+kOomsIFH;HBzN>k>s>EA<0d^gTnUfV<4C0sHX(=l^@p_U-NccWqzm`J;Ni zSQuTdJ6h-Y!jyXiT5DtSati{msmDT44wX_pfIwrKWg#3J;SCb1*u(0V?=Oup#aUQ~ z@3ma%5(i88(?COcmY`px%UX+pK!KbJgS8e`g6p-)QUL@k=EYU0H2tJa{s@2$h78Q^ zvF|G){OMt?7mAQALg&UF6zBjS4vE;z5EIwS3RR%=p@yy9aF&u~Q~>(-ri=|p!~m-+ zv7^&A&}!W165ZCRI+viq3ra4PqXY2Ts^jUhO9kZNb+v{f_4L*rhj)Gkg}QU!cy@~f z0>$>u$#J!Tqt|&`0{m(a;B-3O65zOgax^F49mbgN0#6$CyCZ`Uy4^F!F}uKN{r=~X zcCgAWo`u=p0jl-W`@8%bt99C@jW5_vkZQg0Qs^Jz{6ZM^T5SPN1%X!f$&+4J23p>* ztsCd4y(-I6`Bl~~2#}J!+5~jPl~bITH7P|~$~3+CvOxr~Ts9wn7cxuJbh<%6i`3qL z`WX&cmZhJ2fAtCuU20pIVuiJH>V>+|ZRmIl$+_ed;+k}rM{2FuSLt%kt%SK#@4<_h2<^nC81MnXl zu%jHP8z3+m`UHe-yvkwdW9&YRxlIzc-((xBYkK(p(vmY002ovPDHLkV1guUlPCZH literal 0 HcmV?d00001 diff --git a/graphics/pokemon/gmax_snorlax/front.png b/graphics/pokemon/gmax_snorlax/front.png new file mode 100644 index 0000000000000000000000000000000000000000..ef39f86990cc115b0de5314f58b1c672f8ce3f4c GIT binary patch literal 1001 zcmV06nXUFIJkbUbv|4ssnT?x8jmltHI3L}9p# z2SEzWdRCg<1MTa{Lk{K%4i7s>h-Gxgz%F_!@%LVnF3u&tQ~Q3O-}n2?FOODH{w@Ez zl3T@Sk`Dxalq*s6{U8?zBH#D(fLjrimIJ6Dah9jh0*AZ@o$Krd6MvFP6puT%CJ-WX z6~O`$?I_bEIE$h`ul*p($f-ihfB6|SvTT8mmaN5V(X(ba1?8ffl~66OI404FEEgxFC`)X99XHZWGA$yytq*rYFV2Hi1_Mj*F%<2fjI0r1}DFeV7 z*Z}mq%o=>WLDo}1yX~+q*rWEL-5pwXw{LwUC6WRf4aPC{8qaLowrsoS^?Rg7_ELc8 zuQ2L-vh4xL8~{L4Kmh^>z;POu=pP=i_Tv;#C_n&k5c$7?iQQq$q$$8`2!Sauw0iAl z4eFTuF)@-=n^ZbDjv)F6j_aDH$?1~>pnOO%UWUU4g~wqghjKaJN&u5PE&y=kny%ZR zoSL2s)K(mU4ynl>VN>?yC^x;K_*zc{z)uJag}0QKkh>K-6krfCiYaI?&c(RPDV;`8 zwE~Pl1n!ApZ^)$v<;`&nR8;Oh0tL#G0wXu1;aI*aq%P?qQmS^cesiD%>oL%ZUI~wRR^B zD5Vyeg^&OtNCKO&$HM;hS~UiAm=$w`s%N$GK!@saVlp;`9kDe>{C(a~w)Nhx7rSwTTT&C;!F00059 zNklk&z&IFIS1Qep37ok!(sG4gA?1O(G-*WcC6X?z zVsP*kMz*dAq)3{zeQpj`hkXi|9Ny?ovLzkq0>;zL&&<#4{-0(2yI{W2=Wp9e?()}d zfry!=ups{Zvatm381tyHl>cCQ+7uR=k;~_`3ow^F15WK?a-P9*(zMm@ug^Zetoys@ zvLk<;n){iYeQ+Hue;#dB7Q_8xVx+%*Dg_Al$3!88v!ikahCQM;gOGZ-7T|Y~j7fxp zA(a~oaUjP+48nkC>xo6TH{SDoA$+E`RtoUmo)BH(y9_ZadeD-0{VrqNLoANHxqcyC z?s5t|rR=!{+lNk)PJ^lT6lTQ_Kq8g%+}1lg3d=KYKcddTa4! zW5-d7%^>c+6m!jB;AFIst})jC*3$+ieH>sYEBgmv`sHagF#R%`8kk+QS0?5Gm|c8U z2=J-_%*yp9IWK_ed(*(v>r0pN(CJ)VTxeaz4^fP0$8iTMKCIi3L0ifc@A&{@nc2xm pwfOiGjoSGyqlwijFdO04^%o5S9~pH`QZE1i002ovPDHLkV1nOv2tNP- literal 0 HcmV?d00001 diff --git a/graphics/pokemon/gmax_snorlax/normal.pal b/graphics/pokemon/gmax_snorlax/normal.pal new file mode 100644 index 0000000000..4441577deb --- /dev/null +++ b/graphics/pokemon/gmax_snorlax/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +16 16 16 +246 230 189 +160 160 160 +230 197 172 +16 57 65 +84 121 43 +98 65 32 +164 115 82 +222 86 86 +252 139 159 +187 227 91 +137 180 50 +49 87 63 +49 90 123 +6 159 95 diff --git a/graphics/pokemon/gmax_snorlax/shiny.pal b/graphics/pokemon/gmax_snorlax/shiny.pal new file mode 100644 index 0000000000..d29a9cda8b --- /dev/null +++ b/graphics/pokemon/gmax_snorlax/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +16 16 16 +247 230 173 +160 160 160 +230 206 156 +8 49 123 +51 92 40 +99 74 25 +165 123 74 +215 69 47 +251 82 90 +187 227 91 +81 136 50 +141 93 10 +33 74 165 +221 146 16 diff --git a/graphics/pokemon/gmax_toxtricity/back.png b/graphics/pokemon/gmax_toxtricity/back.png new file mode 100644 index 0000000000000000000000000000000000000000..3e83fa04f3f6a198a630b198432579a378caacae GIT binary patch literal 978 zcmV;@11(LQR(5^S4RL?zH~!j>Xz?=X^#VN9g^)000AB zNklBjE6vvfIbaAFM$zoapMoHkt26YG?>P0yxQx+ffEe#Y^%GANc z(ir<_T4E4pR64C5WJuN@BiN2JIgXwp{Dkl zb?YklYWH#?#r+frDDE^5NYu_O8lXO{6=wm-ap#=Ie$A@a_{Z4B#%8DjvTCK#3;UB@o2yLfXe&=<5ukV#72r@fedn*MQ>?+sMJvqewkA z72uEs!vqo^X?&!sY$}g%ALflJxNLf13-3)@By>yAG0T*GfK_4<8t9h61h7wO8`3s) zR=?S$jv+9hx(z(F@W6fIR_$qzjOsS@Z#PfyYDT0p1Q-Gap#H z{<0D7LU%O01-Li5dV!a^JH8&C{>lUHjK(xR1h^diuuI2zz-(UY}f!G>f5S)t2Oa|yY`~A0tS83=9fnzhD0ccowS|0%>0NPvmtu>b%707*qoM6N<$f(Zn| A3;+NC literal 0 HcmV?d00001 diff --git a/graphics/pokemon/gmax_toxtricity/front.png b/graphics/pokemon/gmax_toxtricity/front.png new file mode 100644 index 0000000000000000000000000000000000000000..7fac75a68344f69c106b2ca1847be1c2e94331a5 GIT binary patch literal 1062 zcmV+>1ljwEP)sLU)$l^U6x9{YG4$9zT~PnS3_000BA zNklZ1g$WGHGFIP7Bo5{w#rsG|)+31k%49;}c;aEBn! zVmyo7T|auWogGBh!)S5K8;r1?f`nmb3By)p5QYxh)y99rev+M9Qtj+vZ2A2@dhh#t z7UsBMq`ChY>HX_TIsGiXA6y(P0hMwi{cN8rF9p?xQEoNTjT_5Ax@|OCt#oTSpw(8p zU1{k{fzfPJ`e-@es#vE#ykH0AC7^-V`&Ilqq@#&*8u(dCoBri5-F+PC!aC> z>Hcg+hy$)lb#@&nSLq8zI(_!^(ZO`)W*k%y{0un+S4UyTLDiu23FI&(TMTYDX8=15 zg*CQf;&z+133M2aaF2oGjvXrkq$+I@FvURBIAP!p-LdONgjAue0ssV}FIbjkyCZy` z3vr9q3-v-M!o6)b9#Yye9^N~ys{k9nIAO-<`W(lvK=t8UdYm&A768mRbfaxZh1ZpW zL7UGN#(o{13DyLG>wFY^!Dw!68Mwmk1{(}<9@~g!B=GJf+%wv*bC(;;4uI`C(FiHU zcnO8(F}(6RiYR8TKqTi10#+xhzA6FaG6Dt=&MbSLbLB16q4S4d-09(Q<%F?25**u} z|6+U(RMGeS;s>nbr8pT0AetTcUuo)`>2<#mqc;lBZFHJnr4EHI}4}HCl?RuwV zA@ILohdSH4@ICt3LU9DY6CIRw9H5 zn*lJp@|43*@jZATY5+8O_7&9gQXBw+RQ5!kof<$^lj9&Ce3;#jK-x_JEb)>QX6K;? zy?l4Rhh-7S%e*L=X1D}V36T8SJmr@o0GX3Ste*tu33;NfL3R#O)3E)-?ff{dFWD20uRBKEZXTco3PO~xtQ zMOMNi#xLr2^j|BbaO+S+H0@Z#N1T{S^ia_3{TVD2T-^syu+Ak0-jJG3Dq4x(O+Fh5 g%f}9Vp;=z~52f0g0-Ld$+yDRo07*qoM6N<$g3pueyZ`_I literal 0 HcmV?d00001 diff --git a/graphics/pokemon/gmax_toxtricity/icon.png b/graphics/pokemon/gmax_toxtricity/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3e7e680f7c5e392e5e6e2e90c7d9356afb6b90da GIT binary patch literal 539 zcmV+$0_6RPP)iFx^9Ny+JPnfbAyq{aVgtejzCSwTTT$N1Zl0004| zNklNvE-xg3_O9hJ77p@)ByFbmGe!bU^lWUV zH$z53O>ET|PlkcUK+T)P=M!}g6OH8G!orK?L}f(>81%;79)~~-4fW;Qvra%P9)9p( ztTTu`TO=6pWQTV#fmGxw1{d$pjO~V!^9Oxz1S5Vp5alf3=YO@j}wta zD**y7yfP!S8%XkM_J9C^)NU!X6qJBzpINkon}Bh)*7bpj znF*Me1ucAJV4jY=@NoiTLg6C=W0pQLFly-|1H+Mz6BvSgoWOA8BLjncq+lvOQZN-C dDVV?e_yz_{A0(K+9QFVJ002ovPDHLkV1fgh@tFVs literal 0 HcmV?d00001 diff --git a/graphics/pokemon/gmax_toxtricity/normal.pal b/graphics/pokemon/gmax_toxtricity/normal.pal new file mode 100644 index 0000000000..eceb597ad4 --- /dev/null +++ b/graphics/pokemon/gmax_toxtricity/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +75 45 94 +16 16 16 +141 79 174 +224 97 180 +215 143 0 +115 155 217 +240 200 16 +248 230 150 +106 66 119 +150 222 243 +202 74 170 +254 180 228 +240 142 197 +231 114 199 +124 70 31 diff --git a/graphics/pokemon/gmax_toxtricity/shiny.pal b/graphics/pokemon/gmax_toxtricity/shiny.pal new file mode 100644 index 0000000000..372ab9a7b2 --- /dev/null +++ b/graphics/pokemon/gmax_toxtricity/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +94 45 64 +16 16 16 +174 79 111 +224 97 180 +215 143 0 +115 155 217 +240 200 16 +248 230 150 +119 66 77 +150 222 243 +183 73 202 +238 180 254 +240 142 197 +218 114 231 +124 70 31 diff --git a/graphics/pokemon/gmax_urshifu/back.png b/graphics/pokemon/gmax_urshifu/back.png new file mode 100644 index 0000000000000000000000000000000000000000..74b71795bb934e57f325f50b8da2d4e9cd19fad3 GIT binary patch literal 915 zcmV;E18n?>P)fYh`q`wY6YhO;-;Ok|!AF6bg}%k&7ZP_4W1tmo~XrCjNbJz{?jc0009X zNklq=B-32Iaz)LXchvg zxJF(AngWokrJl!u!d!H8X;WeOQqGB$uqbT{ORy=8@>VT_KxPamaTCBx&Es>ysy#rU zG2vlZZR8L@7Nb<#M!;i}5-o>in&2V&rf!uUBcEwcmI=^y(8I&yO$46cUztynWdcBh ze%Gxn{3$(cI_yQPkp&{qqyCy8s{u}CJKia^;F!=bm5Rr-$r6ZIpdMfcmFipg$jm8# zF#}CZ0x*vb%>=*<6HIiF;b`C_0A?6Q1fat#K!ag;=%>#BTo{KpL&4(7lsFn(4PwCZnJYS7m)pp!1;P7^ zzsLPaARSWe;Myp_TVYta+|ORdE5x7yq5xkH!?U+68*`{|%ya>Ku7GfLe`*FaAORgN z1A)`tw^$E?yt}T-E02p<3DO%>+LlB`r$jcIR@x`PSAbkccq$Vo16={szK9&USV@PU zmPz?!VDwato#-Sv`6RZ6z>)E%aoisPQP6Ga2p56u)y41Nwu-tiz{Bx_|U^aj{#Mx-3ks^H9T8cXl>)a3Isa#*nwgr2+Bp= z;Erdu+Y%7e+jv_17J+pH46`W#ylJ#AE=a|bhWj$ zU|&sF4-b+j80QoUk&%&}VkPzU_5b={)u|@_eQ?b|cohHu00Cl4M@0Xn2lB-L00Xp1 zL_t(|oOPAKi`zyN#%HGm74{NX*t0UMi9^#Kwy>qQQfzh)JsA(#r3Ai2hd2fVJ z<=R@_TvT%{BRixHc<nM?yaEMZo-kY+M506~RNT&(xr~ zd5QesyRiUZpuCN703JpfuBNv+0s7z{3;24o01N#2naO;m&uZc*j^ij-#t-WxV#W(x- z>WVbFCK{=;DzW{M{q0155R#LI(bqn$nmswUfY8^*m>j$|qblIMoL;yV(0Xi%$e4d+ z84$jjULdD!vb-Sv8>b=tybK7TF3|g?C@@Ynlp0q6ClJCzUz&n2CW}n=rd@W^(Si7( zNMKAFSrI91RC-eAAZeXKn3~LrF!^YYx|I~LiCtrW%0WPCG;Po>Lg(ugKf>duNr%!5 zB&MnUxlL(n`}L}hV*x`6rPip_gcX-|a&)d- zOz1mtB>KE{sKnUrhitWu2w`mXa33)wSj!l$$60=zdX#pLq*`sd6ZA!2JTVr~b`<~s zp;j6lErs+Y0Dl!egkE8k$NKB-5}^(Zvw+U?P+FkN)+q!GwGMbt09r4B(mCPSzXJ_L zL;)ypl9n`BAXHjEUIKCf49X^ir!dycB%lQV4nSA-*Kx+4!fr{;h9Ur9a5%ITO1+Pz z?Fe6oL%~2UA5eOzWZCK_lsCtUb(mDX=8_PPRJOt?fB|VLPlX{TihHzjj^M{InD>=y z0pA~BMZC)FAp9gU$^8LpDg_^jy*8;dKEhs zfgZjEuu}k(vF9sb8pmO{whqWWn4I~1m0&)DbG+g$hS8a><{wWkUtj*#d1qau^kyLw i@~ZYlvmkKY`~H8U+5=nX&6)WC0000e_ zfN;3DxcK<^xS&Ar@F>t=K=6<#hT2A!Ux*(is&bkMTbbh7?Awd<6Tk2-@F&AkrjOw7J>-bu5Uf+W zwOI(I%~|j(cf`0D@2=k?1}V>?+=-xm&i4l}zulunkG7<*Cci55Qd)O3o|J zNHy9tzlH?J$8AUedBGs`It=Tw3-b!lu-6xEgAJHT5YT7?W)j3bFry$J%p{0{nFUcW zvmmm_B8a~9NkMi7GMoji{~B`SlOPKQ&Y$rl$by0IBpwA3FqotpFlZJqHh6%cf@Uy8 n(Bgv%ntc#Kiw`9Cf3c5$@@~syzhJtK00000NkvXXu0mjf!-&Wt literal 0 HcmV?d00001 diff --git a/graphics/pokemon/gmax_urshifu/normal.pal b/graphics/pokemon/gmax_urshifu/normal.pal new file mode 100644 index 0000000000..4cba02f8cd --- /dev/null +++ b/graphics/pokemon/gmax_urshifu/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +40 45 38 +16 16 16 +66 71 58 +107 101 116 +181 181 181 +96 95 77 +87 15 15 +146 39 24 +231 20 10 +145 145 145 +158 98 37 +245 245 245 +255 250 96 +213 169 38 +254 125 112 diff --git a/graphics/pokemon/gmax_urshifu/shiny.pal b/graphics/pokemon/gmax_urshifu/shiny.pal new file mode 100644 index 0000000000..13f43d8b23 --- /dev/null +++ b/graphics/pokemon/gmax_urshifu/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +40 45 38 +16 16 16 +66 71 58 +107 101 116 +181 181 181 +96 95 77 +87 15 15 +146 39 24 +231 20 10 +145 145 145 +139 34 47 +245 245 245 +255 151 54 +185 88 38 +254 125 112 diff --git a/graphics/pokemon/gmax_urshifu_rapid_strike/back.png b/graphics/pokemon/gmax_urshifu_rapid_strike/back.png new file mode 100644 index 0000000000000000000000000000000000000000..3369e6c170ce0efba6b202cce976ad16c3e3a86b GIT binary patch literal 821 zcmV-51Iqk~P)HqOk&*TF^$-nDFhB7qEhdX1FaMV|xmYHKp#5N9O%D$bYXQ%m0008O zNkls{t|f!Qj*{Ay9IFxz1)!5QrU*h3>y1AY6|HFhGaCGo~ig z8tBpUO54tu1PKBtayC2hUgj)9LR|+4?@vlcIe;gn0qC1q(HQ|%vH$@xqd7oPQlaWX z0u5yj5JM=8g^(QF5lX;AFdiIe4nP6lvs2~(J)2kg#O7YG!;q;WV{G5HZFg zdB|#NQ7|^Wm2o;XyA&co;Jv_y4CtKLULU6un=?8v9^iupwd_W;gg2TPpwLu66Thq$ zL|F?+dezCb9->f3AW{&jv!4ObuU=pHX2v!Grp};g|6V)5rX|oOxs(}}qtvF46uTXvfs8Q?cY+-a&u8Ac6bdEtU05fX6^@Tt+J*b7PBa9S* zc75TXw3Q^J`V+GewBOeN_RuA;;9au%dIJGMr3M-ZsOHgI3v4B;Ma2V=z6DfR4E8Os zad+bd3IL*RL%oS6DotR4B|hA$7u7!$~?M$pn)|F zbfN}ez3~XZdc)T@F4F1i0}nFbxt@{v-oKzHqOk&*TF^$-nDFhB7qEhe5~CI9+h)u|?ip#5N9O%D$b|L~(i0009g zNkl$jEVkPS2u$qwg8f8FYp&uffGHVKkWhHhd0UJ6V ztatG_X%~=99rfz%7pM!kr{aI!Kqt_PPgQ=S@>#zN;HNhx1CvEtfC~c<^R5ut>CHJn z!n00~zY$0bpLKft^qV*~kVRd<&gIA7*XJsabO%s;y!rsEEDt(>UQt~w{&+FbKwDJY zh-|bh%H===#%q=#)wE}#WpzoPNQjz%RLQ#@c$B((6EK0c0jWl#(g#02A2J2>klA&r zQBjnA^(j8q^h7hp>}J0%isGGfGM9t6!58qlwVcdlCS2qN{4LpcHk>0bd7*0+TV^zk@$<& z#9hFv8-Xr4Bd&o2Z+@~~=PV2$iQ7WtJgOgQNI+RvoG9QNe*w;iBxQZi zvu~IGOo)9RVZERbAjHxgGRIBcj}o+!DYJLGP9j|i7V29xA_xK=mVrrXyr8-{wu8eB;9}=xa~9qLxsUteZ3Cblrp+;gK*%FfHyrX= zQzwVF!0>^6tZ#t`0R^p{bh1>XVbpg51om10Jo_dO@i+%cr_Wm)YQXeSAU!>719nEE z(bwxh+{bMx?0hIMufGDU6(A)J!vBE%*|dc?I5^ke_ zfN;3DxcK<^xS&Ar@F>t=K=6<#h zol@R(YqyjWp02!TEbKktgXbc;9*b*x2pngg^te#e_S1ijcDWxWwqllFNa63rk_xyV zi+LFw>?CLcz)5=uWU$JzsA*c+fYphv*ZTC=&ccovgPelXv`YqQQ%}!|nw7zV4Hlqg z|8D(OkPF5La={ou4wzPu3&sd?z_fx~Fh&r8!B&v6J0Qf&2(n<{_KBYatt}XM;Jgv! zfI;4YAs?s=7{`Y&U|b&t4EcbG^Z)c@OZ)PPN=Og~lXgE&$Z|U}RyRmaz2Jfb? zAl%iv>zeKTCA@=N#d=xa*8931vQDAHH}bJk%iX5#-tM;djGuTj=G5Xiy&Dw(>A7sy(Qp#G{K* zpK3BbJX8mFTW!}N?y$<)XcO3H4G^;Rc3T||T}Bo0o%|%>Go?#~MBOEmH3wyCuoK`Z z6Ct~x5OIfOW9R__2;&N$ZIC=Amve2tRp>r$I0K5n2kd3^9-ilvXU+Yy-B0v%x7YJ=1 z)LpUapqMVXG6|dltpl`OD%)>4Flr%KfGR+wK-V!L45qu075@_XK2j<~D_G=q5RyzW}}v&=R)d*gpgOXu<%k zZxg#qFM$6N7*8jrPxqqm=?tKU)^s)kDiT}(`xGLuK#MaO2(owf2tn%6XhPory)>0# zM8_83q?Hg5CB6RhozokqGDvV3M*!7@OlTD{n4rrbND`Tjg|I+`zX1V4NSUMvG=&g1 zW0^im3kaityu^6w-#gC3e1VVO#!?Ea5cS1KCQ{;wd_b2!=ZhKcXe;PN(a*9#2Ivew zlZDfo&wJB*tYAajXAfB>5{b@G<&l8zy_=Z@#`0;>&z`evgdG@QD&GFxeZ)VCKTU_I Uu|6Rgf&c&j07*qoM6N<$g3^k5SpWb4 literal 0 HcmV?d00001 diff --git a/graphics/pokemon/gmax_venusaur/front.png b/graphics/pokemon/gmax_venusaur/front.png new file mode 100644 index 0000000000000000000000000000000000000000..b7dde75ba8978f2f83fe67ce953eaeba4175dc30 GIT binary patch literal 1154 zcmV-|1bzF7P)@9TLvZ6^QCZW^*lzLHK7Vq~+~yT`jbB7>JANhA2XNggro*-XmmbHbPh z>{WLEasU2tFK_-5JSU(5VVV7#`|CY=bIst6Ouxv#4Q4Zvy;<$8GON8iV$K8kxs9YD zWyo0OA%6pLd(BL^|GbGIr=Xes_4eUm4_?>UfxzaIfFwpBXU**D@fKor$K*VeS46HQ zk_1|YCL@{E>H%K&RLTGtvYr=#hBBPOBr_{QR@a6ELdtotc46q7w*icY$T>8ZK!nIl zV+#OGVNzfmlmg9b4JmW6fRx4@w($x8IFd52f%8}ZO0}dB0u`;VeuT?xmWu(cf*ml0 zEo68OOS1_;ItE}flD#r<3{rvw3M35E)TQ(A9J_~_M&Mk|SPMEZ`1o}P0KyPV%5-#s zX^|n2Vi1vqg7zQC*JeZ%2*VbXvF0oWqQv(x(CSb$p=! zV56O9Gtg)~0l&cju=BQSBT%cR@s73H>)!8K6a{_^CN?T|njy0No@s*Zs;Gi(aoz!d zyXlq&igDpiV+|a0=uvf?^efnDbu<90!kY-72mH7U0*-4HaVD+?;8J{(*LkP2WkCmr zb6z|s!l4jo{=rxtffjYS({95ds@&o2qXpg43auVvC4Za3t?N`RJcLuV9a~*kE{}m$ z$scs8+;zEK8UkPgc%;+;=N6@ON5G#ysBy5ydBcZM7Mz2^rMlqUNwHjkFQT_T_qGs=iK9~^VNYuT> zZm;AEF}bLtg4nLwyhgk?G699dG z(4#f0FX}OH`ROPEMC0rqp#cHsJ*|s!1Sk+tLWhqX8vYI(2H)^u!MS&pdIB&iJ^&X0 zXpd0QE2+2x&Z!T1@Gnjma4F*XBQ}#vAQv$p|{Yj-UX+VB_ zs?=iSceP0{dpN9nIAfIe2NjsOLg1wP5dp~1#;}g*2Ig}Kpp`mZy!${Ym>fZ6IaL}~ zblRu*B>@L&ncKi8>kt4B%%*4wtEqn4HgGN~7d?2T?(d^9u2S%Q$;Cf>6$Ji_*57sM z=)<$${>0&Asg@t3b&4jQ3fHmGos1^SZuxoLQ>5r%bV6U$eaXCN`#k9X0pC#k2L#G< UfScB`=l}o!07*qoM6N<$g1>(t^Z)<= literal 0 HcmV?d00001 diff --git a/graphics/pokemon/gmax_venusaur/icon.png b/graphics/pokemon/gmax_venusaur/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..523e647999488633e3bf9660a1a45bee94930567 GIT binary patch literal 542 zcmV+(0^$9MP)q{aVgtej$ET0ucU@2OXq00050 zNklI+d`oG#yGJe}u~oq+J=D8O{WUOFH!Z z0}Krbe*hqfX$U`#8bcx~IbVxH%b*Sn-q7}a-nXyK-G`9Bu7r{#S5jJE>v|5XwPjfa zU{xKpjpN}#H7)#rXn>(T#uuIG#Ba{KVQHF7)0N@hAJID%v zQu6?qgd`0>1A779%90@f8AwQB85ul~w|i_NX)qQ@79tS%3{a5_WFr&^T=6wRf-4YE z(Geh7fT^$}TpT*<2qDr$h^;0e+fj@_bhC@XKc$aK2v;m-DHx6s_`O+2WuU8urG&it zy}s&qTQi{)R|qzKD~kGR;bD8qH758+6!qd7UzUbbjzeGD8%$U|jF&P%&;8b2#JP`T zdXa5dqB+)@x0T*+s@4fT<9_ilUv7^8)d@N6I`V~NzR(<4r@pL{Jor@@$29DMFox}z z1!1zp{}Sf;XJNMZ*;P)M= GEN_6 + #define BUTTERFREE_SP_ATK\ + .baseSpAttack = 90, +#else + #define BUTTERFREE_SP_ATK\ + .baseSpAttack = 80, +#endif + #if P_UPDATED_STATS >= GEN_6 #define PIKACHU_BASE_DEFENSES\ .baseDefense = 40, \ @@ -16,6 +24,113 @@ .baseSpDefense = 40 #endif +#if P_UPDATED_ABILITIES >= GEN_7 + #define GENGAR_ABILITIES\ + .abilities = {ABILITY_CURSED_BODY, ABILITY_NONE}, +#else + #define GENGAR_ABILITIES\ + .abilities = {ABILITY_LEVITATE, ABILITY_NONE}, +#endif + +#define VENUSAUR_BASE_STATS \ + { \ + .baseHP = 80, \ + .baseAttack = 82, \ + .baseDefense = 83, \ + .baseSpeed = 80, \ + .baseSpAttack = 100, \ + .baseSpDefense = 100, \ + .type1 = TYPE_GRASS, \ + .type2 = TYPE_POISON, \ + .catchRate = 45, \ + .expYield = 236, \ + .evYield_SpAttack = 2, \ + .evYield_SpDefense = 1, \ + .genderRatio = PERCENT_FEMALE(12.5), \ + .eggCycles = 20, \ + .friendship = 70, \ + .growthRate = GROWTH_MEDIUM_SLOW, \ + .eggGroup1 = EGG_GROUP_MONSTER, \ + .eggGroup2 = EGG_GROUP_GRASS, \ + .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_CHLOROPHYLL}, \ + .bodyColor = BODY_COLOR_GREEN, \ + .noFlip = FALSE, \ + } + +#define CHARIZARD_BASE_STATS \ + { \ + .baseHP = 78, \ + .baseAttack = 84, \ + .baseDefense = 78, \ + .baseSpeed = 100, \ + .baseSpAttack = 109, \ + .baseSpDefense = 85, \ + .type1 = TYPE_FIRE, \ + .type2 = TYPE_FLYING, \ + .catchRate = 45, \ + .expYield = 240, \ + .evYield_SpAttack = 3, \ + .genderRatio = PERCENT_FEMALE(12.5), \ + .eggCycles = 20, \ + .friendship = 70, \ + .growthRate = GROWTH_MEDIUM_SLOW, \ + .eggGroup1 = EGG_GROUP_MONSTER, \ + .eggGroup2 = EGG_GROUP_DRAGON, \ + .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_SOLAR_POWER}, \ + .bodyColor = BODY_COLOR_RED, \ + .noFlip = FALSE, \ + } + +#define BLASTOISE_BASE_STATS \ + { \ + .baseHP = 79, \ + .baseAttack = 83, \ + .baseDefense = 100, \ + .baseSpeed = 78, \ + .baseSpAttack = 85, \ + .baseSpDefense = 105, \ + .type1 = TYPE_WATER, \ + .type2 = TYPE_WATER, \ + .catchRate = 45, \ + .expYield = 239, \ + .evYield_SpDefense = 3, \ + .genderRatio = PERCENT_FEMALE(12.5), \ + .eggCycles = 20, \ + .friendship = 70, \ + .growthRate = GROWTH_MEDIUM_SLOW, \ + .eggGroup1 = EGG_GROUP_MONSTER, \ + .eggGroup2 = EGG_GROUP_WATER_1, \ + .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_RAIN_DISH}, \ + .bodyColor = BODY_COLOR_BLUE, \ + .noFlip = FALSE, \ + } + +#define BUTTERFREE_BASE_STATS \ + { \ + .baseHP = 60, \ + .baseAttack = 45, \ + .baseDefense = 50, \ + .baseSpeed = 70, \ + .baseSpDefense = 80, \ + BUTTERFREE_SP_ATK \ + .type1 = TYPE_BUG, \ + .type2 = TYPE_FLYING, \ + .catchRate = 45, \ + .expYield = 178, \ + .evYield_SpAttack = 2, \ + .evYield_SpDefense = 1, \ + .itemRare = ITEM_SILVER_POWDER, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 15, \ + .friendship = 70, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroup1 = EGG_GROUP_BUG, \ + .eggGroup2 = EGG_GROUP_BUG, \ + .abilities = {ABILITY_COMPOUND_EYES, ABILITY_NONE, ABILITY_TINTED_LENS}, \ + .bodyColor = BODY_COLOR_WHITE, \ + .noFlip = FALSE, \ + } + #define PIKACHU_BASE_STATS(gender, flip) \ { \ .baseHP = 35, \ @@ -40,6 +155,181 @@ .noFlip = flip, \ } +#define MEOWTH_BASE_STATS \ + { \ + .baseHP = 40, \ + .baseAttack = 45, \ + .baseDefense = 35, \ + .baseSpeed = 90, \ + .baseSpAttack = 40, \ + .baseSpDefense = 40, \ + .type1 = TYPE_NORMAL, \ + .type2 = TYPE_NORMAL, \ + .catchRate = 255, \ + .expYield = 58, \ + .evYield_Speed = 1, \ + .itemRare = ITEM_QUICK_CLAW, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 20, \ + .friendship = 70, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroup1 = EGG_GROUP_FIELD, \ + .eggGroup2 = EGG_GROUP_FIELD, \ + .abilities = {ABILITY_PICKUP, ABILITY_TECHNICIAN, ABILITY_UNNERVE},\ + .bodyColor = BODY_COLOR_YELLOW, \ + .noFlip = FALSE, \ + } + +#define MACHAMP_BASE_STATS \ + { \ + .baseHP = 90, \ + .baseAttack = 130, \ + .baseDefense = 80, \ + .baseSpeed = 55, \ + .baseSpAttack = 65, \ + .baseSpDefense = 85, \ + .type1 = TYPE_FIGHTING, \ + .type2 = TYPE_FIGHTING, \ + .catchRate = 45, \ + .expYield = 227, \ + .evYield_Attack = 3, \ + .itemRare = ITEM_FOCUS_BAND, \ + .genderRatio = PERCENT_FEMALE(25), \ + .eggCycles = 20, \ + .friendship = 70, \ + .growthRate = GROWTH_MEDIUM_SLOW, \ + .eggGroup1 = EGG_GROUP_HUMAN_LIKE, \ + .eggGroup2 = EGG_GROUP_HUMAN_LIKE, \ + .abilities = {ABILITY_GUTS, ABILITY_NO_GUARD, ABILITY_STEADFAST}, \ + .bodyColor = BODY_COLOR_GRAY, \ + .noFlip = FALSE, \ + } + +#define GENGAR_BASE_STATS \ + { \ + .baseHP = 60, \ + .baseAttack = 65, \ + .baseDefense = 60, \ + .baseSpeed = 110, \ + .baseSpAttack = 130, \ + .baseSpDefense = 75, \ + .type1 = TYPE_GHOST, \ + .type2 = TYPE_POISON, \ + .catchRate = 45, \ + .expYield = 225, \ + .evYield_SpAttack = 3, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 20, \ + .friendship = 70, \ + .growthRate = GROWTH_MEDIUM_SLOW, \ + .eggGroup1 = EGG_GROUP_AMORPHOUS, \ + .eggGroup2 = EGG_GROUP_AMORPHOUS, \ + GENGAR_ABILITIES \ + .bodyColor = BODY_COLOR_PURPLE, \ + .noFlip = FALSE, \ + } + +#define KINGLER_BASE_STATS \ + { \ + .baseHP = 55, \ + .baseAttack = 130, \ + .baseDefense = 115, \ + .baseSpeed = 75, \ + .baseSpAttack = 50, \ + .baseSpDefense = 50, \ + .type1 = TYPE_WATER, \ + .type2 = TYPE_WATER, \ + .catchRate = 60, \ + .expYield = 166, \ + .evYield_Attack = 2, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 20, \ + .friendship = 70, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroup1 = EGG_GROUP_WATER_3, \ + .eggGroup2 = EGG_GROUP_WATER_3, \ + .abilities = {ABILITY_HYPER_CUTTER, ABILITY_SHELL_ARMOR, ABILITY_SHEER_FORCE}, \ + .bodyColor = BODY_COLOR_RED, \ + .noFlip = TRUE, \ + } + +#define LAPRAS_BASE_STATS \ + { \ + .baseHP = 130, \ + .baseAttack = 85, \ + .baseDefense = 80, \ + .baseSpeed = 60, \ + .baseSpAttack = 85, \ + .baseSpDefense = 95, \ + .type1 = TYPE_WATER, \ + .type2 = TYPE_ICE, \ + .catchRate = 45, \ + .expYield = 187, \ + .evYield_HP = 2, \ + .itemCommon = ITEM_MYSTIC_WATER, \ + .itemRare = ITEM_MYSTIC_WATER, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 40, \ + .friendship = 70, \ + .growthRate = GROWTH_SLOW, \ + .eggGroup1 = EGG_GROUP_MONSTER, \ + .eggGroup2 = EGG_GROUP_WATER_1, \ + .abilities = {ABILITY_WATER_ABSORB, ABILITY_SHELL_ARMOR, ABILITY_HYDRATION}, \ + .bodyColor = BODY_COLOR_BLUE, \ + .noFlip = FALSE, \ + } + +#define EEVEE_BASE_STATS \ + { \ + .baseHP = 55, \ + .baseAttack = 55, \ + .baseDefense = 50, \ + .baseSpeed = 55, \ + .baseSpAttack = 45, \ + .baseSpDefense = 65, \ + .type1 = TYPE_NORMAL, \ + .type2 = TYPE_NORMAL, \ + .catchRate = 45, \ + .expYield = 65, \ + .evYield_SpDefense = 1, \ + .genderRatio = PERCENT_FEMALE(12.5), \ + .eggCycles = 35, \ + .friendship = 70, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroup1 = EGG_GROUP_FIELD, \ + .eggGroup2 = EGG_GROUP_FIELD, \ + .abilities = {ABILITY_RUN_AWAY, ABILITY_ADAPTABILITY, ABILITY_ANTICIPATION}, \ + .bodyColor = BODY_COLOR_BROWN, \ + .noFlip = FALSE, \ + .flags = SPECIES_FLAG_GENDER_DIFFERENCE, \ + } + +#define SNORLAX_BASE_STATS \ + { \ + .baseHP = 160, \ + .baseAttack = 110, \ + .baseDefense = 65, \ + .baseSpeed = 30, \ + .baseSpAttack = 65, \ + .baseSpDefense = 110, \ + .type1 = TYPE_NORMAL, \ + .type2 = TYPE_NORMAL, \ + .catchRate = 25, \ + .expYield = 189, \ + .evYield_HP = 2, \ + .itemCommon = ITEM_LEFTOVERS, \ + .itemRare = ITEM_LEFTOVERS, \ + .genderRatio = PERCENT_FEMALE(12.5), \ + .eggCycles = 40, \ + .friendship = 70, \ + .growthRate = GROWTH_SLOW, \ + .eggGroup1 = EGG_GROUP_MONSTER, \ + .eggGroup2 = EGG_GROUP_MONSTER, \ + .abilities = {ABILITY_IMMUNITY, ABILITY_THICK_FAT, ABILITY_GLUTTONY}, \ + .bodyColor = BODY_COLOR_BLACK, \ + .noFlip = FALSE, \ + } + #define COSPLAY_PIKACHU_BASE_STATS(flip) PIKACHU_BASE_STATS(MON_FEMALE, flip) #define CAP_PIKACHU_BASE_STATS(flip) PIKACHU_BASE_STATS(MON_MALE, flip) @@ -265,6 +555,32 @@ .flags = SPECIES_FLAG_MYTHICAL, \ } +#define GARBODOR_BASE_STATS \ + { \ + .baseHP = 80, \ + .baseAttack = 95, \ + .baseDefense = 82, \ + .baseSpeed = 75, \ + .baseSpAttack = 60, \ + .baseSpDefense = 82, \ + .type1 = TYPE_POISON, \ + .type2 = TYPE_POISON, \ + .catchRate = 60, \ + .expYield = 166, \ + .evYield_Attack = 2, \ + .itemCommon = ITEM_SILK_SCARF, \ + .itemRare = ITEM_BLACK_SLUDGE, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 20, \ + .friendship = 70, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroup1 = EGG_GROUP_MINERAL, \ + .eggGroup2 = EGG_GROUP_MINERAL, \ + .abilities = {ABILITY_STENCH, ABILITY_WEAK_ARMOR, ABILITY_AFTERMATH}, \ + .bodyColor = BODY_COLOR_GREEN, \ + .noFlip = TRUE, \ + } + #define DEERLING_BASE_STATS(color) \ { \ .baseHP = 60, \ @@ -740,6 +1056,272 @@ .flags = SPECIES_FLAG_MYTHICAL, \ } +#define MELMETAL_BASE_STATS \ + { \ + .baseHP = 135, \ + .baseAttack = 143, \ + .baseDefense = 143, \ + .baseSpeed = 34, \ + .baseSpAttack = 80, \ + .baseSpDefense = 65, \ + .type1 = TYPE_STEEL, \ + .type2 = TYPE_STEEL, \ + .catchRate = 3, \ + .expYield = 270, \ + .evYield_Attack = 3, \ + .genderRatio = MON_GENDERLESS, \ + .eggCycles = 120, \ + .friendship = 0, \ + .growthRate = GROWTH_SLOW, \ + .eggGroup1 = EGG_GROUP_UNDISCOVERED, \ + .eggGroup2 = EGG_GROUP_UNDISCOVERED, \ + .abilities = {ABILITY_IRON_FIST, ABILITY_NONE}, \ + .bodyColor = BODY_COLOR_GRAY, \ + .noFlip = FALSE, \ + .flags = SPECIES_FLAG_MYTHICAL, \ + } + +#define RILLABOOM_BASE_STATS \ + { \ + .baseHP = 100, \ + .baseAttack = 125, \ + .baseDefense = 90, \ + .baseSpeed = 85, \ + .baseSpAttack = 60, \ + .baseSpDefense = 70, \ + .type1 = TYPE_GRASS, \ + .type2 = TYPE_GRASS, \ + .catchRate = 45, \ + .expYield = 265, \ + .evYield_Attack = 3, \ + .genderRatio = PERCENT_FEMALE(12.5), \ + .eggCycles = 20, \ + .friendship = 70, \ + .growthRate = GROWTH_MEDIUM_SLOW, \ + .eggGroup1 = EGG_GROUP_FIELD, \ + .eggGroup2 = EGG_GROUP_GRASS, \ + .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_GRASSY_SURGE}, \ + .bodyColor = BODY_COLOR_GREEN, \ + .noFlip = FALSE, \ + } + +#define CINDERACE_BASE_STATS \ + { \ + .baseHP = 80, \ + .baseAttack = 116, \ + .baseDefense = 75, \ + .baseSpeed = 119, \ + .baseSpAttack = 65, \ + .baseSpDefense = 75, \ + .type1 = TYPE_FIRE, \ + .type2 = TYPE_FIRE, \ + .catchRate = 45, \ + .expYield = 265, \ + .evYield_Speed = 3, \ + .genderRatio = PERCENT_FEMALE(12.5), \ + .eggCycles = 20, \ + .friendship = 70, \ + .growthRate = GROWTH_MEDIUM_SLOW, \ + .eggGroup1 = EGG_GROUP_FIELD, \ + .eggGroup2 = EGG_GROUP_HUMAN_LIKE, \ + .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_LIBERO}, \ + .bodyColor = BODY_COLOR_WHITE, \ + .noFlip = FALSE, \ + } + +#define INTELEON_BASE_STATS \ + { \ + .baseHP = 70, \ + .baseAttack = 85, \ + .baseDefense = 65, \ + .baseSpeed = 120, \ + .baseSpAttack = 125, \ + .baseSpDefense = 65, \ + .type1 = TYPE_WATER, \ + .type2 = TYPE_WATER, \ + .catchRate = 45, \ + .expYield = 265, \ + .evYield_Speed = 3, \ + .genderRatio = PERCENT_FEMALE(12.5), \ + .eggCycles = 20, \ + .friendship = 70, \ + .growthRate = GROWTH_MEDIUM_SLOW, \ + .eggGroup1 = EGG_GROUP_WATER_1, \ + .eggGroup2 = EGG_GROUP_FIELD, \ + .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_SNIPER}, \ + .bodyColor = BODY_COLOR_BLUE, \ + .noFlip = FALSE, \ + } + +#define CORVIKNIGHT_BASE_STATS \ + { \ + .baseHP = 98, \ + .baseAttack = 87, \ + .baseDefense = 105, \ + .baseSpeed = 67, \ + .baseSpAttack = 53, \ + .baseSpDefense = 85, \ + .type1 = TYPE_FLYING, \ + .type2 = TYPE_STEEL, \ + .catchRate = 45, \ + .expYield = 248, \ + .evYield_Defense = 3, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 15, \ + .friendship = 70, \ + .growthRate = GROWTH_MEDIUM_SLOW, \ + .eggGroup1 = EGG_GROUP_FLYING, \ + .eggGroup2 = EGG_GROUP_FLYING, \ + .abilities = {ABILITY_PRESSURE, ABILITY_UNNERVE, ABILITY_MIRROR_ARMOR}, \ + .bodyColor = BODY_COLOR_PURPLE, \ + .noFlip = FALSE, \ + } + +#define ORBEETLE_BASE_STATS \ + { \ + .baseHP = 60, \ + .baseAttack = 45, \ + .baseDefense = 110, \ + .baseSpeed = 90, \ + .baseSpAttack = 80, \ + .baseSpDefense = 120, \ + .type1 = TYPE_BUG, \ + .type2 = TYPE_PSYCHIC, \ + .catchRate = 45, \ + .expYield = 253, \ + .evYield_SpDefense = 3, \ + .itemRare = ITEM_PSYCHIC_SEED, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 15, \ + .friendship = 70, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroup1 = EGG_GROUP_BUG, \ + .eggGroup2 = EGG_GROUP_BUG, \ + .abilities = {ABILITY_SWARM, ABILITY_FRISK, ABILITY_TELEPATHY}, \ + .bodyColor = BODY_COLOR_RED, \ + .noFlip = FALSE, \ + } + +#define DREDNAW_BASE_STATS \ + { \ + .baseHP = 90, \ + .baseAttack = 115, \ + .baseDefense = 90, \ + .baseSpeed = 74, \ + .baseSpAttack = 48, \ + .baseSpDefense = 68, \ + .type1 = TYPE_WATER, \ + .type2 = TYPE_ROCK, \ + .catchRate = 75, \ + .expYield = 170, \ + .evYield_Attack = 2, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 20, \ + .friendship = 70, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroup1 = EGG_GROUP_MONSTER, \ + .eggGroup2 = EGG_GROUP_WATER_1, \ + .abilities = {ABILITY_STRONG_JAW, ABILITY_SHELL_ARMOR, ABILITY_SWIFT_SWIM}, \ + .bodyColor = BODY_COLOR_GREEN, \ + .noFlip = FALSE, \ + } + +#define COALOSSAL_BASE_STATS \ + { \ + .baseHP = 110, \ + .baseAttack = 80, \ + .baseDefense = 120, \ + .baseSpeed = 30, \ + .baseSpAttack = 80, \ + .baseSpDefense = 90, \ + .type1 = TYPE_ROCK, \ + .type2 = TYPE_FIRE, \ + .catchRate = 45, \ + .expYield = 255, \ + .evYield_Defense = 3, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 15, \ + .friendship = 70, \ + .growthRate = GROWTH_MEDIUM_SLOW, \ + .eggGroup1 = EGG_GROUP_MINERAL, \ + .eggGroup2 = EGG_GROUP_MINERAL, \ + .abilities = {ABILITY_STEAM_ENGINE, ABILITY_FLAME_BODY, ABILITY_FLASH_FIRE}, \ + .bodyColor = BODY_COLOR_BLACK, \ + .noFlip = FALSE, \ + } + +#define FLAPPLE_BASE_STATS \ + { \ + .baseHP = 70, \ + .baseAttack = 110, \ + .baseDefense = 80, \ + .baseSpeed = 70, \ + .baseSpAttack = 95, \ + .baseSpDefense = 60, \ + .type1 = TYPE_GRASS, \ + .type2 = TYPE_DRAGON, \ + .catchRate = 45, \ + .expYield = 170, \ + .evYield_Attack = 2, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 20, \ + .friendship = 70, \ + .growthRate = GROWTH_ERRATIC, \ + .eggGroup1 = EGG_GROUP_GRASS, \ + .eggGroup2 = EGG_GROUP_DRAGON, \ + .abilities = {ABILITY_RIPEN, ABILITY_GLUTTONY, ABILITY_HUSTLE}, \ + .bodyColor = BODY_COLOR_GREEN, \ + .noFlip = FALSE, \ + } + +#define APPLETUN_BASE_STATS \ + { \ + .baseHP = 110, \ + .baseAttack = 85, \ + .baseDefense = 80, \ + .baseSpeed = 30, \ + .baseSpAttack = 100, \ + .baseSpDefense = 80, \ + .type1 = TYPE_GRASS, \ + .type2 = TYPE_DRAGON, \ + .catchRate = 45, \ + .expYield = 170, \ + .evYield_HP = 2, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 20, \ + .friendship = 70, \ + .growthRate = GROWTH_ERRATIC, \ + .eggGroup1 = EGG_GROUP_GRASS, \ + .eggGroup2 = EGG_GROUP_DRAGON, \ + .abilities = {ABILITY_RIPEN, ABILITY_GLUTTONY, ABILITY_THICK_FAT}, \ + .bodyColor = BODY_COLOR_GREEN, \ + .noFlip = FALSE, \ + } + +#define SANDACONDA_BASE_STATS \ + { \ + .baseHP = 72, \ + .baseAttack = 107, \ + .baseDefense = 125, \ + .baseSpeed = 71, \ + .baseSpAttack = 65, \ + .baseSpDefense = 70, \ + .type1 = TYPE_GROUND, \ + .type2 = TYPE_GROUND, \ + .catchRate = 120, \ + .expYield = 179, \ + .evYield_Defense = 2, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 20, \ + .friendship = 70, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroup1 = EGG_GROUP_FIELD, \ + .eggGroup2 = EGG_GROUP_DRAGON, \ + .abilities = {ABILITY_SAND_SPIT, ABILITY_SHED_SKIN, ABILITY_SAND_VEIL}, \ + .bodyColor = BODY_COLOR_GREEN, \ + .noFlip = FALSE, \ + } + #define CRAMORANT_BASE_STATS \ { \ .baseHP = 70, \ @@ -788,6 +1370,30 @@ .noFlip = FALSE, \ } +#define CENTISKORCH_BASE_STATS \ + { \ + .baseHP = 100, \ + .baseAttack = 115, \ + .baseDefense = 65, \ + .baseSpeed = 65, \ + .baseSpAttack = 90, \ + .baseSpDefense = 90, \ + .type1 = TYPE_FIRE, \ + .type2 = TYPE_BUG, \ + .catchRate = 75, \ + .expYield = 184, \ + .evYield_Attack = 2, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 20, \ + .friendship = 70, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroup1 = EGG_GROUP_BUG, \ + .eggGroup2 = EGG_GROUP_BUG, \ + .abilities = {ABILITY_FLASH_FIRE, ABILITY_WHITE_SMOKE, ABILITY_FLAME_BODY}, \ + .bodyColor = BODY_COLOR_RED, \ + .noFlip = FALSE, \ + } + #define SINISTEA_BASE_STATS \ { \ .baseHP = 40, \ @@ -836,6 +1442,54 @@ .noFlip = FALSE, \ } +#define HATTERENE_BASE_STATS \ + { \ + .baseHP = 57, \ + .baseAttack = 90, \ + .baseDefense = 95, \ + .baseSpeed = 29, \ + .baseSpAttack = 136, \ + .baseSpDefense = 103, \ + .type1 = TYPE_PSYCHIC, \ + .type2 = TYPE_FAIRY, \ + .catchRate = 45, \ + .expYield = 255, \ + .evYield_SpAttack = 3, \ + .genderRatio = MON_FEMALE, \ + .eggCycles = 20, \ + .friendship = 70, \ + .growthRate = GROWTH_SLOW, \ + .eggGroup1 = EGG_GROUP_FAIRY, \ + .eggGroup2 = EGG_GROUP_FAIRY, \ + .abilities = {ABILITY_HEALER, ABILITY_ANTICIPATION, ABILITY_MAGIC_BOUNCE}, \ + .bodyColor = BODY_COLOR_PINK, \ + .noFlip = FALSE, \ + } + +#define GRIMMSNARL_BASE_STATS \ + { \ + .baseHP = 95, \ + .baseAttack = 120, \ + .baseDefense = 65, \ + .baseSpeed = 60, \ + .baseSpAttack = 95, \ + .baseSpDefense = 75, \ + .type1 = TYPE_DARK, \ + .type2 = TYPE_FAIRY, \ + .catchRate = 45, \ + .expYield = 255, \ + .evYield_Attack = 3, \ + .genderRatio = MON_MALE, \ + .eggCycles = 20, \ + .friendship = 70, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroup1 = EGG_GROUP_FAIRY, \ + .eggGroup2 = EGG_GROUP_HUMAN_LIKE, \ + .abilities = {ABILITY_PRANKSTER, ABILITY_FRISK, ABILITY_PICKPOCKET}, \ + .bodyColor = BODY_COLOR_PURPLE, \ + .noFlip = FALSE, \ + } + #define ALCREMIE_BASE_STATS(color) \ { \ .baseHP = 65, \ @@ -884,6 +1538,105 @@ .noFlip = FALSE, \ } +#define COPPERAJAH_BASE_STATS \ + { \ + .baseHP = 122, \ + .baseAttack = 130, \ + .baseDefense = 69, \ + .baseSpeed = 30, \ + .baseSpAttack = 80, \ + .baseSpDefense = 69, \ + .type1 = TYPE_STEEL, \ + .type2 = TYPE_STEEL, \ + .catchRate = 90, \ + .expYield = 175, \ + .evYield_Attack = 2, \ + .itemRare = ITEM_LAGGING_TAIL, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 25, \ + .friendship = 70, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroup1 = EGG_GROUP_FIELD, \ + .eggGroup2 = EGG_GROUP_MINERAL, \ + .abilities = {ABILITY_SHEER_FORCE, ABILITY_NONE, ABILITY_HEAVY_METAL}, \ + .bodyColor = BODY_COLOR_GREEN, \ + .noFlip = FALSE, \ + } + +#define DURALUDON_BASE_STATS \ + { \ + .baseHP = 70, \ + .baseAttack = 95, \ + .baseDefense = 115, \ + .baseSpeed = 85, \ + .baseSpAttack = 120, \ + .baseSpDefense = 50, \ + .type1 = TYPE_STEEL, \ + .type2 = TYPE_DRAGON, \ + .catchRate = 45, \ + .expYield = 187, \ + .evYield_SpAttack = 2, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 30, \ + .friendship = 70, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroup1 = EGG_GROUP_MINERAL, \ + .eggGroup2 = EGG_GROUP_DRAGON, \ + .abilities = {ABILITY_LIGHT_METAL, ABILITY_HEAVY_METAL, ABILITY_STALWART}, \ + .bodyColor = BODY_COLOR_WHITE, \ + .noFlip = FALSE, \ + } + +#define URSHIFU_BASE_STATS \ + { \ + .baseHP = 100, \ + .baseAttack = 130, \ + .baseDefense = 100, \ + .baseSpeed = 97, \ + .baseSpAttack = 63, \ + .baseSpDefense = 60, \ + .type1 = TYPE_FIGHTING, \ + .type2 = TYPE_DARK, \ + .catchRate = 3, \ + .expYield = 275, \ + .evYield_Attack = 3, \ + .genderRatio = PERCENT_FEMALE(12.5), \ + .eggCycles = 120, \ + .friendship = 70, \ + .growthRate = GROWTH_SLOW, \ + .eggGroup1 = EGG_GROUP_UNDISCOVERED, \ + .eggGroup2 = EGG_GROUP_UNDISCOVERED, \ + .abilities = {ABILITY_UNSEEN_FIST, ABILITY_NONE}, \ + .bodyColor = BODY_COLOR_GRAY, \ + .noFlip = FALSE, \ + .flags = SPECIES_FLAG_LEGENDARY, \ + } + +#define URSHIFU_RAPID_STRIKE_STYLE_BASE_STATS \ + { \ + .baseHP = 100, \ + .baseAttack = 130, \ + .baseDefense = 100, \ + .baseSpeed = 97, \ + .baseSpAttack = 63, \ + .baseSpDefense = 60, \ + .type1 = TYPE_FIGHTING, \ + .type2 = TYPE_WATER, \ + .catchRate = 3, \ + .expYield = 275, \ + .evYield_Attack = 3, \ + .genderRatio = PERCENT_FEMALE(12.5), \ + .eggCycles = 120, \ + .friendship = 70, \ + .growthRate = GROWTH_SLOW, \ + .eggGroup1 = EGG_GROUP_UNDISCOVERED, \ + .eggGroup2 = EGG_GROUP_UNDISCOVERED, \ + .abilities = {ABILITY_UNSEEN_FIST, ABILITY_NONE}, \ + .bodyColor = BODY_COLOR_GRAY, \ + .noFlip = FALSE, \ + .flags = SPECIES_FLAG_LEGENDARY, \ + } + #define ZARUDE_BASE_STATS \ { \ .baseHP = 105, \ @@ -962,30 +1715,7 @@ const struct BaseStats gBaseStats[] = .noFlip = FALSE, }, - [SPECIES_VENUSAUR] = - { - .baseHP = 80, - .baseAttack = 82, - .baseDefense = 83, - .baseSpeed = 80, - .baseSpAttack = 100, - .baseSpDefense = 100, - .type1 = TYPE_GRASS, - .type2 = TYPE_POISON, - .catchRate = 45, - .expYield = 236, - .evYield_SpAttack = 2, - .evYield_SpDefense = 1, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = 70, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_GRASS, - .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_CHLOROPHYLL}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, + [SPECIES_VENUSAUR] = VENUSAUR_BASE_STATS, [SPECIES_CHARMANDER] = { @@ -1036,29 +1766,7 @@ const struct BaseStats gBaseStats[] = .noFlip = FALSE, }, - [SPECIES_CHARIZARD] = - { - .baseHP = 78, - .baseAttack = 84, - .baseDefense = 78, - .baseSpeed = 100, - .baseSpAttack = 109, - .baseSpDefense = 85, - .type1 = TYPE_FIRE, - .type2 = TYPE_FLYING, - .catchRate = 45, - .expYield = 240, - .evYield_SpAttack = 3, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = 70, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_DRAGON, - .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_SOLAR_POWER}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - }, + [SPECIES_CHARIZARD] = CHARIZARD_BASE_STATS, [SPECIES_SQUIRTLE] = { @@ -1109,29 +1817,7 @@ const struct BaseStats gBaseStats[] = .noFlip = FALSE, }, - [SPECIES_BLASTOISE] = - { - .baseHP = 79, - .baseAttack = 83, - .baseDefense = 100, - .baseSpeed = 78, - .baseSpAttack = 85, - .baseSpDefense = 105, - .type1 = TYPE_WATER, - .type2 = TYPE_WATER, - .catchRate = 45, - .expYield = 239, - .evYield_SpDefense = 3, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = 70, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_WATER_1, - .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_RAIN_DISH}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, + [SPECIES_BLASTOISE] = BLASTOISE_BASE_STATS, [SPECIES_CATERPIE] = { @@ -1181,35 +1867,7 @@ const struct BaseStats gBaseStats[] = .noFlip = FALSE, }, - [SPECIES_BUTTERFREE] = - { - .baseHP = 60, - .baseAttack = 45, - .baseDefense = 50, - .baseSpeed = 70, - .baseSpDefense = 80, - #if P_UPDATED_STATS >= GEN_6 - .baseSpAttack = 90, - #else - .baseSpAttack = 80, - #endif - .type1 = TYPE_BUG, - .type2 = TYPE_FLYING, - .catchRate = 45, - .expYield = 178, - .evYield_SpAttack = 2, - .evYield_SpDefense = 1, - .itemRare = ITEM_SILVER_POWDER, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = 70, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_BUG, - .abilities = {ABILITY_COMPOUND_EYES, ABILITY_NONE, ABILITY_TINTED_LENS}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, - }, + [SPECIES_BUTTERFREE] = BUTTERFREE_BASE_STATS, [SPECIES_WEEDLE] = { @@ -2210,30 +2868,7 @@ const struct BaseStats gBaseStats[] = .noFlip = FALSE, }, - [SPECIES_MEOWTH] = - { - .baseHP = 40, - .baseAttack = 45, - .baseDefense = 35, - .baseSpeed = 90, - .baseSpAttack = 40, - .baseSpDefense = 40, - .type1 = TYPE_NORMAL, - .type2 = TYPE_NORMAL, - .catchRate = 255, - .expYield = 58, - .evYield_Speed = 1, - .itemRare = ITEM_QUICK_CLAW, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = 70, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, - .abilities = {ABILITY_PICKUP, ABILITY_TECHNICIAN, ABILITY_UNNERVE}, - .bodyColor = BODY_COLOR_YELLOW, - .noFlip = FALSE, - }, + [SPECIES_MEOWTH] = MEOWTH_BASE_STATS, [SPECIES_PERSIAN] = { @@ -2611,30 +3246,7 @@ const struct BaseStats gBaseStats[] = .noFlip = TRUE, }, - [SPECIES_MACHAMP] = - { - .baseHP = 90, - .baseAttack = 130, - .baseDefense = 80, - .baseSpeed = 55, - .baseSpAttack = 65, - .baseSpDefense = 85, - .type1 = TYPE_FIGHTING, - .type2 = TYPE_FIGHTING, - .catchRate = 45, - .expYield = 227, - .evYield_Attack = 3, - .itemRare = ITEM_FOCUS_BAND, - .genderRatio = PERCENT_FEMALE(25), - .eggCycles = 20, - .friendship = 70, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_HUMAN_LIKE, - .eggGroup2 = EGG_GROUP_HUMAN_LIKE, - .abilities = {ABILITY_GUTS, ABILITY_NO_GUARD, ABILITY_STEADFAST}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - }, + [SPECIES_MACHAMP] = MACHAMP_BASE_STATS, [SPECIES_BELLSPROUT] = { @@ -3271,33 +3883,7 @@ const struct BaseStats gBaseStats[] = .noFlip = FALSE, }, - [SPECIES_GENGAR] = - { - .baseHP = 60, - .baseAttack = 65, - .baseDefense = 60, - .baseSpeed = 110, - .baseSpAttack = 130, - .baseSpDefense = 75, - .type1 = TYPE_GHOST, - .type2 = TYPE_POISON, - .catchRate = 45, - .expYield = 225, - .evYield_SpAttack = 3, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = 70, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_AMORPHOUS, - .eggGroup2 = EGG_GROUP_AMORPHOUS, - #if P_UPDATED_ABILITIES >= GEN_7 - .abilities = {ABILITY_CURSED_BODY, ABILITY_NONE}, - #else - .abilities = {ABILITY_LEVITATE, ABILITY_NONE}, - #endif - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - }, + [SPECIES_GENGAR] = GENGAR_BASE_STATS, [SPECIES_ONIX] = { @@ -3395,29 +3981,7 @@ const struct BaseStats gBaseStats[] = .noFlip = FALSE, }, - [SPECIES_KINGLER] = - { - .baseHP = 55, - .baseAttack = 130, - .baseDefense = 115, - .baseSpeed = 75, - .baseSpAttack = 50, - .baseSpDefense = 50, - .type1 = TYPE_WATER, - .type2 = TYPE_WATER, - .catchRate = 60, - .expYield = 166, - .evYield_Attack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = 70, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_WATER_3, - .eggGroup2 = EGG_GROUP_WATER_3, - .abilities = {ABILITY_HYPER_CUTTER, ABILITY_SHELL_ARMOR, ABILITY_SHEER_FORCE}, - .bodyColor = BODY_COLOR_RED, - .noFlip = TRUE, - }, + [SPECIES_KINGLER] = KINGLER_BASE_STATS, [SPECIES_VOLTORB] = { @@ -4195,31 +4759,7 @@ const struct BaseStats gBaseStats[] = .noFlip = FALSE, }, - [SPECIES_LAPRAS] = - { - .baseHP = 130, - .baseAttack = 85, - .baseDefense = 80, - .baseSpeed = 60, - .baseSpAttack = 85, - .baseSpDefense = 95, - .type1 = TYPE_WATER, - .type2 = TYPE_ICE, - .catchRate = 45, - .expYield = 187, - .evYield_HP = 2, - .itemCommon = ITEM_MYSTIC_WATER, - .itemRare = ITEM_MYSTIC_WATER, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 40, - .friendship = 70, - .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_WATER_1, - .abilities = {ABILITY_WATER_ABSORB, ABILITY_SHELL_ARMOR, ABILITY_HYDRATION}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, + [SPECIES_LAPRAS] = LAPRAS_BASE_STATS, [SPECIES_DITTO] = { @@ -4247,30 +4787,7 @@ const struct BaseStats gBaseStats[] = .noFlip = FALSE, }, - [SPECIES_EEVEE] = - { - .baseHP = 55, - .baseAttack = 55, - .baseDefense = 50, - .baseSpeed = 55, - .baseSpAttack = 45, - .baseSpDefense = 65, - .type1 = TYPE_NORMAL, - .type2 = TYPE_NORMAL, - .catchRate = 45, - .expYield = 65, - .evYield_SpDefense = 1, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 35, - .friendship = 70, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, - .abilities = {ABILITY_RUN_AWAY, ABILITY_ADAPTABILITY, ABILITY_ANTICIPATION}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - .flags = SPECIES_FLAG_GENDER_DIFFERENCE, - }, + [SPECIES_EEVEE] = EEVEE_BASE_STATS, [SPECIES_VAPOREON] = { @@ -4488,31 +5005,7 @@ const struct BaseStats gBaseStats[] = .noFlip = FALSE, }, - [SPECIES_SNORLAX] = - { - .baseHP = 160, - .baseAttack = 110, - .baseDefense = 65, - .baseSpeed = 30, - .baseSpAttack = 65, - .baseSpDefense = 110, - .type1 = TYPE_NORMAL, - .type2 = TYPE_NORMAL, - .catchRate = 25, - .expYield = 189, - .evYield_HP = 2, - .itemCommon = ITEM_LEFTOVERS, - .itemRare = ITEM_LEFTOVERS, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 40, - .friendship = 70, - .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_MONSTER, - .abilities = {ABILITY_IMMUNITY, ABILITY_THICK_FAT, ABILITY_GLUTTONY}, - .bodyColor = BODY_COLOR_BLACK, - .noFlip = FALSE, - }, + [SPECIES_SNORLAX] = SNORLAX_BASE_STATS, [SPECIES_ARTICUNO] = { @@ -15113,31 +15606,7 @@ const struct BaseStats gBaseStats[] = .noFlip = FALSE, }, - [SPECIES_GARBODOR] = - { - .baseHP = 80, - .baseAttack = 95, - .baseDefense = 82, - .baseSpeed = 75, - .baseSpAttack = 60, - .baseSpDefense = 82, - .type1 = TYPE_POISON, - .type2 = TYPE_POISON, - .catchRate = 60, - .expYield = 166, - .evYield_Attack = 2, - .itemCommon = ITEM_SILK_SCARF, - .itemRare = ITEM_BLACK_SLUDGE, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = 70, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_MINERAL, - .eggGroup2 = EGG_GROUP_MINERAL, - .abilities = {ABILITY_STENCH, ABILITY_WEAK_ARMOR, ABILITY_AFTERMATH}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = TRUE, - }, + [SPECIES_GARBODOR] = GARBODOR_BASE_STATS, [SPECIES_ZORUA] = { @@ -20663,30 +21132,7 @@ const struct BaseStats gBaseStats[] = .flags = SPECIES_FLAG_MYTHICAL, }, - [SPECIES_MELMETAL] = - { - .baseHP = 135, - .baseAttack = 143, - .baseDefense = 143, - .baseSpeed = 34, - .baseSpAttack = 80, - .baseSpDefense = 65, - .type1 = TYPE_STEEL, - .type2 = TYPE_STEEL, - .catchRate = 3, - .expYield = 270, - .evYield_Attack = 3, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 0, - .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, - .abilities = {ABILITY_IRON_FIST, ABILITY_NONE}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - .flags = SPECIES_FLAG_MYTHICAL, - }, + [SPECIES_MELMETAL] = MELMETAL_BASE_STATS, #endif #if P_GEN_8_POKEMON == TRUE @@ -20738,29 +21184,7 @@ const struct BaseStats gBaseStats[] = .noFlip = FALSE, }, - [SPECIES_RILLABOOM] = - { - .baseHP = 100, - .baseAttack = 125, - .baseDefense = 90, - .baseSpeed = 85, - .baseSpAttack = 60, - .baseSpDefense = 70, - .type1 = TYPE_GRASS, - .type2 = TYPE_GRASS, - .catchRate = 45, - .expYield = 265, - .evYield_Attack = 3, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = 70, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_GRASS, - .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_GRASSY_SURGE}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, + [SPECIES_RILLABOOM] = RILLABOOM_BASE_STATS, [SPECIES_SCORBUNNY] = { @@ -20810,29 +21234,7 @@ const struct BaseStats gBaseStats[] = .noFlip = FALSE, }, - [SPECIES_CINDERACE] = - { - .baseHP = 80, - .baseAttack = 116, - .baseDefense = 75, - .baseSpeed = 119, - .baseSpAttack = 65, - .baseSpDefense = 75, - .type1 = TYPE_FIRE, - .type2 = TYPE_FIRE, - .catchRate = 45, - .expYield = 265, - .evYield_Speed = 3, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = 70, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_HUMAN_LIKE, - .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_LIBERO}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, - }, + [SPECIES_CINDERACE] = CINDERACE_BASE_STATS, [SPECIES_SOBBLE] = { @@ -20883,29 +21285,7 @@ const struct BaseStats gBaseStats[] = .noFlip = FALSE, }, - [SPECIES_INTELEON] = - { - .baseHP = 70, - .baseAttack = 85, - .baseDefense = 65, - .baseSpeed = 120, - .baseSpAttack = 125, - .baseSpDefense = 65, - .type1 = TYPE_WATER, - .type2 = TYPE_WATER, - .catchRate = 45, - .expYield = 265, - .evYield_Speed = 3, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = 70, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_FIELD, - .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_SNIPER}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, + [SPECIES_INTELEON] = INTELEON_BASE_STATS, [SPECIES_SKWOVET] = { @@ -21005,29 +21385,7 @@ const struct BaseStats gBaseStats[] = .noFlip = FALSE, }, - [SPECIES_CORVIKNIGHT] = - { - .baseHP = 98, - .baseAttack = 87, - .baseDefense = 105, - .baseSpeed = 67, - .baseSpAttack = 53, - .baseSpDefense = 85, - .type1 = TYPE_FLYING, - .type2 = TYPE_STEEL, - .catchRate = 45, - .expYield = 248, - .evYield_Defense = 3, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = 70, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FLYING, - .eggGroup2 = EGG_GROUP_FLYING, - .abilities = {ABILITY_PRESSURE, ABILITY_UNNERVE, ABILITY_MIRROR_ARMOR}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - }, + [SPECIES_CORVIKNIGHT] = CORVIKNIGHT_BASE_STATS, [SPECIES_BLIPBUG] = { @@ -21078,30 +21436,7 @@ const struct BaseStats gBaseStats[] = .noFlip = FALSE, }, - [SPECIES_ORBEETLE] = - { - .baseHP = 60, - .baseAttack = 45, - .baseDefense = 110, - .baseSpeed = 90, - .baseSpAttack = 80, - .baseSpDefense = 120, - .type1 = TYPE_BUG, - .type2 = TYPE_PSYCHIC, - .catchRate = 45, - .expYield = 253, - .evYield_SpDefense = 3, - .itemRare = ITEM_PSYCHIC_SEED, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = 70, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_BUG, - .abilities = {ABILITY_SWARM, ABILITY_FRISK, ABILITY_TELEPATHY}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - }, + [SPECIES_ORBEETLE] = ORBEETLE_BASE_STATS, [SPECIES_NICKIT] = { @@ -21271,29 +21606,7 @@ const struct BaseStats gBaseStats[] = .noFlip = FALSE, }, - [SPECIES_DREDNAW] = - { - .baseHP = 90, - .baseAttack = 115, - .baseDefense = 90, - .baseSpeed = 74, - .baseSpAttack = 48, - .baseSpDefense = 68, - .type1 = TYPE_WATER, - .type2 = TYPE_ROCK, - .catchRate = 75, - .expYield = 170, - .evYield_Attack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = 70, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_WATER_1, - .abilities = {ABILITY_STRONG_JAW, ABILITY_SHELL_ARMOR, ABILITY_SWIFT_SWIM}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, + [SPECIES_DREDNAW] = DREDNAW_BASE_STATS, [SPECIES_YAMPER] = { @@ -21391,29 +21704,7 @@ const struct BaseStats gBaseStats[] = .noFlip = FALSE, }, - [SPECIES_COALOSSAL] = - { - .baseHP = 110, - .baseAttack = 80, - .baseDefense = 120, - .baseSpeed = 30, - .baseSpAttack = 80, - .baseSpDefense = 90, - .type1 = TYPE_ROCK, - .type2 = TYPE_FIRE, - .catchRate = 45, - .expYield = 255, - .evYield_Defense = 3, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = 70, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_MINERAL, - .eggGroup2 = EGG_GROUP_MINERAL, - .abilities = {ABILITY_STEAM_ENGINE, ABILITY_FLAME_BODY, ABILITY_FLASH_FIRE}, - .bodyColor = BODY_COLOR_BLACK, - .noFlip = FALSE, - }, + [SPECIES_COALOSSAL] = COALOSSAL_BASE_STATS, [SPECIES_APPLIN] = { @@ -21439,53 +21730,9 @@ const struct BaseStats gBaseStats[] = .noFlip = FALSE, }, - [SPECIES_FLAPPLE] = - { - .baseHP = 70, - .baseAttack = 110, - .baseDefense = 80, - .baseSpeed = 70, - .baseSpAttack = 95, - .baseSpDefense = 60, - .type1 = TYPE_GRASS, - .type2 = TYPE_DRAGON, - .catchRate = 45, - .expYield = 170, - .evYield_Attack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = 70, - .growthRate = GROWTH_ERRATIC, - .eggGroup1 = EGG_GROUP_GRASS, - .eggGroup2 = EGG_GROUP_DRAGON, - .abilities = {ABILITY_RIPEN, ABILITY_GLUTTONY, ABILITY_HUSTLE}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, + [SPECIES_FLAPPLE] = FLAPPLE_BASE_STATS, - [SPECIES_APPLETUN] = - { - .baseHP = 110, - .baseAttack = 85, - .baseDefense = 80, - .baseSpeed = 30, - .baseSpAttack = 100, - .baseSpDefense = 80, - .type1 = TYPE_GRASS, - .type2 = TYPE_DRAGON, - .catchRate = 45, - .expYield = 170, - .evYield_HP = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = 70, - .growthRate = GROWTH_ERRATIC, - .eggGroup1 = EGG_GROUP_GRASS, - .eggGroup2 = EGG_GROUP_DRAGON, - .abilities = {ABILITY_RIPEN, ABILITY_GLUTTONY, ABILITY_THICK_FAT}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, + [SPECIES_APPLETUN] = APPLETUN_BASE_STATS, [SPECIES_SILICOBRA] = { @@ -21511,29 +21758,7 @@ const struct BaseStats gBaseStats[] = .noFlip = FALSE, }, - [SPECIES_SANDACONDA] = - { - .baseHP = 72, - .baseAttack = 107, - .baseDefense = 125, - .baseSpeed = 71, - .baseSpAttack = 65, - .baseSpDefense = 70, - .type1 = TYPE_GROUND, - .type2 = TYPE_GROUND, - .catchRate = 120, - .expYield = 179, - .evYield_Defense = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = 70, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_DRAGON, - .abilities = {ABILITY_SAND_SPIT, ABILITY_SHED_SKIN, ABILITY_SAND_VEIL}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, + [SPECIES_SANDACONDA] = SANDACONDA_BASE_STATS, [SPECIES_CRAMORANT] = CRAMORANT_BASE_STATS, @@ -21635,29 +21860,7 @@ const struct BaseStats gBaseStats[] = .noFlip = FALSE, }, - [SPECIES_CENTISKORCH] = - { - .baseHP = 100, - .baseAttack = 115, - .baseDefense = 65, - .baseSpeed = 65, - .baseSpAttack = 90, - .baseSpDefense = 90, - .type1 = TYPE_FIRE, - .type2 = TYPE_BUG, - .catchRate = 75, - .expYield = 184, - .evYield_Attack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = 70, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_BUG, - .abilities = {ABILITY_FLASH_FIRE, ABILITY_WHITE_SMOKE, ABILITY_FLAME_BODY}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - }, + [SPECIES_CENTISKORCH] = CENTISKORCH_BASE_STATS, [SPECIES_CLOBBOPUS] = { @@ -21759,29 +21962,7 @@ const struct BaseStats gBaseStats[] = .noFlip = FALSE, }, - [SPECIES_HATTERENE] = - { - .baseHP = 57, - .baseAttack = 90, - .baseDefense = 95, - .baseSpeed = 29, - .baseSpAttack = 136, - .baseSpDefense = 103, - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_FAIRY, - .catchRate = 45, - .expYield = 255, - .evYield_SpAttack = 3, - .genderRatio = MON_FEMALE, - .eggCycles = 20, - .friendship = 70, - .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_FAIRY, - .eggGroup2 = EGG_GROUP_FAIRY, - .abilities = {ABILITY_HEALER, ABILITY_ANTICIPATION, ABILITY_MAGIC_BOUNCE}, - .bodyColor = BODY_COLOR_PINK, - .noFlip = FALSE, - }, + [SPECIES_HATTERENE] = HATTERENE_BASE_STATS, [SPECIES_IMPIDIMP] = { @@ -21831,29 +22012,7 @@ const struct BaseStats gBaseStats[] = .noFlip = FALSE, }, - [SPECIES_GRIMMSNARL] = - { - .baseHP = 95, - .baseAttack = 120, - .baseDefense = 65, - .baseSpeed = 60, - .baseSpAttack = 95, - .baseSpDefense = 75, - .type1 = TYPE_DARK, - .type2 = TYPE_FAIRY, - .catchRate = 45, - .expYield = 255, - .evYield_Attack = 3, - .genderRatio = MON_MALE, - .eggCycles = 20, - .friendship = 70, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FAIRY, - .eggGroup2 = EGG_GROUP_HUMAN_LIKE, - .abilities = {ABILITY_PRANKSTER, ABILITY_FRISK, ABILITY_PICKPOCKET}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - }, + [SPECIES_GRIMMSNARL] = GRIMMSNARL_BASE_STATS, [SPECIES_OBSTAGOON] = { @@ -22223,30 +22382,7 @@ const struct BaseStats gBaseStats[] = .noFlip = FALSE, }, - [SPECIES_COPPERAJAH] = - { - .baseHP = 122, - .baseAttack = 130, - .baseDefense = 69, - .baseSpeed = 30, - .baseSpAttack = 80, - .baseSpDefense = 69, - .type1 = TYPE_STEEL, - .type2 = TYPE_STEEL, - .catchRate = 90, - .expYield = 175, - .evYield_Attack = 2, - .itemRare = ITEM_LAGGING_TAIL, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 25, - .friendship = 70, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_MINERAL, - .abilities = {ABILITY_SHEER_FORCE, ABILITY_NONE, ABILITY_HEAVY_METAL}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, + [SPECIES_COPPERAJAH] = COPPERAJAH_BASE_STATS, [SPECIES_DRACOZOLT] = { @@ -22344,29 +22480,7 @@ const struct BaseStats gBaseStats[] = .noFlip = FALSE, }, - [SPECIES_DURALUDON] = - { - .baseHP = 70, - .baseAttack = 95, - .baseDefense = 115, - .baseSpeed = 85, - .baseSpAttack = 120, - .baseSpDefense = 50, - .type1 = TYPE_STEEL, - .type2 = TYPE_DRAGON, - .catchRate = 45, - .expYield = 187, - .evYield_SpAttack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 30, - .friendship = 70, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_MINERAL, - .eggGroup2 = EGG_GROUP_DRAGON, - .abilities = {ABILITY_LIGHT_METAL, ABILITY_HEAVY_METAL, ABILITY_STALWART}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, - }, + [SPECIES_DURALUDON] = DURALUDON_BASE_STATS, [SPECIES_DREEPY] = { @@ -22540,30 +22654,7 @@ const struct BaseStats gBaseStats[] = .flags = SPECIES_FLAG_LEGENDARY, }, - [SPECIES_URSHIFU] = - { - .baseHP = 100, - .baseAttack = 130, - .baseDefense = 100, - .baseSpeed = 97, - .baseSpAttack = 63, - .baseSpDefense = 60, - .type1 = TYPE_FIGHTING, - .type2 = TYPE_DARK, - .catchRate = 3, - .expYield = 275, - .evYield_Attack = 3, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 120, - .friendship = 70, - .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, - .abilities = {ABILITY_UNSEEN_FIST, ABILITY_NONE}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - .flags = SPECIES_FLAG_LEGENDARY, - }, + [SPECIES_URSHIFU] = URSHIFU_BASE_STATS, [SPECIES_ZARUDE] = ZARUDE_BASE_STATS, @@ -26737,30 +26828,7 @@ const struct BaseStats gBaseStats[] = .flags = SPECIES_FLAG_LEGENDARY, }, - [SPECIES_URSHIFU_RAPID_STRIKE_STYLE] = - { - .baseHP = 100, - .baseAttack = 130, - .baseDefense = 100, - .baseSpeed = 97, - .baseSpAttack = 63, - .baseSpDefense = 60, - .type1 = TYPE_FIGHTING, - .type2 = TYPE_WATER, - .catchRate = 3, - .expYield = 275, - .evYield_Attack = 3, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 120, - .friendship = 70, - .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, - .abilities = {ABILITY_UNSEEN_FIST, ABILITY_NONE}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - .flags = SPECIES_FLAG_LEGENDARY, - }, + [SPECIES_URSHIFU_RAPID_STRIKE_STYLE] = URSHIFU_RAPID_STRIKE_STYLE_BASE_STATS, [SPECIES_ZARUDE_DADA] = ZARUDE_BASE_STATS, @@ -26838,5 +26906,41 @@ const struct BaseStats gBaseStats[] = .noFlip = FALSE, .flags = SPECIES_FLAG_LEGENDARY, }, + + // Gigantamax Forms + [SPECIES_VENUSAUR_GMAX] = VENUSAUR_BASE_STATS, + [SPECIES_CHARIZARD_GMAX] = CHARIZARD_BASE_STATS, + [SPECIES_BLASTOISE_GMAX] = BLASTOISE_BASE_STATS, + [SPECIES_BUTTERFREE_GMAX] = BUTTERFREE_BASE_STATS, + [SPECIES_PIKACHU_GMAX] = PIKACHU_BASE_STATS(PERCENT_FEMALE(50), FLIP), + [SPECIES_MEOWTH_GMAX] = MEOWTH_BASE_STATS, + [SPECIES_MACHAMP_GMAX] = MACHAMP_BASE_STATS, + [SPECIES_GENGAR_GMAX] = GENGAR_BASE_STATS, + [SPECIES_KINGLER_GMAX] = KINGLER_BASE_STATS, + [SPECIES_LAPRAS_GMAX] = LAPRAS_BASE_STATS, + [SPECIES_EEVEE_GMAX] = EEVEE_BASE_STATS, + [SPECIES_SNORLAX_GMAX] = SNORLAX_BASE_STATS, + [SPECIES_GARBODOR_GMAX] = GARBODOR_BASE_STATS, + [SPECIES_MELMETAL_GMAX] = MELMETAL_BASE_STATS, + [SPECIES_RILLABOOM_GMAX] = RILLABOOM_BASE_STATS, + [SPECIES_CINDERACE_GMAX] = CINDERACE_BASE_STATS, + [SPECIES_INTELEON_GMAX] = INTELEON_BASE_STATS, + [SPECIES_CORVIKNIGHT_GMAX] = CORVIKNIGHT_BASE_STATS, + [SPECIES_ORBEETLE_GMAX] = ORBEETLE_BASE_STATS, + [SPECIES_DREDNAW_GMAX] = DREDNAW_BASE_STATS, + [SPECIES_COALOSSAL_GMAX] = COALOSSAL_BASE_STATS, + [SPECIES_FLAPPLE_GMAX] = FLAPPLE_BASE_STATS, + [SPECIES_APPLETUN_GMAX] = APPLETUN_BASE_STATS, + [SPECIES_SANDACONDA_GMAX] = SANDACONDA_BASE_STATS, + [SPECIES_TOXTRICITY_GMAX] = TOXTRICITY_BASE_STATS(ABILITY_PLUS), + [SPECIES_CENTISKORCH_GMAX] = CENTISKORCH_BASE_STATS, + [SPECIES_HATTERENE_GMAX] = HATTERENE_BASE_STATS, + [SPECIES_GRIMMSNARL_GMAX] = GRIMMSNARL_BASE_STATS, + [SPECIES_ALCREMIE_GMAX] = ALCREMIE_BASE_STATS(BODY_COLOR_PINK), + [SPECIES_COPPERAJAH_GMAX] = COPPERAJAH_BASE_STATS, + [SPECIES_DURALUDON_GMAX] = DURALUDON_BASE_STATS, + [SPECIES_URSHIFU_GMAX] = URSHIFU_BASE_STATS, + [SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GMAX] = URSHIFU_RAPID_STRIKE_STYLE_BASE_STATS, + #endif }; diff --git a/src/data/pokemon/form_change_table_pointers.h b/src/data/pokemon/form_change_table_pointers.h index 90be7112b6..b6aaf07a57 100644 --- a/src/data/pokemon/form_change_table_pointers.h +++ b/src/data/pokemon/form_change_table_pointers.h @@ -76,5 +76,72 @@ const struct FormChange *const gFormChangeTablePointers[NUM_SPECIES] = [SPECIES_ZAMAZENTA_CROWNED_SHIELD] = sZamazentaFormChangeTable, [SPECIES_ENAMORUS] = sEnamorusFormChangeTable, [SPECIES_ENAMORUS_THERIAN] = sEnamorusFormChangeTable, + // Gigantamax Forms + [SPECIES_VENUSAUR] = sVenusaurFormChangeTable, + [SPECIES_VENUSAUR_GMAX] = sVenusaurFormChangeTable, + [SPECIES_CHARIZARD] = sCharizardFormChangeTable, + [SPECIES_CHARIZARD_GMAX] = sCharizardFormChangeTable, + [SPECIES_BLASTOISE] = sBlastoiseFormChangeTable, + [SPECIES_BLASTOISE_GMAX] = sBlastoiseFormChangeTable, + [SPECIES_BUTTERFREE] = sButterfreeFormChangeTable, + [SPECIES_BUTTERFREE_GMAX] = sButterfreeFormChangeTable, + [SPECIES_PIKACHU] = sPikachuFormChangeTable, + [SPECIES_PIKACHU_GMAX] = sPikachuFormChangeTable, + [SPECIES_MEOWTH] = sMeowthFormChangeTable, + [SPECIES_MEOWTH_GMAX] = sMeowthFormChangeTable, + [SPECIES_MACHAMP] = sMachampFormChangeTable, + [SPECIES_MACHAMP_GMAX] = sMachampFormChangeTable, + [SPECIES_GENGAR] = sGengarFormChangeTable, + [SPECIES_GENGAR_GMAX] = sGengarFormChangeTable, + [SPECIES_KINGLER] = sKinglerFormChangeTable, + [SPECIES_KINGLER_GMAX] = sKinglerFormChangeTable, + [SPECIES_LAPRAS] = sLaprasFormChangeTable, + [SPECIES_LAPRAS_GMAX] = sLaprasFormChangeTable, + [SPECIES_EEVEE] = sEeveeFormChangeTable, + [SPECIES_EEVEE_GMAX] = sEeveeFormChangeTable, + [SPECIES_SNORLAX] = sSnorlaxFormChangeTable, + [SPECIES_SNORLAX_GMAX] = sSnorlaxFormChangeTable, + [SPECIES_GARBODOR] = sGarbodorFormChangeTable, + [SPECIES_GARBODOR_GMAX] = sGarbodorFormChangeTable, + [SPECIES_MELMETAL] = sMelmetalFormChangeTable, + [SPECIES_MELMETAL_GMAX] = sMelmetalFormChangeTable, + [SPECIES_RILLABOOM] = sRillaboomFormChangeTable, + [SPECIES_RILLABOOM_GMAX] = sRillaboomFormChangeTable, + [SPECIES_CINDERACE] = sCinderaceFormChangeTable, + [SPECIES_CINDERACE_GMAX] = sCinderaceFormChangeTable, + [SPECIES_INTELEON] = sInteleonFormChangeTable, + [SPECIES_INTELEON_GMAX] = sInteleonFormChangeTable, + [SPECIES_CORVIKNIGHT] = sCorviknightFormChangeTable, + [SPECIES_CORVIKNIGHT_GMAX] = sCorviknightFormChangeTable, + [SPECIES_ORBEETLE] = sOrbeetleFormChangeTable, + [SPECIES_ORBEETLE_GMAX] = sOrbeetleFormChangeTable, + [SPECIES_DREDNAW] = sDrednawFormChangeTable, + [SPECIES_DREDNAW_GMAX] = sDrednawFormChangeTable, + [SPECIES_COALOSSAL] = sCoalossalFormChangeTable, + [SPECIES_COALOSSAL_GMAX] = sCoalossalFormChangeTable, + [SPECIES_FLAPPLE] = sFlappleFormChangeTable, + [SPECIES_FLAPPLE_GMAX] = sFlappleFormChangeTable, + [SPECIES_APPLETUN] = sAppletunFormChangeTable, + [SPECIES_APPLETUN_GMAX] = sAppletunFormChangeTable, + [SPECIES_SANDACONDA] = sSandacondaFormChangeTable, + [SPECIES_SANDACONDA_GMAX] = sSandacondaFormChangeTable, + [SPECIES_TOXTRICITY] = sToxtricityFormChangeTable, + [SPECIES_TOXTRICITY_GMAX] = sToxtricityFormChangeTable, + [SPECIES_CENTISKORCH] = sCentiskorchFormChangeTable, + [SPECIES_CENTISKORCH_GMAX] = sCentiskorchFormChangeTable, + [SPECIES_HATTERENE] = sHattereneFormChangeTable, + [SPECIES_HATTERENE_GMAX] = sHattereneFormChangeTable, + [SPECIES_GRIMMSNARL] = sGrimmsnarlFormChangeTable, + [SPECIES_GRIMMSNARL_GMAX] = sGrimmsnarlFormChangeTable, + [SPECIES_ALCREMIE] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_GMAX] = sAlcremieFormChangeTable, + [SPECIES_COPPERAJAH] = sCopperajahFormChangeTable, + [SPECIES_COPPERAJAH_GMAX] = sCopperajahFormChangeTable, + [SPECIES_DURALUDON] = sDuraludonFormChangeTable, + [SPECIES_DURALUDON_GMAX] = sDuraludonFormChangeTable, + [SPECIES_URSHIFU] = sUrshifuFormChangeTable, + [SPECIES_URSHIFU_GMAX] = sUrshifuFormChangeTable, + [SPECIES_URSHIFU_RAPID_STRIKE_STYLE] = sUrshifuRapidStrikeFormChangeTable, + [SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GMAX] = sUrshifuRapidStrikeFormChangeTable, #endif }; diff --git a/src/data/pokemon/form_change_tables.h b/src/data/pokemon/form_change_tables.h index 94da0add36..aee50b3489 100644 --- a/src/data/pokemon/form_change_tables.h +++ b/src/data/pokemon/form_change_tables.h @@ -195,6 +195,48 @@ static const struct FormChange sEnamorusFormChangeTable[] = { {FORM_ITEM_USE, SPECIES_ENAMORUS_THERIAN, ITEM_REVEAL_GLASS}, {FORM_CHANGE_END}, }; + +// Gigantamax Forms +#define GIGANTAMAX_FORM(species)\ + { \ + {FORM_GIGANTAMAX, SPECIES_##species}, \ + {FORM_GIGANTAMAX, SPECIES_##species##_GMAX}, \ + {FORM_CHANGE_END} \ + }; + +static const struct FormChange sVenusaurFormChangeTable[] = GIGANTAMAX_FORM(VENUSAUR) +static const struct FormChange sCharizardFormChangeTable[] = GIGANTAMAX_FORM(CHARIZARD) +static const struct FormChange sBlastoiseFormChangeTable[] = GIGANTAMAX_FORM(BLASTOISE) +static const struct FormChange sButterfreeFormChangeTable[] = GIGANTAMAX_FORM(BUTTERFREE) +static const struct FormChange sPikachuFormChangeTable[] = GIGANTAMAX_FORM(PIKACHU) +static const struct FormChange sMeowthFormChangeTable[] = GIGANTAMAX_FORM(MEOWTH) +static const struct FormChange sMachampFormChangeTable[] = GIGANTAMAX_FORM(MACHAMP) +static const struct FormChange sGengarFormChangeTable[] = GIGANTAMAX_FORM(GENGAR) +static const struct FormChange sKinglerFormChangeTable[] = GIGANTAMAX_FORM(KINGLER) +static const struct FormChange sLaprasFormChangeTable[] = GIGANTAMAX_FORM(LAPRAS) +static const struct FormChange sEeveeFormChangeTable[] = GIGANTAMAX_FORM(EEVEE) +static const struct FormChange sSnorlaxFormChangeTable[] = GIGANTAMAX_FORM(SNORLAX) +static const struct FormChange sGarbodorFormChangeTable[] = GIGANTAMAX_FORM(GARBODOR) +static const struct FormChange sMelmetalFormChangeTable[] = GIGANTAMAX_FORM(MELMETAL) +static const struct FormChange sRillaboomFormChangeTable[] = GIGANTAMAX_FORM(RILLABOOM) +static const struct FormChange sCinderaceFormChangeTable[] = GIGANTAMAX_FORM(CINDERACE) +static const struct FormChange sInteleonFormChangeTable[] = GIGANTAMAX_FORM(INTELEON) +static const struct FormChange sCorviknightFormChangeTable[] = GIGANTAMAX_FORM(CORVIKNIGHT) +static const struct FormChange sOrbeetleFormChangeTable[] = GIGANTAMAX_FORM(ORBEETLE) +static const struct FormChange sDrednawFormChangeTable[] = GIGANTAMAX_FORM(DREDNAW) +static const struct FormChange sCoalossalFormChangeTable[] = GIGANTAMAX_FORM(COALOSSAL) +static const struct FormChange sFlappleFormChangeTable[] = GIGANTAMAX_FORM(FLAPPLE) +static const struct FormChange sAppletunFormChangeTable[] = GIGANTAMAX_FORM(APPLETUN) +static const struct FormChange sSandacondaFormChangeTable[] = GIGANTAMAX_FORM(SANDACONDA) +static const struct FormChange sToxtricityFormChangeTable[] = GIGANTAMAX_FORM(TOXTRICITY) +static const struct FormChange sCentiskorchFormChangeTable[] = GIGANTAMAX_FORM(CENTISKORCH) +static const struct FormChange sHattereneFormChangeTable[] = GIGANTAMAX_FORM(HATTERENE) +static const struct FormChange sGrimmsnarlFormChangeTable[] = GIGANTAMAX_FORM(GRIMMSNARL) +static const struct FormChange sAlcremieFormChangeTable[] = GIGANTAMAX_FORM(ALCREMIE) +static const struct FormChange sCopperajahFormChangeTable[] = GIGANTAMAX_FORM(COPPERAJAH) +static const struct FormChange sDuraludonFormChangeTable[] = GIGANTAMAX_FORM(DURALUDON) +static const struct FormChange sUrshifuFormChangeTable[] = GIGANTAMAX_FORM(URSHIFU) +static const struct FormChange sUrshifuRapidStrikeFormChangeTable[] = GIGANTAMAX_FORM(URSHIFU_RAPID_STRIKE_STYLE) #endif #undef WHEN_LEARNED diff --git a/src/data/pokemon/form_species_table_pointers.h b/src/data/pokemon/form_species_table_pointers.h index 73b1b07d7a..eae45e5491 100644 --- a/src/data/pokemon/form_species_table_pointers.h +++ b/src/data/pokemon/form_species_table_pointers.h @@ -590,5 +590,39 @@ const u16 *const gFormSpeciesIdTables[NUM_SPECIES] = [SPECIES_CALYREX_SHADOW_RIDER] = sCalyrexFormSpeciesIdTable, // Enamorus [SPECIES_ENAMORUS_THERIAN] = sEnamorusFormSpeciesIdTable, + // Gigantamax Forms + [SPECIES_VENUSAUR_GMAX] = sVenusaurFormSpeciesIdTable, + [SPECIES_CHARIZARD_GMAX] = sCharizardFormSpeciesIdTable, + [SPECIES_BLASTOISE_GMAX] = sBlastoiseFormSpeciesIdTable, + [SPECIES_BUTTERFREE_GMAX] = sButterfreeFormSpeciesIdTable, + [SPECIES_PIKACHU_GMAX] = sPikachuFormSpeciesIdTable, + [SPECIES_MEOWTH_GMAX] = sMeowthFormSpeciesIdTable, + [SPECIES_MACHAMP_GMAX] = sMachampFormSpeciesIdTable, + [SPECIES_GENGAR_GMAX] = sGengarFormSpeciesIdTable, + [SPECIES_KINGLER_GMAX] = sKinglerFormSpeciesIdTable, + [SPECIES_LAPRAS_GMAX] = sLaprasFormSpeciesIdTable, + [SPECIES_EEVEE_GMAX] = sEeveeFormSpeciesIdTable, + [SPECIES_SNORLAX_GMAX] = sSnorlaxFormSpeciesIdTable, + [SPECIES_GARBODOR_GMAX] = sGarbodorFormSpeciesIdTable, + [SPECIES_MELMETAL_GMAX] = sMelmetalFormSpeciesIdTable, + [SPECIES_RILLABOOM_GMAX] = sRillaboomFormSpeciesIdTable, + [SPECIES_CINDERACE_GMAX] = sCinderaceFormSpeciesIdTable, + [SPECIES_INTELEON_GMAX] = sInteleonFormSpeciesIdTable, + [SPECIES_CORVIKNIGHT_GMAX] = sCorviknightFormSpeciesIdTable, + [SPECIES_ORBEETLE_GMAX] = sOrbeetleFormSpeciesIdTable, + [SPECIES_DREDNAW_GMAX] = sDrednawFormSpeciesIdTable, + [SPECIES_COALOSSAL_GMAX] = sCoalossalFormSpeciesIdTable, + [SPECIES_FLAPPLE_GMAX] = sFlappleFormSpeciesIdTable, + [SPECIES_APPLETUN_GMAX] = sAppletunFormSpeciesIdTable, + [SPECIES_SANDACONDA_GMAX] = sSandacondaFormSpeciesIdTable, + [SPECIES_TOXTRICITY_GMAX] = sToxtricityFormSpeciesIdTable, + [SPECIES_CENTISKORCH_GMAX] = sCentiskorchFormSpeciesIdTable, + [SPECIES_HATTERENE_GMAX] = sHattereneFormSpeciesIdTable, + [SPECIES_GRIMMSNARL_GMAX] = sGrimmsnarlFormSpeciesIdTable, + [SPECIES_ALCREMIE_GMAX] = sAlcremieFormSpeciesIdTable, + [SPECIES_COPPERAJAH_GMAX] = sCopperajahFormSpeciesIdTable, + [SPECIES_DURALUDON_GMAX] = sDuraludonFormSpeciesIdTable, + [SPECIES_URSHIFU_GMAX] = sUrshifuFormSpeciesIdTable, + [SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GMAX] = sUrshifuFormSpeciesIdTable, #endif }; diff --git a/src/data/pokemon/form_species_tables.h b/src/data/pokemon/form_species_tables.h index 545201c5af..af862e7252 100644 --- a/src/data/pokemon/form_species_tables.h +++ b/src/data/pokemon/form_species_tables.h @@ -1,6 +1,7 @@ static const u16 sVenusaurFormSpeciesIdTable[] = { SPECIES_VENUSAUR, SPECIES_VENUSAUR_MEGA, + SPECIES_VENUSAUR_GMAX, FORM_SPECIES_END, }; @@ -8,12 +9,20 @@ static const u16 sCharizardFormSpeciesIdTable[] = { SPECIES_CHARIZARD, SPECIES_CHARIZARD_MEGA_X, SPECIES_CHARIZARD_MEGA_Y, + SPECIES_CHARIZARD_GMAX, FORM_SPECIES_END, }; static const u16 sBlastoiseFormSpeciesIdTable[] = { SPECIES_BLASTOISE, SPECIES_BLASTOISE_MEGA, + SPECIES_BLASTOISE_GMAX, + FORM_SPECIES_END, +}; + +static const u16 sButterfreeFormSpeciesIdTable[] = { + SPECIES_BUTTERFREE, + SPECIES_BUTTERFREE_GMAX, FORM_SPECIES_END, }; @@ -57,6 +66,7 @@ static const u16 sPikachuFormSpeciesIdTable[] = { SPECIES_PIKACHU_ALOLA_CAP, SPECIES_PIKACHU_PARTNER_CAP, SPECIES_PIKACHU_WORLD_CAP, + SPECIES_PIKACHU_GMAX, FORM_SPECIES_END, }; @@ -106,6 +116,7 @@ static const u16 sMeowthFormSpeciesIdTable[] = { SPECIES_MEOWTH, SPECIES_MEOWTH_ALOLAN, SPECIES_MEOWTH_GALARIAN, + SPECIES_MEOWTH_GMAX, FORM_SPECIES_END, }; @@ -133,6 +144,12 @@ static const u16 sArcanineFormSpeciesIdTable[] = { FORM_SPECIES_END, }; +static const u16 sMachampFormSpeciesIdTable[] = { + SPECIES_MACHAMP, + SPECIES_MACHAMP_GMAX, + FORM_SPECIES_END, +}; + static const u16 sGeodudeFormSpeciesIdTable[] = { SPECIES_GEODUDE, SPECIES_GEODUDE_ALOLAN, @@ -194,9 +211,16 @@ static const u16 sMukFormSpeciesIdTable[] = { FORM_SPECIES_END, }; +static const u16 sKinglerFormSpeciesIdTable[] = { + SPECIES_KINGLER, + SPECIES_KINGLER_GMAX, + FORM_SPECIES_END, +}; + static const u16 sGengarFormSpeciesIdTable[] = { SPECIES_GENGAR, SPECIES_GENGAR_MEGA, + SPECIES_GENGAR_GMAX, FORM_SPECIES_END, }; @@ -254,12 +278,30 @@ static const u16 sGyaradosFormSpeciesIdTable[] = { FORM_SPECIES_END, }; +static const u16 sLaprasFormSpeciesIdTable[] = { + SPECIES_LAPRAS, + SPECIES_LAPRAS_GMAX, + FORM_SPECIES_END, +}; + +static const u16 sEeveeFormSpeciesIdTable[] = { + SPECIES_EEVEE, + SPECIES_EEVEE_GMAX, + FORM_SPECIES_END, +}; + static const u16 sAerodactylFormSpeciesIdTable[] = { SPECIES_AERODACTYL, SPECIES_AERODACTYL_MEGA, FORM_SPECIES_END, }; +static const u16 sSnorlaxFormSpeciesIdTable[] = { + SPECIES_SNORLAX, + SPECIES_SNORLAX_GMAX, + FORM_SPECIES_END, +}; + static const u16 sArticunoFormSpeciesIdTable[] = { SPECIES_ARTICUNO, SPECIES_ARTICUNO_GALARIAN, @@ -727,6 +769,12 @@ static const u16 sZoroarkFormSpeciesIdTable[] = { FORM_SPECIES_END, }; +static const u16 sGarbodorFormSpeciesIdTable[] = { + SPECIES_GARBODOR, + SPECIES_GARBODOR_GMAX, + FORM_SPECIES_END, +}; + static const u16 sDeerlingFormSpeciesIdTable[] = { SPECIES_DEERLING, SPECIES_DEERLING_SUMMER, @@ -1046,6 +1094,73 @@ static const u16 sMagearnaFormSpeciesIdTable[] = { #endif #if P_GEN_8_POKEMON == TRUE +static const u16 sMelmetalFormSpeciesIdTable[] = { + SPECIES_MELMETAL, + SPECIES_MELMETAL_GMAX, + FORM_SPECIES_END, +}; + +static const u16 sRillaboomFormSpeciesIdTable[] = { + SPECIES_RILLABOOM, + SPECIES_RILLABOOM_GMAX, + FORM_SPECIES_END, +}; + +static const u16 sCinderaceFormSpeciesIdTable[] = { + SPECIES_CINDERACE, + SPECIES_CINDERACE_GMAX, + FORM_SPECIES_END, +}; + +static const u16 sInteleonFormSpeciesIdTable[] = { + SPECIES_INTELEON, + SPECIES_INTELEON_GMAX, + FORM_SPECIES_END, +}; + +static const u16 sCorviknightFormSpeciesIdTable[] = { + SPECIES_CORVIKNIGHT, + SPECIES_CORVIKNIGHT_GMAX, + FORM_SPECIES_END, +}; + +static const u16 sOrbeetleFormSpeciesIdTable[] = { + SPECIES_ORBEETLE, + SPECIES_ORBEETLE_GMAX, + FORM_SPECIES_END, +}; + +static const u16 sDrednawFormSpeciesIdTable[] = { + SPECIES_DREDNAW, + SPECIES_DREDNAW_GMAX, + FORM_SPECIES_END, +}; + +static const u16 sCoalossalFormSpeciesIdTable[] = { + SPECIES_COALOSSAL, + SPECIES_COALOSSAL_GMAX, + FORM_SPECIES_END, +}; + +static const u16 sFlappleFormSpeciesIdTable[] = { + SPECIES_FLAPPLE, + SPECIES_FLAPPLE_GMAX, + FORM_SPECIES_END, +}; + +static const u16 sAppletunFormSpeciesIdTable[] = { + SPECIES_APPLETUN, + SPECIES_APPLETUN_GMAX, + FORM_SPECIES_END, +}; + + +static const u16 sSandacondaFormSpeciesIdTable[] = { + SPECIES_SANDACONDA, + SPECIES_SANDACONDA_GMAX, + FORM_SPECIES_END, +}; + static const u16 sCramorantFormSpeciesIdTable[] = { SPECIES_CRAMORANT, SPECIES_CRAMORANT_GULPING, @@ -1056,6 +1171,19 @@ static const u16 sCramorantFormSpeciesIdTable[] = { static const u16 sToxtricityFormSpeciesIdTable[] = { SPECIES_TOXTRICITY, SPECIES_TOXTRICITY_LOW_KEY, + SPECIES_TOXTRICITY_GMAX, + FORM_SPECIES_END, +}; + +static const u16 sCentiskorchFormSpeciesIdTable[] = { + SPECIES_CENTISKORCH, + SPECIES_CENTISKORCH_GMAX, + FORM_SPECIES_END, +}; + +static const u16 sHattereneFormSpeciesIdTable[] = { + SPECIES_HATTERENE, + SPECIES_HATTERENE_GMAX, FORM_SPECIES_END, }; @@ -1071,6 +1199,12 @@ static const u16 sPolteageistFormSpeciesIdTable[] = { FORM_SPECIES_END, }; +static const u16 sGrimmsnarlFormSpeciesIdTable[] = { + SPECIES_GRIMMSNARL, + SPECIES_GRIMMSNARL_GMAX, + FORM_SPECIES_END, +}; + static const u16 sAlcremieFormSpeciesIdTable[] = { SPECIES_ALCREMIE, SPECIES_ALCREMIE_RUBY_CREAM, @@ -1102,6 +1236,18 @@ static const u16 sMorpekoFormSpeciesIdTable[] = { FORM_SPECIES_END, }; +static const u16 sCopperajahFormSpeciesIdTable[] = { + SPECIES_COPPERAJAH, + SPECIES_COPPERAJAH_GMAX, + FORM_SPECIES_END, +}; + +static const u16 sDuraludonFormSpeciesIdTable[] = { + SPECIES_DURALUDON, + SPECIES_DURALUDON_GMAX, + FORM_SPECIES_END, +}; + static const u16 sZacianFormSpeciesIdTable[] = { SPECIES_ZACIAN, SPECIES_ZACIAN_CROWNED_SWORD, @@ -1123,6 +1269,8 @@ static const u16 sEternatusFormSpeciesIdTable[] = { static const u16 sUrshifuFormSpeciesIdTable[] = { SPECIES_URSHIFU, SPECIES_URSHIFU_RAPID_STRIKE_STYLE, + SPECIES_URSHIFU_GMAX, + SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GMAX, FORM_SPECIES_END, }; diff --git a/src/data/pokemon/level_up_learnset_pointers.h b/src/data/pokemon/level_up_learnset_pointers.h index 0ecfa59ccf..8ba440804c 100644 --- a/src/data/pokemon/level_up_learnset_pointers.h +++ b/src/data/pokemon/level_up_learnset_pointers.h @@ -1334,5 +1334,39 @@ const struct LevelUpMove *const gLevelUpLearnsets[NUM_SPECIES] = [SPECIES_CALYREX_SHADOW_RIDER] = sCalyrexShadowRiderLevelUpLearnset, // Enamorus [SPECIES_ENAMORUS_THERIAN] = sEnamorusLevelUpLearnset, + // Gigantamax Forms + [SPECIES_VENUSAUR_GMAX] = sVenusaurLevelUpLearnset, + [SPECIES_CHARIZARD_GMAX] = sCharizardLevelUpLearnset, + [SPECIES_BLASTOISE_GMAX] = sBlastoiseLevelUpLearnset, + [SPECIES_BUTTERFREE_GMAX] = sButterfreeLevelUpLearnset, + [SPECIES_PIKACHU_GMAX] = sPikachuLevelUpLearnset, + [SPECIES_MEOWTH_GMAX] = sMeowthLevelUpLearnset, + [SPECIES_MACHAMP_GMAX] = sMachampLevelUpLearnset, + [SPECIES_GENGAR_GMAX] = sGengarLevelUpLearnset, + [SPECIES_KINGLER_GMAX] = sKinglerLevelUpLearnset, + [SPECIES_LAPRAS_GMAX] = sLaprasLevelUpLearnset, + [SPECIES_EEVEE_GMAX] = sEeveeLevelUpLearnset, + [SPECIES_SNORLAX_GMAX] = sSnorlaxLevelUpLearnset, + [SPECIES_GARBODOR_GMAX] = sGarbodorLevelUpLearnset, + [SPECIES_MELMETAL_GMAX] = sMelmetalLevelUpLearnset, + [SPECIES_RILLABOOM_GMAX] = sRillaboomLevelUpLearnset, + [SPECIES_CINDERACE_GMAX] = sCinderaceLevelUpLearnset, + [SPECIES_INTELEON_GMAX] = sInteleonLevelUpLearnset, + [SPECIES_CORVIKNIGHT_GMAX] = sCorviknightLevelUpLearnset, + [SPECIES_ORBEETLE_GMAX] = sOrbeetleLevelUpLearnset, + [SPECIES_DREDNAW_GMAX] = sDrednawLevelUpLearnset, + [SPECIES_COALOSSAL_GMAX] = sCoalossalLevelUpLearnset, + [SPECIES_FLAPPLE_GMAX] = sFlappleLevelUpLearnset, + [SPECIES_APPLETUN_GMAX] = sAppletunLevelUpLearnset, + [SPECIES_SANDACONDA_GMAX] = sSandacondaLevelUpLearnset, + [SPECIES_TOXTRICITY_GMAX] = sToxtricityLevelUpLearnset, + [SPECIES_CENTISKORCH_GMAX] = sCentiskorchLevelUpLearnset, + [SPECIES_HATTERENE_GMAX] = sHattereneLevelUpLearnset, + [SPECIES_GRIMMSNARL_GMAX] = sGrimmsnarlLevelUpLearnset, + [SPECIES_ALCREMIE_GMAX] = sAlcremieLevelUpLearnset, + [SPECIES_COPPERAJAH_GMAX] = sCopperajahLevelUpLearnset, + [SPECIES_DURALUDON_GMAX] = sDuraludonLevelUpLearnset, + [SPECIES_URSHIFU_GMAX] = sUrshifuLevelUpLearnset, + [SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GMAX] = sUrshifuRapidStrikeStyleLevelUpLearnset, #endif }; diff --git a/src/data/pokemon/teachable_learnset_pointers.h b/src/data/pokemon/teachable_learnset_pointers.h index 28998aae1a..523179f43c 100644 --- a/src/data/pokemon/teachable_learnset_pointers.h +++ b/src/data/pokemon/teachable_learnset_pointers.h @@ -1334,5 +1334,39 @@ const u16 *const gTeachableLearnsets[NUM_SPECIES] = [SPECIES_CALYREX_SHADOW_RIDER] = sCalyrexShadowRiderTeachableLearnset, // Enamorus [SPECIES_ENAMORUS_THERIAN] = sEnamorusTeachableLearnset, + // Gigantamax Forms + [SPECIES_VENUSAUR_GMAX] = sVenusaurTeachableLearnset, + [SPECIES_CHARIZARD_GMAX] = sCharizardTeachableLearnset, + [SPECIES_BLASTOISE_GMAX] = sBlastoiseTeachableLearnset, + [SPECIES_BUTTERFREE_GMAX] = sButterfreeTeachableLearnset, + [SPECIES_PIKACHU_GMAX] = sPikachuTeachableLearnset, + [SPECIES_MEOWTH_GMAX] = sMeowthTeachableLearnset, + [SPECIES_MACHAMP_GMAX] = sMachampTeachableLearnset, + [SPECIES_GENGAR_GMAX] = sGengarTeachableLearnset, + [SPECIES_KINGLER_GMAX] = sKinglerTeachableLearnset, + [SPECIES_LAPRAS_GMAX] = sLaprasTeachableLearnset, + [SPECIES_EEVEE_GMAX] = sEeveeTeachableLearnset, + [SPECIES_SNORLAX_GMAX] = sSnorlaxTeachableLearnset, + [SPECIES_GARBODOR_GMAX] = sGarbodorTeachableLearnset, + [SPECIES_MELMETAL_GMAX] = sMelmetalTeachableLearnset, + [SPECIES_RILLABOOM_GMAX] = sRillaboomTeachableLearnset, + [SPECIES_CINDERACE_GMAX] = sCinderaceTeachableLearnset, + [SPECIES_INTELEON_GMAX] = sInteleonTeachableLearnset, + [SPECIES_CORVIKNIGHT_GMAX] = sCorviknightTeachableLearnset, + [SPECIES_ORBEETLE_GMAX] = sOrbeetleTeachableLearnset, + [SPECIES_DREDNAW_GMAX] = sDrednawTeachableLearnset, + [SPECIES_COALOSSAL_GMAX] = sCoalossalTeachableLearnset, + [SPECIES_FLAPPLE_GMAX] = sFlappleTeachableLearnset, + [SPECIES_APPLETUN_GMAX] = sAppletunTeachableLearnset, + [SPECIES_SANDACONDA_GMAX] = sSandacondaTeachableLearnset, + [SPECIES_TOXTRICITY_GMAX] = sToxtricityTeachableLearnset, + [SPECIES_CENTISKORCH_GMAX] = sCentiskorchTeachableLearnset, + [SPECIES_HATTERENE_GMAX] = sHattereneTeachableLearnset, + [SPECIES_GRIMMSNARL_GMAX] = sGrimmsnarlTeachableLearnset, + [SPECIES_ALCREMIE_GMAX] = sAlcremieTeachableLearnset, + [SPECIES_COPPERAJAH_GMAX] = sCopperajahTeachableLearnset, + [SPECIES_DURALUDON_GMAX] = sDuraludonTeachableLearnset, + [SPECIES_URSHIFU_GMAX] = sUrshifuTeachableLearnset, + [SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GMAX] = sUrshifuRapidStrikeStyleTeachableLearnset, #endif }; diff --git a/src/data/pokemon_graphics/back_pic_coordinates.h b/src/data/pokemon_graphics/back_pic_coordinates.h index 8dbc2d2a98..33ff17d9f6 100644 --- a/src/data/pokemon_graphics/back_pic_coordinates.h +++ b/src/data/pokemon_graphics/back_pic_coordinates.h @@ -1356,6 +1356,40 @@ const struct MonCoords gMonBackPicCoords[] = [SPECIES_CALYREX_SHADOW_RIDER] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, // Enamorus [SPECIES_ENAMORUS_THERIAN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + // Gigantamax Forms + [SPECIES_VENUSAUR_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 11 }, + [SPECIES_CHARIZARD_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, + [SPECIES_BLASTOISE_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 5 }, + [SPECIES_BUTTERFREE_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, + [SPECIES_PIKACHU_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_MEOWTH_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 5 }, + [SPECIES_MACHAMP_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, + [SPECIES_GENGAR_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 6 }, + [SPECIES_KINGLER_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 5 }, + [SPECIES_LAPRAS_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, + [SPECIES_EEVEE_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 7 }, + [SPECIES_SNORLAX_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 5 }, + [SPECIES_GARBODOR_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, + [SPECIES_MELMETAL_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 14 }, + [SPECIES_RILLABOOM_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 4 }, + [SPECIES_CINDERACE_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 4 }, + [SPECIES_INTELEON_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 4 }, + [SPECIES_CORVIKNIGHT_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, + [SPECIES_ORBEETLE_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 6 }, + [SPECIES_DREDNAW_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 12 }, + [SPECIES_COALOSSAL_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 8 }, + [SPECIES_FLAPPLE_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, + [SPECIES_APPLETUN_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, + [SPECIES_SANDACONDA_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 5 }, + [SPECIES_TOXTRICITY_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_CENTISKORCH_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, + [SPECIES_HATTERENE_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, + [SPECIES_GRIMMSNARL_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 10 }, + [SPECIES_ALCREMIE_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 8 }, + [SPECIES_COPPERAJAH_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 7 }, + [SPECIES_DURALUDON_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_URSHIFU_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 4 }, + [SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 4 }, #endif [SPECIES_EGG] = { .size = MON_COORDS_SIZE(24, 24), .y_offset = 20 }, }; diff --git a/src/data/pokemon_graphics/back_pic_table.h b/src/data/pokemon_graphics/back_pic_table.h index 398cf28754..945779f80b 100644 --- a/src/data/pokemon_graphics/back_pic_table.h +++ b/src/data/pokemon_graphics/back_pic_table.h @@ -1332,6 +1332,41 @@ const struct CompressedSpriteSheet gMonBackPicTable[] = SPECIES_SPRITE(CALYREX_SHADOW_RIDER, gMonBackPic_CalyrexShadowRider), SPECIES_SPRITE(ENAMORUS_THERIAN, gMonBackPic_CircledQuestionMark), //gMonBackPic_EnamorusTherian), + + // Gigantamax Forms + SPECIES_SPRITE(VENUSAUR_GMAX, gMonBackPic_VenusaurGmax), + SPECIES_SPRITE(CHARIZARD_GMAX, gMonBackPic_CharizardGmax), + SPECIES_SPRITE(BLASTOISE_GMAX, gMonBackPic_BlastoiseGmax), + SPECIES_SPRITE(BUTTERFREE_GMAX, gMonBackPic_ButterfreeGmax), + SPECIES_SPRITE(PIKACHU_GMAX, gMonBackPic_PikachuGmax), + SPECIES_SPRITE(MEOWTH_GMAX, gMonBackPic_MeowthGmax), + SPECIES_SPRITE(MACHAMP_GMAX, gMonBackPic_MachampGmax), + SPECIES_SPRITE(GENGAR_GMAX, gMonBackPic_GengarGmax), + SPECIES_SPRITE(KINGLER_GMAX, gMonBackPic_KinglerGmax), + SPECIES_SPRITE(LAPRAS_GMAX, gMonBackPic_LaprasGmax), + SPECIES_SPRITE(EEVEE_GMAX, gMonBackPic_EeveeGmax), + SPECIES_SPRITE(SNORLAX_GMAX, gMonBackPic_SnorlaxGmax), + SPECIES_SPRITE(GARBODOR_GMAX, gMonBackPic_GarbodorGmax), + SPECIES_SPRITE(MELMETAL_GMAX, gMonBackPic_MelmetalGmax), + SPECIES_SPRITE(RILLABOOM_GMAX, gMonBackPic_RillaboomGmax), + SPECIES_SPRITE(CINDERACE_GMAX, gMonBackPic_CinderaceGmax), + SPECIES_SPRITE(INTELEON_GMAX, gMonBackPic_InteleonGmax), + SPECIES_SPRITE(CORVIKNIGHT_GMAX, gMonBackPic_CorviknightGmax), + SPECIES_SPRITE(ORBEETLE_GMAX, gMonBackPic_OrbeetleGmax), + SPECIES_SPRITE(DREDNAW_GMAX, gMonBackPic_DrednawGmax), + SPECIES_SPRITE(COALOSSAL_GMAX, gMonBackPic_CoalossalGmax), + SPECIES_SPRITE(FLAPPLE_GMAX, gMonBackPic_FlappleGmax), + SPECIES_SPRITE(APPLETUN_GMAX, gMonBackPic_AppletunGmax), + SPECIES_SPRITE(SANDACONDA_GMAX, gMonBackPic_SandacondaGmax), + SPECIES_SPRITE(TOXTRICITY_GMAX, gMonBackPic_ToxtricityGmax), + SPECIES_SPRITE(CENTISKORCH_GMAX, gMonBackPic_CentiskorchGmax), + SPECIES_SPRITE(HATTERENE_GMAX, gMonBackPic_HattereneGmax), + SPECIES_SPRITE(GRIMMSNARL_GMAX, gMonBackPic_GrimmsnarlGmax), + SPECIES_SPRITE(ALCREMIE_GMAX, gMonBackPic_AlcremieGmax), + SPECIES_SPRITE(COPPERAJAH_GMAX, gMonBackPic_CopperajahGmax), + SPECIES_SPRITE(DURALUDON_GMAX, gMonBackPic_DuraludonGmax), + SPECIES_SPRITE(URSHIFU_GMAX, gMonBackPic_UrshifuGmax), + SPECIES_SPRITE(URSHIFU_RAPID_STRIKE_STYLE_GMAX, gMonBackPic_UrshifuRapidStrikeGmax), #endif SPECIES_SPRITE(EGG, gMonFrontPic_Egg), }; diff --git a/src/data/pokemon_graphics/enemy_mon_elevation.h b/src/data/pokemon_graphics/enemy_mon_elevation.h index 64bd433fa4..115b199aac 100644 --- a/src/data/pokemon_graphics/enemy_mon_elevation.h +++ b/src/data/pokemon_graphics/enemy_mon_elevation.h @@ -268,4 +268,5 @@ const u8 gEnemyMonElevation[NUM_SPECIES] = [SPECIES_SINISTEA_ANTIQUE] = 10, [SPECIES_POLTEAGEIST_ANTIQUE] = 12, [SPECIES_ETERNATUS_ETERNAMAX] = 13, + [SPECIES_BUTTERFREE_GMAX] = 10, }; diff --git a/src/data/pokemon_graphics/front_pic_anims.h b/src/data/pokemon_graphics/front_pic_anims.h index 6d2ab461e9..1cdd9b7596 100644 --- a/src/data/pokemon_graphics/front_pic_anims.h +++ b/src/data/pokemon_graphics/front_pic_anims.h @@ -9503,6 +9503,204 @@ static const union AnimCmd sAnim_ENAMORUS_THERIAN_1[] = ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; + +static const union AnimCmd sAnim_VENUSAUR_GMAX_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_CHARIZARD_GMAX_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_BLASTOISE_GMAX_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_BUTTERFREE_GMAX_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_PIKACHU_GMAX_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_MEOWTH_GMAX_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_MACHAMP_GMAX_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_GENGAR_GMAX_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_KINGLER_GMAX_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_LAPRAS_GMAX_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_EEVEE_GMAX_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_SNORLAX_GMAX_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_GARBODOR_GMAX_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_MELMETAL_GMAX_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_RILLABOOM_GMAX_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_CINDERACE_GMAX_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_INTELEON_GMAX_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_CORVIKNIGHT_GMAX_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_ORBEETLE_GMAX_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_DREDNAW_GMAX_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_COALOSSAL_GMAX_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_FLAPPLE_GMAX_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_APPLETUN_GMAX_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_SANDACONDA_GMAX_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_TOXTRICITY_GMAX_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_CENTISKORCH_GMAX_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_HATTERENE_GMAX_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_GRIMMSNARL_GMAX_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_ALCREMIE_GMAX_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_COPPERAJAH_GMAX_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_DURALUDON_GMAX_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_URSHIFU_GMAX_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_URSHIFU_RAPID_STRIKE_STYLE_GMAX_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; #endif static const union AnimCmd *const sAnims_NONE[] = @@ -16102,6 +16300,172 @@ static const union AnimCmd *const sAnims_ENAMORUS_THERIAN[] = sAnim_GeneralFrame0, sAnim_ENAMORUS_THERIAN_1, }; + +static const union AnimCmd *const sAnims_VENUSAUR_GMAX[] ={ + sAnim_GeneralFrame0, + sAnim_VENUSAUR_GMAX_1, +}; + +static const union AnimCmd *const sAnims_CHARIZARD_GMAX[] ={ + sAnim_GeneralFrame0, + sAnim_CHARIZARD_GMAX_1, +}; + +static const union AnimCmd *const sAnims_BLASTOISE_GMAX[] ={ + sAnim_GeneralFrame0, + sAnim_BLASTOISE_GMAX_1, +}; + +static const union AnimCmd *const sAnims_BUTTERFREE_GMAX[] ={ + sAnim_GeneralFrame0, + sAnim_BUTTERFREE_GMAX_1, +}; + +static const union AnimCmd *const sAnims_PIKACHU_GMAX[] ={ + sAnim_GeneralFrame0, + sAnim_PIKACHU_GMAX_1, +}; + +static const union AnimCmd *const sAnims_MEOWTH_GMAX[] ={ + sAnim_GeneralFrame0, + sAnim_MEOWTH_GMAX_1, +}; + +static const union AnimCmd *const sAnims_MACHAMP_GMAX[] ={ + sAnim_GeneralFrame0, + sAnim_MACHAMP_GMAX_1, +}; + +static const union AnimCmd *const sAnims_GENGAR_GMAX[] ={ + sAnim_GeneralFrame0, + sAnim_GENGAR_GMAX_1, +}; + +static const union AnimCmd *const sAnims_KINGLER_GMAX[] ={ + sAnim_GeneralFrame0, + sAnim_KINGLER_GMAX_1, +}; + +static const union AnimCmd *const sAnims_LAPRAS_GMAX[] ={ + sAnim_GeneralFrame0, + sAnim_LAPRAS_GMAX_1, +}; + +static const union AnimCmd *const sAnims_EEVEE_GMAX[] ={ + sAnim_GeneralFrame0, + sAnim_EEVEE_GMAX_1, +}; + +static const union AnimCmd *const sAnims_SNORLAX_GMAX[] ={ + sAnim_GeneralFrame0, + sAnim_SNORLAX_GMAX_1, +}; + +static const union AnimCmd *const sAnims_GARBODOR_GMAX[] ={ + sAnim_GeneralFrame0, + sAnim_GARBODOR_GMAX_1, +}; + +static const union AnimCmd *const sAnims_MELMETAL_GMAX[] ={ + sAnim_GeneralFrame0, + sAnim_MELMETAL_GMAX_1, +}; + +static const union AnimCmd *const sAnims_RILLABOOM_GMAX[] ={ + sAnim_GeneralFrame0, + sAnim_RILLABOOM_GMAX_1, +}; + +static const union AnimCmd *const sAnims_CINDERACE_GMAX[] ={ + sAnim_GeneralFrame0, + sAnim_CINDERACE_GMAX_1, +}; + +static const union AnimCmd *const sAnims_INTELEON_GMAX[] ={ + sAnim_GeneralFrame0, + sAnim_INTELEON_GMAX_1, +}; + +static const union AnimCmd *const sAnims_CORVIKNIGHT_GMAX[] ={ + sAnim_GeneralFrame0, + sAnim_CORVIKNIGHT_GMAX_1, +}; + +static const union AnimCmd *const sAnims_ORBEETLE_GMAX[] ={ + sAnim_GeneralFrame0, + sAnim_ORBEETLE_GMAX_1, +}; + +static const union AnimCmd *const sAnims_DREDNAW_GMAX[] ={ + sAnim_GeneralFrame0, + sAnim_DREDNAW_GMAX_1, +}; + +static const union AnimCmd *const sAnims_COALOSSAL_GMAX[] ={ + sAnim_GeneralFrame0, + sAnim_COALOSSAL_GMAX_1, +}; + +static const union AnimCmd *const sAnims_FLAPPLE_GMAX[] ={ + sAnim_GeneralFrame0, + sAnim_FLAPPLE_GMAX_1, +}; + +static const union AnimCmd *const sAnims_APPLETUN_GMAX[] ={ + sAnim_GeneralFrame0, + sAnim_APPLETUN_GMAX_1, +}; + +static const union AnimCmd *const sAnims_SANDACONDA_GMAX[] ={ + sAnim_GeneralFrame0, + sAnim_SANDACONDA_GMAX_1, +}; + +static const union AnimCmd *const sAnims_TOXTRICITY_GMAX[] ={ + sAnim_GeneralFrame0, + sAnim_TOXTRICITY_GMAX_1, +}; + +static const union AnimCmd *const sAnims_CENTISKORCH_GMAX[] ={ + sAnim_GeneralFrame0, + sAnim_CENTISKORCH_GMAX_1, +}; + +static const union AnimCmd *const sAnims_HATTERENE_GMAX[] ={ + sAnim_GeneralFrame0, + sAnim_HATTERENE_GMAX_1, +}; + +static const union AnimCmd *const sAnims_GRIMMSNARL_GMAX[] ={ + sAnim_GeneralFrame0, + sAnim_GRIMMSNARL_GMAX_1, +}; + +static const union AnimCmd *const sAnims_ALCREMIE_GMAX[] ={ + sAnim_GeneralFrame0, + sAnim_ALCREMIE_GMAX_1, +}; + +static const union AnimCmd *const sAnims_COPPERAJAH_GMAX[] ={ + sAnim_GeneralFrame0, + sAnim_COPPERAJAH_GMAX_1, +}; + +static const union AnimCmd *const sAnims_DURALUDON_GMAX[] ={ + sAnim_GeneralFrame0, + sAnim_DURALUDON_GMAX_1, +}; + +static const union AnimCmd *const sAnims_URSHIFU_GMAX[] ={ + sAnim_GeneralFrame0, + sAnim_URSHIFU_GMAX_1, +}; + +static const union AnimCmd *const sAnims_URSHIFU_RAPID_STRIKE_STYLE_GMAX[] ={ + sAnim_GeneralFrame0, + sAnim_URSHIFU_RAPID_STRIKE_STYLE_GMAX_1, +}; + #endif #define ANIM_CMD(name) [SPECIES_##name] = sAnims_##name @@ -17376,6 +17740,40 @@ const union AnimCmd *const *const gMonFrontAnimsPtrTable[] = ANIM_CMD_FULL(CALYREX_ICE_RIDER, sAnims_CALYREX), ANIM_CMD_FULL(CALYREX_SHADOW_RIDER, sAnims_CALYREX), ANIM_CMD(ENAMORUS_THERIAN), + // Gigantamax Forms + ANIM_CMD(VENUSAUR_GMAX), + ANIM_CMD(CHARIZARD_GMAX), + ANIM_CMD(BLASTOISE_GMAX), + ANIM_CMD(BUTTERFREE_GMAX), + ANIM_CMD(PIKACHU_GMAX), + ANIM_CMD(MEOWTH_GMAX), + ANIM_CMD(MACHAMP_GMAX), + ANIM_CMD(GENGAR_GMAX), + ANIM_CMD(KINGLER_GMAX), + ANIM_CMD(LAPRAS_GMAX), + ANIM_CMD(EEVEE_GMAX), + ANIM_CMD(SNORLAX_GMAX), + ANIM_CMD(GARBODOR_GMAX), + ANIM_CMD(MELMETAL_GMAX), + ANIM_CMD(RILLABOOM_GMAX), + ANIM_CMD(CINDERACE_GMAX), + ANIM_CMD(INTELEON_GMAX), + ANIM_CMD(CORVIKNIGHT_GMAX), + ANIM_CMD(ORBEETLE_GMAX), + ANIM_CMD(DREDNAW_GMAX), + ANIM_CMD(COALOSSAL_GMAX), + ANIM_CMD(FLAPPLE_GMAX), + ANIM_CMD(APPLETUN_GMAX), + ANIM_CMD(SANDACONDA_GMAX), + ANIM_CMD(TOXTRICITY_GMAX), + ANIM_CMD(CENTISKORCH_GMAX), + ANIM_CMD(HATTERENE_GMAX), + ANIM_CMD(GRIMMSNARL_GMAX), + ANIM_CMD(ALCREMIE_GMAX), + ANIM_CMD(COPPERAJAH_GMAX), + ANIM_CMD(DURALUDON_GMAX), + ANIM_CMD(URSHIFU_GMAX), + ANIM_CMD(URSHIFU_RAPID_STRIKE_STYLE_GMAX), #endif ANIM_CMD(EGG), }; diff --git a/src/data/pokemon_graphics/front_pic_coordinates.h b/src/data/pokemon_graphics/front_pic_coordinates.h index a484b85966..71328a3dc0 100644 --- a/src/data/pokemon_graphics/front_pic_coordinates.h +++ b/src/data/pokemon_graphics/front_pic_coordinates.h @@ -1337,6 +1337,40 @@ const struct MonCoords gMonFrontPicCoords[] = [SPECIES_CALYREX_ICE_RIDER] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_CALYREX_SHADOW_RIDER] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_ENAMORUS_THERIAN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + // Gigantamax Forms + [SPECIES_VENUSAUR_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 5 }, + [SPECIES_CHARIZARD_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_BLASTOISE_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 4 }, + [SPECIES_BUTTERFREE_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 10 }, + [SPECIES_PIKACHU_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, + [SPECIES_MEOWTH_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, + [SPECIES_MACHAMP_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_GENGAR_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 8 }, + [SPECIES_KINGLER_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_LAPRAS_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_EEVEE_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 6 }, + [SPECIES_SNORLAX_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_GARBODOR_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_MELMETAL_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_RILLABOOM_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_CINDERACE_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_INTELEON_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_CORVIKNIGHT_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, + [SPECIES_ORBEETLE_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_DREDNAW_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_COALOSSAL_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_FLAPPLE_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, + [SPECIES_APPLETUN_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, + [SPECIES_SANDACONDA_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_TOXTRICITY_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_CENTISKORCH_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 5 }, + [SPECIES_HATTERENE_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_GRIMMSNARL_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_ALCREMIE_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_COPPERAJAH_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_DURALUDON_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_URSHIFU_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, #endif // Egg [SPECIES_EGG] = { .size = MON_COORDS_SIZE(24, 24), .y_offset = 20 }, diff --git a/src/data/pokemon_graphics/front_pic_table.h b/src/data/pokemon_graphics/front_pic_table.h index 7629834adb..36d1945b1d 100644 --- a/src/data/pokemon_graphics/front_pic_table.h +++ b/src/data/pokemon_graphics/front_pic_table.h @@ -1331,6 +1331,41 @@ const struct CompressedSpriteSheet gMonFrontPicTable[] = SPECIES_SPRITE(CALYREX_SHADOW_RIDER, gMonFrontPic_CalyrexShadowRider), SPECIES_SPRITE(ENAMORUS_THERIAN, gMonFrontPic_CircledQuestionMark), //gMonFrontPic_EnamorusTherian), + + // Gigantamax Forms + SPECIES_SPRITE(VENUSAUR_GMAX, gMonFrontPic_VenusaurGmax), + SPECIES_SPRITE(CHARIZARD_GMAX, gMonFrontPic_CharizardGmax), + SPECIES_SPRITE(BLASTOISE_GMAX, gMonFrontPic_BlastoiseGmax), + SPECIES_SPRITE(BUTTERFREE_GMAX, gMonFrontPic_ButterfreeGmax), + SPECIES_SPRITE(PIKACHU_GMAX, gMonFrontPic_PikachuGmax), + SPECIES_SPRITE(MEOWTH_GMAX, gMonFrontPic_MeowthGmax), + SPECIES_SPRITE(MACHAMP_GMAX, gMonFrontPic_MachampGmax), + SPECIES_SPRITE(GENGAR_GMAX, gMonFrontPic_GengarGmax), + SPECIES_SPRITE(KINGLER_GMAX, gMonFrontPic_KinglerGmax), + SPECIES_SPRITE(LAPRAS_GMAX, gMonFrontPic_LaprasGmax), + SPECIES_SPRITE(EEVEE_GMAX, gMonFrontPic_EeveeGmax), + SPECIES_SPRITE(SNORLAX_GMAX, gMonFrontPic_SnorlaxGmax), + SPECIES_SPRITE(GARBODOR_GMAX, gMonFrontPic_GarbodorGmax), + SPECIES_SPRITE(MELMETAL_GMAX, gMonFrontPic_MelmetalGmax), + SPECIES_SPRITE(RILLABOOM_GMAX, gMonFrontPic_RillaboomGmax), + SPECIES_SPRITE(CINDERACE_GMAX, gMonFrontPic_CinderaceGmax), + SPECIES_SPRITE(INTELEON_GMAX, gMonFrontPic_InteleonGmax), + SPECIES_SPRITE(CORVIKNIGHT_GMAX, gMonFrontPic_CorviknightGmax), + SPECIES_SPRITE(ORBEETLE_GMAX, gMonFrontPic_OrbeetleGmax), + SPECIES_SPRITE(DREDNAW_GMAX, gMonFrontPic_DrednawGmax), + SPECIES_SPRITE(COALOSSAL_GMAX, gMonFrontPic_CoalossalGmax), + SPECIES_SPRITE(FLAPPLE_GMAX, gMonFrontPic_FlappleGmax), + SPECIES_SPRITE(APPLETUN_GMAX, gMonFrontPic_AppletunGmax), + SPECIES_SPRITE(SANDACONDA_GMAX, gMonFrontPic_SandacondaGmax), + SPECIES_SPRITE(TOXTRICITY_GMAX, gMonFrontPic_ToxtricityGmax), + SPECIES_SPRITE(CENTISKORCH_GMAX, gMonFrontPic_CentiskorchGmax), + SPECIES_SPRITE(HATTERENE_GMAX, gMonFrontPic_HattereneGmax), + SPECIES_SPRITE(GRIMMSNARL_GMAX, gMonFrontPic_GrimmsnarlGmax), + SPECIES_SPRITE(ALCREMIE_GMAX, gMonFrontPic_AlcremieGmax), + SPECIES_SPRITE(COPPERAJAH_GMAX, gMonFrontPic_CopperajahGmax), + SPECIES_SPRITE(DURALUDON_GMAX, gMonFrontPic_DuraludonGmax), + SPECIES_SPRITE(URSHIFU_GMAX, gMonFrontPic_UrshifuGmax), + SPECIES_SPRITE(URSHIFU_RAPID_STRIKE_STYLE_GMAX, gMonFrontPic_UrshifuRapidStrikeGmax), #endif SPECIES_SPRITE(EGG, gMonFrontPic_Egg), }; diff --git a/src/data/pokemon_graphics/palette_table.h b/src/data/pokemon_graphics/palette_table.h index 8ef3b32319..dcf263b877 100644 --- a/src/data/pokemon_graphics/palette_table.h +++ b/src/data/pokemon_graphics/palette_table.h @@ -1331,6 +1331,41 @@ const struct CompressedSpritePalette gMonPaletteTable[] = SPECIES_PAL(CALYREX_ICE_RIDER, gMonPalette_CalyrexIceRider), SPECIES_PAL(CALYREX_SHADOW_RIDER, gMonPalette_CalyrexShadowRider), SPECIES_PAL(ENAMORUS_THERIAN, gMonPalette_CircledQuestionMark), // gMonPalette_EnamorusTherian), + + // Gigantamax Forms + SPECIES_PAL(VENUSAUR_GMAX, gMonPalette_VenusaurGmax), + SPECIES_PAL(CHARIZARD_GMAX, gMonPalette_CharizardGmax), + SPECIES_PAL(BLASTOISE_GMAX, gMonPalette_BlastoiseGmax), + SPECIES_PAL(BUTTERFREE_GMAX, gMonPalette_ButterfreeGmax), + SPECIES_PAL(PIKACHU_GMAX, gMonPalette_PikachuGmax), + SPECIES_PAL(MEOWTH_GMAX, gMonPalette_MeowthGmax), + SPECIES_PAL(MACHAMP_GMAX, gMonPalette_MachampGmax), + SPECIES_PAL(GENGAR_GMAX, gMonPalette_GengarGmax), + SPECIES_PAL(KINGLER_GMAX, gMonPalette_KinglerGmax), + SPECIES_PAL(LAPRAS_GMAX, gMonPalette_LaprasGmax), + SPECIES_PAL(EEVEE_GMAX, gMonPalette_EeveeGmax), + SPECIES_PAL(SNORLAX_GMAX, gMonPalette_SnorlaxGmax), + SPECIES_PAL(GARBODOR_GMAX, gMonPalette_GarbodorGmax), + SPECIES_PAL(MELMETAL_GMAX, gMonPalette_MelmetalGmax), + SPECIES_PAL(RILLABOOM_GMAX, gMonPalette_RillaboomGmax), + SPECIES_PAL(CINDERACE_GMAX, gMonPalette_CinderaceGmax), + SPECIES_PAL(INTELEON_GMAX, gMonPalette_InteleonGmax), + SPECIES_PAL(CORVIKNIGHT_GMAX, gMonPalette_CorviknightGmax), + SPECIES_PAL(ORBEETLE_GMAX, gMonPalette_OrbeetleGmax), + SPECIES_PAL(DREDNAW_GMAX, gMonPalette_DrednawGmax), + SPECIES_PAL(COALOSSAL_GMAX, gMonPalette_CoalossalGmax), + SPECIES_PAL(FLAPPLE_GMAX, gMonPalette_FlappleGmax), + SPECIES_PAL(APPLETUN_GMAX, gMonPalette_AppletunGmax), + SPECIES_PAL(SANDACONDA_GMAX, gMonPalette_SandacondaGmax), + SPECIES_PAL(TOXTRICITY_GMAX, gMonPalette_ToxtricityGmax), + SPECIES_PAL(CENTISKORCH_GMAX, gMonPalette_CentiskorchGmax), + SPECIES_PAL(HATTERENE_GMAX, gMonPalette_HattereneGmax), + SPECIES_PAL(GRIMMSNARL_GMAX, gMonPalette_GrimmsnarlGmax), + SPECIES_PAL(ALCREMIE_GMAX, gMonPalette_AlcremieGmax), + SPECIES_PAL(COPPERAJAH_GMAX, gMonPalette_CopperajahGmax), + SPECIES_PAL(DURALUDON_GMAX, gMonPalette_DuraludonGmax), + SPECIES_PAL(URSHIFU_GMAX, gMonPalette_UrshifuGmax), + SPECIES_PAL(URSHIFU_RAPID_STRIKE_STYLE_GMAX, gMonPalette_UrshifuRapidStrikeGmax), #endif SPECIES_PAL(EGG, gMonPalette_Egg), }; diff --git a/src/data/pokemon_graphics/shiny_palette_table.h b/src/data/pokemon_graphics/shiny_palette_table.h index 64a999c49e..334f29f927 100644 --- a/src/data/pokemon_graphics/shiny_palette_table.h +++ b/src/data/pokemon_graphics/shiny_palette_table.h @@ -1330,6 +1330,41 @@ const struct CompressedSpritePalette gMonShinyPaletteTable[] = SPECIES_SHINY_PAL(CALYREX_SHADOW_RIDER, gMonShinyPalette_CalyrexShadowRider), SPECIES_SHINY_PAL(ENAMORUS_THERIAN, gMonShinyPalette_CircledQuestionMark), //gMonShinyPalette_EnamorusTherian), + + // Gigantamax Forms + SPECIES_SHINY_PAL(VENUSAUR_GMAX, gMonShinyPalette_VenusaurGmax), + SPECIES_SHINY_PAL(CHARIZARD_GMAX, gMonShinyPalette_CharizardGmax), + SPECIES_SHINY_PAL(BLASTOISE_GMAX, gMonShinyPalette_BlastoiseGmax), + SPECIES_SHINY_PAL(BUTTERFREE_GMAX, gMonShinyPalette_ButterfreeGmax), + SPECIES_SHINY_PAL(PIKACHU_GMAX, gMonShinyPalette_PikachuGmax), + SPECIES_SHINY_PAL(MEOWTH_GMAX, gMonShinyPalette_MeowthGmax), + SPECIES_SHINY_PAL(MACHAMP_GMAX, gMonShinyPalette_MachampGmax), + SPECIES_SHINY_PAL(GENGAR_GMAX, gMonShinyPalette_GengarGmax), + SPECIES_SHINY_PAL(KINGLER_GMAX, gMonShinyPalette_KinglerGmax), + SPECIES_SHINY_PAL(LAPRAS_GMAX, gMonShinyPalette_LaprasGmax), + SPECIES_SHINY_PAL(EEVEE_GMAX, gMonShinyPalette_EeveeGmax), + SPECIES_SHINY_PAL(SNORLAX_GMAX, gMonShinyPalette_SnorlaxGmax), + SPECIES_SHINY_PAL(GARBODOR_GMAX, gMonShinyPalette_GarbodorGmax), + SPECIES_SHINY_PAL(MELMETAL_GMAX, gMonShinyPalette_MelmetalGmax), + SPECIES_SHINY_PAL(RILLABOOM_GMAX, gMonShinyPalette_RillaboomGmax), + SPECIES_SHINY_PAL(CINDERACE_GMAX, gMonShinyPalette_CinderaceGmax), + SPECIES_SHINY_PAL(INTELEON_GMAX, gMonShinyPalette_InteleonGmax), + SPECIES_SHINY_PAL(CORVIKNIGHT_GMAX, gMonShinyPalette_CorviknightGmax), + SPECIES_SHINY_PAL(ORBEETLE_GMAX, gMonShinyPalette_OrbeetleGmax), + SPECIES_SHINY_PAL(DREDNAW_GMAX, gMonShinyPalette_DrednawGmax), + SPECIES_SHINY_PAL(COALOSSAL_GMAX, gMonShinyPalette_CoalossalGmax), + SPECIES_SHINY_PAL(FLAPPLE_GMAX, gMonShinyPalette_FlappleGmax), + SPECIES_SHINY_PAL(APPLETUN_GMAX, gMonShinyPalette_AppletunGmax), + SPECIES_SHINY_PAL(SANDACONDA_GMAX, gMonShinyPalette_SandacondaGmax), + SPECIES_SHINY_PAL(TOXTRICITY_GMAX, gMonShinyPalette_ToxtricityGmax), + SPECIES_SHINY_PAL(CENTISKORCH_GMAX, gMonShinyPalette_CentiskorchGmax), + SPECIES_SHINY_PAL(HATTERENE_GMAX, gMonShinyPalette_HattereneGmax), + SPECIES_SHINY_PAL(GRIMMSNARL_GMAX, gMonShinyPalette_GrimmsnarlGmax), + SPECIES_SHINY_PAL(ALCREMIE_GMAX, gMonShinyPalette_AlcremieGmax), + SPECIES_SHINY_PAL(COPPERAJAH_GMAX, gMonShinyPalette_CopperajahGmax), + SPECIES_SHINY_PAL(DURALUDON_GMAX, gMonShinyPalette_DuraludonGmax), + SPECIES_SHINY_PAL(URSHIFU_GMAX, gMonShinyPalette_UrshifuGmax), + SPECIES_SHINY_PAL(URSHIFU_RAPID_STRIKE_STYLE_GMAX, gMonShinyPalette_UrshifuRapidStrikeGmax), #endif SPECIES_SHINY_PAL(EGG, gMonPalette_Egg), }; diff --git a/src/data/text/species_names.h b/src/data/text/species_names.h index ec452b31ba..7e6077b6f6 100644 --- a/src/data/text/species_names.h +++ b/src/data/text/species_names.h @@ -1336,5 +1336,39 @@ const u8 gSpeciesNames[][POKEMON_NAME_LENGTH + 1] = { // Calyrex [SPECIES_CALYREX_ICE_RIDER] = _("Calyrex"), [SPECIES_CALYREX_SHADOW_RIDER] = _("Calyrex"), + // Gigantamax Forms + [SPECIES_VENUSAUR_GMAX] = _("Venusaur"), + [SPECIES_CHARIZARD_GMAX] = _("Charizard"), + [SPECIES_BLASTOISE_GMAX] = _("Blastoise"), + [SPECIES_BUTTERFREE_GMAX] = _("Butterfree"), + [SPECIES_PIKACHU_GMAX] = _("Pikachu"), + [SPECIES_MEOWTH_GMAX] = _("Meowth"), + [SPECIES_MACHAMP_GMAX] = _("Machamp"), + [SPECIES_GENGAR_GMAX] = _("Gengar"), + [SPECIES_KINGLER_GMAX] = _("Kingler"), + [SPECIES_LAPRAS_GMAX] = _("Lapras"), + [SPECIES_EEVEE_GMAX] = _("Eevee"), + [SPECIES_SNORLAX_GMAX] = _("Snorlax"), + [SPECIES_GARBODOR_GMAX] = _("Garbodor"), + [SPECIES_MELMETAL_GMAX] = _("Melmetal"), + [SPECIES_RILLABOOM_GMAX] = _("Rillaboom"), + [SPECIES_CINDERACE_GMAX] = _("Cinderace"), + [SPECIES_INTELEON_GMAX] = _("Inteleon"), + [SPECIES_CORVIKNIGHT_GMAX] = _("Corviknigh"), + [SPECIES_ORBEETLE_GMAX] = _("Orbeetle"), + [SPECIES_DREDNAW_GMAX] = _("Drednaw"), + [SPECIES_COALOSSAL_GMAX] = _("Coalossal"), + [SPECIES_FLAPPLE_GMAX] = _("Flapple"), + [SPECIES_APPLETUN_GMAX] = _("Appletun"), + [SPECIES_SANDACONDA_GMAX] = _("Sandaconda"), + [SPECIES_TOXTRICITY_GMAX] = _("Toxtricity"), + [SPECIES_CENTISKORCH_GMAX] = _("Centiskorc"), + [SPECIES_HATTERENE_GMAX] = _("Hatterene"), + [SPECIES_GRIMMSNARL_GMAX] = _("Grimmsnarl"), + [SPECIES_ALCREMIE_GMAX] = _("Alcremie"), + [SPECIES_COPPERAJAH_GMAX] = _("Copperajah"), + [SPECIES_DURALUDON_GMAX] = _("Duraludon"), + [SPECIES_URSHIFU_GMAX] = _("Urshifu"), + [SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GMAX] = _("Urshifu"), #endif }; diff --git a/src/pokemon.c b/src/pokemon.c index c8164d7462..1ab50666a6 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -1671,6 +1671,40 @@ static const u16 sSpeciesToNationalPokedexNum[NUM_SPECIES - 1] = [SPECIES_CALYREX_ICE_RIDER - 1] = NATIONAL_DEX_CALYREX, [SPECIES_CALYREX_SHADOW_RIDER - 1] = NATIONAL_DEX_CALYREX, [SPECIES_ENAMORUS_THERIAN - 1] = NATIONAL_DEX_ENAMORUS, + // Gigantamax Forms + [SPECIES_VENUSAUR_GMAX - 1] = NATIONAL_DEX_VENUSAUR, + [SPECIES_CHARIZARD_GMAX - 1] = NATIONAL_DEX_CHARIZARD, + [SPECIES_BLASTOISE_GMAX - 1] = NATIONAL_DEX_BLASTOISE, + [SPECIES_BUTTERFREE_GMAX - 1] = NATIONAL_DEX_BUTTERFREE, + [SPECIES_PIKACHU_GMAX - 1] = NATIONAL_DEX_PIKACHU, + [SPECIES_MEOWTH_GMAX - 1] = NATIONAL_DEX_MEOWTH, + [SPECIES_MACHAMP_GMAX - 1] = NATIONAL_DEX_MACHAMP, + [SPECIES_GENGAR_GMAX - 1] = NATIONAL_DEX_GENGAR, + [SPECIES_KINGLER_GMAX - 1] = NATIONAL_DEX_KINGLER, + [SPECIES_LAPRAS_GMAX - 1] = NATIONAL_DEX_LAPRAS, + [SPECIES_EEVEE_GMAX - 1] = NATIONAL_DEX_EEVEE, + [SPECIES_SNORLAX_GMAX - 1] = NATIONAL_DEX_SNORLAX, + [SPECIES_GARBODOR_GMAX - 1] = NATIONAL_DEX_GARBODOR, + [SPECIES_MELMETAL_GMAX - 1] = NATIONAL_DEX_MELMETAL, + [SPECIES_RILLABOOM_GMAX - 1] = NATIONAL_DEX_RILLABOOM, + [SPECIES_CINDERACE_GMAX - 1] = NATIONAL_DEX_CINDERACE, + [SPECIES_INTELEON_GMAX - 1] = NATIONAL_DEX_INTELEON, + [SPECIES_CORVIKNIGHT_GMAX - 1] = NATIONAL_DEX_CORVIKNIGHT, + [SPECIES_ORBEETLE_GMAX - 1] = NATIONAL_DEX_ORBEETLE, + [SPECIES_DREDNAW_GMAX - 1] = NATIONAL_DEX_DREDNAW, + [SPECIES_COALOSSAL_GMAX - 1] = NATIONAL_DEX_COALOSSAL, + [SPECIES_FLAPPLE_GMAX - 1] = NATIONAL_DEX_FLAPPLE, + [SPECIES_APPLETUN_GMAX - 1] = NATIONAL_DEX_APPLETUN, + [SPECIES_SANDACONDA_GMAX - 1] = NATIONAL_DEX_SANDACONDA, + [SPECIES_TOXTRICITY_GMAX - 1] = NATIONAL_DEX_TOXTRICITY, + [SPECIES_CENTISKORCH_GMAX - 1] = NATIONAL_DEX_CENTISKORCH, + [SPECIES_HATTERENE_GMAX - 1] = NATIONAL_DEX_HATTERENE, + [SPECIES_GRIMMSNARL_GMAX - 1] = NATIONAL_DEX_GRIMMSNARL, + [SPECIES_ALCREMIE_GMAX - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_COPPERAJAH_GMAX - 1] = NATIONAL_DEX_COPPERAJAH, + [SPECIES_DURALUDON_GMAX - 1] = NATIONAL_DEX_DURALUDON, + [SPECIES_URSHIFU_GMAX - 1] = NATIONAL_DEX_URSHIFU, + [SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GMAX - 1] = NATIONAL_DEX_URSHIFU, #endif }; diff --git a/src/pokemon_icon.c b/src/pokemon_icon.c index c9dae53432..ef528fe317 100644 --- a/src/pokemon_icon.c +++ b/src/pokemon_icon.c @@ -1293,6 +1293,40 @@ const u8 *const gMonIconTable[] = [SPECIES_CALYREX_ICE_RIDER] = gMonIcon_CalyrexIceRider, [SPECIES_CALYREX_SHADOW_RIDER] = gMonIcon_CalyrexShadowRider, [SPECIES_ENAMORUS_THERIAN] = gMonIcon_EnamorusTherian, + // Gigantamax Forms + [SPECIES_VENUSAUR_GMAX] = gMonIcon_VenusaurGmax, + [SPECIES_CHARIZARD_GMAX] = gMonIcon_CharizardGmax, + [SPECIES_BLASTOISE_GMAX] = gMonIcon_BlastoiseGmax, + [SPECIES_BUTTERFREE_GMAX] = gMonIcon_ButterfreeGmax, + [SPECIES_PIKACHU_GMAX] = gMonIcon_PikachuGmax, + [SPECIES_MEOWTH_GMAX] = gMonIcon_MeowthGmax, + [SPECIES_MACHAMP_GMAX] = gMonIcon_MachampGmax, + [SPECIES_GENGAR_GMAX] = gMonIcon_GengarGmax, + [SPECIES_KINGLER_GMAX] = gMonIcon_KinglerGmax, + [SPECIES_LAPRAS_GMAX] = gMonIcon_LaprasGmax, + [SPECIES_EEVEE_GMAX] = gMonIcon_EeveeGmax, + [SPECIES_SNORLAX_GMAX] = gMonIcon_SnorlaxGmax, + [SPECIES_GARBODOR_GMAX] = gMonIcon_GarbodorGmax, + [SPECIES_MELMETAL_GMAX] = gMonIcon_MelmetalGmax, + [SPECIES_RILLABOOM_GMAX] = gMonIcon_RillaboomGmax, + [SPECIES_CINDERACE_GMAX] = gMonIcon_CinderaceGmax, + [SPECIES_INTELEON_GMAX] = gMonIcon_InteleonGmax, + [SPECIES_CORVIKNIGHT_GMAX] = gMonIcon_CorviknightGmax, + [SPECIES_ORBEETLE_GMAX] = gMonIcon_OrbeetleGmax, + [SPECIES_DREDNAW_GMAX] = gMonIcon_DrednawGmax, + [SPECIES_COALOSSAL_GMAX] = gMonIcon_CoalossalGmax, + [SPECIES_FLAPPLE_GMAX] = gMonIcon_FlappleGmax, + [SPECIES_APPLETUN_GMAX] = gMonIcon_AppletunGmax, + [SPECIES_SANDACONDA_GMAX] = gMonIcon_SandacondaGmax, + [SPECIES_TOXTRICITY_GMAX] = gMonIcon_ToxtricityGmax, + [SPECIES_CENTISKORCH_GMAX] = gMonIcon_CentiskorchGmax, + [SPECIES_HATTERENE_GMAX] = gMonIcon_HattereneGmax, + [SPECIES_GRIMMSNARL_GMAX] = gMonIcon_GrimmsnarlGmax, + [SPECIES_ALCREMIE_GMAX] = gMonIcon_AlcremieGmax, + [SPECIES_COPPERAJAH_GMAX] = gMonIcon_CopperajahGmax, + [SPECIES_DURALUDON_GMAX] = gMonIcon_DuraludonGmax, + [SPECIES_URSHIFU_GMAX] = gMonIcon_UrshifuGmax, + [SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GMAX] = gMonIcon_UrshifuRapidStrikeGmax, #endif [SPECIES_EGG] = gMonIcon_Egg, }; @@ -2537,6 +2571,39 @@ const u8 gMonIconPaletteIndices[] = [SPECIES_CALYREX_ICE_RIDER] = 0, [SPECIES_CALYREX_SHADOW_RIDER] = 0, [SPECIES_ENAMORUS_THERIAN] = 1, + [SPECIES_VENUSAUR_GMAX] = 0, + [SPECIES_CHARIZARD_GMAX] = 0, + [SPECIES_BLASTOISE_GMAX] = 0, + [SPECIES_BUTTERFREE_GMAX] = 0, + [SPECIES_PIKACHU_GMAX] = 2, + [SPECIES_MEOWTH_GMAX] = 1, + [SPECIES_MACHAMP_GMAX] = 0, + [SPECIES_GENGAR_GMAX] = 2, + [SPECIES_KINGLER_GMAX] = 0, + [SPECIES_LAPRAS_GMAX] = 2, + [SPECIES_EEVEE_GMAX] = 2, + [SPECIES_SNORLAX_GMAX] = 3, + [SPECIES_GARBODOR_GMAX] = 0, + [SPECIES_MELMETAL_GMAX] = 0, + [SPECIES_RILLABOOM_GMAX] = 1, + [SPECIES_CINDERACE_GMAX] = 0, + [SPECIES_INTELEON_GMAX] = 0, + [SPECIES_CORVIKNIGHT_GMAX] = 0, + [SPECIES_ORBEETLE_GMAX] = 0, + [SPECIES_DREDNAW_GMAX] = 0, + [SPECIES_COALOSSAL_GMAX] = 0, + [SPECIES_FLAPPLE_GMAX] = 1, + [SPECIES_APPLETUN_GMAX] = 1, + [SPECIES_SANDACONDA_GMAX] = 1, + [SPECIES_TOXTRICITY_GMAX] = 0, + [SPECIES_CENTISKORCH_GMAX] = 0, + [SPECIES_HATTERENE_GMAX] = 0, + [SPECIES_GRIMMSNARL_GMAX] = 0, + [SPECIES_ALCREMIE_GMAX] = 1, + [SPECIES_COPPERAJAH_GMAX] = 0, + [SPECIES_DURALUDON_GMAX] = 0, + [SPECIES_URSHIFU_GMAX] = 0, + [SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GMAX] = 0, #endif [SPECIES_EGG] = 1, }; From 2139e138a9969d646e25168628924bb13a22ff6a Mon Sep 17 00:00:00 2001 From: AgustinGDLV Date: Thu, 27 Oct 2022 19:44:06 -0700 Subject: [PATCH 004/162] removed duplicate sprites and changed folder format for gmax --- .../{gmax_alcremie => alcremie/gmax}/back.png | Bin .../gmax}/front.png | Bin .../{gmax_alcremie => alcremie/gmax}/icon.png | Bin .../gmax}/normal.pal | 0 .../gmax}/shiny.pal | 0 graphics/pokemon/alolan_diglett/back.png | Bin 398 -> 0 bytes graphics/pokemon/alolan_diglett/front.png | Bin 451 -> 0 bytes graphics/pokemon/alolan_diglett/icon.png | Bin 358 -> 0 bytes graphics/pokemon/alolan_diglett/normal.pal | 19 - graphics/pokemon/alolan_diglett/shiny.pal | 19 - graphics/pokemon/alolan_dugtrio/back.png | Bin 519 -> 0 bytes graphics/pokemon/alolan_dugtrio/front.png | Bin 776 -> 0 bytes graphics/pokemon/alolan_dugtrio/icon.png | Bin 476 -> 0 bytes graphics/pokemon/alolan_dugtrio/normal.pal | 19 - graphics/pokemon/alolan_dugtrio/shiny.pal | 19 - graphics/pokemon/alolan_exeggutor/back.png | Bin 848 -> 0 bytes graphics/pokemon/alolan_exeggutor/front.png | Bin 939 -> 0 bytes graphics/pokemon/alolan_exeggutor/icon.png | Bin 536 -> 0 bytes graphics/pokemon/alolan_exeggutor/normal.pal | 19 - graphics/pokemon/alolan_exeggutor/shiny.pal | 19 - graphics/pokemon/alolan_geodude/back.png | Bin 621 -> 0 bytes graphics/pokemon/alolan_geodude/front.png | Bin 551 -> 0 bytes graphics/pokemon/alolan_geodude/icon.png | Bin 410 -> 0 bytes graphics/pokemon/alolan_geodude/normal.pal | 19 - graphics/pokemon/alolan_geodude/shiny.pal | 19 - graphics/pokemon/alolan_golem/back.png | Bin 696 -> 0 bytes graphics/pokemon/alolan_golem/front.png | Bin 893 -> 0 bytes graphics/pokemon/alolan_golem/icon.png | Bin 465 -> 0 bytes graphics/pokemon/alolan_golem/normal.pal | 19 - graphics/pokemon/alolan_golem/shiny.pal | 19 - graphics/pokemon/alolan_graveler/back.png | Bin 751 -> 0 bytes graphics/pokemon/alolan_graveler/front.png | Bin 889 -> 0 bytes graphics/pokemon/alolan_graveler/icon.png | Bin 519 -> 0 bytes graphics/pokemon/alolan_graveler/normal.pal | 19 - graphics/pokemon/alolan_graveler/shiny.pal | 19 - graphics/pokemon/alolan_grimer/back.png | Bin 647 -> 0 bytes graphics/pokemon/alolan_grimer/front.png | Bin 686 -> 0 bytes graphics/pokemon/alolan_grimer/icon.png | Bin 486 -> 0 bytes graphics/pokemon/alolan_grimer/normal.pal | 19 - graphics/pokemon/alolan_grimer/shiny.pal | 19 - graphics/pokemon/alolan_marowak/back.png | Bin 777 -> 0 bytes graphics/pokemon/alolan_marowak/front.png | Bin 846 -> 0 bytes graphics/pokemon/alolan_marowak/icon.png | Bin 495 -> 0 bytes graphics/pokemon/alolan_marowak/normal.pal | 19 - graphics/pokemon/alolan_marowak/shiny.pal | 19 - graphics/pokemon/alolan_meowth/back.png | Bin 661 -> 0 bytes graphics/pokemon/alolan_meowth/front.png | Bin 660 -> 0 bytes graphics/pokemon/alolan_meowth/icon.png | Bin 426 -> 0 bytes graphics/pokemon/alolan_meowth/normal.pal | 19 - graphics/pokemon/alolan_meowth/shiny.pal | 19 - graphics/pokemon/alolan_muk/back.png | Bin 883 -> 0 bytes graphics/pokemon/alolan_muk/front.png | Bin 917 -> 0 bytes graphics/pokemon/alolan_muk/icon.png | Bin 626 -> 0 bytes graphics/pokemon/alolan_muk/normal.pal | 19 - graphics/pokemon/alolan_muk/shiny.pal | 19 - graphics/pokemon/alolan_ninetales/back.png | Bin 806 -> 0 bytes graphics/pokemon/alolan_ninetales/front.png | Bin 1012 -> 0 bytes graphics/pokemon/alolan_ninetales/icon.png | Bin 601 -> 0 bytes graphics/pokemon/alolan_ninetales/normal.pal | 19 - graphics/pokemon/alolan_ninetales/shiny.pal | 19 - graphics/pokemon/alolan_persian/back.png | Bin 679 -> 0 bytes graphics/pokemon/alolan_persian/front.png | Bin 715 -> 0 bytes graphics/pokemon/alolan_persian/icon.png | Bin 456 -> 0 bytes graphics/pokemon/alolan_persian/normal.pal | 19 - graphics/pokemon/alolan_persian/shiny.pal | 19 - graphics/pokemon/alolan_raichu/back.png | Bin 674 -> 0 bytes graphics/pokemon/alolan_raichu/front.png | Bin 890 -> 0 bytes graphics/pokemon/alolan_raichu/icon.png | Bin 577 -> 0 bytes graphics/pokemon/alolan_raichu/normal.pal | 19 - graphics/pokemon/alolan_raichu/shiny.pal | 19 - graphics/pokemon/alolan_raticate/back.png | Bin 685 -> 0 bytes graphics/pokemon/alolan_raticate/front.png | Bin 821 -> 0 bytes graphics/pokemon/alolan_raticate/icon.png | Bin 506 -> 0 bytes graphics/pokemon/alolan_raticate/normal.pal | 19 - graphics/pokemon/alolan_raticate/shiny.pal | 19 - graphics/pokemon/alolan_rattata/back.png | Bin 667 -> 0 bytes graphics/pokemon/alolan_rattata/front.png | Bin 575 -> 0 bytes graphics/pokemon/alolan_rattata/icon.png | Bin 448 -> 0 bytes graphics/pokemon/alolan_rattata/normal.pal | 19 - graphics/pokemon/alolan_rattata/shiny.pal | 19 - graphics/pokemon/alolan_sandshrew/back.png | Bin 649 -> 0 bytes graphics/pokemon/alolan_sandshrew/front.png | Bin 599 -> 0 bytes graphics/pokemon/alolan_sandshrew/icon.png | Bin 425 -> 0 bytes graphics/pokemon/alolan_sandshrew/normal.pal | 19 - graphics/pokemon/alolan_sandshrew/shiny.pal | 19 - graphics/pokemon/alolan_sandslash/back.png | Bin 940 -> 0 bytes graphics/pokemon/alolan_sandslash/front.png | Bin 974 -> 0 bytes graphics/pokemon/alolan_sandslash/icon.png | Bin 524 -> 0 bytes graphics/pokemon/alolan_sandslash/normal.pal | 19 - graphics/pokemon/alolan_sandslash/shiny.pal | 19 - graphics/pokemon/alolan_vulpix/back.png | Bin 646 -> 0 bytes graphics/pokemon/alolan_vulpix/front.png | Bin 673 -> 0 bytes graphics/pokemon/alolan_vulpix/icon.png | Bin 487 -> 0 bytes graphics/pokemon/alolan_vulpix/normal.pal | 19 - graphics/pokemon/alolan_vulpix/shiny.pal | 19 - .../{gmax_appletun => appletun/gmax}/back.png | Bin .../gmax}/front.png | Bin .../{gmax_appletun => appletun/gmax}/icon.png | Bin .../gmax}/normal.pal | 0 .../gmax}/shiny.pal | 0 .../gmax}/back.png | Bin .../gmax}/front.png | Bin .../gmax}/icon.png | Bin .../gmax}/normal.pal | 0 .../gmax}/shiny.pal | 0 .../gmax}/back.png | Bin .../gmax}/front.png | Bin .../gmax}/icon.png | Bin .../gmax}/normal.pal | 0 .../gmax}/shiny.pal | 0 graphics/pokemon/castform/anim_front.png | Bin 382 -> 0 bytes graphics/pokemon/castform/back.png | Bin 373 -> 0 bytes graphics/pokemon/castform/front.png | Bin 382 -> 0 bytes graphics/pokemon/castform/normal.pal | 19 - graphics/pokemon/castform/shiny.pal | 19 - .../gmax}/back.png | Bin .../gmax}/front.png | Bin .../gmax}/icon.png | Bin .../gmax}/normal.pal | 0 .../gmax}/shiny.pal | 0 .../gmax}/back.png | Bin .../gmax}/front.png | Bin .../gmax}/icon.png | Bin .../gmax}/normal.pal | 0 .../gmax}/shiny.pal | 0 graphics/pokemon/cherrim/anim_front.png | Bin 862 -> 0 bytes graphics/pokemon/cherrim/back.png | Bin 600 -> 0 bytes graphics/pokemon/cherrim/front.png | Bin 544 -> 0 bytes graphics/pokemon/cherrim/normal.pal | 19 - graphics/pokemon/cherrim/shiny.pal | 19 - .../gmax}/back.png | Bin .../gmax}/front.png | Bin .../gmax}/icon.png | Bin .../gmax}/normal.pal | 0 .../gmax}/shiny.pal | 0 .../gmax}/back.png | Bin .../gmax}/front.png | Bin .../gmax}/icon.png | Bin .../gmax}/normal.pal | 0 .../gmax}/shiny.pal | 0 .../gmax}/back.png | Bin .../gmax}/front.png | Bin .../gmax}/icon.png | Bin .../gmax}/normal.pal | 0 .../gmax}/shiny.pal | 0 .../gmax}/back.png | Bin .../gmax}/front.png | Bin .../gmax}/icon.png | Bin .../gmax}/normal.pal | 0 .../gmax}/shiny.pal | 0 .../{gmax_drednaw => drednaw/gmax}/back.png | Bin .../{gmax_drednaw => drednaw/gmax}/front.png | Bin .../{gmax_drednaw => drednaw/gmax}/icon.png | Bin .../{gmax_drednaw => drednaw/gmax}/normal.pal | 0 .../{gmax_drednaw => drednaw/gmax}/shiny.pal | 0 .../gmax}/back.png | Bin .../gmax}/front.png | Bin .../gmax}/icon.png | Bin .../gmax}/normal.pal | 0 .../gmax}/shiny.pal | 0 .../{gmax_eevee => eevee/gmax}/back.png | Bin .../{gmax_eevee => eevee/gmax}/front.png | Bin .../{gmax_eevee => eevee/gmax}/icon.png | Bin .../{gmax_eevee => eevee/gmax}/normal.pal | 0 .../{gmax_eevee => eevee/gmax}/shiny.pal | 0 .../{gmax_flapple => flapple/gmax}/back.png | Bin .../{gmax_flapple => flapple/gmax}/front.png | Bin .../{gmax_flapple => flapple/gmax}/icon.png | Bin .../{gmax_flapple => flapple/gmax}/normal.pal | 0 .../{gmax_flapple => flapple/gmax}/shiny.pal | 0 .../{gmax_garbodor => garbodor/gmax}/back.png | Bin .../gmax}/front.png | Bin .../{gmax_garbodor => garbodor/gmax}/icon.png | Bin .../gmax}/normal.pal | 0 .../gmax}/shiny.pal | 0 .../{gmax_gengar => gengar/gmax}/back.png | Bin .../{gmax_gengar => gengar/gmax}/front.png | Bin .../{gmax_gengar => gengar/gmax}/icon.png | Bin .../{gmax_gengar => gengar/gmax}/normal.pal | 0 .../{gmax_gengar => gengar/gmax}/shiny.pal | 0 .../gmax}/back.png | Bin .../gmax}/front.png | Bin .../gmax}/icon.png | Bin .../gmax}/normal.pal | 0 .../gmax}/shiny.pal | 0 .../gmax}/back.png | Bin .../gmax}/front.png | Bin .../gmax}/icon.png | Bin .../gmax}/normal.pal | 0 .../gmax}/shiny.pal | 0 .../{gmax_inteleon => inteleon/gmax}/back.png | Bin .../gmax}/front.png | Bin .../{gmax_inteleon => inteleon/gmax}/icon.png | Bin .../gmax}/normal.pal | 0 .../gmax}/shiny.pal | 0 .../{gmax_kingler => kingler/gmax}/back.png | Bin .../{gmax_kingler => kingler/gmax}/front.png | Bin .../{gmax_kingler => kingler/gmax}/icon.png | Bin .../{gmax_kingler => kingler/gmax}/normal.pal | 0 .../{gmax_kingler => kingler/gmax}/shiny.pal | 0 .../{gmax_lapras => lapras/gmax}/back.png | Bin .../{gmax_lapras => lapras/gmax}/front.png | Bin .../{gmax_lapras => lapras/gmax}/icon.png | Bin .../{gmax_lapras => lapras/gmax}/normal.pal | 0 .../{gmax_lapras => lapras/gmax}/shiny.pal | 0 .../{gmax_machamp => machamp/gmax}/back.png | Bin .../{gmax_machamp => machamp/gmax}/front.png | Bin .../{gmax_machamp => machamp/gmax}/icon.png | Bin .../{gmax_machamp => machamp/gmax}/normal.pal | 0 .../{gmax_machamp => machamp/gmax}/shiny.pal | 0 .../{gmax_melmetal => melmetal/gmax}/back.png | Bin .../gmax}/front.png | Bin .../{gmax_melmetal => melmetal/gmax}/icon.png | Bin .../gmax}/normal.pal | 0 .../gmax}/shiny.pal | 0 .../{gmax_meowth => meowth/gmax}/back.png | Bin .../{gmax_meowth => meowth/gmax}/front.png | Bin .../{gmax_meowth => meowth/gmax}/icon.png | Bin .../{gmax_meowth => meowth/gmax}/normal.pal | 0 .../{gmax_meowth => meowth/gmax}/shiny.pal | 0 .../{gmax_orbeetle => orbeetle/gmax}/back.png | Bin .../gmax}/front.png | Bin .../{gmax_orbeetle => orbeetle/gmax}/icon.png | Bin .../gmax}/normal.pal | 0 .../gmax}/shiny.pal | 0 .../{gmax_pikachu => pikachu/gmax}/back.png | Bin .../{gmax_pikachu => pikachu/gmax}/front.png | Bin .../{gmax_pikachu => pikachu/gmax}/icon.png | Bin .../{gmax_pikachu => pikachu/gmax}/normal.pal | 0 .../{gmax_pikachu => pikachu/gmax}/shiny.pal | 0 .../gmax}/back.png | Bin .../gmax}/front.png | Bin .../gmax}/icon.png | Bin .../gmax}/normal.pal | 0 .../gmax}/shiny.pal | 0 .../gmax}/back.png | Bin .../gmax}/front.png | Bin .../gmax}/icon.png | Bin .../gmax}/normal.pal | 0 .../gmax}/shiny.pal | 0 .../{gmax_snorlax => snorlax/gmax}/back.png | Bin .../{gmax_snorlax => snorlax/gmax}/front.png | Bin .../{gmax_snorlax => snorlax/gmax}/icon.png | Bin .../{gmax_snorlax => snorlax/gmax}/normal.pal | 0 .../{gmax_snorlax => snorlax/gmax}/shiny.pal | 0 .../gmax}/back.png | Bin .../gmax}/front.png | Bin .../gmax}/icon.png | Bin .../gmax}/normal.pal | 0 .../gmax}/shiny.pal | 0 .../{gmax_urshifu => urshifu/gmax}/back.png | Bin .../{gmax_urshifu => urshifu/gmax}/front.png | Bin .../{gmax_urshifu => urshifu/gmax}/icon.png | Bin .../{gmax_urshifu => urshifu/gmax}/normal.pal | 0 .../{gmax_urshifu => urshifu/gmax}/shiny.pal | 0 .../gmax_rapid_strike_style}/back.png | Bin .../gmax_rapid_strike_style}/front.png | Bin .../gmax_rapid_strike_style}/icon.png | Bin .../gmax_rapid_strike_style}/normal.pal | 0 .../gmax_rapid_strike_style}/shiny.pal | 0 .../{gmax_venusaur => venusaur/gmax}/back.png | Bin .../gmax}/front.png | Bin .../{gmax_venusaur => venusaur/gmax}/icon.png | Bin .../gmax}/normal.pal | 0 .../gmax}/shiny.pal | 0 src/data/graphics/pokemon.h | 330 +++++++++--------- 266 files changed, 165 insertions(+), 925 deletions(-) rename graphics/pokemon/{gmax_alcremie => alcremie/gmax}/back.png (100%) rename graphics/pokemon/{gmax_alcremie => alcremie/gmax}/front.png (100%) rename graphics/pokemon/{gmax_alcremie => alcremie/gmax}/icon.png (100%) rename graphics/pokemon/{gmax_alcremie => alcremie/gmax}/normal.pal (100%) rename graphics/pokemon/{gmax_alcremie => alcremie/gmax}/shiny.pal (100%) delete mode 100644 graphics/pokemon/alolan_diglett/back.png delete mode 100644 graphics/pokemon/alolan_diglett/front.png delete mode 100644 graphics/pokemon/alolan_diglett/icon.png delete mode 100644 graphics/pokemon/alolan_diglett/normal.pal delete mode 100644 graphics/pokemon/alolan_diglett/shiny.pal delete mode 100644 graphics/pokemon/alolan_dugtrio/back.png delete mode 100644 graphics/pokemon/alolan_dugtrio/front.png delete mode 100644 graphics/pokemon/alolan_dugtrio/icon.png delete mode 100644 graphics/pokemon/alolan_dugtrio/normal.pal delete mode 100644 graphics/pokemon/alolan_dugtrio/shiny.pal delete mode 100644 graphics/pokemon/alolan_exeggutor/back.png delete mode 100644 graphics/pokemon/alolan_exeggutor/front.png delete mode 100644 graphics/pokemon/alolan_exeggutor/icon.png delete mode 100644 graphics/pokemon/alolan_exeggutor/normal.pal delete mode 100644 graphics/pokemon/alolan_exeggutor/shiny.pal delete mode 100644 graphics/pokemon/alolan_geodude/back.png delete mode 100644 graphics/pokemon/alolan_geodude/front.png delete mode 100644 graphics/pokemon/alolan_geodude/icon.png delete mode 100644 graphics/pokemon/alolan_geodude/normal.pal delete mode 100644 graphics/pokemon/alolan_geodude/shiny.pal delete mode 100644 graphics/pokemon/alolan_golem/back.png delete mode 100644 graphics/pokemon/alolan_golem/front.png delete mode 100644 graphics/pokemon/alolan_golem/icon.png delete mode 100644 graphics/pokemon/alolan_golem/normal.pal delete mode 100644 graphics/pokemon/alolan_golem/shiny.pal delete mode 100644 graphics/pokemon/alolan_graveler/back.png delete mode 100644 graphics/pokemon/alolan_graveler/front.png delete mode 100644 graphics/pokemon/alolan_graveler/icon.png delete mode 100644 graphics/pokemon/alolan_graveler/normal.pal delete mode 100644 graphics/pokemon/alolan_graveler/shiny.pal delete mode 100644 graphics/pokemon/alolan_grimer/back.png delete mode 100644 graphics/pokemon/alolan_grimer/front.png delete mode 100644 graphics/pokemon/alolan_grimer/icon.png delete mode 100644 graphics/pokemon/alolan_grimer/normal.pal delete mode 100644 graphics/pokemon/alolan_grimer/shiny.pal delete mode 100644 graphics/pokemon/alolan_marowak/back.png delete mode 100644 graphics/pokemon/alolan_marowak/front.png delete mode 100644 graphics/pokemon/alolan_marowak/icon.png delete mode 100644 graphics/pokemon/alolan_marowak/normal.pal delete mode 100644 graphics/pokemon/alolan_marowak/shiny.pal delete mode 100644 graphics/pokemon/alolan_meowth/back.png delete mode 100644 graphics/pokemon/alolan_meowth/front.png delete mode 100644 graphics/pokemon/alolan_meowth/icon.png delete mode 100644 graphics/pokemon/alolan_meowth/normal.pal delete mode 100644 graphics/pokemon/alolan_meowth/shiny.pal delete mode 100644 graphics/pokemon/alolan_muk/back.png delete mode 100644 graphics/pokemon/alolan_muk/front.png delete mode 100644 graphics/pokemon/alolan_muk/icon.png delete mode 100644 graphics/pokemon/alolan_muk/normal.pal delete mode 100644 graphics/pokemon/alolan_muk/shiny.pal delete mode 100644 graphics/pokemon/alolan_ninetales/back.png delete mode 100644 graphics/pokemon/alolan_ninetales/front.png delete mode 100644 graphics/pokemon/alolan_ninetales/icon.png delete mode 100644 graphics/pokemon/alolan_ninetales/normal.pal delete mode 100644 graphics/pokemon/alolan_ninetales/shiny.pal delete mode 100644 graphics/pokemon/alolan_persian/back.png delete mode 100644 graphics/pokemon/alolan_persian/front.png delete mode 100644 graphics/pokemon/alolan_persian/icon.png delete mode 100644 graphics/pokemon/alolan_persian/normal.pal delete mode 100644 graphics/pokemon/alolan_persian/shiny.pal delete mode 100644 graphics/pokemon/alolan_raichu/back.png delete mode 100644 graphics/pokemon/alolan_raichu/front.png delete mode 100644 graphics/pokemon/alolan_raichu/icon.png delete mode 100644 graphics/pokemon/alolan_raichu/normal.pal delete mode 100644 graphics/pokemon/alolan_raichu/shiny.pal delete mode 100644 graphics/pokemon/alolan_raticate/back.png delete mode 100644 graphics/pokemon/alolan_raticate/front.png delete mode 100644 graphics/pokemon/alolan_raticate/icon.png delete mode 100644 graphics/pokemon/alolan_raticate/normal.pal delete mode 100644 graphics/pokemon/alolan_raticate/shiny.pal delete mode 100644 graphics/pokemon/alolan_rattata/back.png delete mode 100644 graphics/pokemon/alolan_rattata/front.png delete mode 100644 graphics/pokemon/alolan_rattata/icon.png delete mode 100644 graphics/pokemon/alolan_rattata/normal.pal delete mode 100644 graphics/pokemon/alolan_rattata/shiny.pal delete mode 100644 graphics/pokemon/alolan_sandshrew/back.png delete mode 100644 graphics/pokemon/alolan_sandshrew/front.png delete mode 100644 graphics/pokemon/alolan_sandshrew/icon.png delete mode 100644 graphics/pokemon/alolan_sandshrew/normal.pal delete mode 100644 graphics/pokemon/alolan_sandshrew/shiny.pal delete mode 100644 graphics/pokemon/alolan_sandslash/back.png delete mode 100644 graphics/pokemon/alolan_sandslash/front.png delete mode 100644 graphics/pokemon/alolan_sandslash/icon.png delete mode 100644 graphics/pokemon/alolan_sandslash/normal.pal delete mode 100644 graphics/pokemon/alolan_sandslash/shiny.pal delete mode 100644 graphics/pokemon/alolan_vulpix/back.png delete mode 100644 graphics/pokemon/alolan_vulpix/front.png delete mode 100644 graphics/pokemon/alolan_vulpix/icon.png delete mode 100644 graphics/pokemon/alolan_vulpix/normal.pal delete mode 100644 graphics/pokemon/alolan_vulpix/shiny.pal rename graphics/pokemon/{gmax_appletun => appletun/gmax}/back.png (100%) rename graphics/pokemon/{gmax_appletun => appletun/gmax}/front.png (100%) rename graphics/pokemon/{gmax_appletun => appletun/gmax}/icon.png (100%) rename graphics/pokemon/{gmax_appletun => appletun/gmax}/normal.pal (100%) rename graphics/pokemon/{gmax_appletun => appletun/gmax}/shiny.pal (100%) rename graphics/pokemon/{gmax_blastoise => blastoise/gmax}/back.png (100%) rename graphics/pokemon/{gmax_blastoise => blastoise/gmax}/front.png (100%) rename graphics/pokemon/{gmax_blastoise => blastoise/gmax}/icon.png (100%) rename graphics/pokemon/{gmax_blastoise => blastoise/gmax}/normal.pal (100%) rename graphics/pokemon/{gmax_blastoise => blastoise/gmax}/shiny.pal (100%) rename graphics/pokemon/{gmax_butterfree => butterfree/gmax}/back.png (100%) rename graphics/pokemon/{gmax_butterfree => butterfree/gmax}/front.png (100%) rename graphics/pokemon/{gmax_butterfree => butterfree/gmax}/icon.png (100%) rename graphics/pokemon/{gmax_butterfree => butterfree/gmax}/normal.pal (100%) rename graphics/pokemon/{gmax_butterfree => butterfree/gmax}/shiny.pal (100%) delete mode 100644 graphics/pokemon/castform/anim_front.png delete mode 100644 graphics/pokemon/castform/back.png delete mode 100644 graphics/pokemon/castform/front.png delete mode 100644 graphics/pokemon/castform/normal.pal delete mode 100644 graphics/pokemon/castform/shiny.pal rename graphics/pokemon/{gmax_centiskorch => centiskorch/gmax}/back.png (100%) rename graphics/pokemon/{gmax_centiskorch => centiskorch/gmax}/front.png (100%) rename graphics/pokemon/{gmax_centiskorch => centiskorch/gmax}/icon.png (100%) rename graphics/pokemon/{gmax_centiskorch => centiskorch/gmax}/normal.pal (100%) rename graphics/pokemon/{gmax_centiskorch => centiskorch/gmax}/shiny.pal (100%) rename graphics/pokemon/{gmax_charizard => charizard/gmax}/back.png (100%) rename graphics/pokemon/{gmax_charizard => charizard/gmax}/front.png (100%) rename graphics/pokemon/{gmax_charizard => charizard/gmax}/icon.png (100%) rename graphics/pokemon/{gmax_charizard => charizard/gmax}/normal.pal (100%) rename graphics/pokemon/{gmax_charizard => charizard/gmax}/shiny.pal (100%) delete mode 100644 graphics/pokemon/cherrim/anim_front.png delete mode 100644 graphics/pokemon/cherrim/back.png delete mode 100644 graphics/pokemon/cherrim/front.png delete mode 100644 graphics/pokemon/cherrim/normal.pal delete mode 100644 graphics/pokemon/cherrim/shiny.pal rename graphics/pokemon/{gmax_cinderace => cinderace/gmax}/back.png (100%) rename graphics/pokemon/{gmax_cinderace => cinderace/gmax}/front.png (100%) rename graphics/pokemon/{gmax_cinderace => cinderace/gmax}/icon.png (100%) rename graphics/pokemon/{gmax_cinderace => cinderace/gmax}/normal.pal (100%) rename graphics/pokemon/{gmax_cinderace => cinderace/gmax}/shiny.pal (100%) rename graphics/pokemon/{gmax_coalossal => coalossal/gmax}/back.png (100%) rename graphics/pokemon/{gmax_coalossal => coalossal/gmax}/front.png (100%) rename graphics/pokemon/{gmax_coalossal => coalossal/gmax}/icon.png (100%) rename graphics/pokemon/{gmax_coalossal => coalossal/gmax}/normal.pal (100%) rename graphics/pokemon/{gmax_coalossal => coalossal/gmax}/shiny.pal (100%) rename graphics/pokemon/{gmax_copperajah => copperajah/gmax}/back.png (100%) rename graphics/pokemon/{gmax_copperajah => copperajah/gmax}/front.png (100%) rename graphics/pokemon/{gmax_copperajah => copperajah/gmax}/icon.png (100%) rename graphics/pokemon/{gmax_copperajah => copperajah/gmax}/normal.pal (100%) rename graphics/pokemon/{gmax_copperajah => copperajah/gmax}/shiny.pal (100%) rename graphics/pokemon/{gmax_corviknight => corviknight/gmax}/back.png (100%) rename graphics/pokemon/{gmax_corviknight => corviknight/gmax}/front.png (100%) rename graphics/pokemon/{gmax_corviknight => corviknight/gmax}/icon.png (100%) rename graphics/pokemon/{gmax_corviknight => corviknight/gmax}/normal.pal (100%) rename graphics/pokemon/{gmax_corviknight => corviknight/gmax}/shiny.pal (100%) rename graphics/pokemon/{gmax_drednaw => drednaw/gmax}/back.png (100%) rename graphics/pokemon/{gmax_drednaw => drednaw/gmax}/front.png (100%) rename graphics/pokemon/{gmax_drednaw => drednaw/gmax}/icon.png (100%) rename graphics/pokemon/{gmax_drednaw => drednaw/gmax}/normal.pal (100%) rename graphics/pokemon/{gmax_drednaw => drednaw/gmax}/shiny.pal (100%) rename graphics/pokemon/{gmax_duraludon => duraludon/gmax}/back.png (100%) rename graphics/pokemon/{gmax_duraludon => duraludon/gmax}/front.png (100%) rename graphics/pokemon/{gmax_duraludon => duraludon/gmax}/icon.png (100%) rename graphics/pokemon/{gmax_duraludon => duraludon/gmax}/normal.pal (100%) rename graphics/pokemon/{gmax_duraludon => duraludon/gmax}/shiny.pal (100%) rename graphics/pokemon/{gmax_eevee => eevee/gmax}/back.png (100%) rename graphics/pokemon/{gmax_eevee => eevee/gmax}/front.png (100%) rename graphics/pokemon/{gmax_eevee => eevee/gmax}/icon.png (100%) rename graphics/pokemon/{gmax_eevee => eevee/gmax}/normal.pal (100%) rename graphics/pokemon/{gmax_eevee => eevee/gmax}/shiny.pal (100%) rename graphics/pokemon/{gmax_flapple => flapple/gmax}/back.png (100%) rename graphics/pokemon/{gmax_flapple => flapple/gmax}/front.png (100%) rename graphics/pokemon/{gmax_flapple => flapple/gmax}/icon.png (100%) rename graphics/pokemon/{gmax_flapple => flapple/gmax}/normal.pal (100%) rename graphics/pokemon/{gmax_flapple => flapple/gmax}/shiny.pal (100%) rename graphics/pokemon/{gmax_garbodor => garbodor/gmax}/back.png (100%) rename graphics/pokemon/{gmax_garbodor => garbodor/gmax}/front.png (100%) rename graphics/pokemon/{gmax_garbodor => garbodor/gmax}/icon.png (100%) rename graphics/pokemon/{gmax_garbodor => garbodor/gmax}/normal.pal (100%) rename graphics/pokemon/{gmax_garbodor => garbodor/gmax}/shiny.pal (100%) rename graphics/pokemon/{gmax_gengar => gengar/gmax}/back.png (100%) rename graphics/pokemon/{gmax_gengar => gengar/gmax}/front.png (100%) rename graphics/pokemon/{gmax_gengar => gengar/gmax}/icon.png (100%) rename graphics/pokemon/{gmax_gengar => gengar/gmax}/normal.pal (100%) rename graphics/pokemon/{gmax_gengar => gengar/gmax}/shiny.pal (100%) rename graphics/pokemon/{gmax_grimmsnarl => grimmsnarl/gmax}/back.png (100%) rename graphics/pokemon/{gmax_grimmsnarl => grimmsnarl/gmax}/front.png (100%) rename graphics/pokemon/{gmax_grimmsnarl => grimmsnarl/gmax}/icon.png (100%) rename graphics/pokemon/{gmax_grimmsnarl => grimmsnarl/gmax}/normal.pal (100%) rename graphics/pokemon/{gmax_grimmsnarl => grimmsnarl/gmax}/shiny.pal (100%) rename graphics/pokemon/{gmax_hatterene => hatterene/gmax}/back.png (100%) rename graphics/pokemon/{gmax_hatterene => hatterene/gmax}/front.png (100%) rename graphics/pokemon/{gmax_hatterene => hatterene/gmax}/icon.png (100%) rename graphics/pokemon/{gmax_hatterene => hatterene/gmax}/normal.pal (100%) rename graphics/pokemon/{gmax_hatterene => hatterene/gmax}/shiny.pal (100%) rename graphics/pokemon/{gmax_inteleon => inteleon/gmax}/back.png (100%) rename graphics/pokemon/{gmax_inteleon => inteleon/gmax}/front.png (100%) rename graphics/pokemon/{gmax_inteleon => inteleon/gmax}/icon.png (100%) rename graphics/pokemon/{gmax_inteleon => inteleon/gmax}/normal.pal (100%) rename graphics/pokemon/{gmax_inteleon => inteleon/gmax}/shiny.pal (100%) rename graphics/pokemon/{gmax_kingler => kingler/gmax}/back.png (100%) rename graphics/pokemon/{gmax_kingler => kingler/gmax}/front.png (100%) rename graphics/pokemon/{gmax_kingler => kingler/gmax}/icon.png (100%) rename graphics/pokemon/{gmax_kingler => kingler/gmax}/normal.pal (100%) rename graphics/pokemon/{gmax_kingler => kingler/gmax}/shiny.pal (100%) rename graphics/pokemon/{gmax_lapras => lapras/gmax}/back.png (100%) rename graphics/pokemon/{gmax_lapras => lapras/gmax}/front.png (100%) rename graphics/pokemon/{gmax_lapras => lapras/gmax}/icon.png (100%) rename graphics/pokemon/{gmax_lapras => lapras/gmax}/normal.pal (100%) rename graphics/pokemon/{gmax_lapras => lapras/gmax}/shiny.pal (100%) rename graphics/pokemon/{gmax_machamp => machamp/gmax}/back.png (100%) rename graphics/pokemon/{gmax_machamp => machamp/gmax}/front.png (100%) rename graphics/pokemon/{gmax_machamp => machamp/gmax}/icon.png (100%) rename graphics/pokemon/{gmax_machamp => machamp/gmax}/normal.pal (100%) rename graphics/pokemon/{gmax_machamp => machamp/gmax}/shiny.pal (100%) rename graphics/pokemon/{gmax_melmetal => melmetal/gmax}/back.png (100%) rename graphics/pokemon/{gmax_melmetal => melmetal/gmax}/front.png (100%) rename graphics/pokemon/{gmax_melmetal => melmetal/gmax}/icon.png (100%) rename graphics/pokemon/{gmax_melmetal => melmetal/gmax}/normal.pal (100%) rename graphics/pokemon/{gmax_melmetal => melmetal/gmax}/shiny.pal (100%) rename graphics/pokemon/{gmax_meowth => meowth/gmax}/back.png (100%) rename graphics/pokemon/{gmax_meowth => meowth/gmax}/front.png (100%) rename graphics/pokemon/{gmax_meowth => meowth/gmax}/icon.png (100%) rename graphics/pokemon/{gmax_meowth => meowth/gmax}/normal.pal (100%) rename graphics/pokemon/{gmax_meowth => meowth/gmax}/shiny.pal (100%) rename graphics/pokemon/{gmax_orbeetle => orbeetle/gmax}/back.png (100%) rename graphics/pokemon/{gmax_orbeetle => orbeetle/gmax}/front.png (100%) rename graphics/pokemon/{gmax_orbeetle => orbeetle/gmax}/icon.png (100%) rename graphics/pokemon/{gmax_orbeetle => orbeetle/gmax}/normal.pal (100%) rename graphics/pokemon/{gmax_orbeetle => orbeetle/gmax}/shiny.pal (100%) rename graphics/pokemon/{gmax_pikachu => pikachu/gmax}/back.png (100%) rename graphics/pokemon/{gmax_pikachu => pikachu/gmax}/front.png (100%) rename graphics/pokemon/{gmax_pikachu => pikachu/gmax}/icon.png (100%) rename graphics/pokemon/{gmax_pikachu => pikachu/gmax}/normal.pal (100%) rename graphics/pokemon/{gmax_pikachu => pikachu/gmax}/shiny.pal (100%) rename graphics/pokemon/{gmax_rillaboom => rillaboom/gmax}/back.png (100%) rename graphics/pokemon/{gmax_rillaboom => rillaboom/gmax}/front.png (100%) rename graphics/pokemon/{gmax_rillaboom => rillaboom/gmax}/icon.png (100%) rename graphics/pokemon/{gmax_rillaboom => rillaboom/gmax}/normal.pal (100%) rename graphics/pokemon/{gmax_rillaboom => rillaboom/gmax}/shiny.pal (100%) rename graphics/pokemon/{gmax_sandaconda => sandaconda/gmax}/back.png (100%) rename graphics/pokemon/{gmax_sandaconda => sandaconda/gmax}/front.png (100%) rename graphics/pokemon/{gmax_sandaconda => sandaconda/gmax}/icon.png (100%) rename graphics/pokemon/{gmax_sandaconda => sandaconda/gmax}/normal.pal (100%) rename graphics/pokemon/{gmax_sandaconda => sandaconda/gmax}/shiny.pal (100%) rename graphics/pokemon/{gmax_snorlax => snorlax/gmax}/back.png (100%) rename graphics/pokemon/{gmax_snorlax => snorlax/gmax}/front.png (100%) rename graphics/pokemon/{gmax_snorlax => snorlax/gmax}/icon.png (100%) rename graphics/pokemon/{gmax_snorlax => snorlax/gmax}/normal.pal (100%) rename graphics/pokemon/{gmax_snorlax => snorlax/gmax}/shiny.pal (100%) rename graphics/pokemon/{gmax_toxtricity => toxtricity/gmax}/back.png (100%) rename graphics/pokemon/{gmax_toxtricity => toxtricity/gmax}/front.png (100%) rename graphics/pokemon/{gmax_toxtricity => toxtricity/gmax}/icon.png (100%) rename graphics/pokemon/{gmax_toxtricity => toxtricity/gmax}/normal.pal (100%) rename graphics/pokemon/{gmax_toxtricity => toxtricity/gmax}/shiny.pal (100%) rename graphics/pokemon/{gmax_urshifu => urshifu/gmax}/back.png (100%) rename graphics/pokemon/{gmax_urshifu => urshifu/gmax}/front.png (100%) rename graphics/pokemon/{gmax_urshifu => urshifu/gmax}/icon.png (100%) rename graphics/pokemon/{gmax_urshifu => urshifu/gmax}/normal.pal (100%) rename graphics/pokemon/{gmax_urshifu => urshifu/gmax}/shiny.pal (100%) rename graphics/pokemon/{gmax_urshifu_rapid_strike => urshifu/gmax_rapid_strike_style}/back.png (100%) rename graphics/pokemon/{gmax_urshifu_rapid_strike => urshifu/gmax_rapid_strike_style}/front.png (100%) rename graphics/pokemon/{gmax_urshifu_rapid_strike => urshifu/gmax_rapid_strike_style}/icon.png (100%) rename graphics/pokemon/{gmax_urshifu_rapid_strike => urshifu/gmax_rapid_strike_style}/normal.pal (100%) rename graphics/pokemon/{gmax_urshifu_rapid_strike => urshifu/gmax_rapid_strike_style}/shiny.pal (100%) rename graphics/pokemon/{gmax_venusaur => venusaur/gmax}/back.png (100%) rename graphics/pokemon/{gmax_venusaur => venusaur/gmax}/front.png (100%) rename graphics/pokemon/{gmax_venusaur => venusaur/gmax}/icon.png (100%) rename graphics/pokemon/{gmax_venusaur => venusaur/gmax}/normal.pal (100%) rename graphics/pokemon/{gmax_venusaur => venusaur/gmax}/shiny.pal (100%) diff --git a/graphics/pokemon/gmax_alcremie/back.png b/graphics/pokemon/alcremie/gmax/back.png similarity index 100% rename from graphics/pokemon/gmax_alcremie/back.png rename to graphics/pokemon/alcremie/gmax/back.png diff --git a/graphics/pokemon/gmax_alcremie/front.png b/graphics/pokemon/alcremie/gmax/front.png similarity index 100% rename from graphics/pokemon/gmax_alcremie/front.png rename to graphics/pokemon/alcremie/gmax/front.png diff --git a/graphics/pokemon/gmax_alcremie/icon.png b/graphics/pokemon/alcremie/gmax/icon.png similarity index 100% rename from graphics/pokemon/gmax_alcremie/icon.png rename to graphics/pokemon/alcremie/gmax/icon.png diff --git a/graphics/pokemon/gmax_alcremie/normal.pal b/graphics/pokemon/alcremie/gmax/normal.pal similarity index 100% rename from graphics/pokemon/gmax_alcremie/normal.pal rename to graphics/pokemon/alcremie/gmax/normal.pal diff --git a/graphics/pokemon/gmax_alcremie/shiny.pal b/graphics/pokemon/alcremie/gmax/shiny.pal similarity index 100% rename from graphics/pokemon/gmax_alcremie/shiny.pal rename to graphics/pokemon/alcremie/gmax/shiny.pal diff --git a/graphics/pokemon/alolan_diglett/back.png b/graphics/pokemon/alolan_diglett/back.png deleted file mode 100644 index 26e060dc346577c083b40b883dcd09b47f5f0661..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 398 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|e#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6-A0X`wFGcGJ>Fi`k$g26*V00?emC~R<0`0?Y1LBIkIjf#c|A0jeN7$|5Y zL?le;nBZVwz`Bf;5vZ55z$3Dlfr0NZ2s0kfUy%Y7eD3Mu7~*mK?FC=1Lk0q@4<=SH zEZ2QE`3u8K{&mSVjomT|9hTkiY&PX)vU;aCb#WiuKDYnO>;v}ssq>lgK5GhCFPx#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_pjcS=$N*R{7!VK;*qB(ra6tI@_|P~= zZ~z$isF3(*STG$=qFzC!a(f|Me32;bRa{vGi!vFvd!vV){sAK>D0USw0 zK~zY`?U27t!!Qts9i?Li>>(2iDGz`UVy=+IM8%XcM?{Bs4~9Mgf>+=bvQUZ9X_k(~ zUNR<^g)x<|_%qcxPYg);EKk2r_d6XM`OgFg9zmRV224HkgDIyv!XqIPvg1@FXJp4D zIc78$GdkyjJ_An|8MR}OrVF?wg!m=}0AfU(!yP4rklROegm%71SUv+KoZr6`j{wgf0!GWv2N>M;mVYbHMA~Q zhbtQ^shjO)zX2<)biJ)gtagod2u*L5&VFonM%Vils>f?>u+xafDKLeyf5)yw?Aj04 tts-R|tfj_Yy|Mw6jnr^FGV<3j_6ZOzd{Bnd8#@31002ovPDHLkV1k0ju!8^q diff --git a/graphics/pokemon/alolan_diglett/icon.png b/graphics/pokemon/alolan_diglett/icon.png deleted file mode 100644 index 1b575078a3487ad1a735ad181c4242add98a764e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 358 zcmeAS@N?(olHy`uVBq!ia0vp^3P9|@!VDxk7i7!@QtTz3zOL+#x%oxS)Lng+`vHZ- zOI#yLg7ec#$`gxH8QgtbfW|14r4}g|>zNd`E_n!4!ckJ-=MI!H2C^Bv8Z_mB6id3J zuOkD)#(wTUiL5}rL4Z$)Yto$N>gwvfd$;`m|G&8S?2{(uD%$&Ztq=`(l=0IfsblJ8 vrsWx#c9-r{{r(l4cuJAy$42gAOZz(ZSqVDj^@_iMu43?X^>bP0l+XkK({O}8 diff --git a/graphics/pokemon/alolan_diglett/normal.pal b/graphics/pokemon/alolan_diglett/normal.pal deleted file mode 100644 index 4f7aafe254..0000000000 --- a/graphics/pokemon/alolan_diglett/normal.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -152 208 160 -160 88 88 -248 200 0 -88 48 24 -16 16 16 -216 152 88 -192 112 64 -248 248 248 -208 56 72 -112 0 24 -248 168 144 -248 104 88 -48 32 40 -96 88 96 -144 136 144 -64 48 48 diff --git a/graphics/pokemon/alolan_diglett/shiny.pal b/graphics/pokemon/alolan_diglett/shiny.pal deleted file mode 100644 index c0ce049798..0000000000 --- a/graphics/pokemon/alolan_diglett/shiny.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -152 208 160 -128 48 32 -248 200 0 -72 24 16 -16 16 16 -216 104 32 -176 64 32 -248 248 248 -48 80 160 -8 40 120 -128 144 240 -88 104 200 -48 32 40 -96 88 96 -144 136 144 -64 48 48 diff --git a/graphics/pokemon/alolan_dugtrio/back.png b/graphics/pokemon/alolan_dugtrio/back.png deleted file mode 100644 index e114284819b74add47b737b084e0bb2aed9ce800..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 519 zcmV+i0{H!jP)Px#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_fG{BV$N<=AAh19nNEi_K`1lYI5C|xE zSZK&FP@vF|2rwWhU|3*~h>+NrSlF;rX8-^I32;bRa{vGi!vFvd!vV){sAK>D0bof) zK~zY`?U1o}tA`(D6)-i(}6RlB6EgCcyXb}Np*d0%3V#re8B0O3EZ-BVBAUmo3vMC%% zC&+0=K|eIqGLOB{-U63t&H_JvM)M7$GPxx7dikV@j)<1P+l43UuK#o%&;#&( zz1cq%53Mo}4KNo z&7oQ!B9QPx#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_pjcS=$N<=wSio>VSTGp)`1lYI5O4q( z_-I(rI7rZt2rwWhU|3*~h>+NrSOc4UOaK4?32;bRa{vGi!vFvd!vV){sAK>D0%1u+ zK~zY`?UONY+CUV??V-xTkaOxXkPe&_7LU#su=-h20+(O&d#B82SsDWznuj~Vt5 zIwiJk6M9$%72p8x_QfOa_mttlW--%S|Q zgD5;+@G`W(8OuI-{E7p9di}@{Xc501YqXW(xm8x)2gL2ch&w7oXF3!AjZ}DwF51}>tHZrU(C!Pz4a9#v%5UBAnH(`41LKlJI_BBJeQd?3$YxWh2 zfKEejaZAmx$~{#J7|*Rsw?eff=sq9-pMT&}#|i+(6>vw!9=KQd(PV6U)HOa*K=Y1V zzRq%inOlYS>ftgAeN7!N-S1Sz}r} zz+#z5LE>MedYnkPT%>cB11fT!g?&+7NSU$#zdSwzqF|Y<3B*a3BBo$h@DxxCx`7io^(zHL_hA8$bgN6410000y}h*m|NnDy&7`dM zw1Zmi#f!zPDfad$_F__$d(Fk9&Alm{Vq#iBK|$$6v|j)K00Cl4M??UK1szBL0096= zL_t(|oXwIkZp0uEMY#du0`XCD8&;_(U8Z#^+NE+4X$vYsLqkhtb^-H zL^?NWbKXFRV;PW5u_ zAPnIwWBPWgU_*Qkkqn5~lHb)uHy|=l9`}{I~;ullnAV S5IQgb0000Px#1ZP1_K>z@;j|==^1poj5Fi=cXMF6nqz+gC-I1u=_Xb=z(;DAVoXaL}-Soqjz zplBfY`1r_Zi0Gimz@Py5@F<9=K=g7n@c;k-32;bRa{vGi!vFvd!vV){sAK>D0;x$v zK~zY`-IcM9+b|4x4Y6!#Ba*Jr9Jc?<6xZQh@ zh%N-M0`$BUbAmE*tQ4T5_Rr7o#8q@nLC=dml=CB!Kr}@+0xZGW*&H?quwtO0Mfb9= zlJuzv7{wxJ)f5K;@a-L;)3*gMd<+6``(`4#7~};U7s8FRtgLM$w=98#IHobPRe-V< zb&zfV)_cE>V`dPeb|Vqljc=uqoPwq|#Oh@RjDLy6`z=qv;K@AiyOf*{bp86A2%4^j zvS|wYuIWnl8BA~Om+^cXX{=%i6s*M!OOzd5^5RoZPWq^#15=BZJ0Dd~u9Ov0pXe@r z&^1gxavZ7W<(Xa!j8ZXF`8PrH;}b3W^NDu>xLd2-hnQeE+&I^1bQ*`TlT^KdfT!E- zj8zrLnAU|M5YpJcsoP@$}3%GzezQCR>S~9z;~hF6Y$}i zrynLcBLiHfywN4~7`U8y*jGt{RG0v%(ekhpAg_Zoy2$|7xIFVHzey6rn?nY;#+gTr zRq9a!_>UQAt{0go2C_!u{maWa0_DZW*JX$rMMC*m=L~TqX;@}JTO3AUeEap{ujQXy aMez$>8psSNRD(AF0000Px#1ZP1_K>z@;j|==^1poj5Fi=cXMF6nqIG{i%U@(Z_a1am>P{3eNNI1~AX!!8B zh=4Ho`1r_Zi0Gimka%Fgu$YLbKuORwY5)KL32;bRa{vGi!vFvd!vV){sAK>D0|ZG# zK~zY`g_N;x+CUV>56kk#a2Jv}c5wfIINfb}NmL|+NVuI;) z@E8+x-baeeSbG+^OZVAvs#OZBQLblY&y6yG)Jt59EQ*GQs z3T_CcEMtQAiBNJKU@0-4R;CEN- z1=vLBkiYjkl_6cB�!~tpqO0J}N!n-Vm)Lq?GnL099nL9#FZr9)J)p0IGCf0Qhh{ zfV`K0cA^YpTS>ocw8b(EM)b`Tp@s7tuq_0q*BrIyfJrGS(A0b)Z=M5|vs8Ut*wI;z zMVD%I!W$`@?ZsAU)yGM?w~0=8)u+dlp3LD@CzEuFd^FFYjjK<~BPhfFzP+&e2Q8gZ ztuFXfE@000+sMObuGZ)S9NVRB^vM@&RePDdbiWpW@hE;Mn4q~QPn00?w&PDe*f zL^A*Y002sWDIWj;00d`2O+f$vv5yP*_YUWBQVq#iBK|yIbeOmwk00Cl4M??UK1szBL00BHn zL_t(|oW;^jYJ@Np0N~u!lvI6-A0X`wFGcGKcU?K5i0>gy}4gmoH2?Yg@fB+2xgA+GS{P^($s0s}f^_55g zg*Xd5B8wRq_zr_G^yv zH(&9EX=}`W;||5ZMX$e=hP|qp`SbJnBQN~fyLP`6WxDd6fs>)?GsA?)9jAk5PH%CT z5aHOw!&17&q2ED{rNvFnfMt&;XP+RGR4adjX1}8LmnrM_#P6Q_S7LSw;|;mF`e}?A zu?-zZSg*-m{d=#Hg)uAd*84>j77A7_kK&4L)@HUnI?8nE^FrH+^*Q@j&Huo2^2pc5 zSIZ|TPn+Obq2_90@G#a{o%O?6uUEleOqpBRJtnM|eJOU}0DET38P>3!O{?rL$OX<% z`jO-+*HAe#{BNQCwu9dnsvX$&K+$7K$nE*(oV|M04s_j-+wJjbl9+C_>ra-c7Zdj8 z{XXBfrMy~cN6Vwq1+Q;q9!-<@#toLljqcjGSBKjsHjZ%BwTWo)|fqv8IdNAW)*9G0wD_Jl{{ z{ZsQNyqo$;BAxDRU|{=V!lvI6-A0X`wFGcGI$2q;*v;y^{k3;_WF2?Yg@fB+2xgA+GS{P^($s0t0N5nE;s z6yhxKh%9Dc;5!V$jK}j=qyQ~z@N{tu@i_i=l4D-8fq*Of$v1`Rc4|YF*I2)`TOoXTIO~aNX{Is~0^HSJ0i-G9`TD zp-(?HS|9IljhLVOxG~no>3n{phhl)TdI-bE7t`5!6xF;Py!mZDd}=V8Q>6GxWTl(* z_r7i+0j;J$~Tu? zi!FsAr0;~&tH!MleWvg1*~G2Tv87q!x?AaqS{;)kmSzlF*dDxFbM=ZOx04VngN-Ne zquehC3}pBG^$8X|7nQ8^taJ7E%l{mBmU!I~2(Y>FymHm)O#AC^jGRIb326vDe70;B zKi|%ux(iO2?}_~Wsjqd)#g`@e4Th|bz8zk1_S@;`so@MuUi3e{yr9ZthS9`Du?)Q8 z&!7Ei-|!)M9~+BheQ%%E*5taIj0ZjjYilmml$J}ec)oz=_kulz$6KNqKA7F){-bcb gY4^Kdn;G^oMk@t;eR1KCJ1EXPUHx3vIVCg!04e|EmjD0& diff --git a/graphics/pokemon/alolan_geodude/icon.png b/graphics/pokemon/alolan_geodude/icon.png deleted file mode 100644 index 1a5f9699716f979d3485d22db4898ce59047d23a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 410 zcmeAS@N?(olHy`uVBq!ia0vp^3P9|@!VDxk7i7!@QtTz3zOL+#x%ow{&1MDt{0I~h zFL8}13C>R|DNig)WpMX#0UD!FmRh7>tY=c#y5u2H2}enRpF2>-7|3SuYS5GiQY`6? zzK#qG8~eHcB(ehe1_3@Hu1Ry6tE;Q`?%neL|Nr9RvrE=|+tM8M?r8VXHJabPX?{xz zno@oC=#sO0HRmKHML9Y;zI53V57f(;%!#BZt9tLNnUEM)GQ zA}^QwGG3Salq{?D4JpM-CX-#X41lKokC9)>KWk&&F24Lr_YX|@x9;$aeXl-v#g|H4 zx?dX6_a(Glxi-^^=cT!9+ss*fmk->(_K-7WYYXcGImZh?pD=j3`njxgN@xNACX%DU diff --git a/graphics/pokemon/alolan_geodude/normal.pal b/graphics/pokemon/alolan_geodude/normal.pal deleted file mode 100644 index 5eb12793fa..0000000000 --- a/graphics/pokemon/alolan_geodude/normal.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -152 208 160 -80 80 112 -160 168 192 -120 120 152 -16 16 16 -24 32 32 -72 80 80 -40 48 48 -200 216 200 -248 248 248 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/pokemon/alolan_geodude/shiny.pal b/graphics/pokemon/alolan_geodude/shiny.pal deleted file mode 100644 index 58b7f7c06b..0000000000 --- a/graphics/pokemon/alolan_geodude/shiny.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -152 208 160 -144 56 24 -248 144 0 -208 88 8 -16 16 16 -24 32 32 -72 80 80 -40 48 48 -200 216 200 -248 248 248 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/pokemon/alolan_golem/back.png b/graphics/pokemon/alolan_golem/back.png deleted file mode 100644 index bda1dfaa6f0933ec3c548c7166385568ec1f74a3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 696 zcmV;p0!RIcP)Px#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_I5D0uf0> zK~zY`?U6xl+b|GC-N1`#S2{UBD)$01djK0CV6p3_=mCQC02M$vyTSrA^qPRl6WGux zJ2Rvt+sd|!0-1$G%{>13Gn&1}zlys&f24POP9y&;8{l-)AFGTmUt|ZxVQU9z9Ai0&UlICm`S#w95hb($_zB9E}h^ zU%L+a4q_PN5P{R?;ailt0g^!1Roe)*vBLngJ#gBl_x>6fIu4k?X+G;ltdjfb-nXi%uYqTMPyPS&zWZvvFP2UAm9SswfO#ML% z1bAb#1E-X4tI}Z9ss*ST~hZ_-Xw{qz+XG z3ZqPQQ-M_|0von~wro%yZw!FOB6?De*MxwkI)JhXU_%hVlEA!0*IWk&R{(f$1mNI0 zCYtid^?CqE0s)^AP+E53e7XR@z^+LNP&mCY%E16&kGb`Dh@lnD7xV};XrhEZ0l}$& zD;X4&XMnaA6T$KHI^A%{BB0`b;DielIySKy)zCv2038$q_(Z}oy}ke%x=Z17pjIIQ e@A1FHZ1xu@IFG4ux8hC!0000Px#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_I5T7a6nK< zC@3hHpqOY-P`Ie5kcfc5C@ARY=%Um?yZ`_I32;bRa{vGi!vFvd!vV){sAK>D0@g`H zK~zY`t<*tF+&~lu@a&R{^wPH*OQjUqiO`dWbiDLX*lh;ZQmt5MKY-vjSQzzM!GNcN z5FA|Gz3QtwXYp zI-Me_&`bwVIz==JKp&P3m|eHB6|kJL0UtICP%@$lk2cjB6$i>kRAF{K1sG9@<~Xnc z(h%t;rhqJji(SlNl>ilj5Cxn`P^FFvK`3?8T{vX`poXobv=7iM0q^Y`&(W0yto&Nv$DZ_W}ymR#V@_B-kAT6mLTj0xa$|$5UqDaR%lB zPa9#s2tMt7MBs5Z2m%T|Kh)Ro`8MaCx5s(F@n??nZEcMi&V8O1x}ET=&$qlo9gt^H z#EEh{VHlp^G!6Kn9SK2})PPWx@980rj$dM*DzGyZoKae9`$KTzd7~j`Lc1?)3X8Fy ztxyi2Chr412f9+WbFd%jpdrqjt1cAB@?^lw(yQp>vtC9`3sR5HcJ$NqhNHQ6-HpzkP7i-KP)Em@dmy#?HYZyT$w*_E+ z%YwIq%L}j|1z%Y2Hc3Xd;dk0>pg;>O6=K(Wfa`O% zYcUMkmJFH}4DFGcB~uD#9=>pRW=7d=No$YD&O`F~V%3M{F|=r(zx=%-$97TtmKc>o zaw-!Z%NEKBp1H_y&%off+Z-n6B>OEKc8tC+qFI)T9lhjmY;}t3H#VGRJy31KC5TwB}iM330{^ozFqFktw zXt3DR-3GUpG(9h|@il$u;(oAD=51-D!|E%BUPoT0Cj3@hhtN3+1hw*)`;*1Ac zXMQCl2)pIC8rtsz;&q4K{Jqg~^Y=#1&zJkR{b$Px#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_cpw0nH~_d<09XJ35D*a9kO(L+C{R#9 z(0~y5uqb$dXc!n6`1tt9FlYb(0DZB}tpET332;bRa{vGi!vFvd!vV){sAK>D0!T?j zK~zY`?US)?+b|G@Wgvo=4n0{M40I7~KY(;LyoL_7SBVG@=|co43JuZjp_7LW_TIsI zffz^^!$Ujxp>iaxIF@Mx1v2IaN#uR}`QM53KH~qQ1)neHI~cr!45{9oW~CTv5`)|3gWR37qD=`*rEH*m_IrqsRsLKWDpu|I+|M z=m0!5Ew(r#wt=ut4? zO6_OKz0;ya9|!-=2jxr7jzQpw)|C;sA6PM`ilJvTpU; hStj#7;$6b?UH}Y&pf{7&YgzyR002ovPDHLkV1igeNJanv diff --git a/graphics/pokemon/alolan_graveler/front.png b/graphics/pokemon/alolan_graveler/front.png deleted file mode 100644 index d2454334b548f456583d4e6f3b810d35a6709585..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 889 zcmV-<1BU#GP)Px#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_P*_-afOwdopfET%5D*Zkz_=(dC{R#9 z(0~y5uqb$dXc!n6`1tt9FlYb(01rW2ZU6uP32;bRa{vGi!vFvd!vV){sAK>D0@6uD zK~zY`?UTJ~+&~b=*Pz91MjtkTG#W_(m$xGu3@NOSbA6I-W9Op@XRb~N<_t-1*M=0A zH*j9SMVf#K7sxd(+@(zIXUME{hixP-50DJUv0{Gu&woa<;-3%rOWvl{#2N+kXcgcP zQSWbnvr59siNbi5M3O0Y1pp#({fzdOPpzmR0WQ)2Kz<7-$p?qjUXx#vLgdSXEP;XE zz}V&d60k;L&NDLINdTLo13stl&{qd)nXJ9v9gR) z-$l)*DhXmp3}B@_hph)SkP#uG@leHf0(K;FD<#JrtHPn}a0wjL4dnpdz#2n9Djcil zM`UAPl>9V}*u#241TYZQ&WQWUMrvd9;yj^&3~2YllLPUgA1D@Jq4?<=l@a&!@`6Yg zHUo#>gwR=uZt4jc#5*HyNYVDz1@-tuTc4ycxgREok+9r8jhi;}j3RTWd*CkEEJjw6 z9#wUoGK#qr?^6S;ms2MC8D--hEuwy3`Cct>QhYf_^fIbwRA)EeN2QrTq?-y_8X(|l zq!Y7;n`g5*^6QJViN~xEY!AoulZnmCvmeJ?KflWh%Vrbg(&W|U>E!EVe){@~N9x@H z5)BashsU#%v&r{sJz*fZ2MDcg-wyJAaWk9DZ?2!s*$a9PHn1@JHG6mS>m%EYd74v% z!F@m$P|}mDW(qOkE_e0-5K@s*s!T`J=agyKOW^sNu=lg)8 zQY3J5G9OB{Du}FyZkX2|`QD@51{8)Vrp8F6eAJ><0;fLT6#hlH*!PDa{mxj7k000+sMObuGZ)S9NVRB^vM@&RePDdbiWpW@hE;Mn4q~QPn00?w&PDe*f zL^A*Y002sWDIWj;00d`2O+f$vv5yPy}h*m|NnDy&7`dM zw1Zmi#f!zPDfad$_F__$d(Fk9&Alm{Vq#iBK|$$6v|j)K00Cl4M??UK1szBL00ApW zL_t(|oXyfPZp0uE1yF8)hHB*ki%Ao00gBQmXWOHs%eBk_226TpF$UY~A}KdCSmO^G z;0f`xAqivzS8_Qo1(}=-bp=A3b&X0OxGb{;?`o6*hsaSPVW?5*EsV-# zuL#%Oc>;xC0=}ADBVwM=po;TVt%_002ov JPDHLkV1iVl)O-K{ diff --git a/graphics/pokemon/alolan_graveler/normal.pal b/graphics/pokemon/alolan_graveler/normal.pal deleted file mode 100644 index e477581e89..0000000000 --- a/graphics/pokemon/alolan_graveler/normal.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -152 208 160 -80 88 88 -120 128 120 -152 160 160 -48 56 56 -16 16 16 -168 192 184 -40 48 40 -80 80 64 -208 128 16 -248 176 40 -120 128 104 -24 24 24 -248 248 248 -200 48 104 -0 0 0 diff --git a/graphics/pokemon/alolan_graveler/shiny.pal b/graphics/pokemon/alolan_graveler/shiny.pal deleted file mode 100644 index ec4322ca84..0000000000 --- a/graphics/pokemon/alolan_graveler/shiny.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -152 208 160 -120 32 0 -152 56 0 -184 88 0 -88 0 0 -16 16 16 -216 144 8 -40 48 40 -80 80 64 -208 128 16 -248 176 40 -120 128 104 -24 24 24 -248 248 248 -200 48 104 -0 0 0 diff --git a/graphics/pokemon/alolan_grimer/back.png b/graphics/pokemon/alolan_grimer/back.png deleted file mode 100644 index 41165aaa83378c32f0d0e9de54d03d09bf8421c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 647 zcmV;20(kw2P)Px#1ZP1_K>z@;j|==^1poj5Fi=cXMF6nqu!ykOsMugQcn}Z}=-B9ZNPzhG_?T#z za7Y;N;3&YL5I|6nP>9F?00000037!_k^lez32;bRa{vGi!vFvd!vV){sAK>D0pLkQ zK~zY`?UFrD<3JFGjqHN*98siYb4XW0;=<)BHV|EjWF0>MtxU}!OLW0jG?tsx(9*D1 z-br^de~y{i^+yut>eGo=`H=iRp4oYKoDco0I`Dn}(_eglB!oDI{eF@N(s;jbfIY;) zNs?R{K%5Q%k0-5PL<9bzX!RwI2TFw2^#P8~vjO1Do(}+mZ`u8h@4=EXARmFdT_6C! z6an@E3+Qw+(87a0aJdW2`api3U2l)^^-rG&64(N~`Ug9;)|SjSd^fB#5|t)dLiT~_ zxHXyF23%YcBG{^QNPopfhY=Bt>R*^iAsu(t9@Jf_v;!&~&jR$PV$#K^dPJ$^WhT+@ z1E3U}REmJ_a*lr6gK{QfrBG?9*RgcwVshqBPCI~2)~#OSv$>cGfArY^7r-T`2!2Zo z&~}(%J=5PF1Il_$*$RP=I4*agQl4{Z7p8tOUGw0A05{_5L|EYIrP+^Sfk4z8Foorq zD?PvBeylhc4AkR2<{?u1TRlih#$K7%T!ZT7%+_uQCfmaCMy7-zs7PA=e#ITPJ#d~L zVK3xOFQ_R5kju?|w|f3buPZ3x7-NWdKQ>fEbVQZL<{oBzhdt#Xx%lC&iPx#1ZP1_K>z@;j|==^1poj5Fi=cXMF6nqICxM%plA?CC=d`3Siq1VKrs0D_$XLN za7Y;N;3&YL5I|6nP>9F?0000006KfY=Kufz32;bRa{vGi!vFvd!vV){sAK>D0tZP% zK~zY`?UTQ5oInu9k>CZ!Aap62vr)<%>-D0+q@+xa`l1M38zoJg z){VLLD)I{FCvbR|%yLd-xW!$HNdACb;QKARGqYIt`d{7sfP}=rnGoXXth#6bzcmFPQsLQ*Ci$%T0x+3_ z>SW4tGW6dOsrMR?3bHO>y$aw59j@05c;LhF7T^E_SM|D*;2rx56YyY3b^S{N8K}WF z;Cjo$x~>_JK7gU#FaHAIXN%Kqz}eTpb*ZzYlxfFMxw^X6iR_l*kL3CCXH~B50A816 zxs;9X83B)d+I(PS0Bi;4mp8s~3cFAT7cfu?3Y8UxFe6yJS*b>hd^P~cTTx~GbJ)C} z8q4hgMj}FVN5CgD!T7ZnDF6Tf diff --git a/graphics/pokemon/alolan_grimer/icon.png b/graphics/pokemon/alolan_grimer/icon.png deleted file mode 100644 index 09d83cb95e7b5510ced85c7a56194067873a41ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 486 zcmeAS@N?(olHy`uVBq!ia0vp^3P9|@!VDxk7i7!@QtTz3zOL+#x%ow{v>*5{$pi|C zm$*ih1m~xflqVLYGPwJ=0F6;7OD$3`)-x$=UGfm9grlUu&mAaZ3}iESHE7BMDVB6c zUq=Rpjs4tz5?O(Kg8-ip*Q7bk#l^*Y_wN1w|9|xyuQ_MErhM~yS3Kw2ly7^NM16av z`R&`9t5>t0d1)pkML9Y;W?I%p1NAZ{dAqwXbg;^L0NGrgE{-7;bKXwc=y%vapzSl8 zdbf{GE%UUp^;&vUBVrVPUMo?w5#;7^of4j`ltWxd0=9({q&Vg?I^eFd?&PBZrwJX7?R`Q8hmKuGpPX8&hFyRX9U$d*Qxg> z9rRtJsCB*4;KA8Fa&b?3vfuO?ny!kKZ@gJnzctr`eX$vP?fNer-g>Wnji*agJ-FPg zQ}TtYuH%l*qDonXT_ttTH`TlTl9c#g$!XxQSY$@|B9R%}B$$%h4><7qL_8HY*pqXB zPvXwg`+~E}4~Xok)3z~?c1}GX!hR+z&Qp!U)44$rjF6*2UngFm>zv=)0 diff --git a/graphics/pokemon/alolan_grimer/normal.pal b/graphics/pokemon/alolan_grimer/normal.pal deleted file mode 100644 index d6034f72b6..0000000000 --- a/graphics/pokemon/alolan_grimer/normal.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 176 232 -56 120 80 -64 160 104 -16 72 40 -16 16 16 -88 192 144 -32 64 48 -248 248 248 -40 88 72 -112 72 24 -240 224 40 -192 160 16 -64 80 144 -80 136 200 -0 0 0 -0 0 0 diff --git a/graphics/pokemon/alolan_grimer/shiny.pal b/graphics/pokemon/alolan_grimer/shiny.pal deleted file mode 100644 index 60251d8f18..0000000000 --- a/graphics/pokemon/alolan_grimer/shiny.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 176 232 -176 136 176 -216 168 216 -96 56 120 -16 16 16 -232 216 232 -120 72 128 -248 248 248 -152 104 152 -112 72 24 -240 224 40 -192 160 16 -64 80 144 -80 136 200 -0 0 0 -0 0 0 diff --git a/graphics/pokemon/alolan_marowak/back.png b/graphics/pokemon/alolan_marowak/back.png deleted file mode 100644 index 69e99db6a22da6e99fb5af9ec9d4ed10160c5b10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 777 zcmV+k1NQuhP)Px#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_DA=%o;Mkz}@EE9wSXfXH5D@tI_`txp zh>&<#7-(2fP>5i_Krk?1K!_+HAdR*-@Bjb+32;bRa{vGi!vFvd!vV){sAK>D0%A!- zK~zY`-O@2{+CUTsa6H6PH=a?VbZ9Hvd;xs@1d%^LI=F#OVaOFEY9@Mk=+MD%-nvkn zv1Ve_XDe6MhJG*fVwo|E{+FP*ve!TbR9hHCc9Q+P6PyZ4e(7~Sq zHEG?VUK#LW(WIm#gi2!Z5Rl?gNXdti8LtT$I4w%YWhpzvn-Wg|&ncNPo)QTtA(LVd z5JE(qj!8+*E+NB!#w`XVA%-*t^sKOj8pb6F{K6J$Tp?lHq6GM7ZIUeQk=1w{LJ9(m0#3A2q$TAIT+_=bmA}jNsFR8?M@Of9ws8UOcl%S z&5)!maznZjBvnUzdbuIuGTy_Xj2XyF3-as6QXD&B5IS<+$4XwbD1ca(Pw7QSM|mKU zw&7PuCp=GID;aSGkMR#mCm7@Vw@NjAd~*v&%T@O!-f65r`q=02bi2Gc-y59*^_H(; zyZpYN4XPQSU$0iBpugd3?b&u8D0&)Uw)j-jpR53?S)euUCd_(YW|{?H8hS=3wKT$p z%{d@lv+R>b2AC;`n9J8DLUjS|TL4NkeqIQmAM8-6sAp#=rpPS?{yG!j+lw5~kT`l3FMEu+;@<{F-QG=UBFjMf^$lZePDdC_YbS%a z&05_yEFK9Eja&|Z3?uU^?~UX`FSeuBgki-mAM@tJ^xyoT&02ol4~=UKc-tPx#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_DA=%o;Mkz}@EE9wSXfXH5D@tI_`txp zh>&<77%)gccu+`)sDO|#Fi>znP?@qm7XSbN32;bRa{vGi!vFvd!vV){sAK>D0;fqt zK~zY`y_2zy+CUJ7*99)9uu-J6U|s;67l^Yj5Glw+X`CXfQ*@Vfx1f{K#W+fRxl0q# zq(KfTa}qs;wW7>b<~oWK+BYDVe{C=je5Od05t6N)kN+R<%#i;an(_C9Svdey4*;`}lNAQ1TqsHDJfkN|z&>jbJu z2!s)yCc3K17>a110M0J}y!XnXn6P8lPqwI%8b+lq9D3JXDEKh&i2kZ;V6u`GU<)C> zo{fL-PuD#K2*H%`Q^&Sz>6eZ`yx<>urx%wAFi9#iD2QYO%I~0oE}j2uBOe@#v{hz< zI+m?AKxc4qaR+S(Ft!rVs%kvz>+xg?Q2KJQ62PJZpw{}jU3E!8a3U9}fC3tnHuiv- zT+JJ9;SqJV6qEyF@$7azkcQo&PQ97+0suRSZF?1AxxRKMO*B Y1FV2oZ&xgk@c;k-07*qoM6N<$g2rZYCjbBd diff --git a/graphics/pokemon/alolan_marowak/icon.png b/graphics/pokemon/alolan_marowak/icon.png deleted file mode 100644 index 3ea2a868c353724056482bf33fe1f3c7edb715f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 495 zcmV*_YUWBQVq#iBK|yIbeOmwk00Cl4M??UK1szBL009$8 zL_t(|oYm65Z-gKe2kZh_?NTRtWKNiGuWPxab+pK3SDw^y;TjrkE)|fy(m4 z*x3hL`7$y_{eT=tRSgr;woeewpNDHkmwa{?*>YAXLY3Tuq(+%!88HL)6B7`1CdGp9 zD;h-BimtM7XC&|Z6OjeySi6x|-h&=ViO0zXyl*>{V~O3VkhY>ja*+7G1X2N@^@gX% zzjylug4^2C@E@x=^ae~U=#PS_4`7V)7)%2PFeb2I3b&%MV3vmu3uX&^>|jD4JDAYN l4NUCg1}65=?eCxa_yz-#m7O%YfQ|qF002ovPDHLkV1ic}&qe?M diff --git a/graphics/pokemon/alolan_marowak/normal.pal b/graphics/pokemon/alolan_marowak/normal.pal deleted file mode 100644 index 0c57bcfa7d..0000000000 --- a/graphics/pokemon/alolan_marowak/normal.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -152 208 160 -40 216 176 -128 224 216 -160 248 240 -24 168 136 -88 88 80 -16 16 16 -248 248 248 -192 192 184 -136 144 120 -32 24 48 -72 64 120 -80 72 136 -168 128 144 -48 48 80 -112 64 80 diff --git a/graphics/pokemon/alolan_marowak/shiny.pal b/graphics/pokemon/alolan_marowak/shiny.pal deleted file mode 100644 index 2b7d10ef9c..0000000000 --- a/graphics/pokemon/alolan_marowak/shiny.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -152 208 160 -40 216 176 -128 224 216 -160 248 240 -24 168 136 -88 88 80 -16 16 16 -248 248 248 -192 192 184 -136 144 120 -88 24 104 -88 80 80 -136 96 192 -64 48 48 -96 64 136 -40 32 32 diff --git a/graphics/pokemon/alolan_meowth/back.png b/graphics/pokemon/alolan_meowth/back.png deleted file mode 100644 index 84eafdae027197ea54f679aafe7d77d5d8f417c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 661 zcmV;G0&4wPx#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_C^%>k5D;*X&>$!{m{2f4XrS=$@ZiWO zFeq5afH+V%kbp?Y00000000000N&hBdH?_b32;bRa{vGi!vFvd!vV){sAK>D0q#je zK~zY`<&-;a+%OP^sR2^B(*sZ~aRCB(G!y|HAjk;`4YaCZt0lAwkA^@h5 z-}XenZChx>xlv zprw_vI0Vr2ZDou(21Xt7M}VN_ro7R3&?ZSt0L}nAobWTar*t3kI0S%gE$kVPhfaZv zw$wfcGRi7PEOl0=KvDI)6BtWOL!%5AvNqYtw1$>BJI*YJFa9whC|MP( z&0pU8M-Es~a1$SW2re-chIetZ1q|{osKS#=YFJEepMa~sa-dA|;5R_JZvvi(dEiY@ z6w5N;>i>A}R4R}eJ?nsT56)dypbT&6z-$7n70O9qT!EXjyPPkw=6R|>=QY>(?3|P$ z5`&E1YGVctoal(kmbF-!zFvTz6~Px#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_Ku}l^5D<`{xF9Gvm{2fac!2Qm@ZiWO zcz|%ofH<(QxbX1s000000000006PchumAu632;bRa{vGi!vFvd!vV){sAK>D0qsdd zK~zY`?Ub>K+dvS8SKD2uz2#g>BO_y6t%ht0cS27P2p7^>g1z1@_KaS@Wk@5$buLr- zASU?bGLn37u||E08-$zrJpar;BZ-grKO+d~M@^<>qzMSJNnoB|0f;7mLWf_4E}_VI zg#z@$bEKh|0`fL_d_LNF4pYD-`TpxmmM?!65fA*HJsyr5bvf~Xm{*o6ICLyP_QYtv z9gY=Z$pK`6Mx+XeXt*W=BecU$hvW*3440@7D+F|;5psqn7IAn82=r|ifs(OxeU|Dd zoiPe(y>(Q6z`d5NgI3@tkI}#wkQlH}!RT}{{>tc3UGZ;d2Mb8>A;bFFr)lEb%fg7&LC1+hACsGI?`z~ zaza)LO{Y*9p<*}VtjaX`NJ~?eDlsPkQ9q_h&_)sj7Xu)X&%OclW=-V>v-?fAEeoU_ z&>4N_>mMvY2jMzk;r)pNWaq<-T3FQ0mIXE)P${uE?|A_4<0?y0wG)6yB8izy@%*Pb z@nb|HEro=YuetX(P&7i?Wh5|W-L*}3Z7FlmL#%4Qqb*gR_q>Z@x%aO?XW@Ore?R2% u(h0-4d71bOUTzNd`E_n!4!ckJ-=MI!H2C^Bv8Z_mB6id3J zuOkD)#(wTUiL5}rL4Z$)Yto$N>gwvfd$;`m|G&8S?2~cZ#a_ryt+0Px#1ZP1_K>z@;j|==^1poj5Fi=cXMF6nqcu0VVI7s;T_z(~f@Q~1mpqSuTn82XO zATYq-xacr|;PBumz@QKS0000001~Ffm;e9(32;bRa{vGi!vFvd!vV){sAK>D0?bK7 zK~zY`)s(+$+dve@Wg|NG@Zm;j3~or`*~r{%*@s*~vlL8cM?!my!r?K{LG30GO>gK> z=n%AZ=+Jo07Ig@OLZJ7*^xY4|PAhxQcS!8}e(t?{_s-9H+CuGZ?*9IM=;Dobvp1bi z=SO6?$v>M)y*nCi^?~Tt1BcpX?CfnV(X4z>QU@>{elu{m3Q!BIXP6JSXE+#b&+zJb zeGSXy4;`S@uOpgEDX@FCA9?Z_bKbOVs0kA>1@?R&$oE5Dw=J1f7qO!5Ez`SQVs zQqq5Jy5Xd7jn#G#LXQE5=kk`X^ls3{;!%jkJ@Rf;Bd+vzlosFCfxT<@O{oaz#OL(A z@6z3Mpi$yzuPjU1N~xTNgsxw=xF)!iy5X6l02=zkM;VBxfM253mmw%dhE6)`5BS!>Pw@Bt9F)iL}*M}Gg^5v`EM27o-`&Kv

snDs>QL}7j3g2wr3=$Ufwtiz9@hk-$~$JZq9NtFb^yC!+-;E7l$1| z!R8tDIHs}r<=A8p2kJyI9O7PH6Siyz!_f`khB#0i@Z*8{&!N!)K;{J0jicT|u4ion zfD=5td^?FxCX4~`DU2fJXP9vALc| z5>P%%D4irp*HeHEvq%H1O(L#`SB7$$oVuz`YFx%(VP>Y=ch|}1o_iu6RiM}67Yw!F zj~;KW&>6uH>&ZbF$fPWB`=^A)6BBF{JNn~+Wd|y4;?5A6$aGLHgrKyifT3k`xxio| zwbg!IMx}XI0kCF(MddGaIdGe{zFTO6uR2!w>ce8wBzju1tiJ}N+Px#1ZP1_K>z@;j|==^1poj5Fi=cXMF6nq5J)J9I7s;T_z(~f@Q~1mpqSuTm_VRt zATYpKz>qM2;PBumz@QKS000000Dk@Tq5uE@32;bRa{vGi!vFvd!vV){sAK>D0`5sf zK~zY`)s!)7+fWe4Wuq_fqST2=hhkzpq#2Bb=LDaXh{i)gM21YkMtg(9Bcq_hb2ft@ zK1}xF&5$Li9lAS9FqA;`U3&NA*m4@VQ-}UH-~V^-&gVND|F3eQ^kF4n)tV=(h`d#A zdMA6?K)KNIJnuBqH@)L`1bExoK%%qEBB1?Jxtj$v06<=OC)vP-QXqv_$*N)Q4-|@a zGZQe(9`|lXL*@2u+x?~!f0n#+B(n7a>?Fw%elTI-Y>YM|;n zd!~_Ah0F8w!!8m~hs#&nR!RIQy6^Ud{Oljd?Ij|&LH;m`7#Q19^2&G9M578AY2C~H z4!Kt}s}zxMRNd$W;B@`}AQ#tPcIsQ>EwTjzoSqP{HwW5lmK{aonyAce?|4IWW-XRa z+Z&d>LqNO9nYzZAbx}y3$ZZB!APe?oH1=!FGkHzlmwyba?YJQmt_p5FuX`X%C5HyU zisp$$s;lmh+GRpuH^dr`(;-{?hCHX%M+@t>p<qV$qC0DusUV4 zE0B`x>lwcQ$<_OT_fubyKk)6I08AYC;he8iNoizr$bb(%%7hja9GGs_?NRJ2=SKhD#TCvWyZ+Gt3dUL zaAH#GJQPnA&cpE06=hX;UuCy05Cjm*%Q@FUdVs{wYOjFM zN&6alooo5Gkg~NT60t?TpK*-Mz1D0w#$dHFO2ddFvJPNlpg`rorxC)7e%bW!3(1VF)3ac zEr=1KIqEP)Px#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_a8PjQ*!Zxh$fzi&xKPLt5DD0)I(F zK~zY`)s(xg;xG_~lLp!tODWRXk)U=g1!Mg1*xFOA6+7DNl<4*{=XB zxG(|G%^Md?p93JHi+-xEd#2S)hfT_{W>EMn0<0eI`sr?(#S~JO0ERTy&e}mA;?ztG z4s4d+W&kQ8MLPh{D**c$QS)}J#i4ReD?anl>UK!-;9yrimyQ0NfEDR(e%_!en*VLO0`Q6R*7v58 z0K^c1W!2qZ=VrUmn;QaT5rH0V?!M-h1`F0piD;p5EBBz5q6kM&IS;xAL@4wr`)~ok z2loj`*`rd;HUiLngvTiaxcu2Ms&**V$`!{5+=GMt-*0?b6x~K(b@UN(40p*1Kq*y+ zqIVIW(-HeTA<76%XtQ{g3gM#7DNKJ*=VGR zG}Dyi6X1jMG>@sd#j*pLmVlPS)Z{ep38)og!AEnNMTjX%g&)0t-@{O3KKf?V<*tN& z*1Lri>X7QrP}2`dj6kj8`r*{Hsi(1-(@C8&*>VD6mVWhc9IbV7Ah+nLREb>qA@HWs z3dAbmMqgh56IWoZ&3>3|&ZmGU>aae{3ozMHR&y1H-vd1Dgkb&ISkvn69kA#0M`^QX kAVt9P!Ot%HDVAmb0JZ28YoW4hK>z>%07*qoM6N<$g4@?^B>(^b diff --git a/graphics/pokemon/alolan_ninetales/front.png b/graphics/pokemon/alolan_ninetales/front.png deleted file mode 100644 index 22ae9d2c931abc281d59df4d1dd1676692411171..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1012 zcmVPx#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_SYU9_@bH+xxF~q2NTA3N5D<`%kofrc z5I}Iq$jI>U@Bjb+00000000000Pnf@OaK4?32;bRa{vGi!vFvd!vV){sAK>D15HUp zK~zY`m6OeG+d2@1>5a6t=sLGs4gn=wiHIH`b%17hn=(Lmikvb+R&I)030b;;Ok{h} zMb`yVz)#sT`l%f^PLVMTNSbfX91cnGvWUii$&-4P84(#~_SR2Q;u!C*rxyUxpI$~$ z52)^0?GPg=Wluzr?7{7j^h(j=81Den6DiYYfp=0G(bN#&#`vK$pVE_o5f zfolmukri}UFUOC|pQUl$Z?N$eF(`Ooufs$*v!DWON`NA!f~M}c7BB?zXceIc|=p^K3?#)mj0IFu0thm zi7muwnwrE~dvWxct8b}Xu|nvpCAU=vT4Pk!zPIInDXLk8CE#a?HLB?a9|k>bfpb(7 zHQp^4a2^6v`)|8~sr_cl6#)MaGU6IQBivW1tnG%G%)Z$RU%`X(oyV{dqe-HUPrH*E zoz1LuaOmiD3xrUZkW#wqpp&!NDF`^w-A*{4^JdE)AaihqCiWU){h%G@6e&6$02!a1 zwm>rM1U6eq-FqaH(ACVI7nF|0uoV(FX|e^xGd?zQEQ0GEKrXVA4eOA-XU8M2L z%$)BJRHz3;<@4|pTo`B21Po~gd^rHvtvkQehJkr2!&Z^xt0e}T9(P8}GpPZ`OM{FjwwPT!2hVdnPoEoUo&PIa8L?N22KAUf-)a~Jj74}2G$wKEUXw1;Q*|v zdc6=qDk;Cg_nVA;J&3ReM9G$LILZOwVs23nF5Mb$0P5uixX*b4L+~dC{BPiHor|pq z+P9zs0_aui2k~bFb>mP7AaE{!8u$s|_5D*xj?g!E=-}&T04N9bmpyq5r!95+1fJ3E if&JQjxLmw6g!l!;88(%b3|TS&0000zqbAW diff --git a/graphics/pokemon/alolan_ninetales/icon.png b/graphics/pokemon/alolan_ninetales/icon.png deleted file mode 100644 index 71ac99d5a723e34befc7fd7f47c9d787b9bde132..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 601 zcmV-f0;c_mP)y}h*m|NnDy&7`dM zw1Zmi#f!zPDfad$_F__$d(Fk9&Alm{Vq#iBK|$$6v|j)K00Cl4M??UK1szBL00DhT zL_t(|oXwNFj)fo)hIxZ|n9)`WrF9FO79JjGJtTNq*#W$rO}5@OF~mP}{rME)Zy$&s zpHZZzkU@g1XHx+;7BZhL3=(48J;sEx1|-*g!8oFIxn*pq;)aN$Y^?x$lS8i&yPQf6 zXmUOf5u(GI^PajY5DvK&?Ym)KNKtRwSV=2fmxXAtkZaLS>A|z0bSgy>ccISsNo9?h z+w3%RNo9hGNtPVQnbV0@w5J8YLRbvq<-nU%FcfZKU&zlG=n`NxlS5~3KWDSzfH9xK z=B-FFNqI$t7n=-sQNdQR%U8xB{(fiw>4|O9b6*Cg?80x`w*Vs&FPQKK2G&sm9(T*Y zh^@nZKMX3sz{q%T+zCwFHRFL_7cj4x@zBNRlET1Lft6P)%D_xPEu@c|D!}-l6eG~a zsK69qAz21FfCPx#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_5D*YBICvl^I9Mofm{_<_XsC#w*bsow z`1tq`xbP52sIaiGKuDmd$mjq706Cx7Gynhq32;bRa{vGi!vFvd!vV){sAK>D0su)w zK~zY`?US*N+b|4IZ?vlR%OA34mM92bh&I9$@Mha?nlm|5P20Fm`DQ+Tb4^YmJ^8ip{>vJwg_r6J} znA=jMe3j?}i^^c*l@H7!Vt-xX!3X9V;loZnk*?98LX~=L{x>0n_ya_gTfRg14GaJP N002ovPDHLkV1lBd9F+h7 diff --git a/graphics/pokemon/alolan_persian/front.png b/graphics/pokemon/alolan_persian/front.png deleted file mode 100644 index 83bfb2dc44e77158c5375e04a075775012303ef4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 715 zcmV;+0yO=JP)Px#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_5D*YRKu{nkI6zQXV0eINaFCd&un>UI z`1tq`xbP52sIaiGSXgklz|a5y06MelqW}N^32;bRa{vGi!vFvd!vV){sAK>D0whU9 zK~zY`)s;bx(=Zf<Jkk2&+=0zAx|p-}AFm{YQ(frYGlRV7=SK_hL9^YtP^iaLhuLA%g7Jv_Ui|`wZ3Z$X%_yu8YE18F7 zRRdptMqsFi9B8EizI~6ts0t<+@Nob6*MkP68gh+#%ax{}*7qdQ$V`Kc62Bwx2U1Gp z8m+~%0L=4`;KCF<2z-iw1FTtXGN6{qJMO%tBB-ETf>FeI_#j{{pI(|L;tFa+AKEaD zRISj@a|mjXBnR-5Md}>pDVTc#s0MG32I>HhS1H`lz?6XYMqUF<*sx4<0z8s(BGGp< zU`Xm^ToQ5uNHGJV#>qJipeX@vb5U#)Ab4;W=ZvR4Z$o@uS_Z_4o3$@3(`CT*WCg%q z^*06V5rA9*XtPJmh#Ez}pNTr{Q||&Wo{gqJCDa*+MwL&2?g)&si|?xR{0L(S7{)Mc zLr^d|Kt2bB2}l*F5yC1Og18#myBsj$0x+AMK>CaBnQ6;Ro*-8g2k?-ONOuD3@_g2 xq7%ybW@Wo#1@UtxC`OO+_u$AZ$Nu4}s=p4l=}J9i*t`G$002ovPDHLkV1kXNG^PLm diff --git a/graphics/pokemon/alolan_persian/icon.png b/graphics/pokemon/alolan_persian/icon.png deleted file mode 100644 index 75348250d540167e73e477483b4a6d22335e1b28..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 456 zcmeAS@N?(olHy`uVBq!ia0vp^3P9|@!VDxk7i7!@QtTz3zOL+#x%ov+)XS@mo&gGp zm$*ih1m~xflqVLYGPwJ=0F6;7OD$3`)-x$=UGfm9grlUu&mAaZ3}iESHE7BMDVB6c zUq=Rpjs4tz5?O(Kg8-ip*Q7bk)z#H|_ip+B|9^4u*(GbfZE22rceMNH8qIItG`}SU zO{qS6bjjJhnsbtpq8uF^U%G6G2kK=^@^*J&=wOxg0CL`Vx;TbZ%(*(rk?)X#fa^|1 zzq`(V^n9~=3R4$N|F9%)Z_gKoEngU9R~lUji=Cyh`djJ`gTukEu1|Z$nPI3VRd=z6 zQH$}{zl+ln=Q^yI`bc6GYe`sUS17ZAOoo{D+7yumYeU}zX>7MXV{WSa_Ci{H)ZB** zJKf8VJZ;#-WV$k`^D!g0^Asmbx3CX-%vZ%2PFNcG<}okb?o+hx)uVbJo+-OOm;Slv zX7tPNSN3NE{%b#3W;SFWdysnQ|JHjPMtKHYo8~cGnXH>SVdZl1$4ZUu27lEm@2uxa v4nCTmc%)yaXEulNkBPx#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_kXR`Aut*RP5ZH(ykXRsaC@4@UAgE|S zh)6gPK!Eu8_!w}=fM{6g*suTq0C!r~V*mgE32;bRa{vGi!vFvd!vV){sAK>D0sBcr zK~zY`)swMG13?gmHv~*2cyYx#t6&k3r~$E1++#6yiX*KcMC?@5B!!KFUa!R4!aPLU zV4lHNLeiwpJ%h7%7j@>iwbg;ZhX1?&pP9X5f36(o(5mNzkV`gTTL@9I5!=eO6IB%v z*?l-lsn(T{nLu8tn%5|b%#a)hz*`k1OA~U%^Da{sa=swQxc0n;P^33#UGl^NGU`Q~ z0sDhmcfKu1MimT9@wr9aA%NMA@mPv2F1RY9Cb&`&5Kp(|z<-IFF#C%MuxP@%CC31` zLdZJ&O6)WMfJ+RRJ5mA=Ay$KXICF?NrWO(sT+#7kfXfGJAzfFv8#;23j*>pMFweju zI$8%X1613`7RwScN(um7O#p0RLL6QLT|XJUrUL?)KGl%{^bH(L)*}LPCc2|zq8S}( zEVYXSNXk8DWDs?R0D%Fv!;druDi~nPyBK(;04rcX{|3BJoh@MCDFvMU2H-X5W41W9 z0+q#4|J?#~3!{E{n%P75wAC(`hf~XxzV8k~8xZ(+!?0ojwEw(0Lrr#G!!R8GL^g4c z`(accKLC6i2O%ZakX}giaQ3|_1mx$ymj$_uG(g^mTN2Sd!8+TUV7*CSs69P4^4APg zq8G?zr+_@s^;-&8>Bvq|67cG0wFW16=H>RlK=n!07*qo IM6N<$g077di~s-t diff --git a/graphics/pokemon/alolan_raichu/front.png b/graphics/pokemon/alolan_raichu/front.png deleted file mode 100644 index 20c88523f6fc66cf3d1ab747d45008355cc8df0d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 890 zcmV-=1BLvFP)Px#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_U|=Bl@IVj{5a_rNkXRs?I3Qps5a5U? zuvj1vK!Eu8_!w}=fM{6g*suTq0B6}Dga7~l32;bRa{vGi!vFvd!vV){sAK>D0@F!E zK~zY`eU&j!+dve@FS@}~CF0}@j+uCSC{sn}>f z4=gt3vbq64joG`s~Lcx6;J>iorI0V zYY_mpOrqcKOTZ!RBCtqM&u5JFZDRxxgE&%Wtd59dZ~%b&e58QSl-5i-fcxh{K0P1S zFfiM@p91)H!467v>(eg*T!=@z1Q@>fxWi5#mjbUC+hJcALu{`ESYRLg5qpmo4oU%O z{{dKRhy~#0%9P|NA$TwyuNUN-D~l^)$oWYaw(>3>H78g5Jh3-T6A*si<)bK)4tR6C zk*@_LaajvozoLau~))9qGUQ(qfSUoZ zbQY;XiMtA5+XQfZSG?`Y2BDg7Hw7T?C!YhyR04J*5Ac^5Ka~+&2~3qU$XgQ6 zfJ(qt0G!o9N$g#Bg;MG`8h{>YRE62o+wl61UN5=}c|6ix3tu}74dgRmp_)UaH}T2CD)Cmn)v zmLIJ+4%DkBdJhx~itoQO)8~N6s)_E@jDOEcRc|jD2(Fe(y17b1*h~iC9~uR9b261- Q6951J07*qoM6N<$f_3b7BLDyZ diff --git a/graphics/pokemon/alolan_raichu/icon.png b/graphics/pokemon/alolan_raichu/icon.png deleted file mode 100644 index d005cf7e1de3978f2cf02d9ec165b6031cc2ce1c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 577 zcmV-H0>1r;P)y}h*m|NnDy&7`dM zw1Zmi#f!zPDfad$_F__$d(Fk9&Alm{Vq#iBK|$$6v|j)K00Cl4M??UK1szBL00Cu5 zL_t(|oW+x|Zi7G!hVKnL^ik;0iMdlBmCPKp$9OWdRC zfpb&0dI5jj@3VgyrT!M+65xjvoDzjSCZL*5uoED>vlTke3|4|0qOW@)K{U3n7cfph zDkjjM?i7e5ngxUJ&xlS+KKe=m(0HhD8&h_d^BZ=!kDnD>&IMtqe>LF&w_S#MwEzXX zhg=sfNS_Rc~iUcx^J$n_+Q;N9w5ESUdLyqsj7K%yugMGX}KSaO(v%STN#oE!VehYB#q@HpO!WK{bPIs3#0J{zwN-c P00000NkvXXu0mjfmB{hb diff --git a/graphics/pokemon/alolan_raichu/normal.pal b/graphics/pokemon/alolan_raichu/normal.pal deleted file mode 100644 index 54ce683465..0000000000 --- a/graphics/pokemon/alolan_raichu/normal.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -152 208 160 -96 96 32 -248 240 64 -16 16 16 -232 184 16 -144 88 32 -152 56 32 -96 40 16 -224 136 40 -176 88 32 -16 64 128 -248 248 248 -24 112 200 -128 104 88 -232 216 176 -0 0 0 diff --git a/graphics/pokemon/alolan_raichu/shiny.pal b/graphics/pokemon/alolan_raichu/shiny.pal deleted file mode 100644 index 97f9a0451b..0000000000 --- a/graphics/pokemon/alolan_raichu/shiny.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -152 208 160 -144 88 40 -248 176 72 -16 16 16 -216 136 32 -144 88 32 -112 40 40 -80 40 32 -168 104 64 -136 72 56 -16 64 128 -248 248 248 -24 112 200 -128 104 88 -232 216 176 -0 0 0 diff --git a/graphics/pokemon/alolan_raticate/back.png b/graphics/pokemon/alolan_raticate/back.png deleted file mode 100644 index 7ea9895e56ac95bf1c5bf77f312f84c880a8de3c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 685 zcmV;e0#f~nP)Px#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_U?3UfU~phin1E=AI7o0D0tQJ$ zK~zY`?UX;Sn=ll`4MS14m`JYPMuud9;IO*2y zT_wTc{(R2CwqPIi-zq*a{%@eXUr%lr@l)96X`_nrPW`jY_8m@lucelvQ8@Z^mf!bN zuTr64BqS9MakL7w1jzD^vs{%dl2R`~GT3msk;>1v5@)GZ>Iraw*5%rlrNsY>MEBGF z78*606{t4g^XviDR1U!3v+b+X7J=nLiwZR=`bZL}y~E%gup}{BQi3BO@Rps3&4vVg zgk+=$vC_UO|2+aiA8T=NfDiFEkhE(AmIi&DCEYJ{n9NIuZo(AFY!#xQuk^QkdQe6S z2o(sV<6yEiV;(xZjYDr0I

b0|_;bIiN&O3Zf1}%u|+Ut3|PeTk40M&*GVY*!8em zZy_jSY$yW>)YM(I-X63-l))`St<%dMcqafx@DA83R4!KFOXdMwD1Y;U*IiuZ0Ne{N zunR~)OMvO7-{DTX5G{qo=ZxKX3jmux2Efa609w0-J%+&ZXn_NyfKI~A;3cO;JOU=S z9=9GnVvaz4a8NmI7KWGyOsR|Gsq}{$0hn9uR_Pg#^Z;gTH9tBm0K0)f<~@AMbb0@P z)o8=jTwXwUA^#QF*bLL%LOxJ8o(e-+`Q7-N3`bzF$s TTA5~u00000NkvXXu0mjflZ+?e diff --git a/graphics/pokemon/alolan_raticate/front.png b/graphics/pokemon/alolan_raticate/front.png deleted file mode 100644 index 509c47662da78d5c350a99e5c6a89f7e56d6aa32..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 821 zcmV-51Iqk~P)Px#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_C@3Hh5D-vUP;f{{m|$2yKsab%VCdM$ zxS*KOC@}c=_^`0JSSTm}000000Mkd&W&i*H32;bRa{vGi!vFvd!vV){sAK>D0**;U zK~zY`?UXTdn=ll|F$-%jNv`cgMH-vyMATz%4|nU(oYlR!r5STxBvyv#X=MSeUGo8Q zxp?kJ=+^JjCmC>TaveM6Z{OMG|KtCjo{*hq{a^Xr=Onbh{1Fh@OVde!z{IB)BfzCc z=v)NUKbi!ThGQT|oJo+-DGd=C2RQEg#N3H`P5tZ%AX+9{p9V>mQ8ETt=hM~kf<4iM z`#D|Fl_fI9=yc!Zm=Ijuq}2CmT6{;q1aLk8bMCk)sPxtCCcRQ`IzYfcxa!&f#qHZ) zS5Pzd#SY37>UxN1#1ANMesTd#WB}Wv*UHZKxI#ck4vKTm*s7a@fG)xXAzASMNE4YxLL9QcQ>1pol*Kh@t5BDad1ssN7baN6z6RK642LwDU)w!T{cs<^h)(C*ha%0ly$^s}qA-FK)Hgs9+TQy?;rAwviC&Xp zl|W<@keI7#0OC5oEaG~(N?xe70dU%+g?a~^e`6nWvZQk%Rb&zfX{8=o@JR5EEzNr_ zxWri%xo)&B2Y{>NcZ@AqwjjJI4dA~-U_As#d6F4m!5A*M#uhN5d{m*Dofs3fyo_~( zei7?(*P<7CHS6_(7=MZd9v?54^nUiKu$q#C<9B9DEVJy-Z{z3Aq1pD{wl1DO z3Dwv~Z8t{DUy}h*m|NnDy&7`dM zw1Zmi#f!zPDfad$_F__$d(Fk9&Alm{Vq#iBK|$$6v|j)K00Cl4M??UK1szBL00ACJ zL_t(|oYj)CZp0uAhVuppbw8fr#Bkg3ELA1OM%4}3%ER2FRqAM5A;E_0Bo16MRqE2R zApiU}*nGqArxzY#6_3IzBAXO;fsEnJNr*$$+8_;SwJ4{wKIy1YEcBAj=HsNzpu!@Q zn|(`n%Fn1Qt|?#cO4f~hwg~C$?8UmQQL4^@CGylA#@d@BXf01bx)7^Z=N w5rKh;7q-OE#*rg2QninT`5>U(cmIZuZ`udcEWoWO=>Px#07*qoM6N<$f|dc(O8@`> diff --git a/graphics/pokemon/alolan_raticate/normal.pal b/graphics/pokemon/alolan_raticate/normal.pal deleted file mode 100644 index 4f5d144e3b..0000000000 --- a/graphics/pokemon/alolan_raticate/normal.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -152 208 160 -40 40 32 -16 16 16 -80 88 80 -112 72 72 -152 96 88 -64 64 56 -104 96 96 -232 216 200 -184 160 152 -208 40 48 -248 248 248 -176 176 184 -88 40 40 -0 0 0 -0 0 0 diff --git a/graphics/pokemon/alolan_raticate/shiny.pal b/graphics/pokemon/alolan_raticate/shiny.pal deleted file mode 100644 index 02504c2696..0000000000 --- a/graphics/pokemon/alolan_raticate/shiny.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -152 208 160 -96 32 40 -16 16 16 -184 80 96 -112 96 80 -152 128 104 -136 56 72 -112 88 88 -232 216 200 -184 152 144 -208 40 48 -248 248 248 -176 176 184 -88 40 40 -0 0 0 -0 0 0 diff --git a/graphics/pokemon/alolan_rattata/back.png b/graphics/pokemon/alolan_rattata/back.png deleted file mode 100644 index 3ad8eb28f28a562bd646a22cb12b1a459d8c02ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 667 zcmV;M0%ZM(P)Px#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_U?3>KP*@NU5QsQPaDb4IsG#uh@VE#F zuwYowpqSt|IEXkf00000000000E$GD0rW{k zK~zY`?UcQ4+%OEsZRo}hqR&f!EXVi(?321zHkWLDn?B10d4U*thyyYNE%Hz$^pLQRaFnvTfra~O!Il{nb)+mv}AJS_i)C_i@_;0&H(ph0$#qb-2C zf(Hhi_wNC~Q;iyI38CXH|iac_FH4t1TkF6^V6XjxktGkgN16|hB-qp|Fi)NE*Wc`Ric35}I1 zH8@MBJe856hQ15kqV}1EWk&8#I1B&#zG<^iryba(ekW0tc91 z%~~Gqb8&L`X%Z6d=9iBpO+On6=x7ive3~!UDi0x803?KT@aHuTp&4uZ1w+K+c4Ymx z1&|OJ%=P)Px#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_FgP$^XkZW!5J*T!aDb4IsG#uh@VE#F zxR`j@$e`djIDlwK00000000000PeFy0RR9132;bRa{vGi!vFvd!vV){sAK>D0hmcd zK~zY`?US)i!!QtrV?}Hk8aD&#=8G3Lx5v_MxCYd{s51k+KnHjSCMZj?p-i@T3Dk+G z55+l!0mbf$g!&JOlK<1)`OhUe>YpnAbqk0qe`V!ifaOsj2XAo@u^wDQp68$;Rw7*% z075Qd5Cd)jKwsYIL3Bt0;Ob7Rh|iz{?hgXONCJk64ZTke|$f!vXl2V_4jHbf4iA3*aSz{}MdgmcY)+&+M6wMKMy z{0#(-ak9>KAB7qE$VvzWfrT+fdke=QAP4zMezy*+5A1dTXO;qp0I74ZAfN&+$z#2s zwoSX4)|QYx&|AB$YE@R-+KS5fsCvLI*(RB@&W_xM9(i!>G79>wZG8tB+^Qh~&1^>A zWFGQa=_??0M-wc-{KtF-foOsS=o3wyozUKzxrzYus+xdAjO;y^29bc+Z;=!RDRM9| zpt9X)=ZgrCy|+HXWZESeP&#W=$GOi)iL`s4H8YG(xyRDvsJ~E>d;#ZUYADJ#puPYA N002ovPDHLkV1hB?>TCc2 diff --git a/graphics/pokemon/alolan_rattata/icon.png b/graphics/pokemon/alolan_rattata/icon.png deleted file mode 100644 index b13e1e9bb949831a00fdca3ca756bc14cd5b1f55..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 448 zcmeAS@N?(olHy`uVBq!ia0vp^3P9|@!VDxk7i7!@QtTz3zOL+#x%ovcjn;FzNd`E_n!4!ckJ-=MI!H2C^Bv8Z_mB6id3J zuOkD)#(wTUiL5}rL4Z$)Yto$N>gwvfd$;`m|G&8S?2iR*vG8M*XcV@`~F}iM}vuzd1Q@DR;y~C-%fNcAk*v9KqJU<@wPw($BchH@MrGzM(~Ts_2e{ z6T(wE_#ZXttPN*+>{PIDYJw#%!vW1HF|7Ixwf445=kG8Ieel1dc6}k=&0CiifA#69 zNM>!5JER(_eQL_{r%x9$PS(7=naAJn+OblG?^pSw7tN8oeCtvv)0DH*=h<^P&-yLu z7I9L~r>*XcUXRWi)!7ENH(C|1A5iSsvaH>JHze^^zWgDR##IJfe2G@}T?P}aFLxUp l?f0DV+lnjr&xildk4yWwOzF+3I}Zw622WQ%mvv4FO#mS}u7dyo diff --git a/graphics/pokemon/alolan_rattata/normal.pal b/graphics/pokemon/alolan_rattata/normal.pal deleted file mode 100644 index 59134847f1..0000000000 --- a/graphics/pokemon/alolan_rattata/normal.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -152 208 160 -48 56 48 -96 104 96 -16 16 16 -72 72 72 -112 128 144 -144 168 160 -240 240 240 -184 8 8 -184 152 120 -216 200 160 -224 56 56 -128 104 72 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/pokemon/alolan_rattata/shiny.pal b/graphics/pokemon/alolan_rattata/shiny.pal deleted file mode 100644 index 07115520ab..0000000000 --- a/graphics/pokemon/alolan_rattata/shiny.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -152 208 160 -96 32 40 -192 80 88 -16 16 16 -136 56 72 -112 128 144 -144 168 160 -240 240 240 -184 8 8 -176 96 88 -208 160 152 -224 56 56 -136 56 48 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/pokemon/alolan_sandshrew/back.png b/graphics/pokemon/alolan_sandshrew/back.png deleted file mode 100644 index 1e09ba38b6cdb50aeb0f5fd378ed8b8b9d2007cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 649 zcmV;40(Sk0P)Px#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_P>7f?NO1W0_^{aEfUw9A5D*YJcoD0pdwS zK~zY`?UOx@+b|G?WfiJJLUfTTB19uVO8Wxwjt(${o@?8I1mqU!bC0Ch8|+>#L((Rd z#OecN2arH;KEC-Qt2g_v&AzK@YwfDPfmSWi&}q8{C>jXr*wXniz(l0Rp{HR5XrB%w zG5Wzj25Qn&?qca6rW`zsFS5t7lpZ;Tb^>hk?j{4a zmjFlWgn*kf(BA{1GGO4ka{_#TtPZ5^vV>eObE-2C{}RPzU}D3VOA!Kii^YYQMAGn_i-2O8HX{R9 z+4fSG3&K&SiyPZghFAyQI-LL;B2DFCG%iM$#BU+G@SAg)v5BE{u!}LgTuSKE;$2+D zC8>p@LHqPx#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_P>7f?NO1W0_^{aEfUw9A5D*YJc!+pl zD0s-wz>xU(sOaFZ$k5mT0000001^V|xBvhE32;bRa{vGi!vFvd!vV){sAK>D0kBC# zK~zY`?b5MM!!QsAU@Jp*OL6x^X@w9Q1-cf_Wj6Q%BQ1$R6(buX0#z_0W)=pkI|ED% z49E|_!n<%uCmOpu61QadKb>=#j|X6z6r2GMClfyhH#Uzd)No5wLA%ciQ=3~ z2?s&I>jII5Kq@3io(zi+=J7=g8Kwfcd zf&7?&qd|0EVE diff --git a/graphics/pokemon/alolan_sandshrew/icon.png b/graphics/pokemon/alolan_sandshrew/icon.png deleted file mode 100644 index a1cc049bdb95d2e5cbaf2f4ef86a14cd92be2b8b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 425 zcmeAS@N?(olHy`uVBq!ia0vp^3P9|@!VDxk7i7!@QtTz3zOL+#x%ovc1d@yN&jW?T zOI#yLg7ec#$`gxH8QgtbfW|14r4}g|>zNd`E_n!4!ckJ-=MI!H2C^Bv8Z_mB6id3J zuOkD)#(wTUiL5}rL4Z$)Yto$N=H}wPd-wkT|9|fi$8X;>uO>Nuo1)oW{Xfa;?7QMQ z|Fua(-_QN_*f=+>oIhutrUnd*~tCk z-@>~mN}uY!FJ4~QGxy~EVwqDfXPn`Cu+Y=3`X`gZOdlIv%h2VwFWBYnx;IaCH$!FJ z;{E5;TOWGq^gOwro@mCV!}I&lp&cun1=tqzInFr3|7qs2hmYF-uanQ0>zKN7^RvF2 QK#wtay85}Sb4q9e09ui)Jpcdz diff --git a/graphics/pokemon/alolan_sandshrew/normal.pal b/graphics/pokemon/alolan_sandshrew/normal.pal deleted file mode 100644 index 234fd3acec..0000000000 --- a/graphics/pokemon/alolan_sandshrew/normal.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -152 208 160 -80 136 152 -48 72 112 -248 248 248 -176 216 224 -128 176 200 -16 16 16 -16 56 120 -136 120 96 -40 120 200 -208 192 144 -248 248 168 -232 224 176 -200 208 216 -0 0 0 -0 0 0 diff --git a/graphics/pokemon/alolan_sandshrew/shiny.pal b/graphics/pokemon/alolan_sandshrew/shiny.pal deleted file mode 100644 index 6aaf4d2254..0000000000 --- a/graphics/pokemon/alolan_sandshrew/shiny.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -152 208 160 -80 136 152 -48 72 112 -248 248 248 -176 216 224 -128 176 200 -16 16 16 -16 56 120 -24 80 152 -40 120 200 -56 128 224 -136 184 232 -104 160 232 -200 208 216 -0 0 0 -0 0 0 diff --git a/graphics/pokemon/alolan_sandslash/back.png b/graphics/pokemon/alolan_sandslash/back.png deleted file mode 100644 index c64d6953600ea700edd42ee0c6c29d251c21f8aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 940 zcmV;d15^BoP)Px#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_I7o015D=*7@bK{Xc*yWLaEMT_$T*0w zIBD0|iM$ zK~zY`-IKp>+CUV?9S@y3i#RA^2p5^4C`)k=S&2}lF2y-HV@aD+6|p21I*+xh#-}R( zL=fuW|H4aDMfXSby*r!YijqAifr0no{rG<0S#Rp>kXHcPe}%AvfPC6Yc!SGnV=EA_ z%h5K%4hKNETL2af7`xcgsuxCc#)AJ7Bow~bM%YYG#6tiHsPSB@VF##y?}Z3JkuKD5>itD$Ai;!5bJ7Q;+MQa8Fq7FGxhVljPt=Up zME5{})StFWpba(XUu$;=aj&FE12!UGF`g&{zRapd?SX#*jPM3HZUs1WR?YhEGwceC zNdkNlEyPRyL{EyUfaeQX7S<0Vc=|xJpL00BjNmp4`r%n7AO>zo!Ge}_ZxP6sjnX9H zfjWSYI64F3z5G}L2c-xSrvwe}!z_|=KKa3ZY9Kd&MX%COY9BoGJ7XT*?_-6@CGyCm$VkQZ2VW^4_F9^ z0{n7Ziz5-IbT9IU(1w`wB!wOqYjIrJ-JmbCXow5fr+j}w$a)xDfNR&o|APp3oL|q> zGx=5lhyGCL&R|(G_%!cM@m{E8wG86>P;ZfAmMQDHN}r-4C=gobjsb`&&+2MWp{vWJ zr#HH7!qZ1}P&&b=PLL1>38zYss8q*yLlFa!fF(h{C(~=L!{kvpsaXabp$lOUlJ#kq zyR$Mu@uJ(*Lc1UY)Dg_(yvIv|jvJ*FX-7ASMgwsDz&Y@F(+ O0000Px#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_I7o015D=*7@bK{Pc*yWrn7~l5$T*0w zP^ieLsKB_m(5UF}00000000000K2)t`2YX_32;bRa{vGi!vFvd!vV){sAK>D11CvD zK~zY`mDIm;+AtIcaEqb6Zj}Z3;mKBrL&$^`$T1S!4s4in$qKo8&v6`HX^yip#+fvR z^U%}SHUC_nYy(c}hE{{&PM`bg=}ETspF`g>kDNV#>;dS@9#9>5?+3JVfXs3b`0a64 zN;&xO-EaG!RRAjo$e+!9GcBbY)W#V=?Y3DSu((<%P#gKBU@^`B8n??qExcbSP>Zh8 zQvY0mFE{{nGh2Ks3n1et0xGaKSb_8TDg0yr7b_)Z?S_W{ z?sS!-0Djd@ayI8M!JJ=5+d|Ci#vIRE29C<#(FssB9kU|fjVs_i$UU7vjaF@&mL0Z?V%_az}pw1Pi^Df*B zd%`Bh^>z~{89=Rc{;Mi5z*WOF3*b@Ri43F_+LOdcHURZ9KnlPyWG~rVCp5t6Ye-l% zUjYV{J=w!qr_i9e&Ng!apqBx=nHbkWFwH@_8WQo#%ge8HzLNv92r5Ec08lk_0(+Vm zc95S%GXvVWh(SQ3JHa%VCi;ZtRT}HG2CZ@|bV}_2#x!WI>GsX3(3B!7RKF?;P>WLS z%|KXW{ZJ8Q-$~>7I6E^d-`(4QXX9DKW|}Z54KSqC)r6{{EP+Z&vv&LiR5n#t4%nm& w?4%5&`7TJR?*pw~Uu%27`vJRh|7mF2Z~ELS_<|1r*8l(j07*qoM6N<$g3yh*0RR91 diff --git a/graphics/pokemon/alolan_sandslash/icon.png b/graphics/pokemon/alolan_sandslash/icon.png deleted file mode 100644 index 88cea6049b4e046380e320f632546c7f4e11b2e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 524 zcmV+n0`vWeP)$v%KlI4cR<@%45ScfHa?yU$}%@akbHQ7$yub_rbeAdD=w zLQOmyo!fkwzh8cY{AytB=5Xfc`p^lzmh&CbzaD z#WI#k+L@${qF4znnSJJ5W8(=flrkPPiyFL}U6!kSybP`a0*mrmiM$vqAP7kJTKYW`l+a;p`9K)F!P0m6AOlj4i4fkpd;sE4e0%`zBOLq01{7Za O0000Px#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_h-iqgn7H83=$L4L`1tq`5D?hN;COJj zh@jv|FlcyKpm1oon1Hwd000000D&0_XaE2J32;bRa{vGi!vFvd!vV){sAK>D0pCeP zK~zY`?UXTZt3V9LL8_R0hmx+bk=TQ!&K+p-1$vJ)Ii)Z^iR8ZivyUV|<22*zPz$2K z|97^Jvz`3f|FslX-|LpDZ;70U*0{UxfOYcpdQZotILN8mJ=Jg8`r@^qN}$6w?9>F- z7SR?23wH-Vk7BHAK*o|49hwmOHyw!f5<)m74}i^$T-O^r=)k&?Lgzk)46$RqSAgIK z06IN|jNgLnqYP>a0)&JuPm33wv-f-Dan3yWrcPL?c|TK^CwMpy2g7kE2V+yBPmSTI1z-2J>+pp6j^_S5U2ZO};Qn5<_go^{N gwxEuWpJ_?*4^rRWe^G`j9smFU07*qoM6N<$f{xu9dH?_b diff --git a/graphics/pokemon/alolan_vulpix/front.png b/graphics/pokemon/alolan_vulpix/front.png deleted file mode 100644 index 0f138a6841bf25423863f9b7900453699a0a3f0b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 673 zcmV;S0$%-zP)Px#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_U~rhIu+ZS>@Mvg&`1tq`5D>t~=vauT zaKP9=P;hW~xKMbYkeJ8-0000009`>+%>V!Z32;bRa{vGi!vFvd!vV){sAK>D0s2Wq zK~zY`?UX%k+dvS7*MP7{DUwKf?n+KAPVBTQNJ*_>4{0YbK$8|}mH|RBCvd0>7$%T1 zo!c}ia)Y!fa+}Q3KR~#<0s^G;Q@I~z-n`+6J?o$4IJ@8XWU!m?f}O;iIUr$XB}TCW z0w4%d8*l`qK*GKS;2%8bb!Y?J**##Zum@z3Gzr7`4nR&K{B&(@;RzxpQPQ>+z=Z$; zJXv+OW`JEdFU1s>ad%soffDg+lwjPo=BNt9ckjPpa%Hpd6Y=i+JH{(2;28GKYs4Sj zZ^YArIT8X586o0%_X}~M5&`griyu*iUa2Yo6nilKn}|gJ9y2aI1sojv0~6D!0yZoM zPe=&}vw@3C0+J@>x$uQhd-I2LTsBQZ1!f8mYLKx;EEOPJdUxsTgRzzcl?a7;rW%GG zJ&=Tpq6g%G=8}z?K8&PLT~ruDVEK?$lHCKo4Zv6k-vgnI@dPB9?@B#v7Cr6*FZwA! z2Of#c46Ks~v8Er*p|aLmlt?ZjjA$ddDxi(Y@go88vT4$chBPFJCp9kekOJp)B%Z#D znoP{gH?Nz0P99z{O>0~eu*qqu85|nUqr?&y<%ZWA#tYN=RCR@`&)57cW=8RC(Y>Y1 zdePljfVS$sT(zkcU`4gP;RUO#z=O4FYx^sF!q~I^zZm-iQ=g!PsuUBR00000NkvXX Hu0mjf*e4w; diff --git a/graphics/pokemon/alolan_vulpix/icon.png b/graphics/pokemon/alolan_vulpix/icon.png deleted file mode 100644 index f49562751b543e16fe7f4ab6e16e9c39cd406b7a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 487 zcmeAS@N?(olHy`uVBq!ia0vp^3P9|@!VDxk7i7!@QtTz3zOL+#x%oxSRX0U`R|X1+ zm$*ih1m~xflqVLYGPwJ=0F6;7OD$3`)-x$=UGfm9grlUu&mAaZ3}iESHE7BMDVB6c zUq=Rpjs4tz5?O(Kg8-ip*Q7bk)z#H|_ip+B|9^4u*(GbfZE22rceMNH8qIItG`}SU zO{qS6bjjJhnsbtpq8uF^U%G6G2kK=^@^*J&=wOxg0J6C~T^vIy=G>j+*mYPzq-}3w zxyLu&FX>@Uwk7#Xcj>=#L}naUEy+tav2DEmw0k(I9Q484x!m$~c(&m^_{kb5=F z=|_j;vnP`|98NXwzgafP=*U&(lP{-9T6}Xj`eJ3wLX8XIH`Ax@JF@u1zBA5E=MElh zF1|Nq`AsEd3BBF(Y|9%y#)jKx{MF()pCQl|9kN>9QG(lKwY&RsUCGM ziEQ!ek7jC|@h#VCRY}a++oaMXe0GY_B7-x_qQeq1q8w)k)jn&F{=elF{r5}E*VhQBQU diff --git a/graphics/pokemon/alolan_vulpix/normal.pal b/graphics/pokemon/alolan_vulpix/normal.pal deleted file mode 100644 index 728db562eb..0000000000 --- a/graphics/pokemon/alolan_vulpix/normal.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -152 208 160 -96 112 152 -168 176 208 -224 232 240 -104 104 128 -248 248 248 -16 16 16 -192 200 232 -88 136 168 -112 192 216 -64 80 112 -112 120 184 -80 120 160 -144 152 200 -0 0 0 -0 0 0 diff --git a/graphics/pokemon/alolan_vulpix/shiny.pal b/graphics/pokemon/alolan_vulpix/shiny.pal deleted file mode 100644 index d22bf6e220..0000000000 --- a/graphics/pokemon/alolan_vulpix/shiny.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -152 208 160 -136 104 136 -176 152 184 -224 208 232 -152 104 128 -248 248 248 -16 16 16 -216 200 224 -120 112 184 -136 160 224 -72 48 104 -120 88 160 -112 104 184 -152 128 184 -0 0 0 -0 0 0 diff --git a/graphics/pokemon/gmax_appletun/back.png b/graphics/pokemon/appletun/gmax/back.png similarity index 100% rename from graphics/pokemon/gmax_appletun/back.png rename to graphics/pokemon/appletun/gmax/back.png diff --git a/graphics/pokemon/gmax_appletun/front.png b/graphics/pokemon/appletun/gmax/front.png similarity index 100% rename from graphics/pokemon/gmax_appletun/front.png rename to graphics/pokemon/appletun/gmax/front.png diff --git a/graphics/pokemon/gmax_appletun/icon.png b/graphics/pokemon/appletun/gmax/icon.png similarity index 100% rename from graphics/pokemon/gmax_appletun/icon.png rename to graphics/pokemon/appletun/gmax/icon.png diff --git a/graphics/pokemon/gmax_appletun/normal.pal b/graphics/pokemon/appletun/gmax/normal.pal similarity index 100% rename from graphics/pokemon/gmax_appletun/normal.pal rename to graphics/pokemon/appletun/gmax/normal.pal diff --git a/graphics/pokemon/gmax_appletun/shiny.pal b/graphics/pokemon/appletun/gmax/shiny.pal similarity index 100% rename from graphics/pokemon/gmax_appletun/shiny.pal rename to graphics/pokemon/appletun/gmax/shiny.pal diff --git a/graphics/pokemon/gmax_blastoise/back.png b/graphics/pokemon/blastoise/gmax/back.png similarity index 100% rename from graphics/pokemon/gmax_blastoise/back.png rename to graphics/pokemon/blastoise/gmax/back.png diff --git a/graphics/pokemon/gmax_blastoise/front.png b/graphics/pokemon/blastoise/gmax/front.png similarity index 100% rename from graphics/pokemon/gmax_blastoise/front.png rename to graphics/pokemon/blastoise/gmax/front.png diff --git a/graphics/pokemon/gmax_blastoise/icon.png b/graphics/pokemon/blastoise/gmax/icon.png similarity index 100% rename from graphics/pokemon/gmax_blastoise/icon.png rename to graphics/pokemon/blastoise/gmax/icon.png diff --git a/graphics/pokemon/gmax_blastoise/normal.pal b/graphics/pokemon/blastoise/gmax/normal.pal similarity index 100% rename from graphics/pokemon/gmax_blastoise/normal.pal rename to graphics/pokemon/blastoise/gmax/normal.pal diff --git a/graphics/pokemon/gmax_blastoise/shiny.pal b/graphics/pokemon/blastoise/gmax/shiny.pal similarity index 100% rename from graphics/pokemon/gmax_blastoise/shiny.pal rename to graphics/pokemon/blastoise/gmax/shiny.pal diff --git a/graphics/pokemon/gmax_butterfree/back.png b/graphics/pokemon/butterfree/gmax/back.png similarity index 100% rename from graphics/pokemon/gmax_butterfree/back.png rename to graphics/pokemon/butterfree/gmax/back.png diff --git a/graphics/pokemon/gmax_butterfree/front.png b/graphics/pokemon/butterfree/gmax/front.png similarity index 100% rename from graphics/pokemon/gmax_butterfree/front.png rename to graphics/pokemon/butterfree/gmax/front.png diff --git a/graphics/pokemon/gmax_butterfree/icon.png b/graphics/pokemon/butterfree/gmax/icon.png similarity index 100% rename from graphics/pokemon/gmax_butterfree/icon.png rename to graphics/pokemon/butterfree/gmax/icon.png diff --git a/graphics/pokemon/gmax_butterfree/normal.pal b/graphics/pokemon/butterfree/gmax/normal.pal similarity index 100% rename from graphics/pokemon/gmax_butterfree/normal.pal rename to graphics/pokemon/butterfree/gmax/normal.pal diff --git a/graphics/pokemon/gmax_butterfree/shiny.pal b/graphics/pokemon/butterfree/gmax/shiny.pal similarity index 100% rename from graphics/pokemon/gmax_butterfree/shiny.pal rename to graphics/pokemon/butterfree/gmax/shiny.pal diff --git a/graphics/pokemon/castform/anim_front.png b/graphics/pokemon/castform/anim_front.png deleted file mode 100644 index 39bfaf4266e50ef16a43b58634c1e69c3a56ece5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 382 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|eg8-ip*P}dvo42zAB^XPB{DK)Ap4~_Ta{hR_IEHw1zMZr& z>rjA5TmCnPY^JhT6NFz}QF`W~ZvOtAGsp3j9I~^nPo8vfW%KMOoLs(bKCKn&7ES*D zk@eHs|HuE&=f1wPk+J*Y;<@iDvYr{5r#Z*yzHL19KmR?)%R5G8_v(!wD=U4Qcca4X z)Mi%Wbsfca&00zq1HvLCRx2!WV>J8ryZb|Vv_($X`yzovrbETLpFZB^R7||HGN4>l zWRiYWMUX=Eo=VZ5Y?(U9P)0iX$Vw}gTe~DWM4fbyla- diff --git a/graphics/pokemon/castform/back.png b/graphics/pokemon/castform/back.png deleted file mode 100644 index 6348a35e8662a831b8b9856698c74a3519c452b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 373 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|eg8-ip*P}dvo42zAB^XPB{DK)Ap4~_Taz1;yIEHw1zMZ_6 zugO59H8Fj|gBMA&Ut~OxP#0pi{-xK~vv1a^Tjd`_zi@64sLLwi>g?uD&nnti^PTOM z!VKf|bN7?;9@j28pEhTQ{?`^|pHG@hk6R42pZv2ja^R{E4cvMCSI95X(tOT@hk_2~ zjD2#B{11+@zHlpOWzAaj&Qjno=j@3q7TOyqoMTIHZU|TzH&Ila>BO4w6OT?YT(w-H zqs4aOS|b0^$;`FO7Hgru>s9&Yr zviADaPkXwnxD{KjF0pgiV*R7R+(dvo42zAB^XPB{DK)Ap4~_Ta{hR_IEHw1zMZr& z>rjA5TmCnPY^JhT6NFz}QF`W~ZvOtAGsp3j9I~^nPo8vfW%KMOoLs(bKCKn&7ES*D zk@eHs|HuE&=f1wPk+J*Y;<@iDvYr{5r#Z*yzHL19KmR?)%R5G8_v(!wD=U4Qcca4X z)Mi%Wbsfca&00zq1HvLCRx2!WV>J8ryZb|Vv_($X`yzovrbETLpFZB^R7||HGN4>l zWRiYWMUX=Eo=VZ5Y?(U9P)0iX$Vw}gTe~DWM4fbyla- diff --git a/graphics/pokemon/castform/normal.pal b/graphics/pokemon/castform/normal.pal deleted file mode 100644 index 3fe2b76928..0000000000 --- a/graphics/pokemon/castform/normal.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -197 197 148 -90 82 82 -205 189 189 -230 222 222 -246 246 238 -0 0 0 -255 255 255 -222 222 246 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -148 148 148 -74 82 74 -255 255 255 -24 24 24 diff --git a/graphics/pokemon/castform/shiny.pal b/graphics/pokemon/castform/shiny.pal deleted file mode 100644 index 2fa401dd6f..0000000000 --- a/graphics/pokemon/castform/shiny.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -197 197 148 -98 90 90 -205 164 189 -230 197 222 -255 222 255 -0 0 0 -255 246 65 -230 180 32 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -148 148 148 -74 82 74 -255 255 255 -24 24 24 diff --git a/graphics/pokemon/gmax_centiskorch/back.png b/graphics/pokemon/centiskorch/gmax/back.png similarity index 100% rename from graphics/pokemon/gmax_centiskorch/back.png rename to graphics/pokemon/centiskorch/gmax/back.png diff --git a/graphics/pokemon/gmax_centiskorch/front.png b/graphics/pokemon/centiskorch/gmax/front.png similarity index 100% rename from graphics/pokemon/gmax_centiskorch/front.png rename to graphics/pokemon/centiskorch/gmax/front.png diff --git a/graphics/pokemon/gmax_centiskorch/icon.png b/graphics/pokemon/centiskorch/gmax/icon.png similarity index 100% rename from graphics/pokemon/gmax_centiskorch/icon.png rename to graphics/pokemon/centiskorch/gmax/icon.png diff --git a/graphics/pokemon/gmax_centiskorch/normal.pal b/graphics/pokemon/centiskorch/gmax/normal.pal similarity index 100% rename from graphics/pokemon/gmax_centiskorch/normal.pal rename to graphics/pokemon/centiskorch/gmax/normal.pal diff --git a/graphics/pokemon/gmax_centiskorch/shiny.pal b/graphics/pokemon/centiskorch/gmax/shiny.pal similarity index 100% rename from graphics/pokemon/gmax_centiskorch/shiny.pal rename to graphics/pokemon/centiskorch/gmax/shiny.pal diff --git a/graphics/pokemon/gmax_charizard/back.png b/graphics/pokemon/charizard/gmax/back.png similarity index 100% rename from graphics/pokemon/gmax_charizard/back.png rename to graphics/pokemon/charizard/gmax/back.png diff --git a/graphics/pokemon/gmax_charizard/front.png b/graphics/pokemon/charizard/gmax/front.png similarity index 100% rename from graphics/pokemon/gmax_charizard/front.png rename to graphics/pokemon/charizard/gmax/front.png diff --git a/graphics/pokemon/gmax_charizard/icon.png b/graphics/pokemon/charizard/gmax/icon.png similarity index 100% rename from graphics/pokemon/gmax_charizard/icon.png rename to graphics/pokemon/charizard/gmax/icon.png diff --git a/graphics/pokemon/gmax_charizard/normal.pal b/graphics/pokemon/charizard/gmax/normal.pal similarity index 100% rename from graphics/pokemon/gmax_charizard/normal.pal rename to graphics/pokemon/charizard/gmax/normal.pal diff --git a/graphics/pokemon/gmax_charizard/shiny.pal b/graphics/pokemon/charizard/gmax/shiny.pal similarity index 100% rename from graphics/pokemon/gmax_charizard/shiny.pal rename to graphics/pokemon/charizard/gmax/shiny.pal diff --git a/graphics/pokemon/cherrim/anim_front.png b/graphics/pokemon/cherrim/anim_front.png deleted file mode 100644 index 8f6fb3d30f6a2f7904d3386d32cf72a3fbf3ccab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 862 zcmV-k1EKthP)Px#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_U@$<)Sa8^gh!7AEm_SevP!KS9FgU0< zV8CEtIB=MFuy|OQI3P#>000000I^3B9RL6T32;bRa{vGi!vFvd!vV){sAK>D0=G#- zK~z}7?U%7?<3JFGbs*ds&c3`rsNTpQ!8*2=`j*4#U=n;MOx=mWRSbOBK^10nkcmZby1epy^es8xQb0#mPmmz zQ7-A-Vh`l{NdhVZ+#4Vifd}+p03FFdg#>PZqZN3BuEkY&8w0FA0n`Sl8Mt!*+@rWp zI2XmPM;+RMbsG@10P6OhK!gNI;;3;^tyOY*#6&IvL~3#zBr#cZ&)h=&AV|o5 zkqwUs_l*4>^LnvINn%gn`OuUj!5%uqA^ul<+F}ea-(BCVI)g)SS&Sh&2q(ZM#Z_Y% zv;YbYLb(8VjJWSy22nT+TF&P1v;}BA{SDw>+H~LCFLWN-0gP3Wr#n<=u`xkng3k4H zwfZ$?lQWZ4mbV^d;V?msiIIjotjB8Wg5W`<9?;;J^~D$#L@I)D@sHn*^3i-g7uw{Z zhb1iT*@Q^<`3Cj?PU!+JMc2Z}=@xJYe;7cDT9};1UzD_90{|BiT7c@J4KQH=9@xS( zKrI19wM$Ut;#}NR`;dY96}S@(ME4blY?F5vbqlc8EkGoW|1K4;3Ero8ey;a=}mU1%3Vlo1*fD#sB~S07*qoM6N<$g3ai0I{*Lx diff --git a/graphics/pokemon/cherrim/back.png b/graphics/pokemon/cherrim/back.png deleted file mode 100644 index 5819f4dd94b88b9a0e65926053318e0b0c275951..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 600 zcmV-e0;m0nP)Px#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_cqmBFSb*4om=F*Upg3R%P$(FPNFcyi zXxM;IXn=UY&`6lLC@4q(0000002+st@&Et;32;bRa{vGi!vFvd!vV){sAK>D0kKI$ zK~zY`?U6B0!cY{2Yhq+Fu>YlL8xv1A zCx{yp#{c4d4@&EMuV~_CJVS@xujib5tNm5!x_-5D?w%SaJBU5^+As{e7^u6hV;Gfc zp+VV2ITgJK*mt>{vmFUs=SRhW$x;eS)ZG?$af*Q|?@<7h{F>e1o7l%4#oWIoqZaAh zVMdGe-sY4sdp(g?}h}M8_qL&wr#Dp0-csTD` zfWpQiFozZ3uKqo6RTUjA23YGkEX4|R4Rkm2I8rRJg2vWh@g`*K;}QT*X#=1$B@m?v z38f-1=fEZ*jthWPGb#g+2UHI5YX>V2;1=SVn#B&4iN1({$xfYVF%{;lL>`D=CBXUu zfcUdmiH|%`RRGaQs^HMgf$ m{4AzP8j{ea_OG8y(>?(K1BjvS7B0pB0000Px#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_U@$<)Sa8^gh!7AEm_SevP!KS9FgU0< zV8CEtIB=MFuy|OQI3P#>000000I^3B9RL6T32;bRa{vGi!vFvd!vV){sAK>D0eMM8 zK~zY`?bN|)0x=K<;1tALp;}*{vA#fk0VxwLp(jc19>neg2x;#{;~Uibo`QXX?Qu_b z3q6Yu(@8`RWs-&V>Kyj+f6Pn*8+NWgRI62!bDk6z9P26p+Fb;<32@!NWhix8m50)cfBzVF6&4W30TTK|+Lj#;aUuR~IWhQa3@FSMgA#e$wPx13?qF^E2 z12$NaOCXp^=kg3Y&|6NyeN@f?mmwxI+L=(xAcyY2d3Cd|~d$Q?PvidcHaSfXX5V|Ybgd=#~ZK) iW+KtxgwFM=82bU?D*C+q(feos0000 Date: Thu, 27 Oct 2022 19:52:52 -0700 Subject: [PATCH 005/162] merged regi battle type into BATTLE_TYPE_LEGENDARY --- include/constants/battle.h | 2 +- src/battle_setup.c | 2 +- src/pokemon.c | 20 ++++++++++++++++---- src/recorded_battle.c | 4 ++-- 4 files changed, 20 insertions(+), 8 deletions(-) diff --git a/include/constants/battle.h b/include/constants/battle.h index 7c7dd0a47c..c4f68882e9 100644 --- a/include/constants/battle.h +++ b/include/constants/battle.h @@ -58,7 +58,7 @@ #define BATTLE_TYPE_EREADER_TRAINER (1 << 11) #define BATTLE_TYPE_RAID (1 << 12) #define BATTLE_TYPE_LEGENDARY (1 << 13) -#define BATTLE_TYPE_REGI (1 << 14) +#define BATTLE_TYPE_14 (1 << 14) #define BATTLE_TYPE_TWO_OPPONENTS (1 << 15) // Used in pokefirered as BATTLE_TYPE_GHOST. #define BATTLE_TYPE_DOME (1 << 16) // Used in pokefirered as BATTLE_TYPE_POKEDUDE. #define BATTLE_TYPE_PALACE (1 << 17) // Used in pokefirered as BATTLE_TYPE_WILD_SCRIPTED. diff --git a/src/battle_setup.c b/src/battle_setup.c index a5e7c142cd..c9cb84b69a 100644 --- a/src/battle_setup.c +++ b/src/battle_setup.c @@ -586,7 +586,7 @@ void StartRegiBattle(void) LockPlayerFieldControls(); gMain.savedCallback = CB2_EndScriptedWildBattle; - gBattleTypeFlags = BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_REGI; + gBattleTypeFlags = BATTLE_TYPE_LEGENDARY; species = GetMonData(&gEnemyParty[0], MON_DATA_SPECIES); switch (species) diff --git a/src/pokemon.c b/src/pokemon.c index 1ab50666a6..245f6a81ea 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -7550,12 +7550,24 @@ u16 GetBattleBGM(void) { if (gBattleTypeFlags & BATTLE_TYPE_LEGENDARY) { - if (GetMonData(&gEnemyParty[0], MON_DATA_SPECIES, NULL) == SPECIES_RAYQUAZA) + switch (GetMonData(&gEnemyParty[0], MON_DATA_SPECIES, NULL)) + { + case SPECIES_RAYQUAZA: return MUS_VS_RAYQUAZA; - return MUS_VS_KYOGRE_GROUDON; + case SPECIES_KYOGRE: + case SPECIES_GROUDON: + return MUS_VS_KYOGRE_GROUDON; + case SPECIES_REGIROCK: + case SPECIES_REGICE: + case SPECIES_REGISTEEL: + case SPECIES_REGIGIGAS: + case SPECIES_REGIELEKI: + case SPECIES_REGIDRAGO: + return MUS_VS_REGI; + default: + return MUS_RG_VS_LEGEND; + } } - else if (gBattleTypeFlags & BATTLE_TYPE_REGI) - return MUS_VS_REGI; else if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK)) return MUS_VS_TRAINER; else if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) diff --git a/src/recorded_battle.c b/src/recorded_battle.c index 772d39991e..9ac4a0fdc9 100644 --- a/src/recorded_battle.c +++ b/src/recorded_battle.c @@ -23,8 +23,8 @@ #define BATTLER_RECORD_SIZE 664 #define ILLEGAL_BATTLE_TYPES ((BATTLE_TYPE_LINK | BATTLE_TYPE_SAFARI | BATTLE_TYPE_FIRST_BATTLE \ | BATTLE_TYPE_WALLY_TUTORIAL | BATTLE_TYPE_ROAMER | BATTLE_TYPE_EREADER_TRAINER \ - | BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_REGI | BATTLE_TYPE_RECORDED \ - | BATTLE_TYPE_TRAINER_HILL | BATTLE_TYPE_SECRET_BASE)) + | BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_RECORDED | BATTLE_TYPE_TRAINER_HILL \ + | BATTLE_TYPE_SECRET_BASE | BATTLE_TYPE_RAID)) struct PlayerInfo { From ae7cbc2aa1d38ae17fdcb24231f1d5d4b8a18d9b Mon Sep 17 00:00:00 2001 From: AgustinGDLV Date: Thu, 27 Oct 2022 20:38:40 -0700 Subject: [PATCH 006/162] merged physical and special max moves --- data/battle_anim_scripts.s | 108 ++--- include/constants/moves.h | 157 +++---- src/data/battle_moves.h | 940 ++++--------------------------------- src/data/text/move_names.h | 306 ++++-------- 4 files changed, 276 insertions(+), 1235 deletions(-) diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index 64fe5fbdbc..96928560e4 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -843,42 +843,24 @@ gBattleAnims_Moves:: .4byte Move_SOUL_STEALING_7_STAR_STRIKE @@@@ MAX MOVES .4byte Move_MAX_GUARD - .4byte Move_MAX_STRIKE_P - .4byte Move_MAX_STRIKE_S - .4byte Move_MAX_KNUCKLE_P - .4byte Move_MAX_KNUCKLE_S - .4byte Move_MAX_AIRSTREAM_P - .4byte Move_MAX_AIRSTREAM_S - .4byte Move_MAX_OOZE_P - .4byte Move_MAX_OOZE_S - .4byte Move_MAX_QUAKE_P - .4byte Move_MAX_QUAKE_S - .4byte Move_MAX_ROCKFALL_P - .4byte Move_MAX_ROCKFALL_S - .4byte Move_MAX_FLUTTERBY_P - .4byte Move_MAX_FLUTTERBY_S - .4byte Move_MAX_PHANTASM_P - .4byte Move_MAX_PHANTASM_S - .4byte Move_MAX_STEELSPIKE_P - .4byte Move_MAX_STEELSPIKE_S - .4byte Move_MAX_FLARE_P - .4byte Move_MAX_FLARE_S - .4byte Move_MAX_GEYSER_P - .4byte Move_MAX_GEYSER_S - .4byte Move_MAX_OVERGROWTH_P - .4byte Move_MAX_OVERGROWTH_S - .4byte Move_MAX_LIGHTNING_P - .4byte Move_MAX_LIGHTNING_S - .4byte Move_MAX_HAILSTORM_P - .4byte Move_MAX_HAILSTORM_S - .4byte Move_MAX_MINDSTORM_P - .4byte Move_MAX_MINDSTORM_S - .4byte Move_MAX_WYRMWIND_P - .4byte Move_MAX_WYRMWIND_S - .4byte Move_MAX_DARKNESS_P - .4byte Move_MAX_DARKNESS_S - .4byte Move_MAX_STARFALL_P - .4byte Move_MAX_STARFALL_S + .4byte Move_MAX_STRIKE + .4byte Move_MAX_KNUCKLE + .4byte Move_MAX_AIRSTREAM + .4byte Move_MAX_OOZE + .4byte Move_MAX_QUAKE + .4byte Move_MAX_ROCKFALL + .4byte Move_MAX_FLUTTERBY + .4byte Move_MAX_PHANTASM + .4byte Move_MAX_STEELSPIKE + .4byte Move_MAX_FLARE + .4byte Move_MAX_GEYSER + .4byte Move_MAX_OVERGROWTH + .4byte Move_MAX_LIGHTNING + .4byte Move_MAX_HAILSTORM + .4byte Move_MAX_MINDSTORM + .4byte Move_MAX_WYRMWIND + .4byte Move_MAX_DARKNESS + .4byte Move_MAX_STARFALL @@@ Last Move - cannot be reached .4byte Move_COUNT @@ -30673,40 +30655,22 @@ SoulStealingSevenStarStrikeExplosion: @@@@@@@@@@ MAX MOVES @@@@@@@@@@ Move_MAX_GUARD: -Move_MAX_KNUCKLE_P:: -Move_MAX_KNUCKLE_S:: -Move_MAX_QUAKE_P:: -Move_MAX_QUAKE_S:: -Move_MAX_ROCKFALL_P:: -Move_MAX_ROCKFALL_S:: -Move_MAX_FLUTTERBY_P:: -Move_MAX_FLUTTERBY_S:: -Move_MAX_PHANTASM_P:: -Move_MAX_PHANTASM_S:: -Move_MAX_STEELSPIKE_P:: -Move_MAX_STEELSPIKE_S:: -Move_MAX_HAILSTORM_P:: -Move_MAX_HAILSTORM_S:: -Move_MAX_MINDSTORM_P:: -Move_MAX_MINDSTORM_S:: -Move_MAX_WYRMWIND_P:: -Move_MAX_WYRMWIND_S:: -Move_MAX_DARKNESS_P:: -Move_MAX_DARKNESS_S:: -Move_MAX_STARFALL_P:: -Move_MAX_STARFALL_S:: -Move_MAX_STRIKE_P:: -Move_MAX_STRIKE_S:: -Move_MAX_AIRSTREAM_P:: -Move_MAX_AIRSTREAM_S:: -Move_MAX_OOZE_P:: -Move_MAX_OOZE_S:: -Move_MAX_FLARE_P:: -Move_MAX_FLARE_S:: -Move_MAX_GEYSER_P:: -Move_MAX_GEYSER_S:: -Move_MAX_OVERGROWTH_P:: -Move_MAX_OVERGROWTH_S:: -Move_MAX_LIGHTNING_P:: -Move_MAX_LIGHTNING_S:: +Move_MAX_STRIKE: +Move_MAX_KNUCKLE: +Move_MAX_AIRSTREAM: +Move_MAX_OOZE: +Move_MAX_QUAKE: +Move_MAX_ROCKFALL: +Move_MAX_FLUTTERBY: +Move_MAX_PHANTASM: +Move_MAX_STEELSPIKE: +Move_MAX_FLARE: +Move_MAX_GEYSER: +Move_MAX_OVERGROWTH: +Move_MAX_LIGHTNING: +Move_MAX_HAILSTORM: +Move_MAX_MINDSTORM: +Move_MAX_WYRMWIND: +Move_MAX_DARKNESS: +Move_MAX_STARFALL: end diff --git a/include/constants/moves.h b/include/constants/moves.h index 4025584477..7a971a00aa 100644 --- a/include/constants/moves.h +++ b/include/constants/moves.h @@ -856,113 +856,62 @@ #define MOVES_COUNT_Z (LAST_Z_MOVE + 1) //Max Moves -#define MOVE_MAX_GUARD (FIRST_MAX_MOVE + 0) -#define MOVE_MAX_STRIKE_P (FIRST_MAX_MOVE + 1) -#define MOVE_MAX_STRIKE_S (FIRST_MAX_MOVE + 2) -#define MOVE_MAX_KNUCKLE_P (FIRST_MAX_MOVE + 3) -#define MOVE_MAX_KNUCKLE_S (FIRST_MAX_MOVE + 4) -#define MOVE_MAX_AIRSTREAM_P (FIRST_MAX_MOVE + 5) -#define MOVE_MAX_AIRSTREAM_S (FIRST_MAX_MOVE + 6) -#define MOVE_MAX_OOZE_P (FIRST_MAX_MOVE + 7) -#define MOVE_MAX_OOZE_S (FIRST_MAX_MOVE + 8) -#define MOVE_MAX_QUAKE_P (FIRST_MAX_MOVE + 9) -#define MOVE_MAX_QUAKE_S (FIRST_MAX_MOVE + 10) -#define MOVE_MAX_ROCKFALL_P (FIRST_MAX_MOVE + 11) -#define MOVE_MAX_ROCKFALL_S (FIRST_MAX_MOVE + 12) -#define MOVE_MAX_FLUTTERBY_P (FIRST_MAX_MOVE + 13) -#define MOVE_MAX_FLUTTERBY_S (FIRST_MAX_MOVE + 14) -#define MOVE_MAX_PHANTASM_P (FIRST_MAX_MOVE + 15) -#define MOVE_MAX_PHANTASM_S (FIRST_MAX_MOVE + 16) -#define MOVE_MAX_STEELSPIKE_P (FIRST_MAX_MOVE + 17) -#define MOVE_MAX_STEELSPIKE_S (FIRST_MAX_MOVE + 18) -#define MOVE_MAX_FLARE_P (FIRST_MAX_MOVE + 19) -#define MOVE_MAX_FLARE_S (FIRST_MAX_MOVE + 20) -#define MOVE_MAX_GEYSER_P (FIRST_MAX_MOVE + 21) -#define MOVE_MAX_GEYSER_S (FIRST_MAX_MOVE + 22) -#define MOVE_MAX_OVERGROWTH_P (FIRST_MAX_MOVE + 23) -#define MOVE_MAX_OVERGROWTH_S (FIRST_MAX_MOVE + 24) -#define MOVE_MAX_LIGHTNING_P (FIRST_MAX_MOVE + 25) -#define MOVE_MAX_LIGHTNING_S (FIRST_MAX_MOVE + 26) -#define MOVE_MAX_MINDSTORM_P (FIRST_MAX_MOVE + 27) -#define MOVE_MAX_MINDSTORM_S (FIRST_MAX_MOVE + 28) -#define MOVE_MAX_HAILSTORM_P (FIRST_MAX_MOVE + 29) -#define MOVE_MAX_HAILSTORM_S (FIRST_MAX_MOVE + 30) -#define MOVE_MAX_WYRMWIND_P (FIRST_MAX_MOVE + 31) -#define MOVE_MAX_WYRMWIND_S (FIRST_MAX_MOVE + 32) -#define MOVE_MAX_DARKNESS_P (FIRST_MAX_MOVE + 33) -#define MOVE_MAX_DARKNESS_S (FIRST_MAX_MOVE + 34) -#define MOVE_MAX_STARFALL_P (FIRST_MAX_MOVE + 35) -#define MOVE_MAX_STARFALL_S (FIRST_MAX_MOVE + 36) +#define MOVE_MAX_GUARD (FIRST_MAX_MOVE + 0) +#define MOVE_MAX_STRIKE (FIRST_MAX_MOVE + 1) +#define MOVE_MAX_KNUCKLE (FIRST_MAX_MOVE + 2) +#define MOVE_MAX_AIRSTREAM (FIRST_MAX_MOVE + 3) +#define MOVE_MAX_OOZE (FIRST_MAX_MOVE + 4) +#define MOVE_MAX_QUAKE (FIRST_MAX_MOVE + 5) +#define MOVE_MAX_ROCKFALL (FIRST_MAX_MOVE + 6) +#define MOVE_MAX_FLUTTERBY (FIRST_MAX_MOVE + 7) +#define MOVE_MAX_PHANTASM (FIRST_MAX_MOVE + 8) +#define MOVE_MAX_STEELSPIKE (FIRST_MAX_MOVE + 9) +#define MOVE_MAX_FLARE (FIRST_MAX_MOVE + 10) +#define MOVE_MAX_GEYSER (FIRST_MAX_MOVE + 11) +#define MOVE_MAX_OVERGROWTH (FIRST_MAX_MOVE + 12) +#define MOVE_MAX_LIGHTNING (FIRST_MAX_MOVE + 13) +#define MOVE_MAX_MINDSTORM (FIRST_MAX_MOVE + 14) +#define MOVE_MAX_HAILSTORM (FIRST_MAX_MOVE + 15) +#define MOVE_MAX_WYRMWIND (FIRST_MAX_MOVE + 16) +#define MOVE_MAX_DARKNESS (FIRST_MAX_MOVE + 17) +#define MOVE_MAX_STARFALL (FIRST_MAX_MOVE + 18) // Gigantamax Moves -#define MOVE_G_MAX_VINE_LASH_P (FIRST_MAX_MOVE + 37) -#define MOVE_G_MAX_VINE_LASH_S (FIRST_MAX_MOVE + 38) -#define MOVE_G_MAX_WILDFIRE_P (FIRST_MAX_MOVE + 39) -#define MOVE_G_MAX_WILDFIRE_S (FIRST_MAX_MOVE + 40) -#define MOVE_G_MAX_CANNONADE_P (FIRST_MAX_MOVE + 41) -#define MOVE_G_MAX_CANNONADE_S (FIRST_MAX_MOVE + 42) -#define MOVE_G_MAX_BEFUDDLE_P (FIRST_MAX_MOVE + 43) -#define MOVE_G_MAX_BEFUDDLE_S (FIRST_MAX_MOVE + 44) -#define MOVE_G_MAX_VOLT_CRASH_P (FIRST_MAX_MOVE + 45) -#define MOVE_G_MAX_VOLT_CRASH_S (FIRST_MAX_MOVE + 46) -#define MOVE_G_MAX_GOLD_RUSH_P (FIRST_MAX_MOVE + 47) -#define MOVE_G_MAX_GOLD_RUSH_S (FIRST_MAX_MOVE + 48) -#define MOVE_G_MAX_CHI_STRIKE_P (FIRST_MAX_MOVE + 49) -#define MOVE_G_MAX_CHI_STRIKE_S (FIRST_MAX_MOVE + 50) -#define MOVE_G_MAX_TERROR_P (FIRST_MAX_MOVE + 51) -#define MOVE_G_MAX_TERROR_S (FIRST_MAX_MOVE + 52) -#define MOVE_G_MAX_FOAM_BURST_P (FIRST_MAX_MOVE + 53) -#define MOVE_G_MAX_FOAM_BURST_S (FIRST_MAX_MOVE + 54) -#define MOVE_G_MAX_RESONANCE_P (FIRST_MAX_MOVE + 55) -#define MOVE_G_MAX_RESONANCE_S (FIRST_MAX_MOVE + 56) -#define MOVE_G_MAX_CUDDLE_P (FIRST_MAX_MOVE + 57) -#define MOVE_G_MAX_CUDDLE_S (FIRST_MAX_MOVE + 58) -#define MOVE_G_MAX_REPLENISH_P (FIRST_MAX_MOVE + 59) -#define MOVE_G_MAX_REPLENISH_S (FIRST_MAX_MOVE + 60) -#define MOVE_G_MAX_MALODOR_P (FIRST_MAX_MOVE + 61) -#define MOVE_G_MAX_MALODOR_S (FIRST_MAX_MOVE + 62) -#define MOVE_G_MAX_MELTDOWN_P (FIRST_MAX_MOVE + 63) -#define MOVE_G_MAX_MELTDOWN_S (FIRST_MAX_MOVE + 64) -#define MOVE_G_MAX_DRUM_SOLO_P (FIRST_MAX_MOVE + 65) -#define MOVE_G_MAX_DRUM_SOLO_S (FIRST_MAX_MOVE + 66) -#define MOVE_G_MAX_FIREBALL_P (FIRST_MAX_MOVE + 67) -#define MOVE_G_MAX_FIREBALL_S (FIRST_MAX_MOVE + 68) -#define MOVE_G_MAX_HYDROSNIPE_P (FIRST_MAX_MOVE + 69) -#define MOVE_G_MAX_HYDROSNIPE_S (FIRST_MAX_MOVE + 70) -#define MOVE_G_MAX_WIND_RAGE_P (FIRST_MAX_MOVE + 71) -#define MOVE_G_MAX_WIND_RAGE_S (FIRST_MAX_MOVE + 72) -#define MOVE_G_MAX_GRAVITAS_P (FIRST_MAX_MOVE + 73) -#define MOVE_G_MAX_GRAVITAS_S (FIRST_MAX_MOVE + 74) -#define MOVE_G_MAX_STONESURGE_P (FIRST_MAX_MOVE + 75) -#define MOVE_G_MAX_STONESURGE_S (FIRST_MAX_MOVE + 76) -#define MOVE_G_MAX_VOLCALITH_P (FIRST_MAX_MOVE + 77) -#define MOVE_G_MAX_VOLCALITH_S (FIRST_MAX_MOVE + 78) -#define MOVE_G_MAX_TARTNESS_P (FIRST_MAX_MOVE + 79) -#define MOVE_G_MAX_TARTNESS_S (FIRST_MAX_MOVE + 80) -#define MOVE_G_MAX_SWEETNESS_P (FIRST_MAX_MOVE + 81) -#define MOVE_G_MAX_SWEETNESS_S (FIRST_MAX_MOVE + 82) -#define MOVE_G_MAX_SANDBLAST_P (FIRST_MAX_MOVE + 83) -#define MOVE_G_MAX_SANDBLAST_S (FIRST_MAX_MOVE + 84) -#define MOVE_G_MAX_STUN_SHOCK_P (FIRST_MAX_MOVE + 85) -#define MOVE_G_MAX_STUN_SHOCK_S (FIRST_MAX_MOVE + 86) -#define MOVE_G_MAX_CENTIFERNO_P (FIRST_MAX_MOVE + 87) -#define MOVE_G_MAX_CENTIFERNO_S (FIRST_MAX_MOVE + 88) -#define MOVE_G_MAX_SMITE_P (FIRST_MAX_MOVE + 89) -#define MOVE_G_MAX_SMITE_S (FIRST_MAX_MOVE + 90) -#define MOVE_G_MAX_SNOOZE_P (FIRST_MAX_MOVE + 91) -#define MOVE_G_MAX_SNOOZE_S (FIRST_MAX_MOVE + 92) -#define MOVE_G_MAX_FINALE_P (FIRST_MAX_MOVE + 93) -#define MOVE_G_MAX_FINALE_S (FIRST_MAX_MOVE + 94) -#define MOVE_G_MAX_STEELSURGE_P (FIRST_MAX_MOVE + 95) -#define MOVE_G_MAX_STEELSURGE_S (FIRST_MAX_MOVE + 96) -#define MOVE_G_MAX_DEPLETION_P (FIRST_MAX_MOVE + 97) -#define MOVE_G_MAX_DEPLETION_S (FIRST_MAX_MOVE + 98) -#define MOVE_G_MAX_ONE_BLOW_P (FIRST_MAX_MOVE + 99) -#define MOVE_G_MAX_ONE_BLOW_S (FIRST_MAX_MOVE + 100) -#define MOVE_G_MAX_RAPID_FLOW_P (FIRST_MAX_MOVE + 101) -#define MOVE_G_MAX_RAPID_FLOW_S (FIRST_MAX_MOVE + 102) +#define MOVE_G_MAX_VINE_LASH (FIRST_MAX_MOVE + 19) +#define MOVE_G_MAX_WILDFIRE (FIRST_MAX_MOVE + 20) +#define MOVE_G_MAX_CANNONADE (FIRST_MAX_MOVE + 21) +#define MOVE_G_MAX_BEFUDDLE (FIRST_MAX_MOVE + 22) +#define MOVE_G_MAX_VOLT_CRASH (FIRST_MAX_MOVE + 23) +#define MOVE_G_MAX_GOLD_RUSH (FIRST_MAX_MOVE + 24) +#define MOVE_G_MAX_CHI_STRIKE (FIRST_MAX_MOVE + 25) +#define MOVE_G_MAX_TERROR (FIRST_MAX_MOVE + 26) +#define MOVE_G_MAX_FOAM_BURST (FIRST_MAX_MOVE + 27) +#define MOVE_G_MAX_RESONANCE (FIRST_MAX_MOVE + 28) +#define MOVE_G_MAX_CUDDLE (FIRST_MAX_MOVE + 29) +#define MOVE_G_MAX_REPLENISH (FIRST_MAX_MOVE + 30) +#define MOVE_G_MAX_MALODOR (FIRST_MAX_MOVE + 31) +#define MOVE_G_MAX_MELTDOWN (FIRST_MAX_MOVE + 32) +#define MOVE_G_MAX_DRUM_SOLO (FIRST_MAX_MOVE + 33) +#define MOVE_G_MAX_FIREBALL (FIRST_MAX_MOVE + 34) +#define MOVE_G_MAX_HYDROSNIPE (FIRST_MAX_MOVE + 35) +#define MOVE_G_MAX_WIND_RAGE (FIRST_MAX_MOVE + 36) +#define MOVE_G_MAX_GRAVITAS (FIRST_MAX_MOVE + 37) +#define MOVE_G_MAX_STONESURGE (FIRST_MAX_MOVE + 38) +#define MOVE_G_MAX_VOLCALITH (FIRST_MAX_MOVE + 39) +#define MOVE_G_MAX_TARTNESS (FIRST_MAX_MOVE + 40) +#define MOVE_G_MAX_SWEETNESS (FIRST_MAX_MOVE + 41) +#define MOVE_G_MAX_SANDBLAST (FIRST_MAX_MOVE + 42) +#define MOVE_G_MAX_STUN_SHOCK (FIRST_MAX_MOVE + 43) +#define MOVE_G_MAX_CENTIFERNO (FIRST_MAX_MOVE + 44) +#define MOVE_G_MAX_SMITE (FIRST_MAX_MOVE + 45) +#define MOVE_G_MAX_SNOOZE (FIRST_MAX_MOVE + 46) +#define MOVE_G_MAX_FINALE (FIRST_MAX_MOVE + 47) +#define MOVE_G_MAX_STEELSURGE (FIRST_MAX_MOVE + 48) +#define MOVE_G_MAX_DEPLETION (FIRST_MAX_MOVE + 49) +#define MOVE_G_MAX_ONE_BLOW (FIRST_MAX_MOVE + 50) +#define MOVE_G_MAX_RAPID_FLOW (FIRST_MAX_MOVE + 51) #define FIRST_MAX_MOVE MOVES_COUNT_Z -#define LAST_MAX_MOVE MOVE_G_MAX_RAPID_FLOW_S +#define LAST_MAX_MOVE MOVE_G_MAX_RAPID_FLOW #define MOVES_COUNT_DYNAMAX (LAST_MAX_MOVE + 1) diff --git a/src/data/battle_moves.h b/src/data/battle_moves.h index f8fa922a42..46fb13335e 100644 --- a/src/data/battle_moves.h +++ b/src/data/battle_moves.h @@ -14161,7 +14161,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, }, - [MOVE_MAX_FLARE_P] = + [MOVE_MAX_FLARE] = { .effect = EFFECT_MAX_MOVE, .power = 1, @@ -14176,22 +14176,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .argument = MAX_EFFECT_SUN, }, - [MOVE_MAX_FLARE_S] = - { - .effect = EFFECT_MAX_MOVE, - .power = 1, - .type = TYPE_FIRE, - .accuracy = 0, - .pp = 10, - .secondaryEffectChance = 100, - .target = MOVE_TARGET_SELECTED, - .priority = 0, - .flags = 0, - .split = SPLIT_SPECIAL, - .argument = MAX_EFFECT_SUN, - }, - - [MOVE_MAX_FLUTTERBY_P] = + [MOVE_MAX_FLUTTERBY] = { .effect = EFFECT_MAX_MOVE, .power = 1, @@ -14206,22 +14191,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .argument = MAX_EFFECT_LOWER_SP_ATK, }, - [MOVE_MAX_FLUTTERBY_S] = - { - .effect = EFFECT_MAX_MOVE, - .power = 1, - .type = TYPE_BUG, - .accuracy = 0, - .pp = 10, - .secondaryEffectChance = 100, - .target = MOVE_TARGET_SELECTED, - .priority = 0, - .flags = 0, - .split = SPLIT_SPECIAL, - .argument = MAX_EFFECT_LOWER_SP_ATK, - }, - - [MOVE_MAX_LIGHTNING_P] = + [MOVE_MAX_LIGHTNING] = { .effect = EFFECT_MAX_MOVE, .power = 1, @@ -14236,22 +14206,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .argument = MAX_EFFECT_ELECTRIC_TERRAIN, }, - [MOVE_MAX_LIGHTNING_S] = - { - .effect = EFFECT_MAX_MOVE, - .power = 1, - .type = TYPE_ELECTRIC, - .accuracy = 0, - .pp = 10, - .secondaryEffectChance = 100, - .target = MOVE_TARGET_SELECTED, - .priority = 0, - .flags = 0, - .split = SPLIT_SPECIAL, - .argument = MAX_EFFECT_ELECTRIC_TERRAIN, - }, - - [MOVE_MAX_STRIKE_P] = + [MOVE_MAX_STRIKE] = { .effect = EFFECT_MAX_MOVE, .power = 1, @@ -14266,22 +14221,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .argument = MAX_EFFECT_LOWER_SPEED, }, - [MOVE_MAX_STRIKE_S] = - { - .effect = EFFECT_MAX_MOVE, - .power = 1, - .type = TYPE_NORMAL, - .accuracy = 0, - .pp = 10, - .secondaryEffectChance = 100, - .target = MOVE_TARGET_SELECTED, - .priority = 0, - .flags = 0, - .split = SPLIT_SPECIAL, - .argument = MAX_EFFECT_LOWER_SPEED, - }, - - [MOVE_MAX_KNUCKLE_P] = + [MOVE_MAX_KNUCKLE] = { .effect = EFFECT_MAX_MOVE, .power = 1, @@ -14296,22 +14236,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .argument = MAX_EFFECT_RAISE_TEAM_ATTACK, }, - [MOVE_MAX_KNUCKLE_S] = - { - .effect = EFFECT_MAX_MOVE, - .power = 1, - .type = TYPE_FIGHTING, - .accuracy = 0, - .pp = 10, - .secondaryEffectChance = 100, - .target = MOVE_TARGET_SELECTED, - .priority = 0, - .flags = 0, - .split = SPLIT_SPECIAL, - .argument = MAX_EFFECT_RAISE_TEAM_ATTACK, - }, - - [MOVE_MAX_PHANTASM_P] = + [MOVE_MAX_PHANTASM] = { .effect = EFFECT_MAX_MOVE, .power = 1, @@ -14326,22 +14251,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .argument = MAX_EFFECT_LOWER_DEFENSE, }, - [MOVE_MAX_PHANTASM_S] = - { - .effect = EFFECT_MAX_MOVE, - .power = 1, - .type = TYPE_GHOST, - .accuracy = 0, - .pp = 10, - .secondaryEffectChance = 100, - .target = MOVE_TARGET_SELECTED, - .priority = 0, - .flags = 0, - .split = SPLIT_SPECIAL, - .argument = MAX_EFFECT_LOWER_DEFENSE, - }, - - [MOVE_MAX_HAILSTORM_P] = + [MOVE_MAX_HAILSTORM] = { .effect = EFFECT_MAX_MOVE, .power = 1, @@ -14356,22 +14266,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .argument = MAX_EFFECT_HAIL, }, - [MOVE_MAX_HAILSTORM_S] = - { - .effect = EFFECT_MAX_MOVE, - .power = 1, - .type = TYPE_ICE, - .accuracy = 0, - .pp = 10, - .secondaryEffectChance = 100, - .target = MOVE_TARGET_SELECTED, - .priority = 0, - .flags = 0, - .split = SPLIT_SPECIAL, - .argument = MAX_EFFECT_HAIL, - }, - - [MOVE_MAX_OOZE_P] = + [MOVE_MAX_OOZE] = { .effect = EFFECT_MAX_MOVE, .power = 1, @@ -14386,22 +14281,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .argument = MAX_EFFECT_RAISE_TEAM_SP_ATK, }, - [MOVE_MAX_OOZE_S] = - { - .effect = EFFECT_MAX_MOVE, - .power = 1, - .type = TYPE_POISON, - .accuracy = 0, - .pp = 10, - .secondaryEffectChance = 100, - .target = MOVE_TARGET_SELECTED, - .priority = 0, - .flags = 0, - .split = SPLIT_SPECIAL, - .argument = MAX_EFFECT_RAISE_TEAM_SP_ATK, - }, - - [MOVE_MAX_GEYSER_P] = + [MOVE_MAX_GEYSER] = { .effect = EFFECT_MAX_MOVE, .power = 1, @@ -14416,22 +14296,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .argument = MAX_EFFECT_RAIN, }, - [MOVE_MAX_GEYSER_S] = - { - .effect = EFFECT_MAX_MOVE, - .power = 1, - .type = TYPE_WATER, - .accuracy = 0, - .pp = 10, - .secondaryEffectChance = 100, - .target = MOVE_TARGET_SELECTED, - .priority = 0, - .flags = 0, - .split = SPLIT_SPECIAL, - .argument = MAX_EFFECT_RAIN, - }, - - [MOVE_MAX_AIRSTREAM_P] = + [MOVE_MAX_AIRSTREAM] = { .effect = EFFECT_MAX_MOVE, .power = 1, @@ -14446,22 +14311,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .argument = MAX_EFFECT_RAISE_TEAM_SPEED, }, - [MOVE_MAX_AIRSTREAM_S] = - { - .effect = EFFECT_MAX_MOVE, - .power = 1, - .type = TYPE_FLYING, - .accuracy = 0, - .pp = 10, - .secondaryEffectChance = 100, - .target = MOVE_TARGET_SELECTED, - .priority = 0, - .flags = 0, - .split = SPLIT_SPECIAL, - .argument = MAX_EFFECT_RAISE_TEAM_SPEED, - }, - - [MOVE_MAX_STARFALL_P] = + [MOVE_MAX_STARFALL] = { .effect = EFFECT_MAX_MOVE, .power = 1, @@ -14476,22 +14326,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .argument = MAX_EFFECT_MISTY_TERRAIN, }, - [MOVE_MAX_STARFALL_S] = - { - .effect = EFFECT_MAX_MOVE, - .power = 1, - .type = TYPE_FAIRY, - .accuracy = 0, - .pp = 10, - .secondaryEffectChance = 100, - .target = MOVE_TARGET_SELECTED, - .priority = 0, - .flags = 0, - .split = SPLIT_SPECIAL, - .argument = MAX_EFFECT_MISTY_TERRAIN, - }, - - [MOVE_MAX_WYRMWIND_P] = + [MOVE_MAX_WYRMWIND] = { .effect = EFFECT_MAX_MOVE, .power = 1, @@ -14506,22 +14341,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .argument = MAX_EFFECT_LOWER_ATTACK, }, - [MOVE_MAX_WYRMWIND_S] = - { - .effect = EFFECT_MAX_MOVE, - .power = 1, - .type = TYPE_DRAGON, - .accuracy = 0, - .pp = 10, - .secondaryEffectChance = 100, - .target = MOVE_TARGET_SELECTED, - .priority = 0, - .flags = 0, - .split = SPLIT_SPECIAL, - .argument = MAX_EFFECT_LOWER_ATTACK, - }, - - [MOVE_MAX_MINDSTORM_P] = + [MOVE_MAX_MINDSTORM] = { .effect = EFFECT_MAX_MOVE, .power = 1, @@ -14535,23 +14355,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_PSYCHIC_TERRAIN, }, - - [MOVE_MAX_MINDSTORM_S] = - { - .effect = EFFECT_MAX_MOVE, - .power = 1, - .type = TYPE_PSYCHIC, - .accuracy = 0, - .pp = 10, - .secondaryEffectChance = 100, - .target = MOVE_TARGET_SELECTED, - .priority = 0, - .flags = 0, - .split = SPLIT_SPECIAL, - .argument = MAX_EFFECT_PSYCHIC_TERRAIN, - }, - - [MOVE_MAX_ROCKFALL_P] = + [MOVE_MAX_ROCKFALL] = { .effect = EFFECT_MAX_MOVE, .power = 1, @@ -14565,23 +14369,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_SANDSTORM, }, - - [MOVE_MAX_ROCKFALL_S] = - { - .effect = EFFECT_MAX_MOVE, - .power = 1, - .type = TYPE_ROCK, - .accuracy = 0, - .pp = 10, - .secondaryEffectChance = 0, - .target = MOVE_TARGET_SELECTED, - .priority = 0, - .flags = 0, - .split = SPLIT_SPECIAL, - .argument = MAX_EFFECT_SANDSTORM, - }, - - [MOVE_MAX_QUAKE_P] = + [MOVE_MAX_QUAKE] = { .effect = EFFECT_MAX_MOVE, .power = 1, @@ -14595,23 +14383,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_RAISE_TEAM_SP_DEF, }, - - [MOVE_MAX_QUAKE_S] = - { - .effect = EFFECT_MAX_MOVE, - .power = 1, - .type = TYPE_GROUND, - .accuracy = 0, - .pp = 10, - .secondaryEffectChance = 0, - .target = MOVE_TARGET_SELECTED, - .priority = 0, - .flags = 0, - .split = SPLIT_SPECIAL, - .argument = MAX_EFFECT_RAISE_TEAM_SP_DEF, - }, - - [MOVE_MAX_DARKNESS_P] = + [MOVE_MAX_DARKNESS] = { .effect = EFFECT_MAX_MOVE, .power = 1, @@ -14625,23 +14397,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_LOWER_SP_DEF, }, - - [MOVE_MAX_DARKNESS_S] = - { - .effect = EFFECT_MAX_MOVE, - .power = 1, - .type = TYPE_DARK, - .accuracy = 0, - .pp = 10, - .secondaryEffectChance = 100, - .target = MOVE_TARGET_SELECTED, - .priority = 0, - .flags = 0, - .split = SPLIT_SPECIAL, - .argument = MAX_EFFECT_LOWER_SP_DEF, - }, - - [MOVE_MAX_OVERGROWTH_P] = + [MOVE_MAX_OVERGROWTH] = { .effect = EFFECT_MAX_MOVE, .power = 10, @@ -14655,23 +14411,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_GRASSY_TERRAIN, }, - - [MOVE_MAX_OVERGROWTH_S] = - { - .effect = EFFECT_MAX_MOVE, - .power = 10, - .type = TYPE_GRASS, - .accuracy = 0, - .pp = 10, - .secondaryEffectChance = 0, - .target = MOVE_TARGET_SELECTED, - .priority = 0, - .flags = 0, - .split = SPLIT_SPECIAL, - .argument = MAX_EFFECT_GRASSY_TERRAIN, - }, - - [MOVE_MAX_STEELSPIKE_P] = + [MOVE_MAX_STEELSPIKE] = { .effect = EFFECT_MAX_MOVE, .power = 10, @@ -14685,23 +14425,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_RAISE_TEAM_DEFENSE, }, - - [MOVE_MAX_STEELSPIKE_S] = - { - .effect = EFFECT_MAX_MOVE, - .power = 10, - .type = TYPE_STEEL, - .accuracy = 0, - .pp = 10, - .secondaryEffectChance = 0, - .target = MOVE_TARGET_SELECTED, - .priority = 0, - .flags = 0, - .split = SPLIT_SPECIAL, - .argument = MAX_EFFECT_RAISE_TEAM_DEFENSE, - }, - - [MOVE_G_MAX_VINE_LASH_P] = + + [MOVE_G_MAX_VINE_LASH] = { //ANIM TODO .effect = EFFECT_MAX_MOVE, .power = 10, @@ -14715,23 +14440,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_VINE_LASH, }, - - [MOVE_G_MAX_VINE_LASH_S] = - { //ANIM TODO - .effect = EFFECT_MAX_MOVE, - .power = 10, - .type = TYPE_GRASS, - .accuracy = 0, - .pp = 10, - .secondaryEffectChance = 0, - .target = MOVE_TARGET_SELECTED, - .priority = 0, - .flags = 0, - .split = SPLIT_SPECIAL, - .argument = MAX_EFFECT_VINE_LASH, - }, - - [MOVE_G_MAX_WILDFIRE_P] = + + [MOVE_G_MAX_WILDFIRE] = { .effect = EFFECT_MAX_MOVE, .power = 10, @@ -14745,23 +14455,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_WILDFIRE, }, - - [MOVE_G_MAX_WILDFIRE_S] = - { - .effect = EFFECT_MAX_MOVE, - .power = 10, - .type = TYPE_FIRE, - .accuracy = 0, - .pp = 10, - .secondaryEffectChance = 0, - .target = MOVE_TARGET_SELECTED, - .priority = 0, - .flags = 0, - .split = SPLIT_SPECIAL, - .argument = MAX_EFFECT_WILDFIRE, - }, - - [MOVE_G_MAX_CANNONADE_P] = + + [MOVE_G_MAX_CANNONADE] = { //ANIM TODO .effect = EFFECT_MAX_MOVE, .power = 10, @@ -14775,23 +14470,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_CANNONADE, }, - - [MOVE_G_MAX_CANNONADE_S] = - { - .effect = EFFECT_MAX_MOVE, - .power = 10, - .type = TYPE_WATER, - .accuracy = 0, - .pp = 10, - .secondaryEffectChance = 0, - .target = MOVE_TARGET_SELECTED, - .priority = 0, - .flags = 0, - .split = SPLIT_SPECIAL, - .argument = MAX_EFFECT_CANNONADE, - }, - - [MOVE_G_MAX_BEFUDDLE_P] = + + [MOVE_G_MAX_BEFUDDLE] = { .effect = EFFECT_MAX_MOVE, .power = 10, @@ -14805,23 +14485,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_EFFECT_SPORE_FOES, }, - - [MOVE_G_MAX_BEFUDDLE_S] = - { - .effect = EFFECT_MAX_MOVE, - .power = 10, - .type = TYPE_BUG, - .accuracy = 0, - .pp = 10, - .secondaryEffectChance = 0, - .target = MOVE_TARGET_SELECTED, - .priority = 0, - .flags = 0, - .split = SPLIT_SPECIAL, - .argument = MAX_EFFECT_EFFECT_SPORE_FOES, - }, - - [MOVE_G_MAX_VOLT_CRASH_P] = + + [MOVE_G_MAX_VOLT_CRASH] = { .effect = EFFECT_MAX_MOVE, .power = 10, @@ -14835,23 +14500,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_PARALYZE_FOES, }, - - [MOVE_G_MAX_VOLT_CRASH_S] = - { - .effect = EFFECT_MAX_MOVE, - .power = 10, - .type = TYPE_ELECTRIC, - .accuracy = 0, - .pp = 10, - .secondaryEffectChance = 0, - .target = MOVE_TARGET_SELECTED, - .priority = 0, - .flags = 0, - .split = SPLIT_SPECIAL, - .argument = MAX_EFFECT_PARALYZE_FOES, - }, - - [MOVE_G_MAX_GOLD_RUSH_P] = + + [MOVE_G_MAX_GOLD_RUSH] = { .effect = EFFECT_MAX_MOVE, .power = 10, @@ -14865,24 +14515,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_CONFUSE_FOES_PAY_DAY, }, - - [MOVE_G_MAX_GOLD_RUSH_S] = - { - .effect = EFFECT_MAX_MOVE, - .power = 10, - .type = TYPE_NORMAL, - .accuracy = 0, - .pp = 10, - .secondaryEffectChance = 0, - .target = MOVE_TARGET_SELECTED, - .priority = 0, - .flags = 0, - .split = SPLIT_SPECIAL, - //.z_move_power = 100, - .argument = MAX_EFFECT_CONFUSE_FOES_PAY_DAY, - }, - - [MOVE_G_MAX_CHI_STRIKE_P] = + + [MOVE_G_MAX_CHI_STRIKE] = { .effect = EFFECT_MAX_MOVE, .power = 10, @@ -14896,23 +14530,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_CRIT_PLUS, }, - - [MOVE_G_MAX_CHI_STRIKE_S] = - { - .effect = EFFECT_MAX_MOVE, - .power = 10, - .type = TYPE_FIGHTING, - .accuracy = 0, - .pp = 10, - .secondaryEffectChance = 0, - .target = MOVE_TARGET_SELECTED, - .priority = 0, - .flags = 0, - .split = SPLIT_SPECIAL, - .argument = MAX_EFFECT_CRIT_PLUS, - }, - - [MOVE_G_MAX_TERROR_P] = + + [MOVE_G_MAX_TERROR] = { .effect = EFFECT_MAX_MOVE, .power = 10, @@ -14926,23 +14545,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_MEAN_LOOK, }, - - [MOVE_G_MAX_TERROR_S] = - { - .effect = EFFECT_MAX_MOVE, - .power = 10, - .type = TYPE_GHOST, - .accuracy = 0, - .pp = 10, - .secondaryEffectChance = 0, - .target = MOVE_TARGET_SELECTED, - .priority = 0, - .flags = 0, - .split = SPLIT_SPECIAL, - .argument = MAX_EFFECT_MEAN_LOOK, - }, - - [MOVE_G_MAX_FOAM_BURST_P] = + + [MOVE_G_MAX_FOAM_BURST] = { .effect = EFFECT_MAX_MOVE, .power = 10, @@ -14956,23 +14560,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_LOWER_SPEED_2_FOES, }, - - [MOVE_G_MAX_FOAM_BURST_S] = - { - .effect = EFFECT_MAX_MOVE, - .power = 10, - .type = TYPE_WATER, - .accuracy = 0, - .pp = 10, - .secondaryEffectChance = 0, - .target = MOVE_TARGET_SELECTED, - .priority = 0, - .flags = 0, - .split = SPLIT_SPECIAL, - .argument = MAX_EFFECT_LOWER_SPEED_2_FOES, - }, - - [MOVE_G_MAX_RESONANCE_P] = + + [MOVE_G_MAX_RESONANCE] = { .effect = EFFECT_MAX_MOVE, .power = 10, @@ -14986,23 +14575,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_AURORA_VEIL, }, - - [MOVE_G_MAX_RESONANCE_S] = - { - .effect = EFFECT_MAX_MOVE, - .power = 10, - .type = TYPE_ICE, - .accuracy = 0, - .pp = 10, - .secondaryEffectChance = 0, - .target = MOVE_TARGET_SELECTED, - .priority = 0, - .flags = 0, - .split = SPLIT_SPECIAL, - .argument = MAX_EFFECT_AURORA_VEIL, - }, - - [MOVE_G_MAX_CUDDLE_P] = + + [MOVE_G_MAX_CUDDLE] = { .effect = EFFECT_MAX_MOVE, .power = 10, @@ -15016,23 +14590,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_INFATUATE_FOES, }, - - [MOVE_G_MAX_CUDDLE_S] = - { - .effect = EFFECT_MAX_MOVE, - .power = 10, - .type = TYPE_NORMAL, - .accuracy = 0, - .pp = 10, - .secondaryEffectChance = 0, - .target = MOVE_TARGET_SELECTED, - .priority = 0, - .flags = 0, - .split = SPLIT_SPECIAL, - .argument = MAX_EFFECT_INFATUATE_FOES, - }, - - [MOVE_G_MAX_REPLENISH_P] = + + [MOVE_G_MAX_REPLENISH] = { .effect = EFFECT_MAX_MOVE, .power = 10, @@ -15046,23 +14605,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_RECYCLE_BERRIES, }, - - [MOVE_G_MAX_REPLENISH_S] = - { - .effect = EFFECT_MAX_MOVE, - .power = 10, - .type = TYPE_NORMAL, - .accuracy = 0, - .pp = 10, - .secondaryEffectChance = 0, - .target = MOVE_TARGET_SELECTED, - .priority = 0, - .flags = 0, - .split = SPLIT_SPECIAL, - .argument = MAX_EFFECT_RECYCLE_BERRIES, - }, - - [MOVE_G_MAX_MALODOR_P] = + + [MOVE_G_MAX_MALODOR] = { .effect = EFFECT_MAX_MOVE, .power = 10, @@ -15076,23 +14620,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_POISON_FOES, }, - - [MOVE_G_MAX_MALODOR_S] = - { - .effect = EFFECT_MAX_MOVE, - .power = 10, - .type = TYPE_POISON, - .accuracy = 0, - .pp = 10, - .secondaryEffectChance = 0, - .target = MOVE_TARGET_SELECTED, - .priority = 0, - .flags = 0, - .split = SPLIT_SPECIAL, - .argument = MAX_EFFECT_POISON_FOES, - }, - - [MOVE_G_MAX_MELTDOWN_P] = + + [MOVE_G_MAX_MELTDOWN] = { .effect = EFFECT_MAX_MOVE, .power = 10, @@ -15106,23 +14635,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_TORMENT_FOES, }, - - [MOVE_G_MAX_MELTDOWN_S] = - { - .effect = EFFECT_MAX_MOVE, - .power = 10, - .type = TYPE_STEEL, - .accuracy = 0, - .pp = 10, - .secondaryEffectChance = 0, - .target = MOVE_TARGET_SELECTED, - .priority = 0, - .flags = 0, - .split = SPLIT_SPECIAL, - .argument = MAX_EFFECT_TORMENT_FOES, - }, - - [MOVE_G_MAX_DRUM_SOLO_P] = + + [MOVE_G_MAX_DRUM_SOLO] = { //ANIM TODO .effect = EFFECT_MAX_MOVE, .power = 10, @@ -15136,23 +14650,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_TORMENT_FOES, //EFFECT TODO }, - - [MOVE_G_MAX_DRUM_SOLO_S] = - { //ANIM TODO - .effect = EFFECT_MAX_MOVE, - .power = 10, - .type = TYPE_GRASS, - .accuracy = 0, - .pp = 10, - .secondaryEffectChance = 0, - .target = MOVE_TARGET_SELECTED, - .priority = 0, - .flags = 0, - .split = SPLIT_SPECIAL, - .argument = MAX_EFFECT_TORMENT_FOES, //EFFECT TODO - }, - - [MOVE_G_MAX_FIREBALL_P] = + + [MOVE_G_MAX_FIREBALL] = { //ANIM TODO .effect = EFFECT_MAX_MOVE, .power = 10, @@ -15166,23 +14665,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_TORMENT_FOES, //EFFECT TODO }, - - [MOVE_G_MAX_FIREBALL_S] = - { //ANIM TODO - .effect = EFFECT_MAX_MOVE, - .power = 10, - .type = TYPE_FIRE, - .accuracy = 0, - .pp = 10, - .secondaryEffectChance = 0, - .target = MOVE_TARGET_SELECTED, - .priority = 0, - .flags = 0, - .split = SPLIT_SPECIAL, - .argument = MAX_EFFECT_TORMENT_FOES, //EFFECT TODO - }, - - [MOVE_G_MAX_HYDROSNIPE_P] = + + [MOVE_G_MAX_HYDROSNIPE] = { //ANIM TODO .effect = EFFECT_MAX_MOVE, .power = 10, @@ -15196,23 +14680,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_TORMENT_FOES, //EFFECT TODO }, - - [MOVE_G_MAX_HYDROSNIPE_S] = - { //ANIM TODO - .effect = EFFECT_MAX_MOVE, - .power = 10, - .type = TYPE_WATER, - .accuracy = 0, - .pp = 10, - .secondaryEffectChance = 0, - .target = MOVE_TARGET_SELECTED, - .priority = 0, - .flags = 0, - .split = SPLIT_SPECIAL, - .argument = MAX_EFFECT_TORMENT_FOES, //EFFECT TODO - }, - - [MOVE_G_MAX_WIND_RAGE_P] = + + [MOVE_G_MAX_WIND_RAGE] = { .effect = EFFECT_MAX_MOVE, .power = 10, @@ -15226,23 +14695,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_DEFOG, }, - - [MOVE_G_MAX_WIND_RAGE_S] = - { - .effect = EFFECT_MAX_MOVE, - .power = 10, - .type = TYPE_FLYING, - .accuracy = 0, - .pp = 10, - .secondaryEffectChance = 0, - .target = MOVE_TARGET_SELECTED, - .priority = 0, - .flags = 0, - .split = SPLIT_SPECIAL, - .argument = MAX_EFFECT_DEFOG, - }, - - [MOVE_G_MAX_GRAVITAS_P] = + + [MOVE_G_MAX_GRAVITAS] = { .effect = EFFECT_MAX_MOVE, .power = 10, @@ -15256,23 +14710,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_GRAVITY, }, - - [MOVE_G_MAX_GRAVITAS_S] = - { - .effect = EFFECT_MAX_MOVE, - .power = 10, - .type = TYPE_PSYCHIC, - .accuracy = 0, - .pp = 10, - .secondaryEffectChance = 0, - .target = MOVE_TARGET_SELECTED, - .priority = 0, - .flags = 0, - .split = SPLIT_SPECIAL, - .argument = MAX_EFFECT_GRAVITY, - }, - - [MOVE_G_MAX_STONESURGE_P] = + + [MOVE_G_MAX_STONESURGE] = { .effect = EFFECT_MAX_MOVE, .power = 10, @@ -15286,23 +14725,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_STEALTH_ROCK, }, - - [MOVE_G_MAX_STONESURGE_S] = - { - .effect = EFFECT_MAX_MOVE, - .power = 10, - .type = TYPE_WATER, - .accuracy = 0, - .pp = 10, - .secondaryEffectChance = 0, - .target = MOVE_TARGET_SELECTED, - .priority = 0, - .flags = 0, - .split = SPLIT_SPECIAL, - .argument = MAX_EFFECT_STEALTH_ROCK, - }, - - [MOVE_G_MAX_VOLCALITH_P] = + + [MOVE_G_MAX_VOLCALITH] = { .effect = EFFECT_MAX_MOVE, .power = 10, @@ -15316,23 +14740,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_VOLCAITH_FOES, }, - - [MOVE_G_MAX_VOLCALITH_S] = - { - .effect = EFFECT_MAX_MOVE, - .power = 10, - .type = TYPE_ROCK, - .accuracy = 0, - .pp = 10, - .secondaryEffectChance = 0, - .target = MOVE_TARGET_SELECTED, - .priority = 0, - .flags = 0, - .split = SPLIT_SPECIAL, - .argument = MAX_EFFECT_VOLCAITH_FOES, - }, - - [MOVE_G_MAX_TARTNESS_P] = + + [MOVE_G_MAX_TARTNESS] = { .effect = EFFECT_MAX_MOVE, .power = 10, @@ -15346,23 +14755,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_LOWER_EVASIVENESS_FOES, }, - - [MOVE_G_MAX_TARTNESS_S] = - { - .effect = EFFECT_MAX_MOVE, - .power = 10, - .type = TYPE_GRASS, - .accuracy = 0, - .pp = 10, - .secondaryEffectChance = 0, - .target = MOVE_TARGET_SELECTED, - .priority = 0, - .flags = 0, - .split = SPLIT_SPECIAL, - .argument = MAX_EFFECT_LOWER_EVASIVENESS_FOES, - }, - - [MOVE_G_MAX_SWEETNESS_P] = + + [MOVE_G_MAX_SWEETNESS] = { .effect = EFFECT_MAX_MOVE, .power = 10, @@ -15376,23 +14770,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_AROMATHERAPY, }, - - [MOVE_G_MAX_SWEETNESS_S] = - { - .effect = EFFECT_MAX_MOVE, - .power = 10, - .type = TYPE_GRASS, - .accuracy = 0, - .pp = 10, - .secondaryEffectChance = 0, - .target = MOVE_TARGET_SELECTED, - .priority = 0, - .flags = 0, - .split = SPLIT_SPECIAL, - .argument = MAX_EFFECT_AROMATHERAPY, - }, - - [MOVE_G_MAX_SANDBLAST_P] = + + [MOVE_G_MAX_SANDBLAST] = { .effect = EFFECT_MAX_MOVE, .power = 10, @@ -15406,23 +14785,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_SANDBLAST_FOES, }, - - [MOVE_G_MAX_SANDBLAST_S] = - { - .effect = EFFECT_MAX_MOVE, - .power = 10, - .type = TYPE_GROUND, - .accuracy = 0, - .pp = 10, - .secondaryEffectChance = 0, - .target = MOVE_TARGET_SELECTED, - .priority = 0, - .flags = 0, - .split = SPLIT_SPECIAL, - .argument = MAX_EFFECT_SANDBLAST_FOES, - }, - - [MOVE_G_MAX_STUN_SHOCK_P] = + + [MOVE_G_MAX_STUN_SHOCK] = { .effect = EFFECT_MAX_MOVE, .power = 10, @@ -15436,23 +14800,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_POISON_PARALYZE_FOES, }, - - [MOVE_G_MAX_STUN_SHOCK_S] = - { - .effect = EFFECT_MAX_MOVE, - .power = 10, - .type = TYPE_ELECTRIC, - .accuracy = 0, - .pp = 10, - .secondaryEffectChance = 0, - .target = MOVE_TARGET_SELECTED, - .priority = 0, - .flags = 0, - .split = SPLIT_SPECIAL, - .argument = MAX_EFFECT_POISON_PARALYZE_FOES, - }, - - [MOVE_G_MAX_CENTIFERNO_P] = + + [MOVE_G_MAX_CENTIFERNO] = { .effect = EFFECT_MAX_MOVE, .power = 10, @@ -15466,23 +14815,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_FIRE_SPIN_FOES, }, - - [MOVE_G_MAX_CENTIFERNO_S] = - { - .effect = EFFECT_MAX_MOVE, - .power = 10, - .type = TYPE_FIRE, - .accuracy = 0, - .pp = 10, - .secondaryEffectChance = 0, - .target = MOVE_TARGET_SELECTED, - .priority = 0, - .flags = 0, - .split = SPLIT_SPECIAL, - .argument = MAX_EFFECT_FIRE_SPIN_FOES, - }, - - [MOVE_G_MAX_SMITE_P] = + + [MOVE_G_MAX_SMITE] = { .effect = EFFECT_MAX_MOVE, .power = 10, @@ -15496,24 +14830,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_CONFUSE_FOES, }, + - [MOVE_G_MAX_SMITE_S] = - { - .effect = EFFECT_MAX_MOVE, - .power = 10, - .type = TYPE_FAIRY, - .accuracy = 0, - .pp = 10, - .secondaryEffectChance = 0, - .target = MOVE_TARGET_SELECTED, - .priority = 0, - .flags = 0, - .split = SPLIT_SPECIAL, - .argument = MAX_EFFECT_CONFUSE_FOES, - }, - - - [MOVE_G_MAX_SNOOZE_P] = + [MOVE_G_MAX_SNOOZE] = { .effect = EFFECT_MAX_MOVE, .power = 10, @@ -15527,23 +14846,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_YAWN_FOE, }, - - [MOVE_G_MAX_SNOOZE_S] = - { - .effect = EFFECT_MAX_MOVE, - .power = 10, - .type = TYPE_DARK, - .accuracy = 0, - .pp = 10, - .secondaryEffectChance = 0, - .target = MOVE_TARGET_SELECTED, - .priority = 0, - .flags = 0, - .split = SPLIT_SPECIAL, - .argument = MAX_EFFECT_YAWN_FOE, - }, - - [MOVE_G_MAX_FINALE_P] = + + [MOVE_G_MAX_FINALE] = { .effect = EFFECT_MAX_MOVE, .power = 10, @@ -15557,23 +14861,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_HEAL_TEAM, }, - - [MOVE_G_MAX_FINALE_S] = - { - .effect = EFFECT_MAX_MOVE, - .power = 10, - .type = TYPE_FAIRY, - .accuracy = 0, - .pp = 10, - .secondaryEffectChance = 0, - .target = MOVE_TARGET_SELECTED, - .priority = 0, - .flags = 0, - .split = SPLIT_SPECIAL, - .argument = MAX_EFFECT_HEAL_TEAM, - }, - - [MOVE_G_MAX_STEELSURGE_P] = + + [MOVE_G_MAX_STEELSURGE] = { .effect = EFFECT_MAX_MOVE, .power = 10, @@ -15587,23 +14876,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_STEELSURGE, }, - - [MOVE_G_MAX_STEELSURGE_S] = - { - .effect = EFFECT_MAX_MOVE, - .power = 10, - .type = TYPE_STEEL, - .accuracy = 0, - .pp = 10, - .secondaryEffectChance = 0, - .target = MOVE_TARGET_SELECTED, - .priority = 0, - .flags = 0, - .split = SPLIT_SPECIAL, - .argument = MAX_EFFECT_STEELSURGE, - }, - - [MOVE_G_MAX_DEPLETION_P] = + + [MOVE_G_MAX_DEPLETION] = { .effect = EFFECT_MAX_MOVE, .power = 10, @@ -15617,23 +14891,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_SPITE, }, - - [MOVE_G_MAX_DEPLETION_S] = - { - .effect = EFFECT_MAX_MOVE, - .power = 10, - .type = TYPE_DRAGON, - .accuracy = 0, - .pp = 10, - .secondaryEffectChance = 0, - .target = MOVE_TARGET_SELECTED, - .priority = 0, - .flags = 0, - .split = SPLIT_SPECIAL, - .argument = MAX_EFFECT_SPITE, - }, - - [MOVE_G_MAX_ONE_BLOW_P] = + + [MOVE_G_MAX_ONE_BLOW] = { .effect = EFFECT_MAX_MOVE, .power = 10, @@ -15647,23 +14906,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_TORMENT_FOES, //EFFECT TODO }, - - [MOVE_G_MAX_ONE_BLOW_S] = - { //ANIM TODO - .effect = EFFECT_MAX_MOVE, - .power = 10, - .type = TYPE_DARK, - .accuracy = 0, - .pp = 10, - .secondaryEffectChance = 0, - .target = MOVE_TARGET_SELECTED, - .priority = 0, - .flags = 0, - .split = SPLIT_SPECIAL, - .argument = MAX_EFFECT_TORMENT_FOES, //EFFECT TODO - }, - - [MOVE_G_MAX_RAPID_FLOW_P] = + + [MOVE_G_MAX_RAPID_FLOW] = { //ANIM TODO .effect = EFFECT_MAX_MOVE, .power = 10, @@ -15677,21 +14921,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_TORMENT_FOES, //EFFECT TODO }, - - [MOVE_G_MAX_RAPID_FLOW_S] = - { //ANIM TODO - .effect = EFFECT_MAX_MOVE, - .power = 10, - .type = TYPE_WATER, - .accuracy = 0, - .pp = 10, - .secondaryEffectChance = 0, - .target = MOVE_TARGET_SELECTED, - .priority = 0, - .flags = 0, - .split = SPLIT_SPECIAL, - .argument = MAX_EFFECT_TORMENT_FOES, //EFFECT TODO - }, + }; const u8 gDynamaxMovePowers[MOVES_COUNT] = diff --git a/src/data/text/move_names.h b/src/data/text/move_names.h index 7f5a1685e6..d319900a16 100644 --- a/src/data/text/move_names.h +++ b/src/data/text/move_names.h @@ -783,109 +783,58 @@ const u8 gMoveNames[MOVES_COUNT_DYNAMAX][MOVE_NAME_LENGTH + 1] = [MOVE_TAKE_HEART] = _("Take Heart"), // Max Moves [MOVE_MAX_GUARD] = _("Max Guard"), - [MOVE_MAX_STRIKE_P] = _("Max Strike"), - [MOVE_MAX_STRIKE_S] = _("Max Strike"), - [MOVE_MAX_KNUCKLE_P] = _("Max Knuckle"), - [MOVE_MAX_KNUCKLE_S] = _("Max Knuckle"), - [MOVE_MAX_AIRSTREAM_P] = _("Max Airstream"), - [MOVE_MAX_AIRSTREAM_S] = _("Max Airstream"), - [MOVE_MAX_OOZE_P] = _("Max Ooze"), - [MOVE_MAX_OOZE_S] = _("Max Ooze"), - [MOVE_MAX_QUAKE_P] = _("Max Quake"), - [MOVE_MAX_QUAKE_S] = _("Max Quake"), - [MOVE_MAX_ROCKFALL_P] = _("Max Rockfall"), - [MOVE_MAX_ROCKFALL_S] = _("Max Rockfall"), - [MOVE_MAX_FLUTTERBY_P] = _("Max Flutterby"), - [MOVE_MAX_FLUTTERBY_S] = _("Max Flutterby"), - [MOVE_MAX_PHANTASM_P] = _("Max Phantasm"), - [MOVE_MAX_PHANTASM_S] = _("Max Phantasm"), - [MOVE_MAX_STEELSPIKE_P] = _("Max Steelspike"), - [MOVE_MAX_STEELSPIKE_S] = _("Max Steelspike"), - [MOVE_MAX_FLARE_P] = _("Max Flare"), - [MOVE_MAX_FLARE_S] = _("Max Flare"), - [MOVE_MAX_GEYSER_P] = _("Max Geyser"), - [MOVE_MAX_GEYSER_S] = _("Max Geyser"), - [MOVE_MAX_OVERGROWTH_P] = _("Max Overgrowth"), - [MOVE_MAX_OVERGROWTH_S] = _("Max Overgrowth"), - [MOVE_MAX_LIGHTNING_P] = _("Max Lightning"), - [MOVE_MAX_LIGHTNING_S] = _("Max Lightning"), - [MOVE_MAX_HAILSTORM_P] = _("Max Hailstorm"), - [MOVE_MAX_HAILSTORM_S] = _("Max Hailstorm"), - [MOVE_MAX_MINDSTORM_P] = _("Max Mindstorm"), - [MOVE_MAX_MINDSTORM_S] = _("Max Mindstorm"), - [MOVE_MAX_WYRMWIND_P] = _("Max Wyrmwind"), - [MOVE_MAX_WYRMWIND_S] = _("Max Wyrmwind"), - [MOVE_MAX_DARKNESS_P] = _("Max Darkness"), - [MOVE_MAX_DARKNESS_S] = _("Max Darkness"), - [MOVE_MAX_STARFALL_P] = _("Max Starfall"), - [MOVE_MAX_STARFALL_S] = _("Max Starfall"), + [MOVE_MAX_STRIKE] = _("Max Strike"), + [MOVE_MAX_KNUCKLE] = _("Max Knuckle"), + [MOVE_MAX_AIRSTREAM] = _("Max Airstream"), + [MOVE_MAX_OOZE] = _("Max Ooze"), + [MOVE_MAX_QUAKE] = _("Max Quake"), + [MOVE_MAX_ROCKFALL] = _("Max Rockfall"), + [MOVE_MAX_FLUTTERBY] = _("Max Flutterby"), + [MOVE_MAX_PHANTASM] = _("Max Phantasm"), + [MOVE_MAX_STEELSPIKE] = _("Max Steelspike"), + [MOVE_MAX_FLARE] = _("Max Flare"), + [MOVE_MAX_GEYSER] = _("Max Geyser"), + [MOVE_MAX_OVERGROWTH] = _("Max Overgrowth"), + [MOVE_MAX_LIGHTNING] = _("Max Lightning"), + [MOVE_MAX_HAILSTORM] = _("Max Hailstorm"), + [MOVE_MAX_MINDSTORM] = _("Max Mindstorm"), + [MOVE_MAX_WYRMWIND] = _("Max Wyrmwind"), + [MOVE_MAX_DARKNESS] = _("Max Darkness"), + [MOVE_MAX_STARFALL] = _("Max Starfall"), // Gigantamax Moves - [MOVE_G_MAX_VINE_LASH_P] = _("Gmax Vine Lash"), - [MOVE_G_MAX_VINE_LASH_S] = _("Gmax Vine Lash"), - [MOVE_G_MAX_WILDFIRE_P] = _("Gmax Wildfire"), - [MOVE_G_MAX_WILDFIRE_S] = _("Gmax Wildfire"), - [MOVE_G_MAX_CANNONADE_P] = _("Gmax Cannonade"), - [MOVE_G_MAX_CANNONADE_S] = _("Gmax Cannonade"), - [MOVE_G_MAX_BEFUDDLE_P] = _("Gmax Befuddle"), - [MOVE_G_MAX_BEFUDDLE_S] = _("Gmax Befuddle"), - [MOVE_G_MAX_VOLT_CRASH_P] = _("Gmax Volt Crash"), - [MOVE_G_MAX_VOLT_CRASH_S] = _("Gmax Volt Crash"), - [MOVE_G_MAX_GOLD_RUSH_P] = _("Gmax Gold Rush"), - [MOVE_G_MAX_GOLD_RUSH_S] = _("Gmax Gold Rush"), - [MOVE_G_MAX_CHI_STRIKE_P] = _("Gmax Chi Strike"), - [MOVE_G_MAX_CHI_STRIKE_S] = _("Gmax Chi Strike"), - [MOVE_G_MAX_TERROR_P] = _("Gmax Terror"), - [MOVE_G_MAX_TERROR_S] = _("Gmax Terror"), - [MOVE_G_MAX_FOAM_BURST_P] = _("Gmax Foam Burst"), - [MOVE_G_MAX_FOAM_BURST_S] = _("Gmax Foam Burst"), - [MOVE_G_MAX_RESONANCE_P] = _("Gmax Resonance"), - [MOVE_G_MAX_RESONANCE_S] = _("Gmax Resonance"), - [MOVE_G_MAX_CUDDLE_P] = _("Gmax Cuddle"), - [MOVE_G_MAX_CUDDLE_S] = _("Gmax Cuddle"), - [MOVE_G_MAX_REPLENISH_P] = _("Gmax Replenish"), - [MOVE_G_MAX_REPLENISH_S] = _("Gmax Replenish"), - [MOVE_G_MAX_MALODOR_P] = _("Gmax Malodor"), - [MOVE_G_MAX_MALODOR_S] = _("Gmax Malodor"), - [MOVE_G_MAX_MELTDOWN_P] = _("Gmax Meltdown"), - [MOVE_G_MAX_MELTDOWN_S] = _("Gmax Meltdown"), - [MOVE_G_MAX_DRUM_SOLO_P] = _("Gmax Drum Solo"), - [MOVE_G_MAX_DRUM_SOLO_S] = _("Gmax Drum Solo"), - [MOVE_G_MAX_FIREBALL_P] = _("Gmax Fireball"), - [MOVE_G_MAX_FIREBALL_S] = _("Gmax Fireball"), - [MOVE_G_MAX_HYDROSNIPE_P] = _("Gmax Hydrosnipe"), - [MOVE_G_MAX_HYDROSNIPE_S] = _("Gmax Hydrosnipe"), - [MOVE_G_MAX_WIND_RAGE_P] = _("Gmax Wind Rage"), - [MOVE_G_MAX_WIND_RAGE_S] = _("Gmax Wind Rage"), - [MOVE_G_MAX_GRAVITAS_P] = _("Gmax Gravitas"), - [MOVE_G_MAX_GRAVITAS_S] = _("Gmax Gravitas"), - [MOVE_G_MAX_STONESURGE_P] = _("Gmax Stonesurge"), - [MOVE_G_MAX_STONESURGE_S] = _("Gmax Stonesurge"), - [MOVE_G_MAX_VOLCALITH_P] = _("Gmax Volcalith"), - [MOVE_G_MAX_VOLCALITH_S] = _("Gmax Volcalith"), - [MOVE_G_MAX_TARTNESS_P] = _("Gmax Tartness"), - [MOVE_G_MAX_TARTNESS_S] = _("Gmax Tartness"), - [MOVE_G_MAX_SWEETNESS_P] = _("Gmax Sweetness"), - [MOVE_G_MAX_SWEETNESS_S] = _("Gmax Sweetness"), - [MOVE_G_MAX_SANDBLAST_P] = _("Gmax Sandblast"), - [MOVE_G_MAX_SANDBLAST_S] = _("Gmax Sandblast"), - [MOVE_G_MAX_STUN_SHOCK_P] = _("Gmax Stun Shock"), - [MOVE_G_MAX_STUN_SHOCK_S] = _("Gmax Stun Shock"), - [MOVE_G_MAX_CENTIFERNO_P] = _("Gmax Centiferno"), - [MOVE_G_MAX_CENTIFERNO_S] = _("Gmax Centiferno"), - [MOVE_G_MAX_SMITE_P] = _("Gmax Smite"), - [MOVE_G_MAX_SMITE_S] = _("Gmax Smite"), - [MOVE_G_MAX_SNOOZE_P] = _("Gmax Snooze"), - [MOVE_G_MAX_SNOOZE_S] = _("Gmax Snooze"), - [MOVE_G_MAX_FINALE_P] = _("Gmax Finale"), - [MOVE_G_MAX_FINALE_S] = _("Gmax Finale"), - [MOVE_G_MAX_STEELSURGE_P] = _("Gmax Steelsurge"), - [MOVE_G_MAX_STEELSURGE_S] = _("Gmax Steelsurge"), - [MOVE_G_MAX_DEPLETION_P] = _("Gmax Depletion"), - [MOVE_G_MAX_DEPLETION_S] = _("Gmax Depletion"), - [MOVE_G_MAX_ONE_BLOW_P] = _("Gmax One Blow"), - [MOVE_G_MAX_ONE_BLOW_S] = _("Gmax One Blow"), - [MOVE_G_MAX_RAPID_FLOW_P] = _("Gmax Rapid Flow"), - [MOVE_G_MAX_RAPID_FLOW_S] = _("Gmax Rapid Flow"), + [MOVE_G_MAX_VINE_LASH] = _("Gmax Vine Lash"), + [MOVE_G_MAX_WILDFIRE] = _("Gmax Wildfire"), + [MOVE_G_MAX_CANNONADE] = _("Gmax Cannonade"), + [MOVE_G_MAX_BEFUDDLE] = _("Gmax Befuddle"), + [MOVE_G_MAX_VOLT_CRASH] = _("Gmax Volt Crash"), + [MOVE_G_MAX_GOLD_RUSH] = _("Gmax Gold Rush"), + [MOVE_G_MAX_CHI_STRIKE] = _("Gmax Chi Strike"), + [MOVE_G_MAX_TERROR] = _("Gmax Terror"), + [MOVE_G_MAX_FOAM_BURST] = _("Gmax Foam Burst"), + [MOVE_G_MAX_RESONANCE] = _("Gmax Resonance"), + [MOVE_G_MAX_CUDDLE] = _("Gmax Cuddle"), + [MOVE_G_MAX_REPLENISH] = _("Gmax Replenish"), + [MOVE_G_MAX_MALODOR] = _("Gmax Malodor"), + [MOVE_G_MAX_MELTDOWN] = _("Gmax Meltdown"), + [MOVE_G_MAX_DRUM_SOLO] = _("Gmax Drum Solo"), + [MOVE_G_MAX_FIREBALL] = _("Gmax Fireball"), + [MOVE_G_MAX_HYDROSNIPE] = _("Gmax Hydrosnipe"), + [MOVE_G_MAX_WIND_RAGE] = _("Gmax Wind Rage"), + [MOVE_G_MAX_GRAVITAS] = _("Gmax Gravitas"), + [MOVE_G_MAX_STONESURGE] = _("Gmax Stonesurge"), + [MOVE_G_MAX_VOLCALITH] = _("Gmax Volcalith"), + [MOVE_G_MAX_TARTNESS] = _("Gmax Tartness"), + [MOVE_G_MAX_SWEETNESS] = _("Gmax Sweetness"), + [MOVE_G_MAX_SANDBLAST] = _("Gmax Sandblast"), + [MOVE_G_MAX_STUN_SHOCK] = _("Gmax Stun Shock"), + [MOVE_G_MAX_CENTIFERNO] = _("Gmax Centiferno"), + [MOVE_G_MAX_SMITE] = _("Gmax Smite"), + [MOVE_G_MAX_SNOOZE] = _("Gmax Snooze"), + [MOVE_G_MAX_FINALE] = _("Gmax Finale"), + [MOVE_G_MAX_STEELSURGE] = _("Gmax Steelsurge"), + [MOVE_G_MAX_DEPLETION] = _("Gmax Depletion"), + [MOVE_G_MAX_ONE_BLOW] = _("Gmax One Blow"), + [MOVE_G_MAX_RAPID_FLOW] = _("Gmax Rapid Flow"), }; #else // 12 letters @@ -1672,109 +1621,58 @@ const u8 gMoveNames[MOVES_COUNT_DYNAMAX][MOVE_NAME_LENGTH + 1] = [MOVE_TAKE_HEART] = _("Take Heart"), // Max Moves [MOVE_MAX_GUARD] = _("M-Guard"), - [MOVE_MAX_STRIKE_P] = _("M-Strike"), - [MOVE_MAX_STRIKE_S] = _("M-Strike"), - [MOVE_MAX_KNUCKLE_P] = _("M-Knuckle"), - [MOVE_MAX_KNUCKLE_S] = _("M-Knuckle"), - [MOVE_MAX_AIRSTREAM_P] = _("M-Airstream"), - [MOVE_MAX_AIRSTREAM_S] = _("M-Airstream"), - [MOVE_MAX_OOZE_P] = _("M-Ooze"), - [MOVE_MAX_OOZE_S] = _("M-Ooze"), - [MOVE_MAX_QUAKE_P] = _("M-Quake"), - [MOVE_MAX_QUAKE_S] = _("M-Quake"), - [MOVE_MAX_ROCKFALL_P] = _("M-Rockfall"), - [MOVE_MAX_ROCKFALL_S] = _("M-Rockfall"), - [MOVE_MAX_FLUTTERBY_P] = _("M-Flutterby"), - [MOVE_MAX_FLUTTERBY_S] = _("M-Flutterby"), - [MOVE_MAX_PHANTASM_P] = _("M-Phantasm"), - [MOVE_MAX_PHANTASM_S] = _("M-Phantasm"), - [MOVE_MAX_STEELSPIKE_P] = _("M-Steelspike"), - [MOVE_MAX_STEELSPIKE_S] = _("M-Steelspike"), - [MOVE_MAX_FLARE_P] = _("M-Flare"), - [MOVE_MAX_FLARE_S] = _("M-Flare"), - [MOVE_MAX_GEYSER_P] = _("M-Geyser"), - [MOVE_MAX_GEYSER_S] = _("M-Geyser"), - [MOVE_MAX_OVERGROWTH_P] = _("M-Overgrowth"), - [MOVE_MAX_OVERGROWTH_S] = _("M-Overgrowth"), - [MOVE_MAX_LIGHTNING_P] = _("M-Lightning"), - [MOVE_MAX_LIGHTNING_S] = _("M-Lightning"), - [MOVE_MAX_HAILSTORM_P] = _("M-Hailstorm"), - [MOVE_MAX_HAILSTORM_S] = _("M-Hailstorm"), - [MOVE_MAX_MINDSTORM_P] = _("M-Mindstorm"), - [MOVE_MAX_MINDSTORM_S] = _("M-Mindstorm"), - [MOVE_MAX_WYRMWIND_P] = _("M-Wyrmwind"), - [MOVE_MAX_WYRMWIND_S] = _("M-Wyrmwind"), - [MOVE_MAX_DARKNESS_P] = _("M-Darkness"), - [MOVE_MAX_DARKNESS_S] = _("M-Darkness"), - [MOVE_MAX_STARFALL_P] = _("M-Starfall"), - [MOVE_MAX_STARFALL_S] = _("M-Starfall"), + [MOVE_MAX_STRIKE] = _("M-Strike"), + [MOVE_MAX_KNUCKLE] = _("M-Knuckle"), + [MOVE_MAX_AIRSTREAM] = _("M-Airstream"), + [MOVE_MAX_OOZE] = _("M-Ooze"), + [MOVE_MAX_QUAKE] = _("M-Quake"), + [MOVE_MAX_ROCKFALL] = _("M-Rockfall"), + [MOVE_MAX_FLUTTERBY] = _("M-Flutterby"), + [MOVE_MAX_PHANTASM] = _("M-Phantasm"), + [MOVE_MAX_STEELSPIKE] = _("M-Steelspike"), + [MOVE_MAX_FLARE] = _("M-Flare"), + [MOVE_MAX_GEYSER] = _("M-Geyser"), + [MOVE_MAX_OVERGROWTH] = _("M-Overgrowth"), + [MOVE_MAX_LIGHTNING] = _("M-Lightning"), + [MOVE_MAX_HAILSTORM] = _("M-Hailstorm"), + [MOVE_MAX_MINDSTORM] = _("M-Mindstorm"), + [MOVE_MAX_WYRMWIND] = _("M-Wyrmwind"), + [MOVE_MAX_DARKNESS] = _("M-Darkness"), + [MOVE_MAX_STARFALL] = _("M-Starfall"), // Gigantamax Moves - [MOVE_G_MAX_VINE_LASH_P] = _("G-Vine Lash"), - [MOVE_G_MAX_VINE_LASH_S] = _("G-Vine Lash"), - [MOVE_G_MAX_WILDFIRE_P] = _("G-Wildfire"), - [MOVE_G_MAX_WILDFIRE_S] = _("G-Wildfire"), - [MOVE_G_MAX_CANNONADE_P] = _("G-Cannonade"), - [MOVE_G_MAX_CANNONADE_S] = _("G-Cannonade"), - [MOVE_G_MAX_BEFUDDLE_P] = _("G-Befuddle"), - [MOVE_G_MAX_BEFUDDLE_S] = _("G-Befuddle"), - [MOVE_G_MAX_VOLT_CRASH_P] = _("G-VoltCrash"), - [MOVE_G_MAX_VOLT_CRASH_S] = _("G-VoltCrash"), - [MOVE_G_MAX_GOLD_RUSH_P] = _("G-Gold Rush"), - [MOVE_G_MAX_GOLD_RUSH_S] = _("G-Gold Rush"), - [MOVE_G_MAX_CHI_STRIKE_P] = _("G-ChiStrike"), - [MOVE_G_MAX_CHI_STRIKE_S] = _("G-ChiStrike"), - [MOVE_G_MAX_TERROR_P] = _("G-Terror"), - [MOVE_G_MAX_TERROR_S] = _("G-Terror"), - [MOVE_G_MAX_FOAM_BURST_P] = _("G-FoamBurst"), - [MOVE_G_MAX_FOAM_BURST_S] = _("G-FoamBurst"), - [MOVE_G_MAX_RESONANCE_P] = _("G-Resonance"), - [MOVE_G_MAX_RESONANCE_S] = _("G-Resonance"), - [MOVE_G_MAX_CUDDLE_P] = _("G-Cuddle"), - [MOVE_G_MAX_CUDDLE_S] = _("G-Cuddle"), - [MOVE_G_MAX_REPLENISH_P] = _("G-Replenish"), - [MOVE_G_MAX_REPLENISH_S] = _("G-Replenish"), - [MOVE_G_MAX_MALODOR_P] = _("G-Malodor"), - [MOVE_G_MAX_MALODOR_S] = _("G-Malodor"), - [MOVE_G_MAX_MELTDOWN_P] = _("G-Meltdown"), - [MOVE_G_MAX_MELTDOWN_S] = _("G-Meltdown"), - [MOVE_G_MAX_DRUM_SOLO_P] = _("G-Drum Solo"), - [MOVE_G_MAX_DRUM_SOLO_S] = _("G-Drum Solo"), - [MOVE_G_MAX_FIREBALL_P] = _("G-Fireball"), - [MOVE_G_MAX_FIREBALL_S] = _("G-Fireball"), - [MOVE_G_MAX_HYDROSNIPE_P] = _("G-Hydrsnipe"), - [MOVE_G_MAX_HYDROSNIPE_S] = _("G-Hydrsnipe"), - [MOVE_G_MAX_WIND_RAGE_P] = _("G-Wind Rage"), - [MOVE_G_MAX_WIND_RAGE_S] = _("G-Wind Rage"), - [MOVE_G_MAX_GRAVITAS_P] = _("G-Gravitas"), - [MOVE_G_MAX_GRAVITAS_S] = _("G-Gravitas"), - [MOVE_G_MAX_STONESURGE_P] = _("G-Stonesrge"), - [MOVE_G_MAX_STONESURGE_S] = _("G-Stonesrge"), - [MOVE_G_MAX_VOLCALITH_P] = _("G-Volcalith"), - [MOVE_G_MAX_VOLCALITH_S] = _("G-Volcalith"), - [MOVE_G_MAX_TARTNESS_P] = _("G-Tartness"), - [MOVE_G_MAX_TARTNESS_S] = _("G-Tartness"), - [MOVE_G_MAX_SWEETNESS_P] = _("G-Sweetness"), - [MOVE_G_MAX_SWEETNESS_S] = _("G-Sweetness"), - [MOVE_G_MAX_SANDBLAST_P] = _("G-Sandblast"), - [MOVE_G_MAX_SANDBLAST_S] = _("G-Sandblast"), - [MOVE_G_MAX_STUN_SHOCK_P] = _("G-StunShock"), - [MOVE_G_MAX_STUN_SHOCK_S] = _("G-StunShock"), - [MOVE_G_MAX_CENTIFERNO_P] = _("G-Centiferno"), - [MOVE_G_MAX_CENTIFERNO_S] = _("G-Centiferno"), - [MOVE_G_MAX_SMITE_P] = _("G-Smite"), - [MOVE_G_MAX_SMITE_S] = _("G-Smite"), - [MOVE_G_MAX_SNOOZE_P] = _("G-Snooze"), - [MOVE_G_MAX_SNOOZE_S] = _("G-Snooze"), - [MOVE_G_MAX_FINALE_P] = _("G-Finale"), - [MOVE_G_MAX_FINALE_S] = _("G-Finale"), - [MOVE_G_MAX_STEELSURGE_P] = _("G-Steelsrge"), - [MOVE_G_MAX_STEELSURGE_S] = _("G-Steelsrge"), - [MOVE_G_MAX_DEPLETION_P] = _("G-Depletion"), - [MOVE_G_MAX_DEPLETION_S] = _("G-Depletion"), - [MOVE_G_MAX_ONE_BLOW_P] = _("G-One Blow"), - [MOVE_G_MAX_ONE_BLOW_S] = _("G-One Blow"), - [MOVE_G_MAX_RAPID_FLOW_P] = _("G-Rapid Flow"), - [MOVE_G_MAX_RAPID_FLOW_S] = _("G-Rapid Flow"), + [MOVE_G_MAX_VINE_LASH] = _("G-Vine Lash"), + [MOVE_G_MAX_WILDFIRE] = _("G-Wildfire"), + [MOVE_G_MAX_CANNONADE] = _("G-Cannonade"), + [MOVE_G_MAX_BEFUDDLE] = _("G-Befuddle"), + [MOVE_G_MAX_VOLT_CRASH] = _("G-VoltCrash"), + [MOVE_G_MAX_GOLD_RUSH] = _("G-Gold Rush"), + [MOVE_G_MAX_CHI_STRIKE] = _("G-ChiStrike"), + [MOVE_G_MAX_TERROR] = _("G-Terror"), + [MOVE_G_MAX_FOAM_BURST] = _("G-FoamBurst"), + [MOVE_G_MAX_RESONANCE] = _("G-Resonance"), + [MOVE_G_MAX_CUDDLE] = _("G-Cuddle"), + [MOVE_G_MAX_REPLENISH] = _("G-Replenish"), + [MOVE_G_MAX_MALODOR] = _("G-Malodor"), + [MOVE_G_MAX_MELTDOWN] = _("G-Meltdown"), + [MOVE_G_MAX_DRUM_SOLO] = _("G-Drum Solo"), + [MOVE_G_MAX_FIREBALL] = _("G-Fireball"), + [MOVE_G_MAX_HYDROSNIPE] = _("G-Hydrsnipe"), + [MOVE_G_MAX_WIND_RAGE] = _("G-Wind Rage"), + [MOVE_G_MAX_GRAVITAS] = _("G-Gravitas"), + [MOVE_G_MAX_STONESURGE] = _("G-Stonesrge"), + [MOVE_G_MAX_VOLCALITH] = _("G-Volcalith"), + [MOVE_G_MAX_TARTNESS] = _("G-Tartness"), + [MOVE_G_MAX_SWEETNESS] = _("G-Sweetness"), + [MOVE_G_MAX_SANDBLAST] = _("G-Sandblast"), + [MOVE_G_MAX_STUN_SHOCK] = _("G-StunShock"), + [MOVE_G_MAX_CENTIFERNO] = _("G-Centiferno"), + [MOVE_G_MAX_SMITE] = _("G-Smite"), + [MOVE_G_MAX_SNOOZE] = _("G-Snooze"), + [MOVE_G_MAX_FINALE] = _("G-Finale"), + [MOVE_G_MAX_STEELSURGE] = _("G-Steelsrge"), + [MOVE_G_MAX_DEPLETION] = _("G-Depletion"), + [MOVE_G_MAX_ONE_BLOW] = _("G-One Blow"), + [MOVE_G_MAX_RAPID_FLOW] = _("G-Rapid Flow"), }; #endif From 87a9150134108d59f034a05eb3804f8ab789db46 Mon Sep 17 00:00:00 2001 From: AgustinGDLV Date: Tue, 21 Feb 2023 20:16:25 -0800 Subject: [PATCH 007/162] added base functionality for max moves --- asm/macros/battle_script.inc | 15 +++ data/battle_anim_scripts.s | 65 ++++++++-- data/battle_scripts_1.s | 72 +++++++++-- include/battle.h | 10 ++ include/battle_dynamax.h | 8 +- include/battle_scripts.h | 6 + include/constants/battle.h | 6 +- include/constants/battle_anim.h | 1 + include/constants/battle_script_commands.h | 3 + src/battle_anim_new.c | 57 +++++++++ src/battle_dynamax.c | 103 ++++++++++++++++ src/battle_main.c | 7 ++ src/battle_message.c | 2 + src/battle_script_commands.c | 131 +++++++++++++++++++++ src/battle_util.c | 24 ++++ src/data/battle_moves.h | 5 + 16 files changed, 496 insertions(+), 19 deletions(-) create mode 100644 src/battle_dynamax.c diff --git a/asm/macros/battle_script.inc b/asm/macros/battle_script.inc index 146fea5cc4..bc63397341 100644 --- a/asm/macros/battle_script.inc +++ b/asm/macros/battle_script.inc @@ -2145,3 +2145,18 @@ .macro trysymbiosis various BS_ATTACKER, VARIOUS_TRY_SYMBIOSIS .endm + + @ The next few macros are used by Max Moves. + .macro setmaxmoveeffect + various 0, VARIOUS_SET_MAX_MOVE_EFFECT + .endm + + .macro jumpiftargetabsent, ptr:req + various 0, VARIOUS_JUMP_IF_TARGET_ABSENT + .4byte \ptr + .endm + + .macro jumpiftargetnotally, ptr:req + various 0, VARIOUS_JUMP_IF_TARGET_NOT_ALLY + .4byte \ptr + .endm diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index 96928560e4..33c8eb71c8 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -916,6 +916,7 @@ gBattleAnims_General:: .4byte General_ShellTrapSetUp @ B_ANIM_SHELL_TRAP_SETUP .4byte General_ZMoveActivate @ B_ANIM_ZMOVE_ACTIVATE .4byte General_AffectionHangedOn @ B_ANIM_AFFECTION_HANGED_ON + .4byte General_SetWeather @ B_ANIM_MAX_SET_WEATHER .align 2 gBattleAnims_Special:: @@ -30654,23 +30655,71 @@ SoulStealingSevenStarStrikeExplosion: return @@@@@@@@@@ MAX MOVES @@@@@@@@@@ -Move_MAX_GUARD: -Move_MAX_STRIKE: +General_SetWeather:: + createvisualtask AnimTask_GetWeatherToSet, 2 + jumpreteq 1, General_Sun + jumpreteq 2, General_Rain + jumpreteq 3, General_Sandstorm + jumpreteq 4, General_Hail + end + Move_MAX_KNUCKLE: -Move_MAX_AIRSTREAM: -Move_MAX_OOZE: Move_MAX_QUAKE: Move_MAX_ROCKFALL: Move_MAX_FLUTTERBY: Move_MAX_PHANTASM: Move_MAX_STEELSPIKE: -Move_MAX_FLARE: -Move_MAX_GEYSER: -Move_MAX_OVERGROWTH: -Move_MAX_LIGHTNING: Move_MAX_HAILSTORM: Move_MAX_MINDSTORM: Move_MAX_WYRMWIND: Move_MAX_DARKNESS: Move_MAX_STARFALL: end + +Move_MAX_GUARD: + launchtask AnimTask_DynamaxGrowth 0x5 0x1 0x1 + waitforvisualfinish + goto Move_PROTECT + end + +Move_MAX_STRIKE:: + launchtask AnimTask_DynamaxGrowth 0x5 0x1 0x1 + waitforvisualfinish + goto Move_GIGA_IMPACT + end + +Move_MAX_AIRSTREAM:: + launchtask AnimTask_DynamaxGrowth 0x5 0x1 0x1 + waitforvisualfinish + goto Move_AEROBLAST + end + +Move_MAX_OOZE:: + launchtask AnimTask_DynamaxGrowth 0x5 0x1 0x1 + waitforvisualfinish + goto Move_GUNK_SHOT + end + +Move_MAX_FLARE:: + launchtask AnimTask_DynamaxGrowth 0x5 0x1 0x1 + waitforvisualfinish + goto Move_BLAST_BURN + end + +Move_MAX_GEYSER:: + launchtask AnimTask_DynamaxGrowth 0x5 0x1 0x1 + waitforvisualfinish + goto Move_HYDRO_CANNON + end + +Move_MAX_OVERGROWTH:: + launchtask AnimTask_DynamaxGrowth 0x5 0x1 0x1 + waitforvisualfinish + goto Move_FRENZY_PLANT + end + +Move_MAX_LIGHTNING:: + launchtask AnimTask_DynamaxGrowth 0x5 0x1 0x1 + waitforvisualfinish + goto Move_ZAP_CANNON + end diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index b46fbba590..dd291aedfc 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -417,14 +417,6 @@ gBattleScriptsForMoveEffects:: .4byte BattleScript_EffectTerrainHit @ EFFECT_DAMAGE_SET_TERRAIN .4byte BattleScript_EffectMaxMove @ EFFECT_MAX_MOVE -BattleScript_EffectMaxMove:: - attackcanceler - @setmaxmoveeffect - accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON - attackstring - ppreduce - goto BattleScript_HitFromCritCalc - BattleScript_AffectionBasedEndurance:: playanimation BS_TARGET, B_ANIM_AFFECTION_HANGED_ON printstring STRINGID_TARGETTOUGHEDITOUT @@ -9889,3 +9881,67 @@ BattleScript_SymbiosisActivates:: printstring STRINGID_SYMBIOSISITEMPASS waitmessage B_WAIT_TIME_LONG return + +@@@ MAX MOVES @@@ +BattleScript_EffectMaxMove:: + attackcanceler + setmaxmoveeffect + accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON + attackstring + ppreduce + goto BattleScript_HitFromCritCalc + +BattleScript_EffectRaiseSideStats:: + savetarget + setbyte gBattlerTarget, 0 +BattleScript_RaiseSideStatsLoop: + jumpiftargetnotally BattleScript_RaiseSideStatsIncrement + jumpiftargetabsent BattleScript_RaiseSideStatsIncrement + statbuffchange STAT_CHANGE_ALLOW_PTR, BattleScript_RaiseSideStatsIncrement + jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_STAT_WONT_INCREASE, BattleScript_RaiseSideStatsIncrement + setgraphicalstatchangevalues + playanimation BS_TARGET, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1 + printfromtable gStatUpStringIds + waitmessage B_WAIT_TIME_LONG +BattleScript_RaiseSideStatsIncrement: + setbyte sSTAT_ANIM_PLAYED, FALSE + addbyte gBattlerTarget, 1 + jumpifbytenotequal gBattlerTarget, gBattlersCount, BattleScript_RaiseSideStatsLoop +BattleScript_RaiseSideStatsEnd: + restoretarget + return + +BattleScript_EffectLowerSideStats:: + savetarget + setbyte gBattlerTarget, 0 +BattleScript_LowerSideStatsLoop: + jumpiftargetally BattleScript_LowerSideStatsIncrement + jumpiftargetabsent BattleScript_LowerSideStatsIncrement + statbuffchange STAT_CHANGE_ALLOW_PTR, BattleScript_LowerSideStatsIncrement + jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_STAT_WONT_DECREASE, BattleScript_LowerSideStatsIncrement + setgraphicalstatchangevalues + playanimation BS_TARGET, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1 + printfromtable gStatDownStringIds + waitmessage B_WAIT_TIME_LONG +BattleScript_LowerSideStatsIncrement: + setbyte sSTAT_ANIM_PLAYED, FALSE + addbyte gBattlerTarget, 1 + jumpifbytenotequal gBattlerTarget, gBattlersCount, BattleScript_LowerSideStatsLoop +BattleScript_LowerSideStatsEnd: + restoretarget + return + +BattleScript_EffectSetWeather:: + playanimation 0, B_ANIM_MAX_SET_WEATHER + printfromtable gMoveWeatherChangeStringIds + waitmessage B_WAIT_TIME_LONG + call BattleScript_WeatherFormChanges + return + +BattleScript_EffectSetTerrain:: + printfromtable gTerrainStringIds + waitmessage B_WAIT_TIME_LONG + playanimation BS_SCRIPTING, B_ANIM_RESTORE_BG + call BattleScript_TerrainSeedLoop + jumpifabilitypresent ABILITY_MIMICRY, BattleScript_ApplyMimicry + return diff --git a/include/battle.h b/include/battle.h index 3739a04307..701c9c8df9 100644 --- a/include/battle.h +++ b/include/battle.h @@ -148,6 +148,7 @@ struct ProtectStruct u16 quickDraw:1; u16 beakBlastCharge:1; u16 quash:1; + u16 maxGuarded:1; u32 physicalDmg; u32 specialDmg; u8 physicalBattlerId; @@ -510,6 +511,14 @@ struct ZMoveData u8 splits[MAX_BATTLERS_COUNT]; }; +struct DynamaxData +{ + u8 dynamaxTurns[MAX_BATTLERS_COUNT]; + u8 usingMaxMove[MAX_BATTLERS_COUNT]; + u8 activeSplit; + u8 splits[MAX_BATTLERS_COUNT]; +}; + struct StolenItem { u16 originalItem:15; @@ -615,6 +624,7 @@ struct BattleStruct bool8 throwingPokeBall; struct MegaEvolutionData mega; struct ZMoveData zmove; + struct DynamaxData dynamax; const u8 *trainerSlideMsg; bool8 trainerSlideLowHpMsgDone; u8 introState; diff --git a/include/battle_dynamax.h b/include/battle_dynamax.h index 33613328a8..403abdaf95 100644 --- a/include/battle_dynamax.h +++ b/include/battle_dynamax.h @@ -1,5 +1,5 @@ -#ifndef GUARD_BATTLE_RAID_H -#define GUARD_BATTLE_RAID_H +#ifndef GUARD_BATTLE_DYNAMAX_H +#define GUARD_BATTLE_DYNAMAX_H enum MaxMoveEffect { @@ -52,4 +52,8 @@ enum MaxMoveEffect MAX_EFFECT_FIRE_SPIN_FOES, }; +bool8 ShouldUseMaxMove(u16 battlerId, u16 baseMove); +u16 GetMaxMove(u16 battlerId, u16 baseMove); +bool8 IsMaxMove(u16 move); + #endif diff --git a/include/battle_scripts.h b/include/battle_scripts.h index 2d6364fb96..83c25b1ca6 100644 --- a/include/battle_scripts.h +++ b/include/battle_scripts.h @@ -439,4 +439,10 @@ extern const u8 BattleScript_StatUpZMove[]; extern const u8 BattleScript_HealReplacementZMove[]; extern const u8 BattleScript_EffectExtremeEvoboost[]; +// max moves +extern const u8 BattleScript_EffectRaiseSideStats[]; +extern const u8 BattleScript_EffectLowerSideStats[]; +extern const u8 BattleScript_EffectSetWeather[]; +extern const u8 BattleScript_EffectSetTerrain[]; + #endif // GUARD_BATTLE_SCRIPTS_H diff --git a/include/constants/battle.h b/include/constants/battle.h index c4f68882e9..6224dd2838 100644 --- a/include/constants/battle.h +++ b/include/constants/battle.h @@ -368,8 +368,12 @@ #define MOVE_EFFECT_TRAP_BOTH 0x48 #define MOVE_EFFECT_SKY_DROP 0x49 #define MOVE_EFFECT_SCALE_SHOT 0x4A +#define MOVE_EFFECT_RAISE_SIDE_STATS 0x4B +#define MOVE_EFFECT_LOWER_SIDE_STATS 0x4C +#define MOVE_EFFECT_WEATHER 0x4D +#define MOVE_EFFECT_TERRAIN 0x4E -#define NUM_MOVE_EFFECTS 0x4B +#define NUM_MOVE_EFFECTS 0x4F #define MOVE_EFFECT_AFFECTS_USER 0x4000 #define MOVE_EFFECT_CERTAIN 0x8000 diff --git a/include/constants/battle_anim.h b/include/constants/battle_anim.h index 52b20ecaa4..252f855c33 100644 --- a/include/constants/battle_anim.h +++ b/include/constants/battle_anim.h @@ -535,6 +535,7 @@ #define B_ANIM_SHELL_TRAP_SETUP 34 #define B_ANIM_ZMOVE_ACTIVATE 35 // Using Z Moves #define B_ANIM_AFFECTION_HANGED_ON 36 +#define B_ANIM_MAX_SET_WEATHER 37 // special animations table (gBattleAnims_Special) #define B_ANIM_LVL_UP 0 diff --git a/include/constants/battle_script_commands.h b/include/constants/battle_script_commands.h index b11e7eb653..7701675ba0 100644 --- a/include/constants/battle_script_commands.h +++ b/include/constants/battle_script_commands.h @@ -245,6 +245,9 @@ #define VARIOUS_TRY_SYMBIOSIS 154 #define VARIOUS_CAN_TELEPORT 155 #define VARIOUS_GET_BATTLER_SIDE 156 +#define VARIOUS_SET_MAX_MOVE_EFFECT 157 +#define VARIOUS_JUMP_IF_TARGET_NOT_ALLY 158 +#define VARIOUS_JUMP_IF_TARGET_ABSENT 159 // Cmd_manipulatedamage #define DMG_CHANGE_SIGN 0 diff --git a/src/battle_anim_new.c b/src/battle_anim_new.c index 0a65deb282..dd88bfad45 100644 --- a/src/battle_anim_new.c +++ b/src/battle_anim_new.c @@ -7903,3 +7903,60 @@ void AnimTask_AffectionHangedOn(u8 taskId) gBattleAnimArgs[0] = GetBattlerFriendshipScore(gBattleAnimTarget); DestroyAnimVisualTask(taskId); } + +// DYNAMAX +static const union AffineAnimCmd sDynamaxGrowthAffineAnimCmds[] = // from CFRU +{ + AFFINEANIMCMD_FRAME(-2, -2, 0, 64), //Double in size over 1 second + AFFINEANIMCMD_FRAME(0, 0, 0, 64), //Pause for 1 seconds + AFFINEANIMCMD_FRAME(16, 16, 0, 8), //Shrink back down in 1/8 of a second + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd sDynamaxGrowthAttackAnimationAffineAnimCmds[] = +{ + AFFINEANIMCMD_FRAME(-4, -4, 0, 32), //Double in size quicker + AFFINEANIMCMD_FRAME(0, 0, 0, 32), //Pause for less + AFFINEANIMCMD_FRAME(16, 16, 0, 8), + AFFINEANIMCMD_END, +}; + +static void AnimTask_DynamaxGrowthStep(u8 taskId) // from CFRU +{ + struct Task* task = &gTasks[taskId]; + if (!RunAffineAnimFromTaskData(task)) + DestroyAnimVisualTask(taskId); +} + +//Arg 0: Animation for attack +void AnimTask_DynamaxGrowth(u8 taskId) // from CFRU +{ + struct Task* task = &gTasks[taskId]; + u8 spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER); + + if (gBattleAnimArgs[0] == 0) + PrepareAffineAnimInTaskData(task, spriteId, sDynamaxGrowthAffineAnimCmds); + else + PrepareAffineAnimInTaskData(task, spriteId, sDynamaxGrowthAttackAnimationAffineAnimCmds); + task->func = AnimTask_DynamaxGrowthStep; +} + +void AnimTask_GetWeatherToSet(u8 taskId) +{ + switch (gBattleMoves[gCurrentMove].argument) + { + case MAX_EFFECT_SUN: + gBattleAnimArgs[ARG_RET_ID] = 1; + break; + case MAX_EFFECT_RAIN: + gBattleAnimArgs[ARG_RET_ID] = 2; + break; + case MAX_EFFECT_SANDSTORM: + gBattleAnimArgs[ARG_RET_ID] = 3; + break; + case MAX_EFFECT_HAIL: + gBattleAnimArgs[ARG_RET_ID] = 4; + break; + } + DestroyAnimVisualTask(taskId); +} diff --git a/src/battle_dynamax.c b/src/battle_dynamax.c new file mode 100644 index 0000000000..798fd87e14 --- /dev/null +++ b/src/battle_dynamax.c @@ -0,0 +1,103 @@ +#include "global.h" +#include "pokemon.h" +#include "battle.h" +#include "constants/moves.h" + +// Constant Data +static const u16 sMaxMoveTable[] = +{ + [TYPE_NORMAL] = MOVE_MAX_STRIKE, + [TYPE_FIGHTING] = MOVE_MAX_KNUCKLE, + [TYPE_FLYING] = MOVE_MAX_AIRSTREAM, + [TYPE_POISON] = MOVE_MAX_OOZE, + [TYPE_GROUND] = MOVE_MAX_QUAKE, + [TYPE_ROCK] = MOVE_MAX_ROCKFALL, + [TYPE_BUG] = MOVE_MAX_FLUTTERBY, + [TYPE_GHOST] = MOVE_MAX_PHANTASM, + [TYPE_STEEL] = MOVE_MAX_STEELSPIKE, + [TYPE_FIRE] = MOVE_MAX_FLARE, + [TYPE_WATER] = MOVE_MAX_GEYSER, + [TYPE_GRASS] = MOVE_MAX_OVERGROWTH, + [TYPE_ELECTRIC] = MOVE_MAX_LIGHTNING, + [TYPE_PSYCHIC] = MOVE_MAX_MINDSTORM, + [TYPE_ICE] = MOVE_MAX_HAILSTORM, + [TYPE_DRAGON] = MOVE_MAX_WYRMWIND, + [TYPE_DARK] = MOVE_MAX_DARKNESS, + [TYPE_FAIRY] = MOVE_MAX_STARFALL, +}; + +struct GMaxMove +{ + u16 species; + u8 moveType; + u16 gmaxMove; +}; + +static const struct GMaxMove sGMaxMoveTable[] = +{ + {SPECIES_VENUSAUR_GMAX, TYPE_GRASS, MOVE_G_MAX_VINE_LASH}, + {SPECIES_CHARIZARD_GMAX, TYPE_FIRE, MOVE_G_MAX_WILDFIRE}, + {SPECIES_BLASTOISE_GMAX, TYPE_WATER, MOVE_G_MAX_CANNONADE}, + {SPECIES_BUTTERFREE_GMAX, TYPE_BUG, MOVE_G_MAX_BEFUDDLE}, + {SPECIES_PIKACHU_GMAX, TYPE_ELECTRIC, MOVE_G_MAX_VOLT_CRASH}, + {SPECIES_MEOWTH_GMAX, TYPE_NORMAL, MOVE_G_MAX_GOLD_RUSH}, + {SPECIES_MACHAMP_GMAX, TYPE_FIGHTING, MOVE_G_MAX_CHI_STRIKE}, + {SPECIES_GENGAR_GMAX, TYPE_GHOST, MOVE_G_MAX_TERROR}, + {SPECIES_KINGLER_GMAX, TYPE_WATER, MOVE_G_MAX_FOAM_BURST}, + {SPECIES_LAPRAS_GMAX, TYPE_ICE, MOVE_G_MAX_RESONANCE}, + {SPECIES_EEVEE_GMAX, TYPE_NORMAL, MOVE_G_MAX_CUDDLE}, + {SPECIES_SNORLAX_GMAX, TYPE_NORMAL, MOVE_G_MAX_REPLENISH}, + {SPECIES_GARBODOR_GMAX, TYPE_POISON, MOVE_G_MAX_MALODOR}, + {SPECIES_MELMETAL_GMAX, TYPE_STEEL, MOVE_G_MAX_MELTDOWN}, + {SPECIES_RILLABOOM_GMAX, TYPE_GRASS, MOVE_G_MAX_DRUM_SOLO}, + {SPECIES_CINDERACE_GMAX, TYPE_FIRE, MOVE_G_MAX_FIREBALL}, + {SPECIES_INTELEON_GMAX, TYPE_WATER, MOVE_G_MAX_HYDROSNIPE}, + {SPECIES_CORVIKNIGHT_GMAX, TYPE_FLYING, MOVE_G_MAX_WIND_RAGE}, + {SPECIES_ORBEETLE_GMAX, TYPE_PSYCHIC, MOVE_G_MAX_GRAVITAS}, + {SPECIES_DREDNAW_GMAX, TYPE_WATER, MOVE_G_MAX_STONESURGE}, + {SPECIES_COALOSSAL_GMAX, TYPE_ROCK, MOVE_G_MAX_VOLCALITH}, + {SPECIES_FLAPPLE_GMAX, TYPE_GRASS, MOVE_G_MAX_TARTNESS}, + {SPECIES_APPLETUN_GMAX, TYPE_GRASS, MOVE_G_MAX_SWEETNESS}, + {SPECIES_SANDACONDA_GMAX, TYPE_GROUND, MOVE_G_MAX_SANDBLAST}, + {SPECIES_TOXTRICITY_GMAX, TYPE_ELECTRIC, MOVE_G_MAX_STUN_SHOCK}, + {SPECIES_CENTISKORCH_GMAX, TYPE_FIRE, MOVE_G_MAX_CENTIFERNO}, + {SPECIES_HATTERENE_GMAX, TYPE_FAIRY, MOVE_G_MAX_SMITE}, + {SPECIES_GRIMMSNARL_GMAX, TYPE_DARK, MOVE_G_MAX_SNOOZE}, + {SPECIES_ALCREMIE_GMAX, TYPE_FAIRY, MOVE_G_MAX_FINALE}, + {SPECIES_COPPERAJAH_GMAX, TYPE_STEEL, MOVE_G_MAX_STEELSURGE}, + {SPECIES_DURALUDON_GMAX, TYPE_DRAGON, MOVE_G_MAX_DEPLETION}, + {SPECIES_URSHIFU_GMAX, TYPE_DARK, MOVE_G_MAX_ONE_BLOW}, + {SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GMAX, TYPE_WATER, MOVE_G_MAX_RAPID_FLOW}, +}; + +// Functions: +bool8 ShouldUseMaxMove(u16 battlerId, u16 baseMove) +{ + // TODO: Raids + //if (IsRaidBoss(battlerId)) + // return !IsRaidBossUsingRegularMove(battlerId, baseMove); + if (gBattleStruct->dynamax.dynamaxTurns[battlerId] > 0) + return TRUE; + return TRUE; +} + +u16 GetMaxMove(u16 battlerId, u16 baseMove) +{ + u16 move = baseMove; + if (gBattleMoves[baseMove].split == SPLIT_STATUS) + { + move = MOVE_MAX_GUARD; + } + else + { + move = sMaxMoveTable[gBattleMoves[baseMove].type]; + gBattleStruct->dynamax.splits[battlerId] = gBattleMoves[baseMove].split; + } + + return move; +} + +bool8 IsMaxMove(u16 move) +{ + return move >= FIRST_MAX_MOVE && move <= LAST_MAX_MOVE; +} \ No newline at end of file diff --git a/src/battle_main.c b/src/battle_main.c index e798796627..9381020a63 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -4225,6 +4225,8 @@ static void HandleTurnActionSelectionState(void) *(gBattleStruct->moveTarget + gActiveBattler) = gBattleResources->bufferB[gActiveBattler][3]; if (gBattleResources->bufferB[gActiveBattler][2] & RET_MEGA_EVOLUTION) gBattleStruct->mega.toEvolve |= gBitTable[gActiveBattler]; + if (ShouldUseMaxMove(gActiveBattler, gChosenMoveByBattler[gActiveBattler])) // max move check + gBattleStruct->dynamax.usingMaxMove[gActiveBattler] = TRUE; gBattleCommunication[gActiveBattler]++; } break; @@ -4524,6 +4526,11 @@ s8 GetMovePriority(u32 battlerId, u16 move) u16 ability = GetBattlerAbility(battlerId); priority = gBattleMoves[move].priority; + + // Max Guard check + if (gBattleStruct->dynamax.usingMaxMove[battlerId] && gBattleMoves[move].split == SPLIT_STATUS) + return gBattleMoves[MOVE_MAX_GUARD].priority; + if (ability == ABILITY_GALE_WINGS #if B_GALE_WINGS >= GEN_7 && BATTLER_MAX_HP(battlerId) diff --git a/src/battle_message.c b/src/battle_message.c index 568aac774d..63590905db 100644 --- a/src/battle_message.c +++ b/src/battle_message.c @@ -2837,6 +2837,8 @@ void BufferStringBattle(u16 stringID) case STRINGID_USEDMOVE: // pokemon used a move msg if (gBattleStruct->zmove.active && gBattleStruct->zmove.activeSplit != SPLIT_STATUS) StringCopy(gBattleTextBuff3, GetZMoveName(gBattleMsgDataPtr->currentMove)); + else if (IsMaxMove(gBattleMsgDataPtr->currentMove)) + StringCopy(gBattleTextBuff3, gMoveNames[gBattleMsgDataPtr->currentMove]); else if (gBattleMsgDataPtr->currentMove >= MOVES_COUNT) StringCopy(gBattleTextBuff3, sATypeMove_Table[*(&gBattleStruct->stringMoveType)]); else diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index eaa7bbde1a..6d19d99a79 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -3616,6 +3616,89 @@ void SetMoveEffect(bool32 primary, u32 certain) gBattlescriptCurrInstr = BattleScript_DefDownSpeedUp; } break; + // MAX MOVE EFFECTS + case MOVE_EFFECT_RAISE_SIDE_STATS: + if (!NoAliveMonsForEitherParty()) + { + SET_STATCHANGER(gBattleMoves[gCurrentMove].argument, 1, FALSE); // see enum MaxMoveEffect + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_EffectRaiseSideStats; + break; + } + case MOVE_EFFECT_LOWER_SIDE_STATS: + if (!NoAliveMonsForEitherParty()) + { + SET_STATCHANGER(gBattleMoves[gCurrentMove].argument - 5, 1, TRUE); // see enum MaxMoveEffect + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_EffectLowerSideStats; + break; + } + case MOVE_EFFECT_WEATHER: + { + u8 weather, msg; + switch (gBattleMoves[gCurrentMove].argument) + { + case MAX_EFFECT_SUN: + weather = ENUM_WEATHER_SUN; + msg = B_MSG_STARTED_SUNLIGHT; + break; + case MAX_EFFECT_RAIN: + weather = ENUM_WEATHER_RAIN; + msg = B_MSG_STARTED_RAIN; + break; + case MAX_EFFECT_SANDSTORM: + weather = ENUM_WEATHER_SANDSTORM; + msg = B_MSG_STARTED_SANDSTORM; + break; + case MAX_EFFECT_HAIL: + weather = ENUM_WEATHER_HAIL; + msg = B_MSG_STARTED_HAIL; + break; + } + if (TryChangeBattleWeather(gBattlerAttacker, weather, FALSE)) + { + gBattleCommunication[MULTISTRING_CHOOSER] = msg; + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_EffectSetWeather; + } + break; + } + case MOVE_EFFECT_TERRAIN: + { + u32 statusFlag = 0; + u8 *timer = NULL; + switch (gBattleMoves[gCurrentMove].argument) + { + case MAX_EFFECT_MISTY_TERRAIN: + statusFlag = STATUS_FIELD_MISTY_TERRAIN, timer = &gFieldTimers.terrainTimer; + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + break; + case MAX_EFFECT_GRASSY_TERRAIN: + statusFlag = STATUS_FIELD_GRASSY_TERRAIN, timer = &gFieldTimers.terrainTimer; + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + break; + case MAX_EFFECT_ELECTRIC_TERRAIN: + statusFlag = STATUS_FIELD_ELECTRIC_TERRAIN, timer = &gFieldTimers.terrainTimer; + gBattleCommunication[MULTISTRING_CHOOSER] = 2; + break; + case MAX_EFFECT_PSYCHIC_TERRAIN: + statusFlag = STATUS_FIELD_PSYCHIC_TERRAIN, timer = &gFieldTimers.terrainTimer; + gBattleCommunication[MULTISTRING_CHOOSER] = 3; + break; + } + if (!(gFieldStatuses & statusFlag) && statusFlag != 0) + { + gFieldStatuses &= ~STATUS_FIELD_TERRAIN_ANY; + gFieldStatuses |= statusFlag; + if (GetBattlerHoldEffect(gBattlerAttacker, TRUE) == HOLD_EFFECT_TERRAIN_EXTENDER) + *timer = 8; + else + *timer = 5; + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_EffectSetTerrain; + } + break; + } } } } @@ -9898,6 +9981,49 @@ static void Cmd_various(void) else gBattleCommunication[0] = B_SIDE_OPPONENT; break; + case VARIOUS_SET_MAX_MOVE_EFFECT: + switch (gBattleMoves[gCurrentMove].argument) + { + case MAX_EFFECT_RAISE_TEAM_ATTACK: + case MAX_EFFECT_RAISE_TEAM_DEFENSE: + case MAX_EFFECT_RAISE_TEAM_SPEED: + case MAX_EFFECT_RAISE_TEAM_SP_ATK: + case MAX_EFFECT_RAISE_TEAM_SP_DEF: + gBattleScripting.moveEffect = MOVE_EFFECT_RAISE_SIDE_STATS; + break; + case MAX_EFFECT_LOWER_ATTACK: + case MAX_EFFECT_LOWER_DEFENSE: + case MAX_EFFECT_LOWER_SPEED: + case MAX_EFFECT_LOWER_SP_ATK: + case MAX_EFFECT_LOWER_SP_DEF: + gBattleScripting.moveEffect = MOVE_EFFECT_LOWER_SIDE_STATS; + break; + case MAX_EFFECT_SUN: + case MAX_EFFECT_RAIN: + case MAX_EFFECT_SANDSTORM: + case MAX_EFFECT_HAIL: + gBattleScripting.moveEffect = MOVE_EFFECT_WEATHER; + break; + case MAX_EFFECT_MISTY_TERRAIN: + case MAX_EFFECT_GRASSY_TERRAIN: // TODO: Grassy terrain not working? + case MAX_EFFECT_ELECTRIC_TERRAIN: + case MAX_EFFECT_PSYCHIC_TERRAIN: + gBattleScripting.moveEffect = MOVE_EFFECT_TERRAIN; + break; + } + break; + case VARIOUS_JUMP_IF_TARGET_NOT_ALLY: + if (GetBattlerSide(gBattlerTarget) != GetBattlerSide(gBattlerAttacker)) + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 3); + else + gBattlescriptCurrInstr += 7; + return; + case VARIOUS_JUMP_IF_TARGET_ABSENT: + if (!IsBattlerAlive(gBattlerTarget)) + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 3); + else + gBattlescriptCurrInstr += 7; + return; } // End of switch (gBattlescriptCurrInstr[2]) gBattlescriptCurrInstr += 3; @@ -9948,6 +10074,11 @@ static void Cmd_setprotectlike(void) gProtectStructs[gBattlerAttacker].obstructed = TRUE; gBattleCommunication[MULTISTRING_CHOOSER] = 0; } + else if (gCurrentMove == MOVE_MAX_GUARD) + { + gProtectStructs[gBattlerAttacker].maxGuarded = TRUE; + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_PROTECTED_ITSELF; + } gDisableStructs[gBattlerAttacker].protectUses++; fail = FALSE; diff --git a/src/battle_util.c b/src/battle_util.c index d83f8429e9..dc3ef260e8 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -48,6 +48,7 @@ #include "constants/pokemon.h" extern struct Evolution gEvolutionTable[][EVOS_PER_MON]; +extern u8 gDynamaxMovePowers[MOVES_COUNT]; /* NOTE: The data and functions in this file up until (but not including) sSoundMovesTable @@ -303,6 +304,14 @@ void HandleAction_UseMove(void) gCurrentMove = gBattleStruct->zmove.toBeUsed[gBattlerAttacker]; } + // check max move used + if (gBattleStruct->dynamax.usingMaxMove[gBattlerAttacker]) + { + gCurrentMove = gChosenMove = GetMaxMove(gBattlerAttacker, gCurrentMove); + gBattleStruct->dynamax.activeSplit = gBattleStruct->dynamax.splits[gBattlerAttacker]; + gBattleStruct->moveTarget[gBattlerAttacker] = GetMoveTarget(gCurrentMove, NO_TARGET_OVERRIDE); + } + if (gBattleMons[gBattlerAttacker].hp != 0) { if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER) @@ -911,6 +920,7 @@ void HandleAction_ActionFinished(void) gBattleCommunication[4] = 0; gBattleScripting.multihitMoveEffect = 0; gBattleResources->battleScriptsStack->size = 0; + gBattleStruct->dynamax.usingMaxMove[gBattlerAttacker] = 0; #if B_RECALC_TURN_AFTER_ACTIONS >= GEN_8 // i starts at `gCurrentTurnActionNumber` because we don't want to recalculate turn order for mon that have already @@ -7908,6 +7918,15 @@ bool32 IsBattlerProtected(u8 battlerId, u16 move) return FALSE; } + // Max Moves bypass any protection except Max Guard + if (IsMaxMove(move)) + { + if (gProtectStructs[battlerId].maxGuarded) + return TRUE; + else + return FALSE; + } + // Protective Pads doesn't stop Unseen Fist from bypassing Protect effects, so IsMoveMakingContact() isn't used here. // This means extra logic is needed to handle Shell Side Arm. if (GetBattlerAbility(gBattlerAttacker) == ABILITY_UNSEEN_FIST @@ -8404,6 +8423,9 @@ static u16 CalcMoveBasePower(u16 move, u8 battlerAtk, u8 battlerDef) if (IsBattlerTerrainAffected(gBattlerTarget, STATUS_FIELD_ELECTRIC_TERRAIN)) basePower *= 2; break; + case EFFECT_MAX_MOVE: + basePower = gDynamaxMovePowers[gBattleMons[battlerAtk].moves[gBattleStruct->chosenMovePositions[battlerAtk]]]; + break; } // Move-specific base power changes @@ -9869,6 +9891,8 @@ u8 GetBattleMoveSplit(u32 moveId) { if (gBattleStruct != NULL && gBattleStruct->zmove.active && !IS_MOVE_STATUS(moveId)) return gBattleStruct->zmove.activeSplit; + if (gBattleStruct != NULL && IsMaxMove(moveId)) // TODO: Might be buggy depending on when this is called. + return gBattleStruct->dynamax.activeSplit; if (gBattleStruct != NULL && gBattleStruct->swapDamageCategory) // Photon Geyser, Shell Side Arm, Light That Burns the Sky return SPLIT_PHYSICAL; diff --git a/src/data/battle_moves.h b/src/data/battle_moves.h index 46fb13335e..064b68a6e0 100644 --- a/src/data/battle_moves.h +++ b/src/data/battle_moves.h @@ -14355,6 +14355,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_PSYCHIC_TERRAIN, }, + [MOVE_MAX_ROCKFALL] = { .effect = EFFECT_MAX_MOVE, @@ -14369,6 +14370,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_SANDSTORM, }, + [MOVE_MAX_QUAKE] = { .effect = EFFECT_MAX_MOVE, @@ -14383,6 +14385,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_RAISE_TEAM_SP_DEF, }, + [MOVE_MAX_DARKNESS] = { .effect = EFFECT_MAX_MOVE, @@ -14397,6 +14400,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_LOWER_SP_DEF, }, + [MOVE_MAX_OVERGROWTH] = { .effect = EFFECT_MAX_MOVE, @@ -14411,6 +14415,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_GRASSY_TERRAIN, }, + [MOVE_MAX_STEELSPIKE] = { .effect = EFFECT_MAX_MOVE, From d69de9fb17447090b40c9e03eee461a660cfeb34 Mon Sep 17 00:00:00 2001 From: AgustinGDLV Date: Wed, 22 Feb 2023 14:18:15 -0800 Subject: [PATCH 008/162] added longer 'used move' messages for max moves --- include/battle_dynamax.h | 1 + include/data.h | 1 + src/battle_dynamax.c | 13 ++++- src/battle_message.c | 2 +- src/data/text/move_names.h | 111 +++++++++++++++++++++++++++++++++++++ 5 files changed, 125 insertions(+), 3 deletions(-) diff --git a/include/battle_dynamax.h b/include/battle_dynamax.h index 403abdaf95..b754c356a9 100644 --- a/include/battle_dynamax.h +++ b/include/battle_dynamax.h @@ -55,5 +55,6 @@ enum MaxMoveEffect bool8 ShouldUseMaxMove(u16 battlerId, u16 baseMove); u16 GetMaxMove(u16 battlerId, u16 baseMove); bool8 IsMaxMove(u16 move); +const u8 *GetMaxMoveName(u16 move); #endif diff --git a/include/data.h b/include/data.h index e08d486986..ec9b93bc96 100644 --- a/include/data.h +++ b/include/data.h @@ -135,5 +135,6 @@ extern const u8 gTrainerClassNames[][13]; extern const u8 gSpeciesNames[][POKEMON_NAME_LENGTH + 1]; extern const u8 gMoveNames[MOVES_COUNT_DYNAMAX][MOVE_NAME_LENGTH + 1]; extern const u8 *const gZMoveNames[]; +extern const u8 *const gMaxMoveNames[]; #endif // GUARD_DATA_H diff --git a/src/battle_dynamax.c b/src/battle_dynamax.c index 798fd87e14..ffe933c850 100644 --- a/src/battle_dynamax.c +++ b/src/battle_dynamax.c @@ -1,6 +1,7 @@ #include "global.h" -#include "pokemon.h" #include "battle.h" +#include "data.h" +#include "pokemon.h" #include "constants/moves.h" // Constant Data @@ -100,4 +101,12 @@ u16 GetMaxMove(u16 battlerId, u16 baseMove) bool8 IsMaxMove(u16 move) { return move >= FIRST_MAX_MOVE && move <= LAST_MAX_MOVE; -} \ No newline at end of file +} + +const u8 *GetMaxMoveName(u16 move) +{ + if (IsMaxMove(move)) + return gMaxMoveNames[move - FIRST_MAX_MOVE]; + else + return gMaxMoveNames[0]; // Failsafe +} diff --git a/src/battle_message.c b/src/battle_message.c index 63590905db..de099e3f3a 100644 --- a/src/battle_message.c +++ b/src/battle_message.c @@ -2838,7 +2838,7 @@ void BufferStringBattle(u16 stringID) if (gBattleStruct->zmove.active && gBattleStruct->zmove.activeSplit != SPLIT_STATUS) StringCopy(gBattleTextBuff3, GetZMoveName(gBattleMsgDataPtr->currentMove)); else if (IsMaxMove(gBattleMsgDataPtr->currentMove)) - StringCopy(gBattleTextBuff3, gMoveNames[gBattleMsgDataPtr->currentMove]); + StringCopy(gBattleTextBuff3, GetMaxMoveName(gBattleMsgDataPtr->currentMove)); else if (gBattleMsgDataPtr->currentMove >= MOVES_COUNT) StringCopy(gBattleTextBuff3, sATypeMove_Table[*(&gBattleStruct->stringMoveType)]); else diff --git a/src/data/text/move_names.h b/src/data/text/move_names.h index d319900a16..09f0ffd2d6 100644 --- a/src/data/text/move_names.h +++ b/src/data/text/move_names.h @@ -1750,3 +1750,114 @@ const u8 *const gZMoveNames[] = [MOVE_LIGHT_THAT_BURNS_THE_SKY - FIRST_Z_MOVE] = sText_Light_That_Burns_The_Sky, [MOVE_SOUL_STEALING_7_STAR_STRIKE - FIRST_Z_MOVE] = sText_Soul_Stealing_7_Star_Strike, }; + +// Max Moves +static const u8 sText_Max_Guard[] = _("Max Guard"); +static const u8 sText_Max_Strike[] = _("Max Strike"); +static const u8 sText_Max_Knuckle[] = _("Max Knuckle"); +static const u8 sText_Max_Airstream[] = _("Max Airstream"); +static const u8 sText_Max_Ooze[] = _("Max Ooze"); +static const u8 sText_Max_Quake[] = _("Max Quake"); +static const u8 sText_Max_Rockfall[] = _("Max Rockfall"); +static const u8 sText_Max_Flutterby[] = _("Max Flutterby"); +static const u8 sText_Max_Phantasm[] = _("Max Phantasm"); +static const u8 sText_Max_Steelspike[] = _("Max Steelspike"); +static const u8 sText_Max_Flare[] = _("Max Flare"); +static const u8 sText_Max_Geyser[] = _("Max Geyser"); +static const u8 sText_Max_Overgrowth[] = _("Max Overgrowth"); +static const u8 sText_Max_Lightning[] = _("Max Lightning"); +static const u8 sText_Max_Hailstorm[] = _("Max Hailstorm"); +static const u8 sText_Max_Mindstorm[] = _("Max Mindstorm"); +static const u8 sText_Max_Wyrmwind[] = _("Max Wyrmwind"); +static const u8 sText_Max_Darkness[] = _("Max Darkness"); +static const u8 sText_Max_Starfall[] = _("Max Starfall"); +static const u8 sText_G_Max_Vine_Lash[] = _("G-Max Vine Lash"); +static const u8 sText_G_Max_Wildfire[] = _("G-Max Wildfire"); +static const u8 sText_G_Max_Cannonade[] = _("G-Max Cannonade"); +static const u8 sText_G_Max_Befuddle[] = _("G-Max Befuddle"); +static const u8 sText_G_Max_Volt_Crash[] = _("G-Max Volt Crash"); +static const u8 sText_G_Max_Gold_Rush[] = _("G-Max Gold Rush"); +static const u8 sText_G_Max_Chi_Strike[] = _("G-Max Chi Strike"); +static const u8 sText_G_Max_Terror[] = _("G-Max Terror"); +static const u8 sText_G_Max_Foam_Burst[] = _("G-Max Foam Burst"); +static const u8 sText_G_Max_Resonance[] = _("G-Max Resonance"); +static const u8 sText_G_Max_Cuddle[] = _("G-Max Cuddle"); +static const u8 sText_G_Max_Replenish[] = _("G-Max Replenish"); +static const u8 sText_G_Max_Malodor[] = _("G-Max Malodor"); +static const u8 sText_G_Max_Meltdown[] = _("G-Max Meltdown"); +static const u8 sText_G_Max_Drum_Solo[] = _("G-Max Drum Solo"); +static const u8 sText_G_Max_Fireball[] = _("G-Max Fireball"); +static const u8 sText_G_Max_Hydrosnipe[] = _("G-Max Hydrosnipe"); +static const u8 sText_G_Max_Wind_Rage[] = _("G-Max Wind Rage"); +static const u8 sText_G_Max_Gravitas[] = _("G-Max Gravitas"); +static const u8 sText_G_Max_Stonesurge[] = _("G-Max Stonesurge"); +static const u8 sText_G_Max_Volcalith[] = _("G-Max Volcalith"); +static const u8 sText_G_Max_Tartness[] = _("G-Max Tartness"); +static const u8 sText_G_Max_Sweetness[] = _("G-Max Sweetness"); +static const u8 sText_G_Max_Sandblast[] = _("G-Max Sandblast"); +static const u8 sText_G_Max_Stun_Shock[] = _("G-Max Stun Shock"); +static const u8 sText_G_Max_Centiferno[] = _("G-Max Centiferno"); +static const u8 sText_G_Max_Smite[] = _("G-Max Smite"); +static const u8 sText_G_Max_Snooze[] = _("G-Max Snooze"); +static const u8 sText_G_Max_Finale[] = _("G-Max Finale"); +static const u8 sText_G_Max_Steelsurge[] = _("G-Max Steelsurge"); +static const u8 sText_G_Max_Depletion[] = _("G-Max Depletion"); +static const u8 sText_G_Max_One_Blow[] = _("G-Max One Blow"); +static const u8 sText_G_Max_Rapid_Flow[] = _("G-Max Rapid Flow"); + +const u8 *const gMaxMoveNames[] = +{ + [MOVE_MAX_GUARD - FIRST_MAX_MOVE] = sText_Max_Guard, + [MOVE_MAX_STRIKE - FIRST_MAX_MOVE] = sText_Max_Strike, + [MOVE_MAX_KNUCKLE - FIRST_MAX_MOVE] = sText_Max_Knuckle, + [MOVE_MAX_AIRSTREAM - FIRST_MAX_MOVE] = sText_Max_Airstream, + [MOVE_MAX_OOZE - FIRST_MAX_MOVE] = sText_Max_Ooze, + [MOVE_MAX_QUAKE - FIRST_MAX_MOVE] = sText_Max_Quake, + [MOVE_MAX_ROCKFALL - FIRST_MAX_MOVE] = sText_Max_Rockfall, + [MOVE_MAX_FLUTTERBY - FIRST_MAX_MOVE] = sText_Max_Flutterby, + [MOVE_MAX_PHANTASM - FIRST_MAX_MOVE] = sText_Max_Phantasm, + [MOVE_MAX_STEELSPIKE - FIRST_MAX_MOVE] = sText_Max_Steelspike, + [MOVE_MAX_FLARE - FIRST_MAX_MOVE] = sText_Max_Flare, + [MOVE_MAX_GEYSER - FIRST_MAX_MOVE] = sText_Max_Geyser, + [MOVE_MAX_OVERGROWTH - FIRST_MAX_MOVE] = sText_Max_Overgrowth, + [MOVE_MAX_LIGHTNING - FIRST_MAX_MOVE] = sText_Max_Lightning, + [MOVE_MAX_HAILSTORM - FIRST_MAX_MOVE] = sText_Max_Hailstorm, + [MOVE_MAX_MINDSTORM - FIRST_MAX_MOVE] = sText_Max_Mindstorm, + [MOVE_MAX_WYRMWIND - FIRST_MAX_MOVE] = sText_Max_Wyrmwind, + [MOVE_MAX_DARKNESS - FIRST_MAX_MOVE] = sText_Max_Darkness, + [MOVE_MAX_STARFALL - FIRST_MAX_MOVE] = sText_Max_Starfall, + [MOVE_G_MAX_VINE_LASH - FIRST_MAX_MOVE] = sText_G_Max_Vine_Lash, + [MOVE_G_MAX_WILDFIRE - FIRST_MAX_MOVE] = sText_G_Max_Wildfire, + [MOVE_G_MAX_CANNONADE - FIRST_MAX_MOVE] = sText_G_Max_Cannonade, + [MOVE_G_MAX_BEFUDDLE - FIRST_MAX_MOVE] = sText_G_Max_Befuddle, + [MOVE_G_MAX_VOLT_CRASH - FIRST_MAX_MOVE] = sText_G_Max_Volt_Crash, + [MOVE_G_MAX_GOLD_RUSH - FIRST_MAX_MOVE] = sText_G_Max_Gold_Rush, + [MOVE_G_MAX_CHI_STRIKE - FIRST_MAX_MOVE] = sText_G_Max_Chi_Strike, + [MOVE_G_MAX_TERROR - FIRST_MAX_MOVE] = sText_G_Max_Terror, + [MOVE_G_MAX_FOAM_BURST - FIRST_MAX_MOVE] = sText_G_Max_Foam_Burst, + [MOVE_G_MAX_RESONANCE - FIRST_MAX_MOVE] = sText_G_Max_Resonance, + [MOVE_G_MAX_CUDDLE - FIRST_MAX_MOVE] = sText_G_Max_Cuddle, + [MOVE_G_MAX_REPLENISH - FIRST_MAX_MOVE] = sText_G_Max_Replenish, + [MOVE_G_MAX_MALODOR - FIRST_MAX_MOVE] = sText_G_Max_Malodor, + [MOVE_G_MAX_MELTDOWN - FIRST_MAX_MOVE] = sText_G_Max_Meltdown, + [MOVE_G_MAX_DRUM_SOLO - FIRST_MAX_MOVE] = sText_G_Max_Drum_Solo, + [MOVE_G_MAX_FIREBALL - FIRST_MAX_MOVE] = sText_G_Max_Fireball, + [MOVE_G_MAX_HYDROSNIPE - FIRST_MAX_MOVE] = sText_G_Max_Hydrosnipe, + [MOVE_G_MAX_WIND_RAGE - FIRST_MAX_MOVE] = sText_G_Max_Wind_Rage, + [MOVE_G_MAX_GRAVITAS - FIRST_MAX_MOVE] = sText_G_Max_Gravitas, + [MOVE_G_MAX_STONESURGE - FIRST_MAX_MOVE] = sText_G_Max_Stonesurge, + [MOVE_G_MAX_VOLCALITH - FIRST_MAX_MOVE] = sText_G_Max_Volcalith, + [MOVE_G_MAX_TARTNESS - FIRST_MAX_MOVE] = sText_G_Max_Tartness, + [MOVE_G_MAX_SWEETNESS - FIRST_MAX_MOVE] = sText_G_Max_Sweetness, + [MOVE_G_MAX_SANDBLAST - FIRST_MAX_MOVE] = sText_G_Max_Sandblast, + [MOVE_G_MAX_STUN_SHOCK - FIRST_MAX_MOVE] = sText_G_Max_Stun_Shock, + [MOVE_G_MAX_CENTIFERNO - FIRST_MAX_MOVE] = sText_G_Max_Centiferno, + [MOVE_G_MAX_SMITE - FIRST_MAX_MOVE] = sText_G_Max_Smite, + [MOVE_G_MAX_SNOOZE - FIRST_MAX_MOVE] = sText_G_Max_Snooze, + [MOVE_G_MAX_FINALE - FIRST_MAX_MOVE] = sText_G_Max_Finale, + [MOVE_G_MAX_STEELSURGE - FIRST_MAX_MOVE] = sText_G_Max_Steelsurge, + [MOVE_G_MAX_DEPLETION - FIRST_MAX_MOVE] = sText_G_Max_Depletion, + [MOVE_G_MAX_ONE_BLOW - FIRST_MAX_MOVE] = sText_G_Max_One_Blow, + [MOVE_G_MAX_RAPID_FLOW - FIRST_MAX_MOVE] = sText_G_Max_Rapid_Flow, +}; + \ No newline at end of file From 07fd952d523ba09a8459701413bddd923a4a8142 Mon Sep 17 00:00:00 2001 From: AgustinGDLV Date: Wed, 22 Feb 2023 14:35:41 -0800 Subject: [PATCH 009/162] implemented max move functionality for dynamic type moves --- src/battle_dynamax.c | 5 +++++ src/battle_util.c | 18 +++++++++--------- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/src/battle_dynamax.c b/src/battle_dynamax.c index ffe933c850..184e07e4ed 100644 --- a/src/battle_dynamax.c +++ b/src/battle_dynamax.c @@ -89,6 +89,11 @@ u16 GetMaxMove(u16 battlerId, u16 baseMove) { move = MOVE_MAX_GUARD; } + else if (gBattleStruct->dynamicMoveType) // unsure of how to deal with Hidden Power + { + move = sMaxMoveTable[gBattleStruct->dynamicMoveType & DYNAMIC_TYPE_MASK]; + gBattleStruct->dynamax.splits[battlerId] = gBattleMoves[baseMove].split; + } else { move = sMaxMoveTable[gBattleMoves[baseMove].type]; diff --git a/src/battle_util.c b/src/battle_util.c index dc3ef260e8..999f7c2a9b 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -304,14 +304,6 @@ void HandleAction_UseMove(void) gCurrentMove = gBattleStruct->zmove.toBeUsed[gBattlerAttacker]; } - // check max move used - if (gBattleStruct->dynamax.usingMaxMove[gBattlerAttacker]) - { - gCurrentMove = gChosenMove = GetMaxMove(gBattlerAttacker, gCurrentMove); - gBattleStruct->dynamax.activeSplit = gBattleStruct->dynamax.splits[gBattlerAttacker]; - gBattleStruct->moveTarget[gBattlerAttacker] = GetMoveTarget(gCurrentMove, NO_TARGET_OVERRIDE); - } - if (gBattleMons[gBattlerAttacker].hp != 0) { if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER) @@ -324,6 +316,14 @@ void HandleAction_UseMove(void) SetTypeBeforeUsingMove(gChosenMove, gBattlerAttacker); GET_MOVE_TYPE(gChosenMove, moveType); + // check max move used + if (gBattleStruct->dynamax.usingMaxMove[gBattlerAttacker]) + { + gCurrentMove = gChosenMove = GetMaxMove(gBattlerAttacker, gCurrentMove); + gBattleStruct->dynamax.activeSplit = gBattleStruct->dynamax.splits[gBattlerAttacker]; + gBattleStruct->moveTarget[gBattlerAttacker] = GetMoveTarget(gCurrentMove, NO_TARGET_OVERRIDE); + } + // choose target side = BATTLE_OPPOSITE(GetBattlerSide(gBattlerAttacker)); if (IsAffectedByFollowMe(gBattlerAttacker, side, gCurrentMove) @@ -7918,7 +7918,7 @@ bool32 IsBattlerProtected(u8 battlerId, u16 move) return FALSE; } - // Max Moves bypass any protection except Max Guard + // Max Moves bypass any protection except Max Guard. if (IsMaxMove(move)) { if (gProtectStructs[battlerId].maxGuarded) From 503aad9137b13b4d5df0c697d345806107ca66c2 Mon Sep 17 00:00:00 2001 From: AgustinGDLV Date: Sat, 25 Feb 2023 15:57:57 -0800 Subject: [PATCH 010/162] fixed tests --- data/battle_scripts_1.s | 4 ++-- src/battle_dynamax.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index bec0ca8af9..e1821e9a2f 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -417,8 +417,8 @@ gBattleScriptsForMoveEffects:: .4byte BattleScript_EffectVictoryDance @ EFFECT_VICTORY_DANCE .4byte BattleScript_EffectTeatime @ EFFECT_TEATIME .4byte BattleScript_EffectAttackUpUserAlly @ EFFECT_ATTACK_UP_USER_ALLY - .4byte BattleScript_EffectMaxMove @ EFFECT_MAX_MOVE - .4byte BattleScript_EffectShellTrap @ EFFECT_SHELL_TRAP + .4byte BattleScript_EffectShellTrap @ EFFECT_SHELL_TRAP + .4byte BattleScript_EffectMaxMove @ EFFECT_MAX_MOVE BattleScript_EffectAttackUpUserAlly: diff --git a/src/battle_dynamax.c b/src/battle_dynamax.c index 184e07e4ed..06d2611a90 100644 --- a/src/battle_dynamax.c +++ b/src/battle_dynamax.c @@ -79,7 +79,7 @@ bool8 ShouldUseMaxMove(u16 battlerId, u16 baseMove) // return !IsRaidBossUsingRegularMove(battlerId, baseMove); if (gBattleStruct->dynamax.dynamaxTurns[battlerId] > 0) return TRUE; - return TRUE; + return FALSE; } u16 GetMaxMove(u16 battlerId, u16 baseMove) From 4d19659b0b9a0a678c31dfc6aceab63f84c775e0 Mon Sep 17 00:00:00 2001 From: AgustinGDLV Date: Sun, 26 Feb 2023 22:02:06 -0800 Subject: [PATCH 011/162] implemented G-Max Stonesurge, G-Max Steelsurge --- asm/macros/battle_script.inc | 7 +- data/battle_anim_scripts.s | 73 ++++++++++++++++++ data/battle_scripts_1.s | 18 ++++- include/battle.h | 1 + include/battle_scripts.h | 3 + include/config/debug.h | 2 +- include/constants/battle.h | 8 +- include/constants/battle_script_commands.h | 1 + include/constants/battle_string_ids.h | 5 +- src/battle_debug.c | 12 +++ src/battle_message.c | 8 +- src/battle_script_commands.c | 90 ++++++++++++++++++---- src/data/battle_moves.h | 74 +++++++++--------- 13 files changed, 244 insertions(+), 58 deletions(-) diff --git a/asm/macros/battle_script.inc b/asm/macros/battle_script.inc index 56c3c7b49d..656283851e 100644 --- a/asm/macros/battle_script.inc +++ b/asm/macros/battle_script.inc @@ -2213,7 +2213,7 @@ various BS_ATTACKER, VARIOUS_TRY_SYMBIOSIS .endm - @ The next few macros are used by Max Moves. + @ Used to active a different Max Move effects. .macro setmaxmoveeffect various 0, VARIOUS_SET_MAX_MOVE_EFFECT .endm @@ -2228,6 +2228,11 @@ .4byte \ptr .endm + .macro setsteelsurge, failInstr:req + various 0, VARIOUS_SET_STEELSURGE + .4byte \failInstr + .endm + @ Tries to increase or decrease a battler's stat's stat stage by a specified amount. If impossible, jumps to \script. .macro modifybattlerstatstage battler:req, stat:req, mode:req, amount:req, script:req, animation:req, customString diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index a4e50ec7ae..9055aed3b9 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -910,6 +910,40 @@ gBattleAnims_Moves:: .4byte Move_MAX_WYRMWIND .4byte Move_MAX_DARKNESS .4byte Move_MAX_STARFALL +@@@@ G-MAX MOVES + .4byte Move_G_MAX_VINE_LASH + .4byte Move_G_MAX_WILDFIRE + .4byte Move_G_MAX_CANNONADE + .4byte Move_G_MAX_BEFUDDLE + .4byte Move_G_MAX_VOLT_CRASH + .4byte Move_G_MAX_GOLD_RUSH + .4byte Move_G_MAX_CHI_STRIKE + .4byte Move_G_MAX_TERROR + .4byte Move_G_MAX_FOAM_BURST + .4byte Move_G_MAX_RESONANCE + .4byte Move_G_MAX_CUDDLE + .4byte Move_G_MAX_REPLENISH + .4byte Move_G_MAX_MALODOR + .4byte Move_G_MAX_MELTDOWN + .4byte Move_G_MAX_DRUM_SOLO + .4byte Move_G_MAX_FIREBALL + .4byte Move_G_MAX_HYDROSNIPE + .4byte Move_G_MAX_WIND_RAGE + .4byte Move_G_MAX_GRAVITAS + .4byte Move_G_MAX_STONESURGE + .4byte Move_G_MAX_VOLCALITH + .4byte Move_G_MAX_TARTNESS + .4byte Move_G_MAX_SWEETNESS + .4byte Move_G_MAX_SANDBLAST + .4byte Move_G_MAX_STUN_SHOCK + .4byte Move_G_MAX_CENTIFERNO + .4byte Move_G_MAX_SMITE + .4byte Move_G_MAX_SNOOZE + .4byte Move_G_MAX_FINALE + .4byte Move_G_MAX_STEELSURGE + .4byte Move_G_MAX_DEPLETION + .4byte Move_G_MAX_ONE_BLOW + .4byte Move_G_MAX_RAPID_FLOW @@@ Last Move - cannot be reached .4byte Move_COUNT @@ -30821,6 +30855,8 @@ Move_MAX_MINDSTORM: Move_MAX_WYRMWIND: Move_MAX_DARKNESS: Move_MAX_STARFALL: + launchtask AnimTask_DynamaxGrowth 0x5 0x1 0x1 + waitforvisualfinish end Move_MAX_GUARD: @@ -30870,3 +30906,40 @@ Move_MAX_LIGHTNING:: waitforvisualfinish goto Move_ZAP_CANNON end + +Move_G_MAX_VINE_LASH: +Move_G_MAX_WILDFIRE: +Move_G_MAX_CANNONADE: +Move_G_MAX_BEFUDDLE: +Move_G_MAX_VOLT_CRASH: +Move_G_MAX_GOLD_RUSH: +Move_G_MAX_CHI_STRIKE: +Move_G_MAX_TERROR: +Move_G_MAX_FOAM_BURST: +Move_G_MAX_RESONANCE: +Move_G_MAX_CUDDLE: +Move_G_MAX_REPLENISH: +Move_G_MAX_MALODOR: +Move_G_MAX_MELTDOWN: +Move_G_MAX_DRUM_SOLO: +Move_G_MAX_FIREBALL: +Move_G_MAX_HYDROSNIPE: +Move_G_MAX_WIND_RAGE: +Move_G_MAX_GRAVITAS: +Move_G_MAX_STONESURGE: +Move_G_MAX_VOLCALITH: +Move_G_MAX_TARTNESS: +Move_G_MAX_SWEETNESS: +Move_G_MAX_SANDBLAST: +Move_G_MAX_STUN_SHOCK: +Move_G_MAX_CENTIFERNO: +Move_G_MAX_SMITE: +Move_G_MAX_SNOOZE: +Move_G_MAX_FINALE: +Move_G_MAX_STEELSURGE: +Move_G_MAX_DEPLETION: +Move_G_MAX_ONE_BLOW: +Move_G_MAX_RAPID_FLOW: + launchtask AnimTask_DynamaxGrowth 0x5 0x1 0x1 + waitforvisualfinish + end diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index e1821e9a2f..9efe349025 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -420,7 +420,18 @@ gBattleScriptsForMoveEffects:: .4byte BattleScript_EffectShellTrap @ EFFECT_SHELL_TRAP .4byte BattleScript_EffectMaxMove @ EFFECT_MAX_MOVE - +BattleScript_StealthRockActivates:: + setstealthrock BattleScript_MoveEnd + printstring STRINGID_POINTEDSTONESFLOAT + waitmessage B_WAIT_TIME_LONG + goto BattleScript_MoveEnd + +BattleScript_SteelsurgeActivates:: + setsteelsurge BattleScript_MoveEnd + printstring STRINGID_SHARPSTEELFLOATS + waitmessage B_WAIT_TIME_LONG + goto BattleScript_MoveEnd + BattleScript_EffectAttackUpUserAlly: jumpifnoally BS_ATTACKER, BattleScript_EffectAttackUp attackcanceler @@ -7454,6 +7465,11 @@ BattleScript_StealthRockFree:: waitmessage B_WAIT_TIME_LONG return +BattleScript_SteelsurgeFree:: + printstring STRINGID_PKMNBLEWAWAYSHARPSTEEL + waitmessage B_WAIT_TIME_LONG + return + BattleScript_MonTookFutureAttack:: printstring STRINGID_PKMNTOOKATTACK waitmessage B_WAIT_TIME_LONG diff --git a/include/battle.h b/include/battle.h index 20fd67a4fa..483d3cdb50 100644 --- a/include/battle.h +++ b/include/battle.h @@ -218,6 +218,7 @@ struct SideTimer u8 tailwindBattlerId; u8 luckyChantTimer; u8 luckyChantBattlerId; + u8 steelsurgeAmount; // Timers below this point are not swapped by Court Change u8 followmeTimer; u8 followmeTarget:3; diff --git a/include/battle_scripts.h b/include/battle_scripts.h index 91999a6d7e..1c10989261 100644 --- a/include/battle_scripts.h +++ b/include/battle_scripts.h @@ -453,6 +453,9 @@ extern const u8 BattleScript_DampPreventsAftermath[]; extern const u8 BattleScript_HealingWishActivates[]; extern const u8 BattleScript_LunarDanceActivates[]; extern const u8 BattleScript_ShellTrapSetUp[]; +extern const u8 BattleScript_StealthRockActivates[]; +extern const u8 BattleScript_SteelsurgeActivates[]; +extern const u8 BattleScript_SteelsurgeFree[]; // zmoves extern const u8 BattleScript_ZMoveActivateDamaging[]; diff --git a/include/config/debug.h b/include/config/debug.h index b427fcb513..82516ef4ec 100644 --- a/include/config/debug.h +++ b/include/config/debug.h @@ -5,7 +5,7 @@ #define DEBUG_OVERWORLD_MENU TRUE // Enables a overworld debug menu for changing flags, variables, giving pokemon and more, accessed by holding R and pressing START while in the overworld by default. #define DEBUG_OVERWORLD_HELD_KEYS (R_BUTTON) // The keys required to be held to open the debug menu. #define DEBUG_OVERWORLD_TRIGGER_EVENT pressedStartButton // The event that opens the menu when holding the key(s) defined in DEBUG_OVERWORLD_HELD_KEYS. -#define DEBUG_OVERWORLD_IN_MENU FALSE // Replaces the overworld debug menu button combination with a start menu entry (above Pokédex). +#define DEBUG_OVERWORLD_IN_MENU TRUE // Replaces the overworld debug menu button combination with a start menu entry (above Pokédex). // Debug Flags // To use the following debug features, replace the 0s with the flag ID you're assigning it to. diff --git a/include/constants/battle.h b/include/constants/battle.h index 5df71f57a3..b9909fbfc6 100644 --- a/include/constants/battle.h +++ b/include/constants/battle.h @@ -233,8 +233,10 @@ #define SIDE_STATUS_WIDE_GUARD (1 << 19) #define SIDE_STATUS_CRAFTY_SHIELD (1 << 20) #define SIDE_STATUS_MAT_BLOCK (1 << 21) +#define SIDE_STATUS_STEELSURGE (1 << 22) +#define SIDE_STATUS_STEELSURGE_DAMAGED (1 << 23) -#define SIDE_STATUS_HAZARDS_ANY (SIDE_STATUS_SPIKES | SIDE_STATUS_STICKY_WEB | SIDE_STATUS_TOXIC_SPIKES | SIDE_STATUS_STEALTH_ROCK) +#define SIDE_STATUS_HAZARDS_ANY (SIDE_STATUS_SPIKES | SIDE_STATUS_STICKY_WEB | SIDE_STATUS_TOXIC_SPIKES | SIDE_STATUS_STEALTH_ROCK | SIDE_STATUS_STEELSURGE) #define SIDE_STATUS_SCREEN_ANY (SIDE_STATUS_REFLECT | SIDE_STATUS_LIGHTSCREEN | SIDE_STATUS_AURORA_VEIL) // Field affecting statuses. @@ -375,8 +377,10 @@ #define MOVE_EFFECT_LOWER_SIDE_STATS 74 #define MOVE_EFFECT_WEATHER 75 #define MOVE_EFFECT_TERRAIN 76 +#define MOVE_EFFECT_STEALTH_ROCK 77 +#define MOVE_EFFECT_STEELSURGE 78 -#define NUM_MOVE_EFFECTS 77 +#define NUM_MOVE_EFFECTS 79 #define MOVE_EFFECT_AFFECTS_USER 0x4000 #define MOVE_EFFECT_CERTAIN 0x8000 diff --git a/include/constants/battle_script_commands.h b/include/constants/battle_script_commands.h index 3c020f5c40..258e74b154 100644 --- a/include/constants/battle_script_commands.h +++ b/include/constants/battle_script_commands.h @@ -263,6 +263,7 @@ #define VARIOUS_JUMP_IF_NO_VALID_TARGETS 171 #define VARIOUS_JUMP_IF_TARGET_NOT_ALLY 172 #define VARIOUS_JUMP_IF_TARGET_ABSENT 173 +#define VARIOUS_SET_STEELSURGE 174 // Cmd_manipulatedamage #define DMG_CHANGE_SIGN 0 diff --git a/include/constants/battle_string_ids.h b/include/constants/battle_string_ids.h index e561a9cb98..9a0a6e4d1c 100644 --- a/include/constants/battle_string_ids.h +++ b/include/constants/battle_string_ids.h @@ -641,8 +641,11 @@ #define STRINGID_PKMNSABILITYPREVENTSABILITY 639 #define STRINGID_PREPARESHELLTRAP 640 #define STRINGID_SHELLTRAPDIDNTWORK 641 +#define STRINGID_SHARPSTEELFLOATS 642 +#define STRINGID_SHARPSTEELDMG 643 +#define STRINGID_PKMNBLEWAWAYSHARPSTEEL 644 -#define BATTLESTRINGS_COUNT 642 +#define BATTLESTRINGS_COUNT 645 // This is the string id that gBattleStringsTable starts with. // String ids before this (e.g. STRINGID_INTROMSG) are not in the table, diff --git a/src/battle_debug.c b/src/battle_debug.c index 027be03a45..3c2d9977cd 100644 --- a/src/battle_debug.c +++ b/src/battle_debug.c @@ -154,6 +154,7 @@ enum LIST_SIDE_STEALTH_ROCK, LIST_SIDE_TOXIC_SPIKES, LIST_SIDE_STICKY_WEB, + LIST_SIDE_STEELSURGE, }; enum @@ -228,6 +229,7 @@ static const u8 sText_PP[] = _("PP"); static const u8 sText_StealthRock[] = _("Stealth Rock"); static const u8 sText_ToxicSpikes[] = _("Toxic Spikes"); static const u8 sText_StickyWeb[] = _("Sticky Web"); +static const u8 sText_Steelsurge[] = _("Steelsurge"); static const u8 sText_AI[] = _("AI"); static const u8 sText_NoBadMoves[] = _("No Bad Moves"); static const u8 sText_Viability[] = _("Viability"); @@ -454,6 +456,7 @@ static const struct ListMenuItem sSideStatusListItems[] = {sText_StealthRock, LIST_SIDE_STEALTH_ROCK}, {sText_ToxicSpikes, LIST_SIDE_TOXIC_SPIKES}, {sText_StickyWeb, LIST_SIDE_STICKY_WEB}, + {sText_Steelsurge, LIST_SIDE_STEELSURGE}, }; static const struct ListMenuItem sSecondaryListItems[] = @@ -1744,6 +1747,15 @@ static u8 *GetSideStatusValue(struct BattleDebugMenu *data, bool32 changeStatus, *(u32 *)(data->modifyArrows.modifiedValPtr) &= ~SIDE_STATUS_STICKY_WEB; } return &sideTimer->stickyWebAmount; + case LIST_SIDE_STEELSURGE: + if (changeStatus) + { + if (statusTrue) + *(u32 *)(data->modifyArrows.modifiedValPtr) |= SIDE_STATUS_STEELSURGE; + else + *(u32 *)(data->modifyArrows.modifiedValPtr) &= ~SIDE_STATUS_STEELSURGE; + } + return &sideTimer->steelsurgeAmount; default: return NULL; } diff --git a/src/battle_message.c b/src/battle_message.c index 8d170b5524..1fb075ef70 100644 --- a/src/battle_message.c +++ b/src/battle_message.c @@ -776,9 +776,15 @@ static const u8 sText_AbilityWeakenedSurroundingMonsStat[] = _("{B_ATK_NAME_WITH static const u8 sText_AttackerGainedStrengthFromTheFallen[] = _("{B_ATK_NAME_WITH_PREFIX} gained strength\nfrom the fallen!"); static const u8 sText_PrepareShellTrap[] = _("{B_ATK_NAME_WITH_PREFIX} set a shell trap!"); static const u8 sText_ShellTrapDidntWork[] = _("{B_ATK_NAME_WITH_PREFIX}'s shell trap didn't work!"); +static const u8 sText_SharpSteelFloats[] = _("Sharp-pointed steel floats\naround {B_DEF_TEAM2} team!"); +static const u8 sText_SharpSteelDmg[] = _("Sharp steel bit into {B_DEF_NAME_WITH_PREFIX}!"); +static const u8 sText_PkmnBlewAwaySharpSteel[] = _("{B_ATK_NAME_WITH_PREFIX} blew away\nsharp steel!"); const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT] = { + [STRINGID_PKMNBLEWAWAYSHARPSTEEL - BATTLESTRINGS_TABLE_START] = sText_PkmnBlewAwaySharpSteel, + [STRINGID_SHARPSTEELDMG - BATTLESTRINGS_TABLE_START] = sText_SharpSteelDmg, + [STRINGID_SHARPSTEELFLOATS - BATTLESTRINGS_TABLE_START] = sText_SharpSteelFloats, [STRINGID_ATTACKERGAINEDSTRENGTHFROMTHEFALLEN - BATTLESTRINGS_TABLE_START] = sText_AttackerGainedStrengthFromTheFallen, [STRINGID_ABILITYWEAKENEDFSURROUNDINGMONSSTAT - BATTLESTRINGS_TABLE_START] = sText_AbilityWeakenedSurroundingMonsStat, [STRINGID_ELECTRICTERRAINACTIVATEDABILITY - BATTLESTRINGS_TABLE_START] = sText_ElectricTerrainActivatedAbility, @@ -1460,7 +1466,7 @@ const u16 gHealingWishStringIds[] = const u16 gDmgHazardsStringIds[] = { - STRINGID_PKMNHURTBYSPIKES, STRINGID_STEALTHROCKDMG + STRINGID_PKMNHURTBYSPIKES, STRINGID_STEALTHROCKDMG, STRINGID_SHARPSTEELDMG }; const u16 gSwitchInAbilityStringIds[] = diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index ed8e8fdf4b..c8ac3c6719 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -2868,6 +2868,7 @@ void SetMoveEffect(bool32 primary, u32 certain) bool32 mirrorArmorReflected = (GetBattlerAbility(gBattlerTarget) == ABILITY_MIRROR_ARMOR); u32 flags = 0; u16 battlerAbility; + bool8 activateAfterFaint = FALSE; if (gSpecialStatuses[gBattlerAttacker].parentalBondState == PARENTAL_BOND_1ST_HIT && gBattleMons[gBattlerTarget].hp != 0 @@ -2885,6 +2886,10 @@ void SetMoveEffect(bool32 primary, u32 certain) gBattleStruct->moveEffect2 = gBattleScripting.moveEffect; gBattlescriptCurrInstr++; return; + case MOVE_EFFECT_STEALTH_ROCK: + case MOVE_EFFECT_STEELSURGE: + activateAfterFaint = TRUE; + break; } if (gBattleScripting.moveEffect & MOVE_EFFECT_AFFECTS_USER) @@ -2926,6 +2931,7 @@ void SetMoveEffect(bool32 primary, u32 certain) INCREMENT_RESET_RETURN if (gBattleMons[gEffectBattler].hp == 0 + && !activateAfterFaint && gBattleScripting.moveEffect != MOVE_EFFECT_PAYDAY && gBattleScripting.moveEffect != MOVE_EFFECT_STEAL_ITEM && gBattleScripting.moveEffect != MOVE_EFFECT_BUG_BITE) @@ -3825,6 +3831,20 @@ void SetMoveEffect(bool32 primary, u32 certain) } break; } + case MOVE_EFFECT_STEALTH_ROCK: + if (!(gSideStatuses[GetBattlerSide(gEffectBattler)] & SIDE_STATUS_STEALTH_ROCK)) + { + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_StealthRockActivates; + } + break; + case MOVE_EFFECT_STEELSURGE: + if (!(gSideStatuses[GetBattlerSide(gEffectBattler)] & SIDE_STATUS_STEELSURGE)) + { + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_SteelsurgeActivates; + } + break; } } } @@ -3911,7 +3931,7 @@ static void Cmd_tryfaintmon(void) BattleScriptPop(); gBattlescriptCurrInstr = instr; - gSideStatuses[GetBattlerSide(gActiveBattler)] &= ~(SIDE_STATUS_SPIKES_DAMAGED | SIDE_STATUS_TOXIC_SPIKES_DAMAGED | SIDE_STATUS_STEALTH_ROCK_DAMAGED | SIDE_STATUS_STICKY_WEB_DAMAGED); + gSideStatuses[GetBattlerSide(gActiveBattler)] &= ~(SIDE_STATUS_SPIKES_DAMAGED | SIDE_STATUS_TOXIC_SPIKES_DAMAGED | SIDE_STATUS_STEALTH_ROCK_DAMAGED | SIDE_STATUS_STICKY_WEB_DAMAGED | SIDE_STATUS_STEELSURGE_DAMAGED); } else { @@ -7150,6 +7170,17 @@ static void Cmd_switchineffects(void) BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_StickyWebOnSwitchIn; } + else if (!(gSideStatuses[GetBattlerSide(gActiveBattler)] & SIDE_STATUS_STEELSURGE_DAMAGED) + && (gSideStatuses[GetBattlerSide(gActiveBattler)] & SIDE_STATUS_STEELSURGE) + && IsBattlerAffectedByHazards(gActiveBattler, FALSE) + && GetBattlerAbility(gActiveBattler) != ABILITY_MAGIC_GUARD) + { + gSideStatuses[GetBattlerSide(gActiveBattler)] |= SIDE_STATUS_STEELSURGE_DAMAGED; + gBattleMoveDamage = GetStealthHazardDamage(gBattleMoves[MOVE_G_MAX_STEELSURGE].type, gActiveBattler); + + if (gBattleMoveDamage != 0) + SetDmgHazardsBattlescript(gActiveBattler, 2); + } else if (gBattleMons[gActiveBattler].hp != gBattleMons[gActiveBattler].maxHP && gBattleStruct->zmove.healReplacement) { gBattleStruct->zmove.healReplacement = FALSE; @@ -7183,7 +7214,7 @@ static void Cmd_switchineffects(void) return; } - gSideStatuses[GetBattlerSide(gActiveBattler)] &= ~(SIDE_STATUS_SPIKES_DAMAGED | SIDE_STATUS_TOXIC_SPIKES_DAMAGED | SIDE_STATUS_STEALTH_ROCK_DAMAGED | SIDE_STATUS_STICKY_WEB_DAMAGED); + gSideStatuses[GetBattlerSide(gActiveBattler)] &= ~(SIDE_STATUS_SPIKES_DAMAGED | SIDE_STATUS_TOXIC_SPIKES_DAMAGED | SIDE_STATUS_STEALTH_ROCK_DAMAGED | SIDE_STATUS_STICKY_WEB_DAMAGED | SIDE_STATUS_STEELSURGE_DAMAGED); for (i = 0; i < gBattlersCount; i++) { @@ -8514,6 +8545,7 @@ static bool32 ClearDefogHazards(u8 battlerAtk, bool32 clear) DEFOG_CLEAR(SIDE_STATUS_STEALTH_ROCK, stealthRockAmount, BattleScript_StealthRockFree, 0); DEFOG_CLEAR(SIDE_STATUS_TOXIC_SPIKES, toxicSpikesAmount, BattleScript_ToxicSpikesFree, 0); DEFOG_CLEAR(SIDE_STATUS_STICKY_WEB, stickyWebAmount, BattleScript_StickyWebFree, 0); + DEFOG_CLEAR(SIDE_STATUS_STEELSURGE, steelsurgeAmount, BattleScript_SteelsurgeFree, 0); } return FALSE; @@ -8698,6 +8730,7 @@ static bool32 CourtChangeSwapSideStatuses(void) COURTCHANGE_SWAP(SIDE_STATUS_STEALTH_ROCK, stealthRockAmount, temp); COURTCHANGE_SWAP(SIDE_STATUS_TOXIC_SPIKES, toxicSpikesAmount, temp); COURTCHANGE_SWAP(SIDE_STATUS_STICKY_WEB, stickyWebAmount, temp); + COURTCHANGE_SWAP(SIDE_STATUS_STEELSURGE, stickyWebAmount, temp); // Change battler IDs of swapped effects. Needed for the correct string when they expire // E.g. "Foe's Reflect wore off!" @@ -11206,6 +11239,22 @@ static void Cmd_various(void) gBattlescriptCurrInstr = cmd->nextInstr; return; } + case VARIOUS_STORE_HEALING_WISH: + { + VARIOUS_ARGS(); + if (gCurrentMove == MOVE_LUNAR_DANCE) + gBattleStruct->storedLunarDance |= gBitTable[gActiveBattler]; + else + gBattleStruct->storedHealingWish |= gBitTable[gActiveBattler]; + break; + } + case VARIOUS_HIT_SWITCH_TARGET_FAILED: + { + VARIOUS_ARGS(); + gBattleStruct->hitSwitchTargetFailed = TRUE; + gBattlescriptCurrInstr = cmd->nextInstr; + return; + } case VARIOUS_SET_MAX_MOVE_EFFECT: { VARIOUS_ARGS(); @@ -11237,6 +11286,12 @@ static void Cmd_various(void) case MAX_EFFECT_PSYCHIC_TERRAIN: gBattleScripting.moveEffect = MOVE_EFFECT_TERRAIN; break; + case MAX_EFFECT_STEALTH_ROCK: + gBattleScripting.moveEffect = MOVE_EFFECT_STEALTH_ROCK; + break; + case MAX_EFFECT_STEELSURGE: + gBattleScripting.moveEffect = MOVE_EFFECT_STEELSURGE; + break; } break; } @@ -11258,20 +11313,20 @@ static void Cmd_various(void) gBattlescriptCurrInstr = cmd->nextInstr; return; } - case VARIOUS_STORE_HEALING_WISH: + case VARIOUS_SET_STEELSURGE: { - VARIOUS_ARGS(); - if (gCurrentMove == MOVE_LUNAR_DANCE) - gBattleStruct->storedLunarDance |= gBitTable[gActiveBattler]; + VARIOUS_ARGS(const u8 *failInstr); + u8 targetSide = GetBattlerSide(gBattlerTarget); + if (gSideStatuses[targetSide] & SIDE_STATUS_STEELSURGE) + { + gBattlescriptCurrInstr = cmd->failInstr; + } else - gBattleStruct->storedHealingWish |= gBitTable[gActiveBattler]; - break; - } - case VARIOUS_HIT_SWITCH_TARGET_FAILED: - { - VARIOUS_ARGS(); - gBattleStruct->hitSwitchTargetFailed = TRUE; - gBattlescriptCurrInstr = cmd->nextInstr; + { + gSideStatuses[targetSide] |= SIDE_STATUS_STEELSURGE; + gSideTimers[targetSide].steelsurgeAmount = 1; + gBattlescriptCurrInstr = cmd->nextInstr; + } return; } } // End of switch (cmd->id) @@ -14065,6 +14120,13 @@ static void Cmd_rapidspinfree(void) BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_StealthRockFree; } + else if (gSideStatuses[atkSide] & SIDE_STATUS_STEELSURGE) + { + gSideStatuses[atkSide] &= ~SIDE_STATUS_STEELSURGE; + gSideTimers[atkSide].steelsurgeAmount = 0; + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_SteelsurgeFree; + } else { gBattlescriptCurrInstr = cmd->nextInstr; diff --git a/src/data/battle_moves.h b/src/data/battle_moves.h index 309977b841..966f164b23 100644 --- a/src/data/battle_moves.h +++ b/src/data/battle_moves.h @@ -15233,7 +15233,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .type = TYPE_ROCK, .accuracy = 0, .pp = 10, - .secondaryEffectChance = 0, + .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = 0, @@ -15248,7 +15248,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .type = TYPE_GROUND, .accuracy = 0, .pp = 10, - .secondaryEffectChance = 0, + .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = 0, @@ -15278,7 +15278,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .type = TYPE_GRASS, .accuracy = 0, .pp = 10, - .secondaryEffectChance = 0, + .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = 0, @@ -15293,7 +15293,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .type = TYPE_STEEL, .accuracy = 0, .pp = 10, - .secondaryEffectChance = 0, + .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = 0, @@ -15308,7 +15308,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .type = TYPE_GRASS, .accuracy = 0, .pp = 10, - .secondaryEffectChance = 0, + .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = 0, @@ -15323,7 +15323,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .type = TYPE_FIRE, .accuracy = 0, .pp = 10, - .secondaryEffectChance = 0, + .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = 0, @@ -15338,7 +15338,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .type = TYPE_WATER, .accuracy = 0, .pp = 10, - .secondaryEffectChance = 0, + .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = 0, @@ -15353,7 +15353,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .type = TYPE_BUG, .accuracy = 0, .pp = 10, - .secondaryEffectChance = 0, + .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = 0, @@ -15368,7 +15368,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .type = TYPE_ELECTRIC, .accuracy = 0, .pp = 10, - .secondaryEffectChance = 0, + .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = 0, @@ -15383,7 +15383,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .type = TYPE_NORMAL, .accuracy = 0, .pp = 10, - .secondaryEffectChance = 0, + .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = 0, @@ -15398,7 +15398,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .type = TYPE_FIGHTING, .accuracy = 0, .pp = 10, - .secondaryEffectChance = 0, + .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = 0, @@ -15413,7 +15413,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .type = TYPE_GHOST, .accuracy = 0, .pp = 10, - .secondaryEffectChance = 0, + .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = 0, @@ -15428,7 +15428,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .type = TYPE_WATER, .accuracy = 0, .pp = 10, - .secondaryEffectChance = 0, + .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = 0, @@ -15443,7 +15443,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .type = TYPE_ICE, .accuracy = 0, .pp = 10, - .secondaryEffectChance = 0, + .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = 0, @@ -15458,7 +15458,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .type = TYPE_NORMAL, .accuracy = 0, .pp = 10, - .secondaryEffectChance = 0, + .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = 0, @@ -15473,7 +15473,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .type = TYPE_NORMAL, .accuracy = 0, .pp = 10, - .secondaryEffectChance = 0, + .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = 0, @@ -15488,7 +15488,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .type = TYPE_POISON, .accuracy = 0, .pp = 10, - .secondaryEffectChance = 0, + .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = 0, @@ -15503,7 +15503,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .type = TYPE_STEEL, .accuracy = 0, .pp = 10, - .secondaryEffectChance = 0, + .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = 0, @@ -15518,7 +15518,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .type = TYPE_GRASS, .accuracy = 0, .pp = 10, - .secondaryEffectChance = 0, + .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = 0, @@ -15533,7 +15533,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .type = TYPE_FIRE, .accuracy = 0, .pp = 10, - .secondaryEffectChance = 0, + .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = 0, @@ -15548,7 +15548,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .type = TYPE_WATER, .accuracy = 0, .pp = 10, - .secondaryEffectChance = 0, + .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = 0, @@ -15563,7 +15563,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .type = TYPE_FLYING, .accuracy = 0, .pp = 10, - .secondaryEffectChance = 0, + .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = 0, @@ -15578,7 +15578,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .type = TYPE_PSYCHIC, .accuracy = 0, .pp = 10, - .secondaryEffectChance = 0, + .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = 0, @@ -15593,7 +15593,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .type = TYPE_WATER, .accuracy = 0, .pp = 10, - .secondaryEffectChance = 0, + .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = 0, @@ -15608,7 +15608,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .type = TYPE_ROCK, .accuracy = 0, .pp = 10, - .secondaryEffectChance = 0, + .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = 0, @@ -15623,7 +15623,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .type = TYPE_GRASS, .accuracy = 0, .pp = 10, - .secondaryEffectChance = 0, + .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = 0, @@ -15638,7 +15638,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .type = TYPE_GRASS, .accuracy = 0, .pp = 10, - .secondaryEffectChance = 0, + .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = 0, @@ -15653,7 +15653,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .type = TYPE_GROUND, .accuracy = 0, .pp = 10, - .secondaryEffectChance = 0, + .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = 0, @@ -15668,7 +15668,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .type = TYPE_ELECTRIC, .accuracy = 0, .pp = 10, - .secondaryEffectChance = 0, + .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = 0, @@ -15683,7 +15683,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .type = TYPE_FIRE, .accuracy = 0, .pp = 10, - .secondaryEffectChance = 0, + .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = 0, @@ -15698,7 +15698,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .type = TYPE_FAIRY, .accuracy = 0, .pp = 10, - .secondaryEffectChance = 0, + .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = 0, @@ -15714,7 +15714,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .type = TYPE_DARK, .accuracy = 0, .pp = 10, - .secondaryEffectChance = 0, + .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = 0, @@ -15729,7 +15729,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .type = TYPE_FAIRY, .accuracy = 0, .pp = 10, - .secondaryEffectChance = 0, + .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = 0, @@ -15744,7 +15744,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .type = TYPE_STEEL, .accuracy = 0, .pp = 10, - .secondaryEffectChance = 0, + .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = 0, @@ -15759,7 +15759,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .type = TYPE_DRAGON, .accuracy = 0, .pp = 10, - .secondaryEffectChance = 0, + .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = 0, @@ -15774,7 +15774,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .type = TYPE_DARK, .accuracy = 0, .pp = 10, - .secondaryEffectChance = 0, + .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = 0, @@ -15789,7 +15789,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .type = TYPE_WATER, .accuracy = 0, .pp = 10, - .secondaryEffectChance = 0, + .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = 0, From a36c35aea10133b7caaac945111fa7174bcd168c Mon Sep 17 00:00:00 2001 From: AgustinGDLV Date: Sun, 26 Feb 2023 23:35:36 -0800 Subject: [PATCH 012/162] implemented G-Max Vine Lash, G-Max Wildfire, G-Max Cannonade, G-Max Volcalith --- asm/macros/battle_script.inc | 4 +++ data/battle_scripts_1.s | 32 ++++++++++++++++++ include/battle.h | 2 ++ include/battle_dynamax.h | 3 +- include/battle_scripts.h | 6 ++-- include/constants/battle.h | 4 ++- include/constants/battle_script_commands.h | 1 + include/constants/battle_string_ids.h | 10 +++++- src/battle_dynamax.c | 24 +++++++++++++- src/battle_message.c | 26 +++++++++++++++ src/battle_script_commands.c | 38 +++++++++++++++++++++- src/battle_util.c | 29 +++++++++++++++++ src/data/battle_moves.h | 2 +- 13 files changed, 173 insertions(+), 8 deletions(-) diff --git a/asm/macros/battle_script.inc b/asm/macros/battle_script.inc index 656283851e..bbb544de27 100644 --- a/asm/macros/battle_script.inc +++ b/asm/macros/battle_script.inc @@ -2233,6 +2233,10 @@ .4byte \failInstr .endm + .macro damagenontypes + various 0, VARIOUS_DAMAGE_NON_TYPES + .endm + @ Tries to increase or decrease a battler's stat's stat stage by a specified amount. If impossible, jumps to \script. .macro modifybattlerstatstage battler:req, stat:req, mode:req, amount:req, script:req, animation:req, customString diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 9efe349025..90ae715fd9 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -10404,6 +10404,38 @@ BattleScript_TargetAbilityStatRaiseRet:: BattleScript_TargetAbilityStatRaiseRet_End: return +BattleScript_DamageNonTypesStarts:: + printfromtable gDamageNonTypesStartStringIds + waitmessage B_WAIT_TIME_LONG + return + +BattleScript_DamageNonTypesContinues:: + @printfromtable gDamageNonTypesStartStringIds + @waitmessage B_WAIT_TIME_LONG + setbyte gBattleCommunication, 0 +BattleScript_DamageNonTypesLoop:: + copyarraywithindex gBattlerAttacker, gBattlerByTurnOrder, gBattleCommunication, 1 + damagenontypes + jumpifword CMP_EQUAL, gBattleMoveDamage, 0, BattleScript_DamageNonTypesLoopIncrement + printfromtable gDamageNonTypesDmgStringIds + waitmessage B_WAIT_TIME_LONG + effectivenesssound + hitanimation BS_ATTACKER + goto BattleScript_DamageNonTypesHpChange +BattleScript_DamageNonTypesHpChange: + orword gHitMarker, HITMARKER_SKIP_DMG_TRACK | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE | HITMARKER_GRUDGE + healthbarupdate BS_ATTACKER + datahpupdate BS_ATTACKER + tryfaintmon BS_ATTACKER + checkteamslost BattleScript_DamageNonTypesLoopIncrement +BattleScript_DamageNonTypesLoopIncrement:: + jumpifbyte CMP_NOT_EQUAL, gBattleOutcome, 0, BattleScript_DamageNonTypesContinuesEnd + addbyte gBattleCommunication, 1 + jumpifbytenotequal gBattleCommunication, gBattlersCount, BattleScript_DamageNonTypesLoop +BattleScript_DamageNonTypesContinuesEnd:: + bicword gHitMarker, HITMARKER_SKIP_DMG_TRACK | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE | HITMARKER_GRUDGE + end2 + BattleScript_PokemonCantUseTheMove:: attackstring ppreduce diff --git a/include/battle.h b/include/battle.h index 483d3cdb50..df467936c6 100644 --- a/include/battle.h +++ b/include/battle.h @@ -224,6 +224,8 @@ struct SideTimer u8 followmeTarget:3; u8 followmePowder:1; // Rage powder, does not affect grass type pokemon. u8 retaliateTimer; + u8 damageNonTypesTimer; + u8 damageNonTypesType; }; struct FieldTimer diff --git a/include/battle_dynamax.h b/include/battle_dynamax.h index b754c356a9..f5b61d082c 100644 --- a/include/battle_dynamax.h +++ b/include/battle_dynamax.h @@ -40,7 +40,7 @@ enum MaxMoveEffect MAX_EFFECT_HEAL_TEAM, MAX_EFFECT_SPITE, MAX_EFFECT_GRAVITY, - MAX_EFFECT_VOLCAITH_FOES, + MAX_EFFECT_VOLCALITH, MAX_EFFECT_SANDBLAST_FOES, MAX_EFFECT_YAWN_FOE, MAX_EFFECT_LOWER_EVASIVENESS_FOES, @@ -56,5 +56,6 @@ bool8 ShouldUseMaxMove(u16 battlerId, u16 baseMove); u16 GetMaxMove(u16 battlerId, u16 baseMove); bool8 IsMaxMove(u16 move); const u8 *GetMaxMoveName(u16 move); +void ChooseDamageNonTypesString(u8 move); #endif diff --git a/include/battle_scripts.h b/include/battle_scripts.h index 1c10989261..308a05e70f 100644 --- a/include/battle_scripts.h +++ b/include/battle_scripts.h @@ -454,8 +454,6 @@ extern const u8 BattleScript_HealingWishActivates[]; extern const u8 BattleScript_LunarDanceActivates[]; extern const u8 BattleScript_ShellTrapSetUp[]; extern const u8 BattleScript_StealthRockActivates[]; -extern const u8 BattleScript_SteelsurgeActivates[]; -extern const u8 BattleScript_SteelsurgeFree[]; // zmoves extern const u8 BattleScript_ZMoveActivateDamaging[]; @@ -471,5 +469,9 @@ extern const u8 BattleScript_EffectRaiseSideStats[]; extern const u8 BattleScript_EffectLowerSideStats[]; extern const u8 BattleScript_EffectSetWeather[]; extern const u8 BattleScript_EffectSetTerrain[]; +extern const u8 BattleScript_SteelsurgeActivates[]; +extern const u8 BattleScript_SteelsurgeFree[]; +extern const u8 BattleScript_DamageNonTypesStarts[]; +extern const u8 BattleScript_DamageNonTypesContinues[]; #endif // GUARD_BATTLE_SCRIPTS_H \ No newline at end of file diff --git a/include/constants/battle.h b/include/constants/battle.h index b9909fbfc6..6741ebe47b 100644 --- a/include/constants/battle.h +++ b/include/constants/battle.h @@ -235,6 +235,7 @@ #define SIDE_STATUS_MAT_BLOCK (1 << 21) #define SIDE_STATUS_STEELSURGE (1 << 22) #define SIDE_STATUS_STEELSURGE_DAMAGED (1 << 23) +#define SIDE_STATUS_DAMAGE_NON_TYPES (1 << 24) #define SIDE_STATUS_HAZARDS_ANY (SIDE_STATUS_SPIKES | SIDE_STATUS_STICKY_WEB | SIDE_STATUS_TOXIC_SPIKES | SIDE_STATUS_STEALTH_ROCK | SIDE_STATUS_STEELSURGE) #define SIDE_STATUS_SCREEN_ANY (SIDE_STATUS_REFLECT | SIDE_STATUS_LIGHTSCREEN | SIDE_STATUS_AURORA_VEIL) @@ -379,8 +380,9 @@ #define MOVE_EFFECT_TERRAIN 76 #define MOVE_EFFECT_STEALTH_ROCK 77 #define MOVE_EFFECT_STEELSURGE 78 +#define MOVE_EFFECT_DAMAGE_NON_TYPES 79 -#define NUM_MOVE_EFFECTS 79 +#define NUM_MOVE_EFFECTS 80 #define MOVE_EFFECT_AFFECTS_USER 0x4000 #define MOVE_EFFECT_CERTAIN 0x8000 diff --git a/include/constants/battle_script_commands.h b/include/constants/battle_script_commands.h index 258e74b154..0eb219eaad 100644 --- a/include/constants/battle_script_commands.h +++ b/include/constants/battle_script_commands.h @@ -264,6 +264,7 @@ #define VARIOUS_JUMP_IF_TARGET_NOT_ALLY 172 #define VARIOUS_JUMP_IF_TARGET_ABSENT 173 #define VARIOUS_SET_STEELSURGE 174 +#define VARIOUS_DAMAGE_NON_TYPES 175 // Cmd_manipulatedamage #define DMG_CHANGE_SIGN 0 diff --git a/include/constants/battle_string_ids.h b/include/constants/battle_string_ids.h index 9a0a6e4d1c..17b9d00eab 100644 --- a/include/constants/battle_string_ids.h +++ b/include/constants/battle_string_ids.h @@ -644,8 +644,16 @@ #define STRINGID_SHARPSTEELFLOATS 642 #define STRINGID_SHARPSTEELDMG 643 #define STRINGID_PKMNBLEWAWAYSHARPSTEEL 644 +#define STRINGID_TEAMTRAPPEDWITHVINES 645 +#define STRINGID_PKMNHURTBYVINES 646 +#define STRINGID_TEAMCAUGHTINVORTEX 647 +#define STRINGID_PKMNHURTBYVORTEX 648 +#define STRINGID_TEAMSURROUNDEDBYFIRE 649 +#define STRINGID_PKMNBURNINGUP 650 +#define STRINGID_TEAMSURROUNDEDBYROCKS 651 +#define STRINGID_PKMNHURTBYROCKSTHROWN 652 -#define BATTLESTRINGS_COUNT 645 +#define BATTLESTRINGS_COUNT 653 // This is the string id that gBattleStringsTable starts with. // String ids before this (e.g. STRINGID_INTROMSG) are not in the table, diff --git a/src/battle_dynamax.c b/src/battle_dynamax.c index 06d2611a90..bcca8dabe4 100644 --- a/src/battle_dynamax.c +++ b/src/battle_dynamax.c @@ -71,7 +71,7 @@ static const struct GMaxMove sGMaxMoveTable[] = {SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GMAX, TYPE_WATER, MOVE_G_MAX_RAPID_FLOW}, }; -// Functions: +// Returns whether a move should be converted into a Max Move. bool8 ShouldUseMaxMove(u16 battlerId, u16 baseMove) { // TODO: Raids @@ -82,6 +82,7 @@ bool8 ShouldUseMaxMove(u16 battlerId, u16 baseMove) return FALSE; } +// Returns the appropriate Max Move or G-Max Move for a battler to use. u16 GetMaxMove(u16 battlerId, u16 baseMove) { u16 move = baseMove; @@ -103,11 +104,13 @@ u16 GetMaxMove(u16 battlerId, u16 baseMove) return move; } +// Returns whether a move is a Max Move or not. bool8 IsMaxMove(u16 move) { return move >= FIRST_MAX_MOVE && move <= LAST_MAX_MOVE; } +// Returns the full name of a Max Move for the move usage text. const u8 *GetMaxMoveName(u16 move) { if (IsMaxMove(move)) @@ -115,3 +118,22 @@ const u8 *GetMaxMoveName(u16 move) else return gMaxMoveNames[0]; // Failsafe } + +// Assigns the multistring to use for the "Damage Non- Types" G-Max effect. +void ChooseDamageNonTypesString(u8 type) +{ + switch (type) { + case TYPE_GRASS: + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + break; + case TYPE_WATER: + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + break; + case TYPE_FIRE: + gBattleCommunication[MULTISTRING_CHOOSER] = 2; + break; + case TYPE_ROCK: + gBattleCommunication[MULTISTRING_CHOOSER] = 3; + break; + } +} diff --git a/src/battle_message.c b/src/battle_message.c index 1fb075ef70..8ebc73679f 100644 --- a/src/battle_message.c +++ b/src/battle_message.c @@ -779,9 +779,25 @@ static const u8 sText_ShellTrapDidntWork[] = _("{B_ATK_NAME_WITH_PREFIX}'s shell static const u8 sText_SharpSteelFloats[] = _("Sharp-pointed steel floats\naround {B_DEF_TEAM2} team!"); static const u8 sText_SharpSteelDmg[] = _("Sharp steel bit into {B_DEF_NAME_WITH_PREFIX}!"); static const u8 sText_PkmnBlewAwaySharpSteel[] = _("{B_ATK_NAME_WITH_PREFIX} blew away\nsharp steel!"); +static const u8 sText_TeamTrappedWithVines[] = _("{B_DEF_TEAM1} team got trapped\nwith vines!"); +static const u8 sText_PkmnHurtByVines[] = _("{B_ATK_NAME_WITH_PREFIX} is hurt by\nG-Max Vine Lash's ferocious beating!"); +static const u8 sText_TeamCaughtInVortex[] = _("{B_DEF_TEAM1} team got caught\nin a vortex of water!"); +static const u8 sText_PkmnHurtByVortex[] = _("{B_ATK_NAME_WITH_PREFIX} is hurt by\nG-Max Cannonade's vortex!"); +static const u8 sText_TeamSurroundedByFire[] = _("{B_DEF_TEAM1} team was surrounded\nby flames!"); +static const u8 sText_PkmnBurningUp[] = _("{B_ATK_NAME_WITH_PREFIX} is burning up\nwithin G-Max Wildfire's flames!"); +static const u8 sText_TeamSurroundedByRocks[] = _("{B_DEF_TEAM1} team was surrounded\nby rocks!"); +static const u8 sText_PkmnHurtByRocksThrown[] = _("{B_ATK_NAME_WITH_PREFIX} is hurt by\nrocks thrown out by G-Max Volcalith!"); const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT] = { + [STRINGID_PKMNHURTBYROCKSTHROWN - BATTLESTRINGS_TABLE_START] = sText_PkmnHurtByRocksThrown, + [STRINGID_TEAMSURROUNDEDBYROCKS - BATTLESTRINGS_TABLE_START] = sText_TeamSurroundedByRocks, + [STRINGID_PKMNBURNINGUP - BATTLESTRINGS_TABLE_START] = sText_PkmnBurningUp, + [STRINGID_TEAMSURROUNDEDBYFIRE - BATTLESTRINGS_TABLE_START] = sText_TeamSurroundedByFire, + [STRINGID_PKMNHURTBYVORTEX - BATTLESTRINGS_TABLE_START] = sText_PkmnHurtByVortex, + [STRINGID_TEAMCAUGHTINVORTEX - BATTLESTRINGS_TABLE_START] = sText_TeamCaughtInVortex, + [STRINGID_PKMNHURTBYVINES - BATTLESTRINGS_TABLE_START] = sText_PkmnHurtByVines, + [STRINGID_TEAMTRAPPEDWITHVINES - BATTLESTRINGS_TABLE_START] = sText_TeamTrappedWithVines, [STRINGID_PKMNBLEWAWAYSHARPSTEEL - BATTLESTRINGS_TABLE_START] = sText_PkmnBlewAwaySharpSteel, [STRINGID_SHARPSTEELDMG - BATTLESTRINGS_TABLE_START] = sText_SharpSteelDmg, [STRINGID_SHARPSTEELFLOATS - BATTLESTRINGS_TABLE_START] = sText_SharpSteelFloats, @@ -1877,6 +1893,16 @@ const u16 gStatusConditionsStringIds[] = STRINGID_PKMNWASPOISONED, STRINGID_PKMNBADLYPOISONED, STRINGID_PKMNWASBURNED, STRINGID_PKMNWASPARALYZED, STRINGID_PKMNFELLASLEEP }; +const u16 gDamageNonTypesStartStringIds[] = +{ + STRINGID_TEAMTRAPPEDWITHVINES, STRINGID_TEAMCAUGHTINVORTEX, STRINGID_TEAMSURROUNDEDBYFIRE, STRINGID_TEAMSURROUNDEDBYROCKS +}; + +const u16 gDamageNonTypesDmgStringIds[] = +{ + STRINGID_PKMNHURTBYVINES, STRINGID_PKMNHURTBYVORTEX, STRINGID_PKMNBURNINGUP, STRINGID_PKMNHURTBYROCKSTHROWN +}; + const u8 gText_PkmnIsEvolving[] = _("What?\n{STR_VAR_1} is evolving!"); const u8 gText_CongratsPkmnEvolved[] = _("Congratulations! Your {STR_VAR_1}\nevolved into {STR_VAR_2}!{WAIT_SE}\p"); const u8 gText_PkmnStoppedEvolving[] = _("Huh? {STR_VAR_1}\nstopped evolving!\p"); diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index c8ac3c6719..eeaefdb1e7 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -3845,6 +3845,20 @@ void SetMoveEffect(bool32 primary, u32 certain) gBattlescriptCurrInstr = BattleScript_SteelsurgeActivates; } break; + case MOVE_EFFECT_DAMAGE_NON_TYPES: + { + side = GetBattlerSide(gEffectBattler); + if (!(gSideStatuses[side] & SIDE_STATUS_DAMAGE_NON_TYPES)) + { + gSideStatuses[side] |= SIDE_STATUS_DAMAGE_NON_TYPES; + gSideTimers[side].damageNonTypesTimer = 4; + gSideTimers[side].damageNonTypesType = gBattleMoves[gCurrentMove].type; + BattleScriptPush(gBattlescriptCurrInstr + 1); + ChooseDamageNonTypesString(gBattleMoves[gCurrentMove].type); + gBattlescriptCurrInstr = BattleScript_DamageNonTypesStarts; + } + break; + } } } } @@ -11281,11 +11295,17 @@ static void Cmd_various(void) gBattleScripting.moveEffect = MOVE_EFFECT_WEATHER; break; case MAX_EFFECT_MISTY_TERRAIN: - case MAX_EFFECT_GRASSY_TERRAIN: // TODO: Grassy terrain not working? + case MAX_EFFECT_GRASSY_TERRAIN: case MAX_EFFECT_ELECTRIC_TERRAIN: case MAX_EFFECT_PSYCHIC_TERRAIN: gBattleScripting.moveEffect = MOVE_EFFECT_TERRAIN; break; + case MAX_EFFECT_VINE_LASH: + case MAX_EFFECT_CANNONADE: + case MAX_EFFECT_WILDFIRE: + case MAX_EFFECT_VOLCALITH: + gBattleScripting.moveEffect = MOVE_EFFECT_DAMAGE_NON_TYPES; + break; case MAX_EFFECT_STEALTH_ROCK: gBattleScripting.moveEffect = MOVE_EFFECT_STEALTH_ROCK; break; @@ -11329,6 +11349,22 @@ static void Cmd_various(void) } return; } + case VARIOUS_DAMAGE_NON_TYPES: + { + VARIOUS_ARGS(); + side = GetBattlerSide(gBattlerAttacker); + gBattleMoveDamage = 0; + if (gSideTimers[side].damageNonTypesTimer + && !IS_BATTLER_OF_TYPE(gBattlerAttacker, gSideTimers[side].damageNonTypesType) + && IsBattlerAlive(gBattlerAttacker) + && GetBattlerAbility(gBattlerAttacker) != ABILITY_MAGIC_GUARD) + { + gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 6; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + } + break; + } } // End of switch (cmd->id) gBattlescriptCurrInstr = cmd->nextInstr; diff --git a/src/battle_util.c b/src/battle_util.c index 59bd25afde..907891724b 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -2117,6 +2117,7 @@ enum ENDTURN_SANDSTORM, ENDTURN_SUN, ENDTURN_HAIL, + ENDTURN_DAMAGE_NON_TYPES, ENDTURN_GRAVITY, ENDTURN_WATER_SPORT, ENDTURN_MUD_SPORT, @@ -2458,6 +2459,34 @@ u8 DoFieldEndTurnEffects(void) } gBattleStruct->turnCountersTracker++; break; + case ENDTURN_DAMAGE_NON_TYPES: + while (gBattleStruct->turnSideTracker < 2) + { + side = gBattleStruct->turnSideTracker; + if (gSideStatuses[side] & SIDE_STATUS_DAMAGE_NON_TYPES) + { + if (--gSideTimers[side].damageNonTypesTimer == 0) + { + gSideStatuses[side] &= ~SIDE_STATUS_DAMAGE_NON_TYPES; + //gBattlescriptCurrInstr = BattleScript_DamageNonTypesEnds; TODO: no end message in-game? + effect++; + } + else + { + ChooseDamageNonTypesString(gSideTimers[side].damageNonTypesType); + BattleScriptExecute(BattleScript_DamageNonTypesContinues); + } + } + gBattleStruct->turnSideTracker++; + if (effect != 0) + break; + } + if (!effect) + { + gBattleStruct->turnCountersTracker++; + gBattleStruct->turnSideTracker = 0; + } + break; case ENDTURN_TRICK_ROOM: if (gFieldStatuses & STATUS_FIELD_TRICK_ROOM && --gFieldTimers.trickRoomTimer == 0) { diff --git a/src/data/battle_moves.h b/src/data/battle_moves.h index 966f164b23..88347ae913 100644 --- a/src/data/battle_moves.h +++ b/src/data/battle_moves.h @@ -15613,7 +15613,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .flags = 0, .split = SPLIT_PHYSICAL, - .argument = MAX_EFFECT_VOLCAITH_FOES, + .argument = MAX_EFFECT_VOLCALITH, }, [MOVE_G_MAX_TARTNESS] = From e32936d0b175e4508d66656d94bffaf9e56d1838 Mon Sep 17 00:00:00 2001 From: AgustinGDLV Date: Mon, 27 Feb 2023 09:57:24 -0800 Subject: [PATCH 013/162] implemented G-Max Foam Burst, G-Max Tartness --- src/battle_script_commands.c | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index eeaefdb1e7..478b7ea1b5 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -3752,7 +3752,8 @@ void SetMoveEffect(bool32 primary, u32 certain) case MOVE_EFFECT_RAISE_SIDE_STATS: if (!NoAliveMonsForEitherParty()) { - SET_STATCHANGER(gBattleMoves[gCurrentMove].argument, 1, FALSE); // see enum MaxMoveEffect + // Max Effects are ordered by stat ID. + SET_STATCHANGER(gBattleMoves[gCurrentMove].argument, 1, FALSE); BattleScriptPush(gBattlescriptCurrInstr + 1); gBattlescriptCurrInstr = BattleScript_EffectRaiseSideStats; break; @@ -3760,7 +3761,23 @@ void SetMoveEffect(bool32 primary, u32 certain) case MOVE_EFFECT_LOWER_SIDE_STATS: if (!NoAliveMonsForEitherParty()) { - SET_STATCHANGER(gBattleMoves[gCurrentMove].argument - 5, 1, TRUE); // see enum MaxMoveEffect + u8 statId = 0; + u8 stage = 1; + switch (gBattleMoves[gCurrentMove].argument) + { + case MAX_EFFECT_LOWER_SPEED_2_FOES: + statId = STAT_SPEED; + stage = 2; + break; + case MAX_EFFECT_LOWER_EVASIVENESS_FOES: + statId = STAT_EVASION; + break; + default: + // Max Effects are ordered by stat ID. + statId = gBattleMoves[gCurrentMove].argument - MAX_EFFECT_LOWER_ATTACK + 1; + break; + } + SET_STATCHANGER(statId, stage, TRUE); BattleScriptPush(gBattlescriptCurrInstr + 1); gBattlescriptCurrInstr = BattleScript_EffectLowerSideStats; break; @@ -11286,6 +11303,8 @@ static void Cmd_various(void) case MAX_EFFECT_LOWER_SPEED: case MAX_EFFECT_LOWER_SP_ATK: case MAX_EFFECT_LOWER_SP_DEF: + case MAX_EFFECT_LOWER_SPEED_2_FOES: + case MAX_EFFECT_LOWER_EVASIVENESS_FOES: gBattleScripting.moveEffect = MOVE_EFFECT_LOWER_SIDE_STATS; break; case MAX_EFFECT_SUN: From c6c92da19c31f1552e14832ea1d18d4db5febee1 Mon Sep 17 00:00:00 2001 From: AgustinGDLV Date: Mon, 27 Feb 2023 10:19:56 -0800 Subject: [PATCH 014/162] implemented G-Max Wind Rage --- include/battle_scripts.h | 1 + include/constants/battle.h | 3 ++- src/battle_script_commands.c | 33 +++++++++++++++++++++++---------- 3 files changed, 26 insertions(+), 11 deletions(-) diff --git a/include/battle_scripts.h b/include/battle_scripts.h index 308a05e70f..69f6567384 100644 --- a/include/battle_scripts.h +++ b/include/battle_scripts.h @@ -454,6 +454,7 @@ extern const u8 BattleScript_HealingWishActivates[]; extern const u8 BattleScript_LunarDanceActivates[]; extern const u8 BattleScript_ShellTrapSetUp[]; extern const u8 BattleScript_StealthRockActivates[]; +extern const u8 BattleScript_DefogTryHazards[]; // zmoves extern const u8 BattleScript_ZMoveActivateDamaging[]; diff --git a/include/constants/battle.h b/include/constants/battle.h index 6741ebe47b..a34e314dd1 100644 --- a/include/constants/battle.h +++ b/include/constants/battle.h @@ -381,8 +381,9 @@ #define MOVE_EFFECT_STEALTH_ROCK 77 #define MOVE_EFFECT_STEELSURGE 78 #define MOVE_EFFECT_DAMAGE_NON_TYPES 79 +#define MOVE_EFFECT_DEFOG 80 -#define NUM_MOVE_EFFECTS 80 +#define NUM_MOVE_EFFECTS 81 #define MOVE_EFFECT_AFFECTS_USER 0x4000 #define MOVE_EFFECT_CERTAIN 0x8000 diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 478b7ea1b5..64a5c577ad 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -3848,6 +3848,20 @@ void SetMoveEffect(bool32 primary, u32 certain) } break; } + case MOVE_EFFECT_DAMAGE_NON_TYPES: + { + side = GetBattlerSide(gBattlerTarget); + if (!(gSideStatuses[side] & SIDE_STATUS_DAMAGE_NON_TYPES)) + { + gSideStatuses[side] |= SIDE_STATUS_DAMAGE_NON_TYPES; + gSideTimers[side].damageNonTypesTimer = 4; + gSideTimers[side].damageNonTypesType = gBattleMoves[gCurrentMove].type; + BattleScriptPush(gBattlescriptCurrInstr + 1); + ChooseDamageNonTypesString(gBattleMoves[gCurrentMove].type); + gBattlescriptCurrInstr = BattleScript_DamageNonTypesStarts; + } + break; + } case MOVE_EFFECT_STEALTH_ROCK: if (!(gSideStatuses[GetBattlerSide(gEffectBattler)] & SIDE_STATUS_STEALTH_ROCK)) { @@ -3862,21 +3876,17 @@ void SetMoveEffect(bool32 primary, u32 certain) gBattlescriptCurrInstr = BattleScript_SteelsurgeActivates; } break; - case MOVE_EFFECT_DAMAGE_NON_TYPES: - { - side = GetBattlerSide(gEffectBattler); - if (!(gSideStatuses[side] & SIDE_STATUS_DAMAGE_NON_TYPES)) + case MOVE_EFFECT_DEFOG: + if (gSideStatuses[GetBattlerSide(gEffectBattler)] & SIDE_STATUS_SCREEN_ANY + || gSideStatuses[GetBattlerSide(gEffectBattler)] & SIDE_STATUS_HAZARDS_ANY + || gSideStatuses[GetBattlerSide(gBattlerAttacker)] & SIDE_STATUS_HAZARDS_ANY + || gFieldStatuses & STATUS_FIELD_TERRAIN_ANY) { - gSideStatuses[side] |= SIDE_STATUS_DAMAGE_NON_TYPES; - gSideTimers[side].damageNonTypesTimer = 4; - gSideTimers[side].damageNonTypesType = gBattleMoves[gCurrentMove].type; BattleScriptPush(gBattlescriptCurrInstr + 1); - ChooseDamageNonTypesString(gBattleMoves[gCurrentMove].type); - gBattlescriptCurrInstr = BattleScript_DamageNonTypesStarts; + gBattlescriptCurrInstr = BattleScript_DefogTryHazards; } break; } - } } } @@ -11331,6 +11341,9 @@ static void Cmd_various(void) case MAX_EFFECT_STEELSURGE: gBattleScripting.moveEffect = MOVE_EFFECT_STEELSURGE; break; + case MAX_EFFECT_DEFOG: + gBattleScripting.moveEffect = MOVE_EFFECT_DEFOG; + break; } break; } From 92c850386975abbc3c90c2c97719ce2a733055ea Mon Sep 17 00:00:00 2001 From: AgustinGDLV Date: Mon, 27 Feb 2023 11:54:49 -0800 Subject: [PATCH 015/162] reorganized max move functionality to remove redundant move effects --- data/battle_scripts_1.s | 19 +++- include/battle_dynamax.h | 1 + include/constants/battle.h | 10 +- src/battle_dynamax.c | 181 ++++++++++++++++++++++++++++++++- src/battle_script_commands.c | 191 +---------------------------------- 5 files changed, 201 insertions(+), 201 deletions(-) diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 90ae715fd9..9fc414baef 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -10334,11 +10334,26 @@ BattleScript_SymbiosisActivates:: @@@ MAX MOVES @@@ BattleScript_EffectMaxMove:: attackcanceler - setmaxmoveeffect accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON attackstring ppreduce - goto BattleScript_HitFromCritCalc + critcalc + damagecalc + adjustdamage + attackanimation + waitanimation + effectivenesssound + hitanimation BS_TARGET + waitstate + healthbarupdate BS_TARGET + datahpupdate BS_TARGET + critmessage + waitmessage B_WAIT_TIME_LONG + resultmessage + waitmessage B_WAIT_TIME_LONG + setmaxmoveeffect + tryfaintmon BS_TARGET + goto BattleScript_MoveEnd BattleScript_EffectRaiseSideStats:: savetarget diff --git a/include/battle_dynamax.h b/include/battle_dynamax.h index f5b61d082c..24c4d06e3e 100644 --- a/include/battle_dynamax.h +++ b/include/battle_dynamax.h @@ -57,5 +57,6 @@ u16 GetMaxMove(u16 battlerId, u16 baseMove); bool8 IsMaxMove(u16 move); const u8 *GetMaxMoveName(u16 move); void ChooseDamageNonTypesString(u8 move); +u16 SetMaxMoveEffect(u16 move); #endif diff --git a/include/constants/battle.h b/include/constants/battle.h index a34e314dd1..921c229e0a 100644 --- a/include/constants/battle.h +++ b/include/constants/battle.h @@ -374,16 +374,8 @@ #define MOVE_EFFECT_TRAP_BOTH 70 #define MOVE_EFFECT_DOUBLE_SHOCK 71 #define MOVE_EFFECT_ROUND 72 -#define MOVE_EFFECT_RAISE_SIDE_STATS 73 -#define MOVE_EFFECT_LOWER_SIDE_STATS 74 -#define MOVE_EFFECT_WEATHER 75 -#define MOVE_EFFECT_TERRAIN 76 -#define MOVE_EFFECT_STEALTH_ROCK 77 -#define MOVE_EFFECT_STEELSURGE 78 -#define MOVE_EFFECT_DAMAGE_NON_TYPES 79 -#define MOVE_EFFECT_DEFOG 80 -#define NUM_MOVE_EFFECTS 81 +#define NUM_MOVE_EFFECTS 73 #define MOVE_EFFECT_AFFECTS_USER 0x4000 #define MOVE_EFFECT_CERTAIN 0x8000 diff --git a/src/battle_dynamax.c b/src/battle_dynamax.c index bcca8dabe4..048c0afb18 100644 --- a/src/battle_dynamax.c +++ b/src/battle_dynamax.c @@ -1,7 +1,12 @@ #include "global.h" #include "battle.h" +#include "battle_anim.h" +#include "battle_scripts.h" +#include "battle_script_commands.h" #include "data.h" #include "pokemon.h" +#include "constants/battle_string_ids.h" +#include "constants/hold_effects.h" #include "constants/moves.h" // Constant Data @@ -79,7 +84,7 @@ bool8 ShouldUseMaxMove(u16 battlerId, u16 baseMove) // return !IsRaidBossUsingRegularMove(battlerId, baseMove); if (gBattleStruct->dynamax.dynamaxTurns[battlerId] > 0) return TRUE; - return FALSE; + return TRUE; } // Returns the appropriate Max Move or G-Max Move for a battler to use. @@ -137,3 +142,177 @@ void ChooseDamageNonTypesString(u8 type) break; } } + +// Activates the secondary effect of a Max Move. +u16 SetMaxMoveEffect(u16 move) +{ + u16 effect = 0; + u8 maxEffect = gBattleMoves[move].argument; + switch (maxEffect) + { + case MAX_EFFECT_RAISE_TEAM_ATTACK: + case MAX_EFFECT_RAISE_TEAM_DEFENSE: + case MAX_EFFECT_RAISE_TEAM_SPEED: + case MAX_EFFECT_RAISE_TEAM_SP_ATK: + case MAX_EFFECT_RAISE_TEAM_SP_DEF: + if (!NoAliveMonsForEitherParty()) + { + // Max Effects are ordered by stat ID. + SET_STATCHANGER(gBattleMoves[gCurrentMove].argument, 1, FALSE); + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_EffectRaiseSideStats; + effect++; + } + break; + case MAX_EFFECT_LOWER_ATTACK: + case MAX_EFFECT_LOWER_DEFENSE: + case MAX_EFFECT_LOWER_SPEED: + case MAX_EFFECT_LOWER_SP_ATK: + case MAX_EFFECT_LOWER_SP_DEF: + case MAX_EFFECT_LOWER_SPEED_2_FOES: + case MAX_EFFECT_LOWER_EVASIVENESS_FOES: + if (!NoAliveMonsForEitherParty()) + { + u8 statId = 0; + u8 stage = 1; + switch (maxEffect) + { + case MAX_EFFECT_LOWER_SPEED_2_FOES: + statId = STAT_SPEED; + stage = 2; + break; + case MAX_EFFECT_LOWER_EVASIVENESS_FOES: + statId = STAT_EVASION; + break; + default: + // Max Effects are ordered by stat ID. + statId = gBattleMoves[gCurrentMove].argument - MAX_EFFECT_LOWER_ATTACK + 1; + break; + } + SET_STATCHANGER(statId, stage, TRUE); + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_EffectLowerSideStats; + effect++; + } + break; + case MAX_EFFECT_SUN: + case MAX_EFFECT_RAIN: + case MAX_EFFECT_SANDSTORM: + case MAX_EFFECT_HAIL: + { + u8 weather, msg; + switch (maxEffect) + { + case MAX_EFFECT_SUN: + weather = ENUM_WEATHER_SUN; + msg = B_MSG_STARTED_SUNLIGHT; + break; + case MAX_EFFECT_RAIN: + weather = ENUM_WEATHER_RAIN; + msg = B_MSG_STARTED_RAIN; + break; + case MAX_EFFECT_SANDSTORM: + weather = ENUM_WEATHER_SANDSTORM; + msg = B_MSG_STARTED_SANDSTORM; + break; + case MAX_EFFECT_HAIL: + weather = ENUM_WEATHER_HAIL; + msg = B_MSG_STARTED_HAIL; + break; + } + if (TryChangeBattleWeather(gBattlerAttacker, weather, FALSE)) + { + gBattleCommunication[MULTISTRING_CHOOSER] = msg; + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_EffectSetWeather; + effect++; + } + break; + } + case MAX_EFFECT_MISTY_TERRAIN: + case MAX_EFFECT_GRASSY_TERRAIN: + case MAX_EFFECT_ELECTRIC_TERRAIN: + case MAX_EFFECT_PSYCHIC_TERRAIN: + { + u32 statusFlag = 0; + u8 *timer = NULL; + switch (gBattleMoves[gCurrentMove].argument) + { + case MAX_EFFECT_MISTY_TERRAIN: + statusFlag = STATUS_FIELD_MISTY_TERRAIN, timer = &gFieldTimers.terrainTimer; + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + break; + case MAX_EFFECT_GRASSY_TERRAIN: + statusFlag = STATUS_FIELD_GRASSY_TERRAIN, timer = &gFieldTimers.terrainTimer; + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + break; + case MAX_EFFECT_ELECTRIC_TERRAIN: + statusFlag = STATUS_FIELD_ELECTRIC_TERRAIN, timer = &gFieldTimers.terrainTimer; + gBattleCommunication[MULTISTRING_CHOOSER] = 2; + break; + case MAX_EFFECT_PSYCHIC_TERRAIN: + statusFlag = STATUS_FIELD_PSYCHIC_TERRAIN, timer = &gFieldTimers.terrainTimer; + gBattleCommunication[MULTISTRING_CHOOSER] = 3; + break; + } + if (!(gFieldStatuses & statusFlag) && statusFlag != 0) + { + gFieldStatuses &= ~STATUS_FIELD_TERRAIN_ANY; + gFieldStatuses |= statusFlag; + if (GetBattlerHoldEffect(gBattlerAttacker, TRUE) == HOLD_EFFECT_TERRAIN_EXTENDER) + *timer = 8; + else + *timer = 5; + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_EffectSetTerrain; + } + break; + } + case MAX_EFFECT_VINE_LASH: + case MAX_EFFECT_CANNONADE: + case MAX_EFFECT_WILDFIRE: + case MAX_EFFECT_VOLCALITH: + { + u8 side = GetBattlerSide(gBattlerTarget); + if (!(gSideStatuses[side] & SIDE_STATUS_DAMAGE_NON_TYPES)) + { + gSideStatuses[side] |= SIDE_STATUS_DAMAGE_NON_TYPES; + gSideTimers[side].damageNonTypesTimer = 4; + gSideTimers[side].damageNonTypesType = gBattleMoves[gCurrentMove].type; + BattleScriptPush(gBattlescriptCurrInstr + 1); + ChooseDamageNonTypesString(gBattleMoves[gCurrentMove].type); + gBattlescriptCurrInstr = BattleScript_DamageNonTypesStarts; + effect++; + } + break; + } + case MAX_EFFECT_STEALTH_ROCK: + if (!(gSideStatuses[GetBattlerSide(gBattlerTarget)] & SIDE_STATUS_STEALTH_ROCK)) + { + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_StealthRockActivates; + effect++; + } + break; + case MAX_EFFECT_STEELSURGE: + if (!(gSideStatuses[GetBattlerSide(gBattlerTarget)] & SIDE_STATUS_STEELSURGE)) + { + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_SteelsurgeActivates; + effect++; + } + break; + case MAX_EFFECT_DEFOG: + if (gSideStatuses[GetBattlerSide(gBattlerTarget)] & SIDE_STATUS_SCREEN_ANY + || gSideStatuses[GetBattlerSide(gBattlerTarget)] & SIDE_STATUS_HAZARDS_ANY + || gSideStatuses[GetBattlerSide(gBattlerAttacker)] & SIDE_STATUS_HAZARDS_ANY + || gFieldStatuses & STATUS_FIELD_TERRAIN_ANY) + { + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_DefogTryHazards; + effect++; + } + break; + } + return effect; +} diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 64a5c577ad..04a2ca06fd 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -2868,7 +2868,6 @@ void SetMoveEffect(bool32 primary, u32 certain) bool32 mirrorArmorReflected = (GetBattlerAbility(gBattlerTarget) == ABILITY_MIRROR_ARMOR); u32 flags = 0; u16 battlerAbility; - bool8 activateAfterFaint = FALSE; if (gSpecialStatuses[gBattlerAttacker].parentalBondState == PARENTAL_BOND_1ST_HIT && gBattleMons[gBattlerTarget].hp != 0 @@ -2886,10 +2885,6 @@ void SetMoveEffect(bool32 primary, u32 certain) gBattleStruct->moveEffect2 = gBattleScripting.moveEffect; gBattlescriptCurrInstr++; return; - case MOVE_EFFECT_STEALTH_ROCK: - case MOVE_EFFECT_STEELSURGE: - activateAfterFaint = TRUE; - break; } if (gBattleScripting.moveEffect & MOVE_EFFECT_AFFECTS_USER) @@ -2931,7 +2926,6 @@ void SetMoveEffect(bool32 primary, u32 certain) INCREMENT_RESET_RETURN if (gBattleMons[gEffectBattler].hp == 0 - && !activateAfterFaint && gBattleScripting.moveEffect != MOVE_EFFECT_PAYDAY && gBattleScripting.moveEffect != MOVE_EFFECT_STEAL_ITEM && gBattleScripting.moveEffect != MOVE_EFFECT_BUG_BITE) @@ -3748,143 +3742,6 @@ void SetMoveEffect(bool32 primary, u32 certain) case MOVE_EFFECT_ROUND: TryUpdateRoundTurnOrder(); // If another Pokémon uses Round before the user this turn, the user will use Round directly after it gBattlescriptCurrInstr++; - break;// MAX MOVE EFFECTS - case MOVE_EFFECT_RAISE_SIDE_STATS: - if (!NoAliveMonsForEitherParty()) - { - // Max Effects are ordered by stat ID. - SET_STATCHANGER(gBattleMoves[gCurrentMove].argument, 1, FALSE); - BattleScriptPush(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = BattleScript_EffectRaiseSideStats; - break; - } - case MOVE_EFFECT_LOWER_SIDE_STATS: - if (!NoAliveMonsForEitherParty()) - { - u8 statId = 0; - u8 stage = 1; - switch (gBattleMoves[gCurrentMove].argument) - { - case MAX_EFFECT_LOWER_SPEED_2_FOES: - statId = STAT_SPEED; - stage = 2; - break; - case MAX_EFFECT_LOWER_EVASIVENESS_FOES: - statId = STAT_EVASION; - break; - default: - // Max Effects are ordered by stat ID. - statId = gBattleMoves[gCurrentMove].argument - MAX_EFFECT_LOWER_ATTACK + 1; - break; - } - SET_STATCHANGER(statId, stage, TRUE); - BattleScriptPush(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = BattleScript_EffectLowerSideStats; - break; - } - case MOVE_EFFECT_WEATHER: - { - u8 weather, msg; - switch (gBattleMoves[gCurrentMove].argument) - { - case MAX_EFFECT_SUN: - weather = ENUM_WEATHER_SUN; - msg = B_MSG_STARTED_SUNLIGHT; - break; - case MAX_EFFECT_RAIN: - weather = ENUM_WEATHER_RAIN; - msg = B_MSG_STARTED_RAIN; - break; - case MAX_EFFECT_SANDSTORM: - weather = ENUM_WEATHER_SANDSTORM; - msg = B_MSG_STARTED_SANDSTORM; - break; - case MAX_EFFECT_HAIL: - weather = ENUM_WEATHER_HAIL; - msg = B_MSG_STARTED_HAIL; - break; - } - if (TryChangeBattleWeather(gBattlerAttacker, weather, FALSE)) - { - gBattleCommunication[MULTISTRING_CHOOSER] = msg; - BattleScriptPush(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = BattleScript_EffectSetWeather; - } - break; - } - case MOVE_EFFECT_TERRAIN: - { - u32 statusFlag = 0; - u8 *timer = NULL; - switch (gBattleMoves[gCurrentMove].argument) - { - case MAX_EFFECT_MISTY_TERRAIN: - statusFlag = STATUS_FIELD_MISTY_TERRAIN, timer = &gFieldTimers.terrainTimer; - gBattleCommunication[MULTISTRING_CHOOSER] = 0; - break; - case MAX_EFFECT_GRASSY_TERRAIN: - statusFlag = STATUS_FIELD_GRASSY_TERRAIN, timer = &gFieldTimers.terrainTimer; - gBattleCommunication[MULTISTRING_CHOOSER] = 1; - break; - case MAX_EFFECT_ELECTRIC_TERRAIN: - statusFlag = STATUS_FIELD_ELECTRIC_TERRAIN, timer = &gFieldTimers.terrainTimer; - gBattleCommunication[MULTISTRING_CHOOSER] = 2; - break; - case MAX_EFFECT_PSYCHIC_TERRAIN: - statusFlag = STATUS_FIELD_PSYCHIC_TERRAIN, timer = &gFieldTimers.terrainTimer; - gBattleCommunication[MULTISTRING_CHOOSER] = 3; - break; - } - if (!(gFieldStatuses & statusFlag) && statusFlag != 0) - { - gFieldStatuses &= ~STATUS_FIELD_TERRAIN_ANY; - gFieldStatuses |= statusFlag; - if (GetBattlerHoldEffect(gBattlerAttacker, TRUE) == HOLD_EFFECT_TERRAIN_EXTENDER) - *timer = 8; - else - *timer = 5; - BattleScriptPush(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = BattleScript_EffectSetTerrain; - } - break; - } - case MOVE_EFFECT_DAMAGE_NON_TYPES: - { - side = GetBattlerSide(gBattlerTarget); - if (!(gSideStatuses[side] & SIDE_STATUS_DAMAGE_NON_TYPES)) - { - gSideStatuses[side] |= SIDE_STATUS_DAMAGE_NON_TYPES; - gSideTimers[side].damageNonTypesTimer = 4; - gSideTimers[side].damageNonTypesType = gBattleMoves[gCurrentMove].type; - BattleScriptPush(gBattlescriptCurrInstr + 1); - ChooseDamageNonTypesString(gBattleMoves[gCurrentMove].type); - gBattlescriptCurrInstr = BattleScript_DamageNonTypesStarts; - } - break; - } - case MOVE_EFFECT_STEALTH_ROCK: - if (!(gSideStatuses[GetBattlerSide(gEffectBattler)] & SIDE_STATUS_STEALTH_ROCK)) - { - BattleScriptPush(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = BattleScript_StealthRockActivates; - } - break; - case MOVE_EFFECT_STEELSURGE: - if (!(gSideStatuses[GetBattlerSide(gEffectBattler)] & SIDE_STATUS_STEELSURGE)) - { - BattleScriptPush(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = BattleScript_SteelsurgeActivates; - } - break; - case MOVE_EFFECT_DEFOG: - if (gSideStatuses[GetBattlerSide(gEffectBattler)] & SIDE_STATUS_SCREEN_ANY - || gSideStatuses[GetBattlerSide(gEffectBattler)] & SIDE_STATUS_HAZARDS_ANY - || gSideStatuses[GetBattlerSide(gBattlerAttacker)] & SIDE_STATUS_HAZARDS_ANY - || gFieldStatuses & STATUS_FIELD_TERRAIN_ANY) - { - BattleScriptPush(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = BattleScript_DefogTryHazards; - } break; } } @@ -11299,52 +11156,8 @@ static void Cmd_various(void) case VARIOUS_SET_MAX_MOVE_EFFECT: { VARIOUS_ARGS(); - switch (gBattleMoves[gCurrentMove].argument) - { - case MAX_EFFECT_RAISE_TEAM_ATTACK: - case MAX_EFFECT_RAISE_TEAM_DEFENSE: - case MAX_EFFECT_RAISE_TEAM_SPEED: - case MAX_EFFECT_RAISE_TEAM_SP_ATK: - case MAX_EFFECT_RAISE_TEAM_SP_DEF: - gBattleScripting.moveEffect = MOVE_EFFECT_RAISE_SIDE_STATS; - break; - case MAX_EFFECT_LOWER_ATTACK: - case MAX_EFFECT_LOWER_DEFENSE: - case MAX_EFFECT_LOWER_SPEED: - case MAX_EFFECT_LOWER_SP_ATK: - case MAX_EFFECT_LOWER_SP_DEF: - case MAX_EFFECT_LOWER_SPEED_2_FOES: - case MAX_EFFECT_LOWER_EVASIVENESS_FOES: - gBattleScripting.moveEffect = MOVE_EFFECT_LOWER_SIDE_STATS; - break; - case MAX_EFFECT_SUN: - case MAX_EFFECT_RAIN: - case MAX_EFFECT_SANDSTORM: - case MAX_EFFECT_HAIL: - gBattleScripting.moveEffect = MOVE_EFFECT_WEATHER; - break; - case MAX_EFFECT_MISTY_TERRAIN: - case MAX_EFFECT_GRASSY_TERRAIN: - case MAX_EFFECT_ELECTRIC_TERRAIN: - case MAX_EFFECT_PSYCHIC_TERRAIN: - gBattleScripting.moveEffect = MOVE_EFFECT_TERRAIN; - break; - case MAX_EFFECT_VINE_LASH: - case MAX_EFFECT_CANNONADE: - case MAX_EFFECT_WILDFIRE: - case MAX_EFFECT_VOLCALITH: - gBattleScripting.moveEffect = MOVE_EFFECT_DAMAGE_NON_TYPES; - break; - case MAX_EFFECT_STEALTH_ROCK: - gBattleScripting.moveEffect = MOVE_EFFECT_STEALTH_ROCK; - break; - case MAX_EFFECT_STEELSURGE: - gBattleScripting.moveEffect = MOVE_EFFECT_STEELSURGE; - break; - case MAX_EFFECT_DEFOG: - gBattleScripting.moveEffect = MOVE_EFFECT_DEFOG; - break; - } + if(SetMaxMoveEffect(gCurrentMove)) + return; break; } case VARIOUS_JUMP_IF_TARGET_NOT_ALLY: From 05fe62cbabc78286cf9c919256565f8cacd5e2dd Mon Sep 17 00:00:00 2001 From: AgustinGDLV Date: Mon, 27 Feb 2023 12:11:52 -0800 Subject: [PATCH 016/162] implemented G-Max Drum Solo, G-Max Hydrosnipe, G-Max Fireball --- include/battle_dynamax.h | 2 ++ src/battle_dynamax.c | 13 ++++++++++++- src/battle_util.c | 3 +-- src/data/battle_moves.h | 14 +++++++------- 4 files changed, 22 insertions(+), 10 deletions(-) diff --git a/include/battle_dynamax.h b/include/battle_dynamax.h index 24c4d06e3e..125f850119 100644 --- a/include/battle_dynamax.h +++ b/include/battle_dynamax.h @@ -50,10 +50,12 @@ enum MaxMoveEffect MAX_EFFECT_TORMENT_FOES, MAX_EFFECT_LOWER_SPEED_2_FOES, MAX_EFFECT_FIRE_SPIN_FOES, + MAX_EFFECT_FIXED_POWER, }; bool8 ShouldUseMaxMove(u16 battlerId, u16 baseMove); u16 GetMaxMove(u16 battlerId, u16 baseMove); +u8 GetMaxMovePower(u16 move); bool8 IsMaxMove(u16 move); const u8 *GetMaxMoveName(u16 move); void ChooseDamageNonTypesString(u8 move); diff --git a/src/battle_dynamax.c b/src/battle_dynamax.c index 048c0afb18..46097d9ced 100644 --- a/src/battle_dynamax.c +++ b/src/battle_dynamax.c @@ -22,7 +22,7 @@ static const u16 sMaxMoveTable[] = [TYPE_GHOST] = MOVE_MAX_PHANTASM, [TYPE_STEEL] = MOVE_MAX_STEELSPIKE, [TYPE_FIRE] = MOVE_MAX_FLARE, - [TYPE_WATER] = MOVE_MAX_GEYSER, + [TYPE_WATER] = MOVE_G_MAX_HYDROSNIPE, [TYPE_GRASS] = MOVE_MAX_OVERGROWTH, [TYPE_ELECTRIC] = MOVE_MAX_LIGHTNING, [TYPE_PSYCHIC] = MOVE_MAX_MINDSTORM, @@ -76,6 +76,8 @@ static const struct GMaxMove sGMaxMoveTable[] = {SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GMAX, TYPE_WATER, MOVE_G_MAX_RAPID_FLOW}, }; +extern u8 gMaxMovePowers[MOVES_COUNT]; + // Returns whether a move should be converted into a Max Move. bool8 ShouldUseMaxMove(u16 battlerId, u16 baseMove) { @@ -109,6 +111,15 @@ u16 GetMaxMove(u16 battlerId, u16 baseMove) return move; } +// Gets the base power of a Max Move. +u8 GetMaxMovePower(u16 move) +{ + if (gBattleMoves[GetMaxMove(gBattlerAttacker, move)].argument == MAX_EFFECT_FIXED_POWER) + return 160; + else + return gMaxMovePowers[move]; // TODO: Rework to a field in gBattleMoves. +} + // Returns whether a move is a Max Move or not. bool8 IsMaxMove(u16 move) { diff --git a/src/battle_util.c b/src/battle_util.c index 907891724b..da150277ab 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -47,7 +47,6 @@ #include "constants/pokemon.h" extern struct Evolution gEvolutionTable[][EVOS_PER_MON]; -extern u8 gDynamaxMovePowers[MOVES_COUNT]; /* NOTE: The data and functions in this file up until (but not including) sSoundMovesTable @@ -8802,7 +8801,7 @@ static u16 CalcMoveBasePower(u16 move, u8 battlerAtk, u8 battlerDef) #endif break; case EFFECT_MAX_MOVE: - basePower = gDynamaxMovePowers[gBattleMons[battlerAtk].moves[gBattleStruct->chosenMovePositions[battlerAtk]]]; + basePower = GetMaxMovePower(gBattleMons[battlerAtk].moves[gBattleStruct->chosenMovePositions[battlerAtk]]); break; } diff --git a/src/data/battle_moves.h b/src/data/battle_moves.h index 88347ae913..cbb39caadd 100644 --- a/src/data/battle_moves.h +++ b/src/data/battle_moves.h @@ -15521,9 +15521,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, + .flags = FLAG_TARGET_ABILITY_IGNORED, .split = SPLIT_PHYSICAL, - .argument = MAX_EFFECT_TORMENT_FOES, //EFFECT TODO + .argument = MAX_EFFECT_FIXED_POWER, //EFFECT TODO }, [MOVE_G_MAX_FIREBALL] = @@ -15536,9 +15536,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, + .flags = FLAG_TARGET_ABILITY_IGNORED, .split = SPLIT_PHYSICAL, - .argument = MAX_EFFECT_TORMENT_FOES, //EFFECT TODO + .argument = MAX_EFFECT_FIXED_POWER, //EFFECT TODO }, [MOVE_G_MAX_HYDROSNIPE] = @@ -15551,9 +15551,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, + .flags = FLAG_TARGET_ABILITY_IGNORED, .split = SPLIT_PHYSICAL, - .argument = MAX_EFFECT_TORMENT_FOES, //EFFECT TODO + .argument = MAX_EFFECT_FIXED_POWER, //EFFECT TODO }, [MOVE_G_MAX_WIND_RAGE] = @@ -15799,7 +15799,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = }; -const u8 gDynamaxMovePowers[MOVES_COUNT] = +const u8 gMaxMovePowers[MOVES_COUNT] = { [MOVE_POUND] = 90, [MOVE_KARATE_CHOP] = 75, From 93d8efd51f66d14b4e1f94a9d7fa200077fd6d83 Mon Sep 17 00:00:00 2001 From: AgustinGDLV Date: Mon, 27 Feb 2023 14:34:08 -0800 Subject: [PATCH 017/162] implemented G-Max Resonance --- data/battle_scripts_1.s | 5 +++++ include/battle_scripts.h | 3 ++- src/battle_dynamax.c | 16 +++++++++++++++- 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 9fc414baef..6e37f6f2f1 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -10451,6 +10451,11 @@ BattleScript_DamageNonTypesContinuesEnd:: bicword gHitMarker, HITMARKER_SKIP_DMG_TRACK | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE | HITMARKER_GRUDGE end2 +BattleScript_EffectSetAuroraVeil:: + printstring STRINGID_PKMNCOVEREDBYVEIL + waitmessage B_WAIT_TIME_LONG + goto BattleScript_MoveEnd + BattleScript_PokemonCantUseTheMove:: attackstring ppreduce diff --git a/include/battle_scripts.h b/include/battle_scripts.h index 69f6567384..46cc0f4e8a 100644 --- a/include/battle_scripts.h +++ b/include/battle_scripts.h @@ -454,7 +454,6 @@ extern const u8 BattleScript_HealingWishActivates[]; extern const u8 BattleScript_LunarDanceActivates[]; extern const u8 BattleScript_ShellTrapSetUp[]; extern const u8 BattleScript_StealthRockActivates[]; -extern const u8 BattleScript_DefogTryHazards[]; // zmoves extern const u8 BattleScript_ZMoveActivateDamaging[]; @@ -474,5 +473,7 @@ extern const u8 BattleScript_SteelsurgeActivates[]; extern const u8 BattleScript_SteelsurgeFree[]; extern const u8 BattleScript_DamageNonTypesStarts[]; extern const u8 BattleScript_DamageNonTypesContinues[]; +extern const u8 BattleScript_DefogTryHazards[]; +extern const u8 BattleScript_EffectSetAuroraVeil[]; #endif // GUARD_BATTLE_SCRIPTS_H \ No newline at end of file diff --git a/src/battle_dynamax.c b/src/battle_dynamax.c index 46097d9ced..287a13eb6e 100644 --- a/src/battle_dynamax.c +++ b/src/battle_dynamax.c @@ -86,7 +86,7 @@ bool8 ShouldUseMaxMove(u16 battlerId, u16 baseMove) // return !IsRaidBossUsingRegularMove(battlerId, baseMove); if (gBattleStruct->dynamax.dynamaxTurns[battlerId] > 0) return TRUE; - return TRUE; + return FALSE; } // Returns the appropriate Max Move or G-Max Move for a battler to use. @@ -324,6 +324,20 @@ u16 SetMaxMoveEffect(u16 move) effect++; } break; + case MAX_EFFECT_AURORA_VEIL: + if (!(gSideStatuses[GetBattlerSide(gBattlerAttacker)] & SIDE_STATUS_AURORA_VEIL)) + { + gSideStatuses[GetBattlerSide(gBattlerAttacker)] |= SIDE_STATUS_AURORA_VEIL; + if (GetBattlerHoldEffect(gBattlerAttacker, TRUE) == HOLD_EFFECT_LIGHT_CLAY) + gSideTimers[GetBattlerSide(gBattlerAttacker)].auroraVeilTimer = 8; + else + gSideTimers[GetBattlerSide(gBattlerAttacker)].auroraVeilTimer = 5; + gSideTimers[GetBattlerSide(gBattlerAttacker)].auroraVeilBattlerId = gBattlerAttacker; + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_EffectSetAuroraVeil; + effect++; + } + break; } return effect; } From 9ef7717cd8bb78667b4ae2a5511e38138c122e6a Mon Sep 17 00:00:00 2001 From: AgustinGDLV Date: Mon, 27 Feb 2023 14:39:24 -0800 Subject: [PATCH 018/162] max move effects don't apply if the move didn't land --- src/battle_dynamax.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/battle_dynamax.c b/src/battle_dynamax.c index 287a13eb6e..7244ac837f 100644 --- a/src/battle_dynamax.c +++ b/src/battle_dynamax.c @@ -159,6 +159,11 @@ u16 SetMaxMoveEffect(u16 move) { u16 effect = 0; u8 maxEffect = gBattleMoves[move].argument; + + // Don't continue if the move didn't land. + if (gMoveResultFlags & MOVE_RESULT_NO_EFFECT) + return effect; + switch (maxEffect) { case MAX_EFFECT_RAISE_TEAM_ATTACK: From ad54b0d39282e58fd4104051299073758cf17f2c Mon Sep 17 00:00:00 2001 From: AgustinGDLV Date: Mon, 27 Feb 2023 15:02:56 -0800 Subject: [PATCH 019/162] changed max move power calc from table to formula --- src/battle_dynamax.c | 29 ++- src/data/battle_moves.h | 496 ---------------------------------------- 2 files changed, 26 insertions(+), 499 deletions(-) diff --git a/src/battle_dynamax.c b/src/battle_dynamax.c index 7244ac837f..9d6391149f 100644 --- a/src/battle_dynamax.c +++ b/src/battle_dynamax.c @@ -76,8 +76,6 @@ static const struct GMaxMove sGMaxMoveTable[] = {SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GMAX, TYPE_WATER, MOVE_G_MAX_RAPID_FLOW}, }; -extern u8 gMaxMovePowers[MOVES_COUNT]; - // Returns whether a move should be converted into a Max Move. bool8 ShouldUseMaxMove(u16 battlerId, u16 baseMove) { @@ -114,10 +112,35 @@ u16 GetMaxMove(u16 battlerId, u16 baseMove) // Gets the base power of a Max Move. u8 GetMaxMovePower(u16 move) { + // G-Max Drum Solo, G-Max Hydrosnipe, and G-Max Fireball always have 160 base power. if (gBattleMoves[GetMaxMove(gBattlerAttacker, move)].argument == MAX_EFFECT_FIXED_POWER) return 160; + // Fighting and Poison Max Moves are weaker than other types. + else if (gBattleMoves[move].type == TYPE_FIGHTING + || gBattleMoves[move].type == TYPE_POISON) + switch (gBattleMoves[move].power) + { + default: + case 10 ... 40: return 70; + case 45 ... 50: return 75; + case 55 ... 60: return 80; + case 65 ... 70: return 85; + case 75 ... 100: return 90; + case 110 ... 140: return 95; + case 150 ... 250: return 100; + } else - return gMaxMovePowers[move]; // TODO: Rework to a field in gBattleMoves. + switch (gBattleMoves[move].power) + { + default: + case 10 ... 40: return 90; + case 45 ... 50: return 100; + case 55 ... 60: return 110; + case 65 ... 70: return 120; + case 75 ... 100: return 130; + case 110 ... 140: return 140; + case 150 ... 250: return 150; + } } // Returns whether a move is a Max Move or not. diff --git a/src/data/battle_moves.h b/src/data/battle_moves.h index cbb39caadd..3841d47ede 100644 --- a/src/data/battle_moves.h +++ b/src/data/battle_moves.h @@ -15798,499 +15798,3 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = }, }; - -const u8 gMaxMovePowers[MOVES_COUNT] = -{ - [MOVE_POUND] = 90, - [MOVE_KARATE_CHOP] = 75, - [MOVE_DOUBLE_SLAP] = 90, - [MOVE_COMET_PUNCH] = 100, - [MOVE_MEGA_PUNCH] = 130, - [MOVE_PAY_DAY] = 90, - [MOVE_FIRE_PUNCH] = 130, - [MOVE_ICE_PUNCH] = 130, - [MOVE_THUNDER_PUNCH] = 130, - [MOVE_SCRATCH] = 90, - [MOVE_VISE_GRIP] = 110, - [MOVE_GUILLOTINE] = 130, - [MOVE_RAZOR_WIND] = 130, - [MOVE_CUT] = 100, - [MOVE_GUST] = 90, - [MOVE_WING_ATTACK] = 110, - [MOVE_FLY] = 130, - [MOVE_BIND] = 90, - [MOVE_SLAM] = 130, - [MOVE_VINE_WHIP] = 100, - [MOVE_STOMP] = 120, - [MOVE_DOUBLE_KICK] = 80, - [MOVE_MEGA_KICK] = 140, - [MOVE_JUMP_KICK] = 90, - [MOVE_ROLLING_KICK] = 80, - [MOVE_HEADBUTT] = 120, - [MOVE_HORN_ATTACK] = 120, - [MOVE_FURY_ATTACK] = 90, - [MOVE_HORN_DRILL] = 130, - [MOVE_TACKLE] = 90, - [MOVE_BODY_SLAM] = 130, - [MOVE_WRAP] = 90, - [MOVE_TAKE_DOWN] = 130, - [MOVE_THRASH] = 140, - [MOVE_DOUBLE_EDGE] = 140, - [MOVE_POISON_STING] = 70, - [MOVE_TWINEEDLE] = 100, - [MOVE_PIN_MISSILE] = 130, - [MOVE_BITE] = 110, - [MOVE_SONIC_BOOM] = 100, - [MOVE_ACID] = 70, - [MOVE_EMBER] = 90, - [MOVE_FLAMETHROWER] = 130, - [MOVE_WATER_GUN] = 90, - [MOVE_HYDRO_PUMP] = 140, - [MOVE_SURF] = 130, - [MOVE_ICE_BEAM] = 130, - [MOVE_BLIZZARD] = 140, - [MOVE_PSYBEAM] = 120, - [MOVE_BUBBLE_BEAM] = 120, - [MOVE_AURORA_BEAM] = 120, - [MOVE_HYPER_BEAM] = 150, - [MOVE_PECK] = 90, - [MOVE_DRILL_PECK] = 130, - [MOVE_SUBMISSION] = 90, - [MOVE_LOW_KICK] = 100, - [MOVE_COUNTER] = 75, - [MOVE_SEISMIC_TOSS] = 75, - [MOVE_STRENGTH] = 130, - [MOVE_ABSORB] = 90, - [MOVE_MEGA_DRAIN] = 90, - [MOVE_RAZOR_LEAF] = 110, - [MOVE_SOLAR_BEAM] = 140, - [MOVE_PETAL_DANCE] = 140, - [MOVE_DRAGON_RAGE] = 100, - [MOVE_FIRE_SPIN] = 90, - [MOVE_THUNDER_SHOCK] = 90, - [MOVE_THUNDERBOLT] = 130, - [MOVE_THUNDER] = 140, - [MOVE_ROCK_THROW] = 100, - [MOVE_EARTHQUAKE] = 130, - [MOVE_FISSURE] = 130, - [MOVE_DIG] = 130, - [MOVE_CONFUSION] = 100, - [MOVE_PSYCHIC] = 130, - [MOVE_QUICK_ATTACK] = 90, - [MOVE_RAGE] = 90, - [MOVE_NIGHT_SHADE] = 100, - [MOVE_BIDE] = 100, - [MOVE_SELF_DESTRUCT] = 150, - [MOVE_EGG_BOMB] = 130, - [MOVE_LICK] = 90, - [MOVE_SMOG] = 70, - [MOVE_SLUDGE] = 85, - [MOVE_BONE_CLUB] = 120, - [MOVE_FIRE_BLAST] = 140, - [MOVE_WATERFALL] = 130, - [MOVE_CLAMP] = 90, - [MOVE_SWIFT] = 110, - [MOVE_SKULL_BASH] = 140, - [MOVE_SPIKE_CANNON] = 120, - [MOVE_CONSTRICT] = 90, - [MOVE_HIGH_JUMP_KICK] = 95, - [MOVE_DREAM_EATER] = 130, - [MOVE_BARRAGE] = 90, - #ifdef B_UPDATED_MOVE_DATA - [MOVE_LEECH_LIFE] = 130, - #else - [MOVE_LEECH_LIFE] = 90, - #endif - [MOVE_SKY_ATTACK] = 140, - [MOVE_BUBBLE] = 90, - [MOVE_DIZZY_PUNCH] = 120, - [MOVE_PSYWAVE] = 100, - [MOVE_CRABHAMMER] = 130, - [MOVE_EXPLOSION] = 150, - [MOVE_FURY_SWIPES] = 100, - [MOVE_BONEMERANG] = 130, - [MOVE_ROCK_SLIDE] = 130, - [MOVE_HYPER_FANG] = 130, - [MOVE_TRI_ATTACK] = 130, - [MOVE_SUPER_FANG] = 100, - [MOVE_SLASH] = 120, - [MOVE_STRUGGLE] = 1, - [MOVE_TRIPLE_KICK] = 80, - [MOVE_THIEF] = 110, - [MOVE_FLAME_WHEEL] = 110, - [MOVE_SNORE] = 100, - [MOVE_FLAIL] = 130, - [MOVE_AEROBLAST] = 130, - [MOVE_REVERSAL] = 100, - [MOVE_POWDER_SNOW] = 90, - [MOVE_MACH_PUNCH] = 70, - [MOVE_FEINT_ATTACK] = 110, - [MOVE_SLUDGE_BOMB] = 90, - [MOVE_MUD_SLAP] = 90, - [MOVE_OCTAZOOKA] = 120, - [MOVE_ZAP_CANNON] = 140, - [MOVE_ICY_WIND] = 110, - [MOVE_BONE_RUSH] = 130, - [MOVE_OUTRAGE] = 140, - [MOVE_GIGA_DRAIN] = 130, - [MOVE_ROLLOUT] = 90, - [MOVE_FALSE_SWIPE] = 90, - [MOVE_SPARK] = 120, - [MOVE_FURY_CUTTER] = 90, - [MOVE_STEEL_WING] = 120, - [MOVE_RETURN] = 130, - [MOVE_PRESENT] = 100, - [MOVE_FRUSTRATION] = 130, - [MOVE_SACRED_FIRE] = 130, - [MOVE_MAGNITUDE] = 140, - [MOVE_DYNAMIC_PUNCH] = 90, - [MOVE_MEGAHORN] = 140, - [MOVE_DRAGON_BREATH] = 110, - [MOVE_PURSUIT] = 90, - [MOVE_RAPID_SPIN] = 100, - [MOVE_IRON_TAIL] = 130, - [MOVE_METAL_CLAW] = 100, - [MOVE_VITAL_THROW] = 85, - [MOVE_HIDDEN_POWER] = 110, - [MOVE_CROSS_CHOP] = 90, - [MOVE_TWISTER] = 90, - [MOVE_CRUNCH] = 130, - [MOVE_MIRROR_COAT] = 100, - [MOVE_EXTREME_SPEED] = 130, - [MOVE_ANCIENT_POWER] = 110, - [MOVE_SHADOW_BALL] = 130, - [MOVE_FUTURE_SIGHT] = 140, - [MOVE_ROCK_SMASH] = 70, - [MOVE_WHIRLPOOL] = 90, - [MOVE_BEAT_UP] = 100, - [MOVE_FAKE_OUT] = 90, - [MOVE_UPROAR] = 130, - [MOVE_SPIT_UP] = 100, - [MOVE_HEAT_WAVE] = 130, - [MOVE_FACADE] = 120, - [MOVE_FOCUS_PUNCH] = 100, - [MOVE_SMELLING_SALTS] = 120, - [MOVE_SUPERPOWER] = 95, - [MOVE_REVENGE] = 80, - [MOVE_BRICK_BREAK] = 90, - [MOVE_KNOCK_OFF] = 120, - [MOVE_ENDEAVOR] = 130, - [MOVE_ERUPTION] = 150, - [MOVE_SECRET_POWER] = 120, - [MOVE_DIVE] = 130, - [MOVE_ARM_THRUST] = 70, - [MOVE_LUSTER_PURGE] = 120, - [MOVE_MIST_BALL] = 120, - [MOVE_BLAZE_KICK] = 130, - [MOVE_ICE_BALL] = 90, - [MOVE_NEEDLE_ARM] = 110, - [MOVE_HYPER_VOICE] = 130, - [MOVE_POISON_FANG] = 75, - [MOVE_CRUSH_CLAW] = 130, - [MOVE_BLAST_BURN] = 150, - [MOVE_HYDRO_CANNON] = 150, - [MOVE_METEOR_MASH] = 130, - [MOVE_ASTONISH] = 90, - [MOVE_WEATHER_BALL] = 130, - [MOVE_AIR_CUTTER] = 110, - [MOVE_OVERHEAT] = 140, - [MOVE_ROCK_TOMB] = 110, - [MOVE_SILVER_WIND] = 110, - [MOVE_WATER_SPOUT] = 150, - [MOVE_SIGNAL_BEAM] = 130, - [MOVE_SHADOW_PUNCH] = 110, - [MOVE_EXTRASENSORY] = 130, - [MOVE_SKY_UPPERCUT] = 90, - [MOVE_SAND_TOMB] = 90, - [MOVE_SHEER_COLD] = 130, - [MOVE_MUDDY_WATER] = 130, - [MOVE_BULLET_SEED] = 130, - [MOVE_AERIAL_ACE] = 110, - [MOVE_ICICLE_SPEAR] = 130, - [MOVE_DRAGON_CLAW] = 130, - [MOVE_FRENZY_PLANT] = 150, - [MOVE_BOUNCE] = 130, - [MOVE_MUD_SHOT] = 110, - [MOVE_POISON_TAIL] = 75, - [MOVE_COVET] = 110, - [MOVE_VOLT_TACKLE] = 140, - [MOVE_MAGICAL_LEAF] = 110, - [MOVE_LEAF_BLADE] = 130, - [MOVE_ROCK_BLAST] = 130, - [MOVE_SHOCK_WAVE] = 110, - [MOVE_WATER_PULSE] = 110, - [MOVE_DOOM_DESIRE] = 140, - [MOVE_PSYCHO_BOOST] = 140, - [MOVE_WAKE_UP_SLAP] = 85, - [MOVE_HAMMER_ARM] = 90, - [MOVE_GYRO_BALL] = 130, - [MOVE_BRINE] = 120, - [MOVE_NATURAL_GIFT] = 130, - [MOVE_FEINT] = 90, - [MOVE_PLUCK] = 110, - [MOVE_METAL_BURST] = 100, - [MOVE_U_TURN] = 120, - [MOVE_CLOSE_COMBAT] = 95, - [MOVE_PAYBACK] = 100, - [MOVE_ASSURANCE] = 110, - [MOVE_FLING] = 100, - [MOVE_TRUMP_CARD] = 130, - [MOVE_WRING_OUT] = 140, - [MOVE_PUNISHMENT] = 130, - [MOVE_LAST_RESORT] = 140, - [MOVE_SUCKER_PUNCH] = 120, - [MOVE_FLARE_BLITZ] = 140, - [MOVE_FORCE_PALM] = 80, - [MOVE_AURA_SPHERE] = 90, - [MOVE_POISON_JAB] = 90, - [MOVE_DARK_PULSE] = 130, - [MOVE_NIGHT_SLASH] = 120, - [MOVE_AQUA_TAIL] = 130, - [MOVE_SEED_BOMB] = 130, - [MOVE_AIR_SLASH] = 130, - [MOVE_X_SCISSOR] = 130, - [MOVE_BUG_BUZZ] = 130, - [MOVE_DRAGON_PULSE] = 130, - [MOVE_DRAGON_RUSH] = 130, - [MOVE_POWER_GEM] = 130, - [MOVE_DRAIN_PUNCH] = 90, - [MOVE_VACUUM_WAVE] = 70, - [MOVE_FOCUS_BLAST] = 95, - [MOVE_ENERGY_BALL] = 130, - [MOVE_BRAVE_BIRD] = 140, - [MOVE_EARTH_POWER] = 130, - [MOVE_GIGA_IMPACT] = 150, - [MOVE_BULLET_PUNCH] = 90, - [MOVE_AVALANCHE] = 110, - [MOVE_ICE_SHARD] = 90, - [MOVE_SHADOW_CLAW] = 120, - [MOVE_THUNDER_FANG] = 120, - [MOVE_ICE_FANG] = 120, - [MOVE_FIRE_FANG] = 120, - [MOVE_SHADOW_SNEAK] = 90, - [MOVE_MUD_BOMB] = 120, - [MOVE_PSYCHO_CUT] = 120, - [MOVE_ZEN_HEADBUTT] = 130, - [MOVE_MIRROR_SHOT] = 120, - [MOVE_FLASH_CANNON] = 130, - [MOVE_ROCK_CLIMB] = 130, - [MOVE_DRACO_METEOR] = 140, - [MOVE_DISCHARGE] = 130, - [MOVE_LAVA_PLUME] = 130, - [MOVE_LEAF_STORM] = 140, - [MOVE_POWER_WHIP] = 140, - [MOVE_ROCK_WRECKER] = 150, - [MOVE_CROSS_POISON] = 85, - [MOVE_GUNK_SHOT] = 95, - [MOVE_IRON_HEAD] = 130, - [MOVE_MAGNET_BOMB] = 110, - [MOVE_STONE_EDGE] = 130, - [MOVE_GRASS_KNOT] = 130, - [MOVE_CHATTER] = 120, - [MOVE_JUDGMENT] = 130, - [MOVE_BUG_BITE] = 110, - [MOVE_CHARGE_BEAM] = 100, - [MOVE_WOOD_HAMMER] = 140, - [MOVE_AQUA_JET] = 90, - [MOVE_ATTACK_ORDER] = 130, - [MOVE_HEAD_SMASH] = 150, - [MOVE_DOUBLE_HIT] = 120, - [MOVE_ROAR_OF_TIME] = 150, - [MOVE_SPACIAL_REND] = 130, - [MOVE_CRUSH_GRIP] = 140, - [MOVE_MAGMA_STORM] = 130, - [MOVE_SEED_FLARE] = 140, - [MOVE_OMINOUS_WIND] = 110, - [MOVE_SHADOW_FORCE] = 140, - [MOVE_PSYSHOCK] = 130, - [MOVE_VENOSHOCK] = 85, - [MOVE_SMACK_DOWN] = 100, - [MOVE_STORM_THROW] = 80, - [MOVE_FLAME_BURST] = 120, - [MOVE_SLUDGE_WAVE] = 90, - [MOVE_HEAVY_SLAM] = 130, - [MOVE_SYNCHRONOISE] = 140, - [MOVE_ELECTRO_BALL] = 130, - [MOVE_FLAME_CHARGE] = 100, - [MOVE_LOW_SWEEP] = 85, - [MOVE_ACID_SPRAY] = 70, - [MOVE_FOUL_PLAY] = 130, - [MOVE_ROUND] = 110, - [MOVE_ECHOED_VOICE] = 90, - [MOVE_CHIP_AWAY] = 120, - [MOVE_CLEAR_SMOG] = 75, - [MOVE_STORED_POWER] = 130, - [MOVE_SCALD] = 130, - [MOVE_HEX] = 120, - [MOVE_SKY_DROP] = 110, - [MOVE_CIRCLE_THROW] = 80, - [MOVE_INCINERATE] = 110, - [MOVE_ACROBATICS] = 110, - [MOVE_RETALIATE] = 120, - [MOVE_FINAL_GAMBIT] = 100, - [MOVE_INFERNO] = 130, - [MOVE_WATER_PLEDGE] = 130, - [MOVE_FIRE_PLEDGE] = 130, - [MOVE_GRASS_PLEDGE] = 130, - [MOVE_VOLT_SWITCH] = 120, - [MOVE_STRUGGLE_BUG] = 100, - [MOVE_BULLDOZE] = 110, - [MOVE_FROST_BREATH] = 110, - [MOVE_DRAGON_TAIL] = 110, - [MOVE_ELECTROWEB] = 110, - [MOVE_WILD_CHARGE] = 130, - [MOVE_DRILL_RUN] = 130, - [MOVE_DUAL_CHOP] = 130, - [MOVE_HEART_STAMP] = 110, - [MOVE_HORN_LEECH] = 130, - [MOVE_SACRED_SWORD] = 90, - [MOVE_RAZOR_SHELL] = 130, - [MOVE_HEAT_CRASH] = 130, - [MOVE_LEAF_TORNADO] = 120, - [MOVE_STEAMROLLER] = 120, - [MOVE_NIGHT_DAZE] = 130, - [MOVE_PSYSTRIKE] = 130, - [MOVE_TAIL_SLAP] = 130, - [MOVE_HURRICANE] = 140, - [MOVE_HEAD_CHARGE] = 140, - [MOVE_GEAR_GRIND] = 130, - [MOVE_SEARING_SHOT] = 130, - [MOVE_TECHNO_BLAST] = 140, - [MOVE_RELIC_SONG] = 130, - [MOVE_SECRET_SWORD] = 90, - [MOVE_GLACIATE] = 120, - [MOVE_BOLT_STRIKE] = 140, - [MOVE_BLUE_FLARE] = 140, - [MOVE_FIERY_DANCE] = 130, - [MOVE_FREEZE_SHOCK] = 140, - [MOVE_ICE_BURN] = 140, - [MOVE_SNARL] = 110, - [MOVE_ICICLE_CRASH] = 130, - [MOVE_V_CREATE] = 150, - [MOVE_FUSION_FLARE] = 130, - [MOVE_FUSION_BOLT] = 130, - [MOVE_FLYING_PRESS] = 90, - [MOVE_BELCH] = 95, - [MOVE_FELL_STINGER] = 100, - [MOVE_PHANTOM_FORCE] = 130, - [MOVE_PARABOLIC_CHARGE] = 120, - [MOVE_PETAL_BLIZZARD] = 130, - [MOVE_FREEZE_DRY] = 120, - [MOVE_DISARMING_VOICE] = 90, - [MOVE_DRAINING_KISS] = 100, - [MOVE_PLAY_ROUGH] = 130, - [MOVE_FAIRY_WIND] = 90, - [MOVE_MOONBLAST] = 130, - [MOVE_BOOMBURST] = 140, - [MOVE_DIAMOND_STORM] = 130, - [MOVE_STEAM_ERUPTION] = 140, - [MOVE_HYPERSPACE_HOLE] = 130, - [MOVE_WATER_SHURIKEN] = 90, - [MOVE_MYSTICAL_FIRE] = 130, - [MOVE_DAZZLING_GLEAM] = 130, - [MOVE_NUZZLE] = 90, - [MOVE_HOLD_BACK] = 90, - [MOVE_INFESTATION] = 90, - [MOVE_POWER_UP_PUNCH] = 70, - [MOVE_OBLIVION_WING] = 130, - [MOVE_THOUSAND_ARROWS] = 130, - [MOVE_THOUSAND_WAVES] = 130, - [MOVE_LANDS_WRATH] = 130, - [MOVE_LIGHT_OF_RUIN] = 140, - [MOVE_ORIGIN_PULSE] = 140, - [MOVE_PRECIPICE_BLADES] = 140, - [MOVE_DRAGON_ASCENT] = 140, - [MOVE_HYPERSPACE_FURY] = 130, - [MOVE_FIRST_IMPRESSION] = 130, - [MOVE_SPIRIT_SHACKLE] = 130, - [MOVE_DARKEST_LARIAT] = 130, - [MOVE_SPARKLING_ARIA] = 130, - [MOVE_ICE_HAMMER] = 130, - [MOVE_HIGH_HORSEPOWER] = 130, - [MOVE_SOLAR_BLADE] = 140, - [MOVE_LEAFAGE] = 90, - [MOVE_THROAT_CHOP] = 130, - [MOVE_POLLEN_PUFF] = 130, - [MOVE_ANCHOR_SHOT] = 130, - [MOVE_LUNGE] = 130, - [MOVE_FIRE_LASH] = 130, - [MOVE_POWER_TRIP] = 130, - [MOVE_BURN_UP] = 140, - [MOVE_SMART_STRIKE] = 120, - [MOVE_REVELATION_DANCE] = 130, - [MOVE_CORE_ENFORCER] = 130, - [MOVE_TROP_KICK] = 120, - [MOVE_BEAK_BLAST] = 130, - [MOVE_CLANGING_SCALES] = 140, - [MOVE_DRAGON_HAMMER] = 130, - [MOVE_BRUTAL_SWING] = 110, - [MOVE_SHELL_TRAP] = 150, - [MOVE_FLEUR_CANNON] = 140, - [MOVE_PSYCHIC_FANGS] = 130, - [MOVE_STOMPING_TANTRUM] = 130, - [MOVE_SHADOW_BONE] = 130, - [MOVE_ACCELEROCK] = 90, - [MOVE_LIQUIDATION] = 130, - [MOVE_PRISMATIC_LASER] = 150, - [MOVE_SPECTRAL_THIEF] = 130, - [MOVE_SUNSTEEL_STRIKE] = 130, - [MOVE_MOONGEIST_BEAM] = 130, - [MOVE_ZING_ZAP] = 130, - [MOVE_NATURES_MADNESS] = 100, - [MOVE_MULTI_ATTACK] = 95, - [MOVE_MIND_BLOWN] = 150, - [MOVE_PLASMA_FISTS] = 130, - [MOVE_PHOTON_GEYSER] = 130, - [MOVE_DOUBLE_IRON_BASH] = 140, - [MOVE_DYNAMAX_CANNON] = 140, - [MOVE_SNIPE_SHOT] = 130, - [MOVE_JAW_LOCK] = 130, - [MOVE_DRAGON_DARTS] = 130, - [MOVE_BOLT_BEAK] = 130, - [MOVE_FISHIOUS_REND] = 130, - [MOVE_BODY_PRESS] = 90, - [MOVE_DRUM_BEATING] = 130, - [MOVE_SNAP_TRAP] = 90, - [MOVE_PYRO_BALL] = 140, - [MOVE_BEHEMOTH_BLADE] = 130, - [MOVE_BEHEMOTH_BASH] = 130, - [MOVE_AURA_WHEEL] = 140, - [MOVE_BREAKING_SWIPE] = 110, - [MOVE_BRANCH_POKE] = 90, - [MOVE_OVERDRIVE] = 130, - [MOVE_APPLE_ACID] = 130, - [MOVE_GRAV_APPLE] = 130, - [MOVE_SPIRIT_BREAK] = 130, - [MOVE_STRANGE_STEAM] = 130, - [MOVE_FALSE_SURRENDER] = 130, - [MOVE_METEOR_ASSAULT] = 100, - [MOVE_ETERNABEAM] = 150, - [MOVE_STEEL_BEAM] = 140, - [MOVE_EXPANDING_FORCE] = 100, //from here down are placeholders - [MOVE_STEEL_ROLLER] = 100, - [MOVE_SCALE_SHOT] = 100, - [MOVE_METEOR_BEAM] = 100, - [MOVE_SHELL_SIDE_ARM] = 100, - [MOVE_MISTY_EXPLOSION] = 100, - [MOVE_GRASSY_GLIDE] = 100, - [MOVE_RISING_VOLTAGE] = 100, - [MOVE_TERRAIN_PULSE] = 100, - [MOVE_SKITTER_SMACK] = 100, - [MOVE_BURNING_JEALOUSY] = 100, - [MOVE_LASH_OUT] = 100, - [MOVE_POLTERGEIST] = 100, - [MOVE_FLIP_TURN] = 100, - [MOVE_TRIPLE_AXEL] = 100, - [MOVE_DUAL_WINGBEAT] = 100, - [MOVE_SCORCHING_SANDS] = 100, - [MOVE_WICKED_BLOW] = 100, - [MOVE_SURGING_STRIKES] = 100, - [MOVE_FREEZING_GLARE] = 100, - [MOVE_THUNDEROUS_KICK] = 100, - [MOVE_FIERY_WRATH] = 100, - [MOVE_THUNDER_CAGE] = 100, - [MOVE_DRAGON_ENERGY] = 100, - [MOVE_EERIE_SPELL] = 100, - [MOVE_ASTRAL_BARRAGE] = 150, - [MOVE_GLACIAL_LANCE] = 150, -}; From 689069005af89598d2d33d44a4a525ac49a7a8a3 Mon Sep 17 00:00:00 2001 From: AgustinGDLV Date: Mon, 27 Feb 2023 15:18:33 -0800 Subject: [PATCH 020/162] bringing back gMaxMovePowers to temp. fix exceptions --- src/battle_dynamax.c | 10 + src/data/battle_moves.h | 496 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 506 insertions(+) diff --git a/src/battle_dynamax.c b/src/battle_dynamax.c index 9d6391149f..0538ba978b 100644 --- a/src/battle_dynamax.c +++ b/src/battle_dynamax.c @@ -5,6 +5,7 @@ #include "battle_script_commands.h" #include "data.h" #include "pokemon.h" +#include "constants/battle_move_effects.h" #include "constants/battle_string_ids.h" #include "constants/hold_effects.h" #include "constants/moves.h" @@ -76,6 +77,8 @@ static const struct GMaxMove sGMaxMoveTable[] = {SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GMAX, TYPE_WATER, MOVE_G_MAX_RAPID_FLOW}, }; +extern u8 gMaxMovePowers[MOVES_COUNT]; + // Returns whether a move should be converted into a Max Move. bool8 ShouldUseMaxMove(u16 battlerId, u16 baseMove) { @@ -115,6 +118,13 @@ u8 GetMaxMovePower(u16 move) // G-Max Drum Solo, G-Max Hydrosnipe, and G-Max Fireball always have 160 base power. if (gBattleMoves[GetMaxMove(gBattlerAttacker, move)].argument == MAX_EFFECT_FIXED_POWER) return 160; + else if (gBattleMoves[move].effect == EFFECT_MULTI_HIT + || gBattleMoves[move].effect == EFFECT_OHKO + || gBattleMoves[move].effect == EFFECT_LEVEL_DAMAGE + || gBattleMoves[move].effect == EFFECT_DRAGON_RAGE + || gBattleMoves[move].effect == EFFECT_SONICBOOM + || gBattleMoves[move].effect == EFFECT_PSYWAVE) + return gMaxMovePowers[move]; // Fighting and Poison Max Moves are weaker than other types. else if (gBattleMoves[move].type == TYPE_FIGHTING || gBattleMoves[move].type == TYPE_POISON) diff --git a/src/data/battle_moves.h b/src/data/battle_moves.h index 3841d47ede..cbb39caadd 100644 --- a/src/data/battle_moves.h +++ b/src/data/battle_moves.h @@ -15798,3 +15798,499 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = }, }; + +const u8 gMaxMovePowers[MOVES_COUNT] = +{ + [MOVE_POUND] = 90, + [MOVE_KARATE_CHOP] = 75, + [MOVE_DOUBLE_SLAP] = 90, + [MOVE_COMET_PUNCH] = 100, + [MOVE_MEGA_PUNCH] = 130, + [MOVE_PAY_DAY] = 90, + [MOVE_FIRE_PUNCH] = 130, + [MOVE_ICE_PUNCH] = 130, + [MOVE_THUNDER_PUNCH] = 130, + [MOVE_SCRATCH] = 90, + [MOVE_VISE_GRIP] = 110, + [MOVE_GUILLOTINE] = 130, + [MOVE_RAZOR_WIND] = 130, + [MOVE_CUT] = 100, + [MOVE_GUST] = 90, + [MOVE_WING_ATTACK] = 110, + [MOVE_FLY] = 130, + [MOVE_BIND] = 90, + [MOVE_SLAM] = 130, + [MOVE_VINE_WHIP] = 100, + [MOVE_STOMP] = 120, + [MOVE_DOUBLE_KICK] = 80, + [MOVE_MEGA_KICK] = 140, + [MOVE_JUMP_KICK] = 90, + [MOVE_ROLLING_KICK] = 80, + [MOVE_HEADBUTT] = 120, + [MOVE_HORN_ATTACK] = 120, + [MOVE_FURY_ATTACK] = 90, + [MOVE_HORN_DRILL] = 130, + [MOVE_TACKLE] = 90, + [MOVE_BODY_SLAM] = 130, + [MOVE_WRAP] = 90, + [MOVE_TAKE_DOWN] = 130, + [MOVE_THRASH] = 140, + [MOVE_DOUBLE_EDGE] = 140, + [MOVE_POISON_STING] = 70, + [MOVE_TWINEEDLE] = 100, + [MOVE_PIN_MISSILE] = 130, + [MOVE_BITE] = 110, + [MOVE_SONIC_BOOM] = 100, + [MOVE_ACID] = 70, + [MOVE_EMBER] = 90, + [MOVE_FLAMETHROWER] = 130, + [MOVE_WATER_GUN] = 90, + [MOVE_HYDRO_PUMP] = 140, + [MOVE_SURF] = 130, + [MOVE_ICE_BEAM] = 130, + [MOVE_BLIZZARD] = 140, + [MOVE_PSYBEAM] = 120, + [MOVE_BUBBLE_BEAM] = 120, + [MOVE_AURORA_BEAM] = 120, + [MOVE_HYPER_BEAM] = 150, + [MOVE_PECK] = 90, + [MOVE_DRILL_PECK] = 130, + [MOVE_SUBMISSION] = 90, + [MOVE_LOW_KICK] = 100, + [MOVE_COUNTER] = 75, + [MOVE_SEISMIC_TOSS] = 75, + [MOVE_STRENGTH] = 130, + [MOVE_ABSORB] = 90, + [MOVE_MEGA_DRAIN] = 90, + [MOVE_RAZOR_LEAF] = 110, + [MOVE_SOLAR_BEAM] = 140, + [MOVE_PETAL_DANCE] = 140, + [MOVE_DRAGON_RAGE] = 100, + [MOVE_FIRE_SPIN] = 90, + [MOVE_THUNDER_SHOCK] = 90, + [MOVE_THUNDERBOLT] = 130, + [MOVE_THUNDER] = 140, + [MOVE_ROCK_THROW] = 100, + [MOVE_EARTHQUAKE] = 130, + [MOVE_FISSURE] = 130, + [MOVE_DIG] = 130, + [MOVE_CONFUSION] = 100, + [MOVE_PSYCHIC] = 130, + [MOVE_QUICK_ATTACK] = 90, + [MOVE_RAGE] = 90, + [MOVE_NIGHT_SHADE] = 100, + [MOVE_BIDE] = 100, + [MOVE_SELF_DESTRUCT] = 150, + [MOVE_EGG_BOMB] = 130, + [MOVE_LICK] = 90, + [MOVE_SMOG] = 70, + [MOVE_SLUDGE] = 85, + [MOVE_BONE_CLUB] = 120, + [MOVE_FIRE_BLAST] = 140, + [MOVE_WATERFALL] = 130, + [MOVE_CLAMP] = 90, + [MOVE_SWIFT] = 110, + [MOVE_SKULL_BASH] = 140, + [MOVE_SPIKE_CANNON] = 120, + [MOVE_CONSTRICT] = 90, + [MOVE_HIGH_JUMP_KICK] = 95, + [MOVE_DREAM_EATER] = 130, + [MOVE_BARRAGE] = 90, + #ifdef B_UPDATED_MOVE_DATA + [MOVE_LEECH_LIFE] = 130, + #else + [MOVE_LEECH_LIFE] = 90, + #endif + [MOVE_SKY_ATTACK] = 140, + [MOVE_BUBBLE] = 90, + [MOVE_DIZZY_PUNCH] = 120, + [MOVE_PSYWAVE] = 100, + [MOVE_CRABHAMMER] = 130, + [MOVE_EXPLOSION] = 150, + [MOVE_FURY_SWIPES] = 100, + [MOVE_BONEMERANG] = 130, + [MOVE_ROCK_SLIDE] = 130, + [MOVE_HYPER_FANG] = 130, + [MOVE_TRI_ATTACK] = 130, + [MOVE_SUPER_FANG] = 100, + [MOVE_SLASH] = 120, + [MOVE_STRUGGLE] = 1, + [MOVE_TRIPLE_KICK] = 80, + [MOVE_THIEF] = 110, + [MOVE_FLAME_WHEEL] = 110, + [MOVE_SNORE] = 100, + [MOVE_FLAIL] = 130, + [MOVE_AEROBLAST] = 130, + [MOVE_REVERSAL] = 100, + [MOVE_POWDER_SNOW] = 90, + [MOVE_MACH_PUNCH] = 70, + [MOVE_FEINT_ATTACK] = 110, + [MOVE_SLUDGE_BOMB] = 90, + [MOVE_MUD_SLAP] = 90, + [MOVE_OCTAZOOKA] = 120, + [MOVE_ZAP_CANNON] = 140, + [MOVE_ICY_WIND] = 110, + [MOVE_BONE_RUSH] = 130, + [MOVE_OUTRAGE] = 140, + [MOVE_GIGA_DRAIN] = 130, + [MOVE_ROLLOUT] = 90, + [MOVE_FALSE_SWIPE] = 90, + [MOVE_SPARK] = 120, + [MOVE_FURY_CUTTER] = 90, + [MOVE_STEEL_WING] = 120, + [MOVE_RETURN] = 130, + [MOVE_PRESENT] = 100, + [MOVE_FRUSTRATION] = 130, + [MOVE_SACRED_FIRE] = 130, + [MOVE_MAGNITUDE] = 140, + [MOVE_DYNAMIC_PUNCH] = 90, + [MOVE_MEGAHORN] = 140, + [MOVE_DRAGON_BREATH] = 110, + [MOVE_PURSUIT] = 90, + [MOVE_RAPID_SPIN] = 100, + [MOVE_IRON_TAIL] = 130, + [MOVE_METAL_CLAW] = 100, + [MOVE_VITAL_THROW] = 85, + [MOVE_HIDDEN_POWER] = 110, + [MOVE_CROSS_CHOP] = 90, + [MOVE_TWISTER] = 90, + [MOVE_CRUNCH] = 130, + [MOVE_MIRROR_COAT] = 100, + [MOVE_EXTREME_SPEED] = 130, + [MOVE_ANCIENT_POWER] = 110, + [MOVE_SHADOW_BALL] = 130, + [MOVE_FUTURE_SIGHT] = 140, + [MOVE_ROCK_SMASH] = 70, + [MOVE_WHIRLPOOL] = 90, + [MOVE_BEAT_UP] = 100, + [MOVE_FAKE_OUT] = 90, + [MOVE_UPROAR] = 130, + [MOVE_SPIT_UP] = 100, + [MOVE_HEAT_WAVE] = 130, + [MOVE_FACADE] = 120, + [MOVE_FOCUS_PUNCH] = 100, + [MOVE_SMELLING_SALTS] = 120, + [MOVE_SUPERPOWER] = 95, + [MOVE_REVENGE] = 80, + [MOVE_BRICK_BREAK] = 90, + [MOVE_KNOCK_OFF] = 120, + [MOVE_ENDEAVOR] = 130, + [MOVE_ERUPTION] = 150, + [MOVE_SECRET_POWER] = 120, + [MOVE_DIVE] = 130, + [MOVE_ARM_THRUST] = 70, + [MOVE_LUSTER_PURGE] = 120, + [MOVE_MIST_BALL] = 120, + [MOVE_BLAZE_KICK] = 130, + [MOVE_ICE_BALL] = 90, + [MOVE_NEEDLE_ARM] = 110, + [MOVE_HYPER_VOICE] = 130, + [MOVE_POISON_FANG] = 75, + [MOVE_CRUSH_CLAW] = 130, + [MOVE_BLAST_BURN] = 150, + [MOVE_HYDRO_CANNON] = 150, + [MOVE_METEOR_MASH] = 130, + [MOVE_ASTONISH] = 90, + [MOVE_WEATHER_BALL] = 130, + [MOVE_AIR_CUTTER] = 110, + [MOVE_OVERHEAT] = 140, + [MOVE_ROCK_TOMB] = 110, + [MOVE_SILVER_WIND] = 110, + [MOVE_WATER_SPOUT] = 150, + [MOVE_SIGNAL_BEAM] = 130, + [MOVE_SHADOW_PUNCH] = 110, + [MOVE_EXTRASENSORY] = 130, + [MOVE_SKY_UPPERCUT] = 90, + [MOVE_SAND_TOMB] = 90, + [MOVE_SHEER_COLD] = 130, + [MOVE_MUDDY_WATER] = 130, + [MOVE_BULLET_SEED] = 130, + [MOVE_AERIAL_ACE] = 110, + [MOVE_ICICLE_SPEAR] = 130, + [MOVE_DRAGON_CLAW] = 130, + [MOVE_FRENZY_PLANT] = 150, + [MOVE_BOUNCE] = 130, + [MOVE_MUD_SHOT] = 110, + [MOVE_POISON_TAIL] = 75, + [MOVE_COVET] = 110, + [MOVE_VOLT_TACKLE] = 140, + [MOVE_MAGICAL_LEAF] = 110, + [MOVE_LEAF_BLADE] = 130, + [MOVE_ROCK_BLAST] = 130, + [MOVE_SHOCK_WAVE] = 110, + [MOVE_WATER_PULSE] = 110, + [MOVE_DOOM_DESIRE] = 140, + [MOVE_PSYCHO_BOOST] = 140, + [MOVE_WAKE_UP_SLAP] = 85, + [MOVE_HAMMER_ARM] = 90, + [MOVE_GYRO_BALL] = 130, + [MOVE_BRINE] = 120, + [MOVE_NATURAL_GIFT] = 130, + [MOVE_FEINT] = 90, + [MOVE_PLUCK] = 110, + [MOVE_METAL_BURST] = 100, + [MOVE_U_TURN] = 120, + [MOVE_CLOSE_COMBAT] = 95, + [MOVE_PAYBACK] = 100, + [MOVE_ASSURANCE] = 110, + [MOVE_FLING] = 100, + [MOVE_TRUMP_CARD] = 130, + [MOVE_WRING_OUT] = 140, + [MOVE_PUNISHMENT] = 130, + [MOVE_LAST_RESORT] = 140, + [MOVE_SUCKER_PUNCH] = 120, + [MOVE_FLARE_BLITZ] = 140, + [MOVE_FORCE_PALM] = 80, + [MOVE_AURA_SPHERE] = 90, + [MOVE_POISON_JAB] = 90, + [MOVE_DARK_PULSE] = 130, + [MOVE_NIGHT_SLASH] = 120, + [MOVE_AQUA_TAIL] = 130, + [MOVE_SEED_BOMB] = 130, + [MOVE_AIR_SLASH] = 130, + [MOVE_X_SCISSOR] = 130, + [MOVE_BUG_BUZZ] = 130, + [MOVE_DRAGON_PULSE] = 130, + [MOVE_DRAGON_RUSH] = 130, + [MOVE_POWER_GEM] = 130, + [MOVE_DRAIN_PUNCH] = 90, + [MOVE_VACUUM_WAVE] = 70, + [MOVE_FOCUS_BLAST] = 95, + [MOVE_ENERGY_BALL] = 130, + [MOVE_BRAVE_BIRD] = 140, + [MOVE_EARTH_POWER] = 130, + [MOVE_GIGA_IMPACT] = 150, + [MOVE_BULLET_PUNCH] = 90, + [MOVE_AVALANCHE] = 110, + [MOVE_ICE_SHARD] = 90, + [MOVE_SHADOW_CLAW] = 120, + [MOVE_THUNDER_FANG] = 120, + [MOVE_ICE_FANG] = 120, + [MOVE_FIRE_FANG] = 120, + [MOVE_SHADOW_SNEAK] = 90, + [MOVE_MUD_BOMB] = 120, + [MOVE_PSYCHO_CUT] = 120, + [MOVE_ZEN_HEADBUTT] = 130, + [MOVE_MIRROR_SHOT] = 120, + [MOVE_FLASH_CANNON] = 130, + [MOVE_ROCK_CLIMB] = 130, + [MOVE_DRACO_METEOR] = 140, + [MOVE_DISCHARGE] = 130, + [MOVE_LAVA_PLUME] = 130, + [MOVE_LEAF_STORM] = 140, + [MOVE_POWER_WHIP] = 140, + [MOVE_ROCK_WRECKER] = 150, + [MOVE_CROSS_POISON] = 85, + [MOVE_GUNK_SHOT] = 95, + [MOVE_IRON_HEAD] = 130, + [MOVE_MAGNET_BOMB] = 110, + [MOVE_STONE_EDGE] = 130, + [MOVE_GRASS_KNOT] = 130, + [MOVE_CHATTER] = 120, + [MOVE_JUDGMENT] = 130, + [MOVE_BUG_BITE] = 110, + [MOVE_CHARGE_BEAM] = 100, + [MOVE_WOOD_HAMMER] = 140, + [MOVE_AQUA_JET] = 90, + [MOVE_ATTACK_ORDER] = 130, + [MOVE_HEAD_SMASH] = 150, + [MOVE_DOUBLE_HIT] = 120, + [MOVE_ROAR_OF_TIME] = 150, + [MOVE_SPACIAL_REND] = 130, + [MOVE_CRUSH_GRIP] = 140, + [MOVE_MAGMA_STORM] = 130, + [MOVE_SEED_FLARE] = 140, + [MOVE_OMINOUS_WIND] = 110, + [MOVE_SHADOW_FORCE] = 140, + [MOVE_PSYSHOCK] = 130, + [MOVE_VENOSHOCK] = 85, + [MOVE_SMACK_DOWN] = 100, + [MOVE_STORM_THROW] = 80, + [MOVE_FLAME_BURST] = 120, + [MOVE_SLUDGE_WAVE] = 90, + [MOVE_HEAVY_SLAM] = 130, + [MOVE_SYNCHRONOISE] = 140, + [MOVE_ELECTRO_BALL] = 130, + [MOVE_FLAME_CHARGE] = 100, + [MOVE_LOW_SWEEP] = 85, + [MOVE_ACID_SPRAY] = 70, + [MOVE_FOUL_PLAY] = 130, + [MOVE_ROUND] = 110, + [MOVE_ECHOED_VOICE] = 90, + [MOVE_CHIP_AWAY] = 120, + [MOVE_CLEAR_SMOG] = 75, + [MOVE_STORED_POWER] = 130, + [MOVE_SCALD] = 130, + [MOVE_HEX] = 120, + [MOVE_SKY_DROP] = 110, + [MOVE_CIRCLE_THROW] = 80, + [MOVE_INCINERATE] = 110, + [MOVE_ACROBATICS] = 110, + [MOVE_RETALIATE] = 120, + [MOVE_FINAL_GAMBIT] = 100, + [MOVE_INFERNO] = 130, + [MOVE_WATER_PLEDGE] = 130, + [MOVE_FIRE_PLEDGE] = 130, + [MOVE_GRASS_PLEDGE] = 130, + [MOVE_VOLT_SWITCH] = 120, + [MOVE_STRUGGLE_BUG] = 100, + [MOVE_BULLDOZE] = 110, + [MOVE_FROST_BREATH] = 110, + [MOVE_DRAGON_TAIL] = 110, + [MOVE_ELECTROWEB] = 110, + [MOVE_WILD_CHARGE] = 130, + [MOVE_DRILL_RUN] = 130, + [MOVE_DUAL_CHOP] = 130, + [MOVE_HEART_STAMP] = 110, + [MOVE_HORN_LEECH] = 130, + [MOVE_SACRED_SWORD] = 90, + [MOVE_RAZOR_SHELL] = 130, + [MOVE_HEAT_CRASH] = 130, + [MOVE_LEAF_TORNADO] = 120, + [MOVE_STEAMROLLER] = 120, + [MOVE_NIGHT_DAZE] = 130, + [MOVE_PSYSTRIKE] = 130, + [MOVE_TAIL_SLAP] = 130, + [MOVE_HURRICANE] = 140, + [MOVE_HEAD_CHARGE] = 140, + [MOVE_GEAR_GRIND] = 130, + [MOVE_SEARING_SHOT] = 130, + [MOVE_TECHNO_BLAST] = 140, + [MOVE_RELIC_SONG] = 130, + [MOVE_SECRET_SWORD] = 90, + [MOVE_GLACIATE] = 120, + [MOVE_BOLT_STRIKE] = 140, + [MOVE_BLUE_FLARE] = 140, + [MOVE_FIERY_DANCE] = 130, + [MOVE_FREEZE_SHOCK] = 140, + [MOVE_ICE_BURN] = 140, + [MOVE_SNARL] = 110, + [MOVE_ICICLE_CRASH] = 130, + [MOVE_V_CREATE] = 150, + [MOVE_FUSION_FLARE] = 130, + [MOVE_FUSION_BOLT] = 130, + [MOVE_FLYING_PRESS] = 90, + [MOVE_BELCH] = 95, + [MOVE_FELL_STINGER] = 100, + [MOVE_PHANTOM_FORCE] = 130, + [MOVE_PARABOLIC_CHARGE] = 120, + [MOVE_PETAL_BLIZZARD] = 130, + [MOVE_FREEZE_DRY] = 120, + [MOVE_DISARMING_VOICE] = 90, + [MOVE_DRAINING_KISS] = 100, + [MOVE_PLAY_ROUGH] = 130, + [MOVE_FAIRY_WIND] = 90, + [MOVE_MOONBLAST] = 130, + [MOVE_BOOMBURST] = 140, + [MOVE_DIAMOND_STORM] = 130, + [MOVE_STEAM_ERUPTION] = 140, + [MOVE_HYPERSPACE_HOLE] = 130, + [MOVE_WATER_SHURIKEN] = 90, + [MOVE_MYSTICAL_FIRE] = 130, + [MOVE_DAZZLING_GLEAM] = 130, + [MOVE_NUZZLE] = 90, + [MOVE_HOLD_BACK] = 90, + [MOVE_INFESTATION] = 90, + [MOVE_POWER_UP_PUNCH] = 70, + [MOVE_OBLIVION_WING] = 130, + [MOVE_THOUSAND_ARROWS] = 130, + [MOVE_THOUSAND_WAVES] = 130, + [MOVE_LANDS_WRATH] = 130, + [MOVE_LIGHT_OF_RUIN] = 140, + [MOVE_ORIGIN_PULSE] = 140, + [MOVE_PRECIPICE_BLADES] = 140, + [MOVE_DRAGON_ASCENT] = 140, + [MOVE_HYPERSPACE_FURY] = 130, + [MOVE_FIRST_IMPRESSION] = 130, + [MOVE_SPIRIT_SHACKLE] = 130, + [MOVE_DARKEST_LARIAT] = 130, + [MOVE_SPARKLING_ARIA] = 130, + [MOVE_ICE_HAMMER] = 130, + [MOVE_HIGH_HORSEPOWER] = 130, + [MOVE_SOLAR_BLADE] = 140, + [MOVE_LEAFAGE] = 90, + [MOVE_THROAT_CHOP] = 130, + [MOVE_POLLEN_PUFF] = 130, + [MOVE_ANCHOR_SHOT] = 130, + [MOVE_LUNGE] = 130, + [MOVE_FIRE_LASH] = 130, + [MOVE_POWER_TRIP] = 130, + [MOVE_BURN_UP] = 140, + [MOVE_SMART_STRIKE] = 120, + [MOVE_REVELATION_DANCE] = 130, + [MOVE_CORE_ENFORCER] = 130, + [MOVE_TROP_KICK] = 120, + [MOVE_BEAK_BLAST] = 130, + [MOVE_CLANGING_SCALES] = 140, + [MOVE_DRAGON_HAMMER] = 130, + [MOVE_BRUTAL_SWING] = 110, + [MOVE_SHELL_TRAP] = 150, + [MOVE_FLEUR_CANNON] = 140, + [MOVE_PSYCHIC_FANGS] = 130, + [MOVE_STOMPING_TANTRUM] = 130, + [MOVE_SHADOW_BONE] = 130, + [MOVE_ACCELEROCK] = 90, + [MOVE_LIQUIDATION] = 130, + [MOVE_PRISMATIC_LASER] = 150, + [MOVE_SPECTRAL_THIEF] = 130, + [MOVE_SUNSTEEL_STRIKE] = 130, + [MOVE_MOONGEIST_BEAM] = 130, + [MOVE_ZING_ZAP] = 130, + [MOVE_NATURES_MADNESS] = 100, + [MOVE_MULTI_ATTACK] = 95, + [MOVE_MIND_BLOWN] = 150, + [MOVE_PLASMA_FISTS] = 130, + [MOVE_PHOTON_GEYSER] = 130, + [MOVE_DOUBLE_IRON_BASH] = 140, + [MOVE_DYNAMAX_CANNON] = 140, + [MOVE_SNIPE_SHOT] = 130, + [MOVE_JAW_LOCK] = 130, + [MOVE_DRAGON_DARTS] = 130, + [MOVE_BOLT_BEAK] = 130, + [MOVE_FISHIOUS_REND] = 130, + [MOVE_BODY_PRESS] = 90, + [MOVE_DRUM_BEATING] = 130, + [MOVE_SNAP_TRAP] = 90, + [MOVE_PYRO_BALL] = 140, + [MOVE_BEHEMOTH_BLADE] = 130, + [MOVE_BEHEMOTH_BASH] = 130, + [MOVE_AURA_WHEEL] = 140, + [MOVE_BREAKING_SWIPE] = 110, + [MOVE_BRANCH_POKE] = 90, + [MOVE_OVERDRIVE] = 130, + [MOVE_APPLE_ACID] = 130, + [MOVE_GRAV_APPLE] = 130, + [MOVE_SPIRIT_BREAK] = 130, + [MOVE_STRANGE_STEAM] = 130, + [MOVE_FALSE_SURRENDER] = 130, + [MOVE_METEOR_ASSAULT] = 100, + [MOVE_ETERNABEAM] = 150, + [MOVE_STEEL_BEAM] = 140, + [MOVE_EXPANDING_FORCE] = 100, //from here down are placeholders + [MOVE_STEEL_ROLLER] = 100, + [MOVE_SCALE_SHOT] = 100, + [MOVE_METEOR_BEAM] = 100, + [MOVE_SHELL_SIDE_ARM] = 100, + [MOVE_MISTY_EXPLOSION] = 100, + [MOVE_GRASSY_GLIDE] = 100, + [MOVE_RISING_VOLTAGE] = 100, + [MOVE_TERRAIN_PULSE] = 100, + [MOVE_SKITTER_SMACK] = 100, + [MOVE_BURNING_JEALOUSY] = 100, + [MOVE_LASH_OUT] = 100, + [MOVE_POLTERGEIST] = 100, + [MOVE_FLIP_TURN] = 100, + [MOVE_TRIPLE_AXEL] = 100, + [MOVE_DUAL_WINGBEAT] = 100, + [MOVE_SCORCHING_SANDS] = 100, + [MOVE_WICKED_BLOW] = 100, + [MOVE_SURGING_STRIKES] = 100, + [MOVE_FREEZING_GLARE] = 100, + [MOVE_THUNDEROUS_KICK] = 100, + [MOVE_FIERY_WRATH] = 100, + [MOVE_THUNDER_CAGE] = 100, + [MOVE_DRAGON_ENERGY] = 100, + [MOVE_EERIE_SPELL] = 100, + [MOVE_ASTRAL_BARRAGE] = 150, + [MOVE_GLACIAL_LANCE] = 150, +}; From 0908129c84cbd807869447f2869615eff121e5f9 Mon Sep 17 00:00:00 2001 From: AgustinGDLV Date: Mon, 27 Feb 2023 18:43:06 -0800 Subject: [PATCH 021/162] implemented G-Max Gravitas, G-Max Snooze, G-Max Depletion; Spite works on Max Moves --- data/battle_scripts_1.s | 8 +++- include/battle.h | 1 + include/battle_scripts.h | 5 ++- src/battle_dynamax.c | 79 ++++++++++++++++++++++++++++++++++-- src/battle_main.c | 3 ++ src/battle_script_commands.c | 15 ++++--- 6 files changed, 100 insertions(+), 11 deletions(-) diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 6e37f6f2f1..3fe0aa950f 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -3059,6 +3059,7 @@ BattleScript_EffectGravity: setgravity BattleScript_ButItFailed attackanimation waitanimation +BattleScript_EffectGravitySuccess:: printstring STRINGID_GRAVITYINTENSIFIED waitmessage B_WAIT_TIME_LONG selectfirstvalidtarget @@ -4208,6 +4209,7 @@ BattleScript_EffectReflect:: BattleScript_PrintReflectLightScreenSafeguardString:: attackanimation waitanimation +BattleScript_EffectAuroraVeilSuccess:: printfromtable gReflectLightScreenSafeguardStringIds waitmessage B_WAIT_TIME_LONG goto BattleScript_MoveEnd @@ -5988,6 +5990,7 @@ BattleScript_EffectYawn:: setyawn BattleScript_ButItFailed attackanimation waitanimation + BattleScript_EffectYawnSuccess:: printstring STRINGID_PKMNWASMADEDROWSY waitmessage B_WAIT_TIME_LONG goto BattleScript_MoveEnd @@ -10451,8 +10454,9 @@ BattleScript_DamageNonTypesContinuesEnd:: bicword gHitMarker, HITMARKER_SKIP_DMG_TRACK | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE | HITMARKER_GRUDGE end2 -BattleScript_EffectSetAuroraVeil:: - printstring STRINGID_PKMNCOVEREDBYVEIL +BattleScript_EffectTryReducePP:: + tryspiteppreduce BattleScript_MoveEnd + printstring STRINGID_PKMNREDUCEDPP waitmessage B_WAIT_TIME_LONG goto BattleScript_MoveEnd diff --git a/include/battle.h b/include/battle.h index df467936c6..9a9da26274 100644 --- a/include/battle.h +++ b/include/battle.h @@ -527,6 +527,7 @@ struct DynamaxData u8 usingMaxMove[MAX_BATTLERS_COUNT]; u8 activeSplit; u8 splits[MAX_BATTLERS_COUNT]; + u8 moveSlot[MAX_BATTLERS_COUNT]; // move slot of Max Move, used for Spite, TODO: Copycat, Encore, Grudge }; struct StolenItem diff --git a/include/battle_scripts.h b/include/battle_scripts.h index 46cc0f4e8a..555f2618c3 100644 --- a/include/battle_scripts.h +++ b/include/battle_scripts.h @@ -474,6 +474,9 @@ extern const u8 BattleScript_SteelsurgeFree[]; extern const u8 BattleScript_DamageNonTypesStarts[]; extern const u8 BattleScript_DamageNonTypesContinues[]; extern const u8 BattleScript_DefogTryHazards[]; -extern const u8 BattleScript_EffectSetAuroraVeil[]; +extern const u8 BattleScript_EffectAuroraVeilSuccess[]; +extern const u8 BattleScript_EffectGravitySuccess[]; +extern const u8 BattleScript_EffectYawnSuccess[]; +extern const u8 BattleScript_EffectTryReducePP[]; #endif // GUARD_BATTLE_SCRIPTS_H \ No newline at end of file diff --git a/src/battle_dynamax.c b/src/battle_dynamax.c index 0538ba978b..baf5605c57 100644 --- a/src/battle_dynamax.c +++ b/src/battle_dynamax.c @@ -1,10 +1,15 @@ #include "global.h" #include "battle.h" #include "battle_anim.h" +#include "battle_controllers.h" #include "battle_scripts.h" #include "battle_script_commands.h" #include "data.h" #include "pokemon.h" +#include "random.h" +#include "string_util.h" +#include "util.h" +#include "constants/abilities.h" #include "constants/battle_move_effects.h" #include "constants/battle_string_ids.h" #include "constants/hold_effects.h" @@ -23,9 +28,9 @@ static const u16 sMaxMoveTable[] = [TYPE_GHOST] = MOVE_MAX_PHANTASM, [TYPE_STEEL] = MOVE_MAX_STEELSPIKE, [TYPE_FIRE] = MOVE_MAX_FLARE, - [TYPE_WATER] = MOVE_G_MAX_HYDROSNIPE, + [TYPE_WATER] = MOVE_MAX_GEYSER, [TYPE_GRASS] = MOVE_MAX_OVERGROWTH, - [TYPE_ELECTRIC] = MOVE_MAX_LIGHTNING, + [TYPE_ELECTRIC] = MOVE_G_MAX_DEPLETION, [TYPE_PSYCHIC] = MOVE_MAX_MINDSTORM, [TYPE_ICE] = MOVE_MAX_HAILSTORM, [TYPE_DRAGON] = MOVE_MAX_WYRMWIND, @@ -371,8 +376,76 @@ u16 SetMaxMoveEffect(u16 move) else gSideTimers[GetBattlerSide(gBattlerAttacker)].auroraVeilTimer = 5; gSideTimers[GetBattlerSide(gBattlerAttacker)].auroraVeilBattlerId = gBattlerAttacker; + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_SET_SAFEGUARD; BattleScriptPush(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = BattleScript_EffectSetAuroraVeil; + gBattlescriptCurrInstr = BattleScript_EffectAuroraVeilSuccess; + effect++; + } + break; + case MAX_EFFECT_GRAVITY: + if (!(gFieldStatuses & STATUS_FIELD_GRAVITY)) + { + gFieldStatuses |= STATUS_FIELD_GRAVITY; + gFieldTimers.gravityTimer = 5; + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_EffectGravitySuccess; + effect++; + } + break; + case MAX_EFFECT_SANDBLAST_FOES: + case MAX_EFFECT_FIRE_SPIN_FOES: + { + // Affects both opponents, but doesn't print strings so we can handle it here. + u8 battler; + for (battler = 0; battler < MAX_BATTLERS_COUNT; ++battler) + { + if (GetBattlerSide(battler) != GetBattlerSide(gBattlerTarget)) + continue; + if (!(gBattleMons[battler].status2 & STATUS2_WRAPPED)) + { + gBattleMons[battler].status2 |= STATUS2_WRAPPED; + if (GetBattlerHoldEffect(gBattlerAttacker, TRUE) == HOLD_EFFECT_GRIP_CLAW) + #if B_BINDING_TURNS >= GEN_5 + gDisableStructs[battler].wrapTurns = 7; + else + gDisableStructs[battler].wrapTurns = (Random() % 2) + 4; + #else + gDisableStructs[battler].wrapTurns = 5; + else + gDisableStructs[battler].wrapTurns = (Random() % 4) + 2; + #endif + gBattleStruct->wrappedBy[battler] = gBattlerAttacker; + if (maxEffect == MAX_EFFECT_SANDBLAST_FOES) + gBattleStruct->wrappedMove[battler] = MOVE_SAND_TOMB; + else + gBattleStruct->wrappedMove[battler] = MOVE_FIRE_SPIN; + } + } + break; + } + case MAX_EFFECT_YAWN_FOE: + if (!(gStatuses3[gBattlerTarget] & STATUS3_YAWN) + && !(gBattleMons[gBattlerTarget].status1 & STATUS1_ANY) + && gBattleMons[gBattlerTarget].ability != ABILITY_VITAL_SPIRIT + && gBattleMons[gBattlerTarget].ability != ABILITY_INSOMNIA + && gBattleMons[gBattlerTarget].ability != ABILITY_COMATOSE + && gBattleMons[gBattlerTarget].ability != ABILITY_PURIFYING_SALT + && !IsFlowerVeilProtected(gBattlerTarget) + && !(gBattleMons[gBattlerTarget].status2 & STATUS2_SUBSTITUTE) + && !UproarWakeUpCheck(gActiveBattler)) + { + gStatuses3[gBattlerTarget] |= STATUS3_YAWN_TURN(2); + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_EffectYawnSuccess; + effect++; + } + break; + case MAX_EFFECT_SPITE: + if (gLastMoves[gBattlerTarget] != MOVE_NONE + && gLastMoves[gBattlerTarget] != MOVE_UNAVAILABLE) + { + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_EffectTryReducePP; effect++; } break; diff --git a/src/battle_main.c b/src/battle_main.c index caa00e045c..d6b5b2459c 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -4270,7 +4270,10 @@ static void HandleTurnActionSelectionState(void) if (gBattleResources->bufferB[gActiveBattler][2] & RET_MEGA_EVOLUTION) gBattleStruct->mega.toEvolve |= gBitTable[gActiveBattler]; if (ShouldUseMaxMove(gActiveBattler, gChosenMoveByBattler[gActiveBattler])) // max move check + { + gBattleStruct->dynamax.moveSlot[gActiveBattler] = gBattleStruct->chosenMovePositions[gActiveBattler]; gBattleStruct->dynamax.usingMaxMove[gActiveBattler] = TRUE; + } gBattleCommunication[gActiveBattler]++; } break; diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 04a2ca06fd..e5d7a94b26 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -13416,11 +13416,13 @@ static void Cmd_tryspiteppreduce(void) { s32 i; - for (i = 0; i < MAX_MON_MOVES; i++) - { - if (gLastMoves[gBattlerTarget] == gBattleMons[gBattlerTarget].moves[i]) - break; - } + // Get move slot to reduce PP. + if (IsMaxMove(gLastMoves[gBattlerTarget])) + i = gBattleStruct->dynamax.moveSlot[gBattlerTarget]; + else + for (i = 0; i < MAX_MON_MOVES; i++) + if (gLastMoves[gBattlerTarget] == gBattleMons[gBattlerTarget].moves[i]) + break; #if B_CAN_SPITE_FAIL <= GEN_3 if (i != MAX_MON_MOVES && gBattleMons[gBattlerTarget].pp[i] > 1) @@ -13433,6 +13435,9 @@ static void Cmd_tryspiteppreduce(void) #else s32 ppToDeduct = 4; #endif + // G-Max Depletion only deducts 2 PP. + if (IsMaxMove(gCurrentMove) && gBattleMoves[gCurrentMove].argument == MAX_EFFECT_SPITE) + ppToDeduct = 2; if (gBattleMons[gBattlerTarget].pp[i] < ppToDeduct) ppToDeduct = gBattleMons[gBattlerTarget].pp[i]; From da24b717e45da892351809d03fdbb8778ee842ba Mon Sep 17 00:00:00 2001 From: AgustinGDLV Date: Mon, 27 Feb 2023 21:26:03 -0800 Subject: [PATCH 022/162] implemented all status1 and status2 G-Max Moves: Befuddle, Volt Crash, Malodor, Stun Shock, Gold Rush, Cuddle, Terror, Meltdown, Smite --- asm/macros/battle_script.inc | 10 ++ data/battle_scripts_1.s | 55 +++++++++- include/battle.h | 1 + include/battle_dynamax.h | 3 +- include/battle_scripts.h | 7 +- include/constants/battle_script_commands.h | 2 + src/battle_dynamax.c | 75 +++++++++++-- src/battle_message.c | 5 + src/battle_script_commands.c | 116 +++++++++++++++++++++ src/battle_util.c | 11 ++ 10 files changed, 269 insertions(+), 16 deletions(-) diff --git a/asm/macros/battle_script.inc b/asm/macros/battle_script.inc index bbb544de27..f9da963107 100644 --- a/asm/macros/battle_script.inc +++ b/asm/macros/battle_script.inc @@ -2237,6 +2237,16 @@ various 0, VARIOUS_DAMAGE_NON_TYPES .endm + .macro trysetstatus1, ptr:req + various 0, VARIOUS_TRY_SET_STATUS1 + .4byte \ptr + .endm + + .macro trysetstatus2, ptr:req + various 0, VARIOUS_TRY_SET_STATUS2 + .4byte \ptr + .endm + @ Tries to increase or decrease a battler's stat's stat stage by a specified amount. If impossible, jumps to \script. .macro modifybattlerstatstage battler:req, stat:req, mode:req, amount:req, script:req, animation:req, customString diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 3fe0aa950f..0e77b5880e 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -10358,7 +10358,7 @@ BattleScript_EffectMaxMove:: tryfaintmon BS_TARGET goto BattleScript_MoveEnd -BattleScript_EffectRaiseSideStats:: +BattleScript_EffectRaiseStatAllies:: savetarget setbyte gBattlerTarget, 0 BattleScript_RaiseSideStatsLoop: @@ -10378,7 +10378,7 @@ BattleScript_RaiseSideStatsEnd: restoretarget return -BattleScript_EffectLowerSideStats:: +BattleScript_EffectLowerStatFoes:: savetarget setbyte gBattlerTarget, 0 BattleScript_LowerSideStatsLoop: @@ -10460,6 +10460,57 @@ BattleScript_EffectTryReducePP:: waitmessage B_WAIT_TIME_LONG goto BattleScript_MoveEnd +BattleScript_EffectStatus1Foes:: + savetarget + setbyte gBattlerTarget, 0 +BattleScript_Status1FoesLoop: + jumpiftargetally BattleScript_Status1FoesIncrement + jumpiftargetabsent BattleScript_Status1FoesIncrement + trysetstatus1 BattleScript_Status1FoesIncrement + statusanimation BS_TARGET + updatestatusicon BS_TARGET + printfromtable gStatusConditionsStringIds + waitmessage B_WAIT_TIME_LONG + goto BattleScript_UpdateEffectStatusIconRet +BattleScript_Status1FoesIncrement: + addbyte gBattlerTarget, 1 + jumpifbytenotequal gBattlerTarget, gBattlersCount, BattleScript_Status1FoesLoop +BattleScript_Status1FoesEnd: + restoretarget + goto BattleScript_MoveEnd + +BattleScript_EffectStatus2Foes:: + savetarget + setbyte gBattlerTarget, 0 +BattleScript_Status2FoesLoop: + jumpiftargetally BattleScript_Status2FoesIncrement + jumpiftargetabsent BattleScript_Status2FoesIncrement + trysetstatus2 BattleScript_Status2FoesIncrement + jumpifbyte CMP_EQUAL, gBattleCommunication, 1, BattleScript_DoConfuseAnim + jumpifbyte CMP_EQUAL, gBattleCommunication, 2, BattleScript_DoInfatuationAnim +BattleScript_Status2FoesPrintMessage: + printfromtable gStatus2StringIds + waitmessage B_WAIT_TIME_LONG +BattleScript_Status2FoesIncrement: + addbyte gBattlerTarget, 1 + jumpifbytenotequal gBattlerTarget, gBattlersCount, BattleScript_Status2FoesLoop +BattleScript_Status2FoesEnd: + restoretarget + goto BattleScript_MoveEnd + +BattleScript_DoConfuseAnim: + status2animation BS_TARGET, STATUS2_CONFUSION + goto BattleScript_Status2FoesPrintMessage + +BattleScript_DoInfatuationAnim: + status2animation BS_TARGET, STATUS2_INFATUATION + goto BattleScript_Status2FoesPrintMessage + +BattleScript_TormentEnds:: + printstring STRINGID_TORMENTEDNOMORE + waitmessage B_WAIT_TIME_LONG + end2 + BattleScript_PokemonCantUseTheMove:: attackstring ppreduce diff --git a/include/battle.h b/include/battle.h index 9a9da26274..26bfe1e38b 100644 --- a/include/battle.h +++ b/include/battle.h @@ -96,6 +96,7 @@ struct DisableStruct u8 laserFocusTimer; u8 throatChopTimer; u8 wrapTurns; + u8 tormentTimer:4; // used for G-Max Meltdown u8 usedMoves:4; u8 noRetreat:1; u8 tarShot:1; diff --git a/include/battle_dynamax.h b/include/battle_dynamax.h index 125f850119..bd13397c58 100644 --- a/include/battle_dynamax.h +++ b/include/battle_dynamax.h @@ -58,7 +58,8 @@ u16 GetMaxMove(u16 battlerId, u16 baseMove); u8 GetMaxMovePower(u16 move); bool8 IsMaxMove(u16 move); const u8 *GetMaxMoveName(u16 move); -void ChooseDamageNonTypesString(u8 move); +void ChooseDamageNonTypesString(u8 type); +u32 GetMaxMoveStatusEffect(u16 move); u16 SetMaxMoveEffect(u16 move); #endif diff --git a/include/battle_scripts.h b/include/battle_scripts.h index 555f2618c3..604ce10d93 100644 --- a/include/battle_scripts.h +++ b/include/battle_scripts.h @@ -465,8 +465,8 @@ extern const u8 BattleScript_HealReplacementZMove[]; extern const u8 BattleScript_EffectExtremeEvoboost[]; // max moves -extern const u8 BattleScript_EffectRaiseSideStats[]; -extern const u8 BattleScript_EffectLowerSideStats[]; +extern const u8 BattleScript_EffectRaiseStatAllies[]; +extern const u8 BattleScript_EffectLowerStatFoes[]; extern const u8 BattleScript_EffectSetWeather[]; extern const u8 BattleScript_EffectSetTerrain[]; extern const u8 BattleScript_SteelsurgeActivates[]; @@ -478,5 +478,8 @@ extern const u8 BattleScript_EffectAuroraVeilSuccess[]; extern const u8 BattleScript_EffectGravitySuccess[]; extern const u8 BattleScript_EffectYawnSuccess[]; extern const u8 BattleScript_EffectTryReducePP[]; +extern const u8 BattleScript_EffectStatus1Foes[]; +extern const u8 BattleScript_EffectStatus2Foes[]; +extern const u8 BattleScript_TormentEnds[]; #endif // GUARD_BATTLE_SCRIPTS_H \ No newline at end of file diff --git a/include/constants/battle_script_commands.h b/include/constants/battle_script_commands.h index 0eb219eaad..dd6892b254 100644 --- a/include/constants/battle_script_commands.h +++ b/include/constants/battle_script_commands.h @@ -265,6 +265,8 @@ #define VARIOUS_JUMP_IF_TARGET_ABSENT 173 #define VARIOUS_SET_STEELSURGE 174 #define VARIOUS_DAMAGE_NON_TYPES 175 +#define VARIOUS_TRY_SET_STATUS1 176 +#define VARIOUS_TRY_SET_STATUS2 177 // Cmd_manipulatedamage #define DMG_CHANGE_SIGN 0 diff --git a/src/battle_dynamax.c b/src/battle_dynamax.c index baf5605c57..03966c1bca 100644 --- a/src/battle_dynamax.c +++ b/src/battle_dynamax.c @@ -99,7 +99,11 @@ bool8 ShouldUseMaxMove(u16 battlerId, u16 baseMove) u16 GetMaxMove(u16 battlerId, u16 baseMove) { u16 move = baseMove; - if (gBattleMoves[baseMove].split == SPLIT_STATUS) + if (baseMove == MOVE_STRUGGLE) + { + return MOVE_STRUGGLE; + } + else if (gBattleMoves[baseMove].split == SPLIT_STATUS) { move = MOVE_MAX_GUARD; } @@ -192,6 +196,45 @@ void ChooseDamageNonTypesString(u8 type) } } +// Returns the status effect that should be applied by a G-Max Move. +u32 GetMaxMoveStatusEffect(u16 move) +{ + u8 maxEffect = gBattleMoves[move].argument; + switch (maxEffect) + { + // Status 1 + case MAX_EFFECT_PARALYZE_FOES: + return STATUS1_PARALYSIS; + case MAX_EFFECT_POISON_FOES: + return STATUS1_POISON; + case MAX_EFFECT_POISON_PARALYZE_FOES: + if (Random() % 2) + return STATUS1_POISON; + else + return STATUS1_PARALYSIS; + case MAX_EFFECT_EFFECT_SPORE_FOES: + { + u8 effect = Random() % 3; + if (effect == 0) + return STATUS1_PARALYSIS; + else if (effect == 1) + return STATUS1_POISON; + else + return STATUS1_SLEEP; + } + // Status 2 + case MAX_EFFECT_CONFUSE_FOES: + case MAX_EFFECT_CONFUSE_FOES_PAY_DAY: + return STATUS2_CONFUSION; + case MAX_EFFECT_INFATUATE_FOES: + return STATUS2_INFATUATION; + case MAX_EFFECT_MEAN_LOOK: + return STATUS2_ESCAPE_PREVENTION; + case MAX_EFFECT_TORMENT_FOES: + return STATUS2_TORMENT; + } +} + // Activates the secondary effect of a Max Move. u16 SetMaxMoveEffect(u16 move) { @@ -214,7 +257,7 @@ u16 SetMaxMoveEffect(u16 move) // Max Effects are ordered by stat ID. SET_STATCHANGER(gBattleMoves[gCurrentMove].argument, 1, FALSE); BattleScriptPush(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = BattleScript_EffectRaiseSideStats; + gBattlescriptCurrInstr = BattleScript_EffectRaiseStatAllies; effect++; } break; @@ -245,7 +288,7 @@ u16 SetMaxMoveEffect(u16 move) } SET_STATCHANGER(statId, stage, TRUE); BattleScriptPush(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = BattleScript_EffectLowerSideStats; + gBattlescriptCurrInstr = BattleScript_EffectLowerStatFoes; effect++; } break; @@ -425,14 +468,7 @@ u16 SetMaxMoveEffect(u16 move) } case MAX_EFFECT_YAWN_FOE: if (!(gStatuses3[gBattlerTarget] & STATUS3_YAWN) - && !(gBattleMons[gBattlerTarget].status1 & STATUS1_ANY) - && gBattleMons[gBattlerTarget].ability != ABILITY_VITAL_SPIRIT - && gBattleMons[gBattlerTarget].ability != ABILITY_INSOMNIA - && gBattleMons[gBattlerTarget].ability != ABILITY_COMATOSE - && gBattleMons[gBattlerTarget].ability != ABILITY_PURIFYING_SALT - && !IsFlowerVeilProtected(gBattlerTarget) - && !(gBattleMons[gBattlerTarget].status2 & STATUS2_SUBSTITUTE) - && !UproarWakeUpCheck(gActiveBattler)) + && CanSleep(gBattlerTarget)) { gStatuses3[gBattlerTarget] |= STATUS3_YAWN_TURN(2); BattleScriptPush(gBattlescriptCurrInstr + 1); @@ -449,6 +485,23 @@ u16 SetMaxMoveEffect(u16 move) effect++; } break; + case MAX_EFFECT_PARALYZE_FOES: + case MAX_EFFECT_POISON_FOES: + case MAX_EFFECT_POISON_PARALYZE_FOES: + case MAX_EFFECT_EFFECT_SPORE_FOES: + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_EffectStatus1Foes; + effect++; + break; + case MAX_EFFECT_CONFUSE_FOES_PAY_DAY: + case MAX_EFFECT_CONFUSE_FOES: + case MAX_EFFECT_INFATUATE_FOES: + case MAX_EFFECT_TORMENT_FOES: + case MAX_EFFECT_MEAN_LOOK: + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_EffectStatus2Foes; + effect++; + break; } return effect; } diff --git a/src/battle_message.c b/src/battle_message.c index 8ebc73679f..6da7de6c3c 100644 --- a/src/battle_message.c +++ b/src/battle_message.c @@ -1893,6 +1893,11 @@ const u16 gStatusConditionsStringIds[] = STRINGID_PKMNWASPOISONED, STRINGID_PKMNBADLYPOISONED, STRINGID_PKMNWASBURNED, STRINGID_PKMNWASPARALYZED, STRINGID_PKMNFELLASLEEP }; +const u16 gStatus2StringIds[] = +{ + STRINGID_PKMNWASCONFUSED, STRINGID_PKMNFELLINLOVE, STRINGID_TARGETCANTESCAPENOW, STRINGID_PKMNSUBJECTEDTOTORMENT +}; + const u16 gDamageNonTypesStartStringIds[] = { STRINGID_TEAMTRAPPEDWITHVINES, STRINGID_TEAMCAUGHTINVORTEX, STRINGID_TEAMSURROUNDEDBYFIRE, STRINGID_TEAMSURROUNDEDBYROCKS diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index e5d7a94b26..44e2b21626 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -11210,6 +11210,120 @@ static void Cmd_various(void) } break; } + case VARIOUS_TRY_SET_STATUS1: + { + VARIOUS_ARGS(const u8 *failInstr); + u8 effect = 0; + u32 status1 = GetMaxMoveStatusEffect(gCurrentMove); + switch (status1) + { + case STATUS1_POISON: + if (CanBePoisoned(gBattlerAttacker, gBattlerTarget)) + { + gBattleMons[gBattlerTarget].status1 |= STATUS1_POISON; + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + effect++; + } + break; + case STATUS1_PARALYSIS: + if (CanBeParalyzed(gBattlerTarget)) + { + gBattleMons[gBattlerTarget].status1 |= STATUS1_PARALYSIS; + gBattleCommunication[MULTISTRING_CHOOSER] = 3; + effect++; + } + break; + case STATUS1_SLEEP: + if (CanSleep(gBattlerTarget)) + { + #if B_SLEEP_TURNS >= GEN_5 + gBattleMons[gBattlerTarget].status1 |= STATUS1_SLEEP_TURN((Random() % 3) + 2); + #else + gBattleMons[gBattlerTarget].status1 |= STATUS1_SLEEP_TURN((Random() % 4) + 3); + #endif + gBattleCommunication[MULTISTRING_CHOOSER] = 4; + effect++; + } + break; + } + if (effect) + { + gActiveBattler = gEffectBattler = gBattlerTarget; + BtlController_EmitSetMonData(BUFFER_A, REQUEST_STATUS_BATTLE, 0, sizeof(gBattleMons[gBattlerTarget].status1), &gBattleMons[gBattlerTarget].status1); + MarkBattlerForControllerExec(gActiveBattler); + gBattlescriptCurrInstr = cmd->nextInstr; + } + else + { + gBattlescriptCurrInstr = cmd->failInstr; + } + return; + } + case VARIOUS_TRY_SET_STATUS2: + { + VARIOUS_ARGS(const u8 *failInstr); + u8 effect = 0; + u32 status2 = GetMaxMoveStatusEffect(gCurrentMove); + switch (status2) + { + case STATUS2_CONFUSION: + if (CanBeConfused(gBattlerTarget)) + { + gBattleMons[gBattlerTarget].status2 |= STATUS2_CONFUSION_TURN(((Random()) % 4) + 2); + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + gBattleCommunication[MULTIUSE_STATE] = 1; + effect++; + } + break; + case STATUS2_INFATUATION: + { + u8 atkGender = GetGenderFromSpeciesAndPersonality(gBattleMons[gBattlerAttacker].species, gBattleMons[gBattlerAttacker].personality); + u8 defGender = GetGenderFromSpeciesAndPersonality(gBattleMons[gBattlerTarget].species, gBattleMons[gBattlerTarget].personality); + if (!(gBattleMons[gBattlerTarget].status2 & STATUS2_INFATUATION) + && gBattleMons[gBattlerTarget].ability != ABILITY_OBLIVIOUS + && !IsAbilityOnSide(gBattlerTarget, ABILITY_AROMA_VEIL) + && atkGender != defGender + && atkGender != MON_GENDERLESS + && defGender != MON_GENDERLESS) + { + gBattleMons[gBattlerTarget].status2 |= STATUS2_INFATUATED_WITH(gBattlerAttacker); + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + gBattleCommunication[MULTIUSE_STATE] = 2; + effect++; + } + break; + } + case STATUS2_ESCAPE_PREVENTION: + if (!(gBattleMons[gBattlerTarget].status2 & STATUS2_ESCAPE_PREVENTION)) + { + gBattleMons[gBattlerTarget].status2 |= STATUS2_ESCAPE_PREVENTION; + gDisableStructs[gBattlerTarget].battlerPreventingEscape = gBattlerAttacker; + gBattleCommunication[MULTISTRING_CHOOSER] = 2; + effect++; + } + break; + case STATUS2_TORMENT: + if (!(gBattleMons[gBattlerTarget].status2 & STATUS2_TORMENT) + && !IsAbilityOnSide(gBattlerTarget, ABILITY_AROMA_VEIL)) + { + gBattleMons[gBattlerTarget].status2 |= STATUS2_TORMENT; + gDisableStructs[gBattlerTarget].tormentTimer = 4; // 3 turns excluding current turn + gBattleCommunication[MULTISTRING_CHOOSER] = 3; + effect++; + } + break; + } + if (effect) + { + gEffectBattler = gBattlerTarget; + gBattlescriptCurrInstr = cmd->nextInstr; + } + else + { + gBattlescriptCurrInstr = cmd->failInstr; + } + return; + } } // End of switch (cmd->id) gBattlescriptCurrInstr = cmd->nextInstr; @@ -14342,7 +14456,9 @@ static void Cmd_settorment(void) } else { + // TODO: Torment does not affect Dynamaxed Pokemon and prints a failure string. gBattleMons[gBattlerTarget].status2 |= STATUS2_TORMENT; + gDisableStructs[gBattlerTarget].tormentTimer = 0xF; // permanent gBattlescriptCurrInstr = cmd->nextInstr; } } diff --git a/src/battle_util.c b/src/battle_util.c index da150277ab..2af89f63ab 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -2675,6 +2675,7 @@ enum ENDTURN_SLOW_START, ENDTURN_PLASMA_FISTS, ENDTURN_CUD_CHEW, + ENDTURN_TORMENT, ENDTURN_BATTLER_COUNT }; @@ -3222,6 +3223,16 @@ u8 DoBattlerEndTurnEffects(void) gDisableStructs[gActiveBattler].cudChew = TRUE; gBattleStruct->turnEffectsTracker++; break; + case ENDTURN_TORMENT: + if (gDisableStructs[gActiveBattler].tormentTimer <= 4 + && --gDisableStructs[gActiveBattler].tormentTimer == 0) + { + gBattleMons[gActiveBattler].status2 &= ~STATUS2_TORMENT; + BattleScriptExecute(BattleScript_TormentEnds); + effect++; + } + gBattleStruct->turnEffectsTracker++; + break; case ENDTURN_BATTLER_COUNT: // done gBattleStruct->turnEffectsTracker = 0; gBattleStruct->turnEffectsBattlerId++; From 3cdcf2a356298ad0bc0e427c30c958adec2e81fb Mon Sep 17 00:00:00 2001 From: AgustinGDLV Date: Mon, 27 Feb 2023 22:01:19 -0800 Subject: [PATCH 023/162] implemented G-Max Chi Strike, finished G-Max Gold Rush --- data/battle_scripts_1.s | 24 ++++++++++++++++++++++++ include/battle.h | 1 + include/battle_scripts.h | 1 + src/battle_dynamax.c | 19 +++++++++++++++++-- src/battle_script_commands.c | 3 ++- 5 files changed, 45 insertions(+), 3 deletions(-) diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 0e77b5880e..1667e7a1a8 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -10496,6 +10496,7 @@ BattleScript_Status2FoesIncrement: jumpifbytenotequal gBattlerTarget, gBattlersCount, BattleScript_Status2FoesLoop BattleScript_Status2FoesEnd: restoretarget + jumpifbyte CMP_EQUAL, gBattleCommunication + 1, 1, BattleScript_PrintCoinsScattered goto BattleScript_MoveEnd BattleScript_DoConfuseAnim: @@ -10506,11 +10507,34 @@ BattleScript_DoInfatuationAnim: status2animation BS_TARGET, STATUS2_INFATUATION goto BattleScript_Status2FoesPrintMessage +BattleScript_PrintCoinsScattered: + printstring STRINGID_COINSSCATTERED + goto BattleScript_MoveEnd + BattleScript_TormentEnds:: printstring STRINGID_TORMENTEDNOMORE waitmessage B_WAIT_TIME_LONG end2 +BattleScript_EffectRaiseCritAlliesAnim:: + savetarget + setbyte gBattlerTarget, 0 +BattleScript_RaiseCritAlliesLoop: + jumpiftargetnotally BattleScript_RaiseCritAlliesIncrement + jumpiftargetabsent BattleScript_RaiseCritAlliesIncrement + setstatchanger STAT_ATK, 0, FALSE @ for animation + setgraphicalstatchangevalues + playanimation BS_TARGET, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1 + printstring STRINGID_PKMNGETTINGPUMPED + waitmessage B_WAIT_TIME_LONG +BattleScript_RaiseCritAlliesIncrement: + setbyte sSTAT_ANIM_PLAYED, FALSE + addbyte gBattlerTarget, 1 + jumpifbytenotequal gBattlerTarget, gBattlersCount, BattleScript_RaiseCritAlliesLoop +BattleScript_RaiseCritAlliesEnd: + restoretarget + return + BattleScript_PokemonCantUseTheMove:: attackstring ppreduce diff --git a/include/battle.h b/include/battle.h index 26bfe1e38b..94f0fab716 100644 --- a/include/battle.h +++ b/include/battle.h @@ -677,6 +677,7 @@ struct BattleStruct u8 battleBondTransformed[NUM_BATTLE_SIDES]; // Bitfield for each party. u8 storedHealingWish:4; // Each battler as a bit. u8 storedLunarDance:4; // Each battler as a bit. + u8 sideCritStages[NUM_BATTLE_SIDES]; // G-Max Chi Strike boosts crit stages of allies. }; #define F_DYNAMIC_TYPE_1 (1 << 6) diff --git a/include/battle_scripts.h b/include/battle_scripts.h index 604ce10d93..9941288cc4 100644 --- a/include/battle_scripts.h +++ b/include/battle_scripts.h @@ -481,5 +481,6 @@ extern const u8 BattleScript_EffectTryReducePP[]; extern const u8 BattleScript_EffectStatus1Foes[]; extern const u8 BattleScript_EffectStatus2Foes[]; extern const u8 BattleScript_TormentEnds[]; +extern const u8 BattleScript_EffectRaiseCritAlliesAnim[]; #endif // GUARD_BATTLE_SCRIPTS_H \ No newline at end of file diff --git a/src/battle_dynamax.c b/src/battle_dynamax.c index 03966c1bca..a14a9c65af 100644 --- a/src/battle_dynamax.c +++ b/src/battle_dynamax.c @@ -29,7 +29,7 @@ static const u16 sMaxMoveTable[] = [TYPE_STEEL] = MOVE_MAX_STEELSPIKE, [TYPE_FIRE] = MOVE_MAX_FLARE, [TYPE_WATER] = MOVE_MAX_GEYSER, - [TYPE_GRASS] = MOVE_MAX_OVERGROWTH, + [TYPE_GRASS] = MOVE_G_MAX_CHI_STRIKE, [TYPE_ELECTRIC] = MOVE_G_MAX_DEPLETION, [TYPE_PSYCHIC] = MOVE_MAX_MINDSTORM, [TYPE_ICE] = MOVE_MAX_HAILSTORM, @@ -92,7 +92,7 @@ bool8 ShouldUseMaxMove(u16 battlerId, u16 baseMove) // return !IsRaidBossUsingRegularMove(battlerId, baseMove); if (gBattleStruct->dynamax.dynamaxTurns[battlerId] > 0) return TRUE; - return FALSE; + return battlerId == B_POSITION_PLAYER_LEFT; } // Returns the appropriate Max Move or G-Max Move for a battler to use. @@ -494,6 +494,15 @@ u16 SetMaxMoveEffect(u16 move) effect++; break; case MAX_EFFECT_CONFUSE_FOES_PAY_DAY: + if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) + { + u16 payday = gPaydayMoney; + gPaydayMoney += (gBattleMons[gBattlerAttacker].level * 100); + if (payday > gPaydayMoney) + gPaydayMoney = 0xFFFF; + gBattleCommunication[CURSOR_POSITION] = 1; // add "Coins scattered." message + } + // fall through case MAX_EFFECT_CONFUSE_FOES: case MAX_EFFECT_INFATUATE_FOES: case MAX_EFFECT_TORMENT_FOES: @@ -502,6 +511,12 @@ u16 SetMaxMoveEffect(u16 move) gBattlescriptCurrInstr = BattleScript_EffectStatus2Foes; effect++; break; + case MAX_EFFECT_CRIT_PLUS: + gBattleStruct->sideCritStages[GetBattlerSide(gBattlerAttacker)]++; + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_EffectRaiseCritAlliesAnim; + effect++; + break; } return effect; } diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 44e2b21626..23204ccdc5 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -2054,7 +2054,8 @@ s32 CalcCritChanceStage(u8 battlerAtk, u8 battlerDef, u32 move, bool32 recordAbi #if B_AFFECTION_MECHANICS == TRUE + 2 * (GetBattlerFriendshipScore(gBattlerAttacker) >= FRIENDSHIP_200_TO_254) #endif - + (abilityAtk == ABILITY_SUPER_LUCK); + + (abilityAtk == ABILITY_SUPER_LUCK) + + gBattleStruct->sideCritStages[GetBattlerSide(gBattlerAttacker)]; if (critChance >= ARRAY_COUNT(sCriticalHitChance)) critChance = ARRAY_COUNT(sCriticalHitChance) - 1; From 7c853ef45ef4741aeb3f4209e35610c978c2d580 Mon Sep 17 00:00:00 2001 From: AgustinGDLV Date: Tue, 28 Feb 2023 16:37:48 -0800 Subject: [PATCH 024/162] implemented G-Max Sweetness, Overgrowth, One Blow, Rapid Flow, and Finale --- asm/macros/battle_script.inc | 10 ++++ data/battle_scripts_1.s | 56 ++++++++++++++++++++++ include/battle_dynamax.h | 1 + include/battle_scripts.h | 3 ++ include/constants/battle_script_commands.h | 2 + src/battle_dynamax.c | 22 +++++++-- src/battle_script_commands.c | 38 +++++++++++++++ src/battle_util.c | 3 +- src/data/battle_moves.h | 4 +- 9 files changed, 133 insertions(+), 6 deletions(-) diff --git a/asm/macros/battle_script.inc b/asm/macros/battle_script.inc index f9da963107..d0a8dbc9c2 100644 --- a/asm/macros/battle_script.inc +++ b/asm/macros/battle_script.inc @@ -2247,6 +2247,16 @@ .4byte \ptr .endm + .macro tryhealsixthhealth, ptr:req + various 0, VARIOUS_TRY_HEAL_SIXTH_HP + .4byte \ptr + .endm + + .macro tryrecycleberry, ptr:req + various 0, VARIOUS_TRY_RECYCLE_BERRY + .4byte \ptr + .endm + @ Tries to increase or decrease a battler's stat's stat stage by a specified amount. If impossible, jumps to \script. .macro modifybattlerstatstage battler:req, stat:req, mode:req, amount:req, script:req, animation:req, customString diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 1667e7a1a8..802dd78ffe 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -10358,6 +10358,7 @@ BattleScript_EffectMaxMove:: tryfaintmon BS_TARGET goto BattleScript_MoveEnd +@ TODO: Maybe rework to use setallytonexttarget. BattleScript_EffectRaiseStatAllies:: savetarget setbyte gBattlerTarget, 0 @@ -10535,6 +10536,61 @@ BattleScript_RaiseCritAlliesEnd: restoretarget return +BattleScript_EffectHealOneSixthAllies:: + jumpifteamhealthy BS_ATTACKER, BattleScript_MoveEnd + setbyte gBattlerTarget, 0 +BattleScript_HealOneSixthAlliesLoop: + jumpiftargetnotally BattleScript_HealOneSixthAlliesIncrement + jumpiftargetabsent BattleScript_HealOneSixthAlliesIncrement + tryhealsixthhealth BattleScript_HealOneSixthAlliesIncrement + orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE + healthbarupdate BS_TARGET + datahpupdate BS_TARGET + printstring STRINGID_PKMNREGAINEDHEALTH + waitmessage B_WAIT_TIME_LONG +BattleScript_HealOneSixthAlliesIncrement: + addbyte gBattlerTarget, 1 + jumpifbytenotequal gBattlerTarget, gBattlersCount, BattleScript_HealOneSixthAlliesLoop +BattleScript_HealOneSixthAlliesEnd: + restoretarget + return + +BattleScript_EffectCureStatusAllies:: + jumpifteamhealthy BS_ATTACKER, BattleScript_MoveEnd + setbyte gBattlerTarget, 0 +BattleScript_CureStatusAlliesLoop: + jumpiftargetnotally BattleScript_CureStatusAlliesIncrement + jumpiftargetabsent BattleScript_CureStatusAlliesIncrement + jumpifstatus BS_TARGET, STATUS1_ANY, BattleScript_CureStatusActivate +BattleScript_CureStatusAlliesIncrement: + addbyte gBattlerTarget, 1 + jumpifbytenotequal gBattlerTarget, gBattlersCount, BattleScript_CureStatusAlliesLoop +BattleScript_CureStatusAlliesEnd: + restoretarget + return +BattleScript_CureStatusActivate: + curestatus BS_TARGET + updatestatusicon BS_TARGET + printstring STRINGID_PKMNSTATUSNORMAL + waitmessage B_WAIT_TIME_LONG + goto BattleScript_CureStatusAlliesIncrement + +BattleScript_EffectRecycleBerriesAllies:: + jumpifteamhealthy BS_ATTACKER, BattleScript_MoveEnd + setbyte gBattlerTarget, 0 +BattleScript_RecycleBerriesAlliesLoop: + jumpiftargetnotally BattleScript_RecycleBerriesAlliesIncrement + jumpiftargetabsent BattleScript_RecycleBerriesAlliesIncrement + tryrecycleberry BattleScript_RecycleBerriesAlliesIncrement + printstring STRINGID_XFOUNDONEY + waitmessage B_WAIT_TIME_LONG +BattleScript_RecycleBerriesAlliesIncrement: + addbyte gBattlerTarget, 1 + jumpifbytenotequal gBattlerTarget, gBattlersCount, BattleScript_RecycleBerriesAlliesLoop +BattleScript_RecycleBerriesAlliesEnd: + restoretarget + return + BattleScript_PokemonCantUseTheMove:: attackstring ppreduce diff --git a/include/battle_dynamax.h b/include/battle_dynamax.h index bd13397c58..faa7a0dd99 100644 --- a/include/battle_dynamax.h +++ b/include/battle_dynamax.h @@ -51,6 +51,7 @@ enum MaxMoveEffect MAX_EFFECT_LOWER_SPEED_2_FOES, MAX_EFFECT_FIRE_SPIN_FOES, MAX_EFFECT_FIXED_POWER, + MAX_EFFECT_BYPASS_PROTECT, }; bool8 ShouldUseMaxMove(u16 battlerId, u16 baseMove); diff --git a/include/battle_scripts.h b/include/battle_scripts.h index 9941288cc4..4606b0649a 100644 --- a/include/battle_scripts.h +++ b/include/battle_scripts.h @@ -482,5 +482,8 @@ extern const u8 BattleScript_EffectStatus1Foes[]; extern const u8 BattleScript_EffectStatus2Foes[]; extern const u8 BattleScript_TormentEnds[]; extern const u8 BattleScript_EffectRaiseCritAlliesAnim[]; +extern const u8 BattleScript_EffectHealOneSixthAllies[]; +extern const u8 BattleScript_EffectCureStatusAllies[]; +extern const u8 BattleScript_EffectRecycleBerriesAllies[]; #endif // GUARD_BATTLE_SCRIPTS_H \ No newline at end of file diff --git a/include/constants/battle_script_commands.h b/include/constants/battle_script_commands.h index dd6892b254..7452d22057 100644 --- a/include/constants/battle_script_commands.h +++ b/include/constants/battle_script_commands.h @@ -267,6 +267,8 @@ #define VARIOUS_DAMAGE_NON_TYPES 175 #define VARIOUS_TRY_SET_STATUS1 176 #define VARIOUS_TRY_SET_STATUS2 177 +#define VARIOUS_TRY_HEAL_SIXTH_HP 178 +#define VARIOUS_TRY_RECYCLE_BERRY 179 // Cmd_manipulatedamage #define DMG_CHANGE_SIGN 0 diff --git a/src/battle_dynamax.c b/src/battle_dynamax.c index a14a9c65af..edb41c6e5c 100644 --- a/src/battle_dynamax.c +++ b/src/battle_dynamax.c @@ -29,8 +29,8 @@ static const u16 sMaxMoveTable[] = [TYPE_STEEL] = MOVE_MAX_STEELSPIKE, [TYPE_FIRE] = MOVE_MAX_FLARE, [TYPE_WATER] = MOVE_MAX_GEYSER, - [TYPE_GRASS] = MOVE_G_MAX_CHI_STRIKE, - [TYPE_ELECTRIC] = MOVE_G_MAX_DEPLETION, + [TYPE_GRASS] = MOVE_MAX_OVERGROWTH, + [TYPE_ELECTRIC] = MOVE_MAX_LIGHTNING, [TYPE_PSYCHIC] = MOVE_MAX_MINDSTORM, [TYPE_ICE] = MOVE_MAX_HAILSTORM, [TYPE_DRAGON] = MOVE_MAX_WYRMWIND, @@ -92,7 +92,7 @@ bool8 ShouldUseMaxMove(u16 battlerId, u16 baseMove) // return !IsRaidBossUsingRegularMove(battlerId, baseMove); if (gBattleStruct->dynamax.dynamaxTurns[battlerId] > 0) return TRUE; - return battlerId == B_POSITION_PLAYER_LEFT; + return FALSE; } // Returns the appropriate Max Move or G-Max Move for a battler to use. @@ -517,6 +517,22 @@ u16 SetMaxMoveEffect(u16 move) gBattlescriptCurrInstr = BattleScript_EffectRaiseCritAlliesAnim; effect++; break; + case MAX_EFFECT_HEAL_TEAM: + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_EffectHealOneSixthAllies; + effect++; + break; + case MAX_EFFECT_AROMATHERAPY: + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_EffectCureStatusAllies; + effect++; + break; + case MAX_EFFECT_RECYCLE_BERRIES: + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_EffectRecycleBerriesAllies; + effect++; + break; + } return effect; } diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 23204ccdc5..acde0e0089 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -11325,6 +11325,44 @@ static void Cmd_various(void) } return; } + case VARIOUS_TRY_HEAL_SIXTH_HP: + { + VARIOUS_ARGS(const u8 *failInstr); + gBattleMoveDamage = gBattleMons[gBattlerTarget].maxHP / 6; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + gBattleMoveDamage *= -1; + + if (gBattleMons[gBattlerTarget].hp == gBattleMons[gBattlerTarget].maxHP) + gBattlescriptCurrInstr = cmd->failInstr; // fail + else + gBattlescriptCurrInstr = cmd->nextInstr; // can heal + return; + } + case VARIOUS_TRY_RECYCLE_BERRY: + { + VARIOUS_ARGS(const u8 *failInstr); + u16* usedHeldItem = &gBattleStruct->usedHeldItems[gBattlerPartyIndexes[gBattlerTarget]][GetBattlerSide(gBattlerTarget)]; + if (gBattleMons[gBattlerTarget].item == ITEM_NONE + && gBattleStruct->changedItems[gBattlerTarget] == ITEM_NONE // Will not inherit an item + && ItemId_GetPocket(*usedHeldItem) == POCKET_BERRIES + && Random() % 2 == 0) + { + gLastUsedItem = *usedHeldItem; + *usedHeldItem = ITEM_NONE; + gBattleMons[gActiveBattler].item = gLastUsedItem; + + BtlController_EmitSetMonData(BUFFER_A, REQUEST_HELDITEM_BATTLE, 0, sizeof(gBattleMons[gBattlerTarget].item), &gBattleMons[gBattlerTarget].item); + MarkBattlerForControllerExec(gActiveBattler); + + gBattlescriptCurrInstr = cmd->nextInstr; + } + else + { + gBattlescriptCurrInstr = cmd->failInstr; + } + return; + } } // End of switch (cmd->id) gBattlescriptCurrInstr = cmd->nextInstr; diff --git a/src/battle_util.c b/src/battle_util.c index 2af89f63ab..ab4d2f623e 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -8295,7 +8295,8 @@ bool32 IsBattlerProtected(u8 battlerId, u16 move) // Max Moves bypass any protection except Max Guard. if (IsMaxMove(move)) { - if (gProtectStructs[battlerId].maxGuarded) + if (gProtectStructs[battlerId].maxGuarded + && gBattleMoves[move].argument != MAX_EFFECT_BYPASS_PROTECT) return TRUE; else return FALSE; diff --git a/src/data/battle_moves.h b/src/data/battle_moves.h index cbb39caadd..658436cea2 100644 --- a/src/data/battle_moves.h +++ b/src/data/battle_moves.h @@ -15779,7 +15779,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .flags = 0, .split = SPLIT_PHYSICAL, - .argument = MAX_EFFECT_TORMENT_FOES, //EFFECT TODO + .argument = MAX_EFFECT_BYPASS_PROTECT, //EFFECT TODO }, [MOVE_G_MAX_RAPID_FLOW] = @@ -15794,7 +15794,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .flags = 0, .split = SPLIT_PHYSICAL, - .argument = MAX_EFFECT_TORMENT_FOES, //EFFECT TODO + .argument = MAX_EFFECT_BYPASS_PROTECT, //EFFECT TODO }, }; From e937482c27b8efde18f8ebd423801c3a96255fa0 Mon Sep 17 00:00:00 2001 From: AgustinGDLV Date: Tue, 7 Mar 2023 11:18:19 -0800 Subject: [PATCH 025/162] fixed potential G-Max Chi Strike, Court Change bugs --- include/battle.h | 2 +- src/battle_dynamax.c | 3 ++- src/battle_main.c | 3 +++ src/battle_script_commands.c | 9 ++++++--- 4 files changed, 12 insertions(+), 5 deletions(-) diff --git a/include/battle.h b/include/battle.h index 94f0fab716..130a23e5b5 100644 --- a/include/battle.h +++ b/include/battle.h @@ -677,7 +677,7 @@ struct BattleStruct u8 battleBondTransformed[NUM_BATTLE_SIDES]; // Bitfield for each party. u8 storedHealingWish:4; // Each battler as a bit. u8 storedLunarDance:4; // Each battler as a bit. - u8 sideCritStages[NUM_BATTLE_SIDES]; // G-Max Chi Strike boosts crit stages of allies. + u8 bonusCritStages[MAX_BATTLERS_COUNT]; // G-Max Chi Strike boosts crit stages of allies. }; #define F_DYNAMIC_TYPE_1 (1 << 6) diff --git a/src/battle_dynamax.c b/src/battle_dynamax.c index edb41c6e5c..727bd6a2f2 100644 --- a/src/battle_dynamax.c +++ b/src/battle_dynamax.c @@ -512,7 +512,8 @@ u16 SetMaxMoveEffect(u16 move) effect++; break; case MAX_EFFECT_CRIT_PLUS: - gBattleStruct->sideCritStages[GetBattlerSide(gBattlerAttacker)]++; + gBattleStruct->bonusCritStages[gBattlerAttacker]++; + gBattleStruct->bonusCritStages[BATTLE_PARTNER(gBattlerAttacker)]++; BattleScriptPush(gBattlescriptCurrInstr + 1); gBattlescriptCurrInstr = BattleScript_EffectRaiseCritAlliesAnim; effect++; diff --git a/src/battle_main.c b/src/battle_main.c index d6b5b2459c..15414d7221 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -3166,6 +3166,9 @@ void SwitchInClearSetData(void) gSpecialStatuses[gActiveBattler].physicalDmg = 0; gSpecialStatuses[gActiveBattler].specialDmg = 0; + // Reset G-Max Chi Strike boosts. + gBattleStruct->bonusCritStages[gActiveBattler] = 0; + gBattleStruct->overwrittenAbilities[gActiveBattler] = ABILITY_NONE; Ai_UpdateSwitchInData(gActiveBattler); diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index acde0e0089..e79403a10f 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -2055,7 +2055,7 @@ s32 CalcCritChanceStage(u8 battlerAtk, u8 battlerDef, u32 move, bool32 recordAbi + 2 * (GetBattlerFriendshipScore(gBattlerAttacker) >= FRIENDSHIP_200_TO_254) #endif + (abilityAtk == ABILITY_SUPER_LUCK) - + gBattleStruct->sideCritStages[GetBattlerSide(gBattlerAttacker)]; + + gBattleStruct->bonusCritStages[gBattlerAttacker]; if (critChance >= ARRAY_COUNT(sCriticalHitChance)) critChance = ARRAY_COUNT(sCriticalHitChance) - 1; @@ -8614,7 +8614,6 @@ static bool32 CourtChangeSwapSideStatuses(void) u32 temp; // TODO: add Pledge-related effects - // TODO: add Gigantamax-related effects // Swap timers and statuses COURTCHANGE_SWAP(SIDE_STATUS_REFLECT, reflectTimer, temp) @@ -8629,7 +8628,8 @@ static bool32 CourtChangeSwapSideStatuses(void) COURTCHANGE_SWAP(SIDE_STATUS_STEALTH_ROCK, stealthRockAmount, temp); COURTCHANGE_SWAP(SIDE_STATUS_TOXIC_SPIKES, toxicSpikesAmount, temp); COURTCHANGE_SWAP(SIDE_STATUS_STICKY_WEB, stickyWebAmount, temp); - COURTCHANGE_SWAP(SIDE_STATUS_STEELSURGE, stickyWebAmount, temp); + COURTCHANGE_SWAP(SIDE_STATUS_STEELSURGE, steelsurgeAmount, temp); + COURTCHANGE_SWAP(SIDE_STATUS_DAMAGE_NON_TYPES, damageNonTypesTimer, temp); // Change battler IDs of swapped effects. Needed for the correct string when they expire // E.g. "Foe's Reflect wore off!" @@ -8646,6 +8646,9 @@ static bool32 CourtChangeSwapSideStatuses(void) // Track which side originally set the Sticky Web SWAP(sideTimerPlayer->stickyWebBattlerSide, sideTimerOpp->stickyWebBattlerSide, temp); + + // Swap what type set the Gigantamax damage over time effect + SWAP(sideTimerPlayer->damageNonTypesType, sideTimerOpp->damageNonTypesType, temp); } static bool32 CanTeleport(u8 battlerId) From 7de7599a7bf84639d520db38fe38206104913b56 Mon Sep 17 00:00:00 2001 From: AgustinGDLV Date: Tue, 7 Mar 2023 12:07:11 -0800 Subject: [PATCH 026/162] reworked scripts to remove jumpifnotally / jumpiftargetabsent --- asm/macros/battle_script.inc | 10 -- data/battle_scripts_1.s | 123 ++++++++++----------- include/config/battle.h | 2 +- include/constants/battle_script_commands.h | 14 +-- src/battle_script_commands.c | 18 --- 5 files changed, 68 insertions(+), 99 deletions(-) diff --git a/asm/macros/battle_script.inc b/asm/macros/battle_script.inc index d0a8dbc9c2..2d8eaec0ab 100644 --- a/asm/macros/battle_script.inc +++ b/asm/macros/battle_script.inc @@ -2218,16 +2218,6 @@ various 0, VARIOUS_SET_MAX_MOVE_EFFECT .endm - .macro jumpiftargetabsent, ptr:req - various 0, VARIOUS_JUMP_IF_TARGET_ABSENT - .4byte \ptr - .endm - - .macro jumpiftargetnotally, ptr:req - various 0, VARIOUS_JUMP_IF_TARGET_NOT_ALLY - .4byte \ptr - .endm - .macro setsteelsurge, failInstr:req various 0, VARIOUS_SET_STEELSURGE .4byte \failInstr diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 802dd78ffe..0709626c67 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -10334,6 +10334,16 @@ BattleScript_SymbiosisActivates:: waitmessage B_WAIT_TIME_LONG return +BattleScript_TargetAbilityStatRaiseRet:: + copybyte gBattlerAbility, gEffectBattler + copybyte gBattlerAttacker, gBattlerTarget + call BattleScript_AbilityPopUp + statbuffchange MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN, BattleScript_TargetAbilityStatRaiseRet_End + setgraphicalstatchangevalues + call BattleScript_StatUp +BattleScript_TargetAbilityStatRaiseRet_End: + return + @@@ MAX MOVES @@@ BattleScript_EffectMaxMove:: attackcanceler @@ -10354,17 +10364,16 @@ BattleScript_EffectMaxMove:: waitmessage B_WAIT_TIME_LONG resultmessage waitmessage B_WAIT_TIME_LONG - setmaxmoveeffect tryfaintmon BS_TARGET - goto BattleScript_MoveEnd + setmaxmoveeffect + moveendall + end -@ TODO: Maybe rework to use setallytonexttarget. BattleScript_EffectRaiseStatAllies:: savetarget - setbyte gBattlerTarget, 0 + copybyte gBattlerTarget, gBattlerAttacker BattleScript_RaiseSideStatsLoop: - jumpiftargetnotally BattleScript_RaiseSideStatsIncrement - jumpiftargetabsent BattleScript_RaiseSideStatsIncrement + jumpifabsent BS_TARGET, BattleScript_RaiseSideStatsIncrement statbuffchange STAT_CHANGE_ALLOW_PTR, BattleScript_RaiseSideStatsIncrement jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_STAT_WONT_INCREASE, BattleScript_RaiseSideStatsIncrement setgraphicalstatchangevalues @@ -10373,18 +10382,17 @@ BattleScript_RaiseSideStatsLoop: waitmessage B_WAIT_TIME_LONG BattleScript_RaiseSideStatsIncrement: setbyte sSTAT_ANIM_PLAYED, FALSE - addbyte gBattlerTarget, 1 - jumpifbytenotequal gBattlerTarget, gBattlersCount, BattleScript_RaiseSideStatsLoop + jumpifbytenotequal gBattlerTarget, gBattlerAttacker, BattleScript_RaiseSideStatsEnd + setallytonexttarget BattleScript_RaiseSideStatsLoop BattleScript_RaiseSideStatsEnd: restoretarget - return + goto BattleScript_MoveEnd BattleScript_EffectLowerStatFoes:: savetarget - setbyte gBattlerTarget, 0 + copybyte sBATTLER, gBattlerTarget BattleScript_LowerSideStatsLoop: - jumpiftargetally BattleScript_LowerSideStatsIncrement - jumpiftargetabsent BattleScript_LowerSideStatsIncrement + jumpifabsent BS_TARGET, BattleScript_LowerSideStatsIncrement statbuffchange STAT_CHANGE_ALLOW_PTR, BattleScript_LowerSideStatsIncrement jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_STAT_WONT_DECREASE, BattleScript_LowerSideStatsIncrement setgraphicalstatchangevalues @@ -10393,18 +10401,18 @@ BattleScript_LowerSideStatsLoop: waitmessage B_WAIT_TIME_LONG BattleScript_LowerSideStatsIncrement: setbyte sSTAT_ANIM_PLAYED, FALSE - addbyte gBattlerTarget, 1 - jumpifbytenotequal gBattlerTarget, gBattlersCount, BattleScript_LowerSideStatsLoop + jumpifbytenotequal gBattlerTarget, sBATTLER, BattleScript_LowerSideStatsEnd + setallytonexttarget BattleScript_LowerSideStatsLoop BattleScript_LowerSideStatsEnd: restoretarget - return + goto BattleScript_MoveEnd BattleScript_EffectSetWeather:: playanimation 0, B_ANIM_MAX_SET_WEATHER printfromtable gMoveWeatherChangeStringIds waitmessage B_WAIT_TIME_LONG call BattleScript_WeatherFormChanges - return + goto BattleScript_MoveEnd BattleScript_EffectSetTerrain:: printfromtable gTerrainStringIds @@ -10412,21 +10420,12 @@ BattleScript_EffectSetTerrain:: playanimation BS_SCRIPTING, B_ANIM_RESTORE_BG call BattleScript_TerrainSeedLoop jumpifabilitypresent ABILITY_MIMICRY, BattleScript_MimicryActivates_End3 - return -BattleScript_TargetAbilityStatRaiseRet:: - copybyte gBattlerAbility, gEffectBattler - copybyte gBattlerAttacker, gBattlerTarget - call BattleScript_AbilityPopUp - statbuffchange MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN, BattleScript_TargetAbilityStatRaiseRet_End - setgraphicalstatchangevalues - call BattleScript_StatUp -BattleScript_TargetAbilityStatRaiseRet_End: - return + goto BattleScript_MoveEnd BattleScript_DamageNonTypesStarts:: printfromtable gDamageNonTypesStartStringIds waitmessage B_WAIT_TIME_LONG - return + goto BattleScript_MoveEnd BattleScript_DamageNonTypesContinues:: @printfromtable gDamageNonTypesStartStringIds @@ -10463,10 +10462,9 @@ BattleScript_EffectTryReducePP:: BattleScript_EffectStatus1Foes:: savetarget - setbyte gBattlerTarget, 0 + copybyte sBATTLER, gBattlerTarget BattleScript_Status1FoesLoop: - jumpiftargetally BattleScript_Status1FoesIncrement - jumpiftargetabsent BattleScript_Status1FoesIncrement + jumpifabsent BS_TARGET, BattleScript_Status1FoesIncrement trysetstatus1 BattleScript_Status1FoesIncrement statusanimation BS_TARGET updatestatusicon BS_TARGET @@ -10474,18 +10472,17 @@ BattleScript_Status1FoesLoop: waitmessage B_WAIT_TIME_LONG goto BattleScript_UpdateEffectStatusIconRet BattleScript_Status1FoesIncrement: - addbyte gBattlerTarget, 1 - jumpifbytenotequal gBattlerTarget, gBattlersCount, BattleScript_Status1FoesLoop + jumpifbytenotequal gBattlerTarget, sBATTLER, BattleScript_Status1FoesEnd + setallytonexttarget BattleScript_Status1FoesLoop BattleScript_Status1FoesEnd: restoretarget goto BattleScript_MoveEnd BattleScript_EffectStatus2Foes:: savetarget - setbyte gBattlerTarget, 0 + copybyte sBATTLER, gBattlerTarget BattleScript_Status2FoesLoop: - jumpiftargetally BattleScript_Status2FoesIncrement - jumpiftargetabsent BattleScript_Status2FoesIncrement + jumpifabsent BS_TARGET, BattleScript_Status2FoesIncrement trysetstatus2 BattleScript_Status2FoesIncrement jumpifbyte CMP_EQUAL, gBattleCommunication, 1, BattleScript_DoConfuseAnim jumpifbyte CMP_EQUAL, gBattleCommunication, 2, BattleScript_DoInfatuationAnim @@ -10493,11 +10490,11 @@ BattleScript_Status2FoesPrintMessage: printfromtable gStatus2StringIds waitmessage B_WAIT_TIME_LONG BattleScript_Status2FoesIncrement: - addbyte gBattlerTarget, 1 - jumpifbytenotequal gBattlerTarget, gBattlersCount, BattleScript_Status2FoesLoop + jumpifbytenotequal gBattlerTarget, sBATTLER, BattleScript_Status2FoesEnd + setallytonexttarget BattleScript_Status2FoesLoop BattleScript_Status2FoesEnd: restoretarget - jumpifbyte CMP_EQUAL, gBattleCommunication + 1, 1, BattleScript_PrintCoinsScattered + jumpifbyte CMP_EQUAL, gBattleCommunication + 1, 1, BattleScript_PrintCoinsScattered @ Gold Rush goto BattleScript_MoveEnd BattleScript_DoConfuseAnim: @@ -10519,10 +10516,9 @@ BattleScript_TormentEnds:: BattleScript_EffectRaiseCritAlliesAnim:: savetarget - setbyte gBattlerTarget, 0 + copybyte gBattlerTarget, gBattlerAttacker BattleScript_RaiseCritAlliesLoop: - jumpiftargetnotally BattleScript_RaiseCritAlliesIncrement - jumpiftargetabsent BattleScript_RaiseCritAlliesIncrement + jumpifabsent BS_TARGET, BattleScript_RaiseCritAlliesIncrement setstatchanger STAT_ATK, 0, FALSE @ for animation setgraphicalstatchangevalues playanimation BS_TARGET, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1 @@ -10530,18 +10526,18 @@ BattleScript_RaiseCritAlliesLoop: waitmessage B_WAIT_TIME_LONG BattleScript_RaiseCritAlliesIncrement: setbyte sSTAT_ANIM_PLAYED, FALSE - addbyte gBattlerTarget, 1 - jumpifbytenotequal gBattlerTarget, gBattlersCount, BattleScript_RaiseCritAlliesLoop + jumpifbytenotequal gBattlerTarget, gBattlerAttacker, BattleScript_RaiseCritAlliesEnd + setallytonexttarget BattleScript_RaiseCritAlliesLoop BattleScript_RaiseCritAlliesEnd: restoretarget - return + goto BattleScript_MoveEnd BattleScript_EffectHealOneSixthAllies:: jumpifteamhealthy BS_ATTACKER, BattleScript_MoveEnd - setbyte gBattlerTarget, 0 + savetarget + copybyte gBattlerTarget, gBattlerAttacker BattleScript_HealOneSixthAlliesLoop: - jumpiftargetnotally BattleScript_HealOneSixthAlliesIncrement - jumpiftargetabsent BattleScript_HealOneSixthAlliesIncrement + jumpifabsent BS_TARGET, BattleScript_HealOneSixthAlliesIncrement tryhealsixthhealth BattleScript_HealOneSixthAlliesIncrement orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE healthbarupdate BS_TARGET @@ -10549,25 +10545,26 @@ BattleScript_HealOneSixthAlliesLoop: printstring STRINGID_PKMNREGAINEDHEALTH waitmessage B_WAIT_TIME_LONG BattleScript_HealOneSixthAlliesIncrement: - addbyte gBattlerTarget, 1 - jumpifbytenotequal gBattlerTarget, gBattlersCount, BattleScript_HealOneSixthAlliesLoop + jumpifbytenotequal gBattlerTarget, gBattlerAttacker, BattleScript_HealOneSixthAlliesEnd + setallytonexttarget BattleScript_HealOneSixthAlliesLoop BattleScript_HealOneSixthAlliesEnd: restoretarget - return + goto BattleScript_MoveEnd BattleScript_EffectCureStatusAllies:: jumpifteamhealthy BS_ATTACKER, BattleScript_MoveEnd - setbyte gBattlerTarget, 0 + savetarget + copybyte gBattlerTarget, gBattlerAttacker BattleScript_CureStatusAlliesLoop: - jumpiftargetnotally BattleScript_CureStatusAlliesIncrement - jumpiftargetabsent BattleScript_CureStatusAlliesIncrement + jumpifabsent BS_TARGET, BattleScript_CureStatusAlliesIncrement jumpifstatus BS_TARGET, STATUS1_ANY, BattleScript_CureStatusActivate BattleScript_CureStatusAlliesIncrement: - addbyte gBattlerTarget, 1 - jumpifbytenotequal gBattlerTarget, gBattlersCount, BattleScript_CureStatusAlliesLoop + jumpifbytenotequal gBattlerTarget, gBattlerAttacker, BattleScript_CureStatusAlliesLoop + setallytonexttarget BattleScript_CureStatusAlliesLoop BattleScript_CureStatusAlliesEnd: restoretarget - return + goto BattleScript_MoveEnd + BattleScript_CureStatusActivate: curestatus BS_TARGET updatestatusicon BS_TARGET @@ -10577,19 +10574,21 @@ BattleScript_CureStatusActivate: BattleScript_EffectRecycleBerriesAllies:: jumpifteamhealthy BS_ATTACKER, BattleScript_MoveEnd - setbyte gBattlerTarget, 0 + savetarget + copybyte gBattlerTarget, gBattlerAttacker BattleScript_RecycleBerriesAlliesLoop: - jumpiftargetnotally BattleScript_RecycleBerriesAlliesIncrement - jumpiftargetabsent BattleScript_RecycleBerriesAlliesIncrement + jumpifabsent BS_TARGET, BattleScript_RecycleBerriesAlliesIncrement tryrecycleberry BattleScript_RecycleBerriesAlliesIncrement printstring STRINGID_XFOUNDONEY waitmessage B_WAIT_TIME_LONG BattleScript_RecycleBerriesAlliesIncrement: - addbyte gBattlerTarget, 1 - jumpifbytenotequal gBattlerTarget, gBattlersCount, BattleScript_RecycleBerriesAlliesLoop + jumpifbytenotequal gBattlerTarget, gBattlerAttacker, BattleScript_RecycleBerriesAlliesEnd + setallytonexttarget BattleScript_RecycleBerriesAlliesLoop BattleScript_RecycleBerriesAlliesEnd: restoretarget - return + goto BattleScript_MoveEnd + +@@ End Max Moves BattleScript_PokemonCantUseTheMove:: attackstring diff --git a/include/config/battle.h b/include/config/battle.h index a8f4a3e8b4..e965da940b 100644 --- a/include/config/battle.h +++ b/include/config/battle.h @@ -180,7 +180,7 @@ #define B_LAST_USED_BALL_BUTTON R_BUTTON // If last used ball is implemented, this button (or button combo) will trigger throwing the last used ball. // Other settings -#define B_DOUBLE_WILD_CHANCE 0 // % chance of encountering two Pokémon in a Wild Encounter. +#define B_DOUBLE_WILD_CHANCE 100 // % chance of encountering two Pokémon in a Wild Encounter. #define B_MULTI_BATTLE_WHITEOUT GEN_LATEST // In Gen4+, multi battles end when the Player and also their Partner don't have any more Pokémon to fight. #define B_EVOLUTION_AFTER_WHITEOUT GEN_LATEST // In Gen6+, Pokemon that qualify for evolution after battle will evolve even if the player loses. #define B_WILD_NATURAL_ENEMIES TRUE // If set to TRUE, certain wild mon species will attack other species when partnered in double wild battles (eg. Zangoose vs Seviper) diff --git a/include/constants/battle_script_commands.h b/include/constants/battle_script_commands.h index 7452d22057..c17c440d02 100644 --- a/include/constants/battle_script_commands.h +++ b/include/constants/battle_script_commands.h @@ -261,14 +261,12 @@ #define VARIOUS_JUMP_IF_SHELL_TRAP 169 #define VARIOUS_SET_MAX_MOVE_EFFECT 170 #define VARIOUS_JUMP_IF_NO_VALID_TARGETS 171 -#define VARIOUS_JUMP_IF_TARGET_NOT_ALLY 172 -#define VARIOUS_JUMP_IF_TARGET_ABSENT 173 -#define VARIOUS_SET_STEELSURGE 174 -#define VARIOUS_DAMAGE_NON_TYPES 175 -#define VARIOUS_TRY_SET_STATUS1 176 -#define VARIOUS_TRY_SET_STATUS2 177 -#define VARIOUS_TRY_HEAL_SIXTH_HP 178 -#define VARIOUS_TRY_RECYCLE_BERRY 179 +#define VARIOUS_SET_STEELSURGE 172 +#define VARIOUS_DAMAGE_NON_TYPES 173 +#define VARIOUS_TRY_SET_STATUS1 174 +#define VARIOUS_TRY_SET_STATUS2 175 +#define VARIOUS_TRY_HEAL_SIXTH_HP 176 +#define VARIOUS_TRY_RECYCLE_BERRY 177 // Cmd_manipulatedamage #define DMG_CHANGE_SIGN 0 diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index e79403a10f..6144be8c1b 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -11164,24 +11164,6 @@ static void Cmd_various(void) return; break; } - case VARIOUS_JUMP_IF_TARGET_NOT_ALLY: - { - VARIOUS_ARGS(const u8 *jumpInstr); - if (GetBattlerSide(gBattlerTarget) != GetBattlerSide(gBattlerAttacker)) - gBattlescriptCurrInstr = cmd->jumpInstr; - else - gBattlescriptCurrInstr = cmd->nextInstr; - return; - } - case VARIOUS_JUMP_IF_TARGET_ABSENT: - { - VARIOUS_ARGS(const u8 *jumpInstr); - if (!IsBattlerAlive(gBattlerTarget)) - gBattlescriptCurrInstr = cmd->jumpInstr; - else - gBattlescriptCurrInstr = cmd->nextInstr; - return; - } case VARIOUS_SET_STEELSURGE: { VARIOUS_ARGS(const u8 *failInstr); From ac649a476f3982f4a4c903399abbeb756086c39c Mon Sep 17 00:00:00 2001 From: AgustinGDLV Date: Tue, 7 Mar 2023 19:21:59 -0800 Subject: [PATCH 027/162] added Gigantamax check + move display and tint when dynamaxed --- include/battle_dynamax.h | 1 + include/config.h | 2 +- src/battle_controller_player.c | 5 +++- src/battle_dynamax.c | 43 ++++++++++++++++++++++++++++------ src/battle_gfx_sfx_util.c | 7 ++++++ 5 files changed, 49 insertions(+), 9 deletions(-) diff --git a/include/battle_dynamax.h b/include/battle_dynamax.h index faa7a0dd99..1996dc4c5c 100644 --- a/include/battle_dynamax.h +++ b/include/battle_dynamax.h @@ -54,6 +54,7 @@ enum MaxMoveEffect MAX_EFFECT_BYPASS_PROTECT, }; +bool8 IsDynamaxed(u16 battlerId); bool8 ShouldUseMaxMove(u16 battlerId, u16 baseMove); u16 GetMaxMove(u16 battlerId, u16 baseMove); u8 GetMaxMovePower(u16 move); diff --git a/include/config.h b/include/config.h index 2ad84f29cd..9412c8f426 100644 --- a/include/config.h +++ b/include/config.h @@ -6,7 +6,7 @@ // still has them in the ROM. This is because the developers forgot // to define NDEBUG before release, however this has been changed as // Ruby's actual debug build does not use the AGBPrint features. -#define NDEBUG +// #define NDEBUG // To enable printf debugging, comment out "#define NDEBUG". This allows // the various AGBPrint functions to be used. (See include/gba/isagbprint.h). diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c index 82a9d7b7a9..75581bd761 100644 --- a/src/battle_controller_player.c +++ b/src/battle_controller_player.c @@ -1685,7 +1685,10 @@ static void MoveSelectionDisplayMoveNames(void) for (i = 0; i < MAX_MON_MOVES; i++) { MoveSelectionDestroyCursorAt(i); - StringCopy(gDisplayedStringBattle, gMoveNames[moveInfo->moves[i]]); + if (IsDynamaxed(gActiveBattler)) + StringCopy(gDisplayedStringBattle, gMoveNames[GetMaxMove(gActiveBattler, moveInfo->moves[i])]); + else + StringCopy(gDisplayedStringBattle, gMoveNames[moveInfo->moves[i]]); // Prints on windows B_WIN_MOVE_NAME_1, B_WIN_MOVE_NAME_2, B_WIN_MOVE_NAME_3, B_WIN_MOVE_NAME_4 BattlePutTextOnWindow(gDisplayedStringBattle, i + B_WIN_MOVE_NAME_1); if (moveInfo->moves[i] != MOVE_NONE) diff --git a/src/battle_dynamax.c b/src/battle_dynamax.c index 727bd6a2f2..bd3d24584d 100644 --- a/src/battle_dynamax.c +++ b/src/battle_dynamax.c @@ -48,8 +48,8 @@ struct GMaxMove static const struct GMaxMove sGMaxMoveTable[] = { {SPECIES_VENUSAUR_GMAX, TYPE_GRASS, MOVE_G_MAX_VINE_LASH}, - {SPECIES_CHARIZARD_GMAX, TYPE_FIRE, MOVE_G_MAX_WILDFIRE}, {SPECIES_BLASTOISE_GMAX, TYPE_WATER, MOVE_G_MAX_CANNONADE}, + {SPECIES_CHARIZARD_GMAX, TYPE_FIRE, MOVE_G_MAX_WILDFIRE}, {SPECIES_BUTTERFREE_GMAX, TYPE_BUG, MOVE_G_MAX_BEFUDDLE}, {SPECIES_PIKACHU_GMAX, TYPE_ELECTRIC, MOVE_G_MAX_VOLT_CRASH}, {SPECIES_MEOWTH_GMAX, TYPE_NORMAL, MOVE_G_MAX_GOLD_RUSH}, @@ -84,22 +84,51 @@ static const struct GMaxMove sGMaxMoveTable[] = extern u8 gMaxMovePowers[MOVES_COUNT]; +bool8 IsDynamaxed(u16 battlerId) +{ + if (/*IsRaidBoss(battlerId) ||*/ gBattleStruct->dynamax.dynamaxTurns[battlerId] > 0) + return TRUE; + return FALSE; +} + // Returns whether a move should be converted into a Max Move. bool8 ShouldUseMaxMove(u16 battlerId, u16 baseMove) { // TODO: Raids //if (IsRaidBoss(battlerId)) // return !IsRaidBossUsingRegularMove(battlerId, baseMove); - if (gBattleStruct->dynamax.dynamaxTurns[battlerId] > 0) - return TRUE; - return FALSE; + return IsDynamaxed(battlerId); +} + +static u16 GetTypeBasedMaxMove(u16 battlerId, u16 type) +{ + u32 species; + if (GetBattlerSide(battlerId) == B_SIDE_PLAYER) + species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES, NULL); + else + species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES, NULL); + + // Gigantamax check + if (species >= (SPECIES_VENUSAUR_GMAX) + && sGMaxMoveTable[species - (SPECIES_VENUSAUR_GMAX)].moveType == type) + return sGMaxMoveTable[species - (SPECIES_VENUSAUR_GMAX)].gmaxMove; + + // regular Max Move + else + { + return sMaxMoveTable[type]; + } } // Returns the appropriate Max Move or G-Max Move for a battler to use. u16 GetMaxMove(u16 battlerId, u16 baseMove) { u16 move = baseMove; - if (baseMove == MOVE_STRUGGLE) + if (baseMove == MOVE_NONE) // for move display + { + return MOVE_NONE; + } + else if (baseMove == MOVE_STRUGGLE) { return MOVE_STRUGGLE; } @@ -109,12 +138,12 @@ u16 GetMaxMove(u16 battlerId, u16 baseMove) } else if (gBattleStruct->dynamicMoveType) // unsure of how to deal with Hidden Power { - move = sMaxMoveTable[gBattleStruct->dynamicMoveType & DYNAMIC_TYPE_MASK]; + move = GetTypeBasedMaxMove(battlerId, gBattleStruct->dynamicMoveType & DYNAMIC_TYPE_MASK); gBattleStruct->dynamax.splits[battlerId] = gBattleMoves[baseMove].split; } else { - move = sMaxMoveTable[gBattleMoves[baseMove].type]; + move = GetTypeBasedMaxMove(battlerId, gBattleMoves[baseMove].type); gBattleStruct->dynamax.splits[battlerId] = gBattleMoves[baseMove].split; } diff --git a/src/battle_gfx_sfx_util.c b/src/battle_gfx_sfx_util.c index 389832fb20..9e67c2abb4 100644 --- a/src/battle_gfx_sfx_util.c +++ b/src/battle_gfx_sfx_util.c @@ -611,6 +611,13 @@ static void BattleLoadMonSpriteGfx(struct Pokemon *mon, u32 battlerId, bool32 op BlendPalette(paletteOffset, 16, 6, RGB_WHITE); CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, PLTT_SIZEOF(16)); } + + // dynamax tint + if (IsDynamaxed(battlerId)) + { + BlendPalette(paletteOffset, 16, 4, RGB(31, 0, 12)); + CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32); + } } void BattleLoadOpponentMonSpriteGfx(struct Pokemon *mon, u8 battlerId) From 6083a22945fb5e6cbdfdd8fa58a452a859fc452b Mon Sep 17 00:00:00 2001 From: AgustinGDLV Date: Tue, 7 Mar 2023 23:20:09 -0800 Subject: [PATCH 028/162] fixed doubles target bug --- src/battle_util.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/battle_util.c b/src/battle_util.c index ab4d2f623e..1ab09ed764 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -343,7 +343,6 @@ void HandleAction_UseMove(void) { gCurrentMove = gChosenMove = GetMaxMove(gBattlerAttacker, gCurrentMove); gBattleStruct->dynamax.activeSplit = gBattleStruct->dynamax.splits[gBattlerAttacker]; - gBattleStruct->moveTarget[gBattlerAttacker] = GetMoveTarget(gCurrentMove, NO_TARGET_OVERRIDE); } // choose target From 76073fab52d7e156252584d69e66bf50ec8ea9db Mon Sep 17 00:00:00 2001 From: AgustinGDLV Date: Fri, 10 Mar 2023 10:20:27 -0800 Subject: [PATCH 029/162] added basic Dynamax-in-battle --- asm/macros/battle_script.inc | 4 +++ data/battle_anim_scripts.s | 9 ++++++ data/battle_scripts_1.s | 19 +++++++++++- include/battle.h | 4 +++ include/battle_controllers.h | 1 + include/battle_dynamax.h | 5 +++ include/battle_scripts.h | 4 +++ include/constants/battle_anim.h | 3 +- include/constants/battle_script_commands.h | 1 + sound/cry_tables.inc | 1 + src/battle_controller_player.c | 21 ++++++++++++- src/battle_dynamax.c | 36 ++++++++++++++++++++-- src/battle_main.c | 20 +++++++++++- src/battle_script_commands.c | 17 ++++++++++ src/battle_util.c | 16 ++++++++-- 15 files changed, 153 insertions(+), 8 deletions(-) diff --git a/asm/macros/battle_script.inc b/asm/macros/battle_script.inc index 2d8eaec0ab..89d8dee20e 100644 --- a/asm/macros/battle_script.inc +++ b/asm/macros/battle_script.inc @@ -2246,6 +2246,10 @@ various 0, VARIOUS_TRY_RECYCLE_BERRY .4byte \ptr .endm + + .macro applydynamaxhpmultiplier + various 0, VARIOUS_APPLY_DYNAMAX_HP_MULTIPLIER + .endm @ Tries to increase or decrease a battler's stat's stat stage by a specified amount. If impossible, jumps to \script. .macro modifybattlerstatstage battler:req, stat:req, mode:req, amount:req, script:req, animation:req, customString diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index 9055aed3b9..34f7471772 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -999,6 +999,7 @@ gBattleAnims_General:: .4byte General_ShellTrapSetUp @ B_ANIM_SHELL_TRAP_SETUP .4byte General_ZMoveActivate @ B_ANIM_ZMOVE_ACTIVATE .4byte General_AffectionHangedOn @ B_ANIM_AFFECTION_HANGED_ON + .4byte General_DynamaxGrowth @ B_ANIM_DYNAMAX_GROWTH .4byte General_SetWeather @ B_ANIM_MAX_SET_WEATHER .align 2 @@ -30943,3 +30944,11 @@ Move_G_MAX_RAPID_FLOW: launchtask AnimTask_DynamaxGrowth 0x5 0x1 0x1 waitforvisualfinish end + +@@@ DYNAMAX AND MAX RAIDS +General_DynamaxGrowth:: @ PORTED FROM CFRU + createvisualtask SoundTask_PlayCryWithEcho, 2, ANIM_ATTACKER, 2 + delay 8 + launchtask AnimTask_DynamaxGrowth 0x5 0x1 0x0 + waitforvisualfinish + end diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 0709626c67..3aae553ef7 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -10588,7 +10588,24 @@ BattleScript_RecycleBerriesAlliesEnd: restoretarget goto BattleScript_MoveEnd -@@ End Max Moves +@@@ END MAX MOVES @@@ + +BattleScript_DynamaxBegins:: + printstring STRINGID_EMPTYSTRING3 + playanimation BS_SCRIPTING, B_ANIM_SLIDE_OFFSCREEN + waitanimation + returntoball BS_SCRIPTING + @applydynamaxhpmultiplier + switchinanim BS_SCRIPTING, TRUE + playanimation BS_SCRIPTING, B_ANIM_DYNAMAX_GROWTH + waitanimation + end + +BattleScript_DynamaxEnds:: + printstring STRINGID_EMPTYSTRING3 + playanimation BS_SCRIPTING, B_ANIM_FORM_CHANGE + waitanimation + end2 BattleScript_PokemonCantUseTheMove:: attackstring diff --git a/include/battle.h b/include/battle.h index 130a23e5b5..1b8cc8e9b7 100644 --- a/include/battle.h +++ b/include/battle.h @@ -524,6 +524,10 @@ struct ZMoveData struct DynamaxData { + bool8 playerSelect; + bool8 toDynamax[MAX_BATTLERS_COUNT]; + bool8 alreadyDynamaxed[NUM_BATTLE_SIDES]; + bool8 dynamaxed[MAX_BATTLERS_COUNT]; u8 dynamaxTurns[MAX_BATTLERS_COUNT]; u8 usingMaxMove[MAX_BATTLERS_COUNT]; u8 activeSplit; diff --git a/include/battle_controllers.h b/include/battle_controllers.h index e1ab98b0c7..2025f26e3d 100644 --- a/include/battle_controllers.h +++ b/include/battle_controllers.h @@ -99,6 +99,7 @@ enum { // Special return values in gBattleBufferB from Battle Controller functions. #define RET_VALUE_LEVELED_UP 11 #define RET_MEGA_EVOLUTION 0x80 +#define RET_DYNAMAX 0x40 struct UnusedControllerStruct { diff --git a/include/battle_dynamax.h b/include/battle_dynamax.h index 1996dc4c5c..a26b5ac579 100644 --- a/include/battle_dynamax.h +++ b/include/battle_dynamax.h @@ -1,6 +1,8 @@ #ifndef GUARD_BATTLE_DYNAMAX_H #define GUARD_BATTLE_DYNAMAX_H +#define DYNAMAX_TURNS 3 + enum MaxMoveEffect { MAX_EFFECT_NONE, @@ -55,6 +57,9 @@ enum MaxMoveEffect }; bool8 IsDynamaxed(u16 battlerId); +bool8 CanDynamax(u16 battlerId); +void PrepareBattlerForDynamax(u16 battlerId); +void UndoDynamax(u16 battlerId); bool8 ShouldUseMaxMove(u16 battlerId, u16 baseMove); u16 GetMaxMove(u16 battlerId, u16 baseMove); u8 GetMaxMovePower(u16 move); diff --git a/include/battle_scripts.h b/include/battle_scripts.h index 4606b0649a..ac79d1304c 100644 --- a/include/battle_scripts.h +++ b/include/battle_scripts.h @@ -486,4 +486,8 @@ extern const u8 BattleScript_EffectHealOneSixthAllies[]; extern const u8 BattleScript_EffectCureStatusAllies[]; extern const u8 BattleScript_EffectRecycleBerriesAllies[]; +// dynamax and max raids +extern const u8 BattleScript_DynamaxBegins[]; +extern const u8 BattleScript_DynamaxEnds[]; + #endif // GUARD_BATTLE_SCRIPTS_H \ No newline at end of file diff --git a/include/constants/battle_anim.h b/include/constants/battle_anim.h index dba22fac26..fc4623704d 100644 --- a/include/constants/battle_anim.h +++ b/include/constants/battle_anim.h @@ -544,7 +544,8 @@ #define B_ANIM_SHELL_TRAP_SETUP 34 #define B_ANIM_ZMOVE_ACTIVATE 35 // Using Z Moves #define B_ANIM_AFFECTION_HANGED_ON 36 -#define B_ANIM_MAX_SET_WEATHER 37 +#define B_ANIM_DYNAMAX_GROWTH 37 +#define B_ANIM_MAX_SET_WEATHER 38 // special animations table (gBattleAnims_Special) #define B_ANIM_LVL_UP 0 diff --git a/include/constants/battle_script_commands.h b/include/constants/battle_script_commands.h index c17c440d02..4dfe54f1df 100644 --- a/include/constants/battle_script_commands.h +++ b/include/constants/battle_script_commands.h @@ -267,6 +267,7 @@ #define VARIOUS_TRY_SET_STATUS2 175 #define VARIOUS_TRY_HEAL_SIXTH_HP 176 #define VARIOUS_TRY_RECYCLE_BERRY 177 +#define VARIOUS_APPLY_DYNAMAX_HP_MULTIPLIER 178 // Cmd_manipulatedamage #define DMG_CHANGE_SIGN 0 diff --git a/sound/cry_tables.inc b/sound/cry_tables.inc index 7714cd00ec..25645bcd06 100644 --- a/sound/cry_tables.inc +++ b/sound/cry_tables.inc @@ -4188,3 +4188,4 @@ gCryTable_Reverse:: cry_reverse Cry_Unown cry_reverse Cry_Unown .endif +@ TODO: Gigantamax Cries diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c index 75581bd761..6619eaff77 100644 --- a/src/battle_controller_player.c +++ b/src/battle_controller_player.c @@ -379,6 +379,8 @@ static void HandleInputChooseTarget(void) gSprites[gBattlerSpriteIds[gMultiUsePlayerCursor]].callback = SpriteCB_HideAsMoveTarget; if (gBattleStruct->mega.playerSelect) BtlController_EmitTwoReturnValues(BUFFER_B, 10, gMoveSelectionCursor[gActiveBattler] | RET_MEGA_EVOLUTION | (gMultiUsePlayerCursor << 8)); + else if (gBattleStruct->dynamax.playerSelect) + BtlController_EmitTwoReturnValues(BUFFER_B, 10, gMoveSelectionCursor[gActiveBattler] | RET_DYNAMAX | (gMultiUsePlayerCursor << 8)); else BtlController_EmitTwoReturnValues(BUFFER_B, 10, gMoveSelectionCursor[gActiveBattler] | (gMultiUsePlayerCursor << 8)); EndBounceEffect(gMultiUsePlayerCursor, BOUNCE_HEALTHBOX); @@ -537,6 +539,8 @@ static void HandleInputShowEntireFieldTargets(void) HideAllTargets(); if (gBattleStruct->mega.playerSelect) BtlController_EmitTwoReturnValues(BUFFER_B, 10, gMoveSelectionCursor[gActiveBattler] | RET_MEGA_EVOLUTION | (gMultiUsePlayerCursor << 8)); + else if (gBattleStruct->dynamax.playerSelect) + BtlController_EmitTwoReturnValues(BUFFER_B, 10, gMoveSelectionCursor[gActiveBattler] | RET_DYNAMAX | (gMultiUsePlayerCursor << 8)); else BtlController_EmitTwoReturnValues(BUFFER_B, 10, gMoveSelectionCursor[gActiveBattler] | (gMultiUsePlayerCursor << 8)); HideMegaTriggerSprite(); @@ -565,6 +569,8 @@ static void HandleInputShowTargets(void) HideShownTargets(); if (gBattleStruct->mega.playerSelect) BtlController_EmitTwoReturnValues(BUFFER_B, 10, gMoveSelectionCursor[gActiveBattler] | RET_MEGA_EVOLUTION | (gMultiUsePlayerCursor << 8)); + else if (gBattleStruct->dynamax.playerSelect) + BtlController_EmitTwoReturnValues(BUFFER_B, 10, gMoveSelectionCursor[gActiveBattler] | RET_DYNAMAX | (gMultiUsePlayerCursor << 8)); else BtlController_EmitTwoReturnValues(BUFFER_B, 10, gMoveSelectionCursor[gActiveBattler] | (gMultiUsePlayerCursor << 8)); HideTriggerSprites(); @@ -680,6 +686,8 @@ static void HandleInputChooseMove(void) default: if (gBattleStruct->mega.playerSelect) BtlController_EmitTwoReturnValues(BUFFER_B, 10, gMoveSelectionCursor[gActiveBattler] | RET_MEGA_EVOLUTION | (gMultiUsePlayerCursor << 8)); + else if (gBattleStruct->dynamax.playerSelect) + BtlController_EmitTwoReturnValues(BUFFER_B, 10, gMoveSelectionCursor[gActiveBattler] | RET_DYNAMAX | (gMultiUsePlayerCursor << 8)); else BtlController_EmitTwoReturnValues(BUFFER_B, 10, gMoveSelectionCursor[gActiveBattler] | (gMultiUsePlayerCursor << 8)); HideTriggerSprites(); @@ -716,6 +724,7 @@ static void HandleInputChooseMove(void) else { gBattleStruct->mega.playerSelect = FALSE; + gBattleStruct->dynamax.playerSelect = FALSE; gBattleStruct->zmove.viable = FALSE; BtlController_EmitTwoReturnValues(BUFFER_B, 10, 0xFFFF); HideTriggerSprites(); @@ -810,12 +819,20 @@ static void HandleInputChooseMove(void) else ReloadMoveNames(); } + else if (CanDynamax(gActiveBattler)) + { + gBattleStruct->dynamax.playerSelect ^= 1; + MoveSelectionDisplayMoveNames(); + MoveSelectionCreateCursorAt(gMoveSelectionCursor[gActiveBattler], 0); + PlaySE(SE_SELECT); + } } } static void ReloadMoveNames(void) { gBattleStruct->mega.playerSelect = FALSE; + gBattleStruct->dynamax.playerSelect = FALSE; gBattleStruct->zmove.viewing = FALSE; MoveSelectionDestroyCursorAt(0); MoveSelectionDisplayMoveNames(); @@ -1685,7 +1702,8 @@ static void MoveSelectionDisplayMoveNames(void) for (i = 0; i < MAX_MON_MOVES; i++) { MoveSelectionDestroyCursorAt(i); - if (IsDynamaxed(gActiveBattler)) + if ((gBattleStruct->dynamax.playerSelect && CanDynamax(gActiveBattler)) + || IsDynamaxed(gActiveBattler)) StringCopy(gDisplayedStringBattle, gMoveNames[GetMaxMove(gActiveBattler, moveInfo->moves[i])]); else StringCopy(gDisplayedStringBattle, gMoveNames[moveInfo->moves[i]]); @@ -2867,6 +2885,7 @@ static void PlayerHandleChooseMove(void) InitMoveSelectionsVarsAndStrings(); gBattleStruct->mega.playerSelect = FALSE; + gBattleStruct->dynamax.playerSelect = FALSE; if (!IsMegaTriggerSpriteActive()) gBattleStruct->mega.triggerSpriteId = 0xFF; if (CanMegaEvolve(gActiveBattler)) diff --git a/src/battle_dynamax.c b/src/battle_dynamax.c index bd3d24584d..6980c532e6 100644 --- a/src/battle_dynamax.c +++ b/src/battle_dynamax.c @@ -84,20 +84,52 @@ static const struct GMaxMove sGMaxMoveTable[] = extern u8 gMaxMovePowers[MOVES_COUNT]; +// Returns whether a battler is Dynamaxed. bool8 IsDynamaxed(u16 battlerId) { - if (/*IsRaidBoss(battlerId) ||*/ gBattleStruct->dynamax.dynamaxTurns[battlerId] > 0) + u8 side = GetBattlerSide(battlerId); + if (gBattleStruct->dynamax.dynamaxed[battlerId] + /*|| IsRaidBoss(battlerId)*/) return TRUE; return FALSE; } +// Returns whether a battler can Dynamax. +bool8 CanDynamax(u16 battlerId) +{ + // TODO: Requires Dynamax Band if not in a Max Raid (as well as special flag). + if (!gBattleStruct->dynamax.alreadyDynamaxed[GetBattlerSide(battlerId)] + && !gBattleStruct->dynamax.dynamaxed[battlerId] + && !gBattleStruct->dynamax.dynamaxed[BATTLE_PARTNER(battlerId)] + && !gBattleStruct->dynamax.toDynamax[BATTLE_PARTNER(battlerId)]) + return TRUE; + return FALSE; +} + +// Sets flags used for Dynamaxing. +void PrepareBattlerForDynamax(u16 battlerId) +{ + u8 side = GetBattlerSide(battlerId); + gBattleStruct->dynamax.alreadyDynamaxed[side] = TRUE; + gBattleStruct->dynamax.dynamaxed[battlerId] = TRUE; + gBattleStruct->dynamax.dynamaxTurns[battlerId] = DYNAMAX_TURNS; +} + +void UndoDynamax(u16 battlerId) +{ + u8 side = GetBattlerSide(battlerId); + gBattleStruct->dynamax.dynamaxed[battlerId] = FALSE; + gBattleStruct->dynamax.dynamaxTurns[battlerId] = 0; // safety check for switch-in / faint + // TODO: Undo Gigantamax form change. +} + // Returns whether a move should be converted into a Max Move. bool8 ShouldUseMaxMove(u16 battlerId, u16 baseMove) { // TODO: Raids //if (IsRaidBoss(battlerId)) // return !IsRaidBossUsingRegularMove(battlerId, baseMove); - return IsDynamaxed(battlerId); + return IsDynamaxed(battlerId) || gBattleStruct->dynamax.toDynamax[battlerId]; } static u16 GetTypeBasedMaxMove(u16 battlerId, u16 type) diff --git a/src/battle_main.c b/src/battle_main.c index 15414d7221..7db1c979cc 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -3169,6 +3169,9 @@ void SwitchInClearSetData(void) // Reset G-Max Chi Strike boosts. gBattleStruct->bonusCritStages[gActiveBattler] = 0; + // Reset Dynamax flags. + UndoDynamax(gActiveBattler); + gBattleStruct->overwrittenAbilities[gActiveBattler] = ABILITY_NONE; Ai_UpdateSwitchInData(gActiveBattler); @@ -3272,6 +3275,7 @@ void FaintClearSetData(void) UndoFormChange(gBattlerPartyIndexes[gActiveBattler], GET_BATTLER_SIDE(gActiveBattler), FALSE); if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER) UndoMegaEvolution(gBattlerPartyIndexes[gActiveBattler]); + // TODO: UndoDynamax gBattleStruct->overwrittenAbilities[gActiveBattler] = ABILITY_NONE; @@ -4267,11 +4271,13 @@ static void HandleTurnActionSelectionState(void) RecordedBattle_SetBattlerAction(gActiveBattler, gBattleResources->bufferB[gActiveBattler][2]); RecordedBattle_SetBattlerAction(gActiveBattler, gBattleResources->bufferB[gActiveBattler][3]); } - *(gBattleStruct->chosenMovePositions + gActiveBattler) = gBattleResources->bufferB[gActiveBattler][2] & ~RET_MEGA_EVOLUTION; + *(gBattleStruct->chosenMovePositions + gActiveBattler) = gBattleResources->bufferB[gActiveBattler][2] & ~RET_MEGA_EVOLUTION & ~RET_DYNAMAX; gChosenMoveByBattler[gActiveBattler] = gBattleMons[gActiveBattler].moves[*(gBattleStruct->chosenMovePositions + gActiveBattler)]; *(gBattleStruct->moveTarget + gActiveBattler) = gBattleResources->bufferB[gActiveBattler][3]; if (gBattleResources->bufferB[gActiveBattler][2] & RET_MEGA_EVOLUTION) gBattleStruct->mega.toEvolve |= gBitTable[gActiveBattler]; + else if (gBattleResources->bufferB[gActiveBattler][2] & RET_DYNAMAX) + gBattleStruct->dynamax.toDynamax[gActiveBattler] = TRUE; if (ShouldUseMaxMove(gActiveBattler, gChosenMoveByBattler[gActiveBattler])) // max move check { gBattleStruct->dynamax.moveSlot[gActiveBattler] = gBattleStruct->chosenMovePositions[gActiveBattler]; @@ -4888,6 +4894,7 @@ void SpecialStatusesClear(void) memset(&gSpecialStatuses, 0, sizeof(gSpecialStatuses)); } +// TODO: Rename function to denote use for Dynamax, too. static void CheckMegaEvolutionBeforeTurn(void) { if (!(gHitMarker & HITMARKER_RUN)) @@ -4896,6 +4903,16 @@ static void CheckMegaEvolutionBeforeTurn(void) { gActiveBattler = gBattlerAttacker = gBattleStruct->mega.battlerId; gBattleStruct->mega.battlerId++; + // Dynamax Check + if (gBattleStruct->dynamax.toDynamax[gActiveBattler]) + { + gBattleStruct->dynamax.toDynamax[gActiveBattler] = FALSE; + gBattleScripting.battler = gActiveBattler; + PrepareBattlerForDynamax(gActiveBattler); + BattleScriptExecute(BattleScript_DynamaxBegins); + return; + } + // Mega Evo Check if (gBattleStruct->mega.toEvolve & gBitTable[gActiveBattler] && !(gProtectStructs[gActiveBattler].noValidMoves)) { @@ -5265,6 +5282,7 @@ static void HandleEndTurn_FinishBattle(void) UndoMegaEvolution(i); UndoFormChange(i, B_SIDE_PLAYER, FALSE); DoBurmyFormChange(i); + // TODO: UndoDynamax(i) } #if B_RECALCULATE_STATS >= GEN_5 // Recalculate the stats of every party member before the end diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 6144be8c1b..ecf96f8150 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -11348,6 +11348,23 @@ static void Cmd_various(void) } return; } + case VARIOUS_APPLY_DYNAMAX_HP_MULTIPLIER: + { + VARIOUS_ARGS(); + + if (gBattleMons[gBattleScripting.battler].species != SPECIES_SHEDINJA) + { + u16 multiplier = UQ_4_12(2.0); // placeholder; TODO: Dynamax level + + gBattleMons[gBattleScripting.battler].hp = UQ_4_12_TO_INT((gBattleMons[gBattleScripting.battler].hp * multiplier) + UQ_4_12_ROUND); + gBattleMons[gBattleScripting.battler].maxHP = UQ_4_12_TO_INT((gBattleMons[gBattleScripting.battler].maxHP * multiplier) + UQ_4_12_ROUND); + + BtlController_EmitSetMonData(BUFFER_A, REQUEST_MAX_HP_BATTLE, 0, sizeof(gBattleMons[gBattleScripting.battler].maxHP), &gBattleMons[gBattleScripting.battler].maxHP); + BtlController_EmitSetMonData(BUFFER_A, REQUEST_HP_BATTLE, 0, sizeof(gBattleMons[gBattleScripting.battler].hp), &gBattleMons[gBattleScripting.battler].hp); + MarkBattlerForControllerExec(gBattleScripting.battler); + } + break; + } } // End of switch (cmd->id) gBattlescriptCurrInstr = cmd->nextInstr; diff --git a/src/battle_util.c b/src/battle_util.c index 1ab09ed764..626c1be05e 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -1746,7 +1746,7 @@ static bool32 IsBelchPreventingMove(u32 battler, u32 move) u8 TrySetCantSelectMoveBattleScript(void) { u32 limitations = 0; - u8 moveId = gBattleResources->bufferB[gActiveBattler][2] & ~RET_MEGA_EVOLUTION; + u8 moveId = gBattleResources->bufferB[gActiveBattler][2] & ~RET_MEGA_EVOLUTION & ~RET_DYNAMAX; u32 move = gBattleMons[gActiveBattler].moves[moveId]; u32 holdEffect = GetBattlerHoldEffect(gActiveBattler, TRUE); u16 *choicedMove = &gBattleStruct->choicedMove[gActiveBattler]; @@ -2674,7 +2674,8 @@ enum ENDTURN_SLOW_START, ENDTURN_PLASMA_FISTS, ENDTURN_CUD_CHEW, - ENDTURN_TORMENT, + ENDTURN_TORMENT, // supposedly this goes after Taunt, before Encore, but Encore is first right now? + ENDTURN_DYNAMAX, ENDTURN_BATTLER_COUNT }; @@ -3232,6 +3233,17 @@ u8 DoBattlerEndTurnEffects(void) } gBattleStruct->turnEffectsTracker++; break; + case ENDTURN_DYNAMAX: + if (IsDynamaxed(gActiveBattler) + && --gBattleStruct->dynamax.dynamaxTurns[gActiveBattler] == 0) + { + gBattleScripting.battler = gActiveBattler; + UndoDynamax(gActiveBattler); + BattleScriptExecute(BattleScript_DynamaxEnds); + effect++; + } + gBattleStruct->turnEffectsTracker++; + break; case ENDTURN_BATTLER_COUNT: // done gBattleStruct->turnEffectsTracker = 0; gBattleStruct->turnEffectsBattlerId++; From 06bf934b023ee4b1ad07a1e6e35eee1d423bde4b Mon Sep 17 00:00:00 2001 From: AgustinGDLV Date: Fri, 10 Mar 2023 20:38:17 -0800 Subject: [PATCH 030/162] Dynamaxed pokemon now have increased HP --- asm/macros/battle_script.inc | 4 ++-- data/battle_scripts_1.s | 4 +++- include/battle_dynamax.h | 1 + include/constants/battle_script_commands.h | 2 +- src/battle_dynamax.c | 16 +++++++++++++++ src/battle_script_commands.c | 23 ++++++++++------------ 6 files changed, 33 insertions(+), 17 deletions(-) diff --git a/asm/macros/battle_script.inc b/asm/macros/battle_script.inc index 89d8dee20e..9e7b669cfe 100644 --- a/asm/macros/battle_script.inc +++ b/asm/macros/battle_script.inc @@ -2247,8 +2247,8 @@ .4byte \ptr .endm - .macro applydynamaxhpmultiplier - various 0, VARIOUS_APPLY_DYNAMAX_HP_MULTIPLIER + .macro updatedynamax + various 0, VARIOUS_UPDATE_DYNAMAX .endm @ Tries to increase or decrease a battler's stat's stat stage by a specified amount. If impossible, jumps to \script. diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 3aae553ef7..dfa821a333 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -6684,6 +6684,7 @@ BattleScript_PursuitSwitchDmgLoop:: BattleScript_DoSwitchOut:: decrementmultihit BattleScript_PursuitSwitchDmgLoop switchoutabilities BS_ATTACKER + updatedynamax waitstate returnatktoball waitstate @@ -10595,7 +10596,7 @@ BattleScript_DynamaxBegins:: playanimation BS_SCRIPTING, B_ANIM_SLIDE_OFFSCREEN waitanimation returntoball BS_SCRIPTING - @applydynamaxhpmultiplier + updatedynamax switchinanim BS_SCRIPTING, TRUE playanimation BS_SCRIPTING, B_ANIM_DYNAMAX_GROWTH waitanimation @@ -10603,6 +10604,7 @@ BattleScript_DynamaxBegins:: BattleScript_DynamaxEnds:: printstring STRINGID_EMPTYSTRING3 + updatedynamax playanimation BS_SCRIPTING, B_ANIM_FORM_CHANGE waitanimation end2 diff --git a/include/battle_dynamax.h b/include/battle_dynamax.h index a26b5ac579..29857d9c40 100644 --- a/include/battle_dynamax.h +++ b/include/battle_dynamax.h @@ -58,6 +58,7 @@ enum MaxMoveEffect bool8 IsDynamaxed(u16 battlerId); bool8 CanDynamax(u16 battlerId); +void ApplyDynamaxHPMultiplier(u16 battlerId, struct Pokemon* mon); void PrepareBattlerForDynamax(u16 battlerId); void UndoDynamax(u16 battlerId); bool8 ShouldUseMaxMove(u16 battlerId, u16 baseMove); diff --git a/include/constants/battle_script_commands.h b/include/constants/battle_script_commands.h index 4dfe54f1df..507702cfaa 100644 --- a/include/constants/battle_script_commands.h +++ b/include/constants/battle_script_commands.h @@ -267,7 +267,7 @@ #define VARIOUS_TRY_SET_STATUS2 175 #define VARIOUS_TRY_HEAL_SIXTH_HP 176 #define VARIOUS_TRY_RECYCLE_BERRY 177 -#define VARIOUS_APPLY_DYNAMAX_HP_MULTIPLIER 178 +#define VARIOUS_UPDATE_DYNAMAX 178 // Cmd_manipulatedamage #define DMG_CHANGE_SIGN 0 diff --git a/src/battle_dynamax.c b/src/battle_dynamax.c index 6980c532e6..10f4fd32d6 100644 --- a/src/battle_dynamax.c +++ b/src/battle_dynamax.c @@ -106,6 +106,21 @@ bool8 CanDynamax(u16 battlerId) return FALSE; } +// Applies the HP Multiplier for Dynamaxed Pokemon and Raid Bosses. +void ApplyDynamaxHPMultiplier(u16 battlerId, struct Pokemon* mon) +{ + if (gBattleMons[battlerId].species == SPECIES_SHEDINJA) + return; + else + { + u16 mult = UQ_4_12(1.5); // placeholder + u16 hp = UQ_4_12_TO_INT((GetMonData(mon, MON_DATA_HP, NULL) * mult) + UQ_4_12_ROUND); + u16 maxHP = UQ_4_12_TO_INT((GetMonData(mon, MON_DATA_HP, NULL) * mult) + UQ_4_12_ROUND); + SetMonData(mon, MON_DATA_HP, &hp); + SetMonData(mon, MON_DATA_MAX_HP, &maxHP); + } +} + // Sets flags used for Dynamaxing. void PrepareBattlerForDynamax(u16 battlerId) { @@ -115,6 +130,7 @@ void PrepareBattlerForDynamax(u16 battlerId) gBattleStruct->dynamax.dynamaxTurns[battlerId] = DYNAMAX_TURNS; } +// Sets flags needed for undoing Dynamax. void UndoDynamax(u16 battlerId) { u8 side = GetBattlerSide(battlerId); diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index ecf96f8150..896dbf5a8d 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -8482,6 +8482,8 @@ u32 IsAbilityStatusProtected(u32 battler) static void RecalcBattlerStats(u32 battler, struct Pokemon *mon) { CalculateMonStats(mon); + if (IsDynamaxed(battler) && gChosenActionByBattler[battler] != B_ACTION_SWITCH) + ApplyDynamaxHPMultiplier(battler, mon); gBattleMons[battler].level = GetMonData(mon, MON_DATA_LEVEL); gBattleMons[battler].hp = GetMonData(mon, MON_DATA_HP); gBattleMons[battler].maxHP = GetMonData(mon, MON_DATA_MAX_HP); @@ -11348,21 +11350,16 @@ static void Cmd_various(void) } return; } - case VARIOUS_APPLY_DYNAMAX_HP_MULTIPLIER: + case VARIOUS_UPDATE_DYNAMAX: { VARIOUS_ARGS(); - - if (gBattleMons[gBattleScripting.battler].species != SPECIES_SHEDINJA) - { - u16 multiplier = UQ_4_12(2.0); // placeholder; TODO: Dynamax level - - gBattleMons[gBattleScripting.battler].hp = UQ_4_12_TO_INT((gBattleMons[gBattleScripting.battler].hp * multiplier) + UQ_4_12_ROUND); - gBattleMons[gBattleScripting.battler].maxHP = UQ_4_12_TO_INT((gBattleMons[gBattleScripting.battler].maxHP * multiplier) + UQ_4_12_ROUND); - - BtlController_EmitSetMonData(BUFFER_A, REQUEST_MAX_HP_BATTLE, 0, sizeof(gBattleMons[gBattleScripting.battler].maxHP), &gBattleMons[gBattleScripting.battler].maxHP); - BtlController_EmitSetMonData(BUFFER_A, REQUEST_HP_BATTLE, 0, sizeof(gBattleMons[gBattleScripting.battler].hp), &gBattleMons[gBattleScripting.battler].hp); - MarkBattlerForControllerExec(gBattleScripting.battler); - } + u16 battler = gBattleScripting.battler; + if (GetBattlerSide(battler) == B_SIDE_PLAYER) + mon = &gPlayerParty[gBattlerPartyIndexes[battler]]; + else + mon = &gEnemyParty[gBattlerPartyIndexes[battler]]; + RecalcBattlerStats(battler, mon); + UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], mon, HP_BOTH); break; } } // End of switch (cmd->id) From 06151cf0511c2bf24c6d90a000e4f6858dafd5ff Mon Sep 17 00:00:00 2001 From: AgustinGDLV Date: Fri, 10 Mar 2023 21:35:19 -0800 Subject: [PATCH 031/162] Max Guard actually protects / Max Moves bypass protect --- src/battle_script_commands.c | 3 ++- src/battle_util.c | 13 +++++++------ 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index af018f4066..268dd2c9d6 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -1601,7 +1601,8 @@ static void Cmd_attackcanceler(void) } // Z-moves and Max Moves bypass protection, but deal reduced damage (factored in CalcFinalDmg) - if (gBattleStruct->zmove.active && IS_BATTLER_PROTECTED(gBattlerTarget)) + if ((gBattleStruct->zmove.active || IsMaxMove(gCurrentMove)) + && IS_BATTLER_PROTECTED(gBattlerTarget)) { BattleScriptPush(cmd->nextInstr); gBattlescriptCurrInstr = BattleScript_CouldntFullyProtect; diff --git a/src/battle_util.c b/src/battle_util.c index 01e9399c97..da706afa7d 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -8312,13 +8312,11 @@ bool32 IsBattlerProtected(u8 battlerId, u16 move) } // Z-Moves and Max Moves bypass protection (except Max Guard for Max Moves). - if (IsMaxMove(move) - && !(gProtectStructs[battlerId].maxGuarded - && gBattleMoves[move].argument != MAX_EFFECT_BYPASS_PROTECT) + if ((IsMaxMove(move) + && !(gProtectStructs[battlerId].maxGuarded + && gBattleMoves[move].argument != MAX_EFFECT_BYPASS_PROTECT)) || gBattleStruct->zmove.active) - { return FALSE; - } if (move == MOVE_TEATIME) return FALSE; @@ -8345,6 +8343,8 @@ bool32 IsBattlerProtected(u8 battlerId, u16 move) return TRUE; else if (gProtectStructs[battlerId].kingsShielded && gBattleMoves[move].power != 0) return TRUE; + else if (gProtectStructs[battlerId].maxGuarded) + return TRUE; else if (gSideStatuses[GetBattlerSide(battlerId)] & SIDE_STATUS_QUICK_GUARD && GetChosenMovePriority(gBattlerAttacker) > 0) return TRUE; @@ -9689,7 +9689,8 @@ static u32 CalcFinalDmg(u32 dmg, u16 move, u8 battlerAtk, u8 battlerDef, u8 move } // Z-Moves and Max Moves bypass Protect and do 25% of their original damage - if (gBattleStruct->zmove.active && IS_BATTLER_PROTECTED(battlerDef)) + if ((gBattleStruct->zmove.active || IsMaxMove(move)) + && IS_BATTLER_PROTECTED(battlerDef)) { MulModifier(&finalModifier, UQ_4_12(0.25)); } From 317b52f3f62fe3c0c7d31c0f4ab5645c20e845bc Mon Sep 17 00:00:00 2001 From: AgustinGDLV Date: Fri, 10 Mar 2023 22:05:23 -0800 Subject: [PATCH 032/162] added Dynamax trigger sprite --- graphics/battle_interface/dynamax_trigger.png | Bin 0 -> 6864 bytes include/battle.h | 1 + include/battle_dynamax.h | 5 + include/battle_interface.h | 5 + src/battle_controller_player.c | 7 +- src/battle_dynamax.c | 185 ++++++++++++++++++ src/battle_interface.c | 1 + 7 files changed, 203 insertions(+), 1 deletion(-) create mode 100644 graphics/battle_interface/dynamax_trigger.png diff --git a/graphics/battle_interface/dynamax_trigger.png b/graphics/battle_interface/dynamax_trigger.png new file mode 100644 index 0000000000000000000000000000000000000000..18f3a84cff77a8022df1117fb25f71bc37d9a713 GIT binary patch literal 6864 zcmeHKc{r47*dKd#iIh0TAWLR743jN8$1n^f3A4PTVTQ?!>_?V5rH}~OvQ|`DXtQLG zLMo!NmAw+76jI+yopb8?&Ohh6zVE;0y54u5_kQmCci;E#x$ozCo})wuYjF{I5eNh# zZfj%V4E{sG$CRHBd>_r*mji)_*oC>cah=J*Pze6l{wnA}*DyZpjV z4{du-*Qae;k6YwO-qU5@iLPfM#+_{@>7Q0!RUf@9noEkFVMnEX?*EFP85F$bl~DMe zoQKI3U70_$)c&F^JvvuSU~lqooj!R>Vltm=UgYvT7jGMPAEmB~9GF>*FX}fbRJt1B zxqz%aG}X~$SidamaV26&YKAxFOXvo9q0^3XO+#I9i$VCiFhLdN+P0LHD_Zlir{=`9 z0<67Eg%@*i*`Ko8KQFBG%_AZWzKZR0h&O3hxZBr$=D{*+xtHx372Zi%@WfSa)Y0s4 zBwi*ySdYWlh)rB=-}C8rg|^ULgUxk=JfmF_^eKg16VX7`YW)(T zcndun>DO^DLJ(@%p5u006zW|rdJphv4&R?>xbYoB%tb?fD7vnARQUTTapo>#eicb3a8jNO;9_+pr@09{|I!Rlv z>0Eq@NU>Fu(`-(4cmJRZO)MGLy58-+hx+(#Yr?rLxQd=gNuz~sPP%8DM!tAX^r!Qti|r%4B<(?5Dy zchnH)g*0oN28kn1$-PnzW2%~T=y)ODekXot#jbYdesoyjLrwaPuu_=QC_+=eOOpcK zls?a>!c7e(FUMsaovm%?s6C-0GGG#&?KF93$MmlLKVqME`|B`KLdtM+LaBJ_kkzM1 z#+@X>ADzmw%Uw4YXYY;$yOSzgFKR<*_p`Hvg``if*|7ew8rysxpLUTe{8Rcde8CosHM0 z$69#VirG8GO0_%sF4hv-IDjiUAEsn-(tOqN6*@Z=X`zO6)77J-cvn zo-23_FU-E8P^(A_iP=vMR#(sH=@sja6V$If}~Y!j(Ecn`XeynXbX*xbDwrg=+Wf;@0Kl^#pw97?$$y}N5Sa-e*@eCPG$Oxr!4oD=K5@+v)^(W4Pax^K6SMih7}p4#%eUDf;b z6(54Fj>`P8$>&yDaj?~IPTnP*#e?jQd?i;C9Xn+nS4!*B$J>CEwpu#e&sG9$piteY z^Ew*u@ivodE)7Ul5;#SZzKQ*rel3j#^Xf%?%39`k)NLH|??DsFT~f&Bpz)P9cCK-8 z($>n7e1l?1+LKzOOKMIIrP?D8p?&EUE;jU34{q`{D-9XZ**ll+GyC#Ui>V*Ac!s;hMYaULht=X%QbPOEZP0b(iat7BK!*pnuR8ywg4MMj{cJ}yBR1^_ayRpk;`*skmRB|7+l z)a=y!CAOyfp^1>kP|a$xbs&fM(z+_mpOtv+^iU8~@e*k+^U1lEroGqqAS~Z@ue*mV z?YzEd$F6@rF2#*AHkUdQB)#E{grer16~C$K)FSDJ#|i?^E}6LZE+~#H1X+e~oBRxi z1va}@ryh?NoaL*8w_mw_exwo>cz9;lu*Aomy6ZycSb66&o^070{3-1+<_p-4Rg#~T z#Nv`;_-vE6>(ifVxW7maYl-FMSR3c7H{}3O6-UN!-oAXrqo#KQFL9->Mmr(=C(5mR)BbVo;v! zK(!~`EA@GC={xFkN4=(m3+CuV2f5IX8V%zmJ_C(qvJ}gR)@0YqODxTD=eGvq!31^R zJ)93&_^)n*N0|9Xr`#r3IYR@!Z{0^ zv^b>cgE;HovdR}U{lpRZE4O`O^XT2M^R*g&X@VFL#Jh#h6|c-rGUgMkqC?5jHzHUb zk9^8|9&1zVqQuxFwbL8tFHj}b(6CDfPdtxTcvOa+n2a=TG#|@KD_g%gbX46w=r?ng zbkVTa#%h5mF@|gJ0}&CReCuJ#*3R*L(z3>a4dN*hUMxn1$*J%l3nOWh2P@7Nd&p|r zpK=CvN)5}5Ik^?2@7U@+mq4xM=C$NI?_^k(5c&U*7Vs@;F#P=9RY~Tp0sp?@+gidw zJuK5Klzg}Xuezde-`JH`OR|CN7-cWQh+xCiomYs_;7z|Xui$h0Kh!{oBWWM*5Tg@XxcBwUb!Z$VY{!Yo&GKAtlOkCDQsZ+E{&Kwf(>z|L<&(0juimM~wY;Cr+rrM8c;uqx zk)q}9H{f889}G>lXdiFC^gOO6KQ7&tX3x2iSW+ON!NIu(Ns3L5KBKKnCLhl%!X-5w zsFrZ%wVU#7(dAY7BD;50cdiJpgob^Jt5BC3IG$ z7f2t{ms8vrLVwy?G=8+PiE=e|OoFavu9mwsQKQsq(X0nJG{4d3x-<1s_?+C~x#xD7 zZ?M)m@1L(TOWm0uvqAHDQs}2Y6{AjiU~b>{9(6O7)lzMd{329ar7KEG z@psk`&vVb@|cF0 zJ66(c5=YNz%81l0Z;m8MY^oLr>+K(OU)GO=V7i~oiL=@3j>~F>4~z^L<vbmnuM^)R6l?Vr2sw*e{4+5|NE*ToaV)}FNAx5w@ zTs$~l6(eELH5IO(5zLK1gqjBg0#Gahi$K9GLl_4zFk=y@VIYl;ceb$l4gr1{!S->v zY&;Sf92|@Y)})}Y$O_iLb6!MA1yds%L5?D_kjM@g5v_- z&XCRkCm<-03RoTh{JAPWLeQvx+p~iLnQQ6Ls7Qbbus~G~=oS5wOKV#K@o$S&3VawW z_L>z)_D`Bz2K^theu`~%W-Xl`0|Cwd#{EhAuiV#^K`jCSZxKKZS`E+E!U(qNA5ROQ zGHCd{JjsXUsQh$K5_2+QO{#0NU3IsA#sr4sCcV@Ko%KXP6mtY10dP{K5G-J zgyVM*ZH-_U1nM6NkxAy#K?AS{82+??V9q~NE({hx;*wYSMCSA>Caac4)7p?Py z{Z1f|1J>dyDjJ2rVAsr77X}Ze15!&~tyBcuY&9t8s^waN zLk+(ziw%PVYJ{%V{P(IS0sFsweQN?HV{HlwT`OEXnflEMhkO8_tvLeizD-g0k^OxD zu*1KX)L(MOzbqG>ib4V4+QKP1dIoSTmWG2HVCYylO@{{P=%Dn_6bj~NbWQ-B8%z!a zcKCpqg4uv2w3ZE2<2#v}KkEnY16G+rf&GorgQIaS7!)3h#p_^U$nVJ_S9|)eYz>kB zix0y!g&#Hn(C(WI++4uD3iZuB`6p8n?% z61B1O-q){R*X~LG{?b;7O#x?w**3d55Qyl8)rSX?nY{@V3UO@-mO|r#(tO&m^u&u9 zpy-yZ#SRz!wzntI5)CLZOVSwcrm88InuDhnAi{?f<11D6O-J$fi@c7D7P$MR!!hjx z+=%)`whj7BBV&T!tuB{Tw|#mxjaQ*1TGovX7;YC3JD$9sXXC-WOxe~IOy#Zq69Sv2 zU);rI*x8CQz3LvQJp!8T(O0LchN+(ORZ889?UEwt&(GnrGrzpE*&$`}x=FG$an?Qb zL#*$tO2~)Uh2fT-3rg7Km$l1}#{M9lzeYKG;`Ie3Qf|;4<;VRqFuPS2Y%Luu%FMiD F{s&w^Bc=cV literal 0 HcmV?d00001 diff --git a/include/battle.h b/include/battle.h index 91aa7b3f24..f2b9fb04a5 100644 --- a/include/battle.h +++ b/include/battle.h @@ -526,6 +526,7 @@ struct ZMoveData struct DynamaxData { bool8 playerSelect; + u8 triggerSpriteId; bool8 toDynamax[MAX_BATTLERS_COUNT]; bool8 alreadyDynamaxed[NUM_BATTLE_SIDES]; bool8 dynamaxed[MAX_BATTLERS_COUNT]; diff --git a/include/battle_dynamax.h b/include/battle_dynamax.h index 29857d9c40..2fcb0ff402 100644 --- a/include/battle_dynamax.h +++ b/include/battle_dynamax.h @@ -69,5 +69,10 @@ const u8 *GetMaxMoveName(u16 move); void ChooseDamageNonTypesString(u8 type); u32 GetMaxMoveStatusEffect(u16 move); u16 SetMaxMoveEffect(u16 move); +void ChangeDynamaxTriggerSprite(u8 spriteId, u8 animId); +void CreateDynamaxTriggerSprite(u8, bool8); +void HideDynamaxTriggerSprite(void); +bool32 IsDynamaxTriggerSpriteActive(void); +void DestroyDynamaxTriggerSprite(void); #endif diff --git a/include/battle_interface.h b/include/battle_interface.h index e0f30b3097..f222c56e9d 100644 --- a/include/battle_interface.h +++ b/include/battle_interface.h @@ -53,11 +53,16 @@ enum #define TAG_ALPHA_INDICATOR_TILE 0xD779 #define TAG_OMEGA_INDICATOR_TILE 0xD77A #define TAG_ZMOVE_TRIGGER_TILE 0xD77B +#define TAG_DYNAMAX_TRIGGER_TILE 0xD77C +#define TAG_DYNAMAX_INDICATOR_TILE 0xD77D #define TAG_MEGA_TRIGGER_PAL 0xD777 #define TAG_MEGA_INDICATOR_PAL 0xD778 #define TAG_ALPHA_OMEGA_INDICATOR_PAL 0xD779 // Alpha and Omega indicators use the same palette as each of them only uses 4 different colors. #define TAG_ZMOVE_TRIGGER_PAL 0xD77B +#define TAG_DYNAMAX_TRIGGER_PAL 0xD77C +#define TAG_DYNAMAX_INDICATOR_PAL 0xD77D + enum { diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c index 6619eaff77..2824944896 100644 --- a/src/battle_controller_player.c +++ b/src/battle_controller_player.c @@ -543,7 +543,7 @@ static void HandleInputShowEntireFieldTargets(void) BtlController_EmitTwoReturnValues(BUFFER_B, 10, gMoveSelectionCursor[gActiveBattler] | RET_DYNAMAX | (gMultiUsePlayerCursor << 8)); else BtlController_EmitTwoReturnValues(BUFFER_B, 10, gMoveSelectionCursor[gActiveBattler] | (gMultiUsePlayerCursor << 8)); - HideMegaTriggerSprite(); + HideTriggerSprites(); PlayerBufferExecCompleted(); } else if (JOY_NEW(B_BUTTON) || gPlayerDpadHoldFrames > 59) @@ -824,6 +824,7 @@ static void HandleInputChooseMove(void) gBattleStruct->dynamax.playerSelect ^= 1; MoveSelectionDisplayMoveNames(); MoveSelectionCreateCursorAt(gMoveSelectionCursor[gActiveBattler], 0); + ChangeDynamaxTriggerSprite(gBattleStruct->dynamax.triggerSpriteId, gBattleStruct->dynamax.playerSelect); PlaySE(SE_SELECT); } } @@ -2892,6 +2893,10 @@ static void PlayerHandleChooseMove(void) CreateMegaTriggerSprite(gActiveBattler, 0); if (!IsZMoveTriggerSpriteActive()) gBattleStruct->zmove.triggerSpriteId = 0xFF; + if (!IsDynamaxTriggerSpriteActive()) + gBattleStruct->dynamax.triggerSpriteId = 0xFF; + if (CanDynamax(gActiveBattler)) // TODO: handle Dynamax + Mega + Z-Move + CreateDynamaxTriggerSprite(gActiveBattler, 0); GetUsableZMoves(gActiveBattler, moveInfo->moves); gBattleStruct->zmove.viable = IsZMoveUsable(gActiveBattler, gMoveSelectionCursor[gActiveBattler]); diff --git a/src/battle_dynamax.c b/src/battle_dynamax.c index 10f4fd32d6..589e8fd983 100644 --- a/src/battle_dynamax.c +++ b/src/battle_dynamax.c @@ -2,11 +2,14 @@ #include "battle.h" #include "battle_anim.h" #include "battle_controllers.h" +#include "battle_interface.h" #include "battle_scripts.h" #include "battle_script_commands.h" #include "data.h" +#include "graphics.h" #include "pokemon.h" #include "random.h" +#include "sprite.h" #include "string_util.h" #include "util.h" #include "constants/abilities.h" @@ -614,3 +617,185 @@ u16 SetMaxMoveEffect(u16 move) } return effect; } + +// Sprite Data +static const u8 ALIGNED(4) sDynamaxTriggerGfx[] = INCBIN_U8("graphics/battle_interface/dynamax_trigger.4bpp"); +static const u16 sDynamaxTriggerPal[] = INCBIN_U16("graphics/battle_interface/dynamax_trigger.gbapal"); + +static const struct SpriteSheet sSpriteSheet_DynamaxTrigger = +{ + sDynamaxTriggerGfx, sizeof(sDynamaxTriggerGfx), TAG_DYNAMAX_TRIGGER_TILE +}; +static const struct SpritePalette sSpritePalette_DynamaxTrigger = +{ + sDynamaxTriggerPal, TAG_DYNAMAX_TRIGGER_PAL +}; + +static const struct OamData sOamData_DynamaxTrigger = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = ST_OAM_SQUARE, + .x = 0, + .matrixNum = 0, + .size = 2, + .tileNum = 0, + .priority = 1, + .paletteNum = 0, + .affineParam = 0, +}; + +static const union AnimCmd sSpriteAnim_DynamaxTriggerOff[] = +{ + ANIMCMD_FRAME(0, 0), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_DynamaxTriggerOn[] = +{ + ANIMCMD_FRAME(16, 0), + ANIMCMD_END +}; + +static const union AnimCmd *const sSpriteAnimTable_DynamaxTrigger[] = +{ + sSpriteAnim_DynamaxTriggerOff, + sSpriteAnim_DynamaxTriggerOn, +}; + +static void SpriteCb_DynamaxTrigger(struct Sprite *sprite); +static const struct SpriteTemplate sSpriteTemplate_DynamaxTrigger = +{ + .tileTag = TAG_DYNAMAX_TRIGGER_TILE, + .paletteTag = TAG_DYNAMAX_TRIGGER_PAL, + .oam = &sOamData_DynamaxTrigger, + .anims = sSpriteAnimTable_DynamaxTrigger, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCb_DynamaxTrigger +}; + +// Dynamax Evolution Trigger icon functions. +void ChangeDynamaxTriggerSprite(u8 spriteId, u8 animId) +{ + StartSpriteAnim(&gSprites[spriteId], animId); +} + +#define SINGLES_DYNAMAX_TRIGGER_POS_X_OPTIMAL (30) +#define SINGLES_DYNAMAX_TRIGGER_POS_X_PRIORITY (31) +#define SINGLES_DYNAMAX_TRIGGER_POS_X_SLIDE (15) +#define SINGLES_DYNAMAX_TRIGGER_POS_Y_DIFF (-11) + +#define DOUBLES_DYNAMAX_TRIGGER_POS_X_OPTIMAL (30) +#define DOUBLES_DYNAMAX_TRIGGER_POS_X_PRIORITY (31) +#define DOUBLES_DYNAMAX_TRIGGER_POS_X_SLIDE (15) +#define DOUBLES_DYNAMAX_TRIGGER_POS_Y_DIFF (-4) + +#define tBattler data[0] +#define tHide data[1] + +void CreateDynamaxTriggerSprite(u8 battlerId, u8 palId) +{ + LoadSpritePalette(&sSpritePalette_DynamaxTrigger); + if (GetSpriteTileStartByTag(TAG_DYNAMAX_TRIGGER_TILE) == 0xFFFF) + LoadSpriteSheet(&sSpriteSheet_DynamaxTrigger); + if (gBattleStruct->dynamax.triggerSpriteId == 0xFF) + { + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + gBattleStruct->dynamax.triggerSpriteId = CreateSprite(&sSpriteTemplate_DynamaxTrigger, + gSprites[gHealthboxSpriteIds[battlerId]].x - DOUBLES_DYNAMAX_TRIGGER_POS_X_SLIDE, + gSprites[gHealthboxSpriteIds[battlerId]].y - DOUBLES_DYNAMAX_TRIGGER_POS_Y_DIFF, 0); + else + gBattleStruct->dynamax.triggerSpriteId = CreateSprite(&sSpriteTemplate_DynamaxTrigger, + gSprites[gHealthboxSpriteIds[battlerId]].x - SINGLES_DYNAMAX_TRIGGER_POS_X_SLIDE, + gSprites[gHealthboxSpriteIds[battlerId]].y - SINGLES_DYNAMAX_TRIGGER_POS_Y_DIFF, 0); + } + gSprites[gBattleStruct->dynamax.triggerSpriteId].tBattler = battlerId; + gSprites[gBattleStruct->dynamax.triggerSpriteId].tHide = FALSE; + + ChangeDynamaxTriggerSprite(gBattleStruct->dynamax.triggerSpriteId, palId); +} + +static void SpriteCb_DynamaxTrigger(struct Sprite *sprite) +{ + s32 xSlide, xPriority, xOptimal; + s32 yDiff; + + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + { + xSlide = DOUBLES_DYNAMAX_TRIGGER_POS_X_SLIDE; + xPriority = DOUBLES_DYNAMAX_TRIGGER_POS_X_PRIORITY; + xOptimal = DOUBLES_DYNAMAX_TRIGGER_POS_X_OPTIMAL; + yDiff = DOUBLES_DYNAMAX_TRIGGER_POS_Y_DIFF; + } + else + { + xSlide = SINGLES_DYNAMAX_TRIGGER_POS_X_SLIDE; + xPriority = SINGLES_DYNAMAX_TRIGGER_POS_X_PRIORITY; + xOptimal = SINGLES_DYNAMAX_TRIGGER_POS_X_OPTIMAL; + yDiff = SINGLES_DYNAMAX_TRIGGER_POS_Y_DIFF; + } + + if (sprite->tHide) + { + if (sprite->x != gSprites[gHealthboxSpriteIds[sprite->tBattler]].x - xSlide) + sprite->x++; + + if (sprite->x >= gSprites[gHealthboxSpriteIds[sprite->tBattler]].x - xPriority) + sprite->oam.priority = 2; + else + sprite->oam.priority = 1; + + sprite->y = gSprites[gHealthboxSpriteIds[sprite->tBattler]].y - yDiff; + sprite->y2 = gSprites[gHealthboxSpriteIds[sprite->tBattler]].y2 - yDiff; + if (sprite->x == gSprites[gHealthboxSpriteIds[sprite->tBattler]].x - xSlide) + DestroyDynamaxTriggerSprite(); + } + else + { + if (sprite->x != gSprites[gHealthboxSpriteIds[sprite->tBattler]].x - xOptimal) + sprite->x--; + + if (sprite->x >= gSprites[gHealthboxSpriteIds[sprite->tBattler]].x - xPriority) + sprite->oam.priority = 2; + else + sprite->oam.priority = 1; + + sprite->y = gSprites[gHealthboxSpriteIds[sprite->tBattler]].y - yDiff; + sprite->y2 = gSprites[gHealthboxSpriteIds[sprite->tBattler]].y2 - yDiff; + } +} + +bool32 IsDynamaxTriggerSpriteActive(void) +{ + if (GetSpriteTileStartByTag(TAG_DYNAMAX_TRIGGER_TILE) == 0xFFFF) + return FALSE; + else if (IndexOfSpritePaletteTag(TAG_DYNAMAX_TRIGGER_PAL) != 0xFF) + return TRUE; + else + return FALSE; +} + +void HideDynamaxTriggerSprite(void) +{ + if (gBattleStruct->dynamax.triggerSpriteId != 0xFF) + { + ChangeDynamaxTriggerSprite(gBattleStruct->dynamax.triggerSpriteId, 0); + gSprites[gBattleStruct->dynamax.triggerSpriteId].tHide = TRUE; + } +} + +void DestroyDynamaxTriggerSprite(void) +{ + FreeSpritePaletteByTag(TAG_DYNAMAX_TRIGGER_PAL); + FreeSpriteTilesByTag(TAG_DYNAMAX_TRIGGER_TILE); + if (gBattleStruct->dynamax.triggerSpriteId != 0xFF) + DestroySprite(&gSprites[gBattleStruct->dynamax.triggerSpriteId]); + gBattleStruct->dynamax.triggerSpriteId = 0xFF; +} + +#undef tBattler +#undef tHide diff --git a/src/battle_interface.c b/src/battle_interface.c index 35c0e60c63..8bbd26764b 100644 --- a/src/battle_interface.c +++ b/src/battle_interface.c @@ -1413,6 +1413,7 @@ void HideTriggerSprites(void) { HideMegaTriggerSprite(); HideZMoveTriggerSprite(); + HideDynamaxTriggerSprite(); } void DestroyMegaTriggerSprite(void) From 4293dc8a2476a8fae0b44ee1929a58384c00b43c Mon Sep 17 00:00:00 2001 From: AgustinGDLV Date: Fri, 10 Mar 2023 23:03:51 -0800 Subject: [PATCH 033/162] not entirely confident implementation of Dynamax indicator --- data/battle_scripts_1.s | 2 +- .../battle_interface/dynamax_indicator.png | Bin 0 -> 5409 bytes include/battle.h | 1 + include/battle_dynamax.h | 10 ++ include/battle_interface.h | 1 + src/battle_dynamax.c | 164 +++++++++++++++++- src/battle_gfx_sfx_util.c | 1 + src/battle_interface.c | 15 +- 8 files changed, 189 insertions(+), 5 deletions(-) create mode 100644 graphics/battle_interface/dynamax_indicator.png diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index dc1dc1a47c..5977c3321b 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -10618,8 +10618,8 @@ BattleScript_DynamaxBegins:: playanimation BS_SCRIPTING, B_ANIM_SLIDE_OFFSCREEN waitanimation returntoball BS_SCRIPTING - updatedynamax switchinanim BS_SCRIPTING, TRUE + updatedynamax playanimation BS_SCRIPTING, B_ANIM_DYNAMAX_GROWTH waitanimation end diff --git a/graphics/battle_interface/dynamax_indicator.png b/graphics/battle_interface/dynamax_indicator.png new file mode 100644 index 0000000000000000000000000000000000000000..767a71c1ad5ecd03bac3b3b0060582da49f574fa GIT binary patch literal 5409 zcmeHLXH-+!7ETbcfDu$|jEfjhK?v#9gx&%KBGreEa&vP70a8pZB;eRU6l{p?0WucA zJ_8mM1sp&G+bD`SFd`O)=8U3_h*D(U31C}q{22! zCXAms9)rP55O})>f~%?iG#mv!pEb9D0mJab;6-R4q{XY$N~tUs!J`Q(1dr%sQVd3S z?^)R5?X5N@107RV7+PZ|U9RL2dW=>K2rJ^XcTr(*?af-x&1qEEsjfCVyv`5SKCF6| zvLP+mcpu>pc^`h2gPPd-ye=6(UDRc^W+*zt<@QeNH{(4~utn z#ET?_9yTfGjngjgne!AQ8Eh1+-S$GdaQb$`D@lpbPd6Km>zyAk7!=$!W7p!`X?^oV z*76I~>tSa_`O87I|3~dCz~{wQXA+>i>K8we1l) zeA}s#Ia8`huD^s(H*!uC8+_k>+(|Sa5m!)cM0u{seaGxV)=fW0!$a-YPN7Dr)UcO| z$Lm~^Lr&2t`$MpW&eyf}MKw2K&iSlgYf-s<+|8(}+VaC?D7_}1mr=YREOpbog=RJG zil3m-&QVKv8|^B?5?0MEFfjbh=QNa5ZP`?9_N4Wf)(rdoqt~0gUOF}Z8Mx@YWNGPH8_L_jTR#mx=N12K?-#48zCc{v*xudZ&uPB!DXDD22U}|RUixuuR z_@TYVXfTSbI^v!-yCyT&a}#H`wQYW8U>%)Ro}25EH#dZFBizq^QIRCN-G1@aoY8yW zpKW8#=4foE7gcCno*N_w;v8GYdhzNGY?#$+W8QuAKuz|sPz|G@?wp{?@pj-HDY3Zj zXtEE#yD_Li!GA+_J~P{DGrR5{WOvajK&yzl|F^r#Fl9pAwImB$n!kTgZd1=#4O}=O2N>27WcVSu6F0Q_~h17a~ zU6&T$F&8Cm>o+SViDF(A9bJ0gHOiqXE10xs6}dCC@fxrGK|!;2!NBtF%eO7P{+j2N zSAT(GlD^U-dj9ddCm%ivZAzCn{61DYE!N%l*edT?)rar;gm(xp6H>fS-koyDRCRo= zcHF}s&dm8X_g>kn@TRTZN6v-Kl22HdEcSkw9O{`q%emqugS2eH)E~2=8$D->o#Og^ zU)z5>V6rd0>e$K!&0RilXVa$MwF~ZTzv0U|pEEHhj6F_j*O6{}6CN{ZK|y0)@k9T* zbd{Ag+IOU}lhiwlqo1g8rvyRhT%ANPl zc~Sq2XO1?d<4P|^^I4Y7T^GYS<@xblf}ZiWcz*?zZR~vaI_}iO;-wts#W|U%eOt;s z2-?}R@y6NnfhJ+uy4zM!Lexm`Yhh};WrHSUFj{z}?tI_LQyFKCucfu}_l-H>a#f?| z_d&Y~w`^%HUGm-4+iS0f)`a&@Q|CTqXZgKL17 zMfAOW>PEJY`KE{iMdsmgr1LhpkC5m6hq$$C5XlF2EHe;oo9gI$QHQ33CPu zZHrQ0K00Ulyo=xU0PFhWrQp-BfrxS4+ucgcJw3l~>FpHA1fM!PEi2Lfd}h)gZ%a08 zDAYoG+g5ee-aal78tL3yIEO5zzBGFI^Pz*92lH?zlJZUWO-{E!U0S>fuH(v=-()R% zl!dk0l{pV*x~Z4ByD8J$WS1_RoquFzo3U(z`OU>ScLP%x&#x})tc|u46x{j7Wr}a= zY@8W&zD=&7F%-@S^s|m~YH69s99XWt+B!ce1I8jpw#{7i!s%`Ek6C-N(d`3f`(IU` zb@IeMbPyHZ>v?lh-VlI!PE#E`Gtf4Z+%HHxb1-G=nxEv4T1pOHT~X17Bfrh}U0=Vg zjGnRtr*q0vUc(~BMQ{& zQwRzC!Cw`pjvY!z0+WzfL=H?fAS&gvkX{0z=!1uzf=HQMHRJ`z{>&1UNk5YH+1m6o zL+O0F5a9j+_cQDFxeplwE1{65UaegY*>Xi!K2BYG$R?jQp=Fh>fL*)WADm9hW?heIWDIAkf2 z&VnI?&VZ#%4(k($0JRLL5{mtFReC51fTFXhOqQ4~C9)YTh)5^HWFiNWz(lEpErsb6 zDGW1*p(HTZQ>m6ipqw%}6p4^jipZfDdcwIbA_1R3bs&En5ye8N6gYrAAX7+`TFu9) zV3`~VLLoh$6efd7V>0M$4vRqs$48@3M6Cf@)T2_!4pjQkjJ_~jkPe_0(km4J42^?q zxNd3$LY3-Zr81UJ&@T$F_Z$*9o;O?;ZlO%N*^n!@9Ugv*8C z;UF3)9+308$OV)97;RqkPfPkJ1nWq1tqPSA=;AA0c!UwVc7gU5)>{=o6Oh1@11vV;kUz{gWch0!=WqoXORGl_r(lR2Q<_!ZOj=i{7Lp@}-}5POdbO dW{QoD#A9A%8adfT)(C(%M&RM^Uf>#$^dImOAYlLi literal 0 HcmV?d00001 diff --git a/include/battle.h b/include/battle.h index f2b9fb04a5..ac60b0c899 100644 --- a/include/battle.h +++ b/include/battle.h @@ -527,6 +527,7 @@ struct DynamaxData { bool8 playerSelect; u8 triggerSpriteId; + u8 indicatorSpriteId[MAX_BATTLERS_COUNT]; bool8 toDynamax[MAX_BATTLERS_COUNT]; bool8 alreadyDynamaxed[NUM_BATTLE_SIDES]; bool8 dynamaxed[MAX_BATTLERS_COUNT]; diff --git a/include/battle_dynamax.h b/include/battle_dynamax.h index 2fcb0ff402..3854d4c032 100644 --- a/include/battle_dynamax.h +++ b/include/battle_dynamax.h @@ -69,10 +69,20 @@ const u8 *GetMaxMoveName(u16 move); void ChooseDamageNonTypesString(u8 type); u32 GetMaxMoveStatusEffect(u16 move); u16 SetMaxMoveEffect(u16 move); + void ChangeDynamaxTriggerSprite(u8 spriteId, u8 animId); void CreateDynamaxTriggerSprite(u8, bool8); void HideDynamaxTriggerSprite(void); bool32 IsDynamaxTriggerSpriteActive(void); void DestroyDynamaxTriggerSprite(void); +void DynamaxIndicator_LoadSpriteGfx(void); +bool32 DynamaxIndicator_ShouldBeInvisible(u32 battlerId); +u8 DynamaxIndicator_GetSpriteId(u32 healthboxSpriteId); +void DynamaxIndicator_SetVisibilities(u32 healthboxId, bool32 invisible); +void DynamaxIndicator_UpdateOamPriorities(u32 healthboxId, u32 oamPriority); +void DynamaxIndicator_UpdateLevel(u32 healthboxId, u32 level); +void DynamaxIndicator_CreateSprite(u32 battlerId, u32 healthboxSpriteId); +void DynamaxIndicator_DestroySprite(u32 healthboxSpriteId); + #endif diff --git a/include/battle_interface.h b/include/battle_interface.h index f222c56e9d..6ea2501b77 100644 --- a/include/battle_interface.h +++ b/include/battle_interface.h @@ -90,6 +90,7 @@ void DestoryHealthboxSprite(u8 healthboxSpriteId); void DummyBattleInterfaceFunc(u8 healthboxSpriteId, bool8 isDoubleBattleBankOnly); void UpdateOamPriorityInAllHealthboxes(u8 priority, bool32 hideHpBoxes); void InitBattlerHealthboxCoords(u8 battler); +void GetBattlerHealthboxCoords(u8 battler, s16 *x, s16 *y); void UpdateHpTextInHealthbox(u32 healthboxSpriteId, u32 maxOrCurrent, s16 currHp, s16 maxHp); void SwapHpBarsWithHpText(void); void ChangeMegaTriggerSprite(u8 spriteId, u8 animId); diff --git a/src/battle_dynamax.c b/src/battle_dynamax.c index 589e8fd983..c9093dc12c 100644 --- a/src/battle_dynamax.c +++ b/src/battle_dynamax.c @@ -87,6 +87,10 @@ static const struct GMaxMove sGMaxMoveTable[] = extern u8 gMaxMovePowers[MOVES_COUNT]; +// forward declarations +static void SpriteCb_DynamaxTrigger(struct Sprite *); +static void SpriteCb_DynamaxIndicator(struct Sprite *); + // Returns whether a battler is Dynamaxed. bool8 IsDynamaxed(u16 battlerId) { @@ -618,7 +622,7 @@ u16 SetMaxMoveEffect(u16 move) return effect; } -// Sprite Data +// DYNAMAX TRIGGER: static const u8 ALIGNED(4) sDynamaxTriggerGfx[] = INCBIN_U8("graphics/battle_interface/dynamax_trigger.4bpp"); static const u16 sDynamaxTriggerPal[] = INCBIN_U16("graphics/battle_interface/dynamax_trigger.gbapal"); @@ -666,7 +670,6 @@ static const union AnimCmd *const sSpriteAnimTable_DynamaxTrigger[] = sSpriteAnim_DynamaxTriggerOn, }; -static void SpriteCb_DynamaxTrigger(struct Sprite *sprite); static const struct SpriteTemplate sSpriteTemplate_DynamaxTrigger = { .tileTag = TAG_DYNAMAX_TRIGGER_TILE, @@ -799,3 +802,160 @@ void DestroyDynamaxTriggerSprite(void) #undef tBattler #undef tHide + + +// DYNAMAX INDICATOR: +static const u8 ALIGNED(4) sDynamaxIndicatorGfx[] = INCBIN_U8("graphics/battle_interface/dynamax_indicator.4bpp"); +static const u16 sDynamaxIndicatorPal[] = INCBIN_U16("graphics/battle_interface/dynamax_indicator.gbapal"); + +static const struct SpriteSheet sSpriteSheet_DynamaxIndicator = +{ + sDynamaxIndicatorGfx, sizeof(sDynamaxIndicatorGfx), TAG_DYNAMAX_INDICATOR_TILE +}; +static const struct SpritePalette sSpritePalette_DynamaxIndicator = +{ + sDynamaxIndicatorPal, TAG_DYNAMAX_INDICATOR_PAL +}; + +static const struct SpriteSheet sDynamaxIndicator_SpriteSheet[] = +{ + sDynamaxIndicatorGfx, sizeof(sDynamaxIndicatorGfx), TAG_DYNAMAX_INDICATOR_TILE +}; + +static const struct SpritePalette sDynamaxIndicator_SpritePalette[] = +{ + sDynamaxIndicatorPal, TAG_DYNAMAX_INDICATOR_PAL +}; + +static const struct OamData sOamData_DynamaxIndicator = +{ + .shape = SPRITE_SHAPE(16x16), + .size = SPRITE_SIZE(16x16), + .priority = 1, +}; + +static const struct SpriteTemplate sSpriteTemplate_DynamaxIndicator = +{ + .tileTag = TAG_DYNAMAX_INDICATOR_TILE, + .paletteTag = TAG_DYNAMAX_INDICATOR_PAL, + .oam = &sOamData_DynamaxIndicator, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCb_DynamaxIndicator, +}; + +static const s8 sIndicatorPositions[][2] = +{ + [B_POSITION_PLAYER_LEFT] = {52, -9}, + [B_POSITION_OPPONENT_LEFT] = {44, -9}, + [B_POSITION_PLAYER_RIGHT] = {52, -9}, + [B_POSITION_OPPONENT_RIGHT] = {44, -9}, +}; + +// for sprite data fields +#define tBattler data[0] +#define tType data[1] // Indicator type: dynamax +#define tPosX data[2] +#define tLevelXDelta data[3] // X position depends whether level has 3, 2 or 1 digit + +// data fields for healthboxMain +// oam.affineParam holds healthboxRight spriteId +#define hMain_DynamaxIndicatorId data[3] +#define hMain_HealthBarSpriteId data[5] +#define hMain_Battler data[6] +#define hMain_Data7 data[7] + +// data fields for healthboxRight +#define hOther_HealthBoxSpriteId data[5] + +// data fields for healthbar +#define hBar_HealthBoxSpriteId data[5] + +void DynamaxIndicator_LoadSpriteGfx(void) +{ + LoadSpriteSheet(sDynamaxIndicator_SpriteSheet); + LoadSpritePalette(sDynamaxIndicator_SpritePalette); +} + +bool32 DynamaxIndicator_ShouldBeInvisible(u32 battlerId) +{ + return !IsDynamaxed(battlerId); +} + +u8 DynamaxIndicator_GetSpriteId(u32 healthboxSpriteId) +{ + return gBattleStruct->dynamax.indicatorSpriteId[gSprites[healthboxSpriteId].hMain_Battler]; +} + +void DynamaxIndicator_SetVisibilities(u32 healthboxId, bool32 invisible) +{ + u32 i; + u8 spriteId = DynamaxIndicator_GetSpriteId(healthboxId); + u32 battlerId = gSprites[healthboxId].hMain_Battler; + + if (invisible == TRUE) + gSprites[spriteId].invisible = TRUE; + else // Try visible. + gSprites[spriteId].invisible = DynamaxIndicator_ShouldBeInvisible(battlerId); +} + +void DynamaxIndicator_UpdateOamPriorities(u32 healthboxId, u32 oamPriority) +{ + u32 i; + u8 spriteId = DynamaxIndicator_GetSpriteId(healthboxId); + gSprites[spriteId].oam.priority = oamPriority; +} + +void DynamaxIndicator_UpdateLevel(u32 healthboxId, u32 level) +{ + u32 i; + s16 xDelta = 0; + u8 spriteId = DynamaxIndicator_GetSpriteId(healthboxId); + + if (level >= 100) + xDelta -= 4; + else if (level < 10) + xDelta += 5; + + gSprites[spriteId].tLevelXDelta = xDelta; +} + +void DynamaxIndicator_CreateSprite(u32 battlerId, u32 healthboxSpriteId) +{ + u32 position, level; + u8 spriteId; + s16 xHealthbox = 0, y = 0; + s32 x = 0; + + position = GetBattlerPosition(battlerId); + GetBattlerHealthboxCoords(battlerId, &xHealthbox, &y); + + x = sIndicatorPositions[position][0]; + y += sIndicatorPositions[position][1]; + + spriteId = gBattleStruct->dynamax.indicatorSpriteId[battlerId] = CreateSpriteAtEnd(&sSpriteTemplate_DynamaxIndicator, 0, y, 0); + gSprites[spriteId].tBattler = battlerId; + gSprites[spriteId].tPosX = x; + gSprites[spriteId].invisible = TRUE; +} + +void DynamaxIndicator_DestroySprite(u32 healthboxSpriteId) +{ + u8 spriteId = DynamaxIndicator_GetSpriteId(healthboxSpriteId); + DestroySprite(&gSprites[spriteId]); +} + +static void SpriteCb_DynamaxIndicator(struct Sprite *sprite) +{ + u32 battlerId = sprite->tBattler; + + sprite->x = gSprites[gHealthboxSpriteIds[battlerId]].x + sprite->tPosX + sprite->tLevelXDelta; + sprite->x2 = gSprites[gHealthboxSpriteIds[battlerId]].x2; + sprite->y2 = gSprites[gHealthboxSpriteIds[battlerId]].y2; +} + +#undef tBattler +#undef tType +#undef tPosX +#undef tLevelXDelta diff --git a/src/battle_gfx_sfx_util.c b/src/battle_gfx_sfx_util.c index 7203c12e42..bc4fea906c 100644 --- a/src/battle_gfx_sfx_util.c +++ b/src/battle_gfx_sfx_util.c @@ -699,6 +699,7 @@ bool8 BattleLoadAllHealthBoxesGfx(u8 state) LoadSpritePalette(&sSpritePalettes_HealthBoxHealthBar[0]); LoadSpritePalette(&sSpritePalettes_HealthBoxHealthBar[1]); MegaIndicator_LoadSpritesGfx(); + DynamaxIndicator_LoadSpriteGfx(); } else if (!IsDoubleBattle()) { diff --git a/src/battle_interface.c b/src/battle_interface.c index 8bbd26764b..4e1e71a014 100644 --- a/src/battle_interface.c +++ b/src/battle_interface.c @@ -785,6 +785,9 @@ u8 CreateBattlerHealthboxSprites(u8 battlerId) // Create mega indicator sprites. MegaIndicator_CreateSprites(battlerId, healthboxLeftSpriteId); + // Create dynamax indicator sprites. + DynamaxIndicator_CreateSprite(battlerId, healthboxLeftSpriteId); + gBattleStruct->ballSpriteIds[0] = MAX_SPRITES; gBattleStruct->ballSpriteIds[1] = MAX_SPRITES; @@ -868,6 +871,7 @@ void SetHealthboxSpriteInvisible(u8 healthboxSpriteId) gSprites[gSprites[healthboxSpriteId].hMain_HealthBarSpriteId].invisible = TRUE; gSprites[gSprites[healthboxSpriteId].oam.affineParam].invisible = TRUE; MegaIndicator_SetVisibilities(healthboxSpriteId, TRUE); + DynamaxIndicator_SetVisibilities(healthboxSpriteId, TRUE); } void SetHealthboxSpriteVisible(u8 healthboxSpriteId) @@ -876,6 +880,7 @@ void SetHealthboxSpriteVisible(u8 healthboxSpriteId) gSprites[gSprites[healthboxSpriteId].hMain_HealthBarSpriteId].invisible = FALSE; gSprites[gSprites[healthboxSpriteId].oam.affineParam].invisible = FALSE; MegaIndicator_SetVisibilities(healthboxSpriteId, FALSE); + DynamaxIndicator_SetVisibilities(healthboxSpriteId, FALSE); } static void UpdateSpritePos(u8 spriteId, s16 x, s16 y) @@ -887,6 +892,7 @@ static void UpdateSpritePos(u8 spriteId, s16 x, s16 y) void DestoryHealthboxSprite(u8 healthboxSpriteId) { MegaIndicator_DestroySprites(healthboxSpriteId); + DynamaxIndicator_DestroySprite(healthboxSpriteId); DestroySprite(&gSprites[gSprites[healthboxSpriteId].oam.affineParam]); DestroySprite(&gSprites[gSprites[healthboxSpriteId].hMain_HealthBarSpriteId]); DestroySprite(&gSprites[healthboxSpriteId]); @@ -910,6 +916,7 @@ static void TryToggleHealboxVisibility(u32 priority, u32 healthboxLeftSpriteId, gSprites[healthboxRightSpriteId].invisible = invisible; gSprites[healthbarSpriteId].invisible = invisible; MegaIndicator_SetVisibilities(healthboxLeftSpriteId, invisible); + DynamaxIndicator_SetVisibilities(healthboxLeftSpriteId, invisible); } void UpdateOamPriorityInAllHealthboxes(u8 priority, bool32 hideHPBoxes) @@ -927,6 +934,7 @@ void UpdateOamPriorityInAllHealthboxes(u8 priority, bool32 hideHPBoxes) gSprites[healthbarSpriteId].oam.priority = priority; MegaIndicator_UpdateOamPriorities(healthboxLeftSpriteId, priority); + DynamaxIndicator_UpdateOamPriorities(healthboxLeftSpriteId, priority); #if B_HIDE_HEALTHBOX_IN_ANIMS if (hideHPBoxes && IsBattlerAlive(i)) @@ -983,14 +991,17 @@ static void UpdateLvlInHealthbox(u8 healthboxSpriteId, u8 lvl) u8 *objVram; u8 battler = gSprites[healthboxSpriteId].hMain_Battler; - // Don't print Lv char if mon is mega evolved or primal reverted. + // Don't print Lv char if mon is mega evolved or primal reverted or Dynamaxed. if (gBattleStruct->mega.evolvedPartyIds[GetBattlerSide(battler)] & gBitTable[gBattlerPartyIndexes[battler]] - || gBattleStruct->mega.primalRevertedPartyIds[GetBattlerSide(battler)] & gBitTable[gBattlerPartyIndexes[battler]]) + || gBattleStruct->mega.primalRevertedPartyIds[GetBattlerSide(battler)] & gBitTable[gBattlerPartyIndexes[battler]] + || IsDynamaxed(battler)) { objVram = ConvertIntToDecimalStringN(text, lvl, STR_CONV_MODE_LEFT_ALIGN, 3); xPos = 5 * (3 - (objVram - (text + 2))) - 1; MegaIndicator_UpdateLevel(healthboxSpriteId, lvl); MegaIndicator_SetVisibilities(healthboxSpriteId, FALSE); + DynamaxIndicator_UpdateLevel(healthboxSpriteId, lvl); + DynamaxIndicator_SetVisibilities(healthboxSpriteId, FALSE); } else { From 28ffffac2fec00c9b46e810f45d271324fa255a1 Mon Sep 17 00:00:00 2001 From: AgustinGDLV Date: Fri, 10 Mar 2023 23:15:02 -0800 Subject: [PATCH 034/162] fixed typo with HP multiplier --- src/battle_dynamax.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/battle_dynamax.c b/src/battle_dynamax.c index c9093dc12c..8a7ddae8b3 100644 --- a/src/battle_dynamax.c +++ b/src/battle_dynamax.c @@ -122,7 +122,7 @@ void ApplyDynamaxHPMultiplier(u16 battlerId, struct Pokemon* mon) { u16 mult = UQ_4_12(1.5); // placeholder u16 hp = UQ_4_12_TO_INT((GetMonData(mon, MON_DATA_HP, NULL) * mult) + UQ_4_12_ROUND); - u16 maxHP = UQ_4_12_TO_INT((GetMonData(mon, MON_DATA_HP, NULL) * mult) + UQ_4_12_ROUND); + u16 maxHP = UQ_4_12_TO_INT((GetMonData(mon, MON_DATA_MAX_HP, NULL) * mult) + UQ_4_12_ROUND); SetMonData(mon, MON_DATA_HP, &hp); SetMonData(mon, MON_DATA_MAX_HP, &maxHP); } From 89e778225ca84b4b1dda8fd27bd6297a55ba2885 Mon Sep 17 00:00:00 2001 From: AgustinGDLV Date: Sat, 11 Mar 2023 10:47:23 -0800 Subject: [PATCH 035/162] dynamax indicator shares palette with alpha/omega --- graphics/battle_interface/misc_indicator.pal | 19 +++++++++++++++++++ src/battle_interface.c | 10 +++++----- 2 files changed, 24 insertions(+), 5 deletions(-) create mode 100644 graphics/battle_interface/misc_indicator.pal diff --git a/graphics/battle_interface/misc_indicator.pal b/graphics/battle_interface/misc_indicator.pal new file mode 100644 index 0000000000..1128418200 --- /dev/null +++ b/graphics/battle_interface/misc_indicator.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 0 0 +224 74 106 +236 234 108 +154 45 48 +244 162 132 +32 127 216 +16 75 156 +184 224 240 +136 184 224 +213 207 207 +246 246 246 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/src/battle_interface.c b/src/battle_interface.c index df01b4466f..f89d6a2e81 100644 --- a/src/battle_interface.c +++ b/src/battle_interface.c @@ -1450,7 +1450,7 @@ static const u8 ALIGNED(4) sMegaIndicatorGfx[] = INCBIN_U8("graphics/battle_inte static const u16 sMegaIndicatorPal[] = INCBIN_U16("graphics/battle_interface/mega_indicator.gbapal"); static const u8 ALIGNED(4) sAlphaIndicatorGfx[] = INCBIN_U8("graphics/battle_interface/alpha_indicator.4bpp"); static const u8 ALIGNED(4) sOmegaIndicatorGfx[] = INCBIN_U8("graphics/battle_interface/omega_indicator.4bpp"); -static const u16 sAlphaOmegaIndicatorPal[] = INCBIN_U16("graphics/battle_interface/alpha_indicator.gbapal"); +static const u16 sAlphaOmegaIndicatorPal[] = INCBIN_U16("graphics/battle_interface/misc_indicator.gbapal"); static const struct SpriteSheet sMegaIndicator_SpriteSheets[] = { @@ -1462,8 +1462,8 @@ static const struct SpriteSheet sMegaIndicator_SpriteSheets[] = static const struct SpritePalette sMegaIndicator_SpritePalettes[] = { [INDICATOR_MEGA] = {sMegaIndicatorPal, TAG_MEGA_INDICATOR_PAL}, - [INDICATOR_ALPHA] = {sAlphaOmegaIndicatorPal, TAG_ALPHA_OMEGA_INDICATOR_PAL}, - [INDICATOR_OMEGA] = {sAlphaOmegaIndicatorPal, TAG_ALPHA_OMEGA_INDICATOR_PAL}, + [INDICATOR_ALPHA] = {sAlphaOmegaIndicatorPal, TAG_MISC_INDICATOR_PAL}, + [INDICATOR_OMEGA] = {sAlphaOmegaIndicatorPal, TAG_MISC_INDICATOR_PAL}, [INDICATOR_COUNT] = {0} }; @@ -1488,8 +1488,8 @@ static const struct SpriteTemplate sSpriteTemplate_MegaIndicator = static const u16 sMegaIndicatorTags[][2] = { [INDICATOR_MEGA] = {TAG_MEGA_INDICATOR_TILE, TAG_MEGA_INDICATOR_PAL}, - [INDICATOR_ALPHA] = {TAG_ALPHA_INDICATOR_TILE, TAG_ALPHA_OMEGA_INDICATOR_PAL}, - [INDICATOR_OMEGA] = {TAG_OMEGA_INDICATOR_TILE, TAG_ALPHA_OMEGA_INDICATOR_PAL}, + [INDICATOR_ALPHA] = {TAG_ALPHA_INDICATOR_TILE, TAG_MISC_INDICATOR_PAL}, + [INDICATOR_OMEGA] = {TAG_OMEGA_INDICATOR_TILE, TAG_MISC_INDICATOR_PAL}, }; static const s8 sIndicatorPositions[][2] = From c823e19705e0fbe0f5ef5a8be3b0e766ac70e77b Mon Sep 17 00:00:00 2001 From: AgustinGDLV Date: Sat, 11 Mar 2023 10:48:21 -0800 Subject: [PATCH 036/162] implemented Gigantamax form change --- .../battle_interface/dynamax_indicator.png | Bin 5409 -> 268 bytes include/battle_interface.h | 3 +- include/constants/form_change_types.h | 2 ++ src/battle_dynamax.c | 26 +++++++++++++----- src/battle_util.c | 8 +++++- src/data/pokemon/form_change_tables.h | 17 ++++++++---- 6 files changed, 40 insertions(+), 16 deletions(-) diff --git a/graphics/battle_interface/dynamax_indicator.png b/graphics/battle_interface/dynamax_indicator.png index 767a71c1ad5ecd03bac3b3b0060582da49f574fa..ebfbe86da62bf52c553650480c987c1cff82ccf2 100644 GIT binary patch delta 241 zcmZ3e)x$JFxt@W&#M9T6{W&wYpdm~5gR&U>cv7h@-A}f$@5a1Ky`k#T} zfmha>S2?qE4ZbXDQK-Km;5}!@gAW}$9$Y22! zCXAms9)rP55O})>f~%?iG#mv!pEb9D0mJab;6-R4q{XY$N~tUs!J`Q(1dr%sQVd3S z?^)R5?X5N@107RV7+PZ|U9RL2dW=>K2rJ^XcTr(*?af-x&1qEEsjfCVyv`5SKCF6| zvLP+mcpu>pc^`h2gPPd-ye=6(UDRc^W+*zt<@QeNH{(4~utn z#ET?_9yTfGjngjgne!AQ8Eh1+-S$GdaQb$`D@lpbPd6Km>zyAk7!=$!W7p!`X?^oV z*76I~>tSa_`O87I|3~dCz~{wQXA+>i>K8we1l) zeA}s#Ia8`huD^s(H*!uC8+_k>+(|Sa5m!)cM0u{seaGxV)=fW0!$a-YPN7Dr)UcO| z$Lm~^Lr&2t`$MpW&eyf}MKw2K&iSlgYf-s<+|8(}+VaC?D7_}1mr=YREOpbog=RJG zil3m-&QVKv8|^B?5?0MEFfjbh=QNa5ZP`?9_N4Wf)(rdoqt~0gUOF}Z8Mx@YWNGPH8_L_jTR#mx=N12K?-#48zCc{v*xudZ&uPB!DXDD22U}|RUixuuR z_@TYVXfTSbI^v!-yCyT&a}#H`wQYW8U>%)Ro}25EH#dZFBizq^QIRCN-G1@aoY8yW zpKW8#=4foE7gcCno*N_w;v8GYdhzNGY?#$+W8QuAKuz|sPz|G@?wp{?@pj-HDY3Zj zXtEE#yD_Li!GA+_J~P{DGrR5{WOvajK&yzl|F^r#Fl9pAwImB$n!kTgZd1=#4O}=O2N>27WcVSu6F0Q_~h17a~ zU6&T$F&8Cm>o+SViDF(A9bJ0gHOiqXE10xs6}dCC@fxrGK|!;2!NBtF%eO7P{+j2N zSAT(GlD^U-dj9ddCm%ivZAzCn{61DYE!N%l*edT?)rar;gm(xp6H>fS-koyDRCRo= zcHF}s&dm8X_g>kn@TRTZN6v-Kl22HdEcSkw9O{`q%emqugS2eH)E~2=8$D->o#Og^ zU)z5>V6rd0>e$K!&0RilXVa$MwF~ZTzv0U|pEEHhj6F_j*O6{}6CN{ZK|y0)@k9T* zbd{Ag+IOU}lhiwlqo1g8rvyRhT%ANPl zc~Sq2XO1?d<4P|^^I4Y7T^GYS<@xblf}ZiWcz*?zZR~vaI_}iO;-wts#W|U%eOt;s z2-?}R@y6NnfhJ+uy4zM!Lexm`Yhh};WrHSUFj{z}?tI_LQyFKCucfu}_l-H>a#f?| z_d&Y~w`^%HUGm-4+iS0f)`a&@Q|CTqXZgKL17 zMfAOW>PEJY`KE{iMdsmgr1LhpkC5m6hq$$C5XlF2EHe;oo9gI$QHQ33CPu zZHrQ0K00Ulyo=xU0PFhWrQp-BfrxS4+ucgcJw3l~>FpHA1fM!PEi2Lfd}h)gZ%a08 zDAYoG+g5ee-aal78tL3yIEO5zzBGFI^Pz*92lH?zlJZUWO-{E!U0S>fuH(v=-()R% zl!dk0l{pV*x~Z4ByD8J$WS1_RoquFzo3U(z`OU>ScLP%x&#x})tc|u46x{j7Wr}a= zY@8W&zD=&7F%-@S^s|m~YH69s99XWt+B!ce1I8jpw#{7i!s%`Ek6C-N(d`3f`(IU` zb@IeMbPyHZ>v?lh-VlI!PE#E`Gtf4Z+%HHxb1-G=nxEv4T1pOHT~X17Bfrh}U0=Vg zjGnRtr*q0vUc(~BMQ{& zQwRzC!Cw`pjvY!z0+WzfL=H?fAS&gvkX{0z=!1uzf=HQMHRJ`z{>&1UNk5YH+1m6o zL+O0F5a9j+_cQDFxeplwE1{65UaegY*>Xi!K2BYG$R?jQp=Fh>fL*)WADm9hW?heIWDIAkf2 z&VnI?&VZ#%4(k($0JRLL5{mtFReC51fTFXhOqQ4~C9)YTh)5^HWFiNWz(lEpErsb6 zDGW1*p(HTZQ>m6ipqw%}6p4^jipZfDdcwIbA_1R3bs&En5ye8N6gYrAAX7+`TFu9) zV3`~VLLoh$6efd7V>0M$4vRqs$48@3M6Cf@)T2_!4pjQkjJ_~jkPe_0(km4J42^?q zxNd3$LY3-Zr81UJ&@T$F_Z$*9o;O?;ZlO%N*^n!@9Ugv*8C z;UF3)9+308$OV)97;RqkPfPkJ1nWq1tqPSA=;AA0c!UwVc7gU5)>{=o6Oh1@11vV;kUz{gWch0!=WqoXORGl_r(lR2Q<_!ZOj=i{7Lp@}-}5POdbO dW{QoD#A9A%8adfT)(C(%M&RM^Uf>#$^dImOAYlLi diff --git a/include/battle_interface.h b/include/battle_interface.h index 6ea2501b77..595547c2b0 100644 --- a/include/battle_interface.h +++ b/include/battle_interface.h @@ -58,10 +58,9 @@ enum #define TAG_MEGA_TRIGGER_PAL 0xD777 #define TAG_MEGA_INDICATOR_PAL 0xD778 -#define TAG_ALPHA_OMEGA_INDICATOR_PAL 0xD779 // Alpha and Omega indicators use the same palette as each of them only uses 4 different colors. +#define TAG_MISC_INDICATOR_PAL 0xD779 // Alpha, Omega, and Dynamax indicators use the same palette as each of them only uses 4 different colors. #define TAG_ZMOVE_TRIGGER_PAL 0xD77B #define TAG_DYNAMAX_TRIGGER_PAL 0xD77C -#define TAG_DYNAMAX_INDICATOR_PAL 0xD77D enum diff --git a/include/constants/form_change_types.h b/include/constants/form_change_types.h index 175f1027c2..aac4f6866d 100644 --- a/include/constants/form_change_types.h +++ b/include/constants/form_change_types.h @@ -10,6 +10,8 @@ // FORM_CHANGE_ITEM_USE param2 Arguments #define DAY 1 #define NIGHT 2 +// FORM_CHANGE_BATTLE_SWITCH +#define PRESERVE_MEGA 1 #define FORM_CHANGE_TERMINATOR 0 diff --git a/src/battle_dynamax.c b/src/battle_dynamax.c index 8a7ddae8b3..e3e87e7337 100644 --- a/src/battle_dynamax.c +++ b/src/battle_dynamax.c @@ -128,22 +128,34 @@ void ApplyDynamaxHPMultiplier(u16 battlerId, struct Pokemon* mon) } } -// Sets flags used for Dynamaxing. +// Sets flags used for Dynamaxing and checks Gigantamax forms. void PrepareBattlerForDynamax(u16 battlerId) { u8 side = GetBattlerSide(battlerId); + u16 newSpecies; + gBattleStruct->dynamax.alreadyDynamaxed[side] = TRUE; gBattleStruct->dynamax.dynamaxed[battlerId] = TRUE; gBattleStruct->dynamax.dynamaxTurns[battlerId] = DYNAMAX_TURNS; + + // Try Gigantamax form change. + newSpecies = GetBattleFormChangeTargetSpecies(battlerId, FORM_CHANGE_BATTLE_GIGANTAMAX); + if (newSpecies != SPECIES_NONE) + { + gBattleMons[battlerId].species = newSpecies; + PREPARE_SPECIES_BUFFER(gBattleTextBuff1, gBattleMons[battlerId].species); + BtlController_EmitSetMonData(BUFFER_A, REQUEST_SPECIES_BATTLE, gBitTable[gBattlerPartyIndexes[battlerId]], sizeof(gBattleMons[battlerId].species), &gBattleMons[battlerId].species); + MarkBattlerForControllerExec(battlerId); + } } -// Sets flags needed for undoing Dynamax. +// Sets flags needed for undoing Dynamax and undoes Gigantamax forms. void UndoDynamax(u16 battlerId) { u8 side = GetBattlerSide(battlerId); gBattleStruct->dynamax.dynamaxed[battlerId] = FALSE; gBattleStruct->dynamax.dynamaxTurns[battlerId] = 0; // safety check for switch-in / faint - // TODO: Undo Gigantamax form change. + TryBattleFormChange(battlerId, FORM_CHANGE_BATTLE_SWITCH); // TODO: maybe nicer way to do this? } // Returns whether a move should be converted into a Max Move. @@ -806,7 +818,7 @@ void DestroyDynamaxTriggerSprite(void) // DYNAMAX INDICATOR: static const u8 ALIGNED(4) sDynamaxIndicatorGfx[] = INCBIN_U8("graphics/battle_interface/dynamax_indicator.4bpp"); -static const u16 sDynamaxIndicatorPal[] = INCBIN_U16("graphics/battle_interface/dynamax_indicator.gbapal"); +static const u16 sDynamaxIndicatorPal[] = INCBIN_U16("graphics/battle_interface/misc_indicator.gbapal"); static const struct SpriteSheet sSpriteSheet_DynamaxIndicator = { @@ -814,7 +826,7 @@ static const struct SpriteSheet sSpriteSheet_DynamaxIndicator = }; static const struct SpritePalette sSpritePalette_DynamaxIndicator = { - sDynamaxIndicatorPal, TAG_DYNAMAX_INDICATOR_PAL + sDynamaxIndicatorPal, TAG_MISC_INDICATOR_PAL }; static const struct SpriteSheet sDynamaxIndicator_SpriteSheet[] = @@ -824,7 +836,7 @@ static const struct SpriteSheet sDynamaxIndicator_SpriteSheet[] = static const struct SpritePalette sDynamaxIndicator_SpritePalette[] = { - sDynamaxIndicatorPal, TAG_DYNAMAX_INDICATOR_PAL + sDynamaxIndicatorPal, TAG_MISC_INDICATOR_PAL }; static const struct OamData sOamData_DynamaxIndicator = @@ -837,7 +849,7 @@ static const struct OamData sOamData_DynamaxIndicator = static const struct SpriteTemplate sSpriteTemplate_DynamaxIndicator = { .tileTag = TAG_DYNAMAX_INDICATOR_TILE, - .paletteTag = TAG_DYNAMAX_INDICATOR_PAL, + .paletteTag = TAG_MISC_INDICATOR_PAL, .oam = &sOamData_DynamaxIndicator, .anims = gDummySpriteAnimTable, .images = NULL, diff --git a/src/battle_util.c b/src/battle_util.c index 854ba4d272..eeb0f58af5 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -10180,7 +10180,8 @@ u16 GetBattleFormChangeTargetSpecies(u8 battlerId, u16 method) targetSpecies = formChanges[i].targetSpecies; break; case FORM_CHANGE_BATTLE_SWITCH: - targetSpecies = formChanges[i].targetSpecies; + if (!(IsBattlerMegaEvolved(battlerId) && formChanges[i].param1 == PRESERVE_MEGA)) + targetSpecies = formChanges[i].targetSpecies; break; case FORM_CHANGE_BATTLE_HP_PERCENT: if (formChanges[i].param1 == GetBattlerAbility(battlerId)) @@ -10200,6 +10201,11 @@ u16 GetBattleFormChangeTargetSpecies(u8 battlerId, u16 method) } } break; + case FORM_CHANGE_BATTLE_GIGANTAMAX: + // TODO: check Gigantamax factor + if (IsDynamaxed(battlerId)) + targetSpecies = formChanges[i].targetSpecies; + break; case FORM_CHANGE_BATTLE_TURN_END: if (formChanges[i].param1 == GetBattlerAbility(battlerId)) targetSpecies = formChanges[i].targetSpecies; diff --git a/src/data/pokemon/form_change_tables.h b/src/data/pokemon/form_change_tables.h index 0528d0d7af..00fb8e4c34 100644 --- a/src/data/pokemon/form_change_tables.h +++ b/src/data/pokemon/form_change_tables.h @@ -1,6 +1,7 @@ static const struct FormChange sVenusaurFormChangeTable[] = { {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_VENUSAUR_MEGA, ITEM_VENUSAURITE}, {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_VENUSAUR_GMAX}, + {FORM_CHANGE_BATTLE_SWITCH, SPECIES_VENUSAUR, PRESERVE_MEGA}, {FORM_CHANGE_FAINT, SPECIES_VENUSAUR}, {FORM_CHANGE_END_BATTLE, SPECIES_VENUSAUR}, {FORM_CHANGE_TERMINATOR}, @@ -10,6 +11,7 @@ static const struct FormChange sCharizardFormChangeTable[] = { {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_CHARIZARD_MEGA_X, ITEM_CHARIZARDITE_X}, {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_CHARIZARD_MEGA_Y, ITEM_CHARIZARDITE_Y}, {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_CHARIZARD_GMAX}, + {FORM_CHANGE_BATTLE_SWITCH, SPECIES_CHARIZARD, PRESERVE_MEGA}, {FORM_CHANGE_FAINT, SPECIES_CHARIZARD}, {FORM_CHANGE_END_BATTLE, SPECIES_CHARIZARD}, {FORM_CHANGE_TERMINATOR}, @@ -18,6 +20,7 @@ static const struct FormChange sCharizardFormChangeTable[] = { static const struct FormChange sBlastoiseFormChangeTable[] = { {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_BLASTOISE_MEGA, ITEM_BLASTOISINITE}, {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_BLASTOISE_GMAX}, + {FORM_CHANGE_BATTLE_SWITCH, SPECIES_BLASTOISE, PRESERVE_MEGA}, {FORM_CHANGE_FAINT, SPECIES_BLASTOISE}, {FORM_CHANGE_END_BATTLE, SPECIES_BLASTOISE}, {FORM_CHANGE_TERMINATOR}, @@ -54,6 +57,7 @@ static const struct FormChange sSlowbroFormChangeTable[] = { static const struct FormChange sGengarFormChangeTable[] = { {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_GENGAR_MEGA, ITEM_GENGARITE}, {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_GENGAR_GMAX}, + {FORM_CHANGE_BATTLE_SWITCH, SPECIES_VENUSAUR, PRESERVE_MEGA}, {FORM_CHANGE_FAINT, SPECIES_GENGAR}, {FORM_CHANGE_END_BATTLE, SPECIES_GENGAR}, {FORM_CHANGE_TERMINATOR}, @@ -643,12 +647,13 @@ static const struct FormChange sEnamorusFormChangeTable[] = { #endif // Gigantamax Forms -#define GIGANTAMAX_FORM(species) \ - { \ - {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_##species##_GMAX}, \ - {FORM_CHANGE_FAINT, SPECIES_##species}, \ - {FORM_CHANGE_END_BATTLE, SPECIES_##species}, \ - {FORM_CHANGE_TERMINATOR}, \ +#define GIGANTAMAX_FORM(species) \ + { \ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_##species##_GMAX}, \ + {FORM_CHANGE_FAINT, SPECIES_##species}, \ + {FORM_CHANGE_END_BATTLE, SPECIES_##species}, \ + {FORM_CHANGE_BATTLE_SWITCH, SPECIES_##species, PRESERVE_MEGA}, \ + {FORM_CHANGE_TERMINATOR}, \ }; static const struct FormChange sButterfreeFormChangeTable[] = GIGANTAMAX_FORM(BUTTERFREE) From f679c4195b781e8c4aa794cb83dbaf293dd73bef Mon Sep 17 00:00:00 2001 From: AgustinGDLV Date: Sat, 11 Mar 2023 11:12:05 -0800 Subject: [PATCH 037/162] fixed redundancy in g-max form change --- src/battle_dynamax.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/battle_dynamax.c b/src/battle_dynamax.c index e3e87e7337..4a6be7a64c 100644 --- a/src/battle_dynamax.c +++ b/src/battle_dynamax.c @@ -142,10 +142,8 @@ void PrepareBattlerForDynamax(u16 battlerId) newSpecies = GetBattleFormChangeTargetSpecies(battlerId, FORM_CHANGE_BATTLE_GIGANTAMAX); if (newSpecies != SPECIES_NONE) { - gBattleMons[battlerId].species = newSpecies; - PREPARE_SPECIES_BUFFER(gBattleTextBuff1, gBattleMons[battlerId].species); - BtlController_EmitSetMonData(BUFFER_A, REQUEST_SPECIES_BATTLE, gBitTable[gBattlerPartyIndexes[battlerId]], sizeof(gBattleMons[battlerId].species), &gBattleMons[battlerId].species); - MarkBattlerForControllerExec(battlerId); + gBattleStruct->changedSpecies = gBattleMons[battlerId].species; + TryBattleFormChange(battlerId, FORM_CHANGE_BATTLE_GIGANTAMAX); } } From d0dc564da8fed9d3e903a789909da20d7ece313b Mon Sep 17 00:00:00 2001 From: AgustinGDLV Date: Sat, 11 Mar 2023 11:17:11 -0800 Subject: [PATCH 038/162] actually fixed it --- src/battle_dynamax.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/battle_dynamax.c b/src/battle_dynamax.c index 4a6be7a64c..29419e2f64 100644 --- a/src/battle_dynamax.c +++ b/src/battle_dynamax.c @@ -142,7 +142,7 @@ void PrepareBattlerForDynamax(u16 battlerId) newSpecies = GetBattleFormChangeTargetSpecies(battlerId, FORM_CHANGE_BATTLE_GIGANTAMAX); if (newSpecies != SPECIES_NONE) { - gBattleStruct->changedSpecies = gBattleMons[battlerId].species; + gBattleStruct->changedSpecies[gBitTable[gBattlerPartyIndexes[battlerId]]] = gBattleMons[battlerId].species; TryBattleFormChange(battlerId, FORM_CHANGE_BATTLE_GIGANTAMAX); } } From ca75fcb50c23c513f9b257332aefb7509fa83bc1 Mon Sep 17 00:00:00 2001 From: AgustinGDLV Date: Sun, 12 Mar 2023 15:28:34 -0700 Subject: [PATCH 039/162] added some 'test' tests --- test/dynamax.c | 136 ++++++++++++++++++++++++++++++++++++++ test/test_battle.h | 1 + test/test_runner_battle.c | 3 + 3 files changed, 140 insertions(+) create mode 100644 test/dynamax.c diff --git a/test/dynamax.c b/test/dynamax.c new file mode 100644 index 0000000000..ca05b4bd08 --- /dev/null +++ b/test/dynamax.c @@ -0,0 +1,136 @@ +#include "global.h" +#include "test_battle.h" + +// DYNAMAX FEATURES +/* +SINGLE_BATTLE_TEST("(DYNAMAX) Dynamax increases HP and max HP by 1.5x") +{ + GIVEN { // TODO: Dynamax level + PLAYER(SPECIES_WOBBUFFET) { MaxHP(100); HP(80); } + OPPONENT(SPECIES_WOBBUFFET) + } WHEN { + TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); MOVE(opponent, MOVE_CELEBRATE); } + } SCENE { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_DYNAMAX_GROWTH, player); + MESSAGE("Wobbuffet used Max Strike!"); + MESSAGE("Foe Wobbuffet used Celebrate!"); + } +} +*/ +/* +SINGLE_BATTLE_TEST("(DYNAMAX) Dynamax expires after three turns.") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { MaxHP(100); HP(80); } + OPPONENT(SPECIES_WOBBUFFET) + } WHEN { + TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); } // 1st max move + TURN { MOVE(player, MOVE_TACKLE); } // 2nd max move + TURN { MOVE(player, MOVE_TACKLE); } // 3rd max move + } SCENE { + int i; + for (i = 0; i < DYNAMAX_TURNS; ++i) { + MESSAGE("Wobbuffet used Max Strike!"); + MESSAGE("Foe Wobbuffet used Celebrate!"); + } + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player); + } FINALLY { + EXPECT_EQ(player->hp, 80) + EXPECT_EQ(player->maxHP, 100) + } +} +*/ + +// MAX MOVE EFFECTS +SINGLE_BATTLE_TEST("(DYNAMAX) Max Strike lowers single opponent's speed") +{ + GIVEN { + // Fails?: ASSUME(GetMaxMove(B_POSITION_PLAYER_LEFT, MOVE_TACKLE) == MOVE_MAX_STRIKE); + ASSUME(gBattleMoves[MOVE_MAX_STRIKE].argument == MAX_EFFECT_LOWER_SPEED); + OPPONENT(SPECIES_WOBBUFFET) { Speed(100); } + PLAYER(SPECIES_WOBBUFFET) { Speed(80); } + } WHEN { + TURN { MOVE(opponent, MOVE_TACKLE); MOVE(player, MOVE_TACKLE, dynamax: TRUE); } + TURN { MOVE(player, MOVE_TACKLE); MOVE(opponent, MOVE_TACKLE); } + } SCENE { + // turn 1 + MESSAGE("Foe Wobbuffet used Tackle!"); + MESSAGE("Wobbuffet used Max Strike!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + MESSAGE("Foe Wobbuffet's speed fell!"); + // turn 2 + MESSAGE("Wobbuffet used Max Strike!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + MESSAGE("Foe Wobbuffet's speed fell!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + } +} + +DOUBLE_BATTLE_TEST("(DYNAMAX) Max Strike lowers both opponents' speed") +{ + GIVEN { + // Fails? ASSUME(GetMaxMove(B_POSITION_PLAYER_LEFT, MOVE_TACKLE) == MOVE_MAX_STRIKE); + ASSUME(gBattleMoves[MOVE_MAX_STRIKE].argument == MAX_EFFECT_LOWER_SPEED); + PLAYER(SPECIES_WOBBUFFET) { Speed(80); } + PLAYER(SPECIES_WOBBUFFET) { Speed(79); } + OPPONENT(SPECIES_WOBBUFFET) {Speed(100); } + OPPONENT(SPECIES_WOBBUFFET) { Speed(99); } + } WHEN { + TURN { MOVE(playerLeft, MOVE_TACKLE, target: opponentLeft, dynamax: TRUE); \ + MOVE(opponentLeft, MOVE_TACKLE, target: playerLeft); \ + MOVE(opponentRight, MOVE_TACKLE, target: playerLeft); } + TURN { MOVE(playerLeft, MOVE_TACKLE, target: opponentLeft); \ + MOVE(opponentLeft, MOVE_TACKLE, target: playerLeft); \ + MOVE(opponentRight, MOVE_TACKLE, target: playerLeft); } + } SCENE { + // turn 1 + MESSAGE("Foe Wobbuffet used Tackle!"); + MESSAGE("Foe Wobbuffet used Tackle!"); + MESSAGE("Wobbuffet used Max Strike!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentLeft); + MESSAGE("Foe Wobbuffet's speed fell!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentRight); + MESSAGE("Foe Wobbuffet's speed fell!"); + // turn 2 + MESSAGE("Wobbuffet used Max Strike!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentLeft); + MESSAGE("Foe Wobbuffet's speed fell!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentRight); + MESSAGE("Foe Wobbuffet's speed fell!"); + MESSAGE("Foe Wobbuffet used Tackle!"); + MESSAGE("Foe Wobbuffet used Tackle!"); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Max Flare sets up sunlight.") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_MAX_FLARE].argument == MAX_EFFECT_SUN); + OPPONENT(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_EMBER, dynamax: TRUE); MOVE(opponent, MOVE_CELEBRATE); } + } SCENE { + MESSAGE("Wobbuffet used Max Flare!"); + MESSAGE("The sunlight got bright!"); + MESSAGE("Foe Wobbuffet used Celebrate!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_SUN_CONTINUES); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Max Overgrowth sets up Grassy Terrain.") +{ + KNOWN_FAILING + GIVEN { + ASSUME(gBattleMoves[MOVE_MAX_OVERGROWTH].argument == MAX_EFFECT_GRASSY_TERRAIN); + OPPONENT(SPECIES_WOBBUFFET) { MaxHP(256); HP(128); } + PLAYER(SPECIES_WOBBUFFET) { MaxHP(256); HP(128); } + } WHEN { + TURN { MOVE(player, MOVE_VINE_WHIP, dynamax: TRUE); MOVE(opponent, MOVE_CELEBRATE); } + TURN {} + } SCENE { + MESSAGE("Wobbuffet used Max Overgrowth!"); + MESSAGE("Foe Wobbuffet used Celebrate!"); + //HP_BAR(player, damage: -player->maxHP / 16); + } +} diff --git a/test/test_battle.h b/test/test_battle.h index 16918251b1..5e2306a7a5 100644 --- a/test/test_battle.h +++ b/test/test_battle.h @@ -722,6 +722,7 @@ struct MoveContext u16 megaEvolve:1; u16 explicitMegaEvolve:1; // TODO: u8 zMove:1; + u16 dynamax:1; u16 allowed:1; u16 explicitAllowed:1; struct BattlePokemon *target; diff --git a/test/test_runner_battle.c b/test/test_runner_battle.c index ec7ba275c2..8043aba51c 100644 --- a/test/test_runner_battle.c +++ b/test/test_runner_battle.c @@ -1217,6 +1217,9 @@ void Move(u32 sourceLine, struct BattlePokemon *battler, struct MoveContext ctx) if (ctx.explicitMegaEvolve && ctx.megaEvolve) moveSlot |= RET_MEGA_EVOLUTION; + + if (ctx.dynamax) + moveSlot |= RET_DYNAMAX; if (ctx.explicitTarget) { From 4c28b6384f5f57787e3908a81ffefe64675b98a1 Mon Sep 17 00:00:00 2001 From: AgustinGDLV Date: Mon, 13 Mar 2023 21:24:14 -0700 Subject: [PATCH 040/162] added first set of Dynamax tests --- test/dynamax.c | 390 ++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 370 insertions(+), 20 deletions(-) diff --git a/test/dynamax.c b/test/dynamax.c index ca05b4bd08..fee7336be6 100644 --- a/test/dynamax.c +++ b/test/dynamax.c @@ -1,28 +1,42 @@ #include "global.h" #include "test_battle.h" +// TODO: +// Max Moves cannot miss. +// Max Guard protects against Transform, Block (not Mean Look), Flower Shield, Gear Up, and so on (see Bulba). +// Max Moves penetrate Protect, but not Max Guard. +// Feint damages through Max Guard, but doesn't break it. +// You can ignore the effect of Encore / Disable with Max Moves. +// You can Encore the base move of a Max Move after Dynamax, but not Disable or Instruct. +// Imprison doesn't stop Max Moves. +// Copycat copies the base move of a Max Move (even Trick Room!). +// Assault Vest prevents the use of Max Guard; so does Taunt. +// Max Moves change type as you'd expect with Normalize, Weather Ball, etc. +// Dynamax Cannon and such do double damage on Dynamaxed opponents. + // DYNAMAX FEATURES -/* SINGLE_BATTLE_TEST("(DYNAMAX) Dynamax increases HP and max HP by 1.5x") { GIVEN { // TODO: Dynamax level PLAYER(SPECIES_WOBBUFFET) { MaxHP(100); HP(80); } - OPPONENT(SPECIES_WOBBUFFET) + OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); MOVE(opponent, MOVE_CELEBRATE); } } SCENE { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_DYNAMAX_GROWTH, player); MESSAGE("Wobbuffet used Max Strike!"); MESSAGE("Foe Wobbuffet used Celebrate!"); + } FINALLY { + EXPECT_EQ(player->hp, 120); + EXPECT_EQ(player->maxHP, 150); } } -*/ -/* -SINGLE_BATTLE_TEST("(DYNAMAX) Dynamax expires after three turns.") + +SINGLE_BATTLE_TEST("(DYNAMAX) Dynamax expires after three turns") { GIVEN { PLAYER(SPECIES_WOBBUFFET) { MaxHP(100); HP(80); } - OPPONENT(SPECIES_WOBBUFFET) + OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); } // 1st max move TURN { MOVE(player, MOVE_TACKLE); } // 2nd max move @@ -35,13 +49,283 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Dynamax expires after three turns.") } ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player); } FINALLY { - EXPECT_EQ(player->hp, 80) - EXPECT_EQ(player->maxHP, 100) + EXPECT_EQ(player->hp, 80); + EXPECT_EQ(player->maxHP, 100); } } -*/ -// MAX MOVE EFFECTS +SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon cannot be flinched") +{ + KNOWN_FAILING; + GIVEN { + ASSUME(gBattleMoves[MOVE_FAKE_OUT].effect == EFFECT_FAKE_OUT); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_FAKE_OUT); MOVE(player, MOVE_TACKLE, dynamax: TRUE); } + } SCENE { + MESSAGE("Foe Wobbuffet used Fake Out!"); + MESSAGE("Wobbuffet used Max Strike!"); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon cannot be hit by weight-based moves") +{ + // Message is "Steelix shook its head. It seems like it can't use this move..."? + KNOWN_FAILING; + GIVEN { + ASSUME(gBattleMoves[MOVE_HEAVY_SLAM].effect == EFFECT_HEAT_CRASH); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_HEAVY_SLAM); MOVE(player, MOVE_TACKLE, dynamax: TRUE); } + } SCENE { + MESSAGE("Foe Wobbuffet used Heavy Slam!"); + MESSAGE("Wobbuffet is unaffected!"); + MESSAGE("Wobbuffet used Max Strike!"); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon cannot be hit by OHKO moves") +{ + KNOWN_FAILING; + GIVEN { + ASSUME(gBattleMoves[MOVE_FISSURE].effect == EFFECT_OHKO); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_MACHAMP) { Ability(ABILITY_NO_GUARD); } + } WHEN { + TURN { MOVE(opponent, MOVE_FISSURE); MOVE(player, MOVE_TACKLE, dynamax: TRUE); } + } SCENE { + MESSAGE("Foe Wobbuffet used Fissure!"); + MESSAGE("Wobbuffet is unaffected!"); + NONE_OF { HP_BAR(player); } + MESSAGE("Wobbuffet used Max Strike!"); + } +} + +// can't be used at all in Raid, see "Documenting Dynamax" +SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon are not affected by Destiny Bond") +{ + KNOWN_FAILING; + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET) { HP(1); } + } WHEN { + TURN { MOVE(opponent, MOVE_DESTINY_BOND); MOVE(player, MOVE_TACKLE, dynamax: TRUE); } + } SCENE { + MESSAGE("Foe Wobbuffet used Destiny Bond!"); + MESSAGE("Wobbuffet used Max Strike!"); + MESSAGE("Foe Wobbuffet fainted!"); + NONE_OF { HP_BAR(player); } + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon are affected by Grudge") +{ + KNOWN_FAILING; + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET) { HP(1); } + } WHEN { + TURN { MOVE(opponent, MOVE_GRUDGE); MOVE(player, MOVE_TACKLE, dynamax: TRUE); } + } SCENE { + MESSAGE("Foe Wobbuffet used Grudge!"); + MESSAGE("Wobbuffet used Max Strike!"); + MESSAGE("Wobbuffet's Tackle lost all its PP due to the GRUDGE!"); + MESSAGE("Foe Wobbuffet fainted!"); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon are not affected by phazing moves, but still take damage") +{ + KNOWN_FAILING; + GIVEN { + ASSUME(gBattleMoves[MOVE_DRAGON_TAIL].effect == EFFECT_HIT_SWITCH_TARGET); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_DRAGON_TAIL); MOVE(player, MOVE_TACKLE, dynamax: TRUE); } + TURN {} + } SCENE { + MESSAGE("Wobbuffet used Max Strike!"); + MESSAGE("Foe Wobbuffet used Dragon Tail!"); + MESSAGE("The move was blocked by the power of Dynamax!"); + HP_BAR(player); + MESSAGE("Wobbuffet used Max Guard!"); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon are not affected by Red Card") +{ + KNOWN_FAILING; + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_RED_CARD); } + } WHEN { + TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); MOVE(opponent, MOVE_CELEBRATE); } + } SCENE { + MESSAGE("Wobbuffet used Max Strike!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); + MESSAGE("Foe Wobbuffet held up its Red Card against Wobbuffet!"); + MESSAGE("The move was blocked by the power of Dynamax!"); + } FINALLY { + EXPECT_EQ(opponent->item, ITEM_NONE); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon can be switched out by Eject Button") +{ + KNOWN_FAILING; + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_EJECT_BUTTON); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); MOVE(opponent, MOVE_TACKLE); } + } SCENE { + MESSAGE("Wobbuffet used Max Strike!"); + MESSAGE("Foe Wobbuffet used Tackle!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); + MESSAGE("Wobbuffet is switched out with the Eject Button!"); + } FINALLY { + EXPECT_EQ(opponent->item, ITEM_NONE); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon cannot have their ability swapped with another Pokemon") +{ + KNOWN_FAILING; + GIVEN { + ASSUME(P_GEN_8_POKEMON == TRUE); + PLAYER(SPECIES_WOBBUFFET) { Ability(ABILITY_SHADOW_TAG); } + OPPONENT(SPECIES_RUNERIGUS) { Ability(ABILITY_WANDERING_SPIRIT); } + } WHEN { + TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); MOVE(opponent, MOVE_SKILL_SWAP); } + } SCENE { + MESSAGE("Wobbuffet used Max Strike!"); + MESSAGE("Foe Wobbuffet used Skill Swap!"); + MESSAGE("But it failed!"); + } FINALLY { + EXPECT_EQ(player->ability, ABILITY_SHADOW_TAG); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon can have their ability changed") +{ + KNOWN_FAILING; + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Ability(ABILITY_SHADOW_TAG); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); MOVE(opponent, MOVE_SIMPLE_BEAM); } + } SCENE { + MESSAGE("Wobbuffet used Max Strike!"); + MESSAGE("Foe Wobbuffet used Simple Beam!"); + MESSAGE("Wobbuffet acquired Simple!"); + } FINALLY { + EXPECT_EQ(player->ability, ABILITY_SIMPLE); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon are immune to Encore") +{ + KNOWN_FAILING; + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); MOVE(opponent, MOVE_ENCORE); } + } SCENE { + MESSAGE("Wobbuffet used Max Strike!"); + MESSAGE("Foe Wobbuffet used Encore!"); + MESSAGE("But it failed!"); + } +} + +// TODO: Test Cursed Body, too. +SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon's Max Moves cannot be disabled") +{ + KNOWN_FAILING; + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); MOVE(opponent, MOVE_DISABLE); } + } SCENE { + MESSAGE("Wobbuffet used Max Strike!"); + MESSAGE("Foe Wobbuffet used Disable!"); + MESSAGE("But it failed!"); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon can have base moves disabled on their first turn") +{ + KNOWN_FAILING; + GIVEN { + ASSUME(B_DISABLE_TURNS >= GEN_5); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_DISABLE); MOVE(player, MOVE_TACKLE, dynamax: TRUE); } + TURN {} + TURN {} + TURN {} // TODO: Tackle should still be disabled. + } SCENE { + MESSAGE("Foe Wobbuffet used Disable!"); + MESSAGE("Wobbuffet's Tackle was disabled!"); + MESSAGE("Wobbuffet used Max Strike!"); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon are immune to Torment") +{ + KNOWN_FAILING; + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); MOVE(opponent, MOVE_TORMENT); } + } SCENE { + MESSAGE("Wobbuffet used Max Strike!"); + MESSAGE("Foe Wobbuffet used Torment!"); + MESSAGE("But it failed!"); + } +} + +// This is true for all item-removing moves. +SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon are not immune to Knock Off") +{ + KNOWN_FAILING; + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_POTION); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); MOVE(opponent, MOVE_KNOCK_OFF); } + } SCENE { + MESSAGE("Wobbuffet used Max Strike!"); + MESSAGE("Foe Wobbuffet used Knock Off!"); + MESSAGE("Wobbuffet's Potion was knocked off!"); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon lose their substitutes") +{ + KNOWN_FAILING; + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_SUBSTITUTE); MOVE(opponent, MOVE_CELEBRATE); } + TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); MOVE(opponent, MOVE_TACKLE); } + } SCENE { + MESSAGE("Wobbuffet used Substitute!"); + MESSAGE("Wobbuffet set up a substitute!"); + MESSAGE("Wobbuffet used Max Strike!"); + MESSAGE("Foe Wobbuffet used Tackle!"); + HP_BAR(player); + } +} + +// ============= MAX MOVE EFFECTS =================== SINGLE_BATTLE_TEST("(DYNAMAX) Max Strike lowers single opponent's speed") { GIVEN { @@ -102,7 +386,7 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) Max Strike lowers both opponents' speed") } } -SINGLE_BATTLE_TEST("(DYNAMAX) Max Flare sets up sunlight.") +SINGLE_BATTLE_TEST("(DYNAMAX) Max Flare sets up sunlight") { GIVEN { ASSUME(gBattleMoves[MOVE_MAX_FLARE].argument == MAX_EFFECT_SUN); @@ -118,19 +402,85 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Max Flare sets up sunlight.") } } -SINGLE_BATTLE_TEST("(DYNAMAX) Max Overgrowth sets up Grassy Terrain.") +SINGLE_BATTLE_TEST("(DYNAMAX) Max Geyser sets up heavy rain") { - KNOWN_FAILING GIVEN { - ASSUME(gBattleMoves[MOVE_MAX_OVERGROWTH].argument == MAX_EFFECT_GRASSY_TERRAIN); - OPPONENT(SPECIES_WOBBUFFET) { MaxHP(256); HP(128); } - PLAYER(SPECIES_WOBBUFFET) { MaxHP(256); HP(128); } + ASSUME(gBattleMoves[MOVE_MAX_GEYSER].argument == MAX_EFFECT_RAIN); + OPPONENT(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_VINE_WHIP, dynamax: TRUE); MOVE(opponent, MOVE_CELEBRATE); } - TURN {} + TURN { MOVE(player, MOVE_WATER_GUN, dynamax: TRUE); MOVE(opponent, MOVE_CELEBRATE); } } SCENE { - MESSAGE("Wobbuffet used Max Overgrowth!"); + MESSAGE("Wobbuffet used Max Geyser!"); + MESSAGE("It started to rain!"); MESSAGE("Foe Wobbuffet used Celebrate!"); - //HP_BAR(player, damage: -player->maxHP / 16); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_RAIN_CONTINUES); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Max Hailstorm sets up hail") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_MAX_HAILSTORM].argument == MAX_EFFECT_HAIL); + OPPONENT(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_POWDER_SNOW, dynamax: TRUE); MOVE(opponent, MOVE_CELEBRATE); } + } SCENE { + MESSAGE("Wobbuffet used Max Hailstorm!"); + MESSAGE("It started to hail!"); + MESSAGE("Foe Wobbuffet used Celebrate!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HAIL_CONTINUES); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Max Rockfall sets up a sandstorm") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_MAX_ROCKFALL].argument == MAX_EFFECT_SANDSTORM); + OPPONENT(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_ROCK_THROW, dynamax: TRUE); MOVE(opponent, MOVE_CELEBRATE); } + } SCENE { + MESSAGE("Wobbuffet used Max Rockfall!"); + MESSAGE("A sandstorm brewed!"); + MESSAGE("Foe Wobbuffet used Celebrate!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_SANDSTORM_CONTINUES); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Max Overgrowth sets up Grassy Terrain") +{ + KNOWN_FAILING; // Grassy terrain bugged #2820 + GIVEN { + ASSUME(gBattleMoves[MOVE_MAX_OVERGROWTH].argument == MAX_EFFECT_GRASSY_TERRAIN); + OPPONENT(SPECIES_WOBBUFFET) { MaxHP(256); HP(128); }; + PLAYER(SPECIES_WOBBUFFET) { MaxHP(256); HP(128); }; + } WHEN { + TURN { MOVE(player, MOVE_VINE_WHIP, dynamax: TRUE); MOVE(opponent, MOVE_CELEBRATE); } + TURN { MOVE(player, MOVE_VINE_WHIP); MOVE(opponent, MOVE_CELEBRATE); } + } SCENE { + MESSAGE("Wobbuffet used Max Overgrowth!"); + MESSAGE("Foe Wobbuffet cannot use Celebrate!"); + HP_BAR(player, damage: -256/16); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Max Mindstorm sets up Psychic Terrain") +{ + // TODO: BG doesn't seem to load? + GIVEN { + ASSUME(gBattleMoves[MOVE_MAX_MINDSTORM].argument == MAX_EFFECT_PSYCHIC_TERRAIN); + OPPONENT(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_EXTREME_SPEED); MOVE(player, MOVE_PSYCHIC, dynamax: TRUE); } + TURN { MOVE(opponent, MOVE_EXTREME_SPEED); MOVE(player, MOVE_PSYCHIC); } + } SCENE { + MESSAGE("Foe Wobbuffet used ExtremeSpeed!"); + MESSAGE("Wobbuffet used Max Mindstorm!"); + MESSAGE("Foe Wobbuffet cannot use ExtremeSpeed!"); + MESSAGE("Wobbuffet used Max Mindstorm!"); } } From 7d70222770ebcbd7225511641cffca8a7df159f9 Mon Sep 17 00:00:00 2001 From: AgustinGDLV Date: Mon, 20 Mar 2023 16:40:05 -0700 Subject: [PATCH 041/162] added most Dynamax immunities/interactions + tests + fixed some move selection bugs --- asm/macros/battle_script.inc | 5 + data/battle_scripts_1.s | 28 +++ include/battle.h | 3 +- include/battle_dynamax.h | 10 +- include/battle_scripts.h | 1 + include/constants/battle.h | 3 + include/constants/battle_script_commands.h | 3 +- include/constants/battle_string_ids.h | 3 +- src/battle_controller_player.c | 7 + src/battle_dynamax.c | 34 ++- src/battle_main.c | 6 +- src/battle_message.c | 2 + src/battle_script_commands.c | 109 ++++++--- src/battle_util.c | 25 +- src/data/battle_moves.h | 102 ++++----- test/dynamax.c | 252 ++++++++++++++++----- 16 files changed, 432 insertions(+), 161 deletions(-) diff --git a/asm/macros/battle_script.inc b/asm/macros/battle_script.inc index 08e3e37ed6..40bf528337 100644 --- a/asm/macros/battle_script.inc +++ b/asm/macros/battle_script.inc @@ -2257,6 +2257,11 @@ various 0, VARIOUS_UPDATE_DYNAMAX .endm + .macro jumpiftargetdynamaxed, ptr:req + various 0, VARIOUS_JUMP_IF_TARGET_DYNAMAXED + .4byte \ptr + .endm + @ Tries to increase or decrease a battler's stat's stat stage by a specified amount. If impossible, jumps to \script. .macro modifybattlerstatstage battler:req, stat:req, mode:req, amount:req, script:req, animation:req, customString diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 902a993f1f..76bdffc22f 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -2156,10 +2156,14 @@ BattleScript_EffectHitSwitchTarget: moveendall jumpifability BS_TARGET, ABILITY_SUCTION_CUPS, BattleScript_AbilityPreventsPhasingOut jumpifstatus3 BS_TARGET, STATUS3_ROOTED, BattleScript_PrintMonIsRooted + jumpiftargetdynamaxed BattleScript_HitSwitchTargetDynamaxed tryhitswitchtarget BattleScript_MoveEnd forcerandomswitch BattleScript_HitSwitchTargetForceRandomSwitchFailed goto BattleScript_MoveEnd +BattleScript_HitSwitchTargetDynamaxed: + printstring STRINGID_MOVEBLOCKEDBYDYNAMAX + waitmessage B_WAIT_TIME_LONG BattleScript_HitSwitchTargetForceRandomSwitchFailed: hitswitchtargetfailed setbyte sSWITCH_CASE, B_SWITCH_NORMAL @@ -3753,11 +3757,17 @@ BattleScript_EffectRoar:: jumpifability BS_TARGET, ABILITY_GUARD_DOG, BattleScript_ButItFailed jumpifability BS_TARGET, ABILITY_SUCTION_CUPS, BattleScript_AbilityPreventsPhasingOut jumpifstatus3 BS_TARGET, STATUS3_ROOTED, BattleScript_PrintMonIsRooted + jumpiftargetdynamaxed BattleScript_RoarBlockedByDynamax accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE jumpifbattletype BATTLE_TYPE_ARENA, BattleScript_ButItFailed forcerandomswitch BattleScript_ButItFailed +BattleScript_RoarBlockedByDynamax: + printstring STRINGID_MOVEBLOCKEDBYDYNAMAX + waitmessage B_WAIT_TIME_LONG + goto BattleScript_MoveEnd + BattleScript_EffectMultiHit:: attackcanceler accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE @@ -10215,6 +10225,7 @@ BattleScript_RedCardActivates:: swapattackerwithtarget jumpifstatus3 BS_EFFECT_BATTLER, STATUS3_ROOTED, BattleScript_RedCardIngrain jumpifability BS_EFFECT_BATTLER, ABILITY_SUCTION_CUPS, BattleScript_RedCardSuctionCups + jumpiftargetdynamaxed BattleScript_RedCardDynamaxed setbyte sSWITCH_CASE, B_SWITCH_RED_CARD forcerandomswitch BattleScript_RedCardEnd @ changes the current battle script. the rest happens in BattleScript_RoarSuccessSwitch_Ret, if switch is successful @@ -10232,6 +10243,12 @@ BattleScript_RedCardSuctionCups: removeitem BS_SCRIPTING swapattackerwithtarget return +BattleScript_RedCardDynamaxed: + printstring STRINGID_MOVEBLOCKEDBYDYNAMAX + waitmessage B_WAIT_TIME_LONG + removeitem BS_SCRIPTING + swapattackerwithtarget + return BattleScript_EjectButtonActivates:: makevisible BS_ATTACKER @@ -10632,6 +10649,17 @@ BattleScript_DynamaxEnds:: waitanimation end2 +BattleScript_MoveBlockedByDynamax:: + accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE + attackstring + pause B_WAIT_TIME_SHORT + ppreduce + jumpifword CMP_COMMON_BITS, gHitMarker, HITMARKER_STRING_PRINTED, BattleScript_MoveEnd + printstring STRINGID_MOVEBLOCKEDBYDYNAMAX + waitmessage B_WAIT_TIME_LONG + orword gHitMarker, HITMARKER_STRING_PRINTED + goto BattleScript_MoveEnd + BattleScript_PokemonCantUseTheMove:: attackstring ppreduce diff --git a/include/battle.h b/include/battle.h index 09e1b2cdb5..5366ce75e9 100644 --- a/include/battle.h +++ b/include/battle.h @@ -530,7 +530,8 @@ struct DynamaxData u8 usingMaxMove[MAX_BATTLERS_COUNT]; u8 activeSplit; u8 splits[MAX_BATTLERS_COUNT]; - u8 moveSlot[MAX_BATTLERS_COUNT]; // move slot of Max Move, used for Spite, TODO: Copycat, Encore, Grudge + u16 baseMove[MAX_BATTLERS_COUNT]; // base move of Max Move + u16 lastUsedBaseMove; }; struct StolenItem diff --git a/include/battle_dynamax.h b/include/battle_dynamax.h index 3854d4c032..1d6d8cd807 100644 --- a/include/battle_dynamax.h +++ b/include/battle_dynamax.h @@ -56,15 +56,17 @@ enum MaxMoveEffect MAX_EFFECT_BYPASS_PROTECT, }; -bool8 IsDynamaxed(u16 battlerId); -bool8 CanDynamax(u16 battlerId); +bool32 IsDynamaxed(u16 battlerId); +bool32 CanDynamax(u16 battlerId); void ApplyDynamaxHPMultiplier(u16 battlerId, struct Pokemon* mon); void PrepareBattlerForDynamax(u16 battlerId); void UndoDynamax(u16 battlerId); -bool8 ShouldUseMaxMove(u16 battlerId, u16 baseMove); +bool32 IsMoveBlockedByDynamax(u16 move); + +bool32 ShouldUseMaxMove(u16 battlerId, u16 baseMove); u16 GetMaxMove(u16 battlerId, u16 baseMove); u8 GetMaxMovePower(u16 move); -bool8 IsMaxMove(u16 move); +bool32 IsMaxMove(u16 move); const u8 *GetMaxMoveName(u16 move); void ChooseDamageNonTypesString(u8 type); u32 GetMaxMoveStatusEffect(u16 move); diff --git a/include/battle_scripts.h b/include/battle_scripts.h index 7252ffebd1..70acc0824a 100644 --- a/include/battle_scripts.h +++ b/include/battle_scripts.h @@ -495,5 +495,6 @@ extern const u8 BattleScript_EffectRecycleBerriesAllies[]; // dynamax and max raids extern const u8 BattleScript_DynamaxBegins[]; extern const u8 BattleScript_DynamaxEnds[]; +extern const u8 BattleScript_MoveBlockedByDynamax[]; #endif // GUARD_BATTLE_SCRIPTS_H \ No newline at end of file diff --git a/include/constants/battle.h b/include/constants/battle.h index 5504a0647d..d281494cb7 100644 --- a/include/constants/battle.h +++ b/include/constants/battle.h @@ -495,4 +495,7 @@ #define PARENTAL_BOND_2ND_HIT 1 #define PARENTAL_BOND_OFF 0 +// Constants for Torment +#define PERMANENT_TORMENT 0xF + #endif // GUARD_CONSTANTS_BATTLE_H diff --git a/include/constants/battle_script_commands.h b/include/constants/battle_script_commands.h index 507702cfaa..7b827afd58 100644 --- a/include/constants/battle_script_commands.h +++ b/include/constants/battle_script_commands.h @@ -267,7 +267,8 @@ #define VARIOUS_TRY_SET_STATUS2 175 #define VARIOUS_TRY_HEAL_SIXTH_HP 176 #define VARIOUS_TRY_RECYCLE_BERRY 177 -#define VARIOUS_UPDATE_DYNAMAX 178 +#define VARIOUS_UPDATE_DYNAMAX 178 +#define VARIOUS_JUMP_IF_TARGET_DYNAMAXED 179 // Cmd_manipulatedamage #define DMG_CHANGE_SIGN 0 diff --git a/include/constants/battle_string_ids.h b/include/constants/battle_string_ids.h index 6855f5ec05..a7d5c7c287 100644 --- a/include/constants/battle_string_ids.h +++ b/include/constants/battle_string_ids.h @@ -658,8 +658,9 @@ #define STRINGID_PKMNBURNINGUP 656 #define STRINGID_TEAMSURROUNDEDBYROCKS 657 #define STRINGID_PKMNHURTBYROCKSTHROWN 658 +#define STRINGID_MOVEBLOCKEDBYDYNAMAX 659 -#define BATTLESTRINGS_COUNT 659 +#define BATTLESTRINGS_COUNT 660 // This is the string id that gBattleStringsTable starts with. // String ids before this (e.g. STRINGID_INTROMSG) are not in the table, diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c index 2824944896..22f0c5c81a 100644 --- a/src/battle_controller_player.c +++ b/src/battle_controller_player.c @@ -632,6 +632,13 @@ static void HandleInputChooseMove(void) moveTarget = MOVE_TARGET_SELECTED; //damaging z moves always have selected target } + // Status moves turn into Max Guard when Dynamaxed, targets user. + if ((IsDynamaxed(gActiveBattler) || gBattleStruct->dynamax.playerSelect) + && gBattleMoves[moveInfo->moves[gMoveSelectionCursor[gActiveBattler]]].split == SPLIT_STATUS) + { + moveTarget = MOVE_TARGET_USER; + } + if (moveTarget & MOVE_TARGET_USER) gMultiUsePlayerCursor = gActiveBattler; else diff --git a/src/battle_dynamax.c b/src/battle_dynamax.c index 29419e2f64..7d84872544 100644 --- a/src/battle_dynamax.c +++ b/src/battle_dynamax.c @@ -92,7 +92,7 @@ static void SpriteCb_DynamaxTrigger(struct Sprite *); static void SpriteCb_DynamaxIndicator(struct Sprite *); // Returns whether a battler is Dynamaxed. -bool8 IsDynamaxed(u16 battlerId) +bool32 IsDynamaxed(u16 battlerId) { u8 side = GetBattlerSide(battlerId); if (gBattleStruct->dynamax.dynamaxed[battlerId] @@ -102,13 +102,17 @@ bool8 IsDynamaxed(u16 battlerId) } // Returns whether a battler can Dynamax. -bool8 CanDynamax(u16 battlerId) +bool32 CanDynamax(u16 battlerId) { // TODO: Requires Dynamax Band if not in a Max Raid (as well as special flag). + u16 species = gBattleMons[battlerId].species; if (!gBattleStruct->dynamax.alreadyDynamaxed[GetBattlerSide(battlerId)] && !gBattleStruct->dynamax.dynamaxed[battlerId] && !gBattleStruct->dynamax.dynamaxed[BATTLE_PARTNER(battlerId)] - && !gBattleStruct->dynamax.toDynamax[BATTLE_PARTNER(battlerId)]) + && !gBattleStruct->dynamax.toDynamax[BATTLE_PARTNER(battlerId)] + && species != SPECIES_ZACIAN && species != SPECIES_ZACIAN_CROWNED_SWORD + && species != SPECIES_ZAMAZENTA && species != SPECIES_ZAMAZENTA_CROWNED_SHIELD + && species != SPECIES_ETERNATUS && species != SPECIES_ETERNATUS_ETERNAMAX) return TRUE; return FALSE; } @@ -138,6 +142,13 @@ void PrepareBattlerForDynamax(u16 battlerId) gBattleStruct->dynamax.dynamaxed[battlerId] = TRUE; gBattleStruct->dynamax.dynamaxTurns[battlerId] = DYNAMAX_TURNS; + // Substitute is removed upon Dynamaxing. + gBattleMons[battlerId].status2 &= ~STATUS2_SUBSTITUTE; + ClearBehindSubstituteBit(battlerId); + + // Choiced Moves are reset upon Dynamaxing. + gBattleStruct->choicedMove[battlerId] = MOVE_NONE; + // Try Gigantamax form change. newSpecies = GetBattleFormChangeTargetSpecies(battlerId, FORM_CHANGE_BATTLE_GIGANTAMAX); if (newSpecies != SPECIES_NONE) @@ -156,8 +167,21 @@ void UndoDynamax(u16 battlerId) TryBattleFormChange(battlerId, FORM_CHANGE_BATTLE_SWITCH); // TODO: maybe nicer way to do this? } +// Weight-based moves (and some other moves in Raids) are blocked by Dynamax. +bool32 IsMoveBlockedByDynamax(u16 move) +{ + // TODO: Raid moves + switch (gBattleMoves[move].effect) + { + case EFFECT_HEAT_CRASH: + case EFFECT_LOW_KICK: + return TRUE; + } + return FALSE; +} + // Returns whether a move should be converted into a Max Move. -bool8 ShouldUseMaxMove(u16 battlerId, u16 baseMove) +bool32 ShouldUseMaxMove(u16 battlerId, u16 baseMove) { // TODO: Raids //if (IsRaidBoss(battlerId)) @@ -257,7 +281,7 @@ u8 GetMaxMovePower(u16 move) } // Returns whether a move is a Max Move or not. -bool8 IsMaxMove(u16 move) +bool32 IsMaxMove(u16 move) { return move >= FIRST_MAX_MOVE && move <= LAST_MAX_MOVE; } diff --git a/src/battle_main.c b/src/battle_main.c index 8c4e1118e2..56fe1e5fac 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -4156,6 +4156,8 @@ static void HandleTurnActionSelectionState(void) } gBattleStruct->mega.toEvolve &= ~(gBitTable[BATTLE_PARTNER(GetBattlerPosition(gActiveBattler))]); + gBattleStruct->dynamax.toDynamax[gActiveBattler] = FALSE; + gBattleStruct->dynamax.usingMaxMove[gActiveBattler] = FALSE; gBattleStruct->zmove.toBeUsed[BATTLE_PARTNER(GetBattlerPosition(gActiveBattler))] = MOVE_NONE; BtlController_EmitEndBounceEffect(BUFFER_A); MarkBattlerForControllerExec(gActiveBattler); @@ -4251,7 +4253,7 @@ static void HandleTurnActionSelectionState(void) gBattleStruct->dynamax.toDynamax[gActiveBattler] = TRUE; if (ShouldUseMaxMove(gActiveBattler, gChosenMoveByBattler[gActiveBattler])) // max move check { - gBattleStruct->dynamax.moveSlot[gActiveBattler] = gBattleStruct->chosenMovePositions[gActiveBattler]; + gBattleStruct->dynamax.baseMove[gActiveBattler] = gBattleMons[gActiveBattler].moves[gBattleStruct->chosenMovePositions[gActiveBattler]]; gBattleStruct->dynamax.usingMaxMove[gActiveBattler] = TRUE; } gBattleCommunication[gActiveBattler]++; @@ -4520,7 +4522,7 @@ u32 GetBattlerTotalSpeedStat(u8 battlerId) speed /= 2; else if (holdEffect == HOLD_EFFECT_IRON_BALL) speed /= 2; - else if (holdEffect == HOLD_EFFECT_CHOICE_SCARF) + else if (holdEffect == HOLD_EFFECT_CHOICE_SCARF && !IsDynamaxed(battlerId)) speed = (speed * 150) / 100; else if (holdEffect == HOLD_EFFECT_QUICK_POWDER && gBattleMons[battlerId].species == SPECIES_DITTO && !(gBattleMons[battlerId].status2 & STATUS2_TRANSFORMED)) speed *= 2; diff --git a/src/battle_message.c b/src/battle_message.c index 49c88cc0c4..ec6a2dffdc 100644 --- a/src/battle_message.c +++ b/src/battle_message.c @@ -793,9 +793,11 @@ static const u8 sText_TeamSurroundedByRocks[] = _("{B_DEF_TEAM1} team was surrou static const u8 sText_PkmnHurtByRocksThrown[] = _("{B_ATK_NAME_WITH_PREFIX} is hurt by\nrocks thrown out by G-Max Volcalith!"); static const u8 sText_CouldntFullyProtect[] = _("{B_DEF_NAME_WITH_PREFIX} couldn't fully protect\nitself and got hurt!"); static const u8 sText_StockpiledEffectWoreOff[] = _("{B_ATK_NAME_WITH_PREFIX}'s stockpiled\neffect wore off!"); +static const u8 sText_MoveBlockedByDynamax[] = _("The move was blocked by\nthe power of Dynamax!"); const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT] = { + [STRINGID_MOVEBLOCKEDBYDYNAMAX - BATTLESTRINGS_TABLE_START] = sText_MoveBlockedByDynamax, [STRINGID_STOCKPILEDEFFECTWOREOFF - BATTLESTRINGS_TABLE_START] = sText_StockpiledEffectWoreOff, [STRINGID_COULDNTFULLYPROTECT - BATTLESTRINGS_TABLE_START] = sText_CouldntFullyProtect, [STRINGID_PKMNHURTBYROCKSTHROWN - BATTLESTRINGS_TABLE_START] = sText_PkmnHurtByRocksThrown, diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 2a75e34e81..8b969a6589 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -971,7 +971,7 @@ static const u16 sProtectSuccessRates[] = {USHRT_MAX, USHRT_MAX / 2, USHRT_MAX / #define FORBIDDEN_INSTRUCT (1 << 5) #define FORBIDDEN_PARENTAL_BOND (1 << 6) -static const u8 sForbiddenMoves[MOVES_COUNT] = +static const u8 sForbiddenMoves[MOVES_COUNT_DYNAMAX] = { [MOVE_NONE] = 0xFF, // Can't use a non-move lol [MOVE_STRUGGLE] = 0xFF, // Neither Struggle @@ -1481,6 +1481,14 @@ static void Cmd_attackcanceler(void) } } + // Weight-based moves are blocked by Dynamax. + if (IsDynamaxed(gBattlerTarget) && IsMoveBlockedByDynamax(gCurrentMove)) + { + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_MoveBlockedByDynamax; + return; + } + if (gBattleOutcome != 0) { gCurrentActionFuncId = B_ACTION_FINISHED; @@ -3234,26 +3242,20 @@ void SetMoveEffect(bool32 primary, u32 certain) } break; case MOVE_EFFECT_FLINCH: - if (battlerAbility == ABILITY_INNER_FOCUS) + if (battlerAbility == ABILITY_INNER_FOCUS + && (primary == TRUE || certain == MOVE_EFFECT_CERTAIN)) { - if (primary == TRUE || certain == MOVE_EFFECT_CERTAIN) - { - gLastUsedAbility = ABILITY_INNER_FOCUS; - gBattlerAbility = gEffectBattler; - RecordAbilityBattle(gEffectBattler, ABILITY_INNER_FOCUS); - gBattlescriptCurrInstr = BattleScript_FlinchPrevention; - } - else - { - gBattlescriptCurrInstr++; - } + gLastUsedAbility = ABILITY_INNER_FOCUS; + gBattlerAbility = gEffectBattler; + RecordAbilityBattle(gEffectBattler, ABILITY_INNER_FOCUS); + gBattlescriptCurrInstr = BattleScript_FlinchPrevention; } - else + else if (GetBattlerTurnOrderNum(gEffectBattler) > gCurrentTurnActionNumber + && !IsDynamaxed(gEffectBattler)) { - if (GetBattlerTurnOrderNum(gEffectBattler) > gCurrentTurnActionNumber) - gBattleMons[gEffectBattler].status2 |= sStatusFlagsForMoveEffects[gBattleScripting.moveEffect]; - gBattlescriptCurrInstr++; + gBattleMons[gEffectBattler].status2 |= sStatusFlagsForMoveEffects[gBattleScripting.moveEffect]; } + gBattlescriptCurrInstr++; break; case MOVE_EFFECT_UPROAR: if (!(gBattleMons[gEffectBattler].status2 & STATUS2_UPROAR)) @@ -3893,7 +3895,8 @@ static void Cmd_tryfaintmon(void) gBattleResults.lastOpponentSpecies = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES, NULL); gSideTimers[1].retaliateTimer = 2; } - if ((gHitMarker & HITMARKER_DESTINYBOND) && gBattleMons[gBattlerAttacker].hp != 0) + if ((gHitMarker & HITMARKER_DESTINYBOND) && gBattleMons[gBattlerAttacker].hp != 0 + && !IsDynamaxed(gBattlerAttacker)) { gHitMarker &= ~HITMARKER_DESTINYBOND; BattleScriptPush(gBattlescriptCurrInstr); @@ -5785,6 +5788,8 @@ static void Cmd_moveend(void) { gLastPrintedMoves[gBattlerAttacker] = gChosenMove; gLastUsedMove = gCurrentMove; + if (IsMaxMove(gCurrentMove)) + gBattleStruct->dynamax.lastUsedBaseMove = gBattleStruct->dynamax.baseMove[gBattlerAttacker]; } } if (!(gAbsentBattlerFlags & gBitTable[gBattlerAttacker]) @@ -9629,7 +9634,8 @@ static void Cmd_various(void) } else { - if (gBattleMons[gBattlerTarget].ability == gBattleMons[gBattlerAttacker].ability) + if (gBattleMons[gBattlerTarget].ability == gBattleMons[gBattlerAttacker].ability + || IsDynamaxed(gBattlerTarget)) { gBattlescriptCurrInstr = cmd->failInstr; } @@ -9932,7 +9938,10 @@ static void Cmd_various(void) } else { - gCalledMove = gLastUsedMove; + if (IsMaxMove(gLastUsedMove)) + gCalledMove = gBattleStruct->dynamax.lastUsedBaseMove; + else + gCalledMove = gLastUsedMove; gHitMarker &= ~HITMARKER_ATTACKSTRING_PRINTED; gBattlerTarget = GetMoveTarget(gCalledMove, NO_TARGET_OVERRIDE); gBattlescriptCurrInstr = cmd->nextInstr; @@ -9943,7 +9952,8 @@ static void Cmd_various(void) { VARIOUS_ARGS(const u8 *failInstr); if ((sForbiddenMoves[gLastMoves[gBattlerTarget]] & FORBIDDEN_INSTRUCT) - || gLastMoves[gBattlerTarget] == 0xFFFF) + || gLastMoves[gBattlerTarget] == 0xFFFF + || IsDynamaxed(gBattlerTarget)) { gBattlescriptCurrInstr = cmd->failInstr; } @@ -11340,6 +11350,15 @@ static void Cmd_various(void) UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], mon, HP_BOTH); break; } + case VARIOUS_JUMP_IF_TARGET_DYNAMAXED: + { + VARIOUS_ARGS(const u8 *jumpInstr); + if (IsDynamaxed(gBattlerTarget)) + gBattlescriptCurrInstr = cmd->jumpInstr; + else + gBattlescriptCurrInstr = cmd->nextInstr; + return; + } } // End of switch (cmd->id) gBattlescriptCurrInstr = cmd->nextInstr; @@ -12682,6 +12701,15 @@ static void Cmd_tryKO(void) u32 holdEffect = GetBattlerHoldEffect(gBattlerTarget, TRUE); u16 targetAbility = GetBattlerAbility(gBattlerTarget); + // Dynamaxed Pokemon cannot be hit by OHKO moves. + if (IsDynamaxed(gBattlerTarget)) + { + gMoveResultFlags |= MOVE_RESULT_MISSED; + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_KO_UNAFFECTED; + gBattlescriptCurrInstr = cmd->failInstr; + return; + } + gPotentialItemEffectBattler = gBattlerTarget; if (holdEffect == HOLD_EFFECT_FOCUS_BAND && (Random() % 100) < GetBattlerHoldEffectParam(gBattlerTarget)) @@ -13234,10 +13262,21 @@ static void Cmd_trysetencore(void) s32 i; - for (i = 0; i < MAX_MON_MOVES; i++) + if (IsMaxMove(gLastMoves[gBattlerTarget]) && !IsDynamaxed(gBattlerTarget)) { - if (gBattleMons[gBattlerTarget].moves[i] == gLastMoves[gBattlerTarget]) - break; + for (i = 0; i < MAX_MON_MOVES; i++) + { + if (gBattleMons[gBattlerTarget].moves[i] == gBattleStruct->dynamax.baseMove[gBattlerTarget]) + break; + } + } + else + { + for (i = 0; i < MAX_MON_MOVES; i++) + { + if (gBattleMons[gBattlerTarget].moves[i] == gLastMoves[gBattlerTarget]) + break; + } } if (gLastMoves[gBattlerTarget] == MOVE_NONE @@ -13541,11 +13580,21 @@ static void Cmd_tryspiteppreduce(void) // Get move slot to reduce PP. if (IsMaxMove(gLastMoves[gBattlerTarget])) - i = gBattleStruct->dynamax.moveSlot[gBattlerTarget]; - else + { for (i = 0; i < MAX_MON_MOVES; i++) + { + if (gBattleStruct->dynamax.baseMove[gBattlerTarget] == gBattleMons[gBattlerTarget].moves[i]) + break; + } + } + else + { + for (i = 0; i < MAX_MON_MOVES; i++) + { if (gLastMoves[gBattlerTarget] == gBattleMons[gBattlerTarget].moves[i]) break; + } + } #if B_CAN_SPITE_FAIL <= GEN_3 if (i != MAX_MON_MOVES && gBattleMons[gBattlerTarget].pp[i] > 1) @@ -14459,15 +14508,15 @@ static void Cmd_settorment(void) { CMD_ARGS(const u8 *failInstr); - if (gBattleMons[gBattlerTarget].status2 & STATUS2_TORMENT) + if (gBattleMons[gBattlerTarget].status2 & STATUS2_TORMENT + || IsDynamaxed(gBattlerTarget)) { gBattlescriptCurrInstr = cmd->failInstr; } else { - // TODO: Torment does not affect Dynamaxed Pokemon and prints a failure string. gBattleMons[gBattlerTarget].status2 |= STATUS2_TORMENT; - gDisableStructs[gBattlerTarget].tormentTimer = 0xF; // permanent + gDisableStructs[gBattlerTarget].tormentTimer = PERMANENT_TORMENT; // permanent gBattlescriptCurrInstr = cmd->nextInstr; } } @@ -14845,7 +14894,7 @@ static void Cmd_tryswapabilities(void) } else { - if (gMoveResultFlags & MOVE_RESULT_NO_EFFECT) + if (gMoveResultFlags & MOVE_RESULT_NO_EFFECT || IsDynamaxed(gBattlerTarget)) { gBattlescriptCurrInstr = cmd->failInstr; } diff --git a/src/battle_util.c b/src/battle_util.c index eeb0f58af5..385c2bdb04 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -1890,7 +1890,7 @@ u8 TrySetCantSelectMoveBattleScript(void) } gPotentialItemEffectBattler = gActiveBattler; - if (HOLD_EFFECT_CHOICE(holdEffect) && *choicedMove != MOVE_NONE && *choicedMove != MOVE_UNAVAILABLE && *choicedMove != move) + if (!gBattleStruct->dynamax.playerSelect && (holdEffect) && *choicedMove != MOVE_NONE && *choicedMove != MOVE_UNAVAILABLE && *choicedMove != move) { gCurrentMove = *choicedMove; gLastUsedItem = gBattleMons[gActiveBattler].item; @@ -1920,7 +1920,7 @@ u8 TrySetCantSelectMoveBattleScript(void) limitations++; } } - if ((GetBattlerAbility(gActiveBattler) == ABILITY_GORILLA_TACTICS) && *choicedMove != MOVE_NONE + if (!gBattleStruct->dynamax.playerSelect && (GetBattlerAbility(gActiveBattler) == ABILITY_GORILLA_TACTICS) && *choicedMove != MOVE_NONE && *choicedMove != MOVE_UNAVAILABLE && *choicedMove != move) { gCurrentMove = *choicedMove; @@ -3209,7 +3209,7 @@ u8 DoBattlerEndTurnEffects(void) gBattleStruct->turnEffectsTracker++; break; case ENDTURN_TORMENT: - if (gDisableStructs[gActiveBattler].tormentTimer <= 4 + if (gDisableStructs[gActiveBattler].tormentTimer != PERMANENT_TORMENT && --gDisableStructs[gActiveBattler].tormentTimer == 0) { gBattleMons[gActiveBattler].status2 &= ~STATUS2_TORMENT; @@ -5425,6 +5425,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move && IsBattlerAlive(gBattlerAttacker) && !IsAbilityOnSide(gBattlerAttacker, ABILITY_AROMA_VEIL) && gBattleMons[gBattlerAttacker].pp[gChosenMovePos] != 0 + && !IsDynamaxed(gBattlerAttacker) // TODO: Max Moves don't make contact, useless? && (Random() % 3) == 0) { gDisableStructs[gBattlerAttacker].disabledMove = gChosenMove; @@ -5475,7 +5476,8 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) && IsBattlerAlive(gBattlerAttacker) && TARGET_TURN_DAMAGED - && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT)) + && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT) + && !IsDynamaxed(gBattlerTarget)) { switch (gBattleMons[gBattlerAttacker].ability) { @@ -8252,11 +8254,10 @@ bool32 IsBattlerProtected(u8 battlerId, u16 move) return FALSE; } - // Z-Moves and Max Moves bypass protection (except Max Guard for Max Moves). - if ((IsMaxMove(move) - && !(gProtectStructs[battlerId].maxGuarded - && gBattleMoves[move].argument != MAX_EFFECT_BYPASS_PROTECT)) - || gBattleStruct->zmove.active) + // Z-Moves and Max Moves bypass protection (except Max Guard). + if ((IsMaxMove(move) || gBattleStruct->zmove.active) + && (!gProtectStructs[battlerId].maxGuarded + || gBattleMoves[move].argument == MAX_EFFECT_BYPASS_PROTECT)) return FALSE; if (move == MOVE_TEATIME) @@ -8728,10 +8729,8 @@ static u16 CalcMoveBasePower(u16 move, u8 battlerAtk, u8 battlerDef) MulModifier(&basePower, UQ_4_12(1.5)); break; case EFFECT_DYNAMAX_DOUBLE_DMG: - #ifdef B_DYNAMAX if (IsDynamaxed(battlerDef)) basePower *= 2; - #endif break; case EFFECT_HIDDEN_POWER: { @@ -9362,11 +9361,11 @@ static u32 CalcAttackStat(u16 move, u8 battlerAtk, u8 battlerDef, u8 moveType, b MulModifier(&modifier, UQ_4_12(2.0)); break; case HOLD_EFFECT_CHOICE_BAND: - if (IS_MOVE_PHYSICAL(move)) + if (IS_MOVE_PHYSICAL(move) && !IsDynamaxed(battlerAtk)) MulModifier(&modifier, UQ_4_12(1.5)); break; case HOLD_EFFECT_CHOICE_SPECS: - if (IS_MOVE_SPECIAL(move)) + if (IS_MOVE_SPECIAL(move) && !IsDynamaxed(battlerAtk)) MulModifier(&modifier, UQ_4_12(1.5)); break; } diff --git a/src/data/battle_moves.h b/src/data/battle_moves.h index 99f4440009..eaba69d357 100644 --- a/src/data/battle_moves.h +++ b/src/data/battle_moves.h @@ -14111,7 +14111,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, + .flags = FLAG_PROTECT_AFFECTED, .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_SUN, }, @@ -14126,7 +14126,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, + .flags = FLAG_PROTECT_AFFECTED, .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_LOWER_SP_ATK, }, @@ -14141,7 +14141,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, + .flags = FLAG_PROTECT_AFFECTED, .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_ELECTRIC_TERRAIN, }, @@ -14156,7 +14156,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, + .flags = FLAG_PROTECT_AFFECTED, .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_LOWER_SPEED, }, @@ -14171,7 +14171,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, + .flags = FLAG_PROTECT_AFFECTED, .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_RAISE_TEAM_ATTACK, }, @@ -14186,7 +14186,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, + .flags = FLAG_PROTECT_AFFECTED, .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_LOWER_DEFENSE, }, @@ -14201,7 +14201,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, + .flags = FLAG_PROTECT_AFFECTED, .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_HAIL, }, @@ -14216,7 +14216,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, + .flags = FLAG_PROTECT_AFFECTED, .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_RAISE_TEAM_SP_ATK, }, @@ -14231,7 +14231,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, + .flags = FLAG_PROTECT_AFFECTED, .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_RAIN, }, @@ -14246,7 +14246,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, + .flags = FLAG_PROTECT_AFFECTED, .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_RAISE_TEAM_SPEED, }, @@ -14261,7 +14261,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, + .flags = FLAG_PROTECT_AFFECTED, .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_MISTY_TERRAIN, }, @@ -14276,7 +14276,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, + .flags = FLAG_PROTECT_AFFECTED, .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_LOWER_ATTACK, }, @@ -14291,7 +14291,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, + .flags = FLAG_PROTECT_AFFECTED, .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_PSYCHIC_TERRAIN, }, @@ -14306,7 +14306,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, + .flags = FLAG_PROTECT_AFFECTED, .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_SANDSTORM, }, @@ -14321,7 +14321,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, + .flags = FLAG_PROTECT_AFFECTED, .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_RAISE_TEAM_SP_DEF, }, @@ -14336,7 +14336,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, + .flags = FLAG_PROTECT_AFFECTED, .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_LOWER_SP_DEF, }, @@ -14351,7 +14351,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, + .flags = FLAG_PROTECT_AFFECTED, .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_GRASSY_TERRAIN, }, @@ -14366,7 +14366,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, + .flags = FLAG_PROTECT_AFFECTED, .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_RAISE_TEAM_DEFENSE, }, @@ -14381,7 +14381,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, + .flags = FLAG_PROTECT_AFFECTED, .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_VINE_LASH, }, @@ -14396,7 +14396,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, + .flags = FLAG_PROTECT_AFFECTED, .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_WILDFIRE, }, @@ -14411,7 +14411,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, + .flags = FLAG_PROTECT_AFFECTED, .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_CANNONADE, }, @@ -14426,7 +14426,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, + .flags = FLAG_PROTECT_AFFECTED, .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_EFFECT_SPORE_FOES, }, @@ -14441,7 +14441,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, + .flags = FLAG_PROTECT_AFFECTED, .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_PARALYZE_FOES, }, @@ -14456,7 +14456,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, + .flags = FLAG_PROTECT_AFFECTED, .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_CONFUSE_FOES_PAY_DAY, }, @@ -14471,7 +14471,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, + .flags = FLAG_PROTECT_AFFECTED, .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_CRIT_PLUS, }, @@ -14486,7 +14486,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, + .flags = FLAG_PROTECT_AFFECTED, .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_MEAN_LOOK, }, @@ -14501,7 +14501,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, + .flags = FLAG_PROTECT_AFFECTED, .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_LOWER_SPEED_2_FOES, }, @@ -14516,7 +14516,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, + .flags = FLAG_PROTECT_AFFECTED, .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_AURORA_VEIL, }, @@ -14531,7 +14531,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, + .flags = FLAG_PROTECT_AFFECTED, .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_INFATUATE_FOES, }, @@ -14546,7 +14546,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, + .flags = FLAG_PROTECT_AFFECTED, .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_RECYCLE_BERRIES, }, @@ -14561,7 +14561,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, + .flags = FLAG_PROTECT_AFFECTED, .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_POISON_FOES, }, @@ -14576,7 +14576,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, + .flags = FLAG_PROTECT_AFFECTED, .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_TORMENT_FOES, }, @@ -14591,7 +14591,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_TARGET_ABILITY_IGNORED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_TARGET_ABILITY_IGNORED, .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_FIXED_POWER, //EFFECT TODO }, @@ -14606,7 +14606,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_TARGET_ABILITY_IGNORED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_TARGET_ABILITY_IGNORED, .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_FIXED_POWER, //EFFECT TODO }, @@ -14621,7 +14621,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_TARGET_ABILITY_IGNORED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_TARGET_ABILITY_IGNORED, .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_FIXED_POWER, //EFFECT TODO }, @@ -14636,7 +14636,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, + .flags = FLAG_PROTECT_AFFECTED, .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_DEFOG, }, @@ -14651,7 +14651,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, + .flags = FLAG_PROTECT_AFFECTED, .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_GRAVITY, }, @@ -14666,7 +14666,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, + .flags = FLAG_PROTECT_AFFECTED, .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_STEALTH_ROCK, }, @@ -14681,7 +14681,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, + .flags = FLAG_PROTECT_AFFECTED, .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_VOLCALITH, }, @@ -14696,7 +14696,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, + .flags = FLAG_PROTECT_AFFECTED, .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_LOWER_EVASIVENESS_FOES, }, @@ -14711,7 +14711,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, + .flags = FLAG_PROTECT_AFFECTED, .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_AROMATHERAPY, }, @@ -14726,7 +14726,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, + .flags = FLAG_PROTECT_AFFECTED, .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_SANDBLAST_FOES, }, @@ -14741,7 +14741,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, + .flags = FLAG_PROTECT_AFFECTED, .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_POISON_PARALYZE_FOES, }, @@ -14756,7 +14756,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, + .flags = FLAG_PROTECT_AFFECTED, .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_FIRE_SPIN_FOES, }, @@ -14771,7 +14771,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, + .flags = FLAG_PROTECT_AFFECTED, .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_CONFUSE_FOES, }, @@ -14787,7 +14787,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, + .flags = FLAG_PROTECT_AFFECTED, .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_YAWN_FOE, }, @@ -14802,7 +14802,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, + .flags = FLAG_PROTECT_AFFECTED, .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_HEAL_TEAM, }, @@ -14817,7 +14817,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, + .flags = FLAG_PROTECT_AFFECTED, .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_STEELSURGE, }, @@ -14832,7 +14832,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, + .flags = FLAG_PROTECT_AFFECTED, .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_SPITE, }, @@ -14847,7 +14847,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, + .flags = FLAG_PROTECT_AFFECTED, .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_BYPASS_PROTECT, //EFFECT TODO }, @@ -14862,7 +14862,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, + .flags = FLAG_PROTECT_AFFECTED, .split = SPLIT_PHYSICAL, .argument = MAX_EFFECT_BYPASS_PROTECT, //EFFECT TODO }, diff --git a/test/dynamax.c b/test/dynamax.c index fee7336be6..31434c50fc 100644 --- a/test/dynamax.c +++ b/test/dynamax.c @@ -2,19 +2,12 @@ #include "test_battle.h" // TODO: -// Max Moves cannot miss. // Max Guard protects against Transform, Block (not Mean Look), Flower Shield, Gear Up, and so on (see Bulba). -// Max Moves penetrate Protect, but not Max Guard. -// Feint damages through Max Guard, but doesn't break it. -// You can ignore the effect of Encore / Disable with Max Moves. -// You can Encore the base move of a Max Move after Dynamax, but not Disable or Instruct. // Imprison doesn't stop Max Moves. -// Copycat copies the base move of a Max Move (even Trick Room!). -// Assault Vest prevents the use of Max Guard; so does Taunt. // Max Moves change type as you'd expect with Normalize, Weather Ball, etc. -// Dynamax Cannon and such do double damage on Dynamaxed opponents. +// (Unrelated) Refactor code to remove dynamax.usingMaxMove? -// DYNAMAX FEATURES +// ============= DYNAMAX AND MAX MOVE INTERACTIONS =================== SINGLE_BATTLE_TEST("(DYNAMAX) Dynamax increases HP and max HP by 1.5x") { GIVEN { // TODO: Dynamax level @@ -56,7 +49,6 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Dynamax expires after three turns") SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon cannot be flinched") { - KNOWN_FAILING; GIVEN { ASSUME(gBattleMoves[MOVE_FAKE_OUT].effect == EFFECT_FAKE_OUT); PLAYER(SPECIES_WOBBUFFET); @@ -69,47 +61,45 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon cannot be flinched") } } +// Message is "Steelix shook its head. It seems like it can't use this move..."? SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon cannot be hit by weight-based moves") { - // Message is "Steelix shook its head. It seems like it can't use this move..."? - KNOWN_FAILING; GIVEN { ASSUME(gBattleMoves[MOVE_HEAVY_SLAM].effect == EFFECT_HEAT_CRASH); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(opponent, MOVE_HEAVY_SLAM); MOVE(player, MOVE_TACKLE, dynamax: TRUE); } + TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); MOVE(opponent, MOVE_HEAVY_SLAM); } } SCENE { - MESSAGE("Foe Wobbuffet used Heavy Slam!"); - MESSAGE("Wobbuffet is unaffected!"); MESSAGE("Wobbuffet used Max Strike!"); + MESSAGE("Foe Wobbuffet used Heavy Slam!"); + MESSAGE("The move was blocked by the power of Dynamax!"); + NONE_OF { HP_BAR(player); } } } SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon cannot be hit by OHKO moves") { - KNOWN_FAILING; GIVEN { ASSUME(gBattleMoves[MOVE_FISSURE].effect == EFFECT_OHKO); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_MACHAMP) { Ability(ABILITY_NO_GUARD); } } WHEN { - TURN { MOVE(opponent, MOVE_FISSURE); MOVE(player, MOVE_TACKLE, dynamax: TRUE); } + TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); MOVE(opponent, MOVE_FISSURE); } } SCENE { - MESSAGE("Foe Wobbuffet used Fissure!"); + MESSAGE("Wobbuffet used Max Strike!"); + MESSAGE("Foe Machamp used Fissure!"); MESSAGE("Wobbuffet is unaffected!"); NONE_OF { HP_BAR(player); } - MESSAGE("Wobbuffet used Max Strike!"); } } // can't be used at all in Raid, see "Documenting Dynamax" SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon are not affected by Destiny Bond") { - KNOWN_FAILING; GIVEN { - PLAYER(SPECIES_WOBBUFFET); - OPPONENT(SPECIES_WOBBUFFET) { HP(1); } + PLAYER(SPECIES_WOBBUFFET) { Speed(50); }; + OPPONENT(SPECIES_WOBBUFFET) { HP(1); Speed(100); } } WHEN { TURN { MOVE(opponent, MOVE_DESTINY_BOND); MOVE(player, MOVE_TACKLE, dynamax: TRUE); } } SCENE { @@ -122,10 +112,9 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon are not affected by Destiny Bond SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon are affected by Grudge") { - KNOWN_FAILING; GIVEN { - PLAYER(SPECIES_WOBBUFFET); - OPPONENT(SPECIES_WOBBUFFET) { HP(1); } + PLAYER(SPECIES_WOBBUFFET) { Speed(50); }; + OPPONENT(SPECIES_WOBBUFFET) { HP(1); Speed(100); } } WHEN { TURN { MOVE(opponent, MOVE_GRUDGE); MOVE(player, MOVE_TACKLE, dynamax: TRUE); } } SCENE { @@ -138,28 +127,32 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon are affected by Grudge") SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon are not affected by phazing moves, but still take damage") { - KNOWN_FAILING; GIVEN { ASSUME(gBattleMoves[MOVE_DRAGON_TAIL].effect == EFFECT_HIT_SWITCH_TARGET); + ASSUME(gBattleMoves[MOVE_WHIRLWIND].effect == EFFECT_ROAR); PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WYNAUT); OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(opponent, MOVE_DRAGON_TAIL); MOVE(player, MOVE_TACKLE, dynamax: TRUE); } - TURN {} + TURN { MOVE(opponent, MOVE_WHIRLWIND); MOVE(player, MOVE_TACKLE); } } SCENE { MESSAGE("Wobbuffet used Max Strike!"); MESSAGE("Foe Wobbuffet used Dragon Tail!"); - MESSAGE("The move was blocked by the power of Dynamax!"); HP_BAR(player); - MESSAGE("Wobbuffet used Max Guard!"); + MESSAGE("The move was blocked by the power of Dynamax!"); + MESSAGE("Wobbuffet used Max Strike!"); + MESSAGE("Foe Wobbuffet used Whirlwind!"); + MESSAGE("The move was blocked by the power of Dynamax!"); } } SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon are not affected by Red Card") { - KNOWN_FAILING; GIVEN { + ASSUME(gItems[ITEM_RED_CARD].holdEffect == HOLD_EFFECT_RED_CARD); PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WYNAUT); OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_RED_CARD); } } WHEN { TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); MOVE(opponent, MOVE_CELEBRATE); } @@ -175,12 +168,12 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon are not affected by Red Card") SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon can be switched out by Eject Button") { - KNOWN_FAILING; GIVEN { PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_EJECT_BUTTON); } + PLAYER(SPECIES_WYNAUT); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); MOVE(opponent, MOVE_TACKLE); SEND_OUT(player, 1); } } SCENE { MESSAGE("Wobbuffet used Max Strike!"); MESSAGE("Foe Wobbuffet used Tackle!"); @@ -191,27 +184,25 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon can be switched out by Eject But } } -SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon cannot have their ability swapped with another Pokemon") +SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon cannot have their ability swapped to another Pokemon's") { - KNOWN_FAILING; GIVEN { ASSUME(P_GEN_8_POKEMON == TRUE); - PLAYER(SPECIES_WOBBUFFET) { Ability(ABILITY_SHADOW_TAG); } + PLAYER(SPECIES_MILTANK) { Ability(ABILITY_SCRAPPY); } OPPONENT(SPECIES_RUNERIGUS) { Ability(ABILITY_WANDERING_SPIRIT); } } WHEN { TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); MOVE(opponent, MOVE_SKILL_SWAP); } } SCENE { - MESSAGE("Wobbuffet used Max Strike!"); - MESSAGE("Foe Wobbuffet used Skill Swap!"); + MESSAGE("Miltank used Max Strike!"); + MESSAGE("Foe Runerigus used Skill Swap!"); MESSAGE("But it failed!"); } FINALLY { - EXPECT_EQ(player->ability, ABILITY_SHADOW_TAG); + EXPECT_EQ(player->ability, ABILITY_SCRAPPY); } } -SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon can have their ability changed") +SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon can have their ability changed or suppressed") { - KNOWN_FAILING; GIVEN { PLAYER(SPECIES_WOBBUFFET) { Ability(ABILITY_SHADOW_TAG); } OPPONENT(SPECIES_WOBBUFFET); @@ -228,7 +219,6 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon can have their ability changed") SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon are immune to Encore") { - KNOWN_FAILING; GIVEN { PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); @@ -241,10 +231,28 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon are immune to Encore") } } -// TODO: Test Cursed Body, too. +SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon can be encored immediately after reverting") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Speed(50); }; + OPPONENT(SPECIES_WOBBUFFET) { Speed(100); }; + } WHEN { + TURN { MOVE(player, MOVE_ARM_THRUST, dynamax: TRUE); } + TURN { MOVE(player, MOVE_ARM_THRUST); } + TURN { MOVE(player, MOVE_ARM_THRUST); } + TURN { MOVE(opponent, MOVE_ENCORE); MOVE(player, MOVE_TACKLE); } + } SCENE { + MESSAGE("Wobbuffet used Max Knuckle!"); + MESSAGE("Wobbuffet used Max Knuckle!"); + MESSAGE("Wobbuffet used Max Knuckle!"); + MESSAGE("Foe Wobbuffet used Encore!"); + MESSAGE("Wobbuffet used Arm Thrust!"); + } +} + +// Max Moves don't make contact, so Cursed Body doesn't need to be tested? Implemented a check anyway SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon's Max Moves cannot be disabled") { - KNOWN_FAILING; GIVEN { PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); @@ -259,17 +267,19 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon's Max Moves cannot be disabled") SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon can have base moves disabled on their first turn") { - KNOWN_FAILING; GIVEN { ASSUME(B_DISABLE_TURNS >= GEN_5); - PLAYER(SPECIES_WOBBUFFET); - OPPONENT(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WOBBUFFET) { Speed(50); }; + OPPONENT(SPECIES_WOBBUFFET) { Speed(100); }; } WHEN { + TURN { MOVE(opponent, MOVE_CELEBRATE); MOVE(player, MOVE_TACKLE); } TURN { MOVE(opponent, MOVE_DISABLE); MOVE(player, MOVE_TACKLE, dynamax: TRUE); } TURN {} TURN {} - TURN {} // TODO: Tackle should still be disabled. + TURN { MOVE(player, MOVE_TACKLE, allowed: FALSE); MOVE(player, MOVE_CELEBRATE); } } SCENE { + MESSAGE("Foe Wobbuffet used Celebrate!"); + MESSAGE("Wobbuffet used Tackle!"); MESSAGE("Foe Wobbuffet used Disable!"); MESSAGE("Wobbuffet's Tackle was disabled!"); MESSAGE("Wobbuffet used Max Strike!"); @@ -278,7 +288,6 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon can have base moves disabled on SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon are immune to Torment") { - KNOWN_FAILING; GIVEN { PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); @@ -294,7 +303,6 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon are immune to Torment") // This is true for all item-removing moves. SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon are not immune to Knock Off") { - KNOWN_FAILING; GIVEN { PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_POTION); } OPPONENT(SPECIES_WOBBUFFET); @@ -303,13 +311,12 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon are not immune to Knock Off") } SCENE { MESSAGE("Wobbuffet used Max Strike!"); MESSAGE("Foe Wobbuffet used Knock Off!"); - MESSAGE("Wobbuffet's Potion was knocked off!"); + MESSAGE("Foe Wobbuffet knocked off Wobbuffet's Potion!"); } } SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon lose their substitutes") { - KNOWN_FAILING; GIVEN { PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); @@ -318,14 +325,153 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon lose their substitutes") TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); MOVE(opponent, MOVE_TACKLE); } } SCENE { MESSAGE("Wobbuffet used Substitute!"); - MESSAGE("Wobbuffet set up a substitute!"); + MESSAGE("Wobbuffet made a SUBSTITUTE!"); MESSAGE("Wobbuffet used Max Strike!"); MESSAGE("Foe Wobbuffet used Tackle!"); HP_BAR(player); } } -// ============= MAX MOVE EFFECTS =================== +DOUBLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon can have their base moves copied by Copycat") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WYNAUT); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(playerLeft, MOVE_TRICK_ROOM, dynamax: TRUE, target: opponentLeft); MOVE(playerRight, MOVE_COPYCAT, target: opponentLeft); } + } SCENE { + MESSAGE("Wobbuffet used Max Guard!"); + MESSAGE("Wynaut used Trick Room!"); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon take double damage from Dynamax Cannon", s16 damage) +{ + bool32 dynamaxed; + PARAMETRIZE { dynamaxed = FALSE; } + PARAMETRIZE { dynamaxed = TRUE; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_TACKLE, dynamax: dynamaxed); MOVE(opponent, MOVE_DYNAMAX_CANNON); } + } SCENE { + HP_BAR(player, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, UQ_4_12(2.0), results[1].damage); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Max Moves deal 1/4 damage through protect", s16 damage) +{ + bool32 protected; + KNOWN_FAILING; // rounding error? also messages are wonky + PARAMETRIZE { protected = FALSE; } + PARAMETRIZE { protected = TRUE; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + if (protected) + TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); MOVE(opponent, MOVE_PROTECT); } + else + TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); } + } SCENE { + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, UQ_4_12(0.25), results[1].damage); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Max Moves don't bypass Max Guard") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); MOVE(opponent, MOVE_PROTECT, dynamax: TRUE); } + } SCENE { + NONE_OF { HP_BAR(opponent); } + } +} + +DOUBLE_BATTLE_TEST("(DYNAMAX) Feint bypasses Max Guard but doesn't break it") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WYNAUT); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(playerLeft, MOVE_PROTECT, dynamax: TRUE); + MOVE(opponentLeft, MOVE_FEINT, target: playerLeft); + MOVE(opponentRight, MOVE_TACKLE, target: playerLeft); + } + } SCENE { + MESSAGE("Wobbuffet used Max Guard!"); + MESSAGE("Foe Wobbuffet used Feint!"); + HP_BAR(playerLeft); + MESSAGE("Foe Wynaut used Tackle!"); + NONE_OF { HP_BAR(playerLeft); } + } +} + +DOUBLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon are immune to Instruct") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WYNAUT); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(playerLeft, MOVE_TACKLE, dynamax: TRUE, target: opponentLeft); + MOVE(playerRight, MOVE_INSTRUCT, target: playerLeft); + } + } SCENE { + MESSAGE("Wobbuffet used Max Strike!"); + MESSAGE("Wynaut used Instruct!"); + MESSAGE("But it failed!"); + } +} + +// Move selection tests can't be simulated :( +SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon are not affected by Choice items", s16 damage) +{ + u16 item; + PARAMETRIZE { item = ITEM_CHOICE_BAND; } + PARAMETRIZE { item = ITEM_NONE; } + GIVEN { + ASSUME(gItems[ITEM_CHOICE_BAND].holdEffect == HOLD_EFFECT_CHOICE_BAND); + PLAYER(SPECIES_WOBBUFFET) { Item(item); }; + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); } + } SCENE { + MESSAGE("Wobbuffet used Max Strike!"); + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_EQ(results[0].damage, results[1].damage); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon cannot use Max Guard while holding Assault Vest") +{ + GIVEN { + ASSUME(gItems[ITEM_ASSAULT_VEST].holdEffect == HOLD_EFFECT_ASSAULT_VEST); + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_ASSAULT_VEST); }; + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); } + TURN { MOVE(player, MOVE_PROTECT, allowed: FALSE); MOVE(player, MOVE_TACKLE); } + } SCENE { + MESSAGE("Wobbuffet used Max Strike!"); + MESSAGE("Wobbuffet used Max Strike!"); + } +} + +// ============= MAX MOVE EFFECTS ========================================== SINGLE_BATTLE_TEST("(DYNAMAX) Max Strike lowers single opponent's speed") { GIVEN { From 4ceb61b1dda908dcdb52c928d380be3036342128 Mon Sep 17 00:00:00 2001 From: AgustinGDLV Date: Mon, 20 Mar 2023 21:50:55 -0700 Subject: [PATCH 042/162] updated Gigantamax form changing + tests --- src/battle_dynamax.c | 8 +------- src/battle_util.c | 7 +++++++ test/dynamax.c | 40 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 48 insertions(+), 7 deletions(-) diff --git a/src/battle_dynamax.c b/src/battle_dynamax.c index 7d84872544..87f7c2291f 100644 --- a/src/battle_dynamax.c +++ b/src/battle_dynamax.c @@ -150,12 +150,7 @@ void PrepareBattlerForDynamax(u16 battlerId) gBattleStruct->choicedMove[battlerId] = MOVE_NONE; // Try Gigantamax form change. - newSpecies = GetBattleFormChangeTargetSpecies(battlerId, FORM_CHANGE_BATTLE_GIGANTAMAX); - if (newSpecies != SPECIES_NONE) - { - gBattleStruct->changedSpecies[gBitTable[gBattlerPartyIndexes[battlerId]]] = gBattleMons[battlerId].species; - TryBattleFormChange(battlerId, FORM_CHANGE_BATTLE_GIGANTAMAX); - } + TryBattleFormChange(battlerId, FORM_CHANGE_BATTLE_GIGANTAMAX); } // Sets flags needed for undoing Dynamax and undoes Gigantamax forms. @@ -164,7 +159,6 @@ void UndoDynamax(u16 battlerId) u8 side = GetBattlerSide(battlerId); gBattleStruct->dynamax.dynamaxed[battlerId] = FALSE; gBattleStruct->dynamax.dynamaxTurns[battlerId] = 0; // safety check for switch-in / faint - TryBattleFormChange(battlerId, FORM_CHANGE_BATTLE_SWITCH); // TODO: maybe nicer way to do this? } // Weight-based moves (and some other moves in Raids) are blocked by Dynamax. diff --git a/src/battle_util.c b/src/battle_util.c index 034e2b93a7..6f2f8b56fe 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -10232,6 +10232,9 @@ bool32 CanBattlerFormChange(u8 battlerId, u16 method) return TRUE; else if (IsBattlerPrimalReverted(battlerId) && (method == FORM_CHANGE_END_BATTLE)) return TRUE; + // Gigantamaxed Pokemon should revert upon fainting, switching, or ending the battle. + else if (IsDynamaxed(battlerId) && (method == FORM_CHANGE_FAINT || method == FORM_CHANGE_BATTLE_SWITCH || method == FORM_CHANGE_END_BATTLE)) + return TRUE; return DoesSpeciesHaveFormChangeMethod(gBattleMons[battlerId].species, method); } @@ -10272,6 +10275,10 @@ bool32 TryBattleFormChange(u8 battlerId, u16 method) else if (IsBattlerPrimalReverted(battlerId) && (method == FORM_CHANGE_END_BATTLE)) restoreSpecies = TRUE; + // Gigantamax Pokemon have their forms reverted after fainting, switching, or ending the battle. + else if (IsDynamaxed(battlerId) && (method == FORM_CHANGE_FAINT || method == FORM_CHANGE_BATTLE_SWITCH || method == FORM_CHANGE_END_BATTLE)) + restoreSpecies = TRUE; + if (restoreSpecies) { // Reverts the original species diff --git a/test/dynamax.c b/test/dynamax.c index 31434c50fc..114b5b51e7 100644 --- a/test/dynamax.c +++ b/test/dynamax.c @@ -436,6 +436,46 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon are immune to Instruct") } } +// TODO: Gigantamax factor +SINGLE_BATTLE_TEST("(DYNAMAX) Pokemon with Gigantamax forms change upon Dynamaxing") +{ + GIVEN { + PLAYER(SPECIES_VENUSAUR); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); } + } FINALLY { + EXPECT_EQ(gBattleMons[B_POSITION_PLAYER_LEFT].species, SPECIES_VENUSAUR_GMAX); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Pokemon with Gigantamax forms revert upon switching") +{ + GIVEN { + PLAYER(SPECIES_VENUSAUR); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); } + TURN { SWITCH(player, 1); } + TURN { SWITCH(player, 0); } + } FINALLY { + EXPECT_EQ(gBattleMons[B_POSITION_PLAYER_LEFT].species, SPECIES_VENUSAUR); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Pokemon with Gigantamax forms revert upon fainting") +{ + GIVEN { + PLAYER(SPECIES_VENUSAUR) { HP(1); }; + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); MOVE(opponent, MOVE_TACKLE); } + } FINALLY { + EXPECT_EQ(gBattleMons[B_POSITION_PLAYER_LEFT].species, SPECIES_VENUSAUR); + } +} + // Move selection tests can't be simulated :( SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon are not affected by Choice items", s16 damage) { From 788642347b1f4cf7ef5d6d81008c690cc21f2725 Mon Sep 17 00:00:00 2001 From: AgustinGDLV Date: Tue, 21 Mar 2023 11:36:04 -0700 Subject: [PATCH 043/162] added HP-based damage/healing interactions with Dynamax Pokemon --- include/battle_dynamax.h | 2 + src/battle_dynamax.c | 26 ++++++++ src/battle_script_commands.c | 81 ++++++++++++------------- src/battle_util.c | 66 ++++++++++---------- test/dynamax.c | 113 +++++++++++++++++++++++++++++++++-- 5 files changed, 211 insertions(+), 77 deletions(-) diff --git a/include/battle_dynamax.h b/include/battle_dynamax.h index 1d6d8cd807..d5cb0c2a5b 100644 --- a/include/battle_dynamax.h +++ b/include/battle_dynamax.h @@ -60,6 +60,8 @@ bool32 IsDynamaxed(u16 battlerId); bool32 CanDynamax(u16 battlerId); void ApplyDynamaxHPMultiplier(u16 battlerId, struct Pokemon* mon); void PrepareBattlerForDynamax(u16 battlerId); +u16 GetNonDynamaxHP(u16 battlerId); +u16 GetNonDynamaxMaxHP(u16 battlerId); void UndoDynamax(u16 battlerId); bool32 IsMoveBlockedByDynamax(u16 move); diff --git a/src/battle_dynamax.c b/src/battle_dynamax.c index 87f7c2291f..fa2909b58d 100644 --- a/src/battle_dynamax.c +++ b/src/battle_dynamax.c @@ -132,6 +132,32 @@ void ApplyDynamaxHPMultiplier(u16 battlerId, struct Pokemon* mon) } } +// Returns the non-Dynamax HP of a Pokemon. +u16 GetNonDynamaxHP(u16 battlerId) +{ + if (!IsDynamaxed(battlerId) || gBattleMons[battlerId].species == SPECIES_SHEDINJA) + return gBattleMons[battlerId].hp; + else + { + u16 mult = UQ_4_12(1.0/1.5); // placeholder + u16 hp = UQ_4_12_TO_INT((gBattleMons[battlerId].hp * mult) + UQ_4_12_ROUND); + return hp; + } +} + +// Returns the non-Dynamax Max HP of a Pokemon. +u16 GetNonDynamaxMaxHP(u16 battlerId) +{ + if (!IsDynamaxed(battlerId) || gBattleMons[battlerId].species == SPECIES_SHEDINJA) + return gBattleMons[battlerId].maxHP; + else + { + u16 mult = UQ_4_12(1.0/1.5); // placeholder + u16 maxHP = UQ_4_12_TO_INT((gBattleMons[battlerId].maxHP * mult) + UQ_4_12_ROUND); + return maxHP; + } +} + // Sets flags used for Dynamaxing and checks Gigantamax forms. void PrepareBattlerForDynamax(u16 battlerId) { diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 327415e072..78bd161f4d 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -5400,7 +5400,7 @@ static void Cmd_moveend(void) if (gProtectStructs[gBattlerTarget].spikyShielded && GetBattlerAbility(gBattlerAttacker) != ABILITY_MAGIC_GUARD) { gProtectStructs[gBattlerAttacker].touchedProtectLike = FALSE; - gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 8; + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker) / 8; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; PREPARE_MOVE_BUFFER(gBattleTextBuff1, MOVE_SPIKY_SHIELD); @@ -7030,7 +7030,7 @@ static void Cmd_switchineffects(void) && IsBattlerGrounded(gActiveBattler)) { u8 spikesDmg = (5 - gSideTimers[GetBattlerSide(gActiveBattler)].spikesAmount) * 2; - gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / (spikesDmg); + gBattleMoveDamage = GetNonDynamaxMaxHP(gActiveBattler) / (spikesDmg); if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; @@ -7819,7 +7819,7 @@ static bool32 TryCheekPouch(u32 battlerId, u32 itemId) && gBattleStruct->ateBerry[GetBattlerSide(battlerId)] & gBitTable[gBattlerPartyIndexes[battlerId]] && !BATTLER_MAX_HP(battlerId)) { - gBattleMoveDamage = gBattleMons[battlerId].maxHP / 3; + gBattleMoveDamage = GetNonDynamaxMaxHP(battlerId) / 3; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; gBattleMoveDamage *= -1; @@ -9018,7 +9018,7 @@ static void Cmd_various(void) } else { - gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / 16; + gBattleMoveDamage = GetNonDynamaxMaxHP(gActiveBattler) / 16; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; gBattleMoveDamage *= -1; @@ -9653,9 +9653,9 @@ static void Cmd_various(void) else { if (GetBattlerAbility(gBattlerAttacker) == ABILITY_MEGA_LAUNCHER && gBattleMoves[gCurrentMove].flags & FLAG_MEGA_LAUNCHER_BOOST) - gBattleMoveDamage = -(gBattleMons[gActiveBattler].maxHP * 75 / 100); + gBattleMoveDamage = -(GetNonDynamaxMaxHP(gActiveBattler) * 75 / 100); else - gBattleMoveDamage = -(gBattleMons[gActiveBattler].maxHP / 2); + gBattleMoveDamage = -(GetNonDynamaxMaxHP(gActiveBattler) / 2); if (gBattleMoveDamage == 0) gBattleMoveDamage = -1; @@ -10408,7 +10408,7 @@ static void Cmd_various(void) case VARIOUS_TRY_HEAL_QUARTER_HP: { VARIOUS_ARGS(const u8 *failInstr); - gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / 4; + gBattleMoveDamage = GetNonDynamaxMaxHP(gActiveBattler) / 4; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; gBattleMoveDamage *= -1; @@ -10738,7 +10738,7 @@ static void Cmd_various(void) VARIOUS_ARGS(const u8 *failInstr); bool8 atLeastOneStatBoosted = FALSE; - u16 hpFraction = max(1, gBattleMons[gBattlerAttacker].maxHP / 3); + u16 hpFraction = max(1, GetNonDynamaxMaxHP(gBattlerAttacker) / 3); for (i = 1; i < NUM_STATS; i++) { @@ -11170,7 +11170,7 @@ static void Cmd_various(void) && IsBattlerAlive(gBattlerAttacker) && GetBattlerAbility(gBattlerAttacker) != ABILITY_MAGIC_GUARD) { - gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 6; + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker) / 6; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; } @@ -11293,6 +11293,7 @@ static void Cmd_various(void) case VARIOUS_TRY_HEAL_SIXTH_HP: { VARIOUS_ARGS(const u8 *failInstr); + // This heals based on Dynamaxed HP! gBattleMoveDamage = gBattleMons[gBattlerTarget].maxHP / 6; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; @@ -11526,7 +11527,7 @@ static void Cmd_tryhealhalfhealth(void) if (cmd->battler == BS_ATTACKER) gBattlerTarget = gBattlerAttacker; - gBattleMoveDamage = gBattleMons[gBattlerTarget].maxHP / 2; + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerTarget) / 2; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; gBattleMoveDamage *= -1; @@ -11661,10 +11662,10 @@ static void Cmd_manipulatedamage(void) break; case DMG_RECOIL_FROM_MISS: #if B_RECOIL_IF_MISS_DMG >= GEN_5 - gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 2; + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker) / 2; #elif B_RECOIL_IF_MISS_DMG == GEN_4 if ((gBattleMons[gBattlerTarget].maxHP / 2) < gBattleMoveDamage) - gBattleMoveDamage = gBattleMons[gBattlerTarget].maxHP / 2; + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerTarget) / 2; #else gBattleMoveDamage /= 2; #endif @@ -11675,24 +11676,24 @@ static void Cmd_manipulatedamage(void) gBattleMoveDamage *= 2; break; case DMG_1_8_TARGET_HP: - gBattleMoveDamage = gBattleMons[gBattlerTarget].maxHP / 8; + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerTarget) / 8; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; break; case DMG_FULL_ATTACKER_HP: - gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP; + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker); break; case DMG_CURR_ATTACKER_HP: - gBattleMoveDamage = gBattleMons[gBattlerAttacker].hp; + gBattleMoveDamage = GetNonDynamaxHP(gBattlerAttacker); break; case DMG_BIG_ROOT: gBattleMoveDamage = GetDrainedBigRootHp(gBattlerAttacker, gBattleMoveDamage); break; case DMG_1_2_ATTACKER_HP: - gBattleMoveDamage = (gBattleMons[gBattlerAttacker].maxHP + 1) / 2; // Half of Max HP Rounded UP + gBattleMoveDamage = (GetNonDynamaxMaxHP(gBattlerAttacker) + 1) / 2; // Half of Max HP Rounded UP break; case DMG_RECOIL_FROM_IMMUNE: - gBattleMoveDamage = gBattleMons[gBattlerTarget].maxHP / 2; + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerTarget) / 2; break; } @@ -11877,7 +11878,7 @@ static void Cmd_stockpiletohpheal(void) } else { - gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / (1 << (3 - gDisableStructs[gBattlerAttacker].stockpileCounter)); + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker) / (1 << (3 - gDisableStructs[gBattlerAttacker].stockpileCounter)); if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; @@ -12785,7 +12786,7 @@ static void Cmd_damagetohalftargethp(void) { CMD_ARGS(); - gBattleMoveDamage = gBattleMons[gBattlerTarget].hp / 2; + gBattleMoveDamage = GetNonDynamaxHP(gBattlerTarget) / 2; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; @@ -12829,7 +12830,7 @@ static void Cmd_weatherdamage(void) && !(gStatuses3[gBattlerAttacker] & (STATUS3_UNDERGROUND | STATUS3_UNDERWATER)) && GetBattlerHoldEffect(gBattlerAttacker, TRUE) != HOLD_EFFECT_SAFETY_GOGGLES) { - gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 16; + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker) / 16; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; } @@ -12842,7 +12843,7 @@ static void Cmd_weatherdamage(void) && !(gStatuses3[gBattlerAttacker] & STATUS3_HEAL_BLOCK)) { gBattlerAbility = gBattlerAttacker; - gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 16; + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker) / 16; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; gBattleMoveDamage *= -1; @@ -12854,7 +12855,7 @@ static void Cmd_weatherdamage(void) && !(gStatuses3[gBattlerAttacker] & (STATUS3_UNDERGROUND | STATUS3_UNDERWATER)) && GetBattlerHoldEffect(gBattlerAttacker, TRUE) != HOLD_EFFECT_SAFETY_GOGGLES) { - gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 16; + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker) / 16; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; } @@ -13035,8 +13036,8 @@ static void Cmd_setsubstitute(void) { CMD_ARGS(); - u32 hp = gBattleMons[gBattlerAttacker].maxHP / 4; - if (gBattleMons[gBattlerAttacker].maxHP / 4 == 0) + u32 hp = GetNonDynamaxMaxHP(gBattlerAttacker) / 4; + if (GetNonDynamaxMaxHP(gBattlerAttacker) / 4 == 0) hp = 1; if (gBattleMons[gBattlerAttacker].hp <= hp) @@ -13046,7 +13047,7 @@ static void Cmd_setsubstitute(void) } else { - gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 4; // one bit value will only work for pokemon which max hp can go to 1020(which is more than possible in games) + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker) / 4; // one bit value will only work for pokemon which max hp can go to 1020(which is more than possible in games) if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; @@ -13300,7 +13301,7 @@ static void Cmd_painsplitdmgcalc(void) if (!(DoesSubstituteBlockMove(gBattlerAttacker, gBattlerTarget, gCurrentMove))) { - s32 hpDiff = (gBattleMons[gBattlerAttacker].hp + gBattleMons[gBattlerTarget].hp) / 2; + s32 hpDiff = (gBattleMons[gBattlerAttacker].hp + GetNonDynamaxHP(gBattlerTarget)) / 2; s32 painSplitHp = gBattleMoveDamage = gBattleMons[gBattlerTarget].hp - hpDiff; u8 *storeLoc = (void *)(&gBattleScripting.painSplitHp); @@ -13749,7 +13750,7 @@ static void Cmd_cursetarget(void) else { gBattleMons[gBattlerTarget].status2 |= STATUS2_CURSED; - gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 2; + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker) / 2; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; @@ -13915,7 +13916,7 @@ static void Cmd_presentdamagecalculation(void) } else { - gBattleMoveDamage = gBattleMons[gBattlerTarget].maxHP / 4; + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerTarget) / 4; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; gBattleMoveDamage *= -1; @@ -14081,9 +14082,9 @@ static void Cmd_maxattackhalvehp(void) { CMD_ARGS(const u8 *failInstr); - u32 halfHp = gBattleMons[gBattlerAttacker].maxHP / 2; + u32 halfHp = GetNonDynamaxMaxHP(gBattlerAttacker) / 2; - if (!(gBattleMons[gBattlerAttacker].maxHP / 2)) + if (!(GetNonDynamaxMaxHP(gBattlerAttacker) / 2)) halfHp = 1; // Belly Drum fails if the user's current HP is less than half its maximum, or if the user's Attack is already at +6 (even if the user has Contrary). @@ -14091,7 +14092,7 @@ static void Cmd_maxattackhalvehp(void) && gBattleMons[gBattlerAttacker].hp > halfHp) { gBattleMons[gBattlerAttacker].statStages[STAT_ATK] = MAX_STAT_STAGE; - gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 2; + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker) / 2; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; @@ -14199,18 +14200,18 @@ static void Cmd_recoverbasedonsunlight(void) if (gCurrentMove == MOVE_SHORE_UP) { if (WEATHER_HAS_EFFECT && gBattleWeather & B_WEATHER_SANDSTORM) - gBattleMoveDamage = 20 * gBattleMons[gBattlerAttacker].maxHP / 30; + gBattleMoveDamage = 20 * GetNonDynamaxMaxHP(gBattlerAttacker) / 30; else - gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 2; + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker) / 2; } else { if (!(gBattleWeather & B_WEATHER_ANY) || !WEATHER_HAS_EFFECT || GetBattlerHoldEffect(gBattlerAttacker, TRUE) == HOLD_EFFECT_UTILITY_UMBRELLA) - gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 2; + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker) / 2; else if (gBattleWeather & B_WEATHER_SUN) - gBattleMoveDamage = 20 * gBattleMons[gBattlerAttacker].maxHP / 30; + gBattleMoveDamage = 20 * GetNonDynamaxMaxHP(gBattlerAttacker) / 30; else // not sunny weather - gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 4; + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker) / 4; } if (gBattleMoveDamage == 0) @@ -14737,7 +14738,7 @@ static void Cmd_trywish(void) else gBattleMoveDamage = max(1, GetMonData(&gEnemyParty[gWishFutureKnock.wishPartyId[gBattlerTarget]], MON_DATA_MAX_HP) / 2); #else - gBattleMoveDamage = max(1, gBattleMons[gBattlerTarget].maxHP / 2); + gBattleMoveDamage = max(1, GetNonDynamaxMaxHP(gBattlerAttacker) / 2); #endif gBattleMoveDamage *= -1; @@ -14817,13 +14818,13 @@ static void Cmd_setdamagetohealthdifference(void) { CMD_ARGS(const u8 *failInstr); - if (gBattleMons[gBattlerTarget].hp <= gBattleMons[gBattlerAttacker].hp) + if (GetNonDynamaxHP(gBattlerTarget) <= gBattleMons[gBattlerAttacker].hp) { gBattlescriptCurrInstr = cmd->failInstr; } else { - gBattleMoveDamage = gBattleMons[gBattlerTarget].hp - gBattleMons[gBattlerAttacker].hp; + gBattleMoveDamage = GetNonDynamaxHP(gBattlerTarget) - gBattleMons[gBattlerAttacker].hp; gBattlescriptCurrInstr = cmd->nextInstr; } } @@ -15091,7 +15092,7 @@ static void Cmd_switchoutabilities(void) MarkBattlerForControllerExec(gActiveBattler); break; case ABILITY_REGENERATOR: - gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / 3; + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker) / 3; gBattleMoveDamage += gBattleMons[gActiveBattler].hp; if (gBattleMoveDamage > gBattleMons[gActiveBattler].maxHP) gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP; diff --git a/src/battle_util.c b/src/battle_util.c index 76d5820fea..edaebfdb3a 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -2707,7 +2707,7 @@ u8 DoBattlerEndTurnEffects(void) && !(gStatuses3[gActiveBattler] & STATUS3_HEAL_BLOCK) && gBattleMons[gActiveBattler].hp != 0) { - gBattleMoveDamage = GetDrainedBigRootHp(gActiveBattler, gBattleMons[gActiveBattler].maxHP / 16); + gBattleMoveDamage = GetDrainedBigRootHp(gActiveBattler, GetNonDynamaxMaxHP(gActiveBattler) / 16); BattleScriptExecute(BattleScript_IngrainTurnHeal); effect++; } @@ -2719,7 +2719,7 @@ u8 DoBattlerEndTurnEffects(void) && !(gStatuses3[gActiveBattler] & STATUS3_HEAL_BLOCK) && gBattleMons[gActiveBattler].hp != 0) { - gBattleMoveDamage = GetDrainedBigRootHp(gActiveBattler, gBattleMons[gActiveBattler].maxHP / 16); + gBattleMoveDamage = GetDrainedBigRootHp(gActiveBattler, GetNonDynamaxMaxHP(gActiveBattler) / 16); BattleScriptExecute(BattleScript_AquaRingHeal); effect++; } @@ -2753,7 +2753,7 @@ u8 DoBattlerEndTurnEffects(void) MAGIC_GUARD_CHECK; gBattlerTarget = gStatuses3[gActiveBattler] & STATUS3_LEECHSEED_BATTLER; // Notice gBattlerTarget is actually the HP receiver. - gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / 8; + gBattleMoveDamage = GetNonDynamaxMaxHP(gActiveBattler) / 8; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; gBattleScripting.animArg1 = gBattlerTarget; @@ -2773,7 +2773,7 @@ u8 DoBattlerEndTurnEffects(void) { if (!BATTLER_MAX_HP(gActiveBattler) && !(gStatuses3[gActiveBattler] & STATUS3_HEAL_BLOCK)) { - gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / 8; + gBattleMoveDamage = GetNonDynamaxMaxHP(gActiveBattler) / 8; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; gBattleMoveDamage *= -1; @@ -2783,7 +2783,7 @@ u8 DoBattlerEndTurnEffects(void) } else { - gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / 8; + gBattleMoveDamage = GetNonDynamaxMaxHP(gActiveBattler) / 8; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; BattleScriptExecute(BattleScript_PoisonTurnDmg); @@ -2802,7 +2802,7 @@ u8 DoBattlerEndTurnEffects(void) { if (!BATTLER_MAX_HP(gActiveBattler) && !(gStatuses3[gActiveBattler] & STATUS3_HEAL_BLOCK)) { - gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / 8; + gBattleMoveDamage = GetNonDynamaxMaxHP(gActiveBattler) / 8; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; gBattleMoveDamage *= -1; @@ -2812,7 +2812,7 @@ u8 DoBattlerEndTurnEffects(void) } else { - gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / 16; + gBattleMoveDamage = GetNonDynamaxMaxHP(gActiveBattler) / 16; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; if ((gBattleMons[gActiveBattler].status1 & STATUS1_TOXIC_COUNTER) != STATUS1_TOXIC_TURN(15)) // not 16 turns @@ -2830,9 +2830,9 @@ u8 DoBattlerEndTurnEffects(void) { MAGIC_GUARD_CHECK; #if B_BURN_DAMAGE >= GEN_7 - gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / 16; + gBattleMoveDamage = GetNonDynamaxMaxHP(gActiveBattler) / 16; #else - gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / 8; + gBattleMoveDamage = GetNonDynamaxMaxHP(gActiveBattler) / 8; #endif if (ability == ABILITY_HEATPROOF) { @@ -2856,7 +2856,7 @@ u8 DoBattlerEndTurnEffects(void) // persist even after the affected Pokemon has been awakened by Shed Skin. if (gBattleMons[gActiveBattler].status1 & STATUS1_SLEEP) { - gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / 4; + gBattleMoveDamage = GetNonDynamaxMaxHP(gActiveBattler) / 4; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; BattleScriptExecute(BattleScript_NightmareTurnDmg); @@ -2874,7 +2874,7 @@ u8 DoBattlerEndTurnEffects(void) && gBattleMons[gActiveBattler].hp != 0) { MAGIC_GUARD_CHECK; - gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / 4; + gBattleMoveDamage = GetNonDynamaxMaxHP(gActiveBattler) / 4; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; BattleScriptExecute(BattleScript_CurseTurnDmg); @@ -2895,13 +2895,13 @@ u8 DoBattlerEndTurnEffects(void) gBattlescriptCurrInstr = BattleScript_WrapTurnDmg; if (GetBattlerHoldEffect(gBattleStruct->wrappedBy[gActiveBattler], TRUE) == HOLD_EFFECT_BINDING_BAND) #if B_BINDING_DAMAGE >= GEN_6 - gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / 6; + gBattleMoveDamage = GetNonDynamaxMaxHP(gActiveBattler) / 6; else - gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / 8; + gBattleMoveDamage = GetNonDynamaxMaxHP(gActiveBattler) / 8; #else - gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / 8; + gBattleMoveDamage = GetNonDynamaxMaxHP(gActiveBattler) / 8; else - gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / 16; + gBattleMoveDamage = GetNonDynamaxMaxHP(gActiveBattler) / 16; #endif if (gBattleMoveDamage == 0) @@ -3795,7 +3795,7 @@ u8 AtkCanceller_UnableToUseMove(void) if (moveType == TYPE_FIRE) { gProtectStructs[gBattlerAttacker].powderSelfDmg = TRUE; - gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 4; + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker) / 4; gBattlescriptCurrInstr = BattleScript_MoveUsedPowder; effect = 1; } @@ -4961,7 +4961,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move && !(gStatuses3[battler] & STATUS3_HEAL_BLOCK)) { BattleScriptPushCursorAndCallback(BattleScript_RainDishActivates); - gBattleMoveDamage = gBattleMons[battler].maxHP / (gLastUsedAbility == ABILITY_RAIN_DISH ? 16 : 8); + gBattleMoveDamage = GetNonDynamaxMaxHP(battler) / (gLastUsedAbility == ABILITY_RAIN_DISH ? 16 : 8); if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; gBattleMoveDamage *= -1; @@ -5065,7 +5065,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move if (IsBattlerWeatherAffected(battler, B_WEATHER_SUN)) { BattleScriptPushCursorAndCallback(BattleScript_SolarPowerActivates); - gBattleMoveDamage = gBattleMons[battler].maxHP / 8; + gBattleMoveDamage = GetNonDynamaxMaxHP(battler) / 8; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; effect++; @@ -5275,7 +5275,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move else gBattlescriptCurrInstr = BattleScript_MoveHPDrain_PPLoss; - gBattleMoveDamage = gBattleMons[battler].maxHP / 4; + gBattleMoveDamage = GetNonDynamaxMaxHP(battler) / 4; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; gBattleMoveDamage *= -1; @@ -5567,9 +5567,9 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move && IsMoveMakingContact(move, gBattlerAttacker)) { #if B_ROUGH_SKIN_DMG >= GEN_4 - gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 8; + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker) / 8; #else - gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 16; + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker) / 16; #endif if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; @@ -5594,7 +5594,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move } else { - gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 4; + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker) / 4; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; BattleScriptPushCursor(); @@ -5800,7 +5800,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move gBattleMons[gBattlerTarget].species = SPECIES_CRAMORANT; if (GetBattlerAbility(gBattlerAttacker) != ABILITY_MAGIC_GUARD) { - gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 4; + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker) / 4; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; } @@ -5813,7 +5813,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move gBattleMons[gBattlerTarget].species = SPECIES_CRAMORANT; if (GetBattlerAbility(gBattlerAttacker) != ABILITY_MAGIC_GUARD) { - gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 4; + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker) / 4; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; } @@ -6597,7 +6597,7 @@ static u8 HealConfuseBerry(u32 battlerId, u32 itemId, u8 flavorId, bool32 end2) { PREPARE_FLAVOR_BUFFER(gBattleTextBuff1, flavorId); - gBattleMoveDamage = gBattleMons[battlerId].maxHP / GetBattlerItemHoldEffectParam(battlerId, itemId); + gBattleMoveDamage = GetNonDynamaxMaxHP(battlerId) / GetBattlerItemHoldEffectParam(battlerId, itemId); if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; gBattleMoveDamage *= -1; @@ -6788,7 +6788,7 @@ static u8 ItemHealHp(u32 battlerId, u32 itemId, bool32 end2, bool32 percentHeal) && HasEnoughHpToEatBerry(battlerId, 2, itemId)) { if (percentHeal) - gBattleMoveDamage = (gBattleMons[battlerId].maxHP * GetBattlerItemHoldEffectParam(battlerId, itemId) / 100) * -1; + gBattleMoveDamage = (GetNonDynamaxMaxHP(battlerId) * GetBattlerItemHoldEffectParam(battlerId, itemId) / 100) * -1; else gBattleMoveDamage = GetBattlerItemHoldEffectParam(battlerId, itemId) * -1; @@ -7389,7 +7389,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn) } else if (GetBattlerAbility(battlerId) != ABILITY_MAGIC_GUARD && !moveTurn) { - gBattleMoveDamage = gBattleMons[battlerId].maxHP / 8; + gBattleMoveDamage = GetNonDynamaxMaxHP(battlerId) / 8; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; BattleScriptExecute(BattleScript_ItemHurtEnd2); @@ -7406,7 +7406,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn) if (gBattleMons[battlerId].hp < gBattleMons[battlerId].maxHP && !moveTurn) #endif { - gBattleMoveDamage = gBattleMons[battlerId].maxHP / 16; + gBattleMoveDamage = GetNonDynamaxMaxHP(battlerId) / 16; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; gBattleMoveDamage *= -1; @@ -7695,7 +7695,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn) && GetBattlerAbility(gBattlerAttacker) != ABILITY_MAGIC_GUARD && gSpecialStatuses[gBattlerAttacker].damagedMons) { - gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 10; + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker) / 10; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; effect = ITEM_HP_CHANGE; @@ -7741,7 +7741,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn) && IsBattlerAlive(gBattlerAttacker) && GetBattlerAbility(gBattlerAttacker) != ABILITY_MAGIC_GUARD) { - gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 6; + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker) / 6; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; effect = ITEM_HP_CHANGE; @@ -7812,7 +7812,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn) && IS_MOVE_PHYSICAL(gCurrentMove) && GetBattlerAbility(gBattlerAttacker) != ABILITY_MAGIC_GUARD) { - gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 8; + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker) / 8; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; if (GetBattlerAbility(battlerId) == ABILITY_RIPEN) @@ -7832,7 +7832,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn) && IS_MOVE_SPECIAL(gCurrentMove) && GetBattlerAbility(gBattlerAttacker) != ABILITY_MAGIC_GUARD) { - gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 8; + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker) / 8; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; if (GetBattlerAbility(battlerId) == ABILITY_RIPEN) @@ -7897,7 +7897,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn) case HOLD_EFFECT_STICKY_BARB: // Not an orb per se, but similar effect, and needs to NOT activate with pickpocket if (battlerAbility != ABILITY_MAGIC_GUARD) { - gBattleMoveDamage = gBattleMons[battlerId].maxHP / 8; + gBattleMoveDamage = GetNonDynamaxMaxHP(battlerId) / 8; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; BattleScriptExecute(BattleScript_ItemHurtEnd2); diff --git a/test/dynamax.c b/test/dynamax.c index 114b5b51e7..980e65f722 100644 --- a/test/dynamax.c +++ b/test/dynamax.c @@ -2,10 +2,20 @@ #include "test_battle.h" // TODO: -// Max Guard protects against Transform, Block (not Mean Look), Flower Shield, Gear Up, and so on (see Bulba). -// Imprison doesn't stop Max Moves. -// Max Moves change type as you'd expect with Normalize, Weather Ball, etc. -// (Unrelated) Refactor code to remove dynamax.usingMaxMove? +// TEST: Max Guard protects against Transform, Block (not Mean Look), Flower Shield, Gear Up, and so on (see Bulba). +// TEST: Imprison doesn't stop Max Moves. (how?) +// TEST: Max Moves change type as you'd expect with Normalize, Weather Ball, etc. +// TEST: Reverting HP after Dynamax rounds up, so does Endeavor? +// TEST: You use Struggle while Dynamaxed if out of PP. +// Refactor code to remove dynamax.usingMaxMove? Might keep for Raids +// Ditto cannot turn into a Gigantamax form. +// Interactions with a Dynamaxed Pokemon with Magic Bounce. +// Dynamax should not reset Speed Swap, Soak, or anything else from form changing. +// Multi Attack is treated in Max Move power calcs like a Fighting or Poison type move. +// Max Moves cannot be used against allies. +// G-Max Befuddle applies statuses before considering immunities. +// G-Max Replenish guarantees either both allies' berries or neithers. +// G-Max Sandwhatever still keeps Sand Tomb up when Sandaconda switches. // ============= DYNAMAX AND MAX MOVE INTERACTIONS =================== SINGLE_BATTLE_TEST("(DYNAMAX) Dynamax increases HP and max HP by 1.5x") @@ -353,6 +363,7 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon take double damage from Dynamax PARAMETRIZE { dynamaxed = FALSE; } PARAMETRIZE { dynamaxed = TRUE; } GIVEN { + ASSUME(gBattleMoves[MOVE_DYNAMAX_CANNON].effect == EFFECT_DYNAMAX_DOUBLE_DMG); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { @@ -511,6 +522,100 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon cannot use Max Guard while holdi } } +// Almost anything that calculates gBattleMoveDamage based on HP has been changed to non-Dynamax HP. +// This includes Leftovers, Life Orb, Heal Pulse, Rocky Helmet, Sandstorm, etc. etc. +// There are some redundant cases (i.e Substitute) that can never be used by a Dynamaxed pokemon. +// Anything that is conditional based off max HP still uses gBattleMons[battler].maxHP. +// Below are some tests, but very far from all encompassing: + +SINGLE_BATTLE_TEST("(DYNAMAX) Endeavor uses a Pokemon's non-Dynamax HP") +{ + s16 damage; + GIVEN { + ASSUME(gBattleMoves[MOVE_ENDEAVOR].effect == EFFECT_ENDEAVOR); + PLAYER(SPECIES_WOBBUFFET) { MaxHP(100); Speed(50); } + OPPONENT(SPECIES_WOBBUFFET) { HP(1); MaxHP(100); Speed(100); } + } WHEN { + TURN { MOVE(opponent, MOVE_ENDEAVOR); MOVE(player, MOVE_TACKLE, dynamax: TRUE); } + } SCENE { + MESSAGE("Foe Wobbuffet used Endeavor!"); + HP_BAR(player, captureDamage: &damage); + } FINALLY { + EXPECT_EQ(damage, 99); // difference between foe's HP and player's non-dynamax HP + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Super Fang uses a Pokemon's non-Dynamax HP") +{ + s16 damage; + GIVEN { + ASSUME(gBattleMoves[MOVE_SUPER_FANG].effect == EFFECT_SUPER_FANG); + PLAYER(SPECIES_WOBBUFFET) { HP(50); MaxHP(100); Speed(50); } + OPPONENT(SPECIES_WOBBUFFET) { Speed(100); } + } WHEN { + TURN { MOVE(opponent, MOVE_SUPER_FANG); MOVE(player, MOVE_TACKLE, dynamax: TRUE); } + } SCENE { + MESSAGE("Foe Wobbuffet used Super Fang!"); + HP_BAR(player, captureDamage: &damage); + } FINALLY { + EXPECT_EQ(damage, 25); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Pain Split uses a Pokemon's non-Dynamax HP") +{ + s16 damage; + GIVEN { + ASSUME(gBattleMoves[MOVE_PAIN_SPLIT].effect == EFFECT_PAIN_SPLIT); + PLAYER(SPECIES_WOBBUFFET) { HP(60); MaxHP(100); Speed(50); } + OPPONENT(SPECIES_WOBBUFFET) { HP(40); MaxHP(100); Speed(100); } + } WHEN { + TURN { MOVE(opponent, MOVE_PAIN_SPLIT); MOVE(player, MOVE_TACKLE, dynamax: TRUE); } + } SCENE { + MESSAGE("Foe Wobbuffet used Pain Split!"); + HP_BAR(player, captureDamage: &damage); + } FINALLY { + EXPECT_EQ(damage, 10); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Sitrus Berries heal based on a Pokemon's non-Dynamax HP") +{ + s16 damage; + GIVEN { + ASSUME(I_SITRUS_BERRY_HEAL >= GEN_4); + ASSUME(gItems[ITEM_SITRUS_BERRY].holdEffect == HOLD_EFFECT_RESTORE_PCT_HP); + PLAYER(SPECIES_WOBBUFFET) { HP(60); MaxHP(100); Speed(50); Item(ITEM_SITRUS_BERRY); } + OPPONENT(SPECIES_WOBBUFFET) { HP(40); MaxHP(100); Speed(100); } + } WHEN { + TURN { MOVE(opponent, MOVE_PAIN_SPLIT); MOVE(player, MOVE_TACKLE, dynamax: TRUE); } + } SCENE { + MESSAGE("Foe Wobbuffet used Pain Split!"); + HP_BAR(player); + MESSAGE("Wobbuffet's Sitrus Berry restored health!"); + HP_BAR(player, captureDamage: &damage); + } FINALLY { + EXPECT_EQ(damage, 25); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Heal Pulse heals based on a Pokemon's non-Dynamax HP") +{ + s16 damage; + GIVEN { + ASSUME(gBattleMoves[MOVE_HEAL_PULSE].effect == EFFECT_HEAL_PULSE); + PLAYER(SPECIES_WOBBUFFET) { HP(50); MaxHP(100); Speed(50); } + OPPONENT(SPECIES_WOBBUFFET) { MaxHP(100); Speed(100); } + } WHEN { + TURN { MOVE(opponent, MOVE_HEAL_PULSE); MOVE(player, MOVE_TACKLE, dynamax: TRUE); } + } SCENE { + MESSAGE("Foe Wobbuffet used Heal Pulse!"); + HP_BAR(player, captureDamage: &damage); + } FINALLY { + EXPECT_EQ(damage, 50); + } +} + // ============= MAX MOVE EFFECTS ========================================== SINGLE_BATTLE_TEST("(DYNAMAX) Max Strike lowers single opponent's speed") { From 6233627a5732f2702ef8947a7e913591c3ec0d94 Mon Sep 17 00:00:00 2001 From: AgustinGDLV Date: Wed, 22 Mar 2023 17:04:05 -0700 Subject: [PATCH 044/162] more tests + fixed hp reversion issues --- data/battle_scripts_1.s | 9 +- include/battle_scripts.h | 1 + include/constants/battle_string_ids.h | 21 ++-- src/battle_dynamax.c | 13 ++- src/battle_main.c | 6 ++ src/battle_message.c | 2 + src/battle_script_commands.c | 2 +- test/dynamax.c | 143 +++++++++++++++++++++++++- 8 files changed, 181 insertions(+), 16 deletions(-) diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 4978a770b6..8c41290fef 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -7483,6 +7483,11 @@ BattleScript_StealthRockFree:: waitmessage B_WAIT_TIME_LONG return +BattleScript_SteelsurgeFree:: + printstring STRINGID_PKMNBLEWAWAYSHARPSTEEL + waitmessage B_WAIT_TIME_LONG + return + BattleScript_SpikesDefog:: printstring STRINGID_SPIKESDISAPPEAREDFROMTEAM waitmessage B_WAIT_TIME_LONG @@ -7503,8 +7508,8 @@ BattleScript_StealthRockDefog:: waitmessage B_WAIT_TIME_LONG return -BattleScript_SteelsurgeFree:: - printstring STRINGID_PKMNBLEWAWAYSHARPSTEEL +BattleScript_SteelsurgeDefog:: + printstring STRINGID_SHARPSTEELDISAPPEAREDFROMTEAM waitmessage B_WAIT_TIME_LONG return diff --git a/include/battle_scripts.h b/include/battle_scripts.h index 70acc0824a..eca739fb2f 100644 --- a/include/battle_scripts.h +++ b/include/battle_scripts.h @@ -477,6 +477,7 @@ extern const u8 BattleScript_EffectSetWeather[]; extern const u8 BattleScript_EffectSetTerrain[]; extern const u8 BattleScript_SteelsurgeActivates[]; extern const u8 BattleScript_SteelsurgeFree[]; +extern const u8 BattleScript_SteelsurgeDefog[]; extern const u8 BattleScript_DamageNonTypesStarts[]; extern const u8 BattleScript_DamageNonTypesContinues[]; extern const u8 BattleScript_DefogTryHazards[]; diff --git a/include/constants/battle_string_ids.h b/include/constants/battle_string_ids.h index c40dd14362..5b6fa1d6a3 100644 --- a/include/constants/battle_string_ids.h +++ b/include/constants/battle_string_ids.h @@ -650,17 +650,18 @@ #define STRINGID_SHARPSTEELFLOATS 648 #define STRINGID_SHARPSTEELDMG 649 #define STRINGID_PKMNBLEWAWAYSHARPSTEEL 650 -#define STRINGID_TEAMTRAPPEDWITHVINES 651 -#define STRINGID_PKMNHURTBYVINES 652 -#define STRINGID_TEAMCAUGHTINVORTEX 653 -#define STRINGID_PKMNHURTBYVORTEX 654 -#define STRINGID_TEAMSURROUNDEDBYFIRE 655 -#define STRINGID_PKMNBURNINGUP 656 -#define STRINGID_TEAMSURROUNDEDBYROCKS 657 -#define STRINGID_PKMNHURTBYROCKSTHROWN 658 -#define STRINGID_MOVEBLOCKEDBYDYNAMAX 659 +#define STRINGID_SHARPSTEELDISAPPEAREDFROMTEAM 651 +#define STRINGID_TEAMTRAPPEDWITHVINES 652 +#define STRINGID_PKMNHURTBYVINES 653 +#define STRINGID_TEAMCAUGHTINVORTEX 654 +#define STRINGID_PKMNHURTBYVORTEX 655 +#define STRINGID_TEAMSURROUNDEDBYFIRE 656 +#define STRINGID_PKMNBURNINGUP 657 +#define STRINGID_TEAMSURROUNDEDBYROCKS 658 +#define STRINGID_PKMNHURTBYROCKSTHROWN 659 +#define STRINGID_MOVEBLOCKEDBYDYNAMAX 660 -#define BATTLESTRINGS_COUNT 660 +#define BATTLESTRINGS_COUNT 661 // This is the string id that gBattleStringsTable starts with. // String ids before this (e.g. STRINGID_INTROMSG) are not in the table, diff --git a/src/battle_dynamax.c b/src/battle_dynamax.c index fa2909b58d..cc7a76f52c 100644 --- a/src/battle_dynamax.c +++ b/src/battle_dynamax.c @@ -179,12 +179,21 @@ void PrepareBattlerForDynamax(u16 battlerId) TryBattleFormChange(battlerId, FORM_CHANGE_BATTLE_GIGANTAMAX); } -// Sets flags needed for undoing Dynamax and undoes Gigantamax forms. +// Unsets the flags used for Dynamaxing and reverts max HP if needed. void UndoDynamax(u16 battlerId) { u8 side = GetBattlerSide(battlerId); + // Revert HP if battler is Dynamaxed. + if (IsDynamaxed(battlerId)) + { + struct Pokemon *party = (side == B_SIDE_PLAYER) ? gPlayerParty : gEnemyParty; + u16 mult = UQ_4_12(1.0/1.5); // placeholder + u16 hp = UQ_4_12_TO_INT((gBattleMons[battlerId].hp * mult + 1) + UQ_4_12_ROUND); // round up + SetMonData(&party[gBattlerPartyIndexes[battlerId]], MON_DATA_HP, &hp); + } + // Makes sure there are no Dynamax flags set, including on switch / faint. gBattleStruct->dynamax.dynamaxed[battlerId] = FALSE; - gBattleStruct->dynamax.dynamaxTurns[battlerId] = 0; // safety check for switch-in / faint + gBattleStruct->dynamax.dynamaxTurns[battlerId] = 0; } // Weight-based moves (and some other moves in Raids) are blocked by Dynamax. diff --git a/src/battle_main.c b/src/battle_main.c index 56fe1e5fac..055823f6c1 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -5247,6 +5247,12 @@ static void HandleEndTurn_FinishBattle(void) if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) TryRestoreStolenItems(); #endif + + // Undo Dynamax HP multiplier before recalculating stats. + for (i = 0; i < gBattlersCount; ++i) + if (IsDynamaxed(i)) + UndoDynamax(i); + for (i = 0; i < PARTY_SIZE; i++) { bool8 changedForm = FALSE; diff --git a/src/battle_message.c b/src/battle_message.c index 084fb6241e..771ce162c7 100644 --- a/src/battle_message.c +++ b/src/battle_message.c @@ -783,6 +783,7 @@ static const u8 sText_ShellTrapDidntWork[] = _("{B_ATK_NAME_WITH_PREFIX}'s shell static const u8 sText_SharpSteelFloats[] = _("Sharp-pointed steel floats\naround {B_DEF_TEAM2} team!"); static const u8 sText_SharpSteelDmg[] = _("Sharp steel bit into {B_DEF_NAME_WITH_PREFIX}!"); static const u8 sText_PkmnBlewAwaySharpSteel[] = _("{B_ATK_NAME_WITH_PREFIX} blew away\nsharp steel!"); +static const u8 sText_SharpSteelDisappearedFromTeam[] = _("The sharp steel disappeared from\nthe ground around {B_ATK_TEAM2} team!"); static const u8 sText_TeamTrappedWithVines[] = _("{B_DEF_TEAM1} team got trapped\nwith vines!"); static const u8 sText_PkmnHurtByVines[] = _("{B_ATK_NAME_WITH_PREFIX} is hurt by\nG-Max Vine Lash's ferocious beating!"); static const u8 sText_TeamCaughtInVortex[] = _("{B_DEF_TEAM1} team got caught\nin a vortex of water!"); @@ -1401,6 +1402,7 @@ const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT] = [STRINGID_TOXICSPIKESDISAPPEAREDFROMTEAM - BATTLESTRINGS_TABLE_START] = sText_ToxicSpikesDisappearedFromTeam, [STRINGID_STEALTHROCKDISAPPEAREDFROMTEAM - BATTLESTRINGS_TABLE_START] = sText_StealthRockDisappearedFromTeam, [STRINGID_STICKYWEBDISAPPEAREDFROMTEAM - BATTLESTRINGS_TABLE_START] = sText_StickyWebDisappearedFromTeam, + [STRINGID_SHARPSTEELDISAPPEAREDFROMTEAM - BATTLESTRINGS_TABLE_START] = sText_SharpSteelDisappearedFromTeam, [STRINGID_IONDELUGEON - BATTLESTRINGS_TABLE_START] = sText_IonDelugeOn, [STRINGID_TOPSYTURVYSWITCHEDSTATS - BATTLESTRINGS_TABLE_START] = sText_TopsyTurvySwitchedStats, [STRINGID_TERRAINBECOMESMISTY - BATTLESTRINGS_TABLE_START] = sText_TerrainBecomesMisty, diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 78bd161f4d..5f35e4ac7e 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -8493,7 +8493,7 @@ static bool32 TryDefogClear(u8 battlerAtk, bool32 clear) DEFOG_CLEAR(SIDE_STATUS_STEALTH_ROCK, stealthRockAmount, BattleScript_StealthRockDefog, 0); DEFOG_CLEAR(SIDE_STATUS_TOXIC_SPIKES, toxicSpikesAmount, BattleScript_ToxicSpikesDefog, 0); DEFOG_CLEAR(SIDE_STATUS_STICKY_WEB, stickyWebAmount, BattleScript_StickyWebDefog, 0); - DEFOG_CLEAR(SIDE_STATUS_STEELSURGE, steelsurgeAmount, BattleScript_SteelsurgeFree, 0); + DEFOG_CLEAR(SIDE_STATUS_STEELSURGE, steelsurgeAmount, BattleScript_SteelsurgeDefog, 0); #if B_DEFOG_CLEARS_TERRAIN >= GEN_8 if (gFieldStatuses & STATUS_FIELD_TERRAIN_ANY) { diff --git a/test/dynamax.c b/test/dynamax.c index 980e65f722..3c3c174228 100644 --- a/test/dynamax.c +++ b/test/dynamax.c @@ -5,7 +5,6 @@ // TEST: Max Guard protects against Transform, Block (not Mean Look), Flower Shield, Gear Up, and so on (see Bulba). // TEST: Imprison doesn't stop Max Moves. (how?) // TEST: Max Moves change type as you'd expect with Normalize, Weather Ball, etc. -// TEST: Reverting HP after Dynamax rounds up, so does Endeavor? // TEST: You use Struggle while Dynamaxed if out of PP. // Refactor code to remove dynamax.usingMaxMove? Might keep for Raids // Ditto cannot turn into a Gigantamax form. @@ -677,6 +676,47 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) Max Strike lowers both opponents' speed") } } +DOUBLE_BATTLE_TEST("(DYNAMAX) Max Knuckle raises both allies' attack") +{ + s16 damage[4]; + GIVEN { + ASSUME(gBattleMoves[MOVE_MAX_KNUCKLE].argument == MAX_EFFECT_RAISE_TEAM_ATTACK); + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WYNAUT); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(playerLeft, MOVE_CLOSE_COMBAT, target: opponentLeft, dynamax: TRUE); \ + MOVE(playerRight, MOVE_TACKLE, target: opponentRight); } + TURN { MOVE(playerLeft, MOVE_CLOSE_COMBAT, target: opponentLeft); \ + MOVE(playerRight, MOVE_TACKLE, target: opponentRight); } + } SCENE { + // turn 1 + MESSAGE("Wobbuffet used Max Knuckle!"); + HP_BAR(opponentLeft, captureDamage: &damage[0]); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerLeft); + MESSAGE("Wobbuffet's attack rose!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerRight); + MESSAGE("Wynaut's attack rose!"); + MESSAGE("Wynaut used Tackle!"); + HP_BAR(opponentRight, captureDamage: &damage[1]); + MESSAGE("Foe Wobbuffet used Celebrate!"); + MESSAGE("Foe Wynaut used Celebrate!"); + // turn 2 + MESSAGE("Wobbuffet used Max Knuckle!"); + HP_BAR(opponentLeft, captureDamage: &damage[2]); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerLeft); + MESSAGE("Wobbuffet's attack rose!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerRight); + MESSAGE("Wynaut's attack rose!"); + MESSAGE("Wynaut used Tackle!"); + HP_BAR(opponentRight, captureDamage: &damage[3]); + } FINALLY { + EXPECT_GT(damage[2], damage[0]); + EXPECT_GT(damage[3], damage[1]); + } +} + SINGLE_BATTLE_TEST("(DYNAMAX) Max Flare sets up sunlight") { GIVEN { @@ -775,3 +815,104 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Max Mindstorm sets up Psychic Terrain") MESSAGE("Wobbuffet used Max Mindstorm!"); } } + +SINGLE_BATTLE_TEST("(DYNAMAX) Max Lightning sets up Electric Terrain") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_MAX_LIGHTNING].argument == MAX_EFFECT_ELECTRIC_TERRAIN); + OPPONENT(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_THUNDERBOLT, dynamax: TRUE); MOVE(opponent, MOVE_SPORE); } + } SCENE { + MESSAGE("Wobbuffet used Max Lightning!"); + MESSAGE("Foe Wobbuffet used Spore!"); + MESSAGE("Wobbuffet surrounds itself with electrified terrain!"); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Max Starfall sets up Misty Terrain") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_MAX_STARFALL].argument == MAX_EFFECT_MISTY_TERRAIN); + OPPONENT(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_MOONBLAST, dynamax: TRUE); MOVE(opponent, MOVE_TOXIC); } + } SCENE { + MESSAGE("Wobbuffet used Max Starfall!"); + MESSAGE("Foe Wobbuffet used Toxic!"); + MESSAGE("Wobbuffet surrounds itself with a protective mist!"); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) G-Max Stonesurge sets up Stealth Rocks") +{ + GIVEN { + ASSUME(P_GEN_8_POKEMON == TRUE); + ASSUME(gBattleMoves[MOVE_G_MAX_STONESURGE].argument == MAX_EFFECT_STEALTH_ROCK); + PLAYER(SPECIES_DREDNAW); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_LIQUIDATION, dynamax: TRUE); } + TURN { SWITCH(opponent, 1); } + } SCENE { + // turn 1 + MESSAGE("Drednaw used G-Max Stonesurge!"); + MESSAGE("Pointed stones float in the air around the opposing team!"); + // turn 2 + MESSAGE("Pointed stones dug into Foe Wobbuffet!"); + } +} + +// The test below also tests that sharp steel does type-based damage and can be Defogged away. +SINGLE_BATTLE_TEST("(DYNAMAX) G-Max Steelsurge sets up sharp steel") +{ + s16 damage; + GIVEN { + ASSUME(P_GEN_8_POKEMON == TRUE); + ASSUME(gBattleMoves[MOVE_G_MAX_STEELSURGE].argument == MAX_EFFECT_STEELSURGE); + PLAYER(SPECIES_COPPERAJAH); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_CLEFABLE) { MaxHP(100); } + } WHEN { + TURN { MOVE(player, MOVE_IRON_HEAD, dynamax: TRUE); } + TURN { SWITCH(opponent, 1); } + TURN { } // wait out Dynamax + TURN { MOVE(opponent, MOVE_DEFOG); } + } SCENE { + // turn 1 + MESSAGE("Copperajah used G-Max Steelsurge!"); + MESSAGE("Sharp-pointed steel floats around the opposing team!"); + // turn 2 + HP_BAR(opponent, captureDamage: &damage); + MESSAGE("Sharp steel bit into Foe Clefable!"); + // turn 4 + MESSAGE("Foe Clefable used Defog!"); + MESSAGE("The sharp steel disappeared from the ground around the opposing team!"); + } FINALLY { + EXPECT_EQ(damage, 25); + } +} + +// The test below should apply to G-Max Fireball and G-Max Drum Solo, too. +SINGLE_BATTLE_TEST("(DYNAMAX) G-Max Hydrosnipe has fixed power and ignores abilities", s16 damage) +{ + u16 move; + PARAMETRIZE { move = MOVE_WATER_GUN; } + PARAMETRIZE { move = MOVE_HYDRO_CANNON; } + GIVEN { + ASSUME(P_GEN_8_POKEMON == TRUE); + ASSUME(gBattleMoves[MOVE_G_MAX_HYDROSNIPE].argument == MAX_EFFECT_FIXED_POWER); + PLAYER(SPECIES_INTELEON); + OPPONENT(SPECIES_ARCTOVISH) { Ability(ABILITY_WATER_ABSORB); } + } WHEN { + TURN { MOVE(player, move, dynamax: TRUE); } + } SCENE { + MESSAGE("Inteleon used G-Max Hydrosnipe!"); + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_EQ(results[0].damage, results[1].damage); + } +} From a3c8b97a6c1d110aa889b028f90d887ae0047c09 Mon Sep 17 00:00:00 2001 From: AgustinGDLV Date: Wed, 22 Mar 2023 20:18:25 -0700 Subject: [PATCH 045/162] added tests for status1/status2 effects + bug fixes for them --- data/battle_scripts_1.s | 7 +- src/battle_script_commands.c | 2 +- src/battle_util.c | 4 +- test/dynamax.c | 240 +++++++++++++++++++++++++++++++++-- 4 files changed, 237 insertions(+), 16 deletions(-) diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 8c41290fef..3b849d1074 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -10517,7 +10517,8 @@ BattleScript_Status1FoesLoop: updatestatusicon BS_TARGET printfromtable gStatusConditionsStringIds waitmessage B_WAIT_TIME_LONG - goto BattleScript_UpdateEffectStatusIconRet + updatestatusicon BS_EFFECT_BATTLER + waitstate BattleScript_Status1FoesIncrement: jumpifbytenotequal gBattlerTarget, sBATTLER, BattleScript_Status1FoesEnd setallytonexttarget BattleScript_Status1FoesLoop @@ -10545,11 +10546,11 @@ BattleScript_Status2FoesEnd: goto BattleScript_MoveEnd BattleScript_DoConfuseAnim: - status2animation BS_TARGET, STATUS2_CONFUSION + status2animation BS_EFFECT_BATTLER, STATUS2_CONFUSION goto BattleScript_Status2FoesPrintMessage BattleScript_DoInfatuationAnim: - status2animation BS_TARGET, STATUS2_INFATUATION + status2animation BS_EFFECT_BATTLER, STATUS2_INFATUATION goto BattleScript_Status2FoesPrintMessage BattleScript_PrintCoinsScattered: diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 5f35e4ac7e..64cc892697 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -11273,7 +11273,7 @@ static void Cmd_various(void) && !IsAbilityOnSide(gBattlerTarget, ABILITY_AROMA_VEIL)) { gBattleMons[gBattlerTarget].status2 |= STATUS2_TORMENT; - gDisableStructs[gBattlerTarget].tormentTimer = 4; // 3 turns excluding current turn + gDisableStructs[gBattlerTarget].tormentTimer = 3; // 3 turns excluding current turn gBattleCommunication[MULTISTRING_CHOOSER] = 3; effect++; } diff --git a/src/battle_util.c b/src/battle_util.c index edaebfdb3a..e2477c3e97 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -6549,8 +6549,8 @@ bool32 CanBeFrozen(u8 battlerId) bool32 CanBeConfused(u8 battlerId) { - if (GetBattlerAbility(gEffectBattler) == ABILITY_OWN_TEMPO - || gBattleMons[gEffectBattler].status2 & STATUS2_CONFUSION + if (GetBattlerAbility(battlerId) == ABILITY_OWN_TEMPO + || gBattleMons[battlerId].status2 & STATUS2_CONFUSION || IsBattlerTerrainAffected(battlerId, STATUS_FIELD_MISTY_TERRAIN)) return FALSE; return TRUE; diff --git a/test/dynamax.c b/test/dynamax.c index 3c3c174228..584aa909ac 100644 --- a/test/dynamax.c +++ b/test/dynamax.c @@ -2,18 +2,19 @@ #include "test_battle.h" // TODO: +// ========== // TEST: Max Guard protects against Transform, Block (not Mean Look), Flower Shield, Gear Up, and so on (see Bulba). -// TEST: Imprison doesn't stop Max Moves. (how?) -// TEST: Max Moves change type as you'd expect with Normalize, Weather Ball, etc. -// TEST: You use Struggle while Dynamaxed if out of PP. +// TEST: Imprison doesn't stop Max Moves. (YES!) +// TEST: Max Moves change type as you'd expect with Normalize, Weather Ball, etc. (YES!) +// TEST: You use Struggle while Dynamaxed if out of PP. (YES!) +// TEST: G-Max Befuddle applies statuses before considering immunities. (YES!) // Refactor code to remove dynamax.usingMaxMove? Might keep for Raids -// Ditto cannot turn into a Gigantamax form. -// Interactions with a Dynamaxed Pokemon with Magic Bounce. -// Dynamax should not reset Speed Swap, Soak, or anything else from form changing. -// Multi Attack is treated in Max Move power calcs like a Fighting or Poison type move. -// Max Moves cannot be used against allies. -// G-Max Befuddle applies statuses before considering immunities. -// G-Max Replenish guarantees either both allies' berries or neithers. +// Ditto cannot turn into a Gigantamax form. (NO) +// Interactions with a Dynamaxed Pokemon with Magic Bounce. (???) +// Dynamax should not reset Speed Swap, Soak, or anything else from form changing. (NO) +// Multi Attack is treated in Max Move power calcs like a Fighting or Poison type move. (NO) +// Max Moves cannot be used against allies. (NO) +// G-Max Replenish guarantees either both allies' berries or neither's. (NO) // G-Max Sandwhatever still keeps Sand Tomb up when Sandaconda switches. // ============= DYNAMAX AND MAX MOVE INTERACTIONS =================== @@ -916,3 +917,222 @@ SINGLE_BATTLE_TEST("(DYNAMAX) G-Max Hydrosnipe has fixed power and ignores abili EXPECT_EQ(results[0].damage, results[1].damage); } } + +DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Volt Crash paralyzes both opponents") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_G_MAX_VOLT_CRASH].argument == MAX_EFFECT_PARALYZE_FOES); + PLAYER(SPECIES_PIKACHU); + PLAYER(SPECIES_PICHU); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(playerLeft, MOVE_THUNDERBOLT, target: opponentLeft, dynamax: TRUE); } + } SCENE { + MESSAGE("Pikachu used G-Max Volt Crash!"); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PRZ, opponentLeft); + STATUS_ICON(opponentLeft, paralysis: TRUE); + MESSAGE("Foe Wobbuffet is paralyzed! It may be unable to move!"); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PRZ, opponentRight); + STATUS_ICON(opponentRight, paralysis: TRUE); + MESSAGE("Foe Wynaut is paralyzed! It may be unable to move!"); + } +} + +DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Stun Shock paralyzes or poisons both opponents") +{ + GIVEN { + ASSUME(P_GEN_8_POKEMON == TRUE); + ASSUME(gBattleMoves[MOVE_G_MAX_STUN_SHOCK].argument == MAX_EFFECT_POISON_PARALYZE_FOES); + PLAYER(SPECIES_TOXTRICITY); + PLAYER(SPECIES_TOXEL); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(playerLeft, MOVE_THUNDERBOLT, target: opponentLeft, dynamax: TRUE); } + } SCENE { + MESSAGE("Toxtricity used G-Max Stun Shock!"); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, opponentLeft); + STATUS_ICON(opponentLeft, poison: TRUE); + MESSAGE("Foe Wobbuffet was poisoned!"); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PRZ, opponentRight); + STATUS_ICON(opponentRight, paralysis: TRUE); + MESSAGE("Foe Wynaut is paralyzed! It may be unable to move!"); + } +} + +// This test extends to G-Max Befuddle, too. +DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Stun Shock chooses statuses before considering immunities") +{ + GIVEN { + ASSUME(P_GEN_8_POKEMON == TRUE); + ASSUME(gBattleMoves[MOVE_G_MAX_STUN_SHOCK].argument == MAX_EFFECT_POISON_PARALYZE_FOES); + PLAYER(SPECIES_TOXTRICITY); + PLAYER(SPECIES_TOXEL); + OPPONENT(SPECIES_GARBODOR); + OPPONENT(SPECIES_TRUBBISH); + } WHEN { + TURN { MOVE(playerLeft, MOVE_NUZZLE, target: opponentLeft, dynamax: TRUE); } + } SCENE { + MESSAGE("Toxtricity used G-Max Stun Shock!"); + NONE_OF { + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PRZ, opponentLeft); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, opponentLeft); + } + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PRZ, opponentRight); + MESSAGE("Foe Trubbish is paralyzed! It may be unable to move!"); + STATUS_ICON(opponentRight, paralysis: TRUE); + } FINALLY { + EXPECT_EQ(gBattleMons[B_POSITION_OPPONENT_LEFT].status1, STATUS1_NONE); + } +} + +DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Befuddle paralyzes, poisons, or sleeps both opponents") +{ + GIVEN { + RNGSeed(0x10000); + ASSUME(gBattleMoves[MOVE_G_MAX_BEFUDDLE].argument == MAX_EFFECT_EFFECT_SPORE_FOES); + PLAYER(SPECIES_BUTTERFREE); + PLAYER(SPECIES_CATERPIE); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(playerLeft, MOVE_BUG_BITE, target: opponentLeft, dynamax: TRUE); } + TURN { SWITCH(opponentLeft, 2); SWITCH(opponentRight, 3); \ + MOVE(playerLeft, MOVE_BUG_BITE, target: opponentLeft); } + } SCENE { + // turn 1 + MESSAGE("Butterfree used G-Max Befuddle!"); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, opponentLeft); + STATUS_ICON(opponentLeft, poison: TRUE); + MESSAGE("Foe Wobbuffet was poisoned!"); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_SLP, opponentRight); + STATUS_ICON(opponentRight, sleep: TRUE); + MESSAGE("Foe Wobbuffet fell asleep!"); + // turn 2 + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PRZ, opponentLeft); + MESSAGE("Foe Wobbuffet is paralyzed! It may be unable to move!"); + STATUS_ICON(opponentLeft, paralysis: TRUE); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, opponentRight); + MESSAGE("Foe Wobbuffet was poisoned!"); + STATUS_ICON(opponentRight, poison: TRUE); + } +} + +DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Gold Rush confuses both opponents and generates money") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_G_MAX_GOLD_RUSH].argument == MAX_EFFECT_CONFUSE_FOES_PAY_DAY); + PLAYER(SPECIES_MEOWTH); + PLAYER(SPECIES_PERSIAN); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(playerLeft, MOVE_TACKLE, target: opponentLeft, dynamax: TRUE); } + } SCENE { + MESSAGE("Meowth used G-Max Gold Rush!"); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_CONFUSION, opponentLeft); + MESSAGE("Foe Wobbuffet became confused!"); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_CONFUSION, opponentRight); + MESSAGE("Foe Wobbuffet became confused!"); + MESSAGE("Coins scattered everywhere!"); + } +} + +DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Smite confuses both opponents") +{ + GIVEN { + ASSUME(P_GEN_8_POKEMON == TRUE); + ASSUME(gBattleMoves[MOVE_G_MAX_SMITE].argument == MAX_EFFECT_CONFUSE_FOES); + PLAYER(SPECIES_HATTERENE); + PLAYER(SPECIES_HATENNA); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(playerLeft, MOVE_MOONBLAST, target: opponentLeft, dynamax: TRUE); } + } SCENE { + MESSAGE("Hatterene used G-Max Smite!"); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_CONFUSION, opponentLeft); + MESSAGE("Foe Wobbuffet became confused!"); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_CONFUSION, opponentRight); + MESSAGE("Foe Wobbuffet became confused!"); + } +} + +DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Cuddle infatuates both opponents, if possible") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_G_MAX_CUDDLE].argument == MAX_EFFECT_INFATUATE_FOES); + PLAYER(SPECIES_EEVEE) { Gender(MON_MALE); } + PLAYER(SPECIES_EEVEE); + OPPONENT(SPECIES_WOBBUFFET) { Gender(MON_FEMALE); } + OPPONENT(SPECIES_WOBBUFFET) { Gender(MON_MALE); } + } WHEN { + TURN { MOVE(playerLeft, MOVE_TACKLE, target: opponentLeft, dynamax: TRUE); } + } SCENE { + MESSAGE("Eevee used G-Max Cuddle!"); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_INFATUATION, opponentLeft); + MESSAGE("Foe Wobbuffet fell in love!"); + NONE_OF { + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_INFATUATION, opponentRight); + MESSAGE("Foe Wobbuffet became confused!"); + } + } +} + +DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Terror traps both opponents") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_G_MAX_TERROR].argument == MAX_EFFECT_MEAN_LOOK); + PLAYER(SPECIES_GENGAR); + PLAYER(SPECIES_GASTLY); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(playerLeft, MOVE_LICK, target: opponentLeft, dynamax: TRUE); } + } SCENE { + MESSAGE("Gengar used G-Max Terror!"); + MESSAGE("Foe Wobbuffet can't escape now!"); + MESSAGE("Foe Wobbuffet can't escape now!"); + } FINALLY { // Can't find good way to test trapping + EXPECT(gBattleMons[B_POSITION_OPPONENT_LEFT].status2 & STATUS2_ESCAPE_PREVENTION); + } +} + +DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Meltdown torments both opponents for 3 turns") +{ + GIVEN { + ASSUME(P_GEN_7_POKEMON == TRUE); + ASSUME(gBattleMoves[MOVE_G_MAX_MELTDOWN].argument == MAX_EFFECT_TORMENT_FOES); + PLAYER(SPECIES_MELMETAL); + PLAYER(SPECIES_MELTAN); + OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_SPLASH, MOVE_CELEBRATE); } + OPPONENT(SPECIES_WYNAUT) { Moves(MOVE_SPLASH, MOVE_CELEBRATE); } + } WHEN { + TURN { MOVE(playerLeft, MOVE_IRON_HEAD, target: opponentLeft, dynamax: TRUE); \ + MOVE(opponentLeft, MOVE_SPLASH); MOVE(opponentRight, MOVE_SPLASH); } + TURN { MOVE(playerLeft, MOVE_CELEBRATE, target: opponentLeft); \ + MOVE(opponentLeft, MOVE_SPLASH, allowed: FALSE); \ + MOVE(opponentLeft, MOVE_CELEBRATE); \ + MOVE(opponentRight, MOVE_SPLASH, allowed: FALSE); \ + MOVE(opponentRight, MOVE_CELEBRATE); } + TURN { MOVE(playerLeft, MOVE_CELEBRATE, target: opponentLeft); \ + MOVE(opponentLeft, MOVE_SPLASH); \ + MOVE(opponentRight, MOVE_SPLASH); } + } SCENE { + // turn 1 + MESSAGE("Melmetal used G-Max Meltdown!"); + MESSAGE("Foe Wobbuffet was subjected to torment!"); + MESSAGE("Foe Wynaut was subjected to torment!"); + MESSAGE("Foe Wobbuffet used Splash!"); + MESSAGE("Foe Wynaut used Splash!"); + // turn 2 + MESSAGE("Foe Wobbuffet used Celebrate!"); + MESSAGE("Foe Wynaut used Celebrate!"); + // end of turn 3 + MESSAGE("Foe Wobbuffet is tormented no more!"); + MESSAGE("Foe Wynaut is tormented no more!"); + } +} From 019b39c7ad38cf2d916af9e32483a2de938c0622 Mon Sep 17 00:00:00 2001 From: AgustinGDLV Date: Wed, 22 Mar 2023 20:23:47 -0700 Subject: [PATCH 046/162] Disable, Heal Block, Torment, and Imprison don't prevent move selection --- src/battle_util.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/battle_util.c b/src/battle_util.c index e2477c3e97..15507f3dc1 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -1753,7 +1753,7 @@ u8 TrySetCantSelectMoveBattleScript(void) u32 holdEffect = GetBattlerHoldEffect(gActiveBattler, TRUE); u16 *choicedMove = &gBattleStruct->choicedMove[gActiveBattler]; - if (gBattleStruct->zmove.toBeUsed[gBattlerAttacker] == MOVE_NONE && gDisableStructs[gActiveBattler].disabledMove == move && move != MOVE_NONE) + if (!gBattleStruct->dynamax.playerSelect && gBattleStruct->zmove.toBeUsed[gBattlerAttacker] == MOVE_NONE && gDisableStructs[gActiveBattler].disabledMove == move && move != MOVE_NONE) { gBattleScripting.battler = gActiveBattler; gCurrentMove = move; @@ -1769,7 +1769,7 @@ u8 TrySetCantSelectMoveBattleScript(void) } } - if (gBattleStruct->zmove.toBeUsed[gBattlerAttacker] == MOVE_NONE && move == gLastMoves[gActiveBattler] && move != MOVE_STRUGGLE && (gBattleMons[gActiveBattler].status2 & STATUS2_TORMENT)) + if (!gBattleStruct->dynamax.playerSelect && gBattleStruct->zmove.toBeUsed[gBattlerAttacker] == MOVE_NONE && move == gLastMoves[gActiveBattler] && move != MOVE_STRUGGLE && (gBattleMons[gActiveBattler].status2 & STATUS2_TORMENT)) { CancelMultiTurnMoves(gActiveBattler); if (gBattleTypeFlags & BATTLE_TYPE_PALACE) @@ -1799,7 +1799,7 @@ u8 TrySetCantSelectMoveBattleScript(void) } } - if (gBattleStruct->zmove.toBeUsed[gBattlerAttacker] == MOVE_NONE && gDisableStructs[gActiveBattler].throatChopTimer != 0 && gBattleMoves[move].flags & FLAG_SOUND) + if (!gBattleStruct->dynamax.playerSelect && gBattleStruct->zmove.toBeUsed[gBattlerAttacker] == MOVE_NONE && gDisableStructs[gActiveBattler].throatChopTimer != 0 && gBattleMoves[move].flags & FLAG_SOUND) { gCurrentMove = move; if (gBattleTypeFlags & BATTLE_TYPE_PALACE) @@ -1814,7 +1814,7 @@ u8 TrySetCantSelectMoveBattleScript(void) } } - if (gBattleStruct->zmove.toBeUsed[gBattlerAttacker] == MOVE_NONE && GetImprisonedMovesCount(gActiveBattler, move)) + if (!gBattleStruct->dynamax.playerSelect && gBattleStruct->zmove.toBeUsed[gBattlerAttacker] == MOVE_NONE && GetImprisonedMovesCount(gActiveBattler, move)) { gCurrentMove = move; if (gBattleTypeFlags & BATTLE_TYPE_PALACE) @@ -1829,7 +1829,7 @@ u8 TrySetCantSelectMoveBattleScript(void) } } - if (gBattleStruct->zmove.toBeUsed[gBattlerAttacker] == MOVE_NONE && IsGravityPreventingMove(move)) + if !gBattleStruct->dynamax.playerSelect && gBattleStruct->zmove.toBeUsed[gBattlerAttacker] == MOVE_NONE && IsGravityPreventingMove(move)) { gCurrentMove = move; if (gBattleTypeFlags & BATTLE_TYPE_PALACE) @@ -1844,7 +1844,7 @@ u8 TrySetCantSelectMoveBattleScript(void) } } - if (gBattleStruct->zmove.toBeUsed[gBattlerAttacker] == MOVE_NONE && IsHealBlockPreventingMove(gActiveBattler, move)) + if (!gBattleStruct->dynamax.playerSelect && gBattleStruct->zmove.toBeUsed[gBattlerAttacker] == MOVE_NONE && IsHealBlockPreventingMove(gActiveBattler, move)) { gCurrentMove = move; if (gBattleTypeFlags & BATTLE_TYPE_PALACE) From 038649594a8e3a418d08ecb6fb747d977cf51873 Mon Sep 17 00:00:00 2001 From: AgustinGDLV Date: Wed, 22 Mar 2023 22:31:08 -0700 Subject: [PATCH 047/162] finished G-Max Move tests --- data/battle_scripts_1.s | 15 +- src/battle_dynamax.c | 21 +-- src/battle_script_commands.c | 7 +- src/battle_util.c | 4 +- test/dynamax.c | 265 ++++++++++++++++++++++++++++++++++- 5 files changed, 287 insertions(+), 25 deletions(-) diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 3b849d1074..ae08c52cb7 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -10475,8 +10475,6 @@ BattleScript_DamageNonTypesStarts:: goto BattleScript_MoveEnd BattleScript_DamageNonTypesContinues:: - @printfromtable gDamageNonTypesStartStringIds - @waitmessage B_WAIT_TIME_LONG setbyte gBattleCommunication, 0 BattleScript_DamageNonTypesLoop:: copyarraywithindex gBattlerAttacker, gBattlerByTurnOrder, gBattleCommunication, 1 @@ -10486,8 +10484,6 @@ BattleScript_DamageNonTypesLoop:: waitmessage B_WAIT_TIME_LONG effectivenesssound hitanimation BS_ATTACKER - goto BattleScript_DamageNonTypesHpChange -BattleScript_DamageNonTypesHpChange: orword gHitMarker, HITMARKER_SKIP_DMG_TRACK | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE | HITMARKER_GRUDGE healthbarupdate BS_ATTACKER datahpupdate BS_ATTACKER @@ -10499,7 +10495,7 @@ BattleScript_DamageNonTypesLoopIncrement:: jumpifbytenotequal gBattleCommunication, gBattlersCount, BattleScript_DamageNonTypesLoop BattleScript_DamageNonTypesContinuesEnd:: bicword gHitMarker, HITMARKER_SKIP_DMG_TRACK | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE | HITMARKER_GRUDGE - end2 + end BattleScript_EffectTryReducePP:: tryspiteppreduce BattleScript_MoveEnd @@ -10570,8 +10566,10 @@ BattleScript_RaiseCritAlliesLoop: setstatchanger STAT_ATK, 0, FALSE @ for animation setgraphicalstatchangevalues playanimation BS_TARGET, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1 + swapattackerwithtarget printstring STRINGID_PKMNGETTINGPUMPED waitmessage B_WAIT_TIME_LONG + swapattackerwithtarget BattleScript_RaiseCritAlliesIncrement: setbyte sSTAT_ANIM_PLAYED, FALSE jumpifbytenotequal gBattlerTarget, gBattlerAttacker, BattleScript_RaiseCritAlliesEnd @@ -10607,7 +10605,7 @@ BattleScript_CureStatusAlliesLoop: jumpifabsent BS_TARGET, BattleScript_CureStatusAlliesIncrement jumpifstatus BS_TARGET, STATUS1_ANY, BattleScript_CureStatusActivate BattleScript_CureStatusAlliesIncrement: - jumpifbytenotequal gBattlerTarget, gBattlerAttacker, BattleScript_CureStatusAlliesLoop + jumpifbytenotequal gBattlerTarget, gBattlerAttacker, BattleScript_CureStatusAlliesEnd setallytonexttarget BattleScript_CureStatusAlliesLoop BattleScript_CureStatusAlliesEnd: restoretarget @@ -10616,19 +10614,22 @@ BattleScript_CureStatusAlliesEnd: BattleScript_CureStatusActivate: curestatus BS_TARGET updatestatusicon BS_TARGET + swapattackerwithtarget printstring STRINGID_PKMNSTATUSNORMAL waitmessage B_WAIT_TIME_LONG + swapattackerwithtarget goto BattleScript_CureStatusAlliesIncrement BattleScript_EffectRecycleBerriesAllies:: - jumpifteamhealthy BS_ATTACKER, BattleScript_MoveEnd savetarget copybyte gBattlerTarget, gBattlerAttacker BattleScript_RecycleBerriesAlliesLoop: jumpifabsent BS_TARGET, BattleScript_RecycleBerriesAlliesIncrement tryrecycleberry BattleScript_RecycleBerriesAlliesIncrement + swapattackerwithtarget printstring STRINGID_XFOUNDONEY waitmessage B_WAIT_TIME_LONG + swapattackerwithtarget BattleScript_RecycleBerriesAlliesIncrement: jumpifbytenotequal gBattlerTarget, gBattlerAttacker, BattleScript_RecycleBerriesAlliesEnd setallytonexttarget BattleScript_RecycleBerriesAlliesLoop diff --git a/src/battle_dynamax.c b/src/battle_dynamax.c index cc7a76f52c..1bd0bb1a8f 100644 --- a/src/battle_dynamax.c +++ b/src/battle_dynamax.c @@ -125,8 +125,8 @@ void ApplyDynamaxHPMultiplier(u16 battlerId, struct Pokemon* mon) else { u16 mult = UQ_4_12(1.5); // placeholder - u16 hp = UQ_4_12_TO_INT((GetMonData(mon, MON_DATA_HP, NULL) * mult) + UQ_4_12_ROUND); - u16 maxHP = UQ_4_12_TO_INT((GetMonData(mon, MON_DATA_MAX_HP, NULL) * mult) + UQ_4_12_ROUND); + u16 hp = UQ_4_12_TO_INT((gBattleMons[battlerId].hp * mult) + UQ_4_12_ROUND); + u16 maxHP = UQ_4_12_TO_INT((gBattleMons[battlerId].maxHP * mult) + UQ_4_12_ROUND); SetMonData(mon, MON_DATA_HP, &hp); SetMonData(mon, MON_DATA_MAX_HP, &maxHP); } @@ -521,7 +521,7 @@ u16 SetMaxMoveEffect(u16 move) if (!(gSideStatuses[side] & SIDE_STATUS_DAMAGE_NON_TYPES)) { gSideStatuses[side] |= SIDE_STATUS_DAMAGE_NON_TYPES; - gSideTimers[side].damageNonTypesTimer = 4; + gSideTimers[side].damageNonTypesTimer = 5; // damage is dealt for 4 turns, ends on 5th gSideTimers[side].damageNonTypesType = gBattleMoves[gCurrentMove].type; BattleScriptPush(gBattlescriptCurrInstr + 1); ChooseDamageNonTypesString(gBattleMoves[gCurrentMove].type); @@ -604,7 +604,8 @@ u16 SetMaxMoveEffect(u16 move) else gDisableStructs[battler].wrapTurns = (Random() % 4) + 2; #endif - gBattleStruct->wrappedBy[battler] = gBattlerAttacker; + // The Wrap effect does not expire when the user switches, so here's some cheese. + gBattleStruct->wrappedBy[battler] = gBattlerTarget; if (maxEffect == MAX_EFFECT_SANDBLAST_FOES) gBattleStruct->wrappedMove[battler] = MOVE_SAND_TOMB; else @@ -615,7 +616,8 @@ u16 SetMaxMoveEffect(u16 move) } case MAX_EFFECT_YAWN_FOE: if (!(gStatuses3[gBattlerTarget] & STATUS3_YAWN) - && CanSleep(gBattlerTarget)) + && CanSleep(gBattlerTarget) + && Random() % 2) // 50% chance of success { gStatuses3[gBattlerTarget] |= STATUS3_YAWN_TURN(2); BattleScriptPush(gBattlescriptCurrInstr + 1); @@ -676,9 +678,12 @@ u16 SetMaxMoveEffect(u16 move) effect++; break; case MAX_EFFECT_RECYCLE_BERRIES: - BattleScriptPush(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = BattleScript_EffectRecycleBerriesAllies; - effect++; + if (Random() % 2) // 50% chance of success + { + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_EffectRecycleBerriesAllies; + effect++; + } break; } diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 64cc892697..16917a6fba 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -11311,15 +11311,14 @@ static void Cmd_various(void) u16* usedHeldItem = &gBattleStruct->usedHeldItems[gBattlerPartyIndexes[gBattlerTarget]][GetBattlerSide(gBattlerTarget)]; if (gBattleMons[gBattlerTarget].item == ITEM_NONE && gBattleStruct->changedItems[gBattlerTarget] == ITEM_NONE // Will not inherit an item - && ItemId_GetPocket(*usedHeldItem) == POCKET_BERRIES - && Random() % 2 == 0) + && ItemId_GetPocket(*usedHeldItem) == POCKET_BERRIES) { gLastUsedItem = *usedHeldItem; *usedHeldItem = ITEM_NONE; - gBattleMons[gActiveBattler].item = gLastUsedItem; + gBattleMons[gBattlerTarget].item = gLastUsedItem; BtlController_EmitSetMonData(BUFFER_A, REQUEST_HELDITEM_BATTLE, 0, sizeof(gBattleMons[gBattlerTarget].item), &gBattleMons[gBattlerTarget].item); - MarkBattlerForControllerExec(gActiveBattler); + MarkBattlerForControllerExec(gBattlerTarget); gBattlescriptCurrInstr = cmd->nextInstr; } diff --git a/src/battle_util.c b/src/battle_util.c index 15507f3dc1..35aff19e67 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -1829,7 +1829,7 @@ u8 TrySetCantSelectMoveBattleScript(void) } } - if !gBattleStruct->dynamax.playerSelect && gBattleStruct->zmove.toBeUsed[gBattlerAttacker] == MOVE_NONE && IsGravityPreventingMove(move)) + if (!gBattleStruct->dynamax.playerSelect && gBattleStruct->zmove.toBeUsed[gBattlerAttacker] == MOVE_NONE && IsGravityPreventingMove(move)) { gCurrentMove = move; if (gBattleTypeFlags & BATTLE_TYPE_PALACE) @@ -2481,8 +2481,8 @@ u8 DoFieldEndTurnEffects(void) { if (--gSideTimers[side].damageNonTypesTimer == 0) { + // There is no in-game message when this side status ends. gSideStatuses[side] &= ~SIDE_STATUS_DAMAGE_NON_TYPES; - //gBattlescriptCurrInstr = BattleScript_DamageNonTypesEnds; TODO: no end message in-game? effect++; } else diff --git a/test/dynamax.c b/test/dynamax.c index 584aa909ac..b98c808fc4 100644 --- a/test/dynamax.c +++ b/test/dynamax.c @@ -7,15 +7,12 @@ // TEST: Imprison doesn't stop Max Moves. (YES!) // TEST: Max Moves change type as you'd expect with Normalize, Weather Ball, etc. (YES!) // TEST: You use Struggle while Dynamaxed if out of PP. (YES!) -// TEST: G-Max Befuddle applies statuses before considering immunities. (YES!) // Refactor code to remove dynamax.usingMaxMove? Might keep for Raids // Ditto cannot turn into a Gigantamax form. (NO) // Interactions with a Dynamaxed Pokemon with Magic Bounce. (???) // Dynamax should not reset Speed Swap, Soak, or anything else from form changing. (NO) // Multi Attack is treated in Max Move power calcs like a Fighting or Poison type move. (NO) // Max Moves cannot be used against allies. (NO) -// G-Max Replenish guarantees either both allies' berries or neither's. (NO) -// G-Max Sandwhatever still keeps Sand Tomb up when Sandaconda switches. // ============= DYNAMAX AND MAX MOVE INTERACTIONS =================== SINGLE_BATTLE_TEST("(DYNAMAX) Dynamax increases HP and max HP by 1.5x") @@ -378,7 +375,7 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon take double damage from Dynamax SINGLE_BATTLE_TEST("(DYNAMAX) Max Moves deal 1/4 damage through protect", s16 damage) { bool32 protected; - KNOWN_FAILING; // rounding error? also messages are wonky + KNOWN_FAILING; // // damage isn't equal because RNG misbehaves PARAMETRIZE { protected = FALSE; } PARAMETRIZE { protected = TRUE; } GIVEN { @@ -641,6 +638,7 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Max Strike lowers single opponent's speed") } } +// This test should apply to all stat-lowering Max Moves, including G-Max Foam Burst and G-Max Tartness. DOUBLE_BATTLE_TEST("(DYNAMAX) Max Strike lowers both opponents' speed") { GIVEN { @@ -677,6 +675,7 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) Max Strike lowers both opponents' speed") } } +// This test should apply to all stat-boosting Max Moves, too. DOUBLE_BATTLE_TEST("(DYNAMAX) Max Knuckle raises both allies' attack") { s16 damage[4]; @@ -1136,3 +1135,261 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Meltdown torments both opponents for 3 turns MESSAGE("Foe Wynaut is tormented no more!"); } } + +// This test applies to G-Max Cannonade, G-Max Vine Lash, and G-Max Volcalith, too. +DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Wildfire sets a field effect that damages non-Fire types") +{ + s16 damage; + GIVEN { + ASSUME(gBattleMoves[MOVE_G_MAX_WILDFIRE].argument == MAX_EFFECT_WILDFIRE); + PLAYER(SPECIES_CHARIZARD); + PLAYER(SPECIES_CHARMANDER); + OPPONENT(SPECIES_WOBBUFFET) { HP(600); MaxHP(600); } + OPPONENT(SPECIES_WYNAUT); + OPPONENT(SPECIES_ARCANINE); + } WHEN { + TURN { MOVE(playerLeft, MOVE_EMBER, target: opponentLeft, dynamax: TRUE); } + TURN { } + TURN { SWITCH(opponentLeft, 2); } + TURN { } + TURN { } + } SCENE { + // turn 1 + MESSAGE("Charizard used G-Max Wildfire!"); + MESSAGE("The opposing team was surrounded by flames!"); + MESSAGE("Foe Wobbuffet is burning up within G-Max Wildfire's flames!"); + HP_BAR(opponentLeft, captureDamage: &damage); + MESSAGE("Foe Wynaut is burning up within G-Max Wildfire's flames!"); + HP_BAR(opponentRight); + // turn 2 + MESSAGE("Foe Wobbuffet is burning up within G-Max Wildfire's flames!"); + HP_BAR(opponentLeft); + MESSAGE("Foe Wynaut is burning up within G-Max Wildfire's flames!"); + HP_BAR(opponentRight); + // turn 3 + NONE_OF { MESSAGE("Foe Arcanine is burning up within G-Max Wildfire's flames!"); } + MESSAGE("Foe Wynaut is burning up within G-Max Wildfire's flames!"); + HP_BAR(opponentRight); + // turn 4 + MESSAGE("Foe Wynaut is burning up within G-Max Wildfire's flames!"); + HP_BAR(opponentRight); + // turn 5 + NONE_OF { + HP_BAR(opponentRight); + MESSAGE("Foe Wynaut is burning up within G-Max Wildfire's flames!"); + } + } FINALLY { + EXPECT_EQ(damage, 100); + } +} + +// This should probably be tested to only occur 50% of the time. +// I had some problems specific to Teatime with this where Snorlax stored +// the used berry in usedHeldItem, while Munchlax stored it in changedItem. +DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Replenish recycles allies' berries") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_G_MAX_REPLENISH].argument == MAX_EFFECT_RECYCLE_BERRIES); + PLAYER(SPECIES_SNORLAX) { Item(ITEM_APICOT_BERRY); } + PLAYER(SPECIES_MUNCHLAX) { Item(ITEM_APICOT_BERRY); } + OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_APICOT_BERRY); } + OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_APICOT_BERRY); } + } WHEN { + TURN { MOVE(playerLeft, MOVE_STUFF_CHEEKS); \ + MOVE(playerRight, MOVE_STUFF_CHEEKS); \ + MOVE(opponentLeft, MOVE_STUFF_CHEEKS); \ + MOVE(opponentRight, MOVE_STUFF_CHEEKS); } + TURN { MOVE(playerLeft, MOVE_TACKLE, target: opponentLeft, dynamax: TRUE); } + } SCENE { + // turn 1 + MESSAGE("Using Apicot Berry, the sp. defense of Snorlax rose!"); + MESSAGE("Using Apicot Berry, the sp. defense of Munchlax rose!"); + MESSAGE("Using Apicot Berry, the sp. defense of Foe Wobbuffet rose!"); + MESSAGE("Using Apicot Berry, the sp. defense of Foe Wobbuffet rose!"); + // turn 2 + MESSAGE("Snorlax used G-Max Replenish!"); + MESSAGE("Snorlax found one Apicot Berry!"); + MESSAGE("Munchlax found one Apicot Berry!"); + } +} + +DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Snooze makes only the target drowsy") +{ + GIVEN { + ASSUME(P_GEN_8_POKEMON == TRUE); + ASSUME(gBattleMoves[MOVE_G_MAX_SNOOZE].argument == MAX_EFFECT_YAWN_FOE); + PLAYER(SPECIES_GRIMMSNARL); + PLAYER(SPECIES_IMPIDIMP); + OPPONENT(SPECIES_BLISSEY); + OPPONENT(SPECIES_CHANSEY); + } WHEN { + TURN { MOVE(playerLeft, MOVE_DARK_PULSE, target: opponentLeft, dynamax: TRUE); } + TURN { } + } SCENE { + // turn 1 + MESSAGE("Grimmsnarl used G-Max Snooze!"); + MESSAGE("Grimmsnarl made Foe Blissey drowsy!"); + NONE_OF { MESSAGE("Grimmsnarl made Foe Chansey drowsy!"); } + // turn 2 + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_SLP, opponentLeft); + MESSAGE("Foe Blissey fell asleep!"); + STATUS_ICON(opponentLeft, sleep: TRUE); + NONE_OF { + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_SLP, opponentRight); + STATUS_ICON(opponentRight, sleep: TRUE); + } + } +} + +DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Finale heals allies by 1/6 of their health") +{ + s16 damage1, damage2; + GIVEN { + ASSUME(P_GEN_8_POKEMON == TRUE); + ASSUME(gBattleMoves[MOVE_G_MAX_FINALE].argument == MAX_EFFECT_HEAL_TEAM); + PLAYER(SPECIES_ALCREMIE) { HP(200); MaxHP(300); } + PLAYER(SPECIES_MILCERY) { HP(200); MaxHP(300); } + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(playerLeft, MOVE_MOONBLAST, target: opponentLeft, dynamax: TRUE); } + } SCENE { + // turn 1 + MESSAGE("Alcremie used G-Max Finale!"); + HP_BAR(playerLeft, captureDamage: &damage1); + HP_BAR(playerRight, captureDamage: &damage2); + } FINALLY { + EXPECT_EQ(damage1, -75); // heals based on Dynamax HP + EXPECT_EQ(damage2, -50); + } +} + +DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Sweetness cures allies' status conditions") +{ + s16 damage1, damage2; + GIVEN { + ASSUME(P_GEN_8_POKEMON == TRUE); + ASSUME(gBattleMoves[MOVE_G_MAX_SWEETNESS].argument == MAX_EFFECT_AROMATHERAPY); + PLAYER(SPECIES_APPLETUN) { Status1(STATUS1_POISON); } + PLAYER(SPECIES_APPLIN) { Status1(STATUS1_POISON); } + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(playerLeft, MOVE_VINE_WHIP, target: opponentLeft, dynamax: TRUE); } + } SCENE { + MESSAGE("Appletun used G-Max Sweetness!"); + STATUS_ICON(playerLeft, none: TRUE); + MESSAGE("Appletun's status returned to normal!"); + STATUS_ICON(playerRight, none: TRUE); + MESSAGE("Applin's status returned to normal!"); + } +} + +// This test should apply to G-Max Sandblast, too. +DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Centiferno traps both opponents in Fire Spin") +{ + s16 damage1, damage2; + GIVEN { + ASSUME(P_GEN_8_POKEMON == TRUE); + ASSUME(gBattleMoves[MOVE_G_MAX_CENTIFERNO].argument == MAX_EFFECT_FIRE_SPIN_FOES); + PLAYER(SPECIES_CENTISKORCH); + PLAYER(SPECIES_SIZZLIPEDE); + PLAYER(SPECIES_SIZZLIPEDE); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(playerLeft, MOVE_FLAME_CHARGE, target: opponentLeft, dynamax: TRUE); } + TURN { SWITCH(playerLeft, 2); } + } SCENE { + // turn 1 + MESSAGE("Centiskorc used G-Max Centiferno!"); + MESSAGE("Foe Wobbuffet is hurt by Fire Spin!"); + HP_BAR(opponentLeft); + MESSAGE("Foe Wynaut is hurt by Fire Spin!"); + HP_BAR(opponentRight); + // turn 2 - Fire Spin continues even after Centiskorch switches out + MESSAGE("Foe Wobbuffet is hurt by Fire Spin!"); + HP_BAR(opponentLeft); + MESSAGE("Foe Wynaut is hurt by Fire Spin!"); + HP_BAR(opponentRight); + } +} + +DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Chi Strike boosts allies' crit chance") +{ + s16 damage1, damage2; + GIVEN { + ASSUME(B_CRIT_CHANCE >= GEN_6); + ASSUME(gBattleMoves[MOVE_G_MAX_CHI_STRIKE].argument == MAX_EFFECT_CRIT_PLUS); + PLAYER(SPECIES_MACHAMP); + PLAYER(SPECIES_MACHOP); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(playerLeft, MOVE_FORCE_PALM, target: opponentLeft, dynamax: TRUE); \ + MOVE(playerRight, MOVE_FOCUS_ENERGY); } + TURN { MOVE(playerRight, MOVE_FORCE_PALM, target: opponentLeft); } + } SCENE { + // turn 1 + MESSAGE("Machamp used G-Max Chi Strike!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerLeft); + MESSAGE("Machamp is getting pumped!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerRight); + MESSAGE("Machop is getting pumped!"); + MESSAGE("Machop used Focus Energy!"); + MESSAGE("Machop is getting pumped!"); + // turn 2 + MESSAGE("Machop used Force Palm!"); // Machop is at +3 crit stages, 100% crit chance + MESSAGE("A critical hit!"); + } +} + +DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Depletion takes away 2 PP from the target's last move") +{ + GIVEN { + ASSUME(P_GEN_8_POKEMON == TRUE); + ASSUME(gBattleMoves[MOVE_G_MAX_DEPLETION].argument == MAX_EFFECT_SPITE); + PLAYER(SPECIES_DURALUDON); + PLAYER(SPECIES_WYNAUT); + // Dynamax behaves weird with test turn order because stats are recalculated. + OPPONENT(SPECIES_SABLEYE) { Ability(ABILITY_PRANKSTER); } + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(playerLeft, MOVE_DRAGON_CLAW, target: opponentLeft, dynamax: TRUE); } + } SCENE { + MESSAGE("Foe Sableye used Celebrate!"); + MESSAGE("Duraludon used G-Max Depletion!"); + MESSAGE("Reduced Foe Sableye's Celebrate by 2!"); + } +} + +// This test should apply to G-Max Rapid Flow, too. +DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max One Blow bypasses Max Guard for full damage", s16 damage) +{ + bool32 protect; + KNOWN_FAILING; // damage isn't equal because RNG misbehaves + PARAMETRIZE { protect = TRUE; } + PARAMETRIZE { protect = FALSE; } + GIVEN { + ASSUME(P_GEN_8_POKEMON == TRUE); + ASSUME(gBattleMoves[MOVE_G_MAX_ONE_BLOW].argument == MAX_EFFECT_BYPASS_PROTECT); + PLAYER(SPECIES_URSHIFU); + PLAYER(SPECIES_KUBFU); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WYNAUT); + } WHEN { + if (protect) + TURN { MOVE(playerLeft, MOVE_WICKED_BLOW, target: opponentLeft, dynamax: TRUE); \ + MOVE(opponentLeft, MOVE_PROTECT, dynamax: TRUE); } + else + TURN { MOVE(playerLeft, MOVE_WICKED_BLOW, target: opponentLeft, dynamax: TRUE); \ + MOVE(opponentLeft, MOVE_PSYCHIC, target: playerLeft, dynamax: TRUE); } + } SCENE { + if (protect) + MESSAGE("Foe Wobbuffet used Max Guard!"); + MESSAGE("Urshifu used G-Max One Blow!"); + HP_BAR(opponentLeft, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_EQ(results[0].damage, results[1].damage); + } +} From 40102fe41880649fffdd6ba7574f83e05a485141 Mon Sep 17 00:00:00 2001 From: AgustinGDLV Date: Thu, 23 Mar 2023 21:20:35 -0700 Subject: [PATCH 048/162] added check for AI to use Dynamax on last pokemon --- src/battle_controller_opponent.c | 3 +++ src/battle_controller_player.c | 12 +++++++----- src/battle_dynamax.c | 22 ++++++++++++++++------ 3 files changed, 26 insertions(+), 11 deletions(-) diff --git a/src/battle_controller_opponent.c b/src/battle_controller_opponent.c index 79283b0674..ea3a4c87bc 100644 --- a/src/battle_controller_opponent.c +++ b/src/battle_controller_opponent.c @@ -1595,6 +1595,9 @@ static void OpponentHandleChooseMove(void) QueueZMove(gActiveBattler, chosenMove); if (CanMegaEvolve(gActiveBattler)) // If opponent can mega evolve, do it. BtlController_EmitTwoReturnValues(BUFFER_B, 10, (chosenMoveId) | (RET_MEGA_EVOLUTION) | (gBattlerTarget << 8)); + else if (CanDynamax(gActiveBattler) // If opponent can Dynamax and is on final Pokemon, do it. + && CountAIAliveNonEggMonsExcept(gBattlerPartyIndexes[gActiveBattler]) == 0) + BtlController_EmitTwoReturnValues(BUFFER_B, 10, (chosenMoveId) | (RET_DYNAMAX) | (gBattlerTarget << 8)); else BtlController_EmitTwoReturnValues(BUFFER_B, 10, (chosenMoveId) | (gBattlerTarget << 8)); } diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c index 22f0c5c81a..3d8b8306e4 100644 --- a/src/battle_controller_player.c +++ b/src/battle_controller_player.c @@ -2898,16 +2898,18 @@ static void PlayerHandleChooseMove(void) gBattleStruct->mega.triggerSpriteId = 0xFF; if (CanMegaEvolve(gActiveBattler)) CreateMegaTriggerSprite(gActiveBattler, 0); + if (!IsZMoveTriggerSpriteActive()) gBattleStruct->zmove.triggerSpriteId = 0xFF; - if (!IsDynamaxTriggerSpriteActive()) - gBattleStruct->dynamax.triggerSpriteId = 0xFF; - if (CanDynamax(gActiveBattler)) // TODO: handle Dynamax + Mega + Z-Move - CreateDynamaxTriggerSprite(gActiveBattler, 0); - GetUsableZMoves(gActiveBattler, moveInfo->moves); gBattleStruct->zmove.viable = IsZMoveUsable(gActiveBattler, gMoveSelectionCursor[gActiveBattler]); CreateZMoveTriggerSprite(gActiveBattler, gBattleStruct->zmove.viable); + + if (!IsDynamaxTriggerSpriteActive()) + gBattleStruct->dynamax.triggerSpriteId = 0xFF; + if (CanDynamax(gActiveBattler)) + CreateDynamaxTriggerSprite(gActiveBattler, 0); + gBattlerControllerFuncs[gActiveBattler] = HandleChooseMoveAfterDma3; } } diff --git a/src/battle_dynamax.c b/src/battle_dynamax.c index 1bd0bb1a8f..8ca30e319b 100644 --- a/src/battle_dynamax.c +++ b/src/battle_dynamax.c @@ -7,6 +7,7 @@ #include "battle_script_commands.h" #include "data.h" #include "graphics.h" +#include "item.h" #include "pokemon.h" #include "random.h" #include "sprite.h" @@ -16,6 +17,7 @@ #include "constants/battle_move_effects.h" #include "constants/battle_string_ids.h" #include "constants/hold_effects.h" +#include "constants/items.h" #include "constants/moves.h" // Constant Data @@ -106,13 +108,15 @@ bool32 CanDynamax(u16 battlerId) { // TODO: Requires Dynamax Band if not in a Max Raid (as well as special flag). u16 species = gBattleMons[battlerId].species; + u16 holdEffect = ItemId_GetHoldEffect(gBattleMons[battlerId].item); if (!gBattleStruct->dynamax.alreadyDynamaxed[GetBattlerSide(battlerId)] - && !gBattleStruct->dynamax.dynamaxed[battlerId] - && !gBattleStruct->dynamax.dynamaxed[BATTLE_PARTNER(battlerId)] - && !gBattleStruct->dynamax.toDynamax[BATTLE_PARTNER(battlerId)] - && species != SPECIES_ZACIAN && species != SPECIES_ZACIAN_CROWNED_SWORD - && species != SPECIES_ZAMAZENTA && species != SPECIES_ZAMAZENTA_CROWNED_SHIELD - && species != SPECIES_ETERNATUS && species != SPECIES_ETERNATUS_ETERNAMAX) + && !gBattleStruct->dynamax.dynamaxed[battlerId] + && !gBattleStruct->dynamax.dynamaxed[BATTLE_PARTNER(battlerId)] + && !gBattleStruct->dynamax.toDynamax[BATTLE_PARTNER(battlerId)] + && species != SPECIES_ZACIAN && species != SPECIES_ZACIAN_CROWNED_SWORD + && species != SPECIES_ZAMAZENTA && species != SPECIES_ZAMAZENTA_CROWNED_SHIELD + && species != SPECIES_ETERNATUS && species != SPECIES_ETERNATUS_ETERNAMAX + && holdEffect != HOLD_EFFECT_MEGA_STONE && holdEffect != HOLD_EFFECT_Z_CRYSTAL) return TRUE; return FALSE; } @@ -121,7 +125,9 @@ bool32 CanDynamax(u16 battlerId) void ApplyDynamaxHPMultiplier(u16 battlerId, struct Pokemon* mon) { if (gBattleMons[battlerId].species == SPECIES_SHEDINJA) + { return; + } else { u16 mult = UQ_4_12(1.5); // placeholder @@ -136,7 +142,9 @@ void ApplyDynamaxHPMultiplier(u16 battlerId, struct Pokemon* mon) u16 GetNonDynamaxHP(u16 battlerId) { if (!IsDynamaxed(battlerId) || gBattleMons[battlerId].species == SPECIES_SHEDINJA) + { return gBattleMons[battlerId].hp; + } else { u16 mult = UQ_4_12(1.0/1.5); // placeholder @@ -149,7 +157,9 @@ u16 GetNonDynamaxHP(u16 battlerId) u16 GetNonDynamaxMaxHP(u16 battlerId) { if (!IsDynamaxed(battlerId) || gBattleMons[battlerId].species == SPECIES_SHEDINJA) + { return gBattleMons[battlerId].maxHP; + } else { u16 mult = UQ_4_12(1.0/1.5); // placeholder From 6dc3c7a14375ed776c3ee364f81dc399340da9d7 Mon Sep 17 00:00:00 2001 From: AgustinGDLV Date: Thu, 23 Mar 2023 21:27:45 -0700 Subject: [PATCH 049/162] level reappears in healthbox and form reversion occurs correctly when Dynamax ends --- include/battle_scripts.h | 2 +- src/battle_dynamax.c | 3 ++- src/battle_script_commands.c | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/include/battle_scripts.h b/include/battle_scripts.h index eca739fb2f..8c670fb517 100644 --- a/include/battle_scripts.h +++ b/include/battle_scripts.h @@ -498,4 +498,4 @@ extern const u8 BattleScript_DynamaxBegins[]; extern const u8 BattleScript_DynamaxEnds[]; extern const u8 BattleScript_MoveBlockedByDynamax[]; -#endif // GUARD_BATTLE_SCRIPTS_H \ No newline at end of file +#endif // GUARD_BATTLE_SCRIPTS_H diff --git a/src/battle_dynamax.c b/src/battle_dynamax.c index 8ca30e319b..58280c1917 100644 --- a/src/battle_dynamax.c +++ b/src/battle_dynamax.c @@ -193,13 +193,14 @@ void PrepareBattlerForDynamax(u16 battlerId) void UndoDynamax(u16 battlerId) { u8 side = GetBattlerSide(battlerId); - // Revert HP if battler is Dynamaxed. + // Revert HP and try form reversion if battler is Dynamaxed. if (IsDynamaxed(battlerId)) { struct Pokemon *party = (side == B_SIDE_PLAYER) ? gPlayerParty : gEnemyParty; u16 mult = UQ_4_12(1.0/1.5); // placeholder u16 hp = UQ_4_12_TO_INT((gBattleMons[battlerId].hp * mult + 1) + UQ_4_12_ROUND); // round up SetMonData(&party[gBattlerPartyIndexes[battlerId]], MON_DATA_HP, &hp); + TryBattleFormChange(battlerId, FORM_CHANGE_BATTLE_SWITCH); } // Makes sure there are no Dynamax flags set, including on switch / faint. gBattleStruct->dynamax.dynamaxed[battlerId] = FALSE; diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 16917a6fba..bf54f80e40 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -11337,7 +11337,7 @@ static void Cmd_various(void) else mon = &gEnemyParty[gBattlerPartyIndexes[battler]]; RecalcBattlerStats(battler, mon); - UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], mon, HP_BOTH); + UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], mon, HEALTHBOX_ALL); break; } case VARIOUS_JUMP_IF_TARGET_DYNAMAXED: From 2b860440138b82387380e063280a9aa790fd4f48 Mon Sep 17 00:00:00 2001 From: AgustinGDLV Date: Thu, 23 Mar 2023 21:53:24 -0700 Subject: [PATCH 050/162] goodbye gMaxMovePowers table --- src/battle_dynamax.c | 89 ++++++- src/data/battle_moves.h | 496 ---------------------------------------- 2 files changed, 77 insertions(+), 508 deletions(-) diff --git a/src/battle_dynamax.c b/src/battle_dynamax.c index 58280c1917..77e64dc755 100644 --- a/src/battle_dynamax.c +++ b/src/battle_dynamax.c @@ -87,8 +87,6 @@ static const struct GMaxMove sGMaxMoveTable[] = {SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GMAX, TYPE_WATER, MOVE_G_MAX_RAPID_FLOW}, }; -extern u8 gMaxMovePowers[MOVES_COUNT]; - // forward declarations static void SpriteCb_DynamaxTrigger(struct Sprite *); static void SpriteCb_DynamaxIndicator(struct Sprite *); @@ -285,20 +283,87 @@ u8 GetMaxMovePower(u16 move) // G-Max Drum Solo, G-Max Hydrosnipe, and G-Max Fireball always have 160 base power. if (gBattleMoves[GetMaxMove(gBattlerAttacker, move)].argument == MAX_EFFECT_FIXED_POWER) return 160; - else if (gBattleMoves[move].effect == EFFECT_MULTI_HIT - || gBattleMoves[move].effect == EFFECT_OHKO - || gBattleMoves[move].effect == EFFECT_LEVEL_DAMAGE - || gBattleMoves[move].effect == EFFECT_DRAGON_RAGE - || gBattleMoves[move].effect == EFFECT_SONICBOOM - || gBattleMoves[move].effect == EFFECT_PSYWAVE) - return gMaxMovePowers[move]; + + // Some moves are exceptions to the general rules below. + switch (move) + { + case MOVE_CRUSH_GRIP: + case MOVE_WRING_OUT: + case MOVE_MAGNITUDE: + case MOVE_DOUBLE_IRON_BASH: + case MOVE_TRIPLE_AXEL: + return 140; + case MOVE_PIN_MISSILE: + case MOVE_POWER_TRIP: + case MOVE_PUNISHMENT: + case MOVE_DRAGON_DARTS: + case MOVE_DUAL_CHOP: + case MOVE_ELECTRO_BALL: + case MOVE_HEAT_CRASH: + case MOVE_BULLET_SEED: + case MOVE_GRASS_KNOT: + case MOVE_BONEMERANG: + case MOVE_BONE_RUSH: + case MOVE_FISSURE: + case MOVE_ICICLE_SPEAR: + case MOVE_SHEER_COLD: + case MOVE_WEATHER_BALL: + case MOVE_TAIL_SLAP: + case MOVE_GUILLOTINE: + case MOVE_HORN_DRILL: + case MOVE_FLAIL: + case MOVE_RETURN: + case MOVE_FRUSTRATION: + case MOVE_NATURAL_GIFT: + case MOVE_TRUMP_CARD: + case MOVE_STORED_POWER: + case MOVE_ROCK_BLAST: + case MOVE_GEAR_GRIND: + case MOVE_GYRO_BALL: + case MOVE_HEAVY_SLAM: + case MOVE_DUAL_WINGBEAT: + case MOVE_SCALE_SHOT: + case MOVE_TERRAIN_PULSE: + return 130; + case MOVE_DOUBLE_HIT: + case MOVE_SPIKE_CANNON: + return 120; + case MOVE_TWINEEDLE: + case MOVE_BEAT_UP: + case MOVE_FLING: + case MOVE_DRAGON_RAGE: + case MOVE_NATURES_MADNESS: + case MOVE_NIGHT_SHADE: + case MOVE_COMET_PUNCH: + case MOVE_FURY_SWIPES: + case MOVE_SONIC_BOOM: + case MOVE_BIDE: + case MOVE_SUPER_FANG: + case MOVE_PRESENT: + case MOVE_SPIT_UP: + case MOVE_PSYWAVE: + case MOVE_MIRROR_COAT: + case MOVE_METAL_BURST: + case MOVE_LOW_KICK: + case MOVE_REVERSAL: + case MOVE_FINAL_GAMBIT: + return 100; + case MOVE_DOUBLE_KICK: + case MOVE_TRIPLE_KICK: + return 80; + case MOVE_COUNTER: + case MOVE_SEISMIC_TOSS: + return 75; + } // TODO: maybe bring back gMaxMovePowers lol + // Fighting and Poison Max Moves are weaker than other types. else if (gBattleMoves[move].type == TYPE_FIGHTING - || gBattleMoves[move].type == TYPE_POISON) + || gBattleMoves[move].type == TYPE_POISON + || move == MOVE_MULTI_ATTACK) switch (gBattleMoves[move].power) { default: - case 10 ... 40: return 70; + case 0 ... 40: return 70; case 45 ... 50: return 75; case 55 ... 60: return 80; case 65 ... 70: return 85; @@ -310,7 +375,7 @@ u8 GetMaxMovePower(u16 move) switch (gBattleMoves[move].power) { default: - case 10 ... 40: return 90; + case 0 ... 40: return 90; case 45 ... 50: return 100; case 55 ... 60: return 110; case 65 ... 70: return 120; diff --git a/src/data/battle_moves.h b/src/data/battle_moves.h index 2f5f7925be..a965e298fc 100644 --- a/src/data/battle_moves.h +++ b/src/data/battle_moves.h @@ -14898,499 +14898,3 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = }, }; - -const u8 gMaxMovePowers[MOVES_COUNT] = -{ - [MOVE_POUND] = 90, - [MOVE_KARATE_CHOP] = 75, - [MOVE_DOUBLE_SLAP] = 90, - [MOVE_COMET_PUNCH] = 100, - [MOVE_MEGA_PUNCH] = 130, - [MOVE_PAY_DAY] = 90, - [MOVE_FIRE_PUNCH] = 130, - [MOVE_ICE_PUNCH] = 130, - [MOVE_THUNDER_PUNCH] = 130, - [MOVE_SCRATCH] = 90, - [MOVE_VISE_GRIP] = 110, - [MOVE_GUILLOTINE] = 130, - [MOVE_RAZOR_WIND] = 130, - [MOVE_CUT] = 100, - [MOVE_GUST] = 90, - [MOVE_WING_ATTACK] = 110, - [MOVE_FLY] = 130, - [MOVE_BIND] = 90, - [MOVE_SLAM] = 130, - [MOVE_VINE_WHIP] = 100, - [MOVE_STOMP] = 120, - [MOVE_DOUBLE_KICK] = 80, - [MOVE_MEGA_KICK] = 140, - [MOVE_JUMP_KICK] = 90, - [MOVE_ROLLING_KICK] = 80, - [MOVE_HEADBUTT] = 120, - [MOVE_HORN_ATTACK] = 120, - [MOVE_FURY_ATTACK] = 90, - [MOVE_HORN_DRILL] = 130, - [MOVE_TACKLE] = 90, - [MOVE_BODY_SLAM] = 130, - [MOVE_WRAP] = 90, - [MOVE_TAKE_DOWN] = 130, - [MOVE_THRASH] = 140, - [MOVE_DOUBLE_EDGE] = 140, - [MOVE_POISON_STING] = 70, - [MOVE_TWINEEDLE] = 100, - [MOVE_PIN_MISSILE] = 130, - [MOVE_BITE] = 110, - [MOVE_SONIC_BOOM] = 100, - [MOVE_ACID] = 70, - [MOVE_EMBER] = 90, - [MOVE_FLAMETHROWER] = 130, - [MOVE_WATER_GUN] = 90, - [MOVE_HYDRO_PUMP] = 140, - [MOVE_SURF] = 130, - [MOVE_ICE_BEAM] = 130, - [MOVE_BLIZZARD] = 140, - [MOVE_PSYBEAM] = 120, - [MOVE_BUBBLE_BEAM] = 120, - [MOVE_AURORA_BEAM] = 120, - [MOVE_HYPER_BEAM] = 150, - [MOVE_PECK] = 90, - [MOVE_DRILL_PECK] = 130, - [MOVE_SUBMISSION] = 90, - [MOVE_LOW_KICK] = 100, - [MOVE_COUNTER] = 75, - [MOVE_SEISMIC_TOSS] = 75, - [MOVE_STRENGTH] = 130, - [MOVE_ABSORB] = 90, - [MOVE_MEGA_DRAIN] = 90, - [MOVE_RAZOR_LEAF] = 110, - [MOVE_SOLAR_BEAM] = 140, - [MOVE_PETAL_DANCE] = 140, - [MOVE_DRAGON_RAGE] = 100, - [MOVE_FIRE_SPIN] = 90, - [MOVE_THUNDER_SHOCK] = 90, - [MOVE_THUNDERBOLT] = 130, - [MOVE_THUNDER] = 140, - [MOVE_ROCK_THROW] = 100, - [MOVE_EARTHQUAKE] = 130, - [MOVE_FISSURE] = 130, - [MOVE_DIG] = 130, - [MOVE_CONFUSION] = 100, - [MOVE_PSYCHIC] = 130, - [MOVE_QUICK_ATTACK] = 90, - [MOVE_RAGE] = 90, - [MOVE_NIGHT_SHADE] = 100, - [MOVE_BIDE] = 100, - [MOVE_SELF_DESTRUCT] = 150, - [MOVE_EGG_BOMB] = 130, - [MOVE_LICK] = 90, - [MOVE_SMOG] = 70, - [MOVE_SLUDGE] = 85, - [MOVE_BONE_CLUB] = 120, - [MOVE_FIRE_BLAST] = 140, - [MOVE_WATERFALL] = 130, - [MOVE_CLAMP] = 90, - [MOVE_SWIFT] = 110, - [MOVE_SKULL_BASH] = 140, - [MOVE_SPIKE_CANNON] = 120, - [MOVE_CONSTRICT] = 90, - [MOVE_HIGH_JUMP_KICK] = 95, - [MOVE_DREAM_EATER] = 130, - [MOVE_BARRAGE] = 90, - #ifdef B_UPDATED_MOVE_DATA - [MOVE_LEECH_LIFE] = 130, - #else - [MOVE_LEECH_LIFE] = 90, - #endif - [MOVE_SKY_ATTACK] = 140, - [MOVE_BUBBLE] = 90, - [MOVE_DIZZY_PUNCH] = 120, - [MOVE_PSYWAVE] = 100, - [MOVE_CRABHAMMER] = 130, - [MOVE_EXPLOSION] = 150, - [MOVE_FURY_SWIPES] = 100, - [MOVE_BONEMERANG] = 130, - [MOVE_ROCK_SLIDE] = 130, - [MOVE_HYPER_FANG] = 130, - [MOVE_TRI_ATTACK] = 130, - [MOVE_SUPER_FANG] = 100, - [MOVE_SLASH] = 120, - [MOVE_STRUGGLE] = 1, - [MOVE_TRIPLE_KICK] = 80, - [MOVE_THIEF] = 110, - [MOVE_FLAME_WHEEL] = 110, - [MOVE_SNORE] = 100, - [MOVE_FLAIL] = 130, - [MOVE_AEROBLAST] = 130, - [MOVE_REVERSAL] = 100, - [MOVE_POWDER_SNOW] = 90, - [MOVE_MACH_PUNCH] = 70, - [MOVE_FEINT_ATTACK] = 110, - [MOVE_SLUDGE_BOMB] = 90, - [MOVE_MUD_SLAP] = 90, - [MOVE_OCTAZOOKA] = 120, - [MOVE_ZAP_CANNON] = 140, - [MOVE_ICY_WIND] = 110, - [MOVE_BONE_RUSH] = 130, - [MOVE_OUTRAGE] = 140, - [MOVE_GIGA_DRAIN] = 130, - [MOVE_ROLLOUT] = 90, - [MOVE_FALSE_SWIPE] = 90, - [MOVE_SPARK] = 120, - [MOVE_FURY_CUTTER] = 90, - [MOVE_STEEL_WING] = 120, - [MOVE_RETURN] = 130, - [MOVE_PRESENT] = 100, - [MOVE_FRUSTRATION] = 130, - [MOVE_SACRED_FIRE] = 130, - [MOVE_MAGNITUDE] = 140, - [MOVE_DYNAMIC_PUNCH] = 90, - [MOVE_MEGAHORN] = 140, - [MOVE_DRAGON_BREATH] = 110, - [MOVE_PURSUIT] = 90, - [MOVE_RAPID_SPIN] = 100, - [MOVE_IRON_TAIL] = 130, - [MOVE_METAL_CLAW] = 100, - [MOVE_VITAL_THROW] = 85, - [MOVE_HIDDEN_POWER] = 110, - [MOVE_CROSS_CHOP] = 90, - [MOVE_TWISTER] = 90, - [MOVE_CRUNCH] = 130, - [MOVE_MIRROR_COAT] = 100, - [MOVE_EXTREME_SPEED] = 130, - [MOVE_ANCIENT_POWER] = 110, - [MOVE_SHADOW_BALL] = 130, - [MOVE_FUTURE_SIGHT] = 140, - [MOVE_ROCK_SMASH] = 70, - [MOVE_WHIRLPOOL] = 90, - [MOVE_BEAT_UP] = 100, - [MOVE_FAKE_OUT] = 90, - [MOVE_UPROAR] = 130, - [MOVE_SPIT_UP] = 100, - [MOVE_HEAT_WAVE] = 130, - [MOVE_FACADE] = 120, - [MOVE_FOCUS_PUNCH] = 100, - [MOVE_SMELLING_SALTS] = 120, - [MOVE_SUPERPOWER] = 95, - [MOVE_REVENGE] = 80, - [MOVE_BRICK_BREAK] = 90, - [MOVE_KNOCK_OFF] = 120, - [MOVE_ENDEAVOR] = 130, - [MOVE_ERUPTION] = 150, - [MOVE_SECRET_POWER] = 120, - [MOVE_DIVE] = 130, - [MOVE_ARM_THRUST] = 70, - [MOVE_LUSTER_PURGE] = 120, - [MOVE_MIST_BALL] = 120, - [MOVE_BLAZE_KICK] = 130, - [MOVE_ICE_BALL] = 90, - [MOVE_NEEDLE_ARM] = 110, - [MOVE_HYPER_VOICE] = 130, - [MOVE_POISON_FANG] = 75, - [MOVE_CRUSH_CLAW] = 130, - [MOVE_BLAST_BURN] = 150, - [MOVE_HYDRO_CANNON] = 150, - [MOVE_METEOR_MASH] = 130, - [MOVE_ASTONISH] = 90, - [MOVE_WEATHER_BALL] = 130, - [MOVE_AIR_CUTTER] = 110, - [MOVE_OVERHEAT] = 140, - [MOVE_ROCK_TOMB] = 110, - [MOVE_SILVER_WIND] = 110, - [MOVE_WATER_SPOUT] = 150, - [MOVE_SIGNAL_BEAM] = 130, - [MOVE_SHADOW_PUNCH] = 110, - [MOVE_EXTRASENSORY] = 130, - [MOVE_SKY_UPPERCUT] = 90, - [MOVE_SAND_TOMB] = 90, - [MOVE_SHEER_COLD] = 130, - [MOVE_MUDDY_WATER] = 130, - [MOVE_BULLET_SEED] = 130, - [MOVE_AERIAL_ACE] = 110, - [MOVE_ICICLE_SPEAR] = 130, - [MOVE_DRAGON_CLAW] = 130, - [MOVE_FRENZY_PLANT] = 150, - [MOVE_BOUNCE] = 130, - [MOVE_MUD_SHOT] = 110, - [MOVE_POISON_TAIL] = 75, - [MOVE_COVET] = 110, - [MOVE_VOLT_TACKLE] = 140, - [MOVE_MAGICAL_LEAF] = 110, - [MOVE_LEAF_BLADE] = 130, - [MOVE_ROCK_BLAST] = 130, - [MOVE_SHOCK_WAVE] = 110, - [MOVE_WATER_PULSE] = 110, - [MOVE_DOOM_DESIRE] = 140, - [MOVE_PSYCHO_BOOST] = 140, - [MOVE_WAKE_UP_SLAP] = 85, - [MOVE_HAMMER_ARM] = 90, - [MOVE_GYRO_BALL] = 130, - [MOVE_BRINE] = 120, - [MOVE_NATURAL_GIFT] = 130, - [MOVE_FEINT] = 90, - [MOVE_PLUCK] = 110, - [MOVE_METAL_BURST] = 100, - [MOVE_U_TURN] = 120, - [MOVE_CLOSE_COMBAT] = 95, - [MOVE_PAYBACK] = 100, - [MOVE_ASSURANCE] = 110, - [MOVE_FLING] = 100, - [MOVE_TRUMP_CARD] = 130, - [MOVE_WRING_OUT] = 140, - [MOVE_PUNISHMENT] = 130, - [MOVE_LAST_RESORT] = 140, - [MOVE_SUCKER_PUNCH] = 120, - [MOVE_FLARE_BLITZ] = 140, - [MOVE_FORCE_PALM] = 80, - [MOVE_AURA_SPHERE] = 90, - [MOVE_POISON_JAB] = 90, - [MOVE_DARK_PULSE] = 130, - [MOVE_NIGHT_SLASH] = 120, - [MOVE_AQUA_TAIL] = 130, - [MOVE_SEED_BOMB] = 130, - [MOVE_AIR_SLASH] = 130, - [MOVE_X_SCISSOR] = 130, - [MOVE_BUG_BUZZ] = 130, - [MOVE_DRAGON_PULSE] = 130, - [MOVE_DRAGON_RUSH] = 130, - [MOVE_POWER_GEM] = 130, - [MOVE_DRAIN_PUNCH] = 90, - [MOVE_VACUUM_WAVE] = 70, - [MOVE_FOCUS_BLAST] = 95, - [MOVE_ENERGY_BALL] = 130, - [MOVE_BRAVE_BIRD] = 140, - [MOVE_EARTH_POWER] = 130, - [MOVE_GIGA_IMPACT] = 150, - [MOVE_BULLET_PUNCH] = 90, - [MOVE_AVALANCHE] = 110, - [MOVE_ICE_SHARD] = 90, - [MOVE_SHADOW_CLAW] = 120, - [MOVE_THUNDER_FANG] = 120, - [MOVE_ICE_FANG] = 120, - [MOVE_FIRE_FANG] = 120, - [MOVE_SHADOW_SNEAK] = 90, - [MOVE_MUD_BOMB] = 120, - [MOVE_PSYCHO_CUT] = 120, - [MOVE_ZEN_HEADBUTT] = 130, - [MOVE_MIRROR_SHOT] = 120, - [MOVE_FLASH_CANNON] = 130, - [MOVE_ROCK_CLIMB] = 130, - [MOVE_DRACO_METEOR] = 140, - [MOVE_DISCHARGE] = 130, - [MOVE_LAVA_PLUME] = 130, - [MOVE_LEAF_STORM] = 140, - [MOVE_POWER_WHIP] = 140, - [MOVE_ROCK_WRECKER] = 150, - [MOVE_CROSS_POISON] = 85, - [MOVE_GUNK_SHOT] = 95, - [MOVE_IRON_HEAD] = 130, - [MOVE_MAGNET_BOMB] = 110, - [MOVE_STONE_EDGE] = 130, - [MOVE_GRASS_KNOT] = 130, - [MOVE_CHATTER] = 120, - [MOVE_JUDGMENT] = 130, - [MOVE_BUG_BITE] = 110, - [MOVE_CHARGE_BEAM] = 100, - [MOVE_WOOD_HAMMER] = 140, - [MOVE_AQUA_JET] = 90, - [MOVE_ATTACK_ORDER] = 130, - [MOVE_HEAD_SMASH] = 150, - [MOVE_DOUBLE_HIT] = 120, - [MOVE_ROAR_OF_TIME] = 150, - [MOVE_SPACIAL_REND] = 130, - [MOVE_CRUSH_GRIP] = 140, - [MOVE_MAGMA_STORM] = 130, - [MOVE_SEED_FLARE] = 140, - [MOVE_OMINOUS_WIND] = 110, - [MOVE_SHADOW_FORCE] = 140, - [MOVE_PSYSHOCK] = 130, - [MOVE_VENOSHOCK] = 85, - [MOVE_SMACK_DOWN] = 100, - [MOVE_STORM_THROW] = 80, - [MOVE_FLAME_BURST] = 120, - [MOVE_SLUDGE_WAVE] = 90, - [MOVE_HEAVY_SLAM] = 130, - [MOVE_SYNCHRONOISE] = 140, - [MOVE_ELECTRO_BALL] = 130, - [MOVE_FLAME_CHARGE] = 100, - [MOVE_LOW_SWEEP] = 85, - [MOVE_ACID_SPRAY] = 70, - [MOVE_FOUL_PLAY] = 130, - [MOVE_ROUND] = 110, - [MOVE_ECHOED_VOICE] = 90, - [MOVE_CHIP_AWAY] = 120, - [MOVE_CLEAR_SMOG] = 75, - [MOVE_STORED_POWER] = 130, - [MOVE_SCALD] = 130, - [MOVE_HEX] = 120, - [MOVE_SKY_DROP] = 110, - [MOVE_CIRCLE_THROW] = 80, - [MOVE_INCINERATE] = 110, - [MOVE_ACROBATICS] = 110, - [MOVE_RETALIATE] = 120, - [MOVE_FINAL_GAMBIT] = 100, - [MOVE_INFERNO] = 130, - [MOVE_WATER_PLEDGE] = 130, - [MOVE_FIRE_PLEDGE] = 130, - [MOVE_GRASS_PLEDGE] = 130, - [MOVE_VOLT_SWITCH] = 120, - [MOVE_STRUGGLE_BUG] = 100, - [MOVE_BULLDOZE] = 110, - [MOVE_FROST_BREATH] = 110, - [MOVE_DRAGON_TAIL] = 110, - [MOVE_ELECTROWEB] = 110, - [MOVE_WILD_CHARGE] = 130, - [MOVE_DRILL_RUN] = 130, - [MOVE_DUAL_CHOP] = 130, - [MOVE_HEART_STAMP] = 110, - [MOVE_HORN_LEECH] = 130, - [MOVE_SACRED_SWORD] = 90, - [MOVE_RAZOR_SHELL] = 130, - [MOVE_HEAT_CRASH] = 130, - [MOVE_LEAF_TORNADO] = 120, - [MOVE_STEAMROLLER] = 120, - [MOVE_NIGHT_DAZE] = 130, - [MOVE_PSYSTRIKE] = 130, - [MOVE_TAIL_SLAP] = 130, - [MOVE_HURRICANE] = 140, - [MOVE_HEAD_CHARGE] = 140, - [MOVE_GEAR_GRIND] = 130, - [MOVE_SEARING_SHOT] = 130, - [MOVE_TECHNO_BLAST] = 140, - [MOVE_RELIC_SONG] = 130, - [MOVE_SECRET_SWORD] = 90, - [MOVE_GLACIATE] = 120, - [MOVE_BOLT_STRIKE] = 140, - [MOVE_BLUE_FLARE] = 140, - [MOVE_FIERY_DANCE] = 130, - [MOVE_FREEZE_SHOCK] = 140, - [MOVE_ICE_BURN] = 140, - [MOVE_SNARL] = 110, - [MOVE_ICICLE_CRASH] = 130, - [MOVE_V_CREATE] = 150, - [MOVE_FUSION_FLARE] = 130, - [MOVE_FUSION_BOLT] = 130, - [MOVE_FLYING_PRESS] = 90, - [MOVE_BELCH] = 95, - [MOVE_FELL_STINGER] = 100, - [MOVE_PHANTOM_FORCE] = 130, - [MOVE_PARABOLIC_CHARGE] = 120, - [MOVE_PETAL_BLIZZARD] = 130, - [MOVE_FREEZE_DRY] = 120, - [MOVE_DISARMING_VOICE] = 90, - [MOVE_DRAINING_KISS] = 100, - [MOVE_PLAY_ROUGH] = 130, - [MOVE_FAIRY_WIND] = 90, - [MOVE_MOONBLAST] = 130, - [MOVE_BOOMBURST] = 140, - [MOVE_DIAMOND_STORM] = 130, - [MOVE_STEAM_ERUPTION] = 140, - [MOVE_HYPERSPACE_HOLE] = 130, - [MOVE_WATER_SHURIKEN] = 90, - [MOVE_MYSTICAL_FIRE] = 130, - [MOVE_DAZZLING_GLEAM] = 130, - [MOVE_NUZZLE] = 90, - [MOVE_HOLD_BACK] = 90, - [MOVE_INFESTATION] = 90, - [MOVE_POWER_UP_PUNCH] = 70, - [MOVE_OBLIVION_WING] = 130, - [MOVE_THOUSAND_ARROWS] = 130, - [MOVE_THOUSAND_WAVES] = 130, - [MOVE_LANDS_WRATH] = 130, - [MOVE_LIGHT_OF_RUIN] = 140, - [MOVE_ORIGIN_PULSE] = 140, - [MOVE_PRECIPICE_BLADES] = 140, - [MOVE_DRAGON_ASCENT] = 140, - [MOVE_HYPERSPACE_FURY] = 130, - [MOVE_FIRST_IMPRESSION] = 130, - [MOVE_SPIRIT_SHACKLE] = 130, - [MOVE_DARKEST_LARIAT] = 130, - [MOVE_SPARKLING_ARIA] = 130, - [MOVE_ICE_HAMMER] = 130, - [MOVE_HIGH_HORSEPOWER] = 130, - [MOVE_SOLAR_BLADE] = 140, - [MOVE_LEAFAGE] = 90, - [MOVE_THROAT_CHOP] = 130, - [MOVE_POLLEN_PUFF] = 130, - [MOVE_ANCHOR_SHOT] = 130, - [MOVE_LUNGE] = 130, - [MOVE_FIRE_LASH] = 130, - [MOVE_POWER_TRIP] = 130, - [MOVE_BURN_UP] = 140, - [MOVE_SMART_STRIKE] = 120, - [MOVE_REVELATION_DANCE] = 130, - [MOVE_CORE_ENFORCER] = 130, - [MOVE_TROP_KICK] = 120, - [MOVE_BEAK_BLAST] = 130, - [MOVE_CLANGING_SCALES] = 140, - [MOVE_DRAGON_HAMMER] = 130, - [MOVE_BRUTAL_SWING] = 110, - [MOVE_SHELL_TRAP] = 150, - [MOVE_FLEUR_CANNON] = 140, - [MOVE_PSYCHIC_FANGS] = 130, - [MOVE_STOMPING_TANTRUM] = 130, - [MOVE_SHADOW_BONE] = 130, - [MOVE_ACCELEROCK] = 90, - [MOVE_LIQUIDATION] = 130, - [MOVE_PRISMATIC_LASER] = 150, - [MOVE_SPECTRAL_THIEF] = 130, - [MOVE_SUNSTEEL_STRIKE] = 130, - [MOVE_MOONGEIST_BEAM] = 130, - [MOVE_ZING_ZAP] = 130, - [MOVE_NATURES_MADNESS] = 100, - [MOVE_MULTI_ATTACK] = 95, - [MOVE_MIND_BLOWN] = 150, - [MOVE_PLASMA_FISTS] = 130, - [MOVE_PHOTON_GEYSER] = 130, - [MOVE_DOUBLE_IRON_BASH] = 140, - [MOVE_DYNAMAX_CANNON] = 140, - [MOVE_SNIPE_SHOT] = 130, - [MOVE_JAW_LOCK] = 130, - [MOVE_DRAGON_DARTS] = 130, - [MOVE_BOLT_BEAK] = 130, - [MOVE_FISHIOUS_REND] = 130, - [MOVE_BODY_PRESS] = 90, - [MOVE_DRUM_BEATING] = 130, - [MOVE_SNAP_TRAP] = 90, - [MOVE_PYRO_BALL] = 140, - [MOVE_BEHEMOTH_BLADE] = 130, - [MOVE_BEHEMOTH_BASH] = 130, - [MOVE_AURA_WHEEL] = 140, - [MOVE_BREAKING_SWIPE] = 110, - [MOVE_BRANCH_POKE] = 90, - [MOVE_OVERDRIVE] = 130, - [MOVE_APPLE_ACID] = 130, - [MOVE_GRAV_APPLE] = 130, - [MOVE_SPIRIT_BREAK] = 130, - [MOVE_STRANGE_STEAM] = 130, - [MOVE_FALSE_SURRENDER] = 130, - [MOVE_METEOR_ASSAULT] = 100, - [MOVE_ETERNABEAM] = 150, - [MOVE_STEEL_BEAM] = 140, - [MOVE_EXPANDING_FORCE] = 100, //from here down are placeholders - [MOVE_STEEL_ROLLER] = 100, - [MOVE_SCALE_SHOT] = 100, - [MOVE_METEOR_BEAM] = 100, - [MOVE_SHELL_SIDE_ARM] = 100, - [MOVE_MISTY_EXPLOSION] = 100, - [MOVE_GRASSY_GLIDE] = 100, - [MOVE_RISING_VOLTAGE] = 100, - [MOVE_TERRAIN_PULSE] = 100, - [MOVE_SKITTER_SMACK] = 100, - [MOVE_BURNING_JEALOUSY] = 100, - [MOVE_LASH_OUT] = 100, - [MOVE_POLTERGEIST] = 100, - [MOVE_FLIP_TURN] = 100, - [MOVE_TRIPLE_AXEL] = 100, - [MOVE_DUAL_WINGBEAT] = 100, - [MOVE_SCORCHING_SANDS] = 100, - [MOVE_WICKED_BLOW] = 100, - [MOVE_SURGING_STRIKES] = 100, - [MOVE_FREEZING_GLARE] = 100, - [MOVE_THUNDEROUS_KICK] = 100, - [MOVE_FIERY_WRATH] = 100, - [MOVE_THUNDER_CAGE] = 100, - [MOVE_DRAGON_ENERGY] = 100, - [MOVE_EERIE_SPELL] = 100, - [MOVE_ASTRAL_BARRAGE] = 150, - [MOVE_GLACIAL_LANCE] = 150, -}; From 7988c53d01e269705e159dd6fa55494ccfde8e0a Mon Sep 17 00:00:00 2001 From: AgustinGDLV Date: Thu, 23 Mar 2023 22:27:26 -0700 Subject: [PATCH 051/162] compile fix + placeholder animations (Wyrmwind broken?) --- data/battle_anim_scripts.s | 166 +++++++++++++++++++++++++------------ src/battle_dynamax.c | 2 +- 2 files changed, 115 insertions(+), 53 deletions(-) diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index a3f6dfaa84..c34fd44eaf 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -30852,104 +30852,166 @@ General_SetWeather:: jumpreteq 4, General_Hail end -Move_MAX_KNUCKLE: -Move_MAX_QUAKE: -Move_MAX_ROCKFALL: -Move_MAX_FLUTTERBY: -Move_MAX_PHANTASM: -Move_MAX_STEELSPIKE: -Move_MAX_HAILSTORM: -Move_MAX_MINDSTORM: -Move_MAX_WYRMWIND: -Move_MAX_DARKNESS: -Move_MAX_STARFALL: - launchtask AnimTask_DynamaxGrowth 0x5 0x1 0x1 - waitforvisualfinish - end - Move_MAX_GUARD: launchtask AnimTask_DynamaxGrowth 0x5 0x1 0x1 waitforvisualfinish goto Move_PROTECT end -Move_MAX_STRIKE:: +Move_MAX_STRIKE: +Move_G_MAX_REPLENISH: launchtask AnimTask_DynamaxGrowth 0x5 0x1 0x1 waitforvisualfinish goto Move_GIGA_IMPACT end -Move_MAX_AIRSTREAM:: +Move_MAX_AIRSTREAM: +Move_G_MAX_WIND_RAGE: launchtask AnimTask_DynamaxGrowth 0x5 0x1 0x1 waitforvisualfinish goto Move_AEROBLAST end -Move_MAX_OOZE:: +Move_MAX_OOZE: +Move_G_MAX_MALODOR: launchtask AnimTask_DynamaxGrowth 0x5 0x1 0x1 waitforvisualfinish goto Move_GUNK_SHOT end -Move_MAX_FLARE:: +Move_G_MAX_WILDFIRE: +Move_G_MAX_FIREBALL: +Move_G_MAX_CENTIFERNO: +Move_MAX_FLARE: launchtask AnimTask_DynamaxGrowth 0x5 0x1 0x1 waitforvisualfinish goto Move_BLAST_BURN end -Move_MAX_GEYSER:: +Move_G_MAX_CANNONADE: +Move_G_MAX_HYDROSNIPE: +Move_G_MAX_FOAM_BURST: +Move_MAX_GEYSER: launchtask AnimTask_DynamaxGrowth 0x5 0x1 0x1 waitforvisualfinish goto Move_HYDRO_CANNON end -Move_MAX_OVERGROWTH:: +Move_G_MAX_VINE_LASH: +Move_G_MAX_DRUM_SOLO: +Move_G_MAX_TARTNESS: +Move_G_MAX_SWEETNESS: +Move_MAX_OVERGROWTH: launchtask AnimTask_DynamaxGrowth 0x5 0x1 0x1 waitforvisualfinish goto Move_FRENZY_PLANT end -Move_MAX_LIGHTNING:: +Move_MAX_LIGHTNING: +Move_G_MAX_STUN_SHOCK: launchtask AnimTask_DynamaxGrowth 0x5 0x1 0x1 waitforvisualfinish goto Move_ZAP_CANNON end -Move_G_MAX_VINE_LASH: -Move_G_MAX_WILDFIRE: -Move_G_MAX_CANNONADE: -Move_G_MAX_BEFUDDLE: -Move_G_MAX_VOLT_CRASH: -Move_G_MAX_GOLD_RUSH: Move_G_MAX_CHI_STRIKE: -Move_G_MAX_TERROR: -Move_G_MAX_FOAM_BURST: -Move_G_MAX_RESONANCE: -Move_G_MAX_CUDDLE: -Move_G_MAX_REPLENISH: -Move_G_MAX_MALODOR: -Move_G_MAX_MELTDOWN: -Move_G_MAX_DRUM_SOLO: -Move_G_MAX_FIREBALL: -Move_G_MAX_HYDROSNIPE: -Move_G_MAX_WIND_RAGE: -Move_G_MAX_GRAVITAS: -Move_G_MAX_STONESURGE: -Move_G_MAX_VOLCALITH: -Move_G_MAX_TARTNESS: -Move_G_MAX_SWEETNESS: -Move_G_MAX_SANDBLAST: -Move_G_MAX_STUN_SHOCK: -Move_G_MAX_CENTIFERNO: -Move_G_MAX_SMITE: -Move_G_MAX_SNOOZE: -Move_G_MAX_FINALE: -Move_G_MAX_STEELSURGE: -Move_G_MAX_DEPLETION: Move_G_MAX_ONE_BLOW: Move_G_MAX_RAPID_FLOW: +Move_MAX_KNUCKLE: launchtask AnimTask_DynamaxGrowth 0x5 0x1 0x1 waitforvisualfinish + goto Move_CLOSE_COMBAT + end + +Move_G_MAX_RESONANCE: +Move_MAX_HAILSTORM: + launchtask AnimTask_DynamaxGrowth 0x5 0x1 0x1 + waitforvisualfinish + goto Move_SHEER_COLD + end + +Move_G_MAX_SANDBLAST: +Move_MAX_QUAKE: + launchtask AnimTask_DynamaxGrowth 0x5 0x1 0x1 + waitforvisualfinish + goto Move_FISSURE + end + +Move_G_MAX_BEFUDDLE: +Move_MAX_FLUTTERBY: + launchtask AnimTask_DynamaxGrowth 0x5 0x1 0x1 + waitforvisualfinish + goto Move_BUG_BUZZ + end + +Move_G_MAX_STEELSURGE: +Move_G_MAX_MELTDOWN: +Move_MAX_STEELSPIKE: + launchtask AnimTask_DynamaxGrowth 0x5 0x1 0x1 + waitforvisualfinish + goto Move_HEAVY_SLAM + end + +Move_G_MAX_TERROR: +Move_MAX_PHANTASM: + launchtask AnimTask_DynamaxGrowth 0x5 0x1 0x1 + waitforvisualfinish + goto Move_PHANTOM_FORCE + end + +Move_G_MAX_GRAVITAS: +Move_MAX_MINDSTORM: + launchtask AnimTask_DynamaxGrowth 0x5 0x1 0x1 + waitforvisualfinish + goto Move_PSYCHO_BOOST + end + +Move_G_MAX_SMITE: +Move_G_MAX_FINALE: +Move_MAX_STARFALL: + launchtask AnimTask_DynamaxGrowth 0x5 0x1 0x1 + waitforvisualfinish + goto Move_MOONBLAST + end + +Move_G_MAX_STONESURGE: +Move_G_MAX_VOLCALITH: +Move_MAX_ROCKFALL: + launchtask AnimTask_DynamaxGrowth 0x5 0x1 0x1 + waitforvisualfinish + goto Move_ROCK_WRECKER + end + +Move_G_MAX_DEPLETION: +Move_MAX_WYRMWIND: + launchtask AnimTask_DynamaxGrowth 0x5 0x1 0x1 + waitforvisualfinish + @goto Move_DRACO_METEOR broken + end + +Move_G_MAX_SNOOZE: +Move_MAX_DARKNESS: + launchtask AnimTask_DynamaxGrowth 0x5 0x1 0x1 + waitforvisualfinish + goto Move_DARK_PULSE + end + +Move_G_MAX_CUDDLE: + launchtask AnimTask_DynamaxGrowth 0x5 0x1 0x1 + waitforvisualfinish + goto Move_COVET + end + +Move_G_MAX_VOLT_CRASH: + launchtask AnimTask_DynamaxGrowth 0x5 0x1 0x1 + waitforvisualfinish + goto Move_VOLT_TACKLE + end + +Move_G_MAX_GOLD_RUSH: + launchtask AnimTask_DynamaxGrowth 0x5 0x1 0x1 + waitforvisualfinish + goto Move_PAY_DAY end @@@ DYNAMAX AND MAX RAIDS diff --git a/src/battle_dynamax.c b/src/battle_dynamax.c index 77e64dc755..eeb36fc2e0 100644 --- a/src/battle_dynamax.c +++ b/src/battle_dynamax.c @@ -357,7 +357,7 @@ u8 GetMaxMovePower(u16 move) } // TODO: maybe bring back gMaxMovePowers lol // Fighting and Poison Max Moves are weaker than other types. - else if (gBattleMoves[move].type == TYPE_FIGHTING + if (gBattleMoves[move].type == TYPE_FIGHTING || gBattleMoves[move].type == TYPE_POISON || move == MOVE_MULTI_ATTACK) switch (gBattleMoves[move].power) From bbff30d042f5d1fcf980ad56c2dcf9164c4c953a Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Fri, 24 Mar 2023 23:44:04 -0300 Subject: [PATCH 052/162] Tabs to spaces --- src/battle_dynamax.c | 1262 +++++++++++++++++++++--------------------- 1 file changed, 631 insertions(+), 631 deletions(-) diff --git a/src/battle_dynamax.c b/src/battle_dynamax.c index eeb36fc2e0..466c3fb29a 100644 --- a/src/battle_dynamax.c +++ b/src/battle_dynamax.c @@ -23,68 +23,68 @@ // Constant Data static const u16 sMaxMoveTable[] = { - [TYPE_NORMAL] = MOVE_MAX_STRIKE, - [TYPE_FIGHTING] = MOVE_MAX_KNUCKLE, - [TYPE_FLYING] = MOVE_MAX_AIRSTREAM, - [TYPE_POISON] = MOVE_MAX_OOZE, - [TYPE_GROUND] = MOVE_MAX_QUAKE, - [TYPE_ROCK] = MOVE_MAX_ROCKFALL, - [TYPE_BUG] = MOVE_MAX_FLUTTERBY, - [TYPE_GHOST] = MOVE_MAX_PHANTASM, - [TYPE_STEEL] = MOVE_MAX_STEELSPIKE, - [TYPE_FIRE] = MOVE_MAX_FLARE, - [TYPE_WATER] = MOVE_MAX_GEYSER, - [TYPE_GRASS] = MOVE_MAX_OVERGROWTH, - [TYPE_ELECTRIC] = MOVE_MAX_LIGHTNING, - [TYPE_PSYCHIC] = MOVE_MAX_MINDSTORM, - [TYPE_ICE] = MOVE_MAX_HAILSTORM, - [TYPE_DRAGON] = MOVE_MAX_WYRMWIND, - [TYPE_DARK] = MOVE_MAX_DARKNESS, - [TYPE_FAIRY] = MOVE_MAX_STARFALL, + [TYPE_NORMAL] = MOVE_MAX_STRIKE, + [TYPE_FIGHTING] = MOVE_MAX_KNUCKLE, + [TYPE_FLYING] = MOVE_MAX_AIRSTREAM, + [TYPE_POISON] = MOVE_MAX_OOZE, + [TYPE_GROUND] = MOVE_MAX_QUAKE, + [TYPE_ROCK] = MOVE_MAX_ROCKFALL, + [TYPE_BUG] = MOVE_MAX_FLUTTERBY, + [TYPE_GHOST] = MOVE_MAX_PHANTASM, + [TYPE_STEEL] = MOVE_MAX_STEELSPIKE, + [TYPE_FIRE] = MOVE_MAX_FLARE, + [TYPE_WATER] = MOVE_MAX_GEYSER, + [TYPE_GRASS] = MOVE_MAX_OVERGROWTH, + [TYPE_ELECTRIC] = MOVE_MAX_LIGHTNING, + [TYPE_PSYCHIC] = MOVE_MAX_MINDSTORM, + [TYPE_ICE] = MOVE_MAX_HAILSTORM, + [TYPE_DRAGON] = MOVE_MAX_WYRMWIND, + [TYPE_DARK] = MOVE_MAX_DARKNESS, + [TYPE_FAIRY] = MOVE_MAX_STARFALL, }; struct GMaxMove { - u16 species; - u8 moveType; - u16 gmaxMove; + u16 species; + u8 moveType; + u16 gmaxMove; }; static const struct GMaxMove sGMaxMoveTable[] = { - {SPECIES_VENUSAUR_GMAX, TYPE_GRASS, MOVE_G_MAX_VINE_LASH}, - {SPECIES_BLASTOISE_GMAX, TYPE_WATER, MOVE_G_MAX_CANNONADE}, - {SPECIES_CHARIZARD_GMAX, TYPE_FIRE, MOVE_G_MAX_WILDFIRE}, - {SPECIES_BUTTERFREE_GMAX, TYPE_BUG, MOVE_G_MAX_BEFUDDLE}, - {SPECIES_PIKACHU_GMAX, TYPE_ELECTRIC, MOVE_G_MAX_VOLT_CRASH}, - {SPECIES_MEOWTH_GMAX, TYPE_NORMAL, MOVE_G_MAX_GOLD_RUSH}, - {SPECIES_MACHAMP_GMAX, TYPE_FIGHTING, MOVE_G_MAX_CHI_STRIKE}, - {SPECIES_GENGAR_GMAX, TYPE_GHOST, MOVE_G_MAX_TERROR}, - {SPECIES_KINGLER_GMAX, TYPE_WATER, MOVE_G_MAX_FOAM_BURST}, - {SPECIES_LAPRAS_GMAX, TYPE_ICE, MOVE_G_MAX_RESONANCE}, - {SPECIES_EEVEE_GMAX, TYPE_NORMAL, MOVE_G_MAX_CUDDLE}, - {SPECIES_SNORLAX_GMAX, TYPE_NORMAL, MOVE_G_MAX_REPLENISH}, - {SPECIES_GARBODOR_GMAX, TYPE_POISON, MOVE_G_MAX_MALODOR}, - {SPECIES_MELMETAL_GMAX, TYPE_STEEL, MOVE_G_MAX_MELTDOWN}, - {SPECIES_RILLABOOM_GMAX, TYPE_GRASS, MOVE_G_MAX_DRUM_SOLO}, - {SPECIES_CINDERACE_GMAX, TYPE_FIRE, MOVE_G_MAX_FIREBALL}, - {SPECIES_INTELEON_GMAX, TYPE_WATER, MOVE_G_MAX_HYDROSNIPE}, - {SPECIES_CORVIKNIGHT_GMAX, TYPE_FLYING, MOVE_G_MAX_WIND_RAGE}, - {SPECIES_ORBEETLE_GMAX, TYPE_PSYCHIC, MOVE_G_MAX_GRAVITAS}, - {SPECIES_DREDNAW_GMAX, TYPE_WATER, MOVE_G_MAX_STONESURGE}, - {SPECIES_COALOSSAL_GMAX, TYPE_ROCK, MOVE_G_MAX_VOLCALITH}, - {SPECIES_FLAPPLE_GMAX, TYPE_GRASS, MOVE_G_MAX_TARTNESS}, - {SPECIES_APPLETUN_GMAX, TYPE_GRASS, MOVE_G_MAX_SWEETNESS}, - {SPECIES_SANDACONDA_GMAX, TYPE_GROUND, MOVE_G_MAX_SANDBLAST}, - {SPECIES_TOXTRICITY_GMAX, TYPE_ELECTRIC, MOVE_G_MAX_STUN_SHOCK}, - {SPECIES_CENTISKORCH_GMAX, TYPE_FIRE, MOVE_G_MAX_CENTIFERNO}, - {SPECIES_HATTERENE_GMAX, TYPE_FAIRY, MOVE_G_MAX_SMITE}, - {SPECIES_GRIMMSNARL_GMAX, TYPE_DARK, MOVE_G_MAX_SNOOZE}, - {SPECIES_ALCREMIE_GMAX, TYPE_FAIRY, MOVE_G_MAX_FINALE}, - {SPECIES_COPPERAJAH_GMAX, TYPE_STEEL, MOVE_G_MAX_STEELSURGE}, - {SPECIES_DURALUDON_GMAX, TYPE_DRAGON, MOVE_G_MAX_DEPLETION}, - {SPECIES_URSHIFU_GMAX, TYPE_DARK, MOVE_G_MAX_ONE_BLOW}, - {SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GMAX, TYPE_WATER, MOVE_G_MAX_RAPID_FLOW}, + {SPECIES_VENUSAUR_GMAX, TYPE_GRASS, MOVE_G_MAX_VINE_LASH}, + {SPECIES_BLASTOISE_GMAX, TYPE_WATER, MOVE_G_MAX_CANNONADE}, + {SPECIES_CHARIZARD_GMAX, TYPE_FIRE, MOVE_G_MAX_WILDFIRE}, + {SPECIES_BUTTERFREE_GMAX, TYPE_BUG, MOVE_G_MAX_BEFUDDLE}, + {SPECIES_PIKACHU_GMAX, TYPE_ELECTRIC, MOVE_G_MAX_VOLT_CRASH}, + {SPECIES_MEOWTH_GMAX, TYPE_NORMAL, MOVE_G_MAX_GOLD_RUSH}, + {SPECIES_MACHAMP_GMAX, TYPE_FIGHTING, MOVE_G_MAX_CHI_STRIKE}, + {SPECIES_GENGAR_GMAX, TYPE_GHOST, MOVE_G_MAX_TERROR}, + {SPECIES_KINGLER_GMAX, TYPE_WATER, MOVE_G_MAX_FOAM_BURST}, + {SPECIES_LAPRAS_GMAX, TYPE_ICE, MOVE_G_MAX_RESONANCE}, + {SPECIES_EEVEE_GMAX, TYPE_NORMAL, MOVE_G_MAX_CUDDLE}, + {SPECIES_SNORLAX_GMAX, TYPE_NORMAL, MOVE_G_MAX_REPLENISH}, + {SPECIES_GARBODOR_GMAX, TYPE_POISON, MOVE_G_MAX_MALODOR}, + {SPECIES_MELMETAL_GMAX, TYPE_STEEL, MOVE_G_MAX_MELTDOWN}, + {SPECIES_RILLABOOM_GMAX, TYPE_GRASS, MOVE_G_MAX_DRUM_SOLO}, + {SPECIES_CINDERACE_GMAX, TYPE_FIRE, MOVE_G_MAX_FIREBALL}, + {SPECIES_INTELEON_GMAX, TYPE_WATER, MOVE_G_MAX_HYDROSNIPE}, + {SPECIES_CORVIKNIGHT_GMAX, TYPE_FLYING, MOVE_G_MAX_WIND_RAGE}, + {SPECIES_ORBEETLE_GMAX, TYPE_PSYCHIC, MOVE_G_MAX_GRAVITAS}, + {SPECIES_DREDNAW_GMAX, TYPE_WATER, MOVE_G_MAX_STONESURGE}, + {SPECIES_COALOSSAL_GMAX, TYPE_ROCK, MOVE_G_MAX_VOLCALITH}, + {SPECIES_FLAPPLE_GMAX, TYPE_GRASS, MOVE_G_MAX_TARTNESS}, + {SPECIES_APPLETUN_GMAX, TYPE_GRASS, MOVE_G_MAX_SWEETNESS}, + {SPECIES_SANDACONDA_GMAX, TYPE_GROUND, MOVE_G_MAX_SANDBLAST}, + {SPECIES_TOXTRICITY_GMAX, TYPE_ELECTRIC, MOVE_G_MAX_STUN_SHOCK}, + {SPECIES_CENTISKORCH_GMAX, TYPE_FIRE, MOVE_G_MAX_CENTIFERNO}, + {SPECIES_HATTERENE_GMAX, TYPE_FAIRY, MOVE_G_MAX_SMITE}, + {SPECIES_GRIMMSNARL_GMAX, TYPE_DARK, MOVE_G_MAX_SNOOZE}, + {SPECIES_ALCREMIE_GMAX, TYPE_FAIRY, MOVE_G_MAX_FINALE}, + {SPECIES_COPPERAJAH_GMAX, TYPE_STEEL, MOVE_G_MAX_STEELSURGE}, + {SPECIES_DURALUDON_GMAX, TYPE_DRAGON, MOVE_G_MAX_DEPLETION}, + {SPECIES_URSHIFU_GMAX, TYPE_DARK, MOVE_G_MAX_ONE_BLOW}, + {SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GMAX, TYPE_WATER, MOVE_G_MAX_RAPID_FLOW}, }; // forward declarations @@ -94,301 +94,301 @@ static void SpriteCb_DynamaxIndicator(struct Sprite *); // Returns whether a battler is Dynamaxed. bool32 IsDynamaxed(u16 battlerId) { - u8 side = GetBattlerSide(battlerId); - if (gBattleStruct->dynamax.dynamaxed[battlerId] - /*|| IsRaidBoss(battlerId)*/) - return TRUE; - return FALSE; + u8 side = GetBattlerSide(battlerId); + if (gBattleStruct->dynamax.dynamaxed[battlerId] + /*|| IsRaidBoss(battlerId)*/) + return TRUE; + return FALSE; } // Returns whether a battler can Dynamax. bool32 CanDynamax(u16 battlerId) { - // TODO: Requires Dynamax Band if not in a Max Raid (as well as special flag). - u16 species = gBattleMons[battlerId].species; - u16 holdEffect = ItemId_GetHoldEffect(gBattleMons[battlerId].item); - if (!gBattleStruct->dynamax.alreadyDynamaxed[GetBattlerSide(battlerId)] - && !gBattleStruct->dynamax.dynamaxed[battlerId] - && !gBattleStruct->dynamax.dynamaxed[BATTLE_PARTNER(battlerId)] - && !gBattleStruct->dynamax.toDynamax[BATTLE_PARTNER(battlerId)] - && species != SPECIES_ZACIAN && species != SPECIES_ZACIAN_CROWNED_SWORD - && species != SPECIES_ZAMAZENTA && species != SPECIES_ZAMAZENTA_CROWNED_SHIELD - && species != SPECIES_ETERNATUS && species != SPECIES_ETERNATUS_ETERNAMAX - && holdEffect != HOLD_EFFECT_MEGA_STONE && holdEffect != HOLD_EFFECT_Z_CRYSTAL) - return TRUE; - return FALSE; + // TODO: Requires Dynamax Band if not in a Max Raid (as well as special flag). + u16 species = gBattleMons[battlerId].species; + u16 holdEffect = ItemId_GetHoldEffect(gBattleMons[battlerId].item); + if (!gBattleStruct->dynamax.alreadyDynamaxed[GetBattlerSide(battlerId)] + && !gBattleStruct->dynamax.dynamaxed[battlerId] + && !gBattleStruct->dynamax.dynamaxed[BATTLE_PARTNER(battlerId)] + && !gBattleStruct->dynamax.toDynamax[BATTLE_PARTNER(battlerId)] + && species != SPECIES_ZACIAN && species != SPECIES_ZACIAN_CROWNED_SWORD + && species != SPECIES_ZAMAZENTA && species != SPECIES_ZAMAZENTA_CROWNED_SHIELD + && species != SPECIES_ETERNATUS && species != SPECIES_ETERNATUS_ETERNAMAX + && holdEffect != HOLD_EFFECT_MEGA_STONE && holdEffect != HOLD_EFFECT_Z_CRYSTAL) + return TRUE; + return FALSE; } // Applies the HP Multiplier for Dynamaxed Pokemon and Raid Bosses. void ApplyDynamaxHPMultiplier(u16 battlerId, struct Pokemon* mon) { - if (gBattleMons[battlerId].species == SPECIES_SHEDINJA) - { - return; - } - else - { - u16 mult = UQ_4_12(1.5); // placeholder - u16 hp = UQ_4_12_TO_INT((gBattleMons[battlerId].hp * mult) + UQ_4_12_ROUND); - u16 maxHP = UQ_4_12_TO_INT((gBattleMons[battlerId].maxHP * mult) + UQ_4_12_ROUND); - SetMonData(mon, MON_DATA_HP, &hp); - SetMonData(mon, MON_DATA_MAX_HP, &maxHP); - } + if (gBattleMons[battlerId].species == SPECIES_SHEDINJA) + { + return; + } + else + { + u16 mult = UQ_4_12(1.5); // placeholder + u16 hp = UQ_4_12_TO_INT((gBattleMons[battlerId].hp * mult) + UQ_4_12_ROUND); + u16 maxHP = UQ_4_12_TO_INT((gBattleMons[battlerId].maxHP * mult) + UQ_4_12_ROUND); + SetMonData(mon, MON_DATA_HP, &hp); + SetMonData(mon, MON_DATA_MAX_HP, &maxHP); + } } // Returns the non-Dynamax HP of a Pokemon. u16 GetNonDynamaxHP(u16 battlerId) { - if (!IsDynamaxed(battlerId) || gBattleMons[battlerId].species == SPECIES_SHEDINJA) - { - return gBattleMons[battlerId].hp; - } - else - { - u16 mult = UQ_4_12(1.0/1.5); // placeholder - u16 hp = UQ_4_12_TO_INT((gBattleMons[battlerId].hp * mult) + UQ_4_12_ROUND); - return hp; - } + if (!IsDynamaxed(battlerId) || gBattleMons[battlerId].species == SPECIES_SHEDINJA) + { + return gBattleMons[battlerId].hp; + } + else + { + u16 mult = UQ_4_12(1.0/1.5); // placeholder + u16 hp = UQ_4_12_TO_INT((gBattleMons[battlerId].hp * mult) + UQ_4_12_ROUND); + return hp; + } } // Returns the non-Dynamax Max HP of a Pokemon. u16 GetNonDynamaxMaxHP(u16 battlerId) { - if (!IsDynamaxed(battlerId) || gBattleMons[battlerId].species == SPECIES_SHEDINJA) - { - return gBattleMons[battlerId].maxHP; - } - else - { - u16 mult = UQ_4_12(1.0/1.5); // placeholder - u16 maxHP = UQ_4_12_TO_INT((gBattleMons[battlerId].maxHP * mult) + UQ_4_12_ROUND); - return maxHP; - } + if (!IsDynamaxed(battlerId) || gBattleMons[battlerId].species == SPECIES_SHEDINJA) + { + return gBattleMons[battlerId].maxHP; + } + else + { + u16 mult = UQ_4_12(1.0/1.5); // placeholder + u16 maxHP = UQ_4_12_TO_INT((gBattleMons[battlerId].maxHP * mult) + UQ_4_12_ROUND); + return maxHP; + } } // Sets flags used for Dynamaxing and checks Gigantamax forms. void PrepareBattlerForDynamax(u16 battlerId) { - u8 side = GetBattlerSide(battlerId); - u16 newSpecies; + u8 side = GetBattlerSide(battlerId); + u16 newSpecies; - gBattleStruct->dynamax.alreadyDynamaxed[side] = TRUE; - gBattleStruct->dynamax.dynamaxed[battlerId] = TRUE; - gBattleStruct->dynamax.dynamaxTurns[battlerId] = DYNAMAX_TURNS; + gBattleStruct->dynamax.alreadyDynamaxed[side] = TRUE; + gBattleStruct->dynamax.dynamaxed[battlerId] = TRUE; + gBattleStruct->dynamax.dynamaxTurns[battlerId] = DYNAMAX_TURNS; - // Substitute is removed upon Dynamaxing. - gBattleMons[battlerId].status2 &= ~STATUS2_SUBSTITUTE; - ClearBehindSubstituteBit(battlerId); + // Substitute is removed upon Dynamaxing. + gBattleMons[battlerId].status2 &= ~STATUS2_SUBSTITUTE; + ClearBehindSubstituteBit(battlerId); - // Choiced Moves are reset upon Dynamaxing. - gBattleStruct->choicedMove[battlerId] = MOVE_NONE; + // Choiced Moves are reset upon Dynamaxing. + gBattleStruct->choicedMove[battlerId] = MOVE_NONE; - // Try Gigantamax form change. - TryBattleFormChange(battlerId, FORM_CHANGE_BATTLE_GIGANTAMAX); + // Try Gigantamax form change. + TryBattleFormChange(battlerId, FORM_CHANGE_BATTLE_GIGANTAMAX); } // Unsets the flags used for Dynamaxing and reverts max HP if needed. void UndoDynamax(u16 battlerId) { - u8 side = GetBattlerSide(battlerId); - // Revert HP and try form reversion if battler is Dynamaxed. - if (IsDynamaxed(battlerId)) - { - struct Pokemon *party = (side == B_SIDE_PLAYER) ? gPlayerParty : gEnemyParty; - u16 mult = UQ_4_12(1.0/1.5); // placeholder - u16 hp = UQ_4_12_TO_INT((gBattleMons[battlerId].hp * mult + 1) + UQ_4_12_ROUND); // round up - SetMonData(&party[gBattlerPartyIndexes[battlerId]], MON_DATA_HP, &hp); - TryBattleFormChange(battlerId, FORM_CHANGE_BATTLE_SWITCH); - } - // Makes sure there are no Dynamax flags set, including on switch / faint. - gBattleStruct->dynamax.dynamaxed[battlerId] = FALSE; - gBattleStruct->dynamax.dynamaxTurns[battlerId] = 0; + u8 side = GetBattlerSide(battlerId); + // Revert HP and try form reversion if battler is Dynamaxed. + if (IsDynamaxed(battlerId)) + { + struct Pokemon *party = (side == B_SIDE_PLAYER) ? gPlayerParty : gEnemyParty; + u16 mult = UQ_4_12(1.0/1.5); // placeholder + u16 hp = UQ_4_12_TO_INT((gBattleMons[battlerId].hp * mult + 1) + UQ_4_12_ROUND); // round up + SetMonData(&party[gBattlerPartyIndexes[battlerId]], MON_DATA_HP, &hp); + TryBattleFormChange(battlerId, FORM_CHANGE_BATTLE_SWITCH); + } + // Makes sure there are no Dynamax flags set, including on switch / faint. + gBattleStruct->dynamax.dynamaxed[battlerId] = FALSE; + gBattleStruct->dynamax.dynamaxTurns[battlerId] = 0; } // Weight-based moves (and some other moves in Raids) are blocked by Dynamax. bool32 IsMoveBlockedByDynamax(u16 move) { - // TODO: Raid moves - switch (gBattleMoves[move].effect) - { - case EFFECT_HEAT_CRASH: - case EFFECT_LOW_KICK: - return TRUE; - } - return FALSE; + // TODO: Raid moves + switch (gBattleMoves[move].effect) + { + case EFFECT_HEAT_CRASH: + case EFFECT_LOW_KICK: + return TRUE; + } + return FALSE; } // Returns whether a move should be converted into a Max Move. bool32 ShouldUseMaxMove(u16 battlerId, u16 baseMove) { // TODO: Raids - //if (IsRaidBoss(battlerId)) - // return !IsRaidBossUsingRegularMove(battlerId, baseMove); - return IsDynamaxed(battlerId) || gBattleStruct->dynamax.toDynamax[battlerId]; + //if (IsRaidBoss(battlerId)) + // return !IsRaidBossUsingRegularMove(battlerId, baseMove); + return IsDynamaxed(battlerId) || gBattleStruct->dynamax.toDynamax[battlerId]; } static u16 GetTypeBasedMaxMove(u16 battlerId, u16 type) { - u32 species; - if (GetBattlerSide(battlerId) == B_SIDE_PLAYER) - species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES, NULL); - else - species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES, NULL); + u32 species; + if (GetBattlerSide(battlerId) == B_SIDE_PLAYER) + species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES, NULL); + else + species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES, NULL); - // Gigantamax check - if (species >= (SPECIES_VENUSAUR_GMAX) - && sGMaxMoveTable[species - (SPECIES_VENUSAUR_GMAX)].moveType == type) - return sGMaxMoveTable[species - (SPECIES_VENUSAUR_GMAX)].gmaxMove; + // Gigantamax check + if (species >= (SPECIES_VENUSAUR_GMAX) + && sGMaxMoveTable[species - (SPECIES_VENUSAUR_GMAX)].moveType == type) + return sGMaxMoveTable[species - (SPECIES_VENUSAUR_GMAX)].gmaxMove; - // regular Max Move - else - { - return sMaxMoveTable[type]; - } + // regular Max Move + else + { + return sMaxMoveTable[type]; + } } // Returns the appropriate Max Move or G-Max Move for a battler to use. u16 GetMaxMove(u16 battlerId, u16 baseMove) { - u16 move = baseMove; - if (baseMove == MOVE_NONE) // for move display - { - return MOVE_NONE; - } - else if (baseMove == MOVE_STRUGGLE) - { - return MOVE_STRUGGLE; - } - else if (gBattleMoves[baseMove].split == SPLIT_STATUS) + u16 move = baseMove; + if (baseMove == MOVE_NONE) // for move display { - move = MOVE_MAX_GUARD; + return MOVE_NONE; } - else if (gBattleStruct->dynamicMoveType) // unsure of how to deal with Hidden Power - { - move = GetTypeBasedMaxMove(battlerId, gBattleStruct->dynamicMoveType & DYNAMIC_TYPE_MASK); - gBattleStruct->dynamax.splits[battlerId] = gBattleMoves[baseMove].split; - } - else + else if (baseMove == MOVE_STRUGGLE) { - move = GetTypeBasedMaxMove(battlerId, gBattleMoves[baseMove].type); + return MOVE_STRUGGLE; + } + else if (gBattleMoves[baseMove].split == SPLIT_STATUS) + { + move = MOVE_MAX_GUARD; + } + else if (gBattleStruct->dynamicMoveType) // unsure of how to deal with Hidden Power + { + move = GetTypeBasedMaxMove(battlerId, gBattleStruct->dynamicMoveType & DYNAMIC_TYPE_MASK); + gBattleStruct->dynamax.splits[battlerId] = gBattleMoves[baseMove].split; + } + else + { + move = GetTypeBasedMaxMove(battlerId, gBattleMoves[baseMove].type); gBattleStruct->dynamax.splits[battlerId] = gBattleMoves[baseMove].split; } - return move; + return move; } // Gets the base power of a Max Move. u8 GetMaxMovePower(u16 move) { - // G-Max Drum Solo, G-Max Hydrosnipe, and G-Max Fireball always have 160 base power. - if (gBattleMoves[GetMaxMove(gBattlerAttacker, move)].argument == MAX_EFFECT_FIXED_POWER) - return 160; - - // Some moves are exceptions to the general rules below. - switch (move) - { - case MOVE_CRUSH_GRIP: - case MOVE_WRING_OUT: - case MOVE_MAGNITUDE: - case MOVE_DOUBLE_IRON_BASH: - case MOVE_TRIPLE_AXEL: - return 140; - case MOVE_PIN_MISSILE: - case MOVE_POWER_TRIP: - case MOVE_PUNISHMENT: - case MOVE_DRAGON_DARTS: - case MOVE_DUAL_CHOP: - case MOVE_ELECTRO_BALL: - case MOVE_HEAT_CRASH: - case MOVE_BULLET_SEED: - case MOVE_GRASS_KNOT: - case MOVE_BONEMERANG: - case MOVE_BONE_RUSH: - case MOVE_FISSURE: - case MOVE_ICICLE_SPEAR: - case MOVE_SHEER_COLD: - case MOVE_WEATHER_BALL: - case MOVE_TAIL_SLAP: - case MOVE_GUILLOTINE: - case MOVE_HORN_DRILL: - case MOVE_FLAIL: - case MOVE_RETURN: - case MOVE_FRUSTRATION: - case MOVE_NATURAL_GIFT: - case MOVE_TRUMP_CARD: - case MOVE_STORED_POWER: - case MOVE_ROCK_BLAST: - case MOVE_GEAR_GRIND: - case MOVE_GYRO_BALL: - case MOVE_HEAVY_SLAM: - case MOVE_DUAL_WINGBEAT: - case MOVE_SCALE_SHOT: - case MOVE_TERRAIN_PULSE: - return 130; - case MOVE_DOUBLE_HIT: - case MOVE_SPIKE_CANNON: - return 120; - case MOVE_TWINEEDLE: - case MOVE_BEAT_UP: - case MOVE_FLING: - case MOVE_DRAGON_RAGE: - case MOVE_NATURES_MADNESS: - case MOVE_NIGHT_SHADE: - case MOVE_COMET_PUNCH: - case MOVE_FURY_SWIPES: - case MOVE_SONIC_BOOM: - case MOVE_BIDE: - case MOVE_SUPER_FANG: - case MOVE_PRESENT: - case MOVE_SPIT_UP: - case MOVE_PSYWAVE: - case MOVE_MIRROR_COAT: - case MOVE_METAL_BURST: - case MOVE_LOW_KICK: - case MOVE_REVERSAL: - case MOVE_FINAL_GAMBIT: - return 100; - case MOVE_DOUBLE_KICK: - case MOVE_TRIPLE_KICK: - return 80; - case MOVE_COUNTER: - case MOVE_SEISMIC_TOSS: - return 75; - } // TODO: maybe bring back gMaxMovePowers lol + // G-Max Drum Solo, G-Max Hydrosnipe, and G-Max Fireball always have 160 base power. + if (gBattleMoves[GetMaxMove(gBattlerAttacker, move)].argument == MAX_EFFECT_FIXED_POWER) + return 160; + + // Some moves are exceptions to the general rules below. + switch (move) + { + case MOVE_CRUSH_GRIP: + case MOVE_WRING_OUT: + case MOVE_MAGNITUDE: + case MOVE_DOUBLE_IRON_BASH: + case MOVE_TRIPLE_AXEL: + return 140; + case MOVE_PIN_MISSILE: + case MOVE_POWER_TRIP: + case MOVE_PUNISHMENT: + case MOVE_DRAGON_DARTS: + case MOVE_DUAL_CHOP: + case MOVE_ELECTRO_BALL: + case MOVE_HEAT_CRASH: + case MOVE_BULLET_SEED: + case MOVE_GRASS_KNOT: + case MOVE_BONEMERANG: + case MOVE_BONE_RUSH: + case MOVE_FISSURE: + case MOVE_ICICLE_SPEAR: + case MOVE_SHEER_COLD: + case MOVE_WEATHER_BALL: + case MOVE_TAIL_SLAP: + case MOVE_GUILLOTINE: + case MOVE_HORN_DRILL: + case MOVE_FLAIL: + case MOVE_RETURN: + case MOVE_FRUSTRATION: + case MOVE_NATURAL_GIFT: + case MOVE_TRUMP_CARD: + case MOVE_STORED_POWER: + case MOVE_ROCK_BLAST: + case MOVE_GEAR_GRIND: + case MOVE_GYRO_BALL: + case MOVE_HEAVY_SLAM: + case MOVE_DUAL_WINGBEAT: + case MOVE_SCALE_SHOT: + case MOVE_TERRAIN_PULSE: + return 130; + case MOVE_DOUBLE_HIT: + case MOVE_SPIKE_CANNON: + return 120; + case MOVE_TWINEEDLE: + case MOVE_BEAT_UP: + case MOVE_FLING: + case MOVE_DRAGON_RAGE: + case MOVE_NATURES_MADNESS: + case MOVE_NIGHT_SHADE: + case MOVE_COMET_PUNCH: + case MOVE_FURY_SWIPES: + case MOVE_SONIC_BOOM: + case MOVE_BIDE: + case MOVE_SUPER_FANG: + case MOVE_PRESENT: + case MOVE_SPIT_UP: + case MOVE_PSYWAVE: + case MOVE_MIRROR_COAT: + case MOVE_METAL_BURST: + case MOVE_LOW_KICK: + case MOVE_REVERSAL: + case MOVE_FINAL_GAMBIT: + return 100; + case MOVE_DOUBLE_KICK: + case MOVE_TRIPLE_KICK: + return 80; + case MOVE_COUNTER: + case MOVE_SEISMIC_TOSS: + return 75; + } // TODO: maybe bring back gMaxMovePowers lol - // Fighting and Poison Max Moves are weaker than other types. - if (gBattleMoves[move].type == TYPE_FIGHTING - || gBattleMoves[move].type == TYPE_POISON - || move == MOVE_MULTI_ATTACK) - switch (gBattleMoves[move].power) - { - default: - case 0 ... 40: return 70; - case 45 ... 50: return 75; - case 55 ... 60: return 80; - case 65 ... 70: return 85; - case 75 ... 100: return 90; - case 110 ... 140: return 95; - case 150 ... 250: return 100; - } - else - switch (gBattleMoves[move].power) - { - default: - case 0 ... 40: return 90; - case 45 ... 50: return 100; - case 55 ... 60: return 110; - case 65 ... 70: return 120; - case 75 ... 100: return 130; - case 110 ... 140: return 140; - case 150 ... 250: return 150; - } + // Fighting and Poison Max Moves are weaker than other types. + if (gBattleMoves[move].type == TYPE_FIGHTING + || gBattleMoves[move].type == TYPE_POISON + || move == MOVE_MULTI_ATTACK) + switch (gBattleMoves[move].power) + { + default: + case 0 ... 40: return 70; + case 45 ... 50: return 75; + case 55 ... 60: return 80; + case 65 ... 70: return 85; + case 75 ... 100: return 90; + case 110 ... 140: return 95; + case 150 ... 250: return 100; + } + else + switch (gBattleMoves[move].power) + { + default: + case 0 ... 40: return 90; + case 45 ... 50: return 100; + case 55 ... 60: return 110; + case 65 ... 70: return 120; + case 75 ... 100: return 130; + case 110 ... 140: return 140; + case 150 ... 250: return 150; + } } // Returns whether a move is a Max Move or not. bool32 IsMaxMove(u16 move) { - return move >= FIRST_MAX_MOVE && move <= LAST_MAX_MOVE; + return move >= FIRST_MAX_MOVE && move <= LAST_MAX_MOVE; } // Returns the full name of a Max Move for the move usage text. @@ -403,367 +403,367 @@ const u8 *GetMaxMoveName(u16 move) // Assigns the multistring to use for the "Damage Non- Types" G-Max effect. void ChooseDamageNonTypesString(u8 type) { - switch (type) { - case TYPE_GRASS: - gBattleCommunication[MULTISTRING_CHOOSER] = 0; - break; - case TYPE_WATER: - gBattleCommunication[MULTISTRING_CHOOSER] = 1; - break; - case TYPE_FIRE: - gBattleCommunication[MULTISTRING_CHOOSER] = 2; - break; - case TYPE_ROCK: - gBattleCommunication[MULTISTRING_CHOOSER] = 3; - break; - } + switch (type) { + case TYPE_GRASS: + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + break; + case TYPE_WATER: + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + break; + case TYPE_FIRE: + gBattleCommunication[MULTISTRING_CHOOSER] = 2; + break; + case TYPE_ROCK: + gBattleCommunication[MULTISTRING_CHOOSER] = 3; + break; + } } // Returns the status effect that should be applied by a G-Max Move. u32 GetMaxMoveStatusEffect(u16 move) { - u8 maxEffect = gBattleMoves[move].argument; - switch (maxEffect) - { - // Status 1 - case MAX_EFFECT_PARALYZE_FOES: - return STATUS1_PARALYSIS; - case MAX_EFFECT_POISON_FOES: - return STATUS1_POISON; - case MAX_EFFECT_POISON_PARALYZE_FOES: - if (Random() % 2) - return STATUS1_POISON; - else - return STATUS1_PARALYSIS; - case MAX_EFFECT_EFFECT_SPORE_FOES: - { - u8 effect = Random() % 3; - if (effect == 0) - return STATUS1_PARALYSIS; - else if (effect == 1) - return STATUS1_POISON; - else - return STATUS1_SLEEP; - } - // Status 2 - case MAX_EFFECT_CONFUSE_FOES: - case MAX_EFFECT_CONFUSE_FOES_PAY_DAY: - return STATUS2_CONFUSION; - case MAX_EFFECT_INFATUATE_FOES: - return STATUS2_INFATUATION; - case MAX_EFFECT_MEAN_LOOK: - return STATUS2_ESCAPE_PREVENTION; - case MAX_EFFECT_TORMENT_FOES: - return STATUS2_TORMENT; - } + u8 maxEffect = gBattleMoves[move].argument; + switch (maxEffect) + { + // Status 1 + case MAX_EFFECT_PARALYZE_FOES: + return STATUS1_PARALYSIS; + case MAX_EFFECT_POISON_FOES: + return STATUS1_POISON; + case MAX_EFFECT_POISON_PARALYZE_FOES: + if (Random() % 2) + return STATUS1_POISON; + else + return STATUS1_PARALYSIS; + case MAX_EFFECT_EFFECT_SPORE_FOES: + { + u8 effect = Random() % 3; + if (effect == 0) + return STATUS1_PARALYSIS; + else if (effect == 1) + return STATUS1_POISON; + else + return STATUS1_SLEEP; + } + // Status 2 + case MAX_EFFECT_CONFUSE_FOES: + case MAX_EFFECT_CONFUSE_FOES_PAY_DAY: + return STATUS2_CONFUSION; + case MAX_EFFECT_INFATUATE_FOES: + return STATUS2_INFATUATION; + case MAX_EFFECT_MEAN_LOOK: + return STATUS2_ESCAPE_PREVENTION; + case MAX_EFFECT_TORMENT_FOES: + return STATUS2_TORMENT; + } } // Activates the secondary effect of a Max Move. u16 SetMaxMoveEffect(u16 move) { - u16 effect = 0; - u8 maxEffect = gBattleMoves[move].argument; + u16 effect = 0; + u8 maxEffect = gBattleMoves[move].argument; - // Don't continue if the move didn't land. - if (gMoveResultFlags & MOVE_RESULT_NO_EFFECT) - return effect; - - switch (maxEffect) - { - case MAX_EFFECT_RAISE_TEAM_ATTACK: - case MAX_EFFECT_RAISE_TEAM_DEFENSE: - case MAX_EFFECT_RAISE_TEAM_SPEED: - case MAX_EFFECT_RAISE_TEAM_SP_ATK: - case MAX_EFFECT_RAISE_TEAM_SP_DEF: - if (!NoAliveMonsForEitherParty()) - { - // Max Effects are ordered by stat ID. - SET_STATCHANGER(gBattleMoves[gCurrentMove].argument, 1, FALSE); - BattleScriptPush(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = BattleScript_EffectRaiseStatAllies; - effect++; - } - break; - case MAX_EFFECT_LOWER_ATTACK: - case MAX_EFFECT_LOWER_DEFENSE: - case MAX_EFFECT_LOWER_SPEED: - case MAX_EFFECT_LOWER_SP_ATK: - case MAX_EFFECT_LOWER_SP_DEF: - case MAX_EFFECT_LOWER_SPEED_2_FOES: - case MAX_EFFECT_LOWER_EVASIVENESS_FOES: - if (!NoAliveMonsForEitherParty()) - { - u8 statId = 0; - u8 stage = 1; - switch (maxEffect) - { - case MAX_EFFECT_LOWER_SPEED_2_FOES: - statId = STAT_SPEED; - stage = 2; - break; - case MAX_EFFECT_LOWER_EVASIVENESS_FOES: - statId = STAT_EVASION; - break; - default: - // Max Effects are ordered by stat ID. - statId = gBattleMoves[gCurrentMove].argument - MAX_EFFECT_LOWER_ATTACK + 1; - break; - } - SET_STATCHANGER(statId, stage, TRUE); - BattleScriptPush(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = BattleScript_EffectLowerStatFoes; - effect++; - } - break; - case MAX_EFFECT_SUN: - case MAX_EFFECT_RAIN: - case MAX_EFFECT_SANDSTORM: - case MAX_EFFECT_HAIL: - { - u8 weather, msg; - switch (maxEffect) - { - case MAX_EFFECT_SUN: - weather = ENUM_WEATHER_SUN; - msg = B_MSG_STARTED_SUNLIGHT; - break; - case MAX_EFFECT_RAIN: - weather = ENUM_WEATHER_RAIN; - msg = B_MSG_STARTED_RAIN; - break; - case MAX_EFFECT_SANDSTORM: - weather = ENUM_WEATHER_SANDSTORM; - msg = B_MSG_STARTED_SANDSTORM; - break; - case MAX_EFFECT_HAIL: - weather = ENUM_WEATHER_HAIL; - msg = B_MSG_STARTED_HAIL; - break; - } - if (TryChangeBattleWeather(gBattlerAttacker, weather, FALSE)) - { - gBattleCommunication[MULTISTRING_CHOOSER] = msg; - BattleScriptPush(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = BattleScript_EffectSetWeather; - effect++; - } - break; - } - case MAX_EFFECT_MISTY_TERRAIN: - case MAX_EFFECT_GRASSY_TERRAIN: - case MAX_EFFECT_ELECTRIC_TERRAIN: - case MAX_EFFECT_PSYCHIC_TERRAIN: - { - u32 statusFlag = 0; - u8 *timer = NULL; - switch (gBattleMoves[gCurrentMove].argument) - { - case MAX_EFFECT_MISTY_TERRAIN: - statusFlag = STATUS_FIELD_MISTY_TERRAIN, timer = &gFieldTimers.terrainTimer; - gBattleCommunication[MULTISTRING_CHOOSER] = 0; - break; - case MAX_EFFECT_GRASSY_TERRAIN: - statusFlag = STATUS_FIELD_GRASSY_TERRAIN, timer = &gFieldTimers.terrainTimer; - gBattleCommunication[MULTISTRING_CHOOSER] = 1; - break; - case MAX_EFFECT_ELECTRIC_TERRAIN: - statusFlag = STATUS_FIELD_ELECTRIC_TERRAIN, timer = &gFieldTimers.terrainTimer; - gBattleCommunication[MULTISTRING_CHOOSER] = 2; - break; - case MAX_EFFECT_PSYCHIC_TERRAIN: - statusFlag = STATUS_FIELD_PSYCHIC_TERRAIN, timer = &gFieldTimers.terrainTimer; - gBattleCommunication[MULTISTRING_CHOOSER] = 3; - break; - } - if (!(gFieldStatuses & statusFlag) && statusFlag != 0) - { - gFieldStatuses &= ~STATUS_FIELD_TERRAIN_ANY; - gFieldStatuses |= statusFlag; - if (GetBattlerHoldEffect(gBattlerAttacker, TRUE) == HOLD_EFFECT_TERRAIN_EXTENDER) - *timer = 8; - else - *timer = 5; - BattleScriptPush(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = BattleScript_EffectSetTerrain; - } - break; - } - case MAX_EFFECT_VINE_LASH: - case MAX_EFFECT_CANNONADE: - case MAX_EFFECT_WILDFIRE: - case MAX_EFFECT_VOLCALITH: - { - u8 side = GetBattlerSide(gBattlerTarget); - if (!(gSideStatuses[side] & SIDE_STATUS_DAMAGE_NON_TYPES)) - { - gSideStatuses[side] |= SIDE_STATUS_DAMAGE_NON_TYPES; - gSideTimers[side].damageNonTypesTimer = 5; // damage is dealt for 4 turns, ends on 5th - gSideTimers[side].damageNonTypesType = gBattleMoves[gCurrentMove].type; - BattleScriptPush(gBattlescriptCurrInstr + 1); - ChooseDamageNonTypesString(gBattleMoves[gCurrentMove].type); - gBattlescriptCurrInstr = BattleScript_DamageNonTypesStarts; - effect++; - } - break; - } - case MAX_EFFECT_STEALTH_ROCK: - if (!(gSideStatuses[GetBattlerSide(gBattlerTarget)] & SIDE_STATUS_STEALTH_ROCK)) - { - BattleScriptPush(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = BattleScript_StealthRockActivates; - effect++; - } - break; - case MAX_EFFECT_STEELSURGE: - if (!(gSideStatuses[GetBattlerSide(gBattlerTarget)] & SIDE_STATUS_STEELSURGE)) - { - BattleScriptPush(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = BattleScript_SteelsurgeActivates; - effect++; - } - break; - case MAX_EFFECT_DEFOG: - if (gSideStatuses[GetBattlerSide(gBattlerTarget)] & SIDE_STATUS_SCREEN_ANY - || gSideStatuses[GetBattlerSide(gBattlerTarget)] & SIDE_STATUS_HAZARDS_ANY - || gSideStatuses[GetBattlerSide(gBattlerAttacker)] & SIDE_STATUS_HAZARDS_ANY - || gFieldStatuses & STATUS_FIELD_TERRAIN_ANY) - { - BattleScriptPush(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = BattleScript_DefogTryHazards; - effect++; - } - break; - case MAX_EFFECT_AURORA_VEIL: - if (!(gSideStatuses[GetBattlerSide(gBattlerAttacker)] & SIDE_STATUS_AURORA_VEIL)) - { - gSideStatuses[GetBattlerSide(gBattlerAttacker)] |= SIDE_STATUS_AURORA_VEIL; - if (GetBattlerHoldEffect(gBattlerAttacker, TRUE) == HOLD_EFFECT_LIGHT_CLAY) - gSideTimers[GetBattlerSide(gBattlerAttacker)].auroraVeilTimer = 8; - else - gSideTimers[GetBattlerSide(gBattlerAttacker)].auroraVeilTimer = 5; - gSideTimers[GetBattlerSide(gBattlerAttacker)].auroraVeilBattlerId = gBattlerAttacker; - gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_SET_SAFEGUARD; - BattleScriptPush(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = BattleScript_EffectAuroraVeilSuccess; - effect++; - } - break; - case MAX_EFFECT_GRAVITY: - if (!(gFieldStatuses & STATUS_FIELD_GRAVITY)) - { - gFieldStatuses |= STATUS_FIELD_GRAVITY; - gFieldTimers.gravityTimer = 5; - BattleScriptPush(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = BattleScript_EffectGravitySuccess; - effect++; - } - break; - case MAX_EFFECT_SANDBLAST_FOES: - case MAX_EFFECT_FIRE_SPIN_FOES: - { - // Affects both opponents, but doesn't print strings so we can handle it here. - u8 battler; - for (battler = 0; battler < MAX_BATTLERS_COUNT; ++battler) - { - if (GetBattlerSide(battler) != GetBattlerSide(gBattlerTarget)) - continue; - if (!(gBattleMons[battler].status2 & STATUS2_WRAPPED)) - { - gBattleMons[battler].status2 |= STATUS2_WRAPPED; - if (GetBattlerHoldEffect(gBattlerAttacker, TRUE) == HOLD_EFFECT_GRIP_CLAW) - #if B_BINDING_TURNS >= GEN_5 - gDisableStructs[battler].wrapTurns = 7; - else - gDisableStructs[battler].wrapTurns = (Random() % 2) + 4; - #else - gDisableStructs[battler].wrapTurns = 5; - else - gDisableStructs[battler].wrapTurns = (Random() % 4) + 2; - #endif - // The Wrap effect does not expire when the user switches, so here's some cheese. - gBattleStruct->wrappedBy[battler] = gBattlerTarget; - if (maxEffect == MAX_EFFECT_SANDBLAST_FOES) - gBattleStruct->wrappedMove[battler] = MOVE_SAND_TOMB; - else - gBattleStruct->wrappedMove[battler] = MOVE_FIRE_SPIN; - } - } - break; - } - case MAX_EFFECT_YAWN_FOE: - if (!(gStatuses3[gBattlerTarget] & STATUS3_YAWN) - && CanSleep(gBattlerTarget) - && Random() % 2) // 50% chance of success - { - gStatuses3[gBattlerTarget] |= STATUS3_YAWN_TURN(2); - BattleScriptPush(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = BattleScript_EffectYawnSuccess; - effect++; - } - break; - case MAX_EFFECT_SPITE: - if (gLastMoves[gBattlerTarget] != MOVE_NONE - && gLastMoves[gBattlerTarget] != MOVE_UNAVAILABLE) - { - BattleScriptPush(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = BattleScript_EffectTryReducePP; - effect++; - } - break; - case MAX_EFFECT_PARALYZE_FOES: - case MAX_EFFECT_POISON_FOES: - case MAX_EFFECT_POISON_PARALYZE_FOES: - case MAX_EFFECT_EFFECT_SPORE_FOES: - BattleScriptPush(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = BattleScript_EffectStatus1Foes; - effect++; - break; - case MAX_EFFECT_CONFUSE_FOES_PAY_DAY: - if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) - { - u16 payday = gPaydayMoney; - gPaydayMoney += (gBattleMons[gBattlerAttacker].level * 100); - if (payday > gPaydayMoney) - gPaydayMoney = 0xFFFF; - gBattleCommunication[CURSOR_POSITION] = 1; // add "Coins scattered." message - } - // fall through - case MAX_EFFECT_CONFUSE_FOES: - case MAX_EFFECT_INFATUATE_FOES: - case MAX_EFFECT_TORMENT_FOES: - case MAX_EFFECT_MEAN_LOOK: - BattleScriptPush(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = BattleScript_EffectStatus2Foes; - effect++; - break; - case MAX_EFFECT_CRIT_PLUS: - gBattleStruct->bonusCritStages[gBattlerAttacker]++; - gBattleStruct->bonusCritStages[BATTLE_PARTNER(gBattlerAttacker)]++; - BattleScriptPush(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = BattleScript_EffectRaiseCritAlliesAnim; - effect++; - break; - case MAX_EFFECT_HEAL_TEAM: - BattleScriptPush(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = BattleScript_EffectHealOneSixthAllies; - effect++; - break; - case MAX_EFFECT_AROMATHERAPY: - BattleScriptPush(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = BattleScript_EffectCureStatusAllies; - effect++; - break; - case MAX_EFFECT_RECYCLE_BERRIES: - if (Random() % 2) // 50% chance of success - { - BattleScriptPush(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = BattleScript_EffectRecycleBerriesAllies; - effect++; - } - break; + // Don't continue if the move didn't land. + if (gMoveResultFlags & MOVE_RESULT_NO_EFFECT) + return effect; + + switch (maxEffect) + { + case MAX_EFFECT_RAISE_TEAM_ATTACK: + case MAX_EFFECT_RAISE_TEAM_DEFENSE: + case MAX_EFFECT_RAISE_TEAM_SPEED: + case MAX_EFFECT_RAISE_TEAM_SP_ATK: + case MAX_EFFECT_RAISE_TEAM_SP_DEF: + if (!NoAliveMonsForEitherParty()) + { + // Max Effects are ordered by stat ID. + SET_STATCHANGER(gBattleMoves[gCurrentMove].argument, 1, FALSE); + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_EffectRaiseStatAllies; + effect++; + } + break; + case MAX_EFFECT_LOWER_ATTACK: + case MAX_EFFECT_LOWER_DEFENSE: + case MAX_EFFECT_LOWER_SPEED: + case MAX_EFFECT_LOWER_SP_ATK: + case MAX_EFFECT_LOWER_SP_DEF: + case MAX_EFFECT_LOWER_SPEED_2_FOES: + case MAX_EFFECT_LOWER_EVASIVENESS_FOES: + if (!NoAliveMonsForEitherParty()) + { + u8 statId = 0; + u8 stage = 1; + switch (maxEffect) + { + case MAX_EFFECT_LOWER_SPEED_2_FOES: + statId = STAT_SPEED; + stage = 2; + break; + case MAX_EFFECT_LOWER_EVASIVENESS_FOES: + statId = STAT_EVASION; + break; + default: + // Max Effects are ordered by stat ID. + statId = gBattleMoves[gCurrentMove].argument - MAX_EFFECT_LOWER_ATTACK + 1; + break; + } + SET_STATCHANGER(statId, stage, TRUE); + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_EffectLowerStatFoes; + effect++; + } + break; + case MAX_EFFECT_SUN: + case MAX_EFFECT_RAIN: + case MAX_EFFECT_SANDSTORM: + case MAX_EFFECT_HAIL: + { + u8 weather, msg; + switch (maxEffect) + { + case MAX_EFFECT_SUN: + weather = ENUM_WEATHER_SUN; + msg = B_MSG_STARTED_SUNLIGHT; + break; + case MAX_EFFECT_RAIN: + weather = ENUM_WEATHER_RAIN; + msg = B_MSG_STARTED_RAIN; + break; + case MAX_EFFECT_SANDSTORM: + weather = ENUM_WEATHER_SANDSTORM; + msg = B_MSG_STARTED_SANDSTORM; + break; + case MAX_EFFECT_HAIL: + weather = ENUM_WEATHER_HAIL; + msg = B_MSG_STARTED_HAIL; + break; + } + if (TryChangeBattleWeather(gBattlerAttacker, weather, FALSE)) + { + gBattleCommunication[MULTISTRING_CHOOSER] = msg; + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_EffectSetWeather; + effect++; + } + break; + } + case MAX_EFFECT_MISTY_TERRAIN: + case MAX_EFFECT_GRASSY_TERRAIN: + case MAX_EFFECT_ELECTRIC_TERRAIN: + case MAX_EFFECT_PSYCHIC_TERRAIN: + { + u32 statusFlag = 0; + u8 *timer = NULL; + switch (gBattleMoves[gCurrentMove].argument) + { + case MAX_EFFECT_MISTY_TERRAIN: + statusFlag = STATUS_FIELD_MISTY_TERRAIN, timer = &gFieldTimers.terrainTimer; + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + break; + case MAX_EFFECT_GRASSY_TERRAIN: + statusFlag = STATUS_FIELD_GRASSY_TERRAIN, timer = &gFieldTimers.terrainTimer; + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + break; + case MAX_EFFECT_ELECTRIC_TERRAIN: + statusFlag = STATUS_FIELD_ELECTRIC_TERRAIN, timer = &gFieldTimers.terrainTimer; + gBattleCommunication[MULTISTRING_CHOOSER] = 2; + break; + case MAX_EFFECT_PSYCHIC_TERRAIN: + statusFlag = STATUS_FIELD_PSYCHIC_TERRAIN, timer = &gFieldTimers.terrainTimer; + gBattleCommunication[MULTISTRING_CHOOSER] = 3; + break; + } + if (!(gFieldStatuses & statusFlag) && statusFlag != 0) + { + gFieldStatuses &= ~STATUS_FIELD_TERRAIN_ANY; + gFieldStatuses |= statusFlag; + if (GetBattlerHoldEffect(gBattlerAttacker, TRUE) == HOLD_EFFECT_TERRAIN_EXTENDER) + *timer = 8; + else + *timer = 5; + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_EffectSetTerrain; + } + break; + } + case MAX_EFFECT_VINE_LASH: + case MAX_EFFECT_CANNONADE: + case MAX_EFFECT_WILDFIRE: + case MAX_EFFECT_VOLCALITH: + { + u8 side = GetBattlerSide(gBattlerTarget); + if (!(gSideStatuses[side] & SIDE_STATUS_DAMAGE_NON_TYPES)) + { + gSideStatuses[side] |= SIDE_STATUS_DAMAGE_NON_TYPES; + gSideTimers[side].damageNonTypesTimer = 5; // damage is dealt for 4 turns, ends on 5th + gSideTimers[side].damageNonTypesType = gBattleMoves[gCurrentMove].type; + BattleScriptPush(gBattlescriptCurrInstr + 1); + ChooseDamageNonTypesString(gBattleMoves[gCurrentMove].type); + gBattlescriptCurrInstr = BattleScript_DamageNonTypesStarts; + effect++; + } + break; + } + case MAX_EFFECT_STEALTH_ROCK: + if (!(gSideStatuses[GetBattlerSide(gBattlerTarget)] & SIDE_STATUS_STEALTH_ROCK)) + { + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_StealthRockActivates; + effect++; + } + break; + case MAX_EFFECT_STEELSURGE: + if (!(gSideStatuses[GetBattlerSide(gBattlerTarget)] & SIDE_STATUS_STEELSURGE)) + { + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_SteelsurgeActivates; + effect++; + } + break; + case MAX_EFFECT_DEFOG: + if (gSideStatuses[GetBattlerSide(gBattlerTarget)] & SIDE_STATUS_SCREEN_ANY + || gSideStatuses[GetBattlerSide(gBattlerTarget)] & SIDE_STATUS_HAZARDS_ANY + || gSideStatuses[GetBattlerSide(gBattlerAttacker)] & SIDE_STATUS_HAZARDS_ANY + || gFieldStatuses & STATUS_FIELD_TERRAIN_ANY) + { + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_DefogTryHazards; + effect++; + } + break; + case MAX_EFFECT_AURORA_VEIL: + if (!(gSideStatuses[GetBattlerSide(gBattlerAttacker)] & SIDE_STATUS_AURORA_VEIL)) + { + gSideStatuses[GetBattlerSide(gBattlerAttacker)] |= SIDE_STATUS_AURORA_VEIL; + if (GetBattlerHoldEffect(gBattlerAttacker, TRUE) == HOLD_EFFECT_LIGHT_CLAY) + gSideTimers[GetBattlerSide(gBattlerAttacker)].auroraVeilTimer = 8; + else + gSideTimers[GetBattlerSide(gBattlerAttacker)].auroraVeilTimer = 5; + gSideTimers[GetBattlerSide(gBattlerAttacker)].auroraVeilBattlerId = gBattlerAttacker; + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_SET_SAFEGUARD; + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_EffectAuroraVeilSuccess; + effect++; + } + break; + case MAX_EFFECT_GRAVITY: + if (!(gFieldStatuses & STATUS_FIELD_GRAVITY)) + { + gFieldStatuses |= STATUS_FIELD_GRAVITY; + gFieldTimers.gravityTimer = 5; + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_EffectGravitySuccess; + effect++; + } + break; + case MAX_EFFECT_SANDBLAST_FOES: + case MAX_EFFECT_FIRE_SPIN_FOES: + { + // Affects both opponents, but doesn't print strings so we can handle it here. + u8 battler; + for (battler = 0; battler < MAX_BATTLERS_COUNT; ++battler) + { + if (GetBattlerSide(battler) != GetBattlerSide(gBattlerTarget)) + continue; + if (!(gBattleMons[battler].status2 & STATUS2_WRAPPED)) + { + gBattleMons[battler].status2 |= STATUS2_WRAPPED; + if (GetBattlerHoldEffect(gBattlerAttacker, TRUE) == HOLD_EFFECT_GRIP_CLAW) + #if B_BINDING_TURNS >= GEN_5 + gDisableStructs[battler].wrapTurns = 7; + else + gDisableStructs[battler].wrapTurns = (Random() % 2) + 4; + #else + gDisableStructs[battler].wrapTurns = 5; + else + gDisableStructs[battler].wrapTurns = (Random() % 4) + 2; + #endif + // The Wrap effect does not expire when the user switches, so here's some cheese. + gBattleStruct->wrappedBy[battler] = gBattlerTarget; + if (maxEffect == MAX_EFFECT_SANDBLAST_FOES) + gBattleStruct->wrappedMove[battler] = MOVE_SAND_TOMB; + else + gBattleStruct->wrappedMove[battler] = MOVE_FIRE_SPIN; + } + } + break; + } + case MAX_EFFECT_YAWN_FOE: + if (!(gStatuses3[gBattlerTarget] & STATUS3_YAWN) + && CanSleep(gBattlerTarget) + && Random() % 2) // 50% chance of success + { + gStatuses3[gBattlerTarget] |= STATUS3_YAWN_TURN(2); + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_EffectYawnSuccess; + effect++; + } + break; + case MAX_EFFECT_SPITE: + if (gLastMoves[gBattlerTarget] != MOVE_NONE + && gLastMoves[gBattlerTarget] != MOVE_UNAVAILABLE) + { + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_EffectTryReducePP; + effect++; + } + break; + case MAX_EFFECT_PARALYZE_FOES: + case MAX_EFFECT_POISON_FOES: + case MAX_EFFECT_POISON_PARALYZE_FOES: + case MAX_EFFECT_EFFECT_SPORE_FOES: + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_EffectStatus1Foes; + effect++; + break; + case MAX_EFFECT_CONFUSE_FOES_PAY_DAY: + if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) + { + u16 payday = gPaydayMoney; + gPaydayMoney += (gBattleMons[gBattlerAttacker].level * 100); + if (payday > gPaydayMoney) + gPaydayMoney = 0xFFFF; + gBattleCommunication[CURSOR_POSITION] = 1; // add "Coins scattered." message + } + // fall through + case MAX_EFFECT_CONFUSE_FOES: + case MAX_EFFECT_INFATUATE_FOES: + case MAX_EFFECT_TORMENT_FOES: + case MAX_EFFECT_MEAN_LOOK: + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_EffectStatus2Foes; + effect++; + break; + case MAX_EFFECT_CRIT_PLUS: + gBattleStruct->bonusCritStages[gBattlerAttacker]++; + gBattleStruct->bonusCritStages[BATTLE_PARTNER(gBattlerAttacker)]++; + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_EffectRaiseCritAlliesAnim; + effect++; + break; + case MAX_EFFECT_HEAL_TEAM: + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_EffectHealOneSixthAllies; + effect++; + break; + case MAX_EFFECT_AROMATHERAPY: + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_EffectCureStatusAllies; + effect++; + break; + case MAX_EFFECT_RECYCLE_BERRIES: + if (Random() % 2) // 50% chance of success + { + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_EffectRecycleBerriesAllies; + effect++; + } + break; - } - return effect; + } + return effect; } // DYNAMAX TRIGGER: @@ -1039,9 +1039,9 @@ void DynamaxIndicator_SetVisibilities(u32 healthboxId, bool32 invisible) u32 battlerId = gSprites[healthboxId].hMain_Battler; if (invisible == TRUE) - gSprites[spriteId].invisible = TRUE; + gSprites[spriteId].invisible = TRUE; else // Try visible. - gSprites[spriteId].invisible = DynamaxIndicator_ShouldBeInvisible(battlerId); + gSprites[spriteId].invisible = DynamaxIndicator_ShouldBeInvisible(battlerId); } void DynamaxIndicator_UpdateOamPriorities(u32 healthboxId, u32 oamPriority) @@ -1079,15 +1079,15 @@ void DynamaxIndicator_CreateSprite(u32 battlerId, u32 healthboxSpriteId) y += sIndicatorPositions[position][1]; spriteId = gBattleStruct->dynamax.indicatorSpriteId[battlerId] = CreateSpriteAtEnd(&sSpriteTemplate_DynamaxIndicator, 0, y, 0); - gSprites[spriteId].tBattler = battlerId; - gSprites[spriteId].tPosX = x; - gSprites[spriteId].invisible = TRUE; + gSprites[spriteId].tBattler = battlerId; + gSprites[spriteId].tPosX = x; + gSprites[spriteId].invisible = TRUE; } void DynamaxIndicator_DestroySprite(u32 healthboxSpriteId) { u8 spriteId = DynamaxIndicator_GetSpriteId(healthboxSpriteId); - DestroySprite(&gSprites[spriteId]); + DestroySprite(&gSprites[spriteId]); } static void SpriteCb_DynamaxIndicator(struct Sprite *sprite) From 4e2e3b5e1f32e52d32f4036cd4586ad2fdb20450 Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Sat, 25 Mar 2023 02:04:07 -0300 Subject: [PATCH 053/162] Refactored Max Move power to be based on effect --- src/battle_dynamax.c | 218 +++++++++++++++++++++++++------------------ 1 file changed, 127 insertions(+), 91 deletions(-) diff --git a/src/battle_dynamax.c b/src/battle_dynamax.c index 466c3fb29a..45edeb121d 100644 --- a/src/battle_dynamax.c +++ b/src/battle_dynamax.c @@ -20,6 +20,8 @@ #include "constants/items.h" #include "constants/moves.h" +static u8 GetMaxPowerTier(u16 move); + // Constant Data static const u16 sMaxMoveTable[] = { @@ -277,112 +279,146 @@ u16 GetMaxMove(u16 battlerId, u16 baseMove) return move; } +// First value is for Fighting, Poison and Multi-Attack. The second is for everything else. +enum +{ + MAX_POWER_TIER_1, // 70 or 90 damage + MAX_POWER_TIER_2, // 75 or 100 damage + MAX_POWER_TIER_3, // 80 or 110 damage + MAX_POWER_TIER_4, // 85 or 120 damage + MAX_POWER_TIER_5, // 90 or 130 damage + MAX_POWER_TIER_6, // 95 or 140 damage + MAX_POWER_TIER_7, // 100 or 130 damage + MAX_POWER_TIER_8, // 100 or 150 damage +}; + // Gets the base power of a Max Move. u8 GetMaxMovePower(u16 move) { - // G-Max Drum Solo, G-Max Hydrosnipe, and G-Max Fireball always have 160 base power. + u8 tier; + // G-Max Drum Solo, G-Max Hydrosnipe, and G-Max Fireball always have 160 base power. if (gBattleMoves[GetMaxMove(gBattlerAttacker, move)].argument == MAX_EFFECT_FIXED_POWER) return 160; - - // Some moves are exceptions to the general rules below. + + // Exceptions to all other rules below: switch (move) { - case MOVE_CRUSH_GRIP: - case MOVE_WRING_OUT: - case MOVE_MAGNITUDE: - case MOVE_DOUBLE_IRON_BASH: - case MOVE_TRIPLE_AXEL: - return 140; - case MOVE_PIN_MISSILE: - case MOVE_POWER_TRIP: - case MOVE_PUNISHMENT: - case MOVE_DRAGON_DARTS: - case MOVE_DUAL_CHOP: - case MOVE_ELECTRO_BALL: - case MOVE_HEAT_CRASH: - case MOVE_BULLET_SEED: - case MOVE_GRASS_KNOT: - case MOVE_BONEMERANG: - case MOVE_BONE_RUSH: - case MOVE_FISSURE: - case MOVE_ICICLE_SPEAR: - case MOVE_SHEER_COLD: - case MOVE_WEATHER_BALL: - case MOVE_TAIL_SLAP: - case MOVE_GUILLOTINE: - case MOVE_HORN_DRILL: - case MOVE_FLAIL: - case MOVE_RETURN: - case MOVE_FRUSTRATION: - case MOVE_NATURAL_GIFT: - case MOVE_TRUMP_CARD: - case MOVE_STORED_POWER: - case MOVE_ROCK_BLAST: - case MOVE_GEAR_GRIND: - case MOVE_GYRO_BALL: - case MOVE_HEAVY_SLAM: - case MOVE_DUAL_WINGBEAT: - case MOVE_SCALE_SHOT: - case MOVE_TERRAIN_PULSE: - return 130; - case MOVE_DOUBLE_HIT: - case MOVE_SPIKE_CANNON: - return 120; - case MOVE_TWINEEDLE: - case MOVE_BEAT_UP: - case MOVE_FLING: - case MOVE_DRAGON_RAGE: - case MOVE_NATURES_MADNESS: - case MOVE_NIGHT_SHADE: - case MOVE_COMET_PUNCH: - case MOVE_FURY_SWIPES: - case MOVE_SONIC_BOOM: - case MOVE_BIDE: - case MOVE_SUPER_FANG: - case MOVE_PRESENT: - case MOVE_SPIT_UP: - case MOVE_PSYWAVE: - case MOVE_MIRROR_COAT: - case MOVE_METAL_BURST: - case MOVE_LOW_KICK: - case MOVE_REVERSAL: - case MOVE_FINAL_GAMBIT: - return 100; - case MOVE_DOUBLE_KICK: - case MOVE_TRIPLE_KICK: - return 80; - case MOVE_COUNTER: - case MOVE_SEISMIC_TOSS: - return 75; - } // TODO: maybe bring back gMaxMovePowers lol + case MOVE_TRIPLE_KICK: return 80; + case MOVE_GEAR_GRIND: return 100; + case MOVE_DUAL_WINGBEAT: return 100; + case MOVE_TRIPLE_AXEL: return 140; + } - // Fighting and Poison Max Moves are weaker than other types. + tier = GetMaxPowerTier(move); if (gBattleMoves[move].type == TYPE_FIGHTING - || gBattleMoves[move].type == TYPE_POISON - || move == MOVE_MULTI_ATTACK) - switch (gBattleMoves[move].power) + || gBattleMoves[move].type == TYPE_POISON + || move == MOVE_MULTI_ATTACK) + { + switch (tier) { default: - case 0 ... 40: return 70; - case 45 ... 50: return 75; - case 55 ... 60: return 80; - case 65 ... 70: return 85; - case 75 ... 100: return 90; - case 110 ... 140: return 95; - case 150 ... 250: return 100; + case MAX_POWER_TIER_1: return 70; + case MAX_POWER_TIER_2: return 75; + case MAX_POWER_TIER_3: return 80; + case MAX_POWER_TIER_4: return 85; + case MAX_POWER_TIER_5: return 90; + case MAX_POWER_TIER_6: return 95; + case MAX_POWER_TIER_7: return 100; + case MAX_POWER_TIER_8: return 100; } + } else - switch (gBattleMoves[move].power) + { + switch (tier) { default: - case 0 ... 40: return 90; - case 45 ... 50: return 100; - case 55 ... 60: return 110; - case 65 ... 70: return 120; - case 75 ... 100: return 130; - case 110 ... 140: return 140; - case 150 ... 250: return 150; + case MAX_POWER_TIER_1: return 90; + case MAX_POWER_TIER_2: return 100; + case MAX_POWER_TIER_3: return 110; + case MAX_POWER_TIER_4: return 120; + case MAX_POWER_TIER_5: return 130; + case MAX_POWER_TIER_6: return 140; + case MAX_POWER_TIER_7: return 130; + case MAX_POWER_TIER_8: return 150; } + } +} + +static u8 GetMaxPowerTier(u16 move) +{ + if (gBattleMoves[move].flags & FLAG_TWO_STRIKES) + { + switch(gBattleMoves[move].power) + { + case 0 ... 25: return MAX_POWER_TIER_2; + case 26 ... 30: return MAX_POWER_TIER_3; + case 31 ... 35: return MAX_POWER_TIER_4; + case 36 ... 50: return MAX_POWER_TIER_5; + default: + case 51 ... 60: return MAX_POWER_TIER_6; + } + } + + switch (gBattleMoves[move].effect) + { + case EFFECT_BIDE: + case EFFECT_SUPER_FANG: + case EFFECT_LEVEL_DAMAGE: + case EFFECT_PSYWAVE: + case EFFECT_COUNTER: + case EFFECT_PRESENT: + case EFFECT_BEAT_UP: + case EFFECT_WEATHER_BALL: + case EFFECT_FLING: + case EFFECT_ELECTRO_BALL: + case EFFECT_METAL_BURST: + case EFFECT_TERRAIN_PULSE: + case EFFECT_PUNISHMENT: + case EFFECT_TRUMP_CARD: + case EFFECT_SCALE_SHOT: + case EFFECT_SONICBOOM: + case EFFECT_SPIT_UP: + case EFFECT_NATURAL_GIFT: + case EFFECT_MIRROR_COAT: + case EFFECT_DRAGON_RAGE: + case EFFECT_FINAL_GAMBIT: + //case EFFECT_DRAGON_DARTS: + return MAX_POWER_TIER_2; + case EFFECT_OHKO: + case EFFECT_RETURN: + case EFFECT_FRUSTRATION: + case EFFECT_HEAT_CRASH: + case EFFECT_STORED_POWER: + case EFFECT_GYRO_BALL: + return MAX_POWER_TIER_5; + case EFFECT_MAGNITUDE: + case EFFECT_WRING_OUT: + return MAX_POWER_TIER_6; + case EFFECT_FLAIL: + case EFFECT_LOW_KICK: + return MAX_POWER_TIER_7; + case EFFECT_MULTI_HIT: + switch(gBattleMoves[move].power) + { + case 0 ... 15: return MAX_POWER_TIER_1; + case 16 ... 18: return MAX_POWER_TIER_2; + case 19 ... 20: return MAX_POWER_TIER_4; + default: + case 21 ... 25: return MAX_POWER_TIER_5; + } + } + + switch (gBattleMoves[move].power) + { + case 0 ... 40: return MAX_POWER_TIER_1; + case 45 ... 50: return MAX_POWER_TIER_2; + case 55 ... 60: return MAX_POWER_TIER_3; + case 65 ... 70: return MAX_POWER_TIER_4; + case 75 ... 100: return MAX_POWER_TIER_5; + case 110 ... 140: return MAX_POWER_TIER_6; + default: + case 150 ... 250: return MAX_POWER_TIER_8; + } } // Returns whether a move is a Max Move or not. @@ -467,7 +503,7 @@ u16 SetMaxMoveEffect(u16 move) // Don't continue if the move didn't land. if (gMoveResultFlags & MOVE_RESULT_NO_EFFECT) return effect; - + switch (maxEffect) { case MAX_EFFECT_RAISE_TEAM_ATTACK: From 2bcfaf8b574d3e693af57d7010b0888fbd602ba8 Mon Sep 17 00:00:00 2001 From: AgustinGDLV Date: Fri, 24 Mar 2023 22:06:09 -0700 Subject: [PATCH 054/162] CanDynamax rewrite, level-up + misc. bug fixes --- include/battle.h | 1 + include/battle_dynamax.h | 2 +- include/config/battle.h | 1 + src/battle_controller_player.c | 10 ++++ src/battle_controller_player_partner.c | 10 ++++ src/battle_dynamax.c | 74 ++++++++++++++++---------- src/battle_util.c | 2 +- test/dynamax.c | 4 -- 8 files changed, 71 insertions(+), 33 deletions(-) diff --git a/include/battle.h b/include/battle.h index 5366ce75e9..8e33b7e36c 100644 --- a/include/battle.h +++ b/include/battle.h @@ -532,6 +532,7 @@ struct DynamaxData u8 splits[MAX_BATTLERS_COUNT]; u16 baseMove[MAX_BATTLERS_COUNT]; // base move of Max Move u16 lastUsedBaseMove; + u16 beforeLevelHP; }; struct StolenItem diff --git a/include/battle_dynamax.h b/include/battle_dynamax.h index d5cb0c2a5b..64655a9c98 100644 --- a/include/battle_dynamax.h +++ b/include/battle_dynamax.h @@ -58,7 +58,7 @@ enum MaxMoveEffect bool32 IsDynamaxed(u16 battlerId); bool32 CanDynamax(u16 battlerId); -void ApplyDynamaxHPMultiplier(u16 battlerId, struct Pokemon* mon); +void ApplyDynamaxHPMultiplier(struct Pokemon* mon); void PrepareBattlerForDynamax(u16 battlerId); u16 GetNonDynamaxHP(u16 battlerId); u16 GetNonDynamaxMaxHP(u16 battlerId); diff --git a/include/config/battle.h b/include/config/battle.h index eeeaa3bd4e..b971a36db7 100644 --- a/include/config/battle.h +++ b/include/config/battle.h @@ -148,6 +148,7 @@ #define B_SMART_WILD_AI_FLAG 0 // If not 0, you can set this flag in a script to enable smart wild pokemon #define B_FLAG_NO_BAG_USE 0 // If this flag is set, the ability to use the bag in battle is disabled. #define B_FLAG_NO_CATCHING 0 // If this flag is set, the ability to catch wild Pokémon is disabled. +#define B_FLAG_DYNAMAX_BATTLE 0 // If this flag is set, the ability to Dynamax in battle is enabled for all trainers. // Var Settings // To use the following features in scripting, replace the 0s with the var ID you're assigning it to. diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c index 3d8b8306e4..788146c7e1 100644 --- a/src/battle_controller_player.c +++ b/src/battle_controller_player.c @@ -1418,7 +1418,17 @@ static void Task_GiveExpToMon(u8 taskId) u8 savedActiveBattler; SetMonData(mon, MON_DATA_EXP, &nextLvlExp); + gBattleStruct->dynamax.beforeLevelHP = GetMonData(mon, MON_DATA_HP); CalculateMonStats(mon); + + // Prevent Dynamaxed HP from being reset upon level-up. + if (IsDynamaxed(battlerId)) + { + ApplyDynamaxHPMultiplier(mon); + gBattleMons[battlerId].hp = gBattleStruct->dynamax.beforeLevelHP; + SetMonData(mon, MON_DATA_HP, &gBattleMons[battlerId].hp); + } + gainedExp -= nextLvlExp - currExp; savedActiveBattler = gActiveBattler; gActiveBattler = battlerId; diff --git a/src/battle_controller_player_partner.c b/src/battle_controller_player_partner.c index 88bc4f974d..1a8f812a06 100644 --- a/src/battle_controller_player_partner.c +++ b/src/battle_controller_player_partner.c @@ -332,7 +332,17 @@ static void Task_GiveExpToMon(u8 taskId) u8 savedActiveBank; SetMonData(mon, MON_DATA_EXP, &nextLvlExp); + gBattleStruct->dynamax.beforeLevelHP = GetMonData(mon, MON_DATA_HP); CalculateMonStats(mon); + + // Prevent Dynamaxed HP from being reset upon level-up. + if (IsDynamaxed(battlerId)) + { + ApplyDynamaxHPMultiplier(mon); + gBattleMons[battlerId].hp = gBattleStruct->dynamax.beforeLevelHP; + SetMonData(mon, MON_DATA_HP, &gBattleMons[battlerId].hp); + } + gainedExp -= nextLvlExp - currExp; savedActiveBank = gActiveBattler; gActiveBattler = battlerId; diff --git a/src/battle_dynamax.c b/src/battle_dynamax.c index eeb36fc2e0..e9757a3bfd 100644 --- a/src/battle_dynamax.c +++ b/src/battle_dynamax.c @@ -6,6 +6,7 @@ #include "battle_scripts.h" #include "battle_script_commands.h" #include "data.h" +#include "event_data.h" #include "graphics.h" #include "item.h" #include "pokemon.h" @@ -16,6 +17,7 @@ #include "constants/abilities.h" #include "constants/battle_move_effects.h" #include "constants/battle_string_ids.h" +#include "constants/flags.h" #include "constants/hold_effects.h" #include "constants/items.h" #include "constants/moves.h" @@ -104,33 +106,54 @@ bool32 IsDynamaxed(u16 battlerId) // Returns whether a battler can Dynamax. bool32 CanDynamax(u16 battlerId) { - // TODO: Requires Dynamax Band if not in a Max Raid (as well as special flag). u16 species = gBattleMons[battlerId].species; u16 holdEffect = ItemId_GetHoldEffect(gBattleMons[battlerId].item); - if (!gBattleStruct->dynamax.alreadyDynamaxed[GetBattlerSide(battlerId)] - && !gBattleStruct->dynamax.dynamaxed[battlerId] - && !gBattleStruct->dynamax.dynamaxed[BATTLE_PARTNER(battlerId)] - && !gBattleStruct->dynamax.toDynamax[BATTLE_PARTNER(battlerId)] - && species != SPECIES_ZACIAN && species != SPECIES_ZACIAN_CROWNED_SWORD - && species != SPECIES_ZAMAZENTA && species != SPECIES_ZAMAZENTA_CROWNED_SHIELD - && species != SPECIES_ETERNATUS && species != SPECIES_ETERNATUS_ETERNAMAX - && holdEffect != HOLD_EFFECT_MEGA_STONE && holdEffect != HOLD_EFFECT_Z_CRYSTAL) - return TRUE; - return FALSE; + + // Check if Dynamax battle flag is set. This needs to be defined in include/config/battle.h + #if B_FLAG_DYNAMAX_BATTLE != 0 + if (!FlagGet(B_FLAG_DYNAMAX_BATTLE)) + #endif + return FALSE; + + // Check if Player has a Dynamax Band. + if ((GetBattlerPosition(battlerId) == B_POSITION_PLAYER_LEFT || (!(gBattleTypeFlags & BATTLE_TYPE_MULTI) && GetBattlerPosition(battlerId) == B_POSITION_PLAYER_RIGHT)) + && !CheckBagHasItem(ITEM_DYNAMAX_BAND, 1)) + return FALSE; + + // Check if species isn't allowed to Dynamax. + if (species == SPECIES_ZACIAN && species == SPECIES_ZACIAN_CROWNED_SWORD + && species == SPECIES_ZAMAZENTA && species == SPECIES_ZAMAZENTA_CROWNED_SHIELD + && species == SPECIES_ETERNATUS && species == SPECIES_ETERNATUS_ETERNAMAX) + return FALSE; + + // Cannot Dynamax if you can Mega Evolve or use a Z-Move + if (holdEffect == HOLD_EFFECT_MEGA_STONE && holdEffect == HOLD_EFFECT_Z_CRYSTAL) + return FALSE; + + // Cannot Dynamax if your side has already or will Dynamax. + if (gBattleStruct->dynamax.alreadyDynamaxed[GetBattlerSide(battlerId)] + || gBattleStruct->dynamax.dynamaxed[BATTLE_PARTNER(battlerId)] + || gBattleStruct->dynamax.toDynamax[BATTLE_PARTNER(battlerId)]) + return FALSE; + + // TODO: Cannot Dynamax in a Max Raid if you don't have Dynamax Energy. + // if (gBattleTypeFlags & BATTLE_TYPE_RAID && gBattleStruct->raid.dynamaxEnergy != battlerId) + // return FALSE; + + // No checks failed, all set! + return TRUE; } // Applies the HP Multiplier for Dynamaxed Pokemon and Raid Bosses. -void ApplyDynamaxHPMultiplier(u16 battlerId, struct Pokemon* mon) +void ApplyDynamaxHPMultiplier(struct Pokemon* mon) { - if (gBattleMons[battlerId].species == SPECIES_SHEDINJA) - { + if (GetMonData(mon, MON_DATA_SPECIES) == SPECIES_SHEDINJA) return; - } else { u16 mult = UQ_4_12(1.5); // placeholder - u16 hp = UQ_4_12_TO_INT((gBattleMons[battlerId].hp * mult) + UQ_4_12_ROUND); - u16 maxHP = UQ_4_12_TO_INT((gBattleMons[battlerId].maxHP * mult) + UQ_4_12_ROUND); + u16 hp = UQ_4_12_TO_INT((GetMonData(mon, MON_DATA_HP) * mult) + UQ_4_12_ROUND); + u16 maxHP = UQ_4_12_TO_INT((GetMonData(mon, MON_DATA_MAX_HP) * mult) + UQ_4_12_ROUND); SetMonData(mon, MON_DATA_HP, &hp); SetMonData(mon, MON_DATA_MAX_HP, &maxHP); } @@ -140,9 +163,7 @@ void ApplyDynamaxHPMultiplier(u16 battlerId, struct Pokemon* mon) u16 GetNonDynamaxHP(u16 battlerId) { if (!IsDynamaxed(battlerId) || gBattleMons[battlerId].species == SPECIES_SHEDINJA) - { return gBattleMons[battlerId].hp; - } else { u16 mult = UQ_4_12(1.0/1.5); // placeholder @@ -155,9 +176,7 @@ u16 GetNonDynamaxHP(u16 battlerId) u16 GetNonDynamaxMaxHP(u16 battlerId) { if (!IsDynamaxed(battlerId) || gBattleMons[battlerId].species == SPECIES_SHEDINJA) - { return gBattleMons[battlerId].maxHP; - } else { u16 mult = UQ_4_12(1.0/1.5); // placeholder @@ -184,7 +203,8 @@ void PrepareBattlerForDynamax(u16 battlerId) gBattleStruct->choicedMove[battlerId] = MOVE_NONE; // Try Gigantamax form change. - TryBattleFormChange(battlerId, FORM_CHANGE_BATTLE_GIGANTAMAX); + if (!(gBattleMons[battlerId].status2 & STATUS2_TRANSFORMED)) // Ditto cannot Gigantamax. + TryBattleFormChange(battlerId, FORM_CHANGE_BATTLE_GIGANTAMAX); } // Unsets the flags used for Dynamaxing and reverts max HP if needed. @@ -208,7 +228,7 @@ void UndoDynamax(u16 battlerId) // Weight-based moves (and some other moves in Raids) are blocked by Dynamax. bool32 IsMoveBlockedByDynamax(u16 move) { - // TODO: Raid moves + // TODO: Certain moves are banned in raids. switch (gBattleMoves[move].effect) { case EFFECT_HEAT_CRASH: @@ -221,9 +241,9 @@ bool32 IsMoveBlockedByDynamax(u16 move) // Returns whether a move should be converted into a Max Move. bool32 ShouldUseMaxMove(u16 battlerId, u16 baseMove) { - // TODO: Raids - //if (IsRaidBoss(battlerId)) - // return !IsRaidBossUsingRegularMove(battlerId, baseMove); + // TODO: Raid bosses do not always use Max Moves. + // if (IsRaidBoss(battlerId)) + // return !IsRaidBossUsingRegularMove(battlerId, baseMove); return IsDynamaxed(battlerId) || gBattleStruct->dynamax.toDynamax[battlerId]; } @@ -263,7 +283,7 @@ u16 GetMaxMove(u16 battlerId, u16 baseMove) { move = MOVE_MAX_GUARD; } - else if (gBattleStruct->dynamicMoveType) // unsure of how to deal with Hidden Power + else if (gBattleStruct->dynamicMoveType) { move = GetTypeBasedMaxMove(battlerId, gBattleStruct->dynamicMoveType & DYNAMIC_TYPE_MASK); gBattleStruct->dynamax.splits[battlerId] = gBattleMoves[baseMove].split; diff --git a/src/battle_util.c b/src/battle_util.c index 35aff19e67..34f5db6416 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -10969,7 +10969,7 @@ void RecalcBattlerStats(u32 battler, struct Pokemon *mon) { CalculateMonStats(mon); if (IsDynamaxed(battler) && gChosenActionByBattler[battler] != B_ACTION_SWITCH) - ApplyDynamaxHPMultiplier(battler, mon); + ApplyDynamaxHPMultiplier(mon); CopyMonLevelAndBaseStatsToBattleMon(battler, mon); CopyMonAbilityAndTypesToBattleMon(battler, mon); } diff --git a/test/dynamax.c b/test/dynamax.c index b98c808fc4..8815964289 100644 --- a/test/dynamax.c +++ b/test/dynamax.c @@ -7,11 +7,7 @@ // TEST: Imprison doesn't stop Max Moves. (YES!) // TEST: Max Moves change type as you'd expect with Normalize, Weather Ball, etc. (YES!) // TEST: You use Struggle while Dynamaxed if out of PP. (YES!) -// Refactor code to remove dynamax.usingMaxMove? Might keep for Raids -// Ditto cannot turn into a Gigantamax form. (NO) -// Interactions with a Dynamaxed Pokemon with Magic Bounce. (???) // Dynamax should not reset Speed Swap, Soak, or anything else from form changing. (NO) -// Multi Attack is treated in Max Move power calcs like a Fighting or Poison type move. (NO) // Max Moves cannot be used against allies. (NO) // ============= DYNAMAX AND MAX MOVE INTERACTIONS =================== From 886bee2b905a23335681bf5f151576dc05df62b1 Mon Sep 17 00:00:00 2001 From: AgustinGDLV Date: Fri, 24 Mar 2023 23:11:53 -0700 Subject: [PATCH 055/162] fixed double HP multiplier application + slapped KNOWN_FAILING on RNG-based tests --- include/battle_dynamax.h | 2 +- src/battle_controller_player.c | 2 +- src/battle_controller_player_partner.c | 2 +- src/battle_dynamax.c | 4 ++-- src/battle_util.c | 2 +- test/dynamax.c | 14 +++++++++----- 6 files changed, 15 insertions(+), 11 deletions(-) diff --git a/include/battle_dynamax.h b/include/battle_dynamax.h index 64655a9c98..d5cb0c2a5b 100644 --- a/include/battle_dynamax.h +++ b/include/battle_dynamax.h @@ -58,7 +58,7 @@ enum MaxMoveEffect bool32 IsDynamaxed(u16 battlerId); bool32 CanDynamax(u16 battlerId); -void ApplyDynamaxHPMultiplier(struct Pokemon* mon); +void ApplyDynamaxHPMultiplier(u16 battlerId, struct Pokemon* mon); void PrepareBattlerForDynamax(u16 battlerId); u16 GetNonDynamaxHP(u16 battlerId); u16 GetNonDynamaxMaxHP(u16 battlerId); diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c index 788146c7e1..74e482e82a 100644 --- a/src/battle_controller_player.c +++ b/src/battle_controller_player.c @@ -1424,7 +1424,7 @@ static void Task_GiveExpToMon(u8 taskId) // Prevent Dynamaxed HP from being reset upon level-up. if (IsDynamaxed(battlerId)) { - ApplyDynamaxHPMultiplier(mon); + ApplyDynamaxHPMultiplier(battlerId, mon); gBattleMons[battlerId].hp = gBattleStruct->dynamax.beforeLevelHP; SetMonData(mon, MON_DATA_HP, &gBattleMons[battlerId].hp); } diff --git a/src/battle_controller_player_partner.c b/src/battle_controller_player_partner.c index 1a8f812a06..50019aef70 100644 --- a/src/battle_controller_player_partner.c +++ b/src/battle_controller_player_partner.c @@ -338,7 +338,7 @@ static void Task_GiveExpToMon(u8 taskId) // Prevent Dynamaxed HP from being reset upon level-up. if (IsDynamaxed(battlerId)) { - ApplyDynamaxHPMultiplier(mon); + ApplyDynamaxHPMultiplier(battlerId, mon); gBattleMons[battlerId].hp = gBattleStruct->dynamax.beforeLevelHP; SetMonData(mon, MON_DATA_HP, &gBattleMons[battlerId].hp); } diff --git a/src/battle_dynamax.c b/src/battle_dynamax.c index e9757a3bfd..0426fe63f9 100644 --- a/src/battle_dynamax.c +++ b/src/battle_dynamax.c @@ -145,14 +145,14 @@ bool32 CanDynamax(u16 battlerId) } // Applies the HP Multiplier for Dynamaxed Pokemon and Raid Bosses. -void ApplyDynamaxHPMultiplier(struct Pokemon* mon) +void ApplyDynamaxHPMultiplier(u16 battlerId, struct Pokemon* mon) { if (GetMonData(mon, MON_DATA_SPECIES) == SPECIES_SHEDINJA) return; else { u16 mult = UQ_4_12(1.5); // placeholder - u16 hp = UQ_4_12_TO_INT((GetMonData(mon, MON_DATA_HP) * mult) + UQ_4_12_ROUND); + u16 hp = UQ_4_12_TO_INT((gBattleMons[battlerId].hp * mult) + UQ_4_12_ROUND); u16 maxHP = UQ_4_12_TO_INT((GetMonData(mon, MON_DATA_MAX_HP) * mult) + UQ_4_12_ROUND); SetMonData(mon, MON_DATA_HP, &hp); SetMonData(mon, MON_DATA_MAX_HP, &maxHP); diff --git a/src/battle_util.c b/src/battle_util.c index b19f49d676..fd87a84a83 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -10969,7 +10969,7 @@ void RecalcBattlerStats(u32 battler, struct Pokemon *mon) { CalculateMonStats(mon); if (IsDynamaxed(battler) && gChosenActionByBattler[battler] != B_ACTION_SWITCH) - ApplyDynamaxHPMultiplier(mon); + ApplyDynamaxHPMultiplier(battler, mon); CopyMonLevelAndBaseStatsToBattleMon(battler, mon); CopyMonAbilityAndTypesToBattleMon(battler, mon); } diff --git a/test/dynamax.c b/test/dynamax.c index 8815964289..3236f1d5aa 100644 --- a/test/dynamax.c +++ b/test/dynamax.c @@ -371,7 +371,7 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon take double damage from Dynamax SINGLE_BATTLE_TEST("(DYNAMAX) Max Moves deal 1/4 damage through protect", s16 damage) { bool32 protected; - KNOWN_FAILING; // // damage isn't equal because RNG misbehaves + KNOWN_FAILING; // Rounding issue? PARAMETRIZE { protected = FALSE; } PARAMETRIZE { protected = TRUE; } GIVEN { @@ -480,7 +480,7 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Pokemon with Gigantamax forms revert upon fainting } } -// Move selection tests can't be simulated :( +// Move selection tests can't be simulated. SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon are not affected by Choice items", s16 damage) { u16 item; @@ -936,6 +936,7 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Volt Crash paralyzes both opponents") DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Stun Shock paralyzes or poisons both opponents") { + KNOWN_FAILING; // RNG issues GIVEN { ASSUME(P_GEN_8_POKEMON == TRUE); ASSUME(gBattleMoves[MOVE_G_MAX_STUN_SHOCK].argument == MAX_EFFECT_POISON_PARALYZE_FOES); @@ -959,6 +960,7 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Stun Shock paralyzes or poisons both opponen // This test extends to G-Max Befuddle, too. DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Stun Shock chooses statuses before considering immunities") { + KNOWN_FAILING; // RNG issues GIVEN { ASSUME(P_GEN_8_POKEMON == TRUE); ASSUME(gBattleMoves[MOVE_G_MAX_STUN_SHOCK].argument == MAX_EFFECT_POISON_PARALYZE_FOES); @@ -984,6 +986,7 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Stun Shock chooses statuses before consideri DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Befuddle paralyzes, poisons, or sleeps both opponents") { + KNOWN_FAILING; // RNG issues GIVEN { RNGSeed(0x10000); ASSUME(gBattleMoves[MOVE_G_MAX_BEFUDDLE].argument == MAX_EFFECT_EFFECT_SPORE_FOES); @@ -1211,6 +1214,7 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Replenish recycles allies' berries") DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Snooze makes only the target drowsy") { + KNOWN_FAILING; // RNG issues GIVEN { ASSUME(P_GEN_8_POKEMON == TRUE); ASSUME(gBattleMoves[MOVE_G_MAX_SNOOZE].argument == MAX_EFFECT_YAWN_FOE); @@ -1314,6 +1318,7 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Centiferno traps both opponents in Fire Spin DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Chi Strike boosts allies' crit chance") { s16 damage1, damage2; + KNOWN_FAILING; GIVEN { ASSUME(B_CRIT_CHANCE >= GEN_6); ASSUME(gBattleMoves[MOVE_G_MAX_CHI_STRIKE].argument == MAX_EFFECT_CRIT_PLUS); @@ -1324,7 +1329,7 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Chi Strike boosts allies' crit chance") } WHEN { TURN { MOVE(playerLeft, MOVE_FORCE_PALM, target: opponentLeft, dynamax: TRUE); \ MOVE(playerRight, MOVE_FOCUS_ENERGY); } - TURN { MOVE(playerRight, MOVE_FORCE_PALM, target: opponentLeft); } + TURN { MOVE(playerRight, MOVE_TACKLE, target: opponentLeft); } } SCENE { // turn 1 MESSAGE("Machamp used G-Max Chi Strike!"); @@ -1335,7 +1340,7 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Chi Strike boosts allies' crit chance") MESSAGE("Machop used Focus Energy!"); MESSAGE("Machop is getting pumped!"); // turn 2 - MESSAGE("Machop used Force Palm!"); // Machop is at +3 crit stages, 100% crit chance + MESSAGE("Machop used Tackle!"); // Machop is at +3 crit stages, 100% crit chance MESSAGE("A critical hit!"); } } @@ -1363,7 +1368,6 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Depletion takes away 2 PP from the target's DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max One Blow bypasses Max Guard for full damage", s16 damage) { bool32 protect; - KNOWN_FAILING; // damage isn't equal because RNG misbehaves PARAMETRIZE { protect = TRUE; } PARAMETRIZE { protect = FALSE; } GIVEN { From 9f306c65edbe40f7a817d5e704b5004721a471e4 Mon Sep 17 00:00:00 2001 From: AgustinGDLV Date: Fri, 24 Mar 2023 23:19:12 -0700 Subject: [PATCH 056/162] fixed Dynamax bypassing selection prevention --- src/battle_util.c | 33 +++++++++++++++++++++------------ 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/src/battle_util.c b/src/battle_util.c index fd87a84a83..e829ce6dd5 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -1745,6 +1745,9 @@ static bool32 IsBelchPreventingMove(u32 battler, u32 move) return !(gBattleStruct->ateBerry[battler & BIT_SIDE] & gBitTable[gBattlerPartyIndexes[battler]]); } +// Dynamax bypasses all selection prevention except Taunt and Assault Vest. +#define DYNAMAX_BYPASS_CHECK !gBattleStruct->dynamax.playerSelect && !IsDynamaxed(gBattlerAttacker) + u8 TrySetCantSelectMoveBattleScript(void) { u32 limitations = 0; @@ -1753,7 +1756,7 @@ u8 TrySetCantSelectMoveBattleScript(void) u32 holdEffect = GetBattlerHoldEffect(gActiveBattler, TRUE); u16 *choicedMove = &gBattleStruct->choicedMove[gActiveBattler]; - if (!gBattleStruct->dynamax.playerSelect && gBattleStruct->zmove.toBeUsed[gBattlerAttacker] == MOVE_NONE && gDisableStructs[gActiveBattler].disabledMove == move && move != MOVE_NONE) + if (DYNAMAX_BYPASS_CHECK && gBattleStruct->zmove.toBeUsed[gBattlerAttacker] == MOVE_NONE && gDisableStructs[gActiveBattler].disabledMove == move && move != MOVE_NONE) { gBattleScripting.battler = gActiveBattler; gCurrentMove = move; @@ -1769,7 +1772,7 @@ u8 TrySetCantSelectMoveBattleScript(void) } } - if (!gBattleStruct->dynamax.playerSelect && gBattleStruct->zmove.toBeUsed[gBattlerAttacker] == MOVE_NONE && move == gLastMoves[gActiveBattler] && move != MOVE_STRUGGLE && (gBattleMons[gActiveBattler].status2 & STATUS2_TORMENT)) + if (DYNAMAX_BYPASS_CHECK && gBattleStruct->zmove.toBeUsed[gBattlerAttacker] == MOVE_NONE && move == gLastMoves[gActiveBattler] && move != MOVE_STRUGGLE && (gBattleMons[gActiveBattler].status2 & STATUS2_TORMENT)) { CancelMultiTurnMoves(gActiveBattler); if (gBattleTypeFlags & BATTLE_TYPE_PALACE) @@ -1786,7 +1789,10 @@ u8 TrySetCantSelectMoveBattleScript(void) if (gBattleStruct->zmove.toBeUsed[gBattlerAttacker] == MOVE_NONE && gDisableStructs[gActiveBattler].tauntTimer != 0 && IS_MOVE_STATUS(move)) { - gCurrentMove = move; + if (IsDynamaxed(gBattlerAttacker)) + gCurrentMove = MOVE_MAX_GUARD; + else + gCurrentMove = move; if (gBattleTypeFlags & BATTLE_TYPE_PALACE) { gPalaceSelectionBattleScripts[gActiveBattler] = BattleScript_SelectingNotAllowedMoveTauntInPalace; @@ -1799,7 +1805,7 @@ u8 TrySetCantSelectMoveBattleScript(void) } } - if (!gBattleStruct->dynamax.playerSelect && gBattleStruct->zmove.toBeUsed[gBattlerAttacker] == MOVE_NONE && gDisableStructs[gActiveBattler].throatChopTimer != 0 && gBattleMoves[move].flags & FLAG_SOUND) + if (DYNAMAX_BYPASS_CHECK && gBattleStruct->zmove.toBeUsed[gBattlerAttacker] == MOVE_NONE && gDisableStructs[gActiveBattler].throatChopTimer != 0 && gBattleMoves[move].flags & FLAG_SOUND) { gCurrentMove = move; if (gBattleTypeFlags & BATTLE_TYPE_PALACE) @@ -1814,7 +1820,7 @@ u8 TrySetCantSelectMoveBattleScript(void) } } - if (!gBattleStruct->dynamax.playerSelect && gBattleStruct->zmove.toBeUsed[gBattlerAttacker] == MOVE_NONE && GetImprisonedMovesCount(gActiveBattler, move)) + if (DYNAMAX_BYPASS_CHECK && gBattleStruct->zmove.toBeUsed[gBattlerAttacker] == MOVE_NONE && GetImprisonedMovesCount(gActiveBattler, move)) { gCurrentMove = move; if (gBattleTypeFlags & BATTLE_TYPE_PALACE) @@ -1829,7 +1835,7 @@ u8 TrySetCantSelectMoveBattleScript(void) } } - if (!gBattleStruct->dynamax.playerSelect && gBattleStruct->zmove.toBeUsed[gBattlerAttacker] == MOVE_NONE && IsGravityPreventingMove(move)) + if (DYNAMAX_BYPASS_CHECK && gBattleStruct->zmove.toBeUsed[gBattlerAttacker] == MOVE_NONE && IsGravityPreventingMove(move)) { gCurrentMove = move; if (gBattleTypeFlags & BATTLE_TYPE_PALACE) @@ -1844,7 +1850,7 @@ u8 TrySetCantSelectMoveBattleScript(void) } } - if (!gBattleStruct->dynamax.playerSelect && gBattleStruct->zmove.toBeUsed[gBattlerAttacker] == MOVE_NONE && IsHealBlockPreventingMove(gActiveBattler, move)) + if (DYNAMAX_BYPASS_CHECK && gBattleStruct->zmove.toBeUsed[gBattlerAttacker] == MOVE_NONE && IsHealBlockPreventingMove(gActiveBattler, move)) { gCurrentMove = move; if (gBattleTypeFlags & BATTLE_TYPE_PALACE) @@ -1859,7 +1865,7 @@ u8 TrySetCantSelectMoveBattleScript(void) } } - if (gBattleStruct->zmove.toBeUsed[gBattlerAttacker] == MOVE_NONE && IsBelchPreventingMove(gActiveBattler, move)) + if (DYNAMAX_BYPASS_CHECK && gBattleStruct->zmove.toBeUsed[gBattlerAttacker] == MOVE_NONE && IsBelchPreventingMove(gActiveBattler, move)) { gCurrentMove = move; if (gBattleTypeFlags & BATTLE_TYPE_PALACE) @@ -1874,7 +1880,7 @@ u8 TrySetCantSelectMoveBattleScript(void) } } - if (move == MOVE_STUFF_CHEEKS && ItemId_GetPocket(gBattleMons[gActiveBattler].item) != POCKET_BERRIES) + if (DYNAMAX_BYPASS_CHECK && move == MOVE_STUFF_CHEEKS && ItemId_GetPocket(gBattleMons[gActiveBattler].item) != POCKET_BERRIES) { gCurrentMove = move; if (gBattleTypeFlags & BATTLE_TYPE_PALACE) @@ -1890,7 +1896,7 @@ u8 TrySetCantSelectMoveBattleScript(void) } gPotentialItemEffectBattler = gActiveBattler; - if (!gBattleStruct->dynamax.playerSelect && (holdEffect) && *choicedMove != MOVE_NONE && *choicedMove != MOVE_UNAVAILABLE && *choicedMove != move) + if (DYNAMAX_BYPASS_CHECK && (holdEffect) && *choicedMove != MOVE_NONE && *choicedMove != MOVE_UNAVAILABLE && *choicedMove != move) { gCurrentMove = *choicedMove; gLastUsedItem = gBattleMons[gActiveBattler].item; @@ -1907,7 +1913,10 @@ u8 TrySetCantSelectMoveBattleScript(void) } else if (holdEffect == HOLD_EFFECT_ASSAULT_VEST && IS_MOVE_STATUS(move) && move != MOVE_ME_FIRST) { - gCurrentMove = move; + if (IsDynamaxed(gBattlerAttacker)) + gCurrentMove = MOVE_MAX_GUARD; + else + gCurrentMove = move; gLastUsedItem = gBattleMons[gActiveBattler].item; if (gBattleTypeFlags & BATTLE_TYPE_PALACE) { @@ -1920,7 +1929,7 @@ u8 TrySetCantSelectMoveBattleScript(void) limitations++; } } - if (!gBattleStruct->dynamax.playerSelect && (GetBattlerAbility(gActiveBattler) == ABILITY_GORILLA_TACTICS) && *choicedMove != MOVE_NONE + if (DYNAMAX_BYPASS_CHECK && (GetBattlerAbility(gActiveBattler) == ABILITY_GORILLA_TACTICS) && *choicedMove != MOVE_NONE && *choicedMove != MOVE_UNAVAILABLE && *choicedMove != move) { gCurrentMove = *choicedMove; From 1acddfa38a6f887b38cb899bbbd0e18bc1a7a5ab Mon Sep 17 00:00:00 2001 From: AgustinGDLV Date: Fri, 24 Mar 2023 23:27:34 -0700 Subject: [PATCH 057/162] Max Moves cannot target allies --- src/battle_dynamax.c | 2 +- src/battle_util.c | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/battle_dynamax.c b/src/battle_dynamax.c index 0426fe63f9..03eb296b1d 100644 --- a/src/battle_dynamax.c +++ b/src/battle_dynamax.c @@ -113,7 +113,7 @@ bool32 CanDynamax(u16 battlerId) #if B_FLAG_DYNAMAX_BATTLE != 0 if (!FlagGet(B_FLAG_DYNAMAX_BATTLE)) #endif - return FALSE; + // return FALSE; // Check if Player has a Dynamax Band. if ((GetBattlerPosition(battlerId) == B_POSITION_PLAYER_LEFT || (!(gBattleTypeFlags & BATTLE_TYPE_MULTI) && GetBattlerPosition(battlerId) == B_POSITION_PLAYER_RIGHT)) diff --git a/src/battle_util.c b/src/battle_util.c index e829ce6dd5..402475f162 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -10917,6 +10917,9 @@ bool32 CanTargetBattler(u8 battlerAtk, u8 battlerDef, u16 move) && GetBattlerSide(battlerAtk) == GetBattlerSide(battlerDef) && gStatuses3[battlerAtk] & STATUS3_HEAL_BLOCK) return FALSE; // Pokémon affected by Heal Block cannot target allies with Pollen Puff + if ((IsDynamaxed(battlerAtk) || gBattleStruct->dynamax.playerSelect) + && GetBattlerSide(battlerAtk) == GetBattlerSide(battlerDef)) + return FALSE; return TRUE; } From 60720c01825b95aa4e56f91b28e0250617da3276 Mon Sep 17 00:00:00 2001 From: AgustinGDLV Date: Fri, 24 Mar 2023 23:29:40 -0700 Subject: [PATCH 058/162] Dynamaxed Pokemon do not get an -ate boost, TODO: write tests --- src/battle_main.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/battle_main.c b/src/battle_main.c index 055823f6c1..ffb1fd3908 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -5536,7 +5536,8 @@ void SetTypeBeforeUsingMove(u16 move, u8 battlerAtk) ) { gBattleStruct->dynamicMoveType = ateType | F_DYNAMIC_TYPE_2; - gBattleStruct->ateBoost[battlerAtk] = 1; + if (!IsDynamaxed(battlerAtk)) + gBattleStruct->ateBoost[battlerAtk] = 1; } else if (gBattleMoves[move].type != TYPE_NORMAL && gBattleMoves[move].effect != EFFECT_HIDDEN_POWER @@ -5544,7 +5545,8 @@ void SetTypeBeforeUsingMove(u16 move, u8 battlerAtk) && attackerAbility == ABILITY_NORMALIZE) { gBattleStruct->dynamicMoveType = TYPE_NORMAL | F_DYNAMIC_TYPE_2; - gBattleStruct->ateBoost[battlerAtk] = 1; + if (!IsDynamaxed(battlerAtk)) + gBattleStruct->ateBoost[battlerAtk] = 1; } else if (gBattleMoves[move].flags & FLAG_SOUND && attackerAbility == ABILITY_LIQUID_VOICE) From 7d4a666b4ce46642c5357d8494d862abe85a95ab Mon Sep 17 00:00:00 2001 From: AgustinGDLV Date: Sat, 25 Mar 2023 09:53:50 -0700 Subject: [PATCH 059/162] current HP increases on level up --- src/battle_controller_player.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c index 74e482e82a..a65ca7e615 100644 --- a/src/battle_controller_player.c +++ b/src/battle_controller_player.c @@ -1418,7 +1418,7 @@ static void Task_GiveExpToMon(u8 taskId) u8 savedActiveBattler; SetMonData(mon, MON_DATA_EXP, &nextLvlExp); - gBattleStruct->dynamax.beforeLevelHP = GetMonData(mon, MON_DATA_HP); + gBattleStruct->dynamax.beforeLevelHP = GetMonData(mon, MON_DATA_HP) + gBattleScripting.levelUpHP; CalculateMonStats(mon); // Prevent Dynamaxed HP from being reset upon level-up. From f633d164e1925ac07d506e6f888246a078bcb1d9 Mon Sep 17 00:00:00 2001 From: AgustinGDLV Date: Sat, 25 Mar 2023 09:59:16 -0700 Subject: [PATCH 060/162] gave Max Wyrmwind a placeholder anim --- data/battle_anim_scripts.s | 2 +- src/battle_dynamax.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index c34fd44eaf..230c98056b 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -30986,7 +30986,7 @@ Move_G_MAX_DEPLETION: Move_MAX_WYRMWIND: launchtask AnimTask_DynamaxGrowth 0x5 0x1 0x1 waitforvisualfinish - @goto Move_DRACO_METEOR broken + goto Move_SPACIAL_REND end Move_G_MAX_SNOOZE: diff --git a/src/battle_dynamax.c b/src/battle_dynamax.c index b23a3050b3..9e627f0f04 100644 --- a/src/battle_dynamax.c +++ b/src/battle_dynamax.c @@ -115,7 +115,7 @@ bool32 CanDynamax(u16 battlerId) #if B_FLAG_DYNAMAX_BATTLE != 0 if (!FlagGet(B_FLAG_DYNAMAX_BATTLE)) #endif - return FALSE; + // return FALSE; // Check if Dynamax battle flag is set. This needs to be defined in include/config/battle.h #if B_FLAG_DYNAMAX_BATTLE != 0 From a383fab75af8863989bea433c588d4e12f909419 Mon Sep 17 00:00:00 2001 From: AgustinGDLV Date: Sat, 25 Mar 2023 10:11:18 -0700 Subject: [PATCH 061/162] added cries for Gigantamax forms --- sound/cry_tables.inc | 136 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 135 insertions(+), 1 deletion(-) diff --git a/sound/cry_tables.inc b/sound/cry_tables.inc index da8e24c845..85cc9b9b29 100644 --- a/sound/cry_tables.inc +++ b/sound/cry_tables.inc @@ -2080,6 +2080,8 @@ gCryTable:: @ Calyrex cry Cry_CalyrexIceRider cry Cry_CalyrexShadowRider + @ Basculegion + cry Cry_Basculegion .else @ Cramorant cry Cry_Unown @@ -2118,6 +2120,72 @@ gCryTable:: @ Calyrex cry Cry_Unown cry Cry_Unown + @ Basculegion + cry Cry_Unown +.endif +@ Gigantamax Forms + cry Cry_Venusaur + cry Cry_Charizard + cry Cry_Blastoise + cry Cry_Butterfree + cry Cry_Pikachu + cry Cry_Meowth + cry Cry_Machamp + cry Cry_Gengar + cry Cry_Kingler + cry Cry_Lapras + cry Cry_Eevee + cry Cry_Snorlax +.if P_GEN_5_POKEMON == TRUE + cry Cry_Garbodor +.else + cry Cry_Unown +.endif +.if P_GEN_7_POKEMON == TRUE + cry Cry_Melmetal +.else + cry Cry_Unown +.endif +.if P_GEN_8_POKEMON == TRUE + cry Cry_Rillaboom + cry Cry_Cinderace + cry Cry_Inteleon + cry Cry_Corviknight + cry Cry_Orbeetle + cry Cry_Drednaw + cry Cry_Coalossal + cry Cry_Flapple + cry Cry_Appletun + cry Cry_Sandaconda + cry Cry_Toxtricity + cry Cry_Centiskorch + cry Cry_Hatterene + cry Cry_Grimmsnarl + cry Cry_Alcremie + cry Cry_Copperajah + cry Cry_Duraludon + cry Cry_Urshifu + cry Cry_Urshifu +.else + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown .endif .align 2 @@ -4163,6 +4231,8 @@ gCryTable_Reverse:: @ Calyrex cry_reverse Cry_CalyrexIceRider cry_reverse Cry_CalyrexShadowRider + @ Basculegion + cry_reverse Cry_Basculegion .else cry_reverse Cry_Unown cry_reverse Cry_Unown @@ -4187,5 +4257,69 @@ gCryTable_Reverse:: cry_reverse Cry_Unown cry_reverse Cry_Unown cry_reverse Cry_Unown + cry_reverse Cry_Unown +.endif + @ Gigantamax Forms + cry_reverse Cry_Venusaur + cry_reverse Cry_Charizard + cry_reverse Cry_Blastoise + cry_reverse Cry_Butterfree + cry_reverse Cry_Pikachu + cry_reverse Cry_Meowth + cry_reverse Cry_Machamp + cry_reverse Cry_Gengar + cry_reverse Cry_Kingler + cry_reverse Cry_Lapras + cry_reverse Cry_Eevee + cry_reverse Cry_Snorlax +.if P_GEN_5_POKEMON == TRUE + cry_reverse Cry_Garbodor +.else + cry_reverse Cry_Unown +.endif +.if P_GEN_7_POKEMON == TRUE + cry_reverse Cry_Melmetal +.else + cry_reverse Cry_Unown +.endif +.if P_GEN_8_POKEMON == TRUE + cry_reverse Cry_Rillaboom + cry_reverse Cry_Cinderace + cry_reverse Cry_Inteleon + cry_reverse Cry_Corviknight + cry_reverse Cry_Orbeetle + cry_reverse Cry_Drednaw + cry_reverse Cry_Coalossal + cry_reverse Cry_Flapple + cry_reverse Cry_Appletun + cry_reverse Cry_Sandaconda + cry_reverse Cry_Toxtricity + cry_reverse Cry_Centiskorch + cry_reverse Cry_Hatterene + cry_reverse Cry_Grimmsnarl + cry_reverse Cry_Alcremie + cry_reverse Cry_Copperajah + cry_reverse Cry_Duraludon + cry_reverse Cry_Urshifu + cry_reverse Cry_Urshifu +.else + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown .endif -@ TODO: Gigantamax Cries From fff0f78c894026d74424a9eb7a489e90608664b6 Mon Sep 17 00:00:00 2001 From: AgustinGDLV Date: Sat, 25 Mar 2023 15:33:50 -0700 Subject: [PATCH 062/162] fixed Gigantamax and level bugs + lots of clean-up and debug removal --- include/battle.h | 2 +- include/battle_dynamax.h | 3 +- include/config.h | 2 +- include/config/battle.h | 2 +- include/config/debug.h | 2 +- src/battle_controller_player.c | 20 ++++++++-- src/battle_controller_player_partner.c | 18 +++++++-- src/battle_dynamax.c | 52 ++++++++++++++++---------- src/battle_script_commands.c | 3 +- src/battle_util.c | 7 ++-- test/dynamax.c | 2 +- 11 files changed, 75 insertions(+), 38 deletions(-) diff --git a/include/battle.h b/include/battle.h index 3d798a128b..3f5cd92c34 100644 --- a/include/battle.h +++ b/include/battle.h @@ -532,7 +532,7 @@ struct DynamaxData u8 splits[MAX_BATTLERS_COUNT]; u16 baseMove[MAX_BATTLERS_COUNT]; // base move of Max Move u16 lastUsedBaseMove; - u16 beforeLevelHP; + u16 levelUpHP; }; struct StolenItem diff --git a/include/battle_dynamax.h b/include/battle_dynamax.h index d5cb0c2a5b..fe679957dc 100644 --- a/include/battle_dynamax.h +++ b/include/battle_dynamax.h @@ -1,7 +1,7 @@ #ifndef GUARD_BATTLE_DYNAMAX_H #define GUARD_BATTLE_DYNAMAX_H -#define DYNAMAX_TURNS 3 +#define DYNAMAX_TURNS_COUNT 3 enum MaxMoveEffect { @@ -58,6 +58,7 @@ enum MaxMoveEffect bool32 IsDynamaxed(u16 battlerId); bool32 CanDynamax(u16 battlerId); +bool32 IsGigantamaxed(u16 battlerId); void ApplyDynamaxHPMultiplier(u16 battlerId, struct Pokemon* mon); void PrepareBattlerForDynamax(u16 battlerId); u16 GetNonDynamaxHP(u16 battlerId); diff --git a/include/config.h b/include/config.h index 9412c8f426..2ad84f29cd 100644 --- a/include/config.h +++ b/include/config.h @@ -6,7 +6,7 @@ // still has them in the ROM. This is because the developers forgot // to define NDEBUG before release, however this has been changed as // Ruby's actual debug build does not use the AGBPrint features. -// #define NDEBUG +#define NDEBUG // To enable printf debugging, comment out "#define NDEBUG". This allows // the various AGBPrint functions to be used. (See include/gba/isagbprint.h). diff --git a/include/config/battle.h b/include/config/battle.h index b971a36db7..ab6d2fbd35 100644 --- a/include/config/battle.h +++ b/include/config/battle.h @@ -183,7 +183,7 @@ #define B_LAST_USED_BALL_BUTTON R_BUTTON // If last used ball is implemented, this button (or button combo) will trigger throwing the last used ball. // Other settings -#define B_DOUBLE_WILD_CHANCE 100 // % chance of encountering two Pokémon in a Wild Encounter. +#define B_DOUBLE_WILD_CHANCE 0 // % chance of encountering two Pokémon in a Wild Encounter. #define B_MULTI_BATTLE_WHITEOUT GEN_LATEST // In Gen4+, multi battles end when the Player and also their Partner don't have any more Pokémon to fight. #define B_EVOLUTION_AFTER_WHITEOUT GEN_LATEST // In Gen6+, Pokemon that qualify for evolution after battle will evolve even if the player loses. #define B_WILD_NATURAL_ENEMIES TRUE // If set to TRUE, certain wild mon species will attack other species when partnered in double wild battles (eg. Zangoose vs Seviper) diff --git a/include/config/debug.h b/include/config/debug.h index efc59e36a6..43d7438018 100644 --- a/include/config/debug.h +++ b/include/config/debug.h @@ -5,7 +5,7 @@ #define DEBUG_OVERWORLD_MENU TRUE // Enables an overworld debug menu to change flags, variables, giving pokemon and more, accessed by holding R and pressing START while in the overworld by default. #define DEBUG_OVERWORLD_HELD_KEYS (R_BUTTON) // The keys required to be held to open the debug menu. #define DEBUG_OVERWORLD_TRIGGER_EVENT pressedStartButton // The event that opens the menu when holding the key(s) defined in DEBUG_OVERWORLD_HELD_KEYS. -#define DEBUG_OVERWORLD_IN_MENU TRUE // Replaces the overworld debug menu button combination with a start menu entry (above Pokédex). +#define DEBUG_OVERWORLD_IN_MENU FALSE // Replaces the overworld debug menu button combination with a start menu entry (above Pokédex). // Battle Debug Menu #define DEBUG_BATTLE_MENU TRUE // If set to TRUE, enables a debug menu to use in battles by pressing the Select button. diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c index a65ca7e615..cf76d8ae6b 100644 --- a/src/battle_controller_player.c +++ b/src/battle_controller_player.c @@ -1418,14 +1418,15 @@ static void Task_GiveExpToMon(u8 taskId) u8 savedActiveBattler; SetMonData(mon, MON_DATA_EXP, &nextLvlExp); - gBattleStruct->dynamax.beforeLevelHP = GetMonData(mon, MON_DATA_HP) + gBattleScripting.levelUpHP; + gBattleStruct->dynamax.levelUpHP = GetMonData(mon, MON_DATA_HP) \ + + UQ_4_12_TO_INT((gBattleScripting.levelUpHP * UQ_4_12(1.5)) + UQ_4_12_ROUND); CalculateMonStats(mon); - // Prevent Dynamaxed HP from being reset upon level-up. - if (IsDynamaxed(battlerId)) + // Reapply Dynamax HP multiplier after stats are recalculated. + if (IsDynamaxed(battlerId) && monId == gBattlerPartyIndexes[battlerId]) { ApplyDynamaxHPMultiplier(battlerId, mon); - gBattleMons[battlerId].hp = gBattleStruct->dynamax.beforeLevelHP; + gBattleMons[battlerId].hp = gBattleStruct->dynamax.levelUpHP; SetMonData(mon, MON_DATA_HP, &gBattleMons[battlerId].hp); } @@ -1507,7 +1508,18 @@ static void Task_GiveExpWithExpBar(u8 taskId) u8 savedActiveBattler; SetMonData(&gPlayerParty[monId], MON_DATA_EXP, &expOnNextLvl); + gBattleStruct->dynamax.levelUpHP = GetMonData(&gPlayerParty[monId], MON_DATA_HP) \ + + UQ_4_12_TO_INT((gBattleScripting.levelUpHP * UQ_4_12(1.5)) + UQ_4_12_ROUND); CalculateMonStats(&gPlayerParty[monId]); + + // Reapply Dynamax HP multiplier after stats are recalculated. + if (IsDynamaxed(battlerId) && monId == gBattlerPartyIndexes[battlerId]) + { + ApplyDynamaxHPMultiplier(battlerId, &gPlayerParty[monId]); + gBattleMons[battlerId].hp = gBattleStruct->dynamax.levelUpHP; + SetMonData(&gPlayerParty[monId], MON_DATA_HP, &gBattleMons[battlerId].hp); + } + gainedExp -= expOnNextLvl - currExp; savedActiveBattler = gActiveBattler; gActiveBattler = battlerId; diff --git a/src/battle_controller_player_partner.c b/src/battle_controller_player_partner.c index 50019aef70..a0bc4370c9 100644 --- a/src/battle_controller_player_partner.c +++ b/src/battle_controller_player_partner.c @@ -332,14 +332,15 @@ static void Task_GiveExpToMon(u8 taskId) u8 savedActiveBank; SetMonData(mon, MON_DATA_EXP, &nextLvlExp); - gBattleStruct->dynamax.beforeLevelHP = GetMonData(mon, MON_DATA_HP); + gBattleStruct->dynamax.levelUpHP = GetMonData(mon, MON_DATA_HP); CalculateMonStats(mon); - // Prevent Dynamaxed HP from being reset upon level-up. + // Reapply Dynamax HP multiplier after stats are recalculated. if (IsDynamaxed(battlerId)) { ApplyDynamaxHPMultiplier(battlerId, mon); - gBattleMons[battlerId].hp = gBattleStruct->dynamax.beforeLevelHP; + gBattleMons[battlerId].hp = gBattleStruct->dynamax.levelUpHP \ + + UQ_4_12_TO_INT(gBattleScripting.levelUpHP * UQ_4_12(1.5) + UQ_4_12_ROUND); SetMonData(mon, MON_DATA_HP, &gBattleMons[battlerId].hp); } @@ -421,7 +422,18 @@ static void Task_GiveExpWithExpBar(u8 taskId) u8 savedActiveBank; SetMonData(&gPlayerParty[monId], MON_DATA_EXP, &expOnNextLvl); + gBattleStruct->dynamax.levelUpHP = GetMonData(&gPlayerParty[monId], MON_DATA_HP) \ + + UQ_4_12_TO_INT((gBattleScripting.levelUpHP * UQ_4_12(1.5)) + UQ_4_12_ROUND); CalculateMonStats(&gPlayerParty[monId]); + + // Reapply Dynamax HP multiplier after stats are recalculated. + if (IsDynamaxed(battlerId) && monId == gBattlerPartyIndexes[battlerId]) + { + ApplyDynamaxHPMultiplier(battlerId, &gPlayerParty[monId]); + gBattleMons[battlerId].hp = gBattleStruct->dynamax.levelUpHP; + SetMonData(&gPlayerParty[monId], MON_DATA_HP, &gBattleMons[battlerId].hp); + } + gainedExp -= expOnNextLvl - currExp; savedActiveBank = gActiveBattler; gActiveBattler = battlerId; diff --git a/src/battle_dynamax.c b/src/battle_dynamax.c index 9e627f0f04..6191960f94 100644 --- a/src/battle_dynamax.c +++ b/src/battle_dynamax.c @@ -115,13 +115,7 @@ bool32 CanDynamax(u16 battlerId) #if B_FLAG_DYNAMAX_BATTLE != 0 if (!FlagGet(B_FLAG_DYNAMAX_BATTLE)) #endif - // return FALSE; - - // Check if Dynamax battle flag is set. This needs to be defined in include/config/battle.h - #if B_FLAG_DYNAMAX_BATTLE != 0 - if (!FlagGet(B_FLAG_DYNAMAX_BATTLE)) - #endif - // return FALSE; + return FALSE; // Check if Player has a Dynamax Band. @@ -153,6 +147,15 @@ bool32 CanDynamax(u16 battlerId) return TRUE; } +// Returns whether a battler is transformed into a Gigantamax form. +bool32 IsGigantamaxed(u16 battlerId) { + // TODO: Incorporate Gigantamax factor. + if (gBattleMons[battlerId].species >= (SPECIES_VENUSAUR_GMAX) + && gBattleMons[battlerId].species <= (SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GMAX)) + return TRUE; + return FALSE; +} + // Applies the HP Multiplier for Dynamaxed Pokemon and Raid Bosses. void ApplyDynamaxHPMultiplier(u16 battlerId, struct Pokemon* mon) { @@ -161,7 +164,7 @@ void ApplyDynamaxHPMultiplier(u16 battlerId, struct Pokemon* mon) else { u16 mult = UQ_4_12(1.5); // placeholder - u16 hp = UQ_4_12_TO_INT((gBattleMons[battlerId].hp * mult) + UQ_4_12_ROUND); + u16 hp = UQ_4_12_TO_INT((GetMonData(mon, MON_DATA_HP) * mult) + UQ_4_12_ROUND); u16 maxHP = UQ_4_12_TO_INT((GetMonData(mon, MON_DATA_MAX_HP) * mult) + UQ_4_12_ROUND); SetMonData(mon, MON_DATA_HP, &hp); SetMonData(mon, MON_DATA_MAX_HP, &maxHP); @@ -202,7 +205,7 @@ void PrepareBattlerForDynamax(u16 battlerId) gBattleStruct->dynamax.alreadyDynamaxed[side] = TRUE; gBattleStruct->dynamax.dynamaxed[battlerId] = TRUE; - gBattleStruct->dynamax.dynamaxTurns[battlerId] = DYNAMAX_TURNS; + gBattleStruct->dynamax.dynamaxTurns[battlerId] = DYNAMAX_TURNS_COUNT; // Substitute is removed upon Dynamaxing. gBattleMons[battlerId].status2 &= ~STATUS2_SUBSTITUTE; @@ -220,18 +223,24 @@ void PrepareBattlerForDynamax(u16 battlerId) void UndoDynamax(u16 battlerId) { u8 side = GetBattlerSide(battlerId); - // Revert HP and try form reversion if battler is Dynamaxed. + u8 monId = gBattlerPartyIndexes[battlerId]; + + // Revert HP if battler is still Dynamaxed. if (IsDynamaxed(battlerId)) { - struct Pokemon *party = (side == B_SIDE_PLAYER) ? gPlayerParty : gEnemyParty; + struct Pokemon *mon = (side == B_SIDE_PLAYER) ? &gPlayerParty[monId] : &gEnemyParty[monId]; u16 mult = UQ_4_12(1.0/1.5); // placeholder - u16 hp = UQ_4_12_TO_INT((gBattleMons[battlerId].hp * mult + 1) + UQ_4_12_ROUND); // round up - SetMonData(&party[gBattlerPartyIndexes[battlerId]], MON_DATA_HP, &hp); - TryBattleFormChange(battlerId, FORM_CHANGE_BATTLE_SWITCH); + gBattleMons[battlerId].hp = UQ_4_12_TO_INT((GetMonData(mon, MON_DATA_HP) * mult + 1) + UQ_4_12_ROUND); // round up + SetMonData(mon, MON_DATA_HP, &gBattleMons[battlerId].hp); } + // Makes sure there are no Dynamax flags set, including on switch / faint. gBattleStruct->dynamax.dynamaxed[battlerId] = FALSE; gBattleStruct->dynamax.dynamaxTurns[battlerId] = 0; + + // Undo form change if needed. + if (IsGigantamaxed(battlerId)) + TryBattleFormChange(battlerId, FORM_CHANGE_END_BATTLE); } // Weight-based moves (and some other moves in Raids) are blocked by Dynamax. @@ -258,16 +267,19 @@ bool32 ShouldUseMaxMove(u16 battlerId, u16 baseMove) static u16 GetTypeBasedMaxMove(u16 battlerId, u16 type) { - u32 species; - if (GetBattlerSide(battlerId) == B_SIDE_PLAYER) - species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES, NULL); - else - species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES, NULL); - // Gigantamax check + u16 species = gBattleMons[battlerId].species; + u16 targetSpecies = GetBattleFormChangeTargetSpecies(battlerId, FORM_CHANGE_BATTLE_GIGANTAMAX); if (species >= (SPECIES_VENUSAUR_GMAX) && sGMaxMoveTable[species - (SPECIES_VENUSAUR_GMAX)].moveType == type) + { return sGMaxMoveTable[species - (SPECIES_VENUSAUR_GMAX)].gmaxMove; + } + else if (targetSpecies != SPECIES_NONE + && sGMaxMoveTable[targetSpecies - (SPECIES_VENUSAUR_GMAX)].moveType == type) + { + return sGMaxMoveTable[targetSpecies - (SPECIES_VENUSAUR_GMAX)].gmaxMove; + } // regular Max Move else diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 394055fe03..8855124dfd 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -11348,7 +11348,8 @@ static void Cmd_various(void) mon = &gPlayerParty[gBattlerPartyIndexes[battler]]; else mon = &gEnemyParty[gBattlerPartyIndexes[battler]]; - RecalcBattlerStats(battler, mon); + if (!IsGigantamaxed(battler)) // RecalcBattlerStats will get called on form change. + RecalcBattlerStats(battler, mon); UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], mon, HEALTHBOX_ALL); break; } diff --git a/src/battle_util.c b/src/battle_util.c index 402475f162..8d72452773 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -10220,8 +10220,7 @@ u16 GetBattleFormChangeTargetSpecies(u8 battlerId, u16 method) break; case FORM_CHANGE_BATTLE_GIGANTAMAX: // TODO: check Gigantamax factor - if (IsDynamaxed(battlerId)) - targetSpecies = formChanges[i].targetSpecies; + targetSpecies = formChanges[i].targetSpecies; break; case FORM_CHANGE_BATTLE_TURN_END: if (formChanges[i].param1 == GetBattlerAbility(battlerId)) @@ -10246,7 +10245,7 @@ bool32 CanBattlerFormChange(u8 battlerId, u16 method) else if (IsBattlerPrimalReverted(battlerId) && (method == FORM_CHANGE_END_BATTLE)) return TRUE; // Gigantamaxed Pokemon should revert upon fainting, switching, or ending the battle. - else if (IsDynamaxed(battlerId) && (method == FORM_CHANGE_FAINT || method == FORM_CHANGE_BATTLE_SWITCH || method == FORM_CHANGE_END_BATTLE)) + else if (IsGigantamaxed(battlerId) && (method == FORM_CHANGE_FAINT || method == FORM_CHANGE_BATTLE_SWITCH || method == FORM_CHANGE_END_BATTLE)) return TRUE; return DoesSpeciesHaveFormChangeMethod(gBattleMons[battlerId].species, method); } @@ -10289,7 +10288,7 @@ bool32 TryBattleFormChange(u8 battlerId, u16 method) restoreSpecies = TRUE; // Gigantamax Pokemon have their forms reverted after fainting, switching, or ending the battle. - else if (IsDynamaxed(battlerId) && (method == FORM_CHANGE_FAINT || method == FORM_CHANGE_BATTLE_SWITCH || method == FORM_CHANGE_END_BATTLE)) + else if (IsGigantamaxed(battlerId) && (method == FORM_CHANGE_FAINT || method == FORM_CHANGE_BATTLE_SWITCH || method == FORM_CHANGE_END_BATTLE)) restoreSpecies = TRUE; if (restoreSpecies) diff --git a/test/dynamax.c b/test/dynamax.c index 3236f1d5aa..8891f76a57 100644 --- a/test/dynamax.c +++ b/test/dynamax.c @@ -39,7 +39,7 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Dynamax expires after three turns") TURN { MOVE(player, MOVE_TACKLE); } // 3rd max move } SCENE { int i; - for (i = 0; i < DYNAMAX_TURNS; ++i) { + for (i = 0; i < DYNAMAX_TURNS_COUNT; ++i) { MESSAGE("Wobbuffet used Max Strike!"); MESSAGE("Foe Wobbuffet used Celebrate!"); } From e1c819a8639a7f79d8d378b2d0cc0580859d94ec Mon Sep 17 00:00:00 2001 From: AgustinGDLV Date: Sat, 25 Mar 2023 19:26:55 -0700 Subject: [PATCH 063/162] opponents properly revert Gigantamax + understand Max Guard --- include/battle.h | 1 + src/battle_ai_main.c | 4 ++++ src/battle_dynamax.c | 2 +- src/battle_util.c | 12 ++++++++++-- 4 files changed, 16 insertions(+), 3 deletions(-) diff --git a/include/battle.h b/include/battle.h index 3f5cd92c34..3e20ee565c 100644 --- a/include/battle.h +++ b/include/battle.h @@ -533,6 +533,7 @@ struct DynamaxData u16 baseMove[MAX_BATTLERS_COUNT]; // base move of Max Move u16 lastUsedBaseMove; u16 levelUpHP; + u16 opponentBaseForm; // changedSpecies isn't used for opposing Pokemon }; struct StolenItem diff --git a/src/battle_ai_main.c b/src/battle_ai_main.c index c21ad18ba2..9dc682df3b 100644 --- a/src/battle_ai_main.c +++ b/src/battle_ai_main.c @@ -3080,6 +3080,10 @@ static s16 AI_CheckViability(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) // We only check for moves that have a 20% chance or more for their secondary effect to happen because moves with a smaller chance are rather worthless. We don't want the AI to use those. bool32 sereneGraceBoost = (AI_DATA->abilities[battlerAtk] == ABILITY_SERENE_GRACE && (gBattleMoves[move].secondaryEffectChance >= 20 && gBattleMoves[move].secondaryEffectChance < 100)); + // The AI should understand that while Dynamaxed, status moves function like Protect. + if (IsDynamaxed(battlerAtk) && gBattleMoves[move].split == SPLIT_STATUS) + moveEffect = EFFECT_PROTECT; + // Targeting partner, check benefits of doing that instead if (IsTargetingPartner(battlerAtk, battlerDef)) return score; diff --git a/src/battle_dynamax.c b/src/battle_dynamax.c index 6191960f94..dc1b509cd6 100644 --- a/src/battle_dynamax.c +++ b/src/battle_dynamax.c @@ -115,7 +115,7 @@ bool32 CanDynamax(u16 battlerId) #if B_FLAG_DYNAMAX_BATTLE != 0 if (!FlagGet(B_FLAG_DYNAMAX_BATTLE)) #endif - return FALSE; + //return FALSE; // Check if Player has a Dynamax Band. diff --git a/src/battle_util.c b/src/battle_util.c index 8d72452773..d24e03941f 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -10268,6 +10268,10 @@ bool32 TryBattleFormChange(u8 battlerId, u16 method) // Saves the original species on the first form change for the player. if (side == B_SIDE_PLAYER && gBattleStruct->changedSpecies[monId] == SPECIES_NONE) gBattleStruct->changedSpecies[monId] = gBattleMons[battlerId].species; + + // Saves the original species for Gigantamax forms for the opponent. + if (side == B_SIDE_OPPONENT && gBattleStruct->dynamax.opponentBaseForm == SPECIES_NONE) + gBattleStruct->dynamax.opponentBaseForm = gBattleMons[battlerId].species; TryToSetBattleFormChangeMoves(&party[monId], method); SetMonData(&party[monId], MON_DATA_SPECIES, &targetSpecies); @@ -10275,7 +10279,8 @@ bool32 TryBattleFormChange(u8 battlerId, u16 method) RecalcBattlerStats(battlerId, &party[monId]); return TRUE; } - else if (gBattleStruct->changedSpecies[monId] != SPECIES_NONE) + else if (gBattleStruct->changedSpecies[monId] != SPECIES_NONE + || gBattleStruct->dynamax.opponentBaseForm != SPECIES_NONE) { bool8 restoreSpecies = FALSE; @@ -10295,7 +10300,10 @@ bool32 TryBattleFormChange(u8 battlerId, u16 method) { // Reverts the original species TryToSetBattleFormChangeMoves(&party[monId], method); - SetMonData(&party[monId], MON_DATA_SPECIES, &gBattleStruct->changedSpecies[monId]); + if (side == B_SIDE_PLAYER) + SetMonData(&party[monId], MON_DATA_SPECIES, &gBattleStruct->changedSpecies[monId]); + else + SetMonData(&party[monId], MON_DATA_SPECIES, &gBattleStruct->dynamax.opponentBaseForm); RecalcBattlerStats(battlerId, &party[monId]); return TRUE; } From aac4ef4d2a4c87402839061d245a32e285f866c8 Mon Sep 17 00:00:00 2001 From: AgustinGDLV Date: Sat, 25 Mar 2023 20:02:48 -0700 Subject: [PATCH 064/162] fixed terrain effects --- data/battle_anim_scripts.s | 2 +- data/battle_scripts_1.s | 30 +++++++++++++++--------------- include/config.h | 2 +- src/battle_dynamax.c | 16 ++++++++-------- 4 files changed, 25 insertions(+), 25 deletions(-) diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index 230c98056b..df18992955 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -907,8 +907,8 @@ gBattleAnims_Moves:: .4byte Move_MAX_GEYSER .4byte Move_MAX_OVERGROWTH .4byte Move_MAX_LIGHTNING - .4byte Move_MAX_HAILSTORM .4byte Move_MAX_MINDSTORM + .4byte Move_MAX_HAILSTORM .4byte Move_MAX_WYRMWIND .4byte Move_MAX_DARKNESS .4byte Move_MAX_STARFALL diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 832892d3ee..1568bcfb97 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -10434,7 +10434,7 @@ BattleScript_RaiseSideStatsIncrement: setallytonexttarget BattleScript_RaiseSideStatsLoop BattleScript_RaiseSideStatsEnd: restoretarget - goto BattleScript_MoveEnd + return BattleScript_EffectLowerStatFoes:: savetarget @@ -10453,27 +10453,27 @@ BattleScript_LowerSideStatsIncrement: setallytonexttarget BattleScript_LowerSideStatsLoop BattleScript_LowerSideStatsEnd: restoretarget - goto BattleScript_MoveEnd + return BattleScript_EffectSetWeather:: playanimation 0, B_ANIM_MAX_SET_WEATHER printfromtable gMoveWeatherChangeStringIds waitmessage B_WAIT_TIME_LONG call BattleScript_WeatherFormChanges - goto BattleScript_MoveEnd + return BattleScript_EffectSetTerrain:: printfromtable gTerrainStringIds waitmessage B_WAIT_TIME_LONG - playanimation BS_SCRIPTING, B_ANIM_RESTORE_BG + playanimation BS_ATTACKER, B_ANIM_RESTORE_BG + call BattleScript_ActivateTerrainAbilities call BattleScript_TerrainSeedLoop - jumpifabilitypresent ABILITY_MIMICRY, BattleScript_MimicryActivates_End3 - goto BattleScript_MoveEnd + return BattleScript_DamageNonTypesStarts:: printfromtable gDamageNonTypesStartStringIds waitmessage B_WAIT_TIME_LONG - goto BattleScript_MoveEnd + return BattleScript_DamageNonTypesContinues:: setbyte gBattleCommunication, 0 @@ -10496,13 +10496,13 @@ BattleScript_DamageNonTypesLoopIncrement:: jumpifbytenotequal gBattleCommunication, gBattlersCount, BattleScript_DamageNonTypesLoop BattleScript_DamageNonTypesContinuesEnd:: bicword gHitMarker, HITMARKER_SKIP_DMG_TRACK | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE | HITMARKER_GRUDGE - end + return BattleScript_EffectTryReducePP:: tryspiteppreduce BattleScript_MoveEnd printstring STRINGID_PKMNREDUCEDPP waitmessage B_WAIT_TIME_LONG - goto BattleScript_MoveEnd + return BattleScript_EffectStatus1Foes:: savetarget @@ -10521,7 +10521,7 @@ BattleScript_Status1FoesIncrement: setallytonexttarget BattleScript_Status1FoesLoop BattleScript_Status1FoesEnd: restoretarget - goto BattleScript_MoveEnd + return BattleScript_EffectStatus2Foes:: savetarget @@ -10540,7 +10540,7 @@ BattleScript_Status2FoesIncrement: BattleScript_Status2FoesEnd: restoretarget jumpifbyte CMP_EQUAL, gBattleCommunication + 1, 1, BattleScript_PrintCoinsScattered @ Gold Rush - goto BattleScript_MoveEnd + return BattleScript_DoConfuseAnim: status2animation BS_EFFECT_BATTLER, STATUS2_CONFUSION @@ -10577,7 +10577,7 @@ BattleScript_RaiseCritAlliesIncrement: setallytonexttarget BattleScript_RaiseCritAlliesLoop BattleScript_RaiseCritAlliesEnd: restoretarget - goto BattleScript_MoveEnd + return BattleScript_EffectHealOneSixthAllies:: jumpifteamhealthy BS_ATTACKER, BattleScript_MoveEnd @@ -10596,7 +10596,7 @@ BattleScript_HealOneSixthAlliesIncrement: setallytonexttarget BattleScript_HealOneSixthAlliesLoop BattleScript_HealOneSixthAlliesEnd: restoretarget - goto BattleScript_MoveEnd + return BattleScript_EffectCureStatusAllies:: jumpifteamhealthy BS_ATTACKER, BattleScript_MoveEnd @@ -10610,7 +10610,7 @@ BattleScript_CureStatusAlliesIncrement: setallytonexttarget BattleScript_CureStatusAlliesLoop BattleScript_CureStatusAlliesEnd: restoretarget - goto BattleScript_MoveEnd + return BattleScript_CureStatusActivate: curestatus BS_TARGET @@ -10636,7 +10636,7 @@ BattleScript_RecycleBerriesAlliesIncrement: setallytonexttarget BattleScript_RecycleBerriesAlliesLoop BattleScript_RecycleBerriesAlliesEnd: restoretarget - goto BattleScript_MoveEnd + return @@@ END MAX MOVES @@@ diff --git a/include/config.h b/include/config.h index 2ad84f29cd..9412c8f426 100644 --- a/include/config.h +++ b/include/config.h @@ -6,7 +6,7 @@ // still has them in the ROM. This is because the developers forgot // to define NDEBUG before release, however this has been changed as // Ruby's actual debug build does not use the AGBPrint features. -#define NDEBUG +// #define NDEBUG // To enable printf debugging, comment out "#define NDEBUG". This allows // the various AGBPrint functions to be used. (See include/gba/isagbprint.h). diff --git a/src/battle_dynamax.c b/src/battle_dynamax.c index dc1b509cd6..261703f81a 100644 --- a/src/battle_dynamax.c +++ b/src/battle_dynamax.c @@ -115,7 +115,7 @@ bool32 CanDynamax(u16 battlerId) #if B_FLAG_DYNAMAX_BATTLE != 0 if (!FlagGet(B_FLAG_DYNAMAX_BATTLE)) #endif - //return FALSE; + return FALSE; // Check if Player has a Dynamax Band. @@ -630,23 +630,22 @@ u16 SetMaxMoveEffect(u16 move) case MAX_EFFECT_PSYCHIC_TERRAIN: { u32 statusFlag = 0; - u8 *timer = NULL; switch (gBattleMoves[gCurrentMove].argument) { case MAX_EFFECT_MISTY_TERRAIN: - statusFlag = STATUS_FIELD_MISTY_TERRAIN, timer = &gFieldTimers.terrainTimer; + statusFlag = STATUS_FIELD_MISTY_TERRAIN; gBattleCommunication[MULTISTRING_CHOOSER] = 0; break; case MAX_EFFECT_GRASSY_TERRAIN: - statusFlag = STATUS_FIELD_GRASSY_TERRAIN, timer = &gFieldTimers.terrainTimer; + statusFlag = STATUS_FIELD_GRASSY_TERRAIN; gBattleCommunication[MULTISTRING_CHOOSER] = 1; break; case MAX_EFFECT_ELECTRIC_TERRAIN: - statusFlag = STATUS_FIELD_ELECTRIC_TERRAIN, timer = &gFieldTimers.terrainTimer; + statusFlag = STATUS_FIELD_ELECTRIC_TERRAIN; gBattleCommunication[MULTISTRING_CHOOSER] = 2; break; case MAX_EFFECT_PSYCHIC_TERRAIN: - statusFlag = STATUS_FIELD_PSYCHIC_TERRAIN, timer = &gFieldTimers.terrainTimer; + statusFlag = STATUS_FIELD_PSYCHIC_TERRAIN; gBattleCommunication[MULTISTRING_CHOOSER] = 3; break; } @@ -655,11 +654,12 @@ u16 SetMaxMoveEffect(u16 move) gFieldStatuses &= ~STATUS_FIELD_TERRAIN_ANY; gFieldStatuses |= statusFlag; if (GetBattlerHoldEffect(gBattlerAttacker, TRUE) == HOLD_EFFECT_TERRAIN_EXTENDER) - *timer = 8; + gFieldTimers.terrainTimer = 8; else - *timer = 5; + gFieldTimers.terrainTimer = 5; BattleScriptPush(gBattlescriptCurrInstr + 1); gBattlescriptCurrInstr = BattleScript_EffectSetTerrain; + effect++; } break; } From aa80e3fd4e580c496d93920af36cf4169ac5e839 Mon Sep 17 00:00:00 2001 From: AgustinGDLV Date: Sun, 26 Mar 2023 19:14:33 -0700 Subject: [PATCH 065/162] fixed G-Max Wildfire, Max Guard interactions, and reworked changedSpecies --- data/battle_scripts_1.s | 2 +- include/battle.h | 3 +-- include/battle_dynamax.h | 1 + src/battle_dynamax.c | 19 +++++++++++++++++++ src/battle_main.c | 2 +- src/battle_script_commands.c | 2 +- src/battle_util.c | 25 +++++++++++-------------- src/pokemon.c | 2 +- test/dynamax.c | 9 --------- 9 files changed, 36 insertions(+), 29 deletions(-) diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 1568bcfb97..017f4a62db 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -10496,7 +10496,7 @@ BattleScript_DamageNonTypesLoopIncrement:: jumpifbytenotequal gBattleCommunication, gBattlersCount, BattleScript_DamageNonTypesLoop BattleScript_DamageNonTypesContinuesEnd:: bicword gHitMarker, HITMARKER_SKIP_DMG_TRACK | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE | HITMARKER_GRUDGE - return + end2 BattleScript_EffectTryReducePP:: tryspiteppreduce BattleScript_MoveEnd diff --git a/include/battle.h b/include/battle.h index 3e20ee565c..6a1772090c 100644 --- a/include/battle.h +++ b/include/battle.h @@ -533,7 +533,6 @@ struct DynamaxData u16 baseMove[MAX_BATTLERS_COUNT]; // base move of Max Move u16 lastUsedBaseMove; u16 levelUpHP; - u16 opponentBaseForm; // changedSpecies isn't used for opposing Pokemon }; struct StolenItem @@ -660,7 +659,7 @@ struct BattleStruct bool8 friskedAbility; // If identifies two mons, show the ability pop-up only once. u8 sameMoveTurns[MAX_BATTLERS_COUNT]; // For Metronome, number of times the same moves has been SUCCESFULLY used. u16 moveEffect2; // For Knock Off - u16 changedSpecies[PARTY_SIZE]; // For Zygarde or future forms when multiple mons can change into the same pokemon. + u16 changedSpecies[NUM_BATTLE_SIDES][PARTY_SIZE]; // For Zygarde or future forms when multiple mons can change into the same pokemon. u8 quickClawBattlerId; struct StolenItem itemStolen[PARTY_SIZE]; // Player's team that had items stolen (two bytes per party member) u8 blunderPolicy:1; // should blunder policy activate diff --git a/include/battle_dynamax.h b/include/battle_dynamax.h index fe679957dc..1fd19a3238 100644 --- a/include/battle_dynamax.h +++ b/include/battle_dynamax.h @@ -64,6 +64,7 @@ void PrepareBattlerForDynamax(u16 battlerId); u16 GetNonDynamaxHP(u16 battlerId); u16 GetNonDynamaxMaxHP(u16 battlerId); void UndoDynamax(u16 battlerId); +bool32 IsMoveBlockedByMaxGuard(u16 move); bool32 IsMoveBlockedByDynamax(u16 move); bool32 ShouldUseMaxMove(u16 battlerId, u16 baseMove); diff --git a/src/battle_dynamax.c b/src/battle_dynamax.c index 261703f81a..75f03d7f77 100644 --- a/src/battle_dynamax.c +++ b/src/battle_dynamax.c @@ -243,6 +243,25 @@ void UndoDynamax(u16 battlerId) TryBattleFormChange(battlerId, FORM_CHANGE_END_BATTLE); } +// Certain moves are blocked by Max Guard that normally ignore protection. +bool32 IsMoveBlockedByMaxGuard(u16 move) +{ + switch (move) + { + case MOVE_BLOCK: + case MOVE_FLOWER_SHIELD: + case MOVE_GEAR_UP: + case MOVE_MAGNETIC_FLUX: + case MOVE_PHANTOM_FORCE: + case MOVE_PSYCH_UP: + case MOVE_SHADOW_FORCE: + case MOVE_TEATIME: + case MOVE_TRANSFORM: + return TRUE; + } + return FALSE; +} + // Weight-based moves (and some other moves in Raids) are blocked by Dynamax. bool32 IsMoveBlockedByDynamax(u16 move) { diff --git a/src/battle_main.c b/src/battle_main.c index ffb1fd3908..f108a28f5f 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -5265,7 +5265,7 @@ static void HandleEndTurn_FinishBattle(void) changedForm = TryFormChange(i, B_SIDE_PLAYER, FORM_CHANGE_END_BATTLE); // Clear original species field - gBattleStruct->changedSpecies[i] = SPECIES_NONE; + gBattleStruct->changedSpecies[B_SIDE_PLAYER][i] = SPECIES_NONE; #if B_RECALCULATE_STATS >= GEN_5 // Recalculate the stats of every party member before the end diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 8855124dfd..194fa858e6 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -10615,7 +10615,7 @@ static void Cmd_various(void) { gBattleStruct->battleBondTransformed[GET_BATTLER_SIDE2(gBattlerAttacker)] |= gBitTable[gBattlerPartyIndexes[gBattlerAttacker]]; PREPARE_SPECIES_BUFFER(gBattleTextBuff1, gBattleMons[gBattlerAttacker].species); - gBattleStruct->changedSpecies[gBattlerPartyIndexes[gBattlerAttacker]] = gBattleMons[gBattlerAttacker].species; + gBattleStruct->changedSpecies[B_SIDE_PLAYER][gBattlerPartyIndexes[gBattlerAttacker]] = gBattleMons[gBattlerAttacker].species; gBattleMons[gBattlerAttacker].species = SPECIES_GRENINJA_ASH; BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_BattleBondActivatesOnMoveEndAttacker; diff --git a/src/battle_util.c b/src/battle_util.c index d24e03941f..0d9b87e012 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -8268,6 +8268,10 @@ bool32 IsBattlerProtected(u8 battlerId, u16 move) && (!gProtectStructs[battlerId].maxGuarded || gBattleMoves[move].argument == MAX_EFFECT_BYPASS_PROTECT)) return FALSE; + + // Max Guard is silly about the moves it blocks, including Teatime. + if (gProtectStructs[battlerId].maxGuarded && IsMoveBlockedByMaxGuard(move)) + return TRUE; if (move == MOVE_TEATIME) return FALSE; @@ -8275,7 +8279,8 @@ bool32 IsBattlerProtected(u8 battlerId, u16 move) // Protective Pads doesn't stop Unseen Fist from bypassing Protect effects, so IsMoveMakingContact() isn't used here. // This means extra logic is needed to handle Shell Side Arm. if (GetBattlerAbility(gBattlerAttacker) == ABILITY_UNSEEN_FIST - && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT || (gBattleMoves[move].effect == EFFECT_SHELL_SIDE_ARM && gBattleStruct->swapDamageCategory))) + && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT || (gBattleMoves[move].effect == EFFECT_SHELL_SIDE_ARM && gBattleStruct->swapDamageCategory)) + && !gProtectStructs[battlerId].maxGuarded) // Max Guard cannot be bypassed by Unseen Fist return FALSE; else if (!(gBattleMoves[move].flags & FLAG_PROTECT_AFFECTED)) return FALSE; @@ -10265,13 +10270,9 @@ bool32 TryBattleFormChange(u8 battlerId, u16 method) targetSpecies = GetFormChangeTargetSpecies(&party[monId], method, 0); if (targetSpecies != SPECIES_NONE) { - // Saves the original species on the first form change for the player. - if (side == B_SIDE_PLAYER && gBattleStruct->changedSpecies[monId] == SPECIES_NONE) - gBattleStruct->changedSpecies[monId] = gBattleMons[battlerId].species; - - // Saves the original species for Gigantamax forms for the opponent. - if (side == B_SIDE_OPPONENT && gBattleStruct->dynamax.opponentBaseForm == SPECIES_NONE) - gBattleStruct->dynamax.opponentBaseForm = gBattleMons[battlerId].species; + // Saves the original species on the first form change. + if (gBattleStruct->changedSpecies[side][monId] == SPECIES_NONE) + gBattleStruct->changedSpecies[side][monId] = gBattleMons[battlerId].species; TryToSetBattleFormChangeMoves(&party[monId], method); SetMonData(&party[monId], MON_DATA_SPECIES, &targetSpecies); @@ -10279,8 +10280,7 @@ bool32 TryBattleFormChange(u8 battlerId, u16 method) RecalcBattlerStats(battlerId, &party[monId]); return TRUE; } - else if (gBattleStruct->changedSpecies[monId] != SPECIES_NONE - || gBattleStruct->dynamax.opponentBaseForm != SPECIES_NONE) + else if (gBattleStruct->changedSpecies[side][monId] != SPECIES_NONE) { bool8 restoreSpecies = FALSE; @@ -10300,10 +10300,7 @@ bool32 TryBattleFormChange(u8 battlerId, u16 method) { // Reverts the original species TryToSetBattleFormChangeMoves(&party[monId], method); - if (side == B_SIDE_PLAYER) - SetMonData(&party[monId], MON_DATA_SPECIES, &gBattleStruct->changedSpecies[monId]); - else - SetMonData(&party[monId], MON_DATA_SPECIES, &gBattleStruct->dynamax.opponentBaseForm); + SetMonData(&party[monId], MON_DATA_SPECIES, &gBattleStruct->changedSpecies[side][monId]); RecalcBattlerStats(battlerId, &party[monId]); return TRUE; } diff --git a/src/pokemon.c b/src/pokemon.c index 49dce5e202..70c83d3b73 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -8720,7 +8720,7 @@ bool32 TryFormChange(u32 monId, u32 side, u16 method) targetSpecies = GetFormChangeTargetSpecies(&party[monId], method, 0); if (targetSpecies == SPECIES_NONE && gBattleStruct != NULL) - targetSpecies = gBattleStruct->changedSpecies[monId]; + targetSpecies = gBattleStruct->changedSpecies[side][monId]; if (targetSpecies != SPECIES_NONE) { diff --git a/test/dynamax.c b/test/dynamax.c index 8891f76a57..b48da3738d 100644 --- a/test/dynamax.c +++ b/test/dynamax.c @@ -1,15 +1,6 @@ #include "global.h" #include "test_battle.h" -// TODO: -// ========== -// TEST: Max Guard protects against Transform, Block (not Mean Look), Flower Shield, Gear Up, and so on (see Bulba). -// TEST: Imprison doesn't stop Max Moves. (YES!) -// TEST: Max Moves change type as you'd expect with Normalize, Weather Ball, etc. (YES!) -// TEST: You use Struggle while Dynamaxed if out of PP. (YES!) -// Dynamax should not reset Speed Swap, Soak, or anything else from form changing. (NO) -// Max Moves cannot be used against allies. (NO) - // ============= DYNAMAX AND MAX MOVE INTERACTIONS =================== SINGLE_BATTLE_TEST("(DYNAMAX) Dynamax increases HP and max HP by 1.5x") { From 8a963ca38a5593243e6f9300cb9ef7234680df39 Mon Sep 17 00:00:00 2001 From: AgustinGDLV Date: Mon, 27 Mar 2023 09:50:58 -0700 Subject: [PATCH 066/162] changed Dynamax animation --- data/battle_scripts_1.s | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 017f4a62db..34b3355102 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -10642,8 +10642,8 @@ BattleScript_RecycleBerriesAlliesEnd: BattleScript_DynamaxBegins:: printstring STRINGID_EMPTYSTRING3 - playanimation BS_SCRIPTING, B_ANIM_SLIDE_OFFSCREEN - waitanimation + returnatktoball + pause B_WAIT_TIME_SHORT returntoball BS_SCRIPTING switchinanim BS_SCRIPTING, TRUE updatedynamax From bd4d1644fda7f815839319de3fcc1d3c3005b09c Mon Sep 17 00:00:00 2001 From: AgustinGDLV Date: Mon, 3 Apr 2023 20:23:31 -0700 Subject: [PATCH 067/162] removed .yml file --- .github/workflows/manual.yml | 16 ---------------- 1 file changed, 16 deletions(-) delete mode 100644 .github/workflows/manual.yml diff --git a/.github/workflows/manual.yml b/.github/workflows/manual.yml deleted file mode 100644 index 0d724c4a44..0000000000 --- a/.github/workflows/manual.yml +++ /dev/null @@ -1,16 +0,0 @@ -name: Close issues related to a merged pull request based on master branch. - -on: - pull_request: - types: [closed] - branches: - - upcoming - -jobs: - closeIssueOnPrMergeTrigger: - - runs-on: ubuntu-latest - - steps: - - name: Closes issues related to a merged pull request. - uses: ldez/gha-mjolnir@v1.0.3 From 3b6389ec217d34763ebc8bbaf0ae14bd2b353929 Mon Sep 17 00:00:00 2001 From: AgustinGDLV Date: Thu, 11 May 2023 22:13:43 -0700 Subject: [PATCH 068/162] updated tests --- data/battle_scripts_1.s | 44 ++--- include/battle_scripts.h | 3 +- include/config.h | 2 +- include/random.h | 4 + src/battle_dynamax.c | 32 ++-- src/battle_script_commands.c | 2 +- test/dynamax.c | 308 ++++++++++++++++++++--------------- 7 files changed, 222 insertions(+), 173 deletions(-) diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 660da5d1bc..74ff203f1e 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -470,12 +470,6 @@ BattleScript_SpikesActivates:: waitmessage B_WAIT_TIME_LONG return -BattleScript_SteelsurgeActivates:: - setsteelsurge BattleScript_MoveEnd - printfromtable gDmgHazardsStringIds - waitmessage B_WAIT_TIME_LONG - goto BattleScript_MoveEnd - BattleScript_EffectAttackUpUserAlly: jumpifnoally BS_ATTACKER, BattleScript_EffectAttackUp attackcanceler @@ -10507,8 +10501,8 @@ BattleScript_EffectMaxMove:: waitmessage B_WAIT_TIME_LONG resultmessage waitmessage B_WAIT_TIME_LONG - tryfaintmon BS_TARGET setmaxmoveeffect + tryfaintmon BS_TARGET moveendall end @@ -10529,7 +10523,7 @@ BattleScript_RaiseSideStatsIncrement: setallytonexttarget BattleScript_RaiseSideStatsLoop BattleScript_RaiseSideStatsEnd: restoretarget - return + goto BattleScript_MoveEnd BattleScript_EffectLowerStatFoes:: savetarget @@ -10548,26 +10542,26 @@ BattleScript_LowerSideStatsIncrement: setallytonexttarget BattleScript_LowerSideStatsLoop BattleScript_LowerSideStatsEnd: restoretarget - return + goto BattleScript_MoveEnd BattleScript_EffectSetWeather:: playanimation 0, B_ANIM_MAX_SET_WEATHER printfromtable gMoveWeatherChangeStringIds waitmessage B_WAIT_TIME_LONG call BattleScript_ActivateWeatherAbilities - return + goto BattleScript_MoveEnd BattleScript_EffectSetTerrain:: printfromtable gTerrainStringIds waitmessage B_WAIT_TIME_LONG playanimation BS_ATTACKER, B_ANIM_RESTORE_BG call BattleScript_ActivateTerrainEffects - return + goto BattleScript_MoveEnd BattleScript_DamageNonTypesStarts:: printfromtable gDamageNonTypesStartStringIds waitmessage B_WAIT_TIME_LONG - return + goto BattleScript_MoveEnd BattleScript_DamageNonTypesContinues:: setbyte gBattleCommunication, 0 @@ -10596,7 +10590,7 @@ BattleScript_EffectTryReducePP:: tryspiteppreduce BattleScript_MoveEnd printstring STRINGID_PKMNREDUCEDPP waitmessage B_WAIT_TIME_LONG - return + goto BattleScript_MoveEnd BattleScript_EffectStatus1Foes:: savetarget @@ -10615,7 +10609,7 @@ BattleScript_Status1FoesIncrement: setallytonexttarget BattleScript_Status1FoesLoop BattleScript_Status1FoesEnd: restoretarget - return + goto BattleScript_MoveEnd BattleScript_EffectStatus2Foes:: savetarget @@ -10634,7 +10628,7 @@ BattleScript_Status2FoesIncrement: BattleScript_Status2FoesEnd: restoretarget jumpifbyte CMP_EQUAL, gBattleCommunication + 1, 1, BattleScript_PrintCoinsScattered @ Gold Rush - return + goto BattleScript_MoveEnd BattleScript_DoConfuseAnim: status2animation BS_EFFECT_BATTLER, STATUS2_CONFUSION @@ -10671,7 +10665,7 @@ BattleScript_RaiseCritAlliesIncrement: setallytonexttarget BattleScript_RaiseCritAlliesLoop BattleScript_RaiseCritAlliesEnd: restoretarget - return + goto BattleScript_MoveEnd BattleScript_EffectHealOneSixthAllies:: jumpifteamhealthy BS_ATTACKER, BattleScript_MoveEnd @@ -10690,7 +10684,7 @@ BattleScript_HealOneSixthAlliesIncrement: setallytonexttarget BattleScript_HealOneSixthAlliesLoop BattleScript_HealOneSixthAlliesEnd: restoretarget - return + goto BattleScript_MoveEnd BattleScript_EffectCureStatusAllies:: jumpifteamhealthy BS_ATTACKER, BattleScript_MoveEnd @@ -10704,7 +10698,7 @@ BattleScript_CureStatusAlliesIncrement: setallytonexttarget BattleScript_CureStatusAlliesLoop BattleScript_CureStatusAlliesEnd: restoretarget - return + goto BattleScript_MoveEnd BattleScript_CureStatusActivate: curestatus BS_TARGET @@ -10730,7 +10724,19 @@ BattleScript_RecycleBerriesAlliesIncrement: setallytonexttarget BattleScript_RecycleBerriesAlliesLoop BattleScript_RecycleBerriesAlliesEnd: restoretarget - return + goto BattleScript_MoveEnd + +BattleScript_EffectStonesurge:: + setstealthrock BattleScript_MoveEnd + printfromtable gDmgHazardsStringIds + waitmessage B_WAIT_TIME_LONG + goto BattleScript_MoveEnd + +BattleScript_EffectSteelsurge:: + setsteelsurge BattleScript_MoveEnd + printfromtable gDmgHazardsStringIds + waitmessage B_WAIT_TIME_LONG + goto BattleScript_MoveEnd @@@ END MAX MOVES @@@ diff --git a/include/battle_scripts.h b/include/battle_scripts.h index 43f33dcb9c..69c1c17c05 100644 --- a/include/battle_scripts.h +++ b/include/battle_scripts.h @@ -485,7 +485,8 @@ extern const u8 BattleScript_EffectRaiseStatAllies[]; extern const u8 BattleScript_EffectLowerStatFoes[]; extern const u8 BattleScript_EffectSetWeather[]; extern const u8 BattleScript_EffectSetTerrain[]; -extern const u8 BattleScript_SteelsurgeActivates[]; +extern const u8 BattleScript_EffectStonesurge[]; +extern const u8 BattleScript_EffectSteelsurge[]; extern const u8 BattleScript_SteelsurgeFree[]; extern const u8 BattleScript_SteelsurgeDefog[]; extern const u8 BattleScript_DamageNonTypesStarts[]; diff --git a/include/config.h b/include/config.h index 9412c8f426..2ad84f29cd 100644 --- a/include/config.h +++ b/include/config.h @@ -6,7 +6,7 @@ // still has them in the ROM. This is because the developers forgot // to define NDEBUG before release, however this has been changed as // Ruby's actual debug build does not use the AGBPrint features. -// #define NDEBUG +#define NDEBUG // To enable printf debugging, comment out "#define NDEBUG". This allows // the various AGBPrint functions to be used. (See include/gba/isagbprint.h). diff --git a/include/random.h b/include/random.h index e7c2a3e284..44900a2563 100644 --- a/include/random.h +++ b/include/random.h @@ -67,6 +67,10 @@ enum RandomTag RNG_STATIC, RNG_STENCH, RNG_TRI_ATTACK, + RNG_G_MAX_STUN_SHOCK, + RNG_G_MAX_BEFUDDLE, + RNG_G_MAX_REPLENISH, + RNG_G_MAX_SNOOZE, }; #define RandomWeighted(tag, ...) \ diff --git a/src/battle_dynamax.c b/src/battle_dynamax.c index c2de1842a8..c2bf7949e3 100644 --- a/src/battle_dynamax.c +++ b/src/battle_dynamax.c @@ -525,19 +525,14 @@ u32 GetMaxMoveStatusEffect(u16 move) case MAX_EFFECT_POISON_FOES: return STATUS1_POISON; case MAX_EFFECT_POISON_PARALYZE_FOES: - if (Random() % 2) - return STATUS1_POISON; - else - return STATUS1_PARALYSIS; + { + static const u8 sStunShockEffects[] = {STATUS1_PARALYSIS, STATUS1_POISON}; + return RandomElement(RNG_G_MAX_STUN_SHOCK, sStunShockEffects); + } case MAX_EFFECT_EFFECT_SPORE_FOES: { - u8 effect = Random() % 3; - if (effect == 0) - return STATUS1_PARALYSIS; - else if (effect == 1) - return STATUS1_POISON; - else - return STATUS1_SLEEP; + static const u8 sBefuddleEffects[] = {STATUS1_PARALYSIS, STATUS1_POISON, STATUS1_SLEEP}; + return RandomElement(RNG_G_MAX_BEFUDDLE, sBefuddleEffects); } // Status 2 case MAX_EFFECT_CONFUSE_FOES: @@ -705,7 +700,7 @@ u16 SetMaxMoveEffect(u16 move) { gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_POINTEDSTONESFLOAT; BattleScriptPush(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = BattleScript_StealthRockActivates; + gBattlescriptCurrInstr = BattleScript_EffectStonesurge; effect++; } break; @@ -714,7 +709,7 @@ u16 SetMaxMoveEffect(u16 move) { gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_SHARPSTEELFLOATS; BattleScriptPush(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = BattleScript_SteelsurgeActivates; + gBattlescriptCurrInstr = BattleScript_EffectSteelsurge; effect++; } break; @@ -787,9 +782,11 @@ u16 SetMaxMoveEffect(u16 move) break; } case MAX_EFFECT_YAWN_FOE: + { + static const u8 sSnoozeEffects[] = {TRUE, FALSE}; if (!(gStatuses3[gBattlerTarget] & STATUS3_YAWN) && CanSleep(gBattlerTarget) - && Random() % 2) // 50% chance of success + && RandomElement(RNG_G_MAX_SNOOZE, sSnoozeEffects)) // 50% chance of success { gStatuses3[gBattlerTarget] |= STATUS3_YAWN_TURN(2); BattleScriptPush(gBattlescriptCurrInstr + 1); @@ -797,6 +794,7 @@ u16 SetMaxMoveEffect(u16 move) effect++; } break; + } case MAX_EFFECT_SPITE: if (gLastMoves[gBattlerTarget] != MOVE_NONE && gLastMoves[gBattlerTarget] != MOVE_UNAVAILABLE) @@ -850,14 +848,16 @@ u16 SetMaxMoveEffect(u16 move) effect++; break; case MAX_EFFECT_RECYCLE_BERRIES: - if (Random() % 2) // 50% chance of success + { + static const u8 sReplenishEffects[] = {TRUE, FALSE}; + if (RandomElement(RNG_G_MAX_REPLENISH, sReplenishEffects)) // 50% chance of success { BattleScriptPush(gBattlescriptCurrInstr + 1); gBattlescriptCurrInstr = BattleScript_EffectRecycleBerriesAllies; effect++; } break; - + } } return effect; } diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 9c6b788205..72961abaa0 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -13495,7 +13495,7 @@ static void Cmd_painsplitdmgcalc(void) if (!(DoesSubstituteBlockMove(gBattlerAttacker, gBattlerTarget, gCurrentMove))) { s32 hpDiff = (gBattleMons[gBattlerAttacker].hp + GetNonDynamaxHP(gBattlerTarget)) / 2; - s32 painSplitHp = gBattleMoveDamage = gBattleMons[gBattlerTarget].hp - hpDiff; + s32 painSplitHp = gBattleMoveDamage = GetNonDynamaxHP(gBattlerTarget) - hpDiff; u8 *storeLoc = (void *)(&gBattleScripting.painSplitHp); storeLoc[0] = (painSplitHp); diff --git a/test/dynamax.c b/test/dynamax.c index 8540387be0..9704c6a07e 100644 --- a/test/dynamax.c +++ b/test/dynamax.c @@ -13,12 +13,10 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Dynamax increases HP and max HP by 1.5x", u16 hp) } WHEN { TURN { MOVE(player, MOVE_TACKLE, dynamax: dynamax); MOVE(opponent, MOVE_CELEBRATE); } } SCENE { - if (dynamax) - ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_DYNAMAX_GROWTH, player); - ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_DYNAMAX_GROWTH, player); - MESSAGE("Wobbuffet used Max Strike!"); + if (dynamax) { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_DYNAMAX_GROWTH, player); - MESSAGE("Wobbuffet used Max Strike!"); + MESSAGE("Wobbuffet used Max Strike!"); + } MESSAGE("Foe Wobbuffet used Celebrate!"); } THEN { results[i].hp = player->hp; @@ -520,91 +518,99 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon cannot use Max Guard while holdi // Anything that is conditional based off max HP still uses gBattleMons[battler].maxHP. // Below are some tests, but very far from all encompassing: -SINGLE_BATTLE_TEST("(DYNAMAX) Endeavor uses a Pokemon's non-Dynamax HP") +SINGLE_BATTLE_TEST("(DYNAMAX) Endeavor uses a Pokemon's non-Dynamax HP", s16 damage) { - s16 damage; + bool32 dynamax; + PARAMETRIZE { dynamax = TRUE; } + PARAMETRIZE { dynamax = FALSE; } GIVEN { ASSUME(gBattleMoves[MOVE_ENDEAVOR].effect == EFFECT_ENDEAVOR); - PLAYER(SPECIES_WOBBUFFET) { MaxHP(100); Speed(50); } - OPPONENT(SPECIES_WOBBUFFET) { HP(1); MaxHP(100); Speed(100); } + PLAYER(SPECIES_WOBBUFFET) { Speed(50); } + OPPONENT(SPECIES_WOBBUFFET) { HP(1); Speed(100); } } WHEN { - TURN { MOVE(opponent, MOVE_ENDEAVOR); MOVE(player, MOVE_TACKLE, dynamax: TRUE); } + TURN { MOVE(opponent, MOVE_ENDEAVOR); MOVE(player, MOVE_TACKLE, dynamax: dynamax); } } SCENE { MESSAGE("Foe Wobbuffet used Endeavor!"); - HP_BAR(player, captureDamage: &damage); + HP_BAR(player, captureDamage: &results[i].damage); } FINALLY { - EXPECT_EQ(damage, 99); // difference between foe's HP and player's non-dynamax HP + EXPECT_EQ(results[0].damage, results[1].damage); } } -SINGLE_BATTLE_TEST("(DYNAMAX) Super Fang uses a Pokemon's non-Dynamax HP") +SINGLE_BATTLE_TEST("(DYNAMAX) Super Fang uses a Pokemon's non-Dynamax HP", s16 damage) { - s16 damage; + bool32 dynamax; + PARAMETRIZE { dynamax = TRUE; } + PARAMETRIZE { dynamax = FALSE; } GIVEN { ASSUME(gBattleMoves[MOVE_SUPER_FANG].effect == EFFECT_SUPER_FANG); - PLAYER(SPECIES_WOBBUFFET) { HP(50); MaxHP(100); Speed(50); } + PLAYER(SPECIES_WOBBUFFET) { Speed(50); } OPPONENT(SPECIES_WOBBUFFET) { Speed(100); } } WHEN { - TURN { MOVE(opponent, MOVE_SUPER_FANG); MOVE(player, MOVE_TACKLE, dynamax: TRUE); } + TURN { MOVE(opponent, MOVE_SUPER_FANG); MOVE(player, MOVE_TACKLE, dynamax: dynamax); } } SCENE { MESSAGE("Foe Wobbuffet used Super Fang!"); - HP_BAR(player, captureDamage: &damage); + HP_BAR(player, captureDamage: &results[i].damage); } FINALLY { - EXPECT_EQ(damage, 25); + EXPECT_EQ(results[0].damage, results[1].damage); } } -SINGLE_BATTLE_TEST("(DYNAMAX) Pain Split uses a Pokemon's non-Dynamax HP") +SINGLE_BATTLE_TEST("(DYNAMAX) Pain Split uses a Pokemon's non-Dynamax HP", s16 damage) { - s16 damage; + bool32 dynamax; + PARAMETRIZE { dynamax = TRUE; } + PARAMETRIZE { dynamax = FALSE; } GIVEN { ASSUME(gBattleMoves[MOVE_PAIN_SPLIT].effect == EFFECT_PAIN_SPLIT); - PLAYER(SPECIES_WOBBUFFET) { HP(60); MaxHP(100); Speed(50); } - OPPONENT(SPECIES_WOBBUFFET) { HP(40); MaxHP(100); Speed(100); } + PLAYER(SPECIES_WOBBUFFET) { Speed(50); } + OPPONENT(SPECIES_WOBBUFFET) { HP(1); Speed(100); } } WHEN { - TURN { MOVE(opponent, MOVE_PAIN_SPLIT); MOVE(player, MOVE_TACKLE, dynamax: TRUE); } + TURN { MOVE(opponent, MOVE_PAIN_SPLIT); MOVE(player, MOVE_TACKLE, dynamax: dynamax); } } SCENE { MESSAGE("Foe Wobbuffet used Pain Split!"); - HP_BAR(player, captureDamage: &damage); + HP_BAR(player, captureDamage: &results[i].damage); } FINALLY { - EXPECT_EQ(damage, 10); + EXPECT_EQ(results[0].damage, results[1].damage); } } -SINGLE_BATTLE_TEST("(DYNAMAX) Sitrus Berries heal based on a Pokemon's non-Dynamax HP") +SINGLE_BATTLE_TEST("(DYNAMAX) Sitrus Berries heal based on a Pokemon's non-Dynamax HP", s16 damage) { - s16 damage; + bool32 dynamax; + PARAMETRIZE { dynamax = TRUE; } + PARAMETRIZE { dynamax = FALSE; } GIVEN { ASSUME(I_SITRUS_BERRY_HEAL >= GEN_4); ASSUME(gItems[ITEM_SITRUS_BERRY].holdEffect == HOLD_EFFECT_RESTORE_PCT_HP); - PLAYER(SPECIES_WOBBUFFET) { HP(60); MaxHP(100); Speed(50); Item(ITEM_SITRUS_BERRY); } - OPPONENT(SPECIES_WOBBUFFET) { HP(40); MaxHP(100); Speed(100); } + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_SITRUS_BERRY); } } WHEN { - TURN { MOVE(opponent, MOVE_PAIN_SPLIT); MOVE(player, MOVE_TACKLE, dynamax: TRUE); } + TURN { MOVE(opponent, MOVE_FLING); MOVE(player, MOVE_TACKLE, dynamax: dynamax); } } SCENE { - MESSAGE("Foe Wobbuffet used Pain Split!"); - HP_BAR(player); MESSAGE("Wobbuffet's Sitrus Berry restored health!"); - HP_BAR(player, captureDamage: &damage); + HP_BAR(player, captureDamage: &results[i].damage); } FINALLY { - EXPECT_EQ(damage, 25); + EXPECT_EQ(results[0].damage, results[1].damage); } } -SINGLE_BATTLE_TEST("(DYNAMAX) Heal Pulse heals based on a Pokemon's non-Dynamax HP") +SINGLE_BATTLE_TEST("(DYNAMAX) Heal Pulse heals based on a Pokemon's non-Dynamax HP", s16 damage) { - s16 damage; + bool32 dynamax; + PARAMETRIZE { dynamax = TRUE; } + PARAMETRIZE { dynamax = FALSE; } GIVEN { ASSUME(gBattleMoves[MOVE_HEAL_PULSE].effect == EFFECT_HEAL_PULSE); - PLAYER(SPECIES_WOBBUFFET) { HP(50); MaxHP(100); Speed(50); } + PLAYER(SPECIES_WOBBUFFET) { HP(1); Speed(50); } OPPONENT(SPECIES_WOBBUFFET) { MaxHP(100); Speed(100); } } WHEN { - TURN { MOVE(opponent, MOVE_HEAL_PULSE); MOVE(player, MOVE_TACKLE, dynamax: TRUE); } + TURN { MOVE(opponent, MOVE_HEAL_PULSE); MOVE(player, MOVE_TACKLE, dynamax: dynamax); } } SCENE { MESSAGE("Foe Wobbuffet used Heal Pulse!"); - HP_BAR(player, captureDamage: &damage); + HP_BAR(player, captureDamage: &results[i].damage); } FINALLY { - EXPECT_EQ(damage, 50); + EXPECT_EQ(results[0].damage, results[1].damage); } } @@ -624,11 +630,11 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Max Strike lowers single opponent's speed") MESSAGE("Foe Wobbuffet used Tackle!"); MESSAGE("Wobbuffet used Max Strike!"); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); - MESSAGE("Foe Wobbuffet's speed fell!"); + MESSAGE("Foe Wobbuffet's Speed fell!"); // turn 2 MESSAGE("Wobbuffet used Max Strike!"); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); - MESSAGE("Foe Wobbuffet's speed fell!"); + MESSAGE("Foe Wobbuffet's Speed fell!"); ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); } } @@ -637,7 +643,6 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Max Strike lowers single opponent's speed") DOUBLE_BATTLE_TEST("(DYNAMAX) Max Strike lowers both opponents' speed") { GIVEN { - // Fails? ASSUME(GetMaxMove(B_POSITION_PLAYER_LEFT, MOVE_TACKLE) == MOVE_MAX_STRIKE); ASSUME(gBattleMoves[MOVE_MAX_STRIKE].argument == MAX_EFFECT_LOWER_SPEED); PLAYER(SPECIES_WOBBUFFET) { Speed(80); } PLAYER(SPECIES_WOBBUFFET) { Speed(79); } @@ -656,15 +661,15 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) Max Strike lowers both opponents' speed") MESSAGE("Foe Wobbuffet used Tackle!"); MESSAGE("Wobbuffet used Max Strike!"); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentLeft); - MESSAGE("Foe Wobbuffet's speed fell!"); + MESSAGE("Foe Wobbuffet's Speed fell!"); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentRight); - MESSAGE("Foe Wobbuffet's speed fell!"); + MESSAGE("Foe Wobbuffet's Speed fell!"); // turn 2 MESSAGE("Wobbuffet used Max Strike!"); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentLeft); - MESSAGE("Foe Wobbuffet's speed fell!"); + MESSAGE("Foe Wobbuffet's Speed fell!"); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentRight); - MESSAGE("Foe Wobbuffet's speed fell!"); + MESSAGE("Foe Wobbuffet's Speed fell!"); MESSAGE("Foe Wobbuffet used Tackle!"); MESSAGE("Foe Wobbuffet used Tackle!"); } @@ -690,9 +695,9 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) Max Knuckle raises both allies' attack") MESSAGE("Wobbuffet used Max Knuckle!"); HP_BAR(opponentLeft, captureDamage: &damage[0]); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerLeft); - MESSAGE("Wobbuffet's attack rose!"); + MESSAGE("Wobbuffet's Attack rose!"); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerRight); - MESSAGE("Wynaut's attack rose!"); + MESSAGE("Wynaut's Attack rose!"); MESSAGE("Wynaut used Tackle!"); HP_BAR(opponentRight, captureDamage: &damage[1]); MESSAGE("Foe Wobbuffet used Celebrate!"); @@ -701,12 +706,12 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) Max Knuckle raises both allies' attack") MESSAGE("Wobbuffet used Max Knuckle!"); HP_BAR(opponentLeft, captureDamage: &damage[2]); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerLeft); - MESSAGE("Wobbuffet's attack rose!"); + MESSAGE("Wobbuffet's Attack rose!"); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerRight); - MESSAGE("Wynaut's attack rose!"); + MESSAGE("Wynaut's Attack rose!"); MESSAGE("Wynaut used Tackle!"); HP_BAR(opponentRight, captureDamage: &damage[3]); - } FINALLY { + } THEN { EXPECT_GT(damage[2], damage[0]); EXPECT_GT(damage[3], damage[1]); } @@ -863,13 +868,12 @@ SINGLE_BATTLE_TEST("(DYNAMAX) G-Max Stonesurge sets up Stealth Rocks") // The test below also tests that sharp steel does type-based damage and can be Defogged away. SINGLE_BATTLE_TEST("(DYNAMAX) G-Max Steelsurge sets up sharp steel") { - s16 damage; GIVEN { ASSUME(P_GEN_8_POKEMON == TRUE); ASSUME(gBattleMoves[MOVE_G_MAX_STEELSURGE].argument == MAX_EFFECT_STEELSURGE); PLAYER(SPECIES_COPPERAJAH); OPPONENT(SPECIES_WOBBUFFET); - OPPONENT(SPECIES_CLEFABLE) { MaxHP(100); } + OPPONENT(SPECIES_HATTERENE); } WHEN { TURN { MOVE(player, MOVE_IRON_HEAD, dynamax: TRUE); } TURN { SWITCH(opponent, 1); } @@ -880,13 +884,13 @@ SINGLE_BATTLE_TEST("(DYNAMAX) G-Max Steelsurge sets up sharp steel") MESSAGE("Copperajah used G-Max Steelsurge!"); MESSAGE("Sharp-pointed steel floats around the opposing team!"); // turn 2 - HP_BAR(opponent, captureDamage: &damage); - MESSAGE("Sharp steel bit into Foe Clefable!"); + MESSAGE("2 sent out Hatterene!"); + MESSAGE("Sharp steel bit into Foe Hatterene!"); // turn 4 - MESSAGE("Foe Clefable used Defog!"); + MESSAGE("Foe Hatterene used Defog!"); MESSAGE("The sharp steel disappeared from the ground around the opposing team!"); - } FINALLY { - EXPECT_EQ(damage, 25); + } THEN { + EXPECT_MUL_EQ(opponent->maxHP, Q_4_12(0.75), opponent->hp); } } @@ -932,9 +936,15 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Volt Crash paralyzes both opponents") } } +// G-Max Stun Shock can apply different statuses to each opponent, but this isn't +// compatible with the test RNG set-up. DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Stun Shock paralyzes or poisons both opponents") { - KNOWN_FAILING; // RNG issues + u8 statusAnim; + u16 species; + u32 rng; + PARAMETRIZE { statusAnim = B_ANIM_STATUS_PRZ; rng = STATUS1_PARALYSIS; } + PARAMETRIZE { statusAnim = B_ANIM_STATUS_PSN; rng = STATUS1_POISON; } GIVEN { ASSUME(P_GEN_8_POKEMON == TRUE); ASSUME(gBattleMoves[MOVE_G_MAX_STUN_SHOCK].argument == MAX_EFFECT_POISON_PARALYZE_FOES); @@ -943,22 +953,36 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Stun Shock paralyzes or poisons both opponen OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WYNAUT); } WHEN { - TURN { MOVE(playerLeft, MOVE_THUNDERBOLT, target: opponentLeft, dynamax: TRUE); } + TURN { MOVE(playerLeft, MOVE_THUNDERBOLT, target: opponentLeft, dynamax: TRUE, \ + WITH_RNG(RNG_G_MAX_STUN_SHOCK, rng)); } } SCENE { MESSAGE("Toxtricity used G-Max Stun Shock!"); - ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, opponentLeft); - STATUS_ICON(opponentLeft, poison: TRUE); - MESSAGE("Foe Wobbuffet was poisoned!"); - ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PRZ, opponentRight); - STATUS_ICON(opponentRight, paralysis: TRUE); - MESSAGE("Foe Wynaut is paralyzed! It may be unable to move!"); + // opponent left + ANIMATION(ANIM_TYPE_STATUS, statusAnim, opponentLeft); + if (statusAnim == B_ANIM_STATUS_PSN) { + STATUS_ICON(opponentLeft, poison: TRUE); + MESSAGE("Foe Wobbuffet was poisoned!"); + } + else { + STATUS_ICON(opponentLeft, paralysis: TRUE); + MESSAGE("Foe Wobbuffet is paralyzed! It may be unable to move!"); + } + // opponent right + ANIMATION(ANIM_TYPE_STATUS, statusAnim, opponentRight); + if (statusAnim == B_ANIM_STATUS_PSN) { + STATUS_ICON(opponentRight, poison: TRUE); + MESSAGE("Foe Wynaut was poisoned!"); + } + else { + STATUS_ICON(opponentRight, paralysis: TRUE); + MESSAGE("Foe Wynaut is paralyzed! It may be unable to move!"); + } } } // This test extends to G-Max Befuddle, too. DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Stun Shock chooses statuses before considering immunities") { - KNOWN_FAILING; // RNG issues GIVEN { ASSUME(P_GEN_8_POKEMON == TRUE); ASSUME(gBattleMoves[MOVE_G_MAX_STUN_SHOCK].argument == MAX_EFFECT_POISON_PARALYZE_FOES); @@ -967,53 +991,72 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Stun Shock chooses statuses before consideri OPPONENT(SPECIES_GARBODOR); OPPONENT(SPECIES_TRUBBISH); } WHEN { - TURN { MOVE(playerLeft, MOVE_NUZZLE, target: opponentLeft, dynamax: TRUE); } + TURN { MOVE(playerLeft, MOVE_NUZZLE, target: opponentLeft, dynamax: TRUE, \ + WITH_RNG(RNG_G_MAX_STUN_SHOCK, STATUS1_POISON)); } } SCENE { MESSAGE("Toxtricity used G-Max Stun Shock!"); NONE_OF { - ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PRZ, opponentLeft); - ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, opponentLeft); + // opponent left + STATUS_ICON(opponentLeft, poison: TRUE); + MESSAGE("Foe Garbodor was poisoned!"); + STATUS_ICON(opponentLeft, paralysis: TRUE); + MESSAGE("Foe Garbodor is paralyzed! It may be unable to move!"); + // opponent right + STATUS_ICON(opponentRight, poison: TRUE); + MESSAGE("Foe Trubbish was poisoned!"); + STATUS_ICON(opponentRight, paralysis: TRUE); + MESSAGE("Foe Trubbish is paralyzed! It may be unable to move!"); } - ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PRZ, opponentRight); - MESSAGE("Foe Trubbish is paralyzed! It may be unable to move!"); - STATUS_ICON(opponentRight, paralysis: TRUE); - } FINALLY { - EXPECT_EQ(gBattleMons[B_POSITION_OPPONENT_LEFT].status1, STATUS1_NONE); } } DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Befuddle paralyzes, poisons, or sleeps both opponents") { - KNOWN_FAILING; // RNG issues + u8 statusAnim; + u16 species; + u32 rng; + PARAMETRIZE { statusAnim = B_ANIM_STATUS_PRZ; rng = STATUS1_PARALYSIS; } + PARAMETRIZE { statusAnim = B_ANIM_STATUS_PSN; rng = STATUS1_POISON; } + PARAMETRIZE { statusAnim = B_ANIM_STATUS_SLP; rng = STATUS1_SLEEP; } GIVEN { - RNGSeed(0x10000); ASSUME(gBattleMoves[MOVE_G_MAX_BEFUDDLE].argument == MAX_EFFECT_EFFECT_SPORE_FOES); PLAYER(SPECIES_BUTTERFREE); PLAYER(SPECIES_CATERPIE); OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); - OPPONENT(SPECIES_WOBBUFFET); - OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(playerLeft, MOVE_BUG_BITE, target: opponentLeft, dynamax: TRUE); } - TURN { SWITCH(opponentLeft, 2); SWITCH(opponentRight, 3); \ - MOVE(playerLeft, MOVE_BUG_BITE, target: opponentLeft); } + TURN { MOVE(playerLeft, MOVE_BUG_BITE, target: opponentLeft, dynamax: TRUE, + WITH_RNG(RNG_G_MAX_BEFUDDLE, rng)); } } SCENE { - // turn 1 MESSAGE("Butterfree used G-Max Befuddle!"); - ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, opponentLeft); - STATUS_ICON(opponentLeft, poison: TRUE); - MESSAGE("Foe Wobbuffet was poisoned!"); - ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_SLP, opponentRight); - STATUS_ICON(opponentRight, sleep: TRUE); - MESSAGE("Foe Wobbuffet fell asleep!"); - // turn 2 - ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PRZ, opponentLeft); - MESSAGE("Foe Wobbuffet is paralyzed! It may be unable to move!"); - STATUS_ICON(opponentLeft, paralysis: TRUE); - ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, opponentRight); - MESSAGE("Foe Wobbuffet was poisoned!"); - STATUS_ICON(opponentRight, poison: TRUE); + // opponent left + ANIMATION(ANIM_TYPE_STATUS, statusAnim, opponentLeft); + if (statusAnim == B_ANIM_STATUS_PSN) { + STATUS_ICON(opponentLeft, poison: TRUE); + MESSAGE("Foe Wobbuffet was poisoned!"); + } + else if (statusAnim == B_ANIM_STATUS_PRZ) { + STATUS_ICON(opponentLeft, paralysis: TRUE); + MESSAGE("Foe Wobbuffet is paralyzed! It may be unable to move!"); + } + else { + STATUS_ICON(opponentLeft, sleep: TRUE); + MESSAGE("Foe Wobbuffet fell asleep!"); + } + // opponent right + ANIMATION(ANIM_TYPE_STATUS, statusAnim, opponentRight); + if (statusAnim == B_ANIM_STATUS_PSN) { + STATUS_ICON(opponentRight, poison: TRUE); + MESSAGE("Foe Wobbuffet was poisoned!"); + } + else if (statusAnim == B_ANIM_STATUS_PRZ) { + STATUS_ICON(opponentRight, paralysis: TRUE); + MESSAGE("Foe Wobbuffet is paralyzed! It may be unable to move!"); + } + else { + STATUS_ICON(opponentRight, sleep: TRUE); + MESSAGE("Foe Wobbuffet fell asleep!"); + } } } @@ -1073,7 +1116,7 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Cuddle infatuates both opponents, if possibl MESSAGE("Foe Wobbuffet fell in love!"); NONE_OF { ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_INFATUATION, opponentRight); - MESSAGE("Foe Wobbuffet became confused!"); + MESSAGE("Foe Wobbuffet fell in love!"); } } } @@ -1092,8 +1135,8 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Terror traps both opponents") MESSAGE("Gengar used G-Max Terror!"); MESSAGE("Foe Wobbuffet can't escape now!"); MESSAGE("Foe Wobbuffet can't escape now!"); - } FINALLY { // Can't find good way to test trapping - EXPECT(gBattleMons[B_POSITION_OPPONENT_LEFT].status2 & STATUS2_ESCAPE_PREVENTION); + } THEN { // Can't find good way to test trapping + EXPECT(opponentLeft->status2 & STATUS2_ESCAPE_PREVENTION); } } @@ -1175,16 +1218,14 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Wildfire sets a field effect that damages no HP_BAR(opponentRight); MESSAGE("Foe Wynaut is burning up within G-Max Wildfire's flames!"); } - } FINALLY { + } THEN { EXPECT_EQ(damage, 100); } } -// This should probably be tested to only occur 50% of the time. -// I had some problems specific to Teatime with this where Snorlax stored -// the used berry in usedHeldItem, while Munchlax stored it in changedItem. -DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Replenish recycles allies' berries") +DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Replenish recycles allies' berries 50\% of the time") { + PASSES_RANDOMLY(1, 2, RNG_G_MAX_REPLENISH); GIVEN { ASSUME(gBattleMoves[MOVE_G_MAX_REPLENISH].argument == MAX_EFFECT_RECYCLE_BERRIES); PLAYER(SPECIES_SNORLAX) { Item(ITEM_APICOT_BERRY); } @@ -1199,10 +1240,10 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Replenish recycles allies' berries") TURN { MOVE(playerLeft, MOVE_TACKLE, target: opponentLeft, dynamax: TRUE); } } SCENE { // turn 1 - MESSAGE("Using Apicot Berry, the sp. defense of Snorlax rose!"); - MESSAGE("Using Apicot Berry, the sp. defense of Munchlax rose!"); - MESSAGE("Using Apicot Berry, the sp. defense of Foe Wobbuffet rose!"); - MESSAGE("Using Apicot Berry, the sp. defense of Foe Wobbuffet rose!"); + MESSAGE("Using Apicot Berry, the Sp. Def of Snorlax rose!"); + MESSAGE("Using Apicot Berry, the Sp. Def of Munchlax rose!"); + MESSAGE("Using Apicot Berry, the Sp. Def of Foe Wobbuffet rose!"); + MESSAGE("Using Apicot Berry, the Sp. Def of Foe Wobbuffet rose!"); // turn 2 MESSAGE("Snorlax used G-Max Replenish!"); MESSAGE("Snorlax found one Apicot Berry!"); @@ -1212,7 +1253,7 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Replenish recycles allies' berries") DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Snooze makes only the target drowsy") { - KNOWN_FAILING; // RNG issues + PASSES_RANDOMLY(1, 2, RNG_G_MAX_SNOOZE); GIVEN { ASSUME(P_GEN_8_POKEMON == TRUE); ASSUME(gBattleMoves[MOVE_G_MAX_SNOOZE].argument == MAX_EFFECT_YAWN_FOE); @@ -1227,15 +1268,10 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Snooze makes only the target drowsy") // turn 1 MESSAGE("Grimmsnarl used G-Max Snooze!"); MESSAGE("Grimmsnarl made Foe Blissey drowsy!"); - NONE_OF { MESSAGE("Grimmsnarl made Foe Chansey drowsy!"); } // turn 2 ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_SLP, opponentLeft); MESSAGE("Foe Blissey fell asleep!"); STATUS_ICON(opponentLeft, sleep: TRUE); - NONE_OF { - ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_SLP, opponentRight); - STATUS_ICON(opponentRight, sleep: TRUE); - } } } @@ -1245,20 +1281,19 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Finale heals allies by 1/6 of their health") GIVEN { ASSUME(P_GEN_8_POKEMON == TRUE); ASSUME(gBattleMoves[MOVE_G_MAX_FINALE].argument == MAX_EFFECT_HEAL_TEAM); - PLAYER(SPECIES_ALCREMIE) { HP(200); MaxHP(300); } - PLAYER(SPECIES_MILCERY) { HP(200); MaxHP(300); } + PLAYER(SPECIES_ALCREMIE) { HP(1); } + PLAYER(SPECIES_MILCERY) { HP(1); } OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(playerLeft, MOVE_MOONBLAST, target: opponentLeft, dynamax: TRUE); } } SCENE { - // turn 1 MESSAGE("Alcremie used G-Max Finale!"); HP_BAR(playerLeft, captureDamage: &damage1); HP_BAR(playerRight, captureDamage: &damage2); - } FINALLY { - EXPECT_EQ(damage1, -75); // heals based on Dynamax HP - EXPECT_EQ(damage2, -50); + } THEN { + EXPECT_MUL_EQ(playerLeft->hp - 1, Q_4_12(6), playerLeft->maxHP); // heals based on Dynamax HP + EXPECT_MUL_EQ(playerRight->hp - 1, Q_4_12(6), playerRight->maxHP); } } @@ -1283,7 +1318,7 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Sweetness cures allies' status conditions") } } -// This test should apply to G-Max Sandblast, too. +// This test applies to G-Max Sandblast, too. DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Centiferno traps both opponents in Fire Spin") { s16 damage1, damage2; @@ -1316,7 +1351,8 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Centiferno traps both opponents in Fire Spin DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Chi Strike boosts allies' crit chance") { s16 damage1, damage2; - KNOWN_FAILING; + u32 j; + KNOWN_FAILING; // Debug printing confirms Machop is at +5 crit stages. Not sure what's broken. GIVEN { ASSUME(B_CRIT_CHANCE >= GEN_6); ASSUME(gBattleMoves[MOVE_G_MAX_CHI_STRIKE].argument == MAX_EFFECT_CRIT_PLUS); @@ -1325,20 +1361,22 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Chi Strike boosts allies' crit chance") OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(playerLeft, MOVE_FORCE_PALM, target: opponentLeft, dynamax: TRUE); \ + TURN { MOVE(playerLeft, MOVE_FORCE_PALM, target: opponentLeft, dynamax: TRUE); } + TURN { MOVE(playerLeft, MOVE_FORCE_PALM, target: opponentLeft); } + TURN { MOVE(playerLeft, MOVE_FORCE_PALM, target: opponentLeft); \ MOVE(playerRight, MOVE_FOCUS_ENERGY); } TURN { MOVE(playerRight, MOVE_TACKLE, target: opponentLeft); } } SCENE { - // turn 1 - MESSAGE("Machamp used G-Max Chi Strike!"); - ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerLeft); - MESSAGE("Machamp is getting pumped!"); - ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerRight); - MESSAGE("Machop is getting pumped!"); - MESSAGE("Machop used Focus Energy!"); - MESSAGE("Machop is getting pumped!"); - // turn 2 - MESSAGE("Machop used Tackle!"); // Machop is at +3 crit stages, 100% crit chance + // turn 1 - 3 + for (j = 0; j < 3; ++j) { + MESSAGE("Machamp used G-Max Chi Strike!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerLeft); + MESSAGE("Machamp is getting pumped!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerRight); + MESSAGE("Machop is getting pumped!"); + } + // turn 4 + MESSAGE("Machop used Tackle!"); // Machop is at +5 crit stages MESSAGE("A critical hit!"); } } @@ -1362,7 +1400,7 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Depletion takes away 2 PP from the target's } } -// This test should apply to G-Max Rapid Flow, too. +// This test applies to G-Max Rapid Flow, too. DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max One Blow bypasses Max Guard for full damage", s16 damage) { bool32 protect; From dceefacb9544aebc834ba6823fd3500573a1d85d Mon Sep 17 00:00:00 2001 From: AgustinGDLV Date: Thu, 11 May 2023 22:35:08 -0700 Subject: [PATCH 069/162] moved tryfaintmon back, no bugs? --- data/battle_scripts_1.s | 2 +- test/dynamax.c | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 74ff203f1e..b22278b73d 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -10501,8 +10501,8 @@ BattleScript_EffectMaxMove:: waitmessage B_WAIT_TIME_LONG resultmessage waitmessage B_WAIT_TIME_LONG - setmaxmoveeffect tryfaintmon BS_TARGET + setmaxmoveeffect moveendall end diff --git a/test/dynamax.c b/test/dynamax.c index 9704c6a07e..c176873b64 100644 --- a/test/dynamax.c +++ b/test/dynamax.c @@ -1429,3 +1429,35 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max One Blow bypasses Max Guard for full damage" EXPECT_EQ(results[0].damage, results[1].damage); } } + +// Bug Testing +DOUBLE_BATTLE_TEST("(DYNAMAX) Max Flare doesn't softlock the game when fainting player partner") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WOBBUFFET) { HP(1); }; + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(playerLeft, MOVE_PROTECT, dynamax: TRUE); + MOVE(opponentLeft, MOVE_V_CREATE, target: playerRight, dynamax: TRUE); + SEND_OUT(playerRight, 2); } + TURN { } + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Max Moves don't execute effects on fainted battlers") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET) { HP(1); }; + } WHEN { + TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); } + } SCENE { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_DYNAMAX_GROWTH, player); + MESSAGE("Wobbuffet used Max Strike!"); + MESSAGE("Foe Wobbuffet fainted!"); + NOT MESSAGE("Foe Wobbuffet's Speed fell!"); + } +} From e47eca1c5aad96a3435511224c7bd57fbbd72f71 Mon Sep 17 00:00:00 2001 From: AgustinGDLV Date: Sat, 13 May 2023 22:07:04 -0700 Subject: [PATCH 070/162] mid converting script commands to callnative --- asm/macros/battle_script.inc | 18 +- include/battle_dynamax.h | 12 +- include/constants/battle_script_commands.h | 10 - src/battle_dynamax.c | 248 ++++++++++++++++++++- src/battle_script_commands.c | 213 ------------------ 5 files changed, 261 insertions(+), 240 deletions(-) diff --git a/asm/macros/battle_script.inc b/asm/macros/battle_script.inc index 849e20bc98..d821b9a7c2 100644 --- a/asm/macros/battle_script.inc +++ b/asm/macros/battle_script.inc @@ -2249,44 +2249,44 @@ @ Used to active a different Max Move effects. .macro setmaxmoveeffect - various 0, VARIOUS_SET_MAX_MOVE_EFFECT + callnative BS_SetMaxMoveEffect .endm .macro setsteelsurge, failInstr:req - various 0, VARIOUS_SET_STEELSURGE + callnative BS_SetSteelsurge .4byte \failInstr .endm .macro damagenontypes - various 0, VARIOUS_DAMAGE_NON_TYPES + callnative BS_DamageNonTypes .endm .macro trysetstatus1, ptr:req - various 0, VARIOUS_TRY_SET_STATUS1 + callnative BS_TrySetStatus1 .4byte \ptr .endm .macro trysetstatus2, ptr:req - various 0, VARIOUS_TRY_SET_STATUS2 + callnative BS_TrySetStatus2 .4byte \ptr .endm .macro tryhealsixthhealth, ptr:req - various 0, VARIOUS_TRY_HEAL_SIXTH_HP + callnative BS_HealOneSixth .4byte \ptr .endm .macro tryrecycleberry, ptr:req - various 0, VARIOUS_TRY_RECYCLE_BERRY + callnative BS_TryRecycleBerry .4byte \ptr .endm .macro updatedynamax - various 0, VARIOUS_UPDATE_DYNAMAX + callnative BS_UpdateDynamax .endm .macro jumpiftargetdynamaxed, ptr:req - various 0, VARIOUS_JUMP_IF_TARGET_DYNAMAXED + callnative BS_JumpIfDynamaxed .4byte \ptr .endm diff --git a/include/battle_dynamax.h b/include/battle_dynamax.h index 1fd19a3238..e9f2ae8472 100644 --- a/include/battle_dynamax.h +++ b/include/battle_dynamax.h @@ -73,8 +73,16 @@ u8 GetMaxMovePower(u16 move); bool32 IsMaxMove(u16 move); const u8 *GetMaxMoveName(u16 move); void ChooseDamageNonTypesString(u8 type); -u32 GetMaxMoveStatusEffect(u16 move); -u16 SetMaxMoveEffect(u16 move); + +void BS_UpdateDynamax(void); +void BS_SetMaxMoveEffect(void); +void BS_SetSteelsurge(void); +void BS_TrySetStatus1(void); +void BS_TrySetStatus2(void); +void BS_DamageNonTypes(void); +void BS_HealOneSixth(void); +void BS_TryRecycleBerry(void); +void BS_JumpIfDynamaxed(void); void ChangeDynamaxTriggerSprite(u8 spriteId, u8 animId); void CreateDynamaxTriggerSprite(u8, bool8); diff --git a/include/constants/battle_script_commands.h b/include/constants/battle_script_commands.h index bbc1cf99c5..2be15be581 100644 --- a/include/constants/battle_script_commands.h +++ b/include/constants/battle_script_commands.h @@ -262,16 +262,6 @@ #define VARIOUS_TRY_REVIVAL_BLESSING 170 #define VARIOUS_TRY_TRAINER_SLIDE_MSG_Z_MOVE 171 #define VARIOUS_TRY_TRAINER_SLIDE_MSG_MEGA_EVOLUTION 172 -#define VARIOUS_SET_MAX_MOVE_EFFECT 173 -#define VARIOUS_JUMP_IF_NO_VALID_TARGETS 174 -#define VARIOUS_SET_STEELSURGE 175 -#define VARIOUS_DAMAGE_NON_TYPES 176 -#define VARIOUS_TRY_SET_STATUS1 177 -#define VARIOUS_TRY_SET_STATUS2 178 -#define VARIOUS_TRY_HEAL_SIXTH_HP 179 -#define VARIOUS_TRY_RECYCLE_BERRY 180 -#define VARIOUS_UPDATE_DYNAMAX 181 -#define VARIOUS_JUMP_IF_TARGET_DYNAMAXED 182 // Cmd_manipulatedamage #define DMG_CHANGE_SIGN 0 diff --git a/src/battle_dynamax.c b/src/battle_dynamax.c index c2bf7949e3..1a2660d9a3 100644 --- a/src/battle_dynamax.c +++ b/src/battle_dynamax.c @@ -514,7 +514,7 @@ void ChooseDamageNonTypesString(u8 type) } // Returns the status effect that should be applied by a G-Max Move. -u32 GetMaxMoveStatusEffect(u16 move) +static u32 GetMaxMoveStatusEffect(u16 move) { u8 maxEffect = gBattleMoves[move].argument; switch (maxEffect) @@ -547,15 +547,48 @@ u32 GetMaxMoveStatusEffect(u16 move) } } -// Activates the secondary effect of a Max Move. -u16 SetMaxMoveEffect(u16 move) +// CALLNATIVE FUNCTIONS +#define CMD_ARGS(...) const struct __attribute__((packed)) { u8 opcode; MEMBERS(__VA_ARGS__) const u8 nextInstr[0]; } *const cmd = (const void *)gBattlescriptCurrInstr +#define NATIVE_ARGS(...) CMD_ARGS(void (*func)(void), ##__VA_ARGS__) + +#define MEMBERS(...) VARARG_8(MEMBERS_, __VA_ARGS__) +#define MEMBERS_0() +#define MEMBERS_1(a) a; +#define MEMBERS_2(a, b) a; b; +#define MEMBERS_3(a, b, c) a; b; c; +#define MEMBERS_4(a, b, c, d) a; b; c; d; +#define MEMBERS_5(a, b, c, d, e) a; b; c; d; e; +#define MEMBERS_6(a, b, c, d, e, f) a; b; c; d; e; f; +#define MEMBERS_7(a, b, c, d, e, f, g) a; b; c; d; e; f; g; +#define MEMBERS_8(a, b, c, d, e, f, g, h) a; b; c; d; e; f; g; h; + +// Updates Dynamax HP multipliers and healthboxes. +void BS_UpdateDynamax(void) { + NATIVE_ARGS(); + u16 battler = gBattleScripting.battler; + struct Pokemon *mon = &GetSideParty(GetBattlerSide(battler))[gBattlerPartyIndexes[battler]]; + + if (!IsGigantamaxed(battler)) // RecalcBattlerStats will get called on form change. + RecalcBattlerStats(battler, mon); + + UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], mon, HEALTHBOX_ALL); + gBattlescriptCurrInstr = cmd->nextInstr; +} + +// Activates the secondary effect of a Max Move. +void BS_SetMaxMoveEffect(void) +{ + NATIVE_ARGS(); u16 effect = 0; - u8 maxEffect = gBattleMoves[move].argument; + u8 maxEffect = gBattleMoves[gCurrentMove].argument; // Don't continue if the move didn't land. if (gMoveResultFlags & MOVE_RESULT_NO_EFFECT) - return effect; + { + gBattlescriptCurrInstr = cmd->nextInstr; + return; + } switch (maxEffect) { @@ -859,7 +892,210 @@ u16 SetMaxMoveEffect(u16 move) break; } } - return effect; + + if (!effect) + gBattlescriptCurrInstr = cmd->nextInstr; +} + +// Sets up sharp steel on the target's side. +void BS_SetSteelsurge(void) +{ + NATIVE_ARGS(const u8 *failInstr); + u8 targetSide = GetBattlerSide(gBattlerTarget); + if (gSideStatuses[targetSide] & SIDE_STATUS_STEELSURGE) + { + gBattlescriptCurrInstr = cmd->failInstr; + } + else + { + gSideStatuses[targetSide] |= SIDE_STATUS_STEELSURGE; + gSideTimers[targetSide].steelsurgeAmount = 1; + gBattlescriptCurrInstr = cmd->nextInstr; + } +} + +// Applies the status1 effect associated with a given G-Max Move. +// Could be expanded to function for any move. +void BS_TrySetStatus1(void) +{ + NATIVE_ARGS(const u8 *failInstr); + u8 effect = 0; + u32 status1 = GetMaxMoveStatusEffect(gCurrentMove); + switch (status1) + { + case STATUS1_POISON: + if (CanBePoisoned(gBattlerAttacker, gBattlerTarget)) + { + gBattleMons[gBattlerTarget].status1 |= STATUS1_POISON; + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + effect++; + } + break; + case STATUS1_PARALYSIS: + if (CanBeParalyzed(gBattlerTarget)) + { + gBattleMons[gBattlerTarget].status1 |= STATUS1_PARALYSIS; + gBattleCommunication[MULTISTRING_CHOOSER] = 3; + effect++; + } + break; + case STATUS1_SLEEP: + if (CanSleep(gBattlerTarget)) + { + #if B_SLEEP_TURNS >= GEN_5 + gBattleMons[gBattlerTarget].status1 |= STATUS1_SLEEP_TURN((Random() % 3) + 2); + #else + gBattleMons[gBattlerTarget].status1 |= STATUS1_SLEEP_TURN((Random() % 4) + 3); + #endif + gBattleCommunication[MULTISTRING_CHOOSER] = 4; + effect++; + } + break; + } + if (effect) + { + gActiveBattler = gEffectBattler = gBattlerTarget; + BtlController_EmitSetMonData(BUFFER_A, REQUEST_STATUS_BATTLE, 0, sizeof(gBattleMons[gBattlerTarget].status1), &gBattleMons[gBattlerTarget].status1); + MarkBattlerForControllerExec(gActiveBattler); + gBattlescriptCurrInstr = cmd->nextInstr; + } + else + { + gBattlescriptCurrInstr = cmd->failInstr; + } +} + +// Applies the status2 effect associated with a given G-Max Move. +void BS_TrySetStatus2(void) +{ + NATIVE_ARGS(const u8 *failInstr); + u8 effect = 0; + u32 status2 = GetMaxMoveStatusEffect(gCurrentMove); + switch (status2) + { + case STATUS2_CONFUSION: + if (CanBeConfused(gBattlerTarget)) + { + gBattleMons[gBattlerTarget].status2 |= STATUS2_CONFUSION_TURN(((Random()) % 4) + 2); + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + gBattleCommunication[MULTIUSE_STATE] = 1; + effect++; + } + break; + case STATUS2_INFATUATION: + { + u8 atkGender = GetGenderFromSpeciesAndPersonality(gBattleMons[gBattlerAttacker].species, gBattleMons[gBattlerAttacker].personality); + u8 defGender = GetGenderFromSpeciesAndPersonality(gBattleMons[gBattlerTarget].species, gBattleMons[gBattlerTarget].personality); + if (!(gBattleMons[gBattlerTarget].status2 & STATUS2_INFATUATION) + && gBattleMons[gBattlerTarget].ability != ABILITY_OBLIVIOUS + && !IsAbilityOnSide(gBattlerTarget, ABILITY_AROMA_VEIL) + && atkGender != defGender + && atkGender != MON_GENDERLESS + && defGender != MON_GENDERLESS) + { + gBattleMons[gBattlerTarget].status2 |= STATUS2_INFATUATED_WITH(gBattlerAttacker); + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + gBattleCommunication[MULTIUSE_STATE] = 2; + effect++; + } + break; + } + case STATUS2_ESCAPE_PREVENTION: + if (!(gBattleMons[gBattlerTarget].status2 & STATUS2_ESCAPE_PREVENTION)) + { + gBattleMons[gBattlerTarget].status2 |= STATUS2_ESCAPE_PREVENTION; + gDisableStructs[gBattlerTarget].battlerPreventingEscape = gBattlerAttacker; + gBattleCommunication[MULTISTRING_CHOOSER] = 2; + effect++; + } + break; + case STATUS2_TORMENT: + if (!(gBattleMons[gBattlerTarget].status2 & STATUS2_TORMENT) + && !IsAbilityOnSide(gBattlerTarget, ABILITY_AROMA_VEIL)) + { + gBattleMons[gBattlerTarget].status2 |= STATUS2_TORMENT; + gDisableStructs[gBattlerTarget].tormentTimer = 3; // 3 turns excluding current turn + gBattleCommunication[MULTISTRING_CHOOSER] = 3; + effect++; + } + break; + } + if (effect) + { + gEffectBattler = gBattlerTarget; + gBattlescriptCurrInstr = cmd->nextInstr; + } + else + { + gBattlescriptCurrInstr = cmd->failInstr; + } +} + +// Applies the endturn damage effect associated with the "Damage Non-" G-Max moves. +void BS_DamageNonTypes(void) +{ + NATIVE_ARGS(); + u8 side = GetBattlerSide(gBattlerAttacker); + gBattleMoveDamage = 0; + if (gSideTimers[side].damageNonTypesTimer + && !IS_BATTLER_OF_TYPE(gBattlerAttacker, gSideTimers[side].damageNonTypesType) + && IsBattlerAlive(gBattlerAttacker) + && GetBattlerAbility(gBattlerAttacker) != ABILITY_MAGIC_GUARD) + { + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker) / 6; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + } + gBattlescriptCurrInstr = cmd->nextInstr; +} + +// Heals one-sixth of the target's HP, including for Dynamaxed targets. +void BS_HealOneSixth(void) +{ + NATIVE_ARGS(const u8* failInstr); + gBattleMoveDamage = gBattleMons[gBattlerTarget].maxHP / 6; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + gBattleMoveDamage *= -1; + + if (gBattleMons[gBattlerTarget].hp == gBattleMons[gBattlerTarget].maxHP) + gBattlescriptCurrInstr = cmd->failInstr; // fail + else + gBattlescriptCurrInstr = cmd->nextInstr; // can heal +} + +// Recycles the target's item if it is specifically holding a berry. +void BS_TryRecycleBerry(void) +{ + NATIVE_ARGS(const u8 *failInstr); + u16* usedHeldItem = &gBattleStruct->usedHeldItems[gBattlerPartyIndexes[gBattlerTarget]][GetBattlerSide(gBattlerTarget)]; + if (gBattleMons[gBattlerTarget].item == ITEM_NONE + && gBattleStruct->changedItems[gBattlerTarget] == ITEM_NONE // Will not inherit an item + && ItemId_GetPocket(*usedHeldItem) == POCKET_BERRIES) + { + gLastUsedItem = *usedHeldItem; + *usedHeldItem = ITEM_NONE; + gBattleMons[gBattlerTarget].item = gLastUsedItem; + + BtlController_EmitSetMonData(BUFFER_A, REQUEST_HELDITEM_BATTLE, 0, sizeof(gBattleMons[gBattlerTarget].item), &gBattleMons[gBattlerTarget].item); + MarkBattlerForControllerExec(gBattlerTarget); + + gBattlescriptCurrInstr = cmd->nextInstr; + } + else + { + gBattlescriptCurrInstr = cmd->failInstr; + } +} + +// Goes to the jump instruction if the target is Dynamaxed. +void BS_JumpIfDynamaxed(void) +{ + NATIVE_ARGS(const u8 *jumpInstr); + if (IsDynamaxed(gBattlerTarget)) + gBattlescriptCurrInstr = cmd->jumpInstr; + else + gBattlescriptCurrInstr = cmd->nextInstr; } // DYNAMAX TRIGGER: diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 72961abaa0..93b151a98e 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -11304,219 +11304,6 @@ static void Cmd_various(void) } break; } - case VARIOUS_SET_MAX_MOVE_EFFECT: - { - VARIOUS_ARGS(); - if(SetMaxMoveEffect(gCurrentMove)) - return; - break; - } - case VARIOUS_SET_STEELSURGE: - { - VARIOUS_ARGS(const u8 *failInstr); - u8 targetSide = GetBattlerSide(gBattlerTarget); - if (gSideStatuses[targetSide] & SIDE_STATUS_STEELSURGE) - { - gBattlescriptCurrInstr = cmd->failInstr; - } - else - { - gSideStatuses[targetSide] |= SIDE_STATUS_STEELSURGE; - gSideTimers[targetSide].steelsurgeAmount = 1; - gBattlescriptCurrInstr = cmd->nextInstr; - } - return; - } - case VARIOUS_DAMAGE_NON_TYPES: - { - VARIOUS_ARGS(); - side = GetBattlerSide(gBattlerAttacker); - gBattleMoveDamage = 0; - if (gSideTimers[side].damageNonTypesTimer - && !IS_BATTLER_OF_TYPE(gBattlerAttacker, gSideTimers[side].damageNonTypesType) - && IsBattlerAlive(gBattlerAttacker) - && GetBattlerAbility(gBattlerAttacker) != ABILITY_MAGIC_GUARD) - { - gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker) / 6; - if (gBattleMoveDamage == 0) - gBattleMoveDamage = 1; - } - break; - } - case VARIOUS_TRY_SET_STATUS1: - { - VARIOUS_ARGS(const u8 *failInstr); - u8 effect = 0; - u32 status1 = GetMaxMoveStatusEffect(gCurrentMove); - switch (status1) - { - case STATUS1_POISON: - if (CanBePoisoned(gBattlerAttacker, gBattlerTarget)) - { - gBattleMons[gBattlerTarget].status1 |= STATUS1_POISON; - gBattleCommunication[MULTISTRING_CHOOSER] = 0; - effect++; - } - break; - case STATUS1_PARALYSIS: - if (CanBeParalyzed(gBattlerTarget)) - { - gBattleMons[gBattlerTarget].status1 |= STATUS1_PARALYSIS; - gBattleCommunication[MULTISTRING_CHOOSER] = 3; - effect++; - } - break; - case STATUS1_SLEEP: - if (CanSleep(gBattlerTarget)) - { - #if B_SLEEP_TURNS >= GEN_5 - gBattleMons[gBattlerTarget].status1 |= STATUS1_SLEEP_TURN((Random() % 3) + 2); - #else - gBattleMons[gBattlerTarget].status1 |= STATUS1_SLEEP_TURN((Random() % 4) + 3); - #endif - gBattleCommunication[MULTISTRING_CHOOSER] = 4; - effect++; - } - break; - } - if (effect) - { - gActiveBattler = gEffectBattler = gBattlerTarget; - BtlController_EmitSetMonData(BUFFER_A, REQUEST_STATUS_BATTLE, 0, sizeof(gBattleMons[gBattlerTarget].status1), &gBattleMons[gBattlerTarget].status1); - MarkBattlerForControllerExec(gActiveBattler); - gBattlescriptCurrInstr = cmd->nextInstr; - } - else - { - gBattlescriptCurrInstr = cmd->failInstr; - } - return; - } - case VARIOUS_TRY_SET_STATUS2: - { - VARIOUS_ARGS(const u8 *failInstr); - u8 effect = 0; - u32 status2 = GetMaxMoveStatusEffect(gCurrentMove); - switch (status2) - { - case STATUS2_CONFUSION: - if (CanBeConfused(gBattlerTarget)) - { - gBattleMons[gBattlerTarget].status2 |= STATUS2_CONFUSION_TURN(((Random()) % 4) + 2); - gBattleCommunication[MULTISTRING_CHOOSER] = 0; - gBattleCommunication[MULTIUSE_STATE] = 1; - effect++; - } - break; - case STATUS2_INFATUATION: - { - u8 atkGender = GetGenderFromSpeciesAndPersonality(gBattleMons[gBattlerAttacker].species, gBattleMons[gBattlerAttacker].personality); - u8 defGender = GetGenderFromSpeciesAndPersonality(gBattleMons[gBattlerTarget].species, gBattleMons[gBattlerTarget].personality); - if (!(gBattleMons[gBattlerTarget].status2 & STATUS2_INFATUATION) - && gBattleMons[gBattlerTarget].ability != ABILITY_OBLIVIOUS - && !IsAbilityOnSide(gBattlerTarget, ABILITY_AROMA_VEIL) - && atkGender != defGender - && atkGender != MON_GENDERLESS - && defGender != MON_GENDERLESS) - { - gBattleMons[gBattlerTarget].status2 |= STATUS2_INFATUATED_WITH(gBattlerAttacker); - gBattleCommunication[MULTISTRING_CHOOSER] = 1; - gBattleCommunication[MULTIUSE_STATE] = 2; - effect++; - } - break; - } - case STATUS2_ESCAPE_PREVENTION: - if (!(gBattleMons[gBattlerTarget].status2 & STATUS2_ESCAPE_PREVENTION)) - { - gBattleMons[gBattlerTarget].status2 |= STATUS2_ESCAPE_PREVENTION; - gDisableStructs[gBattlerTarget].battlerPreventingEscape = gBattlerAttacker; - gBattleCommunication[MULTISTRING_CHOOSER] = 2; - effect++; - } - break; - case STATUS2_TORMENT: - if (!(gBattleMons[gBattlerTarget].status2 & STATUS2_TORMENT) - && !IsAbilityOnSide(gBattlerTarget, ABILITY_AROMA_VEIL)) - { - gBattleMons[gBattlerTarget].status2 |= STATUS2_TORMENT; - gDisableStructs[gBattlerTarget].tormentTimer = 3; // 3 turns excluding current turn - gBattleCommunication[MULTISTRING_CHOOSER] = 3; - effect++; - } - break; - } - if (effect) - { - gEffectBattler = gBattlerTarget; - gBattlescriptCurrInstr = cmd->nextInstr; - } - else - { - gBattlescriptCurrInstr = cmd->failInstr; - } - return; - } - case VARIOUS_TRY_HEAL_SIXTH_HP: - { - VARIOUS_ARGS(const u8 *failInstr); - // This heals based on Dynamaxed HP! - gBattleMoveDamage = gBattleMons[gBattlerTarget].maxHP / 6; - if (gBattleMoveDamage == 0) - gBattleMoveDamage = 1; - gBattleMoveDamage *= -1; - - if (gBattleMons[gBattlerTarget].hp == gBattleMons[gBattlerTarget].maxHP) - gBattlescriptCurrInstr = cmd->failInstr; // fail - else - gBattlescriptCurrInstr = cmd->nextInstr; // can heal - return; - } - case VARIOUS_TRY_RECYCLE_BERRY: - { - VARIOUS_ARGS(const u8 *failInstr); - u16* usedHeldItem = &gBattleStruct->usedHeldItems[gBattlerPartyIndexes[gBattlerTarget]][GetBattlerSide(gBattlerTarget)]; - if (gBattleMons[gBattlerTarget].item == ITEM_NONE - && gBattleStruct->changedItems[gBattlerTarget] == ITEM_NONE // Will not inherit an item - && ItemId_GetPocket(*usedHeldItem) == POCKET_BERRIES) - { - gLastUsedItem = *usedHeldItem; - *usedHeldItem = ITEM_NONE; - gBattleMons[gBattlerTarget].item = gLastUsedItem; - - BtlController_EmitSetMonData(BUFFER_A, REQUEST_HELDITEM_BATTLE, 0, sizeof(gBattleMons[gBattlerTarget].item), &gBattleMons[gBattlerTarget].item); - MarkBattlerForControllerExec(gBattlerTarget); - - gBattlescriptCurrInstr = cmd->nextInstr; - } - else - { - gBattlescriptCurrInstr = cmd->failInstr; - } - return; - } - case VARIOUS_UPDATE_DYNAMAX: - { - VARIOUS_ARGS(); - u16 battler = gBattleScripting.battler; - if (GetBattlerSide(battler) == B_SIDE_PLAYER) - mon = &gPlayerParty[gBattlerPartyIndexes[battler]]; - else - mon = &gEnemyParty[gBattlerPartyIndexes[battler]]; - if (!IsGigantamaxed(battler)) // RecalcBattlerStats will get called on form change. - RecalcBattlerStats(battler, mon); - UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], mon, HEALTHBOX_ALL); - break; - } - case VARIOUS_JUMP_IF_TARGET_DYNAMAXED: - { - VARIOUS_ARGS(const u8 *jumpInstr); - if (IsDynamaxed(gBattlerTarget)) - gBattlescriptCurrInstr = cmd->jumpInstr; - else - gBattlescriptCurrInstr = cmd->nextInstr; - return; - } } // End of switch (cmd->id) gBattlescriptCurrInstr = cmd->nextInstr; From 34abc440cb5ec44f03e965de3482022ff612ef3d Mon Sep 17 00:00:00 2001 From: AgustinGDLV Date: Tue, 16 May 2023 23:13:48 -0700 Subject: [PATCH 071/162] fixed RandomElement --- test/test_runner_battle.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/test_runner_battle.c b/test/test_runner_battle.c index 8155d84e94..8f498bf979 100644 --- a/test/test_runner_battle.c +++ b/test/test_runner_battle.c @@ -402,7 +402,7 @@ const void *RandomElementArray(enum RandomTag tag, const void *array, size_t siz if (turn && turn->rng.tag == tag) { - u32 element; + u32 element = 0; for (index = 0; index < count; index++) { memcpy(&element, (const u8 *)array + size * index, size); From f91cbe9a36ed0ce74305b98dba33b12723d182a2 Mon Sep 17 00:00:00 2001 From: AgustinGDLV Date: Mon, 29 May 2023 10:23:58 -0700 Subject: [PATCH 072/162] updated anim macros --- data/battle_anim_scripts.s | 46 +++++++++++++++++++------------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index e809d2f1e1..c35a9232ac 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -30872,28 +30872,28 @@ General_SetWeather:: end Move_MAX_GUARD: - launchtask AnimTask_DynamaxGrowth 0x5 0x1 0x1 + createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1 waitforvisualfinish goto Move_PROTECT end Move_MAX_STRIKE: Move_G_MAX_REPLENISH: - launchtask AnimTask_DynamaxGrowth 0x5 0x1 0x1 + createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1 waitforvisualfinish goto Move_GIGA_IMPACT end Move_MAX_AIRSTREAM: Move_G_MAX_WIND_RAGE: - launchtask AnimTask_DynamaxGrowth 0x5 0x1 0x1 + createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1 waitforvisualfinish goto Move_AEROBLAST end Move_MAX_OOZE: Move_G_MAX_MALODOR: - launchtask AnimTask_DynamaxGrowth 0x5 0x1 0x1 + createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1 waitforvisualfinish goto Move_GUNK_SHOT end @@ -30902,7 +30902,7 @@ Move_G_MAX_WILDFIRE: Move_G_MAX_FIREBALL: Move_G_MAX_CENTIFERNO: Move_MAX_FLARE: - launchtask AnimTask_DynamaxGrowth 0x5 0x1 0x1 + createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1 waitforvisualfinish goto Move_BLAST_BURN end @@ -30911,7 +30911,7 @@ Move_G_MAX_CANNONADE: Move_G_MAX_HYDROSNIPE: Move_G_MAX_FOAM_BURST: Move_MAX_GEYSER: - launchtask AnimTask_DynamaxGrowth 0x5 0x1 0x1 + createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1 waitforvisualfinish goto Move_HYDRO_CANNON end @@ -30921,14 +30921,14 @@ Move_G_MAX_DRUM_SOLO: Move_G_MAX_TARTNESS: Move_G_MAX_SWEETNESS: Move_MAX_OVERGROWTH: - launchtask AnimTask_DynamaxGrowth 0x5 0x1 0x1 + createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1 waitforvisualfinish goto Move_FRENZY_PLANT end Move_MAX_LIGHTNING: Move_G_MAX_STUN_SHOCK: - launchtask AnimTask_DynamaxGrowth 0x5 0x1 0x1 + createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1 waitforvisualfinish goto Move_ZAP_CANNON end @@ -30937,28 +30937,28 @@ Move_G_MAX_CHI_STRIKE: Move_G_MAX_ONE_BLOW: Move_G_MAX_RAPID_FLOW: Move_MAX_KNUCKLE: - launchtask AnimTask_DynamaxGrowth 0x5 0x1 0x1 + createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1 waitforvisualfinish goto Move_CLOSE_COMBAT end Move_G_MAX_RESONANCE: Move_MAX_HAILSTORM: - launchtask AnimTask_DynamaxGrowth 0x5 0x1 0x1 + createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1 waitforvisualfinish goto Move_SHEER_COLD end Move_G_MAX_SANDBLAST: Move_MAX_QUAKE: - launchtask AnimTask_DynamaxGrowth 0x5 0x1 0x1 + createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1 waitforvisualfinish goto Move_FISSURE end Move_G_MAX_BEFUDDLE: Move_MAX_FLUTTERBY: - launchtask AnimTask_DynamaxGrowth 0x5 0x1 0x1 + createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1 waitforvisualfinish goto Move_BUG_BUZZ end @@ -30966,21 +30966,21 @@ Move_MAX_FLUTTERBY: Move_G_MAX_STEELSURGE: Move_G_MAX_MELTDOWN: Move_MAX_STEELSPIKE: - launchtask AnimTask_DynamaxGrowth 0x5 0x1 0x1 + createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1 waitforvisualfinish goto Move_HEAVY_SLAM end Move_G_MAX_TERROR: Move_MAX_PHANTASM: - launchtask AnimTask_DynamaxGrowth 0x5 0x1 0x1 + createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1 waitforvisualfinish goto Move_PHANTOM_FORCE end Move_G_MAX_GRAVITAS: Move_MAX_MINDSTORM: - launchtask AnimTask_DynamaxGrowth 0x5 0x1 0x1 + createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1 waitforvisualfinish goto Move_PSYCHO_BOOST end @@ -30988,7 +30988,7 @@ Move_MAX_MINDSTORM: Move_G_MAX_SMITE: Move_G_MAX_FINALE: Move_MAX_STARFALL: - launchtask AnimTask_DynamaxGrowth 0x5 0x1 0x1 + createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1 waitforvisualfinish goto Move_MOONBLAST end @@ -30996,39 +30996,39 @@ Move_MAX_STARFALL: Move_G_MAX_STONESURGE: Move_G_MAX_VOLCALITH: Move_MAX_ROCKFALL: - launchtask AnimTask_DynamaxGrowth 0x5 0x1 0x1 + createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1 waitforvisualfinish goto Move_ROCK_WRECKER end Move_G_MAX_DEPLETION: Move_MAX_WYRMWIND: - launchtask AnimTask_DynamaxGrowth 0x5 0x1 0x1 + createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1 waitforvisualfinish goto Move_SPACIAL_REND end Move_G_MAX_SNOOZE: Move_MAX_DARKNESS: - launchtask AnimTask_DynamaxGrowth 0x5 0x1 0x1 + createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1 waitforvisualfinish goto Move_DARK_PULSE end Move_G_MAX_CUDDLE: - launchtask AnimTask_DynamaxGrowth 0x5 0x1 0x1 + createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1 waitforvisualfinish goto Move_COVET end Move_G_MAX_VOLT_CRASH: - launchtask AnimTask_DynamaxGrowth 0x5 0x1 0x1 + createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1 waitforvisualfinish goto Move_VOLT_TACKLE end Move_G_MAX_GOLD_RUSH: - launchtask AnimTask_DynamaxGrowth 0x5 0x1 0x1 + createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1 waitforvisualfinish goto Move_PAY_DAY end @@ -31037,6 +31037,6 @@ Move_G_MAX_GOLD_RUSH: General_DynamaxGrowth:: @ PORTED FROM CFRU createvisualtask SoundTask_PlayCryWithEcho, 2, ANIM_ATTACKER, 2 delay 8 - launchtask AnimTask_DynamaxGrowth 0x5 0x1 0x0 + createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x0 waitforvisualfinish end From 5beec06d9d0056e0168a10bd6a8252e9259a1399 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Sat, 19 Aug 2023 17:20:53 -0400 Subject: [PATCH 073/162] Document Task_MapNamePopUpWindow --- src/map_name_popup.c | 97 ++++++++++++++++++++++++++++---------------- 1 file changed, 62 insertions(+), 35 deletions(-) diff --git a/src/map_name_popup.c b/src/map_name_popup.c index 93a2825833..7e5fbc9095 100644 --- a/src/map_name_popup.c +++ b/src/map_name_popup.c @@ -206,22 +206,45 @@ static bool8 StartMenu_ShowMapNamePopup(void) return TRUE; } +// States and data defines for Task_MapNamePopUpWindow +enum { + STATE_SLIDE_IN, + STATE_WAIT, + STATE_SLIDE_OUT, + STATE_UNUSED, + STATE_ERASE, + STATE_END, + STATE_PRINT, // For some reason the first state is numerically last. +}; + +#define POPUP_OFFSCREEN_Y 40 +#define POPUP_SLIDE_SPEED 2 + +#define tState data[0] +#define tOnscreenTimer data[1] +#define tYOffset data[2] +#define tIncomingPopUp data[3] +#define tPrintTimer data[4] + void ShowMapNamePopup(void) { if (FlagGet(FLAG_HIDE_MAP_NAME_POPUP) != TRUE) { if (!FuncIsActiveTask(Task_MapNamePopUpWindow)) { + // New pop up window sPopupTaskId = CreateTask(Task_MapNamePopUpWindow, 90); - SetGpuReg(REG_OFFSET_BG0VOFS, 40); - gTasks[sPopupTaskId].data[0] = 6; - gTasks[sPopupTaskId].data[2] = 40; + SetGpuReg(REG_OFFSET_BG0VOFS, POPUP_OFFSCREEN_Y); + gTasks[sPopupTaskId].tState = STATE_PRINT; + gTasks[sPopupTaskId].tYOffset = POPUP_OFFSCREEN_Y; } else { - if (gTasks[sPopupTaskId].data[0] != 2) - gTasks[sPopupTaskId].data[0] = 2; - gTasks[sPopupTaskId].data[3] = 1; + // There's already a pop up window running. + // Hurry the old pop up offscreen so the new one can appear. + if (gTasks[sPopupTaskId].tState != STATE_SLIDE_OUT) + gTasks[sPopupTaskId].tState = STATE_SLIDE_OUT; + gTasks[sPopupTaskId].tIncomingPopUp = TRUE; } } } @@ -230,61 +253,65 @@ static void Task_MapNamePopUpWindow(u8 taskId) { struct Task *task = &gTasks[taskId]; - switch (task->data[0]) + switch (task->tState) { - case 6: - task->data[4]++; - if (task->data[4] > 30) + case STATE_PRINT: + // Wait, then create and print the pop up window + if (++task->tPrintTimer > 30) { - task->data[0] = 0; - task->data[4] = 0; + task->tState = STATE_SLIDE_IN; + task->tPrintTimer = 0; ShowMapNamePopUpWindow(); } break; - case 0: - task->data[2] -= 2; - if (task->data[2] <= 0 ) + case STATE_SLIDE_IN: + // Slide the window onscreen. + task->tYOffset -= POPUP_SLIDE_SPEED; + if (task->tYOffset <= 0 ) { - task->data[2] = 0; - task->data[0] = 1; + task->tYOffset = 0; + task->tState = STATE_WAIT; gTasks[sPopupTaskId].data[1] = 0; } break; - case 1: - task->data[1]++; - if (task->data[1] > 120 ) + case STATE_WAIT: + // Wait while the window is fully onscreen. + if (++task->tOnscreenTimer > 120) { - task->data[1] = 0; - task->data[0] = 2; + task->tOnscreenTimer = 0; + task->tState = STATE_SLIDE_OUT; } break; - case 2: - task->data[2] += 2; - if (task->data[2] > 39) + case STATE_SLIDE_OUT: + // Slide the window offscreen. + task->tYOffset += POPUP_SLIDE_SPEED; + if (task->tYOffset >= POPUP_OFFSCREEN_Y) { - task->data[2] = 40; - if (task->data[3]) + task->tYOffset = POPUP_OFFSCREEN_Y; + if (task->tIncomingPopUp) { - task->data[0] = 6; - task->data[4] = 0; - task->data[3] = 0; + // A new pop up window is incoming, + // return to the first state to show it. + task->tState = STATE_PRINT; + task->tPrintTimer = 0; + task->tIncomingPopUp = FALSE; } else { - task->data[0] = 4; + task->tState = STATE_ERASE; return; } } break; - case 4: + case STATE_ERASE: ClearStdWindowAndFrame(GetMapNamePopUpWindowId(), TRUE); - task->data[0] = 5; + task->tState = STATE_END; break; - case 5: + case STATE_END: HideMapNamePopUpWindow(); return; } - SetGpuReg(REG_OFFSET_BG0VOFS, task->data[2]); + SetGpuReg(REG_OFFSET_BG0VOFS, task->tYOffset); } void HideMapNamePopUpWindow(void) From 6792028254dfb39111ea30f499ee27cefbc77d29 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Sun, 20 Aug 2023 01:18:44 -0400 Subject: [PATCH 074/162] Document title screen task data --- src/title_screen.c | 256 +++++++++++++++++++++++++++------------------ 1 file changed, 154 insertions(+), 102 deletions(-) diff --git a/src/title_screen.c b/src/title_screen.c index 87bf0d970e..12015b8bd8 100644 --- a/src/title_screen.c +++ b/src/title_screen.c @@ -23,6 +23,12 @@ #include "constants/rgb.h" #include "constants/songs.h" +enum { + TAG_VERSION = 1000, + TAG_PRESS_START_COPYRIGHT, + TAG_LOGO_SHINE, +}; + #define VERSION_BANNER_RIGHT_TILEOFFSET 64 #define VERSION_BANNER_LEFT_X 98 #define VERSION_BANNER_RIGHT_X 162 @@ -158,8 +164,8 @@ static const union AnimCmd *const sVersionBannerRightAnimTable[] = static const struct SpriteTemplate sVersionBannerLeftSpriteTemplate = { - .tileTag = 1000, - .paletteTag = 1000, + .tileTag = TAG_VERSION, + .paletteTag = TAG_VERSION, .oam = &sVersionBannerLeftOamData, .anims = sVersionBannerLeftAnimTable, .images = NULL, @@ -169,8 +175,8 @@ static const struct SpriteTemplate sVersionBannerLeftSpriteTemplate = static const struct SpriteTemplate sVersionBannerRightSpriteTemplate = { - .tileTag = 1000, - .paletteTag = 1000, + .tileTag = TAG_VERSION, + .paletteTag = TAG_VERSION, .oam = &sVersionBannerRightOamData, .anims = sVersionBannerRightAnimTable, .images = NULL, @@ -183,7 +189,7 @@ static const struct CompressedSpriteSheet sSpriteSheet_EmeraldVersion[] = { .data = gTitleScreenEmeraldVersionGfx, .size = 0x1000, - .tag = 1000 + .tag = TAG_VERSION }, {}, }; @@ -205,75 +211,80 @@ static const struct OamData sOamData_CopyrightBanner = .affineParam = 0, }; -static const union AnimCmd sCopyrightBannerAnim0[] = +static const union AnimCmd sAnim_PressStart_0[] = { ANIMCMD_FRAME(1, 4), ANIMCMD_END, }; -static const union AnimCmd sCopyrightBannerAnim1[] = +static const union AnimCmd sAnim_PressStart_1[] = { ANIMCMD_FRAME(5, 4), ANIMCMD_END, }; -static const union AnimCmd sCopyrightBannerAnim2[] = +static const union AnimCmd sAnim_PressStart_2[] = { ANIMCMD_FRAME(9, 4), ANIMCMD_END, }; -static const union AnimCmd sCopyrightBannerAnim3[] = +static const union AnimCmd sAnim_PressStart_3[] = { ANIMCMD_FRAME(13, 4), ANIMCMD_END, }; -static const union AnimCmd sCopyrightBannerAnim4[] = +static const union AnimCmd sAnim_PressStart_4[] = { ANIMCMD_FRAME(17, 4), ANIMCMD_END, }; -static const union AnimCmd sCopyrightBannerAnim5[] = +static const union AnimCmd sAnim_Copyright_0[] = { ANIMCMD_FRAME(21, 4), ANIMCMD_END, }; -static const union AnimCmd sCopyrightBannerAnim6[] = +static const union AnimCmd sAnim_Copyright_1[] = { ANIMCMD_FRAME(25, 4), ANIMCMD_END, }; -static const union AnimCmd sCopyrightBannerAnim7[] = +static const union AnimCmd sAnim_Copyright_2[] = { ANIMCMD_FRAME(29, 4), ANIMCMD_END, }; -static const union AnimCmd sCopyrightBannerAnim8[] = +static const union AnimCmd sAnim_Copyright_3[] = { ANIMCMD_FRAME(33, 4), ANIMCMD_END, }; -static const union AnimCmd sCopyrightBannerAnim9[] = +static const union AnimCmd sAnim_Copyright_4[] = { ANIMCMD_FRAME(37, 4), ANIMCMD_END, }; -static const union AnimCmd *const sStartCopyrightBannerAnimTable[] = +// The "Press Start" and copyright graphics are each 5 32x8 segments long +#define NUM_PRESS_START_FRAMES 5 +#define NUM_COPYRIGHT_FRAMES 5 + +static const union AnimCmd *const sStartCopyrightBannerAnimTable[NUM_PRESS_START_FRAMES + NUM_COPYRIGHT_FRAMES] = { - sCopyrightBannerAnim0, - sCopyrightBannerAnim1, - sCopyrightBannerAnim2, - sCopyrightBannerAnim3, - sCopyrightBannerAnim4, - sCopyrightBannerAnim5, - sCopyrightBannerAnim6, - sCopyrightBannerAnim7, - sCopyrightBannerAnim8, - sCopyrightBannerAnim9, + sAnim_PressStart_0, + sAnim_PressStart_1, + sAnim_PressStart_2, + sAnim_PressStart_3, + sAnim_PressStart_4, + [NUM_PRESS_START_FRAMES] = + sAnim_Copyright_0, + sAnim_Copyright_1, + sAnim_Copyright_2, + sAnim_Copyright_3, + sAnim_Copyright_4, }; static const struct SpriteTemplate sStartCopyrightBannerSpriteTemplate = { - .tileTag = 1001, - .paletteTag = 1001, + .tileTag = TAG_PRESS_START_COPYRIGHT, + .paletteTag = TAG_PRESS_START_COPYRIGHT, .oam = &sOamData_CopyrightBanner, .anims = sStartCopyrightBannerAnimTable, .images = NULL, @@ -286,7 +297,7 @@ static const struct CompressedSpriteSheet sSpriteSheet_PressStart[] = { .data = gTitleScreenPressStartGfx, .size = 0x520, - .tag = 1001 + .tag = TAG_PRESS_START_COPYRIGHT }, {}, }; @@ -295,7 +306,7 @@ static const struct SpritePalette sSpritePalette_PressStart[] = { { .data = gTitleScreenPressStartPal, - .tag = 1001 + .tag = TAG_PRESS_START_COPYRIGHT }, {}, }; @@ -330,8 +341,8 @@ static const union AnimCmd *const sPokemonLogoShineAnimTable[] = static const struct SpriteTemplate sPokemonLogoShineSpriteTemplate = { - .tileTag = 1002, - .paletteTag = 1001, + .tileTag = TAG_LOGO_SHINE, + .paletteTag = TAG_PRESS_START_COPYRIGHT, .oam = &sPokemonLogoShineOamData, .anims = sPokemonLogoShineAnimTable, .images = NULL, @@ -344,15 +355,25 @@ static const struct CompressedSpriteSheet sPokemonLogoShineSpriteSheet[] = { .data = sTitleScreenLogoShineGfx, .size = 0x800, - .tag = 1002 + .tag = TAG_LOGO_SHINE }, {}, }; -// code +// Task data for the main title screen tasks (Task_TitleScreenPhase#) +#define tCounter data[0] +#define tSkipToNext data[1] +#define tPointless data[2] // Incremented but never used to do anything. +#define tBg2Y data[3] +#define tBg1Y data[4] + +// Sprite data for sVersionBannerLeftSpriteTemplate / sVersionBannerRightSpriteTemplate +#define sAlphaBlendIdx data[0] +#define sParentTaskId data[1] + static void SpriteCB_VersionBannerLeft(struct Sprite *sprite) { - if (gTasks[sprite->data[1]].data[1] != 0) + if (gTasks[sprite->sParentTaskId].tSkipToNext) { sprite->oam.objMode = ST_OAM_OBJ_NORMAL; sprite->y = VERSION_BANNER_Y_GOAL; @@ -361,15 +382,15 @@ static void SpriteCB_VersionBannerLeft(struct Sprite *sprite) { if (sprite->y != VERSION_BANNER_Y_GOAL) sprite->y++; - if (sprite->data[0] != 0) - sprite->data[0]--; - SetGpuReg(REG_OFFSET_BLDALPHA, gTitleScreenAlphaBlend[sprite->data[0]]); + if (sprite->sAlphaBlendIdx != 0) + sprite->sAlphaBlendIdx--; + SetGpuReg(REG_OFFSET_BLDALPHA, gTitleScreenAlphaBlend[sprite->sAlphaBlendIdx]); } } static void SpriteCB_VersionBannerRight(struct Sprite *sprite) { - if (gTasks[sprite->data[1]].data[1] != 0) + if (gTasks[sprite->sParentTaskId].tSkipToNext) { sprite->oam.objMode = ST_OAM_OBJ_NORMAL; sprite->y = VERSION_BANNER_Y_GOAL; @@ -381,13 +402,16 @@ static void SpriteCB_VersionBannerRight(struct Sprite *sprite) } } +// Sprite data for SpriteCB_PressStartCopyrightBanner +#define sAnimate data[0] +#define sTimer data[1] + static void SpriteCB_PressStartCopyrightBanner(struct Sprite *sprite) { - if (sprite->data[0] == 1) + if (sprite->sAnimate == TRUE) { - sprite->data[1]++; // Alternate between hidden and shown every 16th frame - if (sprite->data[1] & 16) + if (++sprite->sTimer & 16) sprite->invisible = FALSE; else sprite->invisible = TRUE; @@ -404,11 +428,11 @@ static void CreatePressStartBanner(s16 x, s16 y) u8 spriteId; x -= 64; - for (i = 0; i < 5; i++, x += 32) + for (i = 0; i < NUM_PRESS_START_FRAMES; i++, x += 32) { spriteId = CreateSprite(&sStartCopyrightBannerSpriteTemplate, x, y, 0); StartSpriteAnim(&gSprites[spriteId], i); - gSprites[spriteId].data[0] = 1; + gSprites[spriteId].sAnimate = TRUE; } } @@ -418,93 +442,122 @@ static void CreateCopyrightBanner(s16 x, s16 y) u8 spriteId; x -= 64; - for (i = 0; i < 5; i++, x += 32) + for (i = 0; i < NUM_COPYRIGHT_FRAMES; i++, x += 32) { spriteId = CreateSprite(&sStartCopyrightBannerSpriteTemplate, x, y, 0); - StartSpriteAnim(&gSprites[spriteId], i + 5); + StartSpriteAnim(&gSprites[spriteId], i + NUM_PRESS_START_FRAMES); } } +#undef sAnimate +#undef sTimer + +// Defines for SpriteCB_PokemonLogoShine +enum { + SHINE_MODE_SINGLE_NO_BG_COLOR, + SHINE_MODE_DOUBLE, + SHINE_MODE_SINGLE, +}; + +#define SHINE_SPEED 4 + +#define sMode data[0] +#define sBgColor data[1] + static void SpriteCB_PokemonLogoShine(struct Sprite *sprite) { if (sprite->x < DISPLAY_WIDTH + 32) { - if (sprite->data[0]) // Flash background + // In any mode except SHINE_MODE_SINGLE_NO_BG_COLOR the background + // color will change, in addition to the shine sprite moving. + if (sprite->sMode != SHINE_MODE_SINGLE_NO_BG_COLOR) { u16 backgroundColor; if (sprite->x < DISPLAY_WIDTH / 2) { // Brighten background color - if (sprite->data[1] < 31) - sprite->data[1]++; - if (sprite->data[1] < 31) - sprite->data[1]++; + if (sprite->sBgColor < 31) + sprite->sBgColor++; + if (sprite->sBgColor < 31) + sprite->sBgColor++; } else { // Darken background color - if (sprite->data[1] != 0) - sprite->data[1]--; - if (sprite->data[1] != 0) - sprite->data[1]--; + if (sprite->sBgColor != 0) + sprite->sBgColor--; + if (sprite->sBgColor != 0) + sprite->sBgColor--; } - backgroundColor = _RGB(sprite->data[1], sprite->data[1], sprite->data[1]); - if (sprite->x == DISPLAY_WIDTH / 2 + 12 - || sprite->x == DISPLAY_WIDTH / 2 + 16 - || sprite->x == DISPLAY_WIDTH / 2 + 20 - || sprite->x == DISPLAY_WIDTH / 2 + 24) + backgroundColor = _RGB(sprite->sBgColor, sprite->sBgColor, sprite->sBgColor); + + // Flash the background green for 4 frames of movement. + // Otherwise use the updating color. + if (sprite->x == DISPLAY_WIDTH / 2 + (3 * SHINE_SPEED) + || sprite->x == DISPLAY_WIDTH / 2 + (4 * SHINE_SPEED) + || sprite->x == DISPLAY_WIDTH / 2 + (5 * SHINE_SPEED) + || sprite->x == DISPLAY_WIDTH / 2 + (6 * SHINE_SPEED)) gPlttBufferFaded[0] = RGB(24, 31, 12); else gPlttBufferFaded[0] = backgroundColor; } - sprite->x += 4; + + sprite->x += SHINE_SPEED; } else { + // Sprite has moved fully offscreen gPlttBufferFaded[0] = RGB_BLACK; DestroySprite(sprite); } } -static void SpriteCB_PokemonLogoShine2(struct Sprite *sprite) +static void SpriteCB_PokemonLogoShine_Fast(struct Sprite *sprite) { if (sprite->x < DISPLAY_WIDTH + 32) - sprite->x += 8; + sprite->x += SHINE_SPEED * 2; else DestroySprite(sprite); } -static void StartPokemonLogoShine(u8 flashBg) +static void StartPokemonLogoShine(u8 mode) { u8 spriteId; - switch (flashBg) + switch (mode) { - case 0: - case 2: + case SHINE_MODE_SINGLE_NO_BG_COLOR: + case SHINE_MODE_SINGLE: + // Create one regular shine sprite. + // If mode is SHINE_MODE_SINGLE it will also change the background color. spriteId = CreateSprite(&sPokemonLogoShineSpriteTemplate, 0, 68, 0); gSprites[spriteId].oam.objMode = ST_OAM_OBJ_WINDOW; - gSprites[spriteId].data[0] = flashBg; + gSprites[spriteId].sMode = mode; break; - case 1: + case SHINE_MODE_DOUBLE: + // Create an invisible sprite with mode set to update the background color spriteId = CreateSprite(&sPokemonLogoShineSpriteTemplate, 0, 68, 0); gSprites[spriteId].oam.objMode = ST_OAM_OBJ_WINDOW; - gSprites[spriteId].data[0] = flashBg; + gSprites[spriteId].sMode = mode; gSprites[spriteId].invisible = TRUE; + // Create two faster shine sprites spriteId = CreateSprite(&sPokemonLogoShineSpriteTemplate, 0, 68, 0); - gSprites[spriteId].callback = SpriteCB_PokemonLogoShine2; + gSprites[spriteId].callback = SpriteCB_PokemonLogoShine_Fast; gSprites[spriteId].oam.objMode = ST_OAM_OBJ_WINDOW; spriteId = CreateSprite(&sPokemonLogoShineSpriteTemplate, -80, 68, 0); - gSprites[spriteId].callback = SpriteCB_PokemonLogoShine2; + gSprites[spriteId].callback = SpriteCB_PokemonLogoShine_Fast; gSprites[spriteId].oam.objMode = ST_OAM_OBJ_WINDOW; break; } } +#undef sMode +#undef sBgColor + static void VBlankCB(void) { ScanlineEffect_InitHBlankDmaTransfer(); @@ -514,9 +567,6 @@ static void VBlankCB(void) SetGpuReg(REG_OFFSET_BG1VOFS, gBattle_BG1_Y); } -#define tCounter data[0] -#define tSkipToNext data[1] - void CB2_InitTitleScreen(void) { switch (gMain.state) @@ -573,13 +623,13 @@ void CB2_InitTitleScreen(void) gTasks[taskId].tCounter = 256; gTasks[taskId].tSkipToNext = FALSE; - gTasks[taskId].data[2] = -16; - gTasks[taskId].data[3] = -32; + gTasks[taskId].tPointless = -16; + gTasks[taskId].tBg2Y = -32; gMain.state = 3; break; } case 3: - BeginNormalPaletteFade(PALETTES_ALL, 1, 0x10, 0, RGB_WHITEALPHA); + BeginNormalPaletteFade(PALETTES_ALL, 1, 16, 0, RGB_WHITEALPHA); SetVBlankCallback(VBlankCB); gMain.state = 4; break; @@ -614,7 +664,7 @@ void CB2_InitTitleScreen(void) case 5: if (!UpdatePaletteFade()) { - StartPokemonLogoShine(0); + StartPokemonLogoShine(SHINE_MODE_SINGLE_NO_BG_COLOR); ScanlineEffect_InitWave(0, DISPLAY_HEIGHT, 4, 4, 0, SCANLINE_EFFECT_REG_BG1HOFS, TRUE); SetMainCallback2(MainCB2); } @@ -634,7 +684,7 @@ static void MainCB2(void) static void Task_TitleScreenPhase1(u8 taskId) { // Skip to next phase when A, B, Start, or Select is pressed - if (JOY_NEW(A_B_START_SELECT) || gTasks[taskId].data[1] != 0) + if (JOY_NEW(A_B_START_SELECT) || gTasks[taskId].tSkipToNext) { gTasks[taskId].tSkipToNext = TRUE; gTasks[taskId].tCounter = 0; @@ -644,9 +694,9 @@ static void Task_TitleScreenPhase1(u8 taskId) { u16 frameNum = gTasks[taskId].tCounter; if (frameNum == 176) - StartPokemonLogoShine(1); + StartPokemonLogoShine(SHINE_MODE_DOUBLE); else if (frameNum == 64) - StartPokemonLogoShine(2); + StartPokemonLogoShine(SHINE_MODE_SINGLE); gTasks[taskId].tCounter--; } @@ -663,18 +713,21 @@ static void Task_TitleScreenPhase1(u8 taskId) // Create left side of version banner spriteId = CreateSprite(&sVersionBannerLeftSpriteTemplate, VERSION_BANNER_LEFT_X, VERSION_BANNER_Y, 0); - gSprites[spriteId].data[0] = 64; - gSprites[spriteId].data[1] = taskId; + gSprites[spriteId].sAlphaBlendIdx = ARRAY_COUNT(gTitleScreenAlphaBlend); + gSprites[spriteId].sParentTaskId = taskId; // Create right side of version banner spriteId = CreateSprite(&sVersionBannerRightSpriteTemplate, VERSION_BANNER_RIGHT_X, VERSION_BANNER_Y, 0); - gSprites[spriteId].data[1] = taskId; + gSprites[spriteId].sParentTaskId = taskId; gTasks[taskId].tCounter = 144; gTasks[taskId].func = Task_TitleScreenPhase2; } } +#undef sParentTaskId +#undef sAlphaBlendIdx + // Create "Press Start" and copyright banners, and slide Pokemon logo up static void Task_TitleScreenPhase2(u8 taskId) { @@ -705,31 +758,31 @@ static void Task_TitleScreenPhase2(u8 taskId) | DISPCNT_OBJ_ON); CreatePressStartBanner(START_BANNER_X, 108); CreateCopyrightBanner(START_BANNER_X, 148); - gTasks[taskId].data[4] = 0; + gTasks[taskId].tBg1Y = 0; gTasks[taskId].func = Task_TitleScreenPhase3; } - if (!(gTasks[taskId].tCounter & 3) && gTasks[taskId].data[2] != 0) - gTasks[taskId].data[2]++; - if (!(gTasks[taskId].tCounter & 1) && gTasks[taskId].data[3] != 0) - gTasks[taskId].data[3]++; + if (!(gTasks[taskId].tCounter & 3) && gTasks[taskId].tPointless != 0) + gTasks[taskId].tPointless++; + if (!(gTasks[taskId].tCounter & 1) && gTasks[taskId].tBg2Y != 0) + gTasks[taskId].tBg2Y++; // Slide Pokemon logo up - yPos = gTasks[taskId].data[3] * 256; + yPos = gTasks[taskId].tBg2Y * 256; SetGpuReg(REG_OFFSET_BG2Y_L, yPos); SetGpuReg(REG_OFFSET_BG2Y_H, yPos / 0x10000); - gTasks[taskId].data[5] = 15; - gTasks[taskId].data[6] = 6; + gTasks[taskId].data[5] = 15; // Unused + gTasks[taskId].data[6] = 6; // Unused } // Show Rayquaza silhouette and process main title screen input static void Task_TitleScreenPhase3(u8 taskId) { - if ((JOY_NEW(A_BUTTON)) || (JOY_NEW(START_BUTTON))) + if (JOY_NEW(A_BUTTON) || JOY_NEW(START_BUTTON)) { FadeOutBGM(4); - BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 0x10, RGB_WHITEALPHA); + BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, RGB_WHITEALPHA); SetMainCallback2(CB2_GoToMainMenu); } else if (JOY_HELD(CLEAR_SAVE_BUTTON_COMBO) == CLEAR_SAVE_BUTTON_COMBO) @@ -740,30 +793,29 @@ static void Task_TitleScreenPhase3(u8 taskId) && CanResetRTC() == TRUE) { FadeOutBGM(4); - BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 0x10, RGB_BLACK); + BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, RGB_BLACK); SetMainCallback2(CB2_GoToResetRtcScreen); } else if (JOY_HELD(BERRY_UPDATE_BUTTON_COMBO) == BERRY_UPDATE_BUTTON_COMBO) { FadeOutBGM(4); - BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 0x10, RGB_BLACK); + BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, RGB_BLACK); SetMainCallback2(CB2_GoToBerryFixScreen); } else { SetGpuReg(REG_OFFSET_BG2Y_L, 0); SetGpuReg(REG_OFFSET_BG2Y_H, 0); - gTasks[taskId].tCounter++; - if (gTasks[taskId].tCounter & 1) + if (++gTasks[taskId].tCounter & 1) { - gTasks[taskId].data[4]++; - gBattle_BG1_Y = gTasks[taskId].data[4] / 2; + gTasks[taskId].tBg1Y++; + gBattle_BG1_Y = gTasks[taskId].tBg1Y / 2; gBattle_BG1_X = 0; } UpdateLegendaryMarkingColor(gTasks[taskId].tCounter); if ((gMPlayInfo_BGM.status & 0xFFFF) == 0) { - BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 0x10, RGB_WHITEALPHA); + BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, RGB_WHITEALPHA); SetMainCallback2(CB2_GoToCopyrightScreen); } } From 56ff4ce998225b7ff0f99db466022e29f8097aba Mon Sep 17 00:00:00 2001 From: GriffinR Date: Sun, 20 Aug 2023 01:35:51 -0400 Subject: [PATCH 075/162] Add defines for field effect sprite data, misc task data --- src/field_effect_helpers.c | 686 +++++++++++++++++++------------------ src/use_pokeblock.c | 37 +- 2 files changed, 369 insertions(+), 354 deletions(-) diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 9421aaf27a..237e543dee 100755 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -32,8 +32,12 @@ static void UpdateBobbingEffect(struct ObjectEvent *, struct Sprite *, struct Sp static void SpriteCB_UnderwaterSurfBlob(struct Sprite *); static u32 ShowDisguiseFieldEffect(u8, u8, u8); -// Used by several field effects to determine which of a group it is -#define sFldEff data[1] +// Data used by all the field effects that share UpdateJumpImpactEffect +#define sJumpElevation data[0] +#define sJumpFldEff data[1] + +// Data used by all the field effects that share WaitFieldEffectSpriteAnim +#define sWaitFldEff data[0] #define sReflectionObjEventId data[0] #define sReflectionObjEventLocalId data[1] @@ -44,7 +48,7 @@ void SetUpReflection(struct ObjectEvent *objectEvent, struct Sprite *sprite, boo { struct Sprite *reflectionSprite; - reflectionSprite = &gSprites[CreateCopySpriteAt(sprite, sprite->x, sprite->y, 0x98)]; + reflectionSprite = &gSprites[CreateCopySpriteAt(sprite, sprite->x, sprite->y, 152)]; reflectionSprite->callback = UpdateObjectReflectionSprite; reflectionSprite->oam.priority = 3; reflectionSprite->oam.paletteNum = gReflectionEffectPaletteMap[reflectionSprite->oam.paletteNum]; @@ -92,9 +96,7 @@ static void LoadObjectReflectionPalette(struct ObjectEvent *objectEvent, struct static void LoadObjectRegularReflectionPalette(struct ObjectEvent *objectEvent, u8 paletteIndex) { - const struct ObjectEventGraphicsInfo *graphicsInfo; - - graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId); + const struct ObjectEventGraphicsInfo *graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId); if (graphicsInfo->reflectionPaletteTag != OBJ_EVENT_PAL_TAG_NONE) { if (graphicsInfo->paletteSlot == PALSLOT_PLAYER) @@ -111,9 +113,7 @@ static void LoadObjectRegularReflectionPalette(struct ObjectEvent *objectEvent, // This is so the sprite blends in with the dark water metatile underneath the bridge. static void LoadObjectHighBridgeReflectionPalette(struct ObjectEvent *objectEvent, u8 paletteNum) { - const struct ObjectEventGraphicsInfo *graphicsInfo; - - graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId); + const struct ObjectEventGraphicsInfo *graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId); if (graphicsInfo->reflectionPaletteTag != OBJ_EVENT_PAL_TAG_NONE) { PatchObjectPalette(graphicsInfo->reflectionPaletteTag, paletteNum); @@ -123,11 +123,8 @@ static void LoadObjectHighBridgeReflectionPalette(struct ObjectEvent *objectEven static void UpdateObjectReflectionSprite(struct Sprite *reflectionSprite) { - struct ObjectEvent *objectEvent; - struct Sprite *mainSprite; - - objectEvent = &gObjectEvents[reflectionSprite->sReflectionObjEventId]; - mainSprite = &gSprites[objectEvent->spriteId]; + struct ObjectEvent *objectEvent = &gObjectEvents[reflectionSprite->sReflectionObjEventId]; + struct Sprite *mainSprite = &gSprites[objectEvent->spriteId]; if (!objectEvent->active || !objectEvent->hasReflection || objectEvent->localId != reflectionSprite->sReflectionObjEventLocalId) { reflectionSprite->inUse = FALSE; @@ -172,15 +169,15 @@ static void UpdateObjectReflectionSprite(struct Sprite *reflectionSprite) extern const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[]; +#define sPrevX data[0] +#define sPrevY data[1] + u8 CreateWarpArrowSprite(void) { - u8 spriteId; - struct Sprite *sprite; - - spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_ARROW], 0, 0, 0x52); + u8 spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_ARROW], 0, 0, 82); if (spriteId != MAX_SPRITES) { - sprite = &gSprites[spriteId]; + struct Sprite *sprite = &gSprites[spriteId]; sprite->oam.priority = 1; sprite->coordOffsetEnabled = TRUE; sprite->invisible = TRUE; @@ -195,24 +192,24 @@ void SetSpriteInvisible(u8 spriteId) void ShowWarpArrowSprite(u8 spriteId, u8 direction, s16 x, s16 y) { - s16 x2; - s16 y2; - struct Sprite *sprite; - - sprite = &gSprites[spriteId]; - if (sprite->invisible || sprite->data[0] != x || sprite->data[1] != y) + struct Sprite *sprite = &gSprites[spriteId]; + if (sprite->invisible || sprite->sPrevX != x || sprite->sPrevY != y) { + s16 x2, y2; SetSpritePosToMapCoords(x, y, &x2, &y2); sprite = &gSprites[spriteId]; sprite->x = x2 + 8; sprite->y = y2 + 8; sprite->invisible = FALSE; - sprite->data[0] = x; - sprite->data[1] = y; + sprite->sPrevX = x; + sprite->sPrevY = y; StartSpriteAnim(sprite, direction - 1); } } +#undef sPrevX +#undef sPrevY + static const u8 sShadowEffectTemplateIds[] = { FLDEFFOBJ_SHADOW_S, FLDEFFOBJ_SHADOW_M, @@ -227,22 +224,24 @@ const u16 gShadowVerticalOffsets[] = { 16 }; +// Sprite data for FLDEFF_SHADOW +#define sLocalId data[0] +#define sMapNum data[1] +#define sMapGroup data[2] +#define sYOffset data[3] + u32 FldEff_Shadow(void) { - u8 objectEventId; - const struct ObjectEventGraphicsInfo *graphicsInfo; - u8 spriteId; - - objectEventId = GetObjectEventIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); - graphicsInfo = GetObjectEventGraphicsInfo(gObjectEvents[objectEventId].graphicsId); - spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[sShadowEffectTemplateIds[graphicsInfo->shadowSize]], 0, 0, 0x94); + u8 objectEventId = GetObjectEventIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); + const struct ObjectEventGraphicsInfo *graphicsInfo = GetObjectEventGraphicsInfo(gObjectEvents[objectEventId].graphicsId); + u8 spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[sShadowEffectTemplateIds[graphicsInfo->shadowSize]], 0, 0, 148); if (spriteId != MAX_SPRITES) { gSprites[spriteId].coordOffsetEnabled = TRUE; - gSprites[spriteId].data[0] = gFieldEffectArguments[0]; - gSprites[spriteId].data[1] = gFieldEffectArguments[1]; - gSprites[spriteId].data[2] = gFieldEffectArguments[2]; - gSprites[spriteId].data[3] = (graphicsInfo->height >> 1) - gShadowVerticalOffsets[graphicsInfo->shadowSize]; + gSprites[spriteId].sLocalId = gFieldEffectArguments[0]; + gSprites[spriteId].sMapNum = gFieldEffectArguments[1]; + gSprites[spriteId].sMapGroup = gFieldEffectArguments[2]; + gSprites[spriteId].sYOffset = (graphicsInfo->height >> 1) - gShadowVerticalOffsets[graphicsInfo->shadowSize]; } return 0; } @@ -250,20 +249,18 @@ u32 FldEff_Shadow(void) void UpdateShadowFieldEffect(struct Sprite *sprite) { u8 objectEventId; - struct ObjectEvent *objectEvent; - struct Sprite *linkedSprite; - if (TryGetObjectEventIdByLocalIdAndMap(sprite->data[0], sprite->data[1], sprite->data[2], &objectEventId)) + if (TryGetObjectEventIdByLocalIdAndMap(sprite->sLocalId, sprite->sMapNum, sprite->sMapGroup, &objectEventId)) { FieldEffectStop(sprite, FLDEFF_SHADOW); } else { - objectEvent = &gObjectEvents[objectEventId]; - linkedSprite = &gSprites[objectEvent->spriteId]; + struct ObjectEvent *objectEvent = &gObjectEvents[objectEventId]; + struct Sprite *linkedSprite = &gSprites[objectEvent->spriteId]; sprite->oam.priority = linkedSprite->oam.priority; sprite->x = linkedSprite->x; - sprite->y = linkedSprite->y + sprite->data[3]; + sprite->y = linkedSprite->y + sprite->sYOffset; if (!objectEvent->active || !objectEvent->hasShadow || MetatileBehavior_IsPokeGrass(objectEvent->currentMetatileBehavior) || MetatileBehavior_IsSurfableWaterOrUnderwater(objectEvent->currentMetatileBehavior) @@ -276,6 +273,11 @@ void UpdateShadowFieldEffect(struct Sprite *sprite) } } +#undef sLocalId +#undef sMapNum +#undef sMapGroup +#undef sYOffset + // Sprite data for FLDEFF_TALL_GRASS and FLDEFF_LONG_GRASS #define sElevation data[0] #define sX data[1] @@ -288,18 +290,14 @@ void UpdateShadowFieldEffect(struct Sprite *sprite) u32 FldEff_TallGrass(void) { - s16 x; - s16 y; u8 spriteId; - struct Sprite *sprite; - - x = gFieldEffectArguments[0]; - y = gFieldEffectArguments[1]; + s16 x = gFieldEffectArguments[0]; + s16 y = gFieldEffectArguments[1]; SetSpritePosToOffsetMapCoords(&x, &y, 8, 8); spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_TALL_GRASS], x, y, 0); if (spriteId != MAX_SPRITES) { - sprite = &gSprites[spriteId]; + struct Sprite *sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gFieldEffectArguments[3]; sprite->sElevation = gFieldEffectArguments[2]; @@ -317,15 +315,12 @@ u32 FldEff_TallGrass(void) void UpdateTallGrassFieldEffect(struct Sprite *sprite) { - u8 mapNum; - u8 mapGroup; u8 metatileBehavior; u8 localId; u8 objectEventId; - struct ObjectEvent *objectEvent; + u8 mapNum = sprite->sCurrentMap >> 8; + u8 mapGroup = sprite->sCurrentMap; - mapNum = sprite->sCurrentMap >> 8; - mapGroup = sprite->sCurrentMap; if (gCamera.active && (gSaveBlock1Ptr->location.mapNum != mapNum || gSaveBlock1Ptr->location.mapGroup != mapGroup)) { sprite->sX -= gCamera.x; @@ -346,11 +341,9 @@ void UpdateTallGrassFieldEffect(struct Sprite *sprite) else { // Check if the object that triggered the effect has moved away - objectEvent = &gObjectEvents[objectEventId]; - if ((objectEvent->currentCoords.x != sprite->sX - || objectEvent->currentCoords.y != sprite->sY) - && (objectEvent->previousCoords.x != sprite->sX - || objectEvent->previousCoords.y != sprite->sY)) + struct ObjectEvent *objectEvent = &gObjectEvents[objectEventId]; + if ((objectEvent->currentCoords.x != sprite->sX || objectEvent->currentCoords.y != sprite->sY) + && (objectEvent->previousCoords.x != sprite->sX || objectEvent->previousCoords.y != sprite->sY)) sprite->sObjectMoved = TRUE; // Metatile behavior var re-used as subpriority @@ -366,31 +359,28 @@ void UpdateTallGrassFieldEffect(struct Sprite *sprite) u32 FldEff_JumpTallGrass(void) { u8 spriteId; - struct Sprite *sprite; SetSpritePosToOffsetMapCoords((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 12); spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_JUMP_TALL_GRASS], gFieldEffectArguments[0], gFieldEffectArguments[1], 0); if (spriteId != MAX_SPRITES) { - sprite = &gSprites[spriteId]; + struct Sprite *sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gFieldEffectArguments[3]; - sprite->sElevation = gFieldEffectArguments[2]; - sprite->sFldEff = FLDEFF_JUMP_TALL_GRASS; + sprite->sJumpElevation = gFieldEffectArguments[2]; + sprite->sJumpFldEff = FLDEFF_JUMP_TALL_GRASS; } return 0; } u8 FindTallGrassFieldEffectSpriteId(u8 localId, u8 mapNum, u8 mapGroup, s16 x, s16 y) { - struct Sprite *sprite; u8 i; - for (i = 0; i < MAX_SPRITES; i ++) { if (gSprites[i].inUse) { - sprite = &gSprites[i]; + struct Sprite *sprite = &gSprites[i]; if (sprite->callback == UpdateTallGrassFieldEffect && (x == sprite->sX && y == sprite->sY) && localId == (u8)(sprite->sLocalId) @@ -404,18 +394,14 @@ u8 FindTallGrassFieldEffectSpriteId(u8 localId, u8 mapNum, u8 mapGroup, s16 x, s u32 FldEff_LongGrass(void) { - s16 x; - s16 y; u8 spriteId; - struct Sprite *sprite; - - x = gFieldEffectArguments[0]; - y = gFieldEffectArguments[1]; + s16 x = gFieldEffectArguments[0]; + s16 y = gFieldEffectArguments[1]; SetSpritePosToOffsetMapCoords(&x, &y, 8, 8); spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_LONG_GRASS], x, y, 0); if (spriteId != MAX_SPRITES) { - sprite = &gSprites[spriteId]; + struct Sprite *sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = ElevationToPriority(gFieldEffectArguments[2]); sprite->sElevation = gFieldEffectArguments[2]; @@ -433,15 +419,12 @@ u32 FldEff_LongGrass(void) void UpdateLongGrassFieldEffect(struct Sprite *sprite) { - u8 mapNum; - u8 mapGroup; u8 metatileBehavior; u8 localId; u8 objectEventId; - struct ObjectEvent *objectEvent; + u8 mapNum = sprite->sCurrentMap >> 8; + u8 mapGroup = sprite->sCurrentMap; - mapNum = sprite->sCurrentMap >> 8; - mapGroup = sprite->sCurrentMap; if (gCamera.active && (gSaveBlock1Ptr->location.mapNum != mapNum || gSaveBlock1Ptr->location.mapGroup != mapGroup)) { sprite->sX -= gCamera.x; @@ -451,7 +434,7 @@ void UpdateLongGrassFieldEffect(struct Sprite *sprite) localId = sprite->sLocalId; mapNum = sprite->sMapNum; mapGroup = sprite->sMapGroup; - metatileBehavior = MapGridGetMetatileBehaviorAt(sprite->data[1], sprite->data[2]); + metatileBehavior = MapGridGetMetatileBehaviorAt(sprite->sX, sprite->sY); if (TryGetObjectEventIdByLocalIdAndMap(localId, mapNum, mapGroup, &objectEventId) || !MetatileBehavior_IsLongGrass(metatileBehavior) || (sprite->sObjectMoved && sprite->animEnded)) @@ -461,11 +444,9 @@ void UpdateLongGrassFieldEffect(struct Sprite *sprite) else { // Check if the object that triggered the effect has moved away - objectEvent = &gObjectEvents[objectEventId]; - if ((objectEvent->currentCoords.x != sprite->data[1] - || objectEvent->currentCoords.y != sprite->data[2]) - && (objectEvent->previousCoords.x != sprite->data[1] - || objectEvent->previousCoords.y != sprite->data[2])) + struct ObjectEvent *objectEvent = &gObjectEvents[objectEventId]; + if ((objectEvent->currentCoords.x != sprite->sX || objectEvent->currentCoords.y != sprite->sY) + && (objectEvent->previousCoords.x != sprite->sX || objectEvent->previousCoords.y != sprite->sY)) sprite->sObjectMoved = TRUE; UpdateObjectEventSpriteInvisibility(sprite, FALSE); @@ -473,6 +454,7 @@ void UpdateLongGrassFieldEffect(struct Sprite *sprite) } } +#undef sElevation #undef sX #undef sY #undef sMapNum @@ -486,41 +468,42 @@ void UpdateLongGrassFieldEffect(struct Sprite *sprite) u32 FldEff_JumpLongGrass(void) { u8 spriteId; - struct Sprite *sprite; SetSpritePosToOffsetMapCoords((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_JUMP_LONG_GRASS], gFieldEffectArguments[0], gFieldEffectArguments[1], 0); if (spriteId != MAX_SPRITES) { - sprite = &gSprites[spriteId]; + struct Sprite *sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gFieldEffectArguments[3]; - sprite->sElevation = gFieldEffectArguments[2]; - sprite->sFldEff = FLDEFF_JUMP_LONG_GRASS; + sprite->sJumpElevation = gFieldEffectArguments[2]; + sprite->sJumpFldEff = FLDEFF_JUMP_LONG_GRASS; } return 0; } +// Sprite data for FLDEFF_SHORT_GRASS +#define sLocalId data[0] +#define sMapNum data[1] +#define sMapGroup data[2] +#define sPrevX data[3] +#define sPrevY data[4] + u32 FldEff_ShortGrass(void) { - u8 objectEventId; - struct ObjectEvent *objectEvent; - u8 spriteId; - struct Sprite *sprite; - - objectEventId = GetObjectEventIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); - objectEvent = &gObjectEvents[objectEventId]; - spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_SHORT_GRASS], 0, 0, 0); + u8 objectEventId = GetObjectEventIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); + struct ObjectEvent *objectEvent = &gObjectEvents[objectEventId]; + u8 spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_SHORT_GRASS], 0, 0, 0); if (spriteId != MAX_SPRITES) { - sprite = &(gSprites[spriteId]); + struct Sprite *sprite = &(gSprites[spriteId]); sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gSprites[objectEvent->spriteId].oam.priority; - sprite->data[0] = gFieldEffectArguments[0]; - sprite->data[1] = gFieldEffectArguments[1]; - sprite->data[2] = gFieldEffectArguments[2]; - sprite->data[3] = gSprites[objectEvent->spriteId].x; - sprite->data[4] = gSprites[objectEvent->spriteId].y; + sprite->sLocalId = gFieldEffectArguments[0]; + sprite->sMapNum = gFieldEffectArguments[1]; + sprite->sMapGroup = gFieldEffectArguments[2]; + sprite->sPrevX = gSprites[objectEvent->spriteId].x; + sprite->sPrevY = gSprites[objectEvent->spriteId].y; } return 0; } @@ -528,32 +511,28 @@ u32 FldEff_ShortGrass(void) void UpdateShortGrassFieldEffect(struct Sprite *sprite) { u8 objectEventId; - s16 x; - s16 y; - const struct ObjectEventGraphicsInfo *graphicsInfo; - struct Sprite *linkedSprite; - if (TryGetObjectEventIdByLocalIdAndMap(sprite->data[0], sprite->data[1], sprite->data[2], &objectEventId) || !gObjectEvents[objectEventId].inShortGrass) + if (TryGetObjectEventIdByLocalIdAndMap(sprite->sLocalId, sprite->sMapNum, sprite->sMapGroup, &objectEventId) || !gObjectEvents[objectEventId].inShortGrass) { FieldEffectStop(sprite, FLDEFF_SHORT_GRASS); } else { - graphicsInfo = GetObjectEventGraphicsInfo(gObjectEvents[objectEventId].graphicsId); - linkedSprite = &gSprites[gObjectEvents[objectEventId].spriteId]; - y = linkedSprite->y; - x = linkedSprite->x; - if (x != sprite->data[3] || y != sprite->data[4]) + const struct ObjectEventGraphicsInfo *graphicsInfo = GetObjectEventGraphicsInfo(gObjectEvents[objectEventId].graphicsId); + struct Sprite *linkedSprite = &gSprites[gObjectEvents[objectEventId].spriteId]; + s16 parentY = linkedSprite->y; + s16 parentX = linkedSprite->x; + if (parentX != sprite->sPrevX || parentY != sprite->sPrevY) { - sprite->data[3] = x; - sprite->data[4] = y; + // Parent sprite moved, try to restart the animation + sprite->sPrevX = parentX; + sprite->sPrevY = parentY; if (sprite->animEnded) - { StartSpriteAnim(sprite, 0); - } } - sprite->x = x; - sprite->y = y; + sprite->x = parentX; + sprite->y = parentY; + // Offset the grass sprite halfway down the parent sprite. sprite->y2 = (graphicsInfo->height >> 1) - 8; sprite->subpriority = linkedSprite->subpriority - 1; sprite->oam.priority = linkedSprite->oam.priority; @@ -561,19 +540,29 @@ void UpdateShortGrassFieldEffect(struct Sprite *sprite) } } +#undef sLocalId +#undef sMapNum +#undef sMapGroup +#undef sPrevX +#undef sPrevY + +// Sprite data for FLDEFF_SAND_FOOTPRINTS, FLDEFF_DEEP_SAND_FOOTPRINTS, and FLDEFF_BIKE_TIRE_TRACKS +#define sState data[0] +#define sTimer data[1] +#define sFldEff data[7] + u32 FldEff_SandFootprints(void) { u8 spriteId; - struct Sprite *sprite; SetSpritePosToOffsetMapCoords((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_SAND_FOOTPRINTS], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); if (spriteId != MAX_SPRITES) { - sprite = &gSprites[spriteId]; + struct Sprite *sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gFieldEffectArguments[3]; - sprite->data[7] = FLDEFF_SAND_FOOTPRINTS; + sprite->sFldEff = FLDEFF_SAND_FOOTPRINTS; StartSpriteAnim(sprite, gFieldEffectArguments[4]); } return 0; @@ -582,16 +571,15 @@ u32 FldEff_SandFootprints(void) u32 FldEff_DeepSandFootprints(void) { u8 spriteId; - struct Sprite *sprite; SetSpritePosToOffsetMapCoords((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_DEEP_SAND_FOOTPRINTS], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); if (spriteId != MAX_SPRITES) { - sprite = &gSprites[spriteId]; + struct Sprite *sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gFieldEffectArguments[3]; - sprite->data[7] = FLDEFF_DEEP_SAND_FOOTPRINTS; + sprite->sFldEff = FLDEFF_DEEP_SAND_FOOTPRINTS; StartSpriteAnim(sprite, gFieldEffectArguments[4]); } return spriteId; @@ -600,16 +588,15 @@ u32 FldEff_DeepSandFootprints(void) u32 FldEff_BikeTireTracks(void) { u8 spriteId; - struct Sprite *sprite; SetSpritePosToOffsetMapCoords((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_BIKE_TIRE_TRACKS], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); if (spriteId != MAX_SPRITES) { - sprite = &gSprites[spriteId]; + struct Sprite *sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gFieldEffectArguments[3]; - sprite->data[7] = FLDEFF_BIKE_TIRE_TRACKS; + sprite->sFldEff = FLDEFF_BIKE_TIRE_TRACKS; StartSpriteAnim(sprite, gFieldEffectArguments[4]); } return spriteId; @@ -622,14 +609,14 @@ void (*const gFadeFootprintsTireTracksFuncs[])(struct Sprite *) = { void UpdateFootprintsTireTracksFieldEffect(struct Sprite *sprite) { - gFadeFootprintsTireTracksFuncs[sprite->data[0]](sprite); + gFadeFootprintsTireTracksFuncs[sprite->sState](sprite); } static void FadeFootprintsTireTracks_Step0(struct Sprite *sprite) { // Wait 40 frames before the flickering starts. - if (++sprite->data[1] > 40) - sprite->data[0] = 1; + if (++sprite->sTimer > 40) + sprite->sState = 1; UpdateObjectEventSpriteInvisibility(sprite, FALSE); } @@ -637,36 +624,37 @@ static void FadeFootprintsTireTracks_Step0(struct Sprite *sprite) static void FadeFootprintsTireTracks_Step1(struct Sprite *sprite) { sprite->invisible ^= 1; - sprite->data[1]++; + sprite->sTimer++; UpdateObjectEventSpriteInvisibility(sprite, sprite->invisible); - if (sprite->data[1] > 56) - { - FieldEffectStop(sprite, sprite->data[7]); - } + if (sprite->sTimer > 56) + FieldEffectStop(sprite, sprite->sFldEff); } +#undef sState +#undef sTimer +#undef sFldEff + +// Sprite data for FLDEFF_SPLASH +#define sLocalId data[0] +#define sMapNum data[1] +#define sMapGroup data[2] + u32 FldEff_Splash(void) { - u8 objectEventId; - struct ObjectEvent *objectEvent; - u8 spriteId; - struct Sprite *sprite; - const struct ObjectEventGraphicsInfo *graphicsInfo; - struct Sprite *linkedSprite; - - objectEventId = GetObjectEventIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); - objectEvent = &gObjectEvents[objectEventId]; - spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_SPLASH], 0, 0, 0); + u8 objectEventId = GetObjectEventIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); + struct ObjectEvent *objectEvent = &gObjectEvents[objectEventId]; + u8 spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_SPLASH], 0, 0, 0); if (spriteId != MAX_SPRITES) { - graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId); - sprite = &gSprites[spriteId]; + struct Sprite *linkedSprite; + const struct ObjectEventGraphicsInfo *graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId); + struct Sprite *sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; linkedSprite = &gSprites[objectEvent->spriteId]; sprite->oam.priority = linkedSprite->oam.priority; - sprite->data[0] = gFieldEffectArguments[0]; - sprite->data[1] = gFieldEffectArguments[1]; - sprite->data[2] = gFieldEffectArguments[2]; + sprite->sLocalId = gFieldEffectArguments[0]; + sprite->sMapNum = gFieldEffectArguments[1]; + sprite->sMapGroup = gFieldEffectArguments[2]; sprite->y2 = (graphicsInfo->height >> 1) - 4; PlaySE(SE_PUDDLE); } @@ -677,7 +665,7 @@ void UpdateSplashFieldEffect(struct Sprite *sprite) { u8 objectEventId; - if (sprite->animEnded || TryGetObjectEventIdByLocalIdAndMap(sprite->data[0], sprite->data[1], sprite->data[2], &objectEventId)) + if (sprite->animEnded || TryGetObjectEventIdByLocalIdAndMap(sprite->sLocalId, sprite->sMapNum, sprite->sMapGroup, &objectEventId)) { FieldEffectStop(sprite, FLDEFF_SPLASH); } @@ -689,20 +677,23 @@ void UpdateSplashFieldEffect(struct Sprite *sprite) } } +#undef sLocalId +#undef sMapNum +#undef sMapGroup + u32 FldEff_JumpSmallSplash(void) { u8 spriteId; - struct Sprite *sprite; SetSpritePosToOffsetMapCoords((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 12); spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_JUMP_SMALL_SPLASH], gFieldEffectArguments[0], gFieldEffectArguments[1], 0); if (spriteId != MAX_SPRITES) { - sprite = &gSprites[spriteId]; + struct Sprite *sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gFieldEffectArguments[3]; - sprite->data[0] = gFieldEffectArguments[2]; - sprite->data[1] = FLDEFF_JUMP_SMALL_SPLASH; + sprite->sJumpElevation = gFieldEffectArguments[2]; + sprite->sJumpFldEff = FLDEFF_JUMP_SMALL_SPLASH; } return 0; } @@ -710,44 +701,44 @@ u32 FldEff_JumpSmallSplash(void) u32 FldEff_JumpBigSplash(void) { u8 spriteId; - struct Sprite *sprite; SetSpritePosToOffsetMapCoords((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_JUMP_BIG_SPLASH], gFieldEffectArguments[0], gFieldEffectArguments[1], 0); if (spriteId != MAX_SPRITES) { - sprite = &gSprites[spriteId]; + struct Sprite *sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gFieldEffectArguments[3]; - sprite->data[0] = gFieldEffectArguments[2]; - sprite->data[1] = FLDEFF_JUMP_BIG_SPLASH; + sprite->sJumpElevation = gFieldEffectArguments[2]; + sprite->sJumpFldEff = FLDEFF_JUMP_BIG_SPLASH; } return 0; } +// Sprite data for FLDEFF_FEET_IN_FLOWING_WATER +#define sLocalId data[0] +#define sMapNum data[1] +#define sMapGroup data[2] +#define sPrevX data[3] +#define sPrevY data[4] + u32 FldEff_FeetInFlowingWater(void) { - u8 objectEventId; - struct ObjectEvent *objectEvent; - u8 spriteId; - struct Sprite *sprite; - const struct ObjectEventGraphicsInfo *graphicsInfo; - - objectEventId = GetObjectEventIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); - objectEvent = &gObjectEvents[objectEventId]; - spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_SPLASH], 0, 0, 0); + u8 objectEventId = GetObjectEventIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); + struct ObjectEvent *objectEvent = &gObjectEvents[objectEventId]; + u8 spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_SPLASH], 0, 0, 0); if (spriteId != MAX_SPRITES) { - graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId); - sprite = &gSprites[spriteId]; + const struct ObjectEventGraphicsInfo *graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId); + struct Sprite *sprite = &gSprites[spriteId]; sprite->callback = UpdateFeetInFlowingWaterFieldEffect; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gSprites[objectEvent->spriteId].oam.priority; - sprite->data[0] = gFieldEffectArguments[0]; - sprite->data[1] = gFieldEffectArguments[1]; - sprite->data[2] = gFieldEffectArguments[2]; - sprite->data[3] = -1; - sprite->data[4] = -1; + sprite->sLocalId = gFieldEffectArguments[0]; + sprite->sMapNum = gFieldEffectArguments[1]; + sprite->sMapGroup = gFieldEffectArguments[2]; + sprite->sPrevX = -1; + sprite->sPrevY = -1; sprite->y2 = (graphicsInfo->height >> 1) - 4; StartSpriteAnim(sprite, 1); } @@ -757,69 +748,70 @@ u32 FldEff_FeetInFlowingWater(void) static void UpdateFeetInFlowingWaterFieldEffect(struct Sprite *sprite) { u8 objectEventId; - struct Sprite *linkedSprite; - struct ObjectEvent *objectEvent; - if (TryGetObjectEventIdByLocalIdAndMap(sprite->data[0], sprite->data[1], sprite->data[2], &objectEventId) || !gObjectEvents[objectEventId].inShallowFlowingWater) + if (TryGetObjectEventIdByLocalIdAndMap(sprite->sLocalId, sprite->sMapNum, sprite->sMapGroup, &objectEventId) || !gObjectEvents[objectEventId].inShallowFlowingWater) { FieldEffectStop(sprite, FLDEFF_FEET_IN_FLOWING_WATER); } else { - objectEvent = &gObjectEvents[objectEventId]; - linkedSprite = &gSprites[objectEvent->spriteId]; + struct ObjectEvent *objectEvent = &gObjectEvents[objectEventId]; + struct Sprite *linkedSprite = &gSprites[objectEvent->spriteId]; sprite->x = linkedSprite->x; sprite->y = linkedSprite->y; sprite->subpriority = linkedSprite->subpriority; UpdateObjectEventSpriteInvisibility(sprite, FALSE); - if (objectEvent->currentCoords.x != sprite->data[3] || objectEvent->currentCoords.y != sprite->data[4]) + if (objectEvent->currentCoords.x != sprite->sPrevX || objectEvent->currentCoords.y != sprite->sPrevY) { - sprite->data[3] = objectEvent->currentCoords.x; - sprite->data[4] = objectEvent->currentCoords.y; + sprite->sPrevX = objectEvent->currentCoords.x; + sprite->sPrevY = objectEvent->currentCoords.y; if (!sprite->invisible) - { PlaySE(SE_PUDDLE); - } } } } +#undef sLocalId +#undef sMapNum +#undef sMapGroup +#undef sPrevX +#undef sPrevY + u32 FldEff_Ripple(void) { - u8 spriteId; - struct Sprite *sprite; - - spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_RIPPLE], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); + u8 spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_RIPPLE], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); if (spriteId != MAX_SPRITES) { - sprite = &gSprites[spriteId]; + struct Sprite *sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gFieldEffectArguments[3]; - sprite->data[0] = FLDEFF_RIPPLE; + sprite->sWaitFldEff = FLDEFF_RIPPLE; } return 0; } +// Sprite data for FLDEFF_HOT_SPRINGS_WATER +#define sLocalId data[0] +#define sMapNum data[1] +#define sMapGroup data[2] +#define sPrevX data[3] +#define sPrevY data[4] + u32 FldEff_HotSpringsWater(void) { - u8 objectEventId; - struct ObjectEvent *objectEvent; - u8 spriteId; - struct Sprite *sprite; - - objectEventId = GetObjectEventIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); - objectEvent = &gObjectEvents[objectEventId]; - spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_HOT_SPRINGS_WATER], 0, 0, 0); + u8 objectEventId = GetObjectEventIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); + struct ObjectEvent *objectEvent = &gObjectEvents[objectEventId]; + u8 spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_HOT_SPRINGS_WATER], 0, 0, 0); if (spriteId != MAX_SPRITES) { - sprite = &gSprites[spriteId]; + struct Sprite *sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gSprites[objectEvent->spriteId].oam.priority; - sprite->data[0] = gFieldEffectArguments[0]; - sprite->data[1] = gFieldEffectArguments[1]; - sprite->data[2] = gFieldEffectArguments[2]; - sprite->data[3] = gSprites[objectEvent->spriteId].x; - sprite->data[4] = gSprites[objectEvent->spriteId].y; + sprite->sLocalId = gFieldEffectArguments[0]; + sprite->sMapNum = gFieldEffectArguments[1]; + sprite->sMapGroup = gFieldEffectArguments[2]; + sprite->sPrevX = gSprites[objectEvent->spriteId].x; // Unused + sprite->sPrevY = gSprites[objectEvent->spriteId].y; // Unused } return 0; } @@ -827,17 +819,15 @@ u32 FldEff_HotSpringsWater(void) void UpdateHotSpringsWaterFieldEffect(struct Sprite *sprite) { u8 objectEventId; - const struct ObjectEventGraphicsInfo *graphicsInfo; - struct Sprite *linkedSprite; - if (TryGetObjectEventIdByLocalIdAndMap(sprite->data[0], sprite->data[1], sprite->data[2], &objectEventId) || !gObjectEvents[objectEventId].inHotSprings) + if (TryGetObjectEventIdByLocalIdAndMap(sprite->sLocalId, sprite->sMapNum, sprite->sMapGroup, &objectEventId) || !gObjectEvents[objectEventId].inHotSprings) { FieldEffectStop(sprite, FLDEFF_HOT_SPRINGS_WATER); } else { - graphicsInfo = GetObjectEventGraphicsInfo(gObjectEvents[objectEventId].graphicsId); - linkedSprite = &gSprites[gObjectEvents[objectEventId].spriteId]; + const struct ObjectEventGraphicsInfo *graphicsInfo = GetObjectEventGraphicsInfo(gObjectEvents[objectEventId].graphicsId); + struct Sprite *linkedSprite = &gSprites[gObjectEvents[objectEventId].spriteId]; sprite->x = linkedSprite->x; sprite->y = (graphicsInfo->height >> 1) + linkedSprite->y - 8; sprite->subpriority = linkedSprite->subpriority - 1; @@ -845,19 +835,24 @@ void UpdateHotSpringsWaterFieldEffect(struct Sprite *sprite) } } +#undef sLocalId +#undef sMapNum +#undef sMapGroup +#undef sPrevX +#undef sPrevY + u32 FldEff_UnusedGrass(void) { u8 spriteId; - struct Sprite *sprite; SetSpritePosToOffsetMapCoords((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_UNUSED_GRASS], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); if (spriteId != MAX_SPRITES) { - sprite = &gSprites[spriteId]; + struct Sprite *sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gFieldEffectArguments[3]; - sprite->data[0] = FLDEFF_UNUSED_GRASS; + sprite->sWaitFldEff = FLDEFF_UNUSED_GRASS; } return 0; } @@ -865,16 +860,15 @@ u32 FldEff_UnusedGrass(void) u32 FldEff_UnusedGrass2(void) { u8 spriteId; - struct Sprite *sprite; SetSpritePosToOffsetMapCoords((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_UNUSED_GRASS_2], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); if (spriteId != MAX_SPRITES) { - sprite = &gSprites[spriteId]; + struct Sprite *sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gFieldEffectArguments[3]; - sprite->data[0] = FLDEFF_UNUSED_GRASS_2; + sprite->sWaitFldEff = FLDEFF_UNUSED_GRASS_2; } return 0; } @@ -882,16 +876,15 @@ u32 FldEff_UnusedGrass2(void) u32 FldEff_UnusedSand(void) { u8 spriteId; - struct Sprite *sprite; SetSpritePosToOffsetMapCoords((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_UNUSED_SAND], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); if (spriteId != MAX_SPRITES) { - sprite = &gSprites[spriteId]; + struct Sprite *sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gFieldEffectArguments[3]; - sprite->data[0] = FLDEFF_UNUSED_SAND; + sprite->sWaitFldEff = FLDEFF_UNUSED_SAND; } return 0; } @@ -899,16 +892,15 @@ u32 FldEff_UnusedSand(void) u32 FldEff_WaterSurfacing(void) { u8 spriteId; - struct Sprite *sprite; SetSpritePosToOffsetMapCoords((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_WATER_SURFACING], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); if (spriteId != MAX_SPRITES) { - sprite = &gSprites[spriteId]; + struct Sprite *sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gFieldEffectArguments[3]; - sprite->data[0] = FLDEFF_WATER_SURFACING; + sprite->sWaitFldEff = FLDEFF_WATER_SURFACING; } return 0; } @@ -933,18 +925,15 @@ void StartAshFieldEffect(s16 x, s16 y, u16 metatileId, s16 delay) u32 FldEff_Ash(void) { - s16 x; - s16 y; u8 spriteId; - struct Sprite *sprite; - x = gFieldEffectArguments[0]; - y = gFieldEffectArguments[1]; + s16 x = gFieldEffectArguments[0]; + s16 y = gFieldEffectArguments[1]; SetSpritePosToOffsetMapCoords(&x, &y, 8, 8); spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_ASH], x, y, gFieldEffectArguments[2]); if (spriteId != MAX_SPRITES) { - sprite = &gSprites[spriteId]; + struct Sprite *sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gFieldEffectArguments[3]; sprite->sX = gFieldEffectArguments[0]; @@ -998,27 +987,30 @@ static void UpdateAshFieldEffect_End(struct Sprite *sprite) #undef sDelay // Sprite data for FLDEFF_SURF_BLOB -#define tBitfield data[0] -#define tPlayerOffset data[1] -#define tPlayerObjId data[2] - +#define sBitfield data[0] +#define sPlayerOffset data[1] +#define sPlayerObjId data[2] +#define sVelocity data[3] +#define sTimer data[4] +#define sIntervalIdx data[5] +#define sPrevX data[6] +#define sPrevY data[7] u32 FldEff_SurfBlob(void) { u8 spriteId; - struct Sprite *sprite; SetSpritePosToOffsetMapCoords((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); - spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_SURF_BLOB], gFieldEffectArguments[0], gFieldEffectArguments[1], 0x96); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_SURF_BLOB], gFieldEffectArguments[0], gFieldEffectArguments[1], 150); if (spriteId != MAX_SPRITES) { - sprite = &gSprites[spriteId]; + struct Sprite *sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.paletteNum = 0; - sprite->tPlayerObjId = gFieldEffectArguments[2]; - sprite->data[3] = -1; - sprite->data[6] = -1; - sprite->data[7] = -1; + sprite->sPlayerObjId = gFieldEffectArguments[2]; + sprite->sVelocity = -1; + sprite->sPrevX = -1; + sprite->sPrevY = -1; } FieldEffectActiveListRemove(FLDEFF_SURF_BLOB); return spriteId; @@ -1027,43 +1019,40 @@ u32 FldEff_SurfBlob(void) void SetSurfBlob_BobState(u8 spriteId, u8 state) { - gSprites[spriteId].data[0] = (gSprites[spriteId].data[0] & ~0xF) | (state & 0xF); + gSprites[spriteId].sBitfield = (gSprites[spriteId].sBitfield & ~0xF) | (state & 0xF); } void SetSurfBlob_DontSyncAnim(u8 spriteId, bool8 dontSync) { - gSprites[spriteId].data[0] = (gSprites[spriteId].data[0] & ~0xF0) | ((dontSync & 0xF) << 4); + gSprites[spriteId].sBitfield = (gSprites[spriteId].sBitfield & ~0xF0) | ((dontSync & 0xF) << 4); } void SetSurfBlob_PlayerOffset(u8 spriteId, bool8 hasOffset, s16 offset) { - gSprites[spriteId].data[0] = (gSprites[spriteId].data[0] & ~0xF00) | ((hasOffset & 0xF) << 8); - gSprites[spriteId].tPlayerOffset = offset; + gSprites[spriteId].sBitfield = (gSprites[spriteId].sBitfield & ~0xF00) | ((hasOffset & 0xF) << 8); + gSprites[spriteId].sPlayerOffset = offset; } static u8 GetSurfBlob_BobState(struct Sprite *sprite) { - return sprite->data[0] & 0xF; + return sprite->sBitfield & 0xF; } // Never TRUE static u8 GetSurfBlob_DontSyncAnim(struct Sprite *sprite) { - return (sprite->data[0] & 0xF0) >> 4; + return (sprite->sBitfield & 0xF0) >> 4; } static u8 GetSurfBlob_HasPlayerOffset(struct Sprite *sprite) { - return (sprite->data[0] & 0xF00) >> 8; + return (sprite->sBitfield & 0xF00) >> 8; } void UpdateSurfBlobFieldEffect(struct Sprite *sprite) { - struct ObjectEvent *playerObj; - struct Sprite *playerSprite; - - playerObj = &gObjectEvents[sprite->tPlayerObjId]; - playerSprite = &gSprites[playerObj->spriteId]; + struct ObjectEvent *playerObj = &gObjectEvents[sprite->sPlayerObjId]; + struct Sprite *playerSprite = &gSprites[playerObj->spriteId]; SynchroniseSurfAnim(playerObj, sprite); SynchroniseSurfPosition(playerObj, sprite); UpdateBobbingEffect(playerObj, playerSprite, sprite); @@ -1096,17 +1085,19 @@ void SynchroniseSurfPosition(struct ObjectEvent *playerObj, struct Sprite *sprit s16 y = playerObj->currentCoords.y; s32 spriteY = sprite->y2; - if (spriteY == 0 && (x != sprite->data[6] || y != sprite->data[7])) + if (spriteY == 0 && (x != sprite->sPrevX || y != sprite->sPrevY)) { - sprite->data[5] = spriteY; - sprite->data[6] = x; - sprite->data[7] = y; - for (i = DIR_SOUTH; i <= DIR_EAST; i++, x = sprite->data[6], y = sprite->data[7]) + // Player is moving while surfing, update position. + sprite->sIntervalIdx = 0; + sprite->sPrevX = x; + sprite->sPrevY = y; + for (i = DIR_SOUTH; i <= DIR_EAST; i++, x = sprite->sPrevX, y = sprite->sPrevY) { MoveCoords(i, &x, &y); if (MapGridGetElevationAt(x, y) == 3) { - sprite->data[5]++; + // While dismounting the surf blob bobs at a slower rate + sprite->sIntervalIdx++; break; } } @@ -1115,46 +1106,54 @@ void SynchroniseSurfPosition(struct ObjectEvent *playerObj, struct Sprite *sprit static void UpdateBobbingEffect(struct ObjectEvent *playerObj, struct Sprite *playerSprite, struct Sprite *sprite) { - u16 intervals[] = {3, 7}; + // The frame interval at which to update the blob's y movement. + // Normally every 4th frame, but every 8th frame while dismounting. + u16 intervals[] = {0x3, 0x7}; + u8 bobState = GetSurfBlob_BobState(sprite); if (bobState != BOB_NONE) { - // Update bobbing position of surf blob - if (((u16)(++sprite->data[4]) & intervals[sprite->data[5]]) == 0) - { - sprite->y2 += sprite->data[3]; - } - if ((sprite->data[4] & 15) == 0) - { - sprite->data[3] = -sprite->data[3]; - } + // Update vertical position of surf blob + if (((u16)(++sprite->sTimer) & intervals[sprite->sIntervalIdx]) == 0) + sprite->y2 += sprite->sVelocity; + + // Reverse bob direction + if ((sprite->sTimer & 15) == 0) + sprite->sVelocity = -sprite->sVelocity; + if (bobState != BOB_JUST_MON) { - // Update bobbing position of player + // Update vertical position of player if (!GetSurfBlob_HasPlayerOffset(sprite)) playerSprite->y2 = sprite->y2; else - playerSprite->y2 = sprite->tPlayerOffset + sprite->y2; + playerSprite->y2 = sprite->sPlayerOffset + sprite->y2; sprite->x = playerSprite->x; sprite->y = playerSprite->y + 8; } } } +#undef sBitfield +#undef sPlayerOffset +#undef sPlayerObjId +#undef sVelocity +#undef sTimer +#undef sIntervalIdx +#undef sPrevX +#undef sPrevY + #define sSpriteId data[0] #define sBobY data[1] #define sTimer data[2] u8 StartUnderwaterSurfBlobBobbing(u8 blobSpriteId) { - u8 spriteId; - struct Sprite *sprite; - // Create a dummy sprite with its own callback // that tracks the actual surf blob sprite and // makes it bob up and down underwater - spriteId = CreateSpriteAtEnd(&gDummySpriteTemplate, 0, 0, -1); - sprite = &gSprites[spriteId]; + u8 spriteId = CreateSpriteAtEnd(&gDummySpriteTemplate, 0, 0, -1); + struct Sprite *sprite = &gSprites[spriteId]; sprite->callback = SpriteCB_UnderwaterSurfBlob; sprite->invisible = TRUE; sprite->sSpriteId = blobSpriteId; @@ -1164,17 +1163,14 @@ u8 StartUnderwaterSurfBlobBobbing(u8 blobSpriteId) static void SpriteCB_UnderwaterSurfBlob(struct Sprite *sprite) { - struct Sprite *blobSprite; + struct Sprite *blobSprite = &gSprites[sprite->sSpriteId]; - blobSprite = &gSprites[sprite->sSpriteId]; + // Update vertical position of surf blob if (((sprite->sTimer++) & 3) == 0) - { blobSprite->y2 += sprite->sBobY; - } + // Reverse direction if ((sprite->sTimer & 15) == 0) - { sprite->sBobY = -sprite->sBobY; - } } #undef sSpriteId @@ -1184,43 +1180,43 @@ static void SpriteCB_UnderwaterSurfBlob(struct Sprite *sprite) u32 FldEff_Dust(void) { u8 spriteId; - struct Sprite *sprite; SetSpritePosToOffsetMapCoords((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 12); spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_GROUND_IMPACT_DUST], gFieldEffectArguments[0], gFieldEffectArguments[1], 0); if (spriteId != MAX_SPRITES) { - sprite = &gSprites[spriteId]; + struct Sprite *sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gFieldEffectArguments[3]; - sprite->data[0] = gFieldEffectArguments[2]; - sprite->data[1] = FLDEFF_DUST; + sprite->sJumpElevation = gFieldEffectArguments[2]; + sprite->sJumpFldEff = FLDEFF_DUST; } return 0; } +// Sprite data for FLDEFF_SAND_PILE +#define sLocalId data[0] +#define sMapNum data[1] +#define sMapGroup data[2] +#define sPrevX data[3] +#define sPrevY data[4] + u32 FldEff_SandPile(void) { - u8 objectEventId; - struct ObjectEvent *objectEvent; - u8 spriteId; - struct Sprite *sprite; - const struct ObjectEventGraphicsInfo *graphicsInfo; - - objectEventId = GetObjectEventIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); - objectEvent = &gObjectEvents[objectEventId]; - spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_SAND_PILE], 0, 0, 0); + u8 objectEventId = GetObjectEventIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); + struct ObjectEvent *objectEvent = &gObjectEvents[objectEventId]; + u8 spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_SAND_PILE], 0, 0, 0); if (spriteId != MAX_SPRITES) { - graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId); - sprite = &gSprites[spriteId]; + const struct ObjectEventGraphicsInfo *graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId); + struct Sprite *sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gSprites[objectEvent->spriteId].oam.priority; - sprite->data[0] = gFieldEffectArguments[0]; - sprite->data[1] = gFieldEffectArguments[1]; - sprite->data[2] = gFieldEffectArguments[2]; - sprite->data[3] = gSprites[objectEvent->spriteId].x; - sprite->data[4] = gSprites[objectEvent->spriteId].y; + sprite->sLocalId = gFieldEffectArguments[0]; + sprite->sMapNum = gFieldEffectArguments[1]; + sprite->sMapGroup = gFieldEffectArguments[2]; + sprite->sPrevX = gSprites[objectEvent->spriteId].x; + sprite->sPrevY = gSprites[objectEvent->spriteId].y; sprite->y2 = (graphicsInfo->height >> 1) - 2; SeekSpriteAnim(sprite, 2); } @@ -1230,81 +1226,85 @@ u32 FldEff_SandPile(void) void UpdateSandPileFieldEffect(struct Sprite *sprite) { u8 objectEventId; - s16 x; - s16 y; - if (TryGetObjectEventIdByLocalIdAndMap(sprite->data[0], sprite->data[1], sprite->data[2], &objectEventId) || !gObjectEvents[objectEventId].inSandPile) + if (TryGetObjectEventIdByLocalIdAndMap(sprite->sLocalId, sprite->sMapNum, sprite->sMapGroup, &objectEventId) || !gObjectEvents[objectEventId].inSandPile) { FieldEffectStop(sprite, FLDEFF_SAND_PILE); } else { - y = gSprites[gObjectEvents[objectEventId].spriteId].y; - x = gSprites[gObjectEvents[objectEventId].spriteId].x; - if (x != sprite->data[3] || y != sprite->data[4]) + s16 parentY = gSprites[gObjectEvents[objectEventId].spriteId].y; + s16 parentX = gSprites[gObjectEvents[objectEventId].spriteId].x; + if (parentX != sprite->sPrevX || parentY != sprite->sPrevY) { - sprite->data[3] = x; - sprite->data[4] = y; + sprite->sPrevX = parentX; + sprite->sPrevY = parentY; if (sprite->animEnded) - { StartSpriteAnim(sprite, 0); - } } - sprite->x = x; - sprite->y = y; + sprite->x = parentX; + sprite->y = parentY; sprite->subpriority = gSprites[gObjectEvents[objectEventId].spriteId].subpriority; UpdateObjectEventSpriteInvisibility(sprite, FALSE); } } +#undef sLocalId +#undef sMapNum +#undef sMapGroup +#undef sPrevX +#undef sPrevY + u32 FldEff_Bubbles(void) { u8 spriteId; - struct Sprite *sprite; SetSpritePosToOffsetMapCoords((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 0); - spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_BUBBLES], gFieldEffectArguments[0], gFieldEffectArguments[1], 0x52); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_BUBBLES], gFieldEffectArguments[0], gFieldEffectArguments[1], 82); if (spriteId != MAX_SPRITES) { - sprite = &gSprites[spriteId]; + struct Sprite *sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = 1; } return 0; } +#define sY data[0] + void UpdateBubblesFieldEffect(struct Sprite *sprite) { - sprite->data[0] += 0x80; - sprite->data[0] &= 0x100; - sprite->y -= sprite->data[0] >> 8; + // Move up 1 every other frame. + sprite->sY += ((1 << 8) / 2); + sprite->sY &= (1 << 8); + sprite->y -= sprite->sY >> 8; UpdateObjectEventSpriteInvisibility(sprite, FALSE); if (sprite->invisible || sprite->animEnded) - { FieldEffectStop(sprite, FLDEFF_BUBBLES); - } } +#undef sY + u32 FldEff_BerryTreeGrowthSparkle(void) { u8 spriteId; - struct Sprite *sprite; SetSpritePosToOffsetMapCoords((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 4); spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_SPARKLE], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); if (spriteId != MAX_SPRITES) { - sprite = &gSprites[spriteId]; + struct Sprite *sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gFieldEffectArguments[3]; sprite->oam.paletteNum = 5; - sprite->data[0] = FLDEFF_BERRY_TREE_GROWTH_SPARKLE; + sprite->sWaitFldEff = FLDEFF_BERRY_TREE_GROWTH_SPARKLE; } return 0; } // Sprite data for FLDEFF_TREE_DISGUISE / FLDEFF_MOUNTAIN_DISGUISE / FLDEFF_SAND_DISGUISE #define sState data[0] +#define sFldEff data[1] #define sLocalId data[2] #define sMapNum data[3] #define sMapGroup data[4] @@ -1328,7 +1328,6 @@ u32 ShowSandDisguiseFieldEffect(void) static u32 ShowDisguiseFieldEffect(u8 fldEff, u8 fldEffObj, u8 paletteNum) { u8 spriteId; - struct Sprite *sprite; if (TryGetObjectEventIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2], &spriteId)) { @@ -1338,7 +1337,7 @@ static u32 ShowDisguiseFieldEffect(u8 fldEff, u8 fldEffObj, u8 paletteNum) spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[fldEffObj], 0, 0, 0); if (spriteId != MAX_SPRITES) { - sprite = &gSprites[spriteId]; + struct Sprite *sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled ++; sprite->oam.paletteNum = paletteNum; sprite->sFldEff = fldEff; @@ -1405,6 +1404,7 @@ bool8 UpdateRevealDisguise(struct ObjectEvent *objectEvent) } #undef sState +#undef sFldEff #undef sLocalId #undef sMapNum #undef sMapGroup @@ -1421,7 +1421,7 @@ u32 FldEff_Sparkle(void) gFieldEffectArguments[0] += MAP_OFFSET; gFieldEffectArguments[1] += MAP_OFFSET; SetSpritePosToOffsetMapCoords((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); - spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_SMALL_SPARKLE], gFieldEffectArguments[0], gFieldEffectArguments[1], 0x52); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_SMALL_SPARKLE], gFieldEffectArguments[0], gFieldEffectArguments[1], 82); if (spriteId != MAX_SPRITES) { gSprites[spriteId].oam.priority = gFieldEffectArguments[2]; @@ -1449,7 +1449,9 @@ void UpdateSparkleFieldEffect(struct Sprite *sprite) #undef sEndTimer #define sTimer data[0] +#define sMoveTimer data[1] #define sState data[2] +#define sVelocity data[3] #define sStartY data[4] #define sCounter data[5] #define sAnimCounter data[6] @@ -1615,41 +1617,44 @@ void UpdateRayquazaSpotlightEffect(struct Sprite *sprite) if (sprite->sState == 1) { - if ((sprite->data[1] & 7) == 0) - sprite->y2 += sprite->data[3]; - if ((sprite->data[1] & 15) == 0) - sprite->data[3] = -sprite->data[3]; - sprite->data[1]++; + // Update movement + if ((sprite->sMoveTimer & 7) == 0) + sprite->y2 += sprite->sVelocity; + // Reverse direction + if ((sprite->sMoveTimer & 15) == 0) + sprite->sVelocity = -sprite->sVelocity; + sprite->sMoveTimer++; } sprite->sTimer++; } #undef sTimer +#undef sMoveTimer #undef sState #undef sStartY +#undef sVelocity #undef sCounter #undef sAnimCounter #undef sAnimState -// Used by FLDEFF_JUMP_TALL_GRASS and FLDEFF_JUMP_LONG_GRASS void UpdateJumpImpactEffect(struct Sprite *sprite) { if (sprite->animEnded) { - FieldEffectStop(sprite, sprite->sFldEff); + FieldEffectStop(sprite, sprite->sJumpFldEff); } else { UpdateObjectEventSpriteInvisibility(sprite, FALSE); - SetObjectSubpriorityByElevation(sprite->sElevation, sprite, 0); + SetObjectSubpriorityByElevation(sprite->sJumpElevation, sprite, 0); } } void WaitFieldEffectSpriteAnim(struct Sprite *sprite) { if (sprite->animEnded) - FieldEffectStop(sprite, sprite->data[0]); + FieldEffectStop(sprite, sprite->sWaitFldEff); else UpdateObjectEventSpriteInvisibility(sprite, FALSE); } @@ -1658,8 +1663,6 @@ static void UpdateGrassFieldEffectSubpriority(struct Sprite *sprite, u8 elevatio { u8 i; s16 var, xhi, lyhi, yhi, ylo; - const struct ObjectEventGraphicsInfo *graphicsInfo; // Unused Variable - struct Sprite *linkedSprite; SetObjectSubpriorityByElevation(elevation, sprite, subpriority); for (i = 0; i < OBJECT_EVENTS_COUNT; i ++) @@ -1667,8 +1670,9 @@ static void UpdateGrassFieldEffectSubpriority(struct Sprite *sprite, u8 elevatio struct ObjectEvent *objectEvent = &gObjectEvents[i]; if (objectEvent->active) { - graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId); - linkedSprite = &gSprites[objectEvent->spriteId]; + const struct ObjectEventGraphicsInfo *graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId); // Unused + struct Sprite *linkedSprite = &gSprites[objectEvent->spriteId]; + xhi = sprite->x + sprite->centerToCornerVecX; var = sprite->x - sprite->centerToCornerVecX; if (xhi < linkedSprite->x && var > linkedSprite->x) diff --git a/src/use_pokeblock.c b/src/use_pokeblock.c index 06df5d0a33..b01427ebdf 100644 --- a/src/use_pokeblock.c +++ b/src/use_pokeblock.c @@ -1116,7 +1116,7 @@ static u8 GetPartyIdFromSelectionId_(u8 selectionId) static void LoadAndCreateUpDownSprites(void) { - u16 i, spriteId; + u16 i; LoadSpriteSheet(&sSpriteSheet_UpDown); LoadSpritePalette(&sSpritePalette_UpDown); @@ -1126,7 +1126,7 @@ static void LoadAndCreateUpDownSprites(void) { if (sInfo->enhancements[i] != 0) { - spriteId = CreateSprite(&sSpriteTemplate_UpDown, sUpDownCoordsOnGraph[i][0], sUpDownCoordsOnGraph[i][1], 0); + u16 spriteId = CreateSprite(&sSpriteTemplate_UpDown, sUpDownCoordsOnGraph[i][0], sUpDownCoordsOnGraph[i][1], 0); if (spriteId != MAX_SPRITES) { if (sInfo->enhancements[i] != 0) // Always true here @@ -1137,20 +1137,24 @@ static void LoadAndCreateUpDownSprites(void) } } +#define tTimer data[0] + static void SpriteCB_UpDown(struct Sprite *sprite) { - if (sprite->data[0] < 6) + if (sprite->tTimer < 6) sprite->y2 -= 2; - else if (sprite->data[0] < 12) + else if (sprite->tTimer < 12) sprite->y2 += 2; - if (++sprite->data[0] > 60) + if (++sprite->tTimer > 60) { DestroySprite(sprite); sInfo->numEnhancements--; } } +#undef tTimer + static void LoadPartyInfo(void) { u16 i; @@ -1612,12 +1616,15 @@ static void LoadConditionGfx(void) LoadSpritePalette(&spritePalette); } +#define sSpeed data[0] +#define sTargetX data[1] + static void CreateConditionSprite(void) { u16 i; s16 xDiff, xStart; int yStart = 17; - int var = 8; + int speed = 8; struct Sprite **sprites = sMenu->condition; const struct SpriteTemplate *template = &sSpriteTemplate_Condition; @@ -1626,9 +1633,9 @@ static void CreateConditionSprite(void) u8 spriteId = CreateSprite(template, i * xDiff + xStart, yStart, 0); if (spriteId != MAX_SPRITES) { - gSprites[spriteId].data[0] = var; - gSprites[spriteId].data[1] = (i * xDiff) | 0x20; - gSprites[spriteId].data[2] = i; + gSprites[spriteId].sSpeed = speed; + gSprites[spriteId].sTargetX = (i * xDiff) | 0x20; + gSprites[spriteId].data[2] = i; // Unused StartSpriteAnim(&gSprites[spriteId], i); sprites[i] = &gSprites[spriteId]; } @@ -1657,11 +1664,15 @@ static void SpriteCB_Condition(struct Sprite *sprite) { s16 prevX = sprite->x; - sprite->x += sprite->data[0]; - if ((prevX <= sprite->data[1] && sprite->x >= sprite->data[1]) - || (prevX >= sprite->data[1] && sprite->x <= sprite->data[1])) + // Slide onscreen + sprite->x += sprite->sSpeed; + + // Check if target position has been reached/surpassed + if ((prevX <= sprite->sTargetX && sprite->x >= sprite->sTargetX) + || (prevX >= sprite->sTargetX && sprite->x <= sprite->sTargetX)) { - sprite->x = sprite->data[1]; + // End slide onscreen, become static sprite. + sprite->x = sprite->sTargetX; sprite->callback = SpriteCallbackDummy; } } From a8d0a0d709282e9580ad6d96b5af9e99b6173dbc Mon Sep 17 00:00:00 2001 From: AnonymousRandomPerson Date: Wed, 30 Aug 2023 00:08:19 -0400 Subject: [PATCH 076/162] Replaced decomp list with pret.github.io link --- README.md | 28 +--------------------------- 1 file changed, 1 insertion(+), 27 deletions(-) diff --git a/README.md b/README.md index bca4fd1041..d9148b32ec 100644 --- a/README.md +++ b/README.md @@ -8,30 +8,4 @@ It builds the following ROM: To set up the repository, see [INSTALL.md](INSTALL.md). - -## See also - -Other disassembly and/or decompilation projects: -* [**Pokémon Red and Blue**](https://github.com/pret/pokered) -* [**Pokémon Gold and Silver (Space World '97 demo)**](https://github.com/pret/pokegold-spaceworld) -* [**Pokémon Yellow**](https://github.com/pret/pokeyellow) -* [**Pokémon Trading Card Game**](https://github.com/pret/poketcg) -* [**Pokémon Pinball**](https://github.com/pret/pokepinball) -* [**Pokémon Stadium**](https://github.com/pret/pokestadium) -* [**Pokémon Gold and Silver**](https://github.com/pret/pokegold) -* [**Pokémon Crystal**](https://github.com/pret/pokecrystal) -* [**Pokémon Ruby and Sapphire**](https://github.com/pret/pokeruby) -* [**Pokémon Pinball: Ruby & Sapphire**](https://github.com/pret/pokepinballrs) -* [**Pokémon FireRed and LeafGreen**](https://github.com/pret/pokefirered) -* [**Pokémon Mystery Dungeon: Red Rescue Team**](https://github.com/pret/pmd-red) -* [**Pokémon Diamond and Pearl**](https://github.com/pret/pokediamond) -* [**Pokémon Platinum**](https://github.com/pret/pokeplatinum) -* [**Pokémon HeartGold and SoulSilver**](https://github.com/pret/pokeheartgold) -* [**Pokémon Mystery Dungeon: Explorers of Sky**](https://github.com/pret/pmd-sky) - -## Contacts - -You can find us on: - -* [Discord (PRET, #pokeemerald)](https://discord.gg/d5dubZ3) -* [IRC](https://web.libera.chat/?#pret) +For contacts and other pret projects, see [pret.github.io](https://pret.github.io/). From 3a8a82d385daf325341fb350075d2604b4814385 Mon Sep 17 00:00:00 2001 From: kaboissonneault Date: Wed, 4 Oct 2023 09:18:02 -0400 Subject: [PATCH 077/162] Fixed out-of-bounds access in GetFactoryMonFixedIV when generating player rentals in round 8 (if player has 15+ swaps) and in round 9 --- src/battle_factory.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/battle_factory.c b/src/battle_factory.c index 5905b41917..46d34efd7d 100644 --- a/src/battle_factory.c +++ b/src/battle_factory.c @@ -741,7 +741,14 @@ u8 GetFactoryMonFixedIV(u8 challengeNum, bool8 isLastBattle) u8 ivSet; bool8 useHigherIV = isLastBattle ? TRUE : FALSE; +// The Factory has an out-of-bounds access when generating the rental draft for round 9 (challengeNum==8), +// or the "elevated" rentals from round 8 (challengeNum+1==8) +// This happens to land on a number higher than 31, which is interpreted as "random IVs" +#ifdef BUGFIX + if (challengeNum > 7) +#else if (challengeNum > 8) +#endif ivSet = 7; else ivSet = challengeNum; From 0a183c2027649e0042e066b0890f68088d1e0546 Mon Sep 17 00:00:00 2001 From: kaboissonneault Date: Thu, 5 Oct 2023 08:26:34 -0400 Subject: [PATCH 078/162] Changed sFixedIVTable access from hardcoded index limits to ARRAY_COUNT --- src/battle_factory.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/battle_factory.c b/src/battle_factory.c index 46d34efd7d..3606d88e6a 100644 --- a/src/battle_factory.c +++ b/src/battle_factory.c @@ -745,11 +745,11 @@ u8 GetFactoryMonFixedIV(u8 challengeNum, bool8 isLastBattle) // or the "elevated" rentals from round 8 (challengeNum+1==8) // This happens to land on a number higher than 31, which is interpreted as "random IVs" #ifdef BUGFIX - if (challengeNum > 7) + if (challengeNum >= ARRAY_COUNT(sFixedIVTable)) #else - if (challengeNum > 8) + if (challengeNum > ARRAY_COUNT(sFixedIVTable)) #endif - ivSet = 7; + ivSet = ARRAY_COUNT(sFixedIVTable) - 1; else ivSet = challengeNum; From 6f71fbe521ebe7ff1d3490ec3851ad28e9284ec0 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Sun, 17 Sep 2023 17:11:55 -0400 Subject: [PATCH 079/162] Add some missing trainer hill constant usage --- src/event_object_movement.c | 4 ++-- src/trainer_hill.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 411b826a53..29dcf4d27c 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -1324,7 +1324,7 @@ u8 Unref_TryInitLocalObjectEvent(u8 localId) if (InBattlePyramid()) objectEventCount = GetNumBattlePyramidObjectEvents(); else if (InTrainerHill()) - objectEventCount = 2; + objectEventCount = HILL_TRAINERS_PER_FLOOR; else objectEventCount = gMapHeader.events->objectEventCount; @@ -1640,7 +1640,7 @@ void TrySpawnObjectEvents(s16 cameraX, s16 cameraY) if (InBattlePyramid()) objectCount = GetNumBattlePyramidObjectEvents(); else if (InTrainerHill()) - objectCount = 2; + objectCount = HILL_TRAINERS_PER_FLOOR; else objectCount = gMapHeader.events->objectEventCount; diff --git a/src/trainer_hill.c b/src/trainer_hill.c index cca1a3e984..018b9f14ba 100644 --- a/src/trainer_hill.c +++ b/src/trainer_hill.c @@ -650,7 +650,7 @@ void LoadTrainerHillObjectEventTemplates(void) eventTemplates[i].localId = i + 1; eventTemplates[i].graphicsId = FacilityClassToGraphicsId(sHillData->floors[floorId].trainers[i].facilityClass); eventTemplates[i].x = sHillData->floors[floorId].map.trainerCoords[i] & 0xF; - eventTemplates[i].y = ((sHillData->floors[floorId].map.trainerCoords[i] >> 4) & 0xF) + 5; + eventTemplates[i].y = ((sHillData->floors[floorId].map.trainerCoords[i] >> 4) & 0xF) + HILL_FLOOR_HEIGHT_MARGIN; bits = i << 2; eventTemplates[i].movementType = ((sHillData->floors[floorId].map.trainerDirections >> bits) & 0xF) + MOVEMENT_TYPE_FACE_UP; eventTemplates[i].trainerRange_berryTreeId = (sHillData->floors[floorId].map.trainerRanges >> bits) & 0xF; From 054d0f98526e97d644062af3f26557cf32a62f05 Mon Sep 17 00:00:00 2001 From: Thomas Winwood Date: Sat, 7 Oct 2023 17:52:57 +0100 Subject: [PATCH 080/162] Remove fakematch in NewGameInitPCItems --- src/player_pc.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/player_pc.c b/src/player_pc.c index 7dc2616e71..009aa7810f 100644 --- a/src/player_pc.c +++ b/src/player_pc.c @@ -222,7 +222,7 @@ static const struct MenuAction sItemStorage_MenuActions[] = [MENU_EXIT] = { gText_Cancel, {ItemStorage_Exit} } }; -static const struct ItemSlot sNewGamePCItems[] = +static const u16 sNewGamePCItems[][2] = { { ITEM_POTION, 1 }, { ITEM_NONE, 0 } @@ -355,16 +355,20 @@ static const struct WindowTemplate sWindowTemplates_ItemStorage[ITEMPC_WIN_COUNT static const u8 sSwapArrowTextColors[] = {TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GRAY, TEXT_COLOR_DARK_GRAY}; -// Macro below is likely a fakematch, equivalent to sNewGamePCItems[i].quantity -#define GET_QUANTITY(i) ((u16)((u16 *)sNewGamePCItems + 1)[i * 2]) void NewGameInitPCItems(void) { u8 i = 0; ClearItemSlots(gSaveBlock1Ptr->pcItems, PC_ITEMS_COUNT); - for(; sNewGamePCItems[i].itemId != ITEM_NONE && GET_QUANTITY(i) && - AddPCItem(sNewGamePCItems[i].itemId, GET_QUANTITY(i)) == TRUE; i++); + + while (TRUE) + { + if (sNewGamePCItems[i][0] == ITEM_NONE || sNewGamePCItems[i][1] == 0) + break; + if (AddPCItem(sNewGamePCItems[i][0], sNewGamePCItems[i][1]) != TRUE) + break; + i++; + } } -#undef GET_QUANTITY void BedroomPC(void) { From 0e84c7deb302560913decb24673e1e991d52b5a9 Mon Sep 17 00:00:00 2001 From: marlux895 <141656905+marlux895@users.noreply.github.com> Date: Sat, 7 Oct 2023 23:23:52 +0200 Subject: [PATCH 081/162] corrected comment, tough to smart --- src/menu_specialized.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/menu_specialized.c b/src/menu_specialized.c index e749f599de..20ddce1f44 100644 --- a/src/menu_specialized.c +++ b/src/menu_specialized.c @@ -587,7 +587,7 @@ static void ConditionGraph_CalcRightHalf(struct ConditionGraph *graph) // No need for conditional, positions on the Beauty line are always above the Cute line ConditionGraph_CalcLine(graph, graph->scanlineRight[0], &graph->curPositions[GRAPH_BEAUTY], &graph->curPositions[GRAPH_CUTE], TRUE, NULL); - // Calculate Cute -> Tough line (includes left scanline because this crosses the halfway point) + // Calculate Cute -> Smart line (includes left scanline because this crosses the halfway point) i = (graph->curPositions[GRAPH_CUTE].y <= graph->curPositions[GRAPH_SMART].y); ConditionGraph_CalcLine(graph, graph->scanlineRight[0], &graph->curPositions[GRAPH_CUTE], &graph->curPositions[GRAPH_SMART], i, graph->scanlineLeft[0]); From 0a84072ad28ecc310ad4edce6652a347f46b3c0c Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Mon, 9 Oct 2023 20:17:30 -0300 Subject: [PATCH 082/162] Fixed 2 protection tests --- src/battle_script_commands.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index f1d8f3a0fd..46023c5475 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -1773,7 +1773,7 @@ static void Cmd_accuracycheck(void) gBattlescriptCurrInstr = cmd->nextInstr; else if (gStatuses3[gBattlerTarget] & (STATUS3_SEMI_INVULNERABLE)) gBattlescriptCurrInstr = cmd->failInstr; - else if (!JumpIfMoveAffectedByProtect(0)) + else if (!JumpIfMoveAffectedByProtect(gCurrentMove)) gBattlescriptCurrInstr = cmd->nextInstr; } else if (gSpecialStatuses[gBattlerAttacker].parentalBondState == PARENTAL_BOND_2ND_HIT From ed2d28b244d9261f35faaa90872dbe216474ff6d Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Tue, 10 Oct 2023 09:00:59 -0300 Subject: [PATCH 083/162] Fixed erroneous species and item checks for Dynamax --- src/battle_dynamax.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/battle_dynamax.c b/src/battle_dynamax.c index a9bdbce954..97d2010ff9 100644 --- a/src/battle_dynamax.c +++ b/src/battle_dynamax.c @@ -124,13 +124,13 @@ bool32 CanDynamax(u16 battlerId) return FALSE; // Check if species isn't allowed to Dynamax. - if (species == SPECIES_ZACIAN && species == SPECIES_ZACIAN_CROWNED_SWORD - && species == SPECIES_ZAMAZENTA && species == SPECIES_ZAMAZENTA_CROWNED_SHIELD - && species == SPECIES_ETERNATUS && species == SPECIES_ETERNATUS_ETERNAMAX) + if (GET_BASE_SPECIES_ID(species) == SPECIES_ZACIAN + || GET_BASE_SPECIES_ID(species) == SPECIES_ZAMAZENTA + || GET_BASE_SPECIES_ID(species) == SPECIES_ETERNATUS) return FALSE; // Cannot Dynamax if you can Mega Evolve or use a Z-Move - if (holdEffect == HOLD_EFFECT_MEGA_STONE && holdEffect == HOLD_EFFECT_Z_CRYSTAL) + if (holdEffect == HOLD_EFFECT_MEGA_STONE || holdEffect == HOLD_EFFECT_Z_CRYSTAL) return FALSE; // Cannot Dynamax if your side has already or will Dynamax. From 8f4c1e9a117988dee87cdc1a273803a406f53ef8 Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Tue, 10 Oct 2023 09:15:36 -0300 Subject: [PATCH 084/162] Frostbite NonDynamaxMaxHP to mimic Burn --- src/battle_util.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/battle_util.c b/src/battle_util.c index 88c2856499..44890cd139 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -2781,9 +2781,9 @@ u8 DoBattlerEndTurnEffects(void) { MAGIC_GUARD_CHECK; #if B_BURN_DAMAGE >= GEN_7 - gBattleMoveDamage = gBattleMons[battler].maxHP / 16; + gBattleMoveDamage = GetNonDynamaxMaxHP(battler) / 16; #else - gBattleMoveDamage = gBattleMons[battler].maxHP / 8; + gBattleMoveDamage = GetNonDynamaxMaxHP(battler) / 8; #endif if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; From 070ce214afdc342847db6cab6acc920984f746ce Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Tue, 10 Oct 2023 11:15:19 -0300 Subject: [PATCH 085/162] Fixed Max Overgrowth test --- src/battle_dynamax.c | 8 ++++---- test/dynamax.c | 14 +++++++++----- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/battle_dynamax.c b/src/battle_dynamax.c index 97d2010ff9..94713af15d 100644 --- a/src/battle_dynamax.c +++ b/src/battle_dynamax.c @@ -680,19 +680,19 @@ void BS_SetMaxMoveEffect(void) { case MAX_EFFECT_MISTY_TERRAIN: statusFlag = STATUS_FIELD_MISTY_TERRAIN; - gBattleCommunication[MULTISTRING_CHOOSER] = 0; + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_TERRAIN_SET_MISTY; break; case MAX_EFFECT_GRASSY_TERRAIN: statusFlag = STATUS_FIELD_GRASSY_TERRAIN; - gBattleCommunication[MULTISTRING_CHOOSER] = 1; + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_TERRAIN_SET_GRASSY; break; case MAX_EFFECT_ELECTRIC_TERRAIN: statusFlag = STATUS_FIELD_ELECTRIC_TERRAIN; - gBattleCommunication[MULTISTRING_CHOOSER] = 2; + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_TERRAIN_SET_ELECTRIC; break; case MAX_EFFECT_PSYCHIC_TERRAIN: statusFlag = STATUS_FIELD_PSYCHIC_TERRAIN; - gBattleCommunication[MULTISTRING_CHOOSER] = 3; + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_TERRAIN_SET_PSYCHIC; break; } if (!(gFieldStatuses & statusFlag) && statusFlag != 0) diff --git a/test/dynamax.c b/test/dynamax.c index 7399997b26..cdbc17ec97 100644 --- a/test/dynamax.c +++ b/test/dynamax.c @@ -783,18 +783,22 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Max Rockfall sets up a sandstorm") SINGLE_BATTLE_TEST("(DYNAMAX) Max Overgrowth sets up Grassy Terrain") { - KNOWN_FAILING; // Grassy terrain bugged #2820 + s32 maxHP = 490; // Because of recalculated stats upon Dynamaxing GIVEN { ASSUME(gBattleMoves[MOVE_MAX_OVERGROWTH].argument == MAX_EFFECT_GRASSY_TERRAIN); - OPPONENT(SPECIES_WOBBUFFET) { MaxHP(256); HP(128); }; - PLAYER(SPECIES_WOBBUFFET) { MaxHP(256); HP(128); }; + ASSUME(gSpeciesInfo[SPECIES_WOBBUFFET].baseHP == 190); + OPPONENT(SPECIES_WOBBUFFET) { MaxHP(maxHP); HP(maxHP / 2); }; + PLAYER(SPECIES_WOBBUFFET) { MaxHP(maxHP); HP(maxHP / 2); }; } WHEN { TURN { MOVE(player, MOVE_VINE_WHIP, dynamax: TRUE); MOVE(opponent, MOVE_CELEBRATE); } TURN { MOVE(player, MOVE_VINE_WHIP); MOVE(opponent, MOVE_CELEBRATE); } } SCENE { MESSAGE("Wobbuffet used Max Overgrowth!"); - MESSAGE("Foe Wobbuffet cannot use Celebrate!"); - HP_BAR(player, damage: -256/16); + MESSAGE("Grass grew to cover the battlefield!"); + MESSAGE("Wobbuffet is healed by the grassy terrain!"); + HP_BAR(player, damage: -maxHP/16); + MESSAGE("Foe Wobbuffet is healed by the grassy terrain!"); + HP_BAR(opponent, damage: -maxHP/16); } } From 644fba2db1c007ca3e1ba5d47aa616a4838cdbff Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Tue, 10 Oct 2023 17:37:18 -0300 Subject: [PATCH 086/162] Gigantamax Flag --- include/pokemon.h | 1 + src/battle_dynamax.c | 3 +- src/data/pokemon/species_info.h | 1643 +++++++++++++++++-------------- 3 files changed, 900 insertions(+), 747 deletions(-) diff --git a/include/pokemon.h b/include/pokemon.h index 526103e58a..a81f112e23 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -333,6 +333,7 @@ struct SpeciesInfo /*0x24*/ /* 0x1F */ u8 bodyColor : 7; u8 noFlip : 1; /* 0x20 */ u16 flags; + /* 0x22 */ u8 gigantamax:1; }; struct BattleMove diff --git a/src/battle_dynamax.c b/src/battle_dynamax.c index 94713af15d..ee602a04e8 100644 --- a/src/battle_dynamax.c +++ b/src/battle_dynamax.c @@ -150,8 +150,7 @@ bool32 CanDynamax(u16 battlerId) // Returns whether a battler is transformed into a Gigantamax form. bool32 IsGigantamaxed(u16 battlerId) { // TODO: Incorporate Gigantamax factor. - if (gBattleMons[battlerId].species >= (SPECIES_VENUSAUR_GMAX) - && gBattleMons[battlerId].species <= (SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GMAX)) + if ((gSpeciesInfo[gBattleMons[battlerId].species].gigantamax)) return TRUE; return FALSE; } diff --git a/src/data/pokemon/species_info.h b/src/data/pokemon/species_info.h index d5e3fde0e5..4dc49fda85 100644 --- a/src/data/pokemon/species_info.h +++ b/src/data/pokemon/species_info.h @@ -32,99 +32,90 @@ .abilities = {ABILITY_LEVITATE, ABILITY_NONE}, #endif -#define VENUSAUR_SPECIES_INFO \ - { \ - .baseHP = 80, \ - .baseAttack = 82, \ - .baseDefense = 83, \ - .baseSpeed = 80, \ - .baseSpAttack = 100, \ - .baseSpDefense = 100, \ - .types = {TYPE_GRASS, TYPE_POISON}, \ - .catchRate = 45, \ - .expYield = 236, \ - .evYield_SpAttack = 2, \ - .evYield_SpDefense = 1, \ - .genderRatio = PERCENT_FEMALE(12.5), \ - .eggCycles = 20, \ - .friendship = 70, \ - .growthRate = GROWTH_MEDIUM_SLOW, \ - .eggGroups = {EGG_GROUP_MONSTER, EGG_GROUP_GRASS},\ +#define VENUSAUR_MISC_INFO \ + .baseHP = 80, \ + .baseAttack = 82, \ + .baseDefense = 83, \ + .baseSpeed = 80, \ + .baseSpAttack = 100, \ + .baseSpDefense = 100, \ + .types = {TYPE_GRASS, TYPE_POISON}, \ + .catchRate = 45, \ + .expYield = 236, \ + .evYield_SpAttack = 2, \ + .evYield_SpDefense = 1, \ + .genderRatio = PERCENT_FEMALE(12.5), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_SLOW, \ + .eggGroups = {EGG_GROUP_MONSTER, EGG_GROUP_GRASS}, \ .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_CHLOROPHYLL}, \ - .bodyColor = BODY_COLOR_GREEN, \ - .noFlip = FALSE, \ - } + .bodyColor = BODY_COLOR_GREEN, \ + .noFlip = FALSE -#define CHARIZARD_SPECIES_INFO \ - { \ - .baseHP = 78, \ - .baseAttack = 84, \ - .baseDefense = 78, \ - .baseSpeed = 100, \ - .baseSpAttack = 109, \ - .baseSpDefense = 85, \ - .types = {TYPE_FIRE, TYPE_FLYING}, \ - .catchRate = 45, \ - .expYield = 240, \ - .evYield_SpAttack = 3, \ - .genderRatio = PERCENT_FEMALE(12.5), \ - .eggCycles = 20, \ - .friendship = 70, \ - .growthRate = GROWTH_MEDIUM_SLOW, \ - .eggGroups = {EGG_GROUP_MONSTER, EGG_GROUP_DRAGON},\ - .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_SOLAR_POWER}, \ - .bodyColor = BODY_COLOR_RED, \ - .noFlip = FALSE, \ - } +#define CHARIZARD_MISC_INFO \ + .baseHP = 78, \ + .baseAttack = 84, \ + .baseDefense = 78, \ + .baseSpeed = 100, \ + .baseSpAttack = 109, \ + .baseSpDefense = 85, \ + .types = {TYPE_FIRE, TYPE_FLYING}, \ + .catchRate = 45, \ + .expYield = 240, \ + .evYield_SpAttack = 3, \ + .genderRatio = PERCENT_FEMALE(12.5), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_SLOW, \ + .eggGroups = {EGG_GROUP_MONSTER, EGG_GROUP_DRAGON}, \ + .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_SOLAR_POWER},\ + .bodyColor = BODY_COLOR_RED, \ + .noFlip = FALSE -#define BLASTOISE_SPECIES_INFO \ - { \ - .baseHP = 79, \ - .baseAttack = 83, \ - .baseDefense = 100, \ - .baseSpeed = 78, \ - .baseSpAttack = 85, \ - .baseSpDefense = 105, \ - .types = {TYPE_WATER, TYPE_WATER}, \ - .catchRate = 45, \ - .expYield = 239, \ - .evYield_SpDefense = 3, \ - .genderRatio = PERCENT_FEMALE(12.5), \ - .eggCycles = 20, \ - .friendship = 70, \ - .growthRate = GROWTH_MEDIUM_SLOW, \ - .eggGroups = {EGG_GROUP_MONSTER, EGG_GROUP_WATER_1},\ - .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_RAIN_DISH}, \ - .bodyColor = BODY_COLOR_BLUE, \ - .noFlip = FALSE, \ - } +#define BLASTOISE_MISC_INFO \ + .baseHP = 79, \ + .baseAttack = 83, \ + .baseDefense = 100, \ + .baseSpeed = 78, \ + .baseSpAttack = 85, \ + .baseSpDefense = 105, \ + .types = {TYPE_WATER, TYPE_WATER}, \ + .catchRate = 45, \ + .expYield = 239, \ + .evYield_SpDefense = 3, \ + .genderRatio = PERCENT_FEMALE(12.5), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_SLOW, \ + .eggGroups = {EGG_GROUP_MONSTER, EGG_GROUP_WATER_1}, \ + .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_RAIN_DISH},\ + .bodyColor = BODY_COLOR_BLUE, \ + .noFlip = FALSE -#define BUTTERFREE_SPECIES_INFO \ - { \ - .baseHP = 60, \ - .baseAttack = 45, \ - .baseDefense = 50, \ - .baseSpeed = 70, \ - .baseSpDefense = 80, \ - BUTTERFREE_SP_ATK \ - .types = {TYPE_BUG, TYPE_FLYING}, \ - .catchRate = 45, \ - .expYield = 178, \ - .evYield_SpAttack = 2, \ - .evYield_SpDefense = 1, \ - .itemRare = ITEM_SILVER_POWDER, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 15, \ - .friendship = 70, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = {EGG_GROUP_BUG, EGG_GROUP_BUG}, \ - .abilities = {ABILITY_COMPOUND_EYES, ABILITY_NONE, ABILITY_TINTED_LENS}, \ - .bodyColor = BODY_COLOR_WHITE, \ - .noFlip = FALSE, \ - } +#define BUTTERFREE_MISC_INFO \ + .baseHP = 60, \ + .baseAttack = 45, \ + .baseDefense = 50, \ + .baseSpeed = 70, \ + .baseSpDefense = 80, \ + BUTTERFREE_SP_ATK \ + .types = {TYPE_BUG, TYPE_FLYING}, \ + .catchRate = 45, \ + .expYield = 178, \ + .evYield_SpAttack = 2, \ + .evYield_SpDefense = 1, \ + .itemRare = ITEM_SILVER_POWDER, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 15, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = {EGG_GROUP_BUG, EGG_GROUP_BUG}, \ + .abilities = {ABILITY_COMPOUND_EYES, ABILITY_NONE, ABILITY_TINTED_LENS},\ + .bodyColor = BODY_COLOR_WHITE, \ + .noFlip = FALSE -#define PIKACHU_SPECIES_INFO(gender, flip) \ - { \ +#define PIKACHU_MISC_INFO(gender, flip) \ .baseHP = 35, \ .baseAttack = 55, \ .baseSpeed = 90, \ @@ -142,171 +133,156 @@ .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FAIRY}, \ .abilities = {ABILITY_STATIC, ABILITY_NONE, ABILITY_LIGHTNING_ROD},\ .bodyColor = BODY_COLOR_YELLOW, \ - .noFlip = flip, \ - } + .noFlip = flip -#define MEOWTH_SPECIES_INFO \ - { \ - .baseHP = 40, \ - .baseAttack = 45, \ - .baseDefense = 35, \ - .baseSpeed = 90, \ - .baseSpAttack = 40, \ - .baseSpDefense = 40, \ - .types = {TYPE_NORMAL, TYPE_NORMAL}, \ - .catchRate = 255, \ - .expYield = 58, \ - .evYield_Speed = 1, \ - .itemRare = ITEM_QUICK_CLAW, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 20, \ - .friendship = 70, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = {EGG_GROUP_FIELD, EGG_GROUP_FIELD}, \ - .abilities = {ABILITY_PICKUP, ABILITY_TECHNICIAN, ABILITY_UNNERVE},\ - .bodyColor = BODY_COLOR_YELLOW, \ - .noFlip = FALSE, \ - } +#define MEOWTH_MISC_INFO \ + .baseHP = 40, \ + .baseAttack = 45, \ + .baseDefense = 35, \ + .baseSpeed = 90, \ + .baseSpAttack = 40, \ + .baseSpDefense = 40, \ + .types = {TYPE_NORMAL, TYPE_NORMAL}, \ + .catchRate = 255, \ + .expYield = 58, \ + .evYield_Speed = 1, \ + .itemRare = ITEM_QUICK_CLAW, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = {EGG_GROUP_FIELD, EGG_GROUP_FIELD}, \ + .abilities = {ABILITY_PICKUP, ABILITY_TECHNICIAN, ABILITY_UNNERVE}, \ + .bodyColor = BODY_COLOR_YELLOW, \ + .noFlip = FALSE -#define MACHAMP_SPECIES_INFO \ - { \ - .baseHP = 90, \ - .baseAttack = 130, \ - .baseDefense = 80, \ - .baseSpeed = 55, \ - .baseSpAttack = 65, \ - .baseSpDefense = 85, \ - .types = {TYPE_FIGHTING, TYPE_FIGHTING}, \ - .catchRate = 45, \ - .expYield = 227, \ - .evYield_Attack = 3, \ - .itemRare = ITEM_FOCUS_BAND, \ - .genderRatio = PERCENT_FEMALE(25), \ - .eggCycles = 20, \ - .friendship = 70, \ - .growthRate = GROWTH_MEDIUM_SLOW, \ - .eggGroups = {EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE},\ - .abilities = {ABILITY_GUTS, ABILITY_NO_GUARD, ABILITY_STEADFAST}, \ - .bodyColor = BODY_COLOR_GRAY, \ - .noFlip = FALSE, \ - } +#define MACHAMP_MISC_INFO \ + .baseHP = 90, \ + .baseAttack = 130, \ + .baseDefense = 80, \ + .baseSpeed = 55, \ + .baseSpAttack = 65, \ + .baseSpDefense = 85, \ + .types = {TYPE_FIGHTING, TYPE_FIGHTING}, \ + .catchRate = 45, \ + .expYield = 227, \ + .evYield_Attack = 3, \ + .itemRare = ITEM_FOCUS_BAND, \ + .genderRatio = PERCENT_FEMALE(25), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_SLOW, \ + .eggGroups = {EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, \ + .abilities = {ABILITY_GUTS, ABILITY_NO_GUARD, ABILITY_STEADFAST}, \ + .bodyColor = BODY_COLOR_GRAY, \ + .noFlip = FALSE -#define GENGAR_SPECIES_INFO \ - { \ - .baseHP = 60, \ - .baseAttack = 65, \ - .baseDefense = 60, \ - .baseSpeed = 110, \ - .baseSpAttack = 130, \ - .baseSpDefense = 75, \ - .types = {TYPE_GHOST, TYPE_POISON}, \ - .catchRate = 45, \ - .expYield = 225, \ - .evYield_SpAttack = 3, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 20, \ - .friendship = 70, \ - .growthRate = GROWTH_MEDIUM_SLOW, \ +#define GENGAR_MISC_INFO \ + .baseHP = 60, \ + .baseAttack = 65, \ + .baseDefense = 60, \ + .baseSpeed = 110, \ + .baseSpAttack = 130, \ + .baseSpDefense = 75, \ + .types = {TYPE_GHOST, TYPE_POISON}, \ + .catchRate = 45, \ + .expYield = 225, \ + .evYield_SpAttack = 3, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_SLOW, \ .eggGroups = {EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS},\ - GENGAR_ABILITIES \ - .bodyColor = BODY_COLOR_PURPLE, \ - .noFlip = FALSE, \ - } + GENGAR_ABILITIES \ + .bodyColor = BODY_COLOR_PURPLE, \ + .noFlip = FALSE -#define KINGLER_SPECIES_INFO \ - { \ - .baseHP = 55, \ - .baseAttack = 130, \ - .baseDefense = 115, \ - .baseSpeed = 75, \ - .baseSpAttack = 50, \ - .baseSpDefense = 50, \ - .types = {TYPE_WATER, TYPE_WATER}, \ - .catchRate = 60, \ - .expYield = 166, \ - .evYield_Attack = 2, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 20, \ - .friendship = 70, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = {EGG_GROUP_WATER_3, EGG_GROUP_WATER_3},\ - .abilities = {ABILITY_HYPER_CUTTER, ABILITY_SHELL_ARMOR, ABILITY_SHEER_FORCE}, \ - .bodyColor = BODY_COLOR_RED, \ - .noFlip = TRUE, \ - } +#define KINGLER_MISC_INFO \ + .baseHP = 55, \ + .baseAttack = 130, \ + .baseDefense = 115, \ + .baseSpeed = 75, \ + .baseSpAttack = 50, \ + .baseSpDefense = 50, \ + .types = {TYPE_WATER, TYPE_WATER}, \ + .catchRate = 60, \ + .expYield = 166, \ + .evYield_Attack = 2, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = {EGG_GROUP_WATER_3, EGG_GROUP_WATER_3}, \ + .abilities = {ABILITY_HYPER_CUTTER, ABILITY_SHELL_ARMOR, ABILITY_SHEER_FORCE}, \ + .bodyColor = BODY_COLOR_RED, \ + .noFlip = TRUE -#define LAPRAS_SPECIES_INFO \ - { \ - .baseHP = 130, \ - .baseAttack = 85, \ - .baseDefense = 80, \ - .baseSpeed = 60, \ - .baseSpAttack = 85, \ - .baseSpDefense = 95, \ - .types = {TYPE_WATER, TYPE_ICE}, \ - .catchRate = 45, \ - .expYield = 187, \ - .evYield_HP = 2, \ - .itemCommon = ITEM_MYSTIC_WATER, \ - .itemRare = ITEM_MYSTIC_WATER, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 40, \ - .friendship = 70, \ - .growthRate = GROWTH_SLOW, \ - .eggGroups = {EGG_GROUP_MONSTER, EGG_GROUP_WATER_1},\ - .abilities = {ABILITY_WATER_ABSORB, ABILITY_SHELL_ARMOR, ABILITY_HYDRATION}, \ - .bodyColor = BODY_COLOR_BLUE, \ - .noFlip = FALSE, \ - } +#define LAPRAS_MISC_INFO \ + .baseHP = 130, \ + .baseAttack = 85, \ + .baseDefense = 80, \ + .baseSpeed = 60, \ + .baseSpAttack = 85, \ + .baseSpDefense = 95, \ + .types = {TYPE_WATER, TYPE_ICE}, \ + .catchRate = 45, \ + .expYield = 187, \ + .evYield_HP = 2, \ + .itemCommon = ITEM_MYSTIC_WATER, \ + .itemRare = ITEM_MYSTIC_WATER, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 40, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_SLOW, \ + .eggGroups = {EGG_GROUP_MONSTER, EGG_GROUP_WATER_1}, \ + .abilities = {ABILITY_WATER_ABSORB, ABILITY_SHELL_ARMOR, ABILITY_HYDRATION},\ + .bodyColor = BODY_COLOR_BLUE, \ + .noFlip = FALSE -#define EEVEE_SPECIES_INFO \ - { \ - .baseHP = 55, \ - .baseAttack = 55, \ - .baseDefense = 50, \ - .baseSpeed = 55, \ - .baseSpAttack = 45, \ - .baseSpDefense = 65, \ - .types = {TYPE_NORMAL, TYPE_NORMAL}, \ - .catchRate = 45, \ - .expYield = 65, \ - .evYield_SpDefense = 1, \ - .genderRatio = PERCENT_FEMALE(12.5), \ - .eggCycles = 35, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = {EGG_GROUP_FIELD, EGG_GROUP_FIELD}, \ - .abilities = {ABILITY_RUN_AWAY, ABILITY_ADAPTABILITY, ABILITY_ANTICIPATION}, \ - .bodyColor = BODY_COLOR_BROWN, \ - .noFlip = FALSE, \ - } +#define EEVEE_MISC_INFO \ + .baseHP = 55, \ + .baseAttack = 55, \ + .baseDefense = 50, \ + .baseSpeed = 55, \ + .baseSpAttack = 45, \ + .baseSpDefense = 65, \ + .types = {TYPE_NORMAL, TYPE_NORMAL}, \ + .catchRate = 45, \ + .expYield = 65, \ + .evYield_SpDefense = 1, \ + .genderRatio = PERCENT_FEMALE(12.5), \ + .eggCycles = 35, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = {EGG_GROUP_FIELD, EGG_GROUP_FIELD}, \ + .abilities = {ABILITY_RUN_AWAY, ABILITY_ADAPTABILITY, ABILITY_ANTICIPATION},\ + .bodyColor = BODY_COLOR_BROWN, \ + .noFlip = FALSE -#define SNORLAX_SPECIES_INFO \ - { \ - .baseHP = 160, \ - .baseAttack = 110, \ - .baseDefense = 65, \ - .baseSpeed = 30, \ - .baseSpAttack = 65, \ - .baseSpDefense = 110, \ - .types = {TYPE_NORMAL, TYPE_NORMAL}, \ - .catchRate = 25, \ - .expYield = 189, \ - .evYield_HP = 2, \ - .itemCommon = ITEM_LEFTOVERS, \ - .itemRare = ITEM_LEFTOVERS, \ - .genderRatio = PERCENT_FEMALE(12.5), \ - .eggCycles = 40, \ - .friendship = 70, \ - .growthRate = GROWTH_SLOW, \ - .eggGroups = {EGG_GROUP_MONSTER, EGG_GROUP_MONSTER},\ - .abilities = {ABILITY_IMMUNITY, ABILITY_THICK_FAT, ABILITY_GLUTTONY}, \ - .bodyColor = BODY_COLOR_BLACK, \ - .noFlip = FALSE, \ - } +#define SNORLAX_MISC_INFO \ + .baseHP = 160, \ + .baseAttack = 110, \ + .baseDefense = 65, \ + .baseSpeed = 30, \ + .baseSpAttack = 65, \ + .baseSpDefense = 110, \ + .types = {TYPE_NORMAL, TYPE_NORMAL}, \ + .catchRate = 25, \ + .expYield = 189, \ + .evYield_HP = 2, \ + .itemCommon = ITEM_LEFTOVERS, \ + .itemRare = ITEM_LEFTOVERS, \ + .genderRatio = PERCENT_FEMALE(12.5), \ + .eggCycles = 40, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_SLOW, \ + .eggGroups = {EGG_GROUP_MONSTER, EGG_GROUP_MONSTER}, \ + .abilities = {ABILITY_IMMUNITY, ABILITY_THICK_FAT, ABILITY_GLUTTONY}, \ + .bodyColor = BODY_COLOR_BLACK, \ + .noFlip = FALSE -#define COSPLAY_PIKACHU_SPECIES_INFO(flip) PIKACHU_SPECIES_INFO(MON_FEMALE, flip) -#define CAP_PIKACHU_SPECIES_INFO(flip) PIKACHU_SPECIES_INFO(MON_MALE, flip) +#define COSPLAY_PIKACHU_SPECIES_INFO(flip) { PIKACHU_MISC_INFO(MON_FEMALE, flip) } +#define CAP_PIKACHU_SPECIES_INFO(flip) { PIKACHU_MISC_INFO(MON_MALE, flip) } #define PICHU_SPECIES_INFO(flip) \ { \ @@ -512,29 +488,27 @@ .flags = SPECIES_FLAG_MYTHICAL, \ } -#define GARBODOR_SPECIES_INFO \ - { \ - .baseHP = 80, \ - .baseAttack = 95, \ - .baseDefense = 82, \ - .baseSpeed = 75, \ - .baseSpAttack = 60, \ - .baseSpDefense = 82, \ - .types = {TYPE_POISON, TYPE_POISON}, \ - .catchRate = 60, \ - .expYield = 166, \ - .evYield_Attack = 2, \ - .itemCommon = ITEM_SILK_SCARF, \ - .itemRare = ITEM_BLACK_SLUDGE, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 20, \ - .friendship = 70, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = {EGG_GROUP_MINERAL, EGG_GROUP_MINERAL},\ - .abilities = {ABILITY_STENCH, ABILITY_WEAK_ARMOR, ABILITY_AFTERMATH}, \ - .bodyColor = BODY_COLOR_GREEN, \ - .noFlip = TRUE, \ - } +#define GARBODOR_MISC_INFO \ + .baseHP = 80, \ + .baseAttack = 95, \ + .baseDefense = 82, \ + .baseSpeed = 75, \ + .baseSpAttack = 60, \ + .baseSpDefense = 82, \ + .types = {TYPE_POISON, TYPE_POISON}, \ + .catchRate = 60, \ + .expYield = 166, \ + .evYield_Attack = 2, \ + .itemCommon = ITEM_SILK_SCARF, \ + .itemRare = ITEM_BLACK_SLUDGE, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = {EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, \ + .abilities = {ABILITY_STENCH, ABILITY_WEAK_ARMOR, ABILITY_AFTERMATH}, \ + .bodyColor = BODY_COLOR_GREEN, \ + .noFlip = TRUE #define DEERLING_SPECIES_INFO(color) \ { \ @@ -973,249 +947,227 @@ .flags = SPECIES_FLAG_MYTHICAL, \ } -#define MELMETAL_SPECIES_INFO \ - { \ - .baseHP = 135, \ - .baseAttack = 143, \ - .baseDefense = 143, \ - .baseSpeed = 34, \ - .baseSpAttack = 80, \ - .baseSpDefense = 65, \ - .types = {TYPE_STEEL, TYPE_STEEL}, \ - .catchRate = 3, \ - .expYield = 270, \ - .evYield_Attack = 3, \ - .genderRatio = MON_GENDERLESS, \ - .eggCycles = 120, \ - .friendship = 0, \ - .growthRate = GROWTH_SLOW, \ - .eggGroups = {EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED},\ - .abilities = {ABILITY_IRON_FIST, ABILITY_NONE}, \ - .bodyColor = BODY_COLOR_GRAY, \ - .noFlip = FALSE, \ - .flags = SPECIES_FLAG_MYTHICAL, \ - } +#define MELMETAL_MISC_INFO \ + .baseHP = 135, \ + .baseAttack = 143, \ + .baseDefense = 143, \ + .baseSpeed = 34, \ + .baseSpAttack = 80, \ + .baseSpDefense = 65, \ + .types = {TYPE_STEEL, TYPE_STEEL}, \ + .catchRate = 3, \ + .expYield = 270, \ + .evYield_Attack = 3, \ + .genderRatio = MON_GENDERLESS, \ + .eggCycles = 120, \ + .friendship = 0, \ + .growthRate = GROWTH_SLOW, \ + .eggGroups = {EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, \ + .abilities = {ABILITY_IRON_FIST, ABILITY_NONE}, \ + .bodyColor = BODY_COLOR_GRAY, \ + .noFlip = FALSE, \ + .flags = SPECIES_FLAG_MYTHICAL -#define RILLABOOM_SPECIES_INFO \ - { \ - .baseHP = 100, \ - .baseAttack = 125, \ - .baseDefense = 90, \ - .baseSpeed = 85, \ - .baseSpAttack = 60, \ - .baseSpDefense = 70, \ - .types = {TYPE_GRASS, TYPE_GRASS}, \ - .catchRate = 45, \ - .expYield = 265, \ - .evYield_Attack = 3, \ - .genderRatio = PERCENT_FEMALE(12.5), \ - .eggCycles = 20, \ - .friendship = 70, \ - .growthRate = GROWTH_MEDIUM_SLOW, \ - .eggGroups = {EGG_GROUP_FIELD, EGG_GROUP_GRASS}, \ - .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_GRASSY_SURGE}, \ - .bodyColor = BODY_COLOR_GREEN, \ - .noFlip = FALSE, \ - } +#define RILLABOOM_MISC_INFO \ + .baseHP = 100, \ + .baseAttack = 125, \ + .baseDefense = 90, \ + .baseSpeed = 85, \ + .baseSpAttack = 60, \ + .baseSpDefense = 70, \ + .types = {TYPE_GRASS, TYPE_GRASS}, \ + .catchRate = 45, \ + .expYield = 265, \ + .evYield_Attack = 3, \ + .genderRatio = PERCENT_FEMALE(12.5), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_SLOW, \ + .eggGroups = {EGG_GROUP_FIELD, EGG_GROUP_GRASS}, \ + .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_GRASSY_SURGE},\ + .bodyColor = BODY_COLOR_GREEN, \ + .noFlip = FALSE -#define CINDERACE_SPECIES_INFO \ - { \ - .baseHP = 80, \ - .baseAttack = 116, \ - .baseDefense = 75, \ - .baseSpeed = 119, \ - .baseSpAttack = 65, \ - .baseSpDefense = 75, \ - .types = {TYPE_FIRE, TYPE_FIRE}, \ - .catchRate = 45, \ - .expYield = 265, \ - .evYield_Speed = 3, \ - .genderRatio = PERCENT_FEMALE(12.5), \ - .eggCycles = 20, \ - .friendship = 70, \ - .growthRate = GROWTH_MEDIUM_SLOW, \ - .eggGroups = {EGG_GROUP_FIELD, EGG_GROUP_HUMAN_LIKE},\ +#define CINDERACE_MISC_INFO \ + .baseHP = 80, \ + .baseAttack = 116, \ + .baseDefense = 75, \ + .baseSpeed = 119, \ + .baseSpAttack = 65, \ + .baseSpDefense = 75, \ + .types = {TYPE_FIRE, TYPE_FIRE}, \ + .catchRate = 45, \ + .expYield = 265, \ + .evYield_Speed = 3, \ + .genderRatio = PERCENT_FEMALE(12.5), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_SLOW, \ + .eggGroups = {EGG_GROUP_FIELD, EGG_GROUP_HUMAN_LIKE}, \ .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_LIBERO}, \ - .bodyColor = BODY_COLOR_WHITE, \ - .noFlip = FALSE, \ - } + .bodyColor = BODY_COLOR_WHITE, \ + .noFlip = FALSE -#define INTELEON_SPECIES_INFO \ - { \ - .baseHP = 70, \ - .baseAttack = 85, \ - .baseDefense = 65, \ - .baseSpeed = 120, \ - .baseSpAttack = 125, \ - .baseSpDefense = 65, \ - .types = {TYPE_WATER, TYPE_WATER}, \ - .catchRate = 45, \ - .expYield = 265, \ - .evYield_Speed = 3, \ - .genderRatio = PERCENT_FEMALE(12.5), \ - .eggCycles = 20, \ - .friendship = 70, \ - .growthRate = GROWTH_MEDIUM_SLOW, \ - .eggGroups = {EGG_GROUP_WATER_1, EGG_GROUP_FIELD},\ - .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_SNIPER}, \ - .bodyColor = BODY_COLOR_BLUE, \ - .noFlip = FALSE, \ - } +#define INTELEON_MISC_INFO \ + .baseHP = 70, \ + .baseAttack = 85, \ + .baseDefense = 65, \ + .baseSpeed = 120, \ + .baseSpAttack = 125, \ + .baseSpDefense = 65, \ + .types = {TYPE_WATER, TYPE_WATER}, \ + .catchRate = 45, \ + .expYield = 265, \ + .evYield_Speed = 3, \ + .genderRatio = PERCENT_FEMALE(12.5), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_SLOW, \ + .eggGroups = {EGG_GROUP_WATER_1, EGG_GROUP_FIELD}, \ + .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_SNIPER}, \ + .bodyColor = BODY_COLOR_BLUE, \ + .noFlip = FALSE -#define CORVIKNIGHT_SPECIES_INFO \ - { \ - .baseHP = 98, \ - .baseAttack = 87, \ - .baseDefense = 105, \ - .baseSpeed = 67, \ - .baseSpAttack = 53, \ - .baseSpDefense = 85, \ - .types = {TYPE_FLYING, TYPE_STEEL}, \ - .catchRate = 45, \ - .expYield = 248, \ - .evYield_Defense = 3, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 15, \ - .friendship = 70, \ - .growthRate = GROWTH_MEDIUM_SLOW, \ - .eggGroups = {EGG_GROUP_FLYING, EGG_GROUP_FLYING},\ +#define CORVIKNIGHT_MISC_INFO \ + .baseHP = 98, \ + .baseAttack = 87, \ + .baseDefense = 105, \ + .baseSpeed = 67, \ + .baseSpAttack = 53, \ + .baseSpDefense = 85, \ + .types = {TYPE_FLYING, TYPE_STEEL}, \ + .catchRate = 45, \ + .expYield = 248, \ + .evYield_Defense = 3, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 15, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_SLOW, \ + .eggGroups = {EGG_GROUP_FLYING, EGG_GROUP_FLYING}, \ .abilities = {ABILITY_PRESSURE, ABILITY_UNNERVE, ABILITY_MIRROR_ARMOR}, \ - .bodyColor = BODY_COLOR_PURPLE, \ - .noFlip = FALSE, \ - } + .bodyColor = BODY_COLOR_PURPLE, \ + .noFlip = FALSE -#define ORBEETLE_SPECIES_INFO \ - { \ - .baseHP = 60, \ - .baseAttack = 45, \ - .baseDefense = 110, \ - .baseSpeed = 90, \ - .baseSpAttack = 80, \ - .baseSpDefense = 120, \ - .types = {TYPE_BUG, TYPE_PSYCHIC}, \ - .catchRate = 45, \ - .expYield = 253, \ - .evYield_SpDefense = 3, \ - .itemRare = ITEM_PSYCHIC_SEED, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 15, \ - .friendship = 70, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = {EGG_GROUP_BUG, EGG_GROUP_BUG}, \ +#define ORBEETLE_MISC_INFO \ + .baseHP = 60, \ + .baseAttack = 45, \ + .baseDefense = 110, \ + .baseSpeed = 90, \ + .baseSpAttack = 80, \ + .baseSpDefense = 120, \ + .types = {TYPE_BUG, TYPE_PSYCHIC}, \ + .catchRate = 45, \ + .expYield = 253, \ + .evYield_SpDefense = 3, \ + .itemRare = ITEM_PSYCHIC_SEED, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 15, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = {EGG_GROUP_BUG, EGG_GROUP_BUG}, \ .abilities = {ABILITY_SWARM, ABILITY_FRISK, ABILITY_TELEPATHY}, \ - .bodyColor = BODY_COLOR_RED, \ - .noFlip = FALSE, \ - } + .bodyColor = BODY_COLOR_RED, \ + .noFlip = FALSE -#define DREDNAW_SPECIES_INFO \ - { \ - .baseHP = 90, \ - .baseAttack = 115, \ - .baseDefense = 90, \ - .baseSpeed = 74, \ - .baseSpAttack = 48, \ - .baseSpDefense = 68, \ - .types = {TYPE_WATER, TYPE_ROCK}, \ - .catchRate = 75, \ - .expYield = 170, \ - .evYield_Attack = 2, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 20, \ - .friendship = 70, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = {EGG_GROUP_MONSTER, EGG_GROUP_WATER_1},\ +#define DREDNAW_MISC_INFO \ + .baseHP = 90, \ + .baseAttack = 115, \ + .baseDefense = 90, \ + .baseSpeed = 74, \ + .baseSpAttack = 48, \ + .baseSpDefense = 68, \ + .types = {TYPE_WATER, TYPE_ROCK}, \ + .catchRate = 75, \ + .expYield = 170, \ + .evYield_Attack = 2, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = {EGG_GROUP_MONSTER, EGG_GROUP_WATER_1}, \ .abilities = {ABILITY_STRONG_JAW, ABILITY_SHELL_ARMOR, ABILITY_SWIFT_SWIM}, \ - .bodyColor = BODY_COLOR_GREEN, \ - .noFlip = FALSE, \ - } + .bodyColor = BODY_COLOR_GREEN, \ + .noFlip = FALSE -#define COALOSSAL_SPECIES_INFO \ - { \ - .baseHP = 110, \ - .baseAttack = 80, \ - .baseDefense = 120, \ - .baseSpeed = 30, \ - .baseSpAttack = 80, \ - .baseSpDefense = 90, \ - .types = {TYPE_ROCK, TYPE_FIRE}, \ - .catchRate = 45, \ - .expYield = 255, \ - .evYield_Defense = 3, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 15, \ - .friendship = 70, \ - .growthRate = GROWTH_MEDIUM_SLOW, \ - .eggGroups = {EGG_GROUP_MINERAL, EGG_GROUP_MINERAL},\ - .abilities = {ABILITY_STEAM_ENGINE, ABILITY_FLAME_BODY, ABILITY_FLASH_FIRE}, \ - .bodyColor = BODY_COLOR_BLACK, \ - .noFlip = FALSE, \ - } +#define COALOSSAL_MISC_INFO \ + .baseHP = 110, \ + .baseAttack = 80, \ + .baseDefense = 120, \ + .baseSpeed = 30, \ + .baseSpAttack = 80, \ + .baseSpDefense = 90, \ + .types = {TYPE_ROCK, TYPE_FIRE}, \ + .catchRate = 45, \ + .expYield = 255, \ + .evYield_Defense = 3, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 15, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_SLOW, \ + .eggGroups = {EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, \ + .abilities = {ABILITY_STEAM_ENGINE, ABILITY_FLAME_BODY, ABILITY_FLASH_FIRE},\ + .bodyColor = BODY_COLOR_BLACK, \ + .noFlip = FALSE -#define FLAPPLE_SPECIES_INFO \ - { \ - .baseHP = 70, \ - .baseAttack = 110, \ - .baseDefense = 80, \ - .baseSpeed = 70, \ - .baseSpAttack = 95, \ - .baseSpDefense = 60, \ - .types = {TYPE_GRASS, TYPE_DRAGON}, \ - .catchRate = 45, \ - .expYield = 170, \ - .evYield_Attack = 2, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 20, \ - .friendship = 70, \ - .growthRate = GROWTH_ERRATIC, \ - .eggGroups = {EGG_GROUP_GRASS, EGG_GROUP_DRAGON},\ +#define FLAPPLE_MISC_INFO \ + .baseHP = 70, \ + .baseAttack = 110, \ + .baseDefense = 80, \ + .baseSpeed = 70, \ + .baseSpAttack = 95, \ + .baseSpDefense = 60, \ + .types = {TYPE_GRASS, TYPE_DRAGON}, \ + .catchRate = 45, \ + .expYield = 170, \ + .evYield_Attack = 2, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_ERRATIC, \ + .eggGroups = {EGG_GROUP_GRASS, EGG_GROUP_DRAGON}, \ .abilities = {ABILITY_RIPEN, ABILITY_GLUTTONY, ABILITY_HUSTLE}, \ - .bodyColor = BODY_COLOR_GREEN, \ - .noFlip = FALSE, \ - } + .bodyColor = BODY_COLOR_GREEN, \ + .noFlip = FALSE -#define APPLETUN_SPECIES_INFO \ - { \ - .baseHP = 110, \ - .baseAttack = 85, \ - .baseDefense = 80, \ - .baseSpeed = 30, \ - .baseSpAttack = 100, \ - .baseSpDefense = 80, \ - .types = {TYPE_GRASS, TYPE_DRAGON}, \ - .catchRate = 45, \ - .expYield = 170, \ - .evYield_HP = 2, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 20, \ - .friendship = 70, \ - .growthRate = GROWTH_ERRATIC, \ - .eggGroups = {EGG_GROUP_GRASS, EGG_GROUP_DRAGON},\ - .abilities = {ABILITY_RIPEN, ABILITY_GLUTTONY, ABILITY_THICK_FAT}, \ - .bodyColor = BODY_COLOR_GREEN, \ - .noFlip = FALSE, \ - } +#define APPLETUN_MISC_INFO \ + .baseHP = 110, \ + .baseAttack = 85, \ + .baseDefense = 80, \ + .baseSpeed = 30, \ + .baseSpAttack = 100, \ + .baseSpDefense = 80, \ + .types = {TYPE_GRASS, TYPE_DRAGON}, \ + .catchRate = 45, \ + .expYield = 170, \ + .evYield_HP = 2, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_ERRATIC, \ + .eggGroups = {EGG_GROUP_GRASS, EGG_GROUP_DRAGON}, \ + .abilities = {ABILITY_RIPEN, ABILITY_GLUTTONY, ABILITY_THICK_FAT}, \ + .bodyColor = BODY_COLOR_GREEN, \ + .noFlip = FALSE -#define SANDACONDA_SPECIES_INFO \ - { \ - .baseHP = 72, \ - .baseAttack = 107, \ - .baseDefense = 125, \ - .baseSpeed = 71, \ - .baseSpAttack = 65, \ - .baseSpDefense = 70, \ - .types = {TYPE_GROUND, TYPE_GROUND}, \ - .catchRate = 120, \ - .expYield = 179, \ - .evYield_Defense = 2, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 20, \ - .friendship = 70, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = {EGG_GROUP_FIELD, EGG_GROUP_DRAGON},\ +#define SANDACONDA_MISC_INFO \ + .baseHP = 72, \ + .baseAttack = 107, \ + .baseDefense = 125, \ + .baseSpeed = 71, \ + .baseSpAttack = 65, \ + .baseSpDefense = 70, \ + .types = {TYPE_GROUND, TYPE_GROUND}, \ + .catchRate = 120, \ + .expYield = 179, \ + .evYield_Defense = 2, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = {EGG_GROUP_FIELD, EGG_GROUP_DRAGON}, \ .abilities = {ABILITY_SAND_SPIT, ABILITY_SHED_SKIN, ABILITY_SAND_VEIL}, \ - .bodyColor = BODY_COLOR_GREEN, \ - .noFlip = FALSE, \ - } + .bodyColor = BODY_COLOR_GREEN, \ + .noFlip = FALSE #define CRAMORANT_SPECIES_INFO \ { \ @@ -1239,49 +1191,45 @@ .noFlip = FALSE, \ } -#define TOXTRICITY_SPECIES_INFO(ability2) \ - { \ - .baseHP = 75, \ - .baseAttack = 98, \ - .baseDefense = 70, \ - .baseSpeed = 75, \ - .baseSpAttack = 114, \ - .baseSpDefense = 70, \ - .types = { TYPE_ELECTRIC, TYPE_POISON}, \ - .catchRate = 45, \ - .expYield = 176, \ - .evYield_SpAttack = 2, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 25, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_SLOW, \ - .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, \ - .abilities = {ABILITY_PUNK_ROCK, ability2, ABILITY_TECHNICIAN},\ - .bodyColor = BODY_COLOR_PURPLE, \ - .noFlip = FALSE, \ - } +#define TOXTRICITY_MISC_INFO(ability2) \ + .baseHP = 75, \ + .baseAttack = 98, \ + .baseDefense = 70, \ + .baseSpeed = 75, \ + .baseSpAttack = 114, \ + .baseSpDefense = 70, \ + .types = { TYPE_ELECTRIC, TYPE_POISON}, \ + .catchRate = 45, \ + .expYield = 176, \ + .evYield_SpAttack = 2, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 25, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_SLOW, \ + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, \ + .abilities = {ABILITY_PUNK_ROCK, ability2, ABILITY_TECHNICIAN}, \ + .bodyColor = BODY_COLOR_PURPLE, \ + .noFlip = FALSE -#define CENTISKORCH_SPECIES_INFO \ - { \ - .baseHP = 100, \ - .baseAttack = 115, \ - .baseDefense = 65, \ - .baseSpeed = 65, \ - .baseSpAttack = 90, \ - .baseSpDefense = 90, \ - .types = {TYPE_FIRE, TYPE_BUG}, \ - .catchRate = 75, \ - .expYield = 184, \ - .evYield_Attack = 2, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 20, \ - .friendship = 70, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = {EGG_GROUP_BUG, EGG_GROUP_BUG}, \ +#define CENTISKORCH_MISC_INFO \ + .baseHP = 100, \ + .baseAttack = 115, \ + .baseDefense = 65, \ + .baseSpeed = 65, \ + .baseSpAttack = 90, \ + .baseSpDefense = 90, \ + .types = {TYPE_FIRE, TYPE_BUG}, \ + .catchRate = 75, \ + .expYield = 184, \ + .evYield_Attack = 2, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = {EGG_GROUP_BUG, EGG_GROUP_BUG}, \ .abilities = {ABILITY_FLASH_FIRE, ABILITY_WHITE_SMOKE, ABILITY_FLAME_BODY}, \ - .bodyColor = BODY_COLOR_RED, \ - .noFlip = FALSE, \ - } + .bodyColor = BODY_COLOR_RED, \ + .noFlip = FALSE #define SINISTEA_SPECIES_INFO \ { \ @@ -1327,52 +1275,47 @@ .noFlip = FALSE, \ } -#define HATTERENE_SPECIES_INFO \ - { \ - .baseHP = 57, \ - .baseAttack = 90, \ - .baseDefense = 95, \ - .baseSpeed = 29, \ - .baseSpAttack = 136, \ - .baseSpDefense = 103, \ - .types = {TYPE_PSYCHIC, TYPE_FAIRY}, \ - .catchRate = 45, \ - .expYield = 255, \ - .evYield_SpAttack = 3, \ - .genderRatio = MON_FEMALE, \ - .eggCycles = 20, \ - .friendship = 70, \ - .growthRate = GROWTH_SLOW, \ - .eggGroups = {EGG_GROUP_FAIRY, EGG_GROUP_FAIRY},\ - .abilities = {ABILITY_HEALER, ABILITY_ANTICIPATION, ABILITY_MAGIC_BOUNCE}, \ - .bodyColor = BODY_COLOR_PINK, \ - .noFlip = FALSE, \ - } +#define HATTERENE_MISC_INFO \ + .baseHP = 57, \ + .baseAttack = 90, \ + .baseDefense = 95, \ + .baseSpeed = 29, \ + .baseSpAttack = 136, \ + .baseSpDefense = 103, \ + .types = {TYPE_PSYCHIC, TYPE_FAIRY}, \ + .catchRate = 45, \ + .expYield = 255, \ + .evYield_SpAttack = 3, \ + .genderRatio = MON_FEMALE, \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_SLOW, \ + .eggGroups = {EGG_GROUP_FAIRY, EGG_GROUP_FAIRY}, \ + .abilities = {ABILITY_HEALER, ABILITY_ANTICIPATION, ABILITY_MAGIC_BOUNCE}, \ + .bodyColor = BODY_COLOR_PINK, \ + .noFlip = FALSE -#define GRIMMSNARL_SPECIES_INFO \ - { \ - .baseHP = 95, \ - .baseAttack = 120, \ - .baseDefense = 65, \ - .baseSpeed = 60, \ - .baseSpAttack = 95, \ - .baseSpDefense = 75, \ - .types = {TYPE_DARK, TYPE_FAIRY}, \ - .catchRate = 45, \ - .expYield = 255, \ - .evYield_Attack = 3, \ - .genderRatio = MON_MALE, \ - .eggCycles = 20, \ - .friendship = 70, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = {EGG_GROUP_FAIRY, EGG_GROUP_HUMAN_LIKE},\ - .abilities = {ABILITY_PRANKSTER, ABILITY_FRISK, ABILITY_PICKPOCKET}, \ - .bodyColor = BODY_COLOR_PURPLE, \ - .noFlip = FALSE, \ - } +#define GRIMMSNARL_MISC_INFO \ + .baseHP = 95, \ + .baseAttack = 120, \ + .baseDefense = 65, \ + .baseSpeed = 60, \ + .baseSpAttack = 95, \ + .baseSpDefense = 75, \ + .types = {TYPE_DARK, TYPE_FAIRY}, \ + .catchRate = 45, \ + .expYield = 255, \ + .evYield_Attack = 3, \ + .genderRatio = MON_MALE, \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = {EGG_GROUP_FAIRY, EGG_GROUP_HUMAN_LIKE}, \ + .abilities = {ABILITY_PRANKSTER, ABILITY_FRISK, ABILITY_PICKPOCKET},\ + .bodyColor = BODY_COLOR_PURPLE, \ + .noFlip = FALSE -#define ALCREMIE_SPECIES_INFO(color) \ - { \ +#define ALCREMIE_MISC_INFO(color) \ .baseHP = 65, \ .baseAttack = 60, \ .baseDefense = 75, \ @@ -1385,13 +1328,12 @@ .evYield_SpDefense = 2, \ .genderRatio = MON_FEMALE, \ .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ + .friendship = STANDARD_FRIENDSHIP, \ .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_AMORPHOUS}, \ + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_AMORPHOUS}, \ .abilities = {ABILITY_SWEET_VEIL, ABILITY_NONE, ABILITY_AROMA_VEIL},\ .bodyColor = color, \ - .noFlip = FALSE, \ - } + .noFlip = FALSE #define MORPEKO_SPECIES_INFO \ { \ @@ -1415,96 +1357,88 @@ .noFlip = FALSE, \ } -#define COPPERAJAH_SPECIES_INFO \ - { \ - .baseHP = 122, \ - .baseAttack = 130, \ - .baseDefense = 69, \ - .baseSpeed = 30, \ - .baseSpAttack = 80, \ - .baseSpDefense = 69, \ - .types = {TYPE_STEEL, TYPE_STEEL}, \ - .catchRate = 90, \ - .expYield = 175, \ - .evYield_Attack = 2, \ - .itemRare = ITEM_LAGGING_TAIL, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 25, \ - .friendship = 70, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = {EGG_GROUP_FIELD, EGG_GROUP_MINERAL},\ - .abilities = {ABILITY_SHEER_FORCE, ABILITY_NONE, ABILITY_HEAVY_METAL}, \ - .bodyColor = BODY_COLOR_GREEN, \ - .noFlip = FALSE, \ - } +#define COPPERAJAH_MISC_INFO \ + .baseHP = 122, \ + .baseAttack = 130, \ + .baseDefense = 69, \ + .baseSpeed = 30, \ + .baseSpAttack = 80, \ + .baseSpDefense = 69, \ + .types = {TYPE_STEEL, TYPE_STEEL}, \ + .catchRate = 90, \ + .expYield = 175, \ + .evYield_Attack = 2, \ + .itemRare = ITEM_LAGGING_TAIL, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 25, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = {EGG_GROUP_FIELD, EGG_GROUP_MINERAL}, \ + .abilities = {ABILITY_SHEER_FORCE, ABILITY_NONE, ABILITY_HEAVY_METAL}, \ + .bodyColor = BODY_COLOR_GREEN, \ + .noFlip = FALSE -#define DURALUDON_SPECIES_INFO \ - { \ - .baseHP = 70, \ - .baseAttack = 95, \ - .baseDefense = 115, \ - .baseSpeed = 85, \ - .baseSpAttack = 120, \ - .baseSpDefense = 50, \ - .types = {TYPE_STEEL, TYPE_DRAGON}, \ - .catchRate = 45, \ - .expYield = 187, \ - .evYield_SpAttack = 2, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 30, \ - .friendship = 70, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = {EGG_GROUP_MINERAL, EGG_GROUP_DRAGON},\ - .abilities = {ABILITY_LIGHT_METAL, ABILITY_HEAVY_METAL, ABILITY_STALWART}, \ - .bodyColor = BODY_COLOR_WHITE, \ - .noFlip = FALSE, \ - } +#define DURALUDON_MISC_INFO \ + .baseHP = 70, \ + .baseAttack = 95, \ + .baseDefense = 115, \ + .baseSpeed = 85, \ + .baseSpAttack = 120, \ + .baseSpDefense = 50, \ + .types = {TYPE_STEEL, TYPE_DRAGON}, \ + .catchRate = 45, \ + .expYield = 187, \ + .evYield_SpAttack = 2, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 30, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = {EGG_GROUP_MINERAL, EGG_GROUP_DRAGON}, \ + .abilities = {ABILITY_LIGHT_METAL, ABILITY_HEAVY_METAL, ABILITY_STALWART}, \ + .bodyColor = BODY_COLOR_WHITE, \ + .noFlip = FALSE -#define URSHIFU_SPECIES_INFO \ - { \ - .baseHP = 100, \ - .baseAttack = 130, \ - .baseDefense = 100, \ - .baseSpeed = 97, \ - .baseSpAttack = 63, \ - .baseSpDefense = 60, \ - .types = {TYPE_FIGHTING, TYPE_DARK}, \ - .catchRate = 3, \ - .expYield = 275, \ - .evYield_Attack = 3, \ - .genderRatio = PERCENT_FEMALE(12.5), \ - .eggCycles = 120, \ - .friendship = 70, \ - .growthRate = GROWTH_SLOW, \ - .eggGroups = {EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED},\ - .abilities = {ABILITY_UNSEEN_FIST, ABILITY_NONE}, \ - .bodyColor = BODY_COLOR_GRAY, \ - .noFlip = FALSE, \ - .flags = SPECIES_FLAG_LEGENDARY, \ - } +#define URSHIFU_MISC_INFO \ + .baseHP = 100, \ + .baseAttack = 130, \ + .baseDefense = 100, \ + .baseSpeed = 97, \ + .baseSpAttack = 63, \ + .baseSpDefense = 60, \ + .types = {TYPE_FIGHTING, TYPE_DARK}, \ + .catchRate = 3, \ + .expYield = 275, \ + .evYield_Attack = 3, \ + .genderRatio = PERCENT_FEMALE(12.5), \ + .eggCycles = 120, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_SLOW, \ + .eggGroups = {EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, \ + .abilities = {ABILITY_UNSEEN_FIST, ABILITY_NONE}, \ + .bodyColor = BODY_COLOR_GRAY, \ + .noFlip = FALSE, \ + .flags = SPECIES_FLAG_LEGENDARY -#define URSHIFU_RAPID_STRIKE_STYLE_SPECIES_INFO \ - { \ - .baseHP = 100, \ - .baseAttack = 130, \ - .baseDefense = 100, \ - .baseSpeed = 97, \ - .baseSpAttack = 63, \ - .baseSpDefense = 60, \ - .types = {TYPE_FIGHTING, TYPE_WATER}, \ - .catchRate = 3, \ - .expYield = 275, \ - .evYield_Attack = 3, \ - .genderRatio = PERCENT_FEMALE(12.5), \ - .eggCycles = 120, \ - .friendship = 70, \ - .growthRate = GROWTH_SLOW, \ - .eggGroups = {EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED},\ - .abilities = {ABILITY_UNSEEN_FIST, ABILITY_NONE}, \ - .bodyColor = BODY_COLOR_GRAY, \ - .noFlip = FALSE, \ - .flags = SPECIES_FLAG_LEGENDARY, \ - } +#define URSHIFU_RAPID_STRIKE_STYLE_MISC_INFO \ + .baseHP = 100, \ + .baseAttack = 130, \ + .baseDefense = 100, \ + .baseSpeed = 97, \ + .baseSpAttack = 63, \ + .baseSpDefense = 60, \ + .types = {TYPE_FIGHTING, TYPE_WATER}, \ + .catchRate = 3, \ + .expYield = 275, \ + .evYield_Attack = 3, \ + .genderRatio = PERCENT_FEMALE(12.5), \ + .eggCycles = 120, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_SLOW, \ + .eggGroups = {EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, \ + .abilities = {ABILITY_UNSEEN_FIST, ABILITY_NONE}, \ + .bodyColor = BODY_COLOR_GRAY, \ + .noFlip = FALSE, \ + .flags = SPECIES_FLAG_LEGENDARY #define ZARUDE_SPECIES_INFO \ { \ @@ -1578,7 +1512,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_VENUSAUR] = VENUSAUR_SPECIES_INFO, + [SPECIES_VENUSAUR] = { VENUSAUR_MISC_INFO, }, [SPECIES_CHARMANDER] = { @@ -1625,7 +1559,10 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_CHARIZARD] = CHARIZARD_SPECIES_INFO, + [SPECIES_CHARIZARD] = + { + CHARIZARD_MISC_INFO, + }, [SPECIES_SQUIRTLE] = { @@ -1672,7 +1609,10 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_BLASTOISE] = BLASTOISE_SPECIES_INFO, + [SPECIES_BLASTOISE] = + { + BLASTOISE_MISC_INFO, + }, [SPECIES_CATERPIE] = { @@ -1718,7 +1658,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_BUTTERFREE] = BUTTERFREE_SPECIES_INFO, + [SPECIES_BUTTERFREE] = { BUTTERFREE_MISC_INFO, }, [SPECIES_WEEDLE] = { @@ -2000,7 +1940,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_PIKACHU] = PIKACHU_SPECIES_INFO(PERCENT_FEMALE(50), FLIP), + [SPECIES_PIKACHU] = { PIKACHU_MISC_INFO(PERCENT_FEMALE(50), FLIP) }, [SPECIES_RAICHU] = { @@ -2639,7 +2579,10 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_MEOWTH] = MEOWTH_SPECIES_INFO, + [SPECIES_MEOWTH] = + { + MEOWTH_MISC_INFO + }, [SPECIES_PERSIAN] = { @@ -2987,7 +2930,10 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = TRUE, }, - [SPECIES_MACHAMP] = MACHAMP_SPECIES_INFO, + [SPECIES_MACHAMP] = + { + MACHAMP_MISC_INFO + }, [SPECIES_BELLSPROUT] = { @@ -3574,7 +3520,10 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_GENGAR] = GENGAR_SPECIES_INFO, + [SPECIES_GENGAR] = + { + GENGAR_MISC_INFO + }, [SPECIES_ONIX] = { @@ -3664,7 +3613,10 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_KINGLER] = KINGLER_SPECIES_INFO, + [SPECIES_KINGLER] = + { + KINGLER_MISC_INFO, + }, [SPECIES_VOLTORB] = { @@ -4387,7 +4339,10 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_LAPRAS] = LAPRAS_SPECIES_INFO, + [SPECIES_LAPRAS] = + { + LAPRAS_MISC_INFO, + }, [SPECIES_DITTO] = { @@ -4413,7 +4368,10 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_EEVEE] = EEVEE_SPECIES_INFO, + [SPECIES_EEVEE] = + { + EEVEE_MISC_INFO, + }, [SPECIES_VAPOREON] = { @@ -4613,7 +4571,10 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_SNORLAX] = SNORLAX_SPECIES_INFO, + [SPECIES_SNORLAX] = + { + SNORLAX_MISC_INFO, + }, [SPECIES_ARTICUNO] = { @@ -14371,7 +14332,10 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_GARBODOR] = GARBODOR_SPECIES_INFO, + [SPECIES_GARBODOR] = + { + GARBODOR_MISC_INFO, + }, [SPECIES_ZORUA] = { @@ -19452,7 +19416,10 @@ const struct SpeciesInfo gSpeciesInfo[] = .flags = SPECIES_FLAG_MYTHICAL, }, - [SPECIES_MELMETAL] = MELMETAL_SPECIES_INFO, + [SPECIES_MELMETAL] = + { + MELMETAL_MISC_INFO, + }, #endif #if P_GEN_8_POKEMON == TRUE @@ -19500,7 +19467,10 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_RILLABOOM] = RILLABOOM_SPECIES_INFO, + [SPECIES_RILLABOOM] = + { + RILLABOOM_MISC_INFO, + }, [SPECIES_SCORBUNNY] = { @@ -19546,7 +19516,10 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_CINDERACE] = CINDERACE_SPECIES_INFO, + [SPECIES_CINDERACE] = + { + CINDERACE_MISC_INFO, + }, [SPECIES_SOBBLE] = { @@ -19593,7 +19566,10 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_INTELEON] = INTELEON_SPECIES_INFO, + [SPECIES_INTELEON] = + { + INTELEON_MISC_INFO, + }, [SPECIES_SKWOVET] = { @@ -19685,7 +19661,10 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_CORVIKNIGHT] = CORVIKNIGHT_SPECIES_INFO, + [SPECIES_CORVIKNIGHT] = + { + CORVIKNIGHT_MISC_INFO, + }, [SPECIES_BLIPBUG] = { @@ -19732,7 +19711,10 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_ORBEETLE] = ORBEETLE_SPECIES_INFO, + [SPECIES_ORBEETLE] = + { + ORBEETLE_MISC_INFO, + }, [SPECIES_NICKIT] = { @@ -19888,7 +19870,10 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_DREDNAW] = DREDNAW_SPECIES_INFO, + [SPECIES_DREDNAW] = + { + DREDNAW_MISC_INFO, + }, [SPECIES_YAMPER] = { @@ -19978,7 +19963,10 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_COALOSSAL] = COALOSSAL_SPECIES_INFO, + [SPECIES_COALOSSAL] = + { + COALOSSAL_MISC_INFO, + }, [SPECIES_APPLIN] = { @@ -20002,9 +19990,15 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_FLAPPLE] = FLAPPLE_SPECIES_INFO, + [SPECIES_FLAPPLE] = + { + FLAPPLE_MISC_INFO, + }, - [SPECIES_APPLETUN] = APPLETUN_SPECIES_INFO, + [SPECIES_APPLETUN] = + { + APPLETUN_MISC_INFO, + }, [SPECIES_SILICOBRA] = { @@ -20028,7 +20022,10 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_SANDACONDA] = SANDACONDA_SPECIES_INFO, + [SPECIES_SANDACONDA] = + { + SANDACONDA_MISC_INFO, + }, [SPECIES_CRAMORANT] = CRAMORANT_SPECIES_INFO, @@ -20098,7 +20095,10 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_TOXTRICITY] = TOXTRICITY_SPECIES_INFO(ABILITY_PLUS), + [SPECIES_TOXTRICITY] = + { + TOXTRICITY_MISC_INFO(ABILITY_PLUS), + }, [SPECIES_SIZZLIPEDE] = { @@ -20122,7 +20122,10 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_CENTISKORCH] = CENTISKORCH_SPECIES_INFO, + [SPECIES_CENTISKORCH] = + { + CENTISKORCH_MISC_INFO, + }, [SPECIES_CLOBBOPUS] = { @@ -20216,7 +20219,10 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_HATTERENE] = HATTERENE_SPECIES_INFO, + [SPECIES_HATTERENE] = + { + HATTERENE_MISC_INFO, + }, [SPECIES_IMPIDIMP] = { @@ -20262,7 +20268,10 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_GRIMMSNARL] = GRIMMSNARL_SPECIES_INFO, + [SPECIES_GRIMMSNARL] = + { + GRIMMSNARL_MISC_INFO, + }, [SPECIES_OBSTAGOON] = { @@ -20419,7 +20428,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_ALCREMIE] = ALCREMIE_SPECIES_INFO(BODY_COLOR_WHITE), + [SPECIES_ALCREMIE] = { ALCREMIE_MISC_INFO(BODY_COLOR_WHITE) }, [SPECIES_FALINKS] = { @@ -20602,7 +20611,10 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_COPPERAJAH] = COPPERAJAH_SPECIES_INFO, + [SPECIES_COPPERAJAH] = + { + COPPERAJAH_MISC_INFO, + }, [SPECIES_DRACOZOLT] = { @@ -20692,7 +20704,10 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_DURALUDON] = DURALUDON_SPECIES_INFO, + [SPECIES_DURALUDON] = + { + DURALUDON_MISC_INFO, + }, [SPECIES_DREEPY] = { @@ -20852,7 +20867,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .flags = SPECIES_FLAG_LEGENDARY, }, - [SPECIES_URSHIFU] = URSHIFU_SPECIES_INFO, + [SPECIES_URSHIFU] = { URSHIFU_MISC_INFO, }, [SPECIES_ZARUDE] = ZARUDE_SPECIES_INFO, @@ -24611,20 +24626,23 @@ const struct SpeciesInfo gSpeciesInfo[] = [SPECIES_CRAMORANT_GULPING] = CRAMORANT_SPECIES_INFO, [SPECIES_CRAMORANT_GORGING] = CRAMORANT_SPECIES_INFO, - [SPECIES_TOXTRICITY_LOW_KEY] = TOXTRICITY_SPECIES_INFO(ABILITY_MINUS), + [SPECIES_TOXTRICITY_LOW_KEY] = + { + TOXTRICITY_MISC_INFO(ABILITY_MINUS), + }, [SPECIES_SINISTEA_ANTIQUE] = SINISTEA_SPECIES_INFO, [SPECIES_POLTEAGEIST_ANTIQUE] = POLTEAGEIST_SPECIES_INFO, - [SPECIES_ALCREMIE_RUBY_CREAM] = ALCREMIE_SPECIES_INFO(BODY_COLOR_PINK), - [SPECIES_ALCREMIE_MATCHA_CREAM] = ALCREMIE_SPECIES_INFO(BODY_COLOR_GREEN), - [SPECIES_ALCREMIE_MINT_CREAM] = ALCREMIE_SPECIES_INFO(BODY_COLOR_BLUE), - [SPECIES_ALCREMIE_LEMON_CREAM] = ALCREMIE_SPECIES_INFO(BODY_COLOR_YELLOW), - [SPECIES_ALCREMIE_SALTED_CREAM] = ALCREMIE_SPECIES_INFO(BODY_COLOR_WHITE), - [SPECIES_ALCREMIE_RUBY_SWIRL] = ALCREMIE_SPECIES_INFO(BODY_COLOR_YELLOW), - [SPECIES_ALCREMIE_CARAMEL_SWIRL] = ALCREMIE_SPECIES_INFO(BODY_COLOR_BROWN), - [SPECIES_ALCREMIE_RAINBOW_SWIRL] = ALCREMIE_SPECIES_INFO(BODY_COLOR_YELLOW), + [SPECIES_ALCREMIE_RUBY_CREAM] = { ALCREMIE_MISC_INFO(BODY_COLOR_PINK) }, + [SPECIES_ALCREMIE_MATCHA_CREAM] = { ALCREMIE_MISC_INFO(BODY_COLOR_GREEN) }, + [SPECIES_ALCREMIE_MINT_CREAM] = { ALCREMIE_MISC_INFO(BODY_COLOR_BLUE) }, + [SPECIES_ALCREMIE_LEMON_CREAM] = { ALCREMIE_MISC_INFO(BODY_COLOR_YELLOW) }, + [SPECIES_ALCREMIE_SALTED_CREAM] = { ALCREMIE_MISC_INFO(BODY_COLOR_WHITE) }, + [SPECIES_ALCREMIE_RUBY_SWIRL] = { ALCREMIE_MISC_INFO(BODY_COLOR_YELLOW) }, + [SPECIES_ALCREMIE_CARAMEL_SWIRL] = { ALCREMIE_MISC_INFO(BODY_COLOR_BROWN) }, + [SPECIES_ALCREMIE_RAINBOW_SWIRL] = { ALCREMIE_MISC_INFO(BODY_COLOR_YELLOW) }, [SPECIES_EISCUE_NOICE_FACE] = { @@ -24741,7 +24759,10 @@ const struct SpeciesInfo gSpeciesInfo[] = .flags = SPECIES_FLAG_LEGENDARY, }, - [SPECIES_URSHIFU_RAPID_STRIKE_STYLE] = URSHIFU_RAPID_STRIKE_STYLE_SPECIES_INFO, + [SPECIES_URSHIFU_RAPID_STRIKE_STYLE] = + { + URSHIFU_RAPID_STRIKE_STYLE_MISC_INFO, + }, [SPECIES_ZARUDE_DADA] = ZARUDE_SPECIES_INFO, @@ -24815,39 +24836,171 @@ const struct SpeciesInfo gSpeciesInfo[] = }, // Gigantamax Forms - [SPECIES_VENUSAUR_GMAX] = VENUSAUR_SPECIES_INFO, - [SPECIES_CHARIZARD_GMAX] = CHARIZARD_SPECIES_INFO, - [SPECIES_BLASTOISE_GMAX] = BLASTOISE_SPECIES_INFO, - [SPECIES_BUTTERFREE_GMAX] = BUTTERFREE_SPECIES_INFO, - [SPECIES_PIKACHU_GMAX] = PIKACHU_SPECIES_INFO(PERCENT_FEMALE(50), FLIP), - [SPECIES_MEOWTH_GMAX] = MEOWTH_SPECIES_INFO, - [SPECIES_MACHAMP_GMAX] = MACHAMP_SPECIES_INFO, - [SPECIES_GENGAR_GMAX] = GENGAR_SPECIES_INFO, - [SPECIES_KINGLER_GMAX] = KINGLER_SPECIES_INFO, - [SPECIES_LAPRAS_GMAX] = LAPRAS_SPECIES_INFO, - [SPECIES_EEVEE_GMAX] = EEVEE_SPECIES_INFO, - [SPECIES_SNORLAX_GMAX] = SNORLAX_SPECIES_INFO, - [SPECIES_GARBODOR_GMAX] = GARBODOR_SPECIES_INFO, - [SPECIES_MELMETAL_GMAX] = MELMETAL_SPECIES_INFO, - [SPECIES_RILLABOOM_GMAX] = RILLABOOM_SPECIES_INFO, - [SPECIES_CINDERACE_GMAX] = CINDERACE_SPECIES_INFO, - [SPECIES_INTELEON_GMAX] = INTELEON_SPECIES_INFO, - [SPECIES_CORVIKNIGHT_GMAX] = CORVIKNIGHT_SPECIES_INFO, - [SPECIES_ORBEETLE_GMAX] = ORBEETLE_SPECIES_INFO, - [SPECIES_DREDNAW_GMAX] = DREDNAW_SPECIES_INFO, - [SPECIES_COALOSSAL_GMAX] = COALOSSAL_SPECIES_INFO, - [SPECIES_FLAPPLE_GMAX] = FLAPPLE_SPECIES_INFO, - [SPECIES_APPLETUN_GMAX] = APPLETUN_SPECIES_INFO, - [SPECIES_SANDACONDA_GMAX] = SANDACONDA_SPECIES_INFO, - [SPECIES_TOXTRICITY_GMAX] = TOXTRICITY_SPECIES_INFO(ABILITY_PLUS), - [SPECIES_CENTISKORCH_GMAX] = CENTISKORCH_SPECIES_INFO, - [SPECIES_HATTERENE_GMAX] = HATTERENE_SPECIES_INFO, - [SPECIES_GRIMMSNARL_GMAX] = GRIMMSNARL_SPECIES_INFO, - [SPECIES_ALCREMIE_GMAX] = ALCREMIE_SPECIES_INFO(BODY_COLOR_PINK), - [SPECIES_COPPERAJAH_GMAX] = COPPERAJAH_SPECIES_INFO, - [SPECIES_DURALUDON_GMAX] = DURALUDON_SPECIES_INFO, - [SPECIES_URSHIFU_GMAX] = URSHIFU_SPECIES_INFO, - [SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GMAX] = URSHIFU_RAPID_STRIKE_STYLE_SPECIES_INFO, + [SPECIES_VENUSAUR_GMAX] = + { + VENUSAUR_MISC_INFO, + .gigantamax = TRUE, + }, + [SPECIES_CHARIZARD_GMAX] = + { + CHARIZARD_MISC_INFO, + .gigantamax = TRUE, + }, + [SPECIES_BLASTOISE_GMAX] = + { + BLASTOISE_MISC_INFO, + .gigantamax = TRUE, + }, + [SPECIES_BUTTERFREE_GMAX] = + { + BUTTERFREE_MISC_INFO, + .gigantamax = TRUE, + }, + [SPECIES_PIKACHU_GMAX] = + { + PIKACHU_MISC_INFO(PERCENT_FEMALE(50), FLIP), + .gigantamax = TRUE, + }, + [SPECIES_MEOWTH_GMAX] = + { + MEOWTH_MISC_INFO, + .gigantamax = TRUE, + }, + [SPECIES_MACHAMP_GMAX] = + { + MACHAMP_MISC_INFO, + .gigantamax = TRUE, + }, + [SPECIES_GENGAR_GMAX] = + { + GENGAR_MISC_INFO, + .gigantamax = TRUE, + }, + [SPECIES_KINGLER_GMAX] = + { + KINGLER_MISC_INFO, + .gigantamax = TRUE, + }, + [SPECIES_LAPRAS_GMAX] = + { + LAPRAS_MISC_INFO, + .gigantamax = TRUE, + }, + [SPECIES_EEVEE_GMAX] = + { + EEVEE_MISC_INFO, + .gigantamax = TRUE, + }, + [SPECIES_SNORLAX_GMAX] = + { + SNORLAX_MISC_INFO, + .gigantamax = TRUE, + }, + [SPECIES_GARBODOR_GMAX] = + { + GARBODOR_MISC_INFO, + .gigantamax = TRUE, + }, + [SPECIES_MELMETAL_GMAX] = + { + MELMETAL_MISC_INFO, + .gigantamax = TRUE, + }, + [SPECIES_RILLABOOM_GMAX] = + { + RILLABOOM_MISC_INFO, + .gigantamax = TRUE, + }, + [SPECIES_CINDERACE_GMAX] = + { + CINDERACE_MISC_INFO, + .gigantamax = TRUE, + }, + [SPECIES_INTELEON_GMAX] = + { + INTELEON_MISC_INFO, + .gigantamax = TRUE, + }, + [SPECIES_CORVIKNIGHT_GMAX] = + { + CORVIKNIGHT_MISC_INFO, + .gigantamax = TRUE, + }, + [SPECIES_ORBEETLE_GMAX] = + { + ORBEETLE_MISC_INFO, + .gigantamax = TRUE, + }, + [SPECIES_DREDNAW_GMAX] = + { + DREDNAW_MISC_INFO, + .gigantamax = TRUE, + }, + [SPECIES_COALOSSAL_GMAX] = + { + COALOSSAL_MISC_INFO, + .gigantamax = TRUE, + }, + [SPECIES_FLAPPLE_GMAX] = + { + FLAPPLE_MISC_INFO, + .gigantamax = TRUE, + }, + [SPECIES_APPLETUN_GMAX] = + { + APPLETUN_MISC_INFO, + .gigantamax = TRUE, + }, + [SPECIES_SANDACONDA_GMAX] = + { + SANDACONDA_MISC_INFO, + .gigantamax = TRUE, + }, + [SPECIES_TOXTRICITY_GMAX] = + { + TOXTRICITY_MISC_INFO(ABILITY_PLUS), + .gigantamax = TRUE, + }, + [SPECIES_CENTISKORCH_GMAX] = + { + CENTISKORCH_MISC_INFO, + .gigantamax = TRUE, + }, + [SPECIES_HATTERENE_GMAX] = + { + HATTERENE_MISC_INFO, + .gigantamax = TRUE, + }, + [SPECIES_GRIMMSNARL_GMAX] = + { + GRIMMSNARL_MISC_INFO, + .gigantamax = TRUE, + }, + [SPECIES_ALCREMIE_GMAX] = + { + ALCREMIE_MISC_INFO(BODY_COLOR_PINK), + .gigantamax = TRUE, + }, + [SPECIES_COPPERAJAH_GMAX] = + { + COPPERAJAH_MISC_INFO, + .gigantamax = TRUE, + }, + [SPECIES_DURALUDON_GMAX] = + { + DURALUDON_MISC_INFO, + .gigantamax = TRUE, + }, + [SPECIES_URSHIFU_GMAX] = + { + URSHIFU_MISC_INFO, + .gigantamax = TRUE, + }, + [SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GMAX] = + { + URSHIFU_RAPID_STRIKE_STYLE_MISC_INFO, + .gigantamax = TRUE, + }, #endif }; From 92a0b04b65f8c9211f2558006afcc76b775df684 Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Tue, 10 Oct 2023 17:40:14 -0300 Subject: [PATCH 087/162] Applied trigger fix from upstream --- src/battle_dynamax.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/battle_dynamax.c b/src/battle_dynamax.c index ee602a04e8..d2005a77d0 100644 --- a/src/battle_dynamax.c +++ b/src/battle_dynamax.c @@ -1258,11 +1258,10 @@ bool32 IsDynamaxTriggerSpriteActive(void) void HideDynamaxTriggerSprite(void) { - if (gBattleStruct->dynamax.triggerSpriteId != 0xFF) - { - ChangeDynamaxTriggerSprite(gBattleStruct->dynamax.triggerSpriteId, 0); - gSprites[gBattleStruct->dynamax.triggerSpriteId].tHide = TRUE; - } + if (gBattleStruct->dynamax.triggerSpriteId >= MAX_SPRITES) + return; + ChangeDynamaxTriggerSprite(gBattleStruct->dynamax.triggerSpriteId, 0); + gSprites[gBattleStruct->dynamax.triggerSpriteId].tHide = TRUE; } void DestroyDynamaxTriggerSprite(void) From f830b0725a6fea811f15541fdadc7d7054b8b19f Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Tue, 10 Oct 2023 17:52:59 -0300 Subject: [PATCH 088/162] GMAX -> GIGANTAMAX --- .../alcremie/{gmax => gigantamax}/back.png | Bin .../alcremie/{gmax => gigantamax}/front.png | Bin .../alcremie/{gmax => gigantamax}/icon.png | Bin .../alcremie/{gmax => gigantamax}/normal.pal | 0 .../alcremie/{gmax => gigantamax}/shiny.pal | 0 .../appletun/{gmax => gigantamax}/back.png | Bin .../appletun/{gmax => gigantamax}/front.png | Bin .../appletun/{gmax => gigantamax}/icon.png | Bin .../appletun/{gmax => gigantamax}/normal.pal | 0 .../appletun/{gmax => gigantamax}/shiny.pal | 0 .../blastoise/{gmax => gigantamax}/back.png | Bin .../blastoise/{gmax => gigantamax}/front.png | Bin .../blastoise/{gmax => gigantamax}/icon.png | Bin .../blastoise/{gmax => gigantamax}/normal.pal | 0 .../blastoise/{gmax => gigantamax}/shiny.pal | 0 .../butterfree/{gmax => gigantamax}/back.png | Bin .../butterfree/{gmax => gigantamax}/front.png | Bin .../butterfree/{gmax => gigantamax}/icon.png | Bin .../{gmax => gigantamax}/normal.pal | 0 .../butterfree/{gmax => gigantamax}/shiny.pal | 0 .../centiskorch/{gmax => gigantamax}/back.png | Bin .../{gmax => gigantamax}/front.png | Bin .../centiskorch/{gmax => gigantamax}/icon.png | Bin .../{gmax => gigantamax}/normal.pal | 0 .../{gmax => gigantamax}/shiny.pal | 0 .../charizard/{gmax => gigantamax}/back.png | Bin .../charizard/{gmax => gigantamax}/front.png | Bin .../charizard/{gmax => gigantamax}/icon.png | Bin .../charizard/{gmax => gigantamax}/normal.pal | 0 .../charizard/{gmax => gigantamax}/shiny.pal | 0 .../cinderace/{gmax => gigantamax}/back.png | Bin .../cinderace/{gmax => gigantamax}/front.png | Bin .../cinderace/{gmax => gigantamax}/icon.png | Bin .../cinderace/{gmax => gigantamax}/normal.pal | 0 .../cinderace/{gmax => gigantamax}/shiny.pal | 0 .../coalossal/{gmax => gigantamax}/back.png | Bin .../coalossal/{gmax => gigantamax}/front.png | Bin .../coalossal/{gmax => gigantamax}/icon.png | Bin .../coalossal/{gmax => gigantamax}/normal.pal | 0 .../coalossal/{gmax => gigantamax}/shiny.pal | 0 .../copperajah/{gmax => gigantamax}/back.png | Bin .../copperajah/{gmax => gigantamax}/front.png | Bin .../copperajah/{gmax => gigantamax}/icon.png | Bin .../{gmax => gigantamax}/normal.pal | 0 .../copperajah/{gmax => gigantamax}/shiny.pal | 0 .../corviknight/{gmax => gigantamax}/back.png | Bin .../{gmax => gigantamax}/front.png | Bin .../corviknight/{gmax => gigantamax}/icon.png | Bin .../{gmax => gigantamax}/normal.pal | 0 .../{gmax => gigantamax}/shiny.pal | 0 .../drednaw/{gmax => gigantamax}/back.png | Bin .../drednaw/{gmax => gigantamax}/front.png | Bin .../drednaw/{gmax => gigantamax}/icon.png | Bin .../drednaw/{gmax => gigantamax}/normal.pal | 0 .../drednaw/{gmax => gigantamax}/shiny.pal | 0 .../duraludon/{gmax => gigantamax}/back.png | Bin .../duraludon/{gmax => gigantamax}/front.png | Bin .../duraludon/{gmax => gigantamax}/icon.png | Bin .../duraludon/{gmax => gigantamax}/normal.pal | 0 .../duraludon/{gmax => gigantamax}/shiny.pal | 0 .../eevee/{gmax => gigantamax}/back.png | Bin .../eevee/{gmax => gigantamax}/front.png | Bin .../eevee/{gmax => gigantamax}/icon.png | Bin .../eevee/{gmax => gigantamax}/normal.pal | 0 .../eevee/{gmax => gigantamax}/shiny.pal | 0 .../flapple/{gmax => gigantamax}/back.png | Bin .../flapple/{gmax => gigantamax}/front.png | Bin .../flapple/{gmax => gigantamax}/icon.png | Bin .../flapple/{gmax => gigantamax}/normal.pal | 0 .../flapple/{gmax => gigantamax}/shiny.pal | 0 .../garbodor/{gmax => gigantamax}/back.png | Bin .../garbodor/{gmax => gigantamax}/front.png | Bin .../garbodor/{gmax => gigantamax}/icon.png | Bin .../garbodor/{gmax => gigantamax}/normal.pal | 0 .../garbodor/{gmax => gigantamax}/shiny.pal | 0 .../gengar/{gmax => gigantamax}/back.png | Bin .../gengar/{gmax => gigantamax}/front.png | Bin .../gengar/{gmax => gigantamax}/icon.png | Bin .../gengar/{gmax => gigantamax}/normal.pal | 0 .../gengar/{gmax => gigantamax}/shiny.pal | 0 .../grimmsnarl/{gmax => gigantamax}/back.png | Bin .../grimmsnarl/{gmax => gigantamax}/front.png | Bin .../grimmsnarl/{gmax => gigantamax}/icon.png | Bin .../{gmax => gigantamax}/normal.pal | 0 .../grimmsnarl/{gmax => gigantamax}/shiny.pal | 0 .../hatterene/{gmax => gigantamax}/back.png | Bin .../hatterene/{gmax => gigantamax}/front.png | Bin .../hatterene/{gmax => gigantamax}/icon.png | Bin .../hatterene/{gmax => gigantamax}/normal.pal | 0 .../hatterene/{gmax => gigantamax}/shiny.pal | 0 .../inteleon/{gmax => gigantamax}/back.png | Bin .../inteleon/{gmax => gigantamax}/front.png | Bin .../inteleon/{gmax => gigantamax}/icon.png | Bin .../inteleon/{gmax => gigantamax}/normal.pal | 0 .../inteleon/{gmax => gigantamax}/shiny.pal | 0 .../kingler/{gmax => gigantamax}/back.png | Bin .../kingler/{gmax => gigantamax}/front.png | Bin .../kingler/{gmax => gigantamax}/icon.png | Bin .../kingler/{gmax => gigantamax}/normal.pal | 0 .../kingler/{gmax => gigantamax}/shiny.pal | 0 .../lapras/{gmax => gigantamax}/back.png | Bin .../lapras/{gmax => gigantamax}/front.png | Bin .../lapras/{gmax => gigantamax}/icon.png | Bin .../lapras/{gmax => gigantamax}/normal.pal | 0 .../lapras/{gmax => gigantamax}/shiny.pal | 0 .../machamp/{gmax => gigantamax}/back.png | Bin .../machamp/{gmax => gigantamax}/front.png | Bin .../machamp/{gmax => gigantamax}/icon.png | Bin .../machamp/{gmax => gigantamax}/normal.pal | 0 .../machamp/{gmax => gigantamax}/shiny.pal | 0 .../melmetal/{gmax => gigantamax}/back.png | Bin .../melmetal/{gmax => gigantamax}/front.png | Bin .../melmetal/{gmax => gigantamax}/icon.png | Bin .../melmetal/{gmax => gigantamax}/normal.pal | 0 .../melmetal/{gmax => gigantamax}/shiny.pal | 0 .../meowth/{gmax => gigantamax}/back.png | Bin .../meowth/{gmax => gigantamax}/front.png | Bin .../meowth/{gmax => gigantamax}/icon.png | Bin .../meowth/{gmax => gigantamax}/normal.pal | 0 .../meowth/{gmax => gigantamax}/shiny.pal | 0 .../orbeetle/{gmax => gigantamax}/back.png | Bin .../orbeetle/{gmax => gigantamax}/front.png | Bin .../orbeetle/{gmax => gigantamax}/icon.png | Bin .../orbeetle/{gmax => gigantamax}/normal.pal | 0 .../orbeetle/{gmax => gigantamax}/shiny.pal | 0 .../pikachu/{gmax => gigantamax}/back.png | Bin .../pikachu/{gmax => gigantamax}/front.png | Bin .../pikachu/{gmax => gigantamax}/icon.png | Bin .../pikachu/{gmax => gigantamax}/normal.pal | 0 .../pikachu/{gmax => gigantamax}/shiny.pal | 0 .../rillaboom/{gmax => gigantamax}/back.png | Bin .../rillaboom/{gmax => gigantamax}/front.png | Bin .../rillaboom/{gmax => gigantamax}/icon.png | Bin .../rillaboom/{gmax => gigantamax}/normal.pal | 0 .../rillaboom/{gmax => gigantamax}/shiny.pal | 0 .../sandaconda/{gmax => gigantamax}/back.png | Bin .../sandaconda/{gmax => gigantamax}/front.png | Bin .../sandaconda/{gmax => gigantamax}/icon.png | Bin .../{gmax => gigantamax}/normal.pal | 0 .../sandaconda/{gmax => gigantamax}/shiny.pal | 0 .../snorlax/{gmax => gigantamax}/back.png | Bin .../snorlax/{gmax => gigantamax}/front.png | Bin .../snorlax/{gmax => gigantamax}/icon.png | Bin .../snorlax/{gmax => gigantamax}/normal.pal | 0 .../snorlax/{gmax => gigantamax}/shiny.pal | 0 .../toxtricity/{gmax => gigantamax}/back.png | Bin .../toxtricity/{gmax => gigantamax}/front.png | Bin .../toxtricity/{gmax => gigantamax}/icon.png | Bin .../{gmax => gigantamax}/normal.pal | 0 .../toxtricity/{gmax => gigantamax}/shiny.pal | 0 .../back.png | Bin .../front.png | Bin .../icon.png | Bin .../normal.pal | 0 .../shiny.pal | 0 .../back.png | Bin .../front.png | Bin .../icon.png | Bin .../normal.pal | 0 .../shiny.pal | 0 .../venusaur/{gmax => gigantamax}/back.png | Bin .../venusaur/{gmax => gigantamax}/front.png | Bin .../venusaur/{gmax => gigantamax}/icon.png | Bin .../venusaur/{gmax => gigantamax}/normal.pal | 0 .../venusaur/{gmax => gigantamax}/shiny.pal | 0 include/config/battle.h | 2 +- include/constants/species.h | 68 ++-- include/graphics.h | 330 +++++++++--------- src/battle_dynamax.c | 76 ++-- src/data/graphics/pokemon.h | 330 +++++++++--------- src/data/pokemon/form_change_table_pointers.h | 66 ++-- src/data/pokemon/form_change_tables.h | 16 +- .../pokemon/form_species_table_pointers.h | 66 ++-- src/data/pokemon/form_species_tables.h | 64 ++-- src/data/pokemon/level_up_learnset_pointers.h | 66 ++-- src/data/pokemon/species_info.h | 66 ++-- .../pokemon/teachable_learnset_pointers.h | 66 ++-- .../pokemon_graphics/back_pic_coordinates.h | 66 ++-- src/data/pokemon_graphics/back_pic_table.h | 66 ++-- .../pokemon_graphics/enemy_mon_elevation.h | 2 +- src/data/pokemon_graphics/front_pic_anims.h | 198 +++++------ .../pokemon_graphics/front_pic_coordinates.h | 66 ++-- src/data/pokemon_graphics/front_pic_table.h | 66 ++-- src/data/pokemon_graphics/palette_table.h | 66 ++-- .../pokemon_graphics/shiny_palette_table.h | 66 ++-- src/data/text/species_names.h | 66 ++-- src/pokemon.c | 66 ++-- src/pokemon_icon.c | 132 +++---- test/dynamax.c | 2 +- 189 files changed, 1039 insertions(+), 1039 deletions(-) rename graphics/pokemon/alcremie/{gmax => gigantamax}/back.png (100%) rename graphics/pokemon/alcremie/{gmax => gigantamax}/front.png (100%) rename graphics/pokemon/alcremie/{gmax => gigantamax}/icon.png (100%) rename graphics/pokemon/alcremie/{gmax => gigantamax}/normal.pal (100%) rename graphics/pokemon/alcremie/{gmax => gigantamax}/shiny.pal (100%) rename graphics/pokemon/appletun/{gmax => gigantamax}/back.png (100%) rename graphics/pokemon/appletun/{gmax => gigantamax}/front.png (100%) rename graphics/pokemon/appletun/{gmax => gigantamax}/icon.png (100%) rename graphics/pokemon/appletun/{gmax => gigantamax}/normal.pal (100%) rename graphics/pokemon/appletun/{gmax => gigantamax}/shiny.pal (100%) rename graphics/pokemon/blastoise/{gmax => gigantamax}/back.png (100%) rename graphics/pokemon/blastoise/{gmax => gigantamax}/front.png (100%) rename graphics/pokemon/blastoise/{gmax => gigantamax}/icon.png (100%) rename graphics/pokemon/blastoise/{gmax => gigantamax}/normal.pal (100%) rename graphics/pokemon/blastoise/{gmax => gigantamax}/shiny.pal (100%) rename graphics/pokemon/butterfree/{gmax => gigantamax}/back.png (100%) rename graphics/pokemon/butterfree/{gmax => gigantamax}/front.png (100%) rename graphics/pokemon/butterfree/{gmax => gigantamax}/icon.png (100%) rename graphics/pokemon/butterfree/{gmax => gigantamax}/normal.pal (100%) rename graphics/pokemon/butterfree/{gmax => gigantamax}/shiny.pal (100%) rename graphics/pokemon/centiskorch/{gmax => gigantamax}/back.png (100%) rename graphics/pokemon/centiskorch/{gmax => gigantamax}/front.png (100%) rename graphics/pokemon/centiskorch/{gmax => gigantamax}/icon.png (100%) rename graphics/pokemon/centiskorch/{gmax => gigantamax}/normal.pal (100%) rename graphics/pokemon/centiskorch/{gmax => gigantamax}/shiny.pal (100%) rename graphics/pokemon/charizard/{gmax => gigantamax}/back.png (100%) rename graphics/pokemon/charizard/{gmax => gigantamax}/front.png (100%) rename graphics/pokemon/charizard/{gmax => gigantamax}/icon.png (100%) rename graphics/pokemon/charizard/{gmax => gigantamax}/normal.pal (100%) rename graphics/pokemon/charizard/{gmax => gigantamax}/shiny.pal (100%) rename graphics/pokemon/cinderace/{gmax => gigantamax}/back.png (100%) rename graphics/pokemon/cinderace/{gmax => gigantamax}/front.png (100%) rename graphics/pokemon/cinderace/{gmax => gigantamax}/icon.png (100%) rename graphics/pokemon/cinderace/{gmax => gigantamax}/normal.pal (100%) rename graphics/pokemon/cinderace/{gmax => gigantamax}/shiny.pal (100%) rename graphics/pokemon/coalossal/{gmax => gigantamax}/back.png (100%) rename graphics/pokemon/coalossal/{gmax => gigantamax}/front.png (100%) rename graphics/pokemon/coalossal/{gmax => gigantamax}/icon.png (100%) rename graphics/pokemon/coalossal/{gmax => gigantamax}/normal.pal (100%) rename graphics/pokemon/coalossal/{gmax => gigantamax}/shiny.pal (100%) rename graphics/pokemon/copperajah/{gmax => gigantamax}/back.png (100%) rename graphics/pokemon/copperajah/{gmax => gigantamax}/front.png (100%) rename graphics/pokemon/copperajah/{gmax => gigantamax}/icon.png (100%) rename graphics/pokemon/copperajah/{gmax => gigantamax}/normal.pal (100%) rename graphics/pokemon/copperajah/{gmax => gigantamax}/shiny.pal (100%) rename graphics/pokemon/corviknight/{gmax => gigantamax}/back.png (100%) rename graphics/pokemon/corviknight/{gmax => gigantamax}/front.png (100%) rename graphics/pokemon/corviknight/{gmax => gigantamax}/icon.png (100%) rename graphics/pokemon/corviknight/{gmax => gigantamax}/normal.pal (100%) rename graphics/pokemon/corviknight/{gmax => gigantamax}/shiny.pal (100%) rename graphics/pokemon/drednaw/{gmax => gigantamax}/back.png (100%) rename graphics/pokemon/drednaw/{gmax => gigantamax}/front.png (100%) rename graphics/pokemon/drednaw/{gmax => gigantamax}/icon.png (100%) rename graphics/pokemon/drednaw/{gmax => gigantamax}/normal.pal (100%) rename graphics/pokemon/drednaw/{gmax => gigantamax}/shiny.pal (100%) rename graphics/pokemon/duraludon/{gmax => gigantamax}/back.png (100%) rename graphics/pokemon/duraludon/{gmax => gigantamax}/front.png (100%) rename graphics/pokemon/duraludon/{gmax => gigantamax}/icon.png (100%) rename graphics/pokemon/duraludon/{gmax => gigantamax}/normal.pal (100%) rename graphics/pokemon/duraludon/{gmax => gigantamax}/shiny.pal (100%) rename graphics/pokemon/eevee/{gmax => gigantamax}/back.png (100%) rename graphics/pokemon/eevee/{gmax => gigantamax}/front.png (100%) rename graphics/pokemon/eevee/{gmax => gigantamax}/icon.png (100%) rename graphics/pokemon/eevee/{gmax => gigantamax}/normal.pal (100%) rename graphics/pokemon/eevee/{gmax => gigantamax}/shiny.pal (100%) rename graphics/pokemon/flapple/{gmax => gigantamax}/back.png (100%) rename graphics/pokemon/flapple/{gmax => gigantamax}/front.png (100%) rename graphics/pokemon/flapple/{gmax => gigantamax}/icon.png (100%) rename graphics/pokemon/flapple/{gmax => gigantamax}/normal.pal (100%) rename graphics/pokemon/flapple/{gmax => gigantamax}/shiny.pal (100%) rename graphics/pokemon/garbodor/{gmax => gigantamax}/back.png (100%) rename graphics/pokemon/garbodor/{gmax => gigantamax}/front.png (100%) rename graphics/pokemon/garbodor/{gmax => gigantamax}/icon.png (100%) rename graphics/pokemon/garbodor/{gmax => gigantamax}/normal.pal (100%) rename graphics/pokemon/garbodor/{gmax => gigantamax}/shiny.pal (100%) rename graphics/pokemon/gengar/{gmax => gigantamax}/back.png (100%) rename graphics/pokemon/gengar/{gmax => gigantamax}/front.png (100%) rename graphics/pokemon/gengar/{gmax => gigantamax}/icon.png (100%) rename graphics/pokemon/gengar/{gmax => gigantamax}/normal.pal (100%) rename graphics/pokemon/gengar/{gmax => gigantamax}/shiny.pal (100%) rename graphics/pokemon/grimmsnarl/{gmax => gigantamax}/back.png (100%) rename graphics/pokemon/grimmsnarl/{gmax => gigantamax}/front.png (100%) rename graphics/pokemon/grimmsnarl/{gmax => gigantamax}/icon.png (100%) rename graphics/pokemon/grimmsnarl/{gmax => gigantamax}/normal.pal (100%) rename graphics/pokemon/grimmsnarl/{gmax => gigantamax}/shiny.pal (100%) rename graphics/pokemon/hatterene/{gmax => gigantamax}/back.png (100%) rename graphics/pokemon/hatterene/{gmax => gigantamax}/front.png (100%) rename graphics/pokemon/hatterene/{gmax => gigantamax}/icon.png (100%) rename graphics/pokemon/hatterene/{gmax => gigantamax}/normal.pal (100%) rename graphics/pokemon/hatterene/{gmax => gigantamax}/shiny.pal (100%) rename graphics/pokemon/inteleon/{gmax => gigantamax}/back.png (100%) rename graphics/pokemon/inteleon/{gmax => gigantamax}/front.png (100%) rename graphics/pokemon/inteleon/{gmax => gigantamax}/icon.png (100%) rename graphics/pokemon/inteleon/{gmax => gigantamax}/normal.pal (100%) rename graphics/pokemon/inteleon/{gmax => gigantamax}/shiny.pal (100%) rename graphics/pokemon/kingler/{gmax => gigantamax}/back.png (100%) rename graphics/pokemon/kingler/{gmax => gigantamax}/front.png (100%) rename graphics/pokemon/kingler/{gmax => gigantamax}/icon.png (100%) rename graphics/pokemon/kingler/{gmax => gigantamax}/normal.pal (100%) rename graphics/pokemon/kingler/{gmax => gigantamax}/shiny.pal (100%) rename graphics/pokemon/lapras/{gmax => gigantamax}/back.png (100%) rename graphics/pokemon/lapras/{gmax => gigantamax}/front.png (100%) rename graphics/pokemon/lapras/{gmax => gigantamax}/icon.png (100%) rename graphics/pokemon/lapras/{gmax => gigantamax}/normal.pal (100%) rename graphics/pokemon/lapras/{gmax => gigantamax}/shiny.pal (100%) rename graphics/pokemon/machamp/{gmax => gigantamax}/back.png (100%) rename graphics/pokemon/machamp/{gmax => gigantamax}/front.png (100%) rename graphics/pokemon/machamp/{gmax => gigantamax}/icon.png (100%) rename graphics/pokemon/machamp/{gmax => gigantamax}/normal.pal (100%) rename graphics/pokemon/machamp/{gmax => gigantamax}/shiny.pal (100%) rename graphics/pokemon/melmetal/{gmax => gigantamax}/back.png (100%) rename graphics/pokemon/melmetal/{gmax => gigantamax}/front.png (100%) rename graphics/pokemon/melmetal/{gmax => gigantamax}/icon.png (100%) rename graphics/pokemon/melmetal/{gmax => gigantamax}/normal.pal (100%) rename graphics/pokemon/melmetal/{gmax => gigantamax}/shiny.pal (100%) rename graphics/pokemon/meowth/{gmax => gigantamax}/back.png (100%) rename graphics/pokemon/meowth/{gmax => gigantamax}/front.png (100%) rename graphics/pokemon/meowth/{gmax => gigantamax}/icon.png (100%) rename graphics/pokemon/meowth/{gmax => gigantamax}/normal.pal (100%) rename graphics/pokemon/meowth/{gmax => gigantamax}/shiny.pal (100%) rename graphics/pokemon/orbeetle/{gmax => gigantamax}/back.png (100%) rename graphics/pokemon/orbeetle/{gmax => gigantamax}/front.png (100%) rename graphics/pokemon/orbeetle/{gmax => gigantamax}/icon.png (100%) rename graphics/pokemon/orbeetle/{gmax => gigantamax}/normal.pal (100%) rename graphics/pokemon/orbeetle/{gmax => gigantamax}/shiny.pal (100%) rename graphics/pokemon/pikachu/{gmax => gigantamax}/back.png (100%) rename graphics/pokemon/pikachu/{gmax => gigantamax}/front.png (100%) rename graphics/pokemon/pikachu/{gmax => gigantamax}/icon.png (100%) rename graphics/pokemon/pikachu/{gmax => gigantamax}/normal.pal (100%) rename graphics/pokemon/pikachu/{gmax => gigantamax}/shiny.pal (100%) rename graphics/pokemon/rillaboom/{gmax => gigantamax}/back.png (100%) rename graphics/pokemon/rillaboom/{gmax => gigantamax}/front.png (100%) rename graphics/pokemon/rillaboom/{gmax => gigantamax}/icon.png (100%) rename graphics/pokemon/rillaboom/{gmax => gigantamax}/normal.pal (100%) rename graphics/pokemon/rillaboom/{gmax => gigantamax}/shiny.pal (100%) rename graphics/pokemon/sandaconda/{gmax => gigantamax}/back.png (100%) rename graphics/pokemon/sandaconda/{gmax => gigantamax}/front.png (100%) rename graphics/pokemon/sandaconda/{gmax => gigantamax}/icon.png (100%) rename graphics/pokemon/sandaconda/{gmax => gigantamax}/normal.pal (100%) rename graphics/pokemon/sandaconda/{gmax => gigantamax}/shiny.pal (100%) rename graphics/pokemon/snorlax/{gmax => gigantamax}/back.png (100%) rename graphics/pokemon/snorlax/{gmax => gigantamax}/front.png (100%) rename graphics/pokemon/snorlax/{gmax => gigantamax}/icon.png (100%) rename graphics/pokemon/snorlax/{gmax => gigantamax}/normal.pal (100%) rename graphics/pokemon/snorlax/{gmax => gigantamax}/shiny.pal (100%) rename graphics/pokemon/toxtricity/{gmax => gigantamax}/back.png (100%) rename graphics/pokemon/toxtricity/{gmax => gigantamax}/front.png (100%) rename graphics/pokemon/toxtricity/{gmax => gigantamax}/icon.png (100%) rename graphics/pokemon/toxtricity/{gmax => gigantamax}/normal.pal (100%) rename graphics/pokemon/toxtricity/{gmax => gigantamax}/shiny.pal (100%) rename graphics/pokemon/urshifu/{gmax_rapid_strike_style => rapid_strike_style_gigantamax}/back.png (100%) rename graphics/pokemon/urshifu/{gmax_rapid_strike_style => rapid_strike_style_gigantamax}/front.png (100%) rename graphics/pokemon/urshifu/{gmax_rapid_strike_style => rapid_strike_style_gigantamax}/icon.png (100%) rename graphics/pokemon/urshifu/{gmax_rapid_strike_style => rapid_strike_style_gigantamax}/normal.pal (100%) rename graphics/pokemon/urshifu/{gmax_rapid_strike_style => rapid_strike_style_gigantamax}/shiny.pal (100%) rename graphics/pokemon/urshifu/{gmax => single_strike_style_gigantamax}/back.png (100%) rename graphics/pokemon/urshifu/{gmax => single_strike_style_gigantamax}/front.png (100%) rename graphics/pokemon/urshifu/{gmax => single_strike_style_gigantamax}/icon.png (100%) rename graphics/pokemon/urshifu/{gmax => single_strike_style_gigantamax}/normal.pal (100%) rename graphics/pokemon/urshifu/{gmax => single_strike_style_gigantamax}/shiny.pal (100%) rename graphics/pokemon/venusaur/{gmax => gigantamax}/back.png (100%) rename graphics/pokemon/venusaur/{gmax => gigantamax}/front.png (100%) rename graphics/pokemon/venusaur/{gmax => gigantamax}/icon.png (100%) rename graphics/pokemon/venusaur/{gmax => gigantamax}/normal.pal (100%) rename graphics/pokemon/venusaur/{gmax => gigantamax}/shiny.pal (100%) diff --git a/graphics/pokemon/alcremie/gmax/back.png b/graphics/pokemon/alcremie/gigantamax/back.png similarity index 100% rename from graphics/pokemon/alcremie/gmax/back.png rename to graphics/pokemon/alcremie/gigantamax/back.png diff --git a/graphics/pokemon/alcremie/gmax/front.png b/graphics/pokemon/alcremie/gigantamax/front.png similarity index 100% rename from graphics/pokemon/alcremie/gmax/front.png rename to graphics/pokemon/alcremie/gigantamax/front.png diff --git a/graphics/pokemon/alcremie/gmax/icon.png b/graphics/pokemon/alcremie/gigantamax/icon.png similarity index 100% rename from graphics/pokemon/alcremie/gmax/icon.png rename to graphics/pokemon/alcremie/gigantamax/icon.png diff --git a/graphics/pokemon/alcremie/gmax/normal.pal b/graphics/pokemon/alcremie/gigantamax/normal.pal similarity index 100% rename from graphics/pokemon/alcremie/gmax/normal.pal rename to graphics/pokemon/alcremie/gigantamax/normal.pal diff --git a/graphics/pokemon/alcremie/gmax/shiny.pal b/graphics/pokemon/alcremie/gigantamax/shiny.pal similarity index 100% rename from graphics/pokemon/alcremie/gmax/shiny.pal rename to graphics/pokemon/alcremie/gigantamax/shiny.pal diff --git a/graphics/pokemon/appletun/gmax/back.png b/graphics/pokemon/appletun/gigantamax/back.png similarity index 100% rename from graphics/pokemon/appletun/gmax/back.png rename to graphics/pokemon/appletun/gigantamax/back.png diff --git a/graphics/pokemon/appletun/gmax/front.png b/graphics/pokemon/appletun/gigantamax/front.png similarity index 100% rename from graphics/pokemon/appletun/gmax/front.png rename to graphics/pokemon/appletun/gigantamax/front.png diff --git a/graphics/pokemon/appletun/gmax/icon.png b/graphics/pokemon/appletun/gigantamax/icon.png similarity index 100% rename from graphics/pokemon/appletun/gmax/icon.png rename to graphics/pokemon/appletun/gigantamax/icon.png diff --git a/graphics/pokemon/appletun/gmax/normal.pal b/graphics/pokemon/appletun/gigantamax/normal.pal similarity index 100% rename from graphics/pokemon/appletun/gmax/normal.pal rename to graphics/pokemon/appletun/gigantamax/normal.pal diff --git a/graphics/pokemon/appletun/gmax/shiny.pal b/graphics/pokemon/appletun/gigantamax/shiny.pal similarity index 100% rename from graphics/pokemon/appletun/gmax/shiny.pal rename to graphics/pokemon/appletun/gigantamax/shiny.pal diff --git a/graphics/pokemon/blastoise/gmax/back.png b/graphics/pokemon/blastoise/gigantamax/back.png similarity index 100% rename from graphics/pokemon/blastoise/gmax/back.png rename to graphics/pokemon/blastoise/gigantamax/back.png diff --git a/graphics/pokemon/blastoise/gmax/front.png b/graphics/pokemon/blastoise/gigantamax/front.png similarity index 100% rename from graphics/pokemon/blastoise/gmax/front.png rename to graphics/pokemon/blastoise/gigantamax/front.png diff --git a/graphics/pokemon/blastoise/gmax/icon.png b/graphics/pokemon/blastoise/gigantamax/icon.png similarity index 100% rename from graphics/pokemon/blastoise/gmax/icon.png rename to graphics/pokemon/blastoise/gigantamax/icon.png diff --git a/graphics/pokemon/blastoise/gmax/normal.pal b/graphics/pokemon/blastoise/gigantamax/normal.pal similarity index 100% rename from graphics/pokemon/blastoise/gmax/normal.pal rename to graphics/pokemon/blastoise/gigantamax/normal.pal diff --git a/graphics/pokemon/blastoise/gmax/shiny.pal b/graphics/pokemon/blastoise/gigantamax/shiny.pal similarity index 100% rename from graphics/pokemon/blastoise/gmax/shiny.pal rename to graphics/pokemon/blastoise/gigantamax/shiny.pal diff --git a/graphics/pokemon/butterfree/gmax/back.png b/graphics/pokemon/butterfree/gigantamax/back.png similarity index 100% rename from graphics/pokemon/butterfree/gmax/back.png rename to graphics/pokemon/butterfree/gigantamax/back.png diff --git a/graphics/pokemon/butterfree/gmax/front.png b/graphics/pokemon/butterfree/gigantamax/front.png similarity index 100% rename from graphics/pokemon/butterfree/gmax/front.png rename to graphics/pokemon/butterfree/gigantamax/front.png diff --git a/graphics/pokemon/butterfree/gmax/icon.png b/graphics/pokemon/butterfree/gigantamax/icon.png similarity index 100% rename from graphics/pokemon/butterfree/gmax/icon.png rename to graphics/pokemon/butterfree/gigantamax/icon.png diff --git a/graphics/pokemon/butterfree/gmax/normal.pal b/graphics/pokemon/butterfree/gigantamax/normal.pal similarity index 100% rename from graphics/pokemon/butterfree/gmax/normal.pal rename to graphics/pokemon/butterfree/gigantamax/normal.pal diff --git a/graphics/pokemon/butterfree/gmax/shiny.pal b/graphics/pokemon/butterfree/gigantamax/shiny.pal similarity index 100% rename from graphics/pokemon/butterfree/gmax/shiny.pal rename to graphics/pokemon/butterfree/gigantamax/shiny.pal diff --git a/graphics/pokemon/centiskorch/gmax/back.png b/graphics/pokemon/centiskorch/gigantamax/back.png similarity index 100% rename from graphics/pokemon/centiskorch/gmax/back.png rename to graphics/pokemon/centiskorch/gigantamax/back.png diff --git a/graphics/pokemon/centiskorch/gmax/front.png b/graphics/pokemon/centiskorch/gigantamax/front.png similarity index 100% rename from graphics/pokemon/centiskorch/gmax/front.png rename to graphics/pokemon/centiskorch/gigantamax/front.png diff --git a/graphics/pokemon/centiskorch/gmax/icon.png b/graphics/pokemon/centiskorch/gigantamax/icon.png similarity index 100% rename from graphics/pokemon/centiskorch/gmax/icon.png rename to graphics/pokemon/centiskorch/gigantamax/icon.png diff --git a/graphics/pokemon/centiskorch/gmax/normal.pal b/graphics/pokemon/centiskorch/gigantamax/normal.pal similarity index 100% rename from graphics/pokemon/centiskorch/gmax/normal.pal rename to graphics/pokemon/centiskorch/gigantamax/normal.pal diff --git a/graphics/pokemon/centiskorch/gmax/shiny.pal b/graphics/pokemon/centiskorch/gigantamax/shiny.pal similarity index 100% rename from graphics/pokemon/centiskorch/gmax/shiny.pal rename to graphics/pokemon/centiskorch/gigantamax/shiny.pal diff --git a/graphics/pokemon/charizard/gmax/back.png b/graphics/pokemon/charizard/gigantamax/back.png similarity index 100% rename from graphics/pokemon/charizard/gmax/back.png rename to graphics/pokemon/charizard/gigantamax/back.png diff --git a/graphics/pokemon/charizard/gmax/front.png b/graphics/pokemon/charizard/gigantamax/front.png similarity index 100% rename from graphics/pokemon/charizard/gmax/front.png rename to graphics/pokemon/charizard/gigantamax/front.png diff --git a/graphics/pokemon/charizard/gmax/icon.png b/graphics/pokemon/charizard/gigantamax/icon.png similarity index 100% rename from graphics/pokemon/charizard/gmax/icon.png rename to graphics/pokemon/charizard/gigantamax/icon.png diff --git a/graphics/pokemon/charizard/gmax/normal.pal b/graphics/pokemon/charizard/gigantamax/normal.pal similarity index 100% rename from graphics/pokemon/charizard/gmax/normal.pal rename to graphics/pokemon/charizard/gigantamax/normal.pal diff --git a/graphics/pokemon/charizard/gmax/shiny.pal b/graphics/pokemon/charizard/gigantamax/shiny.pal similarity index 100% rename from graphics/pokemon/charizard/gmax/shiny.pal rename to graphics/pokemon/charizard/gigantamax/shiny.pal diff --git a/graphics/pokemon/cinderace/gmax/back.png b/graphics/pokemon/cinderace/gigantamax/back.png similarity index 100% rename from graphics/pokemon/cinderace/gmax/back.png rename to graphics/pokemon/cinderace/gigantamax/back.png diff --git a/graphics/pokemon/cinderace/gmax/front.png b/graphics/pokemon/cinderace/gigantamax/front.png similarity index 100% rename from graphics/pokemon/cinderace/gmax/front.png rename to graphics/pokemon/cinderace/gigantamax/front.png diff --git a/graphics/pokemon/cinderace/gmax/icon.png b/graphics/pokemon/cinderace/gigantamax/icon.png similarity index 100% rename from graphics/pokemon/cinderace/gmax/icon.png rename to graphics/pokemon/cinderace/gigantamax/icon.png diff --git a/graphics/pokemon/cinderace/gmax/normal.pal b/graphics/pokemon/cinderace/gigantamax/normal.pal similarity index 100% rename from graphics/pokemon/cinderace/gmax/normal.pal rename to graphics/pokemon/cinderace/gigantamax/normal.pal diff --git a/graphics/pokemon/cinderace/gmax/shiny.pal b/graphics/pokemon/cinderace/gigantamax/shiny.pal similarity index 100% rename from graphics/pokemon/cinderace/gmax/shiny.pal rename to graphics/pokemon/cinderace/gigantamax/shiny.pal diff --git a/graphics/pokemon/coalossal/gmax/back.png b/graphics/pokemon/coalossal/gigantamax/back.png similarity index 100% rename from graphics/pokemon/coalossal/gmax/back.png rename to graphics/pokemon/coalossal/gigantamax/back.png diff --git a/graphics/pokemon/coalossal/gmax/front.png b/graphics/pokemon/coalossal/gigantamax/front.png similarity index 100% rename from graphics/pokemon/coalossal/gmax/front.png rename to graphics/pokemon/coalossal/gigantamax/front.png diff --git a/graphics/pokemon/coalossal/gmax/icon.png b/graphics/pokemon/coalossal/gigantamax/icon.png similarity index 100% rename from graphics/pokemon/coalossal/gmax/icon.png rename to graphics/pokemon/coalossal/gigantamax/icon.png diff --git a/graphics/pokemon/coalossal/gmax/normal.pal b/graphics/pokemon/coalossal/gigantamax/normal.pal similarity index 100% rename from graphics/pokemon/coalossal/gmax/normal.pal rename to graphics/pokemon/coalossal/gigantamax/normal.pal diff --git a/graphics/pokemon/coalossal/gmax/shiny.pal b/graphics/pokemon/coalossal/gigantamax/shiny.pal similarity index 100% rename from graphics/pokemon/coalossal/gmax/shiny.pal rename to graphics/pokemon/coalossal/gigantamax/shiny.pal diff --git a/graphics/pokemon/copperajah/gmax/back.png b/graphics/pokemon/copperajah/gigantamax/back.png similarity index 100% rename from graphics/pokemon/copperajah/gmax/back.png rename to graphics/pokemon/copperajah/gigantamax/back.png diff --git a/graphics/pokemon/copperajah/gmax/front.png b/graphics/pokemon/copperajah/gigantamax/front.png similarity index 100% rename from graphics/pokemon/copperajah/gmax/front.png rename to graphics/pokemon/copperajah/gigantamax/front.png diff --git a/graphics/pokemon/copperajah/gmax/icon.png b/graphics/pokemon/copperajah/gigantamax/icon.png similarity index 100% rename from graphics/pokemon/copperajah/gmax/icon.png rename to graphics/pokemon/copperajah/gigantamax/icon.png diff --git a/graphics/pokemon/copperajah/gmax/normal.pal b/graphics/pokemon/copperajah/gigantamax/normal.pal similarity index 100% rename from graphics/pokemon/copperajah/gmax/normal.pal rename to graphics/pokemon/copperajah/gigantamax/normal.pal diff --git a/graphics/pokemon/copperajah/gmax/shiny.pal b/graphics/pokemon/copperajah/gigantamax/shiny.pal similarity index 100% rename from graphics/pokemon/copperajah/gmax/shiny.pal rename to graphics/pokemon/copperajah/gigantamax/shiny.pal diff --git a/graphics/pokemon/corviknight/gmax/back.png b/graphics/pokemon/corviknight/gigantamax/back.png similarity index 100% rename from graphics/pokemon/corviknight/gmax/back.png rename to graphics/pokemon/corviknight/gigantamax/back.png diff --git a/graphics/pokemon/corviknight/gmax/front.png b/graphics/pokemon/corviknight/gigantamax/front.png similarity index 100% rename from graphics/pokemon/corviknight/gmax/front.png rename to graphics/pokemon/corviknight/gigantamax/front.png diff --git a/graphics/pokemon/corviknight/gmax/icon.png b/graphics/pokemon/corviknight/gigantamax/icon.png similarity index 100% rename from graphics/pokemon/corviknight/gmax/icon.png rename to graphics/pokemon/corviknight/gigantamax/icon.png diff --git a/graphics/pokemon/corviknight/gmax/normal.pal b/graphics/pokemon/corviknight/gigantamax/normal.pal similarity index 100% rename from graphics/pokemon/corviknight/gmax/normal.pal rename to graphics/pokemon/corviknight/gigantamax/normal.pal diff --git a/graphics/pokemon/corviknight/gmax/shiny.pal b/graphics/pokemon/corviknight/gigantamax/shiny.pal similarity index 100% rename from graphics/pokemon/corviknight/gmax/shiny.pal rename to graphics/pokemon/corviknight/gigantamax/shiny.pal diff --git a/graphics/pokemon/drednaw/gmax/back.png b/graphics/pokemon/drednaw/gigantamax/back.png similarity index 100% rename from graphics/pokemon/drednaw/gmax/back.png rename to graphics/pokemon/drednaw/gigantamax/back.png diff --git a/graphics/pokemon/drednaw/gmax/front.png b/graphics/pokemon/drednaw/gigantamax/front.png similarity index 100% rename from graphics/pokemon/drednaw/gmax/front.png rename to graphics/pokemon/drednaw/gigantamax/front.png diff --git a/graphics/pokemon/drednaw/gmax/icon.png b/graphics/pokemon/drednaw/gigantamax/icon.png similarity index 100% rename from graphics/pokemon/drednaw/gmax/icon.png rename to graphics/pokemon/drednaw/gigantamax/icon.png diff --git a/graphics/pokemon/drednaw/gmax/normal.pal b/graphics/pokemon/drednaw/gigantamax/normal.pal similarity index 100% rename from graphics/pokemon/drednaw/gmax/normal.pal rename to graphics/pokemon/drednaw/gigantamax/normal.pal diff --git a/graphics/pokemon/drednaw/gmax/shiny.pal b/graphics/pokemon/drednaw/gigantamax/shiny.pal similarity index 100% rename from graphics/pokemon/drednaw/gmax/shiny.pal rename to graphics/pokemon/drednaw/gigantamax/shiny.pal diff --git a/graphics/pokemon/duraludon/gmax/back.png b/graphics/pokemon/duraludon/gigantamax/back.png similarity index 100% rename from graphics/pokemon/duraludon/gmax/back.png rename to graphics/pokemon/duraludon/gigantamax/back.png diff --git a/graphics/pokemon/duraludon/gmax/front.png b/graphics/pokemon/duraludon/gigantamax/front.png similarity index 100% rename from graphics/pokemon/duraludon/gmax/front.png rename to graphics/pokemon/duraludon/gigantamax/front.png diff --git a/graphics/pokemon/duraludon/gmax/icon.png b/graphics/pokemon/duraludon/gigantamax/icon.png similarity index 100% rename from graphics/pokemon/duraludon/gmax/icon.png rename to graphics/pokemon/duraludon/gigantamax/icon.png diff --git a/graphics/pokemon/duraludon/gmax/normal.pal b/graphics/pokemon/duraludon/gigantamax/normal.pal similarity index 100% rename from graphics/pokemon/duraludon/gmax/normal.pal rename to graphics/pokemon/duraludon/gigantamax/normal.pal diff --git a/graphics/pokemon/duraludon/gmax/shiny.pal b/graphics/pokemon/duraludon/gigantamax/shiny.pal similarity index 100% rename from graphics/pokemon/duraludon/gmax/shiny.pal rename to graphics/pokemon/duraludon/gigantamax/shiny.pal diff --git a/graphics/pokemon/eevee/gmax/back.png b/graphics/pokemon/eevee/gigantamax/back.png similarity index 100% rename from graphics/pokemon/eevee/gmax/back.png rename to graphics/pokemon/eevee/gigantamax/back.png diff --git a/graphics/pokemon/eevee/gmax/front.png b/graphics/pokemon/eevee/gigantamax/front.png similarity index 100% rename from graphics/pokemon/eevee/gmax/front.png rename to graphics/pokemon/eevee/gigantamax/front.png diff --git a/graphics/pokemon/eevee/gmax/icon.png b/graphics/pokemon/eevee/gigantamax/icon.png similarity index 100% rename from graphics/pokemon/eevee/gmax/icon.png rename to graphics/pokemon/eevee/gigantamax/icon.png diff --git a/graphics/pokemon/eevee/gmax/normal.pal b/graphics/pokemon/eevee/gigantamax/normal.pal similarity index 100% rename from graphics/pokemon/eevee/gmax/normal.pal rename to graphics/pokemon/eevee/gigantamax/normal.pal diff --git a/graphics/pokemon/eevee/gmax/shiny.pal b/graphics/pokemon/eevee/gigantamax/shiny.pal similarity index 100% rename from graphics/pokemon/eevee/gmax/shiny.pal rename to graphics/pokemon/eevee/gigantamax/shiny.pal diff --git a/graphics/pokemon/flapple/gmax/back.png b/graphics/pokemon/flapple/gigantamax/back.png similarity index 100% rename from graphics/pokemon/flapple/gmax/back.png rename to graphics/pokemon/flapple/gigantamax/back.png diff --git a/graphics/pokemon/flapple/gmax/front.png b/graphics/pokemon/flapple/gigantamax/front.png similarity index 100% rename from graphics/pokemon/flapple/gmax/front.png rename to graphics/pokemon/flapple/gigantamax/front.png diff --git a/graphics/pokemon/flapple/gmax/icon.png b/graphics/pokemon/flapple/gigantamax/icon.png similarity index 100% rename from graphics/pokemon/flapple/gmax/icon.png rename to graphics/pokemon/flapple/gigantamax/icon.png diff --git a/graphics/pokemon/flapple/gmax/normal.pal b/graphics/pokemon/flapple/gigantamax/normal.pal similarity index 100% rename from graphics/pokemon/flapple/gmax/normal.pal rename to graphics/pokemon/flapple/gigantamax/normal.pal diff --git a/graphics/pokemon/flapple/gmax/shiny.pal b/graphics/pokemon/flapple/gigantamax/shiny.pal similarity index 100% rename from graphics/pokemon/flapple/gmax/shiny.pal rename to graphics/pokemon/flapple/gigantamax/shiny.pal diff --git a/graphics/pokemon/garbodor/gmax/back.png b/graphics/pokemon/garbodor/gigantamax/back.png similarity index 100% rename from graphics/pokemon/garbodor/gmax/back.png rename to graphics/pokemon/garbodor/gigantamax/back.png diff --git a/graphics/pokemon/garbodor/gmax/front.png b/graphics/pokemon/garbodor/gigantamax/front.png similarity index 100% rename from graphics/pokemon/garbodor/gmax/front.png rename to graphics/pokemon/garbodor/gigantamax/front.png diff --git a/graphics/pokemon/garbodor/gmax/icon.png b/graphics/pokemon/garbodor/gigantamax/icon.png similarity index 100% rename from graphics/pokemon/garbodor/gmax/icon.png rename to graphics/pokemon/garbodor/gigantamax/icon.png diff --git a/graphics/pokemon/garbodor/gmax/normal.pal b/graphics/pokemon/garbodor/gigantamax/normal.pal similarity index 100% rename from graphics/pokemon/garbodor/gmax/normal.pal rename to graphics/pokemon/garbodor/gigantamax/normal.pal diff --git a/graphics/pokemon/garbodor/gmax/shiny.pal b/graphics/pokemon/garbodor/gigantamax/shiny.pal similarity index 100% rename from graphics/pokemon/garbodor/gmax/shiny.pal rename to graphics/pokemon/garbodor/gigantamax/shiny.pal diff --git a/graphics/pokemon/gengar/gmax/back.png b/graphics/pokemon/gengar/gigantamax/back.png similarity index 100% rename from graphics/pokemon/gengar/gmax/back.png rename to graphics/pokemon/gengar/gigantamax/back.png diff --git a/graphics/pokemon/gengar/gmax/front.png b/graphics/pokemon/gengar/gigantamax/front.png similarity index 100% rename from graphics/pokemon/gengar/gmax/front.png rename to graphics/pokemon/gengar/gigantamax/front.png diff --git a/graphics/pokemon/gengar/gmax/icon.png b/graphics/pokemon/gengar/gigantamax/icon.png similarity index 100% rename from graphics/pokemon/gengar/gmax/icon.png rename to graphics/pokemon/gengar/gigantamax/icon.png diff --git a/graphics/pokemon/gengar/gmax/normal.pal b/graphics/pokemon/gengar/gigantamax/normal.pal similarity index 100% rename from graphics/pokemon/gengar/gmax/normal.pal rename to graphics/pokemon/gengar/gigantamax/normal.pal diff --git a/graphics/pokemon/gengar/gmax/shiny.pal b/graphics/pokemon/gengar/gigantamax/shiny.pal similarity index 100% rename from graphics/pokemon/gengar/gmax/shiny.pal rename to graphics/pokemon/gengar/gigantamax/shiny.pal diff --git a/graphics/pokemon/grimmsnarl/gmax/back.png b/graphics/pokemon/grimmsnarl/gigantamax/back.png similarity index 100% rename from graphics/pokemon/grimmsnarl/gmax/back.png rename to graphics/pokemon/grimmsnarl/gigantamax/back.png diff --git a/graphics/pokemon/grimmsnarl/gmax/front.png b/graphics/pokemon/grimmsnarl/gigantamax/front.png similarity index 100% rename from graphics/pokemon/grimmsnarl/gmax/front.png rename to graphics/pokemon/grimmsnarl/gigantamax/front.png diff --git a/graphics/pokemon/grimmsnarl/gmax/icon.png b/graphics/pokemon/grimmsnarl/gigantamax/icon.png similarity index 100% rename from graphics/pokemon/grimmsnarl/gmax/icon.png rename to graphics/pokemon/grimmsnarl/gigantamax/icon.png diff --git a/graphics/pokemon/grimmsnarl/gmax/normal.pal b/graphics/pokemon/grimmsnarl/gigantamax/normal.pal similarity index 100% rename from graphics/pokemon/grimmsnarl/gmax/normal.pal rename to graphics/pokemon/grimmsnarl/gigantamax/normal.pal diff --git a/graphics/pokemon/grimmsnarl/gmax/shiny.pal b/graphics/pokemon/grimmsnarl/gigantamax/shiny.pal similarity index 100% rename from graphics/pokemon/grimmsnarl/gmax/shiny.pal rename to graphics/pokemon/grimmsnarl/gigantamax/shiny.pal diff --git a/graphics/pokemon/hatterene/gmax/back.png b/graphics/pokemon/hatterene/gigantamax/back.png similarity index 100% rename from graphics/pokemon/hatterene/gmax/back.png rename to graphics/pokemon/hatterene/gigantamax/back.png diff --git a/graphics/pokemon/hatterene/gmax/front.png b/graphics/pokemon/hatterene/gigantamax/front.png similarity index 100% rename from graphics/pokemon/hatterene/gmax/front.png rename to graphics/pokemon/hatterene/gigantamax/front.png diff --git a/graphics/pokemon/hatterene/gmax/icon.png b/graphics/pokemon/hatterene/gigantamax/icon.png similarity index 100% rename from graphics/pokemon/hatterene/gmax/icon.png rename to graphics/pokemon/hatterene/gigantamax/icon.png diff --git a/graphics/pokemon/hatterene/gmax/normal.pal b/graphics/pokemon/hatterene/gigantamax/normal.pal similarity index 100% rename from graphics/pokemon/hatterene/gmax/normal.pal rename to graphics/pokemon/hatterene/gigantamax/normal.pal diff --git a/graphics/pokemon/hatterene/gmax/shiny.pal b/graphics/pokemon/hatterene/gigantamax/shiny.pal similarity index 100% rename from graphics/pokemon/hatterene/gmax/shiny.pal rename to graphics/pokemon/hatterene/gigantamax/shiny.pal diff --git a/graphics/pokemon/inteleon/gmax/back.png b/graphics/pokemon/inteleon/gigantamax/back.png similarity index 100% rename from graphics/pokemon/inteleon/gmax/back.png rename to graphics/pokemon/inteleon/gigantamax/back.png diff --git a/graphics/pokemon/inteleon/gmax/front.png b/graphics/pokemon/inteleon/gigantamax/front.png similarity index 100% rename from graphics/pokemon/inteleon/gmax/front.png rename to graphics/pokemon/inteleon/gigantamax/front.png diff --git a/graphics/pokemon/inteleon/gmax/icon.png b/graphics/pokemon/inteleon/gigantamax/icon.png similarity index 100% rename from graphics/pokemon/inteleon/gmax/icon.png rename to graphics/pokemon/inteleon/gigantamax/icon.png diff --git a/graphics/pokemon/inteleon/gmax/normal.pal b/graphics/pokemon/inteleon/gigantamax/normal.pal similarity index 100% rename from graphics/pokemon/inteleon/gmax/normal.pal rename to graphics/pokemon/inteleon/gigantamax/normal.pal diff --git a/graphics/pokemon/inteleon/gmax/shiny.pal b/graphics/pokemon/inteleon/gigantamax/shiny.pal similarity index 100% rename from graphics/pokemon/inteleon/gmax/shiny.pal rename to graphics/pokemon/inteleon/gigantamax/shiny.pal diff --git a/graphics/pokemon/kingler/gmax/back.png b/graphics/pokemon/kingler/gigantamax/back.png similarity index 100% rename from graphics/pokemon/kingler/gmax/back.png rename to graphics/pokemon/kingler/gigantamax/back.png diff --git a/graphics/pokemon/kingler/gmax/front.png b/graphics/pokemon/kingler/gigantamax/front.png similarity index 100% rename from graphics/pokemon/kingler/gmax/front.png rename to graphics/pokemon/kingler/gigantamax/front.png diff --git a/graphics/pokemon/kingler/gmax/icon.png b/graphics/pokemon/kingler/gigantamax/icon.png similarity index 100% rename from graphics/pokemon/kingler/gmax/icon.png rename to graphics/pokemon/kingler/gigantamax/icon.png diff --git a/graphics/pokemon/kingler/gmax/normal.pal b/graphics/pokemon/kingler/gigantamax/normal.pal similarity index 100% rename from graphics/pokemon/kingler/gmax/normal.pal rename to graphics/pokemon/kingler/gigantamax/normal.pal diff --git a/graphics/pokemon/kingler/gmax/shiny.pal b/graphics/pokemon/kingler/gigantamax/shiny.pal similarity index 100% rename from graphics/pokemon/kingler/gmax/shiny.pal rename to graphics/pokemon/kingler/gigantamax/shiny.pal diff --git a/graphics/pokemon/lapras/gmax/back.png b/graphics/pokemon/lapras/gigantamax/back.png similarity index 100% rename from graphics/pokemon/lapras/gmax/back.png rename to graphics/pokemon/lapras/gigantamax/back.png diff --git a/graphics/pokemon/lapras/gmax/front.png b/graphics/pokemon/lapras/gigantamax/front.png similarity index 100% rename from graphics/pokemon/lapras/gmax/front.png rename to graphics/pokemon/lapras/gigantamax/front.png diff --git a/graphics/pokemon/lapras/gmax/icon.png b/graphics/pokemon/lapras/gigantamax/icon.png similarity index 100% rename from graphics/pokemon/lapras/gmax/icon.png rename to graphics/pokemon/lapras/gigantamax/icon.png diff --git a/graphics/pokemon/lapras/gmax/normal.pal b/graphics/pokemon/lapras/gigantamax/normal.pal similarity index 100% rename from graphics/pokemon/lapras/gmax/normal.pal rename to graphics/pokemon/lapras/gigantamax/normal.pal diff --git a/graphics/pokemon/lapras/gmax/shiny.pal b/graphics/pokemon/lapras/gigantamax/shiny.pal similarity index 100% rename from graphics/pokemon/lapras/gmax/shiny.pal rename to graphics/pokemon/lapras/gigantamax/shiny.pal diff --git a/graphics/pokemon/machamp/gmax/back.png b/graphics/pokemon/machamp/gigantamax/back.png similarity index 100% rename from graphics/pokemon/machamp/gmax/back.png rename to graphics/pokemon/machamp/gigantamax/back.png diff --git a/graphics/pokemon/machamp/gmax/front.png b/graphics/pokemon/machamp/gigantamax/front.png similarity index 100% rename from graphics/pokemon/machamp/gmax/front.png rename to graphics/pokemon/machamp/gigantamax/front.png diff --git a/graphics/pokemon/machamp/gmax/icon.png b/graphics/pokemon/machamp/gigantamax/icon.png similarity index 100% rename from graphics/pokemon/machamp/gmax/icon.png rename to graphics/pokemon/machamp/gigantamax/icon.png diff --git a/graphics/pokemon/machamp/gmax/normal.pal b/graphics/pokemon/machamp/gigantamax/normal.pal similarity index 100% rename from graphics/pokemon/machamp/gmax/normal.pal rename to graphics/pokemon/machamp/gigantamax/normal.pal diff --git a/graphics/pokemon/machamp/gmax/shiny.pal b/graphics/pokemon/machamp/gigantamax/shiny.pal similarity index 100% rename from graphics/pokemon/machamp/gmax/shiny.pal rename to graphics/pokemon/machamp/gigantamax/shiny.pal diff --git a/graphics/pokemon/melmetal/gmax/back.png b/graphics/pokemon/melmetal/gigantamax/back.png similarity index 100% rename from graphics/pokemon/melmetal/gmax/back.png rename to graphics/pokemon/melmetal/gigantamax/back.png diff --git a/graphics/pokemon/melmetal/gmax/front.png b/graphics/pokemon/melmetal/gigantamax/front.png similarity index 100% rename from graphics/pokemon/melmetal/gmax/front.png rename to graphics/pokemon/melmetal/gigantamax/front.png diff --git a/graphics/pokemon/melmetal/gmax/icon.png b/graphics/pokemon/melmetal/gigantamax/icon.png similarity index 100% rename from graphics/pokemon/melmetal/gmax/icon.png rename to graphics/pokemon/melmetal/gigantamax/icon.png diff --git a/graphics/pokemon/melmetal/gmax/normal.pal b/graphics/pokemon/melmetal/gigantamax/normal.pal similarity index 100% rename from graphics/pokemon/melmetal/gmax/normal.pal rename to graphics/pokemon/melmetal/gigantamax/normal.pal diff --git a/graphics/pokemon/melmetal/gmax/shiny.pal b/graphics/pokemon/melmetal/gigantamax/shiny.pal similarity index 100% rename from graphics/pokemon/melmetal/gmax/shiny.pal rename to graphics/pokemon/melmetal/gigantamax/shiny.pal diff --git a/graphics/pokemon/meowth/gmax/back.png b/graphics/pokemon/meowth/gigantamax/back.png similarity index 100% rename from graphics/pokemon/meowth/gmax/back.png rename to graphics/pokemon/meowth/gigantamax/back.png diff --git a/graphics/pokemon/meowth/gmax/front.png b/graphics/pokemon/meowth/gigantamax/front.png similarity index 100% rename from graphics/pokemon/meowth/gmax/front.png rename to graphics/pokemon/meowth/gigantamax/front.png diff --git a/graphics/pokemon/meowth/gmax/icon.png b/graphics/pokemon/meowth/gigantamax/icon.png similarity index 100% rename from graphics/pokemon/meowth/gmax/icon.png rename to graphics/pokemon/meowth/gigantamax/icon.png diff --git a/graphics/pokemon/meowth/gmax/normal.pal b/graphics/pokemon/meowth/gigantamax/normal.pal similarity index 100% rename from graphics/pokemon/meowth/gmax/normal.pal rename to graphics/pokemon/meowth/gigantamax/normal.pal diff --git a/graphics/pokemon/meowth/gmax/shiny.pal b/graphics/pokemon/meowth/gigantamax/shiny.pal similarity index 100% rename from graphics/pokemon/meowth/gmax/shiny.pal rename to graphics/pokemon/meowth/gigantamax/shiny.pal diff --git a/graphics/pokemon/orbeetle/gmax/back.png b/graphics/pokemon/orbeetle/gigantamax/back.png similarity index 100% rename from graphics/pokemon/orbeetle/gmax/back.png rename to graphics/pokemon/orbeetle/gigantamax/back.png diff --git a/graphics/pokemon/orbeetle/gmax/front.png b/graphics/pokemon/orbeetle/gigantamax/front.png similarity index 100% rename from graphics/pokemon/orbeetle/gmax/front.png rename to graphics/pokemon/orbeetle/gigantamax/front.png diff --git a/graphics/pokemon/orbeetle/gmax/icon.png b/graphics/pokemon/orbeetle/gigantamax/icon.png similarity index 100% rename from graphics/pokemon/orbeetle/gmax/icon.png rename to graphics/pokemon/orbeetle/gigantamax/icon.png diff --git a/graphics/pokemon/orbeetle/gmax/normal.pal b/graphics/pokemon/orbeetle/gigantamax/normal.pal similarity index 100% rename from graphics/pokemon/orbeetle/gmax/normal.pal rename to graphics/pokemon/orbeetle/gigantamax/normal.pal diff --git a/graphics/pokemon/orbeetle/gmax/shiny.pal b/graphics/pokemon/orbeetle/gigantamax/shiny.pal similarity index 100% rename from graphics/pokemon/orbeetle/gmax/shiny.pal rename to graphics/pokemon/orbeetle/gigantamax/shiny.pal diff --git a/graphics/pokemon/pikachu/gmax/back.png b/graphics/pokemon/pikachu/gigantamax/back.png similarity index 100% rename from graphics/pokemon/pikachu/gmax/back.png rename to graphics/pokemon/pikachu/gigantamax/back.png diff --git a/graphics/pokemon/pikachu/gmax/front.png b/graphics/pokemon/pikachu/gigantamax/front.png similarity index 100% rename from graphics/pokemon/pikachu/gmax/front.png rename to graphics/pokemon/pikachu/gigantamax/front.png diff --git a/graphics/pokemon/pikachu/gmax/icon.png b/graphics/pokemon/pikachu/gigantamax/icon.png similarity index 100% rename from graphics/pokemon/pikachu/gmax/icon.png rename to graphics/pokemon/pikachu/gigantamax/icon.png diff --git a/graphics/pokemon/pikachu/gmax/normal.pal b/graphics/pokemon/pikachu/gigantamax/normal.pal similarity index 100% rename from graphics/pokemon/pikachu/gmax/normal.pal rename to graphics/pokemon/pikachu/gigantamax/normal.pal diff --git a/graphics/pokemon/pikachu/gmax/shiny.pal b/graphics/pokemon/pikachu/gigantamax/shiny.pal similarity index 100% rename from graphics/pokemon/pikachu/gmax/shiny.pal rename to graphics/pokemon/pikachu/gigantamax/shiny.pal diff --git a/graphics/pokemon/rillaboom/gmax/back.png b/graphics/pokemon/rillaboom/gigantamax/back.png similarity index 100% rename from graphics/pokemon/rillaboom/gmax/back.png rename to graphics/pokemon/rillaboom/gigantamax/back.png diff --git a/graphics/pokemon/rillaboom/gmax/front.png b/graphics/pokemon/rillaboom/gigantamax/front.png similarity index 100% rename from graphics/pokemon/rillaboom/gmax/front.png rename to graphics/pokemon/rillaboom/gigantamax/front.png diff --git a/graphics/pokemon/rillaboom/gmax/icon.png b/graphics/pokemon/rillaboom/gigantamax/icon.png similarity index 100% rename from graphics/pokemon/rillaboom/gmax/icon.png rename to graphics/pokemon/rillaboom/gigantamax/icon.png diff --git a/graphics/pokemon/rillaboom/gmax/normal.pal b/graphics/pokemon/rillaboom/gigantamax/normal.pal similarity index 100% rename from graphics/pokemon/rillaboom/gmax/normal.pal rename to graphics/pokemon/rillaboom/gigantamax/normal.pal diff --git a/graphics/pokemon/rillaboom/gmax/shiny.pal b/graphics/pokemon/rillaboom/gigantamax/shiny.pal similarity index 100% rename from graphics/pokemon/rillaboom/gmax/shiny.pal rename to graphics/pokemon/rillaboom/gigantamax/shiny.pal diff --git a/graphics/pokemon/sandaconda/gmax/back.png b/graphics/pokemon/sandaconda/gigantamax/back.png similarity index 100% rename from graphics/pokemon/sandaconda/gmax/back.png rename to graphics/pokemon/sandaconda/gigantamax/back.png diff --git a/graphics/pokemon/sandaconda/gmax/front.png b/graphics/pokemon/sandaconda/gigantamax/front.png similarity index 100% rename from graphics/pokemon/sandaconda/gmax/front.png rename to graphics/pokemon/sandaconda/gigantamax/front.png diff --git a/graphics/pokemon/sandaconda/gmax/icon.png b/graphics/pokemon/sandaconda/gigantamax/icon.png similarity index 100% rename from graphics/pokemon/sandaconda/gmax/icon.png rename to graphics/pokemon/sandaconda/gigantamax/icon.png diff --git a/graphics/pokemon/sandaconda/gmax/normal.pal b/graphics/pokemon/sandaconda/gigantamax/normal.pal similarity index 100% rename from graphics/pokemon/sandaconda/gmax/normal.pal rename to graphics/pokemon/sandaconda/gigantamax/normal.pal diff --git a/graphics/pokemon/sandaconda/gmax/shiny.pal b/graphics/pokemon/sandaconda/gigantamax/shiny.pal similarity index 100% rename from graphics/pokemon/sandaconda/gmax/shiny.pal rename to graphics/pokemon/sandaconda/gigantamax/shiny.pal diff --git a/graphics/pokemon/snorlax/gmax/back.png b/graphics/pokemon/snorlax/gigantamax/back.png similarity index 100% rename from graphics/pokemon/snorlax/gmax/back.png rename to graphics/pokemon/snorlax/gigantamax/back.png diff --git a/graphics/pokemon/snorlax/gmax/front.png b/graphics/pokemon/snorlax/gigantamax/front.png similarity index 100% rename from graphics/pokemon/snorlax/gmax/front.png rename to graphics/pokemon/snorlax/gigantamax/front.png diff --git a/graphics/pokemon/snorlax/gmax/icon.png b/graphics/pokemon/snorlax/gigantamax/icon.png similarity index 100% rename from graphics/pokemon/snorlax/gmax/icon.png rename to graphics/pokemon/snorlax/gigantamax/icon.png diff --git a/graphics/pokemon/snorlax/gmax/normal.pal b/graphics/pokemon/snorlax/gigantamax/normal.pal similarity index 100% rename from graphics/pokemon/snorlax/gmax/normal.pal rename to graphics/pokemon/snorlax/gigantamax/normal.pal diff --git a/graphics/pokemon/snorlax/gmax/shiny.pal b/graphics/pokemon/snorlax/gigantamax/shiny.pal similarity index 100% rename from graphics/pokemon/snorlax/gmax/shiny.pal rename to graphics/pokemon/snorlax/gigantamax/shiny.pal diff --git a/graphics/pokemon/toxtricity/gmax/back.png b/graphics/pokemon/toxtricity/gigantamax/back.png similarity index 100% rename from graphics/pokemon/toxtricity/gmax/back.png rename to graphics/pokemon/toxtricity/gigantamax/back.png diff --git a/graphics/pokemon/toxtricity/gmax/front.png b/graphics/pokemon/toxtricity/gigantamax/front.png similarity index 100% rename from graphics/pokemon/toxtricity/gmax/front.png rename to graphics/pokemon/toxtricity/gigantamax/front.png diff --git a/graphics/pokemon/toxtricity/gmax/icon.png b/graphics/pokemon/toxtricity/gigantamax/icon.png similarity index 100% rename from graphics/pokemon/toxtricity/gmax/icon.png rename to graphics/pokemon/toxtricity/gigantamax/icon.png diff --git a/graphics/pokemon/toxtricity/gmax/normal.pal b/graphics/pokemon/toxtricity/gigantamax/normal.pal similarity index 100% rename from graphics/pokemon/toxtricity/gmax/normal.pal rename to graphics/pokemon/toxtricity/gigantamax/normal.pal diff --git a/graphics/pokemon/toxtricity/gmax/shiny.pal b/graphics/pokemon/toxtricity/gigantamax/shiny.pal similarity index 100% rename from graphics/pokemon/toxtricity/gmax/shiny.pal rename to graphics/pokemon/toxtricity/gigantamax/shiny.pal diff --git a/graphics/pokemon/urshifu/gmax_rapid_strike_style/back.png b/graphics/pokemon/urshifu/rapid_strike_style_gigantamax/back.png similarity index 100% rename from graphics/pokemon/urshifu/gmax_rapid_strike_style/back.png rename to graphics/pokemon/urshifu/rapid_strike_style_gigantamax/back.png diff --git a/graphics/pokemon/urshifu/gmax_rapid_strike_style/front.png b/graphics/pokemon/urshifu/rapid_strike_style_gigantamax/front.png similarity index 100% rename from graphics/pokemon/urshifu/gmax_rapid_strike_style/front.png rename to graphics/pokemon/urshifu/rapid_strike_style_gigantamax/front.png diff --git a/graphics/pokemon/urshifu/gmax_rapid_strike_style/icon.png b/graphics/pokemon/urshifu/rapid_strike_style_gigantamax/icon.png similarity index 100% rename from graphics/pokemon/urshifu/gmax_rapid_strike_style/icon.png rename to graphics/pokemon/urshifu/rapid_strike_style_gigantamax/icon.png diff --git a/graphics/pokemon/urshifu/gmax_rapid_strike_style/normal.pal b/graphics/pokemon/urshifu/rapid_strike_style_gigantamax/normal.pal similarity index 100% rename from graphics/pokemon/urshifu/gmax_rapid_strike_style/normal.pal rename to graphics/pokemon/urshifu/rapid_strike_style_gigantamax/normal.pal diff --git a/graphics/pokemon/urshifu/gmax_rapid_strike_style/shiny.pal b/graphics/pokemon/urshifu/rapid_strike_style_gigantamax/shiny.pal similarity index 100% rename from graphics/pokemon/urshifu/gmax_rapid_strike_style/shiny.pal rename to graphics/pokemon/urshifu/rapid_strike_style_gigantamax/shiny.pal diff --git a/graphics/pokemon/urshifu/gmax/back.png b/graphics/pokemon/urshifu/single_strike_style_gigantamax/back.png similarity index 100% rename from graphics/pokemon/urshifu/gmax/back.png rename to graphics/pokemon/urshifu/single_strike_style_gigantamax/back.png diff --git a/graphics/pokemon/urshifu/gmax/front.png b/graphics/pokemon/urshifu/single_strike_style_gigantamax/front.png similarity index 100% rename from graphics/pokemon/urshifu/gmax/front.png rename to graphics/pokemon/urshifu/single_strike_style_gigantamax/front.png diff --git a/graphics/pokemon/urshifu/gmax/icon.png b/graphics/pokemon/urshifu/single_strike_style_gigantamax/icon.png similarity index 100% rename from graphics/pokemon/urshifu/gmax/icon.png rename to graphics/pokemon/urshifu/single_strike_style_gigantamax/icon.png diff --git a/graphics/pokemon/urshifu/gmax/normal.pal b/graphics/pokemon/urshifu/single_strike_style_gigantamax/normal.pal similarity index 100% rename from graphics/pokemon/urshifu/gmax/normal.pal rename to graphics/pokemon/urshifu/single_strike_style_gigantamax/normal.pal diff --git a/graphics/pokemon/urshifu/gmax/shiny.pal b/graphics/pokemon/urshifu/single_strike_style_gigantamax/shiny.pal similarity index 100% rename from graphics/pokemon/urshifu/gmax/shiny.pal rename to graphics/pokemon/urshifu/single_strike_style_gigantamax/shiny.pal diff --git a/graphics/pokemon/venusaur/gmax/back.png b/graphics/pokemon/venusaur/gigantamax/back.png similarity index 100% rename from graphics/pokemon/venusaur/gmax/back.png rename to graphics/pokemon/venusaur/gigantamax/back.png diff --git a/graphics/pokemon/venusaur/gmax/front.png b/graphics/pokemon/venusaur/gigantamax/front.png similarity index 100% rename from graphics/pokemon/venusaur/gmax/front.png rename to graphics/pokemon/venusaur/gigantamax/front.png diff --git a/graphics/pokemon/venusaur/gmax/icon.png b/graphics/pokemon/venusaur/gigantamax/icon.png similarity index 100% rename from graphics/pokemon/venusaur/gmax/icon.png rename to graphics/pokemon/venusaur/gigantamax/icon.png diff --git a/graphics/pokemon/venusaur/gmax/normal.pal b/graphics/pokemon/venusaur/gigantamax/normal.pal similarity index 100% rename from graphics/pokemon/venusaur/gmax/normal.pal rename to graphics/pokemon/venusaur/gigantamax/normal.pal diff --git a/graphics/pokemon/venusaur/gmax/shiny.pal b/graphics/pokemon/venusaur/gigantamax/shiny.pal similarity index 100% rename from graphics/pokemon/venusaur/gmax/shiny.pal rename to graphics/pokemon/venusaur/gigantamax/shiny.pal diff --git a/include/config/battle.h b/include/config/battle.h index a5c16d2591..fce8c196ef 100644 --- a/include/config/battle.h +++ b/include/config/battle.h @@ -160,7 +160,7 @@ #define B_FLAG_NO_BAG_USE 0 // If this flag is set, the ability to use the bag in battle is disabled. #define B_FLAG_NO_CATCHING 0 // If this flag is set, the ability to catch wild Pokémon is disabled. #define B_FLAG_AI_VS_AI_BATTLE 0 // If this flag is set, the player's mons will be controlled by the ai next battles. -#define B_FLAG_DYNAMAX_BATTLE 0 // If this flag is set, the ability to Dynamax in battle is enabled for all trainers. +#define B_FLAG_DYNAMAX_BATTLE FLAG_UNUSED_0x020 // If this flag is set, the ability to Dynamax in battle is enabled for all trainers. // Var Settings // To use the following features in scripting, replace the 0s with the var ID you're assigning it to. diff --git a/include/constants/species.h b/include/constants/species.h index 471f9e38a8..2b41b32ea9 100644 --- a/include/constants/species.h +++ b/include/constants/species.h @@ -1372,42 +1372,42 @@ #define SPECIES_BASCULEGION_FEMALE FORMS_START + 329 // Gigantamax Forms -#define SPECIES_VENUSAUR_GMAX FORMS_START + 330 -#define SPECIES_BLASTOISE_GMAX FORMS_START + 331 -#define SPECIES_CHARIZARD_GMAX FORMS_START + 332 -#define SPECIES_BUTTERFREE_GMAX FORMS_START + 333 -#define SPECIES_PIKACHU_GMAX FORMS_START + 334 -#define SPECIES_MEOWTH_GMAX FORMS_START + 335 -#define SPECIES_MACHAMP_GMAX FORMS_START + 336 -#define SPECIES_GENGAR_GMAX FORMS_START + 337 -#define SPECIES_KINGLER_GMAX FORMS_START + 338 -#define SPECIES_LAPRAS_GMAX FORMS_START + 339 -#define SPECIES_EEVEE_GMAX FORMS_START + 340 -#define SPECIES_SNORLAX_GMAX FORMS_START + 341 -#define SPECIES_GARBODOR_GMAX FORMS_START + 342 -#define SPECIES_MELMETAL_GMAX FORMS_START + 343 -#define SPECIES_RILLABOOM_GMAX FORMS_START + 344 -#define SPECIES_CINDERACE_GMAX FORMS_START + 345 -#define SPECIES_INTELEON_GMAX FORMS_START + 346 -#define SPECIES_CORVIKNIGHT_GMAX FORMS_START + 347 -#define SPECIES_ORBEETLE_GMAX FORMS_START + 348 -#define SPECIES_DREDNAW_GMAX FORMS_START + 349 -#define SPECIES_COALOSSAL_GMAX FORMS_START + 350 -#define SPECIES_FLAPPLE_GMAX FORMS_START + 351 -#define SPECIES_APPLETUN_GMAX FORMS_START + 352 -#define SPECIES_SANDACONDA_GMAX FORMS_START + 353 -#define SPECIES_TOXTRICITY_GMAX FORMS_START + 354 -#define SPECIES_CENTISKORCH_GMAX FORMS_START + 355 -#define SPECIES_HATTERENE_GMAX FORMS_START + 356 -#define SPECIES_GRIMMSNARL_GMAX FORMS_START + 357 -#define SPECIES_ALCREMIE_GMAX FORMS_START + 358 -#define SPECIES_COPPERAJAH_GMAX FORMS_START + 359 -#define SPECIES_DURALUDON_GMAX FORMS_START + 360 -#define SPECIES_URSHIFU_GMAX FORMS_START + 361 -#define SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GMAX FORMS_START + 362 +#define SPECIES_VENUSAUR_GIGANTAMAX FORMS_START + 330 +#define SPECIES_BLASTOISE_GIGANTAMAX FORMS_START + 331 +#define SPECIES_CHARIZARD_GIGANTAMAX FORMS_START + 332 +#define SPECIES_BUTTERFREE_GIGANTAMAX FORMS_START + 333 +#define SPECIES_PIKACHU_GIGANTAMAX FORMS_START + 334 +#define SPECIES_MEOWTH_GIGANTAMAX FORMS_START + 335 +#define SPECIES_MACHAMP_GIGANTAMAX FORMS_START + 336 +#define SPECIES_GENGAR_GIGANTAMAX FORMS_START + 337 +#define SPECIES_KINGLER_GIGANTAMAX FORMS_START + 338 +#define SPECIES_LAPRAS_GIGANTAMAX FORMS_START + 339 +#define SPECIES_EEVEE_GIGANTAMAX FORMS_START + 340 +#define SPECIES_SNORLAX_GIGANTAMAX FORMS_START + 341 +#define SPECIES_GARBODOR_GIGANTAMAX FORMS_START + 342 +#define SPECIES_MELMETAL_GIGANTAMAX FORMS_START + 343 +#define SPECIES_RILLABOOM_GIGANTAMAX FORMS_START + 344 +#define SPECIES_CINDERACE_GIGANTAMAX FORMS_START + 345 +#define SPECIES_INTELEON_GIGANTAMAX FORMS_START + 346 +#define SPECIES_CORVIKNIGHT_GIGANTAMAX FORMS_START + 347 +#define SPECIES_ORBEETLE_GIGANTAMAX FORMS_START + 348 +#define SPECIES_DREDNAW_GIGANTAMAX FORMS_START + 349 +#define SPECIES_COALOSSAL_GIGANTAMAX FORMS_START + 350 +#define SPECIES_FLAPPLE_GIGANTAMAX FORMS_START + 351 +#define SPECIES_APPLETUN_GIGANTAMAX FORMS_START + 352 +#define SPECIES_SANDACONDA_GIGANTAMAX FORMS_START + 353 +#define SPECIES_TOXTRICITY_GIGANTAMAX FORMS_START + 354 +#define SPECIES_CENTISKORCH_GIGANTAMAX FORMS_START + 355 +#define SPECIES_HATTERENE_GIGANTAMAX FORMS_START + 356 +#define SPECIES_GRIMMSNARL_GIGANTAMAX FORMS_START + 357 +#define SPECIES_ALCREMIE_GIGANTAMAX FORMS_START + 358 +#define SPECIES_COPPERAJAH_GIGANTAMAX FORMS_START + 359 +#define SPECIES_DURALUDON_GIGANTAMAX FORMS_START + 360 +#define SPECIES_URSHIFU_GIGANTAMAX FORMS_START + 361 +#define SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX FORMS_START + 362 #define FORMS_START SPECIES_ENAMORUS -#define SPECIES_EGG SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GMAX + 1 +#define SPECIES_EGG SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX + 1 #define NUM_SPECIES SPECIES_EGG diff --git a/include/graphics.h b/include/graphics.h index 4b0ff29107..ba84769f22 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -2643,39 +2643,39 @@ extern const u32 gMonBackPic_CalyrexIceRider[]; extern const u32 gMonBackPic_CalyrexShadowRider[]; extern const u32 gMonBackPic_EnamorusTherian[]; extern const u32 gMonBackPic_BasculegionFemale[]; -extern const u32 gMonBackPic_VenusaurGmax[]; -extern const u32 gMonBackPic_CharizardGmax[]; -extern const u32 gMonBackPic_BlastoiseGmax[]; -extern const u32 gMonBackPic_ButterfreeGmax[]; -extern const u32 gMonBackPic_PikachuGmax[]; -extern const u32 gMonBackPic_MeowthGmax[]; -extern const u32 gMonBackPic_MachampGmax[]; -extern const u32 gMonBackPic_GengarGmax[]; -extern const u32 gMonBackPic_KinglerGmax[]; -extern const u32 gMonBackPic_LaprasGmax[]; -extern const u32 gMonBackPic_EeveeGmax[]; -extern const u32 gMonBackPic_SnorlaxGmax[]; -extern const u32 gMonBackPic_GarbodorGmax[]; -extern const u32 gMonBackPic_MelmetalGmax[]; -extern const u32 gMonBackPic_RillaboomGmax[]; -extern const u32 gMonBackPic_CinderaceGmax[]; -extern const u32 gMonBackPic_InteleonGmax[]; -extern const u32 gMonBackPic_CorviknightGmax[]; -extern const u32 gMonBackPic_OrbeetleGmax[]; -extern const u32 gMonBackPic_DrednawGmax[]; -extern const u32 gMonBackPic_CoalossalGmax[]; -extern const u32 gMonBackPic_FlappleGmax[]; -extern const u32 gMonBackPic_AppletunGmax[]; -extern const u32 gMonBackPic_SandacondaGmax[]; -extern const u32 gMonBackPic_ToxtricityGmax[]; -extern const u32 gMonBackPic_CentiskorchGmax[]; -extern const u32 gMonBackPic_HattereneGmax[]; -extern const u32 gMonBackPic_GrimmsnarlGmax[]; -extern const u32 gMonBackPic_AlcremieGmax[]; -extern const u32 gMonBackPic_CopperajahGmax[]; -extern const u32 gMonBackPic_DuraludonGmax[]; -extern const u32 gMonBackPic_UrshifuGmax[]; -extern const u32 gMonBackPic_UrshifuRapidStrikeGmax[]; +extern const u32 gMonBackPic_VenusaurGigantamax[]; +extern const u32 gMonBackPic_CharizardGigantamax[]; +extern const u32 gMonBackPic_BlastoiseGigantamax[]; +extern const u32 gMonBackPic_ButterfreeGigantamax[]; +extern const u32 gMonBackPic_PikachuGigantamax[]; +extern const u32 gMonBackPic_MeowthGigantamax[]; +extern const u32 gMonBackPic_MachampGigantamax[]; +extern const u32 gMonBackPic_GengarGigantamax[]; +extern const u32 gMonBackPic_KinglerGigantamax[]; +extern const u32 gMonBackPic_LaprasGigantamax[]; +extern const u32 gMonBackPic_EeveeGigantamax[]; +extern const u32 gMonBackPic_SnorlaxGigantamax[]; +extern const u32 gMonBackPic_GarbodorGigantamax[]; +extern const u32 gMonBackPic_MelmetalGigantamax[]; +extern const u32 gMonBackPic_RillaboomGigantamax[]; +extern const u32 gMonBackPic_CinderaceGigantamax[]; +extern const u32 gMonBackPic_InteleonGigantamax[]; +extern const u32 gMonBackPic_CorviknightGigantamax[]; +extern const u32 gMonBackPic_OrbeetleGigantamax[]; +extern const u32 gMonBackPic_DrednawGigantamax[]; +extern const u32 gMonBackPic_CoalossalGigantamax[]; +extern const u32 gMonBackPic_FlappleGigantamax[]; +extern const u32 gMonBackPic_AppletunGigantamax[]; +extern const u32 gMonBackPic_SandacondaGigantamax[]; +extern const u32 gMonBackPic_ToxtricityGigantamax[]; +extern const u32 gMonBackPic_CentiskorchGigantamax[]; +extern const u32 gMonBackPic_HattereneGigantamax[]; +extern const u32 gMonBackPic_GrimmsnarlGigantamax[]; +extern const u32 gMonBackPic_AlcremieGigantamax[]; +extern const u32 gMonBackPic_CopperajahGigantamax[]; +extern const u32 gMonBackPic_DuraludonGigantamax[]; +extern const u32 gMonBackPic_UrshifuGigantamax[]; +extern const u32 gMonBackPic_UrshifuRapidStrikeGigantamax[]; #endif extern const u32 gMonPalette_CircledQuestionMark[]; @@ -3908,39 +3908,39 @@ extern const u32 gMonPalette_CalyrexIceRider[]; extern const u32 gMonPalette_CalyrexShadowRider[]; extern const u32 gMonPalette_EnamorusTherian[]; extern const u32 gMonPalette_BasculegionFemale[]; -extern const u32 gMonPalette_VenusaurGmax[]; -extern const u32 gMonPalette_CharizardGmax[]; -extern const u32 gMonPalette_BlastoiseGmax[]; -extern const u32 gMonPalette_ButterfreeGmax[]; -extern const u32 gMonPalette_PikachuGmax[]; -extern const u32 gMonPalette_MeowthGmax[]; -extern const u32 gMonPalette_MachampGmax[]; -extern const u32 gMonPalette_GengarGmax[]; -extern const u32 gMonPalette_KinglerGmax[]; -extern const u32 gMonPalette_LaprasGmax[]; -extern const u32 gMonPalette_EeveeGmax[]; -extern const u32 gMonPalette_SnorlaxGmax[]; -extern const u32 gMonPalette_GarbodorGmax[]; -extern const u32 gMonPalette_MelmetalGmax[]; -extern const u32 gMonPalette_RillaboomGmax[]; -extern const u32 gMonPalette_CinderaceGmax[]; -extern const u32 gMonPalette_InteleonGmax[]; -extern const u32 gMonPalette_CorviknightGmax[]; -extern const u32 gMonPalette_OrbeetleGmax[]; -extern const u32 gMonPalette_DrednawGmax[]; -extern const u32 gMonPalette_CoalossalGmax[]; -extern const u32 gMonPalette_FlappleGmax[]; -extern const u32 gMonPalette_AppletunGmax[]; -extern const u32 gMonPalette_SandacondaGmax[]; -extern const u32 gMonPalette_ToxtricityGmax[]; -extern const u32 gMonPalette_CentiskorchGmax[]; -extern const u32 gMonPalette_HattereneGmax[]; -extern const u32 gMonPalette_GrimmsnarlGmax[]; -extern const u32 gMonPalette_AlcremieGmax[]; -extern const u32 gMonPalette_CopperajahGmax[]; -extern const u32 gMonPalette_DuraludonGmax[]; -extern const u32 gMonPalette_UrshifuGmax[]; -extern const u32 gMonPalette_UrshifuRapidStrikeGmax[]; +extern const u32 gMonPalette_VenusaurGigantamax[]; +extern const u32 gMonPalette_CharizardGigantamax[]; +extern const u32 gMonPalette_BlastoiseGigantamax[]; +extern const u32 gMonPalette_ButterfreeGigantamax[]; +extern const u32 gMonPalette_PikachuGigantamax[]; +extern const u32 gMonPalette_MeowthGigantamax[]; +extern const u32 gMonPalette_MachampGigantamax[]; +extern const u32 gMonPalette_GengarGigantamax[]; +extern const u32 gMonPalette_KinglerGigantamax[]; +extern const u32 gMonPalette_LaprasGigantamax[]; +extern const u32 gMonPalette_EeveeGigantamax[]; +extern const u32 gMonPalette_SnorlaxGigantamax[]; +extern const u32 gMonPalette_GarbodorGigantamax[]; +extern const u32 gMonPalette_MelmetalGigantamax[]; +extern const u32 gMonPalette_RillaboomGigantamax[]; +extern const u32 gMonPalette_CinderaceGigantamax[]; +extern const u32 gMonPalette_InteleonGigantamax[]; +extern const u32 gMonPalette_CorviknightGigantamax[]; +extern const u32 gMonPalette_OrbeetleGigantamax[]; +extern const u32 gMonPalette_DrednawGigantamax[]; +extern const u32 gMonPalette_CoalossalGigantamax[]; +extern const u32 gMonPalette_FlappleGigantamax[]; +extern const u32 gMonPalette_AppletunGigantamax[]; +extern const u32 gMonPalette_SandacondaGigantamax[]; +extern const u32 gMonPalette_ToxtricityGigantamax[]; +extern const u32 gMonPalette_CentiskorchGigantamax[]; +extern const u32 gMonPalette_HattereneGigantamax[]; +extern const u32 gMonPalette_GrimmsnarlGigantamax[]; +extern const u32 gMonPalette_AlcremieGigantamax[]; +extern const u32 gMonPalette_CopperajahGigantamax[]; +extern const u32 gMonPalette_DuraludonGigantamax[]; +extern const u32 gMonPalette_UrshifuGigantamax[]; +extern const u32 gMonPalette_UrshifuRapidStrikeGigantamax[]; #endif extern const u32 gMonPalette_Egg[]; @@ -5168,39 +5168,39 @@ extern const u32 gMonShinyPalette_CalyrexIceRider[]; extern const u32 gMonShinyPalette_CalyrexShadowRider[]; extern const u32 gMonShinyPalette_EnamorusTherian[]; extern const u32 gMonShinyPalette_BasculegionFemale[]; -extern const u32 gMonShinyPalette_VenusaurGmax[]; -extern const u32 gMonShinyPalette_CharizardGmax[]; -extern const u32 gMonShinyPalette_BlastoiseGmax[]; -extern const u32 gMonShinyPalette_ButterfreeGmax[]; -extern const u32 gMonShinyPalette_PikachuGmax[]; -extern const u32 gMonShinyPalette_MeowthGmax[]; -extern const u32 gMonShinyPalette_MachampGmax[]; -extern const u32 gMonShinyPalette_GengarGmax[]; -extern const u32 gMonShinyPalette_KinglerGmax[]; -extern const u32 gMonShinyPalette_LaprasGmax[]; -extern const u32 gMonShinyPalette_EeveeGmax[]; -extern const u32 gMonShinyPalette_SnorlaxGmax[]; -extern const u32 gMonShinyPalette_GarbodorGmax[]; -extern const u32 gMonShinyPalette_MelmetalGmax[]; -extern const u32 gMonShinyPalette_RillaboomGmax[]; -extern const u32 gMonShinyPalette_CinderaceGmax[]; -extern const u32 gMonShinyPalette_InteleonGmax[]; -extern const u32 gMonShinyPalette_CorviknightGmax[]; -extern const u32 gMonShinyPalette_OrbeetleGmax[]; -extern const u32 gMonShinyPalette_DrednawGmax[]; -extern const u32 gMonShinyPalette_CoalossalGmax[]; -extern const u32 gMonShinyPalette_FlappleGmax[]; -extern const u32 gMonShinyPalette_AppletunGmax[]; -extern const u32 gMonShinyPalette_SandacondaGmax[]; -extern const u32 gMonShinyPalette_ToxtricityGmax[]; -extern const u32 gMonShinyPalette_CentiskorchGmax[]; -extern const u32 gMonShinyPalette_HattereneGmax[]; -extern const u32 gMonShinyPalette_GrimmsnarlGmax[]; -extern const u32 gMonShinyPalette_AlcremieGmax[]; -extern const u32 gMonShinyPalette_CopperajahGmax[]; -extern const u32 gMonShinyPalette_DuraludonGmax[]; -extern const u32 gMonShinyPalette_UrshifuGmax[]; -extern const u32 gMonShinyPalette_UrshifuRapidStrikeGmax[]; +extern const u32 gMonShinyPalette_VenusaurGigantamax[]; +extern const u32 gMonShinyPalette_CharizardGigantamax[]; +extern const u32 gMonShinyPalette_BlastoiseGigantamax[]; +extern const u32 gMonShinyPalette_ButterfreeGigantamax[]; +extern const u32 gMonShinyPalette_PikachuGigantamax[]; +extern const u32 gMonShinyPalette_MeowthGigantamax[]; +extern const u32 gMonShinyPalette_MachampGigantamax[]; +extern const u32 gMonShinyPalette_GengarGigantamax[]; +extern const u32 gMonShinyPalette_KinglerGigantamax[]; +extern const u32 gMonShinyPalette_LaprasGigantamax[]; +extern const u32 gMonShinyPalette_EeveeGigantamax[]; +extern const u32 gMonShinyPalette_SnorlaxGigantamax[]; +extern const u32 gMonShinyPalette_GarbodorGigantamax[]; +extern const u32 gMonShinyPalette_MelmetalGigantamax[]; +extern const u32 gMonShinyPalette_RillaboomGigantamax[]; +extern const u32 gMonShinyPalette_CinderaceGigantamax[]; +extern const u32 gMonShinyPalette_InteleonGigantamax[]; +extern const u32 gMonShinyPalette_CorviknightGigantamax[]; +extern const u32 gMonShinyPalette_OrbeetleGigantamax[]; +extern const u32 gMonShinyPalette_DrednawGigantamax[]; +extern const u32 gMonShinyPalette_CoalossalGigantamax[]; +extern const u32 gMonShinyPalette_FlappleGigantamax[]; +extern const u32 gMonShinyPalette_AppletunGigantamax[]; +extern const u32 gMonShinyPalette_SandacondaGigantamax[]; +extern const u32 gMonShinyPalette_ToxtricityGigantamax[]; +extern const u32 gMonShinyPalette_CentiskorchGigantamax[]; +extern const u32 gMonShinyPalette_HattereneGigantamax[]; +extern const u32 gMonShinyPalette_GrimmsnarlGigantamax[]; +extern const u32 gMonShinyPalette_AlcremieGigantamax[]; +extern const u32 gMonShinyPalette_CopperajahGigantamax[]; +extern const u32 gMonShinyPalette_DuraludonGigantamax[]; +extern const u32 gMonShinyPalette_UrshifuGigantamax[]; +extern const u32 gMonShinyPalette_UrshifuRapidStrikeGigantamax[]; #endif extern const u8 gMonIcon_QuestionMark[]; @@ -6421,39 +6421,39 @@ extern const u8 gMonIcon_CalyrexIceRider[]; extern const u8 gMonIcon_CalyrexShadowRider[]; extern const u8 gMonIcon_EnamorusTherian[]; extern const u8 gMonIcon_BasculegionFemale[]; -extern const u8 gMonIcon_VenusaurGmax[]; -extern const u8 gMonIcon_CharizardGmax[]; -extern const u8 gMonIcon_BlastoiseGmax[]; -extern const u8 gMonIcon_ButterfreeGmax[]; -extern const u8 gMonIcon_PikachuGmax[]; -extern const u8 gMonIcon_MeowthGmax[]; -extern const u8 gMonIcon_MachampGmax[]; -extern const u8 gMonIcon_GengarGmax[]; -extern const u8 gMonIcon_KinglerGmax[]; -extern const u8 gMonIcon_LaprasGmax[]; -extern const u8 gMonIcon_EeveeGmax[]; -extern const u8 gMonIcon_SnorlaxGmax[]; -extern const u8 gMonIcon_GarbodorGmax[]; -extern const u8 gMonIcon_MelmetalGmax[]; -extern const u8 gMonIcon_RillaboomGmax[]; -extern const u8 gMonIcon_CinderaceGmax[]; -extern const u8 gMonIcon_InteleonGmax[]; -extern const u8 gMonIcon_CorviknightGmax[]; -extern const u8 gMonIcon_OrbeetleGmax[]; -extern const u8 gMonIcon_DrednawGmax[]; -extern const u8 gMonIcon_CoalossalGmax[]; -extern const u8 gMonIcon_FlappleGmax[]; -extern const u8 gMonIcon_AppletunGmax[]; -extern const u8 gMonIcon_SandacondaGmax[]; -extern const u8 gMonIcon_ToxtricityGmax[]; -extern const u8 gMonIcon_CentiskorchGmax[]; -extern const u8 gMonIcon_HattereneGmax[]; -extern const u8 gMonIcon_GrimmsnarlGmax[]; -extern const u8 gMonIcon_AlcremieGmax[]; -extern const u8 gMonIcon_CopperajahGmax[]; -extern const u8 gMonIcon_DuraludonGmax[]; -extern const u8 gMonIcon_UrshifuGmax[]; -extern const u8 gMonIcon_UrshifuRapidStrikeGmax[]; +extern const u8 gMonIcon_VenusaurGigantamax[]; +extern const u8 gMonIcon_CharizardGigantamax[]; +extern const u8 gMonIcon_BlastoiseGigantamax[]; +extern const u8 gMonIcon_ButterfreeGigantamax[]; +extern const u8 gMonIcon_PikachuGigantamax[]; +extern const u8 gMonIcon_MeowthGigantamax[]; +extern const u8 gMonIcon_MachampGigantamax[]; +extern const u8 gMonIcon_GengarGigantamax[]; +extern const u8 gMonIcon_KinglerGigantamax[]; +extern const u8 gMonIcon_LaprasGigantamax[]; +extern const u8 gMonIcon_EeveeGigantamax[]; +extern const u8 gMonIcon_SnorlaxGigantamax[]; +extern const u8 gMonIcon_GarbodorGigantamax[]; +extern const u8 gMonIcon_MelmetalGigantamax[]; +extern const u8 gMonIcon_RillaboomGigantamax[]; +extern const u8 gMonIcon_CinderaceGigantamax[]; +extern const u8 gMonIcon_InteleonGigantamax[]; +extern const u8 gMonIcon_CorviknightGigantamax[]; +extern const u8 gMonIcon_OrbeetleGigantamax[]; +extern const u8 gMonIcon_DrednawGigantamax[]; +extern const u8 gMonIcon_CoalossalGigantamax[]; +extern const u8 gMonIcon_FlappleGigantamax[]; +extern const u8 gMonIcon_AppletunGigantamax[]; +extern const u8 gMonIcon_SandacondaGigantamax[]; +extern const u8 gMonIcon_ToxtricityGigantamax[]; +extern const u8 gMonIcon_CentiskorchGigantamax[]; +extern const u8 gMonIcon_HattereneGigantamax[]; +extern const u8 gMonIcon_GrimmsnarlGigantamax[]; +extern const u8 gMonIcon_AlcremieGigantamax[]; +extern const u8 gMonIcon_CopperajahGigantamax[]; +extern const u8 gMonIcon_DuraludonGigantamax[]; +extern const u8 gMonIcon_UrshifuGigantamax[]; +extern const u8 gMonIcon_UrshifuRapidStrikeGigantamax[]; #endif extern const u8 gMonIcon_Egg[]; @@ -7372,39 +7372,39 @@ extern const u8 gMonFootprint_Calyrex[]; //extern const u8 gMonFootprint_Sneasler[]; //extern const u8 gMonFootprint_Overqwil[]; //extern const u8 gMonFootprint_Enamorus[]; -extern const u32 gMonFrontPic_VenusaurGmax[]; -extern const u32 gMonFrontPic_CharizardGmax[]; -extern const u32 gMonFrontPic_BlastoiseGmax[]; -extern const u32 gMonFrontPic_ButterfreeGmax[]; -extern const u32 gMonFrontPic_PikachuGmax[]; -extern const u32 gMonFrontPic_MeowthGmax[]; -extern const u32 gMonFrontPic_MachampGmax[]; -extern const u32 gMonFrontPic_GengarGmax[]; -extern const u32 gMonFrontPic_KinglerGmax[]; -extern const u32 gMonFrontPic_LaprasGmax[]; -extern const u32 gMonFrontPic_EeveeGmax[]; -extern const u32 gMonFrontPic_SnorlaxGmax[]; -extern const u32 gMonFrontPic_GarbodorGmax[]; -extern const u32 gMonFrontPic_MelmetalGmax[]; -extern const u32 gMonFrontPic_RillaboomGmax[]; -extern const u32 gMonFrontPic_CinderaceGmax[]; -extern const u32 gMonFrontPic_InteleonGmax[]; -extern const u32 gMonFrontPic_CorviknightGmax[]; -extern const u32 gMonFrontPic_OrbeetleGmax[]; -extern const u32 gMonFrontPic_DrednawGmax[]; -extern const u32 gMonFrontPic_CoalossalGmax[]; -extern const u32 gMonFrontPic_FlappleGmax[]; -extern const u32 gMonFrontPic_AppletunGmax[]; -extern const u32 gMonFrontPic_SandacondaGmax[]; -extern const u32 gMonFrontPic_ToxtricityGmax[]; -extern const u32 gMonFrontPic_CentiskorchGmax[]; -extern const u32 gMonFrontPic_HattereneGmax[]; -extern const u32 gMonFrontPic_GrimmsnarlGmax[]; -extern const u32 gMonFrontPic_AlcremieGmax[]; -extern const u32 gMonFrontPic_CopperajahGmax[]; -extern const u32 gMonFrontPic_DuraludonGmax[]; -extern const u32 gMonFrontPic_UrshifuGmax[]; -extern const u32 gMonFrontPic_UrshifuRapidStrikeGmax[]; +extern const u32 gMonFrontPic_VenusaurGigantamax[]; +extern const u32 gMonFrontPic_CharizardGigantamax[]; +extern const u32 gMonFrontPic_BlastoiseGigantamax[]; +extern const u32 gMonFrontPic_ButterfreeGigantamax[]; +extern const u32 gMonFrontPic_PikachuGigantamax[]; +extern const u32 gMonFrontPic_MeowthGigantamax[]; +extern const u32 gMonFrontPic_MachampGigantamax[]; +extern const u32 gMonFrontPic_GengarGigantamax[]; +extern const u32 gMonFrontPic_KinglerGigantamax[]; +extern const u32 gMonFrontPic_LaprasGigantamax[]; +extern const u32 gMonFrontPic_EeveeGigantamax[]; +extern const u32 gMonFrontPic_SnorlaxGigantamax[]; +extern const u32 gMonFrontPic_GarbodorGigantamax[]; +extern const u32 gMonFrontPic_MelmetalGigantamax[]; +extern const u32 gMonFrontPic_RillaboomGigantamax[]; +extern const u32 gMonFrontPic_CinderaceGigantamax[]; +extern const u32 gMonFrontPic_InteleonGigantamax[]; +extern const u32 gMonFrontPic_CorviknightGigantamax[]; +extern const u32 gMonFrontPic_OrbeetleGigantamax[]; +extern const u32 gMonFrontPic_DrednawGigantamax[]; +extern const u32 gMonFrontPic_CoalossalGigantamax[]; +extern const u32 gMonFrontPic_FlappleGigantamax[]; +extern const u32 gMonFrontPic_AppletunGigantamax[]; +extern const u32 gMonFrontPic_SandacondaGigantamax[]; +extern const u32 gMonFrontPic_ToxtricityGigantamax[]; +extern const u32 gMonFrontPic_CentiskorchGigantamax[]; +extern const u32 gMonFrontPic_HattereneGigantamax[]; +extern const u32 gMonFrontPic_GrimmsnarlGigantamax[]; +extern const u32 gMonFrontPic_AlcremieGigantamax[]; +extern const u32 gMonFrontPic_CopperajahGigantamax[]; +extern const u32 gMonFrontPic_DuraludonGigantamax[]; +extern const u32 gMonFrontPic_UrshifuGigantamax[]; +extern const u32 gMonFrontPic_UrshifuRapidStrikeGigantamax[]; #endif // trainer sprites diff --git a/src/battle_dynamax.c b/src/battle_dynamax.c index d2005a77d0..742516a0b6 100644 --- a/src/battle_dynamax.c +++ b/src/battle_dynamax.c @@ -56,39 +56,39 @@ struct GMaxMove static const struct GMaxMove sGMaxMoveTable[] = { - {SPECIES_VENUSAUR_GMAX, TYPE_GRASS, MOVE_G_MAX_VINE_LASH}, - {SPECIES_BLASTOISE_GMAX, TYPE_WATER, MOVE_G_MAX_CANNONADE}, - {SPECIES_CHARIZARD_GMAX, TYPE_FIRE, MOVE_G_MAX_WILDFIRE}, - {SPECIES_BUTTERFREE_GMAX, TYPE_BUG, MOVE_G_MAX_BEFUDDLE}, - {SPECIES_PIKACHU_GMAX, TYPE_ELECTRIC, MOVE_G_MAX_VOLT_CRASH}, - {SPECIES_MEOWTH_GMAX, TYPE_NORMAL, MOVE_G_MAX_GOLD_RUSH}, - {SPECIES_MACHAMP_GMAX, TYPE_FIGHTING, MOVE_G_MAX_CHI_STRIKE}, - {SPECIES_GENGAR_GMAX, TYPE_GHOST, MOVE_G_MAX_TERROR}, - {SPECIES_KINGLER_GMAX, TYPE_WATER, MOVE_G_MAX_FOAM_BURST}, - {SPECIES_LAPRAS_GMAX, TYPE_ICE, MOVE_G_MAX_RESONANCE}, - {SPECIES_EEVEE_GMAX, TYPE_NORMAL, MOVE_G_MAX_CUDDLE}, - {SPECIES_SNORLAX_GMAX, TYPE_NORMAL, MOVE_G_MAX_REPLENISH}, - {SPECIES_GARBODOR_GMAX, TYPE_POISON, MOVE_G_MAX_MALODOR}, - {SPECIES_MELMETAL_GMAX, TYPE_STEEL, MOVE_G_MAX_MELTDOWN}, - {SPECIES_RILLABOOM_GMAX, TYPE_GRASS, MOVE_G_MAX_DRUM_SOLO}, - {SPECIES_CINDERACE_GMAX, TYPE_FIRE, MOVE_G_MAX_FIREBALL}, - {SPECIES_INTELEON_GMAX, TYPE_WATER, MOVE_G_MAX_HYDROSNIPE}, - {SPECIES_CORVIKNIGHT_GMAX, TYPE_FLYING, MOVE_G_MAX_WIND_RAGE}, - {SPECIES_ORBEETLE_GMAX, TYPE_PSYCHIC, MOVE_G_MAX_GRAVITAS}, - {SPECIES_DREDNAW_GMAX, TYPE_WATER, MOVE_G_MAX_STONESURGE}, - {SPECIES_COALOSSAL_GMAX, TYPE_ROCK, MOVE_G_MAX_VOLCALITH}, - {SPECIES_FLAPPLE_GMAX, TYPE_GRASS, MOVE_G_MAX_TARTNESS}, - {SPECIES_APPLETUN_GMAX, TYPE_GRASS, MOVE_G_MAX_SWEETNESS}, - {SPECIES_SANDACONDA_GMAX, TYPE_GROUND, MOVE_G_MAX_SANDBLAST}, - {SPECIES_TOXTRICITY_GMAX, TYPE_ELECTRIC, MOVE_G_MAX_STUN_SHOCK}, - {SPECIES_CENTISKORCH_GMAX, TYPE_FIRE, MOVE_G_MAX_CENTIFERNO}, - {SPECIES_HATTERENE_GMAX, TYPE_FAIRY, MOVE_G_MAX_SMITE}, - {SPECIES_GRIMMSNARL_GMAX, TYPE_DARK, MOVE_G_MAX_SNOOZE}, - {SPECIES_ALCREMIE_GMAX, TYPE_FAIRY, MOVE_G_MAX_FINALE}, - {SPECIES_COPPERAJAH_GMAX, TYPE_STEEL, MOVE_G_MAX_STEELSURGE}, - {SPECIES_DURALUDON_GMAX, TYPE_DRAGON, MOVE_G_MAX_DEPLETION}, - {SPECIES_URSHIFU_GMAX, TYPE_DARK, MOVE_G_MAX_ONE_BLOW}, - {SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GMAX, TYPE_WATER, MOVE_G_MAX_RAPID_FLOW}, + {SPECIES_VENUSAUR_GIGANTAMAX, TYPE_GRASS, MOVE_G_MAX_VINE_LASH}, + {SPECIES_BLASTOISE_GIGANTAMAX, TYPE_WATER, MOVE_G_MAX_CANNONADE}, + {SPECIES_CHARIZARD_GIGANTAMAX, TYPE_FIRE, MOVE_G_MAX_WILDFIRE}, + {SPECIES_BUTTERFREE_GIGANTAMAX, TYPE_BUG, MOVE_G_MAX_BEFUDDLE}, + {SPECIES_PIKACHU_GIGANTAMAX, TYPE_ELECTRIC, MOVE_G_MAX_VOLT_CRASH}, + {SPECIES_MEOWTH_GIGANTAMAX, TYPE_NORMAL, MOVE_G_MAX_GOLD_RUSH}, + {SPECIES_MACHAMP_GIGANTAMAX, TYPE_FIGHTING, MOVE_G_MAX_CHI_STRIKE}, + {SPECIES_GENGAR_GIGANTAMAX, TYPE_GHOST, MOVE_G_MAX_TERROR}, + {SPECIES_KINGLER_GIGANTAMAX, TYPE_WATER, MOVE_G_MAX_FOAM_BURST}, + {SPECIES_LAPRAS_GIGANTAMAX, TYPE_ICE, MOVE_G_MAX_RESONANCE}, + {SPECIES_EEVEE_GIGANTAMAX, TYPE_NORMAL, MOVE_G_MAX_CUDDLE}, + {SPECIES_SNORLAX_GIGANTAMAX, TYPE_NORMAL, MOVE_G_MAX_REPLENISH}, + {SPECIES_GARBODOR_GIGANTAMAX, TYPE_POISON, MOVE_G_MAX_MALODOR}, + {SPECIES_MELMETAL_GIGANTAMAX, TYPE_STEEL, MOVE_G_MAX_MELTDOWN}, + {SPECIES_RILLABOOM_GIGANTAMAX, TYPE_GRASS, MOVE_G_MAX_DRUM_SOLO}, + {SPECIES_CINDERACE_GIGANTAMAX, TYPE_FIRE, MOVE_G_MAX_FIREBALL}, + {SPECIES_INTELEON_GIGANTAMAX, TYPE_WATER, MOVE_G_MAX_HYDROSNIPE}, + {SPECIES_CORVIKNIGHT_GIGANTAMAX, TYPE_FLYING, MOVE_G_MAX_WIND_RAGE}, + {SPECIES_ORBEETLE_GIGANTAMAX, TYPE_PSYCHIC, MOVE_G_MAX_GRAVITAS}, + {SPECIES_DREDNAW_GIGANTAMAX, TYPE_WATER, MOVE_G_MAX_STONESURGE}, + {SPECIES_COALOSSAL_GIGANTAMAX, TYPE_ROCK, MOVE_G_MAX_VOLCALITH}, + {SPECIES_FLAPPLE_GIGANTAMAX, TYPE_GRASS, MOVE_G_MAX_TARTNESS}, + {SPECIES_APPLETUN_GIGANTAMAX, TYPE_GRASS, MOVE_G_MAX_SWEETNESS}, + {SPECIES_SANDACONDA_GIGANTAMAX, TYPE_GROUND, MOVE_G_MAX_SANDBLAST}, + {SPECIES_TOXTRICITY_GIGANTAMAX, TYPE_ELECTRIC, MOVE_G_MAX_STUN_SHOCK}, + {SPECIES_CENTISKORCH_GIGANTAMAX, TYPE_FIRE, MOVE_G_MAX_CENTIFERNO}, + {SPECIES_HATTERENE_GIGANTAMAX, TYPE_FAIRY, MOVE_G_MAX_SMITE}, + {SPECIES_GRIMMSNARL_GIGANTAMAX, TYPE_DARK, MOVE_G_MAX_SNOOZE}, + {SPECIES_ALCREMIE_GIGANTAMAX, TYPE_FAIRY, MOVE_G_MAX_FINALE}, + {SPECIES_COPPERAJAH_GIGANTAMAX, TYPE_STEEL, MOVE_G_MAX_STEELSURGE}, + {SPECIES_DURALUDON_GIGANTAMAX, TYPE_DRAGON, MOVE_G_MAX_DEPLETION}, + {SPECIES_URSHIFU_GIGANTAMAX, TYPE_DARK, MOVE_G_MAX_ONE_BLOW}, + {SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX, TYPE_WATER, MOVE_G_MAX_RAPID_FLOW}, }; // forward declarations @@ -288,15 +288,15 @@ static u16 GetTypeBasedMaxMove(u16 battlerId, u16 type) // Gigantamax check u16 species = gBattleMons[battlerId].species; u16 targetSpecies = GetBattleFormChangeTargetSpecies(battlerId, FORM_CHANGE_BATTLE_GIGANTAMAX); - if (species >= (SPECIES_VENUSAUR_GMAX) - && sGMaxMoveTable[species - (SPECIES_VENUSAUR_GMAX)].moveType == type) + if (species >= (SPECIES_VENUSAUR_GIGANTAMAX) + && sGMaxMoveTable[species - (SPECIES_VENUSAUR_GIGANTAMAX)].moveType == type) { - return sGMaxMoveTable[species - (SPECIES_VENUSAUR_GMAX)].gmaxMove; + return sGMaxMoveTable[species - (SPECIES_VENUSAUR_GIGANTAMAX)].gmaxMove; } else if (targetSpecies != SPECIES_NONE - && sGMaxMoveTable[targetSpecies - (SPECIES_VENUSAUR_GMAX)].moveType == type) + && sGMaxMoveTable[targetSpecies - (SPECIES_VENUSAUR_GIGANTAMAX)].moveType == type) { - return sGMaxMoveTable[targetSpecies - (SPECIES_VENUSAUR_GMAX)].gmaxMove; + return sGMaxMoveTable[targetSpecies - (SPECIES_VENUSAUR_GIGANTAMAX)].gmaxMove; } // regular Max Move diff --git a/src/data/graphics/pokemon.h b/src/data/graphics/pokemon.h index 8c71f6d7e6..4785c4717f 100644 --- a/src/data/graphics/pokemon.h +++ b/src/data/graphics/pokemon.h @@ -1289,39 +1289,39 @@ const u32 gMonFrontPic_CalyrexIceRider[] = INCBIN_U32("graphics/pokemon/calyrex/ const u32 gMonFrontPic_CalyrexShadowRider[] = INCBIN_U32("graphics/pokemon/calyrex/shadow_rider/front.4bpp.lz"); const u32 gMonFrontPic_EnamorusTherian[] = INCBIN_U32("graphics/pokemon/enamorus/therian/front.4bpp.lz"); const u32 gMonFrontPic_BasculegionFemale[] = INCBIN_U32("graphics/pokemon/basculegion/female/front.4bpp.lz"); -const u32 gMonFrontPic_VenusaurGmax[] = INCBIN_U32("graphics/pokemon/venusaur/gmax/front.4bpp.lz"); -const u32 gMonFrontPic_CharizardGmax[] = INCBIN_U32("graphics/pokemon/charizard/gmax/front.4bpp.lz"); -const u32 gMonFrontPic_BlastoiseGmax[] = INCBIN_U32("graphics/pokemon/blastoise/gmax/front.4bpp.lz"); -const u32 gMonFrontPic_ButterfreeGmax[] = INCBIN_U32("graphics/pokemon/butterfree/gmax/front.4bpp.lz"); -const u32 gMonFrontPic_PikachuGmax[] = INCBIN_U32("graphics/pokemon/pikachu/gmax/front.4bpp.lz"); -const u32 gMonFrontPic_MeowthGmax[] = INCBIN_U32("graphics/pokemon/meowth/gmax/front.4bpp.lz"); -const u32 gMonFrontPic_MachampGmax[] = INCBIN_U32("graphics/pokemon/machamp/gmax/front.4bpp.lz"); -const u32 gMonFrontPic_GengarGmax[] = INCBIN_U32("graphics/pokemon/gengar/gmax/front.4bpp.lz"); -const u32 gMonFrontPic_KinglerGmax[] = INCBIN_U32("graphics/pokemon/kingler/gmax/front.4bpp.lz"); -const u32 gMonFrontPic_LaprasGmax[] = INCBIN_U32("graphics/pokemon/lapras/gmax/front.4bpp.lz"); -const u32 gMonFrontPic_EeveeGmax[] = INCBIN_U32("graphics/pokemon/eevee/gmax/front.4bpp.lz"); -const u32 gMonFrontPic_SnorlaxGmax[] = INCBIN_U32("graphics/pokemon/snorlax/gmax/front.4bpp.lz"); -const u32 gMonFrontPic_GarbodorGmax[] = INCBIN_U32("graphics/pokemon/garbodor/gmax/front.4bpp.lz"); -const u32 gMonFrontPic_MelmetalGmax[] = INCBIN_U32("graphics/pokemon/melmetal/gmax/front.4bpp.lz"); -const u32 gMonFrontPic_RillaboomGmax[] = INCBIN_U32("graphics/pokemon/rillaboom/gmax/front.4bpp.lz"); -const u32 gMonFrontPic_CinderaceGmax[] = INCBIN_U32("graphics/pokemon/cinderace/gmax/front.4bpp.lz"); -const u32 gMonFrontPic_InteleonGmax[] = INCBIN_U32("graphics/pokemon/inteleon/gmax/front.4bpp.lz"); -const u32 gMonFrontPic_CorviknightGmax[] = INCBIN_U32("graphics/pokemon/corviknight/gmax/front.4bpp.lz"); -const u32 gMonFrontPic_OrbeetleGmax[] = INCBIN_U32("graphics/pokemon/orbeetle/gmax/front.4bpp.lz"); -const u32 gMonFrontPic_DrednawGmax[] = INCBIN_U32("graphics/pokemon/drednaw/gmax/front.4bpp.lz"); -const u32 gMonFrontPic_CoalossalGmax[] = INCBIN_U32("graphics/pokemon/coalossal/gmax/front.4bpp.lz"); -const u32 gMonFrontPic_FlappleGmax[] = INCBIN_U32("graphics/pokemon/flapple/gmax/front.4bpp.lz"); -const u32 gMonFrontPic_AppletunGmax[] = INCBIN_U32("graphics/pokemon/appletun/gmax/front.4bpp.lz"); -const u32 gMonFrontPic_SandacondaGmax[] = INCBIN_U32("graphics/pokemon/sandaconda/gmax/front.4bpp.lz"); -const u32 gMonFrontPic_ToxtricityGmax[] = INCBIN_U32("graphics/pokemon/toxtricity/gmax/front.4bpp.lz"); -const u32 gMonFrontPic_CentiskorchGmax[] = INCBIN_U32("graphics/pokemon/centiskorch/gmax/front.4bpp.lz"); -const u32 gMonFrontPic_HattereneGmax[] = INCBIN_U32("graphics/pokemon/hatterene/gmax/front.4bpp.lz"); -const u32 gMonFrontPic_GrimmsnarlGmax[] = INCBIN_U32("graphics/pokemon/grimmsnarl/gmax/front.4bpp.lz"); -const u32 gMonFrontPic_AlcremieGmax[] = INCBIN_U32("graphics/pokemon/alcremie/gmax/front.4bpp.lz"); -const u32 gMonFrontPic_CopperajahGmax[] = INCBIN_U32("graphics/pokemon/copperajah/gmax/front.4bpp.lz"); -const u32 gMonFrontPic_DuraludonGmax[] = INCBIN_U32("graphics/pokemon/duraludon/gmax/front.4bpp.lz"); -const u32 gMonFrontPic_UrshifuGmax[] = INCBIN_U32("graphics/pokemon/urshifu/gmax/front.4bpp.lz"); -const u32 gMonFrontPic_UrshifuRapidStrikeGmax[] = INCBIN_U32("graphics/pokemon/urshifu/gmax_rapid_strike_style/front.4bpp.lz"); +const u32 gMonFrontPic_VenusaurGigantamax[] = INCBIN_U32("graphics/pokemon/venusaur/gigantamax/front.4bpp.lz"); +const u32 gMonFrontPic_CharizardGigantamax[] = INCBIN_U32("graphics/pokemon/charizard/gigantamax/front.4bpp.lz"); +const u32 gMonFrontPic_BlastoiseGigantamax[] = INCBIN_U32("graphics/pokemon/blastoise/gigantamax/front.4bpp.lz"); +const u32 gMonFrontPic_ButterfreeGigantamax[] = INCBIN_U32("graphics/pokemon/butterfree/gigantamax/front.4bpp.lz"); +const u32 gMonFrontPic_PikachuGigantamax[] = INCBIN_U32("graphics/pokemon/pikachu/gigantamax/front.4bpp.lz"); +const u32 gMonFrontPic_MeowthGigantamax[] = INCBIN_U32("graphics/pokemon/meowth/gigantamax/front.4bpp.lz"); +const u32 gMonFrontPic_MachampGigantamax[] = INCBIN_U32("graphics/pokemon/machamp/gigantamax/front.4bpp.lz"); +const u32 gMonFrontPic_GengarGigantamax[] = INCBIN_U32("graphics/pokemon/gengar/gigantamax/front.4bpp.lz"); +const u32 gMonFrontPic_KinglerGigantamax[] = INCBIN_U32("graphics/pokemon/kingler/gigantamax/front.4bpp.lz"); +const u32 gMonFrontPic_LaprasGigantamax[] = INCBIN_U32("graphics/pokemon/lapras/gigantamax/front.4bpp.lz"); +const u32 gMonFrontPic_EeveeGigantamax[] = INCBIN_U32("graphics/pokemon/eevee/gigantamax/front.4bpp.lz"); +const u32 gMonFrontPic_SnorlaxGigantamax[] = INCBIN_U32("graphics/pokemon/snorlax/gigantamax/front.4bpp.lz"); +const u32 gMonFrontPic_GarbodorGigantamax[] = INCBIN_U32("graphics/pokemon/garbodor/gigantamax/front.4bpp.lz"); +const u32 gMonFrontPic_MelmetalGigantamax[] = INCBIN_U32("graphics/pokemon/melmetal/gigantamax/front.4bpp.lz"); +const u32 gMonFrontPic_RillaboomGigantamax[] = INCBIN_U32("graphics/pokemon/rillaboom/gigantamax/front.4bpp.lz"); +const u32 gMonFrontPic_CinderaceGigantamax[] = INCBIN_U32("graphics/pokemon/cinderace/gigantamax/front.4bpp.lz"); +const u32 gMonFrontPic_InteleonGigantamax[] = INCBIN_U32("graphics/pokemon/inteleon/gigantamax/front.4bpp.lz"); +const u32 gMonFrontPic_CorviknightGigantamax[] = INCBIN_U32("graphics/pokemon/corviknight/gigantamax/front.4bpp.lz"); +const u32 gMonFrontPic_OrbeetleGigantamax[] = INCBIN_U32("graphics/pokemon/orbeetle/gigantamax/front.4bpp.lz"); +const u32 gMonFrontPic_DrednawGigantamax[] = INCBIN_U32("graphics/pokemon/drednaw/gigantamax/front.4bpp.lz"); +const u32 gMonFrontPic_CoalossalGigantamax[] = INCBIN_U32("graphics/pokemon/coalossal/gigantamax/front.4bpp.lz"); +const u32 gMonFrontPic_FlappleGigantamax[] = INCBIN_U32("graphics/pokemon/flapple/gigantamax/front.4bpp.lz"); +const u32 gMonFrontPic_AppletunGigantamax[] = INCBIN_U32("graphics/pokemon/appletun/gigantamax/front.4bpp.lz"); +const u32 gMonFrontPic_SandacondaGigantamax[] = INCBIN_U32("graphics/pokemon/sandaconda/gigantamax/front.4bpp.lz"); +const u32 gMonFrontPic_ToxtricityGigantamax[] = INCBIN_U32("graphics/pokemon/toxtricity/gigantamax/front.4bpp.lz"); +const u32 gMonFrontPic_CentiskorchGigantamax[] = INCBIN_U32("graphics/pokemon/centiskorch/gigantamax/front.4bpp.lz"); +const u32 gMonFrontPic_HattereneGigantamax[] = INCBIN_U32("graphics/pokemon/hatterene/gigantamax/front.4bpp.lz"); +const u32 gMonFrontPic_GrimmsnarlGigantamax[] = INCBIN_U32("graphics/pokemon/grimmsnarl/gigantamax/front.4bpp.lz"); +const u32 gMonFrontPic_AlcremieGigantamax[] = INCBIN_U32("graphics/pokemon/alcremie/gigantamax/front.4bpp.lz"); +const u32 gMonFrontPic_CopperajahGigantamax[] = INCBIN_U32("graphics/pokemon/copperajah/gigantamax/front.4bpp.lz"); +const u32 gMonFrontPic_DuraludonGigantamax[] = INCBIN_U32("graphics/pokemon/duraludon/gigantamax/front.4bpp.lz"); +const u32 gMonFrontPic_UrshifuGigantamax[] = INCBIN_U32("graphics/pokemon/urshifu/single_strike_style_gigantamax/front.4bpp.lz"); +const u32 gMonFrontPic_UrshifuRapidStrikeGigantamax[] = INCBIN_U32("graphics/pokemon/urshifu/rapid_strike_style_gigantamax/front.4bpp.lz"); #endif const u32 gMonFrontPic_Egg[] = INCBIN_U32("graphics/pokemon/egg/anim_front.4bpp.lz"); @@ -2607,39 +2607,39 @@ const u32 gMonBackPic_CalyrexIceRider[] = INCBIN_U32("graphics/pokemon/calyrex/i const u32 gMonBackPic_CalyrexShadowRider[] = INCBIN_U32("graphics/pokemon/calyrex/shadow_rider/back.4bpp.lz"); const u32 gMonBackPic_EnamorusTherian[] = INCBIN_U32("graphics/pokemon/enamorus/therian/back.4bpp.lz"); const u32 gMonBackPic_BasculegionFemale[] = INCBIN_U32("graphics/pokemon/basculegion/female/back.4bpp.lz"); -const u32 gMonBackPic_VenusaurGmax[] = INCBIN_U32("graphics/pokemon/venusaur/gmax/back.4bpp.lz"); -const u32 gMonBackPic_CharizardGmax[] = INCBIN_U32("graphics/pokemon/charizard/gmax/back.4bpp.lz"); -const u32 gMonBackPic_BlastoiseGmax[] = INCBIN_U32("graphics/pokemon/blastoise/gmax/back.4bpp.lz"); -const u32 gMonBackPic_ButterfreeGmax[] = INCBIN_U32("graphics/pokemon/butterfree/gmax/back.4bpp.lz"); -const u32 gMonBackPic_PikachuGmax[] = INCBIN_U32("graphics/pokemon/pikachu/gmax/back.4bpp.lz"); -const u32 gMonBackPic_MeowthGmax[] = INCBIN_U32("graphics/pokemon/meowth/gmax/back.4bpp.lz"); -const u32 gMonBackPic_MachampGmax[] = INCBIN_U32("graphics/pokemon/machamp/gmax/back.4bpp.lz"); -const u32 gMonBackPic_GengarGmax[] = INCBIN_U32("graphics/pokemon/gengar/gmax/back.4bpp.lz"); -const u32 gMonBackPic_KinglerGmax[] = INCBIN_U32("graphics/pokemon/kingler/gmax/back.4bpp.lz"); -const u32 gMonBackPic_LaprasGmax[] = INCBIN_U32("graphics/pokemon/lapras/gmax/back.4bpp.lz"); -const u32 gMonBackPic_EeveeGmax[] = INCBIN_U32("graphics/pokemon/eevee/gmax/back.4bpp.lz"); -const u32 gMonBackPic_SnorlaxGmax[] = INCBIN_U32("graphics/pokemon/snorlax/gmax/back.4bpp.lz"); -const u32 gMonBackPic_GarbodorGmax[] = INCBIN_U32("graphics/pokemon/garbodor/gmax/back.4bpp.lz"); -const u32 gMonBackPic_MelmetalGmax[] = INCBIN_U32("graphics/pokemon/melmetal/gmax/back.4bpp.lz"); -const u32 gMonBackPic_RillaboomGmax[] = INCBIN_U32("graphics/pokemon/rillaboom/gmax/back.4bpp.lz"); -const u32 gMonBackPic_CinderaceGmax[] = INCBIN_U32("graphics/pokemon/cinderace/gmax/back.4bpp.lz"); -const u32 gMonBackPic_InteleonGmax[] = INCBIN_U32("graphics/pokemon/inteleon/gmax/back.4bpp.lz"); -const u32 gMonBackPic_CorviknightGmax[] = INCBIN_U32("graphics/pokemon/corviknight/gmax/back.4bpp.lz"); -const u32 gMonBackPic_OrbeetleGmax[] = INCBIN_U32("graphics/pokemon/orbeetle/gmax/back.4bpp.lz"); -const u32 gMonBackPic_DrednawGmax[] = INCBIN_U32("graphics/pokemon/drednaw/gmax/back.4bpp.lz"); -const u32 gMonBackPic_CoalossalGmax[] = INCBIN_U32("graphics/pokemon/coalossal/gmax/back.4bpp.lz"); -const u32 gMonBackPic_FlappleGmax[] = INCBIN_U32("graphics/pokemon/flapple/gmax/back.4bpp.lz"); -const u32 gMonBackPic_AppletunGmax[] = INCBIN_U32("graphics/pokemon/appletun/gmax/back.4bpp.lz"); -const u32 gMonBackPic_SandacondaGmax[] = INCBIN_U32("graphics/pokemon/sandaconda/gmax/back.4bpp.lz"); -const u32 gMonBackPic_ToxtricityGmax[] = INCBIN_U32("graphics/pokemon/toxtricity/gmax/back.4bpp.lz"); -const u32 gMonBackPic_CentiskorchGmax[] = INCBIN_U32("graphics/pokemon/centiskorch/gmax/back.4bpp.lz"); -const u32 gMonBackPic_HattereneGmax[] = INCBIN_U32("graphics/pokemon/hatterene/gmax/back.4bpp.lz"); -const u32 gMonBackPic_GrimmsnarlGmax[] = INCBIN_U32("graphics/pokemon/grimmsnarl/gmax/back.4bpp.lz"); -const u32 gMonBackPic_AlcremieGmax[] = INCBIN_U32("graphics/pokemon/alcremie/gmax/back.4bpp.lz"); -const u32 gMonBackPic_CopperajahGmax[] = INCBIN_U32("graphics/pokemon/copperajah/gmax/back.4bpp.lz"); -const u32 gMonBackPic_DuraludonGmax[] = INCBIN_U32("graphics/pokemon/duraludon/gmax/back.4bpp.lz"); -const u32 gMonBackPic_UrshifuGmax[] = INCBIN_U32("graphics/pokemon/urshifu/gmax/back.4bpp.lz"); -const u32 gMonBackPic_UrshifuRapidStrikeGmax[] = INCBIN_U32("graphics/pokemon/urshifu/gmax_rapid_strike_style/back.4bpp.lz"); +const u32 gMonBackPic_VenusaurGigantamax[] = INCBIN_U32("graphics/pokemon/venusaur/gigantamax/back.4bpp.lz"); +const u32 gMonBackPic_CharizardGigantamax[] = INCBIN_U32("graphics/pokemon/charizard/gigantamax/back.4bpp.lz"); +const u32 gMonBackPic_BlastoiseGigantamax[] = INCBIN_U32("graphics/pokemon/blastoise/gigantamax/back.4bpp.lz"); +const u32 gMonBackPic_ButterfreeGigantamax[] = INCBIN_U32("graphics/pokemon/butterfree/gigantamax/back.4bpp.lz"); +const u32 gMonBackPic_PikachuGigantamax[] = INCBIN_U32("graphics/pokemon/pikachu/gigantamax/back.4bpp.lz"); +const u32 gMonBackPic_MeowthGigantamax[] = INCBIN_U32("graphics/pokemon/meowth/gigantamax/back.4bpp.lz"); +const u32 gMonBackPic_MachampGigantamax[] = INCBIN_U32("graphics/pokemon/machamp/gigantamax/back.4bpp.lz"); +const u32 gMonBackPic_GengarGigantamax[] = INCBIN_U32("graphics/pokemon/gengar/gigantamax/back.4bpp.lz"); +const u32 gMonBackPic_KinglerGigantamax[] = INCBIN_U32("graphics/pokemon/kingler/gigantamax/back.4bpp.lz"); +const u32 gMonBackPic_LaprasGigantamax[] = INCBIN_U32("graphics/pokemon/lapras/gigantamax/back.4bpp.lz"); +const u32 gMonBackPic_EeveeGigantamax[] = INCBIN_U32("graphics/pokemon/eevee/gigantamax/back.4bpp.lz"); +const u32 gMonBackPic_SnorlaxGigantamax[] = INCBIN_U32("graphics/pokemon/snorlax/gigantamax/back.4bpp.lz"); +const u32 gMonBackPic_GarbodorGigantamax[] = INCBIN_U32("graphics/pokemon/garbodor/gigantamax/back.4bpp.lz"); +const u32 gMonBackPic_MelmetalGigantamax[] = INCBIN_U32("graphics/pokemon/melmetal/gigantamax/back.4bpp.lz"); +const u32 gMonBackPic_RillaboomGigantamax[] = INCBIN_U32("graphics/pokemon/rillaboom/gigantamax/back.4bpp.lz"); +const u32 gMonBackPic_CinderaceGigantamax[] = INCBIN_U32("graphics/pokemon/cinderace/gigantamax/back.4bpp.lz"); +const u32 gMonBackPic_InteleonGigantamax[] = INCBIN_U32("graphics/pokemon/inteleon/gigantamax/back.4bpp.lz"); +const u32 gMonBackPic_CorviknightGigantamax[] = INCBIN_U32("graphics/pokemon/corviknight/gigantamax/back.4bpp.lz"); +const u32 gMonBackPic_OrbeetleGigantamax[] = INCBIN_U32("graphics/pokemon/orbeetle/gigantamax/back.4bpp.lz"); +const u32 gMonBackPic_DrednawGigantamax[] = INCBIN_U32("graphics/pokemon/drednaw/gigantamax/back.4bpp.lz"); +const u32 gMonBackPic_CoalossalGigantamax[] = INCBIN_U32("graphics/pokemon/coalossal/gigantamax/back.4bpp.lz"); +const u32 gMonBackPic_FlappleGigantamax[] = INCBIN_U32("graphics/pokemon/flapple/gigantamax/back.4bpp.lz"); +const u32 gMonBackPic_AppletunGigantamax[] = INCBIN_U32("graphics/pokemon/appletun/gigantamax/back.4bpp.lz"); +const u32 gMonBackPic_SandacondaGigantamax[] = INCBIN_U32("graphics/pokemon/sandaconda/gigantamax/back.4bpp.lz"); +const u32 gMonBackPic_ToxtricityGigantamax[] = INCBIN_U32("graphics/pokemon/toxtricity/gigantamax/back.4bpp.lz"); +const u32 gMonBackPic_CentiskorchGigantamax[] = INCBIN_U32("graphics/pokemon/centiskorch/gigantamax/back.4bpp.lz"); +const u32 gMonBackPic_HattereneGigantamax[] = INCBIN_U32("graphics/pokemon/hatterene/gigantamax/back.4bpp.lz"); +const u32 gMonBackPic_GrimmsnarlGigantamax[] = INCBIN_U32("graphics/pokemon/grimmsnarl/gigantamax/back.4bpp.lz"); +const u32 gMonBackPic_AlcremieGigantamax[] = INCBIN_U32("graphics/pokemon/alcremie/gigantamax/back.4bpp.lz"); +const u32 gMonBackPic_CopperajahGigantamax[] = INCBIN_U32("graphics/pokemon/copperajah/gigantamax/back.4bpp.lz"); +const u32 gMonBackPic_DuraludonGigantamax[] = INCBIN_U32("graphics/pokemon/duraludon/gigantamax/back.4bpp.lz"); +const u32 gMonBackPic_UrshifuGigantamax[] = INCBIN_U32("graphics/pokemon/urshifu/single_strike_style_gigantamax/back.4bpp.lz"); +const u32 gMonBackPic_UrshifuRapidStrikeGigantamax[] = INCBIN_U32("graphics/pokemon/urshifu/rapid_strike_style_gigantamax/back.4bpp.lz"); #endif const u32 gMonPalette_CircledQuestionMark[] = INCBIN_U32("graphics/pokemon/question_mark/circled/normal.gbapal.lz"); @@ -3872,39 +3872,39 @@ const u32 gMonPalette_CalyrexIceRider[] = INCBIN_U32("graphics/pokemon/calyrex/i const u32 gMonPalette_CalyrexShadowRider[] = INCBIN_U32("graphics/pokemon/calyrex/shadow_rider/normal.gbapal.lz"); const u32 gMonPalette_EnamorusTherian[] = INCBIN_U32("graphics/pokemon/enamorus/therian/normal.gbapal.lz"); const u32 gMonPalette_BasculegionFemale[] = INCBIN_U32("graphics/pokemon/basculegion/female/normal.gbapal.lz"); -const u32 gMonPalette_VenusaurGmax[] = INCBIN_U32("graphics/pokemon/venusaur/gmax/normal.gbapal.lz"); -const u32 gMonPalette_CharizardGmax[] = INCBIN_U32("graphics/pokemon/charizard/gmax/normal.gbapal.lz"); -const u32 gMonPalette_BlastoiseGmax[] = INCBIN_U32("graphics/pokemon/blastoise/gmax/normal.gbapal.lz"); -const u32 gMonPalette_ButterfreeGmax[] = INCBIN_U32("graphics/pokemon/butterfree/gmax/normal.gbapal.lz"); -const u32 gMonPalette_PikachuGmax[] = INCBIN_U32("graphics/pokemon/pikachu/gmax/normal.gbapal.lz"); -const u32 gMonPalette_MeowthGmax[] = INCBIN_U32("graphics/pokemon/meowth/gmax/normal.gbapal.lz"); -const u32 gMonPalette_MachampGmax[] = INCBIN_U32("graphics/pokemon/machamp/gmax/normal.gbapal.lz"); -const u32 gMonPalette_GengarGmax[] = INCBIN_U32("graphics/pokemon/gengar/gmax/normal.gbapal.lz"); -const u32 gMonPalette_KinglerGmax[] = INCBIN_U32("graphics/pokemon/kingler/gmax/normal.gbapal.lz"); -const u32 gMonPalette_LaprasGmax[] = INCBIN_U32("graphics/pokemon/lapras/gmax/normal.gbapal.lz"); -const u32 gMonPalette_EeveeGmax[] = INCBIN_U32("graphics/pokemon/eevee/gmax/normal.gbapal.lz"); -const u32 gMonPalette_SnorlaxGmax[] = INCBIN_U32("graphics/pokemon/snorlax/gmax/normal.gbapal.lz"); -const u32 gMonPalette_GarbodorGmax[] = INCBIN_U32("graphics/pokemon/garbodor/gmax/normal.gbapal.lz"); -const u32 gMonPalette_MelmetalGmax[] = INCBIN_U32("graphics/pokemon/melmetal/gmax/normal.gbapal.lz"); -const u32 gMonPalette_RillaboomGmax[] = INCBIN_U32("graphics/pokemon/rillaboom/gmax/normal.gbapal.lz"); -const u32 gMonPalette_CinderaceGmax[] = INCBIN_U32("graphics/pokemon/cinderace/gmax/normal.gbapal.lz"); -const u32 gMonPalette_InteleonGmax[] = INCBIN_U32("graphics/pokemon/inteleon/gmax/normal.gbapal.lz"); -const u32 gMonPalette_CorviknightGmax[] = INCBIN_U32("graphics/pokemon/corviknight/gmax/normal.gbapal.lz"); -const u32 gMonPalette_OrbeetleGmax[] = INCBIN_U32("graphics/pokemon/orbeetle/gmax/normal.gbapal.lz"); -const u32 gMonPalette_DrednawGmax[] = INCBIN_U32("graphics/pokemon/drednaw/gmax/normal.gbapal.lz"); -const u32 gMonPalette_CoalossalGmax[] = INCBIN_U32("graphics/pokemon/coalossal/gmax/normal.gbapal.lz"); -const u32 gMonPalette_FlappleGmax[] = INCBIN_U32("graphics/pokemon/flapple/gmax/normal.gbapal.lz"); -const u32 gMonPalette_AppletunGmax[] = INCBIN_U32("graphics/pokemon/appletun/gmax/normal.gbapal.lz"); -const u32 gMonPalette_SandacondaGmax[] = INCBIN_U32("graphics/pokemon/sandaconda/gmax/normal.gbapal.lz"); -const u32 gMonPalette_ToxtricityGmax[] = INCBIN_U32("graphics/pokemon/toxtricity/gmax/normal.gbapal.lz"); -const u32 gMonPalette_CentiskorchGmax[] = INCBIN_U32("graphics/pokemon/centiskorch/gmax/normal.gbapal.lz"); -const u32 gMonPalette_HattereneGmax[] = INCBIN_U32("graphics/pokemon/hatterene/gmax/normal.gbapal.lz"); -const u32 gMonPalette_GrimmsnarlGmax[] = INCBIN_U32("graphics/pokemon/grimmsnarl/gmax/normal.gbapal.lz"); -const u32 gMonPalette_AlcremieGmax[] = INCBIN_U32("graphics/pokemon/alcremie/gmax/normal.gbapal.lz"); -const u32 gMonPalette_CopperajahGmax[] = INCBIN_U32("graphics/pokemon/copperajah/gmax/normal.gbapal.lz"); -const u32 gMonPalette_DuraludonGmax[] = INCBIN_U32("graphics/pokemon/duraludon/gmax/normal.gbapal.lz"); -const u32 gMonPalette_UrshifuGmax[] = INCBIN_U32("graphics/pokemon/urshifu/gmax/normal.gbapal.lz"); -const u32 gMonPalette_UrshifuRapidStrikeGmax[] = INCBIN_U32("graphics/pokemon/urshifu/gmax_rapid_strike_style/normal.gbapal.lz"); +const u32 gMonPalette_VenusaurGigantamax[] = INCBIN_U32("graphics/pokemon/venusaur/gigantamax/normal.gbapal.lz"); +const u32 gMonPalette_CharizardGigantamax[] = INCBIN_U32("graphics/pokemon/charizard/gigantamax/normal.gbapal.lz"); +const u32 gMonPalette_BlastoiseGigantamax[] = INCBIN_U32("graphics/pokemon/blastoise/gigantamax/normal.gbapal.lz"); +const u32 gMonPalette_ButterfreeGigantamax[] = INCBIN_U32("graphics/pokemon/butterfree/gigantamax/normal.gbapal.lz"); +const u32 gMonPalette_PikachuGigantamax[] = INCBIN_U32("graphics/pokemon/pikachu/gigantamax/normal.gbapal.lz"); +const u32 gMonPalette_MeowthGigantamax[] = INCBIN_U32("graphics/pokemon/meowth/gigantamax/normal.gbapal.lz"); +const u32 gMonPalette_MachampGigantamax[] = INCBIN_U32("graphics/pokemon/machamp/gigantamax/normal.gbapal.lz"); +const u32 gMonPalette_GengarGigantamax[] = INCBIN_U32("graphics/pokemon/gengar/gigantamax/normal.gbapal.lz"); +const u32 gMonPalette_KinglerGigantamax[] = INCBIN_U32("graphics/pokemon/kingler/gigantamax/normal.gbapal.lz"); +const u32 gMonPalette_LaprasGigantamax[] = INCBIN_U32("graphics/pokemon/lapras/gigantamax/normal.gbapal.lz"); +const u32 gMonPalette_EeveeGigantamax[] = INCBIN_U32("graphics/pokemon/eevee/gigantamax/normal.gbapal.lz"); +const u32 gMonPalette_SnorlaxGigantamax[] = INCBIN_U32("graphics/pokemon/snorlax/gigantamax/normal.gbapal.lz"); +const u32 gMonPalette_GarbodorGigantamax[] = INCBIN_U32("graphics/pokemon/garbodor/gigantamax/normal.gbapal.lz"); +const u32 gMonPalette_MelmetalGigantamax[] = INCBIN_U32("graphics/pokemon/melmetal/gigantamax/normal.gbapal.lz"); +const u32 gMonPalette_RillaboomGigantamax[] = INCBIN_U32("graphics/pokemon/rillaboom/gigantamax/normal.gbapal.lz"); +const u32 gMonPalette_CinderaceGigantamax[] = INCBIN_U32("graphics/pokemon/cinderace/gigantamax/normal.gbapal.lz"); +const u32 gMonPalette_InteleonGigantamax[] = INCBIN_U32("graphics/pokemon/inteleon/gigantamax/normal.gbapal.lz"); +const u32 gMonPalette_CorviknightGigantamax[] = INCBIN_U32("graphics/pokemon/corviknight/gigantamax/normal.gbapal.lz"); +const u32 gMonPalette_OrbeetleGigantamax[] = INCBIN_U32("graphics/pokemon/orbeetle/gigantamax/normal.gbapal.lz"); +const u32 gMonPalette_DrednawGigantamax[] = INCBIN_U32("graphics/pokemon/drednaw/gigantamax/normal.gbapal.lz"); +const u32 gMonPalette_CoalossalGigantamax[] = INCBIN_U32("graphics/pokemon/coalossal/gigantamax/normal.gbapal.lz"); +const u32 gMonPalette_FlappleGigantamax[] = INCBIN_U32("graphics/pokemon/flapple/gigantamax/normal.gbapal.lz"); +const u32 gMonPalette_AppletunGigantamax[] = INCBIN_U32("graphics/pokemon/appletun/gigantamax/normal.gbapal.lz"); +const u32 gMonPalette_SandacondaGigantamax[] = INCBIN_U32("graphics/pokemon/sandaconda/gigantamax/normal.gbapal.lz"); +const u32 gMonPalette_ToxtricityGigantamax[] = INCBIN_U32("graphics/pokemon/toxtricity/gigantamax/normal.gbapal.lz"); +const u32 gMonPalette_CentiskorchGigantamax[] = INCBIN_U32("graphics/pokemon/centiskorch/gigantamax/normal.gbapal.lz"); +const u32 gMonPalette_HattereneGigantamax[] = INCBIN_U32("graphics/pokemon/hatterene/gigantamax/normal.gbapal.lz"); +const u32 gMonPalette_GrimmsnarlGigantamax[] = INCBIN_U32("graphics/pokemon/grimmsnarl/gigantamax/normal.gbapal.lz"); +const u32 gMonPalette_AlcremieGigantamax[] = INCBIN_U32("graphics/pokemon/alcremie/gigantamax/normal.gbapal.lz"); +const u32 gMonPalette_CopperajahGigantamax[] = INCBIN_U32("graphics/pokemon/copperajah/gigantamax/normal.gbapal.lz"); +const u32 gMonPalette_DuraludonGigantamax[] = INCBIN_U32("graphics/pokemon/duraludon/gigantamax/normal.gbapal.lz"); +const u32 gMonPalette_UrshifuGigantamax[] = INCBIN_U32("graphics/pokemon/urshifu/single_strike_style_gigantamax/normal.gbapal.lz"); +const u32 gMonPalette_UrshifuRapidStrikeGigantamax[] = INCBIN_U32("graphics/pokemon/urshifu/rapid_strike_style_gigantamax/normal.gbapal.lz"); #endif const u32 gMonPalette_Egg[] = INCBIN_U32("graphics/pokemon/egg/normal.gbapal.lz"); @@ -5132,39 +5132,39 @@ const u32 gMonShinyPalette_CalyrexIceRider[] = INCBIN_U32("graphics/pokemon/caly const u32 gMonShinyPalette_CalyrexShadowRider[] = INCBIN_U32("graphics/pokemon/calyrex/shadow_rider/shiny.gbapal.lz"); const u32 gMonShinyPalette_EnamorusTherian[] = INCBIN_U32("graphics/pokemon/enamorus/therian/shiny.gbapal.lz"); const u32 gMonShinyPalette_BasculegionFemale[] = INCBIN_U32("graphics/pokemon/basculegion/female/shiny.gbapal.lz"); -const u32 gMonShinyPalette_VenusaurGmax[] = INCBIN_U32("graphics/pokemon/venusaur/gmax/shiny.gbapal.lz"); -const u32 gMonShinyPalette_CharizardGmax[] = INCBIN_U32("graphics/pokemon/charizard/gmax/shiny.gbapal.lz"); -const u32 gMonShinyPalette_BlastoiseGmax[] = INCBIN_U32("graphics/pokemon/blastoise/gmax/shiny.gbapal.lz"); -const u32 gMonShinyPalette_ButterfreeGmax[] = INCBIN_U32("graphics/pokemon/butterfree/gmax/shiny.gbapal.lz"); -const u32 gMonShinyPalette_PikachuGmax[] = INCBIN_U32("graphics/pokemon/pikachu/gmax/shiny.gbapal.lz"); -const u32 gMonShinyPalette_MeowthGmax[] = INCBIN_U32("graphics/pokemon/meowth/gmax/shiny.gbapal.lz"); -const u32 gMonShinyPalette_MachampGmax[] = INCBIN_U32("graphics/pokemon/machamp/gmax/shiny.gbapal.lz"); -const u32 gMonShinyPalette_GengarGmax[] = INCBIN_U32("graphics/pokemon/gengar/gmax/shiny.gbapal.lz"); -const u32 gMonShinyPalette_KinglerGmax[] = INCBIN_U32("graphics/pokemon/kingler/gmax/shiny.gbapal.lz"); -const u32 gMonShinyPalette_LaprasGmax[] = INCBIN_U32("graphics/pokemon/lapras/gmax/shiny.gbapal.lz"); -const u32 gMonShinyPalette_EeveeGmax[] = INCBIN_U32("graphics/pokemon/eevee/gmax/shiny.gbapal.lz"); -const u32 gMonShinyPalette_SnorlaxGmax[] = INCBIN_U32("graphics/pokemon/snorlax/gmax/shiny.gbapal.lz"); -const u32 gMonShinyPalette_GarbodorGmax[] = INCBIN_U32("graphics/pokemon/garbodor/gmax/shiny.gbapal.lz"); -const u32 gMonShinyPalette_MelmetalGmax[] = INCBIN_U32("graphics/pokemon/melmetal/gmax/shiny.gbapal.lz"); -const u32 gMonShinyPalette_RillaboomGmax[] = INCBIN_U32("graphics/pokemon/rillaboom/gmax/shiny.gbapal.lz"); -const u32 gMonShinyPalette_CinderaceGmax[] = INCBIN_U32("graphics/pokemon/cinderace/gmax/shiny.gbapal.lz"); -const u32 gMonShinyPalette_InteleonGmax[] = INCBIN_U32("graphics/pokemon/inteleon/gmax/shiny.gbapal.lz"); -const u32 gMonShinyPalette_CorviknightGmax[] = INCBIN_U32("graphics/pokemon/corviknight/gmax/shiny.gbapal.lz"); -const u32 gMonShinyPalette_OrbeetleGmax[] = INCBIN_U32("graphics/pokemon/orbeetle/gmax/shiny.gbapal.lz"); -const u32 gMonShinyPalette_DrednawGmax[] = INCBIN_U32("graphics/pokemon/drednaw/gmax/shiny.gbapal.lz"); -const u32 gMonShinyPalette_CoalossalGmax[] = INCBIN_U32("graphics/pokemon/coalossal/gmax/shiny.gbapal.lz"); -const u32 gMonShinyPalette_FlappleGmax[] = INCBIN_U32("graphics/pokemon/flapple/gmax/shiny.gbapal.lz"); -const u32 gMonShinyPalette_AppletunGmax[] = INCBIN_U32("graphics/pokemon/appletun/gmax/shiny.gbapal.lz"); -const u32 gMonShinyPalette_SandacondaGmax[] = INCBIN_U32("graphics/pokemon/sandaconda/gmax/shiny.gbapal.lz"); -const u32 gMonShinyPalette_ToxtricityGmax[] = INCBIN_U32("graphics/pokemon/toxtricity/gmax/shiny.gbapal.lz"); -const u32 gMonShinyPalette_CentiskorchGmax[] = INCBIN_U32("graphics/pokemon/centiskorch/gmax/shiny.gbapal.lz"); -const u32 gMonShinyPalette_HattereneGmax[] = INCBIN_U32("graphics/pokemon/hatterene/gmax/shiny.gbapal.lz"); -const u32 gMonShinyPalette_GrimmsnarlGmax[] = INCBIN_U32("graphics/pokemon/grimmsnarl/gmax/shiny.gbapal.lz"); -const u32 gMonShinyPalette_AlcremieGmax[] = INCBIN_U32("graphics/pokemon/alcremie/gmax/shiny.gbapal.lz"); -const u32 gMonShinyPalette_CopperajahGmax[] = INCBIN_U32("graphics/pokemon/copperajah/gmax/shiny.gbapal.lz"); -const u32 gMonShinyPalette_DuraludonGmax[] = INCBIN_U32("graphics/pokemon/duraludon/gmax/shiny.gbapal.lz"); -const u32 gMonShinyPalette_UrshifuGmax[] = INCBIN_U32("graphics/pokemon/urshifu/gmax/shiny.gbapal.lz"); -const u32 gMonShinyPalette_UrshifuRapidStrikeGmax[] = INCBIN_U32("graphics/pokemon/urshifu/gmax_rapid_strike_style/shiny.gbapal.lz"); +const u32 gMonShinyPalette_VenusaurGigantamax[] = INCBIN_U32("graphics/pokemon/venusaur/gigantamax/shiny.gbapal.lz"); +const u32 gMonShinyPalette_CharizardGigantamax[] = INCBIN_U32("graphics/pokemon/charizard/gigantamax/shiny.gbapal.lz"); +const u32 gMonShinyPalette_BlastoiseGigantamax[] = INCBIN_U32("graphics/pokemon/blastoise/gigantamax/shiny.gbapal.lz"); +const u32 gMonShinyPalette_ButterfreeGigantamax[] = INCBIN_U32("graphics/pokemon/butterfree/gigantamax/shiny.gbapal.lz"); +const u32 gMonShinyPalette_PikachuGigantamax[] = INCBIN_U32("graphics/pokemon/pikachu/gigantamax/shiny.gbapal.lz"); +const u32 gMonShinyPalette_MeowthGigantamax[] = INCBIN_U32("graphics/pokemon/meowth/gigantamax/shiny.gbapal.lz"); +const u32 gMonShinyPalette_MachampGigantamax[] = INCBIN_U32("graphics/pokemon/machamp/gigantamax/shiny.gbapal.lz"); +const u32 gMonShinyPalette_GengarGigantamax[] = INCBIN_U32("graphics/pokemon/gengar/gigantamax/shiny.gbapal.lz"); +const u32 gMonShinyPalette_KinglerGigantamax[] = INCBIN_U32("graphics/pokemon/kingler/gigantamax/shiny.gbapal.lz"); +const u32 gMonShinyPalette_LaprasGigantamax[] = INCBIN_U32("graphics/pokemon/lapras/gigantamax/shiny.gbapal.lz"); +const u32 gMonShinyPalette_EeveeGigantamax[] = INCBIN_U32("graphics/pokemon/eevee/gigantamax/shiny.gbapal.lz"); +const u32 gMonShinyPalette_SnorlaxGigantamax[] = INCBIN_U32("graphics/pokemon/snorlax/gigantamax/shiny.gbapal.lz"); +const u32 gMonShinyPalette_GarbodorGigantamax[] = INCBIN_U32("graphics/pokemon/garbodor/gigantamax/shiny.gbapal.lz"); +const u32 gMonShinyPalette_MelmetalGigantamax[] = INCBIN_U32("graphics/pokemon/melmetal/gigantamax/shiny.gbapal.lz"); +const u32 gMonShinyPalette_RillaboomGigantamax[] = INCBIN_U32("graphics/pokemon/rillaboom/gigantamax/shiny.gbapal.lz"); +const u32 gMonShinyPalette_CinderaceGigantamax[] = INCBIN_U32("graphics/pokemon/cinderace/gigantamax/shiny.gbapal.lz"); +const u32 gMonShinyPalette_InteleonGigantamax[] = INCBIN_U32("graphics/pokemon/inteleon/gigantamax/shiny.gbapal.lz"); +const u32 gMonShinyPalette_CorviknightGigantamax[] = INCBIN_U32("graphics/pokemon/corviknight/gigantamax/shiny.gbapal.lz"); +const u32 gMonShinyPalette_OrbeetleGigantamax[] = INCBIN_U32("graphics/pokemon/orbeetle/gigantamax/shiny.gbapal.lz"); +const u32 gMonShinyPalette_DrednawGigantamax[] = INCBIN_U32("graphics/pokemon/drednaw/gigantamax/shiny.gbapal.lz"); +const u32 gMonShinyPalette_CoalossalGigantamax[] = INCBIN_U32("graphics/pokemon/coalossal/gigantamax/shiny.gbapal.lz"); +const u32 gMonShinyPalette_FlappleGigantamax[] = INCBIN_U32("graphics/pokemon/flapple/gigantamax/shiny.gbapal.lz"); +const u32 gMonShinyPalette_AppletunGigantamax[] = INCBIN_U32("graphics/pokemon/appletun/gigantamax/shiny.gbapal.lz"); +const u32 gMonShinyPalette_SandacondaGigantamax[] = INCBIN_U32("graphics/pokemon/sandaconda/gigantamax/shiny.gbapal.lz"); +const u32 gMonShinyPalette_ToxtricityGigantamax[] = INCBIN_U32("graphics/pokemon/toxtricity/gigantamax/shiny.gbapal.lz"); +const u32 gMonShinyPalette_CentiskorchGigantamax[] = INCBIN_U32("graphics/pokemon/centiskorch/gigantamax/shiny.gbapal.lz"); +const u32 gMonShinyPalette_HattereneGigantamax[] = INCBIN_U32("graphics/pokemon/hatterene/gigantamax/shiny.gbapal.lz"); +const u32 gMonShinyPalette_GrimmsnarlGigantamax[] = INCBIN_U32("graphics/pokemon/grimmsnarl/gigantamax/shiny.gbapal.lz"); +const u32 gMonShinyPalette_AlcremieGigantamax[] = INCBIN_U32("graphics/pokemon/alcremie/gigantamax/shiny.gbapal.lz"); +const u32 gMonShinyPalette_CopperajahGigantamax[] = INCBIN_U32("graphics/pokemon/copperajah/gigantamax/shiny.gbapal.lz"); +const u32 gMonShinyPalette_DuraludonGigantamax[] = INCBIN_U32("graphics/pokemon/duraludon/gigantamax/shiny.gbapal.lz"); +const u32 gMonShinyPalette_UrshifuGigantamax[] = INCBIN_U32("graphics/pokemon/urshifu/single_strike_style_gigantamax/shiny.gbapal.lz"); +const u32 gMonShinyPalette_UrshifuRapidStrikeGigantamax[] = INCBIN_U32("graphics/pokemon/urshifu/rapid_strike_style_gigantamax/shiny.gbapal.lz"); #endif const u8 gMonIcon_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mark/icon.4bpp"); @@ -6385,39 +6385,39 @@ const u8 gMonIcon_CalyrexIceRider[] = INCBIN_U8("graphics/pokemon/calyrex/ice_ri const u8 gMonIcon_CalyrexShadowRider[] = INCBIN_U8("graphics/pokemon/calyrex/shadow_rider/icon.4bpp"); const u8 gMonIcon_EnamorusTherian[] = INCBIN_U8("graphics/pokemon/enamorus/therian/icon.4bpp"); const u8 gMonIcon_BasculegionFemale[] = INCBIN_U8("graphics/pokemon/basculegion/female/icon.4bpp"); -const u8 gMonIcon_VenusaurGmax[] = INCBIN_U8("graphics/pokemon/venusaur/gmax/icon.4bpp"); -const u8 gMonIcon_CharizardGmax[] = INCBIN_U8("graphics/pokemon/charizard/gmax/icon.4bpp"); -const u8 gMonIcon_BlastoiseGmax[] = INCBIN_U8("graphics/pokemon/blastoise/gmax/icon.4bpp"); -const u8 gMonIcon_ButterfreeGmax[] = INCBIN_U8("graphics/pokemon/butterfree/gmax/icon.4bpp"); -const u8 gMonIcon_PikachuGmax[] = INCBIN_U8("graphics/pokemon/pikachu/gmax/icon.4bpp"); -const u8 gMonIcon_MeowthGmax[] = INCBIN_U8("graphics/pokemon/meowth/gmax/icon.4bpp"); -const u8 gMonIcon_MachampGmax[] = INCBIN_U8("graphics/pokemon/machamp/gmax/icon.4bpp"); -const u8 gMonIcon_GengarGmax[] = INCBIN_U8("graphics/pokemon/gengar/gmax/icon.4bpp"); -const u8 gMonIcon_KinglerGmax[] = INCBIN_U8("graphics/pokemon/kingler/gmax/icon.4bpp"); -const u8 gMonIcon_LaprasGmax[] = INCBIN_U8("graphics/pokemon/lapras/gmax/icon.4bpp"); -const u8 gMonIcon_EeveeGmax[] = INCBIN_U8("graphics/pokemon/eevee/gmax/icon.4bpp"); -const u8 gMonIcon_SnorlaxGmax[] = INCBIN_U8("graphics/pokemon/snorlax/gmax/icon.4bpp"); -const u8 gMonIcon_GarbodorGmax[] = INCBIN_U8("graphics/pokemon/garbodor/gmax/icon.4bpp"); -const u8 gMonIcon_MelmetalGmax[] = INCBIN_U8("graphics/pokemon/melmetal/gmax/icon.4bpp"); -const u8 gMonIcon_RillaboomGmax[] = INCBIN_U8("graphics/pokemon/rillaboom/gmax/icon.4bpp"); -const u8 gMonIcon_CinderaceGmax[] = INCBIN_U8("graphics/pokemon/cinderace/gmax/icon.4bpp"); -const u8 gMonIcon_InteleonGmax[] = INCBIN_U8("graphics/pokemon/inteleon/gmax/icon.4bpp"); -const u8 gMonIcon_CorviknightGmax[] = INCBIN_U8("graphics/pokemon/corviknight/gmax/icon.4bpp"); -const u8 gMonIcon_OrbeetleGmax[] = INCBIN_U8("graphics/pokemon/orbeetle/gmax/icon.4bpp"); -const u8 gMonIcon_DrednawGmax[] = INCBIN_U8("graphics/pokemon/drednaw/gmax/icon.4bpp"); -const u8 gMonIcon_CoalossalGmax[] = INCBIN_U8("graphics/pokemon/coalossal/gmax/icon.4bpp"); -const u8 gMonIcon_FlappleGmax[] = INCBIN_U8("graphics/pokemon/flapple/gmax/icon.4bpp"); -const u8 gMonIcon_AppletunGmax[] = INCBIN_U8("graphics/pokemon/appletun/gmax/icon.4bpp"); -const u8 gMonIcon_SandacondaGmax[] = INCBIN_U8("graphics/pokemon/sandaconda/gmax/icon.4bpp"); -const u8 gMonIcon_ToxtricityGmax[] = INCBIN_U8("graphics/pokemon/toxtricity/gmax/icon.4bpp"); -const u8 gMonIcon_CentiskorchGmax[] = INCBIN_U8("graphics/pokemon/centiskorch/gmax/icon.4bpp"); -const u8 gMonIcon_HattereneGmax[] = INCBIN_U8("graphics/pokemon/hatterene/gmax/icon.4bpp"); -const u8 gMonIcon_GrimmsnarlGmax[] = INCBIN_U8("graphics/pokemon/grimmsnarl/gmax/icon.4bpp"); -const u8 gMonIcon_AlcremieGmax[] = INCBIN_U8("graphics/pokemon/alcremie/gmax/icon.4bpp"); -const u8 gMonIcon_CopperajahGmax[] = INCBIN_U8("graphics/pokemon/copperajah/gmax/icon.4bpp"); -const u8 gMonIcon_DuraludonGmax[] = INCBIN_U8("graphics/pokemon/duraludon/gmax/icon.4bpp"); -const u8 gMonIcon_UrshifuGmax[] = INCBIN_U8("graphics/pokemon/urshifu/gmax/icon.4bpp"); -const u8 gMonIcon_UrshifuRapidStrikeGmax[] = INCBIN_U8("graphics/pokemon/urshifu/gmax_rapid_strike_style/icon.4bpp"); +const u8 gMonIcon_VenusaurGigantamax[] = INCBIN_U8("graphics/pokemon/venusaur/gigantamax/icon.4bpp"); +const u8 gMonIcon_CharizardGigantamax[] = INCBIN_U8("graphics/pokemon/charizard/gigantamax/icon.4bpp"); +const u8 gMonIcon_BlastoiseGigantamax[] = INCBIN_U8("graphics/pokemon/blastoise/gigantamax/icon.4bpp"); +const u8 gMonIcon_ButterfreeGigantamax[] = INCBIN_U8("graphics/pokemon/butterfree/gigantamax/icon.4bpp"); +const u8 gMonIcon_PikachuGigantamax[] = INCBIN_U8("graphics/pokemon/pikachu/gigantamax/icon.4bpp"); +const u8 gMonIcon_MeowthGigantamax[] = INCBIN_U8("graphics/pokemon/meowth/gigantamax/icon.4bpp"); +const u8 gMonIcon_MachampGigantamax[] = INCBIN_U8("graphics/pokemon/machamp/gigantamax/icon.4bpp"); +const u8 gMonIcon_GengarGigantamax[] = INCBIN_U8("graphics/pokemon/gengar/gigantamax/icon.4bpp"); +const u8 gMonIcon_KinglerGigantamax[] = INCBIN_U8("graphics/pokemon/kingler/gigantamax/icon.4bpp"); +const u8 gMonIcon_LaprasGigantamax[] = INCBIN_U8("graphics/pokemon/lapras/gigantamax/icon.4bpp"); +const u8 gMonIcon_EeveeGigantamax[] = INCBIN_U8("graphics/pokemon/eevee/gigantamax/icon.4bpp"); +const u8 gMonIcon_SnorlaxGigantamax[] = INCBIN_U8("graphics/pokemon/snorlax/gigantamax/icon.4bpp"); +const u8 gMonIcon_GarbodorGigantamax[] = INCBIN_U8("graphics/pokemon/garbodor/gigantamax/icon.4bpp"); +const u8 gMonIcon_MelmetalGigantamax[] = INCBIN_U8("graphics/pokemon/melmetal/gigantamax/icon.4bpp"); +const u8 gMonIcon_RillaboomGigantamax[] = INCBIN_U8("graphics/pokemon/rillaboom/gigantamax/icon.4bpp"); +const u8 gMonIcon_CinderaceGigantamax[] = INCBIN_U8("graphics/pokemon/cinderace/gigantamax/icon.4bpp"); +const u8 gMonIcon_InteleonGigantamax[] = INCBIN_U8("graphics/pokemon/inteleon/gigantamax/icon.4bpp"); +const u8 gMonIcon_CorviknightGigantamax[] = INCBIN_U8("graphics/pokemon/corviknight/gigantamax/icon.4bpp"); +const u8 gMonIcon_OrbeetleGigantamax[] = INCBIN_U8("graphics/pokemon/orbeetle/gigantamax/icon.4bpp"); +const u8 gMonIcon_DrednawGigantamax[] = INCBIN_U8("graphics/pokemon/drednaw/gigantamax/icon.4bpp"); +const u8 gMonIcon_CoalossalGigantamax[] = INCBIN_U8("graphics/pokemon/coalossal/gigantamax/icon.4bpp"); +const u8 gMonIcon_FlappleGigantamax[] = INCBIN_U8("graphics/pokemon/flapple/gigantamax/icon.4bpp"); +const u8 gMonIcon_AppletunGigantamax[] = INCBIN_U8("graphics/pokemon/appletun/gigantamax/icon.4bpp"); +const u8 gMonIcon_SandacondaGigantamax[] = INCBIN_U8("graphics/pokemon/sandaconda/gigantamax/icon.4bpp"); +const u8 gMonIcon_ToxtricityGigantamax[] = INCBIN_U8("graphics/pokemon/toxtricity/gigantamax/icon.4bpp"); +const u8 gMonIcon_CentiskorchGigantamax[] = INCBIN_U8("graphics/pokemon/centiskorch/gigantamax/icon.4bpp"); +const u8 gMonIcon_HattereneGigantamax[] = INCBIN_U8("graphics/pokemon/hatterene/gigantamax/icon.4bpp"); +const u8 gMonIcon_GrimmsnarlGigantamax[] = INCBIN_U8("graphics/pokemon/grimmsnarl/gigantamax/icon.4bpp"); +const u8 gMonIcon_AlcremieGigantamax[] = INCBIN_U8("graphics/pokemon/alcremie/gigantamax/icon.4bpp"); +const u8 gMonIcon_CopperajahGigantamax[] = INCBIN_U8("graphics/pokemon/copperajah/gigantamax/icon.4bpp"); +const u8 gMonIcon_DuraludonGigantamax[] = INCBIN_U8("graphics/pokemon/duraludon/gigantamax/icon.4bpp"); +const u8 gMonIcon_UrshifuGigantamax[] = INCBIN_U8("graphics/pokemon/urshifu/single_strike_style_gigantamax/icon.4bpp"); +const u8 gMonIcon_UrshifuRapidStrikeGigantamax[] = INCBIN_U8("graphics/pokemon/urshifu/rapid_strike_style_gigantamax/icon.4bpp"); #endif const u8 gMonIcon_Egg[] = INCBIN_U8("graphics/pokemon/egg/icon.4bpp"); diff --git a/src/data/pokemon/form_change_table_pointers.h b/src/data/pokemon/form_change_table_pointers.h index 9e6483cd2d..b9d3bc0d91 100644 --- a/src/data/pokemon/form_change_table_pointers.h +++ b/src/data/pokemon/form_change_table_pointers.h @@ -2,35 +2,35 @@ const struct FormChange *const gFormChangeTablePointers[NUM_SPECIES] = { [SPECIES_VENUSAUR] = sVenusaurFormChangeTable, [SPECIES_VENUSAUR_MEGA] = sVenusaurFormChangeTable, - [SPECIES_VENUSAUR_GMAX] = sVenusaurFormChangeTable, + [SPECIES_VENUSAUR_GIGANTAMAX] = sVenusaurFormChangeTable, [SPECIES_CHARIZARD] = sCharizardFormChangeTable, [SPECIES_CHARIZARD_MEGA_X] = sCharizardFormChangeTable, [SPECIES_CHARIZARD_MEGA_Y] = sCharizardFormChangeTable, - [SPECIES_CHARIZARD_GMAX] = sCharizardFormChangeTable, + [SPECIES_CHARIZARD_GIGANTAMAX] = sCharizardFormChangeTable, [SPECIES_BLASTOISE] = sBlastoiseFormChangeTable, [SPECIES_BLASTOISE_MEGA] = sBlastoiseFormChangeTable, - [SPECIES_BLASTOISE_GMAX] = sBlastoiseFormChangeTable, + [SPECIES_BLASTOISE_GIGANTAMAX] = sBlastoiseFormChangeTable, [SPECIES_BUTTERFREE] = sButterfreeFormChangeTable, - [SPECIES_BUTTERFREE_GMAX] = sButterfreeFormChangeTable, + [SPECIES_BUTTERFREE_GIGANTAMAX] = sButterfreeFormChangeTable, [SPECIES_BEEDRILL] = sBeedrillFormChangeTable, [SPECIES_BEEDRILL_MEGA] = sBeedrillFormChangeTable, [SPECIES_PIDGEOT] = sPidgeotFormChangeTable, [SPECIES_PIDGEOT_MEGA] = sPidgeotFormChangeTable, [SPECIES_PIKACHU] = sPikachuFormChangeTable, - [SPECIES_PIKACHU_GMAX] = sPikachuFormChangeTable, + [SPECIES_PIKACHU_GIGANTAMAX] = sPikachuFormChangeTable, [SPECIES_MEOWTH] = sMeowthFormChangeTable, - [SPECIES_MEOWTH_GMAX] = sMeowthFormChangeTable, + [SPECIES_MEOWTH_GIGANTAMAX] = sMeowthFormChangeTable, [SPECIES_ALAKAZAM] = sAlakazamFormChangeTable, [SPECIES_ALAKAZAM_MEGA] = sAlakazamFormChangeTable, [SPECIES_MACHAMP] = sMachampFormChangeTable, - [SPECIES_MACHAMP_GMAX] = sMachampFormChangeTable, + [SPECIES_MACHAMP_GIGANTAMAX] = sMachampFormChangeTable, [SPECIES_SLOWBRO] = sSlowbroFormChangeTable, [SPECIES_SLOWBRO_MEGA] = sSlowbroFormChangeTable, [SPECIES_GENGAR] = sGengarFormChangeTable, [SPECIES_GENGAR_MEGA] = sGengarFormChangeTable, - [SPECIES_GENGAR_GMAX] = sGengarFormChangeTable, + [SPECIES_GENGAR_GIGANTAMAX] = sGengarFormChangeTable, [SPECIES_KINGLER] = sKinglerFormChangeTable, - [SPECIES_KINGLER_GMAX] = sKinglerFormChangeTable, + [SPECIES_KINGLER_GIGANTAMAX] = sKinglerFormChangeTable, [SPECIES_KANGASKHAN] = sKangaskhanFormChangeTable, [SPECIES_KANGASKHAN_MEGA] = sKangaskhanFormChangeTable, [SPECIES_PINSIR] = sPinsirFormChangeTable, @@ -38,13 +38,13 @@ const struct FormChange *const gFormChangeTablePointers[NUM_SPECIES] = [SPECIES_GYARADOS] = sGyaradosFormChangeTable, [SPECIES_GYARADOS_MEGA] = sGyaradosFormChangeTable, [SPECIES_LAPRAS] = sLaprasFormChangeTable, - [SPECIES_LAPRAS_GMAX] = sLaprasFormChangeTable, + [SPECIES_LAPRAS_GIGANTAMAX] = sLaprasFormChangeTable, [SPECIES_EEVEE] = sEeveeFormChangeTable, - [SPECIES_EEVEE_GMAX] = sEeveeFormChangeTable, + [SPECIES_EEVEE_GIGANTAMAX] = sEeveeFormChangeTable, [SPECIES_AERODACTYL] = sAerodactylFormChangeTable, [SPECIES_AERODACTYL_MEGA] = sAerodactylFormChangeTable, [SPECIES_SNORLAX] = sSnorlaxFormChangeTable, - [SPECIES_SNORLAX_GMAX] = sSnorlaxFormChangeTable, + [SPECIES_SNORLAX_GIGANTAMAX] = sSnorlaxFormChangeTable, [SPECIES_MEWTWO] = sMewtwoFormChangeTable, [SPECIES_MEWTWO_MEGA_X] = sMewtwoFormChangeTable, [SPECIES_MEWTWO_MEGA_Y] = sMewtwoFormChangeTable, @@ -159,7 +159,7 @@ const struct FormChange *const gFormChangeTablePointers[NUM_SPECIES] = [SPECIES_DARMANITAN_GALARIAN] = sDarmanitanGalarianFormChangeTable, [SPECIES_DARMANITAN_ZEN_MODE_GALARIAN] = sDarmanitanGalarianFormChangeTable, [SPECIES_GARBODOR] = sGarbodorFormChangeTable, - [SPECIES_GARBODOR_GMAX] = sGarbodorFormChangeTable, + [SPECIES_GARBODOR_GIGANTAMAX] = sGarbodorFormChangeTable, [SPECIES_TORNADUS] = sTornadusFormChangeTable, [SPECIES_TORNADUS_THERIAN] = sTornadusFormChangeTable, [SPECIES_THUNDURUS] = sThundurusFormChangeTable, @@ -235,58 +235,58 @@ const struct FormChange *const gFormChangeTablePointers[NUM_SPECIES] = [SPECIES_NECROZMA_DUSK_MANE] = sNecrozmaDuskManeFormChangeTable, [SPECIES_NECROZMA_DAWN_WINGS] = sNecrozmaDawnWingsFormChangeTable, [SPECIES_MELMETAL] = sMelmetalFormChangeTable, - [SPECIES_MELMETAL_GMAX] = sMelmetalFormChangeTable, + [SPECIES_MELMETAL_GIGANTAMAX] = sMelmetalFormChangeTable, #endif #if P_GEN_8_POKEMON == TRUE [SPECIES_RILLABOOM] = sRillaboomFormChangeTable, - [SPECIES_RILLABOOM_GMAX] = sRillaboomFormChangeTable, + [SPECIES_RILLABOOM_GIGANTAMAX] = sRillaboomFormChangeTable, [SPECIES_CINDERACE] = sCinderaceFormChangeTable, - [SPECIES_CINDERACE_GMAX] = sCinderaceFormChangeTable, + [SPECIES_CINDERACE_GIGANTAMAX] = sCinderaceFormChangeTable, [SPECIES_INTELEON] = sInteleonFormChangeTable, - [SPECIES_INTELEON_GMAX] = sInteleonFormChangeTable, + [SPECIES_INTELEON_GIGANTAMAX] = sInteleonFormChangeTable, [SPECIES_CORVIKNIGHT] = sCorviknightFormChangeTable, - [SPECIES_CORVIKNIGHT_GMAX] = sCorviknightFormChangeTable, + [SPECIES_CORVIKNIGHT_GIGANTAMAX] = sCorviknightFormChangeTable, [SPECIES_ORBEETLE] = sOrbeetleFormChangeTable, - [SPECIES_ORBEETLE_GMAX] = sOrbeetleFormChangeTable, + [SPECIES_ORBEETLE_GIGANTAMAX] = sOrbeetleFormChangeTable, [SPECIES_DREDNAW] = sDrednawFormChangeTable, - [SPECIES_DREDNAW_GMAX] = sDrednawFormChangeTable, + [SPECIES_DREDNAW_GIGANTAMAX] = sDrednawFormChangeTable, [SPECIES_COALOSSAL] = sCoalossalFormChangeTable, - [SPECIES_COALOSSAL_GMAX] = sCoalossalFormChangeTable, + [SPECIES_COALOSSAL_GIGANTAMAX] = sCoalossalFormChangeTable, [SPECIES_FLAPPLE] = sFlappleFormChangeTable, - [SPECIES_FLAPPLE_GMAX] = sFlappleFormChangeTable, + [SPECIES_FLAPPLE_GIGANTAMAX] = sFlappleFormChangeTable, [SPECIES_APPLETUN] = sAppletunFormChangeTable, - [SPECIES_APPLETUN_GMAX] = sAppletunFormChangeTable, + [SPECIES_APPLETUN_GIGANTAMAX] = sAppletunFormChangeTable, [SPECIES_SANDACONDA] = sSandacondaFormChangeTable, - [SPECIES_SANDACONDA_GMAX] = sSandacondaFormChangeTable, + [SPECIES_SANDACONDA_GIGANTAMAX] = sSandacondaFormChangeTable, [SPECIES_CRAMORANT] = sCramorantFormChangeTable, [SPECIES_CRAMORANT_GULPING] = sCramorantFormChangeTable, [SPECIES_CRAMORANT_GORGING] = sCramorantFormChangeTable, [SPECIES_TOXTRICITY] = sToxtricityFormChangeTable, - [SPECIES_TOXTRICITY_GMAX] = sToxtricityFormChangeTable, + [SPECIES_TOXTRICITY_GIGANTAMAX] = sToxtricityFormChangeTable, [SPECIES_CENTISKORCH] = sCentiskorchFormChangeTable, - [SPECIES_CENTISKORCH_GMAX] = sCentiskorchFormChangeTable, + [SPECIES_CENTISKORCH_GIGANTAMAX] = sCentiskorchFormChangeTable, [SPECIES_HATTERENE] = sHattereneFormChangeTable, - [SPECIES_HATTERENE_GMAX] = sHattereneFormChangeTable, + [SPECIES_HATTERENE_GIGANTAMAX] = sHattereneFormChangeTable, [SPECIES_GRIMMSNARL] = sGrimmsnarlFormChangeTable, - [SPECIES_GRIMMSNARL_GMAX] = sGrimmsnarlFormChangeTable, + [SPECIES_GRIMMSNARL_GIGANTAMAX] = sGrimmsnarlFormChangeTable, [SPECIES_ALCREMIE] = sAlcremieFormChangeTable, - [SPECIES_ALCREMIE_GMAX] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_GIGANTAMAX] = sAlcremieFormChangeTable, [SPECIES_EISCUE] = sEiscueFormChangeTable, [SPECIES_EISCUE_NOICE_FACE] = sEiscueFormChangeTable, [SPECIES_MORPEKO] = sMorpekoFormChangeTable, [SPECIES_MORPEKO_HANGRY] = sMorpekoFormChangeTable, [SPECIES_COPPERAJAH] = sCopperajahFormChangeTable, - [SPECIES_COPPERAJAH_GMAX] = sCopperajahFormChangeTable, + [SPECIES_COPPERAJAH_GIGANTAMAX] = sCopperajahFormChangeTable, [SPECIES_DURALUDON] = sDuraludonFormChangeTable, - [SPECIES_DURALUDON_GMAX] = sDuraludonFormChangeTable, + [SPECIES_DURALUDON_GIGANTAMAX] = sDuraludonFormChangeTable, [SPECIES_ZACIAN] = sZacianFormChangeTable, [SPECIES_ZACIAN_CROWNED_SWORD] = sZacianFormChangeTable, [SPECIES_ZAMAZENTA] = sZamazentaFormChangeTable, [SPECIES_ZAMAZENTA_CROWNED_SHIELD] = sZamazentaFormChangeTable, [SPECIES_URSHIFU] = sUrshifuFormChangeTable, - [SPECIES_URSHIFU_GMAX] = sUrshifuFormChangeTable, + [SPECIES_URSHIFU_GIGANTAMAX] = sUrshifuFormChangeTable, [SPECIES_URSHIFU_RAPID_STRIKE_STYLE] = sUrshifuRapidStrikeFormChangeTable, - [SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GMAX] = sUrshifuRapidStrikeFormChangeTable, + [SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX] = sUrshifuRapidStrikeFormChangeTable, [SPECIES_ENAMORUS] = sEnamorusFormChangeTable, [SPECIES_ENAMORUS_THERIAN] = sEnamorusFormChangeTable, #endif diff --git a/src/data/pokemon/form_change_tables.h b/src/data/pokemon/form_change_tables.h index bacec5c4a1..62963d95f6 100644 --- a/src/data/pokemon/form_change_tables.h +++ b/src/data/pokemon/form_change_tables.h @@ -1,19 +1,19 @@ static const struct FormChange sVenusaurFormChangeTable[] = { {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_VENUSAUR_MEGA, ITEM_VENUSAURITE}, - {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_VENUSAUR_GMAX}, + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_VENUSAUR_GIGANTAMAX}, {FORM_CHANGE_TERMINATOR}, }; static const struct FormChange sCharizardFormChangeTable[] = { {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_CHARIZARD_MEGA_X, ITEM_CHARIZARDITE_X}, {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_CHARIZARD_MEGA_Y, ITEM_CHARIZARDITE_Y}, - {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_CHARIZARD_GMAX}, + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_CHARIZARD_GIGANTAMAX}, {FORM_CHANGE_TERMINATOR}, }; static const struct FormChange sBlastoiseFormChangeTable[] = { {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_BLASTOISE_MEGA, ITEM_BLASTOISINITE}, - {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_BLASTOISE_GMAX}, + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_BLASTOISE_GIGANTAMAX}, {FORM_CHANGE_TERMINATOR}, }; @@ -39,7 +39,7 @@ static const struct FormChange sSlowbroFormChangeTable[] = { static const struct FormChange sGengarFormChangeTable[] = { {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_GENGAR_MEGA, ITEM_GENGARITE}, - {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_GENGAR_GMAX}, + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_GENGAR_GIGANTAMAX}, {FORM_CHANGE_TERMINATOR}, }; @@ -608,10 +608,10 @@ static const struct FormChange sEnamorusFormChangeTable[] = { #endif // Gigantamax Forms -#define GIGANTAMAX_FORM(species) \ - { \ - {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_##species##_GMAX}, \ - {FORM_CHANGE_TERMINATOR}, \ +#define GIGANTAMAX_FORM(species) \ + { \ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_##species##_GIGANTAMAX},\ + {FORM_CHANGE_TERMINATOR}, \ }; static const struct FormChange sButterfreeFormChangeTable[] = GIGANTAMAX_FORM(BUTTERFREE) diff --git a/src/data/pokemon/form_species_table_pointers.h b/src/data/pokemon/form_species_table_pointers.h index ff92bae00e..b27fc1ae0e 100644 --- a/src/data/pokemon/form_species_table_pointers.h +++ b/src/data/pokemon/form_species_table_pointers.h @@ -594,38 +594,38 @@ const u16 *const gFormSpeciesIdTables[NUM_SPECIES] = // Basculegion [SPECIES_BASCULEGION_FEMALE] = sBasculegionFormSpeciesIdTable, // Gigantamax Forms - [SPECIES_VENUSAUR_GMAX] = sVenusaurFormSpeciesIdTable, - [SPECIES_CHARIZARD_GMAX] = sCharizardFormSpeciesIdTable, - [SPECIES_BLASTOISE_GMAX] = sBlastoiseFormSpeciesIdTable, - [SPECIES_BUTTERFREE_GMAX] = sButterfreeFormSpeciesIdTable, - [SPECIES_PIKACHU_GMAX] = sPikachuFormSpeciesIdTable, - [SPECIES_MEOWTH_GMAX] = sMeowthFormSpeciesIdTable, - [SPECIES_MACHAMP_GMAX] = sMachampFormSpeciesIdTable, - [SPECIES_GENGAR_GMAX] = sGengarFormSpeciesIdTable, - [SPECIES_KINGLER_GMAX] = sKinglerFormSpeciesIdTable, - [SPECIES_LAPRAS_GMAX] = sLaprasFormSpeciesIdTable, - [SPECIES_EEVEE_GMAX] = sEeveeFormSpeciesIdTable, - [SPECIES_SNORLAX_GMAX] = sSnorlaxFormSpeciesIdTable, - [SPECIES_GARBODOR_GMAX] = sGarbodorFormSpeciesIdTable, - [SPECIES_MELMETAL_GMAX] = sMelmetalFormSpeciesIdTable, - [SPECIES_RILLABOOM_GMAX] = sRillaboomFormSpeciesIdTable, - [SPECIES_CINDERACE_GMAX] = sCinderaceFormSpeciesIdTable, - [SPECIES_INTELEON_GMAX] = sInteleonFormSpeciesIdTable, - [SPECIES_CORVIKNIGHT_GMAX] = sCorviknightFormSpeciesIdTable, - [SPECIES_ORBEETLE_GMAX] = sOrbeetleFormSpeciesIdTable, - [SPECIES_DREDNAW_GMAX] = sDrednawFormSpeciesIdTable, - [SPECIES_COALOSSAL_GMAX] = sCoalossalFormSpeciesIdTable, - [SPECIES_FLAPPLE_GMAX] = sFlappleFormSpeciesIdTable, - [SPECIES_APPLETUN_GMAX] = sAppletunFormSpeciesIdTable, - [SPECIES_SANDACONDA_GMAX] = sSandacondaFormSpeciesIdTable, - [SPECIES_TOXTRICITY_GMAX] = sToxtricityFormSpeciesIdTable, - [SPECIES_CENTISKORCH_GMAX] = sCentiskorchFormSpeciesIdTable, - [SPECIES_HATTERENE_GMAX] = sHattereneFormSpeciesIdTable, - [SPECIES_GRIMMSNARL_GMAX] = sGrimmsnarlFormSpeciesIdTable, - [SPECIES_ALCREMIE_GMAX] = sAlcremieFormSpeciesIdTable, - [SPECIES_COPPERAJAH_GMAX] = sCopperajahFormSpeciesIdTable, - [SPECIES_DURALUDON_GMAX] = sDuraludonFormSpeciesIdTable, - [SPECIES_URSHIFU_GMAX] = sUrshifuFormSpeciesIdTable, - [SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GMAX] = sUrshifuFormSpeciesIdTable, + [SPECIES_VENUSAUR_GIGANTAMAX] = sVenusaurFormSpeciesIdTable, + [SPECIES_CHARIZARD_GIGANTAMAX] = sCharizardFormSpeciesIdTable, + [SPECIES_BLASTOISE_GIGANTAMAX] = sBlastoiseFormSpeciesIdTable, + [SPECIES_BUTTERFREE_GIGANTAMAX] = sButterfreeFormSpeciesIdTable, + [SPECIES_PIKACHU_GIGANTAMAX] = sPikachuFormSpeciesIdTable, + [SPECIES_MEOWTH_GIGANTAMAX] = sMeowthFormSpeciesIdTable, + [SPECIES_MACHAMP_GIGANTAMAX] = sMachampFormSpeciesIdTable, + [SPECIES_GENGAR_GIGANTAMAX] = sGengarFormSpeciesIdTable, + [SPECIES_KINGLER_GIGANTAMAX] = sKinglerFormSpeciesIdTable, + [SPECIES_LAPRAS_GIGANTAMAX] = sLaprasFormSpeciesIdTable, + [SPECIES_EEVEE_GIGANTAMAX] = sEeveeFormSpeciesIdTable, + [SPECIES_SNORLAX_GIGANTAMAX] = sSnorlaxFormSpeciesIdTable, + [SPECIES_GARBODOR_GIGANTAMAX] = sGarbodorFormSpeciesIdTable, + [SPECIES_MELMETAL_GIGANTAMAX] = sMelmetalFormSpeciesIdTable, + [SPECIES_RILLABOOM_GIGANTAMAX] = sRillaboomFormSpeciesIdTable, + [SPECIES_CINDERACE_GIGANTAMAX] = sCinderaceFormSpeciesIdTable, + [SPECIES_INTELEON_GIGANTAMAX] = sInteleonFormSpeciesIdTable, + [SPECIES_CORVIKNIGHT_GIGANTAMAX] = sCorviknightFormSpeciesIdTable, + [SPECIES_ORBEETLE_GIGANTAMAX] = sOrbeetleFormSpeciesIdTable, + [SPECIES_DREDNAW_GIGANTAMAX] = sDrednawFormSpeciesIdTable, + [SPECIES_COALOSSAL_GIGANTAMAX] = sCoalossalFormSpeciesIdTable, + [SPECIES_FLAPPLE_GIGANTAMAX] = sFlappleFormSpeciesIdTable, + [SPECIES_APPLETUN_GIGANTAMAX] = sAppletunFormSpeciesIdTable, + [SPECIES_SANDACONDA_GIGANTAMAX] = sSandacondaFormSpeciesIdTable, + [SPECIES_TOXTRICITY_GIGANTAMAX] = sToxtricityFormSpeciesIdTable, + [SPECIES_CENTISKORCH_GIGANTAMAX] = sCentiskorchFormSpeciesIdTable, + [SPECIES_HATTERENE_GIGANTAMAX] = sHattereneFormSpeciesIdTable, + [SPECIES_GRIMMSNARL_GIGANTAMAX] = sGrimmsnarlFormSpeciesIdTable, + [SPECIES_ALCREMIE_GIGANTAMAX] = sAlcremieFormSpeciesIdTable, + [SPECIES_COPPERAJAH_GIGANTAMAX] = sCopperajahFormSpeciesIdTable, + [SPECIES_DURALUDON_GIGANTAMAX] = sDuraludonFormSpeciesIdTable, + [SPECIES_URSHIFU_GIGANTAMAX] = sUrshifuFormSpeciesIdTable, + [SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX] = sUrshifuFormSpeciesIdTable, #endif }; diff --git a/src/data/pokemon/form_species_tables.h b/src/data/pokemon/form_species_tables.h index 565f4805d5..9e468b6661 100644 --- a/src/data/pokemon/form_species_tables.h +++ b/src/data/pokemon/form_species_tables.h @@ -1,7 +1,7 @@ static const u16 sVenusaurFormSpeciesIdTable[] = { SPECIES_VENUSAUR, SPECIES_VENUSAUR_MEGA, - SPECIES_VENUSAUR_GMAX, + SPECIES_VENUSAUR_GIGANTAMAX, FORM_SPECIES_END, }; @@ -9,20 +9,20 @@ static const u16 sCharizardFormSpeciesIdTable[] = { SPECIES_CHARIZARD, SPECIES_CHARIZARD_MEGA_X, SPECIES_CHARIZARD_MEGA_Y, - SPECIES_CHARIZARD_GMAX, + SPECIES_CHARIZARD_GIGANTAMAX, FORM_SPECIES_END, }; static const u16 sBlastoiseFormSpeciesIdTable[] = { SPECIES_BLASTOISE, SPECIES_BLASTOISE_MEGA, - SPECIES_BLASTOISE_GMAX, + SPECIES_BLASTOISE_GIGANTAMAX, FORM_SPECIES_END, }; static const u16 sButterfreeFormSpeciesIdTable[] = { SPECIES_BUTTERFREE, - SPECIES_BUTTERFREE_GMAX, + SPECIES_BUTTERFREE_GIGANTAMAX, FORM_SPECIES_END, }; @@ -66,7 +66,7 @@ static const u16 sPikachuFormSpeciesIdTable[] = { SPECIES_PIKACHU_ALOLA_CAP, SPECIES_PIKACHU_PARTNER_CAP, SPECIES_PIKACHU_WORLD_CAP, - SPECIES_PIKACHU_GMAX, + SPECIES_PIKACHU_GIGANTAMAX, FORM_SPECIES_END, }; @@ -116,7 +116,7 @@ static const u16 sMeowthFormSpeciesIdTable[] = { SPECIES_MEOWTH, SPECIES_MEOWTH_ALOLAN, SPECIES_MEOWTH_GALARIAN, - SPECIES_MEOWTH_GMAX, + SPECIES_MEOWTH_GIGANTAMAX, FORM_SPECIES_END, }; @@ -146,7 +146,7 @@ static const u16 sArcanineFormSpeciesIdTable[] = { static const u16 sMachampFormSpeciesIdTable[] = { SPECIES_MACHAMP, - SPECIES_MACHAMP_GMAX, + SPECIES_MACHAMP_GIGANTAMAX, FORM_SPECIES_END, }; @@ -213,14 +213,14 @@ static const u16 sMukFormSpeciesIdTable[] = { static const u16 sKinglerFormSpeciesIdTable[] = { SPECIES_KINGLER, - SPECIES_KINGLER_GMAX, + SPECIES_KINGLER_GIGANTAMAX, FORM_SPECIES_END, }; static const u16 sGengarFormSpeciesIdTable[] = { SPECIES_GENGAR, SPECIES_GENGAR_MEGA, - SPECIES_GENGAR_GMAX, + SPECIES_GENGAR_GIGANTAMAX, FORM_SPECIES_END, }; @@ -280,13 +280,13 @@ static const u16 sGyaradosFormSpeciesIdTable[] = { static const u16 sLaprasFormSpeciesIdTable[] = { SPECIES_LAPRAS, - SPECIES_LAPRAS_GMAX, + SPECIES_LAPRAS_GIGANTAMAX, FORM_SPECIES_END, }; static const u16 sEeveeFormSpeciesIdTable[] = { SPECIES_EEVEE, - SPECIES_EEVEE_GMAX, + SPECIES_EEVEE_GIGANTAMAX, FORM_SPECIES_END, }; @@ -298,7 +298,7 @@ static const u16 sAerodactylFormSpeciesIdTable[] = { static const u16 sSnorlaxFormSpeciesIdTable[] = { SPECIES_SNORLAX, - SPECIES_SNORLAX_GMAX, + SPECIES_SNORLAX_GIGANTAMAX, FORM_SPECIES_END, }; @@ -771,7 +771,7 @@ static const u16 sZoroarkFormSpeciesIdTable[] = { static const u16 sGarbodorFormSpeciesIdTable[] = { SPECIES_GARBODOR, - SPECIES_GARBODOR_GMAX, + SPECIES_GARBODOR_GIGANTAMAX, FORM_SPECIES_END, }; @@ -1096,68 +1096,68 @@ static const u16 sMagearnaFormSpeciesIdTable[] = { #if P_GEN_8_POKEMON == TRUE static const u16 sMelmetalFormSpeciesIdTable[] = { SPECIES_MELMETAL, - SPECIES_MELMETAL_GMAX, + SPECIES_MELMETAL_GIGANTAMAX, FORM_SPECIES_END, }; static const u16 sRillaboomFormSpeciesIdTable[] = { SPECIES_RILLABOOM, - SPECIES_RILLABOOM_GMAX, + SPECIES_RILLABOOM_GIGANTAMAX, FORM_SPECIES_END, }; static const u16 sCinderaceFormSpeciesIdTable[] = { SPECIES_CINDERACE, - SPECIES_CINDERACE_GMAX, + SPECIES_CINDERACE_GIGANTAMAX, FORM_SPECIES_END, }; static const u16 sInteleonFormSpeciesIdTable[] = { SPECIES_INTELEON, - SPECIES_INTELEON_GMAX, + SPECIES_INTELEON_GIGANTAMAX, FORM_SPECIES_END, }; static const u16 sCorviknightFormSpeciesIdTable[] = { SPECIES_CORVIKNIGHT, - SPECIES_CORVIKNIGHT_GMAX, + SPECIES_CORVIKNIGHT_GIGANTAMAX, FORM_SPECIES_END, }; static const u16 sOrbeetleFormSpeciesIdTable[] = { SPECIES_ORBEETLE, - SPECIES_ORBEETLE_GMAX, + SPECIES_ORBEETLE_GIGANTAMAX, FORM_SPECIES_END, }; static const u16 sDrednawFormSpeciesIdTable[] = { SPECIES_DREDNAW, - SPECIES_DREDNAW_GMAX, + SPECIES_DREDNAW_GIGANTAMAX, FORM_SPECIES_END, }; static const u16 sCoalossalFormSpeciesIdTable[] = { SPECIES_COALOSSAL, - SPECIES_COALOSSAL_GMAX, + SPECIES_COALOSSAL_GIGANTAMAX, FORM_SPECIES_END, }; static const u16 sFlappleFormSpeciesIdTable[] = { SPECIES_FLAPPLE, - SPECIES_FLAPPLE_GMAX, + SPECIES_FLAPPLE_GIGANTAMAX, FORM_SPECIES_END, }; static const u16 sAppletunFormSpeciesIdTable[] = { SPECIES_APPLETUN, - SPECIES_APPLETUN_GMAX, + SPECIES_APPLETUN_GIGANTAMAX, FORM_SPECIES_END, }; static const u16 sSandacondaFormSpeciesIdTable[] = { SPECIES_SANDACONDA, - SPECIES_SANDACONDA_GMAX, + SPECIES_SANDACONDA_GIGANTAMAX, FORM_SPECIES_END, }; @@ -1171,19 +1171,19 @@ static const u16 sCramorantFormSpeciesIdTable[] = { static const u16 sToxtricityFormSpeciesIdTable[] = { SPECIES_TOXTRICITY, SPECIES_TOXTRICITY_LOW_KEY, - SPECIES_TOXTRICITY_GMAX, + SPECIES_TOXTRICITY_GIGANTAMAX, FORM_SPECIES_END, }; static const u16 sCentiskorchFormSpeciesIdTable[] = { SPECIES_CENTISKORCH, - SPECIES_CENTISKORCH_GMAX, + SPECIES_CENTISKORCH_GIGANTAMAX, FORM_SPECIES_END, }; static const u16 sHattereneFormSpeciesIdTable[] = { SPECIES_HATTERENE, - SPECIES_HATTERENE_GMAX, + SPECIES_HATTERENE_GIGANTAMAX, FORM_SPECIES_END, }; @@ -1201,7 +1201,7 @@ static const u16 sPolteageistFormSpeciesIdTable[] = { static const u16 sGrimmsnarlFormSpeciesIdTable[] = { SPECIES_GRIMMSNARL, - SPECIES_GRIMMSNARL_GMAX, + SPECIES_GRIMMSNARL_GIGANTAMAX, FORM_SPECIES_END, }; @@ -1238,13 +1238,13 @@ static const u16 sMorpekoFormSpeciesIdTable[] = { static const u16 sCopperajahFormSpeciesIdTable[] = { SPECIES_COPPERAJAH, - SPECIES_COPPERAJAH_GMAX, + SPECIES_COPPERAJAH_GIGANTAMAX, FORM_SPECIES_END, }; static const u16 sDuraludonFormSpeciesIdTable[] = { SPECIES_DURALUDON, - SPECIES_DURALUDON_GMAX, + SPECIES_DURALUDON_GIGANTAMAX, FORM_SPECIES_END, }; @@ -1269,8 +1269,8 @@ static const u16 sEternatusFormSpeciesIdTable[] = { static const u16 sUrshifuFormSpeciesIdTable[] = { SPECIES_URSHIFU, SPECIES_URSHIFU_RAPID_STRIKE_STYLE, - SPECIES_URSHIFU_GMAX, - SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GMAX, + SPECIES_URSHIFU_GIGANTAMAX, + SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX, FORM_SPECIES_END, }; diff --git a/src/data/pokemon/level_up_learnset_pointers.h b/src/data/pokemon/level_up_learnset_pointers.h index 4b1615c181..a99c39aa96 100644 --- a/src/data/pokemon/level_up_learnset_pointers.h +++ b/src/data/pokemon/level_up_learnset_pointers.h @@ -1337,38 +1337,38 @@ const struct LevelUpMove *const gLevelUpLearnsets[NUM_SPECIES] = // Basculegion [SPECIES_BASCULEGION_FEMALE] = sBasculegionLevelUpLearnset, // Gigantamax Forms - [SPECIES_VENUSAUR_GMAX] = sVenusaurLevelUpLearnset, - [SPECIES_CHARIZARD_GMAX] = sCharizardLevelUpLearnset, - [SPECIES_BLASTOISE_GMAX] = sBlastoiseLevelUpLearnset, - [SPECIES_BUTTERFREE_GMAX] = sButterfreeLevelUpLearnset, - [SPECIES_PIKACHU_GMAX] = sPikachuLevelUpLearnset, - [SPECIES_MEOWTH_GMAX] = sMeowthLevelUpLearnset, - [SPECIES_MACHAMP_GMAX] = sMachampLevelUpLearnset, - [SPECIES_GENGAR_GMAX] = sGengarLevelUpLearnset, - [SPECIES_KINGLER_GMAX] = sKinglerLevelUpLearnset, - [SPECIES_LAPRAS_GMAX] = sLaprasLevelUpLearnset, - [SPECIES_EEVEE_GMAX] = sEeveeLevelUpLearnset, - [SPECIES_SNORLAX_GMAX] = sSnorlaxLevelUpLearnset, - [SPECIES_GARBODOR_GMAX] = sGarbodorLevelUpLearnset, - [SPECIES_MELMETAL_GMAX] = sMelmetalLevelUpLearnset, - [SPECIES_RILLABOOM_GMAX] = sRillaboomLevelUpLearnset, - [SPECIES_CINDERACE_GMAX] = sCinderaceLevelUpLearnset, - [SPECIES_INTELEON_GMAX] = sInteleonLevelUpLearnset, - [SPECIES_CORVIKNIGHT_GMAX] = sCorviknightLevelUpLearnset, - [SPECIES_ORBEETLE_GMAX] = sOrbeetleLevelUpLearnset, - [SPECIES_DREDNAW_GMAX] = sDrednawLevelUpLearnset, - [SPECIES_COALOSSAL_GMAX] = sCoalossalLevelUpLearnset, - [SPECIES_FLAPPLE_GMAX] = sFlappleLevelUpLearnset, - [SPECIES_APPLETUN_GMAX] = sAppletunLevelUpLearnset, - [SPECIES_SANDACONDA_GMAX] = sSandacondaLevelUpLearnset, - [SPECIES_TOXTRICITY_GMAX] = sToxtricityLevelUpLearnset, - [SPECIES_CENTISKORCH_GMAX] = sCentiskorchLevelUpLearnset, - [SPECIES_HATTERENE_GMAX] = sHattereneLevelUpLearnset, - [SPECIES_GRIMMSNARL_GMAX] = sGrimmsnarlLevelUpLearnset, - [SPECIES_ALCREMIE_GMAX] = sAlcremieLevelUpLearnset, - [SPECIES_COPPERAJAH_GMAX] = sCopperajahLevelUpLearnset, - [SPECIES_DURALUDON_GMAX] = sDuraludonLevelUpLearnset, - [SPECIES_URSHIFU_GMAX] = sUrshifuLevelUpLearnset, - [SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GMAX] = sUrshifuRapidStrikeStyleLevelUpLearnset, + [SPECIES_VENUSAUR_GIGANTAMAX] = sVenusaurLevelUpLearnset, + [SPECIES_CHARIZARD_GIGANTAMAX] = sCharizardLevelUpLearnset, + [SPECIES_BLASTOISE_GIGANTAMAX] = sBlastoiseLevelUpLearnset, + [SPECIES_BUTTERFREE_GIGANTAMAX] = sButterfreeLevelUpLearnset, + [SPECIES_PIKACHU_GIGANTAMAX] = sPikachuLevelUpLearnset, + [SPECIES_MEOWTH_GIGANTAMAX] = sMeowthLevelUpLearnset, + [SPECIES_MACHAMP_GIGANTAMAX] = sMachampLevelUpLearnset, + [SPECIES_GENGAR_GIGANTAMAX] = sGengarLevelUpLearnset, + [SPECIES_KINGLER_GIGANTAMAX] = sKinglerLevelUpLearnset, + [SPECIES_LAPRAS_GIGANTAMAX] = sLaprasLevelUpLearnset, + [SPECIES_EEVEE_GIGANTAMAX] = sEeveeLevelUpLearnset, + [SPECIES_SNORLAX_GIGANTAMAX] = sSnorlaxLevelUpLearnset, + [SPECIES_GARBODOR_GIGANTAMAX] = sGarbodorLevelUpLearnset, + [SPECIES_MELMETAL_GIGANTAMAX] = sMelmetalLevelUpLearnset, + [SPECIES_RILLABOOM_GIGANTAMAX] = sRillaboomLevelUpLearnset, + [SPECIES_CINDERACE_GIGANTAMAX] = sCinderaceLevelUpLearnset, + [SPECIES_INTELEON_GIGANTAMAX] = sInteleonLevelUpLearnset, + [SPECIES_CORVIKNIGHT_GIGANTAMAX] = sCorviknightLevelUpLearnset, + [SPECIES_ORBEETLE_GIGANTAMAX] = sOrbeetleLevelUpLearnset, + [SPECIES_DREDNAW_GIGANTAMAX] = sDrednawLevelUpLearnset, + [SPECIES_COALOSSAL_GIGANTAMAX] = sCoalossalLevelUpLearnset, + [SPECIES_FLAPPLE_GIGANTAMAX] = sFlappleLevelUpLearnset, + [SPECIES_APPLETUN_GIGANTAMAX] = sAppletunLevelUpLearnset, + [SPECIES_SANDACONDA_GIGANTAMAX] = sSandacondaLevelUpLearnset, + [SPECIES_TOXTRICITY_GIGANTAMAX] = sToxtricityLevelUpLearnset, + [SPECIES_CENTISKORCH_GIGANTAMAX] = sCentiskorchLevelUpLearnset, + [SPECIES_HATTERENE_GIGANTAMAX] = sHattereneLevelUpLearnset, + [SPECIES_GRIMMSNARL_GIGANTAMAX] = sGrimmsnarlLevelUpLearnset, + [SPECIES_ALCREMIE_GIGANTAMAX] = sAlcremieLevelUpLearnset, + [SPECIES_COPPERAJAH_GIGANTAMAX] = sCopperajahLevelUpLearnset, + [SPECIES_DURALUDON_GIGANTAMAX] = sDuraludonLevelUpLearnset, + [SPECIES_URSHIFU_GIGANTAMAX] = sUrshifuLevelUpLearnset, + [SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX] = sUrshifuRapidStrikeStyleLevelUpLearnset, #endif }; diff --git a/src/data/pokemon/species_info.h b/src/data/pokemon/species_info.h index 4dc49fda85..25f491cf28 100644 --- a/src/data/pokemon/species_info.h +++ b/src/data/pokemon/species_info.h @@ -24836,167 +24836,167 @@ const struct SpeciesInfo gSpeciesInfo[] = }, // Gigantamax Forms - [SPECIES_VENUSAUR_GMAX] = + [SPECIES_VENUSAUR_GIGANTAMAX] = { VENUSAUR_MISC_INFO, .gigantamax = TRUE, }, - [SPECIES_CHARIZARD_GMAX] = + [SPECIES_CHARIZARD_GIGANTAMAX] = { CHARIZARD_MISC_INFO, .gigantamax = TRUE, }, - [SPECIES_BLASTOISE_GMAX] = + [SPECIES_BLASTOISE_GIGANTAMAX] = { BLASTOISE_MISC_INFO, .gigantamax = TRUE, }, - [SPECIES_BUTTERFREE_GMAX] = + [SPECIES_BUTTERFREE_GIGANTAMAX] = { BUTTERFREE_MISC_INFO, .gigantamax = TRUE, }, - [SPECIES_PIKACHU_GMAX] = + [SPECIES_PIKACHU_GIGANTAMAX] = { PIKACHU_MISC_INFO(PERCENT_FEMALE(50), FLIP), .gigantamax = TRUE, }, - [SPECIES_MEOWTH_GMAX] = + [SPECIES_MEOWTH_GIGANTAMAX] = { MEOWTH_MISC_INFO, .gigantamax = TRUE, }, - [SPECIES_MACHAMP_GMAX] = + [SPECIES_MACHAMP_GIGANTAMAX] = { MACHAMP_MISC_INFO, .gigantamax = TRUE, }, - [SPECIES_GENGAR_GMAX] = + [SPECIES_GENGAR_GIGANTAMAX] = { GENGAR_MISC_INFO, .gigantamax = TRUE, }, - [SPECIES_KINGLER_GMAX] = + [SPECIES_KINGLER_GIGANTAMAX] = { KINGLER_MISC_INFO, .gigantamax = TRUE, }, - [SPECIES_LAPRAS_GMAX] = + [SPECIES_LAPRAS_GIGANTAMAX] = { LAPRAS_MISC_INFO, .gigantamax = TRUE, }, - [SPECIES_EEVEE_GMAX] = + [SPECIES_EEVEE_GIGANTAMAX] = { EEVEE_MISC_INFO, .gigantamax = TRUE, }, - [SPECIES_SNORLAX_GMAX] = + [SPECIES_SNORLAX_GIGANTAMAX] = { SNORLAX_MISC_INFO, .gigantamax = TRUE, }, - [SPECIES_GARBODOR_GMAX] = + [SPECIES_GARBODOR_GIGANTAMAX] = { GARBODOR_MISC_INFO, .gigantamax = TRUE, }, - [SPECIES_MELMETAL_GMAX] = + [SPECIES_MELMETAL_GIGANTAMAX] = { MELMETAL_MISC_INFO, .gigantamax = TRUE, }, - [SPECIES_RILLABOOM_GMAX] = + [SPECIES_RILLABOOM_GIGANTAMAX] = { RILLABOOM_MISC_INFO, .gigantamax = TRUE, }, - [SPECIES_CINDERACE_GMAX] = + [SPECIES_CINDERACE_GIGANTAMAX] = { CINDERACE_MISC_INFO, .gigantamax = TRUE, }, - [SPECIES_INTELEON_GMAX] = + [SPECIES_INTELEON_GIGANTAMAX] = { INTELEON_MISC_INFO, .gigantamax = TRUE, }, - [SPECIES_CORVIKNIGHT_GMAX] = + [SPECIES_CORVIKNIGHT_GIGANTAMAX] = { CORVIKNIGHT_MISC_INFO, .gigantamax = TRUE, }, - [SPECIES_ORBEETLE_GMAX] = + [SPECIES_ORBEETLE_GIGANTAMAX] = { ORBEETLE_MISC_INFO, .gigantamax = TRUE, }, - [SPECIES_DREDNAW_GMAX] = + [SPECIES_DREDNAW_GIGANTAMAX] = { DREDNAW_MISC_INFO, .gigantamax = TRUE, }, - [SPECIES_COALOSSAL_GMAX] = + [SPECIES_COALOSSAL_GIGANTAMAX] = { COALOSSAL_MISC_INFO, .gigantamax = TRUE, }, - [SPECIES_FLAPPLE_GMAX] = + [SPECIES_FLAPPLE_GIGANTAMAX] = { FLAPPLE_MISC_INFO, .gigantamax = TRUE, }, - [SPECIES_APPLETUN_GMAX] = + [SPECIES_APPLETUN_GIGANTAMAX] = { APPLETUN_MISC_INFO, .gigantamax = TRUE, }, - [SPECIES_SANDACONDA_GMAX] = + [SPECIES_SANDACONDA_GIGANTAMAX] = { SANDACONDA_MISC_INFO, .gigantamax = TRUE, }, - [SPECIES_TOXTRICITY_GMAX] = + [SPECIES_TOXTRICITY_GIGANTAMAX] = { TOXTRICITY_MISC_INFO(ABILITY_PLUS), .gigantamax = TRUE, }, - [SPECIES_CENTISKORCH_GMAX] = + [SPECIES_CENTISKORCH_GIGANTAMAX] = { CENTISKORCH_MISC_INFO, .gigantamax = TRUE, }, - [SPECIES_HATTERENE_GMAX] = + [SPECIES_HATTERENE_GIGANTAMAX] = { HATTERENE_MISC_INFO, .gigantamax = TRUE, }, - [SPECIES_GRIMMSNARL_GMAX] = + [SPECIES_GRIMMSNARL_GIGANTAMAX] = { GRIMMSNARL_MISC_INFO, .gigantamax = TRUE, }, - [SPECIES_ALCREMIE_GMAX] = + [SPECIES_ALCREMIE_GIGANTAMAX] = { ALCREMIE_MISC_INFO(BODY_COLOR_PINK), .gigantamax = TRUE, }, - [SPECIES_COPPERAJAH_GMAX] = + [SPECIES_COPPERAJAH_GIGANTAMAX] = { COPPERAJAH_MISC_INFO, .gigantamax = TRUE, }, - [SPECIES_DURALUDON_GMAX] = + [SPECIES_DURALUDON_GIGANTAMAX] = { DURALUDON_MISC_INFO, .gigantamax = TRUE, }, - [SPECIES_URSHIFU_GMAX] = + [SPECIES_URSHIFU_GIGANTAMAX] = { URSHIFU_MISC_INFO, .gigantamax = TRUE, }, - [SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GMAX] = + [SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX] = { URSHIFU_RAPID_STRIKE_STYLE_MISC_INFO, .gigantamax = TRUE, diff --git a/src/data/pokemon/teachable_learnset_pointers.h b/src/data/pokemon/teachable_learnset_pointers.h index af55f21bf5..b4505e9219 100644 --- a/src/data/pokemon/teachable_learnset_pointers.h +++ b/src/data/pokemon/teachable_learnset_pointers.h @@ -1337,38 +1337,38 @@ const u16 *const gTeachableLearnsets[NUM_SPECIES] = // Basculegion [SPECIES_BASCULEGION_FEMALE] = sBasculegionTeachableLearnset, // Gigantamax Forms - [SPECIES_VENUSAUR_GMAX] = sVenusaurTeachableLearnset, - [SPECIES_CHARIZARD_GMAX] = sCharizardTeachableLearnset, - [SPECIES_BLASTOISE_GMAX] = sBlastoiseTeachableLearnset, - [SPECIES_BUTTERFREE_GMAX] = sButterfreeTeachableLearnset, - [SPECIES_PIKACHU_GMAX] = sPikachuTeachableLearnset, - [SPECIES_MEOWTH_GMAX] = sMeowthTeachableLearnset, - [SPECIES_MACHAMP_GMAX] = sMachampTeachableLearnset, - [SPECIES_GENGAR_GMAX] = sGengarTeachableLearnset, - [SPECIES_KINGLER_GMAX] = sKinglerTeachableLearnset, - [SPECIES_LAPRAS_GMAX] = sLaprasTeachableLearnset, - [SPECIES_EEVEE_GMAX] = sEeveeTeachableLearnset, - [SPECIES_SNORLAX_GMAX] = sSnorlaxTeachableLearnset, - [SPECIES_GARBODOR_GMAX] = sGarbodorTeachableLearnset, - [SPECIES_MELMETAL_GMAX] = sMelmetalTeachableLearnset, - [SPECIES_RILLABOOM_GMAX] = sRillaboomTeachableLearnset, - [SPECIES_CINDERACE_GMAX] = sCinderaceTeachableLearnset, - [SPECIES_INTELEON_GMAX] = sInteleonTeachableLearnset, - [SPECIES_CORVIKNIGHT_GMAX] = sCorviknightTeachableLearnset, - [SPECIES_ORBEETLE_GMAX] = sOrbeetleTeachableLearnset, - [SPECIES_DREDNAW_GMAX] = sDrednawTeachableLearnset, - [SPECIES_COALOSSAL_GMAX] = sCoalossalTeachableLearnset, - [SPECIES_FLAPPLE_GMAX] = sFlappleTeachableLearnset, - [SPECIES_APPLETUN_GMAX] = sAppletunTeachableLearnset, - [SPECIES_SANDACONDA_GMAX] = sSandacondaTeachableLearnset, - [SPECIES_TOXTRICITY_GMAX] = sToxtricityTeachableLearnset, - [SPECIES_CENTISKORCH_GMAX] = sCentiskorchTeachableLearnset, - [SPECIES_HATTERENE_GMAX] = sHattereneTeachableLearnset, - [SPECIES_GRIMMSNARL_GMAX] = sGrimmsnarlTeachableLearnset, - [SPECIES_ALCREMIE_GMAX] = sAlcremieTeachableLearnset, - [SPECIES_COPPERAJAH_GMAX] = sCopperajahTeachableLearnset, - [SPECIES_DURALUDON_GMAX] = sDuraludonTeachableLearnset, - [SPECIES_URSHIFU_GMAX] = sUrshifuTeachableLearnset, - [SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GMAX] = sUrshifuRapidStrikeStyleTeachableLearnset, + [SPECIES_VENUSAUR_GIGANTAMAX] = sVenusaurTeachableLearnset, + [SPECIES_CHARIZARD_GIGANTAMAX] = sCharizardTeachableLearnset, + [SPECIES_BLASTOISE_GIGANTAMAX] = sBlastoiseTeachableLearnset, + [SPECIES_BUTTERFREE_GIGANTAMAX] = sButterfreeTeachableLearnset, + [SPECIES_PIKACHU_GIGANTAMAX] = sPikachuTeachableLearnset, + [SPECIES_MEOWTH_GIGANTAMAX] = sMeowthTeachableLearnset, + [SPECIES_MACHAMP_GIGANTAMAX] = sMachampTeachableLearnset, + [SPECIES_GENGAR_GIGANTAMAX] = sGengarTeachableLearnset, + [SPECIES_KINGLER_GIGANTAMAX] = sKinglerTeachableLearnset, + [SPECIES_LAPRAS_GIGANTAMAX] = sLaprasTeachableLearnset, + [SPECIES_EEVEE_GIGANTAMAX] = sEeveeTeachableLearnset, + [SPECIES_SNORLAX_GIGANTAMAX] = sSnorlaxTeachableLearnset, + [SPECIES_GARBODOR_GIGANTAMAX] = sGarbodorTeachableLearnset, + [SPECIES_MELMETAL_GIGANTAMAX] = sMelmetalTeachableLearnset, + [SPECIES_RILLABOOM_GIGANTAMAX] = sRillaboomTeachableLearnset, + [SPECIES_CINDERACE_GIGANTAMAX] = sCinderaceTeachableLearnset, + [SPECIES_INTELEON_GIGANTAMAX] = sInteleonTeachableLearnset, + [SPECIES_CORVIKNIGHT_GIGANTAMAX] = sCorviknightTeachableLearnset, + [SPECIES_ORBEETLE_GIGANTAMAX] = sOrbeetleTeachableLearnset, + [SPECIES_DREDNAW_GIGANTAMAX] = sDrednawTeachableLearnset, + [SPECIES_COALOSSAL_GIGANTAMAX] = sCoalossalTeachableLearnset, + [SPECIES_FLAPPLE_GIGANTAMAX] = sFlappleTeachableLearnset, + [SPECIES_APPLETUN_GIGANTAMAX] = sAppletunTeachableLearnset, + [SPECIES_SANDACONDA_GIGANTAMAX] = sSandacondaTeachableLearnset, + [SPECIES_TOXTRICITY_GIGANTAMAX] = sToxtricityTeachableLearnset, + [SPECIES_CENTISKORCH_GIGANTAMAX] = sCentiskorchTeachableLearnset, + [SPECIES_HATTERENE_GIGANTAMAX] = sHattereneTeachableLearnset, + [SPECIES_GRIMMSNARL_GIGANTAMAX] = sGrimmsnarlTeachableLearnset, + [SPECIES_ALCREMIE_GIGANTAMAX] = sAlcremieTeachableLearnset, + [SPECIES_COPPERAJAH_GIGANTAMAX] = sCopperajahTeachableLearnset, + [SPECIES_DURALUDON_GIGANTAMAX] = sDuraludonTeachableLearnset, + [SPECIES_URSHIFU_GIGANTAMAX] = sUrshifuTeachableLearnset, + [SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX] = sUrshifuRapidStrikeStyleTeachableLearnset, #endif }; diff --git a/src/data/pokemon_graphics/back_pic_coordinates.h b/src/data/pokemon_graphics/back_pic_coordinates.h index dd53a65a6f..6cbaa6c493 100644 --- a/src/data/pokemon_graphics/back_pic_coordinates.h +++ b/src/data/pokemon_graphics/back_pic_coordinates.h @@ -1359,39 +1359,39 @@ const struct MonCoords gMonBackPicCoords[NUM_SPECIES + 1] = // Basculegion [SPECIES_BASCULEGION_FEMALE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, // Gigantamax Forms - [SPECIES_VENUSAUR_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 11 }, - [SPECIES_CHARIZARD_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, - [SPECIES_BLASTOISE_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 5 }, - [SPECIES_BUTTERFREE_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - [SPECIES_PIKACHU_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_MEOWTH_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 5 }, - [SPECIES_MACHAMP_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - [SPECIES_GENGAR_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 6 }, - [SPECIES_KINGLER_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 5 }, - [SPECIES_LAPRAS_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, - [SPECIES_EEVEE_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 7 }, - [SPECIES_SNORLAX_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 5 }, - [SPECIES_GARBODOR_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_MELMETAL_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 14 }, - [SPECIES_RILLABOOM_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 4 }, - [SPECIES_CINDERACE_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 4 }, - [SPECIES_INTELEON_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 4 }, - [SPECIES_CORVIKNIGHT_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - [SPECIES_ORBEETLE_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 6 }, - [SPECIES_DREDNAW_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 12 }, - [SPECIES_COALOSSAL_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 8 }, - [SPECIES_FLAPPLE_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_APPLETUN_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_SANDACONDA_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 5 }, - [SPECIES_TOXTRICITY_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_CENTISKORCH_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, - [SPECIES_HATTERENE_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - [SPECIES_GRIMMSNARL_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 10 }, - [SPECIES_ALCREMIE_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 8 }, - [SPECIES_COPPERAJAH_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 7 }, - [SPECIES_DURALUDON_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_URSHIFU_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 4 }, - [SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 4 }, + [SPECIES_VENUSAUR_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 11 }, + [SPECIES_CHARIZARD_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, + [SPECIES_BLASTOISE_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 5 }, + [SPECIES_BUTTERFREE_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, + [SPECIES_PIKACHU_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_MEOWTH_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 5 }, + [SPECIES_MACHAMP_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, + [SPECIES_GENGAR_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 6 }, + [SPECIES_KINGLER_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 5 }, + [SPECIES_LAPRAS_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, + [SPECIES_EEVEE_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 7 }, + [SPECIES_SNORLAX_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 5 }, + [SPECIES_GARBODOR_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, + [SPECIES_MELMETAL_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 14 }, + [SPECIES_RILLABOOM_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 4 }, + [SPECIES_CINDERACE_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 4 }, + [SPECIES_INTELEON_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 4 }, + [SPECIES_CORVIKNIGHT_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, + [SPECIES_ORBEETLE_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 6 }, + [SPECIES_DREDNAW_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 12 }, + [SPECIES_COALOSSAL_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 8 }, + [SPECIES_FLAPPLE_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, + [SPECIES_APPLETUN_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, + [SPECIES_SANDACONDA_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 5 }, + [SPECIES_TOXTRICITY_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_CENTISKORCH_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, + [SPECIES_HATTERENE_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, + [SPECIES_GRIMMSNARL_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 10 }, + [SPECIES_ALCREMIE_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 8 }, + [SPECIES_COPPERAJAH_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 7 }, + [SPECIES_DURALUDON_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_URSHIFU_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 4 }, + [SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 4 }, #endif [SPECIES_EGG] = { .size = MON_COORDS_SIZE(24, 24), .y_offset = 20 }, }; diff --git a/src/data/pokemon_graphics/back_pic_table.h b/src/data/pokemon_graphics/back_pic_table.h index 9fe8add43f..06316431cc 100644 --- a/src/data/pokemon_graphics/back_pic_table.h +++ b/src/data/pokemon_graphics/back_pic_table.h @@ -1336,39 +1336,39 @@ const struct CompressedSpriteSheet gMonBackPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(BASCULEGION_FEMALE, gMonBackPic_BasculegionFemale), // Gigantamax Forms - SPECIES_SPRITE(VENUSAUR_GMAX, gMonBackPic_VenusaurGmax), - SPECIES_SPRITE(CHARIZARD_GMAX, gMonBackPic_CharizardGmax), - SPECIES_SPRITE(BLASTOISE_GMAX, gMonBackPic_BlastoiseGmax), - SPECIES_SPRITE(BUTTERFREE_GMAX, gMonBackPic_ButterfreeGmax), - SPECIES_SPRITE(PIKACHU_GMAX, gMonBackPic_PikachuGmax), - SPECIES_SPRITE(MEOWTH_GMAX, gMonBackPic_MeowthGmax), - SPECIES_SPRITE(MACHAMP_GMAX, gMonBackPic_MachampGmax), - SPECIES_SPRITE(GENGAR_GMAX, gMonBackPic_GengarGmax), - SPECIES_SPRITE(KINGLER_GMAX, gMonBackPic_KinglerGmax), - SPECIES_SPRITE(LAPRAS_GMAX, gMonBackPic_LaprasGmax), - SPECIES_SPRITE(EEVEE_GMAX, gMonBackPic_EeveeGmax), - SPECIES_SPRITE(SNORLAX_GMAX, gMonBackPic_SnorlaxGmax), - SPECIES_SPRITE(GARBODOR_GMAX, gMonBackPic_GarbodorGmax), - SPECIES_SPRITE(MELMETAL_GMAX, gMonBackPic_MelmetalGmax), - SPECIES_SPRITE(RILLABOOM_GMAX, gMonBackPic_RillaboomGmax), - SPECIES_SPRITE(CINDERACE_GMAX, gMonBackPic_CinderaceGmax), - SPECIES_SPRITE(INTELEON_GMAX, gMonBackPic_InteleonGmax), - SPECIES_SPRITE(CORVIKNIGHT_GMAX, gMonBackPic_CorviknightGmax), - SPECIES_SPRITE(ORBEETLE_GMAX, gMonBackPic_OrbeetleGmax), - SPECIES_SPRITE(DREDNAW_GMAX, gMonBackPic_DrednawGmax), - SPECIES_SPRITE(COALOSSAL_GMAX, gMonBackPic_CoalossalGmax), - SPECIES_SPRITE(FLAPPLE_GMAX, gMonBackPic_FlappleGmax), - SPECIES_SPRITE(APPLETUN_GMAX, gMonBackPic_AppletunGmax), - SPECIES_SPRITE(SANDACONDA_GMAX, gMonBackPic_SandacondaGmax), - SPECIES_SPRITE(TOXTRICITY_GMAX, gMonBackPic_ToxtricityGmax), - SPECIES_SPRITE(CENTISKORCH_GMAX, gMonBackPic_CentiskorchGmax), - SPECIES_SPRITE(HATTERENE_GMAX, gMonBackPic_HattereneGmax), - SPECIES_SPRITE(GRIMMSNARL_GMAX, gMonBackPic_GrimmsnarlGmax), - SPECIES_SPRITE(ALCREMIE_GMAX, gMonBackPic_AlcremieGmax), - SPECIES_SPRITE(COPPERAJAH_GMAX, gMonBackPic_CopperajahGmax), - SPECIES_SPRITE(DURALUDON_GMAX, gMonBackPic_DuraludonGmax), - SPECIES_SPRITE(URSHIFU_GMAX, gMonBackPic_UrshifuGmax), - SPECIES_SPRITE(URSHIFU_RAPID_STRIKE_STYLE_GMAX, gMonBackPic_UrshifuRapidStrikeGmax), + SPECIES_SPRITE(VENUSAUR_GIGANTAMAX, gMonBackPic_VenusaurGigantamax), + SPECIES_SPRITE(CHARIZARD_GIGANTAMAX, gMonBackPic_CharizardGigantamax), + SPECIES_SPRITE(BLASTOISE_GIGANTAMAX, gMonBackPic_BlastoiseGigantamax), + SPECIES_SPRITE(BUTTERFREE_GIGANTAMAX, gMonBackPic_ButterfreeGigantamax), + SPECIES_SPRITE(PIKACHU_GIGANTAMAX, gMonBackPic_PikachuGigantamax), + SPECIES_SPRITE(MEOWTH_GIGANTAMAX, gMonBackPic_MeowthGigantamax), + SPECIES_SPRITE(MACHAMP_GIGANTAMAX, gMonBackPic_MachampGigantamax), + SPECIES_SPRITE(GENGAR_GIGANTAMAX, gMonBackPic_GengarGigantamax), + SPECIES_SPRITE(KINGLER_GIGANTAMAX, gMonBackPic_KinglerGigantamax), + SPECIES_SPRITE(LAPRAS_GIGANTAMAX, gMonBackPic_LaprasGigantamax), + SPECIES_SPRITE(EEVEE_GIGANTAMAX, gMonBackPic_EeveeGigantamax), + SPECIES_SPRITE(SNORLAX_GIGANTAMAX, gMonBackPic_SnorlaxGigantamax), + SPECIES_SPRITE(GARBODOR_GIGANTAMAX, gMonBackPic_GarbodorGigantamax), + SPECIES_SPRITE(MELMETAL_GIGANTAMAX, gMonBackPic_MelmetalGigantamax), + SPECIES_SPRITE(RILLABOOM_GIGANTAMAX, gMonBackPic_RillaboomGigantamax), + SPECIES_SPRITE(CINDERACE_GIGANTAMAX, gMonBackPic_CinderaceGigantamax), + SPECIES_SPRITE(INTELEON_GIGANTAMAX, gMonBackPic_InteleonGigantamax), + SPECIES_SPRITE(CORVIKNIGHT_GIGANTAMAX, gMonBackPic_CorviknightGigantamax), + SPECIES_SPRITE(ORBEETLE_GIGANTAMAX, gMonBackPic_OrbeetleGigantamax), + SPECIES_SPRITE(DREDNAW_GIGANTAMAX, gMonBackPic_DrednawGigantamax), + SPECIES_SPRITE(COALOSSAL_GIGANTAMAX, gMonBackPic_CoalossalGigantamax), + SPECIES_SPRITE(FLAPPLE_GIGANTAMAX, gMonBackPic_FlappleGigantamax), + SPECIES_SPRITE(APPLETUN_GIGANTAMAX, gMonBackPic_AppletunGigantamax), + SPECIES_SPRITE(SANDACONDA_GIGANTAMAX, gMonBackPic_SandacondaGigantamax), + SPECIES_SPRITE(TOXTRICITY_GIGANTAMAX, gMonBackPic_ToxtricityGigantamax), + SPECIES_SPRITE(CENTISKORCH_GIGANTAMAX, gMonBackPic_CentiskorchGigantamax), + SPECIES_SPRITE(HATTERENE_GIGANTAMAX, gMonBackPic_HattereneGigantamax), + SPECIES_SPRITE(GRIMMSNARL_GIGANTAMAX, gMonBackPic_GrimmsnarlGigantamax), + SPECIES_SPRITE(ALCREMIE_GIGANTAMAX, gMonBackPic_AlcremieGigantamax), + SPECIES_SPRITE(COPPERAJAH_GIGANTAMAX, gMonBackPic_CopperajahGigantamax), + SPECIES_SPRITE(DURALUDON_GIGANTAMAX, gMonBackPic_DuraludonGigantamax), + SPECIES_SPRITE(URSHIFU_GIGANTAMAX, gMonBackPic_UrshifuGigantamax), + SPECIES_SPRITE(URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX, gMonBackPic_UrshifuRapidStrikeGigantamax), #endif SPECIES_SPRITE(EGG, gMonFrontPic_Egg), }; diff --git a/src/data/pokemon_graphics/enemy_mon_elevation.h b/src/data/pokemon_graphics/enemy_mon_elevation.h index 65e385eee0..436e7e1dd7 100644 --- a/src/data/pokemon_graphics/enemy_mon_elevation.h +++ b/src/data/pokemon_graphics/enemy_mon_elevation.h @@ -268,5 +268,5 @@ const u8 gEnemyMonElevation[NUM_SPECIES + 1] = [SPECIES_SINISTEA_ANTIQUE] = 10, [SPECIES_POLTEAGEIST_ANTIQUE] = 12, [SPECIES_ETERNATUS_ETERNAMAX] = 13, - [SPECIES_BUTTERFREE_GMAX] = 10, + [SPECIES_BUTTERFREE_GIGANTAMAX] = 10, }; diff --git a/src/data/pokemon_graphics/front_pic_anims.h b/src/data/pokemon_graphics/front_pic_anims.h index 02af47f774..562415d940 100644 --- a/src/data/pokemon_graphics/front_pic_anims.h +++ b/src/data/pokemon_graphics/front_pic_anims.h @@ -10154,202 +10154,202 @@ static const union AnimCmd sAnim_DecidueyeHisuian_1[] = }; #endif -static const union AnimCmd sAnim_VENUSAUR_GMAX_1[] = +static const union AnimCmd sAnim_VENUSAUR_GIGANTAMAX_1[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; -static const union AnimCmd sAnim_CHARIZARD_GMAX_1[] = +static const union AnimCmd sAnim_CHARIZARD_GIGANTAMAX_1[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; -static const union AnimCmd sAnim_BLASTOISE_GMAX_1[] = +static const union AnimCmd sAnim_BLASTOISE_GIGANTAMAX_1[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; -static const union AnimCmd sAnim_BUTTERFREE_GMAX_1[] = +static const union AnimCmd sAnim_BUTTERFREE_GIGANTAMAX_1[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; -static const union AnimCmd sAnim_PIKACHU_GMAX_1[] = +static const union AnimCmd sAnim_PIKACHU_GIGANTAMAX_1[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; -static const union AnimCmd sAnim_MEOWTH_GMAX_1[] = +static const union AnimCmd sAnim_MEOWTH_GIGANTAMAX_1[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; -static const union AnimCmd sAnim_MACHAMP_GMAX_1[] = +static const union AnimCmd sAnim_MACHAMP_GIGANTAMAX_1[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; -static const union AnimCmd sAnim_GENGAR_GMAX_1[] = +static const union AnimCmd sAnim_GENGAR_GIGANTAMAX_1[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; -static const union AnimCmd sAnim_KINGLER_GMAX_1[] = +static const union AnimCmd sAnim_KINGLER_GIGANTAMAX_1[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; -static const union AnimCmd sAnim_LAPRAS_GMAX_1[] = +static const union AnimCmd sAnim_LAPRAS_GIGANTAMAX_1[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; -static const union AnimCmd sAnim_EEVEE_GMAX_1[] = +static const union AnimCmd sAnim_EEVEE_GIGANTAMAX_1[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; -static const union AnimCmd sAnim_SNORLAX_GMAX_1[] = +static const union AnimCmd sAnim_SNORLAX_GIGANTAMAX_1[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; #if P_GEN_5_POKEMON == TRUE -static const union AnimCmd sAnim_GARBODOR_GMAX_1[] = +static const union AnimCmd sAnim_GARBODOR_GIGANTAMAX_1[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; #endif #if P_GEN_7_POKEMON == TRUE -static const union AnimCmd sAnim_MELMETAL_GMAX_1[] = +static const union AnimCmd sAnim_MELMETAL_GIGANTAMAX_1[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; #endif #if P_GEN_8_POKEMON == TRUE -static const union AnimCmd sAnim_RILLABOOM_GMAX_1[] = +static const union AnimCmd sAnim_RILLABOOM_GIGANTAMAX_1[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; -static const union AnimCmd sAnim_CINDERACE_GMAX_1[] = +static const union AnimCmd sAnim_CINDERACE_GIGANTAMAX_1[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; -static const union AnimCmd sAnim_INTELEON_GMAX_1[] = +static const union AnimCmd sAnim_INTELEON_GIGANTAMAX_1[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; -static const union AnimCmd sAnim_CORVIKNIGHT_GMAX_1[] = +static const union AnimCmd sAnim_CORVIKNIGHT_GIGANTAMAX_1[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; -static const union AnimCmd sAnim_ORBEETLE_GMAX_1[] = +static const union AnimCmd sAnim_ORBEETLE_GIGANTAMAX_1[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; -static const union AnimCmd sAnim_DREDNAW_GMAX_1[] = +static const union AnimCmd sAnim_DREDNAW_GIGANTAMAX_1[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; -static const union AnimCmd sAnim_COALOSSAL_GMAX_1[] = +static const union AnimCmd sAnim_COALOSSAL_GIGANTAMAX_1[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; -static const union AnimCmd sAnim_FLAPPLE_GMAX_1[] = +static const union AnimCmd sAnim_FLAPPLE_GIGANTAMAX_1[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; -static const union AnimCmd sAnim_APPLETUN_GMAX_1[] = +static const union AnimCmd sAnim_APPLETUN_GIGANTAMAX_1[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; -static const union AnimCmd sAnim_SANDACONDA_GMAX_1[] = +static const union AnimCmd sAnim_SANDACONDA_GIGANTAMAX_1[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; -static const union AnimCmd sAnim_TOXTRICITY_GMAX_1[] = +static const union AnimCmd sAnim_TOXTRICITY_GIGANTAMAX_1[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; -static const union AnimCmd sAnim_CENTISKORCH_GMAX_1[] = +static const union AnimCmd sAnim_CENTISKORCH_GIGANTAMAX_1[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; -static const union AnimCmd sAnim_HATTERENE_GMAX_1[] = +static const union AnimCmd sAnim_HATTERENE_GIGANTAMAX_1[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; -static const union AnimCmd sAnim_GRIMMSNARL_GMAX_1[] = +static const union AnimCmd sAnim_GRIMMSNARL_GIGANTAMAX_1[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; -static const union AnimCmd sAnim_ALCREMIE_GMAX_1[] = +static const union AnimCmd sAnim_ALCREMIE_GIGANTAMAX_1[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; -static const union AnimCmd sAnim_COPPERAJAH_GMAX_1[] = +static const union AnimCmd sAnim_COPPERAJAH_GIGANTAMAX_1[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; -static const union AnimCmd sAnim_DURALUDON_GMAX_1[] = +static const union AnimCmd sAnim_DURALUDON_GIGANTAMAX_1[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; -static const union AnimCmd sAnim_URSHIFU_GMAX_1[] = +static const union AnimCmd sAnim_URSHIFU_GIGANTAMAX_1[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; -static const union AnimCmd sAnim_URSHIFU_RAPID_STRIKE_STYLE_GMAX_1[] = +static const union AnimCmd sAnim_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX_1[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, @@ -11849,44 +11849,44 @@ SINGLE_ANIMATION(LycanrocDusk); SINGLE_ANIMATION(EnamorusTherian); #endif // Gigantamax Forms -SINGLE_ANIMATION(VENUSAUR_GMAX); -SINGLE_ANIMATION(CHARIZARD_GMAX); -SINGLE_ANIMATION(BLASTOISE_GMAX); -SINGLE_ANIMATION(BUTTERFREE_GMAX); -SINGLE_ANIMATION(PIKACHU_GMAX); -SINGLE_ANIMATION(MEOWTH_GMAX); -SINGLE_ANIMATION(MACHAMP_GMAX); -SINGLE_ANIMATION(GENGAR_GMAX); -SINGLE_ANIMATION(KINGLER_GMAX); -SINGLE_ANIMATION(LAPRAS_GMAX); -SINGLE_ANIMATION(EEVEE_GMAX); -SINGLE_ANIMATION(SNORLAX_GMAX); +SINGLE_ANIMATION(VENUSAUR_GIGANTAMAX); +SINGLE_ANIMATION(CHARIZARD_GIGANTAMAX); +SINGLE_ANIMATION(BLASTOISE_GIGANTAMAX); +SINGLE_ANIMATION(BUTTERFREE_GIGANTAMAX); +SINGLE_ANIMATION(PIKACHU_GIGANTAMAX); +SINGLE_ANIMATION(MEOWTH_GIGANTAMAX); +SINGLE_ANIMATION(MACHAMP_GIGANTAMAX); +SINGLE_ANIMATION(GENGAR_GIGANTAMAX); +SINGLE_ANIMATION(KINGLER_GIGANTAMAX); +SINGLE_ANIMATION(LAPRAS_GIGANTAMAX); +SINGLE_ANIMATION(EEVEE_GIGANTAMAX); +SINGLE_ANIMATION(SNORLAX_GIGANTAMAX); #if P_GEN_5_POKEMON == TRUE -SINGLE_ANIMATION(GARBODOR_GMAX); +SINGLE_ANIMATION(GARBODOR_GIGANTAMAX); #endif #if P_GEN_7_POKEMON == TRUE -SINGLE_ANIMATION(MELMETAL_GMAX); +SINGLE_ANIMATION(MELMETAL_GIGANTAMAX); #endif #if P_GEN_8_POKEMON == TRUE -SINGLE_ANIMATION(RILLABOOM_GMAX); -SINGLE_ANIMATION(CINDERACE_GMAX); -SINGLE_ANIMATION(INTELEON_GMAX); -SINGLE_ANIMATION(CORVIKNIGHT_GMAX); -SINGLE_ANIMATION(ORBEETLE_GMAX); -SINGLE_ANIMATION(DREDNAW_GMAX); -SINGLE_ANIMATION(COALOSSAL_GMAX); -SINGLE_ANIMATION(FLAPPLE_GMAX); -SINGLE_ANIMATION(APPLETUN_GMAX); -SINGLE_ANIMATION(SANDACONDA_GMAX); -SINGLE_ANIMATION(TOXTRICITY_GMAX); -SINGLE_ANIMATION(CENTISKORCH_GMAX); -SINGLE_ANIMATION(HATTERENE_GMAX); -SINGLE_ANIMATION(GRIMMSNARL_GMAX); -SINGLE_ANIMATION(ALCREMIE_GMAX); -SINGLE_ANIMATION(COPPERAJAH_GMAX); -SINGLE_ANIMATION(DURALUDON_GMAX); -SINGLE_ANIMATION(URSHIFU_GMAX); -SINGLE_ANIMATION(URSHIFU_RAPID_STRIKE_STYLE_GMAX); +SINGLE_ANIMATION(RILLABOOM_GIGANTAMAX); +SINGLE_ANIMATION(CINDERACE_GIGANTAMAX); +SINGLE_ANIMATION(INTELEON_GIGANTAMAX); +SINGLE_ANIMATION(CORVIKNIGHT_GIGANTAMAX); +SINGLE_ANIMATION(ORBEETLE_GIGANTAMAX); +SINGLE_ANIMATION(DREDNAW_GIGANTAMAX); +SINGLE_ANIMATION(COALOSSAL_GIGANTAMAX); +SINGLE_ANIMATION(FLAPPLE_GIGANTAMAX); +SINGLE_ANIMATION(APPLETUN_GIGANTAMAX); +SINGLE_ANIMATION(SANDACONDA_GIGANTAMAX); +SINGLE_ANIMATION(TOXTRICITY_GIGANTAMAX); +SINGLE_ANIMATION(CENTISKORCH_GIGANTAMAX); +SINGLE_ANIMATION(HATTERENE_GIGANTAMAX); +SINGLE_ANIMATION(GRIMMSNARL_GIGANTAMAX); +SINGLE_ANIMATION(ALCREMIE_GIGANTAMAX); +SINGLE_ANIMATION(COPPERAJAH_GIGANTAMAX); +SINGLE_ANIMATION(DURALUDON_GIGANTAMAX); +SINGLE_ANIMATION(URSHIFU_GIGANTAMAX); +SINGLE_ANIMATION(URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX); #endif const union AnimCmd *const *const gMonFrontAnimsPtrTable[NUM_SPECIES + 1] = @@ -13160,44 +13160,44 @@ const union AnimCmd *const *const gMonFrontAnimsPtrTable[NUM_SPECIES + 1] = [SPECIES_ENAMORUS_THERIAN] = sAnims_EnamorusTherian, [SPECIES_BASCULEGION_FEMALE] = sAnims_Basculegion, #endif - [SPECIES_VENUSAUR_GMAX] = sAnims_VENUSAUR_GMAX, - [SPECIES_CHARIZARD_GMAX] = sAnims_CHARIZARD_GMAX, - [SPECIES_BLASTOISE_GMAX] = sAnims_BLASTOISE_GMAX, - [SPECIES_BUTTERFREE_GMAX] = sAnims_BUTTERFREE_GMAX, - [SPECIES_PIKACHU_GMAX] = sAnims_PIKACHU_GMAX, - [SPECIES_MEOWTH_GMAX] = sAnims_MEOWTH_GMAX, - [SPECIES_MACHAMP_GMAX] = sAnims_MACHAMP_GMAX, - [SPECIES_GENGAR_GMAX] = sAnims_GENGAR_GMAX, - [SPECIES_KINGLER_GMAX] = sAnims_KINGLER_GMAX, - [SPECIES_LAPRAS_GMAX] = sAnims_LAPRAS_GMAX, - [SPECIES_EEVEE_GMAX] = sAnims_EEVEE_GMAX, - [SPECIES_SNORLAX_GMAX] = sAnims_SNORLAX_GMAX, + [SPECIES_VENUSAUR_GIGANTAMAX] = sAnims_VENUSAUR_GIGANTAMAX, + [SPECIES_CHARIZARD_GIGANTAMAX] = sAnims_CHARIZARD_GIGANTAMAX, + [SPECIES_BLASTOISE_GIGANTAMAX] = sAnims_BLASTOISE_GIGANTAMAX, + [SPECIES_BUTTERFREE_GIGANTAMAX] = sAnims_BUTTERFREE_GIGANTAMAX, + [SPECIES_PIKACHU_GIGANTAMAX] = sAnims_PIKACHU_GIGANTAMAX, + [SPECIES_MEOWTH_GIGANTAMAX] = sAnims_MEOWTH_GIGANTAMAX, + [SPECIES_MACHAMP_GIGANTAMAX] = sAnims_MACHAMP_GIGANTAMAX, + [SPECIES_GENGAR_GIGANTAMAX] = sAnims_GENGAR_GIGANTAMAX, + [SPECIES_KINGLER_GIGANTAMAX] = sAnims_KINGLER_GIGANTAMAX, + [SPECIES_LAPRAS_GIGANTAMAX] = sAnims_LAPRAS_GIGANTAMAX, + [SPECIES_EEVEE_GIGANTAMAX] = sAnims_EEVEE_GIGANTAMAX, + [SPECIES_SNORLAX_GIGANTAMAX] = sAnims_SNORLAX_GIGANTAMAX, #if P_GEN_5_POKEMON == TRUE - [SPECIES_GARBODOR_GMAX] = sAnims_GARBODOR_GMAX, + [SPECIES_GARBODOR_GIGANTAMAX] = sAnims_GARBODOR_GIGANTAMAX, #endif #if P_GEN_7_POKEMON == TRUE - [SPECIES_MELMETAL_GMAX] = sAnims_MELMETAL_GMAX, + [SPECIES_MELMETAL_GIGANTAMAX] = sAnims_MELMETAL_GIGANTAMAX, #endif #if P_GEN_8_POKEMON == TRUE - [SPECIES_RILLABOOM_GMAX] = sAnims_RILLABOOM_GMAX, - [SPECIES_CINDERACE_GMAX] = sAnims_CINDERACE_GMAX, - [SPECIES_INTELEON_GMAX] = sAnims_INTELEON_GMAX, - [SPECIES_CORVIKNIGHT_GMAX] = sAnims_CORVIKNIGHT_GMAX, - [SPECIES_ORBEETLE_GMAX] = sAnims_ORBEETLE_GMAX, - [SPECIES_DREDNAW_GMAX] = sAnims_DREDNAW_GMAX, - [SPECIES_COALOSSAL_GMAX] = sAnims_COALOSSAL_GMAX, - [SPECIES_FLAPPLE_GMAX] = sAnims_FLAPPLE_GMAX, - [SPECIES_APPLETUN_GMAX] = sAnims_APPLETUN_GMAX, - [SPECIES_SANDACONDA_GMAX] = sAnims_SANDACONDA_GMAX, - [SPECIES_TOXTRICITY_GMAX] = sAnims_TOXTRICITY_GMAX, - [SPECIES_CENTISKORCH_GMAX] = sAnims_CENTISKORCH_GMAX, - [SPECIES_HATTERENE_GMAX] = sAnims_HATTERENE_GMAX, - [SPECIES_GRIMMSNARL_GMAX] = sAnims_GRIMMSNARL_GMAX, - [SPECIES_ALCREMIE_GMAX] = sAnims_ALCREMIE_GMAX, - [SPECIES_COPPERAJAH_GMAX] = sAnims_COPPERAJAH_GMAX, - [SPECIES_DURALUDON_GMAX] = sAnims_DURALUDON_GMAX, - [SPECIES_URSHIFU_GMAX] = sAnims_URSHIFU_GMAX, - [SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GMAX] = sAnims_URSHIFU_RAPID_STRIKE_STYLE_GMAX, + [SPECIES_RILLABOOM_GIGANTAMAX] = sAnims_RILLABOOM_GIGANTAMAX, + [SPECIES_CINDERACE_GIGANTAMAX] = sAnims_CINDERACE_GIGANTAMAX, + [SPECIES_INTELEON_GIGANTAMAX] = sAnims_INTELEON_GIGANTAMAX, + [SPECIES_CORVIKNIGHT_GIGANTAMAX] = sAnims_CORVIKNIGHT_GIGANTAMAX, + [SPECIES_ORBEETLE_GIGANTAMAX] = sAnims_ORBEETLE_GIGANTAMAX, + [SPECIES_DREDNAW_GIGANTAMAX] = sAnims_DREDNAW_GIGANTAMAX, + [SPECIES_COALOSSAL_GIGANTAMAX] = sAnims_COALOSSAL_GIGANTAMAX, + [SPECIES_FLAPPLE_GIGANTAMAX] = sAnims_FLAPPLE_GIGANTAMAX, + [SPECIES_APPLETUN_GIGANTAMAX] = sAnims_APPLETUN_GIGANTAMAX, + [SPECIES_SANDACONDA_GIGANTAMAX] = sAnims_SANDACONDA_GIGANTAMAX, + [SPECIES_TOXTRICITY_GIGANTAMAX] = sAnims_TOXTRICITY_GIGANTAMAX, + [SPECIES_CENTISKORCH_GIGANTAMAX] = sAnims_CENTISKORCH_GIGANTAMAX, + [SPECIES_HATTERENE_GIGANTAMAX] = sAnims_HATTERENE_GIGANTAMAX, + [SPECIES_GRIMMSNARL_GIGANTAMAX] = sAnims_GRIMMSNARL_GIGANTAMAX, + [SPECIES_ALCREMIE_GIGANTAMAX] = sAnims_ALCREMIE_GIGANTAMAX, + [SPECIES_COPPERAJAH_GIGANTAMAX] = sAnims_COPPERAJAH_GIGANTAMAX, + [SPECIES_DURALUDON_GIGANTAMAX] = sAnims_DURALUDON_GIGANTAMAX, + [SPECIES_URSHIFU_GIGANTAMAX] = sAnims_URSHIFU_GIGANTAMAX, + [SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX] = sAnims_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX, #endif [SPECIES_EGG] = sAnims_Egg, }; diff --git a/src/data/pokemon_graphics/front_pic_coordinates.h b/src/data/pokemon_graphics/front_pic_coordinates.h index f8eb3c5aa6..50e3a541a8 100644 --- a/src/data/pokemon_graphics/front_pic_coordinates.h +++ b/src/data/pokemon_graphics/front_pic_coordinates.h @@ -1341,39 +1341,39 @@ const struct MonCoords gMonFrontPicCoords[NUM_SPECIES + 1] = // Basculegion [SPECIES_BASCULEGION_FEMALE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, // Gigantamax Forms - [SPECIES_VENUSAUR_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 5 }, - [SPECIES_CHARIZARD_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_BLASTOISE_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 4 }, - [SPECIES_BUTTERFREE_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 10 }, - [SPECIES_PIKACHU_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, - [SPECIES_MEOWTH_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - [SPECIES_MACHAMP_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_GENGAR_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 8 }, - [SPECIES_KINGLER_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_LAPRAS_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_EEVEE_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 6 }, - [SPECIES_SNORLAX_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_GARBODOR_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_MELMETAL_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_RILLABOOM_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_CINDERACE_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_INTELEON_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_CORVIKNIGHT_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - [SPECIES_ORBEETLE_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_DREDNAW_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_COALOSSAL_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_FLAPPLE_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_APPLETUN_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_SANDACONDA_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_TOXTRICITY_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_CENTISKORCH_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 5 }, - [SPECIES_HATTERENE_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_GRIMMSNARL_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_ALCREMIE_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_COPPERAJAH_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_DURALUDON_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_URSHIFU_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_VENUSAUR_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 5 }, + [SPECIES_CHARIZARD_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_BLASTOISE_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 4 }, + [SPECIES_BUTTERFREE_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 10 }, + [SPECIES_PIKACHU_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, + [SPECIES_MEOWTH_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, + [SPECIES_MACHAMP_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_GENGAR_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 8 }, + [SPECIES_KINGLER_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_LAPRAS_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_EEVEE_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 6 }, + [SPECIES_SNORLAX_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_GARBODOR_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_MELMETAL_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_RILLABOOM_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_CINDERACE_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_INTELEON_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_CORVIKNIGHT_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, + [SPECIES_ORBEETLE_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_DREDNAW_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_COALOSSAL_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_FLAPPLE_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, + [SPECIES_APPLETUN_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, + [SPECIES_SANDACONDA_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_TOXTRICITY_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_CENTISKORCH_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 5 }, + [SPECIES_HATTERENE_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_GRIMMSNARL_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_ALCREMIE_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_COPPERAJAH_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_DURALUDON_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_URSHIFU_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, #endif // Egg [SPECIES_EGG] = { .size = MON_COORDS_SIZE(24, 24), .y_offset = 20 }, diff --git a/src/data/pokemon_graphics/front_pic_table.h b/src/data/pokemon_graphics/front_pic_table.h index a99214f0e2..33a6afb5db 100644 --- a/src/data/pokemon_graphics/front_pic_table.h +++ b/src/data/pokemon_graphics/front_pic_table.h @@ -1335,39 +1335,39 @@ const struct CompressedSpriteSheet gMonFrontPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(BASCULEGION_FEMALE, gMonFrontPic_BasculegionFemale), // Gigantamax Forms - SPECIES_SPRITE(VENUSAUR_GMAX, gMonFrontPic_VenusaurGmax), - SPECIES_SPRITE(CHARIZARD_GMAX, gMonFrontPic_CharizardGmax), - SPECIES_SPRITE(BLASTOISE_GMAX, gMonFrontPic_BlastoiseGmax), - SPECIES_SPRITE(BUTTERFREE_GMAX, gMonFrontPic_ButterfreeGmax), - SPECIES_SPRITE(PIKACHU_GMAX, gMonFrontPic_PikachuGmax), - SPECIES_SPRITE(MEOWTH_GMAX, gMonFrontPic_MeowthGmax), - SPECIES_SPRITE(MACHAMP_GMAX, gMonFrontPic_MachampGmax), - SPECIES_SPRITE(GENGAR_GMAX, gMonFrontPic_GengarGmax), - SPECIES_SPRITE(KINGLER_GMAX, gMonFrontPic_KinglerGmax), - SPECIES_SPRITE(LAPRAS_GMAX, gMonFrontPic_LaprasGmax), - SPECIES_SPRITE(EEVEE_GMAX, gMonFrontPic_EeveeGmax), - SPECIES_SPRITE(SNORLAX_GMAX, gMonFrontPic_SnorlaxGmax), - SPECIES_SPRITE(GARBODOR_GMAX, gMonFrontPic_GarbodorGmax), - SPECIES_SPRITE(MELMETAL_GMAX, gMonFrontPic_MelmetalGmax), - SPECIES_SPRITE(RILLABOOM_GMAX, gMonFrontPic_RillaboomGmax), - SPECIES_SPRITE(CINDERACE_GMAX, gMonFrontPic_CinderaceGmax), - SPECIES_SPRITE(INTELEON_GMAX, gMonFrontPic_InteleonGmax), - SPECIES_SPRITE(CORVIKNIGHT_GMAX, gMonFrontPic_CorviknightGmax), - SPECIES_SPRITE(ORBEETLE_GMAX, gMonFrontPic_OrbeetleGmax), - SPECIES_SPRITE(DREDNAW_GMAX, gMonFrontPic_DrednawGmax), - SPECIES_SPRITE(COALOSSAL_GMAX, gMonFrontPic_CoalossalGmax), - SPECIES_SPRITE(FLAPPLE_GMAX, gMonFrontPic_FlappleGmax), - SPECIES_SPRITE(APPLETUN_GMAX, gMonFrontPic_AppletunGmax), - SPECIES_SPRITE(SANDACONDA_GMAX, gMonFrontPic_SandacondaGmax), - SPECIES_SPRITE(TOXTRICITY_GMAX, gMonFrontPic_ToxtricityGmax), - SPECIES_SPRITE(CENTISKORCH_GMAX, gMonFrontPic_CentiskorchGmax), - SPECIES_SPRITE(HATTERENE_GMAX, gMonFrontPic_HattereneGmax), - SPECIES_SPRITE(GRIMMSNARL_GMAX, gMonFrontPic_GrimmsnarlGmax), - SPECIES_SPRITE(ALCREMIE_GMAX, gMonFrontPic_AlcremieGmax), - SPECIES_SPRITE(COPPERAJAH_GMAX, gMonFrontPic_CopperajahGmax), - SPECIES_SPRITE(DURALUDON_GMAX, gMonFrontPic_DuraludonGmax), - SPECIES_SPRITE(URSHIFU_GMAX, gMonFrontPic_UrshifuGmax), - SPECIES_SPRITE(URSHIFU_RAPID_STRIKE_STYLE_GMAX, gMonFrontPic_UrshifuRapidStrikeGmax), + SPECIES_SPRITE(VENUSAUR_GIGANTAMAX, gMonFrontPic_VenusaurGigantamax), + SPECIES_SPRITE(CHARIZARD_GIGANTAMAX, gMonFrontPic_CharizardGigantamax), + SPECIES_SPRITE(BLASTOISE_GIGANTAMAX, gMonFrontPic_BlastoiseGigantamax), + SPECIES_SPRITE(BUTTERFREE_GIGANTAMAX, gMonFrontPic_ButterfreeGigantamax), + SPECIES_SPRITE(PIKACHU_GIGANTAMAX, gMonFrontPic_PikachuGigantamax), + SPECIES_SPRITE(MEOWTH_GIGANTAMAX, gMonFrontPic_MeowthGigantamax), + SPECIES_SPRITE(MACHAMP_GIGANTAMAX, gMonFrontPic_MachampGigantamax), + SPECIES_SPRITE(GENGAR_GIGANTAMAX, gMonFrontPic_GengarGigantamax), + SPECIES_SPRITE(KINGLER_GIGANTAMAX, gMonFrontPic_KinglerGigantamax), + SPECIES_SPRITE(LAPRAS_GIGANTAMAX, gMonFrontPic_LaprasGigantamax), + SPECIES_SPRITE(EEVEE_GIGANTAMAX, gMonFrontPic_EeveeGigantamax), + SPECIES_SPRITE(SNORLAX_GIGANTAMAX, gMonFrontPic_SnorlaxGigantamax), + SPECIES_SPRITE(GARBODOR_GIGANTAMAX, gMonFrontPic_GarbodorGigantamax), + SPECIES_SPRITE(MELMETAL_GIGANTAMAX, gMonFrontPic_MelmetalGigantamax), + SPECIES_SPRITE(RILLABOOM_GIGANTAMAX, gMonFrontPic_RillaboomGigantamax), + SPECIES_SPRITE(CINDERACE_GIGANTAMAX, gMonFrontPic_CinderaceGigantamax), + SPECIES_SPRITE(INTELEON_GIGANTAMAX, gMonFrontPic_InteleonGigantamax), + SPECIES_SPRITE(CORVIKNIGHT_GIGANTAMAX, gMonFrontPic_CorviknightGigantamax), + SPECIES_SPRITE(ORBEETLE_GIGANTAMAX, gMonFrontPic_OrbeetleGigantamax), + SPECIES_SPRITE(DREDNAW_GIGANTAMAX, gMonFrontPic_DrednawGigantamax), + SPECIES_SPRITE(COALOSSAL_GIGANTAMAX, gMonFrontPic_CoalossalGigantamax), + SPECIES_SPRITE(FLAPPLE_GIGANTAMAX, gMonFrontPic_FlappleGigantamax), + SPECIES_SPRITE(APPLETUN_GIGANTAMAX, gMonFrontPic_AppletunGigantamax), + SPECIES_SPRITE(SANDACONDA_GIGANTAMAX, gMonFrontPic_SandacondaGigantamax), + SPECIES_SPRITE(TOXTRICITY_GIGANTAMAX, gMonFrontPic_ToxtricityGigantamax), + SPECIES_SPRITE(CENTISKORCH_GIGANTAMAX, gMonFrontPic_CentiskorchGigantamax), + SPECIES_SPRITE(HATTERENE_GIGANTAMAX, gMonFrontPic_HattereneGigantamax), + SPECIES_SPRITE(GRIMMSNARL_GIGANTAMAX, gMonFrontPic_GrimmsnarlGigantamax), + SPECIES_SPRITE(ALCREMIE_GIGANTAMAX, gMonFrontPic_AlcremieGigantamax), + SPECIES_SPRITE(COPPERAJAH_GIGANTAMAX, gMonFrontPic_CopperajahGigantamax), + SPECIES_SPRITE(DURALUDON_GIGANTAMAX, gMonFrontPic_DuraludonGigantamax), + SPECIES_SPRITE(URSHIFU_GIGANTAMAX, gMonFrontPic_UrshifuGigantamax), + SPECIES_SPRITE(URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX, gMonFrontPic_UrshifuRapidStrikeGigantamax), #endif SPECIES_SPRITE(EGG, gMonFrontPic_Egg), }; diff --git a/src/data/pokemon_graphics/palette_table.h b/src/data/pokemon_graphics/palette_table.h index 76a7ff040c..caf4578a68 100644 --- a/src/data/pokemon_graphics/palette_table.h +++ b/src/data/pokemon_graphics/palette_table.h @@ -1335,39 +1335,39 @@ const struct CompressedSpritePalette gMonPaletteTable[NUM_SPECIES + 1] = SPECIES_PAL(BASCULEGION_FEMALE, gMonPalette_BasculegionFemale), // Gigantamax Forms - SPECIES_PAL(VENUSAUR_GMAX, gMonPalette_VenusaurGmax), - SPECIES_PAL(CHARIZARD_GMAX, gMonPalette_CharizardGmax), - SPECIES_PAL(BLASTOISE_GMAX, gMonPalette_BlastoiseGmax), - SPECIES_PAL(BUTTERFREE_GMAX, gMonPalette_ButterfreeGmax), - SPECIES_PAL(PIKACHU_GMAX, gMonPalette_PikachuGmax), - SPECIES_PAL(MEOWTH_GMAX, gMonPalette_MeowthGmax), - SPECIES_PAL(MACHAMP_GMAX, gMonPalette_MachampGmax), - SPECIES_PAL(GENGAR_GMAX, gMonPalette_GengarGmax), - SPECIES_PAL(KINGLER_GMAX, gMonPalette_KinglerGmax), - SPECIES_PAL(LAPRAS_GMAX, gMonPalette_LaprasGmax), - SPECIES_PAL(EEVEE_GMAX, gMonPalette_EeveeGmax), - SPECIES_PAL(SNORLAX_GMAX, gMonPalette_SnorlaxGmax), - SPECIES_PAL(GARBODOR_GMAX, gMonPalette_GarbodorGmax), - SPECIES_PAL(MELMETAL_GMAX, gMonPalette_MelmetalGmax), - SPECIES_PAL(RILLABOOM_GMAX, gMonPalette_RillaboomGmax), - SPECIES_PAL(CINDERACE_GMAX, gMonPalette_CinderaceGmax), - SPECIES_PAL(INTELEON_GMAX, gMonPalette_InteleonGmax), - SPECIES_PAL(CORVIKNIGHT_GMAX, gMonPalette_CorviknightGmax), - SPECIES_PAL(ORBEETLE_GMAX, gMonPalette_OrbeetleGmax), - SPECIES_PAL(DREDNAW_GMAX, gMonPalette_DrednawGmax), - SPECIES_PAL(COALOSSAL_GMAX, gMonPalette_CoalossalGmax), - SPECIES_PAL(FLAPPLE_GMAX, gMonPalette_FlappleGmax), - SPECIES_PAL(APPLETUN_GMAX, gMonPalette_AppletunGmax), - SPECIES_PAL(SANDACONDA_GMAX, gMonPalette_SandacondaGmax), - SPECIES_PAL(TOXTRICITY_GMAX, gMonPalette_ToxtricityGmax), - SPECIES_PAL(CENTISKORCH_GMAX, gMonPalette_CentiskorchGmax), - SPECIES_PAL(HATTERENE_GMAX, gMonPalette_HattereneGmax), - SPECIES_PAL(GRIMMSNARL_GMAX, gMonPalette_GrimmsnarlGmax), - SPECIES_PAL(ALCREMIE_GMAX, gMonPalette_AlcremieGmax), - SPECIES_PAL(COPPERAJAH_GMAX, gMonPalette_CopperajahGmax), - SPECIES_PAL(DURALUDON_GMAX, gMonPalette_DuraludonGmax), - SPECIES_PAL(URSHIFU_GMAX, gMonPalette_UrshifuGmax), - SPECIES_PAL(URSHIFU_RAPID_STRIKE_STYLE_GMAX, gMonPalette_UrshifuRapidStrikeGmax), + SPECIES_PAL(VENUSAUR_GIGANTAMAX, gMonPalette_VenusaurGigantamax), + SPECIES_PAL(CHARIZARD_GIGANTAMAX, gMonPalette_CharizardGigantamax), + SPECIES_PAL(BLASTOISE_GIGANTAMAX, gMonPalette_BlastoiseGigantamax), + SPECIES_PAL(BUTTERFREE_GIGANTAMAX, gMonPalette_ButterfreeGigantamax), + SPECIES_PAL(PIKACHU_GIGANTAMAX, gMonPalette_PikachuGigantamax), + SPECIES_PAL(MEOWTH_GIGANTAMAX, gMonPalette_MeowthGigantamax), + SPECIES_PAL(MACHAMP_GIGANTAMAX, gMonPalette_MachampGigantamax), + SPECIES_PAL(GENGAR_GIGANTAMAX, gMonPalette_GengarGigantamax), + SPECIES_PAL(KINGLER_GIGANTAMAX, gMonPalette_KinglerGigantamax), + SPECIES_PAL(LAPRAS_GIGANTAMAX, gMonPalette_LaprasGigantamax), + SPECIES_PAL(EEVEE_GIGANTAMAX, gMonPalette_EeveeGigantamax), + SPECIES_PAL(SNORLAX_GIGANTAMAX, gMonPalette_SnorlaxGigantamax), + SPECIES_PAL(GARBODOR_GIGANTAMAX, gMonPalette_GarbodorGigantamax), + SPECIES_PAL(MELMETAL_GIGANTAMAX, gMonPalette_MelmetalGigantamax), + SPECIES_PAL(RILLABOOM_GIGANTAMAX, gMonPalette_RillaboomGigantamax), + SPECIES_PAL(CINDERACE_GIGANTAMAX, gMonPalette_CinderaceGigantamax), + SPECIES_PAL(INTELEON_GIGANTAMAX, gMonPalette_InteleonGigantamax), + SPECIES_PAL(CORVIKNIGHT_GIGANTAMAX, gMonPalette_CorviknightGigantamax), + SPECIES_PAL(ORBEETLE_GIGANTAMAX, gMonPalette_OrbeetleGigantamax), + SPECIES_PAL(DREDNAW_GIGANTAMAX, gMonPalette_DrednawGigantamax), + SPECIES_PAL(COALOSSAL_GIGANTAMAX, gMonPalette_CoalossalGigantamax), + SPECIES_PAL(FLAPPLE_GIGANTAMAX, gMonPalette_FlappleGigantamax), + SPECIES_PAL(APPLETUN_GIGANTAMAX, gMonPalette_AppletunGigantamax), + SPECIES_PAL(SANDACONDA_GIGANTAMAX, gMonPalette_SandacondaGigantamax), + SPECIES_PAL(TOXTRICITY_GIGANTAMAX, gMonPalette_ToxtricityGigantamax), + SPECIES_PAL(CENTISKORCH_GIGANTAMAX, gMonPalette_CentiskorchGigantamax), + SPECIES_PAL(HATTERENE_GIGANTAMAX, gMonPalette_HattereneGigantamax), + SPECIES_PAL(GRIMMSNARL_GIGANTAMAX, gMonPalette_GrimmsnarlGigantamax), + SPECIES_PAL(ALCREMIE_GIGANTAMAX, gMonPalette_AlcremieGigantamax), + SPECIES_PAL(COPPERAJAH_GIGANTAMAX, gMonPalette_CopperajahGigantamax), + SPECIES_PAL(DURALUDON_GIGANTAMAX, gMonPalette_DuraludonGigantamax), + SPECIES_PAL(URSHIFU_GIGANTAMAX, gMonPalette_UrshifuGigantamax), + SPECIES_PAL(URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX, gMonPalette_UrshifuRapidStrikeGigantamax), #endif SPECIES_PAL(EGG, gMonPalette_Egg), }; diff --git a/src/data/pokemon_graphics/shiny_palette_table.h b/src/data/pokemon_graphics/shiny_palette_table.h index 1fbcb109ef..13e19d4ca3 100644 --- a/src/data/pokemon_graphics/shiny_palette_table.h +++ b/src/data/pokemon_graphics/shiny_palette_table.h @@ -1334,39 +1334,39 @@ const struct CompressedSpritePalette gMonShinyPaletteTable[NUM_SPECIES + 1] = SPECIES_SHINY_PAL(BASCULEGION_FEMALE, gMonShinyPalette_BasculegionFemale), // Gigantamax Forms - SPECIES_SHINY_PAL(VENUSAUR_GMAX, gMonShinyPalette_VenusaurGmax), - SPECIES_SHINY_PAL(CHARIZARD_GMAX, gMonShinyPalette_CharizardGmax), - SPECIES_SHINY_PAL(BLASTOISE_GMAX, gMonShinyPalette_BlastoiseGmax), - SPECIES_SHINY_PAL(BUTTERFREE_GMAX, gMonShinyPalette_ButterfreeGmax), - SPECIES_SHINY_PAL(PIKACHU_GMAX, gMonShinyPalette_PikachuGmax), - SPECIES_SHINY_PAL(MEOWTH_GMAX, gMonShinyPalette_MeowthGmax), - SPECIES_SHINY_PAL(MACHAMP_GMAX, gMonShinyPalette_MachampGmax), - SPECIES_SHINY_PAL(GENGAR_GMAX, gMonShinyPalette_GengarGmax), - SPECIES_SHINY_PAL(KINGLER_GMAX, gMonShinyPalette_KinglerGmax), - SPECIES_SHINY_PAL(LAPRAS_GMAX, gMonShinyPalette_LaprasGmax), - SPECIES_SHINY_PAL(EEVEE_GMAX, gMonShinyPalette_EeveeGmax), - SPECIES_SHINY_PAL(SNORLAX_GMAX, gMonShinyPalette_SnorlaxGmax), - SPECIES_SHINY_PAL(GARBODOR_GMAX, gMonShinyPalette_GarbodorGmax), - SPECIES_SHINY_PAL(MELMETAL_GMAX, gMonShinyPalette_MelmetalGmax), - SPECIES_SHINY_PAL(RILLABOOM_GMAX, gMonShinyPalette_RillaboomGmax), - SPECIES_SHINY_PAL(CINDERACE_GMAX, gMonShinyPalette_CinderaceGmax), - SPECIES_SHINY_PAL(INTELEON_GMAX, gMonShinyPalette_InteleonGmax), - SPECIES_SHINY_PAL(CORVIKNIGHT_GMAX, gMonShinyPalette_CorviknightGmax), - SPECIES_SHINY_PAL(ORBEETLE_GMAX, gMonShinyPalette_OrbeetleGmax), - SPECIES_SHINY_PAL(DREDNAW_GMAX, gMonShinyPalette_DrednawGmax), - SPECIES_SHINY_PAL(COALOSSAL_GMAX, gMonShinyPalette_CoalossalGmax), - SPECIES_SHINY_PAL(FLAPPLE_GMAX, gMonShinyPalette_FlappleGmax), - SPECIES_SHINY_PAL(APPLETUN_GMAX, gMonShinyPalette_AppletunGmax), - SPECIES_SHINY_PAL(SANDACONDA_GMAX, gMonShinyPalette_SandacondaGmax), - SPECIES_SHINY_PAL(TOXTRICITY_GMAX, gMonShinyPalette_ToxtricityGmax), - SPECIES_SHINY_PAL(CENTISKORCH_GMAX, gMonShinyPalette_CentiskorchGmax), - SPECIES_SHINY_PAL(HATTERENE_GMAX, gMonShinyPalette_HattereneGmax), - SPECIES_SHINY_PAL(GRIMMSNARL_GMAX, gMonShinyPalette_GrimmsnarlGmax), - SPECIES_SHINY_PAL(ALCREMIE_GMAX, gMonShinyPalette_AlcremieGmax), - SPECIES_SHINY_PAL(COPPERAJAH_GMAX, gMonShinyPalette_CopperajahGmax), - SPECIES_SHINY_PAL(DURALUDON_GMAX, gMonShinyPalette_DuraludonGmax), - SPECIES_SHINY_PAL(URSHIFU_GMAX, gMonShinyPalette_UrshifuGmax), - SPECIES_SHINY_PAL(URSHIFU_RAPID_STRIKE_STYLE_GMAX, gMonShinyPalette_UrshifuRapidStrikeGmax), + SPECIES_SHINY_PAL(VENUSAUR_GIGANTAMAX, gMonShinyPalette_VenusaurGigantamax), + SPECIES_SHINY_PAL(CHARIZARD_GIGANTAMAX, gMonShinyPalette_CharizardGigantamax), + SPECIES_SHINY_PAL(BLASTOISE_GIGANTAMAX, gMonShinyPalette_BlastoiseGigantamax), + SPECIES_SHINY_PAL(BUTTERFREE_GIGANTAMAX, gMonShinyPalette_ButterfreeGigantamax), + SPECIES_SHINY_PAL(PIKACHU_GIGANTAMAX, gMonShinyPalette_PikachuGigantamax), + SPECIES_SHINY_PAL(MEOWTH_GIGANTAMAX, gMonShinyPalette_MeowthGigantamax), + SPECIES_SHINY_PAL(MACHAMP_GIGANTAMAX, gMonShinyPalette_MachampGigantamax), + SPECIES_SHINY_PAL(GENGAR_GIGANTAMAX, gMonShinyPalette_GengarGigantamax), + SPECIES_SHINY_PAL(KINGLER_GIGANTAMAX, gMonShinyPalette_KinglerGigantamax), + SPECIES_SHINY_PAL(LAPRAS_GIGANTAMAX, gMonShinyPalette_LaprasGigantamax), + SPECIES_SHINY_PAL(EEVEE_GIGANTAMAX, gMonShinyPalette_EeveeGigantamax), + SPECIES_SHINY_PAL(SNORLAX_GIGANTAMAX, gMonShinyPalette_SnorlaxGigantamax), + SPECIES_SHINY_PAL(GARBODOR_GIGANTAMAX, gMonShinyPalette_GarbodorGigantamax), + SPECIES_SHINY_PAL(MELMETAL_GIGANTAMAX, gMonShinyPalette_MelmetalGigantamax), + SPECIES_SHINY_PAL(RILLABOOM_GIGANTAMAX, gMonShinyPalette_RillaboomGigantamax), + SPECIES_SHINY_PAL(CINDERACE_GIGANTAMAX, gMonShinyPalette_CinderaceGigantamax), + SPECIES_SHINY_PAL(INTELEON_GIGANTAMAX, gMonShinyPalette_InteleonGigantamax), + SPECIES_SHINY_PAL(CORVIKNIGHT_GIGANTAMAX, gMonShinyPalette_CorviknightGigantamax), + SPECIES_SHINY_PAL(ORBEETLE_GIGANTAMAX, gMonShinyPalette_OrbeetleGigantamax), + SPECIES_SHINY_PAL(DREDNAW_GIGANTAMAX, gMonShinyPalette_DrednawGigantamax), + SPECIES_SHINY_PAL(COALOSSAL_GIGANTAMAX, gMonShinyPalette_CoalossalGigantamax), + SPECIES_SHINY_PAL(FLAPPLE_GIGANTAMAX, gMonShinyPalette_FlappleGigantamax), + SPECIES_SHINY_PAL(APPLETUN_GIGANTAMAX, gMonShinyPalette_AppletunGigantamax), + SPECIES_SHINY_PAL(SANDACONDA_GIGANTAMAX, gMonShinyPalette_SandacondaGigantamax), + SPECIES_SHINY_PAL(TOXTRICITY_GIGANTAMAX, gMonShinyPalette_ToxtricityGigantamax), + SPECIES_SHINY_PAL(CENTISKORCH_GIGANTAMAX, gMonShinyPalette_CentiskorchGigantamax), + SPECIES_SHINY_PAL(HATTERENE_GIGANTAMAX, gMonShinyPalette_HattereneGigantamax), + SPECIES_SHINY_PAL(GRIMMSNARL_GIGANTAMAX, gMonShinyPalette_GrimmsnarlGigantamax), + SPECIES_SHINY_PAL(ALCREMIE_GIGANTAMAX, gMonShinyPalette_AlcremieGigantamax), + SPECIES_SHINY_PAL(COPPERAJAH_GIGANTAMAX, gMonShinyPalette_CopperajahGigantamax), + SPECIES_SHINY_PAL(DURALUDON_GIGANTAMAX, gMonShinyPalette_DuraludonGigantamax), + SPECIES_SHINY_PAL(URSHIFU_GIGANTAMAX, gMonShinyPalette_UrshifuGigantamax), + SPECIES_SHINY_PAL(URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX, gMonShinyPalette_UrshifuRapidStrikeGigantamax), #endif SPECIES_SHINY_PAL(EGG, gMonPalette_Egg), }; diff --git a/src/data/text/species_names.h b/src/data/text/species_names.h index adb09121c8..8b366ac17c 100644 --- a/src/data/text/species_names.h +++ b/src/data/text/species_names.h @@ -1339,38 +1339,38 @@ const u8 gSpeciesNames[NUM_SPECIES][POKEMON_NAME_LENGTH + 1] = { // Basculegion [SPECIES_BASCULEGION_FEMALE] = _("Bsculegion"), // Gigantamax Forms - [SPECIES_VENUSAUR_GMAX] = _("Venusaur"), - [SPECIES_CHARIZARD_GMAX] = _("Charizard"), - [SPECIES_BLASTOISE_GMAX] = _("Blastoise"), - [SPECIES_BUTTERFREE_GMAX] = _("Butterfree"), - [SPECIES_PIKACHU_GMAX] = _("Pikachu"), - [SPECIES_MEOWTH_GMAX] = _("Meowth"), - [SPECIES_MACHAMP_GMAX] = _("Machamp"), - [SPECIES_GENGAR_GMAX] = _("Gengar"), - [SPECIES_KINGLER_GMAX] = _("Kingler"), - [SPECIES_LAPRAS_GMAX] = _("Lapras"), - [SPECIES_EEVEE_GMAX] = _("Eevee"), - [SPECIES_SNORLAX_GMAX] = _("Snorlax"), - [SPECIES_GARBODOR_GMAX] = _("Garbodor"), - [SPECIES_MELMETAL_GMAX] = _("Melmetal"), - [SPECIES_RILLABOOM_GMAX] = _("Rillaboom"), - [SPECIES_CINDERACE_GMAX] = _("Cinderace"), - [SPECIES_INTELEON_GMAX] = _("Inteleon"), - [SPECIES_CORVIKNIGHT_GMAX] = _("Corviknigh"), - [SPECIES_ORBEETLE_GMAX] = _("Orbeetle"), - [SPECIES_DREDNAW_GMAX] = _("Drednaw"), - [SPECIES_COALOSSAL_GMAX] = _("Coalossal"), - [SPECIES_FLAPPLE_GMAX] = _("Flapple"), - [SPECIES_APPLETUN_GMAX] = _("Appletun"), - [SPECIES_SANDACONDA_GMAX] = _("Sandaconda"), - [SPECIES_TOXTRICITY_GMAX] = _("Toxtricity"), - [SPECIES_CENTISKORCH_GMAX] = _("Centiskorc"), - [SPECIES_HATTERENE_GMAX] = _("Hatterene"), - [SPECIES_GRIMMSNARL_GMAX] = _("Grimmsnarl"), - [SPECIES_ALCREMIE_GMAX] = _("Alcremie"), - [SPECIES_COPPERAJAH_GMAX] = _("Copperajah"), - [SPECIES_DURALUDON_GMAX] = _("Duraludon"), - [SPECIES_URSHIFU_GMAX] = _("Urshifu"), - [SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GMAX] = _("Urshifu"), + [SPECIES_VENUSAUR_GIGANTAMAX] = _("Venusaur"), + [SPECIES_CHARIZARD_GIGANTAMAX] = _("Charizard"), + [SPECIES_BLASTOISE_GIGANTAMAX] = _("Blastoise"), + [SPECIES_BUTTERFREE_GIGANTAMAX] = _("Butterfree"), + [SPECIES_PIKACHU_GIGANTAMAX] = _("Pikachu"), + [SPECIES_MEOWTH_GIGANTAMAX] = _("Meowth"), + [SPECIES_MACHAMP_GIGANTAMAX] = _("Machamp"), + [SPECIES_GENGAR_GIGANTAMAX] = _("Gengar"), + [SPECIES_KINGLER_GIGANTAMAX] = _("Kingler"), + [SPECIES_LAPRAS_GIGANTAMAX] = _("Lapras"), + [SPECIES_EEVEE_GIGANTAMAX] = _("Eevee"), + [SPECIES_SNORLAX_GIGANTAMAX] = _("Snorlax"), + [SPECIES_GARBODOR_GIGANTAMAX] = _("Garbodor"), + [SPECIES_MELMETAL_GIGANTAMAX] = _("Melmetal"), + [SPECIES_RILLABOOM_GIGANTAMAX] = _("Rillaboom"), + [SPECIES_CINDERACE_GIGANTAMAX] = _("Cinderace"), + [SPECIES_INTELEON_GIGANTAMAX] = _("Inteleon"), + [SPECIES_CORVIKNIGHT_GIGANTAMAX] = _("Corviknigh"), + [SPECIES_ORBEETLE_GIGANTAMAX] = _("Orbeetle"), + [SPECIES_DREDNAW_GIGANTAMAX] = _("Drednaw"), + [SPECIES_COALOSSAL_GIGANTAMAX] = _("Coalossal"), + [SPECIES_FLAPPLE_GIGANTAMAX] = _("Flapple"), + [SPECIES_APPLETUN_GIGANTAMAX] = _("Appletun"), + [SPECIES_SANDACONDA_GIGANTAMAX] = _("Sandaconda"), + [SPECIES_TOXTRICITY_GIGANTAMAX] = _("Toxtricity"), + [SPECIES_CENTISKORCH_GIGANTAMAX] = _("Centiskorc"), + [SPECIES_HATTERENE_GIGANTAMAX] = _("Hatterene"), + [SPECIES_GRIMMSNARL_GIGANTAMAX] = _("Grimmsnarl"), + [SPECIES_ALCREMIE_GIGANTAMAX] = _("Alcremie"), + [SPECIES_COPPERAJAH_GIGANTAMAX] = _("Copperajah"), + [SPECIES_DURALUDON_GIGANTAMAX] = _("Duraludon"), + [SPECIES_URSHIFU_GIGANTAMAX] = _("Urshifu"), + [SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX] = _("Urshifu"), #endif }; diff --git a/src/pokemon.c b/src/pokemon.c index 7d9cae1206..b71549257f 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -1684,39 +1684,39 @@ static const u16 sSpeciesToNationalPokedexNum[NUM_SPECIES - 1] = // Basculegion [SPECIES_BASCULEGION_FEMALE - 1] = NATIONAL_DEX_BASCULEGION, // Gigantamax Forms - [SPECIES_VENUSAUR_GMAX - 1] = NATIONAL_DEX_VENUSAUR, - [SPECIES_CHARIZARD_GMAX - 1] = NATIONAL_DEX_CHARIZARD, - [SPECIES_BLASTOISE_GMAX - 1] = NATIONAL_DEX_BLASTOISE, - [SPECIES_BUTTERFREE_GMAX - 1] = NATIONAL_DEX_BUTTERFREE, - [SPECIES_PIKACHU_GMAX - 1] = NATIONAL_DEX_PIKACHU, - [SPECIES_MEOWTH_GMAX - 1] = NATIONAL_DEX_MEOWTH, - [SPECIES_MACHAMP_GMAX - 1] = NATIONAL_DEX_MACHAMP, - [SPECIES_GENGAR_GMAX - 1] = NATIONAL_DEX_GENGAR, - [SPECIES_KINGLER_GMAX - 1] = NATIONAL_DEX_KINGLER, - [SPECIES_LAPRAS_GMAX - 1] = NATIONAL_DEX_LAPRAS, - [SPECIES_EEVEE_GMAX - 1] = NATIONAL_DEX_EEVEE, - [SPECIES_SNORLAX_GMAX - 1] = NATIONAL_DEX_SNORLAX, - [SPECIES_GARBODOR_GMAX - 1] = NATIONAL_DEX_GARBODOR, - [SPECIES_MELMETAL_GMAX - 1] = NATIONAL_DEX_MELMETAL, - [SPECIES_RILLABOOM_GMAX - 1] = NATIONAL_DEX_RILLABOOM, - [SPECIES_CINDERACE_GMAX - 1] = NATIONAL_DEX_CINDERACE, - [SPECIES_INTELEON_GMAX - 1] = NATIONAL_DEX_INTELEON, - [SPECIES_CORVIKNIGHT_GMAX - 1] = NATIONAL_DEX_CORVIKNIGHT, - [SPECIES_ORBEETLE_GMAX - 1] = NATIONAL_DEX_ORBEETLE, - [SPECIES_DREDNAW_GMAX - 1] = NATIONAL_DEX_DREDNAW, - [SPECIES_COALOSSAL_GMAX - 1] = NATIONAL_DEX_COALOSSAL, - [SPECIES_FLAPPLE_GMAX - 1] = NATIONAL_DEX_FLAPPLE, - [SPECIES_APPLETUN_GMAX - 1] = NATIONAL_DEX_APPLETUN, - [SPECIES_SANDACONDA_GMAX - 1] = NATIONAL_DEX_SANDACONDA, - [SPECIES_TOXTRICITY_GMAX - 1] = NATIONAL_DEX_TOXTRICITY, - [SPECIES_CENTISKORCH_GMAX - 1] = NATIONAL_DEX_CENTISKORCH, - [SPECIES_HATTERENE_GMAX - 1] = NATIONAL_DEX_HATTERENE, - [SPECIES_GRIMMSNARL_GMAX - 1] = NATIONAL_DEX_GRIMMSNARL, - [SPECIES_ALCREMIE_GMAX - 1] = NATIONAL_DEX_ALCREMIE, - [SPECIES_COPPERAJAH_GMAX - 1] = NATIONAL_DEX_COPPERAJAH, - [SPECIES_DURALUDON_GMAX - 1] = NATIONAL_DEX_DURALUDON, - [SPECIES_URSHIFU_GMAX - 1] = NATIONAL_DEX_URSHIFU, - [SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GMAX - 1] = NATIONAL_DEX_URSHIFU, + [SPECIES_VENUSAUR_GIGANTAMAX - 1] = NATIONAL_DEX_VENUSAUR, + [SPECIES_CHARIZARD_GIGANTAMAX - 1] = NATIONAL_DEX_CHARIZARD, + [SPECIES_BLASTOISE_GIGANTAMAX - 1] = NATIONAL_DEX_BLASTOISE, + [SPECIES_BUTTERFREE_GIGANTAMAX - 1] = NATIONAL_DEX_BUTTERFREE, + [SPECIES_PIKACHU_GIGANTAMAX - 1] = NATIONAL_DEX_PIKACHU, + [SPECIES_MEOWTH_GIGANTAMAX - 1] = NATIONAL_DEX_MEOWTH, + [SPECIES_MACHAMP_GIGANTAMAX - 1] = NATIONAL_DEX_MACHAMP, + [SPECIES_GENGAR_GIGANTAMAX - 1] = NATIONAL_DEX_GENGAR, + [SPECIES_KINGLER_GIGANTAMAX - 1] = NATIONAL_DEX_KINGLER, + [SPECIES_LAPRAS_GIGANTAMAX - 1] = NATIONAL_DEX_LAPRAS, + [SPECIES_EEVEE_GIGANTAMAX - 1] = NATIONAL_DEX_EEVEE, + [SPECIES_SNORLAX_GIGANTAMAX - 1] = NATIONAL_DEX_SNORLAX, + [SPECIES_GARBODOR_GIGANTAMAX - 1] = NATIONAL_DEX_GARBODOR, + [SPECIES_MELMETAL_GIGANTAMAX - 1] = NATIONAL_DEX_MELMETAL, + [SPECIES_RILLABOOM_GIGANTAMAX - 1] = NATIONAL_DEX_RILLABOOM, + [SPECIES_CINDERACE_GIGANTAMAX - 1] = NATIONAL_DEX_CINDERACE, + [SPECIES_INTELEON_GIGANTAMAX - 1] = NATIONAL_DEX_INTELEON, + [SPECIES_CORVIKNIGHT_GIGANTAMAX - 1] = NATIONAL_DEX_CORVIKNIGHT, + [SPECIES_ORBEETLE_GIGANTAMAX - 1] = NATIONAL_DEX_ORBEETLE, + [SPECIES_DREDNAW_GIGANTAMAX - 1] = NATIONAL_DEX_DREDNAW, + [SPECIES_COALOSSAL_GIGANTAMAX - 1] = NATIONAL_DEX_COALOSSAL, + [SPECIES_FLAPPLE_GIGANTAMAX - 1] = NATIONAL_DEX_FLAPPLE, + [SPECIES_APPLETUN_GIGANTAMAX - 1] = NATIONAL_DEX_APPLETUN, + [SPECIES_SANDACONDA_GIGANTAMAX - 1] = NATIONAL_DEX_SANDACONDA, + [SPECIES_TOXTRICITY_GIGANTAMAX - 1] = NATIONAL_DEX_TOXTRICITY, + [SPECIES_CENTISKORCH_GIGANTAMAX - 1] = NATIONAL_DEX_CENTISKORCH, + [SPECIES_HATTERENE_GIGANTAMAX - 1] = NATIONAL_DEX_HATTERENE, + [SPECIES_GRIMMSNARL_GIGANTAMAX - 1] = NATIONAL_DEX_GRIMMSNARL, + [SPECIES_ALCREMIE_GIGANTAMAX - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_COPPERAJAH_GIGANTAMAX - 1] = NATIONAL_DEX_COPPERAJAH, + [SPECIES_DURALUDON_GIGANTAMAX - 1] = NATIONAL_DEX_DURALUDON, + [SPECIES_URSHIFU_GIGANTAMAX - 1] = NATIONAL_DEX_URSHIFU, + [SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX - 1] = NATIONAL_DEX_URSHIFU, #endif }; diff --git a/src/pokemon_icon.c b/src/pokemon_icon.c index 6ab7ad9fdf..07c288d0bb 100644 --- a/src/pokemon_icon.c +++ b/src/pokemon_icon.c @@ -1295,39 +1295,39 @@ const u8 *const gMonIconTable[NUM_SPECIES + 1] = [SPECIES_ENAMORUS_THERIAN] = gMonIcon_EnamorusTherian, [SPECIES_BASCULEGION_FEMALE] = gMonIcon_BasculegionFemale, // Gigantamax Forms - [SPECIES_VENUSAUR_GMAX] = gMonIcon_VenusaurGmax, - [SPECIES_CHARIZARD_GMAX] = gMonIcon_CharizardGmax, - [SPECIES_BLASTOISE_GMAX] = gMonIcon_BlastoiseGmax, - [SPECIES_BUTTERFREE_GMAX] = gMonIcon_ButterfreeGmax, - [SPECIES_PIKACHU_GMAX] = gMonIcon_PikachuGmax, - [SPECIES_MEOWTH_GMAX] = gMonIcon_MeowthGmax, - [SPECIES_MACHAMP_GMAX] = gMonIcon_MachampGmax, - [SPECIES_GENGAR_GMAX] = gMonIcon_GengarGmax, - [SPECIES_KINGLER_GMAX] = gMonIcon_KinglerGmax, - [SPECIES_LAPRAS_GMAX] = gMonIcon_LaprasGmax, - [SPECIES_EEVEE_GMAX] = gMonIcon_EeveeGmax, - [SPECIES_SNORLAX_GMAX] = gMonIcon_SnorlaxGmax, - [SPECIES_GARBODOR_GMAX] = gMonIcon_GarbodorGmax, - [SPECIES_MELMETAL_GMAX] = gMonIcon_MelmetalGmax, - [SPECIES_RILLABOOM_GMAX] = gMonIcon_RillaboomGmax, - [SPECIES_CINDERACE_GMAX] = gMonIcon_CinderaceGmax, - [SPECIES_INTELEON_GMAX] = gMonIcon_InteleonGmax, - [SPECIES_CORVIKNIGHT_GMAX] = gMonIcon_CorviknightGmax, - [SPECIES_ORBEETLE_GMAX] = gMonIcon_OrbeetleGmax, - [SPECIES_DREDNAW_GMAX] = gMonIcon_DrednawGmax, - [SPECIES_COALOSSAL_GMAX] = gMonIcon_CoalossalGmax, - [SPECIES_FLAPPLE_GMAX] = gMonIcon_FlappleGmax, - [SPECIES_APPLETUN_GMAX] = gMonIcon_AppletunGmax, - [SPECIES_SANDACONDA_GMAX] = gMonIcon_SandacondaGmax, - [SPECIES_TOXTRICITY_GMAX] = gMonIcon_ToxtricityGmax, - [SPECIES_CENTISKORCH_GMAX] = gMonIcon_CentiskorchGmax, - [SPECIES_HATTERENE_GMAX] = gMonIcon_HattereneGmax, - [SPECIES_GRIMMSNARL_GMAX] = gMonIcon_GrimmsnarlGmax, - [SPECIES_ALCREMIE_GMAX] = gMonIcon_AlcremieGmax, - [SPECIES_COPPERAJAH_GMAX] = gMonIcon_CopperajahGmax, - [SPECIES_DURALUDON_GMAX] = gMonIcon_DuraludonGmax, - [SPECIES_URSHIFU_GMAX] = gMonIcon_UrshifuGmax, - [SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GMAX] = gMonIcon_UrshifuRapidStrikeGmax, + [SPECIES_VENUSAUR_GIGANTAMAX] = gMonIcon_VenusaurGigantamax, + [SPECIES_CHARIZARD_GIGANTAMAX] = gMonIcon_CharizardGigantamax, + [SPECIES_BLASTOISE_GIGANTAMAX] = gMonIcon_BlastoiseGigantamax, + [SPECIES_BUTTERFREE_GIGANTAMAX] = gMonIcon_ButterfreeGigantamax, + [SPECIES_PIKACHU_GIGANTAMAX] = gMonIcon_PikachuGigantamax, + [SPECIES_MEOWTH_GIGANTAMAX] = gMonIcon_MeowthGigantamax, + [SPECIES_MACHAMP_GIGANTAMAX] = gMonIcon_MachampGigantamax, + [SPECIES_GENGAR_GIGANTAMAX] = gMonIcon_GengarGigantamax, + [SPECIES_KINGLER_GIGANTAMAX] = gMonIcon_KinglerGigantamax, + [SPECIES_LAPRAS_GIGANTAMAX] = gMonIcon_LaprasGigantamax, + [SPECIES_EEVEE_GIGANTAMAX] = gMonIcon_EeveeGigantamax, + [SPECIES_SNORLAX_GIGANTAMAX] = gMonIcon_SnorlaxGigantamax, + [SPECIES_GARBODOR_GIGANTAMAX] = gMonIcon_GarbodorGigantamax, + [SPECIES_MELMETAL_GIGANTAMAX] = gMonIcon_MelmetalGigantamax, + [SPECIES_RILLABOOM_GIGANTAMAX] = gMonIcon_RillaboomGigantamax, + [SPECIES_CINDERACE_GIGANTAMAX] = gMonIcon_CinderaceGigantamax, + [SPECIES_INTELEON_GIGANTAMAX] = gMonIcon_InteleonGigantamax, + [SPECIES_CORVIKNIGHT_GIGANTAMAX] = gMonIcon_CorviknightGigantamax, + [SPECIES_ORBEETLE_GIGANTAMAX] = gMonIcon_OrbeetleGigantamax, + [SPECIES_DREDNAW_GIGANTAMAX] = gMonIcon_DrednawGigantamax, + [SPECIES_COALOSSAL_GIGANTAMAX] = gMonIcon_CoalossalGigantamax, + [SPECIES_FLAPPLE_GIGANTAMAX] = gMonIcon_FlappleGigantamax, + [SPECIES_APPLETUN_GIGANTAMAX] = gMonIcon_AppletunGigantamax, + [SPECIES_SANDACONDA_GIGANTAMAX] = gMonIcon_SandacondaGigantamax, + [SPECIES_TOXTRICITY_GIGANTAMAX] = gMonIcon_ToxtricityGigantamax, + [SPECIES_CENTISKORCH_GIGANTAMAX] = gMonIcon_CentiskorchGigantamax, + [SPECIES_HATTERENE_GIGANTAMAX] = gMonIcon_HattereneGigantamax, + [SPECIES_GRIMMSNARL_GIGANTAMAX] = gMonIcon_GrimmsnarlGigantamax, + [SPECIES_ALCREMIE_GIGANTAMAX] = gMonIcon_AlcremieGigantamax, + [SPECIES_COPPERAJAH_GIGANTAMAX] = gMonIcon_CopperajahGigantamax, + [SPECIES_DURALUDON_GIGANTAMAX] = gMonIcon_DuraludonGigantamax, + [SPECIES_URSHIFU_GIGANTAMAX] = gMonIcon_UrshifuGigantamax, + [SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX] = gMonIcon_UrshifuRapidStrikeGigantamax, #endif [SPECIES_EGG] = gMonIcon_Egg, }; @@ -2562,39 +2562,39 @@ const u8 gMonIconPaletteIndices[] = [SPECIES_CALYREX_SHADOW_RIDER] = 0, [SPECIES_ENAMORUS_THERIAN] = 1, [SPECIES_BASCULEGION_FEMALE] = 0, - [SPECIES_VENUSAUR_GMAX] = 0, - [SPECIES_CHARIZARD_GMAX] = 0, - [SPECIES_BLASTOISE_GMAX] = 0, - [SPECIES_BUTTERFREE_GMAX] = 0, - [SPECIES_PIKACHU_GMAX] = 2, - [SPECIES_MEOWTH_GMAX] = 1, - [SPECIES_MACHAMP_GMAX] = 0, - [SPECIES_GENGAR_GMAX] = 2, - [SPECIES_KINGLER_GMAX] = 0, - [SPECIES_LAPRAS_GMAX] = 2, - [SPECIES_EEVEE_GMAX] = 2, - [SPECIES_SNORLAX_GMAX] = 3, - [SPECIES_GARBODOR_GMAX] = 0, - [SPECIES_MELMETAL_GMAX] = 0, - [SPECIES_RILLABOOM_GMAX] = 1, - [SPECIES_CINDERACE_GMAX] = 0, - [SPECIES_INTELEON_GMAX] = 0, - [SPECIES_CORVIKNIGHT_GMAX] = 0, - [SPECIES_ORBEETLE_GMAX] = 0, - [SPECIES_DREDNAW_GMAX] = 0, - [SPECIES_COALOSSAL_GMAX] = 0, - [SPECIES_FLAPPLE_GMAX] = 1, - [SPECIES_APPLETUN_GMAX] = 1, - [SPECIES_SANDACONDA_GMAX] = 1, - [SPECIES_TOXTRICITY_GMAX] = 0, - [SPECIES_CENTISKORCH_GMAX] = 0, - [SPECIES_HATTERENE_GMAX] = 0, - [SPECIES_GRIMMSNARL_GMAX] = 0, - [SPECIES_ALCREMIE_GMAX] = 1, - [SPECIES_COPPERAJAH_GMAX] = 0, - [SPECIES_DURALUDON_GMAX] = 0, - [SPECIES_URSHIFU_GMAX] = 0, - [SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GMAX] = 0, + [SPECIES_VENUSAUR_GIGANTAMAX] = 0, + [SPECIES_CHARIZARD_GIGANTAMAX] = 0, + [SPECIES_BLASTOISE_GIGANTAMAX] = 0, + [SPECIES_BUTTERFREE_GIGANTAMAX] = 0, + [SPECIES_PIKACHU_GIGANTAMAX] = 2, + [SPECIES_MEOWTH_GIGANTAMAX] = 1, + [SPECIES_MACHAMP_GIGANTAMAX] = 0, + [SPECIES_GENGAR_GIGANTAMAX] = 2, + [SPECIES_KINGLER_GIGANTAMAX] = 0, + [SPECIES_LAPRAS_GIGANTAMAX] = 2, + [SPECIES_EEVEE_GIGANTAMAX] = 2, + [SPECIES_SNORLAX_GIGANTAMAX] = 3, + [SPECIES_GARBODOR_GIGANTAMAX] = 0, + [SPECIES_MELMETAL_GIGANTAMAX] = 0, + [SPECIES_RILLABOOM_GIGANTAMAX] = 1, + [SPECIES_CINDERACE_GIGANTAMAX] = 0, + [SPECIES_INTELEON_GIGANTAMAX] = 0, + [SPECIES_CORVIKNIGHT_GIGANTAMAX] = 0, + [SPECIES_ORBEETLE_GIGANTAMAX] = 0, + [SPECIES_DREDNAW_GIGANTAMAX] = 0, + [SPECIES_COALOSSAL_GIGANTAMAX] = 0, + [SPECIES_FLAPPLE_GIGANTAMAX] = 1, + [SPECIES_APPLETUN_GIGANTAMAX] = 1, + [SPECIES_SANDACONDA_GIGANTAMAX] = 1, + [SPECIES_TOXTRICITY_GIGANTAMAX] = 0, + [SPECIES_CENTISKORCH_GIGANTAMAX] = 0, + [SPECIES_HATTERENE_GIGANTAMAX] = 0, + [SPECIES_GRIMMSNARL_GIGANTAMAX] = 0, + [SPECIES_ALCREMIE_GIGANTAMAX] = 1, + [SPECIES_COPPERAJAH_GIGANTAMAX] = 0, + [SPECIES_DURALUDON_GIGANTAMAX] = 0, + [SPECIES_URSHIFU_GIGANTAMAX] = 0, + [SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX] = 0, #endif [SPECIES_EGG] = 1, }; diff --git a/test/dynamax.c b/test/dynamax.c index cdbc17ec97..db7176a550 100644 --- a/test/dynamax.c +++ b/test/dynamax.c @@ -457,7 +457,7 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Pokemon with Gigantamax forms change upon Dynamaxi } WHEN { TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); } } THEN { - EXPECT_EQ(player->species, SPECIES_VENUSAUR_GMAX); + EXPECT_EQ(player->species, SPECIES_VENUSAUR_GIGANTAMAX); } } From 4d4d566c2bf70407335cee7b8fc63975e09a7760 Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Tue, 10 Oct 2023 18:09:42 -0300 Subject: [PATCH 089/162] Undid flag --- include/config/battle.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/config/battle.h b/include/config/battle.h index fce8c196ef..a5c16d2591 100644 --- a/include/config/battle.h +++ b/include/config/battle.h @@ -160,7 +160,7 @@ #define B_FLAG_NO_BAG_USE 0 // If this flag is set, the ability to use the bag in battle is disabled. #define B_FLAG_NO_CATCHING 0 // If this flag is set, the ability to catch wild Pokémon is disabled. #define B_FLAG_AI_VS_AI_BATTLE 0 // If this flag is set, the player's mons will be controlled by the ai next battles. -#define B_FLAG_DYNAMAX_BATTLE FLAG_UNUSED_0x020 // If this flag is set, the ability to Dynamax in battle is enabled for all trainers. +#define B_FLAG_DYNAMAX_BATTLE 0 // If this flag is set, the ability to Dynamax in battle is enabled for all trainers. // Var Settings // To use the following features in scripting, replace the 0s with the var ID you're assigning it to. From 1acc0ba2e388545dbbd872d3b1ccb9cba7d8f003 Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Tue, 10 Oct 2023 19:13:05 -0300 Subject: [PATCH 090/162] Style fixes --- src/battle_dynamax.c | 80 +++++++++++++++++++++++--------------------- 1 file changed, 41 insertions(+), 39 deletions(-) diff --git a/src/battle_dynamax.c b/src/battle_dynamax.c index 742516a0b6..f98ec0e58c 100644 --- a/src/battle_dynamax.c +++ b/src/battle_dynamax.c @@ -56,39 +56,39 @@ struct GMaxMove static const struct GMaxMove sGMaxMoveTable[] = { - {SPECIES_VENUSAUR_GIGANTAMAX, TYPE_GRASS, MOVE_G_MAX_VINE_LASH}, - {SPECIES_BLASTOISE_GIGANTAMAX, TYPE_WATER, MOVE_G_MAX_CANNONADE}, - {SPECIES_CHARIZARD_GIGANTAMAX, TYPE_FIRE, MOVE_G_MAX_WILDFIRE}, - {SPECIES_BUTTERFREE_GIGANTAMAX, TYPE_BUG, MOVE_G_MAX_BEFUDDLE}, - {SPECIES_PIKACHU_GIGANTAMAX, TYPE_ELECTRIC, MOVE_G_MAX_VOLT_CRASH}, - {SPECIES_MEOWTH_GIGANTAMAX, TYPE_NORMAL, MOVE_G_MAX_GOLD_RUSH}, - {SPECIES_MACHAMP_GIGANTAMAX, TYPE_FIGHTING, MOVE_G_MAX_CHI_STRIKE}, - {SPECIES_GENGAR_GIGANTAMAX, TYPE_GHOST, MOVE_G_MAX_TERROR}, - {SPECIES_KINGLER_GIGANTAMAX, TYPE_WATER, MOVE_G_MAX_FOAM_BURST}, - {SPECIES_LAPRAS_GIGANTAMAX, TYPE_ICE, MOVE_G_MAX_RESONANCE}, - {SPECIES_EEVEE_GIGANTAMAX, TYPE_NORMAL, MOVE_G_MAX_CUDDLE}, - {SPECIES_SNORLAX_GIGANTAMAX, TYPE_NORMAL, MOVE_G_MAX_REPLENISH}, - {SPECIES_GARBODOR_GIGANTAMAX, TYPE_POISON, MOVE_G_MAX_MALODOR}, - {SPECIES_MELMETAL_GIGANTAMAX, TYPE_STEEL, MOVE_G_MAX_MELTDOWN}, - {SPECIES_RILLABOOM_GIGANTAMAX, TYPE_GRASS, MOVE_G_MAX_DRUM_SOLO}, - {SPECIES_CINDERACE_GIGANTAMAX, TYPE_FIRE, MOVE_G_MAX_FIREBALL}, - {SPECIES_INTELEON_GIGANTAMAX, TYPE_WATER, MOVE_G_MAX_HYDROSNIPE}, - {SPECIES_CORVIKNIGHT_GIGANTAMAX, TYPE_FLYING, MOVE_G_MAX_WIND_RAGE}, - {SPECIES_ORBEETLE_GIGANTAMAX, TYPE_PSYCHIC, MOVE_G_MAX_GRAVITAS}, - {SPECIES_DREDNAW_GIGANTAMAX, TYPE_WATER, MOVE_G_MAX_STONESURGE}, - {SPECIES_COALOSSAL_GIGANTAMAX, TYPE_ROCK, MOVE_G_MAX_VOLCALITH}, - {SPECIES_FLAPPLE_GIGANTAMAX, TYPE_GRASS, MOVE_G_MAX_TARTNESS}, - {SPECIES_APPLETUN_GIGANTAMAX, TYPE_GRASS, MOVE_G_MAX_SWEETNESS}, - {SPECIES_SANDACONDA_GIGANTAMAX, TYPE_GROUND, MOVE_G_MAX_SANDBLAST}, - {SPECIES_TOXTRICITY_GIGANTAMAX, TYPE_ELECTRIC, MOVE_G_MAX_STUN_SHOCK}, - {SPECIES_CENTISKORCH_GIGANTAMAX, TYPE_FIRE, MOVE_G_MAX_CENTIFERNO}, - {SPECIES_HATTERENE_GIGANTAMAX, TYPE_FAIRY, MOVE_G_MAX_SMITE}, - {SPECIES_GRIMMSNARL_GIGANTAMAX, TYPE_DARK, MOVE_G_MAX_SNOOZE}, - {SPECIES_ALCREMIE_GIGANTAMAX, TYPE_FAIRY, MOVE_G_MAX_FINALE}, - {SPECIES_COPPERAJAH_GIGANTAMAX, TYPE_STEEL, MOVE_G_MAX_STEELSURGE}, - {SPECIES_DURALUDON_GIGANTAMAX, TYPE_DRAGON, MOVE_G_MAX_DEPLETION}, - {SPECIES_URSHIFU_GIGANTAMAX, TYPE_DARK, MOVE_G_MAX_ONE_BLOW}, - {SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX, TYPE_WATER, MOVE_G_MAX_RAPID_FLOW}, + {SPECIES_VENUSAUR_GIGANTAMAX, TYPE_GRASS, MOVE_G_MAX_VINE_LASH}, + {SPECIES_BLASTOISE_GIGANTAMAX, TYPE_WATER, MOVE_G_MAX_CANNONADE}, + {SPECIES_CHARIZARD_GIGANTAMAX, TYPE_FIRE, MOVE_G_MAX_WILDFIRE}, + {SPECIES_BUTTERFREE_GIGANTAMAX, TYPE_BUG, MOVE_G_MAX_BEFUDDLE}, + {SPECIES_PIKACHU_GIGANTAMAX, TYPE_ELECTRIC, MOVE_G_MAX_VOLT_CRASH}, + {SPECIES_MEOWTH_GIGANTAMAX, TYPE_NORMAL, MOVE_G_MAX_GOLD_RUSH}, + {SPECIES_MACHAMP_GIGANTAMAX, TYPE_FIGHTING, MOVE_G_MAX_CHI_STRIKE}, + {SPECIES_GENGAR_GIGANTAMAX, TYPE_GHOST, MOVE_G_MAX_TERROR}, + {SPECIES_KINGLER_GIGANTAMAX, TYPE_WATER, MOVE_G_MAX_FOAM_BURST}, + {SPECIES_LAPRAS_GIGANTAMAX, TYPE_ICE, MOVE_G_MAX_RESONANCE}, + {SPECIES_EEVEE_GIGANTAMAX, TYPE_NORMAL, MOVE_G_MAX_CUDDLE}, + {SPECIES_SNORLAX_GIGANTAMAX, TYPE_NORMAL, MOVE_G_MAX_REPLENISH}, + {SPECIES_GARBODOR_GIGANTAMAX, TYPE_POISON, MOVE_G_MAX_MALODOR}, + {SPECIES_MELMETAL_GIGANTAMAX, TYPE_STEEL, MOVE_G_MAX_MELTDOWN}, + {SPECIES_RILLABOOM_GIGANTAMAX, TYPE_GRASS, MOVE_G_MAX_DRUM_SOLO}, + {SPECIES_CINDERACE_GIGANTAMAX, TYPE_FIRE, MOVE_G_MAX_FIREBALL}, + {SPECIES_INTELEON_GIGANTAMAX, TYPE_WATER, MOVE_G_MAX_HYDROSNIPE}, + {SPECIES_CORVIKNIGHT_GIGANTAMAX, TYPE_FLYING, MOVE_G_MAX_WIND_RAGE}, + {SPECIES_ORBEETLE_GIGANTAMAX, TYPE_PSYCHIC, MOVE_G_MAX_GRAVITAS}, + {SPECIES_DREDNAW_GIGANTAMAX, TYPE_WATER, MOVE_G_MAX_STONESURGE}, + {SPECIES_COALOSSAL_GIGANTAMAX, TYPE_ROCK, MOVE_G_MAX_VOLCALITH}, + {SPECIES_FLAPPLE_GIGANTAMAX, TYPE_GRASS, MOVE_G_MAX_TARTNESS}, + {SPECIES_APPLETUN_GIGANTAMAX, TYPE_GRASS, MOVE_G_MAX_SWEETNESS}, + {SPECIES_SANDACONDA_GIGANTAMAX, TYPE_GROUND, MOVE_G_MAX_SANDBLAST}, + {SPECIES_TOXTRICITY_GIGANTAMAX, TYPE_ELECTRIC, MOVE_G_MAX_STUN_SHOCK}, + {SPECIES_CENTISKORCH_GIGANTAMAX, TYPE_FIRE, MOVE_G_MAX_CENTIFERNO}, + {SPECIES_HATTERENE_GIGANTAMAX, TYPE_FAIRY, MOVE_G_MAX_SMITE}, + {SPECIES_GRIMMSNARL_GIGANTAMAX, TYPE_DARK, MOVE_G_MAX_SNOOZE}, + {SPECIES_ALCREMIE_GIGANTAMAX, TYPE_FAIRY, MOVE_G_MAX_FINALE}, + {SPECIES_COPPERAJAH_GIGANTAMAX, TYPE_STEEL, MOVE_G_MAX_STEELSURGE}, + {SPECIES_DURALUDON_GIGANTAMAX, TYPE_DRAGON, MOVE_G_MAX_DEPLETION}, + {SPECIES_URSHIFU_GIGANTAMAX, TYPE_DARK, MOVE_G_MAX_ONE_BLOW}, + {SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX, TYPE_WATER, MOVE_G_MAX_RAPID_FLOW}, }; // forward declarations @@ -148,7 +148,8 @@ bool32 CanDynamax(u16 battlerId) } // Returns whether a battler is transformed into a Gigantamax form. -bool32 IsGigantamaxed(u16 battlerId) { +bool32 IsGigantamaxed(u16 battlerId) +{ // TODO: Incorporate Gigantamax factor. if ((gSpeciesInfo[gBattleMons[battlerId].species].gigantamax)) return TRUE; @@ -279,7 +280,7 @@ bool32 ShouldUseMaxMove(u16 battlerId, u16 baseMove) { // TODO: Raid bosses do not always use Max Moves. // if (IsRaidBoss(battlerId)) - // return !IsRaidBossUsingRegularMove(battlerId, baseMove); + // return !IsRaidBossUsingRegularMove(battlerId, baseMove); return IsDynamaxed(battlerId) || gBattleStruct->dynamax.toDynamax & gBitTable[battlerId]; } @@ -495,7 +496,8 @@ const u8 *GetMaxMoveName(u16 move) // Assigns the multistring to use for the "Damage Non- Types" G-Max effect. void ChooseDamageNonTypesString(u8 type) { - switch (type) { + switch (type) + { case TYPE_GRASS: gBattleCommunication[MULTISTRING_CHOOSER] = 0; break; @@ -956,7 +958,7 @@ void BS_TrySetStatus1(void) BtlController_EmitSetMonData(gBattlerTarget, BUFFER_A, REQUEST_STATUS_BATTLE, 0, sizeof(gBattleMons[gBattlerTarget].status1), &gBattleMons[gBattlerTarget].status1); MarkBattlerForControllerExec(gBattlerTarget); gBattlescriptCurrInstr = cmd->nextInstr; - } + } else { gBattlescriptCurrInstr = cmd->failInstr; @@ -1022,7 +1024,7 @@ void BS_TrySetStatus2(void) { gEffectBattler = gBattlerTarget; gBattlescriptCurrInstr = cmd->nextInstr; - } + } else { gBattlescriptCurrInstr = cmd->failInstr; @@ -1037,7 +1039,7 @@ void BS_DamageNonTypes(void) gBattleMoveDamage = 0; if (gSideTimers[side].damageNonTypesTimer && !IS_BATTLER_OF_TYPE(gBattlerAttacker, gSideTimers[side].damageNonTypesType) - && IsBattlerAlive(gBattlerAttacker) + && IsBattlerAlive(gBattlerAttacker) && GetBattlerAbility(gBattlerAttacker) != ABILITY_MAGIC_GUARD) { gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker) / 6; From c61d187cc315b7abc4f2d4dcd8702e9633cb8bda Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Tue, 10 Oct 2023 19:13:48 -0300 Subject: [PATCH 091/162] Removed hard-coded order for sGMaxMoveTable + failsafe for sMaxMoveTable --- src/battle_dynamax.c | 34 ++++++++++++++++++++-------------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/src/battle_dynamax.c b/src/battle_dynamax.c index f98ec0e58c..4c9b4b4273 100644 --- a/src/battle_dynamax.c +++ b/src/battle_dynamax.c @@ -25,7 +25,7 @@ static u8 GetMaxPowerTier(u16 move); // Constant Data -static const u16 sMaxMoveTable[] = +static const u16 sMaxMoveTable[NUMBER_OF_MON_TYPES] = { [TYPE_NORMAL] = MOVE_MAX_STRIKE, [TYPE_FIGHTING] = MOVE_MAX_KNUCKLE, @@ -287,22 +287,28 @@ bool32 ShouldUseMaxMove(u16 battlerId, u16 baseMove) static u16 GetTypeBasedMaxMove(u16 battlerId, u16 type) { // Gigantamax check + u32 i; u16 species = gBattleMons[battlerId].species; - u16 targetSpecies = GetBattleFormChangeTargetSpecies(battlerId, FORM_CHANGE_BATTLE_GIGANTAMAX); - if (species >= (SPECIES_VENUSAUR_GIGANTAMAX) - && sGMaxMoveTable[species - (SPECIES_VENUSAUR_GIGANTAMAX)].moveType == type) - { - return sGMaxMoveTable[species - (SPECIES_VENUSAUR_GIGANTAMAX)].gmaxMove; - } - else if (targetSpecies != SPECIES_NONE - && sGMaxMoveTable[targetSpecies - (SPECIES_VENUSAUR_GIGANTAMAX)].moveType == type) - { - return sGMaxMoveTable[targetSpecies - (SPECIES_VENUSAUR_GIGANTAMAX)].gmaxMove; - } + u16 targetSpecies = SPECIES_NONE; - // regular Max Move - else + if (!gSpeciesInfo[species].gigantamax) + targetSpecies = GetBattleFormChangeTargetSpecies(battlerId, FORM_CHANGE_BATTLE_GIGANTAMAX); + + if (targetSpecies != SPECIES_NONE) + species = targetSpecies; + + if (gSpeciesInfo[species].gigantamax) { + for (i = 0; i < ARRAY_COUNT(sGMaxMoveTable); i++) + { + if (sGMaxMoveTable[i].species == species && sGMaxMoveTable[i].moveType == type) + return sGMaxMoveTable[i].gmaxMove; + } + } + else // Regular Max Move + { + if (sMaxMoveTable[type] == MOVE_NONE) // failsafe + return sMaxMoveTable[0]; return sMaxMoveTable[type]; } } From 3cb29f87a6616cf91905f96730e443c6164ceb96 Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Tue, 10 Oct 2023 19:53:56 -0300 Subject: [PATCH 092/162] gBattleCommunication ids --- include/constants/battle_string_ids.h | 12 ++++++++++++ src/battle_dynamax.c | 8 ++++---- src/battle_message.c | 10 ++++++++-- 3 files changed, 24 insertions(+), 6 deletions(-) diff --git a/include/constants/battle_string_ids.h b/include/constants/battle_string_ids.h index 7667964bcb..c9f9b2bde5 100644 --- a/include/constants/battle_string_ids.h +++ b/include/constants/battle_string_ids.h @@ -992,4 +992,16 @@ #define B_MSG_SPIKESSCATTERED 4 #define B_MSG_SHARPSTEELFLOATS 5 +// gDamageNonTypesStartStringIds +#define B_MSG_TRAPPED_WITH_VINES 0 +#define B_MSG_CAUGHT_IN_VORTEX 1 +#define B_MSG_SURROUNDED_BY_FIRE 2 +#define B_MSG_SURROUNDED_BY_ROCKS 3 + +// gDamageNonTypesDmgStringIds +#define B_MSG_HURT_BY_VINES 0 +#define B_MSG_HURT_BY_VORTEX 1 +#define B_MSG_BURNING_UP 2 +#define B_MSG_HURT_BY_ROCKS_THROWN 3 + #endif // GUARD_CONSTANTS_BATTLE_STRING_IDS_H diff --git a/src/battle_dynamax.c b/src/battle_dynamax.c index 4c9b4b4273..38cde59bfb 100644 --- a/src/battle_dynamax.c +++ b/src/battle_dynamax.c @@ -505,16 +505,16 @@ void ChooseDamageNonTypesString(u8 type) switch (type) { case TYPE_GRASS: - gBattleCommunication[MULTISTRING_CHOOSER] = 0; + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_TRAPPED_WITH_VINES; break; case TYPE_WATER: - gBattleCommunication[MULTISTRING_CHOOSER] = 1; + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_CAUGHT_IN_VORTEX; break; case TYPE_FIRE: - gBattleCommunication[MULTISTRING_CHOOSER] = 2; + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_SURROUNDED_BY_FIRE; break; case TYPE_ROCK: - gBattleCommunication[MULTISTRING_CHOOSER] = 3; + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_SURROUNDED_BY_ROCKS; break; } } diff --git a/src/battle_message.c b/src/battle_message.c index 937756ec51..563fe85eaa 100644 --- a/src/battle_message.c +++ b/src/battle_message.c @@ -1992,12 +1992,18 @@ const u16 gStatus2StringIds[] = const u16 gDamageNonTypesStartStringIds[] = { - STRINGID_TEAMTRAPPEDWITHVINES, STRINGID_TEAMCAUGHTINVORTEX, STRINGID_TEAMSURROUNDEDBYFIRE, STRINGID_TEAMSURROUNDEDBYROCKS + [B_MSG_TRAPPED_WITH_VINES] = STRINGID_TEAMTRAPPEDWITHVINES, + [B_MSG_CAUGHT_IN_VORTEX] = STRINGID_TEAMCAUGHTINVORTEX, + [B_MSG_SURROUNDED_BY_FIRE] = STRINGID_TEAMSURROUNDEDBYFIRE, + [B_MSG_SURROUNDED_BY_ROCKS] = STRINGID_TEAMSURROUNDEDBYROCKS, }; const u16 gDamageNonTypesDmgStringIds[] = { - STRINGID_PKMNHURTBYVINES, STRINGID_PKMNHURTBYVORTEX, STRINGID_PKMNBURNINGUP, STRINGID_PKMNHURTBYROCKSTHROWN + [B_MSG_HURT_BY_VINES] = STRINGID_PKMNHURTBYVINES, + [B_MSG_HURT_BY_VORTEX] = STRINGID_PKMNHURTBYVORTEX, + [B_MSG_BURNING_UP] = STRINGID_PKMNBURNINGUP, + [B_MSG_HURT_BY_ROCKS_THROWN] = STRINGID_PKMNHURTBYROCKSTHROWN, }; const u8 gText_PkmnIsEvolving[] = _("What?\n{STR_VAR_1} is evolving!"); From 6ed8ab771b4ff629e1ed15f10854f649c26cd42b Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 13 Oct 2023 14:08:44 +0200 Subject: [PATCH 093/162] Fix Syrup Bomb and change Octolock --- data/battle_scripts_1.s | 51 +++++---------- src/battle_script_commands.c | 8 +-- src/battle_util.c | 13 +--- test/battle/damage_formula.c | 37 +++++++++++ test/battle/move_effect/octolock.c | 97 ++++++++++++++++++++++++++++ test/battle/move_effect/syrup_bomb.c | 7 +- 6 files changed, 158 insertions(+), 55 deletions(-) create mode 100644 test/battle/move_effect/octolock.c diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 183e7796bb..7f323dbd8b 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -452,28 +452,15 @@ BattleScript_EffectSyrupBomb:: goto BattleScript_MoveEnd BattleScript_SyrupBombEndTurn:: - setbyte sSTAT_ANIM_PLAYED, FALSE - copybyte sBATTLER, gBattlerTarget - jumpifholdeffect BS_TARGET, HOLD_EFFECT_CLEAR_AMULET, BattleScript_SyrupBombItemNoStatLoss - jumpifability BS_TARGET, ABILITY_CLEAR_BODY, BattleScript_SyrupBombAbilityNoStatLoss - jumpifability BS_TARGET, ABILITY_FULL_METAL_BODY, BattleScript_SyrupBombAbilityNoStatLoss - jumpifability BS_TARGET, ABILITY_WHITE_SMOKE, BattleScript_SyrupBombAbilityNoStatLoss - jumpifstat BS_TARGET, CMP_GREATER_THAN, BIT_SPEED, MIN_STAT_STAGE, BattleScript_SyrupBombLowerSpeed - goto BattleScript_SyrupBombEnd2 -BattleScript_SyrupBombLowerSpeed: playstatchangeanimation BS_ATTACKER, BIT_SPEED, STAT_CHANGE_NEGATIVE - setbyte sSTAT_ANIM_PLAYED, TRUE setstatchanger STAT_SPEED, 1, TRUE - statbuffchange STAT_CHANGE_ALLOW_PTR, BattleScript_SyrupBombEnd2 - jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_STAT_WONT_DECREASE, BattleScript_SyrupBombEnd2 + statbuffchange STAT_CHANGE_ALLOW_PTR | STAT_CHANGE_NOT_PROTECT_AFFECTED, BattleScript_SyrupBombTurnDmgEnd +BattleScript_SyrupBombTurnDmgPrintMsg: + jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 3, BattleScript_SyrupBombTurnDmgEnd + jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 4, BattleScript_SyrupBombTurnDmgEnd printfromtable gStatDownStringIds waitmessage B_WAIT_TIME_LONG -BattleScript_SyrupBombItemNoStatLoss:: - call BattleScript_ItemNoStatLoss - goto BattleScript_SyrupBombEnd2 -BattleScript_SyrupBombAbilityNoStatLoss:: - call BattleScript_AbilityNoStatLoss -BattleScript_SyrupBombEnd2:: +BattleScript_SyrupBombTurnDmgEnd: end2 BattleScript_EffectMatchaGotcha:: @@ -1079,29 +1066,23 @@ BattleScript_EffectOctolock: goto BattleScript_MoveEnd BattleScript_OctolockEndTurn:: - setbyte sSTAT_ANIM_PLAYED, FALSE - jumpifstat BS_TARGET, CMP_GREATER_THAN, STAT_DEF, MIN_STAT_STAGE, BattleScript_OctolockLowerDef - jumpifstat BS_TARGET, CMP_GREATER_THAN, STAT_SPDEF, MIN_STAT_STAGE, BattleScript_OctolockTryLowerSpDef - goto BattleScript_OctolockEnd2 -BattleScript_OctolockLowerDef: - jumpifability BS_TARGET, ABILITY_BIG_PECKS, BattleScript_OctolockTryLowerSpDef playstatchangeanimation BS_ATTACKER, BIT_DEF | BIT_SPDEF, STAT_CHANGE_NEGATIVE - setbyte sSTAT_ANIM_PLAYED, TRUE setstatchanger STAT_DEF, 1, TRUE - statbuffchange STAT_CHANGE_ALLOW_PTR, BattleScript_OctolockTryLowerSpDef - jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_STAT_WONT_DECREASE, BattleScript_OctolockTryLowerSpDef - printfromtable gStatUpStringIds + statbuffchange STAT_CHANGE_ALLOW_PTR | STAT_CHANGE_NOT_PROTECT_AFFECTED, BattleScript_OctolockTryLowerDef +BattleScript_OctolockTryLowerDef: + jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 3, BattleScript_OctolockTryLowerSpDef + jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 4, BattleScript_OctolockTryLowerSpDef + printfromtable gStatDownStringIds waitmessage B_WAIT_TIME_LONG BattleScript_OctolockTryLowerSpDef: - jumpifbyte CMP_EQUAL, sSTAT_ANIM_PLAYED, TRUE, BattleScript_OctolockSkipSpDefAnim - playstatchangeanimation BS_ATTACKER, BIT_SPDEF, STAT_CHANGE_NEGATIVE -BattleScript_OctolockSkipSpDefAnim: setstatchanger STAT_SPDEF, 1, TRUE - statbuffchange STAT_CHANGE_ALLOW_PTR, BattleScript_OctolockEnd2 - jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_STAT_WONT_DECREASE, BattleScript_OctolockEnd2 - printfromtable gStatUpStringIds + statbuffchange STAT_CHANGE_ALLOW_PTR | STAT_CHANGE_NOT_PROTECT_AFFECTED, BattleScript_OctolockTurnDmgPrintMsg +BattleScript_OctolockTurnDmgPrintMsg: + jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 3, BattleScript_OctlockTurnDmgEnd + jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 4, BattleScript_OctlockTurnDmgEnd + printfromtable gStatDownStringIds waitmessage B_WAIT_TIME_LONG -BattleScript_OctolockEnd2:: +BattleScript_OctlockTurnDmgEnd: end2 BattleScript_EffectPoltergeist: diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index cc365dbf82..b415f25d52 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -3010,7 +3010,7 @@ void SetMoveEffect(bool32 primary, u32 certain) gBattleMons[gEffectBattler].status1 |= STATUS1_SLEEP_TURN(1 + RandomUniform(RNG_SLEEP_TURNS, 1, 3)); else gBattleMons[gEffectBattler].status1 |= STATUS1_SLEEP_TURN(1 + RandomUniform(RNG_SLEEP_TURNS, 2, 5)); - } + } else { gBattleMons[gEffectBattler].status1 |= sStatusFlagsForMoveEffects[gBattleScripting.moveEffect]; @@ -11406,11 +11406,6 @@ static u32 ChangeStatBuffs(s8 statValue, u32 statId, u32 flags, const u8 *BS_ptr || battlerAbility == ABILITY_WHITE_SMOKE) && (!affectsUser || mirrorArmored) && !certain && gCurrentMove != MOVE_CURSE) { - if (battlerHoldEffect == HOLD_EFFECT_CLEAR_AMULET) - { - RecordItemEffectBattle(battler, HOLD_EFFECT_CLEAR_AMULET); - } - if (flags == STAT_CHANGE_ALLOW_PTR) { if (gSpecialStatuses[battler].statLowered) @@ -11424,6 +11419,7 @@ static u32 ChangeStatBuffs(s8 statValue, u32 statId, u32 flags, const u8 *BS_ptr if (battlerHoldEffect == HOLD_EFFECT_CLEAR_AMULET) { gBattlescriptCurrInstr = BattleScript_ItemNoStatLoss; + RecordItemEffectBattle(battler, HOLD_EFFECT_CLEAR_AMULET); } else { diff --git a/src/battle_util.c b/src/battle_util.c index a619b505e4..32bbf7f7e0 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -2793,11 +2793,7 @@ u8 DoBattlerEndTurnEffects(void) case ENDTURN_OCTOLOCK: { u16 battlerAbility = GetBattlerAbility(battler); - if (gDisableStructs[battler].octolock - && !(GetBattlerHoldEffect(battler, TRUE) == HOLD_EFFECT_CLEAR_AMULET - || battlerAbility == ABILITY_CLEAR_BODY - || battlerAbility == ABILITY_FULL_METAL_BODY - || battlerAbility == ABILITY_WHITE_SMOKE)) + if (gDisableStructs[battler].octolock) { gBattlerTarget = battler; BattleScriptExecute(BattleScript_OctolockEndTurn); @@ -3094,9 +3090,6 @@ u8 DoBattlerEndTurnEffects(void) case ENDTURN_SYRUP_BOMB: if ((gStatuses4[battler] & STATUS4_SYRUP_BOMB) && (gBattleMons[battler].hp != 0)) { - u16 battlerAbility = GetBattlerAbility(battler); - u32 battlerHoldEffect = GetBattlerHoldEffect(battler, TRUE); - gDisableStructs[battler].syrupBombTimer--; if (gDisableStructs[battler].syrupBombTimer == 0) { @@ -5760,7 +5753,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 case ABILITYEFFECT_OPPORTUNIST: /* Similar to ABILITYEFFECT_IMMUNITY in that it loops through all battlers. * Is called after ABILITYEFFECT_ON_SWITCHIN to copy any boosts - * from switch in abilities e.g. intrepid sword, as + * from switch in abilities e.g. intrepid sword, as */ for (battler = 0; battler < gBattlersCount; battler++) { @@ -5836,7 +5829,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 effect = 4; break; } - + if (effect != 0) { switch (effect) diff --git a/test/battle/damage_formula.c b/test/battle/damage_formula.c index 98aa197ca1..a4b0a03f58 100644 --- a/test/battle/damage_formula.c +++ b/test/battle/damage_formula.c @@ -76,3 +76,40 @@ SINGLE_BATTLE_TEST("Damage calculation matches Gen5+ (Muscle Band, crit)") EXPECT_EQ(expectedDamage, dmg); } } + +SINGLE_BATTLE_TEST("Damage calculation matches Gen5+ (Marshadow vs Mawile)") +{ + s16 dmg; + s16 expectedDamage; + PARAMETRIZE { expectedDamage = 145; } + PARAMETRIZE { expectedDamage = 144; } + PARAMETRIZE { expectedDamage = 142; } + PARAMETRIZE { expectedDamage = 141; } + PARAMETRIZE { expectedDamage = 139; } + PARAMETRIZE { expectedDamage = 138; } + PARAMETRIZE { expectedDamage = 136; } + PARAMETRIZE { expectedDamage = 135; } + PARAMETRIZE { expectedDamage = 133; } + PARAMETRIZE { expectedDamage = 132; } + PARAMETRIZE { expectedDamage = 130; } + PARAMETRIZE { expectedDamage = 129; } + PARAMETRIZE { expectedDamage = 127; } + PARAMETRIZE { expectedDamage = 126; } + PARAMETRIZE { expectedDamage = 124; } + PARAMETRIZE { expectedDamage = 123; } + GIVEN { + PLAYER(SPECIES_MARSHADOW) { Level(100); Attack(286); } + OPPONENT(SPECIES_MAWILE) { Level(100); Defense(226); HP(241); } + } WHEN { + TURN { + MOVE(player, MOVE_SPECTRAL_THIEF, WITH_RNG(RNG_DAMAGE_MODIFIER, i), criticalHit: FALSE); + } + } + SCENE{ + MESSAGE("Marshadow used SpectrlThief!"); + HP_BAR(opponent, captureDamage: &dmg); + } + THEN{ + EXPECT_EQ(expectedDamage, dmg); + } +} diff --git a/test/battle/move_effect/octolock.c b/test/battle/move_effect/octolock.c new file mode 100644 index 0000000000..f3249dd5ce --- /dev/null +++ b/test/battle/move_effect/octolock.c @@ -0,0 +1,97 @@ +#include "global.h" +#include "test/battle.h" + +SINGLE_BATTLE_TEST("Octolock") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_OCTOLOCK); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_OCTOLOCK, player); + MESSAGE("Foe Wobbuffet can no longer escape because of Octolock!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + MESSAGE("Foe Wobbuffet's Defense fell!"); + NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + MESSAGE("Foe Wobbuffet's Sp. Def fell!"); + } +} + +SINGLE_BATTLE_TEST("Octolock 2") +{ + u32 species; + u32 ability; + + PARAMETRIZE { species = SPECIES_BELDUM; ability = ABILITY_CLEAR_BODY; } + PARAMETRIZE { species = SPECIES_TORKOAL; ability = ABILITY_WHITE_SMOKE; } + PARAMETRIZE { species = SPECIES_SOLGALEO; ability = ABILITY_FULL_METAL_BODY; } + + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(species) { Ability(ability); } + } WHEN { + TURN { MOVE(player, MOVE_OCTOLOCK); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_OCTOLOCK, player); + NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + if (species == SPECIES_BELDUM) + { + MESSAGE("Foe Beldum can no longer escape because of Octolock!"); + ABILITY_POPUP(opponent, ABILITY_CLEAR_BODY); + MESSAGE("Foe Beldum's Clear Body prevents stat loss!"); + NOT MESSAGE("Foe Beldum's Defense fell!"); + NOT MESSAGE("Foe Beldum's Sp. Def fell!"); + } + else if (species == SPECIES_TORKOAL) + { + MESSAGE("Foe Torkoal can no longer escape because of Octolock!"); + ABILITY_POPUP(opponent, ABILITY_WHITE_SMOKE); + MESSAGE("Foe Torkoal's White Smoke prevents stat loss!"); + NOT MESSAGE("Foe Torkoal's Defense fell!"); + NOT MESSAGE("Foe Torkoal's Sp. Def fell!"); + } + else if (species == SPECIES_SOLGALEO) + { + MESSAGE("Foe Solgaleo can no longer escape because of Octolock!"); + ABILITY_POPUP(opponent, ABILITY_FULL_METAL_BODY); + MESSAGE("Foe Solgaleo's Full Metal Body prevents stat loss!"); + NOT MESSAGE("Foe Solgaleo's Defense fell!"); + NOT MESSAGE("Foe Solgaleo's Sp. Def fell!"); + } + } +} + +SINGLE_BATTLE_TEST("Octolock 3") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_PIDGEY) { Ability(ABILITY_BIG_PECKS); } + } WHEN { + TURN { MOVE(player, MOVE_OCTOLOCK); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_OCTOLOCK, player); + MESSAGE("Foe Pidgey can no longer escape because of Octolock!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + NOT MESSAGE("Foe Pidgey's Defense fell!"); + ABILITY_POPUP(opponent, ABILITY_BIG_PECKS); + MESSAGE("Foe Pidgey's Big Pecks prevents stat loss!"); + MESSAGE("Foe Wobbuffet's Sp. Def fell!"); + } +} + +SINGLE_BATTLE_TEST("Octolock 4") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_CLEAR_AMULET); } + } WHEN { + TURN { MOVE(player, MOVE_OCTOLOCK); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_OCTOLOCK, player); + MESSAGE("Foe Wobbuffet can no longer escape because of Octolock!"); + NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + NOT MESSAGE("Foe Wobbuffet's Defense fell!"); + NOT MESSAGE("Foe Wobbuffet's Sp. Def fell!"); + } +} diff --git a/test/battle/move_effect/syrup_bomb.c b/test/battle/move_effect/syrup_bomb.c index ae689b3629..08a3af95f9 100644 --- a/test/battle/move_effect/syrup_bomb.c +++ b/test/battle/move_effect/syrup_bomb.c @@ -32,9 +32,9 @@ SINGLE_BATTLE_TEST("Syrup Bomb is prevented by Bulletproof") TURN { MOVE(player, MOVE_SYRUP_BOMB); } } SCENE { ABILITY_POPUP(opponent, ABILITY_BULLETPROOF); - MESSAGE("Foe Chespin's Bulletproof blocks Syrup Bomb!"); NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_SYRUP_BOMB, player); NOT HP_BAR(opponent); + MESSAGE("Foe Chespin's Bulletproof blocks Syrup Bomb!"); } } @@ -57,6 +57,7 @@ SINGLE_BATTLE_TEST("Clear Body, White Smoke and Full Metal Body prevent Sticky S } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_SYRUP_BOMB, player); HP_BAR(opponent); + NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); if (species == SPECIES_BELDUM) { MESSAGE("Foe Beldum got covered in sticky syrup!"); @@ -75,8 +76,6 @@ SINGLE_BATTLE_TEST("Clear Body, White Smoke and Full Metal Body prevent Sticky S ABILITY_POPUP(opponent, ABILITY_FULL_METAL_BODY); MESSAGE("Foe Solgaleo's Full Metal Body prevents stat loss!"); } - NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); - NOT MESSAGE("Foe Beldum's Speed fell!"); } } @@ -91,8 +90,8 @@ SINGLE_BATTLE_TEST("Clear Amulet prevents Sticky Syrup speed reduction") ANIMATION(ANIM_TYPE_MOVE, MOVE_SYRUP_BOMB, player); HP_BAR(opponent); MESSAGE("Foe Wobbuffet got covered in sticky syrup!"); - MESSAGE("Foe Wobbuffet's Speed was not lowered!"); NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); NOT MESSAGE("Foe Wobbuffet's Speed fell!"); + MESSAGE("Foe Wobbuffet's Speed was not lowered!"); } } From c6b43d992a82c8476ce04dee7807a5f17492eb3f Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Fri, 13 Oct 2023 21:48:12 -0300 Subject: [PATCH 094/162] Fixed Parental Bond --- src/battle_script_commands.c | 2 +- test/battle/ability/parental_bond.c | 58 +++++++++++++++++++++++++++++ 2 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 test/battle/ability/parental_bond.c diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index b8ed2428b1..e9b7ba941b 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -15765,7 +15765,7 @@ bool32 IsMoveAffectedByParentalBond(u32 move, u32 battler) { if (move != MOVE_NONE && move != MOVE_STRUGGLE && gBattleMoves[move].split != SPLIT_STATUS - && !gBattleMoves[move].strikeCount > 2) + && gBattleMoves[move].strikeCount < 2) { u32 i; for (i = 0; i < ARRAY_COUNT(sParentalBondBannedEffects); i++) diff --git a/test/battle/ability/parental_bond.c b/test/battle/ability/parental_bond.c new file mode 100644 index 0000000000..9d0598304d --- /dev/null +++ b/test/battle/ability/parental_bond.c @@ -0,0 +1,58 @@ +#include "global.h" +#include "test/battle.h" + +SINGLE_BATTLE_TEST("Parental Bond converts Tackle into a two-strike move") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_TACKLE].split != SPLIT_STATUS); + ASSUME(gBattleMoves[MOVE_TACKLE].strikeCount < 2); + ASSUME(gBattleMoves[MOVE_TACKLE].effect == EFFECT_HIT); + PLAYER(SPECIES_KANGASKHAN) { Item(ITEM_KANGASKHANITE); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_TACKLE, megaEvolve: TRUE); MOVE(opponent, MOVE_CELEBRATE); } + } SCENE { + MESSAGE("Kangaskhan's Kangaskhanite is reacting to 1's Mega Ring!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_MEGA_EVOLUTION, player); + MESSAGE("Kangaskhan has Mega Evolved into Mega Kangaskhan!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + HP_BAR(opponent); + HP_BAR(opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, opponent); + } THEN { + EXPECT_EQ(player->species, SPECIES_KANGASKHAN_MEGA); + } +} + +TO_DO_BATTLE_TEST("Parental Bond tests"); + +// Temporary TODO: Convert Bulbapedia description into tests. +/* +In battle +Parental Bond causes most damaging moves used by the Pokémon to become two-strike moves. It does not affect multi-strike moves. + +If a move could hit multiple targets (including allies), such as Earthquake and Rock Slide, it will not strike twice; however, if it can only hit a single Pokémon, such as in a Single Battle or if using a move that can hit multiple targets when only one target is in range, it will strike twice. If a move could hit multiple Pokémon but only hits one due to missing the other Pokémon, it will only strike once. + +Since Parental Bond turns moves into two-hit multi-strike moves, each strike has a separate chance to be a critical hit, items and Abilities that trigger upon strike or contact such as Cursed Body and Rocky Helmet occur for each strike, and Spiky Shield and King's Shield only damage and decrease Attack (respectively) once if they protect a Pokémon from a contact move used by a Pokémon with Parental Bond. Additionally, there is only one accuracy check, so either both strikes hit or both strikes miss. + +Any attack which has a secondary effect (except Secret Power) has the same secondary effect on both strikes (such as Power-Up Punch); if a secondary effect has a certain chance of occurring, each strike has an independent chance of activating that effect. Even if the Pokémon's Ability is changed to Mummy after the first strike, it will continue to make a second strike regardless. Pay Day scatters coins after the first strike only. Incinerate destroys applicable held items after each strike. + +Unlike other secondary effects, Secret Power's secondary effect can only occur after the final strike. If a move has recoil damage, the recoil will be based on the damage dealt by both strikes, but will be taken after the final strike; Struggle will inflict recoil damage equal to half the user's maximum HP (after the final strike). Moves that switch the target out and moves that switch the user out strike twice, then force a Pokémon to switch out after both strikes are conducted. Thief, Covet, Bug Bite, and Pluck do not steal or eat the target's held item until after the final strike, so if the target could use its item after the first strike (e.g. due to low HP), it will use it before the attacker can steal or eat it. Smelling Salts, Wake-Up Slap, and Knock Off do not cure the target's status condition or remove its held item (respectively) until after the final strike, so both strikes get the increased power. Fire-type moves, Scald, and Steam Eruption thaw a frozen target after the final strike (so a frozen target cannot be thawed and then burned by the same move). Smack Down and Thousand Arrows only cause the target to fall to the ground after the final strike. If Meloetta has Parental Bond and uses Relic Song, it will change Forme only once, after the final strike. Burn Up does not remove the user's Fire type until after the second strike (so both strikes receive same-type attack bonus). + +If a Pokémon with Parental Bond uses an Electric-type move on a Pokémon with Lightning Rod, or a Water-type move on a Pokémon with Storm Drain, the effect of raising the target's Special Attack will only happen once. + +If Present heals the target it will only strike once, but if it damages the target it will strike twice (the second strike will always damage the target). Fixed-damage moves (such as Seismic Toss and Dragon Rage) deal the full amount of damage for both strikes. The damage dealt by Psywave is generated separately for each strike, and the second strike's damage is not halved. Each strike of Super Fang halves the target's HP (effectively quartering it if HP is not changed between strikes). Counter, Mirror Coat, Metal Burst, and Bide deal the full amount of damage for both strikes. The first strike of Assurance counts as previously taking damage for the second strike, giving it increased power. Fury Cutter and Echoed Voice only consider uses of the move rather than hits, so the second strike's power is not boosted by the first strike. Grass Pledge, Fire Pledge, and Water Pledge strike twice, even when used as a combination move. Natural Gift and Spit Up strike twice. Moves that require recharging after use strike twice, but the user only needs to recharge for one turn. + +One-hit knockout moves, Fling, Self-Destruct, Explosion, Final Gambit, Uproar, Rollout, and Ice Ball only strike once. (Other consecutively executed moves, such as Outrage, can strike twice.) Moves with a charging turn (such as Fly and Solar Beam) only strike once, even if the Pokémon becomes fully charged in one turn (such as with a Power Herb). Endeavor also only strikes once, even if the user or target's HP is changed after it strikes (such as by Iron Barbs or the Sitrus Berry). Confusion damage only occurs once. + +Spirit Shackle and Anchor Shot only trap the target after the final strike. + +Generation VI +The second strike has its damage halved (unless it is a set-damage move) + +Generation VII onward +The second strike now deals 25% of its usual damage (unless it is a set-damage move). + +Parental Bond does not affect Z-Moves or Max Moves. +*/ +// TONS OF TESTS NEEDED. FOR NOW, THIS SINGLE TEST IS MADE TO MAKE SURE AN ISSUE WAS FIXED. From 28c6a1af49709c169cf2d26c06d122af6a037009 Mon Sep 17 00:00:00 2001 From: kittenchilly Date: Sat, 14 Oct 2023 20:58:31 -0500 Subject: [PATCH 095/162] More weather and type-specific tests (#3260) Co-authored-by: Eduardo Quezada D'Ottone --- test/battle/ability/harvest.c | 17 ++ test/battle/ability/prankster.c | 30 ++++ test/battle/hold_effect/safety_goggles.c | 27 ++- test/battle/move_effect/aurora_veil.c | 33 ++++ test/battle/move_effect/burn_hit.c | 2 +- test/battle/move_effect/freeze_hit.c | 30 +++- test/battle/move_effect/hurricane.c | 35 ++++ test/battle/move_effect/leech_seed.c | 26 +++ test/battle/move_effect/moonlight.c | 48 +++++ test/battle/move_effect/morning_sun.c | 48 +++++ test/battle/move_effect/ohko.c | 26 +++ test/battle/move_effect/poison_hit.c | 13 +- test/battle/move_effect/solar_beam.c | 167 ++++++++++++++++++ test/battle/move_effect/synthesis.c | 48 +++++ test/battle/move_effect/thunder.c | 34 ++++ test/battle/move_effect/toxic_spikes.c | 4 +- test/battle/move_effect/weather_ball.c | 80 +++++++++ .../{type/grass.c => move_flags/powder.c} | 2 +- test/battle/weather/hail.c | 31 ++++ test/battle/weather/sandstorm.c | 66 +++++++ test/battle/weather/snow.c | 126 +------------ 21 files changed, 757 insertions(+), 136 deletions(-) create mode 100644 test/battle/ability/harvest.c create mode 100644 test/battle/ability/prankster.c create mode 100644 test/battle/move_effect/aurora_veil.c create mode 100644 test/battle/move_effect/hurricane.c create mode 100644 test/battle/move_effect/leech_seed.c create mode 100644 test/battle/move_effect/moonlight.c create mode 100644 test/battle/move_effect/morning_sun.c create mode 100644 test/battle/move_effect/ohko.c create mode 100644 test/battle/move_effect/solar_beam.c create mode 100644 test/battle/move_effect/synthesis.c create mode 100644 test/battle/move_effect/thunder.c create mode 100644 test/battle/move_effect/weather_ball.c rename test/battle/{type/grass.c => move_flags/powder.c} (86%) create mode 100644 test/battle/weather/hail.c create mode 100644 test/battle/weather/sandstorm.c diff --git a/test/battle/ability/harvest.c b/test/battle/ability/harvest.c new file mode 100644 index 0000000000..9fb969b036 --- /dev/null +++ b/test/battle/ability/harvest.c @@ -0,0 +1,17 @@ +#include "global.h" +#include "test/battle.h" + +TO_DO_BATTLE_TEST("Harvest has a 50% chance to restore a Berry at the end of the turn"); +TO_DO_BATTLE_TEST("Harvest always restores a Berry in Sunlight"); +TO_DO_BATTLE_TEST("Harvest restores a Berry even after being switched out and back in"); +TO_DO_BATTLE_TEST("Harvest restores a Berry consumed by Fling"); +TO_DO_BATTLE_TEST("Harvest restores a Berry consumed by Natural Gift"); +TO_DO_BATTLE_TEST("Harvest only works once per turn"); // Check for berries that are consumed immediately, like Pecha Berry +TO_DO_BATTLE_TEST("Harvest doesn't restore a Berry when destroyed by Incinerate"); +TO_DO_BATTLE_TEST("Harvest doesn't restore a Berry when knocked off by Knock Off"); +TO_DO_BATTLE_TEST("Harvest doesn't restore a Berry when eaten by Bug Bite/Pluck"); +TO_DO_BATTLE_TEST("Harvest doesn't restore a Berry that's collected via Pickup"); +TO_DO_BATTLE_TEST("Harvest order is affected by speed"); +TO_DO_BATTLE_TEST("Harvest doesn't restore a Berry when transfered to another Pokémon"); +TO_DO_BATTLE_TEST("Harvest can restore a Berry that was transferred from another Pokémon"); +TO_DO_BATTLE_TEST("Harvest can only restore the newest berry consumed that was transferred from another Pokémon instead of its original Berry"); diff --git a/test/battle/ability/prankster.c b/test/battle/ability/prankster.c new file mode 100644 index 0000000000..29fd11786e --- /dev/null +++ b/test/battle/ability/prankster.c @@ -0,0 +1,30 @@ +#include "global.h" +#include "test/battle.h" + +SINGLE_BATTLE_TEST("Prankster-affected moves don't affect Dark-type Pokémon") +{ + GIVEN { + ASSUME(gSpeciesInfo[SPECIES_UMBREON].types[0] == TYPE_DARK); + PLAYER(SPECIES_UMBREON); + OPPONENT(SPECIES_MURKROW) { Ability(ABILITY_PRANKSTER); } + } WHEN { + TURN { MOVE(opponent, MOVE_CONFUSE_RAY); } + } SCENE { + NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_CONFUSE_RAY, player); + MESSAGE("It doesn't affect Umbreon…"); + } +} +TO_DO_BATTLE_TEST("Prankster-affected moves affect Ally Dark-type Pokémon") +TO_DO_BATTLE_TEST("Prankster-affected moves called via Assist don't affect Dark-type Pokémon"); +TO_DO_BATTLE_TEST("Prankster-affected moves called via Nature Power don't affect Dark-type Pokémon"); +TO_DO_BATTLE_TEST("Prankster-affected moves called via Instruct affect Dark-type Pokémon"); +TO_DO_BATTLE_TEST("Prankster-affected moves called via After you affect Dark-type Pokémon"); +TO_DO_BATTLE_TEST("Prankster-affected moves that are bounced back by Magic Bounce/Coat can affect Dark-type Pokémon"); +TO_DO_BATTLE_TEST("Prankster-affected moves that are bounced back by Magic Coat from a Pokémon with Prankster can't affect Dark-type Pokémon"); +TO_DO_BATTLE_TEST("Prankster-affected moves that target all Pokémon are successful regardless of the presence of Dark-type Pokémon"); +TO_DO_BATTLE_TEST("Prankster-affected moves that target all Pokémon are successful regardless of the presence of Dark-type Pokémon"); +TO_DO_BATTLE_TEST("Prankster-affected move effects don't affect Dark-type Pokémon"); +TO_DO_BATTLE_TEST("Prankster increases the priority of moves by 1"); +TO_DO_BATTLE_TEST("Prankster increases the priority of status Z-Moves by 1"); +TO_DO_BATTLE_TEST("Prankster increases the priority of Extreme Evoboost by 1"); +TO_DO_BATTLE_TEST("Prankster is blocked by Quick Guard in Gen5+"); diff --git a/test/battle/hold_effect/safety_goggles.c b/test/battle/hold_effect/safety_goggles.c index 3deeeb810f..cecd8fbb9a 100644 --- a/test/battle/hold_effect/safety_goggles.c +++ b/test/battle/hold_effect/safety_goggles.c @@ -10,7 +10,6 @@ SINGLE_BATTLE_TEST("Safety Goggles block powder and spore moves") { GIVEN { ASSUME(gBattleMoves[MOVE_STUN_SPORE].powderMove); - ASSUME(gItems[ITEM_SAFETY_GOGGLES].holdEffect == HOLD_EFFECT_SAFETY_GOGGLES); PLAYER(SPECIES_WYNAUT); OPPONENT(SPECIES_ABRA) { Item(ITEM_SAFETY_GOGGLES); } } WHEN { @@ -21,6 +20,28 @@ SINGLE_BATTLE_TEST("Safety Goggles block powder and spore moves") } } -TO_DO_BATTLE_TEST("Safety Goggles blocks damage from hail"); -TO_DO_BATTLE_TEST("Safety Goggles blocks damage from sandstorm"); +SINGLE_BATTLE_TEST("Safety Goggles blocks damage from Hail") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_SAFETY_GOGGLES); }; + } WHEN { + TURN { MOVE(player, MOVE_HAIL); } + } SCENE { + NOT MESSAGE("Foe Wobbuffet is pelted by HAIL!"); + } +} + +SINGLE_BATTLE_TEST("Safety Goggles blocks damage from Sandstorm") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_SAFETY_GOGGLES); }; + } WHEN { + TURN { MOVE(player, MOVE_SANDSTORM); } + } SCENE { + NOT MESSAGE("Foe Wobbuffet is buffeted by the sandstorm!"); + } +} + TO_DO_BATTLE_TEST("Safety Goggles blocks Effect Spore's effect"); diff --git a/test/battle/move_effect/aurora_veil.c b/test/battle/move_effect/aurora_veil.c new file mode 100644 index 0000000000..ff255d9ae4 --- /dev/null +++ b/test/battle/move_effect/aurora_veil.c @@ -0,0 +1,33 @@ +#include "global.h" +#include "test/battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_AURORA_VEIL].effect == EFFECT_AURORA_VEIL); +} + +SINGLE_BATTLE_TEST("Aurora Veil can only be used in Hail and Snow") +{ + u32 move; + PARAMETRIZE { move = MOVE_CELEBRATE; } + PARAMETRIZE { move = MOVE_HAIL; } + PARAMETRIZE { move = MOVE_SNOWSCAPE; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, move); MOVE(player, MOVE_AURORA_VEIL); } + } SCENE { + if (move == MOVE_CELEBRATE) + MESSAGE("But it failed!"); + else + NOT MESSAGE("But it failed!"); + } +} + +TO_DO_BATTLE_TEST("Aurora Veil reduces damage done to the user by half in singles") +TO_DO_BATTLE_TEST("Aurora Veil reduces damage done to the user by roughly a third in doubles") +TO_DO_BATTLE_TEST("Aurora Veil's damage reduction is ignored by Critical Hits") +TO_DO_BATTLE_TEST("Aurora Veil's damage reduction doesn't stack with Reflect or Light Screen") +TO_DO_BATTLE_TEST("Aurora Veil doesn't reduce confusion damage") +TO_DO_BATTLE_TEST("Aurora Veil doesn't reduce damage done by moves that do direct damage") // Bide, Counter, Endeavor, Final Gambit, Metal Burst, Mirror Coat, Psywave, Seismic Toss, Sonic Boom, Super Fang diff --git a/test/battle/move_effect/burn_hit.c b/test/battle/move_effect/burn_hit.c index 3f257dfcb3..762780009c 100644 --- a/test/battle/move_effect/burn_hit.c +++ b/test/battle/move_effect/burn_hit.c @@ -21,7 +21,7 @@ SINGLE_BATTLE_TEST("Ember inflicts burn") } } -SINGLE_BATTLE_TEST("Ember cannot burn a Fire-type") +SINGLE_BATTLE_TEST("Ember cannot burn a Fire-type Pokémon") { GIVEN { ASSUME(gSpeciesInfo[SPECIES_CHARMANDER].types[0] == TYPE_FIRE); diff --git a/test/battle/move_effect/freeze_hit.c b/test/battle/move_effect/freeze_hit.c index 5d99311cee..9874ccc775 100644 --- a/test/battle/move_effect/freeze_hit.c +++ b/test/battle/move_effect/freeze_hit.c @@ -4,6 +4,7 @@ ASSUMPTIONS { ASSUME(gBattleMoves[MOVE_POWDER_SNOW].effect == EFFECT_FREEZE_HIT); + ASSUME(gBattleMoves[MOVE_BLIZZARD].accuracy == 70); } SINGLE_BATTLE_TEST("Powder Snow inflicts freeze") @@ -21,7 +22,7 @@ SINGLE_BATTLE_TEST("Powder Snow inflicts freeze") } } -SINGLE_BATTLE_TEST("Powder Snow cannot freeze an Ice-type") +SINGLE_BATTLE_TEST("Powder Snow cannot freeze an Ice-type Pokémon") { GIVEN { ASSUME(gSpeciesInfo[SPECIES_SNORUNT].types[0] == TYPE_ICE); @@ -36,3 +37,30 @@ SINGLE_BATTLE_TEST("Powder Snow cannot freeze an Ice-type") NOT STATUS_ICON(opponent, freeze: TRUE); } } + +SINGLE_BATTLE_TEST("Freeze cannot be inflicted in Sunlight") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_SUNNY_DAY); MOVE(player, MOVE_ICE_BEAM); } + } SCENE { + NOT MESSAGE("Wobbuffet was frozen solid!"); + } +} + +SINGLE_BATTLE_TEST("Blizzard bypasses accuracy checks in Hail and Snow") +{ + u32 move; + PARAMETRIZE { move = MOVE_HAIL; } + PARAMETRIZE { move = MOVE_SNOWSCAPE; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, move); MOVE(player, MOVE_BLIZZARD); } + } SCENE { + NONE_OF { MESSAGE("Wobbuffet's attack missed!"); } + } +} diff --git a/test/battle/move_effect/hurricane.c b/test/battle/move_effect/hurricane.c new file mode 100644 index 0000000000..31cd956b10 --- /dev/null +++ b/test/battle/move_effect/hurricane.c @@ -0,0 +1,35 @@ +#include "global.h" +#include "test/battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_HURRICANE].effect == EFFECT_HURRICANE); + ASSUME(gBattleMoves[MOVE_HURRICANE].accuracy == 70); +} + +SINGLE_BATTLE_TEST("Hurricane's accuracy is lowered to 50% in Sunlight") +{ + PASSES_RANDOMLY(50, 100, RNG_ACCURACY); + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_SUNNY_DAY); MOVE(opponent, MOVE_HURRICANE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_HURRICANE, opponent); + } +} + +SINGLE_BATTLE_TEST("Hurricane bypasses accuracy checks in Rain") +{ + PASSES_RANDOMLY(100, 100, RNG_ACCURACY); + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_RAIN_DANCE); MOVE(player, MOVE_HURRICANE); } + } SCENE { + NONE_OF { MESSAGE("Wobbuffet's attack missed!"); } + } +} +TO_DO_BATTLE_TEST("Hurricane Veil can hit airborne targets") // Fly, Bounce, Sky Drop diff --git a/test/battle/move_effect/leech_seed.c b/test/battle/move_effect/leech_seed.c new file mode 100644 index 0000000000..a2585a3d7f --- /dev/null +++ b/test/battle/move_effect/leech_seed.c @@ -0,0 +1,26 @@ +#include "global.h" +#include "test/battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_LEECH_SEED].effect == EFFECT_LEECH_SEED); +} + +SINGLE_BATTLE_TEST("Leech Seed doesn't affect Grass-type Pokémon") +{ + PASSES_RANDOMLY(90, 100, RNG_ACCURACY); + GIVEN { + ASSUME(gSpeciesInfo[SPECIES_ODDISH].types[0] == TYPE_GRASS); + PLAYER(SPECIES_WYNAUT); + OPPONENT(SPECIES_ODDISH); + } WHEN { + TURN { MOVE(player, MOVE_LEECH_SEED); } + } SCENE { + NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_LEECH_SEED, player); + MESSAGE("It doesn't affect Foe Oddish…"); + } +} +TO_DO_BATTLE_TEST("Leech Seed doesn't affect already seeded targets") +TO_DO_BATTLE_TEST("Leech Seeded targets lose 1/8 of its max HP every turn and give it to the user") +TO_DO_BATTLE_TEST("Leech Seed's effect is paused until a new battler replaces the original user's position") // Faint, can't be replaced, then revived. +TO_DO_BATTLE_TEST("Leech Seed's effect pause still prevents it from being seeded again") diff --git a/test/battle/move_effect/moonlight.c b/test/battle/move_effect/moonlight.c new file mode 100644 index 0000000000..ded85c3fc4 --- /dev/null +++ b/test/battle/move_effect/moonlight.c @@ -0,0 +1,48 @@ +#include "global.h" +#include "test/battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_MOONLIGHT].effect == EFFECT_MOONLIGHT); +} + +SINGLE_BATTLE_TEST("Moonlight recovers 1/2 of the user's max HP") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { HP(1); MaxHP(200); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_MOONLIGHT); } + } SCENE { + HP_BAR(player, damage: -(200 / 2)); + } +} + +SINGLE_BATTLE_TEST("Moonlight recovers 2/3 of the user's max HP in Sunlight") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { HP(1); MaxHP(300); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_SUNNY_DAY); MOVE(player, MOVE_MOONLIGHT); } + } SCENE { + HP_BAR(player, damage: -(300 / 1.5)); + } +} + +SINGLE_BATTLE_TEST("Moonlight recovers 1/4 of the user's max HP in Rain, Sandstorm, Hail, and Snow") +{ + u32 move; + PARAMETRIZE { move = MOVE_RAIN_DANCE; } + PARAMETRIZE { move = MOVE_SANDSTORM; } + PARAMETRIZE { move = MOVE_HAIL; } + PARAMETRIZE { move = MOVE_SNOWSCAPE; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { HP(1); MaxHP(400); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, move); MOVE(player, MOVE_MOONLIGHT); } + } SCENE { + HP_BAR(player, damage: -(400 / 4)); + } +} diff --git a/test/battle/move_effect/morning_sun.c b/test/battle/move_effect/morning_sun.c new file mode 100644 index 0000000000..7157944c6b --- /dev/null +++ b/test/battle/move_effect/morning_sun.c @@ -0,0 +1,48 @@ +#include "global.h" +#include "test/battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_MORNING_SUN].effect == EFFECT_MORNING_SUN); +} + +SINGLE_BATTLE_TEST("Morning Sun recovers 1/2 of the user's max HP") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { HP(1); MaxHP(200); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_MORNING_SUN); } + } SCENE { + HP_BAR(player, damage: -(200 / 2)); + } +} + +SINGLE_BATTLE_TEST("Morning Sun recovers 2/3 of the user's max HP in Sunlight") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { HP(1); MaxHP(300); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_SUNNY_DAY); MOVE(player, MOVE_MORNING_SUN); } + } SCENE { + HP_BAR(player, damage: -(300 / 1.5)); + } +} + +SINGLE_BATTLE_TEST("Morning Sun recovers 1/4 of the user's max HP in Rain, Sandstorm, Hail, and Snow") +{ + u32 move; + PARAMETRIZE { move = MOVE_RAIN_DANCE; } + PARAMETRIZE { move = MOVE_SANDSTORM; } + PARAMETRIZE { move = MOVE_HAIL; } + PARAMETRIZE { move = MOVE_SNOWSCAPE; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { HP(1); MaxHP(400); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, move); MOVE(player, MOVE_MORNING_SUN); } + } SCENE { + HP_BAR(player, damage: -(400 / 4)); + } +} diff --git a/test/battle/move_effect/ohko.c b/test/battle/move_effect/ohko.c new file mode 100644 index 0000000000..63e77b07f9 --- /dev/null +++ b/test/battle/move_effect/ohko.c @@ -0,0 +1,26 @@ +#include "global.h" +#include "test/battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_SHEER_COLD].effect == EFFECT_OHKO); +} + +SINGLE_BATTLE_TEST("Sheer Cold doesn't affect Ice-type Pokémon") +{ + GIVEN { + ASSUME(B_SHEER_COLD_IMMUNITY >= GEN_7); + ASSUME(gSpeciesInfo[SPECIES_GLALIE].types[0] == TYPE_ICE); + PLAYER(SPECIES_WYNAUT); + OPPONENT(SPECIES_GLALIE); + } WHEN { + TURN { MOVE(player, MOVE_SHEER_COLD); } + } SCENE { + NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_SHEER_COLD, player); + MESSAGE("It doesn't affect Foe Glalie…"); + } +} +TO_DO_BATTLE_TEST("Fissure faints the target, skipping regular damage calculations") +TO_DO_BATTLE_TEST("Fissure always fails if the target has a higher level than the user") +TO_DO_BATTLE_TEST("Fissure's accuracy increases by 1% for every level the user has over the target") +TO_DO_BATTLE_TEST("Fissure's ignores non-stage accuracy modifiers") // Gravity, Wide Lens, Compound Eyes diff --git a/test/battle/move_effect/poison_hit.c b/test/battle/move_effect/poison_hit.c index 91d7004669..95a8fbc946 100644 --- a/test/battle/move_effect/poison_hit.c +++ b/test/battle/move_effect/poison_hit.c @@ -4,6 +4,7 @@ ASSUMPTIONS { ASSUME(gBattleMoves[MOVE_POISON_STING].effect == EFFECT_POISON_HIT); + ASSUME(gBattleMoves[MOVE_TWINEEDLE].effect == EFFECT_POISON_HIT); } SINGLE_BATTLE_TEST("Poison Sting inflicts poison") @@ -22,16 +23,20 @@ SINGLE_BATTLE_TEST("Poison Sting inflicts poison") } } -SINGLE_BATTLE_TEST("Poison Sting cannot poison Poison-type") +SINGLE_BATTLE_TEST("Poison cannot be inflicted on Poison and Steel-type Pokémon") { + u32 mon; + PARAMETRIZE { mon = SPECIES_NIDORAN_M; } + PARAMETRIZE { mon = SPECIES_REGISTEEL; } GIVEN { ASSUME(gSpeciesInfo[SPECIES_NIDORAN_M].types[0] == TYPE_POISON); + ASSUME(gSpeciesInfo[SPECIES_REGISTEEL].types[0] == TYPE_STEEL); PLAYER(SPECIES_WOBBUFFET); - OPPONENT(SPECIES_NIDORAN_M); + OPPONENT(mon); } WHEN { - TURN { MOVE(player, MOVE_POISON_STING); } + TURN { MOVE(player, MOVE_TWINEEDLE); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_POISON_STING, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TWINEEDLE, player); HP_BAR(opponent); NOT ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, opponent); NOT STATUS_ICON(opponent, poison: TRUE); diff --git a/test/battle/move_effect/solar_beam.c b/test/battle/move_effect/solar_beam.c new file mode 100644 index 0000000000..6aa8056b72 --- /dev/null +++ b/test/battle/move_effect/solar_beam.c @@ -0,0 +1,167 @@ +#include "global.h" +#include "test/battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_SOLAR_BEAM].effect == EFFECT_SOLAR_BEAM); + ASSUME(gBattleMoves[MOVE_SOLAR_BLADE].effect == EFFECT_SOLAR_BEAM); +} + +SINGLE_BATTLE_TEST("Solar Beam and Solar Blade can be used instantly in Sunlight") +{ + u32 move; + PARAMETRIZE { move = MOVE_SOLAR_BEAM; } + PARAMETRIZE { move = MOVE_SOLAR_BLADE; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_SUNNY_DAY); MOVE(player, move); } + } SCENE { + NOT MESSAGE("Wobbuffet took in sunlight!"); + } +} + +SINGLE_BATTLE_TEST("Solar Beam's power is halved in Rain", s16 damage) +{ + u16 move; + PARAMETRIZE{ move = MOVE_CELEBRATE; } + PARAMETRIZE{ move = MOVE_RAIN_DANCE; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, move); MOVE(player, MOVE_SOLAR_BEAM); } + TURN { SKIP_TURN(player); } + } SCENE { + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(0.5), results[1].damage); + } +} + +SINGLE_BATTLE_TEST("Solar Blade's power is halved in Rain", s16 damage) +{ + u16 move; + PARAMETRIZE{ move = MOVE_CELEBRATE; } + PARAMETRIZE{ move = MOVE_RAIN_DANCE; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(opponent, move); MOVE(player, MOVE_SOLAR_BLADE); } + TURN { SKIP_TURN(player); } + } SCENE { + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(0.5), results[1].damage); + } +} + +SINGLE_BATTLE_TEST("Solar Beam's power is halved in a Sandstorm", s16 damage) +{ + u16 move; + PARAMETRIZE{ move = MOVE_CELEBRATE; } + PARAMETRIZE{ move = MOVE_SANDSTORM; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_SAFETY_GOGGLES); }; + } WHEN { + TURN { MOVE(opponent, move); MOVE(player, MOVE_SOLAR_BEAM); } + TURN { SKIP_TURN(player); } + } SCENE { + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(0.5), results[1].damage); + } +} + +SINGLE_BATTLE_TEST("Solar Blade's power is halved in a Sandstorm", s16 damage) +{ + u16 move; + PARAMETRIZE{ move = MOVE_CELEBRATE; } + PARAMETRIZE{ move = MOVE_SANDSTORM; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_SAFETY_GOGGLES); }; + } WHEN { + TURN { MOVE(opponent, move); MOVE(player, MOVE_SOLAR_BLADE); } + TURN { SKIP_TURN(player); } + } SCENE { + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(0.5), results[1].damage); + } +} + +SINGLE_BATTLE_TEST("Solar Beam's power is halved in Hail", s16 damage) +{ + u16 move; + PARAMETRIZE{ move = MOVE_CELEBRATE; } + PARAMETRIZE{ move = MOVE_HAIL; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_SAFETY_GOGGLES); }; + } WHEN { + TURN { MOVE(opponent, move); MOVE(player, MOVE_SOLAR_BEAM); } + TURN { SKIP_TURN(player); } + } SCENE { + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(0.5), results[1].damage); + } +} + +SINGLE_BATTLE_TEST("Solar Blade's power is halved in Hail", s16 damage) +{ + u16 move; + PARAMETRIZE{ move = MOVE_CELEBRATE; } + PARAMETRIZE{ move = MOVE_HAIL; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_SAFETY_GOGGLES); }; + } WHEN { + TURN { MOVE(opponent, move); MOVE(player, MOVE_SOLAR_BLADE); } + TURN { SKIP_TURN(player); } + } SCENE { + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(0.5), results[1].damage); + } +} + +SINGLE_BATTLE_TEST("Solar Beam's power is halved in Snow", s16 damage) +{ + u16 move; + PARAMETRIZE{ move = MOVE_CELEBRATE; } + PARAMETRIZE{ move = MOVE_SNOWSCAPE; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, move); MOVE(player, MOVE_SOLAR_BEAM); } + TURN { SKIP_TURN(player); } + } SCENE { + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(0.5), results[1].damage); + } +} + +SINGLE_BATTLE_TEST("Solar Blade's power is halved in Snow", s16 damage) +{ + u16 move; + PARAMETRIZE{ move = MOVE_CELEBRATE; } + PARAMETRIZE{ move = MOVE_SNOWSCAPE; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(opponent, move); MOVE(player, MOVE_SOLAR_BLADE); } + TURN { SKIP_TURN(player); } + } SCENE { + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(0.5), results[1].damage); + } +} diff --git a/test/battle/move_effect/synthesis.c b/test/battle/move_effect/synthesis.c new file mode 100644 index 0000000000..7b0c260fa0 --- /dev/null +++ b/test/battle/move_effect/synthesis.c @@ -0,0 +1,48 @@ +#include "global.h" +#include "test/battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_SYNTHESIS].effect == EFFECT_SYNTHESIS); +} + +SINGLE_BATTLE_TEST("Synthesis recovers 1/2 of the user's max HP") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { HP(1); MaxHP(200); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_SYNTHESIS); } + } SCENE { + HP_BAR(player, damage: -(200 / 2)); + } +} + +SINGLE_BATTLE_TEST("Synthesis recovers 2/3 of the user's max HP in Sunlight") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { HP(1); MaxHP(300); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_SUNNY_DAY); MOVE(player, MOVE_SYNTHESIS); } + } SCENE { + HP_BAR(player, damage: -(300 / 1.5)); + } +} + +SINGLE_BATTLE_TEST("Synthesis recovers 1/4 of the user's max HP in Rain, Sandstorm, Hail, and Snow") +{ + u32 move; + PARAMETRIZE { move = MOVE_RAIN_DANCE; } + PARAMETRIZE { move = MOVE_SANDSTORM; } + PARAMETRIZE { move = MOVE_HAIL; } + PARAMETRIZE { move = MOVE_SNOWSCAPE; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { HP(1); MaxHP(400); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, move); MOVE(player, MOVE_SYNTHESIS); } + } SCENE { + HP_BAR(player, damage: -(400 / 4)); + } +} diff --git a/test/battle/move_effect/thunder.c b/test/battle/move_effect/thunder.c new file mode 100644 index 0000000000..d6e5101f3b --- /dev/null +++ b/test/battle/move_effect/thunder.c @@ -0,0 +1,34 @@ +#include "global.h" +#include "test/battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_THUNDER].effect == EFFECT_THUNDER); + ASSUME(gBattleMoves[MOVE_THUNDER].accuracy == 70); +} + +SINGLE_BATTLE_TEST("Thunder's accuracy is lowered to 50% in Sunlight") +{ + PASSES_RANDOMLY(50, 100, RNG_ACCURACY); + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_SUNNY_DAY); MOVE(opponent, MOVE_THUNDER); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_THUNDER, opponent); + } +} + +SINGLE_BATTLE_TEST("Thunder bypasses accuracy checks in Rain") +{ + PASSES_RANDOMLY(100, 100, RNG_ACCURACY); + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_RAIN_DANCE); MOVE(player, MOVE_THUNDER); } + } SCENE { + NONE_OF { MESSAGE("Wobbuffet's attack missed!"); } + } +} diff --git a/test/battle/move_effect/toxic_spikes.c b/test/battle/move_effect/toxic_spikes.c index 43de89ede9..3bac9d8ba5 100644 --- a/test/battle/move_effect/toxic_spikes.c +++ b/test/battle/move_effect/toxic_spikes.c @@ -151,7 +151,7 @@ SINGLE_BATTLE_TEST("Toxic Spikes do not affect Steel-types") } } -SINGLE_BATTLE_TEST("Toxic Spikes are removed by grounded Poison-types") +SINGLE_BATTLE_TEST("Toxic Spikes are removed by grounded Poison-type Pokémon on switch in") { u32 species; u32 item = ITEM_NONE; @@ -190,7 +190,7 @@ SINGLE_BATTLE_TEST("Toxic Spikes are removed by grounded Poison-types") // 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-types affected by Magnet Rise") +SINGLE_BATTLE_TEST("Toxic Spikes are removed by Poison-type Pokémon affected by Magnet Rise on switch in") { KNOWN_FAILING; GIVEN { diff --git a/test/battle/move_effect/weather_ball.c b/test/battle/move_effect/weather_ball.c new file mode 100644 index 0000000000..629b32f97e --- /dev/null +++ b/test/battle/move_effect/weather_ball.c @@ -0,0 +1,80 @@ +#include "global.h" +#include "test/battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_WEATHER_BALL].effect == EFFECT_WEATHER_BALL); +} + +SINGLE_BATTLE_TEST("Weather Ball doubles its power and turns to a Fire-type move in Sunlight", s16 damage) +{ + u16 move; + PARAMETRIZE{ move = MOVE_CELEBRATE; } + PARAMETRIZE{ move = MOVE_SUNNY_DAY; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_MEGANIUM); + } WHEN { + TURN { MOVE(player, move); } + TURN { MOVE(player, MOVE_WEATHER_BALL); } + } SCENE { + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(6.0), results[1].damage); // double base power + type effectiveness + sun 50% boost + } +} + +SINGLE_BATTLE_TEST("Weather Ball doubles its power and turns to a Water-type move in Rain", s16 damage) +{ + u16 move; + PARAMETRIZE{ move = MOVE_CELEBRATE; } + PARAMETRIZE{ move = MOVE_RAIN_DANCE; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_ARCANINE); + } WHEN { + TURN { MOVE(player, move); } + TURN { MOVE(player, MOVE_WEATHER_BALL); } + } SCENE { + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(6.0), results[1].damage); // double base power + type effectiveness + rain 50% boost + } +} + +SINGLE_BATTLE_TEST("Weather Ball doubles its power and turns to a Rock-type move in a Sandstorm", s16 damage) +{ + u16 move; + PARAMETRIZE{ move = MOVE_CELEBRATE; } + PARAMETRIZE{ move = MOVE_SANDSTORM; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_MAGMAR) { Item(ITEM_SAFETY_GOGGLES); }; + } WHEN { + TURN { MOVE(player, move); } + TURN { MOVE(player, MOVE_WEATHER_BALL); } + } SCENE { + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(4.0), results[1].damage); // double base power + type effectiveness. + } +} + +SINGLE_BATTLE_TEST("Weather Ball doubles its power and turns to an Ice-type move in Hail and Snow", s16 damage) +{ + u16 move; + PARAMETRIZE{ move = MOVE_CELEBRATE; } + PARAMETRIZE{ move = MOVE_HAIL; } + PARAMETRIZE{ move = MOVE_SNOWSCAPE; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_DRAGONAIR) { Item(ITEM_SAFETY_GOGGLES); }; + } WHEN { + TURN { MOVE(player, move); } + TURN { MOVE(player, MOVE_WEATHER_BALL); } + } SCENE { + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(4.0), results[1].damage); // double base power + type effectiveness. + } +} diff --git a/test/battle/type/grass.c b/test/battle/move_flags/powder.c similarity index 86% rename from test/battle/type/grass.c rename to test/battle/move_flags/powder.c index 6bb016c580..184402f6bf 100644 --- a/test/battle/type/grass.c +++ b/test/battle/move_flags/powder.c @@ -1,7 +1,7 @@ #include "global.h" #include "test/battle.h" -SINGLE_BATTLE_TEST("Grass-type Pokémon block powder and spore moves") +SINGLE_BATTLE_TEST("Powder moves are blocked by Grass-type Pokémon") { GIVEN { ASSUME(gBattleMoves[MOVE_STUN_SPORE].powderMove); diff --git a/test/battle/weather/hail.c b/test/battle/weather/hail.c new file mode 100644 index 0000000000..8908e17a79 --- /dev/null +++ b/test/battle/weather/hail.c @@ -0,0 +1,31 @@ +#include "global.h" +#include "test/battle.h" + +// Please add Hail interactions with move, item and ability effects on their respective files. +SINGLE_BATTLE_TEST("Hail deals 1/16 damage per turn") +{ + s16 hailDamage; + + GIVEN { + PLAYER(SPECIES_GLALIE); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN {MOVE(player, MOVE_HAIL);} + } SCENE { + MESSAGE("Foe Wobbuffet is pelted by HAIL!"); + HP_BAR(opponent, captureDamage: &hailDamage); + } THEN { EXPECT_EQ(hailDamage, opponent->maxHP / 16); } +} + +SINGLE_BATTLE_TEST("Hail damage does not affect Ice-type Pokémon") +{ + GIVEN { + ASSUME(gSpeciesInfo[SPECIES_GLALIE].types[0] == TYPE_ICE); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_GLALIE); + } WHEN { + TURN {MOVE(player, MOVE_HAIL);} + } SCENE { + NOT MESSAGE("Foe Glalie is pelted by HAIL!"); + } +} diff --git a/test/battle/weather/sandstorm.c b/test/battle/weather/sandstorm.c new file mode 100644 index 0000000000..3d4fbb631b --- /dev/null +++ b/test/battle/weather/sandstorm.c @@ -0,0 +1,66 @@ +#include "global.h" +#include "test/battle.h" + +// Please add Sandstorm interactions with move, item and ability effects on their respective files. +SINGLE_BATTLE_TEST("Sandstorm deals 1/16 damage per turn") +{ + s16 sandstormDamage; + + GIVEN { + PLAYER(SPECIES_SANDSLASH); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN {MOVE(player, MOVE_SANDSTORM);} + } SCENE { + MESSAGE("Foe Wobbuffet is buffeted by the sandstorm!"); + HP_BAR(opponent, captureDamage: &sandstormDamage); + } THEN { EXPECT_EQ(sandstormDamage, opponent->maxHP / 16); } +} + +SINGLE_BATTLE_TEST("Sandstorm multiplies the special defense of Rock-types by 1.5x", s16 damage) +{ + u16 move; + PARAMETRIZE{ move = MOVE_SANDSTORM; } + PARAMETRIZE{ move = MOVE_CELEBRATE; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET) ; + OPPONENT(SPECIES_NOSEPASS); + } WHEN { + TURN { MOVE(opponent, move); } + TURN { MOVE(player, MOVE_SWIFT); } + } SCENE { + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.5), results[1].damage); + } +} + +SINGLE_BATTLE_TEST("Sandstorm damage does not hurt Ground, Rock, and Steel-type Pokémon") +{ + u32 mon; + PARAMETRIZE { mon = SPECIES_SANDSLASH; } + PARAMETRIZE { mon = SPECIES_NOSEPASS; } + PARAMETRIZE { mon = SPECIES_REGISTEEL; } + GIVEN { + ASSUME(gSpeciesInfo[SPECIES_SANDSLASH].types[0] == TYPE_GROUND); + ASSUME(gSpeciesInfo[SPECIES_NOSEPASS].types[0] == TYPE_ROCK); + ASSUME(gSpeciesInfo[SPECIES_REGISTEEL].types[0] == TYPE_STEEL); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(mon); + } WHEN { + TURN { MOVE(player, MOVE_SANDSTORM); } + } SCENE { + switch (mon) + { + case SPECIES_SANDSLASH: + NOT MESSAGE("Foe Sandslash is buffeted by the sandstorm!"); + break; + case SPECIES_NOSEPASS: + NOT MESSAGE("Foe Nosepass is buffeted by the sandstorm!"); + break; + case SPECIES_REGISTEEL: + NOT MESSAGE("Foe Registeel is buffeted by the sandstorm!"); + break; + } + } +} diff --git a/test/battle/weather/snow.c b/test/battle/weather/snow.c index 21b7a5565e..dff18e7b76 100644 --- a/test/battle/weather/snow.c +++ b/test/battle/weather/snow.c @@ -1,6 +1,7 @@ #include "global.h" #include "test/battle.h" +// Please add Snow interactions with move, item and ability effects on their respective files. ASSUMPTIONS { ASSUME(gBattleMoves[MOVE_SNOWSCAPE].effect == EFFECT_SNOWSCAPE); @@ -8,7 +9,7 @@ ASSUMPTIONS ASSUME(gSpeciesInfo[SPECIES_GLALIE].types[0] == TYPE_ICE || gSpeciesInfo[SPECIES_GLALIE].types[1] == TYPE_ICE); } -SINGLE_BATTLE_TEST("Snow increases the defense of Ice types by 50 %", s16 damage) +SINGLE_BATTLE_TEST("Snow multiplies the defense of Ice-types by 1.5x", s16 damage) { u16 move; PARAMETRIZE{ move = MOVE_SNOWSCAPE; } @@ -25,126 +26,3 @@ SINGLE_BATTLE_TEST("Snow increases the defense of Ice types by 50 %", s16 damage EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.5), results[1].damage); } } - -SINGLE_BATTLE_TEST("Snow turns Weather Ball to an Ice-type move and doubles its power", s16 damage) -{ - u16 move; - PARAMETRIZE{ move = MOVE_CELEBRATE; } - PARAMETRIZE{ move = MOVE_SNOWSCAPE; } - GIVEN { - ASSUME(gBattleMoves[MOVE_WEATHER_BALL].effect == EFFECT_WEATHER_BALL); - PLAYER(SPECIES_WOBBUFFET); - OPPONENT(SPECIES_DRAGONAIR); - } WHEN { - TURN { MOVE(player, move); } - TURN { MOVE(player, MOVE_WEATHER_BALL); } - } SCENE { - HP_BAR(opponent, captureDamage: &results[i].damage); - } FINALLY { - EXPECT_MUL_EQ(results[0].damage, Q_4_12(4.0), results[1].damage); // double base power + type effectiveness. - } -} - -SINGLE_BATTLE_TEST("Snow allows Blizzard to bypass accuracy checks") -{ - PASSES_RANDOMLY(100, 100, RNG_ACCURACY); - GIVEN { - ASSUME(gBattleMoves[MOVE_BLIZZARD].accuracy == 70); - PLAYER(SPECIES_WOBBUFFET); - OPPONENT(SPECIES_WOBBUFFET); - } WHEN { - TURN { MOVE(opponent, MOVE_SNOWSCAPE); MOVE(player, MOVE_BLIZZARD); } - } SCENE { - NONE_OF { MESSAGE("Wobbuffet's attack missed!"); } - } -} - -SINGLE_BATTLE_TEST("Snow halves the power of Solar Beam", s16 damage) -{ - u16 move; - PARAMETRIZE{ move = MOVE_CELEBRATE; } - PARAMETRIZE{ move = MOVE_SNOWSCAPE; } - GIVEN { - ASSUME(gBattleMoves[MOVE_SOLAR_BEAM].effect == EFFECT_SOLAR_BEAM); - PLAYER(SPECIES_WOBBUFFET); - OPPONENT(SPECIES_WOBBUFFET); - } WHEN { - TURN { MOVE(opponent, move); MOVE(player, MOVE_SOLAR_BEAM); } - TURN { SKIP_TURN(player); } - } SCENE { - HP_BAR(opponent, captureDamage: &results[i].damage); - } FINALLY { - EXPECT_MUL_EQ(results[0].damage, Q_4_12(0.5), results[1].damage); - } -} - -SINGLE_BATTLE_TEST("Snow halves the power of Solar Blade", s16 damage) -{ - u16 move; - PARAMETRIZE{ move = MOVE_CELEBRATE; } - PARAMETRIZE{ move = MOVE_SNOWSCAPE; } - GIVEN { - ASSUME(gBattleMoves[MOVE_SOLAR_BLADE].effect == EFFECT_SOLAR_BEAM); - PLAYER(SPECIES_WOBBUFFET); - OPPONENT(SPECIES_WYNAUT); - } WHEN { - TURN { MOVE(opponent, move); MOVE(player, MOVE_SOLAR_BLADE); } - TURN { SKIP_TURN(player); } - } SCENE { - HP_BAR(opponent, captureDamage: &results[i].damage); - } FINALLY { - EXPECT_MUL_EQ(results[0].damage, Q_4_12(0.5), results[1].damage); - } -} - -SINGLE_BATTLE_TEST("Snow causes Moonlight to recover 1/4 of the user's max HP") -{ - GIVEN { - ASSUME(gBattleMoves[MOVE_MOONLIGHT].effect == EFFECT_MOONLIGHT); - PLAYER(SPECIES_WOBBUFFET) { HP(1); MaxHP(400); } - OPPONENT(SPECIES_WOBBUFFET); - } WHEN { - TURN { MOVE(opponent, MOVE_SNOWSCAPE); MOVE(player, MOVE_MOONLIGHT); } - } SCENE { - HP_BAR(player, damage: -(400 / 4)); - } -} - -SINGLE_BATTLE_TEST("Snow causes Moonlight to recover 1/4 of the user's max HP") -{ - GIVEN { - ASSUME(gBattleMoves[MOVE_MOONLIGHT].effect == EFFECT_MOONLIGHT); - PLAYER(SPECIES_WOBBUFFET) { HP(1); MaxHP(400); } - OPPONENT(SPECIES_WOBBUFFET); - } WHEN { - TURN { MOVE(opponent, MOVE_SNOWSCAPE); MOVE(player, MOVE_MOONLIGHT); } - } SCENE { - HP_BAR(player, damage: -(400 / 4)); - } -} - -SINGLE_BATTLE_TEST("Snow causes Synthesis to recover 1/4 of the user's max HP") -{ - GIVEN { - ASSUME(gBattleMoves[MOVE_SYNTHESIS].effect == EFFECT_SYNTHESIS); - PLAYER(SPECIES_WOBBUFFET) { HP(1); MaxHP(400); } - OPPONENT(SPECIES_WOBBUFFET); - } WHEN { - TURN { MOVE(opponent, MOVE_SNOWSCAPE); MOVE(player, MOVE_SYNTHESIS); } - } SCENE { - HP_BAR(player, damage: -(400 / 4)); - } -} - -SINGLE_BATTLE_TEST("Snow causes Morning Sun to recover 1/4 of the user's max HP") -{ - GIVEN { - ASSUME(gBattleMoves[MOVE_MORNING_SUN].effect == EFFECT_MORNING_SUN); - PLAYER(SPECIES_WOBBUFFET) { HP(1); MaxHP(400); } - OPPONENT(SPECIES_WOBBUFFET); - } WHEN { - TURN { MOVE(opponent, MOVE_SNOWSCAPE); MOVE(player, MOVE_MORNING_SUN); } - } SCENE { - HP_BAR(player, damage: -(400 / 4)); - } -} From 0694e1bf1ff4a12ccaee12246325b0641a4729a3 Mon Sep 17 00:00:00 2001 From: Kaitlyn Date: Sat, 14 Oct 2023 14:25:29 -0500 Subject: [PATCH 096/162] Battle Animation Organization Added remaining sprites not listed Organized and formatted. --- src/pokemon.c | 2183 +++++++++++++++++++++------------------ src/pokemon_animation.c | 630 ++++++++--- 2 files changed, 1658 insertions(+), 1155 deletions(-) diff --git a/src/pokemon.c b/src/pokemon.c index 7bbf2702e4..9a8ad991e4 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -1973,983 +1973,993 @@ const s8 gNatureStatTable[NUM_NATURES][NUM_NATURE_STATS] = // SPECIES_NONE are ignored in the following two tables, so decrement before accessing these arrays to get the right result const u8 sMonFrontAnimIdsTable[NUM_SPECIES - 1] = -{ - [SPECIES_BULBASAUR - 1] = ANIM_V_JUMPS_H_JUMPS, - [SPECIES_IVYSAUR - 1] = ANIM_V_STRETCH, - [SPECIES_VENUSAUR - 1] = ANIM_ROTATE_UP_SLAM_DOWN, - [SPECIES_CHARMANDER - 1] = ANIM_V_JUMPS_SMALL, - [SPECIES_CHARMELEON - 1] = ANIM_BACK_AND_LUNGE, - [SPECIES_CHARIZARD - 1] = ANIM_V_SHAKE, - [SPECIES_SQUIRTLE - 1] = ANIM_V_JUMPS_BIG, - [SPECIES_WARTORTLE - 1] = ANIM_SHRINK_GROW, - [SPECIES_BLASTOISE - 1] = ANIM_V_SHAKE_TWICE, - [SPECIES_CATERPIE - 1] = ANIM_SWING_CONCAVE, - [SPECIES_METAPOD - 1] = ANIM_SWING_CONCAVE, - [SPECIES_BUTTERFREE - 1] = ANIM_H_SLIDE_WOBBLE, - [SPECIES_WEEDLE - 1] = ANIM_H_SLIDE_SLOW, - [SPECIES_KAKUNA - 1] = ANIM_GLOW_ORANGE, - [SPECIES_BEEDRILL - 1] = ANIM_ZIGZAG_SLOW, - [SPECIES_PIDGEY - 1] = ANIM_V_STRETCH, - [SPECIES_PIDGEOTTO - 1] = ANIM_V_STRETCH, - [SPECIES_PIDGEOT - 1] = ANIM_FRONT_FLIP, - [SPECIES_RATTATA - 1] = ANIM_H_JUMPS, - [SPECIES_RATICATE - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES_SMALL, - [SPECIES_SPEAROW - 1] = ANIM_V_JUMPS_SMALL, - [SPECIES_FEAROW - 1] = ANIM_FIGURE_8, - [SPECIES_EKANS - 1] = ANIM_V_STRETCH, - [SPECIES_ARBOK - 1] = ANIM_V_STRETCH, - [SPECIES_PIKACHU - 1] = ANIM_FLASH_YELLOW, - [SPECIES_RAICHU - 1] = ANIM_GROW_VIBRATE, - [SPECIES_SANDSHREW - 1] = ANIM_SWING_CONCAVE_FAST_SHORT, - [SPECIES_SANDSLASH - 1] = ANIM_H_SHAKE, - [SPECIES_NIDORAN_F - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_NIDORINA - 1] = ANIM_V_STRETCH, - [SPECIES_NIDOQUEEN - 1] = ANIM_H_SHAKE, - [SPECIES_NIDORAN_M - 1] = ANIM_GROW_VIBRATE, - [SPECIES_NIDORINO - 1] = ANIM_V_STRETCH, - [SPECIES_NIDOKING - 1] = ANIM_H_SHAKE, - [SPECIES_CLEFAIRY - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_CLEFABLE - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_VULPIX - 1] = ANIM_V_STRETCH, - [SPECIES_NINETALES - 1] = ANIM_GROW_VIBRATE, - [SPECIES_JIGGLYPUFF - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES_SMALL, - [SPECIES_WIGGLYTUFF - 1] = ANIM_H_JUMPS, - [SPECIES_ZUBAT - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_GOLBAT - 1] = ANIM_H_SLIDE_WOBBLE, - [SPECIES_ODDISH - 1] = ANIM_V_JUMPS_H_JUMPS, - [SPECIES_GLOOM - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - [SPECIES_VILEPLUME - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - [SPECIES_PARAS - 1] = ANIM_H_SLIDE_SLOW, - [SPECIES_PARASECT - 1] = ANIM_H_SHAKE, - [SPECIES_VENONAT - 1] = ANIM_V_JUMPS_H_JUMPS, - [SPECIES_VENOMOTH - 1] = ANIM_ZIGZAG_SLOW, - [SPECIES_DIGLETT - 1] = ANIM_V_SHAKE, - [SPECIES_DUGTRIO - 1] = ANIM_H_SHAKE_SLOW, - [SPECIES_MEOWTH - 1] = ANIM_V_JUMPS_SMALL, - [SPECIES_PERSIAN - 1] = ANIM_V_STRETCH, - [SPECIES_PSYDUCK - 1] = ANIM_V_JUMPS_H_JUMPS, - [SPECIES_GOLDUCK - 1] = ANIM_H_SHAKE_SLOW, - [SPECIES_MANKEY - 1] = ANIM_H_JUMPS_V_STRETCH, - [SPECIES_PRIMEAPE - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES, - [SPECIES_GROWLITHE - 1] = ANIM_V_STRETCH, - [SPECIES_ARCANINE - 1] = ANIM_V_SHAKE, - [SPECIES_POLIWAG - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_POLIWHIRL - 1] = ANIM_H_JUMPS_V_STRETCH, - [SPECIES_POLIWRATH - 1] = ANIM_V_SHAKE_TWICE, - [SPECIES_ABRA - 1] = ANIM_H_VIBRATE, - [SPECIES_KADABRA - 1] = ANIM_GROW_VIBRATE, - [SPECIES_ALAKAZAM - 1] = ANIM_GROW_VIBRATE, - [SPECIES_MACHOP - 1] = ANIM_V_STRETCH, - [SPECIES_MACHOKE - 1] = ANIM_V_SHAKE, - [SPECIES_MACHAMP - 1] = ANIM_H_JUMPS, - [SPECIES_BELLSPROUT - 1] = ANIM_H_JUMPS, - [SPECIES_WEEPINBELL - 1] = ANIM_SWING_CONVEX, - [SPECIES_VICTREEBEL - 1] = ANIM_H_JUMPS_V_STRETCH, - [SPECIES_TENTACOOL - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_TENTACRUEL - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_GEODUDE - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES_SMALL, - [SPECIES_GRAVELER - 1] = ANIM_V_SHAKE, - [SPECIES_GOLEM - 1] = ANIM_ROTATE_UP_SLAM_DOWN, - [SPECIES_PONYTA - 1] = ANIM_V_SHAKE, - [SPECIES_RAPIDASH - 1] = ANIM_H_SHAKE, - [SPECIES_SLOWPOKE - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - [SPECIES_SLOWBRO - 1] = ANIM_H_STRETCH, - [SPECIES_MAGNEMITE - 1] = ANIM_TUMBLING_FRONT_FLIP_TWICE, - [SPECIES_MAGNETON - 1] = ANIM_FLASH_YELLOW, - [SPECIES_FARFETCHD - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES_SMALL, - [SPECIES_DODUO - 1] = ANIM_H_SHAKE_SLOW, - [SPECIES_DODRIO - 1] = ANIM_V_STRETCH, - [SPECIES_SEEL - 1] = ANIM_H_STRETCH, - [SPECIES_DEWGONG - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - [SPECIES_GRIMER - 1] = ANIM_H_SLIDE_SLOW, - [SPECIES_MUK - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_SHELLDER - 1] = ANIM_TWIST, - [SPECIES_CLOYSTER - 1] = ANIM_H_SLIDE_WOBBLE, - [SPECIES_GASTLY - 1] = ANIM_CIRCLE_C_CLOCKWISE_SLOW, - [SPECIES_HAUNTER - 1] = ANIM_FLICKER_INCREASING, - [SPECIES_GENGAR - 1] = ANIM_GROW_IN_STAGES, - [SPECIES_ONIX - 1] = ANIM_H_SHAKE, - [SPECIES_DROWZEE - 1] = ANIM_V_STRETCH, - [SPECIES_HYPNO - 1] = ANIM_H_SLIDE_SLOW, - [SPECIES_KRABBY - 1] = ANIM_H_SLIDE, - [SPECIES_KINGLER - 1] = ANIM_H_SLIDE_SLOW, - [SPECIES_VOLTORB - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_ELECTRODE - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_EXEGGCUTE - 1] = ANIM_H_SLIDE_SLOW, - [SPECIES_EXEGGUTOR - 1] = ANIM_H_JUMPS_V_STRETCH, - [SPECIES_CUBONE - 1] = ANIM_V_JUMPS_SMALL, - [SPECIES_MAROWAK - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES, - [SPECIES_HITMONLEE - 1] = ANIM_H_STRETCH, - [SPECIES_HITMONCHAN - 1] = ANIM_GROW_VIBRATE, - [SPECIES_LICKITUNG - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - [SPECIES_KOFFING - 1] = ANIM_V_SLIDE_WOBBLE_SMALL, - [SPECIES_WEEZING - 1] = ANIM_V_SLIDE, - [SPECIES_RHYHORN - 1] = ANIM_V_SHAKE, - [SPECIES_RHYDON - 1] = ANIM_H_SHAKE, - [SPECIES_CHANSEY - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_TANGELA - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES_SMALL, - [SPECIES_KANGASKHAN - 1] = ANIM_V_STRETCH, - [SPECIES_HORSEA - 1] = ANIM_V_JUMPS_SMALL, - [SPECIES_SEADRA - 1] = ANIM_V_SLIDE, - [SPECIES_GOLDEEN - 1] = ANIM_H_SLIDE_WOBBLE, - [SPECIES_SEAKING - 1] = ANIM_V_SLIDE_WOBBLE, - [SPECIES_STARYU - 1] = ANIM_TWIST_TWICE, - [SPECIES_STARMIE - 1] = ANIM_TWIST, - [SPECIES_MR_MIME - 1] = ANIM_H_SLIDE_SLOW, - [SPECIES_SCYTHER - 1] = ANIM_H_VIBRATE, - [SPECIES_JYNX - 1] = ANIM_V_STRETCH, - [SPECIES_ELECTABUZZ - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES_SMALL_SLOW, - [SPECIES_MAGMAR - 1] = ANIM_H_SHAKE, - [SPECIES_PINSIR - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_TAUROS - 1] = ANIM_V_SHAKE_TWICE, - [SPECIES_MAGIKARP - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES, - [SPECIES_GYARADOS - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES_SMALL, - [SPECIES_LAPRAS - 1] = ANIM_V_STRETCH, - [SPECIES_DITTO - 1] = ANIM_CIRCULAR_STRETCH_TWICE, - [SPECIES_EEVEE - 1] = ANIM_V_STRETCH, - [SPECIES_VAPOREON - 1] = ANIM_GLOW_BLUE, - [SPECIES_JOLTEON - 1] = ANIM_GROW_VIBRATE, - [SPECIES_FLAREON - 1] = ANIM_V_SHAKE, - [SPECIES_PORYGON - 1] = ANIM_V_JUMPS_SMALL, - [SPECIES_OMANYTE - 1] = ANIM_V_SLIDE_WOBBLE_SMALL, - [SPECIES_OMASTAR - 1] = ANIM_GROW_VIBRATE, - [SPECIES_KABUTO - 1] = ANIM_H_SLIDE_WOBBLE, - [SPECIES_KABUTOPS - 1] = ANIM_H_SHAKE, - [SPECIES_AERODACTYL - 1] = ANIM_V_SLIDE_SLOW, - [SPECIES_SNORLAX - 1] = ANIM_V_STRETCH, - [SPECIES_ARTICUNO - 1] = ANIM_GROW_VIBRATE, - [SPECIES_ZAPDOS - 1] = ANIM_FLASH_YELLOW, - [SPECIES_MOLTRES - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - [SPECIES_DRATINI - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_DRAGONAIR - 1] = ANIM_GROW_VIBRATE, - [SPECIES_DRAGONITE - 1] = ANIM_V_SHAKE, - [SPECIES_MEWTWO - 1] = ANIM_GROW_VIBRATE, - [SPECIES_MEW - 1] = ANIM_ZIGZAG_SLOW, - [SPECIES_CHIKORITA - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_BAYLEEF - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_MEGANIUM - 1] = ANIM_GROW_VIBRATE, - [SPECIES_CYNDAQUIL - 1] = ANIM_V_STRETCH, - [SPECIES_QUILAVA - 1] = ANIM_H_STRETCH, - [SPECIES_TYPHLOSION - 1] = ANIM_V_SHAKE, - [SPECIES_TOTODILE - 1] = ANIM_H_JUMPS, - [SPECIES_CROCONAW - 1] = ANIM_H_SHAKE, - [SPECIES_FERALIGATR - 1] = ANIM_H_SHAKE, - [SPECIES_SENTRET - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_FURRET - 1] = ANIM_H_JUMPS_V_STRETCH, - [SPECIES_HOOTHOOT - 1] = ANIM_V_SLIDE_SLOW, - [SPECIES_NOCTOWL - 1] = ANIM_V_STRETCH, - [SPECIES_LEDYBA - 1] = ANIM_V_JUMPS_SMALL, - [SPECIES_LEDIAN - 1] = ANIM_V_SLIDE_WOBBLE, - [SPECIES_SPINARAK - 1] = ANIM_CIRCLE_C_CLOCKWISE_SLOW, - [SPECIES_ARIADOS - 1] = ANIM_H_SHAKE, - [SPECIES_CROBAT - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_CHINCHOU - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - [SPECIES_LANTURN - 1] = ANIM_V_SLIDE_WOBBLE_SMALL, - [SPECIES_PICHU - 1] = ANIM_V_JUMPS_BIG, - [SPECIES_CLEFFA - 1] = ANIM_V_JUMPS_SMALL, - [SPECIES_IGGLYBUFF - 1] = ANIM_SWING_CONCAVE_FAST, - [SPECIES_TOGEPI - 1] = ANIM_V_JUMPS_BIG, - [SPECIES_TOGETIC - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_NATU - 1] = ANIM_H_JUMPS, - [SPECIES_XATU - 1] = ANIM_GROW_VIBRATE, - [SPECIES_MAREEP - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_FLAAFFY - 1] = ANIM_V_STRETCH, - [SPECIES_AMPHAROS - 1] = ANIM_FLASH_YELLOW, - [SPECIES_BELLOSSOM - 1] = ANIM_H_SLIDE_SLOW, - [SPECIES_MARILL - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_AZUMARILL - 1] = ANIM_SHRINK_GROW, - [SPECIES_SUDOWOODO - 1] = ANIM_H_SLIDE_SLOW, - [SPECIES_POLITOED - 1] = ANIM_H_JUMPS_V_STRETCH, - [SPECIES_HOPPIP - 1] = ANIM_V_SLIDE_WOBBLE, - [SPECIES_SKIPLOOM - 1] = ANIM_RISING_WOBBLE, - [SPECIES_JUMPLUFF - 1] = ANIM_V_SLIDE_WOBBLE_SMALL, - [SPECIES_AIPOM - 1] = ANIM_H_JUMPS_V_STRETCH, - [SPECIES_SUNKERN - 1] = ANIM_H_JUMPS, - [SPECIES_SUNFLORA - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_YANMA - 1] = ANIM_FIGURE_8, - [SPECIES_WOOPER - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_QUAGSIRE - 1] = ANIM_H_STRETCH, - [SPECIES_ESPEON - 1] = ANIM_GROW_VIBRATE, - [SPECIES_UMBREON - 1] = ANIM_V_SHAKE, - [SPECIES_MURKROW - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_SLOWKING - 1] = ANIM_SHRINK_GROW, - [SPECIES_MISDREAVUS - 1] = ANIM_V_SLIDE_WOBBLE, - [SPECIES_UNOWN - 1] = ANIM_ZIGZAG_FAST, - [SPECIES_WOBBUFFET - 1] = ANIM_GROW_VIBRATE, - [SPECIES_GIRAFARIG - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_PINECO - 1] = ANIM_SWING_CONCAVE, - [SPECIES_FORRETRESS - 1] = ANIM_V_SHAKE, - [SPECIES_DUNSPARCE - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_GLIGAR - 1] = ANIM_SHRINK_GROW, - [SPECIES_STEELIX - 1] = ANIM_V_SHAKE, - [SPECIES_SNUBBULL - 1] = ANIM_V_STRETCH, - [SPECIES_GRANBULL - 1] = ANIM_V_SHAKE, - [SPECIES_QWILFISH - 1] = ANIM_GROW_IN_STAGES, - [SPECIES_SCIZOR - 1] = ANIM_H_VIBRATE, - [SPECIES_SHUCKLE - 1] = ANIM_SWING_CONCAVE, - [SPECIES_HERACROSS - 1] = ANIM_V_STRETCH, - [SPECIES_SNEASEL - 1] = ANIM_H_JUMPS, - [SPECIES_TEDDIURSA - 1] = ANIM_V_STRETCH, - [SPECIES_URSARING - 1] = ANIM_H_SHAKE, - [SPECIES_SLUGMA - 1] = ANIM_V_STRETCH, - [SPECIES_MAGCARGO - 1] = ANIM_V_STRETCH, - [SPECIES_SWINUB - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_PILOSWINE - 1] = ANIM_H_SHAKE, - [SPECIES_CORSOLA - 1] = ANIM_H_SLIDE, - [SPECIES_REMORAID - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - [SPECIES_OCTILLERY - 1] = ANIM_V_STRETCH, - [SPECIES_DELIBIRD - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_MANTINE - 1] = ANIM_SWING_CONVEX, - [SPECIES_SKARMORY - 1] = ANIM_V_SHAKE, - [SPECIES_HOUNDOUR - 1] = ANIM_V_STRETCH, - [SPECIES_HOUNDOOM - 1] = ANIM_V_SHAKE, - [SPECIES_KINGDRA - 1] = ANIM_CIRCLE_INTO_BG, - [SPECIES_PHANPY - 1] = ANIM_H_JUMPS_V_STRETCH, - [SPECIES_DONPHAN - 1] = ANIM_ROTATE_UP_SLAM_DOWN, - [SPECIES_PORYGON2 - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_STANTLER - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_SMEARGLE - 1] = ANIM_H_JUMPS_V_STRETCH, - [SPECIES_TYROGUE - 1] = ANIM_BACK_AND_LUNGE, - [SPECIES_HITMONTOP - 1] = ANIM_H_VIBRATE, - [SPECIES_SMOOCHUM - 1] = ANIM_GROW_VIBRATE, - [SPECIES_ELEKID - 1] = ANIM_FLASH_YELLOW, - [SPECIES_MAGBY - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_MILTANK - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - [SPECIES_BLISSEY - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_RAIKOU - 1] = ANIM_V_STRETCH, - [SPECIES_ENTEI - 1] = ANIM_GROW_VIBRATE, - [SPECIES_SUICUNE - 1] = ANIM_V_SHAKE, - [SPECIES_LARVITAR - 1] = ANIM_V_JUMPS_SMALL, - [SPECIES_PUPITAR - 1] = ANIM_H_SHAKE, - [SPECIES_TYRANITAR - 1] = ANIM_V_SHAKE, - [SPECIES_LUGIA - 1] = ANIM_GROW_IN_STAGES, - [SPECIES_HO_OH - 1] = ANIM_GROW_VIBRATE, - [SPECIES_CELEBI - 1] = ANIM_H_SLIDE_WOBBLE, - [SPECIES_TREECKO - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_GROVYLE - 1] = ANIM_V_STRETCH, - [SPECIES_SCEPTILE - 1] = ANIM_V_SHAKE, - [SPECIES_TORCHIC - 1] = ANIM_V_JUMPS_SMALL, - [SPECIES_COMBUSKEN - 1] = ANIM_V_JUMPS_H_JUMPS, - [SPECIES_BLAZIKEN - 1] = ANIM_H_SHAKE, - [SPECIES_MUDKIP - 1] = ANIM_CIRCULAR_STRETCH_TWICE, - [SPECIES_MARSHTOMP - 1] = ANIM_V_STRETCH, - [SPECIES_SWAMPERT - 1] = ANIM_H_SHAKE, - [SPECIES_POOCHYENA - 1] = ANIM_V_SHAKE, - [SPECIES_MIGHTYENA - 1] = ANIM_V_SHAKE, - [SPECIES_ZIGZAGOON - 1] = ANIM_H_SLIDE, - [SPECIES_LINOONE - 1] = ANIM_GROW_VIBRATE, - [SPECIES_WURMPLE - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_SILCOON - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_BEAUTIFLY - 1] = ANIM_V_SLIDE, - [SPECIES_CASCOON - 1] = ANIM_V_SLIDE, - [SPECIES_DUSTOX - 1] = ANIM_V_JUMPS_H_JUMPS, - [SPECIES_LOTAD - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_LOMBRE - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_LUDICOLO - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES_SLOW, - [SPECIES_SEEDOT - 1] = ANIM_V_JUMPS_H_JUMPS, - [SPECIES_NUZLEAF - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_SHIFTRY - 1] = ANIM_H_VIBRATE, - [SPECIES_TAILLOW - 1] = ANIM_V_JUMPS_BIG, - [SPECIES_SWELLOW - 1] = ANIM_CIRCULAR_STRETCH_TWICE, - [SPECIES_WINGULL - 1] = ANIM_H_PIVOT, - [SPECIES_PELIPPER - 1] = ANIM_V_SLIDE_WOBBLE, - [SPECIES_RALTS - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - [SPECIES_KIRLIA - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_GARDEVOIR - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - [SPECIES_SURSKIT - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_MASQUERAIN - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_SHROOMISH - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_BRELOOM - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_SLAKOTH - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - [SPECIES_VIGOROTH - 1] = ANIM_H_JUMPS, - [SPECIES_SLAKING - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - [SPECIES_NINCADA - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_NINJASK - 1] = ANIM_H_SLIDE_SLOW, - [SPECIES_SHEDINJA - 1] = ANIM_V_SLIDE_WOBBLE, - [SPECIES_WHISMUR - 1] = ANIM_H_SLIDE, - [SPECIES_LOUDRED - 1] = ANIM_SHRINK_GROW, - [SPECIES_EXPLOUD - 1] = ANIM_V_SHAKE_TWICE, - [SPECIES_MAKUHITA - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_HARIYAMA - 1] = ANIM_ROTATE_UP_TO_SIDES, - [SPECIES_AZURILL - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_NOSEPASS - 1] = ANIM_H_SLIDE_SLOW, - [SPECIES_SKITTY - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_DELCATTY - 1] = ANIM_V_STRETCH, - [SPECIES_SABLEYE - 1] = ANIM_GLOW_BLACK, - [SPECIES_MAWILE - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_ARON - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - [SPECIES_LAIRON - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_AGGRON - 1] = ANIM_V_SHAKE_TWICE, - [SPECIES_MEDITITE - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES, - [SPECIES_MEDICHAM - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - [SPECIES_ELECTRIKE - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_MANECTRIC - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_PLUSLE - 1] = ANIM_V_JUMPS_H_JUMPS, - [SPECIES_MINUN - 1] = ANIM_V_JUMPS_H_JUMPS, - [SPECIES_VOLBEAT - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_ILLUMISE - 1] = ANIM_RISING_WOBBLE, - [SPECIES_ROSELIA - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - [SPECIES_GULPIN - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_SWALOT - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - [SPECIES_CARVANHA - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES_SLOW, - [SPECIES_SHARPEDO - 1] = ANIM_H_JUMPS_V_STRETCH_TWICE, - [SPECIES_WAILMER - 1] = ANIM_CIRCULAR_STRETCH_TWICE, - [SPECIES_WAILORD - 1] = ANIM_V_SLIDE_WOBBLE, - [SPECIES_NUMEL - 1] = ANIM_V_SLIDE, - [SPECIES_CAMERUPT - 1] = ANIM_V_SHAKE, - [SPECIES_TORKOAL - 1] = ANIM_V_STRETCH, - [SPECIES_SPOINK - 1] = ANIM_H_JUMPS_V_STRETCH_TWICE, - [SPECIES_GRUMPIG - 1] = ANIM_H_JUMPS_V_STRETCH, - [SPECIES_SPINDA - 1] = ANIM_CIRCLE_INTO_BG, - [SPECIES_TRAPINCH - 1] = ANIM_V_SHAKE, - [SPECIES_VIBRAVA - 1] = ANIM_H_SHAKE, - [SPECIES_FLYGON - 1] = ANIM_ZIGZAG_SLOW, - [SPECIES_CACNEA - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES_SLOW, - [SPECIES_CACTURNE - 1] = ANIM_V_SLIDE, - [SPECIES_SWABLU - 1] = ANIM_GROW_VIBRATE, - [SPECIES_ALTARIA - 1] = ANIM_V_STRETCH, - [SPECIES_ZANGOOSE - 1] = ANIM_GROW_VIBRATE, - [SPECIES_SEVIPER - 1] = ANIM_V_STRETCH, - [SPECIES_LUNATONE - 1] = ANIM_SWING_CONVEX_FAST, - [SPECIES_SOLROCK - 1] = ANIM_ROTATE_TO_SIDES_TWICE, - [SPECIES_BARBOACH - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES_SLOW, - [SPECIES_WHISCASH - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES_SLOW, - [SPECIES_CORPHISH - 1] = ANIM_V_SHAKE, - [SPECIES_CRAWDAUNT - 1] = ANIM_GROW_VIBRATE, - [SPECIES_BALTOY - 1] = ANIM_H_SLIDE_WOBBLE, - [SPECIES_CLAYDOL - 1] = ANIM_V_SLIDE_WOBBLE_SMALL, - [SPECIES_LILEEP - 1] = ANIM_V_STRETCH, - [SPECIES_CRADILY - 1] = ANIM_V_SHAKE_TWICE, - [SPECIES_ANORITH - 1] = ANIM_TWIST, - [SPECIES_ARMALDO - 1] = ANIM_V_SHAKE, - [SPECIES_FEEBAS - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES_SLOW, - [SPECIES_MILOTIC - 1] = ANIM_CIRCULAR_STRETCH_TWICE, - [SPECIES_CASTFORM - 1] = ANIM_H_SLIDE_WOBBLE, - [SPECIES_KECLEON - 1] = ANIM_FLICKER_INCREASING, - [SPECIES_SHUPPET - 1] = ANIM_V_SLIDE_WOBBLE, - [SPECIES_BANETTE - 1] = ANIM_CIRCULAR_STRETCH_TWICE, - [SPECIES_DUSKULL - 1] = ANIM_ZIGZAG_FAST, - [SPECIES_DUSCLOPS - 1] = ANIM_H_VIBRATE, - [SPECIES_TROPIUS - 1] = ANIM_V_SHAKE, - [SPECIES_CHIMECHO - 1] = ANIM_H_SLIDE_WOBBLE, - [SPECIES_ABSOL - 1] = ANIM_CIRCULAR_VIBRATE, - [SPECIES_WYNAUT - 1] = ANIM_H_JUMPS_V_STRETCH, - [SPECIES_SNORUNT - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - [SPECIES_GLALIE - 1] = ANIM_ZIGZAG_FAST, - [SPECIES_SPHEAL - 1] = ANIM_SPIN_LONG, - [SPECIES_SEALEO - 1] = ANIM_V_STRETCH, - [SPECIES_WALREIN - 1] = ANIM_H_SHAKE, - [SPECIES_CLAMPERL - 1] = ANIM_TWIST, - [SPECIES_HUNTAIL - 1] = ANIM_GROW_VIBRATE, - [SPECIES_GOREBYSS - 1] = ANIM_V_SLIDE_WOBBLE, - [SPECIES_RELICANTH - 1] = ANIM_TIP_MOVE_FORWARD, - [SPECIES_LUVDISC - 1] = ANIM_H_SLIDE_WOBBLE, - [SPECIES_BAGON - 1] = ANIM_H_SHAKE, - [SPECIES_SHELGON - 1] = ANIM_V_SLIDE, - [SPECIES_SALAMENCE - 1] = ANIM_H_SHAKE, - [SPECIES_BELDUM - 1] = ANIM_H_SHAKE, - [SPECIES_METANG - 1] = ANIM_V_SLIDE, - [SPECIES_METAGROSS - 1] = ANIM_V_SHAKE, - [SPECIES_REGIROCK - 1] = ANIM_CIRCULAR_STRETCH_TWICE, - [SPECIES_REGICE - 1] = ANIM_H_SLIDE_SLOW, - [SPECIES_REGISTEEL - 1] = ANIM_GROW_VIBRATE, - [SPECIES_LATIAS - 1] = ANIM_ZIGZAG_SLOW, - [SPECIES_LATIOS - 1] = ANIM_CIRCLE_C_CLOCKWISE_SLOW, - [SPECIES_KYOGRE - 1] = ANIM_SWING_CONCAVE_FAST_SHORT, - [SPECIES_GROUDON - 1] = ANIM_V_SHAKE, - [SPECIES_RAYQUAZA - 1] = ANIM_H_SHAKE, - [SPECIES_JIRACHI - 1] = ANIM_RISING_WOBBLE, - [SPECIES_DEOXYS - 1] = ANIM_GROW_VIBRATE, +{ // Gen 1 + [SPECIES_BULBASAUR - 1] = ANIM_V_JUMPS_H_JUMPS, + [SPECIES_IVYSAUR - 1] = ANIM_V_STRETCH, + [SPECIES_VENUSAUR - 1] = ANIM_ROTATE_UP_SLAM_DOWN, + [SPECIES_CHARMANDER - 1] = ANIM_V_JUMPS_SMALL, + [SPECIES_CHARMELEON - 1] = ANIM_BACK_AND_LUNGE, + [SPECIES_CHARIZARD - 1] = ANIM_V_SHAKE, + [SPECIES_SQUIRTLE - 1] = ANIM_V_JUMPS_BIG, + [SPECIES_WARTORTLE - 1] = ANIM_SHRINK_GROW, + [SPECIES_BLASTOISE - 1] = ANIM_V_SHAKE_TWICE, + [SPECIES_CATERPIE - 1] = ANIM_SWING_CONCAVE, + [SPECIES_METAPOD - 1] = ANIM_SWING_CONCAVE, + [SPECIES_BUTTERFREE - 1] = ANIM_H_SLIDE_WOBBLE, + [SPECIES_WEEDLE - 1] = ANIM_H_SLIDE_SLOW, + [SPECIES_KAKUNA - 1] = ANIM_GLOW_ORANGE, + [SPECIES_BEEDRILL - 1] = ANIM_ZIGZAG_SLOW, + [SPECIES_PIDGEY - 1] = ANIM_V_STRETCH, + [SPECIES_PIDGEOTTO - 1] = ANIM_V_STRETCH, + [SPECIES_PIDGEOT - 1] = ANIM_FRONT_FLIP, + [SPECIES_RATTATA - 1] = ANIM_H_JUMPS, + [SPECIES_RATICATE - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES_SMALL, + [SPECIES_SPEAROW - 1] = ANIM_V_JUMPS_SMALL, + [SPECIES_FEAROW - 1] = ANIM_FIGURE_8, + [SPECIES_EKANS - 1] = ANIM_V_STRETCH, + [SPECIES_ARBOK - 1] = ANIM_V_STRETCH, + [SPECIES_PIKACHU - 1] = ANIM_FLASH_YELLOW, + [SPECIES_RAICHU - 1] = ANIM_GROW_VIBRATE, + [SPECIES_SANDSHREW - 1] = ANIM_SWING_CONCAVE_FAST_SHORT, + [SPECIES_SANDSLASH - 1] = ANIM_H_SHAKE, + [SPECIES_NIDORAN_F - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_NIDORINA - 1] = ANIM_V_STRETCH, + [SPECIES_NIDOQUEEN - 1] = ANIM_H_SHAKE, + [SPECIES_NIDORAN_M - 1] = ANIM_GROW_VIBRATE, + [SPECIES_NIDORINO - 1] = ANIM_V_STRETCH, + [SPECIES_NIDOKING - 1] = ANIM_H_SHAKE, + [SPECIES_CLEFAIRY - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_CLEFABLE - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_VULPIX - 1] = ANIM_V_STRETCH, + [SPECIES_NINETALES - 1] = ANIM_GROW_VIBRATE, + [SPECIES_JIGGLYPUFF - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES_SMALL, + [SPECIES_WIGGLYTUFF - 1] = ANIM_H_JUMPS, + [SPECIES_ZUBAT - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_GOLBAT - 1] = ANIM_H_SLIDE_WOBBLE, + [SPECIES_ODDISH - 1] = ANIM_V_JUMPS_H_JUMPS, + [SPECIES_GLOOM - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, + [SPECIES_VILEPLUME - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, + [SPECIES_PARAS - 1] = ANIM_H_SLIDE_SLOW, + [SPECIES_PARASECT - 1] = ANIM_H_SHAKE, + [SPECIES_VENONAT - 1] = ANIM_V_JUMPS_H_JUMPS, + [SPECIES_VENOMOTH - 1] = ANIM_ZIGZAG_SLOW, + [SPECIES_DIGLETT - 1] = ANIM_V_SHAKE, + [SPECIES_DUGTRIO - 1] = ANIM_H_SHAKE_SLOW, + [SPECIES_MEOWTH - 1] = ANIM_V_JUMPS_SMALL, + [SPECIES_PERSIAN - 1] = ANIM_V_STRETCH, + [SPECIES_PSYDUCK - 1] = ANIM_V_JUMPS_H_JUMPS, + [SPECIES_GOLDUCK - 1] = ANIM_H_SHAKE_SLOW, + [SPECIES_MANKEY - 1] = ANIM_H_JUMPS_V_STRETCH, + [SPECIES_PRIMEAPE - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES, + [SPECIES_GROWLITHE - 1] = ANIM_V_STRETCH, + [SPECIES_ARCANINE - 1] = ANIM_V_SHAKE, + [SPECIES_POLIWAG - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_POLIWHIRL - 1] = ANIM_H_JUMPS_V_STRETCH, + [SPECIES_POLIWRATH - 1] = ANIM_V_SHAKE_TWICE, + [SPECIES_ABRA - 1] = ANIM_H_VIBRATE, + [SPECIES_KADABRA - 1] = ANIM_GROW_VIBRATE, + [SPECIES_ALAKAZAM - 1] = ANIM_GROW_VIBRATE, + [SPECIES_MACHOP - 1] = ANIM_V_STRETCH, + [SPECIES_MACHOKE - 1] = ANIM_V_SHAKE, + [SPECIES_MACHAMP - 1] = ANIM_H_JUMPS, + [SPECIES_BELLSPROUT - 1] = ANIM_H_JUMPS, + [SPECIES_WEEPINBELL - 1] = ANIM_SWING_CONVEX, + [SPECIES_VICTREEBEL - 1] = ANIM_H_JUMPS_V_STRETCH, + [SPECIES_TENTACOOL - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_TENTACRUEL - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_GEODUDE - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES_SMALL, + [SPECIES_GRAVELER - 1] = ANIM_V_SHAKE, + [SPECIES_GOLEM - 1] = ANIM_ROTATE_UP_SLAM_DOWN, + [SPECIES_PONYTA - 1] = ANIM_V_SHAKE, + [SPECIES_RAPIDASH - 1] = ANIM_H_SHAKE, + [SPECIES_SLOWPOKE - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, + [SPECIES_SLOWBRO - 1] = ANIM_H_STRETCH, + [SPECIES_MAGNEMITE - 1] = ANIM_TUMBLING_FRONT_FLIP_TWICE, + [SPECIES_MAGNETON - 1] = ANIM_FLASH_YELLOW, + [SPECIES_FARFETCHD - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES_SMALL, + [SPECIES_DODUO - 1] = ANIM_H_SHAKE_SLOW, + [SPECIES_DODRIO - 1] = ANIM_V_STRETCH, + [SPECIES_SEEL - 1] = ANIM_H_STRETCH, + [SPECIES_DEWGONG - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, + [SPECIES_GRIMER - 1] = ANIM_H_SLIDE_SLOW, + [SPECIES_MUK - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_SHELLDER - 1] = ANIM_TWIST, + [SPECIES_CLOYSTER - 1] = ANIM_H_SLIDE_WOBBLE, + [SPECIES_GASTLY - 1] = ANIM_CIRCLE_C_CLOCKWISE_SLOW, + [SPECIES_HAUNTER - 1] = ANIM_FLICKER_INCREASING, + [SPECIES_GENGAR - 1] = ANIM_GROW_IN_STAGES, + [SPECIES_ONIX - 1] = ANIM_H_SHAKE, + [SPECIES_DROWZEE - 1] = ANIM_V_STRETCH, + [SPECIES_HYPNO - 1] = ANIM_H_SLIDE_SLOW, + [SPECIES_KRABBY - 1] = ANIM_H_SLIDE, + [SPECIES_KINGLER - 1] = ANIM_H_SLIDE_SLOW, + [SPECIES_VOLTORB - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ELECTRODE - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_EXEGGCUTE - 1] = ANIM_H_SLIDE_SLOW, + [SPECIES_EXEGGUTOR - 1] = ANIM_H_JUMPS_V_STRETCH, + [SPECIES_CUBONE - 1] = ANIM_V_JUMPS_SMALL, + [SPECIES_MAROWAK - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES, + [SPECIES_HITMONLEE - 1] = ANIM_H_STRETCH, + [SPECIES_HITMONCHAN - 1] = ANIM_GROW_VIBRATE, + [SPECIES_LICKITUNG - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, + [SPECIES_KOFFING - 1] = ANIM_V_SLIDE_WOBBLE_SMALL, + [SPECIES_WEEZING - 1] = ANIM_V_SLIDE, + [SPECIES_RHYHORN - 1] = ANIM_V_SHAKE, + [SPECIES_RHYDON - 1] = ANIM_H_SHAKE, + [SPECIES_CHANSEY - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_TANGELA - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES_SMALL, + [SPECIES_KANGASKHAN - 1] = ANIM_V_STRETCH, + [SPECIES_HORSEA - 1] = ANIM_V_JUMPS_SMALL, + [SPECIES_SEADRA - 1] = ANIM_V_SLIDE, + [SPECIES_GOLDEEN - 1] = ANIM_H_SLIDE_WOBBLE, + [SPECIES_SEAKING - 1] = ANIM_V_SLIDE_WOBBLE, + [SPECIES_STARYU - 1] = ANIM_TWIST_TWICE, + [SPECIES_STARMIE - 1] = ANIM_TWIST, + [SPECIES_MR_MIME - 1] = ANIM_H_SLIDE_SLOW, + [SPECIES_SCYTHER - 1] = ANIM_H_VIBRATE, + [SPECIES_JYNX - 1] = ANIM_V_STRETCH, + [SPECIES_ELECTABUZZ - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES_SMALL_SLOW, + [SPECIES_MAGMAR - 1] = ANIM_H_SHAKE, + [SPECIES_PINSIR - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_TAUROS - 1] = ANIM_V_SHAKE_TWICE, + [SPECIES_MAGIKARP - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES, + [SPECIES_GYARADOS - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES_SMALL, + [SPECIES_LAPRAS - 1] = ANIM_V_STRETCH, + [SPECIES_DITTO - 1] = ANIM_CIRCULAR_STRETCH_TWICE, + [SPECIES_EEVEE - 1] = ANIM_V_STRETCH, + [SPECIES_VAPOREON - 1] = ANIM_GLOW_BLUE, + [SPECIES_JOLTEON - 1] = ANIM_GROW_VIBRATE, + [SPECIES_FLAREON - 1] = ANIM_V_SHAKE, + [SPECIES_PORYGON - 1] = ANIM_V_JUMPS_SMALL, + [SPECIES_OMANYTE - 1] = ANIM_V_SLIDE_WOBBLE_SMALL, + [SPECIES_OMASTAR - 1] = ANIM_GROW_VIBRATE, + [SPECIES_KABUTO - 1] = ANIM_H_SLIDE_WOBBLE, + [SPECIES_KABUTOPS - 1] = ANIM_H_SHAKE, + [SPECIES_AERODACTYL - 1] = ANIM_V_SLIDE_SLOW, + [SPECIES_SNORLAX - 1] = ANIM_V_STRETCH, + [SPECIES_ARTICUNO - 1] = ANIM_GROW_VIBRATE, + [SPECIES_ZAPDOS - 1] = ANIM_FLASH_YELLOW, + [SPECIES_MOLTRES - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, + [SPECIES_DRATINI - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_DRAGONAIR - 1] = ANIM_GROW_VIBRATE, + [SPECIES_DRAGONITE - 1] = ANIM_V_SHAKE, + [SPECIES_MEWTWO - 1] = ANIM_GROW_VIBRATE, + [SPECIES_MEW - 1] = ANIM_ZIGZAG_SLOW, + + // Gen 2 + [SPECIES_CHIKORITA - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_BAYLEEF - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_MEGANIUM - 1] = ANIM_GROW_VIBRATE, + [SPECIES_CYNDAQUIL - 1] = ANIM_V_STRETCH, + [SPECIES_QUILAVA - 1] = ANIM_H_STRETCH, + [SPECIES_TYPHLOSION - 1] = ANIM_V_SHAKE, + [SPECIES_TOTODILE - 1] = ANIM_H_JUMPS, + [SPECIES_CROCONAW - 1] = ANIM_H_SHAKE, + [SPECIES_FERALIGATR - 1] = ANIM_H_SHAKE, + [SPECIES_SENTRET - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_FURRET - 1] = ANIM_H_JUMPS_V_STRETCH, + [SPECIES_HOOTHOOT - 1] = ANIM_V_SLIDE_SLOW, + [SPECIES_NOCTOWL - 1] = ANIM_V_STRETCH, + [SPECIES_LEDYBA - 1] = ANIM_V_JUMPS_SMALL, + [SPECIES_LEDIAN - 1] = ANIM_V_SLIDE_WOBBLE, + [SPECIES_SPINARAK - 1] = ANIM_CIRCLE_C_CLOCKWISE_SLOW, + [SPECIES_ARIADOS - 1] = ANIM_H_SHAKE, + [SPECIES_CROBAT - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_CHINCHOU - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, + [SPECIES_LANTURN - 1] = ANIM_V_SLIDE_WOBBLE_SMALL, + [SPECIES_PICHU - 1] = ANIM_V_JUMPS_BIG, + [SPECIES_CLEFFA - 1] = ANIM_V_JUMPS_SMALL, + [SPECIES_IGGLYBUFF - 1] = ANIM_SWING_CONCAVE_FAST, + [SPECIES_TOGEPI - 1] = ANIM_V_JUMPS_BIG, + [SPECIES_TOGETIC - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_NATU - 1] = ANIM_H_JUMPS, + [SPECIES_XATU - 1] = ANIM_GROW_VIBRATE, + [SPECIES_MAREEP - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_FLAAFFY - 1] = ANIM_V_STRETCH, + [SPECIES_AMPHAROS - 1] = ANIM_FLASH_YELLOW, + [SPECIES_BELLOSSOM - 1] = ANIM_H_SLIDE_SLOW, + [SPECIES_MARILL - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_AZUMARILL - 1] = ANIM_SHRINK_GROW, + [SPECIES_SUDOWOODO - 1] = ANIM_H_SLIDE_SLOW, + [SPECIES_POLITOED - 1] = ANIM_H_JUMPS_V_STRETCH, + [SPECIES_HOPPIP - 1] = ANIM_V_SLIDE_WOBBLE, + [SPECIES_SKIPLOOM - 1] = ANIM_RISING_WOBBLE, + [SPECIES_JUMPLUFF - 1] = ANIM_V_SLIDE_WOBBLE_SMALL, + [SPECIES_AIPOM - 1] = ANIM_H_JUMPS_V_STRETCH, + [SPECIES_SUNKERN - 1] = ANIM_H_JUMPS, + [SPECIES_SUNFLORA - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_YANMA - 1] = ANIM_FIGURE_8, + [SPECIES_WOOPER - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_QUAGSIRE - 1] = ANIM_H_STRETCH, + [SPECIES_ESPEON - 1] = ANIM_GROW_VIBRATE, + [SPECIES_UMBREON - 1] = ANIM_V_SHAKE, + [SPECIES_MURKROW - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_SLOWKING - 1] = ANIM_SHRINK_GROW, + [SPECIES_MISDREAVUS - 1] = ANIM_V_SLIDE_WOBBLE, + [SPECIES_UNOWN - 1] = ANIM_ZIGZAG_FAST, + [SPECIES_WOBBUFFET - 1] = ANIM_GROW_VIBRATE, + [SPECIES_GIRAFARIG - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_PINECO - 1] = ANIM_SWING_CONCAVE, + [SPECIES_FORRETRESS - 1] = ANIM_V_SHAKE, + [SPECIES_DUNSPARCE - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_GLIGAR - 1] = ANIM_SHRINK_GROW, + [SPECIES_STEELIX - 1] = ANIM_V_SHAKE, + [SPECIES_SNUBBULL - 1] = ANIM_V_STRETCH, + [SPECIES_GRANBULL - 1] = ANIM_V_SHAKE, + [SPECIES_QWILFISH - 1] = ANIM_GROW_IN_STAGES, + [SPECIES_SCIZOR - 1] = ANIM_H_VIBRATE, + [SPECIES_SHUCKLE - 1] = ANIM_SWING_CONCAVE, + [SPECIES_HERACROSS - 1] = ANIM_V_STRETCH, + [SPECIES_SNEASEL - 1] = ANIM_H_JUMPS, + [SPECIES_TEDDIURSA - 1] = ANIM_V_STRETCH, + [SPECIES_URSARING - 1] = ANIM_H_SHAKE, + [SPECIES_SLUGMA - 1] = ANIM_V_STRETCH, + [SPECIES_MAGCARGO - 1] = ANIM_V_STRETCH, + [SPECIES_SWINUB - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_PILOSWINE - 1] = ANIM_H_SHAKE, + [SPECIES_CORSOLA - 1] = ANIM_H_SLIDE, + [SPECIES_REMORAID - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, + [SPECIES_OCTILLERY - 1] = ANIM_V_STRETCH, + [SPECIES_DELIBIRD - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_MANTINE - 1] = ANIM_SWING_CONVEX, + [SPECIES_SKARMORY - 1] = ANIM_V_SHAKE, + [SPECIES_HOUNDOUR - 1] = ANIM_V_STRETCH, + [SPECIES_HOUNDOOM - 1] = ANIM_V_SHAKE, + [SPECIES_KINGDRA - 1] = ANIM_CIRCLE_INTO_BG, + [SPECIES_PHANPY - 1] = ANIM_H_JUMPS_V_STRETCH, + [SPECIES_DONPHAN - 1] = ANIM_ROTATE_UP_SLAM_DOWN, + [SPECIES_PORYGON2 - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_STANTLER - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_SMEARGLE - 1] = ANIM_H_JUMPS_V_STRETCH, + [SPECIES_TYROGUE - 1] = ANIM_BACK_AND_LUNGE, + [SPECIES_HITMONTOP - 1] = ANIM_H_VIBRATE, + [SPECIES_SMOOCHUM - 1] = ANIM_GROW_VIBRATE, + [SPECIES_ELEKID - 1] = ANIM_FLASH_YELLOW, + [SPECIES_MAGBY - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_MILTANK - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, + [SPECIES_BLISSEY - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_RAIKOU - 1] = ANIM_V_STRETCH, + [SPECIES_ENTEI - 1] = ANIM_GROW_VIBRATE, + [SPECIES_SUICUNE - 1] = ANIM_V_SHAKE, + [SPECIES_LARVITAR - 1] = ANIM_V_JUMPS_SMALL, + [SPECIES_PUPITAR - 1] = ANIM_H_SHAKE, + [SPECIES_TYRANITAR - 1] = ANIM_V_SHAKE, + [SPECIES_LUGIA - 1] = ANIM_GROW_IN_STAGES, + [SPECIES_HO_OH - 1] = ANIM_GROW_VIBRATE, + [SPECIES_CELEBI - 1] = ANIM_H_SLIDE_WOBBLE, + + // Gen 3 + [SPECIES_TREECKO - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_GROVYLE - 1] = ANIM_V_STRETCH, + [SPECIES_SCEPTILE - 1] = ANIM_V_SHAKE, + [SPECIES_TORCHIC - 1] = ANIM_V_JUMPS_SMALL, + [SPECIES_COMBUSKEN - 1] = ANIM_V_JUMPS_H_JUMPS, + [SPECIES_BLAZIKEN - 1] = ANIM_H_SHAKE, + [SPECIES_MUDKIP - 1] = ANIM_CIRCULAR_STRETCH_TWICE, + [SPECIES_MARSHTOMP - 1] = ANIM_V_STRETCH, + [SPECIES_SWAMPERT - 1] = ANIM_H_SHAKE, + [SPECIES_POOCHYENA - 1] = ANIM_V_SHAKE, + [SPECIES_MIGHTYENA - 1] = ANIM_V_SHAKE, + [SPECIES_ZIGZAGOON - 1] = ANIM_H_SLIDE, + [SPECIES_LINOONE - 1] = ANIM_GROW_VIBRATE, + [SPECIES_WURMPLE - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_SILCOON - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_BEAUTIFLY - 1] = ANIM_V_SLIDE, + [SPECIES_CASCOON - 1] = ANIM_V_SLIDE, + [SPECIES_DUSTOX - 1] = ANIM_V_JUMPS_H_JUMPS, + [SPECIES_LOTAD - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_LOMBRE - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_LUDICOLO - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES_SLOW, + [SPECIES_SEEDOT - 1] = ANIM_V_JUMPS_H_JUMPS, + [SPECIES_NUZLEAF - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_SHIFTRY - 1] = ANIM_H_VIBRATE, + [SPECIES_TAILLOW - 1] = ANIM_V_JUMPS_BIG, + [SPECIES_SWELLOW - 1] = ANIM_CIRCULAR_STRETCH_TWICE, + [SPECIES_WINGULL - 1] = ANIM_H_PIVOT, + [SPECIES_PELIPPER - 1] = ANIM_V_SLIDE_WOBBLE, + [SPECIES_RALTS - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, + [SPECIES_KIRLIA - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_GARDEVOIR - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, + [SPECIES_SURSKIT - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_MASQUERAIN - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_SHROOMISH - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_BRELOOM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_SLAKOTH - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, + [SPECIES_VIGOROTH - 1] = ANIM_H_JUMPS, + [SPECIES_SLAKING - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, + [SPECIES_NINCADA - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_NINJASK - 1] = ANIM_H_SLIDE_SLOW, + [SPECIES_SHEDINJA - 1] = ANIM_V_SLIDE_WOBBLE, + [SPECIES_WHISMUR - 1] = ANIM_H_SLIDE, + [SPECIES_LOUDRED - 1] = ANIM_SHRINK_GROW, + [SPECIES_EXPLOUD - 1] = ANIM_V_SHAKE_TWICE, + [SPECIES_MAKUHITA - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_HARIYAMA - 1] = ANIM_ROTATE_UP_TO_SIDES, + [SPECIES_AZURILL - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_NOSEPASS - 1] = ANIM_H_SLIDE_SLOW, + [SPECIES_SKITTY - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_DELCATTY - 1] = ANIM_V_STRETCH, + [SPECIES_SABLEYE - 1] = ANIM_GLOW_BLACK, + [SPECIES_MAWILE - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ARON - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, + [SPECIES_LAIRON - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_AGGRON - 1] = ANIM_V_SHAKE_TWICE, + [SPECIES_MEDITITE - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES, + [SPECIES_MEDICHAM - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, + [SPECIES_ELECTRIKE - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_MANECTRIC - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_PLUSLE - 1] = ANIM_V_JUMPS_H_JUMPS, + [SPECIES_MINUN - 1] = ANIM_V_JUMPS_H_JUMPS, + [SPECIES_VOLBEAT - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ILLUMISE - 1] = ANIM_RISING_WOBBLE, + [SPECIES_ROSELIA - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, + [SPECIES_GULPIN - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_SWALOT - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, + [SPECIES_CARVANHA - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES_SLOW, + [SPECIES_SHARPEDO - 1] = ANIM_H_JUMPS_V_STRETCH_TWICE, + [SPECIES_WAILMER - 1] = ANIM_CIRCULAR_STRETCH_TWICE, + [SPECIES_WAILORD - 1] = ANIM_V_SLIDE_WOBBLE, + [SPECIES_NUMEL - 1] = ANIM_V_SLIDE, + [SPECIES_CAMERUPT - 1] = ANIM_V_SHAKE, + [SPECIES_TORKOAL - 1] = ANIM_V_STRETCH, + [SPECIES_SPOINK - 1] = ANIM_H_JUMPS_V_STRETCH_TWICE, + [SPECIES_GRUMPIG - 1] = ANIM_H_JUMPS_V_STRETCH, + [SPECIES_SPINDA - 1] = ANIM_CIRCLE_INTO_BG, + [SPECIES_TRAPINCH - 1] = ANIM_V_SHAKE, + [SPECIES_VIBRAVA - 1] = ANIM_H_SHAKE, + [SPECIES_FLYGON - 1] = ANIM_ZIGZAG_SLOW, + [SPECIES_CACNEA - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES_SLOW, + [SPECIES_CACTURNE - 1] = ANIM_V_SLIDE, + [SPECIES_SWABLU - 1] = ANIM_GROW_VIBRATE, + [SPECIES_ALTARIA - 1] = ANIM_V_STRETCH, + [SPECIES_ZANGOOSE - 1] = ANIM_GROW_VIBRATE, + [SPECIES_SEVIPER - 1] = ANIM_V_STRETCH, + [SPECIES_LUNATONE - 1] = ANIM_SWING_CONVEX_FAST, + [SPECIES_SOLROCK - 1] = ANIM_ROTATE_TO_SIDES_TWICE, + [SPECIES_BARBOACH - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES_SLOW, + [SPECIES_WHISCASH - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES_SLOW, + [SPECIES_CORPHISH - 1] = ANIM_V_SHAKE, + [SPECIES_CRAWDAUNT - 1] = ANIM_GROW_VIBRATE, + [SPECIES_BALTOY - 1] = ANIM_H_SLIDE_WOBBLE, + [SPECIES_CLAYDOL - 1] = ANIM_V_SLIDE_WOBBLE_SMALL, + [SPECIES_LILEEP - 1] = ANIM_V_STRETCH, + [SPECIES_CRADILY - 1] = ANIM_V_SHAKE_TWICE, + [SPECIES_ANORITH - 1] = ANIM_TWIST, + [SPECIES_ARMALDO - 1] = ANIM_V_SHAKE, + [SPECIES_FEEBAS - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES_SLOW, + [SPECIES_MILOTIC - 1] = ANIM_CIRCULAR_STRETCH_TWICE, + [SPECIES_CASTFORM - 1] = ANIM_H_SLIDE_WOBBLE, + [SPECIES_KECLEON - 1] = ANIM_FLICKER_INCREASING, + [SPECIES_SHUPPET - 1] = ANIM_V_SLIDE_WOBBLE, + [SPECIES_BANETTE - 1] = ANIM_CIRCULAR_STRETCH_TWICE, + [SPECIES_DUSKULL - 1] = ANIM_ZIGZAG_FAST, + [SPECIES_DUSCLOPS - 1] = ANIM_H_VIBRATE, + [SPECIES_TROPIUS - 1] = ANIM_V_SHAKE, + [SPECIES_CHIMECHO - 1] = ANIM_H_SLIDE_WOBBLE, + [SPECIES_ABSOL - 1] = ANIM_CIRCULAR_VIBRATE, + [SPECIES_WYNAUT - 1] = ANIM_H_JUMPS_V_STRETCH, + [SPECIES_SNORUNT - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, + [SPECIES_GLALIE - 1] = ANIM_ZIGZAG_FAST, + [SPECIES_SPHEAL - 1] = ANIM_SPIN_LONG, + [SPECIES_SEALEO - 1] = ANIM_V_STRETCH, + [SPECIES_WALREIN - 1] = ANIM_H_SHAKE, + [SPECIES_CLAMPERL - 1] = ANIM_TWIST, + [SPECIES_HUNTAIL - 1] = ANIM_GROW_VIBRATE, + [SPECIES_GOREBYSS - 1] = ANIM_V_SLIDE_WOBBLE, + [SPECIES_RELICANTH - 1] = ANIM_TIP_MOVE_FORWARD, + [SPECIES_LUVDISC - 1] = ANIM_H_SLIDE_WOBBLE, + [SPECIES_BAGON - 1] = ANIM_H_SHAKE, + [SPECIES_SHELGON - 1] = ANIM_V_SLIDE, + [SPECIES_SALAMENCE - 1] = ANIM_H_SHAKE, + [SPECIES_BELDUM - 1] = ANIM_H_SHAKE, + [SPECIES_METANG - 1] = ANIM_V_SLIDE, + [SPECIES_METAGROSS - 1] = ANIM_V_SHAKE, + [SPECIES_REGIROCK - 1] = ANIM_CIRCULAR_STRETCH_TWICE, + [SPECIES_REGICE - 1] = ANIM_H_SLIDE_SLOW, + [SPECIES_REGISTEEL - 1] = ANIM_GROW_VIBRATE, + [SPECIES_LATIAS - 1] = ANIM_ZIGZAG_SLOW, + [SPECIES_LATIOS - 1] = ANIM_CIRCLE_C_CLOCKWISE_SLOW, + [SPECIES_KYOGRE - 1] = ANIM_SWING_CONCAVE_FAST_SHORT, + [SPECIES_GROUDON - 1] = ANIM_V_SHAKE, + [SPECIES_RAYQUAZA - 1] = ANIM_H_SHAKE, + [SPECIES_JIRACHI - 1] = ANIM_RISING_WOBBLE, + [SPECIES_DEOXYS - 1] = ANIM_GROW_VIBRATE, // Gen 4 - [SPECIES_TURTWIG - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_GROTLE - 1] = ANIM_V_STRETCH, - [SPECIES_TORTERRA - 1] = ANIM_H_SHAKE, - [SPECIES_CHIMCHAR - 1] = ANIM_V_JUMPS_BIG, - [SPECIES_MONFERNO - 1] = ANIM_H_JUMPS_V_STRETCH, - [SPECIES_INFERNAPE - 1] = ANIM_V_STRETCH, - [SPECIES_PIPLUP - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_PRINPLUP - 1] = ANIM_V_STRETCH, - [SPECIES_EMPOLEON - 1] = ANIM_V_STRETCH, - [SPECIES_STARLY - 1] = ANIM_V_STRETCH, - [SPECIES_STARAVIA - 1] = ANIM_V_STRETCH, - [SPECIES_STARAPTOR - 1] = ANIM_V_SHAKE, - [SPECIES_BIDOOF - 1] = ANIM_H_SLIDE_SLOW, - [SPECIES_BIBAREL - 1] = ANIM_GROW_VIBRATE, - [SPECIES_KRICKETOT - 1] = ANIM_H_JUMPS, - [SPECIES_KRICKETUNE - 1] = ANIM_H_SLIDE_SLOW, - [SPECIES_SHINX - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_LUXIO - 1] = ANIM_H_STRETCH, - [SPECIES_LUXRAY - 1] = ANIM_GLOW_YELLOW, - [SPECIES_BUDEW - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - [SPECIES_ROSERADE - 1] = ANIM_H_VIBRATE, - [SPECIES_CRANIDOS - 1] = ANIM_V_STRETCH, - [SPECIES_RAMPARDOS - 1] = ANIM_V_SHAKE_TWICE, - [SPECIES_SHIELDON - 1] = ANIM_V_SHAKE, - [SPECIES_BASTIODON - 1] = ANIM_BACK_AND_LUNGE, - [SPECIES_BURMY - 1] = ANIM_V_STRETCH, - [SPECIES_WORMADAM - 1] = ANIM_SWING_CONVEX_FAST_SHORT, - [SPECIES_MOTHIM - 1] = ANIM_H_SLIDE_WOBBLE, - [SPECIES_COMBEE - 1] = ANIM_V_SLIDE_WOBBLE, - [SPECIES_VESPIQUEN - 1] = ANIM_LUNGE_GROW, - [SPECIES_PACHIRISU - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_BUIZEL - 1] = ANIM_GROW_VIBRATE, - [SPECIES_FLOATZEL - 1] = ANIM_H_JUMPS_V_STRETCH, - [SPECIES_CHERUBI - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_CHERRIM - 1] = ANIM_DEEP_V_SQUISH_AND_BOUNCE, - [SPECIES_SHELLOS - 1] = ANIM_V_STRETCH, - [SPECIES_GASTRODON - 1] = ANIM_CIRCULAR_STRETCH_TWICE, - [SPECIES_AMBIPOM - 1] = ANIM_BACK_AND_LUNGE, - [SPECIES_DRIFLOON - 1] = ANIM_V_SLIDE_WOBBLE, - [SPECIES_DRIFBLIM - 1] = ANIM_V_SLIDE_WOBBLE, - [SPECIES_BUNEARY - 1] = ANIM_H_JUMPS_V_STRETCH, - [SPECIES_LOPUNNY - 1] = ANIM_SHRINK_GROW, - [SPECIES_MISMAGIUS - 1] = ANIM_H_SLIDE_WOBBLE, - [SPECIES_HONCHKROW - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - [SPECIES_GLAMEOW - 1] = ANIM_GROW_VIBRATE, - [SPECIES_PURUGLY - 1] = ANIM_V_STRETCH, - [SPECIES_CHINGLING - 1] = ANIM_H_SLIDE_WOBBLE, - [SPECIES_STUNKY - 1] = ANIM_TIP_MOVE_FORWARD, - [SPECIES_SKUNTANK - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - [SPECIES_BRONZOR - 1] = ANIM_H_SLIDE_WOBBLE, - [SPECIES_BRONZONG - 1] = ANIM_V_SLIDE_WOBBLE_SMALL, - [SPECIES_BONSLY - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES, - [SPECIES_MIME_JR - 1] = ANIM_H_SLIDE_SLOW, - [SPECIES_HAPPINY - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - [SPECIES_CHATOT - 1] = ANIM_V_SHAKE_TWICE, - [SPECIES_SPIRITOMB - 1] = ANIM_GROW_IN_STAGES, - [SPECIES_GIBLE - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_GABITE - 1] = ANIM_V_STRETCH, - [SPECIES_GARCHOMP - 1] = ANIM_V_SHAKE_TWICE, - [SPECIES_MUNCHLAX - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - [SPECIES_RIOLU - 1] = ANIM_RAPID_H_HOPS, - [SPECIES_LUCARIO - 1] = ANIM_V_STRETCH, - [SPECIES_HIPPOPOTAS - 1] = ANIM_V_STRETCH, - [SPECIES_HIPPOWDON - 1] = ANIM_V_SHAKE_TWICE, - [SPECIES_SKORUPI - 1] = ANIM_H_SLIDE_SLOW, - [SPECIES_DRAPION - 1] = ANIM_V_JUMPS_BIG, - [SPECIES_CROAGUNK - 1] = ANIM_RAPID_H_HOPS, - [SPECIES_TOXICROAK - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_CARNIVINE - 1] = ANIM_FIGURE_8, - [SPECIES_FINNEON - 1] = ANIM_V_SLIDE_WOBBLE_SMALL, - [SPECIES_LUMINEON - 1] = ANIM_H_STRETCH, - [SPECIES_MANTYKE - 1] = ANIM_TWIST_TWICE, - [SPECIES_SNOVER - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_ABOMASNOW - 1] = ANIM_H_SHAKE, - [SPECIES_WEAVILE - 1] = ANIM_H_VIBRATE, - [SPECIES_MAGNEZONE - 1] = ANIM_H_SLIDE_WOBBLE, - [SPECIES_LICKILICKY - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_RHYPERIOR - 1] = ANIM_V_SHAKE_TWICE, - [SPECIES_TANGROWTH - 1] = ANIM_H_STRETCH, - [SPECIES_ELECTIVIRE - 1] = ANIM_GLOW_YELLOW, - [SPECIES_MAGMORTAR - 1] = ANIM_V_STRETCH, - [SPECIES_TOGEKISS - 1] = ANIM_SWING_CONVEX, - [SPECIES_YANMEGA - 1] = ANIM_H_VIBRATE, - [SPECIES_LEAFEON - 1] = ANIM_SHRINK_GROW, - [SPECIES_GLACEON - 1] = ANIM_V_STRETCH, - [SPECIES_GLISCOR - 1] = ANIM_SWING_CONVEX, - [SPECIES_MAMOSWINE - 1] = ANIM_BACK_AND_LUNGE, - [SPECIES_PORYGON_Z - 1] = ANIM_CIRCLE_C_CLOCKWISE_SLOW, - [SPECIES_GALLADE - 1] = ANIM_H_VIBRATE, - [SPECIES_PROBOPASS - 1] = ANIM_V_SLIDE, - [SPECIES_DUSKNOIR - 1] = ANIM_H_SLIDE, - [SPECIES_FROSLASS - 1] = ANIM_V_SLIDE_WOBBLE, - [SPECIES_ROTOM - 1] = ANIM_GLOW_YELLOW, - [SPECIES_UXIE - 1] = ANIM_SWING_CONCAVE, - [SPECIES_MESPRIT - 1] = ANIM_H_SLIDE_WOBBLE, - [SPECIES_AZELF - 1] = ANIM_V_SLIDE_WOBBLE, - [SPECIES_DIALGA - 1] = ANIM_H_SHAKE, - [SPECIES_PALKIA - 1] = ANIM_V_SHAKE, - [SPECIES_HEATRAN - 1] = ANIM_GLOW_ORANGE, - [SPECIES_REGIGIGAS - 1] = ANIM_V_SHAKE, - [SPECIES_GIRATINA - 1] = ANIM_GROW_VIBRATE, - [SPECIES_CRESSELIA - 1] = ANIM_H_SLIDE_WOBBLE, - [SPECIES_PHIONE - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_MANAPHY - 1] = ANIM_SWING_CONVEX, - [SPECIES_DARKRAI - 1] = ANIM_GLOW_BLACK, - [SPECIES_SHAYMIN - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_ARCEUS - 1] = ANIM_GROW_VIBRATE, + [SPECIES_TURTWIG - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_GROTLE - 1] = ANIM_V_STRETCH, + [SPECIES_TORTERRA - 1] = ANIM_H_SHAKE, + [SPECIES_CHIMCHAR - 1] = ANIM_V_JUMPS_BIG, + [SPECIES_MONFERNO - 1] = ANIM_H_JUMPS_V_STRETCH, + [SPECIES_INFERNAPE - 1] = ANIM_V_STRETCH, + [SPECIES_PIPLUP - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_PRINPLUP - 1] = ANIM_V_STRETCH, + [SPECIES_EMPOLEON - 1] = ANIM_V_STRETCH, + [SPECIES_STARLY - 1] = ANIM_V_STRETCH, + [SPECIES_STARAVIA - 1] = ANIM_V_STRETCH, + [SPECIES_STARAPTOR - 1] = ANIM_V_SHAKE, + [SPECIES_BIDOOF - 1] = ANIM_H_SLIDE_SLOW, + [SPECIES_BIBAREL - 1] = ANIM_GROW_VIBRATE, + [SPECIES_KRICKETOT - 1] = ANIM_H_JUMPS, + [SPECIES_KRICKETUNE - 1] = ANIM_H_SLIDE_SLOW, + [SPECIES_SHINX - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_LUXIO - 1] = ANIM_H_STRETCH, + [SPECIES_LUXRAY - 1] = ANIM_GLOW_YELLOW, + [SPECIES_BUDEW - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, + [SPECIES_ROSERADE - 1] = ANIM_H_VIBRATE, + [SPECIES_CRANIDOS - 1] = ANIM_V_STRETCH, + [SPECIES_RAMPARDOS - 1] = ANIM_V_SHAKE_TWICE, + [SPECIES_SHIELDON - 1] = ANIM_V_SHAKE, + [SPECIES_BASTIODON - 1] = ANIM_BACK_AND_LUNGE, + [SPECIES_BURMY - 1] = ANIM_V_STRETCH, + [SPECIES_WORMADAM - 1] = ANIM_SWING_CONVEX_FAST_SHORT, + [SPECIES_MOTHIM - 1] = ANIM_H_SLIDE_WOBBLE, + [SPECIES_COMBEE - 1] = ANIM_V_SLIDE_WOBBLE, + [SPECIES_VESPIQUEN - 1] = ANIM_LUNGE_GROW, + [SPECIES_PACHIRISU - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_BUIZEL - 1] = ANIM_GROW_VIBRATE, + [SPECIES_FLOATZEL - 1] = ANIM_H_JUMPS_V_STRETCH, + [SPECIES_CHERUBI - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_CHERRIM - 1] = ANIM_DEEP_V_SQUISH_AND_BOUNCE, + [SPECIES_SHELLOS - 1] = ANIM_V_STRETCH, + [SPECIES_GASTRODON - 1] = ANIM_CIRCULAR_STRETCH_TWICE, + [SPECIES_AMBIPOM - 1] = ANIM_BACK_AND_LUNGE, + [SPECIES_DRIFLOON - 1] = ANIM_V_SLIDE_WOBBLE, + [SPECIES_DRIFBLIM - 1] = ANIM_V_SLIDE_WOBBLE, + [SPECIES_BUNEARY - 1] = ANIM_H_JUMPS_V_STRETCH, + [SPECIES_LOPUNNY - 1] = ANIM_SHRINK_GROW, + [SPECIES_MISMAGIUS - 1] = ANIM_H_SLIDE_WOBBLE, + [SPECIES_HONCHKROW - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, + [SPECIES_GLAMEOW - 1] = ANIM_GROW_VIBRATE, + [SPECIES_PURUGLY - 1] = ANIM_V_STRETCH, + [SPECIES_CHINGLING - 1] = ANIM_H_SLIDE_WOBBLE, + [SPECIES_STUNKY - 1] = ANIM_TIP_MOVE_FORWARD, + [SPECIES_SKUNTANK - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, + [SPECIES_BRONZOR - 1] = ANIM_H_SLIDE_WOBBLE, + [SPECIES_BRONZONG - 1] = ANIM_V_SLIDE_WOBBLE_SMALL, + [SPECIES_BONSLY - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES, + [SPECIES_MIME_JR - 1] = ANIM_H_SLIDE_SLOW, + [SPECIES_HAPPINY - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, + [SPECIES_CHATOT - 1] = ANIM_V_SHAKE_TWICE, + [SPECIES_SPIRITOMB - 1] = ANIM_GROW_IN_STAGES, + [SPECIES_GIBLE - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_GABITE - 1] = ANIM_V_STRETCH, + [SPECIES_GARCHOMP - 1] = ANIM_V_SHAKE_TWICE, + [SPECIES_MUNCHLAX - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, + [SPECIES_RIOLU - 1] = ANIM_RAPID_H_HOPS, + [SPECIES_LUCARIO - 1] = ANIM_V_STRETCH, + [SPECIES_HIPPOPOTAS - 1] = ANIM_V_STRETCH, + [SPECIES_HIPPOWDON - 1] = ANIM_V_SHAKE_TWICE, + [SPECIES_SKORUPI - 1] = ANIM_H_SLIDE_SLOW, + [SPECIES_DRAPION - 1] = ANIM_V_JUMPS_BIG, + [SPECIES_CROAGUNK - 1] = ANIM_RAPID_H_HOPS, + [SPECIES_TOXICROAK - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_CARNIVINE - 1] = ANIM_FIGURE_8, + [SPECIES_FINNEON - 1] = ANIM_V_SLIDE_WOBBLE_SMALL, + [SPECIES_LUMINEON - 1] = ANIM_H_STRETCH, + [SPECIES_MANTYKE - 1] = ANIM_TWIST_TWICE, + [SPECIES_SNOVER - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ABOMASNOW - 1] = ANIM_H_SHAKE, + [SPECIES_WEAVILE - 1] = ANIM_H_VIBRATE, + [SPECIES_MAGNEZONE - 1] = ANIM_H_SLIDE_WOBBLE, + [SPECIES_LICKILICKY - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_RHYPERIOR - 1] = ANIM_V_SHAKE_TWICE, + [SPECIES_TANGROWTH - 1] = ANIM_H_STRETCH, + [SPECIES_ELECTIVIRE - 1] = ANIM_GLOW_YELLOW, + [SPECIES_MAGMORTAR - 1] = ANIM_V_STRETCH, + [SPECIES_TOGEKISS - 1] = ANIM_SWING_CONVEX, + [SPECIES_YANMEGA - 1] = ANIM_H_VIBRATE, + [SPECIES_LEAFEON - 1] = ANIM_SHRINK_GROW, + [SPECIES_GLACEON - 1] = ANIM_V_STRETCH, + [SPECIES_GLISCOR - 1] = ANIM_SWING_CONVEX, + [SPECIES_MAMOSWINE - 1] = ANIM_BACK_AND_LUNGE, + [SPECIES_PORYGON_Z - 1] = ANIM_CIRCLE_C_CLOCKWISE_SLOW, + [SPECIES_GALLADE - 1] = ANIM_H_VIBRATE, + [SPECIES_PROBOPASS - 1] = ANIM_V_SLIDE, + [SPECIES_DUSKNOIR - 1] = ANIM_H_SLIDE, + [SPECIES_FROSLASS - 1] = ANIM_V_SLIDE_WOBBLE, + [SPECIES_ROTOM - 1] = ANIM_GLOW_YELLOW, + [SPECIES_UXIE - 1] = ANIM_SWING_CONCAVE, + [SPECIES_MESPRIT - 1] = ANIM_H_SLIDE_WOBBLE, + [SPECIES_AZELF - 1] = ANIM_V_SLIDE_WOBBLE, + [SPECIES_DIALGA - 1] = ANIM_H_SHAKE, + [SPECIES_PALKIA - 1] = ANIM_V_SHAKE, + [SPECIES_HEATRAN - 1] = ANIM_GLOW_ORANGE, + [SPECIES_REGIGIGAS - 1] = ANIM_V_SHAKE, + [SPECIES_GIRATINA - 1] = ANIM_GROW_VIBRATE, + [SPECIES_CRESSELIA - 1] = ANIM_H_SLIDE_WOBBLE, + [SPECIES_PHIONE - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_MANAPHY - 1] = ANIM_SWING_CONVEX, + [SPECIES_DARKRAI - 1] = ANIM_GLOW_BLACK, + [SPECIES_SHAYMIN - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ARCEUS - 1] = ANIM_GROW_VIBRATE, // Gen 5 - [SPECIES_VICTINI - 1] = ANIM_H_JUMPS, - [SPECIES_SNIVY - 1] = ANIM_V_STRETCH, - [SPECIES_SERVINE - 1] = ANIM_V_STRETCH, - [SPECIES_SERPERIOR - 1] = ANIM_CIRCULAR_STRETCH_TWICE, - [SPECIES_TEPIG - 1] = ANIM_H_SLIDE, - [SPECIES_PIGNITE - 1] = ANIM_V_STRETCH, - [SPECIES_EMBOAR - 1] = ANIM_DEEP_V_SQUISH_AND_BOUNCE, - [SPECIES_OSHAWOTT - 1] = ANIM_H_JUMPS, - [SPECIES_DEWOTT - 1] = ANIM_H_VIBRATE, - [SPECIES_SAMUROTT - 1] = ANIM_V_SHAKE, - [SPECIES_PATRAT - 1] = ANIM_V_STRETCH, - [SPECIES_WATCHOG - 1] = ANIM_V_STRETCH, - [SPECIES_LILLIPUP - 1] = ANIM_H_JUMPS, - [SPECIES_HERDIER - 1] = ANIM_H_STRETCH, - [SPECIES_STOUTLAND - 1] = ANIM_H_SLIDE, - [SPECIES_PURRLOIN - 1] = ANIM_GROW_VIBRATE, - [SPECIES_LIEPARD - 1] = ANIM_GROW_VIBRATE, - [SPECIES_PANSAGE - 1] = ANIM_CIRCULAR_STRETCH_TWICE, - [SPECIES_SIMISAGE - 1] = ANIM_GROW_VIBRATE, - [SPECIES_PANSEAR - 1] = ANIM_V_STRETCH, - [SPECIES_SIMISEAR - 1] = ANIM_SWING_CONCAVE_FAST, - [SPECIES_PANPOUR - 1] = ANIM_GROW_VIBRATE, - [SPECIES_SIMIPOUR - 1] = ANIM_H_STRETCH, - [SPECIES_MUNNA - 1] = ANIM_RISING_WOBBLE, - [SPECIES_MUSHARNA - 1] = ANIM_ROTATE_TO_SIDES_TWICE, - [SPECIES_PIDOVE - 1] = ANIM_V_JUMPS_SMALL, - [SPECIES_TRANQUILL - 1] = ANIM_V_STRETCH, - [SPECIES_UNFEZANT - 1] = ANIM_SHRINK_GROW, - [SPECIES_BLITZLE - 1] = ANIM_V_STRETCH, - [SPECIES_ZEBSTRIKA - 1] = ANIM_BACK_AND_LUNGE, - [SPECIES_ROGGENROLA - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_BOLDORE - 1] = ANIM_H_SLIDE_SLOW, - [SPECIES_GIGALITH - 1] = ANIM_ROTATE_UP_SLAM_DOWN, - [SPECIES_WOOBAT - 1] = ANIM_FOUR_PETAL, - [SPECIES_SWOOBAT - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES_SMALL, - [SPECIES_DRILBUR - 1] = ANIM_SWING_CONCAVE_FAST_SHORT, - [SPECIES_EXCADRILL - 1] = ANIM_H_SHAKE, - [SPECIES_AUDINO - 1] = ANIM_V_STRETCH, - [SPECIES_TIMBURR - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_GURDURR - 1] = ANIM_GROW_VIBRATE, - [SPECIES_CONKELDURR - 1] = ANIM_V_SHAKE_TWICE, - [SPECIES_TYMPOLE - 1] = ANIM_H_JUMPS_V_STRETCH, - [SPECIES_PALPITOAD - 1] = ANIM_CIRCULAR_STRETCH_TWICE, - [SPECIES_SEISMITOAD - 1] = ANIM_H_JUMPS, - [SPECIES_THROH - 1] = ANIM_CIRCULAR_STRETCH_TWICE, - [SPECIES_SAWK - 1] = ANIM_GROW_VIBRATE, - [SPECIES_SEWADDLE - 1] = ANIM_CIRCLE_INTO_BG, - [SPECIES_SWADLOON - 1] = ANIM_CIRCULAR_STRETCH_TWICE, - [SPECIES_LEAVANNY - 1] = ANIM_GROW_VIBRATE, - [SPECIES_VENIPEDE - 1] = ANIM_H_SLIDE, - [SPECIES_WHIRLIPEDE - 1] = ANIM_TIP_MOVE_FORWARD, - [SPECIES_SCOLIPEDE - 1] = ANIM_H_SHAKE, - [SPECIES_COTTONEE - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_WHIMSICOTT - 1] = ANIM_SHRINK_GROW, - [SPECIES_PETILIL - 1] = ANIM_H_JUMPS_V_STRETCH, - [SPECIES_LILLIGANT - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_BASCULIN - 1] = ANIM_TIP_MOVE_FORWARD, - [SPECIES_SANDILE - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_KROKOROK - 1] = ANIM_V_STRETCH, - [SPECIES_KROOKODILE - 1] = ANIM_SWING_CONCAVE_FAST_SHORT, - [SPECIES_DARUMAKA - 1] = ANIM_SWING_CONCAVE, - [SPECIES_DARMANITAN - 1] = ANIM_CIRCULAR_STRETCH_TWICE, - [SPECIES_MARACTUS - 1] = ANIM_H_JUMPS_V_STRETCH, - [SPECIES_DWEBBLE - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_CRUSTLE - 1] = ANIM_H_SLIDE_SLOW, - [SPECIES_SCRAGGY - 1] = ANIM_V_STRETCH, - [SPECIES_SCRAFTY - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_SIGILYPH - 1] = ANIM_FIGURE_8, - [SPECIES_YAMASK - 1] = ANIM_V_SLIDE_WOBBLE, - [SPECIES_COFAGRIGUS - 1] = ANIM_GLOW_BLACK, - [SPECIES_TIRTOUGA - 1] = ANIM_RISING_WOBBLE, - [SPECIES_CARRACOSTA - 1] = ANIM_H_SHAKE_SLOW, - [SPECIES_ARCHEN - 1] = ANIM_V_JUMPS_SMALL, - [SPECIES_ARCHEOPS - 1] = ANIM_RISING_WOBBLE, - [SPECIES_TRUBBISH - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_GARBODOR - 1] = ANIM_V_STRETCH, - [SPECIES_ZORUA - 1] = ANIM_CIRCULAR_VIBRATE, - [SPECIES_ZOROARK - 1] = ANIM_FLICKER_INCREASING, - [SPECIES_MINCCINO - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_CINCCINO - 1] = ANIM_V_SLIDE, - [SPECIES_GOTHITA - 1] = ANIM_V_JUMPS_SMALL, - [SPECIES_GOTHORITA - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - [SPECIES_GOTHITELLE - 1] = ANIM_GROW_VIBRATE, - [SPECIES_SOLOSIS - 1] = ANIM_TWIST, - [SPECIES_DUOSION - 1] = ANIM_CIRCULAR_STRETCH_TWICE, - [SPECIES_REUNICLUS - 1] = ANIM_V_SLIDE_WOBBLE, - [SPECIES_DUCKLETT - 1] = ANIM_V_STRETCH, - [SPECIES_SWANNA - 1] = ANIM_V_STRETCH, - [SPECIES_VANILLITE - 1] = ANIM_H_SLIDE, - [SPECIES_VANILLISH - 1] = ANIM_GROW_VIBRATE, - [SPECIES_VANILLUXE - 1] = ANIM_GROW_VIBRATE, - [SPECIES_DEERLING - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_SAWSBUCK - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_EMOLGA - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - [SPECIES_KARRABLAST - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_ESCAVALIER - 1] = ANIM_BACK_AND_LUNGE, - [SPECIES_FOONGUS - 1] = ANIM_SWING_CONCAVE_FAST, - [SPECIES_AMOONGUSS - 1] = ANIM_H_SLIDE, - [SPECIES_FRILLISH - 1] = ANIM_RISING_WOBBLE, - [SPECIES_JELLICENT - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_ALOMOMOLA - 1] = ANIM_SWING_CONCAVE, - [SPECIES_JOLTIK - 1] = ANIM_H_SLIDE, - [SPECIES_GALVANTULA - 1] = ANIM_CIRCLE_C_CLOCKWISE_SLOW, - [SPECIES_FERROSEED - 1] = ANIM_H_VIBRATE, - [SPECIES_FERROTHORN - 1] = ANIM_V_SHAKE, - [SPECIES_KLINK - 1] = ANIM_CIRCULAR_STRETCH_TWICE, - [SPECIES_KLANG - 1] = ANIM_CIRCULAR_STRETCH_TWICE, - [SPECIES_KLINKLANG - 1] = ANIM_CIRCULAR_STRETCH_TWICE, - [SPECIES_TYNAMO - 1] = ANIM_V_SLIDE_WOBBLE_SMALL, - [SPECIES_EELEKTRIK - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_EELEKTROSS - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES_SMALL_SLOW, - [SPECIES_ELGYEM - 1] = ANIM_RISING_WOBBLE, - [SPECIES_BEHEEYEM - 1] = ANIM_GROW_VIBRATE, - [SPECIES_LITWICK - 1] = ANIM_V_STRETCH, - [SPECIES_LAMPENT - 1] = ANIM_V_SLIDE_WOBBLE, - [SPECIES_CHANDELURE - 1] = ANIM_H_SLIDE_WOBBLE, - [SPECIES_AXEW - 1] = ANIM_H_SHAKE, - [SPECIES_FRAXURE - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_HAXORUS - 1] = ANIM_H_SHAKE, - [SPECIES_CUBCHOO - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_BEARTIC - 1] = ANIM_H_SHAKE, - [SPECIES_CRYOGONAL - 1] = ANIM_SHRINK_GROW, - [SPECIES_SHELMET - 1] = ANIM_TWIST, - [SPECIES_ACCELGOR - 1] = ANIM_H_JUMPS_V_STRETCH, - [SPECIES_STUNFISK - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_MIENFOO - 1] = ANIM_H_VIBRATE, - [SPECIES_MIENSHAO - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_DRUDDIGON - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES_SMALL_SLOW, - [SPECIES_GOLETT - 1] = ANIM_V_SHAKE, - [SPECIES_GOLURK - 1] = ANIM_V_SHAKE_TWICE, - [SPECIES_PAWNIARD - 1] = ANIM_H_VIBRATE, - [SPECIES_BISHARP - 1] = ANIM_H_STRETCH, - [SPECIES_BOUFFALANT - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - [SPECIES_RUFFLET - 1] = ANIM_V_STRETCH, - [SPECIES_BRAVIARY - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_VULLABY - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_MANDIBUZZ - 1] = ANIM_V_STRETCH, - [SPECIES_HEATMOR - 1] = ANIM_H_SHAKE, - [SPECIES_DURANT - 1] = ANIM_RAPID_H_HOPS, - [SPECIES_DEINO - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_ZWEILOUS - 1] = ANIM_H_STRETCH, - [SPECIES_HYDREIGON - 1] = ANIM_RISING_WOBBLE, - [SPECIES_LARVESTA - 1] = ANIM_GLOW_ORANGE, - [SPECIES_VOLCARONA - 1] = ANIM_V_SLIDE_WOBBLE, - [SPECIES_COBALION - 1] = ANIM_V_STRETCH, - [SPECIES_TERRAKION - 1] = ANIM_V_SHAKE_TWICE, - [SPECIES_VIRIZION - 1] = ANIM_GROW_VIBRATE, - [SPECIES_TORNADUS - 1] = ANIM_FIGURE_8, - [SPECIES_THUNDURUS - 1] = ANIM_FIGURE_8, - [SPECIES_RESHIRAM - 1] = ANIM_V_SHAKE, - [SPECIES_ZEKROM - 1] = ANIM_V_SHAKE, - [SPECIES_LANDORUS - 1] = ANIM_FIGURE_8, - [SPECIES_KYUREM - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_KELDEO - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_MELOETTA - 1] = ANIM_GROW_VIBRATE, - [SPECIES_GENESECT - 1] = ANIM_H_VIBRATE, + [SPECIES_VICTINI - 1] = ANIM_H_JUMPS, + [SPECIES_SNIVY - 1] = ANIM_V_STRETCH, + [SPECIES_SERVINE - 1] = ANIM_V_STRETCH, + [SPECIES_SERPERIOR - 1] = ANIM_CIRCULAR_STRETCH_TWICE, + [SPECIES_TEPIG - 1] = ANIM_H_SLIDE, + [SPECIES_PIGNITE - 1] = ANIM_V_STRETCH, + [SPECIES_EMBOAR - 1] = ANIM_DEEP_V_SQUISH_AND_BOUNCE, + [SPECIES_OSHAWOTT - 1] = ANIM_H_JUMPS, + [SPECIES_DEWOTT - 1] = ANIM_H_VIBRATE, + [SPECIES_SAMUROTT - 1] = ANIM_V_SHAKE, + [SPECIES_PATRAT - 1] = ANIM_V_STRETCH, + [SPECIES_WATCHOG - 1] = ANIM_V_STRETCH, + [SPECIES_LILLIPUP - 1] = ANIM_H_JUMPS, + [SPECIES_HERDIER - 1] = ANIM_H_STRETCH, + [SPECIES_STOUTLAND - 1] = ANIM_H_SLIDE, + [SPECIES_PURRLOIN - 1] = ANIM_GROW_VIBRATE, + [SPECIES_LIEPARD - 1] = ANIM_GROW_VIBRATE, + [SPECIES_PANSAGE - 1] = ANIM_CIRCULAR_STRETCH_TWICE, + [SPECIES_SIMISAGE - 1] = ANIM_GROW_VIBRATE, + [SPECIES_PANSEAR - 1] = ANIM_V_STRETCH, + [SPECIES_SIMISEAR - 1] = ANIM_SWING_CONCAVE_FAST, + [SPECIES_PANPOUR - 1] = ANIM_GROW_VIBRATE, + [SPECIES_SIMIPOUR - 1] = ANIM_H_STRETCH, + [SPECIES_MUNNA - 1] = ANIM_RISING_WOBBLE, + [SPECIES_MUSHARNA - 1] = ANIM_ROTATE_TO_SIDES_TWICE, + [SPECIES_PIDOVE - 1] = ANIM_V_JUMPS_SMALL, + [SPECIES_TRANQUILL - 1] = ANIM_V_STRETCH, + [SPECIES_UNFEZANT - 1] = ANIM_SHRINK_GROW, + [SPECIES_BLITZLE - 1] = ANIM_V_STRETCH, + [SPECIES_ZEBSTRIKA - 1] = ANIM_BACK_AND_LUNGE, + [SPECIES_ROGGENROLA - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_BOLDORE - 1] = ANIM_H_SLIDE_SLOW, + [SPECIES_GIGALITH - 1] = ANIM_ROTATE_UP_SLAM_DOWN, + [SPECIES_WOOBAT - 1] = ANIM_FOUR_PETAL, + [SPECIES_SWOOBAT - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES_SMALL, + [SPECIES_DRILBUR - 1] = ANIM_SWING_CONCAVE_FAST_SHORT, + [SPECIES_EXCADRILL - 1] = ANIM_H_SHAKE, + [SPECIES_AUDINO - 1] = ANIM_V_STRETCH, + [SPECIES_TIMBURR - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_GURDURR - 1] = ANIM_GROW_VIBRATE, + [SPECIES_CONKELDURR - 1] = ANIM_V_SHAKE_TWICE, + [SPECIES_TYMPOLE - 1] = ANIM_H_JUMPS_V_STRETCH, + [SPECIES_PALPITOAD - 1] = ANIM_CIRCULAR_STRETCH_TWICE, + [SPECIES_SEISMITOAD - 1] = ANIM_H_JUMPS, + [SPECIES_THROH - 1] = ANIM_CIRCULAR_STRETCH_TWICE, + [SPECIES_SAWK - 1] = ANIM_GROW_VIBRATE, + [SPECIES_SEWADDLE - 1] = ANIM_CIRCLE_INTO_BG, + [SPECIES_SWADLOON - 1] = ANIM_CIRCULAR_STRETCH_TWICE, + [SPECIES_LEAVANNY - 1] = ANIM_GROW_VIBRATE, + [SPECIES_VENIPEDE - 1] = ANIM_H_SLIDE, + [SPECIES_WHIRLIPEDE - 1] = ANIM_TIP_MOVE_FORWARD, + [SPECIES_SCOLIPEDE - 1] = ANIM_H_SHAKE, + [SPECIES_COTTONEE - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_WHIMSICOTT - 1] = ANIM_SHRINK_GROW, + [SPECIES_PETILIL - 1] = ANIM_H_JUMPS_V_STRETCH, + [SPECIES_LILLIGANT - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_BASCULIN - 1] = ANIM_TIP_MOVE_FORWARD, + [SPECIES_SANDILE - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_KROKOROK - 1] = ANIM_V_STRETCH, + [SPECIES_KROOKODILE - 1] = ANIM_SWING_CONCAVE_FAST_SHORT, + [SPECIES_DARUMAKA - 1] = ANIM_SWING_CONCAVE, + [SPECIES_DARMANITAN - 1] = ANIM_CIRCULAR_STRETCH_TWICE, + [SPECIES_MARACTUS - 1] = ANIM_H_JUMPS_V_STRETCH, + [SPECIES_DWEBBLE - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_CRUSTLE - 1] = ANIM_H_SLIDE_SLOW, + [SPECIES_SCRAGGY - 1] = ANIM_V_STRETCH, + [SPECIES_SCRAFTY - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_SIGILYPH - 1] = ANIM_FIGURE_8, + [SPECIES_YAMASK - 1] = ANIM_V_SLIDE_WOBBLE, + [SPECIES_COFAGRIGUS - 1] = ANIM_GLOW_BLACK, + [SPECIES_TIRTOUGA - 1] = ANIM_RISING_WOBBLE, + [SPECIES_CARRACOSTA - 1] = ANIM_H_SHAKE_SLOW, + [SPECIES_ARCHEN - 1] = ANIM_V_JUMPS_SMALL, + [SPECIES_ARCHEOPS - 1] = ANIM_RISING_WOBBLE, + [SPECIES_TRUBBISH - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_GARBODOR - 1] = ANIM_V_STRETCH, + [SPECIES_ZORUA - 1] = ANIM_CIRCULAR_VIBRATE, + [SPECIES_ZOROARK - 1] = ANIM_FLICKER_INCREASING, + [SPECIES_MINCCINO - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_CINCCINO - 1] = ANIM_V_SLIDE, + [SPECIES_GOTHITA - 1] = ANIM_V_JUMPS_SMALL, + [SPECIES_GOTHORITA - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, + [SPECIES_GOTHITELLE - 1] = ANIM_GROW_VIBRATE, + [SPECIES_SOLOSIS - 1] = ANIM_TWIST, + [SPECIES_DUOSION - 1] = ANIM_CIRCULAR_STRETCH_TWICE, + [SPECIES_REUNICLUS - 1] = ANIM_V_SLIDE_WOBBLE, + [SPECIES_DUCKLETT - 1] = ANIM_V_STRETCH, + [SPECIES_SWANNA - 1] = ANIM_V_STRETCH, + [SPECIES_VANILLITE - 1] = ANIM_H_SLIDE, + [SPECIES_VANILLISH - 1] = ANIM_GROW_VIBRATE, + [SPECIES_VANILLUXE - 1] = ANIM_GROW_VIBRATE, + [SPECIES_DEERLING - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_SAWSBUCK - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_EMOLGA - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, + [SPECIES_KARRABLAST - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ESCAVALIER - 1] = ANIM_BACK_AND_LUNGE, + [SPECIES_FOONGUS - 1] = ANIM_SWING_CONCAVE_FAST, + [SPECIES_AMOONGUSS - 1] = ANIM_H_SLIDE, + [SPECIES_FRILLISH - 1] = ANIM_RISING_WOBBLE, + [SPECIES_JELLICENT - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALOMOMOLA - 1] = ANIM_SWING_CONCAVE, + [SPECIES_JOLTIK - 1] = ANIM_H_SLIDE, + [SPECIES_GALVANTULA - 1] = ANIM_CIRCLE_C_CLOCKWISE_SLOW, + [SPECIES_FERROSEED - 1] = ANIM_H_VIBRATE, + [SPECIES_FERROTHORN - 1] = ANIM_V_SHAKE, + [SPECIES_KLINK - 1] = ANIM_CIRCULAR_STRETCH_TWICE, + [SPECIES_KLANG - 1] = ANIM_CIRCULAR_STRETCH_TWICE, + [SPECIES_KLINKLANG - 1] = ANIM_CIRCULAR_STRETCH_TWICE, + [SPECIES_TYNAMO - 1] = ANIM_V_SLIDE_WOBBLE_SMALL, + [SPECIES_EELEKTRIK - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_EELEKTROSS - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES_SMALL_SLOW, + [SPECIES_ELGYEM - 1] = ANIM_RISING_WOBBLE, + [SPECIES_BEHEEYEM - 1] = ANIM_GROW_VIBRATE, + [SPECIES_LITWICK - 1] = ANIM_V_STRETCH, + [SPECIES_LAMPENT - 1] = ANIM_V_SLIDE_WOBBLE, + [SPECIES_CHANDELURE - 1] = ANIM_H_SLIDE_WOBBLE, + [SPECIES_AXEW - 1] = ANIM_H_SHAKE, + [SPECIES_FRAXURE - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_HAXORUS - 1] = ANIM_H_SHAKE, + [SPECIES_CUBCHOO - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_BEARTIC - 1] = ANIM_H_SHAKE, + [SPECIES_CRYOGONAL - 1] = ANIM_SHRINK_GROW, + [SPECIES_SHELMET - 1] = ANIM_TWIST, + [SPECIES_ACCELGOR - 1] = ANIM_H_JUMPS_V_STRETCH, + [SPECIES_STUNFISK - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_MIENFOO - 1] = ANIM_H_VIBRATE, + [SPECIES_MIENSHAO - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_DRUDDIGON - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES_SMALL_SLOW, + [SPECIES_GOLETT - 1] = ANIM_V_SHAKE, + [SPECIES_GOLURK - 1] = ANIM_V_SHAKE_TWICE, + [SPECIES_PAWNIARD - 1] = ANIM_H_VIBRATE, + [SPECIES_BISHARP - 1] = ANIM_H_STRETCH, + [SPECIES_BOUFFALANT - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, + [SPECIES_RUFFLET - 1] = ANIM_V_STRETCH, + [SPECIES_BRAVIARY - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_VULLABY - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_MANDIBUZZ - 1] = ANIM_V_STRETCH, + [SPECIES_HEATMOR - 1] = ANIM_H_SHAKE, + [SPECIES_DURANT - 1] = ANIM_RAPID_H_HOPS, + [SPECIES_DEINO - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ZWEILOUS - 1] = ANIM_H_STRETCH, + [SPECIES_HYDREIGON - 1] = ANIM_RISING_WOBBLE, + [SPECIES_LARVESTA - 1] = ANIM_GLOW_ORANGE, + [SPECIES_VOLCARONA - 1] = ANIM_V_SLIDE_WOBBLE, + [SPECIES_COBALION - 1] = ANIM_V_STRETCH, + [SPECIES_TERRAKION - 1] = ANIM_V_SHAKE_TWICE, + [SPECIES_VIRIZION - 1] = ANIM_GROW_VIBRATE, + [SPECIES_TORNADUS - 1] = ANIM_FIGURE_8, + [SPECIES_THUNDURUS - 1] = ANIM_FIGURE_8, + [SPECIES_RESHIRAM - 1] = ANIM_V_SHAKE, + [SPECIES_ZEKROM - 1] = ANIM_V_SHAKE, + [SPECIES_LANDORUS - 1] = ANIM_FIGURE_8, + [SPECIES_KYUREM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_KELDEO - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_MELOETTA - 1] = ANIM_GROW_VIBRATE, + [SPECIES_GENESECT - 1] = ANIM_H_VIBRATE, + + // Gen 6 + [SPECIES_CHESPIN - 1] = ANIM_V_JUMPS_SMALL, + [SPECIES_QUILLADIN - 1] = ANIM_LUNGE_GROW, + [SPECIES_CHESNAUGHT - 1] = ANIM_GROW_IN_STAGES, + [SPECIES_FENNEKIN - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_BRAIXEN - 1] = ANIM_GROW_VIBRATE, + [SPECIES_DELPHOX - 1] = ANIM_GROW_VIBRATE, + [SPECIES_FROAKIE - 1] = ANIM_H_JUMPS, + [SPECIES_FROGADIER - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, + [SPECIES_GRENINJA - 1] = ANIM_V_STRETCH, + [SPECIES_BUNNELBY - 1] = ANIM_V_JUMPS_SMALL, + [SPECIES_DIGGERSBY - 1] = ANIM_H_JUMPS_V_STRETCH, + [SPECIES_FLETCHLING - 1] = ANIM_RAPID_H_HOPS, + [SPECIES_FLETCHINDER - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_TALONFLAME - 1] = ANIM_SWING_CONCAVE_FAST, + [SPECIES_SCATTERBUG - 1] = ANIM_V_STRETCH, + [SPECIES_SPEWPA - 1] = ANIM_V_SHAKE, + [SPECIES_VIVILLON - 1] = ANIM_ZIGZAG_SLOW, + [SPECIES_LITLEO - 1] = ANIM_BACK_AND_LUNGE, + [SPECIES_PYROAR - 1] = ANIM_V_SHAKE, + [SPECIES_FLABEBE - 1] = ANIM_SWING_CONCAVE_FAST_SHORT, + [SPECIES_FLOETTE - 1] = ANIM_V_SLIDE_WOBBLE, + [SPECIES_FLORGES - 1] = ANIM_GROW_VIBRATE, + [SPECIES_SKIDDO - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_GOGOAT - 1] = ANIM_V_STRETCH, + [SPECIES_PANCHAM - 1] = ANIM_H_STRETCH, + [SPECIES_PANGORO - 1] = ANIM_BACK_AND_LUNGE, + [SPECIES_FURFROU - 1] = ANIM_H_SLIDE, + [SPECIES_ESPURR - 1] = ANIM_V_STRETCH, + [SPECIES_MEOWSTIC - 1] = ANIM_GROW_VIBRATE, + [SPECIES_HONEDGE - 1] = ANIM_SWING_CONVEX, + [SPECIES_DOUBLADE - 1] = ANIM_GROW_VIBRATE, + [SPECIES_AEGISLASH - 1] = ANIM_H_VIBRATE, + [SPECIES_SPRITZEE - 1] = ANIM_V_SLIDE_WOBBLE, + [SPECIES_AROMATISSE - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, + [SPECIES_SWIRLIX - 1] = ANIM_H_JUMPS_V_STRETCH, + [SPECIES_SLURPUFF - 1] = ANIM_V_STRETCH, + [SPECIES_INKAY - 1] = ANIM_V_SLIDE_WOBBLE, + [SPECIES_MALAMAR - 1] = ANIM_CIRCULAR_STRETCH_TWICE, + [SPECIES_BINACLE - 1] = ANIM_H_SLIDE, + [SPECIES_BARBARACLE - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_SKRELP - 1] = ANIM_V_SLIDE_WOBBLE_SMALL, + [SPECIES_DRAGALGE - 1] = ANIM_FRONT_FLIP, + [SPECIES_CLAUNCHER - 1] = ANIM_TIP_MOVE_FORWARD, + [SPECIES_CLAWITZER - 1] = ANIM_CIRCLE_C_CLOCKWISE_SLOW, + [SPECIES_HELIOPTILE - 1] = ANIM_GLOW_YELLOW, + [SPECIES_HELIOLISK - 1] = ANIM_RAPID_H_HOPS, + [SPECIES_TYRUNT - 1] = ANIM_V_SHAKE, + [SPECIES_TYRANTRUM - 1] = ANIM_V_SHAKE, + [SPECIES_AMAURA - 1] = ANIM_H_STRETCH, + [SPECIES_AURORUS - 1] = ANIM_GROW_VIBRATE, + [SPECIES_SYLVEON - 1] = ANIM_SHRINK_GROW, + [SPECIES_HAWLUCHA - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, + [SPECIES_DEDENNE - 1] = ANIM_GLOW_YELLOW, + [SPECIES_CARBINK - 1] = ANIM_ZIGZAG_SLOW, + [SPECIES_GOOMY - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, + [SPECIES_SLIGGOO - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_GOODRA - 1] = ANIM_V_SHAKE, + [SPECIES_KLEFKI - 1] = ANIM_FOUR_PETAL, + [SPECIES_PHANTUMP - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_TREVENANT - 1] = ANIM_H_SLIDE_SLOW, + [SPECIES_PUMPKABOO - 1] = ANIM_V_SLIDE_WOBBLE, + [SPECIES_GOURGEIST - 1] = ANIM_SHRINK_GROW, + [SPECIES_BERGMITE - 1] = ANIM_LUNGE_GROW, + [SPECIES_AVALUGG - 1] = ANIM_V_SHAKE, + [SPECIES_NOIBAT - 1] = ANIM_RISING_WOBBLE, + [SPECIES_NOIVERN - 1] = ANIM_V_STRETCH, + [SPECIES_XERNEAS - 1] = ANIM_GROW_VIBRATE, + [SPECIES_YVELTAL - 1] = ANIM_FRONT_FLIP, + [SPECIES_ZYGARDE - 1] = ANIM_TIP_MOVE_FORWARD, + [SPECIES_DIANCIE - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_HOOPA - 1] = ANIM_ZIGZAG_SLOW, + [SPECIES_VOLCANION - 1] = ANIM_V_SHAKE_TWICE, - //Gen 6 - [SPECIES_CHESPIN - 1] = ANIM_V_JUMPS_SMALL, - [SPECIES_QUILLADIN - 1] = ANIM_LUNGE_GROW, - [SPECIES_CHESNAUGHT - 1] = ANIM_GROW_IN_STAGES, - [SPECIES_FENNEKIN - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_BRAIXEN - 1] = ANIM_GROW_VIBRATE, - [SPECIES_DELPHOX - 1] = ANIM_GROW_VIBRATE, - [SPECIES_FROAKIE - 1] = ANIM_H_JUMPS, - [SPECIES_FROGADIER - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - [SPECIES_GRENINJA - 1] = ANIM_V_STRETCH, - [SPECIES_BUNNELBY - 1] = ANIM_V_JUMPS_SMALL, - [SPECIES_DIGGERSBY - 1] = ANIM_H_JUMPS_V_STRETCH, - [SPECIES_FLETCHLING - 1] = ANIM_RAPID_H_HOPS, - [SPECIES_FLETCHINDER - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_TALONFLAME - 1] = ANIM_SWING_CONCAVE_FAST, - [SPECIES_SCATTERBUG - 1] = ANIM_V_STRETCH, - [SPECIES_SPEWPA - 1] = ANIM_V_SHAKE, - [SPECIES_VIVILLON - 1] = ANIM_ZIGZAG_SLOW, - [SPECIES_LITLEO - 1] = ANIM_BACK_AND_LUNGE, - [SPECIES_PYROAR - 1] = ANIM_V_SHAKE, - [SPECIES_FLABEBE - 1] = ANIM_SWING_CONCAVE_FAST_SHORT, - [SPECIES_FLOETTE - 1] = ANIM_V_SLIDE_WOBBLE, - [SPECIES_FLORGES - 1] = ANIM_GROW_VIBRATE, - [SPECIES_SKIDDO - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_GOGOAT - 1] = ANIM_V_STRETCH, - [SPECIES_PANCHAM - 1] = ANIM_H_STRETCH, - [SPECIES_PANGORO - 1] = ANIM_BACK_AND_LUNGE, - [SPECIES_FURFROU - 1] = ANIM_H_SLIDE, - [SPECIES_ESPURR - 1] = ANIM_V_STRETCH, - [SPECIES_MEOWSTIC - 1] = ANIM_GROW_VIBRATE, - [SPECIES_HONEDGE - 1] = ANIM_SWING_CONVEX, - [SPECIES_DOUBLADE - 1] = ANIM_GROW_VIBRATE, - [SPECIES_AEGISLASH - 1] = ANIM_H_VIBRATE, - [SPECIES_SPRITZEE - 1] = ANIM_V_SLIDE_WOBBLE, - [SPECIES_AROMATISSE - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - [SPECIES_SWIRLIX - 1] = ANIM_H_JUMPS_V_STRETCH, - [SPECIES_SLURPUFF - 1] = ANIM_V_STRETCH, - [SPECIES_INKAY - 1] = ANIM_V_SLIDE_WOBBLE, - [SPECIES_MALAMAR - 1] = ANIM_CIRCULAR_STRETCH_TWICE, - [SPECIES_BINACLE - 1] = ANIM_H_SLIDE, - [SPECIES_BARBARACLE - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_SKRELP - 1] = ANIM_V_SLIDE_WOBBLE_SMALL, - [SPECIES_DRAGALGE - 1] = ANIM_FRONT_FLIP, - [SPECIES_CLAUNCHER - 1] = ANIM_TIP_MOVE_FORWARD, - [SPECIES_CLAWITZER - 1] = ANIM_CIRCLE_C_CLOCKWISE_SLOW, - [SPECIES_HELIOPTILE - 1] = ANIM_GLOW_YELLOW, - [SPECIES_HELIOLISK - 1] = ANIM_RAPID_H_HOPS, - [SPECIES_TYRUNT - 1] = ANIM_V_SHAKE, - [SPECIES_TYRANTRUM - 1] = ANIM_V_SHAKE, - [SPECIES_AMAURA - 1] = ANIM_H_STRETCH, - [SPECIES_AURORUS - 1] = ANIM_GROW_VIBRATE, - [SPECIES_SYLVEON - 1] = ANIM_SHRINK_GROW, - [SPECIES_HAWLUCHA - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - [SPECIES_DEDENNE - 1] = ANIM_GLOW_YELLOW, - [SPECIES_CARBINK - 1] = ANIM_ZIGZAG_SLOW, - [SPECIES_GOOMY - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - [SPECIES_SLIGGOO - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_GOODRA - 1] = ANIM_V_SHAKE, - [SPECIES_KLEFKI - 1] = ANIM_FOUR_PETAL, - [SPECIES_PHANTUMP - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_TREVENANT - 1] = ANIM_H_SLIDE_SLOW, - [SPECIES_PUMPKABOO - 1] = ANIM_V_SLIDE_WOBBLE, - [SPECIES_GOURGEIST - 1] = ANIM_SHRINK_GROW, - [SPECIES_BERGMITE - 1] = ANIM_LUNGE_GROW, - [SPECIES_AVALUGG - 1] = ANIM_V_SHAKE, - [SPECIES_NOIBAT - 1] = ANIM_RISING_WOBBLE, - [SPECIES_NOIVERN - 1] = ANIM_V_STRETCH, - [SPECIES_XERNEAS - 1] = ANIM_GROW_VIBRATE, - [SPECIES_YVELTAL - 1] = ANIM_FRONT_FLIP, - [SPECIES_ZYGARDE - 1] = ANIM_TIP_MOVE_FORWARD, - [SPECIES_DIANCIE - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_HOOPA - 1] = ANIM_ZIGZAG_SLOW, - [SPECIES_VOLCANION - 1] = ANIM_V_SHAKE_TWICE, // Gen 7 - [SPECIES_ROWLET - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_DARTRIX - 1] = ANIM_H_STRETCH, - [SPECIES_DECIDUEYE - 1] = ANIM_H_VIBRATE, - [SPECIES_LITTEN - 1] = ANIM_H_STRETCH, - [SPECIES_TORRACAT - 1] = ANIM_V_STRETCH, - [SPECIES_INCINEROAR - 1] = ANIM_V_SHAKE, - [SPECIES_POPPLIO - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - [SPECIES_BRIONNE - 1] = ANIM_SHRINK_GROW, - [SPECIES_PRIMARINA - 1] = ANIM_SHAKE_GLOW_BLUE_SLOW, - [SPECIES_PIKIPEK - 1] = ANIM_V_JUMPS_SMALL, - [SPECIES_TRUMBEAK - 1] = ANIM_H_STRETCH, - [SPECIES_TOUCANNON - 1] = ANIM_SHRINK_GROW_VIBRATE_FAST, - [SPECIES_YUNGOOS - 1] = ANIM_V_STRETCH, - [SPECIES_GUMSHOOS - 1] = ANIM_H_SHAKE, - [SPECIES_GRUBBIN - 1] = ANIM_H_SLIDE, - [SPECIES_CHARJABUG - 1] = ANIM_SHAKE_FLASH_YELLOW_SLOW, - [SPECIES_VIKAVOLT - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES, - [SPECIES_CRABRAWLER - 1] = ANIM_V_SHAKE, - [SPECIES_CRABOMINABLE - 1] = ANIM_SHRINK_GROW_VIBRATE_FAST, - [SPECIES_ORICORIO - 1] = ANIM_CONCAVE_ARC_SMALL, - [SPECIES_CUTIEFLY - 1] = ANIM_V_SLIDE_WOBBLE, - [SPECIES_RIBOMBEE - 1] = ANIM_CONVEX_DOUBLE_ARC_TWICE, - [SPECIES_ROCKRUFF - 1] = ANIM_V_STRETCH, - [SPECIES_LYCANROC - 1] = ANIM_V_SHAKE, - [SPECIES_WISHIWASHI - 1] = ANIM_V_SLIDE_WOBBLE_SMALL, - [SPECIES_MAREANIE - 1] = ANIM_GLOW_PURPLE, - [SPECIES_TOXAPEX - 1] = ANIM_SHAKE_GLOW_PURPLE_SLOW, - [SPECIES_MUDBRAY - 1] = ANIM_V_SHAKE, - [SPECIES_MUDSDALE - 1] = ANIM_V_SHAKE_TWICE, - [SPECIES_DEWPIDER - 1] = ANIM_SHRINK_GROW, - [SPECIES_ARAQUANID - 1] = ANIM_H_SHAKE, - [SPECIES_FOMANTIS - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - [SPECIES_LURANTIS - 1] = ANIM_GROW_VIBRATE, - [SPECIES_MORELULL - 1] = ANIM_SHAKE_FLASH_YELLOW, - [SPECIES_SHIINOTIC - 1] = ANIM_SHAKE_GLOW_WHITE_SLOW, - [SPECIES_SALANDIT - 1] = ANIM_GLOW_RED, - [SPECIES_SALAZZLE - 1] = ANIM_GROW_VIBRATE, - [SPECIES_STUFFUL - 1] = ANIM_V_SHAKE, - [SPECIES_BEWEAR - 1] = ANIM_H_STRETCH, - [SPECIES_BOUNSWEET - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_STEENEE - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_TSAREENA - 1] = ANIM_SHRINK_GROW, - [SPECIES_COMFEY - 1] = ANIM_H_SLIDE_WOBBLE, - [SPECIES_ORANGURU - 1] = ANIM_SHRINK_GROW, - [SPECIES_PASSIMIAN - 1] = ANIM_V_SHAKE, - [SPECIES_WIMPOD - 1] = ANIM_V_SHAKE_H_SLIDE_FAST, - [SPECIES_GOLISOPOD - 1] = ANIM_SHRINK_GROW_VIBRATE_FAST, - [SPECIES_SANDYGAST - 1] = ANIM_CIRCULAR_STRETCH_TWICE, - [SPECIES_PALOSSAND - 1] = ANIM_H_VIBRATE, - [SPECIES_PYUKUMUKU - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_TYPE_NULL - 1] = ANIM_H_SHAKE, - [SPECIES_SILVALLY - 1] = ANIM_V_SHAKE, - [SPECIES_MINIOR - 1] = ANIM_TUMBLING_FRONT_FLIP_TWICE, - [SPECIES_KOMALA - 1] = ANIM_H_DIP, - [SPECIES_TURTONATOR - 1] = ANIM_SHAKE_GLOW_RED, - [SPECIES_TOGEDEMARU - 1] = ANIM_SHAKE_FLASH_YELLOW, - [SPECIES_MIMIKYU - 1] = ANIM_DEEP_V_SQUISH_AND_BOUNCE, - [SPECIES_BRUXISH - 1] = ANIM_RISING_WOBBLE, - [SPECIES_DRAMPA - 1] = ANIM_V_SHAKE, - [SPECIES_DHELMISE - 1] = ANIM_SWING_CONVEX, - [SPECIES_JANGMO_O - 1] = ANIM_H_STRETCH, - [SPECIES_HAKAMO_O - 1] = ANIM_H_STRETCH, - [SPECIES_KOMMO_O - 1] = ANIM_GROW_STUTTER_TWICE, - [SPECIES_TAPU_KOKO - 1] = ANIM_TRIANGLE_DOWN_TWICE, - [SPECIES_TAPU_LELE - 1] = ANIM_V_SLIDE_WOBBLE_SMALL, - [SPECIES_TAPU_BULU - 1] = ANIM_V_SHAKE_TWICE, - [SPECIES_TAPU_FINI - 1] = ANIM_SHAKE_GLOW_BLUE_SLOW, - [SPECIES_COSMOG - 1] = ANIM_H_JUMPS_V_STRETCH, - [SPECIES_COSMOEM - 1] = ANIM_RISING_WOBBLE, - [SPECIES_SOLGALEO - 1] = ANIM_GROW_VIBRATE, - [SPECIES_LUNALA - 1] = ANIM_CIRCULAR_VIBRATE, - [SPECIES_NIHILEGO - 1] = ANIM_CIRCULAR_STRETCH_TWICE, - [SPECIES_BUZZWOLE - 1] = ANIM_SHRINK_GROW_VIBRATE_FAST, - [SPECIES_PHEROMOSA - 1] = ANIM_SHRINK_GROW, - [SPECIES_XURKITREE - 1] = ANIM_SHAKE_FLASH_YELLOW_FAST, - [SPECIES_CELESTEELA - 1] = ANIM_GROW_STUTTER_SLOW, - [SPECIES_KARTANA - 1] = ANIM_H_VIBRATE, - [SPECIES_GUZZLORD - 1] = ANIM_SHRINK_GROW_VIBRATE_FAST, - [SPECIES_NECROZMA - 1] = ANIM_GROW_VIBRATE, - [SPECIES_MAGEARNA - 1] = ANIM_H_SLIDE_SLOW, - [SPECIES_MARSHADOW - 1] = ANIM_V_SHAKE, - [SPECIES_POIPOLE - 1] = ANIM_SHAKE_GLOW_PURPLE_SLOW, - [SPECIES_NAGANADEL - 1] = ANIM_TRIANGLE_DOWN_TWICE, - [SPECIES_STAKATAKA - 1] = ANIM_GROW_VIBRATE, - [SPECIES_BLACEPHALON - 1] = ANIM_SHAKE_GLOW_RED, - [SPECIES_ZERAORA - 1] = ANIM_V_STRETCH, - [SPECIES_MELTAN - 1] = ANIM_GROW_STUTTER_SLOW, - [SPECIES_MELMETAL - 1] = ANIM_GROW_VIBRATE, + [SPECIES_ROWLET - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_DARTRIX - 1] = ANIM_H_STRETCH, + [SPECIES_DECIDUEYE - 1] = ANIM_H_VIBRATE, + [SPECIES_LITTEN - 1] = ANIM_H_STRETCH, + [SPECIES_TORRACAT - 1] = ANIM_V_STRETCH, + [SPECIES_INCINEROAR - 1] = ANIM_V_SHAKE, + [SPECIES_POPPLIO - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, + [SPECIES_BRIONNE - 1] = ANIM_SHRINK_GROW, + [SPECIES_PRIMARINA - 1] = ANIM_SHAKE_GLOW_BLUE_SLOW, + [SPECIES_PIKIPEK - 1] = ANIM_V_JUMPS_SMALL, + [SPECIES_TRUMBEAK - 1] = ANIM_H_STRETCH, + [SPECIES_TOUCANNON - 1] = ANIM_SHRINK_GROW_VIBRATE_FAST, + [SPECIES_YUNGOOS - 1] = ANIM_V_STRETCH, + [SPECIES_GUMSHOOS - 1] = ANIM_H_SHAKE, + [SPECIES_GRUBBIN - 1] = ANIM_H_SLIDE, + [SPECIES_CHARJABUG - 1] = ANIM_SHAKE_FLASH_YELLOW_SLOW, + [SPECIES_VIKAVOLT - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES, + [SPECIES_CRABRAWLER - 1] = ANIM_V_SHAKE, + [SPECIES_CRABOMINABLE - 1] = ANIM_SHRINK_GROW_VIBRATE_FAST, + [SPECIES_ORICORIO - 1] = ANIM_CONCAVE_ARC_SMALL, + [SPECIES_CUTIEFLY - 1] = ANIM_V_SLIDE_WOBBLE, + [SPECIES_RIBOMBEE - 1] = ANIM_CONVEX_DOUBLE_ARC_TWICE, + [SPECIES_ROCKRUFF - 1] = ANIM_V_STRETCH, + [SPECIES_LYCANROC - 1] = ANIM_V_SHAKE, + [SPECIES_WISHIWASHI - 1] = ANIM_V_SLIDE_WOBBLE_SMALL, + [SPECIES_MAREANIE - 1] = ANIM_GLOW_PURPLE, + [SPECIES_TOXAPEX - 1] = ANIM_SHAKE_GLOW_PURPLE_SLOW, + [SPECIES_MUDBRAY - 1] = ANIM_V_SHAKE, + [SPECIES_MUDSDALE - 1] = ANIM_V_SHAKE_TWICE, + [SPECIES_DEWPIDER - 1] = ANIM_SHRINK_GROW, + [SPECIES_ARAQUANID - 1] = ANIM_H_SHAKE, + [SPECIES_FOMANTIS - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, + [SPECIES_LURANTIS - 1] = ANIM_GROW_VIBRATE, + [SPECIES_MORELULL - 1] = ANIM_SHAKE_FLASH_YELLOW, + [SPECIES_SHIINOTIC - 1] = ANIM_SHAKE_GLOW_WHITE_SLOW, + [SPECIES_SALANDIT - 1] = ANIM_GLOW_RED, + [SPECIES_SALAZZLE - 1] = ANIM_GROW_VIBRATE, + [SPECIES_STUFFUL - 1] = ANIM_V_SHAKE, + [SPECIES_BEWEAR - 1] = ANIM_H_STRETCH, + [SPECIES_BOUNSWEET - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_STEENEE - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_TSAREENA - 1] = ANIM_SHRINK_GROW, + [SPECIES_COMFEY - 1] = ANIM_H_SLIDE_WOBBLE, + [SPECIES_ORANGURU - 1] = ANIM_SHRINK_GROW, + [SPECIES_PASSIMIAN - 1] = ANIM_V_SHAKE, + [SPECIES_WIMPOD - 1] = ANIM_V_SHAKE_H_SLIDE_FAST, + [SPECIES_GOLISOPOD - 1] = ANIM_SHRINK_GROW_VIBRATE_FAST, + [SPECIES_SANDYGAST - 1] = ANIM_CIRCULAR_STRETCH_TWICE, + [SPECIES_PALOSSAND - 1] = ANIM_H_VIBRATE, + [SPECIES_PYUKUMUKU - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_TYPE_NULL - 1] = ANIM_H_SHAKE, + [SPECIES_SILVALLY - 1] = ANIM_V_SHAKE, + [SPECIES_MINIOR - 1] = ANIM_TUMBLING_FRONT_FLIP_TWICE, + [SPECIES_KOMALA - 1] = ANIM_H_DIP, + [SPECIES_TURTONATOR - 1] = ANIM_SHAKE_GLOW_RED, + [SPECIES_TOGEDEMARU - 1] = ANIM_SHAKE_FLASH_YELLOW, + [SPECIES_MIMIKYU - 1] = ANIM_DEEP_V_SQUISH_AND_BOUNCE, + [SPECIES_BRUXISH - 1] = ANIM_RISING_WOBBLE, + [SPECIES_DRAMPA - 1] = ANIM_V_SHAKE, + [SPECIES_DHELMISE - 1] = ANIM_SWING_CONVEX, + [SPECIES_JANGMO_O - 1] = ANIM_H_STRETCH, + [SPECIES_HAKAMO_O - 1] = ANIM_H_STRETCH, + [SPECIES_KOMMO_O - 1] = ANIM_GROW_STUTTER_TWICE, + [SPECIES_TAPU_KOKO - 1] = ANIM_TRIANGLE_DOWN_TWICE, + [SPECIES_TAPU_LELE - 1] = ANIM_V_SLIDE_WOBBLE_SMALL, + [SPECIES_TAPU_BULU - 1] = ANIM_V_SHAKE_TWICE, + [SPECIES_TAPU_FINI - 1] = ANIM_SHAKE_GLOW_BLUE_SLOW, + [SPECIES_COSMOG - 1] = ANIM_H_JUMPS_V_STRETCH, + [SPECIES_COSMOEM - 1] = ANIM_RISING_WOBBLE, + [SPECIES_SOLGALEO - 1] = ANIM_GROW_VIBRATE, + [SPECIES_LUNALA - 1] = ANIM_CIRCULAR_VIBRATE, + [SPECIES_NIHILEGO - 1] = ANIM_CIRCULAR_STRETCH_TWICE, + [SPECIES_BUZZWOLE - 1] = ANIM_SHRINK_GROW_VIBRATE_FAST, + [SPECIES_PHEROMOSA - 1] = ANIM_SHRINK_GROW, + [SPECIES_XURKITREE - 1] = ANIM_SHAKE_FLASH_YELLOW_FAST, + [SPECIES_CELESTEELA - 1] = ANIM_GROW_STUTTER_SLOW, + [SPECIES_KARTANA - 1] = ANIM_H_VIBRATE, + [SPECIES_GUZZLORD - 1] = ANIM_SHRINK_GROW_VIBRATE_FAST, + [SPECIES_NECROZMA - 1] = ANIM_GROW_VIBRATE, + [SPECIES_MAGEARNA - 1] = ANIM_H_SLIDE_SLOW, + [SPECIES_MARSHADOW - 1] = ANIM_V_SHAKE, + [SPECIES_POIPOLE - 1] = ANIM_SHAKE_GLOW_PURPLE_SLOW, + [SPECIES_NAGANADEL - 1] = ANIM_TRIANGLE_DOWN_TWICE, + [SPECIES_STAKATAKA - 1] = ANIM_GROW_VIBRATE, + [SPECIES_BLACEPHALON - 1] = ANIM_SHAKE_GLOW_RED, + [SPECIES_ZERAORA - 1] = ANIM_V_STRETCH, + [SPECIES_MELTAN - 1] = ANIM_GROW_STUTTER_SLOW, + [SPECIES_MELMETAL - 1] = ANIM_GROW_VIBRATE, // Gen 8 Todo: Assign proper ones. - [SPECIES_GROOKEY - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_THWACKEY - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_RILLABOOM - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_SCORBUNNY - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_RABOOT - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_CINDERACE - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_SOBBLE - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_DRIZZILE - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_INTELEON - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_SKWOVET - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_GREEDENT - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_ROOKIDEE - 1] = ANIM_H_VIBRATE, - [SPECIES_CORVISQUIRE - 1] = ANIM_CIRCLE_INTO_BG, - [SPECIES_CORVIKNIGHT - 1] = ANIM_H_VIBRATE, - [SPECIES_BLIPBUG - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_DOTTLER - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_ORBEETLE - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_NICKIT - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_THIEVUL - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_GOSSIFLEUR - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_ELDEGOSS - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_WOOLOO - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_DUBWOOL - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_CHEWTLE - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_DREDNAW - 1] = ANIM_GROW_VIBRATE, - [SPECIES_YAMPER - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_BOLTUND - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_ROLYCOLY - 1] = ANIM_H_SLIDE_SLOW, - [SPECIES_CARKOL - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_COALOSSAL - 1] = ANIM_GLOW_RED, - [SPECIES_APPLIN - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_FLAPPLE - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_APPLETUN - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_SILICOBRA - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_SANDACONDA - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_CRAMORANT - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_ARROKUDA - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_BARRASKEWDA - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_TOXEL - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_TOXTRICITY - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_SIZZLIPEDE - 1] = ANIM_H_VIBRATE, - [SPECIES_CENTISKORCH - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_CLOBBOPUS - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_GRAPPLOCT - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_SINISTEA - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_POLTEAGEIST - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_HATENNA - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_HATTREM - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_HATTERENE - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_IMPIDIMP - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_MORGREM - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_GRIMMSNARL - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_OBSTAGOON - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_PERRSERKER - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_CURSOLA - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_SIRFETCHD - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_MR_RIME - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_RUNERIGUS - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_MILCERY - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_ALCREMIE - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_FALINKS - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_PINCURCHIN - 1] = ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_SNOM - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_FROSMOTH - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_STONJOURNER - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_EISCUE - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_INDEEDEE - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_MORPEKO - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_CUFANT - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_COPPERAJAH - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_DRACOZOLT - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_ARCTOZOLT - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_DRACOVISH - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_ARCTOVISH - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_DURALUDON - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_DREEPY - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_DRAKLOAK - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_DRAGAPULT - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_ZACIAN - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_ZAMAZENTA - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_ETERNATUS - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_KUBFU - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_URSHIFU - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_ZARUDE - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_REGIELEKI - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_REGIDRAGO - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_GLASTRIER - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_SPECTRIER - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_CALYREX - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_WYRDEER - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_KLEAVOR - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_URSALUNA - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_BASCULEGION - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_SNEASLER - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_OVERQWIL - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_ENAMORUS - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_GROOKEY - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_THWACKEY - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_RILLABOOM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_SCORBUNNY - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_RABOOT - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_CINDERACE - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_SOBBLE - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_DRIZZILE - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_INTELEON - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_SKWOVET - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_GREEDENT - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ROOKIDEE - 1] = ANIM_H_VIBRATE, + [SPECIES_CORVISQUIRE - 1] = ANIM_CIRCLE_INTO_BG, + [SPECIES_CORVIKNIGHT - 1] = ANIM_H_VIBRATE, + [SPECIES_BLIPBUG - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_DOTTLER - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ORBEETLE - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_NICKIT - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_THIEVUL - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_GOSSIFLEUR - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ELDEGOSS - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_WOOLOO - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_DUBWOOL - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_CHEWTLE - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_DREDNAW - 1] = ANIM_GROW_VIBRATE, + [SPECIES_YAMPER - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_BOLTUND - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ROLYCOLY - 1] = ANIM_H_SLIDE_SLOW, + [SPECIES_CARKOL - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_COALOSSAL - 1] = ANIM_GLOW_RED, + [SPECIES_APPLIN - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_FLAPPLE - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_APPLETUN - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_SILICOBRA - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_SANDACONDA - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_CRAMORANT - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ARROKUDA - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_BARRASKEWDA - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_TOXEL - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_TOXTRICITY - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_SIZZLIPEDE - 1] = ANIM_H_VIBRATE, + [SPECIES_CENTISKORCH - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_CLOBBOPUS - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_GRAPPLOCT - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_SINISTEA - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_POLTEAGEIST - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_HATENNA - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_HATTREM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_HATTERENE - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_IMPIDIMP - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_MORGREM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_GRIMMSNARL - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_OBSTAGOON - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_PERRSERKER - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_CURSOLA - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_SIRFETCHD - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_MR_RIME - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_RUNERIGUS - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_MILCERY - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_FALINKS - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_PINCURCHIN - 1] = ANIM_SHRINK_GROW_VIBRATE, + [SPECIES_SNOM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_FROSMOTH - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_STONJOURNER - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_EISCUE - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_INDEEDEE - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_MORPEKO - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_CUFANT - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_COPPERAJAH - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_DRACOZOLT - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ARCTOZOLT - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_DRACOVISH - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ARCTOVISH - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_DURALUDON - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_DREEPY - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_DRAKLOAK - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_DRAGAPULT - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ZACIAN - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ZAMAZENTA - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ETERNATUS - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_KUBFU - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_URSHIFU - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ZARUDE - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_REGIELEKI - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_REGIDRAGO - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_GLASTRIER - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_SPECTRIER - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_CALYREX - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_WYRDEER - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_KLEAVOR - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_URSALUNA - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_BASCULEGION - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_SNEASLER - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_OVERQWIL - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ENAMORUS - 1] = ANIM_V_SQUISH_AND_BOUNCE, - //Gen 3 Forms - [SPECIES_CASTFORM_SUNNY - 1] = ANIM_GROW_VIBRATE, - [SPECIES_CASTFORM_RAINY - 1] = ANIM_SWING_CONVEX_FAST, - [SPECIES_CASTFORM_SNOWY - 1] = ANIM_V_STRETCH, - [SPECIES_DEOXYS_ATTACK - 1] = ANIM_GROW_VIBRATE, - [SPECIES_DEOXYS_DEFENSE - 1] = ANIM_GROW_VIBRATE, - [SPECIES_DEOXYS_SPEED - 1] = ANIM_GROW_VIBRATE, - //Gen 4 Forms - [SPECIES_BURMY_SANDY_CLOAK - 1] = ANIM_V_STRETCH, - [SPECIES_BURMY_TRASH_CLOAK - 1] = ANIM_V_STRETCH, - [SPECIES_WORMADAM_SANDY_CLOAK - 1] = ANIM_SWING_CONVEX_FAST_SHORT, - [SPECIES_WORMADAM_TRASH_CLOAK - 1] = ANIM_SWING_CONVEX_FAST_SHORT, - [SPECIES_CHERRIM_SUNSHINE - 1] = ANIM_H_JUMPS_V_STRETCH, - [SPECIES_SHELLOS_EAST_SEA - 1] = ANIM_V_STRETCH, - [SPECIES_GASTRODON_EAST_SEA - 1] = ANIM_CIRCULAR_STRETCH_TWICE, - [SPECIES_ROTOM_HEAT - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_ROTOM_WASH - 1] = ANIM_V_JUMPS_SMALL, - [SPECIES_ROTOM_FROST - 1] = ANIM_H_STRETCH, - [SPECIES_ROTOM_FAN - 1] = ANIM_H_SLIDE_WOBBLE, - [SPECIES_ROTOM_MOW - 1] = ANIM_TIP_MOVE_FORWARD, - [SPECIES_GIRATINA_ORIGIN - 1] = ANIM_LUNGE_GROW, - [SPECIES_SHAYMIN_SKY - 1] = ANIM_V_STRETCH, - [SPECIES_ARCEUS_FIGHTING - 1] = ANIM_GROW_VIBRATE, - [SPECIES_ARCEUS_FLYING - 1] = ANIM_GROW_VIBRATE, - [SPECIES_ARCEUS_POISON - 1] = ANIM_GROW_VIBRATE, - [SPECIES_ARCEUS_GROUND - 1] = ANIM_GROW_VIBRATE, - [SPECIES_ARCEUS_ROCK - 1] = ANIM_GROW_VIBRATE, - [SPECIES_ARCEUS_BUG - 1] = ANIM_GROW_VIBRATE, - [SPECIES_ARCEUS_GHOST - 1] = ANIM_GROW_VIBRATE, - [SPECIES_ARCEUS_STEEL - 1] = ANIM_GROW_VIBRATE, - [SPECIES_ARCEUS_FIRE - 1] = ANIM_GROW_VIBRATE, - [SPECIES_ARCEUS_WATER - 1] = ANIM_GROW_VIBRATE, - [SPECIES_ARCEUS_GRASS - 1] = ANIM_GROW_VIBRATE, - [SPECIES_ARCEUS_ELECTRIC - 1] = ANIM_GROW_VIBRATE, - [SPECIES_ARCEUS_PSYCHIC - 1] = ANIM_GROW_VIBRATE, - [SPECIES_ARCEUS_ICE - 1] = ANIM_GROW_VIBRATE, - [SPECIES_ARCEUS_DRAGON - 1] = ANIM_GROW_VIBRATE, - [SPECIES_ARCEUS_DARK - 1] = ANIM_GROW_VIBRATE, - [SPECIES_ARCEUS_FAIRY - 1] = ANIM_GROW_VIBRATE, - //Gen 5 Forms - [SPECIES_BASCULIN_BLUE_STRIPED - 1] = ANIM_TIP_MOVE_FORWARD, - [SPECIES_DARMANITAN_ZEN_MODE - 1] = ANIM_GROW_VIBRATE, - [SPECIES_DEERLING_SUMMER - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_DEERLING_AUTUMN - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_DEERLING_WINTER - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_SAWSBUCK_SUMMER - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_SAWSBUCK_AUTUMN - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_SAWSBUCK_WINTER - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_TORNADUS_THERIAN - 1] = ANIM_V_STRETCH, - [SPECIES_THUNDURUS_THERIAN - 1] = ANIM_RISING_WOBBLE, - [SPECIES_LANDORUS_THERIAN - 1] = ANIM_CIRCULAR_VIBRATE, - [SPECIES_KYUREM_WHITE - 1] = ANIM_H_SHAKE, - [SPECIES_KYUREM_BLACK - 1] = ANIM_V_SHAKE, - [SPECIES_KELDEO_RESOLUTE - 1] = ANIM_V_STRETCH, - [SPECIES_MELOETTA_PIROUETTE - 1] = ANIM_H_SLIDE_SLOW, - [SPECIES_GENESECT_DOUSE_DRIVE - 1] = ANIM_H_VIBRATE, - [SPECIES_GENESECT_SHOCK_DRIVE - 1] = ANIM_H_VIBRATE, - [SPECIES_GENESECT_BURN_DRIVE - 1] = ANIM_H_VIBRATE, - [SPECIES_GENESECT_CHILL_DRIVE - 1] = ANIM_H_VIBRATE, - //Gen 6 Forms + // Gen 3 Forms + [SPECIES_CASTFORM_SUNNY - 1] = ANIM_GROW_VIBRATE, + [SPECIES_CASTFORM_RAINY - 1] = ANIM_SWING_CONVEX_FAST, + [SPECIES_CASTFORM_SNOWY - 1] = ANIM_V_STRETCH, + [SPECIES_DEOXYS_ATTACK - 1] = ANIM_GROW_VIBRATE, + [SPECIES_DEOXYS_DEFENSE - 1] = ANIM_GROW_VIBRATE, + [SPECIES_DEOXYS_SPEED - 1] = ANIM_GROW_VIBRATE, + + // Gen 4 Forms + [SPECIES_BURMY_SANDY_CLOAK - 1] = ANIM_V_STRETCH, + [SPECIES_BURMY_TRASH_CLOAK - 1] = ANIM_V_STRETCH, + [SPECIES_WORMADAM_SANDY_CLOAK - 1] = ANIM_SWING_CONVEX_FAST_SHORT, + [SPECIES_WORMADAM_TRASH_CLOAK - 1] = ANIM_SWING_CONVEX_FAST_SHORT, + [SPECIES_CHERRIM_SUNSHINE - 1] = ANIM_H_JUMPS_V_STRETCH, + [SPECIES_SHELLOS_EAST_SEA - 1] = ANIM_V_STRETCH, + [SPECIES_GASTRODON_EAST_SEA - 1] = ANIM_CIRCULAR_STRETCH_TWICE, + [SPECIES_ROTOM_HEAT - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ROTOM_WASH - 1] = ANIM_V_JUMPS_SMALL, + [SPECIES_ROTOM_FROST - 1] = ANIM_H_STRETCH, + [SPECIES_ROTOM_FAN - 1] = ANIM_H_SLIDE_WOBBLE, + [SPECIES_ROTOM_MOW - 1] = ANIM_TIP_MOVE_FORWARD, + [SPECIES_GIRATINA_ORIGIN - 1] = ANIM_LUNGE_GROW, + [SPECIES_SHAYMIN_SKY - 1] = ANIM_V_STRETCH, + [SPECIES_ARCEUS_FIGHTING - 1] = ANIM_GROW_VIBRATE, + [SPECIES_ARCEUS_FLYING - 1] = ANIM_GROW_VIBRATE, + [SPECIES_ARCEUS_POISON - 1] = ANIM_GROW_VIBRATE, + [SPECIES_ARCEUS_GROUND - 1] = ANIM_GROW_VIBRATE, + [SPECIES_ARCEUS_ROCK - 1] = ANIM_GROW_VIBRATE, + [SPECIES_ARCEUS_BUG - 1] = ANIM_GROW_VIBRATE, + [SPECIES_ARCEUS_GHOST - 1] = ANIM_GROW_VIBRATE, + [SPECIES_ARCEUS_STEEL - 1] = ANIM_GROW_VIBRATE, + [SPECIES_ARCEUS_FIRE - 1] = ANIM_GROW_VIBRATE, + [SPECIES_ARCEUS_WATER - 1] = ANIM_GROW_VIBRATE, + [SPECIES_ARCEUS_GRASS - 1] = ANIM_GROW_VIBRATE, + [SPECIES_ARCEUS_ELECTRIC - 1] = ANIM_GROW_VIBRATE, + [SPECIES_ARCEUS_PSYCHIC - 1] = ANIM_GROW_VIBRATE, + [SPECIES_ARCEUS_ICE - 1] = ANIM_GROW_VIBRATE, + [SPECIES_ARCEUS_DRAGON - 1] = ANIM_GROW_VIBRATE, + [SPECIES_ARCEUS_DARK - 1] = ANIM_GROW_VIBRATE, + [SPECIES_ARCEUS_FAIRY - 1] = ANIM_GROW_VIBRATE, + + // Gen 5 Forms + [SPECIES_BASCULIN_BLUE_STRIPED - 1] = ANIM_TIP_MOVE_FORWARD, + [SPECIES_BASCULIN_WHITE_STRIPED - 1] = ANIM_TIP_MOVE_FORWARD, + [SPECIES_DARMANITAN_ZEN_MODE - 1] = ANIM_GROW_VIBRATE, + [SPECIES_DEERLING_SUMMER - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_DEERLING_AUTUMN - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_DEERLING_WINTER - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_SAWSBUCK_SUMMER - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_SAWSBUCK_AUTUMN - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_SAWSBUCK_WINTER - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_TORNADUS_THERIAN - 1] = ANIM_V_STRETCH, + [SPECIES_THUNDURUS_THERIAN - 1] = ANIM_RISING_WOBBLE, + [SPECIES_LANDORUS_THERIAN - 1] = ANIM_CIRCULAR_VIBRATE, + [SPECIES_KYUREM_WHITE - 1] = ANIM_H_SHAKE, + [SPECIES_KYUREM_BLACK - 1] = ANIM_V_SHAKE, + [SPECIES_KELDEO_RESOLUTE - 1] = ANIM_V_STRETCH, + [SPECIES_MELOETTA_PIROUETTE - 1] = ANIM_H_SLIDE_SLOW, + [SPECIES_GENESECT_DOUSE_DRIVE - 1] = ANIM_H_VIBRATE, + [SPECIES_GENESECT_SHOCK_DRIVE - 1] = ANIM_H_VIBRATE, + [SPECIES_GENESECT_BURN_DRIVE - 1] = ANIM_H_VIBRATE, + [SPECIES_GENESECT_CHILL_DRIVE - 1] = ANIM_H_VIBRATE, + + // Gen 6 Forms [SPECIES_GRENINJA_ASH - 1] = ANIM_FLICKER_INCREASING, + [SPECIES_GRENINJA_BATTLE_BOND - 1] = ANIM_FLICKER_INCREASING, [SPECIES_VIVILLON_POLAR - 1] = ANIM_ZIGZAG_SLOW, [SPECIES_VIVILLON_TUNDRA - 1] = ANIM_ZIGZAG_SLOW, [SPECIES_VIVILLON_CONTINENTAL - 1] = ANIM_ZIGZAG_SLOW, @@ -3005,49 +3015,202 @@ const u8 sMonFrontAnimIdsTable[NUM_SPECIES - 1] = [SPECIES_ZYGARDE_50_POWER_CONSTRUCT - 1] = ANIM_TIP_MOVE_FORWARD, [SPECIES_ZYGARDE_COMPLETE - 1] = ANIM_GROW_VIBRATE, [SPECIES_HOOPA_UNBOUND - 1] = ANIM_GROW_IN_STAGES, - //Gen 7 Forms - [SPECIES_ORICORIO_POM_POM - 1] = ANIM_V_SQUISH_AND_BOUNCE, //Todo - [SPECIES_ORICORIO_PAU - 1] = ANIM_V_SQUISH_AND_BOUNCE, //Todo - [SPECIES_ORICORIO_SENSU - 1] = ANIM_V_SQUISH_AND_BOUNCE, //Todo - [SPECIES_ROCKRUFF_OWN_TEMPO - 1] = ANIM_V_STRETCH, - [SPECIES_LYCANROC_MIDNIGHT - 1] = ANIM_V_SQUISH_AND_BOUNCE, //Todo - [SPECIES_LYCANROC_DUSK - 1] = ANIM_V_SQUISH_AND_BOUNCE, //Todo - [SPECIES_WISHIWASHI_SCHOOL - 1] = ANIM_V_SQUISH_AND_BOUNCE, //Todo - [SPECIES_SILVALLY_FIGHTING - 1] = ANIM_V_SHAKE, - [SPECIES_SILVALLY_FLYING - 1] = ANIM_V_SHAKE, - [SPECIES_SILVALLY_POISON - 1] = ANIM_V_SHAKE, - [SPECIES_SILVALLY_GROUND - 1] = ANIM_V_SHAKE, - [SPECIES_SILVALLY_ROCK - 1] = ANIM_V_SHAKE, - [SPECIES_SILVALLY_BUG - 1] = ANIM_V_SHAKE, - [SPECIES_SILVALLY_GHOST - 1] = ANIM_V_SHAKE, - [SPECIES_SILVALLY_STEEL - 1] = ANIM_V_SHAKE, - [SPECIES_SILVALLY_FIRE - 1] = ANIM_V_SHAKE, - [SPECIES_SILVALLY_WATER - 1] = ANIM_V_SHAKE, - [SPECIES_SILVALLY_GRASS - 1] = ANIM_V_SHAKE, - [SPECIES_SILVALLY_ELECTRIC - 1] = ANIM_V_SHAKE, - [SPECIES_SILVALLY_PSYCHIC - 1] = ANIM_V_SHAKE, - [SPECIES_SILVALLY_ICE - 1] = ANIM_V_SHAKE, - [SPECIES_SILVALLY_DRAGON - 1] = ANIM_V_SHAKE, - [SPECIES_SILVALLY_DARK - 1] = ANIM_V_SHAKE, - [SPECIES_SILVALLY_FAIRY - 1] = ANIM_V_SHAKE, - [SPECIES_MINIOR_METEOR_ORANGE - 1] = ANIM_TUMBLING_FRONT_FLIP_TWICE, - [SPECIES_MINIOR_METEOR_YELLOW - 1] = ANIM_TUMBLING_FRONT_FLIP_TWICE, - [SPECIES_MINIOR_METEOR_GREEN - 1] = ANIM_TUMBLING_FRONT_FLIP_TWICE, - [SPECIES_MINIOR_METEOR_BLUE - 1] = ANIM_TUMBLING_FRONT_FLIP_TWICE, - [SPECIES_MINIOR_METEOR_INDIGO - 1] = ANIM_TUMBLING_FRONT_FLIP_TWICE, - [SPECIES_MINIOR_METEOR_VIOLET - 1] = ANIM_TUMBLING_FRONT_FLIP_TWICE, - [SPECIES_MINIOR_CORE_RED - 1] = ANIM_TUMBLING_FRONT_FLIP_TWICE, - [SPECIES_MINIOR_CORE_ORANGE - 1] = ANIM_TUMBLING_FRONT_FLIP_TWICE, - [SPECIES_MINIOR_CORE_YELLOW - 1] = ANIM_TUMBLING_FRONT_FLIP_TWICE, - [SPECIES_MINIOR_CORE_GREEN - 1] = ANIM_TUMBLING_FRONT_FLIP_TWICE, - [SPECIES_MINIOR_CORE_BLUE - 1] = ANIM_TUMBLING_FRONT_FLIP_TWICE, - [SPECIES_MINIOR_CORE_INDIGO - 1] = ANIM_TUMBLING_FRONT_FLIP_TWICE, - [SPECIES_MINIOR_CORE_VIOLET - 1] = ANIM_TUMBLING_FRONT_FLIP_TWICE, - [SPECIES_MIMIKYU_BUSTED - 1] = ANIM_DEEP_V_SQUISH_AND_BOUNCE, - [SPECIES_NECROZMA_DUSK_MANE - 1] = ANIM_V_SQUISH_AND_BOUNCE, //Todo - [SPECIES_NECROZMA_DAWN_WINGS - 1] = ANIM_V_SQUISH_AND_BOUNCE, //Todo - [SPECIES_NECROZMA_ULTRA - 1] = ANIM_V_SQUISH_AND_BOUNCE, //Todo - [SPECIES_MAGEARNA_ORIGINAL_COLOR - 1] = ANIM_H_SLIDE_SLOW, + + // Gen 7 Forms + [SPECIES_ORICORIO_POM_POM - 1] = ANIM_V_SQUISH_AND_BOUNCE, //Todo + [SPECIES_ORICORIO_PAU - 1] = ANIM_V_SQUISH_AND_BOUNCE, //Todo + [SPECIES_ORICORIO_SENSU - 1] = ANIM_V_SQUISH_AND_BOUNCE, //Todo + [SPECIES_ROCKRUFF_OWN_TEMPO - 1] = ANIM_V_STRETCH, + [SPECIES_LYCANROC_MIDNIGHT - 1] = ANIM_V_SQUISH_AND_BOUNCE, //Todo + [SPECIES_LYCANROC_DUSK - 1] = ANIM_V_SQUISH_AND_BOUNCE, //Todo + [SPECIES_WISHIWASHI_SCHOOL - 1] = ANIM_V_SQUISH_AND_BOUNCE, //Todo + [SPECIES_SILVALLY_FIGHTING - 1] = ANIM_V_SHAKE, + [SPECIES_SILVALLY_FLYING - 1] = ANIM_V_SHAKE, + [SPECIES_SILVALLY_POISON - 1] = ANIM_V_SHAKE, + [SPECIES_SILVALLY_GROUND - 1] = ANIM_V_SHAKE, + [SPECIES_SILVALLY_ROCK - 1] = ANIM_V_SHAKE, + [SPECIES_SILVALLY_BUG - 1] = ANIM_V_SHAKE, + [SPECIES_SILVALLY_GHOST - 1] = ANIM_V_SHAKE, + [SPECIES_SILVALLY_STEEL - 1] = ANIM_V_SHAKE, + [SPECIES_SILVALLY_FIRE - 1] = ANIM_V_SHAKE, + [SPECIES_SILVALLY_WATER - 1] = ANIM_V_SHAKE, + [SPECIES_SILVALLY_GRASS - 1] = ANIM_V_SHAKE, + [SPECIES_SILVALLY_ELECTRIC - 1] = ANIM_V_SHAKE, + [SPECIES_SILVALLY_PSYCHIC - 1] = ANIM_V_SHAKE, + [SPECIES_SILVALLY_ICE - 1] = ANIM_V_SHAKE, + [SPECIES_SILVALLY_DRAGON - 1] = ANIM_V_SHAKE, + [SPECIES_SILVALLY_DARK - 1] = ANIM_V_SHAKE, + [SPECIES_SILVALLY_FAIRY - 1] = ANIM_V_SHAKE, + [SPECIES_MINIOR_METEOR_ORANGE - 1] = ANIM_TUMBLING_FRONT_FLIP_TWICE, + [SPECIES_MINIOR_METEOR_YELLOW - 1] = ANIM_TUMBLING_FRONT_FLIP_TWICE, + [SPECIES_MINIOR_METEOR_GREEN - 1] = ANIM_TUMBLING_FRONT_FLIP_TWICE, + [SPECIES_MINIOR_METEOR_BLUE - 1] = ANIM_TUMBLING_FRONT_FLIP_TWICE, + [SPECIES_MINIOR_METEOR_INDIGO - 1] = ANIM_TUMBLING_FRONT_FLIP_TWICE, + [SPECIES_MINIOR_METEOR_VIOLET - 1] = ANIM_TUMBLING_FRONT_FLIP_TWICE, + [SPECIES_MINIOR_CORE_RED - 1] = ANIM_TUMBLING_FRONT_FLIP_TWICE, + [SPECIES_MINIOR_CORE_ORANGE - 1] = ANIM_TUMBLING_FRONT_FLIP_TWICE, + [SPECIES_MINIOR_CORE_YELLOW - 1] = ANIM_TUMBLING_FRONT_FLIP_TWICE, + [SPECIES_MINIOR_CORE_GREEN - 1] = ANIM_TUMBLING_FRONT_FLIP_TWICE, + [SPECIES_MINIOR_CORE_BLUE - 1] = ANIM_TUMBLING_FRONT_FLIP_TWICE, + [SPECIES_MINIOR_CORE_INDIGO - 1] = ANIM_TUMBLING_FRONT_FLIP_TWICE, + [SPECIES_MINIOR_CORE_VIOLET - 1] = ANIM_TUMBLING_FRONT_FLIP_TWICE, + [SPECIES_MIMIKYU_BUSTED - 1] = ANIM_DEEP_V_SQUISH_AND_BOUNCE, + [SPECIES_NECROZMA_DUSK_MANE - 1] = ANIM_V_SQUISH_AND_BOUNCE, //Todo + [SPECIES_NECROZMA_DAWN_WINGS - 1] = ANIM_V_SQUISH_AND_BOUNCE, //Todo + [SPECIES_NECROZMA_ULTRA - 1] = ANIM_V_SQUISH_AND_BOUNCE, //Todo + [SPECIES_MAGEARNA_ORIGINAL_COLOR - 1] = ANIM_H_SLIDE_SLOW, + + // Gen 8 Forms + [SPECIES_CRAMORANT_GULPING - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_CRAMORANT_GORGING - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_TOXTRICITY_LOW_KEY - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_SINISTEA_ANTIQUE - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_POLTEAGEIST_ANTIQUE - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_RUBY_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_MATCHA_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_MINT_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_LEMON_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_SALTED_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_RUBY_SWIRL - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_CARAMEL_SWIRL - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_RAINBOW_SWIRL - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_EISCUE_NOICE_FACE - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_INDEEDEE_FEMALE - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_MORPEKO_HANGRY - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ZACIAN_CROWNED_SWORD - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ZAMAZENTA_CROWNED_SHIELD - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ETERNATUS_ETERNAMAX - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_URSHIFU_RAPID_STRIKE_STYLE - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ZARUDE_DADA - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_CALYREX_ICE_RIDER - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_CALYREX_SHADOW_RIDER - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_BASCULEGION_FEMALE - 1] = ANIM_V_SQUISH_AND_BOUNCE, + + // Alolan Forms + [SPECIES_RATTATA_ALOLAN - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_RATICATE_ALOLAN - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_RAICHU_ALOLAN - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_SANDSHREW_ALOLAN - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_SANDSLASH_ALOLAN - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_VULPIX_ALOLAN - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_NINETALES_ALOLAN - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_DIGLETT_ALOLAN - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_DUGTRIO_ALOLAN - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_MEOWTH_ALOLAN - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_PERSIAN_ALOLAN - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_GEODUDE_ALOLAN - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_GRAVELER_ALOLAN - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_GOLEM_ALOLAN - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_GRIMER_ALOLAN - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_MUK_ALOLAN - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_EXEGGUTOR_ALOLAN - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_MAROWAK_ALOLAN - 1] = ANIM_V_SQUISH_AND_BOUNCE, + + // Galarian Forms + [SPECIES_MEOWTH_GALARIAN - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_PONYTA_GALARIAN - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_RAPIDASH_GALARIAN - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_SLOWPOKE_GALARIAN - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_SLOWBRO_GALARIAN - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_FARFETCHD_GALARIAN - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_WEEZING_GALARIAN - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_MR_MIME_GALARIAN - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ARTICUNO_GALARIAN - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ZAPDOS_GALARIAN - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_MOLTRES_GALARIAN - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_SLOWKING_GALARIAN - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_CORSOLA_GALARIAN - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ZIGZAGOON_GALARIAN - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_LINOONE_GALARIAN - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_DARUMAKA_GALARIAN - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_DARMANITAN_GALARIAN - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_YAMASK_GALARIAN - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_STUNFISK_GALARIAN - 1] = ANIM_V_SQUISH_AND_BOUNCE, + + // Hisuian Forms + [SPECIES_GROWLITHE_HISUIAN - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ARCANINE_HISUIAN - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_VOLTORB_HISUIAN - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ELECTRODE_HISUIAN - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_TYPHLOSION_HISUIAN - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_QWILFISH_HISUIAN - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_SNEASEL_HISUIAN - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_SAMUROTT_HISUIAN - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_LILLIGANT_HISUIAN - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ZORUA_HISUIAN - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ZOROARK_HISUIAN - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_BRAVIARY_HISUIAN - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_SLIGGOO_HISUIAN - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_GOODRA_HISUIAN - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_AVALUGG_HISUIAN - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_DECIDUEYE_HISUIAN - 1] = ANIM_V_SQUISH_AND_BOUNCE, + + // Mega/Primal Forms + [SPECIES_VENUSAUR_MEGA - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_CHARIZARD_MEGA_X - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_CHARIZARD_MEGA_Y - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_BLASTOISE_MEGA - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_BEEDRILL_MEGA - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_PIDGEOT_MEGA - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALAKAZAM_MEGA - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_SLOWBRO_MEGA - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_GENGAR_MEGA - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_KANGASKHAN_MEGA - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_PINSIR_MEGA - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_GYARADOS_MEGA - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_AERODACTYL_MEGA - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_MEWTWO_MEGA_X - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_MEWTWO_MEGA_Y - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_AMPHAROS_MEGA - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_STEELIX_MEGA - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_SCIZOR_MEGA - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_HERACROSS_MEGA - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_HOUNDOOM_MEGA - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_TYRANITAR_MEGA - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_SCEPTILE_MEGA - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_BLAZIKEN_MEGA - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_SWAMPERT_MEGA - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_GARDEVOIR_MEGA - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_SABLEYE_MEGA - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_MAWILE_MEGA - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_AGGRON_MEGA - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_MEDICHAM_MEGA - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_MANECTRIC_MEGA - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_SHARPEDO_MEGA - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_CAMERUPT_MEGA - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALTARIA_MEGA - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_BANETTE_MEGA - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ABSOL_MEGA - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_GLALIE_MEGA - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_SALAMENCE_MEGA - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_METAGROSS_MEGA - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_LATIAS_MEGA - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_LATIOS_MEGA - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_LOPUNNY_MEGA - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_GARCHOMP_MEGA - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_LUCARIO_MEGA - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ABOMASNOW_MEGA - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_GALLADE_MEGA - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_RAYQUAZA_MEGA - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_KYOGRE_PRIMAL - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_GROUDON_PRIMAL - 1] = ANIM_V_SQUISH_AND_BOUNCE, + + // Other Forms + [SPECIES_PIKACHU_COSPLAY - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_PIKACHU_ROCK_STAR - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_PIKACHU_BELLE - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_PIKACHU_POP_STAR - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_PIKACHU_PH_D - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_PIKACHU_LIBRE - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_PIKACHU_ORIGINAL_CAP - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_PIKACHU_HOENN_CAP - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_PIKACHU_SINNOH_CAP - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_PIKACHU_UNOVA_CAP - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_PIKACHU_KALOS_CAP - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_PIKACHU_ALOLA_CAP - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_PIKACHU_PARTNER_CAP - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_PIKACHU_WORLD_CAP - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_PICHU_SPIKY_EARED - 1] = ANIM_V_SQUISH_AND_BOUNCE, }; static const u8 sMonAnimationDelayTable[NUM_SPECIES - 1] = diff --git a/src/pokemon_animation.c b/src/pokemon_animation.c index aff987f9fe..958bc3ffeb 100644 --- a/src/pokemon_animation.c +++ b/src/pokemon_animation.c @@ -366,6 +366,8 @@ static const u8 sSpeciesToBackAnimSet[NUM_SPECIES] = [SPECIES_DRAGONITE] = BACK_ANIM_V_SHAKE, [SPECIES_MEWTWO] = BACK_ANIM_GROW_STUTTER, [SPECIES_MEW] = BACK_ANIM_CONCAVE_ARC_SMALL, + + // Gen 2 [SPECIES_CHIKORITA] = BACK_ANIM_CONCAVE_ARC_SMALL, [SPECIES_BAYLEEF] = BACK_ANIM_H_SLIDE, [SPECIES_MEGANIUM] = BACK_ANIM_V_SHAKE, @@ -466,6 +468,8 @@ static const u8 sSpeciesToBackAnimSet[NUM_SPECIES] = [SPECIES_LUGIA] = BACK_ANIM_SHAKE_GLOW_BLUE, [SPECIES_HO_OH] = BACK_ANIM_SHAKE_GLOW_RED, [SPECIES_CELEBI] = BACK_ANIM_SHAKE_GLOW_GREEN, + + // Gen 3 [SPECIES_TREECKO] = BACK_ANIM_CONCAVE_ARC_LARGE, [SPECIES_GROVYLE] = BACK_ANIM_JOLT_RIGHT, [SPECIES_SCEPTILE] = BACK_ANIM_V_SHAKE, @@ -490,103 +494,101 @@ static const u8 sSpeciesToBackAnimSet[NUM_SPECIES] = [SPECIES_SEEDOT] = BACK_ANIM_DIP_RIGHT_SIDE, [SPECIES_NUZLEAF] = BACK_ANIM_V_SHAKE, [SPECIES_SHIFTRY] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_NINCADA] = BACK_ANIM_V_SHAKE_H_SLIDE, - [SPECIES_NINJASK] = BACK_ANIM_H_VIBRATE, - [SPECIES_SHEDINJA] = BACK_ANIM_SHRINK_GROW_VIBRATE, [SPECIES_TAILLOW] = BACK_ANIM_CONCAVE_ARC_SMALL, [SPECIES_SWELLOW] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_SHROOMISH] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_BRELOOM] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_SPINDA] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, [SPECIES_WINGULL] = BACK_ANIM_CONVEX_DOUBLE_ARC, [SPECIES_PELIPPER] = BACK_ANIM_CONVEX_DOUBLE_ARC, + [SPECIES_RALTS] = BACK_ANIM_SHRINK_GROW_VIBRATE, + [SPECIES_KIRLIA] = BACK_ANIM_SHRINK_GROW_VIBRATE, + [SPECIES_GARDEVOIR] = BACK_ANIM_SHRINK_GROW_VIBRATE, [SPECIES_SURSKIT] = BACK_ANIM_H_SPRING, [SPECIES_MASQUERAIN] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_WAILMER] = BACK_ANIM_SHAKE_GLOW_BLUE, - [SPECIES_WAILORD] = BACK_ANIM_SHAKE_GLOW_BLUE, - [SPECIES_SKITTY] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_DELCATTY] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_KECLEON] = BACK_ANIM_H_VIBRATE, - [SPECIES_BALTOY] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_CLAYDOL] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_NOSEPASS] = BACK_ANIM_V_SHAKE_LOW, - [SPECIES_TORKOAL] = BACK_ANIM_SHAKE_GLOW_RED, - [SPECIES_SABLEYE] = BACK_ANIM_H_VIBRATE, - [SPECIES_BARBOACH] = BACK_ANIM_V_STRETCH, - [SPECIES_WHISCASH] = BACK_ANIM_V_SHAKE, - [SPECIES_LUVDISC] = BACK_ANIM_H_SPRING_REPEATED, - [SPECIES_CORPHISH] = BACK_ANIM_TRIANGLE_DOWN, - [SPECIES_CRAWDAUNT] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_FEEBAS] = BACK_ANIM_H_SPRING, - [SPECIES_MILOTIC] = BACK_ANIM_SHAKE_GLOW_BLUE, - [SPECIES_CARVANHA] = BACK_ANIM_H_SPRING_REPEATED, - [SPECIES_SHARPEDO] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_TRAPINCH] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_VIBRAVA] = BACK_ANIM_H_VIBRATE, - [SPECIES_FLYGON] = BACK_ANIM_TRIANGLE_DOWN, - [SPECIES_MAKUHITA] = BACK_ANIM_V_SHAKE_LOW, - [SPECIES_HARIYAMA] = BACK_ANIM_V_SHAKE_LOW, - [SPECIES_ELECTRIKE] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_MANECTRIC] = BACK_ANIM_V_SHAKE, - [SPECIES_NUMEL] = BACK_ANIM_V_SHAKE_LOW, - [SPECIES_CAMERUPT] = BACK_ANIM_SHAKE_GLOW_RED, - [SPECIES_SPHEAL] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_SEALEO] = BACK_ANIM_V_SHAKE, - [SPECIES_WALREIN] = BACK_ANIM_V_SHAKE, - [SPECIES_CACNEA] = BACK_ANIM_V_SHAKE_H_SLIDE, - [SPECIES_CACTURNE] = BACK_ANIM_H_SHAKE, - [SPECIES_SNORUNT] = BACK_ANIM_TRIANGLE_DOWN, - [SPECIES_GLALIE] = BACK_ANIM_TRIANGLE_DOWN, - [SPECIES_LUNATONE] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_SOLROCK] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_AZURILL] = BACK_ANIM_CONCAVE_ARC_LARGE, - [SPECIES_SPOINK] = BACK_ANIM_CONCAVE_ARC_LARGE, - [SPECIES_GRUMPIG] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_PLUSLE] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_MINUN] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_MAWILE] = BACK_ANIM_V_SHAKE, - [SPECIES_MEDITITE] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_MEDICHAM] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_SWABLU] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_ALTARIA] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_WYNAUT] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_DUSKULL] = BACK_ANIM_H_VIBRATE, - [SPECIES_DUSCLOPS] = BACK_ANIM_H_VIBRATE, - [SPECIES_ROSELIA] = BACK_ANIM_SHAKE_GLOW_GREEN, + [SPECIES_SHROOMISH] = BACK_ANIM_DIP_RIGHT_SIDE, + [SPECIES_BRELOOM] = BACK_ANIM_JOLT_RIGHT, [SPECIES_SLAKOTH] = BACK_ANIM_H_SLIDE, [SPECIES_VIGOROTH] = BACK_ANIM_CONCAVE_ARC_LARGE, [SPECIES_SLAKING] = BACK_ANIM_H_SHAKE, - [SPECIES_GULPIN] = BACK_ANIM_V_STRETCH, - [SPECIES_SWALOT] = BACK_ANIM_V_STRETCH, - [SPECIES_TROPIUS] = BACK_ANIM_V_SHAKE_LOW, + [SPECIES_NINCADA] = BACK_ANIM_V_SHAKE_H_SLIDE, + [SPECIES_NINJASK] = BACK_ANIM_H_VIBRATE, + [SPECIES_SHEDINJA] = BACK_ANIM_SHRINK_GROW_VIBRATE, [SPECIES_WHISMUR] = BACK_ANIM_DIP_RIGHT_SIDE, [SPECIES_LOUDRED] = BACK_ANIM_V_SHAKE, [SPECIES_EXPLOUD] = BACK_ANIM_GROW_STUTTER, - [SPECIES_CLAMPERL] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_HUNTAIL] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_GOREBYSS] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_ABSOL] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_SHUPPET] = BACK_ANIM_H_VIBRATE, - [SPECIES_BANETTE] = BACK_ANIM_H_VIBRATE, - [SPECIES_SEVIPER] = BACK_ANIM_V_STRETCH, - [SPECIES_ZANGOOSE] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_RELICANTH] = BACK_ANIM_H_SLIDE, + [SPECIES_MAKUHITA] = BACK_ANIM_V_SHAKE_LOW, + [SPECIES_HARIYAMA] = BACK_ANIM_V_SHAKE_LOW, + [SPECIES_AZURILL] = BACK_ANIM_CONCAVE_ARC_LARGE, + [SPECIES_NOSEPASS] = BACK_ANIM_V_SHAKE_LOW, + [SPECIES_SKITTY] = BACK_ANIM_DIP_RIGHT_SIDE, + [SPECIES_DELCATTY] = BACK_ANIM_CONCAVE_ARC_SMALL, + [SPECIES_SABLEYE] = BACK_ANIM_H_VIBRATE, + [SPECIES_MAWILE] = BACK_ANIM_V_SHAKE, [SPECIES_ARON] = BACK_ANIM_JOLT_RIGHT, [SPECIES_LAIRON] = BACK_ANIM_V_SHAKE, [SPECIES_AGGRON] = BACK_ANIM_V_SHAKE_LOW, - [SPECIES_CASTFORM] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_CASTFORM_SUNNY] = BACK_ANIM_SHAKE_GLOW_RED, - [SPECIES_CASTFORM_RAINY] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_CASTFORM_SNOWY] = BACK_ANIM_TRIANGLE_DOWN, + [SPECIES_MEDITITE] = BACK_ANIM_SHRINK_GROW_VIBRATE, + [SPECIES_MEDICHAM] = BACK_ANIM_SHRINK_GROW_VIBRATE, + [SPECIES_ELECTRIKE] = BACK_ANIM_JOLT_RIGHT, + [SPECIES_MANECTRIC] = BACK_ANIM_V_SHAKE, + [SPECIES_PLUSLE] = BACK_ANIM_CONCAVE_ARC_SMALL, + [SPECIES_MINUN] = BACK_ANIM_CONCAVE_ARC_SMALL, [SPECIES_VOLBEAT] = BACK_ANIM_CONVEX_DOUBLE_ARC, [SPECIES_ILLUMISE] = BACK_ANIM_CONVEX_DOUBLE_ARC, + [SPECIES_ROSELIA] = BACK_ANIM_SHAKE_GLOW_GREEN, + [SPECIES_GULPIN] = BACK_ANIM_V_STRETCH, + [SPECIES_SWALOT] = BACK_ANIM_V_STRETCH, + [SPECIES_CARVANHA] = BACK_ANIM_H_SPRING_REPEATED, + [SPECIES_SHARPEDO] = BACK_ANIM_JOLT_RIGHT, + [SPECIES_WAILMER] = BACK_ANIM_SHAKE_GLOW_BLUE, + [SPECIES_WAILORD] = BACK_ANIM_SHAKE_GLOW_BLUE, + [SPECIES_NUMEL] = BACK_ANIM_V_SHAKE_LOW, + [SPECIES_CAMERUPT] = BACK_ANIM_SHAKE_GLOW_RED, + [SPECIES_TORKOAL] = BACK_ANIM_SHAKE_GLOW_RED, + [SPECIES_SPOINK] = BACK_ANIM_CONCAVE_ARC_LARGE, + [SPECIES_GRUMPIG] = BACK_ANIM_SHRINK_GROW_VIBRATE, + [SPECIES_SPINDA] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, + [SPECIES_TRAPINCH] = BACK_ANIM_DIP_RIGHT_SIDE, + [SPECIES_VIBRAVA] = BACK_ANIM_H_VIBRATE, + [SPECIES_FLYGON] = BACK_ANIM_TRIANGLE_DOWN, + [SPECIES_CACNEA] = BACK_ANIM_V_SHAKE_H_SLIDE, + [SPECIES_CACTURNE] = BACK_ANIM_H_SHAKE, + [SPECIES_SWABLU] = BACK_ANIM_CONVEX_DOUBLE_ARC, + [SPECIES_ALTARIA] = BACK_ANIM_CONVEX_DOUBLE_ARC, + [SPECIES_ZANGOOSE] = BACK_ANIM_JOLT_RIGHT, + [SPECIES_SEVIPER] = BACK_ANIM_V_STRETCH, + [SPECIES_LUNATONE] = BACK_ANIM_DIP_RIGHT_SIDE, + [SPECIES_SOLROCK] = BACK_ANIM_DIP_RIGHT_SIDE, + [SPECIES_BARBOACH] = BACK_ANIM_V_STRETCH, + [SPECIES_WHISCASH] = BACK_ANIM_V_SHAKE, + [SPECIES_CORPHISH] = BACK_ANIM_TRIANGLE_DOWN, + [SPECIES_CRAWDAUNT] = BACK_ANIM_JOLT_RIGHT, + [SPECIES_BALTOY] = BACK_ANIM_DIP_RIGHT_SIDE, + [SPECIES_CLAYDOL] = BACK_ANIM_SHRINK_GROW_VIBRATE, [SPECIES_LILEEP] = BACK_ANIM_H_STRETCH, [SPECIES_CRADILY] = BACK_ANIM_V_STRETCH, [SPECIES_ANORITH] = BACK_ANIM_TRIANGLE_DOWN, [SPECIES_ARMALDO] = BACK_ANIM_V_SHAKE, - [SPECIES_RALTS] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_KIRLIA] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_GARDEVOIR] = BACK_ANIM_SHRINK_GROW_VIBRATE, + [SPECIES_FEEBAS] = BACK_ANIM_H_SPRING, + [SPECIES_MILOTIC] = BACK_ANIM_SHAKE_GLOW_BLUE, + [SPECIES_CASTFORM] = BACK_ANIM_CONVEX_DOUBLE_ARC, + [SPECIES_KECLEON] = BACK_ANIM_H_VIBRATE, + [SPECIES_SHUPPET] = BACK_ANIM_H_VIBRATE, + [SPECIES_BANETTE] = BACK_ANIM_H_VIBRATE, + [SPECIES_DUSKULL] = BACK_ANIM_H_VIBRATE, + [SPECIES_DUSCLOPS] = BACK_ANIM_H_VIBRATE, + [SPECIES_TROPIUS] = BACK_ANIM_V_SHAKE_LOW, + [SPECIES_CHIMECHO] = BACK_ANIM_CONVEX_DOUBLE_ARC, + [SPECIES_ABSOL] = BACK_ANIM_SHRINK_GROW_VIBRATE, + [SPECIES_WYNAUT] = BACK_ANIM_CONCAVE_ARC_SMALL, + [SPECIES_SNORUNT] = BACK_ANIM_TRIANGLE_DOWN, + [SPECIES_GLALIE] = BACK_ANIM_TRIANGLE_DOWN, + [SPECIES_SPHEAL] = BACK_ANIM_DIP_RIGHT_SIDE, + [SPECIES_SEALEO] = BACK_ANIM_V_SHAKE, + [SPECIES_WALREIN] = BACK_ANIM_V_SHAKE, + [SPECIES_CLAMPERL] = BACK_ANIM_DIP_RIGHT_SIDE, + [SPECIES_HUNTAIL] = BACK_ANIM_CONVEX_DOUBLE_ARC, + [SPECIES_GOREBYSS] = BACK_ANIM_CONVEX_DOUBLE_ARC, + [SPECIES_RELICANTH] = BACK_ANIM_H_SLIDE, + [SPECIES_LUVDISC] = BACK_ANIM_H_SPRING_REPEATED, [SPECIES_BAGON] = BACK_ANIM_V_SHAKE, [SPECIES_SHELGON] = BACK_ANIM_V_SHAKE, [SPECIES_SALAMENCE] = BACK_ANIM_H_SHAKE, @@ -596,16 +598,15 @@ static const u8 sSpeciesToBackAnimSet[NUM_SPECIES] = [SPECIES_REGIROCK] = BACK_ANIM_V_SHAKE, [SPECIES_REGICE] = BACK_ANIM_V_SHAKE, [SPECIES_REGISTEEL] = BACK_ANIM_V_SHAKE, + [SPECIES_LATIAS] = BACK_ANIM_H_VIBRATE, + [SPECIES_LATIOS] = BACK_ANIM_H_VIBRATE, [SPECIES_KYOGRE] = BACK_ANIM_SHAKE_GLOW_BLUE, [SPECIES_GROUDON] = BACK_ANIM_SHAKE_GLOW_RED, [SPECIES_RAYQUAZA] = BACK_ANIM_GROW_STUTTER, - [SPECIES_LATIAS] = BACK_ANIM_H_VIBRATE, - [SPECIES_LATIOS] = BACK_ANIM_H_VIBRATE, [SPECIES_JIRACHI] = BACK_ANIM_CONVEX_DOUBLE_ARC, [SPECIES_DEOXYS] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_CHIMECHO] = BACK_ANIM_CONVEX_DOUBLE_ARC, - - // Gen 4 + + // Gen 4 [SPECIES_TURTWIG] = BACK_ANIM_H_SLIDE, [SPECIES_GROTLE] = BACK_ANIM_H_SLIDE, [SPECIES_TORTERRA] = BACK_ANIM_SHAKE_GLOW_GREEN, @@ -713,43 +714,7 @@ static const u8 sSpeciesToBackAnimSet[NUM_SPECIES] = [SPECIES_DARKRAI] = BACK_ANIM_SHRINK_GROW_VIBRATE, [SPECIES_SHAYMIN] = BACK_ANIM_CONCAVE_ARC_SMALL, [SPECIES_ARCEUS] = BACK_ANIM_GROW, - - //Gen 4 Forms - [SPECIES_DEOXYS_ATTACK] = BACK_ANIM_GROW_STUTTER, - [SPECIES_DEOXYS_DEFENSE] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_DEOXYS_SPEED] = BACK_ANIM_V_SHAKE_H_SLIDE, - [SPECIES_BURMY_SANDY_CLOAK] = BACK_ANIM_H_SHAKE, - [SPECIES_BURMY_TRASH_CLOAK] = BACK_ANIM_H_SHAKE, - [SPECIES_WORMADAM_SANDY_CLOAK] = BACK_ANIM_V_SHAKE, - [SPECIES_WORMADAM_TRASH_CLOAK] = BACK_ANIM_V_SHAKE, - [SPECIES_CHERRIM_SUNSHINE] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_SHELLOS_EAST_SEA] = BACK_ANIM_H_SPRING, - [SPECIES_GASTRODON_EAST_SEA] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_ROTOM_HEAT] = BACK_ANIM_SHAKE_GLOW_RED, - [SPECIES_ROTOM_WASH] = BACK_ANIM_V_SHAKE_H_SLIDE, - [SPECIES_ROTOM_FROST] = BACK_ANIM_V_SHAKE_LOW, - [SPECIES_ROTOM_FAN] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_ROTOM_MOW] = BACK_ANIM_H_SLIDE, - [SPECIES_GIRATINA_ORIGIN] = BACK_ANIM_GROW_STUTTER, - [SPECIES_SHAYMIN_SKY] = BACK_ANIM_TRIANGLE_DOWN, - [SPECIES_ARCEUS_FIGHTING] = BACK_ANIM_GROW_STUTTER, - [SPECIES_ARCEUS_FLYING] = BACK_ANIM_GROW_STUTTER, - [SPECIES_ARCEUS_POISON] = BACK_ANIM_GROW_STUTTER, - [SPECIES_ARCEUS_GROUND] = BACK_ANIM_GROW_STUTTER, - [SPECIES_ARCEUS_ROCK] = BACK_ANIM_GROW_STUTTER, - [SPECIES_ARCEUS_BUG] = BACK_ANIM_GROW_STUTTER, - [SPECIES_ARCEUS_GHOST] = BACK_ANIM_GROW_STUTTER, - [SPECIES_ARCEUS_STEEL] = BACK_ANIM_GROW_STUTTER, - [SPECIES_ARCEUS_FIRE] = BACK_ANIM_GROW_STUTTER, - [SPECIES_ARCEUS_WATER] = BACK_ANIM_GROW_STUTTER, - [SPECIES_ARCEUS_GRASS] = BACK_ANIM_GROW_STUTTER, - [SPECIES_ARCEUS_ELECTRIC] = BACK_ANIM_GROW_STUTTER, - [SPECIES_ARCEUS_PSYCHIC] = BACK_ANIM_GROW_STUTTER, - [SPECIES_ARCEUS_ICE] = BACK_ANIM_GROW_STUTTER, - [SPECIES_ARCEUS_DRAGON] = BACK_ANIM_GROW_STUTTER, - [SPECIES_ARCEUS_DARK] = BACK_ANIM_GROW_STUTTER, - [SPECIES_ARCEUS_FAIRY] = BACK_ANIM_GROW_STUTTER, - + // Gen 5 [SPECIES_VICTINI] = BACK_ANIM_H_SHAKE, [SPECIES_SNIVY] = BACK_ANIM_H_SLIDE, @@ -907,29 +872,8 @@ static const u8 sSpeciesToBackAnimSet[NUM_SPECIES] = [SPECIES_KELDEO] = BACK_ANIM_JOLT_RIGHT, [SPECIES_MELOETTA] = BACK_ANIM_CONVEX_DOUBLE_ARC, [SPECIES_GENESECT] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, - - //Gen 5 Forms - [SPECIES_BASCULIN_BLUE_STRIPED] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_DARMANITAN_ZEN_MODE] = BACK_ANIM_H_SHAKE, - [SPECIES_DEERLING_SUMMER] = BACK_ANIM_H_SLIDE, - [SPECIES_DEERLING_AUTUMN] = BACK_ANIM_H_SLIDE, - [SPECIES_DEERLING_WINTER] = BACK_ANIM_H_SLIDE, - [SPECIES_SAWSBUCK_SUMMER] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_SAWSBUCK_AUTUMN] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_SAWSBUCK_WINTER] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_TORNADUS_THERIAN] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_THUNDURUS_THERIAN] = BACK_ANIM_SHAKE_FLASH_YELLOW, - [SPECIES_LANDORUS_THERIAN] = BACK_ANIM_GROW_STUTTER, - [SPECIES_KYUREM_WHITE] = BACK_ANIM_SHAKE_GLOW_RED, - [SPECIES_KYUREM_BLACK] = BACK_ANIM_SHAKE_GLOW_BLUE, - [SPECIES_KELDEO_RESOLUTE] = BACK_ANIM_GROW_STUTTER, - [SPECIES_MELOETTA_PIROUETTE] = BACK_ANIM_TRIANGLE_DOWN, - [SPECIES_GENESECT_DOUSE_DRIVE] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, - [SPECIES_GENESECT_SHOCK_DRIVE] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, - [SPECIES_GENESECT_BURN_DRIVE] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, - [SPECIES_GENESECT_CHILL_DRIVE] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, - //Gen 6 + // Gen 6 [SPECIES_CHESPIN] = BACK_ANIM_H_SLIDE, [SPECIES_QUILLADIN] = BACK_ANIM_GROW, [SPECIES_CHESNAUGHT] = BACK_ANIM_V_SHAKE_LOW, @@ -1002,8 +946,259 @@ static const u8 sSpeciesToBackAnimSet[NUM_SPECIES] = [SPECIES_DIANCIE] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, [SPECIES_HOOPA] = BACK_ANIM_CONVEX_DOUBLE_ARC, [SPECIES_VOLCANION] = BACK_ANIM_SHAKE_GLOW_RED, - - //Gen 6 Forms + + // Gen 7 todo: assign + [SPECIES_ROWLET] = BACK_ANIM_H_VIBRATE, + [SPECIES_DARTRIX] = BACK_ANIM_H_VIBRATE, + [SPECIES_DECIDUEYE] = BACK_ANIM_H_VIBRATE, + [SPECIES_LITTEN] = BACK_ANIM_H_VIBRATE, + [SPECIES_TORRACAT] = BACK_ANIM_H_VIBRATE, + [SPECIES_INCINEROAR] = BACK_ANIM_H_VIBRATE, + [SPECIES_POPPLIO] = BACK_ANIM_H_VIBRATE, + [SPECIES_BRIONNE] = BACK_ANIM_H_VIBRATE, + [SPECIES_PRIMARINA] = BACK_ANIM_H_VIBRATE, + [SPECIES_PIKIPEK] = BACK_ANIM_H_VIBRATE, + [SPECIES_TRUMBEAK] = BACK_ANIM_H_VIBRATE, + [SPECIES_TOUCANNON] = BACK_ANIM_H_VIBRATE, + [SPECIES_YUNGOOS] = BACK_ANIM_H_VIBRATE, + [SPECIES_GUMSHOOS] = BACK_ANIM_H_VIBRATE, + [SPECIES_GRUBBIN] = BACK_ANIM_H_VIBRATE, + [SPECIES_CHARJABUG] = BACK_ANIM_H_VIBRATE, + [SPECIES_VIKAVOLT] = BACK_ANIM_H_VIBRATE, + [SPECIES_CRABRAWLER] = BACK_ANIM_H_VIBRATE, + [SPECIES_CRABOMINABLE] = BACK_ANIM_H_VIBRATE, + [SPECIES_ORICORIO] = BACK_ANIM_H_VIBRATE, + [SPECIES_CUTIEFLY] = BACK_ANIM_H_VIBRATE, + [SPECIES_RIBOMBEE] = BACK_ANIM_H_VIBRATE, + [SPECIES_ROCKRUFF] = BACK_ANIM_H_VIBRATE, + [SPECIES_LYCANROC] = BACK_ANIM_H_VIBRATE, + [SPECIES_WISHIWASHI] = BACK_ANIM_H_VIBRATE, + [SPECIES_MAREANIE] = BACK_ANIM_H_VIBRATE, + [SPECIES_TOXAPEX] = BACK_ANIM_H_VIBRATE, + [SPECIES_MUDBRAY] = BACK_ANIM_H_VIBRATE, + [SPECIES_MUDSDALE] = BACK_ANIM_H_VIBRATE, + [SPECIES_DEWPIDER] = BACK_ANIM_H_VIBRATE, + [SPECIES_ARAQUANID] = BACK_ANIM_H_VIBRATE, + [SPECIES_FOMANTIS] = BACK_ANIM_H_VIBRATE, + [SPECIES_LURANTIS] = BACK_ANIM_H_VIBRATE, + [SPECIES_MORELULL] = BACK_ANIM_H_VIBRATE, + [SPECIES_SHIINOTIC] = BACK_ANIM_H_VIBRATE, + [SPECIES_SALANDIT] = BACK_ANIM_H_VIBRATE, + [SPECIES_SALAZZLE] = BACK_ANIM_H_VIBRATE, + [SPECIES_STUFFUL] = BACK_ANIM_H_VIBRATE, + [SPECIES_BEWEAR] = BACK_ANIM_H_VIBRATE, + [SPECIES_BOUNSWEET] = BACK_ANIM_H_VIBRATE, + [SPECIES_STEENEE] = BACK_ANIM_H_VIBRATE, + [SPECIES_TSAREENA] = BACK_ANIM_H_VIBRATE, + [SPECIES_COMFEY] = BACK_ANIM_H_VIBRATE, + [SPECIES_ORANGURU] = BACK_ANIM_H_VIBRATE, + [SPECIES_PASSIMIAN] = BACK_ANIM_H_VIBRATE, + [SPECIES_WIMPOD] = BACK_ANIM_H_VIBRATE, + [SPECIES_GOLISOPOD] = BACK_ANIM_H_VIBRATE, + [SPECIES_SANDYGAST] = BACK_ANIM_H_VIBRATE, + [SPECIES_PALOSSAND] = BACK_ANIM_H_VIBRATE, + [SPECIES_PYUKUMUKU] = BACK_ANIM_H_VIBRATE, + [SPECIES_TYPE_NULL] = BACK_ANIM_H_VIBRATE, + [SPECIES_SILVALLY] = BACK_ANIM_H_VIBRATE, + [SPECIES_MINIOR] = BACK_ANIM_H_VIBRATE, + [SPECIES_KOMALA] = BACK_ANIM_H_VIBRATE, + [SPECIES_TURTONATOR] = BACK_ANIM_H_VIBRATE, + [SPECIES_TOGEDEMARU] = BACK_ANIM_H_VIBRATE, + [SPECIES_MIMIKYU] = BACK_ANIM_H_VIBRATE, + [SPECIES_BRUXISH] = BACK_ANIM_H_VIBRATE, + [SPECIES_DRAMPA] = BACK_ANIM_H_VIBRATE, + [SPECIES_DHELMISE] = BACK_ANIM_H_VIBRATE, + [SPECIES_JANGMO_O] = BACK_ANIM_H_VIBRATE, + [SPECIES_HAKAMO_O] = BACK_ANIM_H_VIBRATE, + [SPECIES_KOMMO_O] = BACK_ANIM_H_VIBRATE, + [SPECIES_TAPU_KOKO] = BACK_ANIM_H_VIBRATE, + [SPECIES_TAPU_LELE] = BACK_ANIM_H_VIBRATE, + [SPECIES_TAPU_BULU] = BACK_ANIM_H_VIBRATE, + [SPECIES_TAPU_FINI] = BACK_ANIM_H_VIBRATE, + [SPECIES_COSMOG] = BACK_ANIM_H_VIBRATE, + [SPECIES_COSMOEM] = BACK_ANIM_H_VIBRATE, + [SPECIES_SOLGALEO] = BACK_ANIM_H_VIBRATE, + [SPECIES_LUNALA] = BACK_ANIM_H_VIBRATE, + [SPECIES_NIHILEGO] = BACK_ANIM_H_VIBRATE, + [SPECIES_BUZZWOLE] = BACK_ANIM_H_VIBRATE, + [SPECIES_PHEROMOSA] = BACK_ANIM_H_VIBRATE, + [SPECIES_XURKITREE] = BACK_ANIM_H_VIBRATE, + [SPECIES_CELESTEELA] = BACK_ANIM_H_VIBRATE, + [SPECIES_KARTANA] = BACK_ANIM_H_VIBRATE, + [SPECIES_GUZZLORD] = BACK_ANIM_H_VIBRATE, + [SPECIES_NECROZMA] = BACK_ANIM_H_VIBRATE, + [SPECIES_MAGEARNA] = BACK_ANIM_H_VIBRATE, + [SPECIES_MARSHADOW] = BACK_ANIM_H_VIBRATE, + [SPECIES_POIPOLE] = BACK_ANIM_H_VIBRATE, + [SPECIES_NAGANADEL] = BACK_ANIM_H_VIBRATE, + [SPECIES_STAKATAKA] = BACK_ANIM_H_VIBRATE, + [SPECIES_BLACEPHALON] = BACK_ANIM_H_VIBRATE, + [SPECIES_ZERAORA] = BACK_ANIM_H_VIBRATE, + [SPECIES_MELTAN] = BACK_ANIM_H_VIBRATE, + [SPECIES_MELMETAL] = BACK_ANIM_H_VIBRATE, + + // Gen 8 todo: assign + [SPECIES_GROOKEY] = BACK_ANIM_H_VIBRATE, + [SPECIES_THWACKEY] = BACK_ANIM_H_VIBRATE, + [SPECIES_RILLABOOM] = BACK_ANIM_H_VIBRATE, + [SPECIES_SCORBUNNY] = BACK_ANIM_H_VIBRATE, + [SPECIES_RABOOT] = BACK_ANIM_H_VIBRATE, + [SPECIES_CINDERACE] = BACK_ANIM_H_VIBRATE, + [SPECIES_SOBBLE] = BACK_ANIM_H_VIBRATE, + [SPECIES_DRIZZILE] = BACK_ANIM_H_VIBRATE, + [SPECIES_INTELEON] = BACK_ANIM_H_VIBRATE, + [SPECIES_SKWOVET] = BACK_ANIM_H_VIBRATE, + [SPECIES_GREEDENT] = BACK_ANIM_H_VIBRATE, + [SPECIES_ROOKIDEE] = BACK_ANIM_H_VIBRATE, + [SPECIES_CORVISQUIRE] = BACK_ANIM_H_VIBRATE, + [SPECIES_CORVIKNIGHT] = BACK_ANIM_H_VIBRATE, + [SPECIES_BLIPBUG] = BACK_ANIM_H_VIBRATE, + [SPECIES_DOTTLER] = BACK_ANIM_H_VIBRATE, + [SPECIES_ORBEETLE] = BACK_ANIM_H_VIBRATE, + [SPECIES_NICKIT] = BACK_ANIM_H_VIBRATE, + [SPECIES_THIEVUL] = BACK_ANIM_H_VIBRATE, + [SPECIES_GOSSIFLEUR] = BACK_ANIM_H_VIBRATE, + [SPECIES_ELDEGOSS] = BACK_ANIM_H_VIBRATE, + [SPECIES_WOOLOO] = BACK_ANIM_H_VIBRATE, + [SPECIES_DUBWOOL] = BACK_ANIM_H_VIBRATE, + [SPECIES_CHEWTLE] = BACK_ANIM_H_VIBRATE, + [SPECIES_DREDNAW] = BACK_ANIM_H_VIBRATE, + [SPECIES_YAMPER] = BACK_ANIM_H_VIBRATE, + [SPECIES_BOLTUND] = BACK_ANIM_H_VIBRATE, + [SPECIES_ROLYCOLY] = BACK_ANIM_H_VIBRATE, + [SPECIES_CARKOL] = BACK_ANIM_H_VIBRATE, + [SPECIES_COALOSSAL] = BACK_ANIM_H_VIBRATE, + [SPECIES_APPLIN] = BACK_ANIM_H_VIBRATE, + [SPECIES_FLAPPLE] = BACK_ANIM_H_VIBRATE, + [SPECIES_APPLETUN] = BACK_ANIM_H_VIBRATE, + [SPECIES_SILICOBRA] = BACK_ANIM_H_VIBRATE, + [SPECIES_SANDACONDA] = BACK_ANIM_H_VIBRATE, + [SPECIES_CRAMORANT] = BACK_ANIM_H_VIBRATE, + [SPECIES_ARROKUDA] = BACK_ANIM_H_VIBRATE, + [SPECIES_BARRASKEWDA] = BACK_ANIM_H_VIBRATE, + [SPECIES_TOXEL] = BACK_ANIM_H_VIBRATE, + [SPECIES_TOXTRICITY] = BACK_ANIM_H_VIBRATE, + [SPECIES_SIZZLIPEDE] = BACK_ANIM_H_VIBRATE, + [SPECIES_CENTISKORCH] = BACK_ANIM_H_VIBRATE, + [SPECIES_CLOBBOPUS] = BACK_ANIM_H_VIBRATE, + [SPECIES_GRAPPLOCT] = BACK_ANIM_H_VIBRATE, + [SPECIES_SINISTEA] = BACK_ANIM_H_VIBRATE, + [SPECIES_POLTEAGEIST] = BACK_ANIM_H_VIBRATE, + [SPECIES_HATENNA] = BACK_ANIM_H_VIBRATE, + [SPECIES_HATTREM] = BACK_ANIM_H_VIBRATE, + [SPECIES_HATTERENE] = BACK_ANIM_H_VIBRATE, + [SPECIES_IMPIDIMP] = BACK_ANIM_H_VIBRATE, + [SPECIES_MORGREM] = BACK_ANIM_H_VIBRATE, + [SPECIES_GRIMMSNARL] = BACK_ANIM_H_VIBRATE, + [SPECIES_OBSTAGOON] = BACK_ANIM_H_VIBRATE, + [SPECIES_PERRSERKER] = BACK_ANIM_H_VIBRATE, + [SPECIES_CURSOLA] = BACK_ANIM_H_VIBRATE, + [SPECIES_SIRFETCHD] = BACK_ANIM_H_VIBRATE, + [SPECIES_MR_RIME] = BACK_ANIM_H_VIBRATE, + [SPECIES_RUNERIGUS] = BACK_ANIM_H_VIBRATE, + [SPECIES_MILCERY] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE] = BACK_ANIM_H_VIBRATE, + [SPECIES_FALINKS] = BACK_ANIM_H_VIBRATE, + [SPECIES_PINCURCHIN] = BACK_ANIM_H_VIBRATE, + [SPECIES_SNOM] = BACK_ANIM_H_VIBRATE, + [SPECIES_FROSMOTH] = BACK_ANIM_H_VIBRATE, + [SPECIES_STONJOURNER] = BACK_ANIM_H_VIBRATE, + [SPECIES_EISCUE] = BACK_ANIM_H_VIBRATE, + [SPECIES_INDEEDEE] = BACK_ANIM_H_VIBRATE, + [SPECIES_MORPEKO] = BACK_ANIM_H_VIBRATE, + [SPECIES_CUFANT] = BACK_ANIM_H_VIBRATE, + [SPECIES_COPPERAJAH] = BACK_ANIM_H_VIBRATE, + [SPECIES_DRACOZOLT] = BACK_ANIM_H_VIBRATE, + [SPECIES_ARCTOZOLT] = BACK_ANIM_H_VIBRATE, + [SPECIES_DRACOVISH] = BACK_ANIM_H_VIBRATE, + [SPECIES_ARCTOVISH] = BACK_ANIM_H_VIBRATE, + [SPECIES_DURALUDON] = BACK_ANIM_H_VIBRATE, + [SPECIES_DREEPY] = BACK_ANIM_H_VIBRATE, + [SPECIES_DRAKLOAK] = BACK_ANIM_H_VIBRATE, + [SPECIES_DRAGAPULT] = BACK_ANIM_H_VIBRATE, + [SPECIES_ZACIAN] = BACK_ANIM_H_VIBRATE, + [SPECIES_ZAMAZENTA] = BACK_ANIM_H_VIBRATE, + [SPECIES_ETERNATUS] = BACK_ANIM_H_VIBRATE, + [SPECIES_KUBFU] = BACK_ANIM_H_VIBRATE, + [SPECIES_URSHIFU] = BACK_ANIM_H_VIBRATE, + [SPECIES_ZARUDE] = BACK_ANIM_H_VIBRATE, + [SPECIES_REGIELEKI] = BACK_ANIM_H_VIBRATE, + [SPECIES_REGIDRAGO] = BACK_ANIM_H_VIBRATE, + [SPECIES_GLASTRIER] = BACK_ANIM_H_VIBRATE, + [SPECIES_SPECTRIER] = BACK_ANIM_H_VIBRATE, + [SPECIES_CALYREX] = BACK_ANIM_H_VIBRATE, + [SPECIES_WYRDEER] = BACK_ANIM_H_VIBRATE, + [SPECIES_KLEAVOR] = BACK_ANIM_H_VIBRATE, + [SPECIES_URSALUNA] = BACK_ANIM_H_VIBRATE, + [SPECIES_BASCULEGION] = BACK_ANIM_H_VIBRATE, + [SPECIES_SNEASLER] = BACK_ANIM_H_VIBRATE, + [SPECIES_OVERQWIL] = BACK_ANIM_H_VIBRATE, + [SPECIES_ENAMORUS] = BACK_ANIM_H_VIBRATE, + + // Gen 3 Forms + [SPECIES_CASTFORM_SUNNY] = BACK_ANIM_SHAKE_GLOW_RED, + [SPECIES_CASTFORM_RAINY] = BACK_ANIM_SHRINK_GROW_VIBRATE, + [SPECIES_CASTFORM_SNOWY] = BACK_ANIM_TRIANGLE_DOWN, + [SPECIES_DEOXYS_ATTACK] = BACK_ANIM_TRIANGLE_DOWN, + [SPECIES_DEOXYS_DEFENSE] = BACK_ANIM_TRIANGLE_DOWN, + [SPECIES_DEOXYS_SPEED] = BACK_ANIM_TRIANGLE_DOWN, + + // Gen 4 Forms + [SPECIES_BURMY_SANDY_CLOAK] = BACK_ANIM_H_SHAKE, + [SPECIES_BURMY_TRASH_CLOAK] = BACK_ANIM_H_SHAKE, + [SPECIES_WORMADAM_SANDY_CLOAK] = BACK_ANIM_V_SHAKE, + [SPECIES_WORMADAM_TRASH_CLOAK] = BACK_ANIM_V_SHAKE, + [SPECIES_CHERRIM_SUNSHINE] = BACK_ANIM_CONCAVE_ARC_SMALL, + [SPECIES_SHELLOS_EAST_SEA] = BACK_ANIM_H_SPRING, + [SPECIES_GASTRODON_EAST_SEA] = BACK_ANIM_SHRINK_GROW_VIBRATE, + [SPECIES_ROTOM_HEAT] = BACK_ANIM_SHAKE_GLOW_RED, + [SPECIES_ROTOM_WASH] = BACK_ANIM_V_SHAKE_H_SLIDE, + [SPECIES_ROTOM_FROST] = BACK_ANIM_V_SHAKE_LOW, + [SPECIES_ROTOM_FAN] = BACK_ANIM_SHRINK_GROW_VIBRATE, + [SPECIES_ROTOM_MOW] = BACK_ANIM_H_SLIDE, + [SPECIES_GIRATINA_ORIGIN] = BACK_ANIM_GROW_STUTTER, + [SPECIES_SHAYMIN_SKY] = BACK_ANIM_TRIANGLE_DOWN, + [SPECIES_ARCEUS_FIGHTING] = BACK_ANIM_GROW_STUTTER, + [SPECIES_ARCEUS_FLYING] = BACK_ANIM_GROW_STUTTER, + [SPECIES_ARCEUS_POISON] = BACK_ANIM_GROW_STUTTER, + [SPECIES_ARCEUS_GROUND] = BACK_ANIM_GROW_STUTTER, + [SPECIES_ARCEUS_ROCK] = BACK_ANIM_GROW_STUTTER, + [SPECIES_ARCEUS_BUG] = BACK_ANIM_GROW_STUTTER, + [SPECIES_ARCEUS_GHOST] = BACK_ANIM_GROW_STUTTER, + [SPECIES_ARCEUS_STEEL] = BACK_ANIM_GROW_STUTTER, + [SPECIES_ARCEUS_FIRE] = BACK_ANIM_GROW_STUTTER, + [SPECIES_ARCEUS_WATER] = BACK_ANIM_GROW_STUTTER, + [SPECIES_ARCEUS_GRASS] = BACK_ANIM_GROW_STUTTER, + [SPECIES_ARCEUS_ELECTRIC] = BACK_ANIM_GROW_STUTTER, + [SPECIES_ARCEUS_PSYCHIC] = BACK_ANIM_GROW_STUTTER, + [SPECIES_ARCEUS_ICE] = BACK_ANIM_GROW_STUTTER, + [SPECIES_ARCEUS_DRAGON] = BACK_ANIM_GROW_STUTTER, + [SPECIES_ARCEUS_DARK] = BACK_ANIM_GROW_STUTTER, + [SPECIES_ARCEUS_FAIRY] = BACK_ANIM_GROW_STUTTER, + + //Gen 5 Forms + [SPECIES_BASCULIN_BLUE_STRIPED] = BACK_ANIM_JOLT_RIGHT, + [SPECIES_BASCULIN_WHITE_STRIPED] = BACK_ANIM_JOLT_RIGHT, + [SPECIES_DARMANITAN_ZEN_MODE] = BACK_ANIM_H_SHAKE, + [SPECIES_DEERLING_SUMMER] = BACK_ANIM_H_SLIDE, + [SPECIES_DEERLING_AUTUMN] = BACK_ANIM_H_SLIDE, + [SPECIES_DEERLING_WINTER] = BACK_ANIM_H_SLIDE, + [SPECIES_SAWSBUCK_SUMMER] = BACK_ANIM_DIP_RIGHT_SIDE, + [SPECIES_SAWSBUCK_AUTUMN] = BACK_ANIM_DIP_RIGHT_SIDE, + [SPECIES_SAWSBUCK_WINTER] = BACK_ANIM_DIP_RIGHT_SIDE, + [SPECIES_TORNADUS_THERIAN] = BACK_ANIM_SHRINK_GROW_VIBRATE, + [SPECIES_THUNDURUS_THERIAN] = BACK_ANIM_SHAKE_FLASH_YELLOW, + [SPECIES_LANDORUS_THERIAN] = BACK_ANIM_GROW_STUTTER, + [SPECIES_KYUREM_WHITE] = BACK_ANIM_SHAKE_GLOW_RED, + [SPECIES_KYUREM_BLACK] = BACK_ANIM_SHAKE_GLOW_BLUE, + [SPECIES_KELDEO_RESOLUTE] = BACK_ANIM_GROW_STUTTER, + [SPECIES_MELOETTA_PIROUETTE] = BACK_ANIM_TRIANGLE_DOWN, + [SPECIES_GENESECT_DOUSE_DRIVE] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, + [SPECIES_GENESECT_SHOCK_DRIVE] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, + [SPECIES_GENESECT_BURN_DRIVE] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, + [SPECIES_GENESECT_CHILL_DRIVE] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, + + //Gen 6 Forms [SPECIES_GRENINJA_ASH] = BACK_ANIM_SHAKE_GLOW_BLUE, [SPECIES_GRENINJA_BATTLE_BOND] = BACK_ANIM_V_STRETCH, [SPECIES_VIVILLON_POLAR] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, @@ -1061,8 +1256,137 @@ static const u8 sSpeciesToBackAnimSet[NUM_SPECIES] = [SPECIES_ZYGARDE_50_POWER_CONSTRUCT] = BACK_ANIM_SHAKE_GLOW_GREEN, [SPECIES_ZYGARDE_COMPLETE] = BACK_ANIM_SHAKE_GLOW_GREEN, [SPECIES_HOOPA_UNBOUND] = BACK_ANIM_V_SHAKE_LOW, - - //Gen 6 Megas (Thanks Furret/CyanSMP64!) + + // Gen 7 Forms todo: assign + [SPECIES_ORICORIO_POM_POM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ORICORIO_PAU] = BACK_ANIM_H_VIBRATE, + [SPECIES_ORICORIO_SENSU] = BACK_ANIM_H_VIBRATE, + [SPECIES_ROCKRUFF_OWN_TEMPO] = BACK_ANIM_H_VIBRATE, + [SPECIES_LYCANROC_MIDNIGHT] = BACK_ANIM_H_VIBRATE, + [SPECIES_LYCANROC_DUSK] = BACK_ANIM_H_VIBRATE, + [SPECIES_WISHIWASHI_SCHOOL] = BACK_ANIM_H_VIBRATE, + [SPECIES_SILVALLY_FIGHTING] = BACK_ANIM_H_VIBRATE, + [SPECIES_SILVALLY_FLYING] = BACK_ANIM_H_VIBRATE, + [SPECIES_SILVALLY_POISON] = BACK_ANIM_H_VIBRATE, + [SPECIES_SILVALLY_GROUND] = BACK_ANIM_H_VIBRATE, + [SPECIES_SILVALLY_ROCK] = BACK_ANIM_H_VIBRATE, + [SPECIES_SILVALLY_BUG] = BACK_ANIM_H_VIBRATE, + [SPECIES_SILVALLY_GHOST] = BACK_ANIM_H_VIBRATE, + [SPECIES_SILVALLY_STEEL] = BACK_ANIM_H_VIBRATE, + [SPECIES_SILVALLY_FIRE] = BACK_ANIM_H_VIBRATE, + [SPECIES_SILVALLY_WATER] = BACK_ANIM_H_VIBRATE, + [SPECIES_SILVALLY_GRASS] = BACK_ANIM_H_VIBRATE, + [SPECIES_SILVALLY_ELECTRIC] = BACK_ANIM_H_VIBRATE, + [SPECIES_SILVALLY_PSYCHIC] = BACK_ANIM_H_VIBRATE, + [SPECIES_SILVALLY_ICE] = BACK_ANIM_H_VIBRATE, + [SPECIES_SILVALLY_DRAGON] = BACK_ANIM_H_VIBRATE, + [SPECIES_SILVALLY_DARK] = BACK_ANIM_H_VIBRATE, + [SPECIES_SILVALLY_FAIRY] = BACK_ANIM_H_VIBRATE, + [SPECIES_MINIOR_METEOR_ORANGE] = BACK_ANIM_H_VIBRATE, + [SPECIES_MINIOR_METEOR_YELLOW] = BACK_ANIM_H_VIBRATE, + [SPECIES_MINIOR_METEOR_GREEN] = BACK_ANIM_H_VIBRATE, + [SPECIES_MINIOR_METEOR_BLUE] = BACK_ANIM_H_VIBRATE, + [SPECIES_MINIOR_METEOR_INDIGO] = BACK_ANIM_H_VIBRATE, + [SPECIES_MINIOR_METEOR_VIOLET] = BACK_ANIM_H_VIBRATE, + [SPECIES_MINIOR_CORE_RED] = BACK_ANIM_H_VIBRATE, + [SPECIES_MINIOR_CORE_ORANGE] = BACK_ANIM_H_VIBRATE, + [SPECIES_MINIOR_CORE_YELLOW] = BACK_ANIM_H_VIBRATE, + [SPECIES_MINIOR_CORE_GREEN] = BACK_ANIM_H_VIBRATE, + [SPECIES_MINIOR_CORE_BLUE] = BACK_ANIM_H_VIBRATE, + [SPECIES_MINIOR_CORE_INDIGO] = BACK_ANIM_H_VIBRATE, + [SPECIES_MINIOR_CORE_VIOLET] = BACK_ANIM_H_VIBRATE, + [SPECIES_MIMIKYU_BUSTED] = BACK_ANIM_H_VIBRATE, + [SPECIES_NECROZMA_DUSK_MANE] = BACK_ANIM_H_VIBRATE, + [SPECIES_NECROZMA_DAWN_WINGS] = BACK_ANIM_H_VIBRATE, + [SPECIES_NECROZMA_ULTRA] = BACK_ANIM_H_VIBRATE, + [SPECIES_MAGEARNA_ORIGINAL_COLOR] = BACK_ANIM_H_VIBRATE, + + // Gen 8 Forms todo: assign + [SPECIES_CRAMORANT_GULPING] = BACK_ANIM_H_VIBRATE, + [SPECIES_CRAMORANT_GORGING] = BACK_ANIM_H_VIBRATE, + [SPECIES_TOXTRICITY_LOW_KEY] = BACK_ANIM_H_VIBRATE, + [SPECIES_SINISTEA_ANTIQUE] = BACK_ANIM_H_VIBRATE, + [SPECIES_POLTEAGEIST_ANTIQUE] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_RUBY_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_MATCHA_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_MINT_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_LEMON_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_SALTED_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_RUBY_SWIRL] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_CARAMEL_SWIRL] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_RAINBOW_SWIRL] = BACK_ANIM_H_VIBRATE, + [SPECIES_EISCUE_NOICE_FACE] = BACK_ANIM_H_VIBRATE, + [SPECIES_INDEEDEE_FEMALE] = BACK_ANIM_H_VIBRATE, + [SPECIES_MORPEKO_HANGRY] = BACK_ANIM_H_VIBRATE, + [SPECIES_ZACIAN_CROWNED_SWORD] = BACK_ANIM_H_VIBRATE, + [SPECIES_ZAMAZENTA_CROWNED_SHIELD] = BACK_ANIM_H_VIBRATE, + [SPECIES_ETERNATUS_ETERNAMAX] = BACK_ANIM_H_VIBRATE, + [SPECIES_URSHIFU_RAPID_STRIKE_STYLE] = BACK_ANIM_H_VIBRATE, + [SPECIES_ZARUDE_DADA] = BACK_ANIM_H_VIBRATE, + [SPECIES_CALYREX_ICE_RIDER] = BACK_ANIM_H_VIBRATE, + [SPECIES_CALYREX_SHADOW_RIDER] = BACK_ANIM_H_VIBRATE, + [SPECIES_BASCULEGION_FEMALE] = BACK_ANIM_H_VIBRATE, + + // Alolan Forms + [SPECIES_RATTATA_ALOLAN] = BACK_ANIM_H_VIBRATE, + [SPECIES_RATICATE_ALOLAN] = BACK_ANIM_H_VIBRATE, + [SPECIES_RAICHU_ALOLAN] = BACK_ANIM_H_VIBRATE, + [SPECIES_SANDSHREW_ALOLAN] = BACK_ANIM_H_VIBRATE, + [SPECIES_SANDSLASH_ALOLAN] = BACK_ANIM_H_VIBRATE, + [SPECIES_VULPIX_ALOLAN] = BACK_ANIM_H_VIBRATE, + [SPECIES_NINETALES_ALOLAN] = BACK_ANIM_H_VIBRATE, + [SPECIES_DIGLETT_ALOLAN] = BACK_ANIM_H_VIBRATE, + [SPECIES_DUGTRIO_ALOLAN] = BACK_ANIM_H_VIBRATE, + [SPECIES_MEOWTH_ALOLAN] = BACK_ANIM_H_VIBRATE, + [SPECIES_PERSIAN_ALOLAN] = BACK_ANIM_H_VIBRATE, + [SPECIES_GEODUDE_ALOLAN] = BACK_ANIM_H_VIBRATE, + [SPECIES_GRAVELER_ALOLAN] = BACK_ANIM_H_VIBRATE, + [SPECIES_GOLEM_ALOLAN] = BACK_ANIM_H_VIBRATE, + [SPECIES_GRIMER_ALOLAN] = BACK_ANIM_H_VIBRATE, + [SPECIES_MUK_ALOLAN] = BACK_ANIM_H_VIBRATE, + [SPECIES_EXEGGUTOR_ALOLAN] = BACK_ANIM_H_VIBRATE, + [SPECIES_MAROWAK_ALOLAN] = BACK_ANIM_H_VIBRATE, + + // Galarian Forms + [SPECIES_MEOWTH_GALARIAN] = BACK_ANIM_H_VIBRATE, + [SPECIES_PONYTA_GALARIAN] = BACK_ANIM_H_VIBRATE, + [SPECIES_RAPIDASH_GALARIAN] = BACK_ANIM_H_VIBRATE, + [SPECIES_SLOWPOKE_GALARIAN] = BACK_ANIM_H_VIBRATE, + [SPECIES_SLOWBRO_GALARIAN] = BACK_ANIM_H_VIBRATE, + [SPECIES_FARFETCHD_GALARIAN] = BACK_ANIM_H_VIBRATE, + [SPECIES_WEEZING_GALARIAN] = BACK_ANIM_H_VIBRATE, + [SPECIES_MR_MIME_GALARIAN] = BACK_ANIM_H_VIBRATE, + [SPECIES_ARTICUNO_GALARIAN] = BACK_ANIM_H_VIBRATE, + [SPECIES_ZAPDOS_GALARIAN] = BACK_ANIM_H_VIBRATE, + [SPECIES_MOLTRES_GALARIAN] = BACK_ANIM_H_VIBRATE, + [SPECIES_SLOWKING_GALARIAN] = BACK_ANIM_H_VIBRATE, + [SPECIES_CORSOLA_GALARIAN] = BACK_ANIM_H_VIBRATE, + [SPECIES_ZIGZAGOON_GALARIAN] = BACK_ANIM_H_VIBRATE, + [SPECIES_LINOONE_GALARIAN] = BACK_ANIM_H_VIBRATE, + [SPECIES_DARUMAKA_GALARIAN] = BACK_ANIM_H_VIBRATE, + [SPECIES_DARMANITAN_GALARIAN] = BACK_ANIM_H_VIBRATE, + [SPECIES_YAMASK_GALARIAN] = BACK_ANIM_H_VIBRATE, + [SPECIES_STUNFISK_GALARIAN] = BACK_ANIM_H_VIBRATE, + + // Hisuian Forms + [SPECIES_GROWLITHE_HISUIAN] = BACK_ANIM_H_VIBRATE, + [SPECIES_ARCANINE_HISUIAN] = BACK_ANIM_H_VIBRATE, + [SPECIES_VOLTORB_HISUIAN] = BACK_ANIM_H_VIBRATE, + [SPECIES_ELECTRODE_HISUIAN] = BACK_ANIM_H_VIBRATE, + [SPECIES_TYPHLOSION_HISUIAN] = BACK_ANIM_H_VIBRATE, + [SPECIES_QWILFISH_HISUIAN] = BACK_ANIM_H_VIBRATE, + [SPECIES_SNEASEL_HISUIAN] = BACK_ANIM_H_VIBRATE, + [SPECIES_SAMUROTT_HISUIAN] = BACK_ANIM_H_VIBRATE, + [SPECIES_LILLIGANT_HISUIAN] = BACK_ANIM_H_VIBRATE, + [SPECIES_ZORUA_HISUIAN] = BACK_ANIM_H_VIBRATE, + [SPECIES_ZOROARK_HISUIAN] = BACK_ANIM_H_VIBRATE, + [SPECIES_BRAVIARY_HISUIAN] = BACK_ANIM_H_VIBRATE, + [SPECIES_SLIGGOO_HISUIAN] = BACK_ANIM_H_VIBRATE, + [SPECIES_GOODRA_HISUIAN] = BACK_ANIM_H_VIBRATE, + [SPECIES_AVALUGG_HISUIAN] = BACK_ANIM_H_VIBRATE, + [SPECIES_DECIDUEYE_HISUIAN] = BACK_ANIM_H_VIBRATE, + + // Mega/Primal Forms (Thanks Furret/CyanSMP64!) [SPECIES_VENUSAUR_MEGA] = BACK_ANIM_SHAKE_GLOW_GREEN, [SPECIES_CHARIZARD_MEGA_X] = BACK_ANIM_SHAKE_GLOW_BLUE, [SPECIES_CHARIZARD_MEGA_Y] = BACK_ANIM_SHAKE_GLOW_RED, @@ -1111,7 +1435,23 @@ static const u8 sSpeciesToBackAnimSet[NUM_SPECIES] = [SPECIES_RAYQUAZA_MEGA] = BACK_ANIM_SHAKE_GLOW_GREEN, [SPECIES_KYOGRE_PRIMAL] = BACK_ANIM_SHAKE_GLOW_BLUE, [SPECIES_GROUDON_PRIMAL] = BACK_ANIM_SHAKE_GLOW_RED, - + + // Other Forms + [SPECIES_PIKACHU_COSPLAY] = BACK_ANIM_H_VIBRATE, + [SPECIES_PIKACHU_ROCK_STAR] = BACK_ANIM_H_VIBRATE, + [SPECIES_PIKACHU_BELLE] = BACK_ANIM_H_VIBRATE, + [SPECIES_PIKACHU_POP_STAR] = BACK_ANIM_H_VIBRATE, + [SPECIES_PIKACHU_PH_D] = BACK_ANIM_H_VIBRATE, + [SPECIES_PIKACHU_LIBRE] = BACK_ANIM_H_VIBRATE, + [SPECIES_PIKACHU_ORIGINAL_CAP] = BACK_ANIM_H_VIBRATE, + [SPECIES_PIKACHU_HOENN_CAP] = BACK_ANIM_H_VIBRATE, + [SPECIES_PIKACHU_SINNOH_CAP] = BACK_ANIM_H_VIBRATE, + [SPECIES_PIKACHU_UNOVA_CAP] = BACK_ANIM_H_VIBRATE, + [SPECIES_PIKACHU_KALOS_CAP] = BACK_ANIM_H_VIBRATE, + [SPECIES_PIKACHU_ALOLA_CAP] = BACK_ANIM_H_VIBRATE, + [SPECIES_PIKACHU_PARTNER_CAP] = BACK_ANIM_H_VIBRATE, + [SPECIES_PIKACHU_WORLD_CAP] = BACK_ANIM_H_VIBRATE, + [SPECIES_PICHU_SPIKY_EARED] = BACK_ANIM_H_VIBRATE, }; // Equivalent to struct YellowFlashData, but doesn't match as a struct From bf5fdfa942ed675419409d0593d0873dc2792331 Mon Sep 17 00:00:00 2001 From: Kaitlyn Date: Sat, 14 Oct 2023 18:10:17 -0500 Subject: [PATCH 097/162] Front Pic Animation Organization Organized and formatted --- src/data/pokemon_graphics/front_pic_anims.h | 2481 ++++++++++--------- 1 file changed, 1244 insertions(+), 1237 deletions(-) diff --git a/src/data/pokemon_graphics/front_pic_anims.h b/src/data/pokemon_graphics/front_pic_anims.h index 95ea6f9437..27e38d0221 100644 --- a/src/data/pokemon_graphics/front_pic_anims.h +++ b/src/data/pokemon_graphics/front_pic_anims.h @@ -11655,1275 +11655,1282 @@ SINGLE_ANIMATION(EnamorusTherian); #endif const union AnimCmd *const *const gMonFrontAnimsPtrTable[NUM_SPECIES + 1] = -{ - [SPECIES_NONE] = sAnims_None, - [SPECIES_BULBASAUR] = sAnims_Bulbasaur, - [SPECIES_IVYSAUR] = sAnims_Ivysaur, - [SPECIES_VENUSAUR] = sAnims_Venusaur, - [SPECIES_CHARMANDER] = sAnims_Charmander, - [SPECIES_CHARMELEON] = sAnims_Charmeleon, - [SPECIES_CHARIZARD] = sAnims_Charizard, - [SPECIES_SQUIRTLE] = sAnims_Squirtle, - [SPECIES_WARTORTLE] = sAnims_Wartortle, - [SPECIES_BLASTOISE] = sAnims_Blastoise, - [SPECIES_CATERPIE] = sAnims_Caterpie, - [SPECIES_METAPOD] = sAnims_Metapod, - [SPECIES_BUTTERFREE] = sAnims_Butterfree, - [SPECIES_WEEDLE] = sAnims_Weedle, - [SPECIES_KAKUNA] = sAnims_Kakuna, - [SPECIES_BEEDRILL] = sAnims_Beedrill, - [SPECIES_PIDGEY] = sAnims_Pidgey, - [SPECIES_PIDGEOTTO] = sAnims_Pidgeotto, - [SPECIES_PIDGEOT] = sAnims_Pidgeot, - [SPECIES_RATTATA] = sAnims_Rattata, - [SPECIES_RATICATE] = sAnims_Raticate, - [SPECIES_SPEAROW] = sAnims_Spearow, - [SPECIES_FEAROW] = sAnims_Fearow, - [SPECIES_EKANS] = sAnims_Ekans, - [SPECIES_ARBOK] = sAnims_Arbok, - [SPECIES_PIKACHU] = sAnims_Pikachu, - [SPECIES_RAICHU] = sAnims_Raichu, - [SPECIES_SANDSHREW] = sAnims_Sandshrew, - [SPECIES_SANDSLASH] = sAnims_Sandslash, - [SPECIES_NIDORAN_F] = sAnims_NidoranF, - [SPECIES_NIDORINA] = sAnims_Nidorina, - [SPECIES_NIDOQUEEN] = sAnims_Nidoqueen, - [SPECIES_NIDORAN_M] = sAnims_NidoranM, - [SPECIES_NIDORINO] = sAnims_Nidorino, - [SPECIES_NIDOKING] = sAnims_Nidoking, - [SPECIES_CLEFAIRY] = sAnims_Clefairy, - [SPECIES_CLEFABLE] = sAnims_Clefable, - [SPECIES_VULPIX] = sAnims_Vulpix, - [SPECIES_NINETALES] = sAnims_Ninetales, - [SPECIES_JIGGLYPUFF] = sAnims_Jigglypuff, - [SPECIES_WIGGLYTUFF] = sAnims_Wigglytuff, - [SPECIES_ZUBAT] = sAnims_Zubat, - [SPECIES_GOLBAT] = sAnims_Golbat, - [SPECIES_ODDISH] = sAnims_Oddish, - [SPECIES_GLOOM] = sAnims_Gloom, - [SPECIES_VILEPLUME] = sAnims_Vileplume, - [SPECIES_PARAS] = sAnims_Paras, - [SPECIES_PARASECT] = sAnims_Parasect, - [SPECIES_VENONAT] = sAnims_Venonat, - [SPECIES_VENOMOTH] = sAnims_Venomoth, - [SPECIES_DIGLETT] = sAnims_Diglett, - [SPECIES_DUGTRIO] = sAnims_Dugtrio, - [SPECIES_MEOWTH] = sAnims_Meowth, - [SPECIES_PERSIAN] = sAnims_Persian, - [SPECIES_PSYDUCK] = sAnims_Psyduck, - [SPECIES_GOLDUCK] = sAnims_Golduck, - [SPECIES_MANKEY] = sAnims_Mankey, - [SPECIES_PRIMEAPE] = sAnims_Primeape, - [SPECIES_GROWLITHE] = sAnims_Growlithe, - [SPECIES_ARCANINE] = sAnims_Arcanine, - [SPECIES_POLIWAG] = sAnims_Poliwag, - [SPECIES_POLIWHIRL] = sAnims_Poliwhirl, - [SPECIES_POLIWRATH] = sAnims_Poliwrath, - [SPECIES_ABRA] = sAnims_Abra, - [SPECIES_KADABRA] = sAnims_Kadabra, - [SPECIES_ALAKAZAM] = sAnims_Alakazam, - [SPECIES_MACHOP] = sAnims_Machop, - [SPECIES_MACHOKE] = sAnims_Machoke, - [SPECIES_MACHAMP] = sAnims_Machamp, - [SPECIES_BELLSPROUT] = sAnims_Bellsprout, - [SPECIES_WEEPINBELL] = sAnims_Weepinbell, - [SPECIES_VICTREEBEL] = sAnims_Victreebel, - [SPECIES_TENTACOOL] = sAnims_Tentacool, - [SPECIES_TENTACRUEL] = sAnims_Tentacruel, - [SPECIES_GEODUDE] = sAnims_Geodude, - [SPECIES_GRAVELER] = sAnims_Graveler, - [SPECIES_GOLEM] = sAnims_Golem, - [SPECIES_PONYTA] = sAnims_Ponyta, - [SPECIES_RAPIDASH] = sAnims_Rapidash, - [SPECIES_SLOWPOKE] = sAnims_Slowpoke, - [SPECIES_SLOWBRO] = sAnims_Slowbro, - [SPECIES_MAGNEMITE] = sAnims_Magnemite, - [SPECIES_MAGNETON] = sAnims_Magneton, - [SPECIES_FARFETCHD] = sAnims_Farfetchd, - [SPECIES_DODUO] = sAnims_Doduo, - [SPECIES_DODRIO] = sAnims_Dodrio, - [SPECIES_SEEL] = sAnims_Seel, - [SPECIES_DEWGONG] = sAnims_Dewgong, - [SPECIES_GRIMER] = sAnims_Grimer, - [SPECIES_MUK] = sAnims_Muk, - [SPECIES_SHELLDER] = sAnims_Shellder, - [SPECIES_CLOYSTER] = sAnims_Cloyster, - [SPECIES_GASTLY] = sAnims_Gastly, - [SPECIES_HAUNTER] = sAnims_Haunter, - [SPECIES_GENGAR] = sAnims_Gengar, - [SPECIES_ONIX] = sAnims_Onix, - [SPECIES_DROWZEE] = sAnims_Drowzee, - [SPECIES_HYPNO] = sAnims_Hypno, - [SPECIES_KRABBY] = sAnims_Krabby, - [SPECIES_KINGLER] = sAnims_Kingler, - [SPECIES_VOLTORB] = sAnims_Voltorb, - [SPECIES_ELECTRODE] = sAnims_Electrode, - [SPECIES_EXEGGCUTE] = sAnims_Exeggcute, - [SPECIES_EXEGGUTOR] = sAnims_Exeggutor, - [SPECIES_CUBONE] = sAnims_Cubone, - [SPECIES_MAROWAK] = sAnims_Marowak, - [SPECIES_HITMONLEE] = sAnims_Hitmonlee, - [SPECIES_HITMONCHAN] = sAnims_Hitmonchan, - [SPECIES_LICKITUNG] = sAnims_Lickitung, - [SPECIES_KOFFING] = sAnims_Koffing, - [SPECIES_WEEZING] = sAnims_Weezing, - [SPECIES_RHYHORN] = sAnims_Rhyhorn, - [SPECIES_RHYDON] = sAnims_Rhydon, - [SPECIES_CHANSEY] = sAnims_Chansey, - [SPECIES_TANGELA] = sAnims_Tangela, - [SPECIES_KANGASKHAN] = sAnims_Kangaskhan, - [SPECIES_HORSEA] = sAnims_Horsea, - [SPECIES_SEADRA] = sAnims_Seadra, - [SPECIES_GOLDEEN] = sAnims_Goldeen, - [SPECIES_SEAKING] = sAnims_Seaking, - [SPECIES_STARYU] = sAnims_Staryu, - [SPECIES_STARMIE] = sAnims_Starmie, - [SPECIES_MR_MIME] = sAnims_MrMime, - [SPECIES_SCYTHER] = sAnims_Scyther, - [SPECIES_JYNX] = sAnims_Jynx, - [SPECIES_ELECTABUZZ] = sAnims_Electabuzz, - [SPECIES_MAGMAR] = sAnims_Magmar, - [SPECIES_PINSIR] = sAnims_Pinsir, - [SPECIES_TAUROS] = sAnims_Tauros, - [SPECIES_MAGIKARP] = sAnims_Magikarp, - [SPECIES_GYARADOS] = sAnims_Gyarados, - [SPECIES_LAPRAS] = sAnims_Lapras, - [SPECIES_DITTO] = sAnims_Ditto, - [SPECIES_EEVEE] = sAnims_Eevee, - [SPECIES_VAPOREON] = sAnims_Vaporeon, - [SPECIES_JOLTEON] = sAnims_Jolteon, - [SPECIES_FLAREON] = sAnims_Flareon, - [SPECIES_PORYGON] = sAnims_Porygon, - [SPECIES_OMANYTE] = sAnims_Omanyte, - [SPECIES_OMASTAR] = sAnims_Omastar, - [SPECIES_KABUTO] = sAnims_Kabuto, - [SPECIES_KABUTOPS] = sAnims_Kabutops, - [SPECIES_AERODACTYL] = sAnims_Aerodactyl, - [SPECIES_SNORLAX] = sAnims_Snorlax, - [SPECIES_ARTICUNO] = sAnims_Articuno, - [SPECIES_ZAPDOS] = sAnims_Zapdos, - [SPECIES_MOLTRES] = sAnims_Moltres, - [SPECIES_DRATINI] = sAnims_Dratini, - [SPECIES_DRAGONAIR] = sAnims_Dragonair, - [SPECIES_DRAGONITE] = sAnims_Dragonite, - [SPECIES_MEWTWO] = sAnims_Mewtwo, - [SPECIES_MEW] = sAnims_Mew, - [SPECIES_CHIKORITA] = sAnims_Chikorita, - [SPECIES_BAYLEEF] = sAnims_Bayleef, - [SPECIES_MEGANIUM] = sAnims_Meganium, - [SPECIES_CYNDAQUIL] = sAnims_Cyndaquil, - [SPECIES_QUILAVA] = sAnims_Quilava, - [SPECIES_TYPHLOSION] = sAnims_Typhlosion, - [SPECIES_TOTODILE] = sAnims_Totodile, - [SPECIES_CROCONAW] = sAnims_Croconaw, - [SPECIES_FERALIGATR] = sAnims_Feraligatr, - [SPECIES_SENTRET] = sAnims_Sentret, - [SPECIES_FURRET] = sAnims_Furret, - [SPECIES_HOOTHOOT] = sAnims_Hoothoot, - [SPECIES_NOCTOWL] = sAnims_Noctowl, - [SPECIES_LEDYBA] = sAnims_Ledyba, - [SPECIES_LEDIAN] = sAnims_Ledian, - [SPECIES_SPINARAK] = sAnims_Spinarak, - [SPECIES_ARIADOS] = sAnims_Ariados, - [SPECIES_CROBAT] = sAnims_Crobat, - [SPECIES_CHINCHOU] = sAnims_Chinchou, - [SPECIES_LANTURN] = sAnims_Lanturn, - [SPECIES_PICHU] = sAnims_Pichu, - [SPECIES_CLEFFA] = sAnims_Cleffa, - [SPECIES_IGGLYBUFF] = sAnims_Igglybuff, - [SPECIES_TOGEPI] = sAnims_Togepi, - [SPECIES_TOGETIC] = sAnims_Togetic, - [SPECIES_NATU] = sAnims_Natu, - [SPECIES_XATU] = sAnims_Xatu, - [SPECIES_MAREEP] = sAnims_Mareep, - [SPECIES_FLAAFFY] = sAnims_Flaaffy, - [SPECIES_AMPHAROS] = sAnims_Ampharos, - [SPECIES_BELLOSSOM] = sAnims_Bellossom, - [SPECIES_MARILL] = sAnims_Marill, - [SPECIES_AZUMARILL] = sAnims_Azumarill, - [SPECIES_SUDOWOODO] = sAnims_Sudowoodo, - [SPECIES_POLITOED] = sAnims_Politoed, - [SPECIES_HOPPIP] = sAnims_Hoppip, - [SPECIES_SKIPLOOM] = sAnims_Skiploom, - [SPECIES_JUMPLUFF] = sAnims_Jumpluff, - [SPECIES_AIPOM] = sAnims_Aipom, - [SPECIES_SUNKERN] = sAnims_Sunkern, - [SPECIES_SUNFLORA] = sAnims_Sunflora, - [SPECIES_YANMA] = sAnims_Yanma, - [SPECIES_WOOPER] = sAnims_Wooper, - [SPECIES_QUAGSIRE] = sAnims_Quagsire, - [SPECIES_ESPEON] = sAnims_Espeon, - [SPECIES_UMBREON] = sAnims_Umbreon, - [SPECIES_MURKROW] = sAnims_Murkrow, - [SPECIES_SLOWKING] = sAnims_Slowking, - [SPECIES_MISDREAVUS] = sAnims_Misdreavus, - [SPECIES_UNOWN] = sAnims_Unown, - [SPECIES_WOBBUFFET] = sAnims_Wobbuffet, - [SPECIES_GIRAFARIG] = sAnims_Girafarig, - [SPECIES_PINECO] = sAnims_Pineco, - [SPECIES_FORRETRESS] = sAnims_Forretress, - [SPECIES_DUNSPARCE] = sAnims_Dunsparce, - [SPECIES_GLIGAR] = sAnims_Gligar, - [SPECIES_STEELIX] = sAnims_Steelix, - [SPECIES_SNUBBULL] = sAnims_Snubbull, - [SPECIES_GRANBULL] = sAnims_Granbull, - [SPECIES_QWILFISH] = sAnims_Qwilfish, - [SPECIES_SCIZOR] = sAnims_Scizor, - [SPECIES_SHUCKLE] = sAnims_Shuckle, - [SPECIES_HERACROSS] = sAnims_Heracross, - [SPECIES_SNEASEL] = sAnims_Sneasel, - [SPECIES_TEDDIURSA] = sAnims_Teddiursa, - [SPECIES_URSARING] = sAnims_Ursaring, - [SPECIES_SLUGMA] = sAnims_Slugma, - [SPECIES_MAGCARGO] = sAnims_Magcargo, - [SPECIES_SWINUB] = sAnims_Swinub, - [SPECIES_PILOSWINE] = sAnims_Piloswine, - [SPECIES_CORSOLA] = sAnims_Corsola, - [SPECIES_REMORAID] = sAnims_Remoraid, - [SPECIES_OCTILLERY] = sAnims_Octillery, - [SPECIES_DELIBIRD] = sAnims_Delibird, - [SPECIES_MANTINE] = sAnims_Mantine, - [SPECIES_SKARMORY] = sAnims_Skarmory, - [SPECIES_HOUNDOUR] = sAnims_Houndour, - [SPECIES_HOUNDOOM] = sAnims_Houndoom, - [SPECIES_KINGDRA] = sAnims_Kingdra, - [SPECIES_PHANPY] = sAnims_Phanpy, - [SPECIES_DONPHAN] = sAnims_Donphan, - [SPECIES_PORYGON2] = sAnims_Porygon2, - [SPECIES_STANTLER] = sAnims_Stantler, - [SPECIES_SMEARGLE] = sAnims_Smeargle, - [SPECIES_TYROGUE] = sAnims_Tyrogue, - [SPECIES_HITMONTOP] = sAnims_Hitmontop, - [SPECIES_SMOOCHUM] = sAnims_Smoochum, - [SPECIES_ELEKID] = sAnims_Elekid, - [SPECIES_MAGBY] = sAnims_Magby, - [SPECIES_MILTANK] = sAnims_Miltank, - [SPECIES_BLISSEY] = sAnims_Blissey, - [SPECIES_RAIKOU] = sAnims_Raikou, - [SPECIES_ENTEI] = sAnims_Entei, - [SPECIES_SUICUNE] = sAnims_Suicune, - [SPECIES_LARVITAR] = sAnims_Larvitar, - [SPECIES_PUPITAR] = sAnims_Pupitar, - [SPECIES_TYRANITAR] = sAnims_Tyranitar, - [SPECIES_LUGIA] = sAnims_Lugia, - [SPECIES_HO_OH] = sAnims_HoOh, - [SPECIES_CELEBI] = sAnims_Celebi, - [SPECIES_TREECKO] = sAnims_Treecko, - [SPECIES_GROVYLE] = sAnims_Grovyle, - [SPECIES_SCEPTILE] = sAnims_Sceptile, - [SPECIES_TORCHIC] = sAnims_Torchic, - [SPECIES_COMBUSKEN] = sAnims_Combusken, - [SPECIES_BLAZIKEN] = sAnims_Blaziken, - [SPECIES_MUDKIP] = sAnims_Mudkip, - [SPECIES_MARSHTOMP] = sAnims_Marshtomp, - [SPECIES_SWAMPERT] = sAnims_Swampert, - [SPECIES_POOCHYENA] = sAnims_Poochyena, - [SPECIES_MIGHTYENA] = sAnims_Mightyena, - [SPECIES_ZIGZAGOON] = sAnims_Zigzagoon, - [SPECIES_LINOONE] = sAnims_Linoone, - [SPECIES_WURMPLE] = sAnims_Wurmple, - [SPECIES_SILCOON] = sAnims_Silcoon, - [SPECIES_BEAUTIFLY] = sAnims_Beautifly, - [SPECIES_CASCOON] = sAnims_Cascoon, - [SPECIES_DUSTOX] = sAnims_Dustox, - [SPECIES_LOTAD] = sAnims_Lotad, - [SPECIES_LOMBRE] = sAnims_Lombre, - [SPECIES_LUDICOLO] = sAnims_Ludicolo, - [SPECIES_SEEDOT] = sAnims_Seedot, - [SPECIES_NUZLEAF] = sAnims_Nuzleaf, - [SPECIES_SHIFTRY] = sAnims_Shiftry, - [SPECIES_NINCADA] = sAnims_Nincada, - [SPECIES_NINJASK] = sAnims_Ninjask, - [SPECIES_SHEDINJA] = sAnims_Shedinja, - [SPECIES_TAILLOW] = sAnims_Taillow, - [SPECIES_SWELLOW] = sAnims_Swellow, - [SPECIES_SHROOMISH] = sAnims_Shroomish, - [SPECIES_BRELOOM] = sAnims_Breloom, - [SPECIES_SPINDA] = sAnims_Spinda, - [SPECIES_WINGULL] = sAnims_Wingull, - [SPECIES_PELIPPER] = sAnims_Pelipper, - [SPECIES_SURSKIT] = sAnims_Surskit, - [SPECIES_MASQUERAIN] = sAnims_Masquerain, - [SPECIES_WAILMER] = sAnims_Wailmer, - [SPECIES_WAILORD] = sAnims_Wailord, - [SPECIES_SKITTY] = sAnims_Skitty, - [SPECIES_DELCATTY] = sAnims_Delcatty, - [SPECIES_KECLEON] = sAnims_Kecleon, - [SPECIES_BALTOY] = sAnims_Baltoy, - [SPECIES_CLAYDOL] = sAnims_Claydol, - [SPECIES_NOSEPASS] = sAnims_Nosepass, - [SPECIES_TORKOAL] = sAnims_Torkoal, - [SPECIES_SABLEYE] = sAnims_Sableye, - [SPECIES_BARBOACH] = sAnims_Barboach, - [SPECIES_WHISCASH] = sAnims_Whiscash, - [SPECIES_LUVDISC] = sAnims_Luvdisc, - [SPECIES_CORPHISH] = sAnims_Corphish, - [SPECIES_CRAWDAUNT] = sAnims_Crawdaunt, - [SPECIES_FEEBAS] = sAnims_Feebas, - [SPECIES_MILOTIC] = sAnims_Milotic, - [SPECIES_CARVANHA] = sAnims_Carvanha, - [SPECIES_SHARPEDO] = sAnims_Sharpedo, - [SPECIES_TRAPINCH] = sAnims_Trapinch, - [SPECIES_VIBRAVA] = sAnims_Vibrava, - [SPECIES_FLYGON] = sAnims_Flygon, - [SPECIES_MAKUHITA] = sAnims_Makuhita, - [SPECIES_HARIYAMA] = sAnims_Hariyama, - [SPECIES_ELECTRIKE] = sAnims_Electrike, - [SPECIES_MANECTRIC] = sAnims_Manectric, - [SPECIES_NUMEL] = sAnims_Numel, - [SPECIES_CAMERUPT] = sAnims_Camerupt, - [SPECIES_SPHEAL] = sAnims_Spheal, - [SPECIES_SEALEO] = sAnims_Sealeo, - [SPECIES_WALREIN] = sAnims_Walrein, - [SPECIES_CACNEA] = sAnims_Cacnea, - [SPECIES_CACTURNE] = sAnims_Cacturne, - [SPECIES_SNORUNT] = sAnims_Snorunt, - [SPECIES_GLALIE] = sAnims_Glalie, - [SPECIES_LUNATONE] = sAnims_Lunatone, - [SPECIES_SOLROCK] = sAnims_Solrock, - [SPECIES_AZURILL] = sAnims_Azurill, - [SPECIES_SPOINK] = sAnims_Spoink, - [SPECIES_GRUMPIG] = sAnims_Grumpig, - [SPECIES_PLUSLE] = sAnims_Plusle, - [SPECIES_MINUN] = sAnims_Minun, - [SPECIES_MAWILE] = sAnims_Mawile, - [SPECIES_MEDITITE] = sAnims_Meditite, - [SPECIES_MEDICHAM] = sAnims_Medicham, - [SPECIES_SWABLU] = sAnims_Swablu, - [SPECIES_ALTARIA] = sAnims_Altaria, - [SPECIES_WYNAUT] = sAnims_Wynaut, - [SPECIES_DUSKULL] = sAnims_Duskull, - [SPECIES_DUSCLOPS] = sAnims_Dusclops, - [SPECIES_ROSELIA] = sAnims_Roselia, - [SPECIES_SLAKOTH] = sAnims_Slakoth, - [SPECIES_VIGOROTH] = sAnims_Vigoroth, - [SPECIES_SLAKING] = sAnims_Slaking, - [SPECIES_GULPIN] = sAnims_Gulpin, - [SPECIES_SWALOT] = sAnims_Swalot, - [SPECIES_TROPIUS] = sAnims_Tropius, - [SPECIES_WHISMUR] = sAnims_Whismur, - [SPECIES_LOUDRED] = sAnims_Loudred, - [SPECIES_EXPLOUD] = sAnims_Exploud, - [SPECIES_CLAMPERL] = sAnims_Clamperl, - [SPECIES_HUNTAIL] = sAnims_Huntail, - [SPECIES_GOREBYSS] = sAnims_Gorebyss, - [SPECIES_ABSOL] = sAnims_Absol, - [SPECIES_SHUPPET] = sAnims_Shuppet, - [SPECIES_BANETTE] = sAnims_Banette, - [SPECIES_SEVIPER] = sAnims_Seviper, - [SPECIES_ZANGOOSE] = sAnims_Zangoose, - [SPECIES_RELICANTH] = sAnims_Relicanth, - [SPECIES_ARON] = sAnims_Aron, - [SPECIES_LAIRON] = sAnims_Lairon, - [SPECIES_AGGRON] = sAnims_Aggron, - [SPECIES_CASTFORM] = sAnims_Castform, - [SPECIES_VOLBEAT] = sAnims_Volbeat, - [SPECIES_ILLUMISE] = sAnims_Illumise, - [SPECIES_LILEEP] = sAnims_Lileep, - [SPECIES_CRADILY] = sAnims_Cradily, - [SPECIES_ANORITH] = sAnims_Anorith, - [SPECIES_ARMALDO] = sAnims_Armaldo, - [SPECIES_RALTS] = sAnims_Ralts, - [SPECIES_KIRLIA] = sAnims_Kirlia, - [SPECIES_GARDEVOIR] = sAnims_Gardevoir, - [SPECIES_BAGON] = sAnims_Bagon, - [SPECIES_SHELGON] = sAnims_Shelgon, - [SPECIES_SALAMENCE] = sAnims_Salamence, - [SPECIES_BELDUM] = sAnims_Beldum, - [SPECIES_METANG] = sAnims_Metang, - [SPECIES_METAGROSS] = sAnims_Metagross, - [SPECIES_REGIROCK] = sAnims_Regirock, - [SPECIES_REGICE] = sAnims_Regice, - [SPECIES_REGISTEEL] = sAnims_Registeel, - [SPECIES_KYOGRE] = sAnims_Kyogre, - [SPECIES_GROUDON] = sAnims_Groudon, - [SPECIES_RAYQUAZA] = sAnims_Rayquaza, - [SPECIES_LATIAS] = sAnims_Latias, - [SPECIES_LATIOS] = sAnims_Latios, - [SPECIES_JIRACHI] = sAnims_Jirachi, - [SPECIES_DEOXYS] = sAnims_Deoxys, - [SPECIES_CHIMECHO] = sAnims_Chimecho, +{ // Gen 1 + [SPECIES_NONE] = sAnims_None, + [SPECIES_BULBASAUR] = sAnims_Bulbasaur, + [SPECIES_IVYSAUR] = sAnims_Ivysaur, + [SPECIES_VENUSAUR] = sAnims_Venusaur, + [SPECIES_CHARMANDER] = sAnims_Charmander, + [SPECIES_CHARMELEON] = sAnims_Charmeleon, + [SPECIES_CHARIZARD] = sAnims_Charizard, + [SPECIES_SQUIRTLE] = sAnims_Squirtle, + [SPECIES_WARTORTLE] = sAnims_Wartortle, + [SPECIES_BLASTOISE] = sAnims_Blastoise, + [SPECIES_CATERPIE] = sAnims_Caterpie, + [SPECIES_METAPOD] = sAnims_Metapod, + [SPECIES_BUTTERFREE] = sAnims_Butterfree, + [SPECIES_WEEDLE] = sAnims_Weedle, + [SPECIES_KAKUNA] = sAnims_Kakuna, + [SPECIES_BEEDRILL] = sAnims_Beedrill, + [SPECIES_PIDGEY] = sAnims_Pidgey, + [SPECIES_PIDGEOTTO] = sAnims_Pidgeotto, + [SPECIES_PIDGEOT] = sAnims_Pidgeot, + [SPECIES_RATTATA] = sAnims_Rattata, + [SPECIES_RATICATE] = sAnims_Raticate, + [SPECIES_SPEAROW] = sAnims_Spearow, + [SPECIES_FEAROW] = sAnims_Fearow, + [SPECIES_EKANS] = sAnims_Ekans, + [SPECIES_ARBOK] = sAnims_Arbok, + [SPECIES_PIKACHU] = sAnims_Pikachu, + [SPECIES_RAICHU] = sAnims_Raichu, + [SPECIES_SANDSHREW] = sAnims_Sandshrew, + [SPECIES_SANDSLASH] = sAnims_Sandslash, + [SPECIES_NIDORAN_F] = sAnims_NidoranF, + [SPECIES_NIDORINA] = sAnims_Nidorina, + [SPECIES_NIDOQUEEN] = sAnims_Nidoqueen, + [SPECIES_NIDORAN_M] = sAnims_NidoranM, + [SPECIES_NIDORINO] = sAnims_Nidorino, + [SPECIES_NIDOKING] = sAnims_Nidoking, + [SPECIES_CLEFAIRY] = sAnims_Clefairy, + [SPECIES_CLEFABLE] = sAnims_Clefable, + [SPECIES_VULPIX] = sAnims_Vulpix, + [SPECIES_NINETALES] = sAnims_Ninetales, + [SPECIES_JIGGLYPUFF] = sAnims_Jigglypuff, + [SPECIES_WIGGLYTUFF] = sAnims_Wigglytuff, + [SPECIES_ZUBAT] = sAnims_Zubat, + [SPECIES_GOLBAT] = sAnims_Golbat, + [SPECIES_ODDISH] = sAnims_Oddish, + [SPECIES_GLOOM] = sAnims_Gloom, + [SPECIES_VILEPLUME] = sAnims_Vileplume, + [SPECIES_PARAS] = sAnims_Paras, + [SPECIES_PARASECT] = sAnims_Parasect, + [SPECIES_VENONAT] = sAnims_Venonat, + [SPECIES_VENOMOTH] = sAnims_Venomoth, + [SPECIES_DIGLETT] = sAnims_Diglett, + [SPECIES_DUGTRIO] = sAnims_Dugtrio, + [SPECIES_MEOWTH] = sAnims_Meowth, + [SPECIES_PERSIAN] = sAnims_Persian, + [SPECIES_PSYDUCK] = sAnims_Psyduck, + [SPECIES_GOLDUCK] = sAnims_Golduck, + [SPECIES_MANKEY] = sAnims_Mankey, + [SPECIES_PRIMEAPE] = sAnims_Primeape, + [SPECIES_GROWLITHE] = sAnims_Growlithe, + [SPECIES_ARCANINE] = sAnims_Arcanine, + [SPECIES_POLIWAG] = sAnims_Poliwag, + [SPECIES_POLIWHIRL] = sAnims_Poliwhirl, + [SPECIES_POLIWRATH] = sAnims_Poliwrath, + [SPECIES_ABRA] = sAnims_Abra, + [SPECIES_KADABRA] = sAnims_Kadabra, + [SPECIES_ALAKAZAM] = sAnims_Alakazam, + [SPECIES_MACHOP] = sAnims_Machop, + [SPECIES_MACHOKE] = sAnims_Machoke, + [SPECIES_MACHAMP] = sAnims_Machamp, + [SPECIES_BELLSPROUT] = sAnims_Bellsprout, + [SPECIES_WEEPINBELL] = sAnims_Weepinbell, + [SPECIES_VICTREEBEL] = sAnims_Victreebel, + [SPECIES_TENTACOOL] = sAnims_Tentacool, + [SPECIES_TENTACRUEL] = sAnims_Tentacruel, + [SPECIES_GEODUDE] = sAnims_Geodude, + [SPECIES_GRAVELER] = sAnims_Graveler, + [SPECIES_GOLEM] = sAnims_Golem, + [SPECIES_PONYTA] = sAnims_Ponyta, + [SPECIES_RAPIDASH] = sAnims_Rapidash, + [SPECIES_SLOWPOKE] = sAnims_Slowpoke, + [SPECIES_SLOWBRO] = sAnims_Slowbro, + [SPECIES_MAGNEMITE] = sAnims_Magnemite, + [SPECIES_MAGNETON] = sAnims_Magneton, + [SPECIES_FARFETCHD] = sAnims_Farfetchd, + [SPECIES_DODUO] = sAnims_Doduo, + [SPECIES_DODRIO] = sAnims_Dodrio, + [SPECIES_SEEL] = sAnims_Seel, + [SPECIES_DEWGONG] = sAnims_Dewgong, + [SPECIES_GRIMER] = sAnims_Grimer, + [SPECIES_MUK] = sAnims_Muk, + [SPECIES_SHELLDER] = sAnims_Shellder, + [SPECIES_CLOYSTER] = sAnims_Cloyster, + [SPECIES_GASTLY] = sAnims_Gastly, + [SPECIES_HAUNTER] = sAnims_Haunter, + [SPECIES_GENGAR] = sAnims_Gengar, + [SPECIES_ONIX] = sAnims_Onix, + [SPECIES_DROWZEE] = sAnims_Drowzee, + [SPECIES_HYPNO] = sAnims_Hypno, + [SPECIES_KRABBY] = sAnims_Krabby, + [SPECIES_KINGLER] = sAnims_Kingler, + [SPECIES_VOLTORB] = sAnims_Voltorb, + [SPECIES_ELECTRODE] = sAnims_Electrode, + [SPECIES_EXEGGCUTE] = sAnims_Exeggcute, + [SPECIES_EXEGGUTOR] = sAnims_Exeggutor, + [SPECIES_CUBONE] = sAnims_Cubone, + [SPECIES_MAROWAK] = sAnims_Marowak, + [SPECIES_HITMONLEE] = sAnims_Hitmonlee, + [SPECIES_HITMONCHAN] = sAnims_Hitmonchan, + [SPECIES_LICKITUNG] = sAnims_Lickitung, + [SPECIES_KOFFING] = sAnims_Koffing, + [SPECIES_WEEZING] = sAnims_Weezing, + [SPECIES_RHYHORN] = sAnims_Rhyhorn, + [SPECIES_RHYDON] = sAnims_Rhydon, + [SPECIES_CHANSEY] = sAnims_Chansey, + [SPECIES_TANGELA] = sAnims_Tangela, + [SPECIES_KANGASKHAN] = sAnims_Kangaskhan, + [SPECIES_HORSEA] = sAnims_Horsea, + [SPECIES_SEADRA] = sAnims_Seadra, + [SPECIES_GOLDEEN] = sAnims_Goldeen, + [SPECIES_SEAKING] = sAnims_Seaking, + [SPECIES_STARYU] = sAnims_Staryu, + [SPECIES_STARMIE] = sAnims_Starmie, + [SPECIES_MR_MIME] = sAnims_MrMime, + [SPECIES_SCYTHER] = sAnims_Scyther, + [SPECIES_JYNX] = sAnims_Jynx, + [SPECIES_ELECTABUZZ] = sAnims_Electabuzz, + [SPECIES_MAGMAR] = sAnims_Magmar, + [SPECIES_PINSIR] = sAnims_Pinsir, + [SPECIES_TAUROS] = sAnims_Tauros, + [SPECIES_MAGIKARP] = sAnims_Magikarp, + [SPECIES_GYARADOS] = sAnims_Gyarados, + [SPECIES_LAPRAS] = sAnims_Lapras, + [SPECIES_DITTO] = sAnims_Ditto, + [SPECIES_EEVEE] = sAnims_Eevee, + [SPECIES_VAPOREON] = sAnims_Vaporeon, + [SPECIES_JOLTEON] = sAnims_Jolteon, + [SPECIES_FLAREON] = sAnims_Flareon, + [SPECIES_PORYGON] = sAnims_Porygon, + [SPECIES_OMANYTE] = sAnims_Omanyte, + [SPECIES_OMASTAR] = sAnims_Omastar, + [SPECIES_KABUTO] = sAnims_Kabuto, + [SPECIES_KABUTOPS] = sAnims_Kabutops, + [SPECIES_AERODACTYL] = sAnims_Aerodactyl, + [SPECIES_SNORLAX] = sAnims_Snorlax, + [SPECIES_ARTICUNO] = sAnims_Articuno, + [SPECIES_ZAPDOS] = sAnims_Zapdos, + [SPECIES_MOLTRES] = sAnims_Moltres, + [SPECIES_DRATINI] = sAnims_Dratini, + [SPECIES_DRAGONAIR] = sAnims_Dragonair, + [SPECIES_DRAGONITE] = sAnims_Dragonite, + [SPECIES_MEWTWO] = sAnims_Mewtwo, + [SPECIES_MEW] = sAnims_Mew, + // Gen 2 + [SPECIES_CHIKORITA] = sAnims_Chikorita, + [SPECIES_BAYLEEF] = sAnims_Bayleef, + [SPECIES_MEGANIUM] = sAnims_Meganium, + [SPECIES_CYNDAQUIL] = sAnims_Cyndaquil, + [SPECIES_QUILAVA] = sAnims_Quilava, + [SPECIES_TYPHLOSION] = sAnims_Typhlosion, + [SPECIES_TOTODILE] = sAnims_Totodile, + [SPECIES_CROCONAW] = sAnims_Croconaw, + [SPECIES_FERALIGATR] = sAnims_Feraligatr, + [SPECIES_SENTRET] = sAnims_Sentret, + [SPECIES_FURRET] = sAnims_Furret, + [SPECIES_HOOTHOOT] = sAnims_Hoothoot, + [SPECIES_NOCTOWL] = sAnims_Noctowl, + [SPECIES_LEDYBA] = sAnims_Ledyba, + [SPECIES_LEDIAN] = sAnims_Ledian, + [SPECIES_SPINARAK] = sAnims_Spinarak, + [SPECIES_ARIADOS] = sAnims_Ariados, + [SPECIES_CROBAT] = sAnims_Crobat, + [SPECIES_CHINCHOU] = sAnims_Chinchou, + [SPECIES_LANTURN] = sAnims_Lanturn, + [SPECIES_PICHU] = sAnims_Pichu, + [SPECIES_CLEFFA] = sAnims_Cleffa, + [SPECIES_IGGLYBUFF] = sAnims_Igglybuff, + [SPECIES_TOGEPI] = sAnims_Togepi, + [SPECIES_TOGETIC] = sAnims_Togetic, + [SPECIES_NATU] = sAnims_Natu, + [SPECIES_XATU] = sAnims_Xatu, + [SPECIES_MAREEP] = sAnims_Mareep, + [SPECIES_FLAAFFY] = sAnims_Flaaffy, + [SPECIES_AMPHAROS] = sAnims_Ampharos, + [SPECIES_BELLOSSOM] = sAnims_Bellossom, + [SPECIES_MARILL] = sAnims_Marill, + [SPECIES_AZUMARILL] = sAnims_Azumarill, + [SPECIES_SUDOWOODO] = sAnims_Sudowoodo, + [SPECIES_POLITOED] = sAnims_Politoed, + [SPECIES_HOPPIP] = sAnims_Hoppip, + [SPECIES_SKIPLOOM] = sAnims_Skiploom, + [SPECIES_JUMPLUFF] = sAnims_Jumpluff, + [SPECIES_AIPOM] = sAnims_Aipom, + [SPECIES_SUNKERN] = sAnims_Sunkern, + [SPECIES_SUNFLORA] = sAnims_Sunflora, + [SPECIES_YANMA] = sAnims_Yanma, + [SPECIES_WOOPER] = sAnims_Wooper, + [SPECIES_QUAGSIRE] = sAnims_Quagsire, + [SPECIES_ESPEON] = sAnims_Espeon, + [SPECIES_UMBREON] = sAnims_Umbreon, + [SPECIES_MURKROW] = sAnims_Murkrow, + [SPECIES_SLOWKING] = sAnims_Slowking, + [SPECIES_MISDREAVUS] = sAnims_Misdreavus, + [SPECIES_UNOWN] = sAnims_Unown, + [SPECIES_WOBBUFFET] = sAnims_Wobbuffet, + [SPECIES_GIRAFARIG] = sAnims_Girafarig, + [SPECIES_PINECO] = sAnims_Pineco, + [SPECIES_FORRETRESS] = sAnims_Forretress, + [SPECIES_DUNSPARCE] = sAnims_Dunsparce, + [SPECIES_GLIGAR] = sAnims_Gligar, + [SPECIES_STEELIX] = sAnims_Steelix, + [SPECIES_SNUBBULL] = sAnims_Snubbull, + [SPECIES_GRANBULL] = sAnims_Granbull, + [SPECIES_QWILFISH] = sAnims_Qwilfish, + [SPECIES_SCIZOR] = sAnims_Scizor, + [SPECIES_SHUCKLE] = sAnims_Shuckle, + [SPECIES_HERACROSS] = sAnims_Heracross, + [SPECIES_SNEASEL] = sAnims_Sneasel, + [SPECIES_TEDDIURSA] = sAnims_Teddiursa, + [SPECIES_URSARING] = sAnims_Ursaring, + [SPECIES_SLUGMA] = sAnims_Slugma, + [SPECIES_MAGCARGO] = sAnims_Magcargo, + [SPECIES_SWINUB] = sAnims_Swinub, + [SPECIES_PILOSWINE] = sAnims_Piloswine, + [SPECIES_CORSOLA] = sAnims_Corsola, + [SPECIES_REMORAID] = sAnims_Remoraid, + [SPECIES_OCTILLERY] = sAnims_Octillery, + [SPECIES_DELIBIRD] = sAnims_Delibird, + [SPECIES_MANTINE] = sAnims_Mantine, + [SPECIES_SKARMORY] = sAnims_Skarmory, + [SPECIES_HOUNDOUR] = sAnims_Houndour, + [SPECIES_HOUNDOOM] = sAnims_Houndoom, + [SPECIES_KINGDRA] = sAnims_Kingdra, + [SPECIES_PHANPY] = sAnims_Phanpy, + [SPECIES_DONPHAN] = sAnims_Donphan, + [SPECIES_PORYGON2] = sAnims_Porygon2, + [SPECIES_STANTLER] = sAnims_Stantler, + [SPECIES_SMEARGLE] = sAnims_Smeargle, + [SPECIES_TYROGUE] = sAnims_Tyrogue, + [SPECIES_HITMONTOP] = sAnims_Hitmontop, + [SPECIES_SMOOCHUM] = sAnims_Smoochum, + [SPECIES_ELEKID] = sAnims_Elekid, + [SPECIES_MAGBY] = sAnims_Magby, + [SPECIES_MILTANK] = sAnims_Miltank, + [SPECIES_BLISSEY] = sAnims_Blissey, + [SPECIES_RAIKOU] = sAnims_Raikou, + [SPECIES_ENTEI] = sAnims_Entei, + [SPECIES_SUICUNE] = sAnims_Suicune, + [SPECIES_LARVITAR] = sAnims_Larvitar, + [SPECIES_PUPITAR] = sAnims_Pupitar, + [SPECIES_TYRANITAR] = sAnims_Tyranitar, + [SPECIES_LUGIA] = sAnims_Lugia, + [SPECIES_HO_OH] = sAnims_HoOh, + [SPECIES_CELEBI] = sAnims_Celebi, + // Gen 3 + [SPECIES_TREECKO] = sAnims_Treecko, + [SPECIES_GROVYLE] = sAnims_Grovyle, + [SPECIES_SCEPTILE] = sAnims_Sceptile, + [SPECIES_TORCHIC] = sAnims_Torchic, + [SPECIES_COMBUSKEN] = sAnims_Combusken, + [SPECIES_BLAZIKEN] = sAnims_Blaziken, + [SPECIES_MUDKIP] = sAnims_Mudkip, + [SPECIES_MARSHTOMP] = sAnims_Marshtomp, + [SPECIES_SWAMPERT] = sAnims_Swampert, + [SPECIES_POOCHYENA] = sAnims_Poochyena, + [SPECIES_MIGHTYENA] = sAnims_Mightyena, + [SPECIES_ZIGZAGOON] = sAnims_Zigzagoon, + [SPECIES_LINOONE] = sAnims_Linoone, + [SPECIES_WURMPLE] = sAnims_Wurmple, + [SPECIES_SILCOON] = sAnims_Silcoon, + [SPECIES_BEAUTIFLY] = sAnims_Beautifly, + [SPECIES_CASCOON] = sAnims_Cascoon, + [SPECIES_DUSTOX] = sAnims_Dustox, + [SPECIES_LOTAD] = sAnims_Lotad, + [SPECIES_LOMBRE] = sAnims_Lombre, + [SPECIES_LUDICOLO] = sAnims_Ludicolo, + [SPECIES_SEEDOT] = sAnims_Seedot, + [SPECIES_NUZLEAF] = sAnims_Nuzleaf, + [SPECIES_SHIFTRY] = sAnims_Shiftry, + [SPECIES_NINCADA] = sAnims_Nincada, + [SPECIES_NINJASK] = sAnims_Ninjask, + [SPECIES_SHEDINJA] = sAnims_Shedinja, + [SPECIES_TAILLOW] = sAnims_Taillow, + [SPECIES_SWELLOW] = sAnims_Swellow, + [SPECIES_SHROOMISH] = sAnims_Shroomish, + [SPECIES_BRELOOM] = sAnims_Breloom, + [SPECIES_SPINDA] = sAnims_Spinda, + [SPECIES_WINGULL] = sAnims_Wingull, + [SPECIES_PELIPPER] = sAnims_Pelipper, + [SPECIES_SURSKIT] = sAnims_Surskit, + [SPECIES_MASQUERAIN] = sAnims_Masquerain, + [SPECIES_WAILMER] = sAnims_Wailmer, + [SPECIES_WAILORD] = sAnims_Wailord, + [SPECIES_SKITTY] = sAnims_Skitty, + [SPECIES_DELCATTY] = sAnims_Delcatty, + [SPECIES_KECLEON] = sAnims_Kecleon, + [SPECIES_BALTOY] = sAnims_Baltoy, + [SPECIES_CLAYDOL] = sAnims_Claydol, + [SPECIES_NOSEPASS] = sAnims_Nosepass, + [SPECIES_TORKOAL] = sAnims_Torkoal, + [SPECIES_SABLEYE] = sAnims_Sableye, + [SPECIES_BARBOACH] = sAnims_Barboach, + [SPECIES_WHISCASH] = sAnims_Whiscash, + [SPECIES_LUVDISC] = sAnims_Luvdisc, + [SPECIES_CORPHISH] = sAnims_Corphish, + [SPECIES_CRAWDAUNT] = sAnims_Crawdaunt, + [SPECIES_FEEBAS] = sAnims_Feebas, + [SPECIES_MILOTIC] = sAnims_Milotic, + [SPECIES_CARVANHA] = sAnims_Carvanha, + [SPECIES_SHARPEDO] = sAnims_Sharpedo, + [SPECIES_TRAPINCH] = sAnims_Trapinch, + [SPECIES_VIBRAVA] = sAnims_Vibrava, + [SPECIES_FLYGON] = sAnims_Flygon, + [SPECIES_MAKUHITA] = sAnims_Makuhita, + [SPECIES_HARIYAMA] = sAnims_Hariyama, + [SPECIES_ELECTRIKE] = sAnims_Electrike, + [SPECIES_MANECTRIC] = sAnims_Manectric, + [SPECIES_NUMEL] = sAnims_Numel, + [SPECIES_CAMERUPT] = sAnims_Camerupt, + [SPECIES_SPHEAL] = sAnims_Spheal, + [SPECIES_SEALEO] = sAnims_Sealeo, + [SPECIES_WALREIN] = sAnims_Walrein, + [SPECIES_CACNEA] = sAnims_Cacnea, + [SPECIES_CACTURNE] = sAnims_Cacturne, + [SPECIES_SNORUNT] = sAnims_Snorunt, + [SPECIES_GLALIE] = sAnims_Glalie, + [SPECIES_LUNATONE] = sAnims_Lunatone, + [SPECIES_SOLROCK] = sAnims_Solrock, + [SPECIES_AZURILL] = sAnims_Azurill, + [SPECIES_SPOINK] = sAnims_Spoink, + [SPECIES_GRUMPIG] = sAnims_Grumpig, + [SPECIES_PLUSLE] = sAnims_Plusle, + [SPECIES_MINUN] = sAnims_Minun, + [SPECIES_MAWILE] = sAnims_Mawile, + [SPECIES_MEDITITE] = sAnims_Meditite, + [SPECIES_MEDICHAM] = sAnims_Medicham, + [SPECIES_SWABLU] = sAnims_Swablu, + [SPECIES_ALTARIA] = sAnims_Altaria, + [SPECIES_WYNAUT] = sAnims_Wynaut, + [SPECIES_DUSKULL] = sAnims_Duskull, + [SPECIES_DUSCLOPS] = sAnims_Dusclops, + [SPECIES_ROSELIA] = sAnims_Roselia, + [SPECIES_SLAKOTH] = sAnims_Slakoth, + [SPECIES_VIGOROTH] = sAnims_Vigoroth, + [SPECIES_SLAKING] = sAnims_Slaking, + [SPECIES_GULPIN] = sAnims_Gulpin, + [SPECIES_SWALOT] = sAnims_Swalot, + [SPECIES_TROPIUS] = sAnims_Tropius, + [SPECIES_WHISMUR] = sAnims_Whismur, + [SPECIES_LOUDRED] = sAnims_Loudred, + [SPECIES_EXPLOUD] = sAnims_Exploud, + [SPECIES_CLAMPERL] = sAnims_Clamperl, + [SPECIES_HUNTAIL] = sAnims_Huntail, + [SPECIES_GOREBYSS] = sAnims_Gorebyss, + [SPECIES_ABSOL] = sAnims_Absol, + [SPECIES_SHUPPET] = sAnims_Shuppet, + [SPECIES_BANETTE] = sAnims_Banette, + [SPECIES_SEVIPER] = sAnims_Seviper, + [SPECIES_ZANGOOSE] = sAnims_Zangoose, + [SPECIES_RELICANTH] = sAnims_Relicanth, + [SPECIES_ARON] = sAnims_Aron, + [SPECIES_LAIRON] = sAnims_Lairon, + [SPECIES_AGGRON] = sAnims_Aggron, + [SPECIES_CASTFORM] = sAnims_Castform, + [SPECIES_VOLBEAT] = sAnims_Volbeat, + [SPECIES_ILLUMISE] = sAnims_Illumise, + [SPECIES_LILEEP] = sAnims_Lileep, + [SPECIES_CRADILY] = sAnims_Cradily, + [SPECIES_ANORITH] = sAnims_Anorith, + [SPECIES_ARMALDO] = sAnims_Armaldo, + [SPECIES_RALTS] = sAnims_Ralts, + [SPECIES_KIRLIA] = sAnims_Kirlia, + [SPECIES_GARDEVOIR] = sAnims_Gardevoir, + [SPECIES_BAGON] = sAnims_Bagon, + [SPECIES_SHELGON] = sAnims_Shelgon, + [SPECIES_SALAMENCE] = sAnims_Salamence, + [SPECIES_BELDUM] = sAnims_Beldum, + [SPECIES_METANG] = sAnims_Metang, + [SPECIES_METAGROSS] = sAnims_Metagross, + [SPECIES_REGIROCK] = sAnims_Regirock, + [SPECIES_REGICE] = sAnims_Regice, + [SPECIES_REGISTEEL] = sAnims_Registeel, + [SPECIES_KYOGRE] = sAnims_Kyogre, + [SPECIES_GROUDON] = sAnims_Groudon, + [SPECIES_RAYQUAZA] = sAnims_Rayquaza, + [SPECIES_LATIAS] = sAnims_Latias, + [SPECIES_LATIOS] = sAnims_Latios, + [SPECIES_JIRACHI] = sAnims_Jirachi, + [SPECIES_DEOXYS] = sAnims_Deoxys, + [SPECIES_CHIMECHO] = sAnims_Chimecho, #if P_GEN_4_POKEMON == TRUE - [SPECIES_TURTWIG] = sAnims_Turtwig, - [SPECIES_GROTLE] = sAnims_Grotle, - [SPECIES_TORTERRA] = sAnims_Torterra, - [SPECIES_CHIMCHAR] = sAnims_Chimchar, - [SPECIES_MONFERNO] = sAnims_Monferno, - [SPECIES_INFERNAPE] = sAnims_Infernape, - [SPECIES_PIPLUP] = sAnims_Piplup, - [SPECIES_PRINPLUP] = sAnims_Prinplup, - [SPECIES_EMPOLEON] = sAnims_Empoleon, - [SPECIES_STARLY] = sAnims_Starly, - [SPECIES_STARAVIA] = sAnims_Staravia, - [SPECIES_STARAPTOR] = sAnims_Staraptor, - [SPECIES_BIDOOF] = sAnims_Bidoof, - [SPECIES_BIBAREL] = sAnims_Bibarel, - [SPECIES_KRICKETOT] = sAnims_Kricketot, - [SPECIES_KRICKETUNE] = sAnims_Kricketune, - [SPECIES_SHINX] = sAnims_Shinx, - [SPECIES_LUXIO] = sAnims_Luxio, - [SPECIES_LUXRAY] = sAnims_Luxray, - [SPECIES_BUDEW] = sAnims_Budew, - [SPECIES_ROSERADE] = sAnims_Roserade, - [SPECIES_CRANIDOS] = sAnims_Cranidos, - [SPECIES_RAMPARDOS] = sAnims_Rampardos, - [SPECIES_SHIELDON] = sAnims_Shieldon, - [SPECIES_BASTIODON] = sAnims_Bastiodon, - [SPECIES_BURMY] = sAnims_Burmy, - [SPECIES_WORMADAM] = sAnims_Wormadam, - [SPECIES_MOTHIM] = sAnims_Mothim, - [SPECIES_COMBEE] = sAnims_Combee, - [SPECIES_VESPIQUEN] = sAnims_Vespiquen, - [SPECIES_PACHIRISU] = sAnims_Pachirisu, - [SPECIES_BUIZEL] = sAnims_Buizel, - [SPECIES_FLOATZEL] = sAnims_Floatzel, - [SPECIES_CHERUBI] = sAnims_Cherubi, - [SPECIES_CHERRIM] = sAnims_CherrimOvercast, - [SPECIES_SHELLOS] = sAnims_Shellos, - [SPECIES_GASTRODON] = sAnims_Gastrodon, - [SPECIES_AMBIPOM] = sAnims_Ambipom, - [SPECIES_DRIFLOON] = sAnims_Drifloon, - [SPECIES_DRIFBLIM] = sAnims_Drifblim, - [SPECIES_BUNEARY] = sAnims_Buneary, - [SPECIES_LOPUNNY] = sAnims_Lopunny, - [SPECIES_MISMAGIUS] = sAnims_Mismagius, - [SPECIES_HONCHKROW] = sAnims_Honchkrow, - [SPECIES_GLAMEOW] = sAnims_Glameow, - [SPECIES_PURUGLY] = sAnims_Purugly, - [SPECIES_CHINGLING] = sAnims_Chingling, - [SPECIES_STUNKY] = sAnims_Stunky, - [SPECIES_SKUNTANK] = sAnims_Skuntank, - [SPECIES_BRONZOR] = sAnims_Bronzor, - [SPECIES_BRONZONG] = sAnims_Bronzong, - [SPECIES_BONSLY] = sAnims_Bonsly, - [SPECIES_MIME_JR] = sAnims_MimeJr, - [SPECIES_HAPPINY] = sAnims_Happiny, - [SPECIES_CHATOT] = sAnims_Chatot, - [SPECIES_SPIRITOMB] = sAnims_Spiritomb, - [SPECIES_GIBLE] = sAnims_Gible, - [SPECIES_GABITE] = sAnims_Gabite, - [SPECIES_GARCHOMP] = sAnims_Garchomp, - [SPECIES_MUNCHLAX] = sAnims_Munchlax, - [SPECIES_RIOLU] = sAnims_Riolu, - [SPECIES_LUCARIO] = sAnims_Lucario, - [SPECIES_HIPPOPOTAS] = sAnims_Hippopotas, - [SPECIES_HIPPOWDON] = sAnims_Hippowdon, - [SPECIES_SKORUPI] = sAnims_Skorupi, - [SPECIES_DRAPION] = sAnims_Drapion, - [SPECIES_CROAGUNK] = sAnims_Croagunk, - [SPECIES_TOXICROAK] = sAnims_Toxicroak, - [SPECIES_CARNIVINE] = sAnims_Carnivine, - [SPECIES_FINNEON] = sAnims_Finneon, - [SPECIES_LUMINEON] = sAnims_Lumineon, - [SPECIES_MANTYKE] = sAnims_Mantyke, - [SPECIES_SNOVER] = sAnims_Snover, - [SPECIES_ABOMASNOW] = sAnims_Abomasnow, - [SPECIES_WEAVILE] = sAnims_Weavile, - [SPECIES_MAGNEZONE] = sAnims_Magnezone, - [SPECIES_LICKILICKY] = sAnims_Lickilicky, - [SPECIES_RHYPERIOR] = sAnims_Rhyperior, - [SPECIES_TANGROWTH] = sAnims_Tangrowth, - [SPECIES_ELECTIVIRE] = sAnims_Electivire, - [SPECIES_MAGMORTAR] = sAnims_Magmortar, - [SPECIES_TOGEKISS] = sAnims_Togekiss, - [SPECIES_YANMEGA] = sAnims_Yanmega, - [SPECIES_LEAFEON] = sAnims_Leafeon, - [SPECIES_GLACEON] = sAnims_Glaceon, - [SPECIES_GLISCOR] = sAnims_Gliscor, - [SPECIES_MAMOSWINE] = sAnims_Mamoswine, - [SPECIES_PORYGON_Z] = sAnims_PORYGON_Z, - [SPECIES_GALLADE] = sAnims_Gallade, - [SPECIES_PROBOPASS] = sAnims_Probopass, - [SPECIES_DUSKNOIR] = sAnims_Dusknoir, - [SPECIES_FROSLASS] = sAnims_Froslass, - [SPECIES_ROTOM] = sAnims_Rotom, - [SPECIES_UXIE] = sAnims_Uxie, - [SPECIES_MESPRIT] = sAnims_Mesprit, - [SPECIES_AZELF] = sAnims_Azelf, - [SPECIES_DIALGA] = sAnims_Dialga, - [SPECIES_PALKIA] = sAnims_Palkia, - [SPECIES_HEATRAN] = sAnims_Heatran, - [SPECIES_REGIGIGAS] = sAnims_Regigigas, - [SPECIES_GIRATINA] = sAnims_Giratina, - [SPECIES_CRESSELIA] = sAnims_Cresselia, - [SPECIES_PHIONE] = sAnims_Phione, - [SPECIES_MANAPHY] = sAnims_Manaphy, - [SPECIES_DARKRAI] = sAnims_Darkrai, - [SPECIES_SHAYMIN] = sAnims_Shaymin, - [SPECIES_ARCEUS] = sAnims_Arceus, + [SPECIES_TURTWIG] = sAnims_Turtwig, + [SPECIES_GROTLE] = sAnims_Grotle, + [SPECIES_TORTERRA] = sAnims_Torterra, + [SPECIES_CHIMCHAR] = sAnims_Chimchar, + [SPECIES_MONFERNO] = sAnims_Monferno, + [SPECIES_INFERNAPE] = sAnims_Infernape, + [SPECIES_PIPLUP] = sAnims_Piplup, + [SPECIES_PRINPLUP] = sAnims_Prinplup, + [SPECIES_EMPOLEON] = sAnims_Empoleon, + [SPECIES_STARLY] = sAnims_Starly, + [SPECIES_STARAVIA] = sAnims_Staravia, + [SPECIES_STARAPTOR] = sAnims_Staraptor, + [SPECIES_BIDOOF] = sAnims_Bidoof, + [SPECIES_BIBAREL] = sAnims_Bibarel, + [SPECIES_KRICKETOT] = sAnims_Kricketot, + [SPECIES_KRICKETUNE] = sAnims_Kricketune, + [SPECIES_SHINX] = sAnims_Shinx, + [SPECIES_LUXIO] = sAnims_Luxio, + [SPECIES_LUXRAY] = sAnims_Luxray, + [SPECIES_BUDEW] = sAnims_Budew, + [SPECIES_ROSERADE] = sAnims_Roserade, + [SPECIES_CRANIDOS] = sAnims_Cranidos, + [SPECIES_RAMPARDOS] = sAnims_Rampardos, + [SPECIES_SHIELDON] = sAnims_Shieldon, + [SPECIES_BASTIODON] = sAnims_Bastiodon, + [SPECIES_BURMY] = sAnims_Burmy, + [SPECIES_WORMADAM] = sAnims_Wormadam, + [SPECIES_MOTHIM] = sAnims_Mothim, + [SPECIES_COMBEE] = sAnims_Combee, + [SPECIES_VESPIQUEN] = sAnims_Vespiquen, + [SPECIES_PACHIRISU] = sAnims_Pachirisu, + [SPECIES_BUIZEL] = sAnims_Buizel, + [SPECIES_FLOATZEL] = sAnims_Floatzel, + [SPECIES_CHERUBI] = sAnims_Cherubi, + [SPECIES_CHERRIM] = sAnims_CherrimOvercast, + [SPECIES_SHELLOS] = sAnims_Shellos, + [SPECIES_GASTRODON] = sAnims_Gastrodon, + [SPECIES_AMBIPOM] = sAnims_Ambipom, + [SPECIES_DRIFLOON] = sAnims_Drifloon, + [SPECIES_DRIFBLIM] = sAnims_Drifblim, + [SPECIES_BUNEARY] = sAnims_Buneary, + [SPECIES_LOPUNNY] = sAnims_Lopunny, + [SPECIES_MISMAGIUS] = sAnims_Mismagius, + [SPECIES_HONCHKROW] = sAnims_Honchkrow, + [SPECIES_GLAMEOW] = sAnims_Glameow, + [SPECIES_PURUGLY] = sAnims_Purugly, + [SPECIES_CHINGLING] = sAnims_Chingling, + [SPECIES_STUNKY] = sAnims_Stunky, + [SPECIES_SKUNTANK] = sAnims_Skuntank, + [SPECIES_BRONZOR] = sAnims_Bronzor, + [SPECIES_BRONZONG] = sAnims_Bronzong, + [SPECIES_BONSLY] = sAnims_Bonsly, + [SPECIES_MIME_JR] = sAnims_MimeJr, + [SPECIES_HAPPINY] = sAnims_Happiny, + [SPECIES_CHATOT] = sAnims_Chatot, + [SPECIES_SPIRITOMB] = sAnims_Spiritomb, + [SPECIES_GIBLE] = sAnims_Gible, + [SPECIES_GABITE] = sAnims_Gabite, + [SPECIES_GARCHOMP] = sAnims_Garchomp, + [SPECIES_MUNCHLAX] = sAnims_Munchlax, + [SPECIES_RIOLU] = sAnims_Riolu, + [SPECIES_LUCARIO] = sAnims_Lucario, + [SPECIES_HIPPOPOTAS] = sAnims_Hippopotas, + [SPECIES_HIPPOWDON] = sAnims_Hippowdon, + [SPECIES_SKORUPI] = sAnims_Skorupi, + [SPECIES_DRAPION] = sAnims_Drapion, + [SPECIES_CROAGUNK] = sAnims_Croagunk, + [SPECIES_TOXICROAK] = sAnims_Toxicroak, + [SPECIES_CARNIVINE] = sAnims_Carnivine, + [SPECIES_FINNEON] = sAnims_Finneon, + [SPECIES_LUMINEON] = sAnims_Lumineon, + [SPECIES_MANTYKE] = sAnims_Mantyke, + [SPECIES_SNOVER] = sAnims_Snover, + [SPECIES_ABOMASNOW] = sAnims_Abomasnow, + [SPECIES_WEAVILE] = sAnims_Weavile, + [SPECIES_MAGNEZONE] = sAnims_Magnezone, + [SPECIES_LICKILICKY] = sAnims_Lickilicky, + [SPECIES_RHYPERIOR] = sAnims_Rhyperior, + [SPECIES_TANGROWTH] = sAnims_Tangrowth, + [SPECIES_ELECTIVIRE] = sAnims_Electivire, + [SPECIES_MAGMORTAR] = sAnims_Magmortar, + [SPECIES_TOGEKISS] = sAnims_Togekiss, + [SPECIES_YANMEGA] = sAnims_Yanmega, + [SPECIES_LEAFEON] = sAnims_Leafeon, + [SPECIES_GLACEON] = sAnims_Glaceon, + [SPECIES_GLISCOR] = sAnims_Gliscor, + [SPECIES_MAMOSWINE] = sAnims_Mamoswine, + [SPECIES_PORYGON_Z] = sAnims_PORYGON_Z, + [SPECIES_GALLADE] = sAnims_Gallade, + [SPECIES_PROBOPASS] = sAnims_Probopass, + [SPECIES_DUSKNOIR] = sAnims_Dusknoir, + [SPECIES_FROSLASS] = sAnims_Froslass, + [SPECIES_ROTOM] = sAnims_Rotom, + [SPECIES_UXIE] = sAnims_Uxie, + [SPECIES_MESPRIT] = sAnims_Mesprit, + [SPECIES_AZELF] = sAnims_Azelf, + [SPECIES_DIALGA] = sAnims_Dialga, + [SPECIES_PALKIA] = sAnims_Palkia, + [SPECIES_HEATRAN] = sAnims_Heatran, + [SPECIES_REGIGIGAS] = sAnims_Regigigas, + [SPECIES_GIRATINA] = sAnims_Giratina, + [SPECIES_CRESSELIA] = sAnims_Cresselia, + [SPECIES_PHIONE] = sAnims_Phione, + [SPECIES_MANAPHY] = sAnims_Manaphy, + [SPECIES_DARKRAI] = sAnims_Darkrai, + [SPECIES_SHAYMIN] = sAnims_Shaymin, + [SPECIES_ARCEUS] = sAnims_Arceus, #endif #if P_GEN_5_POKEMON == TRUE - [SPECIES_VICTINI] = sAnims_Victini, - [SPECIES_SNIVY] = sAnims_Snivy, - [SPECIES_SERVINE] = sAnims_Servine, - [SPECIES_SERPERIOR] = sAnims_Serperior, - [SPECIES_TEPIG] = sAnims_Tepig, - [SPECIES_PIGNITE] = sAnims_Pignite, - [SPECIES_EMBOAR] = sAnims_Emboar, - [SPECIES_OSHAWOTT] = sAnims_Oshawott, - [SPECIES_DEWOTT] = sAnims_Dewott, - [SPECIES_SAMUROTT] = sAnims_Samurott, - [SPECIES_PATRAT] = sAnims_Patrat, - [SPECIES_WATCHOG] = sAnims_Watchog, - [SPECIES_LILLIPUP] = sAnims_Lillipup, - [SPECIES_HERDIER] = sAnims_Herdier, - [SPECIES_STOUTLAND] = sAnims_Stoutland, - [SPECIES_PURRLOIN] = sAnims_Purrloin, - [SPECIES_LIEPARD] = sAnims_Liepard, - [SPECIES_PANSAGE] = sAnims_Pansage, - [SPECIES_SIMISAGE] = sAnims_Simisage, - [SPECIES_PANSEAR] = sAnims_Pansear, - [SPECIES_SIMISEAR] = sAnims_Simisear, - [SPECIES_PANPOUR] = sAnims_Panpour, - [SPECIES_SIMIPOUR] = sAnims_Simipour, - [SPECIES_MUNNA] = sAnims_Munna, - [SPECIES_MUSHARNA] = sAnims_Musharna, - [SPECIES_PIDOVE] = sAnims_Pidove, - [SPECIES_TRANQUILL] = sAnims_Tranquill, - [SPECIES_UNFEZANT] = sAnims_Unfezant, - [SPECIES_BLITZLE] = sAnims_Blitzle, - [SPECIES_ZEBSTRIKA] = sAnims_Zebstrika, - [SPECIES_ROGGENROLA] = sAnims_Roggenrola, - [SPECIES_BOLDORE] = sAnims_Boldore, - [SPECIES_GIGALITH] = sAnims_Gigalith, - [SPECIES_WOOBAT] = sAnims_Woobat, - [SPECIES_SWOOBAT] = sAnims_Swoobat, - [SPECIES_DRILBUR] = sAnims_Drilbur, - [SPECIES_EXCADRILL] = sAnims_Excadrill, - [SPECIES_AUDINO] = sAnims_Audino, - [SPECIES_TIMBURR] = sAnims_Timburr, - [SPECIES_GURDURR] = sAnims_Gurdurr, - [SPECIES_CONKELDURR] = sAnims_Conkeldurr, - [SPECIES_TYMPOLE] = sAnims_Tympole, - [SPECIES_PALPITOAD] = sAnims_Palpitoad, - [SPECIES_SEISMITOAD] = sAnims_Seismitoad, - [SPECIES_THROH] = sAnims_Throh, - [SPECIES_SAWK] = sAnims_Sawk, - [SPECIES_SEWADDLE] = sAnims_Sewaddle, - [SPECIES_SWADLOON] = sAnims_Swadloon, - [SPECIES_LEAVANNY] = sAnims_Leavanny, - [SPECIES_VENIPEDE] = sAnims_Venipede, - [SPECIES_WHIRLIPEDE] = sAnims_Whirlipede, - [SPECIES_SCOLIPEDE] = sAnims_Scolipede, - [SPECIES_COTTONEE] = sAnims_Cottonee, - [SPECIES_WHIMSICOTT] = sAnims_Whimsicott, - [SPECIES_PETILIL] = sAnims_Petilil, - [SPECIES_LILLIGANT] = sAnims_Lilligant, - [SPECIES_BASCULIN] = sAnims_Basculin, - [SPECIES_SANDILE] = sAnims_Sandile, - [SPECIES_KROKOROK] = sAnims_Krokorok, - [SPECIES_KROOKODILE] = sAnims_Krookodile, - [SPECIES_DARUMAKA] = sAnims_Darumaka, - [SPECIES_DARMANITAN] = sAnims_Darmanitan, - [SPECIES_MARACTUS] = sAnims_Maractus, - [SPECIES_DWEBBLE] = sAnims_Dwebble, - [SPECIES_CRUSTLE] = sAnims_Crustle, - [SPECIES_SCRAGGY] = sAnims_Scraggy, - [SPECIES_SCRAFTY] = sAnims_Scrafty, - [SPECIES_SIGILYPH] = sAnims_Sigilyph, - [SPECIES_YAMASK] = sAnims_Yamask, - [SPECIES_COFAGRIGUS] = sAnims_Cofagrigus, - [SPECIES_TIRTOUGA] = sAnims_Tirtouga, - [SPECIES_CARRACOSTA] = sAnims_Carracosta, - [SPECIES_ARCHEN] = sAnims_Archen, - [SPECIES_ARCHEOPS] = sAnims_Archeops, - [SPECIES_TRUBBISH] = sAnims_Trubbish, - [SPECIES_GARBODOR] = sAnims_Garbodor, - [SPECIES_ZORUA] = sAnims_Zorua, - [SPECIES_ZOROARK] = sAnims_Zoroark, - [SPECIES_MINCCINO] = sAnims_Minccino, - [SPECIES_CINCCINO] = sAnims_Cinccino, - [SPECIES_GOTHITA] = sAnims_Gothita, - [SPECIES_GOTHORITA] = sAnims_Gothorita, - [SPECIES_GOTHITELLE] = sAnims_Gothitelle, - [SPECIES_SOLOSIS] = sAnims_Solosis, - [SPECIES_DUOSION] = sAnims_Duosion, - [SPECIES_REUNICLUS] = sAnims_Reuniclus, - [SPECIES_DUCKLETT] = sAnims_Ducklett, - [SPECIES_SWANNA] = sAnims_Swanna, - [SPECIES_VANILLITE] = sAnims_Vanillite, - [SPECIES_VANILLISH] = sAnims_Vanillish, - [SPECIES_VANILLUXE] = sAnims_Vanilluxe, - [SPECIES_DEERLING] = sAnims_Deerling, - [SPECIES_SAWSBUCK] = sAnims_Sawsbuck, - [SPECIES_EMOLGA] = sAnims_Emolga, - [SPECIES_KARRABLAST] = sAnims_Karrablast, - [SPECIES_ESCAVALIER] = sAnims_Escavalier, - [SPECIES_FOONGUS] = sAnims_Foongus, - [SPECIES_AMOONGUSS] = sAnims_Amoonguss, - [SPECIES_FRILLISH] = sAnims_Frillish, - [SPECIES_JELLICENT] = sAnims_Jellicent, - [SPECIES_ALOMOMOLA] = sAnims_Alomomola, - [SPECIES_JOLTIK] = sAnims_Joltik, - [SPECIES_GALVANTULA] = sAnims_Galvantula, - [SPECIES_FERROSEED] = sAnims_Ferroseed, - [SPECIES_FERROTHORN] = sAnims_Ferrothorn, - [SPECIES_KLINK] = sAnims_Klink, - [SPECIES_KLANG] = sAnims_Klang, - [SPECIES_KLINKLANG] = sAnims_Klinklang, - [SPECIES_TYNAMO] = sAnims_Tynamo, - [SPECIES_EELEKTRIK] = sAnims_Eelektrik, - [SPECIES_EELEKTROSS] = sAnims_Eelektross, - [SPECIES_ELGYEM] = sAnims_Elgyem, - [SPECIES_BEHEEYEM] = sAnims_Beheeyem, - [SPECIES_LITWICK] = sAnims_Litwick, - [SPECIES_LAMPENT] = sAnims_Lampent, - [SPECIES_CHANDELURE] = sAnims_Chandelure, - [SPECIES_AXEW] = sAnims_Axew, - [SPECIES_FRAXURE] = sAnims_Fraxure, - [SPECIES_HAXORUS] = sAnims_Haxorus, - [SPECIES_CUBCHOO] = sAnims_Cubchoo, - [SPECIES_BEARTIC] = sAnims_Beartic, - [SPECIES_CRYOGONAL] = sAnims_Cryogonal, - [SPECIES_SHELMET] = sAnims_Shelmet, - [SPECIES_ACCELGOR] = sAnims_Accelgor, - [SPECIES_STUNFISK] = sAnims_Stunfisk, - [SPECIES_MIENFOO] = sAnims_Mienfoo, - [SPECIES_MIENSHAO] = sAnims_Mienshao, - [SPECIES_DRUDDIGON] = sAnims_Druddigon, - [SPECIES_GOLETT] = sAnims_Golett, - [SPECIES_GOLURK] = sAnims_Golurk, - [SPECIES_PAWNIARD] = sAnims_Pawniard, - [SPECIES_BISHARP] = sAnims_Bisharp, - [SPECIES_BOUFFALANT] = sAnims_Bouffalant, - [SPECIES_RUFFLET] = sAnims_Rufflet, - [SPECIES_BRAVIARY] = sAnims_Braviary, - [SPECIES_VULLABY] = sAnims_Vullaby, - [SPECIES_MANDIBUZZ] = sAnims_Mandibuzz, - [SPECIES_HEATMOR] = sAnims_Heatmor, - [SPECIES_DURANT] = sAnims_Durant, - [SPECIES_DEINO] = sAnims_Deino, - [SPECIES_ZWEILOUS] = sAnims_Zweilous, - [SPECIES_HYDREIGON] = sAnims_Hydreigon, - [SPECIES_LARVESTA] = sAnims_Larvesta, - [SPECIES_VOLCARONA] = sAnims_Volcarona, - [SPECIES_COBALION] = sAnims_Cobalion, - [SPECIES_TERRAKION] = sAnims_Terrakion, - [SPECIES_VIRIZION] = sAnims_Virizion, - [SPECIES_TORNADUS] = sAnims_Tornadus, - [SPECIES_THUNDURUS] = sAnims_Thundurus, - [SPECIES_RESHIRAM] = sAnims_Reshiram, - [SPECIES_ZEKROM] = sAnims_Zekrom, - [SPECIES_LANDORUS] = sAnims_Landorus, - [SPECIES_KYUREM] = sAnims_Kyurem, - [SPECIES_KELDEO] = sAnims_Keldeo, - [SPECIES_MELOETTA] = sAnims_Meloetta, - [SPECIES_GENESECT] = sAnims_Genesect, + [SPECIES_VICTINI] = sAnims_Victini, + [SPECIES_SNIVY] = sAnims_Snivy, + [SPECIES_SERVINE] = sAnims_Servine, + [SPECIES_SERPERIOR] = sAnims_Serperior, + [SPECIES_TEPIG] = sAnims_Tepig, + [SPECIES_PIGNITE] = sAnims_Pignite, + [SPECIES_EMBOAR] = sAnims_Emboar, + [SPECIES_OSHAWOTT] = sAnims_Oshawott, + [SPECIES_DEWOTT] = sAnims_Dewott, + [SPECIES_SAMUROTT] = sAnims_Samurott, + [SPECIES_PATRAT] = sAnims_Patrat, + [SPECIES_WATCHOG] = sAnims_Watchog, + [SPECIES_LILLIPUP] = sAnims_Lillipup, + [SPECIES_HERDIER] = sAnims_Herdier, + [SPECIES_STOUTLAND] = sAnims_Stoutland, + [SPECIES_PURRLOIN] = sAnims_Purrloin, + [SPECIES_LIEPARD] = sAnims_Liepard, + [SPECIES_PANSAGE] = sAnims_Pansage, + [SPECIES_SIMISAGE] = sAnims_Simisage, + [SPECIES_PANSEAR] = sAnims_Pansear, + [SPECIES_SIMISEAR] = sAnims_Simisear, + [SPECIES_PANPOUR] = sAnims_Panpour, + [SPECIES_SIMIPOUR] = sAnims_Simipour, + [SPECIES_MUNNA] = sAnims_Munna, + [SPECIES_MUSHARNA] = sAnims_Musharna, + [SPECIES_PIDOVE] = sAnims_Pidove, + [SPECIES_TRANQUILL] = sAnims_Tranquill, + [SPECIES_UNFEZANT] = sAnims_Unfezant, + [SPECIES_BLITZLE] = sAnims_Blitzle, + [SPECIES_ZEBSTRIKA] = sAnims_Zebstrika, + [SPECIES_ROGGENROLA] = sAnims_Roggenrola, + [SPECIES_BOLDORE] = sAnims_Boldore, + [SPECIES_GIGALITH] = sAnims_Gigalith, + [SPECIES_WOOBAT] = sAnims_Woobat, + [SPECIES_SWOOBAT] = sAnims_Swoobat, + [SPECIES_DRILBUR] = sAnims_Drilbur, + [SPECIES_EXCADRILL] = sAnims_Excadrill, + [SPECIES_AUDINO] = sAnims_Audino, + [SPECIES_TIMBURR] = sAnims_Timburr, + [SPECIES_GURDURR] = sAnims_Gurdurr, + [SPECIES_CONKELDURR] = sAnims_Conkeldurr, + [SPECIES_TYMPOLE] = sAnims_Tympole, + [SPECIES_PALPITOAD] = sAnims_Palpitoad, + [SPECIES_SEISMITOAD] = sAnims_Seismitoad, + [SPECIES_THROH] = sAnims_Throh, + [SPECIES_SAWK] = sAnims_Sawk, + [SPECIES_SEWADDLE] = sAnims_Sewaddle, + [SPECIES_SWADLOON] = sAnims_Swadloon, + [SPECIES_LEAVANNY] = sAnims_Leavanny, + [SPECIES_VENIPEDE] = sAnims_Venipede, + [SPECIES_WHIRLIPEDE] = sAnims_Whirlipede, + [SPECIES_SCOLIPEDE] = sAnims_Scolipede, + [SPECIES_COTTONEE] = sAnims_Cottonee, + [SPECIES_WHIMSICOTT] = sAnims_Whimsicott, + [SPECIES_PETILIL] = sAnims_Petilil, + [SPECIES_LILLIGANT] = sAnims_Lilligant, + [SPECIES_BASCULIN] = sAnims_Basculin, + [SPECIES_SANDILE] = sAnims_Sandile, + [SPECIES_KROKOROK] = sAnims_Krokorok, + [SPECIES_KROOKODILE] = sAnims_Krookodile, + [SPECIES_DARUMAKA] = sAnims_Darumaka, + [SPECIES_DARMANITAN] = sAnims_Darmanitan, + [SPECIES_MARACTUS] = sAnims_Maractus, + [SPECIES_DWEBBLE] = sAnims_Dwebble, + [SPECIES_CRUSTLE] = sAnims_Crustle, + [SPECIES_SCRAGGY] = sAnims_Scraggy, + [SPECIES_SCRAFTY] = sAnims_Scrafty, + [SPECIES_SIGILYPH] = sAnims_Sigilyph, + [SPECIES_YAMASK] = sAnims_Yamask, + [SPECIES_COFAGRIGUS] = sAnims_Cofagrigus, + [SPECIES_TIRTOUGA] = sAnims_Tirtouga, + [SPECIES_CARRACOSTA] = sAnims_Carracosta, + [SPECIES_ARCHEN] = sAnims_Archen, + [SPECIES_ARCHEOPS] = sAnims_Archeops, + [SPECIES_TRUBBISH] = sAnims_Trubbish, + [SPECIES_GARBODOR] = sAnims_Garbodor, + [SPECIES_ZORUA] = sAnims_Zorua, + [SPECIES_ZOROARK] = sAnims_Zoroark, + [SPECIES_MINCCINO] = sAnims_Minccino, + [SPECIES_CINCCINO] = sAnims_Cinccino, + [SPECIES_GOTHITA] = sAnims_Gothita, + [SPECIES_GOTHORITA] = sAnims_Gothorita, + [SPECIES_GOTHITELLE] = sAnims_Gothitelle, + [SPECIES_SOLOSIS] = sAnims_Solosis, + [SPECIES_DUOSION] = sAnims_Duosion, + [SPECIES_REUNICLUS] = sAnims_Reuniclus, + [SPECIES_DUCKLETT] = sAnims_Ducklett, + [SPECIES_SWANNA] = sAnims_Swanna, + [SPECIES_VANILLITE] = sAnims_Vanillite, + [SPECIES_VANILLISH] = sAnims_Vanillish, + [SPECIES_VANILLUXE] = sAnims_Vanilluxe, + [SPECIES_DEERLING] = sAnims_Deerling, + [SPECIES_SAWSBUCK] = sAnims_Sawsbuck, + [SPECIES_EMOLGA] = sAnims_Emolga, + [SPECIES_KARRABLAST] = sAnims_Karrablast, + [SPECIES_ESCAVALIER] = sAnims_Escavalier, + [SPECIES_FOONGUS] = sAnims_Foongus, + [SPECIES_AMOONGUSS] = sAnims_Amoonguss, + [SPECIES_FRILLISH] = sAnims_Frillish, + [SPECIES_JELLICENT] = sAnims_Jellicent, + [SPECIES_ALOMOMOLA] = sAnims_Alomomola, + [SPECIES_JOLTIK] = sAnims_Joltik, + [SPECIES_GALVANTULA] = sAnims_Galvantula, + [SPECIES_FERROSEED] = sAnims_Ferroseed, + [SPECIES_FERROTHORN] = sAnims_Ferrothorn, + [SPECIES_KLINK] = sAnims_Klink, + [SPECIES_KLANG] = sAnims_Klang, + [SPECIES_KLINKLANG] = sAnims_Klinklang, + [SPECIES_TYNAMO] = sAnims_Tynamo, + [SPECIES_EELEKTRIK] = sAnims_Eelektrik, + [SPECIES_EELEKTROSS] = sAnims_Eelektross, + [SPECIES_ELGYEM] = sAnims_Elgyem, + [SPECIES_BEHEEYEM] = sAnims_Beheeyem, + [SPECIES_LITWICK] = sAnims_Litwick, + [SPECIES_LAMPENT] = sAnims_Lampent, + [SPECIES_CHANDELURE] = sAnims_Chandelure, + [SPECIES_AXEW] = sAnims_Axew, + [SPECIES_FRAXURE] = sAnims_Fraxure, + [SPECIES_HAXORUS] = sAnims_Haxorus, + [SPECIES_CUBCHOO] = sAnims_Cubchoo, + [SPECIES_BEARTIC] = sAnims_Beartic, + [SPECIES_CRYOGONAL] = sAnims_Cryogonal, + [SPECIES_SHELMET] = sAnims_Shelmet, + [SPECIES_ACCELGOR] = sAnims_Accelgor, + [SPECIES_STUNFISK] = sAnims_Stunfisk, + [SPECIES_MIENFOO] = sAnims_Mienfoo, + [SPECIES_MIENSHAO] = sAnims_Mienshao, + [SPECIES_DRUDDIGON] = sAnims_Druddigon, + [SPECIES_GOLETT] = sAnims_Golett, + [SPECIES_GOLURK] = sAnims_Golurk, + [SPECIES_PAWNIARD] = sAnims_Pawniard, + [SPECIES_BISHARP] = sAnims_Bisharp, + [SPECIES_BOUFFALANT] = sAnims_Bouffalant, + [SPECIES_RUFFLET] = sAnims_Rufflet, + [SPECIES_BRAVIARY] = sAnims_Braviary, + [SPECIES_VULLABY] = sAnims_Vullaby, + [SPECIES_MANDIBUZZ] = sAnims_Mandibuzz, + [SPECIES_HEATMOR] = sAnims_Heatmor, + [SPECIES_DURANT] = sAnims_Durant, + [SPECIES_DEINO] = sAnims_Deino, + [SPECIES_ZWEILOUS] = sAnims_Zweilous, + [SPECIES_HYDREIGON] = sAnims_Hydreigon, + [SPECIES_LARVESTA] = sAnims_Larvesta, + [SPECIES_VOLCARONA] = sAnims_Volcarona, + [SPECIES_COBALION] = sAnims_Cobalion, + [SPECIES_TERRAKION] = sAnims_Terrakion, + [SPECIES_VIRIZION] = sAnims_Virizion, + [SPECIES_TORNADUS] = sAnims_Tornadus, + [SPECIES_THUNDURUS] = sAnims_Thundurus, + [SPECIES_RESHIRAM] = sAnims_Reshiram, + [SPECIES_ZEKROM] = sAnims_Zekrom, + [SPECIES_LANDORUS] = sAnims_Landorus, + [SPECIES_KYUREM] = sAnims_Kyurem, + [SPECIES_KELDEO] = sAnims_Keldeo, + [SPECIES_MELOETTA] = sAnims_Meloetta, + [SPECIES_GENESECT] = sAnims_Genesect, #endif #if P_GEN_6_POKEMON == TRUE - [SPECIES_CHESPIN] = sAnims_Chespin, - [SPECIES_QUILLADIN] = sAnims_Quilladin, - [SPECIES_CHESNAUGHT] = sAnims_Chesnaught, - [SPECIES_FENNEKIN] = sAnims_Fennekin, - [SPECIES_BRAIXEN] = sAnims_Braixen, - [SPECIES_DELPHOX] = sAnims_Delphox, - [SPECIES_FROAKIE] = sAnims_Froakie, - [SPECIES_FROGADIER] = sAnims_Frogadier, - [SPECIES_GRENINJA] = sAnims_Greninja, - [SPECIES_BUNNELBY] = sAnims_Bunnelby, - [SPECIES_DIGGERSBY] = sAnims_Diggersby, - [SPECIES_FLETCHLING] = sAnims_Fletchling, - [SPECIES_FLETCHINDER] = sAnims_Fletchinder, - [SPECIES_TALONFLAME] = sAnims_Talonflame, - [SPECIES_SCATTERBUG] = sAnims_Scatterbug, - [SPECIES_SPEWPA] = sAnims_Spewpa, - [SPECIES_VIVILLON] = sAnims_Vivillon, - [SPECIES_LITLEO] = sAnims_Litleo, - [SPECIES_PYROAR] = sAnims_Pyroar, - [SPECIES_FLABEBE] = sAnims_Flabebe, - [SPECIES_FLOETTE] = sAnims_Floette, - [SPECIES_FLORGES] = sAnims_Florges, - [SPECIES_SKIDDO] = sAnims_Skiddo, - [SPECIES_GOGOAT] = sAnims_Gogoat, - [SPECIES_PANCHAM] = sAnims_Pancham, - [SPECIES_PANGORO] = sAnims_Pangoro, - [SPECIES_FURFROU] = sAnims_Furfrou, - [SPECIES_ESPURR] = sAnims_Espurr, - [SPECIES_MEOWSTIC] = sAnims_Meowstic, - [SPECIES_HONEDGE] = sAnims_Honedge, - [SPECIES_DOUBLADE] = sAnims_Doublade, - [SPECIES_AEGISLASH] = sAnims_Aegislash, - [SPECIES_SPRITZEE] = sAnims_Spritzee, - [SPECIES_AROMATISSE] = sAnims_Aromatisse, - [SPECIES_SWIRLIX] = sAnims_Swirlix, - [SPECIES_SLURPUFF] = sAnims_Slurpuff, - [SPECIES_INKAY] = sAnims_Inkay, - [SPECIES_MALAMAR] = sAnims_Malamar, - [SPECIES_BINACLE] = sAnims_Binacle, - [SPECIES_BARBARACLE] = sAnims_Barbaracle, - [SPECIES_SKRELP] = sAnims_Skrelp, - [SPECIES_DRAGALGE] = sAnims_Dragalge, - [SPECIES_CLAUNCHER] = sAnims_Clauncher, - [SPECIES_CLAWITZER] = sAnims_Clawitzer, - [SPECIES_HELIOPTILE] = sAnims_Helioptile, - [SPECIES_HELIOLISK] = sAnims_Heliolisk, - [SPECIES_TYRUNT] = sAnims_Tyrunt, - [SPECIES_TYRANTRUM] = sAnims_Tyrantrum, - [SPECIES_AMAURA] = sAnims_Amaura, - [SPECIES_AURORUS] = sAnims_Aurorus, - [SPECIES_SYLVEON] = sAnims_Sylveon, - [SPECIES_HAWLUCHA] = sAnims_Hawlucha, - [SPECIES_DEDENNE] = sAnims_Dedenne, - [SPECIES_CARBINK] = sAnims_Carbink, - [SPECIES_GOOMY] = sAnims_Goomy, - [SPECIES_SLIGGOO] = sAnims_Sliggoo, - [SPECIES_GOODRA] = sAnims_Goodra, - [SPECIES_KLEFKI] = sAnims_Klefki, - [SPECIES_PHANTUMP] = sAnims_Phantump, - [SPECIES_TREVENANT] = sAnims_Trevenant, - [SPECIES_PUMPKABOO] = sAnims_Pumpkaboo, - [SPECIES_GOURGEIST] = sAnims_Gourgeist, - [SPECIES_BERGMITE] = sAnims_Bergmite, - [SPECIES_AVALUGG] = sAnims_Avalugg, - [SPECIES_NOIBAT] = sAnims_Noibat, - [SPECIES_NOIVERN] = sAnims_Noivern, - [SPECIES_XERNEAS] = sAnims_Xerneas, - [SPECIES_YVELTAL] = sAnims_Yveltal, - [SPECIES_ZYGARDE] = sAnims_Zygarde, - [SPECIES_DIANCIE] = sAnims_Diancie, - [SPECIES_HOOPA] = sAnims_Hoopa, - [SPECIES_VOLCANION] = sAnims_Volcanion, + [SPECIES_CHESPIN] = sAnims_Chespin, + [SPECIES_QUILLADIN] = sAnims_Quilladin, + [SPECIES_CHESNAUGHT] = sAnims_Chesnaught, + [SPECIES_FENNEKIN] = sAnims_Fennekin, + [SPECIES_BRAIXEN] = sAnims_Braixen, + [SPECIES_DELPHOX] = sAnims_Delphox, + [SPECIES_FROAKIE] = sAnims_Froakie, + [SPECIES_FROGADIER] = sAnims_Frogadier, + [SPECIES_GRENINJA] = sAnims_Greninja, + [SPECIES_BUNNELBY] = sAnims_Bunnelby, + [SPECIES_DIGGERSBY] = sAnims_Diggersby, + [SPECIES_FLETCHLING] = sAnims_Fletchling, + [SPECIES_FLETCHINDER] = sAnims_Fletchinder, + [SPECIES_TALONFLAME] = sAnims_Talonflame, + [SPECIES_SCATTERBUG] = sAnims_Scatterbug, + [SPECIES_SPEWPA] = sAnims_Spewpa, + [SPECIES_VIVILLON] = sAnims_Vivillon, + [SPECIES_LITLEO] = sAnims_Litleo, + [SPECIES_PYROAR] = sAnims_Pyroar, + [SPECIES_FLABEBE] = sAnims_Flabebe, + [SPECIES_FLOETTE] = sAnims_Floette, + [SPECIES_FLORGES] = sAnims_Florges, + [SPECIES_SKIDDO] = sAnims_Skiddo, + [SPECIES_GOGOAT] = sAnims_Gogoat, + [SPECIES_PANCHAM] = sAnims_Pancham, + [SPECIES_PANGORO] = sAnims_Pangoro, + [SPECIES_FURFROU] = sAnims_Furfrou, + [SPECIES_ESPURR] = sAnims_Espurr, + [SPECIES_MEOWSTIC] = sAnims_Meowstic, + [SPECIES_HONEDGE] = sAnims_Honedge, + [SPECIES_DOUBLADE] = sAnims_Doublade, + [SPECIES_AEGISLASH] = sAnims_Aegislash, + [SPECIES_SPRITZEE] = sAnims_Spritzee, + [SPECIES_AROMATISSE] = sAnims_Aromatisse, + [SPECIES_SWIRLIX] = sAnims_Swirlix, + [SPECIES_SLURPUFF] = sAnims_Slurpuff, + [SPECIES_INKAY] = sAnims_Inkay, + [SPECIES_MALAMAR] = sAnims_Malamar, + [SPECIES_BINACLE] = sAnims_Binacle, + [SPECIES_BARBARACLE] = sAnims_Barbaracle, + [SPECIES_SKRELP] = sAnims_Skrelp, + [SPECIES_DRAGALGE] = sAnims_Dragalge, + [SPECIES_CLAUNCHER] = sAnims_Clauncher, + [SPECIES_CLAWITZER] = sAnims_Clawitzer, + [SPECIES_HELIOPTILE] = sAnims_Helioptile, + [SPECIES_HELIOLISK] = sAnims_Heliolisk, + [SPECIES_TYRUNT] = sAnims_Tyrunt, + [SPECIES_TYRANTRUM] = sAnims_Tyrantrum, + [SPECIES_AMAURA] = sAnims_Amaura, + [SPECIES_AURORUS] = sAnims_Aurorus, + [SPECIES_SYLVEON] = sAnims_Sylveon, + [SPECIES_HAWLUCHA] = sAnims_Hawlucha, + [SPECIES_DEDENNE] = sAnims_Dedenne, + [SPECIES_CARBINK] = sAnims_Carbink, + [SPECIES_GOOMY] = sAnims_Goomy, + [SPECIES_SLIGGOO] = sAnims_Sliggoo, + [SPECIES_GOODRA] = sAnims_Goodra, + [SPECIES_KLEFKI] = sAnims_Klefki, + [SPECIES_PHANTUMP] = sAnims_Phantump, + [SPECIES_TREVENANT] = sAnims_Trevenant, + [SPECIES_PUMPKABOO] = sAnims_Pumpkaboo, + [SPECIES_GOURGEIST] = sAnims_Gourgeist, + [SPECIES_BERGMITE] = sAnims_Bergmite, + [SPECIES_AVALUGG] = sAnims_Avalugg, + [SPECIES_NOIBAT] = sAnims_Noibat, + [SPECIES_NOIVERN] = sAnims_Noivern, + [SPECIES_XERNEAS] = sAnims_Xerneas, + [SPECIES_YVELTAL] = sAnims_Yveltal, + [SPECIES_ZYGARDE] = sAnims_Zygarde, + [SPECIES_DIANCIE] = sAnims_Diancie, + [SPECIES_HOOPA] = sAnims_Hoopa, + [SPECIES_VOLCANION] = sAnims_Volcanion, #endif #if P_GEN_7_POKEMON == TRUE - [SPECIES_ROWLET] = sAnims_Rowlet, - [SPECIES_DARTRIX] = sAnims_Dartrix, - [SPECIES_DECIDUEYE] = sAnims_Decidueye, - [SPECIES_LITTEN] = sAnims_Litten, - [SPECIES_TORRACAT] = sAnims_Torracat, - [SPECIES_INCINEROAR] = sAnims_Incineroar, - [SPECIES_POPPLIO] = sAnims_Popplio, - [SPECIES_BRIONNE] = sAnims_Brionne, - [SPECIES_PRIMARINA] = sAnims_Primarina, - [SPECIES_PIKIPEK] = sAnims_Pikipek, - [SPECIES_TRUMBEAK] = sAnims_Trumbeak, - [SPECIES_TOUCANNON] = sAnims_Toucannon, - [SPECIES_YUNGOOS] = sAnims_Yungoos, - [SPECIES_GUMSHOOS] = sAnims_Gumshoos, - [SPECIES_GRUBBIN] = sAnims_Grubbin, - [SPECIES_CHARJABUG] = sAnims_Charjabug, - [SPECIES_VIKAVOLT] = sAnims_Vikavolt, - [SPECIES_CRABRAWLER] = sAnims_Crabrawler, - [SPECIES_CRABOMINABLE] = sAnims_Crabominable, - [SPECIES_ORICORIO] = sAnims_Oricorio, - [SPECIES_CUTIEFLY] = sAnims_Cutiefly, - [SPECIES_RIBOMBEE] = sAnims_Ribombee, - [SPECIES_ROCKRUFF] = sAnims_Rockruff, - [SPECIES_LYCANROC] = sAnims_Lycanroc, - [SPECIES_WISHIWASHI] = sAnims_Wishiwashi, - [SPECIES_MAREANIE] = sAnims_Mareanie, - [SPECIES_TOXAPEX] = sAnims_Toxapex, - [SPECIES_MUDBRAY] = sAnims_Mudbray, - [SPECIES_MUDSDALE] = sAnims_Mudsdale, - [SPECIES_DEWPIDER] = sAnims_Dewpider, - [SPECIES_ARAQUANID] = sAnims_Araquanid, - [SPECIES_FOMANTIS] = sAnims_Fomantis, - [SPECIES_LURANTIS] = sAnims_Lurantis, - [SPECIES_MORELULL] = sAnims_Morelull, - [SPECIES_SHIINOTIC] = sAnims_Shiinotic, - [SPECIES_SALANDIT] = sAnims_Salandit, - [SPECIES_SALAZZLE] = sAnims_Salazzle, - [SPECIES_STUFFUL] = sAnims_Stufful, - [SPECIES_BEWEAR] = sAnims_Bewear, - [SPECIES_BOUNSWEET] = sAnims_Bounsweet, - [SPECIES_STEENEE] = sAnims_Steenee, - [SPECIES_TSAREENA] = sAnims_Tsareena, - [SPECIES_COMFEY] = sAnims_Comfey, - [SPECIES_ORANGURU] = sAnims_Oranguru, - [SPECIES_PASSIMIAN] = sAnims_Passimian, - [SPECIES_WIMPOD] = sAnims_Wimpod, - [SPECIES_GOLISOPOD] = sAnims_Golisopod, - [SPECIES_SANDYGAST] = sAnims_Sandygast, - [SPECIES_PALOSSAND] = sAnims_Palossand, - [SPECIES_PYUKUMUKU] = sAnims_Pyukumuku, - [SPECIES_TYPE_NULL] = sAnims_TypeNull, - [SPECIES_SILVALLY] = sAnims_Silvally, - [SPECIES_MINIOR] = sAnims_Minior, - [SPECIES_KOMALA] = sAnims_Komala, - [SPECIES_TURTONATOR] = sAnims_Turtonator, - [SPECIES_TOGEDEMARU] = sAnims_Togedemaru, - [SPECIES_MIMIKYU] = sAnims_Mimikyu, - [SPECIES_BRUXISH] = sAnims_Bruxish, - [SPECIES_DRAMPA] = sAnims_Drampa, - [SPECIES_DHELMISE] = sAnims_Dhelmise, - [SPECIES_JANGMO_O] = sAnims_JANGMO_O, - [SPECIES_HAKAMO_O] = sAnims_HAKAMO_O, - [SPECIES_KOMMO_O] = sAnims_KOMMO_O, - [SPECIES_TAPU_KOKO] = sAnims_TapuKoko, - [SPECIES_TAPU_LELE] = sAnims_TapuLele, - [SPECIES_TAPU_BULU] = sAnims_TapuBulu, - [SPECIES_TAPU_FINI] = sAnims_TapuFini, - [SPECIES_COSMOG] = sAnims_Cosmog, - [SPECIES_COSMOEM] = sAnims_Cosmoem, - [SPECIES_SOLGALEO] = sAnims_Solgaleo, - [SPECIES_LUNALA] = sAnims_Lunala, - [SPECIES_NIHILEGO] = sAnims_Nihilego, - [SPECIES_BUZZWOLE] = sAnims_Buzzwole, - [SPECIES_PHEROMOSA] = sAnims_Pheromosa, - [SPECIES_XURKITREE] = sAnims_Xurkitree, - [SPECIES_CELESTEELA] = sAnims_Celesteela, - [SPECIES_KARTANA] = sAnims_Kartana, - [SPECIES_GUZZLORD] = sAnims_Guzzlord, - [SPECIES_NECROZMA] = sAnims_Necrozma, - [SPECIES_MAGEARNA] = sAnims_Magearna, - [SPECIES_MARSHADOW] = sAnims_Marshadow, - [SPECIES_POIPOLE] = sAnims_Poipole, - [SPECIES_NAGANADEL] = sAnims_Naganadel, - [SPECIES_STAKATAKA] = sAnims_Stakataka, - [SPECIES_BLACEPHALON] = sAnims_Blacephalon, - [SPECIES_ZERAORA] = sAnims_Zeraora, - [SPECIES_MELTAN] = sAnims_Meltan, - [SPECIES_MELMETAL] = sAnims_Melmetal, + [SPECIES_ROWLET] = sAnims_Rowlet, + [SPECIES_DARTRIX] = sAnims_Dartrix, + [SPECIES_DECIDUEYE] = sAnims_Decidueye, + [SPECIES_LITTEN] = sAnims_Litten, + [SPECIES_TORRACAT] = sAnims_Torracat, + [SPECIES_INCINEROAR] = sAnims_Incineroar, + [SPECIES_POPPLIO] = sAnims_Popplio, + [SPECIES_BRIONNE] = sAnims_Brionne, + [SPECIES_PRIMARINA] = sAnims_Primarina, + [SPECIES_PIKIPEK] = sAnims_Pikipek, + [SPECIES_TRUMBEAK] = sAnims_Trumbeak, + [SPECIES_TOUCANNON] = sAnims_Toucannon, + [SPECIES_YUNGOOS] = sAnims_Yungoos, + [SPECIES_GUMSHOOS] = sAnims_Gumshoos, + [SPECIES_GRUBBIN] = sAnims_Grubbin, + [SPECIES_CHARJABUG] = sAnims_Charjabug, + [SPECIES_VIKAVOLT] = sAnims_Vikavolt, + [SPECIES_CRABRAWLER] = sAnims_Crabrawler, + [SPECIES_CRABOMINABLE] = sAnims_Crabominable, + [SPECIES_ORICORIO] = sAnims_Oricorio, + [SPECIES_CUTIEFLY] = sAnims_Cutiefly, + [SPECIES_RIBOMBEE] = sAnims_Ribombee, + [SPECIES_ROCKRUFF] = sAnims_Rockruff, + [SPECIES_LYCANROC] = sAnims_Lycanroc, + [SPECIES_WISHIWASHI] = sAnims_Wishiwashi, + [SPECIES_MAREANIE] = sAnims_Mareanie, + [SPECIES_TOXAPEX] = sAnims_Toxapex, + [SPECIES_MUDBRAY] = sAnims_Mudbray, + [SPECIES_MUDSDALE] = sAnims_Mudsdale, + [SPECIES_DEWPIDER] = sAnims_Dewpider, + [SPECIES_ARAQUANID] = sAnims_Araquanid, + [SPECIES_FOMANTIS] = sAnims_Fomantis, + [SPECIES_LURANTIS] = sAnims_Lurantis, + [SPECIES_MORELULL] = sAnims_Morelull, + [SPECIES_SHIINOTIC] = sAnims_Shiinotic, + [SPECIES_SALANDIT] = sAnims_Salandit, + [SPECIES_SALAZZLE] = sAnims_Salazzle, + [SPECIES_STUFFUL] = sAnims_Stufful, + [SPECIES_BEWEAR] = sAnims_Bewear, + [SPECIES_BOUNSWEET] = sAnims_Bounsweet, + [SPECIES_STEENEE] = sAnims_Steenee, + [SPECIES_TSAREENA] = sAnims_Tsareena, + [SPECIES_COMFEY] = sAnims_Comfey, + [SPECIES_ORANGURU] = sAnims_Oranguru, + [SPECIES_PASSIMIAN] = sAnims_Passimian, + [SPECIES_WIMPOD] = sAnims_Wimpod, + [SPECIES_GOLISOPOD] = sAnims_Golisopod, + [SPECIES_SANDYGAST] = sAnims_Sandygast, + [SPECIES_PALOSSAND] = sAnims_Palossand, + [SPECIES_PYUKUMUKU] = sAnims_Pyukumuku, + [SPECIES_TYPE_NULL] = sAnims_TypeNull, + [SPECIES_SILVALLY] = sAnims_Silvally, + [SPECIES_MINIOR] = sAnims_Minior, + [SPECIES_KOMALA] = sAnims_Komala, + [SPECIES_TURTONATOR] = sAnims_Turtonator, + [SPECIES_TOGEDEMARU] = sAnims_Togedemaru, + [SPECIES_MIMIKYU] = sAnims_Mimikyu, + [SPECIES_BRUXISH] = sAnims_Bruxish, + [SPECIES_DRAMPA] = sAnims_Drampa, + [SPECIES_DHELMISE] = sAnims_Dhelmise, + [SPECIES_JANGMO_O] = sAnims_JANGMO_O, + [SPECIES_HAKAMO_O] = sAnims_HAKAMO_O, + [SPECIES_KOMMO_O] = sAnims_KOMMO_O, + [SPECIES_TAPU_KOKO] = sAnims_TapuKoko, + [SPECIES_TAPU_LELE] = sAnims_TapuLele, + [SPECIES_TAPU_BULU] = sAnims_TapuBulu, + [SPECIES_TAPU_FINI] = sAnims_TapuFini, + [SPECIES_COSMOG] = sAnims_Cosmog, + [SPECIES_COSMOEM] = sAnims_Cosmoem, + [SPECIES_SOLGALEO] = sAnims_Solgaleo, + [SPECIES_LUNALA] = sAnims_Lunala, + [SPECIES_NIHILEGO] = sAnims_Nihilego, + [SPECIES_BUZZWOLE] = sAnims_Buzzwole, + [SPECIES_PHEROMOSA] = sAnims_Pheromosa, + [SPECIES_XURKITREE] = sAnims_Xurkitree, + [SPECIES_CELESTEELA] = sAnims_Celesteela, + [SPECIES_KARTANA] = sAnims_Kartana, + [SPECIES_GUZZLORD] = sAnims_Guzzlord, + [SPECIES_NECROZMA] = sAnims_Necrozma, + [SPECIES_MAGEARNA] = sAnims_Magearna, + [SPECIES_MARSHADOW] = sAnims_Marshadow, + [SPECIES_POIPOLE] = sAnims_Poipole, + [SPECIES_NAGANADEL] = sAnims_Naganadel, + [SPECIES_STAKATAKA] = sAnims_Stakataka, + [SPECIES_BLACEPHALON] = sAnims_Blacephalon, + [SPECIES_ZERAORA] = sAnims_Zeraora, + [SPECIES_MELTAN] = sAnims_Meltan, + [SPECIES_MELMETAL] = sAnims_Melmetal, #endif #if P_GEN_8_POKEMON == TRUE - [SPECIES_GROOKEY] = sAnims_Grookey, - [SPECIES_THWACKEY] = sAnims_Thwackey, - [SPECIES_RILLABOOM] = sAnims_Rillaboom, - [SPECIES_SCORBUNNY] = sAnims_Scorbunny, - [SPECIES_RABOOT] = sAnims_Raboot, - [SPECIES_CINDERACE] = sAnims_Cinderace, - [SPECIES_SOBBLE] = sAnims_Sobble, - [SPECIES_DRIZZILE] = sAnims_Drizzile, - [SPECIES_INTELEON] = sAnims_Inteleon, - [SPECIES_SKWOVET] = sAnims_Skwovet, - [SPECIES_GREEDENT] = sAnims_Greedent, - [SPECIES_ROOKIDEE] = sAnims_Rookidee, - [SPECIES_CORVISQUIRE] = sAnims_Corvisquire, - [SPECIES_CORVIKNIGHT] = sAnims_Corviknight, - [SPECIES_BLIPBUG] = sAnims_Blipbug, - [SPECIES_DOTTLER] = sAnims_Dottler, - [SPECIES_ORBEETLE] = sAnims_Orbeetle, - [SPECIES_NICKIT] = sAnims_Nickit, - [SPECIES_THIEVUL] = sAnims_Thievul, - [SPECIES_GOSSIFLEUR] = sAnims_Gossifleur, - [SPECIES_ELDEGOSS] = sAnims_Eldegoss, - [SPECIES_WOOLOO] = sAnims_Wooloo, - [SPECIES_DUBWOOL] = sAnims_Dubwool, - [SPECIES_CHEWTLE] = sAnims_Chewtle, - [SPECIES_DREDNAW] = sAnims_Drednaw, - [SPECIES_YAMPER] = sAnims_Yamper, - [SPECIES_BOLTUND] = sAnims_Boltund, - [SPECIES_ROLYCOLY] = sAnims_Rolycoly, - [SPECIES_CARKOL] = sAnims_Carkol, - [SPECIES_COALOSSAL] = sAnims_Coalossal, - [SPECIES_APPLIN] = sAnims_Applin, - [SPECIES_FLAPPLE] = sAnims_Flapple, - [SPECIES_APPLETUN] = sAnims_Appletun, - [SPECIES_SILICOBRA] = sAnims_Silicobra, - [SPECIES_SANDACONDA] = sAnims_Sandaconda, - [SPECIES_CRAMORANT] = sAnims_Cramorant, - [SPECIES_ARROKUDA] = sAnims_Arrokuda, - [SPECIES_BARRASKEWDA] = sAnims_Barraskewda, - [SPECIES_TOXEL] = sAnims_Toxel, - [SPECIES_TOXTRICITY] = sAnims_Toxtricity, - [SPECIES_SIZZLIPEDE] = sAnims_Sizzlipede, - [SPECIES_CENTISKORCH] = sAnims_Centiskorch, - [SPECIES_CLOBBOPUS] = sAnims_Clobbopus, - [SPECIES_GRAPPLOCT] = sAnims_Grapploct, - [SPECIES_SINISTEA] = sAnims_Sinistea, - [SPECIES_POLTEAGEIST] = sAnims_Polteageist, - [SPECIES_HATENNA] = sAnims_Hatenna, - [SPECIES_HATTREM] = sAnims_Hattrem, - [SPECIES_HATTERENE] = sAnims_Hatterene, - [SPECIES_IMPIDIMP] = sAnims_Impidimp, - [SPECIES_MORGREM] = sAnims_Morgrem, - [SPECIES_GRIMMSNARL] = sAnims_Grimmsnarl, - [SPECIES_OBSTAGOON] = sAnims_Obstagoon, - [SPECIES_PERRSERKER] = sAnims_Perrserker, - [SPECIES_CURSOLA] = sAnims_Cursola, - [SPECIES_SIRFETCHD] = sAnims_Sirfetchd, - [SPECIES_MR_RIME] = sAnims_MrRime, - [SPECIES_RUNERIGUS] = sAnims_Runerigus, - [SPECIES_MILCERY] = sAnims_Milcery, - [SPECIES_ALCREMIE] = sAnims_Alcremie, - [SPECIES_FALINKS] = sAnims_Falinks, - [SPECIES_PINCURCHIN] = sAnims_Pincurchin, - [SPECIES_SNOM] = sAnims_Snom, - [SPECIES_FROSMOTH] = sAnims_Frosmoth, - [SPECIES_STONJOURNER] = sAnims_Stonjourner, - [SPECIES_EISCUE] = sAnims_Eiscue, - [SPECIES_INDEEDEE] = sAnims_Indeedee, - [SPECIES_MORPEKO] = sAnims_Morpeko, - [SPECIES_CUFANT] = sAnims_Cufant, - [SPECIES_COPPERAJAH] = sAnims_Copperajah, - [SPECIES_DRACOZOLT] = sAnims_Dracozolt, - [SPECIES_ARCTOZOLT] = sAnims_Arctozolt, - [SPECIES_DRACOVISH] = sAnims_Dracovish, - [SPECIES_ARCTOVISH] = sAnims_Arctovish, - [SPECIES_DURALUDON] = sAnims_Duraludon, - [SPECIES_DREEPY] = sAnims_Dreepy, - [SPECIES_DRAKLOAK] = sAnims_Drakloak, - [SPECIES_DRAGAPULT] = sAnims_Dragapult, - [SPECIES_ZACIAN] = sAnims_Zacian, - [SPECIES_ZAMAZENTA] = sAnims_Zamazenta, - [SPECIES_ETERNATUS] = sAnims_Eternatus, - [SPECIES_KUBFU] = sAnims_Kubfu, - [SPECIES_URSHIFU] = sAnims_Urshifu, - [SPECIES_ZARUDE] = sAnims_Zarude, - [SPECIES_REGIELEKI] = sAnims_Regieleki, - [SPECIES_REGIDRAGO] = sAnims_Regidrago, - [SPECIES_GLASTRIER] = sAnims_Glastrier, - [SPECIES_SPECTRIER] = sAnims_Spectrier, - [SPECIES_CALYREX] = sAnims_Calyrex, - [SPECIES_WYRDEER] = sAnims_Wyrdeer, - [SPECIES_KLEAVOR] = sAnims_Kleavor, - [SPECIES_URSALUNA] = sAnims_Ursaluna, - [SPECIES_BASCULEGION] = sAnims_Basculegion, - [SPECIES_SNEASLER] = sAnims_Sneasler, - [SPECIES_OVERQWIL] = sAnims_Overqwil, - [SPECIES_ENAMORUS] = sAnims_Enamorus, + [SPECIES_GROOKEY] = sAnims_Grookey, + [SPECIES_THWACKEY] = sAnims_Thwackey, + [SPECIES_RILLABOOM] = sAnims_Rillaboom, + [SPECIES_SCORBUNNY] = sAnims_Scorbunny, + [SPECIES_RABOOT] = sAnims_Raboot, + [SPECIES_CINDERACE] = sAnims_Cinderace, + [SPECIES_SOBBLE] = sAnims_Sobble, + [SPECIES_DRIZZILE] = sAnims_Drizzile, + [SPECIES_INTELEON] = sAnims_Inteleon, + [SPECIES_SKWOVET] = sAnims_Skwovet, + [SPECIES_GREEDENT] = sAnims_Greedent, + [SPECIES_ROOKIDEE] = sAnims_Rookidee, + [SPECIES_CORVISQUIRE] = sAnims_Corvisquire, + [SPECIES_CORVIKNIGHT] = sAnims_Corviknight, + [SPECIES_BLIPBUG] = sAnims_Blipbug, + [SPECIES_DOTTLER] = sAnims_Dottler, + [SPECIES_ORBEETLE] = sAnims_Orbeetle, + [SPECIES_NICKIT] = sAnims_Nickit, + [SPECIES_THIEVUL] = sAnims_Thievul, + [SPECIES_GOSSIFLEUR] = sAnims_Gossifleur, + [SPECIES_ELDEGOSS] = sAnims_Eldegoss, + [SPECIES_WOOLOO] = sAnims_Wooloo, + [SPECIES_DUBWOOL] = sAnims_Dubwool, + [SPECIES_CHEWTLE] = sAnims_Chewtle, + [SPECIES_DREDNAW] = sAnims_Drednaw, + [SPECIES_YAMPER] = sAnims_Yamper, + [SPECIES_BOLTUND] = sAnims_Boltund, + [SPECIES_ROLYCOLY] = sAnims_Rolycoly, + [SPECIES_CARKOL] = sAnims_Carkol, + [SPECIES_COALOSSAL] = sAnims_Coalossal, + [SPECIES_APPLIN] = sAnims_Applin, + [SPECIES_FLAPPLE] = sAnims_Flapple, + [SPECIES_APPLETUN] = sAnims_Appletun, + [SPECIES_SILICOBRA] = sAnims_Silicobra, + [SPECIES_SANDACONDA] = sAnims_Sandaconda, + [SPECIES_CRAMORANT] = sAnims_Cramorant, + [SPECIES_ARROKUDA] = sAnims_Arrokuda, + [SPECIES_BARRASKEWDA] = sAnims_Barraskewda, + [SPECIES_TOXEL] = sAnims_Toxel, + [SPECIES_TOXTRICITY] = sAnims_Toxtricity, + [SPECIES_SIZZLIPEDE] = sAnims_Sizzlipede, + [SPECIES_CENTISKORCH] = sAnims_Centiskorch, + [SPECIES_CLOBBOPUS] = sAnims_Clobbopus, + [SPECIES_GRAPPLOCT] = sAnims_Grapploct, + [SPECIES_SINISTEA] = sAnims_Sinistea, + [SPECIES_POLTEAGEIST] = sAnims_Polteageist, + [SPECIES_HATENNA] = sAnims_Hatenna, + [SPECIES_HATTREM] = sAnims_Hattrem, + [SPECIES_HATTERENE] = sAnims_Hatterene, + [SPECIES_IMPIDIMP] = sAnims_Impidimp, + [SPECIES_MORGREM] = sAnims_Morgrem, + [SPECIES_GRIMMSNARL] = sAnims_Grimmsnarl, + [SPECIES_OBSTAGOON] = sAnims_Obstagoon, + [SPECIES_PERRSERKER] = sAnims_Perrserker, + [SPECIES_CURSOLA] = sAnims_Cursola, + [SPECIES_SIRFETCHD] = sAnims_Sirfetchd, + [SPECIES_MR_RIME] = sAnims_MrRime, + [SPECIES_RUNERIGUS] = sAnims_Runerigus, + [SPECIES_MILCERY] = sAnims_Milcery, + [SPECIES_ALCREMIE] = sAnims_Alcremie, + [SPECIES_FALINKS] = sAnims_Falinks, + [SPECIES_PINCURCHIN] = sAnims_Pincurchin, + [SPECIES_SNOM] = sAnims_Snom, + [SPECIES_FROSMOTH] = sAnims_Frosmoth, + [SPECIES_STONJOURNER] = sAnims_Stonjourner, + [SPECIES_EISCUE] = sAnims_Eiscue, + [SPECIES_INDEEDEE] = sAnims_Indeedee, + [SPECIES_MORPEKO] = sAnims_Morpeko, + [SPECIES_CUFANT] = sAnims_Cufant, + [SPECIES_COPPERAJAH] = sAnims_Copperajah, + [SPECIES_DRACOZOLT] = sAnims_Dracozolt, + [SPECIES_ARCTOZOLT] = sAnims_Arctozolt, + [SPECIES_DRACOVISH] = sAnims_Dracovish, + [SPECIES_ARCTOVISH] = sAnims_Arctovish, + [SPECIES_DURALUDON] = sAnims_Duraludon, + [SPECIES_DREEPY] = sAnims_Dreepy, + [SPECIES_DRAKLOAK] = sAnims_Drakloak, + [SPECIES_DRAGAPULT] = sAnims_Dragapult, + [SPECIES_ZACIAN] = sAnims_Zacian, + [SPECIES_ZAMAZENTA] = sAnims_Zamazenta, + [SPECIES_ETERNATUS] = sAnims_Eternatus, + [SPECIES_KUBFU] = sAnims_Kubfu, + [SPECIES_URSHIFU] = sAnims_Urshifu, + [SPECIES_ZARUDE] = sAnims_Zarude, + [SPECIES_REGIELEKI] = sAnims_Regieleki, + [SPECIES_REGIDRAGO] = sAnims_Regidrago, + [SPECIES_GLASTRIER] = sAnims_Glastrier, + [SPECIES_SPECTRIER] = sAnims_Spectrier, + [SPECIES_CALYREX] = sAnims_Calyrex, + [SPECIES_WYRDEER] = sAnims_Wyrdeer, + [SPECIES_KLEAVOR] = sAnims_Kleavor, + [SPECIES_URSALUNA] = sAnims_Ursaluna, + [SPECIES_BASCULEGION] = sAnims_Basculegion, + [SPECIES_SNEASLER] = sAnims_Sneasler, + [SPECIES_OVERQWIL] = sAnims_Overqwil, + [SPECIES_ENAMORUS] = sAnims_Enamorus, #endif - [SPECIES_VENUSAUR_MEGA] = sAnims_VenusaurMega, - [SPECIES_CHARIZARD_MEGA_X] = sAnims_CHARIZARD_MEGA_X, - [SPECIES_CHARIZARD_MEGA_Y] = sAnims_CHARIZARD_MEGA_Y, - [SPECIES_BLASTOISE_MEGA] = sAnims_BlastoiseMega, - [SPECIES_BEEDRILL_MEGA] = sAnims_BeedrillMega, - [SPECIES_PIDGEOT_MEGA] = sAnims_PidgeotMega, - [SPECIES_ALAKAZAM_MEGA] = sAnims_AlakazamMega, - [SPECIES_SLOWBRO_MEGA] = sAnims_SlowbroMega, - [SPECIES_GENGAR_MEGA] = sAnims_GengarMega, - [SPECIES_KANGASKHAN_MEGA] = sAnims_KangaskhanMega, - [SPECIES_PINSIR_MEGA] = sAnims_PinsirMega, - [SPECIES_GYARADOS_MEGA] = sAnims_GyaradosMega, - [SPECIES_AERODACTYL_MEGA] = sAnims_AerodactylMega, - [SPECIES_MEWTWO_MEGA_X] = sAnims_MEWTWO_MEGA_X, - [SPECIES_MEWTWO_MEGA_Y] = sAnims_MEWTWO_MEGA_Y, - [SPECIES_AMPHAROS_MEGA] = sAnims_AmpharosMega, - [SPECIES_STEELIX_MEGA] = sAnims_SteelixMega, - [SPECIES_SCIZOR_MEGA] = sAnims_ScizorMega, - [SPECIES_HERACROSS_MEGA] = sAnims_HeracrossMega, - [SPECIES_HOUNDOOM_MEGA] = sAnims_HoundoomMega, - [SPECIES_TYRANITAR_MEGA] = sAnims_TyranitarMega, - [SPECIES_SCEPTILE_MEGA] = sAnims_SceptileMega, - [SPECIES_BLAZIKEN_MEGA] = sAnims_BlazikenMega, - [SPECIES_SWAMPERT_MEGA] = sAnims_SwampertMega, - [SPECIES_GARDEVOIR_MEGA] = sAnims_GardevoirMega, - [SPECIES_SABLEYE_MEGA] = sAnims_SableyeMega, - [SPECIES_MAWILE_MEGA] = sAnims_MawileMega, - [SPECIES_AGGRON_MEGA] = sAnims_AggronMega, - [SPECIES_MEDICHAM_MEGA] = sAnims_MedichamMega, - [SPECIES_MANECTRIC_MEGA] = sAnims_ManectricMega, - [SPECIES_SHARPEDO_MEGA] = sAnims_SharpedoMega, - [SPECIES_CAMERUPT_MEGA] = sAnims_CameruptMega, - [SPECIES_ALTARIA_MEGA] = sAnims_AltariaMega, - [SPECIES_BANETTE_MEGA] = sAnims_BanetteMega, - [SPECIES_ABSOL_MEGA] = sAnims_AbsolMega, - [SPECIES_GLALIE_MEGA] = sAnims_GlalieMega, - [SPECIES_SALAMENCE_MEGA] = sAnims_SalamenceMega, - [SPECIES_METAGROSS_MEGA] = sAnims_MetagrossMega, - [SPECIES_LATIAS_MEGA] = sAnims_LatiasMega, - [SPECIES_LATIOS_MEGA] = sAnims_LatiosMega, + // Mega/Primal Forms + [SPECIES_VENUSAUR_MEGA] = sAnims_VenusaurMega, + [SPECIES_CHARIZARD_MEGA_X] = sAnims_CHARIZARD_MEGA_X, + [SPECIES_CHARIZARD_MEGA_Y] = sAnims_CHARIZARD_MEGA_Y, + [SPECIES_BLASTOISE_MEGA] = sAnims_BlastoiseMega, + [SPECIES_BEEDRILL_MEGA] = sAnims_BeedrillMega, + [SPECIES_PIDGEOT_MEGA] = sAnims_PidgeotMega, + [SPECIES_ALAKAZAM_MEGA] = sAnims_AlakazamMega, + [SPECIES_SLOWBRO_MEGA] = sAnims_SlowbroMega, + [SPECIES_GENGAR_MEGA] = sAnims_GengarMega, + [SPECIES_KANGASKHAN_MEGA] = sAnims_KangaskhanMega, + [SPECIES_PINSIR_MEGA] = sAnims_PinsirMega, + [SPECIES_GYARADOS_MEGA] = sAnims_GyaradosMega, + [SPECIES_AERODACTYL_MEGA] = sAnims_AerodactylMega, + [SPECIES_MEWTWO_MEGA_X] = sAnims_MEWTWO_MEGA_X, + [SPECIES_MEWTWO_MEGA_Y] = sAnims_MEWTWO_MEGA_Y, + [SPECIES_AMPHAROS_MEGA] = sAnims_AmpharosMega, + [SPECIES_STEELIX_MEGA] = sAnims_SteelixMega, + [SPECIES_SCIZOR_MEGA] = sAnims_ScizorMega, + [SPECIES_HERACROSS_MEGA] = sAnims_HeracrossMega, + [SPECIES_HOUNDOOM_MEGA] = sAnims_HoundoomMega, + [SPECIES_TYRANITAR_MEGA] = sAnims_TyranitarMega, + [SPECIES_SCEPTILE_MEGA] = sAnims_SceptileMega, + [SPECIES_BLAZIKEN_MEGA] = sAnims_BlazikenMega, + [SPECIES_SWAMPERT_MEGA] = sAnims_SwampertMega, + [SPECIES_GARDEVOIR_MEGA] = sAnims_GardevoirMega, + [SPECIES_SABLEYE_MEGA] = sAnims_SableyeMega, + [SPECIES_MAWILE_MEGA] = sAnims_MawileMega, + [SPECIES_AGGRON_MEGA] = sAnims_AggronMega, + [SPECIES_MEDICHAM_MEGA] = sAnims_MedichamMega, + [SPECIES_MANECTRIC_MEGA] = sAnims_ManectricMega, + [SPECIES_SHARPEDO_MEGA] = sAnims_SharpedoMega, + [SPECIES_CAMERUPT_MEGA] = sAnims_CameruptMega, + [SPECIES_ALTARIA_MEGA] = sAnims_AltariaMega, + [SPECIES_BANETTE_MEGA] = sAnims_BanetteMega, + [SPECIES_ABSOL_MEGA] = sAnims_AbsolMega, + [SPECIES_GLALIE_MEGA] = sAnims_GlalieMega, + [SPECIES_SALAMENCE_MEGA] = sAnims_SalamenceMega, + [SPECIES_METAGROSS_MEGA] = sAnims_MetagrossMega, + [SPECIES_LATIAS_MEGA] = sAnims_LatiasMega, + [SPECIES_LATIOS_MEGA] = sAnims_LatiosMega, #if P_GEN_4_POKEMON == TRUE - [SPECIES_LOPUNNY_MEGA] = sAnims_LopunnyMega, - [SPECIES_GARCHOMP_MEGA] = sAnims_GarchompMega, - [SPECIES_LUCARIO_MEGA] = sAnims_LucarioMega, - [SPECIES_ABOMASNOW_MEGA] = sAnims_AbomasnowMega, - [SPECIES_GALLADE_MEGA] = sAnims_GalladeMega, + [SPECIES_LOPUNNY_MEGA] = sAnims_LopunnyMega, + [SPECIES_GARCHOMP_MEGA] = sAnims_GarchompMega, + [SPECIES_LUCARIO_MEGA] = sAnims_LucarioMega, + [SPECIES_ABOMASNOW_MEGA] = sAnims_AbomasnowMega, + [SPECIES_GALLADE_MEGA] = sAnims_GalladeMega, #endif #if P_GEN_5_POKEMON == TRUE - [SPECIES_AUDINO_MEGA] = sAnims_AudinoMega, + [SPECIES_AUDINO_MEGA] = sAnims_AudinoMega, #endif #if P_GEN_6_POKEMON == TRUE - [SPECIES_DIANCIE_MEGA] = sAnims_DiancieMega, + [SPECIES_DIANCIE_MEGA] = sAnims_DiancieMega, #endif - [SPECIES_RAYQUAZA_MEGA] = sAnims_RayquazaMega, - [SPECIES_KYOGRE_PRIMAL] = sAnims_KyogrePrimal, - [SPECIES_GROUDON_PRIMAL] = sAnims_GroudonPrimal, - [SPECIES_RATTATA_ALOLAN] = sAnims_RattataAlolan, - [SPECIES_RATICATE_ALOLAN] = sAnims_RaticateAlolan, - [SPECIES_RAICHU_ALOLAN] = sAnims_RaichuAlolan, - [SPECIES_SANDSHREW_ALOLAN] = sAnims_SandshrewAlolan, - [SPECIES_SANDSLASH_ALOLAN] = sAnims_SandslashAlolan, - [SPECIES_VULPIX_ALOLAN] = sAnims_VulpixAlolan, - [SPECIES_NINETALES_ALOLAN] = sAnims_NinetalesAlolan, - [SPECIES_DIGLETT_ALOLAN] = sAnims_DiglettAlolan, - [SPECIES_DUGTRIO_ALOLAN] = sAnims_DugtrioAlolan, - [SPECIES_MEOWTH_ALOLAN] = sAnims_MeowthAlolan, - [SPECIES_PERSIAN_ALOLAN] = sAnims_PersianAlolan, - [SPECIES_GEODUDE_ALOLAN] = sAnims_GeodudeAlolan, - [SPECIES_GRAVELER_ALOLAN] = sAnims_GravelerAlolan, - [SPECIES_GOLEM_ALOLAN] = sAnims_GolemAlolan, - [SPECIES_GRIMER_ALOLAN] = sAnims_GrimerAlolan, - [SPECIES_MUK_ALOLAN] = sAnims_MukAlolan, - [SPECIES_EXEGGUTOR_ALOLAN] = sAnims_ExeggutorAlolan, - [SPECIES_MAROWAK_ALOLAN] = sAnims_MarowakAlolan, - [SPECIES_MEOWTH_GALARIAN] = sAnims_MeowthGalarian, - [SPECIES_PONYTA_GALARIAN] = sAnims_PonytaGalarian, - [SPECIES_RAPIDASH_GALARIAN] = sAnims_RapidashGalarian, - [SPECIES_SLOWPOKE_GALARIAN] = sAnims_SlowpokeGalarian, - [SPECIES_SLOWBRO_GALARIAN] = sAnims_SlowbroGalarian, - [SPECIES_FARFETCHD_GALARIAN] = sAnims_FarfetchdGalarian, - [SPECIES_WEEZING_GALARIAN] = sAnims_WeezingGalarian, - [SPECIES_MR_MIME_GALARIAN] = sAnims_MrMimeGalarian, - [SPECIES_ARTICUNO_GALARIAN] = sAnims_ArticunoGalarian, - [SPECIES_ZAPDOS_GALARIAN] = sAnims_ZapdosGalarian, - [SPECIES_MOLTRES_GALARIAN] = sAnims_MoltresGalarian, - [SPECIES_SLOWKING_GALARIAN] = sAnims_SlowkingGalarian, - [SPECIES_CORSOLA_GALARIAN] = sAnims_CorsolaGalarian, - [SPECIES_ZIGZAGOON_GALARIAN] = sAnims_ZigzagoonGalarian, - [SPECIES_LINOONE_GALARIAN] = sAnims_LinooneGalarian, + [SPECIES_RAYQUAZA_MEGA] = sAnims_RayquazaMega, + [SPECIES_KYOGRE_PRIMAL] = sAnims_KyogrePrimal, + [SPECIES_GROUDON_PRIMAL] = sAnims_GroudonPrimal, + // Alolan Forms + [SPECIES_RATTATA_ALOLAN] = sAnims_RattataAlolan, + [SPECIES_RATICATE_ALOLAN] = sAnims_RaticateAlolan, + [SPECIES_RAICHU_ALOLAN] = sAnims_RaichuAlolan, + [SPECIES_SANDSHREW_ALOLAN] = sAnims_SandshrewAlolan, + [SPECIES_SANDSLASH_ALOLAN] = sAnims_SandslashAlolan, + [SPECIES_VULPIX_ALOLAN] = sAnims_VulpixAlolan, + [SPECIES_NINETALES_ALOLAN] = sAnims_NinetalesAlolan, + [SPECIES_DIGLETT_ALOLAN] = sAnims_DiglettAlolan, + [SPECIES_DUGTRIO_ALOLAN] = sAnims_DugtrioAlolan, + [SPECIES_MEOWTH_ALOLAN] = sAnims_MeowthAlolan, + [SPECIES_PERSIAN_ALOLAN] = sAnims_PersianAlolan, + [SPECIES_GEODUDE_ALOLAN] = sAnims_GeodudeAlolan, + [SPECIES_GRAVELER_ALOLAN] = sAnims_GravelerAlolan, + [SPECIES_GOLEM_ALOLAN] = sAnims_GolemAlolan, + [SPECIES_GRIMER_ALOLAN] = sAnims_GrimerAlolan, + [SPECIES_MUK_ALOLAN] = sAnims_MukAlolan, + [SPECIES_EXEGGUTOR_ALOLAN] = sAnims_ExeggutorAlolan, + [SPECIES_MAROWAK_ALOLAN] = sAnims_MarowakAlolan, + // Galarian Forms + [SPECIES_MEOWTH_GALARIAN] = sAnims_MeowthGalarian, + [SPECIES_PONYTA_GALARIAN] = sAnims_PonytaGalarian, + [SPECIES_RAPIDASH_GALARIAN] = sAnims_RapidashGalarian, + [SPECIES_SLOWPOKE_GALARIAN] = sAnims_SlowpokeGalarian, + [SPECIES_SLOWBRO_GALARIAN] = sAnims_SlowbroGalarian, + [SPECIES_FARFETCHD_GALARIAN] = sAnims_FarfetchdGalarian, + [SPECIES_WEEZING_GALARIAN] = sAnims_WeezingGalarian, + [SPECIES_MR_MIME_GALARIAN] = sAnims_MrMimeGalarian, + [SPECIES_ARTICUNO_GALARIAN] = sAnims_ArticunoGalarian, + [SPECIES_ZAPDOS_GALARIAN] = sAnims_ZapdosGalarian, + [SPECIES_MOLTRES_GALARIAN] = sAnims_MoltresGalarian, + [SPECIES_SLOWKING_GALARIAN] = sAnims_SlowkingGalarian, + [SPECIES_CORSOLA_GALARIAN] = sAnims_CorsolaGalarian, + [SPECIES_ZIGZAGOON_GALARIAN] = sAnims_ZigzagoonGalarian, + [SPECIES_LINOONE_GALARIAN] = sAnims_LinooneGalarian, #if P_GEN_5_POKEMON == TRUE - [SPECIES_DARUMAKA_GALARIAN] = sAnims_DarumakaGalarian, - [SPECIES_DARMANITAN_GALARIAN] = sAnims_DarmanitanGalarian, - [SPECIES_YAMASK_GALARIAN] = sAnims_YamaskGalarian, - [SPECIES_STUNFISK_GALARIAN] = sAnims_StunfiskGalarian, + [SPECIES_DARUMAKA_GALARIAN] = sAnims_DarumakaGalarian, + [SPECIES_DARMANITAN_GALARIAN] = sAnims_DarmanitanGalarian, + [SPECIES_YAMASK_GALARIAN] = sAnims_YamaskGalarian, + [SPECIES_STUNFISK_GALARIAN] = sAnims_StunfiskGalarian, #endif - [SPECIES_GROWLITHE_HISUIAN] = sAnims_GrowlitheHisuian, - [SPECIES_ARCANINE_HISUIAN] = sAnims_ArcanineHisuian, - [SPECIES_VOLTORB_HISUIAN] = sAnims_VoltorbHisuian, - [SPECIES_ELECTRODE_HISUIAN] = sAnims_ElectrodeHisuian, - [SPECIES_TYPHLOSION_HISUIAN] = sAnims_TyphlosionHisuian, - [SPECIES_QWILFISH_HISUIAN] = sAnims_QwilfishHisuian, - [SPECIES_SNEASEL_HISUIAN] = sAnims_SneaselHisuian, + // Hisuian Forms + [SPECIES_GROWLITHE_HISUIAN] = sAnims_GrowlitheHisuian, + [SPECIES_ARCANINE_HISUIAN] = sAnims_ArcanineHisuian, + [SPECIES_VOLTORB_HISUIAN] = sAnims_VoltorbHisuian, + [SPECIES_ELECTRODE_HISUIAN] = sAnims_ElectrodeHisuian, + [SPECIES_TYPHLOSION_HISUIAN] = sAnims_TyphlosionHisuian, + [SPECIES_QWILFISH_HISUIAN] = sAnims_QwilfishHisuian, + [SPECIES_SNEASEL_HISUIAN] = sAnims_SneaselHisuian, #if P_GEN_5_POKEMON == TRUE - [SPECIES_SAMUROTT_HISUIAN] = sAnims_SamurottHisuian, - [SPECIES_LILLIGANT_HISUIAN] = sAnims_LilligantHisuian, - [SPECIES_ZORUA_HISUIAN] = sAnims_ZoruaHisuian, - [SPECIES_ZOROARK_HISUIAN] = sAnims_ZoroarkHisuian, - [SPECIES_BRAVIARY_HISUIAN] = sAnims_BraviaryHisuian, + [SPECIES_SAMUROTT_HISUIAN] = sAnims_SamurottHisuian, + [SPECIES_LILLIGANT_HISUIAN] = sAnims_LilligantHisuian, + [SPECIES_ZORUA_HISUIAN] = sAnims_ZoruaHisuian, + [SPECIES_ZOROARK_HISUIAN] = sAnims_ZoroarkHisuian, + [SPECIES_BRAVIARY_HISUIAN] = sAnims_BraviaryHisuian, #endif #if P_GEN_6_POKEMON == TRUE - [SPECIES_SLIGGOO_HISUIAN] = sAnims_SliggooHisuian, - [SPECIES_GOODRA_HISUIAN] = sAnims_GoodraHisuian, - [SPECIES_AVALUGG_HISUIAN] = sAnims_AvaluggHisuian, + [SPECIES_SLIGGOO_HISUIAN] = sAnims_SliggooHisuian, + [SPECIES_GOODRA_HISUIAN] = sAnims_GoodraHisuian, + [SPECIES_AVALUGG_HISUIAN] = sAnims_AvaluggHisuian, #endif #if P_GEN_7_POKEMON == TRUE - [SPECIES_DECIDUEYE_HISUIAN] = sAnims_DecidueyeHisuian, + [SPECIES_DECIDUEYE_HISUIAN] = sAnims_DecidueyeHisuian, #endif - [SPECIES_PIKACHU_COSPLAY] = sAnims_PikachuCosplay, - [SPECIES_PIKACHU_ROCK_STAR] = sAnims_PikachuRockStar, - [SPECIES_PIKACHU_BELLE] = sAnims_PikachuBelle, - [SPECIES_PIKACHU_POP_STAR] = sAnims_PikachuPopStar, - [SPECIES_PIKACHU_PH_D] = sAnims_PIKACHU_PH_D, - [SPECIES_PIKACHU_LIBRE] = sAnims_PikachuLibre, - [SPECIES_PIKACHU_ORIGINAL_CAP] = sAnims_PikachuOriginalCap, - [SPECIES_PIKACHU_HOENN_CAP] = sAnims_PikachuHoennCap, - [SPECIES_PIKACHU_SINNOH_CAP] = sAnims_PikachuSinnohCap, - [SPECIES_PIKACHU_UNOVA_CAP] = sAnims_PikachuUnovaCap, - [SPECIES_PIKACHU_KALOS_CAP] = sAnims_PikachuKalosCap, - [SPECIES_PIKACHU_ALOLA_CAP] = sAnims_PikachuAlolaCap, - [SPECIES_PIKACHU_PARTNER_CAP] = sAnims_PikachuPartnerCap, - [SPECIES_PIKACHU_WORLD_CAP] = sAnims_PikachuWorldCap, - [SPECIES_PICHU_SPIKY_EARED] = sAnims_PichuSpikyEared, - [SPECIES_UNOWN_B] = sAnims_UnownB, - [SPECIES_UNOWN_C] = sAnims_UnownC, - [SPECIES_UNOWN_D] = sAnims_UnownD, - [SPECIES_UNOWN_E] = sAnims_UnownE, - [SPECIES_UNOWN_F] = sAnims_UnownF, - [SPECIES_UNOWN_G] = sAnims_UnownG, - [SPECIES_UNOWN_H] = sAnims_UnownH, - [SPECIES_UNOWN_I] = sAnims_UnownI, - [SPECIES_UNOWN_J] = sAnims_UnownJ, - [SPECIES_UNOWN_K] = sAnims_UnownK, - [SPECIES_UNOWN_L] = sAnims_UnownL, - [SPECIES_UNOWN_M] = sAnims_UnownM, - [SPECIES_UNOWN_N] = sAnims_UnownN, - [SPECIES_UNOWN_O] = sAnims_UnownO, - [SPECIES_UNOWN_P] = sAnims_UnownP, - [SPECIES_UNOWN_Q] = sAnims_UnownQ, - [SPECIES_UNOWN_R] = sAnims_UnownR, - [SPECIES_UNOWN_S] = sAnims_UnownS, - [SPECIES_UNOWN_T] = sAnims_UnownT, - [SPECIES_UNOWN_U] = sAnims_UnownU, - [SPECIES_UNOWN_V] = sAnims_UnownV, - [SPECIES_UNOWN_W] = sAnims_UnownW, - [SPECIES_UNOWN_X] = sAnims_UnownX, - [SPECIES_UNOWN_Y] = sAnims_UnownY, - [SPECIES_UNOWN_Z] = sAnims_UnownZ, - [SPECIES_UNOWN_EMARK] = sAnims_UnownEMark, - [SPECIES_UNOWN_QMARK] = sAnims_UnownQMark, - [SPECIES_CASTFORM_SUNNY] = sAnims_CastformSunny, - [SPECIES_CASTFORM_RAINY] = sAnims_CastformRainy, - [SPECIES_CASTFORM_SNOWY] = sAnims_CastformSnowy, - [SPECIES_DEOXYS_ATTACK] = sAnims_DeoxysAttack, - [SPECIES_DEOXYS_DEFENSE] = sAnims_DeoxysDefense, - [SPECIES_DEOXYS_SPEED] = sAnims_DeoxysSpeed, + // Ungrouped + [SPECIES_PIKACHU_COSPLAY] = sAnims_PikachuCosplay, + [SPECIES_PIKACHU_ROCK_STAR] = sAnims_PikachuRockStar, + [SPECIES_PIKACHU_BELLE] = sAnims_PikachuBelle, + [SPECIES_PIKACHU_POP_STAR] = sAnims_PikachuPopStar, + [SPECIES_PIKACHU_PH_D] = sAnims_PIKACHU_PH_D, + [SPECIES_PIKACHU_LIBRE] = sAnims_PikachuLibre, + [SPECIES_PIKACHU_ORIGINAL_CAP] = sAnims_PikachuOriginalCap, + [SPECIES_PIKACHU_HOENN_CAP] = sAnims_PikachuHoennCap, + [SPECIES_PIKACHU_SINNOH_CAP] = sAnims_PikachuSinnohCap, + [SPECIES_PIKACHU_UNOVA_CAP] = sAnims_PikachuUnovaCap, + [SPECIES_PIKACHU_KALOS_CAP] = sAnims_PikachuKalosCap, + [SPECIES_PIKACHU_ALOLA_CAP] = sAnims_PikachuAlolaCap, + [SPECIES_PIKACHU_PARTNER_CAP] = sAnims_PikachuPartnerCap, + [SPECIES_PIKACHU_WORLD_CAP] = sAnims_PikachuWorldCap, + [SPECIES_PICHU_SPIKY_EARED] = sAnims_PichuSpikyEared, + [SPECIES_UNOWN_B] = sAnims_UnownB, + [SPECIES_UNOWN_C] = sAnims_UnownC, + [SPECIES_UNOWN_D] = sAnims_UnownD, + [SPECIES_UNOWN_E] = sAnims_UnownE, + [SPECIES_UNOWN_F] = sAnims_UnownF, + [SPECIES_UNOWN_G] = sAnims_UnownG, + [SPECIES_UNOWN_H] = sAnims_UnownH, + [SPECIES_UNOWN_I] = sAnims_UnownI, + [SPECIES_UNOWN_J] = sAnims_UnownJ, + [SPECIES_UNOWN_K] = sAnims_UnownK, + [SPECIES_UNOWN_L] = sAnims_UnownL, + [SPECIES_UNOWN_M] = sAnims_UnownM, + [SPECIES_UNOWN_N] = sAnims_UnownN, + [SPECIES_UNOWN_O] = sAnims_UnownO, + [SPECIES_UNOWN_P] = sAnims_UnownP, + [SPECIES_UNOWN_Q] = sAnims_UnownQ, + [SPECIES_UNOWN_R] = sAnims_UnownR, + [SPECIES_UNOWN_S] = sAnims_UnownS, + [SPECIES_UNOWN_T] = sAnims_UnownT, + [SPECIES_UNOWN_U] = sAnims_UnownU, + [SPECIES_UNOWN_V] = sAnims_UnownV, + [SPECIES_UNOWN_W] = sAnims_UnownW, + [SPECIES_UNOWN_X] = sAnims_UnownX, + [SPECIES_UNOWN_Y] = sAnims_UnownY, + [SPECIES_UNOWN_Z] = sAnims_UnownZ, + [SPECIES_UNOWN_EMARK] = sAnims_UnownEMark, + [SPECIES_UNOWN_QMARK] = sAnims_UnownQMark, + [SPECIES_CASTFORM_SUNNY] = sAnims_CastformSunny, + [SPECIES_CASTFORM_RAINY] = sAnims_CastformRainy, + [SPECIES_CASTFORM_SNOWY] = sAnims_CastformSnowy, + [SPECIES_DEOXYS_ATTACK] = sAnims_DeoxysAttack, + [SPECIES_DEOXYS_DEFENSE] = sAnims_DeoxysDefense, + [SPECIES_DEOXYS_SPEED] = sAnims_DeoxysSpeed, #if P_GEN_4_POKEMON == TRUE - [SPECIES_BURMY_SANDY_CLOAK] = sAnims_Burmy, - [SPECIES_BURMY_TRASH_CLOAK] = sAnims_Burmy, - [SPECIES_WORMADAM_SANDY_CLOAK] = sAnims_Wormadam, - [SPECIES_WORMADAM_TRASH_CLOAK] = sAnims_Wormadam, - [SPECIES_CHERRIM_SUNSHINE] = sAnims_CherrimSunshine, - [SPECIES_SHELLOS_EAST_SEA] = sAnims_Shellos, - [SPECIES_GASTRODON_EAST_SEA] = sAnims_Gastrodon, - [SPECIES_ROTOM_HEAT] = sAnims_RotomHeat, - [SPECIES_ROTOM_WASH] = sAnims_RotomWash, - [SPECIES_ROTOM_FROST] = sAnims_RotomFrost, - [SPECIES_ROTOM_FAN] = sAnims_RotomFan, - [SPECIES_ROTOM_MOW] = sAnims_RotomMow, - [SPECIES_DIALGA_ORIGIN] = sAnims_DialgaOrigin, - [SPECIES_PALKIA_ORIGIN] = sAnims_PalkiaOrigin, - [SPECIES_GIRATINA_ORIGIN] = sAnims_GiratinaOrigin, - [SPECIES_SHAYMIN_SKY] = sAnims_ShayminSky, - [SPECIES_ARCEUS_FIGHTING] = sAnims_Arceus, - [SPECIES_ARCEUS_FLYING] = sAnims_Arceus, - [SPECIES_ARCEUS_POISON] = sAnims_Arceus, - [SPECIES_ARCEUS_GROUND] = sAnims_Arceus, - [SPECIES_ARCEUS_ROCK] = sAnims_Arceus, - [SPECIES_ARCEUS_BUG] = sAnims_Arceus, - [SPECIES_ARCEUS_GHOST] = sAnims_Arceus, - [SPECIES_ARCEUS_STEEL] = sAnims_Arceus, - [SPECIES_ARCEUS_FIRE] = sAnims_Arceus, - [SPECIES_ARCEUS_WATER] = sAnims_Arceus, - [SPECIES_ARCEUS_GRASS] = sAnims_Arceus, - [SPECIES_ARCEUS_ELECTRIC] = sAnims_Arceus, - [SPECIES_ARCEUS_PSYCHIC] = sAnims_Arceus, - [SPECIES_ARCEUS_ICE] = sAnims_Arceus, - [SPECIES_ARCEUS_DRAGON] = sAnims_Arceus, - [SPECIES_ARCEUS_DARK] = sAnims_Arceus, - [SPECIES_ARCEUS_FAIRY] = sAnims_Arceus, + [SPECIES_BURMY_SANDY_CLOAK] = sAnims_Burmy, + [SPECIES_BURMY_TRASH_CLOAK] = sAnims_Burmy, + [SPECIES_WORMADAM_SANDY_CLOAK] = sAnims_Wormadam, + [SPECIES_WORMADAM_TRASH_CLOAK] = sAnims_Wormadam, + [SPECIES_CHERRIM_SUNSHINE] = sAnims_CherrimSunshine, + [SPECIES_SHELLOS_EAST_SEA] = sAnims_Shellos, + [SPECIES_GASTRODON_EAST_SEA] = sAnims_Gastrodon, + [SPECIES_ROTOM_HEAT] = sAnims_RotomHeat, + [SPECIES_ROTOM_WASH] = sAnims_RotomWash, + [SPECIES_ROTOM_FROST] = sAnims_RotomFrost, + [SPECIES_ROTOM_FAN] = sAnims_RotomFan, + [SPECIES_ROTOM_MOW] = sAnims_RotomMow, + [SPECIES_DIALGA_ORIGIN] = sAnims_DialgaOrigin, + [SPECIES_PALKIA_ORIGIN] = sAnims_PalkiaOrigin, + [SPECIES_GIRATINA_ORIGIN] = sAnims_GiratinaOrigin, + [SPECIES_SHAYMIN_SKY] = sAnims_ShayminSky, + [SPECIES_ARCEUS_FIGHTING] = sAnims_Arceus, + [SPECIES_ARCEUS_FLYING] = sAnims_Arceus, + [SPECIES_ARCEUS_POISON] = sAnims_Arceus, + [SPECIES_ARCEUS_GROUND] = sAnims_Arceus, + [SPECIES_ARCEUS_ROCK] = sAnims_Arceus, + [SPECIES_ARCEUS_BUG] = sAnims_Arceus, + [SPECIES_ARCEUS_GHOST] = sAnims_Arceus, + [SPECIES_ARCEUS_STEEL] = sAnims_Arceus, + [SPECIES_ARCEUS_FIRE] = sAnims_Arceus, + [SPECIES_ARCEUS_WATER] = sAnims_Arceus, + [SPECIES_ARCEUS_GRASS] = sAnims_Arceus, + [SPECIES_ARCEUS_ELECTRIC] = sAnims_Arceus, + [SPECIES_ARCEUS_PSYCHIC] = sAnims_Arceus, + [SPECIES_ARCEUS_ICE] = sAnims_Arceus, + [SPECIES_ARCEUS_DRAGON] = sAnims_Arceus, + [SPECIES_ARCEUS_DARK] = sAnims_Arceus, + [SPECIES_ARCEUS_FAIRY] = sAnims_Arceus, #endif #if P_GEN_5_POKEMON == TRUE - [SPECIES_BASCULIN_BLUE_STRIPED] = sAnims_Basculin, - [SPECIES_BASCULIN_WHITE_STRIPED] = sAnims_Basculin, - [SPECIES_DARMANITAN_ZEN_MODE] = sAnims_DarmanitanZenMode, - [SPECIES_DARMANITAN_ZEN_MODE_GALARIAN] = sAnims_DarmanitanZenModeGalarian, - [SPECIES_DEERLING_SUMMER] = sAnims_Deerling, - [SPECIES_DEERLING_AUTUMN] = sAnims_Deerling, - [SPECIES_DEERLING_WINTER] = sAnims_Deerling, - [SPECIES_SAWSBUCK_SUMMER] = sAnims_Sawsbuck, - [SPECIES_SAWSBUCK_AUTUMN] = sAnims_Sawsbuck, - [SPECIES_SAWSBUCK_WINTER] = sAnims_Sawsbuck, - [SPECIES_TORNADUS_THERIAN] = sAnims_TornadusTherian, - [SPECIES_THUNDURUS_THERIAN] = sAnims_ThundurusTherian, - [SPECIES_LANDORUS_THERIAN] = sAnims_LandorusTherian, - [SPECIES_KYUREM_WHITE] = sAnims_KyuremWhite, - [SPECIES_KYUREM_BLACK] = sAnims_KyuremBlack, - [SPECIES_KELDEO_RESOLUTE] = sAnims_KeldeoResolute, - [SPECIES_MELOETTA_PIROUETTE] = sAnims_MeloettaPirouette, - [SPECIES_GENESECT_DOUSE_DRIVE] = sAnims_Genesect, - [SPECIES_GENESECT_SHOCK_DRIVE] = sAnims_Genesect, - [SPECIES_GENESECT_BURN_DRIVE] = sAnims_Genesect, - [SPECIES_GENESECT_CHILL_DRIVE] = sAnims_Genesect, + [SPECIES_BASCULIN_BLUE_STRIPED] = sAnims_Basculin, + [SPECIES_BASCULIN_WHITE_STRIPED] = sAnims_Basculin, + [SPECIES_DARMANITAN_ZEN_MODE] = sAnims_DarmanitanZenMode, + [SPECIES_DARMANITAN_ZEN_MODE_GALARIAN] = sAnims_DarmanitanZenModeGalarian, + [SPECIES_DEERLING_SUMMER] = sAnims_Deerling, + [SPECIES_DEERLING_AUTUMN] = sAnims_Deerling, + [SPECIES_DEERLING_WINTER] = sAnims_Deerling, + [SPECIES_SAWSBUCK_SUMMER] = sAnims_Sawsbuck, + [SPECIES_SAWSBUCK_AUTUMN] = sAnims_Sawsbuck, + [SPECIES_SAWSBUCK_WINTER] = sAnims_Sawsbuck, + [SPECIES_TORNADUS_THERIAN] = sAnims_TornadusTherian, + [SPECIES_THUNDURUS_THERIAN] = sAnims_ThundurusTherian, + [SPECIES_LANDORUS_THERIAN] = sAnims_LandorusTherian, + [SPECIES_KYUREM_WHITE] = sAnims_KyuremWhite, + [SPECIES_KYUREM_BLACK] = sAnims_KyuremBlack, + [SPECIES_KELDEO_RESOLUTE] = sAnims_KeldeoResolute, + [SPECIES_MELOETTA_PIROUETTE] = sAnims_MeloettaPirouette, + [SPECIES_GENESECT_DOUSE_DRIVE] = sAnims_Genesect, + [SPECIES_GENESECT_SHOCK_DRIVE] = sAnims_Genesect, + [SPECIES_GENESECT_BURN_DRIVE] = sAnims_Genesect, + [SPECIES_GENESECT_CHILL_DRIVE] = sAnims_Genesect, #endif #if P_GEN_6_POKEMON == TRUE - [SPECIES_GRENINJA_BATTLE_BOND] = sAnims_Greninja, - [SPECIES_GRENINJA_ASH] = sAnims_GreninjaAsh, - [SPECIES_VIVILLON_POLAR] = sAnims_Vivillon, - [SPECIES_VIVILLON_TUNDRA] = sAnims_Vivillon, - [SPECIES_VIVILLON_CONTINENTAL] = sAnims_Vivillon, - [SPECIES_VIVILLON_GARDEN] = sAnims_Vivillon, - [SPECIES_VIVILLON_ELEGANT] = sAnims_Vivillon, - [SPECIES_VIVILLON_MEADOW] = sAnims_Vivillon, - [SPECIES_VIVILLON_MODERN] = sAnims_Vivillon, - [SPECIES_VIVILLON_MARINE] = sAnims_Vivillon, - [SPECIES_VIVILLON_ARCHIPELAGO] = sAnims_Vivillon, - [SPECIES_VIVILLON_HIGH_PLAINS] = sAnims_Vivillon, - [SPECIES_VIVILLON_SANDSTORM] = sAnims_Vivillon, - [SPECIES_VIVILLON_RIVER] = sAnims_Vivillon, - [SPECIES_VIVILLON_MONSOON] = sAnims_Vivillon, - [SPECIES_VIVILLON_SAVANNA] = sAnims_Vivillon, - [SPECIES_VIVILLON_SUN] = sAnims_Vivillon, - [SPECIES_VIVILLON_OCEAN] = sAnims_Vivillon, - [SPECIES_VIVILLON_JUNGLE] = sAnims_Vivillon, - [SPECIES_VIVILLON_FANCY] = sAnims_Vivillon, - [SPECIES_VIVILLON_POKE_BALL] = sAnims_Vivillon, - [SPECIES_FLABEBE_YELLOW_FLOWER] = sAnims_Flabebe, - [SPECIES_FLABEBE_ORANGE_FLOWER] = sAnims_Flabebe, - [SPECIES_FLABEBE_BLUE_FLOWER] = sAnims_Flabebe, - [SPECIES_FLABEBE_WHITE_FLOWER] = sAnims_Flabebe, - [SPECIES_FLOETTE_YELLOW_FLOWER] = sAnims_Floette, - [SPECIES_FLOETTE_ORANGE_FLOWER] = sAnims_Floette, - [SPECIES_FLOETTE_BLUE_FLOWER] = sAnims_Floette, - [SPECIES_FLOETTE_WHITE_FLOWER] = sAnims_Floette, - [SPECIES_FLOETTE_ETERNAL_FLOWER] = sAnims_Floette, - [SPECIES_FLORGES_YELLOW_FLOWER] = sAnims_Florges, - [SPECIES_FLORGES_ORANGE_FLOWER] = sAnims_Florges, - [SPECIES_FLORGES_BLUE_FLOWER] = sAnims_Florges, - [SPECIES_FLORGES_WHITE_FLOWER] = sAnims_Florges, - [SPECIES_FURFROU_HEART_TRIM] = sAnims_Furfrou, - [SPECIES_FURFROU_STAR_TRIM] = sAnims_Furfrou, - [SPECIES_FURFROU_DIAMOND_TRIM] = sAnims_Furfrou, - [SPECIES_FURFROU_DEBUTANTE_TRIM] = sAnims_Furfrou, - [SPECIES_FURFROU_MATRON_TRIM] = sAnims_Furfrou, - [SPECIES_FURFROU_DANDY_TRIM] = sAnims_Furfrou, - [SPECIES_FURFROU_LA_REINE_TRIM] = sAnims_Furfrou, - [SPECIES_FURFROU_KABUKI_TRIM] = sAnims_Furfrou, - [SPECIES_FURFROU_PHARAOH_TRIM] = sAnims_Furfrou, - [SPECIES_MEOWSTIC_FEMALE] = sAnims_Meowstic, - [SPECIES_AEGISLASH_BLADE] = sAnims_AegislashBlade, - [SPECIES_PUMPKABOO_SMALL] = sAnims_Pumpkaboo, - [SPECIES_PUMPKABOO_LARGE] = sAnims_Pumpkaboo, - [SPECIES_PUMPKABOO_SUPER] = sAnims_Pumpkaboo, - [SPECIES_GOURGEIST_SMALL] = sAnims_Gourgeist, - [SPECIES_GOURGEIST_LARGE] = sAnims_Gourgeist, - [SPECIES_GOURGEIST_SUPER] = sAnims_Gourgeist, - [SPECIES_XERNEAS_ACTIVE] = sAnims_Xerneas, - [SPECIES_ZYGARDE_10] = sAnims_Zygarde10, - [SPECIES_ZYGARDE_10_POWER_CONSTRUCT] = sAnims_Zygarde10, - [SPECIES_ZYGARDE_50_POWER_CONSTRUCT] = sAnims_Zygarde, - [SPECIES_ZYGARDE_COMPLETE] = sAnims_ZygardeComplete, - [SPECIES_HOOPA_UNBOUND] = sAnims_HoopaUnbound, + [SPECIES_GRENINJA_BATTLE_BOND] = sAnims_Greninja, + [SPECIES_GRENINJA_ASH] = sAnims_GreninjaAsh, + [SPECIES_VIVILLON_POLAR] = sAnims_Vivillon, + [SPECIES_VIVILLON_TUNDRA] = sAnims_Vivillon, + [SPECIES_VIVILLON_CONTINENTAL] = sAnims_Vivillon, + [SPECIES_VIVILLON_GARDEN] = sAnims_Vivillon, + [SPECIES_VIVILLON_ELEGANT] = sAnims_Vivillon, + [SPECIES_VIVILLON_MEADOW] = sAnims_Vivillon, + [SPECIES_VIVILLON_MODERN] = sAnims_Vivillon, + [SPECIES_VIVILLON_MARINE] = sAnims_Vivillon, + [SPECIES_VIVILLON_ARCHIPELAGO] = sAnims_Vivillon, + [SPECIES_VIVILLON_HIGH_PLAINS] = sAnims_Vivillon, + [SPECIES_VIVILLON_SANDSTORM] = sAnims_Vivillon, + [SPECIES_VIVILLON_RIVER] = sAnims_Vivillon, + [SPECIES_VIVILLON_MONSOON] = sAnims_Vivillon, + [SPECIES_VIVILLON_SAVANNA] = sAnims_Vivillon, + [SPECIES_VIVILLON_SUN] = sAnims_Vivillon, + [SPECIES_VIVILLON_OCEAN] = sAnims_Vivillon, + [SPECIES_VIVILLON_JUNGLE] = sAnims_Vivillon, + [SPECIES_VIVILLON_FANCY] = sAnims_Vivillon, + [SPECIES_VIVILLON_POKE_BALL] = sAnims_Vivillon, + [SPECIES_FLABEBE_YELLOW_FLOWER] = sAnims_Flabebe, + [SPECIES_FLABEBE_ORANGE_FLOWER] = sAnims_Flabebe, + [SPECIES_FLABEBE_BLUE_FLOWER] = sAnims_Flabebe, + [SPECIES_FLABEBE_WHITE_FLOWER] = sAnims_Flabebe, + [SPECIES_FLOETTE_YELLOW_FLOWER] = sAnims_Floette, + [SPECIES_FLOETTE_ORANGE_FLOWER] = sAnims_Floette, + [SPECIES_FLOETTE_BLUE_FLOWER] = sAnims_Floette, + [SPECIES_FLOETTE_WHITE_FLOWER] = sAnims_Floette, + [SPECIES_FLOETTE_ETERNAL_FLOWER] = sAnims_Floette, + [SPECIES_FLORGES_YELLOW_FLOWER] = sAnims_Florges, + [SPECIES_FLORGES_ORANGE_FLOWER] = sAnims_Florges, + [SPECIES_FLORGES_BLUE_FLOWER] = sAnims_Florges, + [SPECIES_FLORGES_WHITE_FLOWER] = sAnims_Florges, + [SPECIES_FURFROU_HEART_TRIM] = sAnims_Furfrou, + [SPECIES_FURFROU_STAR_TRIM] = sAnims_Furfrou, + [SPECIES_FURFROU_DIAMOND_TRIM] = sAnims_Furfrou, + [SPECIES_FURFROU_DEBUTANTE_TRIM] = sAnims_Furfrou, + [SPECIES_FURFROU_MATRON_TRIM] = sAnims_Furfrou, + [SPECIES_FURFROU_DANDY_TRIM] = sAnims_Furfrou, + [SPECIES_FURFROU_LA_REINE_TRIM] = sAnims_Furfrou, + [SPECIES_FURFROU_KABUKI_TRIM] = sAnims_Furfrou, + [SPECIES_FURFROU_PHARAOH_TRIM] = sAnims_Furfrou, + [SPECIES_MEOWSTIC_FEMALE] = sAnims_Meowstic, + [SPECIES_AEGISLASH_BLADE] = sAnims_AegislashBlade, + [SPECIES_PUMPKABOO_SMALL] = sAnims_Pumpkaboo, + [SPECIES_PUMPKABOO_LARGE] = sAnims_Pumpkaboo, + [SPECIES_PUMPKABOO_SUPER] = sAnims_Pumpkaboo, + [SPECIES_GOURGEIST_SMALL] = sAnims_Gourgeist, + [SPECIES_GOURGEIST_LARGE] = sAnims_Gourgeist, + [SPECIES_GOURGEIST_SUPER] = sAnims_Gourgeist, + [SPECIES_XERNEAS_ACTIVE] = sAnims_Xerneas, + [SPECIES_ZYGARDE_10] = sAnims_Zygarde10, + [SPECIES_ZYGARDE_10_POWER_CONSTRUCT] = sAnims_Zygarde10, + [SPECIES_ZYGARDE_50_POWER_CONSTRUCT] = sAnims_Zygarde, + [SPECIES_ZYGARDE_COMPLETE] = sAnims_ZygardeComplete, + [SPECIES_HOOPA_UNBOUND] = sAnims_HoopaUnbound, #endif #if P_GEN_7_POKEMON == TRUE - [SPECIES_ORICORIO_POM_POM] = sAnims_Oricorio, - [SPECIES_ORICORIO_PAU] = sAnims_Oricorio, - [SPECIES_ORICORIO_SENSU] = sAnims_Oricorio, - [SPECIES_ROCKRUFF_OWN_TEMPO] = sAnims_Rockruff, - [SPECIES_LYCANROC_MIDNIGHT] = sAnims_LycanrocMidnight, - [SPECIES_LYCANROC_DUSK] = sAnims_LycanrocDusk, - [SPECIES_WISHIWASHI_SCHOOL] = sAnims_WishiwashiSchool, - [SPECIES_SILVALLY_FIGHTING] = sAnims_Silvally, - [SPECIES_SILVALLY_FLYING] = sAnims_Silvally, - [SPECIES_SILVALLY_POISON] = sAnims_Silvally, - [SPECIES_SILVALLY_GROUND] = sAnims_Silvally, - [SPECIES_SILVALLY_ROCK] = sAnims_Silvally, - [SPECIES_SILVALLY_BUG] = sAnims_Silvally, - [SPECIES_SILVALLY_GHOST] = sAnims_Silvally, - [SPECIES_SILVALLY_STEEL] = sAnims_Silvally, - [SPECIES_SILVALLY_FIRE] = sAnims_Silvally, - [SPECIES_SILVALLY_WATER] = sAnims_Silvally, - [SPECIES_SILVALLY_GRASS] = sAnims_Silvally, - [SPECIES_SILVALLY_ELECTRIC] = sAnims_Silvally, - [SPECIES_SILVALLY_PSYCHIC] = sAnims_Silvally, - [SPECIES_SILVALLY_ICE] = sAnims_Silvally, - [SPECIES_SILVALLY_DRAGON] = sAnims_Silvally, - [SPECIES_SILVALLY_DARK] = sAnims_Silvally, - [SPECIES_SILVALLY_FAIRY] = sAnims_Silvally, - [SPECIES_MINIOR_METEOR_ORANGE] = sAnims_Minior, - [SPECIES_MINIOR_METEOR_YELLOW] = sAnims_Minior, - [SPECIES_MINIOR_METEOR_GREEN] = sAnims_Minior, - [SPECIES_MINIOR_METEOR_BLUE] = sAnims_Minior, - [SPECIES_MINIOR_METEOR_INDIGO] = sAnims_Minior, - [SPECIES_MINIOR_METEOR_VIOLET] = sAnims_Minior, - [SPECIES_MINIOR_CORE_RED] = sAnims_Minior, - [SPECIES_MINIOR_CORE_ORANGE] = sAnims_Minior, - [SPECIES_MINIOR_CORE_YELLOW] = sAnims_Minior, - [SPECIES_MINIOR_CORE_GREEN] = sAnims_Minior, - [SPECIES_MINIOR_CORE_BLUE] = sAnims_Minior, - [SPECIES_MINIOR_CORE_INDIGO] = sAnims_Minior, - [SPECIES_MINIOR_CORE_VIOLET] = sAnims_Minior, - [SPECIES_MIMIKYU_BUSTED] = sAnims_MimikyuBusted, - [SPECIES_NECROZMA_DUSK_MANE] = sAnims_Necrozma, - [SPECIES_NECROZMA_DAWN_WINGS] = sAnims_Necrozma, - [SPECIES_NECROZMA_ULTRA] = sAnims_Necrozma, - [SPECIES_MAGEARNA_ORIGINAL_COLOR] = sAnims_Magearna, + [SPECIES_ORICORIO_POM_POM] = sAnims_Oricorio, + [SPECIES_ORICORIO_PAU] = sAnims_Oricorio, + [SPECIES_ORICORIO_SENSU] = sAnims_Oricorio, + [SPECIES_ROCKRUFF_OWN_TEMPO] = sAnims_Rockruff, + [SPECIES_LYCANROC_MIDNIGHT] = sAnims_LycanrocMidnight, + [SPECIES_LYCANROC_DUSK] = sAnims_LycanrocDusk, + [SPECIES_WISHIWASHI_SCHOOL] = sAnims_WishiwashiSchool, + [SPECIES_SILVALLY_FIGHTING] = sAnims_Silvally, + [SPECIES_SILVALLY_FLYING] = sAnims_Silvally, + [SPECIES_SILVALLY_POISON] = sAnims_Silvally, + [SPECIES_SILVALLY_GROUND] = sAnims_Silvally, + [SPECIES_SILVALLY_ROCK] = sAnims_Silvally, + [SPECIES_SILVALLY_BUG] = sAnims_Silvally, + [SPECIES_SILVALLY_GHOST] = sAnims_Silvally, + [SPECIES_SILVALLY_STEEL] = sAnims_Silvally, + [SPECIES_SILVALLY_FIRE] = sAnims_Silvally, + [SPECIES_SILVALLY_WATER] = sAnims_Silvally, + [SPECIES_SILVALLY_GRASS] = sAnims_Silvally, + [SPECIES_SILVALLY_ELECTRIC] = sAnims_Silvally, + [SPECIES_SILVALLY_PSYCHIC] = sAnims_Silvally, + [SPECIES_SILVALLY_ICE] = sAnims_Silvally, + [SPECIES_SILVALLY_DRAGON] = sAnims_Silvally, + [SPECIES_SILVALLY_DARK] = sAnims_Silvally, + [SPECIES_SILVALLY_FAIRY] = sAnims_Silvally, + [SPECIES_MINIOR_METEOR_ORANGE] = sAnims_Minior, + [SPECIES_MINIOR_METEOR_YELLOW] = sAnims_Minior, + [SPECIES_MINIOR_METEOR_GREEN] = sAnims_Minior, + [SPECIES_MINIOR_METEOR_BLUE] = sAnims_Minior, + [SPECIES_MINIOR_METEOR_INDIGO] = sAnims_Minior, + [SPECIES_MINIOR_METEOR_VIOLET] = sAnims_Minior, + [SPECIES_MINIOR_CORE_RED] = sAnims_Minior, + [SPECIES_MINIOR_CORE_ORANGE] = sAnims_Minior, + [SPECIES_MINIOR_CORE_YELLOW] = sAnims_Minior, + [SPECIES_MINIOR_CORE_GREEN] = sAnims_Minior, + [SPECIES_MINIOR_CORE_BLUE] = sAnims_Minior, + [SPECIES_MINIOR_CORE_INDIGO] = sAnims_Minior, + [SPECIES_MINIOR_CORE_VIOLET] = sAnims_Minior, + [SPECIES_MIMIKYU_BUSTED] = sAnims_MimikyuBusted, + [SPECIES_NECROZMA_DUSK_MANE] = sAnims_Necrozma, + [SPECIES_NECROZMA_DAWN_WINGS] = sAnims_Necrozma, + [SPECIES_NECROZMA_ULTRA] = sAnims_Necrozma, + [SPECIES_MAGEARNA_ORIGINAL_COLOR] = sAnims_Magearna, #endif #if P_GEN_8_POKEMON == TRUE - [SPECIES_CRAMORANT_GULPING] = sAnims_Cramorant, - [SPECIES_CRAMORANT_GORGING] = sAnims_Cramorant, - [SPECIES_TOXTRICITY_LOW_KEY] = sAnims_Toxtricity, - [SPECIES_SINISTEA_ANTIQUE] = sAnims_Sinistea, - [SPECIES_POLTEAGEIST_ANTIQUE] = sAnims_Polteageist, - [SPECIES_ALCREMIE_RUBY_CREAM] = sAnims_Alcremie, - [SPECIES_ALCREMIE_MATCHA_CREAM] = sAnims_Alcremie, - [SPECIES_ALCREMIE_MINT_CREAM] = sAnims_Alcremie, - [SPECIES_ALCREMIE_LEMON_CREAM] = sAnims_Alcremie, - [SPECIES_ALCREMIE_SALTED_CREAM] = sAnims_Alcremie, - [SPECIES_ALCREMIE_RUBY_SWIRL] = sAnims_Alcremie, - [SPECIES_ALCREMIE_CARAMEL_SWIRL] = sAnims_Alcremie, - [SPECIES_ALCREMIE_RAINBOW_SWIRL] = sAnims_Alcremie, - [SPECIES_EISCUE_NOICE_FACE] = sAnims_Eiscue, - [SPECIES_INDEEDEE_FEMALE] = sAnims_Indeedee, - [SPECIES_MORPEKO_HANGRY] = sAnims_Morpeko, - [SPECIES_ZACIAN_CROWNED_SWORD] = sAnims_Zacian, - [SPECIES_ZAMAZENTA_CROWNED_SHIELD] = sAnims_Zamazenta, - [SPECIES_ETERNATUS_ETERNAMAX] = sAnims_Eternatus, - [SPECIES_URSHIFU_RAPID_STRIKE_STYLE] = sAnims_Urshifu, - [SPECIES_ZARUDE_DADA] = sAnims_Zarude, - [SPECIES_CALYREX_ICE_RIDER] = sAnims_Calyrex, - [SPECIES_CALYREX_SHADOW_RIDER] = sAnims_Calyrex, - [SPECIES_ENAMORUS_THERIAN] = sAnims_EnamorusTherian, - [SPECIES_BASCULEGION_FEMALE] = sAnims_Basculegion, + [SPECIES_CRAMORANT_GULPING] = sAnims_Cramorant, + [SPECIES_CRAMORANT_GORGING] = sAnims_Cramorant, + [SPECIES_TOXTRICITY_LOW_KEY] = sAnims_Toxtricity, + [SPECIES_SINISTEA_ANTIQUE] = sAnims_Sinistea, + [SPECIES_POLTEAGEIST_ANTIQUE] = sAnims_Polteageist, + [SPECIES_ALCREMIE_RUBY_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_MATCHA_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_MINT_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_LEMON_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_SALTED_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_RUBY_SWIRL] = sAnims_Alcremie, + [SPECIES_ALCREMIE_CARAMEL_SWIRL] = sAnims_Alcremie, + [SPECIES_ALCREMIE_RAINBOW_SWIRL] = sAnims_Alcremie, + [SPECIES_EISCUE_NOICE_FACE] = sAnims_Eiscue, + [SPECIES_INDEEDEE_FEMALE] = sAnims_Indeedee, + [SPECIES_MORPEKO_HANGRY] = sAnims_Morpeko, + [SPECIES_ZACIAN_CROWNED_SWORD] = sAnims_Zacian, + [SPECIES_ZAMAZENTA_CROWNED_SHIELD] = sAnims_Zamazenta, + [SPECIES_ETERNATUS_ETERNAMAX] = sAnims_Eternatus, + [SPECIES_URSHIFU_RAPID_STRIKE_STYLE] = sAnims_Urshifu, + [SPECIES_ZARUDE_DADA] = sAnims_Zarude, + [SPECIES_CALYREX_ICE_RIDER] = sAnims_Calyrex, + [SPECIES_CALYREX_SHADOW_RIDER] = sAnims_Calyrex, + [SPECIES_ENAMORUS_THERIAN] = sAnims_EnamorusTherian, + [SPECIES_BASCULEGION_FEMALE] = sAnims_Basculegion, #endif - [SPECIES_EGG] = sAnims_Egg, + [SPECIES_EGG] = sAnims_Egg, }; From 6e1d4b44095f2b32af7c23a645a312639f659562 Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Sun, 15 Oct 2023 08:32:25 -0300 Subject: [PATCH 098/162] Fixed compile on modern + tests --- data/battle_scripts_1.s | 3 +-- src/battle_dynamax.c | 24 ++++++++++-------------- test/dynamax.c | 5 ----- 3 files changed, 11 insertions(+), 21 deletions(-) diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index dab321a2d8..5a0bb8ffb6 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -437,11 +437,10 @@ gBattleScriptsForMoveEffects:: .4byte BattleScript_EffectMortalSpin @ EFFECT_MORTAL_SPIN .4byte BattleScript_EffectHit @ EFFECT_GIGATON_HAMMER .4byte BattleScript_EffectSaltCure @ EFFECT_SALT_CURE - .4byte BattleScript_EffectMaxMove @ EFFECT_MAX_MOVE - .4byte BattleScript_EffectMatchaGotcha @ EFFECT_MATCHA_GOTCHA .4byte BattleScript_EffectSyrupBomb @ EFFECT_SYRUP_BOMB .4byte BattleScript_EffectHit @ EFFECT_IVY_CUDGEL + .4byte BattleScript_EffectMaxMove @ EFFECT_MAX_MOVE BattleScript_EffectSyrupBomb:: setmoveeffect MOVE_EFFECT_SYRUP_BOMB diff --git a/src/battle_dynamax.c b/src/battle_dynamax.c index 38cde59bfb..73d7bedc1d 100644 --- a/src/battle_dynamax.c +++ b/src/battle_dynamax.c @@ -98,7 +98,6 @@ static void SpriteCb_DynamaxIndicator(struct Sprite *); // Returns whether a battler is Dynamaxed. bool32 IsDynamaxed(u16 battlerId) { - u8 side = GetBattlerSide(battlerId); if (gBattleStruct->dynamax.dynamaxed[battlerId] /*|| IsRaidBoss(battlerId)*/) return TRUE; @@ -201,7 +200,6 @@ u16 GetNonDynamaxMaxHP(u16 battlerId) void PrepareBattlerForDynamax(u16 battlerId) { u8 side = GetBattlerSide(battlerId); - u16 newSpecies; gBattleStruct->dynamax.alreadyDynamaxed[side] = TRUE; gBattleStruct->dynamax.dynamaxed[battlerId] = TRUE; @@ -305,12 +303,11 @@ static u16 GetTypeBasedMaxMove(u16 battlerId, u16 type) return sGMaxMoveTable[i].gmaxMove; } } - else // Regular Max Move - { - if (sMaxMoveTable[type] == MOVE_NONE) // failsafe - return sMaxMoveTable[0]; - return sMaxMoveTable[type]; - } + + // Regular Max Move + if (sMaxMoveTable[type] == MOVE_NONE) // failsafe + return sMaxMoveTable[0]; + return sMaxMoveTable[type]; } // Returns the appropriate Max Move or G-Max Move for a battler to use. @@ -550,6 +547,8 @@ static u32 GetMaxMoveStatusEffect(u16 move) return STATUS2_ESCAPE_PREVENTION; case MAX_EFFECT_TORMENT_FOES: return STATUS2_TORMENT; + default: + return STATUS1_NONE; } } @@ -1300,12 +1299,12 @@ static const struct SpritePalette sSpritePalette_DynamaxIndicator = static const struct SpriteSheet sDynamaxIndicator_SpriteSheet[] = { - sDynamaxIndicatorGfx, sizeof(sDynamaxIndicatorGfx), TAG_DYNAMAX_INDICATOR_TILE + {sDynamaxIndicatorGfx, sizeof(sDynamaxIndicatorGfx), TAG_DYNAMAX_INDICATOR_TILE} }; static const struct SpritePalette sDynamaxIndicator_SpritePalette[] = { - sDynamaxIndicatorPal, TAG_MISC_INDICATOR_PAL + {sDynamaxIndicatorPal, TAG_MISC_INDICATOR_PAL} }; static const struct OamData sOamData_DynamaxIndicator = @@ -1371,7 +1370,6 @@ u8 DynamaxIndicator_GetSpriteId(u32 healthboxSpriteId) void DynamaxIndicator_SetVisibilities(u32 healthboxId, bool32 invisible) { - u32 i; u8 spriteId = DynamaxIndicator_GetSpriteId(healthboxId); u32 battlerId = gSprites[healthboxId].hMain_Battler; @@ -1383,14 +1381,12 @@ void DynamaxIndicator_SetVisibilities(u32 healthboxId, bool32 invisible) void DynamaxIndicator_UpdateOamPriority(u32 healthboxId, u32 oamPriority) { - u32 i; u8 spriteId = DynamaxIndicator_GetSpriteId(healthboxId); gSprites[spriteId].oam.priority = oamPriority; } void DynamaxIndicator_UpdateLevel(u32 healthboxId, u32 level) { - u32 i; s16 xDelta = 0; u8 spriteId = DynamaxIndicator_GetSpriteId(healthboxId); @@ -1404,7 +1400,7 @@ void DynamaxIndicator_UpdateLevel(u32 healthboxId, u32 level) void DynamaxIndicator_CreateSprite(u32 battlerId, u32 healthboxSpriteId) { - u32 position, level; + u32 position; u8 spriteId; s16 xHealthbox = 0, y = 0; s32 x = 0; diff --git a/test/dynamax.c b/test/dynamax.c index db7176a550..27a689153e 100644 --- a/test/dynamax.c +++ b/test/dynamax.c @@ -945,7 +945,6 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Volt Crash paralyzes both opponents") DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Stun Shock paralyzes or poisons both opponents") { u8 statusAnim; - u16 species; u32 rng; PARAMETRIZE { statusAnim = B_ANIM_STATUS_PRZ; rng = STATUS1_PARALYSIS; } PARAMETRIZE { statusAnim = B_ANIM_STATUS_PSN; rng = STATUS1_POISON; } @@ -1017,7 +1016,6 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Stun Shock chooses statuses before consideri DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Befuddle paralyzes, poisons, or sleeps both opponents") { u8 statusAnim; - u16 species; u32 rng; PARAMETRIZE { statusAnim = B_ANIM_STATUS_PRZ; rng = STATUS1_PARALYSIS; } PARAMETRIZE { statusAnim = B_ANIM_STATUS_PSN; rng = STATUS1_POISON; } @@ -1303,7 +1301,6 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Finale heals allies by 1/6 of their health") DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Sweetness cures allies' status conditions") { - s16 damage1, damage2; GIVEN { ASSUME(P_GEN_8_POKEMON == TRUE); ASSUME(gBattleMoves[MOVE_G_MAX_SWEETNESS].argument == MAX_EFFECT_AROMATHERAPY); @@ -1325,7 +1322,6 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Sweetness cures allies' status conditions") // This test applies to G-Max Sandblast, too. DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Centiferno traps both opponents in Fire Spin") { - s16 damage1, damage2; GIVEN { ASSUME(P_GEN_8_POKEMON == TRUE); ASSUME(gBattleMoves[MOVE_G_MAX_CENTIFERNO].argument == MAX_EFFECT_FIRE_SPIN_FOES); @@ -1354,7 +1350,6 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Centiferno traps both opponents in Fire Spin DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Chi Strike boosts allies' crit chance") { - s16 damage1, damage2; u32 j; GIVEN { ASSUME(B_CRIT_CHANCE >= GEN_6); From ca101e99523cba40357d6ca6574ece809220e319 Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Sun, 15 Oct 2023 09:42:56 -0300 Subject: [PATCH 099/162] Updated AI to use non-dynamax HP (Leech Seed, Nightmare, Trap Damage, Hail, Sandstorm --- include/battle_dynamax.h | 2 +- src/battle_ai_util.c | 14 +++++++------- src/battle_dynamax.c | 2 +- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/include/battle_dynamax.h b/include/battle_dynamax.h index ff395f3f87..fe619e2953 100644 --- a/include/battle_dynamax.h +++ b/include/battle_dynamax.h @@ -62,7 +62,7 @@ bool32 IsGigantamaxed(u16 battlerId); void ApplyDynamaxHPMultiplier(u32 battler, struct Pokemon* mon); void PrepareBattlerForDynamax(u16 battlerId); u16 GetNonDynamaxHP(u16 battlerId); -u16 GetNonDynamaxMaxHP(u16 battlerId); +u16 GetNonDynamaxMaxHP(u32 battlerId); void UndoDynamax(u16 battlerId); bool32 IsMoveBlockedByMaxGuard(u16 move); bool32 IsMoveBlockedByDynamax(u16 move); diff --git a/src/battle_ai_util.c b/src/battle_ai_util.c index 64936e0b98..8f74dcd362 100644 --- a/src/battle_ai_util.c +++ b/src/battle_ai_util.c @@ -2397,7 +2397,7 @@ static u32 GetLeechSeedDamage(u32 battlerId) if ((gStatuses3[battlerId] & STATUS3_LEECHSEED) && gBattleMons[gStatuses3[battlerId] & STATUS3_LEECHSEED_BATTLER].hp != 0) { - damage = gBattleMons[battlerId].maxHP / 8; + damage = GetNonDynamaxMaxHP(battlerId) / 8; if (damage == 0) damage = 1; } @@ -2409,7 +2409,7 @@ static u32 GetNightmareDamage(u32 battlerId) u32 damage = 0; if ((gBattleMons[battlerId].status2 & STATUS2_NIGHTMARE) && gBattleMons[battlerId].status1 & STATUS1_SLEEP) { - damage = gBattleMons[battlerId].maxHP / 4; + damage = GetNonDynamaxMaxHP(battlerId) / 4; if (damage == 0) damage = 1; } @@ -2421,7 +2421,7 @@ static u32 GetCurseDamage(u32 battlerId) u32 damage = 0; if (gBattleMons[battlerId].status2 & STATUS2_CURSED) { - damage = gBattleMons[battlerId].maxHP / 4; + damage = GetNonDynamaxMaxHP(battlerId) / 4; if (damage == 0) damage = 1; } @@ -2436,9 +2436,9 @@ static u32 GetTrapDamage(u32 battlerId) if (gBattleMons[battlerId].status2 & STATUS2_WRAPPED) { if (holdEffect == HOLD_EFFECT_BINDING_BAND) - damage = gBattleMons[battlerId].maxHP / (B_BINDING_DAMAGE >= GEN_6 ? 6 : 8); + damage = GetNonDynamaxMaxHP(battlerId) / (B_BINDING_DAMAGE >= GEN_6 ? 6 : 8); else - damage = gBattleMons[battlerId].maxHP / (B_BINDING_DAMAGE >= GEN_6 ? 8 : 16); + damage = GetNonDynamaxMaxHP(battlerId) / (B_BINDING_DAMAGE >= GEN_6 ? 8 : 16); if (damage == 0) damage = 1; @@ -2509,7 +2509,7 @@ static u32 GetWeatherDamage(u32 battlerId) && !(gStatuses3[battlerId] & (STATUS3_UNDERGROUND | STATUS3_UNDERWATER)) && holdEffect != HOLD_EFFECT_SAFETY_GOGGLES) { - damage = gBattleMons[battlerId].maxHP / 16; + damage = GetNonDynamaxMaxHP(battlerId) / 16; if (damage == 0) damage = 1; } @@ -2520,7 +2520,7 @@ static u32 GetWeatherDamage(u32 battlerId) && !(gStatuses3[battlerId] & (STATUS3_UNDERGROUND | STATUS3_UNDERWATER)) && holdEffect != HOLD_EFFECT_SAFETY_GOGGLES) { - damage = gBattleMons[battlerId].maxHP / 16; + damage = GetNonDynamaxMaxHP(battlerId) / 16; if (damage == 0) damage = 1; } diff --git a/src/battle_dynamax.c b/src/battle_dynamax.c index 73d7bedc1d..942605b2c2 100644 --- a/src/battle_dynamax.c +++ b/src/battle_dynamax.c @@ -184,7 +184,7 @@ u16 GetNonDynamaxHP(u16 battlerId) } // Returns the non-Dynamax Max HP of a Pokemon. -u16 GetNonDynamaxMaxHP(u16 battlerId) +u16 GetNonDynamaxMaxHP(u32 battlerId) { if (!IsDynamaxed(battlerId) || gBattleMons[battlerId].species == SPECIES_SHEDINJA) return gBattleMons[battlerId].maxHP; From b77bc718621b8a156b7fa42ad01316f0f0a25ccf Mon Sep 17 00:00:00 2001 From: sbird Date: Sun, 15 Oct 2023 10:56:55 +0200 Subject: [PATCH 100/162] fix -Warray-parameter, -Waddress, -Warray-bounds warnings those are introduced by some compiler between gcc 10 and gcc 13 when using -Wall --- gflib/bg.c | 3 +++ include/battle_main.h | 2 +- include/battle_util.h | 2 +- include/util.h | 2 +- src/battle_anim_utility_funcs.c | 8 ++++---- src/battle_dome.c | 2 +- src/battle_intro.c | 22 ++++++++++------------ src/battle_main.c | 6 ++++-- src/battle_script_commands.c | 28 +++++++++++++++++++++------- src/battle_util.c | 8 +++++--- src/contest.c | 12 ++++++------ src/field_specials.c | 2 ++ src/field_weather.c | 12 ++++++------ src/librfu_rfu.c | 2 +- src/tv.c | 8 ++++---- src/util.c | 2 +- 16 files changed, 71 insertions(+), 50 deletions(-) diff --git a/gflib/bg.c b/gflib/bg.c index f363233a85..4e426b762b 100644 --- a/gflib/bg.c +++ b/gflib/bg.c @@ -377,6 +377,9 @@ u16 LoadBgTiles(u8 bg, const void *src, u16 size, u16 destOffset) u16 tileOffset; u8 cursor; + if (bg > 3) + return -1; + if (GetBgControlAttribute(bg, BG_CTRL_ATTR_PALETTEMODE) == 0) { tileOffset = (sGpuBgConfigs2[bg].baseTile + destOffset) * 0x20; diff --git a/include/battle_main.h b/include/battle_main.h index 91e9fd90eb..9bb9bbdfb0 100644 --- a/include/battle_main.h +++ b/include/battle_main.h @@ -54,7 +54,7 @@ void AnimSetCenterToCornerVecX(struct Sprite *sprite); void BeginBattleIntroDummy(void); void BeginBattleIntro(void); void SwitchInClearSetData(u32 battler); -void FaintClearSetData(u32 battler); +const u8* FaintClearSetData(u32 battler); void BattleTurnPassed(void); u8 IsRunningFromBattleImpossible(u32 battler); void SwitchPartyOrder(u32 battlerId); diff --git a/include/battle_util.h b/include/battle_util.h index ec7fa42800..02c5afa7a3 100644 --- a/include/battle_util.h +++ b/include/battle_util.h @@ -121,7 +121,7 @@ void PressurePPLoseOnUsingImprison(u8 attacker); bool32 IsBattlerMarkedForControllerExec(u32 battler); void MarkBattlerForControllerExec(u32 battler); void MarkBattlerReceivedLinkData(u32 battler); -void CancelMultiTurnMoves(u32 battler); +const u8* CancelMultiTurnMoves(u32 battler); bool32 WasUnableToUseMove(u32 battler); void PrepareStringBattle(u16 stringId, u32 battler); void ResetSentPokesToOpponentValue(void); diff --git a/include/util.h b/include/util.h index 8f2079a0ba..3c90f136a6 100644 --- a/include/util.h +++ b/include/util.h @@ -13,7 +13,7 @@ int CountTrailingZeroBits(u32 value); u16 CalcCRC16(const u8 *data, s32 length); u16 CalcCRC16WithTable(const u8 *data, u32 length); u32 CalcByteArraySum(const u8 *data, u32 length); -void BlendPalette(u16 palOffset, u16 numEntries, u8 coeff, u16 blendColor); +void BlendPalette(u16 palOffset, u16 numEntries, u8 coeff, u32 blendColor); void DoBgAffineSet(struct BgAffineDstData *dest, u32 texX, u32 texY, s16 scrX, s16 scrY, s16 sx, s16 sy, u16 alpha); void CopySpriteTiles(u8 shape, u8 size, u8 *tiles, u16 *tilemap, u8 *output); diff --git a/src/battle_anim_utility_funcs.c b/src/battle_anim_utility_funcs.c index 99e476da1d..491ca77a96 100644 --- a/src/battle_anim_utility_funcs.c +++ b/src/battle_anim_utility_funcs.c @@ -281,7 +281,7 @@ void AnimTask_DrawFallingWhiteLinesOnAttacker(u8 taskId) u16 species; int spriteId, newSpriteId; u16 var0; - u16 bg1Cnt; + u32 bg1Cnt; struct BattleAnimBgData animBgData; var0 = 0; @@ -350,7 +350,7 @@ static void AnimTask_DrawFallingWhiteLinesOnAttacker_Step(u8 taskId) { struct BattleAnimBgData animBgData; struct Sprite *sprite; - u16 bg1Cnt; + u32 bg1Cnt; gTasks[taskId].data[10] += 4; gBattle_BG1_Y -= 4; @@ -814,7 +814,7 @@ void StartMonScrollingBgMask(u8 taskId, int UNUSED unused, u16 scrollSpeed, u8 b { u16 species; u8 spriteId, spriteId2; - u16 bg1Cnt; + u32 bg1Cnt; struct BattleAnimBgData animBgData; u8 battler2; @@ -919,7 +919,7 @@ static void UpdateMonScrollingBgMask(u8 taskId) | WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ | WINOUT_WINOBJ_CLR); if (!IsContest()) { - u16 bg1Cnt = GetGpuReg(REG_OFFSET_BG1CNT); + u32 bg1Cnt = GetGpuReg(REG_OFFSET_BG1CNT); ((vBgCnt *)&bg1Cnt)->charBaseBlock = 0; SetGpuReg(REG_OFFSET_BG1CNT, bg1Cnt); } diff --git a/src/battle_dome.c b/src/battle_dome.c index 313d7289d9..24bad30f6b 100644 --- a/src/battle_dome.c +++ b/src/battle_dome.c @@ -6016,7 +6016,7 @@ static void DecideRoundWinners(u8 roundId) gSaveBlock2Ptr->frontier.domeWinningMoves[tournamentId2] = GetWinningMove(tournamentId1, tournamentId2, roundId); } // Frontier Brain always wins, check tournamentId2. - else if (DOME_TRAINERS[tournamentId2].trainerId == TRAINER_FRONTIER_BRAIN && tournamentId1 != 0xFF) + else if (tournamentId2 != 0xFF && DOME_TRAINERS[tournamentId2].trainerId == TRAINER_FRONTIER_BRAIN && tournamentId1 != 0xFF) { DOME_TRAINERS[tournamentId1].isEliminated = TRUE; DOME_TRAINERS[tournamentId1].eliminatedAt = roundId; diff --git a/src/battle_intro.c b/src/battle_intro.c index 11e07bab73..ac88f570db 100644 --- a/src/battle_intro.c +++ b/src/battle_intro.c @@ -11,8 +11,6 @@ #include "trig.h" #include "constants/trainers.h" -static EWRAM_DATA u16 sBgCnt = 0; - extern const u8 gBattleAnimBgCntSet[]; extern const u8 gBattleAnimBgCntGet[]; @@ -40,39 +38,39 @@ void SetAnimBgAttribute(u8 bgId, u8 attributeId, u8 value) { if (bgId < 4) { - sBgCnt = GetGpuReg(gBattleAnimBgCntSet[bgId]); + u32 bgCnt = GetGpuReg(gBattleAnimBgCntSet[bgId]); switch (attributeId) { case BG_ANIM_SCREEN_SIZE: - ((struct BgCnt *)&sBgCnt)->screenSize = value; + ((struct BgCnt *)&bgCnt)->screenSize = value; break; case BG_ANIM_AREA_OVERFLOW_MODE: - ((struct BgCnt *)&sBgCnt)->areaOverflowMode = value; + ((struct BgCnt *)&bgCnt)->areaOverflowMode = value; break; case BG_ANIM_MOSAIC: - ((struct BgCnt *)&sBgCnt)->mosaic = value; + ((struct BgCnt *)&bgCnt)->mosaic = value; break; case BG_ANIM_CHAR_BASE_BLOCK: - ((struct BgCnt *)&sBgCnt)->charBaseBlock = value; + ((struct BgCnt *)&bgCnt)->charBaseBlock = value; break; case BG_ANIM_PRIORITY: - ((struct BgCnt *)&sBgCnt)->priority = value; + ((struct BgCnt *)&bgCnt)->priority = value; break; case BG_ANIM_PALETTES_MODE: - ((struct BgCnt *)&sBgCnt)->palettes = value; + ((struct BgCnt *)&bgCnt)->palettes = value; break; case BG_ANIM_SCREEN_BASE_BLOCK: - ((struct BgCnt *)&sBgCnt)->screenBaseBlock = value; + ((struct BgCnt *)&bgCnt)->screenBaseBlock = value; break; } - SetGpuReg(gBattleAnimBgCntSet[bgId], sBgCnt); + SetGpuReg(gBattleAnimBgCntSet[bgId], bgCnt); } } int GetAnimBgAttribute(u8 bgId, u8 attributeId) { - u16 bgCnt; + u32 bgCnt; if (bgId < 4) { diff --git a/src/battle_main.c b/src/battle_main.c index 325d66eb23..18de8e3b1f 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -3220,9 +3220,10 @@ void SwitchInClearSetData(u32 battler) Ai_UpdateSwitchInData(battler); } -void FaintClearSetData(u32 battler) +const u8* FaintClearSetData(u32 battler) { s32 i; + const u8 *result = NULL; for (i = 0; i < NUM_BATTLE_STATS; i++) gBattleMons[battler].statStages[i] = DEFAULT_STAT_STAGE; @@ -3356,7 +3357,7 @@ void FaintClearSetData(u32 battler) { gBattleMons[otherSkyDropper].status2 |= STATUS2_CONFUSION_TURN(((Random()) % 4) + 2); gBattlerAttacker = otherSkyDropper; - gBattlescriptCurrInstr = BattleScript_ThrashConfuses - 2; + result = BattleScript_ThrashConfuses; } } } @@ -3366,6 +3367,7 @@ void FaintClearSetData(u32 battler) gBattleStruct->zmove.active = FALSE; gBattleStruct->zmove.toBeUsed[battler] = MOVE_NONE; gBattleStruct->zmove.effect = EFFECT_HIT; + return result; } static void DoBattleIntro(void) diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 0c42bedbb9..d9f1e04ff9 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -2793,6 +2793,7 @@ void SetMoveEffect(bool32 primary, u32 certain) if (gBattleScripting.moveEffect <= PRIMARY_STATUS_MOVE_EFFECT) // status change { + const u8 *cancelMultiTurnMovesResult = NULL; switch (sStatusFlagsForMoveEffects[gBattleScripting.moveEffect]) { case STATUS1_SLEEP: @@ -2812,7 +2813,9 @@ void SetMoveEffect(bool32 primary, u32 certain) if (!CanSleep(gEffectBattler)) break; - CancelMultiTurnMoves(gEffectBattler); + cancelMultiTurnMovesResult = CancelMultiTurnMoves(gEffectBattler); + if (cancelMultiTurnMovesResult) + gBattlescriptCurrInstr = cancelMultiTurnMovesResult; statusChanged = TRUE; break; case STATUS1_POISON: @@ -2894,7 +2897,9 @@ void SetMoveEffect(bool32 primary, u32 certain) if (!CanBeFrozen(gEffectBattler)) break; - CancelMultiTurnMoves(gEffectBattler); + cancelMultiTurnMovesResult = CancelMultiTurnMoves(gEffectBattler); + if (cancelMultiTurnMovesResult) + gBattlescriptCurrInstr = cancelMultiTurnMovesResult; statusChanged = TRUE; break; case STATUS1_PARALYSIS: @@ -3823,7 +3828,7 @@ static void Cmd_cleareffectsonfaint(void) if (gBattleControllerExecFlags == 0) { u32 battler = GetBattlerForBattleScript(cmd->battler); - + const u8 *clearDataResult = NULL; if (!(gBattleTypeFlags & BATTLE_TYPE_ARENA) || gBattleMons[battler].hp == 0) { gBattleMons[battler].status1 = 0; @@ -3831,8 +3836,11 @@ static void Cmd_cleareffectsonfaint(void) MarkBattlerForControllerExec(battler); } - FaintClearSetData(battler); // Effects like attractions, trapping, etc. - gBattlescriptCurrInstr = cmd->nextInstr; + clearDataResult = FaintClearSetData(battler); // Effects like attractions, trapping, etc. + if (clearDataResult) + gBattlescriptCurrInstr = clearDataResult; + else + gBattlescriptCurrInstr = cmd->nextInstr; } } @@ -8741,7 +8749,13 @@ static void Cmd_various(void) case VARIOUS_CANCEL_MULTI_TURN_MOVES: { VARIOUS_ARGS(); - CancelMultiTurnMoves(battler); + const u8 *result; + result = CancelMultiTurnMoves(battler); + if (result) + { + gBattlescriptCurrInstr = result; + return; + } break; } case VARIOUS_SET_MAGIC_COAT_TARGET: @@ -13724,7 +13738,7 @@ u16 GetNaturePowerMove(void) return MOVE_ENERGY_BALL; else if (gFieldStatuses & STATUS_FIELD_PSYCHIC_TERRAIN) return MOVE_PSYCHIC; - else if (sNaturePowerMoves == MOVE_NONE) + else if (sNaturePowerMoves[gBattleTerrain] == MOVE_NONE) return MOVE_TRI_ATTACK; return sNaturePowerMoves[gBattleTerrain]; } diff --git a/src/battle_util.c b/src/battle_util.c index 5429788d23..fa11937285 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -1333,8 +1333,9 @@ void MarkBattlerReceivedLinkData(u32 battler) gBattleControllerExecFlags &= ~((1 << 28) << battler); } -void CancelMultiTurnMoves(u32 battler) +const u8* CancelMultiTurnMoves(u32 battler) { + const u8 *result = NULL; gBattleMons[battler].status2 &= ~(STATUS2_MULTIPLETURNS); gBattleMons[battler].status2 &= ~(STATUS2_LOCK_CONFUSE); gBattleMons[battler].status2 &= ~(STATUS2_UPROAR); @@ -1389,14 +1390,14 @@ void CancelMultiTurnMoves(u32 battler) else if (gBattlescriptCurrInstr[0] == 0x76 && gBattlescriptCurrInstr[2] == 0) { gBattlerAttacker = otherSkyDropper; - gBattlescriptCurrInstr = BattleScript_ThrashConfuses - 3; + result = BattleScript_ThrashConfuses; } // If this CancelMultiTurnMoves is occuring due to receiving Sleep/Freeze status else if (gBattleScripting.moveEffect <= PRIMARY_STATUS_MOVE_EFFECT) { gBattlerAttacker = otherSkyDropper; BattleScriptPush(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = BattleScript_ThrashConfuses - 1; + result = BattleScript_ThrashConfuses; } } } @@ -1411,6 +1412,7 @@ void CancelMultiTurnMoves(u32 battler) gDisableStructs[battler].rolloutTimer = 0; gDisableStructs[battler].furyCutterCounter = 0; + return result; } bool32 WasUnableToUseMove(u32 battler) diff --git a/src/contest.c b/src/contest.c index 7b29b55908..8f452b0921 100644 --- a/src/contest.c +++ b/src/contest.c @@ -1409,8 +1409,8 @@ static void Task_RaiseCurtainAtStart(u8 taskId) break; case 3: { - u16 bg0Cnt = GetGpuReg(REG_OFFSET_BG0CNT); - u16 bg2Cnt = GetGpuReg(REG_OFFSET_BG2CNT); + u32 bg0Cnt = GetGpuReg(REG_OFFSET_BG0CNT); + u32 bg2Cnt = GetGpuReg(REG_OFFSET_BG2CNT); ((struct BgCnt *)&bg0Cnt)->priority = 0; ((struct BgCnt *)&bg2Cnt)->priority = 0; SetGpuReg(REG_OFFSET_BG0CNT, bg0Cnt); @@ -2630,8 +2630,8 @@ static void Task_UpdateContestantBoxOrder(u8 taskId) static void Task_TryStartNextRoundOfAppeals(u8 taskId) { - vu16 sp0 = GetGpuReg(REG_OFFSET_BG0CNT); - vu16 sp2 = GetGpuReg(REG_OFFSET_BG2CNT); + vu32 sp0 = GetGpuReg(REG_OFFSET_BG0CNT); + vu32 sp2 = GetGpuReg(REG_OFFSET_BG2CNT); ((vBgCnt *)&sp0)->priority = 0; ((vBgCnt *)&sp2)->priority = 0; SetGpuReg(REG_OFFSET_BG0CNT, sp0); @@ -5055,7 +5055,7 @@ bool8 IsContestantAllowedToCombo(u8 contestant) static void SetBgForCurtainDrop(void) { s32 i; - u16 bg0Cnt, bg1Cnt, bg2Cnt; + u32 bg0Cnt, bg1Cnt, bg2Cnt; bg1Cnt = GetGpuReg(REG_OFFSET_BG1CNT); ((vBgCnt *)&bg1Cnt)->priority = 0; @@ -5093,7 +5093,7 @@ static void SetBgForCurtainDrop(void) static void UpdateContestantBoxOrder(void) { s32 i; - u16 bg1Cnt; + u32 bg1Cnt; RequestDma3Fill(0,(void *)(BG_CHAR_ADDR(2)), 0x2000, 1); CpuFill32(0, gContestResources->contestBgTilemaps[1], 0x1000); diff --git a/src/field_specials.c b/src/field_specials.c index 2720e5f587..13b8ae9daf 100644 --- a/src/field_specials.c +++ b/src/field_specials.c @@ -2201,6 +2201,8 @@ void ShowFrontierManiacMessage(void) else winStreak = gSaveBlock2Ptr->frontier.pyramidWinStreaks[FRONTIER_LVL_OPEN]; break; + default: + return; } for (i = 0; i < FRONTIER_MANIAC_MESSAGE_COUNT - 1 && sFrontierManiacStreakThresholds[facility][i] < winStreak; i++); diff --git a/src/field_weather.c b/src/field_weather.c index 80f32a14ca..0f0b137d9a 100644 --- a/src/field_weather.c +++ b/src/field_weather.c @@ -47,9 +47,9 @@ static bool8 LightenSpritePaletteInFog(u8); static void BuildColorMaps(void); static void UpdateWeatherColorMap(void); static void ApplyColorMap(u8 startPalIndex, u8 numPalettes, s8 colorMapIndex); -static void ApplyColorMapWithBlend(u8 startPalIndex, u8 numPalettes, s8 colorMapIndex, u8 blendCoeff, u16 blendColor); -static void ApplyDroughtColorMapWithBlend(s8 colorMapIndex, u8 blendCoeff, u16 blendColor); -static void ApplyFogBlend(u8 blendCoeff, u16 blendColor); +static void ApplyColorMapWithBlend(u8 startPalIndex, u8 numPalettes, s8 colorMapIndex, u8 blendCoeff, u32 blendColor); +static void ApplyDroughtColorMapWithBlend(s8 colorMapIndex, u8 blendCoeff, u32 blendColor); +static void ApplyFogBlend(u8 blendCoeff, u32 blendColor); static bool8 FadeInScreen_RainShowShade(void); static bool8 FadeInScreen_Drought(void); static bool8 FadeInScreen_FogHorizontal(void); @@ -544,7 +544,7 @@ static void ApplyColorMap(u8 startPalIndex, u8 numPalettes, s8 colorMapIndex) } } -static void ApplyColorMapWithBlend(u8 startPalIndex, u8 numPalettes, s8 colorMapIndex, u8 blendCoeff, u16 blendColor) +static void ApplyColorMapWithBlend(u8 startPalIndex, u8 numPalettes, s8 colorMapIndex, u8 blendCoeff, u32 blendColor) { u16 palOffset; u16 curPalIndex; @@ -595,7 +595,7 @@ static void ApplyColorMapWithBlend(u8 startPalIndex, u8 numPalettes, s8 colorMap } } -static void ApplyDroughtColorMapWithBlend(s8 colorMapIndex, u8 blendCoeff, u16 blendColor) +static void ApplyDroughtColorMapWithBlend(s8 colorMapIndex, u8 blendCoeff, u32 blendColor) { struct RGBColor color; u8 rBlend; @@ -650,7 +650,7 @@ static void ApplyDroughtColorMapWithBlend(s8 colorMapIndex, u8 blendCoeff, u16 b } } -static void ApplyFogBlend(u8 blendCoeff, u16 blendColor) +static void ApplyFogBlend(u8 blendCoeff, u32 blendColor) { struct RGBColor color; u8 rBlend; diff --git a/src/librfu_rfu.c b/src/librfu_rfu.c index 2dbd404616..152bb716e9 100644 --- a/src/librfu_rfu.c +++ b/src/librfu_rfu.c @@ -1409,7 +1409,7 @@ static u16 rfu_STC_setSendData_org(u8 ni_or_uni, u8 bmSendSlot, u8 subFrameSize, struct RfuSlotStatusUNI *slotStatus_UNI; struct RfuSlotStatusNI *slotStatus_NI; - if (gRfuLinkStatus->parentChild == MODE_NEUTRAL) + if (gRfuLinkStatus->parentChild > MODE_PARENT) return ERR_MODE_NOT_CONNECTED; if (!(bmSendSlot & 0xF)) return ERR_SLOT_NO; diff --git a/src/tv.c b/src/tv.c index d39464bcc0..306d0fc9e3 100644 --- a/src/tv.c +++ b/src/tv.c @@ -107,22 +107,22 @@ static bool8 IsAddingPokeNewsDisallowed(u8); static void ClearPokeNewsBySlot(u8); static void TranslateRubyShows(TVShow *); static void TranslateJapaneseEmeraldShows(TVShow *); -static void SetMixedTVShows(TVShow *, TVShow *, TVShow *, TVShow *); +static void SetMixedTVShows(TVShow[TV_SHOWS_COUNT], TVShow[TV_SHOWS_COUNT], TVShow[TV_SHOWS_COUNT], TVShow[TV_SHOWS_COUNT]); static void DeleteExcessMixedShows(void); static void DeactivateShowsWithUnseenSpecies(void); static void DeactivateGameCompleteShowsIfNotUnlocked(void); static s8 FindInactiveShowInArray(TVShow *); -static bool8 TryMixTVShow(TVShow *[], TVShow *[], u8); +static bool8 TryMixTVShow(TVShow *[TV_SHOWS_COUNT], TVShow *[TV_SHOWS_COUNT], u8); static bool8 TryMixNormalTVShow(TVShow *, TVShow *, u8); static bool8 TryMixRecordMixTVShow(TVShow *, TVShow *, u8); static bool8 TryMixOutbreakTVShow(TVShow *, TVShow *, u8); static void DeactivateShow(u8 showIdx); static void DeactivateShowIfNotSeenSpecies(u16, u8); -static void SetMixedPokeNews(PokeNews *, PokeNews *, PokeNews *, PokeNews *); +static void SetMixedPokeNews(PokeNews[POKE_NEWS_COUNT], PokeNews[POKE_NEWS_COUNT], PokeNews[POKE_NEWS_COUNT], PokeNews[POKE_NEWS_COUNT]); static void ClearInvalidPokeNews(void); static void ClearPokeNewsIfGameNotComplete(void); static s8 GetPokeNewsSlotIfActive(PokeNews *, u8); -static void InitTryMixPokeNewsShow(PokeNews *[], PokeNews *[]); +static void InitTryMixPokeNewsShow(PokeNews *[POKE_NEWS_COUNT], PokeNews *[POKE_NEWS_COUNT]); static bool8 TryMixPokeNewsShow(PokeNews *, PokeNews *, s8); static void TVShowDone(void); static void InterviewAfter_FanClubLetter(void); diff --git a/src/util.c b/src/util.c index 09381fcaf3..77d9cde2f1 100644 --- a/src/util.c +++ b/src/util.c @@ -261,7 +261,7 @@ u32 CalcByteArraySum(const u8 *data, u32 length) return sum; } -void BlendPalette(u16 palOffset, u16 numEntries, u8 coeff, u16 blendColor) +void BlendPalette(u16 palOffset, u16 numEntries, u8 coeff, u32 blendColor) { u16 i; for (i = 0; i < numEntries; i++) From 8176dd8af155894c66626313a12983a991f694a6 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Sat, 14 Oct 2023 13:24:38 -0300 Subject: [PATCH 101/162] Added src/data/map_group_count.h to .gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 082430d794..fa01e7526f 100644 --- a/.gitignore +++ b/.gitignore @@ -39,3 +39,4 @@ prefabs.json *.diff *.sym *.js +src/data/map_group_count.h From 9ece7ed04711d5e602a1d74342825deec565b554 Mon Sep 17 00:00:00 2001 From: Philipp AUER Date: Mon, 16 Oct 2023 20:11:34 +0200 Subject: [PATCH 102/162] Use dka container for a more modern gcc (#3429) Co-authored-by: sbird --- .github/workflows/build.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 02d7e22b6c..b55f8a9ab1 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -10,6 +10,7 @@ on: jobs: build: runs-on: ubuntu-latest + container: devkitpro/devkitarm env: GAME_VERSION: EMERALD GAME_REVISION: 0 @@ -27,7 +28,7 @@ jobs: repository: pret/agbcc - name: Install binutils - run: sudo apt install gcc-arm-none-eabi binutils-arm-none-eabi libelf-dev + run: sudo apt install -y build-essential libpng-dev libelf-dev # build-essential, git, and libpng-dev are already installed # gcc-arm-none-eabi is only needed for the modern build # as an alternative to dkP From 70985ed3d6898d8a5f34757485679843e9febbef Mon Sep 17 00:00:00 2001 From: kittenchilly Date: Wed, 18 Oct 2023 06:29:53 -0500 Subject: [PATCH 103/162] Fixed and more accurate Ruin abilities (#3415) --- src/battle_util.c | 26 ++++++++++++++------------ test/battle/ability/beads_of_ruin.c | 2 +- test/battle/ability/sword_of_ruin.c | 2 +- 3 files changed, 16 insertions(+), 14 deletions(-) diff --git a/src/battle_util.c b/src/battle_util.c index 0dee437872..3486b6a3b3 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -9022,18 +9022,6 @@ static inline u32 CalcMoveBasePowerAfterModifiers(u32 move, u32 battlerAtk, u32 modifier = uq4_12_multiply(modifier, UQ_4_12(1.33)); } - if (IsAbilityOnField(ABILITY_VESSEL_OF_RUIN) && atkAbility != ABILITY_VESSEL_OF_RUIN && IS_MOVE_SPECIAL(gCurrentMove)) - modifier = uq4_12_multiply(modifier, UQ_4_12(0.75)); - - if (IsAbilityOnField(ABILITY_SWORD_OF_RUIN) && defAbility != ABILITY_SWORD_OF_RUIN && IS_MOVE_PHYSICAL(gCurrentMove)) - modifier = uq4_12_multiply(modifier, UQ_4_12(1.25)); - - if (IsAbilityOnField(ABILITY_TABLETS_OF_RUIN) && atkAbility != ABILITY_TABLETS_OF_RUIN && IS_MOVE_PHYSICAL(gCurrentMove)) - modifier = uq4_12_multiply(modifier, UQ_4_12(0.75)); - - if (IsAbilityOnField(ABILITY_BEADS_OF_RUIN) && defAbility != ABILITY_BEADS_OF_RUIN && IS_MOVE_SPECIAL(gCurrentMove)) - modifier = uq4_12_multiply(modifier, UQ_4_12(1.25)); - // attacker partner's abilities if (IsBattlerAlive(BATTLE_PARTNER(battlerAtk))) { @@ -9322,6 +9310,13 @@ static inline u32 CalcAttackStat(u32 move, u32 battlerAtk, u32 battlerDef, u32 m } } + // field abilities + if (IsAbilityOnField(ABILITY_VESSEL_OF_RUIN) && atkAbility != ABILITY_VESSEL_OF_RUIN && IS_MOVE_SPECIAL(move)) + modifier = uq4_12_multiply_half_down(modifier, UQ_4_12(0.75)); + + if (IsAbilityOnField(ABILITY_TABLETS_OF_RUIN) && atkAbility != ABILITY_TABLETS_OF_RUIN && IS_MOVE_PHYSICAL(move)) + modifier = uq4_12_multiply_half_down(modifier, UQ_4_12(0.75)); + // attacker's hold effect switch (holdEffectAtk) { @@ -9471,6 +9466,13 @@ static inline u32 CalcDefenseStat(u32 move, u32 battlerAtk, u32 battlerDef, u32 } } + // field abilities + if (IsAbilityOnField(ABILITY_SWORD_OF_RUIN) && defAbility != ABILITY_SWORD_OF_RUIN && usesDefStat) + modifier = uq4_12_multiply_half_down(modifier, UQ_4_12(0.75)); + + if (IsAbilityOnField(ABILITY_BEADS_OF_RUIN) && defAbility != ABILITY_BEADS_OF_RUIN && !usesDefStat) + modifier = uq4_12_multiply_half_down(modifier, UQ_4_12(0.75)); + // target's hold effects switch (holdEffectDef) { diff --git a/test/battle/ability/beads_of_ruin.c b/test/battle/ability/beads_of_ruin.c index 1c6f740e8b..b406a9ecf3 100644 --- a/test/battle/ability/beads_of_ruin.c +++ b/test/battle/ability/beads_of_ruin.c @@ -25,7 +25,7 @@ SINGLE_BATTLE_TEST("Beads of Ruin reduces Sp. Def", s16 damage) } HP_BAR(opponent, captureDamage: &results[i].damage); } FINALLY { - EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.25), results[1].damage); + EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.33), results[1].damage); } } diff --git a/test/battle/ability/sword_of_ruin.c b/test/battle/ability/sword_of_ruin.c index 2abc0c04f7..35ba4f6e0d 100644 --- a/test/battle/ability/sword_of_ruin.c +++ b/test/battle/ability/sword_of_ruin.c @@ -25,7 +25,7 @@ SINGLE_BATTLE_TEST("Sword of Ruin reduces Defense", s16 damage) } HP_BAR(opponent, captureDamage: &results[i].damage); } FINALLY { - EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.25), results[1].damage); + EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.33), results[1].damage); } } From 91b6722322727e2cc14b711176ba9c03b5bb2f71 Mon Sep 17 00:00:00 2001 From: Alex Date: Wed, 18 Oct 2023 20:25:34 +0200 Subject: [PATCH 104/162] Octolock, more tests --- asm/macros/battle_script.inc | 11 ++-- data/battle_scripts_1.s | 21 +++---- include/battle_scripts.h | 1 + include/constants/battle_script_commands.h | 55 +++++++++-------- include/constants/battle_string_ids.h | 2 +- src/battle_message.c | 5 +- src/battle_script_commands.c | 44 +++++++------- src/battle_util.c | 16 ++--- test/battle/hold_effect/clear_amulet.c | 34 ++--------- test/battle/move_effect/octolock.c | 37 ++++++++++-- test/battle/move_effect/syrup_bomb.c | 68 +++++++++++++++++++--- 11 files changed, 169 insertions(+), 125 deletions(-) diff --git a/asm/macros/battle_script.inc b/asm/macros/battle_script.inc index 866831c462..9bff248651 100644 --- a/asm/macros/battle_script.inc +++ b/asm/macros/battle_script.inc @@ -1366,6 +1366,12 @@ .byte \battler .endm + .macro setoctolock battler:req, failInstr:req + callnative BS_Octolock + .byte \battler + .4byte \failInstr + .endm + .macro setzeffect callnative BS_SetZEffect .endm @@ -2044,11 +2050,6 @@ .4byte \failInstr .endm - .macro setoctolock battler:req, failInstr:req - various \battler, VARIOUS_SET_OCTOLOCK - .4byte \failInstr - .endm - .macro cutonethirdhpraisestats failInstr:req various BS_ATTACKER, VARIOUS_CUT_1_3_HP_RAISE_STATS .4byte \failInstr diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 7f323dbd8b..08d70e4e04 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -437,7 +437,6 @@ gBattleScriptsForMoveEffects:: .4byte BattleScript_EffectMortalSpin @ EFFECT_MORTAL_SPIN .4byte BattleScript_EffectHit @ EFFECT_GIGATON_HAMMER .4byte BattleScript_EffectSaltCure @ EFFECT_SALT_CURE - .4byte BattleScript_EffectMatchaGotcha @ EFFECT_MATCHA_GOTCHA .4byte BattleScript_EffectSyrupBomb @ EFFECT_SYRUP_BOMB .4byte BattleScript_EffectHit @ EFFECT_IVY_CUDGEL @@ -447,17 +446,17 @@ BattleScript_EffectSyrupBomb:: call BattleScript_EffectHit_Ret seteffectwithchance tryfaintmon BS_TARGET + goto BattleScript_MoveEnd + +BattleScript_SyrupBombActivates:: printstring STRINGID_TARGETCOVEREDINSTICKYCANDYSYRUP waitmessage B_WAIT_TIME_LONG - goto BattleScript_MoveEnd + return BattleScript_SyrupBombEndTurn:: playstatchangeanimation BS_ATTACKER, BIT_SPEED, STAT_CHANGE_NEGATIVE setstatchanger STAT_SPEED, 1, TRUE statbuffchange STAT_CHANGE_ALLOW_PTR | STAT_CHANGE_NOT_PROTECT_AFFECTED, BattleScript_SyrupBombTurnDmgEnd -BattleScript_SyrupBombTurnDmgPrintMsg: - jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 3, BattleScript_SyrupBombTurnDmgEnd - jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 4, BattleScript_SyrupBombTurnDmgEnd printfromtable gStatDownStringIds waitmessage B_WAIT_TIME_LONG BattleScript_SyrupBombTurnDmgEnd: @@ -1068,18 +1067,14 @@ BattleScript_EffectOctolock: BattleScript_OctolockEndTurn:: playstatchangeanimation BS_ATTACKER, BIT_DEF | BIT_SPDEF, STAT_CHANGE_NEGATIVE setstatchanger STAT_DEF, 1, TRUE - statbuffchange STAT_CHANGE_ALLOW_PTR | STAT_CHANGE_NOT_PROTECT_AFFECTED, BattleScript_OctolockTryLowerDef + statbuffchange STAT_CHANGE_ALLOW_PTR | STAT_CHANGE_NOT_PROTECT_AFFECTED, BattleScript_OctolockTryLowerSpDef BattleScript_OctolockTryLowerDef: - jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 3, BattleScript_OctolockTryLowerSpDef - jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 4, BattleScript_OctolockTryLowerSpDef printfromtable gStatDownStringIds waitmessage B_WAIT_TIME_LONG BattleScript_OctolockTryLowerSpDef: setstatchanger STAT_SPDEF, 1, TRUE - statbuffchange STAT_CHANGE_ALLOW_PTR | STAT_CHANGE_NOT_PROTECT_AFFECTED, BattleScript_OctolockTurnDmgPrintMsg + statbuffchange STAT_CHANGE_ALLOW_PTR | STAT_CHANGE_NOT_PROTECT_AFFECTED, BattleScript_OctlockTurnDmgEnd BattleScript_OctolockTurnDmgPrintMsg: - jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 3, BattleScript_OctlockTurnDmgEnd - jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 4, BattleScript_OctlockTurnDmgEnd printfromtable gStatDownStringIds waitmessage B_WAIT_TIME_LONG BattleScript_OctlockTurnDmgEnd: @@ -8597,7 +8592,7 @@ BattleScript_IntimidatePrevented: pause B_WAIT_TIME_LONG setbyte gBattleCommunication STAT_ATK stattextbuffer BS_TARGET - printstring STRINGID_STATWASNOTLOWERED + printstring STRINGID_PKMNPREVENTSSTATLOSSWITH waitmessage B_WAIT_TIME_LONG call BattleScript_TryAdrenalineOrb goto BattleScript_IntimidateLoopIncrement @@ -8908,7 +8903,7 @@ BattleScript_AbilityNoStatLoss:: BattleScript_ItemNoStatLoss:: pause B_WAIT_TIME_SHORT - printstring STRINGID_STATWASNOTLOWERED + printstring STRINGID_CLEARAMULETWONTLOWERSTATS waitmessage B_WAIT_TIME_LONG return diff --git a/include/battle_scripts.h b/include/battle_scripts.h index c2a73d01fd..807f228f35 100644 --- a/include/battle_scripts.h +++ b/include/battle_scripts.h @@ -480,6 +480,7 @@ extern const u8 BattleScript_SelectingNotAllowedCurrentMove[]; extern const u8 BattleScript_SelectingNotAllowedCurrentMoveInPalace[]; extern const u8 BattleScript_SaltCureExtraDamage[]; extern const u8 BattleScript_SyrupBombEndTurn[]; +extern const u8 BattleScript_SyrupBombActivates[]; // zmoves extern const u8 BattleScript_ZMoveActivateDamaging[]; diff --git a/include/constants/battle_script_commands.h b/include/constants/battle_script_commands.h index 1775b9528e..087af0e301 100644 --- a/include/constants/battle_script_commands.h +++ b/include/constants/battle_script_commands.h @@ -221,34 +221,33 @@ #define VARIOUS_TRY_TAR_SHOT 128 #define VARIOUS_CAN_TAR_SHOT_WORK 129 #define VARIOUS_CHECK_POLTERGEIST 130 -#define VARIOUS_SET_OCTOLOCK 131 -#define VARIOUS_CUT_1_3_HP_RAISE_STATS 132 -#define VARIOUS_TRY_END_NEUTRALIZING_GAS 133 -#define VARIOUS_JUMP_IF_UNDER_200 134 -#define VARIOUS_SET_SKY_DROP 135 -#define VARIOUS_CLEAR_SKY_DROP 136 -#define VARIOUS_SKY_DROP_YAWN 137 -#define VARIOUS_JUMP_IF_HOLD_EFFECT 138 -#define VARIOUS_CURE_CERTAIN_STATUSES 139 -#define VARIOUS_TRY_RESET_NEGATIVE_STAT_STAGES 140 -#define VARIOUS_JUMP_IF_LAST_USED_ITEM_BERRY 141 -#define VARIOUS_JUMP_IF_LAST_USED_ITEM_HOLD_EFFECT 142 -#define VARIOUS_SAVE_BATTLER_ITEM 143 -#define VARIOUS_RESTORE_BATTLER_ITEM 144 -#define VARIOUS_BATTLER_ITEM_TO_LAST_USED_ITEM 145 -#define VARIOUS_SET_BEAK_BLAST 146 -#define VARIOUS_SWAP_SIDE_STATUSES 147 -#define VARIOUS_SWAP_STATS 148 -#define VARIOUS_TEATIME_INVUL 149 -#define VARIOUS_TEATIME_TARGETS 150 -#define VARIOUS_TRY_WIND_RIDER_POWER 151 -#define VARIOUS_ACTIVATE_WEATHER_CHANGE_ABILITIES 152 -#define VARIOUS_ACTIVATE_TERRAIN_CHANGE_ABILITIES 153 -#define VARIOUS_STORE_HEALING_WISH 154 -#define VARIOUS_HIT_SWITCH_TARGET_FAILED 155 -#define VARIOUS_TRY_REVIVAL_BLESSING 156 -#define VARIOUS_TRY_TRAINER_SLIDE_MSG_Z_MOVE 157 -#define VARIOUS_TRY_TRAINER_SLIDE_MSG_MEGA_EVOLUTION 158 +#define VARIOUS_CUT_1_3_HP_RAISE_STATS 131 +#define VARIOUS_TRY_END_NEUTRALIZING_GAS 132 +#define VARIOUS_JUMP_IF_UNDER_200 133 +#define VARIOUS_SET_SKY_DROP 134 +#define VARIOUS_CLEAR_SKY_DROP 135 +#define VARIOUS_SKY_DROP_YAWN 136 +#define VARIOUS_JUMP_IF_HOLD_EFFECT 137 +#define VARIOUS_CURE_CERTAIN_STATUSES 138 +#define VARIOUS_TRY_RESET_NEGATIVE_STAT_STAGES 139 +#define VARIOUS_JUMP_IF_LAST_USED_ITEM_BERRY 140 +#define VARIOUS_JUMP_IF_LAST_USED_ITEM_HOLD_EFFECT 141 +#define VARIOUS_SAVE_BATTLER_ITEM 142 +#define VARIOUS_RESTORE_BATTLER_ITEM 143 +#define VARIOUS_BATTLER_ITEM_TO_LAST_USED_ITEM 144 +#define VARIOUS_SET_BEAK_BLAST 145 +#define VARIOUS_SWAP_SIDE_STATUSES 146 +#define VARIOUS_SWAP_STATS 147 +#define VARIOUS_TEATIME_INVUL 148 +#define VARIOUS_TEATIME_TARGETS 149 +#define VARIOUS_TRY_WIND_RIDER_POWER 150 +#define VARIOUS_ACTIVATE_WEATHER_CHANGE_ABILITIES 151 +#define VARIOUS_ACTIVATE_TERRAIN_CHANGE_ABILITIES 152 +#define VARIOUS_STORE_HEALING_WISH 153 +#define VARIOUS_HIT_SWITCH_TARGET_FAILED 154 +#define VARIOUS_TRY_REVIVAL_BLESSING 155 +#define VARIOUS_TRY_TRAINER_SLIDE_MSG_Z_MOVE 156 +#define VARIOUS_TRY_TRAINER_SLIDE_MSG_MEGA_EVOLUTION 157 // Cmd_manipulatedamage #define DMG_CHANGE_SIGN 0 diff --git a/include/constants/battle_string_ids.h b/include/constants/battle_string_ids.h index 54b7a4437c..6998502d1f 100644 --- a/include/constants/battle_string_ids.h +++ b/include/constants/battle_string_ids.h @@ -547,7 +547,7 @@ #define STRINGID_NOONEWILLBEABLETORUNAWAY 545 #define STRINGID_DESTINYKNOTACTIVATES 546 #define STRINGID_CLOAKEDINAFREEZINGLIGHT 547 -#define STRINGID_STATWASNOTLOWERED 548 +#define STRINGID_CLEARAMULETWONTLOWERSTATS 548 #define STRINGID_FERVENTWISHREACHED 549 #define STRINGID_AIRLOCKACTIVATES 550 #define STRINGID_PRESSUREENTERS 551 diff --git a/src/battle_message.c b/src/battle_message.c index 3b5402b97f..a0139f315f 100644 --- a/src/battle_message.c +++ b/src/battle_message.c @@ -702,7 +702,7 @@ static const u8 sText_PkmnAbsorbingPower[] = _("{B_ATK_NAME_WITH_PREFIX} is abso static const u8 sText_NoOneWillBeAbleToRun[] = _("No one will be able to run away\nduring the next turn!"); static const u8 sText_DestinyKnotActivates[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} fell in love\nfrom the {B_LAST_ITEM}!"); static const u8 sText_CloakedInAFreezingLight[] = _("{B_ATK_NAME_WITH_PREFIX} became cloaked\nin a freezing light!"); -static const u8 sText_StatWasNotLowered[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_BUFF1}\nwas not lowered!"); +static const u8 sText_ClearAmuletWontLowerStats[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_LAST_ITEM} prevents\nits stats from being lowered!"); static const u8 sText_AuraFlaredToLife[] = _("{B_DEF_NAME_WITH_PREFIX}'s aura flared to life!"); static const u8 sText_AirLockActivates[] = _("The effects of weather\ndisappeared."); static const u8 sText_PressureActivates[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} is exerting its\npressure!"); @@ -812,7 +812,6 @@ static const u8 sText_TargetCoveredInStickyCandySyrup[] = _("{B_DEF_NAME_WITH_PR const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT] = { - [STRINGID_OPPORTUNISTCOPIED - BATTLESTRINGS_TABLE_START] = sText_OpportunistCopied, [STRINGID_TARGETISHURTBYSALTCURE - BATTLESTRINGS_TABLE_START] = sText_TargetIsHurtBySaltCure, [STRINGID_TARGETISBEINGSALTCURED - BATTLESTRINGS_TABLE_START] = sText_TargetIsBeingSaltCured, [STRINGID_CURRENTMOVECANTSELECT - BATTLESTRINGS_TABLE_START] = sText_CurrentMoveCantSelect, @@ -899,7 +898,7 @@ const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT] = [STRINGID_ASANDSTORMKICKEDUP - BATTLESTRINGS_TABLE_START] = sText_ASandstormKickedUp, [STRINGID_BATTLERABILITYRAISEDSTAT - BATTLESTRINGS_TABLE_START] = sText_BattlerAbilityRaisedStat, [STRINGID_FETCHEDPOKEBALL - BATTLESTRINGS_TABLE_START] = sText_FetchedPokeBall, - [STRINGID_STATWASNOTLOWERED - BATTLESTRINGS_TABLE_START] = sText_StatWasNotLowered, + [STRINGID_CLEARAMULETWONTLOWERSTATS - BATTLESTRINGS_TABLE_START] = sText_ClearAmuletWontLowerStats, [STRINGID_CLOAKEDINAFREEZINGLIGHT - BATTLESTRINGS_TABLE_START] = sText_CloakedInAFreezingLight, [STRINGID_DESTINYKNOTACTIVATES - BATTLESTRINGS_TABLE_START] = sText_DestinyKnotActivates, [STRINGID_NOONEWILLBEABLETORUNAWAY - BATTLESTRINGS_TABLE_START] = sText_NoOneWillBeAbleToRun, diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index b415f25d52..0f3217d40d 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -3645,15 +3645,12 @@ void SetMoveEffect(bool32 primary, u32 certain) break; case MOVE_EFFECT_SYRUP_BOMB: - if (gStatuses4[gEffectBattler] & STATUS4_SYRUP_BOMB) - { - gBattlescriptCurrInstr++; - } - else + if (!(gStatuses4[gEffectBattler] & STATUS4_SYRUP_BOMB)) { gStatuses4[gEffectBattler] |= STATUS4_SYRUP_BOMB; gDisableStructs[gBattlerTarget].syrupBombTimer = 3; - gBattlescriptCurrInstr++; + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_SyrupBombActivates; } break; } @@ -10354,22 +10351,6 @@ static void Cmd_various(void) } return; } - case VARIOUS_SET_OCTOLOCK: - { - VARIOUS_ARGS(const u8 *failInstr); - if (gDisableStructs[battler].octolock) - { - gBattlescriptCurrInstr = cmd->failInstr; - } - else - { - gDisableStructs[battler].octolock = TRUE; - gBattleMons[battler].status2 |= STATUS2_ESCAPE_PREVENTION; - gDisableStructs[battler].battlerPreventingEscape = gBattlerAttacker; - gBattlescriptCurrInstr = cmd->nextInstr; - } - return; - } case VARIOUS_CHECK_POLTERGEIST: { VARIOUS_ARGS(const u8 *failInstr); @@ -11418,6 +11399,7 @@ static u32 ChangeStatBuffs(s8 statValue, u32 statId, u32 flags, const u8 *BS_ptr gBattleScripting.battler = battler; if (battlerHoldEffect == HOLD_EFFECT_CLEAR_AMULET) { + gLastUsedItem = gBattleMons[battler].item; gBattlescriptCurrInstr = BattleScript_ItemNoStatLoss; RecordItemEffectBattle(battler, HOLD_EFFECT_CLEAR_AMULET); } @@ -16260,3 +16242,21 @@ void BS_JumpIfTerrainAffected(void) else gBattlescriptCurrInstr = cmd->nextInstr; } + +void BS_Octolock(void) +{ + NATIVE_ARGS(u8 battler, const u8 *failInstr); + u32 battler = GetBattlerForBattleScript(cmd->battler); + + if (gDisableStructs[battler].octolock) + { + gBattlescriptCurrInstr = cmd->failInstr; + } + else + { + gDisableStructs[battler].octolock = TRUE; + gBattleMons[battler].status2 |= STATUS2_ESCAPE_PREVENTION; + gDisableStructs[battler].battlerPreventingEscape = gBattlerAttacker; + gBattlescriptCurrInstr = cmd->nextInstr; + } +} \ No newline at end of file diff --git a/src/battle_util.c b/src/battle_util.c index 32bbf7f7e0..b7b8dd089d 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -3090,19 +3090,11 @@ u8 DoBattlerEndTurnEffects(void) case ENDTURN_SYRUP_BOMB: if ((gStatuses4[battler] & STATUS4_SYRUP_BOMB) && (gBattleMons[battler].hp != 0)) { - gDisableStructs[battler].syrupBombTimer--; - if (gDisableStructs[battler].syrupBombTimer == 0) - { + if (gDisableStructs[battler].syrupBombTimer > 0 && --gDisableStructs[battler].syrupBombTimer == 0) gStatuses4[battler] &= ~STATUS4_SYRUP_BOMB; - PREPARE_MOVE_BUFFER(gBattleTextBuff1, MOVE_SYRUP_BOMB); - gBattlescriptCurrInstr = BattleScript_WrapEnds; - } - else if (gDisableStructs[battler].syrupBombTimer != 0) - { - gBattlerTarget = battler; - PREPARE_MOVE_BUFFER(gBattleTextBuff1, MOVE_SYRUP_BOMB); - gBattlescriptCurrInstr = BattleScript_SyrupBombEndTurn; - } + gBattlerTarget = battler; + PREPARE_MOVE_BUFFER(gBattleTextBuff1, MOVE_SYRUP_BOMB); + gBattlescriptCurrInstr = BattleScript_SyrupBombEndTurn; BattleScriptExecute(gBattlescriptCurrInstr); effect++; } diff --git a/test/battle/hold_effect/clear_amulet.c b/test/battle/hold_effect/clear_amulet.c index 39e6c22a69..fd695f06b5 100644 --- a/test/battle/hold_effect/clear_amulet.c +++ b/test/battle/hold_effect/clear_amulet.c @@ -21,8 +21,8 @@ SINGLE_BATTLE_TEST("Clear Amulet prevents Intimidate") } SCENE { HP_BAR(player, captureDamage: &turnOneHit); ABILITY_POPUP(player, ABILITY_INTIMIDATE); - NONE_OF { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); } - MESSAGE("Foe Wobbuffet's Attack was not lowered!"); + NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + MESSAGE("Foe Wobbuffet's Clear Amulet prevents its stats from being lowered!"); HP_BAR(player, captureDamage: &turnTwoHit); } THEN { EXPECT_EQ(turnOneHit, turnTwoHit); @@ -55,31 +55,8 @@ SINGLE_BATTLE_TEST("Clear Amulet prevents stat reducing effects") } WHEN { TURN { MOVE(player, move); } } SCENE { - NONE_OF { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); } - switch (move) - { - case MOVE_GROWL: - MESSAGE("Foe Wobbuffet's Attack was not lowered!"); - break; - case MOVE_LEER: - MESSAGE("Foe Wobbuffet's Defense was not lowered!"); - break; - case MOVE_CONFIDE: - MESSAGE("Foe Wobbuffet's Sp. Atk was not lowered!"); - break; - case MOVE_FAKE_TEARS: - MESSAGE("Foe Wobbuffet's Sp. Def was not lowered!"); - break; - case MOVE_SCARY_FACE: - MESSAGE("Foe Wobbuffet's Speed was not lowered!"); - break; - case MOVE_SWEET_SCENT: - MESSAGE("Foe Wobbuffet's evasiveness was not lowered!"); - break; - case MOVE_SAND_ATTACK: - MESSAGE("Foe Wobbuffet's accuracy was not lowered!"); - break; - } + NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + MESSAGE("Foe Wobbuffet's Clear Amulet prevents its stats from being lowered!"); } } @@ -106,6 +83,7 @@ SINGLE_BATTLE_TEST("Clear Amulet prevents secondary effects that reduce stats") } WHEN { TURN { MOVE(player, MOVE_ROCK_SMASH); } } SCENE { - NONE_OF { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); } + NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + NOT MESSAGE("Foe Wobbuffet's Clear Amulet prevents its stats from being lowered!"); } } diff --git a/test/battle/move_effect/octolock.c b/test/battle/move_effect/octolock.c index f3249dd5ce..2f70db39cf 100644 --- a/test/battle/move_effect/octolock.c +++ b/test/battle/move_effect/octolock.c @@ -1,7 +1,7 @@ #include "global.h" #include "test/battle.h" -SINGLE_BATTLE_TEST("Octolock") +SINGLE_BATTLE_TEST("Octolock decreases Defense and Sp. Def by at the end of the turn") { GIVEN { PLAYER(SPECIES_WOBBUFFET); @@ -18,7 +18,7 @@ SINGLE_BATTLE_TEST("Octolock") } } -SINGLE_BATTLE_TEST("Octolock 2") +SINGLE_BATTLE_TEST("Octolock reduction is prevented by Clear Body, White Smoke and Full Metal Body") { u32 species; u32 ability; @@ -62,7 +62,7 @@ SINGLE_BATTLE_TEST("Octolock 2") } } -SINGLE_BATTLE_TEST("Octolock 3") +SINGLE_BATTLE_TEST("Octolock Defense reduction is prevented by Big Pecks") { GIVEN { PLAYER(SPECIES_WOBBUFFET); @@ -75,23 +75,48 @@ SINGLE_BATTLE_TEST("Octolock 3") ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); NOT MESSAGE("Foe Pidgey's Defense fell!"); ABILITY_POPUP(opponent, ABILITY_BIG_PECKS); - MESSAGE("Foe Pidgey's Big Pecks prevents stat loss!"); - MESSAGE("Foe Wobbuffet's Sp. Def fell!"); + MESSAGE("Foe Pidgey's Big Pecks prevents Defense loss!"); + MESSAGE("Foe Pidgey's Sp. Def fell!"); } } -SINGLE_BATTLE_TEST("Octolock 4") +SINGLE_BATTLE_TEST("Octolock reduction is prevented by Clear Amulet") { GIVEN { PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_CLEAR_AMULET); } } WHEN { TURN { MOVE(player, MOVE_OCTOLOCK); } + TURN {} } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_OCTOLOCK, player); MESSAGE("Foe Wobbuffet can no longer escape because of Octolock!"); + MESSAGE("Foe Wobbuffet's Clear Amulet prevents its stats from being lowered!"); NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); NOT MESSAGE("Foe Wobbuffet's Defense fell!"); NOT MESSAGE("Foe Wobbuffet's Sp. Def fell!"); } } + +SINGLE_BATTLE_TEST("Octolock will not decrease Defense and Sp. Def further then minus six") +{ + u8 j; + + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_OCTOLOCK); } + for (j = 0; j < 6; j++) + TURN {} + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_OCTOLOCK, player); + for (j = 0; j < 5; j++) + MESSAGE("Foe Wobbuffet's Defense fell!"); + MESSAGE("Foe Wobbuffet's Sp. Def fell!"); + MESSAGE("Foe Wobbuffet's Defense won't go lower!"); + MESSAGE("Foe Wobbuffet's Sp. Def won't go lower!"); + NOT MESSAGE("Foe Wobbuffet's Defense fell!"); + NOT MESSAGE("Foe Wobbuffet's Sp. Def fell!"); + } +} diff --git a/test/battle/move_effect/syrup_bomb.c b/test/battle/move_effect/syrup_bomb.c index 08a3af95f9..7c3808def8 100644 --- a/test/battle/move_effect/syrup_bomb.c +++ b/test/battle/move_effect/syrup_bomb.c @@ -3,14 +3,15 @@ SINGLE_BATTLE_TEST("Syrup Bomb covers the foe in sticky syrup for 3 turns") { + u8 j; + GIVEN { PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(player, MOVE_SYRUP_BOMB); } - TURN {} - TURN {} - TURN {} + for (j = 0; j < 4; j++) + TURN {} } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_SYRUP_BOMB, player); HP_BAR(opponent); @@ -19,7 +20,30 @@ SINGLE_BATTLE_TEST("Syrup Bomb covers the foe in sticky syrup for 3 turns") MESSAGE("Foe Wobbuffet's Speed fell!"); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); MESSAGE("Foe Wobbuffet's Speed fell!"); - MESSAGE("Foe Wobbuffet was freed from Syrup Bomb!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + MESSAGE("Foe Wobbuffet's Speed fell!"); + NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + NOT MESSAGE("Foe Wobbuffet's Speed fell!"); + } +} + +SINGLE_BATTLE_TEST("Target will be not covered in sticky syrup again if it is currently covered") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_SYRUP_BOMB); } + TURN { MOVE(player, MOVE_SYRUP_BOMB); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SYRUP_BOMB, player); + HP_BAR(opponent); + MESSAGE("Foe Wobbuffet got covered in sticky syrup!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + MESSAGE("Foe Wobbuffet's Speed fell!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SYRUP_BOMB, player); + HP_BAR(opponent); + NOT MESSAGE("Foe Wobbuffet got covered in sticky syrup!"); } } @@ -32,9 +56,9 @@ SINGLE_BATTLE_TEST("Syrup Bomb is prevented by Bulletproof") TURN { MOVE(player, MOVE_SYRUP_BOMB); } } SCENE { ABILITY_POPUP(opponent, ABILITY_BULLETPROOF); + MESSAGE("Foe Chespin's Bulletproof blocks Syrup Bomb!"); NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_SYRUP_BOMB, player); NOT HP_BAR(opponent); - MESSAGE("Foe Chespin's Bulletproof blocks Syrup Bomb!"); } } @@ -63,23 +87,29 @@ SINGLE_BATTLE_TEST("Clear Body, White Smoke and Full Metal Body prevent Sticky S MESSAGE("Foe Beldum got covered in sticky syrup!"); ABILITY_POPUP(opponent, ABILITY_CLEAR_BODY); MESSAGE("Foe Beldum's Clear Body prevents stat loss!"); + NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + NOT MESSAGE("Foe Beldum's Speed fell!"); } else if (species == SPECIES_TORKOAL) { MESSAGE("Foe Torkoal got covered in sticky syrup!"); ABILITY_POPUP(opponent, ABILITY_WHITE_SMOKE); MESSAGE("Foe Torkoal's White Smoke prevents stat loss!"); + NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + NOT MESSAGE("Foe Torkoal's Speed fell!"); } else if (species == SPECIES_SOLGALEO) { MESSAGE("Foe Solgaleo got covered in sticky syrup!"); ABILITY_POPUP(opponent, ABILITY_FULL_METAL_BODY); MESSAGE("Foe Solgaleo's Full Metal Body prevents stat loss!"); + NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + NOT MESSAGE("Foe Solgaleo's Speed fell!"); } } } -SINGLE_BATTLE_TEST("Clear Amulet prevents Sticky Syrup speed reduction") +SINGLE_BATTLE_TEST("Sticky Syrup speed reduction is prevented by Clear Amulet") { GIVEN { PLAYER(SPECIES_WOBBUFFET); @@ -90,8 +120,32 @@ SINGLE_BATTLE_TEST("Clear Amulet prevents Sticky Syrup speed reduction") ANIMATION(ANIM_TYPE_MOVE, MOVE_SYRUP_BOMB, player); HP_BAR(opponent); MESSAGE("Foe Wobbuffet got covered in sticky syrup!"); + MESSAGE("Foe Wobbuffet's Clear Amulet prevents its stats from being lowered!"); + NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + NOT MESSAGE("Foe Wobbuffet's Speed fell!"); + } +} + +SINGLE_BATTLE_TEST("Sticky syrup will not decrease speed further then minus six") +{ + u8 j; + + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + for (j = 0; j < 3; j++) + TURN { MOVE(player, MOVE_SCARY_FACE); } + TURN { MOVE(player, MOVE_SYRUP_BOMB); } + TURN {} + } SCENE { + for (j = 0; j < 3; j++) + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCARY_FACE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SYRUP_BOMB, player); + HP_BAR(opponent); + MESSAGE("Foe Wobbuffet got covered in sticky syrup!"); + MESSAGE("Foe Wobbuffet's Speed won't go lower!"); NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); NOT MESSAGE("Foe Wobbuffet's Speed fell!"); - MESSAGE("Foe Wobbuffet's Speed was not lowered!"); } } From 354f84be21e90cd6468e05524cb6159ed8e54651 Mon Sep 17 00:00:00 2001 From: Alex Date: Wed, 18 Oct 2023 22:14:49 +0200 Subject: [PATCH 105/162] intim changes --- data/battle_scripts_1.s | 17 ----------------- src/battle_message.c | 1 + src/battle_script_commands.c | 10 ++++++++-- test/battle/ability/hyper_cutter.c | 2 +- test/battle/ability/inner_focus.c | 2 +- test/battle/ability/oblivious.c | 2 +- test/battle/ability/opportunist.c | 4 ++-- test/battle/ability/own_tempo.c | 2 +- test/battle/ability/scrappy.c | 2 +- 9 files changed, 16 insertions(+), 26 deletions(-) diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 08d70e4e04..8c2389054c 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -8548,13 +8548,6 @@ BattleScript_IntimidateLoop: jumpiftargetally BattleScript_IntimidateLoopIncrement jumpifabsent BS_TARGET, BattleScript_IntimidateLoopIncrement jumpifstatus2 BS_TARGET, STATUS2_SUBSTITUTE, BattleScript_IntimidateLoopIncrement - jumpifability BS_TARGET, ABILITY_HYPER_CUTTER, BattleScript_IntimidatePrevented -.if B_UPDATED_INTIMIDATE >= GEN_8 - jumpifability BS_TARGET, ABILITY_INNER_FOCUS, BattleScript_IntimidatePrevented - jumpifability BS_TARGET, ABILITY_SCRAPPY, BattleScript_IntimidatePrevented - jumpifability BS_TARGET, ABILITY_OWN_TEMPO, BattleScript_IntimidatePrevented - jumpifability BS_TARGET, ABILITY_OBLIVIOUS, BattleScript_IntimidatePrevented -.endif jumpifability BS_TARGET, ABILITY_GUARD_DOG, BattleScript_IntimidateInReverse BattleScript_IntimidateEffect: copybyte sBATTLER, gBattlerAttacker @@ -8587,16 +8580,6 @@ BattleScript_IntimidateContrary_WontIncrease: printstring STRINGID_TARGETSTATWONTGOHIGHER goto BattleScript_IntimidateEffect_WaitString -BattleScript_IntimidatePrevented: - call BattleScript_AbilityPopUp - pause B_WAIT_TIME_LONG - setbyte gBattleCommunication STAT_ATK - stattextbuffer BS_TARGET - printstring STRINGID_PKMNPREVENTSSTATLOSSWITH - waitmessage B_WAIT_TIME_LONG - call BattleScript_TryAdrenalineOrb - goto BattleScript_IntimidateLoopIncrement - BattleScript_IntimidateInReverse: copybyte sBATTLER, gBattlerTarget call BattleScript_AbilityPopUpTarget diff --git a/src/battle_message.c b/src/battle_message.c index a0139f315f..0b58caaf34 100644 --- a/src/battle_message.c +++ b/src/battle_message.c @@ -812,6 +812,7 @@ static const u8 sText_TargetCoveredInStickyCandySyrup[] = _("{B_DEF_NAME_WITH_PR const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT] = { + [STRINGID_OPPORTUNISTCOPIED - BATTLESTRINGS_TABLE_START] = sText_OpportunistCopied, [STRINGID_TARGETISHURTBYSALTCURE - BATTLESTRINGS_TABLE_START] = sText_TargetIsHurtBySaltCure, [STRINGID_TARGETISBEINGSALTCURED - BATTLESTRINGS_TABLE_START] = sText_TargetIsBeingSaltCured, [STRINGID_CURRENTMOVECANTSELECT - BATTLESTRINGS_TABLE_START] = sText_CurrentMoveCantSelect, diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 0f3217d40d..d4d0fcf21a 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -11384,7 +11384,13 @@ static u32 ChangeStatBuffs(s8 statValue, u32 statId, u32 flags, const u8 *BS_ptr else if ((battlerHoldEffect == HOLD_EFFECT_CLEAR_AMULET || battlerAbility == ABILITY_CLEAR_BODY || battlerAbility == ABILITY_FULL_METAL_BODY - || battlerAbility == ABILITY_WHITE_SMOKE) + || battlerAbility == ABILITY_WHITE_SMOKE + || (battlerAbility == ABILITY_HYPER_CUTTER && statId == STAT_ATK)) + || ((B_UPDATED_INTIMIDATE >= GEN_8) && statId == STAT_ATK + && (battlerAbility == ABILITY_INNER_FOCUS + || battlerAbility == ABILITY_SCRAPPY + || battlerAbility == ABILITY_OWN_TEMPO + || battlerAbility == ABILITY_OBLIVIOUS)) && (!affectsUser || mirrorArmored) && !certain && gCurrentMove != MOVE_CURSE) { if (flags == STAT_CHANGE_ALLOW_PTR) @@ -16259,4 +16265,4 @@ void BS_Octolock(void) gDisableStructs[battler].battlerPreventingEscape = gBattlerAttacker; gBattlescriptCurrInstr = cmd->nextInstr; } -} \ No newline at end of file +} diff --git a/test/battle/ability/hyper_cutter.c b/test/battle/ability/hyper_cutter.c index ac942039bb..4155cc5a12 100644 --- a/test/battle/ability/hyper_cutter.c +++ b/test/battle/ability/hyper_cutter.c @@ -19,7 +19,7 @@ SINGLE_BATTLE_TEST("Hyper Cutter prevents intimidate") ABILITY_POPUP(player, ABILITY_INTIMIDATE); NONE_OF { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); } ABILITY_POPUP(opponent, ABILITY_HYPER_CUTTER); - MESSAGE("Foe Krabby's Attack was not lowered!"); + MESSAGE("Foe Krabby's Hyper Cutter prevents stat loss!"); HP_BAR(player, captureDamage: &turnTwoHit); } THEN { EXPECT_EQ(turnOneHit, turnTwoHit); diff --git a/test/battle/ability/inner_focus.c b/test/battle/ability/inner_focus.c index 574c860a74..ecd71272cb 100644 --- a/test/battle/ability/inner_focus.c +++ b/test/battle/ability/inner_focus.c @@ -20,7 +20,7 @@ SINGLE_BATTLE_TEST("Inner Focus prevents intimidate") ABILITY_POPUP(player, ABILITY_INTIMIDATE); NONE_OF { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); } ABILITY_POPUP(opponent, ABILITY_INNER_FOCUS); - MESSAGE("Foe Zubat's Attack was not lowered!"); + MESSAGE("Foe Zubat's Inner Focus prevents stat loss!"); HP_BAR(player, captureDamage: &turnTwoHit); } THEN { EXPECT_EQ(turnOneHit, turnTwoHit); diff --git a/test/battle/ability/oblivious.c b/test/battle/ability/oblivious.c index 51d27bb169..b851256acc 100644 --- a/test/battle/ability/oblivious.c +++ b/test/battle/ability/oblivious.c @@ -63,6 +63,6 @@ SINGLE_BATTLE_TEST("Oblivious prevents Intimidate") ABILITY_POPUP(opponent, ABILITY_INTIMIDATE); ABILITY_POPUP(player, ABILITY_OBLIVIOUS); NONE_OF { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); } - MESSAGE("Slowpoke's Attack was not lowered!"); + MESSAGE("Slowpoke's Oblivious prevents stat loss!"); } } diff --git a/test/battle/ability/opportunist.c b/test/battle/ability/opportunist.c index f344bd026f..2f0c5c8c84 100644 --- a/test/battle/ability/opportunist.c +++ b/test/battle/ability/opportunist.c @@ -69,7 +69,7 @@ DOUBLE_BATTLE_TEST("Opportunist raises Attack only once when partner has Intimid ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentRight); MESSAGE("Mightyena's Intimidate cuts Foe Spinda's attack!"); } - + if ((abilityLeft == ABILITY_CONTRARY && abilityRight != ABILITY_CONTRARY) || (abilityLeft != ABILITY_CONTRARY && abilityRight == ABILITY_CONTRARY)) { ABILITY_POPUP(playerRight, ABILITY_OPPORTUNIST); @@ -82,7 +82,7 @@ DOUBLE_BATTLE_TEST("Opportunist raises Attack only once when partner has Intimid ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerRight); MESSAGE("Wobbuffet's Attack sharply rose!"); } - + HP_BAR(playerLeft, captureDamage: &results[i].damageLeft); HP_BAR(playerRight, captureDamage: &results[i].damageRight); } THEN { diff --git a/test/battle/ability/own_tempo.c b/test/battle/ability/own_tempo.c index 4c6a3167f6..9babd52589 100644 --- a/test/battle/ability/own_tempo.c +++ b/test/battle/ability/own_tempo.c @@ -20,7 +20,7 @@ SINGLE_BATTLE_TEST("Own Tempo prevents intimidate") ABILITY_POPUP(player, ABILITY_INTIMIDATE); NONE_OF { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); } ABILITY_POPUP(opponent, ABILITY_OWN_TEMPO); - MESSAGE("Foe Slowpoke's Attack was not lowered!"); + MESSAGE("Foe Slowpoke's Own Tempo prevents stat loss!"); HP_BAR(player, captureDamage: &turnTwoHit); } THEN { EXPECT_EQ(turnOneHit, turnTwoHit); diff --git a/test/battle/ability/scrappy.c b/test/battle/ability/scrappy.c index df4ededa4e..22b6660b69 100644 --- a/test/battle/ability/scrappy.c +++ b/test/battle/ability/scrappy.c @@ -20,7 +20,7 @@ SINGLE_BATTLE_TEST("Scrappy prevents intimidate") ABILITY_POPUP(player, ABILITY_INTIMIDATE); NONE_OF { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); } ABILITY_POPUP(opponent, ABILITY_SCRAPPY); - MESSAGE("Foe Kangaskhan's Attack was not lowered!"); + MESSAGE("Foe Kangaskhan's Scrappy prevents stat loss!"); HP_BAR(player, captureDamage: &turnTwoHit); } THEN { EXPECT_EQ(turnOneHit, turnTwoHit); From b0e572b3859d0bbff9839dc6b44b86515fbf8671 Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Wed, 18 Oct 2023 19:49:54 -0300 Subject: [PATCH 106/162] Added HGSS Dex to README --- README.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 6f87572467..6ebb6f05da 100644 --- a/README.md +++ b/README.md @@ -108,11 +108,17 @@ The pokeemerald Expansion is a feature branch meant to be integrated into existi - Feature branches incorporated: - [RHH intro credits](https://github.com/Xhyzi/pokeemerald/tree/rhh-intro-credits) by Xhyzi. - A small signature from all of us to show the collective effort in the project :) - - [Overworld debug]() by TheXaman + - [Overworld debug](https://github.com/TheXaman/pokeemerald/tree/tx_debug_system) by TheXaman + - May be disabled. - Accesible by pressing `R + Start` in the overworld by default. - **Additional features**: - *Clear Boxes*: cleans every Pokémon from the Boxes. - *Hatch an Egg*: lets you choose an Egg in your party and immediatly hatch it. + - [HGSS Pokédex](https://github.com/TheXaman/pokeemerald/tree/tx_pokedexPlus_hgss) by TheXaman + - May be disabled. + - **Additional features**: + - *Support for new evolution methods*. + - *Dark Mode*. - Other features - Pressing B while holding a Pokémon drops them like in modern games (configurable). - Running indoors (configurable). From 876341105bcf003e6cdc309830f1289ef3f6ef64 Mon Sep 17 00:00:00 2001 From: Alex Date: Thu, 19 Oct 2023 11:32:58 +0200 Subject: [PATCH 107/162] parantheses --- src/battle_script_commands.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index d4d0fcf21a..19879ba9b3 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -11381,16 +11381,15 @@ static u32 ChangeStatBuffs(s8 statValue, u32 statId, u32 flags, const u8 *BS_ptr gBattlescriptCurrInstr = BattleScript_ButItFailed; return STAT_CHANGE_DIDNT_WORK; } - else if ((battlerHoldEffect == HOLD_EFFECT_CLEAR_AMULET + else if (((battlerHoldEffect == HOLD_EFFECT_CLEAR_AMULET || battlerAbility == ABILITY_CLEAR_BODY || battlerAbility == ABILITY_FULL_METAL_BODY - || battlerAbility == ABILITY_WHITE_SMOKE - || (battlerAbility == ABILITY_HYPER_CUTTER && statId == STAT_ATK)) + || battlerAbility == ABILITY_WHITE_SMOKE) || ((B_UPDATED_INTIMIDATE >= GEN_8) && statId == STAT_ATK && (battlerAbility == ABILITY_INNER_FOCUS || battlerAbility == ABILITY_SCRAPPY || battlerAbility == ABILITY_OWN_TEMPO - || battlerAbility == ABILITY_OBLIVIOUS)) + || battlerAbility == ABILITY_OBLIVIOUS))) && (!affectsUser || mirrorArmored) && !certain && gCurrentMove != MOVE_CURSE) { if (flags == STAT_CHANGE_ALLOW_PTR) From 535768838f142f9a8ba53dc1a13db3652e5c1c10 Mon Sep 17 00:00:00 2001 From: Alex Date: Thu, 19 Oct 2023 21:28:27 +0200 Subject: [PATCH 108/162] Hyper Cutter tests --- test/battle/ability/hyper_cutter.c | 116 ++++++++++++++++++++++++++--- 1 file changed, 107 insertions(+), 9 deletions(-) diff --git a/test/battle/ability/hyper_cutter.c b/test/battle/ability/hyper_cutter.c index cde108e4c3..10be6fa725 100644 --- a/test/battle/ability/hyper_cutter.c +++ b/test/battle/ability/hyper_cutter.c @@ -7,9 +7,9 @@ SINGLE_BATTLE_TEST("Hyper Cutter prevents intimidate") s16 turnTwoHit; GIVEN { - PLAYER(SPECIES_EKANS) { Ability(ABILITY_SHED_SKIN); }; - PLAYER(SPECIES_EKANS) { Ability(ABILITY_INTIMIDATE); }; - OPPONENT(SPECIES_KRABBY) { Ability(ABILITY_HYPER_CUTTER); }; + PLAYER(SPECIES_EKANS) { Ability(ABILITY_SHED_SKIN); } + PLAYER(SPECIES_EKANS) { Ability(ABILITY_INTIMIDATE); } + OPPONENT(SPECIES_KRABBY) { Ability(ABILITY_HYPER_CUTTER); } } WHEN { TURN { MOVE(opponent, MOVE_TACKLE); } TURN { SWITCH(player, 1); MOVE(opponent, MOVE_TACKLE); } @@ -26,10 +26,108 @@ SINGLE_BATTLE_TEST("Hyper Cutter prevents intimidate") } } -TO_DO_BATTLE_TEST("Hyper Cutter prevents Attack stage reduction from moves"); // Growl -TO_DO_BATTLE_TEST("Hyper Cutter doesn't prevent Attack stage reduction from moves used by the user"); // e.g. Superpower -TO_DO_BATTLE_TEST("Hyper Cutter doesn't prevent Attack reduction from burn"); +SINGLE_BATTLE_TEST("Hyper Cutter prevents Attack stage reduction from moves") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_GROWL].effect == EFFECT_ATTACK_DOWN); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_KRABBY) { Ability(ABILITY_HYPER_CUTTER); } + } WHEN { + TURN { MOVE(player, MOVE_GROWL); } + } SCENE { + ABILITY_POPUP(opponent, ABILITY_HYPER_CUTTER); + MESSAGE("Foe Krabby's Hyper Cutter prevents Attack loss!"); + } +} + +SINGLE_BATTLE_TEST("Hyper Cutter doesn't prevent Attack reduction from burn") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_WILL_O_WISP].effect == EFFECT_WILL_O_WISP); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_KRABBY) { Ability(ABILITY_HYPER_CUTTER); } + } WHEN { + TURN { MOVE(player, MOVE_WILL_O_WISP); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_WILL_O_WISP, player); + MESSAGE("Foe Krabby was burned!"); + } THEN { + EXPECT_EQ(opponent->statStages[STAT_ATK], DEFAULT_STAT_STAGE); + } +} + +SINGLE_BATTLE_TEST("Hyper Cutter is ignored by Mold Breaker") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_GROWL].effect == EFFECT_ATTACK_DOWN); + PLAYER(SPECIES_PINSIR) { Ability(ABILITY_MOLD_BREAKER); } + OPPONENT(SPECIES_KRABBY) { Ability(ABILITY_HYPER_CUTTER); } + } WHEN { + TURN { MOVE(player, MOVE_GROWL); } + } SCENE { + ABILITY_POPUP(player, ABILITY_MOLD_BREAKER); + MESSAGE("Pinsir breaks the mold!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_GROWL, player); + MESSAGE("Foe Krabby's Attack fell!"); + NOT ABILITY_POPUP(opponent, ABILITY_HYPER_CUTTER); + NOT MESSAGE("Foe Krabby's Hyper Cutter prevents Attack loss!"); + } +} + +SINGLE_BATTLE_TEST("Hyper Cutter doesn't prevent Attack stage reduction from moves used by the user") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_SUPERPOWER].effect == EFFECT_SUPERPOWER); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_KRABBY) { Ability(ABILITY_HYPER_CUTTER); } + } WHEN { + TURN { MOVE(opponent, MOVE_SUPERPOWER); } + TURN {} + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SUPERPOWER, opponent); + MESSAGE("Foe Krabby's Attack fell!"); + MESSAGE("Foe Krabby's Defense fell!"); + } THEN { + EXPECT_EQ(opponent->statStages[STAT_ATK], DEFAULT_STAT_STAGE - 1); + } +} + +SINGLE_BATTLE_TEST("Hyper Cutter doesn't prevent Topsy-Turvy") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_SWORDS_DANCE].effect == EFFECT_ATTACK_UP_2); + ASSUME(gBattleMoves[MOVE_TOPSY_TURVY].effect == EFFECT_TOPSY_TURVY); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_KRABBY) { Ability(ABILITY_HYPER_CUTTER); } + } WHEN { + TURN { MOVE(opponent, MOVE_SWORDS_DANCE); MOVE(player, MOVE_TOPSY_TURVY); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SWORDS_DANCE, opponent); + MESSAGE("Foe Krabby's Attack sharply rose!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TOPSY_TURVY, player); + MESSAGE("Foe Krabby's stat changes were all reversed!"); + } THEN { + EXPECT_EQ(opponent->statStages[STAT_ATK], DEFAULT_STAT_STAGE - 2); + } +} + +SINGLE_BATTLE_TEST("xx Hyper Cutter doesn't prevent Spectral Thief from resetting positive Attack stage changes") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_SWORDS_DANCE].effect == EFFECT_ATTACK_UP_2); + ASSUME(gBattleMoves[MOVE_SPECTRAL_THIEF].effect == EFFECT_SPECTRAL_THIEF); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_KRABBY) { Ability(ABILITY_HYPER_CUTTER); } + } WHEN { + TURN { MOVE(opponent, MOVE_SWORDS_DANCE); MOVE(player, MOVE_SPECTRAL_THIEF); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SWORDS_DANCE, opponent); + MESSAGE("Foe Krabby's Attack sharply rose!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SPECTRAL_THIEF, player); + MESSAGE("Wobbuffet stole the target's boosted stats!"); + } THEN { + EXPECT_EQ(opponent->statStages[STAT_ATK], DEFAULT_STAT_STAGE); + } +} + TO_DO_BATTLE_TEST("Hyper Cutter doesn't prevent receiving negative Attack stage changes from Baton Pass"); -TO_DO_BATTLE_TEST("Hyper Cutter doesn't prevent Topsy-Turvy"); -TO_DO_BATTLE_TEST("Hyper Cutter doesn't prevent Spectral Thief from resetting positive Attack stage changes"); -TO_DO_BATTLE_TEST("Hyper Cutter is ignored by Mold Breaker"); From f3580aa3f56005917aed8ed350b76d9078069777 Mon Sep 17 00:00:00 2001 From: Alex Date: Thu, 19 Oct 2023 21:31:04 +0200 Subject: [PATCH 109/162] tabs --- data/battle_scripts_1.s | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index cfb2d03cc9..a279a8f0bc 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -456,7 +456,7 @@ BattleScript_SyrupBombActivates:: BattleScript_SyrupBombEndTurn:: playstatchangeanimation BS_ATTACKER, BIT_SPEED, STAT_CHANGE_NEGATIVE setstatchanger STAT_SPEED, 1, TRUE - statbuffchange STAT_CHANGE_ALLOW_PTR | STAT_CHANGE_NOT_PROTECT_AFFECTED, BattleScript_SyrupBombTurnDmgEnd + statbuffchange STAT_CHANGE_ALLOW_PTR | STAT_CHANGE_NOT_PROTECT_AFFECTED, BattleScript_SyrupBombTurnDmgEnd printfromtable gStatDownStringIds waitmessage B_WAIT_TIME_LONG BattleScript_SyrupBombTurnDmgEnd: @@ -1067,13 +1067,13 @@ BattleScript_EffectOctolock: BattleScript_OctolockEndTurn:: playstatchangeanimation BS_ATTACKER, BIT_DEF | BIT_SPDEF, STAT_CHANGE_NEGATIVE setstatchanger STAT_DEF, 1, TRUE - statbuffchange STAT_CHANGE_ALLOW_PTR | STAT_CHANGE_NOT_PROTECT_AFFECTED, BattleScript_OctolockTryLowerSpDef + statbuffchange STAT_CHANGE_ALLOW_PTR | STAT_CHANGE_NOT_PROTECT_AFFECTED, BattleScript_OctolockTryLowerSpDef BattleScript_OctolockTryLowerDef: printfromtable gStatDownStringIds waitmessage B_WAIT_TIME_LONG BattleScript_OctolockTryLowerSpDef: setstatchanger STAT_SPDEF, 1, TRUE - statbuffchange STAT_CHANGE_ALLOW_PTR | STAT_CHANGE_NOT_PROTECT_AFFECTED, BattleScript_OctlockTurnDmgEnd + statbuffchange STAT_CHANGE_ALLOW_PTR | STAT_CHANGE_NOT_PROTECT_AFFECTED, BattleScript_OctlockTurnDmgEnd BattleScript_OctolockTurnDmgPrintMsg: printfromtable gStatDownStringIds waitmessage B_WAIT_TIME_LONG From 33a0fdbbc6041d8fa3f4ed98412ab0f09002cf12 Mon Sep 17 00:00:00 2001 From: kittenchilly Date: Thu, 19 Oct 2023 18:16:37 -0500 Subject: [PATCH 110/162] Add new move flags and update all flags for every move (#3425) Co-authored-by: Eduardo Quezada D'Ottone --- data/battle_scripts_1.s | 1 - include/battle.h | 1 - include/battle_ai_util.h | 1 + include/battle_util.h | 5 +- include/config/battle.h | 2 +- include/constants/battle_move_effects.h | 13 +- include/pokemon.h | 9 +- src/battle_ai_main.c | 3 +- src/battle_ai_util.c | 6 +- src/battle_script_commands.c | 127 ++--- src/battle_util.c | 118 +---- src/data/battle_moves.h | 615 +++++++++++++++++++++-- test/battle/ability/pressure.c | 70 +++ test/battle/move_effect/gigaton_hammer.c | 63 --- test/battle/move_flags/cant_use_twice.c | 93 ++++ 15 files changed, 800 insertions(+), 327 deletions(-) create mode 100644 test/battle/ability/pressure.c delete mode 100644 test/battle/move_effect/gigaton_hammer.c create mode 100644 test/battle/move_flags/cant_use_twice.c diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 5a0bb8ffb6..366b8c6dcd 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -435,7 +435,6 @@ gBattleScriptsForMoveEffects:: .4byte BattleScript_EffectCorrosiveGas @ EFFECT_CORROSIVE_GAS .4byte BattleScript_EffectHit @ EFFECT_POPULATION_BOMB .4byte BattleScript_EffectMortalSpin @ EFFECT_MORTAL_SPIN - .4byte BattleScript_EffectHit @ EFFECT_GIGATON_HAMMER .4byte BattleScript_EffectSaltCure @ EFFECT_SALT_CURE .4byte BattleScript_EffectMatchaGotcha @ EFFECT_MATCHA_GOTCHA .4byte BattleScript_EffectSyrupBomb @ EFFECT_SYRUP_BOMB diff --git a/include/battle.h b/include/battle.h index 90a392e15c..2d8b8afe3d 100644 --- a/include/battle.h +++ b/include/battle.h @@ -173,7 +173,6 @@ struct SpecialStatus u8 lightningRodRedirected:1; u8 restoredBattlerSprite: 1; u8 traced:1; - u8 ppNotAffectedByPressure:1; u8 faintedHasReplacement:1; u8 focusBanded:1; u8 focusSashed:1; diff --git a/include/battle_ai_util.h b/include/battle_ai_util.h index 37e9c509da..76362a2c7a 100644 --- a/include/battle_ai_util.h +++ b/include/battle_ai_util.h @@ -132,6 +132,7 @@ bool32 IsStatRaisingEffect(u32 effect); bool32 IsAttackBoostMoveEffect(u32 effect); bool32 IsUngroundingEffect(u32 effect); bool32 IsSemiInvulnerable(u32 battlerDef, u32 move); +bool32 HasSubstituteIgnoringMove(u32 battler); bool32 HasSoundMove(u32 battler); bool32 HasHighCritRatioMove(u32 battler); bool32 HasMagicCoatAffectedMove(u32 battler); diff --git a/include/battle_util.h b/include/battle_util.h index 02c5afa7a3..0c67352b11 100644 --- a/include/battle_util.h +++ b/include/battle_util.h @@ -15,7 +15,7 @@ #define MOVE_LIMITATION_BELCH (1 << 11) #define MOVE_LIMITATION_THROAT_CHOP (1 << 12) #define MOVE_LIMITATION_STUFF_CHEEKS (1 << 13) -#define MOVE_LIMITATION_GIGATON_HAMMER (1 << 14) +#define MOVE_LIMITATION_CANT_USE_TWICE (1 << 14) #define MOVE_LIMITATION_PLACEHOLDER (1 << 15) #define MOVE_LIMITATIONS_ALL 0xFFFF @@ -115,9 +115,6 @@ void HandleAction_TryFinish(void); void HandleAction_NothingIsFainted(void); void HandleAction_ActionFinished(void); u8 GetBattlerForBattleScript(u8 caseId); -void PressurePPLose(u8 target, u8 attacker, u16 move); -void PressurePPLoseOnUsingPerishSong(u8 attacker); -void PressurePPLoseOnUsingImprison(u8 attacker); bool32 IsBattlerMarkedForControllerExec(u32 battler); void MarkBattlerForControllerExec(u32 battler); void MarkBattlerReceivedLinkData(u32 battler); diff --git a/include/config/battle.h b/include/config/battle.h index ca995e3271..bf210c1021 100644 --- a/include/config/battle.h +++ b/include/config/battle.h @@ -68,6 +68,7 @@ #define B_KLUTZ_FLING_INTERACTION GEN_LATEST // In Gen5+, Pokémon with the Klutz ability can't use Fling. #define B_UPDATED_CONVERSION GEN_LATEST // In Gen6+, Conversion changes the user's type to match their first move's. Before, it would choose a move at random. #define B_PP_REDUCED_BY_SPITE GEN_LATEST // In Gen4+, Spite reduces the foe's last move's PP by 4, instead of 2 to 5. +#define B_EXTRAPOLATED_MOVE_FLAGS TRUE // Adds move flags to moves that they don't officially have but would likely have if they were in the latest core series game. // Move accuracy settings #define B_TOXIC_NEVER_MISS GEN_LATEST // In Gen6+, if Toxic is used by a Poison-type Pokémon, it will never miss. @@ -84,7 +85,6 @@ #define B_GROWTH_STAT_RAISE GEN_LATEST // In Gen5+, Growth raises Attack in addition to Special Attack by 1 stage each. Under the effects of the sun, it raises them by 2 stages each instead. // Other move settings -#define B_SOUND_SUBSTITUTE GEN_LATEST // In Gen6+, sound moves bypass Substitute. #define B_INCINERATE_GEMS GEN_LATEST // In Gen6+, Incinerate can destroy Gems. #define B_CAN_SPITE_FAIL GEN_LATEST // In Gen4+, Spite can no longer fail if the foe's last move only has 1 remaining PP. #define B_CRASH_IF_TARGET_IMMUNE GEN_LATEST // In Gen4+, The user of Jump Kick or High Jump Kick will "keep going and crash" if it attacks a target that is immune to the move. diff --git a/include/constants/battle_move_effects.h b/include/constants/battle_move_effects.h index 421a191043..91b74feee7 100644 --- a/include/constants/battle_move_effects.h +++ b/include/constants/battle_move_effects.h @@ -412,13 +412,12 @@ #define EFFECT_CORROSIVE_GAS 406 #define EFFECT_POPULATION_BOMB 407 #define EFFECT_MORTAL_SPIN 408 -#define EFFECT_GIGATON_HAMMER 409 -#define EFFECT_SALT_CURE 410 -#define EFFECT_MATCHA_GOTCHA 411 -#define EFFECT_SYRUP_BOMB 412 -#define EFFECT_IVY_CUDGEL 413 -#define EFFECT_MAX_MOVE 414 +#define EFFECT_SALT_CURE 409 +#define EFFECT_MATCHA_GOTCHA 410 +#define EFFECT_SYRUP_BOMB 411 +#define EFFECT_IVY_CUDGEL 412 +#define EFFECT_MAX_MOVE 413 -#define NUM_BATTLE_MOVE_EFFECTS 415 +#define NUM_BATTLE_MOVE_EFFECTS 414 #endif // GUARD_CONSTANTS_BATTLE_MOVE_EFFECTS_H diff --git a/include/pokemon.h b/include/pokemon.h index a81f112e23..22c32971b2 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -357,6 +357,7 @@ struct BattleMove u32 mirrorMoveBanned:1; u32 ignoresKingsRock:1; u32 highCritRatio:1; + u32 twoTurnMove:1; u32 punchingMove:1; u32 sheerForceBoost:1; u32 bitingMove:1; @@ -379,13 +380,19 @@ struct BattleMove u32 thawsUser:1; u32 ignoresSubstitute:1; u32 strikeCount:4; // Max 15 hits. Defaults to 1 if not set. May apply its effect on each hit. - u32 meFirstBanned:1; + u32 forcePressure:1; + u32 cantUseTwice:1; u32 gravityBanned:1; + u32 healBlockBanned:1; + u32 meFirstBanned:1; u32 mimicBanned:1; u32 metronomeBanned:1; u32 copycatBanned:1; + u32 assistBanned:1; // Matches same moves as copycatBanned + semi-invulnerable moves and Mirror Coat. u32 sleepTalkBanned:1; u32 instructBanned:1; + u32 encoreBanned:1; + u32 parentalBondBanned:1; }; #define SPINDA_SPOT_WIDTH 16 diff --git a/src/battle_ai_main.c b/src/battle_ai_main.c index b31f66ec1e..e8453ae1e0 100644 --- a/src/battle_ai_main.c +++ b/src/battle_ai_main.c @@ -1442,7 +1442,7 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) ADJUST_SCORE(-8); else if (aiData->hpPercents[battlerAtk] <= 25) ADJUST_SCORE(-10); - else if (B_SOUND_SUBSTITUTE >= GEN_6 && HasSoundMove(battlerDef)) + else if (HasSubstituteIgnoringMove(battlerDef)) ADJUST_SCORE(-8); break; case EFFECT_LEECH_SEED: @@ -2521,6 +2521,7 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) if (instructedMove == MOVE_NONE || gBattleMoves[instructedMove].instructBanned + || gBattleMoves[instructedMove].twoTurnMove || gBattleMoves[instructedMove].effect == EFFECT_RECHARGE || IsZMove(instructedMove) || (gLockedMoves[battlerDef] != 0 && gLockedMoves[battlerDef] != 0xFFFF) diff --git a/src/battle_ai_util.c b/src/battle_ai_util.c index 8f74dcd362..8c584c8509 100644 --- a/src/battle_ai_util.c +++ b/src/battle_ai_util.c @@ -1020,7 +1020,6 @@ u32 AI_WhichMoveBetter(u32 move1, u32 move2, u32 battlerAtk, u32 battlerDef, s32 return 0; } - // Check additional effects. effect1 = AI_IsMoveEffectInMinus(battlerAtk, battlerDef, move1, noOfHitsToKo); effect2 = AI_IsMoveEffectInMinus(battlerAtk, battlerDef, move2, noOfHitsToKo); @@ -2359,6 +2358,11 @@ bool32 HasDamagingMoveOfType(u32 battlerId, u32 type) return FALSE; } +bool32 HasSubstituteIgnoringMove(u32 battler) +{ + CHECK_MOVE_FLAG(ignoresSubstitute); +} + bool32 HasSoundMove(u32 battler) { CHECK_MOVE_FLAG(soundMove); diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 03d2f9ea5a..3dc177635f 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -336,7 +336,6 @@ static const u16 sWhiteOutBadgeMoney[9] = { 8, 16, 24, 36, 48, 64, 80, 100, 120 #define TAG_LVLUP_BANNER_MON_ICON 55130 -static bool8 IsTwoTurnsMove(u16 move); static void TrySetDestinyBondToHappen(void); static u32 ChangeStatBuffs(s8 statValue, u32 statId, u32 flags, const u8 *BS_ptr); static bool32 IsMonGettingExpSentOut(void); @@ -1365,14 +1364,14 @@ static void Cmd_attackcanceler(void) gHitMarker |= HITMARKER_OBEYS; // Check if no available target present on the field. if (NoTargetPresent(gBattlerAttacker, gCurrentMove) - && (!IsTwoTurnsMove(gCurrentMove) || (gBattleMons[gBattlerAttacker].status2 & STATUS2_MULTIPLETURNS))) + && (!gBattleMoves[gCurrentMove].twoTurnMove || (gBattleMons[gBattlerAttacker].status2 & STATUS2_MULTIPLETURNS))) { if (gBattleMoves[gCurrentMove].effect == EFFECT_FLING) // Edge case for removing a mon's item when there is no target available after using Fling. gBattlescriptCurrInstr = BattleScript_FlingFailConsumeItem; else gBattlescriptCurrInstr = BattleScript_FailedFromAtkString; - if (!IsTwoTurnsMove(gCurrentMove) || (gBattleMons[gBattlerAttacker].status2 & STATUS2_MULTIPLETURNS)) + if (!gBattleMoves[gCurrentMove].twoTurnMove || (gBattleMons[gBattlerAttacker].status2 & STATUS2_MULTIPLETURNS)) CancelMultiTurnMoves(gBattlerAttacker); return; } @@ -1381,7 +1380,6 @@ static void Cmd_attackcanceler(void) && gBattleMoves[gCurrentMove].magicCoatAffected && !gProtectStructs[gBattlerAttacker].usesBouncedMove) { - PressurePPLose(gBattlerAttacker, gBattlerTarget, MOVE_MAGIC_COAT); gProtectStructs[gBattlerTarget].usesBouncedMove = TRUE; gBattleCommunication[MULTISTRING_CHOOSER] = 0; // Edge case for bouncing a powder move against a grass type pokemon. @@ -1426,7 +1424,6 @@ static void Cmd_attackcanceler(void) { if ((gProtectStructs[gBattlerByTurnOrder[i]].stealMove) && gBattleMoves[gCurrentMove].snatchAffected) { - PressurePPLose(gBattlerAttacker, gBattlerByTurnOrder[i], MOVE_SNATCH); gProtectStructs[gBattlerByTurnOrder[i]].stealMove = FALSE; gBattleScripting.battler = gBattlerByTurnOrder[i]; BattleScriptPushCursor(); @@ -1453,7 +1450,7 @@ static void Cmd_attackcanceler(void) } else if (IsBattlerProtected(gBattlerTarget, gCurrentMove) && (gCurrentMove != MOVE_CURSE || IS_BATTLER_OF_TYPE(gBattlerAttacker, TYPE_GHOST)) - && ((!IsTwoTurnsMove(gCurrentMove) || (gBattleMons[gBattlerAttacker].status2 & STATUS2_MULTIPLETURNS))) + && ((!gBattleMoves[gCurrentMove].twoTurnMove || (gBattleMons[gBattlerAttacker].status2 & STATUS2_MULTIPLETURNS))) && gBattleMoves[gCurrentMove].effect != EFFECT_SUCKER_PUNCH) { if (IsMoveMakingContact(gCurrentMove, gBattlerAttacker)) @@ -1825,35 +1822,27 @@ static void Cmd_ppreduce(void) CMD_ARGS(); s32 i, ppToDeduct = 1; + u32 moveTarget = GetBattlerMoveTargetType(gBattlerAttacker, gCurrentMove); if (gBattleControllerExecFlags) return; - if (!gSpecialStatuses[gBattlerAttacker].ppNotAffectedByPressure) + if (moveTarget == MOVE_TARGET_BOTH + || moveTarget == MOVE_TARGET_FOES_AND_ALLY + || moveTarget == MOVE_TARGET_ALL_BATTLERS + || gBattleMoves[gCurrentMove].forcePressure) { - switch (GetBattlerMoveTargetType(gBattlerAttacker, gCurrentMove)) + for (i = 0; i < gBattlersCount; i++) { - case MOVE_TARGET_FOES_AND_ALLY: - for (i = 0; i < gBattlersCount; i++) - { - if (i != gBattlerAttacker && IsBattlerAlive(i)) - ppToDeduct += (GetBattlerAbility(i) == ABILITY_PRESSURE); - } - break; - case MOVE_TARGET_BOTH: - case MOVE_TARGET_OPPONENTS_FIELD: - for (i = 0; i < gBattlersCount; i++) - { - if (GetBattlerSide(i) != GetBattlerSide(gBattlerAttacker) && IsBattlerAlive(i)) - ppToDeduct += (GetBattlerAbility(i) == ABILITY_PRESSURE); - } - break; - default: - if (gBattlerAttacker != gBattlerTarget && GetBattlerAbility(gBattlerTarget) == ABILITY_PRESSURE) - ppToDeduct++; - break; + if (GetBattlerSide(i) != GetBattlerSide(gBattlerAttacker) && IsBattlerAlive(i)) + ppToDeduct += (GetBattlerAbility(i) == ABILITY_PRESSURE); } } + else if (moveTarget != MOVE_TARGET_OPPONENTS_FIELD) + { + if (gBattlerAttacker != gBattlerTarget && GetBattlerAbility(gBattlerTarget) == ABILITY_PRESSURE) + ppToDeduct++; + } if (!(gHitMarker & (HITMARKER_NO_PPDEDUCT | HITMARKER_NO_ATTACKSTRING)) && gBattleMons[gBattlerAttacker].pp[gCurrMovePos]) { @@ -9569,7 +9558,7 @@ static void Cmd_various(void) case VARIOUS_TRY_COPYCAT: { VARIOUS_ARGS(const u8 *failInstr); - if (gLastUsedMove == MOVE_UNAVAILABLE || gBattleMoves[gLastUsedMove].copycatBanned) + if (gLastUsedMove == MOVE_NONE || gLastUsedMove == MOVE_UNAVAILABLE || gBattleMoves[gLastUsedMove].copycatBanned) { gBattlescriptCurrInstr = cmd->failInstr; } @@ -9589,7 +9578,8 @@ static void Cmd_various(void) { VARIOUS_ARGS(const u8 *failInstr); u16 move = gLastMoves[gBattlerTarget]; - if (move == MOVE_UNAVAILABLE || gBattleMoves[move].instructBanned || IsDynamaxed(gBattlerTarget)) + if (move == MOVE_NONE || move == MOVE_UNAVAILABLE || gBattleMoves[move].effect == EFFECT_RECHARGE + || gBattleMoves[move].instructBanned || gBattleMoves[move].twoTurnMove || IsDynamaxed(gBattlerTarget)) { gBattlescriptCurrInstr = cmd->failInstr; } @@ -10970,7 +10960,6 @@ static void Cmd_trymirrormove(void) } else // no valid moves found { - gSpecialStatuses[gBattlerAttacker].ppNotAffectedByPressure = TRUE; gBattlescriptCurrInstr = cmd->nextInstr; } } @@ -12458,6 +12447,7 @@ static void Cmd_mimicattackcopy(void) if ((gBattleMoves[gLastMoves[gBattlerTarget]].mimicBanned) || (gBattleMons[gBattlerAttacker].status2 & STATUS2_TRANSFORMED) + || gLastMoves[gBattlerTarget] == MOVE_NONE || gLastMoves[gBattlerTarget] == MOVE_UNAVAILABLE) { gBattlescriptCurrInstr = cmd->failInstr; @@ -12565,7 +12555,6 @@ static void Cmd_counterdamagecalculator(void) } else { - gSpecialStatuses[gBattlerAttacker].ppNotAffectedByPressure = TRUE; gBattlescriptCurrInstr = cmd->failInstr; } } @@ -12593,7 +12582,6 @@ static void Cmd_mirrorcoatdamagecalculator(void) } else { - gSpecialStatuses[gBattlerAttacker].ppNotAffectedByPressure = TRUE; gBattlescriptCurrInstr = cmd->failInstr; } } @@ -12652,12 +12640,9 @@ static void Cmd_trysetencore(void) } } - if (gLastMoves[gBattlerTarget] == MOVE_NONE - || gLastMoves[gBattlerTarget] == MOVE_UNAVAILABLE - || gLastMoves[gBattlerTarget] == MOVE_STRUGGLE - || gLastMoves[gBattlerTarget] == MOVE_ENCORE - || gLastMoves[gBattlerTarget] == MOVE_MIRROR_MOVE - || gLastMoves[gBattlerTarget] == MOVE_SHELL_TRAP) + if ((gBattleMoves[gLastMoves[gBattlerTarget]].encoreBanned) + || gLastMoves[gBattlerTarget] == MOVE_NONE + || gLastMoves[gBattlerTarget] == MOVE_UNAVAILABLE) { i = MAX_MON_MOVES; } @@ -12712,7 +12697,7 @@ static void Cmd_settypetorandomresistance(void) { gBattlescriptCurrInstr = cmd->failInstr; } - else if (IsTwoTurnsMove(gLastLandedMoves[gBattlerAttacker]) + else if (gBattleMoves[gLastLandedMoves[gBattlerAttacker]].twoTurnMove && gBattleMons[gLastHitBy[gBattlerAttacker]].status2 & STATUS2_MULTIPLETURNS) { gBattlescriptCurrInstr = cmd->failInstr; @@ -12821,20 +12806,6 @@ static void Cmd_copymovepermanently(void) } } -static bool8 IsTwoTurnsMove(u16 move) -{ - if (gBattleMoves[move].effect == EFFECT_SKULL_BASH - || gBattleMoves[move].effect == EFFECT_TWO_TURNS_ATTACK - || gBattleMoves[move].effect == EFFECT_SOLAR_BEAM - || gBattleMoves[move].effect == EFFECT_SEMI_INVULNERABLE - || gBattleMoves[move].effect == EFFECT_BIDE - || gBattleMoves[move].effect == EFFECT_METEOR_BEAM - || gBattleMoves[move].effect == EFFECT_GEOMANCY) - return TRUE; - else - return FALSE; -} - static void Cmd_trychoosesleeptalkmove(void) { CMD_ARGS(const u8 *failInstr); @@ -12843,8 +12814,8 @@ static void Cmd_trychoosesleeptalkmove(void) for (i = 0; i < MAX_MON_MOVES; i++) { - if ((gBattleMoves[gBattleMons[gBattlerAttacker].moves[i]].sleepTalkBanned) - || IsTwoTurnsMove(gBattleMons[gBattlerAttacker].moves[i])) + if (gBattleMoves[gBattleMons[gBattlerAttacker].moves[i]].sleepTalkBanned + || gBattleMoves[gBattleMons[gBattlerAttacker].moves[i]].twoTurnMove) { unusableMovesBits |= gBitTable[i]; } @@ -13109,7 +13080,6 @@ static void Cmd_trysetspikes(void) if (gSideTimers[targetSide].spikesAmount == 3) { - gSpecialStatuses[gBattlerAttacker].ppNotAffectedByPressure = TRUE; gBattlescriptCurrInstr = cmd->failInstr; } else @@ -13150,8 +13120,6 @@ static void Cmd_trysetperishsong(void) } } - PressurePPLoseOnUsingPerishSong(gBattlerAttacker); - if (notAffectedCount == gBattlersCount) gBattlescriptCurrInstr = cmd->failInstr; else @@ -14256,7 +14224,6 @@ static void Cmd_tryimprison(void) u8 battler, sideAttacker; sideAttacker = GetBattlerSide(gBattlerAttacker); - PressurePPLoseOnUsingImprison(gBattlerAttacker); for (battler = 0; battler < gBattlersCount; battler++) { if (sideAttacker != GetBattlerSide(battler)) @@ -14351,9 +14318,7 @@ static void Cmd_assistattackselect(void) { u16 move = GetMonData(&party[monId], MON_DATA_MOVE1 + moveId); - if (gBattleMoves[move].copycatBanned - || gBattleMoves[move].effect == EFFECT_SEMI_INVULNERABLE - || gBattleMoves[move].effect == EFFECT_SKY_DROP) + if (gBattleMoves[move].assistBanned) continue; validMoves[chooseableMovesNo++] = move; @@ -14380,8 +14345,6 @@ static void Cmd_trysetmagiccoat(void) { CMD_ARGS(const u8 *failInstr); - gBattlerTarget = gBattlerAttacker; - gSpecialStatuses[gBattlerAttacker].ppNotAffectedByPressure = TRUE; if (gCurrentTurnActionNumber == gBattlersCount - 1) // moves last turn { gBattlescriptCurrInstr = cmd->failInstr; @@ -14398,7 +14361,6 @@ static void Cmd_trysetsnatch(void) { CMD_ARGS(const u8 *failInstr); - gSpecialStatuses[gBattlerAttacker].ppNotAffectedByPressure = TRUE; if (gCurrentTurnActionNumber == gBattlersCount - 1) // moves last turn { gBattlescriptCurrInstr = cmd->failInstr; @@ -14705,8 +14667,6 @@ bool32 DoesSubstituteBlockMove(u32 battlerAtk, u32 battlerDef, u32 move) { if (!(gBattleMons[battlerDef].status2 & STATUS2_SUBSTITUTE)) return FALSE; - else if (B_SOUND_SUBSTITUTE >= GEN_6 && gBattleMoves[move].soundMove) - return FALSE; else if (gBattleMoves[move].ignoresSubstitute) return FALSE; else if (GetBattlerAbility(battlerAtk) == ABILITY_INFILTRATOR) @@ -15625,7 +15585,6 @@ void BS_CalcMetalBurstDmg(void) } else { - gSpecialStatuses[gBattlerAttacker].ppNotAffectedByPressure = TRUE; gBattlescriptCurrInstr = cmd->failInstr; } } @@ -15726,41 +15685,13 @@ static bool32 CriticalCapture(u32 odds) return FALSE; } -static const u16 sParentalBondBannedEffects[] = -{ - EFFECT_BEAT_UP, - EFFECT_BIDE, // Note: Bide should work with Parental Bond. This will be addressed in future. - EFFECT_ENDEAVOR, - EFFECT_EXPLOSION, - EFFECT_FINAL_GAMBIT, - EFFECT_FLING, - EFFECT_GEOMANCY, - EFFECT_METEOR_BEAM, - EFFECT_MULTI_HIT, - EFFECT_OHKO, - EFFECT_ROLLOUT, - EFFECT_SEMI_INVULNERABLE, - EFFECT_SKULL_BASH, - EFFECT_SKY_DROP, - EFFECT_SOLAR_BEAM, - EFFECT_TRIPLE_KICK, - EFFECT_TWO_TURNS_ATTACK, - EFFECT_UPROAR, -}; - bool32 IsMoveAffectedByParentalBond(u32 move, u32 battler) { - if (move != MOVE_NONE && move != MOVE_STRUGGLE + if (move != MOVE_NONE && move != MOVE_UNAVAILABLE && move != MOVE_STRUGGLE + && !gBattleMoves[move].parentalBondBanned && gBattleMoves[move].split != SPLIT_STATUS && gBattleMoves[move].strikeCount < 2) { - u32 i; - for (i = 0; i < ARRAY_COUNT(sParentalBondBannedEffects); i++) - { - if (gBattleMoves[move].effect == sParentalBondBannedEffects[i]) - return FALSE; - } - if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) { switch (GetBattlerMoveTargetType(battler, move)) diff --git a/src/battle_util.c b/src/battle_util.c index 370f851977..fb58181fbb 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -1212,93 +1212,6 @@ u8 GetBattlerForBattleScript(u8 caseId) return ret; } -void PressurePPLose(u8 target, u8 attacker, u16 move) -{ - int moveIndex; - - if (GetBattlerAbility(target) != ABILITY_PRESSURE) - return; - - for (moveIndex = 0; moveIndex < MAX_MON_MOVES; moveIndex++) - { - if (gBattleMons[attacker].moves[moveIndex] == move) - break; - } - - if (moveIndex == MAX_MON_MOVES) - return; - - if (gBattleMons[attacker].pp[moveIndex] != 0) - gBattleMons[attacker].pp[moveIndex]--; - - if (MOVE_IS_PERMANENT(attacker, moveIndex)) - { - BtlController_EmitSetMonData(attacker, BUFFER_A, REQUEST_PPMOVE1_BATTLE + moveIndex, 0, 1, &gBattleMons[attacker].pp[moveIndex]); - MarkBattlerForControllerExec(attacker); - } -} - -void PressurePPLoseOnUsingImprison(u8 attacker) -{ - int i, j; - int imprisonPos = MAX_MON_MOVES; - u8 atkSide = GetBattlerSide(attacker); - - for (i = 0; i < gBattlersCount; i++) - { - if (atkSide != GetBattlerSide(i) && GetBattlerAbility(i) == ABILITY_PRESSURE) - { - for (j = 0; j < MAX_MON_MOVES; j++) - { - if (gBattleMons[attacker].moves[j] == MOVE_IMPRISON) - break; - } - if (j != MAX_MON_MOVES) - { - imprisonPos = j; - if (gBattleMons[attacker].pp[j] != 0) - gBattleMons[attacker].pp[j]--; - } - } - } - - if (imprisonPos != MAX_MON_MOVES && MOVE_IS_PERMANENT(attacker, imprisonPos)) - { - BtlController_EmitSetMonData(attacker, BUFFER_A, REQUEST_PPMOVE1_BATTLE + imprisonPos, 0, 1, &gBattleMons[attacker].pp[imprisonPos]); - MarkBattlerForControllerExec(attacker); - } -} - -void PressurePPLoseOnUsingPerishSong(u8 attacker) -{ - int i, j; - int perishSongPos = MAX_MON_MOVES; - - for (i = 0; i < gBattlersCount; i++) - { - if (GetBattlerAbility(i) == ABILITY_PRESSURE && i != attacker) - { - for (j = 0; j < MAX_MON_MOVES; j++) - { - if (gBattleMons[attacker].moves[j] == MOVE_PERISH_SONG) - break; - } - if (j != MAX_MON_MOVES) - { - perishSongPos = j; - if (gBattleMons[attacker].pp[j] != 0) - gBattleMons[attacker].pp[j]--; - } - } - } - - if (perishSongPos != MAX_MON_MOVES && MOVE_IS_PERMANENT(attacker, perishSongPos)) - { - BtlController_EmitSetMonData(attacker, BUFFER_A, REQUEST_PPMOVE1_BATTLE + perishSongPos, 0, 1, &gBattleMons[attacker].pp[perishSongPos]); - MarkBattlerForControllerExec(attacker); - } -} - static void UNUSED MarkAllBattlersForControllerExec(void) { int i; @@ -1575,26 +1488,7 @@ bool32 IsHealBlockPreventingMove(u32 battler, u32 move) if (!(gStatuses3[battler] & STATUS3_HEAL_BLOCK)) return FALSE; - switch (gBattleMoves[move].effect) - { - case EFFECT_MORNING_SUN: - case EFFECT_SYNTHESIS: - case EFFECT_MOONLIGHT: - case EFFECT_RESTORE_HP: - case EFFECT_REST: - case EFFECT_ROOST: - case EFFECT_HEALING_WISH: - case EFFECT_WISH: - case EFFECT_HEAL_PULSE: - case EFFECT_JUNGLE_HEALING: - return TRUE; - case EFFECT_ABSORB: - case EFFECT_STRENGTH_SAP: - case EFFECT_DREAM_EATER: - return B_HEAL_BLOCKING >= GEN_6; - default: - return FALSE; - } + return gBattleMoves[move].healBlockBanned; } static bool32 IsBelchPreventingMove(u32 battler, u32 move) @@ -1755,7 +1649,7 @@ u32 TrySetCantSelectMoveBattleScript(u32 battler) } } - if (gBattleMoves[move].effect == EFFECT_GIGATON_HAMMER && move == gLastResultingMoves[battler]) + if (gBattleMoves[move].cantUseTwice && move == gLastResultingMoves[battler]) { gCurrentMove = move; PREPARE_MOVE_BUFFER(gBattleTextBuff1, gCurrentMove); @@ -1910,7 +1804,8 @@ u8 CheckMoveLimitations(u32 battler, u8 unusableMoves, u16 check) // Gorilla Tactics else if (check & MOVE_LIMITATION_CHOICE_ITEM && GetBattlerAbility(battler) == ABILITY_GORILLA_TACTICS && *choicedMove != MOVE_NONE && *choicedMove != MOVE_UNAVAILABLE && *choicedMove != gBattleMons[battler].moves[i]) unusableMoves |= gBitTable[i]; - else if (check & MOVE_LIMITATION_GIGATON_HAMMER && gBattleMoves[gBattleMons[battler].moves[i]].effect == EFFECT_GIGATON_HAMMER && gBattleMons[battler].moves[i] == gLastResultingMoves[battler]) + // Can't Use Twice flag + else if (check & MOVE_LIMITATION_CANT_USE_TWICE && gBattleMoves[gBattleMons[battler].moves[i]].cantUseTwice && gBattleMons[battler].moves[i] == gLastResultingMoves[battler]) unusableMoves |= gBitTable[i]; } return unusableMoves; @@ -8305,9 +8200,6 @@ bool32 IsBattlerProtected(u32 battler, u32 move) if (gProtectStructs[battler].maxGuarded && IsMoveBlockedByMaxGuard(move)) return TRUE; - if (move == MOVE_TEATIME) - return FALSE; - // Protective Pads doesn't stop Unseen Fist from bypassing Protect effects, so IsMoveMakingContact() isn't used here. // This means extra logic is needed to handle Shell Side Arm. if (GetBattlerAbility(gBattlerAttacker) == ABILITY_UNSEEN_FIST @@ -8316,8 +8208,6 @@ bool32 IsBattlerProtected(u32 battler, u32 move) return FALSE; else if (gBattleMoves[move].ignoresProtect) return FALSE; - else if (gBattleMoves[move].effect == EFFECT_FEINT) - return FALSE; else if (gProtectStructs[battler].protected) return TRUE; else if (gSideStatuses[GetBattlerSide(battler)] & SIDE_STATUS_WIDE_GUARD diff --git a/src/data/battle_moves.h b/src/data/battle_moves.h index 896d4a530a..0ad7cc0719 100644 --- a/src/data/battle_moves.h +++ b/src/data/battle_moves.h @@ -11,11 +11,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .split = SPLIT_PHYSICAL, - .mimicBanned = TRUE, .metronomeBanned = TRUE, - .copycatBanned = TRUE, - .sleepTalkBanned = TRUE, - .instructBanned = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_POUND] = @@ -224,8 +221,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, .highCritRatio = TRUE, + .twoTurnMove = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .windMove = B_EXTRAPOLATED_MOVE_FLAGS, }, [MOVE_SWORDS_DANCE] = @@ -314,8 +313,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .zMoveEffect = Z_EFFECT_SPDEF_UP_1, .windMove = TRUE, .ignoresProtect = B_UPDATED_MOVE_FLAGS >= GEN_6, + .ignoresSubstitute = TRUE, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_FLY] = @@ -334,10 +335,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .twoTurnMove = TRUE, .makesContact = TRUE, .gravityBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_BIND] = @@ -655,6 +658,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, + .instructBanned = TRUE, }, [MOVE_DOUBLE_EDGE] = @@ -784,6 +788,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .zMoveEffect = Z_EFFECT_DEF_UP_1, .magicCoatAffected = TRUE, .soundMove = TRUE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, }, [MOVE_ROAR] = @@ -803,9 +808,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, .ignoresProtect = B_UPDATED_MOVE_FLAGS >= GEN_6, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, .soundMove = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_SING] = @@ -820,6 +827,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .magicCoatAffected = TRUE, .soundMove = TRUE, }, @@ -836,6 +844,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .magicCoatAffected = TRUE, .soundMove = TRUE, }, @@ -872,6 +881,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .ignoresSubstitute = TRUE, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, }, @@ -940,6 +950,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RECOVER_HP, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .snatchAffected = TRUE, }, @@ -1105,7 +1117,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, .ignoresKingsRock = B_UPDATED_MOVE_FLAGS < GEN_3, - .instructBanned = TRUE, }, [MOVE_PECK] = @@ -1185,11 +1196,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, - .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS >= GEN_4, .ignoresKingsRock = B_UPDATED_MOVE_FLAGS < GEN_5, // && B_UPDATED_MOVE_FLAGS > GEN_2 .meFirstBanned = TRUE, .metronomeBanned = TRUE, // B_UPDATED_MOVE_FLAGS >= GEN_2 .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_SEISMIC_TOSS] = @@ -1239,6 +1250,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, .ignoresKingsRock = B_UPDATED_MOVE_FLAGS < GEN_5, // && B_UPDATED_MOVE_FLAGS > GEN_2 + .healBlockBanned = B_HEAL_BLOCKING >= GEN_6, }, [MOVE_MEGA_DRAIN] = @@ -1258,6 +1270,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, .ignoresKingsRock = B_UPDATED_MOVE_FLAGS < GEN_5, // && B_UPDATED_MOVE_FLAGS > GEN_2 + .healBlockBanned = B_HEAL_BLOCKING >= GEN_6, }, [MOVE_LEECH_SEED] = @@ -1295,6 +1308,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPATK_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .snatchAffected = TRUE, }, @@ -1326,6 +1341,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .twoTurnMove = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, }, @@ -1400,6 +1416,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, .danceMove = TRUE, + .instructBanned = TRUE, }, [MOVE_STRING_SHOT] = @@ -1590,9 +1607,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .twoTurnMove = TRUE, .makesContact = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_TOXIC] = @@ -1671,6 +1690,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ATK_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .snatchAffected = TRUE, }, @@ -1686,6 +1707,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .snatchAffected = TRUE, }, @@ -1731,6 +1754,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = -6, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RECOVER_HP, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_NIGHT_SHADE] = @@ -1759,11 +1784,14 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ACC_UP_1, + .ignoresSubstitute = TRUE, .mimicBanned = TRUE, .metronomeBanned = TRUE, // B_UPDATED_MOVE_FLAGS >= GEN_2 .copycatBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .encoreBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_SCREECH] = @@ -1778,6 +1806,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ATK_UP_1, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .magicCoatAffected = TRUE, .soundMove = TRUE, }, @@ -1794,6 +1823,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .snatchAffected = TRUE, }, @@ -1815,6 +1846,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, + .healBlockBanned = TRUE, .snatchAffected = TRUE, }, @@ -1830,6 +1864,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .snatchAffected = TRUE, }, @@ -1849,6 +1885,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .snatchAffected = TRUE, }, @@ -1894,6 +1932,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .snatchAffected = TRUE, }, @@ -1909,6 +1949,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ACC_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .snatchAffected = TRUE, }, @@ -1928,6 +1970,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .snatchAffected = TRUE, }, @@ -1943,6 +1987,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .snatchAffected = TRUE, }, @@ -1958,6 +2004,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RECOVER_HP, + .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_REFLECT] = @@ -1972,6 +2021,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .snatchAffected = TRUE, }, @@ -1987,8 +2038,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ACC_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .snatchAffected = TRUE, - .sleepTalkBanned = TRUE, }, [MOVE_BIDE] = @@ -2011,6 +2063,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .makesContact = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_METRONOME] = @@ -2025,10 +2078,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, + .mimicBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, .sleepTalkBanned = B_UPDATED_MOVE_FLAGS >= GEN_3, .instructBanned = TRUE, + .encoreBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_MIRROR_MOVE] = @@ -2043,10 +2101,13 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ATK_UP_2, + .mimicBanned = TRUE, .metronomeBanned = B_UPDATED_MOVE_FLAGS >= GEN_4, .copycatBanned = TRUE, .sleepTalkBanned = B_UPDATED_MOVE_FLAGS >= GEN_3, .instructBanned = TRUE, + .encoreBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_SELF_DESTRUCT] = @@ -2061,6 +2122,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .parentalBondBanned = TRUE, }, [MOVE_EGG_BOMB] = @@ -2238,6 +2300,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .twoTurnMove = TRUE, .makesContact = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, @@ -2285,6 +2348,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .snatchAffected = TRUE, }, @@ -2319,6 +2384,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .healBlockBanned = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .snatchAffected = TRUE, }, @@ -2379,6 +2447,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .healBlockBanned = B_HEAL_BLOCKING >= GEN_6, }, [MOVE_POISON_GAS] = @@ -2438,6 +2507,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, .ignoresKingsRock = B_UPDATED_MOVE_FLAGS < GEN_5, // && B_UPDATED_MOVE_FLAGS > GEN_2 + .healBlockBanned = B_HEAL_BLOCKING >= GEN_6, }, [MOVE_LOVELY_KISS] = @@ -2468,6 +2538,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .argument = MOVE_EFFECT_FLINCH, .zMoveEffect = Z_EFFECT_NONE, + .twoTurnMove = TRUE, .sheerForceBoost = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, @@ -2486,10 +2557,13 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RECOVER_HP, .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .mimicBanned = TRUE, .metronomeBanned = B_UPDATED_MOVE_FLAGS >= GEN_5, .copycatBanned = TRUE, .instructBanned = TRUE, + .encoreBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_BUBBLE] = @@ -2593,6 +2667,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ATK_UP_3, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .gravityBanned = TRUE, }, @@ -2613,6 +2689,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_CRABHAMMER] = @@ -2651,6 +2729,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .parentalBondBanned = TRUE, }, [MOVE_FURY_SWIPES] = @@ -2700,6 +2779,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, + .healBlockBanned = TRUE, }, [MOVE_ROCK_SLIDE] = @@ -2747,6 +2829,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ATK_UP_1, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_CONVERSION] = @@ -2762,6 +2846,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ALL_STATS_UP_1, .snatchAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_TRI_ATTACK] = @@ -2825,6 +2911,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_STRUGGLE] = @@ -2849,8 +2937,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .meFirstBanned = TRUE, .mimicBanned = TRUE, .metronomeBanned = TRUE, + .sleepTalkBanned = TRUE, .copycatBanned = TRUE, .instructBanned = TRUE, + .encoreBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_SKETCH] = @@ -2866,11 +2957,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ALL_STATS_UP_1, .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, .mimicBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, .sleepTalkBanned = B_UPDATED_MOVE_FLAGS >= GEN_5, .instructBanned = TRUE, + .encoreBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_TRIPLE_KICK] = @@ -2911,6 +3006,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .meFirstBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_SPIDER_WEB] = @@ -2999,6 +3095,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .sheerForceBoost = TRUE, .soundMove = TRUE, .metronomeBanned = B_UPDATED_MOVE_FLAGS >= GEN_5, @@ -3021,6 +3118,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_CURSE, .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_FLAIL] = @@ -3051,6 +3150,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RECOVER_HP, .ignoresProtect = B_UPDATED_MOVE_FLAGS >= GEN_5, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_AEROBLAST] = @@ -3120,6 +3221,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RECOVER_HP, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .ignoresSubstitute = TRUE, }, [MOVE_POWDER_SNOW] = @@ -3160,6 +3262,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .protectionMove = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_MACH_PUNCH] = @@ -3246,6 +3349,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RECOVER_HP, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_SLUDGE_BOMB] = @@ -3307,7 +3412,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .forcePressure = TRUE, }, [MOVE_ZAP_CANNON] = @@ -3347,6 +3455,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_BOOST_CRITS, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .ignoresSubstitute = TRUE, }, [MOVE_DESTINY_BOND] = @@ -3361,8 +3470,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_FOLLOW_ME, + .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_PERISH_SONG] = @@ -3378,6 +3491,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, .ignoresProtect = TRUE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, + .mirrorMoveBanned = TRUE, .soundMove = TRUE, }, @@ -3413,9 +3528,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_USER, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_EVSN_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .protectionMove = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_BONE_RUSH] = @@ -3490,6 +3608,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .windMove = TRUE, }, @@ -3514,6 +3634,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, .ignoresKingsRock = B_UPDATED_MOVE_FLAGS < GEN_5, // && B_UPDATED_MOVE_FLAGS > GEN_2 + .healBlockBanned = B_HEAL_BLOCKING >= GEN_6, }, [MOVE_ENDURE] = @@ -3532,9 +3653,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_USER, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .protectionMove = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_CHARM] = @@ -3570,6 +3694,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, .instructBanned = TRUE, + .parentalBondBanned = TRUE, }, [MOVE_FALSE_SWIPE] = @@ -3622,7 +3747,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .healBlockBanned = TRUE, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_SPARK] = @@ -3708,6 +3836,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, .magicCoatAffected = TRUE, + .ignoresSubstitute = TRUE, }, [MOVE_SLEEP_TALK] = @@ -3722,10 +3851,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_BOOST_CRITS, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .mimicBanned = TRUE, + .encoreBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_HEAL_BELL] = @@ -3736,11 +3870,14 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .accuracy = 0, .pp = 5, .secondaryEffectChance = 0, - .target = MOVE_TARGET_USER, + .target = MOVE_TARGET_USER | MOVE_TARGET_ALLY, .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RECOVER_HP, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, .soundMove = B_UPDATED_MOVE_FLAGS != GEN_5, }, @@ -3802,6 +3939,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_PAIN_SPLIT] = @@ -3909,6 +4048,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_ENCORE] = @@ -3924,6 +4065,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .encoreBanned = TRUE, + .ignoresSubstitute = TRUE, }, [MOVE_PURSUIT] = @@ -4039,7 +4182,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .healBlockBanned = TRUE, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_SYNTHESIS] = @@ -4054,7 +4200,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .healBlockBanned = TRUE, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_MOONLIGHT] = @@ -4073,7 +4222,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .healBlockBanned = TRUE, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_HIDDEN_POWER] = @@ -4135,6 +4287,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_SUNNY_DAY] = @@ -4149,6 +4303,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_CRUNCH] = @@ -4187,7 +4343,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS >= GEN_4, .meFirstBanned = TRUE, .metronomeBanned = TRUE, - .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_PSYCH_UP] = @@ -4203,6 +4359,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RECOVER_HP, .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, .snatchAffected = B_UPDATED_MOVE_FLAGS < GEN_5, }, @@ -4382,6 +4540,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .soundMove = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, @@ -4404,6 +4563,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RECOVER_HP, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_SPIT_UP] = @@ -4437,7 +4598,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .healBlockBanned = TRUE, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_HEAT_WAVE] = @@ -4472,6 +4636,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_TORMENT] = @@ -4568,9 +4734,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .mirrorMoveBanned = TRUE, .punchingMove = TRUE, .meFirstBanned = TRUE, + .sleepTalkBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, .instructBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_SMELLING_SALTS] = @@ -4609,8 +4777,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_USER, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_NATURE_POWER] = @@ -4629,6 +4800,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .copycatBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .encoreBanned = TRUE, + .assistBanned = TRUE, + .mimicBanned = TRUE, }, [MOVE_CHARGE] = @@ -4644,6 +4818,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_TAUNT] = @@ -4658,6 +4834,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ATK_UP_1, + .ignoresSubstitute = TRUE, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, }, @@ -4677,8 +4854,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 5, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_TRICK] = @@ -4695,6 +4876,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .zMoveEffect = Z_EFFECT_SPD_UP_2, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_ROLE_PLAY] = @@ -4710,6 +4892,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_WISH] = @@ -4724,7 +4908,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, + .healBlockBanned = TRUE, .snatchAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_ASSIST] = @@ -4739,10 +4926,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = B_UPDATED_MOVE_FLAGS >= GEN_4, .copycatBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .encoreBanned = TRUE, + .assistBanned = TRUE, + .mimicBanned = TRUE, }, [MOVE_INGRAIN] = @@ -4758,6 +4950,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_SUPERPOWER] = @@ -4787,6 +4981,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 4, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_2, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_RECYCLE] = @@ -4802,6 +4998,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_2, .snatchAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_REVENGE] = @@ -4881,6 +5079,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, + .parentalBondBanned = TRUE, }, [MOVE_ERUPTION] = @@ -4909,6 +5108,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .ignoresSubstitute = TRUE, }, [MOVE_IMPRISON] = @@ -4924,6 +5124,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_2, .snatchAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, + .forcePressure = TRUE, }, [MOVE_REFRESH] = @@ -4939,6 +5143,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RECOVER_HP, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_GRUDGE] = @@ -4953,6 +5159,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_FOLLOW_ME, + .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_SNATCH] = @@ -4967,9 +5176,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 4, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_2, + .ignoresSubstitute = TRUE, + .forcePressure = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, - .instructBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_SECRET_POWER] = @@ -5003,9 +5214,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .twoTurnMove = TRUE, .makesContact = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_ARM_THRUST] = @@ -5036,6 +5249,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_EVSN_UP_1, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_TAIL_GLOW] = @@ -5055,6 +5270,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_LUSTER_PURGE] = @@ -5149,6 +5366,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_ICE_BALL] = @@ -5166,6 +5385,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .makesContact = TRUE, .ballisticMove = TRUE, .instructBanned = TRUE, + .parentalBondBanned = TRUE, }, [MOVE_NEEDLE_ARM] = @@ -5201,7 +5421,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .healBlockBanned = TRUE, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_HYPER_VOICE] = @@ -5217,6 +5440,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, .soundMove = TRUE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, }, [MOVE_POISON_FANG] = @@ -5268,7 +5492,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, - .instructBanned = TRUE, }, [MOVE_HYDRO_CANNON] = @@ -5283,7 +5506,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, - .instructBanned = TRUE, }, [MOVE_METEOR_MASH] = @@ -5348,11 +5570,13 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .accuracy = 0, .pp = 5, .secondaryEffectChance = 0, - .target = MOVE_TARGET_USER, + .target = MOVE_TARGET_USER | MOVE_TARGET_ALLY, .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RECOVER_HP, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_FAKE_TEARS] = @@ -5428,6 +5652,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ATK_UP_1, + .ignoresSubstitute = TRUE, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, }, @@ -5465,6 +5690,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, .sheerForceBoost = TRUE, + .windMove = B_EXTRAPOLATED_MOVE_FLAGS, }, [MOVE_METAL_SOUND] = @@ -5479,6 +5705,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPATK_UP_1, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .magicCoatAffected = TRUE, .soundMove = TRUE, }, @@ -5495,6 +5722,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .magicCoatAffected = TRUE, .soundMove = TRUE, }, @@ -5527,6 +5755,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_WATER_SPOUT] = @@ -5729,6 +5959,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_BLOCK] = @@ -5764,6 +5996,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ATK_UP_1, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .soundMove = B_UPDATED_MOVE_FLAGS >= GEN_8, }, @@ -5809,6 +6043,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ATK_UP_1, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_BOUNCE] = @@ -5824,11 +6060,13 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .argument = MOVE_EFFECT_PARALYSIS, .zMoveEffect = Z_EFFECT_NONE, + .twoTurnMove = TRUE, .makesContact = TRUE, .sheerForceBoost = TRUE, .gravityBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_MUD_SHOT] = @@ -5892,6 +6130,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .meFirstBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_VOLT_TACKLE] = @@ -5941,6 +6180,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_CALM_MIND] = @@ -5956,6 +6197,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_LEAF_BLADE] = @@ -5993,6 +6236,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .zMoveEffect = Z_EFFECT_RESET_STATS, .danceMove = TRUE, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_ROCK_BLAST] = @@ -6095,7 +6340,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .healBlockBanned = TRUE, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_GRAVITY] = @@ -6110,6 +6358,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPATK_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_MIRACLE_EYE] = @@ -6124,6 +6374,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPATK_UP_1, + .ignoresSubstitute = TRUE, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, }, @@ -6191,7 +6442,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, + .healBlockBanned = TRUE, .snatchAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_BRINE] = @@ -6242,6 +6496,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS < GEN_6, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_PLUCK] = @@ -6277,6 +6532,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .zMoveEffect = Z_EFFECT_BOOST_CRITS, .snatchAffected = TRUE, .windMove = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_ACUPRESSURE] = @@ -6292,6 +6549,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_BOOST_CRITS, .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .snatchAffected = B_UPDATED_MOVE_FLAGS < GEN_5, }, @@ -6401,6 +6659,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .parentalBondBanned = TRUE, }, [MOVE_PSYCHO_SHIFT] = @@ -6478,6 +6737,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ATK_UP_1, .snatchAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_GASTRO_ACID] = @@ -6508,6 +6769,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_EVSN_UP_1, .snatchAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_ME_FIRST] = @@ -6522,10 +6785,16 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_2, + .ignoresSubstitute = TRUE, .metronomeBanned = TRUE, + .mirrorMoveBanned = TRUE, + .meFirstBanned = TRUE, .copycatBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .encoreBanned = TRUE, + .assistBanned = TRUE, + .mimicBanned = TRUE, }, [MOVE_COPYCAT] = @@ -6540,10 +6809,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ACC_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .encoreBanned = TRUE, + .assistBanned = TRUE, + .mimicBanned = TRUE, }, [MOVE_POWER_SWAP] = @@ -6558,6 +6832,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .ignoresSubstitute = TRUE, }, [MOVE_GUARD_SWAP] = @@ -6572,6 +6847,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .ignoresSubstitute = TRUE, }, [MOVE_PUNISHMENT] = @@ -6654,7 +6930,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .forcePressure = TRUE, }, [MOVE_HEART_SWAP] = @@ -6669,6 +6948,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_BOOST_CRITS, + .ignoresSubstitute = TRUE, }, [MOVE_AQUA_RING] = @@ -6684,6 +6964,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, .snatchAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_MAGNET_RISE] = @@ -6699,6 +6981,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_EVSN_UP_1, .snatchAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .gravityBanned = TRUE, }, @@ -6769,6 +7053,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_POISON_JAB] = @@ -6900,6 +7186,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .zMoveEffect = Z_EFFECT_NONE, .sheerForceBoost = TRUE, .soundMove = TRUE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, }, [MOVE_DRAGON_PULSE] = @@ -6975,6 +7262,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, .punchingMove = TRUE, + .healBlockBanned = B_HEAL_BLOCKING >= GEN_6, }, [MOVE_VACUUM_WAVE] = @@ -7071,6 +7359,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .zMoveEffect = Z_EFFECT_SPD_UP_2, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_GIGA_IMPACT] = @@ -7086,7 +7375,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, - .instructBanned = TRUE, }, [MOVE_NASTY_PLOT] = @@ -7102,6 +7390,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_BULLET_PUNCH] = @@ -7344,6 +7634,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ACC_UP_1, + //.ignoresSubstitute = TRUE, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, }, @@ -7359,6 +7650,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = -7, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ACC_UP_1, + .ignoresProtect = TRUE, }, [MOVE_DRACO_METEOR] = @@ -7455,7 +7747,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .ballisticMove = TRUE, - .instructBanned = TRUE, }, [MOVE_CROSS_POISON] = @@ -7523,6 +7814,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .ballisticMove = TRUE, }, [MOVE_STONE_EDGE] = @@ -7568,6 +7860,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, + .forcePressure = TRUE, }, [MOVE_GRASS_KNOT] = @@ -7606,14 +7901,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, .sheerForceBoost = TRUE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .soundMove = TRUE, .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS < GEN_6, - .meFirstBanned = TRUE, .mimicBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_JUDGMENT] = @@ -7719,6 +8015,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_HEAL_ORDER] = @@ -7733,7 +8031,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .healBlockBanned = TRUE, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_HEAD_SMASH] = @@ -7779,7 +8080,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, - .instructBanned = TRUE, }, [MOVE_SPACIAL_REND] = @@ -7810,6 +8110,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, .snatchAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, + .healBlockBanned = TRUE, .danceMove = TRUE, }, @@ -7897,6 +8200,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, .sheerForceBoost = TRUE, + .windMove = B_EXTRAPOLATED_MOVE_FLAGS, }, [MOVE_SHADOW_FORCE] = @@ -7913,10 +8217,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, .argument = MOVE_EFFECT_FEINT, + .twoTurnMove = TRUE, .ignoresProtect = TRUE, .minimizeDoubleDamage = B_UPDATED_MOVE_FLAGS == GEN_6, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_HONE_CLAWS] = @@ -7932,6 +8238,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ATK_UP_1, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_WIDE_GUARD] = @@ -7948,6 +8256,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .argument = TRUE, // Protects the whole side. .zMoveEffect = Z_EFFECT_DEF_UP_1, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .protectionMove = TRUE, .metronomeBanned = TRUE, }, @@ -7964,6 +8274,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .mirrorMoveBanned = TRUE, }, [MOVE_POWER_SPLIT] = @@ -7978,6 +8289,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .mirrorMoveBanned = TRUE, }, [MOVE_WONDER_ROOM] = @@ -7996,6 +8308,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_ALL_BATTLERS, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, + .ignoresProtect = TRUE, }, [MOVE_PSYSHOCK] = @@ -8039,6 +8352,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_RAGE_POWDER] = @@ -8058,8 +8373,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, .powderMove = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_TELEKINESIS] = @@ -8094,6 +8412,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_ALL_BATTLERS, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, + .ignoresProtect = TRUE, }, [MOVE_SMACK_DOWN] = @@ -8171,7 +8490,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .danceMove = TRUE, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_HEAVY_SLAM] = @@ -8187,7 +8509,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, - .danceMove = TRUE, .minimizeDoubleDamage = B_UPDATED_MOVE_FLAGS >= GEN_7, }, @@ -8269,6 +8590,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_LOW_SWEEP] = @@ -8364,6 +8687,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, }, @@ -8379,6 +8705,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .soundMove = TRUE, }, @@ -8394,6 +8721,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .soundMove = TRUE, }, @@ -8455,6 +8783,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .argument = TRUE, // Protects the whole side. .zMoveEffect = Z_EFFECT_DEF_UP_1, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .protectionMove = TRUE, .metronomeBanned = TRUE, }, @@ -8475,6 +8805,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_USER, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_2, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_SCALD] = @@ -8506,6 +8838,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_HEAL_PULSE] = @@ -8521,6 +8855,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, .magicCoatAffected = TRUE, + .mirrorMoveBanned = TRUE, + .healBlockBanned = TRUE, .pulseMove = TRUE, }, @@ -8554,10 +8890,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .twoTurnMove = TRUE, .makesContact = TRUE, .gravityBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_SHIFT_GEAR] = @@ -8573,6 +8911,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_CIRCLE_THROW] = @@ -8589,6 +8929,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_INCINERATE] = @@ -8621,7 +8962,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, - .magicCoatAffected = TRUE, .metronomeBanned = TRUE, }, @@ -8652,7 +8992,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPATK_UP_1, - .snatchAffected = TRUE, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_RETALIATE] = @@ -8683,6 +9024,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, .mirrorMoveBanned = TRUE, + .parentalBondBanned = TRUE, }, [MOVE_BESTOW] = @@ -8698,8 +9040,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_2, .ignoresProtect = B_UPDATED_MOVE_FLAGS >= GEN_6, + .ignoresSubstitute = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_INFERNO] = @@ -8851,6 +9195,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_WORK_UP] = @@ -8866,6 +9211,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ATK_UP_1, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE }, [MOVE_ELECTROWEB] = @@ -8959,6 +9306,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, + .healBlockBanned = B_HEAL_BLOCKING >= GEN_6, }, [MOVE_SACRED_SWORD] = @@ -9028,6 +9376,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, .sheerForceBoost = TRUE, + //.windMove = TRUE, }, [MOVE_STEAMROLLER] = @@ -9060,6 +9409,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_NIGHT_DAZE] = @@ -9208,6 +9559,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .zMoveEffect = Z_EFFECT_NONE, .argument = STATUS1_SLEEP, .sheerForceBoost = TRUE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .soundMove = TRUE, .metronomeBanned = TRUE, }, @@ -9224,6 +9576,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .slicingMove = TRUE, .metronomeBanned = TRUE, }, @@ -9302,6 +9655,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .argument = MOVE_EFFECT_PARALYSIS, .zMoveEffect = Z_EFFECT_NONE, + .twoTurnMove = TRUE, .sheerForceBoost = TRUE, .metronomeBanned = TRUE, .sleepTalkBanned = TRUE, @@ -9321,6 +9675,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_SPECIAL, .argument = MOVE_EFFECT_BURN, .zMoveEffect = Z_EFFECT_NONE, + .twoTurnMove = TRUE, .sheerForceBoost = TRUE, .metronomeBanned = TRUE, .sleepTalkBanned = TRUE, @@ -9340,6 +9695,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, .sheerForceBoost = TRUE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .soundMove = TRUE, .metronomeBanned = TRUE, }, @@ -9440,8 +9796,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .argument = TRUE, // Protects the whole side. .zMoveEffect = Z_EFFECT_DEF_UP_1, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_BELCH] = @@ -9459,9 +9818,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .mirrorMoveBanned = TRUE, .meFirstBanned = TRUE, .metronomeBanned = TRUE, + .mimicBanned = TRUE, .copycatBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_ROTOTILLER] = @@ -9477,6 +9838,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ATK_UP_1, .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_STICKY_WEB] = @@ -9491,6 +9853,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .magicCoatAffected = TRUE, }, @@ -9526,11 +9890,13 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .argument = MOVE_EFFECT_FEINT, .zMoveEffect = Z_EFFECT_NONE, + .twoTurnMove = TRUE, .ignoresProtect = TRUE, .makesContact = TRUE, .minimizeDoubleDamage = B_UPDATED_MOVE_FLAGS == GEN_6, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_TRICK_OR_TREAT] = @@ -9546,6 +9912,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .argument = TYPE_GHOST, .zMoveEffect = Z_EFFECT_ALL_STATS_UP_1, + .magicCoatAffected = TRUE, }, [MOVE_NOBLE_ROAR] = @@ -9560,6 +9927,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .magicCoatAffected = TRUE, .soundMove = TRUE, }, @@ -9576,6 +9944,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 1, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPATK_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_PARABOLIC_CHARGE] = @@ -9594,6 +9964,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .healBlockBanned = B_HEAL_BLOCKING >= GEN_6, }, [MOVE_FORESTS_CURSE] = @@ -9609,6 +9980,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .argument = TYPE_GRASS, .zMoveEffect = Z_EFFECT_ALL_STATS_UP_1, + .magicCoatAffected = TRUE, }, [MOVE_PETAL_BLIZZARD] = @@ -9653,6 +10025,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .soundMove = TRUE, }, @@ -9669,6 +10042,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESTORE_REPLACEMENT_HP, .magicCoatAffected = TRUE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .soundMove = TRUE, }, @@ -9705,6 +10079,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .argument = 75, // restores 75% HP instead of 50% HP .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, + .healBlockBanned = B_HEAL_BLOCKING >= GEN_6, }, [MOVE_CRAFTY_SHIELD] = @@ -9720,6 +10095,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .argument = TRUE, // Protects the whole side. .zMoveEffect = Z_EFFECT_SPDEF_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, }, @@ -9736,6 +10113,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_GRASSY_TERRAIN] = @@ -9750,6 +10128,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_MISTY_TERRAIN] = @@ -9764,6 +10144,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_ELECTRIFY] = @@ -9838,6 +10220,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .soundMove = TRUE, }, @@ -9853,6 +10236,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, + .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, }, [MOVE_KINGS_SHIELD] = @@ -9868,9 +10253,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, .protectionMove = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, .instructBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_PLAY_NICE] = @@ -9886,6 +10274,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, .magicCoatAffected = TRUE, }, @@ -9903,6 +10292,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .zMoveEffect = Z_EFFECT_SPDEF_UP_1, .ignoresProtect = TRUE, .magicCoatAffected = TRUE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .soundMove = TRUE, }, @@ -9956,6 +10346,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, .metronomeBanned = TRUE, }, @@ -10010,8 +10401,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, .protectionMove = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_AROMATIC_MIST] = @@ -10027,6 +10421,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_2, .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_EERIE_IMPULSE] = @@ -10071,6 +10467,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 1, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_2, + .powderMove = TRUE, .magicCoatAffected = TRUE, }, @@ -10086,6 +10483,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ALL_STATS_UP_1, + .twoTurnMove = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, }, @@ -10103,6 +10501,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_HAPPY_HOUR] = @@ -10117,6 +10518,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ALL_STATS_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_ELECTRIC_TERRAIN] = @@ -10131,6 +10534,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_DAZZLING_GLEAM] = @@ -10159,10 +10564,14 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ALL_STATS_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, + .mimicBanned = TRUE, .copycatBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_HOLD_HANDS] = @@ -10178,10 +10587,13 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ALL_STATS_UP_1, .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, .metronomeBanned = TRUE, + .mimicBanned = TRUE, .copycatBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_BABY_DOLL_EYES] = @@ -10275,6 +10687,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_SPECIAL, .argument = 75, // restores 75% HP instead of 50% HP .zMoveEffect = Z_EFFECT_NONE, + .healBlockBanned = B_HEAL_BLOCKING >= GEN_6, }, [MOVE_THOUSAND_ARROWS] = @@ -10417,7 +10830,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .healBlockBanned = TRUE, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_FIRST_IMPRESSION] = @@ -10448,8 +10864,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, .protectionMove = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_SPIRIT_SHACKLE] = @@ -10497,6 +10916,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .argument = STATUS1_BURN, .zMoveEffect = Z_EFFECT_NONE, .sheerForceBoost = TRUE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .soundMove = TRUE, }, @@ -10528,6 +10948,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .mirrorMoveBanned = TRUE, + .healBlockBanned = TRUE, .magicCoatAffected = TRUE, }, @@ -10559,6 +10981,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, .magicCoatAffected = TRUE, + .healBlockBanned = B_HEAL_BLOCKING >= GEN_6, }, [MOVE_SOLAR_BLADE] = @@ -10573,6 +10996,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .twoTurnMove = TRUE, .makesContact = TRUE, .slicingMove = TRUE, .sleepTalkBanned = TRUE, @@ -10606,8 +11030,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, .magicCoatAffected = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_TOXIC_THREAD] = @@ -10638,6 +11064,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ATK_UP_1, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_GEAR_UP] = @@ -10653,6 +11081,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPATK_UP_1, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_THROAT_CHOP] = @@ -10714,6 +11145,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPATK_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_LUNGE] = @@ -10790,6 +11223,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .ignoresSubstitute = TRUE, }, [MOVE_SMART_STRIKE] = @@ -10819,6 +11253,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ALL_STATS_UP_1, + .mirrorMoveBanned = TRUE, + .healBlockBanned = TRUE, .magicCoatAffected = TRUE, }, @@ -10879,6 +11315,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPATK_UP_1, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, .instructBanned = TRUE, }, @@ -10902,6 +11340,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .copycatBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_CLANGING_SCALES] = @@ -10916,6 +11355,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .soundMove = TRUE, }, @@ -10962,6 +11402,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_SHELL_TRAP] = @@ -10982,6 +11424,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .copycatBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_FLEUR_CANNON] = @@ -11088,7 +11531,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, - .instructBanned = TRUE, }, [MOVE_SPECTRAL_THIEF] = @@ -11103,6 +11545,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .ignoresSubstitute = TRUE, .makesContact = TRUE, .metronomeBanned = TRUE, }, @@ -11183,7 +11626,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, - .makesContact = TRUE, .metronomeBanned = B_UPDATED_MOVE_FLAGS >= GEN_8, }, @@ -11328,6 +11770,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS < GEN_8, + .metronomeBanned = TRUE, }, [MOVE_BOUNCY_BUBBLE] = @@ -11350,6 +11793,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .zMoveEffect = Z_EFFECT_NONE, .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS < GEN_8, .metronomeBanned = TRUE, + .healBlockBanned = B_HEAL_BLOCKING >= GEN_6, }, [MOVE_BUZZY_BUZZ] = @@ -11554,10 +11998,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .mimicBanned = TRUE, + .encoreBanned = TRUE, + .assistBanned = B_EXTRAPOLATED_MOVE_FLAGS, + .parentalBondBanned = TRUE, }, [MOVE_SNIPE_SHOT] = @@ -11604,6 +12053,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_NO_RETREAT] = @@ -11619,6 +12070,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_TAR_SHOT] = @@ -11666,6 +12119,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .strikeCount = 2, + .parentalBondBanned = TRUE, }, [MOVE_TEATIME] = @@ -11676,11 +12130,13 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .accuracy = 0, .pp = 10, .secondaryEffectChance = 0, - .target = MOVE_TARGET_USER, + .target = MOVE_TARGET_ALL_BATTLERS, .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_OCTOLOCK] = @@ -11740,6 +12196,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, + .ignoresProtect = TRUE, }, [MOVE_CLANGOROUS_SOUL] = @@ -11755,7 +12212,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .soundMove = TRUE, + .danceMove = TRUE, .metronomeBanned = TRUE, }, @@ -11777,7 +12237,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = [MOVE_DECORATE] = { - .ignoresProtect = B_UPDATED_MOVE_FLAGS >= GEN_5, .effect = EFFECT_DECORATE, .power = 0, .type = TYPE_FAIRY, @@ -11788,6 +12247,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, }, @@ -11857,6 +12318,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .slicingMove = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .mimicBanned = TRUE, + .assistBanned = B_EXTRAPOLATED_MOVE_FLAGS, }, [MOVE_BEHEMOTH_BASH] = @@ -11874,6 +12337,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .makesContact = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .mimicBanned = TRUE, + .assistBanned = B_EXTRAPOLATED_MOVE_FLAGS, }, [MOVE_AURA_WHEEL] = @@ -11937,6 +12402,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, .soundMove = TRUE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .metronomeBanned = TRUE, }, @@ -12013,11 +12479,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .accuracy = 0, .pp = 10, .secondaryEffectChance = 0, - .target = MOVE_TARGET_USER, + .target = MOVE_TARGET_ALL_BATTLERS, .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, + .healBlockBanned = TRUE, .metronomeBanned = TRUE, }, @@ -12034,8 +12504,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, .protectionMove = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, - .copycatBanned = TRUE, .instructBanned = TRUE, }, @@ -12084,7 +12555,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, .metronomeBanned = TRUE, - .instructBanned = TRUE, }, [MOVE_STEEL_BEAM] = @@ -12159,6 +12629,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .twoTurnMove = TRUE, .instructBanned = TRUE, }, @@ -12194,7 +12665,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = [MOVE_GRASSY_GLIDE] = { #if B_UPDATED_MOVE_DATA >= GEN_9 - .power = 60, + .power = 55, #else .power = 70, #endif @@ -12326,6 +12797,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, + .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_FLIP_TURN] = @@ -12403,6 +12877,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, + .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, + .healBlockBanned = TRUE, .metronomeBanned = TRUE, }, @@ -12575,6 +13053,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .zMoveEffect = Z_EFFECT_NONE, .sheerForceBoost = TRUE, .soundMove = TRUE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, }, [MOVE_DIRE_CLAW] = @@ -12625,8 +13104,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, + .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, - }, +}, [MOVE_STONE_AXE] = { @@ -12664,6 +13146,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .zMoveEffect = Z_EFFECT_NONE, .sheerForceBoost = TRUE, .windMove = TRUE, + .metronomeBanned = TRUE, }, [MOVE_MYSTICAL_POWER] = @@ -12697,7 +13180,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, - .makesContact = TRUE, .metronomeBanned = TRUE, }, @@ -12767,6 +13249,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .zMoveEffect = Z_EFFECT_NONE, .danceMove = TRUE, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_HEADLONG_RUSH] = @@ -12861,6 +13345,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_TRIPLE_ARROWS] = @@ -12993,6 +13479,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, + .healBlockBanned = TRUE, }, [MOVE_TAKE_HEART] = @@ -13008,6 +13497,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_TERA_BLAST] = @@ -13022,6 +13513,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .metronomeBanned = TRUE, // Only since it isn't implemented yet + .forcePressure = TRUE, }, [MOVE_SILK_TRAP] = @@ -13037,6 +13530,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, .protectionMove = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, }, @@ -13068,6 +13563,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .metronomeBanned = TRUE, // Only since it isn't implemented yet }, [MOVE_LUMINA_CRASH] = @@ -13098,6 +13594,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .sheerForceBoost = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, }, @@ -13196,6 +13693,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .metronomeBanned = TRUE, // Only since it isn't implemented yet }, [MOVE_REVIVAL_BLESSING] = @@ -13210,6 +13709,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, }, @@ -13258,6 +13759,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .sheerForceBoost = TRUE, + .makesContact = TRUE, }, [MOVE_DOODLE] = @@ -13268,10 +13770,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .accuracy = 100, .pp = 10, .secondaryEffectChance = 0, - .target = MOVE_TARGET_FOES_AND_ALLY, // Supposedly unconfirmed? - .priority = 0, // TO VERIFY + .target = MOVE_TARGET_BOTH, + .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, }, @@ -13288,6 +13792,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RECOVER_HP, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, }, @@ -13335,6 +13841,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .zMoveEffect = Z_EFFECT_NONE, .sheerForceBoost = TRUE, .soundMove = TRUE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, }, [MOVE_AQUA_STEP] = @@ -13363,7 +13870,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .pp = 10, .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, - .priority = 0, // TO VERIFY + .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, @@ -13444,6 +13951,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, }, @@ -13459,6 +13968,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, }, @@ -13474,6 +13985,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, }, @@ -13489,6 +14002,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, }, @@ -13552,6 +14067,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, + .ignoresProtect = TRUE, .metronomeBanned = TRUE, }, @@ -13617,6 +14133,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, .slicingMove = TRUE, + .healBlockBanned = B_EXTRAPOLATED_MOVE_FLAGS, }, [MOVE_DOUBLE_SHOCK] = @@ -13631,12 +14148,13 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, .metronomeBanned = TRUE, }, [MOVE_GIGATON_HAMMER] = { - .effect = EFFECT_GIGATON_HAMMER, + .effect = EFFECT_HIT, .power = 160, .type = TYPE_STEEL, .accuracy = 100, @@ -13646,6 +14164,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .cantUseTwice = TRUE, }, [MOVE_COMEUPPANCE] = @@ -13660,6 +14179,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .meFirstBanned = TRUE, .metronomeBanned = TRUE, }, @@ -13692,11 +14213,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .sheerForceBoost = TRUE, + .mirrorMoveBanned = TRUE, + .meFirstBanned = TRUE, .mimicBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .encoreBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_WICKED_TORQUE] = @@ -13712,11 +14237,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .sheerForceBoost = TRUE, + .mirrorMoveBanned = TRUE, + .meFirstBanned = TRUE, .mimicBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .encoreBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_NOXIOUS_TORQUE] = @@ -13732,11 +14261,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .sheerForceBoost = TRUE, + .mirrorMoveBanned = TRUE, + .meFirstBanned = TRUE, .mimicBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .encoreBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_COMBAT_TORQUE] = @@ -13752,11 +14285,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .sheerForceBoost = TRUE, + .mirrorMoveBanned = TRUE, + .meFirstBanned = TRUE, .mimicBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .encoreBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_MAGICAL_TORQUE] = @@ -13772,11 +14309,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .sheerForceBoost = TRUE, + .mirrorMoveBanned = TRUE, + .meFirstBanned = TRUE, .mimicBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .encoreBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_PSYBLADE] = @@ -13807,11 +14348,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .thawsUser = TRUE, }, [MOVE_BLOOD_MOON] = { - .effect = EFFECT_GIGATON_HAMMER, + .effect = EFFECT_HIT, .power = 140, .type = TYPE_NORMAL, .accuracy = 100, @@ -13821,6 +14363,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .cantUseTwice = TRUE, }, [MOVE_MATCHA_GOTCHA] = @@ -13837,6 +14380,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .zMoveEffect = Z_EFFECT_NONE, .thawsUser = TRUE, .metronomeBanned = TRUE, + .healBlockBanned = B_EXTRAPOLATED_MOVE_FLAGS, }, [MOVE_SYRUP_BOMB] = @@ -14265,6 +14809,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_SPECIAL, .zMoveEffect = 0, .soundMove = TRUE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, }, [MOVE_GUARDIAN_OF_ALOLA] = { diff --git a/test/battle/ability/pressure.c b/test/battle/ability/pressure.c new file mode 100644 index 0000000000..db92d198b7 --- /dev/null +++ b/test/battle/ability/pressure.c @@ -0,0 +1,70 @@ +#include "global.h" +#include "test/battle.h" + +SINGLE_BATTLE_TEST("Pressure causes opponent's moves to use up 1 additional PP") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { MovesWithPP({MOVE_POUND, 35}); } + OPPONENT(SPECIES_WOBBUFFET) { Ability(ABILITY_PRESSURE); } + } WHEN { + TURN { MOVE(player, MOVE_POUND); } + } THEN { + EXPECT_EQ(player->pp[0], 33); + } +} + +DOUBLE_BATTLE_TEST("Pressure's effect stacks with multiple Pokémon") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { MovesWithPP({MOVE_SWIFT, 20}); } + PLAYER(SPECIES_WYNAUT); + OPPONENT(SPECIES_WOBBUFFET) { Ability(ABILITY_PRESSURE); } + OPPONENT(SPECIES_WYNAUT) { Ability(ABILITY_PRESSURE); } + } WHEN { + TURN { MOVE(playerLeft, MOVE_SWIFT); } + } THEN { + EXPECT_EQ(playerLeft->pp[0], 17); + } +} + +SINGLE_BATTLE_TEST("Pressure's effect applies to Imprison and Snatch") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { MovesWithPP({MOVE_IMPRISON, 10}, {MOVE_SNATCH, 10}); } + OPPONENT(SPECIES_WOBBUFFET) { Ability(ABILITY_PRESSURE); } + } WHEN { + TURN { MOVE(player, MOVE_IMPRISON); } + TURN { MOVE(player, MOVE_SNATCH); } + } THEN { + EXPECT_EQ(player->pp[0], 8); + EXPECT_EQ(player->pp[1], 8); + } +} + +SINGLE_BATTLE_TEST("Pressure's effect applies to Spikes, Stealth Rock and Toxic Spikes") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { MovesWithPP({MOVE_SPIKES, 20}, {MOVE_STEALTH_ROCK, 20}, {MOVE_TOXIC_SPIKES, 20}); } + OPPONENT(SPECIES_WOBBUFFET) { Ability(ABILITY_PRESSURE); } + } WHEN { + TURN { MOVE(player, MOVE_SPIKES); } + TURN { MOVE(player, MOVE_STEALTH_ROCK); } + TURN { MOVE(player, MOVE_TOXIC_SPIKES); } + } THEN { + EXPECT_EQ(player->pp[0], 18); + EXPECT_EQ(player->pp[1], 18); + EXPECT_EQ(player->pp[2], 18); + } +} + +SINGLE_BATTLE_TEST("Pressure's effect doesn't apply to Sticky Web") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { MovesWithPP({MOVE_STICKY_WEB, 20}); } + OPPONENT(SPECIES_WOBBUFFET) { Ability(ABILITY_PRESSURE); } + } WHEN { + TURN { MOVE(player, MOVE_STICKY_WEB); } + } THEN { + EXPECT_EQ(player->pp[0], 19); + } +} diff --git a/test/battle/move_effect/gigaton_hammer.c b/test/battle/move_effect/gigaton_hammer.c deleted file mode 100644 index aaff50f752..0000000000 --- a/test/battle/move_effect/gigaton_hammer.c +++ /dev/null @@ -1,63 +0,0 @@ -#include "global.h" -#include "test/battle.h" - -ASSUMPTIONS -{ - ASSUME(gBattleMoves[MOVE_GIGATON_HAMMER].effect == EFFECT_GIGATON_HAMMER); -} - -SINGLE_BATTLE_TEST("Struggle will be used if slow Encore is used on Gigaton Hammer") -{ - GIVEN { - ASSUME(gBattleMoves[MOVE_ENCORE].effect == EFFECT_ENCORE); - PLAYER(SPECIES_WOBBUFFET); - OPPONENT(SPECIES_WOBBUFFET); - } WHEN { - TURN { MOVE(player, MOVE_GIGATON_HAMMER); MOVE(opponent, MOVE_ENCORE); } - TURN { FORCED_MOVE(player); } - } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_GIGATON_HAMMER, player); - ANIMATION(ANIM_TYPE_MOVE, MOVE_ENCORE, opponent); - ANIMATION(ANIM_TYPE_MOVE, MOVE_STRUGGLE, player); - } -} - -SINGLE_BATTLE_TEST("Gigaton Hammer strikes again if fast encore is used") -{ - GIVEN { - ASSUME(gBattleMoves[MOVE_ENCORE].effect == EFFECT_ENCORE); - PLAYER(SPECIES_WOBBUFFET); - OPPONENT(SPECIES_WOBBUFFET); - } WHEN { - TURN { MOVE(player, MOVE_GIGATON_HAMMER); } - TURN { MOVE(opponent, MOVE_ENCORE); FORCED_MOVE(player); } - TURN { FORCED_MOVE(player); } - TURN { FORCED_MOVE(player); } - } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, opponent); - ANIMATION(ANIM_TYPE_MOVE, MOVE_GIGATON_HAMMER, player); - ANIMATION(ANIM_TYPE_MOVE, MOVE_ENCORE, opponent); - ANIMATION(ANIM_TYPE_MOVE, MOVE_GIGATON_HAMMER, player); - ANIMATION(ANIM_TYPE_MOVE, MOVE_STRUGGLE, player); - } -} - -SINGLE_BATTLE_TEST("Gigaton Hammer alternates with Struggle if it is the only usable move left") -{ - GIVEN { - PLAYER(SPECIES_WOBBUFFET) { Moves(MOVE_GIGATON_HAMMER, MOVE_NONE, MOVE_NONE, MOVE_NONE); } - OPPONENT(SPECIES_WOBBUFFET); - } WHEN { - TURN { MOVE(player, MOVE_GIGATON_HAMMER); } - TURN { FORCED_MOVE(player); } - TURN { MOVE(player, MOVE_GIGATON_HAMMER); } - TURN { FORCED_MOVE(player); } - TURN { MOVE(player, MOVE_GIGATON_HAMMER); } - } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_GIGATON_HAMMER, player); - ANIMATION(ANIM_TYPE_MOVE, MOVE_STRUGGLE, player); - ANIMATION(ANIM_TYPE_MOVE, MOVE_GIGATON_HAMMER, player); - ANIMATION(ANIM_TYPE_MOVE, MOVE_STRUGGLE, player); - ANIMATION(ANIM_TYPE_MOVE, MOVE_GIGATON_HAMMER, player); - } -} diff --git a/test/battle/move_flags/cant_use_twice.c b/test/battle/move_flags/cant_use_twice.c new file mode 100644 index 0000000000..3135e00169 --- /dev/null +++ b/test/battle/move_flags/cant_use_twice.c @@ -0,0 +1,93 @@ +#include "global.h" +#include "test/battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_GIGATON_HAMMER].cantUseTwice == TRUE); + ASSUME(gBattleMoves[MOVE_BLOOD_MOON].cantUseTwice == TRUE); +} + +SINGLE_BATTLE_TEST("Struggle will be used if slow Encore is used on moves with the cantUseTwice flag") +{ + u32 move; + PARAMETRIZE { move = MOVE_GIGATON_HAMMER; } + PARAMETRIZE { move = MOVE_BLOOD_MOON; } + GIVEN { + ASSUME(gBattleMoves[MOVE_ENCORE].effect == EFFECT_ENCORE); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, move); MOVE(opponent, MOVE_ENCORE); } + TURN { FORCED_MOVE(player); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, move, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_ENCORE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_STRUGGLE, player); + } +} + +SINGLE_BATTLE_TEST("Moves with the cantUseTwice flag strike again if fast encore is used") +{ + u32 move; + PARAMETRIZE { move = MOVE_GIGATON_HAMMER; } + PARAMETRIZE { move = MOVE_BLOOD_MOON; } + GIVEN { + ASSUME(gBattleMoves[MOVE_ENCORE].effect == EFFECT_ENCORE); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, move); } + TURN { MOVE(opponent, MOVE_ENCORE); FORCED_MOVE(player); } + TURN { FORCED_MOVE(player); } + TURN { FORCED_MOVE(player); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, opponent); + ANIMATION(ANIM_TYPE_MOVE, move, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_ENCORE, opponent); + ANIMATION(ANIM_TYPE_MOVE, move, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_STRUGGLE, player); + } +} + +SINGLE_BATTLE_TEST("Moves with the cantUseTwice flag alternate with Struggle if it is the only usable move left") +{ + u32 move; + PARAMETRIZE { move = MOVE_GIGATON_HAMMER; } + PARAMETRIZE { move = MOVE_BLOOD_MOON; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Moves(move, MOVE_NONE, MOVE_NONE, MOVE_NONE); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, move); } + TURN { FORCED_MOVE(player); } + TURN { MOVE(player, move); } + TURN { FORCED_MOVE(player); } + TURN { MOVE(player, move); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, move, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_STRUGGLE, player); + ANIMATION(ANIM_TYPE_MOVE, move, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_STRUGGLE, player); + ANIMATION(ANIM_TYPE_MOVE, move, player); + } +} + +SINGLE_BATTLE_TEST("Moves with the cantUseTwice flag can alternate between each other") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Moves(MOVE_GIGATON_HAMMER, MOVE_BLOOD_MOON, MOVE_NONE, MOVE_NONE); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_GIGATON_HAMMER); } + TURN { MOVE(player, MOVE_BLOOD_MOON); } + TURN { MOVE(player, MOVE_GIGATON_HAMMER); } + TURN { MOVE(player, MOVE_BLOOD_MOON); } + TURN { MOVE(player, MOVE_GIGATON_HAMMER); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_GIGATON_HAMMER, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_BLOOD_MOON, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_GIGATON_HAMMER, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_BLOOD_MOON, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_GIGATON_HAMMER, player); + } +} From ab6c5bafe9e47651b9cae2ece93c1c4a06ee16b6 Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 20 Oct 2023 12:29:55 +0200 Subject: [PATCH 111/162] New function to check ability stat loss --- src/battle_script_commands.c | 31 ++++++++++++++++++++++--------- src/battle_util.c | 1 - 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index da647034a5..0cdb99e932 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -355,6 +355,7 @@ static void TryUpdateRoundTurnOrder(void); static bool32 ChangeOrderTargetAfterAttacker(void); void ApplyExperienceMultipliers(s32 *expAmount, u8 expGetterMonId, u8 faintedBattler); static void RemoveAllTerrains(void); +static bool8 CanAbilityPreventStatLoss(u16 abilityDef, bool8 isIntimidate); static void Cmd_attackcanceler(void); static void Cmd_accuracycheck(void); @@ -11390,15 +11391,8 @@ static u32 ChangeStatBuffs(s8 statValue, u32 statId, u32 flags, const u8 *BS_ptr gBattlescriptCurrInstr = BattleScript_ButItFailed; return STAT_CHANGE_DIDNT_WORK; } - else if (((battlerHoldEffect == HOLD_EFFECT_CLEAR_AMULET - || battlerAbility == ABILITY_CLEAR_BODY - || battlerAbility == ABILITY_FULL_METAL_BODY - || battlerAbility == ABILITY_WHITE_SMOKE) - || ((B_UPDATED_INTIMIDATE >= GEN_8) && statId == STAT_ATK - && (battlerAbility == ABILITY_INNER_FOCUS - || battlerAbility == ABILITY_SCRAPPY - || battlerAbility == ABILITY_OWN_TEMPO - || battlerAbility == ABILITY_OBLIVIOUS))) + else if ((battlerHoldEffect == HOLD_EFFECT_CLEAR_AMULET + || CanAbilityPreventStatLoss(battlerAbility, GetBattlerAbility(gBattlerAttacker) == ABILITY_INTIMIDATE)) && (!affectsUser || mirrorArmored) && !certain && gCurrentMove != MOVE_CURSE) { if (flags == STAT_CHANGE_ALLOW_PTR) @@ -15703,6 +15697,25 @@ static bool8 IsFinalStrikeEffect(u16 move) return FALSE; } +static bool8 CanAbilityPreventStatLoss(u16 abilityDef, bool8 isIntimidate) +{ + switch (abilityDef) + { + case ABILITY_CLEAR_BODY: + case ABILITY_FULL_METAL_BODY: + case ABILITY_WHITE_SMOKE: + return TRUE; + case ABILITY_INNER_FOCUS: + case ABILITY_SCRAPPY: + case ABILITY_OWN_TEMPO: + case ABILITY_OBLIVIOUS: + if (isIntimidate && (B_UPDATED_INTIMIDATE >= GEN_8)) + return TRUE; + break; + } + return FALSE; +} + void BS_CheckParentalBondCounter(void) { NATIVE_ARGS(u8 counter, const u8 *jumpInstr); diff --git a/src/battle_util.c b/src/battle_util.c index 12dcb256a3..d0bb6e8c3c 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -2792,7 +2792,6 @@ u8 DoBattlerEndTurnEffects(void) break; case ENDTURN_OCTOLOCK: { - u16 battlerAbility = GetBattlerAbility(battler); if (gDisableStructs[battler].octolock) { gBattlerTarget = battler; From 6daea655e56c74feebe9bdea6c0493e1eeccb7d4 Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 20 Oct 2023 12:33:56 +0200 Subject: [PATCH 112/162] fix line alignment --- src/battle_script_commands.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 0cdb99e932..8e5db2fd6e 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -11392,8 +11392,8 @@ static u32 ChangeStatBuffs(s8 statValue, u32 statId, u32 flags, const u8 *BS_ptr return STAT_CHANGE_DIDNT_WORK; } else if ((battlerHoldEffect == HOLD_EFFECT_CLEAR_AMULET - || CanAbilityPreventStatLoss(battlerAbility, GetBattlerAbility(gBattlerAttacker) == ABILITY_INTIMIDATE)) - && (!affectsUser || mirrorArmored) && !certain && gCurrentMove != MOVE_CURSE) + || CanAbilityPreventStatLoss(battlerAbility, GetBattlerAbility(gBattlerAttacker) == ABILITY_INTIMIDATE)) + && (!affectsUser || mirrorArmored) && !certain && gCurrentMove != MOVE_CURSE) { if (flags == STAT_CHANGE_ALLOW_PTR) { From a5c2ac5e49207fea321dff74003bca81ee1a55f0 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Thu, 19 Oct 2023 23:37:04 -0400 Subject: [PATCH 113/162] Use BUGFIX in assembly files --- data/battle_ai_scripts.s | 23 +++++++++-------- data/contest_ai_scripts.s | 25 ++++++++++--------- data/event_scripts.s | 1 + .../scripts.inc | 10 ++++---- .../MossdeepCity_SpaceCenter_1F/scripts.inc | 6 ++--- data/scripts/trainer_hill.inc | 4 +-- 6 files changed, 36 insertions(+), 33 deletions(-) diff --git a/data/battle_ai_scripts.s b/data/battle_ai_scripts.s index c296702a64..a43c889502 100644 --- a/data/battle_ai_scripts.s +++ b/data/battle_ai_scripts.s @@ -1,3 +1,4 @@ +#include "config.h" #include "constants/battle.h" #include "constants/battle_ai.h" #include "constants/abilities.h" @@ -1926,19 +1927,19 @@ AI_CV_Protect_End: @ BUG: Foresight is only encouraged if the user is Ghost type or @ has high evasion, but should check target instead AI_CV_Foresight: -.ifdef BUGFIX +#ifdef BUGFIX get_target_type1 if_equal TYPE_GHOST, AI_CV_Foresight2 get_target_type2 if_equal TYPE_GHOST, AI_CV_Foresight2 if_stat_level_more_than AI_TARGET, STAT_EVASION, 8, AI_CV_Foresight3 -.else +#else get_user_type1 if_equal TYPE_GHOST, AI_CV_Foresight2 get_user_type2 if_equal TYPE_GHOST, AI_CV_Foresight2 if_stat_level_more_than AI_USER, STAT_EVASION, 8, AI_CV_Foresight3 -.endif +#endif score -2 goto AI_CV_Foresight_End @@ -2183,13 +2184,13 @@ AI_CV_SemiInvulnerable2: if_status2 AI_TARGET, STATUS2_CURSED, AI_CV_SemiInvulnerable_TryEncourage if_status3 AI_TARGET, STATUS3_LEECHSEED, AI_CV_SemiInvulnerable_TryEncourage get_weather -.ifdef BUGFIX +#ifdef BUGFIX if_equal AI_WEATHER_HAIL, AI_CV_SemiInvulnerable_CheckIceType if_equal AI_WEATHER_SANDSTORM, AI_CV_SemiInvulnerable_CheckSandstormTypes -.else +#else if_equal AI_WEATHER_HAIL, AI_CV_SemiInvulnerable_CheckSandstormTypes if_equal AI_WEATHER_SANDSTORM, AI_CV_SemiInvulnerable_CheckIceType -.endif +#endif goto AI_CV_SemiInvulnerable5 AI_CV_SemiInvulnerable_CheckSandstormTypes: @@ -2254,11 +2255,11 @@ AI_CV_Hail_End: @ BUG: Facade score is increased if the target is statused, but should be if the user is AI_CV_Facade: -.ifdef BUGFIX +#ifdef BUGFIX if_not_status AI_USER, STATUS1_POISON | STATUS1_BURN | STATUS1_PARALYSIS | STATUS1_TOXIC_POISON, AI_CV_Facade_End -.else +#else if_not_status AI_TARGET, STATUS1_POISON | STATUS1_BURN | STATUS1_PARALYSIS | STATUS1_TOXIC_POISON, AI_CV_Facade_End -.endif +#endif score +1 AI_CV_Facade_End: end @@ -3176,9 +3177,9 @@ AI_HPAware_DiscouragedEffectsWhenTargetLowHP: AI_TrySunnyDayStart: if_target_is_ally AI_TryOnAlly if_not_effect EFFECT_SUNNY_DAY, AI_TrySunnyDayStart_End -.ifndef BUGFIX @ funcResult has not been set in this script yet, below call is nonsense +#ifndef BUGFIX @ funcResult has not been set in this script yet, below call is nonsense if_equal FALSE, AI_TrySunnyDayStart_End -.endif +#endif is_first_turn_for AI_USER if_equal FALSE, AI_TrySunnyDayStart_End score +5 diff --git a/data/contest_ai_scripts.s b/data/contest_ai_scripts.s index ecd3103ae2..affaf31d6d 100644 --- a/data/contest_ai_scripts.s +++ b/data/contest_ai_scripts.s @@ -1,3 +1,4 @@ +#include "config.h" #include "constants/global.h" #include "constants/contest.h" .include "asm/macros.inc" @@ -435,11 +436,11 @@ AI_CGM_BetterWhenAudienceExcited: AI_CGM_BetterWhenAudienceExcited_1stUp: @ BUG: Should be if_appeal_num_eq 0 @ 1st up on 1st appeal excitement will always be 0 -.ifdef BUGFIX +#ifdef BUGFIX if_appeal_num_eq 0, AI_CGM_BetterWhenAudienceExcited_1stAppeal -.else +#else if_appeal_num_not_eq 0, AI_CGM_BetterWhenAudienceExcited_1stAppeal -.endif +#endif if_excitement_eq 4, AI_CGM_BetterWhenAudienceExcited_1AwayFromMax if_excitement_eq 3, AI_CGM_BetterWhenAudienceExcited_2AwayFromMax end @@ -546,11 +547,11 @@ AI_CGM_TargetMonWithJudgesAttention: end AI_CGM_TargetMonWithJudgesAttention_CheckMon1: if_cannot_participate MON_1, AI_CGM_TargetMonWithJudgesAttention_CheckMon2 -.ifdef BUGFIX +#ifdef BUGFIX if_not_used_combo_starter MON_1, AI_CGM_TargetMonWithJudgesAttention_CheckMon2 -.else +#else if_used_combo_starter MON_1, AI_CGM_TargetMonWithJudgesAttention_CheckMon2 -.endif +#endif if_random_less_than 125, AI_CGM_TargetMonWithJudgesAttention_CheckMon2 score +2 if_not_completed_combo MON_1, AI_CGM_TargetMonWithJudgesAttention_CheckMon2 @@ -559,11 +560,11 @@ AI_CGM_TargetMonWithJudgesAttention_CheckMon1: AI_CGM_TargetMonWithJudgesAttention_CheckMon2: if_user_order_eq MON_2, AI_CGM_End if_cannot_participate MON_2, AI_CGM_TargetMonWithJudgesAttention_CheckMon3 -.ifdef BUGFIX +#ifdef BUGFIX if_not_used_combo_starter MON_2, AI_CGM_TargetMonWithJudgesAttention_CheckMon3 -.else +#else if_used_combo_starter MON_2, AI_CGM_TargetMonWithJudgesAttention_CheckMon3 -.endif +#endif if_random_less_than 125, AI_CGM_TargetMonWithJudgesAttention_CheckMon3 score +2 if_not_completed_combo MON_2, AI_CGM_TargetMonWithJudgesAttention_CheckMon3 @@ -572,11 +573,11 @@ AI_CGM_TargetMonWithJudgesAttention_CheckMon2: AI_CGM_TargetMonWithJudgesAttention_CheckMon3: if_user_order_eq MON_3, AI_CGM_End if_cannot_participate MON_3, AI_CGM_End -.ifdef BUGFIX +#ifdef BUGFIX if_not_used_combo_starter MON_3, AI_CGM_End -.else +#else if_used_combo_starter MON_3, AI_CGM_End -.endif +#endif if_random_less_than 125, AI_CGM_End score +2 if_not_completed_combo MON_3, AI_CGM_End diff --git a/data/event_scripts.s b/data/event_scripts.s index 1f3db6aa2b..e8fb9dcbd1 100644 --- a/data/event_scripts.s +++ b/data/event_scripts.s @@ -1,3 +1,4 @@ +#include "config.h" #include "constants/global.h" #include "constants/apprentice.h" #include "constants/battle.h" diff --git a/data/maps/BattleFrontier_BattleTowerLobby/scripts.inc b/data/maps/BattleFrontier_BattleTowerLobby/scripts.inc index 6162d0ada6..a216055b5b 100644 --- a/data/maps/BattleFrontier_BattleTowerLobby/scripts.inc +++ b/data/maps/BattleFrontier_BattleTowerLobby/scripts.inc @@ -415,18 +415,18 @@ BattleFrontier_BattleTowerLobby_EventScript_SaveBeforeLinkMultisChallenge:: @ to the flash, but not data in PokemonStorage. The SaveGame script that follows asks the player to do a full save, @ which they can opt out of. As a result the player can save their party and quit without having saved the PC. @ This allows players to clone pokemon and their held items by withdrawing them (or erase them by despositing). -.ifndef BUGFIX +#ifndef BUGFIX tower_save 0 -.endif +#endif call Common_EventScript_SaveGame setvar VAR_TEMP_CHALLENGE_STATUS, 255 goto_if_eq VAR_RESULT, 0, BattleFrontier_BattleTowerLobby_EventScript_CancelChallengeSaveFailed @ GAME_STAT_ENTERED_BATTLE_TOWER should not be incremented here, for two reasons: @ 1. It is incremented again in BattleFrontier_BattleTowerLobby_EventScript_CableLinkSuccessful or BattleFrontier_BattleTowerLobby_EventScript_WirelessLinkSuccessful -@ 2. If the player tries to save, but fails, the counter will still be incremented even if the player never enters the tower. -.ifndef BUGFIX +@ 2. If the player tries to connect, but fails, the counter will still be incremented even if the player never enters the tower. +#ifndef BUGFIX incrementgamestat GAME_STAT_ENTERED_BATTLE_TOWER -.endif +#endif specialvar VAR_RESULT, IsWirelessAdapterConnected goto_if_eq VAR_RESULT, TRUE, BattleFrontier_BattleTowerLobby_EventScript_TryWirelessLink goto BattleFrontier_BattleTowerLobby_EventScript_TryCableLink diff --git a/data/maps/MossdeepCity_SpaceCenter_1F/scripts.inc b/data/maps/MossdeepCity_SpaceCenter_1F/scripts.inc index 263b071056..e17af35724 100644 --- a/data/maps/MossdeepCity_SpaceCenter_1F/scripts.inc +++ b/data/maps/MossdeepCity_SpaceCenter_1F/scripts.inc @@ -229,11 +229,11 @@ MossdeepCity_SpaceCenter_1F_EventScript_Grunt2:: copyobjectxytoperm LOCALID_STAIR_GRUNT switch VAR_FACING case DIR_WEST, MossdeepCity_SpaceCenter_1F_EventScript_MoveGruntFromStairsWest - #ifdef BUGFIX +#ifdef BUGFIX case DIR_EAST, MossdeepCity_SpaceCenter_1F_EventScript_MoveGruntFromStairsEast - #else +#else case DIR_WEST, MossdeepCity_SpaceCenter_1F_EventScript_MoveGruntFromStairsEast - #endif +#endif applymovement LOCALID_STAIR_GRUNT, MossdeepCity_SpaceCenter_1F_Movement_MoveGruntFromStairs waitmovement 0 setvar VAR_MOSSDEEP_SPACE_CENTER_STAIR_GUARD_STATE, 2 diff --git a/data/scripts/trainer_hill.inc b/data/scripts/trainer_hill.inc index b7f8153514..04bbe05e5a 100644 --- a/data/scripts/trainer_hill.inc +++ b/data/scripts/trainer_hill.inc @@ -13,9 +13,9 @@ TrainerHill_OnWarp: TrainerHill_1F_EventScript_DummyOnWarp:: setvar VAR_TEMP_3, 1 -.ifdef BUGFIX +#ifdef BUGFIX end @ Missing end. By chance, the next byte (0x02 of VAR_TEMP_2) is also the id for the end cmd -.endif +#endif TrainerHill_OnFrame: map_script_2 VAR_TEMP_2, 0, TrainerHill_1F_EventScript_DummyWarpToEntranceCounter From 123fd45d8ecd1fd108fa64e9d0d364a8409c7702 Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 20 Oct 2023 18:53:49 +0200 Subject: [PATCH 114/162] last hyper cutter test --- test/battle/ability/hyper_cutter.c | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/test/battle/ability/hyper_cutter.c b/test/battle/ability/hyper_cutter.c index 10be6fa725..16b1635060 100644 --- a/test/battle/ability/hyper_cutter.c +++ b/test/battle/ability/hyper_cutter.c @@ -111,7 +111,7 @@ SINGLE_BATTLE_TEST("Hyper Cutter doesn't prevent Topsy-Turvy") } } -SINGLE_BATTLE_TEST("xx Hyper Cutter doesn't prevent Spectral Thief from resetting positive Attack stage changes") +SINGLE_BATTLE_TEST("Hyper Cutter doesn't prevent Spectral Thief from resetting positive Attack stage changes") { GIVEN { ASSUME(gBattleMoves[MOVE_SWORDS_DANCE].effect == EFFECT_ATTACK_UP_2); @@ -130,4 +130,24 @@ SINGLE_BATTLE_TEST("xx Hyper Cutter doesn't prevent Spectral Thief from resettin } } -TO_DO_BATTLE_TEST("Hyper Cutter doesn't prevent receiving negative Attack stage changes from Baton Pass"); +SINGLE_BATTLE_TEST("xx Hyper Cutter doesn't prevent receiving negative Attack stage changes from Baton Pass") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_GROWL].effect == EFFECT_ATTACK_DOWN); + ASSUME(gBattleMoves[MOVE_BATON_PASS].effect == EFFECT_BATON_PASS); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_KRABBY) { Ability(ABILITY_HYPER_CUTTER); } + } WHEN { + TURN { MOVE(player, MOVE_GROWL); + MOVE(opponent, MOVE_BATON_PASS); + SEND_OUT(opponent, 1); + } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_GROWL, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_BATON_PASS, opponent); + MESSAGE("2 sent out Krabby!"); + } THEN { + EXPECT_EQ(opponent->statStages[STAT_ATK], DEFAULT_STAT_STAGE - 1); + } +} \ No newline at end of file From ebdf14c62096e4ea8e175ce10621a5e67b1c08dc Mon Sep 17 00:00:00 2001 From: voloved <36523934+voloved@users.noreply.github.com> Date: Sat, 21 Oct 2023 11:45:40 -0400 Subject: [PATCH 115/162] Push B in wild battle moves to Run (#3362) Co-authored-by: Eduardo Quezada D'Ottone --- include/config/battle.h | 3 ++- src/battle_controller_player.c | 10 ++++++++++ src/battle_controller_safari.c | 7 +++++++ 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/include/config/battle.h b/include/config/battle.h index bf210c1021..480107ab3b 100644 --- a/include/config/battle.h +++ b/include/config/battle.h @@ -191,6 +191,7 @@ #define B_HIDE_HEALTHBOX_IN_ANIMS TRUE // If set to TRUE, hides healthboxes during move animations. #define B_EXPANDED_MOVE_NAMES FALSE // If set to TRUE, move names are increased from 12 characters to 16 characters. #define B_WAIT_TIME_MULTIPLIER 16 // This determines how long text pauses in battle last. Vanilla is 16. Lower values result in faster battles. +#define B_QUICK_MOVE_CURSOR_TO_RUN FALSE // If set to TRUE, pushing B in the battle options against a wild encounter will move the cursor to the run option // Catching settings #define B_SEMI_INVULNERABLE_CATCH GEN_LATEST // In Gen4+, you cannot throw a ball against a Pokemon that is in a semi-invulnerable state (dig/fly/etc) @@ -198,7 +199,7 @@ #define B_CRITICAL_CAPTURE TRUE // If set to TRUE, Critical Capture will be enabled. #define B_LAST_USED_BALL TRUE // If TRUE, the "last used ball" feature from Gen 7 will be implemented #define B_LAST_USED_BALL_BUTTON R_BUTTON // If last used ball is implemented, this button (or button combo) will trigger throwing the last used ball. -#define B_LAST_USED_BALL_CYCLE TRUE // If TRUE, then holding B_LAST_USED_BALL_BUTTON while pressing the D-Pad cycles through the balls +#define B_LAST_USED_BALL_CYCLE TRUE // If TRUE, then holding B_LAST_USED_BALL_BUTTON while pressing the D-Pad cycles through the balls // Other settings #define B_DOUBLE_WILD_CHANCE 0 // % chance of encountering two Pokémon in a Wild Encounter. diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c index feabb2863a..e59ea5ba28 100644 --- a/src/battle_controller_player.c +++ b/src/battle_controller_player.c @@ -389,6 +389,16 @@ static void HandleInputChooseAction(u32 battler) BtlController_EmitTwoReturnValues(battler, BUFFER_B, B_ACTION_CANCEL_PARTNER, 0); PlayerBufferExecCompleted(battler); } + else if (B_QUICK_MOVE_CURSOR_TO_RUN) + { + if (!(gBattleTypeFlags & BATTLE_TYPE_TRAINER)) // If wild battle, pressing B moves cursor to "Run". + { + PlaySE(SE_SELECT); + ActionSelectionDestroyCursorAt(gActionSelectionCursor[battler]); + gActionSelectionCursor[battler] = 3; + ActionSelectionCreateCursorAt(gActionSelectionCursor[battler], 0); + } + } } else if (JOY_NEW(START_BUTTON)) { diff --git a/src/battle_controller_safari.c b/src/battle_controller_safari.c index 2069082d8c..b5a64c286b 100644 --- a/src/battle_controller_safari.c +++ b/src/battle_controller_safari.c @@ -184,6 +184,13 @@ static void HandleInputChooseAction(u32 battler) ActionSelectionCreateCursorAt(gActionSelectionCursor[battler], 0); } } + else if (B_QUICK_MOVE_CURSOR_TO_RUN && JOY_NEW(B_BUTTON)) + { + PlaySE(SE_SELECT); + ActionSelectionDestroyCursorAt(gActionSelectionCursor[battler]); + gActionSelectionCursor[battler] = 3; + ActionSelectionCreateCursorAt(gActionSelectionCursor[battler], 0); + } } static void Controller_WaitForHealthbox(u32 battler) From 620998e68d59ba6e46a74619bfb464683347c8f3 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Sat, 21 Oct 2023 17:27:08 -0300 Subject: [PATCH 116/162] Added a macro to flush the text box in battles --- asm/macros/battle_script.inc | 5 ++ data/battle_scripts_1.s | 101 +++++++++++++---------------------- 2 files changed, 42 insertions(+), 64 deletions(-) diff --git a/asm/macros/battle_script.inc b/asm/macros/battle_script.inc index e8b85d2a65..e1cb76e784 100644 --- a/asm/macros/battle_script.inc +++ b/asm/macros/battle_script.inc @@ -2383,3 +2383,8 @@ getbattlerfainted \battler jumpifbyte CMP_EQUAL, gBattleCommunication, \value, \ptr .endm + + .macro flushtextbox + printstring STRINGID_EMPTYSTRING3 + waitmessage 1 + .endm diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 366b8c6dcd..60e7d9527a 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -757,8 +757,7 @@ BattleScript_AffectionBasedStatusHeal_Continue: end2 BattleScript_ShellTrapSetUp:: - printstring STRINGID_EMPTYSTRING3 - waitmessage 0x1 + flushtextbox playanimation BS_ATTACKER, B_ANIM_SHELL_TRAP_SETUP, NULL printstring STRINGID_PREPARESHELLTRAP waitmessage B_WAIT_TIME_LONG @@ -831,8 +830,7 @@ BattleScript_EffectCourtChange:: BattleScript_BeakBlastSetUp:: setbeakblast BS_ATTACKER - printstring STRINGID_EMPTYSTRING3 - waitmessage 1 + flushtextbox playanimation BS_ATTACKER, B_ANIM_BEAK_BLAST_SETUP, NULL printstring STRINGID_HEATUPBEAK waitmessage B_WAIT_TIME_LONG @@ -856,7 +854,7 @@ BattleScript_EffectMeteorBeam:: BattleScript_FirstChargingTurnMeteorBeam:: attackcanceler - printstring STRINGID_EMPTYSTRING3 + flushtextbox ppreduce attackanimation waitanimation @@ -1536,8 +1534,7 @@ BattleScript_MoveEffectCoreEnforcer:: waitmessage B_WAIT_TIME_LONG trytoclearprimalweather tryrevertweatherform - printstring STRINGID_EMPTYSTRING3 - waitmessage 1 + flushtextbox BattleScript_CoreEnforcerRet: return @@ -1631,8 +1628,7 @@ BattleScript_EffectPartingShotSwitch: switchindataupdate BS_ATTACKER hpthresholds BS_ATTACKER trytoclearprimalweather - printstring STRINGID_EMPTYSTRING3 - waitmessage 1 + flushtextbox printstring STRINGID_SWITCHINMON switchinanim BS_ATTACKER, TRUE waitstate @@ -1987,8 +1983,7 @@ BattleScript_SynchronoiseLoop: waitmessage B_WAIT_TIME_LONG resultmessage waitmessage B_WAIT_TIME_LONG - printstring STRINGID_EMPTYSTRING3 - waitmessage 1 + flushtextbox tryfaintmon BS_TARGET BattleScript_SynchronoiseMoveTargetEnd: moveendto MOVEEND_NEXT_TARGET @@ -2672,8 +2667,7 @@ BattleScript_EffectSimpleBeam: waitmessage B_WAIT_TIME_LONG trytoclearprimalweather tryrevertweatherform - printstring STRINGID_EMPTYSTRING3 - waitmessage 1 + flushtextbox tryendneutralizinggas BS_TARGET goto BattleScript_MoveEnd @@ -2726,8 +2720,7 @@ BattleScript_EffectHealingWish: switchindataupdate BS_ATTACKER hpthresholds BS_ATTACKER trytoclearprimalweather - printstring STRINGID_EMPTYSTRING3 - waitmessage 1 + flushtextbox printstring STRINGID_SWITCHINMON switchinanim BS_ATTACKER, TRUE waitstate @@ -2772,8 +2765,7 @@ BattleScript_EffectWorrySeed: waitmessage B_WAIT_TIME_LONG trytoclearprimalweather tryrevertweatherform - printstring STRINGID_EMPTYSTRING3 - waitmessage 1 + flushtextbox goto BattleScript_MoveEnd BattleScript_EffectPowerSplit: @@ -2904,8 +2896,7 @@ BattleScript_EffectGastroAcid: waitmessage B_WAIT_TIME_LONG trytoclearprimalweather tryrevertweatherform - printstring STRINGID_EMPTYSTRING3 - waitmessage 1 + flushtextbox tryendneutralizinggas BS_TARGET goto BattleScript_MoveEnd @@ -3115,8 +3106,7 @@ BattleScript_EffectHitEscape: switchindataupdate BS_ATTACKER hpthresholds BS_ATTACKER trytoclearprimalweather - printstring STRINGID_EMPTYSTRING3 - waitmessage 1 + flushtextbox printstring STRINGID_SWITCHINMON switchinanim BS_ATTACKER, TRUE waitstate @@ -3772,8 +3762,7 @@ BattleScript_DoMultiHit:: critmessage waitmessage B_WAIT_TIME_LONG multihitresultmessage - printstring STRINGID_EMPTYSTRING3 - waitmessage 1 + flushtextbox addbyte sMULTIHIT_STRING + 4, 1 moveendto MOVEEND_NEXT_TARGET jumpifbyte CMP_COMMON_BITS, gMoveResultFlags, MOVE_RESULT_FOE_ENDURED, BattleScript_MultiHitPrintStrings @@ -3964,7 +3953,7 @@ BattleScript_TwoTurnMovesSecondTurn:: BattleScriptFirstChargingTurn:: attackcanceler - printstring STRINGID_EMPTYSTRING3 + flushtextbox ppreduce attackstring BattleScriptFirstChargingTurnAfterAttackString: @@ -4139,8 +4128,7 @@ BattleScript_EffectTransform:: attackstring ppreduce trytoclearprimalweather - printstring STRINGID_EMPTYSTRING3 - waitmessage 1 + flushtextbox transformdataexecution attackanimation waitanimation @@ -5041,8 +5029,7 @@ BattleScript_EffectBatonPass:: switchindataupdate BS_ATTACKER hpthresholds BS_ATTACKER trytoclearprimalweather - printstring STRINGID_EMPTYSTRING3 - waitmessage 1 + flushtextbox printstring STRINGID_SWITCHINMON switchinanim BS_ATTACKER, TRUE waitstate @@ -6369,8 +6356,7 @@ BattleScript_FaintedMonTryChoose: switchindataupdate BS_ATTACKER hpthresholds BS_ATTACKER trytoclearprimalweather - printstring STRINGID_EMPTYSTRING3 - waitmessage 1 + flushtextbox printstring STRINGID_SWITCHINMON hidepartystatussummary BS_ATTACKER switchinanim BS_ATTACKER, 0 @@ -6382,8 +6368,7 @@ BattleScript_FaintedMonSendOutNew: switchindataupdate BS_FAINTED hpthresholds BS_FAINTED trytoclearprimalweather - printstring STRINGID_EMPTYSTRING3 - waitmessage 1 + flushtextbox printstring STRINGID_SWITCHINMON hidepartystatussummary BS_FAINTED switchinanim BS_FAINTED, FALSE @@ -6417,8 +6402,7 @@ BattleScript_LinkHandleFaintedMonLoop:: switchindataupdate BS_FAINTED hpthresholds BS_FAINTED trytoclearprimalweather - printstring STRINGID_EMPTYSTRING3 - waitmessage 1 + flushtextbox printstring STRINGID_SWITCHINMON hidepartystatussummary BS_FAINTED switchinanim BS_FAINTED, FALSE @@ -6642,8 +6626,7 @@ BattleScript_DoSwitchOut:: switchindataupdate BS_ATTACKER hpthresholds BS_ATTACKER trytoclearprimalweather - printstring STRINGID_EMPTYSTRING3 - waitmessage 1 + flushtextbox printstring STRINGID_SWITCHINMON hidepartystatussummary BS_ATTACKER switchinanim BS_ATTACKER, FALSE @@ -6938,8 +6921,7 @@ BattleScript_RoarSuccessSwitch:: getswitchedmondata BS_TARGET switchindataupdate BS_TARGET trytoclearprimalweather - printstring STRINGID_EMPTYSTRING3 - waitmessage 1 + flushtextbox switchinanim BS_TARGET, FALSE waitstate printstring STRINGID_PKMNWASDRAGGEDOUT @@ -7765,15 +7747,14 @@ BattleScript_MoveEffectClearSmog:: return BattleScript_FocusPunchSetUp:: - printstring STRINGID_EMPTYSTRING3 - waitmessage 1 + flushtextbox playanimation BS_ATTACKER, B_ANIM_FOCUS_PUNCH_SETUP printstring STRINGID_PKMNTIGHTENINGFOCUS waitmessage B_WAIT_TIME_LONG end3 BattleScript_MegaEvolution:: - printstring STRINGID_EMPTYSTRING3 + flushtextbox trytrainerslidemegaevolutionmsg BS_ATTACKER printstring STRINGID_MEGAEVOREACTING BattleScript_MegaEvolutionAfterString: @@ -7789,7 +7770,7 @@ BattleScript_MegaEvolutionAfterString: end3 BattleScript_WishMegaEvolution:: - printstring STRINGID_EMPTYSTRING3 + flushtextbox trytrainerslidemegaevolutionmsg BS_ATTACKER printstring STRINGID_FERVENTWISHREACHED goto BattleScript_MegaEvolutionAfterString @@ -7804,8 +7785,7 @@ BattleScript_PrimalReversionRestoreAttacker:: end2 BattleScript_PrimalReversionRet:: - printstring STRINGID_EMPTYSTRING3 - waitmessage 1 + flushtextbox setbyte gIsCriticalHit, 0 handleprimalreversion BS_ATTACKER, 0 handleprimalreversion BS_ATTACKER, 1 @@ -7818,7 +7798,7 @@ BattleScript_PrimalReversionRet:: return BattleScript_UltraBurst:: - printstring STRINGID_EMPTYSTRING3 + flushtextbox trytrainerslidezmovemsg BS_ATTACKER printstring STRINGID_ULTRABURSTREACTING waitmessage B_WAIT_TIME_LONG @@ -7836,8 +7816,7 @@ BattleScript_AttackerFormChange:: pause 5 copybyte gBattlerAbility, gBattlerAttacker call BattleScript_AbilityPopUp - printstring STRINGID_EMPTYSTRING3 - waitmessage 1 + flushtextbox BattleScript_AttackerFormChangeNoPopup:: handleformchange BS_ATTACKER, 0 handleformchange BS_ATTACKER, 1 @@ -7884,8 +7863,7 @@ BattleScript_CudChewActivates:: end3 BattleScript_TargetFormChangeNoPopup: - printstring STRINGID_EMPTYSTRING3 - waitmessage 1 + flushtextbox handleformchange BS_TARGET, 0 handleformchange BS_TARGET, 1 playanimation BS_TARGET, B_ANIM_FORM_CHANGE @@ -7916,8 +7894,7 @@ BattleScript_TargetFormChangeWithStringNoPopup:: BattleScript_BattlerFormChangeWithStringEnd3:: pause 5 call BattleScript_AbilityPopUp - printstring STRINGID_EMPTYSTRING3 - waitmessage 1 + flushtextbox handleformchange BS_SCRIPTING, 0 handleformchange BS_SCRIPTING, 1 playanimation BS_SCRIPTING, B_ANIM_FORM_CHANGE, NULL @@ -9794,7 +9771,7 @@ BattleScript_ActionSelectionItemsCantBeUsed:: endselectionscript BattleScript_FlushMessageBox:: - printstring STRINGID_EMPTYSTRING3 + flushtextbox return BattleScript_PalacePrintFlavorText:: @@ -9981,8 +9958,7 @@ BattleScript_AnnounceAirLockCloudNine:: end3 BattleScript_QuickClawActivation:: - printstring STRINGID_EMPTYSTRING3 - waitmessage 1 + flushtextbox playanimation BS_ATTACKER, B_ANIM_HELD_ITEM_EFFECT waitanimation printstring STRINGID_CANACTFASTERTHANKSTO @@ -9990,16 +9966,14 @@ BattleScript_QuickClawActivation:: end2 BattleScript_QuickDrawActivation:: - printstring STRINGID_EMPTYSTRING3 - waitmessage 1 + flushtextbox call BattleScript_AbilityPopUp printstring STRINGID_CANACTFASTERTHANKSTO waitmessage B_WAIT_TIME_LONG end2 BattleScript_CustapBerryActivation:: - printstring STRINGID_EMPTYSTRING3 - waitmessage 1 + flushtextbox playanimation BS_ATTACKER, B_ANIM_HELD_ITEM_EFFECT waitanimation printstring STRINGID_CANACTFASTERTHANKSTO @@ -10047,7 +10021,7 @@ BattleScript_JabocaRowapBerryActivate_Dmg: @ z moves / effects BattleScript_ZMoveActivateDamaging:: - printstring STRINGID_EMPTYSTRING3 + flushtextbox trytrainerslidezmovemsg BS_ATTACKER printstring STRINGID_ZPOWERSURROUNDS playanimation BS_ATTACKER, B_ANIM_ZMOVE_ACTIVATE, NULL @@ -10056,7 +10030,7 @@ BattleScript_ZMoveActivateDamaging:: return BattleScript_ZMoveActivateStatus:: - printstring STRINGID_EMPTYSTRING3 + flushtextbox trytrainerslidezmovemsg BS_ATTACKER savetarget printstring STRINGID_ZPOWERSURROUNDS @@ -10267,8 +10241,7 @@ BattleScript_EjectButtonActivates:: switchindataupdate BS_SCRIPTING hpthresholds BS_SCRIPTING trytoclearprimalweather - printstring STRINGID_EMPTYSTRING3 - waitmessage 1 + flushtextbox printstring 0x3 switchinanim BS_SCRIPTING 0x1 waitstate @@ -10648,7 +10621,7 @@ BattleScript_EffectSteelsurge:: @@@ END MAX MOVES @@@ BattleScript_DynamaxBegins:: - printstring STRINGID_EMPTYSTRING3 + flushtextbox returnatktoball pause B_WAIT_TIME_SHORT returntoball BS_SCRIPTING @@ -10659,7 +10632,7 @@ BattleScript_DynamaxBegins:: end3 BattleScript_DynamaxEnds:: - printstring STRINGID_EMPTYSTRING3 + flushtextbox updatedynamax playanimation BS_SCRIPTING, B_ANIM_FORM_CHANGE waitanimation From 0a6c0261fea8b3a2d20b6f254e2c076d93ca84ad Mon Sep 17 00:00:00 2001 From: Alex <93446519+AlexOn1ine@users.noreply.github.com> Date: Sat, 21 Oct 2023 23:42:19 +0200 Subject: [PATCH 117/162] Fixes Make it Rain in double battles (#3441) --- data/battle_scripts_1.s | 5 +++++ test/battle/move_effect/make_it_rain.c | 24 ++++++++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 57df1b4a2f..51090237bc 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -496,6 +496,8 @@ BattleScript_CorrosiveGasFail: goto BattleScript_MoveEnd BattleScript_EffectMakeItRain: + jumpifbattletype BATTLE_TYPE_DOUBLE, BattleScript_MakeItRainDoubles +BattleScript_MakeItRainContinuous: setmoveeffect MOVE_EFFECT_PAYDAY call BattleScript_EffectHit_Ret seteffectwithchance @@ -503,6 +505,9 @@ BattleScript_EffectMakeItRain: setmoveeffect MOVE_EFFECT_SP_ATK_MINUS_1 | MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN seteffectprimary goto BattleScript_MoveEnd +BattleScript_MakeItRainDoubles: + jumpifword CMP_NO_COMMON_BITS, gHitMarker, HITMARKER_NO_ATTACKSTRING | HITMARKER_NO_PPDEDUCT, BattleScript_NoMoveEffect + goto BattleScript_MakeItRainContinuous BattleScript_EffectSpinOut:: setmoveeffect MOVE_EFFECT_SPD_MINUS_2 | MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN diff --git a/test/battle/move_effect/make_it_rain.c b/test/battle/move_effect/make_it_rain.c index 42046c1457..560bcffa78 100644 --- a/test/battle/move_effect/make_it_rain.c +++ b/test/battle/move_effect/make_it_rain.c @@ -32,3 +32,27 @@ SINGLE_BATTLE_TEST("Make It Rain lowers special attack by one stage") EXPECT_MUL_EQ(damage[0], Q_4_12(0.66), damage[1]); } } + +DOUBLE_BATTLE_TEST("Make It Rain lowers special attack by one stage if it hits both targets") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(playerLeft, MOVE_MAKE_IT_RAIN); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_MAKE_IT_RAIN, playerLeft); + HP_BAR(opponentLeft); + NONE_OF { + MESSAGE("Coins scattered everywhere!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerLeft); + MESSAGE("Wobbuffet's Sp. Atk fell!"); + } + HP_BAR(opponentRight); + MESSAGE("Coins scattered everywhere!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerLeft); + MESSAGE("Wobbuffet's Sp. Atk fell!"); + } +} From 783ec0e957af43b96a893d82a796120f229a3518 Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 20 Oct 2023 22:51:30 +0200 Subject: [PATCH 118/162] fixes tests --- test/battle/ability/hyper_cutter.c | 4 ++-- test/battle/move_effect/octolock.c | 3 ++- test/battle/move_effect/syrup_bomb.c | 5 ++--- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/test/battle/ability/hyper_cutter.c b/test/battle/ability/hyper_cutter.c index 16b1635060..f040907626 100644 --- a/test/battle/ability/hyper_cutter.c +++ b/test/battle/ability/hyper_cutter.c @@ -130,7 +130,7 @@ SINGLE_BATTLE_TEST("Hyper Cutter doesn't prevent Spectral Thief from resetting p } } -SINGLE_BATTLE_TEST("xx Hyper Cutter doesn't prevent receiving negative Attack stage changes from Baton Pass") +SINGLE_BATTLE_TEST("Hyper Cutter doesn't prevent receiving negative Attack stage changes from Baton Pass") { GIVEN { ASSUME(gBattleMoves[MOVE_GROWL].effect == EFFECT_ATTACK_DOWN); @@ -150,4 +150,4 @@ SINGLE_BATTLE_TEST("xx Hyper Cutter doesn't prevent receiving negative Attack st } THEN { EXPECT_EQ(opponent->statStages[STAT_ATK], DEFAULT_STAT_STAGE - 1); } -} \ No newline at end of file +} diff --git a/test/battle/move_effect/octolock.c b/test/battle/move_effect/octolock.c index 2f70db39cf..4b0b1dbf4d 100644 --- a/test/battle/move_effect/octolock.c +++ b/test/battle/move_effect/octolock.c @@ -111,9 +111,10 @@ SINGLE_BATTLE_TEST("Octolock will not decrease Defense and Sp. Def further then TURN {} } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_OCTOLOCK, player); - for (j = 0; j < 5; j++) + for (j = 0; j < 5; j++) { MESSAGE("Foe Wobbuffet's Defense fell!"); MESSAGE("Foe Wobbuffet's Sp. Def fell!"); + } MESSAGE("Foe Wobbuffet's Defense won't go lower!"); MESSAGE("Foe Wobbuffet's Sp. Def won't go lower!"); NOT MESSAGE("Foe Wobbuffet's Defense fell!"); diff --git a/test/battle/move_effect/syrup_bomb.c b/test/battle/move_effect/syrup_bomb.c index 7c3808def8..fc55fa0163 100644 --- a/test/battle/move_effect/syrup_bomb.c +++ b/test/battle/move_effect/syrup_bomb.c @@ -98,7 +98,7 @@ SINGLE_BATTLE_TEST("Clear Body, White Smoke and Full Metal Body prevent Sticky S NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); NOT MESSAGE("Foe Torkoal's Speed fell!"); } - else if (species == SPECIES_SOLGALEO) + else { MESSAGE("Foe Solgaleo got covered in sticky syrup!"); ABILITY_POPUP(opponent, ABILITY_FULL_METAL_BODY); @@ -139,8 +139,7 @@ SINGLE_BATTLE_TEST("Sticky syrup will not decrease speed further then minus six" TURN { MOVE(player, MOVE_SYRUP_BOMB); } TURN {} } SCENE { - for (j = 0; j < 3; j++) - ANIMATION(ANIM_TYPE_MOVE, MOVE_SCARY_FACE, player); + for (j = 0; j < 3; j++) { ANIMATION(ANIM_TYPE_MOVE, MOVE_SCARY_FACE, player); } ANIMATION(ANIM_TYPE_MOVE, MOVE_SYRUP_BOMB, player); HP_BAR(opponent); MESSAGE("Foe Wobbuffet got covered in sticky syrup!"); From 196038eaeef3f22722060fca2d54f8670d31e343 Mon Sep 17 00:00:00 2001 From: sbird Date: Sun, 22 Oct 2023 03:17:16 +0200 Subject: [PATCH 119/162] [pokedex_plus] refactor #if to C if --- Makefile | 1 + include/graphics.h | 35 -- include/pokedex_plus_hgss.h | 3 - include/strings.h | 128 ------- src/daycare.c | 2 +- src/graphics.c | 35 -- src/pokedex.c | 14 +- src/pokedex_plus_hgss.c | 649 +++++++++++++++++++++--------------- src/secret_base.c | 3 + src/strings.c | 128 ------- 10 files changed, 397 insertions(+), 601 deletions(-) diff --git a/Makefile b/Makefile index fb48be1841..028fd8612c 100644 --- a/Makefile +++ b/Makefile @@ -345,6 +345,7 @@ $(C_BUILDDIR)/librfu_intr.o: CC1 := tools/agbcc/bin/agbcc_arm$(EXE) $(C_BUILDDIR)/librfu_intr.o: CFLAGS := -O2 -mthumb-interwork -quiet else $(C_BUILDDIR)/librfu_intr.o: CFLAGS := -mthumb-interwork -O2 -mabi=apcs-gnu -mtune=arm7tdmi -march=armv4t -fno-toplevel-reorder -Wno-pointer-to-int-cast +$(C_BUILDDIR)/pokedex_plus_hgss.o: CFLAGS := -mthumb -mthumb-interwork -O2 -mabi=apcs-gnu -mtune=arm7tdmi -march=armv4t -Wno-pointer-to-int-cast -std=gnu17 -Werror -Wall -Wno-strict-aliasing -Wno-attribute-alias endif ifeq ($(DINFO),1) diff --git a/include/graphics.h b/include/graphics.h index 7a44592d26..c5ca157a00 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -7842,41 +7842,6 @@ extern const u32 gPokedexSearchMenu_Gfx[]; extern const u32 gPokedexSearchMenuHoenn_Tilemap[]; extern const u32 gPokedexSearchMenuNational_Tilemap[]; extern const u16 gPokedexSearchMenu_Pal[]; -// pokedex HGSS -#if POKEDEX_PLUS_HGSS == TRUE -extern const u16 gPokedexPlusHGSS_Default_Pal[]; -extern const u16 gPokedexPlusHGSS_National_Pal[]; -extern const u16 gPokedexPlusHGSS_MenuSearch_Pal[]; -extern const u16 gPokedexPlusHGSS_SearchResults_Pal[]; -extern const u16 gPokedexPlusHGSS_Default_dark_Pal[]; -extern const u16 gPokedexPlusHGSS_National_dark_Pal[]; -extern const u16 gPokedexPlusHGSS_MenuSearch_dark_Pal[]; -extern const u16 gPokedexPlusHGSS_SearchResults_dark_Pal[]; -extern const u32 gPokedexPlusHGSS_MenuList_Gfx[]; -extern const u32 gPokedexPlusHGSS_MenuList_DECA_Gfx[]; -extern const u32 gPokedexPlusHGSS_Interface_Gfx[]; -extern const u32 gPokedexPlusHGSS_Interface_DECA_Gfx[]; -extern const u32 gPokedexPlusHGSS_Menu_1_Gfx[]; -extern const u32 gPokedexPlusHGSS_Menu_2_Gfx[]; -extern const u32 gPokedexPlusHGSS_Menu_3_Gfx[]; -extern const u32 gPokedexPlusHGSS_MenuSearch_Gfx[]; -extern const u32 gPokedexPlusHGSS_MenuSearch_DECA_Gfx[]; -extern const u32 gPokedexPlusHGSS_StartMenuMain_Tilemap[]; -extern const u32 gPokedexPlusHGSS_StartMenuSearchResults_Tilemap[]; -extern const u32 gPokedexPlusHGSS_ScreenSelectBarSubmenu_Tilemap[]; -extern const u32 gPokedexPlusHGSS_ScreenSelectBarSubmenu_Tilemap_Clear[]; -extern const u32 gPokedexPlusHGSS_ScreenList_Tilemap[]; -extern const u32 gPokedexPlusHGSS_ScreenListUnderlay_Tilemap[]; -extern const u32 gPokedexPlusHGSS_ScreenInfo_Tilemap[]; -extern const u32 gPokedexPlusHGSS_ScreenStats_Tilemap[]; -extern const u32 gPokedexPlusHGSS_ScreenEvolution_Tilemap[]; -extern const u32 gPokedexPlusHGSS_ScreenEvolution_Tilemap_PE[]; -extern const u32 gPokedexPlusHGSS_ScreenForms_Tilemap[]; -extern const u32 gPokedexPlusHGSS_ScreenCry_Tilemap[]; -extern const u32 gPokedexPlusHGSS_ScreenSize_Tilemap[]; -extern const u32 gPokedexPlusHGSS_ScreenSearchHoenn_Tilemap[]; -extern const u32 gPokedexPlusHGSS_ScreenSearchNational_Tilemap[]; -#endif // berry tag screen extern const u32 gBerryCheck_Gfx[]; diff --git a/include/pokedex_plus_hgss.h b/include/pokedex_plus_hgss.h index 68a4ddce4f..a309924236 100644 --- a/include/pokedex_plus_hgss.h +++ b/include/pokedex_plus_hgss.h @@ -1,10 +1,7 @@ #ifndef GUARD_POKEDEX_PLUS_HGSS_H #define GUARD_POKEDEX_PLUS_HGSS_H -#if POKEDEX_PLUS_HGSS == TRUE void CB2_OpenPokedexPlusHGSS(void); -u16 NationalPokedexNumToSpeciesHGSS(u16 nationalNum); void Task_DisplayCaughtMonDexPageHGSS(u8); -#endif #endif // GUARD_POKEDEX_PLUS_HGSS_H diff --git a/include/strings.h b/include/strings.h index 4fd5670a0d..2c8abc5a10 100644 --- a/include/strings.h +++ b/include/strings.h @@ -538,134 +538,6 @@ extern const u8 gText_SearchingPleaseWait[]; extern const u8 gText_SearchCompleted[]; extern const u8 gText_NoMatchingPkmnWereFound[]; extern const u8 gText_SelectorArrow[]; -//PokedexPlus HGSS_Ui -#if POKEDEX_PLUS_HGSS == TRUE -extern const u8 gText_Stats_Buttons[]; -extern const u8 gText_Stats_Buttons_Decapped[]; -extern const u8 gText_Stats_HP[]; -extern const u8 gText_Stats_Attack[]; -extern const u8 gText_Stats_Defense[]; -extern const u8 gText_Stats_Speed[]; -extern const u8 gText_Stats_SpAttack[]; -extern const u8 gText_Stats_SpDefense[]; -extern const u8 gText_Stats_EV_Plus1[]; -extern const u8 gText_Stats_EV_Plus2[]; -extern const u8 gText_Stats_EV_Plus3[]; -extern const u8 gText_Stats_EvStr1Str2[]; -extern const u8 gText_Stats_MoveSelectedMax[]; -extern const u8 gText_Stats_MoveLevel[]; -extern const u8 gText_Stats_Gender_0[]; -extern const u8 gText_Stats_Gender_12_5[]; -extern const u8 gText_Stats_Gender_25[]; -extern const u8 gText_Stats_Gender_50[]; -extern const u8 gText_Stats_Gender_75[]; -extern const u8 gText_Stats_Gender_87_5[]; -extern const u8 gText_Stats_Gender_100[]; -extern const u8 gText_Stats_CatchRate[]; -extern const u8 gText_Stats_CatchRate_Legend[]; -extern const u8 gText_Stats_CatchRate_VeryHard[]; -extern const u8 gText_Stats_CatchRate_Difficult[]; -extern const u8 gText_Stats_CatchRate_Medium[]; -extern const u8 gText_Stats_CatchRate_Relaxed[]; -extern const u8 gText_Stats_CatchRate_Easy[]; -extern const u8 gText_Stats_ExpYield[]; -extern const u8 gText_Stats_EggCycles[]; -extern const u8 gText_Stats_EggCycles_VeryFast[]; -extern const u8 gText_Stats_EggCycles_Fast[]; -extern const u8 gText_Stats_EggCycles_Normal[]; -extern const u8 gText_Stats_EggCycles_Slow[]; -extern const u8 gText_Stats_Growthrate[]; -extern const u8 gText_Stats_Friendship[]; -extern const u8 gText_Stats_Friendship_BigAnger[]; -extern const u8 gText_Stats_Friendship_Neutral[]; -extern const u8 gText_Stats_Friendship_Happy[]; -extern const u8 gText_Stats_Friendship_BigSmile[]; -extern const u8 gText_Stats_MEDIUM_FAST[]; -extern const u8 gText_Stats_ERRATIC[]; -extern const u8 gText_Stats_FLUCTUATING[]; -extern const u8 gText_Stats_MEDIUM_SLOW[]; -extern const u8 gText_Stats_FAST[]; -extern const u8 gText_Stats_SLOW[]; -extern const u8 gText_Stats_ContestHeart[]; -extern const u8 gText_PlusSymbol[]; -extern const u8 gText_Stats_Minus[]; -extern const u8 gText_Stats_eggGroup[]; -extern const u8 gText_Stats_eggGroup_Groups[]; -extern const u8 gText_Stats_eggGroup_MONSTER[]; -extern const u8 gText_Stats_eggGroup_WATER_1[]; -extern const u8 gText_Stats_eggGroup_BUG[]; -extern const u8 gText_Stats_eggGroup_FLYING[]; -extern const u8 gText_Stats_eggGroup_FIELD[]; -extern const u8 gText_Stats_eggGroup_FAIRY[]; -extern const u8 gText_Stats_eggGroup_GRASS[]; -extern const u8 gText_Stats_eggGroup_HUMAN_LIKE[]; -extern const u8 gText_Stats_eggGroup_WATER_3[]; -extern const u8 gText_Stats_eggGroup_MINERAL[]; -extern const u8 gText_Stats_eggGroup_AMORPHOUS[]; -extern const u8 gText_Stats_eggGroup_WATER_2[]; -extern const u8 gText_Stats_eggGroup_DITTO[]; -extern const u8 gText_Stats_eggGroup_DRAGON[]; -extern const u8 gText_Stats_eggGroup_UNDISCOVERED[]; -extern const u8 gText_Dex_SEEN[]; -extern const u8 gText_Dex_OWN[]; - -extern const u8 gText_EVO_Buttons[]; -extern const u8 gText_EVO_Buttons_Decapped[]; -extern const u8 gText_EVO_Buttons_PE[]; -extern const u8 gText_EVO_Buttons_Decapped_PE[]; -extern const u8 gText_EVO_Name[]; -extern const u8 gText_EVO_PreEvo[]; -extern const u8 gText_EVO_PreEvo_PE_Mega[]; -extern const u8 gText_EVO_FRIENDSHIP[]; -extern const u8 gText_EVO_FRIENDSHIP_DAY[]; -extern const u8 gText_EVO_FRIENDSHIP_NIGHT[]; -extern const u8 gText_EVO_FRIENDSHIP_MOVE_TYPE[]; -extern const u8 gText_EVO_LEVEL[]; -extern const u8 gText_EVO_TRADE[]; -extern const u8 gText_EVO_TRADE_ITEM[]; -extern const u8 gText_EVO_ITEM[]; -extern const u8 gText_EVO_LEVEL_ATK_GT_DEF[]; -extern const u8 gText_EVO_LEVEL_ATK_EQ_DEF[]; -extern const u8 gText_EVO_LEVEL_ATK_LT_DEF[]; -extern const u8 gText_EVO_LEVEL_SILCOON[]; -extern const u8 gText_EVO_LEVEL_CASCOON[]; -extern const u8 gText_EVO_LEVEL_NINJASK[]; -extern const u8 gText_EVO_LEVEL_SHEDINJA[]; -extern const u8 gText_EVO_BEAUTY[]; -extern const u8 gText_EVO_LEVEL_FEMALE[]; -extern const u8 gText_EVO_LEVEL_MALE[]; -extern const u8 gText_EVO_LEVEL_NIGHT[]; -extern const u8 gText_EVO_LEVEL_DAY[]; -extern const u8 gText_EVO_LEVEL_DUSK[]; -extern const u8 gText_EVO_ITEM_HOLD_DAY[]; -extern const u8 gText_EVO_ITEM_HOLD_NIGHT[]; -extern const u8 gText_EVO_MOVE[]; -extern const u8 gText_EVO_MAPSEC[]; -extern const u8 gText_EVO_ITEM_MALE[]; -extern const u8 gText_EVO_ITEM_FEMALE[]; -extern const u8 gText_EVO_LEVEL_RAIN[]; -extern const u8 gText_EVO_SPECIFIC_MON_IN_PARTY[]; -extern const u8 gText_EVO_LEVEL_DARK_TYPE_MON_IN_PARTY[]; -extern const u8 gText_EVO_TRADE_SPECIFIC_MON[]; -extern const u8 gText_EVO_SPECIFIC_MAP[]; -extern const u8 gText_EVO_LEVEL_NATURE_AMPED[]; -extern const u8 gText_EVO_LEVEL_NATURE_LOW_KEY[]; -extern const u8 gText_EVO_CRITICAL_HITS[]; -extern const u8 gText_EVO_SCRIPT_TRIGGER_DMG[]; -extern const u8 gText_EVO_DARK_SCROLL[]; -extern const u8 gText_EVO_WATER_SCROLL[]; -extern const u8 gText_EVO_ITEM_NIGHT[]; -extern const u8 gText_EVO_ITEM_DAY[]; -extern const u8 gText_EVO_ITEM_HOLD[]; -extern const u8 gText_EVO_UNKNOWN[]; -extern const u8 gText_EVO_NONE[]; - -extern const u8 gText_FORMS_Buttons_PE[]; -extern const u8 gText_FORMS_Buttons_Decapped_PE[]; -extern const u8 gText_FORMS_Buttons_Submenu_PE[]; -extern const u8 gText_FORMS_Buttons_Submenu_Decapped_PE[]; -extern const u8 gText_FORMS_NONE[]; -#endif // birch dex rating text extern const u8 gBirchDexRatingText_LessThan10[]; diff --git a/src/daycare.c b/src/daycare.c index 3389903808..c66e10eaab 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -1076,7 +1076,7 @@ static void _GiveEggFromDaycare(struct DayCare *daycare) { struct Pokemon egg; u16 species; - u8 parentSlots[DAYCARE_MON_COUNT]; + u8 parentSlots[DAYCARE_MON_COUNT] = {0}; bool8 isEgg; species = DetermineEggSpeciesAndParentSlots(daycare, parentSlots); diff --git a/src/graphics.c b/src/graphics.c index 00bcea0564..0549e4476b 100644 --- a/src/graphics.c +++ b/src/graphics.c @@ -1739,41 +1739,6 @@ const u16 gPokedexSearchMenu_Pal[] = INCBIN_U16("graphics/pokedex/search_menu.gb const u32 gPokedexSearchMenu_Gfx[] = INCBIN_U32("graphics/pokedex/search_menu.4bpp.lz"); const u32 gPokedexSearchMenuNational_Tilemap[] = INCBIN_U32("graphics/pokedex/search_menu_national.bin.lz"); const u32 gPokedexSearchMenuHoenn_Tilemap[] = INCBIN_U32("graphics/pokedex/search_menu_hoenn.bin.lz"); -// Pokedex HGSS -#if POKEDEX_PLUS_HGSS == TRUE -const u16 gPokedexPlusHGSS_Default_Pal[] = INCBIN_U16("graphics/pokedex/hgss/palette_default.gbapal"); -const u16 gPokedexPlusHGSS_National_Pal[] = INCBIN_U16("graphics/pokedex/hgss/palette_national.gbapal"); -const u16 gPokedexPlusHGSS_MenuSearch_Pal[] = INCBIN_U16("graphics/pokedex/hgss/palette_search_menu.gbapal"); -const u16 gPokedexPlusHGSS_SearchResults_Pal[] = INCBIN_U16("graphics/pokedex/hgss/palette_search_results.gbapal"); -const u16 gPokedexPlusHGSS_Default_dark_Pal[] = INCBIN_U16("graphics/pokedex/hgss/palette_default_dark.gbapal"); -const u16 gPokedexPlusHGSS_National_dark_Pal[] = INCBIN_U16("graphics/pokedex/hgss/palette_national_dark.gbapal"); -const u16 gPokedexPlusHGSS_MenuSearch_dark_Pal[] = INCBIN_U16("graphics/pokedex/hgss/palette_search_menu_dark.gbapal"); -const u16 gPokedexPlusHGSS_SearchResults_dark_Pal[] = INCBIN_U16("graphics/pokedex/hgss/palette_search_results_dark.gbapal"); -const u32 gPokedexPlusHGSS_MenuList_Gfx[] = INCBIN_U32("graphics/pokedex/hgss/tileset_menu_list.4bpp.lz"); -const u32 gPokedexPlusHGSS_MenuList_DECA_Gfx[] = INCBIN_U32("graphics/pokedex/hgss/tileset_menu_list_DECA.4bpp.lz"); -const u32 gPokedexPlusHGSS_Interface_Gfx[] = INCBIN_U32("graphics/pokedex/hgss/tileset_interface.4bpp.lz"); -const u32 gPokedexPlusHGSS_Interface_DECA_Gfx[] = INCBIN_U32("graphics/pokedex/hgss/tileset_interface_DECA.4bpp.lz"); -const u32 gPokedexPlusHGSS_Menu_1_Gfx[] = INCBIN_U32("graphics/pokedex/hgss/tileset_menu1.4bpp.lz"); -const u32 gPokedexPlusHGSS_Menu_2_Gfx[] = INCBIN_U32("graphics/pokedex/hgss/tileset_menu2.4bpp.lz"); -const u32 gPokedexPlusHGSS_Menu_3_Gfx[] = INCBIN_U32("graphics/pokedex/hgss/tileset_menu3.4bpp.lz"); -const u32 gPokedexPlusHGSS_MenuSearch_Gfx[] = INCBIN_U32("graphics/pokedex/hgss/tileset_menu_search.4bpp.lz"); -const u32 gPokedexPlusHGSS_MenuSearch_DECA_Gfx[] = INCBIN_U32("graphics/pokedex/hgss/tileset_menu_search_DECA.4bpp.lz"); -const u32 gPokedexPlusHGSS_StartMenuMain_Tilemap[] = INCBIN_U32("graphics/pokedex/hgss/tilemap_start_menu.bin.lz"); -const u32 gPokedexPlusHGSS_StartMenuSearchResults_Tilemap[] = INCBIN_U32("graphics/pokedex/hgss/tilemap_start_menu_search_results.bin.lz"); -const u32 gPokedexPlusHGSS_ScreenSelectBarSubmenu_Tilemap[] = INCBIN_U32("graphics/pokedex/hgss/SelectBar.bin.lz"); -const u32 gPokedexPlusHGSS_ScreenSelectBarSubmenu_Tilemap_Clear[] = INCBIN_U32("graphics/pokedex/hgss/SelectBar_clear.bin.lz"); -const u32 gPokedexPlusHGSS_ScreenList_Tilemap[] = INCBIN_U32("graphics/pokedex/hgss/tilemap_list_screen.bin.lz"); -const u32 gPokedexPlusHGSS_ScreenListUnderlay_Tilemap[] = INCBIN_U32("graphics/pokedex/hgss/tilemap_list_screen_underlay.bin.lz"); -const u32 gPokedexPlusHGSS_ScreenInfo_Tilemap[] = INCBIN_U32("graphics/pokedex/hgss/tilemap_info_screen.bin.lz"); -const u32 gPokedexPlusHGSS_ScreenStats_Tilemap[] = INCBIN_U32("graphics/pokedex/hgss/tilemap_stats_screen.bin.lz"); -const u32 gPokedexPlusHGSS_ScreenEvolution_Tilemap[] = INCBIN_U32("graphics/pokedex/hgss/tilemap_evo_screen.bin.lz"); -const u32 gPokedexPlusHGSS_ScreenEvolution_Tilemap_PE[] = INCBIN_U32("graphics/pokedex/hgss/tilemap_evo_screen_PE.bin.lz"); -const u32 gPokedexPlusHGSS_ScreenForms_Tilemap[] = INCBIN_U32("graphics/pokedex/hgss/tilemap_forms_screen.bin.lz"); -const u32 gPokedexPlusHGSS_ScreenCry_Tilemap[] = INCBIN_U32("graphics/pokedex/hgss/tilemap_cry_screen.bin.lz"); -const u32 gPokedexPlusHGSS_ScreenSize_Tilemap[] = INCBIN_U32("graphics/pokedex/hgss/tilemap_size_screen.bin.lz"); -const u32 gPokedexPlusHGSS_ScreenSearchHoenn_Tilemap[] = INCBIN_U32("graphics/pokedex/hgss/tilemap_search_screen_hoenn.bin.lz"); -const u32 gPokedexPlusHGSS_ScreenSearchNational_Tilemap[] = INCBIN_U32("graphics/pokedex/hgss/tilemap_search_screen_national.bin.lz"); -#endif const u16 gSummaryScreen_MoveEffect_Battle_Tilemap[] = INCBIN_U16("graphics/summary_screen/effect_battle.bin"); const u16 gSummaryScreen_MoveEffect_Contest_Tilemap[] = INCBIN_U16("graphics/summary_screen/effect_contest.bin"); diff --git a/src/pokedex.c b/src/pokedex.c index 308c078c22..487413e4b6 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -1591,10 +1591,11 @@ static void ResetPokedexView(struct PokedexView *pokedexView) void CB2_OpenPokedex(void) { -#if POKEDEX_PLUS_HGSS == TRUE - CB2_OpenPokedexPlusHGSS(); - return; -#endif + if (POKEDEX_PLUS_HGSS) + { + CB2_OpenPokedexPlusHGSS(); + return; + } switch (gMain.state) { @@ -3944,11 +3945,10 @@ static void HighlightSubmenuScreenSelectBarItem(u8 a, u16 b) u8 DisplayCaughtMonDexPage(u16 dexNum, u32 otId, u32 personality) { u8 taskId = 0; - #if POKEDEX_PLUS_HGSS + if (POKEDEX_PLUS_HGSS) taskId = CreateTask(Task_DisplayCaughtMonDexPageHGSS, 0); - #else + else taskId = CreateTask(Task_DisplayCaughtMonDexPage, 0); - #endif // POKEDEX_PLUS_HGSS gTasks[taskId].tState = 0; gTasks[taskId].tDexNum = dexNum; diff --git a/src/pokedex_plus_hgss.c b/src/pokedex_plus_hgss.c index be5633294e..d96a563665 100644 --- a/src/pokedex_plus_hgss.c +++ b/src/pokedex_plus_hgss.c @@ -47,7 +47,6 @@ #include "constants/rgb.h" #include "constants/songs.h" -#if POKEDEX_PLUS_HGSS == TRUE enum { @@ -117,7 +116,6 @@ enum NAME_YZ, }; - extern const u8 *const gMonFootprintTable[]; extern const u16 gPokedexOrder_Alphabetical[]; extern const u16 gPokedexOrder_Height[]; @@ -125,6 +123,7 @@ extern const u16 gPokedexOrder_Weight[]; extern const struct Evolution gEvolutionTable[][EVOS_PER_MON]; extern const struct PokedexEntry gPokedexEntries[]; +// static .rodata strings static const u8 sText_No000[] = _("{NO}000"); static const u8 sCaughtBall_Gfx[] = INCBIN_U8("graphics/pokedex/caught_ball.4bpp"); @@ -133,6 +132,166 @@ ALIGNED(4) static const u8 sExpandedPlaceholder_PokedexDescription[] = _(""); static const u16 sSizeScreenSilhouette_Pal[] = INCBIN_U16("graphics/pokedex/size_silhouette.gbapal"); static const u8 sText_TenDashes2[] = _("----------"); +static const u8 sText_Stats_Buttons[] = _("{A_BUTTON}TOGGLE {DPAD_UPDOWN}MOVES"); +static const u8 sText_Stats_Buttons_Decapped[] = _("{A_BUTTON}Toggle {DPAD_UPDOWN}Moves"); +static const u8 sText_Stats_HP[] = _("HP"); +static const u8 sText_Stats_Attack[] = _("ATK"); +static const u8 sText_Stats_Defense[] = _("DEF"); +static const u8 sText_Stats_Speed[] = _("SPE"); +static const u8 sText_Stats_SpAttack[] = _("SP.A"); +static const u8 sText_Stats_SpDefense[] = _("SP.D"); +static const u8 sText_Stats_EV_Plus1[] = _("{UP_ARROW_2}"); +static const u8 sText_Stats_EV_Plus2[] = _("{UP_ARROW_2}{UP_ARROW_2}"); +static const u8 sText_Stats_EV_Plus3[] = _("{UP_ARROW_2}{UP_ARROW_2}{UP_ARROW_2}"); +static const u8 sText_Stats_EvStr1Str2[] = _("{STR_VAR_1}{STR_VAR_2}"); +static const u8 sText_Stats_MoveSelectedMax[] = _("{STR_VAR_1} / {STR_VAR_2}"); +static const u8 sText_Stats_MoveLevel[] = _("LVL"); +static const u8 sText_Stats_Gender_0[] = _("♂"); +static const u8 sText_Stats_Gender_12_5[] = _("♀ 1/7 ♂"); //_("♀ 12.5 / 87.5 ♂"); +static const u8 sText_Stats_Gender_25[] = _("♀ 1/3 ♂"); //_("♀ 25 / 75 ♂"); +static const u8 sText_Stats_Gender_50[] = _("♀ 1/1 ♂"); //_("♀ 50 / 50 ♂"); +static const u8 sText_Stats_Gender_75[] = _("♀ 3/1 ♂"); //_("♀ 75 / 25 ♂"); +static const u8 sText_Stats_Gender_87_5[] = _("♀ 7/1 ♂"); +static const u8 sText_Stats_Gender_100[] = _("♀"); +static const u8 sText_Stats_CatchRate[] = _("CATCH{0x5B}: "); +static const u8 sText_Stats_CatchRate_Legend[] = _("LEGENDARY"); +static const u8 sText_Stats_CatchRate_VeryHard[] = _("VERY HARD"); +static const u8 sText_Stats_CatchRate_Difficult[] = _("DIFFICULT"); +static const u8 sText_Stats_CatchRate_Medium[] = _("MEDIUM"); +static const u8 sText_Stats_CatchRate_Relaxed[] = _("RELAXED"); +static const u8 sText_Stats_CatchRate_Easy[] = _("EASY"); +static const u8 sText_Stats_ExpYield[] = _("EXP YIELD: "); +static const u8 sText_Stats_EggCycles[] = _("HATCH STEPS:"); +static const u8 sText_Stats_EggCycles_VeryFast[] = _("{EMOJI_BOLT}{EMOJI_DIZZYEGG}"); +static const u8 sText_Stats_EggCycles_Fast[] = _("{EMOJI_DIZZYEGG}"); +static const u8 sText_Stats_EggCycles_Normal[] = _("{EMOJI_DIZZYEGG}{EMOJI_DIZZYEGG}"); +static const u8 sText_Stats_EggCycles_Slow[] = _("{EMOJI_DIZZYEGG}{EMOJI_DIZZYEGG}{EMOJI_DIZZYEGG}"); +static const u8 sText_Stats_Growthrate[] = _("GROW: "); +static const u8 sText_Stats_Friendship[] = _("FRIENDSHIP:"); +static const u8 sText_Stats_Friendship_BigAnger[] = _("{EMOJI_BIGANGER}"); +static const u8 sText_Stats_Friendship_Neutral[] = _("{EMOJI_NEUTRAL}"); +static const u8 sText_Stats_Friendship_Happy[] = _("{EMOJI_HAPPY}"); +static const u8 sText_Stats_Friendship_BigSmile[] = _("{EMOJI_BIGSMILE}"); +static const u8 sText_Stats_MEDIUM_FAST[] = _("MED. FAST"); +static const u8 sText_Stats_ERRATIC[] = _("ERRATIC"); +static const u8 sText_Stats_FLUCTUATING[] = _("FLUCTUATING"); +static const u8 sText_Stats_MEDIUM_SLOW[] = _("MED. SLOW"); +static const u8 sText_Stats_FAST[] = _("FAST"); +static const u8 sText_Stats_SLOW[] = _("SLOW"); +static const u8 sText_Stats_ContestHeart[] = _("H"); +static const u8 sText_Stats_Minus[] = _("-"); +static const u8 sText_Stats_eggGroup[] = _("EGG G1:"); +static const u8 sText_Stats_eggGroup_Groups[] = _("{STR_VAR_1}/{STR_VAR_2}"); +static const u8 sText_Stats_eggGroup_MONSTER[] = _("MONSTER"); +static const u8 sText_Stats_eggGroup_WATER_1[] = _("WATER {CIRCLE_1}"); +static const u8 sText_Stats_eggGroup_BUG[] = _("BUG"); +static const u8 sText_Stats_eggGroup_FLYING[] = _("FLYING"); +static const u8 sText_Stats_eggGroup_FIELD[] = _("FIELD"); +static const u8 sText_Stats_eggGroup_FAIRY[] = _("FAIRY"); +static const u8 sText_Stats_eggGroup_GRASS[] = _("GRASS"); +static const u8 sText_Stats_eggGroup_HUMAN_LIKE[] = _("HUMANE"); +static const u8 sText_Stats_eggGroup_WATER_3[] = _("WATER {CIRCLE_3}"); +static const u8 sText_Stats_eggGroup_MINERAL[] = _("MINERAL"); +static const u8 sText_Stats_eggGroup_AMORPHOUS[] = _("AMORPHOUS"); +static const u8 sText_Stats_eggGroup_WATER_2[] = _("WATER {CIRCLE_2}"); +static const u8 sText_Stats_eggGroup_DITTO[] = _("DITTO"); +static const u8 sText_Stats_eggGroup_DRAGON[] = _("DRAGON"); +static const u8 sText_Stats_eggGroup_UNDISCOVERED[] = _("---"); +static const u8 sText_Dex_SEEN[] = _("SEEN"); +static const u8 sText_Dex_OWN[] = _("OWN"); + +static const u8 sText_EVO_Buttons[] = _("{DPAD_UPDOWN}EVOs {A_BUTTON}CHECK"); +static const u8 sText_EVO_Buttons_Decapped[] = _("{DPAD_UPDOWN}Evos {A_BUTTON}Check"); +static const u8 sText_EVO_Buttons_PE[] = _("{DPAD_UPDOWN}EVOs {A_BUTTON}CHECK {START_BUTTON}FORMs"); +static const u8 sText_EVO_Buttons_Decapped_PE[] = _("{DPAD_UPDOWN}Evos {A_BUTTON}Check {START_BUTTON}Froms"); +static const u8 sText_EVO_Name[] = _("{STR_VAR_3}:"); +static const u8 sText_EVO_PreEvo[] = _("{STR_VAR_1} evolves from {STR_VAR_2}"); +static const u8 sText_EVO_PreEvo_PE_Mega[] = _("{STR_VAR_1} Mega Evolves with {STR_VAR_2}"); +static const u8 sText_EVO_FRIENDSHIP[] = _("{LV}{UP_ARROW}, high friendship"); +static const u8 sText_EVO_FRIENDSHIP_DAY[] = _("{LV}{UP_ARROW}, high friendship, day"); +static const u8 sText_EVO_FRIENDSHIP_NIGHT[] = _("{LV}{UP_ARROW}, high friendship, night"); +static const u8 sText_EVO_FRIENDSHIP_MOVE_TYPE[] = _("{LV}{UP_ARROW}, high friendship, {STR_VAR_2} move"); +static const u8 sText_EVO_LEVEL[] = _("{LV}{UP_ARROW} to {STR_VAR_2}"); +static const u8 sText_EVO_TRADE[] = _("Trading"); +static const u8 sText_EVO_TRADE_ITEM[] = _("Trading, holding {STR_VAR_2}"); +static const u8 sText_EVO_ITEM[] = _("{STR_VAR_2} is used"); +static const u8 sText_EVO_LEVEL_ATK_GT_DEF[] = _("{LV}{UP_ARROW} to {STR_VAR_2}, Atk > Def"); +static const u8 sText_EVO_LEVEL_ATK_EQ_DEF[] = _("{LV}{UP_ARROW} to {STR_VAR_2}, Atk = Def"); +static const u8 sText_EVO_LEVEL_ATK_LT_DEF[] = _("{LV}{UP_ARROW} to {STR_VAR_2}, Atk < Def"); +static const u8 sText_EVO_LEVEL_SILCOON[] = _("{LV}{UP_ARROW} to {STR_VAR_2}, Silcoon persona"); +static const u8 sText_EVO_LEVEL_CASCOON[] = _("{LV}{UP_ARROW} to {STR_VAR_2}, Cascoon persona"); +static const u8 sText_EVO_LEVEL_NINJASK[] = _("{LV}{UP_ARROW} to {STR_VAR_2}"); +static const u8 sText_EVO_LEVEL_SHEDINJA[] = _("{LV}{UP_ARROW} to {STR_VAR_2}, party<6, 1x POKéBALL"); +static const u8 sText_EVO_BEAUTY[] = _("{LV}{UP_ARROW}, high beauty"); +static const u8 sText_EVO_LEVEL_FEMALE[] = _("{LV}{UP_ARROW} to {STR_VAR_2}, is female"); +static const u8 sText_EVO_LEVEL_MALE[] = _("{LV}{UP_ARROW} to {STR_VAR_2}, is male"); +static const u8 sText_EVO_LEVEL_NIGHT[] = _("{LV}{UP_ARROW} to {STR_VAR_2}, night"); +static const u8 sText_EVO_LEVEL_DAY[] = _("{LV}{UP_ARROW} to {STR_VAR_2}, day"); +static const u8 sText_EVO_LEVEL_DUSK[] = _("{LV}{UP_ARROW} to {STR_VAR_2}, dusk (5-6PM)"); +static const u8 sText_EVO_ITEM_HOLD_DAY[] = _("{LV}{UP_ARROW}, holds {STR_VAR_2}, day"); +static const u8 sText_EVO_ITEM_HOLD_NIGHT[] = _("{LV}{UP_ARROW}, holds {STR_VAR_2}, night"); +static const u8 sText_EVO_MOVE[] = _("{LV}{UP_ARROW}, knows {STR_VAR_2}"); +static const u8 sText_EVO_MAPSEC[] = _("{LV}{UP_ARROW} on {STR_VAR_2}"); +static const u8 sText_EVO_ITEM_MALE[] = _("{STR_VAR_2} used on male"); +static const u8 sText_EVO_ITEM_FEMALE[] = _("{STR_VAR_2} used on female"); +static const u8 sText_EVO_LEVEL_RAIN[] = _("{LV}{UP_ARROW} to {STR_VAR_2} while raining"); +static const u8 sText_EVO_SPECIFIC_MON_IN_PARTY[] = _("{LV}{UP_ARROW} with {STR_VAR_2} in party"); +static const u8 sText_EVO_LEVEL_DARK_TYPE_MON_IN_PARTY[] = _("{LV}{UP_ARROW} with dark type in party"); +static const u8 sText_EVO_TRADE_SPECIFIC_MON[] = _("Traded for {STR_VAR_2}"); +static const u8 sText_EVO_SPECIFIC_MAP[] = _("{LV}{UP_ARROW} on {STR_VAR_2}"); +static const u8 sText_EVO_LEVEL_NATURE_AMPED[] = _("{LV}{UP_ARROW} to {STR_VAR_2}, Amped natures"); +static const u8 sText_EVO_LEVEL_NATURE_LOW_KEY[] = _("{LV}{UP_ARROW} to {STR_VAR_2}, Low Key natures"); +static const u8 sText_EVO_CRITICAL_HITS[] = _("Land {STR_VAR_2} critical hits in\nsingle battle"); +static const u8 sText_EVO_SCRIPT_TRIGGER_DMG[] = _("Takes at least {STR_VAR_2} HP in damage"); +static const u8 sText_EVO_DARK_SCROLL[] = _("ScrllOfDrknss is used"); +static const u8 sText_EVO_WATER_SCROLL[] = _("ScrollOfWatrs is used"); +static const u8 sText_EVO_ITEM_NIGHT[] = _("{STR_VAR_2} is used, night"); +static const u8 sText_EVO_ITEM_DAY[] = _("{STR_VAR_2} is used, day"); +static const u8 sText_EVO_ITEM_HOLD[] = _("{LV}{UP_ARROW}, holds {STR_VAR_2}"); +static const u8 sText_EVO_UNKNOWN[] = _("Method unknown"); +static const u8 sText_EVO_NONE[] = _("{STR_VAR_1} has no evolution."); + +static const u8 sText_FORMS_Buttons_PE[] = _("{A_BUTTON}FORM MODE {START_BUTTON}EVOs"); +static const u8 sText_FORMS_Buttons_Decapped_PE[] = _("{START_BUTTON}Evos"); +static const u8 sText_FORMS_Buttons_Submenu_PE[] = _("{DPAD_NONE}FORMs {A_BUTTON}CHECK {START_BUTTON}EVOs"); +static const u8 sText_FORMS_Buttons_Submenu_Decapped_PE[] = _("{START_BUTTON}Evos"); +static const u8 sText_FORMS_NONE[] = _("{STR_VAR_1} has no alternate forms."); +static const u8 sText_PlusSymbol[] = _("+"); + +// static .rodata graphics + +static const u16 sPokedexPlusHGSS_Default_Pal[] = INCBIN_U16("graphics/pokedex/hgss/palette_default.gbapal"); +static const u16 sPokedexPlusHGSS_National_Pal[] = INCBIN_U16("graphics/pokedex/hgss/palette_national.gbapal"); +static const u16 sPokedexPlusHGSS_MenuSearch_Pal[] = INCBIN_U16("graphics/pokedex/hgss/palette_search_menu.gbapal"); +static const u16 sPokedexPlusHGSS_SearchResults_Pal[] = INCBIN_U16("graphics/pokedex/hgss/palette_search_results.gbapal"); +static const u16 sPokedexPlusHGSS_Default_dark_Pal[] = INCBIN_U16("graphics/pokedex/hgss/palette_default_dark.gbapal"); +static const u16 sPokedexPlusHGSS_National_dark_Pal[] = INCBIN_U16("graphics/pokedex/hgss/palette_national_dark.gbapal"); +static const u16 sPokedexPlusHGSS_MenuSearch_dark_Pal[] = INCBIN_U16("graphics/pokedex/hgss/palette_search_menu_dark.gbapal"); +static const u16 sPokedexPlusHGSS_SearchResults_dark_Pal[] = INCBIN_U16("graphics/pokedex/hgss/palette_search_results_dark.gbapal"); +static const u32 sPokedexPlusHGSS_MenuList_Gfx[] = INCBIN_U32("graphics/pokedex/hgss/tileset_menu_list.4bpp.lz"); +static const u32 sPokedexPlusHGSS_MenuList_DECA_Gfx[] = INCBIN_U32("graphics/pokedex/hgss/tileset_menu_list_DECA.4bpp.lz"); +static const u32 sPokedexPlusHGSS_Interface_Gfx[] = INCBIN_U32("graphics/pokedex/hgss/tileset_interface.4bpp.lz"); +static const u32 sPokedexPlusHGSS_Interface_DECA_Gfx[] = INCBIN_U32("graphics/pokedex/hgss/tileset_interface_DECA.4bpp.lz"); +static const u32 sPokedexPlusHGSS_Menu_1_Gfx[] = INCBIN_U32("graphics/pokedex/hgss/tileset_menu1.4bpp.lz"); +static const u32 sPokedexPlusHGSS_Menu_2_Gfx[] = INCBIN_U32("graphics/pokedex/hgss/tileset_menu2.4bpp.lz"); +static const u32 sPokedexPlusHGSS_Menu_3_Gfx[] = INCBIN_U32("graphics/pokedex/hgss/tileset_menu3.4bpp.lz"); +static const u32 sPokedexPlusHGSS_MenuSearch_Gfx[] = INCBIN_U32("graphics/pokedex/hgss/tileset_menu_search.4bpp.lz"); +static const u32 sPokedexPlusHGSS_MenuSearch_DECA_Gfx[] = INCBIN_U32("graphics/pokedex/hgss/tileset_menu_search_DECA.4bpp.lz"); +static const u32 sPokedexPlusHGSS_StartMenuMain_Tilemap[] = INCBIN_U32("graphics/pokedex/hgss/tilemap_start_menu.bin.lz"); +static const u32 sPokedexPlusHGSS_StartMenuSearchResults_Tilemap[] = INCBIN_U32("graphics/pokedex/hgss/tilemap_start_menu_search_results.bin.lz"); +static const u32 sPokedexPlusHGSS_ScreenSelectBarSubmenu_Tilemap[] = INCBIN_U32("graphics/pokedex/hgss/SelectBar.bin.lz"); +static const u32 sPokedexPlusHGSS_ScreenSelectBarSubmenu_Tilemap_Clear[] = INCBIN_U32("graphics/pokedex/hgss/SelectBar_clear.bin.lz"); +static const u32 sPokedexPlusHGSS_ScreenList_Tilemap[] = INCBIN_U32("graphics/pokedex/hgss/tilemap_list_screen.bin.lz"); +static const u32 sPokedexPlusHGSS_ScreenListUnderlay_Tilemap[] = INCBIN_U32("graphics/pokedex/hgss/tilemap_list_screen_underlay.bin.lz"); +static const u32 sPokedexPlusHGSS_ScreenInfo_Tilemap[] = INCBIN_U32("graphics/pokedex/hgss/tilemap_info_screen.bin.lz"); +static const u32 sPokedexPlusHGSS_ScreenStats_Tilemap[] = INCBIN_U32("graphics/pokedex/hgss/tilemap_stats_screen.bin.lz"); +static const u32 sPokedexPlusHGSS_ScreenEvolution_Tilemap[] = INCBIN_U32("graphics/pokedex/hgss/tilemap_evo_screen.bin.lz"); +static const u32 sPokedexPlusHGSS_ScreenEvolution_Tilemap_PE[] = INCBIN_U32("graphics/pokedex/hgss/tilemap_evo_screen_PE.bin.lz"); +static const u32 sPokedexPlusHGSS_ScreenForms_Tilemap[] = INCBIN_U32("graphics/pokedex/hgss/tilemap_forms_screen.bin.lz"); +static const u32 sPokedexPlusHGSS_ScreenCry_Tilemap[] = INCBIN_U32("graphics/pokedex/hgss/tilemap_cry_screen.bin.lz"); +static const u32 sPokedexPlusHGSS_ScreenSize_Tilemap[] = INCBIN_U32("graphics/pokedex/hgss/tilemap_size_screen.bin.lz"); +static const u32 sPokedexPlusHGSS_ScreenSearchHoenn_Tilemap[] = INCBIN_U32("graphics/pokedex/hgss/tilemap_search_screen_hoenn.bin.lz"); +static const u32 sPokedexPlusHGSS_ScreenSearchNational_Tilemap[] = INCBIN_U32("graphics/pokedex/hgss/tilemap_search_screen_national.bin.lz"); #define SCROLLING_MON_X 146 #define HGSS_DECAPPED FALSE @@ -375,7 +534,6 @@ static void Task_SwitchScreensFromSizeScreen(u8); static void LoadScreenSelectBarMain(u16); static void LoadScreenSelectBarSubmenu(u16); static void HighlightScreenSelectBarItem(u8, u16); -static void HighlightSubmenuScreenSelectBarItem(u8, u16); static void Task_HandleCaughtMonPageInput(u8); static void Task_ExitCaughtMonPage(u8); static void SpriteCB_SlideCaughtMonToCenter(struct Sprite *sprite); @@ -463,6 +621,8 @@ static void Task_ExitFormsScreen(u8 taskId); static u8 ShowSplitIcon(u32 split); //Physical/Special Split from BE static void DestroySplitIcon(void); //Physical/Special Split from BE +static u16 NationalPokedexNumToSpeciesHGSS(u16 nationalNum); + //Physical/Special Split from BE #define TAG_SPLIT_ICONS 30004 @@ -1076,14 +1236,14 @@ static const struct SpriteTemplate sDexListStartMenuCursorSpriteTemplate = static const struct CompressedSpriteSheet sInterfaceSpriteSheet[] = { - {gPokedexPlusHGSS_Interface_Gfx, 0x2000, TAG_DEX_INTERFACE}, - {gPokedexPlusHGSS_Interface_DECA_Gfx, 0x2000, TAG_DEX_INTERFACE}, + {sPokedexPlusHGSS_Interface_Gfx, 0x2000, TAG_DEX_INTERFACE}, + {sPokedexPlusHGSS_Interface_DECA_Gfx, 0x2000, TAG_DEX_INTERFACE}, {0} }; static const struct SpritePalette sInterfaceSpritePalette[] = { - {gPokedexPlusHGSS_Default_Pal, TAG_DEX_INTERFACE}, + {sPokedexPlusHGSS_Default_Pal, TAG_DEX_INTERFACE}, {0} }; @@ -1927,6 +2087,8 @@ static const struct WindowTemplate sSearchMenu_WindowTemplate[] = //************************************ void CB2_OpenPokedexPlusHGSS(void) { + if (!POKEDEX_PLUS_HGSS) return; // prevents the compiler from emitting static .rodata + // if the feature is disabled switch (gMain.state) { case 0: @@ -2048,7 +2210,7 @@ static void CB2_Pokedex(void) UpdatePaletteFade(); } -void Task_OpenPokedexMainPage(u8 taskId) +static void Task_OpenPokedexMainPage(u8 taskId) { sPokedexView->isSearchResults = FALSE; sPokedexView->sEvoScreenData.fromEvoPage = FALSE; @@ -2246,21 +2408,21 @@ static void LoadPokedexBgPalette(bool8 isSearchResults) if (!HGSS_DARK_MODE) { if (isSearchResults == TRUE) - LoadPalette(gPokedexPlusHGSS_SearchResults_Pal + 1, BG_PLTT_ID(0) + 1, PLTT_SIZEOF(6 * 16 - 1)); + LoadPalette(sPokedexPlusHGSS_SearchResults_Pal + 1, BG_PLTT_ID(0) + 1, PLTT_SIZEOF(6 * 16 - 1)); else if (!IsNationalPokedexEnabled()) - LoadPalette(gPokedexPlusHGSS_Default_Pal + 1, BG_PLTT_ID(0) + 1, PLTT_SIZEOF(6 * 16 - 1)); + LoadPalette(sPokedexPlusHGSS_Default_Pal + 1, BG_PLTT_ID(0) + 1, PLTT_SIZEOF(6 * 16 - 1)); else - LoadPalette(gPokedexPlusHGSS_National_Pal + 1, BG_PLTT_ID(0) + 1, PLTT_SIZEOF(6 * 16 - 1)); + LoadPalette(sPokedexPlusHGSS_National_Pal + 1, BG_PLTT_ID(0) + 1, PLTT_SIZEOF(6 * 16 - 1)); LoadPalette(GetOverworldTextboxPalettePtr(), 0xF0, 32); } else { if (isSearchResults == TRUE) - LoadPalette(gPokedexPlusHGSS_SearchResults_dark_Pal + 1, BG_PLTT_ID(0) + 1, PLTT_SIZEOF(6 * 16 - 1)); + LoadPalette(sPokedexPlusHGSS_SearchResults_dark_Pal + 1, BG_PLTT_ID(0) + 1, PLTT_SIZEOF(6 * 16 - 1)); else if (!IsNationalPokedexEnabled()) - LoadPalette(gPokedexPlusHGSS_Default_dark_Pal + 1, BG_PLTT_ID(0) + 1, PLTT_SIZEOF(6 * 16 - 1)); + LoadPalette(sPokedexPlusHGSS_Default_dark_Pal + 1, BG_PLTT_ID(0) + 1, PLTT_SIZEOF(6 * 16 - 1)); else - LoadPalette(gPokedexPlusHGSS_National_dark_Pal + 1, BG_PLTT_ID(0) + 1, PLTT_SIZEOF(6 * 16 - 1)); + LoadPalette(sPokedexPlusHGSS_National_dark_Pal + 1, BG_PLTT_ID(0) + 1, PLTT_SIZEOF(6 * 16 - 1)); LoadPalette(GetOverworldTextboxPalettePtr(), 0xF0, 32); } @@ -2293,15 +2455,15 @@ static bool8 LoadPokedexListPage(u8 page) SetBgTilemapBuffer(1, AllocZeroed(BG_SCREEN_SIZE)); SetBgTilemapBuffer(0, AllocZeroed(BG_SCREEN_SIZE)); if (!HGSS_DECAPPED) - DecompressAndLoadBgGfxUsingHeap(3, gPokedexPlusHGSS_MenuList_Gfx, 0x2000, 0, 0); + DecompressAndLoadBgGfxUsingHeap(3, sPokedexPlusHGSS_MenuList_Gfx, 0x2000, 0, 0); else - DecompressAndLoadBgGfxUsingHeap(3, gPokedexPlusHGSS_MenuList_DECA_Gfx, 0x2000, 0, 0); - CopyToBgTilemapBuffer(1, gPokedexPlusHGSS_ScreenList_Tilemap, 0, 0); - CopyToBgTilemapBuffer(3, gPokedexPlusHGSS_ScreenListUnderlay_Tilemap, 0, 0); + DecompressAndLoadBgGfxUsingHeap(3, sPokedexPlusHGSS_MenuList_DECA_Gfx, 0x2000, 0, 0); + CopyToBgTilemapBuffer(1, sPokedexPlusHGSS_ScreenList_Tilemap, 0, 0); + CopyToBgTilemapBuffer(3, sPokedexPlusHGSS_ScreenListUnderlay_Tilemap, 0, 0); if (page == PAGE_MAIN) - CopyToBgTilemapBuffer(0, gPokedexPlusHGSS_StartMenuMain_Tilemap, 0, 0x280); + CopyToBgTilemapBuffer(0, sPokedexPlusHGSS_StartMenuMain_Tilemap, 0, 0x280); else - CopyToBgTilemapBuffer(0, gPokedexPlusHGSS_StartMenuSearchResults_Tilemap, 0, 0x280); + CopyToBgTilemapBuffer(0, sPokedexPlusHGSS_StartMenuSearchResults_Tilemap, 0, 0x280); ResetPaletteFade(); if (page == PAGE_MAIN) sPokedexView->isSearchResults = FALSE; @@ -3202,7 +3364,7 @@ static void SpriteCB_SeenOwnInfo(struct Sprite *sprite) DestroySprite(sprite); } -void SpriteCB_MoveMonForInfoScreen(struct Sprite *sprite) +static void SpriteCB_MoveMonForInfoScreen(struct Sprite *sprite) { sprite->oam.priority = 0; sprite->oam.affineMode = ST_OAM_AFFINE_OFF; @@ -3648,8 +3810,6 @@ static void Task_LoadInfoScreen(u8 taskId) break; case 1: LoadTilesetTilemapHGSS(INFO_SCREEN); - // DecompressAndLoadBgGfxUsingHeap(3, gPokedexMenu_Gfx, 0x2000, 0, 0); - // CopyToBgTilemapBuffer(3, gPokedexInfoScreen_Tilemap, 0, 0); FillWindowPixelBuffer(WIN_INFO, PIXEL_FILL(0)); PutWindowTilemap(WIN_INFO); PutWindowTilemap(WIN_FOOTPRINT); @@ -3659,7 +3819,6 @@ static void Task_LoadInfoScreen(u8 taskId) break; case 2: LoadScreenSelectBarMain(0xD); - // HighlightScreenSelectBarItem(sPokedexView->selectedScreen, 0xD); LoadPokedexBgPalette(sPokedexView->isSearchResults); gMain.state++; break; @@ -3718,7 +3877,6 @@ static void Task_LoadInfoScreen(u8 taskId) } break; case 9: - // if (!IsCryPlayingOrClearCrySongs()) gMain.state++; break; case 10: @@ -3895,13 +4053,13 @@ static void Task_SwitchScreensFromAreaScreen(u8 taskId) //************************************ static void LoadScreenSelectBarMain(u16 unused) { - CopyToBgTilemapBuffer(1, gPokedexPlusHGSS_ScreenSelectBarSubmenu_Tilemap_Clear, 0, 0); + CopyToBgTilemapBuffer(1, sPokedexPlusHGSS_ScreenSelectBarSubmenu_Tilemap_Clear, 0, 0); CopyBgTilemapBufferToVram(1); } static void LoadScreenSelectBarSubmenu(u16 unused) { - CopyToBgTilemapBuffer(1, gPokedexPlusHGSS_ScreenSelectBarSubmenu_Tilemap, 0, 0); + CopyToBgTilemapBuffer(1, sPokedexPlusHGSS_ScreenSelectBarSubmenu_Tilemap, 0, 0); CopyBgTilemapBufferToVram(1); } @@ -3932,36 +4090,6 @@ static void UNUSED HighlightScreenSelectBarItem(u8 selectedScreen, u16 unused) CopyBgTilemapBufferToVram(1); } -static void UNUSED HighlightSubmenuScreenSelectBarItem(u8 a, u16 b) -{ - u8 i; - u8 j; - u16 *ptr = GetBgTilemapBuffer(1); - - for (i = 0; i < 4; i++) - { - u8 row = i * 7 + 1; - u32 newPalette; - - do - { - if (i == a || i == 3) - newPalette = 0x2000; - else - newPalette = 0x4000; - } while (0); - - for (j = 0; j < 7; j++) - { - ptr[row + j] = (ptr[row + j] % 0x1000) | newPalette; - ptr[row + j + 0x20] = (ptr[row + j + 0x20] % 0x1000) | newPalette; - } - } - CopyBgTilemapBufferToVram(1); -} - - - //************************************ //* * //* CAUGHT MON * @@ -3979,9 +4107,14 @@ static void UNUSED HighlightSubmenuScreenSelectBarItem(u8 a, u16 b) void Task_DisplayCaughtMonDexPageHGSS(u8 taskId) { u8 spriteId; - u16 species = gTasks[taskId].tSpecies; - u16 dexNum = SpeciesToNationalPokedexNum(species); + u16 species; + u16 dexNum; + if (!POKEDEX_PLUS_HGSS) return; // prevents the compiler from emitting static .rodata + // if the feature is disabled + + species = gTasks[taskId].tSpecies; + dexNum = SpeciesToNationalPokedexNum(species); switch (gTasks[taskId].tState) { case 0: @@ -4074,16 +4207,16 @@ static void Task_HandleCaughtMonPageInput(u8 taskId) else if (++gTasks[taskId].tPalTimer & 16) { if (!HGSS_DARK_MODE) - LoadPalette(gPokedexPlusHGSS_Default_Pal + 1, BG_PLTT_ID(3) + 1, PLTT_SIZEOF(7)); + LoadPalette(sPokedexPlusHGSS_Default_Pal + 1, BG_PLTT_ID(3) + 1, PLTT_SIZEOF(7)); else - LoadPalette(gPokedexPlusHGSS_Default_dark_Pal + 1, BG_PLTT_ID(3) + 1, PLTT_SIZEOF(7)); + LoadPalette(sPokedexPlusHGSS_Default_dark_Pal + 1, BG_PLTT_ID(3) + 1, PLTT_SIZEOF(7)); } else { if (!HGSS_DARK_MODE) - LoadPalette(gPokedexPlusHGSS_Default_Pal + 1, BG_PLTT_ID(3) + 1, PLTT_SIZEOF(7)); + LoadPalette(sPokedexPlusHGSS_Default_Pal + 1, BG_PLTT_ID(3) + 1, PLTT_SIZEOF(7)); else - LoadPalette(gPokedexPlusHGSS_Default_dark_Pal + 1, BG_PLTT_ID(3) + 1, PLTT_SIZEOF(7)); + LoadPalette(sPokedexPlusHGSS_Default_dark_Pal + 1, BG_PLTT_ID(3) + 1, PLTT_SIZEOF(7)); } } @@ -4309,8 +4442,6 @@ static void PrintMonInfo(u32 num, u32 value, u32 owned, u32 newEntry) const u8 *category; const u8 *description; - // if (newEntry) - // PrintInfoScreenText(gText_PokedexRegistration, GetStringCenterAlignXOffset(1, gText_PokedexRegistration, 0xF0), 0); if (value == 0) value = NationalToHoennOrder(num); else @@ -4664,7 +4795,7 @@ static UNUSED u32 GetPokedexMonPersonality(u16 species) //* HGSS * //* * //************************************ -u16 NationalPokedexNumToSpeciesHGSS(u16 nationalNum) +static u16 NationalPokedexNumToSpeciesHGSS(u16 nationalNum) { if (!nationalNum) return 0; @@ -4681,45 +4812,45 @@ static void LoadTilesetTilemapHGSS(u8 page) { case INFO_SCREEN: if (!HGSS_DECAPPED) - DecompressAndLoadBgGfxUsingHeap(3, gPokedexPlusHGSS_Menu_1_Gfx, 0x2000, 0, 0); + DecompressAndLoadBgGfxUsingHeap(3, sPokedexPlusHGSS_Menu_1_Gfx, 0x2000, 0, 0); else - DecompressAndLoadBgGfxUsingHeap(3, gPokedexPlusHGSS_Menu_1_Gfx, 0x2000, 0, 0); - CopyToBgTilemapBuffer(3, gPokedexPlusHGSS_ScreenInfo_Tilemap, 0, 0); + DecompressAndLoadBgGfxUsingHeap(3, sPokedexPlusHGSS_Menu_1_Gfx, 0x2000, 0, 0); + CopyToBgTilemapBuffer(3, sPokedexPlusHGSS_ScreenInfo_Tilemap, 0, 0); break; case STATS_SCREEN: if (!HGSS_DECAPPED) - DecompressAndLoadBgGfxUsingHeap(3, gPokedexPlusHGSS_Menu_1_Gfx, 0x2000, 0, 0); + DecompressAndLoadBgGfxUsingHeap(3, sPokedexPlusHGSS_Menu_1_Gfx, 0x2000, 0, 0); else - DecompressAndLoadBgGfxUsingHeap(3, gPokedexPlusHGSS_Menu_1_Gfx, 0x2000, 0, 0); - CopyToBgTilemapBuffer(3, gPokedexPlusHGSS_ScreenStats_Tilemap, 0, 0); + DecompressAndLoadBgGfxUsingHeap(3, sPokedexPlusHGSS_Menu_1_Gfx, 0x2000, 0, 0); + CopyToBgTilemapBuffer(3, sPokedexPlusHGSS_ScreenStats_Tilemap, 0, 0); break; case EVO_SCREEN: if (!HGSS_DECAPPED) - DecompressAndLoadBgGfxUsingHeap(3, gPokedexPlusHGSS_Menu_2_Gfx, 0x2000, 0, 0); + DecompressAndLoadBgGfxUsingHeap(3, sPokedexPlusHGSS_Menu_2_Gfx, 0x2000, 0, 0); else - DecompressAndLoadBgGfxUsingHeap(3, gPokedexPlusHGSS_Menu_2_Gfx, 0x2000, 0, 0); - CopyToBgTilemapBuffer(3, gPokedexPlusHGSS_ScreenEvolution_Tilemap_PE, 0, 0); + DecompressAndLoadBgGfxUsingHeap(3, sPokedexPlusHGSS_Menu_2_Gfx, 0x2000, 0, 0); + CopyToBgTilemapBuffer(3, sPokedexPlusHGSS_ScreenEvolution_Tilemap_PE, 0, 0); break; case FORMS_SCREEN: if (!HGSS_DECAPPED) - DecompressAndLoadBgGfxUsingHeap(3, gPokedexPlusHGSS_Menu_2_Gfx, 0x2000, 0, 0); + DecompressAndLoadBgGfxUsingHeap(3, sPokedexPlusHGSS_Menu_2_Gfx, 0x2000, 0, 0); else - DecompressAndLoadBgGfxUsingHeap(3, gPokedexPlusHGSS_Menu_2_Gfx, 0x2000, 0, 0); - CopyToBgTilemapBuffer(3, gPokedexPlusHGSS_ScreenForms_Tilemap, 0, 0); + DecompressAndLoadBgGfxUsingHeap(3, sPokedexPlusHGSS_Menu_2_Gfx, 0x2000, 0, 0); + CopyToBgTilemapBuffer(3, sPokedexPlusHGSS_ScreenForms_Tilemap, 0, 0); break; case CRY_SCREEN: if (!HGSS_DECAPPED) - DecompressAndLoadBgGfxUsingHeap(3, gPokedexPlusHGSS_Menu_3_Gfx, 0x2000, 0, 0); + DecompressAndLoadBgGfxUsingHeap(3, sPokedexPlusHGSS_Menu_3_Gfx, 0x2000, 0, 0); else - DecompressAndLoadBgGfxUsingHeap(3, gPokedexPlusHGSS_Menu_3_Gfx, 0x2000, 0, 0); - CopyToBgTilemapBuffer(3, gPokedexPlusHGSS_ScreenCry_Tilemap, 0, 0); + DecompressAndLoadBgGfxUsingHeap(3, sPokedexPlusHGSS_Menu_3_Gfx, 0x2000, 0, 0); + CopyToBgTilemapBuffer(3, sPokedexPlusHGSS_ScreenCry_Tilemap, 0, 0); break; case SIZE_SCREEN: if (!HGSS_DECAPPED) - DecompressAndLoadBgGfxUsingHeap(3, gPokedexPlusHGSS_Menu_3_Gfx, 0x2000, 0, 0); + DecompressAndLoadBgGfxUsingHeap(3, sPokedexPlusHGSS_Menu_3_Gfx, 0x2000, 0, 0); else - DecompressAndLoadBgGfxUsingHeap(3, gPokedexPlusHGSS_Menu_3_Gfx, 0x2000, 0, 0); - CopyToBgTilemapBuffer(3, gPokedexPlusHGSS_ScreenSize_Tilemap, 0, 0); + DecompressAndLoadBgGfxUsingHeap(3, sPokedexPlusHGSS_Menu_3_Gfx, 0x2000, 0, 0); + CopyToBgTilemapBuffer(3, sPokedexPlusHGSS_ScreenSize_Tilemap, 0, 0); break; } } @@ -4753,9 +4884,9 @@ static void StatsPage_PrintNavigationButtons(void) u8 x = 9; u8 y = 0; if (!HGSS_DECAPPED) - AddTextPrinterParameterized3(WIN_STATS_NAVIGATION_BUTTONS, 0, x, y, sStatsPageNavigationTextColor, 0, gText_Stats_Buttons); + AddTextPrinterParameterized3(WIN_STATS_NAVIGATION_BUTTONS, 0, x, y, sStatsPageNavigationTextColor, 0, sText_Stats_Buttons); else - AddTextPrinterParameterized3(WIN_STATS_NAVIGATION_BUTTONS, 0, x, y, sStatsPageNavigationTextColor, 0, gText_Stats_Buttons_Decapped); + AddTextPrinterParameterized3(WIN_STATS_NAVIGATION_BUTTONS, 0, x, y, sStatsPageNavigationTextColor, 0, sText_Stats_Buttons_Decapped); PutWindowTilemap(WIN_STATS_NAVIGATION_BUTTONS); CopyWindowToVram(WIN_STATS_NAVIGATION_BUTTONS, 3); @@ -4786,7 +4917,7 @@ static void SaveMonDataInStruct(void) //Count how many different EVs for (i = 0; i<6; i++) { - if (EVs[i] > 0) //HP//Speed//Attack//Special Attack//Defense//Special Defense + if (evs[i] > 0) //HP//Speed//Attack//Special Attack//Defense//Special Defense differentEVs++; } @@ -4799,12 +4930,12 @@ static void SaveMonDataInStruct(void) sPokedexView->sPokemonStats.baseDefense = gSpeciesInfo[species].baseDefense; sPokedexView->sPokemonStats.baseSpDefense = gSpeciesInfo[species].baseSpDefense; sPokedexView->sPokemonStats.differentEVs = differentEVs; - sPokedexView->sPokemonStats.evYield_HP = EVs[0]; - sPokedexView->sPokemonStats.evYield_Speed = EVs[1]; - sPokedexView->sPokemonStats.evYield_Attack = EVs[2]; - sPokedexView->sPokemonStats.evYield_SpAttack = EVs[3]; - sPokedexView->sPokemonStats.evYield_Defense = EVs[4]; - sPokedexView->sPokemonStats.evYield_SpDefense = EVs[5]; + sPokedexView->sPokemonStats.evYield_HP = evs[0]; + sPokedexView->sPokemonStats.evYield_Speed = evs[1]; + sPokedexView->sPokemonStats.evYield_Attack = evs[2]; + sPokedexView->sPokemonStats.evYield_SpAttack = evs[3]; + sPokedexView->sPokemonStats.evYield_Defense = evs[4]; + sPokedexView->sPokemonStats.evYield_SpDefense = evs[5]; sPokedexView->sPokemonStats.catchRate = gSpeciesInfo[species].catchRate; sPokedexView->sPokemonStats.growthRate = gSpeciesInfo[species].growthRate; sPokedexView->sPokemonStats.eggGroup1 = gSpeciesInfo[species].eggGroups[0]; @@ -4898,7 +5029,7 @@ static void Task_LoadStatsScreen(u8 taskId) PrintStatsScreen_Moves_Bottom(taskId); if (!sPokedexListItem->owned) LoadPalette(gPlttBufferUnfaded + 1, 0x31, 0x1E); - StatsPage_PrintNavigationButtons(); //gText_Stats_Buttons + StatsPage_PrintNavigationButtons(); //sText_Stats_Buttons gMain.state++; break; case 7: @@ -5145,7 +5276,7 @@ static void PrintStatsScreen_Moves_Top(u8 taskId) //Moves selected from move max ConvertIntToDecimalStringN(gStringVar1, (selected+1), STR_CONV_MODE_RIGHT_ALIGN, 3); ConvertIntToDecimalStringN(gStringVar2, movesTotal, STR_CONV_MODE_RIGHT_ALIGN, 3); - StringExpandPlaceholders(gStringVar1, gText_Stats_MoveSelectedMax); + StringExpandPlaceholders(gStringVar1, sText_Stats_MoveSelectedMax); PrintStatsScreenTextSmallWhite(WIN_STATS_MOVES_TOP, gStringVar1, moves_x-1, moves_y+1); //Move name @@ -5175,7 +5306,7 @@ static void PrintStatsScreen_Moves_Top(u8 taskId) { level = gLevelUpLearnsets[species][(selected-numEggMoves)].level; ConvertIntToDecimalStringN(gStringVar1, level, STR_CONV_MODE_LEFT_ALIGN, 3); //Move learn lvl - PrintStatsScreenTextSmall(WIN_STATS_MOVES_TOP, gText_Stats_MoveLevel, moves_x + 113, moves_y + 3); //Level text + PrintStatsScreenTextSmall(WIN_STATS_MOVES_TOP, sText_Stats_MoveLevel, moves_x + 113, moves_y + 3); //Level text PrintStatsScreenTextSmall(WIN_STATS_MOVES_TOP, gStringVar1, moves_x + 113, moves_y + 14); //Print level item = ITEM_RARE_CANDY; } @@ -5285,7 +5416,7 @@ static void PrintStatsScreen_Moves_Bottom(u8 taskId) if (contest_effectValue != 0xFF) contest_appeal = contest_effectValue / 10; ConvertIntToDecimalStringN(gStringVar1, contest_appeal, STR_CONV_MODE_RIGHT_ALIGN, 1); - StringCopy(gStringVar2, gText_PlusSymbol); + StringCopy(gStringVar2, sText_PlusSymbol); StringAppend(gStringVar2, gStringVar1); PrintStatsScreenTextSmall(WIN_STATS_MOVES_BOTTOM, gStringVar2, moves_x + 45, moves_y); @@ -5294,7 +5425,7 @@ static void PrintStatsScreen_Moves_Bottom(u8 taskId) if (contest_effectValue != 0xFF) contest_jam = contest_effectValue / 10; ConvertIntToDecimalStringN(gStringVar1, contest_jam, STR_CONV_MODE_RIGHT_ALIGN, 1); - StringCopy(gStringVar2, gText_Stats_Minus); + StringCopy(gStringVar2, sText_Stats_Minus); StringAppend(gStringVar2, gStringVar1); PrintStatsScreenTextSmall(WIN_STATS_MOVES_BOTTOM, gStringVar2, moves_x + 119, moves_y); } @@ -5326,25 +5457,25 @@ static void PrintStatsScreen_NameGender(u8 taskId, u32 num, u32 value) switch (sPokedexView->sPokemonStats.genderRatio) { case 0: - PrintStatsScreenTextSmall(WIN_STATS_NAME_GENDER, gText_Stats_Gender_0, gender_x, gender_y); + PrintStatsScreenTextSmall(WIN_STATS_NAME_GENDER, sText_Stats_Gender_0, gender_x, gender_y); break; case 31: - PrintStatsScreenTextSmall(WIN_STATS_NAME_GENDER, gText_Stats_Gender_12_5, gender_x, gender_y); + PrintStatsScreenTextSmall(WIN_STATS_NAME_GENDER, sText_Stats_Gender_12_5, gender_x, gender_y); break; case 63: - PrintStatsScreenTextSmall(WIN_STATS_NAME_GENDER, gText_Stats_Gender_25, gender_x, gender_y); + PrintStatsScreenTextSmall(WIN_STATS_NAME_GENDER, sText_Stats_Gender_25, gender_x, gender_y); break; case 127: - PrintStatsScreenTextSmall(WIN_STATS_NAME_GENDER, gText_Stats_Gender_50, gender_x, gender_y); + PrintStatsScreenTextSmall(WIN_STATS_NAME_GENDER, sText_Stats_Gender_50, gender_x, gender_y); break; case 191: - PrintStatsScreenTextSmall(WIN_STATS_NAME_GENDER, gText_Stats_Gender_75, gender_x, gender_y); + PrintStatsScreenTextSmall(WIN_STATS_NAME_GENDER, sText_Stats_Gender_75, gender_x, gender_y); break; case 223: - PrintStatsScreenTextSmall(WIN_STATS_NAME_GENDER, gText_Stats_Gender_87_5, gender_x, gender_y); + PrintStatsScreenTextSmall(WIN_STATS_NAME_GENDER, sText_Stats_Gender_87_5, gender_x, gender_y); break; case 254: - PrintStatsScreenTextSmall(WIN_STATS_NAME_GENDER, gText_Stats_Gender_100, gender_x, gender_y); + PrintStatsScreenTextSmall(WIN_STATS_NAME_GENDER, sText_Stats_Gender_100, gender_x, gender_y); break; default: PrintStatsScreenTextSmall(WIN_STATS_NAME_GENDER, gText_ThreeDashes, gender_x, gender_y); @@ -5373,13 +5504,13 @@ static u8* PrintMonStatsToggle_EV_Arrows(u8 *dest, u8 value) switch (value) { case 1: - StringCopy(dest, gText_Stats_EV_Plus1); + StringCopy(dest, sText_Stats_EV_Plus1); break; case 2: - StringCopy(dest, gText_Stats_EV_Plus2); + StringCopy(dest, sText_Stats_EV_Plus2); break; case 3: - StringCopy(dest, gText_Stats_EV_Plus3); + StringCopy(dest, sText_Stats_EV_Plus3); break; } return dest; @@ -5406,29 +5537,29 @@ static void PrintStatsScreen_Left(u8 taskId) //Base stats if (gTasks[taskId].data[5] == 0) { - PrintStatsScreenTextSmall(WIN_STATS_LEFT, gText_Stats_HP, base_x, base_y + base_y_offset*base_i); + PrintStatsScreenTextSmall(WIN_STATS_LEFT, sText_Stats_HP, base_x, base_y + base_y_offset*base_i); ConvertIntToDecimalStringN(strBase, sPokedexView->sPokemonStats.baseHP, STR_CONV_MODE_RIGHT_ALIGN, 3); PrintStatsScreenTextSmall(WIN_STATS_LEFT, strBase, base_x+base_x_first_row, base_y + base_y_offset*base_i); - PrintStatsScreenTextSmall(WIN_STATS_LEFT, gText_Stats_Speed, base_x+base_x_second_row, base_y + base_y_offset*base_i); + PrintStatsScreenTextSmall(WIN_STATS_LEFT, sText_Stats_Speed, base_x+base_x_second_row, base_y + base_y_offset*base_i); ConvertIntToDecimalStringN(strBase, sPokedexView->sPokemonStats.baseSpeed, STR_CONV_MODE_RIGHT_ALIGN, 3); PrintStatsScreenTextSmall(WIN_STATS_LEFT, strBase, base_x+base_x_offset, base_y + base_y_offset*base_i); base_i++; - PrintStatsScreenTextSmall(WIN_STATS_LEFT, gText_Stats_Attack, base_x, base_y + base_y_offset*base_i); + PrintStatsScreenTextSmall(WIN_STATS_LEFT, sText_Stats_Attack, base_x, base_y + base_y_offset*base_i); ConvertIntToDecimalStringN(strBase, sPokedexView->sPokemonStats.baseAttack, STR_CONV_MODE_RIGHT_ALIGN, 3); PrintStatsScreenTextSmall(WIN_STATS_LEFT, strBase, base_x+base_x_first_row, base_y + base_y_offset*base_i); - PrintStatsScreenTextSmall(WIN_STATS_LEFT, gText_Stats_SpAttack, base_x+base_x_second_row, base_y + base_y_offset*base_i); + PrintStatsScreenTextSmall(WIN_STATS_LEFT, sText_Stats_SpAttack, base_x+base_x_second_row, base_y + base_y_offset*base_i); ConvertIntToDecimalStringN(strBase, sPokedexView->sPokemonStats.baseSpAttack, STR_CONV_MODE_RIGHT_ALIGN, 3); PrintStatsScreenTextSmall(WIN_STATS_LEFT, strBase, base_x+base_x_offset, base_y + base_y_offset*base_i); base_i++; - PrintStatsScreenTextSmall(WIN_STATS_LEFT, gText_Stats_Defense, base_x, base_y + base_y_offset*base_i); + PrintStatsScreenTextSmall(WIN_STATS_LEFT, sText_Stats_Defense, base_x, base_y + base_y_offset*base_i); ConvertIntToDecimalStringN(strBase, sPokedexView->sPokemonStats.baseDefense, STR_CONV_MODE_RIGHT_ALIGN, 3); PrintStatsScreenTextSmall(WIN_STATS_LEFT, strBase, base_x+base_x_first_row, base_y + base_y_offset*base_i); - PrintStatsScreenTextSmall(WIN_STATS_LEFT, gText_Stats_SpDefense, base_x+base_x_second_row, base_y + base_y_offset*base_i); + PrintStatsScreenTextSmall(WIN_STATS_LEFT, sText_Stats_SpDefense, base_x+base_x_second_row, base_y + base_y_offset*base_i); ConvertIntToDecimalStringN(strBase, sPokedexView->sPokemonStats.baseSpDefense, STR_CONV_MODE_RIGHT_ALIGN, 3); PrintStatsScreenTextSmall(WIN_STATS_LEFT, strBase, base_x+base_x_offset, base_y + base_y_offset*base_i); base_i++; @@ -5445,9 +5576,9 @@ static void PrintStatsScreen_Left(u8 taskId) differentEVs++; column = PrintMonStatsToggle_DifferentEVsColumn(differentEVs); base_i = PrintMonStatsToggle_DifferentEVsRow(differentEVs); - StringCopy(gStringVar1, gText_Stats_HP); + StringCopy(gStringVar1, sText_Stats_HP); PrintMonStatsToggle_EV_Arrows(gStringVar2, EVs[0]); - StringExpandPlaceholders(gStringVar3, gText_Stats_EvStr1Str2); + StringExpandPlaceholders(gStringVar3, sText_Stats_EvStr1Str2); PrintStatsScreenTextSmall(WIN_STATS_LEFT, gStringVar3, base_x + x_offset_column*column, base_y + base_y_offset*base_i); } //Speed @@ -5456,9 +5587,9 @@ static void PrintStatsScreen_Left(u8 taskId) differentEVs++; column = PrintMonStatsToggle_DifferentEVsColumn(differentEVs); base_i = PrintMonStatsToggle_DifferentEVsRow(differentEVs); - StringCopy(gStringVar1, gText_Stats_Speed); + StringCopy(gStringVar1, sText_Stats_Speed); PrintMonStatsToggle_EV_Arrows(gStringVar2, EVs[1]); - StringExpandPlaceholders(gStringVar3, gText_Stats_EvStr1Str2); + StringExpandPlaceholders(gStringVar3, sText_Stats_EvStr1Str2); PrintStatsScreenTextSmall(WIN_STATS_LEFT, gStringVar3, base_x + x_offset_column*column, base_y + base_y_offset*base_i); } //Attack @@ -5467,9 +5598,9 @@ static void PrintStatsScreen_Left(u8 taskId) differentEVs++; column = PrintMonStatsToggle_DifferentEVsColumn(differentEVs); base_i = PrintMonStatsToggle_DifferentEVsRow(differentEVs); - StringCopy(gStringVar1, gText_Stats_Attack); + StringCopy(gStringVar1, sText_Stats_Attack); PrintMonStatsToggle_EV_Arrows(gStringVar2, EVs[2]); - StringExpandPlaceholders(gStringVar3, gText_Stats_EvStr1Str2); + StringExpandPlaceholders(gStringVar3, sText_Stats_EvStr1Str2); PrintStatsScreenTextSmall(WIN_STATS_LEFT, gStringVar3, base_x + x_offset_column*column, base_y + base_y_offset*base_i); } //Special Attack @@ -5478,9 +5609,9 @@ static void PrintStatsScreen_Left(u8 taskId) differentEVs++; column = PrintMonStatsToggle_DifferentEVsColumn(differentEVs); base_i = PrintMonStatsToggle_DifferentEVsRow(differentEVs); - StringCopy(gStringVar1, gText_Stats_SpAttack); + StringCopy(gStringVar1, sText_Stats_SpAttack); PrintMonStatsToggle_EV_Arrows(gStringVar2, EVs[3]); - StringExpandPlaceholders(gStringVar3, gText_Stats_EvStr1Str2); + StringExpandPlaceholders(gStringVar3, sText_Stats_EvStr1Str2); PrintStatsScreenTextSmall(WIN_STATS_LEFT, gStringVar3, base_x + x_offset_column*column, base_y + base_y_offset*base_i); } //Defense @@ -5489,9 +5620,9 @@ static void PrintStatsScreen_Left(u8 taskId) differentEVs++; column = PrintMonStatsToggle_DifferentEVsColumn(differentEVs); base_i = PrintMonStatsToggle_DifferentEVsRow(differentEVs); - StringCopy(gStringVar1, gText_Stats_Defense); + StringCopy(gStringVar1, sText_Stats_Defense); PrintMonStatsToggle_EV_Arrows(gStringVar2, EVs[4]); - StringExpandPlaceholders(gStringVar3, gText_Stats_EvStr1Str2); + StringExpandPlaceholders(gStringVar3, sText_Stats_EvStr1Str2); PrintStatsScreenTextSmall(WIN_STATS_LEFT, gStringVar3, base_x + x_offset_column*column, base_y + base_y_offset*base_i); } //Special Defense @@ -5500,9 +5631,9 @@ static void PrintStatsScreen_Left(u8 taskId) differentEVs++; column = PrintMonStatsToggle_DifferentEVsColumn(differentEVs); base_i = PrintMonStatsToggle_DifferentEVsRow(differentEVs); - StringCopy(gStringVar1, gText_Stats_SpDefense); + StringCopy(gStringVar1, sText_Stats_SpDefense); PrintMonStatsToggle_EV_Arrows(gStringVar2, EVs[5]); - StringExpandPlaceholders(gStringVar3, gText_Stats_EvStr1Str2); + StringExpandPlaceholders(gStringVar3, sText_Stats_EvStr1Str2); PrintStatsScreenTextSmall(WIN_STATS_LEFT, gStringVar3, base_x + x_offset_column*column, base_y + base_y_offset*base_i); } } @@ -5512,54 +5643,54 @@ static void PrintStatsScreen_Left(u8 taskId) //HP if (EVs[0] > 0) { - StringCopy(gStringVar1, gText_Stats_HP); + StringCopy(gStringVar1, sText_Stats_HP); PrintMonStatsToggle_EV_Arrows(gStringVar2, EVs[0]); - StringExpandPlaceholders(gStringVar3, gText_Stats_EvStr1Str2); + StringExpandPlaceholders(gStringVar3, sText_Stats_EvStr1Str2); PrintStatsScreenTextSmall(WIN_STATS_LEFT, gStringVar3, base_x + 29*column, base_y + base_y_offset*base_i); column++; } //Speed if (EVs[1] > 0) { - StringCopy(gStringVar1, gText_Stats_Speed); + StringCopy(gStringVar1, sText_Stats_Speed); PrintMonStatsToggle_EV_Arrows(gStringVar2, EVs[1]); - StringExpandPlaceholders(gStringVar3, gText_Stats_EvStr1Str2); + StringExpandPlaceholders(gStringVar3, sText_Stats_EvStr1Str2); PrintStatsScreenTextSmall(WIN_STATS_LEFT, gStringVar3, base_x + 29*column, base_y + base_y_offset*base_i); column++; } //Attack if (EVs[2] > 0) { - StringCopy(gStringVar1, gText_Stats_Attack); + StringCopy(gStringVar1, sText_Stats_Attack); PrintMonStatsToggle_EV_Arrows(gStringVar2, EVs[2]); - StringExpandPlaceholders(gStringVar3, gText_Stats_EvStr1Str2); + StringExpandPlaceholders(gStringVar3, sText_Stats_EvStr1Str2); PrintStatsScreenTextSmall(WIN_STATS_LEFT, gStringVar3, base_x + 29*column, base_y + base_y_offset*base_i); column++; } //Special Attack if (EVs[3] > 0) { - StringCopy(gStringVar1, gText_Stats_SpAttack); + StringCopy(gStringVar1, sText_Stats_SpAttack); PrintMonStatsToggle_EV_Arrows(gStringVar2, EVs[3]); - StringExpandPlaceholders(gStringVar3, gText_Stats_EvStr1Str2); + StringExpandPlaceholders(gStringVar3, sText_Stats_EvStr1Str2); PrintStatsScreenTextSmall(WIN_STATS_LEFT, gStringVar3, base_x + 29*column, base_y + base_y_offset*base_i); column++; } //Defense if (EVs[4] > 0) { - StringCopy(gStringVar1, gText_Stats_Defense); + StringCopy(gStringVar1, sText_Stats_Defense); PrintMonStatsToggle_EV_Arrows(gStringVar2, EVs[4]); - StringExpandPlaceholders(gStringVar3, gText_Stats_EvStr1Str2); + StringExpandPlaceholders(gStringVar3, sText_Stats_EvStr1Str2); PrintStatsScreenTextSmall(WIN_STATS_LEFT, gStringVar3, base_x + 29*column, base_y + base_y_offset*base_i); column++; } //Special Defense if (EVs[5] > 0) { - StringCopy(gStringVar1, gText_Stats_SpDefense); + StringCopy(gStringVar1, sText_Stats_SpDefense); PrintMonStatsToggle_EV_Arrows(gStringVar2, EVs[5]); - StringExpandPlaceholders(gStringVar3, gText_Stats_EvStr1Str2); + StringExpandPlaceholders(gStringVar3, sText_Stats_EvStr1Str2); PrintStatsScreenTextSmall(WIN_STATS_LEFT, gStringVar3, base_x + 29*column, base_y + base_y_offset*base_i); column++; } @@ -5574,42 +5705,42 @@ static void PrintStatsScreen_Left(u8 taskId) u32 growthRate = sPokedexView->sPokemonStats.growthRate; //Catch rate - PrintStatsScreenTextSmall(WIN_STATS_LEFT, gText_Stats_CatchRate, base_x, base_y + base_y_offset*base_i); + PrintStatsScreenTextSmall(WIN_STATS_LEFT, sText_Stats_CatchRate, base_x, base_y + base_y_offset*base_i); if (catchRate <= 10) - PrintStatsScreenTextSmall(WIN_STATS_LEFT, gText_Stats_CatchRate_Legend, base_x + x_offset_column, base_y + base_y_offset*base_i); + PrintStatsScreenTextSmall(WIN_STATS_LEFT, sText_Stats_CatchRate_Legend, base_x + x_offset_column, base_y + base_y_offset*base_i); else if (catchRate <= 70) - PrintStatsScreenTextSmall(WIN_STATS_LEFT, gText_Stats_CatchRate_VeryHard, base_x + x_offset_column, base_y + base_y_offset*base_i); + PrintStatsScreenTextSmall(WIN_STATS_LEFT, sText_Stats_CatchRate_VeryHard, base_x + x_offset_column, base_y + base_y_offset*base_i); else if (catchRate <= 100) - PrintStatsScreenTextSmall(WIN_STATS_LEFT, gText_Stats_CatchRate_Difficult, base_x + x_offset_column, base_y + base_y_offset*base_i); + PrintStatsScreenTextSmall(WIN_STATS_LEFT, sText_Stats_CatchRate_Difficult, base_x + x_offset_column, base_y + base_y_offset*base_i); else if (catchRate <= 150) - PrintStatsScreenTextSmall(WIN_STATS_LEFT, gText_Stats_CatchRate_Medium, base_x + x_offset_column, base_y + base_y_offset*base_i); + PrintStatsScreenTextSmall(WIN_STATS_LEFT, sText_Stats_CatchRate_Medium, base_x + x_offset_column, base_y + base_y_offset*base_i); else if (catchRate <= 200) - PrintStatsScreenTextSmall(WIN_STATS_LEFT, gText_Stats_CatchRate_Relaxed, base_x + x_offset_column, base_y + base_y_offset*base_i); + PrintStatsScreenTextSmall(WIN_STATS_LEFT, sText_Stats_CatchRate_Relaxed, base_x + x_offset_column, base_y + base_y_offset*base_i); else - PrintStatsScreenTextSmall(WIN_STATS_LEFT, gText_Stats_CatchRate_Easy, base_x + x_offset_column, base_y + base_y_offset*base_i); + PrintStatsScreenTextSmall(WIN_STATS_LEFT, sText_Stats_CatchRate_Easy, base_x + x_offset_column, base_y + base_y_offset*base_i); base_i++; //Growth rate - PrintStatsScreenTextSmall(WIN_STATS_LEFT, gText_Stats_Growthrate, base_x, base_y + base_y_offset*base_i); + PrintStatsScreenTextSmall(WIN_STATS_LEFT, sText_Stats_Growthrate, base_x, base_y + base_y_offset*base_i); switch (growthRate) { case GROWTH_MEDIUM_FAST: - StringCopy(strEV, gText_Stats_MEDIUM_FAST); + StringCopy(strEV, sText_Stats_MEDIUM_FAST); break; case GROWTH_ERRATIC: - StringCopy(strEV, gText_Stats_ERRATIC); + StringCopy(strEV, sText_Stats_ERRATIC); break; case GROWTH_FLUCTUATING: - StringCopy(strEV, gText_Stats_FLUCTUATING); + StringCopy(strEV, sText_Stats_FLUCTUATING); break; case GROWTH_MEDIUM_SLOW: - StringCopy(strEV, gText_Stats_MEDIUM_SLOW); + StringCopy(strEV, sText_Stats_MEDIUM_SLOW); break; case GROWTH_FAST: - StringCopy(strEV, gText_Stats_FAST); + StringCopy(strEV, sText_Stats_FAST); break; case GROWTH_SLOW: - StringCopy(strEV, gText_Stats_SLOW); + StringCopy(strEV, sText_Stats_SLOW); break; default: break; @@ -5620,29 +5751,29 @@ static void PrintStatsScreen_Left(u8 taskId) else { //Exp Yield - PrintStatsScreenTextSmall(WIN_STATS_LEFT, gText_Stats_ExpYield, base_x, base_y + base_y_offset*base_i); + PrintStatsScreenTextSmall(WIN_STATS_LEFT, sText_Stats_ExpYield, base_x, base_y + base_y_offset*base_i); ConvertIntToDecimalStringN(gStringVar1, sPokedexView->sPokemonStats.expYield, STR_CONV_MODE_RIGHT_ALIGN, 3); PrintStatsScreenTextSmall(WIN_STATS_LEFT, gStringVar1, base_x + base_x_offset, base_y + base_y_offset*base_i); base_i++; //Friendship - PrintStatsScreenTextSmall(WIN_STATS_LEFT, gText_Stats_Friendship, base_x, base_y + base_y_offset*base_i); + PrintStatsScreenTextSmall(WIN_STATS_LEFT, sText_Stats_Friendship, base_x, base_y + base_y_offset*base_i); switch (sPokedexView->sPokemonStats.friendship) { case 35: - StringCopy(strEV, gText_Stats_Friendship_BigAnger); + StringCopy(strEV, sText_Stats_Friendship_BigAnger); break; case 70: - StringCopy(strEV, gText_Stats_Friendship_Neutral); + StringCopy(strEV, sText_Stats_Friendship_Neutral); break; case 90: - StringCopy(strEV, gText_Stats_Friendship_Happy); + StringCopy(strEV, sText_Stats_Friendship_Happy); break; case 100: - StringCopy(strEV, gText_Stats_Friendship_Happy); + StringCopy(strEV, sText_Stats_Friendship_Happy); break; case 140: - StringCopy(strEV, gText_Stats_Friendship_BigSmile); + StringCopy(strEV, sText_Stats_Friendship_BigSmile); break; default: ConvertIntToDecimalStringN(strEV, sPokedexView->sPokemonStats.friendship, STR_CONV_MODE_RIGHT_ALIGN, 3); @@ -5655,30 +5786,30 @@ static void PrintStatsScreen_Left(u8 taskId) //Egg cycles if (sPokedexView->sPokemonStats.eggGroup1 == EGG_GROUP_UNDISCOVERED || sPokedexView->sPokemonStats.eggGroup2 == EGG_GROUP_UNDISCOVERED) //Species without eggs (legendaries etc) { - PrintStatsScreenTextSmall(WIN_STATS_LEFT, gText_Stats_EggCycles, base_x, base_y + base_y_offset*base_i); + PrintStatsScreenTextSmall(WIN_STATS_LEFT, sText_Stats_EggCycles, base_x, base_y + base_y_offset*base_i); PrintStatsScreenTextSmall(WIN_STATS_LEFT, gText_ThreeDashes, 78, base_y + base_y_offset*base_i); } else { - PrintStatsScreenTextSmall(WIN_STATS_LEFT, gText_Stats_EggCycles, base_x, base_y + base_y_offset*base_i); + PrintStatsScreenTextSmall(WIN_STATS_LEFT, sText_Stats_EggCycles, base_x, base_y + base_y_offset*base_i); if (sPokedexView->sPokemonStats.eggCycles <= 10) { - StringCopy(strEV, gText_Stats_EggCycles_VeryFast); + StringCopy(strEV, sText_Stats_EggCycles_VeryFast); align_x = 76; } else if (sPokedexView->sPokemonStats.eggCycles <= 20) { - StringCopy(strEV, gText_Stats_EggCycles_Fast); + StringCopy(strEV, sText_Stats_EggCycles_Fast); align_x = 85; } else if (sPokedexView->sPokemonStats.eggCycles <= 30) { - StringCopy(strEV, gText_Stats_EggCycles_Normal); + StringCopy(strEV, sText_Stats_EggCycles_Normal); align_x = 76; } else { - StringCopy(strEV, gText_Stats_EggCycles_Slow); + StringCopy(strEV, sText_Stats_EggCycles_Slow); align_x = 67; } PrintStatsScreenTextSmall(WIN_STATS_LEFT, strEV, align_x, base_y + base_y_offset*base_i); @@ -5689,49 +5820,49 @@ static void PrintStatsScreen_Left(u8 taskId) switch (sPokedexView->sPokemonStats.eggGroup1) { case EGG_GROUP_MONSTER : - StringCopy(gStringVar1, gText_Stats_eggGroup_MONSTER); + StringCopy(gStringVar1, sText_Stats_eggGroup_MONSTER); break; case EGG_GROUP_WATER_1 : - StringCopy(gStringVar1, gText_Stats_eggGroup_WATER_1); + StringCopy(gStringVar1, sText_Stats_eggGroup_WATER_1); break; case EGG_GROUP_BUG : - StringCopy(gStringVar1, gText_Stats_eggGroup_BUG); + StringCopy(gStringVar1, sText_Stats_eggGroup_BUG); break; case EGG_GROUP_FLYING : - StringCopy(gStringVar1, gText_Stats_eggGroup_FLYING); + StringCopy(gStringVar1, sText_Stats_eggGroup_FLYING); break; case EGG_GROUP_FIELD : - StringCopy(gStringVar1, gText_Stats_eggGroup_FIELD); + StringCopy(gStringVar1, sText_Stats_eggGroup_FIELD); break; case EGG_GROUP_FAIRY : - StringCopy(gStringVar1, gText_Stats_eggGroup_FAIRY); + StringCopy(gStringVar1, sText_Stats_eggGroup_FAIRY); break; case EGG_GROUP_GRASS : - StringCopy(gStringVar1, gText_Stats_eggGroup_GRASS); + StringCopy(gStringVar1, sText_Stats_eggGroup_GRASS); break; case EGG_GROUP_HUMAN_LIKE : - StringCopy(gStringVar1, gText_Stats_eggGroup_HUMAN_LIKE); + StringCopy(gStringVar1, sText_Stats_eggGroup_HUMAN_LIKE); break; case EGG_GROUP_WATER_3 : - StringCopy(gStringVar1, gText_Stats_eggGroup_WATER_3); + StringCopy(gStringVar1, sText_Stats_eggGroup_WATER_3); break; case EGG_GROUP_MINERAL : - StringCopy(gStringVar1, gText_Stats_eggGroup_MINERAL); + StringCopy(gStringVar1, sText_Stats_eggGroup_MINERAL); break; case EGG_GROUP_AMORPHOUS : - StringCopy(gStringVar1, gText_Stats_eggGroup_AMORPHOUS); + StringCopy(gStringVar1, sText_Stats_eggGroup_AMORPHOUS); break; case EGG_GROUP_WATER_2 : - StringCopy(gStringVar1, gText_Stats_eggGroup_WATER_2); + StringCopy(gStringVar1, sText_Stats_eggGroup_WATER_2); break; case EGG_GROUP_DITTO : - StringCopy(gStringVar1, gText_Stats_eggGroup_DITTO); + StringCopy(gStringVar1, sText_Stats_eggGroup_DITTO); break; case EGG_GROUP_DRAGON : - StringCopy(gStringVar1, gText_Stats_eggGroup_DRAGON); + StringCopy(gStringVar1, sText_Stats_eggGroup_DRAGON); break; case EGG_GROUP_UNDISCOVERED: - StringCopy(gStringVar1, gText_Stats_eggGroup_UNDISCOVERED); + StringCopy(gStringVar1, sText_Stats_eggGroup_UNDISCOVERED); break; } //Egg group 2 @@ -5740,52 +5871,52 @@ static void PrintStatsScreen_Left(u8 taskId) switch (sPokedexView->sPokemonStats.eggGroup2) { case EGG_GROUP_MONSTER : - StringCopy(gStringVar2, gText_Stats_eggGroup_MONSTER); + StringCopy(gStringVar2, sText_Stats_eggGroup_MONSTER); break; case EGG_GROUP_WATER_1 : - StringCopy(gStringVar2, gText_Stats_eggGroup_WATER_1); + StringCopy(gStringVar2, sText_Stats_eggGroup_WATER_1); break; case EGG_GROUP_BUG : - StringCopy(gStringVar2, gText_Stats_eggGroup_BUG); + StringCopy(gStringVar2, sText_Stats_eggGroup_BUG); break; case EGG_GROUP_FLYING : - StringCopy(gStringVar2, gText_Stats_eggGroup_FLYING); + StringCopy(gStringVar2, sText_Stats_eggGroup_FLYING); break; case EGG_GROUP_FIELD : - StringCopy(gStringVar2, gText_Stats_eggGroup_FIELD); + StringCopy(gStringVar2, sText_Stats_eggGroup_FIELD); break; case EGG_GROUP_FAIRY : - StringCopy(gStringVar2, gText_Stats_eggGroup_FAIRY); + StringCopy(gStringVar2, sText_Stats_eggGroup_FAIRY); break; case EGG_GROUP_GRASS : - StringCopy(gStringVar2, gText_Stats_eggGroup_GRASS); + StringCopy(gStringVar2, sText_Stats_eggGroup_GRASS); break; case EGG_GROUP_HUMAN_LIKE : - StringCopy(gStringVar2, gText_Stats_eggGroup_HUMAN_LIKE); + StringCopy(gStringVar2, sText_Stats_eggGroup_HUMAN_LIKE); break; case EGG_GROUP_WATER_3 : - StringCopy(gStringVar2, gText_Stats_eggGroup_WATER_3); + StringCopy(gStringVar2, sText_Stats_eggGroup_WATER_3); break; case EGG_GROUP_MINERAL : - StringCopy(gStringVar2, gText_Stats_eggGroup_MINERAL); + StringCopy(gStringVar2, sText_Stats_eggGroup_MINERAL); break; case EGG_GROUP_AMORPHOUS : - StringCopy(gStringVar2, gText_Stats_eggGroup_AMORPHOUS); + StringCopy(gStringVar2, sText_Stats_eggGroup_AMORPHOUS); break; case EGG_GROUP_WATER_2 : - StringCopy(gStringVar2, gText_Stats_eggGroup_WATER_2); + StringCopy(gStringVar2, sText_Stats_eggGroup_WATER_2); break; case EGG_GROUP_DITTO : - StringCopy(gStringVar2, gText_Stats_eggGroup_DITTO); + StringCopy(gStringVar2, sText_Stats_eggGroup_DITTO); break; case EGG_GROUP_DRAGON : - StringCopy(gStringVar2, gText_Stats_eggGroup_DRAGON); + StringCopy(gStringVar2, sText_Stats_eggGroup_DRAGON); break; case EGG_GROUP_UNDISCOVERED: - StringCopy(gStringVar2, gText_Stats_eggGroup_UNDISCOVERED); + StringCopy(gStringVar2, sText_Stats_eggGroup_UNDISCOVERED); break; } - StringExpandPlaceholders(gStringVar3, gText_Stats_eggGroup_Groups); + StringExpandPlaceholders(gStringVar3, sText_Stats_eggGroup_Groups); align_x = GetStringRightAlignXOffset(0, gStringVar3, total_x); PrintStatsScreenTextSmall(WIN_STATS_LEFT, gStringVar3, base_x, base_y + base_y_offset*base_i); } @@ -5898,29 +6029,28 @@ static void EvoFormsPage_PrintNavigationButtons(void) if (sPokedexView->selectedScreen == EVO_SCREEN) { if (!HGSS_DECAPPED) - AddTextPrinterParameterized3(WIN_NAVIGATION_BUTTONS, 0, x+9, y, sStatsPageNavigationTextColor, 0, gText_EVO_Buttons_PE); + AddTextPrinterParameterized3(WIN_NAVIGATION_BUTTONS, 0, x+9, y, sStatsPageNavigationTextColor, 0, sText_EVO_Buttons_PE); else - AddTextPrinterParameterized3(WIN_NAVIGATION_BUTTONS, 0, x+9, y, sStatsPageNavigationTextColor, 0, gText_EVO_Buttons_Decapped_PE); + AddTextPrinterParameterized3(WIN_NAVIGATION_BUTTONS, 0, x+9, y, sStatsPageNavigationTextColor, 0, sText_EVO_Buttons_Decapped_PE); } else if (sPokedexView->selectedScreen == FORMS_SCREEN) { if (sPokedexView->sFormScreenData.inSubmenu) { if (!HGSS_DECAPPED) - AddTextPrinterParameterized3(WIN_NAVIGATION_BUTTONS, 0, x, y, sStatsPageNavigationTextColor, 0, gText_FORMS_Buttons_Submenu_PE); + AddTextPrinterParameterized3(WIN_NAVIGATION_BUTTONS, 0, x, y, sStatsPageNavigationTextColor, 0, sText_FORMS_Buttons_Submenu_PE); else - AddTextPrinterParameterized3(WIN_NAVIGATION_BUTTONS, 0, x, y, sStatsPageNavigationTextColor, 0, gText_FORMS_Buttons_Submenu_Decapped_PE); + AddTextPrinterParameterized3(WIN_NAVIGATION_BUTTONS, 0, x, y, sStatsPageNavigationTextColor, 0, sText_FORMS_Buttons_Submenu_Decapped_PE); } else { if (!HGSS_DECAPPED) - AddTextPrinterParameterized3(WIN_NAVIGATION_BUTTONS, 0, x, y, sStatsPageNavigationTextColor, 0, gText_FORMS_Buttons_PE); + AddTextPrinterParameterized3(WIN_NAVIGATION_BUTTONS, 0, x, y, sStatsPageNavigationTextColor, 0, sText_FORMS_Buttons_PE); else - AddTextPrinterParameterized3(WIN_NAVIGATION_BUTTONS, 0, x, y, sStatsPageNavigationTextColor, 0, gText_FORMS_Buttons_Decapped_PE); + AddTextPrinterParameterized3(WIN_NAVIGATION_BUTTONS, 0, x, y, sStatsPageNavigationTextColor, 0, sText_FORMS_Buttons_Decapped_PE); } } - // DrawKeypadIcon(WIN_NAVIGATION_BUTTONS, 10, 5, 0); //(u8 windowId, u8 keypadIconId, u16 x, u16 y) PutWindowTilemap(WIN_NAVIGATION_BUTTONS); CopyWindowToVram(WIN_NAVIGATION_BUTTONS, 3); } @@ -6169,7 +6299,7 @@ static void HandleTargetSpeciesPrint(u8 taskId, u16 targetSpecies, u16 previousT StringCopy(gStringVar3, gSpeciesNames[targetSpecies]); //evolution mon name else StringCopy(gStringVar3, gText_ThreeQuestionMarks); //show questionmarks instead of name - StringExpandPlaceholders(gStringVar3, gText_EVO_Name); //evolution mon name + StringExpandPlaceholders(gStringVar3, sText_EVO_Name); //evolution mon name PrintInfoScreenTextSmall(gStringVar3, base_x, base_y + base_y_offset*base_i); //evolution mon name //Print mon icon in the top row @@ -6214,7 +6344,7 @@ static void HandlePreEvolutionSpeciesPrint(u8 taskId, u16 preSpecies, u16 specie StringCopy(gStringVar1, gSpeciesNames[species]); //evolution mon name if (sPokedexView->sEvoScreenData.isMega) - StringExpandPlaceholders(gStringVar3, gText_EVO_PreEvo_PE_Mega); + StringExpandPlaceholders(gStringVar3, sText_EVO_PreEvo_PE_Mega); else { @@ -6223,7 +6353,7 @@ static void HandlePreEvolutionSpeciesPrint(u8 taskId, u16 preSpecies, u16 specie else StringCopy(gStringVar2, gText_ThreeQuestionMarks); //show questionmarks instead of name - StringExpandPlaceholders(gStringVar3, gText_EVO_PreEvo); //evolution mon name + StringExpandPlaceholders(gStringVar3, sText_EVO_PreEvo); //evolution mon name } @@ -6371,7 +6501,7 @@ static u8 PrintEvolutionTargetSpeciesAndMethod(u8 taskId, u16 species, u8 depth, //If there are no evolutions print text if (times == 0 && depth == 0) { - StringExpandPlaceholders(gStringVar4, gText_EVO_NONE); + StringExpandPlaceholders(gStringVar4, sText_EVO_NONE); PrintInfoScreenTextSmall(gStringVar4, base_x-7-7, base_y + base_y_offset*depth_i); } @@ -6391,178 +6521,178 @@ static u8 PrintEvolutionTargetSpeciesAndMethod(u8 taskId, u16 species, u8 depth, { case EVO_FRIENDSHIP: ConvertIntToDecimalStringN(gStringVar2, 220, STR_CONV_MODE_LEADING_ZEROS, 3); //friendship value - StringExpandPlaceholders(gStringVar4, gText_EVO_FRIENDSHIP ); + StringExpandPlaceholders(gStringVar4, sText_EVO_FRIENDSHIP ); break; case EVO_FRIENDSHIP_DAY: - StringExpandPlaceholders(gStringVar4, gText_EVO_FRIENDSHIP_DAY ); + StringExpandPlaceholders(gStringVar4, sText_EVO_FRIENDSHIP_DAY ); break; case EVO_FRIENDSHIP_NIGHT: - StringExpandPlaceholders(gStringVar4, gText_EVO_FRIENDSHIP_NIGHT ); + StringExpandPlaceholders(gStringVar4, sText_EVO_FRIENDSHIP_NIGHT ); break; case EVO_LEVEL: ConvertIntToDecimalStringN(gStringVar2, gEvolutionTable[species][i].param, STR_CONV_MODE_LEADING_ZEROS, EVO_SCREEN_LVL_DIGITS); //level - StringExpandPlaceholders(gStringVar4, gText_EVO_LEVEL ); + StringExpandPlaceholders(gStringVar4, sText_EVO_LEVEL ); break; case EVO_TRADE: - StringExpandPlaceholders(gStringVar4, gText_EVO_TRADE ); + StringExpandPlaceholders(gStringVar4, sText_EVO_TRADE ); break; case EVO_TRADE_ITEM: item = gEvolutionTable[species][i].param; //item CopyItemName(item, gStringVar2); //item - StringExpandPlaceholders(gStringVar4, gText_EVO_TRADE_ITEM ); + StringExpandPlaceholders(gStringVar4, sText_EVO_TRADE_ITEM ); break; case EVO_ITEM: item = gEvolutionTable[species][i].param; CopyItemName(item, gStringVar2); - StringExpandPlaceholders(gStringVar4, gText_EVO_ITEM ); + StringExpandPlaceholders(gStringVar4, sText_EVO_ITEM ); break; case EVO_LEVEL_ATK_GT_DEF: ConvertIntToDecimalStringN(gStringVar2, gEvolutionTable[species][i].param, STR_CONV_MODE_LEADING_ZEROS, EVO_SCREEN_LVL_DIGITS); //level - StringExpandPlaceholders(gStringVar4, gText_EVO_LEVEL_ATK_GT_DEF ); + StringExpandPlaceholders(gStringVar4, sText_EVO_LEVEL_ATK_GT_DEF ); break; case EVO_LEVEL_ATK_EQ_DEF: ConvertIntToDecimalStringN(gStringVar2, gEvolutionTable[species][i].param, STR_CONV_MODE_LEADING_ZEROS, EVO_SCREEN_LVL_DIGITS); //level - StringExpandPlaceholders(gStringVar4, gText_EVO_LEVEL_ATK_EQ_DEF ); + StringExpandPlaceholders(gStringVar4, sText_EVO_LEVEL_ATK_EQ_DEF ); break; case EVO_LEVEL_ATK_LT_DEF: ConvertIntToDecimalStringN(gStringVar2, gEvolutionTable[species][i].param, STR_CONV_MODE_LEADING_ZEROS, EVO_SCREEN_LVL_DIGITS); //level - StringExpandPlaceholders(gStringVar4, gText_EVO_LEVEL_ATK_LT_DEF ); + StringExpandPlaceholders(gStringVar4, sText_EVO_LEVEL_ATK_LT_DEF ); break; case EVO_LEVEL_SILCOON: ConvertIntToDecimalStringN(gStringVar2, gEvolutionTable[species][i].param, STR_CONV_MODE_LEADING_ZEROS, EVO_SCREEN_LVL_DIGITS); //level - StringExpandPlaceholders(gStringVar4, gText_EVO_LEVEL_SILCOON ); + StringExpandPlaceholders(gStringVar4, sText_EVO_LEVEL_SILCOON ); break; case EVO_LEVEL_CASCOON: ConvertIntToDecimalStringN(gStringVar2, gEvolutionTable[species][i].param, STR_CONV_MODE_LEADING_ZEROS, EVO_SCREEN_LVL_DIGITS); //level - StringExpandPlaceholders(gStringVar4, gText_EVO_LEVEL_CASCOON ); + StringExpandPlaceholders(gStringVar4, sText_EVO_LEVEL_CASCOON ); break; case EVO_LEVEL_NINJASK: ConvertIntToDecimalStringN(gStringVar2, gEvolutionTable[species][i].param, STR_CONV_MODE_LEADING_ZEROS, EVO_SCREEN_LVL_DIGITS); //level - StringExpandPlaceholders(gStringVar4, gText_EVO_LEVEL_NINJASK ); + StringExpandPlaceholders(gStringVar4, sText_EVO_LEVEL_NINJASK ); break; case EVO_LEVEL_SHEDINJA: ConvertIntToDecimalStringN(gStringVar2, gEvolutionTable[species][i].param, STR_CONV_MODE_LEADING_ZEROS, EVO_SCREEN_LVL_DIGITS); //level - StringExpandPlaceholders(gStringVar4, gText_EVO_LEVEL_SHEDINJA ); + StringExpandPlaceholders(gStringVar4, sText_EVO_LEVEL_SHEDINJA ); break; case EVO_BEAUTY: ConvertIntToDecimalStringN(gStringVar2, gEvolutionTable[species][i].param, STR_CONV_MODE_LEADING_ZEROS, 3); //beauty - StringExpandPlaceholders(gStringVar4, gText_EVO_BEAUTY ); + StringExpandPlaceholders(gStringVar4, sText_EVO_BEAUTY ); break; case EVO_LEVEL_FEMALE: ConvertIntToDecimalStringN(gStringVar2, gEvolutionTable[species][i].param, STR_CONV_MODE_LEADING_ZEROS, EVO_SCREEN_LVL_DIGITS); //level - StringExpandPlaceholders(gStringVar4, gText_EVO_LEVEL_FEMALE ); + StringExpandPlaceholders(gStringVar4, sText_EVO_LEVEL_FEMALE ); break; case EVO_LEVEL_MALE: ConvertIntToDecimalStringN(gStringVar2, gEvolutionTable[species][i].param, STR_CONV_MODE_LEADING_ZEROS, EVO_SCREEN_LVL_DIGITS); //level - StringExpandPlaceholders(gStringVar4, gText_EVO_LEVEL_MALE ); + StringExpandPlaceholders(gStringVar4, sText_EVO_LEVEL_MALE ); break; case EVO_LEVEL_NIGHT: ConvertIntToDecimalStringN(gStringVar2, gEvolutionTable[species][i].param, STR_CONV_MODE_LEADING_ZEROS, EVO_SCREEN_LVL_DIGITS); //level - StringExpandPlaceholders(gStringVar4, gText_EVO_LEVEL_NIGHT ); + StringExpandPlaceholders(gStringVar4, sText_EVO_LEVEL_NIGHT ); break; case EVO_LEVEL_DAY: ConvertIntToDecimalStringN(gStringVar2, gEvolutionTable[species][i].param, STR_CONV_MODE_LEADING_ZEROS, EVO_SCREEN_LVL_DIGITS); //level - StringExpandPlaceholders(gStringVar4, gText_EVO_LEVEL_DAY ); + StringExpandPlaceholders(gStringVar4, sText_EVO_LEVEL_DAY ); break; case EVO_LEVEL_DUSK: ConvertIntToDecimalStringN(gStringVar2, gEvolutionTable[species][i].param, STR_CONV_MODE_LEADING_ZEROS, EVO_SCREEN_LVL_DIGITS); //level - StringExpandPlaceholders(gStringVar4, gText_EVO_LEVEL_DUSK ); + StringExpandPlaceholders(gStringVar4, sText_EVO_LEVEL_DUSK ); break; case EVO_ITEM_HOLD_DAY: item = gEvolutionTable[species][i].param; //item CopyItemName(item, gStringVar2); //item - StringExpandPlaceholders(gStringVar4, gText_EVO_ITEM_HOLD_DAY ); + StringExpandPlaceholders(gStringVar4, sText_EVO_ITEM_HOLD_DAY ); break; case EVO_ITEM_HOLD_NIGHT: item = gEvolutionTable[species][i].param; //item CopyItemName(item, gStringVar2); //item - StringExpandPlaceholders(gStringVar4, gText_EVO_ITEM_HOLD_NIGHT ); + StringExpandPlaceholders(gStringVar4, sText_EVO_ITEM_HOLD_NIGHT ); break; case EVO_MOVE: StringCopy(gStringVar2, gMoveNames[gEvolutionTable[species][i].param]); - StringExpandPlaceholders(gStringVar4, gText_EVO_MOVE ); + StringExpandPlaceholders(gStringVar4, sText_EVO_MOVE ); break; case EVO_FRIENDSHIP_MOVE_TYPE: StringCopy(gStringVar2, gTypeNames[gEvolutionTable[species][i].param]); - StringExpandPlaceholders(gStringVar4, gText_EVO_FRIENDSHIP_MOVE_TYPE ); + StringExpandPlaceholders(gStringVar4, sText_EVO_FRIENDSHIP_MOVE_TYPE ); break; case EVO_MAPSEC: StringCopy(gStringVar2, gRegionMapEntries[gEvolutionTable[species][i].param].name); - StringExpandPlaceholders(gStringVar4, gText_EVO_MAPSEC ); + StringExpandPlaceholders(gStringVar4, sText_EVO_MAPSEC ); break; case EVO_ITEM_MALE: item = gEvolutionTable[species][i].param; //item CopyItemName(item, gStringVar2); //item - StringExpandPlaceholders(gStringVar4, gText_EVO_ITEM_MALE ); + StringExpandPlaceholders(gStringVar4, sText_EVO_ITEM_MALE ); break; case EVO_ITEM_FEMALE: item = gEvolutionTable[species][i].param; //item CopyItemName(item, gStringVar2); //item - StringExpandPlaceholders(gStringVar4, gText_EVO_ITEM_FEMALE ); + StringExpandPlaceholders(gStringVar4, sText_EVO_ITEM_FEMALE ); break; case EVO_LEVEL_RAIN: //if (j == WEATHER_RAIN || j == WEATHER_RAIN_THUNDERSTORM || j == WEATHER_DOWNPOUR) - StringExpandPlaceholders(gStringVar4, gText_EVO_LEVEL_RAIN ); + StringExpandPlaceholders(gStringVar4, sText_EVO_LEVEL_RAIN ); break; case EVO_SPECIFIC_MON_IN_PARTY: StringCopy(gStringVar2, gSpeciesNames[gEvolutionTable[species][i].param]); //mon name - StringExpandPlaceholders(gStringVar4, gText_EVO_SPECIFIC_MON_IN_PARTY ); + StringExpandPlaceholders(gStringVar4, sText_EVO_SPECIFIC_MON_IN_PARTY ); break; case EVO_LEVEL_DARK_TYPE_MON_IN_PARTY: - StringExpandPlaceholders(gStringVar4, gText_EVO_LEVEL_DARK_TYPE_MON_IN_PARTY ); + StringExpandPlaceholders(gStringVar4, sText_EVO_LEVEL_DARK_TYPE_MON_IN_PARTY ); break; case EVO_TRADE_SPECIFIC_MON: StringCopy(gStringVar2, gSpeciesNames[gEvolutionTable[species][i].param]); //mon name - StringExpandPlaceholders(gStringVar4, gText_EVO_TRADE_SPECIFIC_MON ); + StringExpandPlaceholders(gStringVar4, sText_EVO_TRADE_SPECIFIC_MON ); break; case EVO_SPECIFIC_MAP: mapHeader = Overworld_GetMapHeaderByGroupAndId(gEvolutionTable[species][i].param >> 8, gEvolutionTable[species][i].param & 0xFF); GetMapName(gStringVar2, mapHeader->regionMapSectionId, 0); - StringExpandPlaceholders(gStringVar4, gText_EVO_SPECIFIC_MAP ); + StringExpandPlaceholders(gStringVar4, sText_EVO_SPECIFIC_MAP ); break; case EVO_LEVEL_NATURE_AMPED: ConvertIntToDecimalStringN(gStringVar2, gEvolutionTable[species][i].param, STR_CONV_MODE_LEADING_ZEROS, EVO_SCREEN_LVL_DIGITS); //level - StringExpandPlaceholders(gStringVar4, gText_EVO_LEVEL_NATURE_AMPED); + StringExpandPlaceholders(gStringVar4, sText_EVO_LEVEL_NATURE_AMPED); break; case EVO_LEVEL_NATURE_LOW_KEY: ConvertIntToDecimalStringN(gStringVar2, gEvolutionTable[species][i].param, STR_CONV_MODE_LEADING_ZEROS, EVO_SCREEN_LVL_DIGITS); //level - StringExpandPlaceholders(gStringVar4, gText_EVO_LEVEL_NATURE_LOW_KEY); + StringExpandPlaceholders(gStringVar4, sText_EVO_LEVEL_NATURE_LOW_KEY); break; case EVO_CRITICAL_HITS: ConvertIntToDecimalStringN(gStringVar2, gEvolutionTable[species][i].param, STR_CONV_MODE_LEADING_ZEROS, EVO_SCREEN_CRITS_DIGITS); //crits - StringExpandPlaceholders(gStringVar4, gText_EVO_CRITICAL_HITS); + StringExpandPlaceholders(gStringVar4, sText_EVO_CRITICAL_HITS); break; case EVO_SCRIPT_TRIGGER_DMG: ConvertIntToDecimalStringN(gStringVar2, gEvolutionTable[species][i].param, STR_CONV_MODE_LEADING_ZEROS, EVO_SCREEN_DMG_DIGITS); //damage - StringExpandPlaceholders(gStringVar4, gText_EVO_SCRIPT_TRIGGER_DMG); + StringExpandPlaceholders(gStringVar4, sText_EVO_SCRIPT_TRIGGER_DMG); break; case EVO_DARK_SCROLL: item = gEvolutionTable[species][i].param; CopyItemName(item, gStringVar2); - StringExpandPlaceholders(gStringVar4, gText_EVO_DARK_SCROLL ); + StringExpandPlaceholders(gStringVar4, sText_EVO_DARK_SCROLL ); break; case EVO_WATER_SCROLL: item = gEvolutionTable[species][i].param; CopyItemName(item, gStringVar2); - StringExpandPlaceholders(gStringVar4, gText_EVO_WATER_SCROLL ); + StringExpandPlaceholders(gStringVar4, sText_EVO_WATER_SCROLL ); break; case EVO_ITEM_NIGHT: item = gEvolutionTable[species][i].param; CopyItemName(item, gStringVar2); - StringExpandPlaceholders(gStringVar4, gText_EVO_ITEM_NIGHT ); + StringExpandPlaceholders(gStringVar4, sText_EVO_ITEM_NIGHT ); break; case EVO_ITEM_DAY: item = gEvolutionTable[species][i].param; CopyItemName(item, gStringVar2); - StringExpandPlaceholders(gStringVar4, gText_EVO_ITEM_DAY ); + StringExpandPlaceholders(gStringVar4, sText_EVO_ITEM_DAY ); break; case EVO_ITEM_HOLD: item = gEvolutionTable[species][i].param; CopyItemName(item, gStringVar2); - StringExpandPlaceholders(gStringVar4, gText_EVO_ITEM_HOLD ); + StringExpandPlaceholders(gStringVar4, sText_EVO_ITEM_HOLD ); break; default: - StringExpandPlaceholders(gStringVar4, gText_EVO_UNKNOWN ); + StringExpandPlaceholders(gStringVar4, sText_EVO_UNKNOWN ); break; }//Switch end PrintInfoScreenTextSmall(gStringVar4, base_x + depth_x*depth+base_x_offset, base_y + base_y_offset*base_i); //Print actual instructions @@ -6861,13 +6991,6 @@ static void PrintForms(u8 taskId, u16 species) gTasks[taskId].data[4+times] = CreateMonIcon(speciesForm, SpriteCB_MonIcon, 52 + 34*(times-1), 31, 4, 0); //Create pokemon sprite else if (times < 14) gTasks[taskId].data[4+times] = CreateMonIcon(speciesForm, SpriteCB_MonIcon, 18 + 34*(times-7), 70 - y_offset_icons, 4, 0); //Create pokemon sprite - // Can't print any more forms, because we're going out of bounds for task data. - /* - else if (times < 21) - gTasks[taskId].data[4+times] = CreateMonIcon(speciesForm, SpriteCB_MonIcon, 18 + 34*(times-14), 104 - y_offset_icons, 4, 0); //Create pokemon sprite - else - gTasks[taskId].data[4+times] = CreateMonIcon(speciesForm, SpriteCB_MonIcon, 18 + 34*(times-21), 138 - y_offset_icons, 4, 0); //Create pokemon sprite - */ gSprites[gTasks[taskId].data[4+times]].oam.priority = 0; } } @@ -6877,7 +7000,7 @@ static void PrintForms(u8 taskId, u16 species) //If there are no forms print text if (times == 0) { - StringExpandPlaceholders(gStringVar4, gText_FORMS_NONE); + StringExpandPlaceholders(gStringVar4, sText_FORMS_NONE); PrintInfoScreenTextSmall(gStringVar4, base_x, base_y + base_y_offset*times); } } @@ -7699,17 +7822,17 @@ static void Task_LoadSearchMenu(u8 taskId) DeactivateAllTextPrinters(); PutWindowTilemap(0); if (!HGSS_DECAPPED) - DecompressAndLoadBgGfxUsingHeap(3, gPokedexPlusHGSS_MenuSearch_Gfx, 0x2000, 0, 0); + DecompressAndLoadBgGfxUsingHeap(3, sPokedexPlusHGSS_MenuSearch_Gfx, 0x2000, 0, 0); else - DecompressAndLoadBgGfxUsingHeap(3, gPokedexPlusHGSS_MenuSearch_DECA_Gfx, 0x2000, 0, 0); + DecompressAndLoadBgGfxUsingHeap(3, sPokedexPlusHGSS_MenuSearch_DECA_Gfx, 0x2000, 0, 0); if (!IsNationalPokedexEnabled()) - CopyToBgTilemapBuffer(3, gPokedexPlusHGSS_ScreenSearchHoenn_Tilemap, 0, 0); + CopyToBgTilemapBuffer(3, sPokedexPlusHGSS_ScreenSearchHoenn_Tilemap, 0, 0); else - CopyToBgTilemapBuffer(3, gPokedexPlusHGSS_ScreenSearchNational_Tilemap, 0, 0); + CopyToBgTilemapBuffer(3, sPokedexPlusHGSS_ScreenSearchNational_Tilemap, 0, 0); if (!HGSS_DARK_MODE) - LoadPalette(gPokedexPlusHGSS_MenuSearch_Pal + 1, BG_PLTT_ID(0) + 1, PLTT_SIZEOF(4 * 16 - 1)); + LoadPalette(sPokedexPlusHGSS_MenuSearch_Pal + 1, BG_PLTT_ID(0) + 1, PLTT_SIZEOF(4 * 16 - 1)); else - LoadPalette(gPokedexPlusHGSS_MenuSearch_dark_Pal + 1, BG_PLTT_ID(0) + 1, PLTT_SIZEOF(4 * 16 - 1)); + LoadPalette(sPokedexPlusHGSS_MenuSearch_dark_Pal + 1, BG_PLTT_ID(0) + 1, PLTT_SIZEOF(4 * 16 - 1)); gMain.state = 1; } break; @@ -8516,5 +8639,3 @@ static void ClearSearchParameterBoxText(void) { ClearSearchMenuRect(144, 8, 96, 96); } - -#endif diff --git a/src/secret_base.c b/src/secret_base.c index c5f21e252d..a662acb36e 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -1733,6 +1733,9 @@ void ReceiveSecretBasesData(void *secretBases, size_t recordSize, u8 linkIdx) struct SecretBaseRecordMixer mixers[3]; u16 i; + if (linkIdx > 3) + return; + if (FlagGet(FLAG_RECEIVED_SECRET_POWER)) { switch (GetLinkPlayerCount()) diff --git a/src/strings.c b/src/strings.c index 52b6fefc02..1197c54cd9 100644 --- a/src/strings.c +++ b/src/strings.c @@ -207,7 +207,6 @@ const u8 gText_MaleSymbol[] = _("♂"); const u8 gText_FemaleSymbol[] = _("♀"); const u8 gText_LevelSymbol[] = _("{LV}"); const u8 gText_NumberClear01[] = _("{NO}{CLEAR 0x01}"); -const u8 gText_PlusSymbol[] = _("+"); // Unused const u8 gText_RightArrow[] = _("{RIGHT_ARROW}"); // Unused const u8 gText_IDNumber2[] = _("{ID}{NO}"); const u8 gText_Space[] = _(" "); @@ -1834,130 +1833,3 @@ const u8 gText_Berries[] = _("BERRIES"); const u8 gText_ExpShareOn[] = _("The Exp. Share has been turned on.{PAUSE_UNTIL_PRESS}"); const u8 gText_ExpShareOff[] = _("The Exp. Share has been turned off.{PAUSE_UNTIL_PRESS}"); const u8 gText_BasePointsResetToZero[] = _("{STR_VAR_1}'s base points\nwere all reset to zero!{PAUSE_UNTIL_PRESS}"); -//HGSS_Ui PokedexPlus -#if POKEDEX_PLUS_HGSS == TRUE -const u8 gText_Stats_Buttons[] = _("{A_BUTTON}TOGGLE {DPAD_UPDOWN}MOVES"); -const u8 gText_Stats_Buttons_Decapped[] = _("{A_BUTTON}Toggle {DPAD_UPDOWN}Moves"); -const u8 gText_Stats_HP[] = _("HP"); -const u8 gText_Stats_Attack[] = _("ATK"); -const u8 gText_Stats_Defense[] = _("DEF"); -const u8 gText_Stats_Speed[] = _("SPE"); -const u8 gText_Stats_SpAttack[] = _("SP.A"); -const u8 gText_Stats_SpDefense[] = _("SP.D"); -const u8 gText_Stats_EV_Plus1[] = _("{UP_ARROW_2}"); -const u8 gText_Stats_EV_Plus2[] = _("{UP_ARROW_2}{UP_ARROW_2}"); -const u8 gText_Stats_EV_Plus3[] = _("{UP_ARROW_2}{UP_ARROW_2}{UP_ARROW_2}"); -const u8 gText_Stats_EvStr1Str2[] = _("{STR_VAR_1}{STR_VAR_2}"); -const u8 gText_Stats_MoveSelectedMax[] = _("{STR_VAR_1} / {STR_VAR_2}"); -const u8 gText_Stats_MoveLevel[] = _("LVL"); -const u8 gText_Stats_Gender_0[] = _("♂"); -const u8 gText_Stats_Gender_12_5[] = _("♀ 1/7 ♂"); //_("♀ 12.5 / 87.5 ♂"); -const u8 gText_Stats_Gender_25[] = _("♀ 1/3 ♂"); //_("♀ 25 / 75 ♂"); -const u8 gText_Stats_Gender_50[] = _("♀ 1/1 ♂"); //_("♀ 50 / 50 ♂"); -const u8 gText_Stats_Gender_75[] = _("♀ 3/1 ♂"); //_("♀ 75 / 25 ♂"); -const u8 gText_Stats_Gender_87_5[] = _("♀ 7/1 ♂"); -const u8 gText_Stats_Gender_100[] = _("♀"); -const u8 gText_Stats_CatchRate[] = _("CATCH{0x5B}: "); -const u8 gText_Stats_CatchRate_Legend[] = _("LEGENDARY"); -const u8 gText_Stats_CatchRate_VeryHard[] = _("VERY HARD"); -const u8 gText_Stats_CatchRate_Difficult[] = _("DIFFICULT"); -const u8 gText_Stats_CatchRate_Medium[] = _("MEDIUM"); -const u8 gText_Stats_CatchRate_Relaxed[] = _("RELAXED"); -const u8 gText_Stats_CatchRate_Easy[] = _("EASY"); -const u8 gText_Stats_ExpYield[] = _("EXP YIELD: "); -const u8 gText_Stats_EggCycles[] = _("HATCH STEPS:"); -const u8 gText_Stats_EggCycles_VeryFast[] = _("{EMOJI_BOLT}{EMOJI_DIZZYEGG}"); -const u8 gText_Stats_EggCycles_Fast[] = _("{EMOJI_DIZZYEGG}"); -const u8 gText_Stats_EggCycles_Normal[] = _("{EMOJI_DIZZYEGG}{EMOJI_DIZZYEGG}"); -const u8 gText_Stats_EggCycles_Slow[] = _("{EMOJI_DIZZYEGG}{EMOJI_DIZZYEGG}{EMOJI_DIZZYEGG}"); -const u8 gText_Stats_Growthrate[] = _("GROW: "); -const u8 gText_Stats_Friendship[] = _("FRIENDSHIP:"); -const u8 gText_Stats_Friendship_BigAnger[] = _("{EMOJI_BIGANGER}"); -const u8 gText_Stats_Friendship_Neutral[] = _("{EMOJI_NEUTRAL}"); -const u8 gText_Stats_Friendship_Happy[] = _("{EMOJI_HAPPY}"); -const u8 gText_Stats_Friendship_BigSmile[] = _("{EMOJI_BIGSMILE}"); -const u8 gText_Stats_MEDIUM_FAST[] = _("MED. FAST"); -const u8 gText_Stats_ERRATIC[] = _("ERRATIC"); -const u8 gText_Stats_FLUCTUATING[] = _("FLUCTUATING"); -const u8 gText_Stats_MEDIUM_SLOW[] = _("MED. SLOW"); -const u8 gText_Stats_FAST[] = _("FAST"); -const u8 gText_Stats_SLOW[] = _("SLOW"); -const u8 gText_Stats_ContestHeart[] = _("H"); -const u8 gText_Stats_Minus[] = _("-"); -const u8 gText_Stats_eggGroup[] = _("EGG G1:"); -const u8 gText_Stats_eggGroup_Groups[] = _("{STR_VAR_1}/{STR_VAR_2}"); -const u8 gText_Stats_eggGroup_MONSTER[] = _("MONSTER"); -const u8 gText_Stats_eggGroup_WATER_1[] = _("WATER {CIRCLE_1}"); -const u8 gText_Stats_eggGroup_BUG[] = _("BUG"); -const u8 gText_Stats_eggGroup_FLYING[] = _("FLYING"); -const u8 gText_Stats_eggGroup_FIELD[] = _("FIELD"); -const u8 gText_Stats_eggGroup_FAIRY[] = _("FAIRY"); -const u8 gText_Stats_eggGroup_GRASS[] = _("GRASS"); -const u8 gText_Stats_eggGroup_HUMAN_LIKE[] = _("HUMANE"); -const u8 gText_Stats_eggGroup_WATER_3[] = _("WATER {CIRCLE_3}"); -const u8 gText_Stats_eggGroup_MINERAL[] = _("MINERAL"); -const u8 gText_Stats_eggGroup_AMORPHOUS[] = _("AMORPHOUS"); -const u8 gText_Stats_eggGroup_WATER_2[] = _("WATER {CIRCLE_2}"); -const u8 gText_Stats_eggGroup_DITTO[] = _("DITTO"); -const u8 gText_Stats_eggGroup_DRAGON[] = _("DRAGON"); -const u8 gText_Stats_eggGroup_UNDISCOVERED[] = _("---"); -const u8 gText_Dex_SEEN[] = _("SEEN"); -const u8 gText_Dex_OWN[] = _("OWN"); - -const u8 gText_EVO_Buttons[] = _("{DPAD_UPDOWN}EVOs {A_BUTTON}CHECK"); -const u8 gText_EVO_Buttons_Decapped[] = _("{DPAD_UPDOWN}Evos {A_BUTTON}Check"); -const u8 gText_EVO_Buttons_PE[] = _("{DPAD_UPDOWN}EVOs {A_BUTTON}CHECK {START_BUTTON}FORMs"); -const u8 gText_EVO_Buttons_Decapped_PE[] = _("{DPAD_UPDOWN}Evos {A_BUTTON}Check {START_BUTTON}Froms"); -const u8 gText_EVO_Name[] = _("{STR_VAR_3}:"); -const u8 gText_EVO_PreEvo[] = _("{STR_VAR_1} evolves from {STR_VAR_2}"); -const u8 gText_EVO_PreEvo_PE_Mega[] = _("{STR_VAR_1} Mega Evolves with {STR_VAR_2}"); -const u8 gText_EVO_FRIENDSHIP[] = _("{LV}{UP_ARROW}, high friendship"); -const u8 gText_EVO_FRIENDSHIP_DAY[] = _("{LV}{UP_ARROW}, high friendship, day"); -const u8 gText_EVO_FRIENDSHIP_NIGHT[] = _("{LV}{UP_ARROW}, high friendship, night"); -const u8 gText_EVO_FRIENDSHIP_MOVE_TYPE[] = _("{LV}{UP_ARROW}, high friendship, {STR_VAR_2} move"); -const u8 gText_EVO_LEVEL[] = _("{LV}{UP_ARROW} to {STR_VAR_2}"); -const u8 gText_EVO_TRADE[] = _("Trading"); -const u8 gText_EVO_TRADE_ITEM[] = _("Trading, holding {STR_VAR_2}"); -const u8 gText_EVO_ITEM[] = _("{STR_VAR_2} is used"); -const u8 gText_EVO_LEVEL_ATK_GT_DEF[] = _("{LV}{UP_ARROW} to {STR_VAR_2}, Atk > Def"); -const u8 gText_EVO_LEVEL_ATK_EQ_DEF[] = _("{LV}{UP_ARROW} to {STR_VAR_2}, Atk = Def"); -const u8 gText_EVO_LEVEL_ATK_LT_DEF[] = _("{LV}{UP_ARROW} to {STR_VAR_2}, Atk < Def"); -const u8 gText_EVO_LEVEL_SILCOON[] = _("{LV}{UP_ARROW} to {STR_VAR_2}, Silcoon persona"); -const u8 gText_EVO_LEVEL_CASCOON[] = _("{LV}{UP_ARROW} to {STR_VAR_2}, Cascoon persona"); -const u8 gText_EVO_LEVEL_NINJASK[] = _("{LV}{UP_ARROW} to {STR_VAR_2}"); -const u8 gText_EVO_LEVEL_SHEDINJA[] = _("{LV}{UP_ARROW} to {STR_VAR_2}, party<6, 1x POKéBALL"); -const u8 gText_EVO_BEAUTY[] = _("{LV}{UP_ARROW}, high beauty"); -const u8 gText_EVO_LEVEL_FEMALE[] = _("{LV}{UP_ARROW} to {STR_VAR_2}, is female"); -const u8 gText_EVO_LEVEL_MALE[] = _("{LV}{UP_ARROW} to {STR_VAR_2}, is male"); -const u8 gText_EVO_LEVEL_NIGHT[] = _("{LV}{UP_ARROW} to {STR_VAR_2}, night"); -const u8 gText_EVO_LEVEL_DAY[] = _("{LV}{UP_ARROW} to {STR_VAR_2}, day"); -const u8 gText_EVO_LEVEL_DUSK[] = _("{LV}{UP_ARROW} to {STR_VAR_2}, dusk (5-6PM)"); -const u8 gText_EVO_ITEM_HOLD_DAY[] = _("{LV}{UP_ARROW}, holds {STR_VAR_2}, day"); -const u8 gText_EVO_ITEM_HOLD_NIGHT[] = _("{LV}{UP_ARROW}, holds {STR_VAR_2}, night"); -const u8 gText_EVO_MOVE[] = _("{LV}{UP_ARROW}, knows {STR_VAR_2}"); -const u8 gText_EVO_MAPSEC[] = _("{LV}{UP_ARROW} on {STR_VAR_2}"); -const u8 gText_EVO_ITEM_MALE[] = _("{STR_VAR_2} used on male"); -const u8 gText_EVO_ITEM_FEMALE[] = _("{STR_VAR_2} used on female"); -const u8 gText_EVO_LEVEL_RAIN[] = _("{LV}{UP_ARROW} to {STR_VAR_2} while raining"); -const u8 gText_EVO_SPECIFIC_MON_IN_PARTY[] = _("{LV}{UP_ARROW} with {STR_VAR_2} in party"); -const u8 gText_EVO_LEVEL_DARK_TYPE_MON_IN_PARTY[] = _("{LV}{UP_ARROW} with dark type in party"); -const u8 gText_EVO_TRADE_SPECIFIC_MON[] = _("Traded for {STR_VAR_2}"); -const u8 gText_EVO_SPECIFIC_MAP[] = _("{LV}{UP_ARROW} on {STR_VAR_2}"); -const u8 gText_EVO_LEVEL_NATURE_AMPED[] = _("{LV}{UP_ARROW} to {STR_VAR_2}, Amped natures"); -const u8 gText_EVO_LEVEL_NATURE_LOW_KEY[] = _("{LV}{UP_ARROW} to {STR_VAR_2}, Low Key natures"); -const u8 gText_EVO_CRITICAL_HITS[] = _("Land {STR_VAR_2} critical hits in\nsingle battle"); -const u8 gText_EVO_SCRIPT_TRIGGER_DMG[] = _("Takes at least {STR_VAR_2} HP in damage"); -const u8 gText_EVO_DARK_SCROLL[] = _("ScrllOfDrknss is used"); -const u8 gText_EVO_WATER_SCROLL[] = _("ScrollOfWatrs is used"); -const u8 gText_EVO_ITEM_NIGHT[] = _("{STR_VAR_2} is used, night"); -const u8 gText_EVO_ITEM_DAY[] = _("{STR_VAR_2} is used, day"); -const u8 gText_EVO_ITEM_HOLD[] = _("{LV}{UP_ARROW}, holds {STR_VAR_2}"); -const u8 gText_EVO_UNKNOWN[] = _("Method unknown"); -const u8 gText_EVO_NONE[] = _("{STR_VAR_1} has no evolution."); - -const u8 gText_FORMS_Buttons_PE[] = _("{A_BUTTON}FORM MODE {START_BUTTON}EVOs"); -const u8 gText_FORMS_Buttons_Decapped_PE[] = _("{START_BUTTON}Evos"); -const u8 gText_FORMS_Buttons_Submenu_PE[] = _("{DPAD_NONE}FORMs {A_BUTTON}CHECK {START_BUTTON}EVOs"); -const u8 gText_FORMS_Buttons_Submenu_Decapped_PE[] = _("{START_BUTTON}Evos"); -const u8 gText_FORMS_NONE[] = _("{STR_VAR_1} has no alternate forms."); -#endif From e34f32fdc151b397d8d6d106d69d6c231514537a Mon Sep 17 00:00:00 2001 From: sbird Date: Sun, 22 Oct 2023 03:34:38 +0200 Subject: [PATCH 120/162] fix normal hoeen dex colors --- graphics/pokedex/bg_hoenn.pal | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/graphics/pokedex/bg_hoenn.pal b/graphics/pokedex/bg_hoenn.pal index 5889ede7ac..569c7821a9 100644 --- a/graphics/pokedex/bg_hoenn.pal +++ b/graphics/pokedex/bg_hoenn.pal @@ -1,21 +1,21 @@ JASC-PAL 0100 48 -193 33 177 -249 249 249 -225 225 225 -201 201 201 -169 169 169 -129 129 129 -249 153 161 -233 49 49 -193 33 41 -145 17 33 -249 153 161 -193 33 41 -141 251 184 -52 66 162 -194 181 66 +123 131 0 +255 255 255 +222 222 222 +189 189 189 +164 164 164 +98 98 115 +41 57 65 +41 57 106 +0 0 41 +255 255 255 +238 246 57 +255 0 189 +49 213 74 +24 131 32 +189 156 90 0 0 0 123 131 0 255 255 255 From 8992a2f0de4b7f8520625059fde22e8855816f90 Mon Sep 17 00:00:00 2001 From: sbird Date: Sun, 22 Oct 2023 03:53:31 +0200 Subject: [PATCH 121/162] fixup! fix normal hoeen dex colors --- graphics/pokedex/caught_screen.pal | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/graphics/pokedex/caught_screen.pal b/graphics/pokedex/caught_screen.pal index 7b855bfc66..26da98a84c 100644 --- a/graphics/pokedex/caught_screen.pal +++ b/graphics/pokedex/caught_screen.pal @@ -1,21 +1,21 @@ JASC-PAL 0100 48 -193 33 177 -249 249 249 -225 225 225 -201 201 201 -169 169 169 -129 129 129 -249 153 161 -233 49 49 -193 33 41 -145 17 33 -249 153 161 -193 33 41 -141 251 184 -52 66 162 -194 181 66 +123 131 0 +255 255 255 +255 238 0 +255 189 0 +255 115 0 +98 98 115 +41 57 65 +41 57 106 +0 0 41 +255 255 255 +238 246 57 +255 0 189 +49 213 74 +24 131 32 +189 156 90 0 0 0 123 131 0 255 255 255 From e08aae2a3282bffc465661517537d3a4926d57f2 Mon Sep 17 00:00:00 2001 From: sbird Date: Sun, 22 Oct 2023 03:55:35 +0200 Subject: [PATCH 122/162] apply changes from #3436 --- src/pokedex_plus_hgss.c | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/src/pokedex_plus_hgss.c b/src/pokedex_plus_hgss.c index d96a563665..65df818263 100644 --- a/src/pokedex_plus_hgss.c +++ b/src/pokedex_plus_hgss.c @@ -4910,12 +4910,20 @@ static void ResetStatsWindows(void) static void SaveMonDataInStruct(void) { u16 species = NationalPokedexNumToSpeciesHGSS(sPokedexListItem->dexNum); - u8 evs[6] = {gSpeciesInfo[species].evYield_HP, gSpeciesInfo[species].evYield_Speed, gSpeciesInfo[species].evYield_Attack, gSpeciesInfo[species].evYield_SpAttack, gSpeciesInfo[species].evYield_Defense, gSpeciesInfo[species].evYield_SpDefense}; + u8 evs[NUM_STATS] = + { + [STAT_HP] = gSpeciesInfo[species].evYield_HP, + [STAT_ATK] = gSpeciesInfo[species].evYield_Speed, + [STAT_DEF] = gSpeciesInfo[species].evYield_Attack, + [STAT_SPEED] = gSpeciesInfo[species].evYield_SpAttack, + [STAT_SPATK] = gSpeciesInfo[species].evYield_Defense, + [STAT_SPDEF] = gSpeciesInfo[species].evYield_SpDefense + }; u8 differentEVs = 0; u8 i; //Count how many different EVs - for (i = 0; i<6; i++) + for (i = 0; i < NUM_STATS; i++) { if (evs[i] > 0) //HP//Speed//Attack//Special Attack//Defense//Special Defense differentEVs++; @@ -4930,12 +4938,12 @@ static void SaveMonDataInStruct(void) sPokedexView->sPokemonStats.baseDefense = gSpeciesInfo[species].baseDefense; sPokedexView->sPokemonStats.baseSpDefense = gSpeciesInfo[species].baseSpDefense; sPokedexView->sPokemonStats.differentEVs = differentEVs; - sPokedexView->sPokemonStats.evYield_HP = evs[0]; - sPokedexView->sPokemonStats.evYield_Speed = evs[1]; - sPokedexView->sPokemonStats.evYield_Attack = evs[2]; - sPokedexView->sPokemonStats.evYield_SpAttack = evs[3]; - sPokedexView->sPokemonStats.evYield_Defense = evs[4]; - sPokedexView->sPokemonStats.evYield_SpDefense = evs[5]; + sPokedexView->sPokemonStats.evYield_HP = evs[STAT_HP]; + sPokedexView->sPokemonStats.evYield_Speed = evs[STAT_ATK]; + sPokedexView->sPokemonStats.evYield_Attack = evs[STAT_DEF]; + sPokedexView->sPokemonStats.evYield_SpAttack = evs[STAT_SPEED]; + sPokedexView->sPokemonStats.evYield_Defense = evs[STAT_SPATK]; + sPokedexView->sPokemonStats.evYield_SpDefense = evs[STAT_SPDEF]; sPokedexView->sPokemonStats.catchRate = gSpeciesInfo[species].catchRate; sPokedexView->sPokemonStats.growthRate = gSpeciesInfo[species].growthRate; sPokedexView->sPokemonStats.eggGroup1 = gSpeciesInfo[species].eggGroups[0]; From 8ab2fbd9a2b2ae7b3ca5f319567577ede7a0bf2b Mon Sep 17 00:00:00 2001 From: Alex <93446519+AlexOn1ine@users.noreply.github.com> Date: Sun, 22 Oct 2023 11:20:27 +0200 Subject: [PATCH 123/162] Fixes tests rng (#3433) * Seed RNG before setUp Co-authored-by: Martin Griffin --- test/random.c | 2 +- test/test_runner.c | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/test/random.c b/test/random.c index 5ca4b814df..80b86745f2 100644 --- a/test/random.c +++ b/test/random.c @@ -6,7 +6,7 @@ // Therefore the maximum error is 8*3584, or 28672. #define SHUFFLE_TEST_IMPL \ u32 i, j, error; \ - u16 indexSum[7]; \ + u16 indexSum[8]; \ memset(indexSum, 0, sizeof(indexSum)); \ for (i = 0; i < 1024; i++) \ { \ diff --git a/test/test_runner.c b/test/test_runner.c index 7ca66ec081..0ae4f0a185 100644 --- a/test/test_runner.c +++ b/test/test_runner.c @@ -201,6 +201,8 @@ void CB2_TestRunner(void) case STATE_RUN_TEST: gTestRunnerState.state = STATE_REPORT_RESULT; sCurrentTest.state = CURRENT_TEST_STATE_RUN; + SeedRng(0); + SeedRng2(0); if (gTestRunnerState.test->runner->setUp) gTestRunnerState.test->runner->setUp(gTestRunnerState.test->data); // NOTE: Assumes that the compiler interns __FILE__. From 8a6284c408b81ce6bb4516ed5f1cf772b5557b22 Mon Sep 17 00:00:00 2001 From: Martin Griffin Date: Sun, 22 Oct 2023 14:03:46 +0100 Subject: [PATCH 124/162] Fix battle test estimateCost bug (#3448) --- test/test_runner_battle.c | 1 + 1 file changed, 1 insertion(+) diff --git a/test/test_runner_battle.c b/test/test_runner_battle.c index d8369850d7..54c8baae24 100644 --- a/test/test_runner_battle.c +++ b/test/test_runner_battle.c @@ -125,6 +125,7 @@ static u32 BattleTest_EstimateCost(void *data) { u32 cost; const struct BattleTest *test = data; + memset(STATE, 0, sizeof(*STATE)); STATE->runRandomly = TRUE; InvokeTestFunction(test); cost = 1; From bf56ea8a8bdc17ecc4382351b59726af9b0deee6 Mon Sep 17 00:00:00 2001 From: Alex Date: Sun, 22 Oct 2023 19:46:31 +0200 Subject: [PATCH 125/162] apply suggestions --- asm/macros/battle_script.inc | 4 ++-- data/battle_scripts_1.s | 2 +- src/battle_script_commands.c | 6 +++--- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/asm/macros/battle_script.inc b/asm/macros/battle_script.inc index 9bff248651..e5d8fc58c8 100644 --- a/asm/macros/battle_script.inc +++ b/asm/macros/battle_script.inc @@ -1366,8 +1366,8 @@ .byte \battler .endm - .macro setoctolock battler:req, failInstr:req - callnative BS_Octolock + .macro trysetoctolock battler:req, failInstr:req + callnative BS_TrySetOctolock .byte \battler .4byte \failInstr .endm diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index a279a8f0bc..bc0a7a7fa3 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -1057,7 +1057,7 @@ BattleScript_EffectOctolock: accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE attackstring ppreduce - setoctolock BS_TARGET, BattleScript_ButItFailed + trysetoctolock BS_TARGET, BattleScript_ButItFailed attackanimation waitanimation printstring STRINGID_CANTESCAPEBECAUSEOFCURRENTMOVE diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 8e5db2fd6e..088546991e 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -15697,7 +15697,7 @@ static bool8 IsFinalStrikeEffect(u16 move) return FALSE; } -static bool8 CanAbilityPreventStatLoss(u16 abilityDef, bool8 isIntimidate) +static bool8 CanAbilityPreventStatLoss(u16 abilityDef, bool8 byIntimidate) { switch (abilityDef) { @@ -15709,7 +15709,7 @@ static bool8 CanAbilityPreventStatLoss(u16 abilityDef, bool8 isIntimidate) case ABILITY_SCRAPPY: case ABILITY_OWN_TEMPO: case ABILITY_OBLIVIOUS: - if (isIntimidate && (B_UPDATED_INTIMIDATE >= GEN_8)) + if (byIntimidate && (B_UPDATED_INTIMIDATE >= GEN_8)) return TRUE; break; } @@ -16238,7 +16238,7 @@ void BS_JumpIfTerrainAffected(void) gBattlescriptCurrInstr = cmd->nextInstr; } -void BS_Octolock(void) +void BS_TrySetOctolock(void) { NATIVE_ARGS(u8 battler, const u8 *failInstr); u32 battler = GetBattlerForBattleScript(cmd->battler); From 7fdc4aacda2fddf7280ac5d18611b93f5d6b6874 Mon Sep 17 00:00:00 2001 From: Eduardo Quezada D'Ottone Date: Sun, 22 Oct 2023 16:03:54 -0300 Subject: [PATCH 126/162] Fixed Cheat Start not initiating time-based events (#3446) --- include/clock.h | 1 + src/clock.c | 2 +- src/debug.c | 2 ++ 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/include/clock.h b/include/clock.h index aa179bf6fb..0cfd3db9ed 100644 --- a/include/clock.h +++ b/include/clock.h @@ -3,6 +3,7 @@ // TODO: time of day and seconds in a day defines +void InitTimeBasedEvents(void); void DoTimeBasedEvents(void); #endif // GUARD_CLOCK_H diff --git a/src/clock.c b/src/clock.c index 125d403bb3..76297b4f4c 100644 --- a/src/clock.c +++ b/src/clock.c @@ -15,7 +15,7 @@ static void UpdatePerDay(struct Time *localTime); static void UpdatePerMinute(struct Time *localTime); -static void InitTimeBasedEvents(void) +void InitTimeBasedEvents(void) { FlagSet(FLAG_SYS_CLOCK_SET); RtcCalcLocalTime(); diff --git a/src/debug.c b/src/debug.c index f915235d8b..be1085edd7 100644 --- a/src/debug.c +++ b/src/debug.c @@ -9,6 +9,7 @@ #include "global.h" #include "battle.h" #include "battle_setup.h" +#include "clock.h" #include "coins.h" #include "credits.h" #include "data.h" @@ -1983,6 +1984,7 @@ static void DebugAction_Util_Clear_Boxes(u8 taskId) } static void DebugAction_Util_CheatStart(u8 taskId) { + InitTimeBasedEvents(); Debug_DestroyMenu_Full_Script(taskId, Debug_CheatStart); } static void DebugAction_Util_HatchAnEgg(u8 taskId) From d495e177b96b488847660b970c321bd246f7c4a3 Mon Sep 17 00:00:00 2001 From: kittenchilly Date: Sun, 22 Oct 2023 14:15:07 -0500 Subject: [PATCH 127/162] Add Snow weather animation (#3440) * Snow weather animation * Update battle_anim_scripts.s * Apply changes from review --- data/battle_anim_scripts.s | 21 +++--- graphics/battle_anims/sprites/snowflakes.png | Bin 0 -> 6037 bytes include/constants/battle_anim.h | 1 + include/graphics.h | 2 + src/battle_anim_ice.c | 68 +++++++++++++++++++ src/data/battle_anim.h | 2 + src/graphics.c | 3 + 7 files changed, 89 insertions(+), 8 deletions(-) create mode 100644 graphics/battle_anims/sprites/snowflakes.png diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index b2cd95ca27..2c171356a7 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -898,7 +898,7 @@ gBattleAnims_Moves:: .4byte Move_SOUL_STEALING_7_STAR_STRIKE @@@@ MAX MOVES .4byte Move_MAX_GUARD - .4byte Move_MAX_STRIKE + .4byte Move_MAX_STRIKE .4byte Move_MAX_KNUCKLE .4byte Move_MAX_AIRSTREAM .4byte Move_MAX_OOZE @@ -15161,16 +15161,21 @@ Move_SILK_TRAP:: clearmonbg ANIM_ATK_PARTNER end -@ Also used by Snow weather. Currently identical with Move_HAIL +@ Also used by Snow weather. Credits to Dat.H A Move_SNOWSCAPE:: - loadspritegfx ANIM_TAG_HAIL - loadspritegfx ANIM_TAG_ICE_CRYSTALS - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 3, 0, 6, RGB_BLACK + loadspritegfx ANIM_TAG_SNOWFLAKES + playsewithpan SE_M_GUST, SOUND_PAN_ATTACKER + createvisualtask AnimTask_BlendBattleAnimPal, 10, (F_PAL_BG | F_PAL_BATTLERS), 2, 0, 4, RGB(11, 18, 22) waitforvisualfinish - createvisualtask AnimTask_Hail, 5 - loopsewithpan SE_M_HAIL, 0, 8, 10 + createvisualtask AnimTask_CreateSnowflakes, 2, 0, 3, 120 + createvisualtask AnimTask_CreateSnowflakes, 2, 0, 3, 120 + createvisualtask AnimTask_CreateSnowflakes, 2, 0, 3, 120 + delay 120 + playsewithpan SE_M_GUST2, SOUND_PAN_ATTACKER + delay 30 + waitforvisualfinish + createvisualtask AnimTask_BlendBattleAnimPal, 10, (F_PAL_BG | F_PAL_BATTLERS), 2, 4, 0, RGB(11, 18, 22) waitforvisualfinish - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 3, 6, 0, RGB_BLACK end @Credits to Skeli diff --git a/graphics/battle_anims/sprites/snowflakes.png b/graphics/battle_anims/sprites/snowflakes.png new file mode 100644 index 0000000000000000000000000000000000000000..4f4334b3b9e05f3efeb75b6ab515df5f08060c54 GIT binary patch literal 6037 zcmeHKc{o(<`yb1%BHHtoRMU7K(+LkSm143>$w)ck2r*huIuI+;DJ&11If`baVwQXxcW|m~+IaH{zTvRsLHV27RwLjkChMFAle6Dq%T;$QVK~J|#+i!n(dJM`GHuGuu z?D*o|b{li`@`^3+5zFplr`KJ$IbDreL+(|~)Po#3lbl!UeZsJ8YsZTBkZlLluB3}K z41-TS*1|o`Q?~NGtq57Zcim%=g3Pt}g7g@-)mPP}=%Ifd?T^``rtl}$iJ+dyJDQ~C z?_F;5tkBM?WPQomgo?197|r%^U8rT#!{p4PkYwanPh<$yt=WgB^o7~pi%ru%sO=jL(?Dfd5!-5f4 ztY#i~+IDZ7YA0p&UC)aC%onFa+y~QI$Aim!l2)$*>U+9Y>8E*)78X+OjmjWyDkx2q zT)DAXc~w`@mB#qz59|xi#I}tT6!nJfYpCwD7D$D^^Kl+ytjiyZoxZHsmJp>tJ#*}8 z?a4$1hQZaL`n5akuO9B*xgEbZtGluPc&ppOvtirFiiRwVk>L?M!KVLQa>IW4*;7}N z|IT^{JLh#V#H1@)ju$W-UGS`_O-P>hI;WDm(q*c~qS&Bs=V9r{M;e8zuxwLV`K9ZO zwmGQ@-z}G0dv7nj_oJaFyr^ega5s`d*a)~|eSs1teCu~qHTmQBZ>nLX<( z5qPR5;IeKd)oFh^1z6~g?9=$3r?3&qN^Dy6ryCEs}6dsea zE5hdq?5V+L`{8K$`{i5T4Eu&AZT9Z3KIVR4*@FAtOfRc4nom#lz0d{)8(JJ|+ew_LXP zGkt6NC9}V8;79jGVU9Kb)15XR`J!62yJS7knc7w=K06~UtrkI834Po{%m*U$l8Wx0 zthn{azL2Bk4V1)ob*;3V^rZz1bYpDv`0~=qMemZ+EFZQ9UxQ4WQkO^Nq{zKxIYRSS zoF_eqXg>V-=w-OsjlMRaQ%#khMYZWDW%qN7>wGtrh6u1TrT$w$>mlrabA_Q_S3=9^i!FL z&F~XXi+43W%d;3Q%O?01gg;==U%Fn6kyfpba1LG1ZEbc2mq?Kyd2`(9x5r%Zh z@uf@eaM<^ruFJj^Xe;|Cu6+8KAO&h7HzHq~;)*pfYZFy1SaH@Tm+YKzEl)P}V36h= z=oh6V)R=I&zv%Fj-4B=w-Z2L1=g-&sp4kSRWUT7Z;y16|xba;}6Jv^C8k8}N-Td^~ z5?7V3GEQ@EP0@!egPCs2+O;nCLaN>j1=YQ3v#OdJOer!j`>=0dx1d#~%VeooN*VKB zldd}I4S`67F^r6?$wo%s{>9)QSa>*E&-}iD%0CBe(`}qp9zkI-DI}+5s}II$C{^rW zXcqOka=(PBDUu^1(_TAsMriqcuRF7|LbITYf@5+?FvccB0J_|J8H)1!A0PrOIWR5F^c1Wm^Yqs%={td%J{X>Ht*umLg$gV2x#Q}d8X>iZ9h5_!494S^L z8k>or(%EhRLcrvJdnX7)S6{%P(!2pa)D7@pu=HTVWp`ju23-&4piMzhI7Wac!#t1+ z*aq&jqXl}?h;*3#c6nU^2?SsQd@5AH^kMNx0zKFqE(vT)#7G!)PKEES2XmxYLyg#6 z0E$E45Gc5bfZ>OMZI_4Ya_R0Q8)MUX2=Ge}=E>)CNJyl=zdynsi(qp-kZ2;2h(uwK z7z`ZLfb#-ae5wG>;;Bj?zG4^yJQ|n5;WOAQs05Sh#`fjw!C+uN^jmyP4u$d^p2eGI z0ptTIpmLCC1PaMyB7d~t@lE_dkokcAqXo|n++rea03O?yO9M>&02W{MM+iFYyFJI3 z>ob=QorVN_04Au)1HGbua%o1USbw*WP~gE}a^|c+vVYR#Gu;0r>!;WxJ#*>&7zk+o z9rq{gZ@JGYgIW{{$(T*^m4rt&)`Lm>ljv+3gHD=jqUkhujGG$~j=`c(aGW+42dC2U z+Hf5Lole8k@i;2M{Rb#Ai^r$3Xn+I?1V=DH91I4~!2{YjxHeV?2glI>6r6x|1K=1m z-JOm{VW=1k^#_PuTn1Q`RG%NCl0eZxD1r_eMMdGzaBU141IOWr1ULbO!oz8JG@gdV z>0kjAdJc+CBbl3?|hBKyp|fa~%@GNru*BJs1Xo`d4D@L*=`J2H+fEu;^@m z-oIUT3?^X9r%L!l>kvUl7$Sy%!D{32UtP^1+5=o3Sc?)=Gzx+JiYyrz5||E1Emcyf zAix|fm<`E@3sCuNt{t20qX&~fKqZ!Q1rF8yIxOZ49;gu@srmV;w*?M<{rWlyd>C_G zQ0QFYlBl$=PIy#5fIjC4wENmc^Q5vo0C0xSm(({o<39|SHX7%ygD247Xg4A_;y5}L zPH=N~hf{F`fQZJU0XMAn&*(h1JKvwm1q?mFOu=lx5}L~fx^k zM#0e-I}DnntxduZV95Dok&-$6En8jW|KUS-PT_||0JQrm0~Z%?twMfZtmgTWQ21ZG z=Evc`=mCWO?c|sE{Y}?zx_*g)UsC>EUBBu2B?f*;`FC~wztJWC?{NoUfjc07@Gzt2 zFbf9{LMUr1I}@+CNH=FO&r2K`Di#UFMMdJeI`P}LV(^+fEzLi^%L~#q>p+2_NOdp>L*l4ksl!ooEtol=$))=h~W{=28XW{SeR(|euE3^Yq%Nys4Co{L@RoyR4CJOug z(w^P$L*D6=epKncBLDeHrFu$nv9Us|2i$k4>rPiaT1q92Qt0|rolloutTimerStartValue - gAnimDisableStructPtr->rolloutTimer - 1; DestroyAnimVisualTask(taskId); } + +static const union AnimCmd sAnim_Snowflakes[] = +{ + ANIMCMD_FRAME(0, 2), + ANIMCMD_FRAME(8, 2), + ANIMCMD_FRAME(16, 2), + ANIMCMD_FRAME(24, 6), + ANIMCMD_FRAME(32, 2), + ANIMCMD_FRAME(40, 2), + ANIMCMD_FRAME(48, 2), + ANIMCMD_END, +}; + +static const union AnimCmd *const sAnims_Snowflakes[] = +{ + sAnim_Snowflakes, +}; + +const struct SpriteTemplate gSnowFlakesSpriteTemplate = +{ + .tileTag = ANIM_TAG_SNOWFLAKES, + .paletteTag = ANIM_TAG_SNOWFLAKES, + .oam = &gOamData_AffineOff_ObjNormal_16x32, + .anims = sAnims_Snowflakes, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimSnowflakes, +}; + +void AnimTask_CreateSnowflakes(u8 taskId) +{ + u8 x, y; + + if (gTasks[taskId].data[0] == 0) + { + gTasks[taskId].data[1] = gBattleAnimArgs[0]; + gTasks[taskId].data[2] = gBattleAnimArgs[1]; + gTasks[taskId].data[3] = gBattleAnimArgs[2]; + } + gTasks[taskId].data[0]++; + if (gTasks[taskId].data[0] % gTasks[taskId].data[2] == 1) + { + x = Random2() % DISPLAY_WIDTH; + y = Random2() % (DISPLAY_HEIGHT / 2); + CreateSprite(&gSnowFlakesSpriteTemplate, x, y, 4); + } + if (gTasks[taskId].data[0] == gTasks[taskId].data[3]) + DestroyAnimVisualTask(taskId); +} + +static void AnimSnowflakes(struct Sprite *sprite) +{ + sprite->callback = AnimSnowflakes_Step; +} + +static void AnimSnowflakes_Step(struct Sprite *sprite) +{ + if (++sprite->data[0] <= 13) + { + sprite->x2++; + sprite->y2 += 2; + sprite->x2--; + } + if (sprite->animEnded) + DestroySprite(sprite); +} diff --git a/src/data/battle_anim.h b/src/data/battle_anim.h index 885038725c..d342ccbae5 100644 --- a/src/data/battle_anim.h +++ b/src/data/battle_anim.h @@ -1448,6 +1448,7 @@ const struct CompressedSpriteSheet gBattleAnimPicTable[] = {gBattleAnimSpriteGfx_AuraSphere, 0x200, ANIM_TAG_POLTERGEIST}, {gBattleAnimSpriteGfx_Teapot, 0x1800, ANIM_TAG_TEAPOT}, {gBattleAnimSpriteGfx_WoodHammerHammer, 0x800, ANIM_TAG_WOOD_HAMMER_HAMMER}, + {gBattleAnimSpriteGfx_Snowflakes, 0x0700, ANIM_TAG_SNOWFLAKES}, }; const struct CompressedSpritePalette gBattleAnimPaletteTable[] = @@ -1896,6 +1897,7 @@ const struct CompressedSpritePalette gBattleAnimPaletteTable[] = {gBattleAnimSpritePal_Poltergeist, ANIM_TAG_POLTERGEIST}, {gBattleAnimSpritePal_Teapot, ANIM_TAG_TEAPOT}, {gBattleAnimSpritePal_WoodHammerHammer, ANIM_TAG_WOOD_HAMMER_HAMMER}, + {gBattleAnimSpritePal_RainDrops, ANIM_TAG_SNOWFLAKES}, }; const struct BattleAnimBackground gBattleAnimBackgroundTable[] = diff --git a/src/graphics.c b/src/graphics.c index 0549e4476b..d152d081c0 100644 --- a/src/graphics.c +++ b/src/graphics.c @@ -448,6 +448,9 @@ const u32 gBattleAnimSpritePal_SpinningBall2[] = INCBIN_U32("graphics/battle_ani const u32 gBattleAnimSpriteGfx_WoodHammerHammer[] = INCBIN_U32("graphics/battle_anims/sprites/wood_hammer_hammer.4bpp.lz"); const u32 gBattleAnimSpritePal_WoodHammerHammer[] = INCBIN_U32("graphics/battle_anims/sprites/wood_hammer_hammer.gbapal.lz"); +const u32 gBattleAnimSpriteGfx_Snowflakes[] = INCBIN_U32("graphics/battle_anims/sprites/snowflakes.4bpp.lz"); +const u32 gBattleAnimSpritePal_Snowflakes[] = INCBIN_U32("graphics/battle_anims/sprites/snowflakes.gbapal.lz"); + // old battle interface data, unused const u32 gOldBattleInterfaceGfx[] = INCBIN_U32("graphics/unused/obi1.4bpp.lz"); From 77e2b0dd2c104bcaeff078cd056a01dd20a7c512 Mon Sep 17 00:00:00 2001 From: Eduardo Quezada D'Ottone Date: Sun, 22 Oct 2023 16:22:59 -0300 Subject: [PATCH 128/162] Test cleanup and improvements (#3449) * Fixed duplicated test names * Test improvements for Jaboca, Kee and Rowap Berries Co-authored-by: Alex <93446519+AlexOn1ine@users.noreply.github.com> * Lansat Berry test improvements Co-authored-by: Alex <93446519+AlexOn1ine@users.noreply.github.com> * Jaboca Berry/Bug Bite interaction test Co-authored-by: Alex <93446519+AlexOn1ine@users.noreply.github.com> --------- Co-authored-by: Alex <93446519+AlexOn1ine@users.noreply.github.com> --- test/battle/ability/prankster.c | 1 - test/battle/hold_effect/critical_hit_up.c | 9 ++-- test/battle/hold_effect/jaboca_berry.c | 60 ++++++++++++++--------- test/battle/hold_effect/kee_berry.c | 27 +++++++--- test/battle/hold_effect/maranga_berry.c | 39 +++++++-------- test/battle/hold_effect/rowap_berry.c | 25 +++++++--- test/battle/move_effect/bug_bite.c | 9 ++-- test/battle/move_effect/multi_hit.c | 12 +++-- 8 files changed, 110 insertions(+), 72 deletions(-) diff --git a/test/battle/ability/prankster.c b/test/battle/ability/prankster.c index 29fd11786e..3f402e0fc6 100644 --- a/test/battle/ability/prankster.c +++ b/test/battle/ability/prankster.c @@ -22,7 +22,6 @@ TO_DO_BATTLE_TEST("Prankster-affected moves called via After you affect Dark-typ TO_DO_BATTLE_TEST("Prankster-affected moves that are bounced back by Magic Bounce/Coat can affect Dark-type Pokémon"); TO_DO_BATTLE_TEST("Prankster-affected moves that are bounced back by Magic Coat from a Pokémon with Prankster can't affect Dark-type Pokémon"); TO_DO_BATTLE_TEST("Prankster-affected moves that target all Pokémon are successful regardless of the presence of Dark-type Pokémon"); -TO_DO_BATTLE_TEST("Prankster-affected moves that target all Pokémon are successful regardless of the presence of Dark-type Pokémon"); TO_DO_BATTLE_TEST("Prankster-affected move effects don't affect Dark-type Pokémon"); TO_DO_BATTLE_TEST("Prankster increases the priority of moves by 1"); TO_DO_BATTLE_TEST("Prankster increases the priority of status Z-Moves by 1"); diff --git a/test/battle/hold_effect/critical_hit_up.c b/test/battle/hold_effect/critical_hit_up.c index 799a1e423f..fc8e5acec5 100644 --- a/test/battle/hold_effect/critical_hit_up.c +++ b/test/battle/hold_effect/critical_hit_up.c @@ -21,13 +21,11 @@ SINGLE_BATTLE_TEST("Lansat Berry raises the holder's critical-hit-ratio by two s TURN { MOVE(opponent, move); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, move, opponent); - if (move == MOVE_TACKLE) - { + if (move == MOVE_TACKLE) { NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); NOT MESSAGE("Wobbuffet used Lansat Berry to get pumped!"); } - else - { + else { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); MESSAGE("Wobbuffet used Lansat Berry to get pumped!"); } @@ -48,11 +46,12 @@ SINGLE_BATTLE_TEST("Lansat Berry raises the holder's critical-hit-ratio by two s } } -SINGLE_BATTLE_TEST("Lansat Berry raises the holder's critical-hit-ratio by two stages when HP drops to 1/4 or below") +SINGLE_BATTLE_TEST("Lansat Berry raises the holder's critical-hit-ratio by two stages") { PASSES_RANDOMLY(1, 2, RNG_CRITICAL_HIT); GIVEN { ASSUME(gBattleMoves[MOVE_TACKLE].highCritRatio == FALSE); + ASSUME(B_CRIT_CHANCE >= GEN_6); PLAYER(SPECIES_WOBBUFFET) { MaxHP(160); HP(80); Item(ITEM_LANSAT_BERRY); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { diff --git a/test/battle/hold_effect/jaboca_berry.c b/test/battle/hold_effect/jaboca_berry.c index ce102ff83a..d009ae03a6 100644 --- a/test/battle/hold_effect/jaboca_berry.c +++ b/test/battle/hold_effect/jaboca_berry.c @@ -4,41 +4,57 @@ ASSUMPTIONS { ASSUME(gItems[ITEM_JABOCA_BERRY].holdEffect == HOLD_EFFECT_JABOCA_BERRY); + ASSUME(gBattleMoves[MOVE_TACKLE].split == SPLIT_PHYSICAL); } SINGLE_BATTLE_TEST("Jaboca Berry causes the attacker to lose 1/8 of its max HP if a physical move was used") { s16 damage; + u16 move; - GIVEN { - ASSUME(gBattleMoves[MOVE_TACKLE].split == SPLIT_PHYSICAL); - PLAYER(SPECIES_WOBBUFFET); - OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_JABOCA_BERRY); } - } WHEN { - TURN { MOVE(player, MOVE_TACKLE); } - } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); - HP_BAR(opponent); - ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); - HP_BAR(player, captureDamage: &damage); - MESSAGE("Wobbuffet was hurt by Foe Wobbuffet's Jaboca Berry!"); - } THEN { - EXPECT_EQ(player->maxHP / 8, damage); - } -} + PARAMETRIZE { move = MOVE_SWIFT; } + PARAMETRIZE { move = MOVE_TACKLE; } -SINGLE_BATTLE_TEST("Jaboca Berry is not triggered by a special move") -{ GIVEN { ASSUME(gBattleMoves[MOVE_SWIFT].split == SPLIT_SPECIAL); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_JABOCA_BERRY); } } WHEN { - TURN { MOVE(player, MOVE_SWIFT); } + TURN { MOVE(player, move); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_SWIFT, player); + ANIMATION(ANIM_TYPE_MOVE, move, player); HP_BAR(opponent); - NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); - NOT MESSAGE("Wobbuffet was hurt by Foe Wobbuffet's Jaboca Berry!"); + if (move == MOVE_TACKLE) { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); + HP_BAR(player, captureDamage: &damage); + MESSAGE("Wobbuffet was hurt by Foe Wobbuffet's Jaboca Berry!"); + } else { + NONE_OF { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); + MESSAGE("Wobbuffet was hurt by Foe Wobbuffet's Jaboca Berry!"); + } + } + } THEN { + if (move == MOVE_TACKLE) + EXPECT_EQ(player->maxHP / 8, damage); + } +} + +SINGLE_BATTLE_TEST("Jaboca Berry tirggers before Bug Bite can steal it") +{ + KNOWN_FAILING; + GIVEN { + ASSUME(gBattleMoves[MOVE_BUG_BITE].split == SPLIT_PHYSICAL); + PLAYER(SPECIES_WYNAUT); + OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_JABOCA_BERRY); } + } WHEN { + TURN { MOVE(player, MOVE_BUG_BITE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_BUG_BITE, player); + HP_BAR(opponent); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); + HP_BAR(player); + MESSAGE("Wyanut was hurt by Foe Wobbuffet's Jaboca Berry!"); + NOT MESSAGE("Wynaut stole and ate Foe Wobbuffet's Jaboca Berry!"); } } diff --git a/test/battle/hold_effect/kee_berry.c b/test/battle/hold_effect/kee_berry.c index a809381226..cfb6b14e5c 100644 --- a/test/battle/hold_effect/kee_berry.c +++ b/test/battle/hold_effect/kee_berry.c @@ -4,23 +4,37 @@ ASSUMPTIONS { ASSUME(gItems[ITEM_KEE_BERRY].holdEffect == HOLD_EFFECT_KEE_BERRY); + ASSUME(gBattleMoves[MOVE_TACKLE].split == SPLIT_PHYSICAL); } SINGLE_BATTLE_TEST("Kee Berry raises the holder's Defense by one stage when hit by a physical move") { + u16 move; + + PARAMETRIZE { move = MOVE_SWIFT; } + PARAMETRIZE { move = MOVE_TACKLE; } + GIVEN { - ASSUME(gBattleMoves[MOVE_TACKLE].split == SPLIT_PHYSICAL); + ASSUME(gBattleMoves[MOVE_SWIFT].split == SPLIT_SPECIAL); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_KEE_BERRY); } } WHEN { - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, move); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, move, player); HP_BAR(opponent); - ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); - MESSAGE("Using Kee Berry, the Defense of Foe Wobbuffet rose!"); + if (move == MOVE_TACKLE) { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); + MESSAGE("Using Kee Berry, the Defense of Foe Wobbuffet rose!"); + } else { + NONE_OF { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); + MESSAGE("Using Kee Berry, the Defense of Foe Wobbuffet rose!"); + } + } } THEN { - EXPECT_EQ(opponent->statStages[STAT_DEF], DEFAULT_STAT_STAGE + 1); + if (move == MOVE_TACKLE) + EXPECT_EQ(opponent->statStages[STAT_DEF], DEFAULT_STAT_STAGE + 1); } } @@ -28,7 +42,6 @@ SINGLE_BATTLE_TEST("Kee Berry raises the holder's Defense by two stages with Rip { GIVEN { ASSUME(P_GEN_8_POKEMON == TRUE); - ASSUME(gBattleMoves[MOVE_TACKLE].split == SPLIT_PHYSICAL); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_APPLIN) { Item(ITEM_KEE_BERRY); Ability(ABILITY_RIPEN); } } WHEN { diff --git a/test/battle/hold_effect/maranga_berry.c b/test/battle/hold_effect/maranga_berry.c index 08f827c30c..0a3edffbf5 100644 --- a/test/battle/hold_effect/maranga_berry.c +++ b/test/battle/hold_effect/maranga_berry.c @@ -8,19 +8,32 @@ ASSUMPTIONS SINGLE_BATTLE_TEST("Maranga Berry raises the holder's Sp. Def by one stage when hit by a special move") { + u16 move = MOVE_NONE; + PARAMETRIZE { move = MOVE_TACKLE; } + PARAMETRIZE { move = MOVE_SWIFT; } GIVEN { + ASSUME(gBattleMoves[MOVE_TACKLE].split == SPLIT_PHYSICAL); ASSUME(gBattleMoves[MOVE_SWIFT].split == SPLIT_SPECIAL); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_MARANGA_BERRY); } } WHEN { - TURN { MOVE(player, MOVE_SWIFT); } + TURN { MOVE(player, move); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_SWIFT, player); + ANIMATION(ANIM_TYPE_MOVE, move, player); HP_BAR(opponent); - ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); - MESSAGE("Using Maranga Berry, the Sp. Def of Foe Wobbuffet rose!"); + if (move == MOVE_SWIFT) { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); + MESSAGE("Using Maranga Berry, the Sp. Def of Foe Wobbuffet rose!"); + } + else { + NONE_OF { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); + MESSAGE("Using Maranga Berry, the Sp. Def of Foe Wobbuffet rose!"); + } + } } THEN { - EXPECT_EQ(opponent->statStages[STAT_SPDEF], DEFAULT_STAT_STAGE + 1); + if (move == MOVE_SWIFT) + EXPECT_EQ(opponent->statStages[STAT_SPDEF], DEFAULT_STAT_STAGE + 1); } } @@ -42,19 +55,3 @@ SINGLE_BATTLE_TEST("Maranga Berry raises the holder's Sp. Def by two stages with EXPECT_EQ(opponent->statStages[STAT_SPDEF], DEFAULT_STAT_STAGE + 2); } } - -SINGLE_BATTLE_TEST("Maranga Berry raises the holder's Sp. Def by one stage when hit by a special move") -{ - GIVEN { - ASSUME(gBattleMoves[MOVE_TACKLE].split == SPLIT_PHYSICAL); - PLAYER(SPECIES_WOBBUFFET); - OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_MARANGA_BERRY); } - } WHEN { - TURN { MOVE(player, MOVE_TACKLE); } - } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); - HP_BAR(opponent); - NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); - NOT MESSAGE("Using Maranga Berry, the Sp. Def of Foe Wobbuffet rose!"); - } -} diff --git a/test/battle/hold_effect/rowap_berry.c b/test/battle/hold_effect/rowap_berry.c index 4145948791..3df8d004f4 100644 --- a/test/battle/hold_effect/rowap_berry.c +++ b/test/battle/hold_effect/rowap_berry.c @@ -9,21 +9,34 @@ ASSUMPTIONS SINGLE_BATTLE_TEST("Rowap Berry causes the attacker to lose 1/8 of its max HP if a special move was used") { s16 damage; + u16 move; + + PARAMETRIZE { move = MOVE_SWIFT; } + PARAMETRIZE { move = MOVE_TACKLE; } GIVEN { ASSUME(gBattleMoves[MOVE_SWIFT].split == SPLIT_SPECIAL); + ASSUME(gBattleMoves[MOVE_TACKLE].split == SPLIT_PHYSICAL); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_ROWAP_BERRY); } } WHEN { - TURN { MOVE(player, MOVE_SWIFT); } + TURN { MOVE(player, move); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_SWIFT, player); + ANIMATION(ANIM_TYPE_MOVE, move, player); HP_BAR(opponent); - ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); - HP_BAR(player, captureDamage: &damage); - MESSAGE("Wobbuffet was hurt by Foe Wobbuffet's Rowap Berry!"); + if (move == MOVE_SWIFT) { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); + HP_BAR(player, captureDamage: &damage); + MESSAGE("Wobbuffet was hurt by Foe Wobbuffet's Rowap Berry!"); + } else { + NONE_OF { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); + MESSAGE("Wobbuffet was hurt by Foe Wobbuffet's Rowap Berry!"); + } + } } THEN { - EXPECT_EQ(player->maxHP / 8, damage); + if (move == MOVE_SWIFT) + EXPECT_EQ(player->maxHP / 8, damage); } } diff --git a/test/battle/move_effect/bug_bite.c b/test/battle/move_effect/bug_bite.c index 385b8a400f..8f59e6f003 100644 --- a/test/battle/move_effect/bug_bite.c +++ b/test/battle/move_effect/bug_bite.c @@ -114,18 +114,15 @@ SINGLE_BATTLE_TEST("Bug Bite eats the target's berry and immediately gains its e } } -// To verify in the actual games. -// Bulbapedia - The effect of a Jaboca Berry will activate before the Berry can be stolen. -// Showdown - Jaboca Berry is stolen and eaten and nothing happens. This is how it currently works on expansion. -TO_DO_BATTLE_TEST("Bug Bite interaction with Jaboca Berry."); - SINGLE_BATTLE_TEST("Tanga Berry activates before Bug Bite") { GIVEN { + ASSUME(gItems[ITEM_TANGA_BERRY].holdEffect == HOLD_EFFECT_RESIST_BERRY); + ASSUME(gItems[ITEM_TANGA_BERRY].holdEffectParam == TYPE_BUG); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET) {Item(ITEM_TANGA_BERRY); } } WHEN { - TURN { MOVE(player, MOVE_BUG_BITE); } + TURN { MOVE(player, MOVE_BUG_BITE); } } SCENE { MESSAGE("Wobbuffet used Bug Bite!"); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); diff --git a/test/battle/move_effect/multi_hit.c b/test/battle/move_effect/multi_hit.c index 6a034c830f..99e506ad68 100644 --- a/test/battle/move_effect/multi_hit.c +++ b/test/battle/move_effect/multi_hit.c @@ -25,11 +25,12 @@ SINGLE_BATTLE_TEST("Multi hit Moves hit the maximum amount with Skill Link") } } -SINGLE_BATTLE_TEST("Multi hit Moves hit twice 35 Percent of the time") +SINGLE_BATTLE_TEST("Multi hit Moves hit twice 35% of the time") { PASSES_RANDOMLY(35, 100, RNG_HITS); GIVEN { + ASSUME(B_MULTI_HIT_CHANCE >= GEN_5); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { @@ -41,11 +42,12 @@ SINGLE_BATTLE_TEST("Multi hit Moves hit twice 35 Percent of the time") } } -SINGLE_BATTLE_TEST("Multi hit Moves hit thrice 35 Percent of the time") +SINGLE_BATTLE_TEST("Multi hit Moves hit thrice 35% of the time") { PASSES_RANDOMLY(35, 100, RNG_HITS); GIVEN { + ASSUME(B_MULTI_HIT_CHANCE >= GEN_5); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { @@ -58,11 +60,12 @@ SINGLE_BATTLE_TEST("Multi hit Moves hit thrice 35 Percent of the time") } } -SINGLE_BATTLE_TEST("Multi hit Moves hit four times 35 Percent of the time") +SINGLE_BATTLE_TEST("Multi hit Moves hit four times 15% of the time") { PASSES_RANDOMLY(15, 100, RNG_HITS); GIVEN { + ASSUME(B_MULTI_HIT_CHANCE >= GEN_5); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { @@ -76,11 +79,12 @@ SINGLE_BATTLE_TEST("Multi hit Moves hit four times 35 Percent of the time") } } -SINGLE_BATTLE_TEST("Multi hit Moves hit four times 35 Percent of the time") +SINGLE_BATTLE_TEST("Multi hit Moves hit five times 15% of the time") { PASSES_RANDOMLY(15, 100, RNG_HITS); GIVEN { + ASSUME(B_MULTI_HIT_CHANCE >= GEN_5); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { From 3755155e9d64bef9804b9a4c829449ad9a1d2e25 Mon Sep 17 00:00:00 2001 From: kittenchilly Date: Sun, 22 Oct 2023 16:05:54 -0500 Subject: [PATCH 129/162] Update friendship evo threshold to gen 8+ with config (#3376) --- include/config/pokemon.h | 3 +++ src/pokemon.c | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/include/config/pokemon.h b/include/config/pokemon.h index a65eddb73c..271a77add4 100644 --- a/include/config/pokemon.h +++ b/include/config/pokemon.h @@ -7,6 +7,9 @@ #define P_UPDATED_ABILITIES GEN_LATEST // Since Gen 6, certain Pokémon have their abilities changed. #define P_UPDATED_EGG_GROUPS GEN_LATEST // Since Gen 8, certain Pokémon have gained new egg groups. +// Evolution settings +#define P_FRIENDSHIP_EVO_THRESHOLD GEN_LATEST // Since Gen 8, Pokémon that evolve by friendship evolve at or above 160 friendship instead of 220. + // Breeding settings #define P_NIDORAN_M_DITTO_BREED GEN_LATEST // Since Gen 5, when Nidoran♂ breeds with Ditto it can produce Nidoran♀ offspring. Before, it would only yield male offspring. This change also applies to Volbeat. #define P_INCENSE_BREEDING GEN_LATEST // Since Gen 9, cross-generation Baby Pokémon don't require Incense being held by the parents to be obtained via breeding. diff --git a/src/pokemon.c b/src/pokemon.c index c932979d4f..877bc55a48 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -62,7 +62,11 @@ #define NIGHT_EVO_HOUR_BEGIN 0 #define NIGHT_EVO_HOUR_END 12 +#if P_FRIENDSHIP_EVO_THRESHOLD >= GEN_9 +#define FRIENDSHIP_EVO_THRESHOLD 160 +#else #define FRIENDSHIP_EVO_THRESHOLD 220 +#endif struct SpeciesItem { From ef1c60de67a1af3d945efe421c925fb0ea62e026 Mon Sep 17 00:00:00 2001 From: Martin Griffin Date: Sun, 15 Oct 2023 18:53:11 +0100 Subject: [PATCH 130/162] Buffer 'GBA: '-prefixed messages TODO: Detect illegal opcodes in the test runner because mgba-rom-test evaluates them very slowly, making the TIMEOUT mechanism effectively realtime. --- tools/mgba-rom-test-hydra/main.c | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/tools/mgba-rom-test-hydra/main.c b/tools/mgba-rom-test-hydra/main.c index 123d8a2552..c2189ac0df 100644 --- a/tools/mgba-rom-test-hydra/main.c +++ b/tools/mgba-rom-test-hydra/main.c @@ -2,9 +2,9 @@ * parses the output to display human-readable progress. * * Output lines starting with "GBA Debug: :" are parsed as commands to - * Hydra, other output lines starting with "GBA Debug: " are parsed as - * output from the current test, and any other lines are parsed as - * output from the mgba-rom-test process itself. + * Hydra, other output lines starting with "GBA Debug: " or with "GBA: " + * are parsed as output from the current test, and any other lines are + * parsed as output from the mgba-rom-test process itself. * * COMMANDS * N: Sets the test name to the remainder of the line. @@ -75,10 +75,17 @@ static void handle_read(int i, struct Runner *runner) { eol++; size_t n = eol - sol; - if (runner->input_buffer_size >= strlen("GBA Debug: ") - && !strncmp(sol, "GBA Debug: ", strlen("GBA Debug: "))) + char *soc; + if (runner->input_buffer_size >= strlen("GBA: ") + && !strncmp(sol, "GBA: ", strlen("GBA: "))) { - char *soc = sol + strlen("GBA Debug: "); + soc = sol + strlen("GBA: "); + goto buffer_output; + } + else if (runner->input_buffer_size >= strlen("GBA Debug: ") + && !strncmp(sol, "GBA Debug: ", strlen("GBA Debug: "))) + { + soc = sol + strlen("GBA Debug: "); if (soc[0] == ':') { switch (soc[1]) From 6e7e7fdafa21654bca58d9b68d739201c0b66746 Mon Sep 17 00:00:00 2001 From: Martin Griffin Date: Mon, 23 Oct 2023 07:03:45 +0100 Subject: [PATCH 131/162] make check MODERN=1 in a separate build directory --- Makefile | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Makefile b/Makefile index 80ee5303d3..5326383023 100644 --- a/Makefile +++ b/Makefile @@ -85,7 +85,11 @@ ELF = $(ROM:.gba=.elf) MAP = $(ROM:.gba=.map) SYM = $(ROM:.gba=.sym) +ifeq ($(MODERN),0) TEST_OBJ_DIR_NAME := build/test +else +TEST_OBJ_DIR_NAME := build/modern-test +endif TESTELF = $(ROM:.gba=-test.elf) HEADLESSELF = $(ROM:.gba=-test-headless.elf) From b0b6e1604264722f63807c3649d996164565884f Mon Sep 17 00:00:00 2001 From: Martin Griffin Date: Mon, 23 Oct 2023 06:57:57 +0100 Subject: [PATCH 132/162] Separate ASSIGN_TEST from NEXT_TEST Silences a warning about an invalid pointer when building with modern. --- include/test/test.h | 1 + test/test_runner.c | 28 +++++++++++++++++++++------- 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/include/test/test.h b/include/test/test.h index 5b3ab8af0c..e9c920bd0b 100644 --- a/include/test/test.h +++ b/include/test/test.h @@ -47,6 +47,7 @@ struct TestRunnerState u8 expectedResult; bool8 expectLeaks:1; bool8 inBenchmark:1; + bool8 tearDown:1; u32 timeoutSeconds; }; diff --git a/test/test_runner.c b/test/test_runner.c index 0ae4f0a185..ddfe23b3ec 100644 --- a/test/test_runner.c +++ b/test/test_runner.c @@ -56,9 +56,10 @@ static bool32 PrefixMatch(const char *pattern, const char *string) enum { STATE_INIT, - STATE_NEXT_TEST, + STATE_ASSIGN_TEST, STATE_RUN_TEST, STATE_REPORT_RESULT, + STATE_NEXT_TEST, STATE_EXIT, }; @@ -152,17 +153,15 @@ void CB2_TestRunner(void) } else { - gTestRunnerState.state = STATE_NEXT_TEST; - gTestRunnerState.test = __start_tests - 1; + gTestRunnerState.state = STATE_ASSIGN_TEST; + gTestRunnerState.test = __start_tests; } gTestRunnerState.exitCode = 0; gTestRunnerState.skipFilename = NULL; break; - case STATE_NEXT_TEST: - gTestRunnerState.test++; - + case STATE_ASSIGN_TEST: if (gTestRunnerState.test == __stop_tests) { gTestRunnerState.state = STATE_EXIT; @@ -172,6 +171,7 @@ void CB2_TestRunner(void) if (gTestRunnerState.test->runner != &gAssumptionsRunner && !PrefixMatch(gTestRunnerArgv, gTestRunnerState.test->name)) { + gTestRunnerState.state = STATE_NEXT_TEST; return; } @@ -191,6 +191,8 @@ void CB2_TestRunner(void) sCurrentTest.address = (uintptr_t)gTestRunnerState.test; sCurrentTest.state = CURRENT_TEST_STATE_ESTIMATE; + // If AssignCostToRunner fails, we want to report the failure. + gTestRunnerState.state = STATE_REPORT_RESULT; if (AssignCostToRunner() == gTestRunnerI) gTestRunnerState.state = STATE_RUN_TEST; else @@ -204,7 +206,10 @@ void CB2_TestRunner(void) SeedRng(0); SeedRng2(0); if (gTestRunnerState.test->runner->setUp) + { gTestRunnerState.test->runner->setUp(gTestRunnerState.test->data); + gTestRunnerState.tearDown = TRUE; + } // NOTE: Assumes that the compiler interns __FILE__. if (gTestRunnerState.skipFilename == gTestRunnerState.test->filename) // Assumption fails for tests in this file. { @@ -216,13 +221,17 @@ void CB2_TestRunner(void) gTestRunnerState.test->runner->run(gTestRunnerState.test->data); } break; + case STATE_REPORT_RESULT: REG_TM2CNT_H = 0; gTestRunnerState.state = STATE_NEXT_TEST; - if (gTestRunnerState.test->runner->tearDown) + if (gTestRunnerState.tearDown && gTestRunnerState.test->runner->tearDown) + { gTestRunnerState.test->runner->tearDown(gTestRunnerState.test->data); + gTestRunnerState.tearDown = FALSE; + } if (gTestRunnerState.result == TEST_RESULT_PASS && !gTestRunnerState.expectLeaks) @@ -342,6 +351,11 @@ void CB2_TestRunner(void) break; + case STATE_NEXT_TEST: + gTestRunnerState.state = STATE_ASSIGN_TEST; + gTestRunnerState.test++; + break; + case STATE_EXIT: MgbaExit_(gTestRunnerState.exitCode); break; From cd59e055c24dd18e4fe9294ea5e53b723e898d17 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Mon, 23 Oct 2023 06:08:36 -0300 Subject: [PATCH 133/162] Made Reflect Type handle 3rd types (#3303) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Made Reflect Type handle 3rd types Misc: -Turned VARIOUS_TRY_REFLECT_TYPE into a callnative (BS_TryReflectType) -Introduced a macro to to check for typeless Pokémon (Pokémon who have Mystery in all 3 type slots) in battle. -Made the new BS_TryReflectType take into account the forms for Arceus and Silvally, rather than just their default form. --- asm/macros/battle_script.inc | 10 +- include/battle.h | 4 + src/battle_script_commands.c | 77 +++++----- test/battle/move_effect/reflect_type.c | 186 +++++++++++++++++++++++++ 4 files changed, 241 insertions(+), 36 deletions(-) create mode 100644 test/battle/move_effect/reflect_type.c diff --git a/asm/macros/battle_script.inc b/asm/macros/battle_script.inc index 866831c462..c875729b85 100644 --- a/asm/macros/battle_script.inc +++ b/asm/macros/battle_script.inc @@ -1456,6 +1456,11 @@ .4byte \jumpInstr .endm + .macro tryreflecttype failInstr:req + callnative BS_TryReflectType + .4byte \failInstr + .endm + @ various command changed to more readable macros .macro cancelmultiturnmoves battler:req various \battler, VARIOUS_CANCEL_MULTI_TURN_MOVES @@ -1686,11 +1691,6 @@ .4byte \failInstr .endm - .macro tryreflecttype failInstr:req - various BS_ATTACKER, VARIOUS_TRY_REFLECT_TYPE - .4byte \failInstr - .endm - .macro trysoak failInstr:req various BS_ATTACKER, VARIOUS_TRY_SOAK .4byte \failInstr diff --git a/include/battle.h b/include/battle.h index 037259fc5b..95886b7e13 100644 --- a/include/battle.h +++ b/include/battle.h @@ -724,12 +724,16 @@ STATIC_ASSERT(sizeof(((struct BattleStruct *)0)->palaceFlags) * 8 >= MAX_BATTLER #define BATTLER_DAMAGED(battlerId) ((gSpecialStatuses[battlerId].physicalDmg != 0 || gSpecialStatuses[battlerId].specialDmg != 0)) #define IS_BATTLER_OF_TYPE(battlerId, type)((GetBattlerType(battlerId, 0) == type || GetBattlerType(battlerId, 1) == type || (GetBattlerType(battlerId, 2) != TYPE_MYSTERY && GetBattlerType(battlerId, 2) == type))) + +#define IS_BATTLER_TYPELESS(battlerId)(GetBattlerType(battlerId, 0) == TYPE_MYSTERY && GetBattlerType(battlerId, 1) == TYPE_MYSTERY && GetBattlerType(battlerId, 2) == TYPE_MYSTERY) + #define SET_BATTLER_TYPE(battlerId, type) \ { \ gBattleMons[battlerId].type1 = type; \ gBattleMons[battlerId].type2 = type; \ gBattleMons[battlerId].type3 = TYPE_MYSTERY; \ } + #define RESTORE_BATTLER_TYPE(battlerId) \ { \ gBattleMons[battlerId].type1 = gSpeciesInfo[gBattleMons[battlerId].species].types[0]; \ diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index e9b7ba941b..c886178ec0 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -9409,37 +9409,6 @@ static void Cmd_various(void) } return; } - case VARIOUS_TRY_REFLECT_TYPE: - { - VARIOUS_ARGS(const u8 *failInstr); - if (gBattleMons[gBattlerTarget].species == SPECIES_ARCEUS || gBattleMons[gBattlerTarget].species == SPECIES_SILVALLY) - { - gBattlescriptCurrInstr = cmd->failInstr; - } - else if (GetBattlerType(gBattlerTarget, 0) == TYPE_MYSTERY && GetBattlerType(gBattlerTarget, 1) != TYPE_MYSTERY) - { - gBattleMons[gBattlerAttacker].type1 = GetBattlerType(gBattlerTarget, 1); - gBattleMons[gBattlerAttacker].type2 = GetBattlerType(gBattlerTarget, 1); - gBattlescriptCurrInstr = cmd->nextInstr; - } - else if (GetBattlerType(gBattlerTarget, 0) != TYPE_MYSTERY && GetBattlerType(gBattlerTarget, 1) == TYPE_MYSTERY) - { - gBattleMons[gBattlerAttacker].type1 = GetBattlerType(gBattlerTarget, 0); - gBattleMons[gBattlerAttacker].type2 = GetBattlerType(gBattlerTarget, 0); - gBattlescriptCurrInstr = cmd->nextInstr; - } - else if (GetBattlerType(gBattlerTarget, 0) == TYPE_MYSTERY && GetBattlerType(gBattlerTarget, 1) == TYPE_MYSTERY) - { - gBattlescriptCurrInstr = cmd->failInstr; - } - else - { - gBattleMons[gBattlerAttacker].type1 = GetBattlerType(gBattlerTarget, 0); - gBattleMons[gBattlerAttacker].type2 = GetBattlerType(gBattlerTarget, 1); - gBattlescriptCurrInstr = cmd->nextInstr; - } - return; - } case VARIOUS_TRY_SOAK: { VARIOUS_ARGS(const u8 *failInstr); @@ -16331,3 +16300,49 @@ void BS_JumpIfTerrainAffected(void) else gBattlescriptCurrInstr = cmd->nextInstr; } + +void BS_TryReflectType(void) +{ + NATIVE_ARGS(const u8 *failInstr); + u16 targetBaseSpecies = GET_BASE_SPECIES_ID(gBattleMons[gBattlerTarget].species); + u8 targetType1 = GetBattlerType(gBattlerTarget, 0); + u8 targetType2 = GetBattlerType(gBattlerTarget, 1); + u8 targetType3 = GetBattlerType(gBattlerTarget, 2); + + if (targetBaseSpecies == SPECIES_ARCEUS || targetBaseSpecies == SPECIES_SILVALLY) + { + gBattlescriptCurrInstr = cmd->failInstr; + } + else if (IS_BATTLER_TYPELESS(gBattlerTarget)) + { + gBattlescriptCurrInstr = cmd->failInstr; + } + else if (targetType1 == TYPE_MYSTERY && targetType2 == TYPE_MYSTERY && targetType3 != TYPE_MYSTERY) + { + gBattleMons[gBattlerAttacker].type1 = TYPE_NORMAL; + gBattleMons[gBattlerAttacker].type2 = TYPE_NORMAL; + gBattleMons[gBattlerAttacker].type3 = targetType3; + gBattlescriptCurrInstr = cmd->nextInstr; + } + else if (targetType1 == TYPE_MYSTERY && targetType2 != TYPE_MYSTERY) + { + gBattleMons[gBattlerAttacker].type1 = targetType2; + gBattleMons[gBattlerAttacker].type2 = targetType2; + gBattleMons[gBattlerAttacker].type3 = targetType3; + gBattlescriptCurrInstr = cmd->nextInstr; + } + else if (targetType1 != TYPE_MYSTERY && targetType2 == TYPE_MYSTERY) + { + gBattleMons[gBattlerAttacker].type1 = targetType1; + gBattleMons[gBattlerAttacker].type2 = targetType1; + gBattleMons[gBattlerAttacker].type3 = targetType3; + gBattlescriptCurrInstr = cmd->nextInstr; + } + else + { + gBattleMons[gBattlerAttacker].type1 = targetType1; + gBattleMons[gBattlerAttacker].type2 = targetType2; + gBattleMons[gBattlerAttacker].type3 = targetType3; + gBattlescriptCurrInstr = cmd->nextInstr; + } +} diff --git a/test/battle/move_effect/reflect_type.c b/test/battle/move_effect/reflect_type.c new file mode 100644 index 0000000000..e873516034 --- /dev/null +++ b/test/battle/move_effect/reflect_type.c @@ -0,0 +1,186 @@ +#include "global.h" +#include "test/battle.h" + +TO_DO_BATTLE_TEST("Reflect Type fails if the user is Terastallized"); +TO_DO_BATTLE_TEST("Reflect Type succeeds against a Terastallized target and copies its Tera type"); + +SINGLE_BATTLE_TEST("Reflect Type does not affect any of Arceus' forms") +{ + u32 j; + static const u16 sArceusFormSpeciesIdTable[] = { + SPECIES_ARCEUS, + SPECIES_ARCEUS_FIGHTING, + SPECIES_ARCEUS_FLYING, + SPECIES_ARCEUS_POISON, + SPECIES_ARCEUS_GROUND, + SPECIES_ARCEUS_ROCK, + SPECIES_ARCEUS_BUG, + SPECIES_ARCEUS_GHOST, + SPECIES_ARCEUS_STEEL, + SPECIES_ARCEUS_FIRE, + SPECIES_ARCEUS_WATER, + SPECIES_ARCEUS_GRASS, + SPECIES_ARCEUS_ELECTRIC, + SPECIES_ARCEUS_PSYCHIC, + SPECIES_ARCEUS_ICE, + SPECIES_ARCEUS_DRAGON, + SPECIES_ARCEUS_DARK, + SPECIES_ARCEUS_FAIRY, + }; + u16 species = SPECIES_NONE; + + for (j = 0; j < ARRAY_COUNT(sArceusFormSpeciesIdTable); j++) + { + PARAMETRIZE { species = sArceusFormSpeciesIdTable[j]; } + } + + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(species); + } WHEN { + TURN { MOVE(player, MOVE_REFLECT_TYPE); } + } SCENE { + MESSAGE("Wobbuffet used Reflect Type!"); + MESSAGE("But it failed!"); + } +} + +SINGLE_BATTLE_TEST("Reflect Type does not affect any of Silvally's forms") +{ + u32 j; + static const u16 sSilvallyFormSpeciesIdTable[] = { + SPECIES_SILVALLY, + SPECIES_SILVALLY_FIGHTING, + SPECIES_SILVALLY_FLYING, + SPECIES_SILVALLY_POISON, + SPECIES_SILVALLY_GROUND, + SPECIES_SILVALLY_ROCK, + SPECIES_SILVALLY_BUG, + SPECIES_SILVALLY_GHOST, + SPECIES_SILVALLY_STEEL, + SPECIES_SILVALLY_FIRE, + SPECIES_SILVALLY_WATER, + SPECIES_SILVALLY_GRASS, + SPECIES_SILVALLY_ELECTRIC, + SPECIES_SILVALLY_PSYCHIC, + SPECIES_SILVALLY_ICE, + SPECIES_SILVALLY_DRAGON, + SPECIES_SILVALLY_DARK, + SPECIES_SILVALLY_FAIRY, + }; + u16 species = SPECIES_NONE; + + for (j = 0; j < ARRAY_COUNT(sSilvallyFormSpeciesIdTable); j++) + { + PARAMETRIZE { species = sSilvallyFormSpeciesIdTable[j]; } + } + + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(species); + } WHEN { + TURN { MOVE(player, MOVE_REFLECT_TYPE); } + } SCENE { + MESSAGE("Wobbuffet used Reflect Type!"); + MESSAGE("But it failed!"); + } +} + +SINGLE_BATTLE_TEST("Reflect Type does not affect Pokémon with no types") +{ + ASSUME(gSpeciesInfo[SPECIES_ARCANINE].types[0] == TYPE_FIRE); + ASSUME(gSpeciesInfo[SPECIES_ARCANINE].types[1] == TYPE_FIRE); + ASSUME(gSpeciesInfo[SPECIES_POLIWRATH].types[0] == TYPE_WATER); + ASSUME(gSpeciesInfo[SPECIES_POLIWRATH].types[1] == TYPE_FIGHTING); + GIVEN { + PLAYER(SPECIES_ARCANINE); + OPPONENT(SPECIES_POLIWRATH); + } WHEN { + TURN { MOVE(player, MOVE_BURN_UP); MOVE(opponent, MOVE_REFLECT_TYPE); } + } SCENE { + MESSAGE("Arcanine used Burn Up!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_BURN_UP, player); + HP_BAR(opponent); + MESSAGE("Arcanine burned itself out!"); + MESSAGE("Foe Poliwrath used Reflect Type!"); + MESSAGE("But it failed!"); + } +} + +SINGLE_BATTLE_TEST("Reflect Type copies a target's dual types") +{ + ASSUME(gSpeciesInfo[SPECIES_ARCANINE].types[0] == TYPE_FIRE); + ASSUME(gSpeciesInfo[SPECIES_ARCANINE].types[1] == TYPE_FIRE); + ASSUME(gSpeciesInfo[SPECIES_POLIWRATH].types[0] == TYPE_WATER); + ASSUME(gSpeciesInfo[SPECIES_POLIWRATH].types[1] == TYPE_FIGHTING); + GIVEN { + PLAYER(SPECIES_ARCANINE); + OPPONENT(SPECIES_POLIWRATH); + } WHEN { + TURN { MOVE(player, MOVE_REFLECT_TYPE); } + } SCENE { + MESSAGE("Arcanine used Reflect Type!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_REFLECT_TYPE, player); + MESSAGE("Arcanine's type changed to match the Foe Poliwrath's!"); + } THEN { + EXPECT_EQ(player->type1, TYPE_WATER); + EXPECT_EQ(player->type2, TYPE_FIGHTING); + EXPECT_EQ(player->type3, TYPE_MYSTERY); + } +} + +SINGLE_BATTLE_TEST("Reflect Type copies a target's pure type") +{ + ASSUME(gSpeciesInfo[SPECIES_ARCANINE].types[0] == TYPE_FIRE); + ASSUME(gSpeciesInfo[SPECIES_ARCANINE].types[1] == TYPE_FIRE); + ASSUME(gSpeciesInfo[SPECIES_SUDOWOODO].types[0] == TYPE_ROCK); + ASSUME(gSpeciesInfo[SPECIES_SUDOWOODO].types[1] == TYPE_ROCK); + GIVEN { + PLAYER(SPECIES_ARCANINE); + OPPONENT(SPECIES_SUDOWOODO); + } WHEN { + TURN { MOVE(player, MOVE_REFLECT_TYPE); } + } SCENE { + MESSAGE("Arcanine used Reflect Type!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_REFLECT_TYPE, player); + MESSAGE("Arcanine's type changed to match the Foe Sudowoodo's!"); + } THEN { + EXPECT_EQ(player->type1, TYPE_ROCK); + EXPECT_EQ(player->type2, TYPE_ROCK); + EXPECT_EQ(player->type3, TYPE_MYSTERY); + } +} + +SINGLE_BATTLE_TEST("Reflect Type defaults to Normal type for the user's type1 and type2 if the target only has a 3rd type") +{ + ASSUME(gSpeciesInfo[SPECIES_WOBBUFFET].types[0] == TYPE_PSYCHIC); + ASSUME(gSpeciesInfo[SPECIES_WOBBUFFET].types[1] == TYPE_PSYCHIC); + ASSUME(gSpeciesInfo[SPECIES_ARCANINE].types[0] == TYPE_FIRE); + ASSUME(gSpeciesInfo[SPECIES_ARCANINE].types[1] == TYPE_FIRE); + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_ARCANINE); + } WHEN { + TURN { MOVE(opponent, MOVE_BURN_UP); } + TURN { MOVE(player, MOVE_FORESTS_CURSE); } + TURN { MOVE(player, MOVE_REFLECT_TYPE); } + } SCENE { + // Turn 1 + MESSAGE("Foe Arcanine used Burn Up!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_BURN_UP, opponent); + HP_BAR(player); + MESSAGE("Foe Arcanine burned itself out!"); + // Turn 2 + MESSAGE("Wobbuffet used Forest'sCurs!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_FORESTS_CURSE, player); + MESSAGE("Grass type was added to Foe Arcanine!"); + // Turn 3 + MESSAGE("Wobbuffet used Reflect Type!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_REFLECT_TYPE, player); + MESSAGE("Wobbuffet's type changed to match the Foe Arcanine's!"); + } THEN { + EXPECT_EQ(player->type1, TYPE_NORMAL); + EXPECT_EQ(player->type2, TYPE_NORMAL); + EXPECT_EQ(player->type3, TYPE_GRASS); + } +} From 6585a62b1341b4a2a75fb9ec54404cb9876b3a7d Mon Sep 17 00:00:00 2001 From: Eduardo Quezada D'Ottone Date: Mon, 23 Oct 2023 07:39:22 -0300 Subject: [PATCH 134/162] Dynamax Cleanup (#3435) * Mon animation names * Moved indicator code so it follows the same standards as the other indicators * Whitespace * Fixed modern compile * Fixed issue that caused Low Key Toxtricity learning Amped moves when Gigantamaxed --- data/battle_anim_scripts.s | 4 +- data/battle_scripts_1.s | 4 +- include/battle.h | 1 - include/battle_dynamax.h | 9 - include/constants/species.h | 19 +- src/battle_dynamax.c | 145 +----------- src/battle_gfx_sfx_util.c | 1 - src/battle_interface.c | 20 +- src/data/pokemon/form_change_table_pointers.h | 6 +- src/data/pokemon/form_change_tables.h | 212 +++++++++++++++--- .../pokemon/form_species_table_pointers.h | 3 +- src/data/pokemon/form_species_tables.h | 3 +- src/data/pokemon/level_up_learnset_pointers.h | 3 +- src/data/pokemon/species_info.h | 7 +- .../pokemon/teachable_learnset_pointers.h | 3 +- .../pokemon_graphics/back_pic_coordinates.h | 3 +- src/data/pokemon_graphics/back_pic_table.h | 3 +- src/data/pokemon_graphics/front_pic_anims.h | 199 ++++++++-------- .../pokemon_graphics/front_pic_coordinates.h | 3 +- src/data/pokemon_graphics/front_pic_table.h | 3 +- src/data/pokemon_graphics/palette_table.h | 3 +- .../pokemon_graphics/shiny_palette_table.h | 3 +- src/data/text/species_names.h | 3 +- src/pokemon.c | 3 +- src/pokemon_icon.c | 6 +- 25 files changed, 341 insertions(+), 328 deletions(-) diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index 2c171356a7..07c1970153 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -1007,8 +1007,8 @@ gBattleAnims_General:: .4byte General_Snow @ B_ANIM_SNOW_CONTINUES .4byte General_UltraBurst @ B_ANIM_ULTRA_BURST .4byte General_SaltCureDamage @ B_ANIM_SALT_CURE_DAMAGE - .4byte General_DynamaxGrowth @ B_ANIM_DYNAMAX_GROWTH - .4byte General_SetWeather @ B_ANIM_MAX_SET_WEATHER + .4byte General_DynamaxGrowth @ B_ANIM_DYNAMAX_GROWTH + .4byte General_SetWeather @ B_ANIM_MAX_SET_WEATHER .align 2 gBattleAnims_Special:: diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index c644282d22..37ec617b5e 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -416,7 +416,7 @@ gBattleScriptsForMoveEffects:: .4byte BattleScript_EffectVictoryDance @ EFFECT_VICTORY_DANCE .4byte BattleScript_EffectTeatime @ EFFECT_TEATIME .4byte BattleScript_EffectAttackUpUserAlly @ EFFECT_ATTACK_UP_USER_ALLY - .4byte BattleScript_EffectShellTrap @ EFFECT_SHELL_TRAP + .4byte BattleScript_EffectShellTrap @ EFFECT_SHELL_TRAP .4byte BattleScript_EffectHit @ EFFECT_PSYBLADE .4byte BattleScript_EffectHit @ EFFECT_HYDRO_STEAM .4byte BattleScript_EffectHitSetEntryHazard @ EFFECT_HIT_SET_ENTRY_HAZARD @@ -439,7 +439,7 @@ gBattleScriptsForMoveEffects:: .4byte BattleScript_EffectMatchaGotcha @ EFFECT_MATCHA_GOTCHA .4byte BattleScript_EffectSyrupBomb @ EFFECT_SYRUP_BOMB .4byte BattleScript_EffectHit @ EFFECT_IVY_CUDGEL - .4byte BattleScript_EffectMaxMove @ EFFECT_MAX_MOVE + .4byte BattleScript_EffectMaxMove @ EFFECT_MAX_MOVE BattleScript_EffectSyrupBomb:: setmoveeffect MOVE_EFFECT_SYRUP_BOMB diff --git a/include/battle.h b/include/battle.h index 2d8b8afe3d..ba6dcd3e60 100644 --- a/include/battle.h +++ b/include/battle.h @@ -544,7 +544,6 @@ struct DynamaxData { bool8 playerSelect; u8 triggerSpriteId; - u8 indicatorSpriteId[MAX_BATTLERS_COUNT]; u8 toDynamax; // flags using gBitTable bool8 alreadyDynamaxed[NUM_BATTLE_SIDES]; bool8 dynamaxed[MAX_BATTLERS_COUNT]; diff --git a/include/battle_dynamax.h b/include/battle_dynamax.h index fe619e2953..18f0b1b3e3 100644 --- a/include/battle_dynamax.h +++ b/include/battle_dynamax.h @@ -90,13 +90,4 @@ void HideDynamaxTriggerSprite(void); bool32 IsDynamaxTriggerSpriteActive(void); void DestroyDynamaxTriggerSprite(void); -void DynamaxIndicator_LoadSpriteGfx(void); -bool32 DynamaxIndicator_ShouldBeInvisible(u32 battlerId); -u8 DynamaxIndicator_GetSpriteId(u32 healthboxSpriteId); -void DynamaxIndicator_SetVisibilities(u32 healthboxId, bool32 invisible); -void DynamaxIndicator_UpdateOamPriority(u32 healthboxId, u32 oamPriority); -void DynamaxIndicator_UpdateLevel(u32 healthboxId, u32 level); -void DynamaxIndicator_CreateSprite(u32 battlerId, u32 healthboxSpriteId); -void DynamaxIndicator_DestroySprite(u32 healthboxSpriteId); - #endif diff --git a/include/constants/species.h b/include/constants/species.h index 2b41b32ea9..02b017655f 100644 --- a/include/constants/species.h +++ b/include/constants/species.h @@ -1396,15 +1396,16 @@ #define SPECIES_FLAPPLE_GIGANTAMAX FORMS_START + 351 #define SPECIES_APPLETUN_GIGANTAMAX FORMS_START + 352 #define SPECIES_SANDACONDA_GIGANTAMAX FORMS_START + 353 -#define SPECIES_TOXTRICITY_GIGANTAMAX FORMS_START + 354 -#define SPECIES_CENTISKORCH_GIGANTAMAX FORMS_START + 355 -#define SPECIES_HATTERENE_GIGANTAMAX FORMS_START + 356 -#define SPECIES_GRIMMSNARL_GIGANTAMAX FORMS_START + 357 -#define SPECIES_ALCREMIE_GIGANTAMAX FORMS_START + 358 -#define SPECIES_COPPERAJAH_GIGANTAMAX FORMS_START + 359 -#define SPECIES_DURALUDON_GIGANTAMAX FORMS_START + 360 -#define SPECIES_URSHIFU_GIGANTAMAX FORMS_START + 361 -#define SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX FORMS_START + 362 +#define SPECIES_TOXTRICITY_AMPED_GIGANTAMAX FORMS_START + 354 +#define SPECIES_TOXTRICITY_LOW_KEY_GIGANTAMAX FORMS_START + 355 +#define SPECIES_CENTISKORCH_GIGANTAMAX FORMS_START + 356 +#define SPECIES_HATTERENE_GIGANTAMAX FORMS_START + 357 +#define SPECIES_GRIMMSNARL_GIGANTAMAX FORMS_START + 358 +#define SPECIES_ALCREMIE_GIGANTAMAX FORMS_START + 359 +#define SPECIES_COPPERAJAH_GIGANTAMAX FORMS_START + 360 +#define SPECIES_DURALUDON_GIGANTAMAX FORMS_START + 361 +#define SPECIES_URSHIFU_GIGANTAMAX FORMS_START + 362 +#define SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX FORMS_START + 363 #define FORMS_START SPECIES_ENAMORUS #define SPECIES_EGG SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX + 1 diff --git a/src/battle_dynamax.c b/src/battle_dynamax.c index 942605b2c2..c29c9d28e0 100644 --- a/src/battle_dynamax.c +++ b/src/battle_dynamax.c @@ -80,7 +80,8 @@ static const struct GMaxMove sGMaxMoveTable[] = {SPECIES_FLAPPLE_GIGANTAMAX, TYPE_GRASS, MOVE_G_MAX_TARTNESS}, {SPECIES_APPLETUN_GIGANTAMAX, TYPE_GRASS, MOVE_G_MAX_SWEETNESS}, {SPECIES_SANDACONDA_GIGANTAMAX, TYPE_GROUND, MOVE_G_MAX_SANDBLAST}, - {SPECIES_TOXTRICITY_GIGANTAMAX, TYPE_ELECTRIC, MOVE_G_MAX_STUN_SHOCK}, + {SPECIES_TOXTRICITY_AMPED_GIGANTAMAX, TYPE_ELECTRIC, MOVE_G_MAX_STUN_SHOCK}, + {SPECIES_TOXTRICITY_LOW_KEY_GIGANTAMAX, TYPE_ELECTRIC, MOVE_G_MAX_STUN_SHOCK}, {SPECIES_CENTISKORCH_GIGANTAMAX, TYPE_FIRE, MOVE_G_MAX_CENTIFERNO}, {SPECIES_HATTERENE_GIGANTAMAX, TYPE_FAIRY, MOVE_G_MAX_SMITE}, {SPECIES_GRIMMSNARL_GIGANTAMAX, TYPE_DARK, MOVE_G_MAX_SNOOZE}, @@ -93,7 +94,6 @@ static const struct GMaxMove sGMaxMoveTable[] = // forward declarations static void SpriteCb_DynamaxTrigger(struct Sprite *); -static void SpriteCb_DynamaxIndicator(struct Sprite *); // Returns whether a battler is Dynamaxed. bool32 IsDynamaxed(u16 battlerId) @@ -1283,62 +1283,6 @@ void DestroyDynamaxTriggerSprite(void) #undef tBattler #undef tHide - -// DYNAMAX INDICATOR: -static const u8 ALIGNED(4) sDynamaxIndicatorGfx[] = INCBIN_U8("graphics/battle_interface/dynamax_indicator.4bpp"); -static const u16 sDynamaxIndicatorPal[] = INCBIN_U16("graphics/battle_interface/misc_indicator.gbapal"); - -static const struct SpriteSheet sSpriteSheet_DynamaxIndicator = -{ - sDynamaxIndicatorGfx, sizeof(sDynamaxIndicatorGfx), TAG_DYNAMAX_INDICATOR_TILE -}; -static const struct SpritePalette sSpritePalette_DynamaxIndicator = -{ - sDynamaxIndicatorPal, TAG_MISC_INDICATOR_PAL -}; - -static const struct SpriteSheet sDynamaxIndicator_SpriteSheet[] = -{ - {sDynamaxIndicatorGfx, sizeof(sDynamaxIndicatorGfx), TAG_DYNAMAX_INDICATOR_TILE} -}; - -static const struct SpritePalette sDynamaxIndicator_SpritePalette[] = -{ - {sDynamaxIndicatorPal, TAG_MISC_INDICATOR_PAL} -}; - -static const struct OamData sOamData_DynamaxIndicator = -{ - .shape = SPRITE_SHAPE(16x16), - .size = SPRITE_SIZE(16x16), - .priority = 1, -}; - -static const struct SpriteTemplate sSpriteTemplate_DynamaxIndicator = -{ - .tileTag = TAG_DYNAMAX_INDICATOR_TILE, - .paletteTag = TAG_MISC_INDICATOR_PAL, - .oam = &sOamData_DynamaxIndicator, - .anims = gDummySpriteAnimTable, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = SpriteCb_DynamaxIndicator, -}; - -static const s8 sIndicatorPositions[][2] = -{ - [B_POSITION_PLAYER_LEFT] = {52, -9}, - [B_POSITION_OPPONENT_LEFT] = {44, -9}, - [B_POSITION_PLAYER_RIGHT] = {52, -9}, - [B_POSITION_OPPONENT_RIGHT] = {44, -9}, -}; - -// for sprite data fields -#define tBattler data[0] -#define tType data[1] // Indicator type: dynamax -#define tPosX data[2] -#define tLevelXDelta data[3] // X position depends whether level has 3, 2 or 1 digit - // data fields for healthboxMain // oam.affineParam holds healthboxRight spriteId #define hMain_DynamaxIndicatorId data[3] @@ -1351,88 +1295,3 @@ static const s8 sIndicatorPositions[][2] = // data fields for healthbar #define hBar_HealthBoxSpriteId data[5] - -void DynamaxIndicator_LoadSpriteGfx(void) -{ - LoadSpriteSheet(sDynamaxIndicator_SpriteSheet); - LoadSpritePalette(sDynamaxIndicator_SpritePalette); -} - -bool32 DynamaxIndicator_ShouldBeInvisible(u32 battlerId) -{ - return !IsDynamaxed(battlerId); -} - -u8 DynamaxIndicator_GetSpriteId(u32 healthboxSpriteId) -{ - return gBattleStruct->dynamax.indicatorSpriteId[gSprites[healthboxSpriteId].hMain_Battler]; -} - -void DynamaxIndicator_SetVisibilities(u32 healthboxId, bool32 invisible) -{ - u8 spriteId = DynamaxIndicator_GetSpriteId(healthboxId); - u32 battlerId = gSprites[healthboxId].hMain_Battler; - - if (invisible == TRUE) - gSprites[spriteId].invisible = TRUE; - else // Try visible. - gSprites[spriteId].invisible = DynamaxIndicator_ShouldBeInvisible(battlerId); -} - -void DynamaxIndicator_UpdateOamPriority(u32 healthboxId, u32 oamPriority) -{ - u8 spriteId = DynamaxIndicator_GetSpriteId(healthboxId); - gSprites[spriteId].oam.priority = oamPriority; -} - -void DynamaxIndicator_UpdateLevel(u32 healthboxId, u32 level) -{ - s16 xDelta = 0; - u8 spriteId = DynamaxIndicator_GetSpriteId(healthboxId); - - if (level >= 100) - xDelta -= 4; - else if (level < 10) - xDelta += 5; - - gSprites[spriteId].tLevelXDelta = xDelta; -} - -void DynamaxIndicator_CreateSprite(u32 battlerId, u32 healthboxSpriteId) -{ - u32 position; - u8 spriteId; - s16 xHealthbox = 0, y = 0; - s32 x = 0; - - position = GetBattlerPosition(battlerId); - GetBattlerHealthboxCoords(battlerId, &xHealthbox, &y); - - x = sIndicatorPositions[position][0]; - y += sIndicatorPositions[position][1]; - - spriteId = gBattleStruct->dynamax.indicatorSpriteId[battlerId] = CreateSpriteAtEnd(&sSpriteTemplate_DynamaxIndicator, 0, y, 0); - gSprites[spriteId].tBattler = battlerId; - gSprites[spriteId].tPosX = x; - gSprites[spriteId].invisible = TRUE; -} - -void DynamaxIndicator_DestroySprite(u32 healthboxSpriteId) -{ - u8 spriteId = DynamaxIndicator_GetSpriteId(healthboxSpriteId); - DestroySprite(&gSprites[spriteId]); -} - -static void SpriteCb_DynamaxIndicator(struct Sprite *sprite) -{ - u32 battlerId = sprite->tBattler; - - sprite->x = gSprites[gHealthboxSpriteIds[battlerId]].x + sprite->tPosX + sprite->tLevelXDelta; - sprite->x2 = gSprites[gHealthboxSpriteIds[battlerId]].x2; - sprite->y2 = gSprites[gHealthboxSpriteIds[battlerId]].y2; -} - -#undef tBattler -#undef tType -#undef tPosX -#undef tLevelXDelta diff --git a/src/battle_gfx_sfx_util.c b/src/battle_gfx_sfx_util.c index d66d2592c4..f321ff75dd 100644 --- a/src/battle_gfx_sfx_util.c +++ b/src/battle_gfx_sfx_util.c @@ -708,7 +708,6 @@ bool8 BattleLoadAllHealthBoxesGfx(u8 state) LoadSpritePalette(&sSpritePalettes_HealthBoxHealthBar[0]); LoadSpritePalette(&sSpritePalettes_HealthBoxHealthBar[1]); MegaIndicator_LoadSpritesGfx(); - DynamaxIndicator_LoadSpriteGfx(); } else if (!IsDoubleBattle()) { diff --git a/src/battle_interface.c b/src/battle_interface.c index 139bcc1603..ac33177a77 100644 --- a/src/battle_interface.c +++ b/src/battle_interface.c @@ -854,9 +854,6 @@ u8 CreateBattlerHealthboxSprites(u8 battlerId) // Create mega indicator sprite. MegaIndicator_CreateSprite(battlerId, healthboxLeftSpriteId); - // Create dynamax indicator sprites. - DynamaxIndicator_CreateSprite(battlerId, healthboxLeftSpriteId); - gBattleStruct->ballSpriteIds[0] = MAX_SPRITES; gBattleStruct->ballSpriteIds[1] = MAX_SPRITES; @@ -940,7 +937,6 @@ void SetHealthboxSpriteInvisible(u8 healthboxSpriteId) gSprites[gSprites[healthboxSpriteId].hMain_HealthBarSpriteId].invisible = TRUE; gSprites[gSprites[healthboxSpriteId].oam.affineParam].invisible = TRUE; MegaIndicator_SetVisibilities(healthboxSpriteId, TRUE); - DynamaxIndicator_SetVisibilities(healthboxSpriteId, TRUE); } void SetHealthboxSpriteVisible(u8 healthboxSpriteId) @@ -949,7 +945,6 @@ void SetHealthboxSpriteVisible(u8 healthboxSpriteId) gSprites[gSprites[healthboxSpriteId].hMain_HealthBarSpriteId].invisible = FALSE; gSprites[gSprites[healthboxSpriteId].oam.affineParam].invisible = FALSE; MegaIndicator_SetVisibilities(healthboxSpriteId, FALSE); - DynamaxIndicator_SetVisibilities(healthboxSpriteId, FALSE); } static void UpdateSpritePos(u8 spriteId, s16 x, s16 y) @@ -976,7 +971,6 @@ static void TryToggleHealboxVisibility(u32 priority, u32 healthboxLeftSpriteId, gSprites[healthboxRightSpriteId].invisible = invisible; gSprites[healthbarSpriteId].invisible = invisible; MegaIndicator_SetVisibilities(healthboxLeftSpriteId, invisible); - DynamaxIndicator_SetVisibilities(healthboxLeftSpriteId, invisible); } void UpdateOamPriorityInAllHealthboxes(u8 priority, bool32 hideHPBoxes) @@ -994,7 +988,6 @@ void UpdateOamPriorityInAllHealthboxes(u8 priority, bool32 hideHPBoxes) gSprites[healthbarSpriteId].oam.priority = priority; MegaIndicator_UpdateOamPriority(healthboxLeftSpriteId, priority); - DynamaxIndicator_UpdateOamPriority(healthboxLeftSpriteId, priority); if (B_HIDE_HEALTHBOX_IN_ANIMS == TRUE && hideHPBoxes && IsBattlerAlive(i)) TryToggleHealboxVisibility(priority, healthboxLeftSpriteId, healthboxRightSpriteId, healthbarSpriteId); @@ -1056,8 +1049,6 @@ static void UpdateLvlInHealthbox(u8 healthboxSpriteId, u8 lvl) xPos = 5 * (3 - (objVram - (text + 2))) - 1; MegaIndicator_UpdateLevel(healthboxSpriteId, lvl); MegaIndicator_SetVisibilities(healthboxSpriteId, FALSE); - DynamaxIndicator_UpdateLevel(healthboxSpriteId, lvl); - DynamaxIndicator_SetVisibilities(healthboxSpriteId, FALSE); } else { @@ -1623,6 +1614,7 @@ enum INDICATOR_MEGA, INDICATOR_ALPHA, INDICATOR_OMEGA, + INDICATOR_DYNAMAX, INDICATOR_COUNT, }; @@ -1631,12 +1623,15 @@ static const u16 sMegaIndicatorPal[] = INCBIN_U16("graphics/battle_interface/meg static const u8 ALIGNED(4) sAlphaIndicatorGfx[] = INCBIN_U8("graphics/battle_interface/alpha_indicator.4bpp"); static const u8 ALIGNED(4) sOmegaIndicatorGfx[] = INCBIN_U8("graphics/battle_interface/omega_indicator.4bpp"); static const u16 sAlphaOmegaIndicatorPal[] = INCBIN_U16("graphics/battle_interface/misc_indicator.gbapal"); +static const u8 ALIGNED(4) sDynamaxIndicatorGfx[] = INCBIN_U8("graphics/battle_interface/dynamax_indicator.4bpp"); +static const u16 sDynamaxIndicatorPal[] = INCBIN_U16("graphics/battle_interface/misc_indicator.gbapal"); static const struct SpriteSheet sMegaIndicator_SpriteSheets[] = { [INDICATOR_MEGA] = {sMegaIndicatorGfx, sizeof(sMegaIndicatorGfx), TAG_MEGA_INDICATOR_TILE}, [INDICATOR_ALPHA] = {sAlphaIndicatorGfx, sizeof(sAlphaIndicatorGfx), TAG_ALPHA_INDICATOR_TILE}, [INDICATOR_OMEGA] = {sOmegaIndicatorGfx, sizeof(sOmegaIndicatorGfx), TAG_OMEGA_INDICATOR_TILE}, + [INDICATOR_DYNAMAX] = {sDynamaxIndicatorGfx, sizeof(sDynamaxIndicatorGfx), TAG_DYNAMAX_INDICATOR_TILE}, [INDICATOR_COUNT] = {0} }; static const struct SpritePalette sMegaIndicator_SpritePalettes[] = @@ -1644,6 +1639,7 @@ static const struct SpritePalette sMegaIndicator_SpritePalettes[] = [INDICATOR_MEGA] = {sMegaIndicatorPal, TAG_MEGA_INDICATOR_PAL}, [INDICATOR_ALPHA] = {sAlphaOmegaIndicatorPal, TAG_MISC_INDICATOR_PAL}, [INDICATOR_OMEGA] = {sAlphaOmegaIndicatorPal, TAG_MISC_INDICATOR_PAL}, + [INDICATOR_DYNAMAX] = {sDynamaxIndicatorPal, TAG_MISC_INDICATOR_PAL}, [INDICATOR_COUNT] = {0} }; @@ -1670,6 +1666,7 @@ static const u16 sMegaIndicatorTags[][2] = [INDICATOR_MEGA] = {TAG_MEGA_INDICATOR_TILE, TAG_MEGA_INDICATOR_PAL}, [INDICATOR_ALPHA] = {TAG_ALPHA_INDICATOR_TILE, TAG_MISC_INDICATOR_PAL}, [INDICATOR_OMEGA] = {TAG_OMEGA_INDICATOR_TILE, TAG_MISC_INDICATOR_PAL}, + [INDICATOR_DYNAMAX] = {TAG_DYNAMAX_INDICATOR_TILE, TAG_MISC_INDICATOR_PAL}, }; static const s8 sIndicatorPositions[][2] = @@ -1696,8 +1693,9 @@ static bool32 MegaIndicator_ShouldBeInvisible(u32 battlerId, struct Sprite *spri { bool32 megaEvolved = IsBattlerMegaEvolved(battlerId); bool32 primalReverted = IsBattlerPrimalReverted(battlerId); + bool32 dynamaxed = IsDynamaxed(battlerId); - if (!megaEvolved && !primalReverted) + if (!megaEvolved && !primalReverted && !dynamaxed) return TRUE; if (megaEvolved) @@ -1706,6 +1704,8 @@ static bool32 MegaIndicator_ShouldBeInvisible(u32 battlerId, struct Sprite *spri sprite->tType = INDICATOR_ALPHA; else if (primalReverted && gBattleMons[battlerId].species == SPECIES_GROUDON_PRIMAL) sprite->tType = INDICATOR_OMEGA; + else if (dynamaxed) + sprite->tType = INDICATOR_DYNAMAX; sprite->oam.tileNum = GetSpriteTileStartByTag(sMegaIndicatorTags[sprite->tType][0]); sprite->oam.paletteNum = IndexOfSpritePaletteTag(sMegaIndicatorTags[sprite->tType][1]); diff --git a/src/data/pokemon/form_change_table_pointers.h b/src/data/pokemon/form_change_table_pointers.h index b9d3bc0d91..9e81bdab67 100644 --- a/src/data/pokemon/form_change_table_pointers.h +++ b/src/data/pokemon/form_change_table_pointers.h @@ -261,8 +261,10 @@ const struct FormChange *const gFormChangeTablePointers[NUM_SPECIES] = [SPECIES_CRAMORANT] = sCramorantFormChangeTable, [SPECIES_CRAMORANT_GULPING] = sCramorantFormChangeTable, [SPECIES_CRAMORANT_GORGING] = sCramorantFormChangeTable, - [SPECIES_TOXTRICITY] = sToxtricityFormChangeTable, - [SPECIES_TOXTRICITY_GIGANTAMAX] = sToxtricityFormChangeTable, + [SPECIES_TOXTRICITY] = sToxtricityAmpedFormChangeTable, + [SPECIES_TOXTRICITY_LOW_KEY] = sToxtricityAmpedFormChangeTable, + [SPECIES_TOXTRICITY_AMPED_GIGANTAMAX] = sToxtricityLowKeyFormChangeTable, + [SPECIES_TOXTRICITY_LOW_KEY_GIGANTAMAX] = sToxtricityLowKeyFormChangeTable, [SPECIES_CENTISKORCH] = sCentiskorchFormChangeTable, [SPECIES_CENTISKORCH_GIGANTAMAX] = sCentiskorchFormChangeTable, [SPECIES_HATTERENE] = sHattereneFormChangeTable, diff --git a/src/data/pokemon/form_change_tables.h b/src/data/pokemon/form_change_tables.h index 62963d95f6..81ca9bd150 100644 --- a/src/data/pokemon/form_change_tables.h +++ b/src/data/pokemon/form_change_tables.h @@ -607,47 +607,189 @@ static const struct FormChange sEnamorusFormChangeTable[] = { #endif -// Gigantamax Forms -#define GIGANTAMAX_FORM(species) \ - { \ - {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_##species##_GIGANTAMAX},\ - {FORM_CHANGE_TERMINATOR}, \ - }; +static const struct FormChange sButterfreeFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_BUTTERFREE_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sPikachuFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_PIKACHU_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sMeowthFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_MEOWTH_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sMachampFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_MACHAMP_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sKinglerFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_KINGLER_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sLaprasFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_LAPRAS_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sEeveeFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_EEVEE_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sSnorlaxFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_SNORLAX_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; -static const struct FormChange sButterfreeFormChangeTable[] = GIGANTAMAX_FORM(BUTTERFREE) -static const struct FormChange sPikachuFormChangeTable[] = GIGANTAMAX_FORM(PIKACHU) -static const struct FormChange sMeowthFormChangeTable[] = GIGANTAMAX_FORM(MEOWTH) -static const struct FormChange sMachampFormChangeTable[] = GIGANTAMAX_FORM(MACHAMP) -static const struct FormChange sKinglerFormChangeTable[] = GIGANTAMAX_FORM(KINGLER) -static const struct FormChange sLaprasFormChangeTable[] = GIGANTAMAX_FORM(LAPRAS) -static const struct FormChange sEeveeFormChangeTable[] = GIGANTAMAX_FORM(EEVEE) -static const struct FormChange sSnorlaxFormChangeTable[] = GIGANTAMAX_FORM(SNORLAX) #if P_GEN_5_POKEMON == TRUE -static const struct FormChange sGarbodorFormChangeTable[] = GIGANTAMAX_FORM(GARBODOR) +static const struct FormChange sGarbodorFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_GARBODOR_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; + #endif #if P_GEN_7_POKEMON == TRUE -static const struct FormChange sMelmetalFormChangeTable[] = GIGANTAMAX_FORM(MELMETAL) +static const struct FormChange sMelmetalFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_MELMETAL_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; + #endif #if P_GEN_8_POKEMON == TRUE -static const struct FormChange sRillaboomFormChangeTable[] = GIGANTAMAX_FORM(RILLABOOM) -static const struct FormChange sCinderaceFormChangeTable[] = GIGANTAMAX_FORM(CINDERACE) -static const struct FormChange sInteleonFormChangeTable[] = GIGANTAMAX_FORM(INTELEON) -static const struct FormChange sCorviknightFormChangeTable[] = GIGANTAMAX_FORM(CORVIKNIGHT) -static const struct FormChange sOrbeetleFormChangeTable[] = GIGANTAMAX_FORM(ORBEETLE) -static const struct FormChange sDrednawFormChangeTable[] = GIGANTAMAX_FORM(DREDNAW) -static const struct FormChange sCoalossalFormChangeTable[] = GIGANTAMAX_FORM(COALOSSAL) -static const struct FormChange sFlappleFormChangeTable[] = GIGANTAMAX_FORM(FLAPPLE) -static const struct FormChange sAppletunFormChangeTable[] = GIGANTAMAX_FORM(APPLETUN) -static const struct FormChange sSandacondaFormChangeTable[] = GIGANTAMAX_FORM(SANDACONDA) -static const struct FormChange sToxtricityFormChangeTable[] = GIGANTAMAX_FORM(TOXTRICITY) -static const struct FormChange sCentiskorchFormChangeTable[] = GIGANTAMAX_FORM(CENTISKORCH) -static const struct FormChange sHattereneFormChangeTable[] = GIGANTAMAX_FORM(HATTERENE) -static const struct FormChange sGrimmsnarlFormChangeTable[] = GIGANTAMAX_FORM(GRIMMSNARL) -static const struct FormChange sAlcremieFormChangeTable[] = GIGANTAMAX_FORM(ALCREMIE) -static const struct FormChange sCopperajahFormChangeTable[] = GIGANTAMAX_FORM(COPPERAJAH) -static const struct FormChange sDuraludonFormChangeTable[] = GIGANTAMAX_FORM(DURALUDON) -static const struct FormChange sUrshifuFormChangeTable[] = GIGANTAMAX_FORM(URSHIFU) -static const struct FormChange sUrshifuRapidStrikeFormChangeTable[] = GIGANTAMAX_FORM(URSHIFU_RAPID_STRIKE_STYLE) +static const struct FormChange sRillaboomFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_RILLABOOM_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sCinderaceFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_CINDERACE_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sInteleonFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_INTELEON_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sCorviknightFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_CORVIKNIGHT_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sOrbeetleFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_ORBEETLE_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sDrednawFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_DREDNAW_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sCoalossalFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_COALOSSAL_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sFlappleFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_FLAPPLE_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sAppletunFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_APPLETUN_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sSandacondaFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_SANDACONDA_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sToxtricityAmpedFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_TOXTRICITY_AMPED_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; +static const struct FormChange sToxtricityLowKeyFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_TOXTRICITY_LOW_KEY_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; +static const struct FormChange sCentiskorchFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_CENTISKORCH_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sHattereneFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_HATTERENE_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sGrimmsnarlFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_GRIMMSNARL_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sAlcremieFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_ALCREMIE_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sCopperajahFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_COPPERAJAH_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sDuraludonFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_DURALUDON_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sUrshifuFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_URSHIFU_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sUrshifuRapidStrikeFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; + #endif #undef WHEN_LEARNED diff --git a/src/data/pokemon/form_species_table_pointers.h b/src/data/pokemon/form_species_table_pointers.h index b27fc1ae0e..147410323b 100644 --- a/src/data/pokemon/form_species_table_pointers.h +++ b/src/data/pokemon/form_species_table_pointers.h @@ -618,7 +618,8 @@ const u16 *const gFormSpeciesIdTables[NUM_SPECIES] = [SPECIES_FLAPPLE_GIGANTAMAX] = sFlappleFormSpeciesIdTable, [SPECIES_APPLETUN_GIGANTAMAX] = sAppletunFormSpeciesIdTable, [SPECIES_SANDACONDA_GIGANTAMAX] = sSandacondaFormSpeciesIdTable, - [SPECIES_TOXTRICITY_GIGANTAMAX] = sToxtricityFormSpeciesIdTable, + [SPECIES_TOXTRICITY_AMPED_GIGANTAMAX] = sToxtricityFormSpeciesIdTable, + [SPECIES_TOXTRICITY_LOW_KEY_GIGANTAMAX] = sToxtricityFormSpeciesIdTable, [SPECIES_CENTISKORCH_GIGANTAMAX] = sCentiskorchFormSpeciesIdTable, [SPECIES_HATTERENE_GIGANTAMAX] = sHattereneFormSpeciesIdTable, [SPECIES_GRIMMSNARL_GIGANTAMAX] = sGrimmsnarlFormSpeciesIdTable, diff --git a/src/data/pokemon/form_species_tables.h b/src/data/pokemon/form_species_tables.h index 9e468b6661..f1054b1d68 100644 --- a/src/data/pokemon/form_species_tables.h +++ b/src/data/pokemon/form_species_tables.h @@ -1171,7 +1171,8 @@ static const u16 sCramorantFormSpeciesIdTable[] = { static const u16 sToxtricityFormSpeciesIdTable[] = { SPECIES_TOXTRICITY, SPECIES_TOXTRICITY_LOW_KEY, - SPECIES_TOXTRICITY_GIGANTAMAX, + SPECIES_TOXTRICITY_AMPED_GIGANTAMAX, + SPECIES_TOXTRICITY_LOW_KEY_GIGANTAMAX, FORM_SPECIES_END, }; diff --git a/src/data/pokemon/level_up_learnset_pointers.h b/src/data/pokemon/level_up_learnset_pointers.h index a99c39aa96..6fad71aeae 100644 --- a/src/data/pokemon/level_up_learnset_pointers.h +++ b/src/data/pokemon/level_up_learnset_pointers.h @@ -1361,7 +1361,8 @@ const struct LevelUpMove *const gLevelUpLearnsets[NUM_SPECIES] = [SPECIES_FLAPPLE_GIGANTAMAX] = sFlappleLevelUpLearnset, [SPECIES_APPLETUN_GIGANTAMAX] = sAppletunLevelUpLearnset, [SPECIES_SANDACONDA_GIGANTAMAX] = sSandacondaLevelUpLearnset, - [SPECIES_TOXTRICITY_GIGANTAMAX] = sToxtricityLevelUpLearnset, + [SPECIES_TOXTRICITY_AMPED_GIGANTAMAX] = sToxtricityLevelUpLearnset, + [SPECIES_TOXTRICITY_LOW_KEY_GIGANTAMAX] = sToxtricityLowKeyLevelUpLearnset, [SPECIES_CENTISKORCH_GIGANTAMAX] = sCentiskorchLevelUpLearnset, [SPECIES_HATTERENE_GIGANTAMAX] = sHattereneLevelUpLearnset, [SPECIES_GRIMMSNARL_GIGANTAMAX] = sGrimmsnarlLevelUpLearnset, diff --git a/src/data/pokemon/species_info.h b/src/data/pokemon/species_info.h index d3acfd3fc5..940cd68911 100644 --- a/src/data/pokemon/species_info.h +++ b/src/data/pokemon/species_info.h @@ -24956,11 +24956,16 @@ const struct SpeciesInfo gSpeciesInfo[] = SANDACONDA_MISC_INFO, .gigantamax = TRUE, }, - [SPECIES_TOXTRICITY_GIGANTAMAX] = + [SPECIES_TOXTRICITY_AMPED_GIGANTAMAX] = { TOXTRICITY_MISC_INFO(ABILITY_PLUS), .gigantamax = TRUE, }, + [SPECIES_TOXTRICITY_LOW_KEY_GIGANTAMAX] = + { + TOXTRICITY_MISC_INFO(ABILITY_MINUS), + .gigantamax = TRUE, + }, [SPECIES_CENTISKORCH_GIGANTAMAX] = { CENTISKORCH_MISC_INFO, diff --git a/src/data/pokemon/teachable_learnset_pointers.h b/src/data/pokemon/teachable_learnset_pointers.h index b4505e9219..1273c422ad 100644 --- a/src/data/pokemon/teachable_learnset_pointers.h +++ b/src/data/pokemon/teachable_learnset_pointers.h @@ -1361,7 +1361,8 @@ const u16 *const gTeachableLearnsets[NUM_SPECIES] = [SPECIES_FLAPPLE_GIGANTAMAX] = sFlappleTeachableLearnset, [SPECIES_APPLETUN_GIGANTAMAX] = sAppletunTeachableLearnset, [SPECIES_SANDACONDA_GIGANTAMAX] = sSandacondaTeachableLearnset, - [SPECIES_TOXTRICITY_GIGANTAMAX] = sToxtricityTeachableLearnset, + [SPECIES_TOXTRICITY_AMPED_GIGANTAMAX] = sToxtricityTeachableLearnset, + [SPECIES_TOXTRICITY_LOW_KEY_GIGANTAMAX] = sToxtricityLowKeyTeachableLearnset, [SPECIES_CENTISKORCH_GIGANTAMAX] = sCentiskorchTeachableLearnset, [SPECIES_HATTERENE_GIGANTAMAX] = sHattereneTeachableLearnset, [SPECIES_GRIMMSNARL_GIGANTAMAX] = sGrimmsnarlTeachableLearnset, diff --git a/src/data/pokemon_graphics/back_pic_coordinates.h b/src/data/pokemon_graphics/back_pic_coordinates.h index 6cbaa6c493..97444fa3a8 100644 --- a/src/data/pokemon_graphics/back_pic_coordinates.h +++ b/src/data/pokemon_graphics/back_pic_coordinates.h @@ -1383,7 +1383,8 @@ const struct MonCoords gMonBackPicCoords[NUM_SPECIES + 1] = [SPECIES_FLAPPLE_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, [SPECIES_APPLETUN_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, [SPECIES_SANDACONDA_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 5 }, - [SPECIES_TOXTRICITY_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_TOXTRICITY_AMPED_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_TOXTRICITY_LOW_KEY_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_CENTISKORCH_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, [SPECIES_HATTERENE_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, [SPECIES_GRIMMSNARL_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 10 }, diff --git a/src/data/pokemon_graphics/back_pic_table.h b/src/data/pokemon_graphics/back_pic_table.h index 06316431cc..033ab366a8 100644 --- a/src/data/pokemon_graphics/back_pic_table.h +++ b/src/data/pokemon_graphics/back_pic_table.h @@ -1360,7 +1360,8 @@ const struct CompressedSpriteSheet gMonBackPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(FLAPPLE_GIGANTAMAX, gMonBackPic_FlappleGigantamax), SPECIES_SPRITE(APPLETUN_GIGANTAMAX, gMonBackPic_AppletunGigantamax), SPECIES_SPRITE(SANDACONDA_GIGANTAMAX, gMonBackPic_SandacondaGigantamax), - SPECIES_SPRITE(TOXTRICITY_GIGANTAMAX, gMonBackPic_ToxtricityGigantamax), + SPECIES_SPRITE(TOXTRICITY_AMPED_GIGANTAMAX, gMonBackPic_ToxtricityGigantamax), + SPECIES_SPRITE(TOXTRICITY_LOW_KEY_GIGANTAMAX, gMonBackPic_ToxtricityGigantamax), SPECIES_SPRITE(CENTISKORCH_GIGANTAMAX, gMonBackPic_CentiskorchGigantamax), SPECIES_SPRITE(HATTERENE_GIGANTAMAX, gMonBackPic_HattereneGigantamax), SPECIES_SPRITE(GRIMMSNARL_GIGANTAMAX, gMonBackPic_GrimmsnarlGigantamax), diff --git a/src/data/pokemon_graphics/front_pic_anims.h b/src/data/pokemon_graphics/front_pic_anims.h index e820b21f85..130dcad60a 100644 --- a/src/data/pokemon_graphics/front_pic_anims.h +++ b/src/data/pokemon_graphics/front_pic_anims.h @@ -10154,202 +10154,202 @@ static const union AnimCmd sAnim_DecidueyeHisuian_1[] = }; #endif -static const union AnimCmd sAnim_VENUSAUR_GIGANTAMAX_1[] = +static const union AnimCmd sAnim_VenusaurGigantamax_1[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; -static const union AnimCmd sAnim_CHARIZARD_GIGANTAMAX_1[] = +static const union AnimCmd sAnim_CharizardGigantamax_1[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; -static const union AnimCmd sAnim_BLASTOISE_GIGANTAMAX_1[] = +static const union AnimCmd sAnim_BlastoiseGigantamax_1[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; -static const union AnimCmd sAnim_BUTTERFREE_GIGANTAMAX_1[] = +static const union AnimCmd sAnim_ButterfreeGigantamax_1[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; -static const union AnimCmd sAnim_PIKACHU_GIGANTAMAX_1[] = +static const union AnimCmd sAnim_PikachuGigantamax_1[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; -static const union AnimCmd sAnim_MEOWTH_GIGANTAMAX_1[] = +static const union AnimCmd sAnim_MeowthGigantamax_1[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; -static const union AnimCmd sAnim_MACHAMP_GIGANTAMAX_1[] = +static const union AnimCmd sAnim_MachampGigantamax_1[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; -static const union AnimCmd sAnim_GENGAR_GIGANTAMAX_1[] = +static const union AnimCmd sAnim_GengarGigantamax_1[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; -static const union AnimCmd sAnim_KINGLER_GIGANTAMAX_1[] = +static const union AnimCmd sAnim_KinglerGigantamax_1[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; -static const union AnimCmd sAnim_LAPRAS_GIGANTAMAX_1[] = +static const union AnimCmd sAnim_LaprasGigantamax_1[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; -static const union AnimCmd sAnim_EEVEE_GIGANTAMAX_1[] = +static const union AnimCmd sAnim_EeveeGigantamax_1[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; -static const union AnimCmd sAnim_SNORLAX_GIGANTAMAX_1[] = +static const union AnimCmd sAnim_SnorlaxGigantamax_1[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; #if P_GEN_5_POKEMON == TRUE -static const union AnimCmd sAnim_GARBODOR_GIGANTAMAX_1[] = +static const union AnimCmd sAnim_GarbodorGigantamax_1[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; #endif #if P_GEN_7_POKEMON == TRUE -static const union AnimCmd sAnim_MELMETAL_GIGANTAMAX_1[] = +static const union AnimCmd sAnim_MelmetalGigantamax_1[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; #endif #if P_GEN_8_POKEMON == TRUE -static const union AnimCmd sAnim_RILLABOOM_GIGANTAMAX_1[] = +static const union AnimCmd sAnim_RillaboomGigantamax_1[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; -static const union AnimCmd sAnim_CINDERACE_GIGANTAMAX_1[] = +static const union AnimCmd sAnim_CinderaceGigantamax_1[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; -static const union AnimCmd sAnim_INTELEON_GIGANTAMAX_1[] = +static const union AnimCmd sAnim_InteleonGigantamax_1[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; -static const union AnimCmd sAnim_CORVIKNIGHT_GIGANTAMAX_1[] = +static const union AnimCmd sAnim_CorviknightGigantamax_1[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; -static const union AnimCmd sAnim_ORBEETLE_GIGANTAMAX_1[] = +static const union AnimCmd sAnim_OrbeetleGigantamax_1[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; -static const union AnimCmd sAnim_DREDNAW_GIGANTAMAX_1[] = +static const union AnimCmd sAnim_DrednawGigantamax_1[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; -static const union AnimCmd sAnim_COALOSSAL_GIGANTAMAX_1[] = +static const union AnimCmd sAnim_CoalossalGigantamax_1[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; -static const union AnimCmd sAnim_FLAPPLE_GIGANTAMAX_1[] = +static const union AnimCmd sAnim_FlappleGigantamax_1[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; -static const union AnimCmd sAnim_APPLETUN_GIGANTAMAX_1[] = +static const union AnimCmd sAnim_AppletunGigantamax_1[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; -static const union AnimCmd sAnim_SANDACONDA_GIGANTAMAX_1[] = +static const union AnimCmd sAnim_SandacondaGigantamax_1[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; -static const union AnimCmd sAnim_TOXTRICITY_GIGANTAMAX_1[] = +static const union AnimCmd sAnim_ToxtricityGigantamax_1[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; -static const union AnimCmd sAnim_CENTISKORCH_GIGANTAMAX_1[] = +static const union AnimCmd sAnim_CentiskorchGigantamax_1[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; -static const union AnimCmd sAnim_HATTERENE_GIGANTAMAX_1[] = +static const union AnimCmd sAnim_HattereneGigantamax_1[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; -static const union AnimCmd sAnim_GRIMMSNARL_GIGANTAMAX_1[] = +static const union AnimCmd sAnim_GrimmsnarlGigantamax_1[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; -static const union AnimCmd sAnim_ALCREMIE_GIGANTAMAX_1[] = +static const union AnimCmd sAnim_AlcremieGigantamax_1[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; -static const union AnimCmd sAnim_COPPERAJAH_GIGANTAMAX_1[] = +static const union AnimCmd sAnim_CopperajahGigantamax_1[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; -static const union AnimCmd sAnim_DURALUDON_GIGANTAMAX_1[] = +static const union AnimCmd sAnim_DuraludonGigantamax_1[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; -static const union AnimCmd sAnim_URSHIFU_GIGANTAMAX_1[] = +static const union AnimCmd sAnim_UrshifuGigantamax_1[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; -static const union AnimCmd sAnim_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX_1[] = +static const union AnimCmd sAnim_UrshifuRapidStrikeStyleGigantamax_1[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, @@ -11849,44 +11849,44 @@ SINGLE_ANIMATION(LycanrocDusk); SINGLE_ANIMATION(EnamorusTherian); #endif // Gigantamax Forms -SINGLE_ANIMATION(VENUSAUR_GIGANTAMAX); -SINGLE_ANIMATION(CHARIZARD_GIGANTAMAX); -SINGLE_ANIMATION(BLASTOISE_GIGANTAMAX); -SINGLE_ANIMATION(BUTTERFREE_GIGANTAMAX); -SINGLE_ANIMATION(PIKACHU_GIGANTAMAX); -SINGLE_ANIMATION(MEOWTH_GIGANTAMAX); -SINGLE_ANIMATION(MACHAMP_GIGANTAMAX); -SINGLE_ANIMATION(GENGAR_GIGANTAMAX); -SINGLE_ANIMATION(KINGLER_GIGANTAMAX); -SINGLE_ANIMATION(LAPRAS_GIGANTAMAX); -SINGLE_ANIMATION(EEVEE_GIGANTAMAX); -SINGLE_ANIMATION(SNORLAX_GIGANTAMAX); +SINGLE_ANIMATION(VenusaurGigantamax); +SINGLE_ANIMATION(CharizardGigantamax); +SINGLE_ANIMATION(BlastoiseGigantamax); +SINGLE_ANIMATION(ButterfreeGigantamax); +SINGLE_ANIMATION(PikachuGigantamax); +SINGLE_ANIMATION(MeowthGigantamax); +SINGLE_ANIMATION(MachampGigantamax); +SINGLE_ANIMATION(GengarGigantamax); +SINGLE_ANIMATION(KinglerGigantamax); +SINGLE_ANIMATION(LaprasGigantamax); +SINGLE_ANIMATION(EeveeGigantamax); +SINGLE_ANIMATION(SnorlaxGigantamax); #if P_GEN_5_POKEMON == TRUE -SINGLE_ANIMATION(GARBODOR_GIGANTAMAX); +SINGLE_ANIMATION(GarbodorGigantamax); #endif #if P_GEN_7_POKEMON == TRUE -SINGLE_ANIMATION(MELMETAL_GIGANTAMAX); +SINGLE_ANIMATION(MelmetalGigantamax); #endif #if P_GEN_8_POKEMON == TRUE -SINGLE_ANIMATION(RILLABOOM_GIGANTAMAX); -SINGLE_ANIMATION(CINDERACE_GIGANTAMAX); -SINGLE_ANIMATION(INTELEON_GIGANTAMAX); -SINGLE_ANIMATION(CORVIKNIGHT_GIGANTAMAX); -SINGLE_ANIMATION(ORBEETLE_GIGANTAMAX); -SINGLE_ANIMATION(DREDNAW_GIGANTAMAX); -SINGLE_ANIMATION(COALOSSAL_GIGANTAMAX); -SINGLE_ANIMATION(FLAPPLE_GIGANTAMAX); -SINGLE_ANIMATION(APPLETUN_GIGANTAMAX); -SINGLE_ANIMATION(SANDACONDA_GIGANTAMAX); -SINGLE_ANIMATION(TOXTRICITY_GIGANTAMAX); -SINGLE_ANIMATION(CENTISKORCH_GIGANTAMAX); -SINGLE_ANIMATION(HATTERENE_GIGANTAMAX); -SINGLE_ANIMATION(GRIMMSNARL_GIGANTAMAX); -SINGLE_ANIMATION(ALCREMIE_GIGANTAMAX); -SINGLE_ANIMATION(COPPERAJAH_GIGANTAMAX); -SINGLE_ANIMATION(DURALUDON_GIGANTAMAX); -SINGLE_ANIMATION(URSHIFU_GIGANTAMAX); -SINGLE_ANIMATION(URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX); +SINGLE_ANIMATION(RillaboomGigantamax); +SINGLE_ANIMATION(CinderaceGigantamax); +SINGLE_ANIMATION(InteleonGigantamax); +SINGLE_ANIMATION(CorviknightGigantamax); +SINGLE_ANIMATION(OrbeetleGigantamax); +SINGLE_ANIMATION(DrednawGigantamax); +SINGLE_ANIMATION(CoalossalGigantamax); +SINGLE_ANIMATION(FlappleGigantamax); +SINGLE_ANIMATION(AppletunGigantamax); +SINGLE_ANIMATION(SandacondaGigantamax); +SINGLE_ANIMATION(ToxtricityGigantamax); +SINGLE_ANIMATION(CentiskorchGigantamax); +SINGLE_ANIMATION(HattereneGigantamax); +SINGLE_ANIMATION(GrimmsnarlGigantamax); +SINGLE_ANIMATION(AlcremieGigantamax); +SINGLE_ANIMATION(CopperajahGigantamax); +SINGLE_ANIMATION(DuraludonGigantamax); +SINGLE_ANIMATION(UrshifuGigantamax); +SINGLE_ANIMATION(UrshifuRapidStrikeStyleGigantamax); #endif const union AnimCmd *const *const gMonFrontAnimsPtrTable[NUM_SPECIES + 1] = @@ -13167,44 +13167,45 @@ const union AnimCmd *const *const gMonFrontAnimsPtrTable[NUM_SPECIES + 1] = [SPECIES_ENAMORUS_THERIAN] = sAnims_EnamorusTherian, [SPECIES_BASCULEGION_FEMALE] = sAnims_Basculegion, #endif - [SPECIES_VENUSAUR_GIGANTAMAX] = sAnims_VENUSAUR_GIGANTAMAX, - [SPECIES_CHARIZARD_GIGANTAMAX] = sAnims_CHARIZARD_GIGANTAMAX, - [SPECIES_BLASTOISE_GIGANTAMAX] = sAnims_BLASTOISE_GIGANTAMAX, - [SPECIES_BUTTERFREE_GIGANTAMAX] = sAnims_BUTTERFREE_GIGANTAMAX, - [SPECIES_PIKACHU_GIGANTAMAX] = sAnims_PIKACHU_GIGANTAMAX, - [SPECIES_MEOWTH_GIGANTAMAX] = sAnims_MEOWTH_GIGANTAMAX, - [SPECIES_MACHAMP_GIGANTAMAX] = sAnims_MACHAMP_GIGANTAMAX, - [SPECIES_GENGAR_GIGANTAMAX] = sAnims_GENGAR_GIGANTAMAX, - [SPECIES_KINGLER_GIGANTAMAX] = sAnims_KINGLER_GIGANTAMAX, - [SPECIES_LAPRAS_GIGANTAMAX] = sAnims_LAPRAS_GIGANTAMAX, - [SPECIES_EEVEE_GIGANTAMAX] = sAnims_EEVEE_GIGANTAMAX, - [SPECIES_SNORLAX_GIGANTAMAX] = sAnims_SNORLAX_GIGANTAMAX, + [SPECIES_VENUSAUR_GIGANTAMAX] = sAnims_VenusaurGigantamax, + [SPECIES_CHARIZARD_GIGANTAMAX] = sAnims_CharizardGigantamax, + [SPECIES_BLASTOISE_GIGANTAMAX] = sAnims_BlastoiseGigantamax, + [SPECIES_BUTTERFREE_GIGANTAMAX] = sAnims_ButterfreeGigantamax, + [SPECIES_PIKACHU_GIGANTAMAX] = sAnims_PikachuGigantamax, + [SPECIES_MEOWTH_GIGANTAMAX] = sAnims_MeowthGigantamax, + [SPECIES_MACHAMP_GIGANTAMAX] = sAnims_MachampGigantamax, + [SPECIES_GENGAR_GIGANTAMAX] = sAnims_GengarGigantamax, + [SPECIES_KINGLER_GIGANTAMAX] = sAnims_KinglerGigantamax, + [SPECIES_LAPRAS_GIGANTAMAX] = sAnims_LaprasGigantamax, + [SPECIES_EEVEE_GIGANTAMAX] = sAnims_EeveeGigantamax, + [SPECIES_SNORLAX_GIGANTAMAX] = sAnims_SnorlaxGigantamax, #if P_GEN_5_POKEMON == TRUE - [SPECIES_GARBODOR_GIGANTAMAX] = sAnims_GARBODOR_GIGANTAMAX, + [SPECIES_GARBODOR_GIGANTAMAX] = sAnims_GarbodorGigantamax, #endif #if P_GEN_7_POKEMON == TRUE - [SPECIES_MELMETAL_GIGANTAMAX] = sAnims_MELMETAL_GIGANTAMAX, + [SPECIES_MELMETAL_GIGANTAMAX] = sAnims_MelmetalGigantamax, #endif #if P_GEN_8_POKEMON == TRUE - [SPECIES_RILLABOOM_GIGANTAMAX] = sAnims_RILLABOOM_GIGANTAMAX, - [SPECIES_CINDERACE_GIGANTAMAX] = sAnims_CINDERACE_GIGANTAMAX, - [SPECIES_INTELEON_GIGANTAMAX] = sAnims_INTELEON_GIGANTAMAX, - [SPECIES_CORVIKNIGHT_GIGANTAMAX] = sAnims_CORVIKNIGHT_GIGANTAMAX, - [SPECIES_ORBEETLE_GIGANTAMAX] = sAnims_ORBEETLE_GIGANTAMAX, - [SPECIES_DREDNAW_GIGANTAMAX] = sAnims_DREDNAW_GIGANTAMAX, - [SPECIES_COALOSSAL_GIGANTAMAX] = sAnims_COALOSSAL_GIGANTAMAX, - [SPECIES_FLAPPLE_GIGANTAMAX] = sAnims_FLAPPLE_GIGANTAMAX, - [SPECIES_APPLETUN_GIGANTAMAX] = sAnims_APPLETUN_GIGANTAMAX, - [SPECIES_SANDACONDA_GIGANTAMAX] = sAnims_SANDACONDA_GIGANTAMAX, - [SPECIES_TOXTRICITY_GIGANTAMAX] = sAnims_TOXTRICITY_GIGANTAMAX, - [SPECIES_CENTISKORCH_GIGANTAMAX] = sAnims_CENTISKORCH_GIGANTAMAX, - [SPECIES_HATTERENE_GIGANTAMAX] = sAnims_HATTERENE_GIGANTAMAX, - [SPECIES_GRIMMSNARL_GIGANTAMAX] = sAnims_GRIMMSNARL_GIGANTAMAX, - [SPECIES_ALCREMIE_GIGANTAMAX] = sAnims_ALCREMIE_GIGANTAMAX, - [SPECIES_COPPERAJAH_GIGANTAMAX] = sAnims_COPPERAJAH_GIGANTAMAX, - [SPECIES_DURALUDON_GIGANTAMAX] = sAnims_DURALUDON_GIGANTAMAX, - [SPECIES_URSHIFU_GIGANTAMAX] = sAnims_URSHIFU_GIGANTAMAX, - [SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX] = sAnims_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX, + [SPECIES_RILLABOOM_GIGANTAMAX] = sAnims_RillaboomGigantamax, + [SPECIES_CINDERACE_GIGANTAMAX] = sAnims_CinderaceGigantamax, + [SPECIES_INTELEON_GIGANTAMAX] = sAnims_InteleonGigantamax, + [SPECIES_CORVIKNIGHT_GIGANTAMAX] = sAnims_CorviknightGigantamax, + [SPECIES_ORBEETLE_GIGANTAMAX] = sAnims_OrbeetleGigantamax, + [SPECIES_DREDNAW_GIGANTAMAX] = sAnims_DrednawGigantamax, + [SPECIES_COALOSSAL_GIGANTAMAX] = sAnims_CoalossalGigantamax, + [SPECIES_FLAPPLE_GIGANTAMAX] = sAnims_FlappleGigantamax, + [SPECIES_APPLETUN_GIGANTAMAX] = sAnims_AppletunGigantamax, + [SPECIES_SANDACONDA_GIGANTAMAX] = sAnims_SandacondaGigantamax, + [SPECIES_TOXTRICITY_AMPED_GIGANTAMAX] = sAnims_ToxtricityGigantamax, + [SPECIES_TOXTRICITY_LOW_KEY_GIGANTAMAX] = sAnims_ToxtricityGigantamax, + [SPECIES_CENTISKORCH_GIGANTAMAX] = sAnims_CentiskorchGigantamax, + [SPECIES_HATTERENE_GIGANTAMAX] = sAnims_HattereneGigantamax, + [SPECIES_GRIMMSNARL_GIGANTAMAX] = sAnims_GrimmsnarlGigantamax, + [SPECIES_ALCREMIE_GIGANTAMAX] = sAnims_AlcremieGigantamax, + [SPECIES_COPPERAJAH_GIGANTAMAX] = sAnims_CopperajahGigantamax, + [SPECIES_DURALUDON_GIGANTAMAX] = sAnims_DuraludonGigantamax, + [SPECIES_URSHIFU_GIGANTAMAX] = sAnims_UrshifuGigantamax, + [SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX] = sAnims_UrshifuRapidStrikeStyleGigantamax, #endif [SPECIES_EGG] = sAnims_Egg, }; diff --git a/src/data/pokemon_graphics/front_pic_coordinates.h b/src/data/pokemon_graphics/front_pic_coordinates.h index 50e3a541a8..22fcf27c5c 100644 --- a/src/data/pokemon_graphics/front_pic_coordinates.h +++ b/src/data/pokemon_graphics/front_pic_coordinates.h @@ -1365,7 +1365,8 @@ const struct MonCoords gMonFrontPicCoords[NUM_SPECIES + 1] = [SPECIES_FLAPPLE_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, [SPECIES_APPLETUN_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, [SPECIES_SANDACONDA_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_TOXTRICITY_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_TOXTRICITY_AMPED_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_TOXTRICITY_LOW_KEY_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_CENTISKORCH_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 5 }, [SPECIES_HATTERENE_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_GRIMMSNARL_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, diff --git a/src/data/pokemon_graphics/front_pic_table.h b/src/data/pokemon_graphics/front_pic_table.h index 33a6afb5db..988fa7db06 100644 --- a/src/data/pokemon_graphics/front_pic_table.h +++ b/src/data/pokemon_graphics/front_pic_table.h @@ -1359,7 +1359,8 @@ const struct CompressedSpriteSheet gMonFrontPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(FLAPPLE_GIGANTAMAX, gMonFrontPic_FlappleGigantamax), SPECIES_SPRITE(APPLETUN_GIGANTAMAX, gMonFrontPic_AppletunGigantamax), SPECIES_SPRITE(SANDACONDA_GIGANTAMAX, gMonFrontPic_SandacondaGigantamax), - SPECIES_SPRITE(TOXTRICITY_GIGANTAMAX, gMonFrontPic_ToxtricityGigantamax), + SPECIES_SPRITE(TOXTRICITY_AMPED_GIGANTAMAX, gMonFrontPic_ToxtricityGigantamax), + SPECIES_SPRITE(TOXTRICITY_LOW_KEY_GIGANTAMAX, gMonFrontPic_ToxtricityGigantamax), SPECIES_SPRITE(CENTISKORCH_GIGANTAMAX, gMonFrontPic_CentiskorchGigantamax), SPECIES_SPRITE(HATTERENE_GIGANTAMAX, gMonFrontPic_HattereneGigantamax), SPECIES_SPRITE(GRIMMSNARL_GIGANTAMAX, gMonFrontPic_GrimmsnarlGigantamax), diff --git a/src/data/pokemon_graphics/palette_table.h b/src/data/pokemon_graphics/palette_table.h index caf4578a68..33bc94fecc 100644 --- a/src/data/pokemon_graphics/palette_table.h +++ b/src/data/pokemon_graphics/palette_table.h @@ -1359,7 +1359,8 @@ const struct CompressedSpritePalette gMonPaletteTable[NUM_SPECIES + 1] = SPECIES_PAL(FLAPPLE_GIGANTAMAX, gMonPalette_FlappleGigantamax), SPECIES_PAL(APPLETUN_GIGANTAMAX, gMonPalette_AppletunGigantamax), SPECIES_PAL(SANDACONDA_GIGANTAMAX, gMonPalette_SandacondaGigantamax), - SPECIES_PAL(TOXTRICITY_GIGANTAMAX, gMonPalette_ToxtricityGigantamax), + SPECIES_PAL(TOXTRICITY_AMPED_GIGANTAMAX, gMonPalette_ToxtricityGigantamax), + SPECIES_PAL(TOXTRICITY_LOW_KEY_GIGANTAMAX, gMonPalette_ToxtricityGigantamax), SPECIES_PAL(CENTISKORCH_GIGANTAMAX, gMonPalette_CentiskorchGigantamax), SPECIES_PAL(HATTERENE_GIGANTAMAX, gMonPalette_HattereneGigantamax), SPECIES_PAL(GRIMMSNARL_GIGANTAMAX, gMonPalette_GrimmsnarlGigantamax), diff --git a/src/data/pokemon_graphics/shiny_palette_table.h b/src/data/pokemon_graphics/shiny_palette_table.h index 13e19d4ca3..02d404add3 100644 --- a/src/data/pokemon_graphics/shiny_palette_table.h +++ b/src/data/pokemon_graphics/shiny_palette_table.h @@ -1358,7 +1358,8 @@ const struct CompressedSpritePalette gMonShinyPaletteTable[NUM_SPECIES + 1] = SPECIES_SHINY_PAL(FLAPPLE_GIGANTAMAX, gMonShinyPalette_FlappleGigantamax), SPECIES_SHINY_PAL(APPLETUN_GIGANTAMAX, gMonShinyPalette_AppletunGigantamax), SPECIES_SHINY_PAL(SANDACONDA_GIGANTAMAX, gMonShinyPalette_SandacondaGigantamax), - SPECIES_SHINY_PAL(TOXTRICITY_GIGANTAMAX, gMonShinyPalette_ToxtricityGigantamax), + SPECIES_SHINY_PAL(TOXTRICITY_AMPED_GIGANTAMAX, gMonShinyPalette_ToxtricityGigantamax), + SPECIES_SHINY_PAL(TOXTRICITY_LOW_KEY_GIGANTAMAX, gMonShinyPalette_ToxtricityGigantamax), SPECIES_SHINY_PAL(CENTISKORCH_GIGANTAMAX, gMonShinyPalette_CentiskorchGigantamax), SPECIES_SHINY_PAL(HATTERENE_GIGANTAMAX, gMonShinyPalette_HattereneGigantamax), SPECIES_SHINY_PAL(GRIMMSNARL_GIGANTAMAX, gMonShinyPalette_GrimmsnarlGigantamax), diff --git a/src/data/text/species_names.h b/src/data/text/species_names.h index 8b366ac17c..de48c6cae9 100644 --- a/src/data/text/species_names.h +++ b/src/data/text/species_names.h @@ -1363,7 +1363,8 @@ const u8 gSpeciesNames[NUM_SPECIES][POKEMON_NAME_LENGTH + 1] = { [SPECIES_FLAPPLE_GIGANTAMAX] = _("Flapple"), [SPECIES_APPLETUN_GIGANTAMAX] = _("Appletun"), [SPECIES_SANDACONDA_GIGANTAMAX] = _("Sandaconda"), - [SPECIES_TOXTRICITY_GIGANTAMAX] = _("Toxtricity"), + [SPECIES_TOXTRICITY_AMPED_GIGANTAMAX] = _("Toxtricity"), + [SPECIES_TOXTRICITY_LOW_KEY_GIGANTAMAX] = _("Toxtricity"), [SPECIES_CENTISKORCH_GIGANTAMAX] = _("Centiskorc"), [SPECIES_HATTERENE_GIGANTAMAX] = _("Hatterene"), [SPECIES_GRIMMSNARL_GIGANTAMAX] = _("Grimmsnarl"), diff --git a/src/pokemon.c b/src/pokemon.c index 877bc55a48..d2dc6a275a 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -1712,7 +1712,8 @@ static const u16 sSpeciesToNationalPokedexNum[NUM_SPECIES - 1] = [SPECIES_FLAPPLE_GIGANTAMAX - 1] = NATIONAL_DEX_FLAPPLE, [SPECIES_APPLETUN_GIGANTAMAX - 1] = NATIONAL_DEX_APPLETUN, [SPECIES_SANDACONDA_GIGANTAMAX - 1] = NATIONAL_DEX_SANDACONDA, - [SPECIES_TOXTRICITY_GIGANTAMAX - 1] = NATIONAL_DEX_TOXTRICITY, + [SPECIES_TOXTRICITY_AMPED_GIGANTAMAX - 1] = NATIONAL_DEX_TOXTRICITY, + [SPECIES_TOXTRICITY_LOW_KEY_GIGANTAMAX - 1] = NATIONAL_DEX_TOXTRICITY, [SPECIES_CENTISKORCH_GIGANTAMAX - 1] = NATIONAL_DEX_CENTISKORCH, [SPECIES_HATTERENE_GIGANTAMAX - 1] = NATIONAL_DEX_HATTERENE, [SPECIES_GRIMMSNARL_GIGANTAMAX - 1] = NATIONAL_DEX_GRIMMSNARL, diff --git a/src/pokemon_icon.c b/src/pokemon_icon.c index 529ea61543..e6848ddbc5 100644 --- a/src/pokemon_icon.c +++ b/src/pokemon_icon.c @@ -1319,7 +1319,8 @@ const u8 *const gMonIconTable[NUM_SPECIES + 1] = [SPECIES_FLAPPLE_GIGANTAMAX] = gMonIcon_FlappleGigantamax, [SPECIES_APPLETUN_GIGANTAMAX] = gMonIcon_AppletunGigantamax, [SPECIES_SANDACONDA_GIGANTAMAX] = gMonIcon_SandacondaGigantamax, - [SPECIES_TOXTRICITY_GIGANTAMAX] = gMonIcon_ToxtricityGigantamax, + [SPECIES_TOXTRICITY_AMPED_GIGANTAMAX] = gMonIcon_ToxtricityGigantamax, + [SPECIES_TOXTRICITY_LOW_KEY_GIGANTAMAX] = gMonIcon_ToxtricityGigantamax, [SPECIES_CENTISKORCH_GIGANTAMAX] = gMonIcon_CentiskorchGigantamax, [SPECIES_HATTERENE_GIGANTAMAX] = gMonIcon_HattereneGigantamax, [SPECIES_GRIMMSNARL_GIGANTAMAX] = gMonIcon_GrimmsnarlGigantamax, @@ -2586,7 +2587,8 @@ const u8 gMonIconPaletteIndices[] = [SPECIES_FLAPPLE_GIGANTAMAX] = 1, [SPECIES_APPLETUN_GIGANTAMAX] = 1, [SPECIES_SANDACONDA_GIGANTAMAX] = 1, - [SPECIES_TOXTRICITY_GIGANTAMAX] = 0, + [SPECIES_TOXTRICITY_AMPED_GIGANTAMAX] = 0, + [SPECIES_TOXTRICITY_LOW_KEY_GIGANTAMAX] = 0, [SPECIES_CENTISKORCH_GIGANTAMAX] = 0, [SPECIES_HATTERENE_GIGANTAMAX] = 0, [SPECIES_GRIMMSNARL_GIGANTAMAX] = 0, From 26971fc3ac4c36fab8d31950aa3642df8a1e0c6a Mon Sep 17 00:00:00 2001 From: Eduardo Quezada D'Ottone Date: Mon, 23 Oct 2023 08:59:15 -0300 Subject: [PATCH 135/162] Add species defines for base forms with names (#3248) * Fixed Aegislash test not being properly made. * Added conditions to BattleSetup_StartLegendaryBattle switch --- data/battle_scripts_1.s | 4 +- data/maps/BirthIsland_Exterior/scripts.inc | 8 +- .../Route119_WeatherInstitute_2F/scripts.inc | 6 +- .../cherrim/{normal => }/anim_front.png | Bin .../pokemon/cherrim/{normal => }/back.png | Bin .../pokemon/cherrim/{normal => }/normal.pal | 0 .../pokemon/cherrim/{normal => }/shiny.pal | 0 include/constants/species.h | 1963 +++++++++-------- include/graphics.h | 462 ++-- src/battle_ai_main.c | 2 +- src/battle_ai_util.c | 4 +- src/battle_dynamax.c | 2 +- src/battle_script_commands.c | 13 +- src/battle_setup.c | 8 +- src/battle_util.c | 11 +- src/battle_z_move.c | 5 +- src/data/bard_music/pokemon.h | 4 +- .../battle_frontier/battle_frontier_mons.h | 4 +- src/data/contest_opponents.h | 2 +- src/data/graphics/pokemon.h | 462 ++-- src/data/pokemon/egg_moves.h | 4 +- src/data/pokemon/evolution.h | 58 +- src/data/pokemon/form_change_table_pointers.h | 58 +- src/data/pokemon/form_change_tables.h | 140 +- .../pokemon/form_species_table_pointers.h | 118 +- src/data/pokemon/form_species_tables.h | 122 +- src/data/pokemon/level_up_learnset_pointers.h | 124 +- src/data/pokemon/level_up_learnsets.h | 18 +- src/data/pokemon/species_info.h | 126 +- .../pokemon/teachable_learnset_pointers.h | 124 +- src/data/pokemon/teachable_learnsets.h | 18 +- .../pokemon_graphics/back_pic_coordinates.h | 122 +- src/data/pokemon_graphics/back_pic_table.h | 112 +- .../pokemon_graphics/enemy_mon_elevation.h | 26 +- src/data/pokemon_graphics/footprint_table.h | 94 +- src/data/pokemon_graphics/front_pic_anims.h | 241 +- .../pokemon_graphics/front_pic_coordinates.h | 122 +- src/data/pokemon_graphics/front_pic_table.h | 112 +- src/data/pokemon_graphics/palette_table.h | 114 +- .../pokemon_graphics/shiny_palette_table.h | 114 +- src/data/text/species_names.h | 122 +- src/data/trainer_parties.h | 4 +- src/daycare.c | 2 +- src/pokemon.c | 124 +- src/pokemon_animation.c | 62 +- src/pokemon_icon.c | 260 +-- src/pokemon_jump.c | 564 ++--- src/script_pokemon_util.c | 2 +- src/trade.c | 30 - test/battle/ability/flower_gift.c | 14 +- test/battle/ability/forecast.c | 38 +- test/battle/ability/hunger_switch.c | 6 +- test/battle/ability/schooling.c | 18 +- test/battle/ability/zen_mode.c | 12 +- test/battle/form_change/battle_switch.c | 4 +- test/battle/form_change/begin_battle.c | 14 +- test/battle/form_change/faint.c | 4 +- 57 files changed, 3148 insertions(+), 3059 deletions(-) rename graphics/pokemon/cherrim/{normal => }/anim_front.png (100%) rename graphics/pokemon/cherrim/{normal => }/back.png (100%) rename graphics/pokemon/cherrim/{normal => }/normal.pal (100%) rename graphics/pokemon/cherrim/{normal => }/shiny.pal (100%) diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 37ec617b5e..ca6f73e908 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -1050,7 +1050,7 @@ BattleScript_EffectPhotonGeyser: goto BattleScript_MoveEnd BattleScript_EffectAuraWheel: @ Aura Wheel can only be used by Morpeko - jumpifspecies BS_ATTACKER, SPECIES_MORPEKO, BattleScript_EffectSpeedUpHit + jumpifspecies BS_ATTACKER, SPECIES_MORPEKO_FULL_BELLY, BattleScript_EffectSpeedUpHit jumpifspecies BS_ATTACKER, SPECIES_MORPEKO_HANGRY, BattleScript_EffectSpeedUpHit goto BattleScript_PokemonCantUseTheMove @@ -1163,7 +1163,7 @@ BattleScript_BothCanNoLongerEscape:: BattleScript_EffectHyperspaceFury: jumpifspecies BS_ATTACKER, SPECIES_HOOPA_UNBOUND, BattleScript_EffectHyperspaceFuryUnbound - jumpifspecies BS_ATTACKER, SPECIES_HOOPA, BattleScript_ButHoopaCantUseIt + jumpifspecies BS_ATTACKER, SPECIES_HOOPA_CONFINED, BattleScript_ButHoopaCantUseIt goto BattleScript_PokemonCantUseTheMove BattleScript_EffectHyperspaceFuryUnbound:: diff --git a/data/maps/BirthIsland_Exterior/scripts.inc b/data/maps/BirthIsland_Exterior/scripts.inc index d2174eee99..644001c6e7 100644 --- a/data/maps/BirthIsland_Exterior/scripts.inc +++ b/data/maps/BirthIsland_Exterior/scripts.inc @@ -81,11 +81,11 @@ BirthIsland_Exterior_EventScript_Deoxys:: applymovement LOCALID_DEOXYS, BirthIsland_Exterior_Movement_DeoxysApproach waitmovement 0 waitse - playmoncry SPECIES_DEOXYS, CRY_MODE_ENCOUNTER + playmoncry SPECIES_DEOXYS_NORMAL, CRY_MODE_ENCOUNTER delay 40 waitmoncry setvar VAR_LAST_TALKED, LOCALID_DEOXYS - seteventmon SPECIES_DEOXYS, 30 + seteventmon SPECIES_DEOXYS_NORMAL, 30 setflag FLAG_SYS_CTRL_OBJ_DELETE special BattleSetup_StartLegendaryBattle waitstate @@ -100,12 +100,12 @@ BirthIsland_Exterior_EventScript_Deoxys:: BirthIsland_Exterior_EventScript_DefeatedDeoxys:: setflag FLAG_DEFEATED_DEOXYS - setvar VAR_0x8004, SPECIES_DEOXYS + setvar VAR_0x8004, SPECIES_DEOXYS_NORMAL goto Common_EventScript_LegendaryFlewAway end BirthIsland_Exterior_EventScript_RanFromDeoxys:: - setvar VAR_0x8004, SPECIES_DEOXYS + setvar VAR_0x8004, SPECIES_DEOXYS_NORMAL goto Common_EventScript_LegendaryFlewAway end diff --git a/data/maps/Route119_WeatherInstitute_2F/scripts.inc b/data/maps/Route119_WeatherInstitute_2F/scripts.inc index e5df03d4a1..2dfec9bffe 100644 --- a/data/maps/Route119_WeatherInstitute_2F/scripts.inc +++ b/data/maps/Route119_WeatherInstitute_2F/scripts.inc @@ -88,8 +88,8 @@ Route119_WeatherInstitute_2F_EventScript_ShellyDefeated:: Route119_WeatherInstitute_2F_EventScript_ReceiveCastform:: msgbox Route119_WeatherInstitute_2F_Text_ThanksPleaseTakePokemon, MSGBOX_DEFAULT - setvar VAR_TEMP_TRANSFERRED_SPECIES, SPECIES_CASTFORM - givemon SPECIES_CASTFORM, 25, ITEM_MYSTIC_WATER + setvar VAR_TEMP_TRANSFERRED_SPECIES, SPECIES_CASTFORM_NORMAL + givemon SPECIES_CASTFORM_NORMAL, 25, ITEM_MYSTIC_WATER goto_if_eq VAR_RESULT, MON_GIVEN_TO_PARTY, Route119_WeatherInstitute_2F_EventScript_ReceiveCastformParty goto_if_eq VAR_RESULT, MON_GIVEN_TO_PC, Route119_WeatherInstitute_2F_EventScript_ReceiveCastformPC goto Common_EventScript_NoMoreRoomForPokemon @@ -122,7 +122,7 @@ Route119_WeatherInstitute_2F_EventScript_ReceivedCastformFanfare:: message Route119_WeatherInstitute_2F_Text_PlayerReceivedCastform waitmessage waitfanfare - bufferspeciesname STR_VAR_1, SPECIES_CASTFORM + bufferspeciesname STR_VAR_1, SPECIES_CASTFORM_NORMAL return Route119_WeatherInstitute_2F_EventScript_ExplainCastform:: diff --git a/graphics/pokemon/cherrim/normal/anim_front.png b/graphics/pokemon/cherrim/anim_front.png similarity index 100% rename from graphics/pokemon/cherrim/normal/anim_front.png rename to graphics/pokemon/cherrim/anim_front.png diff --git a/graphics/pokemon/cherrim/normal/back.png b/graphics/pokemon/cherrim/back.png similarity index 100% rename from graphics/pokemon/cherrim/normal/back.png rename to graphics/pokemon/cherrim/back.png diff --git a/graphics/pokemon/cherrim/normal/normal.pal b/graphics/pokemon/cherrim/normal.pal similarity index 100% rename from graphics/pokemon/cherrim/normal/normal.pal rename to graphics/pokemon/cherrim/normal.pal diff --git a/graphics/pokemon/cherrim/normal/shiny.pal b/graphics/pokemon/cherrim/shiny.pal similarity index 100% rename from graphics/pokemon/cherrim/normal/shiny.pal rename to graphics/pokemon/cherrim/shiny.pal diff --git a/include/constants/species.h b/include/constants/species.h index 02b017655f..a54121f626 100644 --- a/include/constants/species.h +++ b/include/constants/species.h @@ -1,912 +1,965 @@ #ifndef GUARD_CONSTANTS_SPECIES_H #define GUARD_CONSTANTS_SPECIES_H -#define SPECIES_NONE 0 -#define SPECIES_BULBASAUR 1 -#define SPECIES_IVYSAUR 2 -#define SPECIES_VENUSAUR 3 -#define SPECIES_CHARMANDER 4 -#define SPECIES_CHARMELEON 5 -#define SPECIES_CHARIZARD 6 -#define SPECIES_SQUIRTLE 7 -#define SPECIES_WARTORTLE 8 -#define SPECIES_BLASTOISE 9 -#define SPECIES_CATERPIE 10 -#define SPECIES_METAPOD 11 -#define SPECIES_BUTTERFREE 12 -#define SPECIES_WEEDLE 13 -#define SPECIES_KAKUNA 14 -#define SPECIES_BEEDRILL 15 -#define SPECIES_PIDGEY 16 -#define SPECIES_PIDGEOTTO 17 -#define SPECIES_PIDGEOT 18 -#define SPECIES_RATTATA 19 -#define SPECIES_RATICATE 20 -#define SPECIES_SPEAROW 21 -#define SPECIES_FEAROW 22 -#define SPECIES_EKANS 23 -#define SPECIES_ARBOK 24 -#define SPECIES_PIKACHU 25 -#define SPECIES_RAICHU 26 -#define SPECIES_SANDSHREW 27 -#define SPECIES_SANDSLASH 28 -#define SPECIES_NIDORAN_F 29 -#define SPECIES_NIDORINA 30 -#define SPECIES_NIDOQUEEN 31 -#define SPECIES_NIDORAN_M 32 -#define SPECIES_NIDORINO 33 -#define SPECIES_NIDOKING 34 -#define SPECIES_CLEFAIRY 35 -#define SPECIES_CLEFABLE 36 -#define SPECIES_VULPIX 37 -#define SPECIES_NINETALES 38 -#define SPECIES_JIGGLYPUFF 39 -#define SPECIES_WIGGLYTUFF 40 -#define SPECIES_ZUBAT 41 -#define SPECIES_GOLBAT 42 -#define SPECIES_ODDISH 43 -#define SPECIES_GLOOM 44 -#define SPECIES_VILEPLUME 45 -#define SPECIES_PARAS 46 -#define SPECIES_PARASECT 47 -#define SPECIES_VENONAT 48 -#define SPECIES_VENOMOTH 49 -#define SPECIES_DIGLETT 50 -#define SPECIES_DUGTRIO 51 -#define SPECIES_MEOWTH 52 -#define SPECIES_PERSIAN 53 -#define SPECIES_PSYDUCK 54 -#define SPECIES_GOLDUCK 55 -#define SPECIES_MANKEY 56 -#define SPECIES_PRIMEAPE 57 -#define SPECIES_GROWLITHE 58 -#define SPECIES_ARCANINE 59 -#define SPECIES_POLIWAG 60 -#define SPECIES_POLIWHIRL 61 -#define SPECIES_POLIWRATH 62 -#define SPECIES_ABRA 63 -#define SPECIES_KADABRA 64 -#define SPECIES_ALAKAZAM 65 -#define SPECIES_MACHOP 66 -#define SPECIES_MACHOKE 67 -#define SPECIES_MACHAMP 68 -#define SPECIES_BELLSPROUT 69 -#define SPECIES_WEEPINBELL 70 -#define SPECIES_VICTREEBEL 71 -#define SPECIES_TENTACOOL 72 -#define SPECIES_TENTACRUEL 73 -#define SPECIES_GEODUDE 74 -#define SPECIES_GRAVELER 75 -#define SPECIES_GOLEM 76 -#define SPECIES_PONYTA 77 -#define SPECIES_RAPIDASH 78 -#define SPECIES_SLOWPOKE 79 -#define SPECIES_SLOWBRO 80 -#define SPECIES_MAGNEMITE 81 -#define SPECIES_MAGNETON 82 -#define SPECIES_FARFETCHD 83 -#define SPECIES_DODUO 84 -#define SPECIES_DODRIO 85 -#define SPECIES_SEEL 86 -#define SPECIES_DEWGONG 87 -#define SPECIES_GRIMER 88 -#define SPECIES_MUK 89 -#define SPECIES_SHELLDER 90 -#define SPECIES_CLOYSTER 91 -#define SPECIES_GASTLY 92 -#define SPECIES_HAUNTER 93 -#define SPECIES_GENGAR 94 -#define SPECIES_ONIX 95 -#define SPECIES_DROWZEE 96 -#define SPECIES_HYPNO 97 -#define SPECIES_KRABBY 98 -#define SPECIES_KINGLER 99 -#define SPECIES_VOLTORB 100 -#define SPECIES_ELECTRODE 101 -#define SPECIES_EXEGGCUTE 102 -#define SPECIES_EXEGGUTOR 103 -#define SPECIES_CUBONE 104 -#define SPECIES_MAROWAK 105 -#define SPECIES_HITMONLEE 106 -#define SPECIES_HITMONCHAN 107 -#define SPECIES_LICKITUNG 108 -#define SPECIES_KOFFING 109 -#define SPECIES_WEEZING 110 -#define SPECIES_RHYHORN 111 -#define SPECIES_RHYDON 112 -#define SPECIES_CHANSEY 113 -#define SPECIES_TANGELA 114 -#define SPECIES_KANGASKHAN 115 -#define SPECIES_HORSEA 116 -#define SPECIES_SEADRA 117 -#define SPECIES_GOLDEEN 118 -#define SPECIES_SEAKING 119 -#define SPECIES_STARYU 120 -#define SPECIES_STARMIE 121 -#define SPECIES_MR_MIME 122 -#define SPECIES_SCYTHER 123 -#define SPECIES_JYNX 124 -#define SPECIES_ELECTABUZZ 125 -#define SPECIES_MAGMAR 126 -#define SPECIES_PINSIR 127 -#define SPECIES_TAUROS 128 -#define SPECIES_MAGIKARP 129 -#define SPECIES_GYARADOS 130 -#define SPECIES_LAPRAS 131 -#define SPECIES_DITTO 132 -#define SPECIES_EEVEE 133 -#define SPECIES_VAPOREON 134 -#define SPECIES_JOLTEON 135 -#define SPECIES_FLAREON 136 -#define SPECIES_PORYGON 137 -#define SPECIES_OMANYTE 138 -#define SPECIES_OMASTAR 139 -#define SPECIES_KABUTO 140 -#define SPECIES_KABUTOPS 141 -#define SPECIES_AERODACTYL 142 -#define SPECIES_SNORLAX 143 -#define SPECIES_ARTICUNO 144 -#define SPECIES_ZAPDOS 145 -#define SPECIES_MOLTRES 146 -#define SPECIES_DRATINI 147 -#define SPECIES_DRAGONAIR 148 -#define SPECIES_DRAGONITE 149 -#define SPECIES_MEWTWO 150 -#define SPECIES_MEW 151 -#define SPECIES_CHIKORITA 152 -#define SPECIES_BAYLEEF 153 -#define SPECIES_MEGANIUM 154 -#define SPECIES_CYNDAQUIL 155 -#define SPECIES_QUILAVA 156 -#define SPECIES_TYPHLOSION 157 -#define SPECIES_TOTODILE 158 -#define SPECIES_CROCONAW 159 -#define SPECIES_FERALIGATR 160 -#define SPECIES_SENTRET 161 -#define SPECIES_FURRET 162 -#define SPECIES_HOOTHOOT 163 -#define SPECIES_NOCTOWL 164 -#define SPECIES_LEDYBA 165 -#define SPECIES_LEDIAN 166 -#define SPECIES_SPINARAK 167 -#define SPECIES_ARIADOS 168 -#define SPECIES_CROBAT 169 -#define SPECIES_CHINCHOU 170 -#define SPECIES_LANTURN 171 -#define SPECIES_PICHU 172 -#define SPECIES_CLEFFA 173 -#define SPECIES_IGGLYBUFF 174 -#define SPECIES_TOGEPI 175 -#define SPECIES_TOGETIC 176 -#define SPECIES_NATU 177 -#define SPECIES_XATU 178 -#define SPECIES_MAREEP 179 -#define SPECIES_FLAAFFY 180 -#define SPECIES_AMPHAROS 181 -#define SPECIES_BELLOSSOM 182 -#define SPECIES_MARILL 183 -#define SPECIES_AZUMARILL 184 -#define SPECIES_SUDOWOODO 185 -#define SPECIES_POLITOED 186 -#define SPECIES_HOPPIP 187 -#define SPECIES_SKIPLOOM 188 -#define SPECIES_JUMPLUFF 189 -#define SPECIES_AIPOM 190 -#define SPECIES_SUNKERN 191 -#define SPECIES_SUNFLORA 192 -#define SPECIES_YANMA 193 -#define SPECIES_WOOPER 194 -#define SPECIES_QUAGSIRE 195 -#define SPECIES_ESPEON 196 -#define SPECIES_UMBREON 197 -#define SPECIES_MURKROW 198 -#define SPECIES_SLOWKING 199 -#define SPECIES_MISDREAVUS 200 -#define SPECIES_UNOWN 201 -#define SPECIES_WOBBUFFET 202 -#define SPECIES_GIRAFARIG 203 -#define SPECIES_PINECO 204 -#define SPECIES_FORRETRESS 205 -#define SPECIES_DUNSPARCE 206 -#define SPECIES_GLIGAR 207 -#define SPECIES_STEELIX 208 -#define SPECIES_SNUBBULL 209 -#define SPECIES_GRANBULL 210 -#define SPECIES_QWILFISH 211 -#define SPECIES_SCIZOR 212 -#define SPECIES_SHUCKLE 213 -#define SPECIES_HERACROSS 214 -#define SPECIES_SNEASEL 215 -#define SPECIES_TEDDIURSA 216 -#define SPECIES_URSARING 217 -#define SPECIES_SLUGMA 218 -#define SPECIES_MAGCARGO 219 -#define SPECIES_SWINUB 220 -#define SPECIES_PILOSWINE 221 -#define SPECIES_CORSOLA 222 -#define SPECIES_REMORAID 223 -#define SPECIES_OCTILLERY 224 -#define SPECIES_DELIBIRD 225 -#define SPECIES_MANTINE 226 -#define SPECIES_SKARMORY 227 -#define SPECIES_HOUNDOUR 228 -#define SPECIES_HOUNDOOM 229 -#define SPECIES_KINGDRA 230 -#define SPECIES_PHANPY 231 -#define SPECIES_DONPHAN 232 -#define SPECIES_PORYGON2 233 -#define SPECIES_STANTLER 234 -#define SPECIES_SMEARGLE 235 -#define SPECIES_TYROGUE 236 -#define SPECIES_HITMONTOP 237 -#define SPECIES_SMOOCHUM 238 -#define SPECIES_ELEKID 239 -#define SPECIES_MAGBY 240 -#define SPECIES_MILTANK 241 -#define SPECIES_BLISSEY 242 -#define SPECIES_RAIKOU 243 -#define SPECIES_ENTEI 244 -#define SPECIES_SUICUNE 245 -#define SPECIES_LARVITAR 246 -#define SPECIES_PUPITAR 247 -#define SPECIES_TYRANITAR 248 -#define SPECIES_LUGIA 249 -#define SPECIES_HO_OH 250 -#define SPECIES_CELEBI 251 -#define SPECIES_TREECKO 252 -#define SPECIES_GROVYLE 253 -#define SPECIES_SCEPTILE 254 -#define SPECIES_TORCHIC 255 -#define SPECIES_COMBUSKEN 256 -#define SPECIES_BLAZIKEN 257 -#define SPECIES_MUDKIP 258 -#define SPECIES_MARSHTOMP 259 -#define SPECIES_SWAMPERT 260 -#define SPECIES_POOCHYENA 261 -#define SPECIES_MIGHTYENA 262 -#define SPECIES_ZIGZAGOON 263 -#define SPECIES_LINOONE 264 -#define SPECIES_WURMPLE 265 -#define SPECIES_SILCOON 266 -#define SPECIES_BEAUTIFLY 267 -#define SPECIES_CASCOON 268 -#define SPECIES_DUSTOX 269 -#define SPECIES_LOTAD 270 -#define SPECIES_LOMBRE 271 -#define SPECIES_LUDICOLO 272 -#define SPECIES_SEEDOT 273 -#define SPECIES_NUZLEAF 274 -#define SPECIES_SHIFTRY 275 -#define SPECIES_TAILLOW 276 -#define SPECIES_SWELLOW 277 -#define SPECIES_WINGULL 278 -#define SPECIES_PELIPPER 279 -#define SPECIES_RALTS 280 -#define SPECIES_KIRLIA 281 -#define SPECIES_GARDEVOIR 282 -#define SPECIES_SURSKIT 283 -#define SPECIES_MASQUERAIN 284 -#define SPECIES_SHROOMISH 285 -#define SPECIES_BRELOOM 286 -#define SPECIES_SLAKOTH 287 -#define SPECIES_VIGOROTH 288 -#define SPECIES_SLAKING 289 -#define SPECIES_NINCADA 290 -#define SPECIES_NINJASK 291 -#define SPECIES_SHEDINJA 292 -#define SPECIES_WHISMUR 293 -#define SPECIES_LOUDRED 294 -#define SPECIES_EXPLOUD 295 -#define SPECIES_MAKUHITA 296 -#define SPECIES_HARIYAMA 297 -#define SPECIES_AZURILL 298 -#define SPECIES_NOSEPASS 299 -#define SPECIES_SKITTY 300 -#define SPECIES_DELCATTY 301 -#define SPECIES_SABLEYE 302 -#define SPECIES_MAWILE 303 -#define SPECIES_ARON 304 -#define SPECIES_LAIRON 305 -#define SPECIES_AGGRON 306 -#define SPECIES_MEDITITE 307 -#define SPECIES_MEDICHAM 308 -#define SPECIES_ELECTRIKE 309 -#define SPECIES_MANECTRIC 310 -#define SPECIES_PLUSLE 311 -#define SPECIES_MINUN 312 -#define SPECIES_VOLBEAT 313 -#define SPECIES_ILLUMISE 314 -#define SPECIES_ROSELIA 315 -#define SPECIES_GULPIN 316 -#define SPECIES_SWALOT 317 -#define SPECIES_CARVANHA 318 -#define SPECIES_SHARPEDO 319 -#define SPECIES_WAILMER 320 -#define SPECIES_WAILORD 321 -#define SPECIES_NUMEL 322 -#define SPECIES_CAMERUPT 323 -#define SPECIES_TORKOAL 324 -#define SPECIES_SPOINK 325 -#define SPECIES_GRUMPIG 326 -#define SPECIES_SPINDA 327 -#define SPECIES_TRAPINCH 328 -#define SPECIES_VIBRAVA 329 -#define SPECIES_FLYGON 330 -#define SPECIES_CACNEA 331 -#define SPECIES_CACTURNE 332 -#define SPECIES_SWABLU 333 -#define SPECIES_ALTARIA 334 -#define SPECIES_ZANGOOSE 335 -#define SPECIES_SEVIPER 336 -#define SPECIES_LUNATONE 337 -#define SPECIES_SOLROCK 338 -#define SPECIES_BARBOACH 339 -#define SPECIES_WHISCASH 340 -#define SPECIES_CORPHISH 341 -#define SPECIES_CRAWDAUNT 342 -#define SPECIES_BALTOY 343 -#define SPECIES_CLAYDOL 344 -#define SPECIES_LILEEP 345 -#define SPECIES_CRADILY 346 -#define SPECIES_ANORITH 347 -#define SPECIES_ARMALDO 348 -#define SPECIES_FEEBAS 349 -#define SPECIES_MILOTIC 350 -#define SPECIES_CASTFORM 351 -#define SPECIES_KECLEON 352 -#define SPECIES_SHUPPET 353 -#define SPECIES_BANETTE 354 -#define SPECIES_DUSKULL 355 -#define SPECIES_DUSCLOPS 356 -#define SPECIES_TROPIUS 357 -#define SPECIES_CHIMECHO 358 -#define SPECIES_ABSOL 359 -#define SPECIES_WYNAUT 360 -#define SPECIES_SNORUNT 361 -#define SPECIES_GLALIE 362 -#define SPECIES_SPHEAL 363 -#define SPECIES_SEALEO 364 -#define SPECIES_WALREIN 365 -#define SPECIES_CLAMPERL 366 -#define SPECIES_HUNTAIL 367 -#define SPECIES_GOREBYSS 368 -#define SPECIES_RELICANTH 369 -#define SPECIES_LUVDISC 370 -#define SPECIES_BAGON 371 -#define SPECIES_SHELGON 372 -#define SPECIES_SALAMENCE 373 -#define SPECIES_BELDUM 374 -#define SPECIES_METANG 375 -#define SPECIES_METAGROSS 376 -#define SPECIES_REGIROCK 377 -#define SPECIES_REGICE 378 -#define SPECIES_REGISTEEL 379 -#define SPECIES_LATIAS 380 -#define SPECIES_LATIOS 381 -#define SPECIES_KYOGRE 382 -#define SPECIES_GROUDON 383 -#define SPECIES_RAYQUAZA 384 -#define SPECIES_JIRACHI 385 -#define SPECIES_DEOXYS 386 -#define SPECIES_TURTWIG 387 -#define SPECIES_GROTLE 388 -#define SPECIES_TORTERRA 389 -#define SPECIES_CHIMCHAR 390 -#define SPECIES_MONFERNO 391 -#define SPECIES_INFERNAPE 392 -#define SPECIES_PIPLUP 393 -#define SPECIES_PRINPLUP 394 -#define SPECIES_EMPOLEON 395 -#define SPECIES_STARLY 396 -#define SPECIES_STARAVIA 397 -#define SPECIES_STARAPTOR 398 -#define SPECIES_BIDOOF 399 -#define SPECIES_BIBAREL 400 -#define SPECIES_KRICKETOT 401 -#define SPECIES_KRICKETUNE 402 -#define SPECIES_SHINX 403 -#define SPECIES_LUXIO 404 -#define SPECIES_LUXRAY 405 -#define SPECIES_BUDEW 406 -#define SPECIES_ROSERADE 407 -#define SPECIES_CRANIDOS 408 -#define SPECIES_RAMPARDOS 409 -#define SPECIES_SHIELDON 410 -#define SPECIES_BASTIODON 411 -#define SPECIES_BURMY 412 -#define SPECIES_WORMADAM 413 -#define SPECIES_MOTHIM 414 -#define SPECIES_COMBEE 415 -#define SPECIES_VESPIQUEN 416 -#define SPECIES_PACHIRISU 417 -#define SPECIES_BUIZEL 418 -#define SPECIES_FLOATZEL 419 -#define SPECIES_CHERUBI 420 -#define SPECIES_CHERRIM 421 -#define SPECIES_SHELLOS 422 -#define SPECIES_GASTRODON 423 -#define SPECIES_AMBIPOM 424 -#define SPECIES_DRIFLOON 425 -#define SPECIES_DRIFBLIM 426 -#define SPECIES_BUNEARY 427 -#define SPECIES_LOPUNNY 428 -#define SPECIES_MISMAGIUS 429 -#define SPECIES_HONCHKROW 430 -#define SPECIES_GLAMEOW 431 -#define SPECIES_PURUGLY 432 -#define SPECIES_CHINGLING 433 -#define SPECIES_STUNKY 434 -#define SPECIES_SKUNTANK 435 -#define SPECIES_BRONZOR 436 -#define SPECIES_BRONZONG 437 -#define SPECIES_BONSLY 438 -#define SPECIES_MIME_JR 439 -#define SPECIES_HAPPINY 440 -#define SPECIES_CHATOT 441 -#define SPECIES_SPIRITOMB 442 -#define SPECIES_GIBLE 443 -#define SPECIES_GABITE 444 -#define SPECIES_GARCHOMP 445 -#define SPECIES_MUNCHLAX 446 -#define SPECIES_RIOLU 447 -#define SPECIES_LUCARIO 448 -#define SPECIES_HIPPOPOTAS 449 -#define SPECIES_HIPPOWDON 450 -#define SPECIES_SKORUPI 451 -#define SPECIES_DRAPION 452 -#define SPECIES_CROAGUNK 453 -#define SPECIES_TOXICROAK 454 -#define SPECIES_CARNIVINE 455 -#define SPECIES_FINNEON 456 -#define SPECIES_LUMINEON 457 -#define SPECIES_MANTYKE 458 -#define SPECIES_SNOVER 459 -#define SPECIES_ABOMASNOW 460 -#define SPECIES_WEAVILE 461 -#define SPECIES_MAGNEZONE 462 -#define SPECIES_LICKILICKY 463 -#define SPECIES_RHYPERIOR 464 -#define SPECIES_TANGROWTH 465 -#define SPECIES_ELECTIVIRE 466 -#define SPECIES_MAGMORTAR 467 -#define SPECIES_TOGEKISS 468 -#define SPECIES_YANMEGA 469 -#define SPECIES_LEAFEON 470 -#define SPECIES_GLACEON 471 -#define SPECIES_GLISCOR 472 -#define SPECIES_MAMOSWINE 473 -#define SPECIES_PORYGON_Z 474 -#define SPECIES_GALLADE 475 -#define SPECIES_PROBOPASS 476 -#define SPECIES_DUSKNOIR 477 -#define SPECIES_FROSLASS 478 -#define SPECIES_ROTOM 479 -#define SPECIES_UXIE 480 -#define SPECIES_MESPRIT 481 -#define SPECIES_AZELF 482 -#define SPECIES_DIALGA 483 -#define SPECIES_PALKIA 484 -#define SPECIES_HEATRAN 485 -#define SPECIES_REGIGIGAS 486 -#define SPECIES_GIRATINA 487 -#define SPECIES_CRESSELIA 488 -#define SPECIES_PHIONE 489 -#define SPECIES_MANAPHY 490 -#define SPECIES_DARKRAI 491 -#define SPECIES_SHAYMIN 492 -#define SPECIES_ARCEUS 493 -#define SPECIES_VICTINI 494 -#define SPECIES_SNIVY 495 -#define SPECIES_SERVINE 496 -#define SPECIES_SERPERIOR 497 -#define SPECIES_TEPIG 498 -#define SPECIES_PIGNITE 499 -#define SPECIES_EMBOAR 500 -#define SPECIES_OSHAWOTT 501 -#define SPECIES_DEWOTT 502 -#define SPECIES_SAMUROTT 503 -#define SPECIES_PATRAT 504 -#define SPECIES_WATCHOG 505 -#define SPECIES_LILLIPUP 506 -#define SPECIES_HERDIER 507 -#define SPECIES_STOUTLAND 508 -#define SPECIES_PURRLOIN 509 -#define SPECIES_LIEPARD 510 -#define SPECIES_PANSAGE 511 -#define SPECIES_SIMISAGE 512 -#define SPECIES_PANSEAR 513 -#define SPECIES_SIMISEAR 514 -#define SPECIES_PANPOUR 515 -#define SPECIES_SIMIPOUR 516 -#define SPECIES_MUNNA 517 -#define SPECIES_MUSHARNA 518 -#define SPECIES_PIDOVE 519 -#define SPECIES_TRANQUILL 520 -#define SPECIES_UNFEZANT 521 -#define SPECIES_BLITZLE 522 -#define SPECIES_ZEBSTRIKA 523 -#define SPECIES_ROGGENROLA 524 -#define SPECIES_BOLDORE 525 -#define SPECIES_GIGALITH 526 -#define SPECIES_WOOBAT 527 -#define SPECIES_SWOOBAT 528 -#define SPECIES_DRILBUR 529 -#define SPECIES_EXCADRILL 530 -#define SPECIES_AUDINO 531 -#define SPECIES_TIMBURR 532 -#define SPECIES_GURDURR 533 -#define SPECIES_CONKELDURR 534 -#define SPECIES_TYMPOLE 535 -#define SPECIES_PALPITOAD 536 -#define SPECIES_SEISMITOAD 537 -#define SPECIES_THROH 538 -#define SPECIES_SAWK 539 -#define SPECIES_SEWADDLE 540 -#define SPECIES_SWADLOON 541 -#define SPECIES_LEAVANNY 542 -#define SPECIES_VENIPEDE 543 -#define SPECIES_WHIRLIPEDE 544 -#define SPECIES_SCOLIPEDE 545 -#define SPECIES_COTTONEE 546 -#define SPECIES_WHIMSICOTT 547 -#define SPECIES_PETILIL 548 -#define SPECIES_LILLIGANT 549 -#define SPECIES_BASCULIN 550 -#define SPECIES_SANDILE 551 -#define SPECIES_KROKOROK 552 -#define SPECIES_KROOKODILE 553 -#define SPECIES_DARUMAKA 554 -#define SPECIES_DARMANITAN 555 -#define SPECIES_MARACTUS 556 -#define SPECIES_DWEBBLE 557 -#define SPECIES_CRUSTLE 558 -#define SPECIES_SCRAGGY 559 -#define SPECIES_SCRAFTY 560 -#define SPECIES_SIGILYPH 561 -#define SPECIES_YAMASK 562 -#define SPECIES_COFAGRIGUS 563 -#define SPECIES_TIRTOUGA 564 -#define SPECIES_CARRACOSTA 565 -#define SPECIES_ARCHEN 566 -#define SPECIES_ARCHEOPS 567 -#define SPECIES_TRUBBISH 568 -#define SPECIES_GARBODOR 569 -#define SPECIES_ZORUA 570 -#define SPECIES_ZOROARK 571 -#define SPECIES_MINCCINO 572 -#define SPECIES_CINCCINO 573 -#define SPECIES_GOTHITA 574 -#define SPECIES_GOTHORITA 575 -#define SPECIES_GOTHITELLE 576 -#define SPECIES_SOLOSIS 577 -#define SPECIES_DUOSION 578 -#define SPECIES_REUNICLUS 579 -#define SPECIES_DUCKLETT 580 -#define SPECIES_SWANNA 581 -#define SPECIES_VANILLITE 582 -#define SPECIES_VANILLISH 583 -#define SPECIES_VANILLUXE 584 -#define SPECIES_DEERLING 585 -#define SPECIES_SAWSBUCK 586 -#define SPECIES_EMOLGA 587 -#define SPECIES_KARRABLAST 588 -#define SPECIES_ESCAVALIER 589 -#define SPECIES_FOONGUS 590 -#define SPECIES_AMOONGUSS 591 -#define SPECIES_FRILLISH 592 -#define SPECIES_JELLICENT 593 -#define SPECIES_ALOMOMOLA 594 -#define SPECIES_JOLTIK 595 -#define SPECIES_GALVANTULA 596 -#define SPECIES_FERROSEED 597 -#define SPECIES_FERROTHORN 598 -#define SPECIES_KLINK 599 -#define SPECIES_KLANG 600 -#define SPECIES_KLINKLANG 601 -#define SPECIES_TYNAMO 602 -#define SPECIES_EELEKTRIK 603 -#define SPECIES_EELEKTROSS 604 -#define SPECIES_ELGYEM 605 -#define SPECIES_BEHEEYEM 606 -#define SPECIES_LITWICK 607 -#define SPECIES_LAMPENT 608 -#define SPECIES_CHANDELURE 609 -#define SPECIES_AXEW 610 -#define SPECIES_FRAXURE 611 -#define SPECIES_HAXORUS 612 -#define SPECIES_CUBCHOO 613 -#define SPECIES_BEARTIC 614 -#define SPECIES_CRYOGONAL 615 -#define SPECIES_SHELMET 616 -#define SPECIES_ACCELGOR 617 -#define SPECIES_STUNFISK 618 -#define SPECIES_MIENFOO 619 -#define SPECIES_MIENSHAO 620 -#define SPECIES_DRUDDIGON 621 -#define SPECIES_GOLETT 622 -#define SPECIES_GOLURK 623 -#define SPECIES_PAWNIARD 624 -#define SPECIES_BISHARP 625 -#define SPECIES_BOUFFALANT 626 -#define SPECIES_RUFFLET 627 -#define SPECIES_BRAVIARY 628 -#define SPECIES_VULLABY 629 -#define SPECIES_MANDIBUZZ 630 -#define SPECIES_HEATMOR 631 -#define SPECIES_DURANT 632 -#define SPECIES_DEINO 633 -#define SPECIES_ZWEILOUS 634 -#define SPECIES_HYDREIGON 635 -#define SPECIES_LARVESTA 636 -#define SPECIES_VOLCARONA 637 -#define SPECIES_COBALION 638 -#define SPECIES_TERRAKION 639 -#define SPECIES_VIRIZION 640 -#define SPECIES_TORNADUS 641 -#define SPECIES_THUNDURUS 642 -#define SPECIES_RESHIRAM 643 -#define SPECIES_ZEKROM 644 -#define SPECIES_LANDORUS 645 -#define SPECIES_KYUREM 646 -#define SPECIES_KELDEO 647 -#define SPECIES_MELOETTA 648 -#define SPECIES_GENESECT 649 -#define SPECIES_CHESPIN 650 -#define SPECIES_QUILLADIN 651 -#define SPECIES_CHESNAUGHT 652 -#define SPECIES_FENNEKIN 653 -#define SPECIES_BRAIXEN 654 -#define SPECIES_DELPHOX 655 -#define SPECIES_FROAKIE 656 -#define SPECIES_FROGADIER 657 -#define SPECIES_GRENINJA 658 -#define SPECIES_BUNNELBY 659 -#define SPECIES_DIGGERSBY 660 -#define SPECIES_FLETCHLING 661 -#define SPECIES_FLETCHINDER 662 -#define SPECIES_TALONFLAME 663 -#define SPECIES_SCATTERBUG 664 -#define SPECIES_SPEWPA 665 -#define SPECIES_VIVILLON 666 // Icy Snow Pattern -#define SPECIES_LITLEO 667 -#define SPECIES_PYROAR 668 -#define SPECIES_FLABEBE 669 // Red Flower -#define SPECIES_FLOETTE 670 -#define SPECIES_FLORGES 671 -#define SPECIES_SKIDDO 672 -#define SPECIES_GOGOAT 673 -#define SPECIES_PANCHAM 674 -#define SPECIES_PANGORO 675 -#define SPECIES_FURFROU 676 -#define SPECIES_ESPURR 677 -#define SPECIES_MEOWSTIC 678 -#define SPECIES_HONEDGE 679 -#define SPECIES_DOUBLADE 680 -#define SPECIES_AEGISLASH 681 -#define SPECIES_SPRITZEE 682 -#define SPECIES_AROMATISSE 683 -#define SPECIES_SWIRLIX 684 -#define SPECIES_SLURPUFF 685 -#define SPECIES_INKAY 686 -#define SPECIES_MALAMAR 687 -#define SPECIES_BINACLE 688 -#define SPECIES_BARBARACLE 689 -#define SPECIES_SKRELP 690 -#define SPECIES_DRAGALGE 691 -#define SPECIES_CLAUNCHER 692 -#define SPECIES_CLAWITZER 693 -#define SPECIES_HELIOPTILE 694 -#define SPECIES_HELIOLISK 695 -#define SPECIES_TYRUNT 696 -#define SPECIES_TYRANTRUM 697 -#define SPECIES_AMAURA 698 -#define SPECIES_AURORUS 699 -#define SPECIES_SYLVEON 700 -#define SPECIES_HAWLUCHA 701 -#define SPECIES_DEDENNE 702 -#define SPECIES_CARBINK 703 -#define SPECIES_GOOMY 704 -#define SPECIES_SLIGGOO 705 -#define SPECIES_GOODRA 706 -#define SPECIES_KLEFKI 707 -#define SPECIES_PHANTUMP 708 -#define SPECIES_TREVENANT 709 -#define SPECIES_PUMPKABOO 710 -#define SPECIES_GOURGEIST 711 -#define SPECIES_BERGMITE 712 -#define SPECIES_AVALUGG 713 -#define SPECIES_NOIBAT 714 -#define SPECIES_NOIVERN 715 -#define SPECIES_XERNEAS 716 -#define SPECIES_YVELTAL 717 -#define SPECIES_ZYGARDE 718 -#define SPECIES_DIANCIE 719 -#define SPECIES_HOOPA 720 -#define SPECIES_VOLCANION 721 -#define SPECIES_ROWLET 722 -#define SPECIES_DARTRIX 723 -#define SPECIES_DECIDUEYE 724 -#define SPECIES_LITTEN 725 -#define SPECIES_TORRACAT 726 -#define SPECIES_INCINEROAR 727 -#define SPECIES_POPPLIO 728 -#define SPECIES_BRIONNE 729 -#define SPECIES_PRIMARINA 730 -#define SPECIES_PIKIPEK 731 -#define SPECIES_TRUMBEAK 732 -#define SPECIES_TOUCANNON 733 -#define SPECIES_YUNGOOS 734 -#define SPECIES_GUMSHOOS 735 -#define SPECIES_GRUBBIN 736 -#define SPECIES_CHARJABUG 737 -#define SPECIES_VIKAVOLT 738 -#define SPECIES_CRABRAWLER 739 -#define SPECIES_CRABOMINABLE 740 -#define SPECIES_ORICORIO 741 -#define SPECIES_CUTIEFLY 742 -#define SPECIES_RIBOMBEE 743 -#define SPECIES_ROCKRUFF 744 -#define SPECIES_LYCANROC 745 -#define SPECIES_WISHIWASHI 746 -#define SPECIES_MAREANIE 747 -#define SPECIES_TOXAPEX 748 -#define SPECIES_MUDBRAY 749 -#define SPECIES_MUDSDALE 750 -#define SPECIES_DEWPIDER 751 -#define SPECIES_ARAQUANID 752 -#define SPECIES_FOMANTIS 753 -#define SPECIES_LURANTIS 754 -#define SPECIES_MORELULL 755 -#define SPECIES_SHIINOTIC 756 -#define SPECIES_SALANDIT 757 -#define SPECIES_SALAZZLE 758 -#define SPECIES_STUFFUL 759 -#define SPECIES_BEWEAR 760 -#define SPECIES_BOUNSWEET 761 -#define SPECIES_STEENEE 762 -#define SPECIES_TSAREENA 763 -#define SPECIES_COMFEY 764 -#define SPECIES_ORANGURU 765 -#define SPECIES_PASSIMIAN 766 -#define SPECIES_WIMPOD 767 -#define SPECIES_GOLISOPOD 768 -#define SPECIES_SANDYGAST 769 -#define SPECIES_PALOSSAND 770 -#define SPECIES_PYUKUMUKU 771 -#define SPECIES_TYPE_NULL 772 -#define SPECIES_SILVALLY 773 -#define SPECIES_MINIOR 774 -#define SPECIES_KOMALA 775 -#define SPECIES_TURTONATOR 776 -#define SPECIES_TOGEDEMARU 777 -#define SPECIES_MIMIKYU 778 -#define SPECIES_BRUXISH 779 -#define SPECIES_DRAMPA 780 -#define SPECIES_DHELMISE 781 -#define SPECIES_JANGMO_O 782 -#define SPECIES_HAKAMO_O 783 -#define SPECIES_KOMMO_O 784 -#define SPECIES_TAPU_KOKO 785 -#define SPECIES_TAPU_LELE 786 -#define SPECIES_TAPU_BULU 787 -#define SPECIES_TAPU_FINI 788 -#define SPECIES_COSMOG 789 -#define SPECIES_COSMOEM 790 -#define SPECIES_SOLGALEO 791 -#define SPECIES_LUNALA 792 -#define SPECIES_NIHILEGO 793 -#define SPECIES_BUZZWOLE 794 -#define SPECIES_PHEROMOSA 795 -#define SPECIES_XURKITREE 796 -#define SPECIES_CELESTEELA 797 -#define SPECIES_KARTANA 798 -#define SPECIES_GUZZLORD 799 -#define SPECIES_NECROZMA 800 -#define SPECIES_MAGEARNA 801 -#define SPECIES_MARSHADOW 802 -#define SPECIES_POIPOLE 803 -#define SPECIES_NAGANADEL 804 -#define SPECIES_STAKATAKA 805 -#define SPECIES_BLACEPHALON 806 -#define SPECIES_ZERAORA 807 -#define SPECIES_MELTAN 808 -#define SPECIES_MELMETAL 809 -#define SPECIES_GROOKEY 810 -#define SPECIES_THWACKEY 811 -#define SPECIES_RILLABOOM 812 -#define SPECIES_SCORBUNNY 813 -#define SPECIES_RABOOT 814 -#define SPECIES_CINDERACE 815 -#define SPECIES_SOBBLE 816 -#define SPECIES_DRIZZILE 817 -#define SPECIES_INTELEON 818 -#define SPECIES_SKWOVET 819 -#define SPECIES_GREEDENT 820 -#define SPECIES_ROOKIDEE 821 -#define SPECIES_CORVISQUIRE 822 -#define SPECIES_CORVIKNIGHT 823 -#define SPECIES_BLIPBUG 824 -#define SPECIES_DOTTLER 825 -#define SPECIES_ORBEETLE 826 -#define SPECIES_NICKIT 827 -#define SPECIES_THIEVUL 828 -#define SPECIES_GOSSIFLEUR 829 -#define SPECIES_ELDEGOSS 830 -#define SPECIES_WOOLOO 831 -#define SPECIES_DUBWOOL 832 -#define SPECIES_CHEWTLE 833 -#define SPECIES_DREDNAW 834 -#define SPECIES_YAMPER 835 -#define SPECIES_BOLTUND 836 -#define SPECIES_ROLYCOLY 837 -#define SPECIES_CARKOL 838 -#define SPECIES_COALOSSAL 839 -#define SPECIES_APPLIN 840 -#define SPECIES_FLAPPLE 841 -#define SPECIES_APPLETUN 842 -#define SPECIES_SILICOBRA 843 -#define SPECIES_SANDACONDA 844 -#define SPECIES_CRAMORANT 845 -#define SPECIES_ARROKUDA 846 -#define SPECIES_BARRASKEWDA 847 -#define SPECIES_TOXEL 848 -#define SPECIES_TOXTRICITY 849 -#define SPECIES_SIZZLIPEDE 850 -#define SPECIES_CENTISKORCH 851 -#define SPECIES_CLOBBOPUS 852 -#define SPECIES_GRAPPLOCT 853 -#define SPECIES_SINISTEA 854 -#define SPECIES_POLTEAGEIST 855 -#define SPECIES_HATENNA 856 -#define SPECIES_HATTREM 857 -#define SPECIES_HATTERENE 858 -#define SPECIES_IMPIDIMP 859 -#define SPECIES_MORGREM 860 -#define SPECIES_GRIMMSNARL 861 -#define SPECIES_OBSTAGOON 862 -#define SPECIES_PERRSERKER 863 -#define SPECIES_CURSOLA 864 -#define SPECIES_SIRFETCHD 865 -#define SPECIES_MR_RIME 866 -#define SPECIES_RUNERIGUS 867 -#define SPECIES_MILCERY 868 -#define SPECIES_ALCREMIE 869 -#define SPECIES_FALINKS 870 -#define SPECIES_PINCURCHIN 871 -#define SPECIES_SNOM 872 -#define SPECIES_FROSMOTH 873 -#define SPECIES_STONJOURNER 874 -#define SPECIES_EISCUE 875 -#define SPECIES_INDEEDEE 876 -#define SPECIES_MORPEKO 877 -#define SPECIES_CUFANT 878 -#define SPECIES_COPPERAJAH 879 -#define SPECIES_DRACOZOLT 880 -#define SPECIES_ARCTOZOLT 881 -#define SPECIES_DRACOVISH 882 -#define SPECIES_ARCTOVISH 883 -#define SPECIES_DURALUDON 884 -#define SPECIES_DREEPY 885 -#define SPECIES_DRAKLOAK 886 -#define SPECIES_DRAGAPULT 887 -#define SPECIES_ZACIAN 888 -#define SPECIES_ZAMAZENTA 889 -#define SPECIES_ETERNATUS 890 -#define SPECIES_KUBFU 891 -#define SPECIES_URSHIFU 892 -#define SPECIES_ZARUDE 893 -#define SPECIES_REGIELEKI 894 -#define SPECIES_REGIDRAGO 895 -#define SPECIES_GLASTRIER 896 -#define SPECIES_SPECTRIER 897 -#define SPECIES_CALYREX 898 -#define SPECIES_WYRDEER 899 -#define SPECIES_KLEAVOR 900 -#define SPECIES_URSALUNA 901 -#define SPECIES_BASCULEGION 902 -#define SPECIES_SNEASLER 903 -#define SPECIES_OVERQWIL 904 -#define SPECIES_ENAMORUS 905 +#define SPECIES_NONE 0 +#define SPECIES_BULBASAUR 1 +#define SPECIES_IVYSAUR 2 +#define SPECIES_VENUSAUR 3 +#define SPECIES_CHARMANDER 4 +#define SPECIES_CHARMELEON 5 +#define SPECIES_CHARIZARD 6 +#define SPECIES_SQUIRTLE 7 +#define SPECIES_WARTORTLE 8 +#define SPECIES_BLASTOISE 9 +#define SPECIES_CATERPIE 10 +#define SPECIES_METAPOD 11 +#define SPECIES_BUTTERFREE 12 +#define SPECIES_WEEDLE 13 +#define SPECIES_KAKUNA 14 +#define SPECIES_BEEDRILL 15 +#define SPECIES_PIDGEY 16 +#define SPECIES_PIDGEOTTO 17 +#define SPECIES_PIDGEOT 18 +#define SPECIES_RATTATA 19 +#define SPECIES_RATICATE 20 +#define SPECIES_SPEAROW 21 +#define SPECIES_FEAROW 22 +#define SPECIES_EKANS 23 +#define SPECIES_ARBOK 24 +#define SPECIES_PIKACHU 25 +#define SPECIES_RAICHU 26 +#define SPECIES_SANDSHREW 27 +#define SPECIES_SANDSLASH 28 +#define SPECIES_NIDORAN_F 29 +#define SPECIES_NIDORINA 30 +#define SPECIES_NIDOQUEEN 31 +#define SPECIES_NIDORAN_M 32 +#define SPECIES_NIDORINO 33 +#define SPECIES_NIDOKING 34 +#define SPECIES_CLEFAIRY 35 +#define SPECIES_CLEFABLE 36 +#define SPECIES_VULPIX 37 +#define SPECIES_NINETALES 38 +#define SPECIES_JIGGLYPUFF 39 +#define SPECIES_WIGGLYTUFF 40 +#define SPECIES_ZUBAT 41 +#define SPECIES_GOLBAT 42 +#define SPECIES_ODDISH 43 +#define SPECIES_GLOOM 44 +#define SPECIES_VILEPLUME 45 +#define SPECIES_PARAS 46 +#define SPECIES_PARASECT 47 +#define SPECIES_VENONAT 48 +#define SPECIES_VENOMOTH 49 +#define SPECIES_DIGLETT 50 +#define SPECIES_DUGTRIO 51 +#define SPECIES_MEOWTH 52 +#define SPECIES_PERSIAN 53 +#define SPECIES_PSYDUCK 54 +#define SPECIES_GOLDUCK 55 +#define SPECIES_MANKEY 56 +#define SPECIES_PRIMEAPE 57 +#define SPECIES_GROWLITHE 58 +#define SPECIES_ARCANINE 59 +#define SPECIES_POLIWAG 60 +#define SPECIES_POLIWHIRL 61 +#define SPECIES_POLIWRATH 62 +#define SPECIES_ABRA 63 +#define SPECIES_KADABRA 64 +#define SPECIES_ALAKAZAM 65 +#define SPECIES_MACHOP 66 +#define SPECIES_MACHOKE 67 +#define SPECIES_MACHAMP 68 +#define SPECIES_BELLSPROUT 69 +#define SPECIES_WEEPINBELL 70 +#define SPECIES_VICTREEBEL 71 +#define SPECIES_TENTACOOL 72 +#define SPECIES_TENTACRUEL 73 +#define SPECIES_GEODUDE 74 +#define SPECIES_GRAVELER 75 +#define SPECIES_GOLEM 76 +#define SPECIES_PONYTA 77 +#define SPECIES_RAPIDASH 78 +#define SPECIES_SLOWPOKE 79 +#define SPECIES_SLOWBRO 80 +#define SPECIES_MAGNEMITE 81 +#define SPECIES_MAGNETON 82 +#define SPECIES_FARFETCHD 83 +#define SPECIES_DODUO 84 +#define SPECIES_DODRIO 85 +#define SPECIES_SEEL 86 +#define SPECIES_DEWGONG 87 +#define SPECIES_GRIMER 88 +#define SPECIES_MUK 89 +#define SPECIES_SHELLDER 90 +#define SPECIES_CLOYSTER 91 +#define SPECIES_GASTLY 92 +#define SPECIES_HAUNTER 93 +#define SPECIES_GENGAR 94 +#define SPECIES_ONIX 95 +#define SPECIES_DROWZEE 96 +#define SPECIES_HYPNO 97 +#define SPECIES_KRABBY 98 +#define SPECIES_KINGLER 99 +#define SPECIES_VOLTORB 100 +#define SPECIES_ELECTRODE 101 +#define SPECIES_EXEGGCUTE 102 +#define SPECIES_EXEGGUTOR 103 +#define SPECIES_CUBONE 104 +#define SPECIES_MAROWAK 105 +#define SPECIES_HITMONLEE 106 +#define SPECIES_HITMONCHAN 107 +#define SPECIES_LICKITUNG 108 +#define SPECIES_KOFFING 109 +#define SPECIES_WEEZING 110 +#define SPECIES_RHYHORN 111 +#define SPECIES_RHYDON 112 +#define SPECIES_CHANSEY 113 +#define SPECIES_TANGELA 114 +#define SPECIES_KANGASKHAN 115 +#define SPECIES_HORSEA 116 +#define SPECIES_SEADRA 117 +#define SPECIES_GOLDEEN 118 +#define SPECIES_SEAKING 119 +#define SPECIES_STARYU 120 +#define SPECIES_STARMIE 121 +#define SPECIES_MR_MIME 122 +#define SPECIES_SCYTHER 123 +#define SPECIES_JYNX 124 +#define SPECIES_ELECTABUZZ 125 +#define SPECIES_MAGMAR 126 +#define SPECIES_PINSIR 127 +#define SPECIES_TAUROS 128 +#define SPECIES_MAGIKARP 129 +#define SPECIES_GYARADOS 130 +#define SPECIES_LAPRAS 131 +#define SPECIES_DITTO 132 +#define SPECIES_EEVEE 133 +#define SPECIES_VAPOREON 134 +#define SPECIES_JOLTEON 135 +#define SPECIES_FLAREON 136 +#define SPECIES_PORYGON 137 +#define SPECIES_OMANYTE 138 +#define SPECIES_OMASTAR 139 +#define SPECIES_KABUTO 140 +#define SPECIES_KABUTOPS 141 +#define SPECIES_AERODACTYL 142 +#define SPECIES_SNORLAX 143 +#define SPECIES_ARTICUNO 144 +#define SPECIES_ZAPDOS 145 +#define SPECIES_MOLTRES 146 +#define SPECIES_DRATINI 147 +#define SPECIES_DRAGONAIR 148 +#define SPECIES_DRAGONITE 149 +#define SPECIES_MEWTWO 150 +#define SPECIES_MEW 151 +#define SPECIES_CHIKORITA 152 +#define SPECIES_BAYLEEF 153 +#define SPECIES_MEGANIUM 154 +#define SPECIES_CYNDAQUIL 155 +#define SPECIES_QUILAVA 156 +#define SPECIES_TYPHLOSION 157 +#define SPECIES_TOTODILE 158 +#define SPECIES_CROCONAW 159 +#define SPECIES_FERALIGATR 160 +#define SPECIES_SENTRET 161 +#define SPECIES_FURRET 162 +#define SPECIES_HOOTHOOT 163 +#define SPECIES_NOCTOWL 164 +#define SPECIES_LEDYBA 165 +#define SPECIES_LEDIAN 166 +#define SPECIES_SPINARAK 167 +#define SPECIES_ARIADOS 168 +#define SPECIES_CROBAT 169 +#define SPECIES_CHINCHOU 170 +#define SPECIES_LANTURN 171 +#define SPECIES_PICHU 172 +#define SPECIES_CLEFFA 173 +#define SPECIES_IGGLYBUFF 174 +#define SPECIES_TOGEPI 175 +#define SPECIES_TOGETIC 176 +#define SPECIES_NATU 177 +#define SPECIES_XATU 178 +#define SPECIES_MAREEP 179 +#define SPECIES_FLAAFFY 180 +#define SPECIES_AMPHAROS 181 +#define SPECIES_BELLOSSOM 182 +#define SPECIES_MARILL 183 +#define SPECIES_AZUMARILL 184 +#define SPECIES_SUDOWOODO 185 +#define SPECIES_POLITOED 186 +#define SPECIES_HOPPIP 187 +#define SPECIES_SKIPLOOM 188 +#define SPECIES_JUMPLUFF 189 +#define SPECIES_AIPOM 190 +#define SPECIES_SUNKERN 191 +#define SPECIES_SUNFLORA 192 +#define SPECIES_YANMA 193 +#define SPECIES_WOOPER 194 +#define SPECIES_QUAGSIRE 195 +#define SPECIES_ESPEON 196 +#define SPECIES_UMBREON 197 +#define SPECIES_MURKROW 198 +#define SPECIES_SLOWKING 199 +#define SPECIES_MISDREAVUS 200 +#define SPECIES_UNOWN 201 +#define SPECIES_WOBBUFFET 202 +#define SPECIES_GIRAFARIG 203 +#define SPECIES_PINECO 204 +#define SPECIES_FORRETRESS 205 +#define SPECIES_DUNSPARCE 206 +#define SPECIES_GLIGAR 207 +#define SPECIES_STEELIX 208 +#define SPECIES_SNUBBULL 209 +#define SPECIES_GRANBULL 210 +#define SPECIES_QWILFISH 211 +#define SPECIES_SCIZOR 212 +#define SPECIES_SHUCKLE 213 +#define SPECIES_HERACROSS 214 +#define SPECIES_SNEASEL 215 +#define SPECIES_TEDDIURSA 216 +#define SPECIES_URSARING 217 +#define SPECIES_SLUGMA 218 +#define SPECIES_MAGCARGO 219 +#define SPECIES_SWINUB 220 +#define SPECIES_PILOSWINE 221 +#define SPECIES_CORSOLA 222 +#define SPECIES_REMORAID 223 +#define SPECIES_OCTILLERY 224 +#define SPECIES_DELIBIRD 225 +#define SPECIES_MANTINE 226 +#define SPECIES_SKARMORY 227 +#define SPECIES_HOUNDOUR 228 +#define SPECIES_HOUNDOOM 229 +#define SPECIES_KINGDRA 230 +#define SPECIES_PHANPY 231 +#define SPECIES_DONPHAN 232 +#define SPECIES_PORYGON2 233 +#define SPECIES_STANTLER 234 +#define SPECIES_SMEARGLE 235 +#define SPECIES_TYROGUE 236 +#define SPECIES_HITMONTOP 237 +#define SPECIES_SMOOCHUM 238 +#define SPECIES_ELEKID 239 +#define SPECIES_MAGBY 240 +#define SPECIES_MILTANK 241 +#define SPECIES_BLISSEY 242 +#define SPECIES_RAIKOU 243 +#define SPECIES_ENTEI 244 +#define SPECIES_SUICUNE 245 +#define SPECIES_LARVITAR 246 +#define SPECIES_PUPITAR 247 +#define SPECIES_TYRANITAR 248 +#define SPECIES_LUGIA 249 +#define SPECIES_HO_OH 250 +#define SPECIES_CELEBI 251 +#define SPECIES_TREECKO 252 +#define SPECIES_GROVYLE 253 +#define SPECIES_SCEPTILE 254 +#define SPECIES_TORCHIC 255 +#define SPECIES_COMBUSKEN 256 +#define SPECIES_BLAZIKEN 257 +#define SPECIES_MUDKIP 258 +#define SPECIES_MARSHTOMP 259 +#define SPECIES_SWAMPERT 260 +#define SPECIES_POOCHYENA 261 +#define SPECIES_MIGHTYENA 262 +#define SPECIES_ZIGZAGOON 263 +#define SPECIES_LINOONE 264 +#define SPECIES_WURMPLE 265 +#define SPECIES_SILCOON 266 +#define SPECIES_BEAUTIFLY 267 +#define SPECIES_CASCOON 268 +#define SPECIES_DUSTOX 269 +#define SPECIES_LOTAD 270 +#define SPECIES_LOMBRE 271 +#define SPECIES_LUDICOLO 272 +#define SPECIES_SEEDOT 273 +#define SPECIES_NUZLEAF 274 +#define SPECIES_SHIFTRY 275 +#define SPECIES_TAILLOW 276 +#define SPECIES_SWELLOW 277 +#define SPECIES_WINGULL 278 +#define SPECIES_PELIPPER 279 +#define SPECIES_RALTS 280 +#define SPECIES_KIRLIA 281 +#define SPECIES_GARDEVOIR 282 +#define SPECIES_SURSKIT 283 +#define SPECIES_MASQUERAIN 284 +#define SPECIES_SHROOMISH 285 +#define SPECIES_BRELOOM 286 +#define SPECIES_SLAKOTH 287 +#define SPECIES_VIGOROTH 288 +#define SPECIES_SLAKING 289 +#define SPECIES_NINCADA 290 +#define SPECIES_NINJASK 291 +#define SPECIES_SHEDINJA 292 +#define SPECIES_WHISMUR 293 +#define SPECIES_LOUDRED 294 +#define SPECIES_EXPLOUD 295 +#define SPECIES_MAKUHITA 296 +#define SPECIES_HARIYAMA 297 +#define SPECIES_AZURILL 298 +#define SPECIES_NOSEPASS 299 +#define SPECIES_SKITTY 300 +#define SPECIES_DELCATTY 301 +#define SPECIES_SABLEYE 302 +#define SPECIES_MAWILE 303 +#define SPECIES_ARON 304 +#define SPECIES_LAIRON 305 +#define SPECIES_AGGRON 306 +#define SPECIES_MEDITITE 307 +#define SPECIES_MEDICHAM 308 +#define SPECIES_ELECTRIKE 309 +#define SPECIES_MANECTRIC 310 +#define SPECIES_PLUSLE 311 +#define SPECIES_MINUN 312 +#define SPECIES_VOLBEAT 313 +#define SPECIES_ILLUMISE 314 +#define SPECIES_ROSELIA 315 +#define SPECIES_GULPIN 316 +#define SPECIES_SWALOT 317 +#define SPECIES_CARVANHA 318 +#define SPECIES_SHARPEDO 319 +#define SPECIES_WAILMER 320 +#define SPECIES_WAILORD 321 +#define SPECIES_NUMEL 322 +#define SPECIES_CAMERUPT 323 +#define SPECIES_TORKOAL 324 +#define SPECIES_SPOINK 325 +#define SPECIES_GRUMPIG 326 +#define SPECIES_SPINDA 327 +#define SPECIES_TRAPINCH 328 +#define SPECIES_VIBRAVA 329 +#define SPECIES_FLYGON 330 +#define SPECIES_CACNEA 331 +#define SPECIES_CACTURNE 332 +#define SPECIES_SWABLU 333 +#define SPECIES_ALTARIA 334 +#define SPECIES_ZANGOOSE 335 +#define SPECIES_SEVIPER 336 +#define SPECIES_LUNATONE 337 +#define SPECIES_SOLROCK 338 +#define SPECIES_BARBOACH 339 +#define SPECIES_WHISCASH 340 +#define SPECIES_CORPHISH 341 +#define SPECIES_CRAWDAUNT 342 +#define SPECIES_BALTOY 343 +#define SPECIES_CLAYDOL 344 +#define SPECIES_LILEEP 345 +#define SPECIES_CRADILY 346 +#define SPECIES_ANORITH 347 +#define SPECIES_ARMALDO 348 +#define SPECIES_FEEBAS 349 +#define SPECIES_MILOTIC 350 +#define SPECIES_CASTFORM SPECIES_CASTFORM_NORMAL +#define SPECIES_CASTFORM_NORMAL 351 +#define SPECIES_KECLEON 352 +#define SPECIES_SHUPPET 353 +#define SPECIES_BANETTE 354 +#define SPECIES_DUSKULL 355 +#define SPECIES_DUSCLOPS 356 +#define SPECIES_TROPIUS 357 +#define SPECIES_CHIMECHO 358 +#define SPECIES_ABSOL 359 +#define SPECIES_WYNAUT 360 +#define SPECIES_SNORUNT 361 +#define SPECIES_GLALIE 362 +#define SPECIES_SPHEAL 363 +#define SPECIES_SEALEO 364 +#define SPECIES_WALREIN 365 +#define SPECIES_CLAMPERL 366 +#define SPECIES_HUNTAIL 367 +#define SPECIES_GOREBYSS 368 +#define SPECIES_RELICANTH 369 +#define SPECIES_LUVDISC 370 +#define SPECIES_BAGON 371 +#define SPECIES_SHELGON 372 +#define SPECIES_SALAMENCE 373 +#define SPECIES_BELDUM 374 +#define SPECIES_METANG 375 +#define SPECIES_METAGROSS 376 +#define SPECIES_REGIROCK 377 +#define SPECIES_REGICE 378 +#define SPECIES_REGISTEEL 379 +#define SPECIES_LATIAS 380 +#define SPECIES_LATIOS 381 +#define SPECIES_KYOGRE 382 +#define SPECIES_GROUDON 383 +#define SPECIES_RAYQUAZA 384 +#define SPECIES_JIRACHI 385 +#define SPECIES_DEOXYS SPECIES_DEOXYS_NORMAL +#define SPECIES_DEOXYS_NORMAL 386 +#define SPECIES_TURTWIG 387 +#define SPECIES_GROTLE 388 +#define SPECIES_TORTERRA 389 +#define SPECIES_CHIMCHAR 390 +#define SPECIES_MONFERNO 391 +#define SPECIES_INFERNAPE 392 +#define SPECIES_PIPLUP 393 +#define SPECIES_PRINPLUP 394 +#define SPECIES_EMPOLEON 395 +#define SPECIES_STARLY 396 +#define SPECIES_STARAVIA 397 +#define SPECIES_STARAPTOR 398 +#define SPECIES_BIDOOF 399 +#define SPECIES_BIBAREL 400 +#define SPECIES_KRICKETOT 401 +#define SPECIES_KRICKETUNE 402 +#define SPECIES_SHINX 403 +#define SPECIES_LUXIO 404 +#define SPECIES_LUXRAY 405 +#define SPECIES_BUDEW 406 +#define SPECIES_ROSERADE 407 +#define SPECIES_CRANIDOS 408 +#define SPECIES_RAMPARDOS 409 +#define SPECIES_SHIELDON 410 +#define SPECIES_BASTIODON 411 +#define SPECIES_BURMY SPECIES_BURMY_PLANT_CLOAK +#define SPECIES_BURMY_PLANT_CLOAK 412 +#define SPECIES_WORMADAM SPECIES_WORMADAM_PLANT_CLOAK +#define SPECIES_WORMADAM_PLANT_CLOAK 413 +#define SPECIES_MOTHIM 414 +#define SPECIES_COMBEE 415 +#define SPECIES_VESPIQUEN 416 +#define SPECIES_PACHIRISU 417 +#define SPECIES_BUIZEL 418 +#define SPECIES_FLOATZEL 419 +#define SPECIES_CHERUBI 420 +#define SPECIES_CHERRIM SPECIES_CHERRIM_OVERCAST +#define SPECIES_CHERRIM_OVERCAST 421 +#define SPECIES_SHELLOS SPECIES_SHELLOS_WEST_SEA +#define SPECIES_SHELLOS_WEST_SEA 422 +#define SPECIES_GASTRODON SPECIES_GASTRODON_WEST_SEA +#define SPECIES_GASTRODON_WEST_SEA 423 +#define SPECIES_AMBIPOM 424 +#define SPECIES_DRIFLOON 425 +#define SPECIES_DRIFBLIM 426 +#define SPECIES_BUNEARY 427 +#define SPECIES_LOPUNNY 428 +#define SPECIES_MISMAGIUS 429 +#define SPECIES_HONCHKROW 430 +#define SPECIES_GLAMEOW 431 +#define SPECIES_PURUGLY 432 +#define SPECIES_CHINGLING 433 +#define SPECIES_STUNKY 434 +#define SPECIES_SKUNTANK 435 +#define SPECIES_BRONZOR 436 +#define SPECIES_BRONZONG 437 +#define SPECIES_BONSLY 438 +#define SPECIES_MIME_JR 439 +#define SPECIES_HAPPINY 440 +#define SPECIES_CHATOT 441 +#define SPECIES_SPIRITOMB 442 +#define SPECIES_GIBLE 443 +#define SPECIES_GABITE 444 +#define SPECIES_GARCHOMP 445 +#define SPECIES_MUNCHLAX 446 +#define SPECIES_RIOLU 447 +#define SPECIES_LUCARIO 448 +#define SPECIES_HIPPOPOTAS 449 +#define SPECIES_HIPPOWDON 450 +#define SPECIES_SKORUPI 451 +#define SPECIES_DRAPION 452 +#define SPECIES_CROAGUNK 453 +#define SPECIES_TOXICROAK 454 +#define SPECIES_CARNIVINE 455 +#define SPECIES_FINNEON 456 +#define SPECIES_LUMINEON 457 +#define SPECIES_MANTYKE 458 +#define SPECIES_SNOVER 459 +#define SPECIES_ABOMASNOW 460 +#define SPECIES_WEAVILE 461 +#define SPECIES_MAGNEZONE 462 +#define SPECIES_LICKILICKY 463 +#define SPECIES_RHYPERIOR 464 +#define SPECIES_TANGROWTH 465 +#define SPECIES_ELECTIVIRE 466 +#define SPECIES_MAGMORTAR 467 +#define SPECIES_TOGEKISS 468 +#define SPECIES_YANMEGA 469 +#define SPECIES_LEAFEON 470 +#define SPECIES_GLACEON 471 +#define SPECIES_GLISCOR 472 +#define SPECIES_MAMOSWINE 473 +#define SPECIES_PORYGON_Z 474 +#define SPECIES_GALLADE 475 +#define SPECIES_PROBOPASS 476 +#define SPECIES_DUSKNOIR 477 +#define SPECIES_FROSLASS 478 +#define SPECIES_ROTOM 479 +#define SPECIES_UXIE 480 +#define SPECIES_MESPRIT 481 +#define SPECIES_AZELF 482 +#define SPECIES_DIALGA 483 +#define SPECIES_PALKIA 484 +#define SPECIES_HEATRAN 485 +#define SPECIES_REGIGIGAS 486 +#define SPECIES_GIRATINA SPECIES_GIRATINA_ALTERED +#define SPECIES_GIRATINA_ALTERED 487 +#define SPECIES_CRESSELIA 488 +#define SPECIES_PHIONE 489 +#define SPECIES_MANAPHY 490 +#define SPECIES_DARKRAI 491 +#define SPECIES_SHAYMIN SPECIES_SHAYMIN_LAND +#define SPECIES_SHAYMIN_LAND 492 +#define SPECIES_ARCEUS SPECIES_ARCEUS_NORMAL +#define SPECIES_ARCEUS_NORMAL 493 +#define SPECIES_VICTINI 494 +#define SPECIES_SNIVY 495 +#define SPECIES_SERVINE 496 +#define SPECIES_SERPERIOR 497 +#define SPECIES_TEPIG 498 +#define SPECIES_PIGNITE 499 +#define SPECIES_EMBOAR 500 +#define SPECIES_OSHAWOTT 501 +#define SPECIES_DEWOTT 502 +#define SPECIES_SAMUROTT 503 +#define SPECIES_PATRAT 504 +#define SPECIES_WATCHOG 505 +#define SPECIES_LILLIPUP 506 +#define SPECIES_HERDIER 507 +#define SPECIES_STOUTLAND 508 +#define SPECIES_PURRLOIN 509 +#define SPECIES_LIEPARD 510 +#define SPECIES_PANSAGE 511 +#define SPECIES_SIMISAGE 512 +#define SPECIES_PANSEAR 513 +#define SPECIES_SIMISEAR 514 +#define SPECIES_PANPOUR 515 +#define SPECIES_SIMIPOUR 516 +#define SPECIES_MUNNA 517 +#define SPECIES_MUSHARNA 518 +#define SPECIES_PIDOVE 519 +#define SPECIES_TRANQUILL 520 +#define SPECIES_UNFEZANT 521 +#define SPECIES_BLITZLE 522 +#define SPECIES_ZEBSTRIKA 523 +#define SPECIES_ROGGENROLA 524 +#define SPECIES_BOLDORE 525 +#define SPECIES_GIGALITH 526 +#define SPECIES_WOOBAT 527 +#define SPECIES_SWOOBAT 528 +#define SPECIES_DRILBUR 529 +#define SPECIES_EXCADRILL 530 +#define SPECIES_AUDINO 531 +#define SPECIES_TIMBURR 532 +#define SPECIES_GURDURR 533 +#define SPECIES_CONKELDURR 534 +#define SPECIES_TYMPOLE 535 +#define SPECIES_PALPITOAD 536 +#define SPECIES_SEISMITOAD 537 +#define SPECIES_THROH 538 +#define SPECIES_SAWK 539 +#define SPECIES_SEWADDLE 540 +#define SPECIES_SWADLOON 541 +#define SPECIES_LEAVANNY 542 +#define SPECIES_VENIPEDE 543 +#define SPECIES_WHIRLIPEDE 544 +#define SPECIES_SCOLIPEDE 545 +#define SPECIES_COTTONEE 546 +#define SPECIES_WHIMSICOTT 547 +#define SPECIES_PETILIL 548 +#define SPECIES_LILLIGANT 549 +#define SPECIES_BASCULIN SPECIES_BASCULIN_RED_STRIPED +#define SPECIES_BASCULIN_RED_STRIPED 550 +#define SPECIES_SANDILE 551 +#define SPECIES_KROKOROK 552 +#define SPECIES_KROOKODILE 553 +#define SPECIES_DARUMAKA 554 +#define SPECIES_DARMANITAN SPECIES_DARMANITAN_STANDARD_MODE +#define SPECIES_DARMANITAN_STANDARD_MODE 555 +#define SPECIES_MARACTUS 556 +#define SPECIES_DWEBBLE 557 +#define SPECIES_CRUSTLE 558 +#define SPECIES_SCRAGGY 559 +#define SPECIES_SCRAFTY 560 +#define SPECIES_SIGILYPH 561 +#define SPECIES_YAMASK 562 +#define SPECIES_COFAGRIGUS 563 +#define SPECIES_TIRTOUGA 564 +#define SPECIES_CARRACOSTA 565 +#define SPECIES_ARCHEN 566 +#define SPECIES_ARCHEOPS 567 +#define SPECIES_TRUBBISH 568 +#define SPECIES_GARBODOR 569 +#define SPECIES_ZORUA 570 +#define SPECIES_ZOROARK 571 +#define SPECIES_MINCCINO 572 +#define SPECIES_CINCCINO 573 +#define SPECIES_GOTHITA 574 +#define SPECIES_GOTHORITA 575 +#define SPECIES_GOTHITELLE 576 +#define SPECIES_SOLOSIS 577 +#define SPECIES_DUOSION 578 +#define SPECIES_REUNICLUS 579 +#define SPECIES_DUCKLETT 580 +#define SPECIES_SWANNA 581 +#define SPECIES_VANILLITE 582 +#define SPECIES_VANILLISH 583 +#define SPECIES_VANILLUXE 584 +#define SPECIES_DEERLING SPECIES_DEERLING_SPRING +#define SPECIES_DEERLING_SPRING 585 +#define SPECIES_SAWSBUCK SPECIES_SAWSBUCK_SPRING +#define SPECIES_SAWSBUCK_SPRING 586 +#define SPECIES_EMOLGA 587 +#define SPECIES_KARRABLAST 588 +#define SPECIES_ESCAVALIER 589 +#define SPECIES_FOONGUS 590 +#define SPECIES_AMOONGUSS 591 +#define SPECIES_FRILLISH 592 +#define SPECIES_JELLICENT 593 +#define SPECIES_ALOMOMOLA 594 +#define SPECIES_JOLTIK 595 +#define SPECIES_GALVANTULA 596 +#define SPECIES_FERROSEED 597 +#define SPECIES_FERROTHORN 598 +#define SPECIES_KLINK 599 +#define SPECIES_KLANG 600 +#define SPECIES_KLINKLANG 601 +#define SPECIES_TYNAMO 602 +#define SPECIES_EELEKTRIK 603 +#define SPECIES_EELEKTROSS 604 +#define SPECIES_ELGYEM 605 +#define SPECIES_BEHEEYEM 606 +#define SPECIES_LITWICK 607 +#define SPECIES_LAMPENT 608 +#define SPECIES_CHANDELURE 609 +#define SPECIES_AXEW 610 +#define SPECIES_FRAXURE 611 +#define SPECIES_HAXORUS 612 +#define SPECIES_CUBCHOO 613 +#define SPECIES_BEARTIC 614 +#define SPECIES_CRYOGONAL 615 +#define SPECIES_SHELMET 616 +#define SPECIES_ACCELGOR 617 +#define SPECIES_STUNFISK 618 +#define SPECIES_MIENFOO 619 +#define SPECIES_MIENSHAO 620 +#define SPECIES_DRUDDIGON 621 +#define SPECIES_GOLETT 622 +#define SPECIES_GOLURK 623 +#define SPECIES_PAWNIARD 624 +#define SPECIES_BISHARP 625 +#define SPECIES_BOUFFALANT 626 +#define SPECIES_RUFFLET 627 +#define SPECIES_BRAVIARY 628 +#define SPECIES_VULLABY 629 +#define SPECIES_MANDIBUZZ 630 +#define SPECIES_HEATMOR 631 +#define SPECIES_DURANT 632 +#define SPECIES_DEINO 633 +#define SPECIES_ZWEILOUS 634 +#define SPECIES_HYDREIGON 635 +#define SPECIES_LARVESTA 636 +#define SPECIES_VOLCARONA 637 +#define SPECIES_COBALION 638 +#define SPECIES_TERRAKION 639 +#define SPECIES_VIRIZION 640 +#define SPECIES_TORNADUS SPECIES_TORNADUS_INCARNATE +#define SPECIES_TORNADUS_INCARNATE 641 +#define SPECIES_THUNDURUS SPECIES_THUNDURUS_INCARNATE +#define SPECIES_THUNDURUS_INCARNATE 642 +#define SPECIES_RESHIRAM 643 +#define SPECIES_ZEKROM 644 +#define SPECIES_LANDORUS SPECIES_LANDORUS_INCARNATE +#define SPECIES_LANDORUS_INCARNATE 645 +#define SPECIES_KYUREM 646 +#define SPECIES_KELDEO SPECIES_KELDEO_ORDINARY +#define SPECIES_KELDEO_ORDINARY 647 +#define SPECIES_MELOETTA SPECIES_MELOETTA_ARIA +#define SPECIES_MELOETTA_ARIA 648 +#define SPECIES_GENESECT 649 +#define SPECIES_CHESPIN 650 +#define SPECIES_QUILLADIN 651 +#define SPECIES_CHESNAUGHT 652 +#define SPECIES_FENNEKIN 653 +#define SPECIES_BRAIXEN 654 +#define SPECIES_DELPHOX 655 +#define SPECIES_FROAKIE 656 +#define SPECIES_FROGADIER 657 +#define SPECIES_GRENINJA 658 +#define SPECIES_BUNNELBY 659 +#define SPECIES_DIGGERSBY 660 +#define SPECIES_FLETCHLING 661 +#define SPECIES_FLETCHINDER 662 +#define SPECIES_TALONFLAME 663 +#define SPECIES_SCATTERBUG 664 +#define SPECIES_SPEWPA 665 +#define SPECIES_VIVILLON SPECIES_VIVILLON_ICY_SNOW +#define SPECIES_VIVILLON_ICY_SNOW 666 +#define SPECIES_LITLEO 667 +#define SPECIES_PYROAR 668 +#define SPECIES_FLABEBE SPECIES_FLABEBE_RED_FLOWER +#define SPECIES_FLABEBE_RED_FLOWER 669 +#define SPECIES_FLOETTE SPECIES_FLOETTE_RED_FLOWER +#define SPECIES_FLOETTE_RED_FLOWER 670 +#define SPECIES_FLORGES SPECIES_FLORGES_RED_FLOWER +#define SPECIES_FLORGES_RED_FLOWER 671 +#define SPECIES_SKIDDO 672 +#define SPECIES_GOGOAT 673 +#define SPECIES_PANCHAM 674 +#define SPECIES_PANGORO 675 +#define SPECIES_FURFROU SPECIES_FURFROU_NATURAL +#define SPECIES_FURFROU_NATURAL 676 +#define SPECIES_ESPURR 677 +#define SPECIES_MEOWSTIC SPECIES_MEOWSTIC_MALE +#define SPECIES_MEOWSTIC_MALE 678 +#define SPECIES_HONEDGE 679 +#define SPECIES_DOUBLADE 680 +#define SPECIES_AEGISLASH SPECIES_AEGISLASH_SHIELD +#define SPECIES_AEGISLASH_SHIELD 681 +#define SPECIES_SPRITZEE 682 +#define SPECIES_AROMATISSE 683 +#define SPECIES_SWIRLIX 684 +#define SPECIES_SLURPUFF 685 +#define SPECIES_INKAY 686 +#define SPECIES_MALAMAR 687 +#define SPECIES_BINACLE 688 +#define SPECIES_BARBARACLE 689 +#define SPECIES_SKRELP 690 +#define SPECIES_DRAGALGE 691 +#define SPECIES_CLAUNCHER 692 +#define SPECIES_CLAWITZER 693 +#define SPECIES_HELIOPTILE 694 +#define SPECIES_HELIOLISK 695 +#define SPECIES_TYRUNT 696 +#define SPECIES_TYRANTRUM 697 +#define SPECIES_AMAURA 698 +#define SPECIES_AURORUS 699 +#define SPECIES_SYLVEON 700 +#define SPECIES_HAWLUCHA 701 +#define SPECIES_DEDENNE 702 +#define SPECIES_CARBINK 703 +#define SPECIES_GOOMY 704 +#define SPECIES_SLIGGOO 705 +#define SPECIES_GOODRA 706 +#define SPECIES_KLEFKI 707 +#define SPECIES_PHANTUMP 708 +#define SPECIES_TREVENANT 709 +#define SPECIES_PUMPKABOO SPECIES_PUMPKABOO_AVERAGE +#define SPECIES_PUMPKABOO_AVERAGE 710 +#define SPECIES_GOURGEIST SPECIES_GOURGEIST_AVERAGE +#define SPECIES_GOURGEIST_AVERAGE 711 +#define SPECIES_BERGMITE 712 +#define SPECIES_AVALUGG 713 +#define SPECIES_NOIBAT 714 +#define SPECIES_NOIVERN 715 +#define SPECIES_XERNEAS SPECIES_XERNEAS_NEUTRAL +#define SPECIES_XERNEAS_NEUTRAL 716 +#define SPECIES_YVELTAL 717 +#define SPECIES_ZYGARDE SPECIES_ZYGARDE_50 +#define SPECIES_ZYGARDE_50 SPECIES_ZYGARDE_50_AURA_BREAK +#define SPECIES_ZYGARDE_50_AURA_BREAK 718 +#define SPECIES_DIANCIE 719 +#define SPECIES_HOOPA SPECIES_HOOPA_CONFINED +#define SPECIES_HOOPA_CONFINED 720 +#define SPECIES_VOLCANION 721 +#define SPECIES_ROWLET 722 +#define SPECIES_DARTRIX 723 +#define SPECIES_DECIDUEYE 724 +#define SPECIES_LITTEN 725 +#define SPECIES_TORRACAT 726 +#define SPECIES_INCINEROAR 727 +#define SPECIES_POPPLIO 728 +#define SPECIES_BRIONNE 729 +#define SPECIES_PRIMARINA 730 +#define SPECIES_PIKIPEK 731 +#define SPECIES_TRUMBEAK 732 +#define SPECIES_TOUCANNON 733 +#define SPECIES_YUNGOOS 734 +#define SPECIES_GUMSHOOS 735 +#define SPECIES_GRUBBIN 736 +#define SPECIES_CHARJABUG 737 +#define SPECIES_VIKAVOLT 738 +#define SPECIES_CRABRAWLER 739 +#define SPECIES_CRABOMINABLE 740 +#define SPECIES_ORICORIO SPECIES_ORICORIO_BAILE +#define SPECIES_ORICORIO_BAILE 741 +#define SPECIES_CUTIEFLY 742 +#define SPECIES_RIBOMBEE 743 +#define SPECIES_ROCKRUFF 744 +#define SPECIES_LYCANROC SPECIES_LYCANROC_MIDDAY +#define SPECIES_LYCANROC_MIDDAY 745 +#define SPECIES_WISHIWASHI SPECIES_WISHIWASHI_SOLO +#define SPECIES_WISHIWASHI_SOLO 746 +#define SPECIES_MAREANIE 747 +#define SPECIES_TOXAPEX 748 +#define SPECIES_MUDBRAY 749 +#define SPECIES_MUDSDALE 750 +#define SPECIES_DEWPIDER 751 +#define SPECIES_ARAQUANID 752 +#define SPECIES_FOMANTIS 753 +#define SPECIES_LURANTIS 754 +#define SPECIES_MORELULL 755 +#define SPECIES_SHIINOTIC 756 +#define SPECIES_SALANDIT 757 +#define SPECIES_SALAZZLE 758 +#define SPECIES_STUFFUL 759 +#define SPECIES_BEWEAR 760 +#define SPECIES_BOUNSWEET 761 +#define SPECIES_STEENEE 762 +#define SPECIES_TSAREENA 763 +#define SPECIES_COMFEY 764 +#define SPECIES_ORANGURU 765 +#define SPECIES_PASSIMIAN 766 +#define SPECIES_WIMPOD 767 +#define SPECIES_GOLISOPOD 768 +#define SPECIES_SANDYGAST 769 +#define SPECIES_PALOSSAND 770 +#define SPECIES_PYUKUMUKU 771 +#define SPECIES_TYPE_NULL 772 +#define SPECIES_SILVALLY SPECIES_SILVALLY_NORMAL +#define SPECIES_SILVALLY_NORMAL 773 +#define SPECIES_MINIOR SPECIES_MINIOR_METEOR +#define SPECIES_MINIOR_METEOR SPECIES_MINIOR_METEOR_RED +#define SPECIES_MINIOR_METEOR_RED 774 +#define SPECIES_KOMALA 775 +#define SPECIES_TURTONATOR 776 +#define SPECIES_TOGEDEMARU 777 +#define SPECIES_MIMIKYU SPECIES_MIMIKYU_DISGUISED +#define SPECIES_MIMIKYU_DISGUISED 778 +#define SPECIES_BRUXISH 779 +#define SPECIES_DRAMPA 780 +#define SPECIES_DHELMISE 781 +#define SPECIES_JANGMO_O 782 +#define SPECIES_HAKAMO_O 783 +#define SPECIES_KOMMO_O 784 +#define SPECIES_TAPU_KOKO 785 +#define SPECIES_TAPU_LELE 786 +#define SPECIES_TAPU_BULU 787 +#define SPECIES_TAPU_FINI 788 +#define SPECIES_COSMOG 789 +#define SPECIES_COSMOEM 790 +#define SPECIES_SOLGALEO 791 +#define SPECIES_LUNALA 792 +#define SPECIES_NIHILEGO 793 +#define SPECIES_BUZZWOLE 794 +#define SPECIES_PHEROMOSA 795 +#define SPECIES_XURKITREE 796 +#define SPECIES_CELESTEELA 797 +#define SPECIES_KARTANA 798 +#define SPECIES_GUZZLORD 799 +#define SPECIES_NECROZMA 800 +#define SPECIES_MAGEARNA 801 +#define SPECIES_MARSHADOW 802 +#define SPECIES_POIPOLE 803 +#define SPECIES_NAGANADEL 804 +#define SPECIES_STAKATAKA 805 +#define SPECIES_BLACEPHALON 806 +#define SPECIES_ZERAORA 807 +#define SPECIES_MELTAN 808 +#define SPECIES_MELMETAL 809 +#define SPECIES_GROOKEY 810 +#define SPECIES_THWACKEY 811 +#define SPECIES_RILLABOOM 812 +#define SPECIES_SCORBUNNY 813 +#define SPECIES_RABOOT 814 +#define SPECIES_CINDERACE 815 +#define SPECIES_SOBBLE 816 +#define SPECIES_DRIZZILE 817 +#define SPECIES_INTELEON 818 +#define SPECIES_SKWOVET 819 +#define SPECIES_GREEDENT 820 +#define SPECIES_ROOKIDEE 821 +#define SPECIES_CORVISQUIRE 822 +#define SPECIES_CORVIKNIGHT 823 +#define SPECIES_BLIPBUG 824 +#define SPECIES_DOTTLER 825 +#define SPECIES_ORBEETLE 826 +#define SPECIES_NICKIT 827 +#define SPECIES_THIEVUL 828 +#define SPECIES_GOSSIFLEUR 829 +#define SPECIES_ELDEGOSS 830 +#define SPECIES_WOOLOO 831 +#define SPECIES_DUBWOOL 832 +#define SPECIES_CHEWTLE 833 +#define SPECIES_DREDNAW 834 +#define SPECIES_YAMPER 835 +#define SPECIES_BOLTUND 836 +#define SPECIES_ROLYCOLY 837 +#define SPECIES_CARKOL 838 +#define SPECIES_COALOSSAL 839 +#define SPECIES_APPLIN 840 +#define SPECIES_FLAPPLE 841 +#define SPECIES_APPLETUN 842 +#define SPECIES_SILICOBRA 843 +#define SPECIES_SANDACONDA 844 +#define SPECIES_CRAMORANT 845 +#define SPECIES_ARROKUDA 846 +#define SPECIES_BARRASKEWDA 847 +#define SPECIES_TOXEL 848 +#define SPECIES_TOXTRICITY SPECIES_TOXTRICITY_AMPED +#define SPECIES_TOXTRICITY_AMPED 849 +#define SPECIES_SIZZLIPEDE 850 +#define SPECIES_CENTISKORCH 851 +#define SPECIES_CLOBBOPUS 852 +#define SPECIES_GRAPPLOCT 853 +#define SPECIES_SINISTEA SPECIES_SINISTEA_PHONY +#define SPECIES_SINISTEA_PHONY 854 +#define SPECIES_POLTEAGEIST SPECIES_POLTEAGEIST_PHONY +#define SPECIES_POLTEAGEIST_PHONY 855 +#define SPECIES_HATENNA 856 +#define SPECIES_HATTREM 857 +#define SPECIES_HATTERENE 858 +#define SPECIES_IMPIDIMP 859 +#define SPECIES_MORGREM 860 +#define SPECIES_GRIMMSNARL 861 +#define SPECIES_OBSTAGOON 862 +#define SPECIES_PERRSERKER 863 +#define SPECIES_CURSOLA 864 +#define SPECIES_SIRFETCHD 865 +#define SPECIES_MR_RIME 866 +#define SPECIES_RUNERIGUS 867 +#define SPECIES_MILCERY 868 +#define SPECIES_ALCREMIE SPECIES_ALCREMIE_STRAWBERRY +#define SPECIES_ALCREMIE_STRAWBERRY SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM +#define SPECIES_ALCREMIE_VANILLA_CREAM SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM +#define SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM 869 +#define SPECIES_FALINKS 870 +#define SPECIES_PINCURCHIN 871 +#define SPECIES_SNOM 872 +#define SPECIES_FROSMOTH 873 +#define SPECIES_STONJOURNER 874 +#define SPECIES_EISCUE SPECIES_EISCUE_ICE_FACE +#define SPECIES_EISCUE_ICE_FACE 875 +#define SPECIES_INDEEDEE SPECIES_INDEEDEE_MALE +#define SPECIES_INDEEDEE_MALE 876 +#define SPECIES_MORPEKO SPECIES_MORPEKO_FULL_BELLY +#define SPECIES_MORPEKO_FULL_BELLY 877 +#define SPECIES_CUFANT 878 +#define SPECIES_COPPERAJAH 879 +#define SPECIES_DRACOZOLT 880 +#define SPECIES_ARCTOZOLT 881 +#define SPECIES_DRACOVISH 882 +#define SPECIES_ARCTOVISH 883 +#define SPECIES_DURALUDON 884 +#define SPECIES_DREEPY 885 +#define SPECIES_DRAKLOAK 886 +#define SPECIES_DRAGAPULT 887 +#define SPECIES_ZACIAN SPECIES_ZACIAN_HERO_OF_MANY_BATTLES +#define SPECIES_ZACIAN_HERO_OF_MANY_BATTLES 888 +#define SPECIES_ZAMAZENTA SPECIES_ZAMAZENTA_HERO_OF_MANY_BATTLES +#define SPECIES_ZAMAZENTA_HERO_OF_MANY_BATTLES 889 +#define SPECIES_ETERNATUS 890 +#define SPECIES_KUBFU 891 +#define SPECIES_URSHIFU SPECIES_URSHIFU_SINGLE_STRIKE_STYLE +#define SPECIES_URSHIFU_SINGLE_STRIKE_STYLE 892 +#define SPECIES_ZARUDE 893 +#define SPECIES_REGIELEKI 894 +#define SPECIES_REGIDRAGO 895 +#define SPECIES_GLASTRIER 896 +#define SPECIES_SPECTRIER 897 +#define SPECIES_CALYREX 898 +#define SPECIES_WYRDEER 899 +#define SPECIES_KLEAVOR 900 +#define SPECIES_URSALUNA 901 +#define SPECIES_BASCULEGION SPECIES_BASCULEGION_MALE +#define SPECIES_BASCULEGION_MALE 902 +#define SPECIES_SNEASLER 903 +#define SPECIES_OVERQWIL 904 +#define SPECIES_ENAMORUS SPECIES_ENAMORUS_INCARNATE +#define SPECIES_ENAMORUS_INCARNATE 905 // Megas #define SPECIES_VENUSAUR_MEGA FORMS_START + 1 @@ -999,7 +1052,8 @@ #define SPECIES_ZIGZAGOON_GALARIAN FORMS_START + 82 #define SPECIES_LINOONE_GALARIAN FORMS_START + 83 #define SPECIES_DARUMAKA_GALARIAN FORMS_START + 84 -#define SPECIES_DARMANITAN_GALARIAN FORMS_START + 85 +#define SPECIES_DARMANITAN_GALARIAN SPECIES_DARMANITAN_GALARIAN_STANDARD_MODE +#define SPECIES_DARMANITAN_GALARIAN_STANDARD_MODE FORMS_START + 85 #define SPECIES_YAMASK_GALARIAN FORMS_START + 86 #define SPECIES_STUNFISK_GALARIAN FORMS_START + 87 @@ -1140,7 +1194,7 @@ // Darmanitan #define SPECIES_DARMANITAN_ZEN_MODE FORMS_START + 187 -#define SPECIES_DARMANITAN_ZEN_MODE_GALARIAN FORMS_START + 188 +#define SPECIES_DARMANITAN_GALARIAN_ZEN_MODE FORMS_START + 188 // Deerling #define SPECIES_DEERLING_SUMMER FORMS_START + 189 @@ -1249,7 +1303,8 @@ #define SPECIES_XERNEAS_ACTIVE FORMS_START + 258 // Zygarde -#define SPECIES_ZYGARDE_10 FORMS_START + 259 +#define SPECIES_ZYGARDE_10 SPECIES_ZYGARDE_10_AURA_BREAK +#define SPECIES_ZYGARDE_10_AURA_BREAK FORMS_START + 259 #define SPECIES_ZYGARDE_10_POWER_CONSTRUCT FORMS_START + 260 #define SPECIES_ZYGARDE_50_POWER_CONSTRUCT FORMS_START + 261 #define SPECIES_ZYGARDE_COMPLETE FORMS_START + 262 @@ -1298,6 +1353,7 @@ #define SPECIES_MINIOR_METEOR_BLUE FORMS_START + 291 #define SPECIES_MINIOR_METEOR_INDIGO FORMS_START + 292 #define SPECIES_MINIOR_METEOR_VIOLET FORMS_START + 293 +#define SPECIES_MINIOR_CORE SPECIES_MINIOR_CORE_RED #define SPECIES_MINIOR_CORE_RED FORMS_START + 294 #define SPECIES_MINIOR_CORE_ORANGE FORMS_START + 295 #define SPECIES_MINIOR_CORE_YELLOW FORMS_START + 296 @@ -1331,14 +1387,22 @@ #define SPECIES_POLTEAGEIST_ANTIQUE FORMS_START + 310 // Alcremie -#define SPECIES_ALCREMIE_RUBY_CREAM FORMS_START + 311 -#define SPECIES_ALCREMIE_MATCHA_CREAM FORMS_START + 312 -#define SPECIES_ALCREMIE_MINT_CREAM FORMS_START + 313 -#define SPECIES_ALCREMIE_LEMON_CREAM FORMS_START + 314 -#define SPECIES_ALCREMIE_SALTED_CREAM FORMS_START + 315 -#define SPECIES_ALCREMIE_RUBY_SWIRL FORMS_START + 316 -#define SPECIES_ALCREMIE_CARAMEL_SWIRL FORMS_START + 317 -#define SPECIES_ALCREMIE_RAINBOW_SWIRL FORMS_START + 318 +#define SPECIES_ALCREMIE_RUBY_CREAM SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM +#define SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM FORMS_START + 311 +#define SPECIES_ALCREMIE_MATCHA_CREAM SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM +#define SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM FORMS_START + 312 +#define SPECIES_ALCREMIE_MINT_CREAM SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM +#define SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM FORMS_START + 313 +#define SPECIES_ALCREMIE_LEMON_CREAM SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM +#define SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM FORMS_START + 314 +#define SPECIES_ALCREMIE_SALTED_CREAM SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM +#define SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM FORMS_START + 315 +#define SPECIES_ALCREMIE_RUBY_SWIRL SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL +#define SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL FORMS_START + 316 +#define SPECIES_ALCREMIE_CARAMEL_SWIRL SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL +#define SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL FORMS_START + 317 +#define SPECIES_ALCREMIE_RAINBOW_SWIRL SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL +#define SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL FORMS_START + 318 // Eiscue #define SPECIES_EISCUE_NOICE_FACE FORMS_START + 319 @@ -1404,9 +1468,72 @@ #define SPECIES_ALCREMIE_GIGANTAMAX FORMS_START + 359 #define SPECIES_COPPERAJAH_GIGANTAMAX FORMS_START + 360 #define SPECIES_DURALUDON_GIGANTAMAX FORMS_START + 361 -#define SPECIES_URSHIFU_GIGANTAMAX FORMS_START + 362 +#define SPECIES_URSHIFU_SINGLE_STRIKE_STYLE_GIGANTAMAX FORMS_START + 362 #define SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX FORMS_START + 363 +/* +#define SPECIES_ALCREMIE_BERRY SPECIES_ALCREMIE_BERRY_VANILLA_CREAM +#define SPECIES_ALCREMIE_BERRY_VANILLA_CREAM FORMS_START + 363 // Todo +#define SPECIES_ALCREMIE_BERRY_RUBY_CREAM FORMS_START + 364 // Todo +#define SPECIES_ALCREMIE_BERRY_MATCHA_CREAM FORMS_START + 365 // Todo +#define SPECIES_ALCREMIE_BERRY_MINT_CREAM FORMS_START + 366 // Todo +#define SPECIES_ALCREMIE_BERRY_LEMON_CREAM FORMS_START + 367 // Todo +#define SPECIES_ALCREMIE_BERRY_SALTED_CREAM FORMS_START + 368 // Todo +#define SPECIES_ALCREMIE_BERRY_RUBY_SWIRL FORMS_START + 369 // Todo +#define SPECIES_ALCREMIE_BERRY_CARAMEL_SWIRL FORMS_START + 370 // Todo +#define SPECIES_ALCREMIE_BERRY_RAINBOW_SWIRL FORMS_START + 371 // Todo +#define SPECIES_ALCREMIE_LOVE SPECIES_ALCREMIE_LOVE_VANILLA_CREAM +#define SPECIES_ALCREMIE_LOVE_VANILLA_CREAM FORMS_START + 372 // Todo +#define SPECIES_ALCREMIE_LOVE_RUBY_CREAM FORMS_START + 373 // Todo +#define SPECIES_ALCREMIE_LOVE_MATCHA_CREAM FORMS_START + 374 // Todo +#define SPECIES_ALCREMIE_LOVE_MINT_CREAM FORMS_START + 375 // Todo +#define SPECIES_ALCREMIE_LOVE_LEMON_CREAM FORMS_START + 376 // Todo +#define SPECIES_ALCREMIE_LOVE_SALTED_CREAM FORMS_START + 377 // Todo +#define SPECIES_ALCREMIE_LOVE_RUBY_SWIRL FORMS_START + 378 // Todo +#define SPECIES_ALCREMIE_LOVE_CARAMEL_SWIRL FORMS_START + 379 // Todo +#define SPECIES_ALCREMIE_LOVE_RAINBOW_SWIRL FORMS_START + 380 // Todo +#define SPECIES_ALCREMIE_STAR SPECIES_ALCREMIE_STAR_VANILLA_CREAM +#define SPECIES_ALCREMIE_STAR_VANILLA_CREAM FORMS_START + 381 // Todo +#define SPECIES_ALCREMIE_STAR_RUBY_CREAM FORMS_START + 382 // Todo +#define SPECIES_ALCREMIE_STAR_MATCHA_CREAM FORMS_START + 383 // Todo +#define SPECIES_ALCREMIE_STAR_MINT_CREAM FORMS_START + 384 // Todo +#define SPECIES_ALCREMIE_STAR_LEMON_CREAM FORMS_START + 385 // Todo +#define SPECIES_ALCREMIE_STAR_SALTED_CREAM FORMS_START + 386 // Todo +#define SPECIES_ALCREMIE_STAR_RUBY_SWIRL FORMS_START + 387 // Todo +#define SPECIES_ALCREMIE_STAR_CARAMEL_SWIRL FORMS_START + 388 // Todo +#define SPECIES_ALCREMIE_STAR_RAINBOW_SWIRL FORMS_START + 389 // Todo +#define SPECIES_ALCREMIE_CLOVER SPECIES_ALCREMIE_CLOVER_VANILLA_CREAM +#define SPECIES_ALCREMIE_CLOVER_VANILLA_CREAM FORMS_START + 390 // Todo +#define SPECIES_ALCREMIE_CLOVER_RUBY_CREAM FORMS_START + 391 // Todo +#define SPECIES_ALCREMIE_CLOVER_MATCHA_CREAM FORMS_START + 392 // Todo +#define SPECIES_ALCREMIE_CLOVER_MINT_CREAM FORMS_START + 393 // Todo +#define SPECIES_ALCREMIE_CLOVER_LEMON_CREAM FORMS_START + 394 // Todo +#define SPECIES_ALCREMIE_CLOVER_SALTED_CREAM FORMS_START + 395 // Todo +#define SPECIES_ALCREMIE_CLOVER_RUBY_SWIRL FORMS_START + 396 // Todo +#define SPECIES_ALCREMIE_CLOVER_CARAMEL_SWIRL FORMS_START + 397 // Todo +#define SPECIES_ALCREMIE_CLOVER_RAINBOW_SWIRL FORMS_START + 398 // Todo +#define SPECIES_ALCREMIE_FLOWER SPECIES_ALCREMIE_FLOWER_VANILLA_CREAM +#define SPECIES_ALCREMIE_FLOWER_VANILLA_CREAM FORMS_START + 399 // Todo +#define SPECIES_ALCREMIE_FLOWER_RUBY_CREAM FORMS_START + 400 // Todo +#define SPECIES_ALCREMIE_FLOWER_MATCHA_CREAM FORMS_START + 401 // Todo +#define SPECIES_ALCREMIE_FLOWER_MINT_CREAM FORMS_START + 402 // Todo +#define SPECIES_ALCREMIE_FLOWER_LEMON_CREAM FORMS_START + 403 // Todo +#define SPECIES_ALCREMIE_FLOWER_SALTED_CREAM FORMS_START + 404 // Todo +#define SPECIES_ALCREMIE_FLOWER_RUBY_SWIRL FORMS_START + 405 // Todo +#define SPECIES_ALCREMIE_FLOWER_CARAMEL_SWIRL FORMS_START + 406 // Todo +#define SPECIES_ALCREMIE_FLOWER_RAINBOW_SWIRL FORMS_START + 407 // Todo +#define SPECIES_ALCREMIE_RIBBON SPECIES_ALCREMIE_RIBBON_VANILLA_CREAM +#define SPECIES_ALCREMIE_RIBBON_VANILLA_CREAM FORMS_START + 408 // Todo +#define SPECIES_ALCREMIE_RIBBON_RUBY_CREAM FORMS_START + 409 // Todo +#define SPECIES_ALCREMIE_RIBBON_MATCHA_CREAM FORMS_START + 410 // Todo +#define SPECIES_ALCREMIE_RIBBON_MINT_CREAM FORMS_START + 411 // Todo +#define SPECIES_ALCREMIE_RIBBON_LEMON_CREAM FORMS_START + 412 // Todo +#define SPECIES_ALCREMIE_RIBBON_SALTED_CREAM FORMS_START + 413 // Todo +#define SPECIES_ALCREMIE_RIBBON_RUBY_SWIRL FORMS_START + 414 // Todo +#define SPECIES_ALCREMIE_RIBBON_CARAMEL_SWIRL FORMS_START + 415 // Todo +#define SPECIES_ALCREMIE_RIBBON_RAINBOW_SWIRL FORMS_START + 416 // Todo +*/ + #define FORMS_START SPECIES_ENAMORUS #define SPECIES_EGG SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX + 1 diff --git a/include/graphics.h b/include/graphics.h index f33955898e..f2ff391a95 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -478,7 +478,7 @@ extern const u32 gMonFrontPic_Armaldo[]; extern const u32 gMonFrontPic_Feebas[]; extern const u32 gMonFrontPic_Milotic[]; extern const u32 gMonFrontPic_MiloticF[]; -extern const u32 gMonFrontPic_Castform[]; +extern const u32 gMonFrontPic_CastformNormal[]; extern const u32 gMonFrontPic_Kecleon[]; extern const u32 gMonFrontPic_Shuppet[]; extern const u32 gMonFrontPic_Banette[]; @@ -514,7 +514,7 @@ extern const u32 gMonFrontPic_Kyogre[]; extern const u32 gMonFrontPic_Groudon[]; extern const u32 gMonFrontPic_Rayquaza[]; extern const u32 gMonFrontPic_Jirachi[]; -extern const u32 gMonFrontPic_Deoxys[]; +extern const u32 gMonFrontPic_DeoxysNormal[]; #if P_GEN_4_POKEMON == TRUE extern const u32 gMonFrontPic_Turtwig[]; extern const u32 gMonFrontPic_Grotle[]; @@ -552,8 +552,8 @@ extern const u32 gMonFrontPic_Cranidos[]; extern const u32 gMonFrontPic_Rampardos[]; extern const u32 gMonFrontPic_Shieldon[]; extern const u32 gMonFrontPic_Bastiodon[]; -extern const u32 gMonFrontPic_Burmy[]; -extern const u32 gMonFrontPic_Wormadam[]; +extern const u32 gMonFrontPic_BurmyPlantCloak[]; +extern const u32 gMonFrontPic_WormadamPlantCloak[]; extern const u32 gMonFrontPic_Mothim[]; extern const u32 gMonFrontPic_Combee[]; extern const u32 gMonFrontPic_Vespiquen[]; @@ -562,9 +562,9 @@ extern const u32 gMonFrontPic_PachirisuF[]; extern const u32 gMonFrontPic_Buizel[]; extern const u32 gMonFrontPic_Floatzel[]; extern const u32 gMonFrontPic_Cherubi[]; -extern const u32 gMonFrontPic_Cherrim[]; -extern const u32 gMonFrontPic_Shellos[]; -extern const u32 gMonFrontPic_Gastrodon[]; +extern const u32 gMonFrontPic_CherrimOvercast[]; +extern const u32 gMonFrontPic_ShellosWestSea[]; +extern const u32 gMonFrontPic_GastrodonWestSea[]; extern const u32 gMonFrontPic_Ambipom[]; extern const u32 gMonFrontPic_AmbipomF[]; extern const u32 gMonFrontPic_Drifloon[]; @@ -642,12 +642,12 @@ extern const u32 gMonFrontPic_Dialga[]; extern const u32 gMonFrontPic_Palkia[]; extern const u32 gMonFrontPic_Heatran[]; extern const u32 gMonFrontPic_Regigigas[]; -extern const u32 gMonFrontPic_Giratina[]; +extern const u32 gMonFrontPic_GiratinaAltered[]; extern const u32 gMonFrontPic_Cresselia[]; extern const u32 gMonFrontPic_Phione[]; extern const u32 gMonFrontPic_Manaphy[]; extern const u32 gMonFrontPic_Darkrai[]; -extern const u32 gMonFrontPic_Shaymin[]; +extern const u32 gMonFrontPic_ShayminLand[]; extern const u32 gMonFrontPic_Arceus[]; #endif #if P_GEN_5_POKEMON == TRUE @@ -708,12 +708,12 @@ extern const u32 gMonFrontPic_Cottonee[]; extern const u32 gMonFrontPic_Whimsicott[]; extern const u32 gMonFrontPic_Petilil[]; extern const u32 gMonFrontPic_Lilligant[]; -extern const u32 gMonFrontPic_Basculin[]; +extern const u32 gMonFrontPic_BasculinRedStriped[]; extern const u32 gMonFrontPic_Sandile[]; extern const u32 gMonFrontPic_Krokorok[]; extern const u32 gMonFrontPic_Krookodile[]; extern const u32 gMonFrontPic_Darumaka[]; -extern const u32 gMonFrontPic_Darmanitan[]; +extern const u32 gMonFrontPic_DarmanitanStandardMode[]; extern const u32 gMonFrontPic_Maractus[]; extern const u32 gMonFrontPic_Dwebble[]; extern const u32 gMonFrontPic_Crustle[]; @@ -744,7 +744,7 @@ extern const u32 gMonFrontPic_Vanillite[]; extern const u32 gMonFrontPic_Vanillish[]; extern const u32 gMonFrontPic_Vanilluxe[]; extern const u32 gMonFrontPic_Deerling[]; -extern const u32 gMonFrontPic_Sawsbuck[]; +extern const u32 gMonFrontPic_SawsbuckSpring[]; extern const u32 gMonFrontPic_Emolga[]; extern const u32 gMonFrontPic_Karrablast[]; extern const u32 gMonFrontPic_Escavalier[]; @@ -801,14 +801,14 @@ extern const u32 gMonFrontPic_Volcarona[]; extern const u32 gMonFrontPic_Cobalion[]; extern const u32 gMonFrontPic_Terrakion[]; extern const u32 gMonFrontPic_Virizion[]; -extern const u32 gMonFrontPic_Tornadus[]; -extern const u32 gMonFrontPic_Thundurus[]; +extern const u32 gMonFrontPic_TornadusIncarnate[]; +extern const u32 gMonFrontPic_ThundurusIncarnate[]; extern const u32 gMonFrontPic_Reshiram[]; extern const u32 gMonFrontPic_Zekrom[]; -extern const u32 gMonFrontPic_Landorus[]; +extern const u32 gMonFrontPic_LandorusIncarnate[]; extern const u32 gMonFrontPic_Kyurem[]; -extern const u32 gMonFrontPic_Keldeo[]; -extern const u32 gMonFrontPic_Meloetta[]; +extern const u32 gMonFrontPic_KeldeoOrdinary[]; +extern const u32 gMonFrontPic_MeloettaAria[]; extern const u32 gMonFrontPic_Genesect[]; #endif #if P_GEN_6_POKEMON == TRUE @@ -828,7 +828,7 @@ extern const u32 gMonFrontPic_Fletchinder[]; extern const u32 gMonFrontPic_Talonflame[]; extern const u32 gMonFrontPic_Scatterbug[]; extern const u32 gMonFrontPic_Spewpa[]; -extern const u32 gMonFrontPic_Vivillon[]; +extern const u32 gMonFrontPic_VivillonIcySnow[]; extern const u32 gMonFrontPic_Litleo[]; extern const u32 gMonFrontPic_Pyroar[]; extern const u32 gMonFrontPic_PyroarF[]; @@ -839,12 +839,12 @@ extern const u32 gMonFrontPic_Skiddo[]; extern const u32 gMonFrontPic_Gogoat[]; extern const u32 gMonFrontPic_Pancham[]; extern const u32 gMonFrontPic_Pangoro[]; -extern const u32 gMonFrontPic_Furfrou[]; +extern const u32 gMonFrontPic_FurfrouNatural[]; extern const u32 gMonFrontPic_Espurr[]; -extern const u32 gMonFrontPic_Meowstic[]; +extern const u32 gMonFrontPic_MeowsticMale[]; extern const u32 gMonFrontPic_Honedge[]; extern const u32 gMonFrontPic_Doublade[]; -extern const u32 gMonFrontPic_Aegislash[]; +extern const u32 gMonFrontPic_AegislashShield[]; extern const u32 gMonFrontPic_Spritzee[]; extern const u32 gMonFrontPic_Aromatisse[]; extern const u32 gMonFrontPic_Swirlix[]; @@ -873,17 +873,17 @@ extern const u32 gMonFrontPic_Goodra[]; extern const u32 gMonFrontPic_Klefki[]; extern const u32 gMonFrontPic_Phantump[]; extern const u32 gMonFrontPic_Trevenant[]; -extern const u32 gMonFrontPic_Pumpkaboo[]; -extern const u32 gMonFrontPic_Gourgeist[]; +extern const u32 gMonFrontPic_PumpkabooAverage[]; +extern const u32 gMonFrontPic_GourgeistAverage[]; extern const u32 gMonFrontPic_Bergmite[]; extern const u32 gMonFrontPic_Avalugg[]; extern const u32 gMonFrontPic_Noibat[]; extern const u32 gMonFrontPic_Noivern[]; -extern const u32 gMonFrontPic_Xerneas[]; +extern const u32 gMonFrontPic_XerneasNeutral[]; extern const u32 gMonFrontPic_Yveltal[]; -extern const u32 gMonFrontPic_Zygarde[]; +extern const u32 gMonFrontPic_Zygarde50[]; extern const u32 gMonFrontPic_Diancie[]; -extern const u32 gMonFrontPic_Hoopa[]; +extern const u32 gMonFrontPic_HoopaConfined[]; extern const u32 gMonFrontPic_Volcanion[]; #endif #if P_GEN_7_POKEMON == TRUE @@ -906,12 +906,12 @@ extern const u32 gMonFrontPic_Charjabug[]; extern const u32 gMonFrontPic_Vikavolt[]; extern const u32 gMonFrontPic_Crabrawler[]; extern const u32 gMonFrontPic_Crabominable[]; -extern const u32 gMonFrontPic_Oricorio[]; +extern const u32 gMonFrontPic_OricorioBaile[]; extern const u32 gMonFrontPic_Cutiefly[]; extern const u32 gMonFrontPic_Ribombee[]; extern const u32 gMonFrontPic_Rockruff[]; -extern const u32 gMonFrontPic_Lycanroc[]; -extern const u32 gMonFrontPic_Wishiwashi[]; +extern const u32 gMonFrontPic_LycanrocMidday[]; +extern const u32 gMonFrontPic_WishiwashiSolo[]; extern const u32 gMonFrontPic_Mareanie[]; extern const u32 gMonFrontPic_Toxapex[]; extern const u32 gMonFrontPic_Mudbray[]; @@ -939,11 +939,11 @@ extern const u32 gMonFrontPic_Palossand[]; extern const u32 gMonFrontPic_Pyukumuku[]; extern const u32 gMonFrontPic_TypeNull[]; extern const u32 gMonFrontPic_Silvally[]; -extern const u32 gMonFrontPic_Minior[]; +extern const u32 gMonFrontPic_MiniorMeteor[]; extern const u32 gMonFrontPic_Komala[]; extern const u32 gMonFrontPic_Turtonator[]; extern const u32 gMonFrontPic_Togedemaru[]; -extern const u32 gMonFrontPic_Mimikyu[]; +extern const u32 gMonFrontPic_MimikyuDisguised[]; extern const u32 gMonFrontPic_Bruxish[]; extern const u32 gMonFrontPic_Drampa[]; extern const u32 gMonFrontPic_Dhelmise[]; @@ -1016,7 +1016,7 @@ extern const u32 gMonFrontPic_Cramorant[]; extern const u32 gMonFrontPic_Arrokuda[]; extern const u32 gMonFrontPic_Barraskewda[]; extern const u32 gMonFrontPic_Toxel[]; -extern const u32 gMonFrontPic_Toxtricity[]; +extern const u32 gMonFrontPic_ToxtricityAmped[]; extern const u32 gMonFrontPic_Sizzlipede[]; extern const u32 gMonFrontPic_Centiskorch[]; extern const u32 gMonFrontPic_Clobbopus[]; @@ -1042,9 +1042,9 @@ extern const u32 gMonFrontPic_Pincurchin[]; extern const u32 gMonFrontPic_Snom[]; extern const u32 gMonFrontPic_Frosmoth[]; extern const u32 gMonFrontPic_Stonjourner[]; -extern const u32 gMonFrontPic_Eiscue[]; -extern const u32 gMonFrontPic_Indeedee[]; -extern const u32 gMonFrontPic_Morpeko[]; +extern const u32 gMonFrontPic_EiscueFace[]; +extern const u32 gMonFrontPic_IndeedeeMale[]; +extern const u32 gMonFrontPic_MorpekoFullBelly[]; extern const u32 gMonFrontPic_Cufant[]; extern const u32 gMonFrontPic_Copperajah[]; extern const u32 gMonFrontPic_Dracozolt[]; @@ -1055,11 +1055,11 @@ extern const u32 gMonFrontPic_Duraludon[]; extern const u32 gMonFrontPic_Dreepy[]; extern const u32 gMonFrontPic_Drakloak[]; extern const u32 gMonFrontPic_Dragapult[]; -extern const u32 gMonFrontPic_Zacian[]; -extern const u32 gMonFrontPic_Zamazenta[]; +extern const u32 gMonFrontPic_ZacianHeroOfManyBattles[]; +extern const u32 gMonFrontPic_ZamazentaHeroOfManyBattles[]; extern const u32 gMonFrontPic_Eternatus[]; extern const u32 gMonFrontPic_Kubfu[]; -extern const u32 gMonFrontPic_Urshifu[]; +extern const u32 gMonFrontPic_UrshifuSingleStrikeStyle[]; extern const u32 gMonFrontPic_Zarude[]; extern const u32 gMonFrontPic_Regieleki[]; extern const u32 gMonFrontPic_Regidrago[]; @@ -1069,10 +1069,10 @@ extern const u32 gMonFrontPic_Calyrex[]; extern const u32 gMonFrontPic_Wyrdeer[]; extern const u32 gMonFrontPic_Kleavor[]; extern const u32 gMonFrontPic_Ursaluna[]; -extern const u32 gMonFrontPic_Basculegion[]; +extern const u32 gMonFrontPic_BasculegionMale[]; extern const u32 gMonFrontPic_Sneasler[]; extern const u32 gMonFrontPic_Overqwil[]; -extern const u32 gMonFrontPic_Enamorus[]; +extern const u32 gMonFrontPic_EnamorusIncarnate[]; #endif extern const u32 gMonFrontPic_VenusaurMega[]; extern const u32 gMonFrontPic_CharizardMegaX[]; @@ -1165,7 +1165,7 @@ extern const u32 gMonFrontPic_ZigzagoonGalarian[]; extern const u32 gMonFrontPic_LinooneGalarian[]; #if P_GEN_5_POKEMON == TRUE extern const u32 gMonFrontPic_DarumakaGalarian[]; -extern const u32 gMonFrontPic_DarmanitanGalarian[]; +extern const u32 gMonFrontPic_DarmanitanGalarianStandardMode[]; extern const u32 gMonFrontPic_YamaskGalarian[]; extern const u32 gMonFrontPic_StunfiskGalarian[]; #endif @@ -1262,7 +1262,7 @@ extern const u32 gMonFrontPic_ShayminSky[]; extern const u32 gMonFrontPic_BasculinBlueStriped[]; extern const u32 gMonFrontPic_BasculinWhiteStriped[]; extern const u32 gMonFrontPic_DarmanitanZenMode[]; -extern const u32 gMonFrontPic_DarmanitanZenModeGalarian[]; +extern const u32 gMonFrontPic_DarmanitanGalarianZenMode[]; extern const u32 gMonFrontPic_SawsbuckSummer[]; extern const u32 gMonFrontPic_SawsbuckAutumn[]; extern const u32 gMonFrontPic_SawsbuckWinter[]; @@ -1770,7 +1770,7 @@ extern const u32 gMonBackPic_Armaldo[]; extern const u32 gMonBackPic_Feebas[]; extern const u32 gMonBackPic_Milotic[]; extern const u32 gMonBackPic_MiloticF[]; -extern const u32 gMonBackPic_Castform[]; +extern const u32 gMonBackPic_CastformNormal[]; extern const u32 gMonBackPic_Kecleon[]; extern const u32 gMonBackPic_Shuppet[]; extern const u32 gMonBackPic_Banette[]; @@ -1806,7 +1806,7 @@ extern const u32 gMonBackPic_Kyogre[]; extern const u32 gMonBackPic_Groudon[]; extern const u32 gMonBackPic_Rayquaza[]; extern const u32 gMonBackPic_Jirachi[]; -extern const u32 gMonBackPic_Deoxys[]; +extern const u32 gMonBackPic_DeoxysNormal[]; #if P_GEN_4_POKEMON == TRUE extern const u32 gMonBackPic_Turtwig[]; extern const u32 gMonBackPic_Grotle[]; @@ -1842,8 +1842,8 @@ extern const u32 gMonBackPic_Cranidos[]; extern const u32 gMonBackPic_Rampardos[]; extern const u32 gMonBackPic_Shieldon[]; extern const u32 gMonBackPic_Bastiodon[]; -extern const u32 gMonBackPic_Burmy[]; -extern const u32 gMonBackPic_Wormadam[]; +extern const u32 gMonBackPic_BurmyPlantCloak[]; +extern const u32 gMonBackPic_WormadamPlantCloak[]; extern const u32 gMonBackPic_Mothim[]; extern const u32 gMonBackPic_Combee[]; extern const u32 gMonBackPic_Vespiquen[]; @@ -1853,9 +1853,9 @@ extern const u32 gMonBackPic_BuizelF[]; extern const u32 gMonBackPic_Floatzel[]; extern const u32 gMonBackPic_FloatzelF[]; extern const u32 gMonBackPic_Cherubi[]; -extern const u32 gMonBackPic_Cherrim[]; -extern const u32 gMonBackPic_Shellos[]; -extern const u32 gMonBackPic_Gastrodon[]; +extern const u32 gMonBackPic_CherrimOvercast[]; +extern const u32 gMonBackPic_ShellosWestSea[]; +extern const u32 gMonBackPic_GastrodonWestSea[]; extern const u32 gMonBackPic_Ambipom[]; extern const u32 gMonBackPic_AmbipomF[]; extern const u32 gMonBackPic_Drifloon[]; @@ -1929,12 +1929,12 @@ extern const u32 gMonBackPic_Dialga[]; extern const u32 gMonBackPic_Palkia[]; extern const u32 gMonBackPic_Heatran[]; extern const u32 gMonBackPic_Regigigas[]; -extern const u32 gMonBackPic_Giratina[]; +extern const u32 gMonBackPic_GiratinaAltered[]; extern const u32 gMonBackPic_Cresselia[]; extern const u32 gMonBackPic_Phione[]; extern const u32 gMonBackPic_Manaphy[]; extern const u32 gMonBackPic_Darkrai[]; -extern const u32 gMonBackPic_Shaymin[]; +extern const u32 gMonBackPic_ShayminLand[]; extern const u32 gMonBackPic_Arceus[]; #endif #if P_GEN_5_POKEMON == TRUE @@ -1995,12 +1995,12 @@ extern const u32 gMonBackPic_Cottonee[]; extern const u32 gMonBackPic_Whimsicott[]; extern const u32 gMonBackPic_Petilil[]; extern const u32 gMonBackPic_Lilligant[]; -extern const u32 gMonBackPic_Basculin[]; +extern const u32 gMonBackPic_BasculinRedStriped[]; extern const u32 gMonBackPic_Sandile[]; extern const u32 gMonBackPic_Krokorok[]; extern const u32 gMonBackPic_Krookodile[]; extern const u32 gMonBackPic_Darumaka[]; -extern const u32 gMonBackPic_Darmanitan[]; +extern const u32 gMonBackPic_DarmanitanStandardMode[]; extern const u32 gMonBackPic_Maractus[]; extern const u32 gMonBackPic_Dwebble[]; extern const u32 gMonBackPic_Crustle[]; @@ -2031,7 +2031,7 @@ extern const u32 gMonBackPic_Vanillite[]; extern const u32 gMonBackPic_Vanillish[]; extern const u32 gMonBackPic_Vanilluxe[]; extern const u32 gMonBackPic_Deerling[]; -extern const u32 gMonBackPic_Sawsbuck[]; +extern const u32 gMonBackPic_SawsbuckSpring[]; extern const u32 gMonBackPic_Emolga[]; extern const u32 gMonBackPic_Karrablast[]; extern const u32 gMonBackPic_Escavalier[]; @@ -2088,14 +2088,14 @@ extern const u32 gMonBackPic_Volcarona[]; extern const u32 gMonBackPic_Cobalion[]; extern const u32 gMonBackPic_Terrakion[]; extern const u32 gMonBackPic_Virizion[]; -extern const u32 gMonBackPic_Tornadus[]; -extern const u32 gMonBackPic_Thundurus[]; +extern const u32 gMonBackPic_TornadusIncarnate[]; +extern const u32 gMonBackPic_ThundurusIncarnate[]; extern const u32 gMonBackPic_Reshiram[]; extern const u32 gMonBackPic_Zekrom[]; -extern const u32 gMonBackPic_Landorus[]; +extern const u32 gMonBackPic_LandorusIncarnate[]; extern const u32 gMonBackPic_Kyurem[]; -extern const u32 gMonBackPic_Keldeo[]; -extern const u32 gMonBackPic_Meloetta[]; +extern const u32 gMonBackPic_KeldeoOrdinary[]; +extern const u32 gMonBackPic_MeloettaAria[]; extern const u32 gMonBackPic_Genesect[]; #endif #if P_GEN_6_POKEMON == TRUE @@ -2115,7 +2115,7 @@ extern const u32 gMonBackPic_Fletchinder[]; extern const u32 gMonBackPic_Talonflame[]; extern const u32 gMonBackPic_Scatterbug[]; extern const u32 gMonBackPic_Spewpa[]; -extern const u32 gMonBackPic_Vivillon[]; +extern const u32 gMonBackPic_VivillonIcySnow[]; extern const u32 gMonBackPic_Litleo[]; extern const u32 gMonBackPic_Pyroar[]; extern const u32 gMonBackPic_PyroarF[]; @@ -2126,12 +2126,12 @@ extern const u32 gMonBackPic_Skiddo[]; extern const u32 gMonBackPic_Gogoat[]; extern const u32 gMonBackPic_Pancham[]; extern const u32 gMonBackPic_Pangoro[]; -extern const u32 gMonBackPic_Furfrou[]; +extern const u32 gMonBackPic_FurfrouNatural[]; extern const u32 gMonBackPic_Espurr[]; -extern const u32 gMonBackPic_Meowstic[]; +extern const u32 gMonBackPic_MeowsticMale[]; extern const u32 gMonBackPic_Honedge[]; extern const u32 gMonBackPic_Doublade[]; -extern const u32 gMonBackPic_Aegislash[]; +extern const u32 gMonBackPic_AegislashShield[]; extern const u32 gMonBackPic_Spritzee[]; extern const u32 gMonBackPic_Aromatisse[]; extern const u32 gMonBackPic_Swirlix[]; @@ -2160,17 +2160,17 @@ extern const u32 gMonBackPic_Goodra[]; extern const u32 gMonBackPic_Klefki[]; extern const u32 gMonBackPic_Phantump[]; extern const u32 gMonBackPic_Trevenant[]; -extern const u32 gMonBackPic_Pumpkaboo[]; -extern const u32 gMonBackPic_Gourgeist[]; +extern const u32 gMonBackPic_PumpkabooAverage[]; +extern const u32 gMonBackPic_GourgeistAverage[]; extern const u32 gMonBackPic_Bergmite[]; extern const u32 gMonBackPic_Avalugg[]; extern const u32 gMonBackPic_Noibat[]; extern const u32 gMonBackPic_Noivern[]; -extern const u32 gMonBackPic_Xerneas[]; +extern const u32 gMonBackPic_XerneasNeutral[]; extern const u32 gMonBackPic_Yveltal[]; -extern const u32 gMonBackPic_Zygarde[]; +extern const u32 gMonBackPic_Zygarde50[]; extern const u32 gMonBackPic_Diancie[]; -extern const u32 gMonBackPic_Hoopa[]; +extern const u32 gMonBackPic_HoopaConfined[]; extern const u32 gMonBackPic_Volcanion[]; #endif #if P_GEN_7_POKEMON == TRUE @@ -2193,12 +2193,12 @@ extern const u32 gMonBackPic_Charjabug[]; extern const u32 gMonBackPic_Vikavolt[]; extern const u32 gMonBackPic_Crabrawler[]; extern const u32 gMonBackPic_Crabominable[]; -extern const u32 gMonBackPic_Oricorio[]; +extern const u32 gMonBackPic_OricorioBaile[]; extern const u32 gMonBackPic_Cutiefly[]; extern const u32 gMonBackPic_Ribombee[]; extern const u32 gMonBackPic_Rockruff[]; -extern const u32 gMonBackPic_Lycanroc[]; -extern const u32 gMonBackPic_Wishiwashi[]; +extern const u32 gMonBackPic_LycanrocMidday[]; +extern const u32 gMonBackPic_WishiwashiSolo[]; extern const u32 gMonBackPic_Mareanie[]; extern const u32 gMonBackPic_Toxapex[]; extern const u32 gMonBackPic_Mudbray[]; @@ -2226,11 +2226,11 @@ extern const u32 gMonBackPic_Palossand[]; extern const u32 gMonBackPic_Pyukumuku[]; extern const u32 gMonBackPic_TypeNull[]; extern const u32 gMonBackPic_Silvally[]; -extern const u32 gMonBackPic_Minior[]; +extern const u32 gMonBackPic_MiniorMeteor[]; extern const u32 gMonBackPic_Komala[]; extern const u32 gMonBackPic_Turtonator[]; extern const u32 gMonBackPic_Togedemaru[]; -extern const u32 gMonBackPic_Mimikyu[]; +extern const u32 gMonBackPic_MimikyuDisguised[]; extern const u32 gMonBackPic_Bruxish[]; extern const u32 gMonBackPic_Drampa[]; extern const u32 gMonBackPic_Dhelmise[]; @@ -2303,7 +2303,7 @@ extern const u32 gMonBackPic_Cramorant[]; extern const u32 gMonBackPic_Arrokuda[]; extern const u32 gMonBackPic_Barraskewda[]; extern const u32 gMonBackPic_Toxel[]; -extern const u32 gMonBackPic_Toxtricity[]; +extern const u32 gMonBackPic_ToxtricityAmped[]; extern const u32 gMonBackPic_Sizzlipede[]; extern const u32 gMonBackPic_Centiskorch[]; extern const u32 gMonBackPic_Clobbopus[]; @@ -2329,9 +2329,9 @@ extern const u32 gMonBackPic_Pincurchin[]; extern const u32 gMonBackPic_Snom[]; extern const u32 gMonBackPic_Frosmoth[]; extern const u32 gMonBackPic_Stonjourner[]; -extern const u32 gMonBackPic_Eiscue[]; -extern const u32 gMonBackPic_Indeedee[]; -extern const u32 gMonBackPic_Morpeko[]; +extern const u32 gMonBackPic_EiscueIceFace[]; +extern const u32 gMonBackPic_IndeedeeMale[]; +extern const u32 gMonBackPic_MorpekoFullBelly[]; extern const u32 gMonBackPic_Cufant[]; extern const u32 gMonBackPic_Copperajah[]; extern const u32 gMonBackPic_Dracozolt[]; @@ -2342,11 +2342,11 @@ extern const u32 gMonBackPic_Duraludon[]; extern const u32 gMonBackPic_Dreepy[]; extern const u32 gMonBackPic_Drakloak[]; extern const u32 gMonBackPic_Dragapult[]; -extern const u32 gMonBackPic_Zacian[]; -extern const u32 gMonBackPic_Zamazenta[]; +extern const u32 gMonBackPic_ZacianHeroOfManyBattles[]; +extern const u32 gMonBackPic_ZamazentaHeroOfManyBattles[]; extern const u32 gMonBackPic_Eternatus[]; extern const u32 gMonBackPic_Kubfu[]; -extern const u32 gMonBackPic_Urshifu[]; +extern const u32 gMonBackPic_UrshifuSingleStrikeStyle[]; extern const u32 gMonBackPic_Zarude[]; extern const u32 gMonBackPic_Regieleki[]; extern const u32 gMonBackPic_Regidrago[]; @@ -2356,10 +2356,10 @@ extern const u32 gMonBackPic_Calyrex[]; extern const u32 gMonBackPic_Wyrdeer[]; extern const u32 gMonBackPic_Kleavor[]; extern const u32 gMonBackPic_Ursaluna[]; -extern const u32 gMonBackPic_Basculegion[]; +extern const u32 gMonBackPic_BasculegionMale[]; extern const u32 gMonBackPic_Sneasler[]; extern const u32 gMonBackPic_Overqwil[]; -extern const u32 gMonBackPic_Enamorus[]; +extern const u32 gMonBackPic_EnamorusIncarnate[]; #endif extern const u32 gMonBackPic_VenusaurMega[]; extern const u32 gMonBackPic_CharizardMegaX[]; @@ -2452,7 +2452,7 @@ extern const u32 gMonBackPic_ZigzagoonGalarian[]; extern const u32 gMonBackPic_LinooneGalarian[]; #if P_GEN_5_POKEMON == TRUE extern const u32 gMonBackPic_DarumakaGalarian[]; -extern const u32 gMonBackPic_DarmanitanGalarian[]; +extern const u32 gMonBackPic_DarmanitanGalarianStandardMode[]; extern const u32 gMonBackPic_YamaskGalarian[]; extern const u32 gMonBackPic_StunfiskGalarian[]; #endif @@ -2549,7 +2549,7 @@ extern const u32 gMonBackPic_ShayminSky[]; extern const u32 gMonBackPic_BasculinBlueStriped[]; extern const u32 gMonBackPic_BasculinWhiteStriped[]; extern const u32 gMonBackPic_DarmanitanZenMode[]; -extern const u32 gMonBackPic_DarmanitanZenModeGalarian[]; +extern const u32 gMonBackPic_DarmanitanGalarianZenMode[]; extern const u32 gMonBackPic_SawsbuckSummer[]; extern const u32 gMonBackPic_SawsbuckAutumn[]; extern const u32 gMonBackPic_SawsbuckWinter[]; @@ -2674,7 +2674,7 @@ extern const u32 gMonBackPic_GrimmsnarlGigantamax[]; extern const u32 gMonBackPic_AlcremieGigantamax[]; extern const u32 gMonBackPic_CopperajahGigantamax[]; extern const u32 gMonBackPic_DuraludonGigantamax[]; -extern const u32 gMonBackPic_UrshifuGigantamax[]; +extern const u32 gMonBackPic_UrshifuSingleStrikeGigantamax[]; extern const u32 gMonBackPic_UrshifuRapidStrikeGigantamax[]; #endif @@ -3030,7 +3030,7 @@ extern const u32 gMonPalette_Anorith[]; extern const u32 gMonPalette_Armaldo[]; extern const u32 gMonPalette_Feebas[]; extern const u32 gMonPalette_Milotic[]; -extern const u32 gMonPalette_Castform[]; +extern const u32 gMonPalette_CastformNormal[]; extern const u32 gMonPalette_Kecleon[]; extern const u32 gMonPalette_Shuppet[]; extern const u32 gMonPalette_Banette[]; @@ -3065,7 +3065,7 @@ extern const u32 gMonPalette_Kyogre[]; extern const u32 gMonPalette_Groudon[]; extern const u32 gMonPalette_Rayquaza[]; extern const u32 gMonPalette_Jirachi[]; -extern const u32 gMonPalette_Deoxys[]; +extern const u32 gMonPalette_DeoxysNormal[]; #if P_GEN_4_POKEMON == TRUE extern const u32 gMonPalette_Turtwig[]; extern const u32 gMonPalette_Grotle[]; @@ -3092,8 +3092,8 @@ extern const u32 gMonPalette_Cranidos[]; extern const u32 gMonPalette_Rampardos[]; extern const u32 gMonPalette_Shieldon[]; extern const u32 gMonPalette_Bastiodon[]; -extern const u32 gMonPalette_Burmy[]; -extern const u32 gMonPalette_Wormadam[]; +extern const u32 gMonPalette_BurmyPlantCloak[]; +extern const u32 gMonPalette_WormadamPlantCloak[]; extern const u32 gMonPalette_Mothim[]; extern const u32 gMonPalette_Combee[]; extern const u32 gMonPalette_CombeeF[]; @@ -3102,9 +3102,9 @@ extern const u32 gMonPalette_Pachirisu[]; extern const u32 gMonPalette_Buizel[]; extern const u32 gMonPalette_Floatzel[]; extern const u32 gMonPalette_Cherubi[]; -extern const u32 gMonPalette_Cherrim[]; -extern const u32 gMonPalette_Shellos[]; -extern const u32 gMonPalette_Gastrodon[]; +extern const u32 gMonPalette_CherrimOvercast[]; +extern const u32 gMonPalette_ShellosWestSea[]; +extern const u32 gMonPalette_GastrodonWestSea[]; extern const u32 gMonPalette_Ambipom[]; extern const u32 gMonPalette_Drifloon[]; extern const u32 gMonPalette_Drifblim[]; @@ -3170,12 +3170,12 @@ extern const u32 gMonPalette_Dialga[]; extern const u32 gMonPalette_Palkia[]; extern const u32 gMonPalette_Heatran[]; extern const u32 gMonPalette_Regigigas[]; -extern const u32 gMonPalette_Giratina[]; +extern const u32 gMonPalette_GiratinaAltered[]; extern const u32 gMonPalette_Cresselia[]; extern const u32 gMonPalette_Phione[]; extern const u32 gMonPalette_Manaphy[]; extern const u32 gMonPalette_Darkrai[]; -extern const u32 gMonPalette_Shaymin[]; +extern const u32 gMonPalette_ShayminLand[]; extern const u32 gMonPalette_Arceus[]; #endif #if P_GEN_5_POKEMON == TRUE @@ -3236,12 +3236,12 @@ extern const u32 gMonPalette_Cottonee[]; extern const u32 gMonPalette_Whimsicott[]; extern const u32 gMonPalette_Petilil[]; extern const u32 gMonPalette_Lilligant[]; -extern const u32 gMonPalette_Basculin[]; +extern const u32 gMonPalette_BasculinRedStriped[]; extern const u32 gMonPalette_Sandile[]; extern const u32 gMonPalette_Krokorok[]; extern const u32 gMonPalette_Krookodile[]; extern const u32 gMonPalette_Darumaka[]; -extern const u32 gMonPalette_Darmanitan[]; +extern const u32 gMonPalette_DarmanitanStandardMode[]; extern const u32 gMonPalette_Maractus[]; extern const u32 gMonPalette_Dwebble[]; extern const u32 gMonPalette_Crustle[]; @@ -3271,8 +3271,8 @@ extern const u32 gMonPalette_Swanna[]; extern const u32 gMonPalette_Vanillite[]; extern const u32 gMonPalette_Vanillish[]; extern const u32 gMonPalette_Vanilluxe[]; -extern const u32 gMonPalette_Deerling[]; -extern const u32 gMonPalette_Sawsbuck[]; +extern const u32 gMonPalette_DeerlingSpring[]; +extern const u32 gMonPalette_SawsbuckSpring[]; extern const u32 gMonPalette_Emolga[]; extern const u32 gMonPalette_Karrablast[]; extern const u32 gMonPalette_Escavalier[]; @@ -3329,14 +3329,14 @@ extern const u32 gMonPalette_Volcarona[]; extern const u32 gMonPalette_Cobalion[]; extern const u32 gMonPalette_Terrakion[]; extern const u32 gMonPalette_Virizion[]; -extern const u32 gMonPalette_Tornadus[]; -extern const u32 gMonPalette_Thundurus[]; +extern const u32 gMonPalette_TornadusIncarnate[]; +extern const u32 gMonPalette_ThundurusIncarnate[]; extern const u32 gMonPalette_Reshiram[]; extern const u32 gMonPalette_Zekrom[]; -extern const u32 gMonPalette_Landorus[]; +extern const u32 gMonPalette_LandorusIncarnate[]; extern const u32 gMonPalette_Kyurem[]; -extern const u32 gMonPalette_Keldeo[]; -extern const u32 gMonPalette_Meloetta[]; +extern const u32 gMonPalette_KeldeoOrdinary[]; +extern const u32 gMonPalette_MeloettaAria[]; extern const u32 gMonPalette_Genesect[]; #endif #if P_GEN_6_POKEMON == TRUE @@ -3356,22 +3356,22 @@ extern const u32 gMonPalette_Fletchinder[]; extern const u32 gMonPalette_Talonflame[]; extern const u32 gMonPalette_Scatterbug[]; extern const u32 gMonPalette_Spewpa[]; -extern const u32 gMonPalette_Vivillon[]; +extern const u32 gMonPalette_VivillonIcySnow[]; extern const u32 gMonPalette_Litleo[]; extern const u32 gMonPalette_Pyroar[]; -extern const u32 gMonPalette_Flabebe[]; -extern const u32 gMonPalette_Floette[]; -extern const u32 gMonPalette_Florges[]; +extern const u32 gMonPalette_FlabebeRedFlower[]; +extern const u32 gMonPalette_FloetteRedFlower[]; +extern const u32 gMonPalette_FlorgesRedFlower[]; extern const u32 gMonPalette_Skiddo[]; extern const u32 gMonPalette_Gogoat[]; extern const u32 gMonPalette_Pancham[]; extern const u32 gMonPalette_Pangoro[]; -extern const u32 gMonPalette_Furfrou[]; +extern const u32 gMonPalette_FurfrouNatural[]; extern const u32 gMonPalette_Espurr[]; -extern const u32 gMonPalette_Meowstic[]; +extern const u32 gMonPalette_MeowsticMale[]; extern const u32 gMonPalette_Honedge[]; extern const u32 gMonPalette_Doublade[]; -extern const u32 gMonPalette_Aegislash[]; +extern const u32 gMonPalette_AegislashShield[]; extern const u32 gMonPalette_Spritzee[]; extern const u32 gMonPalette_Aromatisse[]; extern const u32 gMonPalette_Swirlix[]; @@ -3406,11 +3406,11 @@ extern const u32 gMonPalette_Bergmite[]; extern const u32 gMonPalette_Avalugg[]; extern const u32 gMonPalette_Noibat[]; extern const u32 gMonPalette_Noivern[]; -extern const u32 gMonPalette_Xerneas[]; +extern const u32 gMonPalette_XerneasNeutral[]; extern const u32 gMonPalette_Yveltal[]; -extern const u32 gMonPalette_Zygarde[]; +extern const u32 gMonPalette_Zygarde50[]; extern const u32 gMonPalette_Diancie[]; -extern const u32 gMonPalette_Hoopa[]; +extern const u32 gMonPalette_HoopaConfined[]; extern const u32 gMonPalette_Volcanion[]; #endif #if P_GEN_7_POKEMON == TRUE @@ -3433,12 +3433,12 @@ extern const u32 gMonPalette_Charjabug[]; extern const u32 gMonPalette_Vikavolt[]; extern const u32 gMonPalette_Crabrawler[]; extern const u32 gMonPalette_Crabominable[]; -extern const u32 gMonPalette_Oricorio[]; +extern const u32 gMonPalette_OricorioBaile[]; extern const u32 gMonPalette_Cutiefly[]; extern const u32 gMonPalette_Ribombee[]; extern const u32 gMonPalette_Rockruff[]; -extern const u32 gMonPalette_Lycanroc[]; -extern const u32 gMonPalette_Wishiwashi[]; +extern const u32 gMonPalette_LycanrocMidday[]; +extern const u32 gMonPalette_WishiwashiSolo[]; extern const u32 gMonPalette_Mareanie[]; extern const u32 gMonPalette_Toxapex[]; extern const u32 gMonPalette_Mudbray[]; @@ -3465,12 +3465,12 @@ extern const u32 gMonPalette_Sandygast[]; extern const u32 gMonPalette_Palossand[]; extern const u32 gMonPalette_Pyukumuku[]; extern const u32 gMonPalette_TypeNull[]; -extern const u32 gMonPalette_Silvally[]; -extern const u32 gMonPalette_Minior[]; +extern const u32 gMonPalette_SilvallyNormal[]; +extern const u32 gMonPalette_MiniorMeteor[]; extern const u32 gMonPalette_Komala[]; extern const u32 gMonPalette_Turtonator[]; extern const u32 gMonPalette_Togedemaru[]; -extern const u32 gMonPalette_Mimikyu[]; +extern const u32 gMonPalette_MimikyuDisguised[]; extern const u32 gMonPalette_Bruxish[]; extern const u32 gMonPalette_Drampa[]; extern const u32 gMonPalette_Dhelmise[]; @@ -3543,7 +3543,7 @@ extern const u32 gMonPalette_Cramorant[]; extern const u32 gMonPalette_Arrokuda[]; extern const u32 gMonPalette_Barraskewda[]; extern const u32 gMonPalette_Toxel[]; -extern const u32 gMonPalette_Toxtricity[]; +extern const u32 gMonPalette_ToxtricityAmped[]; extern const u32 gMonPalette_Sizzlipede[]; extern const u32 gMonPalette_Centiskorch[]; extern const u32 gMonPalette_Clobbopus[]; @@ -3569,9 +3569,9 @@ extern const u32 gMonPalette_Pincurchin[]; extern const u32 gMonPalette_Snom[]; extern const u32 gMonPalette_Frosmoth[]; extern const u32 gMonPalette_Stonjourner[]; -extern const u32 gMonPalette_Eiscue[]; -extern const u32 gMonPalette_Indeedee[]; -extern const u32 gMonPalette_Morpeko[]; +extern const u32 gMonPalette_EiscueIceFace[]; +extern const u32 gMonPalette_IndeedeeMale[]; +extern const u32 gMonPalette_MorpekoFullBelly[]; extern const u32 gMonPalette_Cufant[]; extern const u32 gMonPalette_Copperajah[]; extern const u32 gMonPalette_Dracozolt[]; @@ -3582,11 +3582,11 @@ extern const u32 gMonPalette_Duraludon[]; extern const u32 gMonPalette_Dreepy[]; extern const u32 gMonPalette_Drakloak[]; extern const u32 gMonPalette_Dragapult[]; -extern const u32 gMonPalette_Zacian[]; -extern const u32 gMonPalette_Zamazenta[]; +extern const u32 gMonPalette_ZacianHeroOfManyBattles[]; +extern const u32 gMonPalette_ZamazentaHeroOfManyBattles[]; extern const u32 gMonPalette_Eternatus[]; extern const u32 gMonPalette_Kubfu[]; -extern const u32 gMonPalette_Urshifu[]; +extern const u32 gMonPalette_UrshifuSingleStrikeStyle[]; extern const u32 gMonPalette_Zarude[]; extern const u32 gMonPalette_Regieleki[]; extern const u32 gMonPalette_Regidrago[]; @@ -3596,10 +3596,10 @@ extern const u32 gMonPalette_Calyrex[]; extern const u32 gMonPalette_Wyrdeer[]; extern const u32 gMonPalette_Kleavor[]; extern const u32 gMonPalette_Ursaluna[]; -extern const u32 gMonPalette_Basculegion[]; +extern const u32 gMonPalette_BasculegionMale[]; extern const u32 gMonPalette_Sneasler[]; extern const u32 gMonPalette_Overqwil[]; -extern const u32 gMonPalette_Enamorus[]; +extern const u32 gMonPalette_EnamorusIncarnate[]; #endif extern const u32 gMonPalette_VenusaurMega[]; extern const u32 gMonPalette_CharizardMegaX[]; @@ -3692,7 +3692,7 @@ extern const u32 gMonPalette_ZigzagoonGalarian[]; extern const u32 gMonPalette_LinooneGalarian[]; #if P_GEN_5_POKEMON == TRUE extern const u32 gMonPalette_DarumakaGalarian[]; -extern const u32 gMonPalette_DarmanitanGalarian[]; +extern const u32 gMonPalette_DarmanitanGalarianStandardMode[]; extern const u32 gMonPalette_YamaskGalarian[]; extern const u32 gMonPalette_StunfiskGalarian[]; #endif @@ -3778,7 +3778,7 @@ extern const u32 gMonPalette_ArceusFairy[]; extern const u32 gMonPalette_BasculinBlueStriped[]; extern const u32 gMonPalette_BasculinWhiteStriped[]; extern const u32 gMonPalette_DarmanitanZenMode[]; -extern const u32 gMonPalette_DarmanitanZenModeGalarian[]; +extern const u32 gMonPalette_DarmanitanGalarianZenMode[]; extern const u32 gMonPalette_DeerlingSummer[]; extern const u32 gMonPalette_DeerlingAutumn[]; extern const u32 gMonPalette_DeerlingWinter[]; @@ -3939,7 +3939,7 @@ extern const u32 gMonPalette_GrimmsnarlGigantamax[]; extern const u32 gMonPalette_AlcremieGigantamax[]; extern const u32 gMonPalette_CopperajahGigantamax[]; extern const u32 gMonPalette_DuraludonGigantamax[]; -extern const u32 gMonPalette_UrshifuGigantamax[]; +extern const u32 gMonPalette_UrshifuSingleStrikeGigantamax[]; extern const u32 gMonPalette_UrshifuRapidStrikeGigantamax[]; #endif extern const u32 gMonPalette_Egg[]; @@ -4296,7 +4296,7 @@ extern const u32 gMonShinyPalette_Anorith[]; extern const u32 gMonShinyPalette_Armaldo[]; extern const u32 gMonShinyPalette_Feebas[]; extern const u32 gMonShinyPalette_Milotic[]; -extern const u32 gMonShinyPalette_Castform[]; +extern const u32 gMonShinyPalette_CastformNormal[]; extern const u32 gMonShinyPalette_Kecleon[]; extern const u32 gMonShinyPalette_Shuppet[]; extern const u32 gMonShinyPalette_Banette[]; @@ -4331,7 +4331,7 @@ extern const u32 gMonShinyPalette_Kyogre[]; extern const u32 gMonShinyPalette_Groudon[]; extern const u32 gMonShinyPalette_Rayquaza[]; extern const u32 gMonShinyPalette_Jirachi[]; -extern const u32 gMonShinyPalette_Deoxys[]; +extern const u32 gMonShinyPalette_DeoxysNormal[]; #if P_GEN_4_POKEMON == TRUE extern const u32 gMonShinyPalette_Turtwig[]; extern const u32 gMonShinyPalette_Grotle[]; @@ -4358,8 +4358,8 @@ extern const u32 gMonShinyPalette_Cranidos[]; extern const u32 gMonShinyPalette_Rampardos[]; extern const u32 gMonShinyPalette_Shieldon[]; extern const u32 gMonShinyPalette_Bastiodon[]; -extern const u32 gMonShinyPalette_Burmy[]; -extern const u32 gMonShinyPalette_Wormadam[]; +extern const u32 gMonShinyPalette_BurmyPlantCloak[]; +extern const u32 gMonShinyPalette_WormadamPlantCloak[]; extern const u32 gMonShinyPalette_Mothim[]; extern const u32 gMonShinyPalette_Combee[]; extern const u32 gMonShinyPalette_CombeeF[]; @@ -4368,9 +4368,9 @@ extern const u32 gMonShinyPalette_Pachirisu[]; extern const u32 gMonShinyPalette_Buizel[]; extern const u32 gMonShinyPalette_Floatzel[]; extern const u32 gMonShinyPalette_Cherubi[]; -extern const u32 gMonShinyPalette_Cherrim[]; -extern const u32 gMonShinyPalette_Shellos[]; -extern const u32 gMonShinyPalette_Gastrodon[]; +extern const u32 gMonShinyPalette_CherrimOvercast[]; +extern const u32 gMonShinyPalette_ShellosWestSea[]; +extern const u32 gMonShinyPalette_GastrodonWestSea[]; extern const u32 gMonShinyPalette_Ambipom[]; extern const u32 gMonShinyPalette_Drifloon[]; extern const u32 gMonShinyPalette_Drifblim[]; @@ -4436,12 +4436,12 @@ extern const u32 gMonShinyPalette_Dialga[]; extern const u32 gMonShinyPalette_Palkia[]; extern const u32 gMonShinyPalette_Heatran[]; extern const u32 gMonShinyPalette_Regigigas[]; -extern const u32 gMonShinyPalette_Giratina[]; +extern const u32 gMonShinyPalette_GiratinaAltered[]; extern const u32 gMonShinyPalette_Cresselia[]; extern const u32 gMonShinyPalette_Phione[]; extern const u32 gMonShinyPalette_Manaphy[]; extern const u32 gMonShinyPalette_Darkrai[]; -extern const u32 gMonShinyPalette_Shaymin[]; +extern const u32 gMonShinyPalette_ShayminLand[]; extern const u32 gMonShinyPalette_Arceus[]; #endif #if P_GEN_5_POKEMON == TRUE @@ -4502,12 +4502,12 @@ extern const u32 gMonShinyPalette_Cottonee[]; extern const u32 gMonShinyPalette_Whimsicott[]; extern const u32 gMonShinyPalette_Petilil[]; extern const u32 gMonShinyPalette_Lilligant[]; -extern const u32 gMonShinyPalette_Basculin[]; +extern const u32 gMonShinyPalette_BasculinRedStriped[]; extern const u32 gMonShinyPalette_Sandile[]; extern const u32 gMonShinyPalette_Krokorok[]; extern const u32 gMonShinyPalette_Krookodile[]; extern const u32 gMonShinyPalette_Darumaka[]; -extern const u32 gMonShinyPalette_Darmanitan[]; +extern const u32 gMonShinyPalette_DarmanitanStandardMode[]; extern const u32 gMonShinyPalette_Maractus[]; extern const u32 gMonShinyPalette_Dwebble[]; extern const u32 gMonShinyPalette_Crustle[]; @@ -4537,8 +4537,8 @@ extern const u32 gMonShinyPalette_Swanna[]; extern const u32 gMonShinyPalette_Vanillite[]; extern const u32 gMonShinyPalette_Vanillish[]; extern const u32 gMonShinyPalette_Vanilluxe[]; -extern const u32 gMonShinyPalette_Deerling[]; -extern const u32 gMonShinyPalette_Sawsbuck[]; +extern const u32 gMonShinyPalette_DeerlingSpring[]; +extern const u32 gMonShinyPalette_SawsbuckSpring[]; extern const u32 gMonShinyPalette_Emolga[]; extern const u32 gMonShinyPalette_Karrablast[]; extern const u32 gMonShinyPalette_Escavalier[]; @@ -4595,14 +4595,14 @@ extern const u32 gMonShinyPalette_Volcarona[]; extern const u32 gMonShinyPalette_Cobalion[]; extern const u32 gMonShinyPalette_Terrakion[]; extern const u32 gMonShinyPalette_Virizion[]; -extern const u32 gMonShinyPalette_Tornadus[]; -extern const u32 gMonShinyPalette_Thundurus[]; +extern const u32 gMonShinyPalette_TornadusIncarnate[]; +extern const u32 gMonShinyPalette_ThundurusIncarnate[]; extern const u32 gMonShinyPalette_Reshiram[]; extern const u32 gMonShinyPalette_Zekrom[]; -extern const u32 gMonShinyPalette_Landorus[]; +extern const u32 gMonShinyPalette_LandorusIncarnate[]; extern const u32 gMonShinyPalette_Kyurem[]; -extern const u32 gMonShinyPalette_Keldeo[]; -extern const u32 gMonShinyPalette_Meloetta[]; +extern const u32 gMonShinyPalette_KeldeoOrdinary[]; +extern const u32 gMonShinyPalette_MeloettaAria[]; extern const u32 gMonShinyPalette_Genesect[]; #endif #if P_GEN_6_POKEMON == TRUE @@ -4622,22 +4622,22 @@ extern const u32 gMonShinyPalette_Fletchinder[]; extern const u32 gMonShinyPalette_Talonflame[]; extern const u32 gMonShinyPalette_Scatterbug[]; extern const u32 gMonShinyPalette_Spewpa[]; -extern const u32 gMonShinyPalette_Vivillon[]; +extern const u32 gMonShinyPalette_VivillonIcySnow[]; extern const u32 gMonShinyPalette_Litleo[]; extern const u32 gMonShinyPalette_Pyroar[]; -extern const u32 gMonShinyPalette_Flabebe[]; -extern const u32 gMonShinyPalette_Floette[]; -extern const u32 gMonShinyPalette_Florges[]; +extern const u32 gMonShinyPalette_FlabebeRedFlower[]; +extern const u32 gMonShinyPalette_FloetteRedFlower[]; +extern const u32 gMonShinyPalette_FlorgesRedFlower[]; extern const u32 gMonShinyPalette_Skiddo[]; extern const u32 gMonShinyPalette_Gogoat[]; extern const u32 gMonShinyPalette_Pancham[]; extern const u32 gMonShinyPalette_Pangoro[]; -extern const u32 gMonShinyPalette_Furfrou[]; +extern const u32 gMonShinyPalette_FurfrouNatural[]; extern const u32 gMonShinyPalette_Espurr[]; -extern const u32 gMonShinyPalette_Meowstic[]; +extern const u32 gMonShinyPalette_MeowsticMale[]; extern const u32 gMonShinyPalette_Honedge[]; extern const u32 gMonShinyPalette_Doublade[]; -extern const u32 gMonShinyPalette_Aegislash[]; +extern const u32 gMonShinyPalette_AegislashShield[]; extern const u32 gMonShinyPalette_Spritzee[]; extern const u32 gMonShinyPalette_Aromatisse[]; extern const u32 gMonShinyPalette_Swirlix[]; @@ -4672,11 +4672,11 @@ extern const u32 gMonShinyPalette_Bergmite[]; extern const u32 gMonShinyPalette_Avalugg[]; extern const u32 gMonShinyPalette_Noibat[]; extern const u32 gMonShinyPalette_Noivern[]; -extern const u32 gMonShinyPalette_Xerneas[]; +extern const u32 gMonShinyPalette_XerneasNeutral[]; extern const u32 gMonShinyPalette_Yveltal[]; -extern const u32 gMonShinyPalette_Zygarde[]; +extern const u32 gMonShinyPalette_Zygarde50[]; extern const u32 gMonShinyPalette_Diancie[]; -extern const u32 gMonShinyPalette_Hoopa[]; +extern const u32 gMonShinyPalette_HoopaConfined[]; extern const u32 gMonShinyPalette_Volcanion[]; #endif #if P_GEN_7_POKEMON == TRUE @@ -4699,12 +4699,12 @@ extern const u32 gMonShinyPalette_Charjabug[]; extern const u32 gMonShinyPalette_Vikavolt[]; extern const u32 gMonShinyPalette_Crabrawler[]; extern const u32 gMonShinyPalette_Crabominable[]; -extern const u32 gMonShinyPalette_Oricorio[]; +extern const u32 gMonShinyPalette_OricorioBaile[]; extern const u32 gMonShinyPalette_Cutiefly[]; extern const u32 gMonShinyPalette_Ribombee[]; extern const u32 gMonShinyPalette_Rockruff[]; -extern const u32 gMonShinyPalette_Lycanroc[]; -extern const u32 gMonShinyPalette_Wishiwashi[]; +extern const u32 gMonShinyPalette_LycanrocMidday[]; +extern const u32 gMonShinyPalette_WishiwashiSolo[]; extern const u32 gMonShinyPalette_Mareanie[]; extern const u32 gMonShinyPalette_Toxapex[]; extern const u32 gMonShinyPalette_Mudbray[]; @@ -4731,12 +4731,12 @@ extern const u32 gMonShinyPalette_Sandygast[]; extern const u32 gMonShinyPalette_Palossand[]; extern const u32 gMonShinyPalette_Pyukumuku[]; extern const u32 gMonShinyPalette_TypeNull[]; -extern const u32 gMonShinyPalette_Silvally[]; -extern const u32 gMonShinyPalette_Minior[]; +extern const u32 gMonShinyPalette_SilvallyNormal[]; +extern const u32 gMonShinyPalette_MiniorMeteor[]; extern const u32 gMonShinyPalette_Komala[]; extern const u32 gMonShinyPalette_Turtonator[]; extern const u32 gMonShinyPalette_Togedemaru[]; -extern const u32 gMonShinyPalette_Mimikyu[]; +extern const u32 gMonShinyPalette_MimikyuDisguised[]; extern const u32 gMonShinyPalette_Bruxish[]; extern const u32 gMonShinyPalette_Drampa[]; extern const u32 gMonShinyPalette_Dhelmise[]; @@ -4809,7 +4809,7 @@ extern const u32 gMonShinyPalette_Cramorant[]; extern const u32 gMonShinyPalette_Arrokuda[]; extern const u32 gMonShinyPalette_Barraskewda[]; extern const u32 gMonShinyPalette_Toxel[]; -extern const u32 gMonShinyPalette_Toxtricity[]; +extern const u32 gMonShinyPalette_ToxtricityAmped[]; extern const u32 gMonShinyPalette_Sizzlipede[]; extern const u32 gMonShinyPalette_Centiskorch[]; extern const u32 gMonShinyPalette_Clobbopus[]; @@ -4835,9 +4835,9 @@ extern const u32 gMonShinyPalette_Pincurchin[]; extern const u32 gMonShinyPalette_Snom[]; extern const u32 gMonShinyPalette_Frosmoth[]; extern const u32 gMonShinyPalette_Stonjourner[]; -extern const u32 gMonShinyPalette_Eiscue[]; -extern const u32 gMonShinyPalette_Indeedee[]; -extern const u32 gMonShinyPalette_Morpeko[]; +extern const u32 gMonShinyPalette_EiscueIceFace[]; +extern const u32 gMonShinyPalette_IndeedeeMale[]; +extern const u32 gMonShinyPalette_MorpekoFullBelly[]; extern const u32 gMonShinyPalette_Cufant[]; extern const u32 gMonShinyPalette_Copperajah[]; extern const u32 gMonShinyPalette_Dracozolt[]; @@ -4848,11 +4848,11 @@ extern const u32 gMonShinyPalette_Duraludon[]; extern const u32 gMonShinyPalette_Dreepy[]; extern const u32 gMonShinyPalette_Drakloak[]; extern const u32 gMonShinyPalette_Dragapult[]; -extern const u32 gMonShinyPalette_Zacian[]; -extern const u32 gMonShinyPalette_Zamazenta[]; +extern const u32 gMonShinyPalette_ZacianHeroOfManyBattles[]; +extern const u32 gMonShinyPalette_ZamazentaHeroOfManyBattles[]; extern const u32 gMonShinyPalette_Eternatus[]; extern const u32 gMonShinyPalette_Kubfu[]; -extern const u32 gMonShinyPalette_Urshifu[]; +extern const u32 gMonShinyPalette_UrshifuSingleStrikeStyle[]; extern const u32 gMonShinyPalette_Zarude[]; extern const u32 gMonShinyPalette_Regieleki[]; extern const u32 gMonShinyPalette_Regidrago[]; @@ -4862,10 +4862,10 @@ extern const u32 gMonShinyPalette_Calyrex[]; extern const u32 gMonShinyPalette_Wyrdeer[]; extern const u32 gMonShinyPalette_Kleavor[]; extern const u32 gMonShinyPalette_Ursaluna[]; -extern const u32 gMonShinyPalette_Basculegion[]; +extern const u32 gMonShinyPalette_BasculegionMale[]; extern const u32 gMonShinyPalette_Sneasler[]; extern const u32 gMonShinyPalette_Overqwil[]; -extern const u32 gMonShinyPalette_Enamorus[]; +extern const u32 gMonShinyPalette_EnamorusIncarnate[]; #endif extern const u32 gMonShinyPalette_VenusaurMega[]; extern const u32 gMonShinyPalette_CharizardMegaX[]; @@ -4958,7 +4958,7 @@ extern const u32 gMonShinyPalette_ZigzagoonGalarian[]; extern const u32 gMonShinyPalette_LinooneGalarian[]; #if P_GEN_5_POKEMON == TRUE extern const u32 gMonShinyPalette_DarumakaGalarian[]; -extern const u32 gMonShinyPalette_DarmanitanGalarian[]; +extern const u32 gMonShinyPalette_DarmanitanGalarianStandardMode[]; extern const u32 gMonShinyPalette_YamaskGalarian[]; extern const u32 gMonShinyPalette_StunfiskGalarian[]; #endif @@ -5044,7 +5044,7 @@ extern const u32 gMonShinyPalette_ArceusFairy[]; extern const u32 gMonShinyPalette_BasculinBlueStriped[]; extern const u32 gMonShinyPalette_BasculinWhiteStriped[]; extern const u32 gMonShinyPalette_DarmanitanZenMode[]; -extern const u32 gMonShinyPalette_DarmanitanZenModeGalarian[]; +extern const u32 gMonShinyPalette_DarmanitanGalarianZenMode[]; extern const u32 gMonShinyPalette_DeerlingSummer[]; extern const u32 gMonShinyPalette_DeerlingAutumn[]; extern const u32 gMonShinyPalette_DeerlingWinter[]; @@ -5199,7 +5199,7 @@ extern const u32 gMonShinyPalette_GrimmsnarlGigantamax[]; extern const u32 gMonShinyPalette_AlcremieGigantamax[]; extern const u32 gMonShinyPalette_CopperajahGigantamax[]; extern const u32 gMonShinyPalette_DuraludonGigantamax[]; -extern const u32 gMonShinyPalette_UrshifuGigantamax[]; +extern const u32 gMonShinyPalette_UrshifuSingleStrikeGigantamax[]; extern const u32 gMonShinyPalette_UrshifuRapidStrikeGigantamax[]; #endif @@ -5554,7 +5554,7 @@ extern const u8 gMonIcon_Anorith[]; extern const u8 gMonIcon_Armaldo[]; extern const u8 gMonIcon_Feebas[]; extern const u8 gMonIcon_Milotic[]; -extern const u8 gMonIcon_Castform[]; +extern const u8 gMonIcon_CastformNormal[]; extern const u8 gMonIcon_Kecleon[]; extern const u8 gMonIcon_Shuppet[]; extern const u8 gMonIcon_Banette[]; @@ -5589,7 +5589,7 @@ extern const u8 gMonIcon_Kyogre[]; extern const u8 gMonIcon_Groudon[]; extern const u8 gMonIcon_Rayquaza[]; extern const u8 gMonIcon_Jirachi[]; -extern const u8 gMonIcon_Deoxys[]; +extern const u8 gMonIcon_DeoxysNormal[]; #if P_GEN_4_POKEMON == TRUE extern const u8 gMonIcon_Turtwig[]; extern const u8 gMonIcon_Grotle[]; @@ -5616,8 +5616,8 @@ extern const u8 gMonIcon_Cranidos[]; extern const u8 gMonIcon_Rampardos[]; extern const u8 gMonIcon_Shieldon[]; extern const u8 gMonIcon_Bastiodon[]; -extern const u8 gMonIcon_Burmy[]; -extern const u8 gMonIcon_Wormadam[]; +extern const u8 gMonIcon_BurmyPlantCloak[]; +extern const u8 gMonIcon_WormadamPlantCloak[]; extern const u8 gMonIcon_Mothim[]; extern const u8 gMonIcon_Combee[]; extern const u8 gMonIcon_Vespiquen[]; @@ -5625,9 +5625,9 @@ extern const u8 gMonIcon_Pachirisu[]; extern const u8 gMonIcon_Buizel[]; extern const u8 gMonIcon_Floatzel[]; extern const u8 gMonIcon_Cherubi[]; -extern const u8 gMonIcon_Cherrim[]; -extern const u8 gMonIcon_Shellos[]; -extern const u8 gMonIcon_Gastrodon[]; +extern const u8 gMonIcon_CherrimOvercast[]; +extern const u8 gMonIcon_ShellosWestSea[]; +extern const u8 gMonIcon_GastrodonWestSea[]; extern const u8 gMonIcon_Ambipom[]; extern const u8 gMonIcon_Drifloon[]; extern const u8 gMonIcon_Drifblim[]; @@ -5695,12 +5695,12 @@ extern const u8 gMonIcon_Dialga[]; extern const u8 gMonIcon_Palkia[]; extern const u8 gMonIcon_Heatran[]; extern const u8 gMonIcon_Regigigas[]; -extern const u8 gMonIcon_Giratina[]; +extern const u8 gMonIcon_GiratinaAltered[]; extern const u8 gMonIcon_Cresselia[]; extern const u8 gMonIcon_Phione[]; extern const u8 gMonIcon_Manaphy[]; extern const u8 gMonIcon_Darkrai[]; -extern const u8 gMonIcon_Shaymin[]; +extern const u8 gMonIcon_ShayminLand[]; extern const u8 gMonIcon_Arceus[]; #endif #if P_GEN_5_POKEMON == TRUE @@ -5761,12 +5761,12 @@ extern const u8 gMonIcon_Cottonee[]; extern const u8 gMonIcon_Whimsicott[]; extern const u8 gMonIcon_Petilil[]; extern const u8 gMonIcon_Lilligant[]; -extern const u8 gMonIcon_Basculin[]; +extern const u8 gMonIcon_BasculinRedStriped[]; extern const u8 gMonIcon_Sandile[]; extern const u8 gMonIcon_Krokorok[]; extern const u8 gMonIcon_Krookodile[]; extern const u8 gMonIcon_Darumaka[]; -extern const u8 gMonIcon_Darmanitan[]; +extern const u8 gMonIcon_DarmanitanStandardMode[]; extern const u8 gMonIcon_Maractus[]; extern const u8 gMonIcon_Dwebble[]; extern const u8 gMonIcon_Crustle[]; @@ -5796,8 +5796,8 @@ extern const u8 gMonIcon_Swanna[]; extern const u8 gMonIcon_Vanillite[]; extern const u8 gMonIcon_Vanillish[]; extern const u8 gMonIcon_Vanilluxe[]; -extern const u8 gMonIcon_Deerling[]; -extern const u8 gMonIcon_Sawsbuck[]; +extern const u8 gMonIcon_DeerlingSpring[]; +extern const u8 gMonIcon_SawsbuckSpring[]; extern const u8 gMonIcon_Emolga[]; extern const u8 gMonIcon_Karrablast[]; extern const u8 gMonIcon_Escavalier[]; @@ -5854,14 +5854,14 @@ extern const u8 gMonIcon_Volcarona[]; extern const u8 gMonIcon_Cobalion[]; extern const u8 gMonIcon_Terrakion[]; extern const u8 gMonIcon_Virizion[]; -extern const u8 gMonIcon_Tornadus[]; -extern const u8 gMonIcon_Thundurus[]; +extern const u8 gMonIcon_TornadusIncarnate[]; +extern const u8 gMonIcon_ThundurusIncarnate[]; extern const u8 gMonIcon_Reshiram[]; extern const u8 gMonIcon_Zekrom[]; -extern const u8 gMonIcon_Landorus[]; +extern const u8 gMonIcon_LandorusIncarnate[]; extern const u8 gMonIcon_Kyurem[]; -extern const u8 gMonIcon_Keldeo[]; -extern const u8 gMonIcon_Meloetta[]; +extern const u8 gMonIcon_KeldeoOrdinary[]; +extern const u8 gMonIcon_MeloettaAria[]; extern const u8 gMonIcon_Genesect[]; #endif #if P_GEN_6_POKEMON == TRUE @@ -5881,23 +5881,23 @@ extern const u8 gMonIcon_Fletchinder[]; extern const u8 gMonIcon_Talonflame[]; extern const u8 gMonIcon_Scatterbug[]; extern const u8 gMonIcon_Spewpa[]; -extern const u8 gMonIcon_Vivillon[]; +extern const u8 gMonIcon_VivillonIcySnow[]; extern const u8 gMonIcon_Litleo[]; extern const u8 gMonIcon_Pyroar[]; extern const u8 gMonIcon_PyroarF[]; -extern const u8 gMonIcon_Flabebe[]; -extern const u8 gMonIcon_Floette[]; -extern const u8 gMonIcon_Florges[]; +extern const u8 gMonIcon_FlabebeRedFlower[]; +extern const u8 gMonIcon_FloetteRedFlower[]; +extern const u8 gMonIcon_FlorgesRedFlower[]; extern const u8 gMonIcon_Skiddo[]; extern const u8 gMonIcon_Gogoat[]; extern const u8 gMonIcon_Pancham[]; extern const u8 gMonIcon_Pangoro[]; -extern const u8 gMonIcon_Furfrou[]; +extern const u8 gMonIcon_FurfrouNatural[]; extern const u8 gMonIcon_Espurr[]; -extern const u8 gMonIcon_Meowstic[]; +extern const u8 gMonIcon_MeowsticMale[]; extern const u8 gMonIcon_Honedge[]; extern const u8 gMonIcon_Doublade[]; -extern const u8 gMonIcon_Aegislash[]; +extern const u8 gMonIcon_AegislashShield[]; extern const u8 gMonIcon_Spritzee[]; extern const u8 gMonIcon_Aromatisse[]; extern const u8 gMonIcon_Swirlix[]; @@ -5932,11 +5932,11 @@ extern const u8 gMonIcon_Bergmite[]; extern const u8 gMonIcon_Avalugg[]; extern const u8 gMonIcon_Noibat[]; extern const u8 gMonIcon_Noivern[]; -extern const u8 gMonIcon_Xerneas[]; +extern const u8 gMonIcon_XerneasNeutral[]; extern const u8 gMonIcon_Yveltal[]; -extern const u8 gMonIcon_Zygarde[]; +extern const u8 gMonIcon_Zygarde50[]; extern const u8 gMonIcon_Diancie[]; -extern const u8 gMonIcon_Hoopa[]; +extern const u8 gMonIcon_HoopaConfined[]; extern const u8 gMonIcon_Volcanion[]; #endif #if P_GEN_7_POKEMON == TRUE @@ -5959,12 +5959,12 @@ extern const u8 gMonIcon_Charjabug[]; extern const u8 gMonIcon_Vikavolt[]; extern const u8 gMonIcon_Crabrawler[]; extern const u8 gMonIcon_Crabominable[]; -extern const u8 gMonIcon_Oricorio[]; +extern const u8 gMonIcon_OricorioBaile[]; extern const u8 gMonIcon_Cutiefly[]; extern const u8 gMonIcon_Ribombee[]; extern const u8 gMonIcon_Rockruff[]; -extern const u8 gMonIcon_Lycanroc[]; -extern const u8 gMonIcon_Wishiwashi[]; +extern const u8 gMonIcon_LycanrocMidday[]; +extern const u8 gMonIcon_WishiwashiSolo[]; extern const u8 gMonIcon_Mareanie[]; extern const u8 gMonIcon_Toxapex[]; extern const u8 gMonIcon_Mudbray[]; @@ -5992,11 +5992,11 @@ extern const u8 gMonIcon_Palossand[]; extern const u8 gMonIcon_Pyukumuku[]; extern const u8 gMonIcon_TypeNull[]; extern const u8 gMonIcon_Silvally[]; -extern const u8 gMonIcon_Minior[]; +extern const u8 gMonIcon_MiniorMeteor[]; extern const u8 gMonIcon_Komala[]; extern const u8 gMonIcon_Turtonator[]; extern const u8 gMonIcon_Togedemaru[]; -extern const u8 gMonIcon_Mimikyu[]; +extern const u8 gMonIcon_MimikyuDisguised[]; extern const u8 gMonIcon_Bruxish[]; extern const u8 gMonIcon_Drampa[]; extern const u8 gMonIcon_Dhelmise[]; @@ -6069,7 +6069,7 @@ extern const u8 gMonIcon_Cramorant[]; extern const u8 gMonIcon_Arrokuda[]; extern const u8 gMonIcon_Barraskewda[]; extern const u8 gMonIcon_Toxel[]; -extern const u8 gMonIcon_Toxtricity[]; +extern const u8 gMonIcon_ToxtricityAmped[]; extern const u8 gMonIcon_Sizzlipede[]; extern const u8 gMonIcon_Centiskorch[]; extern const u8 gMonIcon_Clobbopus[]; @@ -6095,9 +6095,9 @@ extern const u8 gMonIcon_Pincurchin[]; extern const u8 gMonIcon_Snom[]; extern const u8 gMonIcon_Frosmoth[]; extern const u8 gMonIcon_Stonjourner[]; -extern const u8 gMonIcon_Eiscue[]; -extern const u8 gMonIcon_Indeedee[]; -extern const u8 gMonIcon_Morpeko[]; +extern const u8 gMonIcon_EiscueIceFace[]; +extern const u8 gMonIcon_IndeedeeMale[]; +extern const u8 gMonIcon_MorpekoFullBelly[]; extern const u8 gMonIcon_Cufant[]; extern const u8 gMonIcon_Copperajah[]; extern const u8 gMonIcon_Dracozolt[]; @@ -6108,11 +6108,11 @@ extern const u8 gMonIcon_Duraludon[]; extern const u8 gMonIcon_Dreepy[]; extern const u8 gMonIcon_Drakloak[]; extern const u8 gMonIcon_Dragapult[]; -extern const u8 gMonIcon_Zacian[]; -extern const u8 gMonIcon_Zamazenta[]; +extern const u8 gMonIcon_ZacianHeroOfManyBattles[]; +extern const u8 gMonIcon_ZamazentaHeroOfManyBattles[]; extern const u8 gMonIcon_Eternatus[]; extern const u8 gMonIcon_Kubfu[]; -extern const u8 gMonIcon_Urshifu[]; +extern const u8 gMonIcon_UrshifuSingleStrikeStyle[]; extern const u8 gMonIcon_Zarude[]; extern const u8 gMonIcon_Regieleki[]; extern const u8 gMonIcon_Regidrago[]; @@ -6122,10 +6122,10 @@ extern const u8 gMonIcon_Calyrex[]; extern const u8 gMonIcon_Wyrdeer[]; extern const u8 gMonIcon_Kleavor[]; extern const u8 gMonIcon_Ursaluna[]; -extern const u8 gMonIcon_Basculegion[]; +extern const u8 gMonIcon_BasculegionMale[]; extern const u8 gMonIcon_Sneasler[]; extern const u8 gMonIcon_Overqwil[]; -extern const u8 gMonIcon_Enamorus[]; +extern const u8 gMonIcon_EnamorusIncarnate[]; #endif extern const u8 gMonIcon_VenusaurMega[]; extern const u8 gMonIcon_CharizardMegaX[]; @@ -6218,7 +6218,7 @@ extern const u8 gMonIcon_ZigzagoonGalarian[]; extern const u8 gMonIcon_LinooneGalarian[]; #if P_GEN_5_POKEMON == TRUE extern const u8 gMonIcon_DarumakaGalarian[]; -extern const u8 gMonIcon_DarmanitanGalarian[]; +extern const u8 gMonIcon_DarmanitanGalarianStandardMode[]; extern const u8 gMonIcon_YamaskGalarian[]; extern const u8 gMonIcon_StunfiskGalarian[]; #endif @@ -6314,7 +6314,7 @@ extern const u8 gMonIcon_ShayminSky[]; extern const u8 gMonIcon_BasculinBlueStriped[]; extern const u8 gMonIcon_BasculinWhiteStriped[]; extern const u8 gMonIcon_DarmanitanZenMode[]; -extern const u8 gMonIcon_DarmanitanZenModeGalarian[]; +extern const u8 gMonIcon_DarmanitanGalarianZenMode[]; extern const u8 gMonIcon_DeerlingSummer[]; extern const u8 gMonIcon_DeerlingAutumn[]; extern const u8 gMonIcon_DeerlingWinter[]; @@ -6403,14 +6403,14 @@ extern const u8 gMonIcon_MagearnaOriginalColor[]; extern const u8 gMonIcon_CramorantGulping[]; extern const u8 gMonIcon_CramorantGorging[]; extern const u8 gMonIcon_ToxtricityLowKey[]; -//extern const u8 gMonIcon_AlcremieRubyCream[]; -//extern const u8 gMonIcon_AlcremieMatchaCream[]; -//extern const u8 gMonIcon_AlcremieMintCream[]; -//extern const u8 gMonIcon_AlcremieLemonCream[]; -//extern const u8 gMonIcon_AlcremieSaltedCream[]; -//extern const u8 gMonIcon_AlcremieRubySwirl[]; -//extern const u8 gMonIcon_AlcremieCaramelSwirl[]; -//extern const u8 gMonIcon_AlcremieRainbowSwirl[]; +//extern const u8 gMonIcon_AlcremieStrawberryRubyCream[]; +//extern const u8 gMonIcon_AlcremieStrawberryMatchaCream[]; +//extern const u8 gMonIcon_AlcremieStrawberryMintCream[]; +//extern const u8 gMonIcon_AlcremieStrawberryLemonCream[]; +//extern const u8 gMonIcon_AlcremieStrawberrySaltedCream[]; +//extern const u8 gMonIcon_AlcremieStrawberryRubySwirl[]; +//extern const u8 gMonIcon_AlcremieStrawberryCaramelSwirl[]; +//extern const u8 gMonIcon_AlcremieStrawberryRainbowSwirl[]; extern const u8 gMonIcon_EiscueNoiceFace[]; extern const u8 gMonIcon_IndeedeeFemale[]; extern const u8 gMonIcon_MorpekoHangry[]; @@ -6453,7 +6453,7 @@ extern const u8 gMonIcon_GrimmsnarlGigantamax[]; extern const u8 gMonIcon_AlcremieGigantamax[]; extern const u8 gMonIcon_CopperajahGigantamax[]; extern const u8 gMonIcon_DuraludonGigantamax[]; -extern const u8 gMonIcon_UrshifuGigantamax[]; +extern const u8 gMonIcon_UrshifuSingleStrikeGigantamax[]; extern const u8 gMonIcon_UrshifuRapidStrikeGigantamax[]; #endif extern const u8 gMonIcon_Egg[]; @@ -7404,7 +7404,7 @@ extern const u32 gMonFrontPic_GrimmsnarlGigantamax[]; extern const u32 gMonFrontPic_AlcremieGigantamax[]; extern const u32 gMonFrontPic_CopperajahGigantamax[]; extern const u32 gMonFrontPic_DuraludonGigantamax[]; -extern const u32 gMonFrontPic_UrshifuGigantamax[]; +extern const u32 gMonFrontPic_UrshifuSingleStrikeGigantamax[]; extern const u32 gMonFrontPic_UrshifuRapidStrikeGigantamax[]; #endif diff --git a/src/battle_ai_main.c b/src/battle_ai_main.c index e8453ae1e0..03a41733aa 100644 --- a/src/battle_ai_main.c +++ b/src/battle_ai_main.c @@ -4693,7 +4693,7 @@ static s32 AI_CheckViability(u32 battlerAtk, u32 battlerDef, u32 move, s32 score case EFFECT_RELIC_SONG: if (!(gBattleMons[battlerAtk].status2 & STATUS2_TRANSFORMED)) // Don't try to change form if it's transformed. { - if (gBattleMons[battlerAtk].species == SPECIES_MELOETTA && gBattleMons[battlerDef].defense < gBattleMons[battlerDef].spDefense) + if (gBattleMons[battlerAtk].species == SPECIES_MELOETTA_ARIA && gBattleMons[battlerDef].defense < gBattleMons[battlerDef].spDefense) ADJUST_SCORE(3); // Change to Pirouette if can do more damage else if (gBattleMons[battlerAtk].species == SPECIES_MELOETTA_PIROUETTE && gBattleMons[battlerDef].spDefense < gBattleMons[battlerDef].defense) ADJUST_SCORE(3); // Change to Aria if can do more damage diff --git a/src/battle_ai_util.c b/src/battle_ai_util.c index 8c584c8509..faffe0e6b3 100644 --- a/src/battle_ai_util.c +++ b/src/battle_ai_util.c @@ -3897,9 +3897,9 @@ bool32 ShouldUseZMove(u32 battlerAtk, u32 battlerDef, u32 chosenMove) { u8 effectiveness; - if (gBattleMons[battlerDef].ability == ABILITY_DISGUISE && gBattleMons[battlerDef].species == SPECIES_MIMIKYU) + if (gBattleMons[battlerDef].ability == ABILITY_DISGUISE && gBattleMons[battlerDef].species == SPECIES_MIMIKYU_DISGUISED) return FALSE; // Don't waste a Z-Move busting disguise - if (gBattleMons[battlerDef].ability == ABILITY_ICE_FACE && gBattleMons[battlerDef].species == SPECIES_EISCUE && IS_MOVE_PHYSICAL(chosenMove)) + if (gBattleMons[battlerDef].ability == ABILITY_ICE_FACE && gBattleMons[battlerDef].species == SPECIES_EISCUE_ICE_FACE && IS_MOVE_PHYSICAL(chosenMove)) return FALSE; // Don't waste a Z-Move busting Ice Face if (IS_MOVE_STATUS(chosenMove) && !IS_MOVE_STATUS(gBattleStruct->zmove.chosenZMove)) diff --git a/src/battle_dynamax.c b/src/battle_dynamax.c index c29c9d28e0..a9370a4ab5 100644 --- a/src/battle_dynamax.c +++ b/src/battle_dynamax.c @@ -88,7 +88,7 @@ static const struct GMaxMove sGMaxMoveTable[] = {SPECIES_ALCREMIE_GIGANTAMAX, TYPE_FAIRY, MOVE_G_MAX_FINALE}, {SPECIES_COPPERAJAH_GIGANTAMAX, TYPE_STEEL, MOVE_G_MAX_STEELSURGE}, {SPECIES_DURALUDON_GIGANTAMAX, TYPE_DRAGON, MOVE_G_MAX_DEPLETION}, - {SPECIES_URSHIFU_GIGANTAMAX, TYPE_DARK, MOVE_G_MAX_ONE_BLOW}, + {SPECIES_URSHIFU_SINGLE_STRIKE_STYLE_GIGANTAMAX,TYPE_DARK, MOVE_G_MAX_ONE_BLOW}, {SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX, TYPE_WATER, MOVE_G_MAX_RAPID_FLOW}, }; diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 3dc177635f..610d6284b5 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -1225,7 +1225,7 @@ static bool32 TryAegiFormChange(void) { default: return FALSE; - case SPECIES_AEGISLASH: // Shield -> Blade + case SPECIES_AEGISLASH_SHIELD: // Shield -> Blade if (IS_MOVE_STATUS(gCurrentMove)) return FALSE; gBattleMons[gBattlerAttacker].species = SPECIES_AEGISLASH_BLADE; @@ -1233,7 +1233,7 @@ static bool32 TryAegiFormChange(void) case SPECIES_AEGISLASH_BLADE: // Blade -> Shield if (gCurrentMove != MOVE_KINGS_SHIELD) return FALSE; - gBattleMons[gBattlerAttacker].species = SPECIES_AEGISLASH; + gBattleMons[gBattlerAttacker].species = SPECIES_AEGISLASH_SHIELD; break; } @@ -3551,14 +3551,14 @@ void SetMoveEffect(bool32 primary, u32 certain) case MOVE_EFFECT_RELIC_SONG: if (GetBattlerAbility(gBattlerAttacker) != ABILITY_SHEER_FORCE && !(gBattleMons[gBattlerAttacker].status2 & STATUS2_TRANSFORMED)) { - if (gBattleMons[gBattlerAttacker].species == SPECIES_MELOETTA) + if (gBattleMons[gBattlerAttacker].species == SPECIES_MELOETTA_ARIA) { gBattleMons[gBattlerAttacker].species = SPECIES_MELOETTA_PIROUETTE; BattleScriptPushCursorAndCallback(BattleScript_AttackerFormChangeMoveEffect); } else if (gBattleMons[gBattlerAttacker].species == SPECIES_MELOETTA_PIROUETTE) { - gBattleMons[gBattlerAttacker].species = SPECIES_MELOETTA; + gBattleMons[gBattlerAttacker].species = SPECIES_MELOETTA_ARIA; BattleScriptPushCursorAndCallback(BattleScript_AttackerFormChangeMoveEffect); } } @@ -9401,7 +9401,8 @@ static void Cmd_various(void) case VARIOUS_TRY_REFLECT_TYPE: { VARIOUS_ARGS(const u8 *failInstr); - if (gBattleMons[gBattlerTarget].species == SPECIES_ARCEUS || gBattleMons[gBattlerTarget].species == SPECIES_SILVALLY) + if (GET_BASE_SPECIES_ID(gBattleMons[gBattlerTarget].species) == SPECIES_ARCEUS + || GET_BASE_SPECIES_ID(gBattleMons[gBattlerTarget].species) == SPECIES_SILVALLY) { gBattlescriptCurrInstr = cmd->failInstr; } @@ -14677,7 +14678,7 @@ bool32 DoesSubstituteBlockMove(u32 battlerAtk, u32 battlerDef, u32 move) bool32 DoesDisguiseBlockMove(u32 battlerAtk, u32 battlerDef, u32 move) { - if (gBattleMons[battlerDef].species != SPECIES_MIMIKYU + if (gBattleMons[battlerDef].species != SPECIES_MIMIKYU_DISGUISED || gBattleMons[battlerDef].status2 & STATUS2_TRANSFORMED || IS_MOVE_STATUS(move) || gHitMarker & HITMARKER_IGNORE_DISGUISE diff --git a/src/battle_setup.c b/src/battle_setup.c index 1c598c8f82..e8ffcd8908 100644 --- a/src/battle_setup.c +++ b/src/battle_setup.c @@ -590,15 +590,21 @@ void BattleSetup_StartLegendaryBattle(void) { default: case SPECIES_GROUDON: + case SPECIES_GROUDON_PRIMAL: CreateBattleStartTask(B_TRANSITION_GROUDON, MUS_VS_KYOGRE_GROUDON); break; case SPECIES_KYOGRE: + case SPECIES_KYOGRE_PRIMAL: CreateBattleStartTask(B_TRANSITION_KYOGRE, MUS_VS_KYOGRE_GROUDON); break; case SPECIES_RAYQUAZA: + case SPECIES_RAYQUAZA_MEGA: CreateBattleStartTask(B_TRANSITION_RAYQUAZA, MUS_VS_RAYQUAZA); break; - case SPECIES_DEOXYS: + case SPECIES_DEOXYS_NORMAL: + case SPECIES_DEOXYS_ATTACK: + case SPECIES_DEOXYS_DEFENSE: + case SPECIES_DEOXYS_SPEED: CreateBattleStartTask(B_TRANSITION_BLUR, MUS_RG_VS_DEOXYS); break; case SPECIES_LUGIA: diff --git a/src/battle_util.c b/src/battle_util.c index fb58181fbb..da143514f1 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -4928,7 +4928,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 gBattlescriptCurrInstr = BattleScript_GoodAsGoldActivates; effect = 1; } - else if (gLastUsedAbility == ABILITY_ICE_FACE && IS_MOVE_PHYSICAL(move) && gBattleMons[gBattlerTarget].species == SPECIES_EISCUE) + else if (gLastUsedAbility == ABILITY_ICE_FACE && IS_MOVE_PHYSICAL(move) && gBattleMons[gBattlerTarget].species == SPECIES_EISCUE_ICE_FACE) { gBattleMons[gBattlerTarget].species = SPECIES_EISCUE_NOICE_FACE; if (gBattleMons[gBattlerAttacker].status2 & STATUS2_MULTIPLETURNS) @@ -5989,7 +5989,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 && gBattleStruct->allowedToChangeFormInWeather[gBattlerPartyIndexes[battler]][GetBattlerSide(battler)]) { gBattleStruct->allowedToChangeFormInWeather[gBattlerPartyIndexes[battler]][GetBattlerSide(battler)] = FALSE; - gBattleMons[battler].species = SPECIES_EISCUE; + gBattleMons[battler].species = SPECIES_EISCUE_ICE_FACE; BattleScriptPushCursorAndCallback(BattleScript_BattlerFormChangeWithStringEnd3); effect++; } @@ -7988,12 +7988,7 @@ u32 GetMoveTarget(u16 move, u8 setTarget) static bool32 IsBattlerModernFatefulEncounter(u32 battler) { - if (GetBattlerSide(battler) == B_SIDE_OPPONENT) - return TRUE; - if (GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_SPECIES, NULL) != SPECIES_DEOXYS - && GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_SPECIES, NULL) != SPECIES_MEW) - return TRUE; - return GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_MODERN_FATEFUL_ENCOUNTER, NULL); + return TRUE; } u8 IsMonDisobedient(void) diff --git a/src/battle_z_move.c b/src/battle_z_move.c index 6c89420403..7069d17386 100644 --- a/src/battle_z_move.c +++ b/src/battle_z_move.c @@ -70,12 +70,11 @@ static const struct SignatureZMove sSignatureZMoves[] = {SPECIES_KOMMO_O, ITEM_KOMMONIUM_Z, MOVE_CLANGING_SCALES, MOVE_CLANGOROUS_SOULBLAZE}, {SPECIES_LUNALA, ITEM_LUNALIUM_Z, MOVE_MOONGEIST_BEAM, MOVE_MENACING_MOONRAZE_MAELSTROM}, {SPECIES_NECROZMA_DAWN_WINGS, ITEM_LUNALIUM_Z, MOVE_MOONGEIST_BEAM, MOVE_MENACING_MOONRAZE_MAELSTROM}, - {SPECIES_LYCANROC, ITEM_LYCANIUM_Z, MOVE_STONE_EDGE, MOVE_SPLINTERED_STORMSHARDS}, + {SPECIES_LYCANROC_MIDDAY, ITEM_LYCANIUM_Z, MOVE_STONE_EDGE, MOVE_SPLINTERED_STORMSHARDS}, {SPECIES_LYCANROC_MIDNIGHT, ITEM_LYCANIUM_Z, MOVE_STONE_EDGE, MOVE_SPLINTERED_STORMSHARDS}, - {SPECIES_LYCANROC_DUSK, ITEM_LYCANIUM_Z, MOVE_STONE_EDGE, MOVE_SPLINTERED_STORMSHARDS}, {SPECIES_MARSHADOW, ITEM_MARSHADIUM_Z, MOVE_SPECTRAL_THIEF, MOVE_SOUL_STEALING_7_STAR_STRIKE}, - {SPECIES_MIMIKYU, ITEM_MIMIKIUM_Z, MOVE_PLAY_ROUGH, MOVE_LETS_SNUGGLE_FOREVER}, + {SPECIES_MIMIKYU_DISGUISED, ITEM_MIMIKIUM_Z, MOVE_PLAY_ROUGH, MOVE_LETS_SNUGGLE_FOREVER}, {SPECIES_MIMIKYU_BUSTED, ITEM_MIMIKIUM_Z, MOVE_PLAY_ROUGH, MOVE_LETS_SNUGGLE_FOREVER}, {SPECIES_PIKACHU_ORIGINAL_CAP, ITEM_PIKASHUNIUM_Z, MOVE_THUNDERBOLT, MOVE_10000000_VOLT_THUNDERBOLT}, {SPECIES_PIKACHU_HOENN_CAP, ITEM_PIKASHUNIUM_Z, MOVE_THUNDERBOLT, MOVE_10000000_VOLT_THUNDERBOLT}, diff --git a/src/data/bard_music/pokemon.h b/src/data/bard_music/pokemon.h index 7d378da6f1..a2ca35aa7d 100644 --- a/src/data/bard_music/pokemon.h +++ b/src/data/bard_music/pokemon.h @@ -2884,7 +2884,7 @@ const struct BardSound gBardSounds_Pokemon[NUM_SPECIES][6] = { NULL_BARD_SOUND, NULL_BARD_SOUND, }, - [SPECIES_CASTFORM] = { + [SPECIES_CASTFORM_NORMAL] = { { .songLengthId = 0 }, { .songLengthId = 26 }, { .songLengthId = 51 }, @@ -3084,7 +3084,7 @@ const struct BardSound gBardSounds_Pokemon[NUM_SPECIES][6] = { NULL_BARD_SOUND, NULL_BARD_SOUND, }, - [SPECIES_DEOXYS] = { + [SPECIES_DEOXYS_NORMAL] = { { .songLengthId = 12 }, { .songLengthId = 27 }, { .songLengthId = 17 }, diff --git a/src/data/battle_frontier/battle_frontier_mons.h b/src/data/battle_frontier/battle_frontier_mons.h index df0a7d9b27..1147ab9080 100644 --- a/src/data/battle_frontier/battle_frontier_mons.h +++ b/src/data/battle_frontier/battle_frontier_mons.h @@ -1429,7 +1429,7 @@ const struct FacilityMon gBattleFrontierMons[NUM_FRONTIER_MONS] = .nature = NATURE_ADAMANT }, [FRONTIER_MON_CASTFORM_1] = { - .species = SPECIES_CASTFORM, + .species = SPECIES_CASTFORM_NORMAL, .moves = {MOVE_EMBER, MOVE_WATER_PULSE, MOVE_SHOCK_WAVE, MOVE_ICY_WIND}, .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, @@ -2164,7 +2164,7 @@ const struct FacilityMon gBattleFrontierMons[NUM_FRONTIER_MONS] = .nature = NATURE_JOLLY }, [FRONTIER_MON_CASTFORM_2] = { - .species = SPECIES_CASTFORM, + .species = SPECIES_CASTFORM_NORMAL, .moves = {MOVE_THUNDERBOLT, MOVE_FLAMETHROWER, MOVE_ICE_BEAM, MOVE_WATER_PULSE}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, diff --git a/src/data/contest_opponents.h b/src/data/contest_opponents.h index feeb29524f..d3f02d33ab 100644 --- a/src/data/contest_opponents.h +++ b/src/data/contest_opponents.h @@ -1760,7 +1760,7 @@ const struct ContestPokemon gContestOpponents[] = .otId = CONTEST_AI_TRAINER_ID, }, [CONTEST_OPPONENT_FELICIA] = { - .species = SPECIES_CASTFORM, + .species = SPECIES_CASTFORM_NORMAL, .nickname = _("CASTER"), .trainerName = _("FELICIA"), .trainerGfxId = OBJ_EVENT_GFX_LASS, diff --git a/src/data/graphics/pokemon.h b/src/data/graphics/pokemon.h index 3574e02446..cfb9700b76 100644 --- a/src/data/graphics/pokemon.h +++ b/src/data/graphics/pokemon.h @@ -411,7 +411,7 @@ const u32 gMonFrontPic_Armaldo[] = INCBIN_U32("graphics/pokemon/armaldo/anim_fro const u32 gMonFrontPic_Feebas[] = INCBIN_U32("graphics/pokemon/feebas/anim_front.4bpp.lz"); const u32 gMonFrontPic_Milotic[] = INCBIN_U32("graphics/pokemon/milotic/anim_front.4bpp.lz"); const u32 gMonFrontPic_MiloticF[] = INCBIN_U32("graphics/pokemon/milotic/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Castform[] = INCBIN_U32("graphics/pokemon/castform/anim_front.4bpp.lz"); +const u32 gMonFrontPic_CastformNormal[] = INCBIN_U32("graphics/pokemon/castform/anim_front.4bpp.lz"); const u32 gMonFrontPic_Kecleon[] = INCBIN_U32("graphics/pokemon/kecleon/anim_front.4bpp.lz"); const u32 gMonFrontPic_Shuppet[] = INCBIN_U32("graphics/pokemon/shuppet/anim_front.4bpp.lz"); const u32 gMonFrontPic_Banette[] = INCBIN_U32("graphics/pokemon/banette/anim_front.4bpp.lz"); @@ -447,7 +447,7 @@ const u32 gMonFrontPic_Kyogre[] = INCBIN_U32("graphics/pokemon/kyogre/anim_front const u32 gMonFrontPic_Groudon[] = INCBIN_U32("graphics/pokemon/groudon/anim_front.4bpp.lz"); const u32 gMonFrontPic_Rayquaza[] = INCBIN_U32("graphics/pokemon/rayquaza/anim_front.4bpp.lz"); const u32 gMonFrontPic_Jirachi[] = INCBIN_U32("graphics/pokemon/jirachi/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Deoxys[] = INCBIN_U32("graphics/pokemon/deoxys/anim_front.4bpp.lz"); +const u32 gMonFrontPic_DeoxysNormal[] = INCBIN_U32("graphics/pokemon/deoxys/anim_front.4bpp.lz"); #if P_GEN_4_POKEMON == TRUE const u32 gMonFrontPic_Turtwig[] = INCBIN_U32("graphics/pokemon/turtwig/anim_front.4bpp.lz"); const u32 gMonFrontPic_Grotle[] = INCBIN_U32("graphics/pokemon/grotle/anim_front.4bpp.lz"); @@ -485,8 +485,8 @@ const u32 gMonFrontPic_Cranidos[] = INCBIN_U32("graphics/pokemon/cranidos/anim_f const u32 gMonFrontPic_Rampardos[] = INCBIN_U32("graphics/pokemon/rampardos/anim_front.4bpp.lz"); const u32 gMonFrontPic_Shieldon[] = INCBIN_U32("graphics/pokemon/shieldon/anim_front.4bpp.lz"); const u32 gMonFrontPic_Bastiodon[] = INCBIN_U32("graphics/pokemon/bastiodon/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Burmy[] = INCBIN_U32("graphics/pokemon/burmy/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Wormadam[] = INCBIN_U32("graphics/pokemon/wormadam/anim_front.4bpp.lz"); +const u32 gMonFrontPic_BurmyPlantCloak[] = INCBIN_U32("graphics/pokemon/burmy/anim_front.4bpp.lz"); +const u32 gMonFrontPic_WormadamPlantCloak[] = INCBIN_U32("graphics/pokemon/wormadam/anim_front.4bpp.lz"); const u32 gMonFrontPic_Mothim[] = INCBIN_U32("graphics/pokemon/mothim/anim_front.4bpp.lz"); const u32 gMonFrontPic_Combee[] = INCBIN_U32("graphics/pokemon/combee/anim_front.4bpp.lz"); const u32 gMonFrontPic_Vespiquen[] = INCBIN_U32("graphics/pokemon/vespiquen/anim_front.4bpp.lz"); @@ -495,9 +495,9 @@ const u32 gMonFrontPic_PachirisuF[] = INCBIN_U32("graphics/pokemon/pachirisu/ani const u32 gMonFrontPic_Buizel[] = INCBIN_U32("graphics/pokemon/buizel/anim_front.4bpp.lz"); const u32 gMonFrontPic_Floatzel[] = INCBIN_U32("graphics/pokemon/floatzel/anim_front.4bpp.lz"); const u32 gMonFrontPic_Cherubi[] = INCBIN_U32("graphics/pokemon/cherubi/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Cherrim[] = INCBIN_U32("graphics/pokemon/cherrim/normal/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Shellos[] = INCBIN_U32("graphics/pokemon/shellos/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Gastrodon[] = INCBIN_U32("graphics/pokemon/gastrodon/anim_front.4bpp.lz"); +const u32 gMonFrontPic_CherrimOvercast[] = INCBIN_U32("graphics/pokemon/cherrim/anim_front.4bpp.lz"); +const u32 gMonFrontPic_ShellosWestSea[] = INCBIN_U32("graphics/pokemon/shellos/anim_front.4bpp.lz"); +const u32 gMonFrontPic_GastrodonWestSea[] = INCBIN_U32("graphics/pokemon/gastrodon/anim_front.4bpp.lz"); const u32 gMonFrontPic_Ambipom[] = INCBIN_U32("graphics/pokemon/ambipom/anim_front.4bpp.lz"); const u32 gMonFrontPic_AmbipomF[] = INCBIN_U32("graphics/pokemon/ambipom/anim_frontf.4bpp.lz"); const u32 gMonFrontPic_Drifloon[] = INCBIN_U32("graphics/pokemon/drifloon/anim_front.4bpp.lz"); @@ -575,12 +575,12 @@ const u32 gMonFrontPic_Dialga[] = INCBIN_U32("graphics/pokemon/dialga/anim_front const u32 gMonFrontPic_Palkia[] = INCBIN_U32("graphics/pokemon/palkia/anim_front.4bpp.lz"); const u32 gMonFrontPic_Heatran[] = INCBIN_U32("graphics/pokemon/heatran/anim_front.4bpp.lz"); const u32 gMonFrontPic_Regigigas[] = INCBIN_U32("graphics/pokemon/regigigas/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Giratina[] = INCBIN_U32("graphics/pokemon/giratina/anim_front.4bpp.lz"); +const u32 gMonFrontPic_GiratinaAltered[] = INCBIN_U32("graphics/pokemon/giratina/anim_front.4bpp.lz"); const u32 gMonFrontPic_Cresselia[] = INCBIN_U32("graphics/pokemon/cresselia/anim_front.4bpp.lz"); const u32 gMonFrontPic_Phione[] = INCBIN_U32("graphics/pokemon/phione/anim_front.4bpp.lz"); const u32 gMonFrontPic_Manaphy[] = INCBIN_U32("graphics/pokemon/manaphy/anim_front.4bpp.lz"); const u32 gMonFrontPic_Darkrai[] = INCBIN_U32("graphics/pokemon/darkrai/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Shaymin[] = INCBIN_U32("graphics/pokemon/shaymin/anim_front.4bpp.lz"); +const u32 gMonFrontPic_ShayminLand[] = INCBIN_U32("graphics/pokemon/shaymin/anim_front.4bpp.lz"); const u32 gMonFrontPic_Arceus[] = INCBIN_U32("graphics/pokemon/arceus/anim_front.4bpp.lz"); #endif #if P_GEN_5_POKEMON == TRUE @@ -641,12 +641,12 @@ const u32 gMonFrontPic_Cottonee[] = INCBIN_U32("graphics/pokemon/cottonee/anim_f const u32 gMonFrontPic_Whimsicott[] = INCBIN_U32("graphics/pokemon/whimsicott/anim_front.4bpp.lz"); const u32 gMonFrontPic_Petilil[] = INCBIN_U32("graphics/pokemon/petilil/anim_front.4bpp.lz"); const u32 gMonFrontPic_Lilligant[] = INCBIN_U32("graphics/pokemon/lilligant/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Basculin[] = INCBIN_U32("graphics/pokemon/basculin/anim_front.4bpp.lz"); +const u32 gMonFrontPic_BasculinRedStriped[] = INCBIN_U32("graphics/pokemon/basculin/anim_front.4bpp.lz"); const u32 gMonFrontPic_Sandile[] = INCBIN_U32("graphics/pokemon/sandile/anim_front.4bpp.lz"); const u32 gMonFrontPic_Krokorok[] = INCBIN_U32("graphics/pokemon/krokorok/anim_front.4bpp.lz"); const u32 gMonFrontPic_Krookodile[] = INCBIN_U32("graphics/pokemon/krookodile/anim_front.4bpp.lz"); const u32 gMonFrontPic_Darumaka[] = INCBIN_U32("graphics/pokemon/darumaka/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Darmanitan[] = INCBIN_U32("graphics/pokemon/darmanitan/anim_front.4bpp.lz"); +const u32 gMonFrontPic_DarmanitanStandardMode[] = INCBIN_U32("graphics/pokemon/darmanitan/anim_front.4bpp.lz"); const u32 gMonFrontPic_Maractus[] = INCBIN_U32("graphics/pokemon/maractus/anim_front.4bpp.lz"); const u32 gMonFrontPic_Dwebble[] = INCBIN_U32("graphics/pokemon/dwebble/anim_front.4bpp.lz"); const u32 gMonFrontPic_Crustle[] = INCBIN_U32("graphics/pokemon/crustle/anim_front.4bpp.lz"); @@ -677,7 +677,7 @@ const u32 gMonFrontPic_Vanillite[] = INCBIN_U32("graphics/pokemon/vanillite/anim const u32 gMonFrontPic_Vanillish[] = INCBIN_U32("graphics/pokemon/vanillish/anim_front.4bpp.lz"); const u32 gMonFrontPic_Vanilluxe[] = INCBIN_U32("graphics/pokemon/vanilluxe/anim_front.4bpp.lz"); const u32 gMonFrontPic_Deerling[] = INCBIN_U32("graphics/pokemon/deerling/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Sawsbuck[] = INCBIN_U32("graphics/pokemon/sawsbuck/anim_front.4bpp.lz"); +const u32 gMonFrontPic_SawsbuckSpring[] = INCBIN_U32("graphics/pokemon/sawsbuck/anim_front.4bpp.lz"); const u32 gMonFrontPic_Emolga[] = INCBIN_U32("graphics/pokemon/emolga/anim_front.4bpp.lz"); const u32 gMonFrontPic_Karrablast[] = INCBIN_U32("graphics/pokemon/karrablast/anim_front.4bpp.lz"); const u32 gMonFrontPic_Escavalier[] = INCBIN_U32("graphics/pokemon/escavalier/anim_front.4bpp.lz"); @@ -734,14 +734,14 @@ const u32 gMonFrontPic_Volcarona[] = INCBIN_U32("graphics/pokemon/volcarona/anim const u32 gMonFrontPic_Cobalion[] = INCBIN_U32("graphics/pokemon/cobalion/anim_front.4bpp.lz"); const u32 gMonFrontPic_Terrakion[] = INCBIN_U32("graphics/pokemon/terrakion/anim_front.4bpp.lz"); const u32 gMonFrontPic_Virizion[] = INCBIN_U32("graphics/pokemon/virizion/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Tornadus[] = INCBIN_U32("graphics/pokemon/tornadus/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Thundurus[] = INCBIN_U32("graphics/pokemon/thundurus/anim_front.4bpp.lz"); +const u32 gMonFrontPic_TornadusIncarnate[] = INCBIN_U32("graphics/pokemon/tornadus/anim_front.4bpp.lz"); +const u32 gMonFrontPic_ThundurusIncarnate[] = INCBIN_U32("graphics/pokemon/thundurus/anim_front.4bpp.lz"); const u32 gMonFrontPic_Reshiram[] = INCBIN_U32("graphics/pokemon/reshiram/anim_front.4bpp.lz"); const u32 gMonFrontPic_Zekrom[] = INCBIN_U32("graphics/pokemon/zekrom/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Landorus[] = INCBIN_U32("graphics/pokemon/landorus/anim_front.4bpp.lz"); +const u32 gMonFrontPic_LandorusIncarnate[] = INCBIN_U32("graphics/pokemon/landorus/anim_front.4bpp.lz"); const u32 gMonFrontPic_Kyurem[] = INCBIN_U32("graphics/pokemon/kyurem/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Keldeo[] = INCBIN_U32("graphics/pokemon/keldeo/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Meloetta[] = INCBIN_U32("graphics/pokemon/meloetta/anim_front.4bpp.lz"); +const u32 gMonFrontPic_KeldeoOrdinary[] = INCBIN_U32("graphics/pokemon/keldeo/anim_front.4bpp.lz"); +const u32 gMonFrontPic_MeloettaAria[] = INCBIN_U32("graphics/pokemon/meloetta/anim_front.4bpp.lz"); const u32 gMonFrontPic_Genesect[] = INCBIN_U32("graphics/pokemon/genesect/anim_front.4bpp.lz"); #endif #if P_GEN_6_POKEMON == TRUE @@ -761,7 +761,7 @@ const u32 gMonFrontPic_Fletchinder[] = INCBIN_U32("graphics/pokemon/fletchinder/ const u32 gMonFrontPic_Talonflame[] = INCBIN_U32("graphics/pokemon/talonflame/anim_front.4bpp.lz"); const u32 gMonFrontPic_Scatterbug[] = INCBIN_U32("graphics/pokemon/scatterbug/anim_front.4bpp.lz"); const u32 gMonFrontPic_Spewpa[] = INCBIN_U32("graphics/pokemon/spewpa/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Vivillon[] = INCBIN_U32("graphics/pokemon/vivillon/anim_front.4bpp.lz"); +const u32 gMonFrontPic_VivillonIcySnow[] = INCBIN_U32("graphics/pokemon/vivillon/anim_front.4bpp.lz"); const u32 gMonFrontPic_Litleo[] = INCBIN_U32("graphics/pokemon/litleo/anim_front.4bpp.lz"); const u32 gMonFrontPic_Pyroar[] = INCBIN_U32("graphics/pokemon/pyroar/anim_front.4bpp.lz"); const u32 gMonFrontPic_PyroarF[] = INCBIN_U32("graphics/pokemon/pyroar/anim_frontf.4bpp.lz"); @@ -772,12 +772,12 @@ const u32 gMonFrontPic_Skiddo[] = INCBIN_U32("graphics/pokemon/skiddo/anim_front const u32 gMonFrontPic_Gogoat[] = INCBIN_U32("graphics/pokemon/gogoat/anim_front.4bpp.lz"); const u32 gMonFrontPic_Pancham[] = INCBIN_U32("graphics/pokemon/pancham/anim_front.4bpp.lz"); const u32 gMonFrontPic_Pangoro[] = INCBIN_U32("graphics/pokemon/pangoro/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Furfrou[] = INCBIN_U32("graphics/pokemon/furfrou/anim_front.4bpp.lz"); +const u32 gMonFrontPic_FurfrouNatural[] = INCBIN_U32("graphics/pokemon/furfrou/anim_front.4bpp.lz"); const u32 gMonFrontPic_Espurr[] = INCBIN_U32("graphics/pokemon/espurr/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Meowstic[] = INCBIN_U32("graphics/pokemon/meowstic/anim_front.4bpp.lz"); +const u32 gMonFrontPic_MeowsticMale[] = INCBIN_U32("graphics/pokemon/meowstic/anim_front.4bpp.lz"); const u32 gMonFrontPic_Honedge[] = INCBIN_U32("graphics/pokemon/honedge/anim_front.4bpp.lz"); const u32 gMonFrontPic_Doublade[] = INCBIN_U32("graphics/pokemon/doublade/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Aegislash[] = INCBIN_U32("graphics/pokemon/aegislash/anim_front.4bpp.lz"); +const u32 gMonFrontPic_AegislashShield[] = INCBIN_U32("graphics/pokemon/aegislash/anim_front.4bpp.lz"); const u32 gMonFrontPic_Spritzee[] = INCBIN_U32("graphics/pokemon/spritzee/anim_front.4bpp.lz"); const u32 gMonFrontPic_Aromatisse[] = INCBIN_U32("graphics/pokemon/aromatisse/anim_front.4bpp.lz"); const u32 gMonFrontPic_Swirlix[] = INCBIN_U32("graphics/pokemon/swirlix/anim_front.4bpp.lz"); @@ -806,17 +806,17 @@ const u32 gMonFrontPic_Goodra[] = INCBIN_U32("graphics/pokemon/goodra/anim_front const u32 gMonFrontPic_Klefki[] = INCBIN_U32("graphics/pokemon/klefki/anim_front.4bpp.lz"); const u32 gMonFrontPic_Phantump[] = INCBIN_U32("graphics/pokemon/phantump/anim_front.4bpp.lz"); const u32 gMonFrontPic_Trevenant[] = INCBIN_U32("graphics/pokemon/trevenant/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Pumpkaboo[] = INCBIN_U32("graphics/pokemon/pumpkaboo/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Gourgeist[] = INCBIN_U32("graphics/pokemon/gourgeist/anim_front.4bpp.lz"); +const u32 gMonFrontPic_PumpkabooAverage[] = INCBIN_U32("graphics/pokemon/pumpkaboo/anim_front.4bpp.lz"); +const u32 gMonFrontPic_GourgeistAverage[] = INCBIN_U32("graphics/pokemon/gourgeist/anim_front.4bpp.lz"); const u32 gMonFrontPic_Bergmite[] = INCBIN_U32("graphics/pokemon/bergmite/anim_front.4bpp.lz"); const u32 gMonFrontPic_Avalugg[] = INCBIN_U32("graphics/pokemon/avalugg/anim_front.4bpp.lz"); const u32 gMonFrontPic_Noibat[] = INCBIN_U32("graphics/pokemon/noibat/anim_front.4bpp.lz"); const u32 gMonFrontPic_Noivern[] = INCBIN_U32("graphics/pokemon/noivern/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Xerneas[] = INCBIN_U32("graphics/pokemon/xerneas/front.4bpp.lz"); +const u32 gMonFrontPic_XerneasNeutral[] = INCBIN_U32("graphics/pokemon/xerneas/front.4bpp.lz"); const u32 gMonFrontPic_Yveltal[] = INCBIN_U32("graphics/pokemon/yveltal/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Zygarde[] = INCBIN_U32("graphics/pokemon/zygarde/anim_front.4bpp.lz"); +const u32 gMonFrontPic_Zygarde50[] = INCBIN_U32("graphics/pokemon/zygarde/anim_front.4bpp.lz"); const u32 gMonFrontPic_Diancie[] = INCBIN_U32("graphics/pokemon/diancie/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Hoopa[] = INCBIN_U32("graphics/pokemon/hoopa/anim_front.4bpp.lz"); +const u32 gMonFrontPic_HoopaConfined[] = INCBIN_U32("graphics/pokemon/hoopa/anim_front.4bpp.lz"); const u32 gMonFrontPic_Volcanion[] = INCBIN_U32("graphics/pokemon/volcanion/anim_front.4bpp.lz"); #endif #if P_GEN_7_POKEMON == TRUE @@ -839,12 +839,12 @@ const u32 gMonFrontPic_Charjabug[] = INCBIN_U32("graphics/pokemon/charjabug/anim const u32 gMonFrontPic_Vikavolt[] = INCBIN_U32("graphics/pokemon/vikavolt/anim_front.4bpp.lz"); const u32 gMonFrontPic_Crabrawler[] = INCBIN_U32("graphics/pokemon/crabrawler/front.4bpp.lz"); const u32 gMonFrontPic_Crabominable[] = INCBIN_U32("graphics/pokemon/crabominable/front.4bpp.lz"); -const u32 gMonFrontPic_Oricorio[] = INCBIN_U32("graphics/pokemon/oricorio/front.4bpp.lz"); +const u32 gMonFrontPic_OricorioBaile[] = INCBIN_U32("graphics/pokemon/oricorio/front.4bpp.lz"); const u32 gMonFrontPic_Cutiefly[] = INCBIN_U32("graphics/pokemon/cutiefly/front.4bpp.lz"); const u32 gMonFrontPic_Ribombee[] = INCBIN_U32("graphics/pokemon/ribombee/front.4bpp.lz"); const u32 gMonFrontPic_Rockruff[] = INCBIN_U32("graphics/pokemon/rockruff/front.4bpp.lz"); -const u32 gMonFrontPic_Lycanroc[] = INCBIN_U32("graphics/pokemon/lycanroc/front.4bpp.lz"); -const u32 gMonFrontPic_Wishiwashi[] = INCBIN_U32("graphics/pokemon/wishiwashi/front.4bpp.lz"); +const u32 gMonFrontPic_LycanrocMidday[] = INCBIN_U32("graphics/pokemon/lycanroc/front.4bpp.lz"); +const u32 gMonFrontPic_WishiwashiSolo[] = INCBIN_U32("graphics/pokemon/wishiwashi/front.4bpp.lz"); const u32 gMonFrontPic_Mareanie[] = INCBIN_U32("graphics/pokemon/mareanie/front.4bpp.lz"); const u32 gMonFrontPic_Toxapex[] = INCBIN_U32("graphics/pokemon/toxapex/front.4bpp.lz"); const u32 gMonFrontPic_Mudbray[] = INCBIN_U32("graphics/pokemon/mudbray/front.4bpp.lz"); @@ -872,11 +872,11 @@ const u32 gMonFrontPic_Palossand[] = INCBIN_U32("graphics/pokemon/palossand/fron const u32 gMonFrontPic_Pyukumuku[] = INCBIN_U32("graphics/pokemon/pyukumuku/anim_front.4bpp.lz"); const u32 gMonFrontPic_TypeNull[] = INCBIN_U32("graphics/pokemon/type_null/front.4bpp.lz"); const u32 gMonFrontPic_Silvally[] = INCBIN_U32("graphics/pokemon/silvally/front.4bpp.lz"); -const u32 gMonFrontPic_Minior[] = INCBIN_U32("graphics/pokemon/minior/front.4bpp.lz"); +const u32 gMonFrontPic_MiniorMeteor[] = INCBIN_U32("graphics/pokemon/minior/front.4bpp.lz"); const u32 gMonFrontPic_Komala[] = INCBIN_U32("graphics/pokemon/komala/front.4bpp.lz"); const u32 gMonFrontPic_Turtonator[] = INCBIN_U32("graphics/pokemon/turtonator/anim_front.4bpp.lz"); const u32 gMonFrontPic_Togedemaru[] = INCBIN_U32("graphics/pokemon/togedemaru/front.4bpp.lz"); -const u32 gMonFrontPic_Mimikyu[] = INCBIN_U32("graphics/pokemon/mimikyu/front.4bpp.lz"); +const u32 gMonFrontPic_MimikyuDisguised[] = INCBIN_U32("graphics/pokemon/mimikyu/front.4bpp.lz"); const u32 gMonFrontPic_Bruxish[] = INCBIN_U32("graphics/pokemon/bruxish/front.4bpp.lz"); const u32 gMonFrontPic_Drampa[] = INCBIN_U32("graphics/pokemon/drampa/front.4bpp.lz"); const u32 gMonFrontPic_Dhelmise[] = INCBIN_U32("graphics/pokemon/dhelmise/front.4bpp.lz"); @@ -949,7 +949,7 @@ const u32 gMonFrontPic_Cramorant[] = INCBIN_U32("graphics/pokemon/cramorant/fron const u32 gMonFrontPic_Arrokuda[] = INCBIN_U32("graphics/pokemon/arrokuda/front.4bpp.lz"); const u32 gMonFrontPic_Barraskewda[] = INCBIN_U32("graphics/pokemon/barraskewda/front.4bpp.lz"); const u32 gMonFrontPic_Toxel[] = INCBIN_U32("graphics/pokemon/toxel/front.4bpp.lz"); -const u32 gMonFrontPic_Toxtricity[] = INCBIN_U32("graphics/pokemon/toxtricity/front.4bpp.lz"); +const u32 gMonFrontPic_ToxtricityAmped[] = INCBIN_U32("graphics/pokemon/toxtricity/front.4bpp.lz"); const u32 gMonFrontPic_Sizzlipede[] = INCBIN_U32("graphics/pokemon/sizzlipede/anim_front.4bpp.lz"); const u32 gMonFrontPic_Centiskorch[] = INCBIN_U32("graphics/pokemon/centiskorch/anim_front.4bpp.lz"); const u32 gMonFrontPic_Clobbopus[] = INCBIN_U32("graphics/pokemon/clobbopus/front.4bpp.lz"); @@ -975,9 +975,9 @@ const u32 gMonFrontPic_Pincurchin[] = INCBIN_U32("graphics/pokemon/pincurchin/an const u32 gMonFrontPic_Snom[] = INCBIN_U32("graphics/pokemon/snom/front.4bpp.lz"); const u32 gMonFrontPic_Frosmoth[] = INCBIN_U32("graphics/pokemon/frosmoth/front.4bpp.lz"); const u32 gMonFrontPic_Stonjourner[] = INCBIN_U32("graphics/pokemon/stonjourner/front.4bpp.lz"); -const u32 gMonFrontPic_Eiscue[] = INCBIN_U32("graphics/pokemon/eiscue/front.4bpp.lz"); -const u32 gMonFrontPic_Indeedee[] = INCBIN_U32("graphics/pokemon/indeedee/front.4bpp.lz"); -const u32 gMonFrontPic_Morpeko[] = INCBIN_U32("graphics/pokemon/morpeko/front.4bpp.lz"); +const u32 gMonFrontPic_EiscueFace[] = INCBIN_U32("graphics/pokemon/eiscue/front.4bpp.lz"); +const u32 gMonFrontPic_IndeedeeMale[] = INCBIN_U32("graphics/pokemon/indeedee/front.4bpp.lz"); +const u32 gMonFrontPic_MorpekoFullBelly[] = INCBIN_U32("graphics/pokemon/morpeko/front.4bpp.lz"); const u32 gMonFrontPic_Cufant[] = INCBIN_U32("graphics/pokemon/cufant/front.4bpp.lz"); const u32 gMonFrontPic_Copperajah[] = INCBIN_U32("graphics/pokemon/copperajah/front.4bpp.lz"); const u32 gMonFrontPic_Dracozolt[] = INCBIN_U32("graphics/pokemon/dracozolt/front.4bpp.lz"); @@ -988,11 +988,11 @@ const u32 gMonFrontPic_Duraludon[] = INCBIN_U32("graphics/pokemon/duraludon/fron const u32 gMonFrontPic_Dreepy[] = INCBIN_U32("graphics/pokemon/dreepy/front.4bpp.lz"); const u32 gMonFrontPic_Drakloak[] = INCBIN_U32("graphics/pokemon/drakloak/front.4bpp.lz"); const u32 gMonFrontPic_Dragapult[] = INCBIN_U32("graphics/pokemon/dragapult/front.4bpp.lz"); -const u32 gMonFrontPic_Zacian[] = INCBIN_U32("graphics/pokemon/zacian/front.4bpp.lz"); -const u32 gMonFrontPic_Zamazenta[] = INCBIN_U32("graphics/pokemon/zamazenta/front.4bpp.lz"); +const u32 gMonFrontPic_ZacianHeroOfManyBattles[] = INCBIN_U32("graphics/pokemon/zacian/front.4bpp.lz"); +const u32 gMonFrontPic_ZamazentaHeroOfManyBattles[] = INCBIN_U32("graphics/pokemon/zamazenta/front.4bpp.lz"); const u32 gMonFrontPic_Eternatus[] = INCBIN_U32("graphics/pokemon/eternatus/front.4bpp.lz"); const u32 gMonFrontPic_Kubfu[] = INCBIN_U32("graphics/pokemon/kubfu/front.4bpp.lz"); -const u32 gMonFrontPic_Urshifu[] = INCBIN_U32("graphics/pokemon/urshifu/front.4bpp.lz"); +const u32 gMonFrontPic_UrshifuSingleStrikeStyle[] = INCBIN_U32("graphics/pokemon/urshifu/front.4bpp.lz"); const u32 gMonFrontPic_Zarude[] = INCBIN_U32("graphics/pokemon/zarude/front.4bpp.lz"); const u32 gMonFrontPic_Regieleki[] = INCBIN_U32("graphics/pokemon/regieleki/front.4bpp.lz"); const u32 gMonFrontPic_Regidrago[] = INCBIN_U32("graphics/pokemon/regidrago/front.4bpp.lz"); @@ -1002,10 +1002,10 @@ const u32 gMonFrontPic_Calyrex[] = INCBIN_U32("graphics/pokemon/calyrex/front.4b const u32 gMonFrontPic_Wyrdeer[] = INCBIN_U32("graphics/pokemon/wyrdeer/front.4bpp.lz"); const u32 gMonFrontPic_Kleavor[] = INCBIN_U32("graphics/pokemon/kleavor/front.4bpp.lz"); const u32 gMonFrontPic_Ursaluna[] = INCBIN_U32("graphics/pokemon/ursaluna/front.4bpp.lz"); -const u32 gMonFrontPic_Basculegion[] = INCBIN_U32("graphics/pokemon/basculegion/front.4bpp.lz"); +const u32 gMonFrontPic_BasculegionMale[] = INCBIN_U32("graphics/pokemon/basculegion/front.4bpp.lz"); const u32 gMonFrontPic_Sneasler[] = INCBIN_U32("graphics/pokemon/sneasler/front.4bpp.lz"); const u32 gMonFrontPic_Overqwil[] = INCBIN_U32("graphics/pokemon/overqwil/front.4bpp.lz"); -const u32 gMonFrontPic_Enamorus[] = INCBIN_U32("graphics/pokemon/enamorus/front.4bpp.lz"); +const u32 gMonFrontPic_EnamorusIncarnate[] = INCBIN_U32("graphics/pokemon/enamorus/front.4bpp.lz"); #endif const u32 gMonFrontPic_VenusaurMega[] = INCBIN_U32("graphics/pokemon/venusaur/mega/front.4bpp.lz"); const u32 gMonFrontPic_CharizardMegaX[] = INCBIN_U32("graphics/pokemon/charizard/mega_x/front.4bpp.lz"); @@ -1098,7 +1098,7 @@ const u32 gMonFrontPic_ZigzagoonGalarian[] = INCBIN_U32("graphics/pokemon/zigzag const u32 gMonFrontPic_LinooneGalarian[] = INCBIN_U32("graphics/pokemon/linoone/galarian/front.4bpp.lz"); #if P_GEN_5_POKEMON == TRUE const u32 gMonFrontPic_DarumakaGalarian[] = INCBIN_U32("graphics/pokemon/darumaka/galarian/front.4bpp.lz"); -const u32 gMonFrontPic_DarmanitanGalarian[] = INCBIN_U32("graphics/pokemon/darmanitan/galarian/front.4bpp.lz"); +const u32 gMonFrontPic_DarmanitanGalarianStandardMode[] = INCBIN_U32("graphics/pokemon/darmanitan/galarian/front.4bpp.lz"); const u32 gMonFrontPic_YamaskGalarian[] = INCBIN_U32("graphics/pokemon/yamask/galarian/front.4bpp.lz"); const u32 gMonFrontPic_StunfiskGalarian[] = INCBIN_U32("graphics/pokemon/stunfisk/galarian/front.4bpp.lz"); #endif @@ -1195,7 +1195,7 @@ const u32 gMonFrontPic_ShayminSky[] = INCBIN_U32("graphics/pokemon/shaymin/sky/a const u32 gMonFrontPic_BasculinBlueStriped[] = INCBIN_U32("graphics/pokemon/basculin/blue_striped/front.4bpp.lz"); const u32 gMonFrontPic_BasculinWhiteStriped[] = INCBIN_U32("graphics/pokemon/basculin/white_striped/front.4bpp.lz"); const u32 gMonFrontPic_DarmanitanZenMode[] = INCBIN_U32("graphics/pokemon/darmanitan/zen_mode/anim_front.4bpp.lz"); -const u32 gMonFrontPic_DarmanitanZenModeGalarian[] = INCBIN_U32("graphics/pokemon/darmanitan/zen_mode/galarian/front.4bpp.lz"); +const u32 gMonFrontPic_DarmanitanGalarianZenMode[] = INCBIN_U32("graphics/pokemon/darmanitan/zen_mode/galarian/front.4bpp.lz"); const u32 gMonFrontPic_SawsbuckSummer[] = INCBIN_U32("graphics/pokemon/sawsbuck/summer/front.4bpp.lz"); const u32 gMonFrontPic_SawsbuckAutumn[] = INCBIN_U32("graphics/pokemon/sawsbuck/autumn/front.4bpp.lz"); const u32 gMonFrontPic_SawsbuckWinter[] = INCBIN_U32("graphics/pokemon/sawsbuck/winter/front.4bpp.lz"); @@ -1320,7 +1320,7 @@ const u32 gMonFrontPic_GrimmsnarlGigantamax[] = INCBIN_U32("graphics/pokemon/gri const u32 gMonFrontPic_AlcremieGigantamax[] = INCBIN_U32("graphics/pokemon/alcremie/gigantamax/front.4bpp.lz"); const u32 gMonFrontPic_CopperajahGigantamax[] = INCBIN_U32("graphics/pokemon/copperajah/gigantamax/front.4bpp.lz"); const u32 gMonFrontPic_DuraludonGigantamax[] = INCBIN_U32("graphics/pokemon/duraludon/gigantamax/front.4bpp.lz"); -const u32 gMonFrontPic_UrshifuGigantamax[] = INCBIN_U32("graphics/pokemon/urshifu/single_strike_style_gigantamax/front.4bpp.lz"); +const u32 gMonFrontPic_UrshifuSingleStrikeGigantamax[] = INCBIN_U32("graphics/pokemon/urshifu/single_strike_style_gigantamax/front.4bpp.lz"); const u32 gMonFrontPic_UrshifuRapidStrikeGigantamax[] = INCBIN_U32("graphics/pokemon/urshifu/rapid_strike_style_gigantamax/front.4bpp.lz"); #endif const u32 gMonFrontPic_Egg[] = INCBIN_U32("graphics/pokemon/egg/anim_front.4bpp.lz"); @@ -1734,7 +1734,7 @@ const u32 gMonBackPic_Armaldo[] = INCBIN_U32("graphics/pokemon/armaldo/back.4bpp const u32 gMonBackPic_Feebas[] = INCBIN_U32("graphics/pokemon/feebas/back.4bpp.lz"); const u32 gMonBackPic_Milotic[] = INCBIN_U32("graphics/pokemon/milotic/back.4bpp.lz"); const u32 gMonBackPic_MiloticF[] = INCBIN_U32("graphics/pokemon/milotic/backf.4bpp.lz"); -const u32 gMonBackPic_Castform[] = INCBIN_U32("graphics/pokemon/castform/back.4bpp.lz"); +const u32 gMonBackPic_CastformNormal[] = INCBIN_U32("graphics/pokemon/castform/back.4bpp.lz"); const u32 gMonBackPic_Kecleon[] = INCBIN_U32("graphics/pokemon/kecleon/back.4bpp.lz"); const u32 gMonBackPic_Shuppet[] = INCBIN_U32("graphics/pokemon/shuppet/back.4bpp.lz"); const u32 gMonBackPic_Banette[] = INCBIN_U32("graphics/pokemon/banette/back.4bpp.lz"); @@ -1770,7 +1770,7 @@ const u32 gMonBackPic_Kyogre[] = INCBIN_U32("graphics/pokemon/kyogre/back.4bpp.l const u32 gMonBackPic_Groudon[] = INCBIN_U32("graphics/pokemon/groudon/back.4bpp.lz"); const u32 gMonBackPic_Rayquaza[] = INCBIN_U32("graphics/pokemon/rayquaza/back.4bpp.lz"); const u32 gMonBackPic_Jirachi[] = INCBIN_U32("graphics/pokemon/jirachi/back.4bpp.lz"); -const u32 gMonBackPic_Deoxys[] = INCBIN_U32("graphics/pokemon/deoxys/back.4bpp.lz"); +const u32 gMonBackPic_DeoxysNormal[] = INCBIN_U32("graphics/pokemon/deoxys/back.4bpp.lz"); #if P_GEN_4_POKEMON == TRUE const u32 gMonBackPic_Turtwig[] = INCBIN_U32("graphics/pokemon/turtwig/back.4bpp.lz"); const u32 gMonBackPic_Grotle[] = INCBIN_U32("graphics/pokemon/grotle/back.4bpp.lz"); @@ -1806,8 +1806,8 @@ const u32 gMonBackPic_Cranidos[] = INCBIN_U32("graphics/pokemon/cranidos/back.4b const u32 gMonBackPic_Rampardos[] = INCBIN_U32("graphics/pokemon/rampardos/back.4bpp.lz"); const u32 gMonBackPic_Shieldon[] = INCBIN_U32("graphics/pokemon/shieldon/back.4bpp.lz"); const u32 gMonBackPic_Bastiodon[] = INCBIN_U32("graphics/pokemon/bastiodon/back.4bpp.lz"); -const u32 gMonBackPic_Burmy[] = INCBIN_U32("graphics/pokemon/burmy/back.4bpp.lz"); -const u32 gMonBackPic_Wormadam[] = INCBIN_U32("graphics/pokemon/wormadam/back.4bpp.lz"); +const u32 gMonBackPic_BurmyPlantCloak[] = INCBIN_U32("graphics/pokemon/burmy/back.4bpp.lz"); +const u32 gMonBackPic_WormadamPlantCloak[] = INCBIN_U32("graphics/pokemon/wormadam/back.4bpp.lz"); const u32 gMonBackPic_Mothim[] = INCBIN_U32("graphics/pokemon/mothim/back.4bpp.lz"); const u32 gMonBackPic_Combee[] = INCBIN_U32("graphics/pokemon/combee/back.4bpp.lz"); const u32 gMonBackPic_Vespiquen[] = INCBIN_U32("graphics/pokemon/vespiquen/back.4bpp.lz"); @@ -1817,9 +1817,9 @@ const u32 gMonBackPic_BuizelF[] = INCBIN_U32("graphics/pokemon/buizel/backf.4bpp const u32 gMonBackPic_Floatzel[] = INCBIN_U32("graphics/pokemon/floatzel/back.4bpp.lz"); const u32 gMonBackPic_FloatzelF[] = INCBIN_U32("graphics/pokemon/floatzel/backf.4bpp.lz"); const u32 gMonBackPic_Cherubi[] = INCBIN_U32("graphics/pokemon/cherubi/back.4bpp.lz"); -const u32 gMonBackPic_Cherrim[] = INCBIN_U32("graphics/pokemon/cherrim/normal/back.4bpp.lz"); -const u32 gMonBackPic_Shellos[] = INCBIN_U32("graphics/pokemon/shellos/back.4bpp.lz"); -const u32 gMonBackPic_Gastrodon[] = INCBIN_U32("graphics/pokemon/gastrodon/back.4bpp.lz"); +const u32 gMonBackPic_CherrimOvercast[] = INCBIN_U32("graphics/pokemon/cherrim/back.4bpp.lz"); +const u32 gMonBackPic_ShellosWestSea[] = INCBIN_U32("graphics/pokemon/shellos/back.4bpp.lz"); +const u32 gMonBackPic_GastrodonWestSea[] = INCBIN_U32("graphics/pokemon/gastrodon/back.4bpp.lz"); const u32 gMonBackPic_Ambipom[] = INCBIN_U32("graphics/pokemon/ambipom/back.4bpp.lz"); const u32 gMonBackPic_AmbipomF[] = INCBIN_U32("graphics/pokemon/ambipom/backf.4bpp.lz"); const u32 gMonBackPic_Drifloon[] = INCBIN_U32("graphics/pokemon/drifloon/back.4bpp.lz"); @@ -1893,12 +1893,12 @@ const u32 gMonBackPic_Dialga[] = INCBIN_U32("graphics/pokemon/dialga/back.4bpp.l const u32 gMonBackPic_Palkia[] = INCBIN_U32("graphics/pokemon/palkia/back.4bpp.lz"); const u32 gMonBackPic_Heatran[] = INCBIN_U32("graphics/pokemon/heatran/back.4bpp.lz"); const u32 gMonBackPic_Regigigas[] = INCBIN_U32("graphics/pokemon/regigigas/back.4bpp.lz"); -const u32 gMonBackPic_Giratina[] = INCBIN_U32("graphics/pokemon/giratina/back.4bpp.lz"); +const u32 gMonBackPic_GiratinaAltered[] = INCBIN_U32("graphics/pokemon/giratina/back.4bpp.lz"); const u32 gMonBackPic_Cresselia[] = INCBIN_U32("graphics/pokemon/cresselia/back.4bpp.lz"); const u32 gMonBackPic_Phione[] = INCBIN_U32("graphics/pokemon/phione/back.4bpp.lz"); const u32 gMonBackPic_Manaphy[] = INCBIN_U32("graphics/pokemon/manaphy/back.4bpp.lz"); const u32 gMonBackPic_Darkrai[] = INCBIN_U32("graphics/pokemon/darkrai/back.4bpp.lz"); -const u32 gMonBackPic_Shaymin[] = INCBIN_U32("graphics/pokemon/shaymin/back.4bpp.lz"); +const u32 gMonBackPic_ShayminLand[] = INCBIN_U32("graphics/pokemon/shaymin/back.4bpp.lz"); const u32 gMonBackPic_Arceus[] = INCBIN_U32("graphics/pokemon/arceus/back.4bpp.lz"); #endif #if P_GEN_5_POKEMON == TRUE @@ -1959,12 +1959,12 @@ const u32 gMonBackPic_Cottonee[] = INCBIN_U32("graphics/pokemon/cottonee/back.4b const u32 gMonBackPic_Whimsicott[] = INCBIN_U32("graphics/pokemon/whimsicott/back.4bpp.lz"); const u32 gMonBackPic_Petilil[] = INCBIN_U32("graphics/pokemon/petilil/back.4bpp.lz"); const u32 gMonBackPic_Lilligant[] = INCBIN_U32("graphics/pokemon/lilligant/back.4bpp.lz"); -const u32 gMonBackPic_Basculin[] = INCBIN_U32("graphics/pokemon/basculin/back.4bpp.lz"); +const u32 gMonBackPic_BasculinRedStriped[] = INCBIN_U32("graphics/pokemon/basculin/back.4bpp.lz"); const u32 gMonBackPic_Sandile[] = INCBIN_U32("graphics/pokemon/sandile/back.4bpp.lz"); const u32 gMonBackPic_Krokorok[] = INCBIN_U32("graphics/pokemon/krokorok/back.4bpp.lz"); const u32 gMonBackPic_Krookodile[] = INCBIN_U32("graphics/pokemon/krookodile/back.4bpp.lz"); const u32 gMonBackPic_Darumaka[] = INCBIN_U32("graphics/pokemon/darumaka/back.4bpp.lz"); -const u32 gMonBackPic_Darmanitan[] = INCBIN_U32("graphics/pokemon/darmanitan/back.4bpp.lz"); +const u32 gMonBackPic_DarmanitanStandardMode[] = INCBIN_U32("graphics/pokemon/darmanitan/back.4bpp.lz"); const u32 gMonBackPic_Maractus[] = INCBIN_U32("graphics/pokemon/maractus/back.4bpp.lz"); const u32 gMonBackPic_Dwebble[] = INCBIN_U32("graphics/pokemon/dwebble/back.4bpp.lz"); const u32 gMonBackPic_Crustle[] = INCBIN_U32("graphics/pokemon/crustle/back.4bpp.lz"); @@ -1995,7 +1995,7 @@ const u32 gMonBackPic_Vanillite[] = INCBIN_U32("graphics/pokemon/vanillite/back. const u32 gMonBackPic_Vanillish[] = INCBIN_U32("graphics/pokemon/vanillish/back.4bpp.lz"); const u32 gMonBackPic_Vanilluxe[] = INCBIN_U32("graphics/pokemon/vanilluxe/back.4bpp.lz"); const u32 gMonBackPic_Deerling[] = INCBIN_U32("graphics/pokemon/deerling/back.4bpp.lz"); -const u32 gMonBackPic_Sawsbuck[] = INCBIN_U32("graphics/pokemon/sawsbuck/back.4bpp.lz"); +const u32 gMonBackPic_SawsbuckSpring[] = INCBIN_U32("graphics/pokemon/sawsbuck/back.4bpp.lz"); const u32 gMonBackPic_Emolga[] = INCBIN_U32("graphics/pokemon/emolga/back.4bpp.lz"); const u32 gMonBackPic_Karrablast[] = INCBIN_U32("graphics/pokemon/karrablast/back.4bpp.lz"); const u32 gMonBackPic_Escavalier[] = INCBIN_U32("graphics/pokemon/escavalier/back.4bpp.lz"); @@ -2052,14 +2052,14 @@ const u32 gMonBackPic_Volcarona[] = INCBIN_U32("graphics/pokemon/volcarona/back. const u32 gMonBackPic_Cobalion[] = INCBIN_U32("graphics/pokemon/cobalion/back.4bpp.lz"); const u32 gMonBackPic_Terrakion[] = INCBIN_U32("graphics/pokemon/terrakion/back.4bpp.lz"); const u32 gMonBackPic_Virizion[] = INCBIN_U32("graphics/pokemon/virizion/back.4bpp.lz"); -const u32 gMonBackPic_Tornadus[] = INCBIN_U32("graphics/pokemon/tornadus/back.4bpp.lz"); -const u32 gMonBackPic_Thundurus[] = INCBIN_U32("graphics/pokemon/thundurus/back.4bpp.lz"); +const u32 gMonBackPic_TornadusIncarnate[] = INCBIN_U32("graphics/pokemon/tornadus/back.4bpp.lz"); +const u32 gMonBackPic_ThundurusIncarnate[] = INCBIN_U32("graphics/pokemon/thundurus/back.4bpp.lz"); const u32 gMonBackPic_Reshiram[] = INCBIN_U32("graphics/pokemon/reshiram/back.4bpp.lz"); const u32 gMonBackPic_Zekrom[] = INCBIN_U32("graphics/pokemon/zekrom/back.4bpp.lz"); -const u32 gMonBackPic_Landorus[] = INCBIN_U32("graphics/pokemon/landorus/back.4bpp.lz"); +const u32 gMonBackPic_LandorusIncarnate[] = INCBIN_U32("graphics/pokemon/landorus/back.4bpp.lz"); const u32 gMonBackPic_Kyurem[] = INCBIN_U32("graphics/pokemon/kyurem/back.4bpp.lz"); -const u32 gMonBackPic_Keldeo[] = INCBIN_U32("graphics/pokemon/keldeo/back.4bpp.lz"); -const u32 gMonBackPic_Meloetta[] = INCBIN_U32("graphics/pokemon/meloetta/back.4bpp.lz"); +const u32 gMonBackPic_KeldeoOrdinary[] = INCBIN_U32("graphics/pokemon/keldeo/back.4bpp.lz"); +const u32 gMonBackPic_MeloettaAria[] = INCBIN_U32("graphics/pokemon/meloetta/back.4bpp.lz"); const u32 gMonBackPic_Genesect[] = INCBIN_U32("graphics/pokemon/genesect/back.4bpp.lz"); #endif #if P_GEN_6_POKEMON == TRUE @@ -2079,7 +2079,7 @@ const u32 gMonBackPic_Fletchinder[] = INCBIN_U32("graphics/pokemon/fletchinder/b const u32 gMonBackPic_Talonflame[] = INCBIN_U32("graphics/pokemon/talonflame/back.4bpp.lz"); const u32 gMonBackPic_Scatterbug[] = INCBIN_U32("graphics/pokemon/scatterbug/back.4bpp.lz"); const u32 gMonBackPic_Spewpa[] = INCBIN_U32("graphics/pokemon/spewpa/back.4bpp.lz"); -const u32 gMonBackPic_Vivillon[] = INCBIN_U32("graphics/pokemon/vivillon/back.4bpp.lz"); +const u32 gMonBackPic_VivillonIcySnow[] = INCBIN_U32("graphics/pokemon/vivillon/back.4bpp.lz"); const u32 gMonBackPic_Litleo[] = INCBIN_U32("graphics/pokemon/litleo/back.4bpp.lz"); const u32 gMonBackPic_Pyroar[] = INCBIN_U32("graphics/pokemon/pyroar/back.4bpp.lz"); const u32 gMonBackPic_PyroarF[] = INCBIN_U32("graphics/pokemon/pyroar/backf.4bpp.lz"); @@ -2090,12 +2090,12 @@ const u32 gMonBackPic_Skiddo[] = INCBIN_U32("graphics/pokemon/skiddo/back.4bpp.l const u32 gMonBackPic_Gogoat[] = INCBIN_U32("graphics/pokemon/gogoat/back.4bpp.lz"); const u32 gMonBackPic_Pancham[] = INCBIN_U32("graphics/pokemon/pancham/back.4bpp.lz"); const u32 gMonBackPic_Pangoro[] = INCBIN_U32("graphics/pokemon/pangoro/back.4bpp.lz"); -const u32 gMonBackPic_Furfrou[] = INCBIN_U32("graphics/pokemon/furfrou/back.4bpp.lz"); +const u32 gMonBackPic_FurfrouNatural[] = INCBIN_U32("graphics/pokemon/furfrou/back.4bpp.lz"); const u32 gMonBackPic_Espurr[] = INCBIN_U32("graphics/pokemon/espurr/back.4bpp.lz"); -const u32 gMonBackPic_Meowstic[] = INCBIN_U32("graphics/pokemon/meowstic/back.4bpp.lz"); +const u32 gMonBackPic_MeowsticMale[] = INCBIN_U32("graphics/pokemon/meowstic/back.4bpp.lz"); const u32 gMonBackPic_Honedge[] = INCBIN_U32("graphics/pokemon/honedge/back.4bpp.lz"); const u32 gMonBackPic_Doublade[] = INCBIN_U32("graphics/pokemon/doublade/back.4bpp.lz"); -const u32 gMonBackPic_Aegislash[] = INCBIN_U32("graphics/pokemon/aegislash/back.4bpp.lz"); +const u32 gMonBackPic_AegislashShield[] = INCBIN_U32("graphics/pokemon/aegislash/back.4bpp.lz"); const u32 gMonBackPic_Spritzee[] = INCBIN_U32("graphics/pokemon/spritzee/back.4bpp.lz"); const u32 gMonBackPic_Aromatisse[] = INCBIN_U32("graphics/pokemon/aromatisse/back.4bpp.lz"); const u32 gMonBackPic_Swirlix[] = INCBIN_U32("graphics/pokemon/swirlix/back.4bpp.lz"); @@ -2124,17 +2124,17 @@ const u32 gMonBackPic_Goodra[] = INCBIN_U32("graphics/pokemon/goodra/back.4bpp.l const u32 gMonBackPic_Klefki[] = INCBIN_U32("graphics/pokemon/klefki/back.4bpp.lz"); const u32 gMonBackPic_Phantump[] = INCBIN_U32("graphics/pokemon/phantump/back.4bpp.lz"); const u32 gMonBackPic_Trevenant[] = INCBIN_U32("graphics/pokemon/trevenant/back.4bpp.lz"); -const u32 gMonBackPic_Pumpkaboo[] = INCBIN_U32("graphics/pokemon/pumpkaboo/back.4bpp.lz"); -const u32 gMonBackPic_Gourgeist[] = INCBIN_U32("graphics/pokemon/gourgeist/back.4bpp.lz"); +const u32 gMonBackPic_PumpkabooAverage[] = INCBIN_U32("graphics/pokemon/pumpkaboo/back.4bpp.lz"); +const u32 gMonBackPic_GourgeistAverage[] = INCBIN_U32("graphics/pokemon/gourgeist/back.4bpp.lz"); const u32 gMonBackPic_Bergmite[] = INCBIN_U32("graphics/pokemon/bergmite/back.4bpp.lz"); const u32 gMonBackPic_Avalugg[] = INCBIN_U32("graphics/pokemon/avalugg/back.4bpp.lz"); const u32 gMonBackPic_Noibat[] = INCBIN_U32("graphics/pokemon/noibat/back.4bpp.lz"); const u32 gMonBackPic_Noivern[] = INCBIN_U32("graphics/pokemon/noivern/back.4bpp.lz"); -const u32 gMonBackPic_Xerneas[] = INCBIN_U32("graphics/pokemon/xerneas/back.4bpp.lz"); +const u32 gMonBackPic_XerneasNeutral[] = INCBIN_U32("graphics/pokemon/xerneas/back.4bpp.lz"); const u32 gMonBackPic_Yveltal[] = INCBIN_U32("graphics/pokemon/yveltal/back.4bpp.lz"); -const u32 gMonBackPic_Zygarde[] = INCBIN_U32("graphics/pokemon/zygarde/back.4bpp.lz"); +const u32 gMonBackPic_Zygarde50[] = INCBIN_U32("graphics/pokemon/zygarde/back.4bpp.lz"); const u32 gMonBackPic_Diancie[] = INCBIN_U32("graphics/pokemon/diancie/back.4bpp.lz"); -const u32 gMonBackPic_Hoopa[] = INCBIN_U32("graphics/pokemon/hoopa/back.4bpp.lz"); +const u32 gMonBackPic_HoopaConfined[] = INCBIN_U32("graphics/pokemon/hoopa/back.4bpp.lz"); const u32 gMonBackPic_Volcanion[] = INCBIN_U32("graphics/pokemon/volcanion/back.4bpp.lz"); #endif #if P_GEN_7_POKEMON == TRUE @@ -2157,12 +2157,12 @@ const u32 gMonBackPic_Charjabug[] = INCBIN_U32("graphics/pokemon/charjabug/back. const u32 gMonBackPic_Vikavolt[] = INCBIN_U32("graphics/pokemon/vikavolt/back.4bpp.lz"); const u32 gMonBackPic_Crabrawler[] = INCBIN_U32("graphics/pokemon/crabrawler/back.4bpp.lz"); const u32 gMonBackPic_Crabominable[] = INCBIN_U32("graphics/pokemon/crabominable/back.4bpp.lz"); -const u32 gMonBackPic_Oricorio[] = INCBIN_U32("graphics/pokemon/oricorio/back.4bpp.lz"); +const u32 gMonBackPic_OricorioBaile[] = INCBIN_U32("graphics/pokemon/oricorio/back.4bpp.lz"); const u32 gMonBackPic_Cutiefly[] = INCBIN_U32("graphics/pokemon/cutiefly/back.4bpp.lz"); const u32 gMonBackPic_Ribombee[] = INCBIN_U32("graphics/pokemon/ribombee/back.4bpp.lz"); const u32 gMonBackPic_Rockruff[] = INCBIN_U32("graphics/pokemon/rockruff/back.4bpp.lz"); -const u32 gMonBackPic_Lycanroc[] = INCBIN_U32("graphics/pokemon/lycanroc/back.4bpp.lz"); -const u32 gMonBackPic_Wishiwashi[] = INCBIN_U32("graphics/pokemon/wishiwashi/back.4bpp.lz"); +const u32 gMonBackPic_LycanrocMidday[] = INCBIN_U32("graphics/pokemon/lycanroc/back.4bpp.lz"); +const u32 gMonBackPic_WishiwashiSolo[] = INCBIN_U32("graphics/pokemon/wishiwashi/back.4bpp.lz"); const u32 gMonBackPic_Mareanie[] = INCBIN_U32("graphics/pokemon/mareanie/back.4bpp.lz"); const u32 gMonBackPic_Toxapex[] = INCBIN_U32("graphics/pokemon/toxapex/back.4bpp.lz"); const u32 gMonBackPic_Mudbray[] = INCBIN_U32("graphics/pokemon/mudbray/back.4bpp.lz"); @@ -2190,11 +2190,11 @@ const u32 gMonBackPic_Palossand[] = INCBIN_U32("graphics/pokemon/palossand/back. const u32 gMonBackPic_Pyukumuku[] = INCBIN_U32("graphics/pokemon/pyukumuku/back.4bpp.lz"); const u32 gMonBackPic_TypeNull[] = INCBIN_U32("graphics/pokemon/type_null/back.4bpp.lz"); const u32 gMonBackPic_Silvally[] = INCBIN_U32("graphics/pokemon/silvally/back.4bpp.lz"); -const u32 gMonBackPic_Minior[] = INCBIN_U32("graphics/pokemon/minior/back.4bpp.lz"); +const u32 gMonBackPic_MiniorMeteor[] = INCBIN_U32("graphics/pokemon/minior/back.4bpp.lz"); const u32 gMonBackPic_Komala[] = INCBIN_U32("graphics/pokemon/komala/back.4bpp.lz"); const u32 gMonBackPic_Turtonator[] = INCBIN_U32("graphics/pokemon/turtonator/back.4bpp.lz"); const u32 gMonBackPic_Togedemaru[] = INCBIN_U32("graphics/pokemon/togedemaru/back.4bpp.lz"); -const u32 gMonBackPic_Mimikyu[] = INCBIN_U32("graphics/pokemon/mimikyu/back.4bpp.lz"); +const u32 gMonBackPic_MimikyuDisguised[] = INCBIN_U32("graphics/pokemon/mimikyu/back.4bpp.lz"); const u32 gMonBackPic_Bruxish[] = INCBIN_U32("graphics/pokemon/bruxish/back.4bpp.lz"); const u32 gMonBackPic_Drampa[] = INCBIN_U32("graphics/pokemon/drampa/back.4bpp.lz"); const u32 gMonBackPic_Dhelmise[] = INCBIN_U32("graphics/pokemon/dhelmise/back.4bpp.lz"); @@ -2267,7 +2267,7 @@ const u32 gMonBackPic_Cramorant[] = INCBIN_U32("graphics/pokemon/cramorant/back. const u32 gMonBackPic_Arrokuda[] = INCBIN_U32("graphics/pokemon/arrokuda/back.4bpp.lz"); const u32 gMonBackPic_Barraskewda[] = INCBIN_U32("graphics/pokemon/barraskewda/back.4bpp.lz"); const u32 gMonBackPic_Toxel[] = INCBIN_U32("graphics/pokemon/toxel/back.4bpp.lz"); -const u32 gMonBackPic_Toxtricity[] = INCBIN_U32("graphics/pokemon/toxtricity/back.4bpp.lz"); +const u32 gMonBackPic_ToxtricityAmped[] = INCBIN_U32("graphics/pokemon/toxtricity/back.4bpp.lz"); const u32 gMonBackPic_Sizzlipede[] = INCBIN_U32("graphics/pokemon/sizzlipede/back.4bpp.lz"); const u32 gMonBackPic_Centiskorch[] = INCBIN_U32("graphics/pokemon/centiskorch/back.4bpp.lz"); const u32 gMonBackPic_Clobbopus[] = INCBIN_U32("graphics/pokemon/clobbopus/back.4bpp.lz"); @@ -2293,9 +2293,9 @@ const u32 gMonBackPic_Pincurchin[] = INCBIN_U32("graphics/pokemon/pincurchin/bac const u32 gMonBackPic_Snom[] = INCBIN_U32("graphics/pokemon/snom/back.4bpp.lz"); const u32 gMonBackPic_Frosmoth[] = INCBIN_U32("graphics/pokemon/frosmoth/back.4bpp.lz"); const u32 gMonBackPic_Stonjourner[] = INCBIN_U32("graphics/pokemon/stonjourner/back.4bpp.lz"); -const u32 gMonBackPic_Eiscue[] = INCBIN_U32("graphics/pokemon/eiscue/back.4bpp.lz"); -const u32 gMonBackPic_Indeedee[] = INCBIN_U32("graphics/pokemon/indeedee/back.4bpp.lz"); -const u32 gMonBackPic_Morpeko[] = INCBIN_U32("graphics/pokemon/morpeko/back.4bpp.lz"); +const u32 gMonBackPic_EiscueIceFace[] = INCBIN_U32("graphics/pokemon/eiscue/back.4bpp.lz"); +const u32 gMonBackPic_IndeedeeMale[] = INCBIN_U32("graphics/pokemon/indeedee/back.4bpp.lz"); +const u32 gMonBackPic_MorpekoFullBelly[] = INCBIN_U32("graphics/pokemon/morpeko/back.4bpp.lz"); const u32 gMonBackPic_Cufant[] = INCBIN_U32("graphics/pokemon/cufant/back.4bpp.lz"); const u32 gMonBackPic_Copperajah[] = INCBIN_U32("graphics/pokemon/copperajah/back.4bpp.lz"); const u32 gMonBackPic_Dracozolt[] = INCBIN_U32("graphics/pokemon/dracozolt/back.4bpp.lz"); @@ -2306,11 +2306,11 @@ const u32 gMonBackPic_Duraludon[] = INCBIN_U32("graphics/pokemon/duraludon/back. const u32 gMonBackPic_Dreepy[] = INCBIN_U32("graphics/pokemon/dreepy/back.4bpp.lz"); const u32 gMonBackPic_Drakloak[] = INCBIN_U32("graphics/pokemon/drakloak/back.4bpp.lz"); const u32 gMonBackPic_Dragapult[] = INCBIN_U32("graphics/pokemon/dragapult/back.4bpp.lz"); -const u32 gMonBackPic_Zacian[] = INCBIN_U32("graphics/pokemon/zacian/back.4bpp.lz"); -const u32 gMonBackPic_Zamazenta[] = INCBIN_U32("graphics/pokemon/zamazenta/back.4bpp.lz"); +const u32 gMonBackPic_ZacianHeroOfManyBattles[] = INCBIN_U32("graphics/pokemon/zacian/back.4bpp.lz"); +const u32 gMonBackPic_ZamazentaHeroOfManyBattles[] = INCBIN_U32("graphics/pokemon/zamazenta/back.4bpp.lz"); const u32 gMonBackPic_Eternatus[] = INCBIN_U32("graphics/pokemon/eternatus/back.4bpp.lz"); const u32 gMonBackPic_Kubfu[] = INCBIN_U32("graphics/pokemon/kubfu/back.4bpp.lz"); -const u32 gMonBackPic_Urshifu[] = INCBIN_U32("graphics/pokemon/urshifu/back.4bpp.lz"); +const u32 gMonBackPic_UrshifuSingleStrikeStyle[] = INCBIN_U32("graphics/pokemon/urshifu/back.4bpp.lz"); const u32 gMonBackPic_Zarude[] = INCBIN_U32("graphics/pokemon/zarude/back.4bpp.lz"); const u32 gMonBackPic_Regieleki[] = INCBIN_U32("graphics/pokemon/regieleki/back.4bpp.lz"); const u32 gMonBackPic_Regidrago[] = INCBIN_U32("graphics/pokemon/regidrago/back.4bpp.lz"); @@ -2320,10 +2320,10 @@ const u32 gMonBackPic_Calyrex[] = INCBIN_U32("graphics/pokemon/calyrex/back.4bpp const u32 gMonBackPic_Wyrdeer[] = INCBIN_U32("graphics/pokemon/wyrdeer/back.4bpp.lz"); const u32 gMonBackPic_Kleavor[] = INCBIN_U32("graphics/pokemon/kleavor/back.4bpp.lz"); const u32 gMonBackPic_Ursaluna[] = INCBIN_U32("graphics/pokemon/ursaluna/back.4bpp.lz"); -const u32 gMonBackPic_Basculegion[] = INCBIN_U32("graphics/pokemon/basculegion/back.4bpp.lz"); +const u32 gMonBackPic_BasculegionMale[] = INCBIN_U32("graphics/pokemon/basculegion/back.4bpp.lz"); const u32 gMonBackPic_Sneasler[] = INCBIN_U32("graphics/pokemon/sneasler/back.4bpp.lz"); const u32 gMonBackPic_Overqwil[] = INCBIN_U32("graphics/pokemon/overqwil/back.4bpp.lz"); -const u32 gMonBackPic_Enamorus[] = INCBIN_U32("graphics/pokemon/enamorus/back.4bpp.lz"); +const u32 gMonBackPic_EnamorusIncarnate[] = INCBIN_U32("graphics/pokemon/enamorus/back.4bpp.lz"); #endif const u32 gMonBackPic_VenusaurMega[] = INCBIN_U32("graphics/pokemon/venusaur/mega/back.4bpp.lz"); const u32 gMonBackPic_CharizardMegaX[] = INCBIN_U32("graphics/pokemon/charizard/mega_x/back.4bpp.lz"); @@ -2416,7 +2416,7 @@ const u32 gMonBackPic_ZigzagoonGalarian[] = INCBIN_U32("graphics/pokemon/zigzago const u32 gMonBackPic_LinooneGalarian[] = INCBIN_U32("graphics/pokemon/linoone/galarian/back.4bpp.lz"); #if P_GEN_5_POKEMON == TRUE const u32 gMonBackPic_DarumakaGalarian[] = INCBIN_U32("graphics/pokemon/darumaka/galarian/back.4bpp.lz"); -const u32 gMonBackPic_DarmanitanGalarian[] = INCBIN_U32("graphics/pokemon/darmanitan/galarian/back.4bpp.lz"); +const u32 gMonBackPic_DarmanitanGalarianStandardMode[] = INCBIN_U32("graphics/pokemon/darmanitan/galarian/back.4bpp.lz"); const u32 gMonBackPic_YamaskGalarian[] = INCBIN_U32("graphics/pokemon/yamask/galarian/back.4bpp.lz"); const u32 gMonBackPic_StunfiskGalarian[] = INCBIN_U32("graphics/pokemon/stunfisk/galarian/back.4bpp.lz"); #endif @@ -2513,7 +2513,7 @@ const u32 gMonBackPic_ShayminSky[] = INCBIN_U32("graphics/pokemon/shaymin/sky/ba const u32 gMonBackPic_BasculinBlueStriped[] = INCBIN_U32("graphics/pokemon/basculin/blue_striped/back.4bpp.lz"); const u32 gMonBackPic_BasculinWhiteStriped[] = INCBIN_U32("graphics/pokemon/basculin/white_striped/back.4bpp.lz"); const u32 gMonBackPic_DarmanitanZenMode[] = INCBIN_U32("graphics/pokemon/darmanitan/zen_mode/back.4bpp.lz"); -const u32 gMonBackPic_DarmanitanZenModeGalarian[] = INCBIN_U32("graphics/pokemon/darmanitan/zen_mode/galarian/back.4bpp.lz"); +const u32 gMonBackPic_DarmanitanGalarianZenMode[] = INCBIN_U32("graphics/pokemon/darmanitan/zen_mode/galarian/back.4bpp.lz"); const u32 gMonBackPic_SawsbuckSummer[] = INCBIN_U32("graphics/pokemon/sawsbuck/summer/back.4bpp.lz"); const u32 gMonBackPic_SawsbuckAutumn[] = INCBIN_U32("graphics/pokemon/sawsbuck/autumn/back.4bpp.lz"); const u32 gMonBackPic_SawsbuckWinter[] = INCBIN_U32("graphics/pokemon/sawsbuck/winter/back.4bpp.lz"); @@ -2638,7 +2638,7 @@ const u32 gMonBackPic_GrimmsnarlGigantamax[] = INCBIN_U32("graphics/pokemon/grim const u32 gMonBackPic_AlcremieGigantamax[] = INCBIN_U32("graphics/pokemon/alcremie/gigantamax/back.4bpp.lz"); const u32 gMonBackPic_CopperajahGigantamax[] = INCBIN_U32("graphics/pokemon/copperajah/gigantamax/back.4bpp.lz"); const u32 gMonBackPic_DuraludonGigantamax[] = INCBIN_U32("graphics/pokemon/duraludon/gigantamax/back.4bpp.lz"); -const u32 gMonBackPic_UrshifuGigantamax[] = INCBIN_U32("graphics/pokemon/urshifu/single_strike_style_gigantamax/back.4bpp.lz"); +const u32 gMonBackPic_UrshifuSingleStrikeGigantamax[] = INCBIN_U32("graphics/pokemon/urshifu/single_strike_style_gigantamax/back.4bpp.lz"); const u32 gMonBackPic_UrshifuRapidStrikeGigantamax[] = INCBIN_U32("graphics/pokemon/urshifu/rapid_strike_style_gigantamax/back.4bpp.lz"); #endif @@ -2994,7 +2994,7 @@ const u32 gMonPalette_Anorith[] = INCBIN_U32("graphics/pokemon/anorith/normal.gb const u32 gMonPalette_Armaldo[] = INCBIN_U32("graphics/pokemon/armaldo/normal.gbapal.lz"); const u32 gMonPalette_Feebas[] = INCBIN_U32("graphics/pokemon/feebas/normal.gbapal.lz"); const u32 gMonPalette_Milotic[] = INCBIN_U32("graphics/pokemon/milotic/normal.gbapal.lz"); -const u32 gMonPalette_Castform[] = INCBIN_U32("graphics/pokemon/castform/normal.gbapal.lz"); +const u32 gMonPalette_CastformNormal[] = INCBIN_U32("graphics/pokemon/castform/normal.gbapal.lz"); const u32 gMonPalette_Kecleon[] = INCBIN_U32("graphics/pokemon/kecleon/normal.gbapal.lz"); const u32 gMonPalette_Shuppet[] = INCBIN_U32("graphics/pokemon/shuppet/normal.gbapal.lz"); const u32 gMonPalette_Banette[] = INCBIN_U32("graphics/pokemon/banette/normal.gbapal.lz"); @@ -3029,7 +3029,7 @@ const u32 gMonPalette_Kyogre[] = INCBIN_U32("graphics/pokemon/kyogre/normal.gbap const u32 gMonPalette_Groudon[] = INCBIN_U32("graphics/pokemon/groudon/normal.gbapal.lz"); const u32 gMonPalette_Rayquaza[] = INCBIN_U32("graphics/pokemon/rayquaza/normal.gbapal.lz"); const u32 gMonPalette_Jirachi[] = INCBIN_U32("graphics/pokemon/jirachi/normal.gbapal.lz"); -const u32 gMonPalette_Deoxys[] = INCBIN_U32("graphics/pokemon/deoxys/normal.gbapal.lz"); +const u32 gMonPalette_DeoxysNormal[] = INCBIN_U32("graphics/pokemon/deoxys/normal.gbapal.lz"); #if P_GEN_4_POKEMON == TRUE const u32 gMonPalette_Turtwig[] = INCBIN_U32("graphics/pokemon/turtwig/normal.gbapal.lz"); const u32 gMonPalette_Grotle[] = INCBIN_U32("graphics/pokemon/grotle/normal.gbapal.lz"); @@ -3056,8 +3056,8 @@ const u32 gMonPalette_Cranidos[] = INCBIN_U32("graphics/pokemon/cranidos/normal. const u32 gMonPalette_Rampardos[] = INCBIN_U32("graphics/pokemon/rampardos/normal.gbapal.lz"); const u32 gMonPalette_Shieldon[] = INCBIN_U32("graphics/pokemon/shieldon/normal.gbapal.lz"); const u32 gMonPalette_Bastiodon[] = INCBIN_U32("graphics/pokemon/bastiodon/normal.gbapal.lz"); -const u32 gMonPalette_Burmy[] = INCBIN_U32("graphics/pokemon/burmy/normal.gbapal.lz"); -const u32 gMonPalette_Wormadam[] = INCBIN_U32("graphics/pokemon/wormadam/normal.gbapal.lz"); +const u32 gMonPalette_BurmyPlantCloak[] = INCBIN_U32("graphics/pokemon/burmy/normal.gbapal.lz"); +const u32 gMonPalette_WormadamPlantCloak[] = INCBIN_U32("graphics/pokemon/wormadam/normal.gbapal.lz"); const u32 gMonPalette_Mothim[] = INCBIN_U32("graphics/pokemon/mothim/normal.gbapal.lz"); const u32 gMonPalette_Combee[] = INCBIN_U32("graphics/pokemon/combee/normal.gbapal.lz"); const u32 gMonPalette_CombeeF[] = INCBIN_U32("graphics/pokemon/combee/normalf.gbapal.lz"); @@ -3066,9 +3066,9 @@ const u32 gMonPalette_Pachirisu[] = INCBIN_U32("graphics/pokemon/pachirisu/norma const u32 gMonPalette_Buizel[] = INCBIN_U32("graphics/pokemon/buizel/normal.gbapal.lz"); const u32 gMonPalette_Floatzel[] = INCBIN_U32("graphics/pokemon/floatzel/normal.gbapal.lz"); const u32 gMonPalette_Cherubi[] = INCBIN_U32("graphics/pokemon/cherubi/normal.gbapal.lz"); -const u32 gMonPalette_Cherrim[] = INCBIN_U32("graphics/pokemon/cherrim/normal/normal.gbapal.lz"); -const u32 gMonPalette_Shellos[] = INCBIN_U32("graphics/pokemon/shellos/normal.gbapal.lz"); -const u32 gMonPalette_Gastrodon[] = INCBIN_U32("graphics/pokemon/gastrodon/normal.gbapal.lz"); +const u32 gMonPalette_CherrimOvercast[] = INCBIN_U32("graphics/pokemon/cherrim/normal.gbapal.lz"); +const u32 gMonPalette_ShellosWestSea[] = INCBIN_U32("graphics/pokemon/shellos/normal.gbapal.lz"); +const u32 gMonPalette_GastrodonWestSea[] = INCBIN_U32("graphics/pokemon/gastrodon/normal.gbapal.lz"); const u32 gMonPalette_Ambipom[] = INCBIN_U32("graphics/pokemon/ambipom/normal.gbapal.lz"); const u32 gMonPalette_Drifloon[] = INCBIN_U32("graphics/pokemon/drifloon/normal.gbapal.lz"); const u32 gMonPalette_Drifblim[] = INCBIN_U32("graphics/pokemon/drifblim/normal.gbapal.lz"); @@ -3134,12 +3134,12 @@ const u32 gMonPalette_Dialga[] = INCBIN_U32("graphics/pokemon/dialga/normal.gbap const u32 gMonPalette_Palkia[] = INCBIN_U32("graphics/pokemon/palkia/normal.gbapal.lz"); const u32 gMonPalette_Heatran[] = INCBIN_U32("graphics/pokemon/heatran/normal.gbapal.lz"); const u32 gMonPalette_Regigigas[] = INCBIN_U32("graphics/pokemon/regigigas/normal.gbapal.lz"); -const u32 gMonPalette_Giratina[] = INCBIN_U32("graphics/pokemon/giratina/normal.gbapal.lz"); +const u32 gMonPalette_GiratinaAltered[] = INCBIN_U32("graphics/pokemon/giratina/normal.gbapal.lz"); const u32 gMonPalette_Cresselia[] = INCBIN_U32("graphics/pokemon/cresselia/normal.gbapal.lz"); const u32 gMonPalette_Phione[] = INCBIN_U32("graphics/pokemon/phione/normal.gbapal.lz"); const u32 gMonPalette_Manaphy[] = INCBIN_U32("graphics/pokemon/manaphy/normal.gbapal.lz"); const u32 gMonPalette_Darkrai[] = INCBIN_U32("graphics/pokemon/darkrai/normal.gbapal.lz"); -const u32 gMonPalette_Shaymin[] = INCBIN_U32("graphics/pokemon/shaymin/normal.gbapal.lz"); +const u32 gMonPalette_ShayminLand[] = INCBIN_U32("graphics/pokemon/shaymin/normal.gbapal.lz"); const u32 gMonPalette_Arceus[] = INCBIN_U32("graphics/pokemon/arceus/normal.gbapal.lz"); #endif #if P_GEN_5_POKEMON == TRUE @@ -3200,12 +3200,12 @@ const u32 gMonPalette_Cottonee[] = INCBIN_U32("graphics/pokemon/cottonee/normal. const u32 gMonPalette_Whimsicott[] = INCBIN_U32("graphics/pokemon/whimsicott/normal.gbapal.lz"); const u32 gMonPalette_Petilil[] = INCBIN_U32("graphics/pokemon/petilil/normal.gbapal.lz"); const u32 gMonPalette_Lilligant[] = INCBIN_U32("graphics/pokemon/lilligant/normal.gbapal.lz"); -const u32 gMonPalette_Basculin[] = INCBIN_U32("graphics/pokemon/basculin/normal.gbapal.lz"); +const u32 gMonPalette_BasculinRedStriped[] = INCBIN_U32("graphics/pokemon/basculin/normal.gbapal.lz"); const u32 gMonPalette_Sandile[] = INCBIN_U32("graphics/pokemon/sandile/normal.gbapal.lz"); const u32 gMonPalette_Krokorok[] = INCBIN_U32("graphics/pokemon/krokorok/normal.gbapal.lz"); const u32 gMonPalette_Krookodile[] = INCBIN_U32("graphics/pokemon/krookodile/normal.gbapal.lz"); const u32 gMonPalette_Darumaka[] = INCBIN_U32("graphics/pokemon/darumaka/normal.gbapal.lz"); -const u32 gMonPalette_Darmanitan[] = INCBIN_U32("graphics/pokemon/darmanitan/normal.gbapal.lz"); +const u32 gMonPalette_DarmanitanStandardMode[] = INCBIN_U32("graphics/pokemon/darmanitan/normal.gbapal.lz"); const u32 gMonPalette_Maractus[] = INCBIN_U32("graphics/pokemon/maractus/normal.gbapal.lz"); const u32 gMonPalette_Dwebble[] = INCBIN_U32("graphics/pokemon/dwebble/normal.gbapal.lz"); const u32 gMonPalette_Crustle[] = INCBIN_U32("graphics/pokemon/crustle/normal.gbapal.lz"); @@ -3235,8 +3235,8 @@ const u32 gMonPalette_Swanna[] = INCBIN_U32("graphics/pokemon/swanna/normal.gbap const u32 gMonPalette_Vanillite[] = INCBIN_U32("graphics/pokemon/vanillite/normal.gbapal.lz"); const u32 gMonPalette_Vanillish[] = INCBIN_U32("graphics/pokemon/vanillish/normal.gbapal.lz"); const u32 gMonPalette_Vanilluxe[] = INCBIN_U32("graphics/pokemon/vanilluxe/normal.gbapal.lz"); -const u32 gMonPalette_Deerling[] = INCBIN_U32("graphics/pokemon/deerling/normal.gbapal.lz"); -const u32 gMonPalette_Sawsbuck[] = INCBIN_U32("graphics/pokemon/sawsbuck/normal.gbapal.lz"); +const u32 gMonPalette_DeerlingSpring[] = INCBIN_U32("graphics/pokemon/deerling/normal.gbapal.lz"); +const u32 gMonPalette_SawsbuckSpring[] = INCBIN_U32("graphics/pokemon/sawsbuck/normal.gbapal.lz"); const u32 gMonPalette_Emolga[] = INCBIN_U32("graphics/pokemon/emolga/normal.gbapal.lz"); const u32 gMonPalette_Karrablast[] = INCBIN_U32("graphics/pokemon/karrablast/normal.gbapal.lz"); const u32 gMonPalette_Escavalier[] = INCBIN_U32("graphics/pokemon/escavalier/normal.gbapal.lz"); @@ -3293,14 +3293,14 @@ const u32 gMonPalette_Volcarona[] = INCBIN_U32("graphics/pokemon/volcarona/norma const u32 gMonPalette_Cobalion[] = INCBIN_U32("graphics/pokemon/cobalion/normal.gbapal.lz"); const u32 gMonPalette_Terrakion[] = INCBIN_U32("graphics/pokemon/terrakion/normal.gbapal.lz"); const u32 gMonPalette_Virizion[] = INCBIN_U32("graphics/pokemon/virizion/normal.gbapal.lz"); -const u32 gMonPalette_Tornadus[] = INCBIN_U32("graphics/pokemon/tornadus/normal.gbapal.lz"); -const u32 gMonPalette_Thundurus[] = INCBIN_U32("graphics/pokemon/thundurus/normal.gbapal.lz"); +const u32 gMonPalette_TornadusIncarnate[] = INCBIN_U32("graphics/pokemon/tornadus/normal.gbapal.lz"); +const u32 gMonPalette_ThundurusIncarnate[] = INCBIN_U32("graphics/pokemon/thundurus/normal.gbapal.lz"); const u32 gMonPalette_Reshiram[] = INCBIN_U32("graphics/pokemon/reshiram/normal.gbapal.lz"); const u32 gMonPalette_Zekrom[] = INCBIN_U32("graphics/pokemon/zekrom/normal.gbapal.lz"); -const u32 gMonPalette_Landorus[] = INCBIN_U32("graphics/pokemon/landorus/normal.gbapal.lz"); +const u32 gMonPalette_LandorusIncarnate[] = INCBIN_U32("graphics/pokemon/landorus/normal.gbapal.lz"); const u32 gMonPalette_Kyurem[] = INCBIN_U32("graphics/pokemon/kyurem/normal.gbapal.lz"); -const u32 gMonPalette_Keldeo[] = INCBIN_U32("graphics/pokemon/keldeo/normal.gbapal.lz"); -const u32 gMonPalette_Meloetta[] = INCBIN_U32("graphics/pokemon/meloetta/normal.gbapal.lz"); +const u32 gMonPalette_KeldeoOrdinary[] = INCBIN_U32("graphics/pokemon/keldeo/normal.gbapal.lz"); +const u32 gMonPalette_MeloettaAria[] = INCBIN_U32("graphics/pokemon/meloetta/normal.gbapal.lz"); const u32 gMonPalette_Genesect[] = INCBIN_U32("graphics/pokemon/genesect/normal.gbapal.lz"); #endif #if P_GEN_6_POKEMON == TRUE @@ -3320,22 +3320,22 @@ const u32 gMonPalette_Fletchinder[] = INCBIN_U32("graphics/pokemon/fletchinder/n const u32 gMonPalette_Talonflame[] = INCBIN_U32("graphics/pokemon/talonflame/normal.gbapal.lz"); const u32 gMonPalette_Scatterbug[] = INCBIN_U32("graphics/pokemon/scatterbug/normal.gbapal.lz"); const u32 gMonPalette_Spewpa[] = INCBIN_U32("graphics/pokemon/spewpa/normal.gbapal.lz"); -const u32 gMonPalette_Vivillon[] = INCBIN_U32("graphics/pokemon/vivillon/normal.gbapal.lz"); +const u32 gMonPalette_VivillonIcySnow[] = INCBIN_U32("graphics/pokemon/vivillon/normal.gbapal.lz"); const u32 gMonPalette_Litleo[] = INCBIN_U32("graphics/pokemon/litleo/normal.gbapal.lz"); const u32 gMonPalette_Pyroar[] = INCBIN_U32("graphics/pokemon/pyroar/normal.gbapal.lz"); -const u32 gMonPalette_Flabebe[] = INCBIN_U32("graphics/pokemon/flabebe/normal.gbapal.lz"); -const u32 gMonPalette_Floette[] = INCBIN_U32("graphics/pokemon/floette/normal.gbapal.lz"); -const u32 gMonPalette_Florges[] = INCBIN_U32("graphics/pokemon/florges/normal.gbapal.lz"); +const u32 gMonPalette_FlabebeRedFlower[] = INCBIN_U32("graphics/pokemon/flabebe/normal.gbapal.lz"); +const u32 gMonPalette_FloetteRedFlower[] = INCBIN_U32("graphics/pokemon/floette/normal.gbapal.lz"); +const u32 gMonPalette_FlorgesRedFlower[] = INCBIN_U32("graphics/pokemon/florges/normal.gbapal.lz"); const u32 gMonPalette_Skiddo[] = INCBIN_U32("graphics/pokemon/skiddo/normal.gbapal.lz"); const u32 gMonPalette_Gogoat[] = INCBIN_U32("graphics/pokemon/gogoat/normal.gbapal.lz"); const u32 gMonPalette_Pancham[] = INCBIN_U32("graphics/pokemon/pancham/normal.gbapal.lz"); const u32 gMonPalette_Pangoro[] = INCBIN_U32("graphics/pokemon/pangoro/normal.gbapal.lz"); -const u32 gMonPalette_Furfrou[] = INCBIN_U32("graphics/pokemon/furfrou/normal.gbapal.lz"); +const u32 gMonPalette_FurfrouNatural[] = INCBIN_U32("graphics/pokemon/furfrou/normal.gbapal.lz"); const u32 gMonPalette_Espurr[] = INCBIN_U32("graphics/pokemon/espurr/normal.gbapal.lz"); -const u32 gMonPalette_Meowstic[] = INCBIN_U32("graphics/pokemon/meowstic/normal.gbapal.lz"); +const u32 gMonPalette_MeowsticMale[] = INCBIN_U32("graphics/pokemon/meowstic/normal.gbapal.lz"); const u32 gMonPalette_Honedge[] = INCBIN_U32("graphics/pokemon/honedge/normal.gbapal.lz"); const u32 gMonPalette_Doublade[] = INCBIN_U32("graphics/pokemon/doublade/normal.gbapal.lz"); -const u32 gMonPalette_Aegislash[] = INCBIN_U32("graphics/pokemon/aegislash/normal.gbapal.lz"); +const u32 gMonPalette_AegislashShield[] = INCBIN_U32("graphics/pokemon/aegislash/normal.gbapal.lz"); const u32 gMonPalette_Spritzee[] = INCBIN_U32("graphics/pokemon/spritzee/normal.gbapal.lz"); const u32 gMonPalette_Aromatisse[] = INCBIN_U32("graphics/pokemon/aromatisse/normal.gbapal.lz"); const u32 gMonPalette_Swirlix[] = INCBIN_U32("graphics/pokemon/swirlix/normal.gbapal.lz"); @@ -3370,11 +3370,11 @@ const u32 gMonPalette_Bergmite[] = INCBIN_U32("graphics/pokemon/bergmite/normal. const u32 gMonPalette_Avalugg[] = INCBIN_U32("graphics/pokemon/avalugg/normal.gbapal.lz"); const u32 gMonPalette_Noibat[] = INCBIN_U32("graphics/pokemon/noibat/normal.gbapal.lz"); const u32 gMonPalette_Noivern[] = INCBIN_U32("graphics/pokemon/noivern/normal.gbapal.lz"); -const u32 gMonPalette_Xerneas[] = INCBIN_U32("graphics/pokemon/xerneas/normal.gbapal.lz"); +const u32 gMonPalette_XerneasNeutral[] = INCBIN_U32("graphics/pokemon/xerneas/normal.gbapal.lz"); const u32 gMonPalette_Yveltal[] = INCBIN_U32("graphics/pokemon/yveltal/normal.gbapal.lz"); -const u32 gMonPalette_Zygarde[] = INCBIN_U32("graphics/pokemon/zygarde/normal.gbapal.lz"); +const u32 gMonPalette_Zygarde50[] = INCBIN_U32("graphics/pokemon/zygarde/normal.gbapal.lz"); const u32 gMonPalette_Diancie[] = INCBIN_U32("graphics/pokemon/diancie/normal.gbapal.lz"); -const u32 gMonPalette_Hoopa[] = INCBIN_U32("graphics/pokemon/hoopa/normal.gbapal.lz"); +const u32 gMonPalette_HoopaConfined[] = INCBIN_U32("graphics/pokemon/hoopa/normal.gbapal.lz"); const u32 gMonPalette_Volcanion[] = INCBIN_U32("graphics/pokemon/volcanion/normal.gbapal.lz"); #endif #if P_GEN_7_POKEMON == TRUE @@ -3397,12 +3397,12 @@ const u32 gMonPalette_Charjabug[] = INCBIN_U32("graphics/pokemon/charjabug/norma const u32 gMonPalette_Vikavolt[] = INCBIN_U32("graphics/pokemon/vikavolt/normal.gbapal.lz"); const u32 gMonPalette_Crabrawler[] = INCBIN_U32("graphics/pokemon/crabrawler/normal.gbapal.lz"); const u32 gMonPalette_Crabominable[] = INCBIN_U32("graphics/pokemon/crabominable/normal.gbapal.lz"); -const u32 gMonPalette_Oricorio[] = INCBIN_U32("graphics/pokemon/oricorio/normal.gbapal.lz"); +const u32 gMonPalette_OricorioBaile[] = INCBIN_U32("graphics/pokemon/oricorio/normal.gbapal.lz"); const u32 gMonPalette_Cutiefly[] = INCBIN_U32("graphics/pokemon/cutiefly/normal.gbapal.lz"); const u32 gMonPalette_Ribombee[] = INCBIN_U32("graphics/pokemon/ribombee/normal.gbapal.lz"); const u32 gMonPalette_Rockruff[] = INCBIN_U32("graphics/pokemon/rockruff/normal.gbapal.lz"); -const u32 gMonPalette_Lycanroc[] = INCBIN_U32("graphics/pokemon/lycanroc/normal.gbapal.lz"); -const u32 gMonPalette_Wishiwashi[] = INCBIN_U32("graphics/pokemon/wishiwashi/normal.gbapal.lz"); +const u32 gMonPalette_LycanrocMidday[] = INCBIN_U32("graphics/pokemon/lycanroc/normal.gbapal.lz"); +const u32 gMonPalette_WishiwashiSolo[] = INCBIN_U32("graphics/pokemon/wishiwashi/normal.gbapal.lz"); const u32 gMonPalette_Mareanie[] = INCBIN_U32("graphics/pokemon/mareanie/normal.gbapal.lz"); const u32 gMonPalette_Toxapex[] = INCBIN_U32("graphics/pokemon/toxapex/normal.gbapal.lz"); const u32 gMonPalette_Mudbray[] = INCBIN_U32("graphics/pokemon/mudbray/normal.gbapal.lz"); @@ -3429,12 +3429,12 @@ const u32 gMonPalette_Sandygast[] = INCBIN_U32("graphics/pokemon/sandygast/norma const u32 gMonPalette_Palossand[] = INCBIN_U32("graphics/pokemon/palossand/normal.gbapal.lz"); const u32 gMonPalette_Pyukumuku[] = INCBIN_U32("graphics/pokemon/pyukumuku/normal.gbapal.lz"); const u32 gMonPalette_TypeNull[] = INCBIN_U32("graphics/pokemon/type_null/normal.gbapal.lz"); -const u32 gMonPalette_Silvally[] = INCBIN_U32("graphics/pokemon/silvally/normal.gbapal.lz"); -const u32 gMonPalette_Minior[] = INCBIN_U32("graphics/pokemon/minior/normal.gbapal.lz"); +const u32 gMonPalette_SilvallyNormal[] = INCBIN_U32("graphics/pokemon/silvally/normal.gbapal.lz"); +const u32 gMonPalette_MiniorMeteor[] = INCBIN_U32("graphics/pokemon/minior/normal.gbapal.lz"); const u32 gMonPalette_Komala[] = INCBIN_U32("graphics/pokemon/komala/normal.gbapal.lz"); const u32 gMonPalette_Turtonator[] = INCBIN_U32("graphics/pokemon/turtonator/normal.gbapal.lz"); const u32 gMonPalette_Togedemaru[] = INCBIN_U32("graphics/pokemon/togedemaru/normal.gbapal.lz"); -const u32 gMonPalette_Mimikyu[] = INCBIN_U32("graphics/pokemon/mimikyu/normal.gbapal.lz"); +const u32 gMonPalette_MimikyuDisguised[] = INCBIN_U32("graphics/pokemon/mimikyu/normal.gbapal.lz"); const u32 gMonPalette_Bruxish[] = INCBIN_U32("graphics/pokemon/bruxish/normal.gbapal.lz"); const u32 gMonPalette_Drampa[] = INCBIN_U32("graphics/pokemon/drampa/normal.gbapal.lz"); const u32 gMonPalette_Dhelmise[] = INCBIN_U32("graphics/pokemon/dhelmise/normal.gbapal.lz"); @@ -3507,7 +3507,7 @@ const u32 gMonPalette_Cramorant[] = INCBIN_U32("graphics/pokemon/cramorant/norma const u32 gMonPalette_Arrokuda[] = INCBIN_U32("graphics/pokemon/arrokuda/normal.gbapal.lz"); const u32 gMonPalette_Barraskewda[] = INCBIN_U32("graphics/pokemon/barraskewda/normal.gbapal.lz"); const u32 gMonPalette_Toxel[] = INCBIN_U32("graphics/pokemon/toxel/normal.gbapal.lz"); -const u32 gMonPalette_Toxtricity[] = INCBIN_U32("graphics/pokemon/toxtricity/normal.gbapal.lz"); +const u32 gMonPalette_ToxtricityAmped[] = INCBIN_U32("graphics/pokemon/toxtricity/normal.gbapal.lz"); const u32 gMonPalette_Sizzlipede[] = INCBIN_U32("graphics/pokemon/sizzlipede/normal.gbapal.lz"); const u32 gMonPalette_Centiskorch[] = INCBIN_U32("graphics/pokemon/centiskorch/normal.gbapal.lz"); const u32 gMonPalette_Clobbopus[] = INCBIN_U32("graphics/pokemon/clobbopus/normal.gbapal.lz"); @@ -3533,9 +3533,9 @@ const u32 gMonPalette_Pincurchin[] = INCBIN_U32("graphics/pokemon/pincurchin/nor const u32 gMonPalette_Snom[] = INCBIN_U32("graphics/pokemon/snom/normal.gbapal.lz"); const u32 gMonPalette_Frosmoth[] = INCBIN_U32("graphics/pokemon/frosmoth/normal.gbapal.lz"); const u32 gMonPalette_Stonjourner[] = INCBIN_U32("graphics/pokemon/stonjourner/normal.gbapal.lz"); -const u32 gMonPalette_Eiscue[] = INCBIN_U32("graphics/pokemon/eiscue/normal.gbapal.lz"); -const u32 gMonPalette_Indeedee[] = INCBIN_U32("graphics/pokemon/indeedee/normal.gbapal.lz"); -const u32 gMonPalette_Morpeko[] = INCBIN_U32("graphics/pokemon/morpeko/normal.gbapal.lz"); +const u32 gMonPalette_EiscueIceFace[] = INCBIN_U32("graphics/pokemon/eiscue/normal.gbapal.lz"); +const u32 gMonPalette_IndeedeeMale[] = INCBIN_U32("graphics/pokemon/indeedee/normal.gbapal.lz"); +const u32 gMonPalette_MorpekoFullBelly[] = INCBIN_U32("graphics/pokemon/morpeko/normal.gbapal.lz"); const u32 gMonPalette_Cufant[] = INCBIN_U32("graphics/pokemon/cufant/normal.gbapal.lz"); const u32 gMonPalette_Copperajah[] = INCBIN_U32("graphics/pokemon/copperajah/normal.gbapal.lz"); const u32 gMonPalette_Dracozolt[] = INCBIN_U32("graphics/pokemon/dracozolt/normal.gbapal.lz"); @@ -3546,11 +3546,11 @@ const u32 gMonPalette_Duraludon[] = INCBIN_U32("graphics/pokemon/duraludon/norma const u32 gMonPalette_Dreepy[] = INCBIN_U32("graphics/pokemon/dreepy/normal.gbapal.lz"); const u32 gMonPalette_Drakloak[] = INCBIN_U32("graphics/pokemon/drakloak/normal.gbapal.lz"); const u32 gMonPalette_Dragapult[] = INCBIN_U32("graphics/pokemon/dragapult/normal.gbapal.lz"); -const u32 gMonPalette_Zacian[] = INCBIN_U32("graphics/pokemon/zacian/normal.gbapal.lz"); -const u32 gMonPalette_Zamazenta[] = INCBIN_U32("graphics/pokemon/zamazenta/normal.gbapal.lz"); +const u32 gMonPalette_ZacianHeroOfManyBattles[] = INCBIN_U32("graphics/pokemon/zacian/normal.gbapal.lz"); +const u32 gMonPalette_ZamazentaHeroOfManyBattles[] = INCBIN_U32("graphics/pokemon/zamazenta/normal.gbapal.lz"); const u32 gMonPalette_Eternatus[] = INCBIN_U32("graphics/pokemon/eternatus/normal.gbapal.lz"); const u32 gMonPalette_Kubfu[] = INCBIN_U32("graphics/pokemon/kubfu/normal.gbapal.lz"); -const u32 gMonPalette_Urshifu[] = INCBIN_U32("graphics/pokemon/urshifu/normal.gbapal.lz"); +const u32 gMonPalette_UrshifuSingleStrikeStyle[] = INCBIN_U32("graphics/pokemon/urshifu/normal.gbapal.lz"); const u32 gMonPalette_Zarude[] = INCBIN_U32("graphics/pokemon/zarude/normal.gbapal.lz"); const u32 gMonPalette_Regieleki[] = INCBIN_U32("graphics/pokemon/regieleki/normal.gbapal.lz"); const u32 gMonPalette_Regidrago[] = INCBIN_U32("graphics/pokemon/regidrago/normal.gbapal.lz"); @@ -3560,10 +3560,10 @@ const u32 gMonPalette_Calyrex[] = INCBIN_U32("graphics/pokemon/calyrex/normal.gb const u32 gMonPalette_Wyrdeer[] = INCBIN_U32("graphics/pokemon/wyrdeer/normal.gbapal.lz"); const u32 gMonPalette_Kleavor[] = INCBIN_U32("graphics/pokemon/kleavor/normal.gbapal.lz"); const u32 gMonPalette_Ursaluna[] = INCBIN_U32("graphics/pokemon/ursaluna/normal.gbapal.lz"); -const u32 gMonPalette_Basculegion[] = INCBIN_U32("graphics/pokemon/basculegion/normal.gbapal.lz"); +const u32 gMonPalette_BasculegionMale[] = INCBIN_U32("graphics/pokemon/basculegion/normal.gbapal.lz"); const u32 gMonPalette_Sneasler[] = INCBIN_U32("graphics/pokemon/sneasler/normal.gbapal.lz"); const u32 gMonPalette_Overqwil[] = INCBIN_U32("graphics/pokemon/overqwil/normal.gbapal.lz"); -const u32 gMonPalette_Enamorus[] = INCBIN_U32("graphics/pokemon/enamorus/normal.gbapal.lz"); +const u32 gMonPalette_EnamorusIncarnate[] = INCBIN_U32("graphics/pokemon/enamorus/normal.gbapal.lz"); #endif const u32 gMonPalette_VenusaurMega[] = INCBIN_U32("graphics/pokemon/venusaur/mega/normal.gbapal.lz"); const u32 gMonPalette_CharizardMegaX[] = INCBIN_U32("graphics/pokemon/charizard/mega_x/normal.gbapal.lz"); @@ -3656,7 +3656,7 @@ const u32 gMonPalette_ZigzagoonGalarian[] = INCBIN_U32("graphics/pokemon/zigzago const u32 gMonPalette_LinooneGalarian[] = INCBIN_U32("graphics/pokemon/linoone/galarian/normal.gbapal.lz"); #if P_GEN_5_POKEMON == TRUE const u32 gMonPalette_DarumakaGalarian[] = INCBIN_U32("graphics/pokemon/darumaka/galarian/normal.gbapal.lz"); -const u32 gMonPalette_DarmanitanGalarian[] = INCBIN_U32("graphics/pokemon/darmanitan/galarian/normal.gbapal.lz"); +const u32 gMonPalette_DarmanitanGalarianStandardMode[] = INCBIN_U32("graphics/pokemon/darmanitan/galarian/normal.gbapal.lz"); const u32 gMonPalette_YamaskGalarian[] = INCBIN_U32("graphics/pokemon/yamask/galarian/normal.gbapal.lz"); const u32 gMonPalette_StunfiskGalarian[] = INCBIN_U32("graphics/pokemon/stunfisk/galarian/normal.gbapal.lz"); #endif @@ -3742,7 +3742,7 @@ const u32 gMonPalette_ArceusFairy[] = INCBIN_U32("graphics/pokemon/arceus/fairy/ const u32 gMonPalette_BasculinBlueStriped[] = INCBIN_U32("graphics/pokemon/basculin/blue_striped/normal.gbapal.lz"); const u32 gMonPalette_BasculinWhiteStriped[] = INCBIN_U32("graphics/pokemon/basculin/white_striped/normal.gbapal.lz"); const u32 gMonPalette_DarmanitanZenMode[] = INCBIN_U32("graphics/pokemon/darmanitan/zen_mode/normal.gbapal.lz"); -const u32 gMonPalette_DarmanitanZenModeGalarian[] = INCBIN_U32("graphics/pokemon/darmanitan/zen_mode/galarian/normal.gbapal.lz"); +const u32 gMonPalette_DarmanitanGalarianZenMode[] = INCBIN_U32("graphics/pokemon/darmanitan/zen_mode/galarian/normal.gbapal.lz"); const u32 gMonPalette_DeerlingSummer[] = INCBIN_U32("graphics/pokemon/deerling/summer/normal.gbapal.lz"); const u32 gMonPalette_DeerlingAutumn[] = INCBIN_U32("graphics/pokemon/deerling/autumn/normal.gbapal.lz"); const u32 gMonPalette_DeerlingWinter[] = INCBIN_U32("graphics/pokemon/deerling/winter/normal.gbapal.lz"); @@ -3903,7 +3903,7 @@ const u32 gMonPalette_GrimmsnarlGigantamax[] = INCBIN_U32("graphics/pokemon/grim const u32 gMonPalette_AlcremieGigantamax[] = INCBIN_U32("graphics/pokemon/alcremie/gigantamax/normal.gbapal.lz"); const u32 gMonPalette_CopperajahGigantamax[] = INCBIN_U32("graphics/pokemon/copperajah/gigantamax/normal.gbapal.lz"); const u32 gMonPalette_DuraludonGigantamax[] = INCBIN_U32("graphics/pokemon/duraludon/gigantamax/normal.gbapal.lz"); -const u32 gMonPalette_UrshifuGigantamax[] = INCBIN_U32("graphics/pokemon/urshifu/single_strike_style_gigantamax/normal.gbapal.lz"); +const u32 gMonPalette_UrshifuSingleStrikeGigantamax[] = INCBIN_U32("graphics/pokemon/urshifu/single_strike_style_gigantamax/normal.gbapal.lz"); const u32 gMonPalette_UrshifuRapidStrikeGigantamax[] = INCBIN_U32("graphics/pokemon/urshifu/rapid_strike_style_gigantamax/normal.gbapal.lz"); #endif const u32 gMonPalette_Egg[] = INCBIN_U32("graphics/pokemon/egg/normal.gbapal.lz"); @@ -4260,7 +4260,7 @@ const u32 gMonShinyPalette_Anorith[] = INCBIN_U32("graphics/pokemon/anorith/shin const u32 gMonShinyPalette_Armaldo[] = INCBIN_U32("graphics/pokemon/armaldo/shiny.gbapal.lz"); const u32 gMonShinyPalette_Feebas[] = INCBIN_U32("graphics/pokemon/feebas/shiny.gbapal.lz"); const u32 gMonShinyPalette_Milotic[] = INCBIN_U32("graphics/pokemon/milotic/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Castform[] = INCBIN_U32("graphics/pokemon/castform/shiny.gbapal.lz"); +const u32 gMonShinyPalette_CastformNormal[] = INCBIN_U32("graphics/pokemon/castform/shiny.gbapal.lz"); const u32 gMonShinyPalette_Kecleon[] = INCBIN_U32("graphics/pokemon/kecleon/shiny.gbapal.lz"); const u32 gMonShinyPalette_Shuppet[] = INCBIN_U32("graphics/pokemon/shuppet/shiny.gbapal.lz"); const u32 gMonShinyPalette_Banette[] = INCBIN_U32("graphics/pokemon/banette/shiny.gbapal.lz"); @@ -4295,7 +4295,7 @@ const u32 gMonShinyPalette_Kyogre[] = INCBIN_U32("graphics/pokemon/kyogre/shiny. const u32 gMonShinyPalette_Groudon[] = INCBIN_U32("graphics/pokemon/groudon/shiny.gbapal.lz"); const u32 gMonShinyPalette_Rayquaza[] = INCBIN_U32("graphics/pokemon/rayquaza/shiny.gbapal.lz"); const u32 gMonShinyPalette_Jirachi[] = INCBIN_U32("graphics/pokemon/jirachi/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Deoxys[] = INCBIN_U32("graphics/pokemon/deoxys/shiny.gbapal.lz"); +const u32 gMonShinyPalette_DeoxysNormal[] = INCBIN_U32("graphics/pokemon/deoxys/shiny.gbapal.lz"); #if P_GEN_4_POKEMON == TRUE const u32 gMonShinyPalette_Turtwig[] = INCBIN_U32("graphics/pokemon/turtwig/shiny.gbapal.lz"); const u32 gMonShinyPalette_Grotle[] = INCBIN_U32("graphics/pokemon/grotle/shiny.gbapal.lz"); @@ -4322,8 +4322,8 @@ const u32 gMonShinyPalette_Cranidos[] = INCBIN_U32("graphics/pokemon/cranidos/sh const u32 gMonShinyPalette_Rampardos[] = INCBIN_U32("graphics/pokemon/rampardos/shiny.gbapal.lz"); const u32 gMonShinyPalette_Shieldon[] = INCBIN_U32("graphics/pokemon/shieldon/shiny.gbapal.lz"); const u32 gMonShinyPalette_Bastiodon[] = INCBIN_U32("graphics/pokemon/bastiodon/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Burmy[] = INCBIN_U32("graphics/pokemon/burmy/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Wormadam[] = INCBIN_U32("graphics/pokemon/wormadam/shiny.gbapal.lz"); +const u32 gMonShinyPalette_BurmyPlantCloak[] = INCBIN_U32("graphics/pokemon/burmy/shiny.gbapal.lz"); +const u32 gMonShinyPalette_WormadamPlantCloak[] = INCBIN_U32("graphics/pokemon/wormadam/shiny.gbapal.lz"); const u32 gMonShinyPalette_Mothim[] = INCBIN_U32("graphics/pokemon/mothim/shiny.gbapal.lz"); const u32 gMonShinyPalette_Combee[] = INCBIN_U32("graphics/pokemon/combee/shiny.gbapal.lz"); const u32 gMonShinyPalette_CombeeF[] = INCBIN_U32("graphics/pokemon/combee/shinyf.gbapal.lz"); @@ -4332,9 +4332,9 @@ const u32 gMonShinyPalette_Pachirisu[] = INCBIN_U32("graphics/pokemon/pachirisu/ const u32 gMonShinyPalette_Buizel[] = INCBIN_U32("graphics/pokemon/buizel/shiny.gbapal.lz"); const u32 gMonShinyPalette_Floatzel[] = INCBIN_U32("graphics/pokemon/floatzel/shiny.gbapal.lz"); const u32 gMonShinyPalette_Cherubi[] = INCBIN_U32("graphics/pokemon/cherubi/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Cherrim[] = INCBIN_U32("graphics/pokemon/cherrim/normal/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Shellos[] = INCBIN_U32("graphics/pokemon/shellos/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Gastrodon[] = INCBIN_U32("graphics/pokemon/gastrodon/shiny.gbapal.lz"); +const u32 gMonShinyPalette_CherrimOvercast[] = INCBIN_U32("graphics/pokemon/cherrim/shiny.gbapal.lz"); +const u32 gMonShinyPalette_ShellosWestSea[] = INCBIN_U32("graphics/pokemon/shellos/shiny.gbapal.lz"); +const u32 gMonShinyPalette_GastrodonWestSea[] = INCBIN_U32("graphics/pokemon/gastrodon/shiny.gbapal.lz"); const u32 gMonShinyPalette_Ambipom[] = INCBIN_U32("graphics/pokemon/ambipom/shiny.gbapal.lz"); const u32 gMonShinyPalette_Drifloon[] = INCBIN_U32("graphics/pokemon/drifloon/shiny.gbapal.lz"); const u32 gMonShinyPalette_Drifblim[] = INCBIN_U32("graphics/pokemon/drifblim/shiny.gbapal.lz"); @@ -4400,12 +4400,12 @@ const u32 gMonShinyPalette_Dialga[] = INCBIN_U32("graphics/pokemon/dialga/shiny. const u32 gMonShinyPalette_Palkia[] = INCBIN_U32("graphics/pokemon/palkia/shiny.gbapal.lz"); const u32 gMonShinyPalette_Heatran[] = INCBIN_U32("graphics/pokemon/heatran/shiny.gbapal.lz"); const u32 gMonShinyPalette_Regigigas[] = INCBIN_U32("graphics/pokemon/regigigas/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Giratina[] = INCBIN_U32("graphics/pokemon/giratina/shiny.gbapal.lz"); +const u32 gMonShinyPalette_GiratinaAltered[] = INCBIN_U32("graphics/pokemon/giratina/shiny.gbapal.lz"); const u32 gMonShinyPalette_Cresselia[] = INCBIN_U32("graphics/pokemon/cresselia/shiny.gbapal.lz"); const u32 gMonShinyPalette_Phione[] = INCBIN_U32("graphics/pokemon/phione/shiny.gbapal.lz"); const u32 gMonShinyPalette_Manaphy[] = INCBIN_U32("graphics/pokemon/manaphy/shiny.gbapal.lz"); const u32 gMonShinyPalette_Darkrai[] = INCBIN_U32("graphics/pokemon/darkrai/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Shaymin[] = INCBIN_U32("graphics/pokemon/shaymin/shiny.gbapal.lz"); +const u32 gMonShinyPalette_ShayminLand[] = INCBIN_U32("graphics/pokemon/shaymin/shiny.gbapal.lz"); const u32 gMonShinyPalette_Arceus[] = INCBIN_U32("graphics/pokemon/arceus/shiny.gbapal.lz"); #endif #if P_GEN_5_POKEMON == TRUE @@ -4466,12 +4466,12 @@ const u32 gMonShinyPalette_Cottonee[] = INCBIN_U32("graphics/pokemon/cottonee/sh const u32 gMonShinyPalette_Whimsicott[] = INCBIN_U32("graphics/pokemon/whimsicott/shiny.gbapal.lz"); const u32 gMonShinyPalette_Petilil[] = INCBIN_U32("graphics/pokemon/petilil/shiny.gbapal.lz"); const u32 gMonShinyPalette_Lilligant[] = INCBIN_U32("graphics/pokemon/lilligant/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Basculin[] = INCBIN_U32("graphics/pokemon/basculin/shiny.gbapal.lz"); +const u32 gMonShinyPalette_BasculinRedStriped[] = INCBIN_U32("graphics/pokemon/basculin/shiny.gbapal.lz"); const u32 gMonShinyPalette_Sandile[] = INCBIN_U32("graphics/pokemon/sandile/shiny.gbapal.lz"); const u32 gMonShinyPalette_Krokorok[] = INCBIN_U32("graphics/pokemon/krokorok/shiny.gbapal.lz"); const u32 gMonShinyPalette_Krookodile[] = INCBIN_U32("graphics/pokemon/krookodile/shiny.gbapal.lz"); const u32 gMonShinyPalette_Darumaka[] = INCBIN_U32("graphics/pokemon/darumaka/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Darmanitan[] = INCBIN_U32("graphics/pokemon/darmanitan/shiny.gbapal.lz"); +const u32 gMonShinyPalette_DarmanitanStandardMode[] = INCBIN_U32("graphics/pokemon/darmanitan/shiny.gbapal.lz"); const u32 gMonShinyPalette_Maractus[] = INCBIN_U32("graphics/pokemon/maractus/shiny.gbapal.lz"); const u32 gMonShinyPalette_Dwebble[] = INCBIN_U32("graphics/pokemon/dwebble/shiny.gbapal.lz"); const u32 gMonShinyPalette_Crustle[] = INCBIN_U32("graphics/pokemon/crustle/shiny.gbapal.lz"); @@ -4501,8 +4501,8 @@ const u32 gMonShinyPalette_Swanna[] = INCBIN_U32("graphics/pokemon/swanna/shiny. const u32 gMonShinyPalette_Vanillite[] = INCBIN_U32("graphics/pokemon/vanillite/shiny.gbapal.lz"); const u32 gMonShinyPalette_Vanillish[] = INCBIN_U32("graphics/pokemon/vanillish/shiny.gbapal.lz"); const u32 gMonShinyPalette_Vanilluxe[] = INCBIN_U32("graphics/pokemon/vanilluxe/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Deerling[] = INCBIN_U32("graphics/pokemon/deerling/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Sawsbuck[] = INCBIN_U32("graphics/pokemon/sawsbuck/shiny.gbapal.lz"); +const u32 gMonShinyPalette_DeerlingSpring[] = INCBIN_U32("graphics/pokemon/deerling/shiny.gbapal.lz"); +const u32 gMonShinyPalette_SawsbuckSpring[] = INCBIN_U32("graphics/pokemon/sawsbuck/shiny.gbapal.lz"); const u32 gMonShinyPalette_Emolga[] = INCBIN_U32("graphics/pokemon/emolga/shiny.gbapal.lz"); const u32 gMonShinyPalette_Karrablast[] = INCBIN_U32("graphics/pokemon/karrablast/shiny.gbapal.lz"); const u32 gMonShinyPalette_Escavalier[] = INCBIN_U32("graphics/pokemon/escavalier/shiny.gbapal.lz"); @@ -4559,14 +4559,14 @@ const u32 gMonShinyPalette_Volcarona[] = INCBIN_U32("graphics/pokemon/volcarona/ const u32 gMonShinyPalette_Cobalion[] = INCBIN_U32("graphics/pokemon/cobalion/shiny.gbapal.lz"); const u32 gMonShinyPalette_Terrakion[] = INCBIN_U32("graphics/pokemon/terrakion/shiny.gbapal.lz"); const u32 gMonShinyPalette_Virizion[] = INCBIN_U32("graphics/pokemon/virizion/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Tornadus[] = INCBIN_U32("graphics/pokemon/tornadus/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Thundurus[] = INCBIN_U32("graphics/pokemon/thundurus/shiny.gbapal.lz"); +const u32 gMonShinyPalette_TornadusIncarnate[] = INCBIN_U32("graphics/pokemon/tornadus/shiny.gbapal.lz"); +const u32 gMonShinyPalette_ThundurusIncarnate[] = INCBIN_U32("graphics/pokemon/thundurus/shiny.gbapal.lz"); const u32 gMonShinyPalette_Reshiram[] = INCBIN_U32("graphics/pokemon/reshiram/shiny.gbapal.lz"); const u32 gMonShinyPalette_Zekrom[] = INCBIN_U32("graphics/pokemon/zekrom/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Landorus[] = INCBIN_U32("graphics/pokemon/landorus/shiny.gbapal.lz"); +const u32 gMonShinyPalette_LandorusIncarnate[] = INCBIN_U32("graphics/pokemon/landorus/shiny.gbapal.lz"); const u32 gMonShinyPalette_Kyurem[] = INCBIN_U32("graphics/pokemon/kyurem/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Keldeo[] = INCBIN_U32("graphics/pokemon/keldeo/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Meloetta[] = INCBIN_U32("graphics/pokemon/meloetta/shiny.gbapal.lz"); +const u32 gMonShinyPalette_KeldeoOrdinary[] = INCBIN_U32("graphics/pokemon/keldeo/shiny.gbapal.lz"); +const u32 gMonShinyPalette_MeloettaAria[] = INCBIN_U32("graphics/pokemon/meloetta/shiny.gbapal.lz"); const u32 gMonShinyPalette_Genesect[] = INCBIN_U32("graphics/pokemon/genesect/shiny.gbapal.lz"); #endif #if P_GEN_6_POKEMON == TRUE @@ -4586,22 +4586,22 @@ const u32 gMonShinyPalette_Fletchinder[] = INCBIN_U32("graphics/pokemon/fletchin const u32 gMonShinyPalette_Talonflame[] = INCBIN_U32("graphics/pokemon/talonflame/shiny.gbapal.lz"); const u32 gMonShinyPalette_Scatterbug[] = INCBIN_U32("graphics/pokemon/scatterbug/shiny.gbapal.lz"); const u32 gMonShinyPalette_Spewpa[] = INCBIN_U32("graphics/pokemon/spewpa/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Vivillon[] = INCBIN_U32("graphics/pokemon/vivillon/shiny.gbapal.lz"); +const u32 gMonShinyPalette_VivillonIcySnow[] = INCBIN_U32("graphics/pokemon/vivillon/shiny.gbapal.lz"); const u32 gMonShinyPalette_Litleo[] = INCBIN_U32("graphics/pokemon/litleo/shiny.gbapal.lz"); const u32 gMonShinyPalette_Pyroar[] = INCBIN_U32("graphics/pokemon/pyroar/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Flabebe[] = INCBIN_U32("graphics/pokemon/flabebe/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Floette[] = INCBIN_U32("graphics/pokemon/floette/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Florges[] = INCBIN_U32("graphics/pokemon/florges/shiny.gbapal.lz"); +const u32 gMonShinyPalette_FlabebeRedFlower[] = INCBIN_U32("graphics/pokemon/flabebe/shiny.gbapal.lz"); +const u32 gMonShinyPalette_FloetteRedFlower[] = INCBIN_U32("graphics/pokemon/floette/shiny.gbapal.lz"); +const u32 gMonShinyPalette_FlorgesRedFlower[] = INCBIN_U32("graphics/pokemon/florges/shiny.gbapal.lz"); const u32 gMonShinyPalette_Skiddo[] = INCBIN_U32("graphics/pokemon/skiddo/shiny.gbapal.lz"); const u32 gMonShinyPalette_Gogoat[] = INCBIN_U32("graphics/pokemon/gogoat/shiny.gbapal.lz"); const u32 gMonShinyPalette_Pancham[] = INCBIN_U32("graphics/pokemon/pancham/shiny.gbapal.lz"); const u32 gMonShinyPalette_Pangoro[] = INCBIN_U32("graphics/pokemon/pangoro/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Furfrou[] = INCBIN_U32("graphics/pokemon/furfrou/shiny.gbapal.lz"); +const u32 gMonShinyPalette_FurfrouNatural[] = INCBIN_U32("graphics/pokemon/furfrou/shiny.gbapal.lz"); const u32 gMonShinyPalette_Espurr[] = INCBIN_U32("graphics/pokemon/espurr/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Meowstic[] = INCBIN_U32("graphics/pokemon/meowstic/shiny.gbapal.lz"); +const u32 gMonShinyPalette_MeowsticMale[] = INCBIN_U32("graphics/pokemon/meowstic/shiny.gbapal.lz"); const u32 gMonShinyPalette_Honedge[] = INCBIN_U32("graphics/pokemon/honedge/shiny.gbapal.lz"); const u32 gMonShinyPalette_Doublade[] = INCBIN_U32("graphics/pokemon/doublade/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Aegislash[] = INCBIN_U32("graphics/pokemon/aegislash/shiny.gbapal.lz"); +const u32 gMonShinyPalette_AegislashShield[] = INCBIN_U32("graphics/pokemon/aegislash/shiny.gbapal.lz"); const u32 gMonShinyPalette_Spritzee[] = INCBIN_U32("graphics/pokemon/spritzee/shiny.gbapal.lz"); const u32 gMonShinyPalette_Aromatisse[] = INCBIN_U32("graphics/pokemon/aromatisse/shiny.gbapal.lz"); const u32 gMonShinyPalette_Swirlix[] = INCBIN_U32("graphics/pokemon/swirlix/shiny.gbapal.lz"); @@ -4636,11 +4636,11 @@ const u32 gMonShinyPalette_Bergmite[] = INCBIN_U32("graphics/pokemon/bergmite/sh const u32 gMonShinyPalette_Avalugg[] = INCBIN_U32("graphics/pokemon/avalugg/shiny.gbapal.lz"); const u32 gMonShinyPalette_Noibat[] = INCBIN_U32("graphics/pokemon/noibat/shiny.gbapal.lz"); const u32 gMonShinyPalette_Noivern[] = INCBIN_U32("graphics/pokemon/noivern/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Xerneas[] = INCBIN_U32("graphics/pokemon/xerneas/shiny.gbapal.lz"); +const u32 gMonShinyPalette_XerneasNeutral[] = INCBIN_U32("graphics/pokemon/xerneas/shiny.gbapal.lz"); const u32 gMonShinyPalette_Yveltal[] = INCBIN_U32("graphics/pokemon/yveltal/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Zygarde[] = INCBIN_U32("graphics/pokemon/zygarde/shiny.gbapal.lz"); +const u32 gMonShinyPalette_Zygarde50[] = INCBIN_U32("graphics/pokemon/zygarde/shiny.gbapal.lz"); const u32 gMonShinyPalette_Diancie[] = INCBIN_U32("graphics/pokemon/diancie/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Hoopa[] = INCBIN_U32("graphics/pokemon/hoopa/shiny.gbapal.lz"); +const u32 gMonShinyPalette_HoopaConfined[] = INCBIN_U32("graphics/pokemon/hoopa/shiny.gbapal.lz"); const u32 gMonShinyPalette_Volcanion[] = INCBIN_U32("graphics/pokemon/volcanion/shiny.gbapal.lz"); #endif #if P_GEN_7_POKEMON == TRUE @@ -4663,12 +4663,12 @@ const u32 gMonShinyPalette_Charjabug[] = INCBIN_U32("graphics/pokemon/charjabug/ const u32 gMonShinyPalette_Vikavolt[] = INCBIN_U32("graphics/pokemon/vikavolt/shiny.gbapal.lz"); const u32 gMonShinyPalette_Crabrawler[] = INCBIN_U32("graphics/pokemon/crabrawler/shiny.gbapal.lz"); const u32 gMonShinyPalette_Crabominable[] = INCBIN_U32("graphics/pokemon/crabominable/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Oricorio[] = INCBIN_U32("graphics/pokemon/oricorio/shiny.gbapal.lz"); +const u32 gMonShinyPalette_OricorioBaile[] = INCBIN_U32("graphics/pokemon/oricorio/shiny.gbapal.lz"); const u32 gMonShinyPalette_Cutiefly[] = INCBIN_U32("graphics/pokemon/cutiefly/shiny.gbapal.lz"); const u32 gMonShinyPalette_Ribombee[] = INCBIN_U32("graphics/pokemon/ribombee/shiny.gbapal.lz"); const u32 gMonShinyPalette_Rockruff[] = INCBIN_U32("graphics/pokemon/rockruff/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Lycanroc[] = INCBIN_U32("graphics/pokemon/lycanroc/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Wishiwashi[] = INCBIN_U32("graphics/pokemon/wishiwashi/shiny.gbapal.lz"); +const u32 gMonShinyPalette_LycanrocMidday[] = INCBIN_U32("graphics/pokemon/lycanroc/shiny.gbapal.lz"); +const u32 gMonShinyPalette_WishiwashiSolo[] = INCBIN_U32("graphics/pokemon/wishiwashi/shiny.gbapal.lz"); const u32 gMonShinyPalette_Mareanie[] = INCBIN_U32("graphics/pokemon/mareanie/shiny.gbapal.lz"); const u32 gMonShinyPalette_Toxapex[] = INCBIN_U32("graphics/pokemon/toxapex/shiny.gbapal.lz"); const u32 gMonShinyPalette_Mudbray[] = INCBIN_U32("graphics/pokemon/mudbray/shiny.gbapal.lz"); @@ -4695,12 +4695,12 @@ const u32 gMonShinyPalette_Sandygast[] = INCBIN_U32("graphics/pokemon/sandygast/ const u32 gMonShinyPalette_Palossand[] = INCBIN_U32("graphics/pokemon/palossand/shiny.gbapal.lz"); const u32 gMonShinyPalette_Pyukumuku[] = INCBIN_U32("graphics/pokemon/pyukumuku/shiny.gbapal.lz"); const u32 gMonShinyPalette_TypeNull[] = INCBIN_U32("graphics/pokemon/type_null/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Silvally[] = INCBIN_U32("graphics/pokemon/silvally/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Minior[] = INCBIN_U32("graphics/pokemon/minior/shiny.gbapal.lz"); +const u32 gMonShinyPalette_SilvallyNormal[] = INCBIN_U32("graphics/pokemon/silvally/shiny.gbapal.lz"); +const u32 gMonShinyPalette_MiniorMeteor[] = INCBIN_U32("graphics/pokemon/minior/shiny.gbapal.lz"); const u32 gMonShinyPalette_Komala[] = INCBIN_U32("graphics/pokemon/komala/shiny.gbapal.lz"); const u32 gMonShinyPalette_Turtonator[] = INCBIN_U32("graphics/pokemon/turtonator/shiny.gbapal.lz"); const u32 gMonShinyPalette_Togedemaru[] = INCBIN_U32("graphics/pokemon/togedemaru/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Mimikyu[] = INCBIN_U32("graphics/pokemon/mimikyu/shiny.gbapal.lz"); +const u32 gMonShinyPalette_MimikyuDisguised[] = INCBIN_U32("graphics/pokemon/mimikyu/shiny.gbapal.lz"); const u32 gMonShinyPalette_Bruxish[] = INCBIN_U32("graphics/pokemon/bruxish/shiny.gbapal.lz"); const u32 gMonShinyPalette_Drampa[] = INCBIN_U32("graphics/pokemon/drampa/shiny.gbapal.lz"); const u32 gMonShinyPalette_Dhelmise[] = INCBIN_U32("graphics/pokemon/dhelmise/shiny.gbapal.lz"); @@ -4773,7 +4773,7 @@ const u32 gMonShinyPalette_Cramorant[] = INCBIN_U32("graphics/pokemon/cramorant/ const u32 gMonShinyPalette_Arrokuda[] = INCBIN_U32("graphics/pokemon/arrokuda/shiny.gbapal.lz"); const u32 gMonShinyPalette_Barraskewda[] = INCBIN_U32("graphics/pokemon/barraskewda/shiny.gbapal.lz"); const u32 gMonShinyPalette_Toxel[] = INCBIN_U32("graphics/pokemon/toxel/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Toxtricity[] = INCBIN_U32("graphics/pokemon/toxtricity/shiny.gbapal.lz"); +const u32 gMonShinyPalette_ToxtricityAmped[] = INCBIN_U32("graphics/pokemon/toxtricity/shiny.gbapal.lz"); const u32 gMonShinyPalette_Sizzlipede[] = INCBIN_U32("graphics/pokemon/sizzlipede/shiny.gbapal.lz"); const u32 gMonShinyPalette_Centiskorch[] = INCBIN_U32("graphics/pokemon/centiskorch/shiny.gbapal.lz"); const u32 gMonShinyPalette_Clobbopus[] = INCBIN_U32("graphics/pokemon/clobbopus/shiny.gbapal.lz"); @@ -4799,9 +4799,9 @@ const u32 gMonShinyPalette_Pincurchin[] = INCBIN_U32("graphics/pokemon/pincurchi const u32 gMonShinyPalette_Snom[] = INCBIN_U32("graphics/pokemon/snom/shiny.gbapal.lz"); const u32 gMonShinyPalette_Frosmoth[] = INCBIN_U32("graphics/pokemon/frosmoth/shiny.gbapal.lz"); const u32 gMonShinyPalette_Stonjourner[] = INCBIN_U32("graphics/pokemon/stonjourner/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Eiscue[] = INCBIN_U32("graphics/pokemon/eiscue/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Indeedee[] = INCBIN_U32("graphics/pokemon/indeedee/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Morpeko[] = INCBIN_U32("graphics/pokemon/morpeko/shiny.gbapal.lz"); +const u32 gMonShinyPalette_EiscueIceFace[] = INCBIN_U32("graphics/pokemon/eiscue/shiny.gbapal.lz"); +const u32 gMonShinyPalette_IndeedeeMale[] = INCBIN_U32("graphics/pokemon/indeedee/shiny.gbapal.lz"); +const u32 gMonShinyPalette_MorpekoFullBelly[] = INCBIN_U32("graphics/pokemon/morpeko/shiny.gbapal.lz"); const u32 gMonShinyPalette_Cufant[] = INCBIN_U32("graphics/pokemon/cufant/shiny.gbapal.lz"); const u32 gMonShinyPalette_Copperajah[] = INCBIN_U32("graphics/pokemon/copperajah/shiny.gbapal.lz"); const u32 gMonShinyPalette_Dracozolt[] = INCBIN_U32("graphics/pokemon/dracozolt/shiny.gbapal.lz"); @@ -4812,11 +4812,11 @@ const u32 gMonShinyPalette_Duraludon[] = INCBIN_U32("graphics/pokemon/duraludon/ const u32 gMonShinyPalette_Dreepy[] = INCBIN_U32("graphics/pokemon/dreepy/shiny.gbapal.lz"); const u32 gMonShinyPalette_Drakloak[] = INCBIN_U32("graphics/pokemon/drakloak/shiny.gbapal.lz"); const u32 gMonShinyPalette_Dragapult[] = INCBIN_U32("graphics/pokemon/dragapult/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Zacian[] = INCBIN_U32("graphics/pokemon/zacian/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Zamazenta[] = INCBIN_U32("graphics/pokemon/zamazenta/shiny.gbapal.lz"); +const u32 gMonShinyPalette_ZacianHeroOfManyBattles[] = INCBIN_U32("graphics/pokemon/zacian/shiny.gbapal.lz"); +const u32 gMonShinyPalette_ZamazentaHeroOfManyBattles[] = INCBIN_U32("graphics/pokemon/zamazenta/shiny.gbapal.lz"); const u32 gMonShinyPalette_Eternatus[] = INCBIN_U32("graphics/pokemon/eternatus/shiny.gbapal.lz"); const u32 gMonShinyPalette_Kubfu[] = INCBIN_U32("graphics/pokemon/kubfu/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Urshifu[] = INCBIN_U32("graphics/pokemon/urshifu/shiny.gbapal.lz"); +const u32 gMonShinyPalette_UrshifuSingleStrikeStyle[] = INCBIN_U32("graphics/pokemon/urshifu/shiny.gbapal.lz"); const u32 gMonShinyPalette_Zarude[] = INCBIN_U32("graphics/pokemon/zarude/shiny.gbapal.lz"); const u32 gMonShinyPalette_Regieleki[] = INCBIN_U32("graphics/pokemon/regieleki/shiny.gbapal.lz"); const u32 gMonShinyPalette_Regidrago[] = INCBIN_U32("graphics/pokemon/regidrago/shiny.gbapal.lz"); @@ -4826,10 +4826,10 @@ const u32 gMonShinyPalette_Calyrex[] = INCBIN_U32("graphics/pokemon/calyrex/shin const u32 gMonShinyPalette_Wyrdeer[] = INCBIN_U32("graphics/pokemon/wyrdeer/shiny.gbapal.lz"); const u32 gMonShinyPalette_Kleavor[] = INCBIN_U32("graphics/pokemon/kleavor/shiny.gbapal.lz"); const u32 gMonShinyPalette_Ursaluna[] = INCBIN_U32("graphics/pokemon/ursaluna/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Basculegion[] = INCBIN_U32("graphics/pokemon/basculegion/shiny.gbapal.lz"); +const u32 gMonShinyPalette_BasculegionMale[] = INCBIN_U32("graphics/pokemon/basculegion/shiny.gbapal.lz"); const u32 gMonShinyPalette_Sneasler[] = INCBIN_U32("graphics/pokemon/sneasler/shiny.gbapal.lz"); const u32 gMonShinyPalette_Overqwil[] = INCBIN_U32("graphics/pokemon/overqwil/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Enamorus[] = INCBIN_U32("graphics/pokemon/enamorus/shiny.gbapal.lz"); +const u32 gMonShinyPalette_EnamorusIncarnate[] = INCBIN_U32("graphics/pokemon/enamorus/shiny.gbapal.lz"); #endif const u32 gMonShinyPalette_VenusaurMega[] = INCBIN_U32("graphics/pokemon/venusaur/mega/shiny.gbapal.lz"); const u32 gMonShinyPalette_CharizardMegaX[] = INCBIN_U32("graphics/pokemon/charizard/mega_x/shiny.gbapal.lz"); @@ -4922,7 +4922,7 @@ const u32 gMonShinyPalette_ZigzagoonGalarian[] = INCBIN_U32("graphics/pokemon/zi const u32 gMonShinyPalette_LinooneGalarian[] = INCBIN_U32("graphics/pokemon/linoone/galarian/shiny.gbapal.lz"); #if P_GEN_5_POKEMON == TRUE const u32 gMonShinyPalette_DarumakaGalarian[] = INCBIN_U32("graphics/pokemon/darumaka/galarian/shiny.gbapal.lz"); -const u32 gMonShinyPalette_DarmanitanGalarian[] = INCBIN_U32("graphics/pokemon/darmanitan/galarian/shiny.gbapal.lz"); +const u32 gMonShinyPalette_DarmanitanGalarianStandardMode[] = INCBIN_U32("graphics/pokemon/darmanitan/galarian/shiny.gbapal.lz"); const u32 gMonShinyPalette_YamaskGalarian[] = INCBIN_U32("graphics/pokemon/yamask/galarian/shiny.gbapal.lz"); const u32 gMonShinyPalette_StunfiskGalarian[] = INCBIN_U32("graphics/pokemon/stunfisk/galarian/shiny.gbapal.lz"); #endif @@ -5008,7 +5008,7 @@ const u32 gMonShinyPalette_ArceusFairy[] = INCBIN_U32("graphics/pokemon/arceus/f const u32 gMonShinyPalette_BasculinBlueStriped[] = INCBIN_U32("graphics/pokemon/basculin/blue_striped/shiny.gbapal.lz"); const u32 gMonShinyPalette_BasculinWhiteStriped[] = INCBIN_U32("graphics/pokemon/basculin/white_striped/shiny.gbapal.lz"); const u32 gMonShinyPalette_DarmanitanZenMode[] = INCBIN_U32("graphics/pokemon/darmanitan/zen_mode/shiny.gbapal.lz"); -const u32 gMonShinyPalette_DarmanitanZenModeGalarian[] = INCBIN_U32("graphics/pokemon/darmanitan/zen_mode/galarian/shiny.gbapal.lz"); +const u32 gMonShinyPalette_DarmanitanGalarianZenMode[] = INCBIN_U32("graphics/pokemon/darmanitan/zen_mode/galarian/shiny.gbapal.lz"); const u32 gMonShinyPalette_DeerlingSummer[] = INCBIN_U32("graphics/pokemon/deerling/summer/shiny.gbapal.lz"); const u32 gMonShinyPalette_DeerlingAutumn[] = INCBIN_U32("graphics/pokemon/deerling/autumn/shiny.gbapal.lz"); const u32 gMonShinyPalette_DeerlingWinter[] = INCBIN_U32("graphics/pokemon/deerling/winter/shiny.gbapal.lz"); @@ -5163,7 +5163,7 @@ const u32 gMonShinyPalette_GrimmsnarlGigantamax[] = INCBIN_U32("graphics/pokemon const u32 gMonShinyPalette_AlcremieGigantamax[] = INCBIN_U32("graphics/pokemon/alcremie/gigantamax/shiny.gbapal.lz"); const u32 gMonShinyPalette_CopperajahGigantamax[] = INCBIN_U32("graphics/pokemon/copperajah/gigantamax/shiny.gbapal.lz"); const u32 gMonShinyPalette_DuraludonGigantamax[] = INCBIN_U32("graphics/pokemon/duraludon/gigantamax/shiny.gbapal.lz"); -const u32 gMonShinyPalette_UrshifuGigantamax[] = INCBIN_U32("graphics/pokemon/urshifu/single_strike_style_gigantamax/shiny.gbapal.lz"); +const u32 gMonShinyPalette_UrshifuSingleStrikeGigantamax[] = INCBIN_U32("graphics/pokemon/urshifu/single_strike_style_gigantamax/shiny.gbapal.lz"); const u32 gMonShinyPalette_UrshifuRapidStrikeGigantamax[] = INCBIN_U32("graphics/pokemon/urshifu/rapid_strike_style_gigantamax/shiny.gbapal.lz"); #endif @@ -5518,7 +5518,7 @@ const u8 gMonIcon_Anorith[] = INCBIN_U8("graphics/pokemon/anorith/icon.4bpp"); const u8 gMonIcon_Armaldo[] = INCBIN_U8("graphics/pokemon/armaldo/icon.4bpp"); const u8 gMonIcon_Feebas[] = INCBIN_U8("graphics/pokemon/feebas/icon.4bpp"); const u8 gMonIcon_Milotic[] = INCBIN_U8("graphics/pokemon/milotic/icon.4bpp"); -const u8 gMonIcon_Castform[] = INCBIN_U8("graphics/pokemon/castform/icon.4bpp"); +const u8 gMonIcon_CastformNormal[] = INCBIN_U8("graphics/pokemon/castform/icon.4bpp"); const u8 gMonIcon_Kecleon[] = INCBIN_U8("graphics/pokemon/kecleon/icon.4bpp"); const u8 gMonIcon_Shuppet[] = INCBIN_U8("graphics/pokemon/shuppet/icon.4bpp"); const u8 gMonIcon_Banette[] = INCBIN_U8("graphics/pokemon/banette/icon.4bpp"); @@ -5553,7 +5553,7 @@ const u8 gMonIcon_Kyogre[] = INCBIN_U8("graphics/pokemon/kyogre/icon.4bpp"); const u8 gMonIcon_Groudon[] = INCBIN_U8("graphics/pokemon/groudon/icon.4bpp"); const u8 gMonIcon_Rayquaza[] = INCBIN_U8("graphics/pokemon/rayquaza/icon.4bpp"); const u8 gMonIcon_Jirachi[] = INCBIN_U8("graphics/pokemon/jirachi/icon.4bpp"); -const u8 gMonIcon_Deoxys[] = INCBIN_U8("graphics/pokemon/deoxys/icon.4bpp"); +const u8 gMonIcon_DeoxysNormal[] = INCBIN_U8("graphics/pokemon/deoxys/icon.4bpp"); #if P_GEN_4_POKEMON == TRUE const u8 gMonIcon_Turtwig[] = INCBIN_U8("graphics/pokemon/turtwig/icon.4bpp"); const u8 gMonIcon_Grotle[] = INCBIN_U8("graphics/pokemon/grotle/icon.4bpp"); @@ -5580,8 +5580,8 @@ const u8 gMonIcon_Cranidos[] = INCBIN_U8("graphics/pokemon/cranidos/icon.4bpp"); const u8 gMonIcon_Rampardos[] = INCBIN_U8("graphics/pokemon/rampardos/icon.4bpp"); const u8 gMonIcon_Shieldon[] = INCBIN_U8("graphics/pokemon/shieldon/icon.4bpp"); const u8 gMonIcon_Bastiodon[] = INCBIN_U8("graphics/pokemon/bastiodon/icon.4bpp"); -const u8 gMonIcon_Burmy[] = INCBIN_U8("graphics/pokemon/burmy/icon.4bpp"); -const u8 gMonIcon_Wormadam[] = INCBIN_U8("graphics/pokemon/wormadam/icon.4bpp"); +const u8 gMonIcon_BurmyPlantCloak[] = INCBIN_U8("graphics/pokemon/burmy/icon.4bpp"); +const u8 gMonIcon_WormadamPlantCloak[] = INCBIN_U8("graphics/pokemon/wormadam/icon.4bpp"); const u8 gMonIcon_Mothim[] = INCBIN_U8("graphics/pokemon/mothim/icon.4bpp"); const u8 gMonIcon_Combee[] = INCBIN_U8("graphics/pokemon/combee/icon.4bpp"); const u8 gMonIcon_Vespiquen[] = INCBIN_U8("graphics/pokemon/vespiquen/icon.4bpp"); @@ -5589,9 +5589,9 @@ const u8 gMonIcon_Pachirisu[] = INCBIN_U8("graphics/pokemon/pachirisu/icon.4bpp" const u8 gMonIcon_Buizel[] = INCBIN_U8("graphics/pokemon/buizel/icon.4bpp"); const u8 gMonIcon_Floatzel[] = INCBIN_U8("graphics/pokemon/floatzel/icon.4bpp"); const u8 gMonIcon_Cherubi[] = INCBIN_U8("graphics/pokemon/cherubi/icon.4bpp"); -const u8 gMonIcon_Cherrim[] = INCBIN_U8("graphics/pokemon/cherrim/icon.4bpp"); -const u8 gMonIcon_Shellos[] = INCBIN_U8("graphics/pokemon/shellos/icon.4bpp"); -const u8 gMonIcon_Gastrodon[] = INCBIN_U8("graphics/pokemon/gastrodon/icon.4bpp"); +const u8 gMonIcon_CherrimOvercast[] = INCBIN_U8("graphics/pokemon/cherrim/icon.4bpp"); +const u8 gMonIcon_ShellosWestSea[] = INCBIN_U8("graphics/pokemon/shellos/icon.4bpp"); +const u8 gMonIcon_GastrodonWestSea[] = INCBIN_U8("graphics/pokemon/gastrodon/icon.4bpp"); const u8 gMonIcon_Ambipom[] = INCBIN_U8("graphics/pokemon/ambipom/icon.4bpp"); const u8 gMonIcon_Drifloon[] = INCBIN_U8("graphics/pokemon/drifloon/icon.4bpp"); const u8 gMonIcon_Drifblim[] = INCBIN_U8("graphics/pokemon/drifblim/icon.4bpp"); @@ -5659,12 +5659,12 @@ const u8 gMonIcon_Dialga[] = INCBIN_U8("graphics/pokemon/dialga/icon.4bpp"); const u8 gMonIcon_Palkia[] = INCBIN_U8("graphics/pokemon/palkia/icon.4bpp"); const u8 gMonIcon_Heatran[] = INCBIN_U8("graphics/pokemon/heatran/icon.4bpp"); const u8 gMonIcon_Regigigas[] = INCBIN_U8("graphics/pokemon/regigigas/icon.4bpp"); -const u8 gMonIcon_Giratina[] = INCBIN_U8("graphics/pokemon/giratina/icon.4bpp"); +const u8 gMonIcon_GiratinaAltered[] = INCBIN_U8("graphics/pokemon/giratina/icon.4bpp"); const u8 gMonIcon_Cresselia[] = INCBIN_U8("graphics/pokemon/cresselia/icon.4bpp"); const u8 gMonIcon_Phione[] = INCBIN_U8("graphics/pokemon/phione/icon.4bpp"); const u8 gMonIcon_Manaphy[] = INCBIN_U8("graphics/pokemon/manaphy/icon.4bpp"); const u8 gMonIcon_Darkrai[] = INCBIN_U8("graphics/pokemon/darkrai/icon.4bpp"); -const u8 gMonIcon_Shaymin[] = INCBIN_U8("graphics/pokemon/shaymin/icon.4bpp"); +const u8 gMonIcon_ShayminLand[] = INCBIN_U8("graphics/pokemon/shaymin/icon.4bpp"); const u8 gMonIcon_Arceus[] = INCBIN_U8("graphics/pokemon/arceus/icon.4bpp"); #endif #if P_GEN_5_POKEMON == TRUE @@ -5725,12 +5725,12 @@ const u8 gMonIcon_Cottonee[] = INCBIN_U8("graphics/pokemon/cottonee/icon.4bpp"); const u8 gMonIcon_Whimsicott[] = INCBIN_U8("graphics/pokemon/whimsicott/icon.4bpp"); const u8 gMonIcon_Petilil[] = INCBIN_U8("graphics/pokemon/petilil/icon.4bpp"); const u8 gMonIcon_Lilligant[] = INCBIN_U8("graphics/pokemon/lilligant/icon.4bpp"); -const u8 gMonIcon_Basculin[] = INCBIN_U8("graphics/pokemon/basculin/icon.4bpp"); +const u8 gMonIcon_BasculinRedStriped[] = INCBIN_U8("graphics/pokemon/basculin/icon.4bpp"); const u8 gMonIcon_Sandile[] = INCBIN_U8("graphics/pokemon/sandile/icon.4bpp"); const u8 gMonIcon_Krokorok[] = INCBIN_U8("graphics/pokemon/krokorok/icon.4bpp"); const u8 gMonIcon_Krookodile[] = INCBIN_U8("graphics/pokemon/krookodile/icon.4bpp"); const u8 gMonIcon_Darumaka[] = INCBIN_U8("graphics/pokemon/darumaka/icon.4bpp"); -const u8 gMonIcon_Darmanitan[] = INCBIN_U8("graphics/pokemon/darmanitan/icon.4bpp"); +const u8 gMonIcon_DarmanitanStandardMode[] = INCBIN_U8("graphics/pokemon/darmanitan/icon.4bpp"); const u8 gMonIcon_Maractus[] = INCBIN_U8("graphics/pokemon/maractus/icon.4bpp"); const u8 gMonIcon_Dwebble[] = INCBIN_U8("graphics/pokemon/dwebble/icon.4bpp"); const u8 gMonIcon_Crustle[] = INCBIN_U8("graphics/pokemon/crustle/icon.4bpp"); @@ -5760,8 +5760,8 @@ const u8 gMonIcon_Swanna[] = INCBIN_U8("graphics/pokemon/swanna/icon.4bpp"); const u8 gMonIcon_Vanillite[] = INCBIN_U8("graphics/pokemon/vanillite/icon.4bpp"); const u8 gMonIcon_Vanillish[] = INCBIN_U8("graphics/pokemon/vanillish/icon.4bpp"); const u8 gMonIcon_Vanilluxe[] = INCBIN_U8("graphics/pokemon/vanilluxe/icon.4bpp"); -const u8 gMonIcon_Deerling[] = INCBIN_U8("graphics/pokemon/deerling/icon.4bpp"); -const u8 gMonIcon_Sawsbuck[] = INCBIN_U8("graphics/pokemon/sawsbuck/icon.4bpp"); +const u8 gMonIcon_DeerlingSpring[] = INCBIN_U8("graphics/pokemon/deerling/icon.4bpp"); +const u8 gMonIcon_SawsbuckSpring[] = INCBIN_U8("graphics/pokemon/sawsbuck/icon.4bpp"); const u8 gMonIcon_Emolga[] = INCBIN_U8("graphics/pokemon/emolga/icon.4bpp"); const u8 gMonIcon_Karrablast[] = INCBIN_U8("graphics/pokemon/karrablast/icon.4bpp"); const u8 gMonIcon_Escavalier[] = INCBIN_U8("graphics/pokemon/escavalier/icon.4bpp"); @@ -5818,14 +5818,14 @@ const u8 gMonIcon_Volcarona[] = INCBIN_U8("graphics/pokemon/volcarona/icon.4bpp" const u8 gMonIcon_Cobalion[] = INCBIN_U8("graphics/pokemon/cobalion/icon.4bpp"); const u8 gMonIcon_Terrakion[] = INCBIN_U8("graphics/pokemon/terrakion/icon.4bpp"); const u8 gMonIcon_Virizion[] = INCBIN_U8("graphics/pokemon/virizion/icon.4bpp"); -const u8 gMonIcon_Tornadus[] = INCBIN_U8("graphics/pokemon/tornadus/icon.4bpp"); -const u8 gMonIcon_Thundurus[] = INCBIN_U8("graphics/pokemon/thundurus/icon.4bpp"); +const u8 gMonIcon_TornadusIncarnate[] = INCBIN_U8("graphics/pokemon/tornadus/icon.4bpp"); +const u8 gMonIcon_ThundurusIncarnate[] = INCBIN_U8("graphics/pokemon/thundurus/icon.4bpp"); const u8 gMonIcon_Reshiram[] = INCBIN_U8("graphics/pokemon/reshiram/icon.4bpp"); const u8 gMonIcon_Zekrom[] = INCBIN_U8("graphics/pokemon/zekrom/icon.4bpp"); -const u8 gMonIcon_Landorus[] = INCBIN_U8("graphics/pokemon/landorus/icon.4bpp"); +const u8 gMonIcon_LandorusIncarnate[] = INCBIN_U8("graphics/pokemon/landorus/icon.4bpp"); const u8 gMonIcon_Kyurem[] = INCBIN_U8("graphics/pokemon/kyurem/icon.4bpp"); -const u8 gMonIcon_Keldeo[] = INCBIN_U8("graphics/pokemon/keldeo/icon.4bpp"); -const u8 gMonIcon_Meloetta[] = INCBIN_U8("graphics/pokemon/meloetta/icon.4bpp"); +const u8 gMonIcon_KeldeoOrdinary[] = INCBIN_U8("graphics/pokemon/keldeo/icon.4bpp"); +const u8 gMonIcon_MeloettaAria[] = INCBIN_U8("graphics/pokemon/meloetta/icon.4bpp"); const u8 gMonIcon_Genesect[] = INCBIN_U8("graphics/pokemon/genesect/icon.4bpp"); #endif #if P_GEN_6_POKEMON == TRUE @@ -5845,23 +5845,23 @@ const u8 gMonIcon_Fletchinder[] = INCBIN_U8("graphics/pokemon/fletchinder/icon.4 const u8 gMonIcon_Talonflame[] = INCBIN_U8("graphics/pokemon/talonflame/icon.4bpp"); const u8 gMonIcon_Scatterbug[] = INCBIN_U8("graphics/pokemon/scatterbug/icon.4bpp"); const u8 gMonIcon_Spewpa[] = INCBIN_U8("graphics/pokemon/spewpa/icon.4bpp"); -const u8 gMonIcon_Vivillon[] = INCBIN_U8("graphics/pokemon/vivillon/meadow/icon.4bpp"); +const u8 gMonIcon_VivillonIcySnow[] = INCBIN_U8("graphics/pokemon/vivillon/meadow/icon.4bpp"); const u8 gMonIcon_Litleo[] = INCBIN_U8("graphics/pokemon/litleo/icon.4bpp"); const u8 gMonIcon_Pyroar[] = INCBIN_U8("graphics/pokemon/pyroar/icon.4bpp"); const u8 gMonIcon_PyroarF[] = INCBIN_U8("graphics/pokemon/pyroar/iconf.4bpp"); -const u8 gMonIcon_Flabebe[] = INCBIN_U8("graphics/pokemon/flabebe/icon.4bpp"); -const u8 gMonIcon_Floette[] = INCBIN_U8("graphics/pokemon/floette/icon.4bpp"); -const u8 gMonIcon_Florges[] = INCBIN_U8("graphics/pokemon/florges/icon.4bpp"); +const u8 gMonIcon_FlabebeRedFlower[] = INCBIN_U8("graphics/pokemon/flabebe/icon.4bpp"); +const u8 gMonIcon_FloetteRedFlower[] = INCBIN_U8("graphics/pokemon/floette/icon.4bpp"); +const u8 gMonIcon_FlorgesRedFlower[] = INCBIN_U8("graphics/pokemon/florges/icon.4bpp"); const u8 gMonIcon_Skiddo[] = INCBIN_U8("graphics/pokemon/skiddo/icon.4bpp"); const u8 gMonIcon_Gogoat[] = INCBIN_U8("graphics/pokemon/gogoat/icon.4bpp"); const u8 gMonIcon_Pancham[] = INCBIN_U8("graphics/pokemon/pancham/icon.4bpp"); const u8 gMonIcon_Pangoro[] = INCBIN_U8("graphics/pokemon/pangoro/icon.4bpp"); -const u8 gMonIcon_Furfrou[] = INCBIN_U8("graphics/pokemon/furfrou/icon.4bpp"); +const u8 gMonIcon_FurfrouNatural[] = INCBIN_U8("graphics/pokemon/furfrou/icon.4bpp"); const u8 gMonIcon_Espurr[] = INCBIN_U8("graphics/pokemon/espurr/icon.4bpp"); -const u8 gMonIcon_Meowstic[] = INCBIN_U8("graphics/pokemon/meowstic/icon.4bpp"); +const u8 gMonIcon_MeowsticMale[] = INCBIN_U8("graphics/pokemon/meowstic/icon.4bpp"); const u8 gMonIcon_Honedge[] = INCBIN_U8("graphics/pokemon/honedge/icon.4bpp"); const u8 gMonIcon_Doublade[] = INCBIN_U8("graphics/pokemon/doublade/icon.4bpp"); -const u8 gMonIcon_Aegislash[] = INCBIN_U8("graphics/pokemon/aegislash/icon.4bpp"); +const u8 gMonIcon_AegislashShield[] = INCBIN_U8("graphics/pokemon/aegislash/icon.4bpp"); const u8 gMonIcon_Spritzee[] = INCBIN_U8("graphics/pokemon/spritzee/icon.4bpp"); const u8 gMonIcon_Aromatisse[] = INCBIN_U8("graphics/pokemon/aromatisse/icon.4bpp"); const u8 gMonIcon_Swirlix[] = INCBIN_U8("graphics/pokemon/swirlix/icon.4bpp"); @@ -5896,11 +5896,11 @@ const u8 gMonIcon_Bergmite[] = INCBIN_U8("graphics/pokemon/bergmite/icon.4bpp"); const u8 gMonIcon_Avalugg[] = INCBIN_U8("graphics/pokemon/avalugg/icon.4bpp"); const u8 gMonIcon_Noibat[] = INCBIN_U8("graphics/pokemon/noibat/icon.4bpp"); const u8 gMonIcon_Noivern[] = INCBIN_U8("graphics/pokemon/noivern/icon.4bpp"); -const u8 gMonIcon_Xerneas[] = INCBIN_U8("graphics/pokemon/xerneas/icon.4bpp"); +const u8 gMonIcon_XerneasNeutral[] = INCBIN_U8("graphics/pokemon/xerneas/icon.4bpp"); const u8 gMonIcon_Yveltal[] = INCBIN_U8("graphics/pokemon/yveltal/icon.4bpp"); -const u8 gMonIcon_Zygarde[] = INCBIN_U8("graphics/pokemon/zygarde/icon.4bpp"); +const u8 gMonIcon_Zygarde50[] = INCBIN_U8("graphics/pokemon/zygarde/icon.4bpp"); const u8 gMonIcon_Diancie[] = INCBIN_U8("graphics/pokemon/diancie/icon.4bpp"); -const u8 gMonIcon_Hoopa[] = INCBIN_U8("graphics/pokemon/hoopa/icon.4bpp"); +const u8 gMonIcon_HoopaConfined[] = INCBIN_U8("graphics/pokemon/hoopa/icon.4bpp"); const u8 gMonIcon_Volcanion[] = INCBIN_U8("graphics/pokemon/volcanion/icon.4bpp"); #endif #if P_GEN_7_POKEMON == TRUE @@ -5923,12 +5923,12 @@ const u8 gMonIcon_Charjabug[] = INCBIN_U8("graphics/pokemon/charjabug/icon.4bpp" const u8 gMonIcon_Vikavolt[] = INCBIN_U8("graphics/pokemon/vikavolt/icon.4bpp"); const u8 gMonIcon_Crabrawler[] = INCBIN_U8("graphics/pokemon/crabrawler/icon.4bpp"); const u8 gMonIcon_Crabominable[] = INCBIN_U8("graphics/pokemon/crabominable/icon.4bpp"); -const u8 gMonIcon_Oricorio[] = INCBIN_U8("graphics/pokemon/oricorio/icon.4bpp"); +const u8 gMonIcon_OricorioBaile[] = INCBIN_U8("graphics/pokemon/oricorio/icon.4bpp"); const u8 gMonIcon_Cutiefly[] = INCBIN_U8("graphics/pokemon/cutiefly/icon.4bpp"); const u8 gMonIcon_Ribombee[] = INCBIN_U8("graphics/pokemon/ribombee/icon.4bpp"); const u8 gMonIcon_Rockruff[] = INCBIN_U8("graphics/pokemon/rockruff/icon.4bpp"); -const u8 gMonIcon_Lycanroc[] = INCBIN_U8("graphics/pokemon/lycanroc/icon.4bpp"); -const u8 gMonIcon_Wishiwashi[] = INCBIN_U8("graphics/pokemon/wishiwashi/icon.4bpp"); +const u8 gMonIcon_LycanrocMidday[] = INCBIN_U8("graphics/pokemon/lycanroc/icon.4bpp"); +const u8 gMonIcon_WishiwashiSolo[] = INCBIN_U8("graphics/pokemon/wishiwashi/icon.4bpp"); const u8 gMonIcon_Mareanie[] = INCBIN_U8("graphics/pokemon/mareanie/icon.4bpp"); const u8 gMonIcon_Toxapex[] = INCBIN_U8("graphics/pokemon/toxapex/icon.4bpp"); const u8 gMonIcon_Mudbray[] = INCBIN_U8("graphics/pokemon/mudbray/icon.4bpp"); @@ -5956,11 +5956,11 @@ const u8 gMonIcon_Palossand[] = INCBIN_U8("graphics/pokemon/palossand/icon.4bpp" const u8 gMonIcon_Pyukumuku[] = INCBIN_U8("graphics/pokemon/pyukumuku/icon.4bpp"); const u8 gMonIcon_TypeNull[] = INCBIN_U8("graphics/pokemon/type_null/icon.4bpp"); const u8 gMonIcon_Silvally[] = INCBIN_U8("graphics/pokemon/silvally/icon.4bpp"); -const u8 gMonIcon_Minior[] = INCBIN_U8("graphics/pokemon/minior/icon.4bpp"); +const u8 gMonIcon_MiniorMeteor[] = INCBIN_U8("graphics/pokemon/minior/icon.4bpp"); const u8 gMonIcon_Komala[] = INCBIN_U8("graphics/pokemon/komala/icon.4bpp"); const u8 gMonIcon_Turtonator[] = INCBIN_U8("graphics/pokemon/turtonator/icon.4bpp"); const u8 gMonIcon_Togedemaru[] = INCBIN_U8("graphics/pokemon/togedemaru/icon.4bpp"); -const u8 gMonIcon_Mimikyu[] = INCBIN_U8("graphics/pokemon/mimikyu/icon.4bpp"); +const u8 gMonIcon_MimikyuDisguised[] = INCBIN_U8("graphics/pokemon/mimikyu/icon.4bpp"); const u8 gMonIcon_Bruxish[] = INCBIN_U8("graphics/pokemon/bruxish/icon.4bpp"); const u8 gMonIcon_Drampa[] = INCBIN_U8("graphics/pokemon/drampa/icon.4bpp"); const u8 gMonIcon_Dhelmise[] = INCBIN_U8("graphics/pokemon/dhelmise/icon.4bpp"); @@ -6033,7 +6033,7 @@ const u8 gMonIcon_Cramorant[] = INCBIN_U8("graphics/pokemon/cramorant/icon.4bpp" const u8 gMonIcon_Arrokuda[] = INCBIN_U8("graphics/pokemon/arrokuda/icon.4bpp"); const u8 gMonIcon_Barraskewda[] = INCBIN_U8("graphics/pokemon/barraskewda/icon.4bpp"); const u8 gMonIcon_Toxel[] = INCBIN_U8("graphics/pokemon/toxel/icon.4bpp"); -const u8 gMonIcon_Toxtricity[] = INCBIN_U8("graphics/pokemon/toxtricity/icon.4bpp"); +const u8 gMonIcon_ToxtricityAmped[] = INCBIN_U8("graphics/pokemon/toxtricity/icon.4bpp"); const u8 gMonIcon_Sizzlipede[] = INCBIN_U8("graphics/pokemon/sizzlipede/icon.4bpp"); const u8 gMonIcon_Centiskorch[] = INCBIN_U8("graphics/pokemon/centiskorch/icon.4bpp"); const u8 gMonIcon_Clobbopus[] = INCBIN_U8("graphics/pokemon/clobbopus/icon.4bpp"); @@ -6059,9 +6059,9 @@ const u8 gMonIcon_Pincurchin[] = INCBIN_U8("graphics/pokemon/pincurchin/icon.4bp const u8 gMonIcon_Snom[] = INCBIN_U8("graphics/pokemon/snom/icon.4bpp"); const u8 gMonIcon_Frosmoth[] = INCBIN_U8("graphics/pokemon/frosmoth/icon.4bpp"); const u8 gMonIcon_Stonjourner[] = INCBIN_U8("graphics/pokemon/stonjourner/icon.4bpp"); -const u8 gMonIcon_Eiscue[] = INCBIN_U8("graphics/pokemon/eiscue/icon.4bpp"); -const u8 gMonIcon_Indeedee[] = INCBIN_U8("graphics/pokemon/indeedee/icon.4bpp"); -const u8 gMonIcon_Morpeko[] = INCBIN_U8("graphics/pokemon/morpeko/icon.4bpp"); +const u8 gMonIcon_EiscueIceFace[] = INCBIN_U8("graphics/pokemon/eiscue/icon.4bpp"); +const u8 gMonIcon_IndeedeeMale[] = INCBIN_U8("graphics/pokemon/indeedee/icon.4bpp"); +const u8 gMonIcon_MorpekoFullBelly[] = INCBIN_U8("graphics/pokemon/morpeko/icon.4bpp"); const u8 gMonIcon_Cufant[] = INCBIN_U8("graphics/pokemon/cufant/icon.4bpp"); const u8 gMonIcon_Copperajah[] = INCBIN_U8("graphics/pokemon/copperajah/icon.4bpp"); const u8 gMonIcon_Dracozolt[] = INCBIN_U8("graphics/pokemon/dracozolt/icon.4bpp"); @@ -6072,11 +6072,11 @@ const u8 gMonIcon_Duraludon[] = INCBIN_U8("graphics/pokemon/duraludon/icon.4bpp" const u8 gMonIcon_Dreepy[] = INCBIN_U8("graphics/pokemon/dreepy/icon.4bpp"); const u8 gMonIcon_Drakloak[] = INCBIN_U8("graphics/pokemon/drakloak/icon.4bpp"); const u8 gMonIcon_Dragapult[] = INCBIN_U8("graphics/pokemon/dragapult/icon.4bpp"); -const u8 gMonIcon_Zacian[] = INCBIN_U8("graphics/pokemon/zacian/icon.4bpp"); -const u8 gMonIcon_Zamazenta[] = INCBIN_U8("graphics/pokemon/zamazenta/icon.4bpp"); +const u8 gMonIcon_ZacianHeroOfManyBattles[] = INCBIN_U8("graphics/pokemon/zacian/icon.4bpp"); +const u8 gMonIcon_ZamazentaHeroOfManyBattles[] = INCBIN_U8("graphics/pokemon/zamazenta/icon.4bpp"); const u8 gMonIcon_Eternatus[] = INCBIN_U8("graphics/pokemon/eternatus/icon.4bpp"); const u8 gMonIcon_Kubfu[] = INCBIN_U8("graphics/pokemon/kubfu/icon.4bpp"); -const u8 gMonIcon_Urshifu[] = INCBIN_U8("graphics/pokemon/urshifu/icon.4bpp"); +const u8 gMonIcon_UrshifuSingleStrikeStyle[] = INCBIN_U8("graphics/pokemon/urshifu/icon.4bpp"); const u8 gMonIcon_Zarude[] = INCBIN_U8("graphics/pokemon/zarude/icon.4bpp"); const u8 gMonIcon_Regieleki[] = INCBIN_U8("graphics/pokemon/regieleki/icon.4bpp"); const u8 gMonIcon_Regidrago[] = INCBIN_U8("graphics/pokemon/regidrago/icon.4bpp"); @@ -6086,10 +6086,10 @@ const u8 gMonIcon_Calyrex[] = INCBIN_U8("graphics/pokemon/calyrex/icon.4bpp"); const u8 gMonIcon_Wyrdeer[] = INCBIN_U8("graphics/pokemon/wyrdeer/icon.4bpp"); const u8 gMonIcon_Kleavor[] = INCBIN_U8("graphics/pokemon/kleavor/icon.4bpp"); const u8 gMonIcon_Ursaluna[] = INCBIN_U8("graphics/pokemon/ursaluna/icon.4bpp"); -const u8 gMonIcon_Basculegion[] = INCBIN_U8("graphics/pokemon/basculegion/icon.4bpp"); +const u8 gMonIcon_BasculegionMale[] = INCBIN_U8("graphics/pokemon/basculegion/icon.4bpp"); const u8 gMonIcon_Sneasler[] = INCBIN_U8("graphics/pokemon/sneasler/icon.4bpp"); const u8 gMonIcon_Overqwil[] = INCBIN_U8("graphics/pokemon/overqwil/icon.4bpp"); -const u8 gMonIcon_Enamorus[] = INCBIN_U8("graphics/pokemon/enamorus/icon.4bpp"); +const u8 gMonIcon_EnamorusIncarnate[] = INCBIN_U8("graphics/pokemon/enamorus/icon.4bpp"); #endif const u8 gMonIcon_VenusaurMega[] = INCBIN_U8("graphics/pokemon/venusaur/mega/icon.4bpp"); const u8 gMonIcon_CharizardMegaX[] = INCBIN_U8("graphics/pokemon/charizard/mega_x/icon.4bpp"); @@ -6182,7 +6182,7 @@ const u8 gMonIcon_ZigzagoonGalarian[] = INCBIN_U8("graphics/pokemon/zigzagoon/ga const u8 gMonIcon_LinooneGalarian[] = INCBIN_U8("graphics/pokemon/linoone/galarian/icon.4bpp"); #if P_GEN_5_POKEMON == TRUE const u8 gMonIcon_DarumakaGalarian[] = INCBIN_U8("graphics/pokemon/darumaka/galarian/icon.4bpp"); -const u8 gMonIcon_DarmanitanGalarian[] = INCBIN_U8("graphics/pokemon/darmanitan/galarian/icon.4bpp"); +const u8 gMonIcon_DarmanitanGalarianStandardMode[] = INCBIN_U8("graphics/pokemon/darmanitan/galarian/icon.4bpp"); const u8 gMonIcon_YamaskGalarian[] = INCBIN_U8("graphics/pokemon/yamask/galarian/icon.4bpp"); const u8 gMonIcon_StunfiskGalarian[] = INCBIN_U8("graphics/pokemon/stunfisk/galarian/icon.4bpp"); #endif @@ -6278,7 +6278,7 @@ const u8 gMonIcon_ShayminSky[] = INCBIN_U8("graphics/pokemon/shaymin/sky/icon.4b const u8 gMonIcon_BasculinBlueStriped[] = INCBIN_U8("graphics/pokemon/basculin/blue_striped/icon.4bpp"); const u8 gMonIcon_BasculinWhiteStriped[] = INCBIN_U8("graphics/pokemon/basculin/white_striped/icon.4bpp"); const u8 gMonIcon_DarmanitanZenMode[] = INCBIN_U8("graphics/pokemon/darmanitan/zen_mode/icon.4bpp"); -const u8 gMonIcon_DarmanitanZenModeGalarian[] = INCBIN_U8("graphics/pokemon/darmanitan/zen_mode/galarian/icon.4bpp"); +const u8 gMonIcon_DarmanitanGalarianZenMode[] = INCBIN_U8("graphics/pokemon/darmanitan/zen_mode/galarian/icon.4bpp"); const u8 gMonIcon_DeerlingSummer[] = INCBIN_U8("graphics/pokemon/deerling/summer/icon.4bpp"); const u8 gMonIcon_DeerlingAutumn[] = INCBIN_U8("graphics/pokemon/deerling/autumn/icon.4bpp"); const u8 gMonIcon_DeerlingWinter[] = INCBIN_U8("graphics/pokemon/deerling/winter/icon.4bpp"); @@ -6367,14 +6367,14 @@ const u8 gMonIcon_MagearnaOriginalColor[] = INCBIN_U8("graphics/pokemon/magearna const u8 gMonIcon_CramorantGulping[] = INCBIN_U8("graphics/pokemon/cramorant/gulping/icon.4bpp"); const u8 gMonIcon_CramorantGorging[] = INCBIN_U8("graphics/pokemon/cramorant/gorging/icon.4bpp"); const u8 gMonIcon_ToxtricityLowKey[] = INCBIN_U8("graphics/pokemon/toxtricity/low_key/icon.4bpp"); -//const u8 gMonIcon_AlcremieRubyCream[] = INCBIN_U8("graphics/pokemon/alcremie/ruby_cream/icon.4bpp"); -//const u8 gMonIcon_AlcremieMatchaCream[] = INCBIN_U8("graphics/pokemon/alcremie/matcha_cream/icon.4bpp"); -//const u8 gMonIcon_AlcremieMintCream[] = INCBIN_U8("graphics/pokemon/alcremie/mint_cream/icon.4bpp"); -//const u8 gMonIcon_AlcremieLemonCream[] = INCBIN_U8("graphics/pokemon/alcremie/lemon_cream/icon.4bpp"); -//const u8 gMonIcon_AlcremieSaltedCream[] = INCBIN_U8("graphics/pokemon/alcremie/salted_cream/icon.4bpp"); -//const u8 gMonIcon_AlcremieRubySwirl[] = INCBIN_U8("graphics/pokemon/alcremie/ruby_swirl/icon.4bpp"); -//const u8 gMonIcon_AlcremieCaramelSwirl[] = INCBIN_U8("graphics/pokemon/alcremie/caramel_swirl/icon.4bpp"); -//const u8 gMonIcon_AlcremieRainbowSwirl[] = INCBIN_U8("graphics/pokemon/alcremie/rainbow_swirl/icon.4bpp"); +//const u8 gMonIcon_AlcremieStrawberryRubyCream[] = INCBIN_U8("graphics/pokemon/alcremie/ruby_cream/icon.4bpp"); +//const u8 gMonIcon_AlcremieStrawberryMatchaCream[] = INCBIN_U8("graphics/pokemon/alcremie/matcha_cream/icon.4bpp"); +//const u8 gMonIcon_AlcremieStrawberryMintCream[] = INCBIN_U8("graphics/pokemon/alcremie/mint_cream/icon.4bpp"); +//const u8 gMonIcon_AlcremieStrawberryLemonCream[] = INCBIN_U8("graphics/pokemon/alcremie/lemon_cream/icon.4bpp"); +//const u8 gMonIcon_AlcremieStrawberrySaltedCream[] = INCBIN_U8("graphics/pokemon/alcremie/salted_cream/icon.4bpp"); +//const u8 gMonIcon_AlcremieStrawberryRubySwirl[] = INCBIN_U8("graphics/pokemon/alcremie/ruby_swirl/icon.4bpp"); +//const u8 gMonIcon_AlcremieStrawberryCaramelSwirl[] = INCBIN_U8("graphics/pokemon/alcremie/caramel_swirl/icon.4bpp"); +//const u8 gMonIcon_AlcremieStrawberryRainbowSwirl[] = INCBIN_U8("graphics/pokemon/alcremie/rainbow_swirl/icon.4bpp"); const u8 gMonIcon_EiscueNoiceFace[] = INCBIN_U8("graphics/pokemon/eiscue/noice_face/icon.4bpp"); const u8 gMonIcon_IndeedeeFemale[] = INCBIN_U8("graphics/pokemon/indeedee/female/icon.4bpp"); const u8 gMonIcon_MorpekoHangry[] = INCBIN_U8("graphics/pokemon/morpeko/hangry/icon.4bpp"); @@ -6417,7 +6417,7 @@ const u8 gMonIcon_GrimmsnarlGigantamax[] = INCBIN_U8("graphics/pokemon/grimmsnar const u8 gMonIcon_AlcremieGigantamax[] = INCBIN_U8("graphics/pokemon/alcremie/gigantamax/icon.4bpp"); const u8 gMonIcon_CopperajahGigantamax[] = INCBIN_U8("graphics/pokemon/copperajah/gigantamax/icon.4bpp"); const u8 gMonIcon_DuraludonGigantamax[] = INCBIN_U8("graphics/pokemon/duraludon/gigantamax/icon.4bpp"); -const u8 gMonIcon_UrshifuGigantamax[] = INCBIN_U8("graphics/pokemon/urshifu/single_strike_style_gigantamax/icon.4bpp"); +const u8 gMonIcon_UrshifuSingleStrikeGigantamax[] = INCBIN_U8("graphics/pokemon/urshifu/single_strike_style_gigantamax/icon.4bpp"); const u8 gMonIcon_UrshifuRapidStrikeGigantamax[] = INCBIN_U8("graphics/pokemon/urshifu/rapid_strike_style_gigantamax/icon.4bpp"); #endif const u8 gMonIcon_Egg[] = INCBIN_U8("graphics/pokemon/egg/icon.4bpp"); diff --git a/src/data/pokemon/egg_moves.h b/src/data/pokemon/egg_moves.h index b6cc938b70..1a71800e3a 100644 --- a/src/data/pokemon/egg_moves.h +++ b/src/data/pokemon/egg_moves.h @@ -2579,7 +2579,7 @@ const u16 gEggMoves[] = { MOVE_FLOWER_SHIELD, MOVE_GRASSY_TERRAIN), - egg_moves(SHELLOS, + egg_moves(SHELLOS_WEST_SEA, MOVE_COUNTER, MOVE_MIRROR_COAT, MOVE_STOCKPILE, @@ -3865,7 +3865,7 @@ const u16 gEggMoves[] = { MOVE_ENDEAVOR, MOVE_AMNESIA), - egg_moves(ORICORIO, + egg_moves(ORICORIO_BAILE, MOVE_PLUCK, MOVE_TAILWIND, MOVE_SAFEGUARD, diff --git a/src/data/pokemon/evolution.h b/src/data/pokemon/evolution.h index b26f577257..8b3bc8023c 100644 --- a/src/data/pokemon/evolution.h +++ b/src/data/pokemon/evolution.h @@ -296,12 +296,12 @@ const struct Evolution gEvolutionTable[NUM_SPECIES][EVOS_PER_MON] = [SPECIES_BUDEW] = {{EVO_FRIENDSHIP_DAY, 0, SPECIES_ROSELIA}}, [SPECIES_CRANIDOS] = {{EVO_LEVEL, 30, SPECIES_RAMPARDOS}}, [SPECIES_SHIELDON] = {{EVO_LEVEL, 30, SPECIES_BASTIODON}}, - [SPECIES_BURMY] = {{EVO_LEVEL_FEMALE, 20, SPECIES_WORMADAM}, + [SPECIES_BURMY_PLANT_CLOAK] = {{EVO_LEVEL_FEMALE, 20, SPECIES_WORMADAM_PLANT_CLOAK}, {EVO_LEVEL_MALE, 20, SPECIES_MOTHIM}}, [SPECIES_COMBEE] = {{EVO_LEVEL_FEMALE, 21, SPECIES_VESPIQUEN}}, [SPECIES_BUIZEL] = {{EVO_LEVEL, 26, SPECIES_FLOATZEL}}, - [SPECIES_CHERUBI] = {{EVO_LEVEL, 25, SPECIES_CHERRIM}}, - [SPECIES_SHELLOS] = {{EVO_LEVEL, 30, SPECIES_GASTRODON}}, + [SPECIES_CHERUBI] = {{EVO_LEVEL, 25, SPECIES_CHERRIM_OVERCAST}}, + [SPECIES_SHELLOS_WEST_SEA] = {{EVO_LEVEL, 30, SPECIES_GASTRODON_WEST_SEA}}, [SPECIES_DRIFLOON] = {{EVO_LEVEL, 28, SPECIES_DRIFBLIM}}, [SPECIES_BUNEARY] = {{EVO_FRIENDSHIP, 0, SPECIES_LOPUNNY}}, [SPECIES_GLAMEOW] = {{EVO_LEVEL, 38, SPECIES_PURUGLY}}, @@ -362,7 +362,7 @@ const struct Evolution gEvolutionTable[NUM_SPECIES][EVOS_PER_MON] = {EVO_NONE, 0, SPECIES_LILLIGANT_HISUIAN}}, [SPECIES_SANDILE] = {{EVO_LEVEL, 29, SPECIES_KROKOROK}}, [SPECIES_KROKOROK] = {{EVO_LEVEL, 40, SPECIES_KROOKODILE}}, - [SPECIES_DARUMAKA] = {{EVO_LEVEL, 35, SPECIES_DARMANITAN}}, + [SPECIES_DARUMAKA] = {{EVO_LEVEL, 35, SPECIES_DARMANITAN_STANDARD_MODE}}, [SPECIES_DWEBBLE] = {{EVO_LEVEL, 34, SPECIES_CRUSTLE}}, [SPECIES_SCRAGGY] = {{EVO_LEVEL, 39, SPECIES_SCRAFTY}}, [SPECIES_YAMASK] = {{EVO_LEVEL, 34, SPECIES_COFAGRIGUS}}, @@ -379,7 +379,7 @@ const struct Evolution gEvolutionTable[NUM_SPECIES][EVOS_PER_MON] = [SPECIES_DUCKLETT] = {{EVO_LEVEL, 35, SPECIES_SWANNA}}, [SPECIES_VANILLITE] = {{EVO_LEVEL, 35, SPECIES_VANILLISH}}, [SPECIES_VANILLISH] = {{EVO_LEVEL, 47, SPECIES_VANILLUXE}}, - [SPECIES_DEERLING] = {{EVO_LEVEL, 34, SPECIES_SAWSBUCK}}, + [SPECIES_DEERLING_SPRING] = {{EVO_LEVEL, 34, SPECIES_SAWSBUCK_SPRING}}, [SPECIES_KARRABLAST] = {{EVO_TRADE_SPECIFIC_MON, SPECIES_SHELMET, SPECIES_ESCAVALIER}}, [SPECIES_FOONGUS] = {{EVO_LEVEL, 39, SPECIES_AMOONGUSS}}, [SPECIES_FRILLISH] = {{EVO_LEVEL, 40, SPECIES_JELLICENT}}, @@ -417,16 +417,16 @@ const struct Evolution gEvolutionTable[NUM_SPECIES][EVOS_PER_MON] = [SPECIES_FLETCHLING] = {{EVO_LEVEL, 17, SPECIES_FLETCHINDER}}, [SPECIES_FLETCHINDER] = {{EVO_LEVEL, 35, SPECIES_TALONFLAME}}, [SPECIES_SCATTERBUG] = {{EVO_LEVEL, 9, SPECIES_SPEWPA}}, - [SPECIES_SPEWPA] = {{EVO_LEVEL, 12, SPECIES_VIVILLON}}, + [SPECIES_SPEWPA] = {{EVO_LEVEL, 12, SPECIES_VIVILLON_ICY_SNOW}}, [SPECIES_LITLEO] = {{EVO_LEVEL, 35, SPECIES_PYROAR}}, - [SPECIES_FLABEBE] = {{EVO_LEVEL, 19, SPECIES_FLOETTE}}, - [SPECIES_FLOETTE] = {{EVO_ITEM, ITEM_SHINY_STONE, SPECIES_FLORGES}}, + [SPECIES_FLABEBE_RED_FLOWER] = {{EVO_LEVEL, 19, SPECIES_FLOETTE_RED_FLOWER}}, + [SPECIES_FLOETTE_RED_FLOWER] = {{EVO_ITEM, ITEM_SHINY_STONE, SPECIES_FLORGES_RED_FLOWER}}, [SPECIES_SKIDDO] = {{EVO_LEVEL, 32, SPECIES_GOGOAT}}, [SPECIES_PANCHAM] = {{EVO_LEVEL_DARK_TYPE_MON_IN_PARTY, 32, SPECIES_PANGORO}}, - [SPECIES_ESPURR] = {{EVO_LEVEL_MALE, 25, SPECIES_MEOWSTIC}, + [SPECIES_ESPURR] = {{EVO_LEVEL_MALE, 25, SPECIES_MEOWSTIC_MALE}, {EVO_LEVEL_FEMALE, 25, SPECIES_MEOWSTIC_FEMALE}}, [SPECIES_HONEDGE] = {{EVO_LEVEL, 35, SPECIES_DOUBLADE}}, - [SPECIES_DOUBLADE] = {{EVO_ITEM, ITEM_DUSK_STONE, SPECIES_AEGISLASH}}, + [SPECIES_DOUBLADE] = {{EVO_ITEM, ITEM_DUSK_STONE, SPECIES_AEGISLASH_SHIELD}}, [SPECIES_SPRITZEE] = {{EVO_TRADE_ITEM, ITEM_SACHET, SPECIES_AROMATISSE}, {EVO_ITEM, ITEM_SACHET, SPECIES_AROMATISSE}}, [SPECIES_SWIRLIX] = {{EVO_TRADE_ITEM, ITEM_WHIPPED_DREAM, SPECIES_SLURPUFF}, @@ -446,8 +446,8 @@ const struct Evolution gEvolutionTable[NUM_SPECIES][EVOS_PER_MON] = {EVO_LEVEL_FOG, 50, SPECIES_GOODRA_HISUIAN}}, [SPECIES_PHANTUMP] = {{EVO_TRADE, 0, SPECIES_TREVENANT}, {EVO_ITEM, ITEM_LINKING_CORD, SPECIES_TREVENANT}}, - [SPECIES_PUMPKABOO] = {{EVO_TRADE, 0, SPECIES_GOURGEIST}, - {EVO_ITEM, ITEM_LINKING_CORD, SPECIES_GOURGEIST}}, + [SPECIES_PUMPKABOO_AVERAGE] = {{EVO_TRADE, 0, SPECIES_GOURGEIST_AVERAGE}, + {EVO_ITEM, ITEM_LINKING_CORD, SPECIES_GOURGEIST_AVERAGE}}, [SPECIES_BERGMITE] = {{EVO_LEVEL, 37, SPECIES_AVALUGG}, {EVO_NONE, 0, SPECIES_AVALUGG_HISUIAN}}, [SPECIES_NOIBAT] = {{EVO_LEVEL, 48, SPECIES_NOIVERN}}, @@ -469,7 +469,7 @@ const struct Evolution gEvolutionTable[NUM_SPECIES][EVOS_PER_MON] = [SPECIES_CRABRAWLER] = {{EVO_SPECIFIC_MAP, MAP_SHOAL_CAVE_LOW_TIDE_ICE_ROOM, SPECIES_CRABOMINABLE}, {EVO_ITEM, ITEM_ICE_STONE, SPECIES_CRABOMINABLE}}, [SPECIES_CUTIEFLY] = {{EVO_LEVEL, 25, SPECIES_RIBOMBEE}}, - [SPECIES_ROCKRUFF] = {{EVO_LEVEL_DAY, 25, SPECIES_LYCANROC}, + [SPECIES_ROCKRUFF] = {{EVO_LEVEL_DAY, 25, SPECIES_LYCANROC_MIDDAY}, {EVO_LEVEL_NIGHT, 25, SPECIES_LYCANROC_MIDNIGHT}}, [SPECIES_MAREANIE] = {{EVO_LEVEL, 38, SPECIES_TOXAPEX}}, [SPECIES_MUDBRAY] = {{EVO_LEVEL, 30, SPECIES_MUDSDALE}}, @@ -482,7 +482,7 @@ const struct Evolution gEvolutionTable[NUM_SPECIES][EVOS_PER_MON] = [SPECIES_STEENEE] = {{EVO_MOVE, MOVE_STOMP, SPECIES_TSAREENA}}, [SPECIES_WIMPOD] = {{EVO_LEVEL, 30, SPECIES_GOLISOPOD}}, [SPECIES_SANDYGAST] = {{EVO_LEVEL, 42, SPECIES_PALOSSAND}}, - [SPECIES_TYPE_NULL] = {{EVO_FRIENDSHIP, 0, SPECIES_SILVALLY}}, + [SPECIES_TYPE_NULL] = {{EVO_FRIENDSHIP, 0, SPECIES_SILVALLY_NORMAL}}, [SPECIES_JANGMO_O] = {{EVO_LEVEL, 35, SPECIES_HAKAMO_O}}, [SPECIES_HAKAMO_O] = {{EVO_LEVEL, 45, SPECIES_KOMMO_O}}, [SPECIES_COSMOG] = {{EVO_LEVEL, 43, SPECIES_COSMOEM}}, @@ -513,30 +513,30 @@ const struct Evolution gEvolutionTable[NUM_SPECIES][EVOS_PER_MON] = {EVO_ITEM, ITEM_SWEET_APPLE, SPECIES_APPLETUN}}, [SPECIES_SILICOBRA] = {{EVO_LEVEL, 36, SPECIES_SANDACONDA}}, [SPECIES_ARROKUDA] = {{EVO_LEVEL, 26, SPECIES_BARRASKEWDA}}, - [SPECIES_TOXEL] = {{EVO_LEVEL_NATURE_AMPED, 30, SPECIES_TOXTRICITY}, + [SPECIES_TOXEL] = {{EVO_LEVEL_NATURE_AMPED, 30, SPECIES_TOXTRICITY_AMPED}, {EVO_LEVEL_NATURE_LOW_KEY, 30, SPECIES_TOXTRICITY_LOW_KEY}}, [SPECIES_SIZZLIPEDE] = {{EVO_LEVEL, 28, SPECIES_CENTISKORCH}}, [SPECIES_CLOBBOPUS] = {{EVO_MOVE, MOVE_TAUNT, SPECIES_GRAPPLOCT}}, - [SPECIES_SINISTEA] = {{EVO_ITEM, ITEM_CRACKED_POT, SPECIES_POLTEAGEIST}}, + [SPECIES_SINISTEA_PHONY] = {{EVO_ITEM, ITEM_CRACKED_POT, SPECIES_POLTEAGEIST_PHONY}}, [SPECIES_HATENNA] = {{EVO_LEVEL, 32, SPECIES_HATTREM}}, [SPECIES_HATTREM] = {{EVO_LEVEL, 42, SPECIES_HATTERENE}}, [SPECIES_IMPIDIMP] = {{EVO_LEVEL, 32, SPECIES_MORGREM}}, [SPECIES_MORGREM] = {{EVO_LEVEL, 42, SPECIES_GRIMMSNARL}}, - [SPECIES_MILCERY] = {{EVO_LEVEL, 0, SPECIES_ALCREMIE}, - {EVO_LEVEL, 0, SPECIES_ALCREMIE_RUBY_CREAM}, - {EVO_LEVEL, 0, SPECIES_ALCREMIE_MATCHA_CREAM}, - {EVO_LEVEL, 0, SPECIES_ALCREMIE_MINT_CREAM}, - {EVO_LEVEL, 0, SPECIES_ALCREMIE_LEMON_CREAM}, - {EVO_LEVEL, 0, SPECIES_ALCREMIE_SALTED_CREAM}, - {EVO_LEVEL, 0, SPECIES_ALCREMIE_RUBY_SWIRL}, - {EVO_LEVEL, 0, SPECIES_ALCREMIE_CARAMEL_SWIRL}, - {EVO_LEVEL, 0, SPECIES_ALCREMIE_RAINBOW_SWIRL}}, + [SPECIES_MILCERY] = {{EVO_LEVEL, 0, SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM}, + {EVO_LEVEL, 0, SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM}, + {EVO_LEVEL, 0, SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM}, + {EVO_LEVEL, 0, SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM}, + {EVO_LEVEL, 0, SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM}, + {EVO_LEVEL, 0, SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM}, + {EVO_LEVEL, 0, SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL}, + {EVO_LEVEL, 0, SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL}, + {EVO_LEVEL, 0, SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL}}, [SPECIES_SNOM] = {{EVO_FRIENDSHIP_NIGHT, 0, SPECIES_FROSMOTH}}, [SPECIES_CUFANT] = {{EVO_LEVEL, 34, SPECIES_COPPERAJAH}}, [SPECIES_DREEPY] = {{EVO_LEVEL, 50, SPECIES_DRAKLOAK}}, [SPECIES_DRAKLOAK] = {{EVO_LEVEL, 60, SPECIES_DRAGAPULT}}, - [SPECIES_KUBFU] = {{EVO_DARK_SCROLL, 0, SPECIES_URSHIFU}, - {EVO_ITEM, ITEM_SCROLL_OF_DARKNESS, SPECIES_URSHIFU}, + [SPECIES_KUBFU] = {{EVO_DARK_SCROLL, 0, SPECIES_URSHIFU_SINGLE_STRIKE_STYLE}, + {EVO_ITEM, ITEM_SCROLL_OF_DARKNESS, SPECIES_URSHIFU_SINGLE_STRIKE_STYLE}, {EVO_WATER_SCROLL, 0, SPECIES_URSHIFU_RAPID_STRIKE_STYLE}, {EVO_ITEM, ITEM_SCROLL_OF_WATERS, SPECIES_URSHIFU_RAPID_STRIKE_STYLE}}, #endif @@ -561,11 +561,11 @@ const struct Evolution gEvolutionTable[NUM_SPECIES][EVOS_PER_MON] = [SPECIES_CORSOLA_GALARIAN] = {{EVO_LEVEL, 38, SPECIES_CURSOLA}}, [SPECIES_ZIGZAGOON_GALARIAN] = {{EVO_LEVEL, 20, SPECIES_LINOONE_GALARIAN}}, [SPECIES_LINOONE_GALARIAN] = {{EVO_LEVEL_NIGHT, 35, SPECIES_OBSTAGOON}}, - [SPECIES_DARUMAKA_GALARIAN] = {{EVO_ITEM, ITEM_ICE_STONE, SPECIES_DARMANITAN_GALARIAN}}, + [SPECIES_DARUMAKA_GALARIAN] = {{EVO_ITEM, ITEM_ICE_STONE, SPECIES_DARMANITAN_GALARIAN_STANDARD_MODE}}, [SPECIES_YAMASK_GALARIAN] = {{EVO_SCRIPT_TRIGGER_DMG, 49, SPECIES_RUNERIGUS}}, #else [SPECIES_ZIGZAGOON_GALARIAN] = {{EVO_LEVEL, 20, SPECIES_LINOONE_GALARIAN}}, - [SPECIES_DARUMAKA_GALARIAN] = {{EVO_ITEM, ITEM_ICE_STONE, SPECIES_DARMANITAN_GALARIAN}}, + [SPECIES_DARUMAKA_GALARIAN] = {{EVO_ITEM, ITEM_ICE_STONE, SPECIES_DARMANITAN_GALARIAN_STANDARD_MODE}}, #endif #if P_GEN_4_POKEMON == TRUE [SPECIES_BURMY_SANDY_CLOAK] = {{EVO_LEVEL_FEMALE, 20, SPECIES_WORMADAM_SANDY_CLOAK}, diff --git a/src/data/pokemon/form_change_table_pointers.h b/src/data/pokemon/form_change_table_pointers.h index 9e81bdab67..bd8f42a3e2 100644 --- a/src/data/pokemon/form_change_table_pointers.h +++ b/src/data/pokemon/form_change_table_pointers.h @@ -84,7 +84,7 @@ const struct FormChange *const gFormChangeTablePointers[NUM_SPECIES] = [SPECIES_ALTARIA_MEGA] = sAltariaFormChangeTable, [SPECIES_ABSOL] = sAbsolFormChangeTable, [SPECIES_ABSOL_MEGA] = sAbsolFormChangeTable, - [SPECIES_CASTFORM] = sCastformFormChangeTable, + [SPECIES_CASTFORM_NORMAL] = sCastformFormChangeTable, [SPECIES_CASTFORM_SUNNY] = sCastformFormChangeTable, [SPECIES_CASTFORM_RAINY] = sCastformFormChangeTable, [SPECIES_CASTFORM_SNOWY] = sCastformFormChangeTable, @@ -109,10 +109,10 @@ const struct FormChange *const gFormChangeTablePointers[NUM_SPECIES] = [SPECIES_RAYQUAZA] = sRayquazaFormChangeTable, [SPECIES_RAYQUAZA_MEGA] = sRayquazaFormChangeTable, #if P_GEN_4_POKEMON == TRUE - [SPECIES_BURMY] = sBurmyFormChangeTable, + [SPECIES_BURMY_PLANT_CLOAK] = sBurmyFormChangeTable, [SPECIES_BURMY_SANDY_CLOAK] = sBurmyFormChangeTable, [SPECIES_BURMY_TRASH_CLOAK] = sBurmyFormChangeTable, - [SPECIES_CHERRIM] = sCherrimFormChangeTable, + [SPECIES_CHERRIM_OVERCAST] = sCherrimFormChangeTable, [SPECIES_CHERRIM_SUNSHINE] = sCherrimFormChangeTable, [SPECIES_LOPUNNY] = sLopunnyFormChangeTable, [SPECIES_LOPUNNY_MEGA] = sLopunnyFormChangeTable, @@ -128,11 +128,11 @@ const struct FormChange *const gFormChangeTablePointers[NUM_SPECIES] = [SPECIES_DIALGA_ORIGIN] = sDialgaFormChangeTable, [SPECIES_PALKIA] = sPalkiaFormChangeTable, [SPECIES_PALKIA_ORIGIN] = sPalkiaFormChangeTable, - [SPECIES_GIRATINA] = sGiratinaFormChangeTable, + [SPECIES_GIRATINA_ALTERED] = sGiratinaFormChangeTable, [SPECIES_GIRATINA_ORIGIN] = sGiratinaFormChangeTable, - [SPECIES_SHAYMIN] = sShayminFormChangeTable, + [SPECIES_SHAYMIN_LAND] = sShayminFormChangeTable, [SPECIES_SHAYMIN_SKY] = sShayminFormChangeTable, - [SPECIES_ARCEUS] = sArceusFormChangeTable, + [SPECIES_ARCEUS_NORMAL] = sArceusFormChangeTable, [SPECIES_ARCEUS_FIGHTING] = sArceusFormChangeTable, [SPECIES_ARCEUS_FLYING] = sArceusFormChangeTable, [SPECIES_ARCEUS_POISON] = sArceusFormChangeTable, @@ -154,21 +154,21 @@ const struct FormChange *const gFormChangeTablePointers[NUM_SPECIES] = #if P_GEN_5_POKEMON == TRUE [SPECIES_AUDINO] = sAudinoFormChangeTable, [SPECIES_AUDINO_MEGA] = sAudinoFormChangeTable, - [SPECIES_DARMANITAN] = sDarmanitanFormChangeTable, + [SPECIES_DARMANITAN_STANDARD_MODE] = sDarmanitanFormChangeTable, [SPECIES_DARMANITAN_ZEN_MODE] = sDarmanitanFormChangeTable, - [SPECIES_DARMANITAN_GALARIAN] = sDarmanitanGalarianFormChangeTable, - [SPECIES_DARMANITAN_ZEN_MODE_GALARIAN] = sDarmanitanGalarianFormChangeTable, + [SPECIES_DARMANITAN_GALARIAN_STANDARD_MODE] = sDarmanitanGalarianFormChangeTable, + [SPECIES_DARMANITAN_GALARIAN_ZEN_MODE] = sDarmanitanGalarianFormChangeTable, [SPECIES_GARBODOR] = sGarbodorFormChangeTable, [SPECIES_GARBODOR_GIGANTAMAX] = sGarbodorFormChangeTable, - [SPECIES_TORNADUS] = sTornadusFormChangeTable, + [SPECIES_TORNADUS_INCARNATE] = sTornadusFormChangeTable, [SPECIES_TORNADUS_THERIAN] = sTornadusFormChangeTable, - [SPECIES_THUNDURUS] = sThundurusFormChangeTable, + [SPECIES_THUNDURUS_INCARNATE] = sThundurusFormChangeTable, [SPECIES_THUNDURUS_THERIAN] = sThundurusFormChangeTable, - [SPECIES_LANDORUS] = sLandorusFormChangeTable, + [SPECIES_LANDORUS_INCARNATE] = sLandorusFormChangeTable, [SPECIES_LANDORUS_THERIAN] = sLandorusFormChangeTable, - [SPECIES_KELDEO] = sKeldeoFormChangeTable, + [SPECIES_KELDEO_ORDINARY] = sKeldeoFormChangeTable, [SPECIES_KELDEO_RESOLUTE] = sKeldeoFormChangeTable, - [SPECIES_MELOETTA] = sMeloettaFormChangeTable, + [SPECIES_MELOETTA_ARIA] = sMeloettaFormChangeTable, [SPECIES_MELOETTA_PIROUETTE] = sMeloettaFormChangeTable, [SPECIES_GENESECT] = sGenesectFormChangeTable, [SPECIES_GENESECT_DOUSE_DRIVE] = sGenesectFormChangeTable, @@ -179,26 +179,26 @@ const struct FormChange *const gFormChangeTablePointers[NUM_SPECIES] = #if P_GEN_6_POKEMON == TRUE [SPECIES_GRENINJA_BATTLE_BOND] = sGreninjaBattleBondFormChangeTable, [SPECIES_GRENINJA_ASH] = sGreninjaBattleBondFormChangeTable, - [SPECIES_AEGISLASH] = sAegislashFormChangeTable, + [SPECIES_AEGISLASH_SHIELD] = sAegislashFormChangeTable, [SPECIES_AEGISLASH_BLADE] = sAegislashFormChangeTable, - [SPECIES_XERNEAS] = sXerneasFormChangeTable, + [SPECIES_XERNEAS_NEUTRAL] = sXerneasFormChangeTable, [SPECIES_XERNEAS_ACTIVE] = sXerneasFormChangeTable, [SPECIES_ZYGARDE_10_POWER_CONSTRUCT] = sZygardePowerConstructFormChangeTable, [SPECIES_ZYGARDE_50_POWER_CONSTRUCT] = sZygardePowerConstructFormChangeTable, [SPECIES_ZYGARDE_COMPLETE] = sZygardePowerConstructFormChangeTable, [SPECIES_DIANCIE] = sDiancieFormChangeTable, [SPECIES_DIANCIE_MEGA] = sDiancieFormChangeTable, - [SPECIES_HOOPA] = sHoopaFormChangeTable, + [SPECIES_HOOPA_CONFINED] = sHoopaFormChangeTable, [SPECIES_HOOPA_UNBOUND] = sHoopaFormChangeTable, #endif #if P_GEN_7_POKEMON == TRUE - [SPECIES_ORICORIO] = sOricorioFormChangeTable, + [SPECIES_ORICORIO_BAILE] = sOricorioFormChangeTable, [SPECIES_ORICORIO_POM_POM] = sOricorioFormChangeTable, [SPECIES_ORICORIO_PAU] = sOricorioFormChangeTable, [SPECIES_ORICORIO_SENSU] = sOricorioFormChangeTable, - [SPECIES_WISHIWASHI] = sWishiwashiFormChangeTable, + [SPECIES_WISHIWASHI_SOLO] = sWishiwashiFormChangeTable, [SPECIES_WISHIWASHI_SCHOOL] = sWishiwashiFormChangeTable, - [SPECIES_SILVALLY] = sSilvallyFormChangeTable, + [SPECIES_SILVALLY_NORMAL] = sSilvallyFormChangeTable, [SPECIES_SILVALLY_BUG] = sSilvallyFormChangeTable, [SPECIES_SILVALLY_DARK] = sSilvallyFormChangeTable, [SPECIES_SILVALLY_DRAGON] = sSilvallyFormChangeTable, @@ -216,9 +216,9 @@ const struct FormChange *const gFormChangeTablePointers[NUM_SPECIES] = [SPECIES_SILVALLY_ROCK] = sSilvallyFormChangeTable, [SPECIES_SILVALLY_STEEL] = sSilvallyFormChangeTable, [SPECIES_SILVALLY_WATER] = sSilvallyFormChangeTable, - [SPECIES_MIMIKYU] = sMimikyuFormChangeTable, + [SPECIES_MIMIKYU_DISGUISED] = sMimikyuFormChangeTable, [SPECIES_MIMIKYU_BUSTED] = sMimikyuFormChangeTable, - [SPECIES_MINIOR] = sMiniorRedFormChangeTable, + [SPECIES_MINIOR_METEOR_RED] = sMiniorRedFormChangeTable, [SPECIES_MINIOR_CORE_RED] = sMiniorRedFormChangeTable, [SPECIES_MINIOR_METEOR_BLUE] = sMiniorBlueFormChangeTable, [SPECIES_MINIOR_CORE_BLUE] = sMiniorBlueFormChangeTable, @@ -273,23 +273,23 @@ const struct FormChange *const gFormChangeTablePointers[NUM_SPECIES] = [SPECIES_GRIMMSNARL_GIGANTAMAX] = sGrimmsnarlFormChangeTable, [SPECIES_ALCREMIE] = sAlcremieFormChangeTable, [SPECIES_ALCREMIE_GIGANTAMAX] = sAlcremieFormChangeTable, - [SPECIES_EISCUE] = sEiscueFormChangeTable, + [SPECIES_EISCUE_ICE_FACE] = sEiscueFormChangeTable, [SPECIES_EISCUE_NOICE_FACE] = sEiscueFormChangeTable, - [SPECIES_MORPEKO] = sMorpekoFormChangeTable, + [SPECIES_MORPEKO_FULL_BELLY] = sMorpekoFormChangeTable, [SPECIES_MORPEKO_HANGRY] = sMorpekoFormChangeTable, [SPECIES_COPPERAJAH] = sCopperajahFormChangeTable, [SPECIES_COPPERAJAH_GIGANTAMAX] = sCopperajahFormChangeTable, [SPECIES_DURALUDON] = sDuraludonFormChangeTable, [SPECIES_DURALUDON_GIGANTAMAX] = sDuraludonFormChangeTable, - [SPECIES_ZACIAN] = sZacianFormChangeTable, + [SPECIES_ZACIAN_HERO_OF_MANY_BATTLES] = sZacianFormChangeTable, [SPECIES_ZACIAN_CROWNED_SWORD] = sZacianFormChangeTable, - [SPECIES_ZAMAZENTA] = sZamazentaFormChangeTable, + [SPECIES_ZAMAZENTA_HERO_OF_MANY_BATTLES] = sZamazentaFormChangeTable, [SPECIES_ZAMAZENTA_CROWNED_SHIELD] = sZamazentaFormChangeTable, - [SPECIES_URSHIFU] = sUrshifuFormChangeTable, - [SPECIES_URSHIFU_GIGANTAMAX] = sUrshifuFormChangeTable, + [SPECIES_URSHIFU_SINGLE_STRIKE_STYLE] = sUrshifuSingleStrikeFormChangeTable, + [SPECIES_URSHIFU_SINGLE_STRIKE_STYLE_GIGANTAMAX] = sUrshifuSingleStrikeFormChangeTable, [SPECIES_URSHIFU_RAPID_STRIKE_STYLE] = sUrshifuRapidStrikeFormChangeTable, [SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX] = sUrshifuRapidStrikeFormChangeTable, - [SPECIES_ENAMORUS] = sEnamorusFormChangeTable, + [SPECIES_ENAMORUS_INCARNATE] = sEnamorusFormChangeTable, [SPECIES_ENAMORUS_THERIAN] = sEnamorusFormChangeTable, #endif }; diff --git a/src/data/pokemon/form_change_tables.h b/src/data/pokemon/form_change_tables.h index 81ca9bd150..f339130fac 100644 --- a/src/data/pokemon/form_change_tables.h +++ b/src/data/pokemon/form_change_tables.h @@ -164,18 +164,18 @@ static const struct FormChange sCastformFormChangeTable[] = { {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CASTFORM_SUNNY, B_WEATHER_SUN, ABILITY_FORECAST}, {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CASTFORM_RAINY, B_WEATHER_RAIN, ABILITY_FORECAST}, {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CASTFORM_SNOWY, B_WEATHER_HAIL | B_WEATHER_SNOW, ABILITY_FORECAST}, - {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CASTFORM, ~(B_WEATHER_SUN | B_WEATHER_RAIN | B_WEATHER_HAIL | B_WEATHER_SNOW), ABILITY_FORECAST}, - {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CASTFORM, B_WEATHER_NONE, ABILITY_FORECAST}, + {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CASTFORM_NORMAL, ~(B_WEATHER_SUN | B_WEATHER_RAIN | B_WEATHER_HAIL | B_WEATHER_SNOW), ABILITY_FORECAST}, + {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CASTFORM_NORMAL, B_WEATHER_NONE, ABILITY_FORECAST}, #else {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CASTFORM_SUNNY, B_WEATHER_SUN}, {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CASTFORM_RAINY, B_WEATHER_RAIN}, {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CASTFORM_SNOWY, B_WEATHER_HAIL | B_WEATHER_SNOW}, - {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CASTFORM, ~(B_WEATHER_SUN | B_WEATHER_RAIN | B_WEATHER_HAIL | B_WEATHER_SNOW)}, - {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CASTFORM, B_WEATHER_NONE}, + {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CASTFORM_NORMAL, ~(B_WEATHER_SUN | B_WEATHER_RAIN | B_WEATHER_HAIL | B_WEATHER_SNOW)}, + {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CASTFORM_NORMAL, B_WEATHER_NONE}, #endif - {FORM_CHANGE_BATTLE_SWITCH, SPECIES_CASTFORM}, - {FORM_CHANGE_FAINT, SPECIES_CASTFORM}, - {FORM_CHANGE_END_BATTLE, SPECIES_CASTFORM}, + {FORM_CHANGE_BATTLE_SWITCH, SPECIES_CASTFORM_NORMAL}, + {FORM_CHANGE_FAINT, SPECIES_CASTFORM_NORMAL}, + {FORM_CHANGE_END_BATTLE, SPECIES_CASTFORM_NORMAL}, {FORM_CHANGE_TERMINATOR}, }; @@ -231,11 +231,11 @@ static const struct FormChange sRayquazaFormChangeTable[] = { #if P_GEN_4_POKEMON == TRUE static const struct FormChange sBurmyFormChangeTable[] = { - {FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY, BATTLE_TERRAIN_GRASS}, - {FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY, BATTLE_TERRAIN_LONG_GRASS}, - {FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY, BATTLE_TERRAIN_POND}, - {FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY, BATTLE_TERRAIN_MOUNTAIN}, - {FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY, BATTLE_TERRAIN_PLAIN}, + {FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY_PLANT_CLOAK, BATTLE_TERRAIN_GRASS}, + {FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY_PLANT_CLOAK, BATTLE_TERRAIN_LONG_GRASS}, + {FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY_PLANT_CLOAK, BATTLE_TERRAIN_POND}, + {FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY_PLANT_CLOAK, BATTLE_TERRAIN_MOUNTAIN}, + {FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY_PLANT_CLOAK, BATTLE_TERRAIN_PLAIN}, {FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY_SANDY_CLOAK, BATTLE_TERRAIN_CAVE}, {FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY_SANDY_CLOAK, BATTLE_TERRAIN_SAND}, {FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY_TRASH_CLOAK, BATTLE_TERRAIN_BUILDING}, @@ -245,16 +245,16 @@ static const struct FormChange sBurmyFormChangeTable[] = { static const struct FormChange sCherrimFormChangeTable[] = { #if B_WEATHER_FORMS >= GEN_5 {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CHERRIM_SUNSHINE, B_WEATHER_SUN, ABILITY_FLOWER_GIFT}, - {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CHERRIM, ~B_WEATHER_SUN, ABILITY_FLOWER_GIFT}, - {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CHERRIM, B_WEATHER_NONE, ABILITY_FLOWER_GIFT}, + {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CHERRIM_OVERCAST, ~B_WEATHER_SUN, ABILITY_FLOWER_GIFT}, + {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CHERRIM_OVERCAST, B_WEATHER_NONE, ABILITY_FLOWER_GIFT}, #else {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CHERRIM_SUNSHINE, B_WEATHER_SUN}, - {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CHERRIM, ~B_WEATHER_SUN}, - {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CHERRIM, B_WEATHER_NONE}, + {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CHERRIM_OVERCAST, ~B_WEATHER_SUN}, + {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CHERRIM_OVERCAST, B_WEATHER_NONE}, #endif - {FORM_CHANGE_BATTLE_SWITCH, SPECIES_CHERRIM}, - {FORM_CHANGE_FAINT, SPECIES_CHERRIM}, - {FORM_CHANGE_END_BATTLE, SPECIES_CHERRIM}, + {FORM_CHANGE_BATTLE_SWITCH, SPECIES_CHERRIM_OVERCAST}, + {FORM_CHANGE_FAINT, SPECIES_CHERRIM_OVERCAST}, + {FORM_CHANGE_END_BATTLE, SPECIES_CHERRIM_OVERCAST}, {FORM_CHANGE_TERMINATOR}, }; @@ -296,7 +296,7 @@ static const struct FormChange sPalkiaFormChangeTable[] = { }; static const struct FormChange sGiratinaFormChangeTable[] = { - {FORM_CHANGE_ITEM_HOLD, SPECIES_GIRATINA, ITEM_NONE}, + {FORM_CHANGE_ITEM_HOLD, SPECIES_GIRATINA_ALTERED, ITEM_NONE}, #if I_GRISEOUS_ORB_FORM_CHANGE < GEN_9 {FORM_CHANGE_ITEM_HOLD, SPECIES_GIRATINA_ORIGIN, ITEM_GRISEOUS_ORB}, #endif @@ -306,12 +306,12 @@ static const struct FormChange sGiratinaFormChangeTable[] = { static const struct FormChange sShayminFormChangeTable[] = { {FORM_CHANGE_ITEM_USE, SPECIES_SHAYMIN_SKY, ITEM_GRACIDEA, DAY}, - // {FORM_CHANGE_WITHDRAW, SPECIES_SHAYMIN}, + // {FORM_CHANGE_WITHDRAW, SPECIES_SHAYMIN_LAND}, {FORM_CHANGE_TERMINATOR}, }; static const struct FormChange sArceusFormChangeTable[] = { - {FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS, ITEM_NONE, ABILITY_MULTITYPE}, + {FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS_NORMAL, ITEM_NONE, ABILITY_MULTITYPE}, {FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS_FIGHTING, ITEM_FIST_PLATE, ABILITY_MULTITYPE}, {FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS_FIGHTING, ITEM_FIGHTINIUM_Z, ABILITY_MULTITYPE}, {FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS_FLYING, ITEM_SKY_PLATE, ABILITY_MULTITYPE}, @@ -357,48 +357,48 @@ static const struct FormChange sAudinoFormChangeTable[] = { }; static const struct FormChange sDarmanitanFormChangeTable[] = { - {FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_DARMANITAN, ABILITY_ZEN_MODE, HP_HIGHER_THAN, 50}, - {FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_DARMANITAN_ZEN_MODE, ABILITY_ZEN_MODE, HP_LOWER_EQ_THAN, 50}, - {FORM_CHANGE_FAINT, SPECIES_DARMANITAN}, - {FORM_CHANGE_END_BATTLE, SPECIES_DARMANITAN}, + {FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_DARMANITAN_STANDARD_MODE, ABILITY_ZEN_MODE, HP_HIGHER_THAN, 50}, + {FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_DARMANITAN_ZEN_MODE, ABILITY_ZEN_MODE, HP_LOWER_EQ_THAN, 50}, + {FORM_CHANGE_FAINT, SPECIES_DARMANITAN_STANDARD_MODE}, + {FORM_CHANGE_END_BATTLE, SPECIES_DARMANITAN_STANDARD_MODE}, {FORM_CHANGE_TERMINATOR}, }; static const struct FormChange sDarmanitanGalarianFormChangeTable[] = { - {FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_DARMANITAN_GALARIAN, ABILITY_ZEN_MODE, HP_HIGHER_THAN, 50}, - {FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_DARMANITAN_ZEN_MODE_GALARIAN, ABILITY_ZEN_MODE, HP_LOWER_EQ_THAN, 50}, - {FORM_CHANGE_FAINT, SPECIES_DARMANITAN_GALARIAN}, - {FORM_CHANGE_END_BATTLE, SPECIES_DARMANITAN_GALARIAN}, + {FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_DARMANITAN_GALARIAN_STANDARD_MODE, ABILITY_ZEN_MODE, HP_HIGHER_THAN, 50}, + {FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_DARMANITAN_GALARIAN_ZEN_MODE, ABILITY_ZEN_MODE, HP_LOWER_EQ_THAN, 50}, + {FORM_CHANGE_FAINT, SPECIES_DARMANITAN_GALARIAN_STANDARD_MODE}, + {FORM_CHANGE_END_BATTLE, SPECIES_DARMANITAN_GALARIAN_STANDARD_MODE}, {FORM_CHANGE_TERMINATOR}, }; static const struct FormChange sMeloettaFormChangeTable[] = { - {FORM_CHANGE_FAINT, SPECIES_MELOETTA}, - {FORM_CHANGE_END_BATTLE, SPECIES_MELOETTA}, + {FORM_CHANGE_FAINT, SPECIES_MELOETTA_ARIA}, + {FORM_CHANGE_END_BATTLE, SPECIES_MELOETTA_ARIA}, {FORM_CHANGE_TERMINATOR}, }; static const struct FormChange sTornadusFormChangeTable[] = { - {FORM_CHANGE_ITEM_USE, SPECIES_TORNADUS_THERIAN, ITEM_REVEAL_GLASS}, - {FORM_CHANGE_ITEM_USE, SPECIES_TORNADUS, ITEM_REVEAL_GLASS}, + {FORM_CHANGE_ITEM_USE, SPECIES_TORNADUS_THERIAN, ITEM_REVEAL_GLASS}, + {FORM_CHANGE_ITEM_USE, SPECIES_TORNADUS_INCARNATE, ITEM_REVEAL_GLASS}, {FORM_CHANGE_TERMINATOR}, }; static const struct FormChange sThundurusFormChangeTable[] = { - {FORM_CHANGE_ITEM_USE, SPECIES_THUNDURUS_THERIAN, ITEM_REVEAL_GLASS}, - {FORM_CHANGE_ITEM_USE, SPECIES_THUNDURUS, ITEM_REVEAL_GLASS}, + {FORM_CHANGE_ITEM_USE, SPECIES_THUNDURUS_THERIAN, ITEM_REVEAL_GLASS}, + {FORM_CHANGE_ITEM_USE, SPECIES_THUNDURUS_INCARNATE, ITEM_REVEAL_GLASS}, {FORM_CHANGE_TERMINATOR}, }; static const struct FormChange sLandorusFormChangeTable[] = { - {FORM_CHANGE_ITEM_USE, SPECIES_LANDORUS_THERIAN, ITEM_REVEAL_GLASS}, - {FORM_CHANGE_ITEM_USE, SPECIES_LANDORUS, ITEM_REVEAL_GLASS}, + {FORM_CHANGE_ITEM_USE, SPECIES_LANDORUS_THERIAN, ITEM_REVEAL_GLASS}, + {FORM_CHANGE_ITEM_USE, SPECIES_LANDORUS_INCARNATE, ITEM_REVEAL_GLASS}, {FORM_CHANGE_TERMINATOR}, }; static const struct FormChange sKeldeoFormChangeTable[] = { // {FORM_CHANGE_MOVE, SPECIES_KELDEO_RESOLUTE, MOVE_SECRET_SWORD, WHEN_LEARNED}, - // {FORM_CHANGE_MOVE, SPECIES_KELDEO, MOVE_SECRET_SWORD, WHEN_FORGOTTEN}, + // {FORM_CHANGE_MOVE, SPECIES_KELDEO_ORDINARY, MOVE_SECRET_SWORD, WHEN_FORGOTTEN}, {FORM_CHANGE_TERMINATOR}, }; @@ -420,15 +420,15 @@ static const struct FormChange sGreninjaBattleBondFormChangeTable[] = { }; static const struct FormChange sAegislashFormChangeTable[] = { - {FORM_CHANGE_BATTLE_SWITCH, SPECIES_AEGISLASH}, - {FORM_CHANGE_FAINT, SPECIES_AEGISLASH}, - {FORM_CHANGE_END_BATTLE, SPECIES_AEGISLASH}, + {FORM_CHANGE_BATTLE_SWITCH, SPECIES_AEGISLASH_SHIELD}, + {FORM_CHANGE_FAINT, SPECIES_AEGISLASH_SHIELD}, + {FORM_CHANGE_END_BATTLE, SPECIES_AEGISLASH_SHIELD}, {FORM_CHANGE_TERMINATOR}, }; static const struct FormChange sXerneasFormChangeTable[] = { {FORM_CHANGE_BEGIN_BATTLE, SPECIES_XERNEAS_ACTIVE}, - {FORM_CHANGE_END_BATTLE, SPECIES_XERNEAS, }, + {FORM_CHANGE_END_BATTLE, SPECIES_XERNEAS_NEUTRAL}, {FORM_CHANGE_TERMINATOR}, }; @@ -445,15 +445,15 @@ static const struct FormChange sDiancieFormChangeTable[] = { }; static const struct FormChange sHoopaFormChangeTable[] = { - {FORM_CHANGE_ITEM_USE, SPECIES_HOOPA_UNBOUND, ITEM_PRISON_BOTTLE, SPECIES_HOOPA}, - {FORM_CHANGE_WITHDRAW, SPECIES_HOOPA}, + {FORM_CHANGE_ITEM_USE, SPECIES_HOOPA_UNBOUND, ITEM_PRISON_BOTTLE, SPECIES_HOOPA_CONFINED}, + {FORM_CHANGE_WITHDRAW, SPECIES_HOOPA_CONFINED}, {FORM_CHANGE_TERMINATOR}, }; #endif #if P_GEN_7_POKEMON == TRUE static const struct FormChange sOricorioFormChangeTable[] = { - {FORM_CHANGE_ITEM_USE, SPECIES_ORICORIO, ITEM_RED_NECTAR}, + {FORM_CHANGE_ITEM_USE, SPECIES_ORICORIO_BAILE, ITEM_RED_NECTAR}, {FORM_CHANGE_ITEM_USE, SPECIES_ORICORIO_POM_POM, ITEM_YELLOW_NECTAR}, {FORM_CHANGE_ITEM_USE, SPECIES_ORICORIO_PAU, ITEM_PINK_NECTAR}, {FORM_CHANGE_ITEM_USE, SPECIES_ORICORIO_SENSU, ITEM_PURPLE_NECTAR}, @@ -461,15 +461,15 @@ static const struct FormChange sOricorioFormChangeTable[] = { }; static const struct FormChange sWishiwashiFormChangeTable[] = { {FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_WISHIWASHI_SCHOOL, ABILITY_SCHOOLING, HP_HIGHER_THAN, 25}, - {FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_WISHIWASHI, ABILITY_SCHOOLING, HP_LOWER_EQ_THAN, 25}, - {FORM_CHANGE_BATTLE_SWITCH, SPECIES_WISHIWASHI}, - {FORM_CHANGE_FAINT, SPECIES_WISHIWASHI}, - {FORM_CHANGE_END_BATTLE, SPECIES_WISHIWASHI}, + {FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_WISHIWASHI_SOLO, ABILITY_SCHOOLING, HP_LOWER_EQ_THAN, 25}, + {FORM_CHANGE_BATTLE_SWITCH, SPECIES_WISHIWASHI_SOLO}, + {FORM_CHANGE_FAINT, SPECIES_WISHIWASHI_SOLO}, + {FORM_CHANGE_END_BATTLE, SPECIES_WISHIWASHI_SOLO}, {FORM_CHANGE_TERMINATOR}, }; static const struct FormChange sSilvallyFormChangeTable[] = { - {FORM_CHANGE_ITEM_HOLD, SPECIES_SILVALLY, ITEM_NONE, ABILITY_RKS_SYSTEM}, + {FORM_CHANGE_ITEM_HOLD, SPECIES_SILVALLY_NORMAL, ITEM_NONE, ABILITY_RKS_SYSTEM}, {FORM_CHANGE_ITEM_HOLD, SPECIES_SILVALLY_FIGHTING, ITEM_FIGHTING_MEMORY, ABILITY_RKS_SYSTEM}, {FORM_CHANGE_ITEM_HOLD, SPECIES_SILVALLY_FLYING, ITEM_FLYING_MEMORY, ABILITY_RKS_SYSTEM}, {FORM_CHANGE_ITEM_HOLD, SPECIES_SILVALLY_POISON, ITEM_POISON_MEMORY, ABILITY_RKS_SYSTEM}, @@ -491,14 +491,14 @@ static const struct FormChange sSilvallyFormChangeTable[] = { }; static const struct FormChange sMimikyuFormChangeTable[] = { - {FORM_CHANGE_FAINT, SPECIES_MIMIKYU}, - {FORM_CHANGE_END_BATTLE, SPECIES_MIMIKYU}, + {FORM_CHANGE_FAINT, SPECIES_MIMIKYU_DISGUISED}, + {FORM_CHANGE_END_BATTLE, SPECIES_MIMIKYU_DISGUISED}, {FORM_CHANGE_TERMINATOR}, }; static const struct FormChange sMiniorRedFormChangeTable[] = { - {FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_MINIOR, ABILITY_SHIELDS_DOWN, HP_HIGHER_THAN, 50}, - {FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_MINIOR_CORE_RED, ABILITY_SHIELDS_DOWN, HP_LOWER_EQ_THAN, 50}, + {FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_MINIOR_METEOR_RED, ABILITY_SHIELDS_DOWN, HP_HIGHER_THAN, 50}, + {FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_MINIOR_CORE_RED, ABILITY_SHIELDS_DOWN, HP_LOWER_EQ_THAN, 50}, {FORM_CHANGE_BATTLE_SWITCH, SPECIES_MINIOR_CORE_RED}, {FORM_CHANGE_FAINT, SPECIES_MINIOR_CORE_RED}, {FORM_CHANGE_END_BATTLE, SPECIES_MINIOR_CORE_RED}, @@ -573,35 +573,35 @@ static const struct FormChange sCramorantFormChangeTable[] = { }; static const struct FormChange sEiscueFormChangeTable[] = { - {FORM_CHANGE_FAINT, SPECIES_EISCUE}, - {FORM_CHANGE_END_BATTLE, SPECIES_EISCUE}, + {FORM_CHANGE_FAINT, SPECIES_EISCUE_ICE_FACE}, + {FORM_CHANGE_END_BATTLE, SPECIES_EISCUE_ICE_FACE}, {FORM_CHANGE_TERMINATOR}, }; static const struct FormChange sMorpekoFormChangeTable[] = { - {FORM_CHANGE_BATTLE_TURN_END, SPECIES_MORPEKO_HANGRY, ABILITY_HUNGER_SWITCH}, - {FORM_CHANGE_BATTLE_TURN_END, SPECIES_MORPEKO , ABILITY_HUNGER_SWITCH}, - {FORM_CHANGE_BATTLE_SWITCH, SPECIES_MORPEKO}, - {FORM_CHANGE_FAINT, SPECIES_MORPEKO}, - {FORM_CHANGE_END_BATTLE, SPECIES_MORPEKO}, + {FORM_CHANGE_BATTLE_TURN_END, SPECIES_MORPEKO_HANGRY, ABILITY_HUNGER_SWITCH}, + {FORM_CHANGE_BATTLE_TURN_END, SPECIES_MORPEKO_FULL_BELLY, ABILITY_HUNGER_SWITCH}, + {FORM_CHANGE_BATTLE_SWITCH, SPECIES_MORPEKO_FULL_BELLY}, + {FORM_CHANGE_FAINT, SPECIES_MORPEKO_FULL_BELLY}, + {FORM_CHANGE_END_BATTLE, SPECIES_MORPEKO_FULL_BELLY}, {FORM_CHANGE_TERMINATOR}, }; static const struct FormChange sZacianFormChangeTable[] = { - {FORM_CHANGE_BEGIN_BATTLE, SPECIES_ZACIAN_CROWNED_SWORD, ITEM_RUSTED_SWORD, MOVE_IRON_HEAD, MOVE_BEHEMOTH_BLADE}, - {FORM_CHANGE_END_BATTLE, SPECIES_ZACIAN, ITEM_RUSTED_SWORD, MOVE_BEHEMOTH_BLADE, MOVE_IRON_HEAD}, + {FORM_CHANGE_BEGIN_BATTLE, SPECIES_ZACIAN_CROWNED_SWORD, ITEM_RUSTED_SWORD, MOVE_IRON_HEAD, MOVE_BEHEMOTH_BLADE}, + {FORM_CHANGE_END_BATTLE, SPECIES_ZACIAN_HERO_OF_MANY_BATTLES, ITEM_RUSTED_SWORD, MOVE_BEHEMOTH_BLADE, MOVE_IRON_HEAD}, {FORM_CHANGE_TERMINATOR}, }; static const struct FormChange sZamazentaFormChangeTable[] = { - {FORM_CHANGE_BEGIN_BATTLE, SPECIES_ZAMAZENTA_CROWNED_SHIELD, ITEM_RUSTED_SHIELD, MOVE_IRON_HEAD, MOVE_BEHEMOTH_BASH}, - {FORM_CHANGE_END_BATTLE, SPECIES_ZAMAZENTA, ITEM_RUSTED_SHIELD, MOVE_BEHEMOTH_BASH, MOVE_IRON_HEAD}, + {FORM_CHANGE_BEGIN_BATTLE, SPECIES_ZAMAZENTA_CROWNED_SHIELD, ITEM_RUSTED_SHIELD, MOVE_IRON_HEAD, MOVE_BEHEMOTH_BASH}, + {FORM_CHANGE_END_BATTLE, SPECIES_ZAMAZENTA_HERO_OF_MANY_BATTLES, ITEM_RUSTED_SHIELD, MOVE_BEHEMOTH_BASH, MOVE_IRON_HEAD}, {FORM_CHANGE_TERMINATOR}, }; static const struct FormChange sEnamorusFormChangeTable[] = { - {FORM_CHANGE_ITEM_USE, SPECIES_ENAMORUS, ITEM_REVEAL_GLASS}, - {FORM_CHANGE_ITEM_USE, SPECIES_ENAMORUS_THERIAN, ITEM_REVEAL_GLASS}, + {FORM_CHANGE_ITEM_USE, SPECIES_ENAMORUS_INCARNATE, ITEM_REVEAL_GLASS}, + {FORM_CHANGE_ITEM_USE, SPECIES_ENAMORUS_THERIAN, ITEM_REVEAL_GLASS}, {FORM_CHANGE_TERMINATOR}, }; @@ -778,9 +778,9 @@ static const struct FormChange sDuraludonFormChangeTable[] = {FORM_CHANGE_TERMINATOR}, }; -static const struct FormChange sUrshifuFormChangeTable[] = +static const struct FormChange sUrshifuSingleStrikeFormChangeTable[] = { - {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_URSHIFU_GIGANTAMAX}, + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_URSHIFU_SINGLE_STRIKE_STYLE_GIGANTAMAX}, {FORM_CHANGE_TERMINATOR}, }; diff --git a/src/data/pokemon/form_species_table_pointers.h b/src/data/pokemon/form_species_table_pointers.h index 147410323b..e615fd1b14 100644 --- a/src/data/pokemon/form_species_table_pointers.h +++ b/src/data/pokemon/form_species_table_pointers.h @@ -72,7 +72,7 @@ const u16 *const gFormSpeciesIdTables[NUM_SPECIES] = [SPECIES_SHARPEDO] = sSharpedoFormSpeciesIdTable, [SPECIES_CAMERUPT] = sCameruptFormSpeciesIdTable, [SPECIES_ALTARIA] = sAltariaFormSpeciesIdTable, - [SPECIES_CASTFORM] = sCastformFormSpeciesIdTable, + [SPECIES_CASTFORM_NORMAL] = sCastformFormSpeciesIdTable, [SPECIES_BANETTE] = sBanetteFormSpeciesIdTable, [SPECIES_ABSOL] = sAbsolFormSpeciesIdTable, [SPECIES_GLALIE] = sGlalieFormSpeciesIdTable, @@ -83,13 +83,13 @@ const u16 *const gFormSpeciesIdTables[NUM_SPECIES] = [SPECIES_KYOGRE] = sKyogreFormSpeciesIdTable, [SPECIES_GROUDON] = sGroudonFormSpeciesIdTable, [SPECIES_RAYQUAZA] = sRayquazaFormSpeciesIdTable, - [SPECIES_DEOXYS] = sDeoxysFormSpeciesIdTable, + [SPECIES_DEOXYS_NORMAL] = sDeoxysFormSpeciesIdTable, #if P_GEN_4_POKEMON == TRUE - [SPECIES_BURMY] = sBurmyFormSpeciesIdTable, - [SPECIES_WORMADAM] = sWormadamFormSpeciesIdTable, - [SPECIES_CHERRIM] = sCherrimFormSpeciesIdTable, - [SPECIES_SHELLOS] = sShellosFormSpeciesIdTable, - [SPECIES_GASTRODON] = sGastrodonFormSpeciesIdTable, + [SPECIES_BURMY_PLANT_CLOAK] = sBurmyFormSpeciesIdTable, + [SPECIES_WORMADAM_PLANT_CLOAK] = sWormadamFormSpeciesIdTable, + [SPECIES_CHERRIM_OVERCAST] = sCherrimFormSpeciesIdTable, + [SPECIES_SHELLOS_WEST_SEA] = sShellosFormSpeciesIdTable, + [SPECIES_GASTRODON_WEST_SEA] = sGastrodonFormSpeciesIdTable, [SPECIES_LOPUNNY] = sLopunnyFormSpeciesIdTable, [SPECIES_GARCHOMP] = sGarchompFormSpeciesIdTable, [SPECIES_LUCARIO] = sLucarioFormSpeciesIdTable, @@ -98,80 +98,80 @@ const u16 *const gFormSpeciesIdTables[NUM_SPECIES] = [SPECIES_ROTOM] = sRotomFormSpeciesIdTable, [SPECIES_DIALGA] = sDialgaFormSpeciesIdTable, [SPECIES_PALKIA] = sPalkiaFormSpeciesIdTable, - [SPECIES_GIRATINA] = sGiratinaFormSpeciesIdTable, - [SPECIES_SHAYMIN] = sShayminFormSpeciesIdTable, - [SPECIES_ARCEUS] = sArceusFormSpeciesIdTable, + [SPECIES_GIRATINA_ALTERED] = sGiratinaFormSpeciesIdTable, + [SPECIES_SHAYMIN_LAND] = sShayminFormSpeciesIdTable, + [SPECIES_ARCEUS_NORMAL] = sArceusFormSpeciesIdTable, #endif #if P_GEN_5_POKEMON == TRUE [SPECIES_SAMUROTT] = sSamurottFormSpeciesIdTable, [SPECIES_AUDINO] = sAudinoFormSpeciesIdTable, - [SPECIES_BASCULIN] = sBasculinFormSpeciesIdTable, + [SPECIES_BASCULIN_RED_STRIPED] = sBasculinFormSpeciesIdTable, [SPECIES_LILLIGANT] = sLilligantFormSpeciesIdTable, [SPECIES_DARUMAKA] = sDarumakaFormSpeciesIdTable, - [SPECIES_DARMANITAN] = sDarmanitanFormSpeciesIdTable, + [SPECIES_DARMANITAN_STANDARD_MODE] = sDarmanitanFormSpeciesIdTable, [SPECIES_YAMASK] = sYamaskFormSpeciesIdTable, [SPECIES_ZORUA] = sZoruaFormSpeciesIdTable, [SPECIES_ZOROARK] = sZoroarkFormSpeciesIdTable, - [SPECIES_DEERLING] = sDeerlingFormSpeciesIdTable, - [SPECIES_SAWSBUCK] = sSawsbuckFormSpeciesIdTable, + [SPECIES_DEERLING_SPRING] = sDeerlingFormSpeciesIdTable, + [SPECIES_SAWSBUCK_SPRING] = sSawsbuckFormSpeciesIdTable, [SPECIES_STUNFISK] = sStunfiskFormSpeciesIdTable, [SPECIES_BRAVIARY] = sBraviaryFormSpeciesIdTable, - [SPECIES_TORNADUS] = sTornadusFormSpeciesIdTable, - [SPECIES_THUNDURUS] = sThundurusFormSpeciesIdTable, - [SPECIES_LANDORUS] = sLandorusFormSpeciesIdTable, + [SPECIES_TORNADUS_INCARNATE] = sTornadusFormSpeciesIdTable, + [SPECIES_THUNDURUS_INCARNATE] = sThundurusFormSpeciesIdTable, + [SPECIES_LANDORUS_INCARNATE] = sLandorusFormSpeciesIdTable, [SPECIES_KYUREM] = sKyuremFormSpeciesIdTable, - [SPECIES_KELDEO] = sKeldeoFormSpeciesIdTable, - [SPECIES_MELOETTA] = sMeloettaFormSpeciesIdTable, + [SPECIES_KELDEO_ORDINARY] = sKeldeoFormSpeciesIdTable, + [SPECIES_MELOETTA_ARIA] = sMeloettaFormSpeciesIdTable, [SPECIES_GENESECT] = sGenesectFormSpeciesIdTable, #endif #if P_GEN_6_POKEMON == TRUE [SPECIES_GRENINJA] = sGreninjaFormSpeciesIdTable, - [SPECIES_VIVILLON] = sVivillonFormSpeciesIdTable, - [SPECIES_FLABEBE] = sFlabebeFormSpeciesIdTable, + [SPECIES_VIVILLON_ICY_SNOW] = sVivillonFormSpeciesIdTable, + [SPECIES_FLABEBE_RED_FLOWER] = sFlabebeFormSpeciesIdTable, [SPECIES_FLOETTE] = sFloetteFormSpeciesIdTable, [SPECIES_FLORGES] = sFlorgesFormSpeciesIdTable, - [SPECIES_FURFROU] = sFurfrouFormSpeciesIdTable, - [SPECIES_MEOWSTIC] = sMeowsticFormSpeciesIdTable, - [SPECIES_AEGISLASH] = sAegislashFormSpeciesIdTable, + [SPECIES_FURFROU_NATURAL] = sFurfrouFormSpeciesIdTable, + [SPECIES_MEOWSTIC_MALE] = sMeowsticFormSpeciesIdTable, + [SPECIES_AEGISLASH_SHIELD] = sAegislashFormSpeciesIdTable, [SPECIES_SLIGGOO] = sSliggooFormSpeciesIdTable, [SPECIES_GOODRA] = sGoodraFormSpeciesIdTable, - [SPECIES_PUMPKABOO] = sPumpkabooFormSpeciesIdTable, - [SPECIES_GOURGEIST] = sGourgeistFormSpeciesIdTable, + [SPECIES_PUMPKABOO_AVERAGE] = sPumpkabooFormSpeciesIdTable, + [SPECIES_GOURGEIST_AVERAGE] = sGourgeistFormSpeciesIdTable, [SPECIES_AVALUGG] = sAvaluggFormSpeciesIdTable, - [SPECIES_XERNEAS] = sXerneasFormSpeciesIdTable, - [SPECIES_ZYGARDE] = sZygardeFormSpeciesIdTable, + [SPECIES_XERNEAS_NEUTRAL] = sXerneasFormSpeciesIdTable, + [SPECIES_ZYGARDE_50_AURA_BREAK] = sZygardeFormSpeciesIdTable, [SPECIES_DIANCIE] = sDiancieFormSpeciesIdTable, - [SPECIES_HOOPA] = sHoopaFormSpeciesIdTable, + [SPECIES_HOOPA_CONFINED] = sHoopaFormSpeciesIdTable, #endif #if P_GEN_7_POKEMON == TRUE [SPECIES_DECIDUEYE] = sDecidueyeFormSpeciesIdTable, - [SPECIES_ORICORIO] = sOricorioFormSpeciesIdTable, + [SPECIES_ORICORIO_BAILE] = sOricorioFormSpeciesIdTable, [SPECIES_ROCKRUFF] = sRockruffFormSpeciesIdTable, - [SPECIES_LYCANROC] = sLycanrocFormSpeciesIdTable, - [SPECIES_WISHIWASHI] = sWishiwashiFormSpeciesIdTable, - [SPECIES_SILVALLY] = sSilvallyFormSpeciesIdTable, - [SPECIES_MINIOR] = sMiniorFormSpeciesIdTable, - [SPECIES_MIMIKYU] = sMimikyuFormSpeciesIdTable, + [SPECIES_LYCANROC_MIDDAY] = sLycanrocFormSpeciesIdTable, + [SPECIES_WISHIWASHI_SOLO] = sWishiwashiFormSpeciesIdTable, + [SPECIES_SILVALLY_NORMAL] = sSilvallyFormSpeciesIdTable, + [SPECIES_MINIOR_METEOR_RED] = sMiniorFormSpeciesIdTable, + [SPECIES_MIMIKYU_DISGUISED] = sMimikyuFormSpeciesIdTable, [SPECIES_NECROZMA] = sNecrozmaFormSpeciesIdTable, [SPECIES_MAGEARNA] = sMagearnaFormSpeciesIdTable, #endif #if P_GEN_8_POKEMON == TRUE [SPECIES_CRAMORANT] = sCramorantFormSpeciesIdTable, - [SPECIES_TOXTRICITY] = sToxtricityFormSpeciesIdTable, - [SPECIES_SINISTEA] = sSinisteaFormSpeciesIdTable, - [SPECIES_POLTEAGEIST] = sPolteageistFormSpeciesIdTable, - [SPECIES_ALCREMIE] = sAlcremieFormSpeciesIdTable, - [SPECIES_EISCUE] = sEiscueFormSpeciesIdTable, - [SPECIES_INDEEDEE] = sIndeedeeFormSpeciesIdTable, - [SPECIES_MORPEKO] = sMorpekoFormSpeciesIdTable, - [SPECIES_ZACIAN] = sZacianFormSpeciesIdTable, - [SPECIES_ZAMAZENTA] = sZamazentaFormSpeciesIdTable, + [SPECIES_TOXTRICITY_AMPED] = sToxtricityFormSpeciesIdTable, + [SPECIES_SINISTEA_PHONY] = sSinisteaFormSpeciesIdTable, + [SPECIES_POLTEAGEIST_PHONY] = sPolteageistFormSpeciesIdTable, + [SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_EISCUE_ICE_FACE] = sEiscueFormSpeciesIdTable, + [SPECIES_INDEEDEE_MALE] = sIndeedeeFormSpeciesIdTable, + [SPECIES_MORPEKO_FULL_BELLY] = sMorpekoFormSpeciesIdTable, + [SPECIES_ZACIAN_HERO_OF_MANY_BATTLES] = sZacianFormSpeciesIdTable, + [SPECIES_ZAMAZENTA_HERO_OF_MANY_BATTLES] = sZamazentaFormSpeciesIdTable, [SPECIES_ETERNATUS] = sEternatusFormSpeciesIdTable, - [SPECIES_URSHIFU] = sUrshifuFormSpeciesIdTable, + [SPECIES_URSHIFU_SINGLE_STRIKE_STYLE] = sUrshifuFormSpeciesIdTable, [SPECIES_ZARUDE] = sZarudeFormSpeciesIdTable, [SPECIES_CALYREX] = sCalyrexFormSpeciesIdTable, - [SPECIES_ENAMORUS] = sEnamorusFormSpeciesIdTable, - [SPECIES_BASCULEGION] = sBasculegionFormSpeciesIdTable, + [SPECIES_ENAMORUS_INCARNATE] = sEnamorusFormSpeciesIdTable, + [SPECIES_BASCULEGION_MALE] = sBasculegionFormSpeciesIdTable, #endif // Megas [SPECIES_VENUSAUR_MEGA] = sVenusaurFormSpeciesIdTable, @@ -268,7 +268,7 @@ const u16 *const gFormSpeciesIdTables[NUM_SPECIES] = [SPECIES_LINOONE_GALARIAN] = sLinooneFormSpeciesIdTable, #if P_GEN_5_POKEMON == TRUE [SPECIES_DARUMAKA_GALARIAN] = sDarumakaFormSpeciesIdTable, - [SPECIES_DARMANITAN_GALARIAN] = sDarmanitanFormSpeciesIdTable, + [SPECIES_DARMANITAN_GALARIAN_STANDARD_MODE] = sDarmanitanFormSpeciesIdTable, [SPECIES_YAMASK_GALARIAN] = sYamaskFormSpeciesIdTable, [SPECIES_STUNFISK_GALARIAN] = sStunfiskFormSpeciesIdTable, #endif @@ -400,7 +400,7 @@ const u16 *const gFormSpeciesIdTables[NUM_SPECIES] = [SPECIES_BASCULIN_WHITE_STRIPED] = sBasculinFormSpeciesIdTable, // Darmanitan [SPECIES_DARMANITAN_ZEN_MODE] = sDarmanitanFormSpeciesIdTable, - [SPECIES_DARMANITAN_ZEN_MODE_GALARIAN] = sDarmanitanFormSpeciesIdTable, + [SPECIES_DARMANITAN_GALARIAN_ZEN_MODE] = sDarmanitanFormSpeciesIdTable, // Deerling [SPECIES_DEERLING_SUMMER] = sDeerlingFormSpeciesIdTable, [SPECIES_DEERLING_AUTUMN] = sDeerlingFormSpeciesIdTable, @@ -491,7 +491,7 @@ const u16 *const gFormSpeciesIdTables[NUM_SPECIES] = // Xerneas [SPECIES_XERNEAS_ACTIVE] = sXerneasFormSpeciesIdTable, // Zygarde - [SPECIES_ZYGARDE_10] = sZygardeFormSpeciesIdTable, + [SPECIES_ZYGARDE_10_AURA_BREAK] = sZygardeFormSpeciesIdTable, [SPECIES_ZYGARDE_10_POWER_CONSTRUCT] = sZygardeFormSpeciesIdTable, [SPECIES_ZYGARDE_50_POWER_CONSTRUCT] = sZygardeFormSpeciesIdTable, [SPECIES_ZYGARDE_COMPLETE] = sZygardeFormSpeciesIdTable, @@ -562,14 +562,14 @@ const u16 *const gFormSpeciesIdTables[NUM_SPECIES] = // Polteageist [SPECIES_POLTEAGEIST_ANTIQUE] = sPolteageistFormSpeciesIdTable, // Alcremie - [SPECIES_ALCREMIE_RUBY_CREAM] = sAlcremieFormSpeciesIdTable, - [SPECIES_ALCREMIE_MATCHA_CREAM] = sAlcremieFormSpeciesIdTable, - [SPECIES_ALCREMIE_MINT_CREAM] = sAlcremieFormSpeciesIdTable, - [SPECIES_ALCREMIE_LEMON_CREAM] = sAlcremieFormSpeciesIdTable, - [SPECIES_ALCREMIE_SALTED_CREAM] = sAlcremieFormSpeciesIdTable, - [SPECIES_ALCREMIE_RUBY_SWIRL] = sAlcremieFormSpeciesIdTable, - [SPECIES_ALCREMIE_CARAMEL_SWIRL] = sAlcremieFormSpeciesIdTable, - [SPECIES_ALCREMIE_RAINBOW_SWIRL] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL] = sAlcremieFormSpeciesIdTable, // Eiscue [SPECIES_EISCUE_NOICE_FACE] = sEiscueFormSpeciesIdTable, // Indeedee @@ -626,7 +626,7 @@ const u16 *const gFormSpeciesIdTables[NUM_SPECIES] = [SPECIES_ALCREMIE_GIGANTAMAX] = sAlcremieFormSpeciesIdTable, [SPECIES_COPPERAJAH_GIGANTAMAX] = sCopperajahFormSpeciesIdTable, [SPECIES_DURALUDON_GIGANTAMAX] = sDuraludonFormSpeciesIdTable, - [SPECIES_URSHIFU_GIGANTAMAX] = sUrshifuFormSpeciesIdTable, + [SPECIES_URSHIFU_SINGLE_STRIKE_STYLE_GIGANTAMAX] = sUrshifuFormSpeciesIdTable, [SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX] = sUrshifuFormSpeciesIdTable, #endif }; diff --git a/src/data/pokemon/form_species_tables.h b/src/data/pokemon/form_species_tables.h index f1054b1d68..a1d5314884 100644 --- a/src/data/pokemon/form_species_tables.h +++ b/src/data/pokemon/form_species_tables.h @@ -516,7 +516,7 @@ static const u16 sAltariaFormSpeciesIdTable[] = { }; static const u16 sCastformFormSpeciesIdTable[] = { - SPECIES_CASTFORM, + SPECIES_CASTFORM_NORMAL, SPECIES_CASTFORM_SUNNY, SPECIES_CASTFORM_RAINY, SPECIES_CASTFORM_SNOWY, @@ -584,7 +584,7 @@ static const u16 sRayquazaFormSpeciesIdTable[] = { }; static const u16 sDeoxysFormSpeciesIdTable[] = { - SPECIES_DEOXYS, + SPECIES_DEOXYS_NORMAL, SPECIES_DEOXYS_ATTACK, SPECIES_DEOXYS_DEFENSE, SPECIES_DEOXYS_SPEED, @@ -593,33 +593,33 @@ static const u16 sDeoxysFormSpeciesIdTable[] = { #if P_GEN_4_POKEMON == TRUE static const u16 sBurmyFormSpeciesIdTable[] = { - SPECIES_BURMY, + SPECIES_BURMY_PLANT_CLOAK, SPECIES_BURMY_SANDY_CLOAK, SPECIES_BURMY_TRASH_CLOAK, FORM_SPECIES_END, }; static const u16 sWormadamFormSpeciesIdTable[] = { - SPECIES_WORMADAM, + SPECIES_WORMADAM_PLANT_CLOAK, SPECIES_WORMADAM_SANDY_CLOAK, SPECIES_WORMADAM_TRASH_CLOAK, FORM_SPECIES_END, }; static const u16 sCherrimFormSpeciesIdTable[] = { - SPECIES_CHERRIM, + SPECIES_CHERRIM_OVERCAST, SPECIES_CHERRIM_SUNSHINE, FORM_SPECIES_END, }; static const u16 sShellosFormSpeciesIdTable[] = { - SPECIES_SHELLOS, + SPECIES_SHELLOS_WEST_SEA, SPECIES_SHELLOS_EAST_SEA, FORM_SPECIES_END, }; static const u16 sGastrodonFormSpeciesIdTable[] = { - SPECIES_GASTRODON, + SPECIES_GASTRODON_WEST_SEA, SPECIES_GASTRODON_EAST_SEA, FORM_SPECIES_END, }; @@ -677,19 +677,19 @@ static const u16 sPalkiaFormSpeciesIdTable[] = { }; static const u16 sGiratinaFormSpeciesIdTable[] = { - SPECIES_GIRATINA, + SPECIES_GIRATINA_ALTERED, SPECIES_GIRATINA_ORIGIN, FORM_SPECIES_END, }; static const u16 sShayminFormSpeciesIdTable[] = { - SPECIES_SHAYMIN, + SPECIES_SHAYMIN_LAND, SPECIES_SHAYMIN_SKY, FORM_SPECIES_END, }; static const u16 sArceusFormSpeciesIdTable[] = { - SPECIES_ARCEUS, + SPECIES_ARCEUS_NORMAL, SPECIES_ARCEUS_FIGHTING, SPECIES_ARCEUS_FLYING, SPECIES_ARCEUS_POISON, @@ -725,7 +725,7 @@ static const u16 sAudinoFormSpeciesIdTable[] = { }; static const u16 sBasculinFormSpeciesIdTable[] = { - SPECIES_BASCULIN, + SPECIES_BASCULIN_RED_STRIPED, SPECIES_BASCULIN_BLUE_STRIPED, SPECIES_BASCULIN_WHITE_STRIPED, FORM_SPECIES_END, @@ -744,10 +744,10 @@ static const u16 sDarumakaFormSpeciesIdTable[] = { }; static const u16 sDarmanitanFormSpeciesIdTable[] = { - SPECIES_DARMANITAN, + SPECIES_DARMANITAN_STANDARD_MODE, SPECIES_DARMANITAN_ZEN_MODE, - SPECIES_DARMANITAN_GALARIAN, - SPECIES_DARMANITAN_ZEN_MODE_GALARIAN, + SPECIES_DARMANITAN_GALARIAN_STANDARD_MODE, + SPECIES_DARMANITAN_GALARIAN_ZEN_MODE, FORM_SPECIES_END, }; @@ -776,7 +776,7 @@ static const u16 sGarbodorFormSpeciesIdTable[] = { }; static const u16 sDeerlingFormSpeciesIdTable[] = { - SPECIES_DEERLING, + SPECIES_DEERLING_SPRING, SPECIES_DEERLING_SUMMER, SPECIES_DEERLING_AUTUMN, SPECIES_DEERLING_WINTER, @@ -784,7 +784,7 @@ static const u16 sDeerlingFormSpeciesIdTable[] = { }; static const u16 sSawsbuckFormSpeciesIdTable[] = { - SPECIES_SAWSBUCK, + SPECIES_SAWSBUCK_SPRING, SPECIES_SAWSBUCK_SUMMER, SPECIES_SAWSBUCK_AUTUMN, SPECIES_SAWSBUCK_WINTER, @@ -804,19 +804,19 @@ static const u16 sBraviaryFormSpeciesIdTable[] = { }; static const u16 sTornadusFormSpeciesIdTable[] = { - SPECIES_TORNADUS, + SPECIES_TORNADUS_INCARNATE, SPECIES_TORNADUS_THERIAN, FORM_SPECIES_END, }; static const u16 sThundurusFormSpeciesIdTable[] = { - SPECIES_THUNDURUS, + SPECIES_THUNDURUS_INCARNATE, SPECIES_THUNDURUS_THERIAN, FORM_SPECIES_END, }; static const u16 sLandorusFormSpeciesIdTable[] = { - SPECIES_LANDORUS, + SPECIES_LANDORUS_INCARNATE, SPECIES_LANDORUS_THERIAN, FORM_SPECIES_END, }; @@ -829,13 +829,13 @@ static const u16 sKyuremFormSpeciesIdTable[] = { }; static const u16 sKeldeoFormSpeciesIdTable[] = { - SPECIES_KELDEO, + SPECIES_KELDEO_ORDINARY, SPECIES_KELDEO_RESOLUTE, FORM_SPECIES_END, }; static const u16 sMeloettaFormSpeciesIdTable[] = { - SPECIES_MELOETTA, + SPECIES_MELOETTA_ARIA, SPECIES_MELOETTA_PIROUETTE, FORM_SPECIES_END, }; @@ -859,7 +859,7 @@ static const u16 sGreninjaFormSpeciesIdTable[] = { }; static const u16 sVivillonFormSpeciesIdTable[] = { - SPECIES_VIVILLON, + SPECIES_VIVILLON_ICY_SNOW, SPECIES_VIVILLON_POLAR, SPECIES_VIVILLON_TUNDRA, SPECIES_VIVILLON_CONTINENTAL, @@ -883,7 +883,7 @@ static const u16 sVivillonFormSpeciesIdTable[] = { }; static const u16 sFlabebeFormSpeciesIdTable[] = { - SPECIES_FLABEBE, + SPECIES_FLABEBE_RED_FLOWER, SPECIES_FLABEBE_YELLOW_FLOWER, SPECIES_FLABEBE_ORANGE_FLOWER, SPECIES_FLABEBE_BLUE_FLOWER, @@ -892,7 +892,7 @@ static const u16 sFlabebeFormSpeciesIdTable[] = { }; static const u16 sFloetteFormSpeciesIdTable[] = { - SPECIES_FLOETTE, + SPECIES_FLOETTE_RED_FLOWER, SPECIES_FLOETTE_YELLOW_FLOWER, SPECIES_FLOETTE_ORANGE_FLOWER, SPECIES_FLOETTE_BLUE_FLOWER, @@ -902,7 +902,7 @@ static const u16 sFloetteFormSpeciesIdTable[] = { }; static const u16 sFlorgesFormSpeciesIdTable[] = { - SPECIES_FLORGES, + SPECIES_FLORGES_RED_FLOWER, SPECIES_FLORGES_YELLOW_FLOWER, SPECIES_FLORGES_ORANGE_FLOWER, SPECIES_FLORGES_BLUE_FLOWER, @@ -911,7 +911,7 @@ static const u16 sFlorgesFormSpeciesIdTable[] = { }; static const u16 sFurfrouFormSpeciesIdTable[] = { - SPECIES_FURFROU, + SPECIES_FURFROU_NATURAL, SPECIES_FURFROU_HEART_TRIM, SPECIES_FURFROU_STAR_TRIM, SPECIES_FURFROU_DIAMOND_TRIM, @@ -925,13 +925,13 @@ static const u16 sFurfrouFormSpeciesIdTable[] = { }; static const u16 sMeowsticFormSpeciesIdTable[] = { - SPECIES_MEOWSTIC, + SPECIES_MEOWSTIC_MALE, SPECIES_MEOWSTIC_FEMALE, FORM_SPECIES_END, }; static const u16 sAegislashFormSpeciesIdTable[] = { - SPECIES_AEGISLASH, + SPECIES_AEGISLASH_SHIELD, SPECIES_AEGISLASH_BLADE, FORM_SPECIES_END, }; @@ -949,7 +949,7 @@ static const u16 sGoodraFormSpeciesIdTable[] = { }; static const u16 sPumpkabooFormSpeciesIdTable[] = { - SPECIES_PUMPKABOO, + SPECIES_PUMPKABOO_AVERAGE, SPECIES_PUMPKABOO_SMALL, SPECIES_PUMPKABOO_LARGE, SPECIES_PUMPKABOO_SUPER, @@ -957,7 +957,7 @@ static const u16 sPumpkabooFormSpeciesIdTable[] = { }; static const u16 sGourgeistFormSpeciesIdTable[] = { - SPECIES_GOURGEIST, + SPECIES_GOURGEIST_AVERAGE, SPECIES_GOURGEIST_SMALL, SPECIES_GOURGEIST_LARGE, SPECIES_GOURGEIST_SUPER, @@ -971,14 +971,14 @@ static const u16 sAvaluggFormSpeciesIdTable[] = { }; static const u16 sXerneasFormSpeciesIdTable[] = { - SPECIES_XERNEAS, + SPECIES_XERNEAS_NEUTRAL, SPECIES_XERNEAS_ACTIVE, FORM_SPECIES_END, }; static const u16 sZygardeFormSpeciesIdTable[] = { - SPECIES_ZYGARDE, - SPECIES_ZYGARDE_10, + SPECIES_ZYGARDE_50_AURA_BREAK, + SPECIES_ZYGARDE_10_AURA_BREAK, SPECIES_ZYGARDE_10_POWER_CONSTRUCT, SPECIES_ZYGARDE_50_POWER_CONSTRUCT, SPECIES_ZYGARDE_COMPLETE, @@ -992,7 +992,7 @@ static const u16 sDiancieFormSpeciesIdTable[] = { }; static const u16 sHoopaFormSpeciesIdTable[] = { - SPECIES_HOOPA, + SPECIES_HOOPA_CONFINED, SPECIES_HOOPA_UNBOUND, FORM_SPECIES_END, }; @@ -1006,7 +1006,7 @@ static const u16 sDecidueyeFormSpeciesIdTable[] = { }; static const u16 sOricorioFormSpeciesIdTable[] = { - SPECIES_ORICORIO, + SPECIES_ORICORIO_BAILE, SPECIES_ORICORIO_POM_POM, SPECIES_ORICORIO_PAU, SPECIES_ORICORIO_SENSU, @@ -1020,20 +1020,20 @@ static const u16 sRockruffFormSpeciesIdTable[] = { }; static const u16 sLycanrocFormSpeciesIdTable[] = { - SPECIES_LYCANROC, + SPECIES_LYCANROC_MIDDAY, SPECIES_LYCANROC_MIDNIGHT, SPECIES_LYCANROC_DUSK, FORM_SPECIES_END, }; static const u16 sWishiwashiFormSpeciesIdTable[] = { - SPECIES_WISHIWASHI, + SPECIES_WISHIWASHI_SOLO, SPECIES_WISHIWASHI_SCHOOL, FORM_SPECIES_END, }; static const u16 sSilvallyFormSpeciesIdTable[] = { - SPECIES_SILVALLY, + SPECIES_SILVALLY_NORMAL, SPECIES_SILVALLY_FIGHTING, SPECIES_SILVALLY_FLYING, SPECIES_SILVALLY_POISON, @@ -1055,7 +1055,7 @@ static const u16 sSilvallyFormSpeciesIdTable[] = { }; static const u16 sMiniorFormSpeciesIdTable[] = { - SPECIES_MINIOR, + SPECIES_MINIOR_METEOR_RED, SPECIES_MINIOR_METEOR_ORANGE, SPECIES_MINIOR_METEOR_YELLOW, SPECIES_MINIOR_METEOR_GREEN, @@ -1073,7 +1073,7 @@ static const u16 sMiniorFormSpeciesIdTable[] = { }; static const u16 sMimikyuFormSpeciesIdTable[] = { - SPECIES_MIMIKYU, + SPECIES_MIMIKYU_DISGUISED, SPECIES_MIMIKYU_BUSTED, FORM_SPECIES_END, }; @@ -1169,7 +1169,7 @@ static const u16 sCramorantFormSpeciesIdTable[] = { }; static const u16 sToxtricityFormSpeciesIdTable[] = { - SPECIES_TOXTRICITY, + SPECIES_TOXTRICITY_AMPED, SPECIES_TOXTRICITY_LOW_KEY, SPECIES_TOXTRICITY_AMPED_GIGANTAMAX, SPECIES_TOXTRICITY_LOW_KEY_GIGANTAMAX, @@ -1189,13 +1189,13 @@ static const u16 sHattereneFormSpeciesIdTable[] = { }; static const u16 sSinisteaFormSpeciesIdTable[] = { - SPECIES_SINISTEA, + SPECIES_SINISTEA_PHONY, SPECIES_SINISTEA_ANTIQUE, FORM_SPECIES_END, }; static const u16 sPolteageistFormSpeciesIdTable[] = { - SPECIES_POLTEAGEIST, + SPECIES_POLTEAGEIST_PHONY, SPECIES_POLTEAGEIST_ANTIQUE, FORM_SPECIES_END, }; @@ -1207,32 +1207,32 @@ static const u16 sGrimmsnarlFormSpeciesIdTable[] = { }; static const u16 sAlcremieFormSpeciesIdTable[] = { - SPECIES_ALCREMIE, - SPECIES_ALCREMIE_RUBY_CREAM, - SPECIES_ALCREMIE_MATCHA_CREAM, - SPECIES_ALCREMIE_MINT_CREAM, - SPECIES_ALCREMIE_LEMON_CREAM, - SPECIES_ALCREMIE_SALTED_CREAM, - SPECIES_ALCREMIE_RUBY_SWIRL, - SPECIES_ALCREMIE_CARAMEL_SWIRL, - SPECIES_ALCREMIE_RAINBOW_SWIRL, + SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM, + SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM, + SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM, + SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM, + SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM, + SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM, + SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL, + SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL, + SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL, FORM_SPECIES_END, }; static const u16 sEiscueFormSpeciesIdTable[] = { - SPECIES_EISCUE, + SPECIES_EISCUE_ICE_FACE, SPECIES_EISCUE_NOICE_FACE, FORM_SPECIES_END, }; static const u16 sIndeedeeFormSpeciesIdTable[] = { - SPECIES_INDEEDEE, + SPECIES_INDEEDEE_MALE, SPECIES_INDEEDEE_FEMALE, FORM_SPECIES_END, }; static const u16 sMorpekoFormSpeciesIdTable[] = { - SPECIES_MORPEKO, + SPECIES_MORPEKO_FULL_BELLY, SPECIES_MORPEKO_HANGRY, FORM_SPECIES_END, }; @@ -1250,13 +1250,13 @@ static const u16 sDuraludonFormSpeciesIdTable[] = { }; static const u16 sZacianFormSpeciesIdTable[] = { - SPECIES_ZACIAN, + SPECIES_ZACIAN_HERO_OF_MANY_BATTLES, SPECIES_ZACIAN_CROWNED_SWORD, FORM_SPECIES_END, }; static const u16 sZamazentaFormSpeciesIdTable[] = { - SPECIES_ZAMAZENTA, + SPECIES_ZAMAZENTA_HERO_OF_MANY_BATTLES, SPECIES_ZAMAZENTA_CROWNED_SHIELD, FORM_SPECIES_END, }; @@ -1268,9 +1268,9 @@ static const u16 sEternatusFormSpeciesIdTable[] = { }; static const u16 sUrshifuFormSpeciesIdTable[] = { - SPECIES_URSHIFU, + SPECIES_URSHIFU_SINGLE_STRIKE_STYLE, SPECIES_URSHIFU_RAPID_STRIKE_STYLE, - SPECIES_URSHIFU_GIGANTAMAX, + SPECIES_URSHIFU_SINGLE_STRIKE_STYLE_GIGANTAMAX, SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX, FORM_SPECIES_END, }; @@ -1289,13 +1289,13 @@ static const u16 sCalyrexFormSpeciesIdTable[] = { }; static const u16 sEnamorusFormSpeciesIdTable[] = { - SPECIES_ENAMORUS, + SPECIES_ENAMORUS_INCARNATE, SPECIES_ENAMORUS_THERIAN, FORM_SPECIES_END, }; static const u16 sBasculegionFormSpeciesIdTable[] = { - SPECIES_BASCULEGION, + SPECIES_BASCULEGION_MALE, SPECIES_BASCULEGION_FEMALE, FORM_SPECIES_END, }; diff --git a/src/data/pokemon/level_up_learnset_pointers.h b/src/data/pokemon/level_up_learnset_pointers.h index 6fad71aeae..3a6dc86cc8 100644 --- a/src/data/pokemon/level_up_learnset_pointers.h +++ b/src/data/pokemon/level_up_learnset_pointers.h @@ -360,7 +360,7 @@ const struct LevelUpMove *const gLevelUpLearnsets[NUM_SPECIES] = [SPECIES_ARON] = sAronLevelUpLearnset, [SPECIES_LAIRON] = sLaironLevelUpLearnset, [SPECIES_AGGRON] = sAggronLevelUpLearnset, - [SPECIES_CASTFORM] = sCastformLevelUpLearnset, + [SPECIES_CASTFORM_NORMAL] = sCastformLevelUpLearnset, [SPECIES_VOLBEAT] = sVolbeatLevelUpLearnset, [SPECIES_ILLUMISE] = sIllumiseLevelUpLearnset, [SPECIES_LILEEP] = sLileepLevelUpLearnset, @@ -385,7 +385,7 @@ const struct LevelUpMove *const gLevelUpLearnsets[NUM_SPECIES] = [SPECIES_LATIAS] = sLatiasLevelUpLearnset, [SPECIES_LATIOS] = sLatiosLevelUpLearnset, [SPECIES_JIRACHI] = sJirachiLevelUpLearnset, - [SPECIES_DEOXYS] = sDeoxysLevelUpLearnset, + [SPECIES_DEOXYS_NORMAL] = sDeoxysNormalLevelUpLearnset, [SPECIES_CHIMECHO] = sChimechoLevelUpLearnset, #if P_GEN_4_POKEMON == TRUE [SPECIES_TURTWIG] = sTurtwigLevelUpLearnset, @@ -413,8 +413,8 @@ const struct LevelUpMove *const gLevelUpLearnsets[NUM_SPECIES] = [SPECIES_RAMPARDOS] = sRampardosLevelUpLearnset, [SPECIES_SHIELDON] = sShieldonLevelUpLearnset, [SPECIES_BASTIODON] = sBastiodonLevelUpLearnset, - [SPECIES_BURMY] = sBurmyLevelUpLearnset, - [SPECIES_WORMADAM] = sWormadamLevelUpLearnset, + [SPECIES_BURMY_PLANT_CLOAK] = sBurmyLevelUpLearnset, + [SPECIES_WORMADAM_PLANT_CLOAK] = sWormadamPlantCloakLevelUpLearnset, [SPECIES_MOTHIM] = sMothimLevelUpLearnset, [SPECIES_COMBEE] = sCombeeLevelUpLearnset, [SPECIES_VESPIQUEN] = sVespiquenLevelUpLearnset, @@ -422,9 +422,9 @@ const struct LevelUpMove *const gLevelUpLearnsets[NUM_SPECIES] = [SPECIES_BUIZEL] = sBuizelLevelUpLearnset, [SPECIES_FLOATZEL] = sFloatzelLevelUpLearnset, [SPECIES_CHERUBI] = sCherubiLevelUpLearnset, - [SPECIES_CHERRIM] = sCherrimLevelUpLearnset, - [SPECIES_SHELLOS] = sShellosLevelUpLearnset, - [SPECIES_GASTRODON] = sGastrodonLevelUpLearnset, + [SPECIES_CHERRIM_OVERCAST] = sCherrimLevelUpLearnset, + [SPECIES_SHELLOS_WEST_SEA] = sShellosLevelUpLearnset, + [SPECIES_GASTRODON_WEST_SEA] = sGastrodonLevelUpLearnset, [SPECIES_AMBIPOM] = sAmbipomLevelUpLearnset, [SPECIES_DRIFLOON] = sDrifloonLevelUpLearnset, [SPECIES_DRIFBLIM] = sDrifblimLevelUpLearnset, @@ -488,13 +488,13 @@ const struct LevelUpMove *const gLevelUpLearnsets[NUM_SPECIES] = [SPECIES_PALKIA] = sPalkiaLevelUpLearnset, [SPECIES_HEATRAN] = sHeatranLevelUpLearnset, [SPECIES_REGIGIGAS] = sRegigigasLevelUpLearnset, - [SPECIES_GIRATINA] = sGiratinaLevelUpLearnset, + [SPECIES_GIRATINA_ALTERED] = sGiratinaLevelUpLearnset, [SPECIES_CRESSELIA] = sCresseliaLevelUpLearnset, [SPECIES_PHIONE] = sPhioneLevelUpLearnset, [SPECIES_MANAPHY] = sManaphyLevelUpLearnset, [SPECIES_DARKRAI] = sDarkraiLevelUpLearnset, - [SPECIES_SHAYMIN] = sShayminLevelUpLearnset, - [SPECIES_ARCEUS] = sArceusLevelUpLearnset, + [SPECIES_SHAYMIN_LAND] = sShayminLandLevelUpLearnset, + [SPECIES_ARCEUS_NORMAL] = sArceusLevelUpLearnset, #endif #if P_GEN_5_POKEMON == TRUE [SPECIES_VICTINI] = sVictiniLevelUpLearnset, @@ -553,12 +553,12 @@ const struct LevelUpMove *const gLevelUpLearnsets[NUM_SPECIES] = [SPECIES_WHIMSICOTT] = sWhimsicottLevelUpLearnset, [SPECIES_PETILIL] = sPetililLevelUpLearnset, [SPECIES_LILLIGANT] = sLilligantLevelUpLearnset, - [SPECIES_BASCULIN] = sBasculinLevelUpLearnset, + [SPECIES_BASCULIN_RED_STRIPED] = sBasculinLevelUpLearnset, [SPECIES_SANDILE] = sSandileLevelUpLearnset, [SPECIES_KROKOROK] = sKrokorokLevelUpLearnset, [SPECIES_KROOKODILE] = sKrookodileLevelUpLearnset, [SPECIES_DARUMAKA] = sDarumakaLevelUpLearnset, - [SPECIES_DARMANITAN] = sDarmanitanLevelUpLearnset, + [SPECIES_DARMANITAN_STANDARD_MODE] = sDarmanitanLevelUpLearnset, [SPECIES_MARACTUS] = sMaractusLevelUpLearnset, [SPECIES_DWEBBLE] = sDwebbleLevelUpLearnset, [SPECIES_CRUSTLE] = sCrustleLevelUpLearnset, @@ -588,8 +588,8 @@ const struct LevelUpMove *const gLevelUpLearnsets[NUM_SPECIES] = [SPECIES_VANILLITE] = sVanilliteLevelUpLearnset, [SPECIES_VANILLISH] = sVanillishLevelUpLearnset, [SPECIES_VANILLUXE] = sVanilluxeLevelUpLearnset, - [SPECIES_DEERLING] = sDeerlingLevelUpLearnset, - [SPECIES_SAWSBUCK] = sSawsbuckLevelUpLearnset, + [SPECIES_DEERLING_SPRING] = sDeerlingLevelUpLearnset, + [SPECIES_SAWSBUCK_SPRING] = sSawsbuckLevelUpLearnset, [SPECIES_EMOLGA] = sEmolgaLevelUpLearnset, [SPECIES_KARRABLAST] = sKarrablastLevelUpLearnset, [SPECIES_ESCAVALIER] = sEscavalierLevelUpLearnset, @@ -644,14 +644,14 @@ const struct LevelUpMove *const gLevelUpLearnsets[NUM_SPECIES] = [SPECIES_COBALION] = sCobalionLevelUpLearnset, [SPECIES_TERRAKION] = sTerrakionLevelUpLearnset, [SPECIES_VIRIZION] = sVirizionLevelUpLearnset, - [SPECIES_TORNADUS] = sTornadusLevelUpLearnset, - [SPECIES_THUNDURUS] = sThundurusLevelUpLearnset, + [SPECIES_TORNADUS_INCARNATE] = sTornadusLevelUpLearnset, + [SPECIES_THUNDURUS_INCARNATE] = sThundurusLevelUpLearnset, [SPECIES_RESHIRAM] = sReshiramLevelUpLearnset, [SPECIES_ZEKROM] = sZekromLevelUpLearnset, - [SPECIES_LANDORUS] = sLandorusLevelUpLearnset, + [SPECIES_LANDORUS_INCARNATE] = sLandorusLevelUpLearnset, [SPECIES_KYUREM] = sKyuremLevelUpLearnset, - [SPECIES_KELDEO] = sKeldeoLevelUpLearnset, - [SPECIES_MELOETTA] = sMeloettaLevelUpLearnset, + [SPECIES_KELDEO_ORDINARY] = sKeldeoLevelUpLearnset, + [SPECIES_MELOETTA_ARIA] = sMeloettaLevelUpLearnset, [SPECIES_GENESECT] = sGenesectLevelUpLearnset, #endif #if P_GEN_6_POKEMON == TRUE @@ -671,22 +671,22 @@ const struct LevelUpMove *const gLevelUpLearnsets[NUM_SPECIES] = [SPECIES_TALONFLAME] = sTalonflameLevelUpLearnset, [SPECIES_SCATTERBUG] = sScatterbugLevelUpLearnset, [SPECIES_SPEWPA] = sSpewpaLevelUpLearnset, - [SPECIES_VIVILLON] = sVivillonLevelUpLearnset, + [SPECIES_VIVILLON_ICY_SNOW] = sVivillonLevelUpLearnset, [SPECIES_LITLEO] = sLitleoLevelUpLearnset, [SPECIES_PYROAR] = sPyroarLevelUpLearnset, - [SPECIES_FLABEBE] = sFlabebeLevelUpLearnset, - [SPECIES_FLOETTE] = sFloetteLevelUpLearnset, - [SPECIES_FLORGES] = sFlorgesLevelUpLearnset, + [SPECIES_FLABEBE_RED_FLOWER] = sFlabebeLevelUpLearnset, + [SPECIES_FLOETTE_RED_FLOWER] = sFloetteLevelUpLearnset, + [SPECIES_FLORGES_RED_FLOWER] = sFlorgesLevelUpLearnset, [SPECIES_SKIDDO] = sSkiddoLevelUpLearnset, [SPECIES_GOGOAT] = sGogoatLevelUpLearnset, [SPECIES_PANCHAM] = sPanchamLevelUpLearnset, [SPECIES_PANGORO] = sPangoroLevelUpLearnset, - [SPECIES_FURFROU] = sFurfrouLevelUpLearnset, + [SPECIES_FURFROU_NATURAL] = sFurfrouLevelUpLearnset, [SPECIES_ESPURR] = sEspurrLevelUpLearnset, - [SPECIES_MEOWSTIC] = sMeowsticLevelUpLearnset, + [SPECIES_MEOWSTIC_MALE] = sMeowsticMaleLevelUpLearnset, [SPECIES_HONEDGE] = sHonedgeLevelUpLearnset, [SPECIES_DOUBLADE] = sDoubladeLevelUpLearnset, - [SPECIES_AEGISLASH] = sAegislashLevelUpLearnset, + [SPECIES_AEGISLASH_SHIELD] = sAegislashLevelUpLearnset, [SPECIES_SPRITZEE] = sSpritzeeLevelUpLearnset, [SPECIES_AROMATISSE] = sAromatisseLevelUpLearnset, [SPECIES_SWIRLIX] = sSwirlixLevelUpLearnset, @@ -715,17 +715,17 @@ const struct LevelUpMove *const gLevelUpLearnsets[NUM_SPECIES] = [SPECIES_KLEFKI] = sKlefkiLevelUpLearnset, [SPECIES_PHANTUMP] = sPhantumpLevelUpLearnset, [SPECIES_TREVENANT] = sTrevenantLevelUpLearnset, - [SPECIES_PUMPKABOO] = sPumpkabooLevelUpLearnset, - [SPECIES_GOURGEIST] = sGourgeistLevelUpLearnset, + [SPECIES_PUMPKABOO_AVERAGE] = sPumpkabooLevelUpLearnset, + [SPECIES_GOURGEIST_AVERAGE] = sGourgeistLevelUpLearnset, [SPECIES_BERGMITE] = sBergmiteLevelUpLearnset, [SPECIES_AVALUGG] = sAvaluggLevelUpLearnset, [SPECIES_NOIBAT] = sNoibatLevelUpLearnset, [SPECIES_NOIVERN] = sNoivernLevelUpLearnset, - [SPECIES_XERNEAS] = sXerneasLevelUpLearnset, + [SPECIES_XERNEAS_NEUTRAL] = sXerneasLevelUpLearnset, [SPECIES_YVELTAL] = sYveltalLevelUpLearnset, - [SPECIES_ZYGARDE] = sZygardeLevelUpLearnset, + [SPECIES_ZYGARDE_50_AURA_BREAK] = sZygardeLevelUpLearnset, [SPECIES_DIANCIE] = sDiancieLevelUpLearnset, - [SPECIES_HOOPA] = sHoopaLevelUpLearnset, + [SPECIES_HOOPA_CONFINED] = sHoopaConfinedLevelUpLearnset, [SPECIES_VOLCANION] = sVolcanionLevelUpLearnset, #endif #if P_GEN_7_POKEMON == TRUE @@ -748,12 +748,12 @@ const struct LevelUpMove *const gLevelUpLearnsets[NUM_SPECIES] = [SPECIES_VIKAVOLT] = sVikavoltLevelUpLearnset, [SPECIES_CRABRAWLER] = sCrabrawlerLevelUpLearnset, [SPECIES_CRABOMINABLE] = sCrabominableLevelUpLearnset, - [SPECIES_ORICORIO] = sOricorioLevelUpLearnset, + [SPECIES_ORICORIO_BAILE] = sOricorioLevelUpLearnset, [SPECIES_CUTIEFLY] = sCutieflyLevelUpLearnset, [SPECIES_RIBOMBEE] = sRibombeeLevelUpLearnset, [SPECIES_ROCKRUFF] = sRockruffLevelUpLearnset, - [SPECIES_LYCANROC] = sLycanrocLevelUpLearnset, - [SPECIES_WISHIWASHI] = sWishiwashiLevelUpLearnset, + [SPECIES_LYCANROC_MIDDAY] = sLycanrocMiddayLevelUpLearnset, + [SPECIES_WISHIWASHI_SOLO] = sWishiwashiLevelUpLearnset, [SPECIES_MAREANIE] = sMareanieLevelUpLearnset, [SPECIES_TOXAPEX] = sToxapexLevelUpLearnset, [SPECIES_MUDBRAY] = sMudbrayLevelUpLearnset, @@ -780,12 +780,12 @@ const struct LevelUpMove *const gLevelUpLearnsets[NUM_SPECIES] = [SPECIES_PALOSSAND] = sPalossandLevelUpLearnset, [SPECIES_PYUKUMUKU] = sPyukumukuLevelUpLearnset, [SPECIES_TYPE_NULL] = sTypeNullLevelUpLearnset, - [SPECIES_SILVALLY] = sSilvallyLevelUpLearnset, - [SPECIES_MINIOR] = sMiniorLevelUpLearnset, + [SPECIES_SILVALLY_NORMAL] = sSilvallyLevelUpLearnset, + [SPECIES_MINIOR_METEOR_RED] = sMiniorLevelUpLearnset, [SPECIES_KOMALA] = sKomalaLevelUpLearnset, [SPECIES_TURTONATOR] = sTurtonatorLevelUpLearnset, [SPECIES_TOGEDEMARU] = sTogedemaruLevelUpLearnset, - [SPECIES_MIMIKYU] = sMimikyuLevelUpLearnset, + [SPECIES_MIMIKYU_DISGUISED] = sMimikyuLevelUpLearnset, [SPECIES_BRUXISH] = sBruxishLevelUpLearnset, [SPECIES_DRAMPA] = sDrampaLevelUpLearnset, [SPECIES_DHELMISE] = sDhelmiseLevelUpLearnset, @@ -858,13 +858,13 @@ const struct LevelUpMove *const gLevelUpLearnsets[NUM_SPECIES] = [SPECIES_ARROKUDA] = sArrokudaLevelUpLearnset, [SPECIES_BARRASKEWDA] = sBarraskewdaLevelUpLearnset, [SPECIES_TOXEL] = sToxelLevelUpLearnset, - [SPECIES_TOXTRICITY] = sToxtricityLevelUpLearnset, + [SPECIES_TOXTRICITY_AMPED] = sToxtricityAmpedLevelUpLearnset, [SPECIES_SIZZLIPEDE] = sSizzlipedeLevelUpLearnset, [SPECIES_CENTISKORCH] = sCentiskorchLevelUpLearnset, [SPECIES_CLOBBOPUS] = sClobbopusLevelUpLearnset, [SPECIES_GRAPPLOCT] = sGrapploctLevelUpLearnset, - [SPECIES_SINISTEA] = sSinisteaLevelUpLearnset, - [SPECIES_POLTEAGEIST] = sPolteageistLevelUpLearnset, + [SPECIES_SINISTEA_PHONY] = sSinisteaLevelUpLearnset, + [SPECIES_POLTEAGEIST_PHONY] = sPolteageistLevelUpLearnset, [SPECIES_HATENNA] = sHatennaLevelUpLearnset, [SPECIES_HATTREM] = sHattremLevelUpLearnset, [SPECIES_HATTERENE] = sHattereneLevelUpLearnset, @@ -878,15 +878,15 @@ const struct LevelUpMove *const gLevelUpLearnsets[NUM_SPECIES] = [SPECIES_MR_RIME] = sMrRimeLevelUpLearnset, [SPECIES_RUNERIGUS] = sRunerigusLevelUpLearnset, [SPECIES_MILCERY] = sMilceryLevelUpLearnset, - [SPECIES_ALCREMIE] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM] = sAlcremieLevelUpLearnset, [SPECIES_FALINKS] = sFalinksLevelUpLearnset, [SPECIES_PINCURCHIN] = sPincurchinLevelUpLearnset, [SPECIES_SNOM] = sSnomLevelUpLearnset, [SPECIES_FROSMOTH] = sFrosmothLevelUpLearnset, [SPECIES_STONJOURNER] = sStonjournerLevelUpLearnset, - [SPECIES_EISCUE] = sEiscueLevelUpLearnset, - [SPECIES_INDEEDEE] = sIndeedeeLevelUpLearnset, - [SPECIES_MORPEKO] = sMorpekoLevelUpLearnset, + [SPECIES_EISCUE_ICE_FACE] = sEiscueLevelUpLearnset, + [SPECIES_INDEEDEE_MALE] = sIndeedeeMaleLevelUpLearnset, + [SPECIES_MORPEKO_FULL_BELLY] = sMorpekoLevelUpLearnset, [SPECIES_CUFANT] = sCufantLevelUpLearnset, [SPECIES_COPPERAJAH] = sCopperajahLevelUpLearnset, [SPECIES_DRACOZOLT] = sDracozoltLevelUpLearnset, @@ -897,11 +897,11 @@ const struct LevelUpMove *const gLevelUpLearnsets[NUM_SPECIES] = [SPECIES_DREEPY] = sDreepyLevelUpLearnset, [SPECIES_DRAKLOAK] = sDrakloakLevelUpLearnset, [SPECIES_DRAGAPULT] = sDragapultLevelUpLearnset, - [SPECIES_ZACIAN] = sZacianLevelUpLearnset, - [SPECIES_ZAMAZENTA] = sZamazentaLevelUpLearnset, + [SPECIES_ZACIAN_HERO_OF_MANY_BATTLES] = sZacianLevelUpLearnset, + [SPECIES_ZAMAZENTA_HERO_OF_MANY_BATTLES] = sZamazentaLevelUpLearnset, [SPECIES_ETERNATUS] = sEternatusLevelUpLearnset, [SPECIES_KUBFU] = sKubfuLevelUpLearnset, - [SPECIES_URSHIFU] = sUrshifuLevelUpLearnset, + [SPECIES_URSHIFU_SINGLE_STRIKE_STYLE] = sUrshifuSingleStrikeStyleLevelUpLearnset, [SPECIES_ZARUDE] = sZarudeLevelUpLearnset, [SPECIES_REGIELEKI] = sRegielekiLevelUpLearnset, [SPECIES_REGIDRAGO] = sRegidragoLevelUpLearnset, @@ -911,10 +911,10 @@ const struct LevelUpMove *const gLevelUpLearnsets[NUM_SPECIES] = [SPECIES_WYRDEER] = sWyrdeerLevelUpLearnset, [SPECIES_KLEAVOR] = sKleavorLevelUpLearnset, [SPECIES_URSALUNA] = sUrsalunaLevelUpLearnset, - [SPECIES_BASCULEGION] = sBasculegionLevelUpLearnset, + [SPECIES_BASCULEGION_MALE] = sBasculegionLevelUpLearnset, [SPECIES_SNEASLER] = sSneaslerLevelUpLearnset, [SPECIES_OVERQWIL] = sOverqwilLevelUpLearnset, - [SPECIES_ENAMORUS] = sEnamorusLevelUpLearnset, + [SPECIES_ENAMORUS_INCARNATE] = sEnamorusLevelUpLearnset, #endif // Megas [SPECIES_VENUSAUR_MEGA] = sVenusaurLevelUpLearnset, @@ -1011,7 +1011,7 @@ const struct LevelUpMove *const gLevelUpLearnsets[NUM_SPECIES] = [SPECIES_LINOONE_GALARIAN] = sLinooneGalarianLevelUpLearnset, #if P_GEN_5_POKEMON == TRUE [SPECIES_DARUMAKA_GALARIAN] = sDarumakaGalarianLevelUpLearnset, - [SPECIES_DARMANITAN_GALARIAN] = sDarmanitanGalarianLevelUpLearnset, + [SPECIES_DARMANITAN_GALARIAN_STANDARD_MODE] = sDarmanitanGalarianLevelUpLearnset, [SPECIES_YAMASK_GALARIAN] = sYamaskGalarianLevelUpLearnset, [SPECIES_STUNFISK_GALARIAN] = sStunfiskGalarianLevelUpLearnset, #endif @@ -1143,7 +1143,7 @@ const struct LevelUpMove *const gLevelUpLearnsets[NUM_SPECIES] = [SPECIES_BASCULIN_WHITE_STRIPED] = sBasculinLevelUpLearnset, // Darmanitan [SPECIES_DARMANITAN_ZEN_MODE] = sDarmanitanLevelUpLearnset, - [SPECIES_DARMANITAN_ZEN_MODE_GALARIAN] = sDarmanitanGalarianLevelUpLearnset, + [SPECIES_DARMANITAN_GALARIAN_ZEN_MODE] = sDarmanitanGalarianLevelUpLearnset, // Deerling [SPECIES_DEERLING_SUMMER] = sDeerlingLevelUpLearnset, [SPECIES_DEERLING_AUTUMN] = sDeerlingLevelUpLearnset, @@ -1234,7 +1234,7 @@ const struct LevelUpMove *const gLevelUpLearnsets[NUM_SPECIES] = // Xerneas [SPECIES_XERNEAS_ACTIVE] = sXerneasLevelUpLearnset, // Zygarde - [SPECIES_ZYGARDE_10] = sZygardeLevelUpLearnset, + [SPECIES_ZYGARDE_10_AURA_BREAK] = sZygardeLevelUpLearnset, [SPECIES_ZYGARDE_10_POWER_CONSTRUCT] = sZygardeLevelUpLearnset, [SPECIES_ZYGARDE_50_POWER_CONSTRUCT] = sZygardeLevelUpLearnset, [SPECIES_ZYGARDE_COMPLETE] = sZygardeLevelUpLearnset, @@ -1305,14 +1305,14 @@ const struct LevelUpMove *const gLevelUpLearnsets[NUM_SPECIES] = // Polteageist [SPECIES_POLTEAGEIST_ANTIQUE] = sPolteageistLevelUpLearnset, // Alcremie - [SPECIES_ALCREMIE_RUBY_CREAM] = sAlcremieLevelUpLearnset, - [SPECIES_ALCREMIE_MATCHA_CREAM] = sAlcremieLevelUpLearnset, - [SPECIES_ALCREMIE_MINT_CREAM] = sAlcremieLevelUpLearnset, - [SPECIES_ALCREMIE_LEMON_CREAM] = sAlcremieLevelUpLearnset, - [SPECIES_ALCREMIE_SALTED_CREAM] = sAlcremieLevelUpLearnset, - [SPECIES_ALCREMIE_RUBY_SWIRL] = sAlcremieLevelUpLearnset, - [SPECIES_ALCREMIE_CARAMEL_SWIRL] = sAlcremieLevelUpLearnset, - [SPECIES_ALCREMIE_RAINBOW_SWIRL] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL] = sAlcremieLevelUpLearnset, // Eiscue [SPECIES_EISCUE_NOICE_FACE] = sEiscueLevelUpLearnset, // Indeedee @@ -1361,7 +1361,7 @@ const struct LevelUpMove *const gLevelUpLearnsets[NUM_SPECIES] = [SPECIES_FLAPPLE_GIGANTAMAX] = sFlappleLevelUpLearnset, [SPECIES_APPLETUN_GIGANTAMAX] = sAppletunLevelUpLearnset, [SPECIES_SANDACONDA_GIGANTAMAX] = sSandacondaLevelUpLearnset, - [SPECIES_TOXTRICITY_AMPED_GIGANTAMAX] = sToxtricityLevelUpLearnset, + [SPECIES_TOXTRICITY_AMPED_GIGANTAMAX] = sToxtricityAmpedLevelUpLearnset, [SPECIES_TOXTRICITY_LOW_KEY_GIGANTAMAX] = sToxtricityLowKeyLevelUpLearnset, [SPECIES_CENTISKORCH_GIGANTAMAX] = sCentiskorchLevelUpLearnset, [SPECIES_HATTERENE_GIGANTAMAX] = sHattereneLevelUpLearnset, @@ -1369,7 +1369,7 @@ const struct LevelUpMove *const gLevelUpLearnsets[NUM_SPECIES] = [SPECIES_ALCREMIE_GIGANTAMAX] = sAlcremieLevelUpLearnset, [SPECIES_COPPERAJAH_GIGANTAMAX] = sCopperajahLevelUpLearnset, [SPECIES_DURALUDON_GIGANTAMAX] = sDuraludonLevelUpLearnset, - [SPECIES_URSHIFU_GIGANTAMAX] = sUrshifuLevelUpLearnset, + [SPECIES_URSHIFU_SINGLE_STRIKE_STYLE_GIGANTAMAX] = sUrshifuSingleStrikeStyleLevelUpLearnset, [SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX] = sUrshifuRapidStrikeStyleLevelUpLearnset, #endif }; diff --git a/src/data/pokemon/level_up_learnsets.h b/src/data/pokemon/level_up_learnsets.h index d7e866d933..092a711918 100644 --- a/src/data/pokemon/level_up_learnsets.h +++ b/src/data/pokemon/level_up_learnsets.h @@ -7862,7 +7862,7 @@ static const struct LevelUpMove sJirachiLevelUpLearnset[] = { LEVEL_UP_END }; -static const struct LevelUpMove sDeoxysLevelUpLearnset[] = { +static const struct LevelUpMove sDeoxysNormalLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_LEER), LEVEL_UP_MOVE( 1, MOVE_WRAP), LEVEL_UP_MOVE( 7, MOVE_NIGHT_SHADE), @@ -8356,7 +8356,7 @@ static const struct LevelUpMove sBurmyLevelUpLearnset[] = { LEVEL_UP_END }; -static const struct LevelUpMove sWormadamLevelUpLearnset[] = { +static const struct LevelUpMove sWormadamPlantCloakLevelUpLearnset[] = { LEVEL_UP_MOVE( 0, MOVE_QUIVER_DANCE), LEVEL_UP_MOVE( 1, MOVE_QUIVER_DANCE), LEVEL_UP_MOVE( 1, MOVE_SUCKER_PUNCH), @@ -9959,7 +9959,7 @@ static const struct LevelUpMove sDarkraiLevelUpLearnset[] = { LEVEL_UP_END }; -static const struct LevelUpMove sShayminLevelUpLearnset[] = { +static const struct LevelUpMove sShayminLandLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_GROWTH), LEVEL_UP_MOVE(10, MOVE_MAGICAL_LEAF), LEVEL_UP_MOVE(19, MOVE_LEECH_SEED), @@ -13816,7 +13816,7 @@ static const struct LevelUpMove sEspurrLevelUpLearnset[] = { LEVEL_UP_END }; -static const struct LevelUpMove sMeowsticLevelUpLearnset[] = { +static const struct LevelUpMove sMeowsticMaleLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_QUICK_GUARD), LEVEL_UP_MOVE( 1, MOVE_MEAN_LOOK), LEVEL_UP_MOVE( 1, MOVE_HELPING_HAND), @@ -14707,7 +14707,7 @@ static const struct LevelUpMove sDiancieLevelUpLearnset[] = { LEVEL_UP_END }; -static const struct LevelUpMove sHoopaLevelUpLearnset[] = { +static const struct LevelUpMove sHoopaConfinedLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_HYPERSPACE_HOLE), LEVEL_UP_MOVE( 1, MOVE_TRICK), LEVEL_UP_MOVE( 1, MOVE_DESTINY_BOND), @@ -15233,7 +15233,7 @@ static const struct LevelUpMove sRockruffLevelUpLearnset[] = { LEVEL_UP_END }; -static const struct LevelUpMove sLycanrocLevelUpLearnset[] = { +static const struct LevelUpMove sLycanrocMiddayLevelUpLearnset[] = { LEVEL_UP_MOVE( 0, MOVE_ACCELEROCK), LEVEL_UP_MOVE( 1, MOVE_ACCELEROCK), LEVEL_UP_MOVE( 1, MOVE_QUICK_GUARD), @@ -17156,7 +17156,7 @@ static const struct LevelUpMove sToxelLevelUpLearnset[] = { LEVEL_UP_END }; -static const struct LevelUpMove sToxtricityLevelUpLearnset[] = { +static const struct LevelUpMove sToxtricityAmpedLevelUpLearnset[] = { LEVEL_UP_MOVE( 0, MOVE_SPARK), LEVEL_UP_MOVE( 1, MOVE_SPARK), LEVEL_UP_MOVE( 1, MOVE_EERIE_IMPULSE), @@ -17678,7 +17678,7 @@ static const struct LevelUpMove sEiscueLevelUpLearnset[] = { LEVEL_UP_END }; -static const struct LevelUpMove sIndeedeeLevelUpLearnset[] = { +static const struct LevelUpMove sIndeedeeMaleLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_STORED_POWER), LEVEL_UP_MOVE( 1, MOVE_PLAY_NICE), LEVEL_UP_MOVE( 5, MOVE_ENCORE), @@ -17962,7 +17962,7 @@ static const struct LevelUpMove sKubfuLevelUpLearnset[] = { LEVEL_UP_END }; -static const struct LevelUpMove sUrshifuLevelUpLearnset[] = { +static const struct LevelUpMove sUrshifuSingleStrikeStyleLevelUpLearnset[] = { LEVEL_UP_MOVE( 0, MOVE_WICKED_BLOW), LEVEL_UP_MOVE( 1, MOVE_WICKED_BLOW), LEVEL_UP_MOVE( 1, MOVE_SUCKER_PUNCH), diff --git a/src/data/pokemon/species_info.h b/src/data/pokemon/species_info.h index 940cd68911..ad4822ba47 100644 --- a/src/data/pokemon/species_info.h +++ b/src/data/pokemon/species_info.h @@ -1398,7 +1398,7 @@ .bodyColor = BODY_COLOR_WHITE, \ .noFlip = FALSE -#define URSHIFU_MISC_INFO \ +#define URSHIFU_SINGLE_STRIKE_STYLE_MISC_INFO \ .baseHP = 100, \ .baseAttack = 130, \ .baseDefense = 100, \ @@ -9394,7 +9394,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_CASTFORM] = CASTFORM_SPECIES_INFO(TYPE_NORMAL, BODY_COLOR_GRAY), + [SPECIES_CASTFORM_NORMAL] = CASTFORM_SPECIES_INFO(TYPE_NORMAL, BODY_COLOR_GRAY), [SPECIES_KECLEON] = { @@ -10185,7 +10185,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .flags = SPECIES_FLAG_MYTHICAL, }, - [SPECIES_DEOXYS] = + [SPECIES_DEOXYS_NORMAL] = { .baseHP = 50, .baseAttack = 150, @@ -10790,9 +10790,9 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_BURMY] = BURMY_SPECIES_INFO(BODY_COLOR_GREEN), + [SPECIES_BURMY_PLANT_CLOAK] = BURMY_SPECIES_INFO(BODY_COLOR_GREEN), - [SPECIES_WORMADAM] = + [SPECIES_WORMADAM_PLANT_CLOAK] = { .baseHP = 60, .baseAttack = 59, @@ -10975,11 +10975,11 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_CHERRIM] = CHERRIM_SPECIES_INFO(BODY_COLOR_PURPLE), + [SPECIES_CHERRIM_OVERCAST] = CHERRIM_SPECIES_INFO(BODY_COLOR_PURPLE), - [SPECIES_SHELLOS] = SHELLOS_SPECIES_INFO(BODY_COLOR_PURPLE), + [SPECIES_SHELLOS_WEST_SEA] = SHELLOS_SPECIES_INFO(BODY_COLOR_PURPLE), - [SPECIES_GASTRODON] = GASTRODON_SPECIES_INFO(BODY_COLOR_PURPLE), + [SPECIES_GASTRODON_WEST_SEA] = GASTRODON_SPECIES_INFO(BODY_COLOR_PURPLE), [SPECIES_AMBIPOM] = { @@ -12425,7 +12425,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .flags = SPECIES_FLAG_LEGENDARY, }, - [SPECIES_GIRATINA] = + [SPECIES_GIRATINA_ALTERED] = { .baseHP = 150, .baseAttack = 100, @@ -12541,7 +12541,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .flags = SPECIES_FLAG_MYTHICAL, }, - [SPECIES_SHAYMIN] = + [SPECIES_SHAYMIN_LAND] = { .baseHP = 100, .baseAttack = 100, @@ -12566,7 +12566,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .flags = SPECIES_FLAG_MYTHICAL, }, - [SPECIES_ARCEUS] = + [SPECIES_ARCEUS_NORMAL] = { .baseHP = 120, .baseAttack = 120, @@ -13893,7 +13893,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = TRUE, }, - [SPECIES_BASCULIN] = + [SPECIES_BASCULIN_RED_STRIPED] = { .baseHP = 70, .baseAttack = 92, @@ -14011,7 +14011,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_DARMANITAN] = + [SPECIES_DARMANITAN_STANDARD_MODE] = { .baseHP = 105, .baseAttack = 140, @@ -14670,9 +14670,9 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_DEERLING] = DEERLING_SPECIES_INFO(BODY_COLOR_PINK), + [SPECIES_DEERLING_SPRING] = DEERLING_SPECIES_INFO(BODY_COLOR_PINK), - [SPECIES_SAWSBUCK] = SAWSBUCK_SPECIES_INFO, + [SPECIES_SAWSBUCK_SPRING] = SAWSBUCK_SPECIES_INFO, [SPECIES_EMOLGA] = { @@ -15899,7 +15899,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .flags = SPECIES_FLAG_LEGENDARY, }, - [SPECIES_TORNADUS] = + [SPECIES_TORNADUS_INCARNATE] = { .baseHP = 79, .baseAttack = 115, @@ -15922,7 +15922,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .flags = SPECIES_FLAG_LEGENDARY, }, - [SPECIES_THUNDURUS] = + [SPECIES_THUNDURUS_INCARNATE] = { .baseHP = 79, .baseAttack = 115, @@ -15991,7 +15991,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .flags = SPECIES_FLAG_LEGENDARY, }, - [SPECIES_LANDORUS] = + [SPECIES_LANDORUS_INCARNATE] = { .baseHP = 89, .baseAttack = 125, @@ -16039,7 +16039,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .flags = SPECIES_FLAG_LEGENDARY, }, - [SPECIES_KELDEO] = + [SPECIES_KELDEO_ORDINARY] = { .baseHP = 91, .baseAttack = 72, @@ -16062,7 +16062,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .flags = SPECIES_FLAG_MYTHICAL, }, - [SPECIES_MELOETTA] = + [SPECIES_MELOETTA_ARIA] = { .baseHP = 100, .baseAttack = 77, @@ -16445,7 +16445,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_VIVILLON] = VIVILLON_SPECIES_INFO(BODY_COLOR_WHITE), + [SPECIES_VIVILLON_ICY_SNOW] = VIVILLON_SPECIES_INFO(BODY_COLOR_WHITE), [SPECIES_LITLEO] = { @@ -16491,11 +16491,11 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_FLABEBE] = FLABEBE_SPECIES_INFO, + [SPECIES_FLABEBE_RED_FLOWER] = FLABEBE_SPECIES_INFO, - [SPECIES_FLOETTE] = FLOETTE_SPECIES_INFO, + [SPECIES_FLOETTE_RED_FLOWER] = FLOETTE_SPECIES_INFO, - [SPECIES_FLORGES] = FLORGES_SPECIES_INFO, + [SPECIES_FLORGES_RED_FLOWER] = FLORGES_SPECIES_INFO, [SPECIES_SKIDDO] = { @@ -16587,7 +16587,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_FURFROU] = FURFROU_SPECIES_INFO(FLIP), + [SPECIES_FURFROU_NATURAL] = FURFROU_SPECIES_INFO(FLIP), [SPECIES_ESPURR] = { @@ -16611,7 +16611,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_MEOWSTIC] = + [SPECIES_MEOWSTIC_MALE] = { .baseHP = 74, .baseAttack = 48, @@ -16677,7 +16677,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_AEGISLASH] = + [SPECIES_AEGISLASH_SHIELD] = { .baseHP = 60, .baseAttack = 50, @@ -17330,7 +17330,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_PUMPKABOO] = + [SPECIES_PUMPKABOO_AVERAGE] = { .baseHP = 49, .baseAttack = 66, @@ -17341,7 +17341,7 @@ const struct SpeciesInfo gSpeciesInfo[] = PUMKPABOO_MISC_INFO, }, - [SPECIES_GOURGEIST] = + [SPECIES_GOURGEIST_AVERAGE] = { .baseHP = 65, .baseAttack = 90, @@ -17456,7 +17456,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_XERNEAS] = XERNEAS_SPECIES_INFO, + [SPECIES_XERNEAS_NEUTRAL] = XERNEAS_SPECIES_INFO, [SPECIES_YVELTAL] = { @@ -17481,7 +17481,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .flags = SPECIES_FLAG_LEGENDARY, }, - [SPECIES_ZYGARDE] = ZYGARDE_50_SPECIES_INFO(ABILITY_AURA_BREAK), + [SPECIES_ZYGARDE_50_AURA_BREAK] = ZYGARDE_50_SPECIES_INFO(ABILITY_AURA_BREAK), [SPECIES_DIANCIE] = { @@ -17507,7 +17507,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .flags = SPECIES_FLAG_MYTHICAL, }, - [SPECIES_HOOPA] = + [SPECIES_HOOPA_CONFINED] = { .baseHP = 80, .baseAttack = 110, @@ -17981,7 +17981,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_ORICORIO] = ORICORIO_SPECIES_INFO(TYPE_FIRE, BODY_COLOR_RED), + [SPECIES_ORICORIO_BAILE] = ORICORIO_SPECIES_INFO(TYPE_FIRE, BODY_COLOR_RED), [SPECIES_CUTIEFLY] = { @@ -18031,7 +18031,7 @@ const struct SpeciesInfo gSpeciesInfo[] = [SPECIES_ROCKRUFF] = ROCKRUFF_SPECIES_INFO(ABILITY_KEEN_EYE, ABILITY_VITAL_SPIRIT, ABILITY_STEADFAST), - [SPECIES_LYCANROC] = + [SPECIES_LYCANROC_MIDDAY] = { .baseHP = 75, .baseAttack = 115, @@ -18053,7 +18053,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_WISHIWASHI] = + [SPECIES_WISHIWASHI_SOLO] = { .baseHP = 45, .baseAttack = 20, @@ -18668,9 +18668,9 @@ const struct SpeciesInfo gSpeciesInfo[] = .flags = SPECIES_FLAG_LEGENDARY, }, - [SPECIES_SILVALLY] = SILVALLY_SPECIES_INFO(TYPE_NORMAL), + [SPECIES_SILVALLY_NORMAL] = SILVALLY_SPECIES_INFO(TYPE_NORMAL), - [SPECIES_MINIOR] = MINIOR_METEOR_SPECIES_INFO, + [SPECIES_MINIOR_METEOR_RED] = MINIOR_METEOR_SPECIES_INFO, [SPECIES_KOMALA] = { @@ -18740,7 +18740,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_MIMIKYU] = MIMIKYU_SPECIES_INFO, + [SPECIES_MIMIKYU_DISGUISED] = MIMIKYU_SPECIES_INFO, [SPECIES_BRUXISH] = { @@ -20095,7 +20095,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_TOXTRICITY] = + [SPECIES_TOXTRICITY_AMPED] = { TOXTRICITY_MISC_INFO(ABILITY_PLUS), }, @@ -20171,9 +20171,9 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_SINISTEA] = SINISTEA_SPECIES_INFO, + [SPECIES_SINISTEA_PHONY] = SINISTEA_SPECIES_INFO, - [SPECIES_POLTEAGEIST] = POLTEAGEIST_SPECIES_INFO, + [SPECIES_POLTEAGEIST_PHONY] = POLTEAGEIST_SPECIES_INFO, [SPECIES_HATENNA] = { @@ -20428,7 +20428,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_ALCREMIE] = { ALCREMIE_MISC_INFO(BODY_COLOR_WHITE) }, + [SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM] = { ALCREMIE_MISC_INFO(BODY_COLOR_WHITE) }, [SPECIES_FALINKS] = { @@ -20542,7 +20542,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_EISCUE] = + [SPECIES_EISCUE_ICE_FACE] = { .baseHP = 75, .baseAttack = 80, @@ -20564,7 +20564,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_INDEEDEE] = + [SPECIES_INDEEDEE_MALE] = { .baseHP = 60, .baseAttack = 65, @@ -20586,7 +20586,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_MORPEKO] = MORPEKO_SPECIES_INFO, + [SPECIES_MORPEKO_FULL_BELLY] = MORPEKO_SPECIES_INFO, [SPECIES_CUFANT] = { @@ -20775,7 +20775,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_ZACIAN] = + [SPECIES_ZACIAN_HERO_OF_MANY_BATTLES] = { .baseHP = 92, .baseAttack = P_UPDATED_STATS >= GEN_9 ? 120 : 130, @@ -20798,7 +20798,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .flags = SPECIES_FLAG_LEGENDARY, }, - [SPECIES_ZAMAZENTA] = + [SPECIES_ZAMAZENTA_HERO_OF_MANY_BATTLES] = { .baseHP = 92, .baseAttack = P_UPDATED_STATS >= GEN_9 ? 120 : 130, @@ -20867,7 +20867,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .flags = SPECIES_FLAG_LEGENDARY, }, - [SPECIES_URSHIFU] = { URSHIFU_MISC_INFO, }, + [SPECIES_URSHIFU_SINGLE_STRIKE_STYLE] = { URSHIFU_SINGLE_STRIKE_STYLE_MISC_INFO, }, [SPECIES_ZARUDE] = ZARUDE_SPECIES_INFO, @@ -21052,7 +21052,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_BASCULEGION] = + [SPECIES_BASCULEGION_MALE] = { .baseHP = 120, .baseAttack = 112, @@ -21141,7 +21141,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_ENAMORUS] = + [SPECIES_ENAMORUS_INCARNATE] = { .baseHP = 74, .baseAttack = 115, @@ -23144,7 +23144,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .flags = SPECIES_FLAG_GALARIAN_FORM, }, - [SPECIES_DARMANITAN_GALARIAN] = + [SPECIES_DARMANITAN_GALARIAN_STANDARD_MODE] = { .baseHP = 105, .baseAttack = 140, @@ -23953,7 +23953,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_DARMANITAN_ZEN_MODE_GALARIAN] = + [SPECIES_DARMANITAN_GALARIAN_ZEN_MODE] = { .baseHP = 105, .baseAttack = 160, @@ -24389,7 +24389,7 @@ const struct SpeciesInfo gSpeciesInfo[] = [SPECIES_XERNEAS_ACTIVE] = XERNEAS_SPECIES_INFO, - [SPECIES_ZYGARDE_10] = ZYGARDE_10_SPECIES_INFO(ABILITY_AURA_BREAK), + [SPECIES_ZYGARDE_10_AURA_BREAK] = ZYGARDE_10_SPECIES_INFO(ABILITY_AURA_BREAK), [SPECIES_ZYGARDE_10_POWER_CONSTRUCT] = ZYGARDE_50_SPECIES_INFO(ABILITY_POWER_CONSTRUCT), [SPECIES_ZYGARDE_50_POWER_CONSTRUCT] = ZYGARDE_50_SPECIES_INFO(ABILITY_POWER_CONSTRUCT), @@ -24635,14 +24635,14 @@ const struct SpeciesInfo gSpeciesInfo[] = [SPECIES_POLTEAGEIST_ANTIQUE] = POLTEAGEIST_SPECIES_INFO, - [SPECIES_ALCREMIE_RUBY_CREAM] = { ALCREMIE_MISC_INFO(BODY_COLOR_PINK) }, - [SPECIES_ALCREMIE_MATCHA_CREAM] = { ALCREMIE_MISC_INFO(BODY_COLOR_GREEN) }, - [SPECIES_ALCREMIE_MINT_CREAM] = { ALCREMIE_MISC_INFO(BODY_COLOR_BLUE) }, - [SPECIES_ALCREMIE_LEMON_CREAM] = { ALCREMIE_MISC_INFO(BODY_COLOR_YELLOW) }, - [SPECIES_ALCREMIE_SALTED_CREAM] = { ALCREMIE_MISC_INFO(BODY_COLOR_WHITE) }, - [SPECIES_ALCREMIE_RUBY_SWIRL] = { ALCREMIE_MISC_INFO(BODY_COLOR_YELLOW) }, - [SPECIES_ALCREMIE_CARAMEL_SWIRL] = { ALCREMIE_MISC_INFO(BODY_COLOR_BROWN) }, - [SPECIES_ALCREMIE_RAINBOW_SWIRL] = { ALCREMIE_MISC_INFO(BODY_COLOR_YELLOW) }, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM] = { ALCREMIE_MISC_INFO(BODY_COLOR_PINK) }, + [SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM] = { ALCREMIE_MISC_INFO(BODY_COLOR_GREEN) }, + [SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM] = { ALCREMIE_MISC_INFO(BODY_COLOR_BLUE) }, + [SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM] = { ALCREMIE_MISC_INFO(BODY_COLOR_YELLOW) }, + [SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM] = { ALCREMIE_MISC_INFO(BODY_COLOR_WHITE) }, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL] = { ALCREMIE_MISC_INFO(BODY_COLOR_YELLOW) }, + [SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL] = { ALCREMIE_MISC_INFO(BODY_COLOR_BROWN) }, + [SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL] = { ALCREMIE_MISC_INFO(BODY_COLOR_YELLOW) }, [SPECIES_EISCUE_NOICE_FACE] = { @@ -24996,9 +24996,9 @@ const struct SpeciesInfo gSpeciesInfo[] = DURALUDON_MISC_INFO, .gigantamax = TRUE, }, - [SPECIES_URSHIFU_GIGANTAMAX] = + [SPECIES_URSHIFU_SINGLE_STRIKE_STYLE_GIGANTAMAX] = { - URSHIFU_MISC_INFO, + URSHIFU_SINGLE_STRIKE_STYLE_MISC_INFO, .gigantamax = TRUE, }, [SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX] = diff --git a/src/data/pokemon/teachable_learnset_pointers.h b/src/data/pokemon/teachable_learnset_pointers.h index 1273c422ad..8d00b8f05c 100644 --- a/src/data/pokemon/teachable_learnset_pointers.h +++ b/src/data/pokemon/teachable_learnset_pointers.h @@ -360,7 +360,7 @@ const u16 *const gTeachableLearnsets[NUM_SPECIES] = [SPECIES_ARON] = sAronTeachableLearnset, [SPECIES_LAIRON] = sLaironTeachableLearnset, [SPECIES_AGGRON] = sAggronTeachableLearnset, - [SPECIES_CASTFORM] = sCastformTeachableLearnset, + [SPECIES_CASTFORM_NORMAL] = sCastformTeachableLearnset, [SPECIES_VOLBEAT] = sVolbeatTeachableLearnset, [SPECIES_ILLUMISE] = sIllumiseTeachableLearnset, [SPECIES_LILEEP] = sLileepTeachableLearnset, @@ -385,7 +385,7 @@ const u16 *const gTeachableLearnsets[NUM_SPECIES] = [SPECIES_LATIAS] = sLatiasTeachableLearnset, [SPECIES_LATIOS] = sLatiosTeachableLearnset, [SPECIES_JIRACHI] = sJirachiTeachableLearnset, - [SPECIES_DEOXYS] = sDeoxysTeachableLearnset, + [SPECIES_DEOXYS_NORMAL] = sDeoxysNormalTeachableLearnset, [SPECIES_CHIMECHO] = sChimechoTeachableLearnset, #if P_GEN_4_POKEMON == TRUE [SPECIES_TURTWIG] = sTurtwigTeachableLearnset, @@ -413,8 +413,8 @@ const u16 *const gTeachableLearnsets[NUM_SPECIES] = [SPECIES_RAMPARDOS] = sRampardosTeachableLearnset, [SPECIES_SHIELDON] = sShieldonTeachableLearnset, [SPECIES_BASTIODON] = sBastiodonTeachableLearnset, - [SPECIES_BURMY] = sBurmyTeachableLearnset, - [SPECIES_WORMADAM] = sWormadamTeachableLearnset, + [SPECIES_BURMY_PLANT_CLOAK] = sBurmyTeachableLearnset, + [SPECIES_WORMADAM_PLANT_CLOAK] = sWormadamPlantCloakTeachableLearnset, [SPECIES_MOTHIM] = sMothimTeachableLearnset, [SPECIES_COMBEE] = sCombeeTeachableLearnset, [SPECIES_VESPIQUEN] = sVespiquenTeachableLearnset, @@ -422,9 +422,9 @@ const u16 *const gTeachableLearnsets[NUM_SPECIES] = [SPECIES_BUIZEL] = sBuizelTeachableLearnset, [SPECIES_FLOATZEL] = sFloatzelTeachableLearnset, [SPECIES_CHERUBI] = sCherubiTeachableLearnset, - [SPECIES_CHERRIM] = sCherrimTeachableLearnset, - [SPECIES_SHELLOS] = sShellosTeachableLearnset, - [SPECIES_GASTRODON] = sGastrodonTeachableLearnset, + [SPECIES_CHERRIM_OVERCAST] = sCherrimTeachableLearnset, + [SPECIES_SHELLOS_WEST_SEA] = sShellosTeachableLearnset, + [SPECIES_GASTRODON_WEST_SEA] = sGastrodonTeachableLearnset, [SPECIES_AMBIPOM] = sAmbipomTeachableLearnset, [SPECIES_DRIFLOON] = sDrifloonTeachableLearnset, [SPECIES_DRIFBLIM] = sDrifblimTeachableLearnset, @@ -488,13 +488,13 @@ const u16 *const gTeachableLearnsets[NUM_SPECIES] = [SPECIES_PALKIA] = sPalkiaTeachableLearnset, [SPECIES_HEATRAN] = sHeatranTeachableLearnset, [SPECIES_REGIGIGAS] = sRegigigasTeachableLearnset, - [SPECIES_GIRATINA] = sGiratinaTeachableLearnset, + [SPECIES_GIRATINA_ALTERED] = sGiratinaTeachableLearnset, [SPECIES_CRESSELIA] = sCresseliaTeachableLearnset, [SPECIES_PHIONE] = sPhioneTeachableLearnset, [SPECIES_MANAPHY] = sManaphyTeachableLearnset, [SPECIES_DARKRAI] = sDarkraiTeachableLearnset, - [SPECIES_SHAYMIN] = sShayminTeachableLearnset, - [SPECIES_ARCEUS] = sArceusTeachableLearnset, + [SPECIES_SHAYMIN_LAND] = sShayminLandTeachableLearnset, + [SPECIES_ARCEUS_NORMAL] = sArceusTeachableLearnset, #endif #if P_GEN_5_POKEMON == TRUE [SPECIES_VICTINI] = sVictiniTeachableLearnset, @@ -553,12 +553,12 @@ const u16 *const gTeachableLearnsets[NUM_SPECIES] = [SPECIES_WHIMSICOTT] = sWhimsicottTeachableLearnset, [SPECIES_PETILIL] = sPetililTeachableLearnset, [SPECIES_LILLIGANT] = sLilligantTeachableLearnset, - [SPECIES_BASCULIN] = sBasculinTeachableLearnset, + [SPECIES_BASCULIN_RED_STRIPED] = sBasculinTeachableLearnset, [SPECIES_SANDILE] = sSandileTeachableLearnset, [SPECIES_KROKOROK] = sKrokorokTeachableLearnset, [SPECIES_KROOKODILE] = sKrookodileTeachableLearnset, [SPECIES_DARUMAKA] = sDarumakaTeachableLearnset, - [SPECIES_DARMANITAN] = sDarmanitanTeachableLearnset, + [SPECIES_DARMANITAN_STANDARD_MODE] = sDarmanitanTeachableLearnset, [SPECIES_MARACTUS] = sMaractusTeachableLearnset, [SPECIES_DWEBBLE] = sDwebbleTeachableLearnset, [SPECIES_CRUSTLE] = sCrustleTeachableLearnset, @@ -588,8 +588,8 @@ const u16 *const gTeachableLearnsets[NUM_SPECIES] = [SPECIES_VANILLITE] = sVanilliteTeachableLearnset, [SPECIES_VANILLISH] = sVanillishTeachableLearnset, [SPECIES_VANILLUXE] = sVanilluxeTeachableLearnset, - [SPECIES_DEERLING] = sDeerlingTeachableLearnset, - [SPECIES_SAWSBUCK] = sSawsbuckTeachableLearnset, + [SPECIES_DEERLING_SPRING] = sDeerlingTeachableLearnset, + [SPECIES_SAWSBUCK_SPRING] = sSawsbuckTeachableLearnset, [SPECIES_EMOLGA] = sEmolgaTeachableLearnset, [SPECIES_KARRABLAST] = sKarrablastTeachableLearnset, [SPECIES_ESCAVALIER] = sEscavalierTeachableLearnset, @@ -644,14 +644,14 @@ const u16 *const gTeachableLearnsets[NUM_SPECIES] = [SPECIES_COBALION] = sCobalionTeachableLearnset, [SPECIES_TERRAKION] = sTerrakionTeachableLearnset, [SPECIES_VIRIZION] = sVirizionTeachableLearnset, - [SPECIES_TORNADUS] = sTornadusTeachableLearnset, - [SPECIES_THUNDURUS] = sThundurusTeachableLearnset, + [SPECIES_TORNADUS_INCARNATE] = sTornadusTeachableLearnset, + [SPECIES_THUNDURUS_INCARNATE] = sThundurusTeachableLearnset, [SPECIES_RESHIRAM] = sReshiramTeachableLearnset, [SPECIES_ZEKROM] = sZekromTeachableLearnset, - [SPECIES_LANDORUS] = sLandorusTeachableLearnset, + [SPECIES_LANDORUS_INCARNATE] = sLandorusTeachableLearnset, [SPECIES_KYUREM] = sKyuremTeachableLearnset, - [SPECIES_KELDEO] = sKeldeoTeachableLearnset, - [SPECIES_MELOETTA] = sMeloettaTeachableLearnset, + [SPECIES_KELDEO_ORDINARY] = sKeldeoTeachableLearnset, + [SPECIES_MELOETTA_ARIA] = sMeloettaTeachableLearnset, [SPECIES_GENESECT] = sGenesectTeachableLearnset, #endif #if P_GEN_6_POKEMON == TRUE @@ -671,22 +671,22 @@ const u16 *const gTeachableLearnsets[NUM_SPECIES] = [SPECIES_TALONFLAME] = sTalonflameTeachableLearnset, [SPECIES_SCATTERBUG] = sScatterbugTeachableLearnset, [SPECIES_SPEWPA] = sSpewpaTeachableLearnset, - [SPECIES_VIVILLON] = sVivillonTeachableLearnset, + [SPECIES_VIVILLON_ICY_SNOW] = sVivillonTeachableLearnset, [SPECIES_LITLEO] = sLitleoTeachableLearnset, [SPECIES_PYROAR] = sPyroarTeachableLearnset, - [SPECIES_FLABEBE] = sFlabebeTeachableLearnset, - [SPECIES_FLOETTE] = sFloetteTeachableLearnset, - [SPECIES_FLORGES] = sFlorgesTeachableLearnset, + [SPECIES_FLABEBE_RED_FLOWER] = sFlabebeTeachableLearnset, + [SPECIES_FLOETTE_RED_FLOWER] = sFloetteTeachableLearnset, + [SPECIES_FLORGES_RED_FLOWER] = sFlorgesTeachableLearnset, [SPECIES_SKIDDO] = sSkiddoTeachableLearnset, [SPECIES_GOGOAT] = sGogoatTeachableLearnset, [SPECIES_PANCHAM] = sPanchamTeachableLearnset, [SPECIES_PANGORO] = sPangoroTeachableLearnset, - [SPECIES_FURFROU] = sFurfrouTeachableLearnset, + [SPECIES_FURFROU_NATURAL] = sFurfrouTeachableLearnset, [SPECIES_ESPURR] = sEspurrTeachableLearnset, - [SPECIES_MEOWSTIC] = sMeowsticTeachableLearnset, + [SPECIES_MEOWSTIC] = sMeowsticMaleTeachableLearnset, [SPECIES_HONEDGE] = sHonedgeTeachableLearnset, [SPECIES_DOUBLADE] = sDoubladeTeachableLearnset, - [SPECIES_AEGISLASH] = sAegislashTeachableLearnset, + [SPECIES_AEGISLASH_SHIELD] = sAegislashTeachableLearnset, [SPECIES_SPRITZEE] = sSpritzeeTeachableLearnset, [SPECIES_AROMATISSE] = sAromatisseTeachableLearnset, [SPECIES_SWIRLIX] = sSwirlixTeachableLearnset, @@ -715,17 +715,17 @@ const u16 *const gTeachableLearnsets[NUM_SPECIES] = [SPECIES_KLEFKI] = sKlefkiTeachableLearnset, [SPECIES_PHANTUMP] = sPhantumpTeachableLearnset, [SPECIES_TREVENANT] = sTrevenantTeachableLearnset, - [SPECIES_PUMPKABOO] = sPumpkabooTeachableLearnset, - [SPECIES_GOURGEIST] = sGourgeistTeachableLearnset, + [SPECIES_PUMPKABOO_AVERAGE] = sPumpkabooTeachableLearnset, + [SPECIES_GOURGEIST_AVERAGE] = sGourgeistTeachableLearnset, [SPECIES_BERGMITE] = sBergmiteTeachableLearnset, [SPECIES_AVALUGG] = sAvaluggTeachableLearnset, [SPECIES_NOIBAT] = sNoibatTeachableLearnset, [SPECIES_NOIVERN] = sNoivernTeachableLearnset, - [SPECIES_XERNEAS] = sXerneasTeachableLearnset, + [SPECIES_XERNEAS_NEUTRAL] = sXerneasTeachableLearnset, [SPECIES_YVELTAL] = sYveltalTeachableLearnset, - [SPECIES_ZYGARDE] = sZygardeTeachableLearnset, + [SPECIES_ZYGARDE_50_AURA_BREAK] = sZygardeTeachableLearnset, [SPECIES_DIANCIE] = sDiancieTeachableLearnset, - [SPECIES_HOOPA] = sHoopaTeachableLearnset, + [SPECIES_HOOPA_CONFINED] = sHoopaConfinedTeachableLearnset, [SPECIES_VOLCANION] = sVolcanionTeachableLearnset, #endif #if P_GEN_7_POKEMON == TRUE @@ -748,12 +748,12 @@ const u16 *const gTeachableLearnsets[NUM_SPECIES] = [SPECIES_VIKAVOLT] = sVikavoltTeachableLearnset, [SPECIES_CRABRAWLER] = sCrabrawlerTeachableLearnset, [SPECIES_CRABOMINABLE] = sCrabominableTeachableLearnset, - [SPECIES_ORICORIO] = sOricorioTeachableLearnset, + [SPECIES_ORICORIO_BAILE] = sOricorioTeachableLearnset, [SPECIES_CUTIEFLY] = sCutieflyTeachableLearnset, [SPECIES_RIBOMBEE] = sRibombeeTeachableLearnset, [SPECIES_ROCKRUFF] = sRockruffTeachableLearnset, - [SPECIES_LYCANROC] = sLycanrocTeachableLearnset, - [SPECIES_WISHIWASHI] = sWishiwashiTeachableLearnset, + [SPECIES_LYCANROC_MIDDAY] = sLycanrocMiddayTeachableLearnset, + [SPECIES_WISHIWASHI_SOLO] = sWishiwashiTeachableLearnset, [SPECIES_MAREANIE] = sMareanieTeachableLearnset, [SPECIES_TOXAPEX] = sToxapexTeachableLearnset, [SPECIES_MUDBRAY] = sMudbrayTeachableLearnset, @@ -780,12 +780,12 @@ const u16 *const gTeachableLearnsets[NUM_SPECIES] = [SPECIES_PALOSSAND] = sPalossandTeachableLearnset, [SPECIES_PYUKUMUKU] = sPyukumukuTeachableLearnset, [SPECIES_TYPE_NULL] = sTypeNullTeachableLearnset, - [SPECIES_SILVALLY] = sSilvallyTeachableLearnset, - [SPECIES_MINIOR] = sMiniorTeachableLearnset, + [SPECIES_SILVALLY_NORMAL] = sSilvallyTeachableLearnset, + [SPECIES_MINIOR_METEOR_RED] = sMiniorTeachableLearnset, [SPECIES_KOMALA] = sKomalaTeachableLearnset, [SPECIES_TURTONATOR] = sTurtonatorTeachableLearnset, [SPECIES_TOGEDEMARU] = sTogedemaruTeachableLearnset, - [SPECIES_MIMIKYU] = sMimikyuTeachableLearnset, + [SPECIES_MIMIKYU_DISGUISED] = sMimikyuTeachableLearnset, [SPECIES_BRUXISH] = sBruxishTeachableLearnset, [SPECIES_DRAMPA] = sDrampaTeachableLearnset, [SPECIES_DHELMISE] = sDhelmiseTeachableLearnset, @@ -858,13 +858,13 @@ const u16 *const gTeachableLearnsets[NUM_SPECIES] = [SPECIES_ARROKUDA] = sArrokudaTeachableLearnset, [SPECIES_BARRASKEWDA] = sBarraskewdaTeachableLearnset, [SPECIES_TOXEL] = sToxelTeachableLearnset, - [SPECIES_TOXTRICITY] = sToxtricityTeachableLearnset, + [SPECIES_TOXTRICITY_AMPED] = sToxtricityAmpedTeachableLearnset, [SPECIES_SIZZLIPEDE] = sSizzlipedeTeachableLearnset, [SPECIES_CENTISKORCH] = sCentiskorchTeachableLearnset, [SPECIES_CLOBBOPUS] = sClobbopusTeachableLearnset, [SPECIES_GRAPPLOCT] = sGrapploctTeachableLearnset, - [SPECIES_SINISTEA] = sSinisteaTeachableLearnset, - [SPECIES_POLTEAGEIST] = sPolteageistTeachableLearnset, + [SPECIES_SINISTEA_PHONY] = sSinisteaTeachableLearnset, + [SPECIES_POLTEAGEIST_PHONY] = sPolteageistTeachableLearnset, [SPECIES_HATENNA] = sHatennaTeachableLearnset, [SPECIES_HATTREM] = sHattremTeachableLearnset, [SPECIES_HATTERENE] = sHattereneTeachableLearnset, @@ -878,15 +878,15 @@ const u16 *const gTeachableLearnsets[NUM_SPECIES] = [SPECIES_MR_RIME] = sMrRimeTeachableLearnset, [SPECIES_RUNERIGUS] = sRunerigusTeachableLearnset, [SPECIES_MILCERY] = sMilceryTeachableLearnset, - [SPECIES_ALCREMIE] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM] = sAlcremieTeachableLearnset, [SPECIES_FALINKS] = sFalinksTeachableLearnset, [SPECIES_PINCURCHIN] = sPincurchinTeachableLearnset, [SPECIES_SNOM] = sSnomTeachableLearnset, [SPECIES_FROSMOTH] = sFrosmothTeachableLearnset, [SPECIES_STONJOURNER] = sStonjournerTeachableLearnset, - [SPECIES_EISCUE] = sEiscueTeachableLearnset, - [SPECIES_INDEEDEE] = sIndeedeeTeachableLearnset, - [SPECIES_MORPEKO] = sMorpekoTeachableLearnset, + [SPECIES_EISCUE_ICE_FACE] = sEiscueTeachableLearnset, + [SPECIES_INDEEDEE_MALE] = sIndeedeeMaleTeachableLearnset, + [SPECIES_MORPEKO_FULL_BELLY] = sMorpekoTeachableLearnset, [SPECIES_CUFANT] = sCufantTeachableLearnset, [SPECIES_COPPERAJAH] = sCopperajahTeachableLearnset, [SPECIES_DRACOZOLT] = sDracozoltTeachableLearnset, @@ -897,11 +897,11 @@ const u16 *const gTeachableLearnsets[NUM_SPECIES] = [SPECIES_DREEPY] = sDreepyTeachableLearnset, [SPECIES_DRAKLOAK] = sDrakloakTeachableLearnset, [SPECIES_DRAGAPULT] = sDragapultTeachableLearnset, - [SPECIES_ZACIAN] = sZacianTeachableLearnset, - [SPECIES_ZAMAZENTA] = sZamazentaTeachableLearnset, + [SPECIES_ZACIAN_HERO_OF_MANY_BATTLES] = sZacianTeachableLearnset, + [SPECIES_ZAMAZENTA_HERO_OF_MANY_BATTLES] = sZamazentaTeachableLearnset, [SPECIES_ETERNATUS] = sEternatusTeachableLearnset, [SPECIES_KUBFU] = sKubfuTeachableLearnset, - [SPECIES_URSHIFU] = sUrshifuTeachableLearnset, + [SPECIES_URSHIFU_SINGLE_STRIKE_STYLE] = sUrshifuSingleStrikeStyleTeachableLearnset, [SPECIES_ZARUDE] = sZarudeTeachableLearnset, [SPECIES_REGIELEKI] = sRegielekiTeachableLearnset, [SPECIES_REGIDRAGO] = sRegidragoTeachableLearnset, @@ -911,10 +911,10 @@ const u16 *const gTeachableLearnsets[NUM_SPECIES] = [SPECIES_WYRDEER] = sWyrdeerTeachableLearnset, [SPECIES_KLEAVOR] = sKleavorTeachableLearnset, [SPECIES_URSALUNA] = sUrsalunaTeachableLearnset, - [SPECIES_BASCULEGION] = sBasculegionTeachableLearnset, + [SPECIES_BASCULEGION_MALE] = sBasculegionTeachableLearnset, [SPECIES_SNEASLER] = sSneaslerTeachableLearnset, [SPECIES_OVERQWIL] = sOverqwilTeachableLearnset, - [SPECIES_ENAMORUS] = sEnamorusTeachableLearnset, + [SPECIES_ENAMORUS_INCARNATE] = sEnamorusTeachableLearnset, #endif // Megas [SPECIES_VENUSAUR_MEGA] = sVenusaurTeachableLearnset, @@ -1011,7 +1011,7 @@ const u16 *const gTeachableLearnsets[NUM_SPECIES] = [SPECIES_LINOONE_GALARIAN] = sLinooneGalarianTeachableLearnset, #if P_GEN_5_POKEMON == TRUE [SPECIES_DARUMAKA_GALARIAN] = sDarumakaGalarianTeachableLearnset, - [SPECIES_DARMANITAN_GALARIAN] = sDarmanitanGalarianTeachableLearnset, + [SPECIES_DARMANITAN_GALARIAN_STANDARD_MODE] = sDarmanitanGalarianTeachableLearnset, [SPECIES_YAMASK_GALARIAN] = sYamaskGalarianTeachableLearnset, [SPECIES_STUNFISK_GALARIAN] = sStunfiskGalarianTeachableLearnset, #endif @@ -1143,7 +1143,7 @@ const u16 *const gTeachableLearnsets[NUM_SPECIES] = [SPECIES_BASCULIN_WHITE_STRIPED] = sBasculinTeachableLearnset, // Darmanitan [SPECIES_DARMANITAN_ZEN_MODE] = sDarmanitanTeachableLearnset, - [SPECIES_DARMANITAN_ZEN_MODE_GALARIAN] = sDarmanitanGalarianTeachableLearnset, + [SPECIES_DARMANITAN_GALARIAN_ZEN_MODE] = sDarmanitanGalarianTeachableLearnset, // Deerling [SPECIES_DEERLING_SUMMER] = sDeerlingTeachableLearnset, [SPECIES_DEERLING_AUTUMN] = sDeerlingTeachableLearnset, @@ -1234,7 +1234,7 @@ const u16 *const gTeachableLearnsets[NUM_SPECIES] = // Xerneas [SPECIES_XERNEAS_ACTIVE] = sXerneasTeachableLearnset, // Zygarde - [SPECIES_ZYGARDE_10] = sZygardeTeachableLearnset, + [SPECIES_ZYGARDE_10_AURA_BREAK] = sZygardeTeachableLearnset, [SPECIES_ZYGARDE_10_POWER_CONSTRUCT] = sZygardeTeachableLearnset, [SPECIES_ZYGARDE_50_POWER_CONSTRUCT] = sZygardeTeachableLearnset, [SPECIES_ZYGARDE_COMPLETE] = sZygardeTeachableLearnset, @@ -1305,14 +1305,14 @@ const u16 *const gTeachableLearnsets[NUM_SPECIES] = // Polteageist [SPECIES_POLTEAGEIST_ANTIQUE] = sPolteageistTeachableLearnset, // Alcremie - [SPECIES_ALCREMIE_RUBY_CREAM] = sAlcremieTeachableLearnset, - [SPECIES_ALCREMIE_MATCHA_CREAM] = sAlcremieTeachableLearnset, - [SPECIES_ALCREMIE_MINT_CREAM] = sAlcremieTeachableLearnset, - [SPECIES_ALCREMIE_LEMON_CREAM] = sAlcremieTeachableLearnset, - [SPECIES_ALCREMIE_SALTED_CREAM] = sAlcremieTeachableLearnset, - [SPECIES_ALCREMIE_RUBY_SWIRL] = sAlcremieTeachableLearnset, - [SPECIES_ALCREMIE_CARAMEL_SWIRL] = sAlcremieTeachableLearnset, - [SPECIES_ALCREMIE_RAINBOW_SWIRL] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL] = sAlcremieTeachableLearnset, // Eiscue [SPECIES_EISCUE_NOICE_FACE] = sEiscueTeachableLearnset, // Indeedee @@ -1361,7 +1361,7 @@ const u16 *const gTeachableLearnsets[NUM_SPECIES] = [SPECIES_FLAPPLE_GIGANTAMAX] = sFlappleTeachableLearnset, [SPECIES_APPLETUN_GIGANTAMAX] = sAppletunTeachableLearnset, [SPECIES_SANDACONDA_GIGANTAMAX] = sSandacondaTeachableLearnset, - [SPECIES_TOXTRICITY_AMPED_GIGANTAMAX] = sToxtricityTeachableLearnset, + [SPECIES_TOXTRICITY_AMPED_GIGANTAMAX] = sToxtricityAmpedTeachableLearnset, [SPECIES_TOXTRICITY_LOW_KEY_GIGANTAMAX] = sToxtricityLowKeyTeachableLearnset, [SPECIES_CENTISKORCH_GIGANTAMAX] = sCentiskorchTeachableLearnset, [SPECIES_HATTERENE_GIGANTAMAX] = sHattereneTeachableLearnset, @@ -1369,7 +1369,7 @@ const u16 *const gTeachableLearnsets[NUM_SPECIES] = [SPECIES_ALCREMIE_GIGANTAMAX] = sAlcremieTeachableLearnset, [SPECIES_COPPERAJAH_GIGANTAMAX] = sCopperajahTeachableLearnset, [SPECIES_DURALUDON_GIGANTAMAX] = sDuraludonTeachableLearnset, - [SPECIES_URSHIFU_GIGANTAMAX] = sUrshifuTeachableLearnset, + [SPECIES_URSHIFU_SINGLE_STRIKE_STYLE_GIGANTAMAX] = sUrshifuSingleStrikeStyleTeachableLearnset, [SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX] = sUrshifuRapidStrikeStyleTeachableLearnset, #endif }; diff --git a/src/data/pokemon/teachable_learnsets.h b/src/data/pokemon/teachable_learnsets.h index b0f162c6d9..471d658f38 100644 --- a/src/data/pokemon/teachable_learnsets.h +++ b/src/data/pokemon/teachable_learnsets.h @@ -16053,7 +16053,7 @@ static const u16 sJirachiTeachableLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sDeoxysTeachableLearnset[] = { +static const u16 sDeoxysNormalTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_BRICK_BREAK, MOVE_CALM_MIND, @@ -17025,7 +17025,7 @@ static const u16 sBurmyTeachableLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sWormadamTeachableLearnset[] = { +static const u16 sWormadamPlantCloakTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, MOVE_DOUBLE_TEAM, @@ -20141,7 +20141,7 @@ static const u16 sDarkraiTeachableLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sShayminTeachableLearnset[] = { +static const u16 sShayminLandTeachableLearnset[] = { MOVE_BULLET_SEED, MOVE_DOUBLE_TEAM, MOVE_FACADE, @@ -26250,7 +26250,7 @@ static const u16 sEspurrTeachableLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sMeowsticTeachableLearnset[] = { +static const u16 sMeowsticMaleTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_CUT, @@ -27666,7 +27666,7 @@ static const u16 sDiancieTeachableLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sHoopaTeachableLearnset[] = { +static const u16 sHoopaConfinedTeachableLearnset[] = { MOVE_BRICK_BREAK, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, @@ -28364,7 +28364,7 @@ static const u16 sRockruffTeachableLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sLycanrocTeachableLearnset[] = { +static const u16 sLycanrocMiddayTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_BULK_UP, @@ -30945,7 +30945,7 @@ static const u16 sToxelTeachableLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sToxtricityTeachableLearnset[] = { +static const u16 sToxtricityAmpedTeachableLearnset[] = { MOVE_ATTRACT, MOVE_FACADE, MOVE_HYPER_BEAM, @@ -31538,7 +31538,7 @@ static const u16 sEiscueTeachableLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sIndeedeeTeachableLearnset[] = { +static const u16 sIndeedeeMaleTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_FACADE, @@ -31908,7 +31908,7 @@ static const u16 sKubfuTeachableLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sUrshifuTeachableLearnset[] = { +static const u16 sUrshifuSingleStrikeStyleTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, diff --git a/src/data/pokemon_graphics/back_pic_coordinates.h b/src/data/pokemon_graphics/back_pic_coordinates.h index 97444fa3a8..8937606fa8 100644 --- a/src/data/pokemon_graphics/back_pic_coordinates.h +++ b/src/data/pokemon_graphics/back_pic_coordinates.h @@ -383,7 +383,7 @@ const struct MonCoords gMonBackPicCoords[NUM_SPECIES + 1] = [SPECIES_ARON] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 12 }, [SPECIES_LAIRON] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 15 }, [SPECIES_AGGRON] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, - [SPECIES_CASTFORM] = { .size = MON_COORDS_SIZE(32, 64), .y_offset = 0 }, + [SPECIES_CASTFORM_NORMAL] = { .size = MON_COORDS_SIZE(32, 64), .y_offset = 0 }, [SPECIES_VOLBEAT] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 3 }, [SPECIES_ILLUMISE] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 8 }, [SPECIES_LILEEP] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 8 }, @@ -408,7 +408,7 @@ const struct MonCoords gMonBackPicCoords[NUM_SPECIES + 1] = [SPECIES_LATIAS] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, [SPECIES_LATIOS] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, [SPECIES_JIRACHI] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_DEOXYS] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, + [SPECIES_DEOXYS_NORMAL] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, [SPECIES_CHIMECHO] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 9 }, #if P_GEN_4_POKEMON == TRUE [SPECIES_TURTWIG] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 6 }, @@ -436,8 +436,8 @@ const struct MonCoords gMonBackPicCoords[NUM_SPECIES + 1] = [SPECIES_RAMPARDOS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 6 }, [SPECIES_SHIELDON] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 11 }, [SPECIES_BASTIODON] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, - [SPECIES_BURMY] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 6 }, - [SPECIES_WORMADAM] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 2 }, + [SPECIES_BURMY_PLANT_CLOAK] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 6 }, + [SPECIES_WORMADAM_PLANT_CLOAK] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 2 }, [SPECIES_MOTHIM] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 8 }, [SPECIES_COMBEE] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 22 }, [SPECIES_VESPIQUEN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, @@ -445,9 +445,9 @@ const struct MonCoords gMonBackPicCoords[NUM_SPECIES + 1] = [SPECIES_BUIZEL] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 9 }, [SPECIES_FLOATZEL] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 6 }, [SPECIES_CHERUBI] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 13 }, - [SPECIES_CHERRIM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 9 }, - [SPECIES_SHELLOS] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 8 }, - [SPECIES_GASTRODON] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 3 }, + [SPECIES_CHERRIM_OVERCAST] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 9 }, + [SPECIES_SHELLOS_WEST_SEA] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 8 }, + [SPECIES_GASTRODON_WEST_SEA] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 3 }, [SPECIES_AMBIPOM] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, [SPECIES_DRIFLOON] = { .size = MON_COORDS_SIZE(40, 64), .y_offset = 0 }, [SPECIES_DRIFBLIM] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 6 }, @@ -511,13 +511,13 @@ const struct MonCoords gMonBackPicCoords[NUM_SPECIES + 1] = [SPECIES_PALKIA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 6 }, [SPECIES_HEATRAN] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 13 }, [SPECIES_REGIGIGAS] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 13 }, - [SPECIES_GIRATINA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 4 }, + [SPECIES_GIRATINA_ALTERED] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 4 }, [SPECIES_CRESSELIA] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, [SPECIES_PHIONE] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 9 }, [SPECIES_MANAPHY] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 10 }, [SPECIES_DARKRAI] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_SHAYMIN] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 15 }, - [SPECIES_ARCEUS] = ARCEUS_BACK_PIC_COORDS, + [SPECIES_SHAYMIN_LAND] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 15 }, + [SPECIES_ARCEUS_NORMAL] = ARCEUS_BACK_PIC_COORDS, #endif #if P_GEN_5_POKEMON == TRUE [SPECIES_VICTINI] = { .size = MON_COORDS_SIZE(40, 64), .y_offset = 7 }, @@ -576,12 +576,12 @@ const struct MonCoords gMonBackPicCoords[NUM_SPECIES + 1] = [SPECIES_WHIMSICOTT] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 9 }, [SPECIES_PETILIL] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 9 }, [SPECIES_LILLIGANT] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 8 }, - [SPECIES_BASCULIN] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 16 }, + [SPECIES_BASCULIN_RED_STRIPED] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 16 }, [SPECIES_SANDILE] = { .size = MON_COORDS_SIZE(64, 32), .y_offset = 18 }, [SPECIES_KROKOROK] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 3 }, [SPECIES_KROOKODILE] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, [SPECIES_DARUMAKA] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 12 }, - [SPECIES_DARMANITAN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, + [SPECIES_DARMANITAN_STANDARD_MODE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, [SPECIES_MARACTUS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, [SPECIES_DWEBBLE] = { .size = MON_COORDS_SIZE(56, 32), .y_offset = 17 }, [SPECIES_CRUSTLE] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 9 }, @@ -611,8 +611,8 @@ const struct MonCoords gMonBackPicCoords[NUM_SPECIES + 1] = [SPECIES_VANILLITE] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 9 }, [SPECIES_VANILLISH] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 4 }, [SPECIES_VANILLUXE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 6 }, - [SPECIES_DEERLING] = DEERLING_BACK_PIC_COORDS, - [SPECIES_SAWSBUCK] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 5 }, + [SPECIES_DEERLING_SPRING] = DEERLING_BACK_PIC_COORDS, + [SPECIES_SAWSBUCK_SPRING] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 5 }, [SPECIES_EMOLGA] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 16 }, [SPECIES_KARRABLAST] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 14 }, [SPECIES_ESCAVALIER] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 9 }, @@ -667,14 +667,14 @@ const struct MonCoords gMonBackPicCoords[NUM_SPECIES + 1] = [SPECIES_COBALION] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 6 }, [SPECIES_TERRAKION] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 8 }, [SPECIES_VIRIZION] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 8 }, - [SPECIES_TORNADUS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_THUNDURUS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_TORNADUS_INCARNATE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_THUNDURUS_INCARNATE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_RESHIRAM] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 7 }, [SPECIES_ZEKROM] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - [SPECIES_LANDORUS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_LANDORUS_INCARNATE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_KYUREM] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 12 }, - [SPECIES_KELDEO] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 4 }, - [SPECIES_MELOETTA] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 7 }, + [SPECIES_KELDEO_ORDINARY] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 4 }, + [SPECIES_MELOETTA_ARIA] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 7 }, [SPECIES_GENESECT] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 8 }, #endif #if P_GEN_6_POKEMON == TRUE @@ -694,22 +694,22 @@ const struct MonCoords gMonBackPicCoords[NUM_SPECIES + 1] = [SPECIES_TALONFLAME] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, [SPECIES_SCATTERBUG] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 12 }, [SPECIES_SPEWPA] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 12 }, - [SPECIES_VIVILLON] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_VIVILLON_ICY_SNOW] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_LITLEO] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 9 }, [SPECIES_PYROAR] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - [SPECIES_FLABEBE] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 12 }, - [SPECIES_FLOETTE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_FLORGES] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 9 }, + [SPECIES_FLABEBE_RED_FLOWER] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 12 }, + [SPECIES_FLOETTE_RED_FLOWER] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, + [SPECIES_FLORGES_RED_FLOWER] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 9 }, [SPECIES_SKIDDO] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 8 }, [SPECIES_GOGOAT] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 9 }, [SPECIES_PANCHAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, [SPECIES_PANGORO] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, - [SPECIES_FURFROU] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, + [SPECIES_FURFROU_NATURAL] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, [SPECIES_ESPURR] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 7 }, - [SPECIES_MEOWSTIC] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 9 }, + [SPECIES_MEOWSTIC_MALE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 9 }, [SPECIES_HONEDGE] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 4 }, [SPECIES_DOUBLADE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 7 }, - [SPECIES_AEGISLASH] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 9 }, + [SPECIES_AEGISLASH_SHIELD] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 9 }, [SPECIES_SPRITZEE] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 11 }, [SPECIES_AROMATISSE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 5 }, [SPECIES_SWIRLIX] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 12 }, @@ -738,17 +738,17 @@ const struct MonCoords gMonBackPicCoords[NUM_SPECIES + 1] = [SPECIES_KLEFKI] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 8 }, [SPECIES_PHANTUMP] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 9 }, [SPECIES_TREVENANT] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 5 }, - [SPECIES_PUMPKABOO] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 13 }, - [SPECIES_GOURGEIST] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 3 }, + [SPECIES_PUMPKABOO_AVERAGE] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 13 }, + [SPECIES_GOURGEIST_AVERAGE] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 3 }, [SPECIES_BERGMITE] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 13 }, [SPECIES_AVALUGG] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 12 }, [SPECIES_NOIBAT] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 7 }, [SPECIES_NOIVERN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 4 }, - [SPECIES_XERNEAS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_XERNEAS_NEUTRAL] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_YVELTAL] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 10 }, - [SPECIES_ZYGARDE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 4 }, + [SPECIES_ZYGARDE_50_AURA_BREAK] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 4 }, [SPECIES_DIANCIE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 7 }, - [SPECIES_HOOPA] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 8 }, + [SPECIES_HOOPA_CONFINED] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 8 }, [SPECIES_VOLCANION] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, #endif #if P_GEN_7_POKEMON == TRUE @@ -771,12 +771,12 @@ const struct MonCoords gMonBackPicCoords[NUM_SPECIES + 1] = [SPECIES_VIKAVOLT] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, [SPECIES_CRABRAWLER] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 9 }, [SPECIES_CRABOMINABLE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - [SPECIES_ORICORIO] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_ORICORIO_BAILE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_CUTIEFLY] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 15 }, [SPECIES_RIBOMBEE] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 11 }, [SPECIES_ROCKRUFF] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, - [SPECIES_LYCANROC] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, - [SPECIES_WISHIWASHI] = { .size = MON_COORDS_SIZE(56, 32), .y_offset = 18 }, + [SPECIES_LYCANROC_MIDDAY] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, + [SPECIES_WISHIWASHI_SOLO] = { .size = MON_COORDS_SIZE(56, 32), .y_offset = 18 }, [SPECIES_MAREANIE] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 15 }, [SPECIES_TOXAPEX] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 8 }, [SPECIES_MUDBRAY] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 8 }, @@ -803,12 +803,12 @@ const struct MonCoords gMonBackPicCoords[NUM_SPECIES + 1] = [SPECIES_PALOSSAND] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, [SPECIES_PYUKUMUKU] = { .size = MON_COORDS_SIZE(48, 32), .y_offset = 16 }, [SPECIES_TYPE_NULL] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 1 }, - [SPECIES_SILVALLY] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, - [SPECIES_MINIOR] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 14 }, + [SPECIES_SILVALLY_NORMAL] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, + [SPECIES_MINIOR_METEOR_RED] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 14 }, [SPECIES_KOMALA] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 9 }, [SPECIES_TURTONATOR] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 9 }, [SPECIES_TOGEDEMARU] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 13 }, - [SPECIES_MIMIKYU] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 7 }, + [SPECIES_MIMIKYU_DISGUISED] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 7 }, [SPECIES_BRUXISH] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 14 }, [SPECIES_DRAMPA] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, [SPECIES_DHELMISE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, @@ -881,13 +881,13 @@ const struct MonCoords gMonBackPicCoords[NUM_SPECIES + 1] = [SPECIES_ARROKUDA] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 15 }, [SPECIES_BARRASKEWDA] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 11 }, [SPECIES_TOXEL] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 8 }, - [SPECIES_TOXTRICITY] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, + [SPECIES_TOXTRICITY_AMPED] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, [SPECIES_SIZZLIPEDE] = { .size = MON_COORDS_SIZE(40, 32), .y_offset = 16 }, [SPECIES_CENTISKORCH] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 2 }, [SPECIES_CLOBBOPUS] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 14 }, [SPECIES_GRAPPLOCT] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 5 }, - [SPECIES_SINISTEA] = { .size = MON_COORDS_SIZE(48, 32), .y_offset = 16 }, - [SPECIES_POLTEAGEIST] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 13 }, + [SPECIES_SINISTEA_PHONY] = { .size = MON_COORDS_SIZE(48, 32), .y_offset = 16 }, + [SPECIES_POLTEAGEIST_PHONY] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 13 }, [SPECIES_HATENNA] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 12 }, [SPECIES_HATTREM] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 8 }, [SPECIES_HATTERENE] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 3 }, @@ -901,15 +901,15 @@ const struct MonCoords gMonBackPicCoords[NUM_SPECIES + 1] = [SPECIES_MR_RIME] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, [SPECIES_RUNERIGUS] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 9 }, [SPECIES_MILCERY] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 16 }, - [SPECIES_ALCREMIE] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, [SPECIES_FALINKS] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 15 }, [SPECIES_PINCURCHIN] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 13 }, [SPECIES_SNOM] = { .size = MON_COORDS_SIZE(48, 32), .y_offset = 17 }, [SPECIES_FROSMOTH] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, [SPECIES_STONJOURNER] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, - [SPECIES_EISCUE] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 0 }, - [SPECIES_INDEEDEE] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 7 }, - [SPECIES_MORPEKO] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 8 }, + [SPECIES_EISCUE_ICE_FACE] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 0 }, + [SPECIES_INDEEDEE_MALE] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 7 }, + [SPECIES_MORPEKO_FULL_BELLY] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 8 }, [SPECIES_CUFANT] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 11 }, [SPECIES_COPPERAJAH] = { .size = MON_COORDS_SIZE(64, 32), .y_offset = 16 }, [SPECIES_DRACOZOLT] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 8 }, @@ -920,11 +920,11 @@ const struct MonCoords gMonBackPicCoords[NUM_SPECIES + 1] = [SPECIES_DREEPY] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 15 }, [SPECIES_DRAKLOAK] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 11 }, [SPECIES_DRAGAPULT] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, - [SPECIES_ZACIAN] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_ZAMAZENTA] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, + [SPECIES_ZACIAN_HERO_OF_MANY_BATTLES] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, + [SPECIES_ZAMAZENTA_HERO_OF_MANY_BATTLES] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, [SPECIES_ETERNATUS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, [SPECIES_KUBFU] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 9 }, - [SPECIES_URSHIFU] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, + [SPECIES_URSHIFU_SINGLE_STRIKE_STYLE] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, [SPECIES_ZARUDE] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, [SPECIES_REGIELEKI] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 9 }, [SPECIES_REGIDRAGO] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, @@ -934,10 +934,10 @@ const struct MonCoords gMonBackPicCoords[NUM_SPECIES + 1] = [SPECIES_WYRDEER] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_KLEAVOR] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, [SPECIES_URSALUNA] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 14 }, - [SPECIES_BASCULEGION] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_BASCULEGION_MALE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_SNEASLER] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_OVERQWIL] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, - [SPECIES_ENAMORUS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_ENAMORUS_INCARNATE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, #endif [SPECIES_VENUSAUR_MEGA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 8 }, [SPECIES_CHARIZARD_MEGA_X] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, @@ -1033,7 +1033,7 @@ const struct MonCoords gMonBackPicCoords[NUM_SPECIES + 1] = [SPECIES_LINOONE_GALARIAN] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 13 }, #if P_GEN_5_POKEMON == TRUE [SPECIES_DARUMAKA_GALARIAN] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 11 }, - [SPECIES_DARMANITAN_GALARIAN] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 2 }, + [SPECIES_DARMANITAN_GALARIAN_STANDARD_MODE] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 2 }, [SPECIES_YAMASK_GALARIAN] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 13 }, [SPECIES_STUNFISK_GALARIAN] = { .size = MON_COORDS_SIZE(64, 24), .y_offset = 23 }, #endif @@ -1165,7 +1165,7 @@ const struct MonCoords gMonBackPicCoords[NUM_SPECIES + 1] = [SPECIES_BASCULIN_WHITE_STRIPED] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 16 }, // Darmanitan [SPECIES_DARMANITAN_ZEN_MODE] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 11 }, - [SPECIES_DARMANITAN_ZEN_MODE_GALARIAN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, + [SPECIES_DARMANITAN_GALARIAN_ZEN_MODE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, // Deerling [SPECIES_DEERLING_SUMMER] = DEERLING_BACK_PIC_COORDS, [SPECIES_DEERLING_AUTUMN] = DEERLING_BACK_PIC_COORDS, @@ -1256,7 +1256,7 @@ const struct MonCoords gMonBackPicCoords[NUM_SPECIES + 1] = // Xerneas [SPECIES_XERNEAS_ACTIVE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, // Zygarde - [SPECIES_ZYGARDE_10] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 8 }, + [SPECIES_ZYGARDE_10_AURA_BREAK] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 8 }, [SPECIES_ZYGARDE_10_POWER_CONSTRUCT] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 8 }, [SPECIES_ZYGARDE_50_POWER_CONSTRUCT] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 4 }, [SPECIES_ZYGARDE_COMPLETE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, @@ -1327,14 +1327,14 @@ const struct MonCoords gMonBackPicCoords[NUM_SPECIES + 1] = // Polteageist [SPECIES_POLTEAGEIST_ANTIQUE] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 13 }, // Alcremie - [SPECIES_ALCREMIE_RUBY_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, - [SPECIES_ALCREMIE_MATCHA_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, - [SPECIES_ALCREMIE_MINT_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, - [SPECIES_ALCREMIE_LEMON_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, - [SPECIES_ALCREMIE_SALTED_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, - [SPECIES_ALCREMIE_RUBY_SWIRL] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, - [SPECIES_ALCREMIE_CARAMEL_SWIRL] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, - [SPECIES_ALCREMIE_RAINBOW_SWIRL] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, // Eiscue [SPECIES_EISCUE_NOICE_FACE] = { .size = MON_COORDS_SIZE(40, 64), .y_offset = 0 }, // Indeedee @@ -1391,7 +1391,7 @@ const struct MonCoords gMonBackPicCoords[NUM_SPECIES + 1] = [SPECIES_ALCREMIE_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 8 }, [SPECIES_COPPERAJAH_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 7 }, [SPECIES_DURALUDON_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_URSHIFU_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 4 }, + [SPECIES_URSHIFU_SINGLE_STRIKE_STYLE_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 4 }, [SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 4 }, #endif [SPECIES_EGG] = { .size = MON_COORDS_SIZE(24, 24), .y_offset = 20 }, diff --git a/src/data/pokemon_graphics/back_pic_table.h b/src/data/pokemon_graphics/back_pic_table.h index 033ab366a8..bdab1335ea 100644 --- a/src/data/pokemon_graphics/back_pic_table.h +++ b/src/data/pokemon_graphics/back_pic_table.h @@ -360,7 +360,7 @@ const struct CompressedSpriteSheet gMonBackPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(ARON, gMonBackPic_Aron), SPECIES_SPRITE(LAIRON, gMonBackPic_Lairon), SPECIES_SPRITE(AGGRON, gMonBackPic_Aggron), - SPECIES_SPRITE(CASTFORM, gMonBackPic_Castform), + SPECIES_SPRITE(CASTFORM_NORMAL, gMonBackPic_CastformNormal), SPECIES_SPRITE(VOLBEAT, gMonBackPic_Volbeat), SPECIES_SPRITE(ILLUMISE, gMonBackPic_Illumise), SPECIES_SPRITE(LILEEP, gMonBackPic_Lileep), @@ -385,7 +385,7 @@ const struct CompressedSpriteSheet gMonBackPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(LATIAS, gMonBackPic_Latias), SPECIES_SPRITE(LATIOS, gMonBackPic_Latios), SPECIES_SPRITE(JIRACHI, gMonBackPic_Jirachi), - SPECIES_SPRITE(DEOXYS, gMonBackPic_Deoxys), + SPECIES_SPRITE(DEOXYS_NORMAL, gMonBackPic_DeoxysNormal), SPECIES_SPRITE(CHIMECHO, gMonBackPic_Chimecho), #if P_GEN_4_POKEMON == TRUE SPECIES_SPRITE(TURTWIG, gMonBackPic_Turtwig), @@ -413,8 +413,8 @@ const struct CompressedSpriteSheet gMonBackPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(RAMPARDOS, gMonBackPic_Rampardos), SPECIES_SPRITE(SHIELDON, gMonBackPic_Shieldon), SPECIES_SPRITE(BASTIODON, gMonBackPic_Bastiodon), - SPECIES_SPRITE(BURMY, gMonBackPic_Burmy), - SPECIES_SPRITE(WORMADAM, gMonBackPic_Wormadam), + SPECIES_SPRITE(BURMY_PLANT_CLOAK, gMonBackPic_BurmyPlantCloak), + SPECIES_SPRITE(WORMADAM_PLANT_CLOAK, gMonBackPic_WormadamPlantCloak), SPECIES_SPRITE(MOTHIM, gMonBackPic_Mothim), SPECIES_SPRITE(COMBEE, gMonBackPic_Combee), SPECIES_SPRITE(VESPIQUEN, gMonBackPic_Vespiquen), @@ -422,9 +422,9 @@ const struct CompressedSpriteSheet gMonBackPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(BUIZEL, gMonBackPic_Buizel), SPECIES_SPRITE(FLOATZEL, gMonBackPic_Floatzel), SPECIES_SPRITE(CHERUBI, gMonBackPic_Cherubi), - SPECIES_SPRITE(CHERRIM, gMonBackPic_Cherrim), - SPECIES_SPRITE(SHELLOS, gMonBackPic_Shellos), - SPECIES_SPRITE(GASTRODON, gMonBackPic_Gastrodon), + SPECIES_SPRITE(CHERRIM_OVERCAST, gMonBackPic_CherrimOvercast), + SPECIES_SPRITE(SHELLOS_WEST_SEA, gMonBackPic_ShellosWestSea), + SPECIES_SPRITE(GASTRODON_WEST_SEA, gMonBackPic_GastrodonWestSea), SPECIES_SPRITE(AMBIPOM, gMonBackPic_Ambipom), SPECIES_SPRITE(DRIFLOON, gMonBackPic_Drifloon), SPECIES_SPRITE(DRIFBLIM, gMonBackPic_Drifblim), @@ -488,12 +488,12 @@ const struct CompressedSpriteSheet gMonBackPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(PALKIA, gMonBackPic_Palkia), SPECIES_SPRITE(HEATRAN, gMonBackPic_Heatran), SPECIES_SPRITE(REGIGIGAS, gMonBackPic_Regigigas), - SPECIES_SPRITE(GIRATINA, gMonBackPic_Giratina), + SPECIES_SPRITE(GIRATINA_ALTERED, gMonBackPic_GiratinaAltered), SPECIES_SPRITE(CRESSELIA, gMonBackPic_Cresselia), SPECIES_SPRITE(PHIONE, gMonBackPic_Phione), SPECIES_SPRITE(MANAPHY, gMonBackPic_Manaphy), SPECIES_SPRITE(DARKRAI, gMonBackPic_Darkrai), - SPECIES_SPRITE(SHAYMIN, gMonBackPic_Shaymin), + SPECIES_SPRITE(SHAYMIN_LAND, gMonBackPic_ShayminLand), SPECIES_SPRITE(ARCEUS, gMonBackPic_Arceus), #endif #if P_GEN_5_POKEMON == TRUE @@ -553,12 +553,12 @@ const struct CompressedSpriteSheet gMonBackPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(WHIMSICOTT, gMonBackPic_Whimsicott), SPECIES_SPRITE(PETILIL, gMonBackPic_Petilil), SPECIES_SPRITE(LILLIGANT, gMonBackPic_Lilligant), - SPECIES_SPRITE(BASCULIN, gMonBackPic_Basculin), + SPECIES_SPRITE(BASCULIN, gMonBackPic_BasculinRedStriped), SPECIES_SPRITE(SANDILE, gMonBackPic_Sandile), SPECIES_SPRITE(KROKOROK, gMonBackPic_Krokorok), SPECIES_SPRITE(KROOKODILE, gMonBackPic_Krookodile), SPECIES_SPRITE(DARUMAKA, gMonBackPic_Darumaka), - SPECIES_SPRITE(DARMANITAN, gMonBackPic_Darmanitan), + SPECIES_SPRITE(DARMANITAN_STANDARD_MODE, gMonBackPic_DarmanitanStandardMode), SPECIES_SPRITE(MARACTUS, gMonBackPic_Maractus), SPECIES_SPRITE(DWEBBLE, gMonBackPic_Dwebble), SPECIES_SPRITE(CRUSTLE, gMonBackPic_Crustle), @@ -588,8 +588,8 @@ const struct CompressedSpriteSheet gMonBackPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(VANILLITE, gMonBackPic_Vanillite), SPECIES_SPRITE(VANILLISH, gMonBackPic_Vanillish), SPECIES_SPRITE(VANILLUXE, gMonBackPic_Vanilluxe), - SPECIES_SPRITE(DEERLING, gMonBackPic_Deerling), - SPECIES_SPRITE(SAWSBUCK, gMonBackPic_Sawsbuck), + SPECIES_SPRITE(DEERLING_SPRING, gMonBackPic_Deerling), + SPECIES_SPRITE(SAWSBUCK_SPRING, gMonBackPic_SawsbuckSpring), SPECIES_SPRITE(EMOLGA, gMonBackPic_Emolga), SPECIES_SPRITE(KARRABLAST, gMonBackPic_Karrablast), SPECIES_SPRITE(ESCAVALIER, gMonBackPic_Escavalier), @@ -644,14 +644,14 @@ const struct CompressedSpriteSheet gMonBackPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(COBALION, gMonBackPic_Cobalion), SPECIES_SPRITE(TERRAKION, gMonBackPic_Terrakion), SPECIES_SPRITE(VIRIZION, gMonBackPic_Virizion), - SPECIES_SPRITE(TORNADUS, gMonBackPic_Tornadus), - SPECIES_SPRITE(THUNDURUS, gMonBackPic_Thundurus), + SPECIES_SPRITE(TORNADUS_INCARNATE, gMonBackPic_TornadusIncarnate), + SPECIES_SPRITE(THUNDURUS_INCARNATE, gMonBackPic_ThundurusIncarnate), SPECIES_SPRITE(RESHIRAM, gMonBackPic_Reshiram), SPECIES_SPRITE(ZEKROM, gMonBackPic_Zekrom), - SPECIES_SPRITE(LANDORUS, gMonBackPic_Landorus), + SPECIES_SPRITE(LANDORUS_INCARNATE, gMonBackPic_LandorusIncarnate), SPECIES_SPRITE(KYUREM, gMonBackPic_Kyurem), - SPECIES_SPRITE(KELDEO, gMonBackPic_Keldeo), - SPECIES_SPRITE(MELOETTA, gMonBackPic_Meloetta), + SPECIES_SPRITE(KELDEO_ORDINARY, gMonBackPic_KeldeoOrdinary), + SPECIES_SPRITE(MELOETTA, gMonBackPic_MeloettaAria), SPECIES_SPRITE(GENESECT, gMonBackPic_Genesect), #endif #if P_GEN_6_POKEMON == TRUE @@ -671,22 +671,22 @@ const struct CompressedSpriteSheet gMonBackPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(TALONFLAME, gMonBackPic_Talonflame), SPECIES_SPRITE(SCATTERBUG, gMonBackPic_Scatterbug), SPECIES_SPRITE(SPEWPA, gMonBackPic_Spewpa), - SPECIES_SPRITE(VIVILLON, gMonBackPic_Vivillon), + SPECIES_SPRITE(VIVILLON_ICY_SNOW, gMonBackPic_VivillonIcySnow), SPECIES_SPRITE(LITLEO, gMonBackPic_Litleo), SPECIES_SPRITE(PYROAR, gMonBackPic_Pyroar), - SPECIES_SPRITE(FLABEBE, gMonBackPic_Flabebe), - SPECIES_SPRITE(FLOETTE, gMonBackPic_Floette), - SPECIES_SPRITE(FLORGES, gMonBackPic_Florges), + SPECIES_SPRITE(FLABEBE_RED_FLOWER, gMonBackPic_Flabebe), + SPECIES_SPRITE(FLOETTE_RED_FLOWER, gMonBackPic_Floette), + SPECIES_SPRITE(FLORGES_RED_FLOWER, gMonBackPic_Florges), SPECIES_SPRITE(SKIDDO, gMonBackPic_Skiddo), SPECIES_SPRITE(GOGOAT, gMonBackPic_Gogoat), SPECIES_SPRITE(PANCHAM, gMonBackPic_Pancham), SPECIES_SPRITE(PANGORO, gMonBackPic_Pangoro), - SPECIES_SPRITE(FURFROU, gMonBackPic_Furfrou), + SPECIES_SPRITE(FURFROU_NATURAL, gMonBackPic_FurfrouNatural), SPECIES_SPRITE(ESPURR, gMonBackPic_Espurr), - SPECIES_SPRITE(MEOWSTIC, gMonBackPic_Meowstic), + SPECIES_SPRITE(MEOWSTIC_MALE, gMonBackPic_MeowsticMale), SPECIES_SPRITE(HONEDGE, gMonBackPic_Honedge), SPECIES_SPRITE(DOUBLADE, gMonBackPic_Doublade), - SPECIES_SPRITE(AEGISLASH, gMonBackPic_Aegislash), + SPECIES_SPRITE(AEGISLASH_SHIELD, gMonBackPic_AegislashShield), SPECIES_SPRITE(SPRITZEE, gMonBackPic_Spritzee), SPECIES_SPRITE(AROMATISSE, gMonBackPic_Aromatisse), SPECIES_SPRITE(SWIRLIX, gMonBackPic_Swirlix), @@ -715,17 +715,17 @@ const struct CompressedSpriteSheet gMonBackPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(KLEFKI, gMonBackPic_Klefki), SPECIES_SPRITE(PHANTUMP, gMonBackPic_Phantump), SPECIES_SPRITE(TREVENANT, gMonBackPic_Trevenant), - SPECIES_SPRITE(PUMPKABOO, gMonBackPic_Pumpkaboo), - SPECIES_SPRITE(GOURGEIST, gMonBackPic_Gourgeist), + SPECIES_SPRITE(PUMPKABOO_AVERAGE, gMonBackPic_PumpkabooAverage), + SPECIES_SPRITE(GOURGEIST_AVERAGE, gMonBackPic_GourgeistAverage), SPECIES_SPRITE(BERGMITE, gMonBackPic_Bergmite), SPECIES_SPRITE(AVALUGG, gMonBackPic_Avalugg), SPECIES_SPRITE(NOIBAT, gMonBackPic_Noibat), SPECIES_SPRITE(NOIVERN, gMonBackPic_Noivern), - SPECIES_SPRITE(XERNEAS, gMonBackPic_Xerneas), + SPECIES_SPRITE(XERNEAS_NEUTRAL, gMonBackPic_XerneasNeutral), SPECIES_SPRITE(YVELTAL, gMonBackPic_Yveltal), - SPECIES_SPRITE(ZYGARDE, gMonBackPic_Zygarde), + SPECIES_SPRITE(ZYGARDE_50_AURA_BREAK, gMonBackPic_Zygarde50), SPECIES_SPRITE(DIANCIE, gMonBackPic_Diancie), - SPECIES_SPRITE(HOOPA, gMonBackPic_Hoopa), + SPECIES_SPRITE(HOOPA_CONFINED, gMonBackPic_HoopaConfined), SPECIES_SPRITE(VOLCANION, gMonBackPic_Volcanion), #endif #if P_GEN_7_POKEMON == TRUE @@ -748,12 +748,12 @@ const struct CompressedSpriteSheet gMonBackPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(VIKAVOLT, gMonBackPic_Vikavolt), SPECIES_SPRITE(CRABRAWLER, gMonBackPic_Crabrawler), SPECIES_SPRITE(CRABOMINABLE, gMonBackPic_Crabominable), - SPECIES_SPRITE(ORICORIO, gMonBackPic_Oricorio), + SPECIES_SPRITE(ORICORIO_BAILE, gMonBackPic_OricorioBaile), SPECIES_SPRITE(CUTIEFLY, gMonBackPic_Cutiefly), SPECIES_SPRITE(RIBOMBEE, gMonBackPic_Ribombee), SPECIES_SPRITE(ROCKRUFF, gMonBackPic_Rockruff), - SPECIES_SPRITE(LYCANROC, gMonBackPic_Lycanroc), - SPECIES_SPRITE(WISHIWASHI, gMonBackPic_Wishiwashi), + SPECIES_SPRITE(LYCANROC_MIDDAY, gMonBackPic_LycanrocMidday), + SPECIES_SPRITE(WISHIWASHI_SOLO, gMonBackPic_WishiwashiSolo), SPECIES_SPRITE(MAREANIE, gMonBackPic_Mareanie), SPECIES_SPRITE(TOXAPEX, gMonBackPic_Toxapex), SPECIES_SPRITE(MUDBRAY, gMonBackPic_Mudbray), @@ -781,11 +781,11 @@ const struct CompressedSpriteSheet gMonBackPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(PYUKUMUKU, gMonBackPic_Pyukumuku), SPECIES_SPRITE(TYPE_NULL, gMonBackPic_TypeNull), SPECIES_SPRITE(SILVALLY, gMonBackPic_Silvally), - SPECIES_SPRITE(MINIOR, gMonBackPic_Minior), + SPECIES_SPRITE(MINIOR_METEOR_RED, gMonBackPic_MiniorMeteor), SPECIES_SPRITE(KOMALA, gMonBackPic_Komala), SPECIES_SPRITE(TURTONATOR, gMonBackPic_Turtonator), SPECIES_SPRITE(TOGEDEMARU, gMonBackPic_Togedemaru), - SPECIES_SPRITE(MIMIKYU, gMonBackPic_Mimikyu), + SPECIES_SPRITE(MIMIKYU_DISGUISED, gMonBackPic_MimikyuDisguised), SPECIES_SPRITE(BRUXISH, gMonBackPic_Bruxish), SPECIES_SPRITE(DRAMPA, gMonBackPic_Drampa), SPECIES_SPRITE(DHELMISE, gMonBackPic_Dhelmise), @@ -858,13 +858,13 @@ const struct CompressedSpriteSheet gMonBackPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(ARROKUDA, gMonBackPic_Arrokuda), SPECIES_SPRITE(BARRASKEWDA, gMonBackPic_Barraskewda), SPECIES_SPRITE(TOXEL, gMonBackPic_Toxel), - SPECIES_SPRITE(TOXTRICITY, gMonBackPic_Toxtricity), + SPECIES_SPRITE(TOXTRICITY_AMPED, gMonBackPic_ToxtricityAmped), SPECIES_SPRITE(SIZZLIPEDE, gMonBackPic_Sizzlipede), SPECIES_SPRITE(CENTISKORCH, gMonBackPic_Centiskorch), SPECIES_SPRITE(CLOBBOPUS, gMonBackPic_Clobbopus), SPECIES_SPRITE(GRAPPLOCT, gMonBackPic_Grapploct), - SPECIES_SPRITE(SINISTEA, gMonBackPic_Sinistea), - SPECIES_SPRITE(POLTEAGEIST, gMonBackPic_Polteageist), + SPECIES_SPRITE(SINISTEA_PHONY, gMonBackPic_Sinistea), + SPECIES_SPRITE(POLTEAGEIST_PHONY, gMonBackPic_Polteageist), SPECIES_SPRITE(HATENNA, gMonBackPic_Hatenna), SPECIES_SPRITE(HATTREM, gMonBackPic_Hattrem), SPECIES_SPRITE(HATTERENE, gMonBackPic_Hatterene), @@ -884,9 +884,9 @@ const struct CompressedSpriteSheet gMonBackPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(SNOM, gMonBackPic_Snom), SPECIES_SPRITE(FROSMOTH, gMonBackPic_Frosmoth), SPECIES_SPRITE(STONJOURNER, gMonBackPic_Stonjourner), - SPECIES_SPRITE(EISCUE, gMonBackPic_Eiscue), - SPECIES_SPRITE(INDEEDEE, gMonBackPic_Indeedee), - SPECIES_SPRITE(MORPEKO, gMonBackPic_Morpeko), + SPECIES_SPRITE(EISCUE_ICE_FACE, gMonBackPic_EiscueIceFace), + SPECIES_SPRITE(INDEEDEE_MALE, gMonBackPic_IndeedeeMale), + SPECIES_SPRITE(MORPEKO_FULL_BELLY, gMonBackPic_MorpekoFullBelly), SPECIES_SPRITE(CUFANT, gMonBackPic_Cufant), SPECIES_SPRITE(COPPERAJAH, gMonBackPic_Copperajah), SPECIES_SPRITE(DRACOZOLT, gMonBackPic_Dracozolt), @@ -897,11 +897,11 @@ const struct CompressedSpriteSheet gMonBackPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(DREEPY, gMonBackPic_Dreepy), SPECIES_SPRITE(DRAKLOAK, gMonBackPic_Drakloak), SPECIES_SPRITE(DRAGAPULT, gMonBackPic_Dragapult), - SPECIES_SPRITE(ZACIAN, gMonBackPic_Zacian), - SPECIES_SPRITE(ZAMAZENTA, gMonBackPic_Zamazenta), + SPECIES_SPRITE(ZACIAN_HERO_OF_MANY_BATTLES, gMonBackPic_ZacianHeroOfManyBattles), + SPECIES_SPRITE(ZAMAZENTA_HERO_OF_MANY_BATTLES, gMonBackPic_ZamazentaHeroOfManyBattles), SPECIES_SPRITE(ETERNATUS, gMonBackPic_Eternatus), SPECIES_SPRITE(KUBFU, gMonBackPic_Kubfu), - SPECIES_SPRITE(URSHIFU, gMonBackPic_Urshifu), + SPECIES_SPRITE(URSHIFU_SINGLE_STRIKE_STYLE, gMonBackPic_UrshifuSingleStrikeStyle), SPECIES_SPRITE(ZARUDE, gMonBackPic_Zarude), SPECIES_SPRITE(REGIELEKI, gMonBackPic_Regieleki), SPECIES_SPRITE(REGIDRAGO, gMonBackPic_Regidrago), @@ -911,10 +911,10 @@ const struct CompressedSpriteSheet gMonBackPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(WYRDEER, gMonBackPic_Wyrdeer), SPECIES_SPRITE(KLEAVOR, gMonBackPic_Kleavor), SPECIES_SPRITE(URSALUNA, gMonBackPic_Ursaluna), - SPECIES_SPRITE(BASCULEGION, gMonBackPic_Basculegion), + SPECIES_SPRITE(BASCULEGION_MALE, gMonBackPic_BasculegionMale), SPECIES_SPRITE(SNEASLER, gMonBackPic_Sneasler), SPECIES_SPRITE(OVERQWIL, gMonBackPic_Overqwil), - SPECIES_SPRITE(ENAMORUS, gMonBackPic_Enamorus), + SPECIES_SPRITE(ENAMORUS_INCARNATE, gMonBackPic_EnamorusIncarnate), #endif SPECIES_SPRITE(VENUSAUR_MEGA, gMonBackPic_VenusaurMega), @@ -1011,7 +1011,7 @@ const struct CompressedSpriteSheet gMonBackPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(LINOONE_GALARIAN, gMonBackPic_LinooneGalarian), #if P_GEN_5_POKEMON == TRUE SPECIES_SPRITE(DARUMAKA_GALARIAN, gMonBackPic_DarumakaGalarian), - SPECIES_SPRITE(DARMANITAN_GALARIAN, gMonBackPic_DarmanitanGalarian), + SPECIES_SPRITE(DARMANITAN_GALARIAN_STANDARD_MODE, gMonBackPic_DarmanitanGalarianStandardMode), SPECIES_SPRITE(YAMASK_GALARIAN, gMonBackPic_YamaskGalarian), SPECIES_SPRITE(STUNFISK_GALARIAN, gMonBackPic_StunfiskGalarian), #endif @@ -1141,7 +1141,7 @@ const struct CompressedSpriteSheet gMonBackPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(BASCULIN_WHITE_STRIPED, gMonBackPic_BasculinWhiteStriped), SPECIES_SPRITE(DARMANITAN_ZEN_MODE, gMonBackPic_DarmanitanZenMode), - SPECIES_SPRITE(DARMANITAN_ZEN_MODE_GALARIAN, gMonBackPic_DarmanitanZenModeGalarian), + SPECIES_SPRITE(DARMANITAN_GALARIAN_ZEN_MODE, gMonBackPic_DarmanitanGalarianZenMode), SPECIES_SPRITE(DEERLING_SUMMER, gMonBackPic_Deerling), SPECIES_SPRITE(DEERLING_AUTUMN, gMonBackPic_Deerling), @@ -1234,7 +1234,7 @@ const struct CompressedSpriteSheet gMonBackPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(ZYGARDE_10, gMonBackPic_Zygarde10), SPECIES_SPRITE(ZYGARDE_10_POWER_CONSTRUCT, gMonBackPic_Zygarde10), - SPECIES_SPRITE(ZYGARDE_50_POWER_CONSTRUCT, gMonBackPic_Zygarde), + SPECIES_SPRITE(ZYGARDE_50_POWER_CONSTRUCT, gMonBackPic_Zygarde50), SPECIES_SPRITE(ZYGARDE_COMPLETE, gMonBackPic_ZygardeComplete), SPECIES_SPRITE(HOOPA_UNBOUND, gMonBackPic_HoopaUnbound), @@ -1270,12 +1270,12 @@ const struct CompressedSpriteSheet gMonBackPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(SILVALLY_DARK, gMonBackPic_Silvally), SPECIES_SPRITE(SILVALLY_FAIRY, gMonBackPic_Silvally), - SPECIES_SPRITE(MINIOR_METEOR_ORANGE, gMonBackPic_Minior), - SPECIES_SPRITE(MINIOR_METEOR_YELLOW, gMonBackPic_Minior), - SPECIES_SPRITE(MINIOR_METEOR_GREEN, gMonBackPic_Minior), - SPECIES_SPRITE(MINIOR_METEOR_BLUE, gMonBackPic_Minior), - SPECIES_SPRITE(MINIOR_METEOR_INDIGO, gMonBackPic_Minior), - SPECIES_SPRITE(MINIOR_METEOR_VIOLET, gMonBackPic_Minior), + SPECIES_SPRITE(MINIOR_METEOR_ORANGE, gMonBackPic_MiniorMeteor), + SPECIES_SPRITE(MINIOR_METEOR_YELLOW, gMonBackPic_MiniorMeteor), + SPECIES_SPRITE(MINIOR_METEOR_GREEN, gMonBackPic_MiniorMeteor), + SPECIES_SPRITE(MINIOR_METEOR_BLUE, gMonBackPic_MiniorMeteor), + SPECIES_SPRITE(MINIOR_METEOR_INDIGO, gMonBackPic_MiniorMeteor), + SPECIES_SPRITE(MINIOR_METEOR_VIOLET, gMonBackPic_MiniorMeteor), SPECIES_SPRITE(MINIOR_CORE_RED, gMonBackPic_MiniorCore), SPECIES_SPRITE(MINIOR_CORE_ORANGE, gMonBackPic_MiniorCore), SPECIES_SPRITE(MINIOR_CORE_YELLOW, gMonBackPic_MiniorCore), @@ -1368,7 +1368,7 @@ const struct CompressedSpriteSheet gMonBackPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(ALCREMIE_GIGANTAMAX, gMonBackPic_AlcremieGigantamax), SPECIES_SPRITE(COPPERAJAH_GIGANTAMAX, gMonBackPic_CopperajahGigantamax), SPECIES_SPRITE(DURALUDON_GIGANTAMAX, gMonBackPic_DuraludonGigantamax), - SPECIES_SPRITE(URSHIFU_GIGANTAMAX, gMonBackPic_UrshifuGigantamax), + SPECIES_SPRITE(URSHIFU_SINGLE_STRIKE_STYLE_GIGANTAMAX, gMonBackPic_UrshifuSingleStrikeGigantamax), SPECIES_SPRITE(URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX, gMonBackPic_UrshifuRapidStrikeGigantamax), #endif SPECIES_SPRITE(EGG, gMonFrontPic_Egg), diff --git a/src/data/pokemon_graphics/enemy_mon_elevation.h b/src/data/pokemon_graphics/enemy_mon_elevation.h index 436e7e1dd7..9f80b98a3a 100644 --- a/src/data/pokemon_graphics/enemy_mon_elevation.h +++ b/src/data/pokemon_graphics/enemy_mon_elevation.h @@ -51,7 +51,7 @@ const u8 gEnemyMonElevation[NUM_SPECIES + 1] = [SPECIES_DUSKULL] = 13, [SPECIES_SHUPPET] = 14, [SPECIES_BANETTE] = 8, - [SPECIES_CASTFORM] = 16, + [SPECIES_CASTFORM_NORMAL] = 16, [SPECIES_BELDUM] = 8, [SPECIES_RAYQUAZA] = 6, [SPECIES_LATIAS] = 12, @@ -99,19 +99,19 @@ const u8 gEnemyMonElevation[NUM_SPECIES + 1] = [SPECIES_BRAVIARY] = 8, [SPECIES_HYDREIGON] = 3, [SPECIES_VOLCARONA] = 6, - [SPECIES_TORNADUS] = 7, - [SPECIES_THUNDURUS] = 7, - [SPECIES_LANDORUS] = 7, - [SPECIES_MELOETTA] = 8, + [SPECIES_TORNADUS_INCARNATE] = 7, + [SPECIES_THUNDURUS_INCARNATE] = 7, + [SPECIES_LANDORUS_INCARNATE] = 7, + [SPECIES_MELOETTA_ARIA] = 8, // Gen 6 [SPECIES_FLETCHINDER] = 9, [SPECIES_TALONFLAME] = 7, - [SPECIES_VIVILLON] = 9, - [SPECIES_FLABEBE] = 6, - [SPECIES_FLOETTE] = 4, + [SPECIES_VIVILLON_ICY_SNOW] = 9, + [SPECIES_FLABEBE_RED_FLOWER] = 6, + [SPECIES_FLOETTE_RED_FLOWER] = 4, [SPECIES_HONEDGE] = 4, [SPECIES_DOUBLADE] = 5, - [SPECIES_AEGISLASH] = 3, + [SPECIES_AEGISLASH_SHIELD] = 3, [SPECIES_SPRITZEE] = 14, [SPECIES_INKAY] = 14, [SPECIES_CARBINK] = 4, @@ -119,13 +119,13 @@ const u8 gEnemyMonElevation[NUM_SPECIES + 1] = [SPECIES_PHANTUMP] = 5, [SPECIES_NOIBAT] = 8, [SPECIES_YVELTAL] = 5, - [SPECIES_HOOPA] = 13, + [SPECIES_HOOPA_CONFINED] = 13, // Gen 7 [SPECIES_VIKAVOLT] = 8, [SPECIES_CUTIEFLY] = 10, [SPECIES_RIBOMBEE] = 6, [SPECIES_COMFEY] = 8, - [SPECIES_MINIOR] = 17, + [SPECIES_MINIOR_METEOR_RED] = 17, [SPECIES_DHELMISE] = 2, [SPECIES_TAPU_KOKO] = 9, [SPECIES_TAPU_LELE] = 8, @@ -143,8 +143,8 @@ const u8 gEnemyMonElevation[NUM_SPECIES + 1] = [SPECIES_CORVISQUIRE] = 10, [SPECIES_ORBEETLE] = 8, [SPECIES_FLAPPLE] = 9, - [SPECIES_SINISTEA] = 9, - [SPECIES_POLTEAGEIST] = 11, + [SPECIES_SINISTEA_PHONY] = 9, + [SPECIES_POLTEAGEIST_PHONY] = 11, [SPECIES_RUNERIGUS] = 5, [SPECIES_MILCERY] = 10, [SPECIES_FROSMOTH] = 7, diff --git a/src/data/pokemon_graphics/footprint_table.h b/src/data/pokemon_graphics/footprint_table.h index 38737ac439..67e88c6d3d 100644 --- a/src/data/pokemon_graphics/footprint_table.h +++ b/src/data/pokemon_graphics/footprint_table.h @@ -360,7 +360,7 @@ const u8 *const gMonFootprintTable[NUM_SPECIES + 1] = [SPECIES_ARON] = gMonFootprint_Aron, [SPECIES_LAIRON] = gMonFootprint_Lairon, [SPECIES_AGGRON] = gMonFootprint_Aggron, - [SPECIES_CASTFORM] = gMonFootprint_Castform, + [SPECIES_CASTFORM_NORMAL] = gMonFootprint_Castform, [SPECIES_VOLBEAT] = gMonFootprint_Volbeat, [SPECIES_ILLUMISE] = gMonFootprint_Illumise, [SPECIES_LILEEP] = gMonFootprint_Lileep, @@ -385,7 +385,7 @@ const u8 *const gMonFootprintTable[NUM_SPECIES + 1] = [SPECIES_LATIAS] = gMonFootprint_Latias, [SPECIES_LATIOS] = gMonFootprint_Latios, [SPECIES_JIRACHI] = gMonFootprint_Jirachi, - [SPECIES_DEOXYS] = gMonFootprint_Deoxys, + [SPECIES_DEOXYS_NORMAL] = gMonFootprint_Deoxys, [SPECIES_CHIMECHO] = gMonFootprint_Chimecho, #if P_GEN_4_POKEMON == TRUE [SPECIES_TURTWIG] = gMonFootprint_Turtwig, @@ -413,8 +413,8 @@ const u8 *const gMonFootprintTable[NUM_SPECIES + 1] = [SPECIES_RAMPARDOS] = gMonFootprint_Rampardos, [SPECIES_SHIELDON] = gMonFootprint_Shieldon, [SPECIES_BASTIODON] = gMonFootprint_Bastiodon, - [SPECIES_BURMY] = gMonFootprint_Burmy, - [SPECIES_WORMADAM] = gMonFootprint_Wormadam, + [SPECIES_BURMY_PLANT_CLOAK] = gMonFootprint_Burmy, + [SPECIES_WORMADAM_PLANT_CLOAK] = gMonFootprint_Wormadam, [SPECIES_MOTHIM] = gMonFootprint_Mothim, [SPECIES_COMBEE] = gMonFootprint_Combee, [SPECIES_VESPIQUEN] = gMonFootprint_Vespiquen, @@ -422,9 +422,9 @@ const u8 *const gMonFootprintTable[NUM_SPECIES + 1] = [SPECIES_BUIZEL] = gMonFootprint_Buizel, [SPECIES_FLOATZEL] = gMonFootprint_Floatzel, [SPECIES_CHERUBI] = gMonFootprint_Cherubi, - [SPECIES_CHERRIM] = gMonFootprint_Cherrim, - [SPECIES_SHELLOS] = gMonFootprint_Shellos, - [SPECIES_GASTRODON] = gMonFootprint_Gastrodon, + [SPECIES_CHERRIM_OVERCAST] = gMonFootprint_Cherrim, + [SPECIES_SHELLOS_WEST_SEA] = gMonFootprint_Shellos, + [SPECIES_GASTRODON_WEST_SEA] = gMonFootprint_Gastrodon, [SPECIES_AMBIPOM] = gMonFootprint_Ambipom, [SPECIES_DRIFLOON] = gMonFootprint_Drifloon, [SPECIES_DRIFBLIM] = gMonFootprint_Drifblim, @@ -488,13 +488,13 @@ const u8 *const gMonFootprintTable[NUM_SPECIES + 1] = [SPECIES_PALKIA] = gMonFootprint_Palkia, [SPECIES_HEATRAN] = gMonFootprint_Heatran, [SPECIES_REGIGIGAS] = gMonFootprint_Regigigas, - [SPECIES_GIRATINA] = gMonFootprint_Giratina, + [SPECIES_GIRATINA_ALTERED] = gMonFootprint_Giratina, [SPECIES_CRESSELIA] = gMonFootprint_Cresselia, [SPECIES_PHIONE] = gMonFootprint_Phione, [SPECIES_MANAPHY] = gMonFootprint_Manaphy, [SPECIES_DARKRAI] = gMonFootprint_Darkrai, - [SPECIES_SHAYMIN] = gMonFootprint_Shaymin, - [SPECIES_ARCEUS] = gMonFootprint_Arceus, + [SPECIES_SHAYMIN_LAND] = gMonFootprint_Shaymin, + [SPECIES_ARCEUS_NORMAL] = gMonFootprint_Arceus, #endif #if P_GEN_5_POKEMON == TRUE [SPECIES_VICTINI] = gMonFootprint_Victini, @@ -553,12 +553,12 @@ const u8 *const gMonFootprintTable[NUM_SPECIES + 1] = [SPECIES_WHIMSICOTT] = gMonFootprint_Whimsicott, [SPECIES_PETILIL] = gMonFootprint_Petilil, [SPECIES_LILLIGANT] = gMonFootprint_Lilligant, - [SPECIES_BASCULIN] = gMonFootprint_Basculin, + [SPECIES_BASCULIN_RED_STRIPED] = gMonFootprint_Basculin, [SPECIES_SANDILE] = gMonFootprint_Sandile, [SPECIES_KROKOROK] = gMonFootprint_Krokorok, [SPECIES_KROOKODILE] = gMonFootprint_Krookodile, [SPECIES_DARUMAKA] = gMonFootprint_Darumaka, - [SPECIES_DARMANITAN] = gMonFootprint_Darmanitan, + [SPECIES_DARMANITAN_STANDARD_MODE] = gMonFootprint_Darmanitan, [SPECIES_MARACTUS] = gMonFootprint_Maractus, [SPECIES_DWEBBLE] = gMonFootprint_Dwebble, [SPECIES_CRUSTLE] = gMonFootprint_Crustle, @@ -588,8 +588,8 @@ const u8 *const gMonFootprintTable[NUM_SPECIES + 1] = [SPECIES_VANILLITE] = gMonFootprint_Vanillite, [SPECIES_VANILLISH] = gMonFootprint_Vanillish, [SPECIES_VANILLUXE] = gMonFootprint_Vanilluxe, - [SPECIES_DEERLING] = gMonFootprint_Deerling, - [SPECIES_SAWSBUCK] = gMonFootprint_Sawsbuck, + [SPECIES_DEERLING_SPRING] = gMonFootprint_Deerling, + [SPECIES_SAWSBUCK_SPRING] = gMonFootprint_Sawsbuck, [SPECIES_EMOLGA] = gMonFootprint_Emolga, [SPECIES_KARRABLAST] = gMonFootprint_Karrablast, [SPECIES_ESCAVALIER] = gMonFootprint_Escavalier, @@ -644,14 +644,14 @@ const u8 *const gMonFootprintTable[NUM_SPECIES + 1] = [SPECIES_COBALION] = gMonFootprint_Cobalion, [SPECIES_TERRAKION] = gMonFootprint_Terrakion, [SPECIES_VIRIZION] = gMonFootprint_Virizion, - [SPECIES_TORNADUS] = gMonFootprint_Tornadus, - [SPECIES_THUNDURUS] = gMonFootprint_Thundurus, + [SPECIES_TORNADUS_INCARNATE] = gMonFootprint_Tornadus, + [SPECIES_THUNDURUS_INCARNATE] = gMonFootprint_Thundurus, [SPECIES_RESHIRAM] = gMonFootprint_Reshiram, [SPECIES_ZEKROM] = gMonFootprint_Zekrom, - [SPECIES_LANDORUS] = gMonFootprint_Landorus, + [SPECIES_LANDORUS_INCARNATE] = gMonFootprint_Landorus, [SPECIES_KYUREM] = gMonFootprint_Kyurem, - [SPECIES_KELDEO] = gMonFootprint_Keldeo, - [SPECIES_MELOETTA] = gMonFootprint_Meloetta, + [SPECIES_KELDEO_ORDINARY] = gMonFootprint_Keldeo, + [SPECIES_MELOETTA_ARIA] = gMonFootprint_Meloetta, [SPECIES_GENESECT] = gMonFootprint_Genesect, #endif #if P_GEN_6_POKEMON == TRUE @@ -671,22 +671,22 @@ const u8 *const gMonFootprintTable[NUM_SPECIES + 1] = [SPECIES_TALONFLAME] = gMonFootprint_Talonflame, [SPECIES_SCATTERBUG] = gMonFootprint_Scatterbug, [SPECIES_SPEWPA] = gMonFootprint_Spewpa, - [SPECIES_VIVILLON] = gMonFootprint_Vivillon, + [SPECIES_VIVILLON_ICY_SNOW] = gMonFootprint_Vivillon, [SPECIES_LITLEO] = gMonFootprint_Litleo, [SPECIES_PYROAR] = gMonFootprint_Pyroar, - [SPECIES_FLABEBE] = gMonFootprint_Flabebe, - [SPECIES_FLOETTE] = gMonFootprint_Floette, - [SPECIES_FLORGES] = gMonFootprint_Florges, + [SPECIES_FLABEBE_RED_FLOWER] = gMonFootprint_Flabebe, + [SPECIES_FLOETTE_RED_FLOWER] = gMonFootprint_Floette, + [SPECIES_FLORGES_RED_FLOWER] = gMonFootprint_Florges, [SPECIES_SKIDDO] = gMonFootprint_Skiddo, [SPECIES_GOGOAT] = gMonFootprint_Gogoat, [SPECIES_PANCHAM] = gMonFootprint_Pancham, [SPECIES_PANGORO] = gMonFootprint_Pangoro, - [SPECIES_FURFROU] = gMonFootprint_Furfrou, + [SPECIES_FURFROU_NATURAL] = gMonFootprint_Furfrou, [SPECIES_ESPURR] = gMonFootprint_Espurr, - [SPECIES_MEOWSTIC] = gMonFootprint_Meowstic, + [SPECIES_MEOWSTIC_MALE] = gMonFootprint_Meowstic, [SPECIES_HONEDGE] = gMonFootprint_Honedge, [SPECIES_DOUBLADE] = gMonFootprint_Doublade, - [SPECIES_AEGISLASH] = gMonFootprint_Aegislash, + [SPECIES_AEGISLASH_SHIELD] = gMonFootprint_Aegislash, [SPECIES_SPRITZEE] = gMonFootprint_Spritzee, [SPECIES_AROMATISSE] = gMonFootprint_Aromatisse, [SPECIES_SWIRLIX] = gMonFootprint_Swirlix, @@ -715,17 +715,17 @@ const u8 *const gMonFootprintTable[NUM_SPECIES + 1] = [SPECIES_KLEFKI] = gMonFootprint_Klefki, [SPECIES_PHANTUMP] = gMonFootprint_Phantump, [SPECIES_TREVENANT] = gMonFootprint_Trevenant, - [SPECIES_PUMPKABOO] = gMonFootprint_Pumpkaboo, - [SPECIES_GOURGEIST] = gMonFootprint_Gourgeist, + [SPECIES_PUMPKABOO_AVERAGE] = gMonFootprint_Pumpkaboo, + [SPECIES_GOURGEIST_AVERAGE] = gMonFootprint_Gourgeist, [SPECIES_BERGMITE] = gMonFootprint_Bergmite, [SPECIES_AVALUGG] = gMonFootprint_Avalugg, [SPECIES_NOIBAT] = gMonFootprint_Noibat, [SPECIES_NOIVERN] = gMonFootprint_Noivern, - [SPECIES_XERNEAS] = gMonFootprint_Xerneas, + [SPECIES_XERNEAS_NEUTRAL] = gMonFootprint_Xerneas, [SPECIES_YVELTAL] = gMonFootprint_Yveltal, - [SPECIES_ZYGARDE] = gMonFootprint_Zygarde, + [SPECIES_ZYGARDE_50_AURA_BREAK] = gMonFootprint_Zygarde, [SPECIES_DIANCIE] = gMonFootprint_Diancie, - [SPECIES_HOOPA] = gMonFootprint_Hoopa, + [SPECIES_HOOPA_CONFINED] = gMonFootprint_Hoopa, [SPECIES_VOLCANION] = gMonFootprint_Volcanion, #endif #if P_GEN_7_POKEMON == TRUE @@ -748,12 +748,12 @@ const u8 *const gMonFootprintTable[NUM_SPECIES + 1] = [SPECIES_VIKAVOLT] = gMonFootprint_Vikavolt, [SPECIES_CRABRAWLER] = gMonFootprint_Crabrawler, [SPECIES_CRABOMINABLE] = gMonFootprint_Crabominable, - [SPECIES_ORICORIO] = gMonFootprint_Oricorio, + [SPECIES_ORICORIO_BAILE] = gMonFootprint_Oricorio, [SPECIES_CUTIEFLY] = gMonFootprint_Cutiefly, [SPECIES_RIBOMBEE] = gMonFootprint_Ribombee, [SPECIES_ROCKRUFF] = gMonFootprint_Rockruff, - [SPECIES_LYCANROC] = gMonFootprint_Lycanroc, - [SPECIES_WISHIWASHI] = gMonFootprint_Wishiwashi, + [SPECIES_LYCANROC_MIDDAY] = gMonFootprint_Lycanroc, + [SPECIES_WISHIWASHI_SOLO] = gMonFootprint_Wishiwashi, [SPECIES_MAREANIE] = gMonFootprint_Mareanie, [SPECIES_TOXAPEX] = gMonFootprint_Toxapex, [SPECIES_MUDBRAY] = gMonFootprint_Mudbray, @@ -780,12 +780,12 @@ const u8 *const gMonFootprintTable[NUM_SPECIES + 1] = [SPECIES_PALOSSAND] = gMonFootprint_Palossand, [SPECIES_PYUKUMUKU] = gMonFootprint_Pyukumuku, [SPECIES_TYPE_NULL] = gMonFootprint_Type_Null, - [SPECIES_SILVALLY] = gMonFootprint_Silvally, - [SPECIES_MINIOR] = gMonFootprint_Minior, + [SPECIES_SILVALLY_NORMAL] = gMonFootprint_Silvally, + [SPECIES_MINIOR_METEOR_RED] = gMonFootprint_Minior, [SPECIES_KOMALA] = gMonFootprint_Komala, [SPECIES_TURTONATOR] = gMonFootprint_Turtonator, [SPECIES_TOGEDEMARU] = gMonFootprint_Togedemaru, - [SPECIES_MIMIKYU] = gMonFootprint_Mimikyu, + [SPECIES_MIMIKYU_DISGUISED] = gMonFootprint_Mimikyu, [SPECIES_BRUXISH] = gMonFootprint_Bruxish, [SPECIES_DRAMPA] = gMonFootprint_Drampa, [SPECIES_DHELMISE] = gMonFootprint_Dhelmise, @@ -858,13 +858,13 @@ const u8 *const gMonFootprintTable[NUM_SPECIES + 1] = [SPECIES_ARROKUDA] = gMonFootprint_Arrokuda, [SPECIES_BARRASKEWDA] = gMonFootprint_Barraskewda, [SPECIES_TOXEL] = gMonFootprint_Toxel, - [SPECIES_TOXTRICITY] = gMonFootprint_Toxtricity, + [SPECIES_TOXTRICITY_AMPED] = gMonFootprint_Toxtricity, [SPECIES_SIZZLIPEDE] = gMonFootprint_Sizzlipede, [SPECIES_CENTISKORCH] = gMonFootprint_Centiskorch, [SPECIES_CLOBBOPUS] = gMonFootprint_Clobbopus, [SPECIES_GRAPPLOCT] = gMonFootprint_Grapploct, - [SPECIES_SINISTEA] = gMonFootprint_Sinistea, - [SPECIES_POLTEAGEIST] = gMonFootprint_Polteageist, + [SPECIES_SINISTEA_PHONY] = gMonFootprint_Sinistea, + [SPECIES_POLTEAGEIST_PHONY] = gMonFootprint_Polteageist, [SPECIES_HATENNA] = gMonFootprint_Hatenna, [SPECIES_HATTREM] = gMonFootprint_Hattrem, [SPECIES_HATTERENE] = gMonFootprint_Hatterene, @@ -878,15 +878,15 @@ const u8 *const gMonFootprintTable[NUM_SPECIES + 1] = [SPECIES_MR_RIME] = gMonFootprint_Mr_Rime, [SPECIES_RUNERIGUS] = gMonFootprint_Runerigus, [SPECIES_MILCERY] = gMonFootprint_Milcery, - [SPECIES_ALCREMIE] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM] = gMonFootprint_Alcremie, [SPECIES_FALINKS] = gMonFootprint_Falinks, [SPECIES_PINCURCHIN] = gMonFootprint_Pincurchin, [SPECIES_SNOM] = gMonFootprint_Snom, [SPECIES_FROSMOTH] = gMonFootprint_Frosmoth, [SPECIES_STONJOURNER] = gMonFootprint_Stonjourner, - [SPECIES_EISCUE] = gMonFootprint_Eiscue, - [SPECIES_INDEEDEE] = gMonFootprint_Indeedee, - [SPECIES_MORPEKO] = gMonFootprint_Morpeko, + [SPECIES_EISCUE_ICE_FACE] = gMonFootprint_Eiscue, + [SPECIES_INDEEDEE_MALE] = gMonFootprint_Indeedee, + [SPECIES_MORPEKO_FULL_BELLY] = gMonFootprint_Morpeko, [SPECIES_CUFANT] = gMonFootprint_Cufant, [SPECIES_COPPERAJAH] = gMonFootprint_Copperajah, [SPECIES_DRACOZOLT] = gMonFootprint_Dracozolt, @@ -897,11 +897,11 @@ const u8 *const gMonFootprintTable[NUM_SPECIES + 1] = [SPECIES_DREEPY] = gMonFootprint_Dreepy, [SPECIES_DRAKLOAK] = gMonFootprint_Drakloak, [SPECIES_DRAGAPULT] = gMonFootprint_Dragapult, - [SPECIES_ZACIAN] = gMonFootprint_Zacian, - [SPECIES_ZAMAZENTA] = gMonFootprint_Zamazenta, + [SPECIES_ZACIAN_HERO_OF_MANY_BATTLES] = gMonFootprint_Zacian, + [SPECIES_ZAMAZENTA_HERO_OF_MANY_BATTLES] = gMonFootprint_Zamazenta, [SPECIES_ETERNATUS] = gMonFootprint_Eternatus, [SPECIES_KUBFU] = gMonFootprint_Kubfu, - [SPECIES_URSHIFU] = gMonFootprint_Urshifu, + [SPECIES_URSHIFU_SINGLE_STRIKE_STYLE] = gMonFootprint_Urshifu, [SPECIES_ZARUDE] = gMonFootprint_Zarude, [SPECIES_REGIELEKI] = gMonFootprint_Regieleki, [SPECIES_REGIDRAGO] = gMonFootprint_Regidrago, diff --git a/src/data/pokemon_graphics/front_pic_anims.h b/src/data/pokemon_graphics/front_pic_anims.h index 130dcad60a..cc2fae2884 100644 --- a/src/data/pokemon_graphics/front_pic_anims.h +++ b/src/data/pokemon_graphics/front_pic_anims.h @@ -4131,7 +4131,7 @@ static const union AnimCmd sAnim_Aggron_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Castform_1[] = +static const union AnimCmd sAnim_CastformNormal_1[] = { ANIMCMD_FRAME(0, 12), ANIMCMD_FRAME(1, 24), @@ -4490,7 +4490,7 @@ static const union AnimCmd sAnim_Jirachi_2[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Deoxys_1[] = +static const union AnimCmd sAnim_DeoxysNormal_1[] = { ANIMCMD_FRAME(0, 16), ANIMCMD_FRAME(1, 16), @@ -4500,15 +4500,6 @@ static const union AnimCmd sAnim_Deoxys_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Deoxys_2[] = -{ - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_END, -}; - static const union AnimCmd sAnim_Chimecho_1[] = { ANIMCMD_FRAME(0, 15), @@ -5894,7 +5885,7 @@ static const union AnimCmd sAnim_Regigigas_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Giratina_1[] = +static const union AnimCmd sAnim_GiratinaAltered_1[] = { ANIMCMD_FRAME(0, 12), ANIMCMD_FRAME(1, 45), @@ -5937,7 +5928,7 @@ static const union AnimCmd sAnim_Darkrai_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Shaymin_1[] = +static const union AnimCmd sAnim_ShayminLand_1[] = { ANIMCMD_FRAME(0, 20), ANIMCMD_FRAME(1, 10), @@ -6606,7 +6597,7 @@ static const union AnimCmd sAnim_Darumaka_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Darmanitan_1[] = +static const union AnimCmd sAnim_DarmanitanStandardMode_1[] = { ANIMCMD_FRAME(1, 10), ANIMCMD_FRAME(0, 10), @@ -7480,7 +7471,7 @@ static const union AnimCmd sAnim_Virizion_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Tornadus_1[] = +static const union AnimCmd sAnim_TornadusIncarnate_1[] = { ANIMCMD_FRAME(1, 2), ANIMCMD_FRAME(0, 2), @@ -7507,7 +7498,7 @@ static const union AnimCmd sAnim_Tornadus_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Thundurus_1[] = +static const union AnimCmd sAnim_ThundurusIncarnate_1[] = { ANIMCMD_FRAME(1, 2), ANIMCMD_FRAME(0, 2), @@ -7548,7 +7539,7 @@ static const union AnimCmd sAnim_Zekrom_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Landorus_1[] = +static const union AnimCmd sAnim_LandorusIncarnate_1[] = { ANIMCMD_FRAME(1, 2), ANIMCMD_FRAME(0, 2), @@ -7584,14 +7575,14 @@ static const union AnimCmd sAnim_Kyurem_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Keldeo_1[] = +static const union AnimCmd sAnim_KeldeoOrdinary_1[] = { ANIMCMD_FRAME(1, 32), ANIMCMD_FRAME(0, 20), ANIMCMD_END, }; -static const union AnimCmd sAnim_Meloetta_1[] = +static const union AnimCmd sAnim_MeloettaAria_1[] = { ANIMCMD_FRAME(0, 15), ANIMCMD_FRAME(1, 45), @@ -7603,7 +7594,7 @@ static const union AnimCmd sAnim_Meloetta_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Meloetta_2[] = +static const union AnimCmd sAnim_MeloettaAria_2[] = { ANIMCMD_FRAME(0, 20), ANIMCMD_FRAME(2, 20), @@ -7985,7 +7976,7 @@ static const union AnimCmd sAnim_Doublade_2[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Aegislash_1[] = +static const union AnimCmd sAnim_AegislashShield_1[] = { ANIMCMD_FRAME(0, 18), ANIMCMD_FRAME(1, 18), @@ -8340,7 +8331,7 @@ static const union AnimCmd sAnim_Yveltal_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Zygarde_1[] = +static const union AnimCmd sAnim_Zygarde50_1[] = { ANIMCMD_FRAME(0, 10), ANIMCMD_FRAME(1, 25), @@ -8526,13 +8517,13 @@ static const union AnimCmd sAnim_Rockruff_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Lycanroc_1[] = +static const union AnimCmd sAnim_LycanrocMidday_1[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; -static const union AnimCmd sAnim_Wishiwashi_1[] = +static const union AnimCmd sAnim_WishiwashiSolo_1[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, @@ -8721,7 +8712,7 @@ static const union AnimCmd sAnim_Silvally_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Minior_1[] = +static const union AnimCmd sAnim_MiniorMeteor_1[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, @@ -8747,7 +8738,7 @@ static const union AnimCmd sAnim_Togedemaru_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Mimikyu_1[] = +static const union AnimCmd sAnim_MimikyuDisguised_1[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, @@ -9523,7 +9514,7 @@ static const union AnimCmd sAnim_Overqwil_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Enamorus_1[] = +static const union AnimCmd sAnim_EnamorusIncarnate_1[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, @@ -10035,7 +10026,7 @@ static const union AnimCmd sAnim_DarumakaGalarian_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_DarmanitanGalarian_1[] = +static const union AnimCmd sAnim_DarmanitanGalarianStandardMode_1[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, @@ -10343,7 +10334,7 @@ static const union AnimCmd sAnim_DuraludonGigantamax_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_UrshifuGigantamax_1[] = +static const union AnimCmd sAnim_UrshifuSingleStrikeStyleGigantamax_1[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, @@ -10550,7 +10541,7 @@ static const union AnimCmd sAnim_DarmanitanZenMode_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_DarmanitanZenModeGalarian_1[] = +static const union AnimCmd sAnim_DarmanitanGalarianZenMode_1[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, @@ -11086,7 +11077,7 @@ SINGLE_ANIMATION(Relicanth); SINGLE_ANIMATION(Aron); SINGLE_ANIMATION(Lairon); SINGLE_ANIMATION(Aggron); -SINGLE_ANIMATION(Castform); +SINGLE_ANIMATION(CastformNormal); SINGLE_ANIMATION(CastformSunny); SINGLE_ANIMATION(CastformRainy); SINGLE_ANIMATION(CastformSnowy); @@ -11114,7 +11105,7 @@ DOUBLE_ANIMATION(Rayquaza); DOUBLE_ANIMATION(Latias); DOUBLE_ANIMATION(Latios); DOUBLE_ANIMATION(Jirachi); -DOUBLE_ANIMATION(Deoxys); +SINGLE_ANIMATION(DeoxysNormal); SINGLE_ANIMATION(Chimecho); SINGLE_ANIMATION(Egg); SINGLE_ANIMATION(UnownB); @@ -11251,12 +11242,12 @@ SINGLE_ANIMATION(Dialga); SINGLE_ANIMATION(Palkia); SINGLE_ANIMATION(Heatran); SINGLE_ANIMATION(Regigigas); -SINGLE_ANIMATION(Giratina); +SINGLE_ANIMATION(GiratinaAltered); SINGLE_ANIMATION(Cresselia); SINGLE_ANIMATION(Phione); SINGLE_ANIMATION(Manaphy); SINGLE_ANIMATION(Darkrai); -SINGLE_ANIMATION(Shaymin); +SINGLE_ANIMATION(ShayminLand); SINGLE_ANIMATION(Arceus); #endif #if P_GEN_5_POKEMON == TRUE @@ -11321,7 +11312,7 @@ SINGLE_ANIMATION(Sandile); SINGLE_ANIMATION(Krokorok); DOUBLE_ANIMATION(Krookodile); SINGLE_ANIMATION(Darumaka); -SINGLE_ANIMATION(Darmanitan); +SINGLE_ANIMATION(DarmanitanStandardMode); SINGLE_ANIMATION(Maractus); SINGLE_ANIMATION(Dwebble); SINGLE_ANIMATION(Crustle); @@ -11407,14 +11398,14 @@ SINGLE_ANIMATION(Volcarona); SINGLE_ANIMATION(Cobalion); DOUBLE_ANIMATION(Terrakion); SINGLE_ANIMATION(Virizion); -SINGLE_ANIMATION(Tornadus); -SINGLE_ANIMATION(Thundurus); +SINGLE_ANIMATION(TornadusIncarnate); +SINGLE_ANIMATION(ThundurusIncarnate); SINGLE_ANIMATION(Reshiram); SINGLE_ANIMATION(Zekrom); -SINGLE_ANIMATION(Landorus); +SINGLE_ANIMATION(LandorusIncarnate); SINGLE_ANIMATION(Kyurem); -SINGLE_ANIMATION(Keldeo); -DOUBLE_ANIMATION(Meloetta); +SINGLE_ANIMATION(KeldeoOrdinary); +DOUBLE_ANIMATION(MeloettaAria); SINGLE_ANIMATION(Genesect); #endif #if P_GEN_6_POKEMON == TRUE @@ -11450,7 +11441,7 @@ SINGLE_ANIMATION(Espurr); SINGLE_ANIMATION(Meowstic); SINGLE_ANIMATION(Honedge); DOUBLE_ANIMATION(Doublade); -SINGLE_ANIMATION(Aegislash); +SINGLE_ANIMATION(AegislashShield); SINGLE_ANIMATION(Spritzee); SINGLE_ANIMATION(Aromatisse); SINGLE_ANIMATION(Swirlix); @@ -11487,7 +11478,7 @@ SINGLE_ANIMATION(Noibat); SINGLE_ANIMATION(Noivern); SINGLE_ANIMATION(Xerneas); SINGLE_ANIMATION(Yveltal); -SINGLE_ANIMATION(Zygarde); +SINGLE_ANIMATION(Zygarde50); SINGLE_ANIMATION(Diancie); SINGLE_ANIMATION(Hoopa); SINGLE_ANIMATION(Volcanion); @@ -11516,8 +11507,8 @@ SINGLE_ANIMATION(Oricorio); SINGLE_ANIMATION(Cutiefly); SINGLE_ANIMATION(Ribombee); SINGLE_ANIMATION(Rockruff); -SINGLE_ANIMATION(Lycanroc); -SINGLE_ANIMATION(Wishiwashi); +SINGLE_ANIMATION(LycanrocMidday); +SINGLE_ANIMATION(WishiwashiSolo); SINGLE_ANIMATION(Mareanie); SINGLE_ANIMATION(Toxapex); SINGLE_ANIMATION(Mudbray); @@ -11545,11 +11536,11 @@ SINGLE_ANIMATION(Palossand); SINGLE_ANIMATION(Pyukumuku); SINGLE_ANIMATION(TypeNull); SINGLE_ANIMATION(Silvally); -SINGLE_ANIMATION(Minior); +SINGLE_ANIMATION(MiniorMeteor); SINGLE_ANIMATION(Komala); SINGLE_ANIMATION(Turtonator); SINGLE_ANIMATION(Togedemaru); -SINGLE_ANIMATION(Mimikyu); +SINGLE_ANIMATION(MimikyuDisguised); SINGLE_ANIMATION(Bruxish); SINGLE_ANIMATION(Drampa); SINGLE_ANIMATION(Dhelmise); @@ -11678,7 +11669,7 @@ SINGLE_ANIMATION(Ursaluna); SINGLE_ANIMATION(Basculegion); SINGLE_ANIMATION(Sneasler); SINGLE_ANIMATION(Overqwil); -SINGLE_ANIMATION(Enamorus); +SINGLE_ANIMATION(EnamorusIncarnate); #endif SINGLE_ANIMATION(VenusaurMega); SINGLE_ANIMATION(CHARIZARD_MEGA_X); @@ -11771,7 +11762,7 @@ SINGLE_ANIMATION(ZigzagoonGalarian); SINGLE_ANIMATION(LinooneGalarian); #if P_GEN_5_POKEMON == TRUE SINGLE_ANIMATION(DarumakaGalarian); -SINGLE_ANIMATION(DarmanitanGalarian); +SINGLE_ANIMATION(DarmanitanGalarianStandardMode); SINGLE_ANIMATION(YamaskGalarian); SINGLE_ANIMATION(StunfiskGalarian); #endif @@ -11823,7 +11814,7 @@ SINGLE_ANIMATION(ShayminSky); #endif #if P_GEN_5_POKEMON == TRUE SINGLE_ANIMATION(DarmanitanZenMode); -SINGLE_ANIMATION(DarmanitanZenModeGalarian); +SINGLE_ANIMATION(DarmanitanGalarianZenMode); SINGLE_ANIMATION(TornadusTherian); SINGLE_ANIMATION(ThundurusTherian); SINGLE_ANIMATION(LandorusTherian); @@ -11885,7 +11876,7 @@ SINGLE_ANIMATION(GrimmsnarlGigantamax); SINGLE_ANIMATION(AlcremieGigantamax); SINGLE_ANIMATION(CopperajahGigantamax); SINGLE_ANIMATION(DuraludonGigantamax); -SINGLE_ANIMATION(UrshifuGigantamax); +SINGLE_ANIMATION(UrshifuSingleStrikeStyleGigantamax); SINGLE_ANIMATION(UrshifuRapidStrikeStyleGigantamax); #endif @@ -12253,7 +12244,7 @@ const union AnimCmd *const *const gMonFrontAnimsPtrTable[NUM_SPECIES + 1] = [SPECIES_ARON] = sAnims_Aron, [SPECIES_LAIRON] = sAnims_Lairon, [SPECIES_AGGRON] = sAnims_Aggron, - [SPECIES_CASTFORM] = sAnims_Castform, + [SPECIES_CASTFORM_NORMAL] = sAnims_CastformNormal, [SPECIES_VOLBEAT] = sAnims_Volbeat, [SPECIES_ILLUMISE] = sAnims_Illumise, [SPECIES_LILEEP] = sAnims_Lileep, @@ -12278,7 +12269,7 @@ const union AnimCmd *const *const gMonFrontAnimsPtrTable[NUM_SPECIES + 1] = [SPECIES_LATIAS] = sAnims_Latias, [SPECIES_LATIOS] = sAnims_Latios, [SPECIES_JIRACHI] = sAnims_Jirachi, - [SPECIES_DEOXYS] = sAnims_Deoxys, + [SPECIES_DEOXYS_NORMAL] = sAnims_DeoxysNormal, [SPECIES_CHIMECHO] = sAnims_Chimecho, #if P_GEN_4_POKEMON == TRUE [SPECIES_TURTWIG] = sAnims_Turtwig, @@ -12306,8 +12297,8 @@ const union AnimCmd *const *const gMonFrontAnimsPtrTable[NUM_SPECIES + 1] = [SPECIES_RAMPARDOS] = sAnims_Rampardos, [SPECIES_SHIELDON] = sAnims_Shieldon, [SPECIES_BASTIODON] = sAnims_Bastiodon, - [SPECIES_BURMY] = sAnims_Burmy, - [SPECIES_WORMADAM] = sAnims_Wormadam, + [SPECIES_BURMY_PLANT_CLOAK] = sAnims_Burmy, + [SPECIES_WORMADAM_PLANT_CLOAK] = sAnims_Wormadam, [SPECIES_MOTHIM] = sAnims_Mothim, [SPECIES_COMBEE] = sAnims_Combee, [SPECIES_VESPIQUEN] = sAnims_Vespiquen, @@ -12315,9 +12306,9 @@ const union AnimCmd *const *const gMonFrontAnimsPtrTable[NUM_SPECIES + 1] = [SPECIES_BUIZEL] = sAnims_Buizel, [SPECIES_FLOATZEL] = sAnims_Floatzel, [SPECIES_CHERUBI] = sAnims_Cherubi, - [SPECIES_CHERRIM] = sAnims_CherrimOvercast, - [SPECIES_SHELLOS] = sAnims_Shellos, - [SPECIES_GASTRODON] = sAnims_Gastrodon, + [SPECIES_CHERRIM_OVERCAST] = sAnims_CherrimOvercast, + [SPECIES_SHELLOS_WEST_SEA] = sAnims_Shellos, + [SPECIES_GASTRODON_WEST_SEA] = sAnims_Gastrodon, [SPECIES_AMBIPOM] = sAnims_Ambipom, [SPECIES_DRIFLOON] = sAnims_Drifloon, [SPECIES_DRIFBLIM] = sAnims_Drifblim, @@ -12381,13 +12372,13 @@ const union AnimCmd *const *const gMonFrontAnimsPtrTable[NUM_SPECIES + 1] = [SPECIES_PALKIA] = sAnims_Palkia, [SPECIES_HEATRAN] = sAnims_Heatran, [SPECIES_REGIGIGAS] = sAnims_Regigigas, - [SPECIES_GIRATINA] = sAnims_Giratina, + [SPECIES_GIRATINA_ALTERED] = sAnims_GiratinaAltered, [SPECIES_CRESSELIA] = sAnims_Cresselia, [SPECIES_PHIONE] = sAnims_Phione, [SPECIES_MANAPHY] = sAnims_Manaphy, [SPECIES_DARKRAI] = sAnims_Darkrai, - [SPECIES_SHAYMIN] = sAnims_Shaymin, - [SPECIES_ARCEUS] = sAnims_Arceus, + [SPECIES_SHAYMIN_LAND] = sAnims_ShayminLand, + [SPECIES_ARCEUS_NORMAL] = sAnims_Arceus, #endif #if P_GEN_5_POKEMON == TRUE [SPECIES_VICTINI] = sAnims_Victini, @@ -12446,12 +12437,12 @@ const union AnimCmd *const *const gMonFrontAnimsPtrTable[NUM_SPECIES + 1] = [SPECIES_WHIMSICOTT] = sAnims_Whimsicott, [SPECIES_PETILIL] = sAnims_Petilil, [SPECIES_LILLIGANT] = sAnims_Lilligant, - [SPECIES_BASCULIN] = sAnims_Basculin, + [SPECIES_BASCULIN_RED_STRIPED] = sAnims_Basculin, [SPECIES_SANDILE] = sAnims_Sandile, [SPECIES_KROKOROK] = sAnims_Krokorok, [SPECIES_KROOKODILE] = sAnims_Krookodile, [SPECIES_DARUMAKA] = sAnims_Darumaka, - [SPECIES_DARMANITAN] = sAnims_Darmanitan, + [SPECIES_DARMANITAN_STANDARD_MODE] = sAnims_DarmanitanStandardMode, [SPECIES_MARACTUS] = sAnims_Maractus, [SPECIES_DWEBBLE] = sAnims_Dwebble, [SPECIES_CRUSTLE] = sAnims_Crustle, @@ -12481,8 +12472,8 @@ const union AnimCmd *const *const gMonFrontAnimsPtrTable[NUM_SPECIES + 1] = [SPECIES_VANILLITE] = sAnims_Vanillite, [SPECIES_VANILLISH] = sAnims_Vanillish, [SPECIES_VANILLUXE] = sAnims_Vanilluxe, - [SPECIES_DEERLING] = sAnims_Deerling, - [SPECIES_SAWSBUCK] = sAnims_Sawsbuck, + [SPECIES_DEERLING_SPRING] = sAnims_Deerling, + [SPECIES_SAWSBUCK_SPRING] = sAnims_Sawsbuck, [SPECIES_EMOLGA] = sAnims_Emolga, [SPECIES_KARRABLAST] = sAnims_Karrablast, [SPECIES_ESCAVALIER] = sAnims_Escavalier, @@ -12537,14 +12528,14 @@ const union AnimCmd *const *const gMonFrontAnimsPtrTable[NUM_SPECIES + 1] = [SPECIES_COBALION] = sAnims_Cobalion, [SPECIES_TERRAKION] = sAnims_Terrakion, [SPECIES_VIRIZION] = sAnims_Virizion, - [SPECIES_TORNADUS] = sAnims_Tornadus, - [SPECIES_THUNDURUS] = sAnims_Thundurus, + [SPECIES_TORNADUS_INCARNATE] = sAnims_TornadusIncarnate, + [SPECIES_THUNDURUS_INCARNATE] = sAnims_ThundurusIncarnate, [SPECIES_RESHIRAM] = sAnims_Reshiram, [SPECIES_ZEKROM] = sAnims_Zekrom, - [SPECIES_LANDORUS] = sAnims_Landorus, + [SPECIES_LANDORUS_INCARNATE] = sAnims_LandorusIncarnate, [SPECIES_KYUREM] = sAnims_Kyurem, - [SPECIES_KELDEO] = sAnims_Keldeo, - [SPECIES_MELOETTA] = sAnims_Meloetta, + [SPECIES_KELDEO_ORDINARY] = sAnims_KeldeoOrdinary, + [SPECIES_MELOETTA_ARIA] = sAnims_MeloettaAria, [SPECIES_GENESECT] = sAnims_Genesect, #endif #if P_GEN_6_POKEMON == TRUE @@ -12564,22 +12555,22 @@ const union AnimCmd *const *const gMonFrontAnimsPtrTable[NUM_SPECIES + 1] = [SPECIES_TALONFLAME] = sAnims_Talonflame, [SPECIES_SCATTERBUG] = sAnims_Scatterbug, [SPECIES_SPEWPA] = sAnims_Spewpa, - [SPECIES_VIVILLON] = sAnims_Vivillon, + [SPECIES_VIVILLON_ICY_SNOW] = sAnims_Vivillon, [SPECIES_LITLEO] = sAnims_Litleo, [SPECIES_PYROAR] = sAnims_Pyroar, - [SPECIES_FLABEBE] = sAnims_Flabebe, - [SPECIES_FLOETTE] = sAnims_Floette, - [SPECIES_FLORGES] = sAnims_Florges, + [SPECIES_FLABEBE_RED_FLOWER] = sAnims_Flabebe, + [SPECIES_FLOETTE_RED_FLOWER] = sAnims_Floette, + [SPECIES_FLORGES_RED_FLOWER] = sAnims_Florges, [SPECIES_SKIDDO] = sAnims_Skiddo, [SPECIES_GOGOAT] = sAnims_Gogoat, [SPECIES_PANCHAM] = sAnims_Pancham, [SPECIES_PANGORO] = sAnims_Pangoro, - [SPECIES_FURFROU] = sAnims_Furfrou, + [SPECIES_FURFROU_NATURAL] = sAnims_Furfrou, [SPECIES_ESPURR] = sAnims_Espurr, - [SPECIES_MEOWSTIC] = sAnims_Meowstic, + [SPECIES_MEOWSTIC_MALE] = sAnims_Meowstic, [SPECIES_HONEDGE] = sAnims_Honedge, [SPECIES_DOUBLADE] = sAnims_Doublade, - [SPECIES_AEGISLASH] = sAnims_Aegislash, + [SPECIES_AEGISLASH_SHIELD] = sAnims_AegislashShield, [SPECIES_SPRITZEE] = sAnims_Spritzee, [SPECIES_AROMATISSE] = sAnims_Aromatisse, [SPECIES_SWIRLIX] = sAnims_Swirlix, @@ -12608,17 +12599,17 @@ const union AnimCmd *const *const gMonFrontAnimsPtrTable[NUM_SPECIES + 1] = [SPECIES_KLEFKI] = sAnims_Klefki, [SPECIES_PHANTUMP] = sAnims_Phantump, [SPECIES_TREVENANT] = sAnims_Trevenant, - [SPECIES_PUMPKABOO] = sAnims_Pumpkaboo, - [SPECIES_GOURGEIST] = sAnims_Gourgeist, + [SPECIES_PUMPKABOO_AVERAGE] = sAnims_Pumpkaboo, + [SPECIES_GOURGEIST_AVERAGE] = sAnims_Gourgeist, [SPECIES_BERGMITE] = sAnims_Bergmite, [SPECIES_AVALUGG] = sAnims_Avalugg, [SPECIES_NOIBAT] = sAnims_Noibat, [SPECIES_NOIVERN] = sAnims_Noivern, - [SPECIES_XERNEAS] = sAnims_Xerneas, + [SPECIES_XERNEAS_NEUTRAL] = sAnims_Xerneas, [SPECIES_YVELTAL] = sAnims_Yveltal, - [SPECIES_ZYGARDE] = sAnims_Zygarde, + [SPECIES_ZYGARDE_50_AURA_BREAK] = sAnims_Zygarde50, [SPECIES_DIANCIE] = sAnims_Diancie, - [SPECIES_HOOPA] = sAnims_Hoopa, + [SPECIES_HOOPA_CONFINED] = sAnims_Hoopa, [SPECIES_VOLCANION] = sAnims_Volcanion, #endif #if P_GEN_7_POKEMON == TRUE @@ -12641,12 +12632,12 @@ const union AnimCmd *const *const gMonFrontAnimsPtrTable[NUM_SPECIES + 1] = [SPECIES_VIKAVOLT] = sAnims_Vikavolt, [SPECIES_CRABRAWLER] = sAnims_Crabrawler, [SPECIES_CRABOMINABLE] = sAnims_Crabominable, - [SPECIES_ORICORIO] = sAnims_Oricorio, + [SPECIES_ORICORIO_BAILE] = sAnims_Oricorio, [SPECIES_CUTIEFLY] = sAnims_Cutiefly, [SPECIES_RIBOMBEE] = sAnims_Ribombee, [SPECIES_ROCKRUFF] = sAnims_Rockruff, - [SPECIES_LYCANROC] = sAnims_Lycanroc, - [SPECIES_WISHIWASHI] = sAnims_Wishiwashi, + [SPECIES_LYCANROC_MIDDAY] = sAnims_LycanrocMidday, + [SPECIES_WISHIWASHI_SOLO] = sAnims_WishiwashiSolo, [SPECIES_MAREANIE] = sAnims_Mareanie, [SPECIES_TOXAPEX] = sAnims_Toxapex, [SPECIES_MUDBRAY] = sAnims_Mudbray, @@ -12673,12 +12664,12 @@ const union AnimCmd *const *const gMonFrontAnimsPtrTable[NUM_SPECIES + 1] = [SPECIES_PALOSSAND] = sAnims_Palossand, [SPECIES_PYUKUMUKU] = sAnims_Pyukumuku, [SPECIES_TYPE_NULL] = sAnims_TypeNull, - [SPECIES_SILVALLY] = sAnims_Silvally, - [SPECIES_MINIOR] = sAnims_Minior, + [SPECIES_SILVALLY_NORMAL] = sAnims_Silvally, + [SPECIES_MINIOR_METEOR_RED] = sAnims_MiniorMeteor, [SPECIES_KOMALA] = sAnims_Komala, [SPECIES_TURTONATOR] = sAnims_Turtonator, [SPECIES_TOGEDEMARU] = sAnims_Togedemaru, - [SPECIES_MIMIKYU] = sAnims_Mimikyu, + [SPECIES_MIMIKYU_DISGUISED] = sAnims_MimikyuDisguised, [SPECIES_BRUXISH] = sAnims_Bruxish, [SPECIES_DRAMPA] = sAnims_Drampa, [SPECIES_DHELMISE] = sAnims_Dhelmise, @@ -12751,13 +12742,13 @@ const union AnimCmd *const *const gMonFrontAnimsPtrTable[NUM_SPECIES + 1] = [SPECIES_ARROKUDA] = sAnims_Arrokuda, [SPECIES_BARRASKEWDA] = sAnims_Barraskewda, [SPECIES_TOXEL] = sAnims_Toxel, - [SPECIES_TOXTRICITY] = sAnims_Toxtricity, + [SPECIES_TOXTRICITY_AMPED] = sAnims_Toxtricity, [SPECIES_SIZZLIPEDE] = sAnims_Sizzlipede, [SPECIES_CENTISKORCH] = sAnims_Centiskorch, [SPECIES_CLOBBOPUS] = sAnims_Clobbopus, [SPECIES_GRAPPLOCT] = sAnims_Grapploct, - [SPECIES_SINISTEA] = sAnims_Sinistea, - [SPECIES_POLTEAGEIST] = sAnims_Polteageist, + [SPECIES_SINISTEA_PHONY] = sAnims_Sinistea, + [SPECIES_POLTEAGEIST_PHONY] = sAnims_Polteageist, [SPECIES_HATENNA] = sAnims_Hatenna, [SPECIES_HATTREM] = sAnims_Hattrem, [SPECIES_HATTERENE] = sAnims_Hatterene, @@ -12771,15 +12762,15 @@ const union AnimCmd *const *const gMonFrontAnimsPtrTable[NUM_SPECIES + 1] = [SPECIES_MR_RIME] = sAnims_MrRime, [SPECIES_RUNERIGUS] = sAnims_Runerigus, [SPECIES_MILCERY] = sAnims_Milcery, - [SPECIES_ALCREMIE] = sAnims_Alcremie, + [SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM] = sAnims_Alcremie, [SPECIES_FALINKS] = sAnims_Falinks, [SPECIES_PINCURCHIN] = sAnims_Pincurchin, [SPECIES_SNOM] = sAnims_Snom, [SPECIES_FROSMOTH] = sAnims_Frosmoth, [SPECIES_STONJOURNER] = sAnims_Stonjourner, - [SPECIES_EISCUE] = sAnims_Eiscue, - [SPECIES_INDEEDEE] = sAnims_Indeedee, - [SPECIES_MORPEKO] = sAnims_Morpeko, + [SPECIES_EISCUE_ICE_FACE] = sAnims_Eiscue, + [SPECIES_INDEEDEE_MALE] = sAnims_Indeedee, + [SPECIES_MORPEKO_FULL_BELLY] = sAnims_Morpeko, [SPECIES_CUFANT] = sAnims_Cufant, [SPECIES_COPPERAJAH] = sAnims_Copperajah, [SPECIES_DRACOZOLT] = sAnims_Dracozolt, @@ -12790,11 +12781,11 @@ const union AnimCmd *const *const gMonFrontAnimsPtrTable[NUM_SPECIES + 1] = [SPECIES_DREEPY] = sAnims_Dreepy, [SPECIES_DRAKLOAK] = sAnims_Drakloak, [SPECIES_DRAGAPULT] = sAnims_Dragapult, - [SPECIES_ZACIAN] = sAnims_Zacian, - [SPECIES_ZAMAZENTA] = sAnims_Zamazenta, + [SPECIES_ZACIAN_HERO_OF_MANY_BATTLES] = sAnims_Zacian, + [SPECIES_ZAMAZENTA_HERO_OF_MANY_BATTLES] = sAnims_Zamazenta, [SPECIES_ETERNATUS] = sAnims_Eternatus, [SPECIES_KUBFU] = sAnims_Kubfu, - [SPECIES_URSHIFU] = sAnims_Urshifu, + [SPECIES_URSHIFU_SINGLE_STRIKE_STYLE] = sAnims_Urshifu, [SPECIES_ZARUDE] = sAnims_Zarude, [SPECIES_REGIELEKI] = sAnims_Regieleki, [SPECIES_REGIDRAGO] = sAnims_Regidrago, @@ -12804,10 +12795,10 @@ const union AnimCmd *const *const gMonFrontAnimsPtrTable[NUM_SPECIES + 1] = [SPECIES_WYRDEER] = sAnims_Wyrdeer, [SPECIES_KLEAVOR] = sAnims_Kleavor, [SPECIES_URSALUNA] = sAnims_Ursaluna, - [SPECIES_BASCULEGION] = sAnims_Basculegion, + [SPECIES_BASCULEGION_MALE] = sAnims_Basculegion, [SPECIES_SNEASLER] = sAnims_Sneasler, [SPECIES_OVERQWIL] = sAnims_Overqwil, - [SPECIES_ENAMORUS] = sAnims_Enamorus, + [SPECIES_ENAMORUS_INCARNATE] = sAnims_EnamorusIncarnate, #endif // Mega/Primal Forms [SPECIES_VENUSAUR_MEGA] = sAnims_VenusaurMega, @@ -12903,7 +12894,7 @@ const union AnimCmd *const *const gMonFrontAnimsPtrTable[NUM_SPECIES + 1] = [SPECIES_LINOONE_GALARIAN] = sAnims_LinooneGalarian, #if P_GEN_5_POKEMON == TRUE [SPECIES_DARUMAKA_GALARIAN] = sAnims_DarumakaGalarian, - [SPECIES_DARMANITAN_GALARIAN] = sAnims_DarmanitanGalarian, + [SPECIES_DARMANITAN_GALARIAN_STANDARD_MODE] = sAnims_DarmanitanGalarianStandardMode, [SPECIES_YAMASK_GALARIAN] = sAnims_YamaskGalarian, [SPECIES_STUNFISK_GALARIAN] = sAnims_StunfiskGalarian, #endif @@ -13018,7 +13009,7 @@ const union AnimCmd *const *const gMonFrontAnimsPtrTable[NUM_SPECIES + 1] = [SPECIES_BASCULIN_BLUE_STRIPED] = sAnims_Basculin, [SPECIES_BASCULIN_WHITE_STRIPED] = sAnims_Basculin, [SPECIES_DARMANITAN_ZEN_MODE] = sAnims_DarmanitanZenMode, - [SPECIES_DARMANITAN_ZEN_MODE_GALARIAN] = sAnims_DarmanitanZenModeGalarian, + [SPECIES_DARMANITAN_GALARIAN_ZEN_MODE] = sAnims_DarmanitanGalarianZenMode, [SPECIES_DEERLING_SUMMER] = sAnims_Deerling, [SPECIES_DEERLING_AUTUMN] = sAnims_Deerling, [SPECIES_DEERLING_WINTER] = sAnims_Deerling, @@ -13090,9 +13081,9 @@ const union AnimCmd *const *const gMonFrontAnimsPtrTable[NUM_SPECIES + 1] = [SPECIES_GOURGEIST_LARGE] = sAnims_Gourgeist, [SPECIES_GOURGEIST_SUPER] = sAnims_Gourgeist, [SPECIES_XERNEAS_ACTIVE] = sAnims_Xerneas, - [SPECIES_ZYGARDE_10] = sAnims_Zygarde10, + [SPECIES_ZYGARDE_10_AURA_BREAK] = sAnims_Zygarde10, [SPECIES_ZYGARDE_10_POWER_CONSTRUCT] = sAnims_Zygarde10, - [SPECIES_ZYGARDE_50_POWER_CONSTRUCT] = sAnims_Zygarde, + [SPECIES_ZYGARDE_50_POWER_CONSTRUCT] = sAnims_Zygarde50, [SPECIES_ZYGARDE_COMPLETE] = sAnims_ZygardeComplete, [SPECIES_HOOPA_UNBOUND] = sAnims_HoopaUnbound, #endif @@ -13121,19 +13112,19 @@ const union AnimCmd *const *const gMonFrontAnimsPtrTable[NUM_SPECIES + 1] = [SPECIES_SILVALLY_DRAGON] = sAnims_Silvally, [SPECIES_SILVALLY_DARK] = sAnims_Silvally, [SPECIES_SILVALLY_FAIRY] = sAnims_Silvally, - [SPECIES_MINIOR_METEOR_ORANGE] = sAnims_Minior, - [SPECIES_MINIOR_METEOR_YELLOW] = sAnims_Minior, - [SPECIES_MINIOR_METEOR_GREEN] = sAnims_Minior, - [SPECIES_MINIOR_METEOR_BLUE] = sAnims_Minior, - [SPECIES_MINIOR_METEOR_INDIGO] = sAnims_Minior, - [SPECIES_MINIOR_METEOR_VIOLET] = sAnims_Minior, - [SPECIES_MINIOR_CORE_RED] = sAnims_Minior, - [SPECIES_MINIOR_CORE_ORANGE] = sAnims_Minior, - [SPECIES_MINIOR_CORE_YELLOW] = sAnims_Minior, - [SPECIES_MINIOR_CORE_GREEN] = sAnims_Minior, - [SPECIES_MINIOR_CORE_BLUE] = sAnims_Minior, - [SPECIES_MINIOR_CORE_INDIGO] = sAnims_Minior, - [SPECIES_MINIOR_CORE_VIOLET] = sAnims_Minior, + [SPECIES_MINIOR_METEOR_ORANGE] = sAnims_MiniorMeteor, + [SPECIES_MINIOR_METEOR_YELLOW] = sAnims_MiniorMeteor, + [SPECIES_MINIOR_METEOR_GREEN] = sAnims_MiniorMeteor, + [SPECIES_MINIOR_METEOR_BLUE] = sAnims_MiniorMeteor, + [SPECIES_MINIOR_METEOR_INDIGO] = sAnims_MiniorMeteor, + [SPECIES_MINIOR_METEOR_VIOLET] = sAnims_MiniorMeteor, + [SPECIES_MINIOR_CORE_RED] = sAnims_MiniorMeteor, + [SPECIES_MINIOR_CORE_ORANGE] = sAnims_MiniorMeteor, + [SPECIES_MINIOR_CORE_YELLOW] = sAnims_MiniorMeteor, + [SPECIES_MINIOR_CORE_GREEN] = sAnims_MiniorMeteor, + [SPECIES_MINIOR_CORE_BLUE] = sAnims_MiniorMeteor, + [SPECIES_MINIOR_CORE_INDIGO] = sAnims_MiniorMeteor, + [SPECIES_MINIOR_CORE_VIOLET] = sAnims_MiniorMeteor, [SPECIES_MIMIKYU_BUSTED] = sAnims_MimikyuBusted, [SPECIES_NECROZMA_DUSK_MANE] = sAnims_Necrozma, [SPECIES_NECROZMA_DAWN_WINGS] = sAnims_Necrozma, @@ -13146,14 +13137,14 @@ const union AnimCmd *const *const gMonFrontAnimsPtrTable[NUM_SPECIES + 1] = [SPECIES_TOXTRICITY_LOW_KEY] = sAnims_Toxtricity, [SPECIES_SINISTEA_ANTIQUE] = sAnims_Sinistea, [SPECIES_POLTEAGEIST_ANTIQUE] = sAnims_Polteageist, - [SPECIES_ALCREMIE_RUBY_CREAM] = sAnims_Alcremie, - [SPECIES_ALCREMIE_MATCHA_CREAM] = sAnims_Alcremie, - [SPECIES_ALCREMIE_MINT_CREAM] = sAnims_Alcremie, - [SPECIES_ALCREMIE_LEMON_CREAM] = sAnims_Alcremie, - [SPECIES_ALCREMIE_SALTED_CREAM] = sAnims_Alcremie, - [SPECIES_ALCREMIE_RUBY_SWIRL] = sAnims_Alcremie, - [SPECIES_ALCREMIE_CARAMEL_SWIRL] = sAnims_Alcremie, - [SPECIES_ALCREMIE_RAINBOW_SWIRL] = sAnims_Alcremie, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL] = sAnims_Alcremie, + [SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL] = sAnims_Alcremie, + [SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL] = sAnims_Alcremie, [SPECIES_EISCUE_NOICE_FACE] = sAnims_Eiscue, [SPECIES_INDEEDEE_FEMALE] = sAnims_Indeedee, [SPECIES_MORPEKO_HANGRY] = sAnims_Morpeko, @@ -13204,7 +13195,7 @@ const union AnimCmd *const *const gMonFrontAnimsPtrTable[NUM_SPECIES + 1] = [SPECIES_ALCREMIE_GIGANTAMAX] = sAnims_AlcremieGigantamax, [SPECIES_COPPERAJAH_GIGANTAMAX] = sAnims_CopperajahGigantamax, [SPECIES_DURALUDON_GIGANTAMAX] = sAnims_DuraludonGigantamax, - [SPECIES_URSHIFU_GIGANTAMAX] = sAnims_UrshifuGigantamax, + [SPECIES_URSHIFU_SINGLE_STRIKE_STYLE_GIGANTAMAX] = sAnims_UrshifuSingleStrikeStyleGigantamax, [SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX] = sAnims_UrshifuRapidStrikeStyleGigantamax, #endif [SPECIES_EGG] = sAnims_Egg, diff --git a/src/data/pokemon_graphics/front_pic_coordinates.h b/src/data/pokemon_graphics/front_pic_coordinates.h index 22fcf27c5c..e06e8f1e7b 100644 --- a/src/data/pokemon_graphics/front_pic_coordinates.h +++ b/src/data/pokemon_graphics/front_pic_coordinates.h @@ -364,7 +364,7 @@ const struct MonCoords gMonFrontPicCoords[NUM_SPECIES + 1] = [SPECIES_ARON] = { .size = MON_COORDS_SIZE(32, 40), .y_offset = 14 }, [SPECIES_LAIRON] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 8 }, [SPECIES_AGGRON] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_CASTFORM] = { .size = MON_COORDS_SIZE(24, 32), .y_offset = 17 }, + [SPECIES_CASTFORM_NORMAL] = { .size = MON_COORDS_SIZE(24, 32), .y_offset = 17 }, [SPECIES_VOLBEAT] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 8 }, [SPECIES_ILLUMISE] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 10 }, [SPECIES_LILEEP] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 7 }, @@ -389,7 +389,7 @@ const struct MonCoords gMonFrontPicCoords[NUM_SPECIES + 1] = [SPECIES_LATIAS] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 8 }, [SPECIES_LATIOS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_JIRACHI] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 13 }, - [SPECIES_DEOXYS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_DEOXYS_NORMAL] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_CHIMECHO] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 11 }, #if P_GEN_4_POKEMON == TRUE [SPECIES_TURTWIG] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 11 }, @@ -417,8 +417,8 @@ const struct MonCoords gMonFrontPicCoords[NUM_SPECIES + 1] = [SPECIES_RAMPARDOS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, [SPECIES_SHIELDON] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 15 }, [SPECIES_BASTIODON] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_BURMY] = { .size = MON_COORDS_SIZE(32, 56), .y_offset = 13 }, - [SPECIES_WORMADAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 10 }, + [SPECIES_BURMY_PLANT_CLOAK] = { .size = MON_COORDS_SIZE(32, 56), .y_offset = 13 }, + [SPECIES_WORMADAM_PLANT_CLOAK] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 10 }, [SPECIES_MOTHIM] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 12 }, [SPECIES_COMBEE] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 16 }, [SPECIES_VESPIQUEN] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 4 }, @@ -426,9 +426,9 @@ const struct MonCoords gMonFrontPicCoords[NUM_SPECIES + 1] = [SPECIES_BUIZEL] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 10 }, [SPECIES_FLOATZEL] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, [SPECIES_CHERUBI] = { .size = MON_COORDS_SIZE(40, 32), .y_offset = 16 }, - [SPECIES_CHERRIM] = { .size = MON_COORDS_SIZE(32, 48), .y_offset = 8 }, - [SPECIES_SHELLOS] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 13 }, - [SPECIES_GASTRODON] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 8 }, + [SPECIES_CHERRIM_OVERCAST] = { .size = MON_COORDS_SIZE(32, 48), .y_offset = 8 }, + [SPECIES_SHELLOS_WEST_SEA] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 13 }, + [SPECIES_GASTRODON_WEST_SEA] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 8 }, [SPECIES_AMBIPOM] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, [SPECIES_DRIFLOON] = { .size = MON_COORDS_SIZE(32, 56), .y_offset = 7 }, [SPECIES_DRIFBLIM] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 7 }, @@ -492,13 +492,13 @@ const struct MonCoords gMonFrontPicCoords[NUM_SPECIES + 1] = [SPECIES_PALKIA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_HEATRAN] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, [SPECIES_REGIGIGAS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 4 }, - [SPECIES_GIRATINA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_GIRATINA_ALTERED] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_CRESSELIA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, [SPECIES_PHIONE] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 8 }, [SPECIES_MANAPHY] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 10 }, [SPECIES_DARKRAI] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - [SPECIES_SHAYMIN] = { .size = MON_COORDS_SIZE(40, 32), .y_offset = 16 }, - [SPECIES_ARCEUS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_SHAYMIN_LAND] = { .size = MON_COORDS_SIZE(40, 32), .y_offset = 16 }, + [SPECIES_ARCEUS_NORMAL] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, #endif #if P_GEN_5_POKEMON == TRUE [SPECIES_VICTINI] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 10 }, @@ -557,12 +557,12 @@ const struct MonCoords gMonFrontPicCoords[NUM_SPECIES + 1] = [SPECIES_WHIMSICOTT] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 6 }, [SPECIES_PETILIL] = { .size = MON_COORDS_SIZE(32, 48), .y_offset = 12 }, [SPECIES_LILLIGANT] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 1 }, - [SPECIES_BASCULIN] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 13 }, + [SPECIES_BASCULIN_RED_STRIPED] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 13 }, [SPECIES_SANDILE] = { .size = MON_COORDS_SIZE(48, 32), .y_offset = 18 }, [SPECIES_KROKOROK] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, [SPECIES_KROOKODILE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_DARUMAKA] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 13 }, - [SPECIES_DARMANITAN] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 2 }, + [SPECIES_DARMANITAN_STANDARD_MODE] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 2 }, [SPECIES_MARACTUS] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, [SPECIES_DWEBBLE] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 14 }, [SPECIES_CRUSTLE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, @@ -592,8 +592,8 @@ const struct MonCoords gMonFrontPicCoords[NUM_SPECIES + 1] = [SPECIES_VANILLITE] = { .size = MON_COORDS_SIZE(32, 40), .y_offset = 14 }, [SPECIES_VANILLISH] = { .size = MON_COORDS_SIZE(32, 56), .y_offset = 5 }, [SPECIES_VANILLUXE] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 4 }, - [SPECIES_DEERLING] = { .size = MON_COORDS_SIZE(32, 48), .y_offset = 11 }, - [SPECIES_SAWSBUCK] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, + [SPECIES_DEERLING_SPRING] = { .size = MON_COORDS_SIZE(32, 48), .y_offset = 11 }, + [SPECIES_SAWSBUCK_SPRING] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, [SPECIES_EMOLGA] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 17 }, [SPECIES_KARRABLAST] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 13 }, [SPECIES_ESCAVALIER] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, @@ -648,14 +648,14 @@ const struct MonCoords gMonFrontPicCoords[NUM_SPECIES + 1] = [SPECIES_COBALION] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 0 }, [SPECIES_TERRAKION] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, [SPECIES_VIRIZION] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 2 }, - [SPECIES_TORNADUS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, - [SPECIES_THUNDURUS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, + [SPECIES_TORNADUS_INCARNATE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, + [SPECIES_THUNDURUS_INCARNATE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, [SPECIES_RESHIRAM] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, [SPECIES_ZEKROM] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_LANDORUS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, + [SPECIES_LANDORUS_INCARNATE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, [SPECIES_KYUREM] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 6 }, - [SPECIES_KELDEO] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 5 }, - [SPECIES_MELOETTA] = { .size = MON_COORDS_SIZE(32, 48), .y_offset = 9 }, + [SPECIES_KELDEO_ORDINARY] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 5 }, + [SPECIES_MELOETTA_ARIA] = { .size = MON_COORDS_SIZE(32, 48), .y_offset = 9 }, [SPECIES_GENESECT] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, #endif #if P_GEN_6_POKEMON == TRUE @@ -675,22 +675,22 @@ const struct MonCoords gMonFrontPicCoords[NUM_SPECIES + 1] = [SPECIES_TALONFLAME] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, [SPECIES_SCATTERBUG] = { .size = MON_COORDS_SIZE(32, 48), .y_offset = 13 }, [SPECIES_SPEWPA] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 11 }, - [SPECIES_VIVILLON] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_VIVILLON_ICY_SNOW] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_LITLEO] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 10 }, [SPECIES_PYROAR] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_FLABEBE] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 6 }, - [SPECIES_FLOETTE] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 3 }, - [SPECIES_FLORGES] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_FLABEBE_RED_FLOWER] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 6 }, + [SPECIES_FLOETTE_RED_FLOWER] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 3 }, + [SPECIES_FLORGES_RED_FLOWER] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_SKIDDO] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 7 }, [SPECIES_GOGOAT] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 2 }, [SPECIES_PANCHAM] = { .size = MON_COORDS_SIZE(32, 48), .y_offset = 12 }, [SPECIES_PANGORO] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_FURFROU] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 3 }, + [SPECIES_FURFROU_NATURAL] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 3 }, [SPECIES_ESPURR] = { .size = MON_COORDS_SIZE(32, 48), .y_offset = 10 }, - [SPECIES_MEOWSTIC] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 3 }, + [SPECIES_MEOWSTIC_MALE] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 3 }, [SPECIES_HONEDGE] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, [SPECIES_DOUBLADE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 5 }, - [SPECIES_AEGISLASH] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, + [SPECIES_AEGISLASH_SHIELD] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, [SPECIES_SPRITZEE] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 12 }, [SPECIES_AROMATISSE] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 4 }, [SPECIES_SWIRLIX] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 14 }, @@ -719,17 +719,17 @@ const struct MonCoords gMonFrontPicCoords[NUM_SPECIES + 1] = [SPECIES_KLEFKI] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 4 }, [SPECIES_PHANTUMP] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 11 }, [SPECIES_TREVENANT] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, - [SPECIES_PUMPKABOO] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 13 }, - [SPECIES_GOURGEIST] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 4 }, + [SPECIES_PUMPKABOO_AVERAGE] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 13 }, + [SPECIES_GOURGEIST_AVERAGE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 4 }, [SPECIES_BERGMITE] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 14 }, [SPECIES_AVALUGG] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, [SPECIES_NOIBAT] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 8 }, [SPECIES_NOIVERN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - [SPECIES_XERNEAS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_XERNEAS_NEUTRAL] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_YVELTAL] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_ZYGARDE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_ZYGARDE_50_AURA_BREAK] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_DIANCIE] = { .size = MON_COORDS_SIZE(40, 64), .y_offset = 1 }, - [SPECIES_HOOPA] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 11 }, + [SPECIES_HOOPA_CONFINED] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 11 }, [SPECIES_VOLCANION] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, #endif #if P_GEN_7_POKEMON == TRUE @@ -752,12 +752,12 @@ const struct MonCoords gMonFrontPicCoords[NUM_SPECIES + 1] = [SPECIES_VIKAVOLT] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, [SPECIES_CRABRAWLER] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, [SPECIES_CRABOMINABLE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_ORICORIO] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 2 }, + [SPECIES_ORICORIO_BAILE] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 2 }, [SPECIES_CUTIEFLY] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 16 }, [SPECIES_RIBOMBEE] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 5 }, [SPECIES_ROCKRUFF] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 11 }, - [SPECIES_LYCANROC] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_WISHIWASHI] = { .size = MON_COORDS_SIZE(40, 24), .y_offset = 15 }, + [SPECIES_LYCANROC_MIDDAY] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, + [SPECIES_WISHIWASHI_SOLO] = { .size = MON_COORDS_SIZE(40, 24), .y_offset = 15 }, [SPECIES_MAREANIE] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 14 }, [SPECIES_TOXAPEX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, [SPECIES_MUDBRAY] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 7 }, @@ -784,12 +784,12 @@ const struct MonCoords gMonFrontPicCoords[NUM_SPECIES + 1] = [SPECIES_PALOSSAND] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_PYUKUMUKU] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 15 }, [SPECIES_TYPE_NULL] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_SILVALLY] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_MINIOR] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 14 }, + [SPECIES_SILVALLY_NORMAL] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_MINIOR_METEOR_RED] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 14 }, [SPECIES_KOMALA] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 12 }, [SPECIES_TURTONATOR] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_TOGEDEMARU] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 12 }, - [SPECIES_MIMIKYU] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 12 }, + [SPECIES_MIMIKYU_DISGUISED] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 12 }, [SPECIES_BRUXISH] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 15 }, [SPECIES_DRAMPA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_DHELMISE] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 1 }, @@ -862,13 +862,13 @@ const struct MonCoords gMonFrontPicCoords[NUM_SPECIES + 1] = [SPECIES_ARROKUDA] = { .size = MON_COORDS_SIZE(56, 32), .y_offset = 13 }, [SPECIES_BARRASKEWDA] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 8 }, [SPECIES_TOXEL] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 11 }, - [SPECIES_TOXTRICITY] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 1 }, + [SPECIES_TOXTRICITY_AMPED] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 1 }, [SPECIES_SIZZLIPEDE] = { .size = MON_COORDS_SIZE(48, 32), .y_offset = 17 }, [SPECIES_CENTISKORCH] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, [SPECIES_CLOBBOPUS] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 15 }, [SPECIES_GRAPPLOCT] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 5 }, - [SPECIES_SINISTEA] = { .size = MON_COORDS_SIZE(40, 32), .y_offset = 17 }, - [SPECIES_POLTEAGEIST] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 11 }, + [SPECIES_SINISTEA_PHONY] = { .size = MON_COORDS_SIZE(40, 32), .y_offset = 17 }, + [SPECIES_POLTEAGEIST_PHONY] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 11 }, [SPECIES_HATENNA] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 12 }, [SPECIES_HATTREM] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 8 }, [SPECIES_HATTERENE] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 0 }, @@ -882,15 +882,15 @@ const struct MonCoords gMonFrontPicCoords[NUM_SPECIES + 1] = [SPECIES_MR_RIME] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 4 }, [SPECIES_RUNERIGUS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, [SPECIES_MILCERY] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 15 }, - [SPECIES_ALCREMIE] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, [SPECIES_FALINKS] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 8 }, [SPECIES_PINCURCHIN] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 15 }, [SPECIES_SNOM] = { .size = MON_COORDS_SIZE(40, 32), .y_offset = 20 }, [SPECIES_FROSMOTH] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, [SPECIES_STONJOURNER] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 2 }, - [SPECIES_EISCUE] = { .size = MON_COORDS_SIZE(40, 64), .y_offset = 0 }, - [SPECIES_INDEEDEE] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 9 }, - [SPECIES_MORPEKO] = { .size = MON_COORDS_SIZE(32, 40), .y_offset = 14 }, + [SPECIES_EISCUE_ICE_FACE] = { .size = MON_COORDS_SIZE(40, 64), .y_offset = 0 }, + [SPECIES_INDEEDEE_MALE] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 9 }, + [SPECIES_MORPEKO_FULL_BELLY] = { .size = MON_COORDS_SIZE(32, 40), .y_offset = 14 }, [SPECIES_CUFANT] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 11 }, [SPECIES_COPPERAJAH] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, [SPECIES_DRACOZOLT] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, @@ -901,11 +901,11 @@ const struct MonCoords gMonFrontPicCoords[NUM_SPECIES + 1] = [SPECIES_DREEPY] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 14 }, [SPECIES_DRAKLOAK] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, [SPECIES_DRAGAPULT] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_ZACIAN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - [SPECIES_ZAMAZENTA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_ZACIAN_HERO_OF_MANY_BATTLES] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, + [SPECIES_ZAMAZENTA_HERO_OF_MANY_BATTLES] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_ETERNATUS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, [SPECIES_KUBFU] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 8 }, - [SPECIES_URSHIFU] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, + [SPECIES_URSHIFU_SINGLE_STRIKE_STYLE] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, [SPECIES_ZARUDE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, [SPECIES_REGIELEKI] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, [SPECIES_REGIDRAGO] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, @@ -915,10 +915,10 @@ const struct MonCoords gMonFrontPicCoords[NUM_SPECIES + 1] = [SPECIES_WYRDEER] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_KLEAVOR] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, [SPECIES_URSALUNA] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 4 }, - [SPECIES_BASCULEGION] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_BASCULEGION_MALE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_SNEASLER] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_OVERQWIL] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_ENAMORUS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_ENAMORUS_INCARNATE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, #endif // Megas [SPECIES_VENUSAUR_MEGA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, @@ -1015,7 +1015,7 @@ const struct MonCoords gMonFrontPicCoords[NUM_SPECIES + 1] = [SPECIES_LINOONE_GALARIAN] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 13 }, #if P_GEN_5_POKEMON == TRUE [SPECIES_DARUMAKA_GALARIAN] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 15 }, - [SPECIES_DARMANITAN_GALARIAN] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, + [SPECIES_DARMANITAN_GALARIAN_STANDARD_MODE] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, [SPECIES_YAMASK_GALARIAN] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 13 }, [SPECIES_STUNFISK_GALARIAN] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 14 }, #endif @@ -1147,7 +1147,7 @@ const struct MonCoords gMonFrontPicCoords[NUM_SPECIES + 1] = [SPECIES_BASCULIN_WHITE_STRIPED] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 10 }, // Darmanitan [SPECIES_DARMANITAN_ZEN_MODE] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 14 }, - [SPECIES_DARMANITAN_ZEN_MODE_GALARIAN] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 2 }, + [SPECIES_DARMANITAN_GALARIAN_ZEN_MODE] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 2 }, // Deerling [SPECIES_DEERLING_SUMMER] = { .size = MON_COORDS_SIZE(32, 48), .y_offset = 11 }, [SPECIES_DEERLING_AUTUMN] = { .size = MON_COORDS_SIZE(32, 48), .y_offset = 11 }, @@ -1238,7 +1238,7 @@ const struct MonCoords gMonFrontPicCoords[NUM_SPECIES + 1] = // Xerneas [SPECIES_XERNEAS_ACTIVE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, // Zygarde - [SPECIES_ZYGARDE_10] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 2 }, + [SPECIES_ZYGARDE_10_AURA_BREAK] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 2 }, [SPECIES_ZYGARDE_10_POWER_CONSTRUCT] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 2 }, [SPECIES_ZYGARDE_50_POWER_CONSTRUCT] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_ZYGARDE_COMPLETE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, @@ -1309,14 +1309,14 @@ const struct MonCoords gMonFrontPicCoords[NUM_SPECIES + 1] = // Polteageist [SPECIES_POLTEAGEIST_ANTIQUE] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 11 }, // Alcremie - [SPECIES_ALCREMIE_RUBY_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, - [SPECIES_ALCREMIE_MATCHA_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, - [SPECIES_ALCREMIE_MINT_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, - [SPECIES_ALCREMIE_LEMON_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, - [SPECIES_ALCREMIE_SALTED_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, - [SPECIES_ALCREMIE_RUBY_SWIRL] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, - [SPECIES_ALCREMIE_CARAMEL_SWIRL] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, - [SPECIES_ALCREMIE_RAINBOW_SWIRL] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, // Eiscue [SPECIES_EISCUE_NOICE_FACE] = { .size = MON_COORDS_SIZE(40, 64), .y_offset = 0 }, // Indeedee @@ -1373,7 +1373,7 @@ const struct MonCoords gMonFrontPicCoords[NUM_SPECIES + 1] = [SPECIES_ALCREMIE_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_COPPERAJAH_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_DURALUDON_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_URSHIFU_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_URSHIFU_SINGLE_STRIKE_STYLE_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, #endif // Egg diff --git a/src/data/pokemon_graphics/front_pic_table.h b/src/data/pokemon_graphics/front_pic_table.h index 988fa7db06..33e82debfe 100644 --- a/src/data/pokemon_graphics/front_pic_table.h +++ b/src/data/pokemon_graphics/front_pic_table.h @@ -360,7 +360,7 @@ const struct CompressedSpriteSheet gMonFrontPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(ARON, gMonFrontPic_Aron), SPECIES_SPRITE(LAIRON, gMonFrontPic_Lairon), SPECIES_SPRITE(AGGRON, gMonFrontPic_Aggron), - SPECIES_SPRITE(CASTFORM, gMonFrontPic_Castform), + SPECIES_SPRITE(CASTFORM_NORMAL, gMonFrontPic_CastformNormal), SPECIES_SPRITE(VOLBEAT, gMonFrontPic_Volbeat), SPECIES_SPRITE(ILLUMISE, gMonFrontPic_Illumise), SPECIES_SPRITE(LILEEP, gMonFrontPic_Lileep), @@ -385,7 +385,7 @@ const struct CompressedSpriteSheet gMonFrontPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(LATIAS, gMonFrontPic_Latias), SPECIES_SPRITE(LATIOS, gMonFrontPic_Latios), SPECIES_SPRITE(JIRACHI, gMonFrontPic_Jirachi), - SPECIES_SPRITE(DEOXYS, gMonFrontPic_Deoxys), + SPECIES_SPRITE(DEOXYS_NORMAL, gMonFrontPic_DeoxysNormal), SPECIES_SPRITE(CHIMECHO, gMonFrontPic_Chimecho), #if P_GEN_4_POKEMON == TRUE SPECIES_SPRITE(TURTWIG, gMonFrontPic_Turtwig), @@ -413,8 +413,8 @@ const struct CompressedSpriteSheet gMonFrontPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(RAMPARDOS, gMonFrontPic_Rampardos), SPECIES_SPRITE(SHIELDON, gMonFrontPic_Shieldon), SPECIES_SPRITE(BASTIODON, gMonFrontPic_Bastiodon), - SPECIES_SPRITE(BURMY, gMonFrontPic_Burmy), - SPECIES_SPRITE(WORMADAM, gMonFrontPic_Wormadam), + SPECIES_SPRITE(BURMY_PLANT_CLOAK, gMonFrontPic_BurmyPlantCloak), + SPECIES_SPRITE(WORMADAM_PLANT_CLOAK, gMonFrontPic_WormadamPlantCloak), SPECIES_SPRITE(MOTHIM, gMonFrontPic_Mothim), SPECIES_SPRITE(COMBEE, gMonFrontPic_Combee), SPECIES_SPRITE(VESPIQUEN, gMonFrontPic_Vespiquen), @@ -422,9 +422,9 @@ const struct CompressedSpriteSheet gMonFrontPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(BUIZEL, gMonFrontPic_Buizel), SPECIES_SPRITE(FLOATZEL, gMonFrontPic_Floatzel), SPECIES_SPRITE(CHERUBI, gMonFrontPic_Cherubi), - SPECIES_SPRITE(CHERRIM, gMonFrontPic_Cherrim), - SPECIES_SPRITE(SHELLOS, gMonFrontPic_Shellos), - SPECIES_SPRITE(GASTRODON, gMonFrontPic_Gastrodon), + SPECIES_SPRITE(CHERRIM_OVERCAST, gMonFrontPic_CherrimOvercast), + SPECIES_SPRITE(SHELLOS_WEST_SEA, gMonFrontPic_ShellosWestSea), + SPECIES_SPRITE(GASTRODON_WEST_SEA, gMonFrontPic_GastrodonWestSea), SPECIES_SPRITE(AMBIPOM, gMonFrontPic_Ambipom), SPECIES_SPRITE(DRIFLOON, gMonFrontPic_Drifloon), SPECIES_SPRITE(DRIFBLIM, gMonFrontPic_Drifblim), @@ -488,12 +488,12 @@ const struct CompressedSpriteSheet gMonFrontPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(PALKIA, gMonFrontPic_Palkia), SPECIES_SPRITE(HEATRAN, gMonFrontPic_Heatran), SPECIES_SPRITE(REGIGIGAS, gMonFrontPic_Regigigas), - SPECIES_SPRITE(GIRATINA, gMonFrontPic_Giratina), + SPECIES_SPRITE(GIRATINA_ALTERED, gMonFrontPic_GiratinaAltered), SPECIES_SPRITE(CRESSELIA, gMonFrontPic_Cresselia), SPECIES_SPRITE(PHIONE, gMonFrontPic_Phione), SPECIES_SPRITE(MANAPHY, gMonFrontPic_Manaphy), SPECIES_SPRITE(DARKRAI, gMonFrontPic_Darkrai), - SPECIES_SPRITE(SHAYMIN, gMonFrontPic_Shaymin), + SPECIES_SPRITE(SHAYMIN_LAND, gMonFrontPic_ShayminLand), SPECIES_SPRITE(ARCEUS, gMonFrontPic_Arceus), #endif #if P_GEN_5_POKEMON == TRUE @@ -553,12 +553,12 @@ const struct CompressedSpriteSheet gMonFrontPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(WHIMSICOTT, gMonFrontPic_Whimsicott), SPECIES_SPRITE(PETILIL, gMonFrontPic_Petilil), SPECIES_SPRITE(LILLIGANT, gMonFrontPic_Lilligant), - SPECIES_SPRITE(BASCULIN, gMonFrontPic_Basculin), + SPECIES_SPRITE(BASCULIN, gMonFrontPic_BasculinRedStriped), SPECIES_SPRITE(SANDILE, gMonFrontPic_Sandile), SPECIES_SPRITE(KROKOROK, gMonFrontPic_Krokorok), SPECIES_SPRITE(KROOKODILE, gMonFrontPic_Krookodile), SPECIES_SPRITE(DARUMAKA, gMonFrontPic_Darumaka), - SPECIES_SPRITE(DARMANITAN, gMonFrontPic_Darmanitan), + SPECIES_SPRITE(DARMANITAN_STANDARD_MODE, gMonFrontPic_DarmanitanStandardMode), SPECIES_SPRITE(MARACTUS, gMonFrontPic_Maractus), SPECIES_SPRITE(DWEBBLE, gMonFrontPic_Dwebble), SPECIES_SPRITE(CRUSTLE, gMonFrontPic_Crustle), @@ -588,8 +588,8 @@ const struct CompressedSpriteSheet gMonFrontPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(VANILLITE, gMonFrontPic_Vanillite), SPECIES_SPRITE(VANILLISH, gMonFrontPic_Vanillish), SPECIES_SPRITE(VANILLUXE, gMonFrontPic_Vanilluxe), - SPECIES_SPRITE(DEERLING, gMonFrontPic_Deerling), - SPECIES_SPRITE(SAWSBUCK, gMonFrontPic_Sawsbuck), + SPECIES_SPRITE(DEERLING_SPRING, gMonFrontPic_Deerling), + SPECIES_SPRITE(SAWSBUCK_SPRING, gMonFrontPic_SawsbuckSpring), SPECIES_SPRITE(EMOLGA, gMonFrontPic_Emolga), SPECIES_SPRITE(KARRABLAST, gMonFrontPic_Karrablast), SPECIES_SPRITE(ESCAVALIER, gMonFrontPic_Escavalier), @@ -644,14 +644,14 @@ const struct CompressedSpriteSheet gMonFrontPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(COBALION, gMonFrontPic_Cobalion), SPECIES_SPRITE(TERRAKION, gMonFrontPic_Terrakion), SPECIES_SPRITE(VIRIZION, gMonFrontPic_Virizion), - SPECIES_SPRITE(TORNADUS, gMonFrontPic_Tornadus), - SPECIES_SPRITE(THUNDURUS, gMonFrontPic_Thundurus), + SPECIES_SPRITE(TORNADUS_INCARNATE, gMonFrontPic_TornadusIncarnate), + SPECIES_SPRITE(THUNDURUS_INCARNATE, gMonFrontPic_ThundurusIncarnate), SPECIES_SPRITE(RESHIRAM, gMonFrontPic_Reshiram), SPECIES_SPRITE(ZEKROM, gMonFrontPic_Zekrom), - SPECIES_SPRITE(LANDORUS, gMonFrontPic_Landorus), + SPECIES_SPRITE(LANDORUS_INCARNATE, gMonFrontPic_LandorusIncarnate), SPECIES_SPRITE(KYUREM, gMonFrontPic_Kyurem), - SPECIES_SPRITE(KELDEO, gMonFrontPic_Keldeo), - SPECIES_SPRITE(MELOETTA, gMonFrontPic_Meloetta), + SPECIES_SPRITE(KELDEO_ORDINARY, gMonFrontPic_KeldeoOrdinary), + SPECIES_SPRITE(MELOETTA, gMonFrontPic_MeloettaAria), SPECIES_SPRITE(GENESECT, gMonFrontPic_Genesect), #endif #if P_GEN_6_POKEMON == TRUE @@ -671,22 +671,22 @@ const struct CompressedSpriteSheet gMonFrontPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(TALONFLAME, gMonFrontPic_Talonflame), SPECIES_SPRITE(SCATTERBUG, gMonFrontPic_Scatterbug), SPECIES_SPRITE(SPEWPA, gMonFrontPic_Spewpa), - SPECIES_SPRITE(VIVILLON, gMonFrontPic_Vivillon), + SPECIES_SPRITE(VIVILLON_ICY_SNOW, gMonFrontPic_VivillonIcySnow), SPECIES_SPRITE(LITLEO, gMonFrontPic_Litleo), SPECIES_SPRITE(PYROAR, gMonFrontPic_Pyroar), - SPECIES_SPRITE(FLABEBE, gMonFrontPic_Flabebe), - SPECIES_SPRITE(FLOETTE, gMonFrontPic_Floette), - SPECIES_SPRITE(FLORGES, gMonFrontPic_Florges), + SPECIES_SPRITE(FLABEBE_RED_FLOWER, gMonFrontPic_Flabebe), + SPECIES_SPRITE(FLOETTE_RED_FLOWER, gMonFrontPic_Floette), + SPECIES_SPRITE(FLORGES_RED_FLOWER, gMonFrontPic_Florges), SPECIES_SPRITE(SKIDDO, gMonFrontPic_Skiddo), SPECIES_SPRITE(GOGOAT, gMonFrontPic_Gogoat), SPECIES_SPRITE(PANCHAM, gMonFrontPic_Pancham), SPECIES_SPRITE(PANGORO, gMonFrontPic_Pangoro), - SPECIES_SPRITE(FURFROU, gMonFrontPic_Furfrou), + SPECIES_SPRITE(FURFROU_NATURAL, gMonFrontPic_FurfrouNatural), SPECIES_SPRITE(ESPURR, gMonFrontPic_Espurr), - SPECIES_SPRITE(MEOWSTIC, gMonFrontPic_Meowstic), + SPECIES_SPRITE(MEOWSTIC_MALE, gMonFrontPic_MeowsticMale), SPECIES_SPRITE(HONEDGE, gMonFrontPic_Honedge), SPECIES_SPRITE(DOUBLADE, gMonFrontPic_Doublade), - SPECIES_SPRITE(AEGISLASH, gMonFrontPic_Aegislash), + SPECIES_SPRITE(AEGISLASH_SHIELD, gMonFrontPic_AegislashShield), SPECIES_SPRITE(SPRITZEE, gMonFrontPic_Spritzee), SPECIES_SPRITE(AROMATISSE, gMonFrontPic_Aromatisse), SPECIES_SPRITE(SWIRLIX, gMonFrontPic_Swirlix), @@ -715,17 +715,17 @@ const struct CompressedSpriteSheet gMonFrontPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(KLEFKI, gMonFrontPic_Klefki), SPECIES_SPRITE(PHANTUMP, gMonFrontPic_Phantump), SPECIES_SPRITE(TREVENANT, gMonFrontPic_Trevenant), - SPECIES_SPRITE(PUMPKABOO, gMonFrontPic_Pumpkaboo), - SPECIES_SPRITE(GOURGEIST, gMonFrontPic_Gourgeist), + SPECIES_SPRITE(PUMPKABOO_AVERAGE, gMonFrontPic_PumpkabooAverage), + SPECIES_SPRITE(GOURGEIST_AVERAGE, gMonFrontPic_GourgeistAverage), SPECIES_SPRITE(BERGMITE, gMonFrontPic_Bergmite), SPECIES_SPRITE(AVALUGG, gMonFrontPic_Avalugg), SPECIES_SPRITE(NOIBAT, gMonFrontPic_Noibat), SPECIES_SPRITE(NOIVERN, gMonFrontPic_Noivern), - SPECIES_SPRITE(XERNEAS, gMonFrontPic_Xerneas), + SPECIES_SPRITE(XERNEAS_NEUTRAL, gMonFrontPic_XerneasNeutral), SPECIES_SPRITE(YVELTAL, gMonFrontPic_Yveltal), - SPECIES_SPRITE(ZYGARDE, gMonFrontPic_Zygarde), + SPECIES_SPRITE(ZYGARDE_50_AURA_BREAK, gMonFrontPic_Zygarde50), SPECIES_SPRITE(DIANCIE, gMonFrontPic_Diancie), - SPECIES_SPRITE(HOOPA, gMonFrontPic_Hoopa), + SPECIES_SPRITE(HOOPA_CONFINED, gMonFrontPic_HoopaConfined), SPECIES_SPRITE(VOLCANION, gMonFrontPic_Volcanion), #endif #if P_GEN_7_POKEMON == TRUE @@ -748,12 +748,12 @@ const struct CompressedSpriteSheet gMonFrontPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(VIKAVOLT, gMonFrontPic_Vikavolt), SPECIES_SPRITE(CRABRAWLER, gMonFrontPic_Crabrawler), SPECIES_SPRITE(CRABOMINABLE, gMonFrontPic_Crabominable), - SPECIES_SPRITE(ORICORIO, gMonFrontPic_Oricorio), + SPECIES_SPRITE(ORICORIO_BAILE, gMonFrontPic_OricorioBaile), SPECIES_SPRITE(CUTIEFLY, gMonFrontPic_Cutiefly), SPECIES_SPRITE(RIBOMBEE, gMonFrontPic_Ribombee), SPECIES_SPRITE(ROCKRUFF, gMonFrontPic_Rockruff), - SPECIES_SPRITE(LYCANROC, gMonFrontPic_Lycanroc), - SPECIES_SPRITE(WISHIWASHI, gMonFrontPic_Wishiwashi), + SPECIES_SPRITE(LYCANROC_MIDDAY, gMonFrontPic_LycanrocMidday), + SPECIES_SPRITE(WISHIWASHI_SOLO, gMonFrontPic_WishiwashiSolo), SPECIES_SPRITE(MAREANIE, gMonFrontPic_Mareanie), SPECIES_SPRITE(TOXAPEX, gMonFrontPic_Toxapex), SPECIES_SPRITE(MUDBRAY, gMonFrontPic_Mudbray), @@ -781,11 +781,11 @@ const struct CompressedSpriteSheet gMonFrontPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(PYUKUMUKU, gMonFrontPic_Pyukumuku), SPECIES_SPRITE(TYPE_NULL, gMonFrontPic_TypeNull), SPECIES_SPRITE(SILVALLY, gMonFrontPic_Silvally), - SPECIES_SPRITE(MINIOR, gMonFrontPic_Minior), + SPECIES_SPRITE(MINIOR_METEOR_RED, gMonFrontPic_MiniorMeteor), SPECIES_SPRITE(KOMALA, gMonFrontPic_Komala), SPECIES_SPRITE(TURTONATOR, gMonFrontPic_Turtonator), SPECIES_SPRITE(TOGEDEMARU, gMonFrontPic_Togedemaru), - SPECIES_SPRITE(MIMIKYU, gMonFrontPic_Mimikyu), + SPECIES_SPRITE(MIMIKYU_DISGUISED, gMonFrontPic_MimikyuDisguised), SPECIES_SPRITE(BRUXISH, gMonFrontPic_Bruxish), SPECIES_SPRITE(DRAMPA, gMonFrontPic_Drampa), SPECIES_SPRITE(DHELMISE, gMonFrontPic_Dhelmise), @@ -858,13 +858,13 @@ const struct CompressedSpriteSheet gMonFrontPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(ARROKUDA, gMonFrontPic_Arrokuda), SPECIES_SPRITE(BARRASKEWDA, gMonFrontPic_Barraskewda), SPECIES_SPRITE(TOXEL, gMonFrontPic_Toxel), - SPECIES_SPRITE(TOXTRICITY, gMonFrontPic_Toxtricity), + SPECIES_SPRITE(TOXTRICITY_AMPED, gMonFrontPic_ToxtricityAmped), SPECIES_SPRITE(SIZZLIPEDE, gMonFrontPic_Sizzlipede), SPECIES_SPRITE(CENTISKORCH, gMonFrontPic_Centiskorch), SPECIES_SPRITE(CLOBBOPUS, gMonFrontPic_Clobbopus), SPECIES_SPRITE(GRAPPLOCT, gMonFrontPic_Grapploct), - SPECIES_SPRITE(SINISTEA, gMonFrontPic_Sinistea), - SPECIES_SPRITE(POLTEAGEIST, gMonFrontPic_Polteageist), + SPECIES_SPRITE(SINISTEA_PHONY, gMonFrontPic_Sinistea), + SPECIES_SPRITE(POLTEAGEIST_PHONY, gMonFrontPic_Polteageist), SPECIES_SPRITE(HATENNA, gMonFrontPic_Hatenna), SPECIES_SPRITE(HATTREM, gMonFrontPic_Hattrem), SPECIES_SPRITE(HATTERENE, gMonFrontPic_Hatterene), @@ -884,9 +884,9 @@ const struct CompressedSpriteSheet gMonFrontPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(SNOM, gMonFrontPic_Snom), SPECIES_SPRITE(FROSMOTH, gMonFrontPic_Frosmoth), SPECIES_SPRITE(STONJOURNER, gMonFrontPic_Stonjourner), - SPECIES_SPRITE(EISCUE, gMonFrontPic_Eiscue), - SPECIES_SPRITE(INDEEDEE, gMonFrontPic_Indeedee), - SPECIES_SPRITE(MORPEKO, gMonFrontPic_Morpeko), + SPECIES_SPRITE(EISCUE_ICE_FACE, gMonFrontPic_EiscueFace), + SPECIES_SPRITE(INDEEDEE_MALE, gMonFrontPic_IndeedeeMale), + SPECIES_SPRITE(MORPEKO_FULL_BELLY, gMonFrontPic_MorpekoFullBelly), SPECIES_SPRITE(CUFANT, gMonFrontPic_Cufant), SPECIES_SPRITE(COPPERAJAH, gMonFrontPic_Copperajah), SPECIES_SPRITE(DRACOZOLT, gMonFrontPic_Dracozolt), @@ -897,11 +897,11 @@ const struct CompressedSpriteSheet gMonFrontPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(DREEPY, gMonFrontPic_Dreepy), SPECIES_SPRITE(DRAKLOAK, gMonFrontPic_Drakloak), SPECIES_SPRITE(DRAGAPULT, gMonFrontPic_Dragapult), - SPECIES_SPRITE(ZACIAN, gMonFrontPic_Zacian), - SPECIES_SPRITE(ZAMAZENTA, gMonFrontPic_Zamazenta), + SPECIES_SPRITE(ZACIAN_HERO_OF_MANY_BATTLES, gMonFrontPic_ZacianHeroOfManyBattles), + SPECIES_SPRITE(ZAMAZENTA_HERO_OF_MANY_BATTLES, gMonFrontPic_ZamazentaHeroOfManyBattles), SPECIES_SPRITE(ETERNATUS, gMonFrontPic_Eternatus), SPECIES_SPRITE(KUBFU, gMonFrontPic_Kubfu), - SPECIES_SPRITE(URSHIFU, gMonFrontPic_Urshifu), + SPECIES_SPRITE(URSHIFU_SINGLE_STRIKE_STYLE, gMonFrontPic_UrshifuSingleStrikeStyle), SPECIES_SPRITE(ZARUDE, gMonFrontPic_Zarude), SPECIES_SPRITE(REGIELEKI, gMonFrontPic_Regieleki), SPECIES_SPRITE(REGIDRAGO, gMonFrontPic_Regidrago), @@ -911,10 +911,10 @@ const struct CompressedSpriteSheet gMonFrontPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(WYRDEER, gMonFrontPic_Wyrdeer), SPECIES_SPRITE(KLEAVOR, gMonFrontPic_Kleavor), SPECIES_SPRITE(URSALUNA, gMonFrontPic_Ursaluna), - SPECIES_SPRITE(BASCULEGION, gMonFrontPic_Basculegion), + SPECIES_SPRITE(BASCULEGION_MALE, gMonFrontPic_BasculegionMale), SPECIES_SPRITE(SNEASLER, gMonFrontPic_Sneasler), SPECIES_SPRITE(OVERQWIL, gMonFrontPic_Overqwil), - SPECIES_SPRITE(ENAMORUS, gMonFrontPic_Enamorus), + SPECIES_SPRITE(ENAMORUS_INCARNATE, gMonFrontPic_EnamorusIncarnate), #endif SPECIES_SPRITE(VENUSAUR_MEGA, gMonFrontPic_VenusaurMega), SPECIES_SPRITE(CHARIZARD_MEGA_X, gMonFrontPic_CharizardMegaX), @@ -1010,7 +1010,7 @@ const struct CompressedSpriteSheet gMonFrontPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(LINOONE_GALARIAN, gMonFrontPic_LinooneGalarian), #if P_GEN_5_POKEMON == TRUE SPECIES_SPRITE(DARUMAKA_GALARIAN, gMonFrontPic_DarumakaGalarian), - SPECIES_SPRITE(DARMANITAN_GALARIAN, gMonFrontPic_DarmanitanGalarian), + SPECIES_SPRITE(DARMANITAN_GALARIAN_STANDARD_MODE, gMonFrontPic_DarmanitanGalarianStandardMode), SPECIES_SPRITE(YAMASK_GALARIAN, gMonFrontPic_YamaskGalarian), SPECIES_SPRITE(STUNFISK_GALARIAN, gMonFrontPic_StunfiskGalarian), #endif @@ -1140,7 +1140,7 @@ const struct CompressedSpriteSheet gMonFrontPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(BASCULIN_WHITE_STRIPED, gMonFrontPic_BasculinWhiteStriped), SPECIES_SPRITE(DARMANITAN_ZEN_MODE, gMonFrontPic_DarmanitanZenMode), - SPECIES_SPRITE(DARMANITAN_ZEN_MODE_GALARIAN, gMonFrontPic_DarmanitanZenModeGalarian), + SPECIES_SPRITE(DARMANITAN_GALARIAN_ZEN_MODE, gMonFrontPic_DarmanitanGalarianZenMode), SPECIES_SPRITE(DEERLING_SUMMER, gMonFrontPic_Deerling), SPECIES_SPRITE(DEERLING_AUTUMN, gMonFrontPic_Deerling), @@ -1233,7 +1233,7 @@ const struct CompressedSpriteSheet gMonFrontPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(ZYGARDE_10, gMonFrontPic_Zygarde10), SPECIES_SPRITE(ZYGARDE_10_POWER_CONSTRUCT, gMonFrontPic_Zygarde10), - SPECIES_SPRITE(ZYGARDE_50_POWER_CONSTRUCT, gMonFrontPic_Zygarde), + SPECIES_SPRITE(ZYGARDE_50_POWER_CONSTRUCT, gMonFrontPic_Zygarde50), SPECIES_SPRITE(ZYGARDE_COMPLETE, gMonFrontPic_ZygardeComplete), SPECIES_SPRITE(HOOPA_UNBOUND, gMonFrontPic_HoopaUnbound), @@ -1269,12 +1269,12 @@ const struct CompressedSpriteSheet gMonFrontPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(SILVALLY_DARK, gMonFrontPic_Silvally), SPECIES_SPRITE(SILVALLY_FAIRY, gMonFrontPic_Silvally), - SPECIES_SPRITE(MINIOR_METEOR_ORANGE, gMonFrontPic_Minior), - SPECIES_SPRITE(MINIOR_METEOR_YELLOW, gMonFrontPic_Minior), - SPECIES_SPRITE(MINIOR_METEOR_GREEN, gMonFrontPic_Minior), - SPECIES_SPRITE(MINIOR_METEOR_BLUE, gMonFrontPic_Minior), - SPECIES_SPRITE(MINIOR_METEOR_INDIGO, gMonFrontPic_Minior), - SPECIES_SPRITE(MINIOR_METEOR_VIOLET, gMonFrontPic_Minior), + SPECIES_SPRITE(MINIOR_METEOR_ORANGE, gMonFrontPic_MiniorMeteor), + SPECIES_SPRITE(MINIOR_METEOR_YELLOW, gMonFrontPic_MiniorMeteor), + SPECIES_SPRITE(MINIOR_METEOR_GREEN, gMonFrontPic_MiniorMeteor), + SPECIES_SPRITE(MINIOR_METEOR_BLUE, gMonFrontPic_MiniorMeteor), + SPECIES_SPRITE(MINIOR_METEOR_INDIGO, gMonFrontPic_MiniorMeteor), + SPECIES_SPRITE(MINIOR_METEOR_VIOLET, gMonFrontPic_MiniorMeteor), SPECIES_SPRITE(MINIOR_CORE_RED, gMonFrontPic_MiniorCore), SPECIES_SPRITE(MINIOR_CORE_ORANGE, gMonFrontPic_MiniorCore), SPECIES_SPRITE(MINIOR_CORE_YELLOW, gMonFrontPic_MiniorCore), @@ -1367,7 +1367,7 @@ const struct CompressedSpriteSheet gMonFrontPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(ALCREMIE_GIGANTAMAX, gMonFrontPic_AlcremieGigantamax), SPECIES_SPRITE(COPPERAJAH_GIGANTAMAX, gMonFrontPic_CopperajahGigantamax), SPECIES_SPRITE(DURALUDON_GIGANTAMAX, gMonFrontPic_DuraludonGigantamax), - SPECIES_SPRITE(URSHIFU_GIGANTAMAX, gMonFrontPic_UrshifuGigantamax), + SPECIES_SPRITE(URSHIFU_SINGLE_STRIKE_STYLE_GIGANTAMAX, gMonFrontPic_UrshifuSingleStrikeGigantamax), SPECIES_SPRITE(URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX, gMonFrontPic_UrshifuRapidStrikeGigantamax), #endif SPECIES_SPRITE(EGG, gMonFrontPic_Egg), diff --git a/src/data/pokemon_graphics/palette_table.h b/src/data/pokemon_graphics/palette_table.h index 33bc94fecc..8e4a9c32b2 100644 --- a/src/data/pokemon_graphics/palette_table.h +++ b/src/data/pokemon_graphics/palette_table.h @@ -360,7 +360,7 @@ const struct CompressedSpritePalette gMonPaletteTable[NUM_SPECIES + 1] = SPECIES_PAL(ARON, gMonPalette_Aron), SPECIES_PAL(LAIRON, gMonPalette_Lairon), SPECIES_PAL(AGGRON, gMonPalette_Aggron), - SPECIES_PAL(CASTFORM, gMonPalette_Castform), + SPECIES_PAL(CASTFORM_NORMAL, gMonPalette_CastformNormal), SPECIES_PAL(VOLBEAT, gMonPalette_Volbeat), SPECIES_PAL(ILLUMISE, gMonPalette_Illumise), SPECIES_PAL(LILEEP, gMonPalette_Lileep), @@ -385,7 +385,7 @@ const struct CompressedSpritePalette gMonPaletteTable[NUM_SPECIES + 1] = SPECIES_PAL(LATIAS, gMonPalette_Latias), SPECIES_PAL(LATIOS, gMonPalette_Latios), SPECIES_PAL(JIRACHI, gMonPalette_Jirachi), - SPECIES_PAL(DEOXYS, gMonPalette_Deoxys), + SPECIES_PAL(DEOXYS_NORMAL, gMonPalette_DeoxysNormal), SPECIES_PAL(CHIMECHO, gMonPalette_Chimecho), #if P_GEN_4_POKEMON == TRUE SPECIES_PAL(TURTWIG, gMonPalette_Turtwig), @@ -413,8 +413,8 @@ const struct CompressedSpritePalette gMonPaletteTable[NUM_SPECIES + 1] = SPECIES_PAL(RAMPARDOS, gMonPalette_Rampardos), SPECIES_PAL(SHIELDON, gMonPalette_Shieldon), SPECIES_PAL(BASTIODON, gMonPalette_Bastiodon), - SPECIES_PAL(BURMY, gMonPalette_Burmy), - SPECIES_PAL(WORMADAM, gMonPalette_Wormadam), + SPECIES_PAL(BURMY_PLANT_CLOAK, gMonPalette_BurmyPlantCloak), + SPECIES_PAL(WORMADAM_PLANT_CLOAK, gMonPalette_WormadamPlantCloak), SPECIES_PAL(MOTHIM, gMonPalette_Mothim), SPECIES_PAL(COMBEE, gMonPalette_Combee), SPECIES_PAL(VESPIQUEN, gMonPalette_Vespiquen), @@ -422,9 +422,9 @@ const struct CompressedSpritePalette gMonPaletteTable[NUM_SPECIES + 1] = SPECIES_PAL(BUIZEL, gMonPalette_Buizel), SPECIES_PAL(FLOATZEL, gMonPalette_Floatzel), SPECIES_PAL(CHERUBI, gMonPalette_Cherubi), - SPECIES_PAL(CHERRIM, gMonPalette_Cherrim), - SPECIES_PAL(SHELLOS, gMonPalette_Shellos), - SPECIES_PAL(GASTRODON, gMonPalette_Gastrodon), + SPECIES_PAL(CHERRIM_OVERCAST, gMonPalette_CherrimOvercast), + SPECIES_PAL(SHELLOS_WEST_SEA, gMonPalette_ShellosWestSea), + SPECIES_PAL(GASTRODON_WEST_SEA, gMonPalette_GastrodonWestSea), SPECIES_PAL(AMBIPOM, gMonPalette_Ambipom), SPECIES_PAL(DRIFLOON, gMonPalette_Drifloon), SPECIES_PAL(DRIFBLIM, gMonPalette_Drifblim), @@ -488,12 +488,12 @@ const struct CompressedSpritePalette gMonPaletteTable[NUM_SPECIES + 1] = SPECIES_PAL(PALKIA, gMonPalette_Palkia), SPECIES_PAL(HEATRAN, gMonPalette_Heatran), SPECIES_PAL(REGIGIGAS, gMonPalette_Regigigas), - SPECIES_PAL(GIRATINA, gMonPalette_Giratina), + SPECIES_PAL(GIRATINA_ALTERED, gMonPalette_GiratinaAltered), SPECIES_PAL(CRESSELIA, gMonPalette_Cresselia), SPECIES_PAL(PHIONE, gMonPalette_Phione), SPECIES_PAL(MANAPHY, gMonPalette_Manaphy), SPECIES_PAL(DARKRAI, gMonPalette_Darkrai), - SPECIES_PAL(SHAYMIN, gMonPalette_Shaymin), + SPECIES_PAL(SHAYMIN_LAND, gMonPalette_ShayminLand), SPECIES_PAL(ARCEUS, gMonPalette_Arceus), #endif #if P_GEN_5_POKEMON == TRUE @@ -553,12 +553,12 @@ const struct CompressedSpritePalette gMonPaletteTable[NUM_SPECIES + 1] = SPECIES_PAL(WHIMSICOTT, gMonPalette_Whimsicott), SPECIES_PAL(PETILIL, gMonPalette_Petilil), SPECIES_PAL(LILLIGANT, gMonPalette_Lilligant), - SPECIES_PAL(BASCULIN, gMonPalette_Basculin), + SPECIES_PAL(BASCULIN, gMonPalette_BasculinRedStriped), SPECIES_PAL(SANDILE, gMonPalette_Sandile), SPECIES_PAL(KROKOROK, gMonPalette_Krokorok), SPECIES_PAL(KROOKODILE, gMonPalette_Krookodile), SPECIES_PAL(DARUMAKA, gMonPalette_Darumaka), - SPECIES_PAL(DARMANITAN, gMonPalette_Darmanitan), + SPECIES_PAL(DARMANITAN_STANDARD_MODE, gMonPalette_DarmanitanStandardMode), SPECIES_PAL(MARACTUS, gMonPalette_Maractus), SPECIES_PAL(DWEBBLE, gMonPalette_Dwebble), SPECIES_PAL(CRUSTLE, gMonPalette_Crustle), @@ -588,8 +588,8 @@ const struct CompressedSpritePalette gMonPaletteTable[NUM_SPECIES + 1] = SPECIES_PAL(VANILLITE, gMonPalette_Vanillite), SPECIES_PAL(VANILLISH, gMonPalette_Vanillish), SPECIES_PAL(VANILLUXE, gMonPalette_Vanilluxe), - SPECIES_PAL(DEERLING, gMonPalette_Deerling), - SPECIES_PAL(SAWSBUCK, gMonPalette_Sawsbuck), + SPECIES_PAL(DEERLING_SPRING, gMonPalette_DeerlingSpring), + SPECIES_PAL(SAWSBUCK_SPRING, gMonPalette_SawsbuckSpring), SPECIES_PAL(EMOLGA, gMonPalette_Emolga), SPECIES_PAL(KARRABLAST, gMonPalette_Karrablast), SPECIES_PAL(ESCAVALIER, gMonPalette_Escavalier), @@ -644,14 +644,14 @@ const struct CompressedSpritePalette gMonPaletteTable[NUM_SPECIES + 1] = SPECIES_PAL(COBALION, gMonPalette_Cobalion), SPECIES_PAL(TERRAKION, gMonPalette_Terrakion), SPECIES_PAL(VIRIZION, gMonPalette_Virizion), - SPECIES_PAL(TORNADUS, gMonPalette_Tornadus), - SPECIES_PAL(THUNDURUS, gMonPalette_Thundurus), + SPECIES_PAL(TORNADUS_INCARNATE, gMonPalette_TornadusIncarnate), + SPECIES_PAL(THUNDURUS_INCARNATE, gMonPalette_ThundurusIncarnate), SPECIES_PAL(RESHIRAM, gMonPalette_Reshiram), SPECIES_PAL(ZEKROM, gMonPalette_Zekrom), - SPECIES_PAL(LANDORUS, gMonPalette_Landorus), + SPECIES_PAL(LANDORUS_INCARNATE, gMonPalette_LandorusIncarnate), SPECIES_PAL(KYUREM, gMonPalette_Kyurem), - SPECIES_PAL(KELDEO, gMonPalette_Keldeo), - SPECIES_PAL(MELOETTA, gMonPalette_Meloetta), + SPECIES_PAL(KELDEO_ORDINARY, gMonPalette_KeldeoOrdinary), + SPECIES_PAL(MELOETTA, gMonPalette_MeloettaAria), SPECIES_PAL(GENESECT, gMonPalette_Genesect), #endif #if P_GEN_6_POKEMON == TRUE @@ -671,22 +671,22 @@ const struct CompressedSpritePalette gMonPaletteTable[NUM_SPECIES + 1] = SPECIES_PAL(TALONFLAME, gMonPalette_Talonflame), SPECIES_PAL(SCATTERBUG, gMonPalette_Scatterbug), SPECIES_PAL(SPEWPA, gMonPalette_Spewpa), - SPECIES_PAL(VIVILLON, gMonPalette_Vivillon), + SPECIES_PAL(VIVILLON_ICY_SNOW, gMonPalette_VivillonIcySnow), SPECIES_PAL(LITLEO, gMonPalette_Litleo), SPECIES_PAL(PYROAR, gMonPalette_Pyroar), - SPECIES_PAL(FLABEBE, gMonPalette_Flabebe), - SPECIES_PAL(FLOETTE, gMonPalette_Floette), - SPECIES_PAL(FLORGES, gMonPalette_Florges), + SPECIES_PAL(FLABEBE_RED_FLOWER, gMonPalette_FlabebeRedFlower), + SPECIES_PAL(FLOETTE_RED_FLOWER, gMonPalette_FloetteRedFlower), + SPECIES_PAL(FLORGES_RED_FLOWER, gMonPalette_FlorgesRedFlower), SPECIES_PAL(SKIDDO, gMonPalette_Skiddo), SPECIES_PAL(GOGOAT, gMonPalette_Gogoat), SPECIES_PAL(PANCHAM, gMonPalette_Pancham), SPECIES_PAL(PANGORO, gMonPalette_Pangoro), - SPECIES_PAL(FURFROU, gMonPalette_Furfrou), + SPECIES_PAL(FURFROU_NATURAL, gMonPalette_FurfrouNatural), SPECIES_PAL(ESPURR, gMonPalette_Espurr), - SPECIES_PAL(MEOWSTIC, gMonPalette_Meowstic), + SPECIES_PAL(MEOWSTIC_MALE, gMonPalette_MeowsticMale), SPECIES_PAL(HONEDGE, gMonPalette_Honedge), SPECIES_PAL(DOUBLADE, gMonPalette_Doublade), - SPECIES_PAL(AEGISLASH, gMonPalette_Aegislash), + SPECIES_PAL(AEGISLASH_SHIELD, gMonPalette_AegislashShield), SPECIES_PAL(SPRITZEE, gMonPalette_Spritzee), SPECIES_PAL(AROMATISSE, gMonPalette_Aromatisse), SPECIES_PAL(SWIRLIX, gMonPalette_Swirlix), @@ -715,17 +715,17 @@ const struct CompressedSpritePalette gMonPaletteTable[NUM_SPECIES + 1] = SPECIES_PAL(KLEFKI, gMonPalette_Klefki), SPECIES_PAL(PHANTUMP, gMonPalette_Phantump), SPECIES_PAL(TREVENANT, gMonPalette_Trevenant), - SPECIES_PAL(PUMPKABOO, gMonPalette_Pumpkaboo), - SPECIES_PAL(GOURGEIST, gMonPalette_Gourgeist), + SPECIES_PAL(PUMPKABOO_AVERAGE, gMonPalette_Pumpkaboo), + SPECIES_PAL(GOURGEIST_AVERAGE, gMonPalette_Gourgeist), SPECIES_PAL(BERGMITE, gMonPalette_Bergmite), SPECIES_PAL(AVALUGG, gMonPalette_Avalugg), SPECIES_PAL(NOIBAT, gMonPalette_Noibat), SPECIES_PAL(NOIVERN, gMonPalette_Noivern), - SPECIES_PAL(XERNEAS, gMonPalette_Xerneas), + SPECIES_PAL(XERNEAS_NEUTRAL, gMonPalette_XerneasNeutral), SPECIES_PAL(YVELTAL, gMonPalette_Yveltal), - SPECIES_PAL(ZYGARDE, gMonPalette_Zygarde), + SPECIES_PAL(ZYGARDE_50_AURA_BREAK, gMonPalette_Zygarde50), SPECIES_PAL(DIANCIE, gMonPalette_Diancie), - SPECIES_PAL(HOOPA, gMonPalette_Hoopa), + SPECIES_PAL(HOOPA_CONFINED, gMonPalette_HoopaConfined), SPECIES_PAL(VOLCANION, gMonPalette_Volcanion), #endif #if P_GEN_7_POKEMON == TRUE @@ -748,12 +748,12 @@ const struct CompressedSpritePalette gMonPaletteTable[NUM_SPECIES + 1] = SPECIES_PAL(VIKAVOLT, gMonPalette_Vikavolt), SPECIES_PAL(CRABRAWLER, gMonPalette_Crabrawler), SPECIES_PAL(CRABOMINABLE, gMonPalette_Crabominable), - SPECIES_PAL(ORICORIO, gMonPalette_Oricorio), + SPECIES_PAL(ORICORIO_BAILE, gMonPalette_OricorioBaile), SPECIES_PAL(CUTIEFLY, gMonPalette_Cutiefly), SPECIES_PAL(RIBOMBEE, gMonPalette_Ribombee), SPECIES_PAL(ROCKRUFF, gMonPalette_Rockruff), - SPECIES_PAL(LYCANROC, gMonPalette_Lycanroc), - SPECIES_PAL(WISHIWASHI, gMonPalette_Wishiwashi), + SPECIES_PAL(LYCANROC_MIDDAY, gMonPalette_LycanrocMidday), + SPECIES_PAL(WISHIWASHI_SOLO, gMonPalette_WishiwashiSolo), SPECIES_PAL(MAREANIE, gMonPalette_Mareanie), SPECIES_PAL(TOXAPEX, gMonPalette_Toxapex), SPECIES_PAL(MUDBRAY, gMonPalette_Mudbray), @@ -780,12 +780,12 @@ const struct CompressedSpritePalette gMonPaletteTable[NUM_SPECIES + 1] = SPECIES_PAL(PALOSSAND, gMonPalette_Palossand), SPECIES_PAL(PYUKUMUKU, gMonPalette_Pyukumuku), SPECIES_PAL(TYPE_NULL, gMonPalette_TypeNull), - SPECIES_PAL(SILVALLY, gMonPalette_Silvally), - SPECIES_PAL(MINIOR, gMonPalette_Minior), + SPECIES_PAL(SILVALLY_NORMAL, gMonPalette_SilvallyNormal), + SPECIES_PAL(MINIOR_METEOR_RED, gMonPalette_MiniorMeteor), SPECIES_PAL(KOMALA, gMonPalette_Komala), SPECIES_PAL(TURTONATOR, gMonPalette_Turtonator), SPECIES_PAL(TOGEDEMARU, gMonPalette_Togedemaru), - SPECIES_PAL(MIMIKYU, gMonPalette_Mimikyu), + SPECIES_PAL(MIMIKYU_DISGUISED, gMonPalette_MimikyuDisguised), SPECIES_PAL(BRUXISH, gMonPalette_Bruxish), SPECIES_PAL(DRAMPA, gMonPalette_Drampa), SPECIES_PAL(DHELMISE, gMonPalette_Dhelmise), @@ -858,13 +858,13 @@ const struct CompressedSpritePalette gMonPaletteTable[NUM_SPECIES + 1] = SPECIES_PAL(ARROKUDA, gMonPalette_Arrokuda), SPECIES_PAL(BARRASKEWDA, gMonPalette_Barraskewda), SPECIES_PAL(TOXEL, gMonPalette_Toxel), - SPECIES_PAL(TOXTRICITY, gMonPalette_Toxtricity), + SPECIES_PAL(TOXTRICITY_AMPED, gMonPalette_ToxtricityAmped), SPECIES_PAL(SIZZLIPEDE, gMonPalette_Sizzlipede), SPECIES_PAL(CENTISKORCH, gMonPalette_Centiskorch), SPECIES_PAL(CLOBBOPUS, gMonPalette_Clobbopus), SPECIES_PAL(GRAPPLOCT, gMonPalette_Grapploct), - SPECIES_PAL(SINISTEA, gMonPalette_Sinistea), - SPECIES_PAL(POLTEAGEIST, gMonPalette_Polteageist), + SPECIES_PAL(SINISTEA_PHONY, gMonPalette_Sinistea), + SPECIES_PAL(POLTEAGEIST_PHONY, gMonPalette_Polteageist), SPECIES_PAL(HATENNA, gMonPalette_Hatenna), SPECIES_PAL(HATTREM, gMonPalette_Hattrem), SPECIES_PAL(HATTERENE, gMonPalette_Hatterene), @@ -884,9 +884,9 @@ const struct CompressedSpritePalette gMonPaletteTable[NUM_SPECIES + 1] = SPECIES_PAL(SNOM, gMonPalette_Snom), SPECIES_PAL(FROSMOTH, gMonPalette_Frosmoth), SPECIES_PAL(STONJOURNER, gMonPalette_Stonjourner), - SPECIES_PAL(EISCUE, gMonPalette_Eiscue), - SPECIES_PAL(INDEEDEE, gMonPalette_Indeedee), - SPECIES_PAL(MORPEKO, gMonPalette_Morpeko), + SPECIES_PAL(EISCUE_ICE_FACE, gMonPalette_EiscueIceFace), + SPECIES_PAL(INDEEDEE_MALE, gMonPalette_IndeedeeMale), + SPECIES_PAL(MORPEKO_FULL_BELLY, gMonPalette_MorpekoFullBelly), SPECIES_PAL(CUFANT, gMonPalette_Cufant), SPECIES_PAL(COPPERAJAH, gMonPalette_Copperajah), SPECIES_PAL(DRACOZOLT, gMonPalette_Dracozolt), @@ -897,11 +897,11 @@ const struct CompressedSpritePalette gMonPaletteTable[NUM_SPECIES + 1] = SPECIES_PAL(DREEPY, gMonPalette_Dreepy), SPECIES_PAL(DRAKLOAK, gMonPalette_Drakloak), SPECIES_PAL(DRAGAPULT, gMonPalette_Dragapult), - SPECIES_PAL(ZACIAN, gMonPalette_Zacian), - SPECIES_PAL(ZAMAZENTA, gMonPalette_Zamazenta), + SPECIES_PAL(ZACIAN_HERO_OF_MANY_BATTLES, gMonPalette_ZacianHeroOfManyBattles), + SPECIES_PAL(ZAMAZENTA_HERO_OF_MANY_BATTLES, gMonPalette_ZamazentaHeroOfManyBattles), SPECIES_PAL(ETERNATUS, gMonPalette_Eternatus), SPECIES_PAL(KUBFU, gMonPalette_Kubfu), - SPECIES_PAL(URSHIFU, gMonPalette_Urshifu), + SPECIES_PAL(URSHIFU_SINGLE_STRIKE_STYLE, gMonPalette_UrshifuSingleStrikeStyle), SPECIES_PAL(ZARUDE, gMonPalette_Zarude), SPECIES_PAL(REGIELEKI, gMonPalette_Regieleki), SPECIES_PAL(REGIDRAGO, gMonPalette_Regidrago), @@ -911,10 +911,10 @@ const struct CompressedSpritePalette gMonPaletteTable[NUM_SPECIES + 1] = SPECIES_PAL(WYRDEER, gMonPalette_Wyrdeer), SPECIES_PAL(KLEAVOR, gMonPalette_Kleavor), SPECIES_PAL(URSALUNA, gMonPalette_Ursaluna), - SPECIES_PAL(BASCULEGION, gMonPalette_Basculegion), + SPECIES_PAL(BASCULEGION_MALE, gMonPalette_BasculegionMale), SPECIES_PAL(SNEASLER, gMonPalette_Sneasler), SPECIES_PAL(OVERQWIL, gMonPalette_Overqwil), - SPECIES_PAL(ENAMORUS, gMonPalette_Enamorus), + SPECIES_PAL(ENAMORUS_INCARNATE, gMonPalette_EnamorusIncarnate), #endif SPECIES_PAL(VENUSAUR_MEGA, gMonPalette_VenusaurMega), SPECIES_PAL(CHARIZARD_MEGA_X, gMonPalette_CharizardMegaX), @@ -1010,7 +1010,7 @@ const struct CompressedSpritePalette gMonPaletteTable[NUM_SPECIES + 1] = SPECIES_PAL(LINOONE_GALARIAN, gMonPalette_LinooneGalarian), #if P_GEN_5_POKEMON == TRUE SPECIES_PAL(DARUMAKA_GALARIAN, gMonPalette_DarumakaGalarian), - SPECIES_PAL(DARMANITAN_GALARIAN, gMonPalette_DarmanitanGalarian), + SPECIES_PAL(DARMANITAN_GALARIAN_STANDARD_MODE, gMonPalette_DarmanitanGalarianStandardMode), SPECIES_PAL(YAMASK_GALARIAN, gMonPalette_YamaskGalarian), SPECIES_PAL(STUNFISK_GALARIAN, gMonPalette_StunfiskGalarian), #endif @@ -1141,7 +1141,7 @@ const struct CompressedSpritePalette gMonPaletteTable[NUM_SPECIES + 1] = SPECIES_PAL(BASCULIN_WHITE_STRIPED, gMonPalette_BasculinWhiteStriped), SPECIES_PAL(DARMANITAN_ZEN_MODE, gMonPalette_DarmanitanZenMode), - SPECIES_PAL(DARMANITAN_ZEN_MODE_GALARIAN, gMonPalette_DarmanitanZenModeGalarian), + SPECIES_PAL(DARMANITAN_GALARIAN_ZEN_MODE, gMonPalette_DarmanitanGalarianZenMode), SPECIES_PAL(DEERLING_SUMMER, gMonPalette_DeerlingSummer), SPECIES_PAL(DEERLING_AUTUMN, gMonPalette_DeerlingAutumn), @@ -1234,7 +1234,7 @@ const struct CompressedSpritePalette gMonPaletteTable[NUM_SPECIES + 1] = SPECIES_PAL(ZYGARDE_10, gMonPalette_Zygarde10), SPECIES_PAL(ZYGARDE_10_POWER_CONSTRUCT, gMonPalette_Zygarde10), - SPECIES_PAL(ZYGARDE_50_POWER_CONSTRUCT, gMonPalette_Zygarde), + SPECIES_PAL(ZYGARDE_50_POWER_CONSTRUCT, gMonPalette_Zygarde50), SPECIES_PAL(ZYGARDE_COMPLETE, gMonPalette_ZygardeComplete), SPECIES_PAL(HOOPA_UNBOUND, gMonPalette_HoopaUnbound), @@ -1270,12 +1270,12 @@ const struct CompressedSpritePalette gMonPaletteTable[NUM_SPECIES + 1] = SPECIES_PAL(SILVALLY_DARK, gMonPalette_SilvallyDark), SPECIES_PAL(SILVALLY_FAIRY, gMonPalette_SilvallyFairy), - SPECIES_PAL(MINIOR_METEOR_ORANGE, gMonPalette_Minior), - SPECIES_PAL(MINIOR_METEOR_YELLOW, gMonPalette_Minior), - SPECIES_PAL(MINIOR_METEOR_GREEN, gMonPalette_Minior), - SPECIES_PAL(MINIOR_METEOR_BLUE, gMonPalette_Minior), - SPECIES_PAL(MINIOR_METEOR_INDIGO, gMonPalette_Minior), - SPECIES_PAL(MINIOR_METEOR_VIOLET, gMonPalette_Minior), + SPECIES_PAL(MINIOR_METEOR_ORANGE, gMonPalette_MiniorMeteor), + SPECIES_PAL(MINIOR_METEOR_YELLOW, gMonPalette_MiniorMeteor), + SPECIES_PAL(MINIOR_METEOR_GREEN, gMonPalette_MiniorMeteor), + SPECIES_PAL(MINIOR_METEOR_BLUE, gMonPalette_MiniorMeteor), + SPECIES_PAL(MINIOR_METEOR_INDIGO, gMonPalette_MiniorMeteor), + SPECIES_PAL(MINIOR_METEOR_VIOLET, gMonPalette_MiniorMeteor), SPECIES_PAL(MINIOR_CORE_RED, gMonPalette_MiniorCoreRed), SPECIES_PAL(MINIOR_CORE_ORANGE, gMonPalette_MiniorCoreOrange), SPECIES_PAL(MINIOR_CORE_YELLOW, gMonPalette_MiniorCoreYellow), @@ -1367,7 +1367,7 @@ const struct CompressedSpritePalette gMonPaletteTable[NUM_SPECIES + 1] = SPECIES_PAL(ALCREMIE_GIGANTAMAX, gMonPalette_AlcremieGigantamax), SPECIES_PAL(COPPERAJAH_GIGANTAMAX, gMonPalette_CopperajahGigantamax), SPECIES_PAL(DURALUDON_GIGANTAMAX, gMonPalette_DuraludonGigantamax), - SPECIES_PAL(URSHIFU_GIGANTAMAX, gMonPalette_UrshifuGigantamax), + SPECIES_PAL(URSHIFU_SINGLE_STRIKE_STYLE_GIGANTAMAX, gMonPalette_UrshifuSingleStrikeGigantamax), SPECIES_PAL(URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX, gMonPalette_UrshifuRapidStrikeGigantamax), #endif SPECIES_PAL(EGG, gMonPalette_Egg), diff --git a/src/data/pokemon_graphics/shiny_palette_table.h b/src/data/pokemon_graphics/shiny_palette_table.h index 02d404add3..44a140a8da 100644 --- a/src/data/pokemon_graphics/shiny_palette_table.h +++ b/src/data/pokemon_graphics/shiny_palette_table.h @@ -360,7 +360,7 @@ const struct CompressedSpritePalette gMonShinyPaletteTable[NUM_SPECIES + 1] = SPECIES_SHINY_PAL(ARON, gMonShinyPalette_Aron), SPECIES_SHINY_PAL(LAIRON, gMonShinyPalette_Lairon), SPECIES_SHINY_PAL(AGGRON, gMonShinyPalette_Aggron), - SPECIES_SHINY_PAL(CASTFORM, gMonShinyPalette_Castform), + SPECIES_SHINY_PAL(CASTFORM_NORMAL, gMonShinyPalette_CastformNormal), SPECIES_SHINY_PAL(VOLBEAT, gMonShinyPalette_Volbeat), SPECIES_SHINY_PAL(ILLUMISE, gMonShinyPalette_Illumise), SPECIES_SHINY_PAL(LILEEP, gMonShinyPalette_Lileep), @@ -385,7 +385,7 @@ const struct CompressedSpritePalette gMonShinyPaletteTable[NUM_SPECIES + 1] = SPECIES_SHINY_PAL(LATIAS, gMonShinyPalette_Latias), SPECIES_SHINY_PAL(LATIOS, gMonShinyPalette_Latios), SPECIES_SHINY_PAL(JIRACHI, gMonShinyPalette_Jirachi), - SPECIES_SHINY_PAL(DEOXYS, gMonShinyPalette_Deoxys), + SPECIES_SHINY_PAL(DEOXYS_NORMAL, gMonShinyPalette_DeoxysNormal), SPECIES_SHINY_PAL(CHIMECHO, gMonShinyPalette_Chimecho), #if P_GEN_4_POKEMON == TRUE SPECIES_SHINY_PAL(TURTWIG, gMonShinyPalette_Turtwig), @@ -413,8 +413,8 @@ const struct CompressedSpritePalette gMonShinyPaletteTable[NUM_SPECIES + 1] = SPECIES_SHINY_PAL(RAMPARDOS, gMonShinyPalette_Rampardos), SPECIES_SHINY_PAL(SHIELDON, gMonShinyPalette_Shieldon), SPECIES_SHINY_PAL(BASTIODON, gMonShinyPalette_Bastiodon), - SPECIES_SHINY_PAL(BURMY, gMonShinyPalette_Burmy), - SPECIES_SHINY_PAL(WORMADAM, gMonShinyPalette_Wormadam), + SPECIES_SHINY_PAL(BURMY_PLANT_CLOAK, gMonShinyPalette_BurmyPlantCloak), + SPECIES_SHINY_PAL(WORMADAM_PLANT_CLOAK, gMonShinyPalette_WormadamPlantCloak), SPECIES_SHINY_PAL(MOTHIM, gMonShinyPalette_Mothim), SPECIES_SHINY_PAL(COMBEE, gMonShinyPalette_Combee), SPECIES_SHINY_PAL(VESPIQUEN, gMonShinyPalette_Vespiquen), @@ -422,9 +422,9 @@ const struct CompressedSpritePalette gMonShinyPaletteTable[NUM_SPECIES + 1] = SPECIES_SHINY_PAL(BUIZEL, gMonShinyPalette_Buizel), SPECIES_SHINY_PAL(FLOATZEL, gMonShinyPalette_Floatzel), SPECIES_SHINY_PAL(CHERUBI, gMonShinyPalette_Cherubi), - SPECIES_SHINY_PAL(CHERRIM, gMonShinyPalette_Cherrim), - SPECIES_SHINY_PAL(SHELLOS, gMonShinyPalette_Shellos), - SPECIES_SHINY_PAL(GASTRODON, gMonShinyPalette_Gastrodon), + SPECIES_SHINY_PAL(CHERRIM_OVERCAST, gMonShinyPalette_CherrimOvercast), + SPECIES_SHINY_PAL(SHELLOS_WEST_SEA, gMonShinyPalette_ShellosWestSea), + SPECIES_SHINY_PAL(GASTRODON_WEST_SEA, gMonShinyPalette_GastrodonWestSea), SPECIES_SHINY_PAL(AMBIPOM, gMonShinyPalette_Ambipom), SPECIES_SHINY_PAL(DRIFLOON, gMonShinyPalette_Drifloon), SPECIES_SHINY_PAL(DRIFBLIM, gMonShinyPalette_Drifblim), @@ -488,12 +488,12 @@ const struct CompressedSpritePalette gMonShinyPaletteTable[NUM_SPECIES + 1] = SPECIES_SHINY_PAL(PALKIA, gMonShinyPalette_Palkia), SPECIES_SHINY_PAL(HEATRAN, gMonShinyPalette_Heatran), SPECIES_SHINY_PAL(REGIGIGAS, gMonShinyPalette_Regigigas), - SPECIES_SHINY_PAL(GIRATINA, gMonShinyPalette_Giratina), + SPECIES_SHINY_PAL(GIRATINA_ALTERED, gMonShinyPalette_GiratinaAltered), SPECIES_SHINY_PAL(CRESSELIA, gMonShinyPalette_Cresselia), SPECIES_SHINY_PAL(PHIONE, gMonShinyPalette_Phione), SPECIES_SHINY_PAL(MANAPHY, gMonShinyPalette_Manaphy), SPECIES_SHINY_PAL(DARKRAI, gMonShinyPalette_Darkrai), - SPECIES_SHINY_PAL(SHAYMIN, gMonShinyPalette_Shaymin), + SPECIES_SHINY_PAL(SHAYMIN_LAND, gMonShinyPalette_ShayminLand), SPECIES_SHINY_PAL(ARCEUS, gMonShinyPalette_Arceus), #endif #if P_GEN_5_POKEMON == TRUE @@ -553,12 +553,12 @@ const struct CompressedSpritePalette gMonShinyPaletteTable[NUM_SPECIES + 1] = SPECIES_SHINY_PAL(WHIMSICOTT, gMonShinyPalette_Whimsicott), SPECIES_SHINY_PAL(PETILIL, gMonShinyPalette_Petilil), SPECIES_SHINY_PAL(LILLIGANT, gMonShinyPalette_Lilligant), - SPECIES_SHINY_PAL(BASCULIN, gMonShinyPalette_Basculin), + SPECIES_SHINY_PAL(BASCULIN, gMonShinyPalette_BasculinRedStriped), SPECIES_SHINY_PAL(SANDILE, gMonShinyPalette_Sandile), SPECIES_SHINY_PAL(KROKOROK, gMonShinyPalette_Krokorok), SPECIES_SHINY_PAL(KROOKODILE, gMonShinyPalette_Krookodile), SPECIES_SHINY_PAL(DARUMAKA, gMonShinyPalette_Darumaka), - SPECIES_SHINY_PAL(DARMANITAN, gMonShinyPalette_Darmanitan), + SPECIES_SHINY_PAL(DARMANITAN_STANDARD_MODE, gMonShinyPalette_DarmanitanStandardMode), SPECIES_SHINY_PAL(MARACTUS, gMonShinyPalette_Maractus), SPECIES_SHINY_PAL(DWEBBLE, gMonShinyPalette_Dwebble), SPECIES_SHINY_PAL(CRUSTLE, gMonShinyPalette_Crustle), @@ -588,8 +588,8 @@ const struct CompressedSpritePalette gMonShinyPaletteTable[NUM_SPECIES + 1] = SPECIES_SHINY_PAL(VANILLITE, gMonShinyPalette_Vanillite), SPECIES_SHINY_PAL(VANILLISH, gMonShinyPalette_Vanillish), SPECIES_SHINY_PAL(VANILLUXE, gMonShinyPalette_Vanilluxe), - SPECIES_SHINY_PAL(DEERLING, gMonShinyPalette_Deerling), - SPECIES_SHINY_PAL(SAWSBUCK, gMonShinyPalette_Sawsbuck), + SPECIES_SHINY_PAL(DEERLING_SPRING, gMonShinyPalette_DeerlingSpring), + SPECIES_SHINY_PAL(SAWSBUCK_SPRING, gMonShinyPalette_SawsbuckSpring), SPECIES_SHINY_PAL(EMOLGA, gMonShinyPalette_Emolga), SPECIES_SHINY_PAL(KARRABLAST, gMonShinyPalette_Karrablast), SPECIES_SHINY_PAL(ESCAVALIER, gMonShinyPalette_Escavalier), @@ -644,14 +644,14 @@ const struct CompressedSpritePalette gMonShinyPaletteTable[NUM_SPECIES + 1] = SPECIES_SHINY_PAL(COBALION, gMonShinyPalette_Cobalion), SPECIES_SHINY_PAL(TERRAKION, gMonShinyPalette_Terrakion), SPECIES_SHINY_PAL(VIRIZION, gMonShinyPalette_Virizion), - SPECIES_SHINY_PAL(TORNADUS, gMonShinyPalette_Tornadus), - SPECIES_SHINY_PAL(THUNDURUS, gMonShinyPalette_Thundurus), + SPECIES_SHINY_PAL(TORNADUS_INCARNATE, gMonShinyPalette_TornadusIncarnate), + SPECIES_SHINY_PAL(THUNDURUS_INCARNATE, gMonShinyPalette_ThundurusIncarnate), SPECIES_SHINY_PAL(RESHIRAM, gMonShinyPalette_Reshiram), SPECIES_SHINY_PAL(ZEKROM, gMonShinyPalette_Zekrom), - SPECIES_SHINY_PAL(LANDORUS, gMonShinyPalette_Landorus), + SPECIES_SHINY_PAL(LANDORUS_INCARNATE, gMonShinyPalette_LandorusIncarnate), SPECIES_SHINY_PAL(KYUREM, gMonShinyPalette_Kyurem), - SPECIES_SHINY_PAL(KELDEO, gMonShinyPalette_Keldeo), - SPECIES_SHINY_PAL(MELOETTA, gMonShinyPalette_Meloetta), + SPECIES_SHINY_PAL(KELDEO_ORDINARY, gMonShinyPalette_KeldeoOrdinary), + SPECIES_SHINY_PAL(MELOETTA, gMonShinyPalette_MeloettaAria), SPECIES_SHINY_PAL(GENESECT, gMonShinyPalette_Genesect), #endif #if P_GEN_6_POKEMON == TRUE @@ -671,22 +671,22 @@ const struct CompressedSpritePalette gMonShinyPaletteTable[NUM_SPECIES + 1] = SPECIES_SHINY_PAL(TALONFLAME, gMonShinyPalette_Talonflame), SPECIES_SHINY_PAL(SCATTERBUG, gMonShinyPalette_Scatterbug), SPECIES_SHINY_PAL(SPEWPA, gMonShinyPalette_Spewpa), - SPECIES_SHINY_PAL(VIVILLON, gMonShinyPalette_Vivillon), + SPECIES_SHINY_PAL(VIVILLON_ICY_SNOW, gMonShinyPalette_VivillonIcySnow), SPECIES_SHINY_PAL(LITLEO, gMonShinyPalette_Litleo), SPECIES_SHINY_PAL(PYROAR, gMonShinyPalette_Pyroar), - SPECIES_SHINY_PAL(FLABEBE, gMonShinyPalette_Flabebe), - SPECIES_SHINY_PAL(FLOETTE, gMonShinyPalette_Floette), - SPECIES_SHINY_PAL(FLORGES, gMonShinyPalette_Florges), + SPECIES_SHINY_PAL(FLABEBE_RED_FLOWER, gMonShinyPalette_FlabebeRedFlower), + SPECIES_SHINY_PAL(FLOETTE_RED_FLOWER, gMonShinyPalette_FloetteRedFlower), + SPECIES_SHINY_PAL(FLORGES_RED_FLOWER, gMonShinyPalette_FlorgesRedFlower), SPECIES_SHINY_PAL(SKIDDO, gMonShinyPalette_Skiddo), SPECIES_SHINY_PAL(GOGOAT, gMonShinyPalette_Gogoat), SPECIES_SHINY_PAL(PANCHAM, gMonShinyPalette_Pancham), SPECIES_SHINY_PAL(PANGORO, gMonShinyPalette_Pangoro), - SPECIES_SHINY_PAL(FURFROU, gMonShinyPalette_Furfrou), + SPECIES_SHINY_PAL(FURFROU_NATURAL, gMonShinyPalette_FurfrouNatural), SPECIES_SHINY_PAL(ESPURR, gMonShinyPalette_Espurr), - SPECIES_SHINY_PAL(MEOWSTIC, gMonShinyPalette_Meowstic), + SPECIES_SHINY_PAL(MEOWSTIC_MALE, gMonShinyPalette_MeowsticMale), SPECIES_SHINY_PAL(HONEDGE, gMonShinyPalette_Honedge), SPECIES_SHINY_PAL(DOUBLADE, gMonShinyPalette_Doublade), - SPECIES_SHINY_PAL(AEGISLASH, gMonShinyPalette_Aegislash), + SPECIES_SHINY_PAL(AEGISLASH_SHIELD, gMonShinyPalette_AegislashShield), SPECIES_SHINY_PAL(SPRITZEE, gMonShinyPalette_Spritzee), SPECIES_SHINY_PAL(AROMATISSE, gMonShinyPalette_Aromatisse), SPECIES_SHINY_PAL(SWIRLIX, gMonShinyPalette_Swirlix), @@ -715,17 +715,17 @@ const struct CompressedSpritePalette gMonShinyPaletteTable[NUM_SPECIES + 1] = SPECIES_SHINY_PAL(KLEFKI, gMonShinyPalette_Klefki), SPECIES_SHINY_PAL(PHANTUMP, gMonShinyPalette_Phantump), SPECIES_SHINY_PAL(TREVENANT, gMonShinyPalette_Trevenant), - SPECIES_SHINY_PAL(PUMPKABOO, gMonShinyPalette_Pumpkaboo), - SPECIES_SHINY_PAL(GOURGEIST, gMonShinyPalette_Gourgeist), + SPECIES_SHINY_PAL(PUMPKABOO_AVERAGE, gMonShinyPalette_Pumpkaboo), + SPECIES_SHINY_PAL(GOURGEIST_AVERAGE, gMonShinyPalette_Gourgeist), SPECIES_SHINY_PAL(BERGMITE, gMonShinyPalette_Bergmite), SPECIES_SHINY_PAL(AVALUGG, gMonShinyPalette_Avalugg), SPECIES_SHINY_PAL(NOIBAT, gMonShinyPalette_Noibat), SPECIES_SHINY_PAL(NOIVERN, gMonShinyPalette_Noivern), - SPECIES_SHINY_PAL(XERNEAS, gMonShinyPalette_Xerneas), + SPECIES_SHINY_PAL(XERNEAS_NEUTRAL, gMonShinyPalette_XerneasNeutral), SPECIES_SHINY_PAL(YVELTAL, gMonShinyPalette_Yveltal), - SPECIES_SHINY_PAL(ZYGARDE, gMonShinyPalette_Zygarde), + SPECIES_SHINY_PAL(ZYGARDE_50_AURA_BREAK, gMonShinyPalette_Zygarde50), SPECIES_SHINY_PAL(DIANCIE, gMonShinyPalette_Diancie), - SPECIES_SHINY_PAL(HOOPA, gMonShinyPalette_Hoopa), + SPECIES_SHINY_PAL(HOOPA_CONFINED, gMonShinyPalette_HoopaConfined), SPECIES_SHINY_PAL(VOLCANION, gMonShinyPalette_Volcanion), #endif #if P_GEN_7_POKEMON == TRUE @@ -748,12 +748,12 @@ const struct CompressedSpritePalette gMonShinyPaletteTable[NUM_SPECIES + 1] = SPECIES_SHINY_PAL(VIKAVOLT, gMonShinyPalette_Vikavolt), SPECIES_SHINY_PAL(CRABRAWLER, gMonShinyPalette_Crabrawler), SPECIES_SHINY_PAL(CRABOMINABLE, gMonShinyPalette_Crabominable), - SPECIES_SHINY_PAL(ORICORIO, gMonShinyPalette_Oricorio), + SPECIES_SHINY_PAL(ORICORIO_BAILE, gMonShinyPalette_OricorioBaile), SPECIES_SHINY_PAL(CUTIEFLY, gMonShinyPalette_Cutiefly), SPECIES_SHINY_PAL(RIBOMBEE, gMonShinyPalette_Ribombee), SPECIES_SHINY_PAL(ROCKRUFF, gMonShinyPalette_Rockruff), - SPECIES_SHINY_PAL(LYCANROC, gMonShinyPalette_Lycanroc), - SPECIES_SHINY_PAL(WISHIWASHI, gMonShinyPalette_Wishiwashi), + SPECIES_SHINY_PAL(LYCANROC_MIDDAY, gMonShinyPalette_LycanrocMidday), + SPECIES_SHINY_PAL(WISHIWASHI_SOLO, gMonShinyPalette_WishiwashiSolo), SPECIES_SHINY_PAL(MAREANIE, gMonShinyPalette_Mareanie), SPECIES_SHINY_PAL(TOXAPEX, gMonShinyPalette_Toxapex), SPECIES_SHINY_PAL(MUDBRAY, gMonShinyPalette_Mudbray), @@ -780,12 +780,12 @@ const struct CompressedSpritePalette gMonShinyPaletteTable[NUM_SPECIES + 1] = SPECIES_SHINY_PAL(PALOSSAND, gMonShinyPalette_Palossand), SPECIES_SHINY_PAL(PYUKUMUKU, gMonShinyPalette_Pyukumuku), SPECIES_SHINY_PAL(TYPE_NULL, gMonShinyPalette_TypeNull), - SPECIES_SHINY_PAL(SILVALLY, gMonShinyPalette_Silvally), - SPECIES_SHINY_PAL(MINIOR, gMonShinyPalette_Minior), + SPECIES_SHINY_PAL(SILVALLY_NORMAL, gMonShinyPalette_SilvallyNormal), + SPECIES_SHINY_PAL(MINIOR_METEOR_RED, gMonShinyPalette_MiniorMeteor), SPECIES_SHINY_PAL(KOMALA, gMonShinyPalette_Komala), SPECIES_SHINY_PAL(TURTONATOR, gMonShinyPalette_Turtonator), SPECIES_SHINY_PAL(TOGEDEMARU, gMonShinyPalette_Togedemaru), - SPECIES_SHINY_PAL(MIMIKYU, gMonShinyPalette_Mimikyu), + SPECIES_SHINY_PAL(MIMIKYU_DISGUISED, gMonShinyPalette_MimikyuDisguised), SPECIES_SHINY_PAL(BRUXISH, gMonShinyPalette_Bruxish), SPECIES_SHINY_PAL(DRAMPA, gMonShinyPalette_Drampa), SPECIES_SHINY_PAL(DHELMISE, gMonShinyPalette_Dhelmise), @@ -858,13 +858,13 @@ const struct CompressedSpritePalette gMonShinyPaletteTable[NUM_SPECIES + 1] = SPECIES_SHINY_PAL(ARROKUDA, gMonShinyPalette_Arrokuda), SPECIES_SHINY_PAL(BARRASKEWDA, gMonShinyPalette_Barraskewda), SPECIES_SHINY_PAL(TOXEL, gMonShinyPalette_Toxel), - SPECIES_SHINY_PAL(TOXTRICITY, gMonShinyPalette_Toxtricity), + SPECIES_SHINY_PAL(TOXTRICITY_AMPED, gMonShinyPalette_ToxtricityAmped), SPECIES_SHINY_PAL(SIZZLIPEDE, gMonShinyPalette_Sizzlipede), SPECIES_SHINY_PAL(CENTISKORCH, gMonShinyPalette_Centiskorch), SPECIES_SHINY_PAL(CLOBBOPUS, gMonShinyPalette_Clobbopus), SPECIES_SHINY_PAL(GRAPPLOCT, gMonShinyPalette_Grapploct), - SPECIES_SHINY_PAL(SINISTEA, gMonShinyPalette_Sinistea), - SPECIES_SHINY_PAL(POLTEAGEIST, gMonShinyPalette_Polteageist), + SPECIES_SHINY_PAL(SINISTEA_PHONY, gMonShinyPalette_Sinistea), + SPECIES_SHINY_PAL(POLTEAGEIST_PHONY, gMonShinyPalette_Polteageist), SPECIES_SHINY_PAL(HATENNA, gMonShinyPalette_Hatenna), SPECIES_SHINY_PAL(HATTREM, gMonShinyPalette_Hattrem), SPECIES_SHINY_PAL(HATTERENE, gMonShinyPalette_Hatterene), @@ -884,9 +884,9 @@ const struct CompressedSpritePalette gMonShinyPaletteTable[NUM_SPECIES + 1] = SPECIES_SHINY_PAL(SNOM, gMonShinyPalette_Snom), SPECIES_SHINY_PAL(FROSMOTH, gMonShinyPalette_Frosmoth), SPECIES_SHINY_PAL(STONJOURNER, gMonShinyPalette_Stonjourner), - SPECIES_SHINY_PAL(EISCUE, gMonShinyPalette_Eiscue), - SPECIES_SHINY_PAL(INDEEDEE, gMonShinyPalette_Indeedee), - SPECIES_SHINY_PAL(MORPEKO, gMonShinyPalette_Morpeko), + SPECIES_SHINY_PAL(EISCUE_ICE_FACE, gMonShinyPalette_EiscueIceFace), + SPECIES_SHINY_PAL(INDEEDEE_MALE, gMonShinyPalette_IndeedeeMale), + SPECIES_SHINY_PAL(MORPEKO_FULL_BELLY, gMonShinyPalette_MorpekoFullBelly), SPECIES_SHINY_PAL(CUFANT, gMonShinyPalette_Cufant), SPECIES_SHINY_PAL(COPPERAJAH, gMonShinyPalette_Copperajah), SPECIES_SHINY_PAL(DRACOZOLT, gMonShinyPalette_Dracozolt), @@ -897,11 +897,11 @@ const struct CompressedSpritePalette gMonShinyPaletteTable[NUM_SPECIES + 1] = SPECIES_SHINY_PAL(DREEPY, gMonShinyPalette_Dreepy), SPECIES_SHINY_PAL(DRAKLOAK, gMonShinyPalette_Drakloak), SPECIES_SHINY_PAL(DRAGAPULT, gMonShinyPalette_Dragapult), - SPECIES_SHINY_PAL(ZACIAN, gMonShinyPalette_Zacian), - SPECIES_SHINY_PAL(ZAMAZENTA, gMonShinyPalette_Zamazenta), + SPECIES_SHINY_PAL(ZACIAN_HERO_OF_MANY_BATTLES, gMonShinyPalette_ZacianHeroOfManyBattles), + SPECIES_SHINY_PAL(ZAMAZENTA_HERO_OF_MANY_BATTLES, gMonShinyPalette_ZamazentaHeroOfManyBattles), SPECIES_SHINY_PAL(ETERNATUS, gMonShinyPalette_Eternatus), SPECIES_SHINY_PAL(KUBFU, gMonShinyPalette_Kubfu), - SPECIES_SHINY_PAL(URSHIFU, gMonShinyPalette_Urshifu), + SPECIES_SHINY_PAL(URSHIFU_SINGLE_STRIKE_STYLE, gMonShinyPalette_UrshifuSingleStrikeStyle), SPECIES_SHINY_PAL(ZARUDE, gMonShinyPalette_Zarude), SPECIES_SHINY_PAL(REGIELEKI, gMonShinyPalette_Regieleki), SPECIES_SHINY_PAL(REGIDRAGO, gMonShinyPalette_Regidrago), @@ -911,10 +911,10 @@ const struct CompressedSpritePalette gMonShinyPaletteTable[NUM_SPECIES + 1] = SPECIES_SHINY_PAL(WYRDEER, gMonShinyPalette_Wyrdeer), SPECIES_SHINY_PAL(KLEAVOR, gMonShinyPalette_Kleavor), SPECIES_SHINY_PAL(URSALUNA, gMonShinyPalette_Ursaluna), - SPECIES_SHINY_PAL(BASCULEGION, gMonShinyPalette_Basculegion), + SPECIES_SHINY_PAL(BASCULEGION_MALE, gMonShinyPalette_BasculegionMale), SPECIES_SHINY_PAL(SNEASLER, gMonShinyPalette_Sneasler), SPECIES_SHINY_PAL(OVERQWIL, gMonShinyPalette_Overqwil), - SPECIES_SHINY_PAL(ENAMORUS, gMonShinyPalette_Enamorus), + SPECIES_SHINY_PAL(ENAMORUS_INCARNATE, gMonShinyPalette_EnamorusIncarnate), #endif SPECIES_SHINY_PAL(VENUSAUR_MEGA, gMonShinyPalette_VenusaurMega), @@ -1011,7 +1011,7 @@ const struct CompressedSpritePalette gMonShinyPaletteTable[NUM_SPECIES + 1] = SPECIES_SHINY_PAL(LINOONE_GALARIAN, gMonShinyPalette_LinooneGalarian), #if P_GEN_5_POKEMON == TRUE SPECIES_SHINY_PAL(DARUMAKA_GALARIAN, gMonShinyPalette_DarumakaGalarian), - SPECIES_SHINY_PAL(DARMANITAN_GALARIAN, gMonShinyPalette_DarmanitanGalarian), + SPECIES_SHINY_PAL(DARMANITAN_GALARIAN_STANDARD_MODE, gMonShinyPalette_DarmanitanGalarianStandardMode), SPECIES_SHINY_PAL(YAMASK_GALARIAN, gMonShinyPalette_YamaskGalarian), SPECIES_SHINY_PAL(STUNFISK_GALARIAN, gMonShinyPalette_StunfiskGalarian), #endif @@ -1140,7 +1140,7 @@ const struct CompressedSpritePalette gMonShinyPaletteTable[NUM_SPECIES + 1] = SPECIES_SHINY_PAL(BASCULIN_WHITE_STRIPED, gMonShinyPalette_BasculinWhiteStriped), SPECIES_SHINY_PAL(DARMANITAN_ZEN_MODE, gMonShinyPalette_DarmanitanZenMode), - SPECIES_SHINY_PAL(DARMANITAN_ZEN_MODE_GALARIAN, gMonShinyPalette_DarmanitanZenModeGalarian), + SPECIES_SHINY_PAL(DARMANITAN_GALARIAN_ZEN_MODE, gMonShinyPalette_DarmanitanGalarianZenMode), SPECIES_SHINY_PAL(DEERLING_SUMMER, gMonShinyPalette_DeerlingSummer), SPECIES_SHINY_PAL(DEERLING_AUTUMN, gMonShinyPalette_DeerlingAutumn), @@ -1232,7 +1232,7 @@ const struct CompressedSpritePalette gMonShinyPaletteTable[NUM_SPECIES + 1] = SPECIES_SHINY_PAL(ZYGARDE_10, gMonShinyPalette_Zygarde10), SPECIES_SHINY_PAL(ZYGARDE_10_POWER_CONSTRUCT, gMonShinyPalette_Zygarde10), - SPECIES_SHINY_PAL(ZYGARDE_50_POWER_CONSTRUCT, gMonShinyPalette_Zygarde), + SPECIES_SHINY_PAL(ZYGARDE_50_POWER_CONSTRUCT, gMonShinyPalette_Zygarde50), SPECIES_SHINY_PAL(ZYGARDE_COMPLETE, gMonShinyPalette_ZygardeComplete), SPECIES_SHINY_PAL(HOOPA_UNBOUND, gMonShinyPalette_HoopaUnbound), @@ -1268,12 +1268,12 @@ const struct CompressedSpritePalette gMonShinyPaletteTable[NUM_SPECIES + 1] = SPECIES_SHINY_PAL(SILVALLY_DARK, gMonShinyPalette_SilvallyDark), SPECIES_SHINY_PAL(SILVALLY_FAIRY, gMonShinyPalette_SilvallyFairy), - SPECIES_SHINY_PAL(MINIOR_METEOR_ORANGE, gMonShinyPalette_Minior), - SPECIES_SHINY_PAL(MINIOR_METEOR_YELLOW, gMonShinyPalette_Minior), - SPECIES_SHINY_PAL(MINIOR_METEOR_GREEN, gMonShinyPalette_Minior), - SPECIES_SHINY_PAL(MINIOR_METEOR_BLUE, gMonShinyPalette_Minior), - SPECIES_SHINY_PAL(MINIOR_METEOR_INDIGO, gMonShinyPalette_Minior), - SPECIES_SHINY_PAL(MINIOR_METEOR_VIOLET, gMonShinyPalette_Minior), + SPECIES_SHINY_PAL(MINIOR_METEOR_ORANGE, gMonShinyPalette_MiniorMeteor), + SPECIES_SHINY_PAL(MINIOR_METEOR_YELLOW, gMonShinyPalette_MiniorMeteor), + SPECIES_SHINY_PAL(MINIOR_METEOR_GREEN, gMonShinyPalette_MiniorMeteor), + SPECIES_SHINY_PAL(MINIOR_METEOR_BLUE, gMonShinyPalette_MiniorMeteor), + SPECIES_SHINY_PAL(MINIOR_METEOR_INDIGO, gMonShinyPalette_MiniorMeteor), + SPECIES_SHINY_PAL(MINIOR_METEOR_VIOLET, gMonShinyPalette_MiniorMeteor), SPECIES_SHINY_PAL(MINIOR_CORE_RED, gMonShinyPalette_MiniorCore), SPECIES_SHINY_PAL(MINIOR_CORE_ORANGE, gMonShinyPalette_MiniorCore), SPECIES_SHINY_PAL(MINIOR_CORE_YELLOW, gMonShinyPalette_MiniorCore), @@ -1366,7 +1366,7 @@ const struct CompressedSpritePalette gMonShinyPaletteTable[NUM_SPECIES + 1] = SPECIES_SHINY_PAL(ALCREMIE_GIGANTAMAX, gMonShinyPalette_AlcremieGigantamax), SPECIES_SHINY_PAL(COPPERAJAH_GIGANTAMAX, gMonShinyPalette_CopperajahGigantamax), SPECIES_SHINY_PAL(DURALUDON_GIGANTAMAX, gMonShinyPalette_DuraludonGigantamax), - SPECIES_SHINY_PAL(URSHIFU_GIGANTAMAX, gMonShinyPalette_UrshifuGigantamax), + SPECIES_SHINY_PAL(URSHIFU_SINGLE_STRIKE_STYLE_GIGANTAMAX, gMonShinyPalette_UrshifuSingleStrikeGigantamax), SPECIES_SHINY_PAL(URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX, gMonShinyPalette_UrshifuRapidStrikeGigantamax), #endif SPECIES_SHINY_PAL(EGG, gMonPalette_Egg), diff --git a/src/data/text/species_names.h b/src/data/text/species_names.h index de48c6cae9..d9da9fd9e8 100644 --- a/src/data/text/species_names.h +++ b/src/data/text/species_names.h @@ -350,7 +350,7 @@ const u8 gSpeciesNames[NUM_SPECIES][POKEMON_NAME_LENGTH + 1] = { [SPECIES_ARMALDO] = _("Armaldo"), [SPECIES_FEEBAS] = _("Feebas"), [SPECIES_MILOTIC] = _("Milotic"), - [SPECIES_CASTFORM] = _("Castform"), + [SPECIES_CASTFORM_NORMAL] = _("Castform"), [SPECIES_KECLEON] = _("Kecleon"), [SPECIES_SHUPPET] = _("Shuppet"), [SPECIES_BANETTE] = _("Banette"), @@ -385,7 +385,7 @@ const u8 gSpeciesNames[NUM_SPECIES][POKEMON_NAME_LENGTH + 1] = { [SPECIES_GROUDON] = _("Groudon"), [SPECIES_RAYQUAZA] = _("Rayquaza"), [SPECIES_JIRACHI] = _("Jirachi"), - [SPECIES_DEOXYS] = _("Deoxys"), + [SPECIES_DEOXYS_NORMAL] = _("Deoxys"), #if P_GEN_4_POKEMON == TRUE [SPECIES_TURTWIG] = _("Turtwig"), [SPECIES_GROTLE] = _("Grotle"), @@ -412,8 +412,8 @@ const u8 gSpeciesNames[NUM_SPECIES][POKEMON_NAME_LENGTH + 1] = { [SPECIES_RAMPARDOS] = _("Rampardos"), [SPECIES_SHIELDON] = _("Shieldon"), [SPECIES_BASTIODON] = _("Bastiodon"), - [SPECIES_BURMY] = _("Burmy"), - [SPECIES_WORMADAM] = _("Wormadam"), + [SPECIES_BURMY_PLANT_CLOAK] = _("Burmy"), + [SPECIES_WORMADAM_PLANT_CLOAK] = _("Wormadam"), [SPECIES_MOTHIM] = _("Mothim"), [SPECIES_COMBEE] = _("Combee"), [SPECIES_VESPIQUEN] = _("Vespiquen"), @@ -421,9 +421,9 @@ const u8 gSpeciesNames[NUM_SPECIES][POKEMON_NAME_LENGTH + 1] = { [SPECIES_BUIZEL] = _("Buizel"), [SPECIES_FLOATZEL] = _("Floatzel"), [SPECIES_CHERUBI] = _("Cherubi"), - [SPECIES_CHERRIM] = _("Cherrim"), - [SPECIES_SHELLOS] = _("Shellos"), - [SPECIES_GASTRODON] = _("Gastrodon"), + [SPECIES_CHERRIM_OVERCAST] = _("Cherrim"), + [SPECIES_SHELLOS_WEST_SEA] = _("Shellos"), + [SPECIES_GASTRODON_WEST_SEA] = _("Gastrodon"), [SPECIES_AMBIPOM] = _("Ambipom"), [SPECIES_DRIFLOON] = _("Drifloon"), [SPECIES_DRIFBLIM] = _("Drifblim"), @@ -487,13 +487,13 @@ const u8 gSpeciesNames[NUM_SPECIES][POKEMON_NAME_LENGTH + 1] = { [SPECIES_PALKIA] = _("Palkia"), [SPECIES_HEATRAN] = _("Heatran"), [SPECIES_REGIGIGAS] = _("Regigigas"), - [SPECIES_GIRATINA] = _("Giratina"), + [SPECIES_GIRATINA_ALTERED] = _("Giratina"), [SPECIES_CRESSELIA] = _("Cresselia"), [SPECIES_PHIONE] = _("Phione"), [SPECIES_MANAPHY] = _("Manaphy"), [SPECIES_DARKRAI] = _("Darkrai"), - [SPECIES_SHAYMIN] = _("Shaymin"), - [SPECIES_ARCEUS] = _("Arceus"), + [SPECIES_SHAYMIN_LAND] = _("Shaymin"), + [SPECIES_ARCEUS_NORMAL] = _("Arceus"), #endif #if P_GEN_5_POKEMON == TRUE [SPECIES_VICTINI] = _("Victini"), @@ -552,12 +552,12 @@ const u8 gSpeciesNames[NUM_SPECIES][POKEMON_NAME_LENGTH + 1] = { [SPECIES_WHIMSICOTT] = _("Whimsicott"), [SPECIES_PETILIL] = _("Petilil"), [SPECIES_LILLIGANT] = _("Lilligant"), - [SPECIES_BASCULIN] = _("Basculin"), + [SPECIES_BASCULIN_RED_STRIPED] = _("Basculin"), [SPECIES_SANDILE] = _("Sandile"), [SPECIES_KROKOROK] = _("Krokorok"), [SPECIES_KROOKODILE] = _("Krookodile"), [SPECIES_DARUMAKA] = _("Darumaka"), - [SPECIES_DARMANITAN] = _("Darmanitan"), + [SPECIES_DARMANITAN_STANDARD_MODE] = _("Darmanitan"), [SPECIES_MARACTUS] = _("Maractus"), [SPECIES_DWEBBLE] = _("Dwebble"), [SPECIES_CRUSTLE] = _("Crustle"), @@ -587,8 +587,8 @@ const u8 gSpeciesNames[NUM_SPECIES][POKEMON_NAME_LENGTH + 1] = { [SPECIES_VANILLITE] = _("Vanillite"), [SPECIES_VANILLISH] = _("Vanillish"), [SPECIES_VANILLUXE] = _("Vanilluxe"), - [SPECIES_DEERLING] = _("Deerling"), - [SPECIES_SAWSBUCK] = _("Sawsbuck"), + [SPECIES_DEERLING_SPRING] = _("Deerling"), + [SPECIES_SAWSBUCK_SPRING] = _("Sawsbuck"), [SPECIES_EMOLGA] = _("Emolga"), [SPECIES_KARRABLAST] = _("Karrablast"), [SPECIES_ESCAVALIER] = _("Escavalier"), @@ -643,14 +643,14 @@ const u8 gSpeciesNames[NUM_SPECIES][POKEMON_NAME_LENGTH + 1] = { [SPECIES_COBALION] = _("Cobalion"), [SPECIES_TERRAKION] = _("Terrakion"), [SPECIES_VIRIZION] = _("Virizion"), - [SPECIES_TORNADUS] = _("Tornadus"), - [SPECIES_THUNDURUS] = _("Thundurus"), + [SPECIES_TORNADUS_INCARNATE] = _("Tornadus"), + [SPECIES_THUNDURUS_INCARNATE] = _("Thundurus"), [SPECIES_RESHIRAM] = _("Reshiram"), [SPECIES_ZEKROM] = _("Zekrom"), - [SPECIES_LANDORUS] = _("Landorus"), + [SPECIES_LANDORUS_INCARNATE] = _("Landorus"), [SPECIES_KYUREM] = _("Kyurem"), - [SPECIES_KELDEO] = _("Keldeo"), - [SPECIES_MELOETTA] = _("Meloetta"), + [SPECIES_KELDEO_ORDINARY] = _("Keldeo"), + [SPECIES_MELOETTA_ARIA] = _("Meloetta"), [SPECIES_GENESECT] = _("Genesect"), #endif #if P_GEN_6_POKEMON == TRUE @@ -670,22 +670,22 @@ const u8 gSpeciesNames[NUM_SPECIES][POKEMON_NAME_LENGTH + 1] = { [SPECIES_TALONFLAME] = _("Talonflame"), [SPECIES_SCATTERBUG] = _("Scatterbug"), [SPECIES_SPEWPA] = _("Spewpa"), - [SPECIES_VIVILLON] = _("Vivillon"), + [SPECIES_VIVILLON_ICY_SNOW] = _("Vivillon"), [SPECIES_LITLEO] = _("Litleo"), [SPECIES_PYROAR] = _("Pyroar"), - [SPECIES_FLABEBE] = _("Flabébé"), - [SPECIES_FLOETTE] = _("Floette"), - [SPECIES_FLORGES] = _("Florges"), + [SPECIES_FLABEBE_RED_FLOWER] = _("Flabébé"), + [SPECIES_FLOETTE_RED_FLOWER] = _("Floette"), + [SPECIES_FLORGES_RED_FLOWER] = _("Florges"), [SPECIES_SKIDDO] = _("Skiddo"), [SPECIES_GOGOAT] = _("Gogoat"), [SPECIES_PANCHAM] = _("Pancham"), [SPECIES_PANGORO] = _("Pangoro"), - [SPECIES_FURFROU] = _("Furfrou"), + [SPECIES_FURFROU_NATURAL] = _("Furfrou"), [SPECIES_ESPURR] = _("Espurr"), - [SPECIES_MEOWSTIC] = _("Meowstic"), + [SPECIES_MEOWSTIC_MALE] = _("Meowstic"), [SPECIES_HONEDGE] = _("Honedge"), [SPECIES_DOUBLADE] = _("Doublade"), - [SPECIES_AEGISLASH] = _("Aegislash"), + [SPECIES_AEGISLASH_SHIELD] = _("Aegislash"), [SPECIES_SPRITZEE] = _("Spritzee"), [SPECIES_AROMATISSE] = _("Aromatisse"), [SPECIES_SWIRLIX] = _("Swirlix"), @@ -714,17 +714,17 @@ const u8 gSpeciesNames[NUM_SPECIES][POKEMON_NAME_LENGTH + 1] = { [SPECIES_KLEFKI] = _("Klefki"), [SPECIES_PHANTUMP] = _("Phantump"), [SPECIES_TREVENANT] = _("Trevenant"), - [SPECIES_PUMPKABOO] = _("Pumpkaboo"), - [SPECIES_GOURGEIST] = _("Gourgeist"), + [SPECIES_PUMPKABOO_AVERAGE] = _("Pumpkaboo"), + [SPECIES_GOURGEIST_AVERAGE] = _("Gourgeist"), [SPECIES_BERGMITE] = _("Bergmite"), [SPECIES_AVALUGG] = _("Avalugg"), [SPECIES_NOIBAT] = _("Noibat"), [SPECIES_NOIVERN] = _("Noivern"), - [SPECIES_XERNEAS] = _("Xerneas"), + [SPECIES_XERNEAS_NEUTRAL] = _("Xerneas"), [SPECIES_YVELTAL] = _("Yveltal"), - [SPECIES_ZYGARDE] = _("Zygarde"), + [SPECIES_ZYGARDE_50_AURA_BREAK] = _("Zygarde"), [SPECIES_DIANCIE] = _("Diancie"), - [SPECIES_HOOPA] = _("Hoopa"), + [SPECIES_HOOPA_CONFINED] = _("Hoopa"), [SPECIES_VOLCANION] = _("Volcanion"), #endif #if P_GEN_7_POKEMON == TRUE @@ -747,12 +747,12 @@ const u8 gSpeciesNames[NUM_SPECIES][POKEMON_NAME_LENGTH + 1] = { [SPECIES_VIKAVOLT] = _("Vikavolt"), [SPECIES_CRABRAWLER] = _("Crabrawler"), [SPECIES_CRABOMINABLE] = _("Crabminabl"), - [SPECIES_ORICORIO] = _("Oricorio"), + [SPECIES_ORICORIO_BAILE] = _("Oricorio"), [SPECIES_CUTIEFLY] = _("Cutiefly"), [SPECIES_RIBOMBEE] = _("Ribombee"), [SPECIES_ROCKRUFF] = _("Rockruff"), - [SPECIES_LYCANROC] = _("Lycanroc"), - [SPECIES_WISHIWASHI] = _("Wishiwashi"), + [SPECIES_LYCANROC_MIDDAY] = _("Lycanroc"), + [SPECIES_WISHIWASHI_SOLO] = _("Wishiwashi"), [SPECIES_MAREANIE] = _("Mareanie"), [SPECIES_TOXAPEX] = _("Toxapex"), [SPECIES_MUDBRAY] = _("Mudbray"), @@ -779,12 +779,12 @@ const u8 gSpeciesNames[NUM_SPECIES][POKEMON_NAME_LENGTH + 1] = { [SPECIES_PALOSSAND] = _("Palossand"), [SPECIES_PYUKUMUKU] = _("Pyukumuku"), [SPECIES_TYPE_NULL] = _("Type: Null"), - [SPECIES_SILVALLY] = _("Silvally"), - [SPECIES_MINIOR] = _("Minior"), + [SPECIES_SILVALLY_NORMAL] = _("Silvally"), + [SPECIES_MINIOR_METEOR_RED] = _("Minior"), [SPECIES_KOMALA] = _("Komala"), [SPECIES_TURTONATOR] = _("Turtonator"), [SPECIES_TOGEDEMARU] = _("Togedemaru"), - [SPECIES_MIMIKYU] = _("Mimikyu"), + [SPECIES_MIMIKYU_DISGUISED] = _("Mimikyu"), [SPECIES_BRUXISH] = _("Bruxish"), [SPECIES_DRAMPA] = _("Drampa"), [SPECIES_DHELMISE] = _("Dhelmise"), @@ -857,13 +857,13 @@ const u8 gSpeciesNames[NUM_SPECIES][POKEMON_NAME_LENGTH + 1] = { [SPECIES_ARROKUDA] = _("Arrokuda"), [SPECIES_BARRASKEWDA] = _("Barraskewd"), [SPECIES_TOXEL] = _("Toxel"), - [SPECIES_TOXTRICITY] = _("Toxtricity"), + [SPECIES_TOXTRICITY_AMPED] = _("Toxtricity"), [SPECIES_SIZZLIPEDE] = _("Sizzlipede"), [SPECIES_CENTISKORCH] = _("Centiskorc"), [SPECIES_CLOBBOPUS] = _("Clobbopus"), [SPECIES_GRAPPLOCT] = _("Grapploct"), - [SPECIES_SINISTEA] = _("Sinistea"), - [SPECIES_POLTEAGEIST] = _("Polteageis"), + [SPECIES_SINISTEA_PHONY] = _("Sinistea"), + [SPECIES_POLTEAGEIST_PHONY] = _("Polteageis"), [SPECIES_HATENNA] = _("Hatenna"), [SPECIES_HATTREM] = _("Hattrem"), [SPECIES_HATTERENE] = _("Hatterene"), @@ -877,15 +877,15 @@ const u8 gSpeciesNames[NUM_SPECIES][POKEMON_NAME_LENGTH + 1] = { [SPECIES_MR_RIME] = _("Mr. Rime"), [SPECIES_RUNERIGUS] = _("Runerigus"), [SPECIES_MILCERY] = _("Milcery"), - [SPECIES_ALCREMIE] = _("Alcremie"), + [SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM] = _("Alcremie"), [SPECIES_FALINKS] = _("Falinks"), [SPECIES_PINCURCHIN] = _("Pincurchin"), [SPECIES_SNOM] = _("Snom"), [SPECIES_FROSMOTH] = _("Frosmoth"), [SPECIES_STONJOURNER] = _("Stonjourne"), - [SPECIES_EISCUE] = _("Eiscue"), - [SPECIES_INDEEDEE] = _("Indeedee"), - [SPECIES_MORPEKO] = _("Morpeko"), + [SPECIES_EISCUE_ICE_FACE] = _("Eiscue"), + [SPECIES_INDEEDEE_MALE] = _("Indeedee"), + [SPECIES_MORPEKO_FULL_BELLY] = _("Morpeko"), [SPECIES_CUFANT] = _("Cufant"), [SPECIES_COPPERAJAH] = _("Copperajah"), [SPECIES_DRACOZOLT] = _("Dracozolt"), @@ -896,11 +896,11 @@ const u8 gSpeciesNames[NUM_SPECIES][POKEMON_NAME_LENGTH + 1] = { [SPECIES_DREEPY] = _("Dreepy"), [SPECIES_DRAKLOAK] = _("Drakloak"), [SPECIES_DRAGAPULT] = _("Dragapult"), - [SPECIES_ZACIAN] = _("Zacian"), - [SPECIES_ZAMAZENTA] = _("Zamazenta"), + [SPECIES_ZACIAN_HERO_OF_MANY_BATTLES] = _("Zacian"), + [SPECIES_ZAMAZENTA_HERO_OF_MANY_BATTLES] = _("Zamazenta"), [SPECIES_ETERNATUS] = _("Eternatus"), [SPECIES_KUBFU] = _("Kubfu"), - [SPECIES_URSHIFU] = _("Urshifu"), + [SPECIES_URSHIFU_SINGLE_STRIKE_STYLE] = _("Urshifu"), [SPECIES_ZARUDE] = _("Zarude"), [SPECIES_REGIELEKI] = _("Regieleki"), [SPECIES_REGIDRAGO] = _("Regidrago"), @@ -910,10 +910,10 @@ const u8 gSpeciesNames[NUM_SPECIES][POKEMON_NAME_LENGTH + 1] = { [SPECIES_WYRDEER] = _("Wyrdeer"), [SPECIES_KLEAVOR] = _("Kleavor"), [SPECIES_URSALUNA] = _("Ursaluna"), - [SPECIES_BASCULEGION] = _("Bsculegion"), + [SPECIES_BASCULEGION_MALE] = _("Bsculegion"), [SPECIES_SNEASLER] = _("Sneasler"), [SPECIES_OVERQWIL] = _("Overqwil"), - [SPECIES_ENAMORUS] = _("Enamorus"), + [SPECIES_ENAMORUS_INCARNATE] = _("Enamorus"), #endif // Megas @@ -1013,7 +1013,7 @@ const u8 gSpeciesNames[NUM_SPECIES][POKEMON_NAME_LENGTH + 1] = { [SPECIES_LINOONE_GALARIAN] = _("Linoone"), #if P_GEN_5_POKEMON == TRUE [SPECIES_DARUMAKA_GALARIAN] = _("Darumaka"), - [SPECIES_DARMANITAN_GALARIAN] = _("Darmanitan"), + [SPECIES_DARMANITAN_GALARIAN_STANDARD_MODE] = _("Darmanitan"), [SPECIES_YAMASK_GALARIAN] = _("Yamask"), [SPECIES_STUNFISK_GALARIAN] = _("Stunfisk"), #endif @@ -1146,7 +1146,7 @@ const u8 gSpeciesNames[NUM_SPECIES][POKEMON_NAME_LENGTH + 1] = { [SPECIES_BASCULIN_WHITE_STRIPED] = _("Basculin"), // Darmanitan [SPECIES_DARMANITAN_ZEN_MODE] = _("Darmanitan"), - [SPECIES_DARMANITAN_ZEN_MODE_GALARIAN] = _("Darmanitan"), + [SPECIES_DARMANITAN_GALARIAN_ZEN_MODE] = _("Darmanitan"), // Deerling [SPECIES_DEERLING_SUMMER] = _("Deerling"), [SPECIES_DEERLING_AUTUMN] = _("Deerling"), @@ -1238,7 +1238,7 @@ const u8 gSpeciesNames[NUM_SPECIES][POKEMON_NAME_LENGTH + 1] = { // Xerneas [SPECIES_XERNEAS_ACTIVE] = _("Xerneas"), // Zygarde - [SPECIES_ZYGARDE_10] = _("Zygarde"), + [SPECIES_ZYGARDE_10_AURA_BREAK] = _("Zygarde"), [SPECIES_ZYGARDE_10_POWER_CONSTRUCT] = _("Zygarde"), [SPECIES_ZYGARDE_50_POWER_CONSTRUCT] = _("Zygarde"), [SPECIES_ZYGARDE_COMPLETE] = _("Zygarde"), @@ -1309,14 +1309,14 @@ const u8 gSpeciesNames[NUM_SPECIES][POKEMON_NAME_LENGTH + 1] = { // Polteageist [SPECIES_POLTEAGEIST_ANTIQUE] = _("Polteageis"), // Alcremie - [SPECIES_ALCREMIE_RUBY_CREAM] = _("Alcremie"), - [SPECIES_ALCREMIE_MATCHA_CREAM] = _("Alcremie"), - [SPECIES_ALCREMIE_MINT_CREAM] = _("Alcremie"), - [SPECIES_ALCREMIE_LEMON_CREAM] = _("Alcremie"), - [SPECIES_ALCREMIE_SALTED_CREAM] = _("Alcremie"), - [SPECIES_ALCREMIE_RUBY_SWIRL] = _("Alcremie"), - [SPECIES_ALCREMIE_CARAMEL_SWIRL] = _("Alcremie"), - [SPECIES_ALCREMIE_RAINBOW_SWIRL] = _("Alcremie"), + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL] = _("Alcremie"), + [SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL] = _("Alcremie"), + [SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL] = _("Alcremie"), // Eiscue [SPECIES_EISCUE_NOICE_FACE] = _("Eiscue"), // Indeedee @@ -1371,7 +1371,7 @@ const u8 gSpeciesNames[NUM_SPECIES][POKEMON_NAME_LENGTH + 1] = { [SPECIES_ALCREMIE_GIGANTAMAX] = _("Alcremie"), [SPECIES_COPPERAJAH_GIGANTAMAX] = _("Copperajah"), [SPECIES_DURALUDON_GIGANTAMAX] = _("Duraludon"), - [SPECIES_URSHIFU_GIGANTAMAX] = _("Urshifu"), + [SPECIES_URSHIFU_SINGLE_STRIKE_STYLE_GIGANTAMAX] = _("Urshifu"), [SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX] = _("Urshifu"), #endif }; diff --git a/src/data/trainer_parties.h b/src/data/trainer_parties.h index ed53a181dd..b3128781c4 100644 --- a/src/data/trainer_parties.h +++ b/src/data/trainer_parties.h @@ -5443,7 +5443,7 @@ static const struct TrainerMon sParty_Angelica[] = { { .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), .lvl = 30, - .species = SPECIES_CASTFORM, + .species = SPECIES_CASTFORM_NORMAL, .moves = {MOVE_RAIN_DANCE, MOVE_WEATHER_BALL, MOVE_THUNDER, MOVE_WATER_PULSE} } }; @@ -6224,7 +6224,7 @@ static const struct TrainerMon sParty_Jonas[] = { static const struct TrainerMon sParty_Kayley[] = { { .lvl = 31, - .species = SPECIES_CASTFORM, + .species = SPECIES_CASTFORM_NORMAL, .moves = {MOVE_SUNNY_DAY, MOVE_WEATHER_BALL, MOVE_FLAMETHROWER, MOVE_SOLAR_BEAM} } }; diff --git a/src/daycare.c b/src/daycare.c index c66e10eaab..b00512ca03 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -1053,7 +1053,7 @@ static u16 DetermineEggSpeciesAndParentSlots(struct DayCare *daycare, u8 *parent else if (eggSpecies == SPECIES_MANAPHY) eggSpecies = SPECIES_PHIONE; else if (eggSpecies == SPECIES_SINISTEA_ANTIQUE) - eggSpecies = SPECIES_SINISTEA; + eggSpecies = SPECIES_SINISTEA_PHONY; else if (GET_BASE_SPECIES_ID(eggSpecies) == SPECIES_VIVILLON) eggSpecies = SPECIES_SCATTERBUG; else if (GET_BASE_SPECIES_ID(eggSpecies) == SPECIES_ROTOM) diff --git a/src/pokemon.c b/src/pokemon.c index d2dc6a275a..3eef17995d 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -1364,7 +1364,7 @@ static const u16 sSpeciesToNationalPokedexNum[NUM_SPECIES - 1] = [SPECIES_LINOONE_GALARIAN - 1] = NATIONAL_DEX_LINOONE, #if P_GEN_5_POKEMON == TRUE [SPECIES_DARUMAKA_GALARIAN - 1] = NATIONAL_DEX_DARUMAKA, - [SPECIES_DARMANITAN_GALARIAN - 1] = NATIONAL_DEX_DARMANITAN, + [SPECIES_DARMANITAN_GALARIAN_STANDARD_MODE - 1] = NATIONAL_DEX_DARMANITAN, [SPECIES_YAMASK_GALARIAN - 1] = NATIONAL_DEX_YAMASK, [SPECIES_STUNFISK_GALARIAN - 1] = NATIONAL_DEX_STUNFISK, #endif @@ -1495,7 +1495,7 @@ static const u16 sSpeciesToNationalPokedexNum[NUM_SPECIES - 1] = [SPECIES_BASCULIN_WHITE_STRIPED - 1] = NATIONAL_DEX_BASCULIN, // Darmanitan [SPECIES_DARMANITAN_ZEN_MODE - 1] = NATIONAL_DEX_DARMANITAN, - [SPECIES_DARMANITAN_ZEN_MODE_GALARIAN - 1] = NATIONAL_DEX_DARMANITAN, + [SPECIES_DARMANITAN_GALARIAN_ZEN_MODE - 1] = NATIONAL_DEX_DARMANITAN, // Deerling [SPECIES_DEERLING_SUMMER - 1] = NATIONAL_DEX_DEERLING, [SPECIES_DEERLING_AUTUMN - 1] = NATIONAL_DEX_DEERLING, @@ -1586,7 +1586,7 @@ static const u16 sSpeciesToNationalPokedexNum[NUM_SPECIES - 1] = // Xerneas [SPECIES_XERNEAS_ACTIVE - 1] = NATIONAL_DEX_XERNEAS, // Zygarde - [SPECIES_ZYGARDE_10 - 1] = NATIONAL_DEX_ZYGARDE, + [SPECIES_ZYGARDE_10_AURA_BREAK - 1] = NATIONAL_DEX_ZYGARDE, [SPECIES_ZYGARDE_10_POWER_CONSTRUCT - 1] = NATIONAL_DEX_ZYGARDE, [SPECIES_ZYGARDE_50_POWER_CONSTRUCT - 1] = NATIONAL_DEX_ZYGARDE, [SPECIES_ZYGARDE_COMPLETE - 1] = NATIONAL_DEX_ZYGARDE, @@ -1657,14 +1657,14 @@ static const u16 sSpeciesToNationalPokedexNum[NUM_SPECIES - 1] = // Polteageist [SPECIES_POLTEAGEIST_ANTIQUE - 1] = NATIONAL_DEX_POLTEAGEIST, // Alcremie - [SPECIES_ALCREMIE_RUBY_CREAM - 1] = NATIONAL_DEX_ALCREMIE, - [SPECIES_ALCREMIE_MATCHA_CREAM - 1] = NATIONAL_DEX_ALCREMIE, - [SPECIES_ALCREMIE_MINT_CREAM - 1] = NATIONAL_DEX_ALCREMIE, - [SPECIES_ALCREMIE_LEMON_CREAM - 1] = NATIONAL_DEX_ALCREMIE, - [SPECIES_ALCREMIE_SALTED_CREAM - 1] = NATIONAL_DEX_ALCREMIE, - [SPECIES_ALCREMIE_RUBY_SWIRL - 1] = NATIONAL_DEX_ALCREMIE, - [SPECIES_ALCREMIE_CARAMEL_SWIRL - 1] = NATIONAL_DEX_ALCREMIE, - [SPECIES_ALCREMIE_RAINBOW_SWIRL - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL - 1] = NATIONAL_DEX_ALCREMIE, // Eiscue [SPECIES_EISCUE_NOICE_FACE - 1] = NATIONAL_DEX_EISCUE, // Indeedee @@ -1720,7 +1720,7 @@ static const u16 sSpeciesToNationalPokedexNum[NUM_SPECIES - 1] = [SPECIES_ALCREMIE_GIGANTAMAX - 1] = NATIONAL_DEX_ALCREMIE, [SPECIES_COPPERAJAH_GIGANTAMAX - 1] = NATIONAL_DEX_COPPERAJAH, [SPECIES_DURALUDON_GIGANTAMAX - 1] = NATIONAL_DEX_DURALUDON, - [SPECIES_URSHIFU_GIGANTAMAX - 1] = NATIONAL_DEX_URSHIFU, + [SPECIES_URSHIFU_SINGLE_STRIKE_STYLE_GIGANTAMAX - 1] = NATIONAL_DEX_URSHIFU, [SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX - 1] = NATIONAL_DEX_URSHIFU, #endif }; @@ -2368,7 +2368,7 @@ const u8 sMonFrontAnimIdsTable[NUM_SPECIES - 1] = [SPECIES_ARMALDO - 1] = ANIM_V_SHAKE, [SPECIES_FEEBAS - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES_SLOW, [SPECIES_MILOTIC - 1] = ANIM_CIRCULAR_STRETCH_TWICE, - [SPECIES_CASTFORM - 1] = ANIM_H_SLIDE_WOBBLE, + [SPECIES_CASTFORM_NORMAL - 1] = ANIM_H_SLIDE_WOBBLE, [SPECIES_KECLEON - 1] = ANIM_FLICKER_INCREASING, [SPECIES_SHUPPET - 1] = ANIM_V_SLIDE_WOBBLE, [SPECIES_BANETTE - 1] = ANIM_CIRCULAR_STRETCH_TWICE, @@ -2403,7 +2403,7 @@ const u8 sMonFrontAnimIdsTable[NUM_SPECIES - 1] = [SPECIES_GROUDON - 1] = ANIM_V_SHAKE, [SPECIES_RAYQUAZA - 1] = ANIM_H_SHAKE, [SPECIES_JIRACHI - 1] = ANIM_RISING_WOBBLE, - [SPECIES_DEOXYS - 1] = ANIM_GROW_VIBRATE, + [SPECIES_DEOXYS_NORMAL - 1] = ANIM_GROW_VIBRATE, // Gen 4 [SPECIES_TURTWIG - 1] = ANIM_V_SQUISH_AND_BOUNCE, @@ -2431,8 +2431,8 @@ const u8 sMonFrontAnimIdsTable[NUM_SPECIES - 1] = [SPECIES_RAMPARDOS - 1] = ANIM_V_SHAKE_TWICE, [SPECIES_SHIELDON - 1] = ANIM_V_SHAKE, [SPECIES_BASTIODON - 1] = ANIM_BACK_AND_LUNGE, - [SPECIES_BURMY - 1] = ANIM_V_STRETCH, - [SPECIES_WORMADAM - 1] = ANIM_SWING_CONVEX_FAST_SHORT, + [SPECIES_BURMY_PLANT_CLOAK - 1] = ANIM_V_STRETCH, + [SPECIES_WORMADAM_PLANT_CLOAK - 1] = ANIM_SWING_CONVEX_FAST_SHORT, [SPECIES_MOTHIM - 1] = ANIM_H_SLIDE_WOBBLE, [SPECIES_COMBEE - 1] = ANIM_V_SLIDE_WOBBLE, [SPECIES_VESPIQUEN - 1] = ANIM_LUNGE_GROW, @@ -2440,9 +2440,9 @@ const u8 sMonFrontAnimIdsTable[NUM_SPECIES - 1] = [SPECIES_BUIZEL - 1] = ANIM_GROW_VIBRATE, [SPECIES_FLOATZEL - 1] = ANIM_H_JUMPS_V_STRETCH, [SPECIES_CHERUBI - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_CHERRIM - 1] = ANIM_DEEP_V_SQUISH_AND_BOUNCE, - [SPECIES_SHELLOS - 1] = ANIM_V_STRETCH, - [SPECIES_GASTRODON - 1] = ANIM_CIRCULAR_STRETCH_TWICE, + [SPECIES_CHERRIM_OVERCAST - 1] = ANIM_DEEP_V_SQUISH_AND_BOUNCE, + [SPECIES_SHELLOS_WEST_SEA - 1] = ANIM_V_STRETCH, + [SPECIES_GASTRODON_WEST_SEA - 1] = ANIM_CIRCULAR_STRETCH_TWICE, [SPECIES_AMBIPOM - 1] = ANIM_BACK_AND_LUNGE, [SPECIES_DRIFLOON - 1] = ANIM_V_SLIDE_WOBBLE, [SPECIES_DRIFBLIM - 1] = ANIM_V_SLIDE_WOBBLE, @@ -2506,13 +2506,13 @@ const u8 sMonFrontAnimIdsTable[NUM_SPECIES - 1] = [SPECIES_PALKIA - 1] = ANIM_V_SHAKE, [SPECIES_HEATRAN - 1] = ANIM_GLOW_ORANGE, [SPECIES_REGIGIGAS - 1] = ANIM_V_SHAKE, - [SPECIES_GIRATINA - 1] = ANIM_GROW_VIBRATE, + [SPECIES_GIRATINA_ALTERED - 1] = ANIM_GROW_VIBRATE, [SPECIES_CRESSELIA - 1] = ANIM_H_SLIDE_WOBBLE, [SPECIES_PHIONE - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_MANAPHY - 1] = ANIM_SWING_CONVEX, [SPECIES_DARKRAI - 1] = ANIM_GLOW_BLACK, - [SPECIES_SHAYMIN - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_ARCEUS - 1] = ANIM_GROW_VIBRATE, + [SPECIES_SHAYMIN_LAND - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ARCEUS_NORMAL - 1] = ANIM_GROW_VIBRATE, // Gen 5 [SPECIES_VICTINI - 1] = ANIM_H_JUMPS, @@ -2571,12 +2571,12 @@ const u8 sMonFrontAnimIdsTable[NUM_SPECIES - 1] = [SPECIES_WHIMSICOTT - 1] = ANIM_SHRINK_GROW, [SPECIES_PETILIL - 1] = ANIM_H_JUMPS_V_STRETCH, [SPECIES_LILLIGANT - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_BASCULIN - 1] = ANIM_TIP_MOVE_FORWARD, + [SPECIES_BASCULIN_RED_STRIPED - 1] = ANIM_TIP_MOVE_FORWARD, [SPECIES_SANDILE - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_KROKOROK - 1] = ANIM_V_STRETCH, [SPECIES_KROOKODILE - 1] = ANIM_SWING_CONCAVE_FAST_SHORT, [SPECIES_DARUMAKA - 1] = ANIM_SWING_CONCAVE, - [SPECIES_DARMANITAN - 1] = ANIM_CIRCULAR_STRETCH_TWICE, + [SPECIES_DARMANITAN_STANDARD_MODE - 1] = ANIM_CIRCULAR_STRETCH_TWICE, [SPECIES_MARACTUS - 1] = ANIM_H_JUMPS_V_STRETCH, [SPECIES_DWEBBLE - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_CRUSTLE - 1] = ANIM_H_SLIDE_SLOW, @@ -2606,8 +2606,8 @@ const u8 sMonFrontAnimIdsTable[NUM_SPECIES - 1] = [SPECIES_VANILLITE - 1] = ANIM_H_SLIDE, [SPECIES_VANILLISH - 1] = ANIM_GROW_VIBRATE, [SPECIES_VANILLUXE - 1] = ANIM_GROW_VIBRATE, - [SPECIES_DEERLING - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_SAWSBUCK - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_DEERLING_SPRING - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_SAWSBUCK_SPRING - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_EMOLGA - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, [SPECIES_KARRABLAST - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_ESCAVALIER - 1] = ANIM_BACK_AND_LUNGE, @@ -2662,14 +2662,14 @@ const u8 sMonFrontAnimIdsTable[NUM_SPECIES - 1] = [SPECIES_COBALION - 1] = ANIM_V_STRETCH, [SPECIES_TERRAKION - 1] = ANIM_V_SHAKE_TWICE, [SPECIES_VIRIZION - 1] = ANIM_GROW_VIBRATE, - [SPECIES_TORNADUS - 1] = ANIM_FIGURE_8, - [SPECIES_THUNDURUS - 1] = ANIM_FIGURE_8, + [SPECIES_TORNADUS_INCARNATE - 1] = ANIM_FIGURE_8, + [SPECIES_THUNDURUS_INCARNATE - 1] = ANIM_FIGURE_8, [SPECIES_RESHIRAM - 1] = ANIM_V_SHAKE, [SPECIES_ZEKROM - 1] = ANIM_V_SHAKE, - [SPECIES_LANDORUS - 1] = ANIM_FIGURE_8, + [SPECIES_LANDORUS_INCARNATE - 1] = ANIM_FIGURE_8, [SPECIES_KYUREM - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_KELDEO - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_MELOETTA - 1] = ANIM_GROW_VIBRATE, + [SPECIES_KELDEO_ORDINARY - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_MELOETTA_ARIA - 1] = ANIM_GROW_VIBRATE, [SPECIES_GENESECT - 1] = ANIM_H_VIBRATE, // Gen 6 @@ -2689,22 +2689,22 @@ const u8 sMonFrontAnimIdsTable[NUM_SPECIES - 1] = [SPECIES_TALONFLAME - 1] = ANIM_SWING_CONCAVE_FAST, [SPECIES_SCATTERBUG - 1] = ANIM_V_STRETCH, [SPECIES_SPEWPA - 1] = ANIM_V_SHAKE, - [SPECIES_VIVILLON - 1] = ANIM_ZIGZAG_SLOW, + [SPECIES_VIVILLON_ICY_SNOW - 1] = ANIM_ZIGZAG_SLOW, [SPECIES_LITLEO - 1] = ANIM_BACK_AND_LUNGE, [SPECIES_PYROAR - 1] = ANIM_V_SHAKE, - [SPECIES_FLABEBE - 1] = ANIM_SWING_CONCAVE_FAST_SHORT, - [SPECIES_FLOETTE - 1] = ANIM_V_SLIDE_WOBBLE, - [SPECIES_FLORGES - 1] = ANIM_GROW_VIBRATE, + [SPECIES_FLABEBE_RED_FLOWER - 1] = ANIM_SWING_CONCAVE_FAST_SHORT, + [SPECIES_FLOETTE_RED_FLOWER - 1] = ANIM_V_SLIDE_WOBBLE, + [SPECIES_FLORGES_RED_FLOWER - 1] = ANIM_GROW_VIBRATE, [SPECIES_SKIDDO - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_GOGOAT - 1] = ANIM_V_STRETCH, [SPECIES_PANCHAM - 1] = ANIM_H_STRETCH, [SPECIES_PANGORO - 1] = ANIM_BACK_AND_LUNGE, - [SPECIES_FURFROU - 1] = ANIM_H_SLIDE, + [SPECIES_FURFROU_NATURAL - 1] = ANIM_H_SLIDE, [SPECIES_ESPURR - 1] = ANIM_V_STRETCH, - [SPECIES_MEOWSTIC - 1] = ANIM_GROW_VIBRATE, + [SPECIES_MEOWSTIC_MALE - 1] = ANIM_GROW_VIBRATE, [SPECIES_HONEDGE - 1] = ANIM_SWING_CONVEX, [SPECIES_DOUBLADE - 1] = ANIM_GROW_VIBRATE, - [SPECIES_AEGISLASH - 1] = ANIM_H_VIBRATE, + [SPECIES_AEGISLASH_SHIELD - 1] = ANIM_H_VIBRATE, [SPECIES_SPRITZEE - 1] = ANIM_V_SLIDE_WOBBLE, [SPECIES_AROMATISSE - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, [SPECIES_SWIRLIX - 1] = ANIM_H_JUMPS_V_STRETCH, @@ -2733,17 +2733,17 @@ const u8 sMonFrontAnimIdsTable[NUM_SPECIES - 1] = [SPECIES_KLEFKI - 1] = ANIM_FOUR_PETAL, [SPECIES_PHANTUMP - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_TREVENANT - 1] = ANIM_H_SLIDE_SLOW, - [SPECIES_PUMPKABOO - 1] = ANIM_V_SLIDE_WOBBLE, - [SPECIES_GOURGEIST - 1] = ANIM_SHRINK_GROW, + [SPECIES_PUMPKABOO_AVERAGE - 1] = ANIM_V_SLIDE_WOBBLE, + [SPECIES_GOURGEIST_AVERAGE - 1] = ANIM_SHRINK_GROW, [SPECIES_BERGMITE - 1] = ANIM_LUNGE_GROW, [SPECIES_AVALUGG - 1] = ANIM_V_SHAKE, [SPECIES_NOIBAT - 1] = ANIM_RISING_WOBBLE, [SPECIES_NOIVERN - 1] = ANIM_V_STRETCH, - [SPECIES_XERNEAS - 1] = ANIM_GROW_VIBRATE, + [SPECIES_XERNEAS_NEUTRAL - 1] = ANIM_GROW_VIBRATE, [SPECIES_YVELTAL - 1] = ANIM_FRONT_FLIP, - [SPECIES_ZYGARDE - 1] = ANIM_TIP_MOVE_FORWARD, + [SPECIES_ZYGARDE_50_AURA_BREAK - 1] = ANIM_TIP_MOVE_FORWARD, [SPECIES_DIANCIE - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_HOOPA - 1] = ANIM_ZIGZAG_SLOW, + [SPECIES_HOOPA_CONFINED - 1] = ANIM_ZIGZAG_SLOW, [SPECIES_VOLCANION - 1] = ANIM_V_SHAKE_TWICE, // Gen 7 @@ -2766,12 +2766,12 @@ const u8 sMonFrontAnimIdsTable[NUM_SPECIES - 1] = [SPECIES_VIKAVOLT - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES, [SPECIES_CRABRAWLER - 1] = ANIM_V_SHAKE, [SPECIES_CRABOMINABLE - 1] = ANIM_SHRINK_GROW_VIBRATE_FAST, - [SPECIES_ORICORIO - 1] = ANIM_CONCAVE_ARC_SMALL, + [SPECIES_ORICORIO_BAILE - 1] = ANIM_CONCAVE_ARC_SMALL, [SPECIES_CUTIEFLY - 1] = ANIM_V_SLIDE_WOBBLE, [SPECIES_RIBOMBEE - 1] = ANIM_CONVEX_DOUBLE_ARC_TWICE, [SPECIES_ROCKRUFF - 1] = ANIM_V_STRETCH, - [SPECIES_LYCANROC - 1] = ANIM_V_SHAKE, - [SPECIES_WISHIWASHI - 1] = ANIM_V_SLIDE_WOBBLE_SMALL, + [SPECIES_LYCANROC_MIDDAY - 1] = ANIM_V_SHAKE, + [SPECIES_WISHIWASHI_SOLO - 1] = ANIM_V_SLIDE_WOBBLE_SMALL, [SPECIES_MAREANIE - 1] = ANIM_GLOW_PURPLE, [SPECIES_TOXAPEX - 1] = ANIM_SHAKE_GLOW_PURPLE_SLOW, [SPECIES_MUDBRAY - 1] = ANIM_V_SHAKE, @@ -2798,12 +2798,12 @@ const u8 sMonFrontAnimIdsTable[NUM_SPECIES - 1] = [SPECIES_PALOSSAND - 1] = ANIM_H_VIBRATE, [SPECIES_PYUKUMUKU - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_TYPE_NULL - 1] = ANIM_H_SHAKE, - [SPECIES_SILVALLY - 1] = ANIM_V_SHAKE, - [SPECIES_MINIOR - 1] = ANIM_TUMBLING_FRONT_FLIP_TWICE, + [SPECIES_SILVALLY_NORMAL - 1] = ANIM_V_SHAKE, + [SPECIES_MINIOR_METEOR_RED - 1] = ANIM_TUMBLING_FRONT_FLIP_TWICE, [SPECIES_KOMALA - 1] = ANIM_H_DIP, [SPECIES_TURTONATOR - 1] = ANIM_SHAKE_GLOW_RED, [SPECIES_TOGEDEMARU - 1] = ANIM_SHAKE_FLASH_YELLOW, - [SPECIES_MIMIKYU - 1] = ANIM_DEEP_V_SQUISH_AND_BOUNCE, + [SPECIES_MIMIKYU_DISGUISED - 1] = ANIM_DEEP_V_SQUISH_AND_BOUNCE, [SPECIES_BRUXISH - 1] = ANIM_RISING_WOBBLE, [SPECIES_DRAMPA - 1] = ANIM_V_SHAKE, [SPECIES_DHELMISE - 1] = ANIM_SWING_CONVEX, @@ -2876,13 +2876,13 @@ const u8 sMonFrontAnimIdsTable[NUM_SPECIES - 1] = [SPECIES_ARROKUDA - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_BARRASKEWDA - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_TOXEL - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_TOXTRICITY - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_TOXTRICITY_AMPED - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_SIZZLIPEDE - 1] = ANIM_H_VIBRATE, [SPECIES_CENTISKORCH - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_CLOBBOPUS - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_GRAPPLOCT - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_SINISTEA - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_POLTEAGEIST - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_SINISTEA_PHONY - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_POLTEAGEIST_PHONY - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_HATENNA - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_HATTREM - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_HATTERENE - 1] = ANIM_V_SQUISH_AND_BOUNCE, @@ -2896,15 +2896,15 @@ const u8 sMonFrontAnimIdsTable[NUM_SPECIES - 1] = [SPECIES_MR_RIME - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_RUNERIGUS - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_MILCERY - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_ALCREMIE - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_FALINKS - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_PINCURCHIN - 1] = ANIM_SHRINK_GROW_VIBRATE, [SPECIES_SNOM - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_FROSMOTH - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_STONJOURNER - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_EISCUE - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_INDEEDEE - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_MORPEKO - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_EISCUE_ICE_FACE - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_INDEEDEE_MALE - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_MORPEKO_FULL_BELLY - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_CUFANT - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_COPPERAJAH - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_DRACOZOLT - 1] = ANIM_V_SQUISH_AND_BOUNCE, @@ -2915,11 +2915,11 @@ const u8 sMonFrontAnimIdsTable[NUM_SPECIES - 1] = [SPECIES_DREEPY - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_DRAKLOAK - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_DRAGAPULT - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_ZACIAN - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_ZAMAZENTA - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ZACIAN_HERO_OF_MANY_BATTLES - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ZAMAZENTA_HERO_OF_MANY_BATTLES - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_ETERNATUS - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_KUBFU - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_URSHIFU - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_URSHIFU_SINGLE_STRIKE_STYLE - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_ZARUDE - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_REGIELEKI - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_REGIDRAGO - 1] = ANIM_V_SQUISH_AND_BOUNCE, @@ -2929,10 +2929,10 @@ const u8 sMonFrontAnimIdsTable[NUM_SPECIES - 1] = [SPECIES_WYRDEER - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_KLEAVOR - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_URSALUNA - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_BASCULEGION - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_BASCULEGION_MALE - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_SNEASLER - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_OVERQWIL - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_ENAMORUS - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ENAMORUS_INCARNATE - 1] = ANIM_V_SQUISH_AND_BOUNCE, // Gen 3 Forms [SPECIES_CASTFORM_SUNNY - 1] = ANIM_GROW_VIBRATE, @@ -3050,7 +3050,7 @@ const u8 sMonFrontAnimIdsTable[NUM_SPECIES - 1] = [SPECIES_GOURGEIST_LARGE - 1] = ANIM_SHRINK_GROW, [SPECIES_GOURGEIST_SUPER - 1] = ANIM_SHRINK_GROW, [SPECIES_XERNEAS_ACTIVE - 1] = ANIM_GROW_VIBRATE, - [SPECIES_ZYGARDE_10 - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ZYGARDE_10_AURA_BREAK - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_ZYGARDE_10_POWER_CONSTRUCT - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_ZYGARDE_50_POWER_CONSTRUCT - 1] = ANIM_TIP_MOVE_FORWARD, [SPECIES_ZYGARDE_COMPLETE - 1] = ANIM_GROW_VIBRATE, diff --git a/src/pokemon_animation.c b/src/pokemon_animation.c index 958bc3ffeb..1070c22aa8 100644 --- a/src/pokemon_animation.c +++ b/src/pokemon_animation.c @@ -569,7 +569,7 @@ static const u8 sSpeciesToBackAnimSet[NUM_SPECIES] = [SPECIES_ARMALDO] = BACK_ANIM_V_SHAKE, [SPECIES_FEEBAS] = BACK_ANIM_H_SPRING, [SPECIES_MILOTIC] = BACK_ANIM_SHAKE_GLOW_BLUE, - [SPECIES_CASTFORM] = BACK_ANIM_CONVEX_DOUBLE_ARC, + [SPECIES_CASTFORM_NORMAL] = BACK_ANIM_CONVEX_DOUBLE_ARC, [SPECIES_KECLEON] = BACK_ANIM_H_VIBRATE, [SPECIES_SHUPPET] = BACK_ANIM_H_VIBRATE, [SPECIES_BANETTE] = BACK_ANIM_H_VIBRATE, @@ -604,7 +604,7 @@ static const u8 sSpeciesToBackAnimSet[NUM_SPECIES] = [SPECIES_GROUDON] = BACK_ANIM_SHAKE_GLOW_RED, [SPECIES_RAYQUAZA] = BACK_ANIM_GROW_STUTTER, [SPECIES_JIRACHI] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_DEOXYS] = BACK_ANIM_SHRINK_GROW_VIBRATE, + [SPECIES_DEOXYS_NORMAL] = BACK_ANIM_SHRINK_GROW_VIBRATE, // Gen 4 [SPECIES_TURTWIG] = BACK_ANIM_H_SLIDE, @@ -632,8 +632,8 @@ static const u8 sSpeciesToBackAnimSet[NUM_SPECIES] = [SPECIES_RAMPARDOS] = BACK_ANIM_V_SHAKE_LOW, [SPECIES_SHIELDON] = BACK_ANIM_V_SHAKE, [SPECIES_BASTIODON] = BACK_ANIM_V_SHAKE_LOW, - [SPECIES_BURMY] = BACK_ANIM_H_SHAKE, - [SPECIES_WORMADAM] = BACK_ANIM_V_SHAKE, + [SPECIES_BURMY_PLANT_CLOAK] = BACK_ANIM_H_SHAKE, + [SPECIES_WORMADAM_PLANT_CLOAK] = BACK_ANIM_V_SHAKE, [SPECIES_MOTHIM] = BACK_ANIM_H_SHAKE, [SPECIES_COMBEE] = BACK_ANIM_TRIANGLE_DOWN, [SPECIES_VESPIQUEN] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, @@ -641,8 +641,8 @@ static const u8 sSpeciesToBackAnimSet[NUM_SPECIES] = [SPECIES_BUIZEL] = BACK_ANIM_H_SLIDE, [SPECIES_FLOATZEL] = BACK_ANIM_V_STRETCH, [SPECIES_CHERUBI] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_CHERRIM] = BACK_ANIM_V_STRETCH, - [SPECIES_SHELLOS] = BACK_ANIM_H_SPRING, + [SPECIES_CHERRIM_OVERCAST] = BACK_ANIM_V_STRETCH, + [SPECIES_SHELLOS_WEST_SEA] = BACK_ANIM_H_SPRING, [SPECIES_GASTRODON] = BACK_ANIM_SHRINK_GROW_VIBRATE, [SPECIES_AMBIPOM] = BACK_ANIM_CONCAVE_ARC_LARGE, [SPECIES_DRIFLOON] = BACK_ANIM_CONCAVE_ARC_SMALL, @@ -707,13 +707,13 @@ static const u8 sSpeciesToBackAnimSet[NUM_SPECIES] = [SPECIES_PALKIA] = BACK_ANIM_H_SHAKE, [SPECIES_HEATRAN] = BACK_ANIM_SHAKE_GLOW_RED, [SPECIES_REGIGIGAS] = BACK_ANIM_V_SHAKE_LOW, - [SPECIES_GIRATINA] = BACK_ANIM_V_SHAKE_LOW, + [SPECIES_GIRATINA_ALTERED] = BACK_ANIM_V_SHAKE_LOW, [SPECIES_CRESSELIA] = BACK_ANIM_CONVEX_DOUBLE_ARC, [SPECIES_PHIONE] = BACK_ANIM_CONVEX_DOUBLE_ARC, [SPECIES_MANAPHY] = BACK_ANIM_CONVEX_DOUBLE_ARC, [SPECIES_DARKRAI] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_SHAYMIN] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_ARCEUS] = BACK_ANIM_GROW, + [SPECIES_SHAYMIN_LAND] = BACK_ANIM_CONCAVE_ARC_SMALL, + [SPECIES_ARCEUS_NORMAL] = BACK_ANIM_GROW, // Gen 5 [SPECIES_VICTINI] = BACK_ANIM_H_SHAKE, @@ -772,12 +772,12 @@ static const u8 sSpeciesToBackAnimSet[NUM_SPECIES] = [SPECIES_WHIMSICOTT] = BACK_ANIM_CONCAVE_ARC_LARGE, [SPECIES_PETILIL] = BACK_ANIM_V_STRETCH, [SPECIES_LILLIGANT] = BACK_ANIM_SHRINK_GROW, - [SPECIES_BASCULIN] = BACK_ANIM_JOLT_RIGHT, + [SPECIES_BASCULIN_RED_STRIPED] = BACK_ANIM_JOLT_RIGHT, [SPECIES_SANDILE] = BACK_ANIM_H_SLIDE, [SPECIES_KROKOROK] = BACK_ANIM_V_STRETCH, [SPECIES_KROOKODILE] = BACK_ANIM_V_SHAKE_LOW, [SPECIES_DARUMAKA] = BACK_ANIM_CONCAVE_ARC_LARGE, - [SPECIES_DARMANITAN] = BACK_ANIM_V_SHAKE_H_SLIDE, + [SPECIES_DARMANITAN_STANDARD_MODE] = BACK_ANIM_V_SHAKE_H_SLIDE, [SPECIES_MARACTUS] = BACK_ANIM_CONCAVE_ARC_LARGE, [SPECIES_DWEBBLE] = BACK_ANIM_H_SLIDE, [SPECIES_CRUSTLE] = BACK_ANIM_V_SHAKE_LOW, @@ -807,8 +807,8 @@ static const u8 sSpeciesToBackAnimSet[NUM_SPECIES] = [SPECIES_VANILLITE] = BACK_ANIM_H_SLIDE, [SPECIES_VANILLISH] = BACK_ANIM_H_SLIDE, [SPECIES_VANILLUXE] = BACK_ANIM_H_SHAKE, - [SPECIES_DEERLING] = BACK_ANIM_H_SLIDE, - [SPECIES_SAWSBUCK] = BACK_ANIM_DIP_RIGHT_SIDE, + [SPECIES_DEERLING_SPRING] = BACK_ANIM_H_SLIDE, + [SPECIES_SAWSBUCK_SPRING] = BACK_ANIM_DIP_RIGHT_SIDE, [SPECIES_EMOLGA] = BACK_ANIM_CONVEX_DOUBLE_ARC, [SPECIES_KARRABLAST] = BACK_ANIM_CONCAVE_ARC_LARGE, [SPECIES_ESCAVALIER] = BACK_ANIM_JOLT_RIGHT, @@ -863,14 +863,14 @@ static const u8 sSpeciesToBackAnimSet[NUM_SPECIES] = [SPECIES_COBALION] = BACK_ANIM_V_STRETCH, [SPECIES_TERRAKION] = BACK_ANIM_V_SHAKE_LOW, [SPECIES_VIRIZION] = BACK_ANIM_H_SHAKE, - [SPECIES_TORNADUS] = BACK_ANIM_V_SHAKE, - [SPECIES_THUNDURUS] = BACK_ANIM_V_SHAKE, + [SPECIES_TORNADUS_INCARNATE] = BACK_ANIM_V_SHAKE, + [SPECIES_THUNDURUS_INCARNATE] = BACK_ANIM_V_SHAKE, [SPECIES_RESHIRAM] = BACK_ANIM_SHAKE_GLOW_RED, [SPECIES_ZEKROM] = BACK_ANIM_SHAKE_GLOW_BLUE, - [SPECIES_LANDORUS] = BACK_ANIM_V_SHAKE, + [SPECIES_LANDORUS_INCARNATE] = BACK_ANIM_V_SHAKE, [SPECIES_KYUREM] = BACK_ANIM_V_SHAKE_LOW, - [SPECIES_KELDEO] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_MELOETTA] = BACK_ANIM_CONVEX_DOUBLE_ARC, + [SPECIES_KELDEO_ORDINARY] = BACK_ANIM_JOLT_RIGHT, + [SPECIES_MELOETTA_ARIA] = BACK_ANIM_CONVEX_DOUBLE_ARC, [SPECIES_GENESECT] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, // Gen 6 @@ -890,22 +890,22 @@ static const u8 sSpeciesToBackAnimSet[NUM_SPECIES] = [SPECIES_TALONFLAME] = BACK_ANIM_SHAKE_GLOW_RED, [SPECIES_SCATTERBUG] = BACK_ANIM_H_SLIDE, [SPECIES_SPEWPA] = BACK_ANIM_H_VIBRATE, - [SPECIES_VIVILLON] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, + [SPECIES_VIVILLON_ICY_SNOW] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, [SPECIES_LITLEO] = BACK_ANIM_CONCAVE_ARC_SMALL, [SPECIES_PYROAR] = BACK_ANIM_H_STRETCH, - [SPECIES_FLABEBE] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_FLOETTE] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_FLORGES] = BACK_ANIM_SHRINK_GROW_VIBRATE, + [SPECIES_FLABEBE_RED_FLOWER] = BACK_ANIM_CONCAVE_ARC_SMALL, + [SPECIES_FLOETTE_RED_FLOWER] = BACK_ANIM_CONVEX_DOUBLE_ARC, + [SPECIES_FLORGES_RED_FLOWER] = BACK_ANIM_SHRINK_GROW_VIBRATE, [SPECIES_SKIDDO] = BACK_ANIM_CONCAVE_ARC_SMALL, [SPECIES_GOGOAT] = BACK_ANIM_DIP_RIGHT_SIDE, [SPECIES_PANCHAM] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, [SPECIES_PANGORO] = BACK_ANIM_V_SHAKE_LOW, - [SPECIES_FURFROU] = BACK_ANIM_V_STRETCH, + [SPECIES_FURFROU_NATURAL] = BACK_ANIM_V_STRETCH, [SPECIES_ESPURR] = BACK_ANIM_H_SLIDE, - [SPECIES_MEOWSTIC] = BACK_ANIM_CONCAVE_ARC_LARGE, + [SPECIES_MEOWSTIC_MALE] = BACK_ANIM_CONCAVE_ARC_LARGE, [SPECIES_HONEDGE] = BACK_ANIM_V_SHAKE, [SPECIES_DOUBLADE] = BACK_ANIM_H_SHAKE, - [SPECIES_AEGISLASH] = BACK_ANIM_H_VIBRATE, + [SPECIES_AEGISLASH_SHIELD] = BACK_ANIM_H_VIBRATE, [SPECIES_SPRITZEE] = BACK_ANIM_TRIANGLE_DOWN, [SPECIES_AROMATISSE] = BACK_ANIM_CONVEX_DOUBLE_ARC, [SPECIES_SWIRLIX] = BACK_ANIM_H_SPRING, @@ -934,17 +934,17 @@ static const u8 sSpeciesToBackAnimSet[NUM_SPECIES] = [SPECIES_KLEFKI] = BACK_ANIM_TRIANGLE_DOWN, [SPECIES_PHANTUMP] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, [SPECIES_TREVENANT] = BACK_ANIM_V_SHAKE_LOW, - [SPECIES_PUMPKABOO] = BACK_ANIM_TRIANGLE_DOWN, - [SPECIES_GOURGEIST] = BACK_ANIM_V_STRETCH, + [SPECIES_PUMPKABOO_AVERAGE] = BACK_ANIM_TRIANGLE_DOWN, + [SPECIES_GOURGEIST_AVERAGE] = BACK_ANIM_V_STRETCH, [SPECIES_BERGMITE] = BACK_ANIM_H_SHAKE, [SPECIES_AVALUGG] = BACK_ANIM_V_SHAKE_LOW, [SPECIES_NOIBAT] = BACK_ANIM_TRIANGLE_DOWN, [SPECIES_NOIVERN] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_XERNEAS] = BACK_ANIM_V_SHAKE_LOW, + [SPECIES_XERNEAS_NEUTRAL] = BACK_ANIM_V_SHAKE_LOW, [SPECIES_YVELTAL] = BACK_ANIM_SHAKE_GLOW_RED, - [SPECIES_ZYGARDE] = BACK_ANIM_V_STRETCH, + [SPECIES_ZYGARDE_50_AURA_BREAK] = BACK_ANIM_V_STRETCH, [SPECIES_DIANCIE] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, - [SPECIES_HOOPA] = BACK_ANIM_CONVEX_DOUBLE_ARC, + [SPECIES_HOOPA_CONFINED] = BACK_ANIM_CONVEX_DOUBLE_ARC, [SPECIES_VOLCANION] = BACK_ANIM_SHAKE_GLOW_RED, // Gen 7 todo: assign @@ -1251,7 +1251,7 @@ static const u8 sSpeciesToBackAnimSet[NUM_SPECIES] = [SPECIES_GOURGEIST_LARGE] = BACK_ANIM_V_STRETCH, [SPECIES_GOURGEIST_SUPER] = BACK_ANIM_V_STRETCH, [SPECIES_XERNEAS_ACTIVE] = BACK_ANIM_SHAKE_GLOW_BLUE, - [SPECIES_ZYGARDE_10] = BACK_ANIM_JOLT_RIGHT, + [SPECIES_ZYGARDE_10_AURA_BREAK] = BACK_ANIM_JOLT_RIGHT, [SPECIES_ZYGARDE_10_POWER_CONSTRUCT] = BACK_ANIM_SHAKE_GLOW_GREEN, [SPECIES_ZYGARDE_50_POWER_CONSTRUCT] = BACK_ANIM_SHAKE_GLOW_GREEN, [SPECIES_ZYGARDE_COMPLETE] = BACK_ANIM_SHAKE_GLOW_GREEN, diff --git a/src/pokemon_icon.c b/src/pokemon_icon.c index e6848ddbc5..2207ebfa1e 100644 --- a/src/pokemon_icon.c +++ b/src/pokemon_icon.c @@ -386,7 +386,7 @@ const u8 *const gMonIconTable[NUM_SPECIES + 1] = [SPECIES_ARON] = gMonIcon_Aron, [SPECIES_LAIRON] = gMonIcon_Lairon, [SPECIES_AGGRON] = gMonIcon_Aggron, - [SPECIES_CASTFORM] = gMonIcon_Castform, + [SPECIES_CASTFORM_NORMAL] = gMonIcon_CastformNormal, [SPECIES_VOLBEAT] = gMonIcon_Volbeat, [SPECIES_ILLUMISE] = gMonIcon_Illumise, [SPECIES_LILEEP] = gMonIcon_Lileep, @@ -411,7 +411,7 @@ const u8 *const gMonIconTable[NUM_SPECIES + 1] = [SPECIES_LATIAS] = gMonIcon_Latias, [SPECIES_LATIOS] = gMonIcon_Latios, [SPECIES_JIRACHI] = gMonIcon_Jirachi, - [SPECIES_DEOXYS] = gMonIcon_Deoxys, + [SPECIES_DEOXYS_NORMAL] = gMonIcon_DeoxysNormal, [SPECIES_CHIMECHO] = gMonIcon_Chimecho, #if P_GEN_4_POKEMON == TRUE [SPECIES_TURTWIG] = gMonIcon_Turtwig, @@ -439,8 +439,8 @@ const u8 *const gMonIconTable[NUM_SPECIES + 1] = [SPECIES_RAMPARDOS] = gMonIcon_Rampardos, [SPECIES_SHIELDON] = gMonIcon_Shieldon, [SPECIES_BASTIODON] = gMonIcon_Bastiodon, - [SPECIES_BURMY] = gMonIcon_Burmy, - [SPECIES_WORMADAM] = gMonIcon_Wormadam, + [SPECIES_BURMY_PLANT_CLOAK] = gMonIcon_BurmyPlantCloak, + [SPECIES_WORMADAM_PLANT_CLOAK] = gMonIcon_WormadamPlantCloak, [SPECIES_MOTHIM] = gMonIcon_Mothim, [SPECIES_COMBEE] = gMonIcon_Combee, [SPECIES_VESPIQUEN] = gMonIcon_Vespiquen, @@ -448,9 +448,9 @@ const u8 *const gMonIconTable[NUM_SPECIES + 1] = [SPECIES_BUIZEL] = gMonIcon_Buizel, [SPECIES_FLOATZEL] = gMonIcon_Floatzel, [SPECIES_CHERUBI] = gMonIcon_Cherubi, - [SPECIES_CHERRIM] = gMonIcon_Cherrim, - [SPECIES_SHELLOS] = gMonIcon_Shellos, - [SPECIES_GASTRODON] = gMonIcon_Gastrodon, + [SPECIES_CHERRIM_OVERCAST] = gMonIcon_CherrimOvercast, + [SPECIES_SHELLOS_WEST_SEA] = gMonIcon_ShellosWestSea, + [SPECIES_GASTRODON_WEST_SEA] = gMonIcon_GastrodonWestSea, [SPECIES_AMBIPOM] = gMonIcon_Ambipom, [SPECIES_DRIFLOON] = gMonIcon_Drifloon, [SPECIES_DRIFBLIM] = gMonIcon_Drifblim, @@ -514,13 +514,13 @@ const u8 *const gMonIconTable[NUM_SPECIES + 1] = [SPECIES_PALKIA] = gMonIcon_Palkia, [SPECIES_HEATRAN] = gMonIcon_Heatran, [SPECIES_REGIGIGAS] = gMonIcon_Regigigas, - [SPECIES_GIRATINA] = gMonIcon_Giratina, + [SPECIES_GIRATINA_ALTERED] = gMonIcon_GiratinaAltered, [SPECIES_CRESSELIA] = gMonIcon_Cresselia, [SPECIES_PHIONE] = gMonIcon_Phione, [SPECIES_MANAPHY] = gMonIcon_Manaphy, [SPECIES_DARKRAI] = gMonIcon_Darkrai, - [SPECIES_SHAYMIN] = gMonIcon_Shaymin, - [SPECIES_ARCEUS] = gMonIcon_Arceus, + [SPECIES_SHAYMIN_LAND] = gMonIcon_ShayminLand, + [SPECIES_ARCEUS_NORMAL] = gMonIcon_Arceus, #endif #if P_GEN_5_POKEMON == TRUE [SPECIES_VICTINI] = gMonIcon_Victini, @@ -579,12 +579,12 @@ const u8 *const gMonIconTable[NUM_SPECIES + 1] = [SPECIES_WHIMSICOTT] = gMonIcon_Whimsicott, [SPECIES_PETILIL] = gMonIcon_Petilil, [SPECIES_LILLIGANT] = gMonIcon_Lilligant, - [SPECIES_BASCULIN] = gMonIcon_Basculin, + [SPECIES_BASCULIN_RED_STRIPED] = gMonIcon_BasculinRedStriped, [SPECIES_SANDILE] = gMonIcon_Sandile, [SPECIES_KROKOROK] = gMonIcon_Krokorok, [SPECIES_KROOKODILE] = gMonIcon_Krookodile, [SPECIES_DARUMAKA] = gMonIcon_Darumaka, - [SPECIES_DARMANITAN] = gMonIcon_Darmanitan, + [SPECIES_DARMANITAN_STANDARD_MODE] = gMonIcon_DarmanitanStandardMode, [SPECIES_MARACTUS] = gMonIcon_Maractus, [SPECIES_DWEBBLE] = gMonIcon_Dwebble, [SPECIES_CRUSTLE] = gMonIcon_Crustle, @@ -614,8 +614,8 @@ const u8 *const gMonIconTable[NUM_SPECIES + 1] = [SPECIES_VANILLITE] = gMonIcon_Vanillite, [SPECIES_VANILLISH] = gMonIcon_Vanillish, [SPECIES_VANILLUXE] = gMonIcon_Vanilluxe, - [SPECIES_DEERLING] = gMonIcon_Deerling, - [SPECIES_SAWSBUCK] = gMonIcon_Sawsbuck, + [SPECIES_DEERLING_SPRING] = gMonIcon_DeerlingSpring, + [SPECIES_SAWSBUCK_SPRING] = gMonIcon_SawsbuckSpring, [SPECIES_EMOLGA] = gMonIcon_Emolga, [SPECIES_KARRABLAST] = gMonIcon_Karrablast, [SPECIES_ESCAVALIER] = gMonIcon_Escavalier, @@ -670,14 +670,14 @@ const u8 *const gMonIconTable[NUM_SPECIES + 1] = [SPECIES_COBALION] = gMonIcon_Cobalion, [SPECIES_TERRAKION] = gMonIcon_Terrakion, [SPECIES_VIRIZION] = gMonIcon_Virizion, - [SPECIES_TORNADUS] = gMonIcon_Tornadus, - [SPECIES_THUNDURUS] = gMonIcon_Thundurus, + [SPECIES_TORNADUS_INCARNATE] = gMonIcon_TornadusIncarnate, + [SPECIES_THUNDURUS_INCARNATE] = gMonIcon_ThundurusIncarnate, [SPECIES_RESHIRAM] = gMonIcon_Reshiram, [SPECIES_ZEKROM] = gMonIcon_Zekrom, - [SPECIES_LANDORUS] = gMonIcon_Landorus, + [SPECIES_LANDORUS_INCARNATE] = gMonIcon_LandorusIncarnate, [SPECIES_KYUREM] = gMonIcon_Kyurem, - [SPECIES_KELDEO] = gMonIcon_Keldeo, - [SPECIES_MELOETTA] = gMonIcon_Meloetta, + [SPECIES_KELDEO_ORDINARY] = gMonIcon_KeldeoOrdinary, + [SPECIES_MELOETTA_ARIA] = gMonIcon_MeloettaAria, [SPECIES_GENESECT] = gMonIcon_Genesect, #endif #if P_GEN_6_POKEMON == TRUE @@ -697,22 +697,22 @@ const u8 *const gMonIconTable[NUM_SPECIES + 1] = [SPECIES_TALONFLAME] = gMonIcon_Talonflame, [SPECIES_SCATTERBUG] = gMonIcon_Scatterbug, [SPECIES_SPEWPA] = gMonIcon_Spewpa, - [SPECIES_VIVILLON] = gMonIcon_Vivillon, + [SPECIES_VIVILLON_ICY_SNOW] = gMonIcon_VivillonIcySnow, [SPECIES_LITLEO] = gMonIcon_Litleo, [SPECIES_PYROAR] = gMonIcon_Pyroar, - [SPECIES_FLABEBE] = gMonIcon_Flabebe, - [SPECIES_FLOETTE] = gMonIcon_Floette, - [SPECIES_FLORGES] = gMonIcon_Florges, + [SPECIES_FLABEBE_RED_FLOWER] = gMonIcon_FlabebeRedFlower, + [SPECIES_FLOETTE_RED_FLOWER] = gMonIcon_FloetteRedFlower, + [SPECIES_FLORGES_RED_FLOWER] = gMonIcon_FlorgesRedFlower, [SPECIES_SKIDDO] = gMonIcon_Skiddo, [SPECIES_GOGOAT] = gMonIcon_Gogoat, [SPECIES_PANCHAM] = gMonIcon_Pancham, [SPECIES_PANGORO] = gMonIcon_Pangoro, - [SPECIES_FURFROU] = gMonIcon_Furfrou, + [SPECIES_FURFROU_NATURAL] = gMonIcon_FurfrouNatural, [SPECIES_ESPURR] = gMonIcon_Espurr, - [SPECIES_MEOWSTIC] = gMonIcon_Meowstic, + [SPECIES_MEOWSTIC_MALE] = gMonIcon_MeowsticMale, [SPECIES_HONEDGE] = gMonIcon_Honedge, [SPECIES_DOUBLADE] = gMonIcon_Doublade, - [SPECIES_AEGISLASH] = gMonIcon_Aegislash, + [SPECIES_AEGISLASH_SHIELD] = gMonIcon_AegislashShield, [SPECIES_SPRITZEE] = gMonIcon_Spritzee, [SPECIES_AROMATISSE] = gMonIcon_Aromatisse, [SPECIES_SWIRLIX] = gMonIcon_Swirlix, @@ -741,17 +741,17 @@ const u8 *const gMonIconTable[NUM_SPECIES + 1] = [SPECIES_KLEFKI] = gMonIcon_Klefki, [SPECIES_PHANTUMP] = gMonIcon_Phantump, [SPECIES_TREVENANT] = gMonIcon_Trevenant, - [SPECIES_PUMPKABOO] = gMonIcon_Pumpkaboo, - [SPECIES_GOURGEIST] = gMonIcon_Gourgeist, + [SPECIES_PUMPKABOO_AVERAGE] = gMonIcon_Pumpkaboo, + [SPECIES_GOURGEIST_AVERAGE] = gMonIcon_Gourgeist, [SPECIES_BERGMITE] = gMonIcon_Bergmite, [SPECIES_AVALUGG] = gMonIcon_Avalugg, [SPECIES_NOIBAT] = gMonIcon_Noibat, [SPECIES_NOIVERN] = gMonIcon_Noivern, - [SPECIES_XERNEAS] = gMonIcon_Xerneas, + [SPECIES_XERNEAS_NEUTRAL] = gMonIcon_XerneasNeutral, [SPECIES_YVELTAL] = gMonIcon_Yveltal, - [SPECIES_ZYGARDE] = gMonIcon_Zygarde, + [SPECIES_ZYGARDE_50_AURA_BREAK] = gMonIcon_Zygarde50, [SPECIES_DIANCIE] = gMonIcon_Diancie, - [SPECIES_HOOPA] = gMonIcon_Hoopa, + [SPECIES_HOOPA_CONFINED] = gMonIcon_HoopaConfined, [SPECIES_VOLCANION] = gMonIcon_Volcanion, #endif #if P_GEN_7_POKEMON == TRUE @@ -774,12 +774,12 @@ const u8 *const gMonIconTable[NUM_SPECIES + 1] = [SPECIES_VIKAVOLT] = gMonIcon_Vikavolt, [SPECIES_CRABRAWLER] = gMonIcon_Crabrawler, [SPECIES_CRABOMINABLE] = gMonIcon_Crabominable, - [SPECIES_ORICORIO] = gMonIcon_Oricorio, + [SPECIES_ORICORIO_BAILE] = gMonIcon_OricorioBaile, [SPECIES_CUTIEFLY] = gMonIcon_Cutiefly, [SPECIES_RIBOMBEE] = gMonIcon_Ribombee, [SPECIES_ROCKRUFF] = gMonIcon_Rockruff, - [SPECIES_LYCANROC] = gMonIcon_Lycanroc, - [SPECIES_WISHIWASHI] = gMonIcon_Wishiwashi, + [SPECIES_LYCANROC_MIDDAY] = gMonIcon_LycanrocMidday, + [SPECIES_WISHIWASHI_SOLO] = gMonIcon_WishiwashiSolo, [SPECIES_MAREANIE] = gMonIcon_Mareanie, [SPECIES_TOXAPEX] = gMonIcon_Toxapex, [SPECIES_MUDBRAY] = gMonIcon_Mudbray, @@ -806,12 +806,12 @@ const u8 *const gMonIconTable[NUM_SPECIES + 1] = [SPECIES_PALOSSAND] = gMonIcon_Palossand, [SPECIES_PYUKUMUKU] = gMonIcon_Pyukumuku, [SPECIES_TYPE_NULL] = gMonIcon_TypeNull, - [SPECIES_SILVALLY] = gMonIcon_Silvally, - [SPECIES_MINIOR] = gMonIcon_Minior, + [SPECIES_SILVALLY_NORMAL] = gMonIcon_Silvally, + [SPECIES_MINIOR_METEOR_RED] = gMonIcon_MiniorMeteor, [SPECIES_KOMALA] = gMonIcon_Komala, [SPECIES_TURTONATOR] = gMonIcon_Turtonator, [SPECIES_TOGEDEMARU] = gMonIcon_Togedemaru, - [SPECIES_MIMIKYU] = gMonIcon_Mimikyu, + [SPECIES_MIMIKYU_DISGUISED] = gMonIcon_MimikyuDisguised, [SPECIES_BRUXISH] = gMonIcon_Bruxish, [SPECIES_DRAMPA] = gMonIcon_Drampa, [SPECIES_DHELMISE] = gMonIcon_Dhelmise, @@ -884,13 +884,13 @@ const u8 *const gMonIconTable[NUM_SPECIES + 1] = [SPECIES_ARROKUDA] = gMonIcon_Arrokuda, [SPECIES_BARRASKEWDA] = gMonIcon_Barraskewda, [SPECIES_TOXEL] = gMonIcon_Toxel, - [SPECIES_TOXTRICITY] = gMonIcon_Toxtricity, + [SPECIES_TOXTRICITY_AMPED] = gMonIcon_ToxtricityAmped, [SPECIES_SIZZLIPEDE] = gMonIcon_Sizzlipede, [SPECIES_CENTISKORCH] = gMonIcon_Centiskorch, [SPECIES_CLOBBOPUS] = gMonIcon_Clobbopus, [SPECIES_GRAPPLOCT] = gMonIcon_Grapploct, - [SPECIES_SINISTEA] = gMonIcon_Sinistea, - [SPECIES_POLTEAGEIST] = gMonIcon_Polteageist, + [SPECIES_SINISTEA_PHONY] = gMonIcon_Sinistea, + [SPECIES_POLTEAGEIST_PHONY] = gMonIcon_Polteageist, [SPECIES_HATENNA] = gMonIcon_Hatenna, [SPECIES_HATTREM] = gMonIcon_Hattrem, [SPECIES_HATTERENE] = gMonIcon_Hatterene, @@ -904,15 +904,15 @@ const u8 *const gMonIconTable[NUM_SPECIES + 1] = [SPECIES_MR_RIME] = gMonIcon_MrRime, [SPECIES_RUNERIGUS] = gMonIcon_Runerigus, [SPECIES_MILCERY] = gMonIcon_Milcery, - [SPECIES_ALCREMIE] = gMonIcon_Alcremie, + [SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM] = gMonIcon_Alcremie, [SPECIES_FALINKS] = gMonIcon_Falinks, [SPECIES_PINCURCHIN] = gMonIcon_Pincurchin, [SPECIES_SNOM] = gMonIcon_Snom, [SPECIES_FROSMOTH] = gMonIcon_Frosmoth, [SPECIES_STONJOURNER] = gMonIcon_Stonjourner, - [SPECIES_EISCUE] = gMonIcon_Eiscue, - [SPECIES_INDEEDEE] = gMonIcon_Indeedee, - [SPECIES_MORPEKO] = gMonIcon_Morpeko, + [SPECIES_EISCUE_ICE_FACE] = gMonIcon_EiscueIceFace, + [SPECIES_INDEEDEE_MALE] = gMonIcon_IndeedeeMale, + [SPECIES_MORPEKO_FULL_BELLY] = gMonIcon_MorpekoFullBelly, [SPECIES_CUFANT] = gMonIcon_Cufant, [SPECIES_COPPERAJAH] = gMonIcon_Copperajah, [SPECIES_DRACOZOLT] = gMonIcon_Dracozolt, @@ -923,11 +923,11 @@ const u8 *const gMonIconTable[NUM_SPECIES + 1] = [SPECIES_DREEPY] = gMonIcon_Dreepy, [SPECIES_DRAKLOAK] = gMonIcon_Drakloak, [SPECIES_DRAGAPULT] = gMonIcon_Dragapult, - [SPECIES_ZACIAN] = gMonIcon_Zacian, - [SPECIES_ZAMAZENTA] = gMonIcon_Zamazenta, + [SPECIES_ZACIAN_HERO_OF_MANY_BATTLES] = gMonIcon_ZacianHeroOfManyBattles, + [SPECIES_ZAMAZENTA_HERO_OF_MANY_BATTLES] = gMonIcon_ZamazentaHeroOfManyBattles, [SPECIES_ETERNATUS] = gMonIcon_Eternatus, [SPECIES_KUBFU] = gMonIcon_Kubfu, - [SPECIES_URSHIFU] = gMonIcon_Urshifu, + [SPECIES_URSHIFU_SINGLE_STRIKE_STYLE] = gMonIcon_UrshifuSingleStrikeStyle, [SPECIES_ZARUDE] = gMonIcon_Zarude, [SPECIES_REGIELEKI] = gMonIcon_Regieleki, [SPECIES_REGIDRAGO] = gMonIcon_Regidrago, @@ -937,10 +937,10 @@ const u8 *const gMonIconTable[NUM_SPECIES + 1] = [SPECIES_WYRDEER] = gMonIcon_Wyrdeer, [SPECIES_KLEAVOR] = gMonIcon_Kleavor, [SPECIES_URSALUNA] = gMonIcon_Ursaluna, - [SPECIES_BASCULEGION] = gMonIcon_Basculegion, + [SPECIES_BASCULEGION_MALE] = gMonIcon_BasculegionMale, [SPECIES_SNEASLER] = gMonIcon_Sneasler, [SPECIES_OVERQWIL] = gMonIcon_Overqwil, - [SPECIES_ENAMORUS] = gMonIcon_Enamorus, + [SPECIES_ENAMORUS_INCARNATE] = gMonIcon_EnamorusIncarnate, #endif [SPECIES_VENUSAUR_MEGA] = gMonIcon_VenusaurMega, [SPECIES_CHARIZARD_MEGA_X] = gMonIcon_CharizardMegaX, @@ -1033,7 +1033,7 @@ const u8 *const gMonIconTable[NUM_SPECIES + 1] = [SPECIES_LINOONE_GALARIAN] = gMonIcon_LinooneGalarian, #if P_GEN_5_POKEMON == TRUE [SPECIES_DARUMAKA_GALARIAN] = gMonIcon_DarumakaGalarian, - [SPECIES_DARMANITAN_GALARIAN] = gMonIcon_DarmanitanGalarian, + [SPECIES_DARMANITAN_GALARIAN_STANDARD_MODE] = gMonIcon_DarmanitanGalarianStandardMode, [SPECIES_YAMASK_GALARIAN] = gMonIcon_YamaskGalarian, [SPECIES_STUNFISK_GALARIAN] = gMonIcon_StunfiskGalarian, #endif @@ -1146,7 +1146,7 @@ const u8 *const gMonIconTable[NUM_SPECIES + 1] = [SPECIES_BASCULIN_BLUE_STRIPED] = gMonIcon_BasculinBlueStriped, [SPECIES_BASCULIN_WHITE_STRIPED] = gMonIcon_BasculinWhiteStriped, [SPECIES_DARMANITAN_ZEN_MODE] = gMonIcon_DarmanitanZenMode, - [SPECIES_DARMANITAN_ZEN_MODE_GALARIAN] = gMonIcon_DarmanitanZenModeGalarian, + [SPECIES_DARMANITAN_GALARIAN_ZEN_MODE] = gMonIcon_DarmanitanGalarianZenMode, [SPECIES_DEERLING_SUMMER] = gMonIcon_DeerlingSummer, [SPECIES_DEERLING_AUTUMN] = gMonIcon_DeerlingAutumn, [SPECIES_DEERLING_WINTER] = gMonIcon_DeerlingWinter, @@ -1218,9 +1218,9 @@ const u8 *const gMonIconTable[NUM_SPECIES + 1] = [SPECIES_GOURGEIST_LARGE] = gMonIcon_Gourgeist, [SPECIES_GOURGEIST_SUPER] = gMonIcon_Gourgeist, [SPECIES_XERNEAS_ACTIVE] = gMonIcon_XerneasActive, - [SPECIES_ZYGARDE_10] = gMonIcon_Zygarde10, + [SPECIES_ZYGARDE_10_AURA_BREAK] = gMonIcon_Zygarde10, [SPECIES_ZYGARDE_10_POWER_CONSTRUCT] = gMonIcon_Zygarde10, - [SPECIES_ZYGARDE_50_POWER_CONSTRUCT] = gMonIcon_Zygarde, + [SPECIES_ZYGARDE_50_POWER_CONSTRUCT] = gMonIcon_Zygarde50, [SPECIES_ZYGARDE_COMPLETE] = gMonIcon_ZygardeComplete, [SPECIES_HOOPA_UNBOUND] = gMonIcon_HoopaUnbound, #endif @@ -1249,12 +1249,12 @@ const u8 *const gMonIconTable[NUM_SPECIES + 1] = [SPECIES_SILVALLY_DRAGON] = gMonIcon_Silvally, [SPECIES_SILVALLY_DARK] = gMonIcon_Silvally, [SPECIES_SILVALLY_FAIRY] = gMonIcon_Silvally, - [SPECIES_MINIOR_METEOR_ORANGE] = gMonIcon_Minior, - [SPECIES_MINIOR_METEOR_YELLOW] = gMonIcon_Minior, - [SPECIES_MINIOR_METEOR_GREEN] = gMonIcon_Minior, - [SPECIES_MINIOR_METEOR_BLUE] = gMonIcon_Minior, - [SPECIES_MINIOR_METEOR_INDIGO] = gMonIcon_Minior, - [SPECIES_MINIOR_METEOR_VIOLET] = gMonIcon_Minior, + [SPECIES_MINIOR_METEOR_ORANGE] = gMonIcon_MiniorMeteor, + [SPECIES_MINIOR_METEOR_YELLOW] = gMonIcon_MiniorMeteor, + [SPECIES_MINIOR_METEOR_GREEN] = gMonIcon_MiniorMeteor, + [SPECIES_MINIOR_METEOR_BLUE] = gMonIcon_MiniorMeteor, + [SPECIES_MINIOR_METEOR_INDIGO] = gMonIcon_MiniorMeteor, + [SPECIES_MINIOR_METEOR_VIOLET] = gMonIcon_MiniorMeteor, [SPECIES_MINIOR_CORE_RED] = gMonIcon_MiniorCoreRed, [SPECIES_MINIOR_CORE_ORANGE] = gMonIcon_MiniorCoreOrange, [SPECIES_MINIOR_CORE_YELLOW] = gMonIcon_MiniorCoreYellow, @@ -1274,21 +1274,21 @@ const u8 *const gMonIconTable[NUM_SPECIES + 1] = [SPECIES_TOXTRICITY_LOW_KEY] = gMonIcon_ToxtricityLowKey, [SPECIES_SINISTEA_ANTIQUE] = gMonIcon_Sinistea, [SPECIES_POLTEAGEIST_ANTIQUE] = gMonIcon_Polteageist, - [SPECIES_ALCREMIE_RUBY_CREAM] = gMonIcon_QuestionMark,//gMonIcon_AlcremieRubyCream, - [SPECIES_ALCREMIE_MATCHA_CREAM] = gMonIcon_QuestionMark,//gMonIcon_AlcremieMatchaCream, - [SPECIES_ALCREMIE_MINT_CREAM] = gMonIcon_QuestionMark,//gMonIcon_AlcremieMintCream, - [SPECIES_ALCREMIE_LEMON_CREAM] = gMonIcon_QuestionMark,//gMonIcon_AlcremieLemonCream, - [SPECIES_ALCREMIE_SALTED_CREAM] = gMonIcon_QuestionMark,//gMonIcon_AlcremieSaltedCream, - [SPECIES_ALCREMIE_RUBY_SWIRL] = gMonIcon_QuestionMark,//gMonIcon_AlcremieRubySwirl, - [SPECIES_ALCREMIE_CARAMEL_SWIRL] = gMonIcon_QuestionMark,//gMonIcon_AlcremieCaramelSwirl, - [SPECIES_ALCREMIE_RAINBOW_SWIRL] = gMonIcon_QuestionMark,//gMonIcon_AlcremieRainbowSwirl, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM] = gMonIcon_QuestionMark,//gMonIcon_AlcremieStrawberryRubyCream, + [SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM] = gMonIcon_QuestionMark,//gMonIcon_AlcremieStrawberryMatchaCream, + [SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM] = gMonIcon_QuestionMark,//gMonIcon_AlcremieStrawberryMintCream, + [SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM] = gMonIcon_QuestionMark,//gMonIcon_AlcremieStrawberryLemonCream, + [SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM] = gMonIcon_QuestionMark,//gMonIcon_AlcremieStrawberrySaltedCream, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL] = gMonIcon_QuestionMark,//gMonIcon_AlcremieStrawberryRubySwirl, + [SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL] = gMonIcon_QuestionMark,//gMonIcon_AlcremieStrawberryCaramelSwirl, + [SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL] = gMonIcon_QuestionMark,//gMonIcon_AlcremieStrawberryRainbowSwirl, [SPECIES_EISCUE_NOICE_FACE] = gMonIcon_EiscueNoiceFace, [SPECIES_INDEEDEE_FEMALE] = gMonIcon_IndeedeeFemale, [SPECIES_MORPEKO_HANGRY] = gMonIcon_MorpekoHangry, [SPECIES_ZACIAN_CROWNED_SWORD] = gMonIcon_ZacianCrownedSword, [SPECIES_ZAMAZENTA_CROWNED_SHIELD] = gMonIcon_ZamazentaCrownedShield, [SPECIES_ETERNATUS_ETERNAMAX] = gMonIcon_EternatusEternamax, - [SPECIES_URSHIFU_RAPID_STRIKE_STYLE] = gMonIcon_Urshifu, + [SPECIES_URSHIFU_RAPID_STRIKE_STYLE] = gMonIcon_UrshifuSingleStrikeStyle, [SPECIES_ZARUDE_DADA] = gMonIcon_ZarudeDada, [SPECIES_CALYREX_ICE_RIDER] = gMonIcon_CalyrexIceRider, [SPECIES_CALYREX_SHADOW_RIDER] = gMonIcon_CalyrexShadowRider, @@ -1327,7 +1327,7 @@ const u8 *const gMonIconTable[NUM_SPECIES + 1] = [SPECIES_ALCREMIE_GIGANTAMAX] = gMonIcon_AlcremieGigantamax, [SPECIES_COPPERAJAH_GIGANTAMAX] = gMonIcon_CopperajahGigantamax, [SPECIES_DURALUDON_GIGANTAMAX] = gMonIcon_DuraludonGigantamax, - [SPECIES_URSHIFU_GIGANTAMAX] = gMonIcon_UrshifuGigantamax, + [SPECIES_URSHIFU_SINGLE_STRIKE_STYLE_GIGANTAMAX] = gMonIcon_UrshifuSingleStrikeGigantamax, [SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX] = gMonIcon_UrshifuRapidStrikeGigantamax, #endif [SPECIES_EGG] = gMonIcon_Egg, @@ -1711,7 +1711,7 @@ const u8 gMonIconPaletteIndices[] = [SPECIES_ARON] = 2, [SPECIES_LAIRON] = 2, [SPECIES_AGGRON] = 2, - [SPECIES_CASTFORM] = 0, + [SPECIES_CASTFORM_NORMAL] = 0, [SPECIES_VOLBEAT] = 0, [SPECIES_ILLUMISE] = 2, [SPECIES_LILEEP] = 2, @@ -1736,7 +1736,7 @@ const u8 gMonIconPaletteIndices[] = [SPECIES_LATIAS] = 0, [SPECIES_LATIOS] = 0, [SPECIES_JIRACHI] = 0, - [SPECIES_DEOXYS] = 0, + [SPECIES_DEOXYS_NORMAL] = 0, [SPECIES_CHIMECHO] = 0, [SPECIES_TURTWIG] = 1, [SPECIES_GROTLE] = 1, @@ -1763,8 +1763,8 @@ const u8 gMonIconPaletteIndices[] = [SPECIES_RAMPARDOS] = 0, [SPECIES_SHIELDON] = 1, [SPECIES_BASTIODON] = 1, - [SPECIES_BURMY] = 1, - [SPECIES_WORMADAM] = 1, + [SPECIES_BURMY_PLANT_CLOAK] = 1, + [SPECIES_WORMADAM_PLANT_CLOAK] = 1, [SPECIES_MOTHIM] = 0, [SPECIES_COMBEE] = 0, [SPECIES_VESPIQUEN] = 0, @@ -1772,9 +1772,9 @@ const u8 gMonIconPaletteIndices[] = [SPECIES_BUIZEL] = 0, [SPECIES_FLOATZEL] = 0, [SPECIES_CHERUBI] = 1, - [SPECIES_CHERRIM] = 0, - [SPECIES_SHELLOS] = 0, - [SPECIES_GASTRODON] = 0, + [SPECIES_CHERRIM_OVERCAST] = 0, + [SPECIES_SHELLOS_WEST_SEA] = 0, + [SPECIES_GASTRODON_WEST_SEA] = 0, [SPECIES_AMBIPOM] = 2, [SPECIES_DRIFLOON] = 2, [SPECIES_DRIFBLIM] = 2, @@ -1838,13 +1838,13 @@ const u8 gMonIconPaletteIndices[] = [SPECIES_PALKIA] = 2, [SPECIES_HEATRAN] = 0, [SPECIES_REGIGIGAS] = 0, - [SPECIES_GIRATINA] = 0, + [SPECIES_GIRATINA_ALTERED] = 0, [SPECIES_CRESSELIA] = 0, [SPECIES_PHIONE] = 0, [SPECIES_MANAPHY] = 0, [SPECIES_DARKRAI] = 0, - [SPECIES_SHAYMIN] = 1, - [SPECIES_ARCEUS] = 1, + [SPECIES_SHAYMIN_LAND] = 1, + [SPECIES_ARCEUS_NORMAL] = 1, [SPECIES_VICTINI] = 0, [SPECIES_SNIVY] = 1, [SPECIES_SERVINE] = 1, @@ -1901,12 +1901,12 @@ const u8 gMonIconPaletteIndices[] = [SPECIES_WHIMSICOTT] = 1, [SPECIES_PETILIL] = 1, [SPECIES_LILLIGANT] = 1, - [SPECIES_BASCULIN] = 1, + [SPECIES_BASCULIN_RED_STRIPED] = 1, [SPECIES_SANDILE] = 1, [SPECIES_KROKOROK] = 1, [SPECIES_KROOKODILE] = 0, [SPECIES_DARUMAKA] = 0, - [SPECIES_DARMANITAN] = 0, + [SPECIES_DARMANITAN_STANDARD_MODE] = 0, [SPECIES_MARACTUS] = 1, [SPECIES_DWEBBLE] = 0, [SPECIES_CRUSTLE] = 2, @@ -1936,8 +1936,8 @@ const u8 gMonIconPaletteIndices[] = [SPECIES_VANILLITE] = 0, [SPECIES_VANILLISH] = 2, [SPECIES_VANILLUXE] = 2, - [SPECIES_DEERLING] = 1, - [SPECIES_SAWSBUCK] = 1, + [SPECIES_DEERLING_SPRING] = 1, + [SPECIES_SAWSBUCK_SPRING] = 1, [SPECIES_EMOLGA] = 2, [SPECIES_KARRABLAST] = 0, [SPECIES_ESCAVALIER] = 0, @@ -1992,14 +1992,14 @@ const u8 gMonIconPaletteIndices[] = [SPECIES_COBALION] = 0, [SPECIES_TERRAKION] = 2, [SPECIES_VIRIZION] = 1, - [SPECIES_TORNADUS] = 1, - [SPECIES_THUNDURUS] = 0, + [SPECIES_TORNADUS_INCARNATE] = 1, + [SPECIES_THUNDURUS_INCARNATE] = 0, [SPECIES_RESHIRAM] = 0, [SPECIES_ZEKROM] = 2, - [SPECIES_LANDORUS] = 0, + [SPECIES_LANDORUS_INCARNATE] = 0, [SPECIES_KYUREM] = 0, - [SPECIES_KELDEO] = 0, - [SPECIES_MELOETTA] = 4, + [SPECIES_KELDEO_ORDINARY] = 0, + [SPECIES_MELOETTA_ARIA] = 4, [SPECIES_GENESECT] = 2, [SPECIES_CHESPIN] = 1, [SPECIES_QUILLADIN] = 1, @@ -2017,22 +2017,22 @@ const u8 gMonIconPaletteIndices[] = [SPECIES_TALONFLAME] = 2, [SPECIES_SCATTERBUG] = 1, [SPECIES_SPEWPA] = 1, - [SPECIES_VIVILLON] = 0, + [SPECIES_VIVILLON_ICY_SNOW] = 0, [SPECIES_LITLEO] = 2, [SPECIES_PYROAR] = 2, - [SPECIES_FLABEBE] = 1, - [SPECIES_FLOETTE] = 1, - [SPECIES_FLORGES] = 0, + [SPECIES_FLABEBE_RED_FLOWER] = 1, + [SPECIES_FLOETTE_RED_FLOWER] = 1, + [SPECIES_FLORGES_RED_FLOWER] = 0, [SPECIES_SKIDDO] = 1, [SPECIES_GOGOAT] = 1, [SPECIES_PANCHAM] = 1, [SPECIES_PANGORO] = 1, - [SPECIES_FURFROU] = 0, + [SPECIES_FURFROU_NATURAL] = 0, [SPECIES_ESPURR] = 2, - [SPECIES_MEOWSTIC] = 0, + [SPECIES_MEOWSTIC_MALE] = 0, [SPECIES_HONEDGE] = 2, [SPECIES_DOUBLADE] = 2, - [SPECIES_AEGISLASH] = 2, + [SPECIES_AEGISLASH_SHIELD] = 2, [SPECIES_SPRITZEE] = 0, [SPECIES_AROMATISSE] = 0, [SPECIES_SWIRLIX] = 1, @@ -2061,17 +2061,17 @@ const u8 gMonIconPaletteIndices[] = [SPECIES_KLEFKI] = 0, [SPECIES_PHANTUMP] = 1, [SPECIES_TREVENANT] = 1, - [SPECIES_PUMPKABOO] = 2, - [SPECIES_GOURGEIST] = 2, + [SPECIES_PUMPKABOO_AVERAGE] = 2, + [SPECIES_GOURGEIST_AVERAGE] = 2, [SPECIES_BERGMITE] = 0, [SPECIES_AVALUGG] = 0, [SPECIES_NOIBAT] = 2, [SPECIES_NOIVERN] = 2, - [SPECIES_XERNEAS] = 0, + [SPECIES_XERNEAS_NEUTRAL] = 0, [SPECIES_YVELTAL] = 0, - [SPECIES_ZYGARDE] = 1, + [SPECIES_ZYGARDE_50_AURA_BREAK] = 1, [SPECIES_DIANCIE] = 1, - [SPECIES_HOOPA] = 0, + [SPECIES_HOOPA_CONFINED] = 0, [SPECIES_VOLCANION] = 0, [SPECIES_ROWLET] = 0, [SPECIES_DARTRIX] = 1, @@ -2092,12 +2092,12 @@ const u8 gMonIconPaletteIndices[] = [SPECIES_VIKAVOLT] = 0, [SPECIES_CRABRAWLER] = 2, [SPECIES_CRABOMINABLE] = 2, - [SPECIES_ORICORIO] = 0, + [SPECIES_ORICORIO_BAILE] = 0, [SPECIES_CUTIEFLY] = 2, [SPECIES_RIBOMBEE] = 2, [SPECIES_ROCKRUFF] = 2, - [SPECIES_LYCANROC] = 2, - [SPECIES_WISHIWASHI] = 2, + [SPECIES_LYCANROC_MIDDAY] = 2, + [SPECIES_WISHIWASHI_SOLO] = 2, [SPECIES_MAREANIE] = 2, [SPECIES_TOXAPEX] = 0, [SPECIES_MUDBRAY] = 2, @@ -2124,12 +2124,12 @@ const u8 gMonIconPaletteIndices[] = [SPECIES_PALOSSAND] = 2, [SPECIES_PYUKUMUKU] = 0, [SPECIES_TYPE_NULL] = 0, - [SPECIES_SILVALLY] = 0, - [SPECIES_MINIOR] = 2, + [SPECIES_SILVALLY_NORMAL] = 0, + [SPECIES_MINIOR_METEOR_RED] = 2, [SPECIES_KOMALA] = 2, [SPECIES_TURTONATOR] = 0, [SPECIES_TOGEDEMARU] = 2, - [SPECIES_MIMIKYU] = 1, + [SPECIES_MIMIKYU_DISGUISED] = 1, [SPECIES_BRUXISH] = 0, [SPECIES_DRAMPA] = 0, [SPECIES_DHELMISE] = 1, @@ -2200,13 +2200,13 @@ const u8 gMonIconPaletteIndices[] = [SPECIES_ARROKUDA] = 2, [SPECIES_BARRASKEWDA] = 2, [SPECIES_TOXEL] = 2, - [SPECIES_TOXTRICITY] = 2, + [SPECIES_TOXTRICITY_AMPED] = 2, [SPECIES_SIZZLIPEDE] = 0, [SPECIES_CENTISKORCH] = 0, [SPECIES_CLOBBOPUS] = 0, [SPECIES_GRAPPLOCT] = 2, - [SPECIES_SINISTEA] = 2, - [SPECIES_POLTEAGEIST] = 2, + [SPECIES_SINISTEA_PHONY] = 2, + [SPECIES_POLTEAGEIST_PHONY] = 2, [SPECIES_HATENNA] = 0, [SPECIES_HATTREM] = 0, [SPECIES_HATTERENE] = 0, @@ -2220,15 +2220,15 @@ const u8 gMonIconPaletteIndices[] = [SPECIES_MR_RIME] = 0, [SPECIES_RUNERIGUS] = 2, [SPECIES_MILCERY] = 1, - [SPECIES_ALCREMIE] = 1, + [SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM] = 1, [SPECIES_FALINKS] = 0, [SPECIES_PINCURCHIN] = 0, [SPECIES_SNOM] = 0, [SPECIES_FROSMOTH] = 0, [SPECIES_STONJOURNER] = 2, - [SPECIES_EISCUE] = 0, - [SPECIES_INDEEDEE] = 2, - [SPECIES_MORPEKO] = 2, + [SPECIES_EISCUE_ICE_FACE] = 0, + [SPECIES_INDEEDEE_MALE] = 2, + [SPECIES_MORPEKO_FULL_BELLY] = 2, [SPECIES_CUFANT] = 0, [SPECIES_COPPERAJAH] = 0, [SPECIES_DRACOZOLT] = 1, @@ -2239,11 +2239,11 @@ const u8 gMonIconPaletteIndices[] = [SPECIES_DREEPY] = 0, [SPECIES_DRAKLOAK] = 0, [SPECIES_DRAGAPULT] = 0, - [SPECIES_ZACIAN] = 2, - [SPECIES_ZAMAZENTA] = 2, + [SPECIES_ZACIAN_HERO_OF_MANY_BATTLES] = 2, + [SPECIES_ZAMAZENTA_HERO_OF_MANY_BATTLES] = 2, [SPECIES_ETERNATUS] = 0, [SPECIES_KUBFU] = 1, - [SPECIES_URSHIFU] = 2, + [SPECIES_URSHIFU_SINGLE_STRIKE_STYLE] = 2, [SPECIES_ZARUDE] = 1, [SPECIES_REGIELEKI] = 0, [SPECIES_REGIDRAGO] = 0, @@ -2253,10 +2253,10 @@ const u8 gMonIconPaletteIndices[] = [SPECIES_WYRDEER] = 2, [SPECIES_KLEAVOR] = 2, [SPECIES_URSALUNA] = 2, - [SPECIES_BASCULEGION] = 1, + [SPECIES_BASCULEGION_MALE] = 1, [SPECIES_SNEASLER] = 2, [SPECIES_OVERQWIL] = 2, - [SPECIES_ENAMORUS] = 1, + [SPECIES_ENAMORUS_INCARNATE] = 1, [SPECIES_VENUSAUR_MEGA] = 4, [SPECIES_CHARIZARD_MEGA_X] = 0, [SPECIES_CHARIZARD_MEGA_Y] = 0, @@ -2341,7 +2341,7 @@ const u8 gMonIconPaletteIndices[] = [SPECIES_ZIGZAGOON_GALARIAN] = 0, [SPECIES_LINOONE_GALARIAN] = 0, [SPECIES_DARUMAKA_GALARIAN] = 0, - [SPECIES_DARMANITAN_GALARIAN] = 0, + [SPECIES_DARMANITAN_GALARIAN_STANDARD_MODE] = 0, [SPECIES_YAMASK_GALARIAN] = 2, [SPECIES_STUNFISK_GALARIAN] = 1, [SPECIES_GROWLITHE_HISUIAN] = 0, @@ -2421,7 +2421,7 @@ const u8 gMonIconPaletteIndices[] = [SPECIES_BASCULIN_BLUE_STRIPED] = 0, [SPECIES_BASCULIN_WHITE_STRIPED] = 0, [SPECIES_DARMANITAN_ZEN_MODE] = 0, - [SPECIES_DARMANITAN_ZEN_MODE_GALARIAN] = 0, + [SPECIES_DARMANITAN_GALARIAN_ZEN_MODE] = 0, [SPECIES_DEERLING_SUMMER] = 1, [SPECIES_DEERLING_AUTUMN] = 0, [SPECIES_DEERLING_WINTER] = 2, @@ -2493,7 +2493,7 @@ const u8 gMonIconPaletteIndices[] = [SPECIES_GOURGEIST_LARGE] = 2, [SPECIES_GOURGEIST_SUPER] = 2, [SPECIES_XERNEAS_ACTIVE] = 0, - [SPECIES_ZYGARDE_10] = 1, + [SPECIES_ZYGARDE_10_AURA_BREAK] = 1, [SPECIES_ZYGARDE_10_POWER_CONSTRUCT] = 1, [SPECIES_ZYGARDE_50_POWER_CONSTRUCT] = 1, [SPECIES_ZYGARDE_COMPLETE] = 1, @@ -2543,14 +2543,14 @@ const u8 gMonIconPaletteIndices[] = [SPECIES_TOXTRICITY_LOW_KEY] = 2, [SPECIES_SINISTEA_ANTIQUE] = 2, [SPECIES_POLTEAGEIST_ANTIQUE] = 2, - [SPECIES_ALCREMIE_RUBY_CREAM] = 0, - [SPECIES_ALCREMIE_MATCHA_CREAM] = 0, - [SPECIES_ALCREMIE_MINT_CREAM] = 0, - [SPECIES_ALCREMIE_LEMON_CREAM] = 0, - [SPECIES_ALCREMIE_SALTED_CREAM] = 0, - [SPECIES_ALCREMIE_RUBY_SWIRL] = 0, - [SPECIES_ALCREMIE_CARAMEL_SWIRL] = 0, - [SPECIES_ALCREMIE_RAINBOW_SWIRL] = 0, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM] = 0, + [SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM] = 0, + [SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM] = 0, + [SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM] = 0, + [SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM] = 0, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL] = 0, + [SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL] = 0, + [SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL] = 0, [SPECIES_EISCUE_NOICE_FACE] = 0, [SPECIES_INDEEDEE_FEMALE] = 2, [SPECIES_MORPEKO_HANGRY] = 2, @@ -2595,7 +2595,7 @@ const u8 gMonIconPaletteIndices[] = [SPECIES_ALCREMIE_GIGANTAMAX] = 1, [SPECIES_COPPERAJAH_GIGANTAMAX] = 0, [SPECIES_DURALUDON_GIGANTAMAX] = 0, - [SPECIES_URSHIFU_GIGANTAMAX] = 0, + [SPECIES_URSHIFU_SINGLE_STRIKE_STYLE_GIGANTAMAX] = 0, [SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX] = 0, #endif [SPECIES_EGG] = 1, diff --git a/src/pokemon_jump.c b/src/pokemon_jump.c index 9478084d9b..bbbffba4b3 100755 --- a/src/pokemon_jump.c +++ b/src/pokemon_jump.c @@ -426,288 +426,288 @@ EWRAM_DATA static struct PokemonJumpGfx *sPokemonJumpGfx = NULL; */ static const struct PokemonJumpMons sPokeJumpMons[] = { - { .species = SPECIES_BULBASAUR, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_CHARMANDER, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_SQUIRTLE, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_CATERPIE, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_METAPOD, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_WEEDLE, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_KAKUNA, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_RATTATA, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_RATTATA_ALOLAN, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_RATICATE, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_RATICATE_ALOLAN, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_PIKACHU, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PIKACHU_COSPLAY, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PIKACHU_ROCK_STAR, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PIKACHU_BELLE, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PIKACHU_POP_STAR, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PIKACHU_PH_D, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PIKACHU_LIBRE, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PIKACHU_ORIGINAL_CAP, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PIKACHU_HOENN_CAP, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PIKACHU_SINNOH_CAP, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PIKACHU_UNOVA_CAP, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PIKACHU_KALOS_CAP, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PIKACHU_ALOLA_CAP, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PIKACHU_PARTNER_CAP, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PIKACHU_WORLD_CAP, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_SANDSHREW, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_SANDSHREW_ALOLAN, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_NIDORAN_F, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_NIDORAN_M, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_CLEFAIRY, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_VULPIX, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_VULPIX_ALOLAN, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_JIGGLYPUFF, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ODDISH, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_PARAS, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_MEOWTH, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_MEOWTH_ALOLAN, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_MEOWTH_GALARIAN, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PSYDUCK, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_MANKEY, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_GROWLITHE, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_POLIWAG, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_BELLSPROUT, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_SHELLDER, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_KRABBY, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_EXEGGCUTE, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_CUBONE, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_DITTO, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_EEVEE, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_OMANYTE, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_KABUTO, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_CHIKORITA, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_CYNDAQUIL, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_TOTODILE, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_SPINARAK, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_PICHU, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PICHU_SPIKY_EARED, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_CLEFFA, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_IGGLYBUFF, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_TOGEPI, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_MAREEP, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_BELLOSSOM, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_MARILL, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_SUNKERN, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_WOOPER, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_PINECO, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_SNUBBULL, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_SHUCKLE, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_TEDDIURSA, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_SLUGMA, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_SWINUB, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_HOUNDOUR, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_PHANPY, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PORYGON2, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_TYROGUE, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_SMOOCHUM, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ELEKID, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_MAGBY, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_LARVITAR, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_TREECKO, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_TORCHIC, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_MUDKIP, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_MARSHTOMP, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_POOCHYENA, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_ZIGZAGOON, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_ZIGZAGOON_GALARIAN, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_LINOONE, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_LINOONE_GALARIAN, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_WURMPLE, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_SILCOON, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_CASCOON, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_LOTAD, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_SEEDOT, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_RALTS, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_KIRLIA, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_SURSKIT, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_SHROOMISH, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_NINCADA, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_WHISMUR, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_AZURILL, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_SKITTY, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_SABLEYE, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_SABLEYE_MEGA, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_MAWILE, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_ARON, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_MEDITITE, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ELECTRIKE, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_PLUSLE, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_MINUN, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_VOLBEAT, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_ILLUMISE, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_ROSELIA, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_GULPIN, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_NUMEL, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_TORKOAL, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_SPOINK, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_TRAPINCH, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_CACNEA, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ANORITH, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_WYNAUT, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_SNORUNT, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_CLAMPERL, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_BAGON, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_TURTWIG, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_CHIMCHAR, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_PIPLUP, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_BIDOOF, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_KRICKETOT, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_SHINX, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_BUDEW, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_SHIELDON, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_PACHIRISU, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_BUIZEL, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_CHERUBI, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_CHERRIM, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_CHERRIM_SUNSHINE, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_SHELLOS, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_SHELLOS_EAST_SEA, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_BUNEARY, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_GLAMEOW, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_STUNKY, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_BONSLY, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_MIME_JR, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_HAPPINY, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_GIBLE, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_MUNCHLAX, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_RIOLU, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_CROAGUNK, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_SHAYMIN, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_SNIVY, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_TEPIG, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_OSHAWOTT, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PATRAT, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_LILLIPUP, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_PURRLOIN, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_PANSAGE, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PANSEAR, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PANPOUR, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_ROGGENROLA, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_DRILBUR, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_EXCADRILL, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_TIMBURR, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_SEWADDLE, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_SWADLOON, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_VENIPEDE, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_PETILIL, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_SANDILE, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_DARUMAKA, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_DARUMAKA_GALARIAN, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_DWEBBLE, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_SCRAGGY, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ARCHEN, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_TRUBBISH, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_ZORUA, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_MINCCINO, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_CINCCINO, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_GOTHITA, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_GOTHORITA, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_DEERLING, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_DEERLING_SUMMER, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_DEERLING_AUTUMN, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_DEERLING_WINTER, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_KARRABLAST, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_FOONGUS, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_AMOONGUSS, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_JOLTIK, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_LITWICK, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_AXEW, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_CUBCHOO, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_SHELMET, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_STUNFISK, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_STUNFISK_GALARIAN, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_PAWNIARD, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_DURANT, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_CHESPIN, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_QUILLADIN, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_FENNEKIN, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_FROAKIE, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_FROGADIER, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_BUNNELBY, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_SCATTERBUG, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_SPEWPA, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_LITLEO, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_PANCHAM, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_ESPURR, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_MEOWSTIC, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_MEOWSTIC_FEMALE, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_BINACLE, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_CLAUNCHER, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_HELIOPTILE, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_DEDENNE, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_GOOMY, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ROWLET, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_DARTRIX, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_LITTEN, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_TORRACAT, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_POPPLIO, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_BRIONNE, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_YUNGOOS, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_GUMSHOOS, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_GRUBBIN, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_CHARJABUG, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_CRABRAWLER, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ROCKRUFF, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_ROCKRUFF_OWN_TEMPO, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_MAREANIE, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_DEWPIDER, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_FOMANTIS, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_MORELULL, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_SALANDIT, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_STUFFUL, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_BOUNSWEET, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_STEENEE, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_WIMPOD, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_PYUKUMUKU, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_KOMALA, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_TOGEDEMARU, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_MIMIKYU, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_MIMIKYU_BUSTED, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_JANGMO_O, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_MARSHADOW, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_MELTAN, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_GROOKEY, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_THWACKEY, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_SCORBUNNY, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_RABOOT, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_SOBBLE, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_DRIZZILE, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_SKWOVET, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_SKWOVET, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_BLIPBUG, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_DOTTLER, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_NICKIT, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_GOSSIFLEUR, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ELDEGOSS, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_WOOLOO, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_CHEWTLE, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_YAMPER, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_ROLYCOLY, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_APPLIN, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_APPLETUN, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_TOXEL, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_SIZZLIPEDE, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_CLOBBOPUS, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_HATENNA, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_HATTREM, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_IMPIDIMP, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_ALCREMIE, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_RUBY_CREAM, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_MATCHA_CREAM, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_MINT_CREAM, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_LEMON_CREAM, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_SALTED_CREAM, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_RUBY_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_CARAMEL_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_RAINBOW_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_PINCURCHIN, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_SNOM, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_MORPEKO, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_MORPEKO_HANGRY, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_KUBFU, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_BULBASAUR, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_CHARMANDER, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_SQUIRTLE, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_CATERPIE, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_METAPOD, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_WEEDLE, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_KAKUNA, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_RATTATA, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_RATTATA_ALOLAN, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_RATICATE, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_RATICATE_ALOLAN, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_PIKACHU, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PIKACHU_COSPLAY, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PIKACHU_ROCK_STAR, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PIKACHU_BELLE, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PIKACHU_POP_STAR, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PIKACHU_PH_D, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PIKACHU_LIBRE, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PIKACHU_ORIGINAL_CAP, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PIKACHU_HOENN_CAP, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PIKACHU_SINNOH_CAP, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PIKACHU_UNOVA_CAP, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PIKACHU_KALOS_CAP, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PIKACHU_ALOLA_CAP, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PIKACHU_PARTNER_CAP, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PIKACHU_WORLD_CAP, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_SANDSHREW, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_SANDSHREW_ALOLAN, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_NIDORAN_F, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_NIDORAN_M, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_CLEFAIRY, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_VULPIX, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_VULPIX_ALOLAN, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_JIGGLYPUFF, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ODDISH, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_PARAS, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_MEOWTH, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_MEOWTH_ALOLAN, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_MEOWTH_GALARIAN, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PSYDUCK, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_MANKEY, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_GROWLITHE, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_POLIWAG, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_BELLSPROUT, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_SHELLDER, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_KRABBY, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_EXEGGCUTE, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_CUBONE, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_DITTO, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_EEVEE, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_OMANYTE, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_KABUTO, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_CHIKORITA, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_CYNDAQUIL, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_TOTODILE, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_SPINARAK, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_PICHU, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PICHU_SPIKY_EARED, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_CLEFFA, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_IGGLYBUFF, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_TOGEPI, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_MAREEP, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_BELLOSSOM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_MARILL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_SUNKERN, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_WOOPER, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_PINECO, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_SNUBBULL, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_SHUCKLE, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_TEDDIURSA, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_SLUGMA, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_SWINUB, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_HOUNDOUR, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_PHANPY, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PORYGON2, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_TYROGUE, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_SMOOCHUM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ELEKID, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_MAGBY, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_LARVITAR, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_TREECKO, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_TORCHIC, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_MUDKIP, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_MARSHTOMP, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_POOCHYENA, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_ZIGZAGOON, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_ZIGZAGOON_GALARIAN, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_LINOONE, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_LINOONE_GALARIAN, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_WURMPLE, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_SILCOON, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_CASCOON, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_LOTAD, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_SEEDOT, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_RALTS, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_KIRLIA, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_SURSKIT, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_SHROOMISH, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_NINCADA, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_WHISMUR, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_AZURILL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_SKITTY, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_SABLEYE, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_SABLEYE_MEGA, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_MAWILE, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_ARON, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_MEDITITE, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ELECTRIKE, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_PLUSLE, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_MINUN, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_VOLBEAT, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_ILLUMISE, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_ROSELIA, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_GULPIN, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_NUMEL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_TORKOAL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_SPOINK, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_TRAPINCH, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_CACNEA, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ANORITH, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_WYNAUT, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_SNORUNT, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_CLAMPERL, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_BAGON, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_TURTWIG, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_CHIMCHAR, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_PIPLUP, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_BIDOOF, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_KRICKETOT, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_SHINX, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_BUDEW, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_SHIELDON, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_PACHIRISU, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_BUIZEL, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_CHERUBI, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_CHERRIM_OVERCAST, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_CHERRIM_SUNSHINE, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_SHELLOS_WEST_SEA, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_SHELLOS_EAST_SEA, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_BUNEARY, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_GLAMEOW, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_STUNKY, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_BONSLY, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_MIME_JR, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_HAPPINY, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_GIBLE, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_MUNCHLAX, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_RIOLU, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_CROAGUNK, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_SHAYMIN_LAND, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_SNIVY, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_TEPIG, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_OSHAWOTT, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PATRAT, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_LILLIPUP, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_PURRLOIN, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_PANSAGE, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PANSEAR, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PANPOUR, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_ROGGENROLA, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_DRILBUR, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_EXCADRILL, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_TIMBURR, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_SEWADDLE, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_SWADLOON, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_VENIPEDE, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_PETILIL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_SANDILE, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_DARUMAKA, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_DARUMAKA_GALARIAN, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_DWEBBLE, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_SCRAGGY, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ARCHEN, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_TRUBBISH, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_ZORUA, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_MINCCINO, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_CINCCINO, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_GOTHITA, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_GOTHORITA, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_DEERLING_SPRING, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_DEERLING_SUMMER, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_DEERLING_AUTUMN, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_DEERLING_WINTER, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_KARRABLAST, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_FOONGUS, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_AMOONGUSS, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_JOLTIK, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_LITWICK, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_AXEW, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_CUBCHOO, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_SHELMET, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_STUNFISK, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_STUNFISK_GALARIAN, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_PAWNIARD, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_DURANT, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_CHESPIN, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_QUILLADIN, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_FENNEKIN, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_FROAKIE, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_FROGADIER, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_BUNNELBY, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_SCATTERBUG, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_SPEWPA, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_LITLEO, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_PANCHAM, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_ESPURR, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_MEOWSTIC_MALE, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_MEOWSTIC_FEMALE, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_BINACLE, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_CLAUNCHER, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_HELIOPTILE, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_DEDENNE, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_GOOMY, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ROWLET, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_DARTRIX, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_LITTEN, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_TORRACAT, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_POPPLIO, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_BRIONNE, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_YUNGOOS, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_GUMSHOOS, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_GRUBBIN, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_CHARJABUG, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_CRABRAWLER, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ROCKRUFF, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_ROCKRUFF_OWN_TEMPO, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_MAREANIE, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_DEWPIDER, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_FOMANTIS, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_MORELULL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_SALANDIT, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_STUFFUL, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_BOUNSWEET, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_STEENEE, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_WIMPOD, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_PYUKUMUKU, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_KOMALA, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_TOGEDEMARU, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_MIMIKYU_DISGUISED, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_MIMIKYU_BUSTED, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_JANGMO_O, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_MARSHADOW, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_MELTAN, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_GROOKEY, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_THWACKEY, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_SCORBUNNY, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_RABOOT, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_SOBBLE, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_DRIZZILE, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_SKWOVET, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_SKWOVET, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_BLIPBUG, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_DOTTLER, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_NICKIT, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_GOSSIFLEUR, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ELDEGOSS, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_WOOLOO, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_CHEWTLE, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_YAMPER, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_ROLYCOLY, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_APPLIN, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_APPLETUN, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_TOXEL, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_SIZZLIPEDE, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_CLOBBOPUS, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_HATENNA, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_HATTREM, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_IMPIDIMP, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_PINCURCHIN, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_SNOM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_MORPEKO_FULL_BELLY, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_MORPEKO_HANGRY, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_KUBFU, .jumpType = JUMP_TYPE_FAST, }, }; void StartPokemonJump(u16 partyId, MainCallback exitCallback) diff --git a/src/script_pokemon_util.c b/src/script_pokemon_util.c index bfe2e7581a..ee3cc559f8 100644 --- a/src/script_pokemon_util.c +++ b/src/script_pokemon_util.c @@ -71,7 +71,7 @@ u8 ScriptGiveMon(u16 species, u8 level, u16 item, u32 unused1, u32 unused2, u8 u heldItem[1] = item >> 8; SetMonData(&mon, MON_DATA_HELD_ITEM, heldItem); - // In case a mon with a form changing item is given. Eg: SPECIES_ARCEUS with ITEM_SPLASH_PLATE will transform into SPECIES_ARCEUS_WATER upon gifted. + // In case a mon with a form changing item is given. Eg: SPECIES_ARCEUS_NORMAL with ITEM_SPLASH_PLATE will transform into SPECIES_ARCEUS_WATER upon gifted. targetSpecies = GetFormChangeTargetSpecies(&mon, FORM_CHANGE_ITEM_HOLD, 0); if (targetSpecies != SPECIES_NONE) { diff --git a/src/trade.c b/src/trade.c index 95538ab40b..4976e00912 100644 --- a/src/trade.c +++ b/src/trade.c @@ -1570,13 +1570,6 @@ static u8 CheckValidityOfTradeMons(u8 *aliveMons, u8 playerPartyCount, u8 player partnerMonIdx %= PARTY_SIZE; partnerSpecies = GetMonData(&gEnemyParty[partnerMonIdx], MON_DATA_SPECIES); - // Partner cant trade illegitimate Deoxys or Mew - if (partnerSpecies == SPECIES_DEOXYS || partnerSpecies == SPECIES_MEW) - { - if (!GetMonData(&gEnemyParty[partnerMonIdx], MON_DATA_MODERN_FATEFUL_ENCOUNTER)) - return PARTNER_MON_INVALID; - } - // Can't trade specific species if (gSpeciesInfo[partnerSpecies].flags & SPECIES_FLAG_CANNOT_BE_TRADED) return PARTNER_MON_INVALID; @@ -2424,12 +2417,6 @@ static u32 CanTradeSelectedMon(struct Pokemon *playerParty, int partyCount, int } } - if (species[monIdx] == SPECIES_DEOXYS || species[monIdx] == SPECIES_MEW) - { - if (!GetMonData(&playerParty[monIdx], MON_DATA_MODERN_FATEFUL_ENCOUNTER)) - return CANT_TRADE_INVALID_MON; - } - // Can't trade specific species if (gSpeciesInfo[species[monIdx]].flags & SPECIES_FLAG_CANNOT_BE_TRADED) return CANT_TRADE_INVALID_MON; @@ -2495,16 +2482,6 @@ s32 GetGameProgressForLinkTrade(void) return TRADE_BOTH_PLAYERS_READY; } -static bool32 IsDeoxysOrMewUntradable(u16 species, bool8 isModernFatefulEncounter) -{ - if (species == SPECIES_DEOXYS || species == SPECIES_MEW) - { - if (!isModernFatefulEncounter) - return TRUE; - } - return FALSE; -} - int GetUnionRoomTradeMessageId(struct RfuGameCompatibilityData player, struct RfuGameCompatibilityData partner, u16 playerSpecies2, u16 partnerSpecies, u8 requestedType, u16 playerSpecies, bool8 isModernFatefulEncounter) { bool8 playerHasNationalDex = player.hasNationalDex; @@ -2523,10 +2500,6 @@ int GetUnionRoomTradeMessageId(struct RfuGameCompatibilityData player, struct Rf return UR_TRADE_MSG_CANT_TRADE_WITH_PARTNER_2; } - // Cannot trade illegitimate Deoxys/Mew - if (IsDeoxysOrMewUntradable(playerSpecies, isModernFatefulEncounter)) - return UR_TRADE_MSG_MON_CANT_BE_TRADED; - // Can't trade specific species if (gSpeciesInfo[playerSpecies].flags & SPECIES_FLAG_CANNOT_BE_TRADED) return UR_TRADE_MSG_MON_CANT_BE_TRADED; @@ -2575,9 +2548,6 @@ int CanRegisterMonForTradingBoard(struct RfuGameCompatibilityData player, u16 sp { bool8 hasNationalDex = player.hasNationalDex; - if (IsDeoxysOrMewUntradable(species, isModernFatefulEncounter)) - return CANT_REGISTER_MON_NOW; - // Can't trade specific species if (gSpeciesInfo[species].flags & SPECIES_FLAG_CANNOT_BE_TRADED) return CANT_REGISTER_MON; diff --git a/test/battle/ability/flower_gift.c b/test/battle/ability/flower_gift.c index e02f90dc6c..a956741e5e 100644 --- a/test/battle/ability/flower_gift.c +++ b/test/battle/ability/flower_gift.c @@ -4,7 +4,7 @@ SINGLE_BATTLE_TEST("Flower Gift transforms Cherrim in harsh sunlight") { GIVEN { - PLAYER(SPECIES_CHERRIM) { Ability(ABILITY_FLOWER_GIFT); } + PLAYER(SPECIES_CHERRIM_OVERCAST) { Ability(ABILITY_FLOWER_GIFT); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(opponent, MOVE_SUNNY_DAY); } @@ -20,7 +20,7 @@ SINGLE_BATTLE_TEST("Flower Gift transforms Cherrim in harsh sunlight") SINGLE_BATTLE_TEST("Flower Gift transforms Cherrim back to normal when weather changes") { GIVEN { - PLAYER(SPECIES_CHERRIM) { Ability(ABILITY_FLOWER_GIFT); } + PLAYER(SPECIES_CHERRIM_OVERCAST) { Ability(ABILITY_FLOWER_GIFT); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(opponent, MOVE_SUNNY_DAY); } @@ -35,7 +35,7 @@ SINGLE_BATTLE_TEST("Flower Gift transforms Cherrim back to normal when weather c ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player); MESSAGE("Cherrim transformed!"); } THEN { - EXPECT_EQ(player->species, SPECIES_CHERRIM); + EXPECT_EQ(player->species, SPECIES_CHERRIM_OVERCAST); } } @@ -43,7 +43,7 @@ SINGLE_BATTLE_TEST("Flower Gift transforms Cherrim back to normal when its abili { GIVEN { ASSUME(B_WEATHER_FORMS >= GEN_5); - PLAYER(SPECIES_CHERRIM) { Ability(ABILITY_FLOWER_GIFT); } + PLAYER(SPECIES_CHERRIM_OVERCAST) { Ability(ABILITY_FLOWER_GIFT); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(opponent, MOVE_SUNNY_DAY); } @@ -57,7 +57,7 @@ SINGLE_BATTLE_TEST("Flower Gift transforms Cherrim back to normal when its abili ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player); MESSAGE("Cherrim transformed!"); } THEN { - EXPECT_EQ(player->species, SPECIES_CHERRIM); + EXPECT_EQ(player->species, SPECIES_CHERRIM_OVERCAST); } } @@ -67,7 +67,7 @@ DOUBLE_BATTLE_TEST("Flower Gift increases the attack of Cherrim and its allies b PARAMETRIZE { sunny = FALSE; } PARAMETRIZE { sunny = TRUE; } GIVEN { - PLAYER(SPECIES_CHERRIM) { Ability(ABILITY_FLOWER_GIFT); } + PLAYER(SPECIES_CHERRIM_OVERCAST) { Ability(ABILITY_FLOWER_GIFT); } PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); @@ -101,7 +101,7 @@ DOUBLE_BATTLE_TEST("Flower Gift increases the Sp. Def of Cherrim and its allies PARAMETRIZE { sunny = FALSE; } PARAMETRIZE { sunny = TRUE; } GIVEN { - PLAYER(SPECIES_CHERRIM) { Ability(ABILITY_FLOWER_GIFT); } + PLAYER(SPECIES_CHERRIM_OVERCAST) { Ability(ABILITY_FLOWER_GIFT); } PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); diff --git a/test/battle/ability/forecast.c b/test/battle/ability/forecast.c index 66793ebfb2..6bb4c5045f 100644 --- a/test/battle/ability/forecast.c +++ b/test/battle/ability/forecast.c @@ -9,7 +9,7 @@ SINGLE_BATTLE_TEST("Forecast transforms Castform in weather from an opponent's m PARAMETRIZE { move = MOVE_HAIL; } PARAMETRIZE { move = MOVE_SNOWSCAPE; } GIVEN { - PLAYER(SPECIES_CASTFORM) { Ability(ABILITY_FORECAST); } + PLAYER(SPECIES_CASTFORM_NORMAL) { Ability(ABILITY_FORECAST); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(opponent, move); } @@ -42,7 +42,7 @@ SINGLE_BATTLE_TEST("Forecast transforms Castform in weather from its own move") PARAMETRIZE { move = MOVE_HAIL; } PARAMETRIZE { move = MOVE_SNOWSCAPE; } GIVEN { - PLAYER(SPECIES_CASTFORM) { Ability(ABILITY_FORECAST); } + PLAYER(SPECIES_CASTFORM_NORMAL) { Ability(ABILITY_FORECAST); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(player, move); } @@ -75,7 +75,7 @@ DOUBLE_BATTLE_TEST("Forecast transforms Castform in weather from a partner's mov PARAMETRIZE { move = MOVE_HAIL; } PARAMETRIZE { move = MOVE_SNOWSCAPE; } GIVEN { - PLAYER(SPECIES_CASTFORM) { Ability(ABILITY_FORECAST); } + PLAYER(SPECIES_CASTFORM_NORMAL) { Ability(ABILITY_FORECAST); } PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); @@ -110,10 +110,10 @@ DOUBLE_BATTLE_TEST("Forecast transforms all Castforms present in weather") PARAMETRIZE { move = MOVE_HAIL; } PARAMETRIZE { move = MOVE_SNOWSCAPE; } GIVEN { - PLAYER(SPECIES_CASTFORM) { Ability(ABILITY_FORECAST); } - PLAYER(SPECIES_CASTFORM) { Ability(ABILITY_FORECAST); } - OPPONENT(SPECIES_CASTFORM) { Ability(ABILITY_FORECAST); } - OPPONENT(SPECIES_CASTFORM) { Ability(ABILITY_FORECAST); } + PLAYER(SPECIES_CASTFORM_NORMAL) { Ability(ABILITY_FORECAST); } + PLAYER(SPECIES_CASTFORM_NORMAL) { Ability(ABILITY_FORECAST); } + OPPONENT(SPECIES_CASTFORM_NORMAL) { Ability(ABILITY_FORECAST); } + OPPONENT(SPECIES_CASTFORM_NORMAL) { Ability(ABILITY_FORECAST); } } WHEN { TURN { MOVE(playerRight, move); } } SCENE { @@ -162,7 +162,7 @@ SINGLE_BATTLE_TEST("Forecast transforms Castform in weather from an ability") PARAMETRIZE { species = SPECIES_GROUDON; ability = ABILITY_DROUGHT; } PARAMETRIZE { species = SPECIES_ABOMASNOW; ability = ABILITY_SNOW_WARNING; } GIVEN { - PLAYER(SPECIES_CASTFORM) { Ability(ABILITY_FORECAST); } + PLAYER(SPECIES_CASTFORM_NORMAL) { Ability(ABILITY_FORECAST); } OPPONENT(SPECIES_WOBBUFFET); OPPONENT(species) { Ability(ability); } } WHEN { @@ -193,7 +193,7 @@ SINGLE_BATTLE_TEST("Forecast transforms Castform in primal weather") PARAMETRIZE { species = SPECIES_KYOGRE; ability = ABILITY_PRIMORDIAL_SEA; item = ITEM_BLUE_ORB; } PARAMETRIZE { species = SPECIES_GROUDON; ability = ABILITY_DESOLATE_LAND; item = ITEM_RED_ORB; } GIVEN { - PLAYER(SPECIES_CASTFORM) { Ability(ABILITY_FORECAST); } + PLAYER(SPECIES_CASTFORM_NORMAL) { Ability(ABILITY_FORECAST); } OPPONENT(SPECIES_WOBBUFFET); OPPONENT(species) { Item(item); } } WHEN { @@ -219,7 +219,7 @@ SINGLE_BATTLE_TEST("Forecast transforms Castform in primal weather") SINGLE_BATTLE_TEST("Forecast transforms Castform back to normal when weather expires") { GIVEN { - PLAYER(SPECIES_CASTFORM) { Ability(ABILITY_FORECAST); } + PLAYER(SPECIES_CASTFORM_NORMAL) { Ability(ABILITY_FORECAST); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(player, MOVE_RAIN_DANCE); } @@ -238,14 +238,14 @@ SINGLE_BATTLE_TEST("Forecast transforms Castform back to normal when weather exp ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player); MESSAGE("Castform transformed!"); } THEN { - EXPECT_EQ(player->species, SPECIES_CASTFORM); + EXPECT_EQ(player->species, SPECIES_CASTFORM_NORMAL); } } SINGLE_BATTLE_TEST("Forecast transforms Castform back to normal when Sandstorm is active") { GIVEN { - PLAYER(SPECIES_CASTFORM) { Ability(ABILITY_FORECAST); } + PLAYER(SPECIES_CASTFORM_NORMAL) { Ability(ABILITY_FORECAST); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(player, MOVE_RAIN_DANCE); } @@ -260,7 +260,7 @@ SINGLE_BATTLE_TEST("Forecast transforms Castform back to normal when Sandstorm i ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player); MESSAGE("Castform transformed!"); } THEN { - EXPECT_EQ(player->species, SPECIES_CASTFORM); + EXPECT_EQ(player->species, SPECIES_CASTFORM_NORMAL); } } @@ -268,7 +268,7 @@ SINGLE_BATTLE_TEST("Forecast transforms Castform back to normal under Air Lock") { KNOWN_FAILING; GIVEN { - PLAYER(SPECIES_CASTFORM) { Ability(ABILITY_FORECAST); } + PLAYER(SPECIES_CASTFORM_NORMAL) { Ability(ABILITY_FORECAST); } OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_RAYQUAZA); } WHEN { @@ -285,7 +285,7 @@ SINGLE_BATTLE_TEST("Forecast transforms Castform back to normal under Air Lock") ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player); MESSAGE("Castform transformed!"); } THEN { - EXPECT_EQ(player->species, SPECIES_CASTFORM); + EXPECT_EQ(player->species, SPECIES_CASTFORM_NORMAL); } } @@ -293,7 +293,7 @@ SINGLE_BATTLE_TEST("Forecast transforms Castform on switch-in") { GIVEN { PLAYER(SPECIES_WOBBUFFET); - PLAYER(SPECIES_CASTFORM) { Ability(ABILITY_FORECAST); } + PLAYER(SPECIES_CASTFORM_NORMAL) { Ability(ABILITY_FORECAST); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(player, MOVE_RAIN_DANCE); } @@ -313,7 +313,7 @@ SINGLE_BATTLE_TEST("Forecast transforms Castform on switch-in") SINGLE_BATTLE_TEST("Forecast transforms Castform when weather changes") { GIVEN { - PLAYER(SPECIES_CASTFORM) { Ability(ABILITY_FORECAST); } + PLAYER(SPECIES_CASTFORM_NORMAL) { Ability(ABILITY_FORECAST); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(player, MOVE_RAIN_DANCE); } @@ -336,7 +336,7 @@ SINGLE_BATTLE_TEST("Forecast transforms Castform back to normal when its ability { GIVEN { ASSUME(B_WEATHER_FORMS >= GEN_5); - PLAYER(SPECIES_CASTFORM) { Ability(ABILITY_FORECAST); } + PLAYER(SPECIES_CASTFORM_NORMAL) { Ability(ABILITY_FORECAST); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(opponent, MOVE_SUNNY_DAY); } @@ -350,6 +350,6 @@ SINGLE_BATTLE_TEST("Forecast transforms Castform back to normal when its ability ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player); MESSAGE("Castform transformed!"); } THEN { - EXPECT_EQ(player->species, SPECIES_CASTFORM); + EXPECT_EQ(player->species, SPECIES_CASTFORM_NORMAL); } } diff --git a/test/battle/ability/hunger_switch.c b/test/battle/ability/hunger_switch.c index c0802d6643..2b39bde589 100644 --- a/test/battle/ability/hunger_switch.c +++ b/test/battle/ability/hunger_switch.c @@ -4,7 +4,7 @@ SINGLE_BATTLE_TEST("Hunger Switch switches Morpeko's forms at the end of the turn") { u16 species; - PARAMETRIZE { species = SPECIES_MORPEKO; } + PARAMETRIZE { species = SPECIES_MORPEKO_FULL_BELLY; } PARAMETRIZE { species = SPECIES_MORPEKO_HANGRY; } GIVEN { ASSUME(P_GEN_8_POKEMON == TRUE); @@ -17,9 +17,9 @@ SINGLE_BATTLE_TEST("Hunger Switch switches Morpeko's forms at the end of the tur MESSAGE("Foe Wobbuffet used Celebrate!"); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player); } THEN { - if (species == SPECIES_MORPEKO) + if (species == SPECIES_MORPEKO_FULL_BELLY) EXPECT_EQ(player->species, SPECIES_MORPEKO_HANGRY); else - EXPECT_EQ(player->species, SPECIES_MORPEKO); + EXPECT_EQ(player->species, SPECIES_MORPEKO_FULL_BELLY); } } diff --git a/test/battle/ability/schooling.c b/test/battle/ability/schooling.c index 448e37261d..49a70266de 100644 --- a/test/battle/ability/schooling.c +++ b/test/battle/ability/schooling.c @@ -9,8 +9,8 @@ SINGLE_BATTLE_TEST("Schooling switches Level 20+ Wishiwashi's form when HP is 25 GIVEN { ASSUME(P_GEN_7_POKEMON == TRUE); - ASSUME(gSpeciesInfo[SPECIES_WISHIWASHI].baseHP == gSpeciesInfo[SPECIES_WISHIWASHI_SCHOOL].baseHP); - PLAYER(SPECIES_WISHIWASHI) + ASSUME(gSpeciesInfo[SPECIES_WISHIWASHI_SOLO].baseHP == gSpeciesInfo[SPECIES_WISHIWASHI_SCHOOL].baseHP); + PLAYER(SPECIES_WISHIWASHI_SOLO) { Level(level); HP(GetMonData(&PLAYER_PARTY[0], MON_DATA_MAX_HP) / 2); @@ -34,7 +34,7 @@ SINGLE_BATTLE_TEST("Schooling switches Level 20+ Wishiwashi's form when HP is 25 ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player); } } THEN { - EXPECT_EQ(player->species, SPECIES_WISHIWASHI); + EXPECT_EQ(player->species, SPECIES_WISHIWASHI_SOLO); } } @@ -49,8 +49,8 @@ SINGLE_BATTLE_TEST("Schooling switches Level 20+ Wishiwashi's form when HP is ov GIVEN { ASSUME(P_GEN_7_POKEMON == TRUE); - ASSUME(gSpeciesInfo[SPECIES_WISHIWASHI].baseHP == gSpeciesInfo[SPECIES_WISHIWASHI_SCHOOL].baseHP); - PLAYER(SPECIES_WISHIWASHI) + ASSUME(gSpeciesInfo[SPECIES_WISHIWASHI_SOLO].baseHP == gSpeciesInfo[SPECIES_WISHIWASHI_SCHOOL].baseHP); + PLAYER(SPECIES_WISHIWASHI_SOLO) { Level(level); HP(GetMonData(&PLAYER_PARTY[0], MON_DATA_MAX_HP) / (overQuarterHP ? 2 : 4)); @@ -71,7 +71,7 @@ SINGLE_BATTLE_TEST("Schooling switches Level 20+ Wishiwashi's form when HP is ov if (level >= 20 && overQuarterHP) EXPECT_EQ(player->species, SPECIES_WISHIWASHI_SCHOOL); else - EXPECT_EQ(player->species, SPECIES_WISHIWASHI); + EXPECT_EQ(player->species, SPECIES_WISHIWASHI_SOLO); } } @@ -83,8 +83,8 @@ SINGLE_BATTLE_TEST("Schooling switches Level 20+ Wishiwashi's form when HP is he GIVEN { ASSUME(P_GEN_7_POKEMON == TRUE); - ASSUME(gSpeciesInfo[SPECIES_WISHIWASHI].baseHP == gSpeciesInfo[SPECIES_WISHIWASHI_SCHOOL].baseHP); - PLAYER(SPECIES_WISHIWASHI) + ASSUME(gSpeciesInfo[SPECIES_WISHIWASHI_SOLO].baseHP == gSpeciesInfo[SPECIES_WISHIWASHI_SCHOOL].baseHP); + PLAYER(SPECIES_WISHIWASHI_SOLO) { Level(level); HP(GetMonData(&PLAYER_PARTY[0], MON_DATA_MAX_HP) / 4); @@ -106,6 +106,6 @@ SINGLE_BATTLE_TEST("Schooling switches Level 20+ Wishiwashi's form when HP is he if (level >= 20) EXPECT_EQ(player->species, SPECIES_WISHIWASHI_SCHOOL); else - EXPECT_EQ(player->species, SPECIES_WISHIWASHI); + EXPECT_EQ(player->species, SPECIES_WISHIWASHI_SOLO); } } diff --git a/test/battle/ability/zen_mode.c b/test/battle/ability/zen_mode.c index 37bb4160f9..3d1e25ffa7 100644 --- a/test/battle/ability/zen_mode.c +++ b/test/battle/ability/zen_mode.c @@ -4,8 +4,8 @@ SINGLE_BATTLE_TEST("Zen Mode switches Darmanitan's form when HP is half or less at the end of the turn") { u16 standardSpecies, zenSpecies; - PARAMETRIZE { standardSpecies = SPECIES_DARMANITAN; zenSpecies = SPECIES_DARMANITAN_ZEN_MODE; } - PARAMETRIZE { standardSpecies = SPECIES_DARMANITAN_GALARIAN; zenSpecies = SPECIES_DARMANITAN_ZEN_MODE_GALARIAN; } + PARAMETRIZE { standardSpecies = SPECIES_DARMANITAN_STANDARD_MODE; zenSpecies = SPECIES_DARMANITAN_ZEN_MODE; } + PARAMETRIZE { standardSpecies = SPECIES_DARMANITAN_GALARIAN_STANDARD_MODE; zenSpecies = SPECIES_DARMANITAN_GALARIAN_ZEN_MODE; } GIVEN { ASSUME(P_GEN_5_POKEMON == TRUE); @@ -34,8 +34,8 @@ SINGLE_BATTLE_TEST("Zen Mode switches Darmanitan's form when HP is half or less SINGLE_BATTLE_TEST("Zen Mode switches Darmanitan's form when HP is half or less before the first turn") { u16 standardSpecies, zenSpecies; - PARAMETRIZE { standardSpecies = SPECIES_DARMANITAN; zenSpecies = SPECIES_DARMANITAN_ZEN_MODE; } - PARAMETRIZE { standardSpecies = SPECIES_DARMANITAN_GALARIAN; zenSpecies = SPECIES_DARMANITAN_ZEN_MODE_GALARIAN; } + PARAMETRIZE { standardSpecies = SPECIES_DARMANITAN_STANDARD_MODE; zenSpecies = SPECIES_DARMANITAN_ZEN_MODE; } + PARAMETRIZE { standardSpecies = SPECIES_DARMANITAN_GALARIAN_STANDARD_MODE; zenSpecies = SPECIES_DARMANITAN_GALARIAN_ZEN_MODE; } GIVEN { ASSUME(P_GEN_5_POKEMON == TRUE); @@ -63,8 +63,8 @@ SINGLE_BATTLE_TEST("Zen Mode switches Darmanitan's form when HP is half or less SINGLE_BATTLE_TEST("Zen Mode switches Darmanitan's form when HP is healed above half") { u16 standardSpecies, zenSpecies; - PARAMETRIZE { standardSpecies = SPECIES_DARMANITAN; zenSpecies = SPECIES_DARMANITAN_ZEN_MODE; } - PARAMETRIZE { standardSpecies = SPECIES_DARMANITAN_GALARIAN; zenSpecies = SPECIES_DARMANITAN_ZEN_MODE_GALARIAN; } + PARAMETRIZE { standardSpecies = SPECIES_DARMANITAN_STANDARD_MODE; zenSpecies = SPECIES_DARMANITAN_ZEN_MODE; } + PARAMETRIZE { standardSpecies = SPECIES_DARMANITAN_GALARIAN_STANDARD_MODE; zenSpecies = SPECIES_DARMANITAN_GALARIAN_ZEN_MODE; } GIVEN { ASSUME(P_GEN_5_POKEMON == TRUE); diff --git a/test/battle/form_change/battle_switch.c b/test/battle/form_change/battle_switch.c index bd18e0ccfc..dd6c68466e 100644 --- a/test/battle/form_change/battle_switch.c +++ b/test/battle/form_change/battle_switch.c @@ -5,7 +5,7 @@ SINGLE_BATTLE_TEST("Aegislash reverts to Shield Form upon switching out") { GIVEN { ASSUME(P_GEN_6_POKEMON == TRUE); - PLAYER(SPECIES_AEGISLASH); + PLAYER(SPECIES_AEGISLASH_SHIELD); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { @@ -18,6 +18,6 @@ SINGLE_BATTLE_TEST("Aegislash reverts to Shield Form upon switching out") MESSAGE("Aegislash used Tackle!"); MESSAGE("Foe Wobbuffet used Celebrate!"); } THEN { - EXPECT_EQ(player->species, SPECIES_AEGISLASH); + EXPECT_EQ(player->species, SPECIES_AEGISLASH_SHIELD); } } diff --git a/test/battle/form_change/begin_battle.c b/test/battle/form_change/begin_battle.c index 328db756df..b61ff069d4 100644 --- a/test/battle/form_change/begin_battle.c +++ b/test/battle/form_change/begin_battle.c @@ -5,7 +5,7 @@ SINGLE_BATTLE_TEST("Xerneas changes into Active Form upon battle start") { GIVEN { ASSUME(P_GEN_6_POKEMON == TRUE); - PLAYER(SPECIES_XERNEAS); + PLAYER(SPECIES_XERNEAS_NEUTRAL); OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(player, MOVE_CELEBRATE); } @@ -21,13 +21,13 @@ SINGLE_BATTLE_TEST("Zacian changes into its Crowned Form when holding the Rusted PARAMETRIZE { item = ITEM_RUSTED_SWORD; } GIVEN { ASSUME(P_GEN_8_POKEMON == TRUE); - PLAYER(SPECIES_ZACIAN) { Item(item); } + PLAYER(SPECIES_ZACIAN_HERO_OF_MANY_BATTLES) { Item(item); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(player, MOVE_CELEBRATE); } } THEN { if (item == ITEM_NONE) - EXPECT_EQ(player->species, SPECIES_ZACIAN); + EXPECT_EQ(player->species, SPECIES_ZACIAN_HERO_OF_MANY_BATTLES); else EXPECT_EQ(player->species, SPECIES_ZACIAN_CROWNED_SWORD); } @@ -37,7 +37,7 @@ SINGLE_BATTLE_TEST("Zacian's Iron Head becomes Behemoth Blade upon form change") { GIVEN { ASSUME(P_GEN_8_POKEMON == TRUE); - PLAYER(SPECIES_ZACIAN) { Item(ITEM_RUSTED_SWORD); Moves(MOVE_IRON_HEAD, MOVE_CELEBRATE); } + PLAYER(SPECIES_ZACIAN_HERO_OF_MANY_BATTLES) { Item(ITEM_RUSTED_SWORD); Moves(MOVE_IRON_HEAD, MOVE_CELEBRATE); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(player, MOVE_CELEBRATE); } @@ -54,13 +54,13 @@ SINGLE_BATTLE_TEST("Zamazenta changes into its Crowned Form when holding the Rus PARAMETRIZE { item = ITEM_RUSTED_SHIELD; } GIVEN { ASSUME(P_GEN_8_POKEMON == TRUE); - PLAYER(SPECIES_ZAMAZENTA) { Item(item); } + PLAYER(SPECIES_ZAMAZENTA_HERO_OF_MANY_BATTLES) { Item(item); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(player, MOVE_CELEBRATE); } } THEN { if (item == ITEM_NONE) - EXPECT_EQ(player->species, SPECIES_ZAMAZENTA); + EXPECT_EQ(player->species, SPECIES_ZAMAZENTA_HERO_OF_MANY_BATTLES); else EXPECT_EQ(player->species, SPECIES_ZAMAZENTA_CROWNED_SHIELD); } @@ -70,7 +70,7 @@ SINGLE_BATTLE_TEST("Zamazenta's Iron Head becomes Behemoth Bash upon form change { GIVEN { ASSUME(P_GEN_8_POKEMON == TRUE); - PLAYER(SPECIES_ZAMAZENTA) { Item(ITEM_RUSTED_SHIELD); Moves(MOVE_IRON_HEAD, MOVE_CELEBRATE); } + PLAYER(SPECIES_ZAMAZENTA_HERO_OF_MANY_BATTLES) { Item(ITEM_RUSTED_SHIELD); Moves(MOVE_IRON_HEAD, MOVE_CELEBRATE); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(player, MOVE_CELEBRATE); } diff --git a/test/battle/form_change/faint.c b/test/battle/form_change/faint.c index f4baa2894e..82f361917e 100644 --- a/test/battle/form_change/faint.c +++ b/test/battle/form_change/faint.c @@ -5,7 +5,7 @@ SINGLE_BATTLE_TEST("Aegislash reverts to Shield Form upon fainting") { GIVEN { ASSUME(P_GEN_6_POKEMON == TRUE); - PLAYER(SPECIES_AEGISLASH) { HP(1); } + PLAYER(SPECIES_AEGISLASH_SHIELD) { HP(1); } PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { @@ -14,6 +14,6 @@ SINGLE_BATTLE_TEST("Aegislash reverts to Shield Form upon fainting") MESSAGE("Foe Wobbuffet used Gust!"); MESSAGE("Aegislash fainted!"); } THEN { - EXPECT_EQ(GetMonData(&PLAYER_PARTY[0], MON_DATA_SPECIES), SPECIES_AEGISLASH); + EXPECT_EQ(GetMonData(&PLAYER_PARTY[0], MON_DATA_SPECIES), SPECIES_AEGISLASH_SHIELD); } } From 5fd36a8e390c7b3d72ee470846bc0a91754425bd Mon Sep 17 00:00:00 2001 From: Martin Griffin Date: Mon, 23 Oct 2023 13:37:40 +0100 Subject: [PATCH 136/162] Fix ModifyPersonalityForNature (#3452) --- src/battle_main.c | 2 +- test/battle/trainer_control.c | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/battle_main.c b/src/battle_main.c index 037d9a857f..514b69fd68 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -1896,7 +1896,7 @@ static u32 GeneratePartyHash(const struct Trainer *trainer, u32 i) void ModifyPersonalityForNature(u32 *personality, u32 newNature) { u32 nature = GetNatureFromPersonality(*personality); - s32 diff = abs(nature - newNature); + s32 diff = abs((s32)nature - (s32)newNature); s32 sign = (nature > newNature) ? 1 : -1; if (diff > NUM_NATURES / 2) { diff --git a/test/battle/trainer_control.c b/test/battle/trainer_control.c index a0e94dbbec..99bea0e8cc 100644 --- a/test/battle/trainer_control.c +++ b/test/battle/trainer_control.c @@ -4,6 +4,7 @@ #include "battle_main.h" #include "data.h" #include "malloc.h" +#include "random.h" #include "string_util.h" #include "constants/item.h" #include "constants/abilities.h" @@ -119,3 +120,17 @@ TEST("CreateNPCTrainerPartyForTrainer generates different personalities for diff EXPECT(testParty[0].box.personality != testParty[1].box.personality); Free(testParty); } + +TEST("ModifyPersonalityForNature can set any nature") +{ + u32 personality, nature, j, k; + for (j = 0; j < 64; j++) + { + for (k = 0; k < NUM_NATURES; k++) + { + PARAMETRIZE { personality = Random32(); nature = k; } + } + } + ModifyPersonalityForNature(&personality, nature); + EXPECT_EQ(GetNatureFromPersonality(personality), nature); +} From 5592706a71170cb8064de999ff5f82ba0b0b6f47 Mon Sep 17 00:00:00 2001 From: Bassoonian Date: Mon, 23 Oct 2023 17:59:07 +0200 Subject: [PATCH 137/162] Fix Synchronize devnote + Gen9 behaviour --- include/config/battle.h | 2 +- src/wild_encounter.c | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/include/config/battle.h b/include/config/battle.h index aee79daee5..5ce2e4f9f8 100644 --- a/include/config/battle.h +++ b/include/config/battle.h @@ -115,7 +115,7 @@ #define B_SHADOW_TAG_ESCAPE GEN_LATEST // In Gen4+, if both sides have a Pokémon with Shadow Tag, all battlers can escape. Before, neither side could escape this situation. #define B_MOODY_ACC_EVASION GEN_LATEST // In Gen8, Moody CANNOT raise Accuracy and Evasion anymore. #define B_FLASH_FIRE_FROZEN GEN_LATEST // In Gen5+, Flash Fire can trigger even when frozen, when it couldn't before. -#define B_SYNCHRONIZE_NATURE GEN_LATEST // In Gen8, if a Pokémon with Synchronize is leading the party, it's 100% guaranteed that wild Pokémon will have the same ability, as opposed to 50% previously. +#define B_SYNCHRONIZE_NATURE GEN_LATEST // In Gen8, if a Pokémon with Synchronize is leading the party, it's 100% guaranteed that wild Pokémon will have the same Nature, as opposed to 50% previously. In Gen9, it has no out-of-battle effect. #define B_SYNCHRONIZE_TOXIC GEN_LATEST // In Gen5+, if a Pokémon with Synchronize is badly poisoned, the opponent will also become badly poisoned. Previously, the opponent would become regular poisoned. #define B_UPDATED_INTIMIDATE GEN_LATEST // In Gen8, Intimidate doesn't work on opponents with the Inner Focus, Scrappy, Own Tempo or Oblivious abilities. It also activates Rattled. #define B_OBLIVIOUS_TAUNT GEN_LATEST // In Gen6+, Pokémon with Oblivious can't be taunted. diff --git a/src/wild_encounter.c b/src/wild_encounter.c index 6016e08e69..5ea88f4c4a 100644 --- a/src/wild_encounter.c +++ b/src/wild_encounter.c @@ -415,6 +415,7 @@ static u8 PickWildMonNature(void) } } } +#if B_SYNCHRONIZE_NATURE < GEN_9 // check synchronize for a pokemon with the same ability if (!GetMonData(&gPlayerParty[0], MON_DATA_SANITY_IS_EGG) && GetMonAbility(&gPlayerParty[0]) == ABILITY_SYNCHRONIZE @@ -425,6 +426,7 @@ static u8 PickWildMonNature(void) { return GetMonData(&gPlayerParty[0], MON_DATA_PERSONALITY) % NUM_NATURES; } +#endif // random nature return Random() % NUM_NATURES; From 333523e5f7b0a8c3c40ffedc8d7234a0eb14eb88 Mon Sep 17 00:00:00 2001 From: kittenchilly Date: Mon, 23 Oct 2023 13:24:38 -0500 Subject: [PATCH 138/162] Remove all leading whitespace --- INSTALL.md | 6 +++--- src/battle_factory.c | 2 +- src/easy_chat.c | 4 ++-- src/event_object_movement.c | 2 +- src/mini_printf.c | 12 ++++++------ src/rom_header_gf.c | 4 ++-- src/trade.c | 2 +- tools/aif2pcm/main.c | 14 +++++++------- tools/gbagfx/font.c | 6 +++--- tools/preproc/c_file.cpp | 4 ++-- tools/preproc/charmap.cpp | 2 +- tools/scaninc/source_file.cpp | 4 ++-- 12 files changed, 31 insertions(+), 31 deletions(-) diff --git a/INSTALL.md b/INSTALL.md index a76d0acc75..920e03c713 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -150,9 +150,9 @@ Note that in msys2, Copy is Ctrl+Insert and Paste is Shift+Insert.

Notes... - > Note 1: While not shown, msys uses forward slashes `/` instead of backwards slashes `\` as the directory separator. - > Note 2: If the path has spaces, then the path must be wrapped with quotations, e.g. `cd "Downloads/My Downloads"`. - > Note 3: Windows path names are case-insensitive so adhering to capitalization isn’t needed. + > Note 1: While not shown, msys uses forward slashes `/` instead of backwards slashes `\` as the directory separator. + > Note 2: If the path has spaces, then the path must be wrapped with quotations, e.g. `cd "Downloads/My Downloads"`. + > Note 3: Windows path names are case-insensitive so adhering to capitalization isn’t needed. > Note 4: If libpng was saved elsewhere, you will need to specify the full path to where libpng was downloaded, e.g. `cd c:/devkitpro/msys2` if it was saved there.
diff --git a/src/battle_factory.c b/src/battle_factory.c index 3606d88e6a..0f4ed9816d 100644 --- a/src/battle_factory.c +++ b/src/battle_factory.c @@ -741,7 +741,7 @@ u8 GetFactoryMonFixedIV(u8 challengeNum, bool8 isLastBattle) u8 ivSet; bool8 useHigherIV = isLastBattle ? TRUE : FALSE; -// The Factory has an out-of-bounds access when generating the rental draft for round 9 (challengeNum==8), +// The Factory has an out-of-bounds access when generating the rental draft for round 9 (challengeNum==8), // or the "elevated" rentals from round 8 (challengeNum+1==8) // This happens to land on a number higher than 31, which is interpreted as "random IVs" #ifdef BUGFIX diff --git a/src/easy_chat.c b/src/easy_chat.c index 93fdafd80b..8e93ca310e 100644 --- a/src/easy_chat.c +++ b/src/easy_chat.c @@ -230,7 +230,7 @@ enum { PALTAG_TRIANGLE_CURSOR, PALTAG_RECTANGLE_CURSOR, PALTAG_MISC_UI, - PALTAG_RS_INTERVIEW_FRAME, + PALTAG_RS_INTERVIEW_FRAME, }; enum { @@ -240,7 +240,7 @@ enum { GFXTAG_START_SELECT_BUTTONS, GFXTAG_MODE_WINDOW, GFXTAG_RS_INTERVIEW_FRAME, - GFXTAG_BUTTON_WINDOW, + GFXTAG_BUTTON_WINDOW, }; diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 29dcf4d27c..a181ea9f21 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -498,7 +498,7 @@ static const struct SpritePalette sObjectEventSpritePalettes[] = { {gObjectEventPal_RubySapphireBrendan, OBJ_EVENT_PAL_TAG_RS_BRENDAN}, {gObjectEventPal_RubySapphireMay, OBJ_EVENT_PAL_TAG_RS_MAY}, #ifdef BUGFIX - {NULL, OBJ_EVENT_PAL_TAG_NONE}, + {NULL, OBJ_EVENT_PAL_TAG_NONE}, #else {}, // BUG: FindObjectEventPaletteIndexByTag looks for OBJ_EVENT_PAL_TAG_NONE and not 0x0. // If it's looking for a tag that isn't in this table, the game locks in an infinite loop. diff --git a/src/mini_printf.c b/src/mini_printf.c index 69500157c6..9fb4ecfac9 100644 --- a/src/mini_printf.c +++ b/src/mini_printf.c @@ -41,7 +41,7 @@ #ifndef NDEBUG -struct mini_buff +struct mini_buff { char *buffer, *pbuffer; u32 buffer_len; @@ -95,7 +95,7 @@ static s32 _putsAscii(char *s, s32 len, void *buf) s32 i; struct mini_buff *b; - if (!buf) + if (!buf) return len; b = buf; @@ -118,7 +118,7 @@ static s32 _putsEncoded(char *s, s32 len, void *buf) s32 i; struct mini_buff *b; - if (!buf) + if (!buf) return len; b = buf; @@ -159,7 +159,7 @@ static s32 mini_itoa(s32 value, u32 radix, s32 uppercase, bool32 unsig, char *bu } /* This builds the string back to front ... */ - do + do { s32 digit = value % radix; *(pbuffer++) = (digit < 10 ? '0' + digit : (uppercase ? 'A' : 'a') + digit - 10); @@ -243,7 +243,7 @@ s32 mini_vpprintf(void* buf, const char *fmt, va_list va) { len = 1; len = _putsAscii(&ch, len, buf); - } else + } else { char pad_char = ' '; s32 pad_to = 0; @@ -270,7 +270,7 @@ s32 mini_vpprintf(void* buf, const char *fmt, va_list va) ch=*(fmt++); } - switch (ch) + switch (ch) { case 0: goto end; diff --git a/src/rom_header_gf.c b/src/rom_header_gf.c index 465c0cf410..36ff3401d3 100644 --- a/src/rom_header_gf.c +++ b/src/rom_header_gf.c @@ -9,8 +9,8 @@ // The purpose of this struct is for outside applications to be // able to access parts of the ROM or its save file, like a public API. // In vanilla, it was used by Colosseum and XD to access pokemon graphics. -// -// If this struct is rearranged in any way, it defeats the purpose of +// +// If this struct is rearranged in any way, it defeats the purpose of // having it at all. Applications like PKHex or streaming HUDs may find // these values useful, so there's some potential benefit to keeping it. // If there's a compilation problem below, just comment out the assignment diff --git a/src/trade.c b/src/trade.c index 037ea4101a..5728a6ee51 100644 --- a/src/trade.c +++ b/src/trade.c @@ -1285,7 +1285,7 @@ static void Leader_HandleCommunication(void) if (sTradeMenu->playerSelectStatus == STATUS_READY && sTradeMenu->partnerSelectStatus == STATUS_READY) { - // Both players have selected a pokemon to trade + // Both players have selected a pokemon to trade sTradeMenu->callbackId = CB_SET_SELECTED_MONS; sTradeMenu->linkData[0] = LINKCMD_SET_MONS_TO_TRADE; sTradeMenu->linkData[1] = sTradeMenu->cursorPosition; diff --git a/tools/aif2pcm/main.c b/tools/aif2pcm/main.c index 720db1acae..0824b92da8 100644 --- a/tools/aif2pcm/main.c +++ b/tools/aif2pcm/main.c @@ -238,7 +238,7 @@ void read_aif(struct Bytes *aif, AifData *aif_data) { FATAL_ERROR("More than one MARK Chunk in file!\n"); } - + markers = calloc(num_markers, sizeof(struct Marker)); // Read each marker. @@ -289,7 +289,7 @@ void read_aif(struct Bytes *aif, AifData *aif_data) // Skip NoLooping sustain loop. pos += 4; } - + // Skip release loop, we don't need it. pos += 6; } @@ -303,7 +303,7 @@ void read_aif(struct Bytes *aif, AifData *aif_data) { uint8_t *sample_data = (uint8_t *)malloc(num_samples * sizeof(uint8_t)); memcpy(sample_data, &aif->data[pos], num_samples); - + aif_data->samples8 = sample_data; aif_data->real_num_samples = num_samples; } @@ -316,7 +316,7 @@ void read_aif(struct Bytes *aif, AifData *aif_data) { sample_data_swapped[i] = __builtin_bswap16(sample_data[i]); } - + aif_data->samples16 = sample_data_swapped; aif_data->real_num_samples = num_samples; free(sample_data); @@ -329,12 +329,12 @@ void read_aif(struct Bytes *aif, AifData *aif_data) pos += chunk_size; } } - + if (markers) { // Resolve loop points. struct Marker *cur_marker = markers; - + // Grab loop start point. for (int i = 0; i < num_markers; i++, cur_marker++) { @@ -573,7 +573,7 @@ void aif2pcm(const char *aif_filename, const char *pcm_filename, bool compress) struct Bytes *aif = read_bytearray(aif_filename); AifData aif_data = {0}; read_aif(aif, &aif_data); - + // Convert 16-bit to 8-bit if necessary if (aif_data.sample_size == 16) { diff --git a/tools/gbagfx/font.c b/tools/gbagfx/font.c index 0dd6fbc3ee..1251b5c647 100644 --- a/tools/gbagfx/font.c +++ b/tools/gbagfx/font.c @@ -26,7 +26,7 @@ static void ConvertFromLatinFont(unsigned char *src, unsigned char *dest, unsign unsigned int pixelsX = (column * 16) + ((glyphTile & 1) * 8); for (unsigned int i = 0; i < 8; i++) { - unsigned int pixelsY = (row * 16) + ((glyphTile >> 1) * 8) + i; + unsigned int pixelsY = (row * 16) + ((glyphTile >> 1) * 8) + i; unsigned int destPixelsOffset = (pixelsY * 64) + (pixelsX / 4); dest[destPixelsOffset] = src[srcPixelsOffset + 1]; @@ -75,7 +75,7 @@ static void ConvertFromHalfwidthJapaneseFont(unsigned char *src, unsigned char * for (unsigned int i = 0; i < 8; i++) { unsigned int pixelsY = (row * 16) + (glyphTile * 8) + i; unsigned int destPixelsOffset = (pixelsY * 32) + (pixelsX / 4); - + dest[destPixelsOffset] = src[srcPixelsOffset + 1]; dest[destPixelsOffset + 1] = src[srcPixelsOffset]; @@ -233,7 +233,7 @@ void ReadHalfwidthJapaneseFont(char *path, struct Image *image) FATAL_ERROR("The file size (%d) is not a multiple of %d.\n", fileSize, glyphSize); int numGlyphs = fileSize / glyphSize; - + if (numGlyphs % 16 != 0) FATAL_ERROR("The number of glyphs (%d) is not a multiple of 16.\n", numGlyphs); diff --git a/tools/preproc/c_file.cpp b/tools/preproc/c_file.cpp index 17a08cc9f7..508c628731 100644 --- a/tools/preproc/c_file.cpp +++ b/tools/preproc/c_file.cpp @@ -383,7 +383,7 @@ void CFile::TryConvertIncbin() if (m_buffer[m_pos] == '\\') RaiseError("unexpected escape in path string"); - + m_pos++; } @@ -418,7 +418,7 @@ void CFile::TryConvertIncbin() m_pos++; } - + if (m_buffer[m_pos] != ')') RaiseError("expected ')'"); diff --git a/tools/preproc/charmap.cpp b/tools/preproc/charmap.cpp index a7bedfe26f..a0c631026c 100644 --- a/tools/preproc/charmap.cpp +++ b/tools/preproc/charmap.cpp @@ -119,7 +119,7 @@ Lhs CharmapReader::ReadLhs() break; } } - + if (m_buffer[m_pos] == '\'') { m_pos++; diff --git a/tools/scaninc/source_file.cpp b/tools/scaninc/source_file.cpp index df31282f80..9d188eb738 100644 --- a/tools/scaninc/source_file.cpp +++ b/tools/scaninc/source_file.cpp @@ -41,7 +41,7 @@ SourceFileType GetFileType(std::string& path) return SourceFileType::Inc; else FATAL_ERROR("Unrecognized extension \"%s\"\n", extension.c_str()); - + // Unreachable return SourceFileType::Cpp; } @@ -84,7 +84,7 @@ SourceFile::SourceFile(std::string path) else incbins.insert(outputPath); } - + new (&m_source_file.asm_wrapper) SourceFile::InnerUnion::AsmWrapper{incbins, includes}; } } From bac135c6e8a82601c2add44918310454f49bbc10 Mon Sep 17 00:00:00 2001 From: Frank DeBlasio <35279583+fdeblasio@users.noreply.github.com> Date: Mon, 23 Oct 2023 16:03:31 -0400 Subject: [PATCH 139/162] Gave Razor Fang EVO_HELD_ITEM type/fieldUseFunc properties (#3456) --- src/data/items.h | 4 ++-- src/data/pokemon/item_effects.h | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/data/items.h b/src/data/items.h index 6990e7cded..ec7e22a608 100644 --- a/src/data/items.h +++ b/src/data/items.h @@ -6045,8 +6045,8 @@ const struct Item gItems[] = .holdEffectParam = 10, .description = sRazorFangDesc, .pocket = POCKET_ITEMS, - .type = ITEM_USE_BAG_MENU, - .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .type = EVO_HELD_ITEM_TYPE, + .fieldUseFunc = EVO_HELD_ITEM_FIELD_FUNC, .flingPower = 30, }, diff --git a/src/data/pokemon/item_effects.h b/src/data/pokemon/item_effects.h index d7482d5043..dc2e4f755d 100644 --- a/src/data/pokemon/item_effects.h +++ b/src/data/pokemon/item_effects.h @@ -566,6 +566,7 @@ const u8 *const gItemEffectTable[ITEMS_COUNT] = [ITEM_METAL_COAT] = gItemEffect_EvoItem, [ITEM_KINGS_ROCK] = gItemEffect_EvoItem, [ITEM_RAZOR_CLAW] = gItemEffect_EvoItem, + [ITEM_RAZOR_FANG] = gItemEffect_EvoItem, [ITEM_AUSPICIOUS_ARMOR] = gItemEffect_EvoItem, [ITEM_MALICIOUS_ARMOR] = gItemEffect_EvoItem, [ITEM_SCROLL_OF_DARKNESS] = gItemEffect_EvoItem, From 1110d0aeb9d52be1bc1a3735307d8b11994242f6 Mon Sep 17 00:00:00 2001 From: Martin Griffin Date: Mon, 23 Oct 2023 21:12:17 +0100 Subject: [PATCH 140/162] ROM space on debug menu (#3453) --- data/scripts/debug.inc | 19 +++++++++++-- ld_script.txt | 2 ++ ld_script_modern.txt | 2 ++ ld_script_test.txt | 2 ++ src/debug.c | 64 ++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 86 insertions(+), 3 deletions(-) diff --git a/data/scripts/debug.inc b/data/scripts/debug.inc index b29291a7f9..7385101c1e 100644 --- a/data/scripts/debug.inc +++ b/data/scripts/debug.inc @@ -104,13 +104,26 @@ Debug_CheckSaveBlock:: end Debug_SaveBlock1Size:: - .string "SaveBlock1 size: {STR_VAR_1}/{STR_VAR_2}.$" + .string "SaveBlock1 size: {STR_VAR_1}b/{STR_VAR_2}b.\n" + .string "Free space: {STR_VAR_3}b.$" Debug_SaveBlock2Size:: - .string "SaveBlock2 size: {STR_VAR_1}/{STR_VAR_2}.$" + .string "SaveBlock2 size: {STR_VAR_1}b/{STR_VAR_2}b.\n" + .string "Free space: {STR_VAR_3}b.$" Debug_PokemonStorageSize:: - .string "{PKMN}Storage size: {STR_VAR_1}/{STR_VAR_2}.$" + .string "{PKMN}Storage size: {STR_VAR_1}b/{STR_VAR_2}b.\n" + .string "Free space: {STR_VAR_3}b.$" + +Debug_CheckROMSpace:: + callnative CheckROMSize + msgbox Debug_ROMSize, MSGBOX_DEFAULT + release + end + +Debug_ROMSize:: + .string "ROM size: {STR_VAR_1}MB/32MB.\n" + .string "Free space: {STR_VAR_2}MB.$" Debug_HatchAnEgg:: lockall diff --git a/ld_script.txt b/ld_script.txt index a68d1a2a2c..27b340f490 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -1325,6 +1325,8 @@ SECTIONS { data/*.o(.rodata); } = 0 + __rom_end = .; + /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ diff --git a/ld_script_modern.txt b/ld_script_modern.txt index 082d694291..ab68976661 100644 --- a/ld_script_modern.txt +++ b/ld_script_modern.txt @@ -130,6 +130,8 @@ SECTIONS { src/graphics.o(.rodata); } =0 + __rom_end = .; + /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ diff --git a/ld_script_test.txt b/ld_script_test.txt index f4abad98ab..c7e19d7189 100644 --- a/ld_script_test.txt +++ b/ld_script_test.txt @@ -114,6 +114,8 @@ SECTIONS { test/*.o(.rodata*); } =0 + __rom_end = .; + /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ diff --git a/src/debug.c b/src/debug.c index 8279033bf4..3d8d6f33bc 100644 --- a/src/debug.c +++ b/src/debug.c @@ -83,6 +83,7 @@ enum { // Util DEBUG_UTIL_MENU_ITEM_WARP, DEBUG_UTIL_MENU_ITEM_POISON_MONS, DEBUG_UTIL_MENU_ITEM_SAVEBLOCK, + DEBUG_UTIL_MENU_ITEM_ROM_SPACE, DEBUG_UTIL_MENU_ITEM_WEATHER, DEBUG_UTIL_MENU_ITEM_CHECKWALLCLOCK, DEBUG_UTIL_MENU_ITEM_SETWALLCLOCK, @@ -303,6 +304,7 @@ static void DebugAction_Util_Warp_SelectWarp(u8 taskId); static void DebugAction_FlagsVars_RunningShoes(u8 taskId); static void DebugAction_Util_PoisonMons(u8 taskId); static void DebugAction_Util_CheckSaveBlock(u8 taskId); +static void DebugAction_Util_CheckROMSpace(u8 taskId); static void DebugAction_Util_Weather(u8 taskId); static void DebugAction_Util_Weather_SelectId(u8 taskId); static void DebugAction_Util_CheckWallClock(u8 taskId); @@ -390,6 +392,7 @@ extern const u8 Debug_HatchAnEgg[]; extern const u8 PlayersHouse_2F_EventScript_SetWallClock[]; extern const u8 PlayersHouse_2F_EventScript_CheckWallClock[]; extern const u8 Debug_CheckSaveBlock[]; +extern const u8 Debug_CheckROMSpace[]; extern const u8 Debug_BoxFilledMessage[]; #include "data/map_group_count.h" @@ -432,6 +435,7 @@ static const u8 sDebugText_Util_WarpToMap_SelectWarp[] = _("Warp:{CLEAR_TO 90 static const u8 sDebugText_Util_WarpToMap_SelMax[] = _("{STR_VAR_1} / {STR_VAR_2}"); static const u8 sDebugText_Util_PoisonMons[] = _("Poison all mons"); static const u8 sDebugText_Util_SaveBlockSpace[] = _("SaveBlock Space…{CLEAR_TO 110}{RIGHT_ARROW}"); +static const u8 sDebugText_Util_ROMSpace[] = _("ROM Space…{CLEAR_TO 110}{RIGHT_ARROW}"); static const u8 sDebugText_Util_Weather[] = _("Set weather…{CLEAR_TO 110}{RIGHT_ARROW}"); static const u8 sDebugText_Util_Weather_ID[] = _("Weather Id: {STR_VAR_3}\n{STR_VAR_1}\n{STR_VAR_2}"); static const u8 sDebugText_Util_CheckWallClock[] = _("Check Wall Clock…{CLEAR_TO 110}{RIGHT_ARROW}"); @@ -595,6 +599,7 @@ static const struct ListMenuItem sDebugMenu_Items_Utilities[] = [DEBUG_UTIL_MENU_ITEM_WARP] = {sDebugText_Util_WarpToMap, DEBUG_UTIL_MENU_ITEM_WARP}, [DEBUG_UTIL_MENU_ITEM_POISON_MONS] = {sDebugText_Util_PoisonMons, DEBUG_UTIL_MENU_ITEM_POISON_MONS}, [DEBUG_UTIL_MENU_ITEM_SAVEBLOCK] = {sDebugText_Util_SaveBlockSpace, DEBUG_UTIL_MENU_ITEM_SAVEBLOCK}, + [DEBUG_UTIL_MENU_ITEM_ROM_SPACE] = {sDebugText_Util_ROMSpace, DEBUG_UTIL_MENU_ITEM_ROM_SPACE}, [DEBUG_UTIL_MENU_ITEM_WEATHER] = {sDebugText_Util_Weather, DEBUG_UTIL_MENU_ITEM_WEATHER}, [DEBUG_UTIL_MENU_ITEM_CHECKWALLCLOCK] = {sDebugText_Util_CheckWallClock, DEBUG_UTIL_MENU_ITEM_CHECKWALLCLOCK}, [DEBUG_UTIL_MENU_ITEM_SETWALLCLOCK] = {sDebugText_Util_SetWallClock, DEBUG_UTIL_MENU_ITEM_SETWALLCLOCK}, @@ -728,6 +733,7 @@ static void (*const sDebugMenu_Actions_Utilities[])(u8) = [DEBUG_UTIL_MENU_ITEM_WARP] = DebugAction_Util_Warp_Warp, [DEBUG_UTIL_MENU_ITEM_POISON_MONS] = DebugAction_Util_PoisonMons, [DEBUG_UTIL_MENU_ITEM_SAVEBLOCK] = DebugAction_Util_CheckSaveBlock, + [DEBUG_UTIL_MENU_ITEM_ROM_SPACE] = DebugAction_Util_CheckROMSpace, [DEBUG_UTIL_MENU_ITEM_WEATHER] = DebugAction_Util_Weather, [DEBUG_UTIL_MENU_ITEM_CHECKWALLCLOCK] = DebugAction_Util_CheckWallClock, [DEBUG_UTIL_MENU_ITEM_SETWALLCLOCK] = DebugAction_Util_SetWallClock, @@ -1800,6 +1806,7 @@ void CheckSaveBlock1Size(struct ScriptContext *ctx) u32 maxSb1Size = SECTOR_DATA_SIZE * (SECTOR_ID_SAVEBLOCK1_END - SECTOR_ID_SAVEBLOCK1_START + 1); ConvertIntToDecimalStringN(gStringVar1, currSb1Size, STR_CONV_MODE_LEFT_ALIGN, 6); ConvertIntToDecimalStringN(gStringVar2, maxSb1Size, STR_CONV_MODE_LEFT_ALIGN, 6); + ConvertIntToDecimalStringN(gStringVar3, maxSb1Size - currSb1Size, STR_CONV_MODE_LEFT_ALIGN, 6); } void CheckSaveBlock2Size(struct ScriptContext *ctx) @@ -1808,6 +1815,7 @@ void CheckSaveBlock2Size(struct ScriptContext *ctx) u32 maxSb2Size = SECTOR_DATA_SIZE; ConvertIntToDecimalStringN(gStringVar1, currSb2Size, STR_CONV_MODE_LEFT_ALIGN, 6); ConvertIntToDecimalStringN(gStringVar2, maxSb2Size, STR_CONV_MODE_LEFT_ALIGN, 6); + ConvertIntToDecimalStringN(gStringVar3, maxSb2Size - currSb2Size, STR_CONV_MODE_LEFT_ALIGN, 6); } void CheckPokemonStorageSize(struct ScriptContext *ctx) @@ -1816,6 +1824,7 @@ void CheckPokemonStorageSize(struct ScriptContext *ctx) u32 maxPkmnStorageSize = SECTOR_DATA_SIZE * (SECTOR_ID_PKMN_STORAGE_END - SECTOR_ID_PKMN_STORAGE_START + 1); ConvertIntToDecimalStringN(gStringVar1, currPkmnStorageSize, STR_CONV_MODE_LEFT_ALIGN, 6); ConvertIntToDecimalStringN(gStringVar2, maxPkmnStorageSize, STR_CONV_MODE_LEFT_ALIGN, 6); + ConvertIntToDecimalStringN(gStringVar3, maxPkmnStorageSize - currPkmnStorageSize, STR_CONV_MODE_LEFT_ALIGN, 6); } static void DebugAction_Util_CheckSaveBlock(u8 taskId) @@ -1825,6 +1834,61 @@ static void DebugAction_Util_CheckSaveBlock(u8 taskId) ScriptContext_SetupScript(Debug_CheckSaveBlock); } +enum RoundMode +{ + ROUND_CEILING, + ROUND_NEAREST, + ROUND_FLOOR, +}; + +static u8 *ConvertQ22_10ToDecimalString(u8 *string, u32 q22_10, u32 decimalDigits, enum RoundMode roundMode) +{ + string = ConvertIntToDecimalStringN(string, q22_10 >> 10, STR_CONV_MODE_LEFT_ALIGN, 10); + + if (decimalDigits == 0) + return string; + + *string++ = CHAR_PERIOD; + + q22_10 &= (1 << 10) - 1; + while (decimalDigits-- > 1) + { + q22_10 *= 10; + *string++ = CHAR_0 + (q22_10 >> 10); + q22_10 &= (1 << 10) - 1; + } + + q22_10 *= 10; + switch (roundMode) + { + case ROUND_CEILING: q22_10 += (1 << 10) - 1; break; + case ROUND_NEAREST: q22_10 += 1 << (10 - 1); break; + case ROUND_FLOOR: break; + } + *string++ = CHAR_0 + (q22_10 >> 10); + + *string++ = EOS; + + return string; +} + +void CheckROMSize(struct ScriptContext *ctx) +{ + extern u8 __rom_end[]; + u32 currROMSizeB = __rom_end - (const u8 *)ROM_START; + u32 currROMSizeKB = (currROMSizeB + 1023) / 1024; + u32 currROMFreeKB = ((const u8 *)ROM_END - __rom_end) / 1024; + ConvertQ22_10ToDecimalString(gStringVar1, currROMSizeKB, 2, ROUND_CEILING); + ConvertQ22_10ToDecimalString(gStringVar2, currROMFreeKB, 2, ROUND_FLOOR); +} + +static void DebugAction_Util_CheckROMSpace(u8 taskId) +{ + Debug_DestroyMenu_Full(taskId); + LockPlayerFieldControls(); + ScriptContext_SetupScript(Debug_CheckROMSpace); +} + static const u8 sWeatherNames[22][24] = { [WEATHER_NONE] = _("NONE"), [WEATHER_SUNNY_CLOUDS] = _("SUNNY CLOUDS"), From 4488f983be2581cd1e4182551211a3addb508ad4 Mon Sep 17 00:00:00 2001 From: sbird Date: Tue, 24 Oct 2023 01:00:40 +0200 Subject: [PATCH 141/162] fix -Wmaybe-uninitialized for ModifyPersonalityForNature test --- test/battle/trainer_control.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/battle/trainer_control.c b/test/battle/trainer_control.c index 99bea0e8cc..810a721fa5 100644 --- a/test/battle/trainer_control.c +++ b/test/battle/trainer_control.c @@ -123,7 +123,7 @@ TEST("CreateNPCTrainerPartyForTrainer generates different personalities for diff TEST("ModifyPersonalityForNature can set any nature") { - u32 personality, nature, j, k; + u32 personality = 0, nature = 0, j = 0, k = 0; for (j = 0; j < 64; j++) { for (k = 0; k < NUM_NATURES; k++) From 5fe564f0146caeae619b9aa27c042464b374aba8 Mon Sep 17 00:00:00 2001 From: Martin Griffin Date: Tue, 24 Oct 2023 08:55:32 +0100 Subject: [PATCH 142/162] Detect 'NOT x; NOT y;' (#3459) Fix Purifying Salt to be immune to statuses from secondary effects. --- src/battle_util.c | 6 ++ test/battle/ability/cute_charm.c | 10 ++-- test/battle/ability/flame_body.c | 10 ++-- test/battle/ability/leaf_guard.c | 13 +++-- test/battle/ability/limber.c | 6 +- test/battle/ability/poison_point.c | 10 ++-- test/battle/ability/purifying_salt.c | 7 ++- test/battle/ability/sap_sipper.c | 12 ++-- test/battle/ability/static.c | 10 ++-- test/battle/ability/toxic_debris.c | 21 ++++--- test/battle/ability/wind_power.c | 6 +- test/battle/hold_effect/attack_up.c | 13 ++--- test/battle/hold_effect/critical_hit_up.c | 9 +-- test/battle/hold_effect/defense_up.c | 13 ++--- test/battle/hold_effect/kee_berry.c | 6 +- test/battle/hold_effect/micle_berry.c | 15 ++--- test/battle/hold_effect/rowap_berry.c | 6 +- test/battle/hold_effect/special_attack_up.c | 13 ++--- test/battle/hold_effect/special_defense_up.c | 13 ++--- test/battle/hold_effect/speed_up.c | 13 ++--- test/battle/move_effect/absorb.c | 8 ++- test/battle/move_effect/burn_hit.c | 6 +- test/battle/move_effect/dire_claw.c | 55 +++++++++--------- test/battle/move_effect/dream_eater.c | 8 ++- test/battle/move_effect/freeze_hit.c | 8 ++- test/battle/move_effect/paralyze_hit.c | 6 +- test/battle/move_effect/poison_hit.c | 6 +- test/battle/move_effect/protect.c | 33 +++++++---- test/battle/move_effect/roost.c | 42 +++++++++----- test/battle/move_effect/teatime.c | 8 ++- test/battle/move_effect/toxic.c | 8 ++- test/battle/move_effect/tri_attack.c | 60 ++++++++++---------- test/test_runner_battle.c | 14 ++++- 33 files changed, 276 insertions(+), 198 deletions(-) diff --git a/src/battle_util.c b/src/battle_util.c index 3486b6a3b3..d64acb6fb5 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -6315,6 +6315,7 @@ bool32 CanSleep(u32 battler) if (ability == ABILITY_INSOMNIA || ability == ABILITY_VITAL_SPIRIT || ability == ABILITY_COMATOSE + || ability == ABILITY_PURIFYING_SALT || gSideStatuses[GetBattlerSide(battler)] & SIDE_STATUS_SAFEGUARD || gBattleMons[battler].status1 & STATUS1_ANY || IsAbilityOnSide(battler, ABILITY_SWEET_VEIL) @@ -6333,6 +6334,7 @@ bool32 CanBePoisoned(u32 battlerAttacker, u32 battlerTarget) || gBattleMons[battlerTarget].status1 & STATUS1_ANY || ability == ABILITY_IMMUNITY || ability == ABILITY_COMATOSE + || ability == ABILITY_PURIFYING_SALT || IsAbilityOnSide(battlerTarget, ABILITY_PASTEL_VEIL) || IsAbilityStatusProtected(battlerTarget) || IsBattlerTerrainAffected(battlerTarget, STATUS_FIELD_MISTY_TERRAIN)) @@ -6350,6 +6352,7 @@ bool32 CanBeBurned(u32 battler) || ability == ABILITY_WATER_BUBBLE || ability == ABILITY_COMATOSE || ability == ABILITY_THERMAL_EXCHANGE + || ability == ABILITY_PURIFYING_SALT || IsAbilityStatusProtected(battler) || IsBattlerTerrainAffected(battler, STATUS_FIELD_MISTY_TERRAIN)) return FALSE; @@ -6366,6 +6369,7 @@ bool32 CanBeParalyzed(u32 battler) gSideStatuses[GetBattlerSide(battler)] & SIDE_STATUS_SAFEGUARD || ability == ABILITY_LIMBER || ability == ABILITY_COMATOSE + || ability == ABILITY_PURIFYING_SALT || gBattleMons[battler].status1 & STATUS1_ANY || IsAbilityStatusProtected(battler) || IsBattlerTerrainAffected(battler, STATUS_FIELD_MISTY_TERRAIN)) @@ -6381,6 +6385,7 @@ bool32 CanBeFrozen(u32 battler) || gSideStatuses[GetBattlerSide(battler)] & SIDE_STATUS_SAFEGUARD || ability == ABILITY_MAGMA_ARMOR || ability == ABILITY_COMATOSE + || ability == ABILITY_PURIFYING_SALT || gBattleMons[battler].status1 & STATUS1_ANY || IsAbilityStatusProtected(battler) || IsBattlerTerrainAffected(battler, STATUS_FIELD_MISTY_TERRAIN)) @@ -6395,6 +6400,7 @@ bool32 CanGetFrostbite(u32 battler) || gSideStatuses[GetBattlerSide(battler)] & SIDE_STATUS_SAFEGUARD || ability == ABILITY_MAGMA_ARMOR || ability == ABILITY_COMATOSE + || ability == ABILITY_PURIFYING_SALT || gBattleMons[battler].status1 & STATUS1_ANY || IsAbilityStatusProtected(battler) || IsBattlerTerrainAffected(battler, STATUS_FIELD_MISTY_TERRAIN)) diff --git a/test/battle/ability/cute_charm.c b/test/battle/ability/cute_charm.c index 9bef66b19a..54ca0c2907 100644 --- a/test/battle/ability/cute_charm.c +++ b/test/battle/ability/cute_charm.c @@ -21,10 +21,12 @@ SINGLE_BATTLE_TEST("Cute Charm inflicts infatuation on contact") MESSAGE("Foe Clefairy's Cute Charm infatuated Wobbuffet!"); MESSAGE("Wobbuffet is in love with Foe Clefairy!"); } else { - NOT ABILITY_POPUP(opponent, ABILITY_CUTE_CHARM); - NOT ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_INFATUATION, player); - NOT MESSAGE("Foe Clefairy's Cute Charm infatuated Wobbuffet!"); - NOT MESSAGE("Wobbuffet is in love with Foe Clefairy!"); + NONE_OF { + ABILITY_POPUP(opponent, ABILITY_CUTE_CHARM); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_INFATUATION, player); + MESSAGE("Foe Clefairy's Cute Charm infatuated Wobbuffet!"); + MESSAGE("Wobbuffet is in love with Foe Clefairy!"); + } } } } diff --git a/test/battle/ability/flame_body.c b/test/battle/ability/flame_body.c index 959b583f80..b275c20e1c 100644 --- a/test/battle/ability/flame_body.c +++ b/test/battle/ability/flame_body.c @@ -20,10 +20,12 @@ SINGLE_BATTLE_TEST("Flame Body inflicts burn on contact") MESSAGE("Foe Magmar's Flame Body burned Wobbuffet!"); STATUS_ICON(player, burn: TRUE); } else { - NOT ABILITY_POPUP(opponent, ABILITY_FLAME_BODY); - NOT ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_BRN, player); - NOT MESSAGE("Foe Magmar's Flame Body burned Wobbuffet!"); - NOT STATUS_ICON(player, burn: TRUE); + NONE_OF { + ABILITY_POPUP(opponent, ABILITY_FLAME_BODY); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_BRN, player); + MESSAGE("Foe Magmar's Flame Body burned Wobbuffet!"); + STATUS_ICON(player, burn: TRUE); + } } } } diff --git a/test/battle/ability/leaf_guard.c b/test/battle/ability/leaf_guard.c index 66eb6fc186..595a9451c3 100644 --- a/test/battle/ability/leaf_guard.c +++ b/test/battle/ability/leaf_guard.c @@ -25,10 +25,13 @@ SINGLE_BATTLE_TEST("Leaf Guard prevents non-volatile status conditions in sun") NOT ANIMATION(ANIM_TYPE_MOVE, move, opponent); ABILITY_POPUP(player, ABILITY_LEAF_GUARD); MESSAGE("It doesn't affect Leafeon…"); + NOT STATUS_ICON(player, status); } else { - NOT ABILITY_POPUP(player, ABILITY_LEAF_GUARD); + NONE_OF { + ABILITY_POPUP(player, ABILITY_LEAF_GUARD); + STATUS_ICON(player, status); + } } - NOT STATUS_ICON(player, status); } } @@ -65,7 +68,9 @@ SINGLE_BATTLE_TEST("Leaf Guard prevents Rest during sun") TURN { MOVE(opponent, MOVE_SUNNY_DAY); MOVE(player, MOVE_REST); } } SCENE { MESSAGE("But it failed!"); - NOT STATUS_ICON(player, sleep: TRUE); - NONE_OF { HP_BAR(player); } + NONE_OF { + STATUS_ICON(player, sleep: TRUE); + HP_BAR(player); + } } } diff --git a/test/battle/ability/limber.c b/test/battle/ability/limber.c index 87d4177ffd..9ba2760c87 100644 --- a/test/battle/ability/limber.c +++ b/test/battle/ability/limber.c @@ -10,7 +10,9 @@ SINGLE_BATTLE_TEST("Limber prevents paralysis") TURN { MOVE(opponent, MOVE_THUNDER_SHOCK); } } SCENE { HP_BAR(player); - NONE_OF { ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PRZ, player); } - NONE_OF { STATUS_ICON(player, paralysis: TRUE); } + NONE_OF { + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PRZ, player); + STATUS_ICON(player, paralysis: TRUE); + } } } diff --git a/test/battle/ability/poison_point.c b/test/battle/ability/poison_point.c index 7d2fcd518b..0df1255081 100644 --- a/test/battle/ability/poison_point.c +++ b/test/battle/ability/poison_point.c @@ -21,10 +21,12 @@ SINGLE_BATTLE_TEST("Poison Point inflicts poison on contact") MESSAGE("Wobbuffet was poisoned by Foe Nidoran♂'s Poison Point!"); STATUS_ICON(player, poison: TRUE); } else { - NOT ABILITY_POPUP(opponent, ABILITY_POISON_POINT); - NOT ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, player); - NOT MESSAGE("Wobbuffet was poisoned by Foe Nidoran♂'s Poison Point!"); - NOT STATUS_ICON(player, poison: TRUE); + NONE_OF { + ABILITY_POPUP(opponent, ABILITY_POISON_POINT); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, player); + MESSAGE("Wobbuffet was poisoned by Foe Nidoran♂'s Poison Point!"); + STATUS_ICON(player, poison: TRUE); + } } } } diff --git a/test/battle/ability/purifying_salt.c b/test/battle/ability/purifying_salt.c index 0a53dbc61b..ea89124681 100644 --- a/test/battle/ability/purifying_salt.c +++ b/test/battle/ability/purifying_salt.c @@ -57,9 +57,12 @@ SINGLE_BATTLE_TEST("Purifying Salt grants immunity to status effects") NOT ANIMATION(ANIM_TYPE_MOVE, move, opponent); ABILITY_POPUP(player, ABILITY_PURIFYING_SALT); MESSAGE("It doesn't affect Wobbuffet…"); + NOT STATUS_ICON(player, status); } else { - NOT ABILITY_POPUP(player, ABILITY_PURIFYING_SALT); + NONE_OF { + ABILITY_POPUP(player, ABILITY_PURIFYING_SALT); + STATUS_ICON(player, status); + } } - NOT STATUS_ICON(player, status); } } diff --git a/test/battle/ability/sap_sipper.c b/test/battle/ability/sap_sipper.c index 89ec422491..918e553a3a 100644 --- a/test/battle/ability/sap_sipper.c +++ b/test/battle/ability/sap_sipper.c @@ -21,8 +21,10 @@ SINGLE_BATTLE_TEST("Sap Sipper negates effects from Grass-type moves") } WHEN { TURN { MOVE(opponent, MOVE_SPORE); } } SCENE { - NONE_OF { ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_SLP, player); } - NONE_OF { STATUS_ICON(player, sleep: TRUE); } + NONE_OF { + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_SLP, player); + STATUS_ICON(player, sleep: TRUE); + } } } @@ -49,7 +51,9 @@ SINGLE_BATTLE_TEST("Sap Sipper does not increase Attack if already maxed") TURN { MOVE(player, MOVE_BELLY_DRUM); MOVE(opponent, MOVE_VINE_WHIP); } } SCENE { ABILITY_POPUP(player, ABILITY_SAP_SIPPER); - NONE_OF { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); } - NONE_OF { MESSAGE("Marill's Attack rose!"); } + NONE_OF { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + MESSAGE("Marill's Attack rose!"); + } } } diff --git a/test/battle/ability/static.c b/test/battle/ability/static.c index e0d91aa0d5..51224da944 100644 --- a/test/battle/ability/static.c +++ b/test/battle/ability/static.c @@ -20,10 +20,12 @@ SINGLE_BATTLE_TEST("Static inflicts paralysis on contact") MESSAGE("Foe Pikachu's Static paralyzed Wobbuffet! It may be unable to move!"); STATUS_ICON(player, paralysis: TRUE); } else { - NOT ABILITY_POPUP(opponent, ABILITY_STATIC); - NOT ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PRZ, player); - NOT MESSAGE("Foe Pikachu's Static paralyzed Wobbuffet! It may be unable to move!"); - NOT STATUS_ICON(player, paralysis: TRUE); + NONE_OF { + ABILITY_POPUP(opponent, ABILITY_STATIC); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PRZ, player); + MESSAGE("Foe Pikachu's Static paralyzed Wobbuffet! It may be unable to move!"); + STATUS_ICON(player, paralysis: TRUE); + } } } } diff --git a/test/battle/ability/toxic_debris.c b/test/battle/ability/toxic_debris.c index f3e23e5abb..fadde2ceb5 100644 --- a/test/battle/ability/toxic_debris.c +++ b/test/battle/ability/toxic_debris.c @@ -17,10 +17,11 @@ SINGLE_BATTLE_TEST("Toxic Debris sets Toxic Spikes on the opposing side if hit b if (move == MOVE_TACKLE) { ABILITY_POPUP(player, ABILITY_TOXIC_DEBRIS); MESSAGE("Poison Spikes were scattered all around the opposing team's feet!"); - } - else { - NOT ABILITY_POPUP(player, ABILITY_TOXIC_DEBRIS); - NOT MESSAGE("Poison Spikes were scattered all around the opposing team's feet!"); + } else { + NONE_OF { + ABILITY_POPUP(player, ABILITY_TOXIC_DEBRIS); + MESSAGE("Poison Spikes were scattered all around the opposing team's feet!"); + } } } } @@ -42,8 +43,10 @@ SINGLE_BATTLE_TEST("Toxic Debris does not activate if two layers of Toxic Spikes ABILITY_POPUP(player, ABILITY_TOXIC_DEBRIS); MESSAGE("Poison Spikes were scattered all around the opposing team's feet!"); ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); - NOT ABILITY_POPUP(player, ABILITY_TOXIC_DEBRIS); - NOT MESSAGE("Poison Spikes were scattered all around the opposing team's feet!"); + NONE_OF { + ABILITY_POPUP(player, ABILITY_TOXIC_DEBRIS); + MESSAGE("Poison Spikes were scattered all around the opposing team's feet!"); + } } } @@ -58,8 +61,10 @@ SINGLE_BATTLE_TEST("If a Substitute is hit, Toxic Debris does not set Toxic Spik } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_SUBSTITUTE, player); ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); - NOT ABILITY_POPUP(player, ABILITY_TOXIC_DEBRIS); - NOT MESSAGE("Poison Spikes were scattered all around the opposing team's feet!"); + NONE_OF { + ABILITY_POPUP(player, ABILITY_TOXIC_DEBRIS); + MESSAGE("Poison Spikes were scattered all around the opposing team's feet!"); + } } } diff --git a/test/battle/ability/wind_power.c b/test/battle/ability/wind_power.c index 4616a69fb7..98934a93d1 100644 --- a/test/battle/ability/wind_power.c +++ b/test/battle/ability/wind_power.c @@ -133,8 +133,10 @@ DOUBLE_BATTLE_TEST("Wind Power activates correctly for every battler with the ab ABILITY_POPUP(playerRight, ABILITY_WIND_POWER); MESSAGE("Being hit by Air Cutter charged Wobbuffet with power!"); } - NOT HP_BAR(opponentLeft); - NOT HP_BAR(opponentRight); + NONE_OF { + HP_BAR(opponentLeft); + HP_BAR(opponentRight); + } } THEN { EXPECT_NE(playerLeft->hp, playerLeft->maxHP); diff --git a/test/battle/hold_effect/attack_up.c b/test/battle/hold_effect/attack_up.c index 2a6dd7c2df..0602d651d7 100644 --- a/test/battle/hold_effect/attack_up.c +++ b/test/battle/hold_effect/attack_up.c @@ -21,13 +21,12 @@ SINGLE_BATTLE_TEST("Liechi Berry raises the holder's Attack by one stage when HP TURN { MOVE(opponent, move); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, move, opponent); - if (move == MOVE_TACKLE) - { - NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); - NOT MESSAGE("Using Liechi Berry, the Attack of Wobbuffet rose!"); - } - else - { + if (move == MOVE_TACKLE) { + NONE_OF { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); + MESSAGE("Using Liechi Berry, the Attack of Wobbuffet rose!"); + } + } else { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); MESSAGE("Using Liechi Berry, the Attack of Wobbuffet rose!"); } diff --git a/test/battle/hold_effect/critical_hit_up.c b/test/battle/hold_effect/critical_hit_up.c index fc8e5acec5..c0cc2e864f 100644 --- a/test/battle/hold_effect/critical_hit_up.c +++ b/test/battle/hold_effect/critical_hit_up.c @@ -22,10 +22,11 @@ SINGLE_BATTLE_TEST("Lansat Berry raises the holder's critical-hit-ratio by two s } SCENE { ANIMATION(ANIM_TYPE_MOVE, move, opponent); if (move == MOVE_TACKLE) { - NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); - NOT MESSAGE("Wobbuffet used Lansat Berry to get pumped!"); - } - else { + NONE_OF { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); + MESSAGE("Wobbuffet used Lansat Berry to get pumped!"); + } + } else { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); MESSAGE("Wobbuffet used Lansat Berry to get pumped!"); } diff --git a/test/battle/hold_effect/defense_up.c b/test/battle/hold_effect/defense_up.c index 4326f156dc..774cd3b981 100644 --- a/test/battle/hold_effect/defense_up.c +++ b/test/battle/hold_effect/defense_up.c @@ -21,13 +21,12 @@ SINGLE_BATTLE_TEST("Ganlon Berry raises the holder's Defense by one stage when H TURN { MOVE(opponent, move); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, move, opponent); - if (move == MOVE_TACKLE) - { - NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); - NOT MESSAGE("Using Ganlon Berry, the Defense of Wobbuffet rose!"); - } - else - { + if (move == MOVE_TACKLE) { + NONE_OF { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); + MESSAGE("Using Ganlon Berry, the Defense of Wobbuffet rose!"); + } + } else { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); MESSAGE("Using Ganlon Berry, the Defense of Wobbuffet rose!"); } diff --git a/test/battle/hold_effect/kee_berry.c b/test/battle/hold_effect/kee_berry.c index cfb6b14e5c..6e5319416f 100644 --- a/test/battle/hold_effect/kee_berry.c +++ b/test/battle/hold_effect/kee_berry.c @@ -67,7 +67,9 @@ SINGLE_BATTLE_TEST("Kee Berry is not triggered by a special move") } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_SWIFT, player); HP_BAR(opponent); - NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); - NOT MESSAGE("Using Kee Berry, the Defense of Foe Wobbuffet rose!"); + NONE_OF { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); + MESSAGE("Using Kee Berry, the Defense of Foe Wobbuffet rose!"); + } } } diff --git a/test/battle/hold_effect/micle_berry.c b/test/battle/hold_effect/micle_berry.c index 224c2fecf6..79c40f68cc 100644 --- a/test/battle/hold_effect/micle_berry.c +++ b/test/battle/hold_effect/micle_berry.c @@ -21,13 +21,12 @@ SINGLE_BATTLE_TEST("Micle Berry raises the holder's accuracy by 1.2 when HP drop TURN { MOVE(opponent, move); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, move, opponent); - if (move == MOVE_TACKLE) - { - NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); - NOT MESSAGE("Wobbuffet boosted the accuracy of its next move using Micle Berry!"); - } - else - { + if (move == MOVE_TACKLE) { + NONE_OF { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); + MESSAGE("Wobbuffet boosted the accuracy of its next move using Micle Berry!"); + } + } else { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); MESSAGE("Wobbuffet boosted the accuracy of its next move using Micle Berry!"); } @@ -64,5 +63,3 @@ SINGLE_BATTLE_TEST("Micle Berry raises the holder's accuracy by 1.2") ANIMATION(ANIM_TYPE_MOVE, MOVE_SUBMISSION, player); } } - - diff --git a/test/battle/hold_effect/rowap_berry.c b/test/battle/hold_effect/rowap_berry.c index 3df8d004f4..d019a0f77b 100644 --- a/test/battle/hold_effect/rowap_berry.c +++ b/test/battle/hold_effect/rowap_berry.c @@ -51,7 +51,9 @@ SINGLE_BATTLE_TEST("Rowap Berry is not triggered by a physical move") } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); HP_BAR(opponent); - NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); - NOT MESSAGE("Wobbuffet was hurt by Foe Wobbuffet's Rowap Berry!"); + NONE_OF { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); + MESSAGE("Wobbuffet was hurt by Foe Wobbuffet's Rowap Berry!"); + } } } diff --git a/test/battle/hold_effect/special_attack_up.c b/test/battle/hold_effect/special_attack_up.c index 1059960abc..9815ab1212 100644 --- a/test/battle/hold_effect/special_attack_up.c +++ b/test/battle/hold_effect/special_attack_up.c @@ -21,13 +21,12 @@ SINGLE_BATTLE_TEST("Petaya Berry raises the holder's Sp. Atk by one stage when H TURN { MOVE(opponent, move); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, move, opponent); - if (move == MOVE_TACKLE) - { - NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); - NOT MESSAGE("Using Petaya Berry, the Sp. Atk of Wobbuffet rose!"); - } - else - { + if (move == MOVE_TACKLE) { + NONE_OF { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); + MESSAGE("Using Petaya Berry, the Sp. Atk of Wobbuffet rose!"); + } + } else { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); MESSAGE("Using Petaya Berry, the Sp. Atk of Wobbuffet rose!"); } diff --git a/test/battle/hold_effect/special_defense_up.c b/test/battle/hold_effect/special_defense_up.c index 9a6c8c44be..2ba3c02a57 100644 --- a/test/battle/hold_effect/special_defense_up.c +++ b/test/battle/hold_effect/special_defense_up.c @@ -21,13 +21,12 @@ SINGLE_BATTLE_TEST("Apicot Berry raises the holder's Sp. Def by one stage when H TURN { MOVE(opponent, move); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, move, opponent); - if (move == MOVE_TACKLE) - { - NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); - NOT MESSAGE("Using Apicot Berry, the Sp. Def of Wobbuffet rose!"); - } - else - { + if (move == MOVE_TACKLE) { + NONE_OF { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); + MESSAGE("Using Apicot Berry, the Sp. Def of Wobbuffet rose!"); + } + } else { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); MESSAGE("Using Apicot Berry, the Sp. Def of Wobbuffet rose!"); } diff --git a/test/battle/hold_effect/speed_up.c b/test/battle/hold_effect/speed_up.c index 62ca65dbc2..558d4262e8 100644 --- a/test/battle/hold_effect/speed_up.c +++ b/test/battle/hold_effect/speed_up.c @@ -21,13 +21,12 @@ SINGLE_BATTLE_TEST("Salac Berry raises the holder's Speed by one stage when HP d TURN { MOVE(opponent, move); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, move, opponent); - if (move == MOVE_TACKLE) - { - NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); - NOT MESSAGE("Using Salac Berry, the Speed of Wobbuffet rose!"); - } - else - { + if (move == MOVE_TACKLE) { + NONE_OF { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); + MESSAGE("Using Salac Berry, the Speed of Wobbuffet rose!"); + } + } else { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); MESSAGE("Using Salac Berry, the Speed of Wobbuffet rose!"); } diff --git a/test/battle/move_effect/absorb.c b/test/battle/move_effect/absorb.c index d46dbd9c5c..5d164de40d 100644 --- a/test/battle/move_effect/absorb.c +++ b/test/battle/move_effect/absorb.c @@ -34,8 +34,10 @@ SINGLE_BATTLE_TEST("Absorb fails if Heal Block applies") TURN { MOVE(opponent, MOVE_HEAL_BLOCK); MOVE(player, MOVE_ABSORB); } } SCENE { MESSAGE("Wobbuffet was prevented from healing!"); - NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_ABSORB, player); - NOT HP_BAR(opponent); - NOT HP_BAR(player); + NONE_OF { + ANIMATION(ANIM_TYPE_MOVE, MOVE_ABSORB, player); + HP_BAR(opponent); + HP_BAR(player); + } } } diff --git a/test/battle/move_effect/burn_hit.c b/test/battle/move_effect/burn_hit.c index 762780009c..627a051a53 100644 --- a/test/battle/move_effect/burn_hit.c +++ b/test/battle/move_effect/burn_hit.c @@ -32,7 +32,9 @@ SINGLE_BATTLE_TEST("Ember cannot burn a Fire-type Pokémon") } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_EMBER, player); HP_BAR(opponent); - NOT ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_BRN, opponent); - NOT STATUS_ICON(opponent, burn: TRUE); + NONE_OF { + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_BRN, opponent); + STATUS_ICON(opponent, burn: TRUE); + } } } diff --git a/test/battle/move_effect/dire_claw.c b/test/battle/move_effect/dire_claw.c index 421ba201d0..9149f4a3cc 100644 --- a/test/battle/move_effect/dire_claw.c +++ b/test/battle/move_effect/dire_claw.c @@ -25,11 +25,9 @@ SINGLE_BATTLE_TEST("Dire Claw can inflict poison, paralysis or sleep") ANIMATION(ANIM_TYPE_STATUS, statusAnim, opponent); if (statusAnim == B_ANIM_STATUS_PRZ) { STATUS_ICON(opponent, paralysis: TRUE); - } - else if (statusAnim == B_ANIM_STATUS_SLP) { + } else if (statusAnim == B_ANIM_STATUS_SLP) { STATUS_ICON(opponent, sleep: TRUE); - } - else if (statusAnim == B_ANIM_STATUS_PSN) { + } else if (statusAnim == B_ANIM_STATUS_PSN) { STATUS_ICON(opponent, poison: TRUE); } } @@ -53,12 +51,13 @@ SINGLE_BATTLE_TEST("Dire Claw cannot poison/paralyze poison/electric types respe } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_DIRE_CLAW, player); HP_BAR(opponent); - NOT ANIMATION(ANIM_TYPE_STATUS, statusAnim, opponent); - if (statusAnim == B_ANIM_STATUS_PRZ) { - NOT STATUS_ICON(opponent, paralysis: TRUE); - } - else if (statusAnim == B_ANIM_STATUS_PSN) { - NOT STATUS_ICON(opponent, poison: TRUE); + NONE_OF { + ANIMATION(ANIM_TYPE_STATUS, statusAnim, opponent); + if (statusAnim == B_ANIM_STATUS_PRZ) { + STATUS_ICON(opponent, paralysis: TRUE); + } else if (statusAnim == B_ANIM_STATUS_PSN) { + STATUS_ICON(opponent, poison: TRUE); + } } } } @@ -86,15 +85,15 @@ SINGLE_BATTLE_TEST("Dire Claw cannot poison/paralyze/cause to fall asleep pokemo } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_DIRE_CLAW, player); HP_BAR(opponent); - NOT ANIMATION(ANIM_TYPE_STATUS, statusAnim, opponent); - if (statusAnim == B_ANIM_STATUS_PRZ) { - NOT STATUS_ICON(opponent, paralysis: TRUE); - } - else if (statusAnim == B_ANIM_STATUS_SLP) { - NOT STATUS_ICON(opponent, sleep: TRUE); - } - else if (statusAnim == B_ANIM_STATUS_PSN) { - NOT STATUS_ICON(opponent, poison: TRUE); + NONE_OF { + ANIMATION(ANIM_TYPE_STATUS, statusAnim, opponent); + if (statusAnim == B_ANIM_STATUS_PRZ) { + STATUS_ICON(opponent, paralysis: TRUE); + } else if (statusAnim == B_ANIM_STATUS_SLP) { + STATUS_ICON(opponent, sleep: TRUE); + } else if (statusAnim == B_ANIM_STATUS_PSN) { + STATUS_ICON(opponent, poison: TRUE); + } } } } @@ -115,15 +114,15 @@ SINGLE_BATTLE_TEST("Dire Claw cannot poison/paralyze/cause to fall asleep a mon } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_DIRE_CLAW, player); HP_BAR(opponent); - NOT ANIMATION(ANIM_TYPE_STATUS, statusAnim, opponent); - if (statusAnim == B_ANIM_STATUS_PRZ) { - NOT STATUS_ICON(opponent, paralysis: TRUE); - } - else if (statusAnim == B_ANIM_STATUS_SLP) { - NOT STATUS_ICON(opponent, sleep: TRUE); - } - else if (statusAnim == B_ANIM_STATUS_PSN) { - NOT STATUS_ICON(opponent, poison: TRUE); + NONE_OF { + ANIMATION(ANIM_TYPE_STATUS, statusAnim, opponent); + if (statusAnim == B_ANIM_STATUS_PRZ) { + STATUS_ICON(opponent, paralysis: TRUE); + } else if (statusAnim == B_ANIM_STATUS_SLP) { + STATUS_ICON(opponent, sleep: TRUE); + } else if (statusAnim == B_ANIM_STATUS_PSN) { + STATUS_ICON(opponent, poison: TRUE); + } } } } diff --git a/test/battle/move_effect/dream_eater.c b/test/battle/move_effect/dream_eater.c index 047fe78982..62fd918a1b 100644 --- a/test/battle/move_effect/dream_eater.c +++ b/test/battle/move_effect/dream_eater.c @@ -47,8 +47,10 @@ SINGLE_BATTLE_TEST("Dream Eater fails if Heal Block applies") TURN { MOVE(opponent, MOVE_HEAL_BLOCK); MOVE(player, MOVE_DREAM_EATER); } } SCENE { MESSAGE("Wobbuffet was prevented from healing!"); - NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_DREAM_EATER, player); - NOT HP_BAR(opponent); - NOT HP_BAR(player); + NONE_OF { + ANIMATION(ANIM_TYPE_MOVE, MOVE_DREAM_EATER, player); + HP_BAR(opponent); + HP_BAR(player); + } } } diff --git a/test/battle/move_effect/freeze_hit.c b/test/battle/move_effect/freeze_hit.c index 9874ccc775..4c9ff557e4 100644 --- a/test/battle/move_effect/freeze_hit.c +++ b/test/battle/move_effect/freeze_hit.c @@ -33,8 +33,10 @@ SINGLE_BATTLE_TEST("Powder Snow cannot freeze an Ice-type Pokémon") } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_POWDER_SNOW, player); HP_BAR(opponent); - NOT ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_FRZ, opponent); - NOT STATUS_ICON(opponent, freeze: TRUE); + NONE_OF { + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_FRZ, opponent); + STATUS_ICON(opponent, freeze: TRUE); + } } } @@ -61,6 +63,6 @@ SINGLE_BATTLE_TEST("Blizzard bypasses accuracy checks in Hail and Snow") } WHEN { TURN { MOVE(opponent, move); MOVE(player, MOVE_BLIZZARD); } } SCENE { - NONE_OF { MESSAGE("Wobbuffet's attack missed!"); } + NOT MESSAGE("Wobbuffet's attack missed!"); } } diff --git a/test/battle/move_effect/paralyze_hit.c b/test/battle/move_effect/paralyze_hit.c index 4efe6746ce..c2fa440be1 100644 --- a/test/battle/move_effect/paralyze_hit.c +++ b/test/battle/move_effect/paralyze_hit.c @@ -33,7 +33,9 @@ SINGLE_BATTLE_TEST("Thunder Shock cannot paralyze an Electric-type") } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_THUNDER_SHOCK, player); HP_BAR(opponent); - NOT ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PRZ, opponent); - NOT STATUS_ICON(opponent, paralysis: TRUE); + NONE_OF { + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PRZ, opponent); + STATUS_ICON(opponent, paralysis: TRUE); + } } } diff --git a/test/battle/move_effect/poison_hit.c b/test/battle/move_effect/poison_hit.c index 95a8fbc946..229355cb65 100644 --- a/test/battle/move_effect/poison_hit.c +++ b/test/battle/move_effect/poison_hit.c @@ -38,7 +38,9 @@ SINGLE_BATTLE_TEST("Poison cannot be inflicted on Poison and Steel-type Pokémon } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_TWINEEDLE, player); HP_BAR(opponent); - NOT ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, opponent); - NOT STATUS_ICON(opponent, poison: TRUE); + NONE_OF { + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, opponent); + STATUS_ICON(opponent, poison: TRUE); + } } } diff --git a/test/battle/move_effect/protect.c b/test/battle/move_effect/protect.c index 39bd0eb8ae..dd9f57b356 100644 --- a/test/battle/move_effect/protect.c +++ b/test/battle/move_effect/protect.c @@ -93,8 +93,8 @@ SINGLE_BATTLE_TEST("King's Shield, Silk Trap and Obstruct protect from damaging } else { NOT ANIMATION(ANIM_TYPE_MOVE, usedMove, player); MESSAGE("Foe Wobbuffet protected itself!"); - NOT HP_BAR(opponent); if (usedMove == MOVE_TACKLE) { + NOT HP_BAR(opponent); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); if (statId == STAT_ATK) { MESSAGE("Wobbuffet's Attack fell!"); @@ -106,7 +106,10 @@ SINGLE_BATTLE_TEST("King's Shield, Silk Trap and Obstruct protect from damaging } } } else { - NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + NONE_OF { + HP_BAR(opponent); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + } } } } THEN { @@ -173,11 +176,14 @@ SINGLE_BATTLE_TEST("Baneful Bunker poisons pokemon for moves making contact") MESSAGE("Foe Wobbuffet protected itself!"); NOT ANIMATION(ANIM_TYPE_MOVE, usedMove, player); MESSAGE("Foe Wobbuffet protected itself!"); - NOT HP_BAR(opponent); if (usedMove == MOVE_TACKLE) { + NOT HP_BAR(opponent); STATUS_ICON(player, STATUS1_POISON); } else { - NOT STATUS_ICON(player, STATUS1_POISON); + NONE_OF { + HP_BAR(opponent); + STATUS_ICON(player, STATUS1_POISON); + } } } } @@ -218,8 +224,10 @@ SINGLE_BATTLE_TEST("Recoil damage is not applied if target was protected") ANIMATION(ANIM_TYPE_MOVE, protectMove, opponent); MESSAGE("Foe Beautifly protected itself!"); // MESSAGE("Rapidash used recoilMove!"); - NOT ANIMATION(ANIM_TYPE_MOVE, recoilMove, player); - NOT MESSAGE("Rapidash is hit with recoil!"); + NONE_OF { + ANIMATION(ANIM_TYPE_MOVE, recoilMove, player); + MESSAGE("Rapidash is hit with recoil!"); + } } } @@ -251,16 +259,17 @@ SINGLE_BATTLE_TEST("Multi-hit moves don't hit a protected target and fail only o // Each effect happens only once. if (move == MOVE_KINGS_SHIELD || move == MOVE_SILK_TRAP || move == MOVE_OBSTRUCT) { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); - NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); - } - else if (move == MOVE_SPIKY_SHIELD) { + } else if (move == MOVE_SPIKY_SHIELD) { HP_BAR(player); - NOT HP_BAR(player); - } - else if (move == MOVE_BANEFUL_BUNKER) { + } else if (move == MOVE_BANEFUL_BUNKER) { STATUS_ICON(player, STATUS1_POISON); } NONE_OF { + if (move == MOVE_KINGS_SHIELD || move == MOVE_SILK_TRAP || move == MOVE_OBSTRUCT) { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + } else if (move == MOVE_SPIKY_SHIELD) { + HP_BAR(player); + } MESSAGE("Hit 2 time(s)!"); MESSAGE("Hit 3 time(s)!"); MESSAGE("Hit 4 time(s)!"); diff --git a/test/battle/move_effect/roost.c b/test/battle/move_effect/roost.c index 4a3f90602d..12731e2345 100644 --- a/test/battle/move_effect/roost.c +++ b/test/battle/move_effect/roost.c @@ -36,8 +36,10 @@ SINGLE_BATTLE_TEST("Roost fails when user is at full HP") TURN { MOVE(player, MOVE_ROOST); } } SCENE { MESSAGE("Wobbuffet's HP is full!"); - NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_ROOST, player); - NOT HP_BAR(player); + NONE_OF { + ANIMATION(ANIM_TYPE_MOVE, MOVE_ROOST, player); + HP_BAR(player); + } } } @@ -52,8 +54,10 @@ SINGLE_BATTLE_TEST("Roost fails if the user is under the effects of Heal Block") ANIMATION(ANIM_TYPE_MOVE, MOVE_HEAL_BLOCK, opponent); MESSAGE("Wobbuffet was prevented from healing!"); // Message when Heal Block is applied MESSAGE("Wobbuffet was prevented from healing!"); // Message when trying to heal under Heal Block - NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_ROOST, player); - NOT HP_BAR(player); + NONE_OF { + ANIMATION(ANIM_TYPE_MOVE, MOVE_ROOST, player); + HP_BAR(player); + } } } @@ -340,8 +344,10 @@ SINGLE_BATTLE_TEST("Roost's suppression prevents Reflect Type from copying any F // Turn 3: EQ has no effect MESSAGE("Swellow used Earthquake!"); MESSAGE("It doesn't affect Foe Wobbuffet…"); - NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_EARTHQUAKE, player); - NOT HP_BAR(opponent); + NONE_OF { + ANIMATION(ANIM_TYPE_MOVE, MOVE_EARTHQUAKE, player); + HP_BAR(opponent); + } } } @@ -357,8 +363,10 @@ SINGLE_BATTLE_TEST("Roost does not suppress the ungrounded effect of Levitate") ANIMATION(ANIM_TYPE_MOVE, MOVE_ROOST, player); MESSAGE("Flygon regained health!"); MESSAGE("Foe Wobbuffet used Earthquake!"); - NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_EARTHQUAKE, opponent); - NOT HP_BAR(player); + NONE_OF { + ANIMATION(ANIM_TYPE_MOVE, MOVE_EARTHQUAKE, opponent); + HP_BAR(player); + } } } @@ -374,8 +382,10 @@ SINGLE_BATTLE_TEST("Roost does not suppress the ungrounded effect of Air Balloon ANIMATION(ANIM_TYPE_MOVE, MOVE_ROOST, player); MESSAGE("Wobbuffet regained health!"); MESSAGE("Foe Wobbuffet used Earthquake!"); - NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_EARTHQUAKE, opponent); - NOT HP_BAR(player); + NONE_OF { + ANIMATION(ANIM_TYPE_MOVE, MOVE_EARTHQUAKE, opponent); + HP_BAR(player); + } } } @@ -397,8 +407,10 @@ SINGLE_BATTLE_TEST("Roost does not suppress the ungrounded effect of Magnet Rise ANIMATION(ANIM_TYPE_MOVE, MOVE_ROOST, player); MESSAGE("Wobbuffet regained health!"); MESSAGE("Foe Wobbuffet used Earthquake!"); - NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_EARTHQUAKE, opponent); - NOT HP_BAR(player); + NONE_OF { + ANIMATION(ANIM_TYPE_MOVE, MOVE_EARTHQUAKE, opponent); + HP_BAR(player); + } } } @@ -421,8 +433,10 @@ SINGLE_BATTLE_TEST("Roost does not suppress the ungrounded effect of Telekinesis ANIMATION(ANIM_TYPE_MOVE, MOVE_ROOST, player); MESSAGE("Wobbuffet regained health!"); MESSAGE("Foe Wobbuffet used Earthquake!"); - NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_EARTHQUAKE, opponent); - NOT HP_BAR(player); + NONE_OF { + ANIMATION(ANIM_TYPE_MOVE, MOVE_EARTHQUAKE, opponent); + HP_BAR(player); + } } } diff --git a/test/battle/move_effect/teatime.c b/test/battle/move_effect/teatime.c index 7995937fa5..c4398f296a 100644 --- a/test/battle/move_effect/teatime.c +++ b/test/battle/move_effect/teatime.c @@ -149,8 +149,10 @@ SINGLE_BATTLE_TEST("Teatime does not affect Pokémon in the semi-invulnerable tu } } SCENE { MESSAGE("Wobbuffet used Teatime!"); - NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_TEATIME, player); - NOT MESSAGE("Using Liechi Berry, the Attack of Foe Wobbuffet rose!"); + NONE_OF { + ANIMATION(ANIM_TYPE_MOVE, MOVE_TEATIME, player); + MESSAGE("Using Liechi Berry, the Attack of Foe Wobbuffet rose!"); + } } } @@ -206,7 +208,7 @@ SINGLE_BATTLE_TEST("Teatime triggers Lightning Rod if it has been affected by El PLAYER(SPECIES_PIKACHU) { Ability(ABILITY_LIGHTNING_ROD); Item(item); } OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_LIECHI_BERRY); } } WHEN { - TURN { + TURN { MOVE(player, move); MOVE(opponent, MOVE_TEATIME); } diff --git a/test/battle/move_effect/toxic.c b/test/battle/move_effect/toxic.c index 78d978b268..4a07994fb8 100644 --- a/test/battle/move_effect/toxic.c +++ b/test/battle/move_effect/toxic.c @@ -40,9 +40,11 @@ SINGLE_BATTLE_TEST("Toxic cannot miss if used by a Poison-type") ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, opponent); STATUS_ICON(opponent, badPoison: TRUE); } else { - NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_TOXIC, player); - NOT ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, opponent); - NOT STATUS_ICON(opponent, badPoison: TRUE); + NONE_OF { + ANIMATION(ANIM_TYPE_MOVE, MOVE_TOXIC, player); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, opponent); + STATUS_ICON(opponent, badPoison: TRUE); + } } } } diff --git a/test/battle/move_effect/tri_attack.c b/test/battle/move_effect/tri_attack.c index aec711aaba..d7d2102271 100644 --- a/test/battle/move_effect/tri_attack.c +++ b/test/battle/move_effect/tri_attack.c @@ -25,11 +25,9 @@ SINGLE_BATTLE_TEST("Tri Attack can inflict paralysis, burn or freeze") ANIMATION(ANIM_TYPE_STATUS, statusAnim, opponent); if (statusAnim == B_ANIM_STATUS_BRN) { STATUS_ICON(opponent, burn: TRUE); - } - else if (statusAnim == B_ANIM_STATUS_FRZ) { + } else if (statusAnim == B_ANIM_STATUS_FRZ) { STATUS_ICON(opponent, freeze: TRUE); - } - else if (statusAnim == B_ANIM_STATUS_PRZ) { + } else if (statusAnim == B_ANIM_STATUS_PRZ) { STATUS_ICON(opponent, paralysis: TRUE); } } @@ -54,15 +52,15 @@ SINGLE_BATTLE_TEST("Tri Attack cannot paralyze/burn/freeze electric/fire/ice typ } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_TRI_ATTACK, player); HP_BAR(opponent); - NOT ANIMATION(ANIM_TYPE_STATUS, statusAnim, opponent); - if (statusAnim == B_ANIM_STATUS_BRN) { - NOT STATUS_ICON(opponent, burn: TRUE); - } - else if (statusAnim == B_ANIM_STATUS_FRZ) { - NOT STATUS_ICON(opponent, freeze: TRUE); - } - else if (statusAnim == B_ANIM_STATUS_PRZ) { - NOT STATUS_ICON(opponent, paralysis: TRUE); + NONE_OF { + ANIMATION(ANIM_TYPE_STATUS, statusAnim, opponent); + if (statusAnim == B_ANIM_STATUS_BRN) { + STATUS_ICON(opponent, burn: TRUE); + } else if (statusAnim == B_ANIM_STATUS_FRZ) { + STATUS_ICON(opponent, freeze: TRUE); + } else if (statusAnim == B_ANIM_STATUS_PRZ) { + STATUS_ICON(opponent, paralysis: TRUE); + } } } } @@ -92,15 +90,15 @@ SINGLE_BATTLE_TEST("Tri Attack cannot paralyze/burn/freeze pokemon with abilitie } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_TRI_ATTACK, player); HP_BAR(opponent); - NOT ANIMATION(ANIM_TYPE_STATUS, statusAnim, opponent); - if (statusAnim == B_ANIM_STATUS_BRN) { - NOT STATUS_ICON(opponent, burn: TRUE); - } - else if (statusAnim == B_ANIM_STATUS_FRZ) { - NOT STATUS_ICON(opponent, freeze: TRUE); - } - else if (statusAnim == B_ANIM_STATUS_PRZ) { - NOT STATUS_ICON(opponent, paralysis: TRUE); + NONE_OF { + ANIMATION(ANIM_TYPE_STATUS, statusAnim, opponent); + if (statusAnim == B_ANIM_STATUS_BRN) { + STATUS_ICON(opponent, burn: TRUE); + } else if (statusAnim == B_ANIM_STATUS_FRZ) { + STATUS_ICON(opponent, freeze: TRUE); + } else if (statusAnim == B_ANIM_STATUS_PRZ) { + STATUS_ICON(opponent, paralysis: TRUE); + } } } } @@ -121,15 +119,15 @@ SINGLE_BATTLE_TEST("Tri Attack cannot paralyze/burn/freeze a mon which is alread } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_TRI_ATTACK, player); HP_BAR(opponent); - NOT ANIMATION(ANIM_TYPE_STATUS, statusAnim, opponent); - if (statusAnim == B_ANIM_STATUS_BRN) { - NOT STATUS_ICON(opponent, burn: TRUE); - } - else if (statusAnim == B_ANIM_STATUS_FRZ) { - NOT STATUS_ICON(opponent, freeze: TRUE); - } - else if (statusAnim == B_ANIM_STATUS_PRZ) { - NOT STATUS_ICON(opponent, paralysis: TRUE); + NONE_OF { + ANIMATION(ANIM_TYPE_STATUS, statusAnim, opponent); + if (statusAnim == B_ANIM_STATUS_BRN) { + STATUS_ICON(opponent, burn: TRUE); + } else if (statusAnim == B_ANIM_STATUS_FRZ) { + STATUS_ICON(opponent, freeze: TRUE); + } else if (statusAnim == B_ANIM_STATUS_PRZ) { + STATUS_ICON(opponent, paralysis: TRUE); + } } } } diff --git a/test/test_runner_battle.c b/test/test_runner_battle.c index 54c8baae24..d784b3314d 100644 --- a/test/test_runner_battle.c +++ b/test/test_runner_battle.c @@ -1657,8 +1657,18 @@ static const char *const sQueueGroupTypeMacros[] = void OpenQueueGroup(u32 sourceLine, enum QueueGroupType type) { INVALID_IF(DATA.queueGroupType, "%s inside %s", sQueueGroupTypeMacros[type], sQueueGroupTypeMacros[DATA.queueGroupType]); - DATA.queueGroupType = type; - DATA.queueGroupStart = DATA.queuedEventsCount; + if (DATA.queuedEventsCount > 0 + && DATA.queuedEvents[DATA.queueGroupStart].groupType == QUEUE_GROUP_NONE_OF + && DATA.queuedEvents[DATA.queueGroupStart].groupSize == DATA.queuedEventsCount - DATA.queueGroupStart + && type == QUEUE_GROUP_NONE_OF) + { + INVALID("'NOT x; NOT y;', did you mean 'NONE_OF { x; y; }'?"); + } + else + { + DATA.queueGroupType = type; + DATA.queueGroupStart = DATA.queuedEventsCount; + } } void CloseQueueGroup(u32 sourceLine) From 81cbbdb185bcc2f73589d72f92a43ce84d3b063b Mon Sep 17 00:00:00 2001 From: Eduardo Quezada D'Ottone Date: Tue, 24 Oct 2023 09:31:03 -0300 Subject: [PATCH 143/162] Setting Modern as default (#3305) --- .github/workflows/build.yml | 6 +++++- Makefile | 12 +++++++----- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b55f8a9ab1..9fd8944d38 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -40,6 +40,9 @@ jobs: working-directory: agbcc - name: Agbcc + env: + MODERN: 0 + COMPARE: 0 run: make -j${nproc} -O all - name: Modern @@ -50,7 +53,8 @@ jobs: - name: Test env: + MODERN: 1 TEST: 1 run: | - make -j${nproc} -O pokeemerald-test.elf + make -j${nproc} -O pokeemerald_modern-test.elf make -j${nproc} check diff --git a/Makefile b/Makefile index abd395c057..4b59c76f66 100644 --- a/Makefile +++ b/Makefile @@ -40,12 +40,12 @@ TITLE := POKEMON EMER GAME_CODE := BPEE MAKER_CODE := 01 REVISION := 0 -MODERN ?= 0 +MODERN ?= 1 TEST ?= 0 ANALYZE ?= 0 -ifeq (modern,$(MAKECMDGOALS)) - MODERN := 1 +ifeq (agbcc,$(MAKECMDGOALS)) + MODERN := 0 endif ifeq (check,$(MAKECMDGOALS)) @@ -182,7 +182,7 @@ MAKEFLAGS += --no-print-directory # Secondary expansion is required for dependency variables in object rules. .SECONDEXPANSION: -.PHONY: all rom clean compare tidy tools check-tools mostlyclean clean-tools clean-check-tools $(TOOLDIRS) $(CHECKTOOLDIRS) libagbsyscall modern tidymodern tidynonmodern check +.PHONY: all rom clean compare tidy tools check-tools mostlyclean clean-tools clean-check-tools $(TOOLDIRS) $(CHECKTOOLDIRS) libagbsyscall agbcc modern tidymodern tidynonmodern check infoshell = $(foreach line, $(shell $1 | sed "s/ /__SPACE__/g"), $(info $(subst __SPACE__, ,$(line)))) @@ -190,7 +190,7 @@ infoshell = $(foreach line, $(shell $1 | sed "s/ /__SPACE__/g"), $(info $(subst # Disable dependency scanning for clean/tidy/tools # Use a separate minimal makefile for speed # Since we don't need to reload most of this makefile -ifeq (,$(filter-out all rom compare modern check libagbsyscall syms $(TESTELF),$(MAKECMDGOALS))) +ifeq (,$(filter-out all rom compare agbcc modern check libagbsyscall syms $(TESTELF),$(MAKECMDGOALS))) $(call infoshell, $(MAKE) -f make_tools.mk) else NODEP ?= 1 @@ -485,6 +485,8 @@ $(ROM): $(ELF) $(OBJCOPY) -O binary $< $@ $(FIX) $@ -p --silent +agbcc: all + modern: all LD_SCRIPT_TEST := ld_script_test.txt From 591ef71e3b8b11f33e2b8aac098367e844884208 Mon Sep 17 00:00:00 2001 From: Alex <93446519+AlexOn1ine@users.noreply.github.com> Date: Wed, 25 Oct 2023 09:33:43 +0200 Subject: [PATCH 144/162] Fixes form change when using switch moves (#3463) * Fixes form change with switch moves --- src/battle_script_commands.c | 1 + test/battle/ability/flower_gift.c | 44 ++++++++++++++++++++++++++++++- test/battle/ability/forecast.c | 42 +++++++++++++++++++++++++++++ 3 files changed, 86 insertions(+), 1 deletion(-) diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index c886178ec0..dcb4620809 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -7045,6 +7045,7 @@ static void Cmd_returntoball(void) u32 battler = GetBattlerForBattleScript(cmd->battler); BtlController_EmitReturnMonToBall(battler, BUFFER_A, TRUE); MarkBattlerForControllerExec(battler); + TryBattleFormChange(battler, FORM_CHANGE_BATTLE_SWITCH); gBattlescriptCurrInstr = cmd->nextInstr; } diff --git a/test/battle/ability/flower_gift.c b/test/battle/ability/flower_gift.c index e02f90dc6c..f8f2a35ccd 100644 --- a/test/battle/ability/flower_gift.c +++ b/test/battle/ability/flower_gift.c @@ -74,7 +74,7 @@ DOUBLE_BATTLE_TEST("Flower Gift increases the attack of Cherrim and its allies b } WHEN { if (sunny) TURN { MOVE(playerLeft, MOVE_SUNNY_DAY); } - TURN { MOVE(playerLeft, MOVE_TACKLE, target: opponentLeft); + TURN { MOVE(playerLeft, MOVE_TACKLE, target: opponentLeft); MOVE(playerRight, MOVE_TACKLE, target: opponentLeft); } } SCENE { // sun activates @@ -126,4 +126,46 @@ DOUBLE_BATTLE_TEST("Flower Gift increases the Sp. Def of Cherrim and its allies } } +SINGLE_BATTLE_TEST("Flower Gift transforms Cherrim back when it switches out") +{ + GIVEN { + ASSUME(B_WEATHER_FORMS >= GEN_5); + PLAYER(SPECIES_CHERRIM) { Ability(ABILITY_FLOWER_GIFT); } + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_SUNNY_DAY); } + TURN { SWITCH(player, 1); } + } SCENE { + // transforms in sun + ABILITY_POPUP(player, ABILITY_FLOWER_GIFT); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player); + MESSAGE("Cherrim transformed!"); + MESSAGE("Cherrim, that's enough! Come back!"); + } THEN { + EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_SPECIES), SPECIES_CHERRIM); + } +} + +SINGLE_BATTLE_TEST("Flower Gift transforms Cherrim back when it uses a move that forces it to switch out") +{ + GIVEN { + ASSUME(B_WEATHER_FORMS >= GEN_5); + PLAYER(SPECIES_CHERRIM) { Ability(ABILITY_FLOWER_GIFT); } + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_SUNNY_DAY); } + TURN { MOVE(player, MOVE_U_TURN); SEND_OUT(player, 1); } + } SCENE { + // transforms in sun + ABILITY_POPUP(player, ABILITY_FLOWER_GIFT); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player); + MESSAGE("Cherrim transformed!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_U_TURN, player); + } THEN { + EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_SPECIES), SPECIES_CHERRIM); + } +} + TO_DO_BATTLE_TEST("Flower Gift does not transform Cherrim back to normal when suppressed if Cherrim is Dynamaxed"); diff --git a/test/battle/ability/forecast.c b/test/battle/ability/forecast.c index 66793ebfb2..949e4b7404 100644 --- a/test/battle/ability/forecast.c +++ b/test/battle/ability/forecast.c @@ -353,3 +353,45 @@ SINGLE_BATTLE_TEST("Forecast transforms Castform back to normal when its ability EXPECT_EQ(player->species, SPECIES_CASTFORM); } } + +SINGLE_BATTLE_TEST("Forecast transforms Castform back when it switches out") +{ + GIVEN { + ASSUME(B_WEATHER_FORMS >= GEN_5); + PLAYER(SPECIES_CASTFORM) { Ability(ABILITY_FORECAST); } + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_SUNNY_DAY); } + TURN { SWITCH(player, 1); } + } SCENE { + // transforms in sun + ABILITY_POPUP(player, ABILITY_FORECAST); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player); + MESSAGE("Castform transformed!"); + MESSAGE("Castform, that's enough! Come back!"); + } THEN { + EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_SPECIES), SPECIES_CASTFORM); + } +} + +SINGLE_BATTLE_TEST("Forecast transforms Castform back when it uses a move that forces it to switch out") +{ + GIVEN { + ASSUME(B_WEATHER_FORMS >= GEN_5); + PLAYER(SPECIES_CASTFORM) { Ability(ABILITY_FORECAST); } + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_SUNNY_DAY); } + TURN { MOVE(player, MOVE_U_TURN); SEND_OUT(player, 1); } + } SCENE { + // transforms in sun + ABILITY_POPUP(player, ABILITY_FORECAST); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player); + MESSAGE("Castform transformed!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_U_TURN, player); + } THEN { + EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_SPECIES), SPECIES_CASTFORM); + } +} From 25a57d48d962b00fde758949a49e2f7f82f1105b Mon Sep 17 00:00:00 2001 From: Alex Date: Wed, 25 Oct 2023 10:18:59 +0200 Subject: [PATCH 145/162] fixes tests --- test/battle/ability/hyper_cutter.c | 6 +++-- test/battle/hold_effect/clear_amulet.c | 6 +++-- test/battle/move_effect/octolock.c | 32 +++++++++++++++++--------- test/battle/move_effect/syrup_bomb.c | 30 ++++++++++++++++-------- 4 files changed, 49 insertions(+), 25 deletions(-) diff --git a/test/battle/ability/hyper_cutter.c b/test/battle/ability/hyper_cutter.c index f040907626..8e5c0a40ba 100644 --- a/test/battle/ability/hyper_cutter.c +++ b/test/battle/ability/hyper_cutter.c @@ -69,8 +69,10 @@ SINGLE_BATTLE_TEST("Hyper Cutter is ignored by Mold Breaker") MESSAGE("Pinsir breaks the mold!"); ANIMATION(ANIM_TYPE_MOVE, MOVE_GROWL, player); MESSAGE("Foe Krabby's Attack fell!"); - NOT ABILITY_POPUP(opponent, ABILITY_HYPER_CUTTER); - NOT MESSAGE("Foe Krabby's Hyper Cutter prevents Attack loss!"); + NONE_OF { + ABILITY_POPUP(opponent, ABILITY_HYPER_CUTTER); + MESSAGE("Foe Krabby's Hyper Cutter prevents Attack loss!"); + } } } diff --git a/test/battle/hold_effect/clear_amulet.c b/test/battle/hold_effect/clear_amulet.c index c924f79912..0073f70609 100644 --- a/test/battle/hold_effect/clear_amulet.c +++ b/test/battle/hold_effect/clear_amulet.c @@ -83,7 +83,9 @@ SINGLE_BATTLE_TEST("Clear Amulet prevents secondary effects that reduce stats") } WHEN { TURN { MOVE(player, move); } } SCENE { - NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); - NOT MESSAGE("Foe Wobbuffet's Clear Amulet prevents its stats from being lowered!"); + NONE_OF { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + MESSAGE("Foe Wobbuffet's Clear Amulet prevents its stats from being lowered!"); + } } } diff --git a/test/battle/move_effect/octolock.c b/test/battle/move_effect/octolock.c index 4b0b1dbf4d..3cdc5f5602 100644 --- a/test/battle/move_effect/octolock.c +++ b/test/battle/move_effect/octolock.c @@ -40,24 +40,30 @@ SINGLE_BATTLE_TEST("Octolock reduction is prevented by Clear Body, White Smoke a MESSAGE("Foe Beldum can no longer escape because of Octolock!"); ABILITY_POPUP(opponent, ABILITY_CLEAR_BODY); MESSAGE("Foe Beldum's Clear Body prevents stat loss!"); - NOT MESSAGE("Foe Beldum's Defense fell!"); - NOT MESSAGE("Foe Beldum's Sp. Def fell!"); + NONE_OF { + MESSAGE("Foe Beldum's Defense fell!"); + MESSAGE("Foe Beldum's Sp. Def fell!"); + } } else if (species == SPECIES_TORKOAL) { MESSAGE("Foe Torkoal can no longer escape because of Octolock!"); ABILITY_POPUP(opponent, ABILITY_WHITE_SMOKE); MESSAGE("Foe Torkoal's White Smoke prevents stat loss!"); - NOT MESSAGE("Foe Torkoal's Defense fell!"); - NOT MESSAGE("Foe Torkoal's Sp. Def fell!"); + NONE_OF { + MESSAGE("Foe Torkoal's Defense fell!"); + MESSAGE("Foe Torkoal's Sp. Def fell!"); + } } else if (species == SPECIES_SOLGALEO) { MESSAGE("Foe Solgaleo can no longer escape because of Octolock!"); ABILITY_POPUP(opponent, ABILITY_FULL_METAL_BODY); MESSAGE("Foe Solgaleo's Full Metal Body prevents stat loss!"); - NOT MESSAGE("Foe Solgaleo's Defense fell!"); - NOT MESSAGE("Foe Solgaleo's Sp. Def fell!"); + NONE_OF { + MESSAGE("Foe Solgaleo's Defense fell!"); + MESSAGE("Foe Solgaleo's Sp. Def fell!"); + } } } } @@ -92,9 +98,11 @@ SINGLE_BATTLE_TEST("Octolock reduction is prevented by Clear Amulet") ANIMATION(ANIM_TYPE_MOVE, MOVE_OCTOLOCK, player); MESSAGE("Foe Wobbuffet can no longer escape because of Octolock!"); MESSAGE("Foe Wobbuffet's Clear Amulet prevents its stats from being lowered!"); - NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); - NOT MESSAGE("Foe Wobbuffet's Defense fell!"); - NOT MESSAGE("Foe Wobbuffet's Sp. Def fell!"); + NONE_OF { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + MESSAGE("Foe Wobbuffet's Defense fell!"); + MESSAGE("Foe Wobbuffet's Sp. Def fell!"); + } } } @@ -117,7 +125,9 @@ SINGLE_BATTLE_TEST("Octolock will not decrease Defense and Sp. Def further then } MESSAGE("Foe Wobbuffet's Defense won't go lower!"); MESSAGE("Foe Wobbuffet's Sp. Def won't go lower!"); - NOT MESSAGE("Foe Wobbuffet's Defense fell!"); - NOT MESSAGE("Foe Wobbuffet's Sp. Def fell!"); + NONE_OF { + MESSAGE("Foe Wobbuffet's Defense fell!"); + MESSAGE("Foe Wobbuffet's Sp. Def fell!"); + } } } diff --git a/test/battle/move_effect/syrup_bomb.c b/test/battle/move_effect/syrup_bomb.c index 232f922f84..10e2c40de1 100644 --- a/test/battle/move_effect/syrup_bomb.c +++ b/test/battle/move_effect/syrup_bomb.c @@ -22,12 +22,14 @@ SINGLE_BATTLE_TEST("Syrup Bomb covers the foe in sticky syrup for 3 turns") MESSAGE("Foe Wobbuffet's Speed fell!"); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); MESSAGE("Foe Wobbuffet's Speed fell!"); - NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); - NOT MESSAGE("Foe Wobbuffet's Speed fell!"); + NONE_OF { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + MESSAGE("Foe Wobbuffet's Speed fell!"); + } } } -SINGLE_BATTLE_TEST("Target will be not covered in sticky syrup again if it is currently covered") +SINGLE_BATTLE_TEST("Sticky Syrup isn't applied again if the target is already covered") { GIVEN { PLAYER(SPECIES_WOBBUFFET); @@ -64,7 +66,7 @@ SINGLE_BATTLE_TEST("Syrup Bomb is prevented by Bulletproof") } } -SINGLE_BATTLE_TEST("Clear Body, White Smoke and Full Metal Body prevent Sticky Syrup speed reduction") +SINGLE_BATTLE_TEST("Sticky Syrup speed reduction is prevented by Clear Body, White Smoke or Full Metal Body") { u32 species; u32 ability; @@ -88,27 +90,35 @@ SINGLE_BATTLE_TEST("Clear Body, White Smoke and Full Metal Body prevent Sticky S MESSAGE("Foe Beldum got covered in sticky syrup!"); ABILITY_POPUP(opponent, ABILITY_CLEAR_BODY); MESSAGE("Foe Beldum's Clear Body prevents stat loss!"); + NONE_OF { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + MESSAGE("Foe Beldum's Speed fell!"); + } } else if (species == SPECIES_TORKOAL) { MESSAGE("Foe Torkoal got covered in sticky syrup!"); ABILITY_POPUP(opponent, ABILITY_WHITE_SMOKE); MESSAGE("Foe Torkoal's White Smoke prevents stat loss!"); + NONE_OF { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + MESSAGE("Foe Torkoal's Speed fell!"); + } } else if (species == SPECIES_SOLGALEO) { MESSAGE("Foe Solgaleo got covered in sticky syrup!"); ABILITY_POPUP(opponent, ABILITY_FULL_METAL_BODY); MESSAGE("Foe Solgaleo's Full Metal Body prevents stat loss!"); - } - NONE_OF { - ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); - MESSAGE("Foe Beldum's Speed fell!"); + NONE_OF { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + MESSAGE("Foe Solgaleo's Speed fell!"); + } } } } -SINGLE_BATTLE_TEST("Clear Amulet prevents Sticky Syrup speed reduction") +SINGLE_BATTLE_TEST("Sticky Syrup speed reduction is prevented by Clear Amulet") { GIVEN { PLAYER(SPECIES_WOBBUFFET); @@ -119,7 +129,7 @@ SINGLE_BATTLE_TEST("Clear Amulet prevents Sticky Syrup speed reduction") ANIMATION(ANIM_TYPE_MOVE, MOVE_SYRUP_BOMB, player); HP_BAR(opponent); MESSAGE("Foe Wobbuffet got covered in sticky syrup!"); - MESSAGE("Foe Wobbuffet's Speed was not lowered!"); + MESSAGE("Foe Wobbuffet's Clear Amulet prevents its stats from being lowered!"); NONE_OF { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); MESSAGE("Foe Wobbuffet's Speed fell!"); From 7a9221e7b990299c95af8089b4a36f209bbc7af5 Mon Sep 17 00:00:00 2001 From: Bassoonian Date: Wed, 25 Oct 2023 12:51:12 +0200 Subject: [PATCH 146/162] Rename output roms (#3462) * Rename output roms * Update build.yml --- .github/workflows/build.yml | 2 +- Makefile | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9fd8944d38..51c0a78e51 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -56,5 +56,5 @@ jobs: MODERN: 1 TEST: 1 run: | - make -j${nproc} -O pokeemerald_modern-test.elf + make -j${nproc} -O pokeemerald-test.elf make -j${nproc} check diff --git a/Makefile b/Makefile index 4b59c76f66..b9a06f55f3 100644 --- a/Makefile +++ b/Makefile @@ -69,12 +69,12 @@ else CPP := $(PREFIX)cpp endif -ROM_NAME := pokeemerald.gba +ROM_NAME := pokeemerald_agbcc.gba ELF_NAME := $(ROM_NAME:.gba=.elf) MAP_NAME := $(ROM_NAME:.gba=.map) OBJ_DIR_NAME := build/emerald -MODERN_ROM_NAME := pokeemerald_modern.gba +MODERN_ROM_NAME := pokeemerald.gba MODERN_ELF_NAME := $(MODERN_ROM_NAME:.gba=.elf) MODERN_MAP_NAME := $(MODERN_ROM_NAME:.gba=.map) MODERN_OBJ_DIR_NAME := build/modern From cb38f3bee6422a814bddea0cdc6d7eca04df4661 Mon Sep 17 00:00:00 2001 From: Alex <93446519+AlexOn1ine@users.noreply.github.com> Date: Wed, 25 Oct 2023 17:06:25 +0200 Subject: [PATCH 147/162] Fixes legendary backgrounds (#3464) * Fixes legendary backgrounds * missed one * forgot break --- data/scripts/debug.inc | 12 ++++++------ src/battle_bg.c | 9 +++++++++ 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/data/scripts/debug.inc b/data/scripts/debug.inc index 7385101c1e..b9028177d9 100644 --- a/data/scripts/debug.inc +++ b/data/scripts/debug.inc @@ -155,28 +155,28 @@ DebugScript_HatchAnEgg_Text_EmptyParty:: DebugScript_HatchAnEgg_Text_NotAnEgg:: .string "That's not a Pokémon Egg.$" - + DebugScript_ZeroDaycareMons:: msgbox DebugText_DaycareNoPokemon, MSGBOX_DEFAULT releaseall end - + DebugScript_OneDaycareMons:: msgbox DebugText_DaycareOnePokemon, MSGBOX_DEFAULT releaseall end - + DebugScript_DaycareMonsNotCompatible:: msgbox DebugText_DaycarePokemonNotCompatible, MSGBOX_DEFAULT releaseall end - + DebugText_DaycareNoPokemon: .string "You have no Pokémon at Daycare.$" - + DebugText_DaycareOnePokemon: .string "You have only one Pokémon at Daycare.$" - + DebugText_DaycarePokemonNotCompatible: .string "Your Pokémon at Daycare can't\nhave babies together!$" diff --git a/src/battle_bg.c b/src/battle_bg.c index 1da5d5c65e..2e92658343 100644 --- a/src/battle_bg.c +++ b/src/battle_bg.c @@ -777,6 +777,11 @@ void DrawMainBattleBackground(void) LZDecompressVram(gBattleTerrainTilemap_Rayquaza, (void*)(BG_SCREEN_ADDR(26))); LoadCompressedPalette(gBattleTerrainPalette_Rayquaza, 0x20, 0x60); break; + default: + LZDecompressVram(sBattleTerrainTable[gBattleTerrain].tileset, (void *)(BG_CHAR_ADDR(2))); + LZDecompressVram(sBattleTerrainTable[gBattleTerrain].tilemap, (void *)(BG_SCREEN_ADDR(26))); + LoadCompressedPalette(sBattleTerrainTable[gBattleTerrain].palette, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); + break; } } else @@ -1174,6 +1179,10 @@ void DrawBattleEntryBackground(void) LZDecompressVram(gBattleTerrainAnimTiles_Rayquaza, (void*)(BG_CHAR_ADDR(1))); LZDecompressVram(gBattleTerrainAnimTilemap_Rayquaza, (void*)(BG_SCREEN_ADDR(28))); break; + default: + LZDecompressVram(sBattleTerrainTable[gBattleTerrain].entryTileset, (void *)(BG_CHAR_ADDR(1))); + LZDecompressVram(sBattleTerrainTable[gBattleTerrain].entryTilemap, (void *)(BG_SCREEN_ADDR(28))); + break; } } else From 25d6f8ba74997a8694a7dbf150a86a402934702d Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Thu, 26 Oct 2023 09:25:50 -0300 Subject: [PATCH 148/162] Fix mini_printf encoded string -Werror=pointer-sign warning --- src/mini_printf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mini_printf.c b/src/mini_printf.c index 69500157c6..65b350e08b 100644 --- a/src/mini_printf.c +++ b/src/mini_printf.c @@ -328,7 +328,7 @@ s32 mini_vpprintf(void* buf, const char *fmt, va_list va) break; case 'S' : // preproc encoded string handler ptr = va_arg(va, char*); - len = StringLength(ptr); + len = StringLength((u8*)ptr); if (pad_to > 0) { len = mini_pad(ptr, len, pad_char, pad_to, bf); From bb9d3208b00632f24ee8dfbc1ea0b0aa1382b92c Mon Sep 17 00:00:00 2001 From: Bassoonian Date: Thu, 26 Oct 2023 15:52:43 +0200 Subject: [PATCH 149/162] Frontier ban refactor (#3465) Co-authored-by: Eduardo Quezada D'Ottone --- src/frontier_util.c | 65 +++++++++++++++++++++++++-------------------- src/party_menu.c | 2 +- 2 files changed, 37 insertions(+), 30 deletions(-) diff --git a/src/frontier_util.c b/src/frontier_util.c index d138daba4c..df3afcd8a2 100644 --- a/src/frontier_util.c +++ b/src/frontier_util.c @@ -624,8 +624,28 @@ static const u8 sFrontierBrainObjEventGfx[NUM_FRONTIER_FACILITIES][2] = const u16 gFrontierBannedSpecies[] = { - SPECIES_MEW, SPECIES_MEWTWO, SPECIES_HO_OH, SPECIES_LUGIA, SPECIES_CELEBI, - SPECIES_KYOGRE, SPECIES_GROUDON, SPECIES_RAYQUAZA, SPECIES_JIRACHI, SPECIES_DEOXYS, 0xFFFF + SPECIES_MEW, SPECIES_MEWTWO, + SPECIES_HO_OH, SPECIES_LUGIA, SPECIES_CELEBI, + SPECIES_KYOGRE, SPECIES_GROUDON, SPECIES_RAYQUAZA, SPECIES_JIRACHI, SPECIES_DEOXYS, +#if P_GEN_4_POKEMON == TRUE + SPECIES_DIALGA, SPECIES_PALKIA, SPECIES_GIRATINA, SPECIES_MANAPHY, SPECIES_PHIONE, SPECIES_DARKRAI, SPECIES_SHAYMIN, SPECIES_ARCEUS, +#endif +#if P_GEN_5_POKEMON == TRUE + SPECIES_VICTINI, SPECIES_RESHIRAM, SPECIES_ZEKROM, SPECIES_KYUREM, SPECIES_KELDEO, SPECIES_MELOETTA, SPECIES_GENESECT, +#endif +#if P_GEN_6_POKEMON == TRUE + SPECIES_XERNEAS, SPECIES_YVELTAL, SPECIES_ZYGARDE, SPECIES_DIANCIE, SPECIES_HOOPA, SPECIES_VOLCANION, +#endif +#if P_GEN_7_POKEMON == TRUE + SPECIES_COSMOG, SPECIES_COSMOEM, SPECIES_SOLGALEO, SPECIES_LUNALA, SPECIES_NECROZMA, SPECIES_MAGEARNA, SPECIES_MARSHADOW, SPECIES_ZERAORA, SPECIES_MELTAN, SPECIES_MELMETAL, +#endif +#if P_GEN_8_POKEMON == TRUE + SPECIES_ZACIAN, SPECIES_ZAMAZENTA, SPECIES_ETERNATUS, SPECIES_CALYREX, SPECIES_ZARUDE, +#endif +#if P_GEN_9_POKEMON == TRUE + SPECIES_KORAIDON, SPECIES_MIRAIDON, +#endif + 0xFFFF }; static const u8 *const sRecordsWindowChallengeTexts[][2] = @@ -1878,38 +1898,23 @@ static void CheckBattleTypeFlag(void) gSpecialVar_Result = FALSE; } +#define SPECIES_PER_LINE 3 + static u8 AppendCaughtBannedMonSpeciesName(u16 species, u8 count, s32 numBannedMonsCaught) { if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(species), FLAG_GET_CAUGHT)) { count++; - switch (count) + if (numBannedMonsCaught == count) + StringAppend(gStringVar1, gText_SpaceAndSpace); + else if (numBannedMonsCaught > count) + StringAppend(gStringVar1, gText_CommaSpace); + if ((count % SPECIES_PER_LINE) == 0) { - case 1: - case 3: - case 5: - case 7: - case 9: - case 11: - if (numBannedMonsCaught == count) - StringAppend(gStringVar1, gText_SpaceAndSpace); - else if (numBannedMonsCaught > count) - StringAppend(gStringVar1, gText_CommaSpace); - break; - case 2: - if (count == numBannedMonsCaught) - StringAppend(gStringVar1, gText_SpaceAndSpace); + if (count == SPECIES_PER_LINE) + StringAppend(gStringVar1, gText_NewLine); else - StringAppend(gStringVar1, gText_CommaSpace); - StringAppend(gStringVar1, gText_NewLine); - break; - default: - if (count == numBannedMonsCaught) - StringAppend(gStringVar1, gText_SpaceAndSpace); - else - StringAppend(gStringVar1, gText_CommaSpace); - StringAppend(gStringVar1, gText_LineBreak); - break; + StringAppend(gStringVar1, gText_LineBreak); } StringAppend(gStringVar1, GetSpeciesName(species)); } @@ -1924,7 +1929,7 @@ static void AppendIfValid(u16 species, u16 heldItem, u16 hp, u8 lvlMode, u8 monL if (species == SPECIES_EGG || species == SPECIES_NONE) return; - for (i = 0; gFrontierBannedSpecies[i] != 0xFFFF && gFrontierBannedSpecies[i] != species; i++) + for (i = 0; gFrontierBannedSpecies[i] != 0xFFFF && gFrontierBannedSpecies[i] != GET_BASE_SPECIES_ID(species); i++) ; if (gFrontierBannedSpecies[i] != 0xFFFF) @@ -2034,7 +2039,7 @@ static void CheckPartyIneligibility(void) } else { - if (count & 1) + if (count % SPECIES_PER_LINE == SPECIES_PER_LINE - 1) StringAppend(gStringVar1, gText_LineBreak); else StringAppend(gStringVar1, gText_Space2); @@ -2049,6 +2054,8 @@ static void CheckPartyIneligibility(void) #undef numEligibleMons } +#undef SPECIES_PER_LINE + static void ValidateVisitingTrainer(void) { ValidateEReaderTrainer(); diff --git a/src/party_menu.c b/src/party_menu.c index 8170ec7d25..e1dad9ef9b 100644 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -6195,7 +6195,7 @@ static bool8 GetBattleEntryEligibility(struct Pokemon *mon) species = GetMonData(mon, MON_DATA_SPECIES); for (; gFrontierBannedSpecies[i] != 0xFFFF; i++) { - if (gFrontierBannedSpecies[i] == species) + if (gFrontierBannedSpecies[i] == GET_BASE_SPECIES_ID(species)) return FALSE; } return TRUE; From a8632f0fc52d2630e9973541718748a4e998aaab Mon Sep 17 00:00:00 2001 From: kittenchilly Date: Thu, 26 Oct 2023 15:45:33 -0500 Subject: [PATCH 150/162] Update PLA Pokemon data to correct values (#3458) * Fix PLA Pokemon data to use correct values * oops, cant forget basculin white stripe * Update level_up_learnsets.h * Update species_info.h --- src/data/pokemon/level_up_learnsets.h | 580 +++++++++++++++++--------- src/data/pokemon/species_info.h | 79 ++-- 2 files changed, 418 insertions(+), 241 deletions(-) diff --git a/src/data/pokemon/level_up_learnsets.h b/src/data/pokemon/level_up_learnsets.h index 092a711918..7ae4e87471 100644 --- a/src/data/pokemon/level_up_learnsets.h +++ b/src/data/pokemon/level_up_learnsets.h @@ -18099,92 +18099,144 @@ static const struct LevelUpMove sCalyrexLevelUpLearnset[] = { }; static const struct LevelUpMove sWyrdeerLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_PSYSHIELD_BASH), LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 5, MOVE_CONFUSION), - LEVEL_UP_MOVE( 9, MOVE_HYPNOSIS), - LEVEL_UP_MOVE(15, MOVE_CALM_MIND), - LEVEL_UP_MOVE(21, MOVE_PSYSHIELD_BASH), - LEVEL_UP_MOVE(29, MOVE_EXTRASENSORY), + LEVEL_UP_MOVE( 3, MOVE_LEER), + LEVEL_UP_MOVE( 7, MOVE_ASTONISH), + LEVEL_UP_MOVE(10, MOVE_HYPNOSIS), + LEVEL_UP_MOVE(13, MOVE_STOMP), + LEVEL_UP_MOVE(16, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(21, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(23, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(27, MOVE_CALM_MIND), + LEVEL_UP_MOVE(32, MOVE_ROLE_PLAY), LEVEL_UP_MOVE(37, MOVE_ZEN_HEADBUTT), - LEVEL_UP_MOVE(47, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(49, MOVE_IMPRISON), + LEVEL_UP_MOVE(55, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(62, MOVE_MEGAHORN), LEVEL_UP_END }; static const struct LevelUpMove sKleavorLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_STONE_AXE), + LEVEL_UP_MOVE( 1, MOVE_LEER), LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE( 6, MOVE_SILVER_WIND), - LEVEL_UP_MOVE(11, MOVE_AERIAL_ACE), - LEVEL_UP_MOVE(14, MOVE_DOUBLE_HIT), - LEVEL_UP_MOVE(14, MOVE_STEALTH_ROCK), - LEVEL_UP_MOVE(18, MOVE_AIR_SLASH), - LEVEL_UP_MOVE(25, MOVE_SWORDS_DANCE), - LEVEL_UP_MOVE(29, MOVE_STONE_AXE), - LEVEL_UP_MOVE(34, MOVE_X_SCISSOR), - LEVEL_UP_MOVE(43, MOVE_CLOSE_COMBAT), + LEVEL_UP_MOVE( 4, MOVE_FURY_CUTTER), + LEVEL_UP_MOVE( 8, MOVE_FALSE_SWIPE), + LEVEL_UP_MOVE(12, MOVE_SMACK_DOWN), + LEVEL_UP_MOVE(16, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE(20, MOVE_DOUBLE_HIT), + LEVEL_UP_MOVE(24, MOVE_SLASH), + LEVEL_UP_MOVE(28, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(32, MOVE_AGILITY), + LEVEL_UP_MOVE(36, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE(40, MOVE_X_SCISSOR), + LEVEL_UP_MOVE(44, MOVE_SWORDS_DANCE), LEVEL_UP_END }; static const struct LevelUpMove sUrsalunaLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 6, MOVE_BABY_DOLL_EYES), - LEVEL_UP_MOVE(11, MOVE_BULLDOZE), - LEVEL_UP_MOVE(18, MOVE_SLASH), - LEVEL_UP_MOVE(25, MOVE_PLAY_ROUGH), - LEVEL_UP_MOVE(34, MOVE_HIGH_HORSEPOWER), - LEVEL_UP_MOVE(43, MOVE_DOUBLE_EDGE), - LEVEL_UP_MOVE(47, MOVE_HEADLONG_RUSH), + LEVEL_UP_MOVE( 0, MOVE_HEADLONG_RUSH), + LEVEL_UP_MOVE( 1, MOVE_FAKE_TEARS), + LEVEL_UP_MOVE( 1, MOVE_COVET), + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_LICK), + LEVEL_UP_MOVE( 8, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(13, MOVE_PAYBACK), + LEVEL_UP_MOVE(17, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE(22, MOVE_SLASH), + LEVEL_UP_MOVE(25, MOVE_PLAY_NICE), + LEVEL_UP_MOVE(29, MOVE_PLAY_ROUGH), + LEVEL_UP_MOVE(35, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(41, MOVE_REST), + LEVEL_UP_MOVE(41, MOVE_SNORE), + LEVEL_UP_MOVE(48, MOVE_HIGH_HORSEPOWER), + LEVEL_UP_MOVE(56, MOVE_THRASH), + LEVEL_UP_MOVE(64, MOVE_HAMMER_ARM), LEVEL_UP_END }; static const struct LevelUpMove sBasculegionLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 6, MOVE_AQUA_JET), - LEVEL_UP_MOVE(11, MOVE_BITE), - LEVEL_UP_MOVE(11, MOVE_HEX), - LEVEL_UP_MOVE(18, MOVE_ZEN_HEADBUTT), - LEVEL_UP_MOVE(25, MOVE_CRUNCH), - LEVEL_UP_MOVE(25, MOVE_SHADOW_BALL), - LEVEL_UP_MOVE(34, MOVE_WAVE_CRASH), - LEVEL_UP_MOVE(43, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE( 1, MOVE_SHADOW_BALL), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 1, MOVE_PHANTOM_FORCE), + LEVEL_UP_MOVE( 4, MOVE_TACKLE), + LEVEL_UP_MOVE( 8, MOVE_FLAIL), + LEVEL_UP_MOVE(12, MOVE_AQUA_JET), + LEVEL_UP_MOVE(16, MOVE_BITE), + LEVEL_UP_MOVE(20, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(24, MOVE_HEADBUTT), + LEVEL_UP_MOVE(28, MOVE_SOAK), + LEVEL_UP_MOVE(32, MOVE_CRUNCH), + LEVEL_UP_MOVE(36, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(40, MOVE_UPROAR), + LEVEL_UP_MOVE(44, MOVE_WAVE_CRASH), + LEVEL_UP_MOVE(48, MOVE_THRASH), + LEVEL_UP_MOVE(52, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(56, MOVE_HEAD_SMASH), LEVEL_UP_END }; static const struct LevelUpMove sSneaslerLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE( 6, MOVE_ROCK_SMASH), - LEVEL_UP_MOVE(11, MOVE_DIRE_CLAW), - LEVEL_UP_MOVE(11, MOVE_SWIFT), - LEVEL_UP_MOVE(18, MOVE_SLASH), - LEVEL_UP_MOVE(25, MOVE_POISON_JAB), - LEVEL_UP_MOVE(34, MOVE_SWORDS_DANCE), - LEVEL_UP_MOVE(43, MOVE_CLOSE_COMBAT), + LEVEL_UP_MOVE( 0, MOVE_DIRE_CLAW), + LEVEL_UP_MOVE( 1, MOVE_FLING), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_ROCK_SMASH), + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 6, MOVE_TAUNT), + LEVEL_UP_MOVE(12, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(18, MOVE_METAL_CLAW), + LEVEL_UP_MOVE(24, MOVE_POISON_JAB), + LEVEL_UP_MOVE(30, MOVE_BRICK_BREAK), + LEVEL_UP_MOVE(36, MOVE_HONE_CLAWS), + LEVEL_UP_MOVE(42, MOVE_SLASH), + LEVEL_UP_MOVE(48, MOVE_AGILITY), + LEVEL_UP_MOVE(54, MOVE_SCREECH), + LEVEL_UP_MOVE(60, MOVE_CLOSE_COMBAT), LEVEL_UP_END }; static const struct LevelUpMove sOverqwilLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 1, MOVE_POISON_STING), - LEVEL_UP_MOVE( 5, MOVE_SPIKES), - LEVEL_UP_MOVE( 9, MOVE_PIN_MISSILE), - LEVEL_UP_MOVE(15, MOVE_BARB_BARRAGE), - LEVEL_UP_MOVE(21, MOVE_WATER_PULSE), - LEVEL_UP_MOVE(26, MOVE_DARK_PULSE), - LEVEL_UP_MOVE(29, MOVE_POISON_JAB), - LEVEL_UP_MOVE(37, MOVE_AQUA_TAIL), - LEVEL_UP_MOVE(47, MOVE_DOUBLE_EDGE), - LEVEL_UP_MOVE(57, MOVE_SELF_DESTRUCT), + LEVEL_UP_MOVE( 4, MOVE_HARDEN), + LEVEL_UP_MOVE( 8, MOVE_BITE), + LEVEL_UP_MOVE(12, MOVE_FELL_STINGER), + LEVEL_UP_MOVE(16, MOVE_MINIMIZE), + LEVEL_UP_MOVE(20, MOVE_SPIKES), + LEVEL_UP_MOVE(24, MOVE_BRINE), + LEVEL_UP_MOVE(28, MOVE_BARB_BARRAGE), + LEVEL_UP_MOVE(32, MOVE_PIN_MISSILE), + LEVEL_UP_MOVE(36, MOVE_TOXIC_SPIKES), + LEVEL_UP_MOVE(40, MOVE_STOCKPILE), + LEVEL_UP_MOVE(40, MOVE_SPIT_UP), + LEVEL_UP_MOVE(44, MOVE_TOXIC), + LEVEL_UP_MOVE(48, MOVE_CRUNCH), + LEVEL_UP_MOVE(52, MOVE_ACUPRESSURE), + LEVEL_UP_MOVE(56, MOVE_DESTINY_BOND), LEVEL_UP_END }; static const struct LevelUpMove sEnamorusLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 7, MOVE_BITE), - LEVEL_UP_MOVE(11, MOVE_TWISTER), - LEVEL_UP_MOVE(14, MOVE_DRAINING_KISS), - LEVEL_UP_MOVE(22, MOVE_IRON_DEFENSE), - LEVEL_UP_MOVE(31, MOVE_EXTRASENSORY), - LEVEL_UP_MOVE(41, MOVE_CRUNCH), - LEVEL_UP_MOVE(47, MOVE_MOONBLAST), - LEVEL_UP_MOVE( 1, MOVE_SPRINGTIDE_STORM), + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 1, MOVE_FAIRY_WIND), + LEVEL_UP_MOVE( 5, MOVE_TORMENT), + LEVEL_UP_MOVE(10, MOVE_FLATTER), + LEVEL_UP_MOVE(15, MOVE_TWISTER), + LEVEL_UP_MOVE(20, MOVE_DRAINING_KISS), + LEVEL_UP_MOVE(25, MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE(30, MOVE_IMPRISON), + LEVEL_UP_MOVE(35, MOVE_MYSTICAL_FIRE), + LEVEL_UP_MOVE(40, MOVE_DAZZLING_GLEAM), + LEVEL_UP_MOVE(45, MOVE_EXTRASENSORY), + LEVEL_UP_MOVE(50, MOVE_UPROAR), + LEVEL_UP_MOVE(55, MOVE_SUPERPOWER), + LEVEL_UP_MOVE(60, MOVE_HEALING_WISH), + LEVEL_UP_MOVE(65, MOVE_MOONBLAST), + LEVEL_UP_MOVE(70, MOVE_OUTRAGE), + LEVEL_UP_MOVE(75, MOVE_SPRINGTIDE_STORM), LEVEL_UP_END }; #endif @@ -18946,221 +18998,345 @@ static const struct LevelUpMove sStunfiskGalarianLevelUpLearnset[] = { #endif static const struct LevelUpMove sGrowlitheHisuianLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 5, MOVE_EMBER), - LEVEL_UP_MOVE( 9, MOVE_BITE), - LEVEL_UP_MOVE(15, MOVE_FIRE_FANG), - LEVEL_UP_MOVE(21, MOVE_ROCK_SLIDE), - LEVEL_UP_MOVE(29, MOVE_CRUNCH), - LEVEL_UP_MOVE(37, MOVE_DOUBLE_EDGE), - LEVEL_UP_MOVE(47, MOVE_FLARE_BLITZ), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 4, MOVE_HOWL), + LEVEL_UP_MOVE( 8, MOVE_BITE), + LEVEL_UP_MOVE(12, MOVE_FLAME_WHEEL), + LEVEL_UP_MOVE(16, MOVE_HELPING_HAND), + LEVEL_UP_MOVE(24, MOVE_FIRE_FANG), + LEVEL_UP_MOVE(28, MOVE_RETALIATE), + LEVEL_UP_MOVE(32, MOVE_CRUNCH), + LEVEL_UP_MOVE(36, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(40, MOVE_FLAMETHROWER), + LEVEL_UP_MOVE(44, MOVE_ROAR), + LEVEL_UP_MOVE(48, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE(52, MOVE_REVERSAL), + LEVEL_UP_MOVE(56, MOVE_FLARE_BLITZ), LEVEL_UP_END }; static const struct LevelUpMove sArcanineHisuianLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 5, MOVE_EMBER), - LEVEL_UP_MOVE( 9, MOVE_BITE), - LEVEL_UP_MOVE(15, MOVE_FIRE_FANG), - LEVEL_UP_MOVE(21, MOVE_ROCK_SLIDE), - LEVEL_UP_MOVE(29, MOVE_CRUNCH), - LEVEL_UP_MOVE(29, MOVE_RAGING_FURY), - LEVEL_UP_MOVE(37, MOVE_DOUBLE_EDGE), - LEVEL_UP_MOVE(47, MOVE_FLARE_BLITZ), + LEVEL_UP_MOVE( 0, MOVE_EXTREME_SPEED), + LEVEL_UP_MOVE( 1, MOVE_FLAME_WHEEL), + LEVEL_UP_MOVE( 1, MOVE_FIRE_FANG), + LEVEL_UP_MOVE( 1, MOVE_FLARE_BLITZ), + LEVEL_UP_MOVE( 1, MOVE_HOWL), + LEVEL_UP_MOVE( 1, MOVE_HELPING_HAND), + LEVEL_UP_MOVE( 1, MOVE_CRUNCH), + LEVEL_UP_MOVE( 1, MOVE_REVERSAL), + LEVEL_UP_MOVE( 1, MOVE_RETALIATE), + LEVEL_UP_MOVE( 1, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE( 1, MOVE_AGILITY), + LEVEL_UP_MOVE( 1, MOVE_ROCK_THROW), + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 1, MOVE_ROAR), + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE( 5, MOVE_FLAMETHROWER), + LEVEL_UP_MOVE(64, MOVE_RAGING_FURY), LEVEL_UP_END }; static const struct LevelUpMove sVoltorbHisuianLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_THUNDER_SHOCK), - LEVEL_UP_MOVE( 5, MOVE_TACKLE), - LEVEL_UP_MOVE( 9, MOVE_THUNDER_WAVE), - LEVEL_UP_MOVE(15, MOVE_SPARK), - LEVEL_UP_MOVE(21, MOVE_ENERGY_BALL), - LEVEL_UP_MOVE(29, MOVE_THUNDERBOLT), - LEVEL_UP_MOVE(37, MOVE_THUNDER), - LEVEL_UP_MOVE(47, MOVE_SELF_DESTRUCT), + LEVEL_UP_MOVE( 1, MOVE_CHARGE), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 4, MOVE_THUNDER_SHOCK), + LEVEL_UP_MOVE( 6, MOVE_STUN_SPORE), + LEVEL_UP_MOVE( 9, MOVE_BULLET_SEED), + LEVEL_UP_MOVE(11, MOVE_ROLLOUT), + LEVEL_UP_MOVE(13, MOVE_SCREECH), + LEVEL_UP_MOVE(16, MOVE_CHARGE_BEAM), + LEVEL_UP_MOVE(20, MOVE_SWIFT), + LEVEL_UP_MOVE(22, MOVE_ELECTRO_BALL), + LEVEL_UP_MOVE(26, MOVE_SELF_DESTRUCT), + LEVEL_UP_MOVE(29, MOVE_ENERGY_BALL), + LEVEL_UP_MOVE(34, MOVE_SEED_BOMB), + LEVEL_UP_MOVE(34, MOVE_DISCHARGE), + LEVEL_UP_MOVE(41, MOVE_EXPLOSION), + LEVEL_UP_MOVE(46, MOVE_GYRO_BALL), + LEVEL_UP_MOVE(50, MOVE_GRASSY_TERRAIN), LEVEL_UP_END }; static const struct LevelUpMove sElectrodeHisuianLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_THUNDER_SHOCK), - LEVEL_UP_MOVE( 5, MOVE_TACKLE), - LEVEL_UP_MOVE( 9, MOVE_THUNDER_WAVE), - LEVEL_UP_MOVE(15, MOVE_SPARK), - LEVEL_UP_MOVE(21, MOVE_ENERGY_BALL), - LEVEL_UP_MOVE(29, MOVE_THUNDERBOLT), - LEVEL_UP_MOVE(37, MOVE_THUNDER), - LEVEL_UP_MOVE(47, MOVE_CHLOROBLAST), - LEVEL_UP_MOVE(47, MOVE_SELF_DESTRUCT), + LEVEL_UP_MOVE( 0, MOVE_CHLOROBLAST), + LEVEL_UP_MOVE( 1, MOVE_CHARGE), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 4, MOVE_THUNDER_SHOCK), + LEVEL_UP_MOVE( 6, MOVE_STUN_SPORE), + LEVEL_UP_MOVE( 9, MOVE_BULLET_SEED), + LEVEL_UP_MOVE(11, MOVE_ROLLOUT), + LEVEL_UP_MOVE(13, MOVE_SCREECH), + LEVEL_UP_MOVE(16, MOVE_CHARGE_BEAM), + LEVEL_UP_MOVE(20, MOVE_SWIFT), + LEVEL_UP_MOVE(22, MOVE_ELECTRO_BALL), + LEVEL_UP_MOVE(26, MOVE_SELF_DESTRUCT), + LEVEL_UP_MOVE(29, MOVE_ENERGY_BALL), + LEVEL_UP_MOVE(34, MOVE_SEED_BOMB), + LEVEL_UP_MOVE(34, MOVE_DISCHARGE), + LEVEL_UP_MOVE(41, MOVE_EXPLOSION), + LEVEL_UP_MOVE(46, MOVE_GYRO_BALL), + LEVEL_UP_MOVE(50, MOVE_GRASSY_TERRAIN), LEVEL_UP_END }; static const struct LevelUpMove sTyphlosionHisuianLevelUpLearnset[] = { - LEVEL_UP_MOVE( 0, MOVE_HEX), - LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE( 6, MOVE_EMBER), - LEVEL_UP_MOVE(11, MOVE_ROLLOUT), - LEVEL_UP_MOVE(18, MOVE_FLAME_WHEEL), - LEVEL_UP_MOVE(25, MOVE_SWIFT), - LEVEL_UP_MOVE(34, MOVE_FLAMETHROWER), - LEVEL_UP_MOVE(40, MOVE_INFERNAL_PARADE), - LEVEL_UP_MOVE(43, MOVE_OVERHEAT), - LEVEL_UP_MOVE(43, MOVE_SHADOW_BALL), + LEVEL_UP_MOVE( 0, MOVE_INFERNAL_PARADE), + LEVEL_UP_MOVE( 1, MOVE_GYRO_BALL), + LEVEL_UP_MOVE( 1, MOVE_ERUPTION), + LEVEL_UP_MOVE( 1, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(13, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(20, MOVE_FLAME_WHEEL), + LEVEL_UP_MOVE(24, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE(31, MOVE_SWIFT), + LEVEL_UP_MOVE(35, MOVE_FLAME_CHARGE), + LEVEL_UP_MOVE(43, MOVE_LAVA_PLUME), + LEVEL_UP_MOVE(48, MOVE_FLAMETHROWER), + LEVEL_UP_MOVE(56, MOVE_INFERNO), + LEVEL_UP_MOVE(61, MOVE_ROLLOUT), + LEVEL_UP_MOVE(74, MOVE_OVERHEAT), LEVEL_UP_END }; static const struct LevelUpMove sQwilfishHisuianLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 1, MOVE_POISON_STING), - LEVEL_UP_MOVE( 5, MOVE_SPIKES), - LEVEL_UP_MOVE( 9, MOVE_PIN_MISSILE), - LEVEL_UP_MOVE(15, MOVE_BARB_BARRAGE), - LEVEL_UP_MOVE(21, MOVE_WATER_PULSE), - LEVEL_UP_MOVE(26, MOVE_DARK_PULSE), - LEVEL_UP_MOVE(29, MOVE_POISON_JAB), - LEVEL_UP_MOVE(37, MOVE_AQUA_TAIL), - LEVEL_UP_MOVE(47, MOVE_DOUBLE_EDGE), - LEVEL_UP_MOVE(57, MOVE_SELF_DESTRUCT), + LEVEL_UP_MOVE( 4, MOVE_HARDEN), + LEVEL_UP_MOVE( 8, MOVE_BITE), + LEVEL_UP_MOVE(12, MOVE_FELL_STINGER), + LEVEL_UP_MOVE(16, MOVE_MINIMIZE), + LEVEL_UP_MOVE(20, MOVE_SPIKES), + LEVEL_UP_MOVE(24, MOVE_BRINE), + LEVEL_UP_MOVE(28, MOVE_BARB_BARRAGE), + LEVEL_UP_MOVE(32, MOVE_PIN_MISSILE), + LEVEL_UP_MOVE(36, MOVE_TOXIC_SPIKES), + LEVEL_UP_MOVE(40, MOVE_STOCKPILE), + LEVEL_UP_MOVE(40, MOVE_SPIT_UP), + LEVEL_UP_MOVE(44, MOVE_TOXIC), + LEVEL_UP_MOVE(48, MOVE_CRUNCH), + LEVEL_UP_MOVE(52, MOVE_ACUPRESSURE), + LEVEL_UP_MOVE(56, MOVE_DESTINY_BOND), LEVEL_UP_END }; static const struct LevelUpMove sSneaselHisuianLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE( 6, MOVE_ROCK_SMASH), - LEVEL_UP_MOVE(11, MOVE_SWIFT), - LEVEL_UP_MOVE(18, MOVE_SLASH), - LEVEL_UP_MOVE(25, MOVE_POISON_JAB), - LEVEL_UP_MOVE(34, MOVE_SWORDS_DANCE), - LEVEL_UP_MOVE(43, MOVE_CLOSE_COMBAT), + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_ROCK_SMASH), + LEVEL_UP_MOVE( 6, MOVE_TAUNT), + LEVEL_UP_MOVE(12, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(18, MOVE_METAL_CLAW), + LEVEL_UP_MOVE(24, MOVE_POISON_JAB), + LEVEL_UP_MOVE(30, MOVE_BRICK_BREAK), + LEVEL_UP_MOVE(36, MOVE_HONE_CLAWS), + LEVEL_UP_MOVE(42, MOVE_SLASH), + LEVEL_UP_MOVE(48, MOVE_AGILITY), + LEVEL_UP_MOVE(54, MOVE_SCREECH), + LEVEL_UP_MOVE(60, MOVE_CLOSE_COMBAT), LEVEL_UP_END }; #if P_GEN_5_POKEMON == TRUE static const struct LevelUpMove sSamurottHisuianLevelUpLearnset[] = { - LEVEL_UP_MOVE( 0, MOVE_NIGHT_SLASH), + LEVEL_UP_MOVE( 0, MOVE_CEASELESS_EDGE), + LEVEL_UP_MOVE( 1, MOVE_SLASH), + LEVEL_UP_MOVE( 1, MOVE_SUCKER_PUNCH), + LEVEL_UP_MOVE( 1, MOVE_MEGAHORN), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 6, MOVE_AQUA_JET), - LEVEL_UP_MOVE(11, MOVE_SWORDS_DANCE), - LEVEL_UP_MOVE(18, MOVE_WATER_PULSE), - LEVEL_UP_MOVE(21, MOVE_CEASELESS_EDGE), - LEVEL_UP_MOVE(25, MOVE_SLASH), - LEVEL_UP_MOVE(34, MOVE_AQUA_TAIL), - LEVEL_UP_MOVE(40, MOVE_DARK_PULSE), - LEVEL_UP_MOVE(43, MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE(13, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(18, MOVE_RAZOR_SHELL), + LEVEL_UP_MOVE(21, MOVE_FURY_CUTTER), + LEVEL_UP_MOVE(25, MOVE_WATER_PULSE), + LEVEL_UP_MOVE(29, MOVE_AERIAL_ACE), + LEVEL_UP_MOVE(34, MOVE_AQUA_JET), + LEVEL_UP_MOVE(39, MOVE_ENCORE), + LEVEL_UP_MOVE(46, MOVE_AQUA_TAIL), + LEVEL_UP_MOVE(51, MOVE_RETALIATE), + LEVEL_UP_MOVE(58, MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE(63, MOVE_HYDRO_PUMP), LEVEL_UP_END }; static const struct LevelUpMove sLilligantHisuianLevelUpLearnset[] = { - LEVEL_UP_MOVE( 0, MOVE_ROCK_SMASH), + LEVEL_UP_MOVE( 0, MOVE_VICTORY_DANCE), + LEVEL_UP_MOVE( 1, MOVE_TEETER_DANCE), + LEVEL_UP_MOVE( 1, MOVE_SOLAR_BLADE), + LEVEL_UP_MOVE( 1, MOVE_PETAL_BLIZZARD), + LEVEL_UP_MOVE( 1, MOVE_AFTER_YOU), + LEVEL_UP_MOVE( 1, MOVE_ENTRAINMENT), + LEVEL_UP_MOVE( 1, MOVE_LEAF_STORM), + LEVEL_UP_MOVE( 1, MOVE_DEFOG), + LEVEL_UP_MOVE( 1, MOVE_ENERGY_BALL), + LEVEL_UP_MOVE( 1, MOVE_LEAF_BLADE), + LEVEL_UP_MOVE( 1, MOVE_MAGICAL_LEAF), + LEVEL_UP_MOVE( 1, MOVE_MEGA_KICK), + LEVEL_UP_MOVE( 1, MOVE_SUNNY_DAY), + LEVEL_UP_MOVE( 1, MOVE_SYNTHESIS), + LEVEL_UP_MOVE( 1, MOVE_GIGA_DRAIN), + LEVEL_UP_MOVE( 1, MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE( 1, MOVE_STUN_SPORE), + LEVEL_UP_MOVE( 1, MOVE_GROWTH), + LEVEL_UP_MOVE( 1, MOVE_LEECH_SEED), + LEVEL_UP_MOVE( 1, MOVE_MEGA_DRAIN), LEVEL_UP_MOVE( 1, MOVE_ABSORB), - LEVEL_UP_MOVE( 5, MOVE_LEAFAGE), - LEVEL_UP_MOVE( 9, MOVE_STUN_SPORE), - LEVEL_UP_MOVE(15, MOVE_POISON_POWDER), - LEVEL_UP_MOVE(21, MOVE_ENERGY_BALL), - LEVEL_UP_MOVE(29, MOVE_SLEEP_POWDER), - LEVEL_UP_MOVE(34, MOVE_DRAIN_PUNCH), - LEVEL_UP_MOVE(37, MOVE_LEAF_BLADE), - LEVEL_UP_MOVE(37, MOVE_RECOVER), - LEVEL_UP_MOVE(42, MOVE_VICTORY_DANCE), - LEVEL_UP_MOVE(47, MOVE_LEAF_STORM), - LEVEL_UP_MOVE(53, MOVE_PETAL_DANCE), - LEVEL_UP_MOVE(57, MOVE_CLOSE_COMBAT), + LEVEL_UP_MOVE( 1, MOVE_HELPING_HAND), + LEVEL_UP_MOVE( 5, MOVE_AXE_KICK), LEVEL_UP_END }; static const struct LevelUpMove sZoruaHisuianLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_SHADOW_SNEAK), - LEVEL_UP_MOVE( 6, MOVE_SNARL), - LEVEL_UP_MOVE(11, MOVE_SWIFT), - LEVEL_UP_MOVE(18, MOVE_BITTER_MALICE), - LEVEL_UP_MOVE(25, MOVE_SLASH), - LEVEL_UP_MOVE(34, MOVE_SHADOW_CLAW), - LEVEL_UP_MOVE(43, MOVE_NASTY_PLOT), + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 4, MOVE_TORMENT), + LEVEL_UP_MOVE( 8, MOVE_HONE_CLAWS), + LEVEL_UP_MOVE(12, MOVE_SHADOW_SNEAK), + LEVEL_UP_MOVE(16, MOVE_CURSE), + LEVEL_UP_MOVE(20, MOVE_TAUNT), + LEVEL_UP_MOVE(24, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE(28, MOVE_SPITE), + LEVEL_UP_MOVE(32, MOVE_AGILITY), + LEVEL_UP_MOVE(36, MOVE_SHADOW_BALL), + LEVEL_UP_MOVE(40, MOVE_BITTER_MALICE), + LEVEL_UP_MOVE(44, MOVE_NASTY_PLOT), + LEVEL_UP_MOVE(48, MOVE_FOUL_PLAY), LEVEL_UP_END }; static const struct LevelUpMove sZoroarkHisuianLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_SHADOW_SNEAK), - LEVEL_UP_MOVE( 6, MOVE_SNARL), - LEVEL_UP_MOVE(11, MOVE_SWIFT), - LEVEL_UP_MOVE(18, MOVE_BITTER_MALICE), - LEVEL_UP_MOVE(25, MOVE_SLASH), - LEVEL_UP_MOVE(34, MOVE_SHADOW_CLAW), + LEVEL_UP_MOVE( 0, MOVE_SHADOW_CLAW), + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_TORMENT), + LEVEL_UP_MOVE( 1, MOVE_U_TURN), + LEVEL_UP_MOVE( 1, MOVE_HONE_CLAWS), + LEVEL_UP_MOVE(12, MOVE_SHADOW_SNEAK), + LEVEL_UP_MOVE(16, MOVE_CURSE), + LEVEL_UP_MOVE(20, MOVE_TAUNT), + LEVEL_UP_MOVE(24, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE(28, MOVE_SPITE), + LEVEL_UP_MOVE(34, MOVE_AGILITY), LEVEL_UP_MOVE(40, MOVE_SHADOW_BALL), - LEVEL_UP_MOVE(43, MOVE_NASTY_PLOT), - LEVEL_UP_MOVE(52, MOVE_EXTRASENSORY), + LEVEL_UP_MOVE(46, MOVE_BITTER_MALICE), + LEVEL_UP_MOVE(52, MOVE_NASTY_PLOT), + LEVEL_UP_MOVE(58, MOVE_FOUL_PLAY), LEVEL_UP_END }; static const struct LevelUpMove sBraviaryHisuianLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE( 6, MOVE_AERIAL_ACE), - LEVEL_UP_MOVE(11, MOVE_TWISTER), - LEVEL_UP_MOVE(18, MOVE_SLASH), - LEVEL_UP_MOVE(20, MOVE_AIR_SLASH), - LEVEL_UP_MOVE(25, MOVE_ESPER_WING), - LEVEL_UP_MOVE(25, MOVE_ROOST), - LEVEL_UP_MOVE(34, MOVE_DOUBLE_EDGE), - LEVEL_UP_MOVE(43, MOVE_BRAVE_BIRD), - LEVEL_UP_MOVE(52, MOVE_HURRICANE), + LEVEL_UP_MOVE( 0, MOVE_ESPER_WING), + LEVEL_UP_MOVE( 1, MOVE_HONE_CLAWS), + LEVEL_UP_MOVE( 1, MOVE_SKY_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 1, MOVE_SUPERPOWER), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_WING_ATTACK), + LEVEL_UP_MOVE(18, MOVE_TAILWIND), + LEVEL_UP_MOVE(24, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(30, MOVE_AERIAL_ACE), + LEVEL_UP_MOVE(36, MOVE_SLASH), + LEVEL_UP_MOVE(42, MOVE_WHIRLWIND), + LEVEL_UP_MOVE(48, MOVE_CRUSH_CLAW), + LEVEL_UP_MOVE(57, MOVE_AIR_SLASH), + LEVEL_UP_MOVE(64, MOVE_DEFOG), + LEVEL_UP_MOVE(72, MOVE_THRASH), + LEVEL_UP_MOVE(80, MOVE_HURRICANE), LEVEL_UP_END }; #endif #if P_GEN_6_POKEMON == TRUE static const struct LevelUpMove sSliggooHisuianLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_BUBBLE), - LEVEL_UP_MOVE( 6, MOVE_ACID_SPRAY), - LEVEL_UP_MOVE(11, MOVE_ACID_ARMOR), - LEVEL_UP_MOVE(18, MOVE_WATER_PULSE), - LEVEL_UP_MOVE(25, MOVE_DRAGON_PULSE), - LEVEL_UP_MOVE(25, MOVE_IRON_HEAD), - LEVEL_UP_MOVE(34, MOVE_SHELTER), - LEVEL_UP_MOVE(43, MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE( 0, MOVE_SHELTER), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 1, MOVE_ABSORB), + LEVEL_UP_MOVE( 1, MOVE_ACID_ARMOR), + LEVEL_UP_MOVE( 1, MOVE_DRAGON_BREATH), + LEVEL_UP_MOVE(15, MOVE_PROTECT), + LEVEL_UP_MOVE(20, MOVE_FLAIL), + LEVEL_UP_MOVE(25, MOVE_WATER_PULSE), + LEVEL_UP_MOVE(30, MOVE_RAIN_DANCE), + LEVEL_UP_MOVE(35, MOVE_DRAGON_PULSE), + LEVEL_UP_MOVE(43, MOVE_CURSE), + LEVEL_UP_MOVE(49, MOVE_IRON_HEAD), + LEVEL_UP_MOVE(56, MOVE_MUDDY_WATER), LEVEL_UP_END }; static const struct LevelUpMove sGoodraHisuianLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_BUBBLE), - LEVEL_UP_MOVE( 6, MOVE_ACID_SPRAY), - LEVEL_UP_MOVE(11, MOVE_ACID_ARMOR), - LEVEL_UP_MOVE(18, MOVE_WATER_PULSE), - LEVEL_UP_MOVE(25, MOVE_DRAGON_PULSE), - LEVEL_UP_MOVE(25, MOVE_IRON_HEAD), - LEVEL_UP_MOVE(34, MOVE_SHELTER), - LEVEL_UP_MOVE(43, MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE( 0, MOVE_IRON_TAIL), + LEVEL_UP_MOVE( 1, MOVE_SHELTER), + LEVEL_UP_MOVE( 1, MOVE_ACID_SPRAY), + LEVEL_UP_MOVE( 1, MOVE_FEINT), + LEVEL_UP_MOVE( 1, MOVE_TEARFUL_LOOK), + LEVEL_UP_MOVE( 1, MOVE_DRAGON_BREATH), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_ABSORB), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE(15, MOVE_PROTECT), + LEVEL_UP_MOVE(20, MOVE_FLAIL), + LEVEL_UP_MOVE(25, MOVE_WATER_PULSE), + LEVEL_UP_MOVE(30, MOVE_RAIN_DANCE), + LEVEL_UP_MOVE(35, MOVE_DRAGON_PULSE), + LEVEL_UP_MOVE(43, MOVE_CURSE), + LEVEL_UP_MOVE(49, MOVE_IRON_HEAD), + LEVEL_UP_MOVE(49, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(58, MOVE_MUDDY_WATER), + LEVEL_UP_MOVE(67, MOVE_HEAVY_SLAM), LEVEL_UP_END }; static const struct LevelUpMove sAvaluggHisuianLevelUpLearnset[] = { LEVEL_UP_MOVE( 0, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE( 1, MOVE_POWDER_SNOW), + LEVEL_UP_MOVE( 1, MOVE_RAPID_SPIN), + LEVEL_UP_MOVE( 1, MOVE_WIDE_GUARD), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 5, MOVE_POWDER_SNOW), - LEVEL_UP_MOVE( 9, MOVE_ICE_SHARD), - LEVEL_UP_MOVE(15, MOVE_BITE), - LEVEL_UP_MOVE(21, MOVE_IRON_DEFENSE), - LEVEL_UP_MOVE(29, MOVE_CRUNCH), - LEVEL_UP_MOVE(29, MOVE_EARTH_POWER), - LEVEL_UP_MOVE(37, MOVE_BLIZZARD), - LEVEL_UP_MOVE(37, MOVE_MOUNTAIN_GALE), - LEVEL_UP_MOVE(47, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE( 9, MOVE_CURSE), + LEVEL_UP_MOVE(12, MOVE_ICY_WIND), + LEVEL_UP_MOVE(15, MOVE_PROTECT), + LEVEL_UP_MOVE(18, MOVE_AVALANCHE), + LEVEL_UP_MOVE(21, MOVE_BITE), + LEVEL_UP_MOVE(24, MOVE_ICE_FANG), + LEVEL_UP_MOVE(27, MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE(30, MOVE_RECOVER), + LEVEL_UP_MOVE(33, MOVE_CRUNCH), + LEVEL_UP_MOVE(36, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(41, MOVE_BLIZZARD), + LEVEL_UP_MOVE(46, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(51, MOVE_STONE_EDGE), + LEVEL_UP_MOVE(61, MOVE_MOUNTAIN_GALE), LEVEL_UP_END }; #endif #if P_GEN_7_POKEMON == TRUE static const struct LevelUpMove sDecidueyeHisuianLevelUpLearnset[] = { - LEVEL_UP_MOVE( 0, MOVE_ROCK_SMASH), - LEVEL_UP_MOVE( 1, MOVE_GUST), - LEVEL_UP_MOVE( 6, MOVE_LEAFAGE), - LEVEL_UP_MOVE(11, MOVE_ROOST), - LEVEL_UP_MOVE(18, MOVE_AERIAL_ACE), - LEVEL_UP_MOVE(21, MOVE_MAGICAL_LEAF), - LEVEL_UP_MOVE(25, MOVE_AIR_SLASH), - LEVEL_UP_MOVE(30, MOVE_AURA_SPHERE), - LEVEL_UP_MOVE(34, MOVE_LEAF_BLADE), - LEVEL_UP_MOVE(34, MOVE_TRIPLE_ARROWS), - LEVEL_UP_MOVE(40, MOVE_BRAVE_BIRD), - LEVEL_UP_MOVE(43, MOVE_LEAF_STORM), + LEVEL_UP_MOVE( 0, MOVE_TRIPLE_ARROWS), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_U_TURN), + LEVEL_UP_MOVE( 1, MOVE_LEAF_STORM), + LEVEL_UP_MOVE( 1, MOVE_LEAFAGE), + LEVEL_UP_MOVE( 9, MOVE_PECK), + LEVEL_UP_MOVE(12, MOVE_SHADOW_SNEAK), + LEVEL_UP_MOVE(15, MOVE_RAZOR_LEAF), + LEVEL_UP_MOVE(20, MOVE_SYNTHESIS), + LEVEL_UP_MOVE(25, MOVE_PLUCK), + LEVEL_UP_MOVE(30, MOVE_BULK_UP), + LEVEL_UP_MOVE(37, MOVE_SUCKER_PUNCH), + LEVEL_UP_MOVE(44, MOVE_LEAF_BLADE), + LEVEL_UP_MOVE(51, MOVE_FEATHER_DANCE), + LEVEL_UP_MOVE(58, MOVE_BRAVE_BIRD), LEVEL_UP_END }; #endif diff --git a/src/data/pokemon/species_info.h b/src/data/pokemon/species_info.h index ad4822ba47..7d1d108631 100644 --- a/src/data/pokemon/species_info.h +++ b/src/data/pokemon/species_info.h @@ -13902,7 +13902,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpAttack = 80, .baseSpDefense = 55, .types = { TYPE_WATER, TYPE_WATER}, - .catchRate = 25, + .catchRate = 190, .expYield = 161, .evYield_Speed = 2, .itemRare = ITEM_DEEP_SEA_TOOTH, @@ -19467,7 +19467,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_RILLABOOM] = + [SPECIES_RILLABOOM] = { RILLABOOM_MISC_INFO, }, @@ -20996,8 +20996,9 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpDefense = 75, .types = { TYPE_NORMAL, TYPE_PSYCHIC}, .catchRate = 45, - .expYield = 184, + .expYield = 263, .evYield_Attack = 1, + .evYield_SpAttack = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = STANDARD_FRIENDSHIP, @@ -21017,11 +21018,11 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpAttack = 45, .baseSpDefense = 70, .types = { TYPE_BUG, TYPE_ROCK}, - .catchRate = 25, + .catchRate = 15, .expYield = 175, - .evYield_Attack = 2, + .evYield_Attack = 3, .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 25, + .eggCycles = 20, .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, @@ -21039,8 +21040,8 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpAttack = 45, .baseSpDefense = 80, .types = { TYPE_GROUND, TYPE_NORMAL}, - .catchRate = 75, - .expYield = 194, + .catchRate = 20, + .expYield = 275, .evYield_Attack = 3, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, @@ -21061,15 +21062,15 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpAttack = 80, .baseSpDefense = 75, .types = { TYPE_WATER, TYPE_GHOST}, - .catchRate = 25, - .expYield = 186, - .evYield_HP = 2, + .catchRate = 45, + .expYield = 265, + .evYield_HP = 3, .genderRatio = MON_MALE, - .eggCycles = 40, + .eggCycles = 20, .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2}, - .abilities = {ABILITY_RATTLED, ABILITY_ADAPTABILITY, ABILITY_MOLD_BREAKER}, + .abilities = {ABILITY_SWIFT_SWIM, ABILITY_ADAPTABILITY, ABILITY_MOLD_BREAKER}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, }, @@ -21083,15 +21084,15 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpAttack = 100, .baseSpDefense = 75, .types = { TYPE_WATER, TYPE_GHOST}, - .catchRate = 25, - .expYield = 186, - .evYield_HP = 2, + .catchRate = 45, + .expYield = 265, + .evYield_HP = 3, .genderRatio = MON_FEMALE, - .eggCycles = 40, + .eggCycles = 20, .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2}, - .abilities = {ABILITY_RATTLED, ABILITY_ADAPTABILITY, ABILITY_MOLD_BREAKER}, + .abilities = {ABILITY_SWIFT_SWIM, ABILITY_ADAPTABILITY, ABILITY_MOLD_BREAKER}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, }, @@ -21105,13 +21106,12 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpAttack = 40, .baseSpDefense = 80, .types = { TYPE_FIGHTING, TYPE_POISON}, - .catchRate = 135, - .expYield = 179, - .evYield_Attack = 1, - .evYield_Speed = 1, + .catchRate = 20, + .expYield = 102, + .evYield_Attack = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, - .friendship = 35, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_PRESSURE, ABILITY_UNBURDEN, ABILITY_POISON_TOUCH}, @@ -21128,9 +21128,9 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpAttack = 65, .baseSpDefense = 65, .types = { TYPE_DARK, TYPE_POISON}, - .catchRate = 135, - .expYield = 180, - .evYield_Attack = 1, + .catchRate = 45, + .expYield = 179, + .evYield_Attack = 2, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = STANDARD_FRIENDSHIP, @@ -21151,14 +21151,14 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpDefense = 80, .types = { TYPE_FAIRY, TYPE_FLYING}, .catchRate = 3, - .expYield = 261, + .expYield = 116, .evYield_SpAttack = 3, .genderRatio = MON_FEMALE, - .eggCycles = 120, - .friendship = 90, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_HEALER, ABILITY_NONE, ABILITY_CONTRARY}, + .abilities = {ABILITY_CUTE_CHARM, ABILITY_NONE, ABILITY_CONTRARY}, .bodyColor = BODY_COLOR_PINK, .noFlip = FALSE, .flags = SPECIES_FLAG_LEGENDARY, @@ -23348,7 +23348,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2}, .abilities = {ABILITY_POISON_POINT, ABILITY_SWIFT_SWIM, ABILITY_INTIMIDATE}, - .bodyColor = BODY_COLOR_GRAY, + .bodyColor = BODY_COLOR_BLACK, .noFlip = FALSE, .flags = SPECIES_FLAG_HISUIAN_FORM, }, @@ -23372,7 +23372,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_INNER_FOCUS, ABILITY_KEEN_EYE, ABILITY_PICKPOCKET}, - .bodyColor = BODY_COLOR_BLACK, + .bodyColor = BODY_COLOR_GRAY, .noFlip = TRUE, .flags = SPECIES_FLAG_HISUIAN_FORM, }, @@ -23389,7 +23389,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .types = { TYPE_WATER, TYPE_DARK}, .catchRate = 45, .expYield = 238, - .evYield_SpAttack = 3, + .evYield_Attack = 3, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = STANDARD_FRIENDSHIP, @@ -23412,7 +23412,8 @@ const struct SpeciesInfo gSpeciesInfo[] = .types = { TYPE_GRASS, TYPE_FIGHTING}, .catchRate = 75, .expYield = 168, - .evYield_Attack = 2, + .evYield_Attack = 1, + .evYield_Speed = 1, .itemRare = ITEM_ABSORB_BULB, .genderRatio = MON_FEMALE, .eggCycles = 20, @@ -23894,7 +23895,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpAttack = 80, .baseSpDefense = 55, .types = { TYPE_WATER, TYPE_WATER}, - .catchRate = 25, + .catchRate = 190, .expYield = 161, .evYield_Speed = 2, .itemRare = ITEM_DEEP_SEA_SCALE, @@ -23917,7 +23918,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpAttack = 80, .baseSpDefense = 55, .types = { TYPE_WATER, TYPE_WATER}, - .catchRate = 25, + .catchRate = 190, .expYield = 161, .evYield_Speed = 2, .itemRare = ITEM_DEEP_SEA_SCALE, @@ -24822,11 +24823,11 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpDefense = 100, .types = { TYPE_FAIRY, TYPE_FLYING}, .catchRate = 3, - .expYield = 270, + .expYield = 116, .evYield_SpAttack = 3, .genderRatio = MON_FEMALE, - .eggCycles = 120, - .friendship = 90, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_OVERCOAT, ABILITY_NONE}, From b5607209f3f2d55c8ef062b5ece8324242aeb5b9 Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Fri, 27 Oct 2023 09:16:39 -0300 Subject: [PATCH 151/162] Fixed G-Max Finale test --- test/dynamax.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/dynamax.c b/test/dynamax.c index 27a689153e..0b04065bf2 100644 --- a/test/dynamax.c +++ b/test/dynamax.c @@ -1294,8 +1294,8 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Finale heals allies by 1/6 of their health") HP_BAR(playerLeft, captureDamage: &damage1); HP_BAR(playerRight, captureDamage: &damage2); } THEN { - EXPECT_MUL_EQ(playerLeft->hp - 1, Q_4_12(6), playerLeft->maxHP); // heals based on Dynamax HP - EXPECT_MUL_EQ(playerRight->hp - 1, Q_4_12(6), playerRight->maxHP); + EXPECT_MUL_EQ(-damage1, Q_4_12(6), playerLeft->maxHP); // heals based on Dynamax HP + EXPECT_MUL_EQ(-damage2, Q_4_12(6), playerRight->maxHP); } } From 57a99e9be6312631567b3eb901af7b71b3fffa29 Mon Sep 17 00:00:00 2001 From: Alex <93446519+AlexOn1ine@users.noreply.github.com> Date: Fri, 27 Oct 2023 15:38:40 +0200 Subject: [PATCH 152/162] Fixes dynamax move target and canceling in doubles (#3470) --- src/battle_controller_player.c | 7 ++----- src/battle_main.c | 6 +++--- src/battle_util.c | 7 ++++--- 3 files changed, 9 insertions(+), 11 deletions(-) diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c index e59ea5ba28..e1041582e8 100644 --- a/src/battle_controller_player.c +++ b/src/battle_controller_player.c @@ -707,11 +707,8 @@ static void HandleInputChooseMove(u32 battler) } // Status moves turn into Max Guard when Dynamaxed, targets user. - if ((IsDynamaxed(battler) || gBattleStruct->dynamax.playerSelect) - && gBattleMoves[moveInfo->moves[gMoveSelectionCursor[battler]]].split == SPLIT_STATUS) - { - moveTarget = MOVE_TARGET_USER; - } + if ((IsDynamaxed(battler) || gBattleStruct->dynamax.playerSelect)) + moveTarget = gBattleMoves[GetMaxMove(battler, moveInfo->moves[gMoveSelectionCursor[battler]])].target; if (moveTarget & MOVE_TARGET_USER) gMultiUsePlayerCursor = battler; diff --git a/src/battle_main.c b/src/battle_main.c index 173fc45468..6b108506f3 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -4253,8 +4253,8 @@ static void HandleTurnActionSelectionState(void) gBattleStruct->mega.toEvolve &= ~(gBitTable[BATTLE_PARTNER(GetBattlerPosition(battler))]); gBattleStruct->burst.toBurst &= ~(gBitTable[BATTLE_PARTNER(GetBattlerPosition(battler))]); - gBattleStruct->dynamax.toDynamax &= ~(gBitTable[battler]); - gBattleStruct->dynamax.usingMaxMove[battler] = FALSE; + gBattleStruct->dynamax.toDynamax &= ~(gBitTable[BATTLE_PARTNER(GetBattlerPosition(battler))]); + gBattleStruct->dynamax.usingMaxMove[BATTLE_PARTNER(GetBattlerPosition(battler))] = FALSE; gBattleStruct->zmove.toBeUsed[BATTLE_PARTNER(GetBattlerPosition(battler))] = MOVE_NONE; BtlController_EmitEndBounceEffect(battler, BUFFER_A); MarkBattlerForControllerExec(battler); @@ -4354,7 +4354,7 @@ static void HandleTurnActionSelectionState(void) gBattleStruct->burst.toBurst |= gBitTable[battler]; else if (gBattleResources->bufferB[battler][2] & RET_DYNAMAX) gBattleStruct->dynamax.toDynamax |= gBitTable[battler]; - + // Max Move check if (ShouldUseMaxMove(battler, gChosenMoveByBattler[battler])) { diff --git a/src/battle_util.c b/src/battle_util.c index afef74b0f8..007e4cfcab 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -322,7 +322,6 @@ void HandleAction_UseMove(void) gCurrentMove = gBattleStruct->zmove.toBeUsed[gBattlerAttacker]; } - moveTarget = GetBattlerMoveTargetType(gBattlerAttacker, gCurrentMove); if (gBattleMons[gBattlerAttacker].hp != 0) { @@ -343,6 +342,8 @@ void HandleAction_UseMove(void) gBattleStruct->dynamax.activeSplit = gBattleStruct->dynamax.splits[gBattlerAttacker]; } + moveTarget = GetBattlerMoveTargetType(gBattlerAttacker, gCurrentMove); + // choose target side = BATTLE_OPPOSITE(GetBattlerSide(gBattlerAttacker)); if (IsAffectedByFollowMe(gBattlerAttacker, side, gCurrentMove) @@ -8193,10 +8194,10 @@ bool32 IsBattlerProtected(u32 battler, u32 move) // Z-Moves and Max Moves bypass protection (except Max Guard). if ((IsMaxMove(move) || gBattleStruct->zmove.active) - && (!gProtectStructs[battler].maxGuarded + && (!gProtectStructs[battler].maxGuarded || gBattleMoves[move].argument == MAX_EFFECT_BYPASS_PROTECT)) return FALSE; - + // Max Guard is silly about the moves it blocks, including Teatime. if (gProtectStructs[battler].maxGuarded && IsMoveBlockedByMaxGuard(move)) return TRUE; From 8e0991475cf288f2bc9f269e5bc5faa11db34d9c Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Fri, 27 Oct 2023 11:04:10 -0300 Subject: [PATCH 153/162] Incorporated upstream fixes --- data/contest_ai_scripts.s | 25 ++++++++++--------- data/event_scripts.s | 1 + .../scripts.inc | 8 +++--- data/scripts/trainer_hill.inc | 4 +-- src/battle_factory.c | 3 +-- 5 files changed, 21 insertions(+), 20 deletions(-) diff --git a/data/contest_ai_scripts.s b/data/contest_ai_scripts.s index ecd3103ae2..affaf31d6d 100644 --- a/data/contest_ai_scripts.s +++ b/data/contest_ai_scripts.s @@ -1,3 +1,4 @@ +#include "config.h" #include "constants/global.h" #include "constants/contest.h" .include "asm/macros.inc" @@ -435,11 +436,11 @@ AI_CGM_BetterWhenAudienceExcited: AI_CGM_BetterWhenAudienceExcited_1stUp: @ BUG: Should be if_appeal_num_eq 0 @ 1st up on 1st appeal excitement will always be 0 -.ifdef BUGFIX +#ifdef BUGFIX if_appeal_num_eq 0, AI_CGM_BetterWhenAudienceExcited_1stAppeal -.else +#else if_appeal_num_not_eq 0, AI_CGM_BetterWhenAudienceExcited_1stAppeal -.endif +#endif if_excitement_eq 4, AI_CGM_BetterWhenAudienceExcited_1AwayFromMax if_excitement_eq 3, AI_CGM_BetterWhenAudienceExcited_2AwayFromMax end @@ -546,11 +547,11 @@ AI_CGM_TargetMonWithJudgesAttention: end AI_CGM_TargetMonWithJudgesAttention_CheckMon1: if_cannot_participate MON_1, AI_CGM_TargetMonWithJudgesAttention_CheckMon2 -.ifdef BUGFIX +#ifdef BUGFIX if_not_used_combo_starter MON_1, AI_CGM_TargetMonWithJudgesAttention_CheckMon2 -.else +#else if_used_combo_starter MON_1, AI_CGM_TargetMonWithJudgesAttention_CheckMon2 -.endif +#endif if_random_less_than 125, AI_CGM_TargetMonWithJudgesAttention_CheckMon2 score +2 if_not_completed_combo MON_1, AI_CGM_TargetMonWithJudgesAttention_CheckMon2 @@ -559,11 +560,11 @@ AI_CGM_TargetMonWithJudgesAttention_CheckMon1: AI_CGM_TargetMonWithJudgesAttention_CheckMon2: if_user_order_eq MON_2, AI_CGM_End if_cannot_participate MON_2, AI_CGM_TargetMonWithJudgesAttention_CheckMon3 -.ifdef BUGFIX +#ifdef BUGFIX if_not_used_combo_starter MON_2, AI_CGM_TargetMonWithJudgesAttention_CheckMon3 -.else +#else if_used_combo_starter MON_2, AI_CGM_TargetMonWithJudgesAttention_CheckMon3 -.endif +#endif if_random_less_than 125, AI_CGM_TargetMonWithJudgesAttention_CheckMon3 score +2 if_not_completed_combo MON_2, AI_CGM_TargetMonWithJudgesAttention_CheckMon3 @@ -572,11 +573,11 @@ AI_CGM_TargetMonWithJudgesAttention_CheckMon2: AI_CGM_TargetMonWithJudgesAttention_CheckMon3: if_user_order_eq MON_3, AI_CGM_End if_cannot_participate MON_3, AI_CGM_End -.ifdef BUGFIX +#ifdef BUGFIX if_not_used_combo_starter MON_3, AI_CGM_End -.else +#else if_used_combo_starter MON_3, AI_CGM_End -.endif +#endif if_random_less_than 125, AI_CGM_End score +2 if_not_completed_combo MON_3, AI_CGM_End diff --git a/data/event_scripts.s b/data/event_scripts.s index 35d0cae2f9..a376866181 100644 --- a/data/event_scripts.s +++ b/data/event_scripts.s @@ -1,3 +1,4 @@ +#include "config.h" #include "config/battle.h" #include "config/item.h" #include "constants/global.h" diff --git a/data/maps/BattleFrontier_BattleTowerLobby/scripts.inc b/data/maps/BattleFrontier_BattleTowerLobby/scripts.inc index fdbf2a5e75..a216055b5b 100644 --- a/data/maps/BattleFrontier_BattleTowerLobby/scripts.inc +++ b/data/maps/BattleFrontier_BattleTowerLobby/scripts.inc @@ -415,18 +415,18 @@ BattleFrontier_BattleTowerLobby_EventScript_SaveBeforeLinkMultisChallenge:: @ to the flash, but not data in PokemonStorage. The SaveGame script that follows asks the player to do a full save, @ which they can opt out of. As a result the player can save their party and quit without having saved the PC. @ This allows players to clone pokemon and their held items by withdrawing them (or erase them by despositing). -.ifndef BUGFIX +#ifndef BUGFIX tower_save 0 -.endif +#endif call Common_EventScript_SaveGame setvar VAR_TEMP_CHALLENGE_STATUS, 255 goto_if_eq VAR_RESULT, 0, BattleFrontier_BattleTowerLobby_EventScript_CancelChallengeSaveFailed @ GAME_STAT_ENTERED_BATTLE_TOWER should not be incremented here, for two reasons: @ 1. It is incremented again in BattleFrontier_BattleTowerLobby_EventScript_CableLinkSuccessful or BattleFrontier_BattleTowerLobby_EventScript_WirelessLinkSuccessful @ 2. If the player tries to connect, but fails, the counter will still be incremented even if the player never enters the tower. -.ifndef BUGFIX +#ifndef BUGFIX incrementgamestat GAME_STAT_ENTERED_BATTLE_TOWER -.endif +#endif specialvar VAR_RESULT, IsWirelessAdapterConnected goto_if_eq VAR_RESULT, TRUE, BattleFrontier_BattleTowerLobby_EventScript_TryWirelessLink goto BattleFrontier_BattleTowerLobby_EventScript_TryCableLink diff --git a/data/scripts/trainer_hill.inc b/data/scripts/trainer_hill.inc index b7f8153514..04bbe05e5a 100644 --- a/data/scripts/trainer_hill.inc +++ b/data/scripts/trainer_hill.inc @@ -13,9 +13,9 @@ TrainerHill_OnWarp: TrainerHill_1F_EventScript_DummyOnWarp:: setvar VAR_TEMP_3, 1 -.ifdef BUGFIX +#ifdef BUGFIX end @ Missing end. By chance, the next byte (0x02 of VAR_TEMP_2) is also the id for the end cmd -.endif +#endif TrainerHill_OnFrame: map_script_2 VAR_TEMP_2, 0, TrainerHill_1F_EventScript_DummyWarpToEntranceCounter diff --git a/src/battle_factory.c b/src/battle_factory.c index f2bcc16d26..4543bfbad4 100644 --- a/src/battle_factory.c +++ b/src/battle_factory.c @@ -745,8 +745,7 @@ u8 GetFactoryMonFixedIV(u8 challengeNum, bool8 isLastBattle) // or the "elevated" rentals from round 8 (challengeNum+1==8) // This happens to land on a number higher than 31, which is interpreted as "random IVs" #ifdef BUGFIX - //if (challengeNum >= ARRAY_COUNT(sFixedIVTable)) //TODOMERGE - if (challengeNum > ARRAY_COUNT(sFixedIVTable)) + if (challengeNum >= ARRAY_COUNT(sFixedIVTable)) #else if (challengeNum > ARRAY_COUNT(sFixedIVTable)) #endif From bd71946372775f44743390fa0f6a30f95051491a Mon Sep 17 00:00:00 2001 From: kittenchilly Date: Fri, 27 Oct 2023 11:52:44 -0500 Subject: [PATCH 154/162] Remove all trailing whitespace (master) (#3472) --- .../ISSUE_TEMPLATE/01_battle_engine_bugs.yaml | 2 +- .github/ISSUE_TEMPLATE/02_battle_ai_issues.yaml | 2 +- .github/ISSUE_TEMPLATE/03_feature_requests.yaml | 2 +- .github/ISSUE_TEMPLATE/04_other_errors.yaml | 2 +- .github/ISSUE_TEMPLATE/config.yml | 2 +- INSTALL.md | 6 +++--- data/battle_scripts_2.s | 2 +- src/battle_dome.c | 4 ++-- src/battle_interface.c | 4 ++-- src/data/items.h | 2 +- src/fieldmap.c | 2 +- src/pokemon_animation.c | 16 ++++++++-------- src/pokemon_debug.c | 2 +- test/battle/hold_effect/eject_button.c | 2 +- test/battle/move_effect/hydro_steam.c | 6 +++--- test/battle/move_effect/revival_blessing.c | 2 +- test/battle/move_effect/roost.c | 10 +++++----- test/battle/move_effect/teatime.c | 6 +++--- test/battle/weather/rain.c | 4 ++-- test/battle/weather/sunlight.c | 4 ++-- 20 files changed, 41 insertions(+), 41 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/01_battle_engine_bugs.yaml b/.github/ISSUE_TEMPLATE/01_battle_engine_bugs.yaml index a1835c551f..38b323146a 100644 --- a/.github/ISSUE_TEMPLATE/01_battle_engine_bugs.yaml +++ b/.github/ISSUE_TEMPLATE/01_battle_engine_bugs.yaml @@ -11,7 +11,7 @@ body: attributes: label: Description description: | - Describe the issue you are experiencing. + Describe the issue you are experiencing. Attach images/videos if possible. placeholder: | Please enter a description of the issue. Here you can also attach log screenshots, gifs or a video diff --git a/.github/ISSUE_TEMPLATE/02_battle_ai_issues.yaml b/.github/ISSUE_TEMPLATE/02_battle_ai_issues.yaml index f9ccbac7eb..bb617b3d5e 100644 --- a/.github/ISSUE_TEMPLATE/02_battle_ai_issues.yaml +++ b/.github/ISSUE_TEMPLATE/02_battle_ai_issues.yaml @@ -11,7 +11,7 @@ body: attributes: label: Description description: | - Describe the issue you are experiencing. + Describe the issue you are experiencing. Attach images/videos if possible. placeholder: | Please enter a description of the issue. Here you can also attach log screenshots, gifs or a video diff --git a/.github/ISSUE_TEMPLATE/03_feature_requests.yaml b/.github/ISSUE_TEMPLATE/03_feature_requests.yaml index 682f0dc098..8d56216265 100644 --- a/.github/ISSUE_TEMPLATE/03_feature_requests.yaml +++ b/.github/ISSUE_TEMPLATE/03_feature_requests.yaml @@ -11,7 +11,7 @@ body: attributes: label: Description description: | - Describe the issue you are experiencing. + Describe the issue you are experiencing. Attach images/videos if possible. placeholder: | Please enter a description of the issue. Here you can also attach log screenshots, gifs or a video diff --git a/.github/ISSUE_TEMPLATE/04_other_errors.yaml b/.github/ISSUE_TEMPLATE/04_other_errors.yaml index dfb0850030..fec54fa150 100644 --- a/.github/ISSUE_TEMPLATE/04_other_errors.yaml +++ b/.github/ISSUE_TEMPLATE/04_other_errors.yaml @@ -11,7 +11,7 @@ body: attributes: label: Description description: | - Describe the issue you are experiencing. + Describe the issue you are experiencing. Attach images/videos if possible. placeholder: | Please enter a description of the issue. Here you can also attach log screenshots, gifs or a video diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index 9dc46b6e3f..9a6dfeadd9 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -1,5 +1,5 @@ blank_issues_enabled: false -contact_links: +contact_links: - name: Rom-Hacking Hideout's Discord server! url: https://discord.gg/6CzjAG6GZk about: You can follow the development of pokeemerald-expansion and be notified of new releases :) \ No newline at end of file diff --git a/INSTALL.md b/INSTALL.md index e74706d6aa..af2e844677 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -150,9 +150,9 @@ Note that in msys2, Copy is Ctrl+Insert and Paste is Shift+Insert.
Notes... - > Note 1: While not shown, msys uses forward slashes `/` instead of backwards slashes `\` as the directory separator. - > Note 2: If the path has spaces, then the path must be wrapped with quotations, e.g. `cd "Downloads/My Downloads"`. - > Note 3: Windows path names are case-insensitive so adhering to capitalization isn’t needed. + > Note 1: While not shown, msys uses forward slashes `/` instead of backwards slashes `\` as the directory separator. + > Note 2: If the path has spaces, then the path must be wrapped with quotations, e.g. `cd "Downloads/My Downloads"`. + > Note 3: Windows path names are case-insensitive so adhering to capitalization isn’t needed. > Note 4: If libpng was saved elsewhere, you will need to specify the full path to where libpng was downloaded, e.g. `cd c:/devkitpro/msys2` if it was saved there.
diff --git a/data/battle_scripts_2.s b/data/battle_scripts_2.s index 5b0827ade6..20f19d5498 100644 --- a/data/battle_scripts_2.s +++ b/data/battle_scripts_2.s @@ -244,7 +244,7 @@ BattleScript_TrainerASlideMsgRet:: BattleScript_TrainerASlideMsgEnd2:: call BattleScript_TrainerASlideMsgRet end2 - + BattleScript_TrainerBSlideMsgRet:: handletrainerslidemsg BS_SCRIPTING, 0 trainerslidein B_POSITION_OPPONENT_RIGHT diff --git a/src/battle_dome.c b/src/battle_dome.c index 917200ac67..ad7c60dd1c 100644 --- a/src/battle_dome.c +++ b/src/battle_dome.c @@ -1665,13 +1665,13 @@ static const u8 sTourneyTreePokeballCoords[DOME_TOURNAMENT_TRAINERS_COUNT + DOME {.tile = LINE_V_L, .y = 9, .x = 17}, \ {.tile = LINE_V_L, .y = 10, .x = 17}, \ {.tile = LINE_V_L_HALF_LOGO, .y = 11, .x = 17}, - + #define LINESECTION_SEMIFINAL_BOTTOM_RIGHT \ {.tile = LINE_V_L_LOGO4, .y = 14, .x = 17}, \ {.tile = LINE_V_L_LOGO3, .y = 13, .x = 17}, \ {.tile = LINE_V_L_LOGO2, .y = 12, .x = 17}, \ {.tile = LINE_V_L_LOGO1, .y = 11, .x = 17}, - + #define LINESECTION_FINAL_LEFT \ {.tile = LINE_H_LOGO1, .y = 11, .x = 13}, \ {.tile = LINE_H_LOGO2, .y = 11, .x = 14}, diff --git a/src/battle_interface.c b/src/battle_interface.c index d1e5757fb9..bd87bfc0b1 100644 --- a/src/battle_interface.c +++ b/src/battle_interface.c @@ -3672,13 +3672,13 @@ static void Task_BounceBall(u8 taskId) sprite->callback = SpriteCB_LastUsedBallBounce; //Show and bounce down task->sState++; } - break; + break; case 4: // Destroy Task if(!sprite->sMoving) { sprite->callback = SpriteCB_LastUsedBall; DestroyTask(taskId); - } + } } if (!gLastUsedBallMenuPresent) { diff --git a/src/data/items.h b/src/data/items.h index ec7e22a608..1cb54c88a1 100644 --- a/src/data/items.h +++ b/src/data/items.h @@ -15,7 +15,7 @@ #endif #if I_TYPE_BOOST_POWER >= GEN_4 // For non Pokémon-specific type-boosting held items. - #define TYPE_BOOST_PARAM 20 + #define TYPE_BOOST_PARAM 20 #else #define TYPE_BOOST_PARAM 10 #endif diff --git a/src/fieldmap.c b/src/fieldmap.c index 8faab449a4..ac9cedc0ba 100644 --- a/src/fieldmap.c +++ b/src/fieldmap.c @@ -681,7 +681,7 @@ bool8 CameraMove(int x, int y) { DebugPrintfLevel(MGBA_LOG_WARN, "GetIncomingConnection returned an invalid connection inside CameraMove!"); } - + } return gCamera.active; } diff --git a/src/pokemon_animation.c b/src/pokemon_animation.c index 57b3d5b303..86def9b721 100644 --- a/src/pokemon_animation.c +++ b/src/pokemon_animation.c @@ -604,7 +604,7 @@ static const u8 sSpeciesToBackAnimSet[NUM_SPECIES] = [SPECIES_JIRACHI] = BACK_ANIM_CONVEX_DOUBLE_ARC, [SPECIES_DEOXYS] = BACK_ANIM_SHRINK_GROW_VIBRATE, [SPECIES_CHIMECHO] = BACK_ANIM_CONVEX_DOUBLE_ARC, - + // Gen 4 [SPECIES_TURTWIG] = BACK_ANIM_H_SLIDE, [SPECIES_GROTLE] = BACK_ANIM_H_SLIDE, @@ -713,7 +713,7 @@ static const u8 sSpeciesToBackAnimSet[NUM_SPECIES] = [SPECIES_DARKRAI] = BACK_ANIM_SHRINK_GROW_VIBRATE, [SPECIES_SHAYMIN] = BACK_ANIM_CONCAVE_ARC_SMALL, [SPECIES_ARCEUS] = BACK_ANIM_GROW, - + //Gen 4 Forms [SPECIES_DEOXYS_ATTACK] = BACK_ANIM_GROW_STUTTER, [SPECIES_DEOXYS_DEFENSE] = BACK_ANIM_DIP_RIGHT_SIDE, @@ -749,7 +749,7 @@ static const u8 sSpeciesToBackAnimSet[NUM_SPECIES] = [SPECIES_ARCEUS_DRAGON] = BACK_ANIM_GROW_STUTTER, [SPECIES_ARCEUS_DARK] = BACK_ANIM_GROW_STUTTER, [SPECIES_ARCEUS_FAIRY] = BACK_ANIM_GROW_STUTTER, - + // Gen 5 [SPECIES_VICTINI] = BACK_ANIM_H_SHAKE, [SPECIES_SNIVY] = BACK_ANIM_H_SLIDE, @@ -812,7 +812,7 @@ static const u8 sSpeciesToBackAnimSet[NUM_SPECIES] = [SPECIES_KROKOROK] = BACK_ANIM_V_STRETCH, [SPECIES_KROOKODILE] = BACK_ANIM_V_SHAKE_LOW, [SPECIES_DARUMAKA] = BACK_ANIM_CONCAVE_ARC_LARGE, - [SPECIES_DARMANITAN] = BACK_ANIM_V_SHAKE_H_SLIDE, + [SPECIES_DARMANITAN] = BACK_ANIM_V_SHAKE_H_SLIDE, [SPECIES_MARACTUS] = BACK_ANIM_CONCAVE_ARC_LARGE, [SPECIES_DWEBBLE] = BACK_ANIM_H_SLIDE, [SPECIES_CRUSTLE] = BACK_ANIM_V_SHAKE_LOW, @@ -928,7 +928,7 @@ static const u8 sSpeciesToBackAnimSet[NUM_SPECIES] = [SPECIES_GENESECT_SHOCK_DRIVE] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, [SPECIES_GENESECT_BURN_DRIVE] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, [SPECIES_GENESECT_CHILL_DRIVE] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, - + //Gen 6 [SPECIES_CHESPIN] = BACK_ANIM_H_SLIDE, [SPECIES_QUILLADIN] = BACK_ANIM_GROW, @@ -1002,7 +1002,7 @@ static const u8 sSpeciesToBackAnimSet[NUM_SPECIES] = [SPECIES_DIANCIE] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, [SPECIES_HOOPA] = BACK_ANIM_CONVEX_DOUBLE_ARC, [SPECIES_VOLCANION] = BACK_ANIM_SHAKE_GLOW_RED, - + //Gen 6 Forms [SPECIES_GRENINJA_ASH] = BACK_ANIM_SHAKE_GLOW_BLUE, [SPECIES_GRENINJA_BATTLE_BOND] = BACK_ANIM_V_STRETCH, @@ -1061,7 +1061,7 @@ static const u8 sSpeciesToBackAnimSet[NUM_SPECIES] = [SPECIES_ZYGARDE_50_POWER_CONSTRUCT] = BACK_ANIM_SHAKE_GLOW_GREEN, [SPECIES_ZYGARDE_COMPLETE] = BACK_ANIM_SHAKE_GLOW_GREEN, [SPECIES_HOOPA_UNBOUND] = BACK_ANIM_V_SHAKE_LOW, - + //Gen 6 Megas (Thanks Furret/CyanSMP64!) [SPECIES_VENUSAUR_MEGA] = BACK_ANIM_SHAKE_GLOW_GREEN, [SPECIES_CHARIZARD_MEGA_X] = BACK_ANIM_SHAKE_GLOW_BLUE, @@ -1111,7 +1111,7 @@ static const u8 sSpeciesToBackAnimSet[NUM_SPECIES] = [SPECIES_RAYQUAZA_MEGA] = BACK_ANIM_SHAKE_GLOW_GREEN, [SPECIES_KYOGRE_PRIMAL] = BACK_ANIM_SHAKE_GLOW_BLUE, [SPECIES_GROUDON_PRIMAL] = BACK_ANIM_SHAKE_GLOW_RED, - + }; // Equivalent to struct YellowFlashData, but doesn't match as a struct diff --git a/src/pokemon_debug.c b/src/pokemon_debug.c index 3c9a562776..8ec5fe6dc7 100644 --- a/src/pokemon_debug.c +++ b/src/pokemon_debug.c @@ -1262,7 +1262,7 @@ static void ApplyOffsetSpriteValues(struct PokemonDebugMenu *data) gSprites[data->backspriteId].y = DEBUG_MON_BACK_Y + gMonBackPicCoords[species].y_offset + data->offsetsSpriteValues.offset_back_picCoords; //Front gSprites[data->frontspriteId].y = GetBattlerSpriteFinal_YCustom(species, data->offsetsSpriteValues.offset_front_picCoords, data->offsetsSpriteValues.offset_front_elevation); - + if (data->currentSubmenu == 2) UpdateShadowSpriteInvisible(data); } diff --git a/test/battle/hold_effect/eject_button.c b/test/battle/hold_effect/eject_button.c index 4409f5d5b6..45dfc539b8 100644 --- a/test/battle/hold_effect/eject_button.c +++ b/test/battle/hold_effect/eject_button.c @@ -55,7 +55,7 @@ SINGLE_BATTLE_TEST("Eject Button will not activate under Substitute") OPPONENT(SPECIES_RAICHU) { Item(ITEM_EJECT_BUTTON); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { + TURN { MOVE(opponent, MOVE_SUBSTITUTE); MOVE(player, MOVE_TACKLE); } diff --git a/test/battle/move_effect/hydro_steam.c b/test/battle/move_effect/hydro_steam.c index f86da07ac5..80a3a90d37 100644 --- a/test/battle/move_effect/hydro_steam.c +++ b/test/battle/move_effect/hydro_steam.c @@ -1,11 +1,11 @@ #include "global.h" #include "test/battle.h" - + ASSUMPTIONS { ASSUME(gBattleMoves[MOVE_HYDRO_STEAM].effect == EFFECT_HYDRO_STEAM); } - + SINGLE_BATTLE_TEST("Hydro Steam deals 1.5x damage under both Sunlight and Rain", s16 damage) { u16 setupMove; @@ -26,7 +26,7 @@ SINGLE_BATTLE_TEST("Hydro Steam deals 1.5x damage under both Sunlight and Rain", EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.5), results[1].damage); } } - + SINGLE_BATTLE_TEST("Hydro Steam is affected by Utility Umbrella", s16 damage) { u32 itemPlayer; diff --git a/test/battle/move_effect/revival_blessing.c b/test/battle/move_effect/revival_blessing.c index a5dd32c197..63f454a779 100644 --- a/test/battle/move_effect/revival_blessing.c +++ b/test/battle/move_effect/revival_blessing.c @@ -103,7 +103,7 @@ TO_DO_BATTLE_TEST("Revived battlers still lose their turn"); // OPPONENT(SPECIES_WYNAUT) { HP(1); } // } WHEN { // TURN { MOVE(playerLeft, MOVE_TACKLE, target: opponentRight); -// MOVE(opponentLeft, MOVE_REVIVAL_BLESSING); +// MOVE(opponentLeft, MOVE_REVIVAL_BLESSING); // SEND_OUT(opponentLeft, 1); } // } SCENE { // MESSAGE("Wobbuffet used Tackle!"); diff --git a/test/battle/move_effect/roost.c b/test/battle/move_effect/roost.c index 12731e2345..b68cbfeafc 100644 --- a/test/battle/move_effect/roost.c +++ b/test/battle/move_effect/roost.c @@ -62,7 +62,7 @@ SINGLE_BATTLE_TEST("Roost fails if the user is under the effects of Heal Block") } SINGLE_BATTLE_TEST("Roost recovers 50% of the user's Max HP") -{ +{ s16 hp; KNOWN_FAILING; // All healing is currently rounded down @@ -222,7 +222,7 @@ SINGLE_BATTLE_TEST("Roost, if used by a Mystery/Flying type, treats the user as MESSAGE("It's not very effective…"); MESSAGE("It doesn't affect Moltres…"); } - } + } } // Tested in ORAS @@ -234,9 +234,9 @@ DOUBLE_BATTLE_TEST("Roost suppresses the user's not-yet-aquired Flying-type this PLAYER(SPECIES_KECLEON) { Speed(40); HP(150); Ability(ABILITY_COLOR_CHANGE); } PLAYER(SPECIES_WOBBUFFET) { Speed(10); } OPPONENT(SPECIES_PIDGEY) { Speed(30); } - OPPONENT(SPECIES_SANDSHREW) { Speed(20); } + OPPONENT(SPECIES_SANDSHREW) { Speed(20); } } WHEN { - TURN { MOVE(playerLeft, MOVE_ROOST); + TURN { MOVE(playerLeft, MOVE_ROOST); MOVE(opponentLeft, MOVE_GUST, target: playerLeft); MOVE(opponentRight, MOVE_EARTHQUAKE, target: playerLeft); } } SCENE { @@ -441,6 +441,6 @@ SINGLE_BATTLE_TEST("Roost does not suppress the ungrounded effect of Telekinesis } // Tested in ORAS -// Transform does not copy the Roost "status" either. +// Transform does not copy the Roost "status" either. // Probably better as a Transform test. TO_DO_BATTLE_TEST("Roost's suppression does not prevent others who are Transforming into the user from copying its Flying-type"); diff --git a/test/battle/move_effect/teatime.c b/test/battle/move_effect/teatime.c index c4398f296a..3f933db115 100644 --- a/test/battle/move_effect/teatime.c +++ b/test/battle/move_effect/teatime.c @@ -143,7 +143,7 @@ SINGLE_BATTLE_TEST("Teatime does not affect Pokémon in the semi-invulnerable tu PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_NONE); } OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_LIECHI_BERRY); } } WHEN { - TURN { + TURN { MOVE(opponent, MOVE_FLY); MOVE(player, MOVE_TEATIME); } @@ -172,7 +172,7 @@ SINGLE_BATTLE_TEST("Teatime triggers Volt Absorb if it has been affected by Elec PLAYER(SPECIES_JOLTEON) { Ability(ABILITY_VOLT_ABSORB); Item(item); HP(55); MaxHP(100); } OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_LIECHI_BERRY); } } WHEN { - TURN { + TURN { MOVE(player, move); MOVE(opponent, MOVE_TEATIME); } @@ -248,7 +248,7 @@ SINGLE_BATTLE_TEST("Teatime triggers Motor Drive if it has been affected by Elec PLAYER(SPECIES_ELECTIVIRE) { Ability(ABILITY_MOTOR_DRIVE); Item(item); } OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_LIECHI_BERRY); } } WHEN { - TURN { + TURN { MOVE(player, move); MOVE(opponent, MOVE_TEATIME); } diff --git a/test/battle/weather/rain.c b/test/battle/weather/rain.c index 00ac263044..3f7a6f599b 100644 --- a/test/battle/weather/rain.c +++ b/test/battle/weather/rain.c @@ -7,7 +7,7 @@ ASSUMPTIONS ASSUME(gBattleMoves[MOVE_EMBER].type == TYPE_FIRE); ASSUME(gBattleMoves[MOVE_WATER_GUN].type == TYPE_WATER); } - + SINGLE_BATTLE_TEST("Rain multiplies the power of Fire-type moves by 0.5x", s16 damage) { u32 setupMove; @@ -26,7 +26,7 @@ SINGLE_BATTLE_TEST("Rain multiplies the power of Fire-type moves by 0.5x", s16 d EXPECT_MUL_EQ(results[0].damage, Q_4_12(0.5), results[1].damage); } } - + SINGLE_BATTLE_TEST("Rain multiplies the power of Water-type moves by 1.5x", s16 damage) { u32 setupMove; diff --git a/test/battle/weather/sunlight.c b/test/battle/weather/sunlight.c index 9d471332ad..51b18dd076 100644 --- a/test/battle/weather/sunlight.c +++ b/test/battle/weather/sunlight.c @@ -7,7 +7,7 @@ ASSUMPTIONS ASSUME(gBattleMoves[MOVE_EMBER].type == TYPE_FIRE); ASSUME(gBattleMoves[MOVE_WATER_GUN].type == TYPE_WATER); } - + SINGLE_BATTLE_TEST("Sunlight multiplies the power of Fire-type moves by 1.5x", s16 damage) { u32 setupMove; @@ -26,7 +26,7 @@ SINGLE_BATTLE_TEST("Sunlight multiplies the power of Fire-type moves by 1.5x", s EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.5), results[1].damage); } } - + SINGLE_BATTLE_TEST("Sunlight multiplies the power of Water-type moves by 0.5x", s16 damage) { u32 setupMove; From 9d2be9f3a65ea6e2d6d1c1288734fc5df8a22871 Mon Sep 17 00:00:00 2001 From: kittenchilly Date: Fri, 27 Oct 2023 11:54:55 -0500 Subject: [PATCH 155/162] Remove all trailing whitespace (upcoming) (#3473) --- .github/ISSUE_TEMPLATE/01_battle_engine_bugs.yaml | 2 +- .github/ISSUE_TEMPLATE/02_battle_ai_issues.yaml | 2 +- .github/ISSUE_TEMPLATE/03_feature_requests.yaml | 2 +- .github/ISSUE_TEMPLATE/04_other_errors.yaml | 2 +- .github/ISSUE_TEMPLATE/config.yml | 2 +- data/battle_scripts_2.s | 2 +- src/battle_controller_opponent.c | 4 ++-- src/data/text/move_names.h | 1 - src/pokemon_animation.c | 4 ++-- test/battle/hold_effect/eject_button.c | 2 +- test/battle/move_effect/hydro_steam.c | 6 +++--- test/battle/move_effect/revival_blessing.c | 2 +- test/battle/weather/rain.c | 4 ++-- test/battle/weather/sunlight.c | 4 ++-- test/dynamax.c | 12 ++++++------ test/test_runner_battle.c | 2 +- 16 files changed, 26 insertions(+), 27 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/01_battle_engine_bugs.yaml b/.github/ISSUE_TEMPLATE/01_battle_engine_bugs.yaml index a1835c551f..38b323146a 100644 --- a/.github/ISSUE_TEMPLATE/01_battle_engine_bugs.yaml +++ b/.github/ISSUE_TEMPLATE/01_battle_engine_bugs.yaml @@ -11,7 +11,7 @@ body: attributes: label: Description description: | - Describe the issue you are experiencing. + Describe the issue you are experiencing. Attach images/videos if possible. placeholder: | Please enter a description of the issue. Here you can also attach log screenshots, gifs or a video diff --git a/.github/ISSUE_TEMPLATE/02_battle_ai_issues.yaml b/.github/ISSUE_TEMPLATE/02_battle_ai_issues.yaml index f9ccbac7eb..bb617b3d5e 100644 --- a/.github/ISSUE_TEMPLATE/02_battle_ai_issues.yaml +++ b/.github/ISSUE_TEMPLATE/02_battle_ai_issues.yaml @@ -11,7 +11,7 @@ body: attributes: label: Description description: | - Describe the issue you are experiencing. + Describe the issue you are experiencing. Attach images/videos if possible. placeholder: | Please enter a description of the issue. Here you can also attach log screenshots, gifs or a video diff --git a/.github/ISSUE_TEMPLATE/03_feature_requests.yaml b/.github/ISSUE_TEMPLATE/03_feature_requests.yaml index 682f0dc098..8d56216265 100644 --- a/.github/ISSUE_TEMPLATE/03_feature_requests.yaml +++ b/.github/ISSUE_TEMPLATE/03_feature_requests.yaml @@ -11,7 +11,7 @@ body: attributes: label: Description description: | - Describe the issue you are experiencing. + Describe the issue you are experiencing. Attach images/videos if possible. placeholder: | Please enter a description of the issue. Here you can also attach log screenshots, gifs or a video diff --git a/.github/ISSUE_TEMPLATE/04_other_errors.yaml b/.github/ISSUE_TEMPLATE/04_other_errors.yaml index dfb0850030..fec54fa150 100644 --- a/.github/ISSUE_TEMPLATE/04_other_errors.yaml +++ b/.github/ISSUE_TEMPLATE/04_other_errors.yaml @@ -11,7 +11,7 @@ body: attributes: label: Description description: | - Describe the issue you are experiencing. + Describe the issue you are experiencing. Attach images/videos if possible. placeholder: | Please enter a description of the issue. Here you can also attach log screenshots, gifs or a video diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index 9dc46b6e3f..9a6dfeadd9 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -1,5 +1,5 @@ blank_issues_enabled: false -contact_links: +contact_links: - name: Rom-Hacking Hideout's Discord server! url: https://discord.gg/6CzjAG6GZk about: You can follow the development of pokeemerald-expansion and be notified of new releases :) \ No newline at end of file diff --git a/data/battle_scripts_2.s b/data/battle_scripts_2.s index e8e9358771..46d4d195ea 100644 --- a/data/battle_scripts_2.s +++ b/data/battle_scripts_2.s @@ -245,7 +245,7 @@ BattleScript_TrainerASlideMsgRet:: BattleScript_TrainerASlideMsgEnd2:: call BattleScript_TrainerASlideMsgRet end2 - + BattleScript_TrainerBSlideMsgRet:: handletrainerslidemsg BS_SCRIPTING, 0 trainerslidein B_POSITION_OPPONENT_RIGHT diff --git a/src/battle_controller_opponent.c b/src/battle_controller_opponent.c index 703d66105b..e697fbb227 100644 --- a/src/battle_controller_opponent.c +++ b/src/battle_controller_opponent.c @@ -561,13 +561,13 @@ static void OpponentHandleChooseMove(u32 battler) if (ShouldUseZMove(battler, gBattlerTarget, chosenMove)) QueueZMove(battler, chosenMove); // If opponent can Mega Evolve, do it. - if (CanMegaEvolve(battler)) + if (CanMegaEvolve(battler)) BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, (chosenMoveId) | (RET_MEGA_EVOLUTION) | (gBattlerTarget << 8)); // If opponent can Ultra Burst, do it. else if (CanUltraBurst(battler)) BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, (chosenMoveId) | (RET_ULTRA_BURST) | (gBattlerTarget << 8)); // If opponent can Dynamax and is on final Pokemon, do it. - else if (CanDynamax(battler) && CountAIAliveNonEggMonsExcept(gBattlerPartyIndexes[battler]) == 0) + else if (CanDynamax(battler) && CountAIAliveNonEggMonsExcept(gBattlerPartyIndexes[battler]) == 0) BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, (chosenMoveId) | (RET_DYNAMAX) | (gBattlerTarget << 8)); else BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, (chosenMoveId) | (gBattlerTarget << 8)); diff --git a/src/data/text/move_names.h b/src/data/text/move_names.h index 39fd8129b2..01d613751e 100644 --- a/src/data/text/move_names.h +++ b/src/data/text/move_names.h @@ -1968,4 +1968,3 @@ const u8 *const gMaxMoveNames[] = [MOVE_G_MAX_ONE_BLOW - FIRST_MAX_MOVE] = sText_G_Max_One_Blow, [MOVE_G_MAX_RAPID_FLOW - FIRST_MAX_MOVE] = sText_G_Max_Rapid_Flow, }; - \ No newline at end of file diff --git a/src/pokemon_animation.c b/src/pokemon_animation.c index 1070c22aa8..90988bc764 100644 --- a/src/pokemon_animation.c +++ b/src/pokemon_animation.c @@ -777,7 +777,7 @@ static const u8 sSpeciesToBackAnimSet[NUM_SPECIES] = [SPECIES_KROKOROK] = BACK_ANIM_V_STRETCH, [SPECIES_KROOKODILE] = BACK_ANIM_V_SHAKE_LOW, [SPECIES_DARUMAKA] = BACK_ANIM_CONCAVE_ARC_LARGE, - [SPECIES_DARMANITAN_STANDARD_MODE] = BACK_ANIM_V_SHAKE_H_SLIDE, + [SPECIES_DARMANITAN_STANDARD_MODE] = BACK_ANIM_V_SHAKE_H_SLIDE, [SPECIES_MARACTUS] = BACK_ANIM_CONCAVE_ARC_LARGE, [SPECIES_DWEBBLE] = BACK_ANIM_H_SLIDE, [SPECIES_CRUSTLE] = BACK_ANIM_V_SHAKE_LOW, @@ -872,7 +872,7 @@ static const u8 sSpeciesToBackAnimSet[NUM_SPECIES] = [SPECIES_KELDEO_ORDINARY] = BACK_ANIM_JOLT_RIGHT, [SPECIES_MELOETTA_ARIA] = BACK_ANIM_CONVEX_DOUBLE_ARC, [SPECIES_GENESECT] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, - + // Gen 6 [SPECIES_CHESPIN] = BACK_ANIM_H_SLIDE, [SPECIES_QUILLADIN] = BACK_ANIM_GROW, diff --git a/test/battle/hold_effect/eject_button.c b/test/battle/hold_effect/eject_button.c index 4409f5d5b6..45dfc539b8 100644 --- a/test/battle/hold_effect/eject_button.c +++ b/test/battle/hold_effect/eject_button.c @@ -55,7 +55,7 @@ SINGLE_BATTLE_TEST("Eject Button will not activate under Substitute") OPPONENT(SPECIES_RAICHU) { Item(ITEM_EJECT_BUTTON); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { + TURN { MOVE(opponent, MOVE_SUBSTITUTE); MOVE(player, MOVE_TACKLE); } diff --git a/test/battle/move_effect/hydro_steam.c b/test/battle/move_effect/hydro_steam.c index f86da07ac5..80a3a90d37 100644 --- a/test/battle/move_effect/hydro_steam.c +++ b/test/battle/move_effect/hydro_steam.c @@ -1,11 +1,11 @@ #include "global.h" #include "test/battle.h" - + ASSUMPTIONS { ASSUME(gBattleMoves[MOVE_HYDRO_STEAM].effect == EFFECT_HYDRO_STEAM); } - + SINGLE_BATTLE_TEST("Hydro Steam deals 1.5x damage under both Sunlight and Rain", s16 damage) { u16 setupMove; @@ -26,7 +26,7 @@ SINGLE_BATTLE_TEST("Hydro Steam deals 1.5x damage under both Sunlight and Rain", EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.5), results[1].damage); } } - + SINGLE_BATTLE_TEST("Hydro Steam is affected by Utility Umbrella", s16 damage) { u32 itemPlayer; diff --git a/test/battle/move_effect/revival_blessing.c b/test/battle/move_effect/revival_blessing.c index a5dd32c197..63f454a779 100644 --- a/test/battle/move_effect/revival_blessing.c +++ b/test/battle/move_effect/revival_blessing.c @@ -103,7 +103,7 @@ TO_DO_BATTLE_TEST("Revived battlers still lose their turn"); // OPPONENT(SPECIES_WYNAUT) { HP(1); } // } WHEN { // TURN { MOVE(playerLeft, MOVE_TACKLE, target: opponentRight); -// MOVE(opponentLeft, MOVE_REVIVAL_BLESSING); +// MOVE(opponentLeft, MOVE_REVIVAL_BLESSING); // SEND_OUT(opponentLeft, 1); } // } SCENE { // MESSAGE("Wobbuffet used Tackle!"); diff --git a/test/battle/weather/rain.c b/test/battle/weather/rain.c index 00ac263044..3f7a6f599b 100644 --- a/test/battle/weather/rain.c +++ b/test/battle/weather/rain.c @@ -7,7 +7,7 @@ ASSUMPTIONS ASSUME(gBattleMoves[MOVE_EMBER].type == TYPE_FIRE); ASSUME(gBattleMoves[MOVE_WATER_GUN].type == TYPE_WATER); } - + SINGLE_BATTLE_TEST("Rain multiplies the power of Fire-type moves by 0.5x", s16 damage) { u32 setupMove; @@ -26,7 +26,7 @@ SINGLE_BATTLE_TEST("Rain multiplies the power of Fire-type moves by 0.5x", s16 d EXPECT_MUL_EQ(results[0].damage, Q_4_12(0.5), results[1].damage); } } - + SINGLE_BATTLE_TEST("Rain multiplies the power of Water-type moves by 1.5x", s16 damage) { u32 setupMove; diff --git a/test/battle/weather/sunlight.c b/test/battle/weather/sunlight.c index 9d471332ad..51b18dd076 100644 --- a/test/battle/weather/sunlight.c +++ b/test/battle/weather/sunlight.c @@ -7,7 +7,7 @@ ASSUMPTIONS ASSUME(gBattleMoves[MOVE_EMBER].type == TYPE_FIRE); ASSUME(gBattleMoves[MOVE_WATER_GUN].type == TYPE_WATER); } - + SINGLE_BATTLE_TEST("Sunlight multiplies the power of Fire-type moves by 1.5x", s16 damage) { u32 setupMove; @@ -26,7 +26,7 @@ SINGLE_BATTLE_TEST("Sunlight multiplies the power of Fire-type moves by 1.5x", s EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.5), results[1].damage); } } - + SINGLE_BATTLE_TEST("Sunlight multiplies the power of Water-type moves by 0.5x", s16 damage) { u32 setupMove; diff --git a/test/dynamax.c b/test/dynamax.c index 0b04065bf2..f37e3defd6 100644 --- a/test/dynamax.c +++ b/test/dynamax.c @@ -19,7 +19,7 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Dynamax increases HP and max HP by 1.5x", u16 hp) } MESSAGE("Foe Wobbuffet used Celebrate!"); } THEN { - results[i].hp = player->hp; + results[i].hp = player->hp; } FINALLY { EXPECT_MUL_EQ(results[0].hp, Q_4_12(1.5), results[1].hp); } @@ -49,7 +49,7 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Dynamax expires after three turns", u16 hp) if (dynamax) // Expect to have visual reversion at the end. ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player); } THEN { - results[i].hp = player->hp; + results[i].hp = player->hp; } FINALLY { EXPECT_EQ(results[0].hp, results[1].hp); } @@ -250,7 +250,7 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon can be encored immediately after TURN { MOVE(player, MOVE_ARM_THRUST, dynamax: TRUE); } TURN { MOVE(player, MOVE_ARM_THRUST); } TURN { MOVE(player, MOVE_ARM_THRUST); } - TURN { MOVE(opponent, MOVE_ENCORE); MOVE(player, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_ENCORE); MOVE(player, MOVE_TACKLE); } } SCENE { MESSAGE("Wobbuffet used Max Knuckle!"); MESSAGE("Wobbuffet used Max Knuckle!"); @@ -322,7 +322,7 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon are not immune to Knock Off") MESSAGE("Wobbuffet used Max Strike!"); MESSAGE("Foe Wobbuffet used Knock Off!"); MESSAGE("Foe Wobbuffet knocked off Wobbuffet's Potion!"); - } THEN { + } THEN { EXPECT_EQ(player->item, ITEM_NONE); } } @@ -1216,7 +1216,7 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Wildfire sets a field effect that damages no MESSAGE("Foe Wynaut is burning up within G-Max Wildfire's flames!"); HP_BAR(opponentRight); // turn 5 - NONE_OF { + NONE_OF { HP_BAR(opponentRight); MESSAGE("Foe Wynaut is burning up within G-Max Wildfire's flames!"); } @@ -1387,7 +1387,7 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Depletion takes away 2 PP from the target's PLAYER(SPECIES_DURALUDON); PLAYER(SPECIES_WYNAUT); // Dynamax behaves weird with test turn order because stats are recalculated. - OPPONENT(SPECIES_SABLEYE) { Ability(ABILITY_PRANKSTER); } + OPPONENT(SPECIES_SABLEYE) { Ability(ABILITY_PRANKSTER); } OPPONENT(SPECIES_WYNAUT); } WHEN { TURN { MOVE(playerLeft, MOVE_DRAGON_CLAW, target: opponentLeft, dynamax: TRUE); } diff --git a/test/test_runner_battle.c b/test/test_runner_battle.c index 53a1c8d7c5..4823e3f17b 100644 --- a/test/test_runner_battle.c +++ b/test/test_runner_battle.c @@ -1980,7 +1980,7 @@ void MoveGetIdAndSlot(s32 battlerId, struct MoveContext *ctx, u32 *moveId, u32 * if (ctx->explicitUltraBurst && ctx->ultraBurst) *moveSlot |= RET_ULTRA_BURST; - + if (ctx->explicitDynamax && ctx->dynamax) *moveSlot |= RET_DYNAMAX; } From f2fddf4ee1e722236f202881dddcd77e781a654c Mon Sep 17 00:00:00 2001 From: Alex <93446519+AlexOn1ine@users.noreply.github.com> Date: Sat, 28 Oct 2023 00:14:45 +0200 Subject: [PATCH 156/162] Syrup Bomb move and special speed drop anim, Credits to Dat.H A (#3474) --- data/battle_anim_scripts.s | 109 +++++++++++++- data/battle_scripts_1.s | 5 +- .../battle_anims/sprites/syrup_bomb_blob.png | Bin 0 -> 11263 bytes .../battle_anims/sprites/syrup_bomb_shell.png | Bin 0 -> 12958 bytes .../battle_anims/sprites/syrup_bomb_splat.png | Bin 0 -> 5896 bytes graphics/battle_anims/sprites/syrup_red.pal | 19 +++ .../battle_anims/sprites/syrup_yellow.pal | 19 +++ include/battle.h | 1 + include/constants/battle_anim.h | 8 +- include/graphics.h | 5 + src/battle_anim_new.c | 19 +++ src/battle_anim_poison.c | 141 ++++++++++++++++++ src/data/battle_anim.h | 12 ++ src/graphics.c | 6 + test/battle/move_effect/syrup_bomb.c | 25 ++-- 15 files changed, 354 insertions(+), 15 deletions(-) create mode 100644 graphics/battle_anims/sprites/syrup_bomb_blob.png create mode 100644 graphics/battle_anims/sprites/syrup_bomb_shell.png create mode 100644 graphics/battle_anims/sprites/syrup_bomb_splat.png create mode 100644 graphics/battle_anims/sprites/syrup_red.pal create mode 100644 graphics/battle_anims/sprites/syrup_yellow.pal diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index 07c1970153..4943e887f2 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -1009,6 +1009,7 @@ gBattleAnims_General:: .4byte General_SaltCureDamage @ B_ANIM_SALT_CURE_DAMAGE .4byte General_DynamaxGrowth @ B_ANIM_DYNAMAX_GROWTH .4byte General_SetWeather @ B_ANIM_MAX_SET_WEATHER + .4byte General_SyrupBombSpeedDrop @ B_ANIM_SYRUP_BOMB_SPEED_DROP .align 2 gBattleAnims_Special:: @@ -16524,6 +16525,113 @@ Move_DOUBLE_SHOCK:: blendoff end +Move_SYRUP_BOMB:: + createvisualtask AnimTask_SyrupBomb, 0x5 + jumpargeq 0x0, FALSE, Move_SYRUP_BOMB_RED + jumpargeq 0x0, TRUE, Move_SYRUP_BOMB_YELLOW + +@ Credits to Dat.H A +Move_SYRUP_BOMB_RED: + loadspritegfx ANIM_TAG_SYRUP_BLOB_RED + loadspritegfx ANIM_TAG_SYRUP_SPLAT_RED + loadspritegfx ANIM_TAG_SYRUP_SHELL_RED + call SyrupBombProjectileRed + call SyrupBombProjectileRed + call SyrupBombProjectileRed + call SyrupBombProjectileRed + call SyrupBombProjectileRed + call SyrupBombProjectileRed + call SyrupBombProjectileRed + call SyrupBombProjectileRed + call SyrupBombProjectileRed + call SyrupBombProjectileRed + createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 3, 0, 15, 1 + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_TARGET, 1, 2, 0, 12, RGB(20, 3, 3) + createsprite gSyrupBombRedHitParticleSpriteTemplate, ANIM_TARGET, 2, 42, 27, 20 + createsprite gSyrupBombRedHitParticleSpriteTemplate, ANIM_TARGET, 2, -27, 44, 20 + createsprite gSyrupBombRedHitParticleSpriteTemplate, ANIM_TARGET, 2, 39, -28, 20 + createsprite gSyrupBombRedHitParticleSpriteTemplate, ANIM_TARGET, 2, -42, -42, 20 + playsewithpan SE_M_DIG, SOUND_PAN_TARGET + delay 5 + createsprite gSyrupBombRedShellSpriteTemplate, ANIM_TARGET, 1, ANIM_TARGET, 100 + createsprite gSyrupBombRedHitParticleSpriteTemplate, ANIM_TARGET, 2, 0, 40, 20 + createsprite gSyrupBombRedHitParticleSpriteTemplate, ANIM_TARGET, 2, -8, -44, 20 + createsprite gSyrupBombRedHitParticleSpriteTemplate, ANIM_TARGET, 2, -46, -28, 20 + createsprite gSyrupBombRedHitParticleSpriteTemplate, ANIM_TARGET, 2, 46, 9, 20 + playsewithpan SE_M_DIG, SOUND_PAN_TARGET + delay 5 + waitsound + waitforvisualfinish + end +SyrupBombProjectileRed: + playsewithpan SE_M_BUBBLE3, SOUND_PAN_ATTACKER + createsprite gSyrupRedProjectileSpriteTemplate, ANIM_TARGET, 2, 20, 0, 40, 0 + delay 3 + return + +Move_SYRUP_BOMB_YELLOW: + loadspritegfx ANIM_TAG_SYRUP_BLOB_YELLOW + loadspritegfx ANIM_TAG_SYRUP_SPLAT_YELLOW + loadspritegfx ANIM_TAG_SYRUP_SHELL_YELLOW + call SyrupBombProjectileYellow + call SyrupBombProjectileYellow + call SyrupBombProjectileYellow + call SyrupBombProjectileYellow + call SyrupBombProjectileYellow + call SyrupBombProjectileYellow + call SyrupBombProjectileYellow + call SyrupBombProjectileYellow + call SyrupBombProjectileYellow + call SyrupBombProjectileYellow + createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 3, 0, 15, 1 + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_TARGET, 1, 2, 0, 12, RGB(23, 13, 1) + createsprite gSyrupBombYellowHitParticleSpriteTemplate, ANIM_TARGET, 2, 42, 27, 20 + createsprite gSyrupBombYellowHitParticleSpriteTemplate, ANIM_TARGET, 2, -27, 44, 20 + createsprite gSyrupBombYellowHitParticleSpriteTemplate, ANIM_TARGET, 2, 39, -28, 20 + createsprite gSyrupBombYellowHitParticleSpriteTemplate, ANIM_TARGET, 2, -42, -42, 20 + playsewithpan SE_M_DIG, SOUND_PAN_TARGET + delay 5 + createsprite gSyrupBombYellowShellSpriteTemplate, ANIM_TARGET, 1, ANIM_TARGET, 100 + createsprite gSyrupBombYellowHitParticleSpriteTemplate, ANIM_TARGET, 2, 0, 40, 20 + createsprite gSyrupBombYellowHitParticleSpriteTemplate, ANIM_TARGET, 2, -8, -44, 20 + createsprite gSyrupBombYellowHitParticleSpriteTemplate, ANIM_TARGET, 2, -46, -28, 20 + createsprite gSyrupBombYellowHitParticleSpriteTemplate, ANIM_TARGET, 2, 46, 9, 20 + playsewithpan SE_M_DIG, SOUND_PAN_TARGET + delay 5 + waitsound + waitforvisualfinish + end +SyrupBombProjectileYellow: + playsewithpan SE_M_BUBBLE3, SOUND_PAN_ATTACKER + createsprite gSyrupYellowProjectileSpriteTemplate, ANIM_TARGET, 2, 20, 0, 40, 0 + delay 3 + return + +General_SyrupBombSpeedDrop:: + createvisualtask AnimTask_StickySyrup, 0x5 + jumpargeq 0x0, FALSE, SyrupBombSpeedDropRed + jumpargeq 0x0, TRUE, SyrupBombSpeedDropYellow + +SyrupBombSpeedDropRed: + loadspritegfx ANIM_TAG_SYRUP_BLOB_RED + loadspritegfx ANIM_TAG_SYRUP_SHELL_RED + loopsewithpan SE_M_TOXIC, SOUND_PAN_TARGET, 13, 6 + createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 3, 0, 15, 1 + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_TARGET, 1, 2, 0, 12, RGB(20, 3, 3) + createsprite gSyrupBombRedShellBSpriteTemplate, ANIM_TARGET, 1, ANIM_TARGET, 60 + waitforvisualfinish + end + +SyrupBombSpeedDropYellow: + loadspritegfx ANIM_TAG_SYRUP_BLOB_YELLOW + loadspritegfx ANIM_TAG_SYRUP_SHELL_YELLOW + loopsewithpan SE_M_TOXIC, SOUND_PAN_TARGET, 13, 6 + createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 3, 0, 15, 1 + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_TARGET, 1, 2, 0, 12, RGB(23, 13, 1) + createsprite gSyrupBombYellowShellBSpriteTemplate, ANIM_TARGET, 1, ANIM_TARGET, 60 + waitforvisualfinish + end + Move_TERA_BLAST:: Move_AXE_KICK:: Move_LAST_RESPECTS:: @@ -16572,7 +16680,6 @@ Move_PSYBLADE:: Move_HYDRO_STEAM:: Move_BLOOD_MOON:: Move_MATCHA_GOTCHA:: -Move_SYRUP_BOMB:: Move_IVY_CUDGEL:: end @to do diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 01688c0dce..5cc9bdf419 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -454,7 +454,8 @@ BattleScript_SyrupBombActivates:: return BattleScript_SyrupBombEndTurn:: - playstatchangeanimation BS_ATTACKER, BIT_SPEED, STAT_CHANGE_NEGATIVE + flushtextbox + playanimation BS_ATTACKER, B_ANIM_SYRUP_BOMB_SPEED_DROP setstatchanger STAT_SPEED, 1, TRUE statbuffchange STAT_CHANGE_ALLOW_PTR | STAT_CHANGE_NOT_PROTECT_AFFECTED, BattleScript_SyrupBombTurnDmgEnd printfromtable gStatDownStringIds @@ -7344,7 +7345,7 @@ BattleScript_StealthRockFree:: printstring STRINGID_PKMNBLEWAWAYSTEALTHROCK waitmessage B_WAIT_TIME_LONG return - + BattleScript_SteelsurgeFree:: printstring STRINGID_PKMNBLEWAWAYSHARPSTEEL waitmessage B_WAIT_TIME_LONG diff --git a/graphics/battle_anims/sprites/syrup_bomb_blob.png b/graphics/battle_anims/sprites/syrup_bomb_blob.png new file mode 100644 index 0000000000000000000000000000000000000000..b04b3617561eb91d7d949fb2bd6740b4b262708d GIT binary patch literal 11263 zcmeHsXIK;47Ix@8^deG1712NlNeDgkA{~^DBoIjGy{lB|Rhn2R(gi_^(t8)_pi)Eu zks^vn6@f2!&b{}X=evLI^L_W zX2)tlJRD^SbcyuK`?M)riaFT4Z@4xHdtiSZdWE@Rl>@YJlzgZC>*Ap)=E{hdYf;wH zk>f%TR}1d+hkILY=iKqpt>rs5zdYxQaurp9>#q+`$&1U;%PqjggOlKU+uo<6QMVWH z+oETu-5iU{KSq~-1b4nY{jR*oSh(F-ySPXnBA&kFueu-D-X3m>elwA*j_hy60= zl|I{SI@;T?ByX>o89Ja}AFcbjvw6@i$FoC-`!wbD!ll!_5!aKZAH4nFXg^iud)(1I zXl-7Q!aGP*FvRaXni@5Ee`VxB+|seh$EQD+N@x3MZuz$5@ZL5wo)edG-D!%}OmeTT z?xvJ_cn}=b%K(0CcEr8xCD9s@D7e><7T3AU>Q+%!qKogTv!OGOYwu%v?|R(4K>gbN zv;T)Fjs_0wUi+EXor9j>>1%w4`?1W}&W3`fdxnRopL_9>1DXwsd8_Ona;xtADrpgh zX5Y-d$jo)SX;jDo*dBkSRrQkI@UK&!TcyXrM9Mvtk`Yv~w1-Saz$nIP4rfZzn$*0` zF}oV%AZkF`jr;<*NZD%*`1Q4;Q$R@{mtwTiw0#l+T$c9WG5H|$)s%j{I$h$!nokd} zJ!|~*SVK$gk*PK~{Ij8PeU5WkJ;F4Y8w_`D%(!9c+?vP}Ox)&Oq9453n%t>NVagK{ zL=A-5RzHhGF1MwvaK&k)|E3P%i4eLRx&fN$mh$7v7Y?auB2Fz z-(>v*_r~c3zhmz98n!mqdCz4NN5_t1q9RnwILP;FXm1XP`TD>B>tFr(Rh)r#v(G0?ldwWasWdG(>uft2LI zXyCD_`5Y#854w+6A)CI`qq zp4gGCT|uz(nZCU*70O--M*ZNrsR4}8`~;PD7jm>k>&rZt>?)XSu#eiNe_ojov>$?e zP+OCTI9Tv~XfyFnDhVD$wQDh&fP>byEZ3ka1)I}j%kumbvEiYYeonYWbs8;XT3UqU zS~)lA$bm7)Rlk=HyD61QN$h)d=(cA2UAHXUL6PJg(nb4#i-les4JBq24=(`UHLUEa z`#Zed9BKOboy3d#$upC$q9xXlT#tld`JZ{uN;#LPpFdzl(YS2TVA|ouTl~)_7#=*r zU#t2_RljIyI@L^b)sU7U16!kQGV@$7L-nb^_G;g7f)oTQsXHx-g&hna4lE>#n5pL( zW8Yqw`!b*Qa)GHV!sgkVNRjAygewT-=^D_KSO3n4W93R2?awPDbH0gPv~C4f;%azR zG(3E~D;t~?c;o&j(pN+h)NGNN0%w7boHj3K-L7;CS6Z0#Eq4x>q8*@gjjGFtd;U|; z`;(2kZZEgPI$C~uY)g7nmo>F)mfu%TaqIb4Dq7DM%64~+y@2UcIWKQeNBdpG^HK=E z_7gQ2>mbXWDBvznqN>xwg)@iioL0I!)unNN5LtM)K`RyQU74`eR~He^nL?(r3lH}4 zD3RIwY9u8!5^K~fnHYljc#&vjdk**fowAneq+HDS?bMMs6ODmetxAzKVL*o09J(dR z)Rm005@Of78Dz^7nwIQyGNGDS&4e@x;Nw(4DB~#L(qWeV7H-|BL8rwpB(^6;qPKRY z2p0h(VZZW9BpjH~QqU|p!>kFWnv0g*iYn8*!aBmP>uqFc~{DU|Ws(D7txu+7#NG9$bNE&xoMcrp9kFzDI5+bJAOsEk~ zt-S0TH@D~)I+IeyrfDCo`}mtKo*9H*a3%Y2F}98Njjl)SXPJHTZU^W1+M??~D*z2- zeUxg2G8=fo95TA^x3PVBF-Q{GeBv8Dsw}cr+eoePhOcvSjG9FQq6uJ<3FO&jxUTzj zQCWE^CSra%EjZ7ms@eO&K` z39MqgXzbL%%rn96@hN9w4bekpUZHU@4GFP&DPoxhM)TT(5*p^9Di_f!q|R=wxLM&=({`H+Mzz30V6A z$f-9~T9v9&tvXwGlO}ZF1aM=U=naxA{o&)n>02nP3O3zNgJr&LZbEh= zU%zT>Il(v^;2%aMLcW2rO%`MvH?5-_0@-er4avE)-$3#&4)J~NKs@8uNdb36(NfRg zJcPM!MOWK##)VZpE7`zl4BQTii>86UbWJb?cq@l7G%5XLeea;0AMu8{z(~blf+Xcp zB!vv7_#&v_UN&fI!n!d}r1oJd10wh5qb1hS4(CELMkhlKdbO`FM6T0)aUw#y;Sj4t zot6hcp%??=dCcOcVxp&>hAC2jO&I+)@L3%Y8PFHbZCkP&Y>sb*)mcGp z&K^T+4Yf5PH5c%`5Gg6hX%pWBVH~VPH7E}7oGREj)_s9;KgqJXAJ~o~%KnzT@os@s z4%S7KpBg6!o_`#}E|%z(ttq6vDP}5M^+Gq!ry|2i9KOX!R~Flb+R?s^-p)4of>U&I z%l$=7zxQ-HTsJH63vTp5d9G_hlED+Vg1iP+bs3~{_w3C+K6FWd=Kx?AeHP*IkrVU@ z?)b~(_2*-Y$D{eeYYz6LJ~DXicG_WVj{Z}F{m9h`&@TWn8eRP0!K>wI?PPc}5-uI)s@R0YjOb#qFX0lPMhb<8#%$2iMH7VWM8 z&Ofo)Oz9Qem`(93a`XVK`+c$Tz7!MpfuH(rnq+n8Y+)lq_%*3_U8l5KQ4qm|`10t- zq@G3-drZ>XukzIzyBvHcE{If7W{+ipPK&5M3c{ckVxYLR*z3Aj zn!GMg_C2rl6<-Nr9hShYZE9)n=q5?!WwDf_YXi1IsWIQ^nv|xAdVvjs60&COUwgvC z)G~v7PR9z_xwYOW+~~5ZYj%4B77v$7%Ic+m4SKK_5O@kK*#&>Ak!yR zo(h_EBAyAix*%X;1Hs6?B2NRIG~wnH6crtPcs#X!rxiD^=uSYu_bF7mt%i{-W9xp? z9rpm%%d-=z8%M`IU+)KW=u*^)+J)U>a7-rWf#22=kI>+@DORMmXu1ahFddc=e&&i( znSZ{0#q-`<0ri6jRK_F)i`D&Z$kYMC7fr>(iXRpk0i4-qxxyr-l2fEoA|CbGcc&+( zjVl1>2kP(&!j7T~p?f04xsex+t$gfS=J+VqK?lhe_f#XoX}6|1OScqWYxbb(8`fV? zWqc#H>P$RHD^-hK^6+EU*BBt-3E#i=SeZ$PX`}NHJ4-)>TMDL4xzkR>Qne~LG(k#B zro-nYJ8p1C69E+asY+q=~+QtG`^0ogNcM~ znrMS)KuyNp7w+sh?&yF^Lk2vXu-y>~dLUAFCN%r2VcT8Qv-GoA%-sBG+oPhYl>Vt- zu1+|YS4EHbBJIX%XX-yWS098@Qc5cu8(#I&yX@r{uD5O&auoXI8A*2x?q^Y+OlX0T zbgZIbO|{Ja#hWpPO1W@qkMMqu4#|8OC^eN^9g`3lcjafCNX6-Rl9U(!i`OKT*>)^Q ze{OA_3QcIKXU$6R8wAmEvEdew0uq|Taw(l^4A3Mr0k(>p$`ikHKPJp~Sr8xR>t*z< zgmO-OP0^lS8Q~Vq$j2K}SbFSj#t1x8*N^%mSw6uPG(1d*`$$-8Nz;X1YwEM(( zr_Pz^h59=j*O%jk=JwVL#R(;uLmIOAQ+2yh9Q0dD_@CKpi=Ty}Yl$&EE#EznR3fa= zck1|6OO^mW8C^oLr(}u@6c#}npQ?6lV@6;5($O9aLzqlvA^X_^+l!#gBKW(NFsCnk^mtP8caApnH&ujD-L_gO+if~HCN@(Z0laWs40G@=v55prLf^N=-0t+rE zW4C7)Dd()ERcU#W-q?m-kO5ev#4|ztNjobsA`;D_lliVY+#gEPvmM3q<(|;Yr*TaZYn7i#U;3&^MDVS6_l2$<8xJ~un6S?5K;NOPjy>` zv(SKvT-@kpEW+#hT5)$p*`*xQTdGz}Yt1QXCMoHX!%U--7prfkM3RjhY=3=(cXTF3Ob!|^^*ujswX|wEl@QEOB${s{ zbqXF#&t{v>A+;P=X67biiHFxiMM>CIj2Y^q@8X2HPNdOBOsH9qep?JGJc*1%gjrpH zspL}KjqLgQPtj4J4Eb;ARTA$goPIRp0K~0Ly^9N*q|$GlNW*46jL1g4$OM{pl(GwgIc@o~ z#Dl(qGtr)+a0;U7paOjEFy9i6pw%c{Uteqmy*nf4G?0Bpi7G3@$1}0Hs#lRc>Fr943@>*NN+Ot6Z6%7gnOW3?HD=LXrjnICa}xzi$je-9)yhO! z$GuBetX(UoP%so#dz8346mIO$rpcR4ACW>Kx)2=!>(wfMaS=y(-K5$XZFcdQ7C$jH z#l3M!28mlGbOQJboB=jlsY|w5nE@S4!<((yz*RMK#?jDn+H%Sg`3oiwX4ph3OAO!i zXfiWfA=wf=lrK_L$XZ@hFrfON@9cN?{ZAL6yV?iA1|)+Jv@ewQk^j4hGNA&)`e#zU z@a?Vr$_)Nd9c|;Ekk66483s6Y?+rJn)+aA)O0Hq9RvhNiZ7;rQpM-`d*a+9T=aPIg z-Hal}Yj{dI0cx*1FuxVBJ*=i>>kYM&$MjBi_)s8ihR83c+;{J{e6R>B(O}rTSUI8- zTq3@GrK60^&xBL*N_@se{23T2$H!uLb|^4@d&c*s43(si9{e!Gn_)T|YXd(@Jga=G zqx!+i+Ooyn)5H=HmPArq&EbtQw>?!8{D3QN`SR{oM7Oc1vKxI7lp-pOSS67QEIl5v zCL{>*h|6r`m`$&f^pMlMVPlT!2VJ}a=U^QonG{*ry)iSMlFeqD<)z9!aYDvtpunqA zX$lVipq@*ieA4zQuP7)|pzyn2%c%Fk2hy_JS!DUp7ljm>Y%mIwbWb{Xo8jhgz2VGC zYKYTifNFD%4Gol{%|Jbg>O=Jt{)(V0^~=w?-_A02l^IGYTKF?g?t|;~2jKz2&Sj1i zA?-Kx$d@Wn^MxclHHTJ>VFLBW^DvXXZQzy(pFLY!jA(jKEQ^9|q@g>*$^`Hiu{Uz6 zJb?rrsxq)+0Ff(fuhTRx&)*Y^jBzN|jE_^7yYkw9em6*)tP0h4=<>3Bt3V8|wP~Ca zoIhI+)#kdDh!iNd7;%1Lixm>)FSsgI*ArK_kixZ5TJWLI@WAN}Rab^AiDd!i!TTUg z?@ggK-nnb_=yxL~2gWYZWhB6WEh^rt>zwoA+o5(=Op)=7G&Q}4b;uKS1x+`RzR*RP zNiW!t!rg;{V{+caS;gy;)Mke7Opj+?a{|-bo{-k7^k0$~pIxt_bGMQ-pc!?dBO71M zl}0zs!UtzPEikF?>&L?)`b-7P=*^YjydjNI6rllStZ5OKdaK=E2y z3JbW-I$~YP^ByvkSLgqzRz3bg?psO6FKo+&VQ(ri&nQOEnkP?ccxlc-G^KEoyiic^_rYBCe!8A-Ha zqT!xxh_Ga6-tB z*4uiYD^K$h2Zh$UQ(6uwOV(_usp*e2p8#g(tt~Z~#4XHTY3QSUohb5;xkaQS0+@Gu zE=JTkG75Z*2*S0%uc~Y`hzj8&d z#3@dZF;#Z$QU4$#vSS_(C$;gzEjIGX_L#Zc+M2sp;IC~u`k?ZOWEyi zOEmvc(1f(%sxq4dcbLk`^=Z!IM;Z7wwV9OsEXi0jVbhzoULARb5IBMzj zcsJ*MpP6BNy4w3mu#>%WV7kp$7T^xvi441Op|+|2*0F;oeL0f>Lyt;^#=cSThX>;V z_jQ9cK!K@kS)|=>f_lD93{fcPBy>a@ZdKDNj@u1iR8#-unJJpHHC;OD@bT;8Q(Lhr zfsc<=H~_LEksl$V);lpz3SbGBS`+2enmQC8v=a?>>!PIij1-K>qauVuvKAW0$Td82 zhUU`d&EzY(J6O7cP-g*8HLg6Q<}M2ko2#_>(W85u%&j_PxBQ|fRFacD*d3jWO#h{fZAf}WxX6P!v&-4jyhW+evUd>&e z;Z>r{LLtmmvt2Vz3L0$UCx^6oI^G@75HS7BbUa7H$5zEO7 z4S_j6>u3P(Sya%D=ymL=vADY*H41KjeTX^YvW@ht% zxD0*R#s(LJ#jUD^Y@%FV`s$_hxE-#$T**OJH>~MMdP@+yK9F9({MsNBT>3k4DpP^^ejxwg9;tT1dwgRvm9Be1ZuKYq4af2!t7p{2kRERpGX;p7W~D%ewJjYSH^&D^^~s7E6qKd|;vdhfA@K50Z z^Njj8?5QKY2G*pnUg=-u=qoWBDE+QAds8QqbAAM-c+F_Ke6l;s>9|@smek9l+WZ!3C$5WIX(EtEMk$4pq11%Mm zf0V`u!#uo|DzDj%;_AI=tah2zP*&4(z~Ireq;Z!f2PSw~EGgW% zvopE3JR-jK8Sq&+=#Xe>W2tbBU+7f)a$U^#4-LHEzRG`nPo(^$%cRzs*Z}@Yv)2xT zcqzKy!XFAEhs0F(=*Xwq40m{kEOht3X%-pXQ8@U#X1pUz62kwTYmzQLAR@qFazgqW zbF`V3QOsy;KV1{(yTBW4)*_Ofn=Qa$V4!d{R;35?JmM43K}bdDv2c<|x%!dv3^wWq zn`6C^U1jhNJNb`U?VL@R217p+lcsWH0_RX^hjRLjL>A`Dv&n&n-ARgCV)w1E5U;Cw z)U0XC6lW2O3pr6`T2hxeNSbcC9NV$1y(7!(~-&-6bZvmiF(>rt?9+U~J zmxC9U7g`^+o&*<9FVdrRyz=0eC+s zzXCN#&dc6G#zEa7)0FFRs63W-acx61du-i`nMk5CWMNwxDnRd-Pg+wtLBGw^AY$fguUHA{XKlW zTz;oxZzqm*!MYMmy$PdA{B1}LEnS0udYn_>hv@{ro zl#&EXOF&^@1VY-u-X7|JfxzH@fzbED6I6+I`D;|?Q1%2U2RICll|&%GXbc7chC$#+ zFj^7;14AU>7`Ourg2lq5e?!^Z$*8+~xuOZviFZXiV#Ph&9DjG56E341MB5Y(Be6& z1Vl{o59ITSks+i*pcZ|uR06;rhsePHnVy{Z`I7aI$&?fSzoz>S zgTJhC1X})RBdnc-rC9u*Yw@3aoh#(Oxcw=!|KbP)=>HA!AMyJ?y8cJkf5gClWc)vM z{g1Byh=Kpe_jU8TGcDF0LLOo)yl(##1XGmQt-Gs#PZ4&hebXVwBl9MJK5X+Ct9#hZMGXnx5)2W!v!o13iEVz5oCK literal 0 HcmV?d00001 diff --git a/graphics/battle_anims/sprites/syrup_bomb_shell.png b/graphics/battle_anims/sprites/syrup_bomb_shell.png new file mode 100644 index 0000000000000000000000000000000000000000..de592c54e6d6f0127efe635e7aec188c2ac091de GIT binary patch literal 12958 zcmeHsWmH_v((d5y?l8CyFt|HIGB^acVQ>rX5FCO-AP`7^U?FI5f(8g4oZt|GLm)tK zyOX@{`OZ1(et*td_x?M3?OD5bchyr}PgVEoJr$>=p^Ar1jST<*@E~eRI*6wn0DuHQ zMM1QV?OlWc0IG)oJwq=YD_=%;4>wx}XE>vmzdM`}?&n|&0QfCb<``wNh^E0GYU9n3 zx2(hok=!+Ybp`xkdNPeSi|k3#)rZ$q-Lj4q8r?yNT75SXrPdtYA#-|=-kbA@Xh|sx#uUThmgWIWEsEqhmLQ9*0z;cA1Ze2H1F#QJGL%|XOkXG zTkhM0AI?H~nJ;Fi%7UuJlO`yt?UK9+$KFQCjO|Nm-;j;3y4@b%FvQr-X1GCEPuery z=#$@B49(uGUeJnxUUc(^-ZF(gOD;-dt(iRYET9X;I326K@|?Z@(HZ)oazJ_IPM_r4 zk==c%_vyultGtH!(0i@>oY}e1hufy3()0ef`%A^E;Jn*yZq0|_&Ca$rc6*`t%9oz4 ztCFX|uWTtk`dCkdik$TubUdN8i(kKZ_vLG>v{pkp#kFzJX!BcLU3Q5)+ctB~^zT`Y z5)P$VhZj@nb-g)m^tU7PihQfD(pf4Gl>4;KUYOIvU+A($eY3!uNeiuJ4bC!K-IN;j zQ;>>N^jx=@9)Gy!zMVo@)#WcH-L4j!;qScSwpf7{S;&edbQWEZOrN7&CRcYp=$hl$ zIa<7Ar&*f#RIO|H=z**1gtgV(^80pm{NwMpxnX_oyPvIfm{4jDR*1! z^3s=i+q1*8r7vC`_(8kBuyWsHM>QA(FmFDMJ#WoT5?zkFP=_6aNKO_m*mygPhP+SI z@4EM0H!tvOd)3~1w%eE>8s~;%L%XtU5AzqdTXpRn^~MFK zTfC>&{;>*Q+&yJk17)+m43?&qE=irqaK804KLRXzV4-}HF4rs!>fc?IATy;_UOY7A ztgZ2P5~Nkh>J*p@R^VmVE$KZJF0#)$f13Gu#kStpQZCK^w8(<%#L8XegRU4(Tc=GEZV-X>cS(%sGoL zO0P`7@m$z(!M@L!sBpG)k(+fwOGG!Y=1>?}a3BUH?C21uFlEDxsB9B0J}vPX-BYrZ zaK4>iufml_=|0vBG+(6T?z&0}*Er?jX4Jfunj=*@v&D;-FE`(_)SsrBuURT1S+}}L zaT08DWi8d$pB9}HPD{Ke7d{*|thgY`BxoH1f+qOh8J~^|OX8F3;ouoeZioR2IVIdh z%S)P6W|Q@{gye?!1*o}8QSg;Pdhm_UD;~T_e_k(+i)Ld_N%Qo&=V@=v(74ciDIOv;YqiPG(-%m&a6C~%d?b~ znK)eB?tQTnjDKJm`9_AiOc6-y219AiVeChuqNvpE4%L(J-v{c4rOIO{Am7`%^MyE+3JC-~pxGIt@Xs*bTmH3uM9 zwN}${h?F^s5R$=ByR;H+=j*c}Sjk3!cakP`clw+u$jr~oIAyC|%6W!Q^Z+l4NCXRV zyZZ8+g!mO($?usX_HGPpHPWZ+X6R-(G+bgAep1#yJ;MUA#lRG9{in(v$m6 z+SXNGy|9^E6;EGr+a1JxHT)v1`~dkO;_HpGE~RdP`VgyBM}6TUw|4;0JH6YAxAh&D z$Xc!a2ag236$7{CFquzU@$ULDR69PmCp0o?W6+N-Iks*Z1mD@yS{s|Y_rkxjk$sq; zf-9zwd}~IleXsZOb~5@W&S<@!xjSnfk|=+?@+0foUci@PpJ%KRoEDg@YH&a@#_lSA z0wczWoT7xi|3Zzx%mH17Ytyq0x?>b_!|h)*t;GxrR{BUX7{=&xAHvj(k%Obl)DI>J z>52kT^gD)VPA88nd3H4Gi(j9!*y(cTd<*8##ncq6LN!saiYx%*$AoGbE+)V5?f*hJ zq1b&a&i8XK>4q>UlYqYO9eM8x%zo~xoZYRUkXKi01#%KyatV2urpK>!VihJZCaPR8 ztB@8mCYsnNa5OFq`HI>G)v*9#sb!4yv_HE0Y#kF+K!pa5LV>G(`SM(ph-h%AD{aQ# z^B`FM$-tu#_X|m?>bynce^J3HP>7-0<#)b(bltdFo_J05wDYo*x3HUk%S)x&;~d&y#drE;J+ ze-%8Evq=q<9VR#wSKT zgxO#wQi1$@W@Z8-Y=^0sCyX{lNZ)eLiOTU}8f&nMU7_Mh-jmx*u^pM-YT2Ji{!5ee zo>`HxdmyQ4C@U55^UkiNGxB-`WqR=_J+YOwENB-8PN@>{!HiJ&vJ^gHCTL=cBvm@N6Ne)Wo1Oy+)*+C0bCwvJWAou0;BK*-vD90aQA5^yWmeg?AJuBTC#$ zx>;DFNODBqqZ~1BR6dcU#*l%kW4obQzH+2W?O8KqetDB}%*0-59IxTF+V39m*TSAH;17t?;=`1U@X7Wak0FYD1`C6A2!a3Xz<*4t-DN%FIvRb2P|-OtP8@vEWw1NuEpWno!p#~56;I6U$Kw^ZR9Zzt9>i0_pZ>N4Op=Yqnk(27L+KG?Sh9(*JVs@XacE0aG5WQ( zG~S}_K&7SH1ZCuyJbB|*B1nVDbRJc#$>6tg)`eTY^vKf% z@N^}AMm0s;cH|-h1=+}fJCg2j!8THEj-t%LW29c1BIvUCOQCdxcO<7Q!D+2xndn%A zWFho}f;ylMPj!9OlTDQ-lC23bzLzVK9P(4FDFaE-k^d~HW48xjAGffu zze6gKLoMsGqo*Z1&&22c<~NZhcNU%VWz{1mvVgLv`|-h>;#RdsiecUHf-G|&sr@hl z-y9Y6Zz+8kw7N@YkctnkVbXDr-bnyhe8GCNfPMO)=0|B7dgllC3sQLo!|WJkFrVec zXSjIOxHvS5x&~-=7n8lQN-KMUF&6@^^WffP3ha(WU;30%G@sL%%SK zF6;^BzNC_o+5z3W7)_3&9uFj0EbaswqB?gsJnL1W3j)T)o=l8;+ebfzzpx63N)0Zs zw}+lf$x+Nd!6D_4c)ppl*UEhH1X&*vP86NHJU8TE>O-5moFdd$N72W+t{{Xj#wYYYWGS=;m?07NmfHJf9q4#CIUU!0$4y#s9qwf_~_U zjPA@Im6z=bVvm_r>vlvtZo0Zeh3N@)*Vj2t$ZTigY4smGJ0PD-UJ%93QZSz-d_b*a*l2^FZ;4P6`0Ml0g zsFHr+E-`6#x!YrsGMPcL2wee;H0F{U{&W=qDV7e>aCx3Rd?9OG6Ja9oH_{=`!nM)V zNVUkZ&~Mn-!MmKARRsI$QGAY6^NCwVIV!7jXU)&jpjoJRy_xRz1jG=mW4r<{a%ifh zkXOF~Z1_V48gdN`x>RLrM&(iP9Y=f>$+@qAe?3`u+or3y1ZBsdRDCR%#q2d@grcr* z;)>uIiL<3WKiB%YqoGM_(*My77F= z>2)7zyS2I!;#(hVe@xBjl=Si`dIcf#Ap-+NG@D3De4;;%B29;GmMJf(ZI)%e>k6(@QGH}q`-~yjpn~>P+^_(6FuoM5^{Q$Rg+6>G z7fac!Ok|l{aUP{Y_HnT}T+(4&_=!0sSl(j=qy=6j&fOB_CH2pT{wo#oYLS&kq07cnn`Tb(r# zcgSM3GHM*IpnKecM9$O{>Q^l-h05qfvzOg-;zU3{oKt`-M(@Tj->h-@^;;PRlT1S) z9a5?XZT?pN@|(FLqTTs8X@PP-*#0HgOK$b}-h%Cq9UX(nDDDQ(I8v?+=3N7WPbdV- z{ojm9$=-Bd;=#JjJ{VnikonY{brTh${Nmt~6HR?8^;|eb9uJKZyOUyPHjx!P1(8n4 zl5k-AK`x(=_71S903)`*q}MH>NwcKN+K-HnI5xZ_be@^8K_bNHt}zOTN&yIBP+rP6 z2k2k4g8^L}xXWf1l%BvOyZ0~DJw}^O# zbvu0Fp}wpg8la?^9)S9hU^q*tKqagu3U~TZs{Pjy!e1eDsE02pDP0{~^Pa_eqT`LK zBb#gauI*@swd+>Ifc3aUAf)eg<1u6~l4!#1nBflh;g{Uq0TEB}3S2add5_TK#$#GBy+C6* z5(V>v(L}x^q&+<7d_VdVA#gO2PL8fqaU}rT+H1#3t79}L2@l3 z;pEzgURNfAIaZ7}-9pg*ri0$X8R|0>vmXgwOUlfNdgk49YmeObbE=#5IH{k??{x`K zB8k|F%fax5!9F+iR*y?W#sUnU3u0NHp##>1YxIlyg%hUMLU(tc^eA_KyqrC~M*K*GlJ3N!F5q+orDUocIlp5OX)cqkgNe+cDb&ow9 zOeAr#Zv9j{$KgB4DG3%{j{uK0(?QjI)V+JV>yk~I67qz7dq zACFSIe3$R0i=`E=yke+#yc90t+-WC5sj-#Scu<(59{+3#21o7+4=L#F?v@vrxIQ9y zSYB5n5d6S2MKbVqzji8Bc}O$OtB3MUIk6{e_G@0TboES{AHPDlOuiqywVpf}^6u>1 z6OZ2!4nCPaQ$q?2%8=~S{OKLeK7m`C`FtJuUdtSlQM#&0sn}%(loXv2AhSVAN`uvw zQzUxTQ}!yTwYZZA7gE>JQm$!slnaS7FA9H21;(|TpqRYQ&{mXv`w`$7TPmE`Hd|ON zXiRkNis@A${`!3?k00_?>;^hRt>`nn{VkN5U;3nyg0whl@uXaOUoXVCM*8;V46~N~ zpkrb7FIPWo-*|~Sp=IOR?BsjG`UxGdOjFSnFiAjqi3E;x2Qw%bYDTCa{r70;+4oNO z=RfZPSg?dew#M_@ovNZPg){gP-Sp#WtGk6=g2n>d>OMW7ktufFV>GFkBPv4h|Fsn4 z;O+(cT?&$pAI1v<;VK?whZ9Y<#eNbi+w4k2xxwL96B`;E^I0CNDb9Fb3*UG>rF+I* zh)2-+C8BGlx9FR&tb~$gFdZDXK9Wm|d=BSKox+U&*fS7Oh>CPjRMdhfD*mJPgfNpE zoGPu>BS+h3p{vYErY))VbU-VQCpKP8o$R?~K|PtVH>l+oP7aublP@XUsk=M5uRP*; zT@`*+IO8SK`rdlc4v_VppR+#pc&(Y?=urA_1xexUC%rl+WG&%gwLX}&NE6q28!(I! z9TZ#B`&c^Fe5A`WXt}5V>qm~U6Pb(c9o-W)lpx?S?G)Z~zX(6usY&r8k{CmXPV87* zKVB>2G4oe=)~Xl<9l4+Fz(CPfoMNwaZNw(NEvq8yYqlhga+NEES$Nbbxm|+}tTOO~ z0{wJBJ!c=RO4v_Ktfml|Ks{8}rI2BeNJ_%FknDfilOzk_%Ql6BJb3c4$>O?`0Z)Y+7b}j&HWg*o~4Fg2uop`3EO~U>J z%}YqpZ@dOmXa_ZQIY`4Ugsw|yL0&khvr8++H)6p6!ReV3Ja>1@1TxOR!Df{5u(6fU zQBwIE0`VpdwDLT3GxdH@**U7J^fw1to(RgJ(+() z{Dq+e_k?*M(%HeymGL*Gm9?9Y0RaQ^ zii1T2dEqc&D*LMF9NKKzJje=mEF#a`Vu0b90sk{+<-$Z_Pgm&M5U) zSkxRm5fc8tbN=tF*M&d*>+P>a;Oy{ch>`J6;!0S-{xafe<6;eSW>bhGvH zweo<=+aWwfc!NlxKi)8M{7ok3zsvjD!+$dcLS%ygh*v;RPe4>cP)I^R5Xk?xv;4o; z^gq0n;{U(+koqI=FPi{D@2@_@=7QL(`2T0K`kSxc6#jp_{*J@{M+*q({~Gy^`28~um#+Vaf&WPOzuEQwj4tede(u0s5hoyD#K#O7%ufRGAq3KTtfx%> z05~~0dH7WM@XU2hh^>H<+LfLK4;gh}?dSh`OGSFoA#}0a)r>p=06ym5KP10mSsz3v zh8F~?jIoW42cW?942Uy9bWwRJ8+s|ax%@s~1O6QP;5LlD4qo<*zYl#+p5apf0GMeI zC3!vjl^@xXp5G;iqo}lNiz;933pCV196eqY(X9#~m4sl*m6uZyhd#WX!qce_K5}+x zY+%)!FPx4^e1dXEH1gq{Uk1h1QSf>3#tIFrRn;vg=7TfGoxN{~Q_k$mSxFc@er4_b z`@Hz7niWG&4(>WVv8icRsprTVt-)9FsZ$-YYpPsB)}8#?uUfcFpJaVJD+1|cWn|4G z9qcD^*~>+g3HkWcSX6(#ktXx-d|M3VGu1s{``EmbmM_pg4Zyfb%$a|Yc|Oeh}6aR*E2cAL8jZ2Z;;XilyNt_ZS}ohxC57)LVaUvk)V(_>osDprS|Evx@C5TVW2) zG6HE5IUUgjbV-cxfNZfJk!LN~Gg6L_$_^Xm471WuthRm*;tOsRe9%+EN8;N1ZufnO z4pZd|g!T?2Fwrlign0+qmGJ+VBM?^fpg&{NZa>m+UVn^dAGtCr}Bckm!0UfSAzKsTt`XSry{viAq` zc^gOp#D`|wSqu;gEBGNqRi@{-Ec5v1!Lxcr)URiejfN8L??`}#+2W2)t_=24IWrA{ zxWH!DLLJqkoBDlYGb3(UG;Rt`8G+)4$KJ#?I^SbB55NW$kNa3slo`3ZtW9#uL6Cf2 zpD9vGGl;oCCs@ImI%(F)Y!Zk4W+T3HX4OVEHCD=jzf{Cpgz&wh85CM+EUFwajY#M1 zXMv*MP0)oBZK}f`Z`p?By$Y{IS%iF~Nw>6Q2uF|8WY8JWVWexo`L0ltqw?vM5fe_? zE7aK$>?9jU7M*3Dmy#-2F+F=-GQ}c>N2OZ6A=+LnM1s5TAugwx-~4`j=J=6?_bEGM zx&%Gdev7>)Z!5BI>Y?gnOx0t4vCgan zWnR^7(797|bx+kkRBJtOskw$7$*V}MLhe#Hbjvo^0dK1#!0IcL6c$;b-9l19Q; zj98pN0fNencKg>;hM>(y>jon(teirxX|Ta>JkzO(G$uInO|zx#ZG+VT>u*n4F2yU_ z7RanOBytQ~c()Y!N=5nKP)^BgeaT*H%i_gV4tSW5c^n=4| zvCx{qFF*zda&m?mm>zfID)`|TxB)U5fo4nRL-G?}E`^>jHru?AH~2(kN;D~rF7pPg z)~TTjF(IIozT@UQk#&r1#$^NXk5A(8JIIB)N{O!u_zJCt}uJ4mtakR1(Vr1hoWT}^rLP9OA z#j4}BHS%B6uD_3jP(0BiZF8f>9lQzIq766lLEpG7_jfvPbjb;+$i7J?aZ4NV-&1uT z3#GNYZ`WnF!kt%tHUluy;2`zh*Pkf0pKEyA=3rp&Wm~V$unUQaM^3Xzs=)Ul6}UV2P92>w;(!0p>@vy zyi1gl!Oi5D7w(fMs11}<$LU5-Tw5=@4T5jk@5RS-6>+Y> z$Sc0f+u|SmSWv!2_M~!@Au`>3kpkXu1UVo2ct4OV@=&XcJ$j@OP+^?Q5hR_c`eC98 zN$=ce!)luktFaRBB+415s{C3+P6e0CSbWUe3*(Cv+6_*V^viDZkUS1Qdog;ERerh?XCvH)&z83~}w_EprshUh~tqnI?KEVLdgDJYTr4 zhCb0SYhv(N>ZSR!?AFAon`8|OTw6O?YPYkqc>S(*8e0G7R#ywIEFuF;Dm9nOhAS(> zoN=j59`7#~)9%m+Aik?B@>4vBBMd&=5Mm330=N)uOvLZ^HL08a`vFnbP^wa}4F5k? CsDfz# literal 0 HcmV?d00001 diff --git a/graphics/battle_anims/sprites/syrup_bomb_splat.png b/graphics/battle_anims/sprites/syrup_bomb_splat.png new file mode 100644 index 0000000000000000000000000000000000000000..ac873086a01a3ab3f7b0b01e230a879e76e248d3 GIT binary patch literal 5896 zcmeHKX;>3y*N(DjB&fImDjI{bsM!-p0?3lEgc6N_B8tmoW&(k1CIP}K0$LQ&4~w<} zT2Qcn3R*x>s-TEq-73lsLa7C$fC_ww3;Ip~tzK{cczs|0Iaek#^E~I==bZc8^UTa% z{u(z7dI1`RLSeY>953WJOS5ZhA^-htoydUB{Rp3pDlZ@mD_6*bA~B3rh09?qtQHAT zD0Op=@8%vAUdU{3QvS0kT$hS5^r z!a%fIXPQ$i-`Kh_y>Fv%s-xQy+GP5-H*1vzV zLU6*$?s?H4S<(bE-;Tgi&qjQ@5>NXn`Eo9EbH$y*+k>Xvb4)0A=q=QWSd!SN zj)|m_NCa9(b<>2lvY34* zHi3O)`nkOss3Ro?Z)Y#8$a>P~*PRj88J9!|AE~!}c4c(wKJLadh89~naUAZhcno0_ zyEMVri&cl zEvfU(%etAifX>fr>PnNn_-BiHFO&_G4gUtNwFp{Rf3bUJ?gQ7mp4oe{GIF!l zKao4J*R)pX$C|*?6K}_Ew`{5K)cd(!|B0@U<@~PEWK}KZ&I-(p*h~rJ|C5$2JpY8& zrJcLe4I{7JeOq3WH>GV!N@R8aoS=|JY#4XpXSw!z>d%EEkTWG*|F2WMe)0MRg|$SC zY#X7m+w!Gk7d=Y*fvB;pfOb4#(t9_){VwO30rC52R&Am7DZr}{Z&cH{_ z9DNds=X;i7)HBw+E^b>}()qT&f%*`=0slWJfpKf97W(LJW-LCQkX{t6gNltG*i!9q zGq(WmliSl4(>~JV;d9$CJ+;x7cp{^?<@`#wK4qWz-j?Gh=ld%!Jb0UblH_K3+UfD~ zyjlGZDqFKvl;HHG!(!tmTCiW(1*=M_zv~up)QsV^E#Z%oBiirDwgmy<-#T-4ayYyt z4Ls(>`eWy^2GMO>PULQWcQJlBcF*tgd(GFO^7fgcDQ9;$&2AHW-ELG$_TNY=@nR8< z+rBtJd=zlh`CL9XQfsU8ce8^}yN(L7R;ykR%tNnPl+2#$b#JuARJsqpB8Xm?fAH9$ zM$F>I1#g)NZ@SjTrtaIZkQh`d=WbgW7yHw5^hjlVpI`2)4k;yy&mQ}s_P$9p_t(py zZ-`CKpLj9msk?)I+2NZ3F)Jf?y(+%s*(5sX-cvr+eC6-yZs&$(7vBH<5HI}u+@(hc zJnJNZCpT+Lj?P%qi>EvGqu->=?M*t<(P^FRbYkmY;U2{q8_FJR$r)b1s-Mh|)MIWj zUUhi?kcR24C*2#$Vd$(1+{`J{n$xNkZ)Cc2*`dqAN9h&Yt~hkJ{2o=AJO4l-|57nG zr>w!(w3LZ`M5GMWS+#)FpzbB>UXE1j+g4?!@pSl47diL(qQ_=+beHCreK!;#ziPVR zAQhakEAD!>LV0Qo`{d14FSM^i&iZ4`uhWlQ{pP6)t1fe_`pK&mVT<|syK~xqsdVXx z(DgTY7sFoKRB(9r;-qru<*i@KGi1HVB4TE1YoqgHJ#}ZJ(!B7ZnAEImiN97KGPA{ST{3=_o9E0Idi*`{WspVB z3c=666_r2bM+BYj%U&#s(i5F;()!<2BN$?<15v0c2_iO|&t%OCge{5CaK8DAzxW^R9j_rLz(6M!PPIjd%OqDwW4q@7CpoyspHkchqcUSbH3fk^-8?Iw;FR9 z`@*aN{=S`IWIA6htf|TF+RMHnI3NF~fp9r{`Em0Dmiex)oa^D;L-PYlyuh=OgGRbT z%^qog(cETL8ydPhC+uJFYi@;e>W1XGbF7*VhL2VraNrV-`oko}s!a5}Lx1SKk8f{F z+nvX?u`<@WyiNQDoZHi+lNQqQZuN!!uIU{+bqk6wlsBV<4&1_vB{j2uE64czU!;f6 zENz{#=SS78|5>Si`01SpzSOFX$ zlG@{*m6hYLBFG-+OXrbzayA?&a*t5J-Vtkjz=&Xw3E>=8qwUlz1V93-0IXUfmMU3l zd)zoK3pv*e6LHva6IHN1ZX=J6Wy=&WmPVivNO%{uD3pR*jmFw3AR)_(<2ng}T-oCS zRVq1)NDK=LBZN^2GDQH9%w#f&Bnpv2!6O!UWw=xYsPR&znFeA4g99r;1tMpWOp4WD z0s>ix${vS9=CL30lgN3zkML6EBnt>1L^U8Mk_jZDL_+-3L#c8JML;GK`bQ6?5Aupc z^n#VL5CsUkgu+sl*{2W?_|ab;q7aXl1A#rMyz-|7Don#Xwu_y>~Wg-EJy~5AlCS) zkW3W<0tmtj7!Vy#qk{lmU}Md|lPNR-1r$OM%?9`ciYryB04WG-pb&6^2*IJ+KuiFp zGw}eOY>lUZ0szk-gCsmfK&6oc5J-b;=$}BWRfrH(0^(1z(m+876le`XLZ%HFPlhNE zo+hMOP!Py+l_?|u(oT^C2!M%lX~6h|hH#b>pKFh!5J-QI z@Wp^ih&UkkfJh3-!jykc`G_R2w+hhkNw!8})2R$5i9x2=FekDeN8A7_l!z8JsALj> zI)SWd3=1g-p%&066#*EBMXF)36)>QZDSTuyu{}-$fz^193mj`V(H3`+60r!^Xns=l z-tdlztBIRHEE=D}V#kHc0>FtNN+1-5#seXK6H{OyAPs<#JA6`7AI3%h&@LtnfK;YX zh=&CL!ZDSBw97_7!wboD64e@Mx;1H{@Q>(9nNSr5C}5`mq*A0BL_*`$U@a%fwE8@o zus~SD6p2E`lSzn@e8_Yb$(lu{A?I zK?Y#+dAk4i@~l}@1`Fx#WO;T(&64$@nRdkgYWIY}CuG~oDzR38iy8hqjLjV0W2TPF`yfEZj zP1~Y?gM82h~J zB?>iTj%J^NO3N@t2K7{2o{L^LTHnYVJ(lvy6B$x)IZi&)8cdVVW36nh8^7qqHuE%L-n@vO2rff1UB)PX;G%sNnr&NY+H_JQTQ%0Fdd1jLn zq94r}+#A27_NS9kqL>Q_cM47RUZb0Ytn;-!L7YDauDZX2Rq#HBJFNHG+T_o!!&UuA hbOU%JSIFa`Rv_ookX^IYdVi-ma9!4L3Y@pc{Rbo(6U_hs literal 0 HcmV?d00001 diff --git a/graphics/battle_anims/sprites/syrup_red.pal b/graphics/battle_anims/sprites/syrup_red.pal new file mode 100644 index 0000000000..2224ce0c84 --- /dev/null +++ b/graphics/battle_anims/sprites/syrup_red.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +30 255 0 +242 242 242 +255 194 173 +255 129 110 +224 51 38 +161 24 26 +110 30 36 +13 2 4 +200 224 240 +200 224 240 +200 224 240 +200 224 240 +200 224 240 +200 224 240 +200 224 240 +200 224 240 diff --git a/graphics/battle_anims/sprites/syrup_yellow.pal b/graphics/battle_anims/sprites/syrup_yellow.pal new file mode 100644 index 0000000000..ff5ac37331 --- /dev/null +++ b/graphics/battle_anims/sprites/syrup_yellow.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +30 255 0 +242 242 242 +255 255 168 +255 235 82 +255 192 0 +185 104 4 +107 59 19 +13 2 4 +200 224 240 +200 224 240 +200 224 240 +200 224 240 +200 224 240 +200 224 240 +200 224 240 +200 224 240 diff --git a/include/battle.h b/include/battle.h index cd314eb728..7fa841e835 100644 --- a/include/battle.h +++ b/include/battle.h @@ -106,6 +106,7 @@ struct DisableStruct u8 stickyWebDone:1; u8 stealthRockDone:1; u8 syrupBombTimer; + u8 syrupBombIsShiny:1; u8 steelSurgeDone:1; }; diff --git a/include/constants/battle_anim.h b/include/constants/battle_anim.h index 54eeb5b055..0a01eb2996 100644 --- a/include/constants/battle_anim.h +++ b/include/constants/battle_anim.h @@ -399,7 +399,12 @@ #define ANIM_TAG_TEAPOT (ANIM_SPRITES_START + 385) #define ANIM_TAG_WOOD_HAMMER_HAMMER (ANIM_SPRITES_START + 386) #define ANIM_TAG_SNOWFLAKES (ANIM_SPRITES_START + 387) - +#define ANIM_TAG_SYRUP_BLOB_RED (ANIM_SPRITES_START + 388) +#define ANIM_TAG_SYRUP_SHELL_RED (ANIM_SPRITES_START + 389) +#define ANIM_TAG_SYRUP_BLOB_YELLOW (ANIM_SPRITES_START + 390) +#define ANIM_TAG_SYRUP_SHELL_YELLOW (ANIM_SPRITES_START + 391) +#define ANIM_TAG_SYRUP_SPLAT_RED (ANIM_SPRITES_START + 392) +#define ANIM_TAG_SYRUP_SPLAT_YELLOW (ANIM_SPRITES_START + 393) // battlers #define ANIM_ATTACKER 0 @@ -553,6 +558,7 @@ #define B_ANIM_SALT_CURE_DAMAGE 38 #define B_ANIM_DYNAMAX_GROWTH 39 #define B_ANIM_MAX_SET_WEATHER 40 +#define B_ANIM_SYRUP_BOMB_SPEED_DROP 41 // special animations table (gBattleAnims_Special) #define B_ANIM_LVL_UP 0 diff --git a/include/graphics.h b/include/graphics.h index f2ff391a95..1dc34717cb 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -10349,6 +10349,11 @@ extern const u32 gBattleAnimSpriteGfx_WoodHammerHammer[]; extern const u32 gBattleAnimSpritePal_WoodHammerHammer[]; extern const u32 gBattleAnimSpriteGfx_Snowflakes[]; extern const u32 gBattleAnimSpritePal_Snowflakes[]; +extern const u32 gBattleAnimSpriteGfx_SyrupBlob[]; +extern const u32 gBattleAnimSpriteGfx_SyrupShell[]; +extern const u32 gBattleAnimSpriteGfx_SyrupSplat[]; +extern const u32 gBattleAnimSpritePal_SyrupRed[]; +extern const u32 gBattleAnimSpritePal_SyrupYellow[]; extern const u32 gBattleAnimBgImage_Dark[]; extern const u32 gBattleAnimBgImage_Ghost[]; diff --git a/src/battle_anim_new.c b/src/battle_anim_new.c index f150afb799..0c99d2a434 100644 --- a/src/battle_anim_new.c +++ b/src/battle_anim_new.c @@ -9148,3 +9148,22 @@ void AnimTask_GetWeatherToSet(u8 taskId) } DestroyAnimVisualTask(taskId); } + +void AnimTask_SyrupBomb(u8 taskId) +{ + struct Pokemon *party = GetBattlerParty(gBattleAnimAttacker); + u32 isShiny = IsMonShiny(&party[gBattlerPartyIndexes[gBattleAnimAttacker]]); + + gDisableStructs[gBattleAnimTarget].syrupBombIsShiny = isShiny; + gBattleAnimArgs[0] = isShiny; + DestroyAnimVisualTask(taskId); +} + +void AnimTask_StickySyrup(u8 taskId) +{ + if (gDisableStructs[gBattleAnimTarget].syrupBombIsShiny) + gBattleAnimArgs[0] = TRUE; + else + gBattleAnimArgs[0] = FALSE; + DestroyAnimVisualTask(taskId); +} diff --git a/src/battle_anim_poison.c b/src/battle_anim_poison.c index 8905f5c475..0ed4e43090 100644 --- a/src/battle_anim_poison.c +++ b/src/battle_anim_poison.c @@ -14,6 +14,7 @@ static void AnimSuckerPunch(struct Sprite *sprite); static void AnimGunkShotParticlesStep(struct Sprite *sprite); static void AnimGunkShotParticles(struct Sprite *sprite); static void AnimGunkShotImpact(struct Sprite *sprite); +static void AnimAnimSyrupBomb(struct Sprite *); static const union AnimCmd sAnim_ToxicBubble[] = { @@ -305,6 +306,123 @@ const struct SpriteTemplate gGunkShotImpactSpriteTemplate = .callback = AnimGunkShotImpact, }; +static const union AnimCmd sAnim_SyrupCoat[] = +{ + ANIMCMD_FRAME(128, 10), + ANIMCMD_FRAME(64, 5), + ANIMCMD_FRAME(0, 45), + ANIMCMD_FRAME(64, 15), + ANIMCMD_FRAME(128, 15), + ANIMCMD_FRAME(192, 20), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_SyrupStick[] = +{ + ANIMCMD_FRAME(192, 5), + ANIMCMD_FRAME(128, 35), + ANIMCMD_FRAME(192, 20), + ANIMCMD_END, +}; + +static const union AnimCmd *const sAnims_SyrupCoat[] = +{ + sAnim_SyrupCoat, +}; + +static const union AnimCmd *const sAnims_SyrupStick[] = +{ + sAnim_SyrupStick, +}; + +const struct SpriteTemplate gSyrupRedProjectileSpriteTemplate = +{ + .tileTag = ANIM_TAG_SYRUP_BLOB_RED, + .paletteTag = ANIM_TAG_SYRUP_BLOB_RED, + .oam = &gOamData_AffineDouble_ObjNormal_16x16, + .anims = gAnims_PoisonProjectile, + .images = NULL, + .affineAnims = gAffineAnims_PoisonProjectile, + .callback = AnimSludgeProjectile, +}; + +const struct SpriteTemplate gSyrupYellowProjectileSpriteTemplate = +{ + .tileTag = ANIM_TAG_SYRUP_BLOB_YELLOW, + .paletteTag = ANIM_TAG_SYRUP_BLOB_YELLOW, + .oam = &gOamData_AffineDouble_ObjNormal_16x16, + .anims = gAnims_PoisonProjectile, + .images = NULL, + .affineAnims = gAffineAnims_PoisonProjectile, + .callback = AnimSludgeProjectile, +}; + +const struct SpriteTemplate gSyrupBombRedHitParticleSpriteTemplate = +{ + .tileTag = ANIM_TAG_SYRUP_SPLAT_RED, + .paletteTag = ANIM_TAG_SYRUP_BLOB_RED, + .oam = &gOamData_AffineNormal_ObjNormal_16x16, + .anims = gAnims_PoisonProjectile, + .images = NULL, + .affineAnims = sAffineAnims_SludgeBombHit, + .callback = AnimSludgeBombHitParticle, +}; + +const struct SpriteTemplate gSyrupBombYellowHitParticleSpriteTemplate = +{ + .tileTag = ANIM_TAG_SYRUP_SPLAT_YELLOW, + .paletteTag = ANIM_TAG_SYRUP_BLOB_YELLOW, + .oam = &gOamData_AffineNormal_ObjNormal_16x16, + .anims = gAnims_PoisonProjectile, + .images = NULL, + .affineAnims = sAffineAnims_SludgeBombHit, + .callback = AnimSludgeBombHitParticle, +}; + +const struct SpriteTemplate gSyrupBombRedShellSpriteTemplate = +{ + .tileTag = ANIM_TAG_SYRUP_SHELL_RED, + .paletteTag = ANIM_TAG_SYRUP_BLOB_RED, + .oam = &gOamData_AffineOff_ObjNormal_64x64, + .anims = sAnims_SyrupCoat, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimAnimSyrupBomb, +}; + +const struct SpriteTemplate gSyrupBombYellowShellSpriteTemplate = +{ + .tileTag = ANIM_TAG_SYRUP_SHELL_YELLOW, + .paletteTag = ANIM_TAG_SYRUP_BLOB_YELLOW, + .oam = &gOamData_AffineOff_ObjNormal_64x64, + .anims = sAnims_SyrupCoat, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimAnimSyrupBomb, +}; + +const struct SpriteTemplate gSyrupBombRedShellBSpriteTemplate = +{ + .tileTag = ANIM_TAG_SYRUP_SHELL_RED, + .paletteTag = ANIM_TAG_SYRUP_BLOB_RED, + .oam = &gOamData_AffineOff_ObjNormal_64x64, + .anims = sAnims_SyrupStick, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimAnimSyrupBomb, +}; + +const struct SpriteTemplate gSyrupBombYellowShellBSpriteTemplate = +{ + .tileTag = ANIM_TAG_SYRUP_SHELL_YELLOW, + .paletteTag = ANIM_TAG_SYRUP_BLOB_YELLOW, + .oam = &gOamData_AffineOff_ObjNormal_64x64, + .anims = sAnims_SyrupStick, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimAnimSyrupBomb, +}; + static void AnimGunkShotImpact(struct Sprite *sprite) { StartSpriteAffineAnim(sprite, gBattleAnimArgs[3]); @@ -534,3 +652,26 @@ static void AnimBubbleEffect_Step(struct Sprite *sprite) if (sprite->affineAnimEnded) DestroyAnimSprite(sprite); } + +static void AnimSyrupBomb_Step(struct Sprite *sprite) +{ + if (sprite->data[1] > sprite->data[0] - 10) + sprite->invisible = sprite->data[1] & 1; + + if (sprite->data[1] == sprite->data[0]) + DestroyAnimSprite(sprite); + + sprite->data[1]++; +} + +static void AnimAnimSyrupBomb(struct Sprite *sprite) +{ + if (gBattleAnimArgs[0] == ANIM_TARGET) + { + sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); + sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y) + 2; + } + + sprite->data[0] = gBattleAnimArgs[1]; + sprite->callback = AnimSyrupBomb_Step; +} diff --git a/src/data/battle_anim.h b/src/data/battle_anim.h index d342ccbae5..880b98efce 100644 --- a/src/data/battle_anim.h +++ b/src/data/battle_anim.h @@ -1449,6 +1449,12 @@ const struct CompressedSpriteSheet gBattleAnimPicTable[] = {gBattleAnimSpriteGfx_Teapot, 0x1800, ANIM_TAG_TEAPOT}, {gBattleAnimSpriteGfx_WoodHammerHammer, 0x800, ANIM_TAG_WOOD_HAMMER_HAMMER}, {gBattleAnimSpriteGfx_Snowflakes, 0x0700, ANIM_TAG_SNOWFLAKES}, + {gBattleAnimSpriteGfx_SyrupBlob, 0x400, ANIM_TAG_SYRUP_BLOB_RED}, + {gBattleAnimSpriteGfx_SyrupShell, 0x2000, ANIM_TAG_SYRUP_SHELL_RED}, + {gBattleAnimSpriteGfx_SyrupBlob, 0x400, ANIM_TAG_SYRUP_BLOB_YELLOW}, + {gBattleAnimSpriteGfx_SyrupShell, 0x2000, ANIM_TAG_SYRUP_SHELL_YELLOW}, + {gBattleAnimSpriteGfx_SyrupSplat, 0x400, ANIM_TAG_SYRUP_SPLAT_RED}, + {gBattleAnimSpriteGfx_SyrupSplat, 0x400, ANIM_TAG_SYRUP_SPLAT_YELLOW}, }; const struct CompressedSpritePalette gBattleAnimPaletteTable[] = @@ -1898,6 +1904,12 @@ const struct CompressedSpritePalette gBattleAnimPaletteTable[] = {gBattleAnimSpritePal_Teapot, ANIM_TAG_TEAPOT}, {gBattleAnimSpritePal_WoodHammerHammer, ANIM_TAG_WOOD_HAMMER_HAMMER}, {gBattleAnimSpritePal_RainDrops, ANIM_TAG_SNOWFLAKES}, + {gBattleAnimSpritePal_SyrupRed, ANIM_TAG_SYRUP_BLOB_RED}, + {gBattleAnimSpritePal_SyrupRed, ANIM_TAG_SYRUP_SHELL_RED}, + {gBattleAnimSpritePal_SyrupYellow, ANIM_TAG_SYRUP_BLOB_YELLOW}, + {gBattleAnimSpritePal_SyrupYellow, ANIM_TAG_SYRUP_SHELL_YELLOW}, + {gBattleAnimSpritePal_SyrupRed, ANIM_TAG_SYRUP_SPLAT_RED}, + {gBattleAnimSpritePal_SyrupYellow, ANIM_TAG_SYRUP_SPLAT_YELLOW}, }; const struct BattleAnimBackground gBattleAnimBackgroundTable[] = diff --git a/src/graphics.c b/src/graphics.c index d152d081c0..45c066ad26 100644 --- a/src/graphics.c +++ b/src/graphics.c @@ -451,6 +451,12 @@ const u32 gBattleAnimSpritePal_WoodHammerHammer[] = INCBIN_U32("graphics/battle_ const u32 gBattleAnimSpriteGfx_Snowflakes[] = INCBIN_U32("graphics/battle_anims/sprites/snowflakes.4bpp.lz"); const u32 gBattleAnimSpritePal_Snowflakes[] = INCBIN_U32("graphics/battle_anims/sprites/snowflakes.gbapal.lz"); +const u32 gBattleAnimSpriteGfx_SyrupBlob[] = INCBIN_U32("graphics/battle_anims/sprites/syrup_bomb_blob.4bpp.lz"); +const u32 gBattleAnimSpriteGfx_SyrupShell[] = INCBIN_U32("graphics/battle_anims/sprites/syrup_bomb_shell.4bpp.lz"); +const u32 gBattleAnimSpriteGfx_SyrupSplat[] = INCBIN_U32("graphics/battle_anims/sprites/syrup_bomb_splat.4bpp.lz"); +const u32 gBattleAnimSpritePal_SyrupRed[] = INCBIN_U32("graphics/battle_anims/sprites/syrup_red.gbapal.lz"); +const u32 gBattleAnimSpritePal_SyrupYellow[] = INCBIN_U32("graphics/battle_anims/sprites/syrup_yellow.gbapal.lz"); + // old battle interface data, unused const u32 gOldBattleInterfaceGfx[] = INCBIN_U32("graphics/unused/obi1.4bpp.lz"); diff --git a/test/battle/move_effect/syrup_bomb.c b/test/battle/move_effect/syrup_bomb.c index 10e2c40de1..f286049e1a 100644 --- a/test/battle/move_effect/syrup_bomb.c +++ b/test/battle/move_effect/syrup_bomb.c @@ -16,14 +16,14 @@ SINGLE_BATTLE_TEST("Syrup Bomb covers the foe in sticky syrup for 3 turns") ANIMATION(ANIM_TYPE_MOVE, MOVE_SYRUP_BOMB, player); HP_BAR(opponent); MESSAGE("Foe Wobbuffet got covered in sticky syrup!"); - ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_SYRUP_BOMB_SPEED_DROP, opponent); MESSAGE("Foe Wobbuffet's Speed fell!"); - ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_SYRUP_BOMB_SPEED_DROP, opponent); MESSAGE("Foe Wobbuffet's Speed fell!"); - ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_SYRUP_BOMB_SPEED_DROP, opponent); MESSAGE("Foe Wobbuffet's Speed fell!"); NONE_OF { - ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_SYRUP_BOMB_SPEED_DROP, opponent); MESSAGE("Foe Wobbuffet's Speed fell!"); } } @@ -41,7 +41,7 @@ SINGLE_BATTLE_TEST("Sticky Syrup isn't applied again if the target is already co ANIMATION(ANIM_TYPE_MOVE, MOVE_SYRUP_BOMB, player); HP_BAR(opponent); MESSAGE("Foe Wobbuffet got covered in sticky syrup!"); - ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_SYRUP_BOMB_SPEED_DROP, opponent); MESSAGE("Foe Wobbuffet's Speed fell!"); ANIMATION(ANIM_TYPE_MOVE, MOVE_SYRUP_BOMB, player); HP_BAR(opponent); @@ -89,9 +89,9 @@ SINGLE_BATTLE_TEST("Sticky Syrup speed reduction is prevented by Clear Body, Whi { MESSAGE("Foe Beldum got covered in sticky syrup!"); ABILITY_POPUP(opponent, ABILITY_CLEAR_BODY); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_SYRUP_BOMB_SPEED_DROP, opponent); MESSAGE("Foe Beldum's Clear Body prevents stat loss!"); NONE_OF { - ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); MESSAGE("Foe Beldum's Speed fell!"); } } @@ -99,9 +99,9 @@ SINGLE_BATTLE_TEST("Sticky Syrup speed reduction is prevented by Clear Body, Whi { MESSAGE("Foe Torkoal got covered in sticky syrup!"); ABILITY_POPUP(opponent, ABILITY_WHITE_SMOKE); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_SYRUP_BOMB_SPEED_DROP, opponent); MESSAGE("Foe Torkoal's White Smoke prevents stat loss!"); NONE_OF { - ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); MESSAGE("Foe Torkoal's Speed fell!"); } } @@ -109,9 +109,9 @@ SINGLE_BATTLE_TEST("Sticky Syrup speed reduction is prevented by Clear Body, Whi { MESSAGE("Foe Solgaleo got covered in sticky syrup!"); ABILITY_POPUP(opponent, ABILITY_FULL_METAL_BODY); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_SYRUP_BOMB_SPEED_DROP, opponent); MESSAGE("Foe Solgaleo's Full Metal Body prevents stat loss!"); NONE_OF { - ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); MESSAGE("Foe Solgaleo's Speed fell!"); } } @@ -131,7 +131,7 @@ SINGLE_BATTLE_TEST("Sticky Syrup speed reduction is prevented by Clear Amulet") MESSAGE("Foe Wobbuffet got covered in sticky syrup!"); MESSAGE("Foe Wobbuffet's Clear Amulet prevents its stats from being lowered!"); NONE_OF { - ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_SYRUP_BOMB_SPEED_DROP, opponent); MESSAGE("Foe Wobbuffet's Speed fell!"); } } @@ -150,13 +150,16 @@ SINGLE_BATTLE_TEST("Sticky syrup will not decrease speed further then minus six" TURN { MOVE(player, MOVE_SYRUP_BOMB); } TURN {} } SCENE { - for (j = 0; j < 3; j++) { ANIMATION(ANIM_TYPE_MOVE, MOVE_SCARY_FACE, player); } + for (j = 0; j < 3; j++) { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCARY_FACE, player); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + } ANIMATION(ANIM_TYPE_MOVE, MOVE_SYRUP_BOMB, player); HP_BAR(opponent); MESSAGE("Foe Wobbuffet got covered in sticky syrup!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_SYRUP_BOMB_SPEED_DROP, opponent); MESSAGE("Foe Wobbuffet's Speed won't go lower!"); NONE_OF { - ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); MESSAGE("Foe Wobbuffet's Speed fell!"); } } From 5087095aaea2e3fc8e40f8ad0ae42778d49c008f Mon Sep 17 00:00:00 2001 From: kittenchilly Date: Fri, 27 Oct 2023 17:17:17 -0500 Subject: [PATCH 157/162] Obedience levels now increase per badge (#3475) --- include/config/battle.h | 2 +- src/battle_util.c | 16 ++++++++++++---- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/include/config/battle.h b/include/config/battle.h index e0c3ae2acc..dcb15f94ed 100644 --- a/include/config/battle.h +++ b/include/config/battle.h @@ -209,7 +209,7 @@ #define B_WILD_NATURAL_ENEMIES TRUE // If set to TRUE, certain wild mon species will attack other species when partnered in double wild battles (eg. Zangoose vs Seviper) #define B_AFFECTION_MECHANICS FALSE // In Gen6+, there's a stat called affection that can trigger different effects in battle. From LGPE onwards, those effects use friendship instead. #define B_TRAINER_CLASS_POKE_BALLS GEN_LATEST // In Gen7+, trainers will use certain types of Poké Balls depending on their trainer class. -#define B_OBEDIENCE_MECHANICS GEN_7 // In PLA+ (here Gen8+), obedience restrictions also apply to non-outsider Pokémon, albeit based on their level met rather than actual level +#define B_OBEDIENCE_MECHANICS GEN_LATEST // In PLA+ (here Gen8+), obedience restrictions also apply to non-outsider Pokémon, albeit based on their level met rather than actual level #define B_USE_FROSTBITE FALSE // In PLA, Frostbite replaces Freeze. Enabling this flag does the same here. Moves can still be cherry-picked to either Freeze or Frostbite. Freeze-Dry, Secret Power & Tri Attack depend on this config. #define B_OVERWORLD_SNOW GEN_LATEST // In Gen9+, overworld Snow will summon snow instead of hail. diff --git a/src/battle_util.c b/src/battle_util.c index f0a75113f8..244736a50f 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -8007,17 +8007,25 @@ u8 IsMonDisobedient(void) return 0; if (B_OBEDIENCE_MECHANICS < GEN_8 && !IsOtherTrainer(gBattleMons[gBattlerAttacker].otId, gBattleMons[gBattlerAttacker].otName)) return 0; - if (FlagGet(FLAG_BADGE08_GET)) + if (FlagGet(FLAG_BADGE08_GET)) // Rain Badge, ignore obedience altogether return 0; obedienceLevel = 10; - if (FlagGet(FLAG_BADGE02_GET)) + if (FlagGet(FLAG_BADGE01_GET)) // Stone Badge + obedienceLevel = 20; + if (FlagGet(FLAG_BADGE02_GET)) // Knuckle Badge obedienceLevel = 30; - if (FlagGet(FLAG_BADGE04_GET)) + if (FlagGet(FLAG_BADGE03_GET)) // Dynamo Badge + obedienceLevel = 40; + if (FlagGet(FLAG_BADGE04_GET)) // Heat Badge obedienceLevel = 50; - if (FlagGet(FLAG_BADGE06_GET)) + if (FlagGet(FLAG_BADGE05_GET)) // Balance Badge + obedienceLevel = 60; + if (FlagGet(FLAG_BADGE06_GET)) // Feather Badge obedienceLevel = 70; + if (FlagGet(FLAG_BADGE07_GET)) // Mind Badge + obedienceLevel = 80; } if (B_OBEDIENCE_MECHANICS >= GEN_8 From 0dd22305a4bba21835b1167f375d8b32213eae19 Mon Sep 17 00:00:00 2001 From: Bassoonian Date: Sun, 29 Oct 2023 03:22:41 +0100 Subject: [PATCH 158/162] Adds Illuminate's Gen9 effect (#3482) Co-authored-by: Eduardo Quezada D'Ottone --- include/config/battle.h | 1 + src/battle_ai_main.c | 6 +++++- src/battle_ai_switch_items.c | 1 + src/battle_ai_util.c | 1 + src/battle_script_commands.c | 4 +++- 5 files changed, 11 insertions(+), 2 deletions(-) diff --git a/include/config/battle.h b/include/config/battle.h index dcb15f94ed..ad5d091617 100644 --- a/include/config/battle.h +++ b/include/config/battle.h @@ -129,6 +129,7 @@ #define B_LEAF_GUARD_PREVENTS_REST GEN_LATEST // In Gen5+, Leaf Guard prevents the use of Rest in harsh sunlight. #define B_SNOW_WARNING GEN_LATEST // In Gen9+, Snow Warning will summon snow instead of hail. #define B_TRANSISTOR_BOOST GEN_LATEST // In Gen9+, Transistor will only boost Electric-type moves by 1.3x as opposed to 1.5x. +#define B_ILLUMINATE_EFFECT GEN_LATEST // In Gen9+, Illuminate prevents accuracy reductions and ignores the target's evasion. // Item settings #define B_HP_BERRIES GEN_LATEST // In Gen4+, berries which restore HP activate immediately after HP drops to half. In Gen3, the effect occurs at the end of the turn. diff --git a/src/battle_ai_main.c b/src/battle_ai_main.c index 03a41733aa..7cdd63317b 100644 --- a/src/battle_ai_main.c +++ b/src/battle_ai_main.c @@ -869,6 +869,10 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) && move != MOVE_PLAY_NICE && move != MOVE_NOBLE_ROAR && move != MOVE_TEARFUL_LOOK && move != MOVE_VENOM_DRENCH) RETURN_SCORE_MINUS(10); break; + case ABILITY_ILLUMINATE: + if (B_ILLUMINATE_EFFECT < GEN_9) + break; + // fallthrough case ABILITY_KEEN_EYE: if (moveEffect == EFFECT_ACCURACY_DOWN || moveEffect == EFFECT_ACCURACY_DOWN_2) RETURN_SCORE_MINUS(10); @@ -1292,7 +1296,7 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) case EFFECT_ACCURACY_DOWN_2: if (!ShouldLowerStat(battlerDef, aiData->abilities[battlerDef], STAT_ACC)) ADJUST_SCORE(-10); - else if (aiData->abilities[battlerDef] == ABILITY_KEEN_EYE) + else if (aiData->abilities[battlerDef] == ABILITY_KEEN_EYE || (B_ILLUMINATE_EFFECT >= GEN_9 && aiData->abilities[battlerDef] == ABILITY_ILLUMINATE)) ADJUST_SCORE(-8); break; case EFFECT_EVASION_DOWN: diff --git a/src/battle_ai_switch_items.c b/src/battle_ai_switch_items.c index 5d77dca70b..41f2b69129 100644 --- a/src/battle_ai_switch_items.c +++ b/src/battle_ai_switch_items.c @@ -347,6 +347,7 @@ static bool8 ShouldSwitchIfGameStatePrompt(u32 battler) if (gBattleMons[battler].statStages[STAT_EVASION] > (DEFAULT_STAT_STAGE + 3) && AI_DATA->abilities[opposingBattler] != ABILITY_UNAWARE && AI_DATA->abilities[opposingBattler] != ABILITY_KEEN_EYE + && (B_ILLUMINATE_EFFECT >= GEN_9 && AI_DATA->abilities[opposingBattler] != ABILITY_ILLUMINATE) && !(gBattleMons[battler].status2 & STATUS2_FORESIGHT) && !(gStatuses3[battler] & STATUS3_MIRACLE_EYED)) switchMon = FALSE; diff --git a/src/battle_ai_util.c b/src/battle_ai_util.c index faffe0e6b3..38c7a9550f 100644 --- a/src/battle_ai_util.c +++ b/src/battle_ai_util.c @@ -1996,6 +1996,7 @@ bool32 ShouldLowerAccuracy(u32 battlerAtk, u32 battlerDef, u32 defAbility) && defAbility != ABILITY_WHITE_SMOKE && defAbility != ABILITY_FULL_METAL_BODY && defAbility != ABILITY_KEEN_EYE + && (B_ILLUMINATE_EFFECT >= GEN_9 && defAbility != ABILITY_ILLUMINATE) && AI_DATA->holdEffects[battlerDef] != HOLD_EFFECT_CLEAR_AMULET) return TRUE; return FALSE; diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 5011f72e8f..d98bab5367 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -1623,7 +1623,7 @@ u32 GetTotalAccuracy(u32 battlerAtk, u32 battlerDef, u32 move, u32 atkAbility, u gPotentialItemEffectBattler = battlerDef; accStage = gBattleMons[battlerAtk].statStages[STAT_ACC]; evasionStage = gBattleMons[battlerDef].statStages[STAT_EVASION]; - if (atkAbility == ABILITY_UNAWARE || atkAbility == ABILITY_KEEN_EYE) + if (atkAbility == ABILITY_UNAWARE || atkAbility == ABILITY_KEEN_EYE || (B_ILLUMINATE_EFFECT >= GEN_9 && atkAbility == ABILITY_ILLUMINATE)) evasionStage = DEFAULT_STAT_STAGE; if (gBattleMoves[move].ignoresTargetDefenseEvasionStages) evasionStage = DEFAULT_STAT_STAGE; @@ -5058,6 +5058,7 @@ static void Cmd_playstatchangeanimation(void) && ability != ABILITY_FULL_METAL_BODY && ability != ABILITY_WHITE_SMOKE && !(ability == ABILITY_KEEN_EYE && currStat == STAT_ACC) + && !(B_ILLUMINATE_EFFECT >= GEN_9 && ability == ABILITY_ILLUMINATE && currStat == STAT_ACC) && !(ability == ABILITY_HYPER_CUTTER && currStat == STAT_ATK) && !(ability == ABILITY_BIG_PECKS && currStat == STAT_DEF)) { @@ -11437,6 +11438,7 @@ static u32 ChangeStatBuffs(s8 statValue, u32 statId, u32 flags, const u8 *BS_ptr } else if (!certain && ((battlerAbility == ABILITY_KEEN_EYE && statId == STAT_ACC) + || (B_ILLUMINATE_EFFECT >= GEN_9 && battlerAbility == ABILITY_ILLUMINATE && statId == STAT_ACC) || (battlerAbility == ABILITY_HYPER_CUTTER && statId == STAT_ATK) || (battlerAbility == ABILITY_BIG_PECKS && statId == STAT_DEF))) { From ab25e6bfa5109dc052920cf53f7c5d026266e30a Mon Sep 17 00:00:00 2001 From: Bassoonian Date: Sun, 29 Oct 2023 03:24:20 +0100 Subject: [PATCH 159/162] Fixes Synchronize's OW effect and adds configs (#3480) --- include/config/battle.h | 1 - include/config/overworld.h | 14 +++++++++++++ include/wild_encounter.h | 1 + src/pokemon.c | 26 ++++++++++++++---------- src/script_pokemon_util.c | 22 ++++++++++++++++---- src/wild_encounter.c | 41 +++++++++++++++++++------------------- 6 files changed, 68 insertions(+), 37 deletions(-) diff --git a/include/config/battle.h b/include/config/battle.h index ad5d091617..43f8138c1e 100644 --- a/include/config/battle.h +++ b/include/config/battle.h @@ -117,7 +117,6 @@ #define B_SHADOW_TAG_ESCAPE GEN_LATEST // In Gen4+, if both sides have a Pokémon with Shadow Tag, all battlers can escape. Before, neither side could escape this situation. #define B_MOODY_ACC_EVASION GEN_LATEST // In Gen8, Moody CANNOT raise Accuracy and Evasion anymore. #define B_FLASH_FIRE_FROZEN GEN_LATEST // In Gen5+, Flash Fire can trigger even when frozen, when it couldn't before. -#define B_SYNCHRONIZE_NATURE GEN_LATEST // In Gen8, if a Pokémon with Synchronize is leading the party, it's 100% guaranteed that wild Pokémon will have the same Nature, as opposed to 50% previously. In Gen9, it has no out-of-battle effect. #define B_SYNCHRONIZE_TOXIC GEN_LATEST // In Gen5+, if a Pokémon with Synchronize is badly poisoned, the opponent will also become badly poisoned. Previously, the opponent would become regular poisoned. #define B_UPDATED_INTIMIDATE GEN_LATEST // In Gen8, Intimidate doesn't work on opponents with the Inner Focus, Scrappy, Own Tempo or Oblivious abilities. It also activates Rattled. #define B_OBLIVIOUS_TAUNT GEN_LATEST // In Gen6+, Pokémon with Oblivious can't be taunted. diff --git a/include/config/overworld.h b/include/config/overworld.h index e8056236a0..5002be3d28 100644 --- a/include/config/overworld.h +++ b/include/config/overworld.h @@ -10,6 +10,20 @@ // PC settings #define OW_PC_PRESS_B GEN_LATEST // In Gen4, pressing B when holding a Pokémon is equivalent to placing it. In Gen3, it gives the "You're holding a Pokémon!" error. +// Out-of-battle Ability effects +#define OW_SYNCHRONIZE_NATURE GEN_LATEST // In Gen8, if a Pokémon with Synchronize is leading the party, it's 100% guaranteed that wild Pokémon will have the same Nature, as opposed to 50% previously. Stationary Pokémon are excluded in Gen3. In Gen6, all No Eggs Discovered gift Pokémon will have the same Nature, while in Gen7 all gift Pokémon will, regardless of Egg Group - In Gen 8, no gift Pokémon are affected. In Gen9, this ability has no out-of-battle effect. +#define OW_COMPOUND_EYES GEN_LATEST // Prior to Gen9, if a Pokémon with Compound Eyes is leading the party, the wild held item rate is increased to 60%/20%. +#define OW_SUPER_LUCK GEN_LATEST // In Gen8, if a Pokémon with Super Luck is leading the party, the wild held item rate is increased to 60%/20%. +#define OW_CUTE_CHARM GEN_LATEST // Prior to Gen9, if a Pokémon with Cute Charm is leading the party, wild encounters have a 66.7% chance to be forced to be of the opposite gender. +#define OW_ILLUMINATE GEN_LATEST // Prior to Gen9, if a Pokémon with Illuminate is leading the party, the wild encounter rate is doubled. +#define OW_INFILTRATOR GEN_LATEST // In Gen8, if a Pokémon with Infiltrator is leading the party, the wild encounter rate is halved. +#define OW_HARVEST GEN_LATEST // In Gen8, if a Pokémon with Harvest is leading the party, there is a 50% chance to encounter a Grass-type Pokémon. +#define OW_LIGHTNING_ROD GEN_LATEST // In Gen8, if a Pokémon with Lightning Rod is leading the party, there is a 50% chance to encounter an Electric-type Pokémon. +#define OW_STORM_DRAIN GEN_LATEST // In Gen8, if a Pokémon with Storm Drain is leading the party, there is a 50% chance to encounter a Water-type Pokémon. +#define OW_FLASH_FIRE GEN_LATEST // In Gen8, if a Pokémon with Flash Fire is leading the party, there is a 50% chance to encounter a Fire-type Pokémon. +#define OW_MAGNET_PULL GEN_LATEST // Prior to Gen9, if a Pokémon with Magnet Pull is leading the party, there is a 50% chance to encounter a Steel-type Pokémon. +#define OW_STATIC GEN_LATEST // Prior to Gen9, if a Pokémon with Static is leading the party, there is a 50% chance to encounter an Electric-type Pokémon. + // Overworld flags // To use the following features in scripting, replace the 0s with the flag ID you're assigning it to. // Eg: Replace with FLAG_UNUSED_0x264 so you can use that flag to toggle the feature. diff --git a/include/wild_encounter.h b/include/wild_encounter.h index bef89d8950..13e7600684 100644 --- a/include/wild_encounter.h +++ b/include/wild_encounter.h @@ -31,6 +31,7 @@ extern bool8 gIsFishingEncounter; extern bool8 gIsSurfingEncounter; void DisableWildEncounters(bool8 disabled); +u8 PickWildMonNature(void); bool8 StandardWildEncounter(u16 currMetaTileBehavior, u16 previousMetaTileBehavior); bool8 SweetScentWildEncounter(void); bool8 DoesCurrentMapHaveFishingMons(void); diff --git a/src/pokemon.c b/src/pokemon.c index 3eef17995d..e250d7abb1 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -8070,29 +8070,33 @@ static s32 GetWildMonTableIdInAlteringCave(u16 species) return 0; } +static inline bool32 CanFirstMonBoostHeldItemRarity(void) +{ + if (GetMonData(&gPlayerParty[0], MON_DATA_SANITY_IS_EGG)) + return FALSE; + else if ((OW_COMPOUND_EYES < GEN_9) && GetMonAbility(&gPlayerParty[0]) == ABILITY_COMPOUND_EYES) + return TRUE; + else if ((OW_SUPER_LUCK == GEN_8) && GetMonAbility(&gPlayerParty[0]) == ABILITY_SUPER_LUCK) + return TRUE; + return FALSE; +} + void SetWildMonHeldItem(void) { if (!(gBattleTypeFlags & (BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_TRAINER | BATTLE_TYPE_PYRAMID | BATTLE_TYPE_PIKE))) { u16 rnd; u16 species; - u16 chanceNoItem = 45; - u16 chanceNotRare = 95; u16 count = (WILD_DOUBLE_BATTLE) ? 2 : 1; u16 i; - - if (!GetMonData(&gPlayerParty[0], MON_DATA_SANITY_IS_EGG, 0) - && (GetMonAbility(&gPlayerParty[0]) == ABILITY_COMPOUND_EYES - || GetMonAbility(&gPlayerParty[0]) == ABILITY_SUPER_LUCK)) - { - chanceNoItem = 20; - chanceNotRare = 80; - } + bool32 itemHeldBoost = CanFirstMonBoostHeldItemRarity(); + u16 chanceNoItem = itemHeldBoost ? 20 : 45; + u16 chanceNotRare = itemHeldBoost ? 80 : 95; for (i = 0; i < count; i++) { if (GetMonData(&gEnemyParty[i], MON_DATA_HELD_ITEM, NULL) != ITEM_NONE) - continue; // prevent ovewriting previously set item + continue; // prevent overwriting previously set item rnd = Random() % 100; species = GetMonData(&gEnemyParty[i], MON_DATA_SPECIES, 0); diff --git a/src/script_pokemon_util.c b/src/script_pokemon_util.c index ee3cc559f8..19b187bddf 100644 --- a/src/script_pokemon_util.c +++ b/src/script_pokemon_util.c @@ -21,6 +21,7 @@ #include "sprite.h" #include "string_util.h" #include "tv.h" +#include "wild_encounter.h" #include "constants/items.h" #include "constants/battle_frontier.h" @@ -66,7 +67,11 @@ u8 ScriptGiveMon(u16 species, u8 level, u16 item, u32 unused1, u32 unused2, u8 u struct Pokemon mon; u16 targetSpecies; - CreateMon(&mon, species, level, USE_RANDOM_IVS, FALSE, 0, OT_ID_PLAYER_ID, 0); + if (OW_SYNCHRONIZE_NATURE >= GEN_6 && (gSpeciesInfo[species].eggGroups[0] == EGG_GROUP_UNDISCOVERED || OW_SYNCHRONIZE_NATURE == GEN_7)) + CreateMonWithNature(&mon, species, level, USE_RANDOM_IVS, PickWildMonNature()); + else + CreateMon(&mon, species, level, USE_RANDOM_IVS, FALSE, 0, OT_ID_PLAYER_ID, 0); + heldItem[0] = item; heldItem[1] = item >> 8; SetMonData(&mon, MON_DATA_HELD_ITEM, heldItem); @@ -149,7 +154,10 @@ void CreateScriptedWildMon(u16 species, u8 level, u16 item) u8 heldItem[2]; ZeroEnemyPartyMons(); - CreateMon(&gEnemyParty[0], species, level, USE_RANDOM_IVS, 0, 0, OT_ID_PLAYER_ID, 0); + if (OW_SYNCHRONIZE_NATURE > GEN_3) + CreateMonWithNature(&gEnemyParty[0], species, level, USE_RANDOM_IVS, PickWildMonNature()); + else + CreateMon(&gEnemyParty[0], species, level, USE_RANDOM_IVS, 0, 0, OT_ID_PLAYER_ID, 0); if (item) { heldItem[0] = item; @@ -164,7 +172,10 @@ void CreateScriptedDoubleWildMon(u16 species1, u8 level1, u16 item1, u16 species ZeroEnemyPartyMons(); - CreateMon(&gEnemyParty[0], species1, level1, 32, 0, 0, OT_ID_PLAYER_ID, 0); + if (OW_SYNCHRONIZE_NATURE > GEN_3) + CreateMonWithNature(&gEnemyParty[0], species1, level1, 32, PickWildMonNature()); + else + CreateMon(&gEnemyParty[0], species1, level1, 32, 0, 0, OT_ID_PLAYER_ID, 0); if (item1) { heldItem1[0] = item1; @@ -172,7 +183,10 @@ void CreateScriptedDoubleWildMon(u16 species1, u8 level1, u16 item1, u16 species SetMonData(&gEnemyParty[0], MON_DATA_HELD_ITEM, heldItem1); } - CreateMon(&gEnemyParty[1], species2, level2, 32, 0, 0, OT_ID_PLAYER_ID, 0); + if (OW_SYNCHRONIZE_NATURE > GEN_3) + CreateMonWithNature(&gEnemyParty[1], species2, level2, 32, PickWildMonNature()); + else + CreateMon(&gEnemyParty[1], species2, level2, 32, 0, 0, OT_ID_PLAYER_ID, 0); if (item2) { heldItem2[0] = item2; diff --git a/src/wild_encounter.c b/src/wild_encounter.c index 8335b37e7d..e3a284c850 100644 --- a/src/wild_encounter.c +++ b/src/wild_encounter.c @@ -383,7 +383,7 @@ static u16 GetCurrentMapWildMonHeaderId(void) return HEADER_NONE; } -static u8 PickWildMonNature(void) +u8 PickWildMonNature(void) { u8 i; u8 j; @@ -415,15 +415,14 @@ static u8 PickWildMonNature(void) } } } -#if B_SYNCHRONIZE_NATURE < GEN_9 // check synchronize for a pokemon with the same ability - if (!GetMonData(&gPlayerParty[0], MON_DATA_SANITY_IS_EGG) + if (OW_SYNCHRONIZE_NATURE < GEN_9 + && !GetMonData(&gPlayerParty[0], MON_DATA_SANITY_IS_EGG) && GetMonAbility(&gPlayerParty[0]) == ABILITY_SYNCHRONIZE - && (B_SYNCHRONIZE_NATURE >= GEN_8 || Random() % 2 == 0)) + && (OW_SYNCHRONIZE_NATURE == GEN_8 || Random() % 2 == 0)) { return GetMonData(&gPlayerParty[0], MON_DATA_PERSONALITY) % NUM_NATURES; } -#endif // random nature return Random() % NUM_NATURES; @@ -434,7 +433,7 @@ static void CreateWildMon(u16 species, u8 level) bool32 checkCuteCharm; ZeroEnemyPartyMons(); - checkCuteCharm = TRUE; + checkCuteCharm = OW_CUTE_CHARM < GEN_9; switch (gSpeciesInfo[species].genderRatio) { @@ -480,33 +479,33 @@ static bool8 TryGenerateWildMon(const struct WildPokemonInfo *wildMonInfo, u8 ar switch (area) { case WILD_AREA_LAND: - if (TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_STEEL, ABILITY_MAGNET_PULL, &wildMonIndex, LAND_WILD_COUNT)) + if (OW_MAGNET_PULL < GEN_9 && TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_STEEL, ABILITY_MAGNET_PULL, &wildMonIndex, LAND_WILD_COUNT)) break; - if (TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_ELECTRIC, ABILITY_STATIC, &wildMonIndex, LAND_WILD_COUNT)) + if (OW_STATIC < GEN_9 && TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_ELECTRIC, ABILITY_STATIC, &wildMonIndex, LAND_WILD_COUNT)) break; - if (TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_ELECTRIC, ABILITY_LIGHTNING_ROD, &wildMonIndex, LAND_WILD_COUNT)) + if (OW_LIGHTNING_ROD == GEN_8 && TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_ELECTRIC, ABILITY_LIGHTNING_ROD, &wildMonIndex, LAND_WILD_COUNT)) break; - if (TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_FIRE, ABILITY_FLASH_FIRE, &wildMonIndex, LAND_WILD_COUNT)) + if (OW_FLASH_FIRE == GEN_8 && TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_FIRE, ABILITY_FLASH_FIRE, &wildMonIndex, LAND_WILD_COUNT)) break; - if (TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_GRASS, ABILITY_HARVEST, &wildMonIndex, LAND_WILD_COUNT)) + if (OW_HARVEST == GEN_8 && TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_GRASS, ABILITY_HARVEST, &wildMonIndex, LAND_WILD_COUNT)) break; - if (TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_WATER, ABILITY_STORM_DRAIN, &wildMonIndex, LAND_WILD_COUNT)) + if (OW_STORM_DRAIN == GEN_8 && TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_WATER, ABILITY_STORM_DRAIN, &wildMonIndex, LAND_WILD_COUNT)) break; wildMonIndex = ChooseWildMonIndex_Land(); break; case WILD_AREA_WATER: - if (TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_STEEL, ABILITY_MAGNET_PULL, &wildMonIndex, WATER_WILD_COUNT)) + if (OW_MAGNET_PULL < GEN_9 && TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_STEEL, ABILITY_MAGNET_PULL, &wildMonIndex, WATER_WILD_COUNT)) break; - if (TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_ELECTRIC, ABILITY_STATIC, &wildMonIndex, WATER_WILD_COUNT)) + if (OW_STATIC < GEN_9 && TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_ELECTRIC, ABILITY_STATIC, &wildMonIndex, WATER_WILD_COUNT)) break; - if (TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_ELECTRIC, ABILITY_LIGHTNING_ROD, &wildMonIndex, WATER_WILD_COUNT)) + if (OW_LIGHTNING_ROD == GEN_8 && TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_ELECTRIC, ABILITY_LIGHTNING_ROD, &wildMonIndex, WATER_WILD_COUNT)) break; - if (TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_FIRE, ABILITY_FLASH_FIRE, &wildMonIndex, WATER_WILD_COUNT)) + if (OW_FLASH_FIRE == GEN_8 && TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_FIRE, ABILITY_FLASH_FIRE, &wildMonIndex, WATER_WILD_COUNT)) break; - if (TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_GRASS, ABILITY_HARVEST, &wildMonIndex, WATER_WILD_COUNT)) + if (OW_HARVEST == GEN_8 && TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_GRASS, ABILITY_HARVEST, &wildMonIndex, WATER_WILD_COUNT)) break; - if (TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_WATER, ABILITY_STORM_DRAIN, &wildMonIndex, WATER_WILD_COUNT)) + if (OW_STORM_DRAIN == GEN_8 && TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_WATER, ABILITY_STORM_DRAIN, &wildMonIndex, WATER_WILD_COUNT)) break; wildMonIndex = ChooseWildMonIndex_WaterRock(); @@ -587,7 +586,7 @@ static bool8 WildEncounterCheck(u32 encounterRate, bool8 ignoreAbility) encounterRate = encounterRate * 3 / 4; else if (ability == ABILITY_STENCH) encounterRate /= 2; - else if (ability == ABILITY_ILLUMINATE) + else if (ability == ABILITY_ILLUMINATE && OW_ILLUMINATE < GEN_9) encounterRate *= 2; else if (ability == ABILITY_WHITE_SMOKE) encounterRate /= 2; @@ -599,10 +598,10 @@ static bool8 WildEncounterCheck(u32 encounterRate, bool8 ignoreAbility) encounterRate /= 2; else if (ability == ABILITY_QUICK_FEET) encounterRate /= 2; - else if (ability == ABILITY_INFILTRATOR) + else if (ability == ABILITY_INFILTRATOR && OW_INFILTRATOR == GEN_8) encounterRate /= 2; else if (ability == ABILITY_NO_GUARD) - encounterRate = encounterRate * 3 / 2; + encounterRate *= 2; } if (encounterRate > MAX_ENCOUNTER_RATE) encounterRate = MAX_ENCOUNTER_RATE; From efae5216460faeb5e81932770f042b2b7a4da982 Mon Sep 17 00:00:00 2001 From: Katy Date: Sat, 28 Oct 2023 21:47:58 -0500 Subject: [PATCH 160/162] Gen7 Sprites/Animations For Species (#3426) --- graphics/pokemon/cutiefly/anim_front.png | Bin 0 -> 8057 bytes graphics/pokemon/cutiefly/front.png | Bin 467 -> 0 bytes graphics/pokemon/dartrix/anim_front.png | Bin 0 -> 1054 bytes graphics/pokemon/dartrix/front.png | Bin 692 -> 0 bytes graphics/pokemon/decidueye/anim_front.png | Bin 0 -> 1258 bytes graphics/pokemon/decidueye/front.png | Bin 925 -> 0 bytes graphics/pokemon/drampa/anim_front.png | Bin 0 -> 1259 bytes graphics/pokemon/drampa/back.png | Bin 691 -> 640 bytes graphics/pokemon/drampa/front.png | Bin 1067 -> 0 bytes graphics/pokemon/drampa/normal.pal | 2 +- graphics/pokemon/drampa/shiny.pal | 2 +- graphics/pokemon/hakamo_o/anim_front.png | Bin 1418 -> 1306 bytes graphics/pokemon/hakamo_o/back.png | Bin 638 -> 559 bytes graphics/pokemon/jangmo_o/anim_front.png | Bin 883 -> 836 bytes graphics/pokemon/jangmo_o/back.png | Bin 612 -> 623 bytes graphics/pokemon/kommo_o/anim_front.png | Bin 1994 -> 1973 bytes graphics/pokemon/lycanroc/anim_front.png | Bin 0 -> 1541 bytes graphics/pokemon/lycanroc/dusk/anim_front.png | Bin 0 -> 1620 bytes graphics/pokemon/lycanroc/dusk/back.png | Bin 775 -> 683 bytes graphics/pokemon/lycanroc/dusk/front.png | Bin 941 -> 0 bytes graphics/pokemon/lycanroc/dusk/icon.png | Bin 596 -> 452 bytes graphics/pokemon/lycanroc/dusk/normal.pal | 4 +- graphics/pokemon/lycanroc/dusk/shiny.pal | 2 +- graphics/pokemon/lycanroc/front.png | Bin 913 -> 0 bytes .../pokemon/lycanroc/midnight/anim_front.png | Bin 0 -> 1387 bytes graphics/pokemon/lycanroc/midnight/front.png | Bin 858 -> 0 bytes graphics/pokemon/oranguru/anim_front.png | Bin 0 -> 1366 bytes graphics/pokemon/oranguru/front.png | Bin 977 -> 0 bytes graphics/pokemon/passimian/anim_front.png | Bin 0 -> 1498 bytes graphics/pokemon/passimian/back.png | Bin 654 -> 590 bytes graphics/pokemon/passimian/front.png | Bin 920 -> 0 bytes graphics/pokemon/passimian/normal.pal | 28 ++--- graphics/pokemon/passimian/shiny.pal | 28 ++--- graphics/pokemon/pikipek/anim_front.png | Bin 0 -> 758 bytes graphics/pokemon/pikipek/back.png | Bin 509 -> 458 bytes graphics/pokemon/pikipek/front.png | Bin 466 -> 0 bytes graphics/pokemon/ribombee/anim_front.png | Bin 0 -> 1294 bytes graphics/pokemon/ribombee/front.png | Bin 715 -> 0 bytes graphics/pokemon/rockruff/anim_front.png | Bin 0 -> 853 bytes graphics/pokemon/rockruff/front.png | Bin 655 -> 0 bytes graphics/pokemon/rowlet/anim_front.png | Bin 0 -> 730 bytes graphics/pokemon/rowlet/front.png | Bin 539 -> 0 bytes graphics/pokemon/togedemaru/anim_front.png | Bin 0 -> 729 bytes graphics/pokemon/togedemaru/front.png | Bin 534 -> 0 bytes graphics/pokemon/toucannon/anim_front.png | Bin 0 -> 856 bytes graphics/pokemon/toucannon/back.png | Bin 629 -> 578 bytes graphics/pokemon/toucannon/front.png | Bin 747 -> 0 bytes graphics/pokemon/toucannon/normal.pal | 24 ++--- graphics/pokemon/toucannon/shiny.pal | 24 ++--- graphics/pokemon/trumbeak/anim_front.png | Bin 0 -> 881 bytes graphics/pokemon/trumbeak/back.png | Bin 620 -> 604 bytes graphics/pokemon/trumbeak/front.png | Bin 613 -> 0 bytes graphics/pokemon/trumbeak/normal.pal | 6 +- graphics/pokemon/trumbeak/shiny.pal | 4 +- src/data/graphics/pokemon.h | 32 +++--- .../pokemon_graphics/back_pic_coordinates.h | 14 +-- src/data/pokemon_graphics/front_pic_anims.h | 99 ++++++++++++++---- .../pokemon_graphics/front_pic_coordinates.h | 34 +++--- src/pokemon.c | 26 ++--- src/pokemon_animation.c | 72 ++++++------- 60 files changed, 230 insertions(+), 171 deletions(-) create mode 100644 graphics/pokemon/cutiefly/anim_front.png delete mode 100644 graphics/pokemon/cutiefly/front.png create mode 100644 graphics/pokemon/dartrix/anim_front.png delete mode 100644 graphics/pokemon/dartrix/front.png create mode 100644 graphics/pokemon/decidueye/anim_front.png delete mode 100644 graphics/pokemon/decidueye/front.png create mode 100644 graphics/pokemon/drampa/anim_front.png delete mode 100644 graphics/pokemon/drampa/front.png create mode 100644 graphics/pokemon/lycanroc/anim_front.png create mode 100644 graphics/pokemon/lycanroc/dusk/anim_front.png delete mode 100644 graphics/pokemon/lycanroc/dusk/front.png delete mode 100644 graphics/pokemon/lycanroc/front.png create mode 100644 graphics/pokemon/lycanroc/midnight/anim_front.png delete mode 100644 graphics/pokemon/lycanroc/midnight/front.png create mode 100644 graphics/pokemon/oranguru/anim_front.png delete mode 100644 graphics/pokemon/oranguru/front.png create mode 100644 graphics/pokemon/passimian/anim_front.png delete mode 100644 graphics/pokemon/passimian/front.png create mode 100644 graphics/pokemon/pikipek/anim_front.png delete mode 100644 graphics/pokemon/pikipek/front.png create mode 100644 graphics/pokemon/ribombee/anim_front.png delete mode 100644 graphics/pokemon/ribombee/front.png create mode 100644 graphics/pokemon/rockruff/anim_front.png delete mode 100644 graphics/pokemon/rockruff/front.png create mode 100644 graphics/pokemon/rowlet/anim_front.png delete mode 100644 graphics/pokemon/rowlet/front.png create mode 100644 graphics/pokemon/togedemaru/anim_front.png delete mode 100644 graphics/pokemon/togedemaru/front.png create mode 100644 graphics/pokemon/toucannon/anim_front.png delete mode 100644 graphics/pokemon/toucannon/front.png create mode 100644 graphics/pokemon/trumbeak/anim_front.png delete mode 100644 graphics/pokemon/trumbeak/front.png diff --git a/graphics/pokemon/cutiefly/anim_front.png b/graphics/pokemon/cutiefly/anim_front.png new file mode 100644 index 0000000000000000000000000000000000000000..3a3a17092f78e0352b4f333408b9c0f3df0f095b GIT binary patch literal 8057 zcmeHsc{tQx^#34{U6eJ(*q333F*7Fn5(?QPTE;9)jAdrR*vVQ_Bt>N>YqlgyN|tOX zm3=L1g|dtA9qO|^zwbYv=lOmA`^@vamwWFyuXE1poO@^Pofva7Lv|KH761UiZfvA) zNqcJ3u8;!^w7YQ$$sPdUu=BIFqgbMSfSx1|Ji!eIq)WMjwGM+7OrIv zAFIBq5V{Mvqjz{xZ9pd}jZ-7Rt<8IG_})Voh1YpK?@cpVY$CjnyPGrYyW@o|AM}Ws zfh!_E3bNwVsTqr_s%dGmy)!e*He)+Y-_qiu*4LXlGhULZ+XdV6Ki4NdPtcb6Fv9@J^18)tVXSPhyEC}ozt7z0v9d&X?}C)?(_LB zYNMsJ6*U&|#ePCla>mLs=BL6Gk*@hUS>_gB`)Q8JKD3r)YTA;m3d>Rj%D`}%Sox9X z@YIm#C!g`afb0CeG}+N$q^4LiS|bL!=QZxgM)IZ)4gefnfMMRk}F3qYLjSmsxUy*((j zU^ncw*iXo2t4H);3Ay*Wmh0Z*V^q@=)Mx6*)Hp)C`jR5_#nmr2C>4noY;u$3qNyJe zw0aX#x8i2JkIN#SG$pHfm92cT*cnp~qGtF%^Rc|TS#S%bDeLc3#%9Mhi%bszhSp0Fn<>q=qeVu{G-;8P@5p zCd71h_gm)+@rR1uW{R@|pQ%2#A{@`*`@~(V1ui6g;d7zh<9tILJWqY=u8g|+yw3>@ zSq0TmI{7a*T~+6Y-~!IC9maLiI>HS`>(9P2U&-`pJi0#3p_zLO zD!{kLq>p#YcWZw3gxv9w-%?`~nE~3~26wg7FQQPyyQNClvzIbtyIt$H>#Wd|qGe2%dMgQ!2MWbjLeAd<55n8o3l<$WsdSQ{ zgu#s02YT8&lJ08P>4}$+&Uop2E#Ka$|uE>$3H~AB` zh6}b?^Ww$mXYOU)9XRep!PsJJFzsf{W;y}s1`f{bLgQ|RC4)uW z1#bCuKg=%K>$e@6TRvzvvU2l)qKsmE?Lr2}Ax)Mk$$IUu%Iej*@6W(zUoObk zvMJJwOTUG{qasHmmJ|a046|OpV&EF>8MpDMK}`t))u0i^C7yWvD_UDa#s6 zisp9bwnd_pM+&ahES$g5DG399X9ug6*9zVYOPWFTbn7_furuqH^ZW2tF=sDtJ~_t9 zdvsgT*}Nm58zUcM0r(&bzY{6MfTHRkh2BY`MC!hmp5=Qt!#GxxNB_h|u2z11L!=UY z@LG$KSlT&5Qt<_|dk=3+6VvBYDO=|m39`?Qf0F?cyC;my1S2jW%%12vGmVchzw~C* zgH+kNeV zfq{h`&nmL(KVhe?o;bw92zpd0Gjmj5%P~4l@gbVi=dk4nH16YA^aNZcP6YcAe@FFZ zueRLtI-KO%kJ0xZw;A0QNA-331RRfLnB)-oG^Iu85jqRXUK#n20oXUjp3ka8 zKC3RF`MLUd4x;%oc>$IE=DKGmr{}mXW`H`c1z@#X7x}AJMQp_f4@OC*jW(^tWj$&%5&R`s( zygZVzo40_~*S_geh`|cv-Xe@%2v3|mSUKAicr;pGP*sjdoyl^`n2ks-9juwIU=uip zWDskyC4&KzpSGvQgvH;uy%EpUcRU8c>??z5$q5K`&9=b*;pDP2ZSdd0}i*C+htEaj=LFFB+m z#MVb$78)CmB>Bd6cFZlLe|5=ii)Xng90R&NRp8k)bm}n61o}pJRZ63-q4<~`6r><8 zOunKvTd-Ce$892Xb?Ctte01wMU|?OZ0EXaSY*Yag4A`I|-`cxLq$_MFtTs-auy>Xp z4QOBt%^VR;s27mSZJtc%_9X%82M{s~Pou~Z{bHWeHeLfSSTQi8h{ zug!!j$q2||1%+NXFdgq376%_aoxY(%-c4to`pB#Z<1^D{{?bx&Pe{!p-0A)?+cuZp zc5BM=L2Ik@?F8}%+#@kx-e7wPDo^G~Jy}HcgOF3@Km!te=%uJe{LQiJJjhBhcE1VP zMF`JMuvOrxLD`{~uO0d*2SiJcKg8rCVS}elh6bt)O zvBhUBY`5-$b!tF@N7j}-_Ys|CtVbIzSK(^H+eg~wt>&Gn_l$GE>ot?66`Vt22Yg?x z1d=~XM_#sgXl6rcQ0L@*s+W~+#JUr`suQ_3*p$D0QLiYp=tpVm1TN>tB`4m9NTEAY z5Uh}%7%Vrm<~&l?B%}kJtgdYgE%%R{p}%^<*p)nUGSZcaa8Oh*{-u%J0U06FF{8wZ zv^R{jFQK1W^<3>NNlz8+GG&w$IDwA2YC)Wwchj#js#nktj9o#@&WkDUud<=kzHk9{XvjUbm+Jf! z&nFQ$0ZL!j@MgbU(9@AGG5VwF{>puEAWg5dw*qRZaB&2vJexz94ceT;aT-aFX4m0% z0%UzBb%5fEIK}QqAj`ug&l;PQT=ABd64`N=OtxO5}ebcIb$;FXn3n zMNwI1JyU6u{b5st+s!Yvg@F>n0>{kc)#IgV6Dy>1nS}LI9ZRL(aT%8;h&ad;pJX30 zTUQZ z)1}fXE+^64)FPAP7_KC8St|^3sKYHLe#3&^3An`;CPI9bSe=w10G3^d_ZPu-zdB`L z_j)+2ZGM3z_Je-M*941hhIYdqLm2P(tz;m?T4HXk$;v ztmkLP7DOlb8AV@fxM7KHVQp=J*|+tXh;T?~Ml+*cKghYudjfLzSW&}u75~RASEH|W z9~X;NjHRC_YT7i1N8SrpVXmP@9hXuqNG&s$6TQtD!xxtwaR^k!7P@kqTGYT5(FABH z^uQ@+pIUv|ba24^j7ih$n^NjGq~W_aLf^bm09zY1X>Cq%sQ2rcel{_xD|(Wq6H`_% zC7L*!z1E(5{PM2)MRWgYR%I{N@&I0$>?1ik$)2SSX;S@J3ZO&puk?MYT4x;_yZJ2n z4po)wjlRX<)0uayB9qD;@DnX0F2ZwBUfmjZEx*!hh_8VQ zrIHdBK`#O3iwAd089Xq^btBK2(CJWn@(Y20>Jm$ndl&{Sfmsf?o`{na(VTz~#IuCP z+`THKBiC3Mm|76qaG+RsX(H&v7?~JQx-4(|L z4k-V$y$co7Q9mKQ`gv{LSS5f@^>|j6p(BYeODF&*s>`X_2zzSv5OmdBrY>-XD@`inlwu%pD&2uIrt$GEcQD+-*67!#kEMCvRda6-m3Tj@`-&iJL_vf#AEE;$PA`AIgB0E&iR>JX zY7Fjdd~VjL75?#i6k$Vy)&KAgfr}$p?9eWZIciMeqbT`%AHT_<(Q-=goSv|^q%1gt zVWVnz&PuAXu|}dhvekXQTRa(gv>On+x(+utw`5tAn!~30&VGa%^XT6K#rh_n1ZNY5 zm)fzOg9jd$J{efY$?0|09`miPtV*~Pw$UCCT(YVKQLays8L(E z`GQq5$c9NJ8i{pzps*2vJbC2W#f-;C&R&L8udt@TB*2PsVXh4gH<}BsT&sA*@hA+q zLHB8PGJ6&zxuYceIC^pXspz)_jfGJ<-K~jYVV6v_FbKDOz{_epc*Aca>R51?BTMzki<5TRjDpx#oI6a5AA3^nV&v19(?f8%9H2s0C+9qlB&wL+>lasN5?8v9Ou(v zy2w$CNLf2I`a}^-ItSgVIpH;4TZ343M3#Wv}$GP~y=4&;tY8f6p+xE}x z8RLAzMe0nydEo@@EP$Ut+w<}DX5H6@6$lCm-6?2ausd0N58@YwK8}nb z5j-gb4|m`mCfdp4GDQOfqKyOp@Q>(eYWgRjWa>mR=DjqHc>cSmUIf8zc_`j6Q6g=tczrYL<6 z%;i1zjP*4@d-hRS4-5f|+JD7klreZURV3I6hsS|oaJVuUi9ln(P^=ov34uprp)kbX zpp4zg6tp`Aw+BT7S0vDIuxJbfid2Pz@eoxg80Lh=gVCyZC>VipLST?+BpwQb{|(|a zi9oALwAyS&=@=vNwa|7hr(h|Cp<_* zG%cM3BH9_JQ}90#iXCkqBj&vZ~5oLbf;(nO2K?s8EQa$}i--#Gq*5(5OZ4RVoc&UxOA6N{@s? zQ#?r49v*HQpgpI6dz$+N4pje@79#?gCPCe+`QKGU}o;C|tv(3oFF z$Y^gIcHa<9@7EB<1?}#Pqs{Q&CG|%?;eSaN4hP5J(P~a$7zPdj!=TC#uo}_{3RXqK zakN5!!POAI()A}g*#l4UL6dMg&a_Br(a=h0KN_ISZ!%^7>5Y#IZjUJlZGJwqE%P=fA~<}7x>#EK-2rxM_XKIYn9TUi`8$w_9*;6{QS5OZW}9&>-|+x?x> z-tEG)cpL3O=XA)U7*%l5P)EQk|Hs-vT zL)A%Y^`N_Q#BxHuoYq7jDy=~|ZRYxqLNt%h1Aq^MRY+Si;5i%cW>c4{QFeL6h+_E# z|hghgfBHX%>$I9%+~LICLmb` zcb1K=%41}0Rqo0GI=RuyBZl0DMojG=&+_PQcX`&cZXU8^_!dDlPc6}Q^$q9^k-5B^ zu^Gg9olZMxYTPxOE!8bbbxHPf!fTGPnkz3fy_-2ufWr)V`N2@TteG76!pog_U0AM>br5~c;u`p&l&oeXnfYQ zzS#A-yHHFEa-t^s^;p8mx&>BvhFZ}3TjpDhY!W9;A{L|W99Ge#?-e}@pK^N|`grGU zfkb43loeq+!lvI6-A0X`wFGcGJxv0=rJA3q+fSaD)PLq$P@fPlb?1cnDU6f7(Z8Uid%tl+qD z;sQ`P1jIj6J_%%T7I;J!GcfQS24TkI`72U@mg#u9IEHu}e>-8L-(dq0*ZJ)cr^1?p z4$cslF?9dgbS%lw`_fDW(+T_ziD`<-62H0c-k9*K*rwgEF3w8vY1PJ({&#!Lbbf6Q z(%!Fc@QpdVV|91q4L}9 zyn?s>;@zZPfgF z4M$@JlUF`YK9&wq|DzSd881Y|uk2u5q0)6_UuvzSY~FR=`wsD{yZy>+7!>CU_SGq< zBt2o|;^?0=-|$l7HRGf$igvB{I#n#4*t^9HnSQXEeDPY~x#7YuP_TNs`njxgN@xNA D)+D+9 diff --git a/graphics/pokemon/dartrix/anim_front.png b/graphics/pokemon/dartrix/anim_front.png new file mode 100644 index 0000000000000000000000000000000000000000..6adf23406597b31e02835c5156d77fe4b47914ea GIT binary patch literal 1054 zcmV+(1mXLMP)Px#Fi=cXMVQc_C}0?f$WUM?AW(=fsCYmS5D@tI__(;ZaBy&tNGOOfAn1rNz)&Cn z00000047Dg#sB~VoJmAMRA_)vFbqX;aAX_9|NrjjW-z3ymdMQ0pw%X%&DoJJ zDAt*#C!Y9M5h%WqzbHbOCA>6|W5n>r5S#;X=pzyKmsUd9EmIPh^xEivt1(0!T4*{@p3bc-#H-KJZ0_(ck06J;sZ~$Z$ zc8Xjq3K(uB1}w`3u#nycm}s{kVVU)l@q!8g0caA(0H7iSs#_MhfL55Y0YHTm2>_x8 zx|GUB1$L;HF(3gFA^1t^BdW6@0ZJijzN(efbG8DA0PXvv=@noZfdX>w<@^_G0z2Up z3^3}6z<^TdJ}5T;jesW%I%o*MqelX;K2m)K8Iq}@c2TztB24s431Rs33?L1(7anb` z7mW{4*LAD%P#baEwrbb2oI+Ll%1QvBPX`UrV+wWvAx=|XS6Ybb0DSWH$0we6;y;VO z)x3Wt_q5w*{p*Mr{Qg0&R|CQ29~|BR6=uJGu)i5#Ugp{DAB5QC6YBX;;PVeO0WANd zmwwgbA7}!-z6(S9ADW&3ocG}#*a51)x(CVPA8_B^61cbrruLuOcF{}Q*}De@05Aax z?10`q82bl!C@%!SwV&S&aJUEK?j7iajz>B?O!k0XKL&71!-t3l=-q=cfE$v+r}++W z){ln3J&6DsAzc8!oOX+L#xexIf1t}vi!j~s4@6I=@(|#Le^5k@lUQ-X`TYaY(<~G` z;lKR;L18^paL6%w{R6t)v{M8rs80WYJ3`S*QF8kS(Db!3A-eqood7!0vzO=g4~lLg zB+$x7w|`JXpK=ZSh357T+CTaGBjR2xPXB<*Zl<^KR%W8hKj1DEBtz(PGW!Q`mTOL3 z4E+PRP7wI~1HBzDqq6%4<%jhFkAHx-(??Gyra_3bEJOdG{L~Vvfe`VSa@#+^{#P7? zTmFHx{OTY${ew>f!D~QV3Px#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_C}0?f$WUM?AW(=fsCYmS5D@tI__(;Z zaBy&tNGOOfAn1rNz)&Cn00000047Dg#sB~S32;bRa{vGi!vFvd!vV){sAK>D0u4z- zK~zY`?b0!8+dvct@GAvD@DizYU9#!OH!xkYISB6=&Ja&(P@ZIW@}egtndQ?~DA?XZ zU3yct4z}kSqO4hhze}Fwq|oXq&^>gBcj9gcmicc@&gZAh~uOV zoDujq7|+sV5{=}6&w^GyNRr76N3N*?t89@bIK>)pyaku*t6v0~W?ub>;CKt}3IZ3Z z&j8EwIs|U94!jKr;OYg?3%nMtr~`iIf$Bksm$(CyD)^?GTxi<5Z&O57s zD8(TVfO(kG=v7Wq?BO&H!9W~hin(TnQq#C1Y_BuZ91u}9-d%S>AQv3arATz9XBh)5 z9qC;NFdb-%Naqt6)B`KiI(XlWbe3}+D4;Vh@IXho&jYc#?^<0E0f<`Q3tu!g{05B$ zfpSp;mUoNdVL^+<=7HUS>P4}+5e<6XFu?j!+yj6wmbWVw2n%+tm%g=R!E?xgFJALk agm?t4GyfECYWGF}0000Px#Fi=cXMVQc_aA;ug=-?0#5V$Zfz_6g`U^r+X7ywW>0H}Bfa8Lj+I3QSX*r<4@ zU`TK{IOYDz*Z=?oXh}ptRA_^x==EZ?)7AJlR9 z{XPVwnu%w99vXn}!M7)+zJ%a?mJkQ0UlsG?e zpomri04w3vzNLP@oAV3E}*tT_D zrvS9B+vc}*X?h*OqZR|f`sEH7CLn(tgl9b#kqJWxOuR=D9L5%UNn$`4+0fW{s7M=s zegXJK7~2b2@*VoE5j@q+Jh+$qj_?;QDM&&9B#6NPI0Sq;_7NjCmiic_Na5Eg0mES@ zazPX2bwwW6C?KLF7(NQlaB-lkjzK_T0M`O*eP{rbhHEf~+peqHzP#~4S-sJ6Qu&A$Q7jOBXK>w?WGR{&OoY114NQ~tOO+4 z%c3uU(GU_(0RZ_dWPn^MHH7#cP^O@qB>|A!_r8V@-`BR1LDi=QFzz10I{;@Ode;Fy z7>;Hngd`bot472>`7YqET|I>K1^_idj(RTF0^bpj3;?eZ;+rH=q{DEd$0;~-)c>c4 z0n^Z@5Lkcm@_0NoyzalFdxaPmT(U8=qMK|c%!~bpkw=Tvu?PB;krd$j!4nnpdrVNPZ z-d#<&8vr>FT@*gNurL&a+W$Xgp&{VBRZVvwbS4Uw(HsP&kHg-B^#62ELeqNI{-2|m zG7xV4|D1tv>;LBrg!R_{&lw24|DQAvTuYa)r z`Uk)M!9U<16u_u|Ab`7nkQ=UX|3Cor4KUO*-T~b|Pf2c4;_Gb`Q|&XzYU=0hR6~%K6qsykj6f!fRsD%4j2z1x8JFD@YMquv=5qr zkZ$_NJ%kVTL7M{V4uk+k?Sp24GzTI32gCM3H4vyd2-!a%YwU=9Pz;3ZAdu{$-0|kN zxrFdGi3I%%2Z6@ygQ9=oAPm|E;&{At5Qgo8$7=^cVIMqRItW_(;PJJ~|F`XfKL{^p UL0Q$N3jhEB07*qoM6N<$f_Jqzw*UYD literal 0 HcmV?d00001 diff --git a/graphics/pokemon/decidueye/front.png b/graphics/pokemon/decidueye/front.png deleted file mode 100644 index a13a33a2ae81d4e4dab8039ad1652c8b2c340c44..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 925 zcmV;O17iG%P)Px#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_aA;ug=-?0#5V$Zfz_6g`U^r+X7ywW> z0H}Bfa8Lj+I3QSX*r<4@U`TK{IOYDz*Z=?k32;bRa{vGi!vFvd!vV){sAK>D0`^Hn zK~zY`eUs0N(?Ar*vqZ4B&@KVN(@qWSMYcKyYJWt~B?z82abyv}LqinyB+3>&>DI+2 z2QPcDlarFmCKm-g2<>h4w0mmVV_HfO_R_5XK!P)^g>5_OJ5Bh0=KJ2f_rlFZHp?xI zEC7XN`lY+l>QY^O0hj5S=JRHAnQl2A#?2)98}{@~EO-|C1-fVAjY%_u9!X4Q!{63)W7K)JNliuq{e*MSggn>g=82 zeOE__7&wq^z?G~UsQ!`|_=imWa^3gqW-T4y&H4w!q{DK2W{&r&xvLrzfN5dfG7R(H zc%y8e(TNOhn49Js?2G|_vD8q|sk_EA4>xG9S>v)c4XB#0aRYkT zWdU%vCPMY4*NPxiLI%J?xP@R5!cjkpdMx0~6%o4P>H!HBAe^}x05%1>QlC+TVC_qq zWbNsrpbG*9kXY{|0IWSJ4o*SvcM*uK#uOkiU;==q0O`QT9CZLmIv@kE-U3f4z$k(M zLk+BZdmB{mE&xJcw?d??JNp|W3T!L_)?p;0ZRY^RT`4$a0iH4>d+&-dY1Cp7LQr&+ zP(+Up|<%s({lDPx#Fi=cXMVQc_5Kv$c5D-|Ppm1ndD0qnI=;*kxpomZy`0!Bhr~r_lc(^!#U}#X_ zc$l!rpoIkrp8x;^X-PyuRA_A|p-bRFV*`e5E}x&DPt^)S*p$!!PzMbG#$Zj& zfMr>N_DBY7TL*wv(Uofurj7O6^!ZG0x*IDCs}U+dYNvJ6Dr{ON(r>E)&;hm`Ah$DJ zq}t0JZ-W#-JOq?}qKhhgr!VWezKeyJ07SS1tRjyQGJs}97f|#>Sl4Ww3e5t@01*8J zfP5-~#M1OI7=Tftxd1>E8zx5(06kmncL9~22pF>)6cs($0mg6vU>*OMOm6D|4r(AC zY{Wno{Sq)h-UABj4uA>!?IW{jEx86zhs7NrmwN#6OH-l`Q2o{&$ORxPXOEB!RDjs( zZCScigVuuR13+j2yxe#LSX-cVs_41puMEJ9l?7f4gI1v53E99pbOE#MInn@KfLQY_ zKm!IVfGo#{0Mkb@KvTs4y!X3C3>`pq#0XoQ;~VlM+qFNnVo-o1=wtN1WPtvnbq?)X zw2m(o;JfNEAalz$cQ&9SHC>d6ij}@=K?&Rf@`!XLZB_(`4`vu$cV-(@`!P{Sjr_GXUW54LltV6KPK0(>a$B7w?>ghg9sVzkUvQ%2WPT@%hiM zdeH@(wNwr?~Zo><#4F+jUL26^8?uHPxAu>&|613 z7YtPZ)Ea2=1CTzi^8>${Ugrk@Pkx|xNkuBalOH_!!IK}%PkzuTPk!*^2mf1s@E00H Vd+f*4eU1PC002ovPDHLkV1g_2La+b; literal 0 HcmV?d00001 diff --git a/graphics/pokemon/drampa/back.png b/graphics/pokemon/drampa/back.png index b3460057efb2dcdce3003190150c42a1704011c6..be44b000bce02acea65f57059885d99e19678e68 100644 GIT binary patch delta 586 zcmV-Q0=50K1%L&R7$FD)0001;w}I>c0004VQb$4nuFf3k0000mP)t-sn9!h+NiBag z0O_&-00I6c*Zh;^qTrAiwo5k^zIzPieqsQ^DQCY)f zpUUlv%RWI=IU{!UN*-&IV8rC9UN3m2x24R62c_qI2(@m(+Nw7I-nm3rw_v3HI3mHB z4GY46Ng4A*EKXM% ztORW7gc49Jkf>y)C4gw7gEbgHW1<){q9X`E7ecZS3}QfJD`&_PR{*7{@DqOvgOf}M zBwPU$3+2lk#2uguK@tRjU;^kv5Qqy9PSpwkPw$*!lnsS70D;pb0SFU7?TROXp95$H zsC_x!6lGEI7~oww#E$@^eg_&LLePLK1O}iaC_uHq?-HE_zFQFx#1`yD6EE5i8cLx#zM+KC`6H%A^Q1APPukRN2wwvMu~cLr=;Z}#2j z^HxlL2z4JxPptuRXt09xG^5dD@H&ZdXrRx{Z}e&r30gk~j9*Ql31uFv4*(qN|Ml~F Y1NYS@9g2-WC;$Ke07*qoM6N<$f;4mTnE(I) delta 637 zcmV-@0)qX31+xW^7%>C`00013M{Ml?0004VQb$4nuFf3k00004XF*Lt006O%3;baP z0000mP)t-s0I=whIW2z>km9re000SaNLh0L01m?d01m?e$8V@)0006ENklbMvv1SI){# z89^Y?{yduhXmG@jy6)pRPOqJ(MNyRL^>Yx9bAZo_;@8ai9i4wFrHW-3Jh^kF;`sul zf*5KS1d0kIYa6TPaqbCavy6J1s!$X6ZwL}0R`wJG)B>KY?B8IQ1R4Mj)&{%89!ork zX26pNPO~7n0l53#o&tlQlnlZ-$CTGV`AzU}3*aE)TVS`S#G=|<0Of)0dsVmHW*)Td zzHNO0pmcyHl^=iF)*RZd8bI`h>&O6e<_51ryB%sow5`bqlHbp!1F_#vz|H|^qIiAQ zP-B1Cd!7m6p zl>F-%WbQ$s191B^q=ZSihtloZy-Ke~$Z5{s9+}%WA$>4D0X`^Qffo;SGyiXX_9euB X%XUjN7C`fi00000NkvXXu0mjfiYy#b diff --git a/graphics/pokemon/drampa/front.png b/graphics/pokemon/drampa/front.png deleted file mode 100644 index 6aecba694918af604105278c7ace267db12428a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1067 zcmV+`1l0S9P)Px#1ZP1_K>z@;j|==^1poj5Fi=cXMF6nq5Kv$c5D-|Ppm1ndD0qnI=;*kxpomZy z`0!Bhr~r_lc(^!#U}#X_c$l!rprMrknE(I)32;bRa{vGi!vFvd!vV){sAK>D1B6LL zK~zY`eU-m&(?Ar*FIEP|x>g4kWULYo6+?QBgjA%K=H$#Y3XGM4`^?gzR_YrWkWkBi zkczPbD}_!TGBANq#l}!Y`3Jf{B^WGpym#j~&X00xtR(M~_rCXjmECr1d)Z~TpNh>n zuP-91f(gMY4yUubz#c>bKs2?TH|AXg&;vYSPRzNeLWE|SKxlx@tc&9SLVQIDG#AFW z(?5f^{r7-=!n$ocyfG8wq<{Ld-|xQxNMJ2ZKiD&XefQhx2?A%Nv->bjFYGCx!k^yz zdh+fI#Xx|ekIu?OgbJC8dXe>Q*Wd2%j@IUcozaxRshui;J|6L zZ}`^Z&x14|m0dPc=@`IoV1yx*Qa79G3O@!K$a0`cszyI;rBXyR(3%1Q4P;7XYM|8c z>JwH2Vg%I1957Ntxki920XhO449Wd)7{vs1r8^5ifW#0};35#k9-9Mv7?OR*T|1W; zpaf_M=(R;pAzjPUKxJk^gn=k7$aZ1g5IYHdMSx5Fr|n0Dozr9{mkbwv8u;p4A2-z*>g6t!9W!<3=o^rk%K3EOVJ+FKN{=_77=&FJ<}Jdn*6{002ovPDHLkV1gfN;4lCH diff --git a/graphics/pokemon/drampa/normal.pal b/graphics/pokemon/drampa/normal.pal index 7030346278..5639299f95 100644 --- a/graphics/pokemon/drampa/normal.pal +++ b/graphics/pokemon/drampa/normal.pal @@ -1,7 +1,7 @@ JASC-PAL 0100 16 -0 176 232 +152 208 160 16 80 96 16 16 16 88 160 160 diff --git a/graphics/pokemon/drampa/shiny.pal b/graphics/pokemon/drampa/shiny.pal index ecfd998780..1422a88ff1 100644 --- a/graphics/pokemon/drampa/shiny.pal +++ b/graphics/pokemon/drampa/shiny.pal @@ -1,7 +1,7 @@ JASC-PAL 0100 16 -0 176 232 +152 208 160 152 96 56 16 16 16 224 176 112 diff --git a/graphics/pokemon/hakamo_o/anim_front.png b/graphics/pokemon/hakamo_o/anim_front.png index 2b5112a2d5b4afa61026848254817af74026e8fc..599bbe3eeb19e58acd4e08a57f115ee098bb4162 100644 GIT binary patch delta 1240 zcmV;}1Sk873z`a$7#Roy0001tU!Pb2000DMK}|sb0I`mI`%#mTdp>^zl}SWFRA_C%qqdS+~`RFSaf3@kRcqu+yMrl13U}{*>~dy zr9wV$EW!r>H7FJ3+tLQ{140fbG6L|v0pOk9?F7~khijGM_g`s9{IFJF>i7!)c)z~` z$fINl;lJZ=0eGHxI``fCUxRQf1MUKrNB}J4b{~JV85V3~WDHU{Xw@TZ z_|Z1!#fUL*d0VsyW>lsSM6#**0X3yX7y=L!Dj>S%ejWlgl>vzLs##Rcu+pkn01klY z-0$(81F(^7CNz%dNj!QGD5n4d#^CjE83I%c;RJA`w0oHfu3B9H#o!UYodJ>O)tZvW z_^>Jft}9mp*GYeCHaRs$wK90m@f(%$41kVNb1#fg`U&7-6**o2Caoka>L?d3a!2bV zfY$=zQvw@TM)bk~`h3cYuHoHy{(Oz+7kM!#{X~l-k)v8oIo_A}RNW;3G@8ZB@L%FF zR40HYSE~Iu-cyaoSmFH&NGH{B0V#D!fJY0*gAk&g9n^mmc-tsnmOvUa!qD(4h%+?j*o~qjC_} z#lQd}LC}qxj=X;SPpX3ak#|_2v_qzh({o560AOg;J-`K)0Ne@rSp`tu*66zYgs?zB zr>Sm>BcFfU0O|89pziZK*>e%Q&Kvm`;1qFvmnA5++MD{N%;X0uH23L!Ki?{_1rz_XzyZvOx=^7aINOY%sm+ZviUJ_ zPrA}MnI8{xa!(rO!x(^(e>}m+fQI>y32p6-g@=Fm=c8PSTjoOobhS4OV1ZP1_ zK>z@;j|==^1(7j6e*ghuOGiWihy@);000E8NklzL2Khi6vrimPTNC9PBw=$ z2aQ|`1%s?%9fKW89qrwTYpKvvYCLY~X%W)Ub1s4X0L{63DTaj&hO(d>8qA)oOOnIF zl6;4LfQ9yrB+HiMQ3~5z=U{^7m-n7LZ{GiJN%~J0LR;1Qe;Dgk`!a@QRsh@BwyOc# zwtE$T4Ey#`RSEwJs479Tas8;T4*Nm?Ub5x8Oc+G_0XHX%4Mh9>ofl*>I2eios1Q8x z+6Pn!uz&^aivwpQ09?kH_v)fGAVL6;U(SRXc!VJv()9!~%Gbc0;W!6qcq<1CDXg^& za-n_rK5CHhEua+YN%c85Z2ee~q57=Wbu=2o*80f&poOn~=Z8X#Xn3AE3-3H1T={)L2}_fJ65Y zHikpEB|)w~qwvayG6JKl1bl`qxP`oSQwc2qibFy+YA{z6xV)yeH?wf748%j8kjT`? z-i(mam@&2ZQ8$_^vW}weya-52@)^w~S;uGte;{RmMhr^`bl}K|Vv;D@IO|Z2pI97d zBOqh61bA<3D4>Z+GG#j{SR&FPETcVCB|MU*>A4A7T0}FfYK11IQkmjYmRx&eU&A7~ zNtX7AJ9re3>pihfJ zM`7;rC1hMLhH$wg(hR7Vgd3)y?~gNGE}yJAVU9C4L-Hn#P&#_mr?k^a{lg|e8c;I% zaVh@W&o{ImLEs-!`=C8PDWB_cZ?}E^e=@D|3%>-Y+r3?{eU?7oDV>VyYIt|$ABxh> z1?dG^^AAO3F8PNNQ1lN)Kt}g@|DfjE7ioc6aE z&40)+y~FV8TH-(xdnKTTVfcpETM3Z31Nb}ZK84`BFudI2X#+M&4aS;%u#7_hf3}jR z&Pe;x`yTwmntibD<|MpM^0MQ`&HinR`-jy_9Fk~}2n6_tc0004VQb$4nuFf3kkv=|u0j)_yK~z|U?bge3 z!ypU=P{XwZ3IG4UMFMQ&Ob3Cx>O_midFb>433%K7bvdag?OtlxDDBl)=!d`7g5dl! zp%1Vid;q(j1l(ic8=(nA>wpRfGz*Z_A%Ld^gj|&%0%xI(!x%w&GO=y)2+BYROfvwn zw30AcU=@_G&SDXNN`H$Wnfz`Rpcz7oP=LT@Kvtr*%aSM{ukh~K)*i~RbIF=0#yM7C zA1wVr`?!?M0V@!Jd_@KUkdL;ax+;kA1zp~a#tQge0U^HLnt;MM$0v}J#8*U_%_V?k z3~#j6SpYbX0gnJCI=*0QfFio4c~z$c{r9yW3)C*4-|cw- z*9(~XdjWI+RGt`sUTDE<1WSM2+797-2D0_{5!`kVF!uMr?ph>kdk4S^pn|=>2dZF> ze;+{wrs^*NJO&)*fqn#T;a;@^_TlWO^n1U|;V=MVN2GKE##4~D{Zx(o81D%TK#Ea~ zBp2!WQ)vySNmqOXT%P}B3F^%sGa1l~Hf!Z;m%2-HefN*wd63c0H3aK4|OdVvo dx%k#f{Q%gS8)giq(PjVu002ovPDHLkV1iQr+%y0H delta 567 zcmV-70?7TZ1pWk&7$yV*00013M{Ml?0004VQb$4nuFf3k00004XF*Lt006O%3;baP zkuE-e010qNS#tmY4#NNd4#NS*Z>VGd00GxYL_t(Y$IX<#irYXC#y2dNGT0B`BBVaB zvq*B|JcEhZRV4^nG^zpzW_QxNksCMZ@&I|BoO?ka%~g7a%vv%W-aoo3+#sYCe3k%6@4Cl0!MjU5#vKNKpo^y1bQ3AA!1;FsSdBn;pDr>1ET%kO zQiPoHD5?}dDRPqp_#$tra1nP>xkF}+tbzbXD;WdagRxbxjl99_Tg1IGXsZyAL1P+3 z%xgq*4phk%Skk2=0KbOX5Kxj-V2P%*_g`3`j}ig2LbRg!_TcN~o^*hnLc12$ct8n% z+QJaHJ{E@EZEuPcV$`82j=u~my(Ih!!0vcJi3vcrKMU$;8wKF|j|rewkOl~$&#rHa z$gipdPzp^PP|96(0@w+l2Oa5Cxke$21NjBe081A3$Q)2>6##}5+GWon_Z*m;I~U?| zWXk|Bc&xZ11d9S6XEdN8gAvf@8F?*#6F~Q##wVzcT@Vn77Xo4mSZ$)f(B)<^n*cuC zzJK@UxdUvxRm@KV(T~8{vsj;c%F`dBz^AtD`=|D=8V35a2k`b1S%c7^RmNKmeC_lT z{Y`GklvuNXN827qG<1XiPci;P2?UAt0Qu|VH3wt=0Krr|5q?ZZ1ONa407*p#PDHLk FV1nAl_J05X diff --git a/graphics/pokemon/jangmo_o/anim_front.png b/graphics/pokemon/jangmo_o/anim_front.png index d462c0adb83ca9a49927a0fd8bc15f5822892045..9f3abb069677ed9e9d671c18fc33410769d5d900 100644 GIT binary patch delta 766 zcmV^xzez+vRA_?{U7(_2dp~nlF+Wzb3yFXnTx$AhCrKdnnsKm@f;xpfNm+jW{DmL zkrsKEgGdi~hrvnvD+Yf3vdjy=ioBx&i-pK_6_KOQAOH~{#u!~`6a)Tp;t)Bx^hlx( z5JjnaUl}kGcOg;K;2VEAOMt54Z?!-(YR{nvBCH?lwryY~a6AJG)C1S87`Ws$1D378 z20M~-3C#fIk_3>vJs=LqGQM_BfbIp9W8%r6ma)dUi-NRg(?fi#UmA8N(pi5on8o3_ zCQ$p3FHqy9M&~d(K7t3C}8X$TOD0s^NBX|zDl%#(YXffFWJK8#>Em>2_ zy3X!{DRCbrYwD;^e(#Cr1kw%^!8Rwry(OLl_8k(jkbfkB?A+FD0GtKL!pn=Y`|pG3 z)j@iK_?_1vi#{g+`JH+UayDu1HDC>>f!*8=A}UJIf;bKG>m{1}QiBc$F@WRdH(=q} z0GvhO!#9*CP=kMvM!xf z)9_#M$0t9z&PlpUo-+94CvW)Ud3LV`#!uexM*}@T8+3n_pSQ0~pa7!+giL;Z zU;rcO2ya^BzuV#92PtY9Gp8x;= delta 813 zcmV+|1JeA&2J;4x7-Iwj0000OV1ZP1_ zK>z@;j|==^1(7j6e*ghuOGiWihy@);0007)NklljA6vypI9xK(kAQnL8 zqSQmPBnRrkg6a=|QaQ)KLPhKWmRhpk&PKimOJM5Ii3JZ#*MSU7ZYB0A;v;Zp$F4-* zvsXZQONReX@9v&Yxu0e2>Mt$Z<*ljBgz)H`O>{1%B*28pe`&xLRdoX79tOw3vCipJ z41ypKqVGB3ix!|CjU*6@Xy7@IA_=E>?z{4`L<9NSjQ}9d!jJ$mNI2&s4WTU@ z9V8!?s}W@QK^>5gE;T^prbC*&Uw)cXhtzOA&SNPLLU9rTV4&%gNz2>%E1$@$?} z4aHC#tnu91<4Wa%^LIG~Tq;#?RVWfrS2`^&TY#Jwe`?Lg3Oz&#Sf+oE053<_{&H9+h^o(+tG=z|aqAUo5q z|Kqzae`*7iuVNH&LLj7m{tdB^kfDT$)0tKfAf6K`jh}FU#VKJJj!a`neE`a%EGIPW zjjB+e-HFXE6Ykmgu$&Swg2C`{%SsSPAe4<@;DEdp4BQT?EtW$f?10BvEg1K31!GLU{#(H)Is`*?2*x^Z r^9Lgs9_bHPjbOC-L$ULR|G0hwM%^#Wr{yVA00000NkvXXu0mjf-9ulo diff --git a/graphics/pokemon/jangmo_o/back.png b/graphics/pokemon/jangmo_o/back.png index 6416369e961f2801700974fae9118b9749632137..209011dfa70d8d8e60796bcfd03392b1aeaf849f 100644 GIT binary patch delta 552 zcmV+@0@wZI1n&fp7#0Wv0001;w}I>c0004VQb$4nuFf3kkv=|u0qsddK~z|U?bh3F zgD?yRU@&q_f%kvj`IL~RG^gE7^Q5ZM`hO%bBrMCHE&y1$rsL~oHA%pB*Nl+oXN33s zm>>%WCD1K!R)7Bi^a=NcKY<=0ORc{JriSpAc^E=dC|W-OJY97}cyB&(f!4qfvfmvISp4Zs9%LX@BiXcw|ehPWI6$Kn4%st85*(rPMj9J>>hHIOmi z`TL6lFE(m|E@B1*>jY3QP^>_@DU315I7zn*?BMUrYbkB z-nsE`<7UVlx~2ennAy&i&St_3&hzXMU?V#mHJf&L13CnLL$mh_`^3!werwYqv^TSL q)sVlX;AVon_APLAx8c8r>j(9MAp$JfJ%|7R002n`MNUMnLSTZbRrz87 delta 540 zcmV+%0^|Mf1mpye7$yV*00013M{Ml?0004VQb$4nuFf3k00004XF*Lt006O%3;baP zkuE-e010qNS#tmY4#NNd4#NS*Z>VGd00F&8L_t(Y$K{nVZo)7WhJz(G255v>AyvXa zmtb*^0%@BMb{m*}6WcQAQqmLM0O4nrNz^2WTs0`dkR4fgl}#>)_3 zGRznoD+BcXtC$st88TfXfAj#c@iE0hE$P$&7&ASLkLyyQT27S>j8PM9MZnRp z8Q?N<0esN@9WR-RrjsIdd}@?-*Wfasl*Owc@mr@?0AAEf&BCW+pK5uNse eKZL)kDEbDdW#O+pz;7l10000^$FiAu~RA_cK zm45}k1QCDj3Fj#vojZTHa;^Zu1-=L%2y#MD09PEbe>*R;0U(FG8Y1+foLxx(hzG9D z6Z5jBl%UkIHUJM5MRrB0^UQ@XedYW`1Zncivc{O?pGA^~4fx74C8w#G;kc(Pd@^OO zuMr@&6}&1Z&WtQ(2*k0ka3eziKyLv>6aJ*A4niP>05roDfG>ZFiEyu^@?98a0%X{b z@fDH)xqwjmP+h4AUqEmk5R$MFUc&BT0Kka^&MEN`b0n1ruDF45g*>&GsH+B|8KJ@| z$|s!P0X$W3HHO&$T*`*9C#0x-_6h)tgl-tk^QorFkjHmdWk(c}FU5~1c^5U3JhE~D-#vH@;H=s(Ssn8cXYUR{ zm`?WqDLb`gSspM_%m;*2e8_X98pO==duIw0di*3ubzOgq+mh)F9I$o0cf|>S+tP;y z0Ab|BEI4H!12FnH0x@q35TO3LF0-D{JAgsEIj>qw5XNm?R+>Mr%aXL#TOPXIXL;Eu;_5etG? zA(U>nbv}PZk%f-{fu{xTh*V#)-cfp=WvOOR{%8T0!+z2L^cvMtg)<%F+iSH^?XmLF z0tE;uj|gwAadumKcnANU%l20acm-g+cKr1vCi)rbvpPbOZGWo(K4#6qRmppWCM3I2 zN<85dyTUHyab+mLBwCZa`M|D16xz2TWJSm)c}IT(%IAq>w9ry9$l|I>Re4~n@0@D}sW3i)l@s88usU9SMFL~Ph}v_7D^U{i!QHs311saJN? z-|Ims01SW~U;{7`vmJ57{fsHvkhWQDvK{sKAE1lZP;V=KH2aYQSST_I(gR6gHKA04OkQ zB^4n!k-b3;p3zcDvqJXs#>Dh~Bg`k1Sd|#AL5&RWna8$mRN|0p7au(>=T3jD z@F&Y^sSkJj`dfJvUO#felYTd%+D{sLr2=>Ix2(L8R|U8mA-G%a59YVd6@VR1=%`8$ zaL4^;GSXD!9ZC4r48n>%0geiidajk#+Z^G_+HzYscluJ9XH-6k)ARrkEBQafsQ}pJ zV64%}*^@o_9|JWfkqx807E$&cw45ks_1*YDySttIkFnr8 zE$@1<2R*?yfhh8IdeF%KMV@FONTr|%55-jD<@V`8A^+?JFIXL#D!-*%u1@NXqS5?aRptAp4 z_Wl-Sz}Q6&WvROy*i78B_vC+=s8NS8?uNa~75T30opU&C{FuAHVed+oAk7B%SM0sa z4#3{mU$S?F`5&dhfV9R*t=3r zC430S-`G3Hzc=z9viC?f`X}~IGycTh^LdW)^U4FjN9lae^C^3u@lz6f0C;5YGO%|k+<9y^AKAO~>|K?sjH*-M8}{zr z9eZb%9@^z=_U=3OPJ~TY@z6j>@7Q}!{3`pu=A9?@?yuPU1HdDDKaltB65uoT{-DBV z?ET4xk-htlz4z>Yz6VtJfW0e!pKk%CfxY_^doS|$^Mm~{W$#uu2C`e`2j2o*viEL& y@IAm4d;ih=V7j2{Kb#+2A^vQBaHG_8BmOUufM+v}-#^g+0000OV1ZP1_ zK>z@;j|==^1(7j6e*ghuOGiWihy@);000K=NklG^bFLgApj$!U@HN`hb707QKb!i>)96fp zngTkZ>LpEoe`h>q_vANz3Ot$|hd=(}cRRaI*IOehiQ)GrlNVC{eF^+p;Pa{LIZfUr z6r=d}19P8iv$+Z;_vNRSf|w`tv^c^ z!!&|cF9V`vCZiazOpA9Zrh(>N8Lx_$ewJf8Tf`tGf6D*@s?k!$+ALfGRK_Mn0O!%* zMz#_N7=z?xKkJHZ63vcd&YL>$kJ7c4vhVw|u$i@<67p``>Hz#yZ(t4ueEipz?{`AK zpD)+C{7Xl>6EquM2DrWgiX4QzEqF(Bcfq7-S=dX>?;F!|GY2SlkS^(;042F*RI!GWp_KAhCG+ z^Dp;dbn>-%9k4p=L-P5T;+1^XiLM3auGjuOcQvn~GkEZHwQ*@+c^C)UQ@D}J`7 z)@$RjhznpKn?1kB_dc^F?ks-mbbNU7SmZV09vn#UbzjFtUr69x5uQ97Ct_3p#!Q+m ze?MaSy1kGR+CuyR->+l<1gJgdSi=lAG}aR0xXc4+Y%q!mU7V$W7{&NEln53T_*0BV z<(%({j(QWP)1BdI$pg3pRj-X_XKO!FK#TM4sNArcJI#POG2`oEQ7mc$!(z*9 z$+`_&rFdmh*b_yYbrk@C_f-i%Q-D}|e|r`9WsDkq?wj&f0!lu zkgc&f-wA^IIdD<585?-kWroQZ4-{Zt103|+mI*1~T?f$lx{K*71vu#d-55Wq00d?_ zem&!NP`A<&Hl92gR{?_e7KMG>%h@dTC*OZx2Nc8cIPeBuUATDqSpOBd`~aK-q|3*; z{GaYMI&R%vWSbb6%bd#@R1yHle}lm_<4Vlya(-pp<8Jqcan1AmnnBR3+P|X2d6#>Y z)Ecjbd-MR+eV4nHx6mDw_{!5~3g|aIw**8Ln7sHs`h&N2Ew>Q=EpcFK`K%rt9}jh< z?yVxRvJX1T&B7rb_VYFZPy(qt$ftFvv^!K0tX|C>_)FlS7~%D4;C^vhf8N>>DBS^G zxKR>!rrwU{bW{64lzm9u!Ez#${OBAcbGg-B1LZH2eNgV8SM+5SV1^q8j1N?c4P_sc zJ81QaUce%XIiPRv&%oJ_fB8EPim1e_tH0s4 zlM&pY{>%~ajq3lY^PklJ_W#xYe^!4wxLN%PLnXgS{fRLh-K74hy2qE*Uqt1?YXhad zm(^dKmB5FYCfC(pls6@9E1;(S|3cuP>_X~5>gvB$0W@!#inCIGNYx){j84B$?14>I-7a&KG#Px#Fi=cXMVQc_Fd!I!Xi$J?SP&2pU`R0N=+KB*NXU?Q;JBdpn25lzp!oRsNTApN z00000089bKIDGY>z(Ewv|@Bg}|mc&0Zwl}p^S63mMve%|R z1PBH?UthoF?-ch#p?mxxp$LBfP-S_Q;^_mxAwt$41>k)Ez`YkzOed7?I8!uz2n=xU z(S_kr_F=_mI$0Ud^yF963jlCL)XDK#&Rax$J`=YcPkxO)OV!|@2dsvqCDV#vz%z1T zfDpK$%<>0G{ZSu$&N~7R!-+01fYl+h{MhQ5u;~QkQW6hFj38v_vvpwr1b?l!!U&94 zsqekK&6O~R5KHrwkm8__8EE=24MH?+3NxW8#y*T8Krb=y7Z-#)1NsoEK7|VcPn*n# z&vjUO08vaO0Pd@aiA1D%Ll{KS7s5CQu>|11vxSgIt8(IURT8ZNvgT3`h-C!)KNZjj zTs2DZ2FMqH#0k~|m|($1>s8K`;5UQF?L!~x7#e{?DB0yJVg~Rarl6_EnT+vEC`KrN zv&BFi0D20^rUxA$)Q}?KHb5f`fK(?eSlbkGH|lu}VOY>SO>`W`19A*B5TvuNG2}G_ zn$`kAPvpF|suAJkaKbP^Xn=V&B6Mu2LeS+0ITx4E!!u41d~FK@>Y~k2^bAm834!hb zjgT?6ys06C3Shz=fb~aNwA`1N6yY=_6p&v4r~n86BnUkWARA740id#ZNH2?-kUNgB&z5#9tUY4JAR91N;R<+X(VF!z8XQ_AnP`d#|pq&=m32P`i?Hu0^t2m2vVtp;Opd3zUzQY1y=^a0J#EG zM7md8hai<%q*Y>4VYdO$-6R%3t74nqr-1HUGY3$a9{~Ii)8_!^#>{&K@WX?TYafmg zZv&hk9-W8=%Y4w^WdS$Fr@IP}&O6r&a8|hlaNP&~l{R!`jRCrR3*a4$4|f`|AA2ME zgMaQ5nJiBoaZ`EKBf|Sc?y6=t^?=zp*1w@AbcTPIXkV?Pv9ZVTZtY9PPvpPlxBQm> zdAV^A-jmxM@(&UB4#Fq;y@T+9e(xZB1lTwTFZC}RgjKK$;Mzgh1nfs=Zo2-z3;}@g zTrdN6A-JLXU}EVQTsa6u4?nG#K4O9u6UqSB4npw)A9i~1L0l-`P1mi1fTlS)#mhsE zncjwq!-y{&1ZmpAdJ~hts|%(VZ(cz4>f0=Y8NkO5htr4DQT-tRbM@Bi`{W>`^N8ed z!+FL|U&gBe_6C5siAf0Q`HZ;x9|!dl_6h((N^k=OAe%QNeo#d%$ILu1+=@jME**18=Rec5cizln< z$=n`!LSgG$AH;t9WJTO2|1y)n$x!Y9YY3jkosJJdoCa_n)&tST0hr|y5w7Y)OXbA@ z(7#G;o!W!ssXjUglLG*YB`iKeW9R8GGdlocIk?R}tqwwVdCI!U0VtNmPH#;uUyTlc rUGmq9I*oS7O}VT=JMM4!&y{}xLgijPx#Fi=cXMVQc_Fd!I!Xi$J?SP&2pU`R0N=+M7dCh3Ah;JBdpn25lzp!oRs9n3y( zEe`+y0JlFQCIA2h(n&-?RA_soEBd}=<4Ul5`#)a?@ z|HCsR*FJZF48!w@xCMNY%|Q0-JW;{~h@T`=hFAN;0T3aE@IflbjvJ-mICJp;B0~pA zq3&oQSP13Jud_J&=aVMKQc1DMn_EPAy+S}N=j+v6;Ni(0tG&z2iXgzNP$Pg6P=*(K zn~EM;#Le`USIOteArOGe5y|}6+7n?D1e;6C`6N#WfhhL2zz0BDmus`PMhFQ5>jIZw zdYR8IlsbGPXe#~6^7eC$7qiW2CUlE2hS3GK7a!<@3j)pn??SWB>4HEr0pbO=?ZN{9 zO0Eu2tY!=V(CP*_iDF*~V-iYrApW4akZo_G!lkYtwhBP4B@ZYy1MyD-bOLoP(xL(I z0+6Y|JRsX1jZiEq#72mlB+~e7pIQ!$KrYnkiVZOXD2ZA6@+?UHGB+bsz}bBO2Vi?h z*`|jBkR>cl-0gr)7y!9VShBGpq02h1E({BrrU{PYc(OSsnh~J0u0G)E0!(WG*d8E6 z9aTNzmm>(n0I37!)yS^X)_4d(mmix`3z;K4%jCgh+X&DWEf%pSfErd8;2zKk$hoCW zja_H}BHRJU{-}$VVkub>K}$jb_yzzK01V&)fu{jv!^v*|P&ZHMr%Mzxji|NB6Cj1K z1IXOO>Hyjz(%Rxbjeu~S#R@)R+0l?iPRzUA!o8PwpaDTx5t#1Hv@acO1AD+C;J3t&BeAN4(Bi!eJ5Qj%6 zd&A3ou)nJU8Z6Pj+C_p7!5hT8Lp=56Lw9gT!)dr6_kkM#?O=4cQ;*{qjo2Ubb6?0{ zbsB(%!quKVyf0+e6~hz(vBU8UAJ_v2L;n|V->su@u;=k=M$n~$^a6oiMQpc7!~^G-o{*g2$& zacOiRj`pic7Tt#x5aI;z4HkREfk6iYAI1WhFK&E-4$=96EMi4J!nK0HjgKZ?h*J@4 z1Y9c!fsP(1QeM5oiV8IX@LEBjp?LtO<*ACLnWEV(ZxjSROsMo`x{0Y^3=nCxsVdkA zBS0>_F&wJAh>CWo#wy9*T;C@JfdDZCzTv!zx3_$Cz+M2L4ASrgf@pDt3*tDyPuK?l zx*f6_D1elPqC&ZJR++496a+p#zQ~@{Bo*^U5o-q+k6#r2YtZv@DHryYFmFk-9M}+Y zi5osCyW8_(FFmFBBiZXul@Q7bsQSb?4yI*I2(~Z%?FCTfMAnk3j^)I-B(h8eB(298 zU=l}aLRJPplbo_nm@nU|WT^vGx?PN`a*F1>#gOD~?KZ0dr8qgyi*cxm6zC1y-Y3t- zyCYOVag_5k3b7Xzfp;y@Aaa@sT@MsJ?-bcW?(K5nZ9$u|7LSM?Qe^~I6egQ-3GOrh8HEU^C;j{P?ChlvD1Qn>@H zE<_l2IywYV8L;xO9*8yyz-%ra@l_pQ>AWZad@|Ip5SEw@kf-{nAWRAXODt*889JLk zyi))~atND!S``EgI91)G0946hXKzC-AB_rtUGmq9I*fA2O}p#?JMM4$&$Yi^3TH$* S34MeB0000c000DMK}|sb0I`mI`%#mTdmVo`NMK-iu!yM0 z_?U>mu%P((_^8kz8YVaZ004{0#Z3SJ0wzgBK~z|U?Uu`K#2^esLvS9FCIA2D)_@HL zoTP0Q?P9zbDJ1uB{Ro+5`NaPYjPOp5`x^ku_cwsJ@2>zw|9gPw6M*Q2o&j*4BjFiY z^$0{0fL9(eLu>#xFaUp8{{*N8l7kVD7S7|AVDt#bnF%oksQ#w_))qUKQ;P_W*z+AcvVr zHgIS-!|Vf~5|V+cKVS`E)N{VED?tJ1^$1wk-~&1XX$0yN7(IU_Ku^ekMCdcXT`hC~ zShp>N5l{#dKrC1Qz&4gZ0lOWYbWsUusw-d{G~U_uB0F92=nsDuHb1RMeA0SZCRy7CqZAX>?sm!!~4WGOETfhP}5 z%z3psY9+EVk#m3Ke$N1$4G=*Ns#7e1EEt$|iTFk5u`bfWbET>@n5@5p-#1=v@B zh6c_t-Li;En2g@!U=hz2F32+h+y}3X8G>5yoLm(cHX;U83L4^D)&48;y*6p_v<)fIl`-$8T fobTc%{yx3{69Gql|B6|%00000NkvXXu0mjf-sl&V delta 737 zcmV<70v`RV1&0QZ7-Iwj00013M{Ml?000McNliruOV1ZP1_ zK>z@;j|==^1(7iwf4^8J>4HPxxS;r$h`_L*`1tr8%sv1B00000-7nPy00001VoOIv z0Eh)0NB{r=D@jB_RCt`-)4gt^KoAFTBoke6O{lJpCHIjwA_Wa+Lvj)gk%DlKwGHJN z;TN#N`>>*!m%EwSU07_+?n9H0|IhQWi#_lAJwIRW_fs_@G zur4ugizV6}jhMljHM z)8!yp=AbMzBjjdBxCBPn6n})MK^dO_VEk zG{I-7bAjjUvv7pq%gU3Ifp5=Bjq^gvci|;T?&SC+wg|uZ&GbG^!y}<})cXW@&3?8* z1j;YX3iy~0xpe}FlX3(&%B)TQk`_VinH4;5J|?eF6h%Ovi4HPxxS;r$h`_L*`1tr8%sv1B00000-7nPy00009 za7bBm001r{001r{0eGc9b^rhX2XskIMF-~w2L}Knaw;oy0009JNklo&%hn$E?FI=dMe6f&>*bpSEhm^R9;DnMcNWMC(rCuAn;w^fpT5+S$feUDpClc)@z$ zjJx5K2v2RWFy$Wz;ND;J(VS%~qYz=APe7eJLP91|cDN)SZR1t3!dvi?U62$E=$*|9&J z18DO8`0wt4aCliCN%*Dc$UQ!bj1*#%3EOHmZ(s5-%E75=mG+?a&$`>I%>x#he zDHtvRR^UG;1UwTEtOADNKL_}{i$R}a7AzkmdLE`SHUetq1^w!fzX>q?{{Z!Tfy;o) zbD&*c3vA`@qOWSR5}Rd{mAxIC0Bk`=|KIYx_KpUuTDz^*d^%94&Su9>t+VdaVx8=7zZ^{KKW`Q@-hTW8z|*`S8=<1s P00000NkvXXu0mjf%|x2p diff --git a/graphics/pokemon/lycanroc/dusk/icon.png b/graphics/pokemon/lycanroc/dusk/icon.png index 7ff67638d333738686a40f0992861b58e7c2dae0..65d8394f4e670851a9d9cc4829852265081ab5e6 100644 GIT binary patch delta 379 zcmV->0fhe41jGZ77#Roy0000?P=%ZT000DMK}|sb0I`mI`%#mTdp>^wKS@MER7i>K zl*?|zFbo7OGN4c9{{P=*Ni~gLR&Fg&R6ug!cqviB9LHZ<06qY!I|NB6jvEGrC2+-AeKvwPzFdD2#*LcMzGG+_Ws!PORWBjnQTLcyvq>HyKg)pA#ccp`aw1W- z++R#-7z20_9;am0BVk^V!rclFX*S+OJxhdJOcc{qeGzP9W*B$a^x()d9cB4!;=7u@ zetIY|AKg7m*2@k^X5GC@`Ct3>!~R$TjXxF}>isbrX5o*~Ftb-b+LyERhkW$MJL1M4 z-w`+dXbm&@!-2lV=#Nn#lRsv|4F0gmFu{1^k9&cnKXBuRDiCb_@Dj+z4{JTW_W3J* ZcmiMx7sjSp6UG1l002ovPDHLkV1khloROV1ZP1_ zK>z@;j|==^1(7j6e*ghuOGiWihy@);0004aNkl0zOB^WoapC7`TCD38 zXlkqDcvaZAUYxM*<($=XBhU|JFah9P9JG&0dUHl8jv6DQf5I_#DOG6^ajp(OHIQ8B zLMGxyj$NU;T;EgDCYnH(QT%qM0?|$-E#k|$(0GHfDHx5IQW4}6V7-(nWlG-I{4p0) zqym#K)Ace@yn0*)?v%_*Pc8uRAjxaH0?H-fu$HBXt!>CwYXniZ>lF?I!`&7zXm)_@ zFY`a1+kdl-f48ItjA0dn2LZ0f2hWw-Ul|0YDD~;I7}N|R3`#|dL58ag(U{2~=%`3Y zmt4s4w%rq5snDfRa@3)JqKAr#NUKp8NItHguY*AtPX;-}dp|W8-6n&2gLo!V)hrAs zd8B6}7lWKNX(3IO&jvB*kJ&*aawCl4&TfTqTR*;q9@+X~!|j%TPx#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_Fd!I!Xi$J?SP&2pU`R0N=+KB*NXU?Q z;JBdpn25lzp!oRsNTApN00000089bD0_sUb zK~zY`-IUF4+CUJ;7ugcmKt&WOCs64*k|Qqe!GsN=@`*HlfQo39$d^c|3NBYGEa4gj z?-Ml2tzzX=nn&m>wC~cHH4r-?>A77AubKJHe`fZ>?4KH2e{q)TulULNI?&iMKOFm; zf#WS!Z4%&|ZUoBHKC2}cj9KCZ;BL;M>p8Pp;B}ApsarVe&IoZ4f zz73=MyUP^5H{OcSqhb(#1lZS+imva*5H^}!p~)|VSmbhylv2rbI8Nb2EKu4KG;%4X z%8dC~06GSHEd%H^5TVmB6CqL}95b(5E~`W(X9Of)OsIfvh)+{(CJ?Dxv63K<2A5`U zB`{a&N<2!0+FwBW2-rsxrNp3x?$5l7e(u8pAXjBMQi*t&PCMXYw2)Jn;xZ2NvnBuVO2{^D;pdtsqe+nv6`q<+Ke7S@?FiAw1p3OOz5+yI0u}-GQ-E6_eFSC%VENAgG{-icubIX-^7;B1U@Uly zUIe@)kewv!MZkgAf%b9*o&r`YyYB8`Wg}2(Wf#SQ_DQzHZV{+fK5e7La^cX#SDfNn zm+JNEu4bieyu9Xrf42zO)qazEsI$D0wHgwIrR21^rFyfH0qvl+%h|JmI(2R0>~^rh nk2=-<>ch0rkA%nm!@<}eF&3Gp?$(F$00000NkvXXu0mjfIN_lg diff --git a/graphics/pokemon/lycanroc/midnight/anim_front.png b/graphics/pokemon/lycanroc/midnight/anim_front.png new file mode 100644 index 0000000000000000000000000000000000000000..fdd549d9493c21b58f854e3236b8e95fe57e9bcd GIT binary patch literal 1387 zcmV-x1(f=UP)Px#Fi=cXMVQc_Fd!I!Xi$J?SP&2pU`R0N=+OTD{^kHVh^WZ;DRRKDpr!yRh!tJ{ z0000002@f}fB*ml=}AOERA_`#c)9?jR zk)L@y{|+AJ)ebO z{(N?TPl)_L9o@9cAkH}Lg2NdG0=DrWw{&x?DI~$0CI{y z2LRt!0Q~+P1lTixT`w;LAF%V+SWSiVA_Ec+niSFqa{y+eq#xMRA7w&-~hGd_y<0hjwmjH0s5sa8;m}WgbBh%z|*jaxftb!;Q8gh$@ZK9Hi=htOn1CqF1v0JJ%-+p%w9vg&aH=wH$?8B?tl)&X@Kg9}=A zc?+=uY;z2N5bOjdZy}0{Lw@KEge^n^L?6J##!j#HkFd+y0Qo|l;>?lGn$%*% zT|N(8h=n2OX^5N;_1ok#Bp=l{xTm@(M=epIepNoJ_a-~DSJ`ywsp?ncbJ0amn)dao z^d>!3{Qju?Rslcg?@K_i0rd5pA-`3?FA$pe9@Mi)#&T5fjt6Eh;H{{@ znIm8-zlWM$iW}9gqYF9Dn*bxw#BXatX!++U_=9~FzarlS5P(2g;YOm{%R`t&b%NJ- z2%1-yTxik{${QHzAE@z0o$(tMEsui53>E^WCGCY^sRpYF*&WmyZC*)^$!LG z?*dX2w=dn`LBU@GZ2R`l!*^Z5JAgq?y?4z_!F%@Ydg&jGjHSZ&vdEq_`f-JD-al9b t1nA+NPu)(rF&;0+)Xf_D`*EN~E0&tv)ULZu&;*}7n0eTb=AUW3N)_)srLbr*E#lt2ov}38t8Nqa*0?WZe>7c4PGvCB08$LbCKS@0G(E! z0C=ExN+0|jAr=WKEYuo7)qs~HEN0F@rfxwku?r9`hs=~B1fUIUU1<855Er8Z_(Wgc zUVLydNQ6l|mHbzQ=I2>l=fDmi8POaZj}9K4Oh{#Eyd2T!D_A?cx+Vqm%8dsMMu+F; z)>falfLgYJFIktC=HbZR94M& zI|IknjkFs>1Ds(8z)%{zcfgIxF%ur})G_jC^bd0B0f_@DlqEF_pjvVChJvr?J~!pW zg6r)!j%nd7Le~)*=(^FVYyPx#Fi=cXMVQc_5MUr^P*51iQ26-xxVXUhs1O*CKoAfRKp;?t3shn?G zgvN7*;dlJBF^=7T3No(xY3yVGd}N#v<1~%T=+Lv+DdMD`m_bFnKtw;g&zZpbY2hN4 zmnu}B03W;p1oD7jy_;z`L!kG*)Gwo4$a4Xy0{({Ux_W;ACwP0xUB#!uM82WPkgrWXLxjl(U3ecwaaHk}X@{nDdX0Pe8!D_{#CqYa?? zcYf`t1Oa%T8B4niFMwU;xdZ|%e#NAG(yt5%8L*!L#YIfji}34;?gR(~aE<_eUU4aI zg|P6hCx8PJE5MOHu6|_zt?BYAu6hA50ZGS$K=hLWW?Ic$;8Da<*9!oG4geH=I)36$_?Ok79h#tgRtYq^XS)Y+o+1z&<|YXYD+;0+}ue|049)HZ&Qol zt;(nXkh1}0Pj2&!dBhh0T`&UJ$>Mll;eym+k?-g1i5b^AfdHyc{hSYl-4-PXU}XSp ztvUdufKpDqF>eZ4QY#VsGazE2{~US-&>ca(%oafaCw(RakX0q+&kulj0TdfM7=Su8 z1F8h%IXqXuJHqtdr567JusPI)n0KWB(n(3LI>2tC4cSbn+cIGETtGT)>m_*EM}s2d zJIQ(H(eTmpSq*wx@*h>(N#tLH?PM8zmdhL7g>*$!27KC^k++FX6(6ih7@eH7PMZvM zdE&GHQ2^=oryVV;k+z2e?QtzYDnLG+S^$Pbpm(g4H6?AX1+W5S@$lS3>M7jd>BqF9 z8V$*F-=gUy05x+=E!o)zhrBIXGr(d2U`Qq4xd7PZ&~5?v_c#cED@Xve0+62<_+JZ< z2Wkaef&i=lI_(0<>B-?0z$HipC@ae5e%EIfI`rNES^|dD{!uEx9YqZcej^O0vjeRF z1rWCbP{Gla%NMD?syE7z0pA~XqkqTm`0vLTtb1MGZQWb?UhCe}cUpHHxBOx3weBXj zN2I&=f3xnY&#pPA2mRiCsOJye-hH^|51z-^>)mVl!=MQRIOYh#&H}VI6^X~1Z)oT7=-uv0RKjja1^WG|;l|RfDVLX}lGQqgz59}!4 z%zMrcuK5E$HL_=YGw(-!P~;DV`+qg>r~JU4^h@{uYTnEI07|{Nf0>LZkw`~=VDZ7p z{hR&o$q#aTP`dx#{Gf~vO7|Z-^MiPaA2OgfKfts5zS#e_{Gh}BKj#O}_Wv9C!NvZ6 zBR?qZe@A{W`?ZMCbm1QM|C}E*0ti|0F6Re_{lDY~tpI}M17MLKi2bkR2i2ZH7ba1n z+<(aKU+r&4ejotL4|o9`1n9~S43P2z_;P-b0n&^E=KR2Q<_80JJDNqy53>E29odl| zqy)n9gCl@&o%w-95IH}{0PM{VXsO8mcu6p@J3ml;$`3-y5AdJo2Lt|XelYyz2R~x` Y0i$ke0C95J7XSbN07*qoM6N<$g4s8mE&u=k literal 0 HcmV?d00001 diff --git a/graphics/pokemon/oranguru/front.png b/graphics/pokemon/oranguru/front.png deleted file mode 100644 index b0ba3510c1d0f1fed476cda7ded76e210471f3e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 977 zcmV;?11|iDP)Px#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_5MUr^P*51iQ26-xxVXUhs1O*CKoAfR zKp;?D11d>G zK~zY`<@yNDN6OyIw)eii}BO60IH)cIZw*?IeoI1l<~{G zHz2gpyA6ao^{$NafLCZ@&6~XE;1Fd&v5E0(3;++j5<+OZv<8~64V6bwhfj9K=I8$W z+i~R=KzYz_oUthU{t2eMhBffm$^m*8si7$VS(Y=v4x@QQ%N&eQ2XQ4d+3YulkdJ&0 zj>a5xGELlmW6nXa0E-^=RgX>2T7aVw z#$-5ClzBh^v`6kZ-HYC;0|1jTHmednaocYDgy*}40H&4>fLX*zE}=(PE}?F(AcB}s z#we*K50{hnTe;iq_KejcJ8PmCNM+= z@`|ROIrr}E*HJ8T zn{YBPmjcK6;zC^I!(1XIT-!zSJF3!z4|Qe(a@0(Tr2v7!VvzY%tgnNh@O2E=g@ z-i^%wv=oKSV7GiKfGZkHjak)ZKJO4Reqw<*LM+9S#-e}&MX51WozFACC>WA9t5N_u zwD%)bRYi~nWl>}UfD!y~uG(v$Z$kx(Qm8P5pBmH81IeD-6ec$nHZ+4;l^JV-rVAT} zegwd`*TBjJQXu(K;m=`kQ21-Wx(okM6be59h1bOV)s&)a00000NkvXXu0mjfIH9;> diff --git a/graphics/pokemon/passimian/anim_front.png b/graphics/pokemon/passimian/anim_front.png new file mode 100644 index 0000000000000000000000000000000000000000..c69fd6a2e4f610a457649ba6f759bb703b6cdaeb GIT binary patch literal 1498 zcmV<01tt24P)Px#Fi=cXMVQc_HZUn!Q%nd52=4Cg`1trXFey?@Mr&kU`1ts`y1MeSC&k`hkfS{R z{{R@sP!`-7i2wivSV=@dRA_c^8Rmo>IQ<`Jn3IEYnY^awX#2o ztJa=n`7;Yr`IX*3pZ*sFd`kJAFa)H&Ax!k0PQXVm=&!2?cmyIq2Vs*Ly>>M1q$^;P z9=u)=5V#8*go8VJ9m5QOJde_eq8sTntEUL|4MQM62(*q=zKcF1M16Ce!?wS{BR=8v zRymrU2s)#75_EUr{(eyne7)ZnJ&gnXy`!81&+c(eqabJXF6~pnr2n{0nZBC7T)%;K zQ0neNa1j8;?Cx^eiv;in*c|_z^s52((c{dagy6LYqWxb0sw9Q=yAqrY0sS_>h@eew z7XKar&dH5A0JJK#?Q|E>g%xQSKc9OM0N3OYxD&bp96laIkQ;M=>ZvLE>^l6Ue;@}z zWt#!OiC%|I{}4TYvmqD(Oq(W-wNfaCvj?4%lE;wi(O08)cX; zjQTDBt+5Bl0q+X{EU=q?43NsG=VqZNKrG!Zq!F{%heXirkEZV)1_nUhj(n;_Kor0X zV12-+AQ0&FgVm5i28jU&=SkGlht6j@8i8BQ4iMg|gA+;mfS%L>01u|f&!8beL#7ys zLI61ERm)4s6+&nuC>tbkQ~zL@ znHUrQU`ZZE8xS=A9|s^FhUA}RJ$ju(OBzSVnt2!uDfO_Y?D^;$5V;9b0;v7-(HJ=M z9qH=~K2QI}Kj_7PZGF*!AjxlMyLJL7)Bmo2&<_Cb`3ISUQ37CtGW|FIpmrdlgHeqD z12Vn(2e6j@!RcUB9tzdh>|fQHeXzPKKp3@)WZ8dhA7q5{9BA!h&Hfwq0cSv1wBMXx z(CoiqA4LBE)kpO0^%1lG%2wmh~n0PE2= zOodJa;tM>B4yb=nnF?)lotGq5Y$j`;uIF|Ki2q;-eP${!wFY=K5SC(z z#3Z~l6@2qQ7sS8nFVWLf=w1r@1c0004VQb$4nuFf3k0000mP)t-sn9!gOFN7CF zwFn3Zb8|ozMzumZC|glIaBxES`1rcIy7>6`@U0!3ZVdnb02s(np<-e#0005ZNklS$cGU5TST>A#db@8guSiH0`VPZhA+PDpcwf{0)y)HvwQL}u#sW*#?;rr)8;Z_FV zm6N}rFv4A)81n`YYCQ*n0fM)m8p~&d0USbK4_pf0LVsUxCTL7(m9K&50$}q28&CS) z9|2pt{-10!vV035K|Sj%pG=Sf6CRDVdv<&)2fqd*YG4ebM@ za1TLb<`pJP0-=$RA?;=GHu^r3n|s{j93^`y7T+PnW50ytmV>a&1I$#nnek8C-k1GQ z1ncKlpJnO%t8#ai0=pF=E08n>sTF7{Q-HRJ62~T8a?=+puvX@55+IAn8bP@yih8gD zEKPTG+5u&Mdw&&+R%x=H$VfdR0-oS?!eY5jHg5+z;ca1`{d_x&S78nruNN5+^HE@1 zEi#UmEX%+f1$a>{I2M}>>dUBwk63ZU&7r;?e~ke%L|h^s@2+?}01QlKFlPjK1YGHI zSL0yftf+u`p{du?}n{zjb~_EQa5c$&SthR0AOF0^*Ur z{Dc8%Iq2br(ja<3YyjuS?jYP!8tM%y90Fx5%dSBj4}qiyFlhj3EO(X}P?gST3OFmE z+k?r{0D8(kpl+QY_ySZS(E)_qO9*_-C4eSwEq84M4tmo8F*p&kQi~P0qaq;JfUmbX zppIpfwtySUcH`BrMPx#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_I4~e!U_cNM5GW`Z7|2jaKrs0D_;{c| zxZr5OxS;TW7+6p^_}BpW`1ttv__S6qW&i*H32;bRa{vGi!vFvd!vV){sAK>D0`W;i zK~zY`wUoVX;y@69Z7mOwT_l`vG+rdvz$OqP3Q%z8F7N;W$&s$JIAtWdC=KYUC{3(X zD1{}YwAVyeL{RQ4+`HVYjqw^1PAA<>VQFW+oxh#2@ju0+M~4B%?ZXZ@=SP15kS=~M z^AWfngA5F#aP@rUSP=_jRB!a0f;X03XJN zo@Fja!veU0iLN}DdWz_PY?ANK(Qz-ZUK}O zXa(W(TMPhnlBtT{vbs%Z1JDR2Qg&0o*%nQrc;g0%u#*h8V) z4I%ibsX ztU4ZD4?plg+<~-2giYu{r9brcfWpv|D|vA$r3Jl8zYn{>=|Ez3E7yC6083fz16W)~ z)u$%;TSWoW7aizONmrg+Q+3q}F86>sP$-hq_jr&YsN-ju11t#Z5e^$4iGqeWIKu7xYz}7%>vuu#gP>V<(ib2i}4P?m~Dql zh-Ew|L^N{~MHE2ouu&tzPew`jITz@f)$LF`n!dle+Vu6I!_^Xx?J(2;;_E@owpu(~ z-=^=EJ_1O4o&wh!J>BszpDViplH|;59WYrtOk6Ze;{<4qcm|k^pC>uY5J-}*JKAzH zhgWB4pUv*aoAN1RPWGQ>qiS&$%YAbkUo&mnX4&t9vs&Z)?ic|fHZ=-teU?JCQ4?f# uhYqs3QZ&YEDldWd+{W*Te&=6`Vf+S?T2v@z7ghlP0000Px#Fi=cXMVQc_h#(;7I5-dx5KvG^Ffb_i`1ruMz)-N*h=7nlKsX>67ytkO00000 z0000008e5XW&i*JbV)=(RA_RY-lS*k9aBmXQy+`2u7C`d%4dHmtM*$;#ryL>7co6W!?>h$ovwK-Z^b;(fh-CBPqy>86Ah-dwR&D@^3H(Xu%)j5Il$r<-7?9Dq2(1;Z zIsn<3&)M=sk|*yb0Ik-ZHH6Sv1nB8^EIwM{X=d)GH5rW`p~HYCQ*2E@-n>48=9!Se zyPJRtA0vWn1>OS%kg4z-ERX(a@;QBVY;A;7 zr%s*v%L-cCyb?|I^j(tpr8@EkXxT+TBRuBWGP&-&{90#qQ}>7gQhLk}9>6LieR`h( zkO8pR#jp6Cpf|7%nECXGrviYM08=}~8$~<~!0$;~dQU#yXyR#r)dq(4J>sbVo*}I@ zpnwl;RDg`2EH#kL`W|hh0ni4%yz5Qc>d?mNoq(E$FY7p@ZCW3iw`l{i3SXum*HW{- z-`=SW=tF!Tc0004VQb$4nuFf3kkv=|u0Z2(iK~z|U?bS;b zgD?mMP%B`LhyCxjKoX6$CYa1xnY5F4B_DB`o_gxHi%0V~CNLt60z-o4ht^=gfDrQo zLI#juV|f)`9Yz5l&+~nQ@F=L!+dvj>5g!0D-6UiMMCCFlHZeN|wmcn-MEHaqD2+(C z1Ss+)A+S&Q0Cs|Zmw+ySPL+XW@d#glXeh8?FCb+=XbXG=P_P!(wHx3d1ctzkIZ^4z-qjH2(NtE@7H~@_2xKn)(Gu^H1`W z2-<)ff`)DL_#E$`d~J^=bR=bg8~j-GW3PVb@*ke5cU0-Xi#bu=OF fA$K(J)L+&cplK7*#>+<&00000NkvXXu0mjfP==&s delta 437 zcmV;m0ZRVL1N{S#7$yV*00013M{Ml?0004VQb$4nuFf3k00004XF*Lt006O%3;baP zkuE-e010qNS#tmY4#NNd4#NS*Z>VGd00CA>L_t(Y$L-WTPQx%10ANcIQRaIV)oF@jaC|m$3s<;G43C#~fF2{3dXlbAAkpbRVe|bOtDf^FKi8isGn*``} z3aE#81*O^)Fo_C@6dsr&S^?vIl>lbF3MILJnSna2Z;NmXbBd5S0yTt0rC|p8fP(B1 z0IEe40RV6mM2bwqw=jxGv4B~OF9ZNMiLt(q0Bm)vpJD)Dte@|$rZ@+Wb-jCw0oT;q z*UP&xoQtN}?k}&GI0qlij+Zgu8qT6!f@SeJp}Yn^Y7hx9#c2*lC18v%!bwI4m-Bjm z$5|*c?oG*Jkw-zs;|u!e?Y`O$w9S3 zpwJ!=eP&bDfdDI=3W32`i<`*(%b_NflM&YMBlbaV1=bL-9H=EgE(dHOcG{i9@4rq9 f!l(5|gRxI!o~A@aN<+#30000!lvI6-A0X`wFGcGLXP*8YbVId$O5D?&DV4(5i$BzR$4g_qt(a|u$!NEd7LIS83 z4*Zj((tsS!0*}aI1_r*vAk26?e?ZzpZ^KI|ZJELbmEJlLR`uaIxg zmcYC>-HIhWn(Is}L}eDs{bc5u>DqFRuPM0w$kP8Y`t=8@C0SpVKmPuB_xrup&zJny z$>*6dx0jLez5f#qgULouYWzPPc);#`?|H+?2dBBEHn1*LKW~`A^vCyu6O-A2>+|+M zWw7mFx>GG_vrT5h#Oe9DhZ%O4*VkTOBfrA1-skQ4^|PK#W8gbB!=GEB@UTel%F>%z zS`G{=?kAp@ROz$fpZITShJEv|CfeVf?2@&LFMRGIj_}v&E^m~wM7yu&W-|7yP$~#+ z{3^UatHX86E5YI-p^3>x`dxPvO?S8+T;sH2A47pe=c4nnVP35^6JkF%>^^P5V7NMH z+2U+14_{w*jt=`XLOZOJI)3&Ynm75MTVFBDQ5GM;X}1sdfdbak)z4*}Q$iB}u_?A% diff --git a/graphics/pokemon/ribombee/anim_front.png b/graphics/pokemon/ribombee/anim_front.png new file mode 100644 index 0000000000000000000000000000000000000000..fb1c5ad41ac449e10a0f6a17c9b35de58019cf32 GIT binary patch literal 1294 zcmV+p1@ZccP)EX>4Tx04R}tkv&MmKpe$iQ^g`x2Q!E`WN4i%_=Px16^me@v=v%)FuC*#nlvOW zE{=k0!NHHks)LKOt`4q(Aou~|=;Wm6A|?JWDYS_3;J6>}?mh0_0Yan9G^=YI(DbUA zj76nPc2(+mMF1lDF@dnmEF+#;Ov7`0-NVP%y9m$nKKJM7Q*#yrd=l{-Gt4US2Jy^h z)!@8OEV81k5}y-~nRG$oN3JU_zi}=&EbvUxOeg1wMPjMY!Ab|SqNx#26Ngkyr+gvf zvdVdjvsSLL);;+PgE@UA#dVq^h+zqFBp^XS4JDLOMTAzJ6bnh(k9zor9e;vc3b{&P z0{s+IiwenMwZc;D`bidg4M;PeY1)6o+{yw(t<_X|`2CnqBztR9^KS{5* zwa^hTunk;Xw>4!CxZDATo($QP9m!8q$mfCgGy0}1Fn9~}uDQLn_Hp_Eq^Yar8{ps& z7%foty2rZ%oxS~grq$mM&k%CV9%r=+0000mP)t-sn9!i8u&DU>_;_%D5D*YJI56nI zsF-L7(5QI$;7HiW(BQBrXfPnCXgG*SIJkIFx!K540009CNkl zGK#+c<8E7Il#!o0&StZTy~#~xhVucX3Y=kh;xC0#H}zWIBB1^r;Wq$ny3JHART2P- z>*I`o7C~)IDg^u$papo#8vqLg0BCmK0ceB&o85l{P`SREMX*Sqf6eZ%15WxTK%%b| zED_Ftg1)xa8{kv#oD%>HeWw^Oj^jb^ocI2dPykQ`jpNJWAI2M@NPZ@q0LGX}kFP@* zo`~{Z2B7+xGrb1Zlkf~E&0x~Gelj=)#X1JKV=7CF0OkmI%?1lwd1~$aX&xm&mH-Sr zK_I{`KM;xltEW7Pu!LQe0g7b=+G>SDHQ`%@P;&%q8UessEOC5nk;DW95FtvO0N^eE zh#&^c2Y~Z^{V>qGgaDoas9%>Y2}#~cA+KW^0g}`S;F@c=rI9vAelt&s^?43D10Vuc zAGMfRj{xuqa46^2&I2%UC}8~pCdu3z(B8QM00fLR>H|Kdc^#V0)`=aHl;sP42>hTY zz3IuBuu$?z&agmVnk~9&oWcqL5i}DU(-49{mef3V>^;m_1(w(G5`xDJ3>cZPED0fG z;0h36O@K8KmeOurLD;Z_aUPFDSc|)TO>e_W0E2r26DXll`M^&y&KJgM+V;2$qmKY? z4u%2z`4V6|+VB>g0P7_{8VC$=hehCp3={z0MLcADum26;j{ZJiC>*oC7{k8>d{sS9 zJn=*xcTJ2z>zf0p-{@pxs{#1xDF`^{?D}{{{a*u~-Hu`v=i}c&DM0gMxqHv-?^HQ1TCU`#=Jy`UiCD6x316Kac_H z{(+ML>i&V~(%bY8MEZt*AX!8vl>CEt3MCJ7$v@C~D`v^d;Ormp_?;YZ@()Z(qUh>A z6#RookjjUGe;_pu(i9&5;PDS0|KPWP$3J-dga0M|00%fVMv&5Px#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_sIaK``1p8mfDjN6I5;rqz^IsL2+*i_ z_~1y`$k5=hC}=PssAxEdNI1B7P`TO2QUCw|32;bRa{vGi!vFvd!vV){sAK>D0whU9 zK~zY`)zrUl+CUTs@Mrb9We8SP(PrXs+sG5bNUbuV%bmmk9?)6csbujFRH*G9d9N~9 zOl`7+u1Kh2VThCtz?6|=VhsKpdbSDiFU-J{Hz1_%hxeZDu;DpXVNb5$<9wjv(!l^% zl2Z%Exu6hlDnU7(V_A_Fszzc!!70GYK%a6o1K=8uPRs=boC1nw5yoQ+9)f;VD`G5{aDqJ};9Ce>y;%(NU`hmh z)i+DF{`o&X4MF6bNc)ZZmg;U_0@*wbSi4lv-jSPrYvJHviv(!2F=iII83&*nE*bp~ zz9bkoEb?c#UIZ&Tc6>)bRoQ{#lSg1D?-Gbw(ujUyip>t4BtTbHtp6H%qTz$!u;b4O z(7|Bv%3O+)s?nK^pNKkmm_c2=f7qPZE4d<^bkW%mnqk3A`{2 zqms&xR`ca8<(^nfAgkp3*Y^XF9n{{dn)@eVvA0S^EG002ovPDHLkV1g(!H&Orq diff --git a/graphics/pokemon/rockruff/anim_front.png b/graphics/pokemon/rockruff/anim_front.png new file mode 100644 index 0000000000000000000000000000000000000000..d806387c61c6990249e417c287498eb6ba1c9eca GIT binary patch literal 853 zcmV-b1FHOqP)Px#Fi=cXMVQc_csM}VsED|5U=R=xfM`(gkcePNFfbq(fM{6g=+MBhpje>b`1tq$ z000000A;}u@&Et=(@8`@RA_5$0j7y=Nr^cu(!0t1R%5tjSu8Avz|JgzVR zz@4sX%XbCjtamZ21DszfbY~qv&p-%iR0r5kRNeW-gmNEnCyeR<&;VEguIm*rtRtK! z5yjX6J2V1MW6mQ0?*$4$7ICXVy9d@Li(VF>tU%rdbrt|}2^7X?5)jG?mPOnaRFW&_ zgcUQW0dfIE?IV>{z_H1nY||@2t0({m7)doLn*of766EymQ!LwYMxP~PeE^6>z{iU|U2(Do1RdZDAWj0}0{}AsISfF556-&+h|vz70!gT-70HS;U&fU)(0LyD`cMu|827(dM`+vy*?*@X&g1Gnp z4+FtsL0tX+tAQ}?nxOap4+FvEK-}B^H~%0HEBR>uzxfBFI>Mv;|J^^Z`wu_)2WI{94+>!U2g^TL f{=teB{~~??Yk(-FGI;FM00000NkvXXu0mjfW;K6) literal 0 HcmV?d00001 diff --git a/graphics/pokemon/rockruff/front.png b/graphics/pokemon/rockruff/front.png deleted file mode 100644 index 1199fbb592f9be2158adddaea184f13f6f797514..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 655 zcmV;A0&x9_P)Px#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_csM}VsED|5U=R=xfM`(gkcePNFfbq( zfM{6g=+MBhpje>b`1tq$000000A;}u@&Et;32;bRa{vGi!vFvd!vV){sAK>D0q99Y zK~zY`?bI=g6G0RJ;I}wM(%oc5hf1>`X1lJ=kg9$9r#fW*2Vae~f_sU7gX0cI=8fz5-Er zU{;3v9&k(EVU*sL10NVCXB2Uq$k+!?pP>O4@-4t@HmmarIBZ)WhcV2QD&`d+0+UA} z&f>Z3<55$)3 zu&zuIG!6J_K(u=eR@*Z)zfDpLklGe=y$yos-E;YBW4E%a3cb+VGd3P17c#NCpjzvd zE~i_7+)JdCBU9jbq07Fmw1A^ro+cxVgdoD?D=mObCV4uFZf7f~YZm~LrWvF9J^u|V z9RT`59MVshdPNt`0zmZVOqVZ9)!EZ}3XbTHlgou(icU*Uxf6WI*3cj>_&ODIgD|XUB;RQgtxPN`CJReWMSi6B3ve0w&g9H81fIZ55z`RETMArvuVJr;b zelUp5y+KZVGrY0jz5xRd$p3(IH>joO9D+w}PST+h^sPx#Fi=cXMVQc_cu-LAz?iUraPau(kbscDxVR7y5O^>k@OVJ5P%s!^NHEBVD3D+P z0000003onaeEKr0vMywI`| zWajf(T3Y%Kf~NOw*Yt`p-GgEEyQgdf@Fem1d1WDh4_hq0H9OQYF{qSo6ZoCD(Ki`ce zKqf)7 zl0#W;!a0AE`0H_CiWD8S_ z7Xo5604Ab64S62b1ju=pXSm}>*37HLPoG9CWLM^^Y?_|{J2Bd83XJ|R0eI?R5t0=k zjB&wUv;!U_(-tl*EiElAeXHP41;W`Myebd??m@wdAbYw+6=Q(_K0U&cjnMot-T~GE zffHjST~d=e|Fb_*;KVR009%K_fOH0UbAcc`K&iiF=2w6ozr`JI=~+cU39R%*n@fz$ zZ3dbEXZqf_K}e%PFy#MH0Pt62DKnx8!0}xUQj+*iH*nblRevy3xA^W2gf@J;PI)v@ zRzNQj>Px#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_cu-LAz?iUraPau(kbscDxVR7y5O^>k z@OVJ5P%s!^NHEBVD3D+P0000003onaeED0dz@3 zK~zY`?b5MQ!axuP;7b)sLl}B4g@si(M+!=gga=Tpoe8Nk60$=<=P39Bh%W$>QcLJ< zj+#c^#l3^hJz5Ldt{3q}xKwBxb!S#Vah~L0%e{c7bz1n_?P>?`O)E6kV z^EGHO0<@q=0SaH>MF2JoQ&R?Hr$Fe3f n8}Lx~LuvxHH~{S70SVk99rR5P*fFcX zoun|afawxo=>ojC8JSlWWw`|QTCV7vRo-XwOtXarxG>IiAFu(&^zPg_8(V?tlQH)s dIM*K)V?P&+i{RK+8sPu{002ovPDHLkV1nzZ5P)0Xwpsi~>|tjFW=oqb*53%^^})!zU(*DfK%TmBH7*h7qW z7U0O&>^8q+u|Gz(>->n#O(wF@6(EXq{*+J_Ov;Ezhy_f3B829bnHvZXz?%pu$)=A9_;pni0Mkjxc0B+>OlL%t8E6R*6Qr#T zJ_x~Ucfk<=w&sTcsAp2;_iKV}D|P!ffWs8D09q^!jPwKvL;$+A19q{W?iuiUs*Yk^ zf;|4h2blpxcs-v=K;*G=&P8Uy6QU^?0dJ~nPy!bC4WNCSL1}w1E)`&S9YVJ@e@O)` zuTv;E09dNO0=)iPysooj^^x(=q zDDdyvNPy!fKwb&o{HHkcrlzK*rlzLeG}Hedr~iZBl>Uda$(a6!yCo%K`j`G;uMc|O z)2Dy#AG*Ev4R^W4;-F#fM5Ct&hILO^bhjXM*qNmubsj{dH9v#-TO=b zAek@fk~1INRCaT*r+-PVrRTkLKq%8Y0m{~lc&9(8=^Z7gNRiR|0}AjOfb<7kK(zGk znNah;hTv8|3W)0Wqd#~lCh)u#5MDMx`*XY&5a#%QDG!YCAIiJi9RJg~fY{@^^0#!X zFtQxV7XQ7TPz#6}pSggz6aV2w?x%``00000 LNkvXXu0mjfBrRh) literal 0 HcmV?d00001 diff --git a/graphics/pokemon/togedemaru/front.png b/graphics/pokemon/togedemaru/front.png deleted file mode 100644 index aa0202eef3cf1d693f57a31736034d69de48427c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 534 zcmV+x0_pvUP)Px#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_$apaL;4lyn5KvHP=&&HLz`%%*m{?$F z`1tsUh={njxHvdCkVr6iI4A%B0CeRnBme*a32;bRa{vGi!vFvd!vV){sAK>D0dGk} zK~zY`?US)i!!Qtrjhvw?JVIdUR>?yfwL?{z@&ND%ts`}u4hvt$UDXd*$ zJTf7kq3_ajA|!@0Ff#O)GX0lTP}J&dz`FFD`!uM&Yg33xHy<;|col z+@C(y=xa}alro5Q5^Ex$^~eILl#=tV)>J^61!JXVPfN))833@v_a$U%*rftmxdUc^ z+=L6F9xu#`14`tERDTYo0}6w{9R;umc3LlT>@W?X$H}z?FC%JErj7t#fJ_x0)OHgAOQM6 z0XG2os{z=wA$jlsUrNXk{2QRCh2#c1Kwbly+}Oyu$P~qj-q?QXfXo={0eH2x7Qdp> zo}1{~MwRa-TI&W_37=m**8v`%;rqQ1qG$IWAT9Pdn_E+ODsWL70>FRxwS-_N{YNo& Y1l@|cN0x0IMgRZ+07*qoM6N<$f>RsbPyhe` diff --git a/graphics/pokemon/toucannon/anim_front.png b/graphics/pokemon/toucannon/anim_front.png new file mode 100644 index 0000000000000000000000000000000000000000..fd42f4cc3f487231f87aabb76fe22792d6b74b92 GIT binary patch literal 856 zcmV-e1E>6nP)Px#Fi=cXMVQc_5D*X`7#KJ(FnA~!B}`{nP)Oh~5Fl`<=x`vYsHpI$FmTA&xVXUR z=s@`R_(H^`egFUh)=5M`RA_7q{Z>joU4sE0k(8$Z`KPqC<45-q2Y^P#Q%eY-1E`|~@Y?vp9eo{y zxBx!${K472h{>I?fk5YPk2)|EQ;dPG?sJ4vuz+I15MZJn@Y^teI+z&HH^8HQQr5J8 zlCn}@a(y=d>`^aE?-F;nM_tfQVMDi!LMeX!HtKnd&7Vo3tW^r{YIy$uSlk56lr75; zLZXaHU<+h8P;LSOstbs3nFK3iiJxKe)61ZTUfze_!j!56bqv zJwLeCKlcBz|BwBD>^~F2;4=MV{~!DR*#9Zm?*YJ%_TTyT%>EDL2SGoaAH+7s^8+7a ijOPc*{6G1@U#owwcTM^apa@6+0000c0004VQb$4nuFf3k0000mP)t-sn9!gQ5D+0I zCNMZKO%g^JTxL*MP~aeFF@uqyNVv$*Xh1-yaLCxz)!tZm$oTm9cxIo70005NNklft00000NkvXXu0mjf DPCWM- delta 616 zcmV-u0+;>51oZ@v7=Hu<00013M{Ml?0004VQb$4nuFf3k00004XF*Lt006O%3;baP z0000mP)t-sn9!g|5MU4(7+847FeoTcSWrMfs4zG%$k1q@NVpiFFc1(B;2>!D`1o+h z*todB;~-#900009a7bBm000id000id0mpBsWB>pG&PhZ;RDVdv?bNYK!$24Z@X*B} zi`g9{5PX1O1;LkSIU-dM5ds~gNVpzY!Aa~Z1bl*mQUs}ZT`IU`m4cENP{<&NLx*_z z?yjb}OA3zSH)Q#K{O`NFB*uTKWo1>`t=U%KvMM9CgOGFElt2~pH<)@2K=xf?jWEwxbNdl(yV9T%2HN9tpR$ zjXZb;kdZY#nC?fSm_TBU{4TyC%4^Jo26Sdr-VcqeBIvsHboO(FbnJ*BBsljwd0?22 zMUbWoz@W|&V9;g2;3JzO4lo0sLqk&n5C+oU0V==&1A979G36q_AGWQXQUaU3oU{T^ zjM%dr^kH!Jagd${@NL59EW(1TQp$Pb2dKvI4Ht`3_FunoDFQyXRi)hXO0000Px#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_cqkYk7#Qg2KrkpMSWrmts4zG%FsP`g z=x`t)aHtRv5a2Kn`1ts6$k@2Jz%9BSg#Z8m32;bRa{vGi!vFvd!vV){sAK>D0z^qf zK~zY`z0|*J+dvct@QWaeZ@O-U4nbf7%~XV)zo7qs;gG>;Gl-~Dmw9^IERzrE2BX7ec$(-zBdfRfvF!w@1$^^y%@fZ@t&z4MH-OaMSR{E zfmi{&Lo)s$8eoU9FOkmh`s752bDUPe1IAbZ9KY8D7Fz>((O&YaUjyAEmS^PP`+MhP zR2hJA1zbBd(8c&D&+w5fw+`fh0wAOgb8G@CdROOB`cN zT-OZL2sb0T%=ds}OoAMIFakhji|PRknZ=asD-p~XGjB6H-Ip`yO#T+l6CgR20W)@G z{=OO^GbEUA>jRhtS-@HVunw$)`K$$WmYro5&|AQkP3ub1By9toCD0()B05Pb2~^9b z4PwV}oGc~Lp!q^AY>S@{<3wCg{n8pC))dq3QxOXxQXu~{n}>k%o75JRwk$#Bv~|^# dDY(M|;4eyci5tKCI0gU!002ovPDHLkV1hbDMArZS diff --git a/graphics/pokemon/toucannon/normal.pal b/graphics/pokemon/toucannon/normal.pal index eeb9ee6b64..d2ba6f1226 100644 --- a/graphics/pokemon/toucannon/normal.pal +++ b/graphics/pokemon/toucannon/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -120 40 24 -32 24 24 -232 232 64 -48 40 40 -88 80 72 -240 168 48 -56 48 48 -168 168 168 -232 112 32 -32 112 168 16 16 16 +32 24 24 +56 48 48 +120 40 24 +37 76 103 +88 80 72 224 48 16 -248 248 248 +32 112 168 +232 112 32 +168 168 168 +240 168 48 112 200 216 -184 184 192 +213 213 222 +232 232 64 +248 248 248 diff --git a/graphics/pokemon/toucannon/shiny.pal b/graphics/pokemon/toucannon/shiny.pal index 44b47e16b3..e60414432f 100644 --- a/graphics/pokemon/toucannon/shiny.pal +++ b/graphics/pokemon/toucannon/shiny.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -72 16 96 -16 24 24 -88 120 200 -48 40 40 -80 88 80 -64 64 168 -48 56 48 -200 208 104 -160 72 184 -24 160 48 16 16 16 +33 38 38 +48 56 48 +77 18 70 +24 92 102 +80 88 80 224 32 104 -248 248 248 +49 131 145 +160 72 184 +200 208 104 +64 64 168 112 200 216 -184 184 192 +213 213 222 +88 120 200 +248 248 248 diff --git a/graphics/pokemon/trumbeak/anim_front.png b/graphics/pokemon/trumbeak/anim_front.png new file mode 100644 index 0000000000000000000000000000000000000000..9bb3a97840b5aedaecf6e8e6dc96aad3cedcacbf GIT binary patch literal 881 zcmV-%1CIQOP)Px#Fi=cXMVQc_C?FtUSWplU5I{IM%*@Pqcz~#=sQCE!SisDwh9~}q2po6RkpkTEsNn-Nxlg~#BYFV4oD;AY@~B6!7xJi&!CnXCadD#H4~{aB z2GcZCOr;8L{e+%Xz@nd~lo)1S0>qRc!4i@HxE`h?*4IjaC;%*SgMM9KK!gThwQ2bL z;#gDF+ZG_KIcEh(SkDpdxhw?Adb9)d{AJKND{@u+*{5B z=m;TFnwK|K*4TDJkfV8dU&{D2jRra%*> z(Bc<;G_|&UU?`1|2+qe-NyeyG0?W9sp|Q1UaPB;D5!-re%|Vlw^vx3}Nzhpakhyp= z7_?Enxg*fK3&0GK;%&g<1(e*~fTnj&p-$bKK-GB?0N%jM8@&m@o8&aE908yYMgr-V zh4#?<%_o6>jB}v;SwX)j4f;WI3Inv|1GLYeh2-Jig`CK6>l~Cc@SgsOC!YBC=%kr6Gy%r6TR$OC@T#~{F80lq?oLg7q8KoUcH}sL96}=?}z#~nbyhe zyOpGxNNV7Sq+Z#|8eTkH>LDp0mKR#?&Ra21`2K#}OV=;|)j;V1hUNfbpxgt@cl1h_ z?*IzHuUCS!rPAK*&p9~w2QI+lAAA8G|KRZt9{=F+4}OV1$W|a8cYQ>C00000NkvXX Hu0mjfH~ORZ literal 0 HcmV?d00001 diff --git a/graphics/pokemon/trumbeak/back.png b/graphics/pokemon/trumbeak/back.png index 552c32d26068375b7adcf47d4aaec105e3efb737..a9dc99ea25b3bbd1762a00acd594f3778ed5289e 100644 GIT binary patch delta 572 zcmV-C0>l061l$CW7#0Wv0001;w}I>c0004VQb$4nuFf3kkv@PPT!c>3xBh8?)Fprr@tUE+C8GdlTouj|#CVbDg;NAEpCzE| z0u@+-l^AOtzyPLyMvMqb>;P6`Krn)KK%%395hPP_UYJN5*B1J<7!YjST!fvN=h+Qd z-0~(EG2d=Czd&UXs=%yy5!@qyM(A9sAmtT6Q$z$7FLMDQ&^piT9sog`0nIN9tt%}) zKnd7qz=k4u1IP;~u^aNL1MY62Z(|2memq8msR|0HAi$u1(6_LF=Enp|bu(BG_fa9o zEgwQyf@F<|ZXw5*N;nOUW5l)O z7ld5zMA-&^!S;|pFJ~~c+h9LZ900UDc6rcK-6H_%N8p&3vG6t!2OxqdzvSNwK(^{Y zdMU$mo*e)ZY_~8RC!plD0mVr~K~zY`-ITFT!!Qtr6M5@Yhk#gf$y%w6y#W$&t_vNZZ^9!0 zQs1HrOIs#3vLU7l1_V<@-vyuD1#)g?xFNECbf5k^U+#DG-$Kd`paj|93kZNrb^ri! ze~k`8LkA&D2O)4D5!*3nG?IvZKwoOal8B6N(EtG;gA&^01V9p!5W1FWZL=YXNJzli zUxb&CP#|g(1Y*i#?T2yB5eg~nRjdLFctX_tb7yAb>lGYtaLT4JysPebOc$Pt5o&++t<&yP$++lphQ*c!rQZk=gkIH0eo06TYRfg>IyGA@r-~dW5K=x_@d15_H4+AEE98e@sKyC$UC(s6f zZkSVhPM{6A3FP3M%K=eR*vQf_P#Ovy24dS6I**{F%f60000Px#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_C?FtUSWplU5I{IMz`($Gcz~#=sQCE! zSisD0lrB@ zK~zY`<&-f_!!Q_y9i>yI#${rQlL;}Tb%rvM{D@8&I(1-S3I{+9D}q)YdH}dVrFQGq zj0g#dF!cy!&KaqL@Fuia5bWwJ3_U5EFEi&Zh)M24GnhE6zva2DxUdELZZ` zrI>AY8|3gd==q!Sc0Oib^*gBR9T+fQ?>lArzNt5;w{Jmfot)0fk6~B##qt>4Ps3~7 zIuoUsQ0BFf?$W-PO&?WnX>)66|4wALsuI0M1KXdDr@1bk-`EP<&+=>sG>+8vbGbC& z@#F{q&A@e@gQq`^=2k@~05YFkF#>4&h%pG7hiYHeCxAFcYQdF7zya&6CITs=Iw4(9 z%kYnhpc5GZ8xk7~{}}m>kaRmHAPq@tYXX#-hQ9%nXabahAp<}vzi!;1Ri#z6g>Uqx z(`YLPRaF&ck+ec-vgO Date: Sun, 29 Oct 2023 16:30:56 -0300 Subject: [PATCH 161/162] Added missing Alcremie forms (#3469) * Alcremie form sprites Co-authored-by: Blackforest92 # Conflicts: # graphics/pokemon/alcremie/lemon_cream/front.png # graphics/pokemon/alcremie/matcha_cream/back.png # graphics/pokemon/alcremie/matcha_cream/front.png # graphics/pokemon/alcremie/mint_cream/front.png # graphics/pokemon/alcremie/ruby_cream/front.png # graphics/pokemon/alcremie/salted_cream/front.png # include/graphics.h # src/data/graphics/pokemon.h # src/data/pokemon/species_info.h # src/data/pokemon_graphics/back_pic_coordinates.h # src/data/pokemon_graphics/back_pic_table.h # src/data/pokemon_graphics/footprint_table.h # src/data/pokemon_graphics/front_pic_anims.h # src/data/pokemon_graphics/front_pic_coordinates.h # src/data/pokemon_graphics/front_pic_table.h # src/data/pokemon_graphics/palette_table.h # src/data/pokemon_graphics/shiny_palette_table.h # src/pokemon.c * Fixed cries * Removed Todos * Temp: all forms use the same icon * Grouped form data + Fixed missing Level up and Teachable learnsets * Added missing data for form changes and back animations * Grouped defines together * Fixed compile --------- Co-authored-by: Alex --- .../alcremie/berry/Berry_Caramel_Swirl.pal | 19 ++ .../pokemon/alcremie/berry/Berry_Default.pal | 19 ++ .../alcremie/berry/Berry_Lemon_Cream.pal | 19 ++ .../alcremie/berry/Berry_Matcha_Cream.pal | 19 ++ .../alcremie/berry/Berry_Mint_Cream.pal | 19 ++ .../alcremie/berry/Berry_Rainbow_Swirl.pal | 19 ++ .../alcremie/berry/Berry_Ruby_Cream.pal | 19 ++ .../alcremie/berry/Berry_Ruby_Swirl.pal | 19 ++ .../alcremie/berry/Berry_Salted_Cream.pal | 19 ++ .../shiny.pal => berry/Berry_Shiny.pal} | 24 +- graphics/pokemon/alcremie/berry/back.png | Bin 0 -> 651 bytes graphics/pokemon/alcremie/berry/front.png | Bin 0 -> 717 bytes .../alcremie/clover/Clover_Caramel_Swirl.pal | 19 ++ .../alcremie/clover/Clover_Default.pal | 19 ++ .../alcremie/clover/Clover_Lemon_Cream.pal | 19 ++ .../alcremie/clover/Clover_Matcha_Cream.pal | 19 ++ .../alcremie/clover/Clover_Mint_Cream.pal | 19 ++ .../alcremie/clover/Clover_Rainbow_Swirl.pal | 19 ++ .../alcremie/clover/Clover_Ruby_Cream.pal | 19 ++ .../alcremie/clover/Clover_Ruby_Swirl.pal | 19 ++ .../alcremie/clover/Clover_Salted_Cream.pal | 19 ++ .../shiny.pal => clover/Clover_Shiny.pal} | 22 +- graphics/pokemon/alcremie/clover/back.png | Bin 0 -> 655 bytes graphics/pokemon/alcremie/clover/front.png | Bin 0 -> 724 bytes .../alcremie/flower/Flower_Caramel_Swirl.pal | 19 ++ .../alcremie/flower/Flower_Default.pal | 19 ++ .../alcremie/flower/Flower_Lemon_Cream.pal | 19 ++ .../alcremie/flower/Flower_Matcha_Cream.pal | 19 ++ .../alcremie/flower/Flower_Mint_Cream.pal | 19 ++ .../alcremie/flower/Flower_Rainbow_Swirl.pal | 19 ++ .../alcremie/flower/Flower_Ruby_Cream.pal | 19 ++ .../alcremie/flower/Flower_Ruby_Swirl.pal | 19 ++ .../alcremie/flower/Flower_Salted_Cream.pal | 19 ++ .../shiny.pal => flower/Flower_Shiny.pal} | 22 +- graphics/pokemon/alcremie/flower/back.png | Bin 0 -> 652 bytes graphics/pokemon/alcremie/flower/front.png | Bin 0 -> 721 bytes .../pokemon/alcremie/lemon_cream/back.png | Bin 688 -> 0 bytes .../pokemon/alcremie/lemon_cream/front.png | Bin 738 -> 0 bytes .../pokemon/alcremie/lemon_cream/shiny.pal | 19 -- .../alcremie/love/Love_Caramel_Swirl.pal | 19 ++ .../pokemon/alcremie/love/Love_Default.pal | 19 ++ .../alcremie/love/Love_Lemon_Cream.pal | 19 ++ .../alcremie/love/Love_Matcha_Cream.pal | 19 ++ .../pokemon/alcremie/love/Love_Mint_Cream.pal | 19 ++ .../alcremie/love/Love_Rainbow_Swirl.pal | 19 ++ .../pokemon/alcremie/love/Love_Ruby_Cream.pal | 19 ++ .../pokemon/alcremie/love/Love_Ruby_Swirl.pal | 19 ++ .../alcremie/love/Love_Salted_Cream.pal | 19 ++ graphics/pokemon/alcremie/love/Love_Shiny.pal | 19 ++ graphics/pokemon/alcremie/love/back.png | Bin 0 -> 651 bytes graphics/pokemon/alcremie/love/front.png | Bin 0 -> 723 bytes .../pokemon/alcremie/matcha_cream/back.png | Bin 679 -> 0 bytes .../pokemon/alcremie/matcha_cream/front.png | Bin 738 -> 0 bytes graphics/pokemon/alcremie/mint_cream/back.png | Bin 688 -> 0 bytes .../pokemon/alcremie/mint_cream/front.png | Bin 739 -> 0 bytes .../alcremie/ribbon/Ribbon_Caramel_Swirl.pal | 19 ++ .../alcremie/ribbon/Ribbon_Default.pal | 19 ++ .../alcremie/ribbon/Ribbon_Lemon_Cream.pal | 19 ++ .../alcremie/ribbon/Ribbon_Matcha_Cream.pal | 19 ++ .../alcremie/ribbon/Ribbon_Mint_Cream.pal | 19 ++ .../alcremie/ribbon/Ribbon_Rainbow_Swirl.pal | 19 ++ .../alcremie/ribbon/Ribbon_Ruby_Cream.pal | 19 ++ .../alcremie/ribbon/Ribbon_Ruby_Swirl.pal | 19 ++ .../alcremie/ribbon/Ribbon_Salted_Cream.pal | 19 ++ .../pokemon/alcremie/ribbon/Ribbon_Shiny.pal | 19 ++ graphics/pokemon/alcremie/ribbon/back.png | Bin 0 -> 650 bytes graphics/pokemon/alcremie/ribbon/front.png | Bin 0 -> 724 bytes graphics/pokemon/alcremie/ruby_cream/back.png | Bin 693 -> 0 bytes .../pokemon/alcremie/ruby_cream/front.png | Bin 742 -> 0 bytes graphics/pokemon/alcremie/ruby_swirl/back.png | Bin 691 -> 0 bytes .../pokemon/alcremie/ruby_swirl/front.png | Bin 753 -> 0 bytes .../pokemon/alcremie/salted_cream/back.png | Bin 688 -> 0 bytes .../pokemon/alcremie/salted_cream/front.png | Bin 737 -> 0 bytes .../pokemon/alcremie/salted_cream/shiny.pal | 19 -- .../alcremie/star/Star_Caramel_Swirl.pal | 19 ++ .../pokemon/alcremie/star/Star_Default.pal | 19 ++ .../alcremie/star/Star_Lemon_Cream.pal | 19 ++ .../alcremie/star/Star_Matcha_Cream.pal | 19 ++ .../pokemon/alcremie/star/Star_Mint_Cream.pal | 19 ++ .../alcremie/star/Star_Rainbow_Swirl.pal | 19 ++ .../pokemon/alcremie/star/Star_Ruby_Cream.pal | 19 ++ .../pokemon/alcremie/star/Star_Ruby_Swirl.pal | 19 ++ .../alcremie/star/Star_Salted_Cream.pal | 19 ++ graphics/pokemon/alcremie/star/Star_Shiny.pal | 19 ++ graphics/pokemon/alcremie/star/back.png | Bin 0 -> 650 bytes graphics/pokemon/alcremie/star/front.png | Bin 0 -> 732 bytes .../Strawberry_Caramel_Swirl.pal} | 20 +- .../strawberry/Strawberry_Default.pal | 19 ++ .../Strawberry_Lemon_Cream.pal} | 20 +- .../Strawberry_Matcha_Cream.pal} | 18 +- .../Strawberry_Mint_Cream.pal} | 20 +- .../strawberry/Strawberry_Rainbow_Swirl.pal | 19 ++ .../Strawberry_Ruby_Cream.pal} | 22 +- .../Strawberry_Ruby_Swirl.pal} | 20 +- .../strawberry/Strawberry_Salted_Cream.pal | 19 ++ .../Strawberry_Shiny.pal} | 20 +- graphics/pokemon/alcremie/strawberry/back.png | Bin 0 -> 651 bytes .../pokemon/alcremie/strawberry/front.png | Bin 0 -> 723 bytes include/constants/species.h | 207 ++++++++-------- include/graphics.h | 140 +++++++---- sound/cry_tables.inc | 220 ++++++++++++++++++ src/data/graphics/pokemon.h | 142 +++++++---- src/data/pokemon/form_change_table_pointers.h | 64 ++++- .../pokemon/form_species_table_pointers.h | 71 +++++- src/data/pokemon/form_species_tables.h | 55 +++++ src/data/pokemon/level_up_learnset_pointers.h | 71 +++++- src/data/pokemon/species_info.h | 116 ++++++--- .../pokemon/teachable_learnset_pointers.h | 71 +++++- .../pokemon_graphics/back_pic_coordinates.h | 71 +++++- src/data/pokemon_graphics/back_pic_table.h | 73 +++++- src/data/pokemon_graphics/footprint_table.h | 62 +++++ src/data/pokemon_graphics/front_pic_anims.h | 70 +++++- .../pokemon_graphics/front_pic_coordinates.h | 70 +++++- src/data/pokemon_graphics/front_pic_table.h | 73 +++++- src/data/pokemon_graphics/palette_table.h | 73 +++++- .../pokemon_graphics/shiny_palette_table.h | 73 +++++- src/data/text/species_names.h | 71 +++++- src/pokemon.c | 141 +++++++++-- src/pokemon_animation.c | 70 +++++- src/pokemon_icon.c | 142 +++++++++-- src/pokemon_jump.c | 54 +++++ 121 files changed, 3084 insertions(+), 502 deletions(-) create mode 100644 graphics/pokemon/alcremie/berry/Berry_Caramel_Swirl.pal create mode 100644 graphics/pokemon/alcremie/berry/Berry_Default.pal create mode 100644 graphics/pokemon/alcremie/berry/Berry_Lemon_Cream.pal create mode 100644 graphics/pokemon/alcremie/berry/Berry_Matcha_Cream.pal create mode 100644 graphics/pokemon/alcremie/berry/Berry_Mint_Cream.pal create mode 100644 graphics/pokemon/alcremie/berry/Berry_Rainbow_Swirl.pal create mode 100644 graphics/pokemon/alcremie/berry/Berry_Ruby_Cream.pal create mode 100644 graphics/pokemon/alcremie/berry/Berry_Ruby_Swirl.pal create mode 100644 graphics/pokemon/alcremie/berry/Berry_Salted_Cream.pal rename graphics/pokemon/alcremie/{mint_cream/shiny.pal => berry/Berry_Shiny.pal} (66%) create mode 100644 graphics/pokemon/alcremie/berry/back.png create mode 100644 graphics/pokemon/alcremie/berry/front.png create mode 100644 graphics/pokemon/alcremie/clover/Clover_Caramel_Swirl.pal create mode 100644 graphics/pokemon/alcremie/clover/Clover_Default.pal create mode 100644 graphics/pokemon/alcremie/clover/Clover_Lemon_Cream.pal create mode 100644 graphics/pokemon/alcremie/clover/Clover_Matcha_Cream.pal create mode 100644 graphics/pokemon/alcremie/clover/Clover_Mint_Cream.pal create mode 100644 graphics/pokemon/alcremie/clover/Clover_Rainbow_Swirl.pal create mode 100644 graphics/pokemon/alcremie/clover/Clover_Ruby_Cream.pal create mode 100644 graphics/pokemon/alcremie/clover/Clover_Ruby_Swirl.pal create mode 100644 graphics/pokemon/alcremie/clover/Clover_Salted_Cream.pal rename graphics/pokemon/alcremie/{matcha_cream/shiny.pal => clover/Clover_Shiny.pal} (65%) create mode 100644 graphics/pokemon/alcremie/clover/back.png create mode 100644 graphics/pokemon/alcremie/clover/front.png create mode 100644 graphics/pokemon/alcremie/flower/Flower_Caramel_Swirl.pal create mode 100644 graphics/pokemon/alcremie/flower/Flower_Default.pal create mode 100644 graphics/pokemon/alcremie/flower/Flower_Lemon_Cream.pal create mode 100644 graphics/pokemon/alcremie/flower/Flower_Matcha_Cream.pal create mode 100644 graphics/pokemon/alcremie/flower/Flower_Mint_Cream.pal create mode 100644 graphics/pokemon/alcremie/flower/Flower_Rainbow_Swirl.pal create mode 100644 graphics/pokemon/alcremie/flower/Flower_Ruby_Cream.pal create mode 100644 graphics/pokemon/alcremie/flower/Flower_Ruby_Swirl.pal create mode 100644 graphics/pokemon/alcremie/flower/Flower_Salted_Cream.pal rename graphics/pokemon/alcremie/{ruby_swirl/shiny.pal => flower/Flower_Shiny.pal} (65%) create mode 100644 graphics/pokemon/alcremie/flower/back.png create mode 100644 graphics/pokemon/alcremie/flower/front.png delete mode 100644 graphics/pokemon/alcremie/lemon_cream/back.png delete mode 100644 graphics/pokemon/alcremie/lemon_cream/front.png delete mode 100644 graphics/pokemon/alcremie/lemon_cream/shiny.pal create mode 100644 graphics/pokemon/alcremie/love/Love_Caramel_Swirl.pal create mode 100644 graphics/pokemon/alcremie/love/Love_Default.pal create mode 100644 graphics/pokemon/alcremie/love/Love_Lemon_Cream.pal create mode 100644 graphics/pokemon/alcremie/love/Love_Matcha_Cream.pal create mode 100644 graphics/pokemon/alcremie/love/Love_Mint_Cream.pal create mode 100644 graphics/pokemon/alcremie/love/Love_Rainbow_Swirl.pal create mode 100644 graphics/pokemon/alcremie/love/Love_Ruby_Cream.pal create mode 100644 graphics/pokemon/alcremie/love/Love_Ruby_Swirl.pal create mode 100644 graphics/pokemon/alcremie/love/Love_Salted_Cream.pal create mode 100644 graphics/pokemon/alcremie/love/Love_Shiny.pal create mode 100644 graphics/pokemon/alcremie/love/back.png create mode 100644 graphics/pokemon/alcremie/love/front.png delete mode 100644 graphics/pokemon/alcremie/matcha_cream/back.png delete mode 100644 graphics/pokemon/alcremie/matcha_cream/front.png delete mode 100644 graphics/pokemon/alcremie/mint_cream/back.png delete mode 100644 graphics/pokemon/alcremie/mint_cream/front.png create mode 100644 graphics/pokemon/alcremie/ribbon/Ribbon_Caramel_Swirl.pal create mode 100644 graphics/pokemon/alcremie/ribbon/Ribbon_Default.pal create mode 100644 graphics/pokemon/alcremie/ribbon/Ribbon_Lemon_Cream.pal create mode 100644 graphics/pokemon/alcremie/ribbon/Ribbon_Matcha_Cream.pal create mode 100644 graphics/pokemon/alcremie/ribbon/Ribbon_Mint_Cream.pal create mode 100644 graphics/pokemon/alcremie/ribbon/Ribbon_Rainbow_Swirl.pal create mode 100644 graphics/pokemon/alcremie/ribbon/Ribbon_Ruby_Cream.pal create mode 100644 graphics/pokemon/alcremie/ribbon/Ribbon_Ruby_Swirl.pal create mode 100644 graphics/pokemon/alcremie/ribbon/Ribbon_Salted_Cream.pal create mode 100644 graphics/pokemon/alcremie/ribbon/Ribbon_Shiny.pal create mode 100644 graphics/pokemon/alcremie/ribbon/back.png create mode 100644 graphics/pokemon/alcremie/ribbon/front.png delete mode 100644 graphics/pokemon/alcremie/ruby_cream/back.png delete mode 100644 graphics/pokemon/alcremie/ruby_cream/front.png delete mode 100644 graphics/pokemon/alcremie/ruby_swirl/back.png delete mode 100644 graphics/pokemon/alcremie/ruby_swirl/front.png delete mode 100644 graphics/pokemon/alcremie/salted_cream/back.png delete mode 100644 graphics/pokemon/alcremie/salted_cream/front.png delete mode 100644 graphics/pokemon/alcremie/salted_cream/shiny.pal create mode 100644 graphics/pokemon/alcremie/star/Star_Caramel_Swirl.pal create mode 100644 graphics/pokemon/alcremie/star/Star_Default.pal create mode 100644 graphics/pokemon/alcremie/star/Star_Lemon_Cream.pal create mode 100644 graphics/pokemon/alcremie/star/Star_Matcha_Cream.pal create mode 100644 graphics/pokemon/alcremie/star/Star_Mint_Cream.pal create mode 100644 graphics/pokemon/alcremie/star/Star_Rainbow_Swirl.pal create mode 100644 graphics/pokemon/alcremie/star/Star_Ruby_Cream.pal create mode 100644 graphics/pokemon/alcremie/star/Star_Ruby_Swirl.pal create mode 100644 graphics/pokemon/alcremie/star/Star_Salted_Cream.pal create mode 100644 graphics/pokemon/alcremie/star/Star_Shiny.pal create mode 100644 graphics/pokemon/alcremie/star/back.png create mode 100644 graphics/pokemon/alcremie/star/front.png rename graphics/pokemon/alcremie/{salted_cream/normal.pal => strawberry/Strawberry_Caramel_Swirl.pal} (58%) create mode 100644 graphics/pokemon/alcremie/strawberry/Strawberry_Default.pal rename graphics/pokemon/alcremie/{lemon_cream/normal.pal => strawberry/Strawberry_Lemon_Cream.pal} (75%) rename graphics/pokemon/alcremie/{matcha_cream/normal.pal => strawberry/Strawberry_Matcha_Cream.pal} (75%) rename graphics/pokemon/alcremie/{mint_cream/normal.pal => strawberry/Strawberry_Mint_Cream.pal} (75%) create mode 100644 graphics/pokemon/alcremie/strawberry/Strawberry_Rainbow_Swirl.pal rename graphics/pokemon/alcremie/{ruby_cream/normal.pal => strawberry/Strawberry_Ruby_Cream.pal} (57%) rename graphics/pokemon/alcremie/{ruby_swirl/normal.pal => strawberry/Strawberry_Ruby_Swirl.pal} (75%) create mode 100644 graphics/pokemon/alcremie/strawberry/Strawberry_Salted_Cream.pal rename graphics/pokemon/alcremie/{ruby_cream/shiny.pal => strawberry/Strawberry_Shiny.pal} (87%) create mode 100644 graphics/pokemon/alcremie/strawberry/back.png create mode 100644 graphics/pokemon/alcremie/strawberry/front.png diff --git a/graphics/pokemon/alcremie/berry/Berry_Caramel_Swirl.pal b/graphics/pokemon/alcremie/berry/Berry_Caramel_Swirl.pal new file mode 100644 index 0000000000..5a19b7c4c7 --- /dev/null +++ b/graphics/pokemon/alcremie/berry/Berry_Caramel_Swirl.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 232 184 +200 168 120 +232 168 96 +144 112 72 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +0 120 200 +0 80 144 +0 40 104 +0 0 0 diff --git a/graphics/pokemon/alcremie/berry/Berry_Default.pal b/graphics/pokemon/alcremie/berry/Berry_Default.pal new file mode 100644 index 0000000000..118df4edd1 --- /dev/null +++ b/graphics/pokemon/alcremie/berry/Berry_Default.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 224 208 +208 160 168 +240 136 144 +128 80 88 +248 224 200 +208 128 136 +248 224 200 +208 160 168 +248 224 200 +208 160 168 +0 120 200 +0 80 144 +0 40 104 +0 0 0 diff --git a/graphics/pokemon/alcremie/berry/Berry_Lemon_Cream.pal b/graphics/pokemon/alcremie/berry/Berry_Lemon_Cream.pal new file mode 100644 index 0000000000..17fd451a87 --- /dev/null +++ b/graphics/pokemon/alcremie/berry/Berry_Lemon_Cream.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 248 152 +208 184 72 +232 224 0 +112 120 24 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +0 120 200 +0 80 144 +0 40 104 +0 0 0 diff --git a/graphics/pokemon/alcremie/berry/Berry_Matcha_Cream.pal b/graphics/pokemon/alcremie/berry/Berry_Matcha_Cream.pal new file mode 100644 index 0000000000..edb69b6883 --- /dev/null +++ b/graphics/pokemon/alcremie/berry/Berry_Matcha_Cream.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +232 248 208 +176 208 152 +192 224 96 +104 128 80 +232 248 200 +176 208 152 +232 248 200 +176 208 152 +232 248 200 +176 208 152 +0 120 200 +0 80 144 +0 40 104 +0 0 0 diff --git a/graphics/pokemon/alcremie/berry/Berry_Mint_Cream.pal b/graphics/pokemon/alcremie/berry/Berry_Mint_Cream.pal new file mode 100644 index 0000000000..3a21681b21 --- /dev/null +++ b/graphics/pokemon/alcremie/berry/Berry_Mint_Cream.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +208 240 232 +152 168 176 +112 208 200 +72 112 128 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +0 120 200 +0 80 144 +0 40 104 +0 0 0 diff --git a/graphics/pokemon/alcremie/berry/Berry_Rainbow_Swirl.pal b/graphics/pokemon/alcremie/berry/Berry_Rainbow_Swirl.pal new file mode 100644 index 0000000000..37a0a40498 --- /dev/null +++ b/graphics/pokemon/alcremie/berry/Berry_Rainbow_Swirl.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 248 184 +208 192 120 +216 144 88 +120 88 64 +240 160 168 +208 128 136 +176 232 224 +128 160 168 +248 248 112 +216 192 40 +0 120 200 +0 80 144 +0 40 104 +0 0 0 diff --git a/graphics/pokemon/alcremie/berry/Berry_Ruby_Cream.pal b/graphics/pokemon/alcremie/berry/Berry_Ruby_Cream.pal new file mode 100644 index 0000000000..350cfeb22f --- /dev/null +++ b/graphics/pokemon/alcremie/berry/Berry_Ruby_Cream.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 208 208 +200 152 184 +232 112 192 +128 80 112 +248 208 208 +200 152 184 +248 208 208 +200 152 184 +248 208 208 +200 152 184 +0 120 200 +0 80 144 +0 40 104 +0 0 0 diff --git a/graphics/pokemon/alcremie/berry/Berry_Ruby_Swirl.pal b/graphics/pokemon/alcremie/berry/Berry_Ruby_Swirl.pal new file mode 100644 index 0000000000..e0c66e7fc1 --- /dev/null +++ b/graphics/pokemon/alcremie/berry/Berry_Ruby_Swirl.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 240 208 +208 184 160 +240 192 128 +128 96 80 +248 176 192 +224 120 128 +248 176 192 +224 120 128 +248 176 192 +224 120 128 +0 120 200 +0 80 144 +0 40 104 +0 0 0 diff --git a/graphics/pokemon/alcremie/berry/Berry_Salted_Cream.pal b/graphics/pokemon/alcremie/berry/Berry_Salted_Cream.pal new file mode 100644 index 0000000000..eca511097a --- /dev/null +++ b/graphics/pokemon/alcremie/berry/Berry_Salted_Cream.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +232 232 248 +176 176 184 +112 208 200 +88 88 96 +232 232 248 +176 176 184 +232 232 248 +176 176 184 +232 232 248 +176 176 184 +0 120 200 +0 80 144 +0 40 104 +0 0 0 diff --git a/graphics/pokemon/alcremie/mint_cream/shiny.pal b/graphics/pokemon/alcremie/berry/Berry_Shiny.pal similarity index 66% rename from graphics/pokemon/alcremie/mint_cream/shiny.pal rename to graphics/pokemon/alcremie/berry/Berry_Shiny.pal index f71c66c01e..1fb826a870 100644 --- a/graphics/pokemon/alcremie/mint_cream/shiny.pal +++ b/graphics/pokemon/alcremie/berry/Berry_Shiny.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 +216 216 216 +152 152 152 +128 128 128 +88 88 96 72 80 72 248 248 248 -88 88 96 -128 128 128 +168 176 176 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +0 120 200 +0 80 144 +0 40 104 16 16 16 -152 152 152 -136 32 56 -248 88 112 -192 48 72 -168 176 176 -168 176 176 -216 216 216 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/pokemon/alcremie/berry/back.png b/graphics/pokemon/alcremie/berry/back.png new file mode 100644 index 0000000000000000000000000000000000000000..a2236a94f48183c3d75df4570ba14e00014dd42a GIT binary patch literal 651 zcmV;60(AX}P)m%P>=v9Xb=z(mz1&|0006O zNkltq*t#4p8`GN1naXLdXq{d*d(NQ+>7_2C`qZHPG3k?_|m z#?Ea0a__BA1hd3dpguB;bawSVP`3uCk1s<84FJiffB^v21*iaE00iTl1I)eku>zD3 z0P)nDVFInB@Xm470U3(|5gNrAV;+kpf(5V{k3}CL#&Pf`f67SXI6cG3D9|EVl(&J5 zkO9XK(W|dPfE*&0-0VF-Y#oq*B`iv+@*(U4Y-*o&sGR6l1RkF;z1H7kIvN zfw3C_op8OTZ;mI~MZmWKHeG}OiehkYhF7NgjM5939>^L1(m}|m1MEo^`V4^OW7Prp zOT~+90E}5|T7V)vi0BxQ^R^3orkHT0+}pb65=;Zoa}`h7GIHl|kAJ61wg9qB3|80B z`L#S`OcY4Q2b*aDsIw+xN}m@SZ2!-V{(^y7K>(6`ljLj@>_k|qvOkb}Z04-*DdAO`pfwppISzpL} zTSECgmXMh9nFVt9J~4f)LZO8mhWxL;={N6;CR*;!J~;pY002ovPDHLkV1lWgE1>`Y literal 0 HcmV?d00001 diff --git a/graphics/pokemon/alcremie/berry/front.png b/graphics/pokemon/alcremie/berry/front.png new file mode 100644 index 0000000000000000000000000000000000000000..4bbc456c3eb1b798ccebbea99cdb69f76b295279 GIT binary patch literal 717 zcmV;;0y6!HP)m%P>=v9XaE2JRX3E%00075 zNklem}nV-lwN4mHt<*EQz%VIPPJ| z*Bcz#dq_CnHxQ?Ly?5YlYQlTqkqs8dryfvZwy+o=;28l+R1g6Ez|_O9K~i+L7_ek2 zL*0;;^>*&0z)=;Th!Be>TLN{0Q|!$1aazmeT?(`~!0aXuJp4Ml<}pqvsJFAYv-7~? z`&%yt$^|qRw^uqpf_7ulz!unMc70g@ctG4_3A+I==gWMUesh<_>6$Cf8Ouji_M6xP z8U$RQv2MYdwq`3yL|r(p*38MzKsk{@5~nT+XAQ_&Sin6do&yoM21bjod_HV@jNuq- zj)2MlN=bgvu2t}2T3vpCd}fXH1f+11d*Hq!rBW)hMOmZh`lvhD1lB5lF&c<38E4%U z0y?iF@uLBb)L`pEIoUOt0KXG8{hFeh>Ofx^fTQ#~ql*EsYU!mQV0dDz_mCP;J}3st zK|cYW_FsesVAKzi;sXO9J3P_*`{A(o0SSif5Q~Sh6BNC+wL8)o)vtIC4z00000NkvXXu0mjf#|=k5 literal 0 HcmV?d00001 diff --git a/graphics/pokemon/alcremie/clover/Clover_Caramel_Swirl.pal b/graphics/pokemon/alcremie/clover/Clover_Caramel_Swirl.pal new file mode 100644 index 0000000000..a8b5968386 --- /dev/null +++ b/graphics/pokemon/alcremie/clover/Clover_Caramel_Swirl.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 232 184 +200 168 120 +232 168 96 +144 112 72 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +136 216 64 +24 144 36 +24 80 36 +0 0 0 diff --git a/graphics/pokemon/alcremie/clover/Clover_Default.pal b/graphics/pokemon/alcremie/clover/Clover_Default.pal new file mode 100644 index 0000000000..17fe8cc6b4 --- /dev/null +++ b/graphics/pokemon/alcremie/clover/Clover_Default.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 224 208 +208 160 168 +240 136 144 +128 80 88 +248 224 200 +208 128 136 +248 224 200 +208 160 168 +248 224 200 +208 160 168 +136 216 64 +24 144 36 +24 80 36 +0 0 0 diff --git a/graphics/pokemon/alcremie/clover/Clover_Lemon_Cream.pal b/graphics/pokemon/alcremie/clover/Clover_Lemon_Cream.pal new file mode 100644 index 0000000000..bd199e2bc4 --- /dev/null +++ b/graphics/pokemon/alcremie/clover/Clover_Lemon_Cream.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 248 152 +208 184 72 +232 224 0 +112 120 24 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +136 216 64 +24 144 36 +24 80 36 +0 0 0 diff --git a/graphics/pokemon/alcremie/clover/Clover_Matcha_Cream.pal b/graphics/pokemon/alcremie/clover/Clover_Matcha_Cream.pal new file mode 100644 index 0000000000..0f4f393f43 --- /dev/null +++ b/graphics/pokemon/alcremie/clover/Clover_Matcha_Cream.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +232 248 208 +176 208 152 +192 224 96 +104 128 80 +232 248 200 +176 208 152 +232 248 200 +176 208 152 +232 248 200 +176 208 152 +136 216 64 +24 144 36 +24 80 36 +0 0 0 diff --git a/graphics/pokemon/alcremie/clover/Clover_Mint_Cream.pal b/graphics/pokemon/alcremie/clover/Clover_Mint_Cream.pal new file mode 100644 index 0000000000..08b8f83461 --- /dev/null +++ b/graphics/pokemon/alcremie/clover/Clover_Mint_Cream.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +208 240 232 +152 168 176 +112 208 200 +72 112 128 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +136 216 64 +24 144 36 +24 80 36 +0 0 0 diff --git a/graphics/pokemon/alcremie/clover/Clover_Rainbow_Swirl.pal b/graphics/pokemon/alcremie/clover/Clover_Rainbow_Swirl.pal new file mode 100644 index 0000000000..4d6514f51e --- /dev/null +++ b/graphics/pokemon/alcremie/clover/Clover_Rainbow_Swirl.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 248 184 +208 192 120 +216 144 88 +120 88 64 +240 160 168 +208 128 136 +176 232 224 +128 160 168 +248 248 112 +216 192 40 +136 216 64 +24 144 36 +24 80 36 +0 0 0 diff --git a/graphics/pokemon/alcremie/clover/Clover_Ruby_Cream.pal b/graphics/pokemon/alcremie/clover/Clover_Ruby_Cream.pal new file mode 100644 index 0000000000..3243fea802 --- /dev/null +++ b/graphics/pokemon/alcremie/clover/Clover_Ruby_Cream.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 208 208 +200 152 184 +232 112 192 +128 80 112 +248 208 208 +200 152 184 +248 208 208 +200 152 184 +248 208 208 +200 152 184 +136 216 64 +24 144 36 +24 80 36 +0 0 0 diff --git a/graphics/pokemon/alcremie/clover/Clover_Ruby_Swirl.pal b/graphics/pokemon/alcremie/clover/Clover_Ruby_Swirl.pal new file mode 100644 index 0000000000..fd68b6c2cd --- /dev/null +++ b/graphics/pokemon/alcremie/clover/Clover_Ruby_Swirl.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 240 208 +208 184 160 +240 192 128 +128 96 80 +248 176 192 +224 120 128 +248 176 192 +224 120 128 +248 176 192 +224 120 128 +136 216 64 +24 144 36 +24 80 36 +0 0 0 diff --git a/graphics/pokemon/alcremie/clover/Clover_Salted_Cream.pal b/graphics/pokemon/alcremie/clover/Clover_Salted_Cream.pal new file mode 100644 index 0000000000..a5c5bc10fc --- /dev/null +++ b/graphics/pokemon/alcremie/clover/Clover_Salted_Cream.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +232 232 248 +176 176 184 +112 208 200 +88 88 96 +232 232 248 +176 176 184 +232 232 248 +176 176 184 +232 232 248 +176 176 184 +136 216 64 +24 144 36 +24 80 36 +0 0 0 diff --git a/graphics/pokemon/alcremie/matcha_cream/shiny.pal b/graphics/pokemon/alcremie/clover/Clover_Shiny.pal similarity index 65% rename from graphics/pokemon/alcremie/matcha_cream/shiny.pal rename to graphics/pokemon/alcremie/clover/Clover_Shiny.pal index eb171da47c..6329ca1ecd 100644 --- a/graphics/pokemon/alcremie/matcha_cream/shiny.pal +++ b/graphics/pokemon/alcremie/clover/Clover_Shiny.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 +216 216 216 +152 152 152 +128 128 128 +88 88 96 72 80 72 248 248 248 -88 88 96 -128 128 128 -16 16 16 -152 152 152 -216 216 216 -136 32 56 -248 88 112 -192 48 72 +168 176 176 248 248 248 168 176 176 -0 0 0 -0 0 0 -0 0 0 +248 248 248 +168 176 176 +136 216 64 +24 144 36 +24 80 36 +16 16 16 diff --git a/graphics/pokemon/alcremie/clover/back.png b/graphics/pokemon/alcremie/clover/back.png new file mode 100644 index 0000000000000000000000000000000000000000..8a8efe5677cd07659a87157e48a53fc0607c47c8 GIT binary patch literal 655 zcmV;A0&x9_P)v$b{#7JjL_ka55pWX3n_V1OqraGC_*Y7T=E~bcsj)YsU z7&|ih`QEAfAv46)gg(=Z>gek2gl-J5-oKeLXaI;mOc(%=9)g?zG(gBW=KxEm?n%H3 zLx5=R%-};?B6ObPx&u-cOhjlZN*QxlG!YDd!#FJZ2oW9!fBslTI*xG zXGTbYV~F77N&aO5Acug(I~Ncc2P9y{Z}V?sAnkls?B(bE2#9Qe{~U*mIvpfqXM+~9 zIRYDaRoFc|I|4f4dd<&lz_%mdTf-v&MbWr7!z+`0M&Sf>52OtMiLHA<2bfM3`V4^8 zGuZ+7OTyRb0Pt9(TYw_mhrvTYEZZsYnP9@Tw5Pn|0(1k=a~;juDzMk;4*yQ1XaQtd zI9Odx{cCZ^7)ub04>r>PP^V4Cgg!4e*#2Kz^$CT#GQfHBbuiuol~P-UrxVvy1f=w- z_jC9JsCIJ`GwjpN3kx_!Ad?4RNm-AtHy`(QkL@CB_k|qPLS1hx04)|-dAO`Zf-+^F zWqm5LyoB;cBp}wu3j<{KePa3|uk)`oW<`-70@!9(+!i;e>qIHx0Q9aXikrIDkl;{a p1o-f~D9M2q3N6GiK4Fp3)1tn3QXsVErCAqVJBI>`)maEIPA=Crxn0T(l0#24h8jVfsOg{ zy`KT)0=iC`EGj*mC(9XeumqObnI`i}f=GdQ`4F}P{5DxsfS|j}vSQ2?=j>5+%x2K_ zG6D_(FJP=+-5Sf*Y$b{42-nk^xfMWAPNa~;?MT9z1LX({xX;8xAOgqW*hvLw`M|Od zGk}kxMe)wt-+mwxaMrsb_xzRvatEU0VR@YwE|Z<#ZQ84hyb{@`(B0ImjME@|5TP;2;{+ez#UQ>P09X$u=rnrC527fn z?^0idc|vp*zA_y3kDIt>1x!GIVLdla>aB0E?YG*f1+}2!c#)o*?Pir|IIgo}xid zLbyO@t43H&MWNhLmPE-^x)(jb65#*Ce?L#h+3eq|AfsAO>e>A#s*h8|Nk_u3SBza) z{pRS^=Ym<{c0!*SMs;y}H=$bttj`~&3>pC9FB1j;qzh0JfB_JUa}Kcb>VX0*ApoL< zH^Us-lEOR3tOHUOPDE%bN*VK5G!ZO-hw)hS5h5H1fBjrW8pnALC!;`%cs+Yj`ZGcb z97BZbgZ@4NkVD8~FA!M=Bw)j}F3U3@?R+-ut=9TD0wNdSKA_Vb0w8hqAnX9!sY0Ituz96A z0Dp;ipALY4MWzKP!Y>hy0l8{VfzJdJX39OpBbQ(rfSy^jV4Kigt4I7hQL+V)Wn!?p zhWgj?lrdHy86Rw>1)xrwj0s&YHrW2(yZjppb!CB@=5{dN167{ya-2?FQxTBTRqxL+ zCm?S(H?fC(xqagRR|pj91gt3Q<-_*t(e1HY7VW-}L%z%(whn+6%c4AetVBU>%bjI? zB@10b`6H4Lo6DsI3io?rdaY}{r(;$Wc?@8igFfgz>L$r^=>g0E@5;We4J3Fdc?Qhk mk1ol9778uoFy#OGTRj0_A~QV21hz;30000K`ir literal 0 HcmV?d00001 diff --git a/graphics/pokemon/alcremie/flower/front.png b/graphics/pokemon/alcremie/flower/front.png new file mode 100644 index 0000000000000000000000000000000000000000..20c9af2f46ff7d25e657c26d72076f8a33276817 GIT binary patch literal 721 zcmV;?0xtcDP){kYTBYX4P`AyM0a(*a68 z*^7C%@PLx)2!jCvUL|0NIs(91RSmxhsc5GZSnb?q zHnimV?W*YS#LI<~0Vj>+BK}kih~w3+K%aQ9#P4Fjhqv)f3heXy@te31@e4?>LqQ*v z0cnXFF9FI0*kvVZ=kaGCZ7h+NS;k)qfLH->(;=)j@Xo5ZOyBOXBpY+hIV;(v>Dz8X zpiRK_8S58sjbUlFmPE9K<7&;EVh@xPDI{@Pl5p0Be1rkqW8wi2fn#v&qyRKLV9C2V zzg?map{Sz>vNGa}E0!Uv|FM1`Xvm7v0>R8ZyshMRTMNyOkObmE^-1Qj4 zHZ~jql>?NL{JPt$tor*%V-F*(t5$95nnu6E{axoT{=cf9SzZe4S2S_800000NkvXXu0mjf D{0mY) literal 0 HcmV?d00001 diff --git a/graphics/pokemon/alcremie/lemon_cream/back.png b/graphics/pokemon/alcremie/lemon_cream/back.png deleted file mode 100644 index d5a073b54b918a1f73ac28114ef8ecbd4de5db82..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 688 zcmV;h0#E&kP)Px#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_NKi=l`1n{@V1R&t5D*ZUn3#wlIQUp_ zz%WRtu&~(J*Z=?k000000000001;arsQ>@~32;bRa{vGi!vFvd!vV){sAK>D0trb( zK~zY`?Ub>O+CUJ7p`f>w1x0j6d0n)If+~*3tLQ3F)+Z&M(Prxuk(_&gD82_cB`yPT zvrn0sH8yMT`T?Shgpv3^{rk^&mdQU@(~v6g>fv!kbr+25NDS+Htq)e8?*{dm(3ZIO z=o6`_4)?!3x;4NuOP@glKwNta07w_WJb(lcS}6sv9@M7{u!I0eHapJ==i*{;j$sEx zI`>3qDv7iXd=V^w&E#Vd5*&wmJC>2g5sYONXb}hAj1Yms5P9GS$RXEpQGB@t66=5j zEL8dH$1MXF0GfdqG=!EOFnO{$`i-6w} z^d|5D6h-3R^j{gfWaNW@yZ})HK-vqLcYr-H$-o$QGaoA4Gl) z@O9e-K2uB>GIx-Vii2zbdWOkHFM2ESh(D){w*azQ^j25W`58ZFj2UpPdYfqh$f71= zO4m#Gw*S+~{6QhxTVUSY4y`W0-k6iY>BJco0TEsGOCK`=OuMh}7r zDeJ>=b+>cRIBn~8U&z61&2i-bXtAw}^UF#Z7+dZvvn8*~0*bE*hgd#rEztY7!t_;{ zmEWn&Jw?6-@R+CSTlIpvOpW0KfPAW|>Ltr0q}UX{0cP;AD#(Er3N3g)cAu WiV4pYsO)|K0000T3Sh+7+sq1NUwMKRQgxkWU(za&J@Fs`#VJJZR;min)fDs;Q{-s^%RXoT zI?kI&r@#YI1>ES3NQyRRoD0h=+inym8m1azSBQSK3n!IgMl@Z}FqTq;)fyDngc2Pt zh~{DnWeX>-jJ^j=u?>!uRDg2;BKffa_(snPcU~R@eE}_!?;E)Logi?o0No)1;SPaM z*et)WQwbn!D56*Z-0c$un)!#D@}2R2MqvUQ5Hkh0#ti-j9L9{{VM;;wr3%<<;-5-@ zZ_I?M5s@N|^7~Z++Gy}R=>cA(9?9JuwyrUp2A`8&zDUjvXqz9i;N%)$EHI_%KH z6&P;FfOV`Tu*1MS^NBIcUZp&;+`$~#sbge*rgl-J5KE0VTXaPt+PZ$7@9)p+wG(gP4Fa%h6^|=77 zI0i@--V6bB#bfUriyp{XG!db#BxlTH(MB);Hsi4vA|yDD@WoRZX&mD-tc)>Qq^H&0 zL`KLV#1PTj>q&qdB9^MX2S|(q60i={@4GRO_daWOvb!Dui4BD6W(@Q?2*%zyfM`cx z1FxKvb2|b$;d(8cX$5u!d~0|DpeP#m#=SBzWaM5z4?x}mkU1fv9xx}>=;HwE=b{Jj zm&LDh2bi-&cK}8B5l4>!zUsQbXNCz2VGrsd&TwN1OA-}-T}z6*jZgo z=QsS2F%`gB=xn9|pvl{e8GT;N+5Vqf`4xqxHo$rNb+B*%YALr8r;|2R1myIo4}Am# z$Zm5p)9ka&OA9zdpcDsSMOlxpHedGk8QW#q?F%``rM%i$09q`|>Tp?^0BOpeWpl>M zT?N&*ghQ&2mj)>9`^5BW*X(Yn&6*-V2Jo1B^^Fe*jZ1C+Kt=wGIFP002ovPDHLkV1frmFjN2l literal 0 HcmV?d00001 diff --git a/graphics/pokemon/alcremie/love/front.png b/graphics/pokemon/alcremie/love/front.png new file mode 100644 index 0000000000000000000000000000000000000000..36cef02d8b5af7848ed086c703872b36c436bf7b GIT binary patch literal 723 zcmV;^0xbQBP);DUh!6vr>`@lBlVV#?JDVxA9s*MGhe!^ayMgRU zD0tZ%wWm4cABckKwP~ez%_cr{2w_lki?rZ&_K z+uB*&*(q>bg{Xkoi554z0)67bqs3i*oy*1SH_+kGSVW)m!1e5k$Jn8u?sB%c&6l{I zeQ{%;TtIs{`;Z4j6uG2@C9uqL_VH^TaDh0<5X}}mjiUTAz4ji9(=k_^vw~fgy|xn* zXc2Hc#(McNt)^xxNkm=Pj@Hc1_dq$3LK3?!31=;hr&?Hn5SV+5)>;Oqhc`v!rZI4rM((|enM3@=#QVE~O~Oo4=x%giRu z!pXa~9m5>hio!#sUTgwZ7%Ii>rU25@)D7Rt$ut8@lsXc$BQU;KYnzW_w}|6>6#L}vg1002ovPDHLk FV1lP#S>pfz literal 0 HcmV?d00001 diff --git a/graphics/pokemon/alcremie/matcha_cream/back.png b/graphics/pokemon/alcremie/matcha_cream/back.png deleted file mode 100644 index 7a422730b9f0ff474dfe90dcb73caf21c67e1dce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 679 zcmV;Y0$BZtP)pUY?00009 za7bBm001r{001r{0eGc9b^rhX2XskIMF-~w2LT%cs0006CNklcx5O8gdqxZ8)y%o>|r z@RB~tF98zs>ED0GvmTB9J>5)5QLsMQFG#o1^*R#6^{v)BTc2(Q>tmrUaTlnMq$cg| zeg*2*0A=POgBF0K2^auST>uLJ5N7@Xsz2Vz|WBD6|l zt)ox`3t%(FwFoJWL%qG0k;V~S%P7zyiGmp+28AJtC=8H8p_8)wdgV@M zAntu;`h8Vx&Vkeg)bjw)*MVvM`q>3oI|3JY^TQjp8v&hgy;jrnN%j%&SAt$eA%LPt z+#COqu~SAq2*?ubSgW5B0PxV9N^2Y3;fP7 z;e@$^d{i7{3()r@UFn&(5|8+I#&`!HtA)3^lFrZhF=N7jYvpaG1t5>xj2T@o?QQ?Z zgZYhxd~1Pedpopp-cH6G3{EG>Nd&}n)lYql2{7H}X13Yg;++G`5oo&Wx1_B1`^D|X zJ>#%$x_u!Bvo`yM1E9saDUS~;V_>Y@S>|)zR3(&OQVxl{Ut7R?TVeXT%ByeG=9VI# z19;3+{k491Au(0>-r_nC1ltXzW~PYp)SdR778u6AM(HcrauVk6*oT?*+~EZ N002ovPDHLkV1lmBFv$P_ diff --git a/graphics/pokemon/alcremie/matcha_cream/front.png b/graphics/pokemon/alcremie/matcha_cream/front.png deleted file mode 100644 index 28225df1a016f10c75706825cb1bd34326a181b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 738 zcmV<80v-K{P)s0006-NklQrX-v}pc^c@UI0qh zTQ~v`2xT?=ML_^BnYf3KzE2hctGG2 zHp|!SQUVAYifJSO?v9B9&HU3%`Of&ir(ps+5Hkh0#ti-j9L9{{VM;;wr3%<<;$KRD zZ_I?M5s@OD=J%@vw9(*Y(hG#ZGUglsQv!@3{M1{n@x+Y!e2jdljrj!#4fFHB-H;Gt zOsR{uL@{zv4>1YMjjU`-f_91EqCZ1GO3TfWA7TiJgj8DPVxyP=_oV8sCS4UesJAu1 zRk3GusR5j2aZ(Vdd19O)6b6d>cA(9?9JuwyrUp2B`8&zDUjvXqz9i;N%*p!PI_%WL z6&P;FfOV`Tu+zZ2@QE?ZUZp&<+`*jLrDoJ0eVHF6DeFevmMw{T^Oqszzxh@E0TJib UN+6)1{{R3007*qoM6N<$f}mJOY5)KL diff --git a/graphics/pokemon/alcremie/mint_cream/back.png b/graphics/pokemon/alcremie/mint_cream/back.png deleted file mode 100644 index 481ce9c78cff8ecc5e29aa50f6b6a90d712c5c06..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 688 zcmV;h0#E&kP)Px#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_NKi=l`1n{@V1R&t5D*ZUn3#wlIQUp_ zz%WRtu&}7Gu-Mqx00000000000AHEecmMzZ32;bRa{vGi!vFvd!vV){sAK>D0trb( zK~zY`?Ub>O+CUJ7p`f>w1x0j6d0n)If+~*3tLQ3F)+Z&M(Prxuk(_&gD82_cB`yPT zvrn0sH8yMT`T?Shgpv3^{rk^&mdQU@(~v6g>fv!kbr+25NDS+Htq)e8?*{dm(3ZIO z=o6`_4)?!3x;4NuOP@glKwNta07w_WJb(lcS}6sv9@M7{u!I0eHapJ==i*{;j$sEx zI`>3qDv7iXd=V^w&E#Vd5*&wmJC>2g5sYONXb}hAj1Yms5P9GS$RXEpQGB@t66=5j zEL8dH$1MXF0GfdqG=!EOFnO{$`i-6w} z^d|5D6h-3R^j{gfWaNW@yZ})HK-vqLcYr-H$-o$QGaoA4Gl) z@O9e-K2uB>GIx-Vii2zbdWOkHFM2ESh(D){w*azQ^j25W`58ZFj2UpPdYfqh$f71= zO4m#Gw*S+~{6QhxTVUSY4y`W0-k6iY>BJco0TEsGOCK`=OuMh}7r zDeJ>=b+>cRIBn~8U&z61&2i-bXtAw}^UF#Z7+dZvvn8*~0*bE*hgd#rEztY7!t_;{ zmEWn&Jw?6-@R+CSTlIpvOpW0KfPAW|>Ltr0q}UX{0cP;AD#(Er3N3g)cAu WiV4pYsO)|K0000wi?jAs9_Smtl}jgF|nOM0nFccw;t%xG4!|5ajE1SByCxr|Pvfh2J>aVts4`BgZ{n}>t7GS@7e4(i8 zV7=cxbSw_rrve!9^)|Bt*;k%mg;ZT<*_X5mWKTRuKyeDuyOpW}bTtJ%#T0p(z_Je- zfR6Jf(kbvjQ~@`7Ba))c8Rx<>%eEWEiH50$*cGB*?ZQc=m=R4EG>oMbVYLRuHK9a@ z3!=H0LfOK}E2Hm0Q*47{B^BTtfJlC90KU<)!kw1~L0>?N{J2>8;U3v0C)RDfoA^UrhI4opHY~=2Edp<#X=xEm5; zj45@|mMF$9>LDh9xsjD^Nzg74T=ZuMNNKq_^1~EDA|aJlx!5RXz&)wDt4Ys=4(e?U za8>LXU1|VlS)3FEYMvNp2!(;-z8z>YF9&YDv8e%$Uj9xp?$-chkS~dO6LYXWw+=h> za0P}NGGHBR3G6U1&wOGGvsWpPEO#(RcB&cmM_=YgNy@rWw`EJB-uz`q`EP!ee*lfd V&=I7mS9bsa002ovPDHLkV1o64G{*n{ diff --git a/graphics/pokemon/alcremie/ribbon/Ribbon_Caramel_Swirl.pal b/graphics/pokemon/alcremie/ribbon/Ribbon_Caramel_Swirl.pal new file mode 100644 index 0000000000..c4fce2c7c6 --- /dev/null +++ b/graphics/pokemon/alcremie/ribbon/Ribbon_Caramel_Swirl.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 232 184 +200 168 120 +232 168 96 +144 112 72 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +176 136 176 +144 96 168 +112 72 136 +0 0 0 diff --git a/graphics/pokemon/alcremie/ribbon/Ribbon_Default.pal b/graphics/pokemon/alcremie/ribbon/Ribbon_Default.pal new file mode 100644 index 0000000000..b0ad7cdf74 --- /dev/null +++ b/graphics/pokemon/alcremie/ribbon/Ribbon_Default.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 224 208 +208 160 168 +240 136 144 +128 80 88 +248 224 200 +208 128 136 +248 224 200 +208 160 168 +248 224 200 +208 160 168 +176 136 176 +144 96 168 +112 72 136 +0 0 0 diff --git a/graphics/pokemon/alcremie/ribbon/Ribbon_Lemon_Cream.pal b/graphics/pokemon/alcremie/ribbon/Ribbon_Lemon_Cream.pal new file mode 100644 index 0000000000..b022d03006 --- /dev/null +++ b/graphics/pokemon/alcremie/ribbon/Ribbon_Lemon_Cream.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 248 152 +208 184 72 +232 224 0 +112 120 24 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +176 136 176 +144 96 168 +112 72 136 +0 0 0 diff --git a/graphics/pokemon/alcremie/ribbon/Ribbon_Matcha_Cream.pal b/graphics/pokemon/alcremie/ribbon/Ribbon_Matcha_Cream.pal new file mode 100644 index 0000000000..4999acd248 --- /dev/null +++ b/graphics/pokemon/alcremie/ribbon/Ribbon_Matcha_Cream.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +232 248 208 +176 208 152 +192 224 96 +104 128 80 +232 248 200 +176 208 152 +232 248 200 +176 208 152 +232 248 200 +176 208 152 +176 136 176 +144 96 168 +112 72 136 +0 0 0 diff --git a/graphics/pokemon/alcremie/ribbon/Ribbon_Mint_Cream.pal b/graphics/pokemon/alcremie/ribbon/Ribbon_Mint_Cream.pal new file mode 100644 index 0000000000..2349810b7e --- /dev/null +++ b/graphics/pokemon/alcremie/ribbon/Ribbon_Mint_Cream.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +208 240 232 +152 168 176 +112 208 200 +72 112 128 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +176 136 176 +144 96 168 +112 72 136 +0 0 0 diff --git a/graphics/pokemon/alcremie/ribbon/Ribbon_Rainbow_Swirl.pal b/graphics/pokemon/alcremie/ribbon/Ribbon_Rainbow_Swirl.pal new file mode 100644 index 0000000000..8c17769478 --- /dev/null +++ b/graphics/pokemon/alcremie/ribbon/Ribbon_Rainbow_Swirl.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 248 184 +208 192 120 +216 144 88 +120 88 64 +240 160 168 +208 128 136 +176 232 224 +128 160 168 +248 248 112 +216 192 40 +176 136 176 +144 96 168 +112 72 136 +0 0 0 diff --git a/graphics/pokemon/alcremie/ribbon/Ribbon_Ruby_Cream.pal b/graphics/pokemon/alcremie/ribbon/Ribbon_Ruby_Cream.pal new file mode 100644 index 0000000000..6384296180 --- /dev/null +++ b/graphics/pokemon/alcremie/ribbon/Ribbon_Ruby_Cream.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 208 208 +200 152 184 +232 112 192 +128 80 112 +248 208 208 +200 152 184 +248 208 208 +200 152 184 +248 208 208 +200 152 184 +176 136 176 +144 96 168 +112 72 136 +0 0 0 diff --git a/graphics/pokemon/alcremie/ribbon/Ribbon_Ruby_Swirl.pal b/graphics/pokemon/alcremie/ribbon/Ribbon_Ruby_Swirl.pal new file mode 100644 index 0000000000..e1f9ce61dc --- /dev/null +++ b/graphics/pokemon/alcremie/ribbon/Ribbon_Ruby_Swirl.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 240 208 +208 184 160 +240 192 128 +128 96 80 +248 176 192 +224 120 128 +248 176 192 +224 120 128 +248 176 192 +224 120 128 +176 136 176 +144 96 168 +112 72 136 +0 0 0 diff --git a/graphics/pokemon/alcremie/ribbon/Ribbon_Salted_Cream.pal b/graphics/pokemon/alcremie/ribbon/Ribbon_Salted_Cream.pal new file mode 100644 index 0000000000..cdf85d28b5 --- /dev/null +++ b/graphics/pokemon/alcremie/ribbon/Ribbon_Salted_Cream.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +232 232 248 +176 176 184 +112 208 200 +88 88 96 +232 232 248 +176 176 184 +232 232 248 +176 176 184 +232 232 248 +176 176 184 +176 136 176 +144 96 168 +112 72 136 +0 0 0 diff --git a/graphics/pokemon/alcremie/ribbon/Ribbon_Shiny.pal b/graphics/pokemon/alcremie/ribbon/Ribbon_Shiny.pal new file mode 100644 index 0000000000..b60e7632fe --- /dev/null +++ b/graphics/pokemon/alcremie/ribbon/Ribbon_Shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +216 216 216 +152 152 152 +128 128 128 +88 88 96 +72 80 72 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +176 136 176 +144 96 168 +112 72 136 +16 16 16 diff --git a/graphics/pokemon/alcremie/ribbon/back.png b/graphics/pokemon/alcremie/ribbon/back.png new file mode 100644 index 0000000000000000000000000000000000000000..3b595ebb62e1a05e454fd384c4cd15131a5e612c GIT binary patch literal 650 zcmV;50(Jd~P)`;+oKPybCjd&Gh9)hkZVSIa z1W#asM0;nQZgF)&W@a7R>v#=4Vx-to{!jn@GdrHm{=Et^s*6cId;gZ|%@lFek?`vk zV`o<1+C5K z0yhFW;d(7Lr<3d=;M)LOTucEJ#o*oyuT1qBr57+gkTw7$t{#LPU{9*hX8^39s1Cqi zB3`BgAYhSc0gCWbgr|U9wO!yd!GxJ|=XB2{m(^b literal 0 HcmV?d00001 diff --git a/graphics/pokemon/alcremie/ribbon/front.png b/graphics/pokemon/alcremie/ribbon/front.png new file mode 100644 index 0000000000000000000000000000000000000000..2f1b913cb7a9e64ccc16ab5f1833d57d44816f17 GIT binary patch literal 724 zcmV;_0xSKAP)51V$R8ppHobvt zB^=mnO1)}|U~D%LtaBoG*TpCs1R=us?t+E;5qt41_xbU>pF2A{|05HI#MlO$_Aum= zEe`DiB&=^+h>L^XGqATM;XQE37K_sh2Pi4FFc=`<6at1QApo2eogD?!|8DNQDZz8Nv&{nv} z1?FFz2q+iOSS>z&&6aRI2U5orahl~^X8_UqKi5GZGWvr7c583I4CSzZbzDL@97tYI^Ny+uTU1mmmJ zB+i2I>xLD<6xf==eWjlM2^c}36t`*uNLN!QcqPY^6fjomSkR`_tkyURf*=K$Xz=E^ z?J$OAY&Zfc1t=x?Rl8Eci)nWG5%Q@vHWQG-itmBDmXu1VR2Qa3(RNX{FbQl__F^;; zS2E7JYXo#wN8)=OEUBTUbLF_#xB}c0E&4S@InjYWE&xuFJ)=tjU{sPzL7?D?F`h$W zK=~jaFui^Z-0MH`3xHAIi-Qje0NLTO-aqt*xzDZP4ck5j_hrY+du>h68+QB`{LuHk z{3`Xxiyi!t_p)HrKL#3W7-(HIYE$oM)C<(#dH$mRtMLmE3<210ttNy30000Px#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_NKi=l`1n{@V1R&t5D*a9*w~05IQUp_ zz%WSo`1q)>u&A)Gn3$LV000000CVB|H2?qr32;bRa{vGi!vFvd!vV){sAK>D0uD(; zK~zY`?Ucca+b|G@lSA${RiF@Z*j)Ei=|CLF|MBae@hFpju%;nZ;MK#!is~*H*O3_3_gbHfKHm-M zvrHS}-lI>1raImK^616@OD=o{EdX)tF#sSv1Lgq)K&F*a0P8`0$^a|N0Fv#_bHcfJ zHaN$y2O`~gBD9r6S_i%e2Eb;Tu?Pu{L%ki#NaF~`GG=HI2i}Yjfx-|?;0MT|(Q#3H zz6BEFfCMa6`SbfN5cNJw{k|-B*Fa(e>UjX@bzoY*ezpPDj=%=q{ID}j?Fi_E>$RO< zPqL4I-vabD@BtJ>;NG~ej9oJFK|ox9s0AQ(LN+~MPTHf711$fr9>7nUy^0)QsuR%x z6yZbGTmyXFb%D0rpZJB~B;KsR)SZs$cq;5g@zGO--|>)jJDV zAW(PLZ%tVr4y(JJea3N9cl$yPaw88b3qXraU7TN5%0Qa3XPGZ}T^3M$NjSvfVPgR2 z-wM-LWnO-xHun_y8o*LQhr4*=q+s;ZYf7m#98{05l8$EqL)S}3&OZpi;N bUX#gRv>!W_dkrV}00000NkvXXu0mjfdL%El diff --git a/graphics/pokemon/alcremie/ruby_cream/front.png b/graphics/pokemon/alcremie/ruby_cream/front.png deleted file mode 100644 index e64880a8cf1d69886645eaa5c8b270b87cc69773..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 742 zcmVLfI#0006>Nklc{#!4DXn~0GjAy+GrG)P%R3N+g#StzI%KL%{5<|)`2 zqixQ+aNx4E=h|DzHP!Ds@y41;tU9C~9U!kY%d8?zxqO-VR|z%*EN zy#TbSw{Qd?5Yz$=T_6Bl)a7t5kcYlr+0@k?DP%a4_4aF3f3F3 zEk)e~>;3k=V{zC#7Ql$FH>nj!zw-nur20BdzhzY*edIv`np2p*Tj?r5S236vQ{-s^ z%RXoTCd!-0V&H+O0`ByUNQyRRoD0h=+wL?<48#T^SBQSK3n!CeMhrdEFp^S))fzN6 zgc1{;iQyuKvW1gZM&E;>*apW+D!?)Tk^I^L{GdyXJ1-A{-hvUy&mFvcNf208fbI~1 zaErhvY?d$BsRR%<6w^omyzCPVhWUq^@}2R2Ps0RuAZ8k#l^XmFIE*R9!;FIIOC7M+ z#6Oh)U#SVzBO*mM&F@zUXrsZ?q!$Q*Wz0DOsst!S_@Q@M;E5Ua`55_98}kzo8s_JL zyCES;sZtkhiDKlU9%2%hD_Pl=1mhCHMSq5Xl$M(#Kg19c37NFY#YQm$?n&2OO}Z>} z&~Iyit76aSQUf@b;-nx@^TaqqC=4|B?LeD(Iq>X_RSj_T@^_MPzXl+Kd`ZlksDt&n zb=aYYD^OgK0qa;xV26Qv;uEEqy-Imxxq~{gQ_ZM9`Z7OCQr3;SEn5=x<}X9afAg#S Y0}huZgfwEz)Bpeg07*qoM6N<$f~*)n%K!iX diff --git a/graphics/pokemon/alcremie/ruby_swirl/back.png b/graphics/pokemon/alcremie/ruby_swirl/back.png deleted file mode 100644 index ae275b897dad76b2230070b90df594b451f7af00..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 691 zcmV;k0!;mhP)Px#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_NKi=l`1n{@V1R&t5D*ZUn3&ku*oYuF z_*ihjFi80L_^7b300000000000P8#>RsaA132;bRa{vGi!vFvd!vV){sAK>D0t`t+ zK~zY`?Ub>O+CUJ7p`f>w1t}8EQC}0Sp`wW6@k)`d0A+nel*VYY&yga9bA6=v`jZmB zMIi3>p)#|^W({6HK$MX%691=v{~6CR`3GwnQUzW;Jg%tjf^i**VSTUl!Rqtfpgt4Y z689c`A~n_F{nJskN`p}r2y80`ji2d5CF+$=Q-hATnx@J z?0`t;o(N4Pk=B7Pf(5Xdd@MqO<4|wMGSWDLv5W#O;=r2`B2XA25BvZ*EaJ@G3>q&MI z@LPi31U`VGNZgzLD`S_8d=QWqAZh?edm-}Pk94#~zC}evJ%$wVx)dkoab22!cIHMvUqN{%CV@7~!H#fD-9#-!hV2ME8 zUcWVEeK@Y}cJ3LcZQbq*Ihd_Et{ea@wsmoSSt$c!%bjJm!N3002ovPDHLkV1mE;Cq@7O diff --git a/graphics/pokemon/alcremie/ruby_swirl/front.png b/graphics/pokemon/alcremie/ruby_swirl/front.png deleted file mode 100644 index cb99b49fa25fa85fcf1e37707ae94c4f200ddc1a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 753 zcmVPx#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_fM8Jgu)y%ZfY7+05D*af@X+}9_=q4l z_*ihjFi7~YxZrqz00000000000PC8)!~g&Q32;bRa{vGi!vFvd!vV){sAK>D0!m3l zK~zY`?UcQ1+dvq`rNPkA7t5C+o)YNpTq^?hB6KqC)`Cw^>c!mYH6dfbZnuU)YVWNR z`!9&K6@!=4Vp31OKdP^^RbSmppY{3iyk93-|5cPtP<6n`If^uE5?Yr?c<*Y6i_7zu z5Y!c6=isWEh?5H!q^gdvIUwLx0ydo?0E}1Fa3+vSUd_wg`5nn@7?Z{NOVNL^dc5~C z;PlffzAFJX>&IJ)zH%3v^?kD>VfB;&UA9=or9k|Rh1emLS8@C`DgyBnb3>4fg8ybN zivXPuKn<`&TE;E82X#RO=@8KXn9GZR^$=~Uv)^NXOjpm_LW z3D=)P1f~VxY=?liM&JVu%VzqJ1Bl*nKi~k@n^1z%$v(GHG=U zS{uW>h=OVh>FS>(Ipl!Em_C(VB6#HYwAMMGfdS9`mdiP|F=7aq9AFG#`_^QJFQ(gO zJ>+v^j1EAkm%az)c!U^Za#J(}nt_A9hecpygq4>7k8mByECR#0QMw%DF{^jV(cAc0g@%cv$O@h@0e%SH%6CtDULc#Fh_l;SoOz5q)$nRs#Q0H jCD6BOCH~_7o3gCmELHY;isX6400000NkvXXu0mjfPx#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_NKi=l`1n{@V1R&t5D*ZEAUOC~aKJD~ zsIah@n3&ku*Z=?k000000000004Oi?AOHXW32;bRa{vGi!vFvd!vV){sAK>D0trb( zK~zY`?Ub>O+CUJ7p`f>wMGjB_kgM#07|208%Gp(*x$DJ^DDn@(=3){G{2d$N{E05gkAgK4i@` zz}HwRM5r0k@?*L?V=B%!u^K*XA7&G8nIh$z!$fGu6 zO4my}+yCh(f1{A^4KQzShgKJ0FXd6f_vfJF$G<#aTvw#Hxb$9*N zl=b1Ty4%@j95;2hFXSLM^02Z1wAj?e`DLXHq$zur`GVJF0mYYuLo6OP25|nZFnv|# z`6WRB diff --git a/graphics/pokemon/alcremie/salted_cream/front.png b/graphics/pokemon/alcremie/salted_cream/front.png deleted file mode 100644 index 7958715bccb2e79362f5fc18edbdf8c2f3c1759d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 737 zcmV<70v`Q|P)w80006+Nkl7f4R~fBMgDF0I!8sDwi>nt(3DAe{z>-WZASrh)LrYzT2v63!qn4HjK50B!0m z903RfwSYq}2mlv#IouQEp|9sQb$&|<8IEMJ`drmtE${Eb0=W9M+}>J%&FcPzqHco4 zW_8!GI4mCuV8j>8trggQi_4gLlk#+2e=M#1!@4%lnrA4-6) z)P(90ks^!o`&9zkXz)1c1wvpMGmd~N0ZI|R>zyumVn%&FM!wX>>;Qy@`FY@ONQhFZ z)J0pO7`v#4m;`1@R<tr_34}yKCarR@QOtmQ(sfspo(moH+Zy1i z*fYA+0M4m6DG1a&G0qSQ1I>Lq&}Lo^Jb7bP1MI#0on+jv0mvX<67wc%XMJuRw(H>v z6jx-xI@S`{ZlE6dL@8#kQtnyqp!V!gGwP4N%#V_kb)#;}mPEbz%aHQl{3`zdTyXlo Th5dt^00000NkvXXu0mjfKHEFs diff --git a/graphics/pokemon/alcremie/salted_cream/shiny.pal b/graphics/pokemon/alcremie/salted_cream/shiny.pal deleted file mode 100644 index 953c50e5ee..0000000000 --- a/graphics/pokemon/alcremie/salted_cream/shiny.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -152 208 160 -72 80 72 -248 248 248 -88 88 96 -128 128 128 -16 16 16 -136 32 56 -248 88 112 -192 48 72 -168 176 176 -152 152 152 -216 216 216 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/pokemon/alcremie/star/Star_Caramel_Swirl.pal b/graphics/pokemon/alcremie/star/Star_Caramel_Swirl.pal new file mode 100644 index 0000000000..254db99d41 --- /dev/null +++ b/graphics/pokemon/alcremie/star/Star_Caramel_Swirl.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 232 184 +200 168 120 +232 168 96 +144 112 72 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +248 224 48 +200 176 24 +192 112 16 +0 0 0 diff --git a/graphics/pokemon/alcremie/star/Star_Default.pal b/graphics/pokemon/alcremie/star/Star_Default.pal new file mode 100644 index 0000000000..d99429510a --- /dev/null +++ b/graphics/pokemon/alcremie/star/Star_Default.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 224 208 +208 160 168 +240 136 144 +128 80 88 +248 224 200 +208 128 136 +248 224 200 +208 160 168 +248 224 200 +208 160 168 +248 224 48 +200 176 24 +192 112 16 +0 0 0 diff --git a/graphics/pokemon/alcremie/star/Star_Lemon_Cream.pal b/graphics/pokemon/alcremie/star/Star_Lemon_Cream.pal new file mode 100644 index 0000000000..ec776c4d90 --- /dev/null +++ b/graphics/pokemon/alcremie/star/Star_Lemon_Cream.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 248 152 +208 184 72 +232 224 0 +112 120 24 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +248 224 48 +200 176 24 +192 112 16 +0 0 0 diff --git a/graphics/pokemon/alcremie/star/Star_Matcha_Cream.pal b/graphics/pokemon/alcremie/star/Star_Matcha_Cream.pal new file mode 100644 index 0000000000..b642f11786 --- /dev/null +++ b/graphics/pokemon/alcremie/star/Star_Matcha_Cream.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +232 248 208 +176 208 152 +192 224 96 +104 128 80 +232 248 200 +176 208 152 +232 248 200 +176 208 152 +232 248 200 +176 208 152 +248 224 48 +200 176 24 +192 112 16 +0 0 0 diff --git a/graphics/pokemon/alcremie/star/Star_Mint_Cream.pal b/graphics/pokemon/alcremie/star/Star_Mint_Cream.pal new file mode 100644 index 0000000000..f4fb9991f8 --- /dev/null +++ b/graphics/pokemon/alcremie/star/Star_Mint_Cream.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +208 240 232 +152 168 176 +112 208 200 +72 112 128 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +248 224 48 +200 176 24 +192 112 16 +0 0 0 diff --git a/graphics/pokemon/alcremie/star/Star_Rainbow_Swirl.pal b/graphics/pokemon/alcremie/star/Star_Rainbow_Swirl.pal new file mode 100644 index 0000000000..a0aa5334c4 --- /dev/null +++ b/graphics/pokemon/alcremie/star/Star_Rainbow_Swirl.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 248 184 +208 192 120 +216 144 88 +120 88 64 +240 160 168 +208 128 136 +176 232 224 +128 160 168 +248 248 112 +216 192 40 +248 224 48 +200 176 24 +192 112 16 +0 0 0 diff --git a/graphics/pokemon/alcremie/star/Star_Ruby_Cream.pal b/graphics/pokemon/alcremie/star/Star_Ruby_Cream.pal new file mode 100644 index 0000000000..1f66460fb6 --- /dev/null +++ b/graphics/pokemon/alcremie/star/Star_Ruby_Cream.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 208 208 +200 152 184 +232 112 192 +128 80 112 +248 208 208 +200 152 184 +248 208 208 +200 152 184 +248 208 208 +200 152 184 +248 224 48 +200 176 24 +192 112 16 +0 0 0 diff --git a/graphics/pokemon/alcremie/star/Star_Ruby_Swirl.pal b/graphics/pokemon/alcremie/star/Star_Ruby_Swirl.pal new file mode 100644 index 0000000000..1f00d36c9c --- /dev/null +++ b/graphics/pokemon/alcremie/star/Star_Ruby_Swirl.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 240 208 +208 184 160 +240 192 128 +128 96 80 +248 176 192 +224 120 128 +248 176 192 +224 120 128 +248 176 192 +224 120 128 +248 224 48 +200 176 24 +192 112 16 +0 0 0 diff --git a/graphics/pokemon/alcremie/star/Star_Salted_Cream.pal b/graphics/pokemon/alcremie/star/Star_Salted_Cream.pal new file mode 100644 index 0000000000..2b0c72d8f6 --- /dev/null +++ b/graphics/pokemon/alcremie/star/Star_Salted_Cream.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +232 232 248 +176 176 184 +112 208 200 +88 88 96 +232 232 248 +176 176 184 +232 232 248 +176 176 184 +232 232 248 +176 176 184 +248 224 48 +200 176 24 +192 112 16 +0 0 0 diff --git a/graphics/pokemon/alcremie/star/Star_Shiny.pal b/graphics/pokemon/alcremie/star/Star_Shiny.pal new file mode 100644 index 0000000000..6fb3e1d923 --- /dev/null +++ b/graphics/pokemon/alcremie/star/Star_Shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +216 216 216 +152 152 152 +128 128 128 +88 88 96 +72 80 72 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +248 224 48 +200 176 24 +192 112 16 +16 16 16 diff --git a/graphics/pokemon/alcremie/star/back.png b/graphics/pokemon/alcremie/star/back.png new file mode 100644 index 0000000000000000000000000000000000000000..38d32ca65795f2da783dd96b2c5f0690218d76a0 GIT binary patch literal 650 zcmV;50(Jd~P){?2Qvb_9L)? zmrlsJ9RZziy%x^2B0B=UH9P`P6pef1UYVRS3NN51py&a}osh{0n3MMC;{fZYas=>~ z^H+rf%vq`jfFk_h$wNS_hA!}#W5QC}le~`w=pLYFnJ(BmvFC7)f9FyR0J4lbtE=h! zP8>335(JB#%`^aXMV~RJ&x<+R|8uLpqR{OPaM6DqES`Y9Qd@=7$vP?m3i{NiJ|Y6t zu(`Qu_Q~eC1)L*L$pf&WtfyC-FFX5;?Xnv7g&fpUU2QA?EtXY#xU5`)GG))QI~P^m zLi;Thkm=K<0V?}GF?~~a^)VH zIuBUhb{2_WTX*JndBAKnOMp(e3clndEW=>N(I-!Xd9co|a}@-^O$;2eC4Ocz;$Lqf z?2zx{SNJs>u?lYO2n@y{_#Ce58G!GH3(~*{jKOZRyW%zwD;}cW0Jfl6z-b=PC>e9Z z7|q$G?li54K!bqgP}(nOB{qa@Pj9?0MW56RRU;YVbzAq&+>l{c|8MgmUj3+5zEafRT4uzui=85n7 zDL}^p?@wDcrP#)nAs|zLl!9His%5+}hh27pd}@sC1OzwZ`@kGi2q|T13SFUTIp~`h z0$Zs{X(=F%pp14m2&k-&#PuXR{)IqZY(w^07RR`e*f4T=03NYJ8XF<=83kO_uA^N zJ8XMz*sHJ!pGR6`FU(sFXS=oK9R*5s=cS-uJN} zK((8jm}VdBA6vjB0+~DkYsz|ly?=kS&p52Ic3;RrtAS002ovPDHLkV1gjpD}(?5 literal 0 HcmV?d00001 diff --git a/graphics/pokemon/alcremie/strawberry/front.png b/graphics/pokemon/alcremie/strawberry/front.png new file mode 100644 index 0000000000000000000000000000000000000000..fe7872d2d35ab8fe130199cc718072ac92523d32 GIT binary patch literal 723 zcmV;^0xbQBP)N*>LDN{e~9F;xf{ry zgo2mNQG1$0FkX}T4`hoLdkaA}2ttJM-31TsN4$&A_4)C~&cXcOI z8}{UK{yFdO%&u?k6ga&lLxKZRjxww6Tf3ER<{+4&wQCsIga?@7X06S5IT(wTS!MBo@4JIMic7g+pZ z3h+_XDV}+D5n>kzi$6_a|6YthJqMg$B4E!E_=&^vS~$r7GQ4D#!vOXdF$EHiuQHoB z56AB;JBBH+HHC*tz4#L_!cZx0n*vBzQ#X7o$CC^&R_a*LmekC&j>0g^096clf82H% z!!|Y?0hIxilKiUOsNs!ib@>tUnK3pKkit&x1NUqxl~S20sv1qlL*K?Cuu-~_l?LKT z##wibfX@3!d~bp+HJG~4PG(Iyz;mKyPgB%WALz3Z;50pFOeq13MtV~aDEVTHSC9r! zJ}3sNem?;o^q&SLz^Lyh;)4=Ec6j3V4})RhcWd~=c7Wo6?D$2$ZPoXOo!~V;3qDOvT8fyN#NT9>W5sw*1(68CqVzxe;EegVq<`_3(xUl0HQ002ovPDHLk FV1hdrO!fc( literal 0 HcmV?d00001 diff --git a/include/constants/species.h b/include/constants/species.h index a54121f626..c83267d2f1 100644 --- a/include/constants/species.h +++ b/include/constants/species.h @@ -1388,20 +1388,20 @@ // Alcremie #define SPECIES_ALCREMIE_RUBY_CREAM SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM -#define SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM FORMS_START + 311 #define SPECIES_ALCREMIE_MATCHA_CREAM SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM -#define SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM FORMS_START + 312 #define SPECIES_ALCREMIE_MINT_CREAM SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM -#define SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM FORMS_START + 313 #define SPECIES_ALCREMIE_LEMON_CREAM SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM -#define SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM FORMS_START + 314 #define SPECIES_ALCREMIE_SALTED_CREAM SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM -#define SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM FORMS_START + 315 #define SPECIES_ALCREMIE_RUBY_SWIRL SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL -#define SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL FORMS_START + 316 #define SPECIES_ALCREMIE_CARAMEL_SWIRL SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL -#define SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL FORMS_START + 317 #define SPECIES_ALCREMIE_RAINBOW_SWIRL SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL +#define SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM FORMS_START + 311 +#define SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM FORMS_START + 312 +#define SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM FORMS_START + 313 +#define SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM FORMS_START + 314 +#define SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM FORMS_START + 315 +#define SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL FORMS_START + 316 +#define SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL FORMS_START + 317 #define SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL FORMS_START + 318 // Eiscue @@ -1435,104 +1435,103 @@ // Basculegion #define SPECIES_BASCULEGION_FEMALE FORMS_START + 329 -// Gigantamax Forms -#define SPECIES_VENUSAUR_GIGANTAMAX FORMS_START + 330 -#define SPECIES_BLASTOISE_GIGANTAMAX FORMS_START + 331 -#define SPECIES_CHARIZARD_GIGANTAMAX FORMS_START + 332 -#define SPECIES_BUTTERFREE_GIGANTAMAX FORMS_START + 333 -#define SPECIES_PIKACHU_GIGANTAMAX FORMS_START + 334 -#define SPECIES_MEOWTH_GIGANTAMAX FORMS_START + 335 -#define SPECIES_MACHAMP_GIGANTAMAX FORMS_START + 336 -#define SPECIES_GENGAR_GIGANTAMAX FORMS_START + 337 -#define SPECIES_KINGLER_GIGANTAMAX FORMS_START + 338 -#define SPECIES_LAPRAS_GIGANTAMAX FORMS_START + 339 -#define SPECIES_EEVEE_GIGANTAMAX FORMS_START + 340 -#define SPECIES_SNORLAX_GIGANTAMAX FORMS_START + 341 -#define SPECIES_GARBODOR_GIGANTAMAX FORMS_START + 342 -#define SPECIES_MELMETAL_GIGANTAMAX FORMS_START + 343 -#define SPECIES_RILLABOOM_GIGANTAMAX FORMS_START + 344 -#define SPECIES_CINDERACE_GIGANTAMAX FORMS_START + 345 -#define SPECIES_INTELEON_GIGANTAMAX FORMS_START + 346 -#define SPECIES_CORVIKNIGHT_GIGANTAMAX FORMS_START + 347 -#define SPECIES_ORBEETLE_GIGANTAMAX FORMS_START + 348 -#define SPECIES_DREDNAW_GIGANTAMAX FORMS_START + 349 -#define SPECIES_COALOSSAL_GIGANTAMAX FORMS_START + 350 -#define SPECIES_FLAPPLE_GIGANTAMAX FORMS_START + 351 -#define SPECIES_APPLETUN_GIGANTAMAX FORMS_START + 352 -#define SPECIES_SANDACONDA_GIGANTAMAX FORMS_START + 353 -#define SPECIES_TOXTRICITY_AMPED_GIGANTAMAX FORMS_START + 354 -#define SPECIES_TOXTRICITY_LOW_KEY_GIGANTAMAX FORMS_START + 355 -#define SPECIES_CENTISKORCH_GIGANTAMAX FORMS_START + 356 -#define SPECIES_HATTERENE_GIGANTAMAX FORMS_START + 357 -#define SPECIES_GRIMMSNARL_GIGANTAMAX FORMS_START + 358 -#define SPECIES_ALCREMIE_GIGANTAMAX FORMS_START + 359 -#define SPECIES_COPPERAJAH_GIGANTAMAX FORMS_START + 360 -#define SPECIES_DURALUDON_GIGANTAMAX FORMS_START + 361 -#define SPECIES_URSHIFU_SINGLE_STRIKE_STYLE_GIGANTAMAX FORMS_START + 362 -#define SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX FORMS_START + 363 +// More Alcremie +#define SPECIES_ALCREMIE_BERRY SPECIES_ALCREMIE_BERRY_VANILLA_CREAM +#define SPECIES_ALCREMIE_BERRY_VANILLA_CREAM FORMS_START + 330 +#define SPECIES_ALCREMIE_BERRY_RUBY_CREAM FORMS_START + 331 +#define SPECIES_ALCREMIE_BERRY_MATCHA_CREAM FORMS_START + 332 +#define SPECIES_ALCREMIE_BERRY_MINT_CREAM FORMS_START + 333 +#define SPECIES_ALCREMIE_BERRY_LEMON_CREAM FORMS_START + 334 +#define SPECIES_ALCREMIE_BERRY_SALTED_CREAM FORMS_START + 335 +#define SPECIES_ALCREMIE_BERRY_RUBY_SWIRL FORMS_START + 336 +#define SPECIES_ALCREMIE_BERRY_CARAMEL_SWIRL FORMS_START + 337 +#define SPECIES_ALCREMIE_BERRY_RAINBOW_SWIRL FORMS_START + 338 +#define SPECIES_ALCREMIE_LOVE SPECIES_ALCREMIE_LOVE_VANILLA_CREAM +#define SPECIES_ALCREMIE_LOVE_VANILLA_CREAM FORMS_START + 339 +#define SPECIES_ALCREMIE_LOVE_RUBY_CREAM FORMS_START + 340 +#define SPECIES_ALCREMIE_LOVE_MATCHA_CREAM FORMS_START + 341 +#define SPECIES_ALCREMIE_LOVE_MINT_CREAM FORMS_START + 342 +#define SPECIES_ALCREMIE_LOVE_LEMON_CREAM FORMS_START + 343 +#define SPECIES_ALCREMIE_LOVE_SALTED_CREAM FORMS_START + 344 +#define SPECIES_ALCREMIE_LOVE_RUBY_SWIRL FORMS_START + 345 +#define SPECIES_ALCREMIE_LOVE_CARAMEL_SWIRL FORMS_START + 346 +#define SPECIES_ALCREMIE_LOVE_RAINBOW_SWIRL FORMS_START + 347 +#define SPECIES_ALCREMIE_STAR SPECIES_ALCREMIE_STAR_VANILLA_CREAM +#define SPECIES_ALCREMIE_STAR_VANILLA_CREAM FORMS_START + 348 +#define SPECIES_ALCREMIE_STAR_RUBY_CREAM FORMS_START + 349 +#define SPECIES_ALCREMIE_STAR_MATCHA_CREAM FORMS_START + 350 +#define SPECIES_ALCREMIE_STAR_MINT_CREAM FORMS_START + 351 +#define SPECIES_ALCREMIE_STAR_LEMON_CREAM FORMS_START + 352 +#define SPECIES_ALCREMIE_STAR_SALTED_CREAM FORMS_START + 353 +#define SPECIES_ALCREMIE_STAR_RUBY_SWIRL FORMS_START + 354 +#define SPECIES_ALCREMIE_STAR_CARAMEL_SWIRL FORMS_START + 355 +#define SPECIES_ALCREMIE_STAR_RAINBOW_SWIRL FORMS_START + 356 +#define SPECIES_ALCREMIE_CLOVER SPECIES_ALCREMIE_CLOVER_VANILLA_CREAM +#define SPECIES_ALCREMIE_CLOVER_VANILLA_CREAM FORMS_START + 357 +#define SPECIES_ALCREMIE_CLOVER_RUBY_CREAM FORMS_START + 358 +#define SPECIES_ALCREMIE_CLOVER_MATCHA_CREAM FORMS_START + 359 +#define SPECIES_ALCREMIE_CLOVER_MINT_CREAM FORMS_START + 360 +#define SPECIES_ALCREMIE_CLOVER_LEMON_CREAM FORMS_START + 361 +#define SPECIES_ALCREMIE_CLOVER_SALTED_CREAM FORMS_START + 362 +#define SPECIES_ALCREMIE_CLOVER_RUBY_SWIRL FORMS_START + 363 +#define SPECIES_ALCREMIE_CLOVER_CARAMEL_SWIRL FORMS_START + 364 +#define SPECIES_ALCREMIE_CLOVER_RAINBOW_SWIRL FORMS_START + 365 +#define SPECIES_ALCREMIE_FLOWER SPECIES_ALCREMIE_FLOWER_VANILLA_CREAM +#define SPECIES_ALCREMIE_FLOWER_VANILLA_CREAM FORMS_START + 366 +#define SPECIES_ALCREMIE_FLOWER_RUBY_CREAM FORMS_START + 367 +#define SPECIES_ALCREMIE_FLOWER_MATCHA_CREAM FORMS_START + 368 +#define SPECIES_ALCREMIE_FLOWER_MINT_CREAM FORMS_START + 369 +#define SPECIES_ALCREMIE_FLOWER_LEMON_CREAM FORMS_START + 370 +#define SPECIES_ALCREMIE_FLOWER_SALTED_CREAM FORMS_START + 371 +#define SPECIES_ALCREMIE_FLOWER_RUBY_SWIRL FORMS_START + 372 +#define SPECIES_ALCREMIE_FLOWER_CARAMEL_SWIRL FORMS_START + 373 +#define SPECIES_ALCREMIE_FLOWER_RAINBOW_SWIRL FORMS_START + 374 +#define SPECIES_ALCREMIE_RIBBON SPECIES_ALCREMIE_RIBBON_VANILLA_CREAM +#define SPECIES_ALCREMIE_RIBBON_VANILLA_CREAM FORMS_START + 375 +#define SPECIES_ALCREMIE_RIBBON_RUBY_CREAM FORMS_START + 376 +#define SPECIES_ALCREMIE_RIBBON_MATCHA_CREAM FORMS_START + 377 +#define SPECIES_ALCREMIE_RIBBON_MINT_CREAM FORMS_START + 378 +#define SPECIES_ALCREMIE_RIBBON_LEMON_CREAM FORMS_START + 379 +#define SPECIES_ALCREMIE_RIBBON_SALTED_CREAM FORMS_START + 380 +#define SPECIES_ALCREMIE_RIBBON_RUBY_SWIRL FORMS_START + 381 +#define SPECIES_ALCREMIE_RIBBON_CARAMEL_SWIRL FORMS_START + 382 +#define SPECIES_ALCREMIE_RIBBON_RAINBOW_SWIRL FORMS_START + 383 -/* -#define SPECIES_ALCREMIE_BERRY SPECIES_ALCREMIE_BERRY_VANILLA_CREAM -#define SPECIES_ALCREMIE_BERRY_VANILLA_CREAM FORMS_START + 363 // Todo -#define SPECIES_ALCREMIE_BERRY_RUBY_CREAM FORMS_START + 364 // Todo -#define SPECIES_ALCREMIE_BERRY_MATCHA_CREAM FORMS_START + 365 // Todo -#define SPECIES_ALCREMIE_BERRY_MINT_CREAM FORMS_START + 366 // Todo -#define SPECIES_ALCREMIE_BERRY_LEMON_CREAM FORMS_START + 367 // Todo -#define SPECIES_ALCREMIE_BERRY_SALTED_CREAM FORMS_START + 368 // Todo -#define SPECIES_ALCREMIE_BERRY_RUBY_SWIRL FORMS_START + 369 // Todo -#define SPECIES_ALCREMIE_BERRY_CARAMEL_SWIRL FORMS_START + 370 // Todo -#define SPECIES_ALCREMIE_BERRY_RAINBOW_SWIRL FORMS_START + 371 // Todo -#define SPECIES_ALCREMIE_LOVE SPECIES_ALCREMIE_LOVE_VANILLA_CREAM -#define SPECIES_ALCREMIE_LOVE_VANILLA_CREAM FORMS_START + 372 // Todo -#define SPECIES_ALCREMIE_LOVE_RUBY_CREAM FORMS_START + 373 // Todo -#define SPECIES_ALCREMIE_LOVE_MATCHA_CREAM FORMS_START + 374 // Todo -#define SPECIES_ALCREMIE_LOVE_MINT_CREAM FORMS_START + 375 // Todo -#define SPECIES_ALCREMIE_LOVE_LEMON_CREAM FORMS_START + 376 // Todo -#define SPECIES_ALCREMIE_LOVE_SALTED_CREAM FORMS_START + 377 // Todo -#define SPECIES_ALCREMIE_LOVE_RUBY_SWIRL FORMS_START + 378 // Todo -#define SPECIES_ALCREMIE_LOVE_CARAMEL_SWIRL FORMS_START + 379 // Todo -#define SPECIES_ALCREMIE_LOVE_RAINBOW_SWIRL FORMS_START + 380 // Todo -#define SPECIES_ALCREMIE_STAR SPECIES_ALCREMIE_STAR_VANILLA_CREAM -#define SPECIES_ALCREMIE_STAR_VANILLA_CREAM FORMS_START + 381 // Todo -#define SPECIES_ALCREMIE_STAR_RUBY_CREAM FORMS_START + 382 // Todo -#define SPECIES_ALCREMIE_STAR_MATCHA_CREAM FORMS_START + 383 // Todo -#define SPECIES_ALCREMIE_STAR_MINT_CREAM FORMS_START + 384 // Todo -#define SPECIES_ALCREMIE_STAR_LEMON_CREAM FORMS_START + 385 // Todo -#define SPECIES_ALCREMIE_STAR_SALTED_CREAM FORMS_START + 386 // Todo -#define SPECIES_ALCREMIE_STAR_RUBY_SWIRL FORMS_START + 387 // Todo -#define SPECIES_ALCREMIE_STAR_CARAMEL_SWIRL FORMS_START + 388 // Todo -#define SPECIES_ALCREMIE_STAR_RAINBOW_SWIRL FORMS_START + 389 // Todo -#define SPECIES_ALCREMIE_CLOVER SPECIES_ALCREMIE_CLOVER_VANILLA_CREAM -#define SPECIES_ALCREMIE_CLOVER_VANILLA_CREAM FORMS_START + 390 // Todo -#define SPECIES_ALCREMIE_CLOVER_RUBY_CREAM FORMS_START + 391 // Todo -#define SPECIES_ALCREMIE_CLOVER_MATCHA_CREAM FORMS_START + 392 // Todo -#define SPECIES_ALCREMIE_CLOVER_MINT_CREAM FORMS_START + 393 // Todo -#define SPECIES_ALCREMIE_CLOVER_LEMON_CREAM FORMS_START + 394 // Todo -#define SPECIES_ALCREMIE_CLOVER_SALTED_CREAM FORMS_START + 395 // Todo -#define SPECIES_ALCREMIE_CLOVER_RUBY_SWIRL FORMS_START + 396 // Todo -#define SPECIES_ALCREMIE_CLOVER_CARAMEL_SWIRL FORMS_START + 397 // Todo -#define SPECIES_ALCREMIE_CLOVER_RAINBOW_SWIRL FORMS_START + 398 // Todo -#define SPECIES_ALCREMIE_FLOWER SPECIES_ALCREMIE_FLOWER_VANILLA_CREAM -#define SPECIES_ALCREMIE_FLOWER_VANILLA_CREAM FORMS_START + 399 // Todo -#define SPECIES_ALCREMIE_FLOWER_RUBY_CREAM FORMS_START + 400 // Todo -#define SPECIES_ALCREMIE_FLOWER_MATCHA_CREAM FORMS_START + 401 // Todo -#define SPECIES_ALCREMIE_FLOWER_MINT_CREAM FORMS_START + 402 // Todo -#define SPECIES_ALCREMIE_FLOWER_LEMON_CREAM FORMS_START + 403 // Todo -#define SPECIES_ALCREMIE_FLOWER_SALTED_CREAM FORMS_START + 404 // Todo -#define SPECIES_ALCREMIE_FLOWER_RUBY_SWIRL FORMS_START + 405 // Todo -#define SPECIES_ALCREMIE_FLOWER_CARAMEL_SWIRL FORMS_START + 406 // Todo -#define SPECIES_ALCREMIE_FLOWER_RAINBOW_SWIRL FORMS_START + 407 // Todo -#define SPECIES_ALCREMIE_RIBBON SPECIES_ALCREMIE_RIBBON_VANILLA_CREAM -#define SPECIES_ALCREMIE_RIBBON_VANILLA_CREAM FORMS_START + 408 // Todo -#define SPECIES_ALCREMIE_RIBBON_RUBY_CREAM FORMS_START + 409 // Todo -#define SPECIES_ALCREMIE_RIBBON_MATCHA_CREAM FORMS_START + 410 // Todo -#define SPECIES_ALCREMIE_RIBBON_MINT_CREAM FORMS_START + 411 // Todo -#define SPECIES_ALCREMIE_RIBBON_LEMON_CREAM FORMS_START + 412 // Todo -#define SPECIES_ALCREMIE_RIBBON_SALTED_CREAM FORMS_START + 413 // Todo -#define SPECIES_ALCREMIE_RIBBON_RUBY_SWIRL FORMS_START + 414 // Todo -#define SPECIES_ALCREMIE_RIBBON_CARAMEL_SWIRL FORMS_START + 415 // Todo -#define SPECIES_ALCREMIE_RIBBON_RAINBOW_SWIRL FORMS_START + 416 // Todo -*/ +// Gigantamax Forms +#define SPECIES_VENUSAUR_GIGANTAMAX FORMS_START + 384 +#define SPECIES_BLASTOISE_GIGANTAMAX FORMS_START + 385 +#define SPECIES_CHARIZARD_GIGANTAMAX FORMS_START + 386 +#define SPECIES_BUTTERFREE_GIGANTAMAX FORMS_START + 387 +#define SPECIES_PIKACHU_GIGANTAMAX FORMS_START + 388 +#define SPECIES_MEOWTH_GIGANTAMAX FORMS_START + 389 +#define SPECIES_MACHAMP_GIGANTAMAX FORMS_START + 390 +#define SPECIES_GENGAR_GIGANTAMAX FORMS_START + 391 +#define SPECIES_KINGLER_GIGANTAMAX FORMS_START + 392 +#define SPECIES_LAPRAS_GIGANTAMAX FORMS_START + 393 +#define SPECIES_EEVEE_GIGANTAMAX FORMS_START + 394 +#define SPECIES_SNORLAX_GIGANTAMAX FORMS_START + 395 +#define SPECIES_GARBODOR_GIGANTAMAX FORMS_START + 396 +#define SPECIES_MELMETAL_GIGANTAMAX FORMS_START + 397 +#define SPECIES_RILLABOOM_GIGANTAMAX FORMS_START + 398 +#define SPECIES_CINDERACE_GIGANTAMAX FORMS_START + 399 +#define SPECIES_INTELEON_GIGANTAMAX FORMS_START + 400 +#define SPECIES_CORVIKNIGHT_GIGANTAMAX FORMS_START + 401 +#define SPECIES_ORBEETLE_GIGANTAMAX FORMS_START + 402 +#define SPECIES_DREDNAW_GIGANTAMAX FORMS_START + 403 +#define SPECIES_COALOSSAL_GIGANTAMAX FORMS_START + 404 +#define SPECIES_FLAPPLE_GIGANTAMAX FORMS_START + 405 +#define SPECIES_APPLETUN_GIGANTAMAX FORMS_START + 406 +#define SPECIES_SANDACONDA_GIGANTAMAX FORMS_START + 407 +#define SPECIES_TOXTRICITY_AMPED_GIGANTAMAX FORMS_START + 408 +#define SPECIES_TOXTRICITY_LOW_KEY_GIGANTAMAX FORMS_START + 409 +#define SPECIES_CENTISKORCH_GIGANTAMAX FORMS_START + 410 +#define SPECIES_HATTERENE_GIGANTAMAX FORMS_START + 411 +#define SPECIES_GRIMMSNARL_GIGANTAMAX FORMS_START + 412 +#define SPECIES_ALCREMIE_GIGANTAMAX FORMS_START + 413 +#define SPECIES_COPPERAJAH_GIGANTAMAX FORMS_START + 414 +#define SPECIES_DURALUDON_GIGANTAMAX FORMS_START + 415 +#define SPECIES_URSHIFU_SINGLE_STRIKE_STYLE_GIGANTAMAX FORMS_START + 416 +#define SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX FORMS_START + 417 #define FORMS_START SPECIES_ENAMORUS #define SPECIES_EGG SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX + 1 diff --git a/include/graphics.h b/include/graphics.h index 1dc34717cb..d189abce0f 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -1338,14 +1338,6 @@ extern const u32 gMonFrontPic_MagearnaOriginalColor[]; extern const u32 gMonFrontPic_CramorantGulping[]; extern const u32 gMonFrontPic_CramorantGorging[]; extern const u32 gMonFrontPic_ToxtricityLowKey[]; -extern const u32 gMonFrontPic_AlcremieRubyCream[]; -extern const u32 gMonFrontPic_AlcremieMatchaCream[]; -extern const u32 gMonFrontPic_AlcremieMintCream[]; -extern const u32 gMonFrontPic_AlcremieLemonCream[]; -extern const u32 gMonFrontPic_AlcremieSaltedCream[]; -extern const u32 gMonFrontPic_AlcremieRubySwirl[]; -extern const u32 gMonFrontPic_AlcremieCaramelSwirl[]; -extern const u32 gMonFrontPic_AlcremieRainbowSwirl[]; extern const u32 gMonFrontPic_EiscueNoiceFace[]; extern const u32 gMonFrontPic_IndeedeeFemale[]; extern const u32 gMonFrontPic_MorpekoHangry[]; @@ -2623,14 +2615,6 @@ extern const u32 gMonBackPic_MagearnaOriginalColor[]; extern const u32 gMonBackPic_CramorantGulping[]; extern const u32 gMonBackPic_CramorantGorging[]; extern const u32 gMonBackPic_ToxtricityLowKey[]; -extern const u32 gMonBackPic_AlcremieRubyCream[]; -extern const u32 gMonBackPic_AlcremieMatchaCream[]; -extern const u32 gMonBackPic_AlcremieMintCream[]; -extern const u32 gMonBackPic_AlcremieLemonCream[]; -extern const u32 gMonBackPic_AlcremieSaltedCream[]; -extern const u32 gMonBackPic_AlcremieRubySwirl[]; -extern const u32 gMonBackPic_AlcremieCaramelSwirl[]; -extern const u32 gMonBackPic_AlcremieRainbowSwirl[]; extern const u32 gMonBackPic_EiscueNoiceFace[]; extern const u32 gMonBackPic_IndeedeeFemale[]; extern const u32 gMonBackPic_MorpekoHangry[]; @@ -3888,14 +3872,6 @@ extern const u32 gMonPalette_MagearnaOriginalColor[]; extern const u32 gMonPalette_CramorantGulping[]; extern const u32 gMonPalette_CramorantGorging[]; extern const u32 gMonPalette_ToxtricityLowKey[]; -extern const u32 gMonPalette_AlcremieRubyCream[]; -extern const u32 gMonPalette_AlcremieMatchaCream[]; -extern const u32 gMonPalette_AlcremieMintCream[]; -extern const u32 gMonPalette_AlcremieLemonCream[]; -extern const u32 gMonPalette_AlcremieSaltedCream[]; -extern const u32 gMonPalette_AlcremieRubySwirl[]; -extern const u32 gMonPalette_AlcremieCaramelSwirl[]; -extern const u32 gMonPalette_AlcremieRainbowSwirl[]; extern const u32 gMonPalette_EiscueNoiceFace[]; extern const u32 gMonPalette_IndeedeeFemale[]; extern const u32 gMonPalette_MorpekoHangry[]; @@ -5148,14 +5124,6 @@ extern const u32 gMonShinyPalette_MagearnaOriginalColor[]; extern const u32 gMonShinyPalette_CramorantGulping[]; extern const u32 gMonShinyPalette_CramorantGorging[]; extern const u32 gMonShinyPalette_ToxtricityLowKey[]; -extern const u32 gMonShinyPalette_AlcremieRubyCream[]; -extern const u32 gMonShinyPalette_AlcremieMatchaCream[]; -extern const u32 gMonShinyPalette_AlcremieMintCream[]; -extern const u32 gMonShinyPalette_AlcremieLemonCream[]; -extern const u32 gMonShinyPalette_AlcremieSaltedCream[]; -extern const u32 gMonShinyPalette_AlcremieRubySwirl[]; -extern const u32 gMonShinyPalette_AlcremieCaramelSwirl[]; -extern const u32 gMonShinyPalette_AlcremieRainbowSwirl[]; extern const u32 gMonShinyPalette_EiscueNoiceFace[]; extern const u32 gMonShinyPalette_IndeedeeFemale[]; extern const u32 gMonShinyPalette_MorpekoHangry[]; @@ -6089,7 +6057,15 @@ extern const u8 gMonIcon_Sirfetchd[]; extern const u8 gMonIcon_MrRime[]; extern const u8 gMonIcon_Runerigus[]; extern const u8 gMonIcon_Milcery[]; -extern const u8 gMonIcon_Alcremie[]; +extern const u8 gMonIcon_AlcremieStrawberryVanillaCream[]; +//extern const u8 gMonIcon_AlcremieStrawberryRubyCream[]; +//extern const u8 gMonIcon_AlcremieStrawberryMatchaCream[]; +//extern const u8 gMonIcon_AlcremieStrawberryMintCream[]; +//extern const u8 gMonIcon_AlcremieStrawberryLemonCream[]; +//extern const u8 gMonIcon_AlcremieStrawberrySaltedCream[]; +//extern const u8 gMonIcon_AlcremieStrawberryRubySwirl[]; +//extern const u8 gMonIcon_AlcremieStrawberryCaramelSwirl[]; +//extern const u8 gMonIcon_AlcremieStrawberryRainbowSwirl[]; extern const u8 gMonIcon_Falinks[]; extern const u8 gMonIcon_Pincurchin[]; extern const u8 gMonIcon_Snom[]; @@ -6403,14 +6379,6 @@ extern const u8 gMonIcon_MagearnaOriginalColor[]; extern const u8 gMonIcon_CramorantGulping[]; extern const u8 gMonIcon_CramorantGorging[]; extern const u8 gMonIcon_ToxtricityLowKey[]; -//extern const u8 gMonIcon_AlcremieStrawberryRubyCream[]; -//extern const u8 gMonIcon_AlcremieStrawberryMatchaCream[]; -//extern const u8 gMonIcon_AlcremieStrawberryMintCream[]; -//extern const u8 gMonIcon_AlcremieStrawberryLemonCream[]; -//extern const u8 gMonIcon_AlcremieStrawberrySaltedCream[]; -//extern const u8 gMonIcon_AlcremieStrawberryRubySwirl[]; -//extern const u8 gMonIcon_AlcremieStrawberryCaramelSwirl[]; -//extern const u8 gMonIcon_AlcremieStrawberryRainbowSwirl[]; extern const u8 gMonIcon_EiscueNoiceFace[]; extern const u8 gMonIcon_IndeedeeFemale[]; extern const u8 gMonIcon_MorpekoHangry[]; @@ -7336,7 +7304,97 @@ extern const u8 gMonFootprint_Sirfetchd[]; extern const u8 gMonFootprint_Mr_Rime[]; extern const u8 gMonFootprint_Runerigus[]; extern const u8 gMonFootprint_Milcery[]; +extern const u32 gMonFrontPic_AlcremieStrawberry[]; +extern const u32 gMonPalette_AlcremieStrawberryVanillaCream[]; +extern const u32 gMonPalette_AlcremieStrawberryRubyCream[]; +extern const u32 gMonPalette_AlcremieStrawberryMatchaCream[]; +extern const u32 gMonPalette_AlcremieStrawberryMintCream[]; +extern const u32 gMonPalette_AlcremieStrawberryLemonCream[]; +extern const u32 gMonPalette_AlcremieStrawberrySaltedCream[]; +extern const u32 gMonPalette_AlcremieStrawberryRubySwirl[]; +extern const u32 gMonPalette_AlcremieStrawberryCaramelSwirl[]; +extern const u32 gMonPalette_AlcremieStrawberryRainbowSwirl[]; +extern const u32 gMonBackPic_AlcremieStrawberry[]; +extern const u32 gMonShinyPalette_AlcremieStrawberry[]; extern const u8 gMonFootprint_Alcremie[]; +extern const u32 gMonFrontPic_AlcremieBerry[]; +extern const u32 gMonPalette_AlcremieBerryVanillaCream[]; +extern const u32 gMonPalette_AlcremieBerryRubyCream[]; +extern const u32 gMonPalette_AlcremieBerryMatchaCream[]; +extern const u32 gMonPalette_AlcremieBerryMintCream[]; +extern const u32 gMonPalette_AlcremieBerryLemonCream[]; +extern const u32 gMonPalette_AlcremieBerrySaltedCream[]; +extern const u32 gMonPalette_AlcremieBerryRubySwirl[]; +extern const u32 gMonPalette_AlcremieBerryCaramelSwirl[]; +extern const u32 gMonPalette_AlcremieBerryRainbowSwirl[]; +extern const u32 gMonBackPic_AlcremieBerry[]; +extern const u32 gMonShinyPalette_AlcremieBerry[]; +//extern const u8 gMonIcon_AlcremieBerry[]; +extern const u32 gMonFrontPic_AlcremieLove[]; +extern const u32 gMonPalette_AlcremieLoveVanillaCream[]; +extern const u32 gMonPalette_AlcremieLoveRubyCream[]; +extern const u32 gMonPalette_AlcremieLoveMatchaCream[]; +extern const u32 gMonPalette_AlcremieLoveMintCream[]; +extern const u32 gMonPalette_AlcremieLoveLemonCream[]; +extern const u32 gMonPalette_AlcremieLoveSaltedCream[]; +extern const u32 gMonPalette_AlcremieLoveRubySwirl[]; +extern const u32 gMonPalette_AlcremieLoveCaramelSwirl[]; +extern const u32 gMonPalette_AlcremieLoveRainbowSwirl[]; +extern const u32 gMonBackPic_AlcremieLove[]; +extern const u32 gMonShinyPalette_AlcremieLove[]; +//extern const u8 gMonIcon_AlcremieLove[]; +extern const u32 gMonFrontPic_AlcremieStar[]; +extern const u32 gMonPalette_AlcremieStarVanillaCream[]; +extern const u32 gMonPalette_AlcremieStarRubyCream[]; +extern const u32 gMonPalette_AlcremieStarMatchaCream[]; +extern const u32 gMonPalette_AlcremieStarMintCream[]; +extern const u32 gMonPalette_AlcremieStarLemonCream[]; +extern const u32 gMonPalette_AlcremieStarSaltedCream[]; +extern const u32 gMonPalette_AlcremieStarRubySwirl[]; +extern const u32 gMonPalette_AlcremieStarCaramelSwirl[]; +extern const u32 gMonPalette_AlcremieStarRainbowSwirl[]; +extern const u32 gMonBackPic_AlcremieStar[]; +extern const u32 gMonShinyPalette_AlcremieStar[]; +//extern const u8 gMonIcon_AlcremieStar[]; +extern const u32 gMonFrontPic_AlcremieClover[]; +extern const u32 gMonPalette_AlcremieCloverVanillaCream[]; +extern const u32 gMonPalette_AlcremieCloverRubyCream[]; +extern const u32 gMonPalette_AlcremieCloverMatchaCream[]; +extern const u32 gMonPalette_AlcremieCloverMintCream[]; +extern const u32 gMonPalette_AlcremieCloverLemonCream[]; +extern const u32 gMonPalette_AlcremieCloverSaltedCream[]; +extern const u32 gMonPalette_AlcremieCloverRubySwirl[]; +extern const u32 gMonPalette_AlcremieCloverCaramelSwirl[]; +extern const u32 gMonPalette_AlcremieCloverRainbowSwirl[]; +extern const u32 gMonBackPic_AlcremieClover[]; +extern const u32 gMonShinyPalette_AlcremieClover[]; +//extern const u8 gMonIcon_AlcremieClover[]; +extern const u32 gMonFrontPic_AlcremieFlower[]; +extern const u32 gMonPalette_AlcremieFlowerVanillaCream[]; +extern const u32 gMonPalette_AlcremieFlowerRubyCream[]; +extern const u32 gMonPalette_AlcremieFlowerMatchaCream[]; +extern const u32 gMonPalette_AlcremieFlowerMintCream[]; +extern const u32 gMonPalette_AlcremieFlowerLemonCream[]; +extern const u32 gMonPalette_AlcremieFlowerSaltedCream[]; +extern const u32 gMonPalette_AlcremieFlowerRubySwirl[]; +extern const u32 gMonPalette_AlcremieFlowerCaramelSwirl[]; +extern const u32 gMonPalette_AlcremieFlowerRainbowSwirl[]; +extern const u32 gMonBackPic_AlcremieFlower[]; +extern const u32 gMonShinyPalette_AlcremieFlower[]; +//extern const u8 gMonIcon_AlcremieFlower[]; +extern const u32 gMonFrontPic_AlcremieRibbon[]; +extern const u32 gMonPalette_AlcremieRibbonVanillaCream[]; +extern const u32 gMonPalette_AlcremieRibbonRubyCream[]; +extern const u32 gMonPalette_AlcremieRibbonMatchaCream[]; +extern const u32 gMonPalette_AlcremieRibbonMintCream[]; +extern const u32 gMonPalette_AlcremieRibbonLemonCream[]; +extern const u32 gMonPalette_AlcremieRibbonSaltedCream[]; +extern const u32 gMonPalette_AlcremieRibbonRubySwirl[]; +extern const u32 gMonPalette_AlcremieRibbonCaramelSwirl[]; +extern const u32 gMonPalette_AlcremieRibbonRainbowSwirl[]; +extern const u32 gMonBackPic_AlcremieRibbon[]; +extern const u32 gMonShinyPalette_AlcremieRibbon[]; +//extern const u8 gMonIcon_AlcremieRibbon[]; extern const u8 gMonFootprint_Falinks[]; extern const u8 gMonFootprint_Pincurchin[]; extern const u8 gMonFootprint_Snom[]; diff --git a/sound/cry_tables.inc b/sound/cry_tables.inc index 85cc9b9b29..ce7af98843 100644 --- a/sound/cry_tables.inc +++ b/sound/cry_tables.inc @@ -2082,6 +2082,61 @@ gCryTable:: cry Cry_CalyrexShadowRider @ Basculegion cry Cry_Basculegion + @ Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie .else @ Cramorant cry Cry_Unown @@ -2101,6 +2156,7 @@ gCryTable:: cry Cry_Unown cry Cry_Unown cry Cry_Unown + cry Cry_Unown @ Eiscue cry Cry_Unown @ Indeedee @@ -2122,6 +2178,61 @@ gCryTable:: cry Cry_Unown @ Basculegion cry Cry_Unown + @ Alcremie + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown .endif @ Gigantamax Forms cry Cry_Venusaur @@ -4233,6 +4344,61 @@ gCryTable_Reverse:: cry_reverse Cry_CalyrexShadowRider @ Basculegion cry_reverse Cry_Basculegion + @ Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie .else cry_reverse Cry_Unown cry_reverse Cry_Unown @@ -4258,6 +4424,60 @@ gCryTable_Reverse:: cry_reverse Cry_Unown cry_reverse Cry_Unown cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown .endif @ Gigantamax Forms cry_reverse Cry_Venusaur diff --git a/src/data/graphics/pokemon.h b/src/data/graphics/pokemon.h index b1f4cdf77c..0e12a0509c 100644 --- a/src/data/graphics/pokemon.h +++ b/src/data/graphics/pokemon.h @@ -1269,14 +1269,6 @@ const u32 gMonFrontPic_MagearnaOriginalColor[] = INCBIN_U32("graphics/pokemon/ma const u32 gMonFrontPic_CramorantGulping[] = INCBIN_U32("graphics/pokemon/cramorant/gulping/front.4bpp.lz"); const u32 gMonFrontPic_CramorantGorging[] = INCBIN_U32("graphics/pokemon/cramorant/gorging/front.4bpp.lz"); const u32 gMonFrontPic_ToxtricityLowKey[] = INCBIN_U32("graphics/pokemon/toxtricity/low_key/front.4bpp.lz"); -const u32 gMonFrontPic_AlcremieRubyCream[] = INCBIN_U32("graphics/pokemon/alcremie/ruby_cream/front.4bpp.lz"); -const u32 gMonFrontPic_AlcremieMatchaCream[] = INCBIN_U32("graphics/pokemon/alcremie/matcha_cream/front.4bpp.lz"); -const u32 gMonFrontPic_AlcremieMintCream[] = INCBIN_U32("graphics/pokemon/alcremie/mint_cream/front.4bpp.lz"); -const u32 gMonFrontPic_AlcremieLemonCream[] = INCBIN_U32("graphics/pokemon/alcremie/lemon_cream/front.4bpp.lz"); -const u32 gMonFrontPic_AlcremieSaltedCream[] = INCBIN_U32("graphics/pokemon/alcremie/salted_cream/front.4bpp.lz"); -const u32 gMonFrontPic_AlcremieRubySwirl[] = INCBIN_U32("graphics/pokemon/alcremie/ruby_swirl/front.4bpp.lz"); -const u32 gMonFrontPic_AlcremieCaramelSwirl[] = INCBIN_U32("graphics/pokemon/alcremie/caramel_swirl/front.4bpp.lz"); -const u32 gMonFrontPic_AlcremieRainbowSwirl[] = INCBIN_U32("graphics/pokemon/alcremie/rainbow_swirl/front.4bpp.lz"); const u32 gMonFrontPic_EiscueNoiceFace[] = INCBIN_U32("graphics/pokemon/eiscue/noice_face/front.4bpp.lz"); const u32 gMonFrontPic_IndeedeeFemale[] = INCBIN_U32("graphics/pokemon/indeedee/female/front.4bpp.lz"); const u32 gMonFrontPic_MorpekoHangry[] = INCBIN_U32("graphics/pokemon/morpeko/hangry/front.4bpp.lz"); @@ -2587,14 +2579,6 @@ const u32 gMonBackPic_MagearnaOriginalColor[] = INCBIN_U32("graphics/pokemon/mag const u32 gMonBackPic_CramorantGulping[] = INCBIN_U32("graphics/pokemon/cramorant/gulping/back.4bpp.lz"); const u32 gMonBackPic_CramorantGorging[] = INCBIN_U32("graphics/pokemon/cramorant/gorging/back.4bpp.lz"); const u32 gMonBackPic_ToxtricityLowKey[] = INCBIN_U32("graphics/pokemon/toxtricity/low_key/back.4bpp.lz"); -const u32 gMonBackPic_AlcremieRubyCream[] = INCBIN_U32("graphics/pokemon/alcremie/ruby_cream/back.4bpp.lz"); -const u32 gMonBackPic_AlcremieMatchaCream[] = INCBIN_U32("graphics/pokemon/alcremie/matcha_cream/back.4bpp.lz"); -const u32 gMonBackPic_AlcremieMintCream[] = INCBIN_U32("graphics/pokemon/alcremie/mint_cream/back.4bpp.lz"); -const u32 gMonBackPic_AlcremieLemonCream[] = INCBIN_U32("graphics/pokemon/alcremie/lemon_cream/back.4bpp.lz"); -const u32 gMonBackPic_AlcremieSaltedCream[] = INCBIN_U32("graphics/pokemon/alcremie/salted_cream/back.4bpp.lz"); -const u32 gMonBackPic_AlcremieRubySwirl[] = INCBIN_U32("graphics/pokemon/alcremie/ruby_swirl/back.4bpp.lz"); -const u32 gMonBackPic_AlcremieCaramelSwirl[] = INCBIN_U32("graphics/pokemon/alcremie/caramel_swirl/back.4bpp.lz"); -const u32 gMonBackPic_AlcremieRainbowSwirl[] = INCBIN_U32("graphics/pokemon/alcremie/rainbow_swirl/back.4bpp.lz"); const u32 gMonBackPic_EiscueNoiceFace[] = INCBIN_U32("graphics/pokemon/eiscue/noice_face/back.4bpp.lz"); const u32 gMonBackPic_IndeedeeFemale[] = INCBIN_U32("graphics/pokemon/indeedee/female/back.4bpp.lz"); const u32 gMonBackPic_MorpekoHangry[] = INCBIN_U32("graphics/pokemon/morpeko/hangry/back.4bpp.lz"); @@ -3852,14 +3836,6 @@ const u32 gMonPalette_MagearnaOriginalColor[] = INCBIN_U32("graphics/pokemon/mag const u32 gMonPalette_CramorantGulping[] = INCBIN_U32("graphics/pokemon/cramorant/gulping/normal.gbapal.lz"); const u32 gMonPalette_CramorantGorging[] = INCBIN_U32("graphics/pokemon/cramorant/gorging/normal.gbapal.lz"); const u32 gMonPalette_ToxtricityLowKey[] = INCBIN_U32("graphics/pokemon/toxtricity/low_key/normal.gbapal.lz"); -const u32 gMonPalette_AlcremieRubyCream[] = INCBIN_U32("graphics/pokemon/alcremie/ruby_cream/normal.gbapal.lz"); -const u32 gMonPalette_AlcremieMatchaCream[] = INCBIN_U32("graphics/pokemon/alcremie/matcha_cream/normal.gbapal.lz"); -const u32 gMonPalette_AlcremieMintCream[] = INCBIN_U32("graphics/pokemon/alcremie/mint_cream/normal.gbapal.lz"); -const u32 gMonPalette_AlcremieLemonCream[] = INCBIN_U32("graphics/pokemon/alcremie/lemon_cream/normal.gbapal.lz"); -const u32 gMonPalette_AlcremieSaltedCream[] = INCBIN_U32("graphics/pokemon/alcremie/salted_cream/normal.gbapal.lz"); -const u32 gMonPalette_AlcremieRubySwirl[] = INCBIN_U32("graphics/pokemon/alcremie/ruby_swirl/normal.gbapal.lz"); -const u32 gMonPalette_AlcremieCaramelSwirl[] = INCBIN_U32("graphics/pokemon/alcremie/caramel_swirl/normal.gbapal.lz"); -const u32 gMonPalette_AlcremieRainbowSwirl[] = INCBIN_U32("graphics/pokemon/alcremie/rainbow_swirl/normal.gbapal.lz"); const u32 gMonPalette_EiscueNoiceFace[] = INCBIN_U32("graphics/pokemon/eiscue/noice_face/normal.gbapal.lz"); const u32 gMonPalette_IndeedeeFemale[] = INCBIN_U32("graphics/pokemon/indeedee/female/normal.gbapal.lz"); const u32 gMonPalette_MorpekoHangry[] = INCBIN_U32("graphics/pokemon/morpeko/hangry/normal.gbapal.lz"); @@ -5112,14 +5088,6 @@ const u32 gMonShinyPalette_MagearnaOriginalColor[] = INCBIN_U32("graphics/pokemo const u32 gMonShinyPalette_CramorantGulping[] = INCBIN_U32("graphics/pokemon/cramorant/gulping/shiny.gbapal.lz"); const u32 gMonShinyPalette_CramorantGorging[] = INCBIN_U32("graphics/pokemon/cramorant/gorging/shiny.gbapal.lz"); const u32 gMonShinyPalette_ToxtricityLowKey[] = INCBIN_U32("graphics/pokemon/toxtricity/low_key/shiny.gbapal.lz"); -const u32 gMonShinyPalette_AlcremieRubyCream[] = INCBIN_U32("graphics/pokemon/alcremie/ruby_cream/shiny.gbapal.lz"); -const u32 gMonShinyPalette_AlcremieMatchaCream[] = INCBIN_U32("graphics/pokemon/alcremie/matcha_cream/shiny.gbapal.lz"); -const u32 gMonShinyPalette_AlcremieMintCream[] = INCBIN_U32("graphics/pokemon/alcremie/mint_cream/shiny.gbapal.lz"); -const u32 gMonShinyPalette_AlcremieLemonCream[] = INCBIN_U32("graphics/pokemon/alcremie/lemon_cream/shiny.gbapal.lz"); -const u32 gMonShinyPalette_AlcremieSaltedCream[] = INCBIN_U32("graphics/pokemon/alcremie/salted_cream/shiny.gbapal.lz"); -const u32 gMonShinyPalette_AlcremieRubySwirl[] = INCBIN_U32("graphics/pokemon/alcremie/ruby_swirl/shiny.gbapal.lz"); -const u32 gMonShinyPalette_AlcremieCaramelSwirl[] = INCBIN_U32("graphics/pokemon/alcremie/caramel_swirl/shiny.gbapal.lz"); -const u32 gMonShinyPalette_AlcremieRainbowSwirl[] = INCBIN_U32("graphics/pokemon/alcremie/rainbow_swirl/shiny.gbapal.lz"); const u32 gMonShinyPalette_EiscueNoiceFace[] = INCBIN_U32("graphics/pokemon/eiscue/noice_face/shiny.gbapal.lz"); const u32 gMonShinyPalette_IndeedeeFemale[] = INCBIN_U32("graphics/pokemon/indeedee/female/shiny.gbapal.lz"); const u32 gMonShinyPalette_MorpekoHangry[] = INCBIN_U32("graphics/pokemon/morpeko/hangry/shiny.gbapal.lz"); @@ -6053,7 +6021,15 @@ const u8 gMonIcon_Sirfetchd[] = INCBIN_U8("graphics/pokemon/sirfetchd/icon.4bpp" const u8 gMonIcon_MrRime[] = INCBIN_U8("graphics/pokemon/mr_rime/icon.4bpp"); const u8 gMonIcon_Runerigus[] = INCBIN_U8("graphics/pokemon/runerigus/icon.4bpp"); const u8 gMonIcon_Milcery[] = INCBIN_U8("graphics/pokemon/milcery/icon.4bpp"); -const u8 gMonIcon_Alcremie[] = INCBIN_U8("graphics/pokemon/alcremie/icon.4bpp"); +const u8 gMonIcon_AlcremieStrawberryVanillaCream[] = INCBIN_U8("graphics/pokemon/alcremie/icon.4bpp"); +//const u8 gMonIcon_AlcremieStrawberryRubyCream[] = INCBIN_U8("graphics/pokemon/alcremie/ruby_cream/icon.4bpp"); +//const u8 gMonIcon_AlcremieStrawberryMatchaCream[] = INCBIN_U8("graphics/pokemon/alcremie/matcha_cream/icon.4bpp"); +//const u8 gMonIcon_AlcremieStrawberryMintCream[] = INCBIN_U8("graphics/pokemon/alcremie/mint_cream/icon.4bpp"); +//const u8 gMonIcon_AlcremieStrawberryLemonCream[] = INCBIN_U8("graphics/pokemon/alcremie/lemon_cream/icon.4bpp"); +//const u8 gMonIcon_AlcremieStrawberrySaltedCream[] = INCBIN_U8("graphics/pokemon/alcremie/salted_cream/icon.4bpp"); +//const u8 gMonIcon_AlcremieStrawberryRubySwirl[] = INCBIN_U8("graphics/pokemon/alcremie/ruby_swirl/icon.4bpp"); +//const u8 gMonIcon_AlcremieStrawberryCaramelSwirl[] = INCBIN_U8("graphics/pokemon/alcremie/caramel_swirl/icon.4bpp"); +//const u8 gMonIcon_AlcremieStrawberryRainbowSwirl[] = INCBIN_U8("graphics/pokemon/alcremie/rainbow_swirl/icon.4bpp"); const u8 gMonIcon_Falinks[] = INCBIN_U8("graphics/pokemon/falinks/icon.4bpp"); const u8 gMonIcon_Pincurchin[] = INCBIN_U8("graphics/pokemon/pincurchin/icon.4bpp"); const u8 gMonIcon_Snom[] = INCBIN_U8("graphics/pokemon/snom/icon.4bpp"); @@ -6367,14 +6343,6 @@ const u8 gMonIcon_MagearnaOriginalColor[] = INCBIN_U8("graphics/pokemon/magearna const u8 gMonIcon_CramorantGulping[] = INCBIN_U8("graphics/pokemon/cramorant/gulping/icon.4bpp"); const u8 gMonIcon_CramorantGorging[] = INCBIN_U8("graphics/pokemon/cramorant/gorging/icon.4bpp"); const u8 gMonIcon_ToxtricityLowKey[] = INCBIN_U8("graphics/pokemon/toxtricity/low_key/icon.4bpp"); -//const u8 gMonIcon_AlcremieStrawberryRubyCream[] = INCBIN_U8("graphics/pokemon/alcremie/ruby_cream/icon.4bpp"); -//const u8 gMonIcon_AlcremieStrawberryMatchaCream[] = INCBIN_U8("graphics/pokemon/alcremie/matcha_cream/icon.4bpp"); -//const u8 gMonIcon_AlcremieStrawberryMintCream[] = INCBIN_U8("graphics/pokemon/alcremie/mint_cream/icon.4bpp"); -//const u8 gMonIcon_AlcremieStrawberryLemonCream[] = INCBIN_U8("graphics/pokemon/alcremie/lemon_cream/icon.4bpp"); -//const u8 gMonIcon_AlcremieStrawberrySaltedCream[] = INCBIN_U8("graphics/pokemon/alcremie/salted_cream/icon.4bpp"); -//const u8 gMonIcon_AlcremieStrawberryRubySwirl[] = INCBIN_U8("graphics/pokemon/alcremie/ruby_swirl/icon.4bpp"); -//const u8 gMonIcon_AlcremieStrawberryCaramelSwirl[] = INCBIN_U8("graphics/pokemon/alcremie/caramel_swirl/icon.4bpp"); -//const u8 gMonIcon_AlcremieStrawberryRainbowSwirl[] = INCBIN_U8("graphics/pokemon/alcremie/rainbow_swirl/icon.4bpp"); const u8 gMonIcon_EiscueNoiceFace[] = INCBIN_U8("graphics/pokemon/eiscue/noice_face/icon.4bpp"); const u8 gMonIcon_IndeedeeFemale[] = INCBIN_U8("graphics/pokemon/indeedee/female/icon.4bpp"); const u8 gMonIcon_MorpekoHangry[] = INCBIN_U8("graphics/pokemon/morpeko/hangry/icon.4bpp"); @@ -7300,7 +7268,99 @@ const u8 gMonFootprint_Sirfetchd[] = INCBIN_U8("graphics/pokemon/sirfetchd/footp const u8 gMonFootprint_Mr_Rime[] = INCBIN_U8("graphics/pokemon/mr_rime/footprint.1bpp"); const u8 gMonFootprint_Runerigus[] = INCBIN_U8("graphics/pokemon/runerigus/footprint.1bpp"); const u8 gMonFootprint_Milcery[] = INCBIN_U8("graphics/pokemon/milcery/footprint.1bpp"); + +const u32 gMonFrontPic_AlcremieStrawberry[] = INCBIN_U32("graphics/pokemon/alcremie/strawberry/front.4bpp.lz"); +const u32 gMonPalette_AlcremieStrawberryVanillaCream[] = INCBIN_U32("graphics/pokemon/alcremie/strawberry/Strawberry_Default.gbapal.lz"); +const u32 gMonPalette_AlcremieStrawberryRubyCream[] = INCBIN_U32("graphics/pokemon/alcremie/strawberry/Strawberry_Ruby_Cream.gbapal.lz"); +const u32 gMonPalette_AlcremieStrawberryMatchaCream[] = INCBIN_U32("graphics/pokemon/alcremie/strawberry/Strawberry_Matcha_Cream.gbapal.lz"); +const u32 gMonPalette_AlcremieStrawberryMintCream[] = INCBIN_U32("graphics/pokemon/alcremie/strawberry/Strawberry_Mint_Cream.gbapal.lz"); +const u32 gMonPalette_AlcremieStrawberryLemonCream[] = INCBIN_U32("graphics/pokemon/alcremie/strawberry/Strawberry_Lemon_Cream.gbapal.lz"); +const u32 gMonPalette_AlcremieStrawberrySaltedCream[] = INCBIN_U32("graphics/pokemon/alcremie/strawberry/Strawberry_Salted_Cream.gbapal.lz"); +const u32 gMonPalette_AlcremieStrawberryRubySwirl[] = INCBIN_U32("graphics/pokemon/alcremie/strawberry/Strawberry_Ruby_Swirl.gbapal.lz"); +const u32 gMonPalette_AlcremieStrawberryCaramelSwirl[] = INCBIN_U32("graphics/pokemon/alcremie/strawberry/Strawberry_Caramel_Swirl.gbapal.lz"); +const u32 gMonPalette_AlcremieStrawberryRainbowSwirl[] = INCBIN_U32("graphics/pokemon/alcremie/strawberry/Strawberry_Rainbow_Swirl.gbapal.lz"); +const u32 gMonBackPic_AlcremieStrawberry[] = INCBIN_U32("graphics/pokemon/alcremie/strawberry/back.4bpp.lz"); +const u32 gMonShinyPalette_AlcremieStrawberry[] = INCBIN_U32("graphics/pokemon/alcremie/strawberry/Strawberry_Shiny.gbapal.lz"); const u8 gMonFootprint_Alcremie[] = INCBIN_U8("graphics/pokemon/alcremie/footprint.1bpp"); + +const u32 gMonFrontPic_AlcremieBerry[] = INCBIN_U32("graphics/pokemon/alcremie/berry/front.4bpp.lz"); +const u32 gMonPalette_AlcremieBerryVanillaCream[] = INCBIN_U32("graphics/pokemon/alcremie/berry/Berry_Default.gbapal.lz"); +const u32 gMonPalette_AlcremieBerryRubyCream[] = INCBIN_U32("graphics/pokemon/alcremie/berry/Berry_Ruby_Cream.gbapal.lz"); +const u32 gMonPalette_AlcremieBerryMatchaCream[] = INCBIN_U32("graphics/pokemon/alcremie/berry/Berry_Matcha_Cream.gbapal.lz"); +const u32 gMonPalette_AlcremieBerryMintCream[] = INCBIN_U32("graphics/pokemon/alcremie/berry/Berry_Mint_Cream.gbapal.lz"); +const u32 gMonPalette_AlcremieBerryLemonCream[] = INCBIN_U32("graphics/pokemon/alcremie/berry/Berry_Lemon_Cream.gbapal.lz"); +const u32 gMonPalette_AlcremieBerrySaltedCream[] = INCBIN_U32("graphics/pokemon/alcremie/berry/Berry_Salted_Cream.gbapal.lz"); +const u32 gMonPalette_AlcremieBerryRubySwirl[] = INCBIN_U32("graphics/pokemon/alcremie/berry/Berry_Ruby_Swirl.gbapal.lz"); +const u32 gMonPalette_AlcremieBerryCaramelSwirl[] = INCBIN_U32("graphics/pokemon/alcremie/berry/Berry_Caramel_Swirl.gbapal.lz"); +const u32 gMonPalette_AlcremieBerryRainbowSwirl[] = INCBIN_U32("graphics/pokemon/alcremie/berry/Berry_Rainbow_Swirl.gbapal.lz"); +const u32 gMonBackPic_AlcremieBerry[] = INCBIN_U32("graphics/pokemon/alcremie/berry/back.4bpp.lz"); +const u32 gMonShinyPalette_AlcremieBerry[] = INCBIN_U32("graphics/pokemon/alcremie/berry/Berry_Shiny.gbapal.lz"); + +const u32 gMonFrontPic_AlcremieLove[] = INCBIN_U32("graphics/pokemon/alcremie/love/front.4bpp.lz"); +const u32 gMonPalette_AlcremieLoveVanillaCream[] = INCBIN_U32("graphics/pokemon/alcremie/love/Love_Default.gbapal.lz"); +const u32 gMonPalette_AlcremieLoveRubyCream[] = INCBIN_U32("graphics/pokemon/alcremie/love/Love_Ruby_Cream.gbapal.lz"); +const u32 gMonPalette_AlcremieLoveMatchaCream[] = INCBIN_U32("graphics/pokemon/alcremie/love/Love_Matcha_Cream.gbapal.lz"); +const u32 gMonPalette_AlcremieLoveMintCream[] = INCBIN_U32("graphics/pokemon/alcremie/love/Love_Mint_Cream.gbapal.lz"); +const u32 gMonPalette_AlcremieLoveLemonCream[] = INCBIN_U32("graphics/pokemon/alcremie/love/Love_Lemon_Cream.gbapal.lz"); +const u32 gMonPalette_AlcremieLoveSaltedCream[] = INCBIN_U32("graphics/pokemon/alcremie/love/Love_Salted_Cream.gbapal.lz"); +const u32 gMonPalette_AlcremieLoveRubySwirl[] = INCBIN_U32("graphics/pokemon/alcremie/love/Love_Ruby_Swirl.gbapal.lz"); +const u32 gMonPalette_AlcremieLoveCaramelSwirl[] = INCBIN_U32("graphics/pokemon/alcremie/love/Love_Caramel_Swirl.gbapal.lz"); +const u32 gMonPalette_AlcremieLoveRainbowSwirl[] = INCBIN_U32("graphics/pokemon/alcremie/love/Love_Rainbow_Swirl.gbapal.lz"); +const u32 gMonBackPic_AlcremieLove[] = INCBIN_U32("graphics/pokemon/alcremie/love/back.4bpp.lz"); +const u32 gMonShinyPalette_AlcremieLove[] = INCBIN_U32("graphics/pokemon/alcremie/love/Love_Shiny.gbapal.lz"); + +const u32 gMonFrontPic_AlcremieStar[] = INCBIN_U32("graphics/pokemon/alcremie/star/front.4bpp.lz"); +const u32 gMonPalette_AlcremieStarVanillaCream[] = INCBIN_U32("graphics/pokemon/alcremie/star/Star_Default.gbapal.lz"); +const u32 gMonPalette_AlcremieStarRubyCream[] = INCBIN_U32("graphics/pokemon/alcremie/star/Star_Ruby_Cream.gbapal.lz"); +const u32 gMonPalette_AlcremieStarMatchaCream[] = INCBIN_U32("graphics/pokemon/alcremie/star/Star_Matcha_Cream.gbapal.lz"); +const u32 gMonPalette_AlcremieStarMintCream[] = INCBIN_U32("graphics/pokemon/alcremie/star/Star_Mint_Cream.gbapal.lz"); +const u32 gMonPalette_AlcremieStarLemonCream[] = INCBIN_U32("graphics/pokemon/alcremie/star/Star_Lemon_Cream.gbapal.lz"); +const u32 gMonPalette_AlcremieStarSaltedCream[] = INCBIN_U32("graphics/pokemon/alcremie/star/Star_Salted_Cream.gbapal.lz"); +const u32 gMonPalette_AlcremieStarRubySwirl[] = INCBIN_U32("graphics/pokemon/alcremie/star/Star_Ruby_Swirl.gbapal.lz"); +const u32 gMonPalette_AlcremieStarCaramelSwirl[] = INCBIN_U32("graphics/pokemon/alcremie/star/Star_Caramel_Swirl.gbapal.lz"); +const u32 gMonPalette_AlcremieStarRainbowSwirl[] = INCBIN_U32("graphics/pokemon/alcremie/star/Star_Rainbow_Swirl.gbapal.lz"); +const u32 gMonBackPic_AlcremieStar[] = INCBIN_U32("graphics/pokemon/alcremie/star/back.4bpp.lz"); +const u32 gMonShinyPalette_AlcremieStar[] = INCBIN_U32("graphics/pokemon/alcremie/star/Star_Shiny.gbapal.lz"); + +const u32 gMonFrontPic_AlcremieClover[] = INCBIN_U32("graphics/pokemon/alcremie/clover/front.4bpp.lz"); +const u32 gMonPalette_AlcremieCloverVanillaCream[] = INCBIN_U32("graphics/pokemon/alcremie/clover/Clover_Default.gbapal.lz"); +const u32 gMonPalette_AlcremieCloverRubyCream[] = INCBIN_U32("graphics/pokemon/alcremie/clover/Clover_Ruby_Cream.gbapal.lz"); +const u32 gMonPalette_AlcremieCloverMatchaCream[] = INCBIN_U32("graphics/pokemon/alcremie/clover/Clover_Matcha_Cream.gbapal.lz"); +const u32 gMonPalette_AlcremieCloverMintCream[] = INCBIN_U32("graphics/pokemon/alcremie/clover/Clover_Mint_Cream.gbapal.lz"); +const u32 gMonPalette_AlcremieCloverLemonCream[] = INCBIN_U32("graphics/pokemon/alcremie/clover/Clover_Lemon_Cream.gbapal.lz"); +const u32 gMonPalette_AlcremieCloverSaltedCream[] = INCBIN_U32("graphics/pokemon/alcremie/clover/Clover_Salted_Cream.gbapal.lz"); +const u32 gMonPalette_AlcremieCloverRubySwirl[] = INCBIN_U32("graphics/pokemon/alcremie/clover/Clover_Ruby_Swirl.gbapal.lz"); +const u32 gMonPalette_AlcremieCloverCaramelSwirl[] = INCBIN_U32("graphics/pokemon/alcremie/clover/Clover_Caramel_Swirl.gbapal.lz"); +const u32 gMonPalette_AlcremieCloverRainbowSwirl[] = INCBIN_U32("graphics/pokemon/alcremie/clover/Clover_Rainbow_Swirl.gbapal.lz"); +const u32 gMonBackPic_AlcremieClover[] = INCBIN_U32("graphics/pokemon/alcremie/clover/back.4bpp.lz"); +const u32 gMonShinyPalette_AlcremieClover[] = INCBIN_U32("graphics/pokemon/alcremie/clover/Clover_Shiny.gbapal.lz"); + +const u32 gMonFrontPic_AlcremieFlower[] = INCBIN_U32("graphics/pokemon/alcremie/flower/front.4bpp.lz"); +const u32 gMonPalette_AlcremieFlowerVanillaCream[] = INCBIN_U32("graphics/pokemon/alcremie/flower/Flower_Default.gbapal.lz"); +const u32 gMonPalette_AlcremieFlowerRubyCream[] = INCBIN_U32("graphics/pokemon/alcremie/flower/Flower_Ruby_Cream.gbapal.lz"); +const u32 gMonPalette_AlcremieFlowerMatchaCream[] = INCBIN_U32("graphics/pokemon/alcremie/flower/Flower_Matcha_Cream.gbapal.lz"); +const u32 gMonPalette_AlcremieFlowerMintCream[] = INCBIN_U32("graphics/pokemon/alcremie/flower/Flower_Mint_Cream.gbapal.lz"); +const u32 gMonPalette_AlcremieFlowerLemonCream[] = INCBIN_U32("graphics/pokemon/alcremie/flower/Flower_Lemon_Cream.gbapal.lz"); +const u32 gMonPalette_AlcremieFlowerSaltedCream[] = INCBIN_U32("graphics/pokemon/alcremie/flower/Flower_Salted_Cream.gbapal.lz"); +const u32 gMonPalette_AlcremieFlowerRubySwirl[] = INCBIN_U32("graphics/pokemon/alcremie/flower/Flower_Ruby_Swirl.gbapal.lz"); +const u32 gMonPalette_AlcremieFlowerCaramelSwirl[] = INCBIN_U32("graphics/pokemon/alcremie/flower/Flower_Caramel_Swirl.gbapal.lz"); +const u32 gMonPalette_AlcremieFlowerRainbowSwirl[] = INCBIN_U32("graphics/pokemon/alcremie/flower/Flower_Rainbow_Swirl.gbapal.lz"); +const u32 gMonBackPic_AlcremieFlower[] = INCBIN_U32("graphics/pokemon/alcremie/flower/back.4bpp.lz"); +const u32 gMonShinyPalette_AlcremieFlower[] = INCBIN_U32("graphics/pokemon/alcremie/flower/Flower_Shiny.gbapal.lz"); + +const u32 gMonFrontPic_AlcremieRibbon[] = INCBIN_U32("graphics/pokemon/alcremie/ribbon/front.4bpp.lz"); +const u32 gMonPalette_AlcremieRibbonVanillaCream[] = INCBIN_U32("graphics/pokemon/alcremie/ribbon/Ribbon_Default.gbapal.lz"); +const u32 gMonPalette_AlcremieRibbonRubyCream[] = INCBIN_U32("graphics/pokemon/alcremie/ribbon/Ribbon_Ruby_Cream.gbapal.lz"); +const u32 gMonPalette_AlcremieRibbonMatchaCream[] = INCBIN_U32("graphics/pokemon/alcremie/ribbon/Ribbon_Matcha_Cream.gbapal.lz"); +const u32 gMonPalette_AlcremieRibbonMintCream[] = INCBIN_U32("graphics/pokemon/alcremie/ribbon/Ribbon_Mint_Cream.gbapal.lz"); +const u32 gMonPalette_AlcremieRibbonLemonCream[] = INCBIN_U32("graphics/pokemon/alcremie/ribbon/Ribbon_Lemon_Cream.gbapal.lz"); +const u32 gMonPalette_AlcremieRibbonSaltedCream[] = INCBIN_U32("graphics/pokemon/alcremie/ribbon/Ribbon_Salted_Cream.gbapal.lz"); +const u32 gMonPalette_AlcremieRibbonRubySwirl[] = INCBIN_U32("graphics/pokemon/alcremie/ribbon/Ribbon_Ruby_Swirl.gbapal.lz"); +const u32 gMonPalette_AlcremieRibbonCaramelSwirl[] = INCBIN_U32("graphics/pokemon/alcremie/ribbon/Ribbon_Caramel_Swirl.gbapal.lz"); +const u32 gMonPalette_AlcremieRibbonRainbowSwirl[] = INCBIN_U32("graphics/pokemon/alcremie/ribbon/Ribbon_Rainbow_Swirl.gbapal.lz"); +const u32 gMonBackPic_AlcremieRibbon[] = INCBIN_U32("graphics/pokemon/alcremie/ribbon/back.4bpp.lz"); +const u32 gMonShinyPalette_AlcremieRibbon[] = INCBIN_U32("graphics/pokemon/alcremie/ribbon/Ribbon_Shiny.gbapal.lz"); + const u8 gMonFootprint_Falinks[] = INCBIN_U8("graphics/pokemon/falinks/footprint.1bpp"); const u8 gMonFootprint_Pincurchin[] = INCBIN_U8("graphics/pokemon/pincurchin/footprint.1bpp"); const u8 gMonFootprint_Snom[] = INCBIN_U8("graphics/pokemon/snom/footprint.1bpp"); diff --git a/src/data/pokemon/form_change_table_pointers.h b/src/data/pokemon/form_change_table_pointers.h index bd8f42a3e2..b89591437a 100644 --- a/src/data/pokemon/form_change_table_pointers.h +++ b/src/data/pokemon/form_change_table_pointers.h @@ -271,7 +271,69 @@ const struct FormChange *const gFormChangeTablePointers[NUM_SPECIES] = [SPECIES_HATTERENE_GIGANTAMAX] = sHattereneFormChangeTable, [SPECIES_GRIMMSNARL] = sGrimmsnarlFormChangeTable, [SPECIES_GRIMMSNARL_GIGANTAMAX] = sGrimmsnarlFormChangeTable, - [SPECIES_ALCREMIE] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_BERRY_VANILLA_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_BERRY_RUBY_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_BERRY_MATCHA_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_BERRY_MINT_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_BERRY_LEMON_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_BERRY_SALTED_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_BERRY_RUBY_SWIRL] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_BERRY_CARAMEL_SWIRL] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_BERRY_RAINBOW_SWIRL] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_LOVE_VANILLA_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_LOVE_RUBY_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_LOVE_MATCHA_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_LOVE_MINT_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_LOVE_LEMON_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_LOVE_SALTED_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_LOVE_RUBY_SWIRL] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_LOVE_CARAMEL_SWIRL] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_LOVE_RAINBOW_SWIRL] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_STAR_VANILLA_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_STAR_RUBY_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_STAR_MATCHA_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_STAR_MINT_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_STAR_LEMON_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_STAR_SALTED_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_STAR_RUBY_SWIRL] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_STAR_CARAMEL_SWIRL] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_STAR_RAINBOW_SWIRL] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_CLOVER_VANILLA_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_CLOVER_RUBY_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_CLOVER_MATCHA_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_CLOVER_MINT_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_CLOVER_LEMON_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_CLOVER_SALTED_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_CLOVER_RUBY_SWIRL] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_CLOVER_CARAMEL_SWIRL] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_CLOVER_RAINBOW_SWIRL] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_FLOWER_VANILLA_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_FLOWER_RUBY_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_FLOWER_MATCHA_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_FLOWER_MINT_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_FLOWER_LEMON_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_FLOWER_SALTED_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_FLOWER_RUBY_SWIRL] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_FLOWER_CARAMEL_SWIRL] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_FLOWER_RAINBOW_SWIRL] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_RIBBON_VANILLA_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_RIBBON_RUBY_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_RIBBON_MATCHA_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_RIBBON_MINT_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_RIBBON_LEMON_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_RIBBON_SALTED_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_RIBBON_RUBY_SWIRL] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_RIBBON_CARAMEL_SWIRL] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_RIBBON_RAINBOW_SWIRL] = sAlcremieFormChangeTable, [SPECIES_ALCREMIE_GIGANTAMAX] = sAlcremieFormChangeTable, [SPECIES_EISCUE_ICE_FACE] = sEiscueFormChangeTable, [SPECIES_EISCUE_NOICE_FACE] = sEiscueFormChangeTable, diff --git a/src/data/pokemon/form_species_table_pointers.h b/src/data/pokemon/form_species_table_pointers.h index e615fd1b14..f867c97d3f 100644 --- a/src/data/pokemon/form_species_table_pointers.h +++ b/src/data/pokemon/form_species_table_pointers.h @@ -161,6 +161,68 @@ const u16 *const gFormSpeciesIdTables[NUM_SPECIES] = [SPECIES_SINISTEA_PHONY] = sSinisteaFormSpeciesIdTable, [SPECIES_POLTEAGEIST_PHONY] = sPolteageistFormSpeciesIdTable, [SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_BERRY_VANILLA_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_BERRY_RUBY_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_BERRY_MATCHA_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_BERRY_MINT_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_BERRY_LEMON_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_BERRY_SALTED_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_BERRY_RUBY_SWIRL] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_BERRY_CARAMEL_SWIRL] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_BERRY_RAINBOW_SWIRL] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_LOVE_VANILLA_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_LOVE_RUBY_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_LOVE_MATCHA_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_LOVE_MINT_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_LOVE_LEMON_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_LOVE_SALTED_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_LOVE_RUBY_SWIRL] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_LOVE_CARAMEL_SWIRL] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_LOVE_RAINBOW_SWIRL] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_STAR_VANILLA_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_STAR_RUBY_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_STAR_MATCHA_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_STAR_MINT_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_STAR_LEMON_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_STAR_SALTED_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_STAR_RUBY_SWIRL] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_STAR_CARAMEL_SWIRL] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_STAR_RAINBOW_SWIRL] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_CLOVER_VANILLA_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_CLOVER_RUBY_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_CLOVER_MATCHA_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_CLOVER_MINT_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_CLOVER_LEMON_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_CLOVER_SALTED_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_CLOVER_RUBY_SWIRL] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_CLOVER_CARAMEL_SWIRL] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_CLOVER_RAINBOW_SWIRL] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_FLOWER_VANILLA_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_FLOWER_RUBY_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_FLOWER_MATCHA_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_FLOWER_MINT_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_FLOWER_LEMON_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_FLOWER_SALTED_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_FLOWER_RUBY_SWIRL] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_FLOWER_CARAMEL_SWIRL] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_FLOWER_RAINBOW_SWIRL] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_RIBBON_VANILLA_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_RIBBON_RUBY_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_RIBBON_MATCHA_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_RIBBON_MINT_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_RIBBON_LEMON_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_RIBBON_SALTED_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_RIBBON_RUBY_SWIRL] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_RIBBON_CARAMEL_SWIRL] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_RIBBON_RAINBOW_SWIRL] = sAlcremieFormSpeciesIdTable, [SPECIES_EISCUE_ICE_FACE] = sEiscueFormSpeciesIdTable, [SPECIES_INDEEDEE_MALE] = sIndeedeeFormSpeciesIdTable, [SPECIES_MORPEKO_FULL_BELLY] = sMorpekoFormSpeciesIdTable, @@ -561,15 +623,6 @@ const u16 *const gFormSpeciesIdTables[NUM_SPECIES] = [SPECIES_SINISTEA_ANTIQUE] = sSinisteaFormSpeciesIdTable, // Polteageist [SPECIES_POLTEAGEIST_ANTIQUE] = sPolteageistFormSpeciesIdTable, - // Alcremie - [SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM] = sAlcremieFormSpeciesIdTable, - [SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM] = sAlcremieFormSpeciesIdTable, - [SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM] = sAlcremieFormSpeciesIdTable, - [SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM] = sAlcremieFormSpeciesIdTable, - [SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM] = sAlcremieFormSpeciesIdTable, - [SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL] = sAlcremieFormSpeciesIdTable, - [SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL] = sAlcremieFormSpeciesIdTable, - [SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL] = sAlcremieFormSpeciesIdTable, // Eiscue [SPECIES_EISCUE_NOICE_FACE] = sEiscueFormSpeciesIdTable, // Indeedee diff --git a/src/data/pokemon/form_species_tables.h b/src/data/pokemon/form_species_tables.h index a1d5314884..791ff90ba6 100644 --- a/src/data/pokemon/form_species_tables.h +++ b/src/data/pokemon/form_species_tables.h @@ -1216,6 +1216,61 @@ static const u16 sAlcremieFormSpeciesIdTable[] = { SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL, SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL, SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL, + SPECIES_ALCREMIE_BERRY_VANILLA_CREAM, + SPECIES_ALCREMIE_BERRY_RUBY_CREAM, + SPECIES_ALCREMIE_BERRY_MATCHA_CREAM, + SPECIES_ALCREMIE_BERRY_MINT_CREAM, + SPECIES_ALCREMIE_BERRY_LEMON_CREAM, + SPECIES_ALCREMIE_BERRY_SALTED_CREAM, + SPECIES_ALCREMIE_BERRY_RUBY_SWIRL, + SPECIES_ALCREMIE_BERRY_CARAMEL_SWIRL, + SPECIES_ALCREMIE_BERRY_RAINBOW_SWIRL, + SPECIES_ALCREMIE_LOVE_VANILLA_CREAM, + SPECIES_ALCREMIE_LOVE_RUBY_CREAM, + SPECIES_ALCREMIE_LOVE_MATCHA_CREAM, + SPECIES_ALCREMIE_LOVE_MINT_CREAM, + SPECIES_ALCREMIE_LOVE_LEMON_CREAM, + SPECIES_ALCREMIE_LOVE_SALTED_CREAM, + SPECIES_ALCREMIE_LOVE_RUBY_SWIRL, + SPECIES_ALCREMIE_LOVE_CARAMEL_SWIRL, + SPECIES_ALCREMIE_LOVE_RAINBOW_SWIRL, + SPECIES_ALCREMIE_STAR_VANILLA_CREAM, + SPECIES_ALCREMIE_STAR_RUBY_CREAM, + SPECIES_ALCREMIE_STAR_MATCHA_CREAM, + SPECIES_ALCREMIE_STAR_MINT_CREAM, + SPECIES_ALCREMIE_STAR_LEMON_CREAM, + SPECIES_ALCREMIE_STAR_SALTED_CREAM, + SPECIES_ALCREMIE_STAR_RUBY_SWIRL, + SPECIES_ALCREMIE_STAR_CARAMEL_SWIRL, + SPECIES_ALCREMIE_STAR_RAINBOW_SWIRL, + SPECIES_ALCREMIE_CLOVER_VANILLA_CREAM, + SPECIES_ALCREMIE_CLOVER_RUBY_CREAM, + SPECIES_ALCREMIE_CLOVER_MATCHA_CREAM, + SPECIES_ALCREMIE_CLOVER_MINT_CREAM, + SPECIES_ALCREMIE_CLOVER_LEMON_CREAM, + SPECIES_ALCREMIE_CLOVER_SALTED_CREAM, + SPECIES_ALCREMIE_CLOVER_RUBY_SWIRL, + SPECIES_ALCREMIE_CLOVER_CARAMEL_SWIRL, + SPECIES_ALCREMIE_CLOVER_RAINBOW_SWIRL, + SPECIES_ALCREMIE_FLOWER_VANILLA_CREAM, + SPECIES_ALCREMIE_FLOWER_RUBY_CREAM, + SPECIES_ALCREMIE_FLOWER_MATCHA_CREAM, + SPECIES_ALCREMIE_FLOWER_MINT_CREAM, + SPECIES_ALCREMIE_FLOWER_LEMON_CREAM, + SPECIES_ALCREMIE_FLOWER_SALTED_CREAM, + SPECIES_ALCREMIE_FLOWER_RUBY_SWIRL, + SPECIES_ALCREMIE_FLOWER_CARAMEL_SWIRL, + SPECIES_ALCREMIE_FLOWER_RAINBOW_SWIRL, + SPECIES_ALCREMIE_RIBBON_VANILLA_CREAM, + SPECIES_ALCREMIE_RIBBON_RUBY_CREAM, + SPECIES_ALCREMIE_RIBBON_MATCHA_CREAM, + SPECIES_ALCREMIE_RIBBON_MINT_CREAM, + SPECIES_ALCREMIE_RIBBON_LEMON_CREAM, + SPECIES_ALCREMIE_RIBBON_SALTED_CREAM, + SPECIES_ALCREMIE_RIBBON_RUBY_SWIRL, + SPECIES_ALCREMIE_RIBBON_CARAMEL_SWIRL, + SPECIES_ALCREMIE_RIBBON_RAINBOW_SWIRL, + SPECIES_ALCREMIE_GIGANTAMAX, FORM_SPECIES_END, }; diff --git a/src/data/pokemon/level_up_learnset_pointers.h b/src/data/pokemon/level_up_learnset_pointers.h index 3a6dc86cc8..40b2549a2c 100644 --- a/src/data/pokemon/level_up_learnset_pointers.h +++ b/src/data/pokemon/level_up_learnset_pointers.h @@ -879,6 +879,68 @@ const struct LevelUpMove *const gLevelUpLearnsets[NUM_SPECIES] = [SPECIES_RUNERIGUS] = sRunerigusLevelUpLearnset, [SPECIES_MILCERY] = sMilceryLevelUpLearnset, [SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_BERRY_VANILLA_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_BERRY_RUBY_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_BERRY_MATCHA_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_BERRY_MINT_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_BERRY_LEMON_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_BERRY_SALTED_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_BERRY_RUBY_SWIRL] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_BERRY_CARAMEL_SWIRL] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_BERRY_RAINBOW_SWIRL] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_LOVE_VANILLA_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_LOVE_RUBY_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_LOVE_MATCHA_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_LOVE_MINT_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_LOVE_LEMON_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_LOVE_SALTED_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_LOVE_RUBY_SWIRL] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_LOVE_CARAMEL_SWIRL] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_LOVE_RAINBOW_SWIRL] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_STAR_VANILLA_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_STAR_RUBY_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_STAR_MATCHA_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_STAR_MINT_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_STAR_LEMON_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_STAR_SALTED_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_STAR_RUBY_SWIRL] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_STAR_CARAMEL_SWIRL] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_STAR_RAINBOW_SWIRL] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_CLOVER_VANILLA_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_CLOVER_RUBY_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_CLOVER_MATCHA_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_CLOVER_MINT_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_CLOVER_LEMON_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_CLOVER_SALTED_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_CLOVER_RUBY_SWIRL] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_CLOVER_CARAMEL_SWIRL] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_CLOVER_RAINBOW_SWIRL] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_FLOWER_VANILLA_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_FLOWER_RUBY_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_FLOWER_MATCHA_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_FLOWER_MINT_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_FLOWER_LEMON_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_FLOWER_SALTED_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_FLOWER_RUBY_SWIRL] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_FLOWER_CARAMEL_SWIRL] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_FLOWER_RAINBOW_SWIRL] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_RIBBON_VANILLA_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_RIBBON_RUBY_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_RIBBON_MATCHA_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_RIBBON_MINT_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_RIBBON_LEMON_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_RIBBON_SALTED_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_RIBBON_RUBY_SWIRL] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_RIBBON_CARAMEL_SWIRL] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_RIBBON_RAINBOW_SWIRL] = sAlcremieLevelUpLearnset, [SPECIES_FALINKS] = sFalinksLevelUpLearnset, [SPECIES_PINCURCHIN] = sPincurchinLevelUpLearnset, [SPECIES_SNOM] = sSnomLevelUpLearnset, @@ -1304,15 +1366,6 @@ const struct LevelUpMove *const gLevelUpLearnsets[NUM_SPECIES] = [SPECIES_SINISTEA_ANTIQUE] = sSinisteaLevelUpLearnset, // Polteageist [SPECIES_POLTEAGEIST_ANTIQUE] = sPolteageistLevelUpLearnset, - // Alcremie - [SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM] = sAlcremieLevelUpLearnset, - [SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM] = sAlcremieLevelUpLearnset, - [SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM] = sAlcremieLevelUpLearnset, - [SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM] = sAlcremieLevelUpLearnset, - [SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM] = sAlcremieLevelUpLearnset, - [SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL] = sAlcremieLevelUpLearnset, - [SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL] = sAlcremieLevelUpLearnset, - [SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL] = sAlcremieLevelUpLearnset, // Eiscue [SPECIES_EISCUE_NOICE_FACE] = sEiscueLevelUpLearnset, // Indeedee diff --git a/src/data/pokemon/species_info.h b/src/data/pokemon/species_info.h index 7d1d108631..01bc20e46a 100644 --- a/src/data/pokemon/species_info.h +++ b/src/data/pokemon/species_info.h @@ -1315,26 +1315,6 @@ .bodyColor = BODY_COLOR_PURPLE, \ .noFlip = FALSE -#define ALCREMIE_MISC_INFO(color) \ - .baseHP = 65, \ - .baseAttack = 60, \ - .baseDefense = 75, \ - .baseSpeed = 64, \ - .baseSpAttack = 110, \ - .baseSpDefense = 121, \ - .types = { TYPE_FAIRY, TYPE_FAIRY}, \ - .catchRate = 100, \ - .expYield = 173, \ - .evYield_SpDefense = 2, \ - .genderRatio = MON_FEMALE, \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_AMORPHOUS}, \ - .abilities = {ABILITY_SWEET_VEIL, ABILITY_NONE, ABILITY_AROMA_VEIL},\ - .bodyColor = color, \ - .noFlip = FALSE - #define MORPEKO_SPECIES_INFO \ { \ .baseHP = 58, \ @@ -20428,8 +20408,93 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM] = { ALCREMIE_MISC_INFO(BODY_COLOR_WHITE) }, +#define ALCREMIE_MISC_INFO(color) \ + .baseHP = 65, \ + .baseAttack = 60, \ + .baseDefense = 75, \ + .baseSpeed = 64, \ + .baseSpAttack = 110, \ + .baseSpDefense = 121, \ + .types = { TYPE_FAIRY, TYPE_FAIRY}, \ + .catchRate = 100, \ + .expYield = 173, \ + .evYield_SpDefense = 2, \ + .genderRatio = MON_FEMALE, \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_AMORPHOUS}, \ + .abilities = {ABILITY_SWEET_VEIL, ABILITY_NONE, ABILITY_AROMA_VEIL},\ + .bodyColor = color, \ + .noFlip = FALSE +// For later +#define ALCREMIE_REGULAR_MISC_INFO(color, sweet, cream) \ + ALCREMIE_MISC_INFO(color) + + [SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_WHITE, Strawberry, VanillaCream), }, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_PINK, Strawberry, RubyCream), }, + [SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_GREEN, Strawberry, MatchaCream), }, + [SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_BLUE, Strawberry, MintCream), }, + [SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_YELLOW, Strawberry, LemonCream), }, + [SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_WHITE, Strawberry, SaltedCream), }, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_YELLOW, Strawberry, RubySwirl), }, + [SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_BROWN, Strawberry, CaramelSwirl), }, + [SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_YELLOW, Strawberry, RainbowSwirl), }, + [SPECIES_ALCREMIE_BERRY_VANILLA_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_WHITE, Berry, VanillaCream) }, + [SPECIES_ALCREMIE_BERRY_RUBY_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_PINK, Berry, RubyCream) }, + [SPECIES_ALCREMIE_BERRY_MATCHA_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_GREEN, Berry, MatchaCream), }, + [SPECIES_ALCREMIE_BERRY_MINT_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_BLUE, Berry, MintCream), }, + [SPECIES_ALCREMIE_BERRY_LEMON_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_YELLOW, Berry, LemonCream), }, + [SPECIES_ALCREMIE_BERRY_SALTED_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_WHITE, Berry, SaltedCream), }, + [SPECIES_ALCREMIE_BERRY_RUBY_SWIRL] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_YELLOW, Berry, RubySwirl), }, + [SPECIES_ALCREMIE_BERRY_CARAMEL_SWIRL] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_BROWN, Berry, CaramelSwirl), }, + [SPECIES_ALCREMIE_BERRY_RAINBOW_SWIRL] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_YELLOW, Berry, RainbowSwirl), }, + [SPECIES_ALCREMIE_LOVE_VANILLA_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_WHITE, Love, VanillaCream) }, + [SPECIES_ALCREMIE_LOVE_RUBY_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_PINK, Love, RubyCream) }, + [SPECIES_ALCREMIE_LOVE_MATCHA_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_GREEN, Love, MatchaCream), }, + [SPECIES_ALCREMIE_LOVE_MINT_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_BLUE, Love, MintCream), }, + [SPECIES_ALCREMIE_LOVE_LEMON_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_YELLOW, Love, LemonCream), }, + [SPECIES_ALCREMIE_LOVE_SALTED_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_WHITE, Love, SaltedCream), }, + [SPECIES_ALCREMIE_LOVE_RUBY_SWIRL] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_YELLOW, Love, RubySwirl), }, + [SPECIES_ALCREMIE_LOVE_CARAMEL_SWIRL] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_BROWN, Love, CaramelSwirl), }, + [SPECIES_ALCREMIE_LOVE_RAINBOW_SWIRL] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_YELLOW, Love, RainbowSwirl), }, + [SPECIES_ALCREMIE_STAR_VANILLA_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_WHITE, Star, VanillaCream) }, + [SPECIES_ALCREMIE_STAR_RUBY_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_PINK, Star, RubyCream) }, + [SPECIES_ALCREMIE_STAR_MATCHA_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_GREEN, Star, MatchaCream), }, + [SPECIES_ALCREMIE_STAR_MINT_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_BLUE, Star, MintCream), }, + [SPECIES_ALCREMIE_STAR_LEMON_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_YELLOW, Star, LemonCream), }, + [SPECIES_ALCREMIE_STAR_SALTED_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_WHITE, Star, SaltedCream), }, + [SPECIES_ALCREMIE_STAR_RUBY_SWIRL] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_YELLOW, Star, RubySwirl), }, + [SPECIES_ALCREMIE_STAR_CARAMEL_SWIRL] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_BROWN, Star, CaramelSwirl), }, + [SPECIES_ALCREMIE_STAR_RAINBOW_SWIRL] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_YELLOW, Star, RainbowSwirl), }, + [SPECIES_ALCREMIE_CLOVER_VANILLA_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_WHITE, Clover, VanillaCream) }, + [SPECIES_ALCREMIE_CLOVER_RUBY_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_PINK, Clover, RubyCream) }, + [SPECIES_ALCREMIE_CLOVER_MATCHA_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_GREEN, Clover, MatchaCream), }, + [SPECIES_ALCREMIE_CLOVER_MINT_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_BLUE, Clover, MintCream), }, + [SPECIES_ALCREMIE_CLOVER_LEMON_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_YELLOW, Clover, LemonCream), }, + [SPECIES_ALCREMIE_CLOVER_SALTED_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_WHITE, Clover, SaltedCream), }, + [SPECIES_ALCREMIE_CLOVER_RUBY_SWIRL] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_YELLOW, Clover, RubySwirl), }, + [SPECIES_ALCREMIE_CLOVER_CARAMEL_SWIRL] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_BROWN, Clover, CaramelSwirl), }, + [SPECIES_ALCREMIE_CLOVER_RAINBOW_SWIRL] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_YELLOW, Clover, RainbowSwirl), }, + [SPECIES_ALCREMIE_FLOWER_VANILLA_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_WHITE, Flower, VanillaCream) }, + [SPECIES_ALCREMIE_FLOWER_RUBY_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_PINK, Flower, RubyCream) }, + [SPECIES_ALCREMIE_FLOWER_MATCHA_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_GREEN, Flower, MatchaCream), }, + [SPECIES_ALCREMIE_FLOWER_MINT_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_BLUE, Flower, MintCream), }, + [SPECIES_ALCREMIE_FLOWER_LEMON_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_YELLOW, Flower, LemonCream), }, + [SPECIES_ALCREMIE_FLOWER_SALTED_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_WHITE, Flower, SaltedCream), }, + [SPECIES_ALCREMIE_FLOWER_RUBY_SWIRL] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_YELLOW, Flower, RubySwirl), }, + [SPECIES_ALCREMIE_FLOWER_CARAMEL_SWIRL] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_BROWN, Flower, CaramelSwirl), }, + [SPECIES_ALCREMIE_FLOWER_RAINBOW_SWIRL] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_YELLOW, Flower, RainbowSwirl), }, + [SPECIES_ALCREMIE_RIBBON_VANILLA_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_WHITE, Ribbon, VanillaCream) }, + [SPECIES_ALCREMIE_RIBBON_RUBY_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_PINK, Ribbon, RubyCream) }, + [SPECIES_ALCREMIE_RIBBON_MATCHA_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_GREEN, Ribbon, MatchaCream), }, + [SPECIES_ALCREMIE_RIBBON_MINT_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_BLUE, Ribbon, MintCream), }, + [SPECIES_ALCREMIE_RIBBON_LEMON_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_YELLOW, Ribbon, LemonCream), }, + [SPECIES_ALCREMIE_RIBBON_SALTED_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_WHITE, Ribbon, SaltedCream), }, + [SPECIES_ALCREMIE_RIBBON_RUBY_SWIRL] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_YELLOW, Ribbon, RubySwirl), }, + [SPECIES_ALCREMIE_RIBBON_CARAMEL_SWIRL] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_BROWN, Ribbon, CaramelSwirl), }, + [SPECIES_ALCREMIE_RIBBON_RAINBOW_SWIRL] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_YELLOW, Ribbon, RainbowSwirl), }, [SPECIES_FALINKS] = { .baseHP = 65, @@ -24636,15 +24701,6 @@ const struct SpeciesInfo gSpeciesInfo[] = [SPECIES_POLTEAGEIST_ANTIQUE] = POLTEAGEIST_SPECIES_INFO, - [SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM] = { ALCREMIE_MISC_INFO(BODY_COLOR_PINK) }, - [SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM] = { ALCREMIE_MISC_INFO(BODY_COLOR_GREEN) }, - [SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM] = { ALCREMIE_MISC_INFO(BODY_COLOR_BLUE) }, - [SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM] = { ALCREMIE_MISC_INFO(BODY_COLOR_YELLOW) }, - [SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM] = { ALCREMIE_MISC_INFO(BODY_COLOR_WHITE) }, - [SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL] = { ALCREMIE_MISC_INFO(BODY_COLOR_YELLOW) }, - [SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL] = { ALCREMIE_MISC_INFO(BODY_COLOR_BROWN) }, - [SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL] = { ALCREMIE_MISC_INFO(BODY_COLOR_YELLOW) }, - [SPECIES_EISCUE_NOICE_FACE] = { .baseHP = 75, diff --git a/src/data/pokemon/teachable_learnset_pointers.h b/src/data/pokemon/teachable_learnset_pointers.h index 8d00b8f05c..4bcb7b0a7f 100644 --- a/src/data/pokemon/teachable_learnset_pointers.h +++ b/src/data/pokemon/teachable_learnset_pointers.h @@ -879,6 +879,68 @@ const u16 *const gTeachableLearnsets[NUM_SPECIES] = [SPECIES_RUNERIGUS] = sRunerigusTeachableLearnset, [SPECIES_MILCERY] = sMilceryTeachableLearnset, [SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_BERRY_VANILLA_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_BERRY_RUBY_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_BERRY_MATCHA_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_BERRY_MINT_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_BERRY_LEMON_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_BERRY_SALTED_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_BERRY_RUBY_SWIRL] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_BERRY_CARAMEL_SWIRL] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_BERRY_RAINBOW_SWIRL] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_LOVE_VANILLA_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_LOVE_RUBY_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_LOVE_MATCHA_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_LOVE_MINT_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_LOVE_LEMON_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_LOVE_SALTED_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_LOVE_RUBY_SWIRL] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_LOVE_CARAMEL_SWIRL] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_LOVE_RAINBOW_SWIRL] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_STAR_VANILLA_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_STAR_RUBY_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_STAR_MATCHA_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_STAR_MINT_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_STAR_LEMON_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_STAR_SALTED_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_STAR_RUBY_SWIRL] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_STAR_CARAMEL_SWIRL] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_STAR_RAINBOW_SWIRL] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_CLOVER_VANILLA_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_CLOVER_RUBY_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_CLOVER_MATCHA_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_CLOVER_MINT_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_CLOVER_LEMON_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_CLOVER_SALTED_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_CLOVER_RUBY_SWIRL] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_CLOVER_CARAMEL_SWIRL] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_CLOVER_RAINBOW_SWIRL] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_FLOWER_VANILLA_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_FLOWER_RUBY_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_FLOWER_MATCHA_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_FLOWER_MINT_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_FLOWER_LEMON_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_FLOWER_SALTED_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_FLOWER_RUBY_SWIRL] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_FLOWER_CARAMEL_SWIRL] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_FLOWER_RAINBOW_SWIRL] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_RIBBON_VANILLA_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_RIBBON_RUBY_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_RIBBON_MATCHA_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_RIBBON_MINT_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_RIBBON_LEMON_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_RIBBON_SALTED_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_RIBBON_RUBY_SWIRL] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_RIBBON_CARAMEL_SWIRL] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_RIBBON_RAINBOW_SWIRL] = sAlcremieTeachableLearnset, [SPECIES_FALINKS] = sFalinksTeachableLearnset, [SPECIES_PINCURCHIN] = sPincurchinTeachableLearnset, [SPECIES_SNOM] = sSnomTeachableLearnset, @@ -1304,15 +1366,6 @@ const u16 *const gTeachableLearnsets[NUM_SPECIES] = [SPECIES_SINISTEA_ANTIQUE] = sSinisteaTeachableLearnset, // Polteageist [SPECIES_POLTEAGEIST_ANTIQUE] = sPolteageistTeachableLearnset, - // Alcremie - [SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM] = sAlcremieTeachableLearnset, - [SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM] = sAlcremieTeachableLearnset, - [SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM] = sAlcremieTeachableLearnset, - [SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM] = sAlcremieTeachableLearnset, - [SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM] = sAlcremieTeachableLearnset, - [SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL] = sAlcremieTeachableLearnset, - [SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL] = sAlcremieTeachableLearnset, - [SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL] = sAlcremieTeachableLearnset, // Eiscue [SPECIES_EISCUE_NOICE_FACE] = sEiscueTeachableLearnset, // Indeedee diff --git a/src/data/pokemon_graphics/back_pic_coordinates.h b/src/data/pokemon_graphics/back_pic_coordinates.h index 740b871b83..cc41afe991 100644 --- a/src/data/pokemon_graphics/back_pic_coordinates.h +++ b/src/data/pokemon_graphics/back_pic_coordinates.h @@ -902,6 +902,68 @@ const struct MonCoords gMonBackPicCoords[NUM_SPECIES + 1] = [SPECIES_RUNERIGUS] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 9 }, [SPECIES_MILCERY] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 16 }, [SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_BERRY_VANILLA_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_BERRY_RUBY_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_BERRY_MATCHA_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_BERRY_MINT_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_BERRY_LEMON_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_BERRY_SALTED_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_BERRY_RUBY_SWIRL] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_BERRY_CARAMEL_SWIRL] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_BERRY_RAINBOW_SWIRL] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_LOVE_VANILLA_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_LOVE_RUBY_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_LOVE_MATCHA_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_LOVE_MINT_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_LOVE_LEMON_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_LOVE_SALTED_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_LOVE_RUBY_SWIRL] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_LOVE_CARAMEL_SWIRL] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_LOVE_RAINBOW_SWIRL] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_STAR_VANILLA_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_STAR_RUBY_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_STAR_MATCHA_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_STAR_MINT_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_STAR_LEMON_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_STAR_SALTED_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_STAR_RUBY_SWIRL] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_STAR_CARAMEL_SWIRL] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_STAR_RAINBOW_SWIRL] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_CLOVER_VANILLA_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_CLOVER_RUBY_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_CLOVER_MATCHA_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_CLOVER_MINT_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_CLOVER_LEMON_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_CLOVER_SALTED_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_CLOVER_RUBY_SWIRL] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_CLOVER_CARAMEL_SWIRL] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_CLOVER_RAINBOW_SWIRL] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_FLOWER_VANILLA_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_FLOWER_RUBY_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_FLOWER_MATCHA_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_FLOWER_MINT_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_FLOWER_LEMON_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_FLOWER_SALTED_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_FLOWER_RUBY_SWIRL] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_FLOWER_CARAMEL_SWIRL] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_FLOWER_RAINBOW_SWIRL] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_RIBBON_VANILLA_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_RIBBON_RUBY_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_RIBBON_MATCHA_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_RIBBON_MINT_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_RIBBON_LEMON_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_RIBBON_SALTED_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_RIBBON_RUBY_SWIRL] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_RIBBON_CARAMEL_SWIRL] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_RIBBON_RAINBOW_SWIRL] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, [SPECIES_FALINKS] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 15 }, [SPECIES_PINCURCHIN] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 13 }, [SPECIES_SNOM] = { .size = MON_COORDS_SIZE(48, 32), .y_offset = 17 }, @@ -1326,15 +1388,6 @@ const struct MonCoords gMonBackPicCoords[NUM_SPECIES + 1] = [SPECIES_SINISTEA_ANTIQUE] = { .size = MON_COORDS_SIZE(48, 32), .y_offset = 16 }, // Polteageist [SPECIES_POLTEAGEIST_ANTIQUE] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 13 }, - // Alcremie - [SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, - [SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, - [SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, - [SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, - [SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, - [SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, - [SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, - [SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, // Eiscue [SPECIES_EISCUE_NOICE_FACE] = { .size = MON_COORDS_SIZE(40, 64), .y_offset = 0 }, // Indeedee diff --git a/src/data/pokemon_graphics/back_pic_table.h b/src/data/pokemon_graphics/back_pic_table.h index bdab1335ea..4add012701 100644 --- a/src/data/pokemon_graphics/back_pic_table.h +++ b/src/data/pokemon_graphics/back_pic_table.h @@ -878,7 +878,69 @@ const struct CompressedSpriteSheet gMonBackPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(MR_RIME, gMonBackPic_MrRime), SPECIES_SPRITE(RUNERIGUS, gMonBackPic_Runerigus), SPECIES_SPRITE(MILCERY, gMonBackPic_Milcery), - SPECIES_SPRITE(ALCREMIE, gMonBackPic_Alcremie), + SPECIES_SPRITE(ALCREMIE_STRAWBERRY_VANILLA_CREAM, gMonBackPic_AlcremieStrawberry), + SPECIES_SPRITE(ALCREMIE_STRAWBERRY_RUBY_CREAM, gMonBackPic_AlcremieStrawberry), + SPECIES_SPRITE(ALCREMIE_STRAWBERRY_MATCHA_CREAM, gMonBackPic_AlcremieStrawberry), + SPECIES_SPRITE(ALCREMIE_STRAWBERRY_MINT_CREAM, gMonBackPic_AlcremieStrawberry), + SPECIES_SPRITE(ALCREMIE_STRAWBERRY_LEMON_CREAM, gMonBackPic_AlcremieStrawberry), + SPECIES_SPRITE(ALCREMIE_STRAWBERRY_SALTED_CREAM, gMonBackPic_AlcremieStrawberry), + SPECIES_SPRITE(ALCREMIE_STRAWBERRY_RUBY_SWIRL, gMonBackPic_AlcremieStrawberry), + SPECIES_SPRITE(ALCREMIE_STRAWBERRY_CARAMEL_SWIRL, gMonBackPic_AlcremieStrawberry), + SPECIES_SPRITE(ALCREMIE_STRAWBERRY_RAINBOW_SWIRL, gMonBackPic_AlcremieStrawberry), + SPECIES_SPRITE(ALCREMIE_BERRY_VANILLA_CREAM, gMonBackPic_AlcremieBerry), + SPECIES_SPRITE(ALCREMIE_BERRY_RUBY_CREAM, gMonBackPic_AlcremieBerry), + SPECIES_SPRITE(ALCREMIE_BERRY_MATCHA_CREAM, gMonBackPic_AlcremieBerry), + SPECIES_SPRITE(ALCREMIE_BERRY_MINT_CREAM, gMonBackPic_AlcremieBerry), + SPECIES_SPRITE(ALCREMIE_BERRY_LEMON_CREAM, gMonBackPic_AlcremieBerry), + SPECIES_SPRITE(ALCREMIE_BERRY_SALTED_CREAM, gMonBackPic_AlcremieBerry), + SPECIES_SPRITE(ALCREMIE_BERRY_RUBY_SWIRL, gMonBackPic_AlcremieBerry), + SPECIES_SPRITE(ALCREMIE_BERRY_CARAMEL_SWIRL, gMonBackPic_AlcremieBerry), + SPECIES_SPRITE(ALCREMIE_BERRY_RAINBOW_SWIRL, gMonBackPic_AlcremieBerry), + SPECIES_SPRITE(ALCREMIE_LOVE_VANILLA_CREAM, gMonBackPic_AlcremieLove), + SPECIES_SPRITE(ALCREMIE_LOVE_RUBY_CREAM, gMonBackPic_AlcremieLove), + SPECIES_SPRITE(ALCREMIE_LOVE_MATCHA_CREAM, gMonBackPic_AlcremieLove), + SPECIES_SPRITE(ALCREMIE_LOVE_MINT_CREAM, gMonBackPic_AlcremieLove), + SPECIES_SPRITE(ALCREMIE_LOVE_LEMON_CREAM, gMonBackPic_AlcremieLove), + SPECIES_SPRITE(ALCREMIE_LOVE_SALTED_CREAM, gMonBackPic_AlcremieLove), + SPECIES_SPRITE(ALCREMIE_LOVE_RUBY_SWIRL, gMonBackPic_AlcremieLove), + SPECIES_SPRITE(ALCREMIE_LOVE_CARAMEL_SWIRL, gMonBackPic_AlcremieLove), + SPECIES_SPRITE(ALCREMIE_LOVE_RAINBOW_SWIRL, gMonBackPic_AlcremieLove), + SPECIES_SPRITE(ALCREMIE_STAR_VANILLA_CREAM, gMonBackPic_AlcremieStar), + SPECIES_SPRITE(ALCREMIE_STAR_RUBY_CREAM, gMonBackPic_AlcremieStar), + SPECIES_SPRITE(ALCREMIE_STAR_MATCHA_CREAM, gMonBackPic_AlcremieStar), + SPECIES_SPRITE(ALCREMIE_STAR_MINT_CREAM, gMonBackPic_AlcremieStar), + SPECIES_SPRITE(ALCREMIE_STAR_LEMON_CREAM, gMonBackPic_AlcremieStar), + SPECIES_SPRITE(ALCREMIE_STAR_SALTED_CREAM, gMonBackPic_AlcremieStar), + SPECIES_SPRITE(ALCREMIE_STAR_RUBY_SWIRL, gMonBackPic_AlcremieStar), + SPECIES_SPRITE(ALCREMIE_STAR_CARAMEL_SWIRL, gMonBackPic_AlcremieStar), + SPECIES_SPRITE(ALCREMIE_STAR_RAINBOW_SWIRL, gMonBackPic_AlcremieStar), + SPECIES_SPRITE(ALCREMIE_CLOVER_VANILLA_CREAM, gMonBackPic_AlcremieClover), + SPECIES_SPRITE(ALCREMIE_CLOVER_RUBY_CREAM, gMonBackPic_AlcremieClover), + SPECIES_SPRITE(ALCREMIE_CLOVER_MATCHA_CREAM, gMonBackPic_AlcremieClover), + SPECIES_SPRITE(ALCREMIE_CLOVER_MINT_CREAM, gMonBackPic_AlcremieClover), + SPECIES_SPRITE(ALCREMIE_CLOVER_LEMON_CREAM, gMonBackPic_AlcremieClover), + SPECIES_SPRITE(ALCREMIE_CLOVER_SALTED_CREAM, gMonBackPic_AlcremieClover), + SPECIES_SPRITE(ALCREMIE_CLOVER_RUBY_SWIRL, gMonBackPic_AlcremieClover), + SPECIES_SPRITE(ALCREMIE_CLOVER_CARAMEL_SWIRL, gMonBackPic_AlcremieClover), + SPECIES_SPRITE(ALCREMIE_CLOVER_RAINBOW_SWIRL, gMonBackPic_AlcremieClover), + SPECIES_SPRITE(ALCREMIE_FLOWER_VANILLA_CREAM, gMonBackPic_AlcremieFlower), + SPECIES_SPRITE(ALCREMIE_FLOWER_RUBY_CREAM, gMonBackPic_AlcremieFlower), + SPECIES_SPRITE(ALCREMIE_FLOWER_MATCHA_CREAM, gMonBackPic_AlcremieFlower), + SPECIES_SPRITE(ALCREMIE_FLOWER_MINT_CREAM, gMonBackPic_AlcremieFlower), + SPECIES_SPRITE(ALCREMIE_FLOWER_LEMON_CREAM, gMonBackPic_AlcremieFlower), + SPECIES_SPRITE(ALCREMIE_FLOWER_SALTED_CREAM, gMonBackPic_AlcremieFlower), + SPECIES_SPRITE(ALCREMIE_FLOWER_RUBY_SWIRL, gMonBackPic_AlcremieFlower), + SPECIES_SPRITE(ALCREMIE_FLOWER_CARAMEL_SWIRL, gMonBackPic_AlcremieFlower), + SPECIES_SPRITE(ALCREMIE_FLOWER_RAINBOW_SWIRL, gMonBackPic_AlcremieFlower), + SPECIES_SPRITE(ALCREMIE_RIBBON_VANILLA_CREAM, gMonBackPic_AlcremieRibbon), + SPECIES_SPRITE(ALCREMIE_RIBBON_RUBY_CREAM, gMonBackPic_AlcremieRibbon), + SPECIES_SPRITE(ALCREMIE_RIBBON_MATCHA_CREAM, gMonBackPic_AlcremieRibbon), + SPECIES_SPRITE(ALCREMIE_RIBBON_MINT_CREAM, gMonBackPic_AlcremieRibbon), + SPECIES_SPRITE(ALCREMIE_RIBBON_LEMON_CREAM, gMonBackPic_AlcremieRibbon), + SPECIES_SPRITE(ALCREMIE_RIBBON_SALTED_CREAM, gMonBackPic_AlcremieRibbon), + SPECIES_SPRITE(ALCREMIE_RIBBON_RUBY_SWIRL, gMonBackPic_AlcremieRibbon), + SPECIES_SPRITE(ALCREMIE_RIBBON_CARAMEL_SWIRL, gMonBackPic_AlcremieRibbon), + SPECIES_SPRITE(ALCREMIE_RIBBON_RAINBOW_SWIRL, gMonBackPic_AlcremieRibbon), SPECIES_SPRITE(FALINKS, gMonBackPic_Falinks), SPECIES_SPRITE(PINCURCHIN, gMonBackPic_Pincurchin), SPECIES_SPRITE(SNOM, gMonBackPic_Snom), @@ -1303,15 +1365,6 @@ const struct CompressedSpriteSheet gMonBackPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(POLTEAGEIST_ANTIQUE, gMonBackPic_Polteageist), - SPECIES_SPRITE(ALCREMIE_RUBY_CREAM, gMonBackPic_AlcremieRubyCream), - SPECIES_SPRITE(ALCREMIE_MATCHA_CREAM, gMonBackPic_AlcremieMatchaCream), - SPECIES_SPRITE(ALCREMIE_MINT_CREAM, gMonBackPic_AlcremieMintCream), - SPECIES_SPRITE(ALCREMIE_LEMON_CREAM, gMonBackPic_AlcremieLemonCream), - SPECIES_SPRITE(ALCREMIE_SALTED_CREAM, gMonBackPic_AlcremieSaltedCream), - SPECIES_SPRITE(ALCREMIE_RUBY_SWIRL, gMonBackPic_AlcremieRubySwirl), - SPECIES_SPRITE(ALCREMIE_CARAMEL_SWIRL, gMonBackPic_AlcremieCaramelSwirl), - SPECIES_SPRITE(ALCREMIE_RAINBOW_SWIRL, gMonBackPic_AlcremieRainbowSwirl), - SPECIES_SPRITE(EISCUE_NOICE_FACE, gMonBackPic_EiscueNoiceFace), SPECIES_SPRITE(INDEEDEE_FEMALE, gMonBackPic_IndeedeeFemale), diff --git a/src/data/pokemon_graphics/footprint_table.h b/src/data/pokemon_graphics/footprint_table.h index 67e88c6d3d..63800aabd8 100644 --- a/src/data/pokemon_graphics/footprint_table.h +++ b/src/data/pokemon_graphics/footprint_table.h @@ -879,6 +879,68 @@ const u8 *const gMonFootprintTable[NUM_SPECIES + 1] = [SPECIES_RUNERIGUS] = gMonFootprint_Runerigus, [SPECIES_MILCERY] = gMonFootprint_Milcery, [SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_BERRY_VANILLA_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_BERRY_RUBY_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_BERRY_MATCHA_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_BERRY_MINT_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_BERRY_LEMON_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_BERRY_SALTED_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_BERRY_RUBY_SWIRL] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_BERRY_CARAMEL_SWIRL] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_BERRY_RAINBOW_SWIRL] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_LOVE_VANILLA_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_LOVE_RUBY_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_LOVE_MATCHA_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_LOVE_MINT_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_LOVE_LEMON_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_LOVE_SALTED_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_LOVE_RUBY_SWIRL] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_LOVE_CARAMEL_SWIRL] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_LOVE_RAINBOW_SWIRL] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_STAR_VANILLA_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_STAR_RUBY_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_STAR_MATCHA_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_STAR_MINT_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_STAR_LEMON_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_STAR_SALTED_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_STAR_RUBY_SWIRL] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_STAR_CARAMEL_SWIRL] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_STAR_RAINBOW_SWIRL] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_CLOVER_VANILLA_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_CLOVER_RUBY_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_CLOVER_MATCHA_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_CLOVER_MINT_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_CLOVER_LEMON_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_CLOVER_SALTED_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_CLOVER_RUBY_SWIRL] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_CLOVER_CARAMEL_SWIRL] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_CLOVER_RAINBOW_SWIRL] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_FLOWER_VANILLA_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_FLOWER_RUBY_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_FLOWER_MATCHA_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_FLOWER_MINT_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_FLOWER_LEMON_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_FLOWER_SALTED_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_FLOWER_RUBY_SWIRL] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_FLOWER_CARAMEL_SWIRL] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_FLOWER_RAINBOW_SWIRL] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_RIBBON_VANILLA_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_RIBBON_RUBY_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_RIBBON_MATCHA_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_RIBBON_MINT_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_RIBBON_LEMON_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_RIBBON_SALTED_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_RIBBON_RUBY_SWIRL] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_RIBBON_CARAMEL_SWIRL] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_RIBBON_RAINBOW_SWIRL] = gMonFootprint_Alcremie, [SPECIES_FALINKS] = gMonFootprint_Falinks, [SPECIES_PINCURCHIN] = gMonFootprint_Pincurchin, [SPECIES_SNOM] = gMonFootprint_Snom, diff --git a/src/data/pokemon_graphics/front_pic_anims.h b/src/data/pokemon_graphics/front_pic_anims.h index 9a8f450f80..66692cf0b7 100644 --- a/src/data/pokemon_graphics/front_pic_anims.h +++ b/src/data/pokemon_graphics/front_pic_anims.h @@ -12822,6 +12822,68 @@ const union AnimCmd *const *const gMonFrontAnimsPtrTable[NUM_SPECIES + 1] = [SPECIES_RUNERIGUS] = sAnims_Runerigus, [SPECIES_MILCERY] = sAnims_Milcery, [SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL] = sAnims_Alcremie, + [SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL] = sAnims_Alcremie, + [SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL] = sAnims_Alcremie, + [SPECIES_ALCREMIE_BERRY_VANILLA_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_BERRY_RUBY_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_BERRY_MATCHA_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_BERRY_MINT_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_BERRY_LEMON_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_BERRY_SALTED_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_BERRY_RUBY_SWIRL] = sAnims_Alcremie, + [SPECIES_ALCREMIE_BERRY_CARAMEL_SWIRL] = sAnims_Alcremie, + [SPECIES_ALCREMIE_BERRY_RAINBOW_SWIRL] = sAnims_Alcremie, + [SPECIES_ALCREMIE_LOVE_VANILLA_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_LOVE_RUBY_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_LOVE_MATCHA_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_LOVE_MINT_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_LOVE_LEMON_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_LOVE_SALTED_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_LOVE_RUBY_SWIRL] = sAnims_Alcremie, + [SPECIES_ALCREMIE_LOVE_CARAMEL_SWIRL] = sAnims_Alcremie, + [SPECIES_ALCREMIE_LOVE_RAINBOW_SWIRL] = sAnims_Alcremie, + [SPECIES_ALCREMIE_STAR_VANILLA_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_STAR_RUBY_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_STAR_MATCHA_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_STAR_MINT_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_STAR_LEMON_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_STAR_SALTED_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_STAR_RUBY_SWIRL] = sAnims_Alcremie, + [SPECIES_ALCREMIE_STAR_CARAMEL_SWIRL] = sAnims_Alcremie, + [SPECIES_ALCREMIE_STAR_RAINBOW_SWIRL] = sAnims_Alcremie, + [SPECIES_ALCREMIE_CLOVER_VANILLA_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_CLOVER_RUBY_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_CLOVER_MATCHA_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_CLOVER_MINT_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_CLOVER_LEMON_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_CLOVER_SALTED_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_CLOVER_RUBY_SWIRL] = sAnims_Alcremie, + [SPECIES_ALCREMIE_CLOVER_CARAMEL_SWIRL] = sAnims_Alcremie, + [SPECIES_ALCREMIE_CLOVER_RAINBOW_SWIRL] = sAnims_Alcremie, + [SPECIES_ALCREMIE_FLOWER_VANILLA_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_FLOWER_RUBY_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_FLOWER_MATCHA_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_FLOWER_MINT_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_FLOWER_LEMON_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_FLOWER_SALTED_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_FLOWER_RUBY_SWIRL] = sAnims_Alcremie, + [SPECIES_ALCREMIE_FLOWER_CARAMEL_SWIRL] = sAnims_Alcremie, + [SPECIES_ALCREMIE_FLOWER_RAINBOW_SWIRL] = sAnims_Alcremie, + [SPECIES_ALCREMIE_RIBBON_VANILLA_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_RIBBON_RUBY_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_RIBBON_MATCHA_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_RIBBON_MINT_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_RIBBON_LEMON_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_RIBBON_SALTED_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_RIBBON_RUBY_SWIRL] = sAnims_Alcremie, + [SPECIES_ALCREMIE_RIBBON_CARAMEL_SWIRL] = sAnims_Alcremie, + [SPECIES_ALCREMIE_RIBBON_RAINBOW_SWIRL] = sAnims_Alcremie, [SPECIES_FALINKS] = sAnims_Falinks, [SPECIES_PINCURCHIN] = sAnims_Pincurchin, [SPECIES_SNOM] = sAnims_Snom, @@ -13196,14 +13258,6 @@ const union AnimCmd *const *const gMonFrontAnimsPtrTable[NUM_SPECIES + 1] = [SPECIES_TOXTRICITY_LOW_KEY] = sAnims_Toxtricity, [SPECIES_SINISTEA_ANTIQUE] = sAnims_Sinistea, [SPECIES_POLTEAGEIST_ANTIQUE] = sAnims_Polteageist, - [SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM] = sAnims_Alcremie, - [SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM] = sAnims_Alcremie, - [SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM] = sAnims_Alcremie, - [SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM] = sAnims_Alcremie, - [SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM] = sAnims_Alcremie, - [SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL] = sAnims_Alcremie, - [SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL] = sAnims_Alcremie, - [SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL] = sAnims_Alcremie, [SPECIES_EISCUE_NOICE_FACE] = sAnims_Eiscue, [SPECIES_INDEEDEE_FEMALE] = sAnims_Indeedee, [SPECIES_MORPEKO_HANGRY] = sAnims_Morpeko, diff --git a/src/data/pokemon_graphics/front_pic_coordinates.h b/src/data/pokemon_graphics/front_pic_coordinates.h index 4bdbb7bc26..ca2482c314 100644 --- a/src/data/pokemon_graphics/front_pic_coordinates.h +++ b/src/data/pokemon_graphics/front_pic_coordinates.h @@ -883,6 +883,68 @@ const struct MonCoords gMonFrontPicCoords[NUM_SPECIES + 1] = [SPECIES_RUNERIGUS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, [SPECIES_MILCERY] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 15 }, [SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_BERRY_VANILLA_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_BERRY_RUBY_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_BERRY_MATCHA_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_BERRY_MINT_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_BERRY_LEMON_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_BERRY_SALTED_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_BERRY_RUBY_SWIRL] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_BERRY_CARAMEL_SWIRL] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_BERRY_RAINBOW_SWIRL] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_LOVE_VANILLA_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_LOVE_RUBY_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_LOVE_MATCHA_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_LOVE_MINT_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_LOVE_LEMON_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_LOVE_SALTED_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_LOVE_RUBY_SWIRL] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_LOVE_CARAMEL_SWIRL] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_LOVE_RAINBOW_SWIRL] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_STAR_VANILLA_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_STAR_RUBY_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_STAR_MATCHA_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_STAR_MINT_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_STAR_LEMON_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_STAR_SALTED_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_STAR_RUBY_SWIRL] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_STAR_CARAMEL_SWIRL] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_STAR_RAINBOW_SWIRL] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_CLOVER_VANILLA_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_CLOVER_RUBY_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_CLOVER_MATCHA_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_CLOVER_MINT_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_CLOVER_LEMON_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_CLOVER_SALTED_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_CLOVER_RUBY_SWIRL] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_CLOVER_CARAMEL_SWIRL] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_CLOVER_RAINBOW_SWIRL] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_FLOWER_VANILLA_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_FLOWER_RUBY_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_FLOWER_MATCHA_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_FLOWER_MINT_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_FLOWER_LEMON_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_FLOWER_SALTED_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_FLOWER_RUBY_SWIRL] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_FLOWER_CARAMEL_SWIRL] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_FLOWER_RAINBOW_SWIRL] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_RIBBON_VANILLA_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_RIBBON_RUBY_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_RIBBON_MATCHA_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_RIBBON_MINT_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_RIBBON_LEMON_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_RIBBON_SALTED_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_RIBBON_RUBY_SWIRL] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_RIBBON_CARAMEL_SWIRL] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_RIBBON_RAINBOW_SWIRL] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, [SPECIES_FALINKS] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 8 }, [SPECIES_PINCURCHIN] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 15 }, [SPECIES_SNOM] = { .size = MON_COORDS_SIZE(40, 32), .y_offset = 20 }, @@ -1309,14 +1371,6 @@ const struct MonCoords gMonFrontPicCoords[NUM_SPECIES + 1] = // Polteageist [SPECIES_POLTEAGEIST_ANTIQUE] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 11 }, // Alcremie - [SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, - [SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, - [SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, - [SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, - [SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, - [SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, - [SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, - [SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, // Eiscue [SPECIES_EISCUE_NOICE_FACE] = { .size = MON_COORDS_SIZE(40, 64), .y_offset = 0 }, // Indeedee diff --git a/src/data/pokemon_graphics/front_pic_table.h b/src/data/pokemon_graphics/front_pic_table.h index 33e82debfe..0c588d0bd9 100644 --- a/src/data/pokemon_graphics/front_pic_table.h +++ b/src/data/pokemon_graphics/front_pic_table.h @@ -878,7 +878,69 @@ const struct CompressedSpriteSheet gMonFrontPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(MR_RIME, gMonFrontPic_MrRime), SPECIES_SPRITE(RUNERIGUS, gMonFrontPic_Runerigus), SPECIES_SPRITE(MILCERY, gMonFrontPic_Milcery), - SPECIES_SPRITE(ALCREMIE, gMonFrontPic_Alcremie), + SPECIES_SPRITE(ALCREMIE_STRAWBERRY_VANILLA_CREAM, gMonFrontPic_AlcremieStrawberry), + SPECIES_SPRITE(ALCREMIE_STRAWBERRY_RUBY_CREAM, gMonFrontPic_AlcremieStrawberry), + SPECIES_SPRITE(ALCREMIE_STRAWBERRY_MATCHA_CREAM, gMonFrontPic_AlcremieStrawberry), + SPECIES_SPRITE(ALCREMIE_STRAWBERRY_MINT_CREAM, gMonFrontPic_AlcremieStrawberry), + SPECIES_SPRITE(ALCREMIE_STRAWBERRY_LEMON_CREAM, gMonFrontPic_AlcremieStrawberry), + SPECIES_SPRITE(ALCREMIE_STRAWBERRY_SALTED_CREAM, gMonFrontPic_AlcremieStrawberry), + SPECIES_SPRITE(ALCREMIE_STRAWBERRY_RUBY_SWIRL, gMonFrontPic_AlcremieStrawberry), + SPECIES_SPRITE(ALCREMIE_STRAWBERRY_CARAMEL_SWIRL, gMonFrontPic_AlcremieStrawberry), + SPECIES_SPRITE(ALCREMIE_STRAWBERRY_RAINBOW_SWIRL, gMonFrontPic_AlcremieStrawberry), + SPECIES_SPRITE(ALCREMIE_BERRY_VANILLA_CREAM, gMonFrontPic_AlcremieBerry), + SPECIES_SPRITE(ALCREMIE_BERRY_RUBY_CREAM, gMonFrontPic_AlcremieBerry), + SPECIES_SPRITE(ALCREMIE_BERRY_MATCHA_CREAM, gMonFrontPic_AlcremieBerry), + SPECIES_SPRITE(ALCREMIE_BERRY_MINT_CREAM, gMonFrontPic_AlcremieBerry), + SPECIES_SPRITE(ALCREMIE_BERRY_LEMON_CREAM, gMonFrontPic_AlcremieBerry), + SPECIES_SPRITE(ALCREMIE_BERRY_SALTED_CREAM, gMonFrontPic_AlcremieBerry), + SPECIES_SPRITE(ALCREMIE_BERRY_RUBY_SWIRL, gMonFrontPic_AlcremieBerry), + SPECIES_SPRITE(ALCREMIE_BERRY_CARAMEL_SWIRL, gMonFrontPic_AlcremieBerry), + SPECIES_SPRITE(ALCREMIE_BERRY_RAINBOW_SWIRL, gMonFrontPic_AlcremieBerry), + SPECIES_SPRITE(ALCREMIE_LOVE_VANILLA_CREAM, gMonFrontPic_AlcremieLove), + SPECIES_SPRITE(ALCREMIE_LOVE_RUBY_CREAM, gMonFrontPic_AlcremieLove), + SPECIES_SPRITE(ALCREMIE_LOVE_MATCHA_CREAM, gMonFrontPic_AlcremieLove), + SPECIES_SPRITE(ALCREMIE_LOVE_MINT_CREAM, gMonFrontPic_AlcremieLove), + SPECIES_SPRITE(ALCREMIE_LOVE_LEMON_CREAM, gMonFrontPic_AlcremieLove), + SPECIES_SPRITE(ALCREMIE_LOVE_SALTED_CREAM, gMonFrontPic_AlcremieLove), + SPECIES_SPRITE(ALCREMIE_LOVE_RUBY_SWIRL, gMonFrontPic_AlcremieLove), + SPECIES_SPRITE(ALCREMIE_LOVE_CARAMEL_SWIRL, gMonFrontPic_AlcremieLove), + SPECIES_SPRITE(ALCREMIE_LOVE_RAINBOW_SWIRL, gMonFrontPic_AlcremieLove), + SPECIES_SPRITE(ALCREMIE_STAR_VANILLA_CREAM, gMonFrontPic_AlcremieStar), + SPECIES_SPRITE(ALCREMIE_STAR_RUBY_CREAM, gMonFrontPic_AlcremieStar), + SPECIES_SPRITE(ALCREMIE_STAR_MATCHA_CREAM, gMonFrontPic_AlcremieStar), + SPECIES_SPRITE(ALCREMIE_STAR_MINT_CREAM, gMonFrontPic_AlcremieStar), + SPECIES_SPRITE(ALCREMIE_STAR_LEMON_CREAM, gMonFrontPic_AlcremieStar), + SPECIES_SPRITE(ALCREMIE_STAR_SALTED_CREAM, gMonFrontPic_AlcremieStar), + SPECIES_SPRITE(ALCREMIE_STAR_RUBY_SWIRL, gMonFrontPic_AlcremieStar), + SPECIES_SPRITE(ALCREMIE_STAR_CARAMEL_SWIRL, gMonFrontPic_AlcremieStar), + SPECIES_SPRITE(ALCREMIE_STAR_RAINBOW_SWIRL, gMonFrontPic_AlcremieStar), + SPECIES_SPRITE(ALCREMIE_CLOVER_VANILLA_CREAM, gMonFrontPic_AlcremieClover), + SPECIES_SPRITE(ALCREMIE_CLOVER_RUBY_CREAM, gMonFrontPic_AlcremieClover), + SPECIES_SPRITE(ALCREMIE_CLOVER_MATCHA_CREAM, gMonFrontPic_AlcremieClover), + SPECIES_SPRITE(ALCREMIE_CLOVER_MINT_CREAM, gMonFrontPic_AlcremieClover), + SPECIES_SPRITE(ALCREMIE_CLOVER_LEMON_CREAM, gMonFrontPic_AlcremieClover), + SPECIES_SPRITE(ALCREMIE_CLOVER_SALTED_CREAM, gMonFrontPic_AlcremieClover), + SPECIES_SPRITE(ALCREMIE_CLOVER_RUBY_SWIRL, gMonFrontPic_AlcremieClover), + SPECIES_SPRITE(ALCREMIE_CLOVER_CARAMEL_SWIRL, gMonFrontPic_AlcremieClover), + SPECIES_SPRITE(ALCREMIE_CLOVER_RAINBOW_SWIRL, gMonFrontPic_AlcremieClover), + SPECIES_SPRITE(ALCREMIE_FLOWER_VANILLA_CREAM, gMonFrontPic_AlcremieFlower), + SPECIES_SPRITE(ALCREMIE_FLOWER_RUBY_CREAM, gMonFrontPic_AlcremieFlower), + SPECIES_SPRITE(ALCREMIE_FLOWER_MATCHA_CREAM, gMonFrontPic_AlcremieFlower), + SPECIES_SPRITE(ALCREMIE_FLOWER_MINT_CREAM, gMonFrontPic_AlcremieFlower), + SPECIES_SPRITE(ALCREMIE_FLOWER_LEMON_CREAM, gMonFrontPic_AlcremieFlower), + SPECIES_SPRITE(ALCREMIE_FLOWER_SALTED_CREAM, gMonFrontPic_AlcremieFlower), + SPECIES_SPRITE(ALCREMIE_FLOWER_RUBY_SWIRL, gMonFrontPic_AlcremieFlower), + SPECIES_SPRITE(ALCREMIE_FLOWER_CARAMEL_SWIRL, gMonFrontPic_AlcremieFlower), + SPECIES_SPRITE(ALCREMIE_FLOWER_RAINBOW_SWIRL, gMonFrontPic_AlcremieFlower), + SPECIES_SPRITE(ALCREMIE_RIBBON_VANILLA_CREAM, gMonFrontPic_AlcremieRibbon), + SPECIES_SPRITE(ALCREMIE_RIBBON_RUBY_CREAM, gMonFrontPic_AlcremieRibbon), + SPECIES_SPRITE(ALCREMIE_RIBBON_MATCHA_CREAM, gMonFrontPic_AlcremieRibbon), + SPECIES_SPRITE(ALCREMIE_RIBBON_MINT_CREAM, gMonFrontPic_AlcremieRibbon), + SPECIES_SPRITE(ALCREMIE_RIBBON_LEMON_CREAM, gMonFrontPic_AlcremieRibbon), + SPECIES_SPRITE(ALCREMIE_RIBBON_SALTED_CREAM, gMonFrontPic_AlcremieRibbon), + SPECIES_SPRITE(ALCREMIE_RIBBON_RUBY_SWIRL, gMonFrontPic_AlcremieRibbon), + SPECIES_SPRITE(ALCREMIE_RIBBON_CARAMEL_SWIRL, gMonFrontPic_AlcremieRibbon), + SPECIES_SPRITE(ALCREMIE_RIBBON_RAINBOW_SWIRL, gMonFrontPic_AlcremieRibbon), SPECIES_SPRITE(FALINKS, gMonFrontPic_Falinks), SPECIES_SPRITE(PINCURCHIN, gMonFrontPic_Pincurchin), SPECIES_SPRITE(SNOM, gMonFrontPic_Snom), @@ -1302,15 +1364,6 @@ const struct CompressedSpriteSheet gMonFrontPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(POLTEAGEIST_ANTIQUE, gMonFrontPic_Polteageist), - SPECIES_SPRITE(ALCREMIE_RUBY_CREAM, gMonFrontPic_AlcremieRubyCream), - SPECIES_SPRITE(ALCREMIE_MATCHA_CREAM, gMonFrontPic_AlcremieMatchaCream), - SPECIES_SPRITE(ALCREMIE_MINT_CREAM, gMonFrontPic_AlcremieMintCream), - SPECIES_SPRITE(ALCREMIE_LEMON_CREAM, gMonFrontPic_AlcremieLemonCream), - SPECIES_SPRITE(ALCREMIE_SALTED_CREAM, gMonFrontPic_AlcremieSaltedCream), - SPECIES_SPRITE(ALCREMIE_RUBY_SWIRL, gMonFrontPic_AlcremieRubySwirl), - SPECIES_SPRITE(ALCREMIE_CARAMEL_SWIRL, gMonFrontPic_AlcremieCaramelSwirl), - SPECIES_SPRITE(ALCREMIE_RAINBOW_SWIRL, gMonFrontPic_AlcremieRainbowSwirl), - SPECIES_SPRITE(EISCUE_NOICE_FACE, gMonFrontPic_EiscueNoiceFace), SPECIES_SPRITE(INDEEDEE_FEMALE, gMonFrontPic_IndeedeeFemale), diff --git a/src/data/pokemon_graphics/palette_table.h b/src/data/pokemon_graphics/palette_table.h index 8e4a9c32b2..35e924768c 100644 --- a/src/data/pokemon_graphics/palette_table.h +++ b/src/data/pokemon_graphics/palette_table.h @@ -878,7 +878,69 @@ const struct CompressedSpritePalette gMonPaletteTable[NUM_SPECIES + 1] = SPECIES_PAL(MR_RIME, gMonPalette_MrRime), SPECIES_PAL(RUNERIGUS, gMonPalette_Runerigus), SPECIES_PAL(MILCERY, gMonPalette_Milcery), - SPECIES_PAL(ALCREMIE, gMonPalette_Alcremie), + SPECIES_PAL(ALCREMIE_STRAWBERRY_VANILLA_CREAM, gMonPalette_AlcremieStrawberryVanillaCream), + SPECIES_PAL(ALCREMIE_STRAWBERRY_RUBY_CREAM, gMonPalette_AlcremieStrawberryRubyCream), + SPECIES_PAL(ALCREMIE_STRAWBERRY_MATCHA_CREAM, gMonPalette_AlcremieStrawberryMatchaCream), + SPECIES_PAL(ALCREMIE_STRAWBERRY_MINT_CREAM, gMonPalette_AlcremieStrawberryMintCream), + SPECIES_PAL(ALCREMIE_STRAWBERRY_LEMON_CREAM, gMonPalette_AlcremieStrawberryLemonCream), + SPECIES_PAL(ALCREMIE_STRAWBERRY_SALTED_CREAM, gMonPalette_AlcremieStrawberrySaltedCream), + SPECIES_PAL(ALCREMIE_STRAWBERRY_RUBY_SWIRL, gMonPalette_AlcremieStrawberryRubySwirl), + SPECIES_PAL(ALCREMIE_STRAWBERRY_CARAMEL_SWIRL, gMonPalette_AlcremieStrawberryCaramelSwirl), + SPECIES_PAL(ALCREMIE_STRAWBERRY_RAINBOW_SWIRL, gMonPalette_AlcremieStrawberryRainbowSwirl), + SPECIES_PAL(ALCREMIE_BERRY_VANILLA_CREAM, gMonPalette_AlcremieBerryVanillaCream), + SPECIES_PAL(ALCREMIE_BERRY_RUBY_CREAM, gMonPalette_AlcremieBerryRubyCream), + SPECIES_PAL(ALCREMIE_BERRY_MATCHA_CREAM, gMonPalette_AlcremieBerryMatchaCream), + SPECIES_PAL(ALCREMIE_BERRY_MINT_CREAM, gMonPalette_AlcremieBerryMintCream), + SPECIES_PAL(ALCREMIE_BERRY_LEMON_CREAM, gMonPalette_AlcremieBerryLemonCream), + SPECIES_PAL(ALCREMIE_BERRY_SALTED_CREAM, gMonPalette_AlcremieBerrySaltedCream), + SPECIES_PAL(ALCREMIE_BERRY_RUBY_SWIRL, gMonPalette_AlcremieBerryRubySwirl), + SPECIES_PAL(ALCREMIE_BERRY_CARAMEL_SWIRL, gMonPalette_AlcremieBerryCaramelSwirl), + SPECIES_PAL(ALCREMIE_BERRY_RAINBOW_SWIRL, gMonPalette_AlcremieBerryRainbowSwirl), + SPECIES_PAL(ALCREMIE_LOVE_VANILLA_CREAM, gMonPalette_AlcremieLoveVanillaCream), + SPECIES_PAL(ALCREMIE_LOVE_RUBY_CREAM, gMonPalette_AlcremieLoveRubyCream), + SPECIES_PAL(ALCREMIE_LOVE_MATCHA_CREAM, gMonPalette_AlcremieLoveMatchaCream), + SPECIES_PAL(ALCREMIE_LOVE_MINT_CREAM, gMonPalette_AlcremieLoveMintCream), + SPECIES_PAL(ALCREMIE_LOVE_LEMON_CREAM, gMonPalette_AlcremieLoveLemonCream), + SPECIES_PAL(ALCREMIE_LOVE_SALTED_CREAM, gMonPalette_AlcremieLoveSaltedCream), + SPECIES_PAL(ALCREMIE_LOVE_RUBY_SWIRL, gMonPalette_AlcremieLoveRubySwirl), + SPECIES_PAL(ALCREMIE_LOVE_CARAMEL_SWIRL, gMonPalette_AlcremieLoveCaramelSwirl), + SPECIES_PAL(ALCREMIE_LOVE_RAINBOW_SWIRL, gMonPalette_AlcremieLoveRainbowSwirl), + SPECIES_PAL(ALCREMIE_STAR_VANILLA_CREAM, gMonPalette_AlcremieStarVanillaCream), + SPECIES_PAL(ALCREMIE_STAR_RUBY_CREAM, gMonPalette_AlcremieStarRubyCream), + SPECIES_PAL(ALCREMIE_STAR_MATCHA_CREAM, gMonPalette_AlcremieStarMatchaCream), + SPECIES_PAL(ALCREMIE_STAR_MINT_CREAM, gMonPalette_AlcremieStarMintCream), + SPECIES_PAL(ALCREMIE_STAR_LEMON_CREAM, gMonPalette_AlcremieStarLemonCream), + SPECIES_PAL(ALCREMIE_STAR_SALTED_CREAM, gMonPalette_AlcremieStarSaltedCream), + SPECIES_PAL(ALCREMIE_STAR_RUBY_SWIRL, gMonPalette_AlcremieStarRubySwirl), + SPECIES_PAL(ALCREMIE_STAR_CARAMEL_SWIRL, gMonPalette_AlcremieStarCaramelSwirl), + SPECIES_PAL(ALCREMIE_STAR_RAINBOW_SWIRL, gMonPalette_AlcremieStarRainbowSwirl), + SPECIES_PAL(ALCREMIE_CLOVER_VANILLA_CREAM, gMonPalette_AlcremieCloverVanillaCream), + SPECIES_PAL(ALCREMIE_CLOVER_RUBY_CREAM, gMonPalette_AlcremieCloverRubyCream), + SPECIES_PAL(ALCREMIE_CLOVER_MATCHA_CREAM, gMonPalette_AlcremieCloverMatchaCream), + SPECIES_PAL(ALCREMIE_CLOVER_MINT_CREAM, gMonPalette_AlcremieCloverMintCream), + SPECIES_PAL(ALCREMIE_CLOVER_LEMON_CREAM, gMonPalette_AlcremieCloverLemonCream), + SPECIES_PAL(ALCREMIE_CLOVER_SALTED_CREAM, gMonPalette_AlcremieCloverSaltedCream), + SPECIES_PAL(ALCREMIE_CLOVER_RUBY_SWIRL, gMonPalette_AlcremieCloverRubySwirl), + SPECIES_PAL(ALCREMIE_CLOVER_CARAMEL_SWIRL, gMonPalette_AlcremieCloverCaramelSwirl), + SPECIES_PAL(ALCREMIE_CLOVER_RAINBOW_SWIRL, gMonPalette_AlcremieCloverRainbowSwirl), + SPECIES_PAL(ALCREMIE_FLOWER_VANILLA_CREAM, gMonPalette_AlcremieFlowerVanillaCream), + SPECIES_PAL(ALCREMIE_FLOWER_RUBY_CREAM, gMonPalette_AlcremieFlowerRubyCream), + SPECIES_PAL(ALCREMIE_FLOWER_MATCHA_CREAM, gMonPalette_AlcremieFlowerMatchaCream), + SPECIES_PAL(ALCREMIE_FLOWER_MINT_CREAM, gMonPalette_AlcremieFlowerMintCream), + SPECIES_PAL(ALCREMIE_FLOWER_LEMON_CREAM, gMonPalette_AlcremieFlowerLemonCream), + SPECIES_PAL(ALCREMIE_FLOWER_SALTED_CREAM, gMonPalette_AlcremieFlowerSaltedCream), + SPECIES_PAL(ALCREMIE_FLOWER_RUBY_SWIRL, gMonPalette_AlcremieFlowerRubySwirl), + SPECIES_PAL(ALCREMIE_FLOWER_CARAMEL_SWIRL, gMonPalette_AlcremieFlowerCaramelSwirl), + SPECIES_PAL(ALCREMIE_FLOWER_RAINBOW_SWIRL, gMonPalette_AlcremieFlowerRainbowSwirl), + SPECIES_PAL(ALCREMIE_RIBBON_VANILLA_CREAM, gMonPalette_AlcremieRibbonVanillaCream), + SPECIES_PAL(ALCREMIE_RIBBON_RUBY_CREAM, gMonPalette_AlcremieRibbonRubyCream), + SPECIES_PAL(ALCREMIE_RIBBON_MATCHA_CREAM, gMonPalette_AlcremieRibbonMatchaCream), + SPECIES_PAL(ALCREMIE_RIBBON_MINT_CREAM, gMonPalette_AlcremieRibbonMintCream), + SPECIES_PAL(ALCREMIE_RIBBON_LEMON_CREAM, gMonPalette_AlcremieRibbonLemonCream), + SPECIES_PAL(ALCREMIE_RIBBON_SALTED_CREAM, gMonPalette_AlcremieRibbonSaltedCream), + SPECIES_PAL(ALCREMIE_RIBBON_RUBY_SWIRL, gMonPalette_AlcremieRibbonRubySwirl), + SPECIES_PAL(ALCREMIE_RIBBON_CARAMEL_SWIRL, gMonPalette_AlcremieRibbonCaramelSwirl), + SPECIES_PAL(ALCREMIE_RIBBON_RAINBOW_SWIRL, gMonPalette_AlcremieRibbonRainbowSwirl), SPECIES_PAL(FALINKS, gMonPalette_Falinks), SPECIES_PAL(PINCURCHIN, gMonPalette_Pincurchin), SPECIES_PAL(SNOM, gMonPalette_Snom), @@ -1303,15 +1365,6 @@ const struct CompressedSpritePalette gMonPaletteTable[NUM_SPECIES + 1] = SPECIES_PAL(POLTEAGEIST_ANTIQUE, gMonPalette_Polteageist), - SPECIES_PAL(ALCREMIE_RUBY_CREAM, gMonPalette_AlcremieRubyCream), - SPECIES_PAL(ALCREMIE_MATCHA_CREAM, gMonPalette_AlcremieMatchaCream), - SPECIES_PAL(ALCREMIE_MINT_CREAM, gMonPalette_AlcremieMintCream), - SPECIES_PAL(ALCREMIE_LEMON_CREAM, gMonPalette_AlcremieLemonCream), - SPECIES_PAL(ALCREMIE_SALTED_CREAM, gMonPalette_AlcremieSaltedCream), - SPECIES_PAL(ALCREMIE_RUBY_SWIRL, gMonPalette_AlcremieRubySwirl), - SPECIES_PAL(ALCREMIE_CARAMEL_SWIRL, gMonPalette_AlcremieCaramelSwirl), - SPECIES_PAL(ALCREMIE_RAINBOW_SWIRL, gMonPalette_AlcremieRainbowSwirl), - SPECIES_PAL(EISCUE_NOICE_FACE, gMonPalette_EiscueNoiceFace), SPECIES_PAL(INDEEDEE_FEMALE, gMonPalette_IndeedeeFemale), diff --git a/src/data/pokemon_graphics/shiny_palette_table.h b/src/data/pokemon_graphics/shiny_palette_table.h index 44a140a8da..1fe68ef19a 100644 --- a/src/data/pokemon_graphics/shiny_palette_table.h +++ b/src/data/pokemon_graphics/shiny_palette_table.h @@ -878,7 +878,69 @@ const struct CompressedSpritePalette gMonShinyPaletteTable[NUM_SPECIES + 1] = SPECIES_SHINY_PAL(MR_RIME, gMonShinyPalette_MrRime), SPECIES_SHINY_PAL(RUNERIGUS, gMonShinyPalette_Runerigus), SPECIES_SHINY_PAL(MILCERY, gMonShinyPalette_Milcery), - SPECIES_SHINY_PAL(ALCREMIE, gMonShinyPalette_Alcremie), + SPECIES_PAL(ALCREMIE_STRAWBERRY_VANILLA_CREAM, gMonShinyPalette_AlcremieStrawberry), + SPECIES_PAL(ALCREMIE_STRAWBERRY_RUBY_CREAM, gMonShinyPalette_AlcremieStrawberry), + SPECIES_PAL(ALCREMIE_STRAWBERRY_MATCHA_CREAM, gMonShinyPalette_AlcremieStrawberry), + SPECIES_PAL(ALCREMIE_STRAWBERRY_MINT_CREAM, gMonShinyPalette_AlcremieStrawberry), + SPECIES_PAL(ALCREMIE_STRAWBERRY_LEMON_CREAM, gMonShinyPalette_AlcremieStrawberry), + SPECIES_PAL(ALCREMIE_STRAWBERRY_SALTED_CREAM, gMonShinyPalette_AlcremieStrawberry), + SPECIES_PAL(ALCREMIE_STRAWBERRY_RUBY_SWIRL, gMonShinyPalette_AlcremieStrawberry), + SPECIES_PAL(ALCREMIE_STRAWBERRY_CARAMEL_SWIRL, gMonShinyPalette_AlcremieStrawberry), + SPECIES_PAL(ALCREMIE_STRAWBERRY_RAINBOW_SWIRL, gMonShinyPalette_AlcremieStrawberry), + SPECIES_PAL(ALCREMIE_BERRY_VANILLA_CREAM, gMonShinyPalette_AlcremieBerry), + SPECIES_PAL(ALCREMIE_BERRY_RUBY_CREAM, gMonShinyPalette_AlcremieBerry), + SPECIES_PAL(ALCREMIE_BERRY_MATCHA_CREAM, gMonShinyPalette_AlcremieBerry), + SPECIES_PAL(ALCREMIE_BERRY_MINT_CREAM, gMonShinyPalette_AlcremieBerry), + SPECIES_PAL(ALCREMIE_BERRY_LEMON_CREAM, gMonShinyPalette_AlcremieBerry), + SPECIES_PAL(ALCREMIE_BERRY_SALTED_CREAM, gMonShinyPalette_AlcremieBerry), + SPECIES_PAL(ALCREMIE_BERRY_RUBY_SWIRL, gMonShinyPalette_AlcremieBerry), + SPECIES_PAL(ALCREMIE_BERRY_CARAMEL_SWIRL, gMonShinyPalette_AlcremieBerry), + SPECIES_PAL(ALCREMIE_BERRY_RAINBOW_SWIRL, gMonShinyPalette_AlcremieBerry), + SPECIES_PAL(ALCREMIE_LOVE_VANILLA_CREAM, gMonShinyPalette_AlcremieLove), + SPECIES_PAL(ALCREMIE_LOVE_RUBY_CREAM, gMonShinyPalette_AlcremieLove), + SPECIES_PAL(ALCREMIE_LOVE_MATCHA_CREAM, gMonShinyPalette_AlcremieLove), + SPECIES_PAL(ALCREMIE_LOVE_MINT_CREAM, gMonShinyPalette_AlcremieLove), + SPECIES_PAL(ALCREMIE_LOVE_LEMON_CREAM, gMonShinyPalette_AlcremieLove), + SPECIES_PAL(ALCREMIE_LOVE_SALTED_CREAM, gMonShinyPalette_AlcremieLove), + SPECIES_PAL(ALCREMIE_LOVE_RUBY_SWIRL, gMonShinyPalette_AlcremieLove), + SPECIES_PAL(ALCREMIE_LOVE_CARAMEL_SWIRL, gMonShinyPalette_AlcremieLove), + SPECIES_PAL(ALCREMIE_LOVE_RAINBOW_SWIRL, gMonShinyPalette_AlcremieLove), + SPECIES_PAL(ALCREMIE_STAR_VANILLA_CREAM, gMonShinyPalette_AlcremieStar), + SPECIES_PAL(ALCREMIE_STAR_RUBY_CREAM, gMonShinyPalette_AlcremieStar), + SPECIES_PAL(ALCREMIE_STAR_MATCHA_CREAM, gMonShinyPalette_AlcremieStar), + SPECIES_PAL(ALCREMIE_STAR_MINT_CREAM, gMonShinyPalette_AlcremieStar), + SPECIES_PAL(ALCREMIE_STAR_LEMON_CREAM, gMonShinyPalette_AlcremieStar), + SPECIES_PAL(ALCREMIE_STAR_SALTED_CREAM, gMonShinyPalette_AlcremieStar), + SPECIES_PAL(ALCREMIE_STAR_RUBY_SWIRL, gMonShinyPalette_AlcremieStar), + SPECIES_PAL(ALCREMIE_STAR_CARAMEL_SWIRL, gMonShinyPalette_AlcremieStar), + SPECIES_PAL(ALCREMIE_STAR_RAINBOW_SWIRL, gMonShinyPalette_AlcremieStar), + SPECIES_PAL(ALCREMIE_CLOVER_VANILLA_CREAM, gMonShinyPalette_AlcremieClover), + SPECIES_PAL(ALCREMIE_CLOVER_RUBY_CREAM, gMonShinyPalette_AlcremieClover), + SPECIES_PAL(ALCREMIE_CLOVER_MATCHA_CREAM, gMonShinyPalette_AlcremieClover), + SPECIES_PAL(ALCREMIE_CLOVER_MINT_CREAM, gMonShinyPalette_AlcremieClover), + SPECIES_PAL(ALCREMIE_CLOVER_LEMON_CREAM, gMonShinyPalette_AlcremieClover), + SPECIES_PAL(ALCREMIE_CLOVER_SALTED_CREAM, gMonShinyPalette_AlcremieClover), + SPECIES_PAL(ALCREMIE_CLOVER_RUBY_SWIRL, gMonShinyPalette_AlcremieClover), + SPECIES_PAL(ALCREMIE_CLOVER_CARAMEL_SWIRL, gMonShinyPalette_AlcremieClover), + SPECIES_PAL(ALCREMIE_CLOVER_RAINBOW_SWIRL, gMonShinyPalette_AlcremieClover), + SPECIES_PAL(ALCREMIE_FLOWER_VANILLA_CREAM, gMonShinyPalette_AlcremieFlower), + SPECIES_PAL(ALCREMIE_FLOWER_RUBY_CREAM, gMonShinyPalette_AlcremieFlower), + SPECIES_PAL(ALCREMIE_FLOWER_MATCHA_CREAM, gMonShinyPalette_AlcremieFlower), + SPECIES_PAL(ALCREMIE_FLOWER_MINT_CREAM, gMonShinyPalette_AlcremieFlower), + SPECIES_PAL(ALCREMIE_FLOWER_LEMON_CREAM, gMonShinyPalette_AlcremieFlower), + SPECIES_PAL(ALCREMIE_FLOWER_SALTED_CREAM, gMonShinyPalette_AlcremieFlower), + SPECIES_PAL(ALCREMIE_FLOWER_RUBY_SWIRL, gMonShinyPalette_AlcremieFlower), + SPECIES_PAL(ALCREMIE_FLOWER_CARAMEL_SWIRL, gMonShinyPalette_AlcremieFlower), + SPECIES_PAL(ALCREMIE_FLOWER_RAINBOW_SWIRL, gMonShinyPalette_AlcremieFlower), + SPECIES_PAL(ALCREMIE_RIBBON_VANILLA_CREAM, gMonShinyPalette_AlcremieRibbon), + SPECIES_PAL(ALCREMIE_RIBBON_RUBY_CREAM, gMonShinyPalette_AlcremieRibbon), + SPECIES_PAL(ALCREMIE_RIBBON_MATCHA_CREAM, gMonShinyPalette_AlcremieRibbon), + SPECIES_PAL(ALCREMIE_RIBBON_MINT_CREAM, gMonShinyPalette_AlcremieRibbon), + SPECIES_PAL(ALCREMIE_RIBBON_LEMON_CREAM, gMonShinyPalette_AlcremieRibbon), + SPECIES_PAL(ALCREMIE_RIBBON_SALTED_CREAM, gMonShinyPalette_AlcremieRibbon), + SPECIES_PAL(ALCREMIE_RIBBON_RUBY_SWIRL, gMonShinyPalette_AlcremieRibbon), + SPECIES_PAL(ALCREMIE_RIBBON_CARAMEL_SWIRL, gMonShinyPalette_AlcremieRibbon), + SPECIES_PAL(ALCREMIE_RIBBON_RAINBOW_SWIRL, gMonShinyPalette_AlcremieRibbon), SPECIES_SHINY_PAL(FALINKS, gMonShinyPalette_Falinks), SPECIES_SHINY_PAL(PINCURCHIN, gMonShinyPalette_Pincurchin), SPECIES_SHINY_PAL(SNOM, gMonShinyPalette_Snom), @@ -1301,15 +1363,6 @@ const struct CompressedSpritePalette gMonShinyPaletteTable[NUM_SPECIES + 1] = SPECIES_SHINY_PAL(POLTEAGEIST_ANTIQUE, gMonShinyPalette_Polteageist), - SPECIES_SHINY_PAL(ALCREMIE_RUBY_CREAM, gMonShinyPalette_AlcremieRubyCream), - SPECIES_SHINY_PAL(ALCREMIE_MATCHA_CREAM, gMonShinyPalette_AlcremieMatchaCream), - SPECIES_SHINY_PAL(ALCREMIE_MINT_CREAM, gMonShinyPalette_AlcremieMintCream), - SPECIES_SHINY_PAL(ALCREMIE_LEMON_CREAM, gMonShinyPalette_AlcremieLemonCream), - SPECIES_SHINY_PAL(ALCREMIE_SALTED_CREAM, gMonShinyPalette_AlcremieSaltedCream), - SPECIES_SHINY_PAL(ALCREMIE_RUBY_SWIRL, gMonShinyPalette_AlcremieRubySwirl), - SPECIES_SHINY_PAL(ALCREMIE_CARAMEL_SWIRL, gMonShinyPalette_AlcremieCaramelSwirl), - SPECIES_SHINY_PAL(ALCREMIE_RAINBOW_SWIRL, gMonShinyPalette_AlcremieRainbowSwirl), - SPECIES_SHINY_PAL(EISCUE_NOICE_FACE, gMonShinyPalette_EiscueNoiceFace), SPECIES_SHINY_PAL(INDEEDEE_FEMALE, gMonShinyPalette_IndeedeeFemale), diff --git a/src/data/text/species_names.h b/src/data/text/species_names.h index d9da9fd9e8..678d21c11c 100644 --- a/src/data/text/species_names.h +++ b/src/data/text/species_names.h @@ -878,6 +878,68 @@ const u8 gSpeciesNames[NUM_SPECIES][POKEMON_NAME_LENGTH + 1] = { [SPECIES_RUNERIGUS] = _("Runerigus"), [SPECIES_MILCERY] = _("Milcery"), [SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL] = _("Alcremie"), + [SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL] = _("Alcremie"), + [SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL] = _("Alcremie"), + [SPECIES_ALCREMIE_BERRY_VANILLA_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_BERRY_RUBY_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_BERRY_MATCHA_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_BERRY_MINT_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_BERRY_LEMON_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_BERRY_SALTED_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_BERRY_RUBY_SWIRL] = _("Alcremie"), + [SPECIES_ALCREMIE_BERRY_CARAMEL_SWIRL] = _("Alcremie"), + [SPECIES_ALCREMIE_BERRY_RAINBOW_SWIRL] = _("Alcremie"), + [SPECIES_ALCREMIE_LOVE_VANILLA_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_LOVE_RUBY_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_LOVE_MATCHA_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_LOVE_MINT_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_LOVE_LEMON_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_LOVE_SALTED_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_LOVE_RUBY_SWIRL] = _("Alcremie"), + [SPECIES_ALCREMIE_LOVE_CARAMEL_SWIRL] = _("Alcremie"), + [SPECIES_ALCREMIE_LOVE_RAINBOW_SWIRL] = _("Alcremie"), + [SPECIES_ALCREMIE_STAR_VANILLA_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_STAR_RUBY_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_STAR_MATCHA_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_STAR_MINT_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_STAR_LEMON_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_STAR_SALTED_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_STAR_RUBY_SWIRL] = _("Alcremie"), + [SPECIES_ALCREMIE_STAR_CARAMEL_SWIRL] = _("Alcremie"), + [SPECIES_ALCREMIE_STAR_RAINBOW_SWIRL] = _("Alcremie"), + [SPECIES_ALCREMIE_CLOVER_VANILLA_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_CLOVER_RUBY_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_CLOVER_MATCHA_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_CLOVER_MINT_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_CLOVER_LEMON_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_CLOVER_SALTED_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_CLOVER_RUBY_SWIRL] = _("Alcremie"), + [SPECIES_ALCREMIE_CLOVER_CARAMEL_SWIRL] = _("Alcremie"), + [SPECIES_ALCREMIE_CLOVER_RAINBOW_SWIRL] = _("Alcremie"), + [SPECIES_ALCREMIE_FLOWER_VANILLA_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_FLOWER_RUBY_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_FLOWER_MATCHA_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_FLOWER_MINT_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_FLOWER_LEMON_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_FLOWER_SALTED_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_FLOWER_RUBY_SWIRL] = _("Alcremie"), + [SPECIES_ALCREMIE_FLOWER_CARAMEL_SWIRL] = _("Alcremie"), + [SPECIES_ALCREMIE_FLOWER_RAINBOW_SWIRL] = _("Alcremie"), + [SPECIES_ALCREMIE_RIBBON_VANILLA_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_RIBBON_RUBY_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_RIBBON_MATCHA_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_RIBBON_MINT_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_RIBBON_LEMON_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_RIBBON_SALTED_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_RIBBON_RUBY_SWIRL] = _("Alcremie"), + [SPECIES_ALCREMIE_RIBBON_CARAMEL_SWIRL] = _("Alcremie"), + [SPECIES_ALCREMIE_RIBBON_RAINBOW_SWIRL] = _("Alcremie"), [SPECIES_FALINKS] = _("Falinks"), [SPECIES_PINCURCHIN] = _("Pincurchin"), [SPECIES_SNOM] = _("Snom"), @@ -1308,15 +1370,6 @@ const u8 gSpeciesNames[NUM_SPECIES][POKEMON_NAME_LENGTH + 1] = { [SPECIES_SINISTEA_ANTIQUE] = _("Sinistea"), // Polteageist [SPECIES_POLTEAGEIST_ANTIQUE] = _("Polteageis"), - // Alcremie - [SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM] = _("Alcremie"), - [SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM] = _("Alcremie"), - [SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM] = _("Alcremie"), - [SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM] = _("Alcremie"), - [SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM] = _("Alcremie"), - [SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL] = _("Alcremie"), - [SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL] = _("Alcremie"), - [SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL] = _("Alcremie"), // Eiscue [SPECIES_EISCUE_NOICE_FACE] = _("Eiscue"), // Indeedee diff --git a/src/pokemon.c b/src/pokemon.c index 2d764d5fc8..0e9b3fdec5 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -1231,6 +1231,68 @@ static const u16 sSpeciesToNationalPokedexNum[NUM_SPECIES - 1] = SPECIES_TO_NATIONAL(RUNERIGUS), SPECIES_TO_NATIONAL(MILCERY), SPECIES_TO_NATIONAL(ALCREMIE), + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_BERRY_VANILLA_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_BERRY_RUBY_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_BERRY_MATCHA_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_BERRY_MINT_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_BERRY_LEMON_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_BERRY_SALTED_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_BERRY_RUBY_SWIRL - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_BERRY_CARAMEL_SWIRL - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_BERRY_RAINBOW_SWIRL - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_LOVE_VANILLA_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_LOVE_RUBY_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_LOVE_MATCHA_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_LOVE_MINT_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_LOVE_LEMON_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_LOVE_SALTED_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_LOVE_RUBY_SWIRL - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_LOVE_CARAMEL_SWIRL - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_LOVE_RAINBOW_SWIRL - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_STAR_VANILLA_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_STAR_RUBY_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_STAR_MATCHA_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_STAR_MINT_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_STAR_LEMON_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_STAR_SALTED_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_STAR_RUBY_SWIRL - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_STAR_CARAMEL_SWIRL - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_STAR_RAINBOW_SWIRL - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_CLOVER_VANILLA_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_CLOVER_RUBY_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_CLOVER_MATCHA_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_CLOVER_MINT_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_CLOVER_LEMON_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_CLOVER_SALTED_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_CLOVER_RUBY_SWIRL - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_CLOVER_CARAMEL_SWIRL - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_CLOVER_RAINBOW_SWIRL - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_FLOWER_VANILLA_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_FLOWER_RUBY_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_FLOWER_MATCHA_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_FLOWER_MINT_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_FLOWER_LEMON_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_FLOWER_SALTED_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_FLOWER_RUBY_SWIRL - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_FLOWER_CARAMEL_SWIRL - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_FLOWER_RAINBOW_SWIRL - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_RIBBON_VANILLA_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_RIBBON_RUBY_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_RIBBON_MATCHA_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_RIBBON_MINT_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_RIBBON_LEMON_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_RIBBON_SALTED_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_RIBBON_RUBY_SWIRL - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_RIBBON_CARAMEL_SWIRL - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_RIBBON_RAINBOW_SWIRL - 1] = NATIONAL_DEX_ALCREMIE, SPECIES_TO_NATIONAL(FALINKS), SPECIES_TO_NATIONAL(PINCURCHIN), SPECIES_TO_NATIONAL(SNOM), @@ -1656,15 +1718,6 @@ static const u16 sSpeciesToNationalPokedexNum[NUM_SPECIES - 1] = [SPECIES_SINISTEA_ANTIQUE - 1] = NATIONAL_DEX_SINISTEA, // Polteageist [SPECIES_POLTEAGEIST_ANTIQUE - 1] = NATIONAL_DEX_POLTEAGEIST, - // Alcremie - [SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM - 1] = NATIONAL_DEX_ALCREMIE, - [SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM - 1] = NATIONAL_DEX_ALCREMIE, - [SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM - 1] = NATIONAL_DEX_ALCREMIE, - [SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM - 1] = NATIONAL_DEX_ALCREMIE, - [SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM - 1] = NATIONAL_DEX_ALCREMIE, - [SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL - 1] = NATIONAL_DEX_ALCREMIE, - [SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL - 1] = NATIONAL_DEX_ALCREMIE, - [SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL - 1] = NATIONAL_DEX_ALCREMIE, // Eiscue [SPECIES_EISCUE_NOICE_FACE - 1] = NATIONAL_DEX_EISCUE, // Indeedee @@ -2897,6 +2950,68 @@ const u8 sMonFrontAnimIdsTable[NUM_SPECIES - 1] = [SPECIES_RUNERIGUS - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_MILCERY - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_BERRY_VANILLA_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_BERRY_RUBY_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_BERRY_MATCHA_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_BERRY_MINT_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_BERRY_LEMON_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_BERRY_SALTED_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_BERRY_RUBY_SWIRL - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_BERRY_CARAMEL_SWIRL - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_BERRY_RAINBOW_SWIRL - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_LOVE_VANILLA_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_LOVE_RUBY_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_LOVE_MATCHA_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_LOVE_MINT_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_LOVE_LEMON_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_LOVE_SALTED_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_LOVE_RUBY_SWIRL - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_LOVE_CARAMEL_SWIRL - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_LOVE_RAINBOW_SWIRL - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_STAR_VANILLA_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_STAR_RUBY_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_STAR_MATCHA_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_STAR_MINT_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_STAR_LEMON_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_STAR_SALTED_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_STAR_RUBY_SWIRL - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_STAR_CARAMEL_SWIRL - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_STAR_RAINBOW_SWIRL - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_CLOVER_VANILLA_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_CLOVER_RUBY_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_CLOVER_MATCHA_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_CLOVER_MINT_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_CLOVER_LEMON_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_CLOVER_SALTED_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_CLOVER_RUBY_SWIRL - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_CLOVER_CARAMEL_SWIRL - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_CLOVER_RAINBOW_SWIRL - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_FLOWER_VANILLA_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_FLOWER_RUBY_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_FLOWER_MATCHA_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_FLOWER_MINT_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_FLOWER_LEMON_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_FLOWER_SALTED_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_FLOWER_RUBY_SWIRL - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_FLOWER_CARAMEL_SWIRL - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_FLOWER_RAINBOW_SWIRL - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_RIBBON_VANILLA_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_RIBBON_RUBY_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_RIBBON_MATCHA_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_RIBBON_MINT_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_RIBBON_LEMON_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_RIBBON_SALTED_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_RIBBON_RUBY_SWIRL - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_RIBBON_CARAMEL_SWIRL - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_RIBBON_RAINBOW_SWIRL - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_FALINKS - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_PINCURCHIN - 1] = ANIM_SHRINK_GROW_VIBRATE, [SPECIES_SNOM - 1] = ANIM_V_SQUISH_AND_BOUNCE, @@ -3106,14 +3221,6 @@ const u8 sMonFrontAnimIdsTable[NUM_SPECIES - 1] = [SPECIES_TOXTRICITY_LOW_KEY - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_SINISTEA_ANTIQUE - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_POLTEAGEIST_ANTIQUE - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_ALCREMIE_RUBY_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_ALCREMIE_MATCHA_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_ALCREMIE_MINT_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_ALCREMIE_LEMON_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_ALCREMIE_SALTED_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_ALCREMIE_RUBY_SWIRL - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_ALCREMIE_CARAMEL_SWIRL - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_ALCREMIE_RAINBOW_SWIRL - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_EISCUE_NOICE_FACE - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_INDEEDEE_FEMALE - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_MORPEKO_HANGRY - 1] = ANIM_V_SQUISH_AND_BOUNCE, diff --git a/src/pokemon_animation.c b/src/pokemon_animation.c index a5e0cd8314..dca8834d6b 100644 --- a/src/pokemon_animation.c +++ b/src/pokemon_animation.c @@ -1098,6 +1098,68 @@ static const u8 sSpeciesToBackAnimSet[NUM_SPECIES] = [SPECIES_RUNERIGUS] = BACK_ANIM_H_VIBRATE, [SPECIES_MILCERY] = BACK_ANIM_H_VIBRATE, [SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_BERRY_VANILLA_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_BERRY_RUBY_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_BERRY_MATCHA_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_BERRY_MINT_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_BERRY_LEMON_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_BERRY_SALTED_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_BERRY_RUBY_SWIRL] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_BERRY_CARAMEL_SWIRL] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_BERRY_RAINBOW_SWIRL] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_LOVE_VANILLA_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_LOVE_RUBY_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_LOVE_MATCHA_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_LOVE_MINT_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_LOVE_LEMON_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_LOVE_SALTED_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_LOVE_RUBY_SWIRL] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_LOVE_CARAMEL_SWIRL] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_LOVE_RAINBOW_SWIRL] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_STAR_VANILLA_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_STAR_RUBY_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_STAR_MATCHA_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_STAR_MINT_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_STAR_LEMON_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_STAR_SALTED_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_STAR_RUBY_SWIRL] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_STAR_CARAMEL_SWIRL] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_STAR_RAINBOW_SWIRL] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_CLOVER_VANILLA_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_CLOVER_RUBY_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_CLOVER_MATCHA_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_CLOVER_MINT_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_CLOVER_LEMON_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_CLOVER_SALTED_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_CLOVER_RUBY_SWIRL] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_CLOVER_CARAMEL_SWIRL] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_CLOVER_RAINBOW_SWIRL] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_FLOWER_VANILLA_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_FLOWER_RUBY_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_FLOWER_MATCHA_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_FLOWER_MINT_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_FLOWER_LEMON_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_FLOWER_SALTED_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_FLOWER_RUBY_SWIRL] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_FLOWER_CARAMEL_SWIRL] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_FLOWER_RAINBOW_SWIRL] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_RIBBON_VANILLA_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_RIBBON_RUBY_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_RIBBON_MATCHA_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_RIBBON_MINT_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_RIBBON_LEMON_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_RIBBON_SALTED_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_RIBBON_RUBY_SWIRL] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_RIBBON_CARAMEL_SWIRL] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_RIBBON_RAINBOW_SWIRL] = BACK_ANIM_H_VIBRATE, [SPECIES_FALINKS] = BACK_ANIM_H_VIBRATE, [SPECIES_PINCURCHIN] = BACK_ANIM_H_VIBRATE, [SPECIES_SNOM] = BACK_ANIM_H_VIBRATE, @@ -1307,14 +1369,6 @@ static const u8 sSpeciesToBackAnimSet[NUM_SPECIES] = [SPECIES_TOXTRICITY_LOW_KEY] = BACK_ANIM_H_VIBRATE, [SPECIES_SINISTEA_ANTIQUE] = BACK_ANIM_H_VIBRATE, [SPECIES_POLTEAGEIST_ANTIQUE] = BACK_ANIM_H_VIBRATE, - [SPECIES_ALCREMIE_RUBY_CREAM] = BACK_ANIM_H_VIBRATE, - [SPECIES_ALCREMIE_MATCHA_CREAM] = BACK_ANIM_H_VIBRATE, - [SPECIES_ALCREMIE_MINT_CREAM] = BACK_ANIM_H_VIBRATE, - [SPECIES_ALCREMIE_LEMON_CREAM] = BACK_ANIM_H_VIBRATE, - [SPECIES_ALCREMIE_SALTED_CREAM] = BACK_ANIM_H_VIBRATE, - [SPECIES_ALCREMIE_RUBY_SWIRL] = BACK_ANIM_H_VIBRATE, - [SPECIES_ALCREMIE_CARAMEL_SWIRL] = BACK_ANIM_H_VIBRATE, - [SPECIES_ALCREMIE_RAINBOW_SWIRL] = BACK_ANIM_H_VIBRATE, [SPECIES_EISCUE_NOICE_FACE] = BACK_ANIM_H_VIBRATE, [SPECIES_INDEEDEE_FEMALE] = BACK_ANIM_H_VIBRATE, [SPECIES_MORPEKO_HANGRY] = BACK_ANIM_H_VIBRATE, diff --git a/src/pokemon_icon.c b/src/pokemon_icon.c index 2207ebfa1e..6c45c4d15c 100644 --- a/src/pokemon_icon.c +++ b/src/pokemon_icon.c @@ -904,7 +904,69 @@ const u8 *const gMonIconTable[NUM_SPECIES + 1] = [SPECIES_MR_RIME] = gMonIcon_MrRime, [SPECIES_RUNERIGUS] = gMonIcon_Runerigus, [SPECIES_MILCERY] = gMonIcon_Milcery, - [SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM] = gMonIcon_Alcremie, + [SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryRubyCream, + [SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryMatchaCream, + [SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryMintCream, + [SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryLemonCream, + [SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberrySaltedCream, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryRubySwirl, + [SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryCaramelSwirl, + [SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryRainbowSwirl, + [SPECIES_ALCREMIE_BERRY_VANILLA_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream, + [SPECIES_ALCREMIE_BERRY_RUBY_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryRubyCream, + [SPECIES_ALCREMIE_BERRY_MATCHA_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryMatchaCream, + [SPECIES_ALCREMIE_BERRY_MINT_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryMintCream, + [SPECIES_ALCREMIE_BERRY_LEMON_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryLemonCream, + [SPECIES_ALCREMIE_BERRY_SALTED_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberrySaltedCream, + [SPECIES_ALCREMIE_BERRY_RUBY_SWIRL] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryRubySwirl, + [SPECIES_ALCREMIE_BERRY_CARAMEL_SWIRL] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryCaramelSwirl, + [SPECIES_ALCREMIE_BERRY_RAINBOW_SWIRL] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryRainbowSwirl, + [SPECIES_ALCREMIE_LOVE_VANILLA_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream, + [SPECIES_ALCREMIE_LOVE_RUBY_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryRubyCream, + [SPECIES_ALCREMIE_LOVE_MATCHA_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryMatchaCream, + [SPECIES_ALCREMIE_LOVE_MINT_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryMintCream, + [SPECIES_ALCREMIE_LOVE_LEMON_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryLemonCream, + [SPECIES_ALCREMIE_LOVE_SALTED_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberrySaltedCream, + [SPECIES_ALCREMIE_LOVE_RUBY_SWIRL] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryRubySwirl, + [SPECIES_ALCREMIE_LOVE_CARAMEL_SWIRL] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryCaramelSwirl, + [SPECIES_ALCREMIE_LOVE_RAINBOW_SWIRL] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryRainbowSwirl, + [SPECIES_ALCREMIE_STAR_VANILLA_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream, + [SPECIES_ALCREMIE_STAR_RUBY_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryRubyCream, + [SPECIES_ALCREMIE_STAR_MATCHA_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryMatchaCream, + [SPECIES_ALCREMIE_STAR_MINT_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryMintCream, + [SPECIES_ALCREMIE_STAR_LEMON_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryLemonCream, + [SPECIES_ALCREMIE_STAR_SALTED_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberrySaltedCream, + [SPECIES_ALCREMIE_STAR_RUBY_SWIRL] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryRubySwirl, + [SPECIES_ALCREMIE_STAR_CARAMEL_SWIRL] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryCaramelSwirl, + [SPECIES_ALCREMIE_STAR_RAINBOW_SWIRL] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryRainbowSwirl, + [SPECIES_ALCREMIE_CLOVER_VANILLA_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream, + [SPECIES_ALCREMIE_CLOVER_RUBY_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryRubyCream, + [SPECIES_ALCREMIE_CLOVER_MATCHA_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryMatchaCream, + [SPECIES_ALCREMIE_CLOVER_MINT_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryMintCream, + [SPECIES_ALCREMIE_CLOVER_LEMON_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryLemonCream, + [SPECIES_ALCREMIE_CLOVER_SALTED_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberrySaltedCream, + [SPECIES_ALCREMIE_CLOVER_RUBY_SWIRL] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryRubySwirl, + [SPECIES_ALCREMIE_CLOVER_CARAMEL_SWIRL] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryCaramelSwirl, + [SPECIES_ALCREMIE_CLOVER_RAINBOW_SWIRL] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryRainbowSwirl, + [SPECIES_ALCREMIE_FLOWER_VANILLA_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream, + [SPECIES_ALCREMIE_FLOWER_RUBY_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryRubyCream, + [SPECIES_ALCREMIE_FLOWER_MATCHA_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryMatchaCream, + [SPECIES_ALCREMIE_FLOWER_MINT_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryMintCream, + [SPECIES_ALCREMIE_FLOWER_LEMON_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryLemonCream, + [SPECIES_ALCREMIE_FLOWER_SALTED_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberrySaltedCream, + [SPECIES_ALCREMIE_FLOWER_RUBY_SWIRL] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryRubySwirl, + [SPECIES_ALCREMIE_FLOWER_CARAMEL_SWIRL] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryCaramelSwirl, + [SPECIES_ALCREMIE_FLOWER_RAINBOW_SWIRL] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryRainbowSwirl, + [SPECIES_ALCREMIE_RIBBON_VANILLA_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream, + [SPECIES_ALCREMIE_RIBBON_RUBY_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryRubyCream, + [SPECIES_ALCREMIE_RIBBON_MATCHA_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryMatchaCream, + [SPECIES_ALCREMIE_RIBBON_MINT_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryMintCream, + [SPECIES_ALCREMIE_RIBBON_LEMON_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryLemonCream, + [SPECIES_ALCREMIE_RIBBON_SALTED_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberrySaltedCream, + [SPECIES_ALCREMIE_RIBBON_RUBY_SWIRL] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryRubySwirl, + [SPECIES_ALCREMIE_RIBBON_CARAMEL_SWIRL] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryCaramelSwirl, + [SPECIES_ALCREMIE_RIBBON_RAINBOW_SWIRL] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryRainbowSwirl, [SPECIES_FALINKS] = gMonIcon_Falinks, [SPECIES_PINCURCHIN] = gMonIcon_Pincurchin, [SPECIES_SNOM] = gMonIcon_Snom, @@ -1274,14 +1336,6 @@ const u8 *const gMonIconTable[NUM_SPECIES + 1] = [SPECIES_TOXTRICITY_LOW_KEY] = gMonIcon_ToxtricityLowKey, [SPECIES_SINISTEA_ANTIQUE] = gMonIcon_Sinistea, [SPECIES_POLTEAGEIST_ANTIQUE] = gMonIcon_Polteageist, - [SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM] = gMonIcon_QuestionMark,//gMonIcon_AlcremieStrawberryRubyCream, - [SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM] = gMonIcon_QuestionMark,//gMonIcon_AlcremieStrawberryMatchaCream, - [SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM] = gMonIcon_QuestionMark,//gMonIcon_AlcremieStrawberryMintCream, - [SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM] = gMonIcon_QuestionMark,//gMonIcon_AlcremieStrawberryLemonCream, - [SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM] = gMonIcon_QuestionMark,//gMonIcon_AlcremieStrawberrySaltedCream, - [SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL] = gMonIcon_QuestionMark,//gMonIcon_AlcremieStrawberryRubySwirl, - [SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL] = gMonIcon_QuestionMark,//gMonIcon_AlcremieStrawberryCaramelSwirl, - [SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL] = gMonIcon_QuestionMark,//gMonIcon_AlcremieStrawberryRainbowSwirl, [SPECIES_EISCUE_NOICE_FACE] = gMonIcon_EiscueNoiceFace, [SPECIES_INDEEDEE_FEMALE] = gMonIcon_IndeedeeFemale, [SPECIES_MORPEKO_HANGRY] = gMonIcon_MorpekoHangry, @@ -2221,6 +2275,68 @@ const u8 gMonIconPaletteIndices[] = [SPECIES_RUNERIGUS] = 2, [SPECIES_MILCERY] = 1, [SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM] = 1, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM] = 1, + [SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM] = 1, + [SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM] = 1, + [SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM] = 1, + [SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM] = 1, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL] = 1, + [SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL] = 1, + [SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL] = 1, + [SPECIES_ALCREMIE_BERRY_VANILLA_CREAM] = 1, + [SPECIES_ALCREMIE_BERRY_RUBY_CREAM] = 1, + [SPECIES_ALCREMIE_BERRY_MATCHA_CREAM] = 1, + [SPECIES_ALCREMIE_BERRY_MINT_CREAM] = 1, + [SPECIES_ALCREMIE_BERRY_LEMON_CREAM] = 1, + [SPECIES_ALCREMIE_BERRY_SALTED_CREAM] = 1, + [SPECIES_ALCREMIE_BERRY_RUBY_SWIRL] = 1, + [SPECIES_ALCREMIE_BERRY_CARAMEL_SWIRL] = 1, + [SPECIES_ALCREMIE_BERRY_RAINBOW_SWIRL] = 1, + [SPECIES_ALCREMIE_LOVE_VANILLA_CREAM] = 1, + [SPECIES_ALCREMIE_LOVE_RUBY_CREAM] = 1, + [SPECIES_ALCREMIE_LOVE_MATCHA_CREAM] = 1, + [SPECIES_ALCREMIE_LOVE_MINT_CREAM] = 1, + [SPECIES_ALCREMIE_LOVE_LEMON_CREAM] = 1, + [SPECIES_ALCREMIE_LOVE_SALTED_CREAM] = 1, + [SPECIES_ALCREMIE_LOVE_RUBY_SWIRL] = 1, + [SPECIES_ALCREMIE_LOVE_CARAMEL_SWIRL] = 1, + [SPECIES_ALCREMIE_LOVE_RAINBOW_SWIRL] = 1, + [SPECIES_ALCREMIE_STAR_VANILLA_CREAM] = 1, + [SPECIES_ALCREMIE_STAR_RUBY_CREAM] = 1, + [SPECIES_ALCREMIE_STAR_MATCHA_CREAM] = 1, + [SPECIES_ALCREMIE_STAR_MINT_CREAM] = 1, + [SPECIES_ALCREMIE_STAR_LEMON_CREAM] = 1, + [SPECIES_ALCREMIE_STAR_SALTED_CREAM] = 1, + [SPECIES_ALCREMIE_STAR_RUBY_SWIRL] = 1, + [SPECIES_ALCREMIE_STAR_CARAMEL_SWIRL] = 1, + [SPECIES_ALCREMIE_STAR_RAINBOW_SWIRL] = 1, + [SPECIES_ALCREMIE_CLOVER_VANILLA_CREAM] = 1, + [SPECIES_ALCREMIE_CLOVER_RUBY_CREAM] = 1, + [SPECIES_ALCREMIE_CLOVER_MATCHA_CREAM] = 1, + [SPECIES_ALCREMIE_CLOVER_MINT_CREAM] = 1, + [SPECIES_ALCREMIE_CLOVER_LEMON_CREAM] = 1, + [SPECIES_ALCREMIE_CLOVER_SALTED_CREAM] = 1, + [SPECIES_ALCREMIE_CLOVER_RUBY_SWIRL] = 1, + [SPECIES_ALCREMIE_CLOVER_CARAMEL_SWIRL] = 1, + [SPECIES_ALCREMIE_CLOVER_RAINBOW_SWIRL] = 1, + [SPECIES_ALCREMIE_FLOWER_VANILLA_CREAM] = 1, + [SPECIES_ALCREMIE_FLOWER_RUBY_CREAM] = 1, + [SPECIES_ALCREMIE_FLOWER_MATCHA_CREAM] = 1, + [SPECIES_ALCREMIE_FLOWER_MINT_CREAM] = 1, + [SPECIES_ALCREMIE_FLOWER_LEMON_CREAM] = 1, + [SPECIES_ALCREMIE_FLOWER_SALTED_CREAM] = 1, + [SPECIES_ALCREMIE_FLOWER_RUBY_SWIRL] = 1, + [SPECIES_ALCREMIE_FLOWER_CARAMEL_SWIRL] = 1, + [SPECIES_ALCREMIE_FLOWER_RAINBOW_SWIRL] = 1, + [SPECIES_ALCREMIE_RIBBON_VANILLA_CREAM] = 1, + [SPECIES_ALCREMIE_RIBBON_RUBY_CREAM] = 1, + [SPECIES_ALCREMIE_RIBBON_MATCHA_CREAM] = 1, + [SPECIES_ALCREMIE_RIBBON_MINT_CREAM] = 1, + [SPECIES_ALCREMIE_RIBBON_LEMON_CREAM] = 1, + [SPECIES_ALCREMIE_RIBBON_SALTED_CREAM] = 1, + [SPECIES_ALCREMIE_RIBBON_RUBY_SWIRL] = 1, + [SPECIES_ALCREMIE_RIBBON_CARAMEL_SWIRL] = 1, + [SPECIES_ALCREMIE_RIBBON_RAINBOW_SWIRL] = 1, [SPECIES_FALINKS] = 0, [SPECIES_PINCURCHIN] = 0, [SPECIES_SNOM] = 0, @@ -2543,14 +2659,6 @@ const u8 gMonIconPaletteIndices[] = [SPECIES_TOXTRICITY_LOW_KEY] = 2, [SPECIES_SINISTEA_ANTIQUE] = 2, [SPECIES_POLTEAGEIST_ANTIQUE] = 2, - [SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM] = 0, - [SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM] = 0, - [SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM] = 0, - [SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM] = 0, - [SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM] = 0, - [SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL] = 0, - [SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL] = 0, - [SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL] = 0, [SPECIES_EISCUE_NOICE_FACE] = 0, [SPECIES_INDEEDEE_FEMALE] = 2, [SPECIES_MORPEKO_HANGRY] = 2, diff --git a/src/pokemon_jump.c b/src/pokemon_jump.c index bbbffba4b3..4f0afc1c0d 100755 --- a/src/pokemon_jump.c +++ b/src/pokemon_jump.c @@ -703,6 +703,60 @@ static const struct PokemonJumpMons sPokeJumpMons[] = { .species = SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, { .species = SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, { .species = SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_BERRY_VANILLA_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_BERRY_RUBY_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_BERRY_MATCHA_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_BERRY_MINT_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_BERRY_LEMON_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_BERRY_SALTED_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_BERRY_RUBY_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_BERRY_CARAMEL_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_BERRY_RAINBOW_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_LOVE_VANILLA_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_LOVE_RUBY_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_LOVE_MATCHA_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_LOVE_MINT_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_LOVE_LEMON_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_LOVE_SALTED_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_LOVE_RUBY_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_LOVE_CARAMEL_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_LOVE_RAINBOW_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_STAR_VANILLA_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_STAR_RUBY_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_STAR_MATCHA_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_STAR_MINT_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_STAR_LEMON_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_STAR_SALTED_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_STAR_RUBY_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_STAR_CARAMEL_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_STAR_RAINBOW_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_CLOVER_VANILLA_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_CLOVER_RUBY_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_CLOVER_MATCHA_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_CLOVER_MINT_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_CLOVER_LEMON_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_CLOVER_SALTED_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_CLOVER_RUBY_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_CLOVER_CARAMEL_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_CLOVER_RAINBOW_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_FLOWER_VANILLA_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_FLOWER_RUBY_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_FLOWER_MATCHA_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_FLOWER_MINT_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_FLOWER_LEMON_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_FLOWER_SALTED_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_FLOWER_RUBY_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_FLOWER_CARAMEL_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_FLOWER_RAINBOW_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_RIBBON_VANILLA_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_RIBBON_RUBY_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_RIBBON_MATCHA_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_RIBBON_MINT_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_RIBBON_LEMON_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_RIBBON_SALTED_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_RIBBON_RUBY_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_RIBBON_CARAMEL_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_RIBBON_RAINBOW_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, { .species = SPECIES_PINCURCHIN, .jumpType = JUMP_TYPE_SLOW, }, { .species = SPECIES_SNOM, .jumpType = JUMP_TYPE_SLOW, }, { .species = SPECIES_MORPEKO_FULL_BELLY, .jumpType = JUMP_TYPE_NORMAL, }, From f461bc3256ee9deefbe92e1b52996e0a6767a8a8 Mon Sep 17 00:00:00 2001 From: Alex <93446519+AlexOn1ine@users.noreply.github.com> Date: Mon, 30 Oct 2023 10:04:59 +0100 Subject: [PATCH 162/162] AI_CompareDamagingMoves changes to increase the score by 1 for best moves (#3382) * Further optimizes AI_CompareDamagingMoves * viableMove name change + 2 tests * some issues --------- Co-authored-by: DizzyEggg --- src/battle_ai_main.c | 42 ++++++++++++++++++++++++---- src/battle_ai_util.c | 1 - test/battle/ai.c | 66 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 102 insertions(+), 7 deletions(-) diff --git a/src/battle_ai_main.c b/src/battle_ai_main.c index 7cdd63317b..2e99def5e7 100644 --- a/src/battle_ai_main.c +++ b/src/battle_ai_main.c @@ -3149,6 +3149,8 @@ static s32 AI_CompareDamagingMoves(u32 battlerAtk, u32 battlerDef, u32 currId) { u32 i; bool32 multipleBestMoves = FALSE; + s32 viableMoveScores[MAX_MON_MOVES]; + s32 bestViableMoveScore; s32 noOfHits[MAX_MON_MOVES]; s32 score = 0; s32 leastHits = 1000; @@ -3164,11 +3166,13 @@ static s32 AI_CompareDamagingMoves(u32 battlerAtk, u32 battlerDef, u32 currId) { leastHits = noOfHits[i]; } + viableMoveScores[i] = AI_SCORE_DEFAULT; isPowerfulIgnoredEffect[i] = IsInIgnoredPowerfulMoveEffects(gBattleMoves[moves[i]].effect); } else { noOfHits[i] = -1; + viableMoveScores[i] = 0; isPowerfulIgnoredEffect[i] = FALSE; } /* @@ -3194,19 +3198,45 @@ static s32 AI_CompareDamagingMoves(u32 battlerAtk, u32 battlerDef, u32 currId) multipleBestMoves = TRUE; // We need to make sure it's the current move which is objectively better. if (isPowerfulIgnoredEffect[i] && !isPowerfulIgnoredEffect[currId]) - ADJUST_SCORE(3); - else if (CompareMoveAccuracies(battlerAtk, battlerDef, currId, i) == 0) - ADJUST_SCORE(2); - else if (AI_WhichMoveBetter(moves[currId], moves[i], battlerAtk, battlerDef, noOfHits[currId]) == 0) + viableMoveScores[i] -= 3; + else if (!isPowerfulIgnoredEffect[i] && isPowerfulIgnoredEffect[currId]) + viableMoveScores[currId] -= 3; + + switch (CompareMoveAccuracies(battlerAtk, battlerDef, currId, i)) { - // MgbaPrintf_("%S better than %S", gMoveNames[moves[currId]], gMoveNames[moves[i]]); - ADJUST_SCORE(1); + case 0: + viableMoveScores[i] -= 2; + break; + case 1: + viableMoveScores[currId] -= 2; + break; + } + switch (AI_WhichMoveBetter(moves[currId], moves[i], battlerAtk, battlerDef, noOfHits[currId])) + { + case 0: + viableMoveScores[i] -= 1; + break; + case 1: + viableMoveScores[currId] -= 1; + break; } } } // Turns out the current move deals the most dmg compared to the other 3. if (!multipleBestMoves) ADJUST_SCORE(1); + else + { + bestViableMoveScore = 0; + for (i = 0; i < MAX_MON_MOVES; i++) + { + if (viableMoveScores[i] > bestViableMoveScore) + bestViableMoveScore = viableMoveScores[i]; + } + // Unless a better move was found increase score of current move + if (viableMoveScores[currId] == bestViableMoveScore) + ADJUST_SCORE(1); + } } return score; diff --git a/src/battle_ai_util.c b/src/battle_ai_util.c index 38c7a9550f..c4d543dfe0 100644 --- a/src/battle_ai_util.c +++ b/src/battle_ai_util.c @@ -2063,7 +2063,6 @@ bool32 HasMoveWithSplit(u32 battler, u32 split) if (moves[i] != MOVE_NONE && moves[i] != MOVE_UNAVAILABLE && GetBattleMoveSplit(moves[i]) == split) return TRUE; } - return FALSE; } diff --git a/test/battle/ai.c b/test/battle/ai.c index fd91634db9..22e6800bce 100644 --- a/test/battle/ai.c +++ b/test/battle/ai.c @@ -93,6 +93,9 @@ AI_SINGLE_BATTLE_TEST("AI prefers moves with better accuracy, but only if they b PARAMETRIZE { move1 = MOVE_MEGA_KICK; move2 = MOVE_SLAM; move3 = MOVE_TACKLE; move4 = MOVE_GUST; hp = 5; expectedMove = MOVE_GUST; expectedMove2 = MOVE_TACKLE; turns = 1; } // All moves hit with No guard ability PARAMETRIZE { move1 = MOVE_MEGA_KICK; move2 = MOVE_GUST; hp = 5; expectedMove = MOVE_MEGA_KICK; expectedMove2 = MOVE_GUST; turns = 1; } + // Tests to compare move that always hits and a beneficial effect. A move with higher acc should be chosen in this case. + PARAMETRIZE { move1 = MOVE_SHOCK_WAVE; move2 = MOVE_ICY_WIND; hp = 5; expectedMove = MOVE_SHOCK_WAVE; turns = 1; } + PARAMETRIZE { move1 = MOVE_SHOCK_WAVE; move2 = MOVE_ICY_WIND; move3 = MOVE_THUNDERBOLT; hp = 5; expectedMove = MOVE_SHOCK_WAVE; expectedMove2 = MOVE_THUNDERBOLT; turns = 1; } GIVEN { AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); @@ -105,6 +108,9 @@ AI_SINGLE_BATTLE_TEST("AI prefers moves with better accuracy, but only if they b ASSUME(gBattleMoves[MOVE_MEGA_KICK].accuracy < gBattleMoves[MOVE_STRENGTH].accuracy); ASSUME(gBattleMoves[MOVE_TACKLE].accuracy == 100); ASSUME(gBattleMoves[MOVE_GUST].accuracy == 100); + ASSUME(gBattleMoves[MOVE_SHOCK_WAVE].accuracy == 0); + ASSUME(gBattleMoves[MOVE_THUNDERBOLT].accuracy == 100); + ASSUME(gBattleMoves[MOVE_ICY_WIND].accuracy != 100); OPPONENT(SPECIES_EXPLOUD) { Moves(move1, move2, move3, move4); Ability(abilityAtk); SpAttack(50); } // Low Sp.Atk, so Swift deals less damage than Strength. } WHEN { switch (turns) @@ -191,6 +197,66 @@ AI_SINGLE_BATTLE_TEST("AI prefers Earthquake over Drill Run if both require the } } +AI_SINGLE_BATTLE_TEST("AI prefers a weaker move over a one with a downside effect if both require the same number of hits to ko") +{ + u16 move1 = MOVE_NONE, move2 = MOVE_NONE, move3 = MOVE_NONE, move4 = MOVE_NONE; + u16 hp, expectedMove, turns; + + // Both moves require the same number of turns but Flamethrower will be chosen over Overheat (powerful effect) + PARAMETRIZE { move1 = MOVE_OVERHEAT; move2 = MOVE_FLAMETHROWER; hp = 300; expectedMove = MOVE_FLAMETHROWER; turns = 2; } + // Overheat kill in least amount of turns + PARAMETRIZE { move1 = MOVE_OVERHEAT; move2 = MOVE_FLAMETHROWER; hp = 250; expectedMove = MOVE_OVERHEAT; turns = 1; } + + GIVEN { + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); + PLAYER(SPECIES_WOBBUFFET) { HP(hp); } + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_TYPHLOSION) { Moves(move1, move2); } + } WHEN { + switch (turns) + { + case 1: + TURN { EXPECT_MOVE(opponent, expectedMove); SEND_OUT(player, 1); } + break; + case 2: + TURN { EXPECT_MOVE(opponent, expectedMove); } + TURN { EXPECT_MOVE(opponent, expectedMove); SEND_OUT(player, 1); } + break; + } + } + SCENE { + MESSAGE("Wobbuffet fainted!"); + } +} + +AI_SINGLE_BATTLE_TEST("AI prefers moves with the best possible score, chosen randomly if tied") +{ + GIVEN { + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); + PLAYER(SPECIES_WOBBUFFET) { HP(5); }; + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_THUNDERBOLT, MOVE_SLUDGE_BOMB, MOVE_TAKE_DOWN); } + } WHEN { + TURN { EXPECT_MOVES(opponent, MOVE_THUNDERBOLT, MOVE_SLUDGE_BOMB); SEND_OUT(player, 1); } + } + SCENE { + MESSAGE("Wobbuffet fainted!"); + } +} + +AI_SINGLE_BATTLE_TEST("AI can choose a status move that boosts the attack by two") +{ + GIVEN { + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); + PLAYER(SPECIES_WOBBUFFET) { HP(250); }; + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_KANGASKHAN) { Moves(MOVE_STRENGTH, MOVE_HORN_ATTACK, MOVE_SWORDS_DANCE); } + } WHEN { + TURN { EXPECT_MOVES(opponent, MOVE_STRENGTH, MOVE_SWORDS_DANCE); } + TURN { EXPECT_MOVE(opponent, MOVE_STRENGTH); SEND_OUT(player, 1); } + } +} + AI_SINGLE_BATTLE_TEST("AI chooses the safest option to faint the target, taking into account accuracy and move effect") { u16 move1 = MOVE_NONE, move2 = MOVE_NONE, move3 = MOVE_NONE, move4 = MOVE_NONE;