From 4056804575c064ff3f4e85ebbb877950b5cd167e Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Sun, 20 Oct 2024 03:15:38 -0400 Subject: [PATCH 01/73] feat: improved follower handling during scripted movements --- asm/macros/event.inc | 8 +++ data/scripts/pkmn_center_nurse.inc | 1 + include/constants/event_objects.h | 6 ++ include/constants/flags.h | 4 +- include/event_object_movement.h | 1 + src/event_object_movement.c | 88 ++++++++++++++++++------------ src/scrcmd.c | 48 ++++++++++++---- src/script.c | 3 + src/script_movement.c | 28 +++++++++- 9 files changed, 139 insertions(+), 48 deletions(-) diff --git a/asm/macros/event.inc b/asm/macros/event.inc index ef1ba30270..aa8ff5773d 100644 --- a/asm/macros/event.inc +++ b/asm/macros/event.inc @@ -1944,3 +1944,11 @@ setvar VAR_0x8006, \item special CreateEnemyEventMon .endm + + @ hide any follower pokemon if present, + @ putting them into their pokeball; + @ by default waits for their movement to finish + .macro hidefollower wait=1 + callfunc ScrFunc_hidefollower + .2byte \wait + .endm diff --git a/data/scripts/pkmn_center_nurse.inc b/data/scripts/pkmn_center_nurse.inc index 9c5afba8d6..b154d290b0 100644 --- a/data/scripts/pkmn_center_nurse.inc +++ b/data/scripts/pkmn_center_nurse.inc @@ -33,6 +33,7 @@ EventScript_PkmnCenterNurse_IllTakeYourPkmn2:: return EventScript_PkmnCenterNurse_TakeAndHealPkmn:: + hidefollower 0 applymovement VAR_0x800B, Movement_PkmnCenterNurse_Turn waitmovement 0 dofieldeffect FLDEFF_POKECENTER_HEAL diff --git a/include/constants/event_objects.h b/include/constants/event_objects.h index 59f34334cb..1d0f5a22e8 100644 --- a/include/constants/event_objects.h +++ b/include/constants/event_objects.h @@ -289,6 +289,12 @@ // instead of a normal pokeball #define OW_MON_POKEBALLS TRUE +// New/old handling for followers during scripts; +// TRUE: Script collisions hide follower, FLAG_SAFE_FOLLOWER_MOVEMENT on by default +// (scripted player movement moves follower too!) +// FALSE: Script collisions unhandled, FLAG_SAFE_FOLLOWER_MOVEMENT off by default +#define OW_MON_SCRIPT_MOVEMENT TRUE + #define SHADOW_SIZE_S 0 #define SHADOW_SIZE_M 1 #define SHADOW_SIZE_L 2 diff --git a/include/constants/flags.h b/include/constants/flags.h index f0d80c5498..161d39fcaf 100644 --- a/include/constants/flags.h +++ b/include/constants/flags.h @@ -1643,7 +1643,9 @@ #define FLAG_ENABLE_MULTI_CORRIDOR_DOOR (SPECIAL_FLAGS_START + 0x2) #define FLAG_SPECIAL_FLAG_UNUSED_0x4003 (SPECIAL_FLAGS_START + 0x3) // Unused Flag #define FLAG_STORING_ITEMS_IN_PYRAMID_BAG (SPECIAL_FLAGS_START + 0x4) -#define FLAG_SAFE_FOLLOWER_MOVEMENT (SPECIAL_FLAGS_START + 0x5) // When set, applymovement does not put the follower inside a pokeball +// When set, `applymovement` does not hide follower pokemon; +// Also, scripted movements on the player will move follower(s), too +#define FLAG_SAFE_FOLLOWER_MOVEMENT (SPECIAL_FLAGS_START + 0x5) // FLAG_SPECIAL_FLAG_0x4005 - 0x407F also exist and are unused #define SPECIAL_FLAGS_END (SPECIAL_FLAGS_START + 0x7F) #define NUM_SPECIAL_FLAGS (SPECIAL_FLAGS_END - SPECIAL_FLAGS_START + 1) diff --git a/include/event_object_movement.h b/include/event_object_movement.h index 6a1e2df766..45a3c6863a 100644 --- a/include/event_object_movement.h +++ b/include/event_object_movement.h @@ -161,6 +161,7 @@ u8 GetWalkInPlaceFastMovementAction(u32); u8 GetWalkInPlaceNormalMovementAction(u32); u8 GetWalkInPlaceSlowMovementAction(u32); u8 GetCollisionAtCoords(struct ObjectEvent *, s16 x, s16 y, u32 dir); +u32 GetObjectObjectCollidesWith(struct ObjectEvent *objectEvent, s16 x, s16 y, bool32 addCoords); void MoveCoords(u8 direction, s16 *x, s16 *y); bool8 ObjectEventIsHeldMovementActive(struct ObjectEvent *); u8 ObjectEventClearHeldMovementIfFinished(struct ObjectEvent *); diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 436f048a5a..26127caab9 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -5222,9 +5222,7 @@ bool8 FollowablePlayerMovement_Step(struct ObjectEvent *objectEvent, struct Spri s16 y; s16 targetX; s16 targetY; - #ifdef MB_SIDEWAYS_STAIRS_RIGHT_SIDE u32 playerAction = gObjectEvents[gPlayerAvatar.objectEventId].movementActionId; - #endif targetX = gObjectEvents[gPlayerAvatar.objectEventId].previousCoords.x; targetY = gObjectEvents[gPlayerAvatar.objectEventId].previousCoords.y; @@ -5240,8 +5238,8 @@ bool8 FollowablePlayerMovement_Step(struct ObjectEvent *objectEvent, struct Spri if (objectEvent->invisible) { // Animate exiting pokeball - // Player is jumping, but follower is invisible - if (PlayerGetCopyableMovement() == COPY_MOVE_JUMP2) { + // don't emerge if player is jumping or moving via script + if (PlayerGetCopyableMovement() == COPY_MOVE_JUMP2 || ArePlayerFieldControlsLocked()) { sprite->sTypeFuncId = 0; // return to shadowing state return FALSE; } @@ -5262,43 +5260,25 @@ bool8 FollowablePlayerMovement_Step(struct ObjectEvent *objectEvent, struct Spri MoveCoords(direction, &x, &y); #ifdef MB_SIDEWAYS_STAIRS_RIGHT_SIDE // https://github.com/ghoulslash/pokeemerald/tree/sideways_stairs GetCollisionAtCoords(objectEvent, x, y, direction); // Sets directionOverwrite for stairs - if (GetLedgeJumpDirection(x, y, direction) != DIR_NONE) { + #endif + if (GetLedgeJumpDirection(x, y, direction) != DIR_NONE) // InitJumpRegular will set the proper speed ObjectEventSetSingleMovement(objectEvent, sprite, GetJump2MovementAction(direction)); - } else if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_DASH)) { - // Set follow speed according to player's speed - if (playerAction >= MOVEMENT_ACTION_RUN_DOWN_SLOW && playerAction <= MOVEMENT_ACTION_RUN_RIGHT_SLOW) + else if (playerAction >= MOVEMENT_ACTION_WALK_SLOW_DOWN && playerAction <= MOVEMENT_ACTION_WALK_SLOW_RIGHT) { + if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_DASH)) // on sideways stairs objectEvent->movementActionId = GetWalkNormalMovementAction(direction); else - objectEvent->movementActionId = GetWalkFastMovementAction(direction); - } else if (PlayerGetCopyableMovement() == COPY_MOVE_JUMP2) { - ObjectEventSetSingleMovement(objectEvent, sprite, GetWalkSlowMovementAction(direction)); - } else { - if (playerAction >= MOVEMENT_ACTION_WALK_SLOW_DOWN && playerAction <= MOVEMENT_ACTION_WALK_SLOW_RIGHT) { ObjectEventSetSingleMovement(objectEvent, sprite, GetWalkSlowMovementAction(direction)); - } else { - objectEvent->movementActionId = GetWalkNormalMovementAction(direction); - if (OW_MON_BOBBING == TRUE) - sprite->y2 = -1; - } - } - sprite->sActionFuncId = 0; - #else - if (GetLedgeJumpDirection(x, y, direction) != DIR_NONE) { - // InitJumpRegular will set the proper speed - ObjectEventSetSingleMovement(objectEvent, sprite, GetJump2MovementAction(direction)); - } else if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_DASH)) { - // Set follow speed according to player's speed - ObjectEventSetSingleMovement(objectEvent, sprite, GetWalkFastMovementAction(direction)); } else if (PlayerGetCopyableMovement() == COPY_MOVE_JUMP2) { - // If *player* jumps, make step take twice as long ObjectEventSetSingleMovement(objectEvent, sprite, GetWalkSlowMovementAction(direction)); + } else if (gSprites[gPlayerAvatar.spriteId].data[4] == MOVE_SPEED_FAST_1) { + objectEvent->movementActionId = GetWalkFastMovementAction(direction); } else { - ObjectEventSetSingleMovement(objectEvent, sprite, GetWalkNormalMovementAction(direction)); + objectEvent->movementActionId = GetWalkNormalMovementAction(direction); if (OW_MON_BOBBING == TRUE) sprite->y2 = -1; } - #endif + sprite->sActionFuncId = 0; objectEvent->singleMovementActive = 1; sprite->sTypeFuncId = 2; return TRUE; @@ -5823,13 +5803,17 @@ static bool8 IsMetatileDirectionallyImpassable(struct ObjectEvent *objectEvent, return FALSE; } -static bool8 DoesObjectCollideWithObjectAt(struct ObjectEvent *objectEvent, s16 x, s16 y) -{ +u32 GetObjectObjectCollidesWith(struct ObjectEvent *objectEvent, s16 x, s16 y, bool32 addCoords) { u8 i; struct ObjectEvent *curObject; if (objectEvent->localId == OBJ_EVENT_ID_FOLLOWER) - return FALSE; // follower cannot collide with other objects, but they can collide with it + return OBJECT_EVENTS_COUNT; // follower cannot collide with other objects, but they can collide with it + + if (addCoords) { + x += objectEvent->currentCoords.x; + y += objectEvent->currentCoords.y; + } for (i = 0; i < OBJECT_EVENTS_COUNT; i++) { @@ -5839,11 +5823,16 @@ static bool8 DoesObjectCollideWithObjectAt(struct ObjectEvent *objectEvent, s16 if ((curObject->currentCoords.x == x && curObject->currentCoords.y == y) || (curObject->previousCoords.x == x && curObject->previousCoords.y == y)) { if (AreElevationsCompatible(objectEvent->currentElevation, curObject->currentElevation)) - return TRUE; + return i; } } } - return FALSE; + return OBJECT_EVENTS_COUNT; +} + +static bool8 DoesObjectCollideWithObjectAt(struct ObjectEvent *objectEvent, s16 x, s16 y) +{ + return (GetObjectObjectCollidesWith(objectEvent, x, y, FALSE) < OBJECT_EVENTS_COUNT); } bool8 IsBerryTreeSparkling(u8 localId, u8 mapNum, u8 mapGroup) @@ -5972,6 +5961,16 @@ bool8 ObjectEventIsHeldMovementActive(struct ObjectEvent *objectEvent) return FALSE; } +static const u8 sActionIdToCopyableMovement[] = { + [MOVEMENT_ACTION_FACE_DOWN ... MOVEMENT_ACTION_FACE_RIGHT] = COPY_MOVE_FACE, + [MOVEMENT_ACTION_WALK_SLOW_DOWN ... MOVEMENT_ACTION_WALK_NORMAL_RIGHT] = COPY_MOVE_WALK, + [MOVEMENT_ACTION_JUMP_2_DOWN ... MOVEMENT_ACTION_JUMP_2_RIGHT] = COPY_MOVE_JUMP2, + [MOVEMENT_ACTION_WALK_FAST_DOWN ... MOVEMENT_ACTION_WALK_FAST_RIGHT] = COPY_MOVE_WALK, + [MOVEMENT_ACTION_RIDE_WATER_CURRENT_DOWN ... MOVEMENT_ACTION_PLAYER_RUN_RIGHT] = COPY_MOVE_WALK, + + [MOVEMENT_ACTION_NONE] = COPY_MOVE_NONE, +}; + bool8 ObjectEventSetHeldMovement(struct ObjectEvent *objectEvent, u8 movementActionId) { if (ObjectEventIsMovementOverridden(objectEvent)) @@ -5982,6 +5981,16 @@ bool8 ObjectEventSetHeldMovement(struct ObjectEvent *objectEvent, u8 movementAct objectEvent->heldMovementActive = TRUE; objectEvent->heldMovementFinished = FALSE; gSprites[objectEvent->spriteId].sActionFuncId = 0; + + // When player is moved via script, set copyable movement + // for any followers via a lookup table + if (ArePlayerFieldControlsLocked() && + objectEvent->isPlayer && + FlagGet(FLAG_SAFE_FOLLOWER_MOVEMENT)) + { + objectEvent->extra.playerCopyableMovement = sActionIdToCopyableMovement[objectEvent->movementActionId]; + } + return FALSE; } @@ -6004,6 +6013,15 @@ void ObjectEventClearHeldMovement(struct ObjectEvent *objectEvent) objectEvent->heldMovementFinished = FALSE; gSprites[objectEvent->spriteId].sTypeFuncId = 0; gSprites[objectEvent->spriteId].sActionFuncId = 0; + + // When player is moved via script, set copyable movement + // for any followers via a lookup table + if (ArePlayerFieldControlsLocked() && + objectEvent->isPlayer && + FlagGet(FLAG_SAFE_FOLLOWER_MOVEMENT)) + { + objectEvent->extra.playerCopyableMovement = sActionIdToCopyableMovement[objectEvent->movementActionId]; + } } u8 ObjectEventCheckHeldMovementStatus(struct ObjectEvent *objectEvent) diff --git a/src/scrcmd.c b/src/scrcmd.c index d29df1748d..79b13534ab 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -997,6 +997,20 @@ bool8 ScrCmd_fadeinbgm(struct ScriptContext *ctx) return FALSE; } +struct ObjectEvent * ScriptHideFollower(void) { + struct ObjectEvent *obj = GetFollowerObject(); + + if (obj == NULL || obj->invisible) + return NULL; + + ClearObjectEventMovement(obj, &gSprites[obj->spriteId]); + gSprites[obj->spriteId].animCmdIndex = 0; // Reset start frame of animation + // Note: ScriptMovement_ returns TRUE on error + if (ScriptMovement_StartObjectMovementScript(obj->localId, obj->mapGroup, obj->mapNum, EnterPokeballMovement)) + return NULL; + return obj; +} + bool8 ScrCmd_applymovement(struct ScriptContext *ctx) { u16 localId = VarGet(ScriptReadHalfword(ctx)); @@ -1010,17 +1024,11 @@ bool8 ScrCmd_applymovement(struct ScriptContext *ctx) } ScriptMovement_StartObjectMovementScript(localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, movementScript); sMovingNpcId = localId; - objEvent = GetFollowerObject(); - // Force follower into pokeball - if (localId != OBJ_EVENT_ID_FOLLOWER - && !FlagGet(FLAG_SAFE_FOLLOWER_MOVEMENT) - && (movementScript < Common_Movement_FollowerSafeStart || movementScript > Common_Movement_FollowerSafeEnd) - && (objEvent = GetFollowerObject()) - && !objEvent->invisible) + if (localId != OBJ_EVENT_ID_FOLLOWER && + !FlagGet(FLAG_SAFE_FOLLOWER_MOVEMENT) + && (movementScript < Common_Movement_FollowerSafeStart || movementScript > Common_Movement_FollowerSafeEnd)) { - ClearObjectEventMovement(objEvent, &gSprites[objEvent->spriteId]); - gSprites[objEvent->spriteId].animCmdIndex = 0; // Reset start frame of animation - ScriptMovement_StartObjectMovementScript(OBJ_EVENT_ID_FOLLOWER, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, EnterPokeballMovement); + ScriptHideFollower(); } return FALSE; } @@ -2369,3 +2377,23 @@ bool8 ScrCmd_warpwhitefade(struct ScriptContext *ctx) ResetInitialPlayerAvatarState(); return TRUE; } + +bool8 ScrFunc_hidefollower(struct ScriptContext *ctx) { + bool16 wait = VarGet(ScriptReadHalfword(ctx)); + struct ObjectEvent *obj; + + if ((obj = ScriptHideFollower()) != NULL && wait) { + sMovingNpcId = obj->localId; + sMovingNpcMapGroup = obj->mapGroup; + sMovingNpcMapNum = obj->mapNum; + SetupNativeScript(ctx, WaitForMovementFinish); + } + + // Just in case, prevent `applymovement` + // from hiding the follower again + if (obj) + FlagSet(FLAG_SAFE_FOLLOWER_MOVEMENT); + + // execute next script command with no delay + return TRUE; +} diff --git a/src/script.c b/src/script.c index c252c95f04..2008b83424 100644 --- a/src/script.c +++ b/src/script.c @@ -4,6 +4,7 @@ #include "mystery_gift.h" #include "util.h" #include "constants/event_objects.h" +#include "constants/flags.h" #include "constants/map_scripts.h" #define RAM_SCRIPT_MAGIC 51 @@ -243,6 +244,8 @@ void ScriptContext_SetupScript(const u8 *ptr) InitScriptContext(&sGlobalScriptContext, gScriptCmdTable, gScriptCmdTableEnd); SetupBytecodeScript(&sGlobalScriptContext, ptr); LockPlayerFieldControls(); + if (OW_MON_SCRIPT_MOVEMENT) + FlagSet(FLAG_SAFE_FOLLOWER_MOVEMENT); sGlobalScriptContextStatus = CONTEXT_RUNNING; } diff --git a/src/script_movement.c b/src/script_movement.c index 10517dfc8e..fdec56c081 100644 --- a/src/script_movement.c +++ b/src/script_movement.c @@ -1,6 +1,7 @@ #include "global.h" #include "script_movement.h" #include "event_object_movement.h" +#include "event_scripts.h" #include "task.h" #include "util.h" #include "constants/event_objects.h" @@ -205,13 +206,34 @@ static void ScriptMovement_MoveObjects(u8 taskId) } } +// from event_object_movement +#define sTypeFuncId data[1] +#define sTimer data[5] + static void ScriptMovement_TakeStep(u8 taskId, u8 moveScrId, u8 objEventId, const u8 *movementScript) { u8 nextMoveActionId; + struct ObjectEvent *obj = &gObjectEvents[objEventId]; - if (ObjectEventIsHeldMovementActive(&gObjectEvents[objEventId]) - && !ObjectEventClearHeldMovementIfFinished(&gObjectEvents[objEventId])) + if (ObjectEventIsHeldMovementActive(obj) && + !ObjectEventClearHeldMovementIfFinished(obj)) + { + // If, while undergoing scripted movement, + // a non-player object collides with an active follower pokemon, + // put that follower into a pokeball + // (sTimer helps limit this expensive check to once per step) + if (OW_MON_SCRIPT_MOVEMENT && + gSprites[obj->spriteId].sTimer == 1 && + (objEventId = GetObjectObjectCollidesWith(obj, 0, 0, TRUE)) < OBJECT_EVENTS_COUNT && + // switch `obj` to follower + ((obj = &gObjectEvents[objEventId])->movementType == MOVEMENT_TYPE_FOLLOW_PLAYER) && + gSprites[obj->spriteId].sTypeFuncId != 0) + { + ClearObjectEventMovement(obj, &gSprites[obj->spriteId]); + ScriptMovement_StartObjectMovementScript(obj->localId, obj->mapNum, obj->mapGroup, EnterPokeballMovement); + } return; + } nextMoveActionId = *movementScript; if (nextMoveActionId == MOVEMENT_ACTION_STEP_END) @@ -229,3 +251,5 @@ static void ScriptMovement_TakeStep(u8 taskId, u8 moveScrId, u8 objEventId, cons } } +#undef sTypeFuncId +#undef sTimer From d12a24aef2f41d82288422fa3a41b18cbc2cecd4 Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Sat, 14 Dec 2024 23:07:02 -0500 Subject: [PATCH 02/73] fix: gave MOVEMENT_TYPE_FOLLOW_PLAYER an initial facing direction --- src/event_object_movement.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 26127caab9..acecd5d61d 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -362,7 +362,7 @@ static const bool8 sMovementTypeHasRange[NUM_MOVEMENT_TYPES] = { [MOVEMENT_TYPE_COPY_PLAYER_CLOCKWISE_IN_GRASS] = TRUE, }; -const u8 gInitialMovementTypeFacingDirections[] = { +const u8 gInitialMovementTypeFacingDirections[NUM_MOVEMENT_TYPES] = { [MOVEMENT_TYPE_NONE] = DIR_SOUTH, [MOVEMENT_TYPE_LOOK_AROUND] = DIR_SOUTH, [MOVEMENT_TYPE_WANDER_AROUND] = DIR_SOUTH, @@ -444,6 +444,7 @@ const u8 gInitialMovementTypeFacingDirections[] = { [MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_UP] = DIR_NORTH, [MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_LEFT] = DIR_WEST, [MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_RIGHT] = DIR_EAST, + [MOVEMENT_TYPE_FOLLOW_PLAYER] = DIR_SOUTH, }; #define OBJ_EVENT_PAL_TAG_BRENDAN 0x1100 From 5536a5535c5dd958896df5204c3f98a51266ef89 Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Mon, 30 Dec 2024 20:52:05 -0500 Subject: [PATCH 03/73] fix: made slitherTracks_Transitions a proper 2D array. Credit: jaizu --- src/event_object_movement.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/event_object_movement.c b/src/event_object_movement.c index acecd5d61d..8d682bce63 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -9309,10 +9309,10 @@ static void DoTracksGroundEffect_SlitherTracks(struct ObjectEvent *objEvent, str // each byte in that row is for the next direction of the bike in the order // of down, up, left, right. static const u8 slitherTracks_Transitions[4][4] = { - 1, 2, 7, 8, - 1, 2, 6, 5, - 5, 8, 3, 4, - 6, 7, 3, 4, + {1, 2, 7, 8}, + {1, 2, 6, 5}, + {5, 8, 3, 4}, + {6, 7, 3, 4}, }; if (objEvent->currentCoords.x != objEvent->previousCoords.x || objEvent->currentCoords.y != objEvent->previousCoords.y) From 57a198bca0adb08ad0f1d7d4c520f3203f3ceb6c Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Mon, 30 Dec 2024 20:44:07 -0500 Subject: [PATCH 04/73] feat: make follower sidestep or backstep with player during scripts --- src/event_object_movement.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 8d682bce63..5f1b3eba77 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -5189,6 +5189,7 @@ bool8 MovementType_FollowPlayer_Moving(struct ObjectEvent *objectEvent, struct S if (ObjectEventExecSingleMovementAction(objectEvent, sprite)) { #endif objectEvent->singleMovementActive = 0; + objectEvent->facingDirectionLocked = FALSE; if (sprite->sTypeFuncId) // restore nonzero state sprite->sTypeFuncId = 1; } else if (objectEvent->movementActionId < MOVEMENT_ACTION_EXIT_POKEBALL) { @@ -5258,6 +5259,15 @@ bool8 FollowablePlayerMovement_Step(struct ObjectEvent *objectEvent, struct Spri // Follow player direction = GetDirectionToFace(x, y, targetX, targetY); + // During a script, if player sidesteps or backsteps, + // mirror player's direction instead + if (ArePlayerFieldControlsLocked() + && gObjectEvents[gPlayerAvatar.objectEventId].facingDirection != gObjectEvents[gPlayerAvatar.objectEventId].movementDirection + ) { + direction = gObjectEvents[gPlayerAvatar.objectEventId].movementDirection; + objectEvent->facingDirectionLocked = TRUE; + } + MoveCoords(direction, &x, &y); #ifdef MB_SIDEWAYS_STAIRS_RIGHT_SIDE // https://github.com/ghoulslash/pokeemerald/tree/sideways_stairs GetCollisionAtCoords(objectEvent, x, y, direction); // Sets directionOverwrite for stairs From 3fffb9fac6c3eb9c232609565f5e84957630a32c Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Mon, 30 Dec 2024 21:33:17 -0500 Subject: [PATCH 05/73] feat: added configuration to restrict following pokemon. Closes #42 --- include/constants/event_objects.h | 21 +++++++++++++++++++++ src/event_object_movement.c | 10 +++++++++- 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/include/constants/event_objects.h b/include/constants/event_objects.h index 1d0f5a22e8..63d5f9c733 100644 --- a/include/constants/event_objects.h +++ b/include/constants/event_objects.h @@ -295,6 +295,27 @@ // FALSE: Script collisions unhandled, FLAG_SAFE_FOLLOWER_MOVEMENT off by default #define OW_MON_SCRIPT_MOVEMENT TRUE +// If set, the only pokemon allowed to follow you +// will be those matching species, met location, +// and/or met level; +// These accept vars, too: VAR_TEMP_1, etc +#define OW_MON_ALLOWED_SPECIES (0) +#define OW_MON_ALLOWED_MET_LVL (0) +#define OW_MON_ALLOWED_MET_LOC (0) +// Examples: +// Yellow Pikachu: +// #define OW_MON_ALLOWED_SPECIES (SPECIES_PIKACHU) +// #define OW_MON_ALLOWED_MET_LVL (0) +// #define OW_MON_ALLOWED_MET_LOC (MAPSEC_PALLET_TOWN) +// Hoenn Starter: +// #define OW_MON_ALLOWED_SPECIES (0) +// #define OW_MON_ALLOWED_MET_LVL (5) +// #define OW_MON_ALLOWED_MET_LOC (MAPSEC_ROUTE_101) +// Species set in VAR_XXXX: +// #define OW_MON_ALLOWED_SPECIES (VAR_XXXX) +// #define OW_MON_ALLOWED_MET_LVL (0) +// #define OW_MON_ALLOWED_MET_LOC (0) + #define SHADOW_SIZE_S 0 #define SHADOW_SIZE_M 1 #define SHADOW_SIZE_L 2 diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 5f1b3eba77..6498ceb455 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -1785,8 +1785,16 @@ u8 CreateVirtualObject(u8 graphicsId, u8 virtualObjId, s16 x, s16 y, u8 elevatio struct Pokemon *GetFirstLiveMon(void) { // Return address of first conscious party mon or NULL u32 i; for (i = 0; i < PARTY_SIZE; i++) { + struct Pokemon *mon = &gPlayerParty[i]; + if ((OW_MON_ALLOWED_SPECIES && GetMonData(mon, MON_DATA_SPECIES_OR_EGG) != VarGet(OW_MON_ALLOWED_SPECIES)) + || (OW_MON_ALLOWED_MET_LVL && GetMonData(mon, MON_DATA_MET_LEVEL) != VarGet(OW_MON_ALLOWED_MET_LVL)) + || (OW_MON_ALLOWED_MET_LOC && GetMonData(mon, MON_DATA_MET_LOCATION) != VarGet(OW_MON_ALLOWED_MET_LOC)) + ) { + continue; + } + if (gPlayerParty[i].hp > 0 && !(gPlayerParty[i].box.isEgg || gPlayerParty[i].box.isBadEgg)) - return &gPlayerParty[i]; + return &gPlayerParty[i]; } return NULL; } From 9e2057a9d473ac949f9dfde20a3df6b7a404a1c1 Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Mon, 30 Dec 2024 21:35:13 -0500 Subject: [PATCH 06/73] meta: updated README with new config settings --- README.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/README.md b/README.md index 07427e2bd5..1dd20434ee 100644 --- a/README.md +++ b/README.md @@ -75,6 +75,20 @@ A: Configuration for the follower system is mostly in [event_objects.h](include/ // Followers will emerge from the pokeball they are stored in, // instead of a normal pokeball #define OW_MON_POKEBALLS TRUE + +// New/old handling for followers during scripts; +// TRUE: Script collisions hide follower, FLAG_SAFE_FOLLOWER_MOVEMENT on by default +// (scripted player movement moves follower too!) +// FALSE: Script collisions unhandled, FLAG_SAFE_FOLLOWER_MOVEMENT off by default +#define OW_MON_SCRIPT_MOVEMENT TRUE + +// If set, the only pokemon allowed to follow you +// will be those matching species, met location, +// and/or met level; +// These accept vars, too: VAR_TEMP_1, etc +#define OW_MON_ALLOWED_SPECIES (0) +#define OW_MON_ALLOWED_MET_LVL (0) +#define OW_MON_ALLOWED_MET_LOC (0) ``` ### `(lighting)` Q: How do I mark certain colors in a palette as light-blended? From 01335fa453a90d9f48ce6d8f92a947cd1782b23c Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Thu, 23 Jun 2022 22:13:21 -0400 Subject: [PATCH 07/73] Unfreeze follower object during lockall (if safe movement flag set). MSGBOX_SIGN no longer freezes follower. --- data/scripts/std_msgbox.inc | 2 ++ src/scrcmd.c | 3 +++ 2 files changed, 5 insertions(+) diff --git a/data/scripts/std_msgbox.inc b/data/scripts/std_msgbox.inc index c46da56cbf..40026c8ea0 100644 --- a/data/scripts/std_msgbox.inc +++ b/data/scripts/std_msgbox.inc @@ -8,11 +8,13 @@ Std_MsgboxNPC: return Std_MsgboxSign: + setflag FLAG_SAFE_FOLLOWER_MOVEMENT lockall message NULL waitmessage waitbuttonpress releaseall + clearflag FLAG_SAFE_FOLLOWER_MOVEMENT return Std_MsgboxDefault: diff --git a/src/scrcmd.c b/src/scrcmd.c index 79b13534ab..a648bf105c 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -1248,8 +1248,11 @@ bool8 ScrCmd_lockall(struct ScriptContext *ctx) } else { + struct ObjectEvent *followerObj = GetFollowerObject(); FreezeObjects_WaitForPlayer(); SetupNativeScript(ctx, IsFreezePlayerFinished); + if (FlagGet(FLAG_SAFE_FOLLOWER_MOVEMENT) && followerObj) // Unfreeze follower object (conditionally) + UnfreezeObjectEvent(followerObj); return TRUE; } } From c492bb3fecd64c69a6a7d03d3a77e739451c871a Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Tue, 21 Jan 2025 23:27:28 -0500 Subject: [PATCH 08/73] fix: follower field movements after scripted movement update --- data/scripts/field_move_scripts.inc | 4 ---- 1 file changed, 4 deletions(-) diff --git a/data/scripts/field_move_scripts.inc b/data/scripts/field_move_scripts.inc index dc161eb560..1db60ea0b8 100644 --- a/data/scripts/field_move_scripts.inc +++ b/data/scripts/field_move_scripts.inc @@ -126,7 +126,6 @@ EventScript_FollowerSwap: return EventScript_FollowerMoveNorth: - applymovement OBJ_EVENT_ID_FOLLOWER, Movement_WalkUp applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkDown waitmovement 0 applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_FaceUp @@ -134,7 +133,6 @@ EventScript_FollowerMoveNorth: return EventScript_FollowerMoveEast: - applymovement OBJ_EVENT_ID_FOLLOWER, Movement_WalkRight applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkLeft waitmovement 0 applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_FaceRight @@ -142,7 +140,6 @@ EventScript_FollowerMoveEast: return EventScript_FollowerMoveSouth: - applymovement OBJ_EVENT_ID_FOLLOWER, Movement_WalkDown applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkUp waitmovement 0 applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_FaceDown @@ -150,7 +147,6 @@ EventScript_FollowerMoveSouth: return EventScript_FollowerMoveWest: - applymovement OBJ_EVENT_ID_FOLLOWER, Movement_WalkLeft applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkRight waitmovement 0 applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_FaceLeft From ce9f3b95f38dc741d671f82b61c0c0f01ae50b73 Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Tue, 21 Jan 2025 23:27:57 -0500 Subject: [PATCH 09/73] fix: non-following pokemon using slide-in battle animation --- src/battle_controller_player.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c index bdff3ad77d..417ee70105 100644 --- a/src/battle_controller_player.c +++ b/src/battle_controller_player.c @@ -2198,17 +2198,24 @@ static void PlayerHandleSwitchInAnim(void) gBattlerControllerFuncs[gActiveBattler] = SwitchIn_TryShinyAnimShowHealthbox; } -// In normal singles, if follower pokemon is out, have it slide in instead of being thrown +// In normal singles, if follower pokemon exists, +// and the pokemon following is being sent out, +// have it slide in instead of being thrown static bool8 ShouldDoSlideInAnim(void) { struct ObjectEvent *followerObj = GetFollowerObject(); if (!followerObj || followerObj->invisible) return FALSE; + if (gBattleTypeFlags & ( BATTLE_TYPE_LINK | BATTLE_TYPE_DOUBLE | BATTLE_TYPE_FRONTIER | BATTLE_TYPE_FIRST_BATTLE | BATTLE_TYPE_SAFARI | BATTLE_TYPE_WALLY_TUTORIAL | BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_TWO_OPPONENTS | BATTLE_TYPE_INGAME_PARTNER | BATTLE_TYPE_RECORDED | BATTLE_TYPE_TRAINER_HILL) ) return FALSE; + + if (GetFirstLiveMon() != &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]) + return FALSE; + return TRUE; } From d73167e262beb20eb529357692365ab9ed8414e6 Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Sat, 25 Jan 2025 21:37:16 -0500 Subject: [PATCH 10/73] fix: treat 1-tile jumps as slow copyable movement for follower pokemon --- src/event_object_movement.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 6498ceb455..30f81e0c81 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -5986,6 +5986,9 @@ static const u8 sActionIdToCopyableMovement[] = { [MOVEMENT_ACTION_JUMP_2_DOWN ... MOVEMENT_ACTION_JUMP_2_RIGHT] = COPY_MOVE_JUMP2, [MOVEMENT_ACTION_WALK_FAST_DOWN ... MOVEMENT_ACTION_WALK_FAST_RIGHT] = COPY_MOVE_WALK, [MOVEMENT_ACTION_RIDE_WATER_CURRENT_DOWN ... MOVEMENT_ACTION_PLAYER_RUN_RIGHT] = COPY_MOVE_WALK, + // Not a typo; follower needs to take an action with a duration == JUMP's, + // and JUMP2 here will lead to WALK_SLOW later + [MOVEMENT_ACTION_JUMP_DOWN ... MOVEMENT_ACTION_JUMP_RIGHT] = COPY_MOVE_JUMP2, [MOVEMENT_ACTION_NONE] = COPY_MOVE_NONE, }; From bc421740e8b3fea023fd0fbc66f079e638e7f60c Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Wed, 29 Jan 2025 23:12:45 -0500 Subject: [PATCH 11/73] fix: fixed compilation error when OW_GFX_COMPRESS is FALSE --- src/event_object_movement.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 059e64bb07..5353acbb8b 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -2041,8 +2041,9 @@ static void RefreshFollowerGraphics(struct ObjectEvent *objEvent) { sprite->y += -(graphicsInfo->height >> 1) - sprite->centerToCornerVecY; } - if (OW_GFX_COMPRESS) - LoadSheetGraphicsInfo(graphicsInfo, objEvent->graphicsId, sprite); + #if OW_GFX_COMPRESS + LoadSheetGraphicsInfo(graphicsInfo, objEvent->graphicsId, sprite); + #endif sprite->oam.shape = graphicsInfo->oam->shape; sprite->oam.size = graphicsInfo->oam->size; From a859f40e376d1048017d440d3215cb201787bc53 Mon Sep 17 00:00:00 2001 From: Hedara Date: Wed, 12 Feb 2025 14:31:42 +0100 Subject: [PATCH 12/73] Review comments --- data/scripts/std_msgbox.inc | 4 ++-- include/config/overworld.h | 8 +++++++- include/constants/event_objects.h | 20 -------------------- src/event_object_movement.c | 12 ++++++------ src/scrcmd.c | 9 ++++++--- src/script.c | 2 +- src/script_movement.c | 2 +- 7 files changed, 23 insertions(+), 34 deletions(-) diff --git a/data/scripts/std_msgbox.inc b/data/scripts/std_msgbox.inc index 40026c8ea0..8d5e4167cb 100644 --- a/data/scripts/std_msgbox.inc +++ b/data/scripts/std_msgbox.inc @@ -8,13 +8,13 @@ Std_MsgboxNPC: return Std_MsgboxSign: - setflag FLAG_SAFE_FOLLOWER_MOVEMENT + setflag FLAG_SAFE_FOLLOWER_MOVEMENT lockall message NULL waitmessage waitbuttonpress releaseall - clearflag FLAG_SAFE_FOLLOWER_MOVEMENT + clearflag FLAG_SAFE_FOLLOWER_MOVEMENT return Std_MsgboxDefault: diff --git a/include/config/overworld.h b/include/config/overworld.h index ff5937743c..7f5be368c2 100644 --- a/include/config/overworld.h +++ b/include/config/overworld.h @@ -54,10 +54,16 @@ // 16x32, 32x32, 64x64 etc are fine #define OW_MON_WANDER_WALK TRUE // If true, OW pokemon with MOVEMENT_TYPE_WANDER will walk-in-place in between steps. // Follower Pokémon -#define OW_FOLLOWERS_ENABLED TRUE // Enables follower Pokémon, HGSS style. Requires OW_POKEMON_OBJECT_EVENTS. Note that additional scripting may be required for them to be fully supported! +#define OW_FOLLOWERS_ENABLED FALSE // Enables follower Pokémon, HGSS style. Requires OW_POKEMON_OBJECT_EVENTS. Note that additional scripting may be required for them to be fully supported! #define OW_FOLLOWERS_BOBBING TRUE // If true, follower pokemon will bob up and down during their idle & walking animations #define OW_FOLLOWERS_POKEBALLS TRUE // Followers will emerge from the pokeball they are stored in, instead of a normal pokeball +// New/old handling for followers during scripts; +// TRUE: Script collisions hide follower, FLAG_SAFE_FOLLOWER_MOVEMENT on by default +// (scripted player movement moves follower too!) +// FALSE: Script collisions unhandled, FLAG_SAFE_FOLLOWER_MOVEMENT off by default +#define OW_FOLLOWERS_SCRIPT_MOVEMENT TRUE + // Out-of-battle Ability effects #define OW_SYNCHRONIZE_NATURE GEN_LATEST // In Gen8+, if a Pokémon with Synchronize leads the party, wild Pokémon will always have their same Nature as opposed to the 50% chance in previous games. Gift Pokémon excluded. // In USUM (here GEN_7), if a Pokémon with Synchronize leads the party, gift Pokémon will always have their same Nature regardless of their Egg Group. diff --git a/include/constants/event_objects.h b/include/constants/event_objects.h index 63849ec676..b9f2622b54 100644 --- a/include/constants/event_objects.h +++ b/include/constants/event_objects.h @@ -295,26 +295,6 @@ #define SHADOW_SIZE_XL_BATTLE_ONLY SHADOW_SIZE_NONE // Battle-only definition for XL shadow size. -// If true, adds a small amount of overhead -// to OW code so that large (48x48, 64x64) OWs -// will display correctly under bridges, etc. -#define LARGE_OW_SUPPORT TRUE - -// See global.h for the toggle of OW_GFX_COMPRESS -// Compressed gfx are incompatible with non-power-of-two sprite sizes: -// (You should not use 48x48 sprites/tables for compressed gfx) -// 16x32, 32x32, 64x64 etc are fine - -// Followers will emerge from the pokeball they are stored in, -// instead of a normal pokeball -#define OW_MON_POKEBALLS TRUE - -// New/old handling for followers during scripts; -// TRUE: Script collisions hide follower, FLAG_SAFE_FOLLOWER_MOVEMENT on by default -// (scripted player movement moves follower too!) -// FALSE: Script collisions unhandled, FLAG_SAFE_FOLLOWER_MOVEMENT off by default -#define OW_MON_SCRIPT_MOVEMENT TRUE - // If set, the only pokemon allowed to follow you // will be those matching species, met location, // and/or met level; diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 5c7243b0f8..e6c3c4ddf5 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -2092,9 +2092,8 @@ static void RefreshFollowerGraphics(struct ObjectEvent *objEvent) sprite->y += -(graphicsInfo->height >> 1) - sprite->centerToCornerVecY; } - #if OW_GFX_COMPRESS - LoadSheetGraphicsInfo(graphicsInfo, objEvent->graphicsId, sprite); - #endif + if (OW_GFX_COMPRESS) + LoadSheetGraphicsInfo(graphicsInfo, objEvent->graphicsId, sprite); sprite->oam.shape = graphicsInfo->oam->shape; sprite->oam.size = graphicsInfo->oam->size; @@ -5515,8 +5514,8 @@ bool8 FollowablePlayerMovement_Step(struct ObjectEvent *objectEvent, struct Spri // During a script, if player sidesteps or backsteps, // mirror player's direction instead if (ArePlayerFieldControlsLocked() - && gObjectEvents[gPlayerAvatar.objectEventId].facingDirection != gObjectEvents[gPlayerAvatar.objectEventId].movementDirection - ) { + && gObjectEvents[gPlayerAvatar.objectEventId].facingDirection != gObjectEvents[gPlayerAvatar.objectEventId].movementDirection) + { direction = gObjectEvents[gPlayerAvatar.objectEventId].movementDirection; objectEvent->facingDirectionLocked = TRUE; } @@ -6209,7 +6208,8 @@ u32 GetObjectObjectCollidesWith(struct ObjectEvent *objectEvent, s16 x, s16 y, b if (objectEvent->localId == OBJ_EVENT_ID_FOLLOWER) return OBJECT_EVENTS_COUNT; // follower cannot collide with other objects, but they can collide with it - if (addCoords) { + if (addCoords) + { x += objectEvent->currentCoords.x; y += objectEvent->currentCoords.y; } diff --git a/src/scrcmd.c b/src/scrcmd.c index 1dd23c36b3..b45a0d76a3 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -998,7 +998,8 @@ bool8 ScrCmd_fadeinbgm(struct ScriptContext *ctx) return FALSE; } -struct ObjectEvent * ScriptHideFollower(void) { +struct ObjectEvent * ScriptHideFollower(void) +{ struct ObjectEvent *obj = GetFollowerObject(); if (obj == NULL || obj->invisible) @@ -2562,11 +2563,13 @@ bool8 Scrcmd_getobjectfacingdirection(struct ScriptContext *ctx) return FALSE; } -bool8 ScrFunc_hidefollower(struct ScriptContext *ctx) { +bool8 ScrFunc_hidefollower(struct ScriptContext *ctx) +{ bool16 wait = VarGet(ScriptReadHalfword(ctx)); struct ObjectEvent *obj; - if ((obj = ScriptHideFollower()) != NULL && wait) { + if ((obj = ScriptHideFollower()) != NULL && wait) + { sMovingNpcId = obj->localId; sMovingNpcMapGroup = obj->mapGroup; sMovingNpcMapNum = obj->mapNum; diff --git a/src/script.c b/src/script.c index 91cf29a87a..acdaf3f241 100644 --- a/src/script.c +++ b/src/script.c @@ -256,7 +256,7 @@ void ScriptContext_SetupScript(const u8 *ptr) InitScriptContext(&sGlobalScriptContext, gScriptCmdTable, gScriptCmdTableEnd); SetupBytecodeScript(&sGlobalScriptContext, ptr); LockPlayerFieldControls(); - if (OW_MON_SCRIPT_MOVEMENT) + if (OW_FOLLOWERS_SCRIPT_MOVEMENT) FlagSet(FLAG_SAFE_FOLLOWER_MOVEMENT); sGlobalScriptContextStatus = CONTEXT_RUNNING; } diff --git a/src/script_movement.c b/src/script_movement.c index 021be6d621..28e9e02a47 100644 --- a/src/script_movement.c +++ b/src/script_movement.c @@ -222,7 +222,7 @@ static void ScriptMovement_TakeStep(u8 taskId, u8 moveScrId, u8 objEventId, cons // a non-player object collides with an active follower pokemon, // put that follower into a pokeball // (sTimer helps limit this expensive check to once per step) - if (OW_MON_SCRIPT_MOVEMENT && + if (OW_FOLLOWERS_SCRIPT_MOVEMENT && gSprites[obj->spriteId].sTimer == 1 && (objEventId = GetObjectObjectCollidesWith(obj, 0, 0, TRUE)) < OBJECT_EVENTS_COUNT && // switch `obj` to follower From f20aebf87856f8396071e0468a0376e328df1bea Mon Sep 17 00:00:00 2001 From: hedara90 <90hedara@gmail.com> Date: Wed, 12 Feb 2025 21:57:51 +0100 Subject: [PATCH 13/73] Fixed multi battle forced switches (#6243) Co-authored-by: Hedara Co-authored-by: Alex <93446519+AlexOn1ine@users.noreply.github.com> --- src/battle_script_commands.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index d962390fd8..a34a6dc4b0 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -12038,7 +12038,6 @@ static void Cmd_forcerandomswitch(void) { CMD_ARGS(const u8 *failInstr); - s32 i; s32 battler1PartyId = 0; s32 battler2PartyId = 0; @@ -12173,7 +12172,7 @@ static void Cmd_forcerandomswitch(void) battler1PartyId = gBattlerPartyIndexes[gBattlerTarget]; } - for (i = firstMonId; i < lastMonId; i++) + for (u32 i = firstMonId; i < lastMonId; i++) { if (GetMonData(&party[i], MON_DATA_SPECIES) != SPECIES_NONE && !GetMonData(&party[i], MON_DATA_IS_EGG) @@ -12204,12 +12203,12 @@ static void Cmd_forcerandomswitch(void) || (gBattleTypeFlags & BATTLE_TYPE_RECORDED_LINK && gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER) || (gBattleTypeFlags & BATTLE_TYPE_RECORDED_LINK && gBattleTypeFlags & BATTLE_TYPE_MULTI)) { - SwitchPartyOrderLinkMulti(gBattlerTarget, i, 0); - SwitchPartyOrderLinkMulti(BATTLE_PARTNER(gBattlerTarget), i, 1); + SwitchPartyOrderLinkMulti(gBattlerTarget, gBattleStruct->monToSwitchIntoId[gBattlerTarget], 0); + SwitchPartyOrderLinkMulti(BATTLE_PARTNER(gBattlerTarget), gBattleStruct->monToSwitchIntoId[gBattlerTarget], 1); } if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER) - SwitchPartyOrderInGameMulti(gBattlerTarget, i); + SwitchPartyOrderInGameMulti(gBattlerTarget, gBattleStruct->monToSwitchIntoId[gBattlerTarget]); } } else From 4f3326f3f4984eadcdde56b090831ea5123599e5 Mon Sep 17 00:00:00 2001 From: Zatsu <118256341+fakuzatsu@users.noreply.github.com> Date: Wed, 12 Feb 2025 21:02:25 +0000 Subject: [PATCH 14/73] fix for battle ui for add to party menu (#6229) (#6240) --- include/reshow_battle_screen.h | 1 + src/battle_script_commands.c | 3 +- src/party_menu.c | 9 ++-- src/reshow_battle_screen.c | 99 ++++++++++++++++++++++++++++++++++ 4 files changed, 105 insertions(+), 7 deletions(-) diff --git a/include/reshow_battle_screen.h b/include/reshow_battle_screen.h index 07958bf6c0..59f9c79106 100644 --- a/include/reshow_battle_screen.h +++ b/include/reshow_battle_screen.h @@ -3,6 +3,7 @@ void ReshowBattleScreenDummy(void); void ReshowBattleScreenAfterMenu(void); +void ReshowBlankBattleScreenAfterMenu(void); void CreateBattlerSprite(u32 battler); #endif // GUARD_RESHOW_BATTLE_SCREEN_H diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 5cde7286c5..4635fe0cee 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -16356,12 +16356,13 @@ static void Cmd_trygivecaughtmonnick(void) { GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerTarget]], MON_DATA_NICKNAME, gBattleStruct->caughtMonNick); FreeAllWindowBuffers(); + MainCallback callback = CalculatePlayerPartyCount() == PARTY_SIZE ? ReshowBlankBattleScreenAfterMenu : BattleMainCB2; DoNamingScreen(NAMING_SCREEN_CAUGHT_MON, gBattleStruct->caughtMonNick, GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerTarget]], MON_DATA_SPECIES), GetMonGender(&gEnemyParty[gBattlerPartyIndexes[gBattlerTarget]]), GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerTarget]], MON_DATA_PERSONALITY, NULL), - ReshowBattleScreenAfterMenu); + callback); gBattleCommunication[MULTIUSE_STATE]++; } diff --git a/src/party_menu.c b/src/party_menu.c index 784f13acdd..5e79d74d45 100644 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -7183,14 +7183,11 @@ static u8 GetPartyLayoutFromBattleType(void) void OpenPartyMenuInBattle(u8 partyAction) { - u8 partyMessage; - if (partyAction == PARTY_ACTION_SEND_MON_TO_BOX) - partyMessage = PARTY_MSG_CHOOSE_MON_FOR_BOX; + InitPartyMenu(PARTY_MENU_TYPE_IN_BATTLE, GetPartyLayoutFromBattleType(), partyAction, FALSE, PARTY_MSG_CHOOSE_MON_FOR_BOX, Task_HandleChooseMonInput, ReshowBlankBattleScreenAfterMenu); else - partyMessage = PARTY_MSG_CHOOSE_MON; - - InitPartyMenu(PARTY_MENU_TYPE_IN_BATTLE, GetPartyLayoutFromBattleType(), partyAction, FALSE, partyMessage, Task_HandleChooseMonInput, CB2_SetUpReshowBattleScreenAfterMenu); + InitPartyMenu(PARTY_MENU_TYPE_IN_BATTLE, GetPartyLayoutFromBattleType(), partyAction, FALSE, PARTY_MSG_CHOOSE_MON, Task_HandleChooseMonInput, CB2_SetUpReshowBattleScreenAfterMenu); + ReshowBattleScreenDummy(); UpdatePartyToBattleOrder(); } diff --git a/src/reshow_battle_screen.c b/src/reshow_battle_screen.c index 87f639194c..ba6f615595 100644 --- a/src/reshow_battle_screen.c +++ b/src/reshow_battle_screen.c @@ -18,9 +18,11 @@ // this file's functions static void CB2_ReshowBattleScreenAfterMenu(void); +static void CB2_ReshowBlankBattleScreenAfterMenu(void); static bool8 LoadBattlerSpriteGfx(u32 battler); static void CreateHealthboxSprite(u32 battler); static void ClearBattleBgCntBaseBlocks(void); +static void CreateCaughtMonSprite(void); void ReshowBattleScreenDummy(void) { @@ -168,6 +170,89 @@ static void CB2_ReshowBattleScreenAfterMenu(void) gBattleScripting.reshowMainState++; } +void ReshowBlankBattleScreenAfterMenu(void) +{ + gPaletteFade.bufferTransferDisabled = 1; + SetHBlankCallback(NULL); + SetVBlankCallback(NULL); + SetGpuReg(REG_OFFSET_MOSAIC, 0); + gBattleScripting.reshowMainState = 0; + gBattleScripting.reshowHelperState = 0; + SetMainCallback2(CB2_ReshowBlankBattleScreenAfterMenu); +} + +static void CB2_ReshowBlankBattleScreenAfterMenu(void) +{ + switch (gBattleScripting.reshowMainState) + { + case 0: + ScanlineEffect_Clear(); + BattleInitBgsAndWindows(); + SetBgAttribute(1, BG_ATTR_CHARBASEINDEX, 0); + SetBgAttribute(2, BG_ATTR_CHARBASEINDEX, 0); + ShowBg(0); + ShowBg(1); + ShowBg(2); + ShowBg(3); + ResetPaletteFade(); + gBattle_BG0_X = 0; + gBattle_BG0_Y = 0; + gBattle_BG1_X = 0; + gBattle_BG1_Y = 0; + gBattle_BG2_X = 0; + gBattle_BG2_Y = 0; + gBattle_BG3_X = 255; + gBattle_BG3_Y = 0; + break; + case 1: + CpuFastFill(0, (void *)(VRAM), VRAM_SIZE); + break; + case 2: + LoadBattleTextboxAndBackground(); + break; + case 3: + ResetSpriteData(); + break; + case 4: + FreeAllSpritePalettes(); + gReservedSpritePaletteCount = MAX_BATTLERS_COUNT; + break; + case 5: + ClearSpritesHealthboxAnimData(); + break; + case 6: + if (!LoadBattlerSpriteGfx(0)) + gBattleScripting.reshowMainState--; + break; + case 7: + if (!LoadBattlerSpriteGfx(1)) + gBattleScripting.reshowMainState--; + break; + case 8: + if (!LoadBattlerSpriteGfx(2)) + gBattleScripting.reshowMainState--; + break; + case 9: + if (!LoadBattlerSpriteGfx(3)) + gBattleScripting.reshowMainState--; + break; + case 10: + if (gBattleScripting.monCaught) + CreateCaughtMonSprite(); // displays the caught mon for the switch into party feature + break; + default: + SetVBlankCallback(VBlankCB_Battle); + ClearBattleBgCntBaseBlocks(); + BeginHardwarePaletteFade(0xFF, 0, 0x10, 0, 1); + gPaletteFade.bufferTransferDisabled = 0; + SetMainCallback2(BattleMainCB2); + FillAroundBattleWindows(); + break; + } + + gBattleScripting.reshowMainState++; +} + static void ClearBattleBgCntBaseBlocks(void) { vBgCnt *regBgcnt1, *regBgcnt2; @@ -311,3 +396,17 @@ static void CreateHealthboxSprite(u32 battler) } } } + +static void CreateCaughtMonSprite(void) +{ + SetMultiuseSpriteTemplateToPokemon(GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerTarget]], MON_DATA_SPECIES), GetBattlerPosition(gBattlerTarget)); + gBattlerSpriteIds[gBattlerTarget] = CreateSprite(&gMultiuseSpriteTemplate, DISPLAY_WIDTH / 2, DISPLAY_HEIGHT / 2, GetBattlerSpriteSubpriority(gBattlerTarget)); + gSprites[gBattlerSpriteIds[gBattlerTarget]].oam.paletteNum = gBattlerTarget; + gSprites[gBattlerSpriteIds[gBattlerTarget]].callback = SpriteCallbackDummy; + gSprites[gBattlerSpriteIds[gBattlerTarget]].data[0] = gBattlerTarget; + gSprites[gBattlerSpriteIds[gBattlerTarget]].data[2] = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerTarget]], MON_DATA_SPECIES); + + StartSpriteAnim(&gSprites[gBattlerSpriteIds[gBattlerTarget]], 0); + + gSprites[gBattlerSpriteIds[gBattlerTarget]].invisible = FALSE; +} From 9aea7c8e3ab1cf312a21b697e64c9a6452b4b938 Mon Sep 17 00:00:00 2001 From: hedara90 <90hedara@gmail.com> Date: Wed, 12 Feb 2025 23:36:37 +0100 Subject: [PATCH 15/73] Changed bit order for follower graphicsId creation (#6249) Co-authored-by: Hedara --- include/constants/event_objects.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/include/constants/event_objects.h b/include/constants/event_objects.h index 219b990c5d..306aa055aa 100644 --- a/include/constants/event_objects.h +++ b/include/constants/event_objects.h @@ -270,10 +270,10 @@ #define OBJ_EVENT_GFX_VAR_E (OBJ_EVENT_GFX_VARS + 0xE) #define OBJ_EVENT_GFX_VAR_F (OBJ_EVENT_GFX_VARS + 0xF) -#define OBJ_EVENT_MON (1 << 13) -#define OBJ_EVENT_MON_SHINY (1 << 14) -#define OBJ_EVENT_MON_FEMALE (1 << 15) -#define OBJ_EVENT_MON_SPECIES_MASK (OBJ_EVENT_MON - 1) +#define OBJ_EVENT_MON (1u << 15) +#define OBJ_EVENT_MON_SHINY (1u << 14) +#define OBJ_EVENT_MON_FEMALE (1u << 13) +#define OBJ_EVENT_MON_SPECIES_MASK (~(7u << 13)) // Used to call a specific species' follower graphics. Useful for static encounters. #define OBJ_EVENT_GFX_SPECIES(name) (SPECIES_##name + OBJ_EVENT_MON) From 7d1bbf62e1415530f31a469d737f79955a7c2b22 Mon Sep 17 00:00:00 2001 From: hedara90 <90hedara@gmail.com> Date: Thu, 13 Feb 2025 10:23:06 +0100 Subject: [PATCH 16/73] Apply suggestions from code review Co-authored-by: Bassoonian --- asm/macros/event.inc | 4 +--- src/event_object_movement.c | 18 +++++++++--------- src/scrcmd.c | 8 ++++---- src/script_movement.c | 12 +++++------- 4 files changed, 19 insertions(+), 23 deletions(-) diff --git a/asm/macros/event.inc b/asm/macros/event.inc index 3018a774b6..4c0bf54514 100644 --- a/asm/macros/event.inc +++ b/asm/macros/event.inc @@ -2440,9 +2440,7 @@ .2byte \dest .endm - @ hide any follower pokemon if present, - @ putting them into their pokeball; - @ by default waits for their movement to finish + @ Hides any follower Pokémon if present, putting them into their Poké Ball; by default waits for their movement to finish. .macro hidefollower wait=1 callnative ScrFunc_hidefollower .2byte \wait diff --git a/src/event_object_movement.c b/src/event_object_movement.c index e6c3c4ddf5..8b7733d4e4 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -1928,8 +1928,8 @@ struct Pokemon *GetFirstLiveMon(void) { struct Pokemon *mon = &gPlayerParty[i]; if ((OW_MON_ALLOWED_SPECIES && GetMonData(mon, MON_DATA_SPECIES_OR_EGG) != VarGet(OW_MON_ALLOWED_SPECIES)) - || (OW_MON_ALLOWED_MET_LVL && GetMonData(mon, MON_DATA_MET_LEVEL) != VarGet(OW_MON_ALLOWED_MET_LVL)) - || (OW_MON_ALLOWED_MET_LOC && GetMonData(mon, MON_DATA_MET_LOCATION) != VarGet(OW_MON_ALLOWED_MET_LOC))) + || (OW_MON_ALLOWED_MET_LVL && GetMonData(mon, MON_DATA_MET_LEVEL) != VarGet(OW_MON_ALLOWED_MET_LVL)) + || (OW_MON_ALLOWED_MET_LOC && GetMonData(mon, MON_DATA_MET_LOCATION) != VarGet(OW_MON_ALLOWED_MET_LOC))) { continue; } @@ -5514,7 +5514,7 @@ bool8 FollowablePlayerMovement_Step(struct ObjectEvent *objectEvent, struct Spri // During a script, if player sidesteps or backsteps, // mirror player's direction instead if (ArePlayerFieldControlsLocked() - && gObjectEvents[gPlayerAvatar.objectEventId].facingDirection != gObjectEvents[gPlayerAvatar.objectEventId].movementDirection) + && gObjectEvents[gPlayerAvatar.objectEventId].facingDirection != gObjectEvents[gPlayerAvatar.objectEventId].movementDirection) { direction = gObjectEvents[gPlayerAvatar.objectEventId].movementDirection; objectEvent->facingDirectionLocked = TRUE; @@ -6412,9 +6412,9 @@ bool8 ObjectEventSetHeldMovement(struct ObjectEvent *objectEvent, u8 movementAct // When player is moved via script, set copyable movement // for any followers via a lookup table - if (ArePlayerFieldControlsLocked() && - objectEvent->isPlayer && - FlagGet(FLAG_SAFE_FOLLOWER_MOVEMENT)) + if (ArePlayerFieldControlsLocked() + && objectEvent->isPlayer + && FlagGet(FLAG_SAFE_FOLLOWER_MOVEMENT)) { objectEvent->playerCopyableMovement = sActionIdToCopyableMovement[objectEvent->movementActionId]; } @@ -6445,9 +6445,9 @@ void ObjectEventClearHeldMovement(struct ObjectEvent *objectEvent) // When player is moved via script, set copyable movement // for any followers via a lookup table - if (ArePlayerFieldControlsLocked() && - objectEvent->isPlayer && - FlagGet(FLAG_SAFE_FOLLOWER_MOVEMENT)) + if (ArePlayerFieldControlsLocked() + && objectEvent->isPlayer + && FlagGet(FLAG_SAFE_FOLLOWER_MOVEMENT)) { objectEvent->playerCopyableMovement = sActionIdToCopyableMovement[objectEvent->movementActionId]; } diff --git a/src/scrcmd.c b/src/scrcmd.c index b45a0d76a3..9b4d00143a 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -998,7 +998,7 @@ bool8 ScrCmd_fadeinbgm(struct ScriptContext *ctx) return FALSE; } -struct ObjectEvent * ScriptHideFollower(void) +struct ObjectEvent *ScriptHideFollower(void) { struct ObjectEvent *obj = GetFollowerObject(); @@ -1030,9 +1030,9 @@ bool8 ScrCmd_applymovement(struct ScriptContext *ctx) gObjectEvents[GetObjectEventIdByLocalId(localId)].directionOverwrite = DIR_NONE; ScriptMovement_StartObjectMovementScript(localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, movementScript); sMovingNpcId = localId; - if (localId != OBJ_EVENT_ID_FOLLOWER && - !FlagGet(FLAG_SAFE_FOLLOWER_MOVEMENT) - && (movementScript < Common_Movement_FollowerSafeStart || movementScript > Common_Movement_FollowerSafeEnd)) + if (localId != OBJ_EVENT_ID_FOLLOWER + && !FlagGet(FLAG_SAFE_FOLLOWER_MOVEMENT) + && (movementScript < Common_Movement_FollowerSafeStart || movementScript > Common_Movement_FollowerSafeEnd)) { ScriptHideFollower(); } diff --git a/src/script_movement.c b/src/script_movement.c index 28e9e02a47..80d9b323f6 100644 --- a/src/script_movement.c +++ b/src/script_movement.c @@ -215,19 +215,17 @@ static void ScriptMovement_TakeStep(u8 taskId, u8 moveScrId, u8 objEventId, cons u8 nextMoveActionId; struct ObjectEvent *obj = &gObjectEvents[objEventId]; - if (ObjectEventIsHeldMovementActive(obj) && - !ObjectEventClearHeldMovementIfFinished(obj)) + if (ObjectEventIsHeldMovementActive(obj) && !ObjectEventClearHeldMovementIfFinished(obj)) { // If, while undergoing scripted movement, // a non-player object collides with an active follower pokemon, // put that follower into a pokeball // (sTimer helps limit this expensive check to once per step) - if (OW_FOLLOWERS_SCRIPT_MOVEMENT && - gSprites[obj->spriteId].sTimer == 1 && - (objEventId = GetObjectObjectCollidesWith(obj, 0, 0, TRUE)) < OBJECT_EVENTS_COUNT && + if (OW_FOLLOWERS_SCRIPT_MOVEMENT && gSprites[obj->spriteId].sTimer == 1 + && (objEventId = GetObjectObjectCollidesWith(obj, 0, 0, TRUE)) < OBJECT_EVENTS_COUNT // switch `obj` to follower - ((obj = &gObjectEvents[objEventId])->movementType == MOVEMENT_TYPE_FOLLOW_PLAYER) && - gSprites[obj->spriteId].sTypeFuncId != 0) + && ((obj = &gObjectEvents[objEventId])->movementType == MOVEMENT_TYPE_FOLLOW_PLAYER) + && gSprites[obj->spriteId].sTypeFuncId != 0) { ClearObjectEventMovement(obj, &gSprites[obj->spriteId]); ScriptMovement_StartObjectMovementScript(obj->localId, obj->mapNum, obj->mapGroup, EnterPokeballMovement); From 0da3e4988940cb34c654f063621ba1851b8a12d7 Mon Sep 17 00:00:00 2001 From: Hedara Date: Thu, 13 Feb 2025 10:36:52 +0100 Subject: [PATCH 17/73] Review comments --- include/config/overworld.h | 29 ++++++++++++++++++++++++----- include/constants/event_objects.h | 21 --------------------- include/constants/flags.h | 5 ++--- 3 files changed, 26 insertions(+), 29 deletions(-) diff --git a/include/config/overworld.h b/include/config/overworld.h index 7f5be368c2..e09e423a35 100644 --- a/include/config/overworld.h +++ b/include/config/overworld.h @@ -58,11 +58,30 @@ #define OW_FOLLOWERS_BOBBING TRUE // If true, follower pokemon will bob up and down during their idle & walking animations #define OW_FOLLOWERS_POKEBALLS TRUE // Followers will emerge from the pokeball they are stored in, instead of a normal pokeball -// New/old handling for followers during scripts; -// TRUE: Script collisions hide follower, FLAG_SAFE_FOLLOWER_MOVEMENT on by default -// (scripted player movement moves follower too!) -// FALSE: Script collisions unhandled, FLAG_SAFE_FOLLOWER_MOVEMENT off by default -#define OW_FOLLOWERS_SCRIPT_MOVEMENT TRUE + +#define OW_FOLLOWERS_SCRIPT_MOVEMENT TRUE // TRUE: Script collisions hide follower, FLAG_SAFE_FOLLOWER_MOVEMENT on by default + // FALSE: Script collisions unhandled, FLAG_SAFE_FOLLOWER_MOVEMENT off by default + +// If set, the only pokemon allowed to follow you +// will be those matching species, met location, +// and/or met level; +// These accept vars, too: VAR_TEMP_1, etc +#define OW_MON_ALLOWED_SPECIES (0) +#define OW_MON_ALLOWED_MET_LVL (0) +#define OW_MON_ALLOWED_MET_LOC (0) +// Examples: +// Yellow Pikachu: +// #define OW_MON_ALLOWED_SPECIES (SPECIES_PIKACHU) +// #define OW_MON_ALLOWED_MET_LVL (0) +// #define OW_MON_ALLOWED_MET_LOC (MAPSEC_PALLET_TOWN) +// Hoenn Starter: +// #define OW_MON_ALLOWED_SPECIES (0) +// #define OW_MON_ALLOWED_MET_LVL (5) +// #define OW_MON_ALLOWED_MET_LOC (MAPSEC_ROUTE_101) +// Species set in VAR_XXXX: +// #define OW_MON_ALLOWED_SPECIES (VAR_XXXX) +// #define OW_MON_ALLOWED_MET_LVL (0) +// #define OW_MON_ALLOWED_MET_LOC (0) // Out-of-battle Ability effects #define OW_SYNCHRONIZE_NATURE GEN_LATEST // In Gen8+, if a Pokémon with Synchronize leads the party, wild Pokémon will always have their same Nature as opposed to the 50% chance in previous games. Gift Pokémon excluded. diff --git a/include/constants/event_objects.h b/include/constants/event_objects.h index b9f2622b54..219b990c5d 100644 --- a/include/constants/event_objects.h +++ b/include/constants/event_objects.h @@ -295,27 +295,6 @@ #define SHADOW_SIZE_XL_BATTLE_ONLY SHADOW_SIZE_NONE // Battle-only definition for XL shadow size. -// If set, the only pokemon allowed to follow you -// will be those matching species, met location, -// and/or met level; -// These accept vars, too: VAR_TEMP_1, etc -#define OW_MON_ALLOWED_SPECIES (0) -#define OW_MON_ALLOWED_MET_LVL (0) -#define OW_MON_ALLOWED_MET_LOC (0) -// Examples: -// Yellow Pikachu: -// #define OW_MON_ALLOWED_SPECIES (SPECIES_PIKACHU) -// #define OW_MON_ALLOWED_MET_LVL (0) -// #define OW_MON_ALLOWED_MET_LOC (MAPSEC_PALLET_TOWN) -// Hoenn Starter: -// #define OW_MON_ALLOWED_SPECIES (0) -// #define OW_MON_ALLOWED_MET_LVL (5) -// #define OW_MON_ALLOWED_MET_LOC (MAPSEC_ROUTE_101) -// Species set in VAR_XXXX: -// #define OW_MON_ALLOWED_SPECIES (VAR_XXXX) -// #define OW_MON_ALLOWED_MET_LVL (0) -// #define OW_MON_ALLOWED_MET_LOC (0) - #define F_INANIMATE (1 << 6) #define F_DISABLE_REFLECTION_PALETTE_LOAD (1 << 7) diff --git a/include/constants/flags.h b/include/constants/flags.h index 9450c6de1c..8685faca6f 100644 --- a/include/constants/flags.h +++ b/include/constants/flags.h @@ -1647,9 +1647,8 @@ #define FLAG_ENABLE_MULTI_CORRIDOR_DOOR (SPECIAL_FLAGS_START + 0x2) #define FLAG_SPECIAL_FLAG_UNUSED_0x4003 (SPECIAL_FLAGS_START + 0x3) // Unused Flag #define FLAG_STORING_ITEMS_IN_PYRAMID_BAG (SPECIAL_FLAGS_START + 0x4) -// When set, `applymovement` does not hide follower pokemon; -// Also, scripted movements on the player will move follower(s), too -#define FLAG_SAFE_FOLLOWER_MOVEMENT (SPECIAL_FLAGS_START + 0x5) +#define FLAG_SAFE_FOLLOWER_MOVEMENT (SPECIAL_FLAGS_START + 0x5) // When set, applymovement does not put the follower inside a pokeball + // Also, scripted movements on the player will move follower(s), too // FLAG_SPECIAL_FLAG_0x4005 - 0x407F also exist and are unused #define SPECIAL_FLAGS_END (SPECIAL_FLAGS_START + 0x7F) #define NUM_SPECIAL_FLAGS (SPECIAL_FLAGS_END - SPECIAL_FLAGS_START + 1) From 35324497a6438c27a06fdba0fe6e3eccd42908d7 Mon Sep 17 00:00:00 2001 From: Bassoonian Date: Thu, 13 Feb 2025 13:35:38 +0100 Subject: [PATCH 18/73] Update src/event_object_movement.c --- src/event_object_movement.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 8b7733d4e4..36b8ea69e7 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -6201,7 +6201,8 @@ static bool8 IsMetatileDirectionallyImpassable(struct ObjectEvent *objectEvent, return FALSE; } -u32 GetObjectObjectCollidesWith(struct ObjectEvent *objectEvent, s16 x, s16 y, bool32 addCoords) { +u32 GetObjectObjectCollidesWith(struct ObjectEvent *objectEvent, s16 x, s16 y, bool32 addCoords) +{ u8 i; struct ObjectEvent *curObject; From 0438b66f632d224b96465b52eb2dce4dc2c1668e Mon Sep 17 00:00:00 2001 From: Alex <93446519+AlexOn1ine@users.noreply.github.com> Date: Thu, 13 Feb 2025 17:33:21 +0100 Subject: [PATCH 19/73] Minor Clean up for CanAbilityX. Follow up for #6183 (#6252) --- include/battle_util.h | 4 ++-- src/battle_ai_main.c | 4 ++-- src/battle_ai_util.c | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/include/battle_util.h b/include/battle_util.h index e8b0dc697f..eeb3f89135 100644 --- a/include/battle_util.h +++ b/include/battle_util.h @@ -24,8 +24,8 @@ enum AbilityEffectOptions { - ABILITY_CHECK_TRIGGER, - ABILITY_RUN_SCRIPT, + ABILITY_CHECK_TRIGGER, + ABILITY_RUN_SCRIPT, }; enum MoveAbsorbed diff --git a/src/battle_ai_main.c b/src/battle_ai_main.c index 8692cf1bcf..044c1f4812 100644 --- a/src/battle_ai_main.c +++ b/src/battle_ai_main.c @@ -893,10 +893,10 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) // target ability checks if (!DoesBattlerIgnoreAbilityChecks(battlerAtk, aiData->abilities[battlerAtk], move)) { - if (CanAbilityBlockMove(battlerAtk, battlerDef, move, aiData->abilities[battlerDef], FALSE)) + if (CanAbilityBlockMove(battlerAtk, battlerDef, move, aiData->abilities[battlerDef], ABILITY_CHECK_TRIGGER)) RETURN_SCORE_MINUS(20); - if (CanAbilityAbsorbMove(battlerAtk, battlerDef, aiData->abilities[battlerDef], move, moveType, FALSE)) + if (CanAbilityAbsorbMove(battlerAtk, battlerDef, aiData->abilities[battlerDef], move, moveType, ABILITY_CHECK_TRIGGER)) RETURN_SCORE_MINUS(20); switch (aiData->abilities[battlerDef]) diff --git a/src/battle_ai_util.c b/src/battle_ai_util.c index 59308251c4..a122807293 100644 --- a/src/battle_ai_util.c +++ b/src/battle_ai_util.c @@ -436,10 +436,10 @@ bool32 IsDamageMoveUnusable(u32 battlerAtk, u32 battlerDef, u32 move, u32 moveTy if (gBattleStruct->battlerState[battlerDef].commandingDondozo) return TRUE; - if (CanAbilityBlockMove(battlerAtk, battlerDef, move, aiData->abilities[battlerDef], FALSE)) + if (CanAbilityBlockMove(battlerAtk, battlerDef, move, aiData->abilities[battlerDef], ABILITY_CHECK_TRIGGER)) return TRUE; - if (CanAbilityAbsorbMove(battlerAtk, battlerDef, aiData->abilities[battlerDef], move, moveType, FALSE)) + if (CanAbilityAbsorbMove(battlerAtk, battlerDef, aiData->abilities[battlerDef], move, moveType, ABILITY_CHECK_TRIGGER)) return TRUE; switch (GetMoveEffect(move)) From 8448e745eaa362b89edfb351abc09c1c5afaa98c Mon Sep 17 00:00:00 2001 From: Alex <93446519+AlexOn1ine@users.noreply.github.com> Date: Thu, 13 Feb 2025 17:33:59 +0100 Subject: [PATCH 20/73] Adds a follower flag define to disable followers on the fly (#6174) --- include/config/overworld.h | 1 + src/event_object_movement.c | 1 + src/overworld.c | 2 ++ 3 files changed, 4 insertions(+) diff --git a/include/config/overworld.h b/include/config/overworld.h index e522c978fa..3af0a6589c 100644 --- a/include/config/overworld.h +++ b/include/config/overworld.h @@ -60,6 +60,7 @@ #define OW_FOLLOWERS_WEATHER_FORMS FALSE // If TRUE, Castform and Cherrim gain FORM_CHANGE_OVERWORLD_WEATHER, which will make them transform in the overworld based on the weather. #define OW_FOLLOWERS_COPY_WILD_PKMN FALSE // If TRUE, follower Pokémon that know Transform or have Illusion/Imposter will copy wild Pokémon at random. #define OW_BATTLE_ONLY_FORMS TRUE // If TRUE, loads overworld sprites for battle-only forms like Mega Evos. Requires OW_POKEMON_OBJECT_EVENTS. +#define B_FLAG_FOLLOWERS_DISABLED 0 // Enables / Disables followers by using a flag. Helpful to disable followers for a period of time. // Out-of-battle Ability effects #define OW_SYNCHRONIZE_NATURE GEN_LATEST // In Gen8+, if a Pokémon with Synchronize leads the party, wild Pokémon will always have their same Nature as opposed to the 50% chance in previous games. Gift Pokémon excluded. diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 4dcb1bc1a9..608eed25f7 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -2179,6 +2179,7 @@ void UpdateFollowingPokemon(void) // 3. flag is set if (OW_POKEMON_OBJECT_EVENTS == FALSE || OW_FOLLOWERS_ENABLED == FALSE + || FlagGet(B_FLAG_FOLLOWERS_DISABLED) || !GetFollowerInfo(&species, &shiny, &female) || SpeciesToGraphicsInfo(species, shiny, female) == NULL || (gMapHeader.mapType == MAP_TYPE_INDOOR && SpeciesToGraphicsInfo(species, shiny, female)->oam->size > ST_OAM_SIZE_2) diff --git a/src/overworld.c b/src/overworld.c index 05c04d0fba..c94c67516a 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -73,6 +73,8 @@ #include "constants/trainer_hill.h" #include "constants/weather.h" +STATIC_ASSERT((B_FLAG_FOLLOWERS_DISABLED == 0 && !OW_FOLLOWERS_ENABLED), FollowersFlagAssignedWithoutEnablingThem); + struct CableClubPlayer { u8 playerId; From f851fb536ad6686f5f55d609d7f63ec75a7fc2e5 Mon Sep 17 00:00:00 2001 From: Pawkkie <61265402+Pawkkie@users.noreply.github.com> Date: Thu, 13 Feb 2025 11:34:40 -0500 Subject: [PATCH 21/73] Improve Yawn and Status Switching (#6202) Co-authored-by: Bassoonian --- src/battle_ai_switch_items.c | 8 +++++++- test/battle/ai/ai_switching.c | 35 ++++++++++++++++++++++++++--------- 2 files changed, 33 insertions(+), 10 deletions(-) diff --git a/src/battle_ai_switch_items.c b/src/battle_ai_switch_items.c index 908568769e..fcd8b5ce71 100644 --- a/src/battle_ai_switch_items.c +++ b/src/battle_ai_switch_items.c @@ -593,6 +593,10 @@ static bool32 ShouldSwitchIfBadlyStatused(u32 battler) { switchMon = TRUE; + // If we don't have a good switchin, not worth switching + if (AI_DATA->mostSuitableMonId[battler] == PARTY_SIZE) + switchMon = FALSE; + // Check if Active Pokemon can KO opponent instead of switching // Will still fall asleep, but take out opposing Pokemon first if (AiExpectsToFaintPlayer(battler)) @@ -626,7 +630,8 @@ static bool32 ShouldSwitchIfBadlyStatused(u32 battler) // Secondary Damage if (monAbility != ABILITY_MAGIC_GUARD - && !AiExpectsToFaintPlayer(battler)) + && !AiExpectsToFaintPlayer(battler) + && AI_DATA->mostSuitableMonId[battler] != PARTY_SIZE) { //Toxic if (((gBattleMons[battler].status1 & STATUS1_TOXIC_COUNTER) >= STATUS1_TOXIC_TURN(2)) @@ -654,6 +659,7 @@ static bool32 ShouldSwitchIfBadlyStatused(u32 battler) // Infatuation if (gBattleMons[battler].status2 & STATUS2_INFATUATION && !AiExpectsToFaintPlayer(battler) + && AI_DATA->mostSuitableMonId[battler] != PARTY_SIZE && RandomPercentage(RNG_AI_SWITCH_INFATUATION, GetSwitchChance(SHOULD_SWITCH_INFATUATION))) return SetSwitchinAndSwitch(battler, PARTY_SIZE); } diff --git a/test/battle/ai/ai_switching.c b/test/battle/ai/ai_switching.c index 227909e400..367afbc0f1 100644 --- a/test/battle/ai/ai_switching.c +++ b/test/battle/ai/ai_switching.c @@ -655,7 +655,7 @@ AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_SWITCHING: AI will switch out if it has bee } } -AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_SWITCHING: AI will switch out if it has been Yawn'd with more than 1/3 HP remaining") +AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_SWITCHING: AI will switch out if it has been Yawn'd with more than 1/3 HP remaining and it has a good switchin") { u32 hp; PARAMETRIZE { hp = 30; } @@ -665,8 +665,8 @@ AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_SWITCHING: AI will switch out if it has bee ASSUME(GetMoveEffect(MOVE_YAWN) == EFFECT_YAWN); AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SMART_SWITCHING); PLAYER(SPECIES_SLAKOTH) { Moves(MOVE_TACKLE, MOVE_YAWN); } - OPPONENT(SPECIES_ZIGZAGOON) { Moves(MOVE_TACKLE); HP(hp); MaxHP(30); } - OPPONENT(SPECIES_ZIGZAGOON) { Moves(MOVE_TACKLE); } + OPPONENT(SPECIES_SLAKOTH) { Moves(MOVE_TACKLE); HP(hp); MaxHP(30); } + OPPONENT(SPECIES_SLAKOTH) { Moves(MOVE_HEADBUTT); } } WHEN { TURN { MOVE(player, MOVE_YAWN) ; EXPECT_MOVE(opponent, MOVE_TACKLE); } if (hp == 30) @@ -676,6 +676,23 @@ AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_SWITCHING: AI will switch out if it has bee } } +AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_SWITCHING: AI will not switch out if it has been Yawn'd with more than 1/3 HP remaining and it does not have a good switchin") +{ + u32 hp; + PARAMETRIZE { hp = 30; } + PARAMETRIZE { hp = 10; } + GIVEN { + ASSUME(GetMoveEffect(MOVE_YAWN) == EFFECT_YAWN); + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SMART_SWITCHING); + PLAYER(SPECIES_SLAKOTH) { Moves(MOVE_TACKLE, MOVE_YAWN); } + OPPONENT(SPECIES_SLAKOTH) { Moves(MOVE_TACKLE); HP(hp); MaxHP(30); } + OPPONENT(SPECIES_SLAKOTH) { Level(1); Moves(MOVE_HEADBUTT); } + } WHEN { + TURN { MOVE(player, MOVE_YAWN) ; EXPECT_MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_TACKLE) ; EXPECT_MOVE(opponent, MOVE_TACKLE); } + } +} + AI_DOUBLE_BATTLE_TEST("AI_FLAG_SMART_SWITCHING: AI will switch out if it has been Yawn'd with more than 1/3 HP remaining (Doubles)") { u32 hp; @@ -1005,15 +1022,15 @@ AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_SWITCHING: AI won't switch out if Yawn'd wi GIVEN { ASSUME(GetMoveEffect(MOVE_YAWN) == EFFECT_YAWN); AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | aceFlag | AI_FLAG_CHECK_VIABILITY | AI_FLAG_OMNISCIENT | AI_FLAG_SMART_MON_CHOICES | AI_FLAG_SMART_SWITCHING); - PLAYER(SPECIES_SLOWKING) { Moves(MOVE_YAWN, MOVE_CONFUSION, MOVE_POWER_GEM, MOVE_WATER_PULSE); Item(ITEM_LEFTOVERS); } - OPPONENT(SPECIES_SCOLIPEDE) { Moves(MOVE_POISON_TAIL); } - OPPONENT(SPECIES_ABSOL) { Moves(MOVE_KNOCK_OFF, MOVE_CRUNCH); } + PLAYER(SPECIES_SLAKOTH) { Moves(MOVE_TACKLE, MOVE_YAWN); } + OPPONENT(SPECIES_SLAKOTH) { Moves(MOVE_TACKLE); } + OPPONENT(SPECIES_SLAKOTH) { Moves(MOVE_HEADBUTT); } } WHEN { - TURN { MOVE(player, MOVE_YAWN); EXPECT_MOVE(opponent, MOVE_POISON_TAIL); } + TURN { MOVE(player, MOVE_YAWN); EXPECT_MOVE(opponent, MOVE_TACKLE); } if (aceFlag) - TURN { MOVE(player, MOVE_POWER_GEM); EXPECT_MOVE(opponent, MOVE_POISON_TAIL); } + TURN { MOVE(player, MOVE_TACKLE); EXPECT_MOVE(opponent, MOVE_TACKLE); } else - TURN { MOVE(player, MOVE_POWER_GEM); EXPECT_SWITCH(opponent, 1); } + TURN { MOVE(player, MOVE_TACKLE); EXPECT_SWITCH(opponent, 1); } } } From 845679471f22a364b1fba10e09d26ad3b2efa5e7 Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Thu, 13 Feb 2025 13:32:08 -0300 Subject: [PATCH 22/73] Added missing Dream Eater and Reflect Type tests (#6245) --- src/data/moves_info.h | 1 + test/battle/move_effect/dream_eater.c | 62 ++++++++++++++++++++++++-- test/battle/move_effect/reflect_type.c | 42 ++++++++++++++--- 3 files changed, 97 insertions(+), 8 deletions(-) diff --git a/src/data/moves_info.h b/src/data/moves_info.h index 31ac2afe4c..0589866293 100644 --- a/src/data/moves_info.h +++ b/src/data/moves_info.h @@ -3550,6 +3550,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, .healingMove = B_HEAL_BLOCKING >= GEN_6, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_5, .contestEffect = CONTEST_EFFECT_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, diff --git a/test/battle/move_effect/dream_eater.c b/test/battle/move_effect/dream_eater.c index 85bdb42ac9..70319be9c5 100644 --- a/test/battle/move_effect/dream_eater.c +++ b/test/battle/move_effect/dream_eater.c @@ -55,6 +55,62 @@ SINGLE_BATTLE_TEST("Dream Eater fails if Heal Block applies") } } -TO_DO_BATTLE_TEST("Dream Eater works on targets with Comatose"); -TO_DO_BATTLE_TEST("Dream Eater fails if the target is behind a Substitute (Gen 1-4)"); -TO_DO_BATTLE_TEST("Dream Eater works if the target is behind a Substitute (Gen 5+)"); +SINGLE_BATTLE_TEST("Dream Eater works on targets with Comatose") +{ + s16 damage; + s16 healed; + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { HP(1); } + OPPONENT(SPECIES_KOMALA) { Ability(ABILITY_COMATOSE); } + } WHEN { + TURN { MOVE(player, MOVE_DREAM_EATER); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_DREAM_EATER, player); + HP_BAR(opponent, captureDamage: &damage); + HP_BAR(player, captureDamage: &healed); + } THEN { + EXPECT_MUL_EQ(damage, Q_4_12(-1.0/2.0), healed); + } +} + +#if B_UPDATED_MOVE_FLAGS < GEN_5 +SINGLE_BATTLE_TEST("Dream Eater fails if the target is behind a Substitute (Gen 1-4)") +{ + GIVEN { + ASSUME(gMovesInfo[MOVE_YAWN].effect == EFFECT_YAWN); + ASSUME(gMovesInfo[MOVE_SUBSTITUTE].effect == EFFECT_SUBSTITUTE); + ASSUME(!gMovesInfo[MOVE_DREAM_EATER].ignoresSubstitute); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_YAWN); MOVE(player, MOVE_SUBSTITUTE); } + TURN { } + TURN { MOVE(opponent, MOVE_DREAM_EATER); } + } SCENE { + MESSAGE("The opposing Wobbuffet used Dream Eater!"); + MESSAGE("Wobbuffet wasn't affected!"); + } +} +#else +SINGLE_BATTLE_TEST("Dream Eater works if the target is behind a Substitute (Gen 5+)") +{ + s16 damage; + s16 healed; + GIVEN { + ASSUME(gMovesInfo[MOVE_YAWN].effect == EFFECT_YAWN); + ASSUME(gMovesInfo[MOVE_SUBSTITUTE].effect == EFFECT_SUBSTITUTE); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET) { HP(1); } + } WHEN { + TURN { MOVE(opponent, MOVE_YAWN); MOVE(player, MOVE_SUBSTITUTE); } + TURN { } + TURN { MOVE(opponent, MOVE_DREAM_EATER); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_DREAM_EATER, opponent); + HP_BAR(player, captureDamage: &damage); + HP_BAR(opponent, captureDamage: &healed); + } THEN { + EXPECT_MUL_EQ(damage, Q_4_12(-1.0/2.0), healed); + } +} +#endif diff --git a/test/battle/move_effect/reflect_type.c b/test/battle/move_effect/reflect_type.c index fc152fc27f..f3093ea4e3 100644 --- a/test/battle/move_effect/reflect_type.c +++ b/test/battle/move_effect/reflect_type.c @@ -1,9 +1,6 @@ #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; @@ -86,7 +83,7 @@ SINGLE_BATTLE_TEST("Reflect Type does not affect any of Silvally's forms") } } -SINGLE_BATTLE_TEST("Reflect Type does not affect Pokémon with no types") +SINGLE_BATTLE_TEST("Reflect Type fails if the target has no types") { GIVEN { ASSUME(gSpeciesInfo[SPECIES_ARCANINE].types[0] == TYPE_FIRE); @@ -151,7 +148,7 @@ SINGLE_BATTLE_TEST("Reflect Type copies a target's pure type") } } -SINGLE_BATTLE_TEST("Reflect Type defaults to Normal type for the user's types[0] and types[1] if the target only has a 3rd type") +SINGLE_BATTLE_TEST("Reflect Type defaults to Normal type for the user's 1st and 2nd types if the target only has a 3rd type") { GIVEN { ASSUME(gSpeciesInfo[SPECIES_WOBBUFFET].types[0] == TYPE_PSYCHIC); @@ -184,3 +181,38 @@ SINGLE_BATTLE_TEST("Reflect Type defaults to Normal type for the user's types[0] EXPECT_EQ(player->types[2], TYPE_GRASS); } } + +SINGLE_BATTLE_TEST("Reflect Type fails if the user is Terastallized") +{ + GIVEN { + PLAYER(SPECIES_ARCANINE) { TeraType(TYPE_NORMAL); } + OPPONENT(SPECIES_POLIWRATH); + } WHEN { + TURN { MOVE(player, MOVE_REFLECT_TYPE, gimmick: GIMMICK_TERA); } + } SCENE { + MESSAGE("Arcanine used Reflect Type!"); + MESSAGE("But it failed!"); + } THEN { + EXPECT_EQ(player->types[0], TYPE_FIRE); + EXPECT_EQ(player->types[1], TYPE_FIRE); + EXPECT_EQ(player->types[2], TYPE_MYSTERY); + } +} + +SINGLE_BATTLE_TEST("Reflect Type succeeds against a Terastallized target and copies its Tera type") +{ + GIVEN { + ASSUME(gSpeciesInfo[SPECIES_POLIWRATH].types[0] != TYPE_NORMAL); + ASSUME(gSpeciesInfo[SPECIES_POLIWRATH].types[1] != TYPE_NORMAL); + PLAYER(SPECIES_ARCANINE) { TeraType(TYPE_NORMAL); } + OPPONENT(SPECIES_POLIWRATH); + } WHEN { + TURN { MOVE(player, MOVE_TACKLE, gimmick: GIMMICK_TERA); MOVE(opponent, MOVE_REFLECT_TYPE); } + } SCENE { + MESSAGE("The opposing Poliwrath used Reflect Type!"); + } THEN { + EXPECT_EQ(opponent->types[0], TYPE_NORMAL); + EXPECT_EQ(opponent->types[1], TYPE_NORMAL); + EXPECT_EQ(opponent->types[2], TYPE_NORMAL); + } +} From a42de40eb2fb47dcd1fcb58cf5c928ab22832139 Mon Sep 17 00:00:00 2001 From: moostoet <70690976+moostoet@users.noreply.github.com> Date: Thu, 13 Feb 2025 18:51:25 +0100 Subject: [PATCH 23/73] Add function to adjust AI scoring for generalized item effects (#6247) --- include/battle_ai_main.h | 2 +- include/config/ai.h | 3 +++ src/battle_ai_main.c | 29 +++++++++++++++++++++++++++++ 3 files changed, 33 insertions(+), 1 deletion(-) diff --git a/include/battle_ai_main.h b/include/battle_ai_main.h index f30759fd24..b21b20751d 100644 --- a/include/battle_ai_main.h +++ b/include/battle_ai_main.h @@ -35,7 +35,7 @@ typedef s32 (*AiScoreFunc)(u32, u32, u32, s32); #define POWERFUL_STATUS_MOVE 10 // Moves with this score will be chosen over a move that faints target #define NO_DAMAGE_OR_FAILS -20 // Move fails or does no damage -// Scores given in AI_CalcMoveEffectScore +// Scores given in AI_CalcMoveEffectScore and AI_CalcHoldEffectMoveScore #define NO_INCREASE 0 #define WEAK_EFFECT 1 #define DECENT_EFFECT 2 diff --git a/include/config/ai.h b/include/config/ai.h index 686ac14c22..48205b733e 100644 --- a/include/config/ai.h +++ b/include/config/ai.h @@ -43,6 +43,9 @@ #define SHOULD_SWITCH_REGENERATOR_PERCENTAGE 50 #define SHOULD_SWITCH_REGENERATOR_STATS_RAISED_PERCENTAGE 20 +// AI held item-based move scoring +#define BLUNDER_POLICY_ACCURACY_THRESHOLD 75 // Moves with accuracy equal below this value are prioritized when holding Blunder Policy + // AI prediction chances #define PREDICT_SWITCH_CHANCE 50 diff --git a/src/battle_ai_main.c b/src/battle_ai_main.c index 044c1f4812..efda602fef 100644 --- a/src/battle_ai_main.c +++ b/src/battle_ai_main.c @@ -3295,6 +3295,34 @@ static s32 AI_CompareDamagingMoves(u32 battlerAtk, u32 battlerDef, u32 currId) return score; } +static u32 AI_CalcHoldEffectMoveScore(u32 battlerAtk, u32 battlerDef, u32 move) +{ + struct AiLogicData *aiData = AI_DATA; + u32 holdEffect = aiData->holdEffects[battlerAtk]; + + s32 score = 0; + + switch (holdEffect) + { + case HOLD_EFFECT_BLUNDER_POLICY: + { + u32 moveAcc = aiData->moveAccuracy[battlerAtk][battlerDef][AI_THINKING_STRUCT->movesetIndex]; + + if (moveAcc <= BLUNDER_POLICY_ACCURACY_THRESHOLD) + { + ADJUST_SCORE(GOOD_EFFECT); + } + else + { + ADJUST_SCORE(-DECENT_EFFECT); + } + } + break; + } + + return score; +} + static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move) { // move data @@ -4831,6 +4859,7 @@ static s32 AI_CheckViability(u32 battlerAtk, u32 battlerDef, u32 move, s32 score } ADJUST_SCORE(AI_CalcMoveEffectScore(battlerAtk, battlerDef, move)); + ADJUST_SCORE(AI_CalcHoldEffectMoveScore(battlerAtk, battlerDef, move)); return score; } From d1b2b045d0a23e6db9405db122f52a4000a27aab Mon Sep 17 00:00:00 2001 From: Frank DeBlasio <35279583+fdeblasio@users.noreply.github.com> Date: Thu, 13 Feb 2025 12:58:12 -0500 Subject: [PATCH 24/73] Moved sValidApprenticeMove into gMovesInfo (#6254) --- include/move.h | 4 +- src/apprentice.c | 4 +- src/data/battle_frontier/apprentice.h | 361 -------------------------- src/data/moves_info.h | 297 +++++++++++++++++++++ 4 files changed, 302 insertions(+), 364 deletions(-) diff --git a/include/move.h b/include/move.h index 855dba10c3..d5f14078d6 100644 --- a/include/move.h +++ b/include/move.h @@ -104,7 +104,9 @@ struct MoveInfo bool32 parentalBondBanned:1; bool32 skyBattleBanned:1; bool32 sketchBanned:1; - u32 padding:19; + //Other + bool32 validApprenticeMove:1; + u32 padding:18; // end of word union { diff --git a/src/apprentice.c b/src/apprentice.c index 66011fe76c..7769dde6e3 100644 --- a/src/apprentice.c +++ b/src/apprentice.c @@ -339,7 +339,7 @@ static u16 GetRandomAlternateMove(u8 monId) numLearnsetMoves = j; i = 0; - // i < 5 here is arbitrary, i isnt used and is only incremented when the selected move isnt in sValidApprenticeMoves + // i < 5 here is arbitrary, i isn't used and is only incremented when the selected move isn't valid (determined by the validApprenticeMove value) // This while loop contains 3 potential infinite loops, though none of them would occur in the base game while (i < 5) { @@ -411,7 +411,7 @@ static u16 GetRandomAlternateMove(u8 monId) if (TrySetMove(monId, moveId)) { - if (sValidApprenticeMoves[moveId]) + if (gMovesInfo[moveId].validApprenticeMove) break; i++; } diff --git a/src/data/battle_frontier/apprentice.h b/src/data/battle_frontier/apprentice.h index 408c3902d5..ef0a77bf11 100644 --- a/src/data/battle_frontier/apprentice.h +++ b/src/data/battle_frontier/apprentice.h @@ -568,367 +568,6 @@ static const u8 *const sApprenticeChallengeTexts[NUM_APPRENTICES] = gText_ApprenticeChallenge15, }; -// Unclear what the criteria are for valid moves -// Notably, a large percentage of multi-strike moves are not valid -static const bool8 sValidApprenticeMoves[MOVES_COUNT] = -{ - [MOVE_NONE] = FALSE, - [MOVE_POUND] = FALSE, - [MOVE_KARATE_CHOP] = TRUE, - [MOVE_DOUBLE_SLAP] = TRUE, - [MOVE_COMET_PUNCH] = FALSE, - [MOVE_MEGA_PUNCH] = TRUE, - [MOVE_PAY_DAY] = FALSE, - [MOVE_FIRE_PUNCH] = TRUE, - [MOVE_ICE_PUNCH] = TRUE, - [MOVE_THUNDER_PUNCH] = TRUE, - [MOVE_SCRATCH] = FALSE, - [MOVE_VISE_GRIP] = FALSE, - [MOVE_GUILLOTINE] = TRUE, - [MOVE_RAZOR_WIND] = FALSE, - [MOVE_SWORDS_DANCE] = TRUE, - [MOVE_CUT] = FALSE, - [MOVE_GUST] = FALSE, - [MOVE_WING_ATTACK] = FALSE, - [MOVE_WHIRLWIND] = TRUE, - [MOVE_FLY] = TRUE, - [MOVE_BIND] = TRUE, - [MOVE_SLAM] = TRUE, - [MOVE_VINE_WHIP] = FALSE, - [MOVE_STOMP] = TRUE, - [MOVE_DOUBLE_KICK] = TRUE, - [MOVE_MEGA_KICK] = TRUE, - [MOVE_JUMP_KICK] = TRUE, - [MOVE_ROLLING_KICK] = TRUE, - [MOVE_SAND_ATTACK] = TRUE, - [MOVE_HEADBUTT] = TRUE, - [MOVE_HORN_ATTACK] = FALSE, - [MOVE_FURY_ATTACK] = FALSE, - [MOVE_HORN_DRILL] = TRUE, - [MOVE_TACKLE] = FALSE, - [MOVE_BODY_SLAM] = TRUE, - [MOVE_WRAP] = TRUE, - [MOVE_TAKE_DOWN] = TRUE, - [MOVE_THRASH] = TRUE, - [MOVE_DOUBLE_EDGE] = TRUE, - [MOVE_TAIL_WHIP] = FALSE, - [MOVE_POISON_STING] = FALSE, - [MOVE_TWINEEDLE] = TRUE, - [MOVE_PIN_MISSILE] = FALSE, - [MOVE_LEER] = FALSE, - [MOVE_BITE] = TRUE, - [MOVE_GROWL] = FALSE, - [MOVE_ROAR] = TRUE, - [MOVE_SING] = TRUE, - [MOVE_SUPERSONIC] = TRUE, - [MOVE_SONIC_BOOM] = TRUE, - [MOVE_DISABLE] = TRUE, - [MOVE_ACID] = FALSE, - [MOVE_EMBER] = FALSE, - [MOVE_FLAMETHROWER] = TRUE, - [MOVE_MIST] = TRUE, - [MOVE_WATER_GUN] = FALSE, - [MOVE_HYDRO_PUMP] = TRUE, - [MOVE_SURF] = TRUE, - [MOVE_ICE_BEAM] = TRUE, - [MOVE_BLIZZARD] = TRUE, - [MOVE_PSYBEAM] = TRUE, - [MOVE_BUBBLE_BEAM] = FALSE, - [MOVE_AURORA_BEAM] = FALSE, - [MOVE_HYPER_BEAM] = TRUE, - [MOVE_PECK] = FALSE, - [MOVE_DRILL_PECK] = TRUE, - [MOVE_SUBMISSION] = TRUE, - [MOVE_LOW_KICK] = TRUE, - [MOVE_COUNTER] = TRUE, - [MOVE_SEISMIC_TOSS] = TRUE, - [MOVE_STRENGTH] = TRUE, - [MOVE_ABSORB] = FALSE, - [MOVE_MEGA_DRAIN] = FALSE, - [MOVE_LEECH_SEED] = TRUE, - [MOVE_GROWTH] = TRUE, - [MOVE_RAZOR_LEAF] = TRUE, - [MOVE_SOLAR_BEAM] = TRUE, - [MOVE_POISON_POWDER] = TRUE, - [MOVE_STUN_SPORE] = TRUE, - [MOVE_SLEEP_POWDER] = TRUE, - [MOVE_PETAL_DANCE] = TRUE, - [MOVE_STRING_SHOT] = FALSE, - [MOVE_DRAGON_RAGE] = TRUE, - [MOVE_FIRE_SPIN] = TRUE, - [MOVE_THUNDER_SHOCK] = FALSE, - [MOVE_THUNDERBOLT] = TRUE, - [MOVE_THUNDER_WAVE] = TRUE, - [MOVE_THUNDER] = TRUE, - [MOVE_ROCK_THROW] = FALSE, - [MOVE_EARTHQUAKE] = TRUE, - [MOVE_FISSURE] = TRUE, - [MOVE_DIG] = TRUE, - [MOVE_TOXIC] = TRUE, - [MOVE_CONFUSION] = FALSE, - [MOVE_PSYCHIC] = TRUE, - [MOVE_HYPNOSIS] = TRUE, - [MOVE_MEDITATE] = TRUE, - [MOVE_AGILITY] = TRUE, - [MOVE_QUICK_ATTACK] = TRUE, - [MOVE_RAGE] = FALSE, - [MOVE_TELEPORT] = FALSE, - [MOVE_NIGHT_SHADE] = TRUE, - [MOVE_MIMIC] = TRUE, - [MOVE_SCREECH] = TRUE, - [MOVE_DOUBLE_TEAM] = TRUE, - [MOVE_RECOVER] = TRUE, - [MOVE_HARDEN] = TRUE, - [MOVE_MINIMIZE] = TRUE, - [MOVE_SMOKESCREEN] = TRUE, - [MOVE_CONFUSE_RAY] = TRUE, - [MOVE_WITHDRAW] = TRUE, - [MOVE_DEFENSE_CURL] = TRUE, - [MOVE_BARRIER] = TRUE, - [MOVE_LIGHT_SCREEN] = TRUE, - [MOVE_HAZE] = TRUE, - [MOVE_REFLECT] = TRUE, - [MOVE_FOCUS_ENERGY] = TRUE, - [MOVE_BIDE] = FALSE, - [MOVE_METRONOME] = TRUE, - [MOVE_MIRROR_MOVE] = TRUE, - [MOVE_SELF_DESTRUCT] = TRUE, - [MOVE_EGG_BOMB] = TRUE, - [MOVE_LICK] = TRUE, - [MOVE_SMOG] = FALSE, - [MOVE_SLUDGE] = FALSE, - [MOVE_BONE_CLUB] = FALSE, - [MOVE_FIRE_BLAST] = TRUE, - [MOVE_WATERFALL] = TRUE, - [MOVE_CLAMP] = TRUE, - [MOVE_SWIFT] = TRUE, - [MOVE_SKULL_BASH] = TRUE, - [MOVE_SPIKE_CANNON] = FALSE, - [MOVE_CONSTRICT] = FALSE, - [MOVE_AMNESIA] = TRUE, - [MOVE_KINESIS] = TRUE, - [MOVE_SOFT_BOILED] = TRUE, - [MOVE_HIGH_JUMP_KICK] = TRUE, - [MOVE_GLARE] = TRUE, - [MOVE_DREAM_EATER] = TRUE, - [MOVE_POISON_GAS] = FALSE, - [MOVE_BARRAGE] = FALSE, - [MOVE_LEECH_LIFE] = FALSE, - [MOVE_LOVELY_KISS] = TRUE, - [MOVE_SKY_ATTACK] = TRUE, - [MOVE_TRANSFORM] = TRUE, - [MOVE_BUBBLE] = FALSE, - [MOVE_DIZZY_PUNCH] = TRUE, - [MOVE_SPORE] = TRUE, - [MOVE_FLASH] = TRUE, - [MOVE_PSYWAVE] = TRUE, - [MOVE_SPLASH] = FALSE, - [MOVE_ACID_ARMOR] = TRUE, - [MOVE_CRABHAMMER] = TRUE, - [MOVE_EXPLOSION] = TRUE, - [MOVE_FURY_SWIPES] = FALSE, - [MOVE_BONEMERANG] = TRUE, - [MOVE_REST] = TRUE, - [MOVE_ROCK_SLIDE] = TRUE, - [MOVE_HYPER_FANG] = TRUE, - [MOVE_SHARPEN] = TRUE, - [MOVE_CONVERSION] = TRUE, - [MOVE_TRI_ATTACK] = TRUE, - [MOVE_SUPER_FANG] = TRUE, - [MOVE_SLASH] = TRUE, - [MOVE_SUBSTITUTE] = TRUE, - [MOVE_STRUGGLE] = TRUE, - [MOVE_SKETCH] = TRUE, - [MOVE_TRIPLE_KICK] = TRUE, - [MOVE_THIEF] = TRUE, - [MOVE_SPIDER_WEB] = TRUE, - [MOVE_MIND_READER] = TRUE, - [MOVE_NIGHTMARE] = TRUE, - [MOVE_FLAME_WHEEL] = FALSE, - [MOVE_SNORE] = TRUE, - [MOVE_CURSE] = TRUE, - [MOVE_FLAIL] = TRUE, - [MOVE_CONVERSION_2] = TRUE, - [MOVE_AEROBLAST] = TRUE, - [MOVE_COTTON_SPORE] = TRUE, - [MOVE_REVERSAL] = TRUE, - [MOVE_SPITE] = TRUE, - [MOVE_POWDER_SNOW] = FALSE, - [MOVE_PROTECT] = TRUE, - [MOVE_MACH_PUNCH] = TRUE, - [MOVE_SCARY_FACE] = TRUE, - [MOVE_FEINT_ATTACK] = TRUE, - [MOVE_SWEET_KISS] = TRUE, - [MOVE_BELLY_DRUM] = TRUE, - [MOVE_SLUDGE_BOMB] = TRUE, - [MOVE_MUD_SLAP] = TRUE, - [MOVE_OCTAZOOKA] = TRUE, - [MOVE_SPIKES] = TRUE, - [MOVE_ZAP_CANNON] = TRUE, - [MOVE_FORESIGHT] = TRUE, - [MOVE_DESTINY_BOND] = TRUE, - [MOVE_PERISH_SONG] = TRUE, - [MOVE_ICY_WIND] = TRUE, - [MOVE_DETECT] = TRUE, - [MOVE_BONE_RUSH] = FALSE, - [MOVE_LOCK_ON] = TRUE, - [MOVE_OUTRAGE] = TRUE, - [MOVE_SANDSTORM] = TRUE, - [MOVE_GIGA_DRAIN] = TRUE, - [MOVE_ENDURE] = TRUE, - [MOVE_CHARM] = TRUE, - [MOVE_ROLLOUT] = TRUE, - [MOVE_FALSE_SWIPE] = TRUE, - [MOVE_SWAGGER] = TRUE, - [MOVE_MILK_DRINK] = TRUE, - [MOVE_SPARK] = FALSE, - [MOVE_FURY_CUTTER] = TRUE, - [MOVE_STEEL_WING] = TRUE, - [MOVE_MEAN_LOOK] = TRUE, - [MOVE_ATTRACT] = TRUE, - [MOVE_SLEEP_TALK] = TRUE, - [MOVE_HEAL_BELL] = TRUE, - [MOVE_RETURN] = TRUE, - [MOVE_PRESENT] = TRUE, - [MOVE_FRUSTRATION] = TRUE, - [MOVE_SAFEGUARD] = TRUE, - [MOVE_PAIN_SPLIT] = TRUE, - [MOVE_SACRED_FIRE] = TRUE, - [MOVE_MAGNITUDE] = FALSE, - [MOVE_DYNAMIC_PUNCH] = TRUE, - [MOVE_MEGAHORN] = TRUE, - [MOVE_DRAGON_BREATH] = TRUE, - [MOVE_BATON_PASS] = TRUE, - [MOVE_ENCORE] = TRUE, - [MOVE_PURSUIT] = TRUE, - [MOVE_RAPID_SPIN] = TRUE, - [MOVE_SWEET_SCENT] = TRUE, - [MOVE_IRON_TAIL] = TRUE, - [MOVE_METAL_CLAW] = TRUE, - [MOVE_VITAL_THROW] = TRUE, - [MOVE_MORNING_SUN] = TRUE, - [MOVE_SYNTHESIS] = TRUE, - [MOVE_MOONLIGHT] = TRUE, - [MOVE_HIDDEN_POWER] = TRUE, - [MOVE_CROSS_CHOP] = TRUE, - [MOVE_TWISTER] = FALSE, - [MOVE_RAIN_DANCE] = TRUE, - [MOVE_SUNNY_DAY] = TRUE, - [MOVE_CRUNCH] = TRUE, - [MOVE_MIRROR_COAT] = TRUE, - [MOVE_PSYCH_UP] = TRUE, - [MOVE_EXTREME_SPEED] = TRUE, - [MOVE_ANCIENT_POWER] = TRUE, - [MOVE_SHADOW_BALL] = TRUE, - [MOVE_FUTURE_SIGHT] = TRUE, - [MOVE_ROCK_SMASH] = TRUE, - [MOVE_WHIRLPOOL] = TRUE, - [MOVE_BEAT_UP] = TRUE, - [MOVE_FAKE_OUT] = TRUE, - [MOVE_UPROAR] = TRUE, - [MOVE_STOCKPILE] = TRUE, - [MOVE_SPIT_UP] = TRUE, - [MOVE_SWALLOW] = TRUE, - [MOVE_HEAT_WAVE] = TRUE, - [MOVE_HAIL] = TRUE, - [MOVE_TORMENT] = TRUE, - [MOVE_FLATTER] = TRUE, - [MOVE_WILL_O_WISP] = TRUE, - [MOVE_MEMENTO] = TRUE, - [MOVE_FACADE] = TRUE, - [MOVE_FOCUS_PUNCH] = TRUE, - [MOVE_SMELLING_SALTS] = TRUE, - [MOVE_FOLLOW_ME] = TRUE, - [MOVE_NATURE_POWER] = TRUE, - [MOVE_CHARGE] = TRUE, - [MOVE_TAUNT] = TRUE, - [MOVE_HELPING_HAND] = TRUE, - [MOVE_TRICK] = TRUE, - [MOVE_ROLE_PLAY] = TRUE, - [MOVE_WISH] = TRUE, - [MOVE_ASSIST] = TRUE, - [MOVE_INGRAIN] = TRUE, - [MOVE_SUPERPOWER] = TRUE, - [MOVE_MAGIC_COAT] = TRUE, - [MOVE_RECYCLE] = TRUE, - [MOVE_REVENGE] = TRUE, - [MOVE_BRICK_BREAK] = TRUE, - [MOVE_YAWN] = TRUE, - [MOVE_KNOCK_OFF] = TRUE, - [MOVE_ENDEAVOR] = TRUE, - [MOVE_ERUPTION] = TRUE, - [MOVE_SKILL_SWAP] = TRUE, - [MOVE_IMPRISON] = TRUE, - [MOVE_REFRESH] = TRUE, - [MOVE_GRUDGE] = TRUE, - [MOVE_SNATCH] = TRUE, - [MOVE_SECRET_POWER] = TRUE, - [MOVE_DIVE] = TRUE, - [MOVE_ARM_THRUST] = FALSE, - [MOVE_CAMOUFLAGE] = TRUE, - [MOVE_TAIL_GLOW] = TRUE, - [MOVE_LUSTER_PURGE] = TRUE, - [MOVE_MIST_BALL] = TRUE, - [MOVE_FEATHER_DANCE] = TRUE, - [MOVE_TEETER_DANCE] = TRUE, - [MOVE_BLAZE_KICK] = TRUE, - [MOVE_MUD_SPORT] = TRUE, - [MOVE_ICE_BALL] = FALSE, - [MOVE_NEEDLE_ARM] = TRUE, - [MOVE_SLACK_OFF] = TRUE, - [MOVE_HYPER_VOICE] = TRUE, - [MOVE_POISON_FANG] = FALSE, - [MOVE_CRUSH_CLAW] = TRUE, - [MOVE_BLAST_BURN] = TRUE, - [MOVE_HYDRO_CANNON] = TRUE, - [MOVE_METEOR_MASH] = TRUE, - [MOVE_ASTONISH] = TRUE, - [MOVE_WEATHER_BALL] = TRUE, - [MOVE_AROMATHERAPY] = TRUE, - [MOVE_FAKE_TEARS] = TRUE, - [MOVE_AIR_CUTTER] = TRUE, - [MOVE_OVERHEAT] = TRUE, - [MOVE_ODOR_SLEUTH] = TRUE, - [MOVE_ROCK_TOMB] = TRUE, - [MOVE_SILVER_WIND] = TRUE, - [MOVE_METAL_SOUND] = TRUE, - [MOVE_GRASS_WHISTLE] = TRUE, - [MOVE_TICKLE] = TRUE, - [MOVE_COSMIC_POWER] = TRUE, - [MOVE_WATER_SPOUT] = TRUE, - [MOVE_SIGNAL_BEAM] = TRUE, - [MOVE_SHADOW_PUNCH] = TRUE, - [MOVE_EXTRASENSORY] = TRUE, - [MOVE_SKY_UPPERCUT] = TRUE, - [MOVE_SAND_TOMB] = TRUE, - [MOVE_SHEER_COLD] = TRUE, - [MOVE_MUDDY_WATER] = TRUE, - [MOVE_BULLET_SEED] = FALSE, - [MOVE_AERIAL_ACE] = TRUE, - [MOVE_ICICLE_SPEAR] = FALSE, - [MOVE_IRON_DEFENSE] = TRUE, - [MOVE_BLOCK] = TRUE, - [MOVE_HOWL] = TRUE, - [MOVE_DRAGON_CLAW] = TRUE, - [MOVE_FRENZY_PLANT] = TRUE, - [MOVE_BULK_UP] = TRUE, - [MOVE_BOUNCE] = TRUE, - [MOVE_MUD_SHOT] = FALSE, - [MOVE_POISON_TAIL] = TRUE, - [MOVE_COVET] = TRUE, - [MOVE_VOLT_TACKLE] = TRUE, - [MOVE_MAGICAL_LEAF] = TRUE, - [MOVE_WATER_SPORT] = TRUE, - [MOVE_CALM_MIND] = TRUE, - [MOVE_LEAF_BLADE] = TRUE, - [MOVE_DRAGON_DANCE] = TRUE, - [MOVE_ROCK_BLAST] = FALSE, - [MOVE_SHOCK_WAVE] = TRUE, - [MOVE_WATER_PULSE] = TRUE, - [MOVE_DOOM_DESIRE] = TRUE, - [MOVE_PSYCHO_BOOST] = TRUE, -}; - // The possible questions to ask after the initial 3 WHICH MON questions. Retrieved from here and shuffled // WHAT_ITEM has max 3 occurrences, one for each party member // WHICH_MOVE has max 5 occurrences, defined as NUM_WHICH_MOVE_QUESTIONS diff --git a/src/data/moves_info.h b/src/data/moves_info.h index b481fea731..389fc8d5eb 100644 --- a/src/data/moves_info.h +++ b/src/data/moves_info.h @@ -170,6 +170,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_FOCUS_ENERGY}, .battleAnimScript = gBattleAnimMove_KarateChop, + .validApprenticeMove = TRUE, }, [MOVE_DOUBLE_SLAP] = @@ -192,6 +193,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_POUND}, .battleAnimScript = gBattleAnimMove_DoubleSlap, + .validApprenticeMove = TRUE, }, [MOVE_COMET_PUNCH] = @@ -238,6 +240,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_FOCUS_ENERGY, COMBO_STARTER_MIND_READER}, .battleAnimScript = gBattleAnimMove_MegaPunch, + .validApprenticeMove = TRUE, }, [MOVE_PAY_DAY] = @@ -289,6 +292,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = COMBO_STARTER_FIRE_PUNCH, .contestComboMoves = {COMBO_STARTER_ICE_PUNCH, COMBO_STARTER_SUNNY_DAY, COMBO_STARTER_THUNDER_PUNCH}, .battleAnimScript = gBattleAnimMove_FirePunch, + .validApprenticeMove = TRUE, }, [MOVE_ICE_PUNCH] = @@ -320,6 +324,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = COMBO_STARTER_ICE_PUNCH, .contestComboMoves = {COMBO_STARTER_FIRE_PUNCH, COMBO_STARTER_THUNDER_PUNCH}, .battleAnimScript = gBattleAnimMove_IcePunch, + .validApprenticeMove = TRUE, }, [MOVE_THUNDER_PUNCH] = @@ -347,6 +352,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = COMBO_STARTER_THUNDER_PUNCH, .contestComboMoves = {COMBO_STARTER_CHARGE, COMBO_STARTER_FIRE_PUNCH, COMBO_STARTER_ICE_PUNCH}, .battleAnimScript = gBattleAnimMove_ThunderPunch, + .validApprenticeMove = TRUE, }, [MOVE_SCRATCH] = @@ -413,6 +419,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_VICE_GRIP}, .battleAnimScript = gBattleAnimMove_Guillotine, + .validApprenticeMove = TRUE, }, [MOVE_RAZOR_WIND] = @@ -463,6 +470,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = COMBO_STARTER_SWORDS_DANCE, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_SwordsDance, + .validApprenticeMove = TRUE, }, [MOVE_CUT] = @@ -560,6 +568,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_Whirlwind, + .validApprenticeMove = TRUE, }, [MOVE_FLY] = @@ -587,6 +596,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_Fly, + .validApprenticeMove = TRUE, }, [MOVE_BIND] = @@ -613,6 +623,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_VICE_GRIP}, .battleAnimScript = gBattleAnimMove_Bind, + .validApprenticeMove = TRUE, }, [MOVE_SLAM] = @@ -636,6 +647,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_POUND}, .battleAnimScript = gBattleAnimMove_Slam, + .validApprenticeMove = TRUE, }, [MOVE_VINE_WHIP] = @@ -692,6 +704,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_LEER}, .battleAnimScript = gBattleAnimMove_Stomp, + .validApprenticeMove = TRUE, }, [MOVE_DOUBLE_KICK] = @@ -715,6 +728,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_DoubleKick, + .validApprenticeMove = TRUE, }, [MOVE_MEGA_KICK] = @@ -737,6 +751,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_FOCUS_ENERGY, COMBO_STARTER_MIND_READER}, .battleAnimScript = gBattleAnimMove_MegaKick, + .validApprenticeMove = TRUE, }, [MOVE_JUMP_KICK] = @@ -766,6 +781,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_MIND_READER}, .battleAnimScript = gBattleAnimMove_JumpKick, + .validApprenticeMove = TRUE, }, [MOVE_ROLLING_KICK] = @@ -793,6 +809,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_RollingKick, + .validApprenticeMove = TRUE, }, [MOVE_SAND_ATTACK] = @@ -816,6 +833,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = COMBO_STARTER_SAND_ATTACK, .contestComboMoves = {COMBO_STARTER_MUD_SLAP, COMBO_STARTER_SANDSTORM}, .battleAnimScript = gBattleAnimMove_SandAttack, + .validApprenticeMove = TRUE, }, [MOVE_HEADBUTT] = @@ -842,6 +860,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_FOCUS_ENERGY}, .battleAnimScript = gBattleAnimMove_Headbutt, + .validApprenticeMove = TRUE, }, [MOVE_HORN_ATTACK] = @@ -908,6 +927,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_HORN_ATTACK}, .battleAnimScript = gBattleAnimMove_HornDrill, + .validApprenticeMove = TRUE, }, [MOVE_TACKLE] = @@ -964,6 +984,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_BodySlam, + .validApprenticeMove = TRUE, }, [MOVE_WRAP] = @@ -989,6 +1010,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_Wrap, + .validApprenticeMove = TRUE, }, [MOVE_TAKE_DOWN] = @@ -1012,6 +1034,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_FOCUS_ENERGY, COMBO_STARTER_HARDEN}, .battleAnimScript = gBattleAnimMove_TakeDown, + .validApprenticeMove = TRUE, }, [MOVE_THRASH] = @@ -1039,6 +1062,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_RAGE}, .battleAnimScript = gBattleAnimMove_Thrash, + .validApprenticeMove = TRUE, }, [MOVE_DOUBLE_EDGE] = @@ -1062,6 +1086,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_FOCUS_ENERGY, COMBO_STARTER_HARDEN}, .battleAnimScript = gBattleAnimMove_DoubleEdge, + .validApprenticeMove = TRUE, }, [MOVE_TAIL_WHIP] = @@ -1137,6 +1162,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_Twineedle, + .validApprenticeMove = TRUE, }, [MOVE_PIN_MISSILE] = @@ -1208,6 +1234,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_LEER, COMBO_STARTER_SCARY_FACE}, .battleAnimScript = gBattleAnimMove_Bite, + .validApprenticeMove = TRUE, }, [MOVE_GROWL] = @@ -1261,6 +1288,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_Roar, + .validApprenticeMove = TRUE, }, [MOVE_SING] = @@ -1286,6 +1314,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = COMBO_STARTER_SING, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_Sing, + .validApprenticeMove = TRUE, }, [MOVE_SUPERSONIC] = @@ -1311,6 +1340,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_Supersonic, + .validApprenticeMove = TRUE, }, [MOVE_SONIC_BOOM] = @@ -1333,6 +1363,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_SonicBoom, + .validApprenticeMove = TRUE, }, [MOVE_DISABLE] = @@ -1363,6 +1394,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_Disable, + .validApprenticeMove = TRUE, }, [MOVE_ACID] = @@ -1442,6 +1474,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_SUNNY_DAY}, .battleAnimScript = gBattleAnimMove_Flamethrower, + .validApprenticeMove = TRUE, }, [MOVE_MIST] = @@ -1467,6 +1500,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_Mist, + .validApprenticeMove = TRUE, }, [MOVE_WATER_GUN] = @@ -1509,6 +1543,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_RAIN_DANCE}, .battleAnimScript = gBattleAnimMove_HydroPump, + .validApprenticeMove = TRUE, }, [MOVE_SURF] = @@ -1532,6 +1567,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = COMBO_STARTER_SURF, .contestComboMoves = {COMBO_STARTER_DIVE, COMBO_STARTER_RAIN_DANCE}, .battleAnimScript = gBattleAnimMove_Surf, + .validApprenticeMove = TRUE, }, [MOVE_ICE_BEAM] = @@ -1563,6 +1599,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_HAIL}, .battleAnimScript = gBattleAnimMove_IceBeam, + .validApprenticeMove = TRUE, }, [MOVE_BLIZZARD] = @@ -1593,6 +1630,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_HAIL, COMBO_STARTER_POWDER_SNOW}, .battleAnimScript = gBattleAnimMove_Blizzard, + .validApprenticeMove = TRUE, }, [MOVE_PSYBEAM] = @@ -1618,6 +1656,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_CALM_MIND}, .battleAnimScript = gBattleAnimMove_Psybeam, + .validApprenticeMove = TRUE, }, [MOVE_BUBBLE_BEAM] = @@ -1692,6 +1731,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_HyperBeam, + .validApprenticeMove = TRUE, }, [MOVE_PECK] = @@ -1736,6 +1776,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_PECK}, .battleAnimScript = gBattleAnimMove_DrillPeck, + .validApprenticeMove = TRUE, }, [MOVE_SUBMISSION] = @@ -1759,6 +1800,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_MIND_READER}, .battleAnimScript = gBattleAnimMove_Submission, + .validApprenticeMove = TRUE, }, [MOVE_LOW_KICK] = @@ -1781,6 +1823,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_LowKick, + .validApprenticeMove = TRUE, }, [MOVE_COUNTER] = @@ -1808,6 +1851,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_TAUNT}, .battleAnimScript = gBattleAnimMove_Counter, + .validApprenticeMove = TRUE, }, [MOVE_SEISMIC_TOSS] = @@ -1831,6 +1875,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_FAKE_OUT}, .battleAnimScript = gBattleAnimMove_SeismicToss, + .validApprenticeMove = TRUE, }, [MOVE_STRENGTH] = @@ -1853,6 +1898,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_Strength, + .validApprenticeMove = TRUE, }, [MOVE_ABSORB] = @@ -1923,6 +1969,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = COMBO_STARTER_LEECH_SEED, .contestComboMoves = {COMBO_STARTER_GROWTH, COMBO_STARTER_WORRY_SEED}, .battleAnimScript = gBattleAnimMove_LeechSeed, + .validApprenticeMove = TRUE, }, [MOVE_GROWTH] = @@ -1953,6 +2000,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = COMBO_STARTER_GROWTH, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_Growth, + .validApprenticeMove = TRUE, }, [MOVE_RAZOR_LEAF] = @@ -1976,6 +2024,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_GROWTH}, .battleAnimScript = gBattleAnimMove_RazorLeaf, + .validApprenticeMove = TRUE, }, [MOVE_SOLAR_BEAM] = @@ -2000,6 +2049,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_GROWTH, COMBO_STARTER_SUNNY_DAY}, .battleAnimScript = gBattleAnimMove_SolarBeam, + .validApprenticeMove = TRUE, }, [MOVE_POISON_POWDER] = @@ -2024,6 +2074,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_SWEET_SCENT}, .battleAnimScript = gBattleAnimMove_PoisonPowder, + .validApprenticeMove = TRUE, }, [MOVE_STUN_SPORE] = @@ -2048,6 +2099,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_SWEET_SCENT}, .battleAnimScript = gBattleAnimMove_StunSpore, + .validApprenticeMove = TRUE, }, [MOVE_SLEEP_POWDER] = @@ -2072,6 +2124,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_SWEET_SCENT}, .battleAnimScript = gBattleAnimMove_SleepPowder, + .validApprenticeMove = TRUE, }, [MOVE_PETAL_DANCE] = @@ -2106,6 +2159,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_GROWTH}, .battleAnimScript = gBattleAnimMove_PetalDance, + .validApprenticeMove = TRUE, }, [MOVE_STRING_SHOT] = @@ -2152,6 +2206,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = COMBO_STARTER_DRAGON_RAGE, .contestComboMoves = {COMBO_STARTER_DRAGON_BREATH, COMBO_STARTER_DRAGON_DANCE, COMBO_STARTER_DRAGON_RUSH, COMBO_STARTER_DRAGON_TAIL}, .battleAnimScript = gBattleAnimMove_DragonRage, + .validApprenticeMove = TRUE, }, [MOVE_FIRE_SPIN] = @@ -2177,6 +2232,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_SUNNY_DAY}, .battleAnimScript = gBattleAnimMove_FireSpin, + .validApprenticeMove = TRUE, }, [MOVE_THUNDER_SHOCK] = @@ -2227,6 +2283,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_CHARGE}, .battleAnimScript = gBattleAnimMove_Thunderbolt, + .validApprenticeMove = TRUE, }, [MOVE_THUNDER_WAVE] = @@ -2250,6 +2307,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_CHARGE}, .battleAnimScript = gBattleAnimMove_ThunderWave, + .validApprenticeMove = TRUE, }, [MOVE_THUNDER] = @@ -2276,6 +2334,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_CHARGE, COMBO_STARTER_LOCK_ON, COMBO_STARTER_RAIN_DANCE}, .battleAnimScript = gBattleAnimMove_Thunder, + .validApprenticeMove = TRUE, }, [MOVE_ROCK_THROW] = @@ -2321,6 +2380,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = COMBO_STARTER_EARTHQUAKE, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_Earthquake, + .validApprenticeMove = TRUE, }, [MOVE_FISSURE] = @@ -2344,6 +2404,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_EARTHQUAKE}, .battleAnimScript = gBattleAnimMove_Fissure, + .validApprenticeMove = TRUE, }, [MOVE_DIG] = @@ -2371,6 +2432,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_Dig, + .validApprenticeMove = TRUE, }, [MOVE_TOXIC] = @@ -2394,6 +2456,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = COMBO_STARTER_TOXIC, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_Toxic, + .validApprenticeMove = TRUE, }, [MOVE_CONFUSION] = @@ -2444,6 +2507,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = COMBO_STARTER_PSYCHIC, .contestComboMoves = {COMBO_STARTER_CALM_MIND, COMBO_STARTER_CONFUSION, COMBO_STARTER_KINESIS}, .battleAnimScript = gBattleAnimMove_Psychic, + .validApprenticeMove = TRUE, }, [MOVE_HYPNOSIS] = @@ -2467,6 +2531,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = COMBO_STARTER_HYPNOSIS, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_Hypnosis, + .validApprenticeMove = TRUE, }, [MOVE_MEDITATE] = @@ -2492,6 +2557,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_CALM_MIND}, .battleAnimScript = gBattleAnimMove_Meditate, + .validApprenticeMove = TRUE, }, [MOVE_AGILITY] = @@ -2517,6 +2583,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_DOUBLE_TEAM}, .battleAnimScript = gBattleAnimMove_Agility, + .validApprenticeMove = TRUE, }, [MOVE_QUICK_ATTACK] = @@ -2539,6 +2606,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_DOUBLE_TEAM}, .battleAnimScript = gBattleAnimMove_QuickAttack, + .validApprenticeMove = TRUE, }, [MOVE_RAGE] = @@ -2606,6 +2674,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_NightShade, + .validApprenticeMove = TRUE, }, [MOVE_MIMIC] = @@ -2636,6 +2705,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_Mimic, + .validApprenticeMove = TRUE, }, [MOVE_SCREECH] = @@ -2661,6 +2731,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_Screech, + .validApprenticeMove = TRUE, }, [MOVE_DOUBLE_TEAM] = @@ -2686,6 +2757,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = COMBO_STARTER_DOUBLE_TEAM, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_DoubleTeam, + .validApprenticeMove = TRUE, }, [MOVE_RECOVER] = @@ -2718,6 +2790,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_Recover, + .validApprenticeMove = TRUE, }, [MOVE_HARDEN] = @@ -2743,6 +2816,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = COMBO_STARTER_HARDEN, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_Harden, + .validApprenticeMove = TRUE, }, [MOVE_MINIMIZE] = @@ -2768,6 +2842,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_Minimize, + .validApprenticeMove = TRUE, }, [MOVE_SMOKESCREEN] = @@ -2791,6 +2866,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_SMOG}, .battleAnimScript = gBattleAnimMove_Smokescreen, + .validApprenticeMove = TRUE, }, [MOVE_CONFUSE_RAY] = @@ -2814,6 +2890,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_ConfuseRay, + .validApprenticeMove = TRUE, }, [MOVE_WITHDRAW] = @@ -2839,6 +2916,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_RAIN_DANCE}, .battleAnimScript = gBattleAnimMove_Withdraw, + .validApprenticeMove = TRUE, }, [MOVE_DEFENSE_CURL] = @@ -2864,6 +2942,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = COMBO_STARTER_DEFENSE_CURL, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_DefenseCurl, + .validApprenticeMove = TRUE, }, [MOVE_BARRIER] = @@ -2889,6 +2968,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_Barrier, + .validApprenticeMove = TRUE, }, [MOVE_LIGHT_SCREEN] = @@ -2914,6 +2994,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_CALM_MIND}, .battleAnimScript = gBattleAnimMove_LightScreen, + .validApprenticeMove = TRUE, }, [MOVE_HAZE] = @@ -2939,6 +3020,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_HAIL}, .battleAnimScript = gBattleAnimMove_Haze, + .validApprenticeMove = TRUE, }, [MOVE_REFLECT] = @@ -2964,6 +3046,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_CALM_MIND}, .battleAnimScript = gBattleAnimMove_Reflect, + .validApprenticeMove = TRUE, }, [MOVE_FOCUS_ENERGY] = @@ -2990,6 +3073,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = COMBO_STARTER_FOCUS_ENERGY, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_FocusEnergy, + .validApprenticeMove = TRUE, }, [MOVE_BIDE] = @@ -3045,6 +3129,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_Metronome, + .validApprenticeMove = TRUE, }, [MOVE_MIRROR_MOVE] = @@ -3074,6 +3159,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_MirrorMove, + .validApprenticeMove = TRUE, }, [MOVE_SELF_DESTRUCT] = @@ -3096,6 +3182,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_SelfDestruct, + .validApprenticeMove = TRUE, }, [MOVE_EGG_BOMB] = @@ -3118,6 +3205,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_SOFT_BOILED}, .battleAnimScript = gBattleAnimMove_EggBomb, + .validApprenticeMove = TRUE, }, [MOVE_LICK] = @@ -3144,6 +3232,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_Lick, + .validApprenticeMove = TRUE, }, [MOVE_SMOG] = @@ -3244,6 +3333,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_SUNNY_DAY}, .battleAnimScript = gBattleAnimMove_FireBlast, + .validApprenticeMove = TRUE, }, [MOVE_WATERFALL] = @@ -3272,6 +3362,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_RAIN_DANCE}, .battleAnimScript = gBattleAnimMove_Waterfall, + .validApprenticeMove = TRUE, }, [MOVE_CLAMP] = @@ -3298,6 +3389,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_RAIN_DANCE}, .battleAnimScript = gBattleAnimMove_Clamp, + .validApprenticeMove = TRUE, }, [MOVE_SWIFT] = @@ -3319,6 +3411,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_Swift, + .validApprenticeMove = TRUE, }, [MOVE_SKULL_BASH] = @@ -3349,6 +3442,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_SkullBash, + .validApprenticeMove = TRUE, }, [MOVE_SPIKE_CANNON] = @@ -3421,6 +3515,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_Amnesia, + .validApprenticeMove = TRUE, }, [MOVE_KINESIS] = @@ -3444,6 +3539,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = COMBO_STARTER_KINESIS, .contestComboMoves = {COMBO_STARTER_CONFUSION, COMBO_STARTER_PSYCHIC}, .battleAnimScript = gBattleAnimMove_Kinesis, + .validApprenticeMove = TRUE, }, [MOVE_SOFT_BOILED] = @@ -3470,6 +3566,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = COMBO_STARTER_SOFT_BOILED, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_SoftBoiled, + .validApprenticeMove = TRUE, }, [MOVE_HIGH_JUMP_KICK] = @@ -3499,6 +3596,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_MIND_READER}, .battleAnimScript = gBattleAnimMove_HighJumpKick, + .validApprenticeMove = TRUE, }, [MOVE_GLARE] = @@ -3528,6 +3626,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_LEER}, .battleAnimScript = gBattleAnimMove_Glare, + .validApprenticeMove = TRUE, }, [MOVE_DREAM_EATER] = @@ -3551,6 +3650,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_CALM_MIND, COMBO_STARTER_HYPNOSIS}, .battleAnimScript = gBattleAnimMove_DreamEater, + .validApprenticeMove = TRUE, }, [MOVE_POISON_GAS] = @@ -3650,6 +3750,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_LovelyKiss, + .validApprenticeMove = TRUE, }, [MOVE_SKY_ATTACK] = @@ -3681,6 +3782,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_SkyAttack, + .validApprenticeMove = TRUE, }, [MOVE_TRANSFORM] = @@ -3711,6 +3813,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_Transform, + .validApprenticeMove = TRUE, }, [MOVE_BUBBLE] = @@ -3763,6 +3866,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_DizzyPunch, + .validApprenticeMove = TRUE, }, [MOVE_SPORE] = @@ -3787,6 +3891,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_Spore, + .validApprenticeMove = TRUE, }, [MOVE_FLASH] = @@ -3810,6 +3915,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_Flash, + .validApprenticeMove = TRUE, }, [MOVE_PSYWAVE] = @@ -3831,6 +3937,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_CALM_MIND}, .battleAnimScript = gBattleAnimMove_Psywave, + .validApprenticeMove = TRUE, }, [MOVE_SPLASH] = @@ -3881,6 +3988,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_AcidArmor, + .validApprenticeMove = TRUE, }, [MOVE_CRABHAMMER] = @@ -3904,6 +4012,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_RAIN_DANCE, COMBO_STARTER_SWORDS_DANCE}, .battleAnimScript = gBattleAnimMove_Crabhammer, + .validApprenticeMove = TRUE, }, [MOVE_EXPLOSION] = @@ -3926,6 +4035,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_Explosion, + .validApprenticeMove = TRUE, }, [MOVE_FURY_SWIPES] = @@ -3970,6 +4080,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = COMBO_STARTER_BONEMERANG, .contestComboMoves = {COMBO_STARTER_BONE_CLUB, COMBO_STARTER_BONE_RUSH, COMBO_STARTER_SHADOW_BONE}, .battleAnimScript = gBattleAnimMove_Bonemerang, + .validApprenticeMove = TRUE, }, [MOVE_REST] = @@ -3996,6 +4107,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = COMBO_STARTER_REST, .contestComboMoves = {COMBO_STARTER_BELLY_DRUM, COMBO_STARTER_CHARM, COMBO_STARTER_YAWN}, .battleAnimScript = gBattleAnimMove_Rest, + .validApprenticeMove = TRUE, }, [MOVE_ROCK_SLIDE] = @@ -4021,6 +4133,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_ROCK_THROW}, .battleAnimScript = gBattleAnimMove_RockSlide, + .validApprenticeMove = TRUE, }, [MOVE_HYPER_FANG] = @@ -4048,6 +4161,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_HyperFang, + .validApprenticeMove = TRUE, }, [MOVE_SHARPEN] = @@ -4073,6 +4187,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_Sharpen, + .validApprenticeMove = TRUE, }, [MOVE_CONVERSION] = @@ -4098,6 +4213,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_Conversion, + .validApprenticeMove = TRUE, }, [MOVE_TRI_ATTACK] = @@ -4123,6 +4239,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_LOCK_ON}, .battleAnimScript = gBattleAnimMove_TriAttack, + .validApprenticeMove = TRUE, }, [MOVE_SUPER_FANG] = @@ -4146,6 +4263,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_SCARY_FACE}, .battleAnimScript = gBattleAnimMove_SuperFang, + .validApprenticeMove = TRUE, }, [MOVE_SLASH] = @@ -4170,6 +4288,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_SCRATCH, COMBO_STARTER_SWORDS_DANCE}, .battleAnimScript = gBattleAnimMove_Slash, + .validApprenticeMove = TRUE, }, [MOVE_SUBSTITUTE] = @@ -4196,6 +4315,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_Substitute, + .validApprenticeMove = TRUE, }, [MOVE_STRUGGLE] = @@ -4234,6 +4354,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .assistBanned = TRUE, .sketchBanned = TRUE, .battleAnimScript = gBattleAnimMove_Struggle, + .validApprenticeMove = TRUE, }, [MOVE_SKETCH] = @@ -4267,6 +4388,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_Sketch, + .validApprenticeMove = TRUE, }, [MOVE_TRIPLE_KICK] = @@ -4290,6 +4412,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_FOCUS_ENERGY}, .battleAnimScript = gBattleAnimMove_TripleKick, + .validApprenticeMove = TRUE, }, [MOVE_THIEF] = @@ -4320,6 +4443,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_Thief, + .validApprenticeMove = TRUE, }, [MOVE_SPIDER_WEB] = @@ -4344,6 +4468,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_STRING_SHOT}, .battleAnimScript = gBattleAnimMove_SpiderWeb, + .validApprenticeMove = TRUE, }, [MOVE_MIND_READER] = @@ -4366,6 +4491,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = COMBO_STARTER_MIND_READER, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_MindReader, + .validApprenticeMove = TRUE, }, [MOVE_NIGHTMARE] = @@ -4389,6 +4515,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_Nightmare, + .validApprenticeMove = TRUE, }, [MOVE_FLAME_WHEEL] = @@ -4444,6 +4571,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_REST}, .battleAnimScript = gBattleAnimMove_Snore, + .validApprenticeMove = TRUE, }, [MOVE_CURSE] = @@ -4469,6 +4597,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = COMBO_STARTER_CURSE, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_Curse, + .validApprenticeMove = TRUE, }, [MOVE_FLAIL] = @@ -4491,6 +4620,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_ENDURE}, .battleAnimScript = gBattleAnimMove_Flail, + .validApprenticeMove = TRUE, }, [MOVE_CONVERSION_2] = @@ -4516,6 +4646,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_Conversion2, + .validApprenticeMove = TRUE, }, [MOVE_AEROBLAST] = @@ -4539,6 +4670,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_Aeroblast, + .validApprenticeMove = TRUE, }, [MOVE_COTTON_SPORE] = @@ -4563,6 +4695,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_CottonSpore, + .validApprenticeMove = TRUE, }, [MOVE_REVERSAL] = @@ -4585,6 +4718,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_ENDURE}, .battleAnimScript = gBattleAnimMove_Reversal, + .validApprenticeMove = TRUE, }, [MOVE_SPITE] = @@ -4609,6 +4743,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_CURSE}, .battleAnimScript = gBattleAnimMove_Spite, + .validApprenticeMove = TRUE, }, [MOVE_POWDER_SNOW] = @@ -4663,6 +4798,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_HARDEN}, .battleAnimScript = gBattleAnimMove_Protect, + .validApprenticeMove = TRUE, }, [MOVE_MACH_PUNCH] = @@ -4686,6 +4822,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_MachPunch, + .validApprenticeMove = TRUE, }, [MOVE_SCARY_FACE] = @@ -4709,6 +4846,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = COMBO_STARTER_SCARY_FACE, .contestComboMoves = {COMBO_STARTER_LEER, COMBO_STARTER_RAGE}, .battleAnimScript = gBattleAnimMove_ScaryFace, + .validApprenticeMove = TRUE, }, [MOVE_FEINT_ATTACK] = @@ -4731,6 +4869,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_FAKE_OUT, COMBO_STARTER_LEER, COMBO_STARTER_POUND}, .battleAnimScript = gBattleAnimMove_FeintAttack, + .validApprenticeMove = TRUE, }, [MOVE_SWEET_KISS] = @@ -4754,6 +4893,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_CHARM}, .battleAnimScript = gBattleAnimMove_SweetKiss, + .validApprenticeMove = TRUE, }, [MOVE_BELLY_DRUM] = @@ -4779,6 +4919,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = COMBO_STARTER_BELLY_DRUM, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_BellyDrum, + .validApprenticeMove = TRUE, }, [MOVE_SLUDGE_BOMB] = @@ -4805,6 +4946,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = COMBO_STARTER_SLUDGE_BOMB, .contestComboMoves = {COMBO_STARTER_SLUDGE}, .battleAnimScript = gBattleAnimMove_SludgeBomb, + .validApprenticeMove = TRUE, }, [MOVE_MUD_SLAP] = @@ -4830,6 +4972,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = COMBO_STARTER_MUD_SLAP, .contestComboMoves = {COMBO_STARTER_MUD_SPORT, COMBO_STARTER_SAND_ATTACK, COMBO_STARTER_SANDSTORM}, .battleAnimScript = gBattleAnimMove_MudSlap, + .validApprenticeMove = TRUE, }, [MOVE_OCTAZOOKA] = @@ -4856,6 +4999,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_LOCK_ON, COMBO_STARTER_RAIN_DANCE}, .battleAnimScript = gBattleAnimMove_Octazooka, + .validApprenticeMove = TRUE, }, [MOVE_SPIKES] = @@ -4883,6 +5027,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_Spikes, + .validApprenticeMove = TRUE, }, [MOVE_ZAP_CANNON] = @@ -4909,6 +5054,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_CHARGE, COMBO_STARTER_LOCK_ON}, .battleAnimScript = gBattleAnimMove_ZapCannon, + .validApprenticeMove = TRUE, }, [MOVE_FORESIGHT] = @@ -4933,6 +5079,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_Foresight, + .validApprenticeMove = TRUE, }, [MOVE_DESTINY_BOND] = @@ -4961,6 +5108,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_CURSE, COMBO_STARTER_ENDURE, COMBO_STARTER_MEAN_LOOK}, .battleAnimScript = gBattleAnimMove_DestinyBond, + .validApprenticeMove = TRUE, }, [MOVE_PERISH_SONG] = @@ -4987,6 +5135,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_MEAN_LOOK, COMBO_STARTER_SING}, .battleAnimScript = gBattleAnimMove_PerishSong, + .validApprenticeMove = TRUE, }, [MOVE_ICY_WIND] = @@ -5013,6 +5162,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_HAIL}, .battleAnimScript = gBattleAnimMove_IcyWind, + .validApprenticeMove = TRUE, }, [MOVE_DETECT] = @@ -5040,6 +5190,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_TAUNT}, .battleAnimScript = gBattleAnimMove_Detect, + .validApprenticeMove = TRUE, }, [MOVE_BONE_RUSH] = @@ -5083,6 +5234,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = COMBO_STARTER_LOCK_ON, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_LockOn, + .validApprenticeMove = TRUE, }, [MOVE_OUTRAGE] = @@ -5110,6 +5262,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_Outrage, + .validApprenticeMove = TRUE, }, [MOVE_SANDSTORM] = @@ -5135,6 +5288,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = COMBO_STARTER_SANDSTORM, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_Sandstorm, + .validApprenticeMove = TRUE, }, [MOVE_GIGA_DRAIN] = @@ -5159,6 +5313,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_GROWTH}, .battleAnimScript = gBattleAnimMove_GigaDrain, + .validApprenticeMove = TRUE, }, [MOVE_ENDURE] = @@ -5186,6 +5341,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = COMBO_STARTER_ENDURE, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_Endure, + .validApprenticeMove = TRUE, }, [MOVE_CHARM] = @@ -5209,6 +5365,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = COMBO_STARTER_CHARM, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_Charm, + .validApprenticeMove = TRUE, }, [MOVE_ROLLOUT] = @@ -5233,6 +5390,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_DEFENSE_CURL, COMBO_STARTER_HARDEN}, .battleAnimScript = gBattleAnimMove_Rollout, + .validApprenticeMove = TRUE, }, [MOVE_FALSE_SWIPE] = @@ -5253,6 +5411,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_SWORDS_DANCE}, .battleAnimScript = gBattleAnimMove_FalseSwipe, + .validApprenticeMove = TRUE, }, [MOVE_SWAGGER] = @@ -5276,6 +5435,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_Swagger, + .validApprenticeMove = TRUE, }, [MOVE_MILK_DRINK] = @@ -5302,6 +5462,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_MilkDrink, + .validApprenticeMove = TRUE, }, [MOVE_SPARK] = @@ -5357,6 +5518,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_SWORDS_DANCE}, .battleAnimScript = gBattleAnimMove_FuryCutter, + .validApprenticeMove = TRUE, }, [MOVE_STEEL_WING] = @@ -5384,6 +5546,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_SteelWing, + .validApprenticeMove = TRUE, }, [MOVE_MEAN_LOOK] = @@ -5408,6 +5571,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = COMBO_STARTER_MEAN_LOOK, .contestComboMoves = {COMBO_STARTER_CURSE}, .battleAnimScript = gBattleAnimMove_MeanLook, + .validApprenticeMove = TRUE, }, [MOVE_ATTRACT] = @@ -5432,6 +5596,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_Attract, + .validApprenticeMove = TRUE, }, [MOVE_SLEEP_TALK] = @@ -5463,6 +5628,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_REST}, .battleAnimScript = gBattleAnimMove_SleepTalk, + .validApprenticeMove = TRUE, }, [MOVE_HEAL_BELL] = @@ -5490,6 +5656,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = COMBO_STARTER_HEAL_BELL, .contestComboMoves = {COMBO_STARTER_LUCKY_CHANT}, .battleAnimScript = gBattleAnimMove_HealBell, + .validApprenticeMove = TRUE, }, [MOVE_RETURN] = @@ -5512,6 +5679,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_Return, + .validApprenticeMove = TRUE, }, [MOVE_PRESENT] = @@ -5534,6 +5702,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_Present, + .validApprenticeMove = TRUE, }, [MOVE_FRUSTRATION] = @@ -5556,6 +5725,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_Frustration, + .validApprenticeMove = TRUE, }, [MOVE_SAFEGUARD] = @@ -5581,6 +5751,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_Safeguard, + .validApprenticeMove = TRUE, }, [MOVE_PAIN_SPLIT] = @@ -5603,6 +5774,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_ENDURE}, .battleAnimScript = gBattleAnimMove_PainSplit, + .validApprenticeMove = TRUE, }, [MOVE_SACRED_FIRE] = @@ -5629,6 +5801,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_SUNNY_DAY}, .battleAnimScript = gBattleAnimMove_SacredFire, + .validApprenticeMove = TRUE, }, [MOVE_MAGNITUDE] = @@ -5679,6 +5852,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_FOCUS_ENERGY, COMBO_STARTER_MIND_READER}, .battleAnimScript = gBattleAnimMove_DynamicPunch, + .validApprenticeMove = TRUE, }, [MOVE_MEGAHORN] = @@ -5701,6 +5875,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_Megahorn, + .validApprenticeMove = TRUE, }, [MOVE_DRAGON_BREATH] = @@ -5727,6 +5902,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = COMBO_STARTER_DRAGON_BREATH, .contestComboMoves = {COMBO_STARTER_DRAGON_DANCE, COMBO_STARTER_DRAGON_RAGE, COMBO_STARTER_DRAGON_RUSH, COMBO_STARTER_DRAGON_TAIL}, .battleAnimScript = gBattleAnimMove_DragonBreath, + .validApprenticeMove = TRUE, }, [MOVE_BATON_PASS] = @@ -5751,6 +5927,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_BatonPass, + .validApprenticeMove = TRUE, }, [MOVE_ENCORE] = @@ -5776,6 +5953,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_Encore, + .validApprenticeMove = TRUE, }, [MOVE_PURSUIT] = @@ -5799,6 +5977,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_Pursuit, + .validApprenticeMove = TRUE, }, [MOVE_RAPID_SPIN] = @@ -5830,6 +6009,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_RapidSpin, + .validApprenticeMove = TRUE, }, [MOVE_SWEET_SCENT] = @@ -5853,6 +6033,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = COMBO_STARTER_SWEET_SCENT, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_SweetScent, + .validApprenticeMove = TRUE, }, [MOVE_IRON_TAIL] = @@ -5879,6 +6060,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_IronTail, + .validApprenticeMove = TRUE, }, [MOVE_METAL_CLAW] = @@ -5906,6 +6088,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_METAL_SOUND}, .battleAnimScript = gBattleAnimMove_MetalClaw, + .validApprenticeMove = TRUE, }, [MOVE_VITAL_THROW] = @@ -5928,6 +6111,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_FAKE_OUT}, .battleAnimScript = gBattleAnimMove_VitalThrow, + .validApprenticeMove = TRUE, }, [MOVE_MORNING_SUN] = @@ -5954,6 +6138,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_SUNNY_DAY}, .battleAnimScript = gBattleAnimMove_MorningSun, + .validApprenticeMove = TRUE, }, [MOVE_SYNTHESIS] = @@ -5980,6 +6165,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_SUNNY_DAY}, .battleAnimScript = gBattleAnimMove_Synthesis, + .validApprenticeMove = TRUE, }, [MOVE_MOONLIGHT] = @@ -6006,6 +6192,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_SUNNY_DAY}, .battleAnimScript = gBattleAnimMove_Moonlight, + .validApprenticeMove = TRUE, }, [MOVE_HIDDEN_POWER] = @@ -6027,6 +6214,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_HiddenPower, + .validApprenticeMove = TRUE, }, [MOVE_CROSS_CHOP] = @@ -6050,6 +6238,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_FOCUS_ENERGY}, .battleAnimScript = gBattleAnimMove_CrossChop, + .validApprenticeMove = TRUE, }, [MOVE_TWISTER] = @@ -6101,6 +6290,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = COMBO_STARTER_RAIN_DANCE, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_RainDance, + .validApprenticeMove = TRUE, }, [MOVE_SUNNY_DAY] = @@ -6125,6 +6315,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = COMBO_STARTER_SUNNY_DAY, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_SunnyDay, + .validApprenticeMove = TRUE, }, [MOVE_CRUNCH] = @@ -6160,6 +6351,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_SCARY_FACE}, .battleAnimScript = gBattleAnimMove_Crunch, + .validApprenticeMove = TRUE, }, [MOVE_MIRROR_COAT] = @@ -6185,6 +6377,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_TAUNT}, .battleAnimScript = gBattleAnimMove_MirrorCoat, + .validApprenticeMove = TRUE, }, [MOVE_PSYCH_UP] = @@ -6211,6 +6404,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_PsychUp, + .validApprenticeMove = TRUE, }, [MOVE_EXTREME_SPEED] = @@ -6233,6 +6427,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_ExtremeSpeed, + .validApprenticeMove = TRUE, }, [MOVE_ANCIENT_POWER] = @@ -6260,6 +6455,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_AncientPower, + .validApprenticeMove = TRUE, }, [MOVE_SHADOW_BALL] = @@ -6286,6 +6482,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_ShadowBall, + .validApprenticeMove = TRUE, }, [MOVE_FUTURE_SIGHT] = @@ -6315,6 +6512,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_CALM_MIND, COMBO_STARTER_CONFUSION, COMBO_STARTER_KINESIS, COMBO_STARTER_PSYCHIC}, .battleAnimScript = gBattleAnimMove_FutureSight, + .validApprenticeMove = TRUE, }, [MOVE_ROCK_SMASH] = @@ -6341,6 +6539,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_RockSmash, + .validApprenticeMove = TRUE, }, [MOVE_WHIRLPOOL] = @@ -6366,6 +6565,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_RAIN_DANCE}, .battleAnimScript = gBattleAnimMove_Whirlpool, + .validApprenticeMove = TRUE, }, [MOVE_BEAT_UP] = @@ -6387,6 +6587,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_BeatUp, + .validApprenticeMove = TRUE, }, [MOVE_FAKE_OUT] = @@ -6413,6 +6614,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = COMBO_STARTER_FAKE_OUT, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_FakeOut, + .validApprenticeMove = TRUE, }, [MOVE_UPROAR] = @@ -6446,6 +6648,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_Uproar, + .validApprenticeMove = TRUE, }, [MOVE_STOCKPILE] = @@ -6471,6 +6674,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = COMBO_STARTER_STOCKPILE, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_Stockpile, + .validApprenticeMove = TRUE, }, [MOVE_SPIT_UP] = @@ -6493,6 +6697,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_STOCKPILE}, .battleAnimScript = gBattleAnimMove_SpitUp, + .validApprenticeMove = TRUE, }, [MOVE_SWALLOW] = @@ -6519,6 +6724,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_STOCKPILE}, .battleAnimScript = gBattleAnimMove_Swallow, + .validApprenticeMove = TRUE, }, [MOVE_HEAT_WAVE] = @@ -6545,6 +6751,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_SUNNY_DAY}, .battleAnimScript = gBattleAnimMove_HeatWave, + .validApprenticeMove = TRUE, }, [MOVE_HAIL] = @@ -6569,6 +6776,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = COMBO_STARTER_HAIL, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_Hail, + .validApprenticeMove = TRUE, }, [MOVE_TORMENT] = @@ -6592,6 +6800,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_Torment, + .validApprenticeMove = TRUE, }, [MOVE_FLATTER] = @@ -6615,6 +6824,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_CHARM}, .battleAnimScript = gBattleAnimMove_Flatter, + .validApprenticeMove = TRUE, }, [MOVE_WILL_O_WISP] = @@ -6638,6 +6848,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_SUNNY_DAY}, .battleAnimScript = gBattleAnimMove_WillOWisp, + .validApprenticeMove = TRUE, }, [MOVE_MEMENTO] = @@ -6660,6 +6871,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_Memento, + .validApprenticeMove = TRUE, }, [MOVE_FACADE] = @@ -6682,6 +6894,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_Facade, + .validApprenticeMove = TRUE, }, [MOVE_FOCUS_PUNCH] = @@ -6712,6 +6925,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_FOCUS_ENERGY}, .battleAnimScript = gBattleAnimMove_FocusPunch, + .validApprenticeMove = TRUE, }, [MOVE_SMELLING_SALTS] = @@ -6738,6 +6952,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_SmellingSalts, + .validApprenticeMove = TRUE, }, [MOVE_FOLLOW_ME] = @@ -6765,6 +6980,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_FollowMe, + .validApprenticeMove = TRUE, }, [MOVE_NATURE_POWER] = @@ -6793,6 +7009,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_NaturePower, + .validApprenticeMove = TRUE, }, [MOVE_CHARGE] = @@ -6818,6 +7035,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = COMBO_STARTER_CHARGE, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_Charge, + .validApprenticeMove = TRUE, }, [MOVE_TAUNT] = @@ -6842,6 +7060,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = COMBO_STARTER_TAUNT, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_Taunt, + .validApprenticeMove = TRUE, }, [MOVE_HELPING_HAND] = @@ -6870,6 +7089,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_HelpingHand, + .validApprenticeMove = TRUE, }, [MOVE_TRICK] = @@ -6895,6 +7115,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_Trick, + .validApprenticeMove = TRUE, }, [MOVE_ROLE_PLAY] = @@ -6920,6 +7141,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_RolePlay, + .validApprenticeMove = TRUE, }, [MOVE_WISH] = @@ -6946,6 +7168,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_Wish, + .validApprenticeMove = TRUE, }, [MOVE_ASSIST] = @@ -6976,6 +7199,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_Assist, + .validApprenticeMove = TRUE, }, [MOVE_INGRAIN] = @@ -7002,6 +7226,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_Ingrain, + .validApprenticeMove = TRUE, }, [MOVE_SUPERPOWER] = @@ -7028,6 +7253,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_LOCK_ON, COMBO_STARTER_MIND_READER}, .battleAnimScript = gBattleAnimMove_Superpower, + .validApprenticeMove = TRUE, }, [MOVE_MAGIC_COAT] = @@ -7052,6 +7278,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_MagicCoat, + .validApprenticeMove = TRUE, }, [MOVE_RECYCLE] = @@ -7077,6 +7304,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_Recycle, + .validApprenticeMove = TRUE, }, [MOVE_REVENGE] = @@ -7097,6 +7325,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = COMBO_STARTER_REVENGE, .contestComboMoves = {COMBO_STARTER_PAYBACK}, .battleAnimScript = gBattleAnimMove_Revenge, + .validApprenticeMove = TRUE, }, [MOVE_BRICK_BREAK] = @@ -7119,6 +7348,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_FOCUS_ENERGY}, .battleAnimScript = gBattleAnimMove_BrickBreak, + .validApprenticeMove = TRUE, }, [MOVE_YAWN] = @@ -7142,6 +7372,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = COMBO_STARTER_YAWN, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_Yawn, + .validApprenticeMove = TRUE, }, [MOVE_KNOCK_OFF] = @@ -7167,6 +7398,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_FAKE_OUT}, .battleAnimScript = gBattleAnimMove_KnockOff, + .validApprenticeMove = TRUE, }, [MOVE_ENDEAVOR] = @@ -7190,6 +7422,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_ENDURE}, .battleAnimScript = gBattleAnimMove_Endeavor, + .validApprenticeMove = TRUE, }, [MOVE_ERUPTION] = @@ -7211,6 +7444,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_EARTHQUAKE, COMBO_STARTER_ENDURE, COMBO_STARTER_SUNNY_DAY}, .battleAnimScript = gBattleAnimMove_Eruption, + .validApprenticeMove = TRUE, }, [MOVE_SKILL_SWAP] = @@ -7234,6 +7468,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_SkillSwap, + .validApprenticeMove = TRUE, }, [MOVE_IMPRISON] = @@ -7261,6 +7496,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_Imprison, + .validApprenticeMove = TRUE, }, [MOVE_REFRESH] = @@ -7286,6 +7522,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_SING, COMBO_STARTER_WATER_SPORT}, .battleAnimScript = gBattleAnimMove_Refresh, + .validApprenticeMove = TRUE, }, [MOVE_GRUDGE] = @@ -7311,6 +7548,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_CURSE}, .battleAnimScript = gBattleAnimMove_Grudge, + .validApprenticeMove = TRUE, }, [MOVE_SNATCH] = @@ -7338,6 +7576,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_Snatch, + .validApprenticeMove = TRUE, }, [MOVE_SECRET_POWER] = @@ -7363,6 +7602,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_SecretPower, + .validApprenticeMove = TRUE, }, [MOVE_DIVE] = @@ -7390,6 +7630,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = COMBO_STARTER_DIVE, .contestComboMoves = {COMBO_STARTER_RAIN_DANCE, COMBO_STARTER_SURF}, .battleAnimScript = gBattleAnimMove_Dive, + .validApprenticeMove = TRUE, }, [MOVE_ARM_THRUST] = @@ -7437,6 +7678,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_Camouflage, + .validApprenticeMove = TRUE, }, [MOVE_TAIL_GLOW] = @@ -7462,6 +7704,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_TailGlow, + .validApprenticeMove = TRUE, }, [MOVE_LUSTER_PURGE] = @@ -7487,6 +7730,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_CALM_MIND}, .battleAnimScript = gBattleAnimMove_LusterPurge, + .validApprenticeMove = TRUE, }, [MOVE_MIST_BALL] = @@ -7513,6 +7757,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_CALM_MIND}, .battleAnimScript = gBattleAnimMove_MistBall, + .validApprenticeMove = TRUE, }, [MOVE_FEATHER_DANCE] = @@ -7537,6 +7782,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_FeatherDance, + .validApprenticeMove = TRUE, }, [MOVE_TEETER_DANCE] = @@ -7561,6 +7807,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_TeeterDance, + .validApprenticeMove = TRUE, }, [MOVE_BLAZE_KICK] = @@ -7588,6 +7835,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_SUNNY_DAY}, .battleAnimScript = gBattleAnimMove_BlazeKick, + .validApprenticeMove = TRUE, }, [MOVE_MUD_SPORT] = @@ -7613,6 +7861,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = COMBO_STARTER_MUD_SPORT, .contestComboMoves = {COMBO_STARTER_MUD_SLAP, COMBO_STARTER_SANDSTORM, COMBO_STARTER_WATER_SPORT}, .battleAnimScript = gBattleAnimMove_MudSport, + .validApprenticeMove = TRUE, }, [MOVE_ICE_BALL] = @@ -7665,6 +7914,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_NeedleArm, + .validApprenticeMove = TRUE, }, [MOVE_SLACK_OFF] = @@ -7691,6 +7941,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_SlackOff, + .validApprenticeMove = TRUE, }, [MOVE_HYPER_VOICE] = @@ -7714,6 +7965,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_HyperVoice, + .validApprenticeMove = TRUE, }, [MOVE_POISON_FANG] = @@ -7767,6 +8019,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_SWORDS_DANCE}, .battleAnimScript = gBattleAnimMove_CrushClaw, + .validApprenticeMove = TRUE, }, [MOVE_BLAST_BURN] = @@ -7792,6 +8045,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_SUNNY_DAY}, .battleAnimScript = gBattleAnimMove_BlastBurn, + .validApprenticeMove = TRUE, }, [MOVE_HYDRO_CANNON] = @@ -7817,6 +8071,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_RAIN_DANCE}, .battleAnimScript = gBattleAnimMove_HydroCannon, + .validApprenticeMove = TRUE, }, [MOVE_METEOR_MASH] = @@ -7845,6 +8100,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_MeteorMash, + .validApprenticeMove = TRUE, }, [MOVE_ASTONISH] = @@ -7872,6 +8128,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_Astonish, + .validApprenticeMove = TRUE, }, [MOVE_WEATHER_BALL] = @@ -7895,6 +8152,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_HAIL, COMBO_STARTER_RAIN_DANCE, COMBO_STARTER_SANDSTORM, COMBO_STARTER_SUNNY_DAY}, .battleAnimScript = gBattleAnimMove_WeatherBall, + .validApprenticeMove = TRUE, }, [MOVE_AROMATHERAPY] = @@ -7920,6 +8178,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_Aromatherapy, + .validApprenticeMove = TRUE, }, [MOVE_FAKE_TEARS] = @@ -7943,6 +8202,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_FakeTears, + .validApprenticeMove = TRUE, }, [MOVE_AIR_CUTTER] = @@ -7967,6 +8227,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_AirCutter, + .validApprenticeMove = TRUE, }, [MOVE_OVERHEAT] = @@ -7993,6 +8254,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_SUNNY_DAY}, .battleAnimScript = gBattleAnimMove_Overheat, + .validApprenticeMove = TRUE, }, [MOVE_ODOR_SLEUTH] = @@ -8017,6 +8279,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_OdorSleuth, + .validApprenticeMove = TRUE, }, [MOVE_ROCK_TOMB] = @@ -8042,6 +8305,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_ROCK_THROW}, .battleAnimScript = gBattleAnimMove_RockTomb, + .validApprenticeMove = TRUE, }, [MOVE_SILVER_WIND] = @@ -8069,6 +8333,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_SilverWind, + .validApprenticeMove = TRUE, }, [MOVE_METAL_SOUND] = @@ -8094,6 +8359,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = COMBO_STARTER_METAL_SOUND, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_MetalSound, + .validApprenticeMove = TRUE, }, [MOVE_GRASS_WHISTLE] = @@ -8119,6 +8385,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_GrassWhistle, + .validApprenticeMove = TRUE, }, [MOVE_TICKLE] = @@ -8142,6 +8409,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_Tickle, + .validApprenticeMove = TRUE, }, [MOVE_COSMIC_POWER] = @@ -8167,6 +8435,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_CosmicPower, + .validApprenticeMove = TRUE, }, [MOVE_WATER_SPOUT] = @@ -8188,6 +8457,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_RAIN_DANCE}, .battleAnimScript = gBattleAnimMove_WaterSpout, + .validApprenticeMove = TRUE, }, [MOVE_SIGNAL_BEAM] = @@ -8213,6 +8483,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_SignalBeam, + .validApprenticeMove = TRUE, }, [MOVE_SHADOW_PUNCH] = @@ -8236,6 +8507,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_ShadowPunch, + .validApprenticeMove = TRUE, }, [MOVE_EXTRASENSORY] = @@ -8262,6 +8534,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_Extrasensory, + .validApprenticeMove = TRUE, }, [MOVE_SKY_UPPERCUT] = @@ -8286,6 +8559,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_FOCUS_ENERGY}, .battleAnimScript = gBattleAnimMove_SkyUppercut, + .validApprenticeMove = TRUE, }, [MOVE_SAND_TOMB] = @@ -8310,6 +8584,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_SANDSTORM}, .battleAnimScript = gBattleAnimMove_SandTomb, + .validApprenticeMove = TRUE, }, [MOVE_SHEER_COLD] = @@ -8331,6 +8606,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_HAIL, COMBO_STARTER_MIND_READER}, .battleAnimScript = gBattleAnimMove_SheerCold, + .validApprenticeMove = TRUE, }, [MOVE_MUDDY_WATER] = @@ -8357,6 +8633,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_RAIN_DANCE}, .battleAnimScript = gBattleAnimMove_MuddyWater, + .validApprenticeMove = TRUE, }, [MOVE_BULLET_SEED] = @@ -8402,6 +8679,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_AerialAce, + .validApprenticeMove = TRUE, }, [MOVE_ICICLE_SPEAR] = @@ -8448,6 +8726,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_IronDefense, + .validApprenticeMove = TRUE, }, [MOVE_BLOCK] = @@ -8472,6 +8751,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_Block, + .validApprenticeMove = TRUE, }, [MOVE_HOWL] = @@ -8498,6 +8778,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_Howl, + .validApprenticeMove = TRUE, }, [MOVE_DRAGON_CLAW] = @@ -8520,6 +8801,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_DRAGON_BREATH, COMBO_STARTER_DRAGON_DANCE, COMBO_STARTER_DRAGON_RAGE, COMBO_STARTER_DRAGON_RUSH, COMBO_STARTER_DRAGON_TAIL}, .battleAnimScript = gBattleAnimMove_DragonClaw, + .validApprenticeMove = TRUE, }, [MOVE_FRENZY_PLANT] = @@ -8546,6 +8828,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_GROWTH}, .battleAnimScript = gBattleAnimMove_FrenzyPlant, + .validApprenticeMove = TRUE, }, [MOVE_BULK_UP] = @@ -8571,6 +8854,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_BulkUp, + .validApprenticeMove = TRUE, }, [MOVE_BOUNCE] = @@ -8602,6 +8886,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_Bounce, + .validApprenticeMove = TRUE, }, [MOVE_MUD_SHOT] = @@ -8654,6 +8939,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_PoisonTail, + .validApprenticeMove = TRUE, }, [MOVE_COVET] = @@ -8683,6 +8969,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_Covet, + .validApprenticeMove = TRUE, }, [MOVE_VOLT_TACKLE] = @@ -8712,6 +8999,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_VoltTackle, + .validApprenticeMove = TRUE, }, [MOVE_MAGICAL_LEAF] = @@ -8733,6 +9021,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_GROWTH}, .battleAnimScript = gBattleAnimMove_MagicalLeaf, + .validApprenticeMove = TRUE, }, [MOVE_WATER_SPORT] = @@ -8758,6 +9047,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = COMBO_STARTER_WATER_SPORT, .contestComboMoves = {COMBO_STARTER_MUD_SPORT, COMBO_STARTER_RAIN_DANCE}, .battleAnimScript = gBattleAnimMove_WaterSport, + .validApprenticeMove = TRUE, }, [MOVE_CALM_MIND] = @@ -8783,6 +9073,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = COMBO_STARTER_CALM_MIND, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_CalmMind, + .validApprenticeMove = TRUE, }, [MOVE_LEAF_BLADE] = @@ -8807,6 +9098,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_LeafBlade, + .validApprenticeMove = TRUE, }, [MOVE_DRAGON_DANCE] = @@ -8833,6 +9125,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = COMBO_STARTER_DRAGON_DANCE, .contestComboMoves = {COMBO_STARTER_DRAGON_BREATH, COMBO_STARTER_DRAGON_RAGE, COMBO_STARTER_DRAGON_RUSH, COMBO_STARTER_DRAGON_TAIL}, .battleAnimScript = gBattleAnimMove_DragonDance, + .validApprenticeMove = TRUE, }, [MOVE_ROCK_BLAST] = @@ -8876,6 +9169,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_CHARGE}, .battleAnimScript = gBattleAnimMove_ShockWave, + .validApprenticeMove = TRUE, }, [MOVE_WATER_PULSE] = @@ -8902,6 +9196,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_RAIN_DANCE}, .battleAnimScript = gBattleAnimMove_WaterPulse, + .validApprenticeMove = TRUE, }, [MOVE_DOOM_DESIRE] = @@ -8925,6 +9220,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {0}, .battleAnimScript = gBattleAnimMove_DoomDesire, + .validApprenticeMove = TRUE, }, [MOVE_PSYCHO_BOOST] = @@ -8950,6 +9246,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_CALM_MIND}, .battleAnimScript = gBattleAnimMove_PsychoBoost, + .validApprenticeMove = TRUE, }, [MOVE_ROOST] = From 2b2d703c8a79e72ad197774ae9c262afcccfd76c Mon Sep 17 00:00:00 2001 From: Alex <93446519+AlexOn1ine@users.noreply.github.com> Date: Thu, 13 Feb 2025 19:31:50 +0100 Subject: [PATCH 25/73] Fixes Static Assert from pr #6174 (#6258) --- src/overworld.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/overworld.c b/src/overworld.c index c94c67516a..3dcb26de87 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -73,7 +73,7 @@ #include "constants/trainer_hill.h" #include "constants/weather.h" -STATIC_ASSERT((B_FLAG_FOLLOWERS_DISABLED == 0 && !OW_FOLLOWERS_ENABLED), FollowersFlagAssignedWithoutEnablingThem); +STATIC_ASSERT((B_FLAG_FOLLOWERS_DISABLED == 0 || OW_FOLLOWERS_ENABLED), FollowersFlagAssignedWithoutEnablingThem); struct CableClubPlayer { From 264e72c1a1d839b1016751c60cf43885b2929922 Mon Sep 17 00:00:00 2001 From: Alex <93446519+AlexOn1ine@users.noreply.github.com> Date: Fri, 14 Feb 2025 00:22:10 +0100 Subject: [PATCH 26/73] Use more accurate count in MovesInfo (#6260) --- src/data/moves_info.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/data/moves_info.h b/src/data/moves_info.h index 0589866293..f826a05fb4 100644 --- a/src/data/moves_info.h +++ b/src/data/moves_info.h @@ -110,7 +110,7 @@ static const u8 sFeintDescription[] = _( "An attack that hits foes\n" "using moves like Protect."); -const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = +const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = { [MOVE_NONE] = { From 6d6b0f6c3be259a1462106b0ddb97a394e54ca6c Mon Sep 17 00:00:00 2001 From: Deokishisu <6993375+Deokishisu@users.noreply.github.com> Date: Fri, 14 Feb 2025 04:11:37 -0500 Subject: [PATCH 27/73] Fix Extra `task->tState++` and `break` in `Task_DrawFieldMessageBox` (#6261) --- src/field_message_box.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/field_message_box.c b/src/field_message_box.c index 47c728f74d..bf9ce1aa93 100755 --- a/src/field_message_box.c +++ b/src/field_message_box.c @@ -38,8 +38,6 @@ static void Task_DrawFieldMessage(u8 taskId) LoadMessageBoxAndBorderGfx(); task->tState++; break; - task->tState++; - break; case 1: DrawDialogueFrame(0, TRUE); task->tState++; From 53727aa23d006b6f05aaa6b4adf78ad491eaad29 Mon Sep 17 00:00:00 2001 From: Alex <93446519+AlexOn1ine@users.noreply.github.com> Date: Fri, 14 Feb 2025 12:26:49 +0100 Subject: [PATCH 28/73] Fixes ability Embody Aspect triggering multiple times (#6259) Co-authored-by: Bassoonian --- include/battle.h | 1 + src/battle_util.c | 4 +++- test/battle/ability/embody_aspect.c | 23 +++++++++++++++++++++++ 3 files changed, 27 insertions(+), 1 deletion(-) diff --git a/include/battle.h b/include/battle.h index 0ca26cc8e6..2659c08844 100644 --- a/include/battle.h +++ b/include/battle.h @@ -833,6 +833,7 @@ struct BattleStruct u8 usedEjectItem; u8 usedMicleBerry; u8 trainerSlideSpriteIds[MAX_BATTLERS_COUNT]; + u8 embodyAspectBoost[NUM_BATTLE_SIDES]; }; // The palaceFlags member of struct BattleStruct contains 1 flag per move to indicate which moves the AI should consider, diff --git a/src/battle_util.c b/src/battle_util.c index 6419b5017d..20e4ba635e 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -5107,7 +5107,8 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 case ABILITY_EMBODY_ASPECT_HEARTHFLAME_MASK: case ABILITY_EMBODY_ASPECT_WELLSPRING_MASK: case ABILITY_EMBODY_ASPECT_CORNERSTONE_MASK: - if (!gSpecialStatuses[battler].switchInAbilityDone) + if (!gSpecialStatuses[battler].switchInAbilityDone + && !(gBattleStruct->embodyAspectBoost[GetBattlerSide(battler)] & (1u << gBattlerPartyIndexes[battler]))) { u32 stat; @@ -5126,6 +5127,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 gBattleScripting.savedBattler = gBattlerAttacker; gBattlerAttacker = battler; gSpecialStatuses[battler].switchInAbilityDone = TRUE; + gBattleStruct->embodyAspectBoost[GetBattlerSide(battler)] |= 1u << gBattlerPartyIndexes[battler]; SET_STATCHANGER(stat, 1, FALSE); BattleScriptPushCursorAndCallback(BattleScript_BattlerAbilityStatRaiseOnSwitchIn); effect++; diff --git a/test/battle/ability/embody_aspect.c b/test/battle/ability/embody_aspect.c index fffc8cf423..22b28dea22 100644 --- a/test/battle/ability/embody_aspect.c +++ b/test/battle/ability/embody_aspect.c @@ -57,3 +57,26 @@ SINGLE_BATTLE_TEST("Embody Aspect activates when it's no longer effected by Neut MESSAGE("The opposing Ogerpon's Embody Aspect raised its Speed!"); } } + +SINGLE_BATTLE_TEST("Embody Aspect raises Speed only once per battle") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_OGERPON_TEAL_TERA) { Ability(ABILITY_EMBODY_ASPECT_TEAL_MASK); } + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { SWITCH(opponent, 1); } + TURN { SWITCH(opponent, 0); } + } SCENE { + ABILITY_POPUP(opponent, ABILITY_EMBODY_ASPECT_TEAL_MASK); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + MESSAGE("The opposing Ogerpon's Embody Aspect raised its Speed!"); + NONE_OF { + ABILITY_POPUP(opponent, ABILITY_EMBODY_ASPECT_TEAL_MASK); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + MESSAGE("The opposing Ogerpon's Embody Aspect raised its Speed!"); + } + } THEN { + EXPECT_EQ(opponent->statStages[STAT_SPEED], DEFAULT_STAT_STAGE); + } +} From de8d25da559a64adbd8b7a95d99ffafe16903e5b Mon Sep 17 00:00:00 2001 From: Alex <93446519+AlexOn1ine@users.noreply.github.com> Date: Fri, 14 Feb 2025 12:31:21 +0100 Subject: [PATCH 29/73] Expand usage of IsBattlerAlly (rename from IsAlly) (#6251) --- include/battle.h | 5 +++++ src/battle_anim.c | 9 ++++----- src/battle_anim_bug.c | 2 +- src/battle_anim_effects_1.c | 8 +++++--- src/battle_anim_fire.c | 2 +- src/battle_anim_new.c | 6 +++--- src/battle_anim_psychic.c | 2 +- src/battle_anim_status_effects.c | 2 +- src/battle_anim_utility_funcs.c | 2 +- src/battle_anim_water.c | 2 +- src/battle_script_commands.c | 6 +++--- src/battle_util.c | 26 +++++++++++--------------- src/pokemon.c | 10 ++++++---- 13 files changed, 43 insertions(+), 39 deletions(-) diff --git a/include/battle.h b/include/battle.h index e0a6225f82..f43659020f 100644 --- a/include/battle.h +++ b/include/battle.h @@ -1243,6 +1243,11 @@ static inline u32 GetBattlerSide(u32 battler) return GetBattlerPosition(battler) & BIT_SIDE; } +static inline bool32 IsBattlerAlly(u32 battlerAtk, u32 battlerDef) +{ + return (GetBattlerSide(battlerAtk) == GetBattlerSide(battlerDef)); +} + static inline u32 GetOpposingSideBattler(u32 battler) { return GetBattlerAtPosition(BATTLE_OPPOSITE(GetBattlerSide(battler))); diff --git a/src/battle_anim.c b/src/battle_anim.c index 38648310a7..eb0e2af560 100644 --- a/src/battle_anim.c +++ b/src/battle_anim.c @@ -304,7 +304,7 @@ void DoMoveAnim(u16 move) // Make sure the anim target of moves hitting everyone is at the opposite side. if (GetBattlerMoveTargetType(gBattlerAttacker, move) & MOVE_TARGET_FOES_AND_ALLY && IsDoubleBattle()) { - while (GetBattlerSide(gBattleAnimAttacker) == GetBattlerSide(gBattleAnimTarget)) + while (IsBattlerAlly(gBattleAnimAttacker, gBattleAnimTarget)) { if (++gBattleAnimTarget >= MAX_BATTLERS_COUNT) gBattleAnimTarget = 0; @@ -563,7 +563,7 @@ static u8 GetBattleAnimMoveTargets(u8 battlerArgIndex, u8 *targets) case MOVE_TARGET_BOTH: // all opponents for (i = 0; i < gBattlersCount; i++) { - if (i != ignoredTgt && !IsAlly(i, ignoredTgt) && IS_ALIVE_AND_PRESENT(i)) + if (i != ignoredTgt && !IsBattlerAlly(i, ignoredTgt) && IS_ALIVE_AND_PRESENT(i)) targets[numTargets++] = i + MAX_BATTLERS_COUNT; } break; @@ -2157,8 +2157,7 @@ static void Cmd_teamattack_moveback(void) sBattleAnimScriptPtr += 2; // Apply to double battles when attacking own side - if (!IsContest() && IsDoubleBattle() - && GetBattlerSide(gBattleAnimAttacker) == GetBattlerSide(gBattleAnimTarget)) + if (!IsContest() && IsDoubleBattle() && IsBattlerAlly(gBattleAnimAttacker, gBattleAnimTarget)) { if (wantedBattler == ANIM_ATTACKER) { @@ -2195,7 +2194,7 @@ static void Cmd_teamattack_movefwd(void) // Apply to double battles when attacking own side if (!IsContest() && IsDoubleBattle() - && GetBattlerSide(gBattleAnimAttacker) == GetBattlerSide(gBattleAnimTarget)) + && IsBattlerAlly(gBattleAnimAttacker, gBattleAnimTarget)) { if (wantedBattler == ANIM_ATTACKER) { diff --git a/src/battle_anim_bug.c b/src/battle_anim_bug.c index e897290768..19e201a45e 100644 --- a/src/battle_anim_bug.c +++ b/src/battle_anim_bug.c @@ -389,7 +389,7 @@ void AnimTranslateStinger(struct Sprite *sprite) } } - if (!IsContest() && GetBattlerSide(gBattleAnimAttacker) == GetBattlerSide(gBattleAnimTarget)) + if (!IsContest() && IsBattlerAlly(gBattleAnimAttacker, gBattleAnimTarget)) { if (GetBattlerPosition(gBattleAnimTarget) == B_POSITION_PLAYER_LEFT || GetBattlerPosition(gBattleAnimTarget) == B_POSITION_OPPONENT_LEFT) diff --git a/src/battle_anim_effects_1.c b/src/battle_anim_effects_1.c index ca322e222f..4162447094 100644 --- a/src/battle_anim_effects_1.c +++ b/src/battle_anim_effects_1.c @@ -4022,7 +4022,7 @@ static const union AffineAnimCmd *const sAffineAnims_TeraStarstormBeamRing[] = sAffineAnim_TeraStarstormBeamRing, }; -const struct SpriteTemplate gTeraStarstormBeamSpriteTemplate = +const struct SpriteTemplate gTeraStarstormBeamSpriteTemplate = { .tileTag = ANIM_TAG_STARSTORM, .paletteTag = ANIM_TAG_STARSTORM, @@ -4170,7 +4170,7 @@ void AnimTranslateLinearSingleSineWave(struct Sprite *sprite) sprite->data[5] = gBattleAnimArgs[5]; InitAnimArcTranslation(sprite); - if (GetBattlerSide(gBattleAnimAttacker) == GetBattlerSide(gBattleAnimTarget)) + if (IsBattlerAlly(gBattleAnimAttacker, gBattleAnimTarget)) sprite->data[0] = 1; else sprite->data[0] = 0; @@ -6845,10 +6845,12 @@ static void TrySwapWishBattlerIds(u32 battlerAtk, u32 battlerPartner) // if used future sight on opposing side, properly track who used it if (gSideStatuses[oppSide] & SIDE_STATUS_FUTUREATTACK) { + u32 battlerAtkSide = GetBattlerSide(battlerAtk); for (i = 0; i < gBattlersCount; i++) { - if (IsAlly(i,battlerAtk)) + if (battlerAtkSide == GetBattlerSide(i)) continue; // only on opposing side + if (gWishFutureKnock.futureSightBattlerIndex[i] == battlerAtk) { // if target was attacked with future sight from us, now they'll be the partner slot diff --git a/src/battle_anim_fire.c b/src/battle_anim_fire.c index 401cc09eaf..b67304e05e 100644 --- a/src/battle_anim_fire.c +++ b/src/battle_anim_fire.c @@ -717,7 +717,7 @@ static void AnimSunlight(struct Sprite *sprite) // arg 6: ? (todo: something related to which mon the pixel offsets are based on) static void AnimEmberFlare(struct Sprite *sprite) { - if (GetBattlerSide(gBattleAnimAttacker) == GetBattlerSide(gBattleAnimTarget) + if (IsBattlerAlly(gBattleAnimAttacker, gBattleAnimTarget) && (gBattleAnimAttacker == GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT) || gBattleAnimAttacker == GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT))) gBattleAnimArgs[2] = -gBattleAnimArgs[2]; diff --git a/src/battle_anim_new.c b/src/battle_anim_new.c index f344b711d6..3386570885 100644 --- a/src/battle_anim_new.c +++ b/src/battle_anim_new.c @@ -8896,7 +8896,7 @@ static void SpriteCB_AnimSpriteOnTargetSideCentre(struct Sprite *sprite) if (!sprite->data[0]) { - if (IsAlly(gBattleAnimAttacker, target)) + if (IsBattlerAlly(gBattleAnimAttacker, target)) { if (IsDoubleBattle()) InitSpritePosToAnimAttackersCentre(sprite, FALSE); @@ -9072,7 +9072,7 @@ static void SpriteCB_DragonEnergyShot(struct Sprite* sprite) u8 def1 = gBattleAnimTarget; u8 def2 = BATTLE_PARTNER(def1); - if (!IsDoubleBattle() || IsAlly(gBattleAnimAttacker, gBattleAnimTarget)) + if (!IsDoubleBattle() || IsBattlerAlly(gBattleAnimAttacker, gBattleAnimTarget)) y = GetBattlerSpriteCoord(def1, BATTLER_COORD_Y_PIC_OFFSET); else { @@ -9172,7 +9172,7 @@ static void SpriteCB_GlacialLance(struct Sprite* sprite) sprite->data[0] = gBattleAnimArgs[6]; - if (!IsDoubleBattle() || IsAlly(gBattleAnimAttacker, gBattleAnimTarget)) + if (!IsDoubleBattle() || IsBattlerAlly(gBattleAnimAttacker, gBattleAnimTarget)) { sprite->data[2] = GetBattlerSpriteCoord(def1, BATTLER_COORD_X_2) + gBattleAnimArgs[2]; //Converge on target sprite->data[4] = GetBattlerSpriteCoord(def1, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[3]; diff --git a/src/battle_anim_psychic.c b/src/battle_anim_psychic.c index 0b4b67f3b7..b7e023c9ad 100644 --- a/src/battle_anim_psychic.c +++ b/src/battle_anim_psychic.c @@ -501,7 +501,7 @@ static void AnimPsychoCut(struct Sprite *sprite) } } - if (!IsContest() && GetBattlerSide(gBattleAnimAttacker) == GetBattlerSide(gBattleAnimTarget)) + if (!IsContest() && IsBattlerAlly(gBattleAnimAttacker, gBattleAnimTarget)) { if (GetBattlerPosition(gBattleAnimTarget) == B_POSITION_PLAYER_LEFT || GetBattlerPosition(gBattleAnimTarget) == B_POSITION_OPPONENT_LEFT) diff --git a/src/battle_anim_status_effects.c b/src/battle_anim_status_effects.c index f746f186aa..9090893fda 100644 --- a/src/battle_anim_status_effects.c +++ b/src/battle_anim_status_effects.c @@ -403,7 +403,7 @@ void AnimTask_CentredFrozenIceCube(u8 taskId) u8 battler1 = gBattleAnimTarget; u8 battler2 = BATTLE_PARTNER(battler1); - if (!IsDoubleBattle() || IsAlly(gBattleAnimAttacker, gBattleAnimTarget)) + if (!IsDoubleBattle() || IsBattlerAlly(gBattleAnimAttacker, gBattleAnimTarget)) { x = GetBattlerSpriteCoord(battler1, BATTLER_COORD_X_2); y = GetBattlerSpriteCoord(battler1, BATTLER_COORD_Y_PIC_OFFSET); diff --git a/src/battle_anim_utility_funcs.c b/src/battle_anim_utility_funcs.c index 47850bc56a..47642b9fce 100644 --- a/src/battle_anim_utility_funcs.c +++ b/src/battle_anim_utility_funcs.c @@ -1036,7 +1036,7 @@ void AnimTask_SetAnimAttackerAndTargetForEffectTgt(u8 taskId) void AnimTask_IsTargetSameSide(u8 taskId) { - if (GetBattlerSide(gBattleAnimAttacker) == GetBattlerSide(gBattleAnimTarget)) + if (IsBattlerAlly(gBattleAnimAttacker, gBattleAnimTarget)) gBattleAnimArgs[ARG_RET_ID] = TRUE; else gBattleAnimArgs[ARG_RET_ID] = FALSE; diff --git a/src/battle_anim_water.c b/src/battle_anim_water.c index 4265e8d03c..57053ef043 100644 --- a/src/battle_anim_water.c +++ b/src/battle_anim_water.c @@ -940,7 +940,7 @@ static void AnimHydroCannonBeam(struct Sprite *sprite) { bool8 animType; u8 coordType; - if (GetBattlerSide(gBattleAnimAttacker) == GetBattlerSide(gBattleAnimTarget)) + if (IsBattlerAlly(gBattleAnimAttacker, gBattleAnimTarget)) { gBattleAnimArgs[0] *= -1; if (GetBattlerPosition(gBattleAnimAttacker) == B_POSITION_PLAYER_LEFT || GetBattlerPosition(gBattleAnimAttacker) == B_POSITION_OPPONENT_LEFT) diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 9b73ba1207..4241b989b9 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -12489,7 +12489,7 @@ static u32 ChangeStatBuffs(s8 statValue, u32 statId, u32 flags, const u8 *BS_ptr // Check Mirror Herb / Opportunist for (index = 0; index < gBattlersCount; index++) { - if (GetBattlerSide(index) == GetBattlerSide(battler)) + if (IsBattlerAlly(index, battler)) continue; // Only triggers on opposing side if (GetBattlerAbility(index) == ABILITY_OPPORTUNIST @@ -17959,7 +17959,7 @@ void BS_JumpIfSleepClause(void) NATIVE_ARGS(const u8 *jumpInstr); // Can freely sleep own partner - if (IsDoubleBattle() && IsSleepClauseEnabled() && GetBattlerSide(gBattlerAttacker) == GetBattlerSide(gBattlerTarget)) + if (IsDoubleBattle() && IsSleepClauseEnabled() && IsBattlerAlly(gBattlerAttacker, gBattlerTarget)) { gBattleStruct->battlerState[gBattlerTarget].sleepClauseEffectExempt = TRUE; gBattlescriptCurrInstr = cmd->nextInstr; @@ -18079,7 +18079,7 @@ void BS_TryWindRiderPower(void) u32 battler = GetBattlerForBattleScript(cmd->battler); u16 ability = GetBattlerAbility(battler); - if (GetBattlerSide(battler) == GetBattlerSide(gBattlerAttacker) + if (IsBattlerAlly(battler, gBattlerAttacker) && (ability == ABILITY_WIND_RIDER || ability == ABILITY_WIND_POWER)) { gLastUsedAbility = ability; diff --git a/src/battle_util.c b/src/battle_util.c index bed82d81bd..4dc362cb3a 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -346,7 +346,7 @@ void HandleAction_UseMove(void) for (battler = 0; battler < gBattlersCount; battler++) { ability = GetBattlerAbility(battler); - if ((B_REDIRECT_ABILITY_ALLIES >= GEN_4 || !IsAlly(gBattlerAttacker, battler)) + if ((B_REDIRECT_ABILITY_ALLIES >= GEN_4 || !IsBattlerAlly(gBattlerAttacker, battler)) && battler != gBattlerAttacker && gBattleStruct->moveTarget[gBattlerAttacker] != battler && ((ability == ABILITY_LIGHTNING_ROD && moveType == TYPE_ELECTRIC) @@ -458,7 +458,7 @@ void HandleAction_UseMove(void) } } - if ((GetBattlerSide(gBattlerAttacker) == GetBattlerSide(gBattlerTarget)) + if ((IsBattlerAlly(gBattlerAttacker, gBattlerTarget)) && (!IsBattlerAlive(gBattlerTarget) || gProtectStructs[BATTLE_PARTNER(gBattlerAttacker)].usedAllySwitch)) { gBattlescriptCurrInstr = BattleScript_FailedFromAtkCanceler; @@ -4253,7 +4253,7 @@ bool32 CanAbilityBlockMove(u32 battlerAtk, u32 battlerDef, u32 move, u32 ability case ABILITY_DAZZLING: case ABILITY_QUEENLY_MAJESTY: case ABILITY_ARMOR_TAIL: - if (atkPriority > 0 && !IsAlly(battlerAtk, battlerDef)) + if (atkPriority > 0 && !IsBattlerAlly(battlerAtk, battlerDef)) { if (gBattleMons[battlerAtk].status2 & STATUS2_MULTIPLETURNS) gHitMarker |= HITMARKER_NO_PPDEDUCT; @@ -4278,7 +4278,7 @@ bool32 CanAbilityBlockMove(u32 battlerAtk, u32 battlerDef, u32 move, u32 ability case ABILITY_DAZZLING: case ABILITY_QUEENLY_MAJESTY: case ABILITY_ARMOR_TAIL: - if (atkPriority > 0 && !IsAlly(battlerAtk, BATTLE_PARTNER(battlerDef))) + if (atkPriority > 0 && !IsBattlerAlly(battlerAtk, BATTLE_PARTNER(battlerDef))) { if (gBattleMons[battlerAtk].status2 & STATUS2_MULTIPLETURNS) gHitMarker |= HITMARKER_NO_PPDEDUCT; @@ -6309,7 +6309,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 SetTypeBeforeUsingMove(gCalledMove, battler); // Make sure that the target isn't an ally - if it is, target the original user - if (GetBattlerSide(gBattlerTarget) == GetBattlerSide(gBattlerAttacker)) + if (IsBattlerAlly(gBattlerTarget, gBattlerAttacker)) gBattlerTarget = (gBattleScripting.savedBattler & 0xF0) >> 4; gHitMarker &= ~HITMARKER_ATTACKSTRING_PRINTED; BattleScriptExecute(BattleScript_DancerActivates); @@ -11677,7 +11677,7 @@ bool32 BlocksPrankster(u16 move, u32 battlerPrankster, u32 battlerDef, bool32 ch return FALSE; if (!gProtectStructs[battlerPrankster].pranksterElevated) return FALSE; - if (GetBattlerSide(battlerPrankster) == GetBattlerSide(battlerDef)) + if (IsBattlerAlly(battlerPrankster, battlerDef)) return FALSE; if (checkTarget && (GetBattlerMoveTargetType(battlerPrankster, move) & (MOVE_TARGET_OPPONENTS_FIELD | MOVE_TARGET_DEPENDS))) return FALSE; @@ -11744,12 +11744,13 @@ u32 GetBattlerMoveTargetType(u32 battler, u32 move) bool32 CanTargetBattler(u32 battlerAtk, u32 battlerDef, u16 move) { if (GetMoveEffect(move) == EFFECT_HIT_ENEMY_HEAL_ALLY - && GetBattlerSide(battlerAtk) == GetBattlerSide(battlerDef) - && gStatuses3[battlerAtk] & STATUS3_HEAL_BLOCK) + && IsBattlerAlly(battlerAtk, battlerDef) + && gStatuses3[battlerAtk] & STATUS3_HEAL_BLOCK) return FALSE; // Pokémon affected by Heal Block cannot target allies with Pollen Puff - if ((GetActiveGimmick(battlerAtk) == GIMMICK_DYNAMAX || IsGimmickSelected(battlerAtk, GIMMICK_DYNAMAX)) - && GetBattlerSide(battlerAtk) == GetBattlerSide(battlerDef)) + if (IsBattlerAlly(battlerAtk, battlerDef) && (GetActiveGimmick(battlerAtk) == GIMMICK_DYNAMAX + || IsGimmickSelected(battlerAtk, GIMMICK_DYNAMAX))) return FALSE; + return TRUE; } @@ -11870,11 +11871,6 @@ bool32 MoveEffectIsGuaranteed(u32 battler, u32 battlerAbility, const struct Addi return additionalEffect->chance == 0 || CalcSecondaryEffectChance(battler, battlerAbility, additionalEffect) >= 100; } -bool32 IsAlly(u32 battlerAtk, u32 battlerDef) -{ - return (GetBattlerSide(battlerAtk) == GetBattlerSide(battlerDef)); -} - bool32 IsGen6ExpShareEnabled(void) { if (I_EXP_SHARE_FLAG <= TEMP_FLAGS_END) diff --git a/src/pokemon.c b/src/pokemon.c index 128f09f514..38bbda8c11 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -2068,8 +2068,9 @@ void DeleteFirstMoveAndGiveMoveToBoxMon(struct BoxPokemon *boxMon, u16 move) u8 CountAliveMonsInBattle(u8 caseId, u32 battler) { - s32 i; - u8 retVal = 0; + u32 i; + u32 battlerSide; + u32 retVal = 0; switch (caseId) { @@ -2088,9 +2089,10 @@ u8 CountAliveMonsInBattle(u8 caseId, u32 battler) } break; case BATTLE_ALIVE_SIDE: + battlerSide = GetBattlerSide(battler); for (i = 0; i < MAX_BATTLERS_COUNT; i++) { - if (GetBattlerSide(i) == GetBattlerSide(battler) && !(gAbsentBattlerFlags & (1u << i))) + if (GetBattlerSide(i) == battlerSide && !(gAbsentBattlerFlags & (1u << i))) retVal++; } break; @@ -7033,7 +7035,7 @@ u32 GetRegionalFormByRegion(u32 species, u32 region) { if (firstFoundSpecies == 0) firstFoundSpecies = formTable[formId]; - + if (IsSpeciesRegionalFormFromRegion(formTable[formId], region)) return formTable[formId]; } From b1c597495b17181bc33d6bcca3fd414a57768c0a Mon Sep 17 00:00:00 2001 From: PhallenTree <168426989+PhallenTree@users.noreply.github.com> Date: Fri, 14 Feb 2025 12:47:02 +0000 Subject: [PATCH 30/73] Fixes Called moves ignoring redirection (#6267) --- data/battle_scripts_1.s | 14 -- include/battle_util.h | 1 + src/battle_script_commands.c | 29 ++-- src/battle_util.c | 226 ++++++++++++++------------- test/battle/move_effect/follow_me.c | 71 +++++++++ test/battle/move_effect/instruct.c | 69 +++++++- test/battle/move_effect/sleep_talk.c | 57 ++++++- test/battle/move_effect/snore.c | 59 +++++++ 8 files changed, 391 insertions(+), 135 deletions(-) create mode 100644 test/battle/move_effect/follow_me.c create mode 100644 test/battle/move_effect/snore.c diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 2b0ca93a9d..c69129125a 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -1744,8 +1744,6 @@ BattleScript_EffectCopycat:: trycopycat BattleScript_CopycatFail attackanimation waitanimation - setbyte sB_ANIM_TURN, 0 - setbyte sB_ANIM_TARGETS_HIT, 0 jumptocalledmove TRUE BattleScript_CopycatFail: ppreduce @@ -1763,8 +1761,6 @@ BattleScript_EffectInstruct:: copybyte gBattlerTarget, gEffectBattler printstring STRINGID_USEDINSTRUCTEDMOVE waitmessage B_WAIT_TIME_LONG - setbyte sB_ANIM_TURN, 0 - setbyte sB_ANIM_TARGETS_HIT, 0 jumptocalledmove TRUE BattleScript_EffectAutotomize:: @@ -2188,8 +2184,6 @@ BattleScript_EffectMeFirst:: trymefirst BattleScript_FailedFromPpReduce attackanimation waitanimation - setbyte sB_ANIM_TURN, 0 - setbyte sB_ANIM_TARGETS_HIT, 0 jumptocalledmove TRUE BattleScript_EffectAttackSpAttackUp:: @@ -3842,8 +3836,6 @@ BattleScript_EffectMetronome:: pause B_WAIT_TIME_SHORT attackanimation waitanimation - setbyte sB_ANIM_TURN, 0 - setbyte sB_ANIM_TARGETS_HIT, 0 metronome BattleScript_EffectLeechSeed:: @@ -4038,8 +4030,6 @@ BattleScript_SleepTalkIsAsleep:: BattleScript_SleepTalkUsingMove:: attackanimation waitanimation - setbyte sB_ANIM_TURN, 0 - setbyte sB_ANIM_TARGETS_HIT, 0 jumptocalledmove TRUE BattleScript_EffectDestinyBond:: @@ -5055,8 +5045,6 @@ BattleScript_EffectAssist:: assistattackselect BattleScript_FailedFromPpReduce attackanimation waitanimation - setbyte sB_ANIM_TURN, 0 - setbyte sB_ANIM_TARGETS_HIT, 0 jumptocalledmove TRUE BattleScript_EffectIngrain:: @@ -8709,8 +8697,6 @@ BattleScript_BattleBondActivatesOnMoveEndAttacker:: BattleScript_DancerActivates:: call BattleScript_AbilityPopUp waitmessage B_WAIT_TIME_SHORT - setbyte sB_ANIM_TURN, 0 - setbyte sB_ANIM_TARGETS_HIT, 0 orword gHitMarker, HITMARKER_ALLOW_NO_PP jumptocalledmove TRUE diff --git a/include/battle_util.h b/include/battle_util.h index 463d6609db..636428854b 100644 --- a/include/battle_util.h +++ b/include/battle_util.h @@ -166,6 +166,7 @@ STATIC_ASSERT(sizeof(struct DamageCalculationData) <= 4, StructExceedsFourBytes) void HandleAction_ThrowBall(void); bool32 IsAffectedByFollowMe(u32 battlerAtk, u32 defSide, u32 move); +bool32 HandleMoveTargetRedirection(void); void HandleAction_UseMove(void); void HandleAction_Switch(void); void HandleAction_UseItem(void); diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index a34a6dc4b0..c3dc016314 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -336,6 +336,7 @@ static bool8 CanBurnHitThaw(u16 move); static u32 GetNextTarget(u32 moveTarget, bool32 excludeCurrent); static void TryUpdateEvolutionTracker(u32 evolutionMethod, u32 upAmount, u16 usedMove); static void AccuracyCheck(bool32 recalcDragonDarts, const u8 *nextInstr, const u8 *failInstr, u16 move); +static void ResetValuesForCalledMove(void); static void Cmd_attackcanceler(void); static void Cmd_accuracycheck(void); @@ -8133,6 +8134,18 @@ static void Cmd_hidepartystatussummary(void) gBattlescriptCurrInstr = cmd->nextInstr; } +static void ResetValuesForCalledMove(void) +{ + if (gBattlerByTurnOrder[gCurrentTurnActionNumber] != gBattlerAttacker) + gBattleStruct->atkCancellerTracker = 0; + else + SetAtkCancellerForCalledMove(); + gBattleScripting.animTurn = 0; + gBattleScripting.animTargetsHit = 0; + SetTypeBeforeUsingMove(gCurrentMove, gBattlerAttacker); + HandleMoveTargetRedirection(); +} + static void Cmd_jumptocalledmove(void) { CMD_ARGS(bool8 notChosenMove); @@ -8142,6 +8155,8 @@ static void Cmd_jumptocalledmove(void) else gChosenMove = gCurrentMove = gCalledMove; + ResetValuesForCalledMove(); + gBattlescriptCurrInstr = GET_MOVE_BATTLESCRIPT(gCurrentMove); } @@ -10193,10 +10208,8 @@ static void Cmd_various(void) gBattlescriptCurrInstr = cmd->failInstr; else { - SetTypeBeforeUsingMove(gCalledMove, gBattlerTarget); gEffectBattler = gBattleStruct->lastMoveTarget[gBattlerTarget]; gHitMarker &= ~HITMARKER_ATTACKSTRING_PRINTED; - gBattleStruct->atkCancellerTracker = 0; PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff1, battler, gBattlerPartyIndexes[battler]); gBattlescriptCurrInstr = cmd->nextInstr; } @@ -11212,8 +11225,8 @@ static void SetMoveForMirrorMove(u32 move) gCurrentMove = move; } - SetAtkCancellerForCalledMove(); gBattlerTarget = GetMoveTarget(gCurrentMove, NO_TARGET_OVERRIDE); + ResetValuesForCalledMove(); gBattlescriptCurrInstr = GET_MOVE_BATTLESCRIPT(gCurrentMove); } @@ -12765,10 +12778,10 @@ static void Cmd_metronome(void) #endif gCurrentMove = RandomUniformExcept(RNG_METRONOME, 1, moveCount - 1, InvalidMetronomeMove); - SetAtkCancellerForCalledMove(); PrepareStringBattle(STRINGID_WAGGLINGAFINGER, gBattlerAttacker); gBattlescriptCurrInstr = GET_MOVE_BATTLESCRIPT(gCurrentMove); gBattlerTarget = GetMoveTarget(gCurrentMove, NO_TARGET_OVERRIDE); + ResetValuesForCalledMove(); } static void Cmd_dmgtolevel(void) @@ -17342,14 +17355,10 @@ void BS_JumpIfBlockedBySoundproof(void) void BS_SetMagicCoatTarget(void) { NATIVE_ARGS(); - u32 side; gBattleStruct->attackerBeforeBounce = gBattleScripting.battler = gBattlerAttacker; gBattlerAttacker = gBattlerTarget; - side = BATTLE_OPPOSITE(GetBattlerSide(gBattlerAttacker)); - if (IsAffectedByFollowMe(gBattlerAttacker, side, gCurrentMove)) - gBattlerTarget = gSideTimers[side].followmeTarget; - else - gBattlerTarget = gBattleStruct->attackerBeforeBounce; + gBattlerTarget = gBattleStruct->attackerBeforeBounce; + HandleMoveTargetRedirection(); gBattlescriptCurrInstr = cmd->nextInstr; } diff --git a/src/battle_util.c b/src/battle_util.c index 20e4ba635e..14469b072a 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -124,11 +124,94 @@ bool32 IsAffectedByFollowMe(u32 battlerAtk, u32 defSide, u32 move) return TRUE; } +bool32 HandleMoveTargetRedirection(void) +{ + u32 redirectorOrderNum = MAX_BATTLERS_COUNT; + u16 moveTarget = GetBattlerMoveTargetType(gBattlerAttacker, gCurrentMove); + u32 moveType = GetMoveType(gCurrentMove); + u32 side = BATTLE_OPPOSITE(GetBattlerSide(gBattlerAttacker)); + u32 ability = GetBattlerAbility(gBattleStruct->moveTarget[gBattlerAttacker]); + + if (IsAffectedByFollowMe(gBattlerAttacker, side, gCurrentMove) + && moveTarget == MOVE_TARGET_SELECTED + && GetBattlerSide(gBattlerAttacker) != GetBattlerSide(gSideTimers[side].followmeTarget)) + { + gBattleStruct->moveTarget[gBattlerAttacker] = gBattlerTarget = gSideTimers[side].followmeTarget; // follow me moxie fix + return FALSE; + } + else if (IsDoubleBattle() + && gSideTimers[side].followmeTimer == 0 + && (!IS_MOVE_STATUS(gCurrentMove) || (moveTarget != MOVE_TARGET_USER && moveTarget != MOVE_TARGET_ALL_BATTLERS)) + && ((ability != ABILITY_LIGHTNING_ROD && moveType == TYPE_ELECTRIC) + || (ability != ABILITY_STORM_DRAIN && moveType == TYPE_WATER))) + { + // Find first battler that redirects the move (in turn order) + u32 battler; + for (battler = 0; battler < gBattlersCount; battler++) + { + ability = GetBattlerAbility(battler); + if ((B_REDIRECT_ABILITY_ALLIES >= GEN_4 || !IsAlly(gBattlerAttacker, battler)) + && battler != gBattlerAttacker + && gBattleStruct->moveTarget[gBattlerAttacker] != battler + && ((ability == ABILITY_LIGHTNING_ROD && moveType == TYPE_ELECTRIC) + || (ability == ABILITY_STORM_DRAIN && moveType == TYPE_WATER)) + && GetBattlerTurnOrderNum(battler) < redirectorOrderNum + && gMovesInfo[gCurrentMove].effect != EFFECT_SNIPE_SHOT + && gMovesInfo[gCurrentMove].effect != EFFECT_PLEDGE + && GetBattlerAbility(gBattlerAttacker) != ABILITY_PROPELLER_TAIL + && GetBattlerAbility(gBattlerAttacker) != ABILITY_STALWART) + { + redirectorOrderNum = GetBattlerTurnOrderNum(battler); + } + } + if (redirectorOrderNum == MAX_BATTLERS_COUNT) + { + if (moveTarget & MOVE_TARGET_RANDOM) + { + gBattlerTarget = SetRandomTarget(gBattlerAttacker); + } + else if (moveTarget & MOVE_TARGET_FOES_AND_ALLY) + { + for (gBattlerTarget = 0; gBattlerTarget < gBattlersCount; gBattlerTarget++) + { + if (gBattlerTarget == gBattlerAttacker) + continue; + if (IsBattlerAlive(gBattlerTarget)) + break; + } + } + else + { + gBattlerTarget = *(gBattleStruct->moveTarget + gBattlerAttacker); + } + + if (!IsBattlerAlive(gBattlerTarget) && GetBattlerSide(gBattlerAttacker) != GetBattlerSide(gBattlerTarget)) + { + gBattlerTarget = GetBattlerAtPosition(BATTLE_PARTNER(GetBattlerPosition(gBattlerTarget))); + } + } + else + { + u16 battlerAbility; + battler = gBattlerByTurnOrder[redirectorOrderNum]; + battlerAbility = GetBattlerAbility(battler); + + RecordAbilityBattle(battler, gBattleMons[battler].ability); + if (battlerAbility == ABILITY_LIGHTNING_ROD && gCurrentMove != MOVE_TEATIME) + gSpecialStatuses[battler].lightningRodRedirected = TRUE; + else if (battlerAbility == ABILITY_STORM_DRAIN) + gSpecialStatuses[battler].stormDrainRedirected = TRUE; + gBattlerTarget = battler; + } + return TRUE; + } + return FALSE; +} + // Functions void HandleAction_UseMove(void) { - u32 battler, i, side, moveType, ability, var = MAX_BATTLERS_COUNT; - u16 moveTarget; + u32 i; gBattlerAttacker = gBattlerByTurnOrder[gCurrentTurnActionNumber]; if (gBattleStruct->absentBattlerFlags & (1u << gBattlerAttacker) @@ -199,7 +282,6 @@ void HandleAction_UseMove(void) // Set dynamic move type. SetTypeBeforeUsingMove(gChosenMove, gBattlerAttacker); - moveType = GetMoveType(gCurrentMove); // check Z-Move used if (GetActiveGimmick(gBattlerAttacker) == GIMMICK_Z_MOVE && !IS_MOVE_STATUS(gCurrentMove) && !IsZMove(gCurrentMove)) @@ -214,115 +296,44 @@ void HandleAction_UseMove(void) gCurrentMove = gChosenMove = GetMaxMove(gBattlerAttacker, gCurrentMove); } - moveTarget = GetBattlerMoveTargetType(gBattlerAttacker, gCurrentMove); - - // choose target - side = BATTLE_OPPOSITE(GetBattlerSide(gBattlerAttacker)); - ability = GetBattlerAbility(gBattleStruct->moveTarget[gBattlerAttacker]); - if (IsAffectedByFollowMe(gBattlerAttacker, side, gCurrentMove) - && moveTarget == MOVE_TARGET_SELECTED - && GetBattlerSide(gBattlerAttacker) != GetBattlerSide(gSideTimers[side].followmeTarget)) + if (!HandleMoveTargetRedirection()) { - gBattleStruct->moveTarget[gBattlerAttacker] = gBattlerTarget = gSideTimers[side].followmeTarget; // follow me moxie fix - } - else if (IsDoubleBattle() - && gSideTimers[side].followmeTimer == 0 - && (!IS_MOVE_STATUS(gCurrentMove) || (moveTarget != MOVE_TARGET_USER && moveTarget != MOVE_TARGET_ALL_BATTLERS)) - && ((ability != ABILITY_LIGHTNING_ROD && moveType == TYPE_ELECTRIC) - || (ability != ABILITY_STORM_DRAIN && moveType == TYPE_WATER))) - { - // Find first battler that redirects the move (in turn order) - for (battler = 0; battler < gBattlersCount; battler++) + u32 moveTarget = GetBattlerMoveTargetType(gBattlerAttacker, gCurrentMove); + if (IsDoubleBattle() && moveTarget & MOVE_TARGET_RANDOM) { - ability = GetBattlerAbility(battler); - if ((B_REDIRECT_ABILITY_ALLIES >= GEN_4 || !IsAlly(gBattlerAttacker, battler)) - && battler != gBattlerAttacker - && gBattleStruct->moveTarget[gBattlerAttacker] != battler - && ((ability == ABILITY_LIGHTNING_ROD && moveType == TYPE_ELECTRIC) - || (ability == ABILITY_STORM_DRAIN && moveType == TYPE_WATER)) - && GetBattlerTurnOrderNum(battler) < var - && gMovesInfo[gCurrentMove].effect != EFFECT_SNIPE_SHOT - && gMovesInfo[gCurrentMove].effect != EFFECT_PLEDGE - && GetBattlerAbility(gBattlerAttacker) != ABILITY_PROPELLER_TAIL - && GetBattlerAbility(gBattlerAttacker) != ABILITY_STALWART) - { - var = GetBattlerTurnOrderNum(battler); - } - } - if (var == MAX_BATTLERS_COUNT) - { - if (moveTarget & MOVE_TARGET_RANDOM) - { - gBattlerTarget = SetRandomTarget(gBattlerAttacker); - } - else if (moveTarget & MOVE_TARGET_FOES_AND_ALLY) - { - for (gBattlerTarget = 0; gBattlerTarget < gBattlersCount; gBattlerTarget++) - { - if (gBattlerTarget == gBattlerAttacker) - continue; - if (IsBattlerAlive(gBattlerTarget)) - break; - } - } - else - { - gBattlerTarget = *(gBattleStruct->moveTarget + gBattlerAttacker); - } - - if (!IsBattlerAlive(gBattlerTarget) && GetBattlerSide(gBattlerAttacker) != GetBattlerSide(gBattlerTarget)) + gBattlerTarget = SetRandomTarget(gBattlerAttacker); + if (gAbsentBattlerFlags & (1u << gBattlerTarget) + && GetBattlerSide(gBattlerAttacker) != GetBattlerSide(gBattlerTarget)) { gBattlerTarget = GetBattlerAtPosition(BATTLE_PARTNER(GetBattlerPosition(gBattlerTarget))); } } + else if (moveTarget == MOVE_TARGET_ALLY) + { + if (IsBattlerAlive(BATTLE_PARTNER(gBattlerAttacker))) + gBattlerTarget = BATTLE_PARTNER(gBattlerAttacker); + else + gBattlerTarget = gBattlerAttacker; + } + else if (IsDoubleBattle() && moveTarget == MOVE_TARGET_FOES_AND_ALLY) + { + for (gBattlerTarget = 0; gBattlerTarget < gBattlersCount; gBattlerTarget++) + { + if (gBattlerTarget == gBattlerAttacker) + continue; + if (IsBattlerAlive(gBattlerTarget)) + break; + } + } else { - u16 battlerAbility; - battler = gBattlerByTurnOrder[var]; - battlerAbility = GetBattlerAbility(battler); - - RecordAbilityBattle(battler, gBattleMons[battler].ability); - if (battlerAbility == ABILITY_LIGHTNING_ROD && gCurrentMove != MOVE_TEATIME) - gSpecialStatuses[battler].lightningRodRedirected = TRUE; - else if (battlerAbility == ABILITY_STORM_DRAIN) - gSpecialStatuses[battler].stormDrainRedirected = TRUE; - gBattlerTarget = battler; - } - } - else if (IsDoubleBattle() && moveTarget & MOVE_TARGET_RANDOM) - { - gBattlerTarget = SetRandomTarget(gBattlerAttacker); - if (gAbsentBattlerFlags & (1u << gBattlerTarget) - && GetBattlerSide(gBattlerAttacker) != GetBattlerSide(gBattlerTarget)) - { - gBattlerTarget = GetBattlerAtPosition(BATTLE_PARTNER(GetBattlerPosition(gBattlerTarget))); - } - } - else if (moveTarget == MOVE_TARGET_ALLY) - { - if (IsBattlerAlive(BATTLE_PARTNER(gBattlerAttacker))) - gBattlerTarget = BATTLE_PARTNER(gBattlerAttacker); - else - gBattlerTarget = gBattlerAttacker; - } - else if (IsDoubleBattle() && moveTarget == MOVE_TARGET_FOES_AND_ALLY) - { - for (gBattlerTarget = 0; gBattlerTarget < gBattlersCount; gBattlerTarget++) - { - if (gBattlerTarget == gBattlerAttacker) - continue; - if (IsBattlerAlive(gBattlerTarget)) - break; - } - } - else - { - gBattlerTarget = *(gBattleStruct->moveTarget + gBattlerAttacker); - if (!IsBattlerAlive(gBattlerTarget) - && moveTarget != MOVE_TARGET_OPPONENTS_FIELD - && (GetBattlerSide(gBattlerAttacker) != GetBattlerSide(gBattlerTarget))) - { - gBattlerTarget = GetBattlerAtPosition(BATTLE_PARTNER(GetBattlerPosition(gBattlerTarget))); + gBattlerTarget = *(gBattleStruct->moveTarget + gBattlerAttacker); + if (!IsBattlerAlive(gBattlerTarget) + && moveTarget != MOVE_TARGET_OPPONENTS_FIELD + && (GetBattlerSide(gBattlerAttacker) != GetBattlerSide(gBattlerTarget))) + { + gBattlerTarget = GetBattlerAtPosition(BATTLE_PARTNER(GetBattlerPosition(gBattlerTarget))); + } } } @@ -3275,7 +3286,8 @@ u8 AtkCanceller_UnableToUseMove(u32 moveType) gBattleMons[gBattlerAttacker].status1 -= toSub; if (gBattleMons[gBattlerAttacker].status1 & STATUS1_SLEEP) { - if (gChosenMove != MOVE_SNORE && gChosenMove != MOVE_SLEEP_TALK) + u32 moveEffect = gMovesInfo[gChosenMove].effect; + if (moveEffect != EFFECT_SNORE && moveEffect != EFFECT_SLEEP_TALK) { gBattlescriptCurrInstr = BattleScript_MoveUsedIsAsleep; gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; @@ -3591,7 +3603,7 @@ u8 AtkCanceller_UnableToUseMove(u32 moveType) gBattleStruct->atkCancellerTracker++; break; case CANCELLER_STANCE_CHANGE_2: - if (B_STANCE_CHANGE_FAIL >= GEN_7 && TryFormChangeBeforeMove()) + if (B_STANCE_CHANGE_FAIL >= GEN_7 && !gBattleStruct->isAtkCancelerForCalledMove && TryFormChangeBeforeMove()) effect = 1; gBattleStruct->atkCancellerTracker++; break; @@ -6222,7 +6234,6 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 // Set bit and save Dancer mon's original target gSpecialStatuses[battler].dancerUsedMove = TRUE; gSpecialStatuses[battler].dancerOriginalTarget = *(gBattleStruct->moveTarget + battler) | 0x4; - gBattleStruct->atkCancellerTracker = 0; gBattlerAttacker = gBattlerAbility = battler; gCalledMove = gCurrentMove; @@ -6231,7 +6242,6 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 // Edge case for dance moves that hit multiply targets gHitMarker &= ~HITMARKER_NO_ATTACKSTRING; - SetTypeBeforeUsingMove(gCalledMove, battler); // Make sure that the target isn't an ally - if it is, target the original user if (GetBattlerSide(gBattlerTarget) == GetBattlerSide(gBattlerAttacker)) diff --git a/test/battle/move_effect/follow_me.c b/test/battle/move_effect/follow_me.c new file mode 100644 index 0000000000..fe7b96207d --- /dev/null +++ b/test/battle/move_effect/follow_me.c @@ -0,0 +1,71 @@ +#include "global.h" +#include "test/battle.h" + +ASSUMPTIONS +{ + ASSUME(gMovesInfo[MOVE_FOLLOW_ME].effect == EFFECT_FOLLOW_ME); + ASSUME(gMovesInfo[MOVE_SPOTLIGHT].effect == EFFECT_FOLLOW_ME); +} + +DOUBLE_BATTLE_TEST("Follow Me redirects single target moves used by opponents to user") +{ + struct BattlePokemon *moveUser = NULL; + struct BattlePokemon *partner = NULL; + PARAMETRIZE { moveUser = opponentLeft; partner = opponentRight; } + PARAMETRIZE { moveUser = opponentRight; partner = opponentLeft; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WYNAUT); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(playerLeft, MOVE_TACKLE, target: moveUser); + MOVE(playerRight, MOVE_TACKLE, target: partner); + MOVE(moveUser, MOVE_FOLLOW_ME); + MOVE(partner, MOVE_TACKLE, target: playerLeft); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_FOLLOW_ME, moveUser); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, playerLeft); + HP_BAR(moveUser); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, playerRight); + HP_BAR(moveUser); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, partner); + HP_BAR(playerLeft); + } +} + +DOUBLE_BATTLE_TEST("Spotlight redirects single target moves used by the opposing side to Spotlight's target") +{ + struct BattlePokemon *moveTarget = NULL; + PARAMETRIZE { moveTarget = playerRight; } + PARAMETRIZE { moveTarget = opponentLeft; } + PARAMETRIZE { moveTarget = opponentRight; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WYNAUT); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(playerLeft, MOVE_SPOTLIGHT, target: moveTarget); + MOVE(playerRight, MOVE_TACKLE, target: opponentRight); + MOVE(opponentLeft, MOVE_TACKLE, target: playerLeft); + MOVE(opponentRight, MOVE_TACKLE, target: playerLeft); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SPOTLIGHT, playerLeft); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, playerRight); + if (moveTarget != playerRight) + HP_BAR(moveTarget); + else + HP_BAR(opponentRight); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponentLeft); + if (moveTarget == playerRight) + HP_BAR(moveTarget); + else + HP_BAR(playerLeft); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponentRight); + if (moveTarget == playerRight) + HP_BAR(moveTarget); + else + HP_BAR(playerLeft); + } +} diff --git a/test/battle/move_effect/instruct.c b/test/battle/move_effect/instruct.c index b31076f3fe..313fb05cef 100644 --- a/test/battle/move_effect/instruct.c +++ b/test/battle/move_effect/instruct.c @@ -217,8 +217,11 @@ DOUBLE_BATTLE_TEST("Instruct-called moves keep their priority") } } -DOUBLE_BATTLE_TEST("Instructed move will be absorbed by Lightning Rod if it turns into an Electric Type move") +DOUBLE_BATTLE_TEST("Instructed move will be redirected and absorbed by Lightning Rod if it turns into an Electric Type move") { + struct BattlePokemon *moveTarget = NULL; + PARAMETRIZE { moveTarget = opponentLeft; } + PARAMETRIZE { moveTarget = opponentRight; } GIVEN { PLAYER(SPECIES_WOBBUFFET); PLAYER(SPECIES_WYNAUT); @@ -226,7 +229,7 @@ DOUBLE_BATTLE_TEST("Instructed move will be absorbed by Lightning Rod if it turn OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { - MOVE(playerLeft, MOVE_TACKLE, target: opponentLeft); + MOVE(playerLeft, MOVE_TACKLE, target: moveTarget); MOVE(opponentLeft, MOVE_PLASMA_FISTS, target: playerLeft); MOVE(playerRight, MOVE_INSTRUCT, target: playerLeft); MOVE(opponentRight, MOVE_CELEBRATE); @@ -239,3 +242,65 @@ DOUBLE_BATTLE_TEST("Instructed move will be absorbed by Lightning Rod if it turn NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, playerLeft); } } + +DOUBLE_BATTLE_TEST("Instructed move will be redirected by Follow Me after instructed target loses Stalwart") +{ + struct BattlePokemon *moveTarget = NULL; + PARAMETRIZE { moveTarget = opponentLeft; } + PARAMETRIZE { moveTarget = opponentRight; } + GIVEN { + ASSUME(gMovesInfo[MOVE_FOLLOW_ME].effect == EFFECT_FOLLOW_ME); + ASSUME(gMovesInfo[MOVE_SKILL_SWAP].effect == EFFECT_SKILL_SWAP); + PLAYER(SPECIES_DURALUDON) { Ability(ABILITY_STALWART); } + PLAYER(SPECIES_DURALUDON) { Ability(ABILITY_STALWART); } + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { + MOVE(playerLeft, MOVE_TACKLE, target: moveTarget); + MOVE(opponentLeft, MOVE_FOLLOW_ME); + MOVE(opponentRight, MOVE_SKILL_SWAP, target: playerLeft); + MOVE(playerRight, MOVE_INSTRUCT, target: playerLeft); + } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_FOLLOW_ME, opponentLeft); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, playerLeft); + HP_BAR(moveTarget); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SKILL_SWAP, opponentRight); + ANIMATION(ANIM_TYPE_MOVE, MOVE_INSTRUCT, playerRight); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, playerLeft); + HP_BAR(opponentLeft); + } +} + +DOUBLE_BATTLE_TEST("Instructed move will be redirected by Rage Powder after instructed target loses Grass typing") +{ + struct BattlePokemon *moveTarget = NULL; + PARAMETRIZE { moveTarget = opponentLeft; } + PARAMETRIZE { moveTarget = opponentRight; } + GIVEN { + ASSUME(gMovesInfo[MOVE_RAGE_POWDER].effect == EFFECT_FOLLOW_ME); + ASSUME(gMovesInfo[MOVE_RAGE_POWDER].powderMove == TRUE); + ASSUME(gMovesInfo[MOVE_SOAK].effect == EFFECT_SOAK); + PLAYER(SPECIES_TREECKO); + PLAYER(SPECIES_SCEPTILE); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { + MOVE(playerLeft, MOVE_TACKLE, target: moveTarget); + MOVE(opponentLeft, MOVE_RAGE_POWDER); + MOVE(opponentRight, MOVE_SOAK, target: playerLeft); + MOVE(playerRight, MOVE_INSTRUCT, target: playerLeft); + } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_RAGE_POWDER, opponentLeft); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, playerLeft); + HP_BAR(moveTarget); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SOAK, opponentRight); + MESSAGE("Treecko transformed into the Water type!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_INSTRUCT, playerRight); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, playerLeft); + HP_BAR(opponentLeft); + } +} diff --git a/test/battle/move_effect/sleep_talk.c b/test/battle/move_effect/sleep_talk.c index 8ecd600f36..aaff5dc123 100644 --- a/test/battle/move_effect/sleep_talk.c +++ b/test/battle/move_effect/sleep_talk.c @@ -32,7 +32,6 @@ SINGLE_BATTLE_TEST("Sleep Talk fails if not asleep") } } - SINGLE_BATTLE_TEST("Sleep Talk works if user has Comatose") { @@ -91,3 +90,59 @@ SINGLE_BATTLE_TEST("Sleep Talk can use moves while choiced into Sleep Talk") ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE); } } + +SINGLE_BATTLE_TEST("Sleep Talk fails if user is taunted") +{ + GIVEN { + ASSUME(gMovesInfo[MOVE_TAUNT].effect == EFFECT_TAUNT); + ASSUME(gMovesInfo[MOVE_SLEEP_TALK].category == DAMAGE_CATEGORY_STATUS); + PLAYER(SPECIES_WOBBUFFET) { Status1(STATUS1_SLEEP); Moves(MOVE_SLEEP_TALK, MOVE_TACKLE, MOVE_FLY, MOVE_DIG); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_TAUNT); MOVE(player, MOVE_SLEEP_TALK); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_TAUNT, opponent); + NONE_OF { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SLEEP_TALK, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + } + } +} + +DOUBLE_BATTLE_TEST("Sleep Talk calls move and that move may be redirected by Lightning Rod") +{ + PASSES_RANDOMLY(1, 2, RNG_RANDOM_TARGET); + GIVEN { + ASSUME(gMovesInfo[MOVE_SPARK].type == TYPE_ELECTRIC); + PLAYER(SPECIES_WOBBUFFET) { Status1(STATUS1_SLEEP); Moves(MOVE_SLEEP_TALK, MOVE_SPARK, MOVE_FLY, MOVE_DIG); } + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_RAICHU) { Ability(ABILITY_LIGHTNING_ROD); } + } WHEN { + TURN { MOVE(playerLeft, MOVE_SLEEP_TALK); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SLEEP_TALK, playerLeft); + NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_SPARK, playerLeft); + MESSAGE("The opposing Raichu's Lightning Rod took the attack!"); + ABILITY_POPUP(opponentRight, ABILITY_LIGHTNING_ROD); + } +} + +DOUBLE_BATTLE_TEST("Sleep Talk calls move and that move may be redirected by Storm Drain") +{ + PASSES_RANDOMLY(1, 2, RNG_RANDOM_TARGET); + GIVEN { + ASSUME(gMovesInfo[MOVE_WATER_GUN].type == TYPE_WATER); + PLAYER(SPECIES_WOBBUFFET) { Status1(STATUS1_SLEEP); Moves(MOVE_SLEEP_TALK, MOVE_WATER_GUN, MOVE_FLY, MOVE_DIG); } + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_GASTRODON) { Ability(ABILITY_STORM_DRAIN); } + } WHEN { + TURN { MOVE(playerLeft, MOVE_SLEEP_TALK); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SLEEP_TALK, playerLeft); + NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_WATER_GUN, playerLeft); + MESSAGE("The opposing Gastrodon's Storm Drain took the attack!"); + ABILITY_POPUP(opponentRight, ABILITY_STORM_DRAIN); + } +} diff --git a/test/battle/move_effect/snore.c b/test/battle/move_effect/snore.c new file mode 100644 index 0000000000..d83e35b16c --- /dev/null +++ b/test/battle/move_effect/snore.c @@ -0,0 +1,59 @@ +#include "global.h" +#include "test/battle.h" + +ASSUMPTIONS +{ + ASSUME(gMovesInfo[MOVE_SNORE].effect == EFFECT_SNORE); +} + +SINGLE_BATTLE_TEST("Snore fails if not asleep") +{ + u32 status; + PARAMETRIZE { status = STATUS1_SLEEP; } + PARAMETRIZE { status = STATUS1_NONE; } + + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Status1(status); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_SNORE); } + } SCENE { + if (status == STATUS1_SLEEP) { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SNORE, player); + NOT MESSAGE("But it failed!"); + } + else { + NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_SNORE, player); + MESSAGE("But it failed!"); + } + } +} + +SINGLE_BATTLE_TEST("Snore works if user has Comatose") +{ + + GIVEN { + PLAYER(SPECIES_KOMALA); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_SNORE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SNORE, player); + NOT MESSAGE("But it failed!"); + } +} + +SINGLE_BATTLE_TEST("Snore fails if user is throat chopped") +{ + GIVEN { + ASSUME(MoveHasAdditionalEffect(MOVE_THROAT_CHOP, MOVE_EFFECT_THROAT_CHOP)); + ASSUME(gMovesInfo[MOVE_SNORE].soundMove == TRUE); + PLAYER(SPECIES_WOBBUFFET) { Status1(STATUS1_SLEEP); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_THROAT_CHOP); MOVE(player, MOVE_SNORE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_THROAT_CHOP, opponent); + NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_SNORE, player); + } +} From 7cd614a0cd2019d913f78bd83467ce8bd7d0d268 Mon Sep 17 00:00:00 2001 From: moostoet <70690976+moostoet@users.noreply.github.com> Date: Sat, 15 Feb 2025 22:48:26 +0100 Subject: [PATCH 31/73] Fix AI wrongly thinking it strikes first with priority even if player is using priority themselves (#6274) --- src/battle_ai_util.c | 9 ++++++++- test/battle/ai/ai.c | 14 ++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/battle_ai_util.c b/src/battle_ai_util.c index e440091183..b765616802 100644 --- a/src/battle_ai_util.c +++ b/src/battle_ai_util.c @@ -1094,8 +1094,15 @@ s32 AI_WhoStrikesFirst(u32 battlerAI, u32 battler, u32 moveConsidered) u32 abilityAI = AI_DATA->abilities[battlerAI]; u32 abilityPlayer = AI_DATA->abilities[battler]; - if (GetMovePriority(battlerAI, moveConsidered) > 0) + u32 predictedMove = AI_DATA->lastUsedMove[battler]; // TODO update for move prediction + + s8 aiPriority = GetMovePriority(battlerAI, moveConsidered); + s8 playerPriority = GetMovePriority(battler, predictedMove); + + if (aiPriority > playerPriority) return AI_IS_FASTER; + else if (aiPriority < playerPriority) + return AI_IS_SLOWER; speedBattlerAI = GetBattlerTotalSpeedStatArgs(battlerAI, abilityAI, holdEffectAI); speedBattler = GetBattlerTotalSpeedStatArgs(battler, abilityPlayer, holdEffectPlayer); diff --git a/test/battle/ai/ai.c b/test/battle/ai/ai.c index 0883e3cc59..5f01c761a6 100644 --- a/test/battle/ai/ai.c +++ b/test/battle/ai/ai.c @@ -831,3 +831,17 @@ AI_SINGLE_BATTLE_TEST("AI stays choice locked into moves in spite of the player' TURN { EXPECT_MOVE(opponent, aiMove); } } } + +AI_SINGLE_BATTLE_TEST("AI won't use Sucker Punch if it expects a move of the same priority bracket and the opponent is faster") +{ + GIVEN { + ASSUME(gMovesInfo[MOVE_QUICK_ATTACK].priority == 1); + ASSUME(gMovesInfo[MOVE_SUCKER_PUNCH].priority == 1); + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); + PLAYER(SPECIES_WOBBUFFET) { Speed(300); Moves(MOVE_QUICK_ATTACK); } + OPPONENT(SPECIES_WOBBUFFET) { Speed(100); Moves(MOVE_SUCKER_PUNCH, MOVE_TACKLE); } + } WHEN { + TURN { MOVE(player, MOVE_QUICK_ATTACK); EXPECT_MOVE(opponent, MOVE_SUCKER_PUNCH); } + TURN { MOVE(player, MOVE_QUICK_ATTACK); EXPECT_MOVE(opponent, MOVE_TACKLE); } + } +} From 444437274c5cfa44ab4972b5fc685c946c9bca40 Mon Sep 17 00:00:00 2001 From: Salem <65783283+u8-Salem@users.noreply.github.com> Date: Mon, 17 Feb 2025 10:02:28 +0100 Subject: [PATCH 32/73] remove obsolete check for steven when retrieving partner name (#6283) --- src/pokemon.c | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/src/pokemon.c b/src/pokemon.c index 437ed55e4b..6066a5c149 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -6056,15 +6056,8 @@ const u8 *GetTrainerPartnerName(void) { if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER) { - if (gPartnerTrainerId == TRAINER_PARTNER(PARTNER_STEVEN)) - { - return GetTrainerNameFromId(TRAINER_STEVEN); - } - else - { - GetFrontierTrainerName(gStringVar1, gPartnerTrainerId); - return gStringVar1; - } + GetFrontierTrainerName(gStringVar1, gPartnerTrainerId); + return gStringVar1; } else { From 4d9659987d9ba5720121a2b9c4615f366934a662 Mon Sep 17 00:00:00 2001 From: Alex <93446519+AlexOn1ine@users.noreply.github.com> Date: Mon, 17 Feb 2025 12:34:21 +0100 Subject: [PATCH 33/73] Fixes Protean not restoring types after ai damage calcs (#6280) --- src/battle_ai_util.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/battle_ai_util.c b/src/battle_ai_util.c index b765616802..dadf39c61e 100644 --- a/src/battle_ai_util.c +++ b/src/battle_ai_util.c @@ -542,6 +542,20 @@ static inline s32 SetFixedMoveBasePower(u32 battlerAtk, u32 move) return fixedBasePower; } +static inline void AI_StoreBattlerTypes(u32 battlerAtk, u32 *types) +{ + types[0] = gBattleMons[battlerAtk].types[0]; + types[1] = gBattleMons[battlerAtk].types[1]; + types[2] = gBattleMons[battlerAtk].types[2]; +} + +static inline void AI_RestoreBattlerTypes(u32 battlerAtk, u32 *types) +{ + gBattleMons[battlerAtk].types[0] = types[0]; + gBattleMons[battlerAtk].types[1] = types[1]; + gBattleMons[battlerAtk].types[2] = types[2]; +} + static inline void CalcDynamicMoveDamage(struct DamageCalculationData *damageCalcData, s32 *expectedDamage, s32 *minimumDamage, u32 holdEffectAtk, u32 abilityAtk) { u32 move = damageCalcData->move; @@ -664,6 +678,9 @@ struct SimulatedDamage AI_CalcDamage(u32 move, u32 battlerAtk, u32 battlerDef, u { s32 critChanceIndex, fixedBasePower; + u32 types[3]; + AI_StoreBattlerTypes(battlerAtk, types); + ProteanTryChangeType(battlerAtk, aiData->abilities[battlerAtk], move, moveType); fixedBasePower = SetFixedMoveBasePower(battlerAtk, move); @@ -741,6 +758,8 @@ struct SimulatedDamage AI_CalcDamage(u32 move, u32 battlerAtk, u32 battlerDef, u aiData->holdEffects[battlerAtk], aiData->abilities[battlerAtk]); } + + AI_RestoreBattlerTypes(battlerAtk, types); } else { From d555f5c97f31ce19c3a9b4d771ee9cd3b8d549a6 Mon Sep 17 00:00:00 2001 From: Martin Griffin Date: Mon, 17 Feb 2025 14:56:15 +0000 Subject: [PATCH 34/73] Do not add TRAINER_FLAG_DOUBLE_BATTLE to recorded battles (#6285) --- src/battle_main.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/battle_main.c b/src/battle_main.c index ab95fbf4a8..d88f322a1a 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -512,7 +512,8 @@ static void CB2_InitBattleInternal(void) if (gBattleTypeFlags & BATTLE_TYPE_TRAINER && !(gBattleTypeFlags & (BATTLE_TYPE_FRONTIER | BATTLE_TYPE_EREADER_TRAINER - | BATTLE_TYPE_TRAINER_HILL))) + | BATTLE_TYPE_TRAINER_HILL + | BATTLE_TYPE_RECORDED))) { gBattleTypeFlags |= (IsTrainerDoubleBattle(TRAINER_BATTLE_PARAM.opponentA) ? BATTLE_TYPE_DOUBLE : 0); } From 502b1c5087f22387fb591413d53baae2d3e84090 Mon Sep 17 00:00:00 2001 From: Alex <93446519+AlexOn1ine@users.noreply.github.com> Date: Mon, 17 Feb 2025 22:07:30 +0100 Subject: [PATCH 35/73] Rename SetPhotonGeyser to a more general use and clean up (#6272) --- asm/macros/battle_script.inc | 4 ++-- data/battle_scripts_1.s | 4 ++-- include/battle_scripts.h | 2 +- src/battle_script_commands.c | 20 ++++++++++++++++---- src/data/battle_move_effects.h | 6 +++--- 5 files changed, 24 insertions(+), 12 deletions(-) diff --git a/asm/macros/battle_script.inc b/asm/macros/battle_script.inc index bfd2c2378d..a169b3580b 100644 --- a/asm/macros/battle_script.inc +++ b/asm/macros/battle_script.inc @@ -1641,8 +1641,8 @@ callnative BS_TryTriggerStatusForm .endm - .macro setphotongeysercategory - callnative BS_SetPhotonGeyserCategory + .macro setdynamicmovecategory + callnative BS_SetDynamicMoveCategory .endm .macro tryupperhand failInstr:req diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index fe9b6ea4ff..c8fa0103d6 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -836,8 +836,8 @@ BattleScript_FlingMissed: ppreduce goto BattleScript_MoveMissedPause -BattleScript_EffectPhotonGeyser:: - setphotongeysercategory +BattleScript_EffectDynamicCategory:: + setdynamicmovecategory goto BattleScript_EffectHit BattleScript_EffectAuraWheel:: @ Aura Wheel can only be used by Morpeko diff --git a/include/battle_scripts.h b/include/battle_scripts.h index bd8601514c..ffa18d0343 100644 --- a/include/battle_scripts.h +++ b/include/battle_scripts.h @@ -825,7 +825,7 @@ extern const u8 BattleScript_MoveEffectHaze[]; extern const u8 BattleScript_MoveEffectIonDeluge[]; extern const u8 BattleScript_EffectHyperspaceFury[]; extern const u8 BattleScript_EffectAuraWheel[]; -extern const u8 BattleScript_EffectPhotonGeyser[]; +extern const u8 BattleScript_EffectDynamicCategory[]; extern const u8 BattleScript_EffectNoRetreat[]; extern const u8 BattleScript_EffectTarShot[]; extern const u8 BattleScript_EffectPoltergeist[]; diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 4241b989b9..6824243300 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -17705,13 +17705,25 @@ void BS_AllySwitchFailChance(void) gBattlescriptCurrInstr = cmd->nextInstr; } -void BS_SetPhotonGeyserCategory(void) +void BS_SetDynamicMoveCategory(void) { NATIVE_ARGS(); - u32 effect = GetMoveEffect(gCurrentMove); - if (!((effect == EFFECT_TERA_BLAST && GetActiveGimmick(gBattlerAttacker) != GIMMICK_TERA) - || (effect == EFFECT_TERA_STARSTORM && GetActiveGimmick(gBattlerAttacker) != GIMMICK_TERA && gBattleMons[gBattlerAttacker].species == SPECIES_TERAPAGOS_STELLAR))) + + switch (GetMoveEffect(gCurrentMove)) + { + case EFFECT_TERA_BLAST: + if (GetActiveGimmick(gBattlerAttacker) == GIMMICK_TERA) + gBattleStruct->swapDamageCategory = (GetCategoryBasedOnStats(gBattlerAttacker) != GetMoveCategory(gCurrentMove)); + break; + case EFFECT_TERA_STARSTORM: + if (GetActiveGimmick(gBattlerAttacker) == GIMMICK_TERA && gBattleMons[gBattlerAttacker].species == SPECIES_TERAPAGOS_STELLAR) + gBattleStruct->swapDamageCategory = (GetCategoryBasedOnStats(gBattlerAttacker) != GetMoveCategory(gCurrentMove)); + break; + default: gBattleStruct->swapDamageCategory = (GetCategoryBasedOnStats(gBattlerAttacker) != GetMoveCategory(gCurrentMove)); + break; + } + gBattlescriptCurrInstr = cmd->nextInstr; } diff --git a/src/data/battle_move_effects.h b/src/data/battle_move_effects.h index d657c429df..e2970afcaf 100644 --- a/src/data/battle_move_effects.h +++ b/src/data/battle_move_effects.h @@ -1909,7 +1909,7 @@ const struct BattleMoveEffect gBattleMoveEffects[NUM_BATTLE_MOVE_EFFECTS] = [EFFECT_PHOTON_GEYSER] = { - .battleScript = BattleScript_EffectPhotonGeyser, + .battleScript = BattleScript_EffectDynamicCategory, .battleTvScore = 0, // TODO: Assign points }, @@ -2201,13 +2201,13 @@ const struct BattleMoveEffect gBattleMoveEffects[NUM_BATTLE_MOVE_EFFECTS] = [EFFECT_TERA_BLAST] = { - .battleScript = BattleScript_EffectPhotonGeyser, + .battleScript = BattleScript_EffectDynamicCategory, .battleTvScore = 0, // TODO: Assign points }, [EFFECT_TERA_STARSTORM] = { - .battleScript = BattleScript_EffectPhotonGeyser, + .battleScript = BattleScript_EffectDynamicCategory, .battleTvScore = 0, // TODO: Assign points }, From b2f45fcf1f09f50c11addb10f5dbc5c0efd17113 Mon Sep 17 00:00:00 2001 From: Alex <93446519+AlexOn1ine@users.noreply.github.com> Date: Tue, 18 Feb 2025 20:43:07 +0100 Subject: [PATCH 36/73] Restoretarget in Rototiller script + Tests (#6296) --- data/battle_scripts_1.s | 1 + test/battle/move_effect/rototiller.c | 98 ++++++++++++++++++++++++++++ 2 files changed, 99 insertions(+) create mode 100644 test/battle/move_effect/rototiller.c diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index c69129125a..c5a8bdd6b9 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -1564,6 +1564,7 @@ BattleScript_RototillerMoveTargetEnd: moveendto MOVEEND_NEXT_TARGET addbyte gBattlerTarget, 1 jumpifbytenotequal gBattlerTarget, gBattlersCount, BattleScript_RototillerLoop + restoretarget end BattleScript_RototillerCantRaiseMultipleStats: diff --git a/test/battle/move_effect/rototiller.c b/test/battle/move_effect/rototiller.c new file mode 100644 index 0000000000..32ae7da75f --- /dev/null +++ b/test/battle/move_effect/rototiller.c @@ -0,0 +1,98 @@ +#include "global.h" +#include "test/battle.h" + +ASSUMPTIONS +{ + ASSUME(gMovesInfo[MOVE_ROTOTILLER].effect == EFFECT_ROTOTILLER); +} + +DOUBLE_BATTLE_TEST("Rototiller boosts Attack and Special Attack of all Grass types on the field") +{ + GIVEN { + ASSUME(gSpeciesInfo[SPECIES_TANGELA].types[0] == TYPE_GRASS); + ASSUME(gSpeciesInfo[SPECIES_SNIVY].types[0] == TYPE_GRASS); + PLAYER(SPECIES_TANGELA); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_SNIVY); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(playerRight, MOVE_ROTOTILLER); MOVE(playerLeft, MOVE_CELEBRATE); MOVE(opponentLeft, MOVE_CELEBRATE); MOVE(opponentRight, MOVE_CELEBRATE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_ROTOTILLER, playerRight); + NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerRight); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerLeft); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentLeft); + NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentRight); + } THEN { + EXPECT_EQ(playerLeft->statStages[STAT_ATK], DEFAULT_STAT_STAGE + 1); + EXPECT_EQ(playerLeft->statStages[STAT_SPATK], DEFAULT_STAT_STAGE + 1); + EXPECT_EQ(opponentLeft->statStages[STAT_ATK], DEFAULT_STAT_STAGE + 1); + EXPECT_EQ(opponentLeft->statStages[STAT_SPATK], DEFAULT_STAT_STAGE + 1); + EXPECT_EQ(playerRight->statStages[STAT_ATK], DEFAULT_STAT_STAGE); + EXPECT_EQ(playerRight->statStages[STAT_SPATK], DEFAULT_STAT_STAGE); + EXPECT_EQ(opponentRight->statStages[STAT_ATK], DEFAULT_STAT_STAGE); + EXPECT_EQ(opponentRight->statStages[STAT_SPATK], DEFAULT_STAT_STAGE); + } +} + +SINGLE_BATTLE_TEST("Rototiller fails if there are no valid targets") +{ + GIVEN { + ASSUME(gSpeciesInfo[SPECIES_WOBBUFFET].types[0] != TYPE_GRASS); + ASSUME(gSpeciesInfo[SPECIES_WOBBUFFET].types[1] != TYPE_GRASS); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_ROTOTILLER); } + } SCENE { + NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_ROTOTILLER, player); + MESSAGE("Wobbuffet used Rototiller!"); + MESSAGE("But it failed!"); + } +} + +SINGLE_BATTLE_TEST("Rototiller doesn't affect pokemon that are semi-invulnerable") +{ + GIVEN { + ASSUME(gSpeciesInfo[SPECIES_TANGELA].types[0] == TYPE_GRASS); + ASSUME(gMovesInfo[MOVE_DIG].effect == EFFECT_SEMI_INVULNERABLE); + PLAYER(SPECIES_TANGELA); + OPPONENT(SPECIES_TANGELA); + } WHEN { + TURN { MOVE(opponent, MOVE_DIG); MOVE(player, MOVE_ROTOTILLER); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_DIG, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_ROTOTILLER, player); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + MESSAGE("It won't have any effect on the opposing Tangela!"); + } THEN { + EXPECT_EQ(player->statStages[STAT_ATK], DEFAULT_STAT_STAGE + 1); + EXPECT_EQ(player->statStages[STAT_SPATK], DEFAULT_STAT_STAGE + 1); + EXPECT_EQ(opponent->statStages[STAT_ATK], DEFAULT_STAT_STAGE); + EXPECT_EQ(opponent->statStages[STAT_SPATK], DEFAULT_STAT_STAGE); + } +} + +SINGLE_BATTLE_TEST("Rototiller fails if the only valid target is semi-invulnerable") +{ + GIVEN { + ASSUME(gSpeciesInfo[SPECIES_TANGELA].types[0] == TYPE_GRASS); + ASSUME(gSpeciesInfo[SPECIES_WOBBUFFET].types[0] != TYPE_GRASS); + ASSUME(gSpeciesInfo[SPECIES_WOBBUFFET].types[1] != TYPE_GRASS); + ASSUME(gMovesInfo[MOVE_DIG].effect == EFFECT_SEMI_INVULNERABLE); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_TANGELA); + } WHEN { + TURN { MOVE(opponent, MOVE_DIG); MOVE(player, MOVE_ROTOTILLER); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_DIG, opponent); + MESSAGE("Wobbuffet used Rototiller!"); + NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_ROTOTILLER, player); + MESSAGE("But it failed!"); + } THEN { + EXPECT_EQ(player->statStages[STAT_ATK], DEFAULT_STAT_STAGE); + EXPECT_EQ(player->statStages[STAT_SPATK], DEFAULT_STAT_STAGE); + EXPECT_EQ(opponent->statStages[STAT_ATK], DEFAULT_STAT_STAGE); + EXPECT_EQ(opponent->statStages[STAT_SPATK], DEFAULT_STAT_STAGE); + } +} From 5c3381b2f64cd2b22f1abb9f8f6db8b42665d88a Mon Sep 17 00:00:00 2001 From: cawtds <38510667+cawtds@users.noreply.github.com> Date: Wed, 19 Feb 2025 12:51:11 +0100 Subject: [PATCH 37/73] fix spit up getting skipped (#6295) --- src/debug.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/debug.c b/src/debug.c index 3615ef1997..9064dbb36c 100644 --- a/src/debug.c +++ b/src/debug.c @@ -4009,7 +4009,7 @@ static void DebugAction_Give_Pokemon_ComplexCreateMon(u8 taskId) //https://githu //Moves for (i = 0; i < MAX_MON_MOVES; i++) { - if (moves[i] == 0 || moves[i] == 0xFF || moves[i] >= MOVES_COUNT) + if (moves[i] == MOVE_NONE || moves[i] >= MOVES_COUNT) continue; SetMonMoveSlot(&mon, moves[i], i); From 290ddfb9ad9052984beaea2bd76f2b654e4aabbf Mon Sep 17 00:00:00 2001 From: hedara90 <90hedara@gmail.com> Date: Wed, 19 Feb 2025 18:07:40 +0100 Subject: [PATCH 38/73] Fixed Kecleon Shiny palette (#6298) Co-authored-by: Hedara --- graphics/pokemon/kecleon/overworld_shiny.pal | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/graphics/pokemon/kecleon/overworld_shiny.pal b/graphics/pokemon/kecleon/overworld_shiny.pal index 77cc0112e0..d12afcf8bb 100644 --- a/graphics/pokemon/kecleon/overworld_shiny.pal +++ b/graphics/pokemon/kecleon/overworld_shiny.pal @@ -14,6 +14,6 @@ JASC-PAL 96 168 120 64 136 96 232 232 248 -152 40 64 +39 44 149 0 0 0 0 0 0 From e09ac1d96902a19092c62e3ec156edc6ca1de99c Mon Sep 17 00:00:00 2001 From: hedara90 <90hedara@gmail.com> Date: Wed, 19 Feb 2025 18:07:54 +0100 Subject: [PATCH 39/73] Update how_to_testing_system.md (#6281) Co-authored-by: Bassoonian --- docs/tutorials/how_to_testing_system.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/tutorials/how_to_testing_system.md b/docs/tutorials/how_to_testing_system.md index c573dfbbf7..8a97800f87 100644 --- a/docs/tutorials/how_to_testing_system.md +++ b/docs/tutorials/how_to_testing_system.md @@ -554,6 +554,10 @@ Causes the test to fail if a and b compare incorrectly, e.g. EXPECT_EQ(results[0].damage, Q_4_12(1.5), results[1].damage); ``` +### `FORCE_MOVE_ANIM` +`FORCE_MOVE_ANIM(TRUE)` +Forces the moves in the current test to do their animations in headless mode. Useful for debugging animations. + ## Overworld Command Reference ### `OVERWORLD_SCRIPT` From 5340dc868784dbdc50ad3e3372fe4d4234a336cf Mon Sep 17 00:00:00 2001 From: PhallenTree <168426989+PhallenTree@users.noreply.github.com> Date: Wed, 19 Feb 2025 17:09:06 +0000 Subject: [PATCH 40/73] Fixes non-Ghost type Curse animation (#6299) --- data/battle_scripts_1.s | 4 ++++ src/battle_util.c | 36 +++++---------------------------- test/battle/move_effect/curse.c | 2 ++ 3 files changed, 11 insertions(+), 31 deletions(-) diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index c5a8bdd6b9..0fc03658c1 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -4142,11 +4142,15 @@ BattleScript_CurseTrySpeed:: setbyte sB_ANIM_TURN, 1 attackanimation waitanimation + setbyte sSTAT_ANIM_PLAYED, FALSE + playstatchangeanimation BS_ATTACKER, BIT_SPEED, STAT_CHANGE_NEGATIVE setstatchanger STAT_SPEED, 1, TRUE statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_CHANGE_ALLOW_PTR, BattleScript_CurseTryAttack printfromtable gStatDownStringIds waitmessage B_WAIT_TIME_LONG BattleScript_CurseTryAttack:: + setbyte sSTAT_ANIM_PLAYED, FALSE + playstatchangeanimation BS_ATTACKER, BIT_ATK | BIT_DEF, 0 setstatchanger STAT_ATK, 1, FALSE statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_CHANGE_ALLOW_PTR, BattleScript_CurseTryDefense printfromtable gStatUpStringIds diff --git a/src/battle_util.c b/src/battle_util.c index 14469b072a..09679f656a 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -133,11 +133,11 @@ bool32 HandleMoveTargetRedirection(void) u32 ability = GetBattlerAbility(gBattleStruct->moveTarget[gBattlerAttacker]); if (IsAffectedByFollowMe(gBattlerAttacker, side, gCurrentMove) - && moveTarget == MOVE_TARGET_SELECTED - && GetBattlerSide(gBattlerAttacker) != GetBattlerSide(gSideTimers[side].followmeTarget)) + && moveTarget == MOVE_TARGET_SELECTED + && GetBattlerSide(gBattlerAttacker) != GetBattlerSide(gSideTimers[side].followmeTarget)) { gBattleStruct->moveTarget[gBattlerAttacker] = gBattlerTarget = gSideTimers[side].followmeTarget; // follow me moxie fix - return FALSE; + return TRUE; } else if (IsDoubleBattle() && gSideTimers[side].followmeTimer == 0 @@ -164,33 +164,7 @@ bool32 HandleMoveTargetRedirection(void) redirectorOrderNum = GetBattlerTurnOrderNum(battler); } } - if (redirectorOrderNum == MAX_BATTLERS_COUNT) - { - if (moveTarget & MOVE_TARGET_RANDOM) - { - gBattlerTarget = SetRandomTarget(gBattlerAttacker); - } - else if (moveTarget & MOVE_TARGET_FOES_AND_ALLY) - { - for (gBattlerTarget = 0; gBattlerTarget < gBattlersCount; gBattlerTarget++) - { - if (gBattlerTarget == gBattlerAttacker) - continue; - if (IsBattlerAlive(gBattlerTarget)) - break; - } - } - else - { - gBattlerTarget = *(gBattleStruct->moveTarget + gBattlerAttacker); - } - - if (!IsBattlerAlive(gBattlerTarget) && GetBattlerSide(gBattlerAttacker) != GetBattlerSide(gBattlerTarget)) - { - gBattlerTarget = GetBattlerAtPosition(BATTLE_PARTNER(GetBattlerPosition(gBattlerTarget))); - } - } - else + if (redirectorOrderNum != MAX_BATTLERS_COUNT) { u16 battlerAbility; battler = gBattlerByTurnOrder[redirectorOrderNum]; @@ -202,8 +176,8 @@ bool32 HandleMoveTargetRedirection(void) else if (battlerAbility == ABILITY_STORM_DRAIN) gSpecialStatuses[battler].stormDrainRedirected = TRUE; gBattlerTarget = battler; + return TRUE; } - return TRUE; } return FALSE; } diff --git a/test/battle/move_effect/curse.c b/test/battle/move_effect/curse.c index 0269659b37..9d456ef8db 100644 --- a/test/battle/move_effect/curse.c +++ b/test/battle/move_effect/curse.c @@ -15,7 +15,9 @@ SINGLE_BATTLE_TEST("Curse lowers Speed, raises Attack, and raises Defense when u TURN { MOVE(player, MOVE_CURSE); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_CURSE, player); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); MESSAGE("Wobbuffet's Speed fell!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); MESSAGE("Wobbuffet's Attack rose!"); MESSAGE("Wobbuffet's Defense rose!"); } From ff098bc520a8e89273bf9ad6e1148629a989de6b Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Wed, 19 Feb 2025 15:17:59 -0300 Subject: [PATCH 41/73] Reverted compound literal OW mon pic tables (#6216) --- .../object_event_pic_tables_followers.h | 6632 +++++++++++++++++ src/data/pokemon/species_info.h | 6 +- .../pokemon/species_info/gen_1_families.h | 550 +- .../pokemon/species_info/gen_2_families.h | 268 +- .../pokemon/species_info/gen_3_families.h | 382 +- .../pokemon/species_info/gen_4_families.h | 244 +- .../pokemon/species_info/gen_5_families.h | 374 +- .../pokemon/species_info/gen_6_families.h | 182 +- .../pokemon/species_info/gen_7_families.h | 216 +- .../pokemon/species_info/gen_8_families.h | 194 +- .../pokemon/species_info/gen_9_families.h | 368 +- src/pokemon.c | 2 +- 12 files changed, 8025 insertions(+), 1393 deletions(-) create mode 100644 src/data/object_events/object_event_pic_tables_followers.h diff --git a/src/data/object_events/object_event_pic_tables_followers.h b/src/data/object_events/object_event_pic_tables_followers.h new file mode 100644 index 0000000000..d77010c0c0 --- /dev/null +++ b/src/data/object_events/object_event_pic_tables_followers.h @@ -0,0 +1,6632 @@ +static const struct SpriteFrameImage sPicTable_Substitute[] = { + overworld_ascending_frames(gObjectEventPic_Substitute, 4, 4), +}; + +#if OW_POKEMON_OBJECT_EVENTS +#if P_FAMILY_BULBASAUR +static const struct SpriteFrameImage sPicTable_Bulbasaur[] = { + overworld_ascending_frames(gObjectEventPic_Bulbasaur, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Ivysaur[] = { + overworld_ascending_frames(gObjectEventPic_Ivysaur, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Venusaur[] = { + overworld_ascending_frames(gObjectEventPic_Venusaur, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_VenusaurF[] = { + overworld_ascending_frames(gObjectEventPic_VenusaurF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +#if P_MEGA_EVOLUTIONS +static const struct SpriteFrameImage sPicTable_VenusaurMega[] = { + overworld_ascending_frames(gObjectEventPic_VenusaurMega, 4, 4), +}; +#endif //P_MEGA_EVOLUTIONS +#if P_GIGANTAMAX_FORMS +/*static const struct SpriteFrameImage sPicTable_VenusaurGmax[] = { + overworld_ascending_frames(gObjectEventPic_VenusaurGmax, 4, 4), +};*/ +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_BULBASAUR + +#if P_FAMILY_CHARMANDER +static const struct SpriteFrameImage sPicTable_Charmander[] = { + overworld_ascending_frames(gObjectEventPic_Charmander, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Charmeleon[] = { + overworld_ascending_frames(gObjectEventPic_Charmeleon, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Charizard[] = { + overworld_ascending_frames(gObjectEventPic_Charizard, 4, 4), +}; +#if P_MEGA_EVOLUTIONS +static const struct SpriteFrameImage sPicTable_CharizardMegaX[] = { + overworld_ascending_frames(gObjectEventPic_CharizardMegaX, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_CharizardMegaY[] = { + overworld_ascending_frames(gObjectEventPic_CharizardMegaY, 4, 4), +}; +#endif //P_MEGA_EVOLUTIONS +#if P_GIGANTAMAX_FORMS +/*static const struct SpriteFrameImage sPicTable_CharizardGmax[] = { + overworld_ascending_frames(gObjectEventPic_CharizardGmax, 4, 4), +};*/ +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_CHARMANDER + +#if P_FAMILY_SQUIRTLE +static const struct SpriteFrameImage sPicTable_Squirtle[] = { + overworld_ascending_frames(gObjectEventPic_Squirtle, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Wartortle[] = { + overworld_ascending_frames(gObjectEventPic_Wartortle, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Blastoise[] = { + overworld_ascending_frames(gObjectEventPic_Blastoise, 4, 4), +}; +#if P_MEGA_EVOLUTIONS +static const struct SpriteFrameImage sPicTable_BlastoiseMega[] = { + overworld_ascending_frames(gObjectEventPic_BlastoiseMega, 4, 4), +}; +#endif //P_MEGA_EVOLUTIONS +#if P_GIGANTAMAX_FORMS +/*static const struct SpriteFrameImage sPicTable_BlastoiseGmax[] = { + overworld_ascending_frames(gObjectEventPic_BlastoiseGmax, 4, 4), +};*/ +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_SQUIRTLE + +#if P_FAMILY_CATERPIE +static const struct SpriteFrameImage sPicTable_Caterpie[] = { + overworld_ascending_frames(gObjectEventPic_Caterpie, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Metapod[] = { + overworld_ascending_frames(gObjectEventPic_Metapod, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Butterfree[] = { + overworld_ascending_frames(gObjectEventPic_Butterfree, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_ButterfreeF[] = { + overworld_ascending_frames(gObjectEventPic_ButterfreeF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +#if P_GIGANTAMAX_FORMS +/*static const struct SpriteFrameImage sPicTable_ButterfreeGmax[] = { + overworld_ascending_frames(gObjectEventPic_ButterfreeGmax, 4, 4), +};*/ +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_CATERPIE + +#if P_FAMILY_WEEDLE +static const struct SpriteFrameImage sPicTable_Weedle[] = { + overworld_ascending_frames(gObjectEventPic_Weedle, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Kakuna[] = { + overworld_ascending_frames(gObjectEventPic_Kakuna, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Beedrill[] = { + overworld_ascending_frames(gObjectEventPic_Beedrill, 4, 4), +}; +#if P_MEGA_EVOLUTIONS +static const struct SpriteFrameImage sPicTable_BeedrillMega[] = { + overworld_ascending_frames(gObjectEventPic_BeedrillMega, 4, 4), +}; +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_WEEDLE + +#if P_FAMILY_PIDGEY +static const struct SpriteFrameImage sPicTable_Pidgey[] = { + overworld_ascending_frames(gObjectEventPic_Pidgey, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Pidgeotto[] = { + overworld_ascending_frames(gObjectEventPic_Pidgeotto, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Pidgeot[] = { + overworld_ascending_frames(gObjectEventPic_Pidgeot, 4, 4), +}; +#if P_MEGA_EVOLUTIONS +static const struct SpriteFrameImage sPicTable_PidgeotMega[] = { + overworld_ascending_frames(gObjectEventPic_PidgeotMega, 4, 4), +}; +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_PIDGEY + +#if P_FAMILY_RATTATA +static const struct SpriteFrameImage sPicTable_Rattata[] = { + overworld_ascending_frames(gObjectEventPic_Rattata, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_RattataF[] = { + overworld_ascending_frames(gObjectEventPic_RattataF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_Raticate[] = { + overworld_ascending_frames(gObjectEventPic_Raticate, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_RaticateF[] = { + overworld_ascending_frames(gObjectEventPic_RaticateF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +#if P_ALOLAN_FORMS +static const struct SpriteFrameImage sPicTable_RattataAlola[] = { + overworld_ascending_frames(gObjectEventPic_RattataAlola, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_RaticateAlola[] = { + overworld_ascending_frames(gObjectEventPic_RaticateAlola, 4, 4), +}; +#endif //P_ALOLAN_FORMS +#endif //P_FAMILY_RATTATA + +#if P_FAMILY_SPEAROW +static const struct SpriteFrameImage sPicTable_Spearow[] = { + overworld_ascending_frames(gObjectEventPic_Spearow, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Fearow[] = { + overworld_ascending_frames(gObjectEventPic_Fearow, 4, 4), +}; +#endif //P_FAMILY_SPEAROW + +#if P_FAMILY_EKANS +static const struct SpriteFrameImage sPicTable_Ekans[] = { + overworld_ascending_frames(gObjectEventPic_Ekans, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Arbok[] = { + overworld_ascending_frames(gObjectEventPic_Arbok, 4, 4), +}; +#endif //P_FAMILY_EKANS + +#if P_FAMILY_PIKACHU +#if P_GEN_2_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Pichu[] = { + overworld_ascending_frames(gObjectEventPic_Pichu, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_PichuSpikyEared[] = { + overworld_ascending_frames(gObjectEventPic_PichuSpikyEared, 4, 4), +}; +#endif //P_GEN_2_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Pikachu[] = { + overworld_ascending_frames(gObjectEventPic_Pikachu, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_PikachuF[] = { + overworld_ascending_frames(gObjectEventPic_PikachuF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +#if P_COSPLAY_PIKACHU_FORMS +/*static const struct SpriteFrameImage sPicTable_PikachuCosplay[] = { + overworld_ascending_frames(gObjectEventPic_PikachuCosplay, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_PikachuRockStar[] = { + overworld_ascending_frames(gObjectEventPic_PikachuRockStar, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_PikachuBelle[] = { + overworld_ascending_frames(gObjectEventPic_PikachuBelle, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_PikachuPopStar[] = { + overworld_ascending_frames(gObjectEventPic_PikachuPopStar, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_PikachuPhD[] = { + overworld_ascending_frames(gObjectEventPic_PikachuPhD, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_PikachuLibre[] = { + overworld_ascending_frames(gObjectEventPic_PikachuLibre, 4, 4), +};*/ +#endif //P_COSPLAY_PIKACHU_FORMS + +#if P_CAP_PIKACHU_FORMS +/*static const struct SpriteFrameImage sPicTable_PikachuOriginal[] = { + overworld_ascending_frames(gObjectEventPic_PikachuOriginal, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_PikachuHoenn[] = { + overworld_ascending_frames(gObjectEventPic_PikachuHoenn, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_PikachuSinnoh[] = { + overworld_ascending_frames(gObjectEventPic_PikachuSinnoh, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_PikachuUnova[] = { + overworld_ascending_frames(gObjectEventPic_PikachuUnova, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_PikachuKalos[] = { + overworld_ascending_frames(gObjectEventPic_PikachuKalos, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_PikachuAlola[] = { + overworld_ascending_frames(gObjectEventPic_PikachuAlola, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_PikachuPartner[] = { + overworld_ascending_frames(gObjectEventPic_PikachuPartner, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_PikachuWorld[] = { + overworld_ascending_frames(gObjectEventPic_PikachuWorld, 4, 4), +};*/ +#endif //P_CAP_PIKACHU_FORMS + +#if P_GIGANTAMAX_FORMS +/*static const struct SpriteFrameImage sPicTable_PikachuGmax[] = { + overworld_ascending_frames(gObjectEventPic_PikachuGmax, 4, 4), +};*/ +#endif //P_GIGANTAMAX_FORMS + +static const struct SpriteFrameImage sPicTable_Raichu[] = { + overworld_ascending_frames(gObjectEventPic_Raichu, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_RaichuF[] = { + overworld_ascending_frames(gObjectEventPic_RaichuF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +#if P_ALOLAN_FORMS +static const struct SpriteFrameImage sPicTable_RaichuAlola[] = { + overworld_ascending_frames(gObjectEventPic_RaichuAlola, 4, 4), +}; +#endif //P_ALOLAN_FORMS +#endif //P_FAMILY_PIKACHU + +#if P_FAMILY_SANDSHREW +static const struct SpriteFrameImage sPicTable_Sandshrew[] = { + overworld_ascending_frames(gObjectEventPic_Sandshrew, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Sandslash[] = { + overworld_ascending_frames(gObjectEventPic_Sandslash, 4, 4), +}; +#if P_ALOLAN_FORMS +static const struct SpriteFrameImage sPicTable_SandshrewAlola[] = { + overworld_ascending_frames(gObjectEventPic_SandshrewAlola, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_SandslashAlola[] = { + overworld_ascending_frames(gObjectEventPic_SandslashAlola, 4, 4), +}; +#endif //P_ALOLAN_FORMS +#endif //P_FAMILY_SANDSHREW + +#if P_FAMILY_NIDORAN +static const struct SpriteFrameImage sPicTable_NidoranF[] = { + overworld_ascending_frames(gObjectEventPic_NidoranF, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Nidorina[] = { + overworld_ascending_frames(gObjectEventPic_Nidorina, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Nidoqueen[] = { + overworld_ascending_frames(gObjectEventPic_Nidoqueen, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_NidoranM[] = { + overworld_ascending_frames(gObjectEventPic_NidoranM, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Nidorino[] = { + overworld_ascending_frames(gObjectEventPic_Nidorino, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Nidoking[] = { + overworld_ascending_frames(gObjectEventPic_Nidoking, 4, 4), +}; +#endif //P_FAMILY_NIDORAN + +#if P_FAMILY_CLEFAIRY +#if P_GEN_2_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Cleffa[] = { + overworld_ascending_frames(gObjectEventPic_Cleffa, 4, 4), +}; +#endif //P_GEN_2_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Clefairy[] = { + overworld_ascending_frames(gObjectEventPic_Clefairy, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Clefable[] = { + overworld_ascending_frames(gObjectEventPic_Clefable, 4, 4), +}; +#endif //P_FAMILY_CLEFAIRY + +#if P_FAMILY_VULPIX +static const struct SpriteFrameImage sPicTable_Vulpix[] = { + overworld_ascending_frames(gObjectEventPic_Vulpix, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Ninetales[] = { + overworld_ascending_frames(gObjectEventPic_Ninetales, 4, 4), +}; +#if P_ALOLAN_FORMS +static const struct SpriteFrameImage sPicTable_VulpixAlola[] = { + overworld_ascending_frames(gObjectEventPic_VulpixAlola, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_NinetalesAlola[] = { + overworld_ascending_frames(gObjectEventPic_NinetalesAlola, 4, 4), +}; +#endif //P_ALOLAN_FORMS +#endif //P_FAMILY_VULPIX + +#if P_FAMILY_JIGGLYPUFF +#if P_GEN_2_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Igglybuff[] = { + overworld_ascending_frames(gObjectEventPic_Igglybuff, 4, 4), +}; +#endif //P_GEN_2_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Jigglypuff[] = { + overworld_ascending_frames(gObjectEventPic_Jigglypuff, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Wigglytuff[] = { + overworld_ascending_frames(gObjectEventPic_Wigglytuff, 4, 4), +}; +#endif //P_FAMILY_JIGGLYPUFF + +#if P_FAMILY_ZUBAT +static const struct SpriteFrameImage sPicTable_Zubat[] = { + overworld_ascending_frames(gObjectEventPic_Zubat, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_ZubatF[] = { + overworld_ascending_frames(gObjectEventPic_ZubatF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_Golbat[] = { + overworld_ascending_frames(gObjectEventPic_Golbat, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_GolbatF[] = { + overworld_ascending_frames(gObjectEventPic_GolbatF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +#if P_GEN_2_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Crobat[] = { + overworld_ascending_frames(gObjectEventPic_Crobat, 4, 4), +}; +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_ZUBAT + +#if P_FAMILY_ODDISH +static const struct SpriteFrameImage sPicTable_Oddish[] = { + overworld_ascending_frames(gObjectEventPic_Oddish, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Gloom[] = { + overworld_ascending_frames(gObjectEventPic_Gloom, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_GloomF[] = { + overworld_ascending_frames(gObjectEventPic_GloomF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_Vileplume[] = { + overworld_ascending_frames(gObjectEventPic_Vileplume, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_VileplumeF[] = { + overworld_ascending_frames(gObjectEventPic_VileplumeF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +#if P_GEN_2_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Bellossom[] = { + overworld_ascending_frames(gObjectEventPic_Bellossom, 4, 4), +}; +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_ODDISH + +#if P_FAMILY_PARAS +static const struct SpriteFrameImage sPicTable_Paras[] = { + overworld_ascending_frames(gObjectEventPic_Paras, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Parasect[] = { + overworld_ascending_frames(gObjectEventPic_Parasect, 4, 4), +}; +#endif //P_FAMILY_PARAS + +#if P_FAMILY_VENONAT +static const struct SpriteFrameImage sPicTable_Venonat[] = { + overworld_ascending_frames(gObjectEventPic_Venonat, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Venomoth[] = { + overworld_ascending_frames(gObjectEventPic_Venomoth, 4, 4), +}; +#endif //P_FAMILY_VENONAT + +#if P_FAMILY_DIGLETT +static const struct SpriteFrameImage sPicTable_Diglett[] = { + overworld_ascending_frames(gObjectEventPic_Diglett, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Dugtrio[] = { + overworld_ascending_frames(gObjectEventPic_Dugtrio, 4, 4), +}; +#if P_ALOLAN_FORMS +static const struct SpriteFrameImage sPicTable_DiglettAlola[] = { + overworld_ascending_frames(gObjectEventPic_DiglettAlola, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_DugtrioAlola[] = { + overworld_ascending_frames(gObjectEventPic_DugtrioAlola, 4, 4), +}; +#endif //P_ALOLAN_FORMS +#endif //P_FAMILY_DIGLETT + +#if P_FAMILY_MEOWTH +static const struct SpriteFrameImage sPicTable_Meowth[] = { + overworld_ascending_frames(gObjectEventPic_Meowth, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Persian[] = { + overworld_ascending_frames(gObjectEventPic_Persian, 4, 4), +}; +#if P_ALOLAN_FORMS +static const struct SpriteFrameImage sPicTable_MeowthAlola[] = { + overworld_ascending_frames(gObjectEventPic_MeowthAlola, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_PersianAlola[] = { + overworld_ascending_frames(gObjectEventPic_PersianAlola, 4, 4), +}; +#endif //P_ALOLAN_FORMS + +#if P_GALARIAN_FORMS +static const struct SpriteFrameImage sPicTable_MeowthGalar[] = { + overworld_ascending_frames(gObjectEventPic_MeowthGalar, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Perrserker[] = { + overworld_ascending_frames(gObjectEventPic_Perrserker, 4, 4), +}; +#endif //P_GALARIAN_FORMS + +#if P_GIGANTAMAX_FORMS +/*static const struct SpriteFrameImage sPicTable_MeowthGmax[] = { + overworld_ascending_frames(gObjectEventPic_MeowthGmax, 4, 4), +};*/ +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_MEOWTH + +#if P_FAMILY_PSYDUCK +static const struct SpriteFrameImage sPicTable_Psyduck[] = { + overworld_ascending_frames(gObjectEventPic_Psyduck, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Golduck[] = { + overworld_ascending_frames(gObjectEventPic_Golduck, 4, 4), +}; +#endif //P_FAMILY_PSYDUCK + +#if P_FAMILY_MANKEY +static const struct SpriteFrameImage sPicTable_Mankey[] = { + overworld_ascending_frames(gObjectEventPic_Mankey, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Primeape[] = { + overworld_ascending_frames(gObjectEventPic_Primeape, 4, 4), +}; +#if P_GEN_9_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Annihilape[] = { + overworld_ascending_frames(gObjectEventPic_Annihilape, 4, 4), +}; +#endif //P_GEN_9_CROSS_EVOS +#endif //P_FAMILY_MANKEY + +#if P_FAMILY_GROWLITHE +static const struct SpriteFrameImage sPicTable_Growlithe[] = { + overworld_ascending_frames(gObjectEventPic_Growlithe, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Arcanine[] = { + overworld_ascending_frames(gObjectEventPic_Arcanine, 4, 4), +}; +#if P_HISUIAN_FORMS +static const struct SpriteFrameImage sPicTable_GrowlitheHisui[] = { + overworld_ascending_frames(gObjectEventPic_GrowlitheHisui, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_ArcanineHisui[] = { + overworld_ascending_frames(gObjectEventPic_ArcanineHisui, 4, 4), +}; +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_GROWLITHE + +#if P_FAMILY_POLIWAG +static const struct SpriteFrameImage sPicTable_Poliwag[] = { + overworld_ascending_frames(gObjectEventPic_Poliwag, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Poliwhirl[] = { + overworld_ascending_frames(gObjectEventPic_Poliwhirl, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Poliwrath[] = { + overworld_ascending_frames(gObjectEventPic_Poliwrath, 4, 4), +}; +#if P_GEN_2_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Politoed[] = { + overworld_ascending_frames(gObjectEventPic_Politoed, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_PolitoedF[] = { + overworld_ascending_frames(gObjectEventPic_PolitoedF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_POLIWAG + +#if P_FAMILY_ABRA +static const struct SpriteFrameImage sPicTable_Abra[] = { + overworld_ascending_frames(gObjectEventPic_Abra, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Kadabra[] = { + overworld_ascending_frames(gObjectEventPic_Kadabra, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_KadabraF[] = { + overworld_ascending_frames(gObjectEventPic_KadabraF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_Alakazam[] = { + overworld_ascending_frames(gObjectEventPic_Alakazam, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_AlakazamF[] = { + overworld_ascending_frames(gObjectEventPic_AlakazamF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +#if P_MEGA_EVOLUTIONS +static const struct SpriteFrameImage sPicTable_AlakazamMega[] = { + overworld_ascending_frames(gObjectEventPic_AlakazamMega, 4, 4), +}; +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_ABRA + +#if P_FAMILY_MACHOP +static const struct SpriteFrameImage sPicTable_Machop[] = { + overworld_ascending_frames(gObjectEventPic_Machop, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Machoke[] = { + overworld_ascending_frames(gObjectEventPic_Machoke, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Machamp[] = { + overworld_ascending_frames(gObjectEventPic_Machamp, 4, 4), +}; +#if P_GIGANTAMAX_FORMS +/*static const struct SpriteFrameImage sPicTable_MachampGmax[] = { + overworld_ascending_frames(gObjectEventPic_MachampGmax, 4, 4), +};*/ +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_MACHOP + +#if P_FAMILY_BELLSPROUT +static const struct SpriteFrameImage sPicTable_Bellsprout[] = { + overworld_ascending_frames(gObjectEventPic_Bellsprout, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Weepinbell[] = { + overworld_ascending_frames(gObjectEventPic_Weepinbell, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Victreebel[] = { + overworld_ascending_frames(gObjectEventPic_Victreebel, 4, 4), +}; +#endif //P_FAMILY_BELLSPROUT + +#if P_FAMILY_TENTACOOL +static const struct SpriteFrameImage sPicTable_Tentacool[] = { + overworld_ascending_frames(gObjectEventPic_Tentacool, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Tentacruel[] = { + overworld_ascending_frames(gObjectEventPic_Tentacruel, 4, 4), +}; +#endif //P_FAMILY_TENTACOOL + +#if P_FAMILY_GEODUDE +static const struct SpriteFrameImage sPicTable_Geodude[] = { + overworld_ascending_frames(gObjectEventPic_Geodude, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Graveler[] = { + overworld_ascending_frames(gObjectEventPic_Graveler, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Golem[] = { + overworld_ascending_frames(gObjectEventPic_Golem, 4, 4), +}; +#if P_ALOLAN_FORMS +static const struct SpriteFrameImage sPicTable_GeodudeAlola[] = { + overworld_ascending_frames(gObjectEventPic_GeodudeAlola, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_GravelerAlola[] = { + overworld_ascending_frames(gObjectEventPic_GravelerAlola, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_GolemAlola[] = { + overworld_ascending_frames(gObjectEventPic_GolemAlola, 4, 4), +}; +#endif //P_ALOLAN_FORMS +#endif //P_FAMILY_GEODUDE + +#if P_FAMILY_PONYTA +static const struct SpriteFrameImage sPicTable_Ponyta[] = { + overworld_ascending_frames(gObjectEventPic_Ponyta, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Rapidash[] = { + overworld_ascending_frames(gObjectEventPic_Rapidash, 4, 4), +}; +#if P_GALARIAN_FORMS +static const struct SpriteFrameImage sPicTable_PonytaGalar[] = { + overworld_ascending_frames(gObjectEventPic_PonytaGalar, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_RapidashGalar[] = { + overworld_ascending_frames(gObjectEventPic_RapidashGalar, 4, 4), +}; +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_PONYTA + +#if P_FAMILY_SLOWPOKE +static const struct SpriteFrameImage sPicTable_Slowpoke[] = { + overworld_ascending_frames(gObjectEventPic_Slowpoke, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Slowbro[] = { + overworld_ascending_frames(gObjectEventPic_Slowbro, 4, 4), +}; +#if P_GEN_2_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Slowking[] = { + overworld_ascending_frames(gObjectEventPic_Slowking, 4, 4), +}; +#endif //P_GEN_2_CROSS_EVOS + +#if P_MEGA_EVOLUTIONS +static const struct SpriteFrameImage sPicTable_SlowbroMega[] = { + overworld_ascending_frames(gObjectEventPic_SlowbroMega, 4, 4), +}; +#endif //P_MEGA_EVOLUTIONS + +#if P_GALARIAN_FORMS +static const struct SpriteFrameImage sPicTable_SlowpokeGalar[] = { + overworld_ascending_frames(gObjectEventPic_SlowpokeGalar, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_SlowbroGalar[] = { + overworld_ascending_frames(gObjectEventPic_SlowbroGalar, 4, 4), +}; +#if P_GEN_2_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_SlowkingGalar[] = { + overworld_ascending_frames(gObjectEventPic_SlowkingGalar, 4, 4), +}; +#endif //P_GEN_2_CROSS_EVOS +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_SLOWPOKE + +#if P_FAMILY_MAGNEMITE +static const struct SpriteFrameImage sPicTable_Magnemite[] = { + overworld_ascending_frames(gObjectEventPic_Magnemite, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Magneton[] = { + overworld_ascending_frames(gObjectEventPic_Magneton, 4, 4), +}; +#if P_GEN_4_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Magnezone[] = { + overworld_ascending_frames(gObjectEventPic_Magnezone, 4, 4), +}; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_MAGNEMITE + +#if P_FAMILY_FARFETCHD +static const struct SpriteFrameImage sPicTable_Farfetchd[] = { + overworld_ascending_frames(gObjectEventPic_Farfetchd, 4, 4), +}; +#if P_GALARIAN_FORMS +static const struct SpriteFrameImage sPicTable_FarfetchdGalar[] = { + overworld_ascending_frames(gObjectEventPic_FarfetchdGalar, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Sirfetchd[] = { + overworld_ascending_frames(gObjectEventPic_Sirfetchd, 4, 4), +}; +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_FARFETCHD + +#if P_FAMILY_DODUO +static const struct SpriteFrameImage sPicTable_Doduo[] = { + overworld_ascending_frames(gObjectEventPic_Doduo, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_DoduoF[] = { + overworld_ascending_frames(gObjectEventPic_DoduoF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_Dodrio[] = { + overworld_ascending_frames(gObjectEventPic_Dodrio, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_DodrioF[] = { + overworld_ascending_frames(gObjectEventPic_DodrioF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +#endif //P_FAMILY_DODUO + +#if P_FAMILY_SEEL +static const struct SpriteFrameImage sPicTable_Seel[] = { + overworld_ascending_frames(gObjectEventPic_Seel, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Dewgong[] = { + overworld_ascending_frames(gObjectEventPic_Dewgong, 4, 4), +}; +#endif //P_FAMILY_SEEL + +#if P_FAMILY_GRIMER +static const struct SpriteFrameImage sPicTable_Grimer[] = { + overworld_ascending_frames(gObjectEventPic_Grimer, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Muk[] = { + overworld_ascending_frames(gObjectEventPic_Muk, 4, 4), +}; +#if P_ALOLAN_FORMS +static const struct SpriteFrameImage sPicTable_GrimerAlola[] = { + overworld_ascending_frames(gObjectEventPic_GrimerAlola, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_MukAlola[] = { + overworld_ascending_frames(gObjectEventPic_MukAlola, 4, 4), +}; +#endif //P_ALOLAN_FORMS +#endif //P_FAMILY_GRIMER + +#if P_FAMILY_SHELLDER +static const struct SpriteFrameImage sPicTable_Shellder[] = { + overworld_ascending_frames(gObjectEventPic_Shellder, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Cloyster[] = { + overworld_ascending_frames(gObjectEventPic_Cloyster, 4, 4), +}; +#endif //P_FAMILY_SHELLDER + +#if P_FAMILY_GASTLY +static const struct SpriteFrameImage sPicTable_Gastly[] = { + overworld_ascending_frames(gObjectEventPic_Gastly, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Haunter[] = { + overworld_ascending_frames(gObjectEventPic_Haunter, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Gengar[] = { + overworld_ascending_frames(gObjectEventPic_Gengar, 4, 4), +}; +#if P_MEGA_EVOLUTIONS +static const struct SpriteFrameImage sPicTable_GengarMega[] = { + overworld_ascending_frames(gObjectEventPic_GengarMega, 4, 4), +}; +#endif //P_MEGA_EVOLUTIONS +#if P_GIGANTAMAX_FORMS +/*static const struct SpriteFrameImage sPicTable_GengarGmax[] = { + overworld_ascending_frames(gObjectEventPic_GengarGmax, 4, 4), +};*/ +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_GASTLY + +#if P_FAMILY_ONIX +static const struct SpriteFrameImage sPicTable_Onix[] = { + overworld_ascending_frames(gObjectEventPic_Onix, 4, 4), +}; +#if P_GEN_2_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Steelix[] = { + overworld_ascending_frames(gObjectEventPic_Steelix, 8, 8), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_SteelixF[] = { + overworld_ascending_frames(gObjectEventPic_SteelixF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +#if P_MEGA_EVOLUTIONS +static const struct SpriteFrameImage sPicTable_SteelixMega[] = { + overworld_ascending_frames(gObjectEventPic_SteelixMega, 4, 4), +}; +#endif //P_MEGA_EVOLUTIONS +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_ONIX + +#if P_FAMILY_DROWZEE +static const struct SpriteFrameImage sPicTable_Drowzee[] = { + overworld_ascending_frames(gObjectEventPic_Drowzee, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Hypno[] = { + overworld_ascending_frames(gObjectEventPic_Hypno, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_HypnoF[] = { + overworld_ascending_frames(gObjectEventPic_HypnoF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +#endif //P_FAMILY_DROWZEE + +#if P_FAMILY_KRABBY +static const struct SpriteFrameImage sPicTable_Krabby[] = { + overworld_ascending_frames(gObjectEventPic_Krabby, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Kingler[] = { + overworld_ascending_frames(gObjectEventPic_Kingler, 4, 4), +}; +#if P_GIGANTAMAX_FORMS +/*static const struct SpriteFrameImage sPicTable_KinglerGmax[] = { + overworld_ascending_frames(gObjectEventPic_KinglerGmax, 4, 4), +};*/ +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_KRABBY + +#if P_FAMILY_VOLTORB +static const struct SpriteFrameImage sPicTable_Voltorb[] = { + overworld_ascending_frames(gObjectEventPic_Voltorb, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Electrode[] = { + overworld_ascending_frames(gObjectEventPic_Electrode, 4, 4), +}; +#if P_HISUIAN_FORMS +static const struct SpriteFrameImage sPicTable_VoltorbHisui[] = { + overworld_ascending_frames(gObjectEventPic_VoltorbHisui, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_ElectrodeHisui[] = { + overworld_ascending_frames(gObjectEventPic_ElectrodeHisui, 4, 4), +}; +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_VOLTORB + +#if P_FAMILY_EXEGGCUTE +static const struct SpriteFrameImage sPicTable_Exeggcute[] = { + overworld_ascending_frames(gObjectEventPic_Exeggcute, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Exeggutor[] = { + overworld_ascending_frames(gObjectEventPic_Exeggutor, 4, 4), +}; +#if P_ALOLAN_FORMS +static const struct SpriteFrameImage sPicTable_ExeggutorAlola[] = { + overworld_ascending_frames(gObjectEventPic_ExeggutorAlola, 8, 8), +}; +#endif //P_ALOLAN_FORMS +#endif //P_FAMILY_EXEGGCUTE + +#if P_FAMILY_CUBONE +static const struct SpriteFrameImage sPicTable_Cubone[] = { + overworld_ascending_frames(gObjectEventPic_Cubone, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Marowak[] = { + overworld_ascending_frames(gObjectEventPic_Marowak, 4, 4), +}; +#if P_ALOLAN_FORMS +static const struct SpriteFrameImage sPicTable_MarowakAlola[] = { + overworld_ascending_frames(gObjectEventPic_MarowakAlola, 4, 4), +}; +#endif //P_ALOLAN_FORMS +#endif //P_FAMILY_CUBONE + +#if P_FAMILY_HITMONS +#if P_GEN_2_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Tyrogue[] = { + overworld_ascending_frames(gObjectEventPic_Tyrogue, 4, 4), +}; +#endif //P_GEN_2_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Hitmonlee[] = { + overworld_ascending_frames(gObjectEventPic_Hitmonlee, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Hitmonchan[] = { + overworld_ascending_frames(gObjectEventPic_Hitmonchan, 4, 4), +}; +#if P_GEN_2_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Hitmontop[] = { + overworld_ascending_frames(gObjectEventPic_Hitmontop, 4, 4), +}; +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_HITMONS + +#if P_FAMILY_LICKITUNG +static const struct SpriteFrameImage sPicTable_Lickitung[] = { + overworld_ascending_frames(gObjectEventPic_Lickitung, 4, 4), +}; +#if P_GEN_4_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Lickilicky[] = { + overworld_ascending_frames(gObjectEventPic_Lickilicky, 4, 4), +}; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_LICKITUNG + +#if P_FAMILY_KOFFING +static const struct SpriteFrameImage sPicTable_Koffing[] = { + overworld_ascending_frames(gObjectEventPic_Koffing, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Weezing[] = { + overworld_ascending_frames(gObjectEventPic_Weezing, 4, 4), +}; +#if P_GALARIAN_FORMS +static const struct SpriteFrameImage sPicTable_WeezingGalar[] = { + overworld_ascending_frames(gObjectEventPic_WeezingGalar, 4, 4), +}; +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_KOFFING + +#if P_FAMILY_RHYHORN +static const struct SpriteFrameImage sPicTable_Rhyhorn[] = { + overworld_ascending_frames(gObjectEventPic_Rhyhorn, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_RhyhornF[] = { + overworld_ascending_frames(gObjectEventPic_RhyhornF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_Rhydon[] = { + overworld_ascending_frames(gObjectEventPic_Rhydon, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_RhydonF[] = { + overworld_ascending_frames(gObjectEventPic_RhydonF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +#if P_GEN_4_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Rhyperior[] = { + overworld_ascending_frames(gObjectEventPic_Rhyperior, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_RhyperiorF[] = { + overworld_ascending_frames(gObjectEventPic_RhyperiorF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_RHYHORN + +#if P_FAMILY_CHANSEY +#if P_GEN_4_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Happiny[] = { + overworld_ascending_frames(gObjectEventPic_Happiny, 4, 4), +}; +#endif //P_GEN_4_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Chansey[] = { + overworld_ascending_frames(gObjectEventPic_Chansey, 4, 4), +}; +#if P_GEN_2_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Blissey[] = { + overworld_ascending_frames(gObjectEventPic_Blissey, 4, 4), +}; +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_CHANSEY + +#if P_FAMILY_TANGELA +static const struct SpriteFrameImage sPicTable_Tangela[] = { + overworld_ascending_frames(gObjectEventPic_Tangela, 4, 4), +}; +#if P_GEN_4_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Tangrowth[] = { + overworld_ascending_frames(gObjectEventPic_Tangrowth, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_TangrowthF[] = { + overworld_ascending_frames(gObjectEventPic_TangrowthF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_TANGELA + +#if P_FAMILY_KANGASKHAN +static const struct SpriteFrameImage sPicTable_Kangaskhan[] = { + overworld_ascending_frames(gObjectEventPic_Kangaskhan, 4, 4), +}; +#if P_MEGA_EVOLUTIONS +static const struct SpriteFrameImage sPicTable_KangaskhanMega[] = { + overworld_ascending_frames(gObjectEventPic_KangaskhanMega, 4, 4), +}; +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_KANGASKHAN + +#if P_FAMILY_HORSEA +static const struct SpriteFrameImage sPicTable_Horsea[] = { + overworld_ascending_frames(gObjectEventPic_Horsea, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Seadra[] = { + overworld_ascending_frames(gObjectEventPic_Seadra, 4, 4), +}; +#if P_GEN_2_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Kingdra[] = { + overworld_ascending_frames(gObjectEventPic_Kingdra, 4, 4), +}; +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_HORSEA + +#if P_FAMILY_GOLDEEN +static const struct SpriteFrameImage sPicTable_Goldeen[] = { + overworld_ascending_frames(gObjectEventPic_Goldeen, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_GoldeenF[] = { + overworld_ascending_frames(gObjectEventPic_GoldeenF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_Seaking[] = { + overworld_ascending_frames(gObjectEventPic_Seaking, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_SeakingF[] = { + overworld_ascending_frames(gObjectEventPic_SeakingF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +#endif //P_FAMILY_GOLDEEN + +#if P_FAMILY_STARYU +static const struct SpriteFrameImage sPicTable_Staryu[] = { + overworld_ascending_frames(gObjectEventPic_Staryu, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Starmie[] = { + overworld_ascending_frames(gObjectEventPic_Starmie, 4, 4), +}; +#endif //P_FAMILY_STARYU + +#if P_FAMILY_MR_MIME +#if P_GEN_4_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_MimeJr[] = { + overworld_ascending_frames(gObjectEventPic_MimeJr, 4, 4), +}; +#endif //P_GEN_4_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_MrMime[] = { + overworld_ascending_frames(gObjectEventPic_MrMime, 4, 4), +}; +#if P_GALARIAN_FORMS +static const struct SpriteFrameImage sPicTable_MrMimeGalar[] = { + overworld_ascending_frames(gObjectEventPic_MrMimeGalar, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_MrRime[] = { + overworld_ascending_frames(gObjectEventPic_MrRime, 4, 4), +}; +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_MR_MIME + +#if P_FAMILY_SCYTHER +static const struct SpriteFrameImage sPicTable_Scyther[] = { + overworld_ascending_frames(gObjectEventPic_Scyther, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_ScytherF[] = { + overworld_ascending_frames(gObjectEventPic_ScytherF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +#if P_GEN_2_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Scizor[] = { + overworld_ascending_frames(gObjectEventPic_Scizor, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_ScizorF[] = { + overworld_ascending_frames(gObjectEventPic_ScizorF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +#if P_MEGA_EVOLUTIONS +static const struct SpriteFrameImage sPicTable_ScizorMega[] = { + overworld_ascending_frames(gObjectEventPic_ScizorMega, 4, 4), +}; +#endif //P_MEGA_EVOLUTIONS +#endif //P_GEN_2_CROSS_EVOS + +#if P_GEN_8_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Kleavor[] = { + overworld_ascending_frames(gObjectEventPic_Kleavor, 4, 4), +}; +#endif //P_GEN_8_CROSS_EVOS +#endif //P_FAMILY_SCYTHER + +#if P_FAMILY_JYNX +#if P_GEN_2_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Smoochum[] = { + overworld_ascending_frames(gObjectEventPic_Smoochum, 4, 4), +}; +#endif //P_GEN_2_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Jynx[] = { + overworld_ascending_frames(gObjectEventPic_Jynx, 4, 4), +}; +#endif //P_FAMILY_JYNX + +#if P_FAMILY_ELECTABUZZ +#if P_GEN_2_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Elekid[] = { + overworld_ascending_frames(gObjectEventPic_Elekid, 4, 4), +}; +#endif //P_GEN_2_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Electabuzz[] = { + overworld_ascending_frames(gObjectEventPic_Electabuzz, 4, 4), +}; +#if P_GEN_4_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Electivire[] = { + overworld_ascending_frames(gObjectEventPic_Electivire, 4, 4), +}; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_ELECTABUZZ + +#if P_FAMILY_MAGMAR +#if P_GEN_2_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Magby[] = { + overworld_ascending_frames(gObjectEventPic_Magby, 4, 4), +}; +#endif //P_GEN_2_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Magmar[] = { + overworld_ascending_frames(gObjectEventPic_Magmar, 4, 4), +}; +#if P_GEN_4_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Magmortar[] = { + overworld_ascending_frames(gObjectEventPic_Magmortar, 4, 4), +}; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_MAGMAR + +#if P_FAMILY_PINSIR +static const struct SpriteFrameImage sPicTable_Pinsir[] = { + overworld_ascending_frames(gObjectEventPic_Pinsir, 4, 4), +}; +#if P_MEGA_EVOLUTIONS +static const struct SpriteFrameImage sPicTable_PinsirMega[] = { + overworld_ascending_frames(gObjectEventPic_PinsirMega, 4, 4), +}; +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_PINSIR + +#if P_FAMILY_TAUROS +static const struct SpriteFrameImage sPicTable_Tauros[] = { + overworld_ascending_frames(gObjectEventPic_Tauros, 4, 4), +}; +#if P_PALDEAN_FORMS +static const struct SpriteFrameImage sPicTable_TaurosPaldeaCombat[] = { + overworld_ascending_frames(gObjectEventPic_TaurosPaldeaCombat, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_TaurosPaldeaBlaze[] = { + overworld_ascending_frames(gObjectEventPic_TaurosPaldeaBlaze, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_TaurosPaldeaAqua[] = { + overworld_ascending_frames(gObjectEventPic_TaurosPaldeaAqua, 4, 4), +}; +#endif //P_PALDEAN_FORMS +#endif //P_FAMILY_TAUROS + +#if P_FAMILY_MAGIKARP +static const struct SpriteFrameImage sPicTable_Magikarp[] = { + overworld_ascending_frames(gObjectEventPic_Magikarp, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_MagikarpF[] = { + overworld_ascending_frames(gObjectEventPic_MagikarpF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_Gyarados[] = { + overworld_ascending_frames(gObjectEventPic_Gyarados, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_GyaradosF[] = { + overworld_ascending_frames(gObjectEventPic_GyaradosF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +#if P_MEGA_EVOLUTIONS +static const struct SpriteFrameImage sPicTable_GyaradosMega[] = { + overworld_ascending_frames(gObjectEventPic_GyaradosMega, 4, 4), +}; +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_MAGIKARP + +#if P_FAMILY_LAPRAS +static const struct SpriteFrameImage sPicTable_Lapras[] = { + overworld_ascending_frames(gObjectEventPic_Lapras, 4, 4), +}; +#if P_GIGANTAMAX_FORMS +/*static const struct SpriteFrameImage sPicTable_LaprasGmax[] = { + overworld_ascending_frames(gObjectEventPic_LaprasGmax, 4, 4), +};*/ +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_LAPRAS + +#if P_FAMILY_DITTO +static const struct SpriteFrameImage sPicTable_Ditto[] = { + overworld_ascending_frames(gObjectEventPic_Ditto, 4, 4), +}; +#endif //P_FAMILY_DITTO + +#if P_FAMILY_EEVEE +static const struct SpriteFrameImage sPicTable_Eevee[] = { + overworld_ascending_frames(gObjectEventPic_Eevee, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_EeveeF[] = { + overworld_ascending_frames(gObjectEventPic_EeveeF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +#if P_GIGANTAMAX_FORMS +/*static const struct SpriteFrameImage sPicTable_EeveeGmax[] = { + overworld_ascending_frames(gObjectEventPic_EeveeGmax, 4, 4), +};*/ +#endif //P_GIGANTAMAX_FORMS + +static const struct SpriteFrameImage sPicTable_Vaporeon[] = { + overworld_ascending_frames(gObjectEventPic_Vaporeon, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Jolteon[] = { + overworld_ascending_frames(gObjectEventPic_Jolteon, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Flareon[] = { + overworld_ascending_frames(gObjectEventPic_Flareon, 4, 4), +}; +#if P_GEN_2_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Espeon[] = { + overworld_ascending_frames(gObjectEventPic_Espeon, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Umbreon[] = { + overworld_ascending_frames(gObjectEventPic_Umbreon, 4, 4), +}; +#endif //P_GEN_2_CROSS_EVOS + +#if P_GEN_4_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Leafeon[] = { + overworld_ascending_frames(gObjectEventPic_Leafeon, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Glaceon[] = { + overworld_ascending_frames(gObjectEventPic_Glaceon, 4, 4), +}; +#endif //P_GEN_4_CROSS_EVOS + +#if P_GEN_6_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Sylveon[] = { + overworld_ascending_frames(gObjectEventPic_Sylveon, 4, 4), +}; +#endif //P_GEN_6_CROSS_EVOS +#endif //P_FAMILY_EEVEE + +#if P_FAMILY_PORYGON +static const struct SpriteFrameImage sPicTable_Porygon[] = { + overworld_ascending_frames(gObjectEventPic_Porygon, 4, 4), +}; +#if P_GEN_2_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Porygon2[] = { + overworld_ascending_frames(gObjectEventPic_Porygon2, 4, 4), +}; +#if P_GEN_4_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_PorygonZ[] = { + overworld_ascending_frames(gObjectEventPic_PorygonZ, 4, 4), +}; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_PORYGON + +#if P_FAMILY_OMANYTE +static const struct SpriteFrameImage sPicTable_Omanyte[] = { + overworld_ascending_frames(gObjectEventPic_Omanyte, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Omastar[] = { + overworld_ascending_frames(gObjectEventPic_Omastar, 4, 4), +}; +#endif //P_FAMILY_OMANYTE + +#if P_FAMILY_KABUTO +static const struct SpriteFrameImage sPicTable_Kabuto[] = { + overworld_ascending_frames(gObjectEventPic_Kabuto, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Kabutops[] = { + overworld_ascending_frames(gObjectEventPic_Kabutops, 4, 4), +}; +#endif //P_FAMILY_KABUTO + +#if P_FAMILY_AERODACTYL +static const struct SpriteFrameImage sPicTable_Aerodactyl[] = { + overworld_ascending_frames(gObjectEventPic_Aerodactyl, 4, 4), +}; +#if P_MEGA_EVOLUTIONS +static const struct SpriteFrameImage sPicTable_AerodactylMega[] = { + overworld_ascending_frames(gObjectEventPic_AerodactylMega, 4, 4), +}; +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_AERODACTYL + +#if P_FAMILY_SNORLAX +#if P_GEN_4_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Munchlax[] = { + overworld_ascending_frames(gObjectEventPic_Munchlax, 4, 4), +}; +#endif //P_GEN_4_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Snorlax[] = { + overworld_ascending_frames(gObjectEventPic_Snorlax, 4, 4), +}; +#if P_GIGANTAMAX_FORMS +/*static const struct SpriteFrameImage sPicTable_SnorlaxGmax[] = { + overworld_ascending_frames(gObjectEventPic_SnorlaxGmax, 4, 4), +};*/ +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_SNORLAX + +#if P_FAMILY_ARTICUNO +static const struct SpriteFrameImage sPicTable_Articuno[] = { + overworld_ascending_frames(gObjectEventPic_Articuno, 4, 4), +}; +#if P_GALARIAN_FORMS +static const struct SpriteFrameImage sPicTable_ArticunoGalar[] = { + overworld_ascending_frames(gObjectEventPic_ArticunoGalar, 4, 4), +}; +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_ARTICUNO + +#if P_FAMILY_ZAPDOS +static const struct SpriteFrameImage sPicTable_Zapdos[] = { + overworld_ascending_frames(gObjectEventPic_Zapdos, 4, 4), +}; +#if P_GALARIAN_FORMS +static const struct SpriteFrameImage sPicTable_ZapdosGalar[] = { + overworld_ascending_frames(gObjectEventPic_ZapdosGalar, 4, 4), +}; +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_ZAPDOS + +#if P_FAMILY_MOLTRES +static const struct SpriteFrameImage sPicTable_Moltres[] = { + overworld_ascending_frames(gObjectEventPic_Moltres, 4, 4), +}; +#if P_GALARIAN_FORMS +static const struct SpriteFrameImage sPicTable_MoltresGalar[] = { + overworld_ascending_frames(gObjectEventPic_MoltresGalar, 4, 4), +}; +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_MOLTRES + +#if P_FAMILY_DRATINI +static const struct SpriteFrameImage sPicTable_Dratini[] = { + overworld_ascending_frames(gObjectEventPic_Dratini, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Dragonair[] = { + overworld_ascending_frames(gObjectEventPic_Dragonair, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Dragonite[] = { + overworld_ascending_frames(gObjectEventPic_Dragonite, 4, 4), +}; +#endif //P_FAMILY_DRATINI + +#if P_FAMILY_MEWTWO +static const struct SpriteFrameImage sPicTable_Mewtwo[] = { + overworld_ascending_frames(gObjectEventPic_Mewtwo, 4, 4), +}; +#if P_MEGA_EVOLUTIONS +static const struct SpriteFrameImage sPicTable_MewtwoMegaX[] = { + overworld_ascending_frames(gObjectEventPic_MewtwoMegaX, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_MewtwoMegaY[] = { + overworld_ascending_frames(gObjectEventPic_MewtwoMegaY, 4, 4), +}; +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_MEWTWO + +#if P_FAMILY_MEW +static const struct SpriteFrameImage sPicTable_Mew[] = { + overworld_ascending_frames(gObjectEventPic_Mew, 4, 4), +}; +#endif //P_FAMILY_MEW + +#if P_FAMILY_CHIKORITA +static const struct SpriteFrameImage sPicTable_Chikorita[] = { + overworld_ascending_frames(gObjectEventPic_Chikorita, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Bayleef[] = { + overworld_ascending_frames(gObjectEventPic_Bayleef, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Meganium[] = { + overworld_ascending_frames(gObjectEventPic_Meganium, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_MeganiumF[] = { + overworld_ascending_frames(gObjectEventPic_MeganiumF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +#endif //P_FAMILY_CHIKORITA + +#if P_FAMILY_CYNDAQUIL +static const struct SpriteFrameImage sPicTable_Cyndaquil[] = { + overworld_ascending_frames(gObjectEventPic_Cyndaquil, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Quilava[] = { + overworld_ascending_frames(gObjectEventPic_Quilava, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Typhlosion[] = { + overworld_ascending_frames(gObjectEventPic_Typhlosion, 4, 4), +}; +#if P_HISUIAN_FORMS +static const struct SpriteFrameImage sPicTable_TyphlosionHisui[] = { + overworld_ascending_frames(gObjectEventPic_TyphlosionHisui, 4, 4), +}; +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_CYNDAQUIL + +#if P_FAMILY_TOTODILE +static const struct SpriteFrameImage sPicTable_Totodile[] = { + overworld_ascending_frames(gObjectEventPic_Totodile, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Croconaw[] = { + overworld_ascending_frames(gObjectEventPic_Croconaw, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Feraligatr[] = { + overworld_ascending_frames(gObjectEventPic_Feraligatr, 4, 4), +}; +#endif //P_FAMILY_TOTODILE + +#if P_FAMILY_SENTRET +static const struct SpriteFrameImage sPicTable_Sentret[] = { + overworld_ascending_frames(gObjectEventPic_Sentret, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Furret[] = { + overworld_ascending_frames(gObjectEventPic_Furret, 4, 4), +}; +#endif //P_FAMILY_SENTRET + +#if P_FAMILY_HOOTHOOT +static const struct SpriteFrameImage sPicTable_Hoothoot[] = { + overworld_ascending_frames(gObjectEventPic_Hoothoot, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Noctowl[] = { + overworld_ascending_frames(gObjectEventPic_Noctowl, 4, 4), +}; +#endif //P_FAMILY_HOOTHOOT + +#if P_FAMILY_LEDYBA +static const struct SpriteFrameImage sPicTable_Ledyba[] = { + overworld_ascending_frames(gObjectEventPic_Ledyba, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_LedybaF[] = { + overworld_ascending_frames(gObjectEventPic_LedybaF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_Ledian[] = { + overworld_ascending_frames(gObjectEventPic_Ledian, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_LedianF[] = { + overworld_ascending_frames(gObjectEventPic_LedianF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +#endif //P_FAMILY_LEDYBA + +#if P_FAMILY_SPINARAK +static const struct SpriteFrameImage sPicTable_Spinarak[] = { + overworld_ascending_frames(gObjectEventPic_Spinarak, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Ariados[] = { + overworld_ascending_frames(gObjectEventPic_Ariados, 4, 4), +}; +#endif //P_FAMILY_SPINARAK + +#if P_FAMILY_CHINCHOU +static const struct SpriteFrameImage sPicTable_Chinchou[] = { + overworld_ascending_frames(gObjectEventPic_Chinchou, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Lanturn[] = { + overworld_ascending_frames(gObjectEventPic_Lanturn, 4, 4), +}; +#endif //P_FAMILY_CHINCHOU + +#if P_FAMILY_TOGEPI +static const struct SpriteFrameImage sPicTable_Togepi[] = { + overworld_ascending_frames(gObjectEventPic_Togepi, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Togetic[] = { + overworld_ascending_frames(gObjectEventPic_Togetic, 4, 4), +}; +#if P_GEN_4_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Togekiss[] = { + overworld_ascending_frames(gObjectEventPic_Togekiss, 4, 4), +}; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_TOGEPI + +#if P_FAMILY_NATU +static const struct SpriteFrameImage sPicTable_Natu[] = { + overworld_ascending_frames(gObjectEventPic_Natu, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Xatu[] = { + overworld_ascending_frames(gObjectEventPic_Xatu, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_XatuF[] = { + overworld_ascending_frames(gObjectEventPic_XatuF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +#endif //P_FAMILY_NATU + +#if P_FAMILY_MAREEP +static const struct SpriteFrameImage sPicTable_Mareep[] = { + overworld_ascending_frames(gObjectEventPic_Mareep, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Flaaffy[] = { + overworld_ascending_frames(gObjectEventPic_Flaaffy, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Ampharos[] = { + overworld_ascending_frames(gObjectEventPic_Ampharos, 4, 4), +}; +#if P_MEGA_EVOLUTIONS +static const struct SpriteFrameImage sPicTable_AmpharosMega[] = { + overworld_ascending_frames(gObjectEventPic_AmpharosMega, 4, 4), +}; +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_MAREEP + +#if P_FAMILY_MARILL +#if P_GEN_3_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Azurill[] = { + overworld_ascending_frames(gObjectEventPic_Azurill, 4, 4), +}; +#endif //P_GEN_3_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Marill[] = { + overworld_ascending_frames(gObjectEventPic_Marill, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Azumarill[] = { + overworld_ascending_frames(gObjectEventPic_Azumarill, 4, 4), +}; +#endif //P_FAMILY_MARILL + +#if P_FAMILY_SUDOWOODO +#if P_GEN_4_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Bonsly[] = { + overworld_ascending_frames(gObjectEventPic_Bonsly, 4, 4), +}; +#endif //P_GEN_4_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Sudowoodo[] = { + overworld_ascending_frames(gObjectEventPic_Sudowoodo, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_SudowoodoF[] = { + overworld_ascending_frames(gObjectEventPic_SudowoodoF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +#endif //P_FAMILY_SUDOWOODO + +#if P_FAMILY_HOPPIP +static const struct SpriteFrameImage sPicTable_Hoppip[] = { + overworld_ascending_frames(gObjectEventPic_Hoppip, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Skiploom[] = { + overworld_ascending_frames(gObjectEventPic_Skiploom, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Jumpluff[] = { + overworld_ascending_frames(gObjectEventPic_Jumpluff, 4, 4), +}; +#endif //P_FAMILY_HOPPIP + +#if P_FAMILY_AIPOM +static const struct SpriteFrameImage sPicTable_Aipom[] = { + overworld_ascending_frames(gObjectEventPic_Aipom, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_AipomF[] = { + overworld_ascending_frames(gObjectEventPic_AipomF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +#if P_GEN_4_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Ambipom[] = { + overworld_ascending_frames(gObjectEventPic_Ambipom, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_AmbipomF[] = { + overworld_ascending_frames(gObjectEventPic_AmbipomF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_AIPOM + +#if P_FAMILY_SUNKERN +static const struct SpriteFrameImage sPicTable_Sunkern[] = { + overworld_ascending_frames(gObjectEventPic_Sunkern, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Sunflora[] = { + overworld_ascending_frames(gObjectEventPic_Sunflora, 4, 4), +}; +#endif //P_FAMILY_SUNKERN + +#if P_FAMILY_YANMA +static const struct SpriteFrameImage sPicTable_Yanma[] = { + overworld_ascending_frames(gObjectEventPic_Yanma, 4, 4), +}; +#if P_GEN_4_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Yanmega[] = { + overworld_ascending_frames(gObjectEventPic_Yanmega, 4, 4), +}; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_YANMA + +#if P_FAMILY_WOOPER +static const struct SpriteFrameImage sPicTable_Wooper[] = { + overworld_ascending_frames(gObjectEventPic_Wooper, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_WooperF[] = { + overworld_ascending_frames(gObjectEventPic_WooperF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_Quagsire[] = { + overworld_ascending_frames(gObjectEventPic_Quagsire, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_QuagsireF[] = { + overworld_ascending_frames(gObjectEventPic_QuagsireF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +#if P_PALDEAN_FORMS +static const struct SpriteFrameImage sPicTable_WooperPaldea[] = { + overworld_ascending_frames(gObjectEventPic_WooperPaldea, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Clodsire[] = { + overworld_ascending_frames(gObjectEventPic_Clodsire, 4, 4), +}; +#endif //P_PALDEAN_FORMS +#endif //P_FAMILY_WOOPER + +#if P_FAMILY_MURKROW +static const struct SpriteFrameImage sPicTable_Murkrow[] = { + overworld_ascending_frames(gObjectEventPic_Murkrow, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_MurkrowF[] = { + overworld_ascending_frames(gObjectEventPic_MurkrowF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +#if P_GEN_4_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Honchkrow[] = { + overworld_ascending_frames(gObjectEventPic_Honchkrow, 4, 4), +}; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_MURKROW + +#if P_FAMILY_MISDREAVUS +static const struct SpriteFrameImage sPicTable_Misdreavus[] = { + overworld_ascending_frames(gObjectEventPic_Misdreavus, 4, 4), +}; +#if P_GEN_4_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Mismagius[] = { + overworld_ascending_frames(gObjectEventPic_Mismagius, 4, 4), +}; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_MISDREAVUS + +#if P_FAMILY_UNOWN +static const struct SpriteFrameImage sPicTable_UnownA[] = { + overworld_ascending_frames(gObjectEventPic_UnownA, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_UnownB[] = { + overworld_ascending_frames(gObjectEventPic_UnownB, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_UnownC[] = { + overworld_ascending_frames(gObjectEventPic_UnownC, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_UnownD[] = { + overworld_ascending_frames(gObjectEventPic_UnownD, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_UnownE[] = { + overworld_ascending_frames(gObjectEventPic_UnownE, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_UnownF[] = { + overworld_ascending_frames(gObjectEventPic_UnownF, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_UnownG[] = { + overworld_ascending_frames(gObjectEventPic_UnownG, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_UnownH[] = { + overworld_ascending_frames(gObjectEventPic_UnownH, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_UnownI[] = { + overworld_ascending_frames(gObjectEventPic_UnownI, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_UnownJ[] = { + overworld_ascending_frames(gObjectEventPic_UnownJ, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_UnownK[] = { + overworld_ascending_frames(gObjectEventPic_UnownK, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_UnownL[] = { + overworld_ascending_frames(gObjectEventPic_UnownL, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_UnownM[] = { + overworld_ascending_frames(gObjectEventPic_UnownM, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_UnownN[] = { + overworld_ascending_frames(gObjectEventPic_UnownN, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_UnownO[] = { + overworld_ascending_frames(gObjectEventPic_UnownO, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_UnownP[] = { + overworld_ascending_frames(gObjectEventPic_UnownP, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_UnownQ[] = { + overworld_ascending_frames(gObjectEventPic_UnownQ, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_UnownR[] = { + overworld_ascending_frames(gObjectEventPic_UnownR, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_UnownS[] = { + overworld_ascending_frames(gObjectEventPic_UnownS, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_UnownT[] = { + overworld_ascending_frames(gObjectEventPic_UnownT, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_UnownU[] = { + overworld_ascending_frames(gObjectEventPic_UnownU, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_UnownV[] = { + overworld_ascending_frames(gObjectEventPic_UnownV, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_UnownW[] = { + overworld_ascending_frames(gObjectEventPic_UnownW, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_UnownX[] = { + overworld_ascending_frames(gObjectEventPic_UnownX, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_UnownY[] = { + overworld_ascending_frames(gObjectEventPic_UnownY, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_UnownZ[] = { + overworld_ascending_frames(gObjectEventPic_UnownZ, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_UnownExclamation[] = { + overworld_ascending_frames(gObjectEventPic_UnownExclamation, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_UnownQuestion[] = { + overworld_ascending_frames(gObjectEventPic_UnownQuestion, 4, 4), +}; +#endif //P_FAMILY_UNOWN + +#if P_FAMILY_WOBBUFFET +#if P_GEN_3_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Wynaut[] = { + overworld_ascending_frames(gObjectEventPic_Wynaut, 4, 4), +}; +#endif //P_GEN_3_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Wobbuffet[] = { + overworld_ascending_frames(gObjectEventPic_Wobbuffet, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_WobbuffetF[] = { + overworld_ascending_frames(gObjectEventPic_WobbuffetF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +#endif //P_FAMILY_WOBBUFFET + +#if P_FAMILY_GIRAFARIG +static const struct SpriteFrameImage sPicTable_Girafarig[] = { + overworld_ascending_frames(gObjectEventPic_Girafarig, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_GirafarigF[] = { + overworld_ascending_frames(gObjectEventPic_GirafarigF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +#if P_GEN_9_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Farigiraf[] = { + overworld_ascending_frames(gObjectEventPic_Farigiraf, 4, 4), +}; +#endif //P_GEN_9_CROSS_EVOS +#endif //P_FAMILY_GIRAFARIG + +#if P_FAMILY_PINECO +static const struct SpriteFrameImage sPicTable_Pineco[] = { + overworld_ascending_frames(gObjectEventPic_Pineco, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Forretress[] = { + overworld_ascending_frames(gObjectEventPic_Forretress, 4, 4), +}; +#endif //P_FAMILY_PINECO + +#if P_FAMILY_DUNSPARCE +static const struct SpriteFrameImage sPicTable_Dunsparce[] = { + overworld_ascending_frames(gObjectEventPic_Dunsparce, 4, 4), +}; +#if P_GEN_9_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_DudunsparceTwoSegment[] = { + overworld_ascending_frames(gObjectEventPic_DudunsparceTwoSegment, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_DudunsparceThreeSegment[] = { + overworld_ascending_frames(gObjectEventPic_DudunsparceThreeSegment, 8, 8), +}; + + +#endif //P_GEN_9_CROSS_EVOS +#endif //P_FAMILY_DUNSPARCE + +#if P_FAMILY_GLIGAR +static const struct SpriteFrameImage sPicTable_Gligar[] = { + overworld_ascending_frames(gObjectEventPic_Gligar, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_GligarF[] = { + overworld_ascending_frames(gObjectEventPic_GligarF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +#if P_GEN_4_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Gliscor[] = { + overworld_ascending_frames(gObjectEventPic_Gliscor, 4, 4), +}; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_GLIGAR + +#if P_FAMILY_SNUBBULL +static const struct SpriteFrameImage sPicTable_Snubbull[] = { + overworld_ascending_frames(gObjectEventPic_Snubbull, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Granbull[] = { + overworld_ascending_frames(gObjectEventPic_Granbull, 4, 4), +}; +#endif //P_FAMILY_SNUBBULL + +#if P_FAMILY_QWILFISH +static const struct SpriteFrameImage sPicTable_Qwilfish[] = { + overworld_ascending_frames(gObjectEventPic_Qwilfish, 4, 4), +}; +#if P_HISUIAN_FORMS +static const struct SpriteFrameImage sPicTable_QwilfishHisui[] = { + overworld_ascending_frames(gObjectEventPic_QwilfishHisui, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Overqwil[] = { + overworld_ascending_frames(gObjectEventPic_Overqwil, 4, 4), +}; +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_QWILFISH + +#if P_FAMILY_SHUCKLE +static const struct SpriteFrameImage sPicTable_Shuckle[] = { + overworld_ascending_frames(gObjectEventPic_Shuckle, 4, 4), +}; +#endif //P_FAMILY_SHUCKLE + +#if P_FAMILY_HERACROSS +static const struct SpriteFrameImage sPicTable_Heracross[] = { + overworld_ascending_frames(gObjectEventPic_Heracross, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_HeracrossF[] = { + overworld_ascending_frames(gObjectEventPic_HeracrossF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +#if P_MEGA_EVOLUTIONS +static const struct SpriteFrameImage sPicTable_HeracrossMega[] = { + overworld_ascending_frames(gObjectEventPic_HeracrossMega, 4, 4), +}; +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_HERACROSS + +#if P_FAMILY_SNEASEL +static const struct SpriteFrameImage sPicTable_Sneasel[] = { + overworld_ascending_frames(gObjectEventPic_Sneasel, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_SneaselF[] = { + overworld_ascending_frames(gObjectEventPic_SneaselF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +#if P_GEN_4_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Weavile[] = { + overworld_ascending_frames(gObjectEventPic_Weavile, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_WeavileF[] = { + overworld_ascending_frames(gObjectEventPic_WeavileF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +#endif //P_GEN_4_CROSS_EVOS + +#if P_HISUIAN_FORMS +static const struct SpriteFrameImage sPicTable_SneaselHisui[] = { + overworld_ascending_frames(gObjectEventPic_SneaselHisui, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_SneaselHisuiF[] = { + overworld_ascending_frames(gObjectEventPic_SneaselHisuiF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_Sneasler[] = { + overworld_ascending_frames(gObjectEventPic_Sneasler, 4, 4), +}; +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_SNEASEL + +#if P_FAMILY_TEDDIURSA +static const struct SpriteFrameImage sPicTable_Teddiursa[] = { + overworld_ascending_frames(gObjectEventPic_Teddiursa, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Ursaring[] = { + overworld_ascending_frames(gObjectEventPic_Ursaring, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_UrsaringF[] = { + overworld_ascending_frames(gObjectEventPic_UrsaringF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +#if P_GEN_8_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Ursaluna[] = { + overworld_ascending_frames(gObjectEventPic_Ursaluna, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_UrsalunaBloodmoon[] = { + overworld_ascending_frames(gObjectEventPic_UrsalunaBloodmoon, 4, 4), +}; +#endif //P_GEN_8_CROSS_EVOS +#endif //P_FAMILY_TEDDIURSA + +#if P_FAMILY_SLUGMA +static const struct SpriteFrameImage sPicTable_Slugma[] = { + overworld_ascending_frames(gObjectEventPic_Slugma, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Magcargo[] = { + overworld_ascending_frames(gObjectEventPic_Magcargo, 4, 4), +}; +#endif //P_FAMILY_SLUGMA + +#if P_FAMILY_SWINUB +static const struct SpriteFrameImage sPicTable_Swinub[] = { + overworld_ascending_frames(gObjectEventPic_Swinub, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Piloswine[] = { + overworld_ascending_frames(gObjectEventPic_Piloswine, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_PiloswineF[] = { + overworld_ascending_frames(gObjectEventPic_PiloswineF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +#if P_GEN_4_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Mamoswine[] = { + overworld_ascending_frames(gObjectEventPic_Mamoswine, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_MamoswineF[] = { + overworld_ascending_frames(gObjectEventPic_MamoswineF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_SWINUB + +#if P_FAMILY_CORSOLA +static const struct SpriteFrameImage sPicTable_Corsola[] = { + overworld_ascending_frames(gObjectEventPic_Corsola, 4, 4), +}; +#if P_GALARIAN_FORMS +static const struct SpriteFrameImage sPicTable_CorsolaGalar[] = { + overworld_ascending_frames(gObjectEventPic_CorsolaGalar, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Cursola[] = { + overworld_ascending_frames(gObjectEventPic_Cursola, 4, 4), +}; +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_CORSOLA + +#if P_FAMILY_REMORAID +static const struct SpriteFrameImage sPicTable_Remoraid[] = { + overworld_ascending_frames(gObjectEventPic_Remoraid, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Octillery[] = { + overworld_ascending_frames(gObjectEventPic_Octillery, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_OctilleryF[] = { + overworld_ascending_frames(gObjectEventPic_OctilleryF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +#endif //P_FAMILY_REMORAID + +#if P_FAMILY_DELIBIRD +static const struct SpriteFrameImage sPicTable_Delibird[] = { + overworld_ascending_frames(gObjectEventPic_Delibird, 4, 4), +}; +#endif //P_FAMILY_DELIBIRD + +#if P_FAMILY_MANTINE +#if P_GEN_4_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Mantyke[] = { + overworld_ascending_frames(gObjectEventPic_Mantyke, 4, 4), +}; +#endif //P_GEN_4_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Mantine[] = { + overworld_ascending_frames(gObjectEventPic_Mantine, 4, 4), +}; +#endif //P_FAMILY_MANTINE + +#if P_FAMILY_SKARMORY +static const struct SpriteFrameImage sPicTable_Skarmory[] = { + overworld_ascending_frames(gObjectEventPic_Skarmory, 4, 4), +}; +#endif //P_FAMILY_SKARMORY + +#if P_FAMILY_HOUNDOUR +static const struct SpriteFrameImage sPicTable_Houndour[] = { + overworld_ascending_frames(gObjectEventPic_Houndour, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Houndoom[] = { + overworld_ascending_frames(gObjectEventPic_Houndoom, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_HoundoomF[] = { + overworld_ascending_frames(gObjectEventPic_HoundoomF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +#if P_MEGA_EVOLUTIONS +static const struct SpriteFrameImage sPicTable_HoundoomMega[] = { + overworld_ascending_frames(gObjectEventPic_HoundoomMega, 4, 4), +}; +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_HOUNDOUR + +#if P_FAMILY_PHANPY +static const struct SpriteFrameImage sPicTable_Phanpy[] = { + overworld_ascending_frames(gObjectEventPic_Phanpy, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Donphan[] = { + overworld_ascending_frames(gObjectEventPic_Donphan, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_DonphanF[] = { + overworld_ascending_frames(gObjectEventPic_DonphanF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +#endif //P_FAMILY_PHANPY + +#if P_FAMILY_STANTLER +static const struct SpriteFrameImage sPicTable_Stantler[] = { + overworld_ascending_frames(gObjectEventPic_Stantler, 4, 4), +}; +#if P_GEN_8_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Wyrdeer[] = { + overworld_ascending_frames(gObjectEventPic_Wyrdeer, 4, 4), +}; +#endif //P_GEN_8_CROSS_EVOS +#endif //P_FAMILY_STANTLER + +#if P_FAMILY_SMEARGLE +static const struct SpriteFrameImage sPicTable_Smeargle[] = { + overworld_ascending_frames(gObjectEventPic_Smeargle, 4, 4), +}; +#endif //P_FAMILY_SMEARGLE + +#if P_FAMILY_MILTANK +static const struct SpriteFrameImage sPicTable_Miltank[] = { + overworld_ascending_frames(gObjectEventPic_Miltank, 4, 4), +}; +#endif //P_FAMILY_MILTANK + +#if P_FAMILY_RAIKOU +static const struct SpriteFrameImage sPicTable_Raikou[] = { + overworld_ascending_frames(gObjectEventPic_Raikou, 4, 4), +}; +#endif //P_FAMILY_RAIKOU + +#if P_FAMILY_ENTEI +static const struct SpriteFrameImage sPicTable_Entei[] = { + overworld_ascending_frames(gObjectEventPic_Entei, 4, 4), +}; +#endif //P_FAMILY_ENTEI + +#if P_FAMILY_SUICUNE +static const struct SpriteFrameImage sPicTable_Suicune[] = { + overworld_ascending_frames(gObjectEventPic_Suicune, 4, 4), +}; +#endif //P_FAMILY_SUICUNE + +#if P_FAMILY_LARVITAR +static const struct SpriteFrameImage sPicTable_Larvitar[] = { + overworld_ascending_frames(gObjectEventPic_Larvitar, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Pupitar[] = { + overworld_ascending_frames(gObjectEventPic_Pupitar, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Tyranitar[] = { + overworld_ascending_frames(gObjectEventPic_Tyranitar, 4, 4), +}; +#if P_MEGA_EVOLUTIONS +static const struct SpriteFrameImage sPicTable_TyranitarMega[] = { + overworld_ascending_frames(gObjectEventPic_TyranitarMega, 4, 4), +}; +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_LARVITAR + +#if P_FAMILY_LUGIA +static const struct SpriteFrameImage sPicTable_Lugia[] = { + overworld_ascending_frames(gObjectEventPic_Lugia, 8, 8), +}; +#endif //P_FAMILY_LUGIA + +#if P_FAMILY_HO_OH +static const struct SpriteFrameImage sPicTable_HoOh[] = { + overworld_ascending_frames(gObjectEventPic_HoOh, 8, 8), +}; +#endif //P_FAMILY_HO_OH + +#if P_FAMILY_CELEBI +static const struct SpriteFrameImage sPicTable_Celebi[] = { + overworld_ascending_frames(gObjectEventPic_Celebi, 4, 4), +}; +#endif //P_FAMILY_CELEBI + +#if P_FAMILY_TREECKO +static const struct SpriteFrameImage sPicTable_Treecko[] = { + overworld_ascending_frames(gObjectEventPic_Treecko, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Grovyle[] = { + overworld_ascending_frames(gObjectEventPic_Grovyle, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Sceptile[] = { + overworld_ascending_frames(gObjectEventPic_Sceptile, 4, 4), +}; +#if P_MEGA_EVOLUTIONS +static const struct SpriteFrameImage sPicTable_SceptileMega[] = { + overworld_ascending_frames(gObjectEventPic_SceptileMega, 4, 4), +}; +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_TREECKO + +#if P_FAMILY_TORCHIC +static const struct SpriteFrameImage sPicTable_Torchic[] = { + overworld_ascending_frames(gObjectEventPic_Torchic, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_TorchicF[] = { + overworld_ascending_frames(gObjectEventPic_TorchicF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_Combusken[] = { + overworld_ascending_frames(gObjectEventPic_Combusken, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_CombuskenF[] = { + overworld_ascending_frames(gObjectEventPic_CombuskenF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_Blaziken[] = { + overworld_ascending_frames(gObjectEventPic_Blaziken, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_BlazikenF[] = { + overworld_ascending_frames(gObjectEventPic_BlazikenF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +#if P_MEGA_EVOLUTIONS +static const struct SpriteFrameImage sPicTable_BlazikenMega[] = { + overworld_ascending_frames(gObjectEventPic_BlazikenMega, 4, 4), +}; +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_TORCHIC + +#if P_FAMILY_MUDKIP +static const struct SpriteFrameImage sPicTable_Mudkip[] = { + overworld_ascending_frames(gObjectEventPic_Mudkip, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Marshtomp[] = { + overworld_ascending_frames(gObjectEventPic_Marshtomp, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Swampert[] = { + overworld_ascending_frames(gObjectEventPic_Swampert, 4, 4), +}; +#if P_MEGA_EVOLUTIONS +static const struct SpriteFrameImage sPicTable_SwampertMega[] = { + overworld_ascending_frames(gObjectEventPic_SwampertMega, 4, 4), +}; +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_MUDKIP + +#if P_FAMILY_POOCHYENA +static const struct SpriteFrameImage sPicTable_Poochyena[] = { + overworld_ascending_frames(gObjectEventPic_Poochyena, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Mightyena[] = { + overworld_ascending_frames(gObjectEventPic_Mightyena, 4, 4), +}; +#endif //P_FAMILY_POOCHYENA + +#if P_FAMILY_ZIGZAGOON +static const struct SpriteFrameImage sPicTable_Zigzagoon[] = { + overworld_ascending_frames(gObjectEventPic_Zigzagoon, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Linoone[] = { + overworld_ascending_frames(gObjectEventPic_Linoone, 4, 4), +}; +#if P_GALARIAN_FORMS +static const struct SpriteFrameImage sPicTable_ZigzagoonGalar[] = { + overworld_ascending_frames(gObjectEventPic_ZigzagoonGalar, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_LinooneGalar[] = { + overworld_ascending_frames(gObjectEventPic_LinooneGalar, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Obstagoon[] = { + overworld_ascending_frames(gObjectEventPic_Obstagoon, 4, 4), +}; +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_ZIGZAGOON + +#if P_FAMILY_WURMPLE +static const struct SpriteFrameImage sPicTable_Wurmple[] = { + overworld_ascending_frames(gObjectEventPic_Wurmple, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Silcoon[] = { + overworld_ascending_frames(gObjectEventPic_Silcoon, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Beautifly[] = { + overworld_ascending_frames(gObjectEventPic_Beautifly, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_BeautiflyF[] = { + overworld_ascending_frames(gObjectEventPic_BeautiflyF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_Cascoon[] = { + overworld_ascending_frames(gObjectEventPic_Cascoon, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Dustox[] = { + overworld_ascending_frames(gObjectEventPic_Dustox, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_DustoxF[] = { + overworld_ascending_frames(gObjectEventPic_DustoxF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +#endif //P_FAMILY_WURMPLE + +#if P_FAMILY_LOTAD +static const struct SpriteFrameImage sPicTable_Lotad[] = { + overworld_ascending_frames(gObjectEventPic_Lotad, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Lombre[] = { + overworld_ascending_frames(gObjectEventPic_Lombre, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Ludicolo[] = { + overworld_ascending_frames(gObjectEventPic_Ludicolo, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_LudicoloF[] = { + overworld_ascending_frames(gObjectEventPic_LudicoloF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +#endif //P_FAMILY_LOTAD + +#if P_FAMILY_SEEDOT +static const struct SpriteFrameImage sPicTable_Seedot[] = { + overworld_ascending_frames(gObjectEventPic_Seedot, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Nuzleaf[] = { + overworld_ascending_frames(gObjectEventPic_Nuzleaf, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_NuzleafF[] = { + overworld_ascending_frames(gObjectEventPic_NuzleafF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_Shiftry[] = { + overworld_ascending_frames(gObjectEventPic_Shiftry, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_ShiftryF[] = { + overworld_ascending_frames(gObjectEventPic_ShiftryF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +#endif //P_FAMILY_SEEDOT + +#if P_FAMILY_TAILLOW +static const struct SpriteFrameImage sPicTable_Taillow[] = { + overworld_ascending_frames(gObjectEventPic_Taillow, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Swellow[] = { + overworld_ascending_frames(gObjectEventPic_Swellow, 4, 4), +}; +#endif //P_FAMILY_TAILLOW + +#if P_FAMILY_WINGULL +static const struct SpriteFrameImage sPicTable_Wingull[] = { + overworld_ascending_frames(gObjectEventPic_Wingull, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Pelipper[] = { + overworld_ascending_frames(gObjectEventPic_Pelipper, 4, 4), +}; +#endif //P_FAMILY_WINGULL + +#if P_FAMILY_RALTS +static const struct SpriteFrameImage sPicTable_Ralts[] = { + overworld_ascending_frames(gObjectEventPic_Ralts, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Kirlia[] = { + overworld_ascending_frames(gObjectEventPic_Kirlia, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Gardevoir[] = { + overworld_ascending_frames(gObjectEventPic_Gardevoir, 4, 4), +}; +#if P_MEGA_EVOLUTIONS +static const struct SpriteFrameImage sPicTable_GardevoirMega[] = { + overworld_ascending_frames(gObjectEventPic_GardevoirMega, 4, 4), +}; +#endif //P_MEGA_EVOLUTIONS + +#if P_GEN_4_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Gallade[] = { + overworld_ascending_frames(gObjectEventPic_Gallade, 4, 4), +}; +#if P_MEGA_EVOLUTIONS +static const struct SpriteFrameImage sPicTable_GalladeMega[] = { + overworld_ascending_frames(gObjectEventPic_GalladeMega, 4, 4), +}; +#endif //P_MEGA_EVOLUTIONS +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_RALTS + +#if P_FAMILY_SURSKIT +static const struct SpriteFrameImage sPicTable_Surskit[] = { + overworld_ascending_frames(gObjectEventPic_Surskit, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Masquerain[] = { + overworld_ascending_frames(gObjectEventPic_Masquerain, 4, 4), +}; +#endif //P_FAMILY_SURSKIT + +#if P_FAMILY_SHROOMISH +static const struct SpriteFrameImage sPicTable_Shroomish[] = { + overworld_ascending_frames(gObjectEventPic_Shroomish, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Breloom[] = { + overworld_ascending_frames(gObjectEventPic_Breloom, 4, 4), +}; +#endif //P_FAMILY_SHROOMISH + +#if P_FAMILY_SLAKOTH +static const struct SpriteFrameImage sPicTable_Slakoth[] = { + overworld_ascending_frames(gObjectEventPic_Slakoth, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Vigoroth[] = { + overworld_ascending_frames(gObjectEventPic_Vigoroth, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Slaking[] = { + overworld_ascending_frames(gObjectEventPic_Slaking, 4, 4), +}; +#endif //P_FAMILY_SLAKOTH + +#if P_FAMILY_NINCADA +static const struct SpriteFrameImage sPicTable_Nincada[] = { + overworld_ascending_frames(gObjectEventPic_Nincada, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Ninjask[] = { + overworld_ascending_frames(gObjectEventPic_Ninjask, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Shedinja[] = { + overworld_ascending_frames(gObjectEventPic_Shedinja, 4, 4), +}; +#endif //P_FAMILY_NINCADA + +#if P_FAMILY_WHISMUR +static const struct SpriteFrameImage sPicTable_Whismur[] = { + overworld_ascending_frames(gObjectEventPic_Whismur, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Loudred[] = { + overworld_ascending_frames(gObjectEventPic_Loudred, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Exploud[] = { + overworld_ascending_frames(gObjectEventPic_Exploud, 4, 4), +}; +#endif //P_FAMILY_WHISMUR + +#if P_FAMILY_MAKUHITA +static const struct SpriteFrameImage sPicTable_Makuhita[] = { + overworld_ascending_frames(gObjectEventPic_Makuhita, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Hariyama[] = { + overworld_ascending_frames(gObjectEventPic_Hariyama, 4, 4), +}; +#endif //P_FAMILY_MAKUHITA + +#if P_FAMILY_NOSEPASS +static const struct SpriteFrameImage sPicTable_Nosepass[] = { + overworld_ascending_frames(gObjectEventPic_Nosepass, 4, 4), +}; +#if P_GEN_4_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Probopass[] = { + overworld_ascending_frames(gObjectEventPic_Probopass, 4, 4), +}; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_NOSEPASS + +#if P_FAMILY_SKITTY +static const struct SpriteFrameImage sPicTable_Skitty[] = { + overworld_ascending_frames(gObjectEventPic_Skitty, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Delcatty[] = { + overworld_ascending_frames(gObjectEventPic_Delcatty, 4, 4), +}; +#endif //P_FAMILY_SKITTY + +#if P_FAMILY_SABLEYE +static const struct SpriteFrameImage sPicTable_Sableye[] = { + overworld_ascending_frames(gObjectEventPic_Sableye, 4, 4), +}; +#if P_MEGA_EVOLUTIONS +static const struct SpriteFrameImage sPicTable_SableyeMega[] = { + overworld_ascending_frames(gObjectEventPic_SableyeMega, 4, 4), +}; +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_SABLEYE + +#if P_FAMILY_MAWILE +static const struct SpriteFrameImage sPicTable_Mawile[] = { + overworld_ascending_frames(gObjectEventPic_Mawile, 4, 4), +}; +#if P_MEGA_EVOLUTIONS +static const struct SpriteFrameImage sPicTable_MawileMega[] = { + overworld_ascending_frames(gObjectEventPic_MawileMega, 4, 4), +}; +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_MAWILE + +#if P_FAMILY_ARON +static const struct SpriteFrameImage sPicTable_Aron[] = { + overworld_ascending_frames(gObjectEventPic_Aron, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Lairon[] = { + overworld_ascending_frames(gObjectEventPic_Lairon, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Aggron[] = { + overworld_ascending_frames(gObjectEventPic_Aggron, 4, 4), +}; +#if P_MEGA_EVOLUTIONS +static const struct SpriteFrameImage sPicTable_AggronMega[] = { + overworld_ascending_frames(gObjectEventPic_AggronMega, 4, 4), +}; +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_ARON + +#if P_FAMILY_MEDITITE +static const struct SpriteFrameImage sPicTable_Meditite[] = { + overworld_ascending_frames(gObjectEventPic_Meditite, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_MedititeF[] = { + overworld_ascending_frames(gObjectEventPic_MedititeF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_Medicham[] = { + overworld_ascending_frames(gObjectEventPic_Medicham, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_MedichamF[] = { + overworld_ascending_frames(gObjectEventPic_MedichamF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +#if P_MEGA_EVOLUTIONS +static const struct SpriteFrameImage sPicTable_MedichamMega[] = { + overworld_ascending_frames(gObjectEventPic_MedichamMega, 4, 4), +}; +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_MEDITITE + +#if P_FAMILY_ELECTRIKE +static const struct SpriteFrameImage sPicTable_Electrike[] = { + overworld_ascending_frames(gObjectEventPic_Electrike, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Manectric[] = { + overworld_ascending_frames(gObjectEventPic_Manectric, 4, 4), +}; +#if P_MEGA_EVOLUTIONS +static const struct SpriteFrameImage sPicTable_ManectricMega[] = { + overworld_ascending_frames(gObjectEventPic_ManectricMega, 4, 4), +}; +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_ELECTRIKE + +#if P_FAMILY_PLUSLE +static const struct SpriteFrameImage sPicTable_Plusle[] = { + overworld_ascending_frames(gObjectEventPic_Plusle, 4, 4), +}; +#endif //P_FAMILY_PLUSLE + +#if P_FAMILY_MINUN +static const struct SpriteFrameImage sPicTable_Minun[] = { + overworld_ascending_frames(gObjectEventPic_Minun, 4, 4), +}; +#endif //P_FAMILY_MINUN + +#if P_FAMILY_VOLBEAT_ILLUMISE +static const struct SpriteFrameImage sPicTable_Volbeat[] = { + overworld_ascending_frames(gObjectEventPic_Volbeat, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Illumise[] = { + overworld_ascending_frames(gObjectEventPic_Illumise, 4, 4), +}; +#endif //P_FAMILY_VOLBEAT_ILLUMISE + +#if P_FAMILY_ROSELIA +#if P_GEN_4_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Budew[] = { + overworld_ascending_frames(gObjectEventPic_Budew, 4, 4), +}; +#endif //P_GEN_4_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Roselia[] = { + overworld_ascending_frames(gObjectEventPic_Roselia, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_RoseliaF[] = { + overworld_ascending_frames(gObjectEventPic_RoseliaF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +#if P_GEN_4_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Roserade[] = { + overworld_ascending_frames(gObjectEventPic_Roserade, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_RoseradeF[] = { + overworld_ascending_frames(gObjectEventPic_RoseradeF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_ROSELIA + +#if P_FAMILY_GULPIN +static const struct SpriteFrameImage sPicTable_Gulpin[] = { + overworld_ascending_frames(gObjectEventPic_Gulpin, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_GulpinF[] = { + overworld_ascending_frames(gObjectEventPic_GulpinF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_Swalot[] = { + overworld_ascending_frames(gObjectEventPic_Swalot, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_SwalotF[] = { + overworld_ascending_frames(gObjectEventPic_SwalotF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +#endif //P_FAMILY_GULPIN + +#if P_FAMILY_CARVANHA +static const struct SpriteFrameImage sPicTable_Carvanha[] = { + overworld_ascending_frames(gObjectEventPic_Carvanha, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Sharpedo[] = { + overworld_ascending_frames(gObjectEventPic_Sharpedo, 4, 4), +}; +#if P_MEGA_EVOLUTIONS +static const struct SpriteFrameImage sPicTable_SharpedoMega[] = { + overworld_ascending_frames(gObjectEventPic_SharpedoMega, 4, 4), +}; +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_CARVANHA + +#if P_FAMILY_WAILMER +static const struct SpriteFrameImage sPicTable_Wailmer[] = { + overworld_ascending_frames(gObjectEventPic_Wailmer, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Wailord[] = { + overworld_ascending_frames(gObjectEventPic_Wailord, 8, 8), +}; +#endif //P_FAMILY_WAILMER + +#if P_FAMILY_NUMEL +static const struct SpriteFrameImage sPicTable_Numel[] = { + overworld_ascending_frames(gObjectEventPic_Numel, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_NumelF[] = { + overworld_ascending_frames(gObjectEventPic_NumelF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_Camerupt[] = { + overworld_ascending_frames(gObjectEventPic_Camerupt, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_CameruptF[] = { + overworld_ascending_frames(gObjectEventPic_CameruptF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +#if P_MEGA_EVOLUTIONS +static const struct SpriteFrameImage sPicTable_CameruptMega[] = { + overworld_ascending_frames(gObjectEventPic_CameruptMega, 4, 4), +}; +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_NUMEL + +#if P_FAMILY_TORKOAL +static const struct SpriteFrameImage sPicTable_Torkoal[] = { + overworld_ascending_frames(gObjectEventPic_Torkoal, 4, 4), +}; +#endif //P_FAMILY_TORKOAL + +#if P_FAMILY_SPOINK +static const struct SpriteFrameImage sPicTable_Spoink[] = { + overworld_ascending_frames(gObjectEventPic_Spoink, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Grumpig[] = { + overworld_ascending_frames(gObjectEventPic_Grumpig, 4, 4), +}; +#endif //P_FAMILY_SPOINK + +#if P_FAMILY_SPINDA +static const struct SpriteFrameImage sPicTable_Spinda[] = { + overworld_ascending_frames(gObjectEventPic_Spinda, 4, 4), +}; +#endif //P_FAMILY_SPINDA + +#if P_FAMILY_TRAPINCH +static const struct SpriteFrameImage sPicTable_Trapinch[] = { + overworld_ascending_frames(gObjectEventPic_Trapinch, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Vibrava[] = { + overworld_ascending_frames(gObjectEventPic_Vibrava, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Flygon[] = { + overworld_ascending_frames(gObjectEventPic_Flygon, 4, 4), +}; +#endif //P_FAMILY_TRAPINCH + +#if P_FAMILY_CACNEA +static const struct SpriteFrameImage sPicTable_Cacnea[] = { + overworld_ascending_frames(gObjectEventPic_Cacnea, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Cacturne[] = { + overworld_ascending_frames(gObjectEventPic_Cacturne, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_CacturneF[] = { + overworld_ascending_frames(gObjectEventPic_CacturneF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +#endif //P_FAMILY_CACNEA + +#if P_FAMILY_SWABLU +static const struct SpriteFrameImage sPicTable_Swablu[] = { + overworld_ascending_frames(gObjectEventPic_Swablu, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Altaria[] = { + overworld_ascending_frames(gObjectEventPic_Altaria, 4, 4), +}; +#if P_MEGA_EVOLUTIONS +static const struct SpriteFrameImage sPicTable_AltariaMega[] = { + overworld_ascending_frames(gObjectEventPic_AltariaMega, 4, 4), +}; +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_SWABLU + +#if P_FAMILY_ZANGOOSE +static const struct SpriteFrameImage sPicTable_Zangoose[] = { + overworld_ascending_frames(gObjectEventPic_Zangoose, 4, 4), +}; +#endif //P_FAMILY_ZANGOOSE + +#if P_FAMILY_SEVIPER +static const struct SpriteFrameImage sPicTable_Seviper[] = { + overworld_ascending_frames(gObjectEventPic_Seviper, 4, 4), +}; +#endif //P_FAMILY_SEVIPER + +#if P_FAMILY_LUNATONE +static const struct SpriteFrameImage sPicTable_Lunatone[] = { + overworld_ascending_frames(gObjectEventPic_Lunatone, 4, 4), +}; +#endif //P_FAMILY_LUNATONE + +#if P_FAMILY_SOLROCK +static const struct SpriteFrameImage sPicTable_Solrock[] = { + overworld_ascending_frames(gObjectEventPic_Solrock, 4, 4), +}; +#endif //P_FAMILY_SOLROCK + +#if P_FAMILY_BARBOACH +static const struct SpriteFrameImage sPicTable_Barboach[] = { + overworld_ascending_frames(gObjectEventPic_Barboach, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Whiscash[] = { + overworld_ascending_frames(gObjectEventPic_Whiscash, 4, 4), +}; +#endif //P_FAMILY_BARBOACH + +#if P_FAMILY_CORPHISH +static const struct SpriteFrameImage sPicTable_Corphish[] = { + overworld_ascending_frames(gObjectEventPic_Corphish, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Crawdaunt[] = { + overworld_ascending_frames(gObjectEventPic_Crawdaunt, 4, 4), +}; +#endif //P_FAMILY_CORPHISH + +#if P_FAMILY_BALTOY +static const struct SpriteFrameImage sPicTable_Baltoy[] = { + overworld_ascending_frames(gObjectEventPic_Baltoy, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Claydol[] = { + overworld_ascending_frames(gObjectEventPic_Claydol, 4, 4), +}; +#endif //P_FAMILY_BALTOY + +#if P_FAMILY_LILEEP +static const struct SpriteFrameImage sPicTable_Lileep[] = { + overworld_ascending_frames(gObjectEventPic_Lileep, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Cradily[] = { + overworld_ascending_frames(gObjectEventPic_Cradily, 4, 4), +}; +#endif //P_FAMILY_LILEEP + +#if P_FAMILY_ANORITH +static const struct SpriteFrameImage sPicTable_Anorith[] = { + overworld_ascending_frames(gObjectEventPic_Anorith, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Armaldo[] = { + overworld_ascending_frames(gObjectEventPic_Armaldo, 4, 4), +}; +#endif //P_FAMILY_ANORITH + +#if P_FAMILY_FEEBAS +static const struct SpriteFrameImage sPicTable_Feebas[] = { + overworld_ascending_frames(gObjectEventPic_Feebas, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Milotic[] = { + overworld_ascending_frames(gObjectEventPic_Milotic, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_MiloticF[] = { + overworld_ascending_frames(gObjectEventPic_MiloticF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +#endif //P_FAMILY_FEEBAS + +#if P_FAMILY_CASTFORM +static const struct SpriteFrameImage sPicTable_CastformNormal[] = { + overworld_ascending_frames(gObjectEventPic_CastformNormal, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_CastformSunny[] = { + overworld_ascending_frames(gObjectEventPic_CastformSunny, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_CastformRainy[] = { + overworld_ascending_frames(gObjectEventPic_CastformRainy, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_CastformSnowy[] = { + overworld_ascending_frames(gObjectEventPic_CastformSnowy, 4, 4), +}; +#endif //P_FAMILY_CASTFORM + +#if P_FAMILY_KECLEON +static const struct SpriteFrameImage sPicTable_Kecleon[] = { + overworld_ascending_frames(gObjectEventPic_Kecleon, 4, 4), +}; +#endif //P_FAMILY_KECLEON + +#if P_FAMILY_SHUPPET +static const struct SpriteFrameImage sPicTable_Shuppet[] = { + overworld_ascending_frames(gObjectEventPic_Shuppet, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Banette[] = { + overworld_ascending_frames(gObjectEventPic_Banette, 4, 4), +}; +#if P_MEGA_EVOLUTIONS +static const struct SpriteFrameImage sPicTable_BanetteMega[] = { + overworld_ascending_frames(gObjectEventPic_BanetteMega, 4, 4), +}; +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_SHUPPET + +#if P_FAMILY_DUSKULL +static const struct SpriteFrameImage sPicTable_Duskull[] = { + overworld_ascending_frames(gObjectEventPic_Duskull, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Dusclops[] = { + overworld_ascending_frames(gObjectEventPic_Dusclops, 4, 4), +}; +#if P_GEN_4_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Dusknoir[] = { + overworld_ascending_frames(gObjectEventPic_Dusknoir, 4, 4), +}; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_DUSKULL + +#if P_FAMILY_TROPIUS +static const struct SpriteFrameImage sPicTable_Tropius[] = { + overworld_ascending_frames(gObjectEventPic_Tropius, 4, 4), +}; +#endif //P_FAMILY_TROPIUS + +#if P_FAMILY_CHIMECHO +#if P_GEN_4_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Chingling[] = { + overworld_ascending_frames(gObjectEventPic_Chingling, 4, 4), +}; +#endif //P_GEN_4_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Chimecho[] = { + overworld_ascending_frames(gObjectEventPic_Chimecho, 4, 4), +}; +#endif //P_FAMILY_CHIMECHO + +#if P_FAMILY_ABSOL +static const struct SpriteFrameImage sPicTable_Absol[] = { + overworld_ascending_frames(gObjectEventPic_Absol, 4, 4), +}; +#if P_MEGA_EVOLUTIONS +static const struct SpriteFrameImage sPicTable_AbsolMega[] = { + overworld_ascending_frames(gObjectEventPic_AbsolMega, 4, 4), +}; +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_ABSOL + +#if P_FAMILY_SNORUNT +static const struct SpriteFrameImage sPicTable_Snorunt[] = { + overworld_ascending_frames(gObjectEventPic_Snorunt, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Glalie[] = { + overworld_ascending_frames(gObjectEventPic_Glalie, 4, 4), +}; +#if P_MEGA_EVOLUTIONS +static const struct SpriteFrameImage sPicTable_GlalieMega[] = { + overworld_ascending_frames(gObjectEventPic_GlalieMega, 4, 4), +}; +#endif //P_MEGA_EVOLUTIONS + +#if P_GEN_4_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Froslass[] = { + overworld_ascending_frames(gObjectEventPic_Froslass, 4, 4), +}; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_SNORUNT + +#if P_FAMILY_SPHEAL +static const struct SpriteFrameImage sPicTable_Spheal[] = { + overworld_ascending_frames(gObjectEventPic_Spheal, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Sealeo[] = { + overworld_ascending_frames(gObjectEventPic_Sealeo, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Walrein[] = { + overworld_ascending_frames(gObjectEventPic_Walrein, 4, 4), +}; +#endif //P_FAMILY_SPHEAL + +#if P_FAMILY_CLAMPERL +static const struct SpriteFrameImage sPicTable_Clamperl[] = { + overworld_ascending_frames(gObjectEventPic_Clamperl, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Huntail[] = { + overworld_ascending_frames(gObjectEventPic_Huntail, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Gorebyss[] = { + overworld_ascending_frames(gObjectEventPic_Gorebyss, 4, 4), +}; +#endif //P_FAMILY_CLAMPERL + +#if P_FAMILY_RELICANTH +static const struct SpriteFrameImage sPicTable_Relicanth[] = { + overworld_ascending_frames(gObjectEventPic_Relicanth, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_RelicanthF[] = { + overworld_ascending_frames(gObjectEventPic_RelicanthF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +#endif //P_FAMILY_RELICANTH + +#if P_FAMILY_LUVDISC +static const struct SpriteFrameImage sPicTable_Luvdisc[] = { + overworld_ascending_frames(gObjectEventPic_Luvdisc, 4, 4), +}; +#endif //P_FAMILY_LUVDISC + +#if P_FAMILY_BAGON +static const struct SpriteFrameImage sPicTable_Bagon[] = { + overworld_ascending_frames(gObjectEventPic_Bagon, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Shelgon[] = { + overworld_ascending_frames(gObjectEventPic_Shelgon, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Salamence[] = { + overworld_ascending_frames(gObjectEventPic_Salamence, 4, 4), +}; +#if P_MEGA_EVOLUTIONS +static const struct SpriteFrameImage sPicTable_SalamenceMega[] = { + overworld_ascending_frames(gObjectEventPic_SalamenceMega, 4, 4), +}; +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_BAGON + +#if P_FAMILY_BELDUM +static const struct SpriteFrameImage sPicTable_Beldum[] = { + overworld_ascending_frames(gObjectEventPic_Beldum, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Metang[] = { + overworld_ascending_frames(gObjectEventPic_Metang, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Metagross[] = { + overworld_ascending_frames(gObjectEventPic_Metagross, 4, 4), +}; +#if P_MEGA_EVOLUTIONS +static const struct SpriteFrameImage sPicTable_MetagrossMega[] = { + overworld_ascending_frames(gObjectEventPic_MetagrossMega, 4, 4), +}; +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_BELDUM + +#if P_FAMILY_REGIROCK +static const struct SpriteFrameImage sPicTable_Regirock[] = { + overworld_ascending_frames(gObjectEventPic_Regirock, 4, 4), +}; +#endif //P_FAMILY_REGIROCK + +#if P_FAMILY_REGICE +static const struct SpriteFrameImage sPicTable_Regice[] = { + overworld_ascending_frames(gObjectEventPic_Regice, 4, 4), +}; +#endif //P_FAMILY_REGICE + +#if P_FAMILY_REGISTEEL +static const struct SpriteFrameImage sPicTable_Registeel[] = { + overworld_ascending_frames(gObjectEventPic_Registeel, 4, 4), +}; +#endif //P_FAMILY_REGISTEEL + +#if P_FAMILY_LATIAS +static const struct SpriteFrameImage sPicTable_Latias[] = { + overworld_ascending_frames(gObjectEventPic_Latias, 4, 4), +}; +#if P_MEGA_EVOLUTIONS +static const struct SpriteFrameImage sPicTable_LatiasMega[] = { + overworld_ascending_frames(gObjectEventPic_LatiasMega, 4, 4), +}; +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_LATIAS + +#if P_FAMILY_LATIOS +static const struct SpriteFrameImage sPicTable_Latios[] = { + overworld_ascending_frames(gObjectEventPic_Latios, 4, 4), +}; +#if P_MEGA_EVOLUTIONS +static const struct SpriteFrameImage sPicTable_LatiosMega[] = { + overworld_ascending_frames(gObjectEventPic_LatiosMega, 4, 4), +}; +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_LATIOS + +#if P_FAMILY_KYOGRE +static const struct SpriteFrameImage sPicTable_Kyogre[] = { + overworld_ascending_frames(gObjectEventPic_Kyogre, 8, 8), +}; +#if P_PRIMAL_REVERSIONS +static const struct SpriteFrameImage sPicTable_KyogrePrimal[] = { + overworld_ascending_frames(gObjectEventPic_KyogrePrimal, 4, 4), +}; +#endif //P_PRIMAL_REVERSIONS +#endif //P_FAMILY_KYOGRE + +#if P_FAMILY_GROUDON +static const struct SpriteFrameImage sPicTable_Groudon[] = { + overworld_ascending_frames(gObjectEventPic_Groudon, 8, 8), +}; +#if P_PRIMAL_REVERSIONS +static const struct SpriteFrameImage sPicTable_GroudonPrimal[] = { + overworld_ascending_frames(gObjectEventPic_GroudonPrimal, 4, 4), +}; +#endif //P_PRIMAL_REVERSIONS +#endif //P_FAMILY_GROUDON + +#if P_FAMILY_RAYQUAZA +static const struct SpriteFrameImage sPicTable_Rayquaza[] = { + overworld_ascending_frames(gObjectEventPic_Rayquaza, 8, 8), +}; +#if P_MEGA_EVOLUTIONS +static const struct SpriteFrameImage sPicTable_RayquazaMega[] = { + overworld_ascending_frames(gObjectEventPic_RayquazaMega, 4, 4), +}; +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_RAYQUAZA + +#if P_FAMILY_JIRACHI +static const struct SpriteFrameImage sPicTable_Jirachi[] = { + overworld_ascending_frames(gObjectEventPic_Jirachi, 4, 4), +}; +#endif //P_FAMILY_JIRACHI + +#if P_FAMILY_DEOXYS +static const struct SpriteFrameImage sPicTable_DeoxysNormal[] = { + overworld_ascending_frames(gObjectEventPic_DeoxysNormal, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_DeoxysAttack[] = { + overworld_ascending_frames(gObjectEventPic_DeoxysAttack, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_DeoxysDefense[] = { + overworld_ascending_frames(gObjectEventPic_DeoxysDefense, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_DeoxysSpeed[] = { + overworld_ascending_frames(gObjectEventPic_DeoxysSpeed, 4, 4), +}; +#endif //P_FAMILY_DEOXYS + +#if P_FAMILY_TURTWIG +static const struct SpriteFrameImage sPicTable_Turtwig[] = { + overworld_ascending_frames(gObjectEventPic_Turtwig, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Grotle[] = { + overworld_ascending_frames(gObjectEventPic_Grotle, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Torterra[] = { + overworld_ascending_frames(gObjectEventPic_Torterra, 4, 4), +}; +#endif //P_FAMILY_TURTWIG + +#if P_FAMILY_CHIMCHAR +static const struct SpriteFrameImage sPicTable_Chimchar[] = { + overworld_ascending_frames(gObjectEventPic_Chimchar, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Monferno[] = { + overworld_ascending_frames(gObjectEventPic_Monferno, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Infernape[] = { + overworld_ascending_frames(gObjectEventPic_Infernape, 4, 4), +}; +#endif //P_FAMILY_CHIMCHAR + +#if P_FAMILY_PIPLUP +static const struct SpriteFrameImage sPicTable_Piplup[] = { + overworld_ascending_frames(gObjectEventPic_Piplup, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Prinplup[] = { + overworld_ascending_frames(gObjectEventPic_Prinplup, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Empoleon[] = { + overworld_ascending_frames(gObjectEventPic_Empoleon, 4, 4), +}; +#endif //P_FAMILY_PIPLUP + +#if P_FAMILY_STARLY +static const struct SpriteFrameImage sPicTable_Starly[] = { + overworld_ascending_frames(gObjectEventPic_Starly, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_StarlyF[] = { + overworld_ascending_frames(gObjectEventPic_StarlyF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_Staravia[] = { + overworld_ascending_frames(gObjectEventPic_Staravia, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_StaraviaF[] = { + overworld_ascending_frames(gObjectEventPic_StaraviaF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_Staraptor[] = { + overworld_ascending_frames(gObjectEventPic_Staraptor, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_StaraptorF[] = { + overworld_ascending_frames(gObjectEventPic_StaraptorF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +#endif //P_FAMILY_STARLY + +#if P_FAMILY_BIDOOF +static const struct SpriteFrameImage sPicTable_Bidoof[] = { + overworld_ascending_frames(gObjectEventPic_Bidoof, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_BidoofF[] = { + overworld_ascending_frames(gObjectEventPic_BidoofF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_Bibarel[] = { + overworld_ascending_frames(gObjectEventPic_Bibarel, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_BibarelF[] = { + overworld_ascending_frames(gObjectEventPic_BibarelF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +#endif //P_FAMILY_BIDOOF + +#if P_FAMILY_KRICKETOT +static const struct SpriteFrameImage sPicTable_Kricketot[] = { + overworld_ascending_frames(gObjectEventPic_Kricketot, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_KricketotF[] = { + overworld_ascending_frames(gObjectEventPic_KricketotF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_Kricketune[] = { + overworld_ascending_frames(gObjectEventPic_Kricketune, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_KricketuneF[] = { + overworld_ascending_frames(gObjectEventPic_KricketuneF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +#endif //P_FAMILY_KRICKETOT + +#if P_FAMILY_SHINX +static const struct SpriteFrameImage sPicTable_Shinx[] = { + overworld_ascending_frames(gObjectEventPic_Shinx, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_ShinxF[] = { + overworld_ascending_frames(gObjectEventPic_ShinxF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_Luxio[] = { + overworld_ascending_frames(gObjectEventPic_Luxio, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_LuxioF[] = { + overworld_ascending_frames(gObjectEventPic_LuxioF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_Luxray[] = { + overworld_ascending_frames(gObjectEventPic_Luxray, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_LuxrayF[] = { + overworld_ascending_frames(gObjectEventPic_LuxrayF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +#endif //P_FAMILY_SHINX + +#if P_FAMILY_CRANIDOS +static const struct SpriteFrameImage sPicTable_Cranidos[] = { + overworld_ascending_frames(gObjectEventPic_Cranidos, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Rampardos[] = { + overworld_ascending_frames(gObjectEventPic_Rampardos, 4, 4), +}; +#endif //P_FAMILY_CRANIDOS + +#if P_FAMILY_SHIELDON +static const struct SpriteFrameImage sPicTable_Shieldon[] = { + overworld_ascending_frames(gObjectEventPic_Shieldon, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Bastiodon[] = { + overworld_ascending_frames(gObjectEventPic_Bastiodon, 4, 4), +}; +#endif //P_FAMILY_SHIELDON + +#if P_FAMILY_BURMY +static const struct SpriteFrameImage sPicTable_BurmyPlant[] = { + overworld_ascending_frames(gObjectEventPic_BurmyPlant, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_BurmySandy[] = { + overworld_ascending_frames(gObjectEventPic_BurmySandy, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_BurmyTrash[] = { + overworld_ascending_frames(gObjectEventPic_BurmyTrash, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_WormadamPlant[] = { + overworld_ascending_frames(gObjectEventPic_WormadamPlant, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_WormadamSandy[] = { + overworld_ascending_frames(gObjectEventPic_WormadamSandy, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_WormadamTrash[] = { + overworld_ascending_frames(gObjectEventPic_WormadamTrash, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Mothim[] = { + overworld_ascending_frames(gObjectEventPic_Mothim, 4, 4), +}; +#endif //P_FAMILY_BURMY + +#if P_FAMILY_COMBEE +static const struct SpriteFrameImage sPicTable_Combee[] = { + overworld_ascending_frames(gObjectEventPic_Combee, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_CombeeF[] = { + overworld_ascending_frames(gObjectEventPic_CombeeF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_Vespiquen[] = { + overworld_ascending_frames(gObjectEventPic_Vespiquen, 4, 4), +}; +#endif //P_FAMILY_COMBEE + +#if P_FAMILY_PACHIRISU +static const struct SpriteFrameImage sPicTable_Pachirisu[] = { + overworld_ascending_frames(gObjectEventPic_Pachirisu, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_PachirisuF[] = { + overworld_ascending_frames(gObjectEventPic_PachirisuF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +#endif //P_FAMILY_PACHIRISU + +#if P_FAMILY_BUIZEL +static const struct SpriteFrameImage sPicTable_Buizel[] = { + overworld_ascending_frames(gObjectEventPic_Buizel, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_BuizelF[] = { + overworld_ascending_frames(gObjectEventPic_BuizelF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_Floatzel[] = { + overworld_ascending_frames(gObjectEventPic_Floatzel, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_FloatzelF[] = { + overworld_ascending_frames(gObjectEventPic_FloatzelF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +#endif //P_FAMILY_BUIZEL + +#if P_FAMILY_CHERUBI +static const struct SpriteFrameImage sPicTable_Cherubi[] = { + overworld_ascending_frames(gObjectEventPic_Cherubi, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_CherrimOvercast[] = { + overworld_ascending_frames(gObjectEventPic_CherrimOvercast, 4, 4), +}; +/*static const struct SpriteFrameImage sPicTable_CherrimSunshine[] = { + overworld_ascending_frames(gObjectEventPic_CherrimSunshine, 4, 4), +};*/ +#endif //P_FAMILY_CHERUBI + +#if P_FAMILY_SHELLOS +static const struct SpriteFrameImage sPicTable_ShellosWestSea[] = { + overworld_ascending_frames(gObjectEventPic_ShellosWestSea, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_ShellosEast[] = { + overworld_ascending_frames(gObjectEventPic_ShellosEast, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_GastrodonWestSea[] = { + overworld_ascending_frames(gObjectEventPic_GastrodonWestSea, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_GastrodonEast[] = { + overworld_ascending_frames(gObjectEventPic_GastrodonEast, 4, 4), +}; +#endif //P_FAMILY_SHELLOS + +#if P_FAMILY_DRIFLOON +static const struct SpriteFrameImage sPicTable_Drifloon[] = { + overworld_ascending_frames(gObjectEventPic_Drifloon, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Drifblim[] = { + overworld_ascending_frames(gObjectEventPic_Drifblim, 4, 4), +}; +#endif //P_FAMILY_DRIFLOON + +#if P_FAMILY_BUNEARY +static const struct SpriteFrameImage sPicTable_Buneary[] = { + overworld_ascending_frames(gObjectEventPic_Buneary, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Lopunny[] = { + overworld_ascending_frames(gObjectEventPic_Lopunny, 4, 4), +}; +#if P_MEGA_EVOLUTIONS +static const struct SpriteFrameImage sPicTable_LopunnyMega[] = { + overworld_ascending_frames(gObjectEventPic_LopunnyMega, 4, 4), +}; +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_BUNEARY + +#if P_FAMILY_GLAMEOW +static const struct SpriteFrameImage sPicTable_Glameow[] = { + overworld_ascending_frames(gObjectEventPic_Glameow, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Purugly[] = { + overworld_ascending_frames(gObjectEventPic_Purugly, 4, 4), +}; +#endif //P_FAMILY_GLAMEOW + +#if P_FAMILY_STUNKY +static const struct SpriteFrameImage sPicTable_Stunky[] = { + overworld_ascending_frames(gObjectEventPic_Stunky, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Skuntank[] = { + overworld_ascending_frames(gObjectEventPic_Skuntank, 4, 4), +}; +#endif //P_FAMILY_STUNKY + +#if P_FAMILY_BRONZOR +static const struct SpriteFrameImage sPicTable_Bronzor[] = { + overworld_ascending_frames(gObjectEventPic_Bronzor, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Bronzong[] = { + overworld_ascending_frames(gObjectEventPic_Bronzong, 4, 4), +}; +#endif //P_FAMILY_BRONZOR + +#if P_FAMILY_CHATOT +static const struct SpriteFrameImage sPicTable_Chatot[] = { + overworld_ascending_frames(gObjectEventPic_Chatot, 4, 4), +}; +#endif //P_FAMILY_CHATOT + +#if P_FAMILY_SPIRITOMB +static const struct SpriteFrameImage sPicTable_Spiritomb[] = { + overworld_ascending_frames(gObjectEventPic_Spiritomb, 4, 4), +}; +#endif //P_FAMILY_SPIRITOMB + +#if P_FAMILY_GIBLE +static const struct SpriteFrameImage sPicTable_Gible[] = { + overworld_ascending_frames(gObjectEventPic_Gible, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_GibleF[] = { + overworld_ascending_frames(gObjectEventPic_GibleF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_Gabite[] = { + overworld_ascending_frames(gObjectEventPic_Gabite, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_GabiteF[] = { + overworld_ascending_frames(gObjectEventPic_GabiteF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_Garchomp[] = { + overworld_ascending_frames(gObjectEventPic_Garchomp, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_GarchompF[] = { + overworld_ascending_frames(gObjectEventPic_GarchompF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +#if P_MEGA_EVOLUTIONS +static const struct SpriteFrameImage sPicTable_GarchompMega[] = { + overworld_ascending_frames(gObjectEventPic_GarchompMega, 4, 4), +}; +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_GIBLE + +#if P_FAMILY_RIOLU +static const struct SpriteFrameImage sPicTable_Riolu[] = { + overworld_ascending_frames(gObjectEventPic_Riolu, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Lucario[] = { + overworld_ascending_frames(gObjectEventPic_Lucario, 4, 4), +}; +#if P_MEGA_EVOLUTIONS +static const struct SpriteFrameImage sPicTable_LucarioMega[] = { + overworld_ascending_frames(gObjectEventPic_LucarioMega, 4, 4), +}; +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_RIOLU + +#if P_FAMILY_HIPPOPOTAS +static const struct SpriteFrameImage sPicTable_Hippopotas[] = { + overworld_ascending_frames(gObjectEventPic_Hippopotas, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_HippopotasF[] = { + overworld_ascending_frames(gObjectEventPic_HippopotasF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_Hippowdon[] = { + overworld_ascending_frames(gObjectEventPic_Hippowdon, 4, 4), +}; +#endif //P_FAMILY_HIPPOPOTAS + +#if P_FAMILY_SKORUPI +static const struct SpriteFrameImage sPicTable_Skorupi[] = { + overworld_ascending_frames(gObjectEventPic_Skorupi, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Drapion[] = { + overworld_ascending_frames(gObjectEventPic_Drapion, 4, 4), +}; +#endif //P_FAMILY_SKORUPI + +#if P_FAMILY_CROAGUNK +static const struct SpriteFrameImage sPicTable_Croagunk[] = { + overworld_ascending_frames(gObjectEventPic_Croagunk, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_CroagunkF[] = { + overworld_ascending_frames(gObjectEventPic_CroagunkF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_Toxicroak[] = { + overworld_ascending_frames(gObjectEventPic_Toxicroak, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_ToxicroakF[] = { + overworld_ascending_frames(gObjectEventPic_ToxicroakF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +#endif //P_FAMILY_CROAGUNK + +#if P_FAMILY_CARNIVINE +static const struct SpriteFrameImage sPicTable_Carnivine[] = { + overworld_ascending_frames(gObjectEventPic_Carnivine, 4, 4), +}; +#endif //P_FAMILY_CARNIVINE + +#if P_FAMILY_FINNEON +static const struct SpriteFrameImage sPicTable_Finneon[] = { + overworld_ascending_frames(gObjectEventPic_Finneon, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_FinneonF[] = { + overworld_ascending_frames(gObjectEventPic_FinneonF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_Lumineon[] = { + overworld_ascending_frames(gObjectEventPic_Lumineon, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_LumineonF[] = { + overworld_ascending_frames(gObjectEventPic_LumineonF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +#endif //P_FAMILY_FINNEON + +#if P_FAMILY_SNOVER +static const struct SpriteFrameImage sPicTable_Snover[] = { + overworld_ascending_frames(gObjectEventPic_Snover, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_SnoverF[] = { + overworld_ascending_frames(gObjectEventPic_SnoverF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_Abomasnow[] = { + overworld_ascending_frames(gObjectEventPic_Abomasnow, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_AbomasnowF[] = { + overworld_ascending_frames(gObjectEventPic_AbomasnowF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +#if P_MEGA_EVOLUTIONS +static const struct SpriteFrameImage sPicTable_AbomasnowMega[] = { + overworld_ascending_frames(gObjectEventPic_AbomasnowMega, 4, 4), +}; +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_SNOVER + +#if P_FAMILY_ROTOM +static const struct SpriteFrameImage sPicTable_Rotom[] = { + overworld_ascending_frames(gObjectEventPic_Rotom, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_RotomHeat[] = { + overworld_ascending_frames(gObjectEventPic_RotomHeat, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_RotomWash[] = { + overworld_ascending_frames(gObjectEventPic_RotomWash, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_RotomFrost[] = { + overworld_ascending_frames(gObjectEventPic_RotomFrost, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_RotomFan[] = { + overworld_ascending_frames(gObjectEventPic_RotomFan, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_RotomMow[] = { + overworld_ascending_frames(gObjectEventPic_RotomMow, 4, 4), +}; +#endif //P_FAMILY_ROTOM + +#if P_FAMILY_UXIE +static const struct SpriteFrameImage sPicTable_Uxie[] = { + overworld_ascending_frames(gObjectEventPic_Uxie, 4, 4), +}; +#endif //P_FAMILY_UXIE + +#if P_FAMILY_MESPRIT +static const struct SpriteFrameImage sPicTable_Mesprit[] = { + overworld_ascending_frames(gObjectEventPic_Mesprit, 4, 4), +}; +#endif //P_FAMILY_MESPRIT + +#if P_FAMILY_AZELF +static const struct SpriteFrameImage sPicTable_Azelf[] = { + overworld_ascending_frames(gObjectEventPic_Azelf, 4, 4), +}; +#endif //P_FAMILY_AZELF + +#if P_FAMILY_DIALGA +static const struct SpriteFrameImage sPicTable_Dialga[] = { + overworld_ascending_frames(gObjectEventPic_Dialga, 8, 8), +}; +static const struct SpriteFrameImage sPicTable_DialgaOrigin[] = { + overworld_ascending_frames(gObjectEventPic_DialgaOrigin, 8, 8), +}; +#endif //P_FAMILY_DIALGA + +#if P_FAMILY_PALKIA +static const struct SpriteFrameImage sPicTable_Palkia[] = { + overworld_ascending_frames(gObjectEventPic_Palkia, 8, 8), +}; +static const struct SpriteFrameImage sPicTable_PalkiaOrigin[] = { + overworld_ascending_frames(gObjectEventPic_PalkiaOrigin, 8, 8), +}; +#endif //P_FAMILY_PALKIA + +#if P_FAMILY_HEATRAN +static const struct SpriteFrameImage sPicTable_Heatran[] = { + overworld_ascending_frames(gObjectEventPic_Heatran, 4, 4), +}; +#endif //P_FAMILY_HEATRAN + +#if P_FAMILY_REGIGIGAS +static const struct SpriteFrameImage sPicTable_Regigigas[] = { + overworld_ascending_frames(gObjectEventPic_Regigigas, 8, 8), +}; +#endif //P_FAMILY_REGIGIGAS + +#if P_FAMILY_GIRATINA +static const struct SpriteFrameImage sPicTable_GiratinaAltered[] = { + overworld_ascending_frames(gObjectEventPic_GiratinaAltered, 8, 8), +}; +static const struct SpriteFrameImage sPicTable_GiratinaOrigin[] = { + overworld_ascending_frames(gObjectEventPic_GiratinaOrigin, 8, 8), +}; +#endif //P_FAMILY_GIRATINA + +#if P_FAMILY_CRESSELIA +static const struct SpriteFrameImage sPicTable_Cresselia[] = { + overworld_ascending_frames(gObjectEventPic_Cresselia, 4, 4), +}; +#endif //P_FAMILY_CRESSELIA + +#if P_FAMILY_MANAPHY +static const struct SpriteFrameImage sPicTable_Phione[] = { + overworld_ascending_frames(gObjectEventPic_Phione, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Manaphy[] = { + overworld_ascending_frames(gObjectEventPic_Manaphy, 4, 4), +}; +#endif //P_FAMILY_MANAPHY + +#if P_FAMILY_DARKRAI +static const struct SpriteFrameImage sPicTable_Darkrai[] = { + overworld_ascending_frames(gObjectEventPic_Darkrai, 4, 4), +}; +#endif //P_FAMILY_DARKRAI + +#if P_FAMILY_SHAYMIN +static const struct SpriteFrameImage sPicTable_ShayminLand[] = { + overworld_ascending_frames(gObjectEventPic_ShayminLand, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_ShayminSky[] = { + overworld_ascending_frames(gObjectEventPic_ShayminSky, 4, 4), +}; +#endif //P_FAMILY_SHAYMIN + +#if P_FAMILY_ARCEUS + +static const struct SpriteFrameImage sPicTable_ArceusNormal[] = { + overworld_ascending_frames(gObjectEventPic_ArceusNormal, 8, 8), +}; +static const struct SpriteFrameImage sPicTable_ArceusFighting[] = { + overworld_ascending_frames(gObjectEventPic_ArceusFighting, 8, 8), +}; +static const struct SpriteFrameImage sPicTable_ArceusFlying[] = { + overworld_ascending_frames(gObjectEventPic_ArceusFlying, 8, 8), +}; +static const struct SpriteFrameImage sPicTable_ArceusPoison[] = { + overworld_ascending_frames(gObjectEventPic_ArceusPoison, 8, 8), +}; +static const struct SpriteFrameImage sPicTable_ArceusGround[] = { + overworld_ascending_frames(gObjectEventPic_ArceusGround, 8, 8), +}; +static const struct SpriteFrameImage sPicTable_ArceusRock[] = { + overworld_ascending_frames(gObjectEventPic_ArceusRock, 8, 8), +}; +static const struct SpriteFrameImage sPicTable_ArceusBug[] = { + overworld_ascending_frames(gObjectEventPic_ArceusBug, 8, 8), +}; +static const struct SpriteFrameImage sPicTable_ArceusGhost[] = { + overworld_ascending_frames(gObjectEventPic_ArceusGhost, 8, 8), +}; +static const struct SpriteFrameImage sPicTable_ArceusSteel[] = { + overworld_ascending_frames(gObjectEventPic_ArceusSteel, 8, 8), +}; +static const struct SpriteFrameImage sPicTable_ArceusFire[] = { + overworld_ascending_frames(gObjectEventPic_ArceusFire, 8, 8), +}; +static const struct SpriteFrameImage sPicTable_ArceusWater[] = { + overworld_ascending_frames(gObjectEventPic_ArceusWater, 8, 8), +}; +static const struct SpriteFrameImage sPicTable_ArceusGrass[] = { + overworld_ascending_frames(gObjectEventPic_ArceusGrass, 8, 8), +}; +static const struct SpriteFrameImage sPicTable_ArceusElectric[] = { + overworld_ascending_frames(gObjectEventPic_ArceusElectric, 8, 8), +}; +static const struct SpriteFrameImage sPicTable_ArceusPsychic[] = { + overworld_ascending_frames(gObjectEventPic_ArceusPsychic, 8, 8), +}; +static const struct SpriteFrameImage sPicTable_ArceusIce[] = { + overworld_ascending_frames(gObjectEventPic_ArceusIce, 8, 8), +}; +static const struct SpriteFrameImage sPicTable_ArceusDragon[] = { + overworld_ascending_frames(gObjectEventPic_ArceusDragon, 8, 8), +}; +static const struct SpriteFrameImage sPicTable_ArceusDark[] = { + overworld_ascending_frames(gObjectEventPic_ArceusDark, 8, 8), +}; +static const struct SpriteFrameImage sPicTable_ArceusFairy[] = { + overworld_ascending_frames(gObjectEventPic_ArceusFairy, 8, 8), +}; +#endif //P_FAMILY_ARCEUS + +#if P_FAMILY_VICTINI +static const struct SpriteFrameImage sPicTable_Victini[] = { + overworld_ascending_frames(gObjectEventPic_Victini, 4, 4), +}; +#endif //P_FAMILY_VICTINI + +#if P_FAMILY_SNIVY +static const struct SpriteFrameImage sPicTable_Snivy[] = { + overworld_ascending_frames(gObjectEventPic_Snivy, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Servine[] = { + overworld_ascending_frames(gObjectEventPic_Servine, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Serperior[] = { + overworld_ascending_frames(gObjectEventPic_Serperior, 4, 4), +}; +#endif //P_FAMILY_SNIVY + +#if P_FAMILY_TEPIG +static const struct SpriteFrameImage sPicTable_Tepig[] = { + overworld_ascending_frames(gObjectEventPic_Tepig, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Pignite[] = { + overworld_ascending_frames(gObjectEventPic_Pignite, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Emboar[] = { + overworld_ascending_frames(gObjectEventPic_Emboar, 4, 4), +}; +#endif //P_FAMILY_TEPIG + +#if P_FAMILY_OSHAWOTT +static const struct SpriteFrameImage sPicTable_Oshawott[] = { + overworld_ascending_frames(gObjectEventPic_Oshawott, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Dewott[] = { + overworld_ascending_frames(gObjectEventPic_Dewott, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Samurott[] = { + overworld_ascending_frames(gObjectEventPic_Samurott, 4, 4), +}; +#if P_HISUIAN_FORMS +static const struct SpriteFrameImage sPicTable_SamurottHisui[] = { + overworld_ascending_frames(gObjectEventPic_SamurottHisui, 4, 4), +}; +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_OSHAWOTT + +#if P_FAMILY_PATRAT +static const struct SpriteFrameImage sPicTable_Patrat[] = { + overworld_ascending_frames(gObjectEventPic_Patrat, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Watchog[] = { + overworld_ascending_frames(gObjectEventPic_Watchog, 4, 4), +}; +#endif //P_FAMILY_PATRAT + +#if P_FAMILY_LILLIPUP +static const struct SpriteFrameImage sPicTable_Lillipup[] = { + overworld_ascending_frames(gObjectEventPic_Lillipup, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Herdier[] = { + overworld_ascending_frames(gObjectEventPic_Herdier, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Stoutland[] = { + overworld_ascending_frames(gObjectEventPic_Stoutland, 4, 4), +}; +#endif //P_FAMILY_LILLIPUP + +#if P_FAMILY_PURRLOIN +static const struct SpriteFrameImage sPicTable_Purrloin[] = { + overworld_ascending_frames(gObjectEventPic_Purrloin, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Liepard[] = { + overworld_ascending_frames(gObjectEventPic_Liepard, 4, 4), +}; +#endif //P_FAMILY_PURRLOIN + +#if P_FAMILY_PANSAGE +static const struct SpriteFrameImage sPicTable_Pansage[] = { + overworld_ascending_frames(gObjectEventPic_Pansage, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Simisage[] = { + overworld_ascending_frames(gObjectEventPic_Simisage, 4, 4), +}; +#endif //P_FAMILY_PANSAGE + +#if P_FAMILY_PANSEAR +static const struct SpriteFrameImage sPicTable_Pansear[] = { + overworld_ascending_frames(gObjectEventPic_Pansear, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Simisear[] = { + overworld_ascending_frames(gObjectEventPic_Simisear, 4, 4), +}; +#endif //P_FAMILY_PANSEAR + +#if P_FAMILY_PANPOUR +static const struct SpriteFrameImage sPicTable_Panpour[] = { + overworld_ascending_frames(gObjectEventPic_Panpour, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Simipour[] = { + overworld_ascending_frames(gObjectEventPic_Simipour, 4, 4), +}; +#endif //P_FAMILY_PANPOUR + +#if P_FAMILY_MUNNA +static const struct SpriteFrameImage sPicTable_Munna[] = { + overworld_ascending_frames(gObjectEventPic_Munna, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Musharna[] = { + overworld_ascending_frames(gObjectEventPic_Musharna, 4, 4), +}; +#endif //P_FAMILY_MUNNA + +#if P_FAMILY_PIDOVE +static const struct SpriteFrameImage sPicTable_Pidove[] = { + overworld_ascending_frames(gObjectEventPic_Pidove, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Tranquill[] = { + overworld_ascending_frames(gObjectEventPic_Tranquill, 4, 4), +}; + +static const struct SpriteFrameImage sPicTable_Unfezant[] = { + overworld_ascending_frames(gObjectEventPic_Unfezant, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_UnfezantF[] = { + overworld_ascending_frames(gObjectEventPic_UnfezantF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +#endif //P_FAMILY_PIDOVE + +#if P_FAMILY_BLITZLE +static const struct SpriteFrameImage sPicTable_Blitzle[] = { + overworld_ascending_frames(gObjectEventPic_Blitzle, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Zebstrika[] = { + overworld_ascending_frames(gObjectEventPic_Zebstrika, 4, 4), +}; +#endif //P_FAMILY_BLITZLE + +#if P_FAMILY_ROGGENROLA +static const struct SpriteFrameImage sPicTable_Roggenrola[] = { + overworld_ascending_frames(gObjectEventPic_Roggenrola, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Boldore[] = { + overworld_ascending_frames(gObjectEventPic_Boldore, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Gigalith[] = { + overworld_ascending_frames(gObjectEventPic_Gigalith, 4, 4), +}; +#endif //P_FAMILY_ROGGENROLA + +#if P_FAMILY_WOOBAT +static const struct SpriteFrameImage sPicTable_Woobat[] = { + overworld_ascending_frames(gObjectEventPic_Woobat, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Swoobat[] = { + overworld_ascending_frames(gObjectEventPic_Swoobat, 4, 4), +}; +#endif //P_FAMILY_WOOBAT + +#if P_FAMILY_DRILBUR +static const struct SpriteFrameImage sPicTable_Drilbur[] = { + overworld_ascending_frames(gObjectEventPic_Drilbur, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Excadrill[] = { + overworld_ascending_frames(gObjectEventPic_Excadrill, 4, 4), +}; +#endif //P_FAMILY_DRILBUR + +#if P_FAMILY_AUDINO +static const struct SpriteFrameImage sPicTable_Audino[] = { + overworld_ascending_frames(gObjectEventPic_Audino, 4, 4), +}; +#if P_MEGA_EVOLUTIONS +static const struct SpriteFrameImage sPicTable_AudinoMega[] = { + overworld_ascending_frames(gObjectEventPic_AudinoMega, 4, 4), +}; +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_AUDINO + +#if P_FAMILY_TIMBURR +static const struct SpriteFrameImage sPicTable_Timburr[] = { + overworld_ascending_frames(gObjectEventPic_Timburr, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Gurdurr[] = { + overworld_ascending_frames(gObjectEventPic_Gurdurr, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Conkeldurr[] = { + overworld_ascending_frames(gObjectEventPic_Conkeldurr, 4, 4), +}; +#endif //P_FAMILY_TIMBURR + +#if P_FAMILY_TYMPOLE +static const struct SpriteFrameImage sPicTable_Tympole[] = { + overworld_ascending_frames(gObjectEventPic_Tympole, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Palpitoad[] = { + overworld_ascending_frames(gObjectEventPic_Palpitoad, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Seismitoad[] = { + overworld_ascending_frames(gObjectEventPic_Seismitoad, 4, 4), +}; +#endif //P_FAMILY_TYMPOLE + +#if P_FAMILY_THROH +static const struct SpriteFrameImage sPicTable_Throh[] = { + overworld_ascending_frames(gObjectEventPic_Throh, 4, 4), +}; +#endif //P_FAMILY_THROH + +#if P_FAMILY_SAWK +static const struct SpriteFrameImage sPicTable_Sawk[] = { + overworld_ascending_frames(gObjectEventPic_Sawk, 4, 4), +}; +#endif //P_FAMILY_SAWK + +#if P_FAMILY_SEWADDLE +static const struct SpriteFrameImage sPicTable_Sewaddle[] = { + overworld_ascending_frames(gObjectEventPic_Sewaddle, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Swadloon[] = { + overworld_ascending_frames(gObjectEventPic_Swadloon, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Leavanny[] = { + overworld_ascending_frames(gObjectEventPic_Leavanny, 4, 4), +}; +#endif //P_FAMILY_SEWADDLE + +#if P_FAMILY_VENIPEDE +static const struct SpriteFrameImage sPicTable_Venipede[] = { + overworld_ascending_frames(gObjectEventPic_Venipede, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Whirlipede[] = { + overworld_ascending_frames(gObjectEventPic_Whirlipede, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Scolipede[] = { + overworld_ascending_frames(gObjectEventPic_Scolipede, 4, 4), +}; +#endif //P_FAMILY_VENIPEDE + +#if P_FAMILY_COTTONEE +static const struct SpriteFrameImage sPicTable_Cottonee[] = { + overworld_ascending_frames(gObjectEventPic_Cottonee, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Whimsicott[] = { + overworld_ascending_frames(gObjectEventPic_Whimsicott, 4, 4), +}; +#endif //P_FAMILY_COTTONEE + +#if P_FAMILY_PETILIL +static const struct SpriteFrameImage sPicTable_Petilil[] = { + overworld_ascending_frames(gObjectEventPic_Petilil, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Lilligant[] = { + overworld_ascending_frames(gObjectEventPic_Lilligant, 4, 4), +}; +#if P_HISUIAN_FORMS +static const struct SpriteFrameImage sPicTable_LilligantHisui[] = { + overworld_ascending_frames(gObjectEventPic_LilligantHisui, 4, 4), +}; +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_PETILIL + +#if P_FAMILY_BASCULIN +static const struct SpriteFrameImage sPicTable_BasculinRedStriped[] = { + overworld_ascending_frames(gObjectEventPic_BasculinRedStriped, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_BasculinBlueStriped[] = { + overworld_ascending_frames(gObjectEventPic_BasculinBlueStriped, 4, 4), +}; +#if P_HISUIAN_FORMS +static const struct SpriteFrameImage sPicTable_BasculinWhiteStriped[] = { + overworld_ascending_frames(gObjectEventPic_BasculinWhiteStriped, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_BasculegionM[] = { + overworld_ascending_frames(gObjectEventPic_BasculegionM, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_BasculegionF[] = { + overworld_ascending_frames(gObjectEventPic_BasculegionF, 4, 4), +}; +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_BASCULIN + +#if P_FAMILY_SANDILE +static const struct SpriteFrameImage sPicTable_Sandile[] = { + overworld_ascending_frames(gObjectEventPic_Sandile, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Krokorok[] = { + overworld_ascending_frames(gObjectEventPic_Krokorok, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Krookodile[] = { + overworld_ascending_frames(gObjectEventPic_Krookodile, 4, 4), +}; +#endif //P_FAMILY_SANDILE + +#if P_FAMILY_DARUMAKA +static const struct SpriteFrameImage sPicTable_Darumaka[] = { + overworld_ascending_frames(gObjectEventPic_Darumaka, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_DarmanitanStandard[] = { + overworld_ascending_frames(gObjectEventPic_DarmanitanStandard, 4, 4), +}; +/*static const struct SpriteFrameImage sPicTable_DarmanitanZen[] = { + overworld_ascending_frames(gObjectEventPic_DarmanitanZen, 4, 4), +};*/ +#if P_GALARIAN_FORMS +static const struct SpriteFrameImage sPicTable_DarumakaGalar[] = { + overworld_ascending_frames(gObjectEventPic_DarumakaGalar, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_DarmanitanGalarStandard[] = { + overworld_ascending_frames(gObjectEventPic_DarmanitanGalarStandard, 4, 4), +}; +/*static const struct SpriteFrameImage sPicTable_DarmanitanGalarZen[] = { + overworld_ascending_frames(gObjectEventPic_DarmanitanGalarZen, 4, 4), +};*/ +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_DARUMAKA + +#if P_FAMILY_MARACTUS +static const struct SpriteFrameImage sPicTable_Maractus[] = { + overworld_ascending_frames(gObjectEventPic_Maractus, 4, 4), +}; +#endif //P_FAMILY_MARACTUS + +#if P_FAMILY_DWEBBLE +static const struct SpriteFrameImage sPicTable_Dwebble[] = { + overworld_ascending_frames(gObjectEventPic_Dwebble, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Crustle[] = { + overworld_ascending_frames(gObjectEventPic_Crustle, 4, 4), +}; +#endif //P_FAMILY_DWEBBLE + +#if P_FAMILY_SCRAGGY +static const struct SpriteFrameImage sPicTable_Scraggy[] = { + overworld_ascending_frames(gObjectEventPic_Scraggy, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Scrafty[] = { + overworld_ascending_frames(gObjectEventPic_Scrafty, 4, 4), +}; +#endif //P_FAMILY_SCRAGGY + +#if P_FAMILY_SIGILYPH +static const struct SpriteFrameImage sPicTable_Sigilyph[] = { + overworld_ascending_frames(gObjectEventPic_Sigilyph, 4, 4), +}; +#endif //P_FAMILY_SIGILYPH + +#if P_FAMILY_YAMASK +static const struct SpriteFrameImage sPicTable_Yamask[] = { + overworld_ascending_frames(gObjectEventPic_Yamask, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Cofagrigus[] = { + overworld_ascending_frames(gObjectEventPic_Cofagrigus, 4, 4), +}; +#if P_GALARIAN_FORMS +static const struct SpriteFrameImage sPicTable_YamaskGalar[] = { + overworld_ascending_frames(gObjectEventPic_YamaskGalar, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Runerigus[] = { + overworld_ascending_frames(gObjectEventPic_Runerigus, 4, 4), +}; +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_YAMASK + +#if P_FAMILY_TIRTOUGA +static const struct SpriteFrameImage sPicTable_Tirtouga[] = { + overworld_ascending_frames(gObjectEventPic_Tirtouga, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Carracosta[] = { + overworld_ascending_frames(gObjectEventPic_Carracosta, 4, 4), +}; +#endif //P_FAMILY_TIRTOUGA + +#if P_FAMILY_ARCHEN +static const struct SpriteFrameImage sPicTable_Archen[] = { + overworld_ascending_frames(gObjectEventPic_Archen, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Archeops[] = { + overworld_ascending_frames(gObjectEventPic_Archeops, 4, 4), +}; +#endif //P_FAMILY_ARCHEN + +#if P_FAMILY_TRUBBISH +static const struct SpriteFrameImage sPicTable_Trubbish[] = { + overworld_ascending_frames(gObjectEventPic_Trubbish, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Garbodor[] = { + overworld_ascending_frames(gObjectEventPic_Garbodor, 4, 4), +}; +#if P_GIGANTAMAX_FORMS +/*static const struct SpriteFrameImage sPicTable_GarbodorGmax[] = { + overworld_ascending_frames(gObjectEventPic_GarbodorGmax, 4, 4), +};*/ +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_TRUBBISH + +#if P_FAMILY_ZORUA +static const struct SpriteFrameImage sPicTable_Zorua[] = { + overworld_ascending_frames(gObjectEventPic_Zorua, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Zoroark[] = { + overworld_ascending_frames(gObjectEventPic_Zoroark, 4, 4), +}; +#if P_HISUIAN_FORMS +static const struct SpriteFrameImage sPicTable_ZoruaHisui[] = { + overworld_ascending_frames(gObjectEventPic_ZoruaHisui, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_ZoroarkHisui[] = { + overworld_ascending_frames(gObjectEventPic_ZoroarkHisui, 4, 4), +}; +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_ZORUA + +#if P_FAMILY_MINCCINO +static const struct SpriteFrameImage sPicTable_Minccino[] = { + overworld_ascending_frames(gObjectEventPic_Minccino, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Cinccino[] = { + overworld_ascending_frames(gObjectEventPic_Cinccino, 4, 4), +}; +#endif //P_FAMILY_MINCCINO + +#if P_FAMILY_GOTHITA +static const struct SpriteFrameImage sPicTable_Gothita[] = { + overworld_ascending_frames(gObjectEventPic_Gothita, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Gothorita[] = { + overworld_ascending_frames(gObjectEventPic_Gothorita, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Gothitelle[] = { + overworld_ascending_frames(gObjectEventPic_Gothitelle, 4, 4), +}; +#endif //P_FAMILY_GOTHITA + +#if P_FAMILY_SOLOSIS +static const struct SpriteFrameImage sPicTable_Solosis[] = { + overworld_ascending_frames(gObjectEventPic_Solosis, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Duosion[] = { + overworld_ascending_frames(gObjectEventPic_Duosion, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Reuniclus[] = { + overworld_ascending_frames(gObjectEventPic_Reuniclus, 4, 4), +}; +#endif //P_FAMILY_SOLOSIS + +#if P_FAMILY_DUCKLETT +static const struct SpriteFrameImage sPicTable_Ducklett[] = { + overworld_ascending_frames(gObjectEventPic_Ducklett, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Swanna[] = { + overworld_ascending_frames(gObjectEventPic_Swanna, 4, 4), +}; +#endif //P_FAMILY_DUCKLETT + +#if P_FAMILY_VANILLITE +static const struct SpriteFrameImage sPicTable_Vanillite[] = { + overworld_ascending_frames(gObjectEventPic_Vanillite, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Vanillish[] = { + overworld_ascending_frames(gObjectEventPic_Vanillish, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Vanilluxe[] = { + overworld_ascending_frames(gObjectEventPic_Vanilluxe, 4, 4), +}; +#endif //P_FAMILY_VANILLITE + +#if P_FAMILY_DEERLING + +static const struct SpriteFrameImage sPicTable_DeerlingSpring[] = { + overworld_ascending_frames(gObjectEventPic_DeerlingSpring, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_DeerlingSummer[] = { + overworld_ascending_frames(gObjectEventPic_DeerlingSummer, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_DeerlingAutumn[] = { + overworld_ascending_frames(gObjectEventPic_DeerlingAutumn, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_DeerlingWinter[] = { + overworld_ascending_frames(gObjectEventPic_DeerlingWinter, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_SawsbuckSpring[] = { + overworld_ascending_frames(gObjectEventPic_SawsbuckSpring, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_SawsbuckSummer[] = { + overworld_ascending_frames(gObjectEventPic_SawsbuckSummer, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_SawsbuckAutumn[] = { + overworld_ascending_frames(gObjectEventPic_SawsbuckAutumn, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_SawsbuckWinter[] = { + overworld_ascending_frames(gObjectEventPic_SawsbuckWinter, 4, 4), +}; +#endif //P_FAMILY_DEERLING + +#if P_FAMILY_EMOLGA +static const struct SpriteFrameImage sPicTable_Emolga[] = { + overworld_ascending_frames(gObjectEventPic_Emolga, 4, 4), +}; +#endif //P_FAMILY_EMOLGA + +#if P_FAMILY_KARRABLAST +static const struct SpriteFrameImage sPicTable_Karrablast[] = { + overworld_ascending_frames(gObjectEventPic_Karrablast, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Escavalier[] = { + overworld_ascending_frames(gObjectEventPic_Escavalier, 4, 4), +}; +#endif //P_FAMILY_KARRABLAST + +#if P_FAMILY_FOONGUS +static const struct SpriteFrameImage sPicTable_Foongus[] = { + overworld_ascending_frames(gObjectEventPic_Foongus, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Amoonguss[] = { + overworld_ascending_frames(gObjectEventPic_Amoonguss, 4, 4), +}; +#endif //P_FAMILY_FOONGUS + +#if P_FAMILY_FRILLISH +static const struct SpriteFrameImage sPicTable_Frillish[] = { + overworld_ascending_frames(gObjectEventPic_Frillish, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_FrillishF[] = { + overworld_ascending_frames(gObjectEventPic_FrillishF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_Jellicent[] = { + overworld_ascending_frames(gObjectEventPic_Jellicent, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_JellicentF[] = { + overworld_ascending_frames(gObjectEventPic_JellicentF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +#endif //P_FAMILY_FRILLISH + +#if P_FAMILY_ALOMOMOLA +static const struct SpriteFrameImage sPicTable_Alomomola[] = { + overworld_ascending_frames(gObjectEventPic_Alomomola, 4, 4), +}; +#endif //P_FAMILY_ALOMOMOLA + +#if P_FAMILY_JOLTIK +static const struct SpriteFrameImage sPicTable_Joltik[] = { + overworld_ascending_frames(gObjectEventPic_Joltik, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Galvantula[] = { + overworld_ascending_frames(gObjectEventPic_Galvantula, 4, 4), +}; +#endif //P_FAMILY_JOLTIK + +#if P_FAMILY_FERROSEED +static const struct SpriteFrameImage sPicTable_Ferroseed[] = { + overworld_ascending_frames(gObjectEventPic_Ferroseed, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Ferrothorn[] = { + overworld_ascending_frames(gObjectEventPic_Ferrothorn, 4, 4), +}; +#endif //P_FAMILY_FERROSEED + +#if P_FAMILY_KLINK +static const struct SpriteFrameImage sPicTable_Klink[] = { + overworld_ascending_frames(gObjectEventPic_Klink, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Klang[] = { + overworld_ascending_frames(gObjectEventPic_Klang, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Klinklang[] = { + overworld_ascending_frames(gObjectEventPic_Klinklang, 4, 4), +}; +#endif //P_FAMILY_KLINK + +#if P_FAMILY_TYNAMO +static const struct SpriteFrameImage sPicTable_Tynamo[] = { + overworld_ascending_frames(gObjectEventPic_Tynamo, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Eelektrik[] = { + overworld_ascending_frames(gObjectEventPic_Eelektrik, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Eelektross[] = { + overworld_ascending_frames(gObjectEventPic_Eelektross, 4, 4), +}; +#endif //P_FAMILY_TYNAMO + +#if P_FAMILY_ELGYEM +static const struct SpriteFrameImage sPicTable_Elgyem[] = { + overworld_ascending_frames(gObjectEventPic_Elgyem, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Beheeyem[] = { + overworld_ascending_frames(gObjectEventPic_Beheeyem, 4, 4), +}; +#endif //P_FAMILY_ELGYEM + +#if P_FAMILY_LITWICK +static const struct SpriteFrameImage sPicTable_Litwick[] = { + overworld_ascending_frames(gObjectEventPic_Litwick, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Lampent[] = { + overworld_ascending_frames(gObjectEventPic_Lampent, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Chandelure[] = { + overworld_ascending_frames(gObjectEventPic_Chandelure, 4, 4), +}; +#endif //P_FAMILY_LITWICK + +#if P_FAMILY_AXEW +static const struct SpriteFrameImage sPicTable_Axew[] = { + overworld_ascending_frames(gObjectEventPic_Axew, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Fraxure[] = { + overworld_ascending_frames(gObjectEventPic_Fraxure, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Haxorus[] = { + overworld_ascending_frames(gObjectEventPic_Haxorus, 4, 4), +}; +#endif //P_FAMILY_AXEW + +#if P_FAMILY_CUBCHOO +static const struct SpriteFrameImage sPicTable_Cubchoo[] = { + overworld_ascending_frames(gObjectEventPic_Cubchoo, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Beartic[] = { + overworld_ascending_frames(gObjectEventPic_Beartic, 4, 4), +}; +#endif //P_FAMILY_CUBCHOO + +#if P_FAMILY_CRYOGONAL +static const struct SpriteFrameImage sPicTable_Cryogonal[] = { + overworld_ascending_frames(gObjectEventPic_Cryogonal, 4, 4), +}; +#endif //P_FAMILY_CRYOGONAL + +#if P_FAMILY_SHELMET +static const struct SpriteFrameImage sPicTable_Shelmet[] = { + overworld_ascending_frames(gObjectEventPic_Shelmet, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Accelgor[] = { + overworld_ascending_frames(gObjectEventPic_Accelgor, 4, 4), +}; +#endif //P_FAMILY_SHELMET + +#if P_FAMILY_STUNFISK +static const struct SpriteFrameImage sPicTable_Stunfisk[] = { + overworld_ascending_frames(gObjectEventPic_Stunfisk, 4, 4), +}; +#if P_GALARIAN_FORMS +static const struct SpriteFrameImage sPicTable_StunfiskGalar[] = { + overworld_ascending_frames(gObjectEventPic_StunfiskGalar, 4, 4), +}; +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_STUNFISK + +#if P_FAMILY_MIENFOO +static const struct SpriteFrameImage sPicTable_Mienfoo[] = { + overworld_ascending_frames(gObjectEventPic_Mienfoo, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Mienshao[] = { + overworld_ascending_frames(gObjectEventPic_Mienshao, 4, 4), +}; +#endif //P_FAMILY_MIENFOO + +#if P_FAMILY_DRUDDIGON +static const struct SpriteFrameImage sPicTable_Druddigon[] = { + overworld_ascending_frames(gObjectEventPic_Druddigon, 4, 4), +}; +#endif //P_FAMILY_DRUDDIGON + +#if P_FAMILY_GOLETT +static const struct SpriteFrameImage sPicTable_Golett[] = { + overworld_ascending_frames(gObjectEventPic_Golett, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Golurk[] = { + overworld_ascending_frames(gObjectEventPic_Golurk, 4, 4), +}; +#endif //P_FAMILY_GOLETT + +#if P_FAMILY_PAWNIARD +static const struct SpriteFrameImage sPicTable_Pawniard[] = { + overworld_ascending_frames(gObjectEventPic_Pawniard, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Bisharp[] = { + overworld_ascending_frames(gObjectEventPic_Bisharp, 4, 4), +}; +#if P_GEN_9_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Kingambit[] = { + overworld_ascending_frames(gObjectEventPic_Kingambit, 8, 8), +}; +#endif //P_GEN_9_CROSS_EVOS +#endif //P_FAMILY_PAWNIARD + +#if P_FAMILY_BOUFFALANT +static const struct SpriteFrameImage sPicTable_Bouffalant[] = { + overworld_ascending_frames(gObjectEventPic_Bouffalant, 4, 4), +}; +#endif //P_FAMILY_BOUFFALANT + +#if P_FAMILY_RUFFLET +static const struct SpriteFrameImage sPicTable_Rufflet[] = { + overworld_ascending_frames(gObjectEventPic_Rufflet, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Braviary[] = { + overworld_ascending_frames(gObjectEventPic_Braviary, 4, 4), +}; +#if P_HISUIAN_FORMS +static const struct SpriteFrameImage sPicTable_BraviaryHisui[] = { + overworld_ascending_frames(gObjectEventPic_BraviaryHisui, 4, 4), +}; +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_RUFFLET + +#if P_FAMILY_VULLABY +static const struct SpriteFrameImage sPicTable_Vullaby[] = { + overworld_ascending_frames(gObjectEventPic_Vullaby, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Mandibuzz[] = { + overworld_ascending_frames(gObjectEventPic_Mandibuzz, 4, 4), +}; +#endif //P_FAMILY_VULLABY + +#if P_FAMILY_HEATMOR +static const struct SpriteFrameImage sPicTable_Heatmor[] = { + overworld_ascending_frames(gObjectEventPic_Heatmor, 4, 4), +}; +#endif //P_FAMILY_HEATMOR + +#if P_FAMILY_DURANT +static const struct SpriteFrameImage sPicTable_Durant[] = { + overworld_ascending_frames(gObjectEventPic_Durant, 4, 4), +}; +#endif //P_FAMILY_DURANT + +#if P_FAMILY_DEINO +static const struct SpriteFrameImage sPicTable_Deino[] = { + overworld_ascending_frames(gObjectEventPic_Deino, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Zweilous[] = { + overworld_ascending_frames(gObjectEventPic_Zweilous, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Hydreigon[] = { + overworld_ascending_frames(gObjectEventPic_Hydreigon, 4, 4), +}; +#endif //P_FAMILY_DEINO + +#if P_FAMILY_LARVESTA +static const struct SpriteFrameImage sPicTable_Larvesta[] = { + overworld_ascending_frames(gObjectEventPic_Larvesta, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Volcarona[] = { + overworld_ascending_frames(gObjectEventPic_Volcarona, 4, 4), +}; +#endif //P_FAMILY_LARVESTA + +#if P_FAMILY_COBALION +static const struct SpriteFrameImage sPicTable_Cobalion[] = { + overworld_ascending_frames(gObjectEventPic_Cobalion, 4, 4), +}; +#endif //P_FAMILY_COBALION + +#if P_FAMILY_TERRAKION +static const struct SpriteFrameImage sPicTable_Terrakion[] = { + overworld_ascending_frames(gObjectEventPic_Terrakion, 4, 4), +}; +#endif //P_FAMILY_TERRAKION + +#if P_FAMILY_VIRIZION +static const struct SpriteFrameImage sPicTable_Virizion[] = { + overworld_ascending_frames(gObjectEventPic_Virizion, 4, 4), +}; +#endif //P_FAMILY_VIRIZION + +#if P_FAMILY_TORNADUS + +static const struct SpriteFrameImage sPicTable_TornadusIncarnate[] = { + overworld_ascending_frames(gObjectEventPic_TornadusIncarnate, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_TornadusTherian[] = { + overworld_ascending_frames(gObjectEventPic_TornadusTherian, 8, 8), +}; +#endif //P_FAMILY_TORNADUS + +#if P_FAMILY_THUNDURUS + +static const struct SpriteFrameImage sPicTable_ThundurusIncarnate[] = { + overworld_ascending_frames(gObjectEventPic_ThundurusIncarnate, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_ThundurusTherian[] = { + overworld_ascending_frames(gObjectEventPic_ThundurusTherian, 8, 8), +}; +#endif //P_FAMILY_THUNDURUS + +#if P_FAMILY_RESHIRAM +static const struct SpriteFrameImage sPicTable_Reshiram[] = { + overworld_ascending_frames(gObjectEventPic_Reshiram, 8, 8), +}; +#endif //P_FAMILY_RESHIRAM + +#if P_FAMILY_ZEKROM +static const struct SpriteFrameImage sPicTable_Zekrom[] = { + overworld_ascending_frames(gObjectEventPic_Zekrom, 8, 8), +}; +#endif //P_FAMILY_ZEKROM + +#if P_FAMILY_LANDORUS + +static const struct SpriteFrameImage sPicTable_LandorusIncarnate[] = { + overworld_ascending_frames(gObjectEventPic_LandorusIncarnate, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_LandorusTherian[] = { + overworld_ascending_frames(gObjectEventPic_LandorusTherian, 4, 4), +}; +#endif //P_FAMILY_LANDORUS + +#if P_FAMILY_ENAMORUS +static const struct SpriteFrameImage sPicTable_EnamorusIncarnate[] = { + overworld_ascending_frames(gObjectEventPic_EnamorusIncarnate, 8, 8), +}; +static const struct SpriteFrameImage sPicTable_EnamorusTherian[] = { + overworld_ascending_frames(gObjectEventPic_EnamorusTherian, 8, 8), +}; +#endif //P_FAMILY_ENAMORUS + +#if P_FAMILY_KYUREM +static const struct SpriteFrameImage sPicTable_Kyurem[] = { + overworld_ascending_frames(gObjectEventPic_Kyurem, 8, 8), +}; +#if P_FUSION_FORMS +static const struct SpriteFrameImage sPicTable_KyuremWhite[] = { + overworld_ascending_frames(gObjectEventPic_KyuremWhite, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_KyuremBlack[] = { + overworld_ascending_frames(gObjectEventPic_KyuremBlack, 4, 4), +}; +#endif //P_FUSION_FORMS +#endif //P_FAMILY_KYUREM + +#if P_FAMILY_KELDEO +static const struct SpriteFrameImage sPicTable_KeldeoOrdinary[] = { + overworld_ascending_frames(gObjectEventPic_KeldeoOrdinary, 4, 4), +}; +/*static const struct SpriteFrameImage sPicTable_KeldeoResolute[] = { + overworld_ascending_frames(gObjectEventPic_KeldeoResolute, 4, 4), +};*/ +#endif //P_FAMILY_KELDEO + +#if P_FAMILY_MELOETTA +static const struct SpriteFrameImage sPicTable_MeloettaAria[] = { + overworld_ascending_frames(gObjectEventPic_MeloettaAria, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_MeloettaPirouette[] = { + overworld_ascending_frames(gObjectEventPic_MeloettaPirouette, 4, 4), +}; +#endif //P_FAMILY_MELOETTA + +#if P_FAMILY_GENESECT +static const struct SpriteFrameImage sPicTable_Genesect[] = { + overworld_ascending_frames(gObjectEventPic_Genesect, 4, 4), +}; + + + + +#endif //P_FAMILY_GENESECT + +#if P_FAMILY_CHESPIN +static const struct SpriteFrameImage sPicTable_Chespin[] = { + overworld_ascending_frames(gObjectEventPic_Chespin, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Quilladin[] = { + overworld_ascending_frames(gObjectEventPic_Quilladin, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Chesnaught[] = { + overworld_ascending_frames(gObjectEventPic_Chesnaught, 4, 4), +}; +#endif //P_FAMILY_CHESPIN + +#if P_FAMILY_FENNEKIN +static const struct SpriteFrameImage sPicTable_Fennekin[] = { + overworld_ascending_frames(gObjectEventPic_Fennekin, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Braixen[] = { + overworld_ascending_frames(gObjectEventPic_Braixen, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Delphox[] = { + overworld_ascending_frames(gObjectEventPic_Delphox, 4, 4), +}; +#endif //P_FAMILY_FENNEKIN + +#if P_FAMILY_FROAKIE +static const struct SpriteFrameImage sPicTable_Froakie[] = { + overworld_ascending_frames(gObjectEventPic_Froakie, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Frogadier[] = { + overworld_ascending_frames(gObjectEventPic_Frogadier, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Greninja[] = { + overworld_ascending_frames(gObjectEventPic_Greninja, 4, 4), +}; +/*static const struct SpriteFrameImage sPicTable_GreninjaAsh[] = { + overworld_ascending_frames(gObjectEventPic_GreninjaAsh, 4, 4), +};*/ +#endif //P_FAMILY_FROAKIE + +#if P_FAMILY_BUNNELBY +static const struct SpriteFrameImage sPicTable_Bunnelby[] = { + overworld_ascending_frames(gObjectEventPic_Bunnelby, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Diggersby[] = { + overworld_ascending_frames(gObjectEventPic_Diggersby, 4, 4), +}; +#endif //P_FAMILY_BUNNELBY + +#if P_FAMILY_FLETCHLING +static const struct SpriteFrameImage sPicTable_Fletchling[] = { + overworld_ascending_frames(gObjectEventPic_Fletchling, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Fletchinder[] = { + overworld_ascending_frames(gObjectEventPic_Fletchinder, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Talonflame[] = { + overworld_ascending_frames(gObjectEventPic_Talonflame, 4, 4), +}; +#endif //P_FAMILY_FLETCHLING + +#if P_FAMILY_SCATTERBUG +static const struct SpriteFrameImage sPicTable_Scatterbug[] = { + overworld_ascending_frames(gObjectEventPic_Scatterbug, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Spewpa[] = { + overworld_ascending_frames(gObjectEventPic_Spewpa, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_VivillonIcySnow[] = { + overworld_ascending_frames(gObjectEventPic_VivillonIcySnow, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_VivillonPolar[] = { + overworld_ascending_frames(gObjectEventPic_VivillonPolar, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_VivillonTundra[] = { + overworld_ascending_frames(gObjectEventPic_VivillonTundra, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_VivillonContinental[] = { + overworld_ascending_frames(gObjectEventPic_VivillonContinental, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_VivillonGarden[] = { + overworld_ascending_frames(gObjectEventPic_VivillonGarden, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_VivillonElegant[] = { + overworld_ascending_frames(gObjectEventPic_VivillonElegant, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_VivillonMeadow[] = { + overworld_ascending_frames(gObjectEventPic_VivillonMeadow, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_VivillonModern[] = { + overworld_ascending_frames(gObjectEventPic_VivillonModern, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_VivillonMarine[] = { + overworld_ascending_frames(gObjectEventPic_VivillonMarine, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_VivillonArchipelago[] = { + overworld_ascending_frames(gObjectEventPic_VivillonArchipelago, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_VivillonHighPlains[] = { + overworld_ascending_frames(gObjectEventPic_VivillonHighPlains, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_VivillonSandstorm[] = { + overworld_ascending_frames(gObjectEventPic_VivillonSandstorm, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_VivillonRiver[] = { + overworld_ascending_frames(gObjectEventPic_VivillonRiver, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_VivillonMonsoon[] = { + overworld_ascending_frames(gObjectEventPic_VivillonMonsoon, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_VivillonSavanna[] = { + overworld_ascending_frames(gObjectEventPic_VivillonSavanna, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_VivillonSun[] = { + overworld_ascending_frames(gObjectEventPic_VivillonSun, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_VivillonOcean[] = { + overworld_ascending_frames(gObjectEventPic_VivillonOcean, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_VivillonJungle[] = { + overworld_ascending_frames(gObjectEventPic_VivillonJungle, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_VivillonFancy[] = { + overworld_ascending_frames(gObjectEventPic_VivillonFancy, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_VivillonPokeBall[] = { + overworld_ascending_frames(gObjectEventPic_VivillonPokeBall, 4, 4), +}; +#endif //P_FAMILY_SCATTERBUG + +#if P_FAMILY_LITLEO +static const struct SpriteFrameImage sPicTable_Litleo[] = { + overworld_ascending_frames(gObjectEventPic_Litleo, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Pyroar[] = { + overworld_ascending_frames(gObjectEventPic_Pyroar, 4, 4), +}; +#if P_GENDER_DIFFERENCES +static const struct SpriteFrameImage sPicTable_PyroarF[] = { + overworld_ascending_frames(gObjectEventPic_PyroarF, 4, 4), +}; +#endif //P_GENDER_DIFFERENCES +#endif //P_FAMILY_LITLEO + +#if P_FAMILY_FLABEBE + +static const struct SpriteFrameImage sPicTable_FlabebeRed[] = { + overworld_ascending_frames(gObjectEventPic_FlabebeRed, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_FlabebeYellow[] = { + overworld_ascending_frames(gObjectEventPic_FlabebeYellow, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_FlabebeOrange[] = { + overworld_ascending_frames(gObjectEventPic_FlabebeOrange, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_FlabebeBlue[] = { + overworld_ascending_frames(gObjectEventPic_FlabebeBlue, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_FlabebeWhite[] = { + overworld_ascending_frames(gObjectEventPic_FlabebeWhite, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_FloetteRed[] = { + overworld_ascending_frames(gObjectEventPic_FloetteRed, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_FloetteYellow[] = { + overworld_ascending_frames(gObjectEventPic_FloetteYellow, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_FloetteOrange[] = { + overworld_ascending_frames(gObjectEventPic_FloetteOrange, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_FloetteBlue[] = { + overworld_ascending_frames(gObjectEventPic_FloetteBlue, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_FloetteWhite[] = { + overworld_ascending_frames(gObjectEventPic_FloetteWhite, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_FloetteEternal[] = { + overworld_ascending_frames(gObjectEventPic_FloetteEternal, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_FlorgesRed[] = { + overworld_ascending_frames(gObjectEventPic_FlorgesRed, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_FlorgesYellow[] = { + overworld_ascending_frames(gObjectEventPic_FlorgesYellow, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_FlorgesOrange[] = { + overworld_ascending_frames(gObjectEventPic_FlorgesOrange, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_FlorgesBlue[] = { + overworld_ascending_frames(gObjectEventPic_FlorgesBlue, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_FlorgesWhite[] = { + overworld_ascending_frames(gObjectEventPic_FlorgesWhite, 4, 4), +}; +#endif //P_FAMILY_FLABEBE + +#if P_FAMILY_SKIDDO +static const struct SpriteFrameImage sPicTable_Skiddo[] = { + overworld_ascending_frames(gObjectEventPic_Skiddo, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Gogoat[] = { + overworld_ascending_frames(gObjectEventPic_Gogoat, 4, 4), +}; +#endif //P_FAMILY_SKIDDO + +#if P_FAMILY_PANCHAM +static const struct SpriteFrameImage sPicTable_Pancham[] = { + overworld_ascending_frames(gObjectEventPic_Pancham, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Pangoro[] = { + overworld_ascending_frames(gObjectEventPic_Pangoro, 4, 4), +}; +#endif //P_FAMILY_PANCHAM + +#if P_FAMILY_FURFROU +static const struct SpriteFrameImage sPicTable_FurfrouNatural[] = { + overworld_ascending_frames(gObjectEventPic_FurfrouNatural, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_FurfrouHeart[] = { + overworld_ascending_frames(gObjectEventPic_FurfrouHeart, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_FurfrouStar[] = { + overworld_ascending_frames(gObjectEventPic_FurfrouStar, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_FurfrouDiamond[] = { + overworld_ascending_frames(gObjectEventPic_FurfrouDiamond, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_FurfrouDebutante[] = { + overworld_ascending_frames(gObjectEventPic_FurfrouDebutante, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_FurfrouMatron[] = { + overworld_ascending_frames(gObjectEventPic_FurfrouMatron, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_FurfrouDandy[] = { + overworld_ascending_frames(gObjectEventPic_FurfrouDandy, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_FurfrouLaReine[] = { + overworld_ascending_frames(gObjectEventPic_FurfrouLaReine, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_FurfrouKabuki[] = { + overworld_ascending_frames(gObjectEventPic_FurfrouKabuki, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_FurfrouPharaoh[] = { + overworld_ascending_frames(gObjectEventPic_FurfrouPharaoh, 4, 4), +}; +#endif //P_FAMILY_FURFROU + +#if P_FAMILY_ESPURR +static const struct SpriteFrameImage sPicTable_Espurr[] = { + overworld_ascending_frames(gObjectEventPic_Espurr, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_MeowsticM[] = { + overworld_ascending_frames(gObjectEventPic_MeowsticM, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_MeowsticF[] = { + overworld_ascending_frames(gObjectEventPic_MeowsticF, 4, 4), +}; +#endif //P_FAMILY_ESPURR + +#if P_FAMILY_HONEDGE +static const struct SpriteFrameImage sPicTable_Honedge[] = { + overworld_ascending_frames(gObjectEventPic_Honedge, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Doublade[] = { + overworld_ascending_frames(gObjectEventPic_Doublade, 4, 4), +}; + +static const struct SpriteFrameImage sPicTable_AegislashShield[] = { + overworld_ascending_frames(gObjectEventPic_AegislashShield, 4, 4), +}; +/*static const struct SpriteFrameImage sPicTable_AegislashBlade[] = { + overworld_ascending_frames(gObjectEventPic_AegislashBlade, 4, 4), +};*/ +#endif //P_FAMILY_HONEDGE + +#if P_FAMILY_SPRITZEE +static const struct SpriteFrameImage sPicTable_Spritzee[] = { + overworld_ascending_frames(gObjectEventPic_Spritzee, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Aromatisse[] = { + overworld_ascending_frames(gObjectEventPic_Aromatisse, 4, 4), +}; +#endif //P_FAMILY_SPRITZEE + +#if P_FAMILY_SWIRLIX +static const struct SpriteFrameImage sPicTable_Swirlix[] = { + overworld_ascending_frames(gObjectEventPic_Swirlix, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Slurpuff[] = { + overworld_ascending_frames(gObjectEventPic_Slurpuff, 4, 4), +}; +#endif //P_FAMILY_SWIRLIX + +#if P_FAMILY_INKAY +static const struct SpriteFrameImage sPicTable_Inkay[] = { + overworld_ascending_frames(gObjectEventPic_Inkay, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Malamar[] = { + overworld_ascending_frames(gObjectEventPic_Malamar, 4, 4), +}; +#endif //P_FAMILY_INKAY + +#if P_FAMILY_BINACLE +static const struct SpriteFrameImage sPicTable_Binacle[] = { + overworld_ascending_frames(gObjectEventPic_Binacle, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Barbaracle[] = { + overworld_ascending_frames(gObjectEventPic_Barbaracle, 4, 4), +}; +#endif //P_FAMILY_BINACLE + +#if P_FAMILY_SKRELP +static const struct SpriteFrameImage sPicTable_Skrelp[] = { + overworld_ascending_frames(gObjectEventPic_Skrelp, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Dragalge[] = { + overworld_ascending_frames(gObjectEventPic_Dragalge, 4, 4), +}; +#endif //P_FAMILY_SKRELP + +#if P_FAMILY_CLAUNCHER +static const struct SpriteFrameImage sPicTable_Clauncher[] = { + overworld_ascending_frames(gObjectEventPic_Clauncher, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Clawitzer[] = { + overworld_ascending_frames(gObjectEventPic_Clawitzer, 4, 4), +}; +#endif //P_FAMILY_CLAUNCHER + +#if P_FAMILY_HELIOPTILE +static const struct SpriteFrameImage sPicTable_Helioptile[] = { + overworld_ascending_frames(gObjectEventPic_Helioptile, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Heliolisk[] = { + overworld_ascending_frames(gObjectEventPic_Heliolisk, 4, 4), +}; +#endif //P_FAMILY_HELIOPTILE + +#if P_FAMILY_TYRUNT +static const struct SpriteFrameImage sPicTable_Tyrunt[] = { + overworld_ascending_frames(gObjectEventPic_Tyrunt, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Tyrantrum[] = { + overworld_ascending_frames(gObjectEventPic_Tyrantrum, 4, 4), +}; +#endif //P_FAMILY_TYRUNT + +#if P_FAMILY_AMAURA +static const struct SpriteFrameImage sPicTable_Amaura[] = { + overworld_ascending_frames(gObjectEventPic_Amaura, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Aurorus[] = { + overworld_ascending_frames(gObjectEventPic_Aurorus, 4, 4), +}; +#endif //P_FAMILY_AMAURA + +#if P_FAMILY_HAWLUCHA +static const struct SpriteFrameImage sPicTable_Hawlucha[] = { + overworld_ascending_frames(gObjectEventPic_Hawlucha, 4, 4), +}; +#endif //P_FAMILY_HAWLUCHA + +#if P_FAMILY_DEDENNE +static const struct SpriteFrameImage sPicTable_Dedenne[] = { + overworld_ascending_frames(gObjectEventPic_Dedenne, 4, 4), +}; +#endif //P_FAMILY_DEDENNE + +#if P_FAMILY_CARBINK +static const struct SpriteFrameImage sPicTable_Carbink[] = { + overworld_ascending_frames(gObjectEventPic_Carbink, 4, 4), +}; +#endif //P_FAMILY_CARBINK + +#if P_FAMILY_GOOMY +static const struct SpriteFrameImage sPicTable_Goomy[] = { + overworld_ascending_frames(gObjectEventPic_Goomy, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Sliggoo[] = { + overworld_ascending_frames(gObjectEventPic_Sliggoo, 4, 4), +}; +#if P_HISUIAN_FORMS +static const struct SpriteFrameImage sPicTable_SliggooHisui[] = { + overworld_ascending_frames(gObjectEventPic_SliggooHisui, 4, 4), +}; +#endif //P_HISUIAN_FORMS + +static const struct SpriteFrameImage sPicTable_Goodra[] = { + overworld_ascending_frames(gObjectEventPic_Goodra, 4, 4), +}; +#if P_HISUIAN_FORMS +static const struct SpriteFrameImage sPicTable_GoodraHisui[] = { + overworld_ascending_frames(gObjectEventPic_GoodraHisui, 4, 4), +}; +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_GOOMY + +#if P_FAMILY_KLEFKI +static const struct SpriteFrameImage sPicTable_Klefki[] = { + overworld_ascending_frames(gObjectEventPic_Klefki, 4, 4), +}; +#endif //P_FAMILY_KLEFKI + +#if P_FAMILY_PHANTUMP +static const struct SpriteFrameImage sPicTable_Phantump[] = { + overworld_ascending_frames(gObjectEventPic_Phantump, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Trevenant[] = { + overworld_ascending_frames(gObjectEventPic_Trevenant, 4, 4), +}; +#endif //P_FAMILY_PHANTUMP + +#if P_FAMILY_PUMPKABOO + +static const struct SpriteFrameImage sPicTable_PumpkabooAverage[] = { + overworld_ascending_frames(gObjectEventPic_PumpkabooAverage, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_PumpkabooSmall[] = { + overworld_ascending_frames(gObjectEventPic_PumpkabooSmall, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_PumpkabooLarge[] = { + overworld_ascending_frames(gObjectEventPic_PumpkabooLarge, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_PumpkabooSuper[] = { + overworld_ascending_frames(gObjectEventPic_PumpkabooSuper, 4, 4), +}; + +static const struct SpriteFrameImage sPicTable_GourgeistAverage[] = { + overworld_ascending_frames(gObjectEventPic_GourgeistAverage, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_GourgeistSmall[] = { + overworld_ascending_frames(gObjectEventPic_GourgeistSmall, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_GourgeistLarge[] = { + overworld_ascending_frames(gObjectEventPic_GourgeistLarge, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_GourgeistSuper[] = { + overworld_ascending_frames(gObjectEventPic_GourgeistSuper, 4, 4), +}; +#endif //P_FAMILY_PUMPKABOO + +#if P_FAMILY_BERGMITE +static const struct SpriteFrameImage sPicTable_Bergmite[] = { + overworld_ascending_frames(gObjectEventPic_Bergmite, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Avalugg[] = { + overworld_ascending_frames(gObjectEventPic_Avalugg, 4, 4), +}; +#if P_HISUIAN_FORMS +static const struct SpriteFrameImage sPicTable_AvaluggHisui[] = { + overworld_ascending_frames(gObjectEventPic_AvaluggHisui, 4, 4), +}; +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_BERGMITE + +#if P_FAMILY_NOIBAT +static const struct SpriteFrameImage sPicTable_Noibat[] = { + overworld_ascending_frames(gObjectEventPic_Noibat, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Noivern[] = { + overworld_ascending_frames(gObjectEventPic_Noivern, 4, 4), +}; +#endif //P_FAMILY_NOIBAT + +#if P_FAMILY_XERNEAS + +static const struct SpriteFrameImage sPicTable_XerneasNeutral[] = { + overworld_ascending_frames(gObjectEventPic_XerneasNeutral, 8, 8), +}; +static const struct SpriteFrameImage sPicTable_XerneasActive[] = { + overworld_ascending_frames(gObjectEventPic_XerneasActive, 8, 8), +}; +#endif //P_FAMILY_XERNEAS + +#if P_FAMILY_YVELTAL +static const struct SpriteFrameImage sPicTable_Yveltal[] = { + overworld_ascending_frames(gObjectEventPic_Yveltal, 8, 8), +}; +#endif //P_FAMILY_YVELTAL + +#if P_FAMILY_ZYGARDE + +static const struct SpriteFrameImage sPicTable_Zygarde50[] = { + overworld_ascending_frames(gObjectEventPic_Zygarde50, 8, 8), +}; +static const struct SpriteFrameImage sPicTable_Zygarde10[] = { + overworld_ascending_frames(gObjectEventPic_Zygarde10, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_ZygardeComplete[] = { + overworld_ascending_frames(gObjectEventPic_ZygardeComplete, 4, 4), +}; + +#endif //P_FAMILY_ZYGARDE + +#if P_FAMILY_DIANCIE +static const struct SpriteFrameImage sPicTable_Diancie[] = { + overworld_ascending_frames(gObjectEventPic_Diancie, 4, 4), +}; +#if P_MEGA_EVOLUTIONS +static const struct SpriteFrameImage sPicTable_DiancieMega[] = { + overworld_ascending_frames(gObjectEventPic_DiancieMega, 4, 4), +}; +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_DIANCIE + +#if P_FAMILY_HOOPA +static const struct SpriteFrameImage sPicTable_HoopaConfined[] = { + overworld_ascending_frames(gObjectEventPic_HoopaConfined, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_HoopaUnbound[] = { + overworld_ascending_frames(gObjectEventPic_HoopaUnbound, 8, 8), +}; +#endif //P_FAMILY_HOOPA + +#if P_FAMILY_VOLCANION +static const struct SpriteFrameImage sPicTable_Volcanion[] = { + overworld_ascending_frames(gObjectEventPic_Volcanion, 4, 4), +}; +#endif //P_FAMILY_VOLCANION + +#if P_FAMILY_ROWLET +static const struct SpriteFrameImage sPicTable_Rowlet[] = { + overworld_ascending_frames(gObjectEventPic_Rowlet, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Dartrix[] = { + overworld_ascending_frames(gObjectEventPic_Dartrix, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Decidueye[] = { + overworld_ascending_frames(gObjectEventPic_Decidueye, 4, 4), +}; +#if P_HISUIAN_FORMS +static const struct SpriteFrameImage sPicTable_DecidueyeHisui[] = { + overworld_ascending_frames(gObjectEventPic_DecidueyeHisui, 4, 4), +}; +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_ROWLET + +#if P_FAMILY_LITTEN +static const struct SpriteFrameImage sPicTable_Litten[] = { + overworld_ascending_frames(gObjectEventPic_Litten, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Torracat[] = { + overworld_ascending_frames(gObjectEventPic_Torracat, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Incineroar[] = { + overworld_ascending_frames(gObjectEventPic_Incineroar, 4, 4), +}; +#endif //P_FAMILY_LITTEN + +#if P_FAMILY_POPPLIO +static const struct SpriteFrameImage sPicTable_Popplio[] = { + overworld_ascending_frames(gObjectEventPic_Popplio, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Brionne[] = { + overworld_ascending_frames(gObjectEventPic_Brionne, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Primarina[] = { + overworld_ascending_frames(gObjectEventPic_Primarina, 4, 4), +}; +#endif //P_FAMILY_POPPLIO + +#if P_FAMILY_PIKIPEK +static const struct SpriteFrameImage sPicTable_Pikipek[] = { + overworld_ascending_frames(gObjectEventPic_Pikipek, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Trumbeak[] = { + overworld_ascending_frames(gObjectEventPic_Trumbeak, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Toucannon[] = { + overworld_ascending_frames(gObjectEventPic_Toucannon, 4, 4), +}; +#endif //P_FAMILY_PIKIPEK + +#if P_FAMILY_YUNGOOS +static const struct SpriteFrameImage sPicTable_Yungoos[] = { + overworld_ascending_frames(gObjectEventPic_Yungoos, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Gumshoos[] = { + overworld_ascending_frames(gObjectEventPic_Gumshoos, 4, 4), +}; +#endif //P_FAMILY_YUNGOOS + +#if P_FAMILY_GRUBBIN +static const struct SpriteFrameImage sPicTable_Grubbin[] = { + overworld_ascending_frames(gObjectEventPic_Grubbin, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Charjabug[] = { + overworld_ascending_frames(gObjectEventPic_Charjabug, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Vikavolt[] = { + overworld_ascending_frames(gObjectEventPic_Vikavolt, 4, 4), +}; +#endif //P_FAMILY_GRUBBIN + +#if P_FAMILY_CRABRAWLER +static const struct SpriteFrameImage sPicTable_Crabrawler[] = { + overworld_ascending_frames(gObjectEventPic_Crabrawler, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Crabominable[] = { + overworld_ascending_frames(gObjectEventPic_Crabominable, 4, 4), +}; +#endif //P_FAMILY_CRABRAWLER + +#if P_FAMILY_ORICORIO + +static const struct SpriteFrameImage sPicTable_OricorioBaile[] = { + overworld_ascending_frames(gObjectEventPic_OricorioBaile, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_OricorioPomPom[] = { + overworld_ascending_frames(gObjectEventPic_OricorioPomPom, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_OricorioPau[] = { + overworld_ascending_frames(gObjectEventPic_OricorioPau, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_OricorioSensu[] = { + overworld_ascending_frames(gObjectEventPic_OricorioSensu, 4, 4), +}; +#endif //P_FAMILY_ORICORIO + +#if P_FAMILY_CUTIEFLY +static const struct SpriteFrameImage sPicTable_Cutiefly[] = { + overworld_ascending_frames(gObjectEventPic_Cutiefly, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Ribombee[] = { + overworld_ascending_frames(gObjectEventPic_Ribombee, 4, 4), +}; +#endif //P_FAMILY_CUTIEFLY + +#if P_FAMILY_ROCKRUFF +static const struct SpriteFrameImage sPicTable_Rockruff[] = { + overworld_ascending_frames(gObjectEventPic_Rockruff, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_LycanrocMidday[] = { + overworld_ascending_frames(gObjectEventPic_LycanrocMidday, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_LycanrocMidnight[] = { + overworld_ascending_frames(gObjectEventPic_LycanrocMidnight, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_LycanrocDusk[] = { + overworld_ascending_frames(gObjectEventPic_LycanrocDusk, 4, 4), +}; +#endif //P_FAMILY_ROCKRUFF + +#if P_FAMILY_WISHIWASHI + +static const struct SpriteFrameImage sPicTable_WishiwashiSolo[] = { + overworld_ascending_frames(gObjectEventPic_WishiwashiSolo, 4, 4), +}; +/*static const struct SpriteFrameImage sPicTable_WishiwashiSchool[] = { + overworld_ascending_frames(gObjectEventPic_WishiwashiSchool, 4, 4), +};*/ +#endif //P_FAMILY_WISHIWASHI + +#if P_FAMILY_MAREANIE +static const struct SpriteFrameImage sPicTable_Mareanie[] = { + overworld_ascending_frames(gObjectEventPic_Mareanie, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Toxapex[] = { + overworld_ascending_frames(gObjectEventPic_Toxapex, 4, 4), +}; +#endif //P_FAMILY_MAREANIE + +#if P_FAMILY_MUDBRAY +static const struct SpriteFrameImage sPicTable_Mudbray[] = { + overworld_ascending_frames(gObjectEventPic_Mudbray, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Mudsdale[] = { + overworld_ascending_frames(gObjectEventPic_Mudsdale, 4, 4), +}; +#endif //P_FAMILY_MUDBRAY + +#if P_FAMILY_DEWPIDER +static const struct SpriteFrameImage sPicTable_Dewpider[] = { + overworld_ascending_frames(gObjectEventPic_Dewpider, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Araquanid[] = { + overworld_ascending_frames(gObjectEventPic_Araquanid, 4, 4), +}; +#endif //P_FAMILY_DEWPIDER + +#if P_FAMILY_FOMANTIS +static const struct SpriteFrameImage sPicTable_Fomantis[] = { + overworld_ascending_frames(gObjectEventPic_Fomantis, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Lurantis[] = { + overworld_ascending_frames(gObjectEventPic_Lurantis, 4, 4), +}; +#endif //P_FAMILY_FOMANTIS + +#if P_FAMILY_MORELULL +static const struct SpriteFrameImage sPicTable_Morelull[] = { + overworld_ascending_frames(gObjectEventPic_Morelull, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Shiinotic[] = { + overworld_ascending_frames(gObjectEventPic_Shiinotic, 4, 4), +}; +#endif //P_FAMILY_MORELULL + +#if P_FAMILY_SALANDIT +static const struct SpriteFrameImage sPicTable_Salandit[] = { + overworld_ascending_frames(gObjectEventPic_Salandit, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Salazzle[] = { + overworld_ascending_frames(gObjectEventPic_Salazzle, 4, 4), +}; +#endif //P_FAMILY_SALANDIT + +#if P_FAMILY_STUFFUL +static const struct SpriteFrameImage sPicTable_Stufful[] = { + overworld_ascending_frames(gObjectEventPic_Stufful, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Bewear[] = { + overworld_ascending_frames(gObjectEventPic_Bewear, 4, 4), +}; +#endif //P_FAMILY_STUFFUL + +#if P_FAMILY_BOUNSWEET +static const struct SpriteFrameImage sPicTable_Bounsweet[] = { + overworld_ascending_frames(gObjectEventPic_Bounsweet, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Steenee[] = { + overworld_ascending_frames(gObjectEventPic_Steenee, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Tsareena[] = { + overworld_ascending_frames(gObjectEventPic_Tsareena, 4, 4), +}; +#endif //P_FAMILY_BOUNSWEET + +#if P_FAMILY_COMFEY +static const struct SpriteFrameImage sPicTable_Comfey[] = { + overworld_ascending_frames(gObjectEventPic_Comfey, 4, 4), +}; +#endif //P_FAMILY_COMFEY + +#if P_FAMILY_ORANGURU +static const struct SpriteFrameImage sPicTable_Oranguru[] = { + overworld_ascending_frames(gObjectEventPic_Oranguru, 4, 4), +}; +#endif //P_FAMILY_ORANGURU + +#if P_FAMILY_PASSIMIAN +static const struct SpriteFrameImage sPicTable_Passimian[] = { + overworld_ascending_frames(gObjectEventPic_Passimian, 4, 4), +}; +#endif //P_FAMILY_PASSIMIAN + +#if P_FAMILY_WIMPOD +static const struct SpriteFrameImage sPicTable_Wimpod[] = { + overworld_ascending_frames(gObjectEventPic_Wimpod, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Golisopod[] = { + overworld_ascending_frames(gObjectEventPic_Golisopod, 4, 4), +}; +#endif //P_FAMILY_WIMPOD + +#if P_FAMILY_SANDYGAST +static const struct SpriteFrameImage sPicTable_Sandygast[] = { + overworld_ascending_frames(gObjectEventPic_Sandygast, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Palossand[] = { + overworld_ascending_frames(gObjectEventPic_Palossand, 4, 4), +}; +#endif //P_FAMILY_SANDYGAST + +#if P_FAMILY_PYUKUMUKU +static const struct SpriteFrameImage sPicTable_Pyukumuku[] = { + overworld_ascending_frames(gObjectEventPic_Pyukumuku, 4, 4), +}; +#endif //P_FAMILY_PYUKUMUKU + +#if P_FAMILY_TYPE_NULL +static const struct SpriteFrameImage sPicTable_TypeNull[] = { + overworld_ascending_frames(gObjectEventPic_TypeNull, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Silvally[] = { + overworld_ascending_frames(gObjectEventPic_Silvally, 4, 4), +}; +#endif //P_FAMILY_TYPE_NULL + +#if P_FAMILY_MINIOR +static const struct SpriteFrameImage sPicTable_MiniorMeteor[] = { + overworld_ascending_frames(gObjectEventPic_MiniorMeteor, 4, 4), +}; +/*static const struct SpriteFrameImage sPicTable_MiniorCoreRed[] = { + overworld_ascending_frames(gObjectEventPic_MiniorCoreRed, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_MiniorCoreOrange[] = { + overworld_ascending_frames(gObjectEventPic_MiniorCoreOrange, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_MiniorCoreYellow[] = { + overworld_ascending_frames(gObjectEventPic_MiniorCoreYellow, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_MiniorCoreGreen[] = { + overworld_ascending_frames(gObjectEventPic_MiniorCoreGreen, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_MiniorCoreBlue[] = { + overworld_ascending_frames(gObjectEventPic_MiniorCoreBlue, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_MiniorCoreIndigo[] = { + overworld_ascending_frames(gObjectEventPic_MiniorCoreIndigo, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_MiniorCoreViolet[] = { + overworld_ascending_frames(gObjectEventPic_MiniorCoreViolet, 4, 4), +};*/ +#endif //P_FAMILY_MINIOR + +#if P_FAMILY_KOMALA +static const struct SpriteFrameImage sPicTable_Komala[] = { + overworld_ascending_frames(gObjectEventPic_Komala, 4, 4), +}; +#endif //P_FAMILY_KOMALA + +#if P_FAMILY_TURTONATOR +static const struct SpriteFrameImage sPicTable_Turtonator[] = { + overworld_ascending_frames(gObjectEventPic_Turtonator, 4, 4), +}; +#endif //P_FAMILY_TURTONATOR + +#if P_FAMILY_TOGEDEMARU +static const struct SpriteFrameImage sPicTable_Togedemaru[] = { + overworld_ascending_frames(gObjectEventPic_Togedemaru, 4, 4), +}; +#endif //P_FAMILY_TOGEDEMARU + +#if P_FAMILY_MIMIKYU +static const struct SpriteFrameImage sPicTable_MimikyuDisguised[] = { + overworld_ascending_frames(gObjectEventPic_MimikyuDisguised, 4, 4), +}; +/*static const struct SpriteFrameImage sPicTable_MimikyuBusted[] = { + overworld_ascending_frames(gObjectEventPic_MimikyuBusted, 4, 4), +};*/ +#endif //P_FAMILY_MIMIKYU + +#if P_FAMILY_BRUXISH +static const struct SpriteFrameImage sPicTable_Bruxish[] = { + overworld_ascending_frames(gObjectEventPic_Bruxish, 4, 4), +}; +#endif //P_FAMILY_BRUXISH + +#if P_FAMILY_DRAMPA +static const struct SpriteFrameImage sPicTable_Drampa[] = { + overworld_ascending_frames(gObjectEventPic_Drampa, 4, 4), +}; +#endif //P_FAMILY_DRAMPA + +#if P_FAMILY_DHELMISE +static const struct SpriteFrameImage sPicTable_Dhelmise[] = { + overworld_ascending_frames(gObjectEventPic_Dhelmise, 4, 4), +}; +#endif //P_FAMILY_DHELMISE + +#if P_FAMILY_JANGMO_O +static const struct SpriteFrameImage sPicTable_JangmoO[] = { + overworld_ascending_frames(gObjectEventPic_JangmoO, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_HakamoO[] = { + overworld_ascending_frames(gObjectEventPic_HakamoO, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_KommoO[] = { + overworld_ascending_frames(gObjectEventPic_KommoO, 4, 4), +}; +#endif //P_FAMILY_JANGMO_O + +#if P_FAMILY_TAPU_KOKO +static const struct SpriteFrameImage sPicTable_TapuKoko[] = { + overworld_ascending_frames(gObjectEventPic_TapuKoko, 4, 4), +}; +#endif //P_FAMILY_TAPU_KOKO + +#if P_FAMILY_TAPU_LELE +static const struct SpriteFrameImage sPicTable_TapuLele[] = { + overworld_ascending_frames(gObjectEventPic_TapuLele, 4, 4), +}; +#endif //P_FAMILY_TAPU_LELE + +#if P_FAMILY_TAPU_BULU +static const struct SpriteFrameImage sPicTable_TapuBulu[] = { + overworld_ascending_frames(gObjectEventPic_TapuBulu, 4, 4), +}; +#endif //P_FAMILY_TAPU_BULU + +#if P_FAMILY_TAPU_FINI +static const struct SpriteFrameImage sPicTable_TapuFini[] = { + overworld_ascending_frames(gObjectEventPic_TapuFini, 4, 4), +}; +#endif //P_FAMILY_TAPU_FINI + +#if P_FAMILY_COSMOG +static const struct SpriteFrameImage sPicTable_Cosmog[] = { + overworld_ascending_frames(gObjectEventPic_Cosmog, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Cosmoem[] = { + overworld_ascending_frames(gObjectEventPic_Cosmoem, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Solgaleo[] = { + overworld_ascending_frames(gObjectEventPic_Solgaleo, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Lunala[] = { + overworld_ascending_frames(gObjectEventPic_Lunala, 4, 4), +}; +#endif //P_FAMILY_COSMOG + +#if P_FAMILY_NIHILEGO +static const struct SpriteFrameImage sPicTable_Nihilego[] = { + overworld_ascending_frames(gObjectEventPic_Nihilego, 4, 4), +}; +#endif //P_FAMILY_NIHILEGO + +#if P_FAMILY_BUZZWOLE +static const struct SpriteFrameImage sPicTable_Buzzwole[] = { + overworld_ascending_frames(gObjectEventPic_Buzzwole, 4, 4), +}; +#endif //P_FAMILY_BUZZWOLE + +#if P_FAMILY_PHEROMOSA +static const struct SpriteFrameImage sPicTable_Pheromosa[] = { + overworld_ascending_frames(gObjectEventPic_Pheromosa, 4, 4), +}; +#endif //P_FAMILY_PHEROMOSA + +#if P_FAMILY_XURKITREE +static const struct SpriteFrameImage sPicTable_Xurkitree[] = { + overworld_ascending_frames(gObjectEventPic_Xurkitree, 4, 4), +}; +#endif //P_FAMILY_XURKITREE + +#if P_FAMILY_CELESTEELA +static const struct SpriteFrameImage sPicTable_Celesteela[] = { + overworld_ascending_frames(gObjectEventPic_Celesteela, 4, 4), +}; +#endif //P_FAMILY_CELESTEELA + +#if P_FAMILY_KARTANA +static const struct SpriteFrameImage sPicTable_Kartana[] = { + overworld_ascending_frames(gObjectEventPic_Kartana, 4, 4), +}; +#endif //P_FAMILY_KARTANA + +#if P_FAMILY_GUZZLORD +static const struct SpriteFrameImage sPicTable_Guzzlord[] = { + overworld_ascending_frames(gObjectEventPic_Guzzlord, 4, 4), +}; +#endif //P_FAMILY_GUZZLORD + +#if P_FAMILY_NECROZMA +static const struct SpriteFrameImage sPicTable_Necrozma[] = { + overworld_ascending_frames(gObjectEventPic_Necrozma, 4, 4), +}; +#if P_FUSION_FORMS + +static const struct SpriteFrameImage sPicTable_NecrozmaDuskMane[] = { + overworld_ascending_frames(gObjectEventPic_NecrozmaDuskMane, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_NecrozmaDawnWings[] = { + overworld_ascending_frames(gObjectEventPic_NecrozmaDawnWings, 4, 4), +}; +#if P_ULTRA_BURST_FORMS +static const struct SpriteFrameImage sPicTable_NecrozmaUltra[] = { + overworld_ascending_frames(gObjectEventPic_NecrozmaUltra, 4, 4), +}; +#endif //P_ULTRA_BURST_FORMS +#endif //P_FUSION_FORMS +#endif //P_FAMILY_NECROZMA + +#if P_FAMILY_MAGEARNA +static const struct SpriteFrameImage sPicTable_Magearna[] = { + overworld_ascending_frames(gObjectEventPic_Magearna, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_MagearnaOriginal[] = { + overworld_ascending_frames(gObjectEventPic_MagearnaOriginal, 4, 4), +}; +#endif //P_FAMILY_MAGEARNA + +#if P_FAMILY_MARSHADOW +static const struct SpriteFrameImage sPicTable_Marshadow[] = { + overworld_ascending_frames(gObjectEventPic_Marshadow, 4, 4), +}; +#endif //P_FAMILY_MARSHADOW + +#if P_FAMILY_POIPOLE +static const struct SpriteFrameImage sPicTable_Poipole[] = { + overworld_ascending_frames(gObjectEventPic_Poipole, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Naganadel[] = { + overworld_ascending_frames(gObjectEventPic_Naganadel, 4, 4), +}; +#endif //P_FAMILY_POIPOLE + +#if P_FAMILY_STAKATAKA +static const struct SpriteFrameImage sPicTable_Stakataka[] = { + overworld_ascending_frames(gObjectEventPic_Stakataka, 4, 4), +}; +#endif //P_FAMILY_STAKATAKA + +#if P_FAMILY_BLACEPHALON +static const struct SpriteFrameImage sPicTable_Blacephalon[] = { + overworld_ascending_frames(gObjectEventPic_Blacephalon, 4, 4), +}; +#endif //P_FAMILY_BLACEPHALON + +#if P_FAMILY_ZERAORA +static const struct SpriteFrameImage sPicTable_Zeraora[] = { + overworld_ascending_frames(gObjectEventPic_Zeraora, 4, 4), +}; +#endif //P_FAMILY_ZERAORA + +#if P_FAMILY_MELTAN +static const struct SpriteFrameImage sPicTable_Meltan[] = { + overworld_ascending_frames(gObjectEventPic_Meltan, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Melmetal[] = { + overworld_ascending_frames(gObjectEventPic_Melmetal, 4, 4), +}; +#if P_GIGANTAMAX_FORMS +/*static const struct SpriteFrameImage sPicTable_MelmetalGmax[] = { + overworld_ascending_frames(gObjectEventPic_MelmetalGmax, 4, 4), +};*/ +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_MELTAN + +#if P_FAMILY_GROOKEY +static const struct SpriteFrameImage sPicTable_Grookey[] = { + overworld_ascending_frames(gObjectEventPic_Grookey, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Thwackey[] = { + overworld_ascending_frames(gObjectEventPic_Thwackey, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Rillaboom[] = { + overworld_ascending_frames(gObjectEventPic_Rillaboom, 4, 4), +}; +#if P_GIGANTAMAX_FORMS +/*static const struct SpriteFrameImage sPicTable_RillaboomGmax[] = { + overworld_ascending_frames(gObjectEventPic_RillaboomGmax, 4, 4), +};*/ +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_GROOKEY + +#if P_FAMILY_SCORBUNNY +static const struct SpriteFrameImage sPicTable_Scorbunny[] = { + overworld_ascending_frames(gObjectEventPic_Scorbunny, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Raboot[] = { + overworld_ascending_frames(gObjectEventPic_Raboot, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Cinderace[] = { + overworld_ascending_frames(gObjectEventPic_Cinderace, 4, 4), +}; +#if P_GIGANTAMAX_FORMS +/*static const struct SpriteFrameImage sPicTable_CinderaceGmax[] = { + overworld_ascending_frames(gObjectEventPic_CinderaceGmax, 4, 4), +};*/ +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_SCORBUNNY + +#if P_FAMILY_SOBBLE +static const struct SpriteFrameImage sPicTable_Sobble[] = { + overworld_ascending_frames(gObjectEventPic_Sobble, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Drizzile[] = { + overworld_ascending_frames(gObjectEventPic_Drizzile, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Inteleon[] = { + overworld_ascending_frames(gObjectEventPic_Inteleon, 4, 4), +}; +#if P_GIGANTAMAX_FORMS +/*static const struct SpriteFrameImage sPicTable_InteleonGmax[] = { + overworld_ascending_frames(gObjectEventPic_InteleonGmax, 4, 4), +};*/ +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_SOBBLE + +#if P_FAMILY_SKWOVET +static const struct SpriteFrameImage sPicTable_Skwovet[] = { + overworld_ascending_frames(gObjectEventPic_Skwovet, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Greedent[] = { + overworld_ascending_frames(gObjectEventPic_Greedent, 4, 4), +}; +#endif //P_FAMILY_SKWOVET + +#if P_FAMILY_ROOKIDEE +static const struct SpriteFrameImage sPicTable_Rookidee[] = { + overworld_ascending_frames(gObjectEventPic_Rookidee, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Corvisquire[] = { + overworld_ascending_frames(gObjectEventPic_Corvisquire, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Corviknight[] = { + overworld_ascending_frames(gObjectEventPic_Corviknight, 4, 4), +}; +#if P_GIGANTAMAX_FORMS +/*static const struct SpriteFrameImage sPicTable_CorviknightGmax[] = { + overworld_ascending_frames(gObjectEventPic_CorviknightGmax, 4, 4), +};*/ +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_ROOKIDEE + +#if P_FAMILY_BLIPBUG +static const struct SpriteFrameImage sPicTable_Blipbug[] = { + overworld_ascending_frames(gObjectEventPic_Blipbug, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Dottler[] = { + overworld_ascending_frames(gObjectEventPic_Dottler, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Orbeetle[] = { + overworld_ascending_frames(gObjectEventPic_Orbeetle, 4, 4), +}; +#if P_GIGANTAMAX_FORMS +/*static const struct SpriteFrameImage sPicTable_OrbeetleGmax[] = { + overworld_ascending_frames(gObjectEventPic_OrbeetleGmax, 4, 4), +};*/ +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_BLIPBUG + +#if P_FAMILY_NICKIT +static const struct SpriteFrameImage sPicTable_Nickit[] = { + overworld_ascending_frames(gObjectEventPic_Nickit, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Thievul[] = { + overworld_ascending_frames(gObjectEventPic_Thievul, 4, 4), +}; +#endif //P_FAMILY_NICKIT + +#if P_FAMILY_GOSSIFLEUR +static const struct SpriteFrameImage sPicTable_Gossifleur[] = { + overworld_ascending_frames(gObjectEventPic_Gossifleur, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Eldegoss[] = { + overworld_ascending_frames(gObjectEventPic_Eldegoss, 4, 4), +}; +#endif //P_FAMILY_GOSSIFLEUR + +#if P_FAMILY_WOOLOO +static const struct SpriteFrameImage sPicTable_Wooloo[] = { + overworld_ascending_frames(gObjectEventPic_Wooloo, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Dubwool[] = { + overworld_ascending_frames(gObjectEventPic_Dubwool, 4, 4), +}; +#endif //P_FAMILY_WOOLOO + +#if P_FAMILY_CHEWTLE +static const struct SpriteFrameImage sPicTable_Chewtle[] = { + overworld_ascending_frames(gObjectEventPic_Chewtle, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Drednaw[] = { + overworld_ascending_frames(gObjectEventPic_Drednaw, 4, 4), +}; +#if P_GIGANTAMAX_FORMS +/*static const struct SpriteFrameImage sPicTable_DrednawGmax[] = { + overworld_ascending_frames(gObjectEventPic_DrednawGmax, 4, 4), +};*/ +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_CHEWTLE + +#if P_FAMILY_YAMPER +static const struct SpriteFrameImage sPicTable_Yamper[] = { + overworld_ascending_frames(gObjectEventPic_Yamper, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Boltund[] = { + overworld_ascending_frames(gObjectEventPic_Boltund, 4, 4), +}; +#endif //P_FAMILY_YAMPER + +#if P_FAMILY_ROLYCOLY +static const struct SpriteFrameImage sPicTable_Rolycoly[] = { + overworld_ascending_frames(gObjectEventPic_Rolycoly, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Carkol[] = { + overworld_ascending_frames(gObjectEventPic_Carkol, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Coalossal[] = { + overworld_ascending_frames(gObjectEventPic_Coalossal, 4, 4), +}; +#if P_GIGANTAMAX_FORMS +/*static const struct SpriteFrameImage sPicTable_CoalossalGmax[] = { + overworld_ascending_frames(gObjectEventPic_CoalossalGmax, 4, 4), +};*/ +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_ROLYCOLY + +#if P_FAMILY_APPLIN +static const struct SpriteFrameImage sPicTable_Applin[] = { + overworld_ascending_frames(gObjectEventPic_Applin, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Flapple[] = { + overworld_ascending_frames(gObjectEventPic_Flapple, 4, 4), +}; +#if P_GIGANTAMAX_FORMS +/*static const struct SpriteFrameImage sPicTable_FlappleGmax[] = { + overworld_ascending_frames(gObjectEventPic_FlappleGmax, 4, 4), +};*/ +#endif //P_GIGANTAMAX_FORMS + +static const struct SpriteFrameImage sPicTable_Appletun[] = { + overworld_ascending_frames(gObjectEventPic_Appletun, 4, 4), +}; +#if P_GIGANTAMAX_FORMS +/*static const struct SpriteFrameImage sPicTable_AppletunGmax[] = { + overworld_ascending_frames(gObjectEventPic_AppletunGmax, 4, 4), +};*/ +#endif //P_GIGANTAMAX_FORMS + +#if P_GEN_9_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Dipplin[] = { + overworld_ascending_frames(gObjectEventPic_Dipplin, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Hydrapple[] = { + overworld_ascending_frames(gObjectEventPic_Hydrapple, 8, 8), +}; +#endif //P_GEN_9_CROSS_EVOS +#endif //P_FAMILY_APPLIN + +#if P_FAMILY_SILICOBRA +static const struct SpriteFrameImage sPicTable_Silicobra[] = { + overworld_ascending_frames(gObjectEventPic_Silicobra, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Sandaconda[] = { + overworld_ascending_frames(gObjectEventPic_Sandaconda, 4, 4), +}; +#if P_GIGANTAMAX_FORMS +/*static const struct SpriteFrameImage sPicTable_SandacondaGmax[] = { + overworld_ascending_frames(gObjectEventPic_SandacondaGmax, 4, 4), +};*/ +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_SILICOBRA + +#if P_FAMILY_CRAMORANT +static const struct SpriteFrameImage sPicTable_Cramorant[] = { + overworld_ascending_frames(gObjectEventPic_Cramorant, 4, 4), +}; +/*static const struct SpriteFrameImage sPicTable_CramorantGulping[] = { + overworld_ascending_frames(gObjectEventPic_CramorantGulping, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_CramorantGorging[] = { + overworld_ascending_frames(gObjectEventPic_CramorantGorging, 4, 4), +};*/ +#endif //P_FAMILY_CRAMORANT + +#if P_FAMILY_ARROKUDA +static const struct SpriteFrameImage sPicTable_Arrokuda[] = { + overworld_ascending_frames(gObjectEventPic_Arrokuda, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Barraskewda[] = { + overworld_ascending_frames(gObjectEventPic_Barraskewda, 4, 4), +}; +#endif //P_FAMILY_ARROKUDA + +#if P_FAMILY_TOXEL +static const struct SpriteFrameImage sPicTable_Toxel[] = { + overworld_ascending_frames(gObjectEventPic_Toxel, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_ToxtricityAmped[] = { + overworld_ascending_frames(gObjectEventPic_ToxtricityAmped, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_ToxtricityLowKey[] = { + overworld_ascending_frames(gObjectEventPic_ToxtricityLowKey, 4, 4), +}; +#if P_GIGANTAMAX_FORMS +/*static const struct SpriteFrameImage sPicTable_ToxtricityGmax[] = { + overworld_ascending_frames(gObjectEventPic_ToxtricityGmax, 4, 4), +};*/ +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_TOXEL + +#if P_FAMILY_SIZZLIPEDE +static const struct SpriteFrameImage sPicTable_Sizzlipede[] = { + overworld_ascending_frames(gObjectEventPic_Sizzlipede, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Centiskorch[] = { + overworld_ascending_frames(gObjectEventPic_Centiskorch, 4, 4), +}; +#if P_GIGANTAMAX_FORMS +/*static const struct SpriteFrameImage sPicTable_CentiskorchGmax[] = { + overworld_ascending_frames(gObjectEventPic_CentiskorchGmax, 4, 4), +};*/ +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_SIZZLIPEDE + +#if P_FAMILY_CLOBBOPUS +static const struct SpriteFrameImage sPicTable_Clobbopus[] = { + overworld_ascending_frames(gObjectEventPic_Clobbopus, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Grapploct[] = { + overworld_ascending_frames(gObjectEventPic_Grapploct, 4, 4), +}; +#endif //P_FAMILY_CLOBBOPUS + +#if P_FAMILY_SINISTEA +static const struct SpriteFrameImage sPicTable_Sinistea[] = { + overworld_ascending_frames(gObjectEventPic_Sinistea, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Polteageist[] = { + overworld_ascending_frames(gObjectEventPic_Polteageist, 4, 4), +}; +#endif //P_FAMILY_SINISTEA + +#if P_FAMILY_HATENNA +static const struct SpriteFrameImage sPicTable_Hatenna[] = { + overworld_ascending_frames(gObjectEventPic_Hatenna, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Hattrem[] = { + overworld_ascending_frames(gObjectEventPic_Hattrem, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Hatterene[] = { + overworld_ascending_frames(gObjectEventPic_Hatterene, 4, 4), +}; +#if P_GIGANTAMAX_FORMS +/*static const struct SpriteFrameImage sPicTable_HattereneGmax[] = { + overworld_ascending_frames(gObjectEventPic_HattereneGmax, 4, 4), +};*/ +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_HATENNA + +#if P_FAMILY_IMPIDIMP +static const struct SpriteFrameImage sPicTable_Impidimp[] = { + overworld_ascending_frames(gObjectEventPic_Impidimp, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Morgrem[] = { + overworld_ascending_frames(gObjectEventPic_Morgrem, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Grimmsnarl[] = { + overworld_ascending_frames(gObjectEventPic_Grimmsnarl, 4, 4), +}; +#if P_GIGANTAMAX_FORMS +/*static const struct SpriteFrameImage sPicTable_GrimmsnarlGmax[] = { + overworld_ascending_frames(gObjectEventPic_GrimmsnarlGmax, 4, 4), +};*/ +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_IMPIDIMP + +#if P_FAMILY_MILCERY +static const struct SpriteFrameImage sPicTable_Milcery[] = { + overworld_ascending_frames(gObjectEventPic_Milcery, 4, 4), +}; + +static const struct SpriteFrameImage sPicTable_AlcremieStrawberry[] = { + overworld_ascending_frames(gObjectEventPic_AlcremieStrawberry, 4, 4), +}; +#if P_GIGANTAMAX_FORMS +/*static const struct SpriteFrameImage sPicTable_AlcremieGmax[] = { + overworld_ascending_frames(gObjectEventPic_AlcremieGmax, 4, 4), +};*/ +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_MILCERY + +#if P_FAMILY_FALINKS +static const struct SpriteFrameImage sPicTable_Falinks[] = { + overworld_ascending_frames(gObjectEventPic_Falinks, 4, 4), +}; +#endif //P_FAMILY_FALINKS + +#if P_FAMILY_PINCURCHIN +static const struct SpriteFrameImage sPicTable_Pincurchin[] = { + overworld_ascending_frames(gObjectEventPic_Pincurchin, 4, 4), +}; +#endif //P_FAMILY_PINCURCHIN + +#if P_FAMILY_SNOM +static const struct SpriteFrameImage sPicTable_Snom[] = { + overworld_ascending_frames(gObjectEventPic_Snom, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Frosmoth[] = { + overworld_ascending_frames(gObjectEventPic_Frosmoth, 4, 4), +}; +#endif //P_FAMILY_SNOM + +#if P_FAMILY_STONJOURNER +static const struct SpriteFrameImage sPicTable_Stonjourner[] = { + overworld_ascending_frames(gObjectEventPic_Stonjourner, 4, 4), +}; +#endif //P_FAMILY_STONJOURNER + +#if P_FAMILY_EISCUE +static const struct SpriteFrameImage sPicTable_EiscueIce[] = { + overworld_ascending_frames(gObjectEventPic_EiscueIce, 4, 4), +}; +/*static const struct SpriteFrameImage sPicTable_EiscueNoice[] = { + overworld_ascending_frames(gObjectEventPic_EiscueNoice, 4, 4), +};*/ +#endif //P_FAMILY_EISCUE + +#if P_FAMILY_INDEEDEE +static const struct SpriteFrameImage sPicTable_IndeedeeM[] = { + overworld_ascending_frames(gObjectEventPic_IndeedeeM, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_IndeedeeF[] = { + overworld_ascending_frames(gObjectEventPic_IndeedeeF, 4, 4), +}; +#endif //P_FAMILY_INDEEDEE + +#if P_FAMILY_MORPEKO +static const struct SpriteFrameImage sPicTable_MorpekoFullBelly[] = { + overworld_ascending_frames(gObjectEventPic_MorpekoFullBelly, 4, 4), +}; +/*static const struct SpriteFrameImage sPicTable_MorpekoHangry[] = { + overworld_ascending_frames(gObjectEventPic_MorpekoHangry, 4, 4), +};*/ +#endif //P_FAMILY_MORPEKO + +#if P_FAMILY_CUFANT +static const struct SpriteFrameImage sPicTable_Cufant[] = { + overworld_ascending_frames(gObjectEventPic_Cufant, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Copperajah[] = { + overworld_ascending_frames(gObjectEventPic_Copperajah, 4, 4), +}; +#if P_GIGANTAMAX_FORMS +/*static const struct SpriteFrameImage sPicTable_CopperajahGmax[] = { + overworld_ascending_frames(gObjectEventPic_CopperajahGmax, 4, 4), +};*/ +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_CUFANT + +#if P_FAMILY_DRACOZOLT +static const struct SpriteFrameImage sPicTable_Dracozolt[] = { + overworld_ascending_frames(gObjectEventPic_Dracozolt, 4, 4), +}; +#endif //P_FAMILY_DRACOZOLT + +#if P_FAMILY_ARCTOZOLT +static const struct SpriteFrameImage sPicTable_Arctozolt[] = { + overworld_ascending_frames(gObjectEventPic_Arctozolt, 4, 4), +}; +#endif //P_FAMILY_ARCTOZOLT + +#if P_FAMILY_DRACOVISH +static const struct SpriteFrameImage sPicTable_Dracovish[] = { + overworld_ascending_frames(gObjectEventPic_Dracovish, 4, 4), +}; +#endif //P_FAMILY_DRACOVISH + +#if P_FAMILY_ARCTOVISH +static const struct SpriteFrameImage sPicTable_Arctovish[] = { + overworld_ascending_frames(gObjectEventPic_Arctovish, 4, 4), +}; +#endif //P_FAMILY_ARCTOVISH + +#if P_FAMILY_DURALUDON +static const struct SpriteFrameImage sPicTable_Duraludon[] = { + overworld_ascending_frames(gObjectEventPic_Duraludon, 4, 4), +}; +#if P_GIGANTAMAX_FORMS +/*static const struct SpriteFrameImage sPicTable_DuraludonGmax[] = { + overworld_ascending_frames(gObjectEventPic_DuraludonGmax, 4, 4), +};*/ +#endif //P_GIGANTAMAX_FORMS + +#if P_GEN_9_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Archaludon[] = { + overworld_ascending_frames(gObjectEventPic_Archaludon, 4, 4), +}; +#endif //P_GEN_9_CROSS_EVOS +#endif //P_FAMILY_DURALUDON + +#if P_FAMILY_DREEPY +static const struct SpriteFrameImage sPicTable_Dreepy[] = { + overworld_ascending_frames(gObjectEventPic_Dreepy, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Drakloak[] = { + overworld_ascending_frames(gObjectEventPic_Drakloak, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Dragapult[] = { + overworld_ascending_frames(gObjectEventPic_Dragapult, 4, 4), +}; +#endif //P_FAMILY_DREEPY + +#if P_FAMILY_ZACIAN +static const struct SpriteFrameImage sPicTable_ZacianHero[] = { + overworld_ascending_frames(gObjectEventPic_ZacianHero, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_ZacianCrowned[] = { + overworld_ascending_frames(gObjectEventPic_ZacianCrowned, 4, 4), +}; +#endif //P_FAMILY_ZACIAN + +#if P_FAMILY_ZAMAZENTA +static const struct SpriteFrameImage sPicTable_ZamazentaHero[] = { + overworld_ascending_frames(gObjectEventPic_ZamazentaHero, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_ZamazentaCrowned[] = { + overworld_ascending_frames(gObjectEventPic_ZamazentaCrowned, 4, 4), +}; +#endif //P_FAMILY_ZAMAZENTA + +#if P_FAMILY_ETERNATUS +static const struct SpriteFrameImage sPicTable_Eternatus[] = { + overworld_ascending_frames(gObjectEventPic_Eternatus, 4, 4), +}; +/*static const struct SpriteFrameImage sPicTable_EternatusEternamax[] = { + overworld_ascending_frames(gObjectEventPic_EternatusEternamax, 4, 4), +};*/ +#endif //P_FAMILY_ETERNATUS + +#if P_FAMILY_KUBFU +static const struct SpriteFrameImage sPicTable_Kubfu[] = { + overworld_ascending_frames(gObjectEventPic_Kubfu, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Urshifu[] = { + overworld_ascending_frames(gObjectEventPic_Urshifu, 4, 4), +}; +#if P_GIGANTAMAX_FORMS +/*static const struct SpriteFrameImage sPicTable_UrshifuSingleStrikeGmax[] = { + overworld_ascending_frames(gObjectEventPic_UrshifuSingleStrikeGmax, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_UrshifuRapidStrikeGmax[] = { + overworld_ascending_frames(gObjectEventPic_UrshifuRapidStrikeGmax, 4, 4), +};*/ +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_KUBFU + +#if P_FAMILY_ZARUDE + +static const struct SpriteFrameImage sPicTable_Zarude[] = { + overworld_ascending_frames(gObjectEventPic_Zarude, 4, 4), +}; +/*static const struct SpriteFrameImage sPicTable_ZarudeDada[] = { + overworld_ascending_frames(gObjectEventPic_ZarudeDada, 4, 4), +};*/ +#endif //P_FAMILY_ZARUDE + +#if P_FAMILY_REGIELEKI +static const struct SpriteFrameImage sPicTable_Regieleki[] = { + overworld_ascending_frames(gObjectEventPic_Regieleki, 4, 4), +}; +#endif //P_FAMILY_REGIELEKI + +#if P_FAMILY_REGIDRAGO +static const struct SpriteFrameImage sPicTable_Regidrago[] = { + overworld_ascending_frames(gObjectEventPic_Regidrago, 4, 4), +}; +#endif //P_FAMILY_REGIDRAGO + +#if P_FAMILY_GLASTRIER +static const struct SpriteFrameImage sPicTable_Glastrier[] = { + overworld_ascending_frames(gObjectEventPic_Glastrier, 4, 4), +}; +#endif //P_FAMILY_GLASTRIER + +#if P_FAMILY_SPECTRIER +static const struct SpriteFrameImage sPicTable_Spectrier[] = { + overworld_ascending_frames(gObjectEventPic_Spectrier, 4, 4), +}; +#endif //P_FAMILY_SPECTRIER + +#if P_FAMILY_CALYREX +static const struct SpriteFrameImage sPicTable_Calyrex[] = { + overworld_ascending_frames(gObjectEventPic_Calyrex, 4, 4), +}; +#if P_FUSION_FORMS +static const struct SpriteFrameImage sPicTable_CalyrexIce[] = { + overworld_ascending_frames(gObjectEventPic_CalyrexIce, 4, 4), +}; +#endif //P_FUSION_FORMS + +#if P_FUSION_FORMS +static const struct SpriteFrameImage sPicTable_CalyrexShadow[] = { + overworld_ascending_frames(gObjectEventPic_CalyrexShadow, 4, 4), +}; +#endif //P_FUSION_FORMS +#endif //P_FAMILY_CALYREX + +#if P_FAMILY_SPRIGATITO +static const struct SpriteFrameImage sPicTable_Sprigatito[] = { + overworld_ascending_frames(gObjectEventPic_Sprigatito, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Floragato[] = { + overworld_ascending_frames(gObjectEventPic_Floragato, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Meowscarada[] = { + overworld_ascending_frames(gObjectEventPic_Meowscarada, 4, 4), +}; +#endif //P_FAMILY_SPRIGATITO + +#if P_FAMILY_FUECOCO +static const struct SpriteFrameImage sPicTable_Fuecoco[] = { + overworld_ascending_frames(gObjectEventPic_Fuecoco, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Crocalor[] = { + overworld_ascending_frames(gObjectEventPic_Crocalor, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Skeledirge[] = { + overworld_ascending_frames(gObjectEventPic_Skeledirge, 4, 4), +}; +#endif //P_FAMILY_FUECOCO + +#if P_FAMILY_QUAXLY +static const struct SpriteFrameImage sPicTable_Quaxly[] = { + overworld_ascending_frames(gObjectEventPic_Quaxly, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Quaxwell[] = { + overworld_ascending_frames(gObjectEventPic_Quaxwell, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Quaquaval[] = { + overworld_ascending_frames(gObjectEventPic_Quaquaval, 4, 4), +}; +#endif //P_FAMILY_QUAXLY + +#if P_FAMILY_LECHONK +static const struct SpriteFrameImage sPicTable_Lechonk[] = { + overworld_ascending_frames(gObjectEventPic_Lechonk, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_OinkologneM[] = { + overworld_ascending_frames(gObjectEventPic_OinkologneM, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_OinkologneF[] = { + overworld_ascending_frames(gObjectEventPic_OinkologneF, 4, 4), +}; +#endif //P_FAMILY_LECHONK + +#if P_FAMILY_TAROUNTULA +static const struct SpriteFrameImage sPicTable_Tarountula[] = { + overworld_ascending_frames(gObjectEventPic_Tarountula, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Spidops[] = { + overworld_ascending_frames(gObjectEventPic_Spidops, 4, 4), +}; +#endif //P_FAMILY_TAROUNTULA + +#if P_FAMILY_NYMBLE +static const struct SpriteFrameImage sPicTable_Nymble[] = { + overworld_ascending_frames(gObjectEventPic_Nymble, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Lokix[] = { + overworld_ascending_frames(gObjectEventPic_Lokix, 4, 4), +}; +#endif //P_FAMILY_NYMBLE + +#if P_FAMILY_PAWMI +static const struct SpriteFrameImage sPicTable_Pawmi[] = { + overworld_ascending_frames(gObjectEventPic_Pawmi, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Pawmo[] = { + overworld_ascending_frames(gObjectEventPic_Pawmo, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Pawmot[] = { + overworld_ascending_frames(gObjectEventPic_Pawmot, 4, 4), +}; +#endif //P_FAMILY_PAWMI + +#if P_FAMILY_TANDEMAUS +static const struct SpriteFrameImage sPicTable_Tandemaus[] = { + overworld_ascending_frames(gObjectEventPic_Tandemaus, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_MausholdThree[] = { + overworld_ascending_frames(gObjectEventPic_MausholdThree, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_MausholdFour[] = { + overworld_ascending_frames(gObjectEventPic_MausholdFour, 4, 4), +}; +#endif //P_FAMILY_TANDEMAUS + +#if P_FAMILY_FIDOUGH +static const struct SpriteFrameImage sPicTable_Fidough[] = { + overworld_ascending_frames(gObjectEventPic_Fidough, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Dachsbun[] = { + overworld_ascending_frames(gObjectEventPic_Dachsbun, 4, 4), +}; +#endif //P_FAMILY_FIDOUGH + +#if P_FAMILY_SMOLIV +static const struct SpriteFrameImage sPicTable_Smoliv[] = { + overworld_ascending_frames(gObjectEventPic_Smoliv, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Dolliv[] = { + overworld_ascending_frames(gObjectEventPic_Dolliv, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Arboliva[] = { + overworld_ascending_frames(gObjectEventPic_Arboliva, 4, 4), +}; +#endif //P_FAMILY_SMOLIV + +#if P_FAMILY_SQUAWKABILLY +static const struct SpriteFrameImage sPicTable_SquawkabillyGreen[] = { + overworld_ascending_frames(gObjectEventPic_SquawkabillyGreen, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_SquawkabillyBlue[] = { + overworld_ascending_frames(gObjectEventPic_SquawkabillyBlue, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_SquawkabillyYellow[] = { + overworld_ascending_frames(gObjectEventPic_SquawkabillyYellow, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_SquawkabillyWhite[] = { + overworld_ascending_frames(gObjectEventPic_SquawkabillyWhite, 4, 4), +}; +#endif //P_FAMILY_SQUAWKABILLY + +#if P_FAMILY_NACLI +static const struct SpriteFrameImage sPicTable_Nacli[] = { + overworld_ascending_frames(gObjectEventPic_Nacli, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Naclstack[] = { + overworld_ascending_frames(gObjectEventPic_Naclstack, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Garganacl[] = { + overworld_ascending_frames(gObjectEventPic_Garganacl, 4, 4), +}; +#endif //P_FAMILY_NACLI + +#if P_FAMILY_CHARCADET +static const struct SpriteFrameImage sPicTable_Charcadet[] = { + overworld_ascending_frames(gObjectEventPic_Charcadet, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Armarouge[] = { + overworld_ascending_frames(gObjectEventPic_Armarouge, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Ceruledge[] = { + overworld_ascending_frames(gObjectEventPic_Ceruledge, 4, 4), +}; +#endif //P_FAMILY_CHARCADET + +#if P_FAMILY_TADBULB +static const struct SpriteFrameImage sPicTable_Tadbulb[] = { + overworld_ascending_frames(gObjectEventPic_Tadbulb, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Bellibolt[] = { + overworld_ascending_frames(gObjectEventPic_Bellibolt, 4, 4), +}; +#endif //P_FAMILY_TADBULB + +#if P_FAMILY_WATTREL +static const struct SpriteFrameImage sPicTable_Wattrel[] = { + overworld_ascending_frames(gObjectEventPic_Wattrel, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Kilowattrel[] = { + overworld_ascending_frames(gObjectEventPic_Kilowattrel, 4, 4), +}; +#endif //P_FAMILY_WATTREL + +#if P_FAMILY_MASCHIFF +static const struct SpriteFrameImage sPicTable_Maschiff[] = { + overworld_ascending_frames(gObjectEventPic_Maschiff, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Mabosstiff[] = { + overworld_ascending_frames(gObjectEventPic_Mabosstiff, 4, 4), +}; +#endif //P_FAMILY_MASCHIFF + +#if P_FAMILY_SHROODLE +static const struct SpriteFrameImage sPicTable_Shroodle[] = { + overworld_ascending_frames(gObjectEventPic_Shroodle, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Grafaiai[] = { + overworld_ascending_frames(gObjectEventPic_Grafaiai, 4, 4), +}; +#endif //P_FAMILY_SHROODLE + +#if P_FAMILY_BRAMBLIN +static const struct SpriteFrameImage sPicTable_Bramblin[] = { + overworld_ascending_frames(gObjectEventPic_Bramblin, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Brambleghast[] = { + overworld_ascending_frames(gObjectEventPic_Brambleghast, 4, 4), +}; +#endif //P_FAMILY_BRAMBLIN + +#if P_FAMILY_TOEDSCOOL +static const struct SpriteFrameImage sPicTable_Toedscool[] = { + overworld_ascending_frames(gObjectEventPic_Toedscool, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Toedscruel[] = { + overworld_ascending_frames(gObjectEventPic_Toedscruel, 4, 4), +}; +#endif //P_FAMILY_TOEDSCOOL + +#if P_FAMILY_KLAWF +static const struct SpriteFrameImage sPicTable_Klawf[] = { + overworld_ascending_frames(gObjectEventPic_Klawf, 4, 4), +}; +#endif //P_FAMILY_KLAWF + +#if P_FAMILY_CAPSAKID +static const struct SpriteFrameImage sPicTable_Capsakid[] = { + overworld_ascending_frames(gObjectEventPic_Capsakid, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Scovillain[] = { + overworld_ascending_frames(gObjectEventPic_Scovillain, 4, 4), +}; +#endif //P_FAMILY_CAPSAKID + +#if P_FAMILY_RELLOR +static const struct SpriteFrameImage sPicTable_Rellor[] = { + overworld_ascending_frames(gObjectEventPic_Rellor, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Rabsca[] = { + overworld_ascending_frames(gObjectEventPic_Rabsca, 4, 4), +}; +#endif //P_FAMILY_RELLOR + +#if P_FAMILY_FLITTLE +static const struct SpriteFrameImage sPicTable_Flittle[] = { + overworld_ascending_frames(gObjectEventPic_Flittle, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Espathra[] = { + overworld_ascending_frames(gObjectEventPic_Espathra, 4, 4), +}; +#endif //P_FAMILY_FLITTLE + +#if P_FAMILY_TINKATINK +static const struct SpriteFrameImage sPicTable_Tinkatink[] = { + overworld_ascending_frames(gObjectEventPic_Tinkatink, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Tinkatuff[] = { + overworld_ascending_frames(gObjectEventPic_Tinkatuff, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Tinkaton[] = { + overworld_ascending_frames(gObjectEventPic_Tinkaton, 4, 4), +}; +#endif //P_FAMILY_TINKATINK + +#if P_FAMILY_WIGLETT +static const struct SpriteFrameImage sPicTable_Wiglett[] = { + overworld_ascending_frames(gObjectEventPic_Wiglett, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Wugtrio[] = { + overworld_ascending_frames(gObjectEventPic_Wugtrio, 4, 4), +}; +#endif //P_FAMILY_WIGLETT + +#if P_FAMILY_BOMBIRDIER +static const struct SpriteFrameImage sPicTable_Bombirdier[] = { + overworld_ascending_frames(gObjectEventPic_Bombirdier, 4, 4), +}; +#endif //P_FAMILY_BOMBIRDIER + +#if P_FAMILY_FINIZEN +static const struct SpriteFrameImage sPicTable_Finizen[] = { + overworld_ascending_frames(gObjectEventPic_Finizen, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_PalafinZero[] = { + overworld_ascending_frames(gObjectEventPic_PalafinZero, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_PalafinHero[] = { + overworld_ascending_frames(gObjectEventPic_PalafinHero, 4, 4), +}; +#endif //P_FAMILY_FINIZEN + +#if P_FAMILY_VAROOM +static const struct SpriteFrameImage sPicTable_Varoom[] = { + overworld_ascending_frames(gObjectEventPic_Varoom, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Revavroom[] = { + overworld_ascending_frames(gObjectEventPic_Revavroom, 4, 4), +}; +#endif //P_FAMILY_VAROOM + +#if P_FAMILY_CYCLIZAR +static const struct SpriteFrameImage sPicTable_Cyclizar[] = { + overworld_ascending_frames(gObjectEventPic_Cyclizar, 4, 4), +}; +#endif //P_FAMILY_CYCLIZAR + +#if P_FAMILY_ORTHWORM +static const struct SpriteFrameImage sPicTable_Orthworm[] = { + overworld_ascending_frames(gObjectEventPic_Orthworm, 4, 4), +}; +#endif //P_FAMILY_ORTHWORM + +#if P_FAMILY_GLIMMET +static const struct SpriteFrameImage sPicTable_Glimmet[] = { + overworld_ascending_frames(gObjectEventPic_Glimmet, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Glimmora[] = { + overworld_ascending_frames(gObjectEventPic_Glimmora, 4, 4), +}; +#endif //P_FAMILY_GLIMMET + +#if P_FAMILY_GREAVARD +static const struct SpriteFrameImage sPicTable_Greavard[] = { + overworld_ascending_frames(gObjectEventPic_Greavard, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Houndstone[] = { + overworld_ascending_frames(gObjectEventPic_Houndstone, 4, 4), +}; +#endif //P_FAMILY_GREAVARD + +#if P_FAMILY_FLAMIGO +static const struct SpriteFrameImage sPicTable_Flamigo[] = { + overworld_ascending_frames(gObjectEventPic_Flamigo, 4, 4), +}; +#endif //P_FAMILY_FLAMIGO + +#if P_FAMILY_CETODDLE +static const struct SpriteFrameImage sPicTable_Cetoddle[] = { + overworld_ascending_frames(gObjectEventPic_Cetoddle, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Cetitan[] = { + overworld_ascending_frames(gObjectEventPic_Cetitan, 4, 4), +}; +#endif //P_FAMILY_CETODDLE + +#if P_FAMILY_VELUZA +static const struct SpriteFrameImage sPicTable_Veluza[] = { + overworld_ascending_frames(gObjectEventPic_Veluza, 4, 4), +}; +#endif //P_FAMILY_VELUZA + +#if P_FAMILY_DONDOZO +static const struct SpriteFrameImage sPicTable_Dondozo[] = { + overworld_ascending_frames(gObjectEventPic_Dondozo, 8, 8), +}; +#endif //P_FAMILY_DONDOZO + +#if P_FAMILY_TATSUGIRI +static const struct SpriteFrameImage sPicTable_TatsugiriCurly[] = { + overworld_ascending_frames(gObjectEventPic_TatsugiriCurly, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_TatsugiriDroopy[] = { + overworld_ascending_frames(gObjectEventPic_TatsugiriDroopy, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_TatsugiriStretchy[] = { + overworld_ascending_frames(gObjectEventPic_TatsugiriStretchy, 4, 4), +}; +#endif //P_FAMILY_DONDOZO + +#if P_FAMILY_GREAT_TUSK +static const struct SpriteFrameImage sPicTable_GreatTusk[] = { + overworld_ascending_frames(gObjectEventPic_GreatTusk, 4, 4), +}; +#endif //P_FAMILY_GREAT_TUSK + +#if P_FAMILY_SCREAM_TAIL +static const struct SpriteFrameImage sPicTable_ScreamTail[] = { + overworld_ascending_frames(gObjectEventPic_ScreamTail, 4, 4), +}; +#endif //P_FAMILY_SCREAM_TAIL + +#if P_FAMILY_BRUTE_BONNET +static const struct SpriteFrameImage sPicTable_BruteBonnet[] = { + overworld_ascending_frames(gObjectEventPic_BruteBonnet, 4, 4), +}; +#endif //P_FAMILY_BRUTE_BONNET + +#if P_FAMILY_FLUTTER_MANE +static const struct SpriteFrameImage sPicTable_FlutterMane[] = { + overworld_ascending_frames(gObjectEventPic_FlutterMane, 4, 4), +}; +#endif //P_FAMILY_FLUTTER_MANE + +#if P_FAMILY_SLITHER_WING +static const struct SpriteFrameImage sPicTable_SlitherWing[] = { + overworld_ascending_frames(gObjectEventPic_SlitherWing, 4, 4), +}; +#endif //P_FAMILY_SLITHER_WING + +#if P_FAMILY_SANDY_SHOCKS +static const struct SpriteFrameImage sPicTable_SandyShocks[] = { + overworld_ascending_frames(gObjectEventPic_SandyShocks, 4, 4), +}; +#endif //P_FAMILY_SANDY_SHOCKS + +#if P_FAMILY_IRON_TREADS +static const struct SpriteFrameImage sPicTable_IronTreads[] = { + overworld_ascending_frames(gObjectEventPic_IronTreads, 4, 4), +}; +#endif //P_FAMILY_IRON_TREADS + +#if P_FAMILY_IRON_BUNDLE +static const struct SpriteFrameImage sPicTable_IronBundle[] = { + overworld_ascending_frames(gObjectEventPic_IronBundle, 4, 4), +}; +#endif //P_FAMILY_IRON_BUNDLE + +#if P_FAMILY_IRON_HANDS +static const struct SpriteFrameImage sPicTable_IronHands[] = { + overworld_ascending_frames(gObjectEventPic_IronHands, 4, 4), +}; +#endif //P_FAMILY_IRON_HANDS + +#if P_FAMILY_IRON_JUGULIS +static const struct SpriteFrameImage sPicTable_IronJugulis[] = { + overworld_ascending_frames(gObjectEventPic_IronJugulis, 4, 4), +}; +#endif //P_FAMILY_IRON_JUGULIS + +#if P_FAMILY_IRON_MOTH +static const struct SpriteFrameImage sPicTable_IronMoth[] = { + overworld_ascending_frames(gObjectEventPic_IronMoth, 4, 4), +}; +#endif //P_FAMILY_IRON_MOTH + +#if P_FAMILY_IRON_THORNS +static const struct SpriteFrameImage sPicTable_IronThorns[] = { + overworld_ascending_frames(gObjectEventPic_IronThorns, 4, 4), +}; +#endif //P_FAMILY_IRON_THORNS + +#if P_FAMILY_FRIGIBAX +static const struct SpriteFrameImage sPicTable_Frigibax[] = { + overworld_ascending_frames(gObjectEventPic_Frigibax, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Arctibax[] = { + overworld_ascending_frames(gObjectEventPic_Arctibax, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Baxcalibur[] = { + overworld_ascending_frames(gObjectEventPic_Baxcalibur, 4, 4), +}; +#endif //P_FAMILY_FRIGIBAX + +#if P_FAMILY_GIMMIGHOUL +static const struct SpriteFrameImage sPicTable_GimmighoulChest[] = { + overworld_ascending_frames(gObjectEventPic_GimmighoulChest, 4, 4), +}; +//static const struct SpriteFrameImage sPicTable_GimmighoulRoaming[] = { +// overworld_ascending_frames(gObjectEventPic_GimmighoulRoaming, 4, 4), +//}; +static const struct SpriteFrameImage sPicTable_Gholdengo[] = { + overworld_ascending_frames(gObjectEventPic_Gholdengo, 4, 4), +}; +#endif //P_FAMILY_GIMMIGHOUL + +#if P_FAMILY_WO_CHIEN +static const struct SpriteFrameImage sPicTable_WoChien[] = { + overworld_ascending_frames(gObjectEventPic_WoChien, 4, 4), +}; +#endif //P_FAMILY_WO_CHIEN + +#if P_FAMILY_CHIEN_PAO +static const struct SpriteFrameImage sPicTable_ChienPao[] = { + overworld_ascending_frames(gObjectEventPic_ChienPao, 4, 4), +}; +#endif //P_FAMILY_CHIEN_PAO + +#if P_FAMILY_TING_LU +static const struct SpriteFrameImage sPicTable_TingLu[] = { + overworld_ascending_frames(gObjectEventPic_TingLu, 4, 4), +}; +#endif //P_FAMILY_TING_LU + +#if P_FAMILY_CHI_YU +static const struct SpriteFrameImage sPicTable_ChiYu[] = { + overworld_ascending_frames(gObjectEventPic_ChiYu, 4, 4), +}; +#endif //P_FAMILY_CHI_YU + +#if P_FAMILY_ROARING_MOON +static const struct SpriteFrameImage sPicTable_RoaringMoon[] = { + overworld_ascending_frames(gObjectEventPic_RoaringMoon, 4, 4), +}; +#endif //P_FAMILY_ROARING_MOON + +#if P_FAMILY_IRON_VALIANT +static const struct SpriteFrameImage sPicTable_IronValiant[] = { + overworld_ascending_frames(gObjectEventPic_IronValiant, 4, 4), +}; +#endif //P_FAMILY_IRON_VALIANT + +#if P_FAMILY_KORAIDON +static const struct SpriteFrameImage sPicTable_Koraidon[] = { + overworld_ascending_frames(gObjectEventPic_Koraidon, 8, 8), +}; +#endif //P_FAMILY_KORAIDON + +#if P_FAMILY_MIRAIDON +static const struct SpriteFrameImage sPicTable_Miraidon[] = { + overworld_ascending_frames(gObjectEventPic_Miraidon, 8, 8), +}; +#endif //P_FAMILY_MIRAIDON + +#if P_FAMILY_WALKING_WAKE +static const struct SpriteFrameImage sPicTable_WalkingWake[] = { + overworld_ascending_frames(gObjectEventPic_WalkingWake, 4, 4), +}; +#endif //P_FAMILY_WALKING_WAKE + +#if P_FAMILY_IRON_LEAVES +static const struct SpriteFrameImage sPicTable_IronLeaves[] = { + overworld_ascending_frames(gObjectEventPic_IronLeaves, 4, 4), +}; +#endif //P_FAMILY_IRON_LEAVES + +#if P_FAMILY_POLTCHAGEIST +static const struct SpriteFrameImage sPicTable_Poltchageist[] = { + overworld_ascending_frames(gObjectEventPic_Poltchageist, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Sinistcha[] = { + overworld_ascending_frames(gObjectEventPic_Sinistcha, 4, 4), +}; +#endif //P_FAMILY_POLTCHAGEIST + +#if P_FAMILY_OKIDOGI +static const struct SpriteFrameImage sPicTable_Okidogi[] = { + overworld_ascending_frames(gObjectEventPic_Okidogi, 4, 4), +}; +#endif //P_FAMILY_OKIDOGI + +#if P_FAMILY_MUNKIDORI +static const struct SpriteFrameImage sPicTable_Munkidori[] = { + overworld_ascending_frames(gObjectEventPic_Munkidori, 4, 4), +}; +#endif //P_FAMILY_MUNKIDORI + +#if P_FAMILY_FEZANDIPITI +static const struct SpriteFrameImage sPicTable_Fezandipiti[] = { + overworld_ascending_frames(gObjectEventPic_Fezandipiti, 4, 4), +}; +#endif //P_FAMILY_FEZANDIPITI + +#if P_FAMILY_OGERPON +static const struct SpriteFrameImage sPicTable_OgerponTeal[] = { + overworld_ascending_frames(gObjectEventPic_OgerponTeal, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_OgerponWellspring[] = { + overworld_ascending_frames(gObjectEventPic_OgerponWellspring, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_OgerponHearthflame[] = { + overworld_ascending_frames(gObjectEventPic_OgerponHearthflame, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_OgerponCornerstone[] = { + overworld_ascending_frames(gObjectEventPic_OgerponCornerstone, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_OgerponTealTera[] = { + overworld_ascending_frames(gObjectEventPic_OgerponTeal, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_OgerponWellspringTera[] = { + overworld_ascending_frames(gObjectEventPic_OgerponWellspring, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_OgerponHearthflameTera[] = { + overworld_ascending_frames(gObjectEventPic_OgerponHearthflame, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_OgerponCornerstoneTera[] = { + overworld_ascending_frames(gObjectEventPic_OgerponCornerstone, 4, 4), +}; +#endif //P_FAMILY_OGERPON + +#if P_FAMILY_GOUGING_FIRE +static const struct SpriteFrameImage sPicTable_GougingFire[] = { + overworld_ascending_frames(gObjectEventPic_GougingFire, 4, 4), +}; +#endif //P_FAMILY_GOUGING_FIRE + +#if P_FAMILY_RAGING_BOLT +static const struct SpriteFrameImage sPicTable_RagingBolt[] = { + overworld_ascending_frames(gObjectEventPic_RagingBolt, 8, 8), +}; +#endif //P_FAMILY_RAGING_BOLT + +#if P_FAMILY_IRON_BOULDER +static const struct SpriteFrameImage sPicTable_IronBoulder[] = { + overworld_ascending_frames(gObjectEventPic_IronBoulder, 4, 4), +}; +#endif //P_FAMILY_IRON_BOULDER + +#if P_FAMILY_IRON_CROWN +static const struct SpriteFrameImage sPicTable_IronCrown[] = { + overworld_ascending_frames(gObjectEventPic_IronCrown, 4, 4), +}; +#endif //P_FAMILY_IRON_CROWN + +#if P_FAMILY_TERAPAGOS +static const struct SpriteFrameImage sPicTable_TerapagosNormal[] = { + overworld_ascending_frames(gObjectEventPic_TerapagosNormal, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_TerapagosTerastal[] = { + overworld_ascending_frames(gObjectEventPic_TerapagosTerastal, 4, 4), +}; +//static const struct SpriteFrameImage sPicTable_TerapagosStellar[] = { +// overworld_ascending_frames(gObjectEventPic_TerapagosStellar, 4, 4), +//}; +#endif //P_FAMILY_TERAPAGOS + +#if P_FAMILY_PECHARUNT +static const struct SpriteFrameImage sPicTable_Pecharunt[] = { + overworld_ascending_frames(gObjectEventPic_Pecharunt, 4, 4), +}; +#endif //P_FAMILY_PECHARUNT + +#endif //OW_POKEMON_OBJECT_EVENTS diff --git a/src/data/pokemon/species_info.h b/src/data/pokemon/species_info.h index 9c2fc2450a..5b3d31786e 100644 --- a/src/data/pokemon/species_info.h +++ b/src/data/pokemon/species_info.h @@ -45,7 +45,7 @@ #define OVERWORLD_PAL_FEMALE(...) #endif //OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE -#define OVERWORLD_DATA(objEventPic, _size, shadow, _tracks, _anims) \ +#define OVERWORLD_DATA(picTable, _size, shadow, _tracks, _anims) \ { \ .tileTag = TAG_NONE, \ .paletteTag = OBJ_EVENT_PAL_TAG_DYNAMIC, \ @@ -61,7 +61,7 @@ .oam = (_size == SIZE_32x32 ? &gObjectEventBaseOam_32x32 : &gObjectEventBaseOam_64x64), \ .subspriteTables = (_size == SIZE_32x32 ? sOamTables_32x32 : sOamTables_64x64), \ .anims = _anims, \ - .images = (const struct SpriteFrameImage[]) { overworld_ascending_frames(objEventPic, SIZE_32x32 ? 4 : 8, SIZE_32x32 ? 4 : 8), }, \ + .images = picTable, \ .affineAnims = gDummySpriteAffineAnimTable, \ } @@ -139,7 +139,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .oam = &gObjectEventBaseOam_32x32, .subspriteTables = sOamTables_32x32, .anims = sAnimTable_Following, - .images = (const struct SpriteFrameImage[]) { overworld_ascending_frames(gObjectEventPic_Substitute, 4, 4), }, + .images = sPicTable_Substitute, .affineAnims = gDummySpriteAffineAnimTable, }, #endif diff --git a/src/data/pokemon/species_info/gen_1_families.h b/src/data/pokemon/species_info/gen_1_families.h index 21cc97cc91..05bad13974 100644 --- a/src/data/pokemon/species_info/gen_1_families.h +++ b/src/data/pokemon/species_info/gen_1_families.h @@ -58,7 +58,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(1, -1, SHADOW_SIZE_S) FOOTPRINT(Bulbasaur) OVERWORLD( - gObjectEventPic_Bulbasaur, + sPicTable_Bulbasaur, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -127,7 +127,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(-1, 3, SHADOW_SIZE_L) FOOTPRINT(Ivysaur) OVERWORLD( - gObjectEventPic_Ivysaur, + sPicTable_Ivysaur, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -207,7 +207,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(2, 6, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Venusaur) OVERWORLD( - gObjectEventPic_Venusaur, + sPicTable_Venusaur, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -216,7 +216,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = gShinyOverworldPalette_Venusaur ) OVERWORLD_FEMALE( - gObjectEventPic_VenusaurF, + sPicTable_VenusaurF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -280,7 +280,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = FOOTPRINT(Venusaur) #if OW_BATTLE_ONLY_FORMS OVERWORLD( - gObjectEventPic_VenusaurMega, + sPicTable_VenusaurMega, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -412,7 +412,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(-2, 3, SHADOW_SIZE_S) FOOTPRINT(Charmander) OVERWORLD( - gObjectEventPic_Charmander, + sPicTable_Charmander, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -481,7 +481,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(0, 5, SHADOW_SIZE_M) FOOTPRINT(Charmeleon) OVERWORLD( - gObjectEventPic_Charmeleon, + sPicTable_Charmeleon, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -553,7 +553,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(2, 13, SHADOW_SIZE_L) FOOTPRINT(Charizard) OVERWORLD( - gObjectEventPic_Charizard, + sPicTable_Charizard, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -618,7 +618,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = FOOTPRINT(Charizard) #if OW_BATTLE_ONLY_FORMS OVERWORLD( - gObjectEventPic_CharizardMegaX, + sPicTable_CharizardMegaX, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -685,7 +685,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = FOOTPRINT(Charizard) #if OW_BATTLE_ONLY_FORMS OVERWORLD( - gObjectEventPic_CharizardMegaY, + sPicTable_CharizardMegaY, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -817,7 +817,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(-3, 2, SHADOW_SIZE_S) FOOTPRINT(Squirtle) OVERWORLD( - gObjectEventPic_Squirtle, + sPicTable_Squirtle, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -886,7 +886,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(0, 6, SHADOW_SIZE_M) FOOTPRINT(Wartortle) OVERWORLD( - gObjectEventPic_Wartortle, + sPicTable_Wartortle, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -961,7 +961,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(1, 7, SHADOW_SIZE_L) FOOTPRINT(Blastoise) OVERWORLD( - gObjectEventPic_Blastoise, + sPicTable_Blastoise, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1027,7 +1027,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = FOOTPRINT(Blastoise) #if OW_BATTLE_ONLY_FORMS OVERWORLD( - gObjectEventPic_BlastoiseMega, + sPicTable_BlastoiseMega, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1163,7 +1163,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(4, 1, SHADOW_SIZE_S) FOOTPRINT(Caterpie) OVERWORLD( - gObjectEventPic_Caterpie, + sPicTable_Caterpie, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SPOT, @@ -1230,7 +1230,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(3, 0, SHADOW_SIZE_S) FOOTPRINT(Metapod) OVERWORLD( - gObjectEventPic_Metapod, + sPicTable_Metapod, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SPOT, @@ -1327,7 +1327,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(-3, 13, SHADOW_SIZE_S) FOOTPRINT(Butterfree) OVERWORLD( - gObjectEventPic_Butterfree, + sPicTable_Butterfree, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1336,7 +1336,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = gShinyOverworldPalette_Butterfree ) OVERWORLD_FEMALE( - gObjectEventPic_ButterfreeF, + sPicTable_ButterfreeF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1470,7 +1470,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(0, 0, SHADOW_SIZE_S) FOOTPRINT(Weedle) OVERWORLD( - gObjectEventPic_Weedle, + sPicTable_Weedle, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SPOT, @@ -1547,7 +1547,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(0, 2, SHADOW_SIZE_S) FOOTPRINT(Kakuna) OVERWORLD( - gObjectEventPic_Kakuna, + sPicTable_Kakuna, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SPOT, @@ -1632,7 +1632,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(4, 15, SHADOW_SIZE_M) FOOTPRINT(Beedrill) OVERWORLD( - gObjectEventPic_Beedrill, + sPicTable_Beedrill, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1701,7 +1701,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = FOOTPRINT(Beedrill) #if OW_BATTLE_ONLY_FORMS OVERWORLD( - gObjectEventPic_BeedrillMega, + sPicTable_BeedrillMega, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1779,7 +1779,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(-1, -1, SHADOW_SIZE_S) FOOTPRINT(Pidgey) OVERWORLD( - gObjectEventPic_Pidgey, + sPicTable_Pidgey, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1854,7 +1854,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(-4, 6, SHADOW_SIZE_M) FOOTPRINT(Pidgeotto) OVERWORLD( - gObjectEventPic_Pidgeotto, + sPicTable_Pidgeotto, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1935,7 +1935,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(-7, 14, SHADOW_SIZE_M) FOOTPRINT(Pidgeot) OVERWORLD( - gObjectEventPic_Pidgeot, + sPicTable_Pidgeot, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2001,7 +2001,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = FOOTPRINT(Pidgeot) #if OW_BATTLE_ONLY_FORMS OVERWORLD( - gObjectEventPic_PidgeotMega, + sPicTable_PidgeotMega, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2081,7 +2081,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(1, -3, SHADOW_SIZE_S) FOOTPRINT(Rattata) OVERWORLD( - gObjectEventPic_Rattata, + sPicTable_Rattata, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2090,7 +2090,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = gShinyOverworldPalette_Rattata ) OVERWORLD_FEMALE( - gObjectEventPic_RattataF, + sPicTable_RattataF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2172,7 +2172,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(0, 8, SHADOW_SIZE_L) FOOTPRINT(Raticate) OVERWORLD( - gObjectEventPic_Raticate, + sPicTable_Raticate, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2181,7 +2181,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = gShinyOverworldPalette_Raticate ) OVERWORLD_FEMALE( - gObjectEventPic_RaticateF, + sPicTable_RaticateF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2244,7 +2244,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(-3, 2, SHADOW_SIZE_S) FOOTPRINT(Rattata) OVERWORLD( - gObjectEventPic_RattataAlola, + sPicTable_RattataAlola, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2308,7 +2308,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(-4, 3, SHADOW_SIZE_L) FOOTPRINT(Raticate) OVERWORLD( - gObjectEventPic_RaticateAlola, + sPicTable_RaticateAlola, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2369,7 +2369,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(-4, 3, SHADOW_SIZE_L) FOOTPRINT(Raticate) OVERWORLD( - gObjectEventPic_RaticateAlola, + sPicTable_RaticateAlola, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2444,7 +2444,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(0, 1, SHADOW_SIZE_S) FOOTPRINT(Spearow) OVERWORLD( - gObjectEventPic_Spearow, + sPicTable_Spearow, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2520,7 +2520,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(0, 17, SHADOW_SIZE_M) FOOTPRINT(Fearow) OVERWORLD( - gObjectEventPic_Fearow, + sPicTable_Fearow, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2592,7 +2592,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(0, 2, SHADOW_SIZE_M) FOOTPRINT(Ekans) OVERWORLD( - gObjectEventPic_Ekans, + sPicTable_Ekans, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SLITHER, @@ -2666,7 +2666,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(1, 11, SHADOW_SIZE_L) FOOTPRINT(Arbok) OVERWORLD( - gObjectEventPic_Arbok, + sPicTable_Arbok, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SLITHER, @@ -2734,7 +2734,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(0, 0, SHADOW_SIZE_S) FOOTPRINT(Pichu) OVERWORLD( - gObjectEventPic_Pichu, + sPicTable_Pichu, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2804,7 +2804,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(2, 0, SHADOW_SIZE_S) FOOTPRINT(Pichu) OVERWORLD( - gObjectEventPic_PichuSpikyEared, + sPicTable_PichuSpikyEared, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2889,7 +2889,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = #endif //P_GENDER_DIFFERENCES SHADOW(-3, 5, SHADOW_SIZE_M) OVERWORLD( - gObjectEventPic_Pikachu, + sPicTable_Pikachu, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2898,7 +2898,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = gShinyOverworldPalette_Pikachu ) OVERWORLD_FEMALE( - gObjectEventPic_PikachuF, + sPicTable_PikachuF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3791,7 +3791,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(-3, 5, SHADOW_SIZE_M) FOOTPRINT(Pikachu) OVERWORLD( - gObjectEventPic_Pikachu, + sPicTable_Pikachu, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3878,7 +3878,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(2, 10, SHADOW_SIZE_M) FOOTPRINT(Raichu) OVERWORLD( - gObjectEventPic_Raichu, + sPicTable_Raichu, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3887,7 +3887,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = gShinyOverworldPalette_Raichu ) OVERWORLD_FEMALE( - gObjectEventPic_RaichuF, + sPicTable_RaichuF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3950,7 +3950,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(3, 15, SHADOW_SIZE_M) FOOTPRINT(Raichu) OVERWORLD( - gObjectEventPic_RaichuAlola, + sPicTable_RaichuAlola, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4024,7 +4024,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(0, 1, SHADOW_SIZE_M) FOOTPRINT(Sandshrew) OVERWORLD( - gObjectEventPic_Sandshrew, + sPicTable_Sandshrew, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4096,7 +4096,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(4, 4, SHADOW_SIZE_L) FOOTPRINT(Sandslash) OVERWORLD( - gObjectEventPic_Sandslash, + sPicTable_Sandslash, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4161,7 +4161,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(-2, -1, SHADOW_SIZE_M) FOOTPRINT(Sandshrew) OVERWORLD( - gObjectEventPic_SandshrewAlola, + sPicTable_SandshrewAlola, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4228,7 +4228,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(0, 9, SHADOW_SIZE_L) FOOTPRINT(Sandslash) OVERWORLD( - gObjectEventPic_SandslashAlola, + sPicTable_SandslashAlola, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4310,7 +4310,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(1, 0, SHADOW_SIZE_S) FOOTPRINT(NidoranF) OVERWORLD( - gObjectEventPic_NidoranF, + sPicTable_NidoranF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4381,7 +4381,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(3, 5, SHADOW_SIZE_M) FOOTPRINT(Nidorina) OVERWORLD( - gObjectEventPic_Nidorina, + sPicTable_Nidorina, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4459,7 +4459,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(1, 9, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Nidoqueen) OVERWORLD( - gObjectEventPic_Nidoqueen, + sPicTable_Nidoqueen, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4529,7 +4529,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(1, 0, SHADOW_SIZE_S) FOOTPRINT(NidoranM) OVERWORLD( - gObjectEventPic_NidoranM, + sPicTable_NidoranM, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4601,7 +4601,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(2, 1, SHADOW_SIZE_L) FOOTPRINT(Nidorino) OVERWORLD( - gObjectEventPic_Nidorino, + sPicTable_Nidorino, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4682,7 +4682,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(0, 8, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Nidoking) OVERWORLD( - gObjectEventPic_Nidoking, + sPicTable_Nidoking, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4764,7 +4764,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(0, -4, SHADOW_SIZE_S) FOOTPRINT(Cleffa) OVERWORLD( - gObjectEventPic_Cleffa, + sPicTable_Cleffa, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4839,7 +4839,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(1, 1, SHADOW_SIZE_S) FOOTPRINT(Clefairy) OVERWORLD( - gObjectEventPic_Clefairy, + sPicTable_Clefairy, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4920,7 +4920,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(0, 7, SHADOW_SIZE_M) FOOTPRINT(Clefable) OVERWORLD( - gObjectEventPic_Clefable, + sPicTable_Clefable, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4991,7 +4991,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(0, 2, SHADOW_SIZE_M) FOOTPRINT(Vulpix) OVERWORLD( - gObjectEventPic_Vulpix, + sPicTable_Vulpix, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5064,7 +5064,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(1, 7, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Ninetales) OVERWORLD( - gObjectEventPic_Ninetales, + sPicTable_Ninetales, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5129,7 +5129,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(-2, 3, SHADOW_SIZE_M) FOOTPRINT(Vulpix) OVERWORLD( - gObjectEventPic_VulpixAlola, + sPicTable_VulpixAlola, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5197,7 +5197,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(0, 12, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Ninetales) OVERWORLD( - gObjectEventPic_NinetalesAlola, + sPicTable_NinetalesAlola, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5282,7 +5282,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(0, -3, SHADOW_SIZE_S) FOOTPRINT(Igglybuff) OVERWORLD( - gObjectEventPic_Igglybuff, + sPicTable_Igglybuff, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5359,7 +5359,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(-1, -1, SHADOW_SIZE_S) FOOTPRINT(Jigglypuff) OVERWORLD( - gObjectEventPic_Jigglypuff, + sPicTable_Jigglypuff, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5442,7 +5442,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(-1, 8, SHADOW_SIZE_M) FOOTPRINT(Wigglytuff) OVERWORLD( - gObjectEventPic_Wigglytuff, + sPicTable_Wigglytuff, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5527,7 +5527,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(-4, 11, SHADOW_SIZE_S) FOOTPRINT(Zubat) OVERWORLD( - gObjectEventPic_Zubat, + sPicTable_Zubat, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5536,7 +5536,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = gShinyOverworldPalette_Zubat ) OVERWORLD_FEMALE( - gObjectEventPic_ZubatF, + sPicTable_ZubatF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5625,7 +5625,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(2, 14, SHADOW_SIZE_M) FOOTPRINT(Golbat) OVERWORLD( - gObjectEventPic_Golbat, + sPicTable_Golbat, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5634,7 +5634,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = gShinyOverworldPalette_Golbat ) OVERWORLD_FEMALE( - gObjectEventPic_GolbatF, + sPicTable_GolbatF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5721,7 +5721,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(-3, 14, SHADOW_SIZE_M) FOOTPRINT(Crobat) OVERWORLD( - gObjectEventPic_Crobat, + sPicTable_Crobat, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, @@ -5795,7 +5795,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(0, -2, SHADOW_SIZE_S) FOOTPRINT(Oddish) OVERWORLD( - gObjectEventPic_Oddish, + sPicTable_Oddish, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5871,7 +5871,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(-1, 3, SHADOW_SIZE_M) FOOTPRINT(Gloom) OVERWORLD( - gObjectEventPic_Gloom, + sPicTable_Gloom, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5880,7 +5880,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = gShinyOverworldPalette_Gloom ) OVERWORLD_FEMALE( - gObjectEventPic_GloomF, + sPicTable_GloomF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5960,7 +5960,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(-1, 7, SHADOW_SIZE_L) FOOTPRINT(Vileplume) OVERWORLD( - gObjectEventPic_Vileplume, + sPicTable_Vileplume, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5969,7 +5969,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = gShinyOverworldPalette_Vileplume ) OVERWORLD_FEMALE( - gObjectEventPic_VileplumeF, + sPicTable_VileplumeF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6056,7 +6056,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(0, 0, SHADOW_SIZE_S) FOOTPRINT(Bellossom) OVERWORLD( - gObjectEventPic_Bellossom, + sPicTable_Bellossom, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6145,7 +6145,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(7, -11, SHADOW_SIZE_M) FOOTPRINT(Paras) OVERWORLD( - gObjectEventPic_Paras, + sPicTable_Paras, SIZE_32x32, SHADOW_SIZE_M, TRACKS_BUG, @@ -6224,7 +6224,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(5, 2, SHADOW_SIZE_L) FOOTPRINT(Parasect) OVERWORLD( - gObjectEventPic_Parasect, + sPicTable_Parasect, SIZE_32x32, SHADOW_SIZE_M, TRACKS_BUG, @@ -6300,7 +6300,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(-1, 5, SHADOW_SIZE_M) FOOTPRINT(Venonat) OVERWORLD( - gObjectEventPic_Venonat, + sPicTable_Venonat, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6394,7 +6394,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(-5, 18, SHADOW_SIZE_M) FOOTPRINT(Venomoth) OVERWORLD( - gObjectEventPic_Venomoth, + sPicTable_Venomoth, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6475,7 +6475,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = NO_SHADOW FOOTPRINT(Diglett) OVERWORLD( - gObjectEventPic_Diglett, + sPicTable_Diglett, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, @@ -6553,7 +6553,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = NO_SHADOW FOOTPRINT(Dugtrio) OVERWORLD( - gObjectEventPic_Dugtrio, + sPicTable_Dugtrio, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, @@ -6618,7 +6618,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = NO_SHADOW FOOTPRINT(Diglett) OVERWORLD( - gObjectEventPic_DiglettAlola, + sPicTable_DiglettAlola, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6686,7 +6686,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = NO_SHADOW FOOTPRINT(Dugtrio) OVERWORLD( - gObjectEventPic_DugtrioAlola, + sPicTable_DugtrioAlola, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6766,7 +6766,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(0, 3, SHADOW_SIZE_S) FOOTPRINT(Meowth) OVERWORLD( - gObjectEventPic_Meowth, + sPicTable_Meowth, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6841,7 +6841,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(-2, 8, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Persian) OVERWORLD( - gObjectEventPic_Persian, + sPicTable_Persian, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6906,7 +6906,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(-2, 5, SHADOW_SIZE_M) FOOTPRINT(Meowth) OVERWORLD( - gObjectEventPic_MeowthAlola, + sPicTable_MeowthAlola, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6973,7 +6973,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(-1, 9, SHADOW_SIZE_L) FOOTPRINT(Persian) OVERWORLD( - gObjectEventPic_PersianAlola, + sPicTable_PersianAlola, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -7039,7 +7039,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(1, 4, SHADOW_SIZE_M) FOOTPRINT(Meowth) OVERWORLD( - gObjectEventPic_MeowthGalar, + sPicTable_MeowthGalar, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -7104,7 +7104,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(2, 11, SHADOW_SIZE_M) FOOTPRINT(Perrserker) OVERWORLD( - gObjectEventPic_Perrserker, + sPicTable_Perrserker, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -7235,7 +7235,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(1, 2, SHADOW_SIZE_M) FOOTPRINT(Psyduck) OVERWORLD( - gObjectEventPic_Psyduck, + sPicTable_Psyduck, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -7305,7 +7305,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(1, 6, SHADOW_SIZE_M) FOOTPRINT(Golduck) OVERWORLD( - gObjectEventPic_Golduck, + sPicTable_Golduck, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -7381,7 +7381,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(-1, 1, SHADOW_SIZE_M) FOOTPRINT(Mankey) OVERWORLD( - gObjectEventPic_Mankey, + sPicTable_Mankey, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -7457,7 +7457,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(0, 7, SHADOW_SIZE_L) FOOTPRINT(Primeape) OVERWORLD( - gObjectEventPic_Primeape, + sPicTable_Primeape, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -7521,7 +7521,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(0, 13, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Annihilape) OVERWORLD( - gObjectEventPic_Annihilape, + sPicTable_Annihilape, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -7594,7 +7594,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(0, 4, SHADOW_SIZE_M) FOOTPRINT(Growlithe) OVERWORLD( - gObjectEventPic_Growlithe, + sPicTable_Growlithe, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -7663,7 +7663,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(-4, 11, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Arcanine) OVERWORLD( - gObjectEventPic_Arcanine, + sPicTable_Arcanine, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -7727,7 +7727,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(2, -2, SHADOW_SIZE_M) FOOTPRINT(Growlithe) OVERWORLD( - gObjectEventPic_GrowlitheHisui, + sPicTable_GrowlitheHisui, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -7792,7 +7792,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(-1, 11, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Arcanine) OVERWORLD( - gObjectEventPic_ArcanineHisui, + sPicTable_ArcanineHisui, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -7864,7 +7864,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(-3, 0, SHADOW_SIZE_S) FOOTPRINT(Poliwag) OVERWORLD( - gObjectEventPic_Poliwag, + sPicTable_Poliwag, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -7937,7 +7937,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(-1, 4, SHADOW_SIZE_M) FOOTPRINT(Poliwhirl) OVERWORLD( - gObjectEventPic_Poliwhirl, + sPicTable_Poliwhirl, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -8015,7 +8015,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(0, 7, SHADOW_SIZE_L) FOOTPRINT(Poliwrath) OVERWORLD( - gObjectEventPic_Poliwrath, + sPicTable_Poliwrath, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -8100,7 +8100,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(1, 9, SHADOW_SIZE_M) FOOTPRINT(Politoed) OVERWORLD( - gObjectEventPic_Politoed, + sPicTable_Politoed, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -8109,7 +8109,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = gShinyOverworldPalette_Politoed ) OVERWORLD_FEMALE( - gObjectEventPic_PolitoedF, + sPicTable_PolitoedF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -8185,7 +8185,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(0, 0, SHADOW_SIZE_L) FOOTPRINT(Abra) OVERWORLD( - gObjectEventPic_Abra, + sPicTable_Abra, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, @@ -8261,7 +8261,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(1, 6, SHADOW_SIZE_L) FOOTPRINT(Kadabra) OVERWORLD( - gObjectEventPic_Kadabra, + sPicTable_Kadabra, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, @@ -8270,7 +8270,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = gShinyOverworldPalette_Kadabra ) OVERWORLD_FEMALE( - gObjectEventPic_KadabraF, + sPicTable_KadabraF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, @@ -8353,7 +8353,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(-1, 9, SHADOW_SIZE_L) FOOTPRINT(Alakazam) OVERWORLD( - gObjectEventPic_Alakazam, + sPicTable_Alakazam, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, @@ -8362,7 +8362,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = gShinyOverworldPalette_Alakazam ) OVERWORLD_FEMALE( - gObjectEventPic_AlakazamF, + sPicTable_AlakazamF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, @@ -8427,7 +8427,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = FOOTPRINT(Alakazam) #if OW_BATTLE_ONLY_FORMS OVERWORLD( - gObjectEventPic_AlakazamMega, + sPicTable_AlakazamMega, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, @@ -8513,7 +8513,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(0, 3, SHADOW_SIZE_S) FOOTPRINT(Machop) OVERWORLD( - gObjectEventPic_Machop, + sPicTable_Machop, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -8587,7 +8587,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(-1, 9, SHADOW_SIZE_M) FOOTPRINT(Machoke) OVERWORLD( - gObjectEventPic_Machoke, + sPicTable_Machoke, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -8672,7 +8672,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(7, 13, SHADOW_SIZE_L) FOOTPRINT(Machamp) OVERWORLD( - gObjectEventPic_Machamp, + sPicTable_Machamp, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -8805,7 +8805,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(-2, 3, SHADOW_SIZE_S) FOOTPRINT(Bellsprout) OVERWORLD( - gObjectEventPic_Bellsprout, + sPicTable_Bellsprout, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -8878,7 +8878,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(-3, 3, SHADOW_SIZE_M) FOOTPRINT(Weepinbell) OVERWORLD( - gObjectEventPic_Weepinbell, + sPicTable_Weepinbell, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SPOT, @@ -8957,7 +8957,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(3, 8, SHADOW_SIZE_M) FOOTPRINT(Victreebel) OVERWORLD( - gObjectEventPic_Victreebel, + sPicTable_Victreebel, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SPOT, @@ -9028,7 +9028,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(1, 6, SHADOW_SIZE_M) FOOTPRINT(Tentacool) OVERWORLD( - gObjectEventPic_Tentacool, + sPicTable_Tentacool, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SPOT, @@ -9099,7 +9099,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(2, 8, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Tentacruel) OVERWORLD( - gObjectEventPic_Tentacruel, + sPicTable_Tentacruel, SIZE_32x32, SHADOW_SIZE_M, TRACKS_BUG, @@ -9190,7 +9190,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(1, 2, SHADOW_SIZE_M) FOOTPRINT(Geodude) OVERWORLD( - gObjectEventPic_Geodude, + sPicTable_Geodude, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SPOT, @@ -9262,7 +9262,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(0, 3, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Graveler) OVERWORLD( - gObjectEventPic_Graveler, + sPicTable_Graveler, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -9334,7 +9334,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(3, 5, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Golem) OVERWORLD( - gObjectEventPic_Golem, + sPicTable_Golem, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -9400,7 +9400,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(-1, 10, SHADOW_SIZE_M) FOOTPRINT(Geodude) OVERWORLD( - gObjectEventPic_GeodudeAlola, + sPicTable_GeodudeAlola, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -9467,7 +9467,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(1, 5, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Graveler) OVERWORLD( - gObjectEventPic_GravelerAlola, + sPicTable_GravelerAlola, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -9534,7 +9534,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(2, 11, SHADOW_SIZE_L) FOOTPRINT(Golem) OVERWORLD( - gObjectEventPic_GolemAlola, + sPicTable_GolemAlola, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -9605,7 +9605,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(-1, 7, SHADOW_SIZE_M) FOOTPRINT(Ponyta) OVERWORLD( - gObjectEventPic_Ponyta, + sPicTable_Ponyta, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -9674,7 +9674,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(-1, 12, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Rapidash) OVERWORLD( - gObjectEventPic_Rapidash, + sPicTable_Rapidash, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -9738,7 +9738,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(-5, 5, SHADOW_SIZE_M) FOOTPRINT(Ponyta) OVERWORLD( - gObjectEventPic_PonytaGalar, + sPicTable_PonytaGalar, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -9804,7 +9804,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(0, 13, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Rapidash) OVERWORLD( - gObjectEventPic_RapidashGalar, + sPicTable_RapidashGalar, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -9876,7 +9876,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(1, -5, SHADOW_SIZE_L) FOOTPRINT(Slowpoke) OVERWORLD( - gObjectEventPic_Slowpoke, + sPicTable_Slowpoke, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -9947,7 +9947,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(-1, 8, SHADOW_SIZE_L) FOOTPRINT(Slowbro) OVERWORLD( - gObjectEventPic_Slowbro, + sPicTable_Slowbro, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -10017,7 +10017,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(-2, 11, SHADOW_SIZE_M) FOOTPRINT(Slowking) OVERWORLD( - gObjectEventPic_Slowking, + sPicTable_Slowking, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -10084,7 +10084,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = FOOTPRINT(Slowbro) #if OW_BATTLE_ONLY_FORMS OVERWORLD( - gObjectEventPic_SlowbroMega, + sPicTable_SlowbroMega, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -10152,7 +10152,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(-3, -8, SHADOW_SIZE_L) FOOTPRINT(Slowpoke) OVERWORLD( - gObjectEventPic_SlowpokeGalar, + sPicTable_SlowpokeGalar, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -10220,7 +10220,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(-5, 9, SHADOW_SIZE_L) FOOTPRINT(Slowbro) OVERWORLD( - gObjectEventPic_SlowbroGalar, + sPicTable_SlowbroGalar, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -10285,7 +10285,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(-2, 12, SHADOW_SIZE_M) FOOTPRINT(Slowking) OVERWORLD( - gObjectEventPic_SlowkingGalar, + sPicTable_SlowkingGalar, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -10361,7 +10361,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(-1, 8, SHADOW_SIZE_S) FOOTPRINT(Magnemite) OVERWORLD( - gObjectEventPic_Magnemite, + sPicTable_Magnemite, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, @@ -10434,7 +10434,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(0, 13, SHADOW_SIZE_M) FOOTPRINT(Magneton) OVERWORLD( - gObjectEventPic_Magneton, + sPicTable_Magneton, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, @@ -10513,7 +10513,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(4, 11, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Magnezone) OVERWORLD( - gObjectEventPic_Magnezone, + sPicTable_Magnezone, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -10602,7 +10602,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(-3, 5, SHADOW_SIZE_M) FOOTPRINT(Farfetchd) OVERWORLD( - gObjectEventPic_Farfetchd, + sPicTable_Farfetchd, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, @@ -10668,7 +10668,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(-7, 2, SHADOW_SIZE_L) FOOTPRINT(Farfetchd) OVERWORLD( - gObjectEventPic_FarfetchdGalar, + sPicTable_FarfetchdGalar, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -10735,7 +10735,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(1, 11, SHADOW_SIZE_L) FOOTPRINT(Sirfetchd) OVERWORLD( - gObjectEventPic_Sirfetchd, + sPicTable_Sirfetchd, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -10813,7 +10813,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(6, 5, SHADOW_SIZE_M) FOOTPRINT(Doduo) OVERWORLD( - gObjectEventPic_Doduo, + sPicTable_Doduo, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -10822,7 +10822,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = gShinyOverworldPalette_Doduo ) OVERWORLD_FEMALE( - gObjectEventPic_DoduoF, + sPicTable_DoduoF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -10905,7 +10905,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(3, 12, SHADOW_SIZE_L) FOOTPRINT(Dodrio) OVERWORLD( - gObjectEventPic_Dodrio, + sPicTable_Dodrio, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -10914,7 +10914,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = gShinyOverworldPalette_Dodrio ) OVERWORLD_FEMALE( - gObjectEventPic_DodrioF, + sPicTable_DodrioF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -10985,7 +10985,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(0, 3, SHADOW_SIZE_L) FOOTPRINT(Seel) OVERWORLD( - gObjectEventPic_Seel, + sPicTable_Seel, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SLITHER, @@ -11057,7 +11057,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(2, 9, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Dewgong) OVERWORLD( - gObjectEventPic_Dewgong, + sPicTable_Dewgong, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -11128,7 +11128,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(2, 3, SHADOW_SIZE_M) FOOTPRINT(Grimer) OVERWORLD( - gObjectEventPic_Grimer, + sPicTable_Grimer, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SLITHER, @@ -11202,7 +11202,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(-1, 6, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Muk) OVERWORLD( - gObjectEventPic_Muk, + sPicTable_Muk, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SLITHER, @@ -11267,7 +11267,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(2, 1, SHADOW_SIZE_M) FOOTPRINT(Grimer) OVERWORLD( - gObjectEventPic_GrimerAlola, + sPicTable_GrimerAlola, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -11336,7 +11336,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(-1, 7, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Muk) OVERWORLD( - gObjectEventPic_MukAlola, + sPicTable_MukAlola, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -11415,7 +11415,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(0, -4, SHADOW_SIZE_S) FOOTPRINT(Shellder) OVERWORLD( - gObjectEventPic_Shellder, + sPicTable_Shellder, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SPOT, @@ -11490,7 +11490,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(4, 8, SHADOW_SIZE_M) FOOTPRINT(Cloyster) OVERWORLD( - gObjectEventPic_Cloyster, + sPicTable_Cloyster, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, @@ -11563,7 +11563,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(0, 11, SHADOW_SIZE_S) FOOTPRINT(Gastly) OVERWORLD( - gObjectEventPic_Gastly, + sPicTable_Gastly, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, @@ -11635,7 +11635,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(1, 12, SHADOW_SIZE_M) FOOTPRINT(Haunter) OVERWORLD( - gObjectEventPic_Haunter, + sPicTable_Haunter, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, @@ -11715,7 +11715,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(3, 5, SHADOW_SIZE_L) FOOTPRINT(Gengar) OVERWORLD( - gObjectEventPic_Gengar, + sPicTable_Gengar, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -11781,7 +11781,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = FOOTPRINT(Gengar) #if OW_BATTLE_ONLY_FORMS OVERWORLD( - gObjectEventPic_GengarMega, + sPicTable_GengarMega, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -11911,7 +11911,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(0, 10, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Onix) OVERWORLD( - gObjectEventPic_Onix, + sPicTable_Onix, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SLITHER, @@ -11991,7 +11991,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(2, 12, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Steelix) OVERWORLD( - gObjectEventPic_Steelix, + sPicTable_Steelix, SIZE_64x64, SHADOW_SIZE_M, TRACKS_SLITHER, @@ -12000,7 +12000,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = gShinyOverworldPalette_Steelix ) OVERWORLD_FEMALE( - gObjectEventPic_SteelixF, + sPicTable_SteelixF, SIZE_64x64, SHADOW_SIZE_M, TRACKS_SLITHER, @@ -12065,7 +12065,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = FOOTPRINT(Steelix) #if OW_BATTLE_ONLY_FORMS OVERWORLD( - gObjectEventPic_SteelixMega, + sPicTable_SteelixMega, SIZE_64x64, SHADOW_SIZE_M, TRACKS_SLITHER, @@ -12147,7 +12147,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(1, 6, SHADOW_SIZE_M) FOOTPRINT(Drowzee) OVERWORLD( - gObjectEventPic_Drowzee, + sPicTable_Drowzee, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -12230,7 +12230,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(-3, 9, SHADOW_SIZE_L) FOOTPRINT(Hypno) OVERWORLD( - gObjectEventPic_Hypno, + sPicTable_Hypno, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -12239,7 +12239,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = gShinyOverworldPalette_Hypno ) OVERWORLD_FEMALE( - gObjectEventPic_HypnoF, + sPicTable_HypnoF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -12308,7 +12308,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(0, -1, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Krabby) OVERWORLD( - gObjectEventPic_Krabby, + sPicTable_Krabby, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -12377,7 +12377,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(-2, 4, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Kingler) OVERWORLD( - gObjectEventPic_Kingler, + sPicTable_Kingler, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -12517,7 +12517,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(0, -2, SHADOW_SIZE_S) FOOTPRINT(Voltorb) OVERWORLD( - gObjectEventPic_Voltorb, + sPicTable_Voltorb, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SPOT, @@ -12587,7 +12587,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(1, 2, SHADOW_SIZE_M) FOOTPRINT(Electrode) OVERWORLD( - gObjectEventPic_Electrode, + sPicTable_Electrode, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SPOT, @@ -12651,7 +12651,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(1, -4, SHADOW_SIZE_S) FOOTPRINT(Voltorb) OVERWORLD( - gObjectEventPic_VoltorbHisui, + sPicTable_VoltorbHisui, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -12716,7 +12716,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(-1, 4, SHADOW_SIZE_M) FOOTPRINT(Electrode) OVERWORLD( - gObjectEventPic_ElectrodeHisui, + sPicTable_ElectrodeHisui, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -12794,7 +12794,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(0, -5, SHADOW_SIZE_L) FOOTPRINT(Exeggcute) OVERWORLD( - gObjectEventPic_Exeggcute, + sPicTable_Exeggcute, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SPOT, @@ -12872,7 +12872,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(2, 13, SHADOW_SIZE_L) FOOTPRINT(Exeggutor) OVERWORLD( - gObjectEventPic_Exeggutor, + sPicTable_Exeggutor, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -12936,7 +12936,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(6, 12, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Exeggutor) OVERWORLD( - gObjectEventPic_ExeggutorAlola, + sPicTable_ExeggutorAlola, SIZE_64x64, SHADOW_SIZE_M, TRACKS_FOOT, @@ -13012,7 +13012,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(1, 0, SHADOW_SIZE_S) FOOTPRINT(Cubone) OVERWORLD( - gObjectEventPic_Cubone, + sPicTable_Cubone, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -13086,7 +13086,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(6, 6, SHADOW_SIZE_M) FOOTPRINT(Marowak) OVERWORLD( - gObjectEventPic_Marowak, + sPicTable_Marowak, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -13147,7 +13147,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(-2, 11, SHADOW_SIZE_M) FOOTPRINT(Marowak) OVERWORLD( - gObjectEventPic_MarowakAlola, + sPicTable_MarowakAlola, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -13208,7 +13208,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(-2, 11, SHADOW_SIZE_M) FOOTPRINT(Marowak) OVERWORLD( - gObjectEventPic_MarowakAlola, + sPicTable_MarowakAlola, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -13285,7 +13285,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(0, 4, SHADOW_SIZE_S) FOOTPRINT(Tyrogue) OVERWORLD( - gObjectEventPic_Tyrogue, + sPicTable_Tyrogue, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -13360,7 +13360,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(2, 8, SHADOW_SIZE_M) FOOTPRINT(Hitmonlee) OVERWORLD( - gObjectEventPic_Hitmonlee, + sPicTable_Hitmonlee, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -13438,7 +13438,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(1, 9, SHADOW_SIZE_M) FOOTPRINT(Hitmonchan) OVERWORLD( - gObjectEventPic_Hitmonchan, + sPicTable_Hitmonchan, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -13511,7 +13511,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(1, 7, SHADOW_SIZE_L) FOOTPRINT(Hitmontop) OVERWORLD( - gObjectEventPic_Hitmontop, + sPicTable_Hitmontop, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -13580,7 +13580,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(2, 6, SHADOW_SIZE_M) FOOTPRINT(Lickitung) OVERWORLD( - gObjectEventPic_Lickitung, + sPicTable_Lickitung, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -13656,7 +13656,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(1, 11, SHADOW_SIZE_M) FOOTPRINT(Lickilicky) OVERWORLD( - gObjectEventPic_Lickilicky, + sPicTable_Lickilicky, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -13733,7 +13733,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(0, 15, SHADOW_SIZE_S) FOOTPRINT(Koffing) OVERWORLD( - gObjectEventPic_Koffing, + sPicTable_Koffing, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, @@ -13811,7 +13811,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(5, 14, SHADOW_SIZE_M) FOOTPRINT(Weezing) OVERWORLD( - gObjectEventPic_Weezing, + sPicTable_Weezing, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, @@ -13878,7 +13878,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(7, 17, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Weezing) OVERWORLD( - gObjectEventPic_WeezingGalar, + sPicTable_WeezingGalar, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -13957,7 +13957,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(0, 0, SHADOW_SIZE_L) FOOTPRINT(Rhyhorn) OVERWORLD( - gObjectEventPic_Rhyhorn, + sPicTable_Rhyhorn, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -13966,7 +13966,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = gShinyOverworldPalette_Rhyhorn ) OVERWORLD_FEMALE( - gObjectEventPic_RhyhornF, + sPicTable_RhyhornF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -14037,7 +14037,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(3, 9, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Rhydon) OVERWORLD( - gObjectEventPic_Rhydon, + sPicTable_Rhydon, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -14046,7 +14046,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = gShinyOverworldPalette_Rhydon ) OVERWORLD_FEMALE( - gObjectEventPic_RhydonF, + sPicTable_RhydonF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -14127,7 +14127,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(2, 10, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Rhyperior) OVERWORLD( - gObjectEventPic_Rhyperior, + sPicTable_Rhyperior, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -14136,7 +14136,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = gShinyOverworldPalette_Rhyperior ) OVERWORLD_FEMALE( - gObjectEventPic_RhyperiorF, + sPicTable_RhyperiorF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -14205,7 +14205,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(-1, 1, SHADOW_SIZE_S) FOOTPRINT(Happiny) OVERWORLD( - gObjectEventPic_Happiny, + sPicTable_Happiny, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -14276,7 +14276,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(1, 4, SHADOW_SIZE_L) FOOTPRINT(Chansey) OVERWORLD( - gObjectEventPic_Chansey, + sPicTable_Chansey, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -14346,7 +14346,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(1, 8, SHADOW_SIZE_L) FOOTPRINT(Blissey) OVERWORLD( - gObjectEventPic_Blissey, + sPicTable_Blissey, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -14419,7 +14419,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(-1, 1, SHADOW_SIZE_M) FOOTPRINT(Tangela) OVERWORLD( - gObjectEventPic_Tangela, + sPicTable_Tangela, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -14496,7 +14496,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(-2, 9, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Tangrowth) OVERWORLD( - gObjectEventPic_Tangrowth, + sPicTable_Tangrowth, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -14505,7 +14505,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = gShinyOverworldPalette_Tangrowth ) OVERWORLD_FEMALE( - gObjectEventPic_TangrowthF, + sPicTable_TangrowthF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -14573,7 +14573,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(0, 11, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Kangaskhan) OVERWORLD( - gObjectEventPic_Kangaskhan, + sPicTable_Kangaskhan, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -14640,7 +14640,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = FOOTPRINT(Kangaskhan) #if OW_BATTLE_ONLY_FORMS OVERWORLD( - gObjectEventPic_KangaskhanMega, + sPicTable_KangaskhanMega, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -14721,7 +14721,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(0, 0, SHADOW_SIZE_S) FOOTPRINT(Horsea) OVERWORLD( - gObjectEventPic_Horsea, + sPicTable_Horsea, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SPOT, @@ -14797,7 +14797,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(-2, 7, SHADOW_SIZE_M) FOOTPRINT(Seadra) OVERWORLD( - gObjectEventPic_Seadra, + sPicTable_Seadra, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SPOT, @@ -14881,7 +14881,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(3, 12, SHADOW_SIZE_M) FOOTPRINT(Kingdra) OVERWORLD( - gObjectEventPic_Kingdra, + sPicTable_Kingdra, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SPOT, @@ -14963,7 +14963,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(-6, 0, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Goldeen) OVERWORLD( - gObjectEventPic_Goldeen, + sPicTable_Goldeen, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SPOT, @@ -14972,7 +14972,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = gShinyOverworldPalette_Goldeen ) OVERWORLD_FEMALE( - gObjectEventPic_GoldeenF, + sPicTable_GoldeenF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SPOT, @@ -15047,7 +15047,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(0, 8, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Seaking) OVERWORLD( - gObjectEventPic_Seaking, + sPicTable_Seaking, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SPOT, @@ -15056,7 +15056,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = gShinyOverworldPalette_Seaking ) OVERWORLD_FEMALE( - gObjectEventPic_SeakingF, + sPicTable_SeakingF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SPOT, @@ -15127,7 +15127,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(-1, 2, SHADOW_SIZE_M) FOOTPRINT(Staryu) OVERWORLD( - gObjectEventPic_Staryu, + sPicTable_Staryu, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -15198,7 +15198,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(0, 7, SHADOW_SIZE_L) FOOTPRINT(Starmie) OVERWORLD( - gObjectEventPic_Starmie, + sPicTable_Starmie, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -15278,7 +15278,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(-5, 4, SHADOW_SIZE_S) FOOTPRINT(MimeJr) OVERWORLD( - gObjectEventPic_MimeJr, + sPicTable_MimeJr, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -15355,7 +15355,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(-1, 7, SHADOW_SIZE_M) FOOTPRINT(MrMime) OVERWORLD( - gObjectEventPic_MrMime, + sPicTable_MrMime, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -15420,7 +15420,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(-1, 6, SHADOW_SIZE_M) FOOTPRINT(MrMime) OVERWORLD( - gObjectEventPic_MrMimeGalar, + sPicTable_MrMimeGalar, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -15485,7 +15485,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(3, 9, SHADOW_SIZE_L) FOOTPRINT(MrRime) OVERWORLD( - gObjectEventPic_MrRime, + sPicTable_MrRime, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -15568,7 +15568,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(0, 7, SHADOW_SIZE_L) FOOTPRINT(Scyther) OVERWORLD( - gObjectEventPic_Scyther, + sPicTable_Scyther, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -15577,7 +15577,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = gShinyOverworldPalette_Scyther ) OVERWORLD_FEMALE( - gObjectEventPic_ScytherF, + sPicTable_ScytherF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -15654,7 +15654,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(3, 9, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Scizor) OVERWORLD( - gObjectEventPic_Scizor, + sPicTable_Scizor, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -15663,7 +15663,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = gShinyOverworldPalette_Scizor ) OVERWORLD_FEMALE( - gObjectEventPic_ScizorF, + sPicTable_ScizorF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -15727,7 +15727,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = FOOTPRINT(Scizor) #if OW_BATTLE_ONLY_FORMS OVERWORLD( - gObjectEventPic_ScizorMega, + sPicTable_ScizorMega, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -15796,7 +15796,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(2, 12, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Kleavor) OVERWORLD( - gObjectEventPic_Kleavor, + sPicTable_Kleavor, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -15870,7 +15870,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(-1, 0, SHADOW_SIZE_S) FOOTPRINT(Smoochum) OVERWORLD( - gObjectEventPic_Smoochum, + sPicTable_Smoochum, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -15945,7 +15945,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(0, 3, SHADOW_SIZE_L) FOOTPRINT(Jynx) OVERWORLD( - gObjectEventPic_Jynx, + sPicTable_Jynx, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -16016,7 +16016,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(-1, 1, SHADOW_SIZE_M) FOOTPRINT(Elekid) OVERWORLD( - gObjectEventPic_Elekid, + sPicTable_Elekid, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -16089,7 +16089,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(-2, 9, SHADOW_SIZE_L) FOOTPRINT(Electabuzz) OVERWORLD( - gObjectEventPic_Electabuzz, + sPicTable_Electabuzz, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -16165,7 +16165,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(-3, 11, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Electivire) OVERWORLD( - gObjectEventPic_Electivire, + sPicTable_Electivire, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -16238,7 +16238,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(0, 2, SHADOW_SIZE_S) FOOTPRINT(Magby) OVERWORLD( - gObjectEventPic_Magby, + sPicTable_Magby, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -16307,7 +16307,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(3, 8, SHADOW_SIZE_L) FOOTPRINT(Magmar) OVERWORLD( - gObjectEventPic_Magmar, + sPicTable_Magmar, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -16383,7 +16383,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(4, 11, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Magmortar) OVERWORLD( - gObjectEventPic_Magmortar, + sPicTable_Magmortar, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -16458,7 +16458,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(5, 7, SHADOW_SIZE_L) FOOTPRINT(Pinsir) OVERWORLD( - gObjectEventPic_Pinsir, + sPicTable_Pinsir, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -16526,7 +16526,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = FOOTPRINT(Pinsir) #if OW_BATTLE_ONLY_FORMS OVERWORLD( - gObjectEventPic_PinsirMega, + sPicTable_PinsirMega, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -16607,7 +16607,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(1, 7, SHADOW_SIZE_L) FOOTPRINT(Tauros) OVERWORLD( - gObjectEventPic_Tauros, + sPicTable_Tauros, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -16671,7 +16671,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(1, 7, SHADOW_SIZE_L) FOOTPRINT(Tauros) OVERWORLD( - gObjectEventPic_TaurosPaldeaCombat, + sPicTable_TaurosPaldeaCombat, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -16736,7 +16736,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(1, 7, SHADOW_SIZE_L) FOOTPRINT(Tauros) OVERWORLD( - gObjectEventPic_TaurosPaldeaBlaze, + sPicTable_TaurosPaldeaBlaze, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -16801,7 +16801,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(1, 7, SHADOW_SIZE_L) FOOTPRINT(Tauros) OVERWORLD( - gObjectEventPic_TaurosPaldeaAqua, + sPicTable_TaurosPaldeaAqua, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -16885,7 +16885,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(1, 7, SHADOW_SIZE_M) FOOTPRINT(Magikarp) OVERWORLD( - gObjectEventPic_Magikarp, + sPicTable_Magikarp, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SPOT, @@ -16894,7 +16894,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = gShinyOverworldPalette_Magikarp ) OVERWORLD_FEMALE( - gObjectEventPic_MagikarpF, + sPicTable_MagikarpF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SPOT, @@ -16966,7 +16966,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(5, 9, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Gyarados) OVERWORLD( - gObjectEventPic_Gyarados, + sPicTable_Gyarados, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SLITHER, @@ -16975,7 +16975,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = gShinyOverworldPalette_Gyarados ) OVERWORLD_FEMALE( - gObjectEventPic_GyaradosF, + sPicTable_GyaradosF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SLITHER, @@ -17040,7 +17040,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = FOOTPRINT(Gyarados) #if OW_BATTLE_ONLY_FORMS OVERWORLD( - gObjectEventPic_GyaradosMega, + sPicTable_GyaradosMega, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SLITHER, @@ -17114,7 +17114,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(2, 8, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Lapras) OVERWORLD( - gObjectEventPic_Lapras, + sPicTable_Lapras, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SLITHER, @@ -17249,7 +17249,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(0, -4, SHADOW_SIZE_M) FOOTPRINT(Ditto) OVERWORLD( - gObjectEventPic_Ditto, + sPicTable_Ditto, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SLITHER, @@ -17323,7 +17323,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(-2, 2, SHADOW_SIZE_S) FOOTPRINT(Eevee) OVERWORLD( - gObjectEventPic_Eevee, + sPicTable_Eevee, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -17332,7 +17332,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = gShinyOverworldPalette_Eevee ) OVERWORLD_FEMALE( - gObjectEventPic_EeveeF, + sPicTable_EeveeF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -17473,7 +17473,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(-2, 2, SHADOW_SIZE_S) FOOTPRINT(Eevee) OVERWORLD( - gObjectEventPic_Eevee, + sPicTable_Eevee, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -17542,7 +17542,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(-4, 3, SHADOW_SIZE_M) FOOTPRINT(Vaporeon) OVERWORLD( - gObjectEventPic_Vaporeon, + sPicTable_Vaporeon, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -17607,7 +17607,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(0, 2, SHADOW_SIZE_M) FOOTPRINT(Jolteon) OVERWORLD( - gObjectEventPic_Jolteon, + sPicTable_Jolteon, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -17672,7 +17672,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(-2, 1, SHADOW_SIZE_L) FOOTPRINT(Flareon) OVERWORLD( - gObjectEventPic_Flareon, + sPicTable_Flareon, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -17739,7 +17739,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(2, 4, SHADOW_SIZE_M) FOOTPRINT(Espeon) OVERWORLD( - gObjectEventPic_Espeon, + sPicTable_Espeon, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -17804,7 +17804,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(0, 3, SHADOW_SIZE_M) FOOTPRINT(Umbreon) OVERWORLD( - gObjectEventPic_Umbreon, + sPicTable_Umbreon, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -17872,7 +17872,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(0, 4, SHADOW_SIZE_M) FOOTPRINT(Leafeon) OVERWORLD( - gObjectEventPic_Leafeon, + sPicTable_Leafeon, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -17938,7 +17938,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(0, 3, SHADOW_SIZE_M) FOOTPRINT(Glaceon) OVERWORLD( - gObjectEventPic_Glaceon, + sPicTable_Glaceon, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -18007,7 +18007,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(2, 9, SHADOW_SIZE_M) FOOTPRINT(Sylveon) OVERWORLD( - gObjectEventPic_Sylveon, + sPicTable_Sylveon, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -18081,7 +18081,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(0, -2, SHADOW_SIZE_S) FOOTPRINT(Porygon) OVERWORLD( - gObjectEventPic_Porygon, + sPicTable_Porygon, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, @@ -18157,7 +18157,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(0, 5, SHADOW_SIZE_S) FOOTPRINT(Porygon2) OVERWORLD( - gObjectEventPic_Porygon2, + sPicTable_Porygon2, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, @@ -18234,7 +18234,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(0, 17, SHADOW_SIZE_S) FOOTPRINT(PorygonZ) OVERWORLD( - gObjectEventPic_PorygonZ, + sPicTable_PorygonZ, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -18315,7 +18315,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(-2, -2, SHADOW_SIZE_S) FOOTPRINT(Omanyte) OVERWORLD( - gObjectEventPic_Omanyte, + sPicTable_Omanyte, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SPOT, @@ -18384,7 +18384,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(0, 4, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Omastar) OVERWORLD( - gObjectEventPic_Omastar, + sPicTable_Omastar, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -18463,7 +18463,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(2, -3, SHADOW_SIZE_S) FOOTPRINT(Kabuto) OVERWORLD( - gObjectEventPic_Kabuto, + sPicTable_Kabuto, SIZE_32x32, SHADOW_SIZE_M, TRACKS_BUG, @@ -18538,7 +18538,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(1, 10, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Kabutops) OVERWORLD( - gObjectEventPic_Kabutops, + sPicTable_Kabutops, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -18608,7 +18608,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(-2, 16, SHADOW_SIZE_M) FOOTPRINT(Aerodactyl) OVERWORLD( - gObjectEventPic_Aerodactyl, + sPicTable_Aerodactyl, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, @@ -18675,7 +18675,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = FOOTPRINT(Aerodactyl) #if OW_BATTLE_ONLY_FORMS OVERWORLD( - gObjectEventPic_AerodactylMega, + sPicTable_AerodactylMega, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, @@ -18752,7 +18752,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(-1, 2, SHADOW_SIZE_M) FOOTPRINT(Munchlax) OVERWORLD( - gObjectEventPic_Munchlax, + sPicTable_Munchlax, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -18823,7 +18823,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(0, 9, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Snorlax) OVERWORLD( - gObjectEventPic_Snorlax, + sPicTable_Snorlax, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -18963,7 +18963,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(3, 10, SHADOW_SIZE_M) FOOTPRINT(Articuno) OVERWORLD( - gObjectEventPic_Articuno, + sPicTable_Articuno, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, @@ -19030,7 +19030,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(3, 14, SHADOW_SIZE_M) FOOTPRINT(Articuno) OVERWORLD( - gObjectEventPic_ArticunoGalar, + sPicTable_ArticunoGalar, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -19115,7 +19115,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(1, 15, SHADOW_SIZE_M) FOOTPRINT(Zapdos) OVERWORLD( - gObjectEventPic_Zapdos, + sPicTable_Zapdos, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, @@ -19181,7 +19181,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(-2, 11, SHADOW_SIZE_M) FOOTPRINT(Zapdos) OVERWORLD( - gObjectEventPic_ZapdosGalar, + sPicTable_ZapdosGalar, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -19290,7 +19290,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(-1, 12, SHADOW_SIZE_M) FOOTPRINT(Moltres) OVERWORLD( - gObjectEventPic_Moltres, + sPicTable_Moltres, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, @@ -19356,7 +19356,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(0, 12, SHADOW_SIZE_M) FOOTPRINT(Moltres) OVERWORLD( - gObjectEventPic_MoltresGalar, + sPicTable_MoltresGalar, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -19430,7 +19430,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(3, 3, SHADOW_SIZE_L) FOOTPRINT(Dratini) OVERWORLD( - gObjectEventPic_Dratini, + sPicTable_Dratini, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SLITHER, @@ -19500,7 +19500,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(0, 10, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Dragonair) OVERWORLD( - gObjectEventPic_Dragonair, + sPicTable_Dragonair, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SLITHER, @@ -19575,7 +19575,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(0, 11, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Dragonite) OVERWORLD( - gObjectEventPic_Dragonite, + sPicTable_Dragonite, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, @@ -19648,7 +19648,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(6, 12, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Mewtwo) OVERWORLD( - gObjectEventPic_Mewtwo, + sPicTable_Mewtwo, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -19717,7 +19717,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = FOOTPRINT(Mewtwo) #if OW_BATTLE_ONLY_FORMS OVERWORLD( - gObjectEventPic_MewtwoMegaX, + sPicTable_MewtwoMegaX, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -19788,7 +19788,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = FOOTPRINT(Mewtwo) #if OW_BATTLE_ONLY_FORMS OVERWORLD( - gObjectEventPic_MewtwoMegaY, + sPicTable_MewtwoMegaY, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -19873,7 +19873,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = SHADOW(0, 13, SHADOW_SIZE_S) FOOTPRINT(Mew) OVERWORLD( - gObjectEventPic_Mew, + sPicTable_Mew, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, diff --git a/src/data/pokemon/species_info/gen_2_families.h b/src/data/pokemon/species_info/gen_2_families.h index a86367e3f7..fc12c19d46 100644 --- a/src/data/pokemon/species_info/gen_2_families.h +++ b/src/data/pokemon/species_info/gen_2_families.h @@ -58,7 +58,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(-1, 2, SHADOW_SIZE_S) FOOTPRINT(Chikorita) OVERWORLD( - gObjectEventPic_Chikorita, + sPicTable_Chikorita, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -126,7 +126,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(-1, 10, SHADOW_SIZE_M) FOOTPRINT(Bayleef) OVERWORLD( - gObjectEventPic_Bayleef, + sPicTable_Bayleef, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -205,7 +205,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(0, 13, SHADOW_SIZE_M) FOOTPRINT(Meganium) OVERWORLD( - gObjectEventPic_Meganium, + sPicTable_Meganium, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -214,7 +214,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = gShinyOverworldPalette_Meganium ) OVERWORLD_FEMALE( - gObjectEventPic_MeganiumF, + sPicTable_MeganiumF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -281,7 +281,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(0, -1, SHADOW_SIZE_S) FOOTPRINT(Cyndaquil) OVERWORLD( - gObjectEventPic_Cyndaquil, + sPicTable_Cyndaquil, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -349,7 +349,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(0, 2, SHADOW_SIZE_M) FOOTPRINT(Quilava) OVERWORLD( - gObjectEventPic_Quilava, + sPicTable_Quilava, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -425,7 +425,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(4, 14, SHADOW_SIZE_L) FOOTPRINT(Typhlosion) OVERWORLD( - gObjectEventPic_Typhlosion, + sPicTable_Typhlosion, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -489,7 +489,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(2, 14, SHADOW_SIZE_L) FOOTPRINT(Typhlosion) OVERWORLD( - gObjectEventPic_TyphlosionHisui, + sPicTable_TyphlosionHisui, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -563,7 +563,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(2, 0, SHADOW_SIZE_S) FOOTPRINT(Totodile) OVERWORLD( - gObjectEventPic_Totodile, + sPicTable_Totodile, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -632,7 +632,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(2, 8, SHADOW_SIZE_M) FOOTPRINT(Croconaw) OVERWORLD( - gObjectEventPic_Croconaw, + sPicTable_Croconaw, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -708,7 +708,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(3, 11, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Feraligatr) OVERWORLD( - gObjectEventPic_Feraligatr, + sPicTable_Feraligatr, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -777,7 +777,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(0, 11, SHADOW_SIZE_S) FOOTPRINT(Sentret) OVERWORLD( - gObjectEventPic_Sentret, + sPicTable_Sentret, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -844,7 +844,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(-1, 9, SHADOW_SIZE_M) FOOTPRINT(Furret) OVERWORLD( - gObjectEventPic_Furret, + sPicTable_Furret, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -921,7 +921,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(0, 2, SHADOW_SIZE_S) FOOTPRINT(Hoothoot) OVERWORLD( - gObjectEventPic_Hoothoot, + sPicTable_Hoothoot, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -994,7 +994,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(-2, 10, SHADOW_SIZE_S) FOOTPRINT(Noctowl) OVERWORLD( - gObjectEventPic_Noctowl, + sPicTable_Noctowl, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, @@ -1069,7 +1069,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(2, 4, SHADOW_SIZE_M) FOOTPRINT(Ledyba) OVERWORLD( - gObjectEventPic_Ledyba, + sPicTable_Ledyba, SIZE_32x32, SHADOW_SIZE_M, TRACKS_BUG, @@ -1078,7 +1078,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = gShinyOverworldPalette_Ledyba ) OVERWORLD_FEMALE( - gObjectEventPic_LedybaF, + sPicTable_LedybaF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_BUG, @@ -1152,7 +1152,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(0, 15, SHADOW_SIZE_S) FOOTPRINT(Ledian) OVERWORLD( - gObjectEventPic_Ledian, + sPicTable_Ledian, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1161,7 +1161,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = gShinyOverworldPalette_Ledian ) OVERWORLD_FEMALE( - gObjectEventPic_LedianF, + sPicTable_LedianF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1232,7 +1232,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(0, -8, SHADOW_SIZE_M) FOOTPRINT(Spinarak) OVERWORLD( - gObjectEventPic_Spinarak, + sPicTable_Spinarak, SIZE_32x32, SHADOW_SIZE_M, TRACKS_BUG, @@ -1307,7 +1307,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(1, 3, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Ariados) OVERWORLD( - gObjectEventPic_Ariados, + sPicTable_Ariados, SIZE_32x32, SHADOW_SIZE_M, TRACKS_BUG, @@ -1378,7 +1378,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(-1, 1, SHADOW_SIZE_M) FOOTPRINT(Chinchou) OVERWORLD( - gObjectEventPic_Chinchou, + sPicTable_Chinchou, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SPOT, @@ -1449,7 +1449,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(5, 4, SHADOW_SIZE_M) FOOTPRINT(Lanturn) OVERWORLD( - gObjectEventPic_Lanturn, + sPicTable_Lanturn, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SPOT, @@ -1519,7 +1519,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(-1, -3, SHADOW_SIZE_S) FOOTPRINT(Togepi) OVERWORLD( - gObjectEventPic_Togepi, + sPicTable_Togepi, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1587,7 +1587,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(0, 6, SHADOW_SIZE_S) FOOTPRINT(Togetic) OVERWORLD( - gObjectEventPic_Togetic, + sPicTable_Togetic, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, @@ -1668,7 +1668,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(4, 15, SHADOW_SIZE_M) FOOTPRINT(Togekiss) OVERWORLD( - gObjectEventPic_Togekiss, + sPicTable_Togekiss, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1740,7 +1740,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(-2, -4, SHADOW_SIZE_S) FOOTPRINT(Natu) OVERWORLD( - gObjectEventPic_Natu, + sPicTable_Natu, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1817,7 +1817,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(-1, 9, SHADOW_SIZE_S) FOOTPRINT(Xatu) OVERWORLD( - gObjectEventPic_Xatu, + sPicTable_Xatu, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1826,7 +1826,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = gShinyOverworldPalette_Xatu ) OVERWORLD_FEMALE( - gObjectEventPic_XatuF, + sPicTable_XatuF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1896,7 +1896,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(1, 1, SHADOW_SIZE_M) FOOTPRINT(Mareep) OVERWORLD( - gObjectEventPic_Mareep, + sPicTable_Mareep, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1966,7 +1966,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(0, 4, SHADOW_SIZE_S) FOOTPRINT(Flaaffy) OVERWORLD( - gObjectEventPic_Flaaffy, + sPicTable_Flaaffy, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2044,7 +2044,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(3, 11, SHADOW_SIZE_M) FOOTPRINT(Ampharos) OVERWORLD( - gObjectEventPic_Ampharos, + sPicTable_Ampharos, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2110,7 +2110,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = FOOTPRINT(Ampharos) #if OW_BATTLE_ONLY_FORMS OVERWORLD( - gObjectEventPic_AmpharosMega, + sPicTable_AmpharosMega, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2192,7 +2192,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(-4, 3, SHADOW_SIZE_S) FOOTPRINT(Azurill) OVERWORLD( - gObjectEventPic_Azurill, + sPicTable_Azurill, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2265,7 +2265,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(-2, 0, SHADOW_SIZE_S) FOOTPRINT(Marill) OVERWORLD( - gObjectEventPic_Marill, + sPicTable_Marill, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2347,7 +2347,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(-4, 8, SHADOW_SIZE_S) FOOTPRINT(Azumarill) OVERWORLD( - gObjectEventPic_Azumarill, + sPicTable_Azumarill, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2418,7 +2418,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(-3, 4, SHADOW_SIZE_S) FOOTPRINT(Bonsly) OVERWORLD( - gObjectEventPic_Bonsly, + sPicTable_Bonsly, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2496,7 +2496,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(-2, 7, SHADOW_SIZE_S) FOOTPRINT(Sudowoodo) OVERWORLD( - gObjectEventPic_Sudowoodo, + sPicTable_Sudowoodo, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2505,7 +2505,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = gShinyOverworldPalette_Sudowoodo ) OVERWORLD_FEMALE( - gObjectEventPic_SudowoodoF, + sPicTable_SudowoodoF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2578,7 +2578,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(-5, 12, SHADOW_SIZE_S) FOOTPRINT(Hoppip) OVERWORLD( - gObjectEventPic_Hoppip, + sPicTable_Hoppip, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, @@ -2656,7 +2656,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(-1, 10, SHADOW_SIZE_S) FOOTPRINT(Skiploom) OVERWORLD( - gObjectEventPic_Skiploom, + sPicTable_Skiploom, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, @@ -2739,7 +2739,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(-2, 11, SHADOW_SIZE_S) FOOTPRINT(Jumpluff) OVERWORLD( - gObjectEventPic_Jumpluff, + sPicTable_Jumpluff, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, @@ -2812,7 +2812,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(-1, 12, SHADOW_SIZE_S) FOOTPRINT(Aipom) OVERWORLD( - gObjectEventPic_Aipom, + sPicTable_Aipom, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2821,7 +2821,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = gShinyOverworldPalette_Aipom ) OVERWORLD_FEMALE( - gObjectEventPic_AipomF, + sPicTable_AipomF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2894,7 +2894,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(-1, 13, SHADOW_SIZE_S) FOOTPRINT(Ambipom) OVERWORLD( - gObjectEventPic_Ambipom, + sPicTable_Ambipom, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2903,7 +2903,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = gShinyOverworldPalette_Ambipom ) OVERWORLD_FEMALE( - gObjectEventPic_AmbipomF, + sPicTable_AmbipomF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2977,7 +2977,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(-1, -4, SHADOW_SIZE_S) FOOTPRINT(Sunkern) OVERWORLD( - gObjectEventPic_Sunkern, + sPicTable_Sunkern, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SPOT, @@ -3049,7 +3049,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(-1, 6, SHADOW_SIZE_S) FOOTPRINT(Sunflora) OVERWORLD( - gObjectEventPic_Sunflora, + sPicTable_Sunflora, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3138,7 +3138,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(-2, 10, SHADOW_SIZE_S) FOOTPRINT(Yanma) OVERWORLD( - gObjectEventPic_Yanma, + sPicTable_Yanma, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, @@ -3232,7 +3232,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(-1, 12, SHADOW_SIZE_M) FOOTPRINT(Yanmega) OVERWORLD( - gObjectEventPic_Yanmega, + sPicTable_Yanmega, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3307,7 +3307,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(1, -2, SHADOW_SIZE_S) FOOTPRINT(Wooper) OVERWORLD( - gObjectEventPic_Wooper, + sPicTable_Wooper, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3316,7 +3316,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = gShinyOverworldPalette_Wooper ) OVERWORLD_FEMALE( - gObjectEventPic_WooperF, + sPicTable_WooperF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3388,7 +3388,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(0, 8, SHADOW_SIZE_M) FOOTPRINT(Quagsire) OVERWORLD( - gObjectEventPic_Quagsire, + sPicTable_Quagsire, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3397,7 +3397,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = gShinyOverworldPalette_Quagsire ) OVERWORLD_FEMALE( - gObjectEventPic_QuagsireF, + sPicTable_QuagsireF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3458,7 +3458,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(-1, -2, SHADOW_SIZE_S) FOOTPRINT(Wooper) OVERWORLD( - gObjectEventPic_WooperPaldea, + sPicTable_WooperPaldea, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3524,7 +3524,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(-2, 3, SHADOW_SIZE_L) FOOTPRINT(Clodsire) OVERWORLD( - gObjectEventPic_Clodsire, + sPicTable_Clodsire, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3603,7 +3603,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(-2, 8, SHADOW_SIZE_S) FOOTPRINT(Murkrow) OVERWORLD( - gObjectEventPic_Murkrow, + sPicTable_Murkrow, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3612,7 +3612,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = gShinyOverworldPalette_Murkrow ) OVERWORLD_FEMALE( - gObjectEventPic_MurkrowF, + sPicTable_MurkrowF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3680,7 +3680,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(5, 7, SHADOW_SIZE_M) FOOTPRINT(Honchkrow) OVERWORLD( - gObjectEventPic_Honchkrow, + sPicTable_Honchkrow, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3758,7 +3758,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(0, 10, SHADOW_SIZE_S) FOOTPRINT(Misdreavus) OVERWORLD( - gObjectEventPic_Misdreavus, + sPicTable_Misdreavus, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, @@ -3836,7 +3836,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(1, 11, SHADOW_SIZE_M) FOOTPRINT(Mismagius) OVERWORLD( - gObjectEventPic_Mismagius, + sPicTable_Mismagius, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3900,7 +3900,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(0, 3, SHADOW_SIZE_S) \ FOOTPRINT(Unown) \ OVERWORLD( \ - gObjectEventPic_Unown ##letter, \ + sPicTable_Unown ##letter, \ SIZE_32x32, \ SHADOW_SIZE_M, \ TRACKS_NONE, \ @@ -4003,7 +4003,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(-1, 2, SHADOW_SIZE_S) FOOTPRINT(Wynaut) OVERWORLD( - gObjectEventPic_Wynaut, + sPicTable_Wynaut, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4084,7 +4084,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(-3, 8, SHADOW_SIZE_M) FOOTPRINT(Wobbuffet) OVERWORLD( - gObjectEventPic_Wobbuffet, + sPicTable_Wobbuffet, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4093,7 +4093,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = gShinyOverworldPalette_Wobbuffet ) OVERWORLD_FEMALE( - gObjectEventPic_WobbuffetF, + sPicTable_WobbuffetF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4166,7 +4166,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(2, 13, SHADOW_SIZE_M) FOOTPRINT(Girafarig) OVERWORLD( - gObjectEventPic_Girafarig, + sPicTable_Girafarig, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4175,7 +4175,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = gShinyOverworldPalette_Girafarig ) OVERWORLD_FEMALE( - gObjectEventPic_GirafarigF, + sPicTable_GirafarigF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4238,7 +4238,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(11, 13, SHADOW_SIZE_L) FOOTPRINT(Farigiraf) OVERWORLD( - gObjectEventPic_Farigiraf, + sPicTable_Farigiraf, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4312,7 +4312,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(0, 2, SHADOW_SIZE_S) FOOTPRINT(Pineco) OVERWORLD( - gObjectEventPic_Pineco, + sPicTable_Pineco, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SPOT, @@ -4381,7 +4381,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(0, 6, SHADOW_SIZE_L) FOOTPRINT(Forretress) OVERWORLD( - gObjectEventPic_Forretress, + sPicTable_Forretress, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SPOT, @@ -4457,7 +4457,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(0, -4, SHADOW_SIZE_M) FOOTPRINT(Dunsparce) OVERWORLD( - gObjectEventPic_Dunsparce, + sPicTable_Dunsparce, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SPOT, @@ -4523,7 +4523,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(0, 5, SHADOW_SIZE_L) FOOTPRINT(Dudunsparce) OVERWORLD( - gObjectEventPic_DudunsparceTwoSegment, + sPicTable_DudunsparceTwoSegment, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SLITHER, @@ -4586,7 +4586,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(4, 4, SHADOW_SIZE_L) FOOTPRINT(Dudunsparce) OVERWORLD( - gObjectEventPic_DudunsparceThreeSegment, + sPicTable_DudunsparceThreeSegment, SIZE_64x64, SHADOW_SIZE_M, TRACKS_SLITHER, @@ -4662,7 +4662,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(0, 15, SHADOW_SIZE_S) FOOTPRINT(Gligar) OVERWORLD( - gObjectEventPic_Gligar, + sPicTable_Gligar, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, @@ -4671,7 +4671,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = gShinyOverworldPalette_Gligar ) OVERWORLD_FEMALE( - gObjectEventPic_GligarF, + sPicTable_GligarF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, @@ -4741,7 +4741,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(-1, 13, SHADOW_SIZE_M) FOOTPRINT(Gliscor) OVERWORLD( - gObjectEventPic_Gliscor, + sPicTable_Gliscor, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4813,7 +4813,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(-1, 1, SHADOW_SIZE_S) FOOTPRINT(Snubbull) OVERWORLD( - gObjectEventPic_Snubbull, + sPicTable_Snubbull, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4888,7 +4888,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(3, 10, SHADOW_SIZE_L) FOOTPRINT(Granbull) OVERWORLD( - gObjectEventPic_Granbull, + sPicTable_Granbull, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4971,7 +4971,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(-2, 3, SHADOW_SIZE_S) FOOTPRINT(Qwilfish) OVERWORLD( - gObjectEventPic_Qwilfish, + sPicTable_Qwilfish, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SPOT, @@ -5038,7 +5038,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(-5, 4, SHADOW_SIZE_S) FOOTPRINT(Qwilfish) OVERWORLD( - gObjectEventPic_QwilfishHisui, + sPicTable_QwilfishHisui, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5103,7 +5103,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(2, 11, SHADOW_SIZE_M) FOOTPRINT(Overqwil) OVERWORLD( - gObjectEventPic_Overqwil, + sPicTable_Overqwil, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5179,7 +5179,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(1, 3, SHADOW_SIZE_M) FOOTPRINT(Shuckle) OVERWORLD( - gObjectEventPic_Shuckle, + sPicTable_Shuckle, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5256,7 +5256,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(-1, 10, SHADOW_SIZE_M) FOOTPRINT(Heracross) OVERWORLD( - gObjectEventPic_Heracross, + sPicTable_Heracross, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5265,7 +5265,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = gShinyOverworldPalette_Heracross ) OVERWORLD_FEMALE( - gObjectEventPic_HeracrossF, + sPicTable_HeracrossF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5330,7 +5330,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = FOOTPRINT(Heracross) #if OW_BATTLE_ONLY_FORMS OVERWORLD( - gObjectEventPic_HeracrossMega, + sPicTable_HeracrossMega, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5415,7 +5415,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(-1, 5, SHADOW_SIZE_S) FOOTPRINT(Sneasel) OVERWORLD( - gObjectEventPic_Sneasel, + sPicTable_Sneasel, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5424,7 +5424,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = gShinyOverworldPalette_Sneasel ) OVERWORLD_FEMALE( - gObjectEventPic_SneaselF, + sPicTable_SneaselF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5500,7 +5500,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(-4, 10, SHADOW_SIZE_M) FOOTPRINT(Weavile) OVERWORLD( - gObjectEventPic_Weavile, + sPicTable_Weavile, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5509,7 +5509,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = gShinyOverworldPalette_Weavile ) OVERWORLD_FEMALE( - gObjectEventPic_WeavileF, + sPicTable_WeavileF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5579,7 +5579,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(-1, 5, SHADOW_SIZE_S) FOOTPRINT(Sneasel) OVERWORLD( - gObjectEventPic_SneaselHisui, + sPicTable_SneaselHisui, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5588,7 +5588,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = gShinyOverworldPalette_SneaselHisui ) OVERWORLD_FEMALE( - gObjectEventPic_SneaselHisuiF, + sPicTable_SneaselHisuiF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5652,7 +5652,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(2, 11, SHADOW_SIZE_M) FOOTPRINT(Sneasler) OVERWORLD( - gObjectEventPic_Sneasler, + sPicTable_Sneasler, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5726,7 +5726,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(-2, 1, SHADOW_SIZE_S) FOOTPRINT(Teddiursa) OVERWORLD( - gObjectEventPic_Teddiursa, + sPicTable_Teddiursa, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5803,7 +5803,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(1, 14, SHADOW_SIZE_L) FOOTPRINT(Ursaring) OVERWORLD( - gObjectEventPic_Ursaring, + sPicTable_Ursaring, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5812,7 +5812,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = gShinyOverworldPalette_Ursaring ) OVERWORLD_FEMALE( - gObjectEventPic_UrsaringF, + sPicTable_UrsaringF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5874,7 +5874,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(1, 4, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Ursaluna) OVERWORLD( - gObjectEventPic_Ursaluna, + sPicTable_Ursaluna, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6000,7 +6000,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(0, 0, SHADOW_SIZE_S) FOOTPRINT(Slugma) OVERWORLD( - gObjectEventPic_Slugma, + sPicTable_Slugma, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SLITHER, @@ -6077,7 +6077,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(0, 5, SHADOW_SIZE_M) FOOTPRINT(Magcargo) OVERWORLD( - gObjectEventPic_Magcargo, + sPicTable_Magcargo, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SLITHER, @@ -6150,7 +6150,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(-3, -6, SHADOW_SIZE_S) FOOTPRINT(Swinub) OVERWORLD( - gObjectEventPic_Swinub, + sPicTable_Swinub, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6230,7 +6230,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(-1, 3, SHADOW_SIZE_M) FOOTPRINT(Piloswine) OVERWORLD( - gObjectEventPic_Piloswine, + sPicTable_Piloswine, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6239,7 +6239,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = gShinyOverworldPalette_Piloswine ) OVERWORLD_FEMALE( - gObjectEventPic_PiloswineF, + sPicTable_PiloswineF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6315,7 +6315,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(7, 7, SHADOW_SIZE_L) FOOTPRINT(Mamoswine) OVERWORLD( - gObjectEventPic_Mamoswine, + sPicTable_Mamoswine, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6324,7 +6324,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = gShinyOverworldPalette_Mamoswine ) OVERWORLD_FEMALE( - gObjectEventPic_MamoswineF, + sPicTable_MamoswineF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6405,7 +6405,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(0, 1, SHADOW_SIZE_M) FOOTPRINT(Corsola) OVERWORLD( - gObjectEventPic_Corsola, + sPicTable_Corsola, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6470,7 +6470,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(0, 2, SHADOW_SIZE_M) FOOTPRINT(Corsola) OVERWORLD( - gObjectEventPic_CorsolaGalar, + sPicTable_CorsolaGalar, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6536,7 +6536,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(-3, 13, SHADOW_SIZE_S) FOOTPRINT(Cursola) OVERWORLD( - gObjectEventPic_Cursola, + sPicTable_Cursola, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6609,7 +6609,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(-1, 0, SHADOW_SIZE_S) FOOTPRINT(Remoraid) OVERWORLD( - gObjectEventPic_Remoraid, + sPicTable_Remoraid, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SPOT, @@ -6690,7 +6690,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(1, 4, SHADOW_SIZE_M) FOOTPRINT(Octillery) OVERWORLD( - gObjectEventPic_Octillery, + sPicTable_Octillery, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SLITHER, @@ -6699,7 +6699,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = gShinyOverworldPalette_Octillery ) OVERWORLD_FEMALE( - gObjectEventPic_OctilleryF, + sPicTable_OctilleryF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SLITHER, @@ -6764,7 +6764,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(0, 7, SHADOW_SIZE_M) FOOTPRINT(Delibird) OVERWORLD( - gObjectEventPic_Delibird, + sPicTable_Delibird, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6835,7 +6835,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(-1, 3, SHADOW_SIZE_S) FOOTPRINT(Mantyke) OVERWORLD( - gObjectEventPic_Mantyke, + sPicTable_Mantyke, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6912,7 +6912,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(-1, 8, SHADOW_SIZE_M) FOOTPRINT(Mantine) OVERWORLD( - gObjectEventPic_Mantine, + sPicTable_Mantine, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, @@ -6981,7 +6981,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(2, 9, SHADOW_SIZE_M) FOOTPRINT(Skarmory) OVERWORLD( - gObjectEventPic_Skarmory, + sPicTable_Skarmory, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -7049,7 +7049,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(0, 4, SHADOW_SIZE_M) FOOTPRINT(Houndour) OVERWORLD( - gObjectEventPic_Houndour, + sPicTable_Houndour, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -7122,7 +7122,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(-5, 13, SHADOW_SIZE_L) FOOTPRINT(Houndoom) OVERWORLD( - gObjectEventPic_Houndoom, + sPicTable_Houndoom, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -7131,7 +7131,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = gShinyOverworldPalette_Houndoom ) OVERWORLD_FEMALE( - gObjectEventPic_HoundoomF, + sPicTable_HoundoomF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -7194,7 +7194,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = FOOTPRINT(Houndoom) #if OW_BATTLE_ONLY_FORMS OVERWORLD( - gObjectEventPic_HoundoomMega, + sPicTable_HoundoomMega, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -7271,7 +7271,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(3, -2, SHADOW_SIZE_M) FOOTPRINT(Phanpy) OVERWORLD( - gObjectEventPic_Phanpy, + sPicTable_Phanpy, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -7346,7 +7346,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(7, 2, SHADOW_SIZE_L) FOOTPRINT(Donphan) OVERWORLD( - gObjectEventPic_Donphan, + sPicTable_Donphan, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -7355,7 +7355,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = gShinyOverworldPalette_Donphan ) OVERWORLD_FEMALE( - gObjectEventPic_DonphanF, + sPicTable_DonphanF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -7424,7 +7424,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(3, 13, SHADOW_SIZE_M) FOOTPRINT(Stantler) OVERWORLD( - gObjectEventPic_Stantler, + sPicTable_Stantler, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -7490,7 +7490,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(-1, 13, SHADOW_SIZE_M) FOOTPRINT(Wyrdeer) OVERWORLD( - gObjectEventPic_Wyrdeer, + sPicTable_Wyrdeer, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -7564,7 +7564,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(6, 7, SHADOW_SIZE_S) FOOTPRINT(Smeargle) OVERWORLD( - gObjectEventPic_Smeargle, + sPicTable_Smeargle, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -7638,7 +7638,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(-3, 4, SHADOW_SIZE_M) FOOTPRINT(Miltank) OVERWORLD( - gObjectEventPic_Miltank, + sPicTable_Miltank, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -7718,7 +7718,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(-4, 7, SHADOW_SIZE_L) FOOTPRINT(Raikou) OVERWORLD( - gObjectEventPic_Raikou, + sPicTable_Raikou, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -7798,7 +7798,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(-1, 8, SHADOW_SIZE_L) FOOTPRINT(Entei) OVERWORLD( - gObjectEventPic_Entei, + sPicTable_Entei, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -7878,7 +7878,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(3, 10, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Suicune) OVERWORLD( - gObjectEventPic_Suicune, + sPicTable_Suicune, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -7949,7 +7949,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(0, 3, SHADOW_SIZE_S) FOOTPRINT(Larvitar) OVERWORLD( - gObjectEventPic_Larvitar, + sPicTable_Larvitar, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -8016,7 +8016,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(3, 3, SHADOW_SIZE_S) FOOTPRINT(Pupitar) OVERWORLD( - gObjectEventPic_Pupitar, + sPicTable_Pupitar, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SPOT, @@ -8090,7 +8090,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(-1, 11, SHADOW_SIZE_L) FOOTPRINT(Tyranitar) OVERWORLD( - gObjectEventPic_Tyranitar, + sPicTable_Tyranitar, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -8156,7 +8156,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = FOOTPRINT(Tyranitar) #if OW_BATTLE_ONLY_FORMS OVERWORLD( - gObjectEventPic_TyranitarMega, + sPicTable_TyranitarMega, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -8246,7 +8246,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(2, 17, SHADOW_SIZE_L) FOOTPRINT(Lugia) OVERWORLD( - gObjectEventPic_Lugia, + sPicTable_Lugia, SIZE_64x64, SHADOW_SIZE_M, TRACKS_NONE, @@ -8325,7 +8325,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(1, 17, SHADOW_SIZE_L) FOOTPRINT(HoOh) OVERWORLD( - gObjectEventPic_HoOh, + sPicTable_HoOh, SIZE_64x64, SHADOW_SIZE_M, TRACKS_NONE, @@ -8406,7 +8406,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = SHADOW(0, 14, SHADOW_SIZE_S) FOOTPRINT(Celebi) OVERWORLD( - gObjectEventPic_Celebi, + sPicTable_Celebi, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, diff --git a/src/data/pokemon/species_info/gen_3_families.h b/src/data/pokemon/species_info/gen_3_families.h index ebdca44984..7b87415c76 100644 --- a/src/data/pokemon/species_info/gen_3_families.h +++ b/src/data/pokemon/species_info/gen_3_families.h @@ -60,7 +60,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(-3, 4, SHADOW_SIZE_S) FOOTPRINT(Treecko) OVERWORLD( - gObjectEventPic_Treecko, + sPicTable_Treecko, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -130,7 +130,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(1, 7, SHADOW_SIZE_M) FOOTPRINT(Grovyle) OVERWORLD( - gObjectEventPic_Grovyle, + sPicTable_Grovyle, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -203,7 +203,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(2, 11, SHADOW_SIZE_L) FOOTPRINT(Sceptile) OVERWORLD( - gObjectEventPic_Sceptile, + sPicTable_Sceptile, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -269,7 +269,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = FOOTPRINT(Sceptile) #if OW_BATTLE_ONLY_FORMS OVERWORLD( - gObjectEventPic_SceptileMega, + sPicTable_SceptileMega, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -350,7 +350,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(-1, 1, SHADOW_SIZE_S) FOOTPRINT(Torchic) OVERWORLD( - gObjectEventPic_Torchic, + sPicTable_Torchic, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -359,7 +359,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = gShinyOverworldPalette_Torchic ) OVERWORLD_FEMALE( - gObjectEventPic_TorchicF, + sPicTable_TorchicF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -432,7 +432,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(-1, 8, SHADOW_SIZE_M) FOOTPRINT(Combusken) OVERWORLD( - gObjectEventPic_Combusken, + sPicTable_Combusken, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -441,7 +441,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = gShinyOverworldPalette_Combusken ) OVERWORLD_FEMALE( - gObjectEventPic_CombuskenF, + sPicTable_CombuskenF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -520,7 +520,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(4, 8, SHADOW_SIZE_M) FOOTPRINT(Blaziken) OVERWORLD( - gObjectEventPic_Blaziken, + sPicTable_Blaziken, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -529,7 +529,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = gShinyOverworldPalette_Blaziken ) OVERWORLD_FEMALE( - gObjectEventPic_BlazikenF, + sPicTable_BlazikenF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -593,7 +593,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = FOOTPRINT(Blaziken) #if OW_BATTLE_ONLY_FORMS OVERWORLD( - gObjectEventPic_BlazikenMega, + sPicTable_BlazikenMega, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -668,7 +668,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(1, 1, SHADOW_SIZE_S) FOOTPRINT(Mudkip) OVERWORLD( - gObjectEventPic_Mudkip, + sPicTable_Mudkip, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -742,7 +742,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(-1, 7, SHADOW_SIZE_M) FOOTPRINT(Marshtomp) OVERWORLD( - gObjectEventPic_Marshtomp, + sPicTable_Marshtomp, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -817,7 +817,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(5, 7, SHADOW_SIZE_L) FOOTPRINT(Swampert) OVERWORLD( - gObjectEventPic_Swampert, + sPicTable_Swampert, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -883,7 +883,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = FOOTPRINT(Swampert) #if OW_BATTLE_ONLY_FORMS OVERWORLD( - gObjectEventPic_SwampertMega, + sPicTable_SwampertMega, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -966,7 +966,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(0, 2, SHADOW_SIZE_M) FOOTPRINT(Poochyena) OVERWORLD( - gObjectEventPic_Poochyena, + sPicTable_Poochyena, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1040,7 +1040,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(-2, 6, SHADOW_SIZE_L) FOOTPRINT(Mightyena) OVERWORLD( - gObjectEventPic_Mightyena, + sPicTable_Mightyena, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1124,7 +1124,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(-4, 0, SHADOW_SIZE_M) FOOTPRINT(Zigzagoon) OVERWORLD( - gObjectEventPic_Zigzagoon, + sPicTable_Zigzagoon, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1201,7 +1201,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(-6, 0, SHADOW_SIZE_L) FOOTPRINT(Linoone) OVERWORLD( - gObjectEventPic_Linoone, + sPicTable_Linoone, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1265,7 +1265,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(-5, 0, SHADOW_SIZE_M) FOOTPRINT(Zigzagoon) OVERWORLD( - gObjectEventPic_ZigzagoonGalar, + sPicTable_ZigzagoonGalar, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1331,7 +1331,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(-4, 0, SHADOW_SIZE_L) FOOTPRINT(Linoone) OVERWORLD( - gObjectEventPic_LinooneGalar, + sPicTable_LinooneGalar, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1396,7 +1396,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(2, 13, SHADOW_SIZE_M) FOOTPRINT(Obstagoon) OVERWORLD( - gObjectEventPic_Obstagoon, + sPicTable_Obstagoon, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1473,7 +1473,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(0, 1, SHADOW_SIZE_S) FOOTPRINT(Wurmple) OVERWORLD( - gObjectEventPic_Wurmple, + sPicTable_Wurmple, SIZE_32x32, SHADOW_SIZE_M, TRACKS_BUG, @@ -1542,7 +1542,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(0, -4, SHADOW_SIZE_M) FOOTPRINT(Silcoon) OVERWORLD( - gObjectEventPic_Silcoon, + sPicTable_Silcoon, SIZE_32x32, SHADOW_SIZE_M, TRACKS_BUG, @@ -1632,7 +1632,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(-5, 12, SHADOW_SIZE_S) FOOTPRINT(Beautifly) OVERWORLD( - gObjectEventPic_Beautifly, + sPicTable_Beautifly, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, @@ -1641,7 +1641,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = gShinyOverworldPalette_Beautifly ) OVERWORLD_FEMALE( - gObjectEventPic_BeautiflyF, + sPicTable_BeautiflyF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, @@ -1713,7 +1713,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(0, -4, SHADOW_SIZE_M) FOOTPRINT(Cascoon) OVERWORLD( - gObjectEventPic_Cascoon, + sPicTable_Cascoon, SIZE_32x32, SHADOW_SIZE_M, TRACKS_BUG, @@ -1811,7 +1811,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(-2, 11, SHADOW_SIZE_S) FOOTPRINT(Dustox) OVERWORLD( - gObjectEventPic_Dustox, + sPicTable_Dustox, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, @@ -1820,7 +1820,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = gShinyOverworldPalette_Dustox ) OVERWORLD_FEMALE( - gObjectEventPic_DustoxF, + sPicTable_DustoxF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, @@ -1887,7 +1887,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(2, -3, SHADOW_SIZE_S) FOOTPRINT(Lotad) OVERWORLD( - gObjectEventPic_Lotad, + sPicTable_Lotad, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1958,7 +1958,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(4, 2, SHADOW_SIZE_S) FOOTPRINT(Lombre) OVERWORLD( - gObjectEventPic_Lombre, + sPicTable_Lombre, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2042,7 +2042,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(-3, 14, SHADOW_SIZE_M) FOOTPRINT(Ludicolo) OVERWORLD( - gObjectEventPic_Ludicolo, + sPicTable_Ludicolo, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2051,7 +2051,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = gShinyOverworldPalette_Ludicolo ) OVERWORLD_FEMALE( - gObjectEventPic_LudicoloF, + sPicTable_LudicoloF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2124,7 +2124,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(0, 1, SHADOW_SIZE_S) FOOTPRINT(Seedot) OVERWORLD( - gObjectEventPic_Seedot, + sPicTable_Seedot, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2205,7 +2205,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(-3, 5, SHADOW_SIZE_S) FOOTPRINT(Nuzleaf) OVERWORLD( - gObjectEventPic_Nuzleaf, + sPicTable_Nuzleaf, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2214,7 +2214,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = gShinyOverworldPalette_Nuzleaf ) OVERWORLD_FEMALE( - gObjectEventPic_NuzleafF, + sPicTable_NuzleafF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2296,7 +2296,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(-5, 5, SHADOW_SIZE_M) FOOTPRINT(Shiftry) OVERWORLD( - gObjectEventPic_Shiftry, + sPicTable_Shiftry, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2305,7 +2305,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = gShinyOverworldPalette_Shiftry ) OVERWORLD_FEMALE( - gObjectEventPic_ShiftryF, + sPicTable_ShiftryF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2377,7 +2377,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(-3, 1, SHADOW_SIZE_S) FOOTPRINT(Taillow) OVERWORLD( - gObjectEventPic_Taillow, + sPicTable_Taillow, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2451,7 +2451,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(-7, 7, SHADOW_SIZE_M) FOOTPRINT(Swellow) OVERWORLD( - gObjectEventPic_Swellow, + sPicTable_Swellow, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, @@ -2525,7 +2525,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(-2, 15, SHADOW_SIZE_S) FOOTPRINT(Wingull) OVERWORLD( - gObjectEventPic_Wingull, + sPicTable_Wingull, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, @@ -2611,7 +2611,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(-1, 17, SHADOW_SIZE_M) FOOTPRINT(Pelipper) OVERWORLD( - gObjectEventPic_Pelipper, + sPicTable_Pelipper, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, @@ -2687,7 +2687,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(0, 1, SHADOW_SIZE_S) FOOTPRINT(Ralts) OVERWORLD( - gObjectEventPic_Ralts, + sPicTable_Ralts, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2755,7 +2755,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(-2, 7, SHADOW_SIZE_S) FOOTPRINT(Kirlia) OVERWORLD( - gObjectEventPic_Kirlia, + sPicTable_Kirlia, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2829,7 +2829,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(0, 14, SHADOW_SIZE_L) FOOTPRINT(Gardevoir) OVERWORLD( - gObjectEventPic_Gardevoir, + sPicTable_Gardevoir, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2895,7 +2895,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = FOOTPRINT(Gardevoir) #if OW_BATTLE_ONLY_FORMS OVERWORLD( - gObjectEventPic_GardevoirMega, + sPicTable_GardevoirMega, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2976,7 +2976,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(4, 13, SHADOW_SIZE_L) FOOTPRINT(Gallade) OVERWORLD( - gObjectEventPic_Gallade, + sPicTable_Gallade, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3042,7 +3042,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = FOOTPRINT(Gallade) #if OW_BATTLE_ONLY_FORMS OVERWORLD( - gObjectEventPic_GalladeMega, + sPicTable_GalladeMega, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3119,7 +3119,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(-1, -3, SHADOW_SIZE_S) FOOTPRINT(Surskit) OVERWORLD( - gObjectEventPic_Surskit, + sPicTable_Surskit, SIZE_32x32, SHADOW_SIZE_M, TRACKS_BUG, @@ -3202,7 +3202,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(-4, 17, SHADOW_SIZE_M) FOOTPRINT(Masquerain) OVERWORLD( - gObjectEventPic_Masquerain, + sPicTable_Masquerain, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, @@ -3284,7 +3284,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(0, 0, SHADOW_SIZE_S) FOOTPRINT(Shroomish) OVERWORLD( - gObjectEventPic_Shroomish, + sPicTable_Shroomish, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3360,7 +3360,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(-4, 9, SHADOW_SIZE_M) FOOTPRINT(Breloom) OVERWORLD( - gObjectEventPic_Breloom, + sPicTable_Breloom, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3431,7 +3431,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(1, -4, SHADOW_SIZE_M) FOOTPRINT(Slakoth) OVERWORLD( - gObjectEventPic_Slakoth, + sPicTable_Slakoth, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3503,7 +3503,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(4, 6, SHADOW_SIZE_M) FOOTPRINT(Vigoroth) OVERWORLD( - gObjectEventPic_Vigoroth, + sPicTable_Vigoroth, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3580,7 +3580,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(0, 6, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Slaking) OVERWORLD( - gObjectEventPic_Slaking, + sPicTable_Slaking, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3651,7 +3651,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(2, -3, SHADOW_SIZE_M) FOOTPRINT(Nincada) OVERWORLD( - gObjectEventPic_Nincada, + sPicTable_Nincada, SIZE_32x32, SHADOW_SIZE_M, TRACKS_BUG, @@ -3736,7 +3736,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(-2, 10, SHADOW_SIZE_S) FOOTPRINT(Ninjask) OVERWORLD( - gObjectEventPic_Ninjask, + sPicTable_Ninjask, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, @@ -3805,7 +3805,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(-2, 9, SHADOW_SIZE_S) FOOTPRINT(Shedinja) OVERWORLD( - gObjectEventPic_Shedinja, + sPicTable_Shedinja, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, @@ -3880,7 +3880,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(1, 0, SHADOW_SIZE_S) FOOTPRINT(Whismur) OVERWORLD( - gObjectEventPic_Whismur, + sPicTable_Whismur, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3950,7 +3950,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(1, 9, SHADOW_SIZE_M) FOOTPRINT(Loudred) OVERWORLD( - gObjectEventPic_Loudred, + sPicTable_Loudred, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4025,7 +4025,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(0, 12, SHADOW_SIZE_L) FOOTPRINT(Exploud) OVERWORLD( - gObjectEventPic_Exploud, + sPicTable_Exploud, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4100,7 +4100,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(1, 5, SHADOW_SIZE_M) FOOTPRINT(Makuhita) OVERWORLD( - gObjectEventPic_Makuhita, + sPicTable_Makuhita, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4170,7 +4170,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(-3, 9, SHADOW_SIZE_L) FOOTPRINT(Hariyama) OVERWORLD( - gObjectEventPic_Hariyama, + sPicTable_Hariyama, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4243,7 +4243,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(-1, 3, SHADOW_SIZE_M) FOOTPRINT(Nosepass) OVERWORLD( - gObjectEventPic_Nosepass, + sPicTable_Nosepass, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4318,7 +4318,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(-1, 13, SHADOW_SIZE_L) FOOTPRINT(Probopass) OVERWORLD( - gObjectEventPic_Probopass, + sPicTable_Probopass, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4391,7 +4391,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(-3, 1, SHADOW_SIZE_S) FOOTPRINT(Skitty) OVERWORLD( - gObjectEventPic_Skitty, + sPicTable_Skitty, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4470,7 +4470,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(-1, 9, SHADOW_SIZE_S) FOOTPRINT(Delcatty) OVERWORLD( - gObjectEventPic_Delcatty, + sPicTable_Delcatty, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4546,7 +4546,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(2, 3, SHADOW_SIZE_S) FOOTPRINT(Sableye) OVERWORLD( - gObjectEventPic_Sableye, + sPicTable_Sableye, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4613,7 +4613,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = FOOTPRINT(Sableye) #if OW_BATTLE_ONLY_FORMS OVERWORLD( - gObjectEventPic_SableyeMega, + sPicTable_SableyeMega, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4699,7 +4699,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(1, 4, SHADOW_SIZE_L) FOOTPRINT(Mawile) OVERWORLD( - gObjectEventPic_Mawile, + sPicTable_Mawile, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4767,7 +4767,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = FOOTPRINT(Mawile) #if OW_BATTLE_ONLY_FORMS OVERWORLD( - gObjectEventPic_MawileMega, + sPicTable_MawileMega, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4844,7 +4844,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(2, -3, SHADOW_SIZE_S) FOOTPRINT(Aron) OVERWORLD( - gObjectEventPic_Aron, + sPicTable_Aron, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4915,7 +4915,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(4, 2, SHADOW_SIZE_L) FOOTPRINT(Lairon) OVERWORLD( - gObjectEventPic_Lairon, + sPicTable_Lairon, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4989,7 +4989,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(5, 12, SHADOW_SIZE_L) FOOTPRINT(Aggron) OVERWORLD( - gObjectEventPic_Aggron, + sPicTable_Aggron, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5056,7 +5056,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = FOOTPRINT(Aggron) #if OW_BATTLE_ONLY_FORMS OVERWORLD( - gObjectEventPic_AggronMega, + sPicTable_AggronMega, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5135,7 +5135,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(0, 1, SHADOW_SIZE_S) FOOTPRINT(Meditite) OVERWORLD( - gObjectEventPic_Meditite, + sPicTable_Meditite, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5144,7 +5144,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = gShinyOverworldPalette_Meditite ) OVERWORLD_FEMALE( - gObjectEventPic_MedititeF, + sPicTable_MedititeF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5220,7 +5220,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(-2, 13, SHADOW_SIZE_S) FOOTPRINT(Medicham) OVERWORLD( - gObjectEventPic_Medicham, + sPicTable_Medicham, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5229,7 +5229,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = gShinyOverworldPalette_Medicham ) OVERWORLD_FEMALE( - gObjectEventPic_MedichamF, + sPicTable_MedichamF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5293,7 +5293,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = FOOTPRINT(Medicham) #if OW_BATTLE_ONLY_FORMS OVERWORLD( - gObjectEventPic_MedichamMega, + sPicTable_MedichamMega, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5368,7 +5368,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(3, -1, SHADOW_SIZE_M) FOOTPRINT(Electrike) OVERWORLD( - gObjectEventPic_Electrike, + sPicTable_Electrike, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5438,7 +5438,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(1, 10, SHADOW_SIZE_M) FOOTPRINT(Manectric) OVERWORLD( - gObjectEventPic_Manectric, + sPicTable_Manectric, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5503,7 +5503,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = FOOTPRINT(Manectric) #if OW_BATTLE_ONLY_FORMS OVERWORLD( - gObjectEventPic_ManectricMega, + sPicTable_ManectricMega, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5583,7 +5583,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(2, 3, SHADOW_SIZE_S) FOOTPRINT(Plusle) OVERWORLD( - gObjectEventPic_Plusle, + sPicTable_Plusle, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5659,7 +5659,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(-4, 3, SHADOW_SIZE_S) FOOTPRINT(Minun) OVERWORLD( - gObjectEventPic_Minun, + sPicTable_Minun, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5739,7 +5739,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(0, 5, SHADOW_SIZE_S) FOOTPRINT(Volbeat) OVERWORLD( - gObjectEventPic_Volbeat, + sPicTable_Volbeat, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, @@ -5819,7 +5819,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(0, 5, SHADOW_SIZE_S) FOOTPRINT(Illumise) OVERWORLD( - gObjectEventPic_Illumise, + sPicTable_Illumise, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, @@ -5891,7 +5891,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(-3, 0, SHADOW_SIZE_S) FOOTPRINT(Budew) OVERWORLD( - gObjectEventPic_Budew, + sPicTable_Budew, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5968,7 +5968,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(-2, 3, SHADOW_SIZE_S) FOOTPRINT(Roselia) OVERWORLD( - gObjectEventPic_Roselia, + sPicTable_Roselia, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5977,7 +5977,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = gShinyOverworldPalette_Roselia ) OVERWORLD_FEMALE( - gObjectEventPic_RoseliaF, + sPicTable_RoseliaF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6059,7 +6059,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(0, 6, SHADOW_SIZE_S) FOOTPRINT(Roserade) OVERWORLD( - gObjectEventPic_Roserade, + sPicTable_Roserade, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6068,7 +6068,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = gShinyOverworldPalette_Roserade ) OVERWORLD_FEMALE( - gObjectEventPic_RoseradeF, + sPicTable_RoseradeF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6145,7 +6145,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(1, -2, SHADOW_SIZE_S) FOOTPRINT(Gulpin) OVERWORLD( - gObjectEventPic_Gulpin, + sPicTable_Gulpin, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SPOT, @@ -6154,7 +6154,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = gShinyOverworldPalette_Gulpin ) OVERWORLD_FEMALE( - gObjectEventPic_GulpinF, + sPicTable_GulpinF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SPOT, @@ -6229,7 +6229,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(4, 3, SHADOW_SIZE_L) FOOTPRINT(Swalot) OVERWORLD( - gObjectEventPic_Swalot, + sPicTable_Swalot, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SLITHER, @@ -6238,7 +6238,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = gShinyOverworldPalette_Swalot ) OVERWORLD_FEMALE( - gObjectEventPic_SwalotF, + sPicTable_SwalotF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SLITHER, @@ -6311,7 +6311,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(-1, 8, SHADOW_SIZE_S) FOOTPRINT(Carvanha) OVERWORLD( - gObjectEventPic_Carvanha, + sPicTable_Carvanha, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, @@ -6386,7 +6386,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(-2, 14, SHADOW_SIZE_M) FOOTPRINT(Sharpedo) OVERWORLD( - gObjectEventPic_Sharpedo, + sPicTable_Sharpedo, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, @@ -6454,7 +6454,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = FOOTPRINT(Sharpedo) #if OW_BATTLE_ONLY_FORMS OVERWORLD( - gObjectEventPic_SharpedoMega, + sPicTable_SharpedoMega, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, @@ -6531,7 +6531,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(0, 3, SHADOW_SIZE_L) FOOTPRINT(Wailmer) OVERWORLD( - gObjectEventPic_Wailmer, + sPicTable_Wailmer, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SPOT, @@ -6600,7 +6600,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(1, 7, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Wailord) OVERWORLD( - gObjectEventPic_Wailord, + sPicTable_Wailord, SIZE_64x64, SHADOW_SIZE_M, TRACKS_NONE, @@ -6680,7 +6680,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(4, 2, SHADOW_SIZE_S) FOOTPRINT(Numel) OVERWORLD( - gObjectEventPic_Numel, + sPicTable_Numel, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6689,7 +6689,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = gShinyOverworldPalette_Numel ) OVERWORLD_FEMALE( - gObjectEventPic_NumelF, + sPicTable_NumelF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6770,7 +6770,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(2, 4, SHADOW_SIZE_L) FOOTPRINT(Camerupt) OVERWORLD( - gObjectEventPic_Camerupt, + sPicTable_Camerupt, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6779,7 +6779,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = gShinyOverworldPalette_Camerupt ) OVERWORLD_FEMALE( - gObjectEventPic_CameruptF, + sPicTable_CameruptF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6844,7 +6844,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = FOOTPRINT(Camerupt) #if OW_BATTLE_ONLY_FORMS OVERWORLD( - gObjectEventPic_CameruptMega, + sPicTable_CameruptMega, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6924,7 +6924,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(2, 7, SHADOW_SIZE_L) FOOTPRINT(Torkoal) OVERWORLD( - gObjectEventPic_Torkoal, + sPicTable_Torkoal, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -7001,7 +7001,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(-1, 5, SHADOW_SIZE_S) FOOTPRINT(Spoink) OVERWORLD( - gObjectEventPic_Spoink, + sPicTable_Spoink, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SPOT, @@ -7072,7 +7072,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(-1, 8, SHADOW_SIZE_M) FOOTPRINT(Grumpig) OVERWORLD( - gObjectEventPic_Grumpig, + sPicTable_Grumpig, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -7147,7 +7147,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(2, 6, SHADOW_SIZE_S) FOOTPRINT(Spinda) OVERWORLD( - gObjectEventPic_Spinda, + sPicTable_Spinda, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -7223,7 +7223,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(4, -1, SHADOW_SIZE_S) FOOTPRINT(Trapinch) OVERWORLD( - gObjectEventPic_Trapinch, + sPicTable_Trapinch, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -7300,7 +7300,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(-2, 0, SHADOW_SIZE_L) FOOTPRINT(Vibrava) OVERWORLD( - gObjectEventPic_Vibrava, + sPicTable_Vibrava, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -7383,7 +7383,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(0, 17, SHADOW_SIZE_M) FOOTPRINT(Flygon) OVERWORLD( - gObjectEventPic_Flygon, + sPicTable_Flygon, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, @@ -7460,7 +7460,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(0, 1, SHADOW_SIZE_S) FOOTPRINT(Cacnea) OVERWORLD( - gObjectEventPic_Cacnea, + sPicTable_Cacnea, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -7536,7 +7536,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(-1, 14, SHADOW_SIZE_M) FOOTPRINT(Cacturne) OVERWORLD( - gObjectEventPic_Cacturne, + sPicTable_Cacturne, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -7545,7 +7545,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = gShinyOverworldPalette_Cacturne ) OVERWORLD_FEMALE( - gObjectEventPic_CacturneF, + sPicTable_CacturneF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -7616,7 +7616,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(-2, 0, SHADOW_SIZE_S) FOOTPRINT(Swablu) OVERWORLD( - gObjectEventPic_Swablu, + sPicTable_Swablu, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, @@ -7687,7 +7687,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(-1, 14, SHADOW_SIZE_L) FOOTPRINT(Altaria) OVERWORLD( - gObjectEventPic_Altaria, + sPicTable_Altaria, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, @@ -7754,7 +7754,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = FOOTPRINT(Altaria) #if OW_BATTLE_ONLY_FORMS OVERWORLD( - gObjectEventPic_AltariaMega, + sPicTable_AltariaMega, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, @@ -7833,7 +7833,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(-1, 8, SHADOW_SIZE_M) FOOTPRINT(Zangoose) OVERWORLD( - gObjectEventPic_Zangoose, + sPicTable_Zangoose, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -7909,7 +7909,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(-3, 7, SHADOW_SIZE_L) FOOTPRINT(Seviper) OVERWORLD( - gObjectEventPic_Seviper, + sPicTable_Seviper, SIZE_32x32, SHADOW_SIZE_M, TRACKS_BIKE_TIRE, @@ -7989,7 +7989,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(0, 15, SHADOW_SIZE_S) FOOTPRINT(Lunatone) OVERWORLD( - gObjectEventPic_Lunatone, + sPicTable_Lunatone, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, @@ -8068,7 +8068,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(0, 15, SHADOW_SIZE_M) FOOTPRINT(Solrock) OVERWORLD( - gObjectEventPic_Solrock, + sPicTable_Solrock, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, @@ -8151,7 +8151,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(0, 3, SHADOW_SIZE_M) FOOTPRINT(Barboach) OVERWORLD( - gObjectEventPic_Barboach, + sPicTable_Barboach, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SPOT, @@ -8233,7 +8233,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(0, 3, SHADOW_SIZE_L) FOOTPRINT(Whiscash) OVERWORLD( - gObjectEventPic_Whiscash, + sPicTable_Whiscash, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -8305,7 +8305,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(1, 5, SHADOW_SIZE_M) FOOTPRINT(Corphish) OVERWORLD( - gObjectEventPic_Corphish, + sPicTable_Corphish, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -8375,7 +8375,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(6, 9, SHADOW_SIZE_M) FOOTPRINT(Crawdaunt) OVERWORLD( - gObjectEventPic_Crawdaunt, + sPicTable_Crawdaunt, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -8449,7 +8449,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(-2, 5, SHADOW_SIZE_S) FOOTPRINT(Baltoy) OVERWORLD( - gObjectEventPic_Baltoy, + sPicTable_Baltoy, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SPOT, @@ -8522,7 +8522,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(0, 18, SHADOW_SIZE_M) FOOTPRINT(Claydol) OVERWORLD( - gObjectEventPic_Claydol, + sPicTable_Claydol, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, @@ -8599,7 +8599,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(0, 5, SHADOW_SIZE_S) FOOTPRINT(Lileep) OVERWORLD( - gObjectEventPic_Lileep, + sPicTable_Lileep, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SLITHER, @@ -8678,7 +8678,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(2, 11, SHADOW_SIZE_M) FOOTPRINT(Cradily) OVERWORLD( - gObjectEventPic_Cradily, + sPicTable_Cradily, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SLITHER, @@ -8756,7 +8756,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(0, 4, SHADOW_SIZE_S) FOOTPRINT(Anorith) OVERWORLD( - gObjectEventPic_Anorith, + sPicTable_Anorith, SIZE_32x32, SHADOW_SIZE_M, TRACKS_BUG, @@ -8832,7 +8832,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(-2, 11, SHADOW_SIZE_L) FOOTPRINT(Armaldo) OVERWORLD( - gObjectEventPic_Armaldo, + sPicTable_Armaldo, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -8908,7 +8908,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(-2, 2, SHADOW_SIZE_S) FOOTPRINT(Feebas) OVERWORLD( - gObjectEventPic_Feebas, + sPicTable_Feebas, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SPOT, @@ -8993,7 +8993,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(0, 12, SHADOW_SIZE_M) FOOTPRINT(Milotic) OVERWORLD( - gObjectEventPic_Milotic, + sPicTable_Milotic, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SLITHER, @@ -9002,7 +9002,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = gShinyOverworldPalette_Milotic ) OVERWORLD_FEMALE( - gObjectEventPic_MiloticF, + sPicTable_MiloticF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SLITHER, @@ -9073,7 +9073,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(1, 10, SHADOW_SIZE_S) FOOTPRINT(Castform) OVERWORLD( - gObjectEventPic_CastformNormal, + sPicTable_CastformNormal, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, @@ -9149,7 +9149,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(0, 7, SHADOW_SIZE_S) FOOTPRINT(Castform) OVERWORLD( - gObjectEventPic_CastformSunny, + sPicTable_CastformSunny, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, @@ -9223,7 +9223,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(0, 7, SHADOW_SIZE_S) FOOTPRINT(Castform) OVERWORLD( - gObjectEventPic_CastformRainy, + sPicTable_CastformRainy, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, @@ -9297,7 +9297,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(0, 8, SHADOW_SIZE_S) FOOTPRINT(Castform) OVERWORLD( - gObjectEventPic_CastformSnowy, + sPicTable_CastformSnowy, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, @@ -9375,7 +9375,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(2, 8, SHADOW_SIZE_S) FOOTPRINT(Kecleon) OVERWORLD( - gObjectEventPic_Kecleon, + sPicTable_Kecleon, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -9454,7 +9454,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(2, 12, SHADOW_SIZE_S) FOOTPRINT(Shuppet) OVERWORLD( - gObjectEventPic_Shuppet, + sPicTable_Shuppet, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, @@ -9532,7 +9532,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(0, 7, SHADOW_SIZE_S) FOOTPRINT(Banette) OVERWORLD( - gObjectEventPic_Banette, + sPicTable_Banette, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -9599,7 +9599,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = FOOTPRINT(Banette) #if OW_BATTLE_ONLY_FORMS OVERWORLD( - gObjectEventPic_BanetteMega, + sPicTable_BanetteMega, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -9681,7 +9681,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(0, 12, SHADOW_SIZE_S) FOOTPRINT(Duskull) OVERWORLD( - gObjectEventPic_Duskull, + sPicTable_Duskull, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, @@ -9758,7 +9758,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(-2, 8, SHADOW_SIZE_M) FOOTPRINT(Dusclops) OVERWORLD( - gObjectEventPic_Dusclops, + sPicTable_Dusclops, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -9847,7 +9847,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(6, 13, SHADOW_SIZE_M) FOOTPRINT(Dusknoir) OVERWORLD( - gObjectEventPic_Dusknoir, + sPicTable_Dusknoir, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -9922,7 +9922,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(-6, 13, SHADOW_SIZE_L) FOOTPRINT(Tropius) OVERWORLD( - gObjectEventPic_Tropius, + sPicTable_Tropius, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -9998,7 +9998,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(-1, -2, SHADOW_SIZE_S) FOOTPRINT(Chingling) OVERWORLD( - gObjectEventPic_Chingling, + sPicTable_Chingling, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -10082,7 +10082,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(-3, 16, SHADOW_SIZE_S) FOOTPRINT(Chimecho) OVERWORLD( - gObjectEventPic_Chimecho, + sPicTable_Chimecho, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, @@ -10159,7 +10159,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(4, 6, SHADOW_SIZE_L) FOOTPRINT(Absol) OVERWORLD( - gObjectEventPic_Absol, + sPicTable_Absol, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -10227,7 +10227,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = FOOTPRINT(Absol) #if OW_BATTLE_ONLY_FORMS OVERWORLD( - gObjectEventPic_AbsolMega, + sPicTable_AbsolMega, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -10309,7 +10309,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(1, 2, SHADOW_SIZE_S) FOOTPRINT(Snorunt) OVERWORLD( - gObjectEventPic_Snorunt, + sPicTable_Snorunt, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -10385,7 +10385,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(1, 15, SHADOW_SIZE_M) FOOTPRINT(Glalie) OVERWORLD( - gObjectEventPic_Glalie, + sPicTable_Glalie, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -10451,7 +10451,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = FOOTPRINT(Glalie) #if OW_BATTLE_ONLY_FORMS OVERWORLD( - gObjectEventPic_GlalieMega, + sPicTable_GlalieMega, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -10524,7 +10524,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(-1, 10, SHADOW_SIZE_S) FOOTPRINT(Froslass) OVERWORLD( - gObjectEventPic_Froslass, + sPicTable_Froslass, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -10603,7 +10603,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(0, -1, SHADOW_SIZE_M) FOOTPRINT(Spheal) OVERWORLD( - gObjectEventPic_Spheal, + sPicTable_Spheal, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -10677,7 +10677,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(-1, 2, SHADOW_SIZE_L) FOOTPRINT(Sealeo) OVERWORLD( - gObjectEventPic_Sealeo, + sPicTable_Sealeo, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -10756,7 +10756,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(0, 8, SHADOW_SIZE_L) FOOTPRINT(Walrein) OVERWORLD( - gObjectEventPic_Walrein, + sPicTable_Walrein, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -10828,7 +10828,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(-1, 1, SHADOW_SIZE_M) FOOTPRINT(Clamperl) OVERWORLD( - gObjectEventPic_Clamperl, + sPicTable_Clamperl, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SPOT, @@ -10903,7 +10903,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(2, 7, SHADOW_SIZE_L) FOOTPRINT(Huntail) OVERWORLD( - gObjectEventPic_Huntail, + sPicTable_Huntail, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SLITHER, @@ -10972,7 +10972,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(-1, 5, SHADOW_SIZE_M) FOOTPRINT(Gorebyss) OVERWORLD( - gObjectEventPic_Gorebyss, + sPicTable_Gorebyss, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SLITHER, @@ -11050,7 +11050,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(0, 3, SHADOW_SIZE_M) FOOTPRINT(Relicanth) OVERWORLD( - gObjectEventPic_Relicanth, + sPicTable_Relicanth, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, @@ -11059,7 +11059,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = gShinyOverworldPalette_Relicanth ) OVERWORLD_FEMALE( - gObjectEventPic_RelicanthF, + sPicTable_RelicanthF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, @@ -11129,7 +11129,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(-1, 0, SHADOW_SIZE_S) FOOTPRINT(Luvdisc) OVERWORLD( - gObjectEventPic_Luvdisc, + sPicTable_Luvdisc, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SPOT, @@ -11201,7 +11201,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(4, 3, SHADOW_SIZE_S) FOOTPRINT(Bagon) OVERWORLD( - gObjectEventPic_Bagon, + sPicTable_Bagon, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -11272,7 +11272,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(1, 2, SHADOW_SIZE_M) FOOTPRINT(Shelgon) OVERWORLD( - gObjectEventPic_Shelgon, + sPicTable_Shelgon, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -11349,7 +11349,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(3, 8, SHADOW_SIZE_L) FOOTPRINT(Salamence) OVERWORLD( - gObjectEventPic_Salamence, + sPicTable_Salamence, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -11416,7 +11416,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = FOOTPRINT(Salamence) #if OW_BATTLE_ONLY_FORMS OVERWORLD( - gObjectEventPic_SalamenceMega, + sPicTable_SalamenceMega, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -11493,7 +11493,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(0, 4, SHADOW_SIZE_S) FOOTPRINT(Beldum) OVERWORLD( - gObjectEventPic_Beldum, + sPicTable_Beldum, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, @@ -11564,7 +11564,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(1, 2, SHADOW_SIZE_M) FOOTPRINT(Metang) OVERWORLD( - gObjectEventPic_Metang, + sPicTable_Metang, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, @@ -11640,7 +11640,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(2, -2, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Metagross) OVERWORLD( - gObjectEventPic_Metagross, + sPicTable_Metagross, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -11707,7 +11707,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = FOOTPRINT(Metagross) #if OW_BATTLE_ONLY_FORMS OVERWORLD( - gObjectEventPic_MetagrossMega, + sPicTable_MetagrossMega, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -11789,7 +11789,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(1, 10, SHADOW_SIZE_L) FOOTPRINT(Regirock) OVERWORLD( - gObjectEventPic_Regirock, + sPicTable_Regirock, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -11867,7 +11867,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(1, 10, SHADOW_SIZE_L) FOOTPRINT(Regice) OVERWORLD( - gObjectEventPic_Regice, + sPicTable_Regice, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -11946,7 +11946,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(4, 8, SHADOW_SIZE_L) FOOTPRINT(Registeel) OVERWORLD( - gObjectEventPic_Registeel, + sPicTable_Registeel, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -12025,7 +12025,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(3, 15, SHADOW_SIZE_M) FOOTPRINT(Latias) OVERWORLD( - gObjectEventPic_Latias, + sPicTable_Latias, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, @@ -12094,7 +12094,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = FOOTPRINT(Latias) #if OW_BATTLE_ONLY_FORMS OVERWORLD( - gObjectEventPic_LatiasMega, + sPicTable_LatiasMega, SIZE_64x64, SHADOW_SIZE_M, TRACKS_NONE, @@ -12178,7 +12178,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(1, 17, SHADOW_SIZE_M) FOOTPRINT(Latios) OVERWORLD( - gObjectEventPic_Latios, + sPicTable_Latios, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, @@ -12247,7 +12247,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = FOOTPRINT(Latios) #if OW_BATTLE_ONLY_FORMS OVERWORLD( - gObjectEventPic_LatiosMega, + sPicTable_LatiosMega, SIZE_64x64, SHADOW_SIZE_M, TRACKS_NONE, @@ -12331,7 +12331,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(-1, 11, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Kyogre) OVERWORLD( - gObjectEventPic_Kyogre, + sPicTable_Kyogre, SIZE_64x64, SHADOW_SIZE_M, TRACKS_NONE, @@ -12399,7 +12399,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = FOOTPRINT(Kyogre) #if OW_BATTLE_ONLY_FORMS OVERWORLD( - gObjectEventPic_KyogrePrimal, + sPicTable_KyogrePrimal, SIZE_64x64, SHADOW_SIZE_M, TRACKS_NONE, @@ -12483,7 +12483,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(2, 11, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Groudon) OVERWORLD( - gObjectEventPic_Groudon, + sPicTable_Groudon, SIZE_64x64, SHADOW_SIZE_M, TRACKS_FOOT, @@ -12552,7 +12552,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = FOOTPRINT(Groudon) #if OW_BATTLE_ONLY_FORMS OVERWORLD( - gObjectEventPic_GroudonPrimal, + sPicTable_GroudonPrimal, SIZE_64x64, SHADOW_SIZE_M, TRACKS_FOOT, @@ -12639,7 +12639,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(0, 17, SHADOW_SIZE_L) FOOTPRINT(Rayquaza) OVERWORLD( - gObjectEventPic_Rayquaza, + sPicTable_Rayquaza, SIZE_64x64, SHADOW_SIZE_M, TRACKS_NONE, @@ -12710,7 +12710,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = FOOTPRINT(Rayquaza) #if OW_BATTLE_ONLY_FORMS OVERWORLD( - gObjectEventPic_RayquazaMega, + sPicTable_RayquazaMega, SIZE_64x64, SHADOW_SIZE_M, TRACKS_NONE, @@ -12802,7 +12802,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(0, 12, SHADOW_SIZE_S) FOOTPRINT(Jirachi) OVERWORLD( - gObjectEventPic_Jirachi, + sPicTable_Jirachi, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, @@ -12881,7 +12881,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(0, 14, SHADOW_SIZE_M) FOOTPRINT(Deoxys) OVERWORLD( - gObjectEventPic_DeoxysNormal, + sPicTable_DeoxysNormal, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -12950,7 +12950,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconPalIndex = 0, SHADOW(0, 14, SHADOW_SIZE_M) OVERWORLD( - gObjectEventPic_DeoxysAttack, + sPicTable_DeoxysAttack, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -13020,7 +13020,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(0, 13, SHADOW_SIZE_M) FOOTPRINT(Deoxys) OVERWORLD( - gObjectEventPic_DeoxysDefense, + sPicTable_DeoxysDefense, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -13090,7 +13090,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = SHADOW(3, 13, SHADOW_SIZE_M) FOOTPRINT(Deoxys) OVERWORLD( - gObjectEventPic_DeoxysSpeed, + sPicTable_DeoxysSpeed, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, diff --git a/src/data/pokemon/species_info/gen_4_families.h b/src/data/pokemon/species_info/gen_4_families.h index b51ab180a5..a6d6302012 100644 --- a/src/data/pokemon/species_info/gen_4_families.h +++ b/src/data/pokemon/species_info/gen_4_families.h @@ -58,7 +58,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(1, 2, SHADOW_SIZE_S) FOOTPRINT(Turtwig) OVERWORLD( - gObjectEventPic_Turtwig, + sPicTable_Turtwig, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -127,7 +127,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(1, 2, SHADOW_SIZE_L) FOOTPRINT(Grotle) OVERWORLD( - gObjectEventPic_Grotle, + sPicTable_Grotle, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -201,7 +201,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(1, 10, SHADOW_SIZE_L) FOOTPRINT(Torterra) OVERWORLD( - gObjectEventPic_Torterra, + sPicTable_Torterra, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -273,7 +273,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(4, 3, SHADOW_SIZE_S) FOOTPRINT(Chimchar) OVERWORLD( - gObjectEventPic_Chimchar, + sPicTable_Chimchar, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -345,7 +345,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(-7, 6, SHADOW_SIZE_S) FOOTPRINT(Monferno) OVERWORLD( - gObjectEventPic_Monferno, + sPicTable_Monferno, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -420,7 +420,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(0, 9, SHADOW_SIZE_L) FOOTPRINT(Infernape) OVERWORLD( - gObjectEventPic_Infernape, + sPicTable_Infernape, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -492,7 +492,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(0, -1, SHADOW_SIZE_S) FOOTPRINT(Piplup) OVERWORLD( - gObjectEventPic_Piplup, + sPicTable_Piplup, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -570,7 +570,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(0, 7, SHADOW_SIZE_M) FOOTPRINT(Prinplup) OVERWORLD( - gObjectEventPic_Prinplup, + sPicTable_Prinplup, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -647,7 +647,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(2, 12, SHADOW_SIZE_M) FOOTPRINT(Empoleon) OVERWORLD( - gObjectEventPic_Empoleon, + sPicTable_Empoleon, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -727,7 +727,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(-2, 1, SHADOW_SIZE_S) FOOTPRINT(Starly) OVERWORLD( - gObjectEventPic_Starly, + sPicTable_Starly, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -736,7 +736,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = gShinyOverworldPalette_Starly ) OVERWORLD_FEMALE( - gObjectEventPic_StarlyF, + sPicTable_StarlyF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -807,7 +807,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(-1, 5, SHADOW_SIZE_S) FOOTPRINT(Staravia) OVERWORLD( - gObjectEventPic_Staravia, + sPicTable_Staravia, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -816,7 +816,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = gShinyOverworldPalette_Staravia ) OVERWORLD_FEMALE( - gObjectEventPic_StaraviaF, + sPicTable_StaraviaF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -892,7 +892,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(1, 10, SHADOW_SIZE_M) FOOTPRINT(Staraptor) OVERWORLD( - gObjectEventPic_Staraptor, + sPicTable_Staraptor, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -901,7 +901,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = gShinyOverworldPalette_Staraptor ) OVERWORLD_FEMALE( - gObjectEventPic_StaraptorF, + sPicTable_StaraptorF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -977,7 +977,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(1, 1, SHADOW_SIZE_M) FOOTPRINT(Bidoof) OVERWORLD( - gObjectEventPic_Bidoof, + sPicTable_Bidoof, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -986,7 +986,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = gShinyOverworldPalette_Bidoof ) OVERWORLD_FEMALE( - gObjectEventPic_BidoofF, + sPicTable_BidoofF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1058,7 +1058,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(-5, 5, SHADOW_SIZE_M) FOOTPRINT(Bibarel) OVERWORLD( - gObjectEventPic_Bibarel, + sPicTable_Bibarel, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1067,7 +1067,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = gShinyOverworldPalette_Bibarel ) OVERWORLD_FEMALE( - gObjectEventPic_BibarelF, + sPicTable_BibarelF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1153,7 +1153,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(-5, 2, SHADOW_SIZE_S) FOOTPRINT(Kricketot) OVERWORLD( - gObjectEventPic_Kricketot, + sPicTable_Kricketot, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1162,7 +1162,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = gShinyOverworldPalette_Kricketot ) OVERWORLD_FEMALE( - gObjectEventPic_KricketotF, + sPicTable_KricketotF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1239,7 +1239,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(-3, 6, SHADOW_SIZE_S) FOOTPRINT(Kricketune) OVERWORLD( - gObjectEventPic_Kricketune, + sPicTable_Kricketune, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1248,7 +1248,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = gShinyOverworldPalette_Kricketune ) OVERWORLD_FEMALE( - gObjectEventPic_KricketuneF, + sPicTable_KricketuneF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1320,7 +1320,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(-1, 1, SHADOW_SIZE_S) FOOTPRINT(Shinx) OVERWORLD( - gObjectEventPic_Shinx, + sPicTable_Shinx, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1329,7 +1329,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = gShinyOverworldPalette_Shinx ) OVERWORLD_FEMALE( - gObjectEventPic_ShinxF, + sPicTable_ShinxF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1400,7 +1400,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(-4, 2, SHADOW_SIZE_M) FOOTPRINT(Luxio) OVERWORLD( - gObjectEventPic_Luxio, + sPicTable_Luxio, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1409,7 +1409,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = gShinyOverworldPalette_Luxio ) OVERWORLD_FEMALE( - gObjectEventPic_LuxioF, + sPicTable_LuxioF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1488,7 +1488,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(-1, 10, SHADOW_SIZE_L) FOOTPRINT(Luxray) OVERWORLD( - gObjectEventPic_Luxray, + sPicTable_Luxray, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1497,7 +1497,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = gShinyOverworldPalette_Luxray ) OVERWORLD_FEMALE( - gObjectEventPic_LuxrayF, + sPicTable_LuxrayF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1562,7 +1562,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(4, 4, SHADOW_SIZE_S) FOOTPRINT(Cranidos) OVERWORLD( - gObjectEventPic_Cranidos, + sPicTable_Cranidos, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1632,7 +1632,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(7, 11, SHADOW_SIZE_L) FOOTPRINT(Rampardos) OVERWORLD( - gObjectEventPic_Rampardos, + sPicTable_Rampardos, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1700,7 +1700,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(3, -1, SHADOW_SIZE_S) FOOTPRINT(Shieldon) OVERWORLD( - gObjectEventPic_Shieldon, + sPicTable_Shieldon, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1768,7 +1768,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(1, 6, SHADOW_SIZE_L) FOOTPRINT(Bastiodon) OVERWORLD( - gObjectEventPic_Bastiodon, + sPicTable_Bastiodon, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1833,7 +1833,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(-1, 8, SHADOW_SIZE_S) FOOTPRINT(Burmy) OVERWORLD( - gObjectEventPic_BurmyPlant, + sPicTable_BurmyPlant, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1901,7 +1901,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(-1, 9, SHADOW_SIZE_S) FOOTPRINT(Burmy) OVERWORLD( - gObjectEventPic_BurmySandy, + sPicTable_BurmySandy, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1969,7 +1969,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(-1, 13, SHADOW_SIZE_S) FOOTPRINT(Burmy) OVERWORLD( - gObjectEventPic_BurmyTrash, + sPicTable_BurmyTrash, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2038,7 +2038,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(0, 9, SHADOW_SIZE_S) FOOTPRINT(Wormadam) OVERWORLD( - gObjectEventPic_WormadamPlant, + sPicTable_WormadamPlant, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2103,7 +2103,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(-1, 9, SHADOW_SIZE_S) FOOTPRINT(Wormadam) OVERWORLD( - gObjectEventPic_WormadamSandy, + sPicTable_WormadamSandy, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2169,7 +2169,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(0, 9, SHADOW_SIZE_S) FOOTPRINT(Wormadam) OVERWORLD( - gObjectEventPic_WormadamTrash, + sPicTable_WormadamTrash, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2230,8 +2230,8 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconPalIndex = 0, \ SHADOW(-1, 9, SHADOW_SIZE_S) \ FOOTPRINT(Mothim) \ - OVERWORLD( \ - gObjectEventPic_Mothim, \ + OVERWORLD( \ + sPicTable_Mothim, \ SIZE_32x32, \ SHADOW_SIZE_M, \ TRACKS_FOOT, \ @@ -2314,7 +2314,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(-4, 10, SHADOW_SIZE_S) FOOTPRINT(Combee) OVERWORLD( - gObjectEventPic_Combee, + sPicTable_Combee, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2323,7 +2323,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = gShinyOverworldPalette_Combee ) OVERWORLD_FEMALE( - gObjectEventPic_CombeeF, + sPicTable_CombeeF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2398,7 +2398,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(-1, 11, SHADOW_SIZE_L) FOOTPRINT(Vespiquen) OVERWORLD( - gObjectEventPic_Vespiquen, + sPicTable_Vespiquen, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2476,7 +2476,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(-2, 1, SHADOW_SIZE_S) FOOTPRINT(Pachirisu) OVERWORLD( - gObjectEventPic_Pachirisu, + sPicTable_Pachirisu, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2485,7 +2485,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = gShinyOverworldPalette_Pachirisu ) OVERWORLD_FEMALE( - gObjectEventPic_PachirisuF, + sPicTable_PachirisuF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2556,7 +2556,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(1, 4, SHADOW_SIZE_S) FOOTPRINT(Buizel) OVERWORLD( - gObjectEventPic_Buizel, + sPicTable_Buizel, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2565,7 +2565,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = gShinyOverworldPalette_Buizel ) OVERWORLD_FEMALE( - gObjectEventPic_BuizelF, + sPicTable_BuizelF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2638,7 +2638,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(-4, 10, SHADOW_SIZE_M) FOOTPRINT(Floatzel) OVERWORLD( - gObjectEventPic_Floatzel, + sPicTable_Floatzel, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2647,7 +2647,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = gShinyOverworldPalette_Floatzel ) OVERWORLD_FEMALE( - gObjectEventPic_FloatzelF, + sPicTable_FloatzelF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2720,7 +2720,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(-4, -2, SHADOW_SIZE_S) FOOTPRINT(Cherubi) OVERWORLD( - gObjectEventPic_Cherubi, + sPicTable_Cherubi, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2791,7 +2791,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(0, 6, SHADOW_SIZE_S) FOOTPRINT(Cherrim) OVERWORLD( - gObjectEventPic_CherrimOvercast, + sPicTable_CherrimOvercast, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2920,7 +2920,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(1, 0, SHADOW_SIZE_S) FOOTPRINT(Shellos) OVERWORLD( - gObjectEventPic_ShellosWestSea, + sPicTable_ShellosWestSea, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2985,7 +2985,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(2, -1, SHADOW_SIZE_S) FOOTPRINT(Shellos) OVERWORLD( - gObjectEventPic_ShellosEast, + sPicTable_ShellosEast, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3050,7 +3050,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(1, 3, SHADOW_SIZE_M) FOOTPRINT(Gastrodon) OVERWORLD( - gObjectEventPic_GastrodonWestSea, + sPicTable_GastrodonWestSea, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3113,7 +3113,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(2, 4, SHADOW_SIZE_M) FOOTPRINT(Gastrodon) OVERWORLD( - gObjectEventPic_GastrodonEast, + sPicTable_GastrodonEast, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3184,7 +3184,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(1, 9, SHADOW_SIZE_S) FOOTPRINT(Drifloon) OVERWORLD( - gObjectEventPic_Drifloon, + sPicTable_Drifloon, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3256,7 +3256,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(0, 11, SHADOW_SIZE_M) FOOTPRINT(Drifblim) OVERWORLD( - gObjectEventPic_Drifblim, + sPicTable_Drifblim, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3323,7 +3323,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(3, 5, SHADOW_SIZE_S) FOOTPRINT(Buneary) OVERWORLD( - gObjectEventPic_Buneary, + sPicTable_Buneary, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3391,7 +3391,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(0, 10, SHADOW_SIZE_S) FOOTPRINT(Lopunny) OVERWORLD( - gObjectEventPic_Lopunny, + sPicTable_Lopunny, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3457,7 +3457,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = FOOTPRINT(Lopunny) #if OW_BATTLE_ONLY_FORMS OVERWORLD( - gObjectEventPic_LopunnyMega, + sPicTable_LopunnyMega, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3530,7 +3530,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(-3, 6, SHADOW_SIZE_S) FOOTPRINT(Glameow) OVERWORLD( - gObjectEventPic_Glameow, + sPicTable_Glameow, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3602,7 +3602,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(4, 8, SHADOW_SIZE_L) FOOTPRINT(Purugly) OVERWORLD( - gObjectEventPic_Purugly, + sPicTable_Purugly, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3672,7 +3672,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(-1, 0, SHADOW_SIZE_M) FOOTPRINT(Stunky) OVERWORLD( - gObjectEventPic_Stunky, + sPicTable_Stunky, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3740,7 +3740,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(-3, 6, SHADOW_SIZE_L) FOOTPRINT(Skuntank) OVERWORLD( - gObjectEventPic_Skuntank, + sPicTable_Skuntank, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3817,7 +3817,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(0, 6, SHADOW_SIZE_S) FOOTPRINT(Bronzor) OVERWORLD( - gObjectEventPic_Bronzor, + sPicTable_Bronzor, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3889,7 +3889,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(5, 12, SHADOW_SIZE_M) FOOTPRINT(Bronzong) OVERWORLD( - gObjectEventPic_Bronzong, + sPicTable_Bronzong, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3971,7 +3971,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(-1, 3, SHADOW_SIZE_S) FOOTPRINT(Chatot) OVERWORLD( - gObjectEventPic_Chatot, + sPicTable_Chatot, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4040,7 +4040,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(-1, 7, SHADOW_SIZE_L) FOOTPRINT(Spiritomb) OVERWORLD( - gObjectEventPic_Spiritomb, + sPicTable_Spiritomb, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4115,7 +4115,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(1, 5, SHADOW_SIZE_M) FOOTPRINT(Gible) OVERWORLD( - gObjectEventPic_Gible, + sPicTable_Gible, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4124,7 +4124,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = gShinyOverworldPalette_Gible ) OVERWORLD_FEMALE( - gObjectEventPic_GibleF, + sPicTable_GibleF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4195,7 +4195,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(3, 8, SHADOW_SIZE_M) FOOTPRINT(Gabite) OVERWORLD( - gObjectEventPic_Gabite, + sPicTable_Gabite, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4204,7 +4204,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = gShinyOverworldPalette_Gabite ) OVERWORLD_FEMALE( - gObjectEventPic_GabiteF, + sPicTable_GabiteF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4282,7 +4282,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(5, 11, SHADOW_SIZE_L) FOOTPRINT(Garchomp) OVERWORLD( - gObjectEventPic_Garchomp, + sPicTable_Garchomp, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4291,7 +4291,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = gShinyOverworldPalette_Garchomp ) OVERWORLD_FEMALE( - gObjectEventPic_GarchompF, + sPicTable_GarchompF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4355,7 +4355,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = FOOTPRINT(Garchomp) #if OW_BATTLE_ONLY_FORMS OVERWORLD( - gObjectEventPic_GarchompMega, + sPicTable_GarchompMega, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4429,7 +4429,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(3, 3, SHADOW_SIZE_S) FOOTPRINT(Riolu) OVERWORLD( - gObjectEventPic_Riolu, + sPicTable_Riolu, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4497,7 +4497,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(-1, 7, SHADOW_SIZE_M) FOOTPRINT(Lucario) OVERWORLD( - gObjectEventPic_Lucario, + sPicTable_Lucario, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4564,7 +4564,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = FOOTPRINT(Lucario) #if OW_BATTLE_ONLY_FORMS OVERWORLD( - gObjectEventPic_LucarioMega, + sPicTable_LucarioMega, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4645,7 +4645,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(2, -1, SHADOW_SIZE_L) FOOTPRINT(Hippopotas) OVERWORLD( - gObjectEventPic_Hippopotas, + sPicTable_Hippopotas, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4654,7 +4654,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = gShinyOverworldPalette_Hippopotas ) OVERWORLD_FEMALE( - gObjectEventPic_HippopotasF, + sPicTable_HippopotasF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4727,7 +4727,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = NO_SHADOW FOOTPRINT(Hippowdon) OVERWORLD( - gObjectEventPic_Hippowdon, + sPicTable_Hippowdon, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4813,7 +4813,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(-2, 3, SHADOW_SIZE_S) FOOTPRINT(Skorupi) OVERWORLD( - gObjectEventPic_Skorupi, + sPicTable_Skorupi, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4888,7 +4888,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(-3, 6, SHADOW_SIZE_L) FOOTPRINT(Drapion) OVERWORLD( - gObjectEventPic_Drapion, + sPicTable_Drapion, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4964,7 +4964,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(2, 4, SHADOW_SIZE_S) FOOTPRINT(Croagunk) OVERWORLD( - gObjectEventPic_Croagunk, + sPicTable_Croagunk, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4973,7 +4973,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = gShinyOverworldPalette_Croagunk ) OVERWORLD_FEMALE( - gObjectEventPic_CroagunkF, + sPicTable_CroagunkF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5048,7 +5048,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(3, 7, SHADOW_SIZE_M) FOOTPRINT(Toxicroak) OVERWORLD( - gObjectEventPic_Toxicroak, + sPicTable_Toxicroak, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5057,7 +5057,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = gShinyOverworldPalette_Toxicroak ) OVERWORLD_FEMALE( - gObjectEventPic_ToxicroakF, + sPicTable_ToxicroakF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5133,7 +5133,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(0, 9, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Carnivine) OVERWORLD( - gObjectEventPic_Carnivine, + sPicTable_Carnivine, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5213,7 +5213,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(0, 1, SHADOW_SIZE_S) FOOTPRINT(Finneon) OVERWORLD( - gObjectEventPic_Finneon, + sPicTable_Finneon, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5222,7 +5222,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = gShinyOverworldPalette_Finneon ) OVERWORLD_FEMALE( - gObjectEventPic_FinneonF, + sPicTable_FinneonF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5297,7 +5297,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(-1, 8, SHADOW_SIZE_M) FOOTPRINT(Lumineon) OVERWORLD( - gObjectEventPic_Lumineon, + sPicTable_Lumineon, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5306,7 +5306,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = gShinyOverworldPalette_Lumineon ) OVERWORLD_FEMALE( - gObjectEventPic_LumineonF, + sPicTable_LumineonF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5379,7 +5379,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(1, 4, SHADOW_SIZE_M) FOOTPRINT(Snover) OVERWORLD( - gObjectEventPic_Snover, + sPicTable_Snover, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5388,7 +5388,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = gShinyOverworldPalette_Snover ) OVERWORLD_FEMALE( - gObjectEventPic_SnoverF, + sPicTable_SnoverF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5460,7 +5460,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(0, 11, SHADOW_SIZE_L) FOOTPRINT(Abomasnow) OVERWORLD( - gObjectEventPic_Abomasnow, + sPicTable_Abomasnow, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5469,7 +5469,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = gShinyOverworldPalette_Abomasnow ) OVERWORLD_FEMALE( - gObjectEventPic_AbomasnowF, + sPicTable_AbomasnowF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5535,7 +5535,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = FOOTPRINT(Abomasnow) #if OW_BATTLE_ONLY_FORMS OVERWORLD( - gObjectEventPic_AbomasnowMega, + sPicTable_AbomasnowMega, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5612,7 +5612,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(0, 10, SHADOW_SIZE_S) FOOTPRINT(Rotom) OVERWORLD( - gObjectEventPic_Rotom, + sPicTable_Rotom, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5690,7 +5690,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(-1, 7, SHADOW_SIZE_M) FOOTPRINT(Rotom) OVERWORLD( - gObjectEventPic_RotomHeat, + sPicTable_RotomHeat, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5761,7 +5761,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(0, 10, SHADOW_SIZE_M) FOOTPRINT(Rotom) OVERWORLD( - gObjectEventPic_RotomWash, + sPicTable_RotomWash, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5830,7 +5830,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(0, 13, SHADOW_SIZE_M) FOOTPRINT(Rotom) OVERWORLD( - gObjectEventPic_RotomFrost, + sPicTable_RotomFrost, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5924,7 +5924,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(4, 9, SHADOW_SIZE_S) FOOTPRINT(Rotom) OVERWORLD( - gObjectEventPic_RotomFan, + sPicTable_RotomFan, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5996,7 +5996,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(2, 14, SHADOW_SIZE_M) FOOTPRINT(Rotom) OVERWORLD( - gObjectEventPic_RotomMow, + sPicTable_RotomMow, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6074,7 +6074,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(2, 11, SHADOW_SIZE_S) FOOTPRINT(Uxie) OVERWORLD( - gObjectEventPic_Uxie, + sPicTable_Uxie, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6158,7 +6158,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(0, 13, SHADOW_SIZE_S) FOOTPRINT(Mesprit) OVERWORLD( - gObjectEventPic_Mesprit, + sPicTable_Mesprit, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6236,7 +6236,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(0, 17, SHADOW_SIZE_S) FOOTPRINT(Azelf) OVERWORLD( - gObjectEventPic_Azelf, + sPicTable_Azelf, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6313,7 +6313,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(4, 12, SHADOW_SIZE_L) FOOTPRINT(Dialga) OVERWORLD( - gObjectEventPic_Dialga, + sPicTable_Dialga, SIZE_64x64, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6380,7 +6380,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(2, 11, SHADOW_SIZE_L) FOOTPRINT(Dialga) OVERWORLD( - gObjectEventPic_DialgaOrigin, + sPicTable_DialgaOrigin, SIZE_64x64, SHADOW_SIZE_M, TRACKS_NONE, @@ -6460,7 +6460,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(0, 10, SHADOW_SIZE_L) FOOTPRINT(Palkia) OVERWORLD( - gObjectEventPic_Palkia, + sPicTable_Palkia, SIZE_64x64, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6527,7 +6527,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(-3, 14, SHADOW_SIZE_L) FOOTPRINT(Palkia) OVERWORLD( - gObjectEventPic_PalkiaOrigin, + sPicTable_PalkiaOrigin, SIZE_64x64, SHADOW_SIZE_M, TRACKS_NONE, @@ -6606,7 +6606,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(2, 2, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Heatran) OVERWORLD( - gObjectEventPic_Heatran, + sPicTable_Heatran, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6681,7 +6681,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(3, 10, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Regigigas) OVERWORLD( - gObjectEventPic_Regigigas, + sPicTable_Regigigas, SIZE_64x64, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6759,7 +6759,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(3, 11, SHADOW_SIZE_L) FOOTPRINT(GiratinaAltered) OVERWORLD( - gObjectEventPic_GiratinaAltered, + sPicTable_GiratinaAltered, SIZE_64x64, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6833,7 +6833,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(0, 18, SHADOW_SIZE_L) FOOTPRINT(GiratinaOrigin) OVERWORLD( - gObjectEventPic_GiratinaOrigin, + sPicTable_GiratinaOrigin, SIZE_64x64, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6916,7 +6916,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(-2, 12, SHADOW_SIZE_M) FOOTPRINT(Cresselia) OVERWORLD( - gObjectEventPic_Cresselia, + sPicTable_Cresselia, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6993,7 +6993,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(0, 7, SHADOW_SIZE_S) FOOTPRINT(Phione) OVERWORLD( - gObjectEventPic_Phione, + sPicTable_Phione, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -7069,7 +7069,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(-5, 8, SHADOW_SIZE_S) FOOTPRINT(Manaphy) OVERWORLD( - gObjectEventPic_Manaphy, + sPicTable_Manaphy, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -7148,7 +7148,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(4, 12, SHADOW_SIZE_M) FOOTPRINT(Darkrai) OVERWORLD( - gObjectEventPic_Darkrai, + sPicTable_Darkrai, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -7229,7 +7229,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(1, -3, SHADOW_SIZE_S) FOOTPRINT(Shaymin) OVERWORLD( - gObjectEventPic_ShayminLand, + sPicTable_ShayminLand, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -7307,7 +7307,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(3, 7, SHADOW_SIZE_M) FOOTPRINT(Shaymin) OVERWORLD( - gObjectEventPic_ShayminSky, + sPicTable_ShayminSky, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -7388,7 +7388,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = SHADOW(-1, 15, SHADOW_SIZE_XL_BATTLE_ONLY) \ FOOTPRINT(Arceus) \ OVERWORLD( \ - gObjectEventPic_Arceus ##typeName, \ + sPicTable_Arceus ##typeName, \ SIZE_64x64, \ SHADOW_SIZE_M, \ TRACKS_FOOT, \ diff --git a/src/data/pokemon/species_info/gen_5_families.h b/src/data/pokemon/species_info/gen_5_families.h index f914259f18..d55a7bf1d0 100644 --- a/src/data/pokemon/species_info/gen_5_families.h +++ b/src/data/pokemon/species_info/gen_5_families.h @@ -58,7 +58,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(1, 4, SHADOW_SIZE_S) FOOTPRINT(Victini) OVERWORLD( - gObjectEventPic_Victini, + sPicTable_Victini, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -129,7 +129,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(-1, 1, SHADOW_SIZE_S) FOOTPRINT(Snivy) OVERWORLD( - gObjectEventPic_Snivy, + sPicTable_Snivy, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -201,7 +201,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(-2, 7, SHADOW_SIZE_S) FOOTPRINT(Servine) OVERWORLD( - gObjectEventPic_Servine, + sPicTable_Servine, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -270,7 +270,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(2, 8, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Serperior) OVERWORLD( - gObjectEventPic_Serperior, + sPicTable_Serperior, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -340,7 +340,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(0, -2, SHADOW_SIZE_S) FOOTPRINT(Tepig) OVERWORLD( - gObjectEventPic_Tepig, + sPicTable_Tepig, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -408,7 +408,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(0, 6, SHADOW_SIZE_M) FOOTPRINT(Pignite) OVERWORLD( - gObjectEventPic_Pignite, + sPicTable_Pignite, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -495,7 +495,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(-1, 12, SHADOW_SIZE_L) FOOTPRINT(Emboar) OVERWORLD( - gObjectEventPic_Emboar, + sPicTable_Emboar, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -567,7 +567,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(-3, 0, SHADOW_SIZE_S) FOOTPRINT(Oshawott) OVERWORLD( - gObjectEventPic_Oshawott, + sPicTable_Oshawott, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -637,7 +637,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(-2, 6, SHADOW_SIZE_S) FOOTPRINT(Dewott) OVERWORLD( - gObjectEventPic_Dewott, + sPicTable_Dewott, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -704,7 +704,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(-2, 13, SHADOW_SIZE_L) FOOTPRINT(Samurott) OVERWORLD( - gObjectEventPic_Samurott, + sPicTable_Samurott, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -768,7 +768,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(-2, 13, SHADOW_SIZE_L) FOOTPRINT(Samurott) OVERWORLD( - gObjectEventPic_SamurottHisui, + sPicTable_SamurottHisui, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -838,7 +838,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(1, 2, SHADOW_SIZE_S) FOOTPRINT(Patrat) OVERWORLD( - gObjectEventPic_Patrat, + sPicTable_Patrat, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -910,7 +910,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(-4, 11, SHADOW_SIZE_S) FOOTPRINT(Watchog) OVERWORLD( - gObjectEventPic_Watchog, + sPicTable_Watchog, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -982,7 +982,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(2, 1, SHADOW_SIZE_S) FOOTPRINT(Lillipup) OVERWORLD( - gObjectEventPic_Lillipup, + sPicTable_Lillipup, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1053,7 +1053,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(3, 5, SHADOW_SIZE_M) FOOTPRINT(Herdier) OVERWORLD( - gObjectEventPic_Herdier, + sPicTable_Herdier, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1128,7 +1128,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(-4, 9, SHADOW_SIZE_L) FOOTPRINT(Stoutland) OVERWORLD( - gObjectEventPic_Stoutland, + sPicTable_Stoutland, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1196,7 +1196,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(0, 2, SHADOW_SIZE_S) FOOTPRINT(Purrloin) OVERWORLD( - gObjectEventPic_Purrloin, + sPicTable_Purrloin, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1264,7 +1264,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(-1, 11, SHADOW_SIZE_M) FOOTPRINT(Liepard) OVERWORLD( - gObjectEventPic_Liepard, + sPicTable_Liepard, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1334,7 +1334,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(0, 3, SHADOW_SIZE_S) FOOTPRINT(Pansage) OVERWORLD( - gObjectEventPic_Pansage, + sPicTable_Pansage, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1402,7 +1402,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(-2, 12, SHADOW_SIZE_M) FOOTPRINT(Simisage) OVERWORLD( - gObjectEventPic_Simisage, + sPicTable_Simisage, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1470,7 +1470,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(1, 3, SHADOW_SIZE_S) FOOTPRINT(Pansear) OVERWORLD( - gObjectEventPic_Pansear, + sPicTable_Pansear, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1541,7 +1541,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(-2, 8, SHADOW_SIZE_M) FOOTPRINT(Simisear) OVERWORLD( - gObjectEventPic_Simisear, + sPicTable_Simisear, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1609,7 +1609,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(-3, 4, SHADOW_SIZE_S) FOOTPRINT(Panpour) OVERWORLD( - gObjectEventPic_Panpour, + sPicTable_Panpour, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1676,7 +1676,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(-1, 8, SHADOW_SIZE_M) FOOTPRINT(Simipour) OVERWORLD( - gObjectEventPic_Simipour, + sPicTable_Simipour, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1750,7 +1750,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(0, 2, SHADOW_SIZE_S) FOOTPRINT(Munna) OVERWORLD( - gObjectEventPic_Munna, + sPicTable_Munna, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1821,7 +1821,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(6, 10, SHADOW_SIZE_M) FOOTPRINT(Musharna) OVERWORLD( - gObjectEventPic_Musharna, + sPicTable_Musharna, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1889,7 +1889,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(-2, 1, SHADOW_SIZE_S) FOOTPRINT(Pidove) OVERWORLD( - gObjectEventPic_Pidove, + sPicTable_Pidove, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1957,7 +1957,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(0, 6, SHADOW_SIZE_S) FOOTPRINT(Tranquill) OVERWORLD( - gObjectEventPic_Tranquill, + sPicTable_Tranquill, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2040,7 +2040,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(-2, 12, SHADOW_SIZE_M) FOOTPRINT(Unfezant) OVERWORLD( - gObjectEventPic_Unfezant, + sPicTable_Unfezant, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2049,7 +2049,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = gShinyOverworldPalette_Unfezant ) OVERWORLD_FEMALE( - gObjectEventPic_UnfezantF, + sPicTable_UnfezantF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2120,7 +2120,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(3, 9, SHADOW_SIZE_M) FOOTPRINT(Blitzle) OVERWORLD( - gObjectEventPic_Blitzle, + sPicTable_Blitzle, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2188,7 +2188,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(-2, 13, SHADOW_SIZE_M) FOOTPRINT(Zebstrika) OVERWORLD( - gObjectEventPic_Zebstrika, + sPicTable_Zebstrika, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2262,7 +2262,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(-1, 0, SHADOW_SIZE_S) FOOTPRINT(Roggenrola) OVERWORLD( - gObjectEventPic_Roggenrola, + sPicTable_Roggenrola, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2340,7 +2340,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(1, 3, SHADOW_SIZE_L) FOOTPRINT(Boldore) OVERWORLD( - gObjectEventPic_Boldore, + sPicTable_Boldore, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2420,7 +2420,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(-1, 8, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Gigalith) OVERWORLD( - gObjectEventPic_Gigalith, + sPicTable_Gigalith, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2505,7 +2505,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(-2, 14, SHADOW_SIZE_S) FOOTPRINT(Woobat) OVERWORLD( - gObjectEventPic_Woobat, + sPicTable_Woobat, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2577,7 +2577,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(-1, 17, SHADOW_SIZE_M) FOOTPRINT(Swoobat) OVERWORLD( - gObjectEventPic_Swoobat, + sPicTable_Swoobat, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2648,7 +2648,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(0, 4, SHADOW_SIZE_S) FOOTPRINT(Drilbur) OVERWORLD( - gObjectEventPic_Drilbur, + sPicTable_Drilbur, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2718,7 +2718,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(3, 8, SHADOW_SIZE_L) FOOTPRINT(Excadrill) OVERWORLD( - gObjectEventPic_Excadrill, + sPicTable_Excadrill, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2788,7 +2788,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(-1, 6, SHADOW_SIZE_S) FOOTPRINT(Audino) OVERWORLD( - gObjectEventPic_Audino, + sPicTable_Audino, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2857,7 +2857,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = FOOTPRINT(Audino) #if OW_BATTLE_ONLY_FORMS OVERWORLD( - gObjectEventPic_AudinoMega, + sPicTable_AudinoMega, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2931,7 +2931,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(-4, 2, SHADOW_SIZE_S) FOOTPRINT(Timburr) OVERWORLD( - gObjectEventPic_Timburr, + sPicTable_Timburr, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3003,7 +3003,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(-2, 14, SHADOW_SIZE_M) FOOTPRINT(Gurdurr) OVERWORLD( - gObjectEventPic_Gurdurr, + sPicTable_Gurdurr, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3070,7 +3070,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(0, 3, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Conkeldurr) OVERWORLD( - gObjectEventPic_Conkeldurr, + sPicTable_Conkeldurr, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3137,7 +3137,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(0, 0, SHADOW_SIZE_S) FOOTPRINT(Tympole) OVERWORLD( - gObjectEventPic_Tympole, + sPicTable_Tympole, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3207,7 +3207,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(-1, 3, SHADOW_SIZE_S) FOOTPRINT(Palpitoad) OVERWORLD( - gObjectEventPic_Palpitoad, + sPicTable_Palpitoad, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3284,7 +3284,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(4, 10, SHADOW_SIZE_L) FOOTPRINT(Seismitoad) OVERWORLD( - gObjectEventPic_Seismitoad, + sPicTable_Seismitoad, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3354,7 +3354,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(3, 4, SHADOW_SIZE_M) FOOTPRINT(Throh) OVERWORLD( - gObjectEventPic_Throh, + sPicTable_Throh, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3423,7 +3423,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(-1, 6, SHADOW_SIZE_M) FOOTPRINT(Sawk) OVERWORLD( - gObjectEventPic_Sawk, + sPicTable_Sawk, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3494,7 +3494,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(1, 0, SHADOW_SIZE_S) FOOTPRINT(Sewaddle) OVERWORLD( - gObjectEventPic_Sewaddle, + sPicTable_Sewaddle, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3564,7 +3564,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(0, 1, SHADOW_SIZE_L) FOOTPRINT(Swadloon) OVERWORLD( - gObjectEventPic_Swadloon, + sPicTable_Swadloon, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3638,7 +3638,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(0, 14, SHADOW_SIZE_S) FOOTPRINT(Leavanny) OVERWORLD( - gObjectEventPic_Leavanny, + sPicTable_Leavanny, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3715,7 +3715,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(-2, -3, SHADOW_SIZE_M) FOOTPRINT(Venipede) OVERWORLD( - gObjectEventPic_Venipede, + sPicTable_Venipede, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3791,7 +3791,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(0, 1, SHADOW_SIZE_S) FOOTPRINT(Whirlipede) OVERWORLD( - gObjectEventPic_Whirlipede, + sPicTable_Whirlipede, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3868,7 +3868,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(1, 12, SHADOW_SIZE_L) FOOTPRINT(Scolipede) OVERWORLD( - gObjectEventPic_Scolipede, + sPicTable_Scolipede, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3949,7 +3949,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(-1, -5, SHADOW_SIZE_M) FOOTPRINT(Cottonee) OVERWORLD( - gObjectEventPic_Cottonee, + sPicTable_Cottonee, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4018,7 +4018,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(-1, 8, SHADOW_SIZE_M) FOOTPRINT(Whimsicott) OVERWORLD( - gObjectEventPic_Whimsicott, + sPicTable_Whimsicott, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4090,7 +4090,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(-2, 6, SHADOW_SIZE_S) FOOTPRINT(Petilil) OVERWORLD( - gObjectEventPic_Petilil, + sPicTable_Petilil, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4161,7 +4161,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(-2, 13, SHADOW_SIZE_M) FOOTPRINT(Lilligant) OVERWORLD( - gObjectEventPic_Lilligant, + sPicTable_Lilligant, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4228,7 +4228,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(-3, 13, SHADOW_SIZE_S) FOOTPRINT(Lilligant) OVERWORLD( - gObjectEventPic_LilligantHisui, + sPicTable_LilligantHisui, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4297,7 +4297,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(0, 4, SHADOW_SIZE_S) FOOTPRINT(Basculin) OVERWORLD( - gObjectEventPic_BasculinRedStriped, + sPicTable_BasculinRedStriped, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4363,7 +4363,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(-1, 1, SHADOW_SIZE_S) FOOTPRINT(Basculin) OVERWORLD( - gObjectEventPic_BasculinBlueStriped, + sPicTable_BasculinBlueStriped, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4430,7 +4430,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(-2, 5, SHADOW_SIZE_S) FOOTPRINT(Basculin) OVERWORLD( - gObjectEventPic_BasculinWhiteStriped, + sPicTable_BasculinWhiteStriped, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4496,7 +4496,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(0, 16, SHADOW_SIZE_M) FOOTPRINT(Basculegion) OVERWORLD( - gObjectEventPic_BasculegionM, + sPicTable_BasculegionM, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4559,7 +4559,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(0, 16, SHADOW_SIZE_M) FOOTPRINT(Basculegion) OVERWORLD( - gObjectEventPic_BasculegionF, + sPicTable_BasculegionF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4630,7 +4630,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(4, -5, SHADOW_SIZE_M) FOOTPRINT(Sandile) OVERWORLD( - gObjectEventPic_Sandile, + sPicTable_Sandile, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4698,7 +4698,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(-2, 8, SHADOW_SIZE_M) FOOTPRINT(Krokorok) OVERWORLD( - gObjectEventPic_Krokorok, + sPicTable_Krokorok, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4774,7 +4774,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(3, 12, SHADOW_SIZE_L) FOOTPRINT(Krookodile) OVERWORLD( - gObjectEventPic_Krookodile, + sPicTable_Krookodile, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4842,7 +4842,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(-3, 1, SHADOW_SIZE_S) FOOTPRINT(Darumaka) OVERWORLD( - gObjectEventPic_Darumaka, + sPicTable_Darumaka, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4912,7 +4912,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(3, 5, SHADOW_SIZE_L) FOOTPRINT(Darmanitan) OVERWORLD( - gObjectEventPic_DarmanitanStandard, + sPicTable_DarmanitanStandard, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5034,7 +5034,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(-3, -1, SHADOW_SIZE_S) FOOTPRINT(Darumaka) OVERWORLD( - gObjectEventPic_DarumakaGalar, + sPicTable_DarumakaGalar, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5100,7 +5100,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(4, 8, SHADOW_SIZE_L) FOOTPRINT(Darmanitan) OVERWORLD( - gObjectEventPic_DarmanitanGalarStandard, + sPicTable_DarmanitanGalarStandard, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5233,7 +5233,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(-1, 13, SHADOW_SIZE_S) FOOTPRINT(Maractus) OVERWORLD( - gObjectEventPic_Maractus, + sPicTable_Maractus, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5309,7 +5309,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(-1, -2, SHADOW_SIZE_S) FOOTPRINT(Dwebble) OVERWORLD( - gObjectEventPic_Dwebble, + sPicTable_Dwebble, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5381,7 +5381,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(1, 8, SHADOW_SIZE_L) FOOTPRINT(Crustle) OVERWORLD( - gObjectEventPic_Crustle, + sPicTable_Crustle, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5450,7 +5450,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(-4, 2, SHADOW_SIZE_S) FOOTPRINT(Scraggy) OVERWORLD( - gObjectEventPic_Scraggy, + sPicTable_Scraggy, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5520,7 +5520,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(-2, 9, SHADOW_SIZE_M) FOOTPRINT(Scrafty) OVERWORLD( - gObjectEventPic_Scrafty, + sPicTable_Scrafty, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5594,7 +5594,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(3, 18, SHADOW_SIZE_S) FOOTPRINT(Sigilyph) OVERWORLD( - gObjectEventPic_Sigilyph, + sPicTable_Sigilyph, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5667,7 +5667,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(-1, 6, SHADOW_SIZE_S) FOOTPRINT(Yamask) OVERWORLD( - gObjectEventPic_Yamask, + sPicTable_Yamask, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5737,7 +5737,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(6, 12, SHADOW_SIZE_M) FOOTPRINT(Cofagrigus) OVERWORLD( - gObjectEventPic_Cofagrigus, + sPicTable_Cofagrigus, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5801,7 +5801,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(0, 2, SHADOW_SIZE_S) FOOTPRINT(Yamask) OVERWORLD( - gObjectEventPic_YamaskGalar, + sPicTable_YamaskGalar, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5867,7 +5867,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(14, 14, SHADOW_SIZE_M) FOOTPRINT(Runerigus) OVERWORLD( - gObjectEventPic_Runerigus, + sPicTable_Runerigus, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5937,7 +5937,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(0, -3, SHADOW_SIZE_M) FOOTPRINT(Tirtouga) OVERWORLD( - gObjectEventPic_Tirtouga, + sPicTable_Tirtouga, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6012,7 +6012,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(4, 8, SHADOW_SIZE_L) FOOTPRINT(Carracosta) OVERWORLD( - gObjectEventPic_Carracosta, + sPicTable_Carracosta, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6080,7 +6080,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(-3, -2, SHADOW_SIZE_S) FOOTPRINT(Archen) OVERWORLD( - gObjectEventPic_Archen, + sPicTable_Archen, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6154,7 +6154,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(0, 18, SHADOW_SIZE_M) FOOTPRINT(Archeops) OVERWORLD( - gObjectEventPic_Archeops, + sPicTable_Archeops, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6223,7 +6223,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(-2, -1, SHADOW_SIZE_S) FOOTPRINT(Trubbish) OVERWORLD( - gObjectEventPic_Trubbish, + sPicTable_Trubbish, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6294,7 +6294,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(3, 9, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Garbodor) OVERWORLD( - gObjectEventPic_Garbodor, + sPicTable_Garbodor, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6427,7 +6427,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(0, 2, SHADOW_SIZE_S) FOOTPRINT(Zorua) OVERWORLD( - gObjectEventPic_Zorua, + sPicTable_Zorua, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6498,7 +6498,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(1, 8, SHADOW_SIZE_L) FOOTPRINT(Zoroark) OVERWORLD( - gObjectEventPic_Zoroark, + sPicTable_Zoroark, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6562,7 +6562,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(2, 12, SHADOW_SIZE_S) FOOTPRINT(Zorua) OVERWORLD( - gObjectEventPic_ZoruaHisui, + sPicTable_ZoruaHisui, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6627,7 +6627,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(11, 13, SHADOW_SIZE_L) FOOTPRINT(Zoroark) OVERWORLD( - gObjectEventPic_ZoroarkHisui, + sPicTable_ZoroarkHisui, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6698,7 +6698,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(-3, 3, SHADOW_SIZE_S) FOOTPRINT(Minccino) OVERWORLD( - gObjectEventPic_Minccino, + sPicTable_Minccino, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6769,7 +6769,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(0, 6, SHADOW_SIZE_M) FOOTPRINT(Cinccino) OVERWORLD( - gObjectEventPic_Cinccino, + sPicTable_Cinccino, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6842,7 +6842,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(-3, 2, SHADOW_SIZE_S) FOOTPRINT(Gothita) OVERWORLD( - gObjectEventPic_Gothita, + sPicTable_Gothita, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6916,7 +6916,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(-2, 7, SHADOW_SIZE_S) FOOTPRINT(Gothorita) OVERWORLD( - gObjectEventPic_Gothorita, + sPicTable_Gothorita, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6988,7 +6988,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(-1, 13, SHADOW_SIZE_M) FOOTPRINT(Gothitelle) OVERWORLD( - gObjectEventPic_Gothitelle, + sPicTable_Gothitelle, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -7059,7 +7059,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(-1, 8, SHADOW_SIZE_S) FOOTPRINT(Solosis) OVERWORLD( - gObjectEventPic_Solosis, + sPicTable_Solosis, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -7129,7 +7129,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(-1, 6, SHADOW_SIZE_M) FOOTPRINT(Duosion) OVERWORLD( - gObjectEventPic_Duosion, + sPicTable_Duosion, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -7199,7 +7199,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(0, 8, SHADOW_SIZE_M) FOOTPRINT(Reuniclus) OVERWORLD( - gObjectEventPic_Reuniclus, + sPicTable_Reuniclus, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -7271,7 +7271,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(-1, 2, SHADOW_SIZE_S) FOOTPRINT(Ducklett) OVERWORLD( - gObjectEventPic_Ducklett, + sPicTable_Ducklett, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -7338,7 +7338,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(0, 12, SHADOW_SIZE_M) FOOTPRINT(Swanna) OVERWORLD( - gObjectEventPic_Swanna, + sPicTable_Swanna, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -7413,7 +7413,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(-1, 0, SHADOW_SIZE_S) FOOTPRINT(Vanillite) OVERWORLD( - gObjectEventPic_Vanillite, + sPicTable_Vanillite, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -7486,7 +7486,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(-3, 9, SHADOW_SIZE_S) FOOTPRINT(Vanillish) OVERWORLD( - gObjectEventPic_Vanillish, + sPicTable_Vanillish, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -7558,7 +7558,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(-2, 10, SHADOW_SIZE_M) FOOTPRINT(Vanilluxe) OVERWORLD( - gObjectEventPic_Vanilluxe, + sPicTable_Vanilluxe, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -7622,7 +7622,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(1, 2, SHADOW_SIZE_S) FOOTPRINT(Deerling) OVERWORLD( - gObjectEventPic_DeerlingSpring, + sPicTable_DeerlingSpring, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -7687,7 +7687,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(1, 2, SHADOW_SIZE_S) FOOTPRINT(Deerling) OVERWORLD( - gObjectEventPic_DeerlingSummer, + sPicTable_DeerlingSummer, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -7752,7 +7752,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(1, 2, SHADOW_SIZE_S) FOOTPRINT(Deerling) OVERWORLD( - gObjectEventPic_DeerlingAutumn, + sPicTable_DeerlingAutumn, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -7817,7 +7817,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(1, 2, SHADOW_SIZE_S) FOOTPRINT(Deerling) OVERWORLD( - gObjectEventPic_DeerlingWinter, + sPicTable_DeerlingWinter, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -7882,7 +7882,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(7, 13, SHADOW_SIZE_M) FOOTPRINT(Sawsbuck) OVERWORLD( - gObjectEventPic_SawsbuckSpring, + sPicTable_SawsbuckSpring, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -7945,7 +7945,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(7, 13, SHADOW_SIZE_M) FOOTPRINT(Sawsbuck) OVERWORLD( - gObjectEventPic_SawsbuckSummer, + sPicTable_SawsbuckSummer, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -8008,7 +8008,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(7, 13, SHADOW_SIZE_M) FOOTPRINT(Sawsbuck) OVERWORLD( - gObjectEventPic_SawsbuckAutumn, + sPicTable_SawsbuckAutumn, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -8071,7 +8071,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(7, 13, SHADOW_SIZE_M) FOOTPRINT(Sawsbuck) OVERWORLD( - gObjectEventPic_SawsbuckWinter, + sPicTable_SawsbuckWinter, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -8143,7 +8143,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(0, 13, SHADOW_SIZE_S) FOOTPRINT(Emolga) OVERWORLD( - gObjectEventPic_Emolga, + sPicTable_Emolga, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -8211,7 +8211,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(-1, 0, SHADOW_SIZE_S) FOOTPRINT(Karrablast) OVERWORLD( - gObjectEventPic_Karrablast, + sPicTable_Karrablast, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -8279,7 +8279,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(1, 11, SHADOW_SIZE_M) FOOTPRINT(Escavalier) OVERWORLD( - gObjectEventPic_Escavalier, + sPicTable_Escavalier, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -8351,7 +8351,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(-1, -3, SHADOW_SIZE_S) FOOTPRINT(Foongus) OVERWORLD( - gObjectEventPic_Foongus, + sPicTable_Foongus, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -8425,7 +8425,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(1, 5, SHADOW_SIZE_M) FOOTPRINT(Amoonguss) OVERWORLD( - gObjectEventPic_Amoonguss, + sPicTable_Amoonguss, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -8504,7 +8504,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(-1, 9, SHADOW_SIZE_S) FOOTPRINT(Frillish) OVERWORLD( - gObjectEventPic_Frillish, + sPicTable_Frillish, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -8513,7 +8513,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = gShinyOverworldPalette_Frillish ) OVERWORLD_FEMALE( - gObjectEventPic_FrillishF, + sPicTable_FrillishF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -8593,7 +8593,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(-1, 11, SHADOW_SIZE_M) FOOTPRINT(Jellicent) OVERWORLD( - gObjectEventPic_Jellicent, + sPicTable_Jellicent, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -8602,7 +8602,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = gShinyOverworldPalette_Jellicent ) OVERWORLD_FEMALE( - gObjectEventPic_JellicentF, + sPicTable_JellicentF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -8670,7 +8670,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(0, 15, SHADOW_SIZE_S) FOOTPRINT(Alomomola) OVERWORLD( - gObjectEventPic_Alomomola, + sPicTable_Alomomola, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -8741,7 +8741,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(0, -5, SHADOW_SIZE_S) FOOTPRINT(Joltik) OVERWORLD( - gObjectEventPic_Joltik, + sPicTable_Joltik, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -8814,7 +8814,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(0, -2, SHADOW_SIZE_L) FOOTPRINT(Galvantula) OVERWORLD( - gObjectEventPic_Galvantula, + sPicTable_Galvantula, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -8885,7 +8885,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(0, 1, SHADOW_SIZE_S) FOOTPRINT(Ferroseed) OVERWORLD( - gObjectEventPic_Ferroseed, + sPicTable_Ferroseed, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -8961,7 +8961,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(-2, 17, SHADOW_SIZE_M) FOOTPRINT(Ferrothorn) OVERWORLD( - gObjectEventPic_Ferrothorn, + sPicTable_Ferrothorn, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -9032,7 +9032,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(-2, 11, SHADOW_SIZE_S) FOOTPRINT(Klink) OVERWORLD( - gObjectEventPic_Klink, + sPicTable_Klink, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -9102,7 +9102,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(-1, 12, SHADOW_SIZE_M) FOOTPRINT(Klang) OVERWORLD( - gObjectEventPic_Klang, + sPicTable_Klang, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -9172,7 +9172,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(0, 13, SHADOW_SIZE_L) FOOTPRINT(Klinklang) OVERWORLD( - gObjectEventPic_Klinklang, + sPicTable_Klinklang, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -9254,7 +9254,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(-3, 5, SHADOW_SIZE_S) FOOTPRINT(Tynamo) OVERWORLD( - gObjectEventPic_Tynamo, + sPicTable_Tynamo, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -9325,7 +9325,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(-1, 13, SHADOW_SIZE_S) FOOTPRINT(Eelektrik) OVERWORLD( - gObjectEventPic_Eelektrik, + sPicTable_Eelektrik, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -9396,7 +9396,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(3, 13, SHADOW_SIZE_M) FOOTPRINT(Eelektross) OVERWORLD( - gObjectEventPic_Eelektross, + sPicTable_Eelektross, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -9469,7 +9469,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(1, 2, SHADOW_SIZE_S) FOOTPRINT(Elgyem) OVERWORLD( - gObjectEventPic_Elgyem, + sPicTable_Elgyem, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -9536,7 +9536,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(0, 10, SHADOW_SIZE_M) FOOTPRINT(Beheeyem) OVERWORLD( - gObjectEventPic_Beheeyem, + sPicTable_Beheeyem, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -9610,7 +9610,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(1, -1, SHADOW_SIZE_S) FOOTPRINT(Litwick) OVERWORLD( - gObjectEventPic_Litwick, + sPicTable_Litwick, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -9684,7 +9684,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(-1, 9, SHADOW_SIZE_S) FOOTPRINT(Lampent) OVERWORLD( - gObjectEventPic_Lampent, + sPicTable_Lampent, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -9756,7 +9756,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(1, 13, SHADOW_SIZE_S) FOOTPRINT(Chandelure) OVERWORLD( - gObjectEventPic_Chandelure, + sPicTable_Chandelure, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -9823,7 +9823,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(2, 1, SHADOW_SIZE_S) FOOTPRINT(Axew) OVERWORLD( - gObjectEventPic_Axew, + sPicTable_Axew, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -9890,7 +9890,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(-2, 8, SHADOW_SIZE_L) FOOTPRINT(Fraxure) OVERWORLD( - gObjectEventPic_Fraxure, + sPicTable_Fraxure, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -9958,7 +9958,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(2, 9, SHADOW_SIZE_L) FOOTPRINT(Haxorus) OVERWORLD( - gObjectEventPic_Haxorus, + sPicTable_Haxorus, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -10030,7 +10030,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(-2, 0, SHADOW_SIZE_S) FOOTPRINT(Cubchoo) OVERWORLD( - gObjectEventPic_Cubchoo, + sPicTable_Cubchoo, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -10103,7 +10103,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(1, 13, SHADOW_SIZE_L) FOOTPRINT(Beartic) OVERWORLD( - gObjectEventPic_Beartic, + sPicTable_Beartic, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -10175,7 +10175,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(0, 14, SHADOW_SIZE_M) FOOTPRINT(Cryogonal) OVERWORLD( - gObjectEventPic_Cryogonal, + sPicTable_Cryogonal, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -10245,7 +10245,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(0, -1, SHADOW_SIZE_S) FOOTPRINT(Shelmet) OVERWORLD( - gObjectEventPic_Shelmet, + sPicTable_Shelmet, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -10312,7 +10312,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(-14, 8, SHADOW_SIZE_S) FOOTPRINT(Accelgor) OVERWORLD( - gObjectEventPic_Accelgor, + sPicTable_Accelgor, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -10380,7 +10380,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(0, -1, SHADOW_SIZE_M) FOOTPRINT(Stunfisk) OVERWORLD( - gObjectEventPic_Stunfisk, + sPicTable_Stunfisk, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -10445,7 +10445,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(0, -1, SHADOW_SIZE_M) FOOTPRINT(Stunfisk) OVERWORLD( - gObjectEventPic_StunfiskGalar, + sPicTable_StunfiskGalar, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -10516,7 +10516,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(1, 2, SHADOW_SIZE_S) FOOTPRINT(Mienfoo) OVERWORLD( - gObjectEventPic_Mienfoo, + sPicTable_Mienfoo, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -10588,7 +10588,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(-1, 8, SHADOW_SIZE_M) FOOTPRINT(Mienshao) OVERWORLD( - gObjectEventPic_Mienshao, + sPicTable_Mienshao, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -10661,7 +10661,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(3, 9, SHADOW_SIZE_M) FOOTPRINT(Druddigon) OVERWORLD( - gObjectEventPic_Druddigon, + sPicTable_Druddigon, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -10732,7 +10732,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(-1, 7, SHADOW_SIZE_M) FOOTPRINT(Golett) OVERWORLD( - gObjectEventPic_Golett, + sPicTable_Golett, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -10800,7 +10800,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(-1, 14, SHADOW_SIZE_L) FOOTPRINT(Golurk) OVERWORLD( - gObjectEventPic_Golurk, + sPicTable_Golurk, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -10873,7 +10873,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(4, 4, SHADOW_SIZE_S) FOOTPRINT(Pawniard) OVERWORLD( - gObjectEventPic_Pawniard, + sPicTable_Pawniard, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -10941,7 +10941,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(-2, 14, SHADOW_SIZE_M) FOOTPRINT(Bisharp) OVERWORLD( - gObjectEventPic_Bisharp, + sPicTable_Bisharp, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -11005,7 +11005,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(-2, 14, SHADOW_SIZE_M) FOOTPRINT(Kingambit) OVERWORLD( - gObjectEventPic_Kingambit, + sPicTable_Kingambit, SIZE_64x64, SHADOW_SIZE_L, TRACKS_NONE, @@ -11074,7 +11074,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(8, 7, SHADOW_SIZE_M) FOOTPRINT(Bouffalant) OVERWORLD( - gObjectEventPic_Bouffalant, + sPicTable_Bouffalant, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -11145,7 +11145,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(-2, 2, SHADOW_SIZE_S) FOOTPRINT(Rufflet) OVERWORLD( - gObjectEventPic_Rufflet, + sPicTable_Rufflet, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -11214,7 +11214,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(-1, 16, SHADOW_SIZE_M) FOOTPRINT(Braviary) OVERWORLD( - gObjectEventPic_Braviary, + sPicTable_Braviary, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -11278,7 +11278,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(0, 14, SHADOW_SIZE_M) FOOTPRINT(Braviary) OVERWORLD( - gObjectEventPic_BraviaryHisui, + sPicTable_BraviaryHisui, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -11349,7 +11349,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(-1, 9, SHADOW_SIZE_M) FOOTPRINT(Vullaby) OVERWORLD( - gObjectEventPic_Vullaby, + sPicTable_Vullaby, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -11417,7 +11417,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(1, 12, SHADOW_SIZE_M) FOOTPRINT(Mandibuzz) OVERWORLD( - gObjectEventPic_Mandibuzz, + sPicTable_Mandibuzz, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -11484,7 +11484,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(5, 7, SHADOW_SIZE_L) FOOTPRINT(Heatmor) OVERWORLD( - gObjectEventPic_Heatmor, + sPicTable_Heatmor, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -11567,7 +11567,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(0, -3, SHADOW_SIZE_L) FOOTPRINT(Durant) OVERWORLD( - gObjectEventPic_Durant, + sPicTable_Durant, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -11636,7 +11636,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(1, 3, SHADOW_SIZE_S) FOOTPRINT(Deino) OVERWORLD( - gObjectEventPic_Deino, + sPicTable_Deino, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -11703,7 +11703,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(1, 6, SHADOW_SIZE_L) FOOTPRINT(Zweilous) OVERWORLD( - gObjectEventPic_Zweilous, + sPicTable_Zweilous, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -11776,7 +11776,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(1, 16, SHADOW_SIZE_M) FOOTPRINT(Hydreigon) OVERWORLD( - gObjectEventPic_Hydreigon, + sPicTable_Hydreigon, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -11852,7 +11852,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(0, 0, SHADOW_SIZE_S) FOOTPRINT(Larvesta) OVERWORLD( - gObjectEventPic_Larvesta, + sPicTable_Larvesta, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -11924,7 +11924,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(-4, 14, SHADOW_SIZE_M) FOOTPRINT(Volcarona) OVERWORLD( - gObjectEventPic_Volcarona, + sPicTable_Volcarona, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -11992,7 +11992,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(2, 14, SHADOW_SIZE_M) FOOTPRINT(Cobalion) OVERWORLD( - gObjectEventPic_Cobalion, + sPicTable_Cobalion, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -12066,7 +12066,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(3, 6, SHADOW_SIZE_L) FOOTPRINT(Terrakion) OVERWORLD( - gObjectEventPic_Terrakion, + sPicTable_Terrakion, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -12135,7 +12135,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(1, 12, SHADOW_SIZE_M) FOOTPRINT(Virizion) OVERWORLD( - gObjectEventPic_Virizion, + sPicTable_Virizion, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -12225,7 +12225,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(2, 17, SHADOW_SIZE_M) FOOTPRINT(Tornadus) OVERWORLD( - gObjectEventPic_TornadusIncarnate, + sPicTable_TornadusIncarnate, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -12297,7 +12297,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(-5, 12, SHADOW_SIZE_L) FOOTPRINT(Tornadus) OVERWORLD( - gObjectEventPic_TornadusTherian, + sPicTable_TornadusTherian, SIZE_64x64, SHADOW_SIZE_M, TRACKS_FOOT, @@ -12389,7 +12389,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(2, 17, SHADOW_SIZE_M) FOOTPRINT(Thundurus) OVERWORLD( - gObjectEventPic_ThundurusIncarnate, + sPicTable_ThundurusIncarnate, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -12473,7 +12473,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(5, 16, SHADOW_SIZE_M) FOOTPRINT(Thundurus) OVERWORLD( - gObjectEventPic_ThundurusTherian, + sPicTable_ThundurusTherian, SIZE_64x64, SHADOW_SIZE_M, TRACKS_FOOT, @@ -12544,7 +12544,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(-2, 12, SHADOW_SIZE_L) FOOTPRINT(Reshiram) OVERWORLD( - gObjectEventPic_Reshiram, + sPicTable_Reshiram, SIZE_64x64, SHADOW_SIZE_M, TRACKS_FOOT, @@ -12614,7 +12614,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(2, 14, SHADOW_SIZE_L) FOOTPRINT(Zekrom) OVERWORLD( - gObjectEventPic_Zekrom, + sPicTable_Zekrom, SIZE_64x64, SHADOW_SIZE_M, TRACKS_FOOT, @@ -12705,7 +12705,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(2, 17, SHADOW_SIZE_M) FOOTPRINT(Landorus) OVERWORLD( - gObjectEventPic_LandorusIncarnate, + sPicTable_LandorusIncarnate, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -12777,7 +12777,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(1, 11, SHADOW_SIZE_L) FOOTPRINT(Landorus) OVERWORLD( - gObjectEventPic_LandorusTherian, + sPicTable_LandorusTherian, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -12853,7 +12853,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(0, 8, SHADOW_SIZE_L) FOOTPRINT(Kyurem) OVERWORLD( - gObjectEventPic_Kyurem, + sPicTable_Kyurem, SIZE_64x64, SHADOW_SIZE_M, TRACKS_FOOT, @@ -12930,7 +12930,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(-8, 14, SHADOW_SIZE_L) FOOTPRINT(Kyurem) OVERWORLD( - gObjectEventPic_KyuremWhite, + sPicTable_KyuremWhite, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -13007,7 +13007,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(4, 14, SHADOW_SIZE_L) FOOTPRINT(Kyurem) OVERWORLD( - gObjectEventPic_KyuremBlack, + sPicTable_KyuremBlack, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -13080,7 +13080,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(-2, 8, SHADOW_SIZE_M) FOOTPRINT(Keldeo) OVERWORLD( - gObjectEventPic_KeldeoOrdinary, + sPicTable_KeldeoOrdinary, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -13226,7 +13226,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(-1, 10, SHADOW_SIZE_S) FOOTPRINT(Meloetta) OVERWORLD( - gObjectEventPic_MeloettaAria, + sPicTable_MeloettaAria, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -13305,7 +13305,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(0, 16, SHADOW_SIZE_S) FOOTPRINT(Meloetta) OVERWORLD( - gObjectEventPic_MeloettaPirouette, + sPicTable_MeloettaPirouette, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -13372,7 +13372,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = SHADOW(5, 13, SHADOW_SIZE_L) \ FOOTPRINT(Genesect) \ OVERWORLD( \ - gObjectEventPic_Genesect, \ + sPicTable_Genesect, \ SIZE_32x32, \ SHADOW_SIZE_M, \ TRACKS_FOOT, \ diff --git a/src/data/pokemon/species_info/gen_6_families.h b/src/data/pokemon/species_info/gen_6_families.h index 8568bd901d..b42696983e 100644 --- a/src/data/pokemon/species_info/gen_6_families.h +++ b/src/data/pokemon/species_info/gen_6_families.h @@ -60,7 +60,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(-2, 3, SHADOW_SIZE_S) FOOTPRINT(Chespin) OVERWORLD( - gObjectEventPic_Chespin, + sPicTable_Chespin, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -130,7 +130,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(2, 4, SHADOW_SIZE_M) FOOTPRINT(Quilladin) OVERWORLD( - gObjectEventPic_Quilladin, + sPicTable_Quilladin, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -197,7 +197,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(4, 10, SHADOW_SIZE_L) FOOTPRINT(Chesnaught) OVERWORLD( - gObjectEventPic_Chesnaught, + sPicTable_Chesnaught, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -269,7 +269,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(0, 4, SHADOW_SIZE_S) FOOTPRINT(Fennekin) OVERWORLD( - gObjectEventPic_Fennekin, + sPicTable_Fennekin, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -337,7 +337,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(-2, 10, SHADOW_SIZE_M) FOOTPRINT(Braixen) OVERWORLD( - gObjectEventPic_Braixen, + sPicTable_Braixen, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -408,7 +408,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(7, 14, SHADOW_SIZE_M) FOOTPRINT(Delphox) OVERWORLD( - gObjectEventPic_Delphox, + sPicTable_Delphox, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -480,7 +480,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(2, 0, SHADOW_SIZE_S) FOOTPRINT(Froakie) OVERWORLD( - gObjectEventPic_Froakie, + sPicTable_Froakie, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -547,7 +547,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(0, 5, SHADOW_SIZE_M) FOOTPRINT(Frogadier) OVERWORLD( - gObjectEventPic_Frogadier, + sPicTable_Frogadier, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -607,7 +607,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(4, 6, SHADOW_SIZE_L) FOOTPRINT(Greninja) OVERWORLD( - gObjectEventPic_Greninja, + sPicTable_Greninja, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -667,7 +667,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(4, 6, SHADOW_SIZE_L) FOOTPRINT(Greninja) OVERWORLD( - gObjectEventPic_Greninja, + sPicTable_Greninja, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -794,7 +794,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(3, 9, SHADOW_SIZE_S) FOOTPRINT(Bunnelby) OVERWORLD( - gObjectEventPic_Bunnelby, + sPicTable_Bunnelby, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -861,7 +861,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(8, 10, SHADOW_SIZE_M) FOOTPRINT(Diggersby) OVERWORLD( - gObjectEventPic_Diggersby, + sPicTable_Diggersby, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -932,7 +932,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(-2, 0, SHADOW_SIZE_S) FOOTPRINT(Fletchling) OVERWORLD( - gObjectEventPic_Fletchling, + sPicTable_Fletchling, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1006,7 +1006,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(0, 12, SHADOW_SIZE_S) FOOTPRINT(Fletchinder) OVERWORLD( - gObjectEventPic_Fletchinder, + sPicTable_Fletchinder, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1073,7 +1073,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(-2, 17, SHADOW_SIZE_M) FOOTPRINT(Talonflame) OVERWORLD( - gObjectEventPic_Talonflame, + sPicTable_Talonflame, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1133,7 +1133,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(1, 1, SHADOW_SIZE_S) \ FOOTPRINT(Scatterbug) \ OVERWORLD( \ - gObjectEventPic_Scatterbug, \ + sPicTable_Scatterbug, \ SIZE_32x32, \ SHADOW_SIZE_M, \ TRACKS_FOOT, \ @@ -1216,7 +1216,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(0, 2, SHADOW_SIZE_M) \ FOOTPRINT(Spewpa) \ OVERWORLD( \ - gObjectEventPic_Spewpa, \ + sPicTable_Spewpa, \ SIZE_32x32, \ SHADOW_SIZE_M, \ TRACKS_FOOT, \ @@ -1299,7 +1299,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(0, 20, SHADOW_SIZE_M) \ FOOTPRINT(Vivillon) \ OVERWORLD( \ - gObjectEventPic_Vivillon ##form, \ + sPicTable_Vivillon ##form, \ SIZE_32x32, \ SHADOW_SIZE_M, \ TRACKS_FOOT, \ @@ -1548,7 +1548,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(2, 3, SHADOW_SIZE_S) FOOTPRINT(Litleo) OVERWORLD( - gObjectEventPic_Litleo, + sPicTable_Litleo, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1623,7 +1623,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(-2, 11, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Pyroar) OVERWORLD( - gObjectEventPic_Pyroar, + sPicTable_Pyroar, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1632,7 +1632,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = gShinyOverworldPalette_Pyroar ) OVERWORLD_FEMALE( - gObjectEventPic_PyroarF, + sPicTable_PyroarF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1689,11 +1689,11 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(0, 11, SHADOW_SIZE_S) \ FOOTPRINT(Flabebe) \ OVERWORLD( \ - gObjectEventPic_Flabebe##Form, \ + sPicTable_Flabebe##Form, \ SIZE_32x32, \ SHADOW_SIZE_M, \ TRACKS_FOOT, \ - sAnimTable_Following, \ + sAnimTable_Following, \ gOverworldPalette_Flabebe##Form, \ gShinyOverworldPalette_Flabebe##Form \ ) \ @@ -1778,7 +1778,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(-3, 12, SHADOW_SIZE_S) \ FOOTPRINT(Floette) \ OVERWORLD( \ - gObjectEventPic_Floette ##form, \ + sPicTable_Floette ##form, \ SIZE_32x32, \ SHADOW_SIZE_M, \ TRACKS_FOOT, \ @@ -1927,7 +1927,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(-5, 15, SHADOW_SIZE_M) \ FOOTPRINT(Florges) \ OVERWORLD( \ - gObjectEventPic_Florges ##Form, \ + sPicTable_Florges ##Form, \ SIZE_32x32, \ SHADOW_SIZE_M, \ TRACKS_FOOT, \ @@ -2039,7 +2039,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(2, 7, SHADOW_SIZE_M) FOOTPRINT(Skiddo) OVERWORLD( - gObjectEventPic_Skiddo, + sPicTable_Skiddo, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2107,7 +2107,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(2, 9, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Gogoat) OVERWORLD( - gObjectEventPic_Gogoat, + sPicTable_Gogoat, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2179,7 +2179,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(-2, 2, SHADOW_SIZE_S) FOOTPRINT(Pancham) OVERWORLD( - gObjectEventPic_Pancham, + sPicTable_Pancham, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2251,7 +2251,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(-2, 13, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Pangoro) OVERWORLD( - gObjectEventPic_Pangoro, + sPicTable_Pangoro, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2312,7 +2312,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(3, 10, SHADOW_SIZE_XL_BATTLE_ONLY) \ FOOTPRINT(Furfrou) \ OVERWORLD( \ - gObjectEventPic_Furfrou##_form, \ + sPicTable_Furfrou##_form, \ SIZE_32x32, \ SHADOW_SIZE_M, \ TRACKS_FOOT, \ @@ -2398,7 +2398,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(-1, 4, SHADOW_SIZE_S) FOOTPRINT(Espurr) OVERWORLD( - gObjectEventPic_Espurr, + sPicTable_Espurr, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2463,7 +2463,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(-2, 11, SHADOW_SIZE_S) FOOTPRINT(Meowstic) OVERWORLD( - gObjectEventPic_MeowsticM, + sPicTable_MeowsticM, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2526,7 +2526,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(-2, 12, SHADOW_SIZE_S) FOOTPRINT(Meowstic) OVERWORLD( - gObjectEventPic_MeowsticF, + sPicTable_MeowsticF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2596,7 +2596,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(-10, 11, SHADOW_SIZE_S) FOOTPRINT(Honedge) OVERWORLD( - gObjectEventPic_Honedge, + sPicTable_Honedge, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2667,7 +2667,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(8, 11, SHADOW_SIZE_M) FOOTPRINT(Doublade) OVERWORLD( - gObjectEventPic_Doublade, + sPicTable_Doublade, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2740,7 +2740,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(0, 14, SHADOW_SIZE_M) FOOTPRINT(Aegislash) OVERWORLD( - gObjectEventPic_AegislashShield, + sPicTable_AegislashShield, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2882,7 +2882,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(-1, 13, SHADOW_SIZE_S) FOOTPRINT(Spritzee) OVERWORLD( - gObjectEventPic_Spritzee, + sPicTable_Spritzee, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2950,7 +2950,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(0, 10, SHADOW_SIZE_M) FOOTPRINT(Aromatisse) OVERWORLD( - gObjectEventPic_Aromatisse, + sPicTable_Aromatisse, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3022,7 +3022,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(0, -1, SHADOW_SIZE_S) FOOTPRINT(Swirlix) OVERWORLD( - gObjectEventPic_Swirlix, + sPicTable_Swirlix, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3093,7 +3093,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(1, 6, SHADOW_SIZE_M) FOOTPRINT(Slurpuff) OVERWORLD( - gObjectEventPic_Slurpuff, + sPicTable_Slurpuff, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3163,7 +3163,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(-1, 11, SHADOW_SIZE_S) FOOTPRINT(Inkay) OVERWORLD( - gObjectEventPic_Inkay, + sPicTable_Inkay, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3232,7 +3232,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(5, 14, SHADOW_SIZE_M) FOOTPRINT(Malamar) OVERWORLD( - gObjectEventPic_Malamar, + sPicTable_Malamar, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3303,7 +3303,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(-3, 5, SHADOW_SIZE_M) FOOTPRINT(Binacle) OVERWORLD( - gObjectEventPic_Binacle, + sPicTable_Binacle, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3371,7 +3371,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(4, 14, SHADOW_SIZE_L) FOOTPRINT(Barbaracle) OVERWORLD( - gObjectEventPic_Barbaracle, + sPicTable_Barbaracle, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3444,7 +3444,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(3, 5, SHADOW_SIZE_S) FOOTPRINT(Skrelp) OVERWORLD( - gObjectEventPic_Skrelp, + sPicTable_Skrelp, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3513,7 +3513,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(-3, 14, SHADOW_SIZE_M) FOOTPRINT(Dragalge) OVERWORLD( - gObjectEventPic_Dragalge, + sPicTable_Dragalge, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3584,7 +3584,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(4, -6, SHADOW_SIZE_M) FOOTPRINT(Clauncher) OVERWORLD( - gObjectEventPic_Clauncher, + sPicTable_Clauncher, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3658,7 +3658,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(6, 1, SHADOW_SIZE_L) FOOTPRINT(Clawitzer) OVERWORLD( - gObjectEventPic_Clawitzer, + sPicTable_Clawitzer, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3726,7 +3726,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(-1, 1, SHADOW_SIZE_S) FOOTPRINT(Helioptile) OVERWORLD( - gObjectEventPic_Helioptile, + sPicTable_Helioptile, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3795,7 +3795,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(-2, 10, SHADOW_SIZE_M) FOOTPRINT(Heliolisk) OVERWORLD( - gObjectEventPic_Heliolisk, + sPicTable_Heliolisk, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3864,7 +3864,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(3, 2, SHADOW_SIZE_M) FOOTPRINT(Tyrunt) OVERWORLD( - gObjectEventPic_Tyrunt, + sPicTable_Tyrunt, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3931,7 +3931,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(-2, 14, SHADOW_SIZE_L) FOOTPRINT(Tyrantrum) OVERWORLD( - gObjectEventPic_Tyrantrum, + sPicTable_Tyrantrum, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4006,7 +4006,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(0, 8, SHADOW_SIZE_S) FOOTPRINT(Amaura) OVERWORLD( - gObjectEventPic_Amaura, + sPicTable_Amaura, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4073,7 +4073,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(-6, 14, SHADOW_SIZE_L) FOOTPRINT(Aurorus) OVERWORLD( - gObjectEventPic_Aurorus, + sPicTable_Aurorus, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4146,7 +4146,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(3, 6, SHADOW_SIZE_S) FOOTPRINT(Hawlucha) OVERWORLD( - gObjectEventPic_Hawlucha, + sPicTable_Hawlucha, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4215,7 +4215,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(-2, 1, SHADOW_SIZE_S) FOOTPRINT(Dedenne) OVERWORLD( - gObjectEventPic_Dedenne, + sPicTable_Dedenne, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4292,7 +4292,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(-1, 5, SHADOW_SIZE_S) FOOTPRINT(Carbink) OVERWORLD( - gObjectEventPic_Carbink, + sPicTable_Carbink, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4361,7 +4361,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(-1, -1, SHADOW_SIZE_S) FOOTPRINT(Goomy) OVERWORLD( - gObjectEventPic_Goomy, + sPicTable_Goomy, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4431,7 +4431,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(1, 6, SHADOW_SIZE_S) FOOTPRINT(Sliggoo) OVERWORLD( - gObjectEventPic_Sliggoo, + sPicTable_Sliggoo, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4502,7 +4502,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(-2, 14, SHADOW_SIZE_M) FOOTPRINT(Goodra) OVERWORLD( - gObjectEventPic_Goodra, + sPicTable_Goodra, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4567,7 +4567,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(2, 6, SHADOW_SIZE_M) FOOTPRINT(Sliggoo) OVERWORLD( - gObjectEventPic_SliggooHisui, + sPicTable_SliggooHisui, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4633,7 +4633,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(1, 12, SHADOW_SIZE_M) FOOTPRINT(Goodra) OVERWORLD( - gObjectEventPic_GoodraHisui, + sPicTable_GoodraHisui, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4712,7 +4712,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(-1, 12, SHADOW_SIZE_S) FOOTPRINT(Klefki) OVERWORLD( - gObjectEventPic_Klefki, + sPicTable_Klefki, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4782,7 +4782,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(-1, 5, SHADOW_SIZE_S) FOOTPRINT(Phantump) OVERWORLD( - gObjectEventPic_Phantump, + sPicTable_Phantump, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4854,7 +4854,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(-1, 13, SHADOW_SIZE_M) FOOTPRINT(Trevenant) OVERWORLD( - gObjectEventPic_Trevenant, + sPicTable_Trevenant, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4918,7 +4918,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(0, 1, SHADOW_SIZE_S) FOOTPRINT(Pumpkaboo) OVERWORLD( - gObjectEventPic_PumpkabooAverage, + sPicTable_PumpkabooAverage, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4983,7 +4983,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(-1, -1, SHADOW_SIZE_S) FOOTPRINT(Pumpkaboo) OVERWORLD( - gObjectEventPic_PumpkabooSmall, + sPicTable_PumpkabooSmall, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5048,7 +5048,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(0, 2, SHADOW_SIZE_S) FOOTPRINT(Pumpkaboo) OVERWORLD( - gObjectEventPic_PumpkabooLarge, + sPicTable_PumpkabooLarge, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5115,7 +5115,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(1, 4, SHADOW_SIZE_S) FOOTPRINT(Pumpkaboo) OVERWORLD( - gObjectEventPic_PumpkabooSuper, + sPicTable_PumpkabooSuper, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5181,7 +5181,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(3, 10, SHADOW_SIZE_M) FOOTPRINT(Gourgeist) OVERWORLD( - gObjectEventPic_GourgeistAverage, + sPicTable_GourgeistAverage, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5244,7 +5244,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(4, 9, SHADOW_SIZE_S) FOOTPRINT(Gourgeist) OVERWORLD( - gObjectEventPic_GourgeistSmall, + sPicTable_GourgeistSmall, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5307,7 +5307,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(4, 12, SHADOW_SIZE_M) FOOTPRINT(Gourgeist) OVERWORLD( - gObjectEventPic_GourgeistLarge, + sPicTable_GourgeistLarge, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5372,7 +5372,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(4, 14, SHADOW_SIZE_M) FOOTPRINT(Gourgeist) OVERWORLD( - gObjectEventPic_GourgeistSuper, + sPicTable_GourgeistSuper, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5449,7 +5449,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(1, -1, SHADOW_SIZE_S) FOOTPRINT(Bergmite) OVERWORLD( - gObjectEventPic_Bergmite, + sPicTable_Bergmite, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5519,7 +5519,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(1, -1, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Avalugg) OVERWORLD( - gObjectEventPic_Avalugg, + sPicTable_Avalugg, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5582,7 +5582,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(2, -2, SHADOW_SIZE_L) FOOTPRINT(Avalugg) OVERWORLD( - gObjectEventPic_AvaluggHisui, + sPicTable_AvaluggHisui, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5663,7 +5663,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(2, 11, SHADOW_SIZE_L) FOOTPRINT(Noibat) OVERWORLD( - gObjectEventPic_Noibat, + sPicTable_Noibat, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5734,7 +5734,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(5, 10, SHADOW_SIZE_L) FOOTPRINT(Noivern) OVERWORLD( - gObjectEventPic_Noivern, + sPicTable_Noivern, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5794,7 +5794,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(3, 14, SHADOW_SIZE_M) FOOTPRINT(Xerneas) OVERWORLD( - gObjectEventPic_XerneasNeutral, + sPicTable_XerneasNeutral, SIZE_64x64, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5857,7 +5857,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(3, 14, SHADOW_SIZE_M) FOOTPRINT(Xerneas) OVERWORLD( - gObjectEventPic_XerneasActive, + sPicTable_XerneasActive, SIZE_64x64, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5932,7 +5932,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(0, 16, SHADOW_SIZE_L) FOOTPRINT(Yveltal) OVERWORLD( - gObjectEventPic_Yveltal, + sPicTable_Yveltal, SIZE_64x64, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5996,7 +5996,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(0, 13, SHADOW_SIZE_L) FOOTPRINT(Zygarde) OVERWORLD( - gObjectEventPic_Zygarde50, + sPicTable_Zygarde50, SIZE_64x64, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6059,7 +6059,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(0, 13, SHADOW_SIZE_L) FOOTPRINT(Zygarde) OVERWORLD( - gObjectEventPic_Zygarde50, + sPicTable_Zygarde50, SIZE_64x64, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6122,7 +6122,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(1, 11, SHADOW_SIZE_L) FOOTPRINT(Zygarde) OVERWORLD( - gObjectEventPic_Zygarde10, + sPicTable_Zygarde10, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6186,7 +6186,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(1, 11, SHADOW_SIZE_L) FOOTPRINT(Zygarde) OVERWORLD( - gObjectEventPic_Zygarde10, + sPicTable_Zygarde10, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6258,7 +6258,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(-3, 13, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Zygarde) OVERWORLD( - gObjectEventPic_ZygardeComplete, + sPicTable_ZygardeComplete, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6332,7 +6332,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(0, 13, SHADOW_SIZE_S) FOOTPRINT(Diancie) OVERWORLD( - gObjectEventPic_Diancie, + sPicTable_Diancie, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6402,7 +6402,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = FOOTPRINT(Diancie) #if OW_BATTLE_ONLY_FORMS OVERWORLD( - gObjectEventPic_DiancieMega, + sPicTable_DiancieMega, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6485,7 +6485,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(0, 13, SHADOW_SIZE_S) FOOTPRINT(Hoopa) OVERWORLD( - gObjectEventPic_HoopaConfined, + sPicTable_HoopaConfined, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6556,7 +6556,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(1, 14, SHADOW_SIZE_L) FOOTPRINT(Hoopa) OVERWORLD( - gObjectEventPic_HoopaUnbound, + sPicTable_HoopaUnbound, SIZE_64x64, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6628,7 +6628,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = SHADOW(0, 12, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Volcanion) OVERWORLD( - gObjectEventPic_Volcanion, + sPicTable_Volcanion, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, diff --git a/src/data/pokemon/species_info/gen_7_families.h b/src/data/pokemon/species_info/gen_7_families.h index d2c9dfada6..fb97530b74 100644 --- a/src/data/pokemon/species_info/gen_7_families.h +++ b/src/data/pokemon/species_info/gen_7_families.h @@ -57,7 +57,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(-1, 1, SHADOW_SIZE_S) FOOTPRINT(Rowlet) OVERWORLD( - gObjectEventPic_Rowlet, + sPicTable_Rowlet, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -125,7 +125,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(0, 5, SHADOW_SIZE_S) FOOTPRINT(Dartrix) OVERWORLD( - gObjectEventPic_Dartrix, + sPicTable_Dartrix, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -192,7 +192,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(-1, 13, SHADOW_SIZE_S) FOOTPRINT(Decidueye) OVERWORLD( - gObjectEventPic_Decidueye, + sPicTable_Decidueye, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -256,7 +256,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(-1, 14, SHADOW_SIZE_L) FOOTPRINT(Decidueye) OVERWORLD( - gObjectEventPic_DecidueyeHisui, + sPicTable_DecidueyeHisui, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -323,7 +323,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(1, 1, SHADOW_SIZE_S) FOOTPRINT(Litten) OVERWORLD( - gObjectEventPic_Litten, + sPicTable_Litten, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -387,7 +387,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(5, 7, SHADOW_SIZE_M) FOOTPRINT(Torracat) OVERWORLD( - gObjectEventPic_Torracat, + sPicTable_Torracat, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -450,7 +450,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(4, 14, SHADOW_SIZE_L) FOOTPRINT(Incineroar) OVERWORLD( - gObjectEventPic_Incineroar, + sPicTable_Incineroar, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -514,7 +514,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(0, 1, SHADOW_SIZE_S) FOOTPRINT(Popplio) OVERWORLD( - gObjectEventPic_Popplio, + sPicTable_Popplio, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -578,7 +578,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(-5, 6, SHADOW_SIZE_M) FOOTPRINT(Brionne) OVERWORLD( - gObjectEventPic_Brionne, + sPicTable_Brionne, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -641,7 +641,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(-6, 11, SHADOW_SIZE_L) FOOTPRINT(Primarina) OVERWORLD( - gObjectEventPic_Primarina, + sPicTable_Primarina, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -710,7 +710,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(0, 3, SHADOW_SIZE_S) FOOTPRINT(Pikipek) OVERWORLD( - gObjectEventPic_Pikipek, + sPicTable_Pikipek, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -780,7 +780,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(1, 8, SHADOW_SIZE_S) FOOTPRINT(Trumbeak) OVERWORLD( - gObjectEventPic_Trumbeak, + sPicTable_Trumbeak, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -847,7 +847,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(9, 12, SHADOW_SIZE_M) FOOTPRINT(Toucannon) OVERWORLD( - gObjectEventPic_Toucannon, + sPicTable_Toucannon, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -912,7 +912,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(-9, 1, SHADOW_SIZE_M) FOOTPRINT(Yungoos) OVERWORLD( - gObjectEventPic_Yungoos, + sPicTable_Yungoos, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -973,7 +973,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(-2, 8, SHADOW_SIZE_M) FOOTPRINT(Gumshoos) OVERWORLD( - gObjectEventPic_Gumshoos, + sPicTable_Gumshoos, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1033,7 +1033,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(-2, 8, SHADOW_SIZE_M) FOOTPRINT(Gumshoos) OVERWORLD( - gObjectEventPic_Gumshoos, + sPicTable_Gumshoos, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1100,7 +1100,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(0, -4, SHADOW_SIZE_M) FOOTPRINT(Grubbin) OVERWORLD( - gObjectEventPic_Grubbin, + sPicTable_Grubbin, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1169,7 +1169,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = NO_SHADOW FOOTPRINT(Charjabug) OVERWORLD( - gObjectEventPic_Charjabug, + sPicTable_Charjabug, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1231,7 +1231,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(-1, 16, SHADOW_SIZE_S) FOOTPRINT(Vikavolt) OVERWORLD( - gObjectEventPic_Vikavolt, + sPicTable_Vikavolt, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1299,7 +1299,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(-1, 16, SHADOW_SIZE_S) FOOTPRINT(Vikavolt) OVERWORLD( - gObjectEventPic_Vikavolt, + sPicTable_Vikavolt, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1367,7 +1367,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(7, 6, SHADOW_SIZE_M) FOOTPRINT(Crabrawler) OVERWORLD( - gObjectEventPic_Crabrawler, + sPicTable_Crabrawler, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1433,7 +1433,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(1, 14, SHADOW_SIZE_L) FOOTPRINT(Crabominable) OVERWORLD( - gObjectEventPic_Crabominable, + sPicTable_Crabominable, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1498,7 +1498,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(-4, 9, SHADOW_SIZE_S) FOOTPRINT(Oricorio) OVERWORLD( - gObjectEventPic_OricorioBaile, + sPicTable_OricorioBaile, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1564,7 +1564,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(5, 8, SHADOW_SIZE_S) FOOTPRINT(Oricorio) OVERWORLD( - gObjectEventPic_OricorioPomPom, + sPicTable_OricorioPomPom, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1630,7 +1630,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(-3, 11, SHADOW_SIZE_S) FOOTPRINT(Oricorio) OVERWORLD( - gObjectEventPic_OricorioPau, + sPicTable_OricorioPau, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1696,7 +1696,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(7, 10, SHADOW_SIZE_S) FOOTPRINT(Oricorio) OVERWORLD( - gObjectEventPic_OricorioSensu, + sPicTable_OricorioSensu, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1798,7 +1798,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(0, 5, SHADOW_SIZE_S) FOOTPRINT(Cutiefly) OVERWORLD( - gObjectEventPic_Cutiefly, + sPicTable_Cutiefly, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1861,7 +1861,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(-1, 12, SHADOW_SIZE_S) FOOTPRINT(Ribombee) OVERWORLD( - gObjectEventPic_Ribombee, + sPicTable_Ribombee, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1922,7 +1922,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(-1, 12, SHADOW_SIZE_S) FOOTPRINT(Ribombee) OVERWORLD( - gObjectEventPic_Ribombee, + sPicTable_Ribombee, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1985,7 +1985,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(-2, 2, SHADOW_SIZE_S) FOOTPRINT(Rockruff) OVERWORLD( - gObjectEventPic_Rockruff, + sPicTable_Rockruff, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2047,7 +2047,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(-2, 2, SHADOW_SIZE_S) FOOTPRINT(Rockruff) OVERWORLD( - gObjectEventPic_Rockruff, + sPicTable_Rockruff, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2115,7 +2115,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(5, 7, SHADOW_SIZE_L) FOOTPRINT(Lycanroc) OVERWORLD( - gObjectEventPic_LycanrocMidday, + sPicTable_LycanrocMidday, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2181,7 +2181,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(5, 13, SHADOW_SIZE_L) FOOTPRINT(Lycanroc) OVERWORLD( - gObjectEventPic_LycanrocMidnight, + sPicTable_LycanrocMidnight, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2247,7 +2247,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(5, 7, SHADOW_SIZE_L) FOOTPRINT(Lycanroc) OVERWORLD( - gObjectEventPic_LycanrocDusk, + sPicTable_LycanrocDusk, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2313,7 +2313,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(-1, 3, SHADOW_SIZE_S) FOOTPRINT(Wishiwashi) OVERWORLD( - gObjectEventPic_WishiwashiSolo, + sPicTable_WishiwashiSolo, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2437,7 +2437,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(0, -1, SHADOW_SIZE_M) FOOTPRINT(Mareanie) OVERWORLD( - gObjectEventPic_Mareanie, + sPicTable_Mareanie, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2502,7 +2502,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(0, 6, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Toxapex) OVERWORLD( - gObjectEventPic_Toxapex, + sPicTable_Toxapex, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2567,7 +2567,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(2, 6, SHADOW_SIZE_M) FOOTPRINT(Mudbray) OVERWORLD( - gObjectEventPic_Mudbray, + sPicTable_Mudbray, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2632,7 +2632,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(4, 13, SHADOW_SIZE_L) FOOTPRINT(Mudsdale) OVERWORLD( - gObjectEventPic_Mudsdale, + sPicTable_Mudsdale, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2704,7 +2704,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(1, 2, SHADOW_SIZE_S) FOOTPRINT(Dewpider) OVERWORLD( - gObjectEventPic_Dewpider, + sPicTable_Dewpider, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2766,7 +2766,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(-6, 9, SHADOW_SIZE_M) FOOTPRINT(Araquanid) OVERWORLD( - gObjectEventPic_Araquanid, + sPicTable_Araquanid, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2826,7 +2826,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(-6, 9, SHADOW_SIZE_S) FOOTPRINT(Araquanid) OVERWORLD( - gObjectEventPic_Araquanid, + sPicTable_Araquanid, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2894,7 +2894,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(0, 3, SHADOW_SIZE_S) FOOTPRINT(Fomantis) OVERWORLD( - gObjectEventPic_Fomantis, + sPicTable_Fomantis, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2956,7 +2956,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(-1, 12, SHADOW_SIZE_S) FOOTPRINT(Lurantis) OVERWORLD( - gObjectEventPic_Lurantis, + sPicTable_Lurantis, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3016,7 +3016,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(-1, 12, SHADOW_SIZE_S) FOOTPRINT(Lurantis) OVERWORLD( - gObjectEventPic_Lurantis, + sPicTable_Lurantis, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3085,7 +3085,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(-1, 4, SHADOW_SIZE_S) FOOTPRINT(Morelull) OVERWORLD( - gObjectEventPic_Morelull, + sPicTable_Morelull, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3151,7 +3151,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(0, 10, SHADOW_SIZE_S) FOOTPRINT(Shiinotic) OVERWORLD( - gObjectEventPic_Shiinotic, + sPicTable_Shiinotic, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3220,7 +3220,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(3, 1, SHADOW_SIZE_M) FOOTPRINT(Salandit) OVERWORLD( - gObjectEventPic_Salandit, + sPicTable_Salandit, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3282,7 +3282,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(-4, 9, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Salazzle) OVERWORLD( - gObjectEventPic_Salazzle, + sPicTable_Salazzle, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3342,7 +3342,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(-4, 9, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Salazzle) OVERWORLD( - gObjectEventPic_Salazzle, + sPicTable_Salazzle, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3413,7 +3413,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(0, 3, SHADOW_SIZE_M) FOOTPRINT(Stufful) OVERWORLD( - gObjectEventPic_Stufful, + sPicTable_Stufful, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3481,7 +3481,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(-1, 13, SHADOW_SIZE_M) FOOTPRINT(Bewear) OVERWORLD( - gObjectEventPic_Bewear, + sPicTable_Bewear, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3546,7 +3546,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(-2, -3, SHADOW_SIZE_S) FOOTPRINT(Bounsweet) OVERWORLD( - gObjectEventPic_Bounsweet, + sPicTable_Bounsweet, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3612,7 +3612,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(-2, 7, SHADOW_SIZE_S) FOOTPRINT(Steenee) OVERWORLD( - gObjectEventPic_Steenee, + sPicTable_Steenee, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3677,7 +3677,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(1, 13, SHADOW_SIZE_M) FOOTPRINT(Tsareena) OVERWORLD( - gObjectEventPic_Tsareena, + sPicTable_Tsareena, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3744,7 +3744,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(0, 10, SHADOW_SIZE_M) FOOTPRINT(Comfey) OVERWORLD( - gObjectEventPic_Comfey, + sPicTable_Comfey, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3812,7 +3812,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(-2, 6, SHADOW_SIZE_M) FOOTPRINT(Oranguru) OVERWORLD( - gObjectEventPic_Oranguru, + sPicTable_Oranguru, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3880,7 +3880,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(-4, 12, SHADOW_SIZE_L) FOOTPRINT(Passimian) OVERWORLD( - gObjectEventPic_Passimian, + sPicTable_Passimian, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3949,7 +3949,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(-4, -3, SHADOW_SIZE_S) FOOTPRINT(Wimpod) OVERWORLD( - gObjectEventPic_Wimpod, + sPicTable_Wimpod, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4017,7 +4017,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(2, 13, SHADOW_SIZE_L) FOOTPRINT(Golisopod) OVERWORLD( - gObjectEventPic_Golisopod, + sPicTable_Golisopod, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4082,7 +4082,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = NO_SHADOW FOOTPRINT(Sandygast) OVERWORLD( - gObjectEventPic_Sandygast, + sPicTable_Sandygast, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4147,7 +4147,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = NO_SHADOW FOOTPRINT(Palossand) OVERWORLD( - gObjectEventPic_Palossand, + sPicTable_Palossand, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4215,7 +4215,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(-3, -3, SHADOW_SIZE_S) FOOTPRINT(Pyukumuku) OVERWORLD( - gObjectEventPic_Pyukumuku, + sPicTable_Pyukumuku, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4280,7 +4280,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(1, 11, SHADOW_SIZE_L) FOOTPRINT(Type_Null) OVERWORLD( - gObjectEventPic_TypeNull, + sPicTable_TypeNull, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4343,7 +4343,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(1, 13, SHADOW_SIZE_L) \ FOOTPRINT(Silvally) \ OVERWORLD( \ - gObjectEventPic_Silvally, \ + sPicTable_Silvally, \ SIZE_32x32, \ SHADOW_SIZE_M, \ TRACKS_FOOT, \ @@ -4435,7 +4435,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconPalIndex = 0, \ SHADOW(0, 14, SHADOW_SIZE_S) \ OVERWORLD( \ - gObjectEventPic_MiniorMeteor, \ + sPicTable_MiniorMeteor, \ SIZE_32x32, \ SHADOW_SIZE_M, \ TRACKS_FOOT, \ @@ -4543,7 +4543,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(-4, 0, SHADOW_SIZE_S) FOOTPRINT(Komala) OVERWORLD( - gObjectEventPic_Komala, + sPicTable_Komala, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4613,7 +4613,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(-3, 12, SHADOW_SIZE_L) FOOTPRINT(Turtonator) OVERWORLD( - gObjectEventPic_Turtonator, + sPicTable_Turtonator, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4675,7 +4675,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(-1, 4, SHADOW_SIZE_S) FOOTPRINT(Togedemaru) OVERWORLD( - gObjectEventPic_Togedemaru, + sPicTable_Togedemaru, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4736,7 +4736,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(-1, 4, SHADOW_SIZE_S) FOOTPRINT(Togedemaru) OVERWORLD( - gObjectEventPic_Togedemaru, + sPicTable_Togedemaru, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4801,7 +4801,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(-3, 1, SHADOW_SIZE_S) FOOTPRINT(Mimikyu) OVERWORLD( - gObjectEventPic_MimikyuDisguised, + sPicTable_MimikyuDisguised, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4916,7 +4916,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(-3, 1, SHADOW_SIZE_S) FOOTPRINT(Mimikyu) OVERWORLD( - gObjectEventPic_MimikyuDisguised, + sPicTable_MimikyuDisguised, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5041,7 +5041,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(0, -1, SHADOW_SIZE_M) FOOTPRINT(Bruxish) OVERWORLD( - gObjectEventPic_Bruxish, + sPicTable_Bruxish, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5110,7 +5110,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(5, 13, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Drampa) OVERWORLD( - gObjectEventPic_Drampa, + sPicTable_Drampa, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5177,7 +5177,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(-1, 12, SHADOW_SIZE_M) FOOTPRINT(Dhelmise) OVERWORLD( - gObjectEventPic_Dhelmise, + sPicTable_Dhelmise, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5245,7 +5245,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(0, 5, SHADOW_SIZE_S) FOOTPRINT(JangmoO) OVERWORLD( - gObjectEventPic_JangmoO, + sPicTable_JangmoO, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5313,7 +5313,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(-2, 12, SHADOW_SIZE_M) FOOTPRINT(HakamoO) OVERWORLD( - gObjectEventPic_HakamoO, + sPicTable_HakamoO, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5374,7 +5374,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(0, 13, SHADOW_SIZE_L) FOOTPRINT(KommoO) OVERWORLD( - gObjectEventPic_KommoO, + sPicTable_KommoO, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5440,7 +5440,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(0, 13, SHADOW_SIZE_L) FOOTPRINT(KommoO) OVERWORLD( - gObjectEventPic_KommoO, + sPicTable_KommoO, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5516,7 +5516,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(-1, 19, SHADOW_SIZE_M) FOOTPRINT(TapuKoko) OVERWORLD( - gObjectEventPic_TapuKoko, + sPicTable_TapuKoko, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5587,7 +5587,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(0, 13, SHADOW_SIZE_S) FOOTPRINT(TapuLele) OVERWORLD( - gObjectEventPic_TapuLele, + sPicTable_TapuLele, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5660,7 +5660,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(4, 16, SHADOW_SIZE_M) FOOTPRINT(TapuBulu) OVERWORLD( - gObjectEventPic_TapuBulu, + sPicTable_TapuBulu, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5732,7 +5732,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(1, 15, SHADOW_SIZE_M) FOOTPRINT(TapuFini) OVERWORLD( - gObjectEventPic_TapuFini, + sPicTable_TapuFini, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5799,7 +5799,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(0, 8, SHADOW_SIZE_S) FOOTPRINT(Cosmog) OVERWORLD( - gObjectEventPic_Cosmog, + sPicTable_Cosmog, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5868,7 +5868,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(0, 5, SHADOW_SIZE_M) FOOTPRINT(Cosmoem) OVERWORLD( - gObjectEventPic_Cosmoem, + sPicTable_Cosmoem, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5936,7 +5936,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(-1, 11, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Solgaleo) OVERWORLD( - gObjectEventPic_Solgaleo, + sPicTable_Solgaleo, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6002,7 +6002,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(4, 17, SHADOW_SIZE_L) FOOTPRINT(Lunala) OVERWORLD( - gObjectEventPic_Lunala, + sPicTable_Lunala, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6070,7 +6070,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(-2, 14, SHADOW_SIZE_S) FOOTPRINT(Nihilego) OVERWORLD( - gObjectEventPic_Nihilego, + sPicTable_Nihilego, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6137,7 +6137,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(-2, 12, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Buzzwole) OVERWORLD( - gObjectEventPic_Buzzwole, + sPicTable_Buzzwole, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6203,7 +6203,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(0, 13, SHADOW_SIZE_S) FOOTPRINT(Pheromosa) OVERWORLD( - gObjectEventPic_Pheromosa, + sPicTable_Pheromosa, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6269,7 +6269,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(0, 13, SHADOW_SIZE_L) FOOTPRINT(Xurkitree) OVERWORLD( - gObjectEventPic_Xurkitree, + sPicTable_Xurkitree, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6337,7 +6337,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(-1, 13, SHADOW_SIZE_M) FOOTPRINT(Celesteela) OVERWORLD( - gObjectEventPic_Celesteela, + sPicTable_Celesteela, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6404,7 +6404,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(2, 14, SHADOW_SIZE_M) FOOTPRINT(Kartana) OVERWORLD( - gObjectEventPic_Kartana, + sPicTable_Kartana, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6470,7 +6470,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(4, 10, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Guzzlord) OVERWORLD( - gObjectEventPic_Guzzlord, + sPicTable_Guzzlord, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6539,7 +6539,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(-1, 15, SHADOW_SIZE_M) FOOTPRINT(Necrozma) OVERWORLD( - gObjectEventPic_Necrozma, + sPicTable_Necrozma, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6607,7 +6607,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(-3, 11, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Necrozma) OVERWORLD( - gObjectEventPic_NecrozmaDuskMane, + sPicTable_NecrozmaDuskMane, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6677,7 +6677,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(3, 17, SHADOW_SIZE_L) FOOTPRINT(Necrozma) OVERWORLD( - gObjectEventPic_NecrozmaDawnWings, + sPicTable_NecrozmaDawnWings, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6751,7 +6751,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = FOOTPRINT(Necrozma) #if OW_BATTLE_ONLY_FORMS OVERWORLD( - gObjectEventPic_NecrozmaUltra, + sPicTable_NecrozmaUltra, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6824,7 +6824,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(-2, 14, SHADOW_SIZE_M) FOOTPRINT(Magearna) OVERWORLD( - gObjectEventPic_Magearna, + sPicTable_Magearna, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6889,7 +6889,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(-2, 14, SHADOW_SIZE_M) FOOTPRINT(Magearna) OVERWORLD( - gObjectEventPic_MagearnaOriginal, + sPicTable_MagearnaOriginal, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6963,7 +6963,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(0, 5, SHADOW_SIZE_S) FOOTPRINT(Marshadow) OVERWORLD( - gObjectEventPic_Marshadow, + sPicTable_Marshadow, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -7030,7 +7030,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(-1, 12, SHADOW_SIZE_S) FOOTPRINT(Poipole) OVERWORLD( - gObjectEventPic_Poipole, + sPicTable_Poipole, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -7095,7 +7095,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(7, 17, SHADOW_SIZE_M) FOOTPRINT(Naganadel) OVERWORLD( - gObjectEventPic_Naganadel, + sPicTable_Naganadel, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -7161,7 +7161,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(2, 15, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Stakataka) OVERWORLD( - gObjectEventPic_Stakataka, + sPicTable_Stakataka, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -7227,7 +7227,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(0, 13, SHADOW_SIZE_M) FOOTPRINT(Blacephalon) OVERWORLD( - gObjectEventPic_Blacephalon, + sPicTable_Blacephalon, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -7292,7 +7292,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(0, 9, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Zeraora) OVERWORLD( - gObjectEventPic_Zeraora, + sPicTable_Zeraora, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -7358,7 +7358,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(-1, 2, SHADOW_SIZE_S) FOOTPRINT(Meltan) OVERWORLD( - gObjectEventPic_Meltan, + sPicTable_Meltan, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -7422,7 +7422,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = SHADOW(3, 10, SHADOW_SIZE_L) FOOTPRINT(Melmetal) OVERWORLD( - gObjectEventPic_Melmetal, + sPicTable_Melmetal, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, diff --git a/src/data/pokemon/species_info/gen_8_families.h b/src/data/pokemon/species_info/gen_8_families.h index 9898b4da9d..ee3a17dfe9 100644 --- a/src/data/pokemon/species_info/gen_8_families.h +++ b/src/data/pokemon/species_info/gen_8_families.h @@ -54,7 +54,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(1, 1, SHADOW_SIZE_S) FOOTPRINT(Grookey) OVERWORLD( - gObjectEventPic_Grookey, + sPicTable_Grookey, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -117,7 +117,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(5, 6, SHADOW_SIZE_M) FOOTPRINT(Thwackey) OVERWORLD( - gObjectEventPic_Thwackey, + sPicTable_Thwackey, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -179,7 +179,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(2, 8, SHADOW_SIZE_L) FOOTPRINT(Rillaboom) OVERWORLD( - gObjectEventPic_Rillaboom, + sPicTable_Rillaboom, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -302,7 +302,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(-1, 6, SHADOW_SIZE_S) FOOTPRINT(Scorbunny) OVERWORLD( - gObjectEventPic_Scorbunny, + sPicTable_Scorbunny, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -365,7 +365,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(-4, 5, SHADOW_SIZE_S) FOOTPRINT(Raboot) OVERWORLD( - gObjectEventPic_Raboot, + sPicTable_Raboot, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -428,7 +428,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(0, 14, SHADOW_SIZE_M) FOOTPRINT(Cinderace) OVERWORLD( - gObjectEventPic_Cinderace, + sPicTable_Cinderace, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -553,7 +553,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(-3, 3, SHADOW_SIZE_S) FOOTPRINT(Sobble) OVERWORLD( - gObjectEventPic_Sobble, + sPicTable_Sobble, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -616,7 +616,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(2, 5, SHADOW_SIZE_M) FOOTPRINT(Drizzile) OVERWORLD( - gObjectEventPic_Drizzile, + sPicTable_Drizzile, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -679,7 +679,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(-5, 12, SHADOW_SIZE_S) FOOTPRINT(Inteleon) OVERWORLD( - gObjectEventPic_Inteleon, + sPicTable_Inteleon, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -803,7 +803,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(-7, 5, SHADOW_SIZE_S) FOOTPRINT(Skwovet) OVERWORLD( - gObjectEventPic_Skwovet, + sPicTable_Skwovet, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -868,7 +868,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(-11, 10, SHADOW_SIZE_M) FOOTPRINT(Greedent) OVERWORLD( - gObjectEventPic_Greedent, + sPicTable_Greedent, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -940,7 +940,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(-1, -3, SHADOW_SIZE_S) FOOTPRINT(Rookidee) OVERWORLD( - gObjectEventPic_Rookidee, + sPicTable_Rookidee, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1013,7 +1013,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(2, 16, SHADOW_SIZE_S) FOOTPRINT(Corvisquire) OVERWORLD( - gObjectEventPic_Corvisquire, + sPicTable_Corvisquire, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1080,7 +1080,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(-1, 9, SHADOW_SIZE_L) FOOTPRINT(Corviknight) OVERWORLD( - gObjectEventPic_Corviknight, + sPicTable_Corviknight, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1203,7 +1203,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(2, 1, SHADOW_SIZE_S) FOOTPRINT(Blipbug) OVERWORLD( - gObjectEventPic_Blipbug, + sPicTable_Blipbug, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1269,7 +1269,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(-1, 0, SHADOW_SIZE_M) FOOTPRINT(Dottler) OVERWORLD( - gObjectEventPic_Dottler, + sPicTable_Dottler, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1334,7 +1334,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(0, 15, SHADOW_SIZE_M) FOOTPRINT(Orbeetle) OVERWORLD( - gObjectEventPic_Orbeetle, + sPicTable_Orbeetle, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1459,7 +1459,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(0, 4, SHADOW_SIZE_M) FOOTPRINT(Nickit) OVERWORLD( - gObjectEventPic_Nickit, + sPicTable_Nickit, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1523,7 +1523,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(-9, 7, SHADOW_SIZE_M) FOOTPRINT(Thievul) OVERWORLD( - gObjectEventPic_Thievul, + sPicTable_Thievul, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1587,7 +1587,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(0, 2, SHADOW_SIZE_S) FOOTPRINT(Gossifleur) OVERWORLD( - gObjectEventPic_Gossifleur, + sPicTable_Gossifleur, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1651,7 +1651,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(-2, 8, SHADOW_SIZE_S) FOOTPRINT(Eldegoss) OVERWORLD( - gObjectEventPic_Eldegoss, + sPicTable_Eldegoss, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1715,7 +1715,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(1, 1, SHADOW_SIZE_S) FOOTPRINT(Wooloo) OVERWORLD( - gObjectEventPic_Wooloo, + sPicTable_Wooloo, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1779,7 +1779,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(2, 8, SHADOW_SIZE_M) FOOTPRINT(Dubwool) OVERWORLD( - gObjectEventPic_Dubwool, + sPicTable_Dubwool, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1846,7 +1846,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(3, 1, SHADOW_SIZE_S) FOOTPRINT(Chewtle) OVERWORLD( - gObjectEventPic_Chewtle, + sPicTable_Chewtle, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1913,7 +1913,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(-2, 4, SHADOW_SIZE_L) FOOTPRINT(Drednaw) OVERWORLD( - gObjectEventPic_Drednaw, + sPicTable_Drednaw, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2037,7 +2037,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(-1, 2, SHADOW_SIZE_M) FOOTPRINT(Yamper) OVERWORLD( - gObjectEventPic_Yamper, + sPicTable_Yamper, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2101,7 +2101,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(0, 7, SHADOW_SIZE_M) FOOTPRINT(Boltund) OVERWORLD( - gObjectEventPic_Boltund, + sPicTable_Boltund, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2165,7 +2165,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(0, -3, SHADOW_SIZE_S) FOOTPRINT(Rolycoly) OVERWORLD( - gObjectEventPic_Rolycoly, + sPicTable_Rolycoly, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2228,7 +2228,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(0, 3, SHADOW_SIZE_M) FOOTPRINT(Carkol) OVERWORLD( - gObjectEventPic_Carkol, + sPicTable_Carkol, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2291,7 +2291,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(1, 12, SHADOW_SIZE_L) FOOTPRINT(Coalossal) OVERWORLD( - gObjectEventPic_Coalossal, + sPicTable_Coalossal, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2415,7 +2415,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(-1, -3, SHADOW_SIZE_S) FOOTPRINT(Applin) OVERWORLD( - gObjectEventPic_Applin, + sPicTable_Applin, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2482,7 +2482,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(-6, 11, SHADOW_SIZE_S) FOOTPRINT(Flapple) OVERWORLD( - gObjectEventPic_Flapple, + sPicTable_Flapple, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2603,7 +2603,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(5, 6, SHADOW_SIZE_L) FOOTPRINT(Appletun) OVERWORLD( - gObjectEventPic_Appletun, + sPicTable_Appletun, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2725,7 +2725,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(-4, 8, SHADOW_SIZE_S) FOOTPRINT(Dipplin) OVERWORLD( - gObjectEventPic_Dipplin, + sPicTable_Dipplin, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2788,7 +2788,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(1, 12, SHADOW_SIZE_L) FOOTPRINT(Hydrapple) OVERWORLD( - gObjectEventPic_Hydrapple, + sPicTable_Hydrapple, SIZE_64x64, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2852,7 +2852,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(3, 1, SHADOW_SIZE_M) FOOTPRINT(Silicobra) OVERWORLD( - gObjectEventPic_Silicobra, + sPicTable_Silicobra, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2916,7 +2916,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(2, -1, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Sandaconda) OVERWORLD( - gObjectEventPic_Sandaconda, + sPicTable_Sandaconda, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3039,7 +3039,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(5, 14, SHADOW_SIZE_M) FOOTPRINT(Cramorant) OVERWORLD( - gObjectEventPic_Cramorant, + sPicTable_Cramorant, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3218,7 +3218,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(-1, -5, SHADOW_SIZE_S) FOOTPRINT(Arrokuda) OVERWORLD( - gObjectEventPic_Arrokuda, + sPicTable_Arrokuda, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3282,7 +3282,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(4, 5, SHADOW_SIZE_M) FOOTPRINT(Barraskewda) OVERWORLD( - gObjectEventPic_Barraskewda, + sPicTable_Barraskewda, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3346,7 +3346,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(-2, 1, SHADOW_SIZE_M) FOOTPRINT(Toxel) OVERWORLD( - gObjectEventPic_Toxel, + sPicTable_Toxel, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3411,7 +3411,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(-6, 13, SHADOW_SIZE_M) FOOTPRINT(Toxtricity) OVERWORLD( - gObjectEventPic_ToxtricityAmped, + sPicTable_ToxtricityAmped, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3528,7 +3528,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(1, 12, SHADOW_SIZE_M) FOOTPRINT(Toxtricity) OVERWORLD( - gObjectEventPic_ToxtricityLowKey, + sPicTable_ToxtricityLowKey, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3651,7 +3651,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(6, -4, SHADOW_SIZE_S) FOOTPRINT(Sizzlipede) OVERWORLD( - gObjectEventPic_Sizzlipede, + sPicTable_Sizzlipede, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3719,7 +3719,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(-3, 7, SHADOW_SIZE_M) FOOTPRINT(Centiskorch) OVERWORLD( - gObjectEventPic_Centiskorch, + sPicTable_Centiskorch, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3843,7 +3843,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(1, -2, SHADOW_SIZE_S) FOOTPRINT(Clobbopus) OVERWORLD( - gObjectEventPic_Clobbopus, + sPicTable_Clobbopus, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3906,7 +3906,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(4, 9, SHADOW_SIZE_M) FOOTPRINT(Grapploct) OVERWORLD( - gObjectEventPic_Grapploct, + sPicTable_Grapploct, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3970,7 +3970,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(3, 3, SHADOW_SIZE_S) FOOTPRINT(Sinistea) OVERWORLD( - gObjectEventPic_Sinistea, + sPicTable_Sinistea, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4035,7 +4035,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(3, 4, SHADOW_SIZE_S) FOOTPRINT(Sinistea) OVERWORLD( - gObjectEventPic_Sinistea, + sPicTable_Sinistea, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4099,7 +4099,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(0, 12, SHADOW_SIZE_S) FOOTPRINT(Polteageist) OVERWORLD( - gObjectEventPic_Polteageist, + sPicTable_Polteageist, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4163,7 +4163,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(0, 11, SHADOW_SIZE_S) FOOTPRINT(Polteageist) OVERWORLD( - gObjectEventPic_Polteageist, + sPicTable_Polteageist, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4228,7 +4228,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(0, 1, SHADOW_SIZE_M) FOOTPRINT(Hatenna) OVERWORLD( - gObjectEventPic_Hatenna, + sPicTable_Hatenna, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4291,7 +4291,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(0, 5, SHADOW_SIZE_M) FOOTPRINT(Hattrem) OVERWORLD( - gObjectEventPic_Hattrem, + sPicTable_Hattrem, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4353,7 +4353,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(6, 13, SHADOW_SIZE_S) FOOTPRINT(Hatterene) OVERWORLD( - gObjectEventPic_Hatterene, + sPicTable_Hatterene, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4477,7 +4477,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(0, 2, SHADOW_SIZE_S) FOOTPRINT(Impidimp) OVERWORLD( - gObjectEventPic_Impidimp, + sPicTable_Impidimp, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4540,7 +4540,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(0, 7, SHADOW_SIZE_M) FOOTPRINT(Morgrem) OVERWORLD( - gObjectEventPic_Morgrem, + sPicTable_Morgrem, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4603,7 +4603,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(1, 11, SHADOW_SIZE_L) FOOTPRINT(Grimmsnarl) OVERWORLD( - gObjectEventPic_Grimmsnarl, + sPicTable_Grimmsnarl, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4727,7 +4727,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(0, 6, SHADOW_SIZE_S) FOOTPRINT(Milcery) OVERWORLD( - gObjectEventPic_Milcery, + sPicTable_Milcery, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4798,7 +4798,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(0, 5, SHADOW_SIZE_S) \ FOOTPRINT(Alcremie) \ OVERWORLD( \ - gObjectEventPic_AlcremieStrawberry, /*Alcremie ##sweet*/ \ + sPicTable_AlcremieStrawberry, /*Alcremie ##sweet*/ \ SIZE_32x32, \ SHADOW_SIZE_M, \ TRACKS_FOOT, \ @@ -4968,7 +4968,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(-7, 5, SHADOW_SIZE_S) FOOTPRINT(Falinks) OVERWORLD( - gObjectEventPic_Falinks, + sPicTable_Falinks, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5031,7 +5031,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(-1, -4, SHADOW_SIZE_S) FOOTPRINT(Pincurchin) OVERWORLD( - gObjectEventPic_Pincurchin, + sPicTable_Pincurchin, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5097,7 +5097,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(-2, -7, SHADOW_SIZE_S) FOOTPRINT(Snom) OVERWORLD( - gObjectEventPic_Snom, + sPicTable_Snom, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5162,7 +5162,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(-7, 13, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Frosmoth) OVERWORLD( - gObjectEventPic_Frosmoth, + sPicTable_Frosmoth, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5226,7 +5226,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(0, 10, SHADOW_SIZE_L) FOOTPRINT(Stonjourner) OVERWORLD( - gObjectEventPic_Stonjourner, + sPicTable_Stonjourner, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5291,7 +5291,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(-1, 13, SHADOW_SIZE_S) FOOTPRINT(Eiscue) OVERWORLD( - gObjectEventPic_EiscueIce, + sPicTable_EiscueIce, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5414,7 +5414,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(2, 4, SHADOW_SIZE_S) FOOTPRINT(Indeedee) OVERWORLD( - gObjectEventPic_IndeedeeM, + sPicTable_IndeedeeM, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5477,7 +5477,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(2, 4, SHADOW_SIZE_S) FOOTPRINT(Indeedee) OVERWORLD( - gObjectEventPic_IndeedeeF, + sPicTable_IndeedeeF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5543,7 +5543,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(0, 0, SHADOW_SIZE_S) FOOTPRINT(Morpeko) OVERWORLD( - gObjectEventPic_MorpekoFullBelly, + sPicTable_MorpekoFullBelly, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5667,7 +5667,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(5, 2, SHADOW_SIZE_M) FOOTPRINT(Cufant) OVERWORLD( - gObjectEventPic_Cufant, + sPicTable_Cufant, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5731,7 +5731,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(6, 7, SHADOW_SIZE_L) FOOTPRINT(Copperajah) OVERWORLD( - gObjectEventPic_Copperajah, + sPicTable_Copperajah, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5856,7 +5856,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(-4, 10, SHADOW_SIZE_L) FOOTPRINT(Dracozolt) OVERWORLD( - gObjectEventPic_Dracozolt, + sPicTable_Dracozolt, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5919,7 +5919,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(-2, 11, SHADOW_SIZE_M) FOOTPRINT(Arctozolt) OVERWORLD( - gObjectEventPic_Arctozolt, + sPicTable_Arctozolt, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5983,7 +5983,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(2, 11, SHADOW_SIZE_M) FOOTPRINT(Dracovish) OVERWORLD( - gObjectEventPic_Dracovish, + sPicTable_Dracovish, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6047,7 +6047,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(0, 11, SHADOW_SIZE_L) FOOTPRINT(Arctovish) OVERWORLD( - gObjectEventPic_Arctovish, + sPicTable_Arctovish, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6114,7 +6114,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(2, 11, SHADOW_SIZE_L) FOOTPRINT(Duraludon) OVERWORLD( - gObjectEventPic_Duraludon, + sPicTable_Duraludon, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6240,7 +6240,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(4, 14, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Archaludon) OVERWORLD( - gObjectEventPic_Archaludon, + sPicTable_Archaludon, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6306,7 +6306,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(0, 2, SHADOW_SIZE_S) FOOTPRINT(Dreepy) OVERWORLD( - gObjectEventPic_Dreepy, + sPicTable_Dreepy, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6370,7 +6370,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(0, 9, SHADOW_SIZE_M) FOOTPRINT(Drakloak) OVERWORLD( - gObjectEventPic_Drakloak, + sPicTable_Drakloak, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6434,7 +6434,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(0, 12, SHADOW_SIZE_M) FOOTPRINT(Dragapult) OVERWORLD( - gObjectEventPic_Dragapult, + sPicTable_Dragapult, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6497,7 +6497,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(-1, 9, SHADOW_SIZE_L) FOOTPRINT(Zacian) OVERWORLD( - gObjectEventPic_ZacianHero, + sPicTable_ZacianHero, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6564,7 +6564,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(-3, 12, SHADOW_SIZE_L) FOOTPRINT(Zacian) OVERWORLD( - gObjectEventPic_ZacianCrowned, + sPicTable_ZacianCrowned, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6633,7 +6633,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(-1, 12, SHADOW_SIZE_L) FOOTPRINT(Zamazenta) OVERWORLD( - gObjectEventPic_ZamazentaHero, + sPicTable_ZamazentaHero, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6700,7 +6700,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(0, 12, SHADOW_SIZE_L) FOOTPRINT(Zamazenta) OVERWORLD( - gObjectEventPic_ZamazentaCrowned, + sPicTable_ZamazentaCrowned, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6770,7 +6770,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(0, 14, SHADOW_SIZE_L) FOOTPRINT(Eternatus) OVERWORLD( - gObjectEventPic_Eternatus, + sPicTable_Eternatus, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6895,7 +6895,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(-2, 5, SHADOW_SIZE_S) FOOTPRINT(Kubfu) OVERWORLD( - gObjectEventPic_Kubfu, + sPicTable_Kubfu, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6963,7 +6963,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(0, 14, SHADOW_SIZE_L) FOOTPRINT(Urshifu) OVERWORLD( - gObjectEventPic_Urshifu, + sPicTable_Urshifu, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -7088,7 +7088,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(4, 14, SHADOW_SIZE_M) FOOTPRINT(Urshifu) OVERWORLD( - gObjectEventPic_Urshifu, + sPicTable_Urshifu, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -7216,7 +7216,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(5, 11, SHADOW_SIZE_L) FOOTPRINT(Zarude) OVERWORLD( - gObjectEventPic_Zarude, + sPicTable_Zarude, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -7341,7 +7341,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(-3, 14, SHADOW_SIZE_S) FOOTPRINT(Regieleki) OVERWORLD( - gObjectEventPic_Regieleki, + sPicTable_Regieleki, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -7408,7 +7408,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(0, 13, SHADOW_SIZE_M) FOOTPRINT(Regidrago) OVERWORLD( - gObjectEventPic_Regidrago, + sPicTable_Regidrago, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -7473,7 +7473,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(-5, 11, SHADOW_SIZE_L) FOOTPRINT(Glastrier) OVERWORLD( - gObjectEventPic_Glastrier, + sPicTable_Glastrier, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -7539,7 +7539,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(-6, 12, SHADOW_SIZE_L) FOOTPRINT(Spectrier) OVERWORLD( - gObjectEventPic_Spectrier, + sPicTable_Spectrier, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -7605,7 +7605,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(-1, 12, SHADOW_SIZE_S) FOOTPRINT(Calyrex) OVERWORLD( - gObjectEventPic_Calyrex, + sPicTable_Calyrex, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -7672,7 +7672,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(-5, 11, SHADOW_SIZE_L) FOOTPRINT(Calyrex) OVERWORLD( - gObjectEventPic_CalyrexIce, + sPicTable_CalyrexIce, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -7739,7 +7739,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(-5, 12, SHADOW_SIZE_L) FOOTPRINT(Calyrex) OVERWORLD( - gObjectEventPic_CalyrexShadow, + sPicTable_CalyrexShadow, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -7810,7 +7810,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(-3, 19, SHADOW_SIZE_M) FOOTPRINT(Enamorus) OVERWORLD( - gObjectEventPic_EnamorusIncarnate, + sPicTable_EnamorusIncarnate, SIZE_64x64, SHADOW_SIZE_M, TRACKS_NONE, @@ -7876,7 +7876,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = SHADOW(2, 8, SHADOW_SIZE_L) FOOTPRINT(Enamorus) OVERWORLD( - gObjectEventPic_EnamorusTherian, + sPicTable_EnamorusTherian, SIZE_64x64, SHADOW_SIZE_M, TRACKS_NONE, diff --git a/src/data/pokemon/species_info/gen_9_families.h b/src/data/pokemon/species_info/gen_9_families.h index 020ec03ac0..f4f76eec33 100644 --- a/src/data/pokemon/species_info/gen_9_families.h +++ b/src/data/pokemon/species_info/gen_9_families.h @@ -54,7 +54,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(-2, 5, SHADOW_SIZE_S) FOOTPRINT(Sprigatito) OVERWORLD( - gObjectEventPic_Sprigatito, + sPicTable_Sprigatito, SIZE_32x32, SHADOW_SIZE_S, TRACKS_FOOT, @@ -118,7 +118,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(-3, 11, SHADOW_SIZE_M) FOOTPRINT(Floragato) OVERWORLD( - gObjectEventPic_Floragato, + sPicTable_Floragato, SIZE_32x32, SHADOW_SIZE_S, TRACKS_FOOT, @@ -181,7 +181,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(-3, 14, SHADOW_SIZE_S) FOOTPRINT(Meowscarada) OVERWORLD( - gObjectEventPic_Meowscarada, + sPicTable_Meowscarada, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -245,7 +245,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(-3, 5, SHADOW_SIZE_S) FOOTPRINT(Fuecoco) OVERWORLD( - gObjectEventPic_Fuecoco, + sPicTable_Fuecoco, SIZE_32x32, SHADOW_SIZE_S, TRACKS_FOOT, @@ -309,7 +309,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(2, 8, SHADOW_SIZE_M) FOOTPRINT(Crocalor) OVERWORLD( - gObjectEventPic_Crocalor, + sPicTable_Crocalor, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -372,7 +372,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(6, 7, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Skeledirge) OVERWORLD( - gObjectEventPic_Skeledirge, + sPicTable_Skeledirge, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -436,7 +436,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(0, 5, SHADOW_SIZE_S) FOOTPRINT(Quaxly) OVERWORLD( - gObjectEventPic_Quaxly, + sPicTable_Quaxly, SIZE_32x32, SHADOW_SIZE_S, TRACKS_FOOT, @@ -500,7 +500,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(1, 10, SHADOW_SIZE_S) FOOTPRINT(Quaxwell) OVERWORLD( - gObjectEventPic_Quaxwell, + sPicTable_Quaxwell, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -563,7 +563,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(-7, 13, SHADOW_SIZE_M) FOOTPRINT(Quaquaval) OVERWORLD( - gObjectEventPic_Quaquaval, + sPicTable_Quaquaval, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -627,7 +627,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(0, 1, SHADOW_SIZE_S) FOOTPRINT(Lechonk) OVERWORLD( - gObjectEventPic_Lechonk, + sPicTable_Lechonk, SIZE_32x32, SHADOW_SIZE_S, TRACKS_FOOT, @@ -691,7 +691,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(-2, 6, SHADOW_SIZE_M) FOOTPRINT(Oinkologne) OVERWORLD( - gObjectEventPic_OinkologneM, + sPicTable_OinkologneM, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -754,7 +754,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(3, 7, SHADOW_SIZE_M) FOOTPRINT(Oinkologne) OVERWORLD( - gObjectEventPic_OinkologneF, + sPicTable_OinkologneF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -819,7 +819,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(-1, 2, SHADOW_SIZE_M) FOOTPRINT(Tarountula) OVERWORLD( - gObjectEventPic_Tarountula, + sPicTable_Tarountula, SIZE_32x32, SHADOW_SIZE_S, TRACKS_BUG, @@ -883,7 +883,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(6, 8, SHADOW_SIZE_L) FOOTPRINT(Spidops) OVERWORLD( - gObjectEventPic_Spidops, + sPicTable_Spidops, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -947,7 +947,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(1, 3, SHADOW_SIZE_M) FOOTPRINT(Nymble) OVERWORLD( - gObjectEventPic_Nymble, + sPicTable_Nymble, SIZE_32x32, SHADOW_SIZE_S, TRACKS_BUG, @@ -1011,7 +1011,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(0, 11, SHADOW_SIZE_M) FOOTPRINT(Lokix) OVERWORLD( - gObjectEventPic_Lokix, + sPicTable_Lokix, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1075,7 +1075,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(1, 4, SHADOW_SIZE_M) FOOTPRINT(Pawmi) OVERWORLD( - gObjectEventPic_Pawmi, + sPicTable_Pawmi, SIZE_32x32, SHADOW_SIZE_S, TRACKS_FOOT, @@ -1139,7 +1139,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(-3, 10, SHADOW_SIZE_S) FOOTPRINT(Pawmo) OVERWORLD( - gObjectEventPic_Pawmo, + sPicTable_Pawmo, SIZE_32x32, SHADOW_SIZE_S, TRACKS_FOOT, @@ -1202,7 +1202,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(-1, 11, SHADOW_SIZE_M) FOOTPRINT(Pawmot) OVERWORLD( - gObjectEventPic_Pawmot, + sPicTable_Pawmot, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1266,7 +1266,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(0, -1, SHADOW_SIZE_M) FOOTPRINT(Tandemaus) OVERWORLD( - gObjectEventPic_Tandemaus, + sPicTable_Tandemaus, SIZE_32x32, SHADOW_SIZE_S, TRACKS_FOOT, @@ -1331,7 +1331,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(4, -1, SHADOW_SIZE_L) FOOTPRINT(MausholdThree) OVERWORLD( - gObjectEventPic_MausholdThree, + sPicTable_MausholdThree, SIZE_32x32, SHADOW_SIZE_S, TRACKS_FOOT, @@ -1393,7 +1393,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(0, -1, SHADOW_SIZE_L) FOOTPRINT(MausholdFour) OVERWORLD( - gObjectEventPic_MausholdFour, + sPicTable_MausholdFour, SIZE_32x32, SHADOW_SIZE_S, TRACKS_FOOT, @@ -1458,7 +1458,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(4, 0, SHADOW_SIZE_S) FOOTPRINT(Fidough) OVERWORLD( - gObjectEventPic_Fidough, + sPicTable_Fidough, SIZE_32x32, SHADOW_SIZE_S, TRACKS_FOOT, @@ -1522,7 +1522,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(-1, 7, SHADOW_SIZE_L) FOOTPRINT(Dachsbun) OVERWORLD( - gObjectEventPic_Dachsbun, + sPicTable_Dachsbun, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1586,7 +1586,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(-1, -2, SHADOW_SIZE_S) FOOTPRINT(Smoliv) OVERWORLD( - gObjectEventPic_Smoliv, + sPicTable_Smoliv, SIZE_32x32, SHADOW_SIZE_S, TRACKS_FOOT, @@ -1650,7 +1650,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(1, 9, SHADOW_SIZE_M) FOOTPRINT(Dolliv) OVERWORLD( - gObjectEventPic_Dolliv, + sPicTable_Dolliv, SIZE_32x32, SHADOW_SIZE_S, TRACKS_FOOT, @@ -1713,7 +1713,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(1, 13, SHADOW_SIZE_L) FOOTPRINT(Arboliva) OVERWORLD( - gObjectEventPic_Arboliva, + sPicTable_Arboliva, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -1777,7 +1777,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(-6, 9, SHADOW_SIZE_M) FOOTPRINT(Squawkabilly) OVERWORLD( - gObjectEventPic_SquawkabillyGreen, + sPicTable_SquawkabillyGreen, SIZE_32x32, SHADOW_SIZE_S, TRACKS_NONE, @@ -1841,7 +1841,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(-6, 9, SHADOW_SIZE_M) FOOTPRINT(Squawkabilly) OVERWORLD( - gObjectEventPic_SquawkabillyBlue, + sPicTable_SquawkabillyBlue, SIZE_32x32, SHADOW_SIZE_S, TRACKS_NONE, @@ -1905,7 +1905,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(-6, 9, SHADOW_SIZE_M) FOOTPRINT(Squawkabilly) OVERWORLD( - gObjectEventPic_SquawkabillyYellow, + sPicTable_SquawkabillyYellow, SIZE_32x32, SHADOW_SIZE_S, TRACKS_NONE, @@ -1969,7 +1969,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(-6, 9, SHADOW_SIZE_M) FOOTPRINT(Squawkabilly) OVERWORLD( - gObjectEventPic_SquawkabillyWhite, + sPicTable_SquawkabillyWhite, SIZE_32x32, SHADOW_SIZE_S, TRACKS_NONE, @@ -2035,7 +2035,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(-1, 5, SHADOW_SIZE_S) FOOTPRINT(Nacli) OVERWORLD( - gObjectEventPic_Nacli, + sPicTable_Nacli, SIZE_32x32, SHADOW_SIZE_S, TRACKS_FOOT, @@ -2099,7 +2099,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(0, 5, SHADOW_SIZE_L) FOOTPRINT(Naclstack) OVERWORLD( - gObjectEventPic_Naclstack, + sPicTable_Naclstack, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2162,7 +2162,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(0, 13, SHADOW_SIZE_L) FOOTPRINT(Garganacl) OVERWORLD( - gObjectEventPic_Garganacl, + sPicTable_Garganacl, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2226,7 +2226,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(-1, 5, SHADOW_SIZE_S) FOOTPRINT(Charcadet) OVERWORLD( - gObjectEventPic_Charcadet, + sPicTable_Charcadet, SIZE_32x32, SHADOW_SIZE_S, TRACKS_FOOT, @@ -2291,7 +2291,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(0, 14, SHADOW_SIZE_L) FOOTPRINT(Armarouge) OVERWORLD( - gObjectEventPic_Armarouge, + sPicTable_Armarouge, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2353,7 +2353,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(9, 14, SHADOW_SIZE_L) FOOTPRINT(Ceruledge) OVERWORLD( - gObjectEventPic_Ceruledge, + sPicTable_Ceruledge, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2418,7 +2418,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(0, 19, SHADOW_SIZE_S) FOOTPRINT(Tadbulb) OVERWORLD( - gObjectEventPic_Tadbulb, + sPicTable_Tadbulb, SIZE_32x32, SHADOW_SIZE_S, TRACKS_NONE, @@ -2482,7 +2482,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(0, 7, SHADOW_SIZE_M) FOOTPRINT(Bellibolt) OVERWORLD( - gObjectEventPic_Bellibolt, + sPicTable_Bellibolt, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2546,7 +2546,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(-3, 0, SHADOW_SIZE_S) FOOTPRINT(Wattrel) OVERWORLD( - gObjectEventPic_Wattrel, + sPicTable_Wattrel, SIZE_32x32, SHADOW_SIZE_S, TRACKS_NONE, @@ -2610,7 +2610,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(-6, 6, SHADOW_SIZE_M) FOOTPRINT(Kilowattrel) OVERWORLD( - gObjectEventPic_Kilowattrel, + sPicTable_Kilowattrel, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, @@ -2674,7 +2674,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(2, 5, SHADOW_SIZE_L) FOOTPRINT(Maschiff) OVERWORLD( - gObjectEventPic_Maschiff, + sPicTable_Maschiff, SIZE_32x32, SHADOW_SIZE_S, TRACKS_FOOT, @@ -2738,7 +2738,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(1, 5, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Mabosstiff) OVERWORLD( - gObjectEventPic_Mabosstiff, + sPicTable_Mabosstiff, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2802,7 +2802,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(0, -6, SHADOW_SIZE_S) FOOTPRINT(Shroodle) OVERWORLD( - gObjectEventPic_Shroodle, + sPicTable_Shroodle, SIZE_32x32, SHADOW_SIZE_S, TRACKS_BUG, @@ -2866,7 +2866,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(-2, 5, SHADOW_SIZE_S) FOOTPRINT(Grafaiai) OVERWORLD( - gObjectEventPic_Grafaiai, + sPicTable_Grafaiai, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -2930,7 +2930,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(2, 0, SHADOW_SIZE_S) FOOTPRINT(Bramblin) OVERWORLD( - gObjectEventPic_Bramblin, + sPicTable_Bramblin, SIZE_32x32, SHADOW_SIZE_S, TRACKS_NONE, @@ -2994,7 +2994,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(0, 6, SHADOW_SIZE_M) FOOTPRINT(Brambleghast) OVERWORLD( - gObjectEventPic_Brambleghast, + sPicTable_Brambleghast, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, @@ -3060,7 +3060,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(-2, 10, SHADOW_SIZE_M) FOOTPRINT(Toedscool) OVERWORLD( - gObjectEventPic_Toedscool, + sPicTable_Toedscool, SIZE_32x32, SHADOW_SIZE_S, TRACKS_FOOT, @@ -3126,7 +3126,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(2, 8, SHADOW_SIZE_L) FOOTPRINT(Toedscruel) OVERWORLD( - gObjectEventPic_Toedscruel, + sPicTable_Toedscruel, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3190,7 +3190,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(0, 0, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Klawf) OVERWORLD( - gObjectEventPic_Klawf, + sPicTable_Klawf, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3255,7 +3255,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(2, 0, SHADOW_SIZE_S) FOOTPRINT(Capsakid) OVERWORLD( - gObjectEventPic_Capsakid, + sPicTable_Capsakid, SIZE_32x32, SHADOW_SIZE_S, TRACKS_FOOT, @@ -3319,7 +3319,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(6, 11, SHADOW_SIZE_M) FOOTPRINT(Scovillain) OVERWORLD( - gObjectEventPic_Scovillain, + sPicTable_Scovillain, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3383,7 +3383,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(4, -3, SHADOW_SIZE_L) FOOTPRINT(Rellor) OVERWORLD( - gObjectEventPic_Rellor, + sPicTable_Rellor, SIZE_32x32, SHADOW_SIZE_S, TRACKS_BUG, @@ -3447,7 +3447,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(-2, 14, SHADOW_SIZE_M) FOOTPRINT(Rabsca) OVERWORLD( - gObjectEventPic_Rabsca, + sPicTable_Rabsca, SIZE_32x32, SHADOW_SIZE_S, TRACKS_NONE, @@ -3511,7 +3511,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(-2, 2, SHADOW_SIZE_S) FOOTPRINT(Flittle) OVERWORLD( - gObjectEventPic_Flittle, + sPicTable_Flittle, SIZE_32x32, SHADOW_SIZE_S, TRACKS_NONE, @@ -3575,7 +3575,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(-5, 10, SHADOW_SIZE_M) FOOTPRINT(Espathra) OVERWORLD( - gObjectEventPic_Espathra, + sPicTable_Espathra, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3639,7 +3639,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(-3, 1, SHADOW_SIZE_S) FOOTPRINT(Tinkatink) OVERWORLD( - gObjectEventPic_Tinkatink, + sPicTable_Tinkatink, SIZE_32x32, SHADOW_SIZE_S, TRACKS_FOOT, @@ -3703,7 +3703,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(-4, 5, SHADOW_SIZE_L) FOOTPRINT(Tinkatuff) OVERWORLD( - gObjectEventPic_Tinkatuff, + sPicTable_Tinkatuff, SIZE_32x32, SHADOW_SIZE_S, TRACKS_FOOT, @@ -3766,7 +3766,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(-5, 15, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Tinkaton) OVERWORLD( - gObjectEventPic_Tinkaton, + sPicTable_Tinkaton, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -3829,7 +3829,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = NO_SHADOW FOOTPRINT(Wiglett) OVERWORLD( - gObjectEventPic_Wiglett, + sPicTable_Wiglett, SIZE_32x32, SHADOW_SIZE_S, TRACKS_SLITHER, @@ -3892,7 +3892,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = NO_SHADOW FOOTPRINT(Wugtrio) OVERWORLD( - gObjectEventPic_Wugtrio, + sPicTable_Wugtrio, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SLITHER, @@ -3957,7 +3957,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(1, 18, SHADOW_SIZE_M) FOOTPRINT(Bombirdier) OVERWORLD( - gObjectEventPic_Bombirdier, + sPicTable_Bombirdier, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, @@ -4021,7 +4021,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(0, 7, SHADOW_SIZE_S) FOOTPRINT(Finizen) OVERWORLD( - gObjectEventPic_Finizen, + sPicTable_Finizen, SIZE_32x32, SHADOW_SIZE_S, TRACKS_NONE, @@ -4085,7 +4085,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(0, 7, SHADOW_SIZE_S) FOOTPRINT(Palafin) OVERWORLD( - gObjectEventPic_PalafinZero, + sPicTable_PalafinZero, SIZE_32x32, SHADOW_SIZE_S, TRACKS_NONE, @@ -4149,7 +4149,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(1, 13, SHADOW_SIZE_M) FOOTPRINT(Palafin) OVERWORLD( - gObjectEventPic_PalafinHero, + sPicTable_PalafinHero, SIZE_32x32, SHADOW_SIZE_S, TRACKS_FOOT, @@ -4215,7 +4215,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(0, 0, SHADOW_SIZE_M) FOOTPRINT(Varoom) OVERWORLD( - gObjectEventPic_Varoom, + sPicTable_Varoom, SIZE_32x32, SHADOW_SIZE_S, TRACKS_NONE, @@ -4279,7 +4279,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(0, 7, SHADOW_SIZE_L) FOOTPRINT(Revavroom) OVERWORLD( - gObjectEventPic_Revavroom, + sPicTable_Revavroom, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, @@ -4343,7 +4343,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(-1, 9, SHADOW_SIZE_M) FOOTPRINT(Cyclizar) OVERWORLD( - gObjectEventPic_Cyclizar, + sPicTable_Cyclizar, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4408,7 +4408,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(6, 10, SHADOW_SIZE_L) FOOTPRINT(Orthworm) OVERWORLD( - gObjectEventPic_Orthworm, + sPicTable_Orthworm, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SLITHER, @@ -4474,7 +4474,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(-2, 6, SHADOW_SIZE_S) FOOTPRINT(Glimmet) OVERWORLD( - gObjectEventPic_Glimmet, + sPicTable_Glimmet, SIZE_32x32, SHADOW_SIZE_S, TRACKS_NONE, @@ -4539,7 +4539,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(-3, 17, SHADOW_SIZE_M) FOOTPRINT(Glimmora) OVERWORLD( - gObjectEventPic_Glimmora, + sPicTable_Glimmora, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, @@ -4603,7 +4603,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(3, 2, SHADOW_SIZE_M) FOOTPRINT(Greavard) OVERWORLD( - gObjectEventPic_Greavard, + sPicTable_Greavard, SIZE_32x32, SHADOW_SIZE_S, TRACKS_FOOT, @@ -4667,7 +4667,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(4, 6, SHADOW_SIZE_L) FOOTPRINT(Houndstone) OVERWORLD( - gObjectEventPic_Houndstone, + sPicTable_Houndstone, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4731,7 +4731,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(0, 12, SHADOW_SIZE_S) FOOTPRINT(Flamigo) OVERWORLD( - gObjectEventPic_Flamigo, + sPicTable_Flamigo, SIZE_32x32, SHADOW_SIZE_S, TRACKS_FOOT, @@ -4796,7 +4796,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(2, 0, SHADOW_SIZE_M) FOOTPRINT(Cetoddle) OVERWORLD( - gObjectEventPic_Cetoddle, + sPicTable_Cetoddle, SIZE_32x32, SHADOW_SIZE_S, TRACKS_FOOT, @@ -4860,7 +4860,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(-1, 10, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Cetitan) OVERWORLD( - gObjectEventPic_Cetitan, + sPicTable_Cetitan, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -4925,7 +4925,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(0, 5, SHADOW_SIZE_M) FOOTPRINT(Veluza) OVERWORLD( - gObjectEventPic_Veluza, + sPicTable_Veluza, SIZE_32x32, SHADOW_SIZE_S, TRACKS_NONE, @@ -4991,7 +4991,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(-1, 8, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Dondozo) OVERWORLD( - gObjectEventPic_Dondozo, + sPicTable_Dondozo, SIZE_64x64, SHADOW_SIZE_L, TRACKS_NONE, @@ -5056,7 +5056,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(-2, -1, SHADOW_SIZE_S) FOOTPRINT(Tatsugiri) OVERWORLD( - gObjectEventPic_TatsugiriCurly, + sPicTable_TatsugiriCurly, SIZE_32x32, SHADOW_SIZE_S, TRACKS_SLITHER, @@ -5119,7 +5119,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(-2, -1, SHADOW_SIZE_S) FOOTPRINT(Tatsugiri) OVERWORLD( - gObjectEventPic_TatsugiriDroopy, + sPicTable_TatsugiriDroopy, SIZE_32x32, SHADOW_SIZE_S, TRACKS_SLITHER, @@ -5182,7 +5182,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(-2, -1, SHADOW_SIZE_S) FOOTPRINT(Tatsugiri) OVERWORLD( - gObjectEventPic_TatsugiriStretchy, + sPicTable_TatsugiriStretchy, SIZE_32x32, SHADOW_SIZE_S, TRACKS_SLITHER, @@ -5249,7 +5249,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(3, 6, SHADOW_SIZE_L) FOOTPRINT(GreatTusk) OVERWORLD( - gObjectEventPic_GreatTusk, + sPicTable_GreatTusk, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5315,7 +5315,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(0, 3, SHADOW_SIZE_L) FOOTPRINT(ScreamTail) OVERWORLD( - gObjectEventPic_ScreamTail, + sPicTable_ScreamTail, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5381,7 +5381,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(2, 7, SHADOW_SIZE_L) FOOTPRINT(BruteBonnet) OVERWORLD( - gObjectEventPic_BruteBonnet, + sPicTable_BruteBonnet, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5450,7 +5450,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(-2, 20, SHADOW_SIZE_S) FOOTPRINT(FlutterMane) OVERWORLD( - gObjectEventPic_FlutterMane, + sPicTable_FlutterMane, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, @@ -5515,7 +5515,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(-5, 13, SHADOW_SIZE_M) FOOTPRINT(SlitherWing) OVERWORLD( - gObjectEventPic_SlitherWing, + sPicTable_SlitherWing, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SLITHER, @@ -5581,7 +5581,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(2, 13, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(SandyShocks) OVERWORLD( - gObjectEventPic_SandyShocks, + sPicTable_SandyShocks, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5647,7 +5647,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(4, 3, SHADOW_SIZE_L) FOOTPRINT(IronTreads) OVERWORLD( - gObjectEventPic_IronTreads, + sPicTable_IronTreads, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5713,7 +5713,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(-1, 6, SHADOW_SIZE_M) FOOTPRINT(IronBundle) OVERWORLD( - gObjectEventPic_IronBundle, + sPicTable_IronBundle, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5779,7 +5779,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(-2, 8, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(IronHands) OVERWORLD( - gObjectEventPic_IronHands, + sPicTable_IronHands, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5846,7 +5846,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(0, 15, SHADOW_SIZE_M) FOOTPRINT(IronJugulis) OVERWORLD( - gObjectEventPic_IronJugulis, + sPicTable_IronJugulis, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, @@ -5913,7 +5913,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(-4, 14, SHADOW_SIZE_M) FOOTPRINT(IronMoth) OVERWORLD( - gObjectEventPic_IronMoth, + sPicTable_IronMoth, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -5979,7 +5979,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(-9, 12, SHADOW_SIZE_L) FOOTPRINT(IronThorns) OVERWORLD( - gObjectEventPic_IronThorns, + sPicTable_IronThorns, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6044,7 +6044,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(0, 7, SHADOW_SIZE_S) FOOTPRINT(Frigibax) OVERWORLD( - gObjectEventPic_Frigibax, + sPicTable_Frigibax, SIZE_32x32, SHADOW_SIZE_S, TRACKS_FOOT, @@ -6108,7 +6108,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(4, 8, SHADOW_SIZE_M) FOOTPRINT(Arctibax) OVERWORLD( - gObjectEventPic_Arctibax, + sPicTable_Arctibax, SIZE_32x32, SHADOW_SIZE_S, TRACKS_FOOT, @@ -6171,7 +6171,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(5, 12, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Baxcalibur) OVERWORLD( - gObjectEventPic_Baxcalibur, + sPicTable_Baxcalibur, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6235,7 +6235,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(0, 7, SHADOW_SIZE_M) FOOTPRINT(GimmighoulChest) OVERWORLD( - gObjectEventPic_GimmighoulChest, + sPicTable_GimmighoulChest, SIZE_32x32, SHADOW_SIZE_S, TRACKS_NONE, @@ -6354,7 +6354,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(3, 13, SHADOW_SIZE_M) FOOTPRINT(Gholdengo) OVERWORLD( - gObjectEventPic_Gholdengo, + sPicTable_Gholdengo, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, @@ -6418,7 +6418,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(0, 11, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(WoChien) OVERWORLD( - gObjectEventPic_WoChien, + sPicTable_WoChien, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SLITHER, @@ -6484,7 +6484,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(-4, 8, SHADOW_SIZE_L) FOOTPRINT(ChienPao) OVERWORLD( - gObjectEventPic_ChienPao, + sPicTable_ChienPao, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6550,7 +6550,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(12, 13, SHADOW_SIZE_L) FOOTPRINT(TingLu) OVERWORLD( - gObjectEventPic_TingLu, + sPicTable_TingLu, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6617,7 +6617,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(0, 16, SHADOW_SIZE_S) FOOTPRINT(ChiYu) OVERWORLD( - gObjectEventPic_ChiYu, + sPicTable_ChiYu, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, @@ -6685,7 +6685,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(3, 9, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(RoaringMoon) OVERWORLD( - gObjectEventPic_RoaringMoon, + sPicTable_RoaringMoon, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6750,7 +6750,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(2, 14, SHADOW_SIZE_L) FOOTPRINT(IronValiant) OVERWORLD( - gObjectEventPic_IronValiant, + sPicTable_IronValiant, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -6815,7 +6815,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(-3, 13, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Koraidon) OVERWORLD( - gObjectEventPic_Koraidon, + sPicTable_Koraidon, SIZE_64x64, SHADOW_SIZE_M, TRACKS_NONE, @@ -6882,7 +6882,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(10, 14, SHADOW_SIZE_L) FOOTPRINT(Miraidon) OVERWORLD( - gObjectEventPic_Miraidon, + sPicTable_Miraidon, SIZE_64x64, SHADOW_SIZE_M, TRACKS_NONE, @@ -6949,7 +6949,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(2, 13, SHADOW_SIZE_L) FOOTPRINT(WalkingWake) OVERWORLD( - gObjectEventPic_WalkingWake, + sPicTable_WalkingWake, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -7014,7 +7014,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(2, 11, SHADOW_SIZE_M) FOOTPRINT(IronLeaves) OVERWORLD( - gObjectEventPic_IronLeaves, + sPicTable_IronLeaves, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -7080,7 +7080,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(-1, 14, SHADOW_SIZE_S) FOOTPRINT(Poltchageist) OVERWORLD( - gObjectEventPic_Poltchageist, + sPicTable_Poltchageist, SIZE_32x32, SHADOW_SIZE_S, TRACKS_NONE, @@ -7144,7 +7144,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(-1, 14, SHADOW_SIZE_S) FOOTPRINT(Poltchageist) OVERWORLD( - gObjectEventPic_Poltchageist, + sPicTable_Poltchageist, SIZE_32x32, SHADOW_SIZE_S, TRACKS_NONE, @@ -7209,7 +7209,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(0, 11, SHADOW_SIZE_M) FOOTPRINT(Sinistcha) OVERWORLD( - gObjectEventPic_Sinistcha, + sPicTable_Sinistcha, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, @@ -7272,7 +7272,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(0, 11, SHADOW_SIZE_M) FOOTPRINT(Sinistcha) OVERWORLD( - gObjectEventPic_Sinistcha, + sPicTable_Sinistcha, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE, @@ -7337,7 +7337,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(-1, 11, SHADOW_SIZE_L) FOOTPRINT(Okidogi) OVERWORLD( - gObjectEventPic_Okidogi, + sPicTable_Okidogi, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -7403,7 +7403,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(1, 8, SHADOW_SIZE_S) FOOTPRINT(Munkidori) OVERWORLD( - gObjectEventPic_Munkidori, + sPicTable_Munkidori, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -7469,7 +7469,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(-3, 10, SHADOW_SIZE_M) FOOTPRINT(Fezandipiti) OVERWORLD( - gObjectEventPic_Fezandipiti, + sPicTable_Fezandipiti, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -7485,68 +7485,68 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = #endif //P_FAMILY_FEZANDIPITI #if P_FAMILY_OGERPON -#define OGERPON_SPECIES_INFO(Form1, Form2, type, ability, color, frontYOffset, backYOffset, iconpalette, isTeraform) \ - { \ - .baseHP = 80, \ - .baseAttack = 120, \ - .baseDefense = 84, \ - .baseSpeed = 110, \ - .baseSpAttack = 60, \ - .baseSpDefense = 96, \ - .types = MON_TYPES(TYPE_GRASS, type), \ - .forceTeraType = type, \ - .catchRate = 5, \ - .expYield = 275, \ - .evYield_Attack = 3, \ - .genderRatio = MON_FEMALE, \ - .eggCycles = 10, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), \ - .abilities = { ability, ABILITY_NONE }, \ - .bodyColor = color, \ - .speciesName = _("Ogerpon"), \ - .cryId = CRY_OGERPON, \ - .natDexNum = NATIONAL_DEX_OGERPON, \ - .categoryName = _("Mask"), \ - .height = 12, \ - .weight = 398, \ - .description = gOgerpon##Form1##MaskPokedexText, \ - .pokemonScale = 356, \ - .pokemonOffset = 17, \ - .trainerScale = 256, \ - .trainerOffset = 0, \ - .frontPic = gMonFrontPic_Ogerpon##Form2, \ - .frontPicSize = MON_COORDS_SIZE(64, 64), \ - .frontPicYOffset = frontYOffset, \ - .frontAnimFrames = sAnims_SingleFramePlaceHolder, \ - /*.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,*/ \ - .backPic = gMonBackPic_Ogerpon##Form2, \ - .backPicSize = MON_COORDS_SIZE(64, 64), \ - .backPicYOffset = backYOffset, \ - /*.backAnimId = BACK_ANIM_NONE,*/ \ - .palette = gMonPalette_Ogerpon##Form2, \ - .shinyPalette = gMonShinyPalette_Ogerpon##Form2, \ - .iconSprite = gMonIcon_Ogerpon##Form1, \ - .iconPalIndex = iconpalette, \ - SHADOW(7, 13, SHADOW_SIZE_L) \ - FOOTPRINT(Ogerpon) \ - OVERWORLD( \ - gObjectEventPic_Ogerpon##Form2, \ - SIZE_32x32, \ - SHADOW_SIZE_M, \ - TRACKS_FOOT, \ - sAnimTable_Following, \ - gOverworldPalette_Ogerpon##Form2, \ - gShinyOverworldPalette_Ogerpon##Form2 \ - ) \ - .levelUpLearnset = sOgerponLevelUpLearnset, \ - .teachableLearnset = sOgerponTeachableLearnset, \ - .formSpeciesIdTable = sOgerponFormSpeciesIdTable, \ - .formChangeTable = sOgerponFormChangeTable, \ - .isLegendary = TRUE, \ - .isTeraForm = isTeraform, \ - .perfectIVCount = LEGENDARY_PERFECT_IV_COUNT, \ +#define OGERPON_SPECIES_INFO(Form1, Form2, type, ability, color, frontYOffset, backYOffset, iconpalette, isTeraform) \ + { \ + .baseHP = 80, \ + .baseAttack = 120, \ + .baseDefense = 84, \ + .baseSpeed = 110, \ + .baseSpAttack = 60, \ + .baseSpDefense = 96, \ + .types = MON_TYPES(TYPE_GRASS, type), \ + .forceTeraType = type, \ + .catchRate = 5, \ + .expYield = 275, \ + .evYield_Attack = 3, \ + .genderRatio = MON_FEMALE, \ + .eggCycles = 10, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_SLOW, \ + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), \ + .abilities = { ability, ABILITY_NONE }, \ + .bodyColor = color, \ + .speciesName = _("Ogerpon"), \ + .cryId = CRY_OGERPON, \ + .natDexNum = NATIONAL_DEX_OGERPON, \ + .categoryName = _("Mask"), \ + .height = 12, \ + .weight = 398, \ + .description = gOgerpon##Form1##MaskPokedexText, \ + .pokemonScale = 356, \ + .pokemonOffset = 17, \ + .trainerScale = 256, \ + .trainerOffset = 0, \ + .frontPic = gMonFrontPic_Ogerpon##Form2, \ + .frontPicSize = MON_COORDS_SIZE(64, 64), \ + .frontPicYOffset = frontYOffset, \ + .frontAnimFrames = sAnims_SingleFramePlaceHolder, \ + /*.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,*/ \ + .backPic = gMonBackPic_Ogerpon##Form2, \ + .backPicSize = MON_COORDS_SIZE(64, 64), \ + .backPicYOffset = backYOffset, \ + /*.backAnimId = BACK_ANIM_NONE,*/ \ + .palette = gMonPalette_Ogerpon##Form2, \ + .shinyPalette = gMonShinyPalette_Ogerpon##Form2, \ + .iconSprite = gMonIcon_Ogerpon##Form1, \ + .iconPalIndex = iconpalette, \ + SHADOW(7, 13, SHADOW_SIZE_L) \ + FOOTPRINT(Ogerpon) \ + OVERWORLD( \ + sPicTable_Ogerpon##Form2, \ + SIZE_32x32, \ + SHADOW_SIZE_M, \ + TRACKS_FOOT, \ + sAnimTable_Following, \ + gOverworldPalette_Ogerpon##Form2, \ + gShinyOverworldPalette_Ogerpon##Form2 \ + ) \ + .levelUpLearnset = sOgerponLevelUpLearnset, \ + .teachableLearnset = sOgerponTeachableLearnset, \ + .formSpeciesIdTable = sOgerponFormSpeciesIdTable, \ + .formChangeTable = sOgerponFormChangeTable, \ + .isLegendary = TRUE, \ + .isTeraForm = isTeraform, \ + .perfectIVCount = LEGENDARY_PERFECT_IV_COUNT, \ } [SPECIES_OGERPON_TEAL] = OGERPON_SPECIES_INFO(Teal, Teal, TYPE_GRASS, ABILITY_DEFIANT, BODY_COLOR_GREEN, 1, 7, 1, FALSE), @@ -7614,7 +7614,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(-1, 6, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(GougingFire) OVERWORLD( - gObjectEventPic_GougingFire, + sPicTable_GougingFire, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -7680,7 +7680,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(4, 14, SHADOW_SIZE_L) FOOTPRINT(RagingBolt) OVERWORLD( - gObjectEventPic_RagingBolt, + sPicTable_RagingBolt, SIZE_64x64, SHADOW_SIZE_M, TRACKS_FOOT, @@ -7745,7 +7745,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(4, 7, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(IronBoulder) OVERWORLD( - gObjectEventPic_IronBoulder, + sPicTable_IronBoulder, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -7811,7 +7811,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(0, 14, SHADOW_SIZE_L) FOOTPRINT(IronCrown) OVERWORLD( - gObjectEventPic_IronCrown, + sPicTable_IronCrown, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -7878,7 +7878,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(3, 13, SHADOW_SIZE_L) FOOTPRINT(TerapagosNormal) OVERWORLD( - gObjectEventPic_TerapagosNormal, + sPicTable_TerapagosNormal, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -7948,7 +7948,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(-4, 4, SHADOW_SIZE_L) FOOTPRINT(TerapagosTerastal) OVERWORLD( - gObjectEventPic_TerapagosTerastal, + sPicTable_TerapagosTerastal, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, @@ -8077,7 +8077,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = SHADOW(2, 1, SHADOW_SIZE_L) FOOTPRINT(Pecharunt) OVERWORLD( - gObjectEventPic_Pecharunt, + sPicTable_Pecharunt, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT, diff --git a/src/pokemon.c b/src/pokemon.c index 38bbda8c11..2483d636a3 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -37,7 +37,6 @@ #include "recorded_battle.h" #include "rtc.h" #include "sound.h" -#include "sprite.h" #include "string_util.h" #include "strings.h" #include "task.h" @@ -707,6 +706,7 @@ const struct NatureInfo gNaturesInfo[NUM_NATURES] = #include "data/pokemon/form_species_tables.h" #include "data/pokemon/form_change_tables.h" #include "data/pokemon/form_change_table_pointers.h" +#include "data/object_events/object_event_pic_tables_followers.h" #include "data/pokemon/species_info.h" From d695c74e39365da6e42fa9e90d7c02feff0b9f64 Mon Sep 17 00:00:00 2001 From: Alex <93446519+AlexOn1ine@users.noreply.github.com> Date: Wed, 19 Feb 2025 21:50:03 +0100 Subject: [PATCH 42/73] Fixes inconsistency for Kings rock. (#6302) --- src/battle_util.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/battle_util.c b/src/battle_util.c index 4dc362cb3a..9220513dcf 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -8145,9 +8145,7 @@ u32 ItemBattleEffects(enum ItemCaseId caseID, u32 battler, bool32 moveTurn) atkHoldEffectParam *= 2; if (gSideStatuses[GetBattlerSide(battler)] & SIDE_STATUS_RAINBOW && gCurrentMove != MOVE_SECRET_POWER) atkHoldEffectParam *= 2; - if (gBattleStruct->moveDamage[battler] != 0 // Need to have done damage - && !(gBattleStruct->moveResultFlags[gBattlerTarget] & MOVE_RESULT_NO_EFFECT) - && IsBattlerTurnDamaged(gBattlerTarget) + if (IsBattlerTurnDamaged(gBattlerTarget) && !MoveIgnoresKingsRock(gCurrentMove) && gBattleMons[gBattlerTarget].hp && RandomPercentage(RNG_HOLD_EFFECT_FLINCH, atkHoldEffectParam) From 750098d5c91955ac0a4c24191543207ee582d11c Mon Sep 17 00:00:00 2001 From: Alex <93446519+AlexOn1ine@users.noreply.github.com> Date: Thu, 20 Feb 2025 10:14:54 +0100 Subject: [PATCH 43/73] Fixes Shell Bell for Spread Moves (#6303) --- src/battle_util.c | 2 +- test/battle/hold_effect/shell_bell.c | 91 ++++++++++++++++++++++++++++ 2 files changed, 92 insertions(+), 1 deletion(-) diff --git a/src/battle_util.c b/src/battle_util.c index 9220513dcf..3fadae9c00 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -8179,7 +8179,7 @@ u32 ItemBattleEffects(enum ItemCaseId caseID, u32 battler, bool32 moveTurn) { case HOLD_EFFECT_SHELL_BELL: if (gBattleScripting.savedDmg > 0 - && !(gBattleStruct->moveResultFlags[battler] & MOVE_RESULT_NO_EFFECT) + && !(gBattleStruct->moveResultFlags[gBattlerTarget] & MOVE_RESULT_NO_EFFECT) && gBattlerAttacker != gBattlerTarget && !IsBattlerAtMaxHp(gBattlerAttacker) && IsBattlerAlive(gBattlerAttacker) diff --git a/test/battle/hold_effect/shell_bell.c b/test/battle/hold_effect/shell_bell.c index b0ed83d540..f669c55081 100644 --- a/test/battle/hold_effect/shell_bell.c +++ b/test/battle/hold_effect/shell_bell.c @@ -198,5 +198,96 @@ SINGLE_BATTLE_TEST("Shell Bell does not activate on Future Sight if the original } } +DOUBLE_BATTLE_TEST("Shell Bell heals accumulated damage for spread moves") +{ + s16 opponentLeftDamage; + s16 opponentRightDamage; + s16 playerRightDamage; + s16 shellBellHeal; + + const u16 maxHp = 200; + const u16 initHp = 1; + GIVEN { + ASSUME(gMovesInfo[MOVE_DISCHARGE].target == MOVE_TARGET_FOES_AND_ALLY); + PLAYER(SPECIES_ARIADOS) { MaxHP(maxHp); HP(initHp); Item(ITEM_SHELL_BELL); } + PLAYER(SPECIES_WOBBUFFET) {} + OPPONENT(SPECIES_GYARADOS) {} + OPPONENT(SPECIES_CHANSEY) {} + } WHEN { + TURN { + MOVE(playerLeft, MOVE_DISCHARGE); + } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_DISCHARGE, playerLeft); + HP_BAR(opponentLeft, captureDamage: &opponentLeftDamage); + HP_BAR(playerRight, captureDamage: &playerRightDamage); + HP_BAR(opponentRight, captureDamage: &opponentRightDamage); + + HP_BAR(playerLeft, captureDamage: &shellBellHeal); + } THEN { + const s16 totalDamage = opponentLeftDamage + + playerRightDamage + opponentRightDamage; + EXPECT_EQ(shellBellHeal, -totalDamage / 8); + EXPECT_EQ(playerLeft->hp, initHp + (totalDamage / 8)); + } +} + +SINGLE_BATTLE_TEST("Shell Bell restores 1/8 HP at move end, one strike") +{ + const u16 maxHp = 200; + u16 hp, opponentHp; + u16 hpGainFromDamage, hpGainActual; + + PARAMETRIZE { hp = maxHp; opponentHp = maxHp; } + PARAMETRIZE { hp = maxHp - 1; opponentHp = maxHp; } + PARAMETRIZE { hp = maxHp / 2; opponentHp = maxHp; } + PARAMETRIZE { hp = maxHp; opponentHp = 24; } // dragon rage only does 24 dmg, only heal 3 HP instead of 5 + PARAMETRIZE { hp = maxHp - 1; opponentHp = 24; } // dragon rage only does 24 dmg, only heal 3 HP instead of 5 + PARAMETRIZE { hp = maxHp / 2; opponentHp = 24; } // dragon rage only does 24 dmg, only heal 3 HP instead of 5 + PARAMETRIZE { hp = maxHp; opponentHp = 1; } + PARAMETRIZE { hp = maxHp - 1; opponentHp = 1; } + PARAMETRIZE { hp = maxHp / 2; opponentHp = 1; } + + hpGainFromDamage = max(1, min(40, opponentHp) / 8); + hpGainActual = min(maxHp - hp, hpGainFromDamage); + + GIVEN { + ASSUME(GetMoveEffect(MOVE_DRAGON_RAGE) == EFFECT_FIXED_DAMAGE_ARG); + ASSUME(GetMoveFixedDamage(MOVE_DRAGON_RAGE) == 40); + PLAYER(SPECIES_WOBBUFFET) { MaxHP(maxHp); HP(hp); Item(ITEM_SHELL_BELL); } + OPPONENT(SPECIES_WOBBUFFET) { MaxHP(maxHp); HP(opponentHp); } + } WHEN { + TURN { MOVE(player, MOVE_DRAGON_RAGE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_DRAGON_RAGE, player); + HP_BAR(opponent); + if (hp < maxHp) { + HP_BAR(player, damage: -hpGainActual); + } else { + NOT HP_BAR(player); + } + } THEN { + EXPECT_EQ(player->hp, hp + hpGainActual); + } +} + +SINGLE_BATTLE_TEST("Shell Bell recovers only 1 damage if the move only did 1 damage") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { HP(1); Item(ITEM_SHELL_BELL); } + OPPONENT(SPECIES_WOBBUFFET) { HP(1); }; + } WHEN { + TURN { MOVE(player, MOVE_DRAGON_RAGE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_DRAGON_RAGE, player); + HP_BAR(opponent); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); + HP_BAR(player); + + } THEN { + EXPECT_EQ(player->hp, 2); + } +} + TO_DO_BATTLE_TEST("If a Pokémon steals a Shell Bell with Thief or Covet, it will recover HP for the use of that move that stole the Shell Bell") TO_DO_BATTLE_TEST("If a Pokémon steals a Shell Bell with Magician, it will recover HP for the use of that move that stole the Shell Bell") From f6ff64cdbe71040f77ca3bab9773ac67d23004b8 Mon Sep 17 00:00:00 2001 From: PhallenTree <168426989+PhallenTree@users.noreply.github.com> Date: Thu, 20 Feb 2025 15:55:10 +0000 Subject: [PATCH 44/73] Fixes Brick Break/Psychic Fangs/Raging Bull breaking screens if target is immune (#6308) --- data/battle_scripts_1.s | 3 +- test/battle/move_effect/brick_break.c | 94 ++++++++++++++++----------- test/battle/move_effect/raging_bull.c | 1 - 3 files changed, 59 insertions(+), 39 deletions(-) diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 0fc03658c1..3016540a80 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -632,7 +632,7 @@ BattleScript_AffectionBasedStatus_HealFreezeString: printstring STRINGID_ATTACKERMELTEDTHEICE goto BattleScript_AffectionBasedStatusHeal_Continue BattleScript_AffectionBasedStatus_HealFrostbiteString: - printstring STRINGID_ATTACKERMELTEDTHEICE + printstring STRINGID_ATTACKERHEALEDITSFROSTBITE BattleScript_AffectionBasedStatusHeal_Continue: waitmessage B_WAIT_TIME_LONG clearstatus BS_ATTACKER @@ -5090,6 +5090,7 @@ BattleScript_EffectBrickBreak:: accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE attackstring ppreduce + typecalc removelightscreenreflect critcalc damagecalc diff --git a/test/battle/move_effect/brick_break.c b/test/battle/move_effect/brick_break.c index 513369b5a1..30436c6d56 100644 --- a/test/battle/move_effect/brick_break.c +++ b/test/battle/move_effect/brick_break.c @@ -4,119 +4,139 @@ ASSUMPTIONS { ASSUME(gMovesInfo[MOVE_BRICK_BREAK].effect == EFFECT_BRICK_BREAK); + ASSUME(gMovesInfo[MOVE_PSYCHIC_FANGS].effect == EFFECT_BRICK_BREAK); ASSUME(gMovesInfo[MOVE_SNOWSCAPE].effect == EFFECT_SNOWSCAPE); ASSUME(gMovesInfo[MOVE_LIGHT_SCREEN].effect == EFFECT_LIGHT_SCREEN); ASSUME(gMovesInfo[MOVE_REFLECT].effect == EFFECT_REFLECT); ASSUME(gMovesInfo[MOVE_AURORA_VEIL].effect == EFFECT_AURORA_VEIL); } -SINGLE_BATTLE_TEST("Brick Break removes Light Screen, Reflect and Aurora Veil from the target's side of the field") +SINGLE_BATTLE_TEST("Brick Break and Psychic Fangs remove Light Screen, Reflect and Aurora Veil from the target's side of the field") { - u16 move; + u32 move; + u32 breakingMove; - PARAMETRIZE { move = MOVE_LIGHT_SCREEN; } - PARAMETRIZE { move = MOVE_REFLECT; } - PARAMETRIZE { move = MOVE_AURORA_VEIL; } + PARAMETRIZE { move = MOVE_LIGHT_SCREEN; breakingMove = MOVE_BRICK_BREAK; } + PARAMETRIZE { move = MOVE_REFLECT; breakingMove = MOVE_BRICK_BREAK; } + PARAMETRIZE { move = MOVE_AURORA_VEIL; breakingMove = MOVE_BRICK_BREAK; } + PARAMETRIZE { move = MOVE_LIGHT_SCREEN; breakingMove = MOVE_PSYCHIC_FANGS; } + PARAMETRIZE { move = MOVE_REFLECT; breakingMove = MOVE_PSYCHIC_FANGS; } + PARAMETRIZE { move = MOVE_AURORA_VEIL; breakingMove = MOVE_PSYCHIC_FANGS; } GIVEN { PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(player, MOVE_SNOWSCAPE); } - TURN { MOVE(opponent, move); MOVE(player, MOVE_BRICK_BREAK); } + TURN { MOVE(opponent, move); MOVE(player, breakingMove); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_SNOWSCAPE, player); ANIMATION(ANIM_TYPE_MOVE, move, opponent); - ANIMATION(ANIM_TYPE_MOVE, MOVE_BRICK_BREAK, player); + ANIMATION(ANIM_TYPE_MOVE, breakingMove, player); MESSAGE("The wall shattered!"); HP_BAR(opponent); } } -SINGLE_BATTLE_TEST("Brick Break doesn't remove Light Screen, Reflect and Aurora Veil if the target is immune") +SINGLE_BATTLE_TEST("Brick Break and Psychic Fangs don't remove Light Screen, Reflect and Aurora Veil if the target is immune") { - u16 move; + u32 move; + u32 breakingMove; - PARAMETRIZE { move = MOVE_LIGHT_SCREEN; } - PARAMETRIZE { move = MOVE_REFLECT; } - PARAMETRIZE { move = MOVE_AURORA_VEIL; } + PARAMETRIZE { move = MOVE_LIGHT_SCREEN; breakingMove = MOVE_BRICK_BREAK; } + PARAMETRIZE { move = MOVE_REFLECT; breakingMove = MOVE_BRICK_BREAK; } + PARAMETRIZE { move = MOVE_AURORA_VEIL; breakingMove = MOVE_BRICK_BREAK; } + PARAMETRIZE { move = MOVE_LIGHT_SCREEN; breakingMove = MOVE_PSYCHIC_FANGS; } + PARAMETRIZE { move = MOVE_REFLECT; breakingMove = MOVE_PSYCHIC_FANGS; } + PARAMETRIZE { move = MOVE_AURORA_VEIL; breakingMove = MOVE_PSYCHIC_FANGS; } - KNOWN_FAILING; GIVEN { PLAYER(SPECIES_WOBBUFFET); - OPPONENT(SPECIES_GASTLY); + OPPONENT(SPECIES_SABLEYE); } WHEN { TURN { MOVE(player, MOVE_SNOWSCAPE); } - TURN { MOVE(opponent, move); MOVE(player, MOVE_BRICK_BREAK); } + TURN { MOVE(opponent, move); MOVE(player, breakingMove); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_SNOWSCAPE, player); ANIMATION(ANIM_TYPE_MOVE, move, opponent); NONE_OF { - ANIMATION(ANIM_TYPE_MOVE, MOVE_BRICK_BREAK, player); + ANIMATION(ANIM_TYPE_MOVE, breakingMove, player); MESSAGE("The wall shattered!"); HP_BAR(opponent); } } } -SINGLE_BATTLE_TEST("Brick Break doesn't remove Light Screen, Reflect and Aurora Veil if the target Protected") +SINGLE_BATTLE_TEST("Brick Break and Psychic Fangs don't remove Light Screen, Reflect and Aurora Veil if the target Protected") { - u16 move; + u32 move; + u32 breakingMove; - PARAMETRIZE { move = MOVE_LIGHT_SCREEN; } - PARAMETRIZE { move = MOVE_REFLECT; } - PARAMETRIZE { move = MOVE_AURORA_VEIL; } + PARAMETRIZE { move = MOVE_LIGHT_SCREEN; breakingMove = MOVE_BRICK_BREAK; } + PARAMETRIZE { move = MOVE_REFLECT; breakingMove = MOVE_BRICK_BREAK; } + PARAMETRIZE { move = MOVE_AURORA_VEIL; breakingMove = MOVE_BRICK_BREAK; } + PARAMETRIZE { move = MOVE_LIGHT_SCREEN; breakingMove = MOVE_PSYCHIC_FANGS; } + PARAMETRIZE { move = MOVE_REFLECT; breakingMove = MOVE_PSYCHIC_FANGS; } + PARAMETRIZE { move = MOVE_AURORA_VEIL; breakingMove = MOVE_PSYCHIC_FANGS; } GIVEN { PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(player, MOVE_SNOWSCAPE); MOVE(opponent, move); } - TURN { MOVE(player, MOVE_BRICK_BREAK); MOVE(opponent, MOVE_PROTECT); } + TURN { MOVE(player, breakingMove); MOVE(opponent, MOVE_PROTECT); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_SNOWSCAPE, player); ANIMATION(ANIM_TYPE_MOVE, move, opponent); ANIMATION(ANIM_TYPE_MOVE, MOVE_PROTECT, opponent); NONE_OF { - ANIMATION(ANIM_TYPE_MOVE, MOVE_BRICK_BREAK, player); + ANIMATION(ANIM_TYPE_MOVE, breakingMove, player); MESSAGE("The wall shattered!"); HP_BAR(opponent); } } } -SINGLE_BATTLE_TEST("Brick Break doesn't remove Light Screen, Reflect and Aurora Veil if it misses") +SINGLE_BATTLE_TEST("Brick Break and Psychic Fangs don't remove Light Screen, Reflect and Aurora Veil if it misses") { - u16 move; + u32 move; + u32 breakingMove; - PARAMETRIZE { move = MOVE_LIGHT_SCREEN; } - PARAMETRIZE { move = MOVE_REFLECT; } - PARAMETRIZE { move = MOVE_AURORA_VEIL; } + PARAMETRIZE { move = MOVE_LIGHT_SCREEN; breakingMove = MOVE_BRICK_BREAK; } + PARAMETRIZE { move = MOVE_REFLECT; breakingMove = MOVE_BRICK_BREAK; } + PARAMETRIZE { move = MOVE_AURORA_VEIL; breakingMove = MOVE_BRICK_BREAK; } + PARAMETRIZE { move = MOVE_LIGHT_SCREEN; breakingMove = MOVE_PSYCHIC_FANGS; } + PARAMETRIZE { move = MOVE_REFLECT; breakingMove = MOVE_PSYCHIC_FANGS; } + PARAMETRIZE { move = MOVE_AURORA_VEIL; breakingMove = MOVE_PSYCHIC_FANGS; } GIVEN { PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_BRIGHT_POWDER); } } WHEN { TURN { MOVE(player, MOVE_SNOWSCAPE); MOVE(opponent, move); } - TURN { MOVE(player, MOVE_BRICK_BREAK, hit: FALSE); } + TURN { MOVE(player, breakingMove, hit: FALSE); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_SNOWSCAPE, player); ANIMATION(ANIM_TYPE_MOVE, move, opponent); NONE_OF { - ANIMATION(ANIM_TYPE_MOVE, MOVE_BRICK_BREAK, player); + ANIMATION(ANIM_TYPE_MOVE, breakingMove, player); MESSAGE("The wall shattered!"); HP_BAR(opponent); } } } -DOUBLE_BATTLE_TEST("Brick Break can remove Light Screen, Reflect and Aurora Veil on users side") +DOUBLE_BATTLE_TEST("Brick Break and Psychic Fangs can remove Light Screen, Reflect and Aurora Veil on users side") { - u16 move; + u32 move; + u32 breakingMove; - PARAMETRIZE { move = MOVE_LIGHT_SCREEN; } - PARAMETRIZE { move = MOVE_REFLECT; } - PARAMETRIZE { move = MOVE_AURORA_VEIL; } + PARAMETRIZE { move = MOVE_LIGHT_SCREEN; breakingMove = MOVE_BRICK_BREAK; } + PARAMETRIZE { move = MOVE_REFLECT; breakingMove = MOVE_BRICK_BREAK; } + PARAMETRIZE { move = MOVE_AURORA_VEIL; breakingMove = MOVE_BRICK_BREAK; } + PARAMETRIZE { move = MOVE_LIGHT_SCREEN; breakingMove = MOVE_PSYCHIC_FANGS; } + PARAMETRIZE { move = MOVE_REFLECT; breakingMove = MOVE_PSYCHIC_FANGS; } + PARAMETRIZE { move = MOVE_AURORA_VEIL; breakingMove = MOVE_PSYCHIC_FANGS; } GIVEN { PLAYER(SPECIES_WOBBUFFET); @@ -127,12 +147,12 @@ DOUBLE_BATTLE_TEST("Brick Break can remove Light Screen, Reflect and Aurora Veil TURN { MOVE(opponentLeft, MOVE_SNOWSCAPE); MOVE(playerLeft, move); - MOVE(playerRight, MOVE_BRICK_BREAK, target: playerLeft); + MOVE(playerRight, breakingMove, target: playerLeft); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_SNOWSCAPE, opponentLeft); ANIMATION(ANIM_TYPE_MOVE, move, playerLeft); - ANIMATION(ANIM_TYPE_MOVE, MOVE_BRICK_BREAK, playerRight); + ANIMATION(ANIM_TYPE_MOVE, breakingMove, playerRight); MESSAGE("The wall shattered!"); HP_BAR(playerLeft); } diff --git a/test/battle/move_effect/raging_bull.c b/test/battle/move_effect/raging_bull.c index 7e72ca8273..17b9c23985 100644 --- a/test/battle/move_effect/raging_bull.c +++ b/test/battle/move_effect/raging_bull.c @@ -41,7 +41,6 @@ SINGLE_BATTLE_TEST("Raging Bull doesn't remove Light Screen, Reflect and Aurora PARAMETRIZE { move = MOVE_REFLECT; } PARAMETRIZE { move = MOVE_AURORA_VEIL; } - KNOWN_FAILING; GIVEN { PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_GASTLY); From 82f6d477b6b848b507b6136ee19c87503086a24b Mon Sep 17 00:00:00 2001 From: Alex <93446519+AlexOn1ine@users.noreply.github.com> Date: Thu, 20 Feb 2025 17:03:01 +0100 Subject: [PATCH 45/73] Fix padding amount in MoveInfo (#6307) --- include/move.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/move.h b/include/move.h index d5f14078d6..5537840703 100644 --- a/include/move.h +++ b/include/move.h @@ -106,7 +106,7 @@ struct MoveInfo bool32 sketchBanned:1; //Other bool32 validApprenticeMove:1; - u32 padding:18; + u32 padding:3; // end of word union { From 767ea38dbf7ee875ad60fa8082d9b15378e1e554 Mon Sep 17 00:00:00 2001 From: Alex <93446519+AlexOn1ine@users.noreply.github.com> Date: Thu, 20 Feb 2025 23:18:27 +0100 Subject: [PATCH 46/73] Fixes doesnt effect message for Thunder Wave (#6304) Co-authored-by: Bassoonian --- data/battle_scripts_1.s | 2 +- test/battle/status1/paralysis.c | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index c8fa0103d6..c921c9d07a 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -3657,12 +3657,12 @@ BattleScript_EffectParalyze:: jumpifmovehadnoeffect BattleScript_ButItFailed jumpifstatus BS_TARGET, STATUS1_PARALYSIS, BattleScript_AlreadyParalyzed jumpifelectricabilityaffected BS_TARGET, ABILITY_VOLT_ABSORB, BattleScript_VoltAbsorbHeal + clearmoveresultflags MOVE_RESULT_SUPER_EFFECTIVE | MOVE_RESULT_NOT_VERY_EFFECTIVE tryparalyzetype BS_ATTACKER, BS_TARGET, BattleScript_NotAffected jumpifstatus BS_TARGET, STATUS1_ANY, BattleScript_ButItFailed jumpifterrainaffected BS_TARGET, STATUS_FIELD_MISTY_TERRAIN, BattleScript_MistyTerrainPrevents accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE jumpifsafeguard BattleScript_SafeguardProtected - clearmoveresultflags MOVE_RESULT_SUPER_EFFECTIVE | MOVE_RESULT_NOT_VERY_EFFECTIVE attackanimation waitanimation seteffectprimary MOVE_EFFECT_PARALYSIS diff --git a/test/battle/status1/paralysis.c b/test/battle/status1/paralysis.c index 4caeb3c509..64ed27f361 100644 --- a/test/battle/status1/paralysis.c +++ b/test/battle/status1/paralysis.c @@ -62,3 +62,18 @@ AI_SINGLE_BATTLE_TEST("AI avoids Thunder Wave when it can not paralyse target") TURN { SCORE_EQ(opponent, MOVE_CELEBRATE, MOVE_THUNDER_WAVE); } // Both get -10 } } + +SINGLE_BATTLE_TEST("Thunder Wave doesn't affect Electric types in Gen6+") +{ + GIVEN { + ASSUME(gSpeciesInfo[SPECIES_PIKACHU].types[0] == TYPE_ELECTRIC); + ASSUME(B_PARALYZE_ELECTRIC >= GEN_6); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_PIKACHU); + } WHEN { + TURN { MOVE(player, MOVE_THUNDER_WAVE); } + } SCENE { + MESSAGE("Wobbuffet used Thunder Wave!"); + MESSAGE("It doesn't affect the opposing Pikachu…"); + } +} From bf263efa4b5dede6d68ee1899c2af5babcdfd74c Mon Sep 17 00:00:00 2001 From: Pawkkie <61265402+Pawkkie@users.noreply.github.com> Date: Fri, 21 Feb 2025 03:58:14 -0500 Subject: [PATCH 47/73] Fix AI hazard move handling, minor AI tweaks (#6311) --- include/battle_ai_util.h | 4 +- include/config/ai.h | 2 +- src/battle_ai_main.c | 6 +-- src/battle_ai_switch_items.c | 8 +--- src/battle_ai_util.c | 80 +++++++++++++++++++++++++++++++++--- 5 files changed, 83 insertions(+), 17 deletions(-) diff --git a/include/battle_ai_util.h b/include/battle_ai_util.h index 6ea9660168..a0898c7ef7 100644 --- a/include/battle_ai_util.h +++ b/include/battle_ai_util.h @@ -127,7 +127,7 @@ bool32 IsAromaVeilProtectedEffect(u32 moveEffect); bool32 IsNonVolatileStatusMoveEffect(u32 moveEffect); bool32 IsMoveRedirectionPrevented(u32 battlerAtk, u32 move, u32 atkAbility); bool32 IsMoveEncouragedToHit(u32 battlerAtk, u32 battlerDef, u32 move); -bool32 IsHazardMoveEffect(u32 moveEffect); +bool32 IsHazardMove(u32 move); bool32 IsTwoTurnNotSemiInvulnerableMove(u32 battlerAtk, u32 move); void ProtectChecks(u32 battlerAtk, u32 battlerDef, u32 move, u32 predictedMove, s32 *score); bool32 ShouldSetSandstorm(u32 battler, u32 ability, u32 holdEffect); @@ -154,6 +154,7 @@ bool32 HasSubstituteIgnoringMove(u32 battler); bool32 HasHighCritRatioMove(u32 battler); bool32 HasMagicCoatAffectedMove(u32 battler); bool32 HasSnatchAffectedMove(u32 battler); +bool32 IsHazardClearingMove(u32 move); // status checks bool32 AI_CanGetFrostbite(u32 battler, u32 ability); @@ -217,5 +218,6 @@ void IncreaseTidyUpScore(u32 battlerAtk, u32 battlerDef, u32 move, s32 *score); bool32 AI_ShouldSpicyExtract(u32 battlerAtk, u32 battlerAtkPartner, u32 move, struct AiLogicData *aiData); void IncreaseSubstituteMoveScore(u32 battlerAtk, u32 battlerDef, u32 move, s32 *score); bool32 IsBattlerPredictedToSwitch(u32 battler); +bool32 HasLowAccuracyMove(u32 battlerAtk, u32 battlerDef); #endif //GUARD_BATTLE_AI_UTIL_H diff --git a/include/config/ai.h b/include/config/ai.h index 48205b733e..faa13f6b18 100644 --- a/include/config/ai.h +++ b/include/config/ai.h @@ -44,7 +44,7 @@ #define SHOULD_SWITCH_REGENERATOR_STATS_RAISED_PERCENTAGE 20 // AI held item-based move scoring -#define BLUNDER_POLICY_ACCURACY_THRESHOLD 75 // Moves with accuracy equal below this value are prioritized when holding Blunder Policy +#define LOW_ACCURACY_THRESHOLD 75 // Moves with accuracy equal OR below this value are considered low accuracy // AI prediction chances #define PREDICT_SWITCH_CHANCE 50 diff --git a/src/battle_ai_main.c b/src/battle_ai_main.c index efda602fef..09cdd3a9f3 100644 --- a/src/battle_ai_main.c +++ b/src/battle_ai_main.c @@ -2112,7 +2112,7 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) if (isDoubleBattle) { - if (IsHazardMoveEffect(GetMoveEffect(aiData->partnerMove)) // partner is going to set up hazards + if (IsHazardMove(aiData->partnerMove) // partner is going to set up hazards && AI_IsFaster(BATTLE_PARTNER(battlerAtk), battlerAtk, aiData->partnerMove)) // partner is going to set up before the potential Defog { ADJUST_SCORE(-10); @@ -3308,7 +3308,7 @@ static u32 AI_CalcHoldEffectMoveScore(u32 battlerAtk, u32 battlerDef, u32 move) { u32 moveAcc = aiData->moveAccuracy[battlerAtk][battlerDef][AI_THINKING_STRUCT->movesetIndex]; - if (moveAcc <= BLUNDER_POLICY_ACCURACY_THRESHOLD) + if (moveAcc <= LOW_ACCURACY_THRESHOLD) { ADJUST_SCORE(GOOD_EFFECT); } @@ -4015,7 +4015,7 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move) { if (isDoubleBattle) { - if (IsHazardMoveEffect(GetMoveEffect(aiData->partnerMove)) // Partner is going to set up hazards + if (IsHazardMove(aiData->partnerMove) // Partner is going to set up hazards && AI_IsSlower(battlerAtk, BATTLE_PARTNER(battlerAtk), move)) // Partner going first break; // Don't use Defog if partner is going to set up hazards } diff --git a/src/battle_ai_switch_items.c b/src/battle_ai_switch_items.c index fcd8b5ce71..16db84beb2 100644 --- a/src/battle_ai_switch_items.c +++ b/src/battle_ai_switch_items.c @@ -908,14 +908,8 @@ static bool32 CanMonSurviveHazardSwitchin(u32 battler) for (j = 0; j < MAX_MON_MOVES; j++) { aiMove = GetMonData(&party[i], MON_DATA_MOVE1 + j, NULL); - u32 aiEffect = GetMoveEffect(aiMove); - if (aiEffect == EFFECT_RAPID_SPIN - || (B_DEFOG_EFFECT_CLEARING >= GEN_6 && aiEffect == EFFECT_DEFOG) - || aiEffect == EFFECT_TIDY_UP) - { - // Have a mon that can clear the hazards, so switching out is okay + if (IsHazardClearingMove(aiMove)) // Have a mon that can clear the hazards, so switching out is okay return TRUE; - } } } // Faints to hazards and party can't clear them, don't switch out diff --git a/src/battle_ai_util.c b/src/battle_ai_util.c index 7807872b59..7b45c539e5 100644 --- a/src/battle_ai_util.c +++ b/src/battle_ai_util.c @@ -1471,8 +1471,10 @@ bool32 IsConfusionMoveEffect(u32 moveEffect) } } -bool32 IsHazardMoveEffect(u32 moveEffect) +bool32 IsHazardMove(u32 move) { + // Hazard setting moves like Stealth Rock, Spikes, etc. + u32 i, moveEffect = gMovesInfo[move].effect; switch (moveEffect) { case EFFECT_SPIKES: @@ -1480,9 +1482,48 @@ bool32 IsHazardMoveEffect(u32 moveEffect) case EFFECT_STICKY_WEB: case EFFECT_STEALTH_ROCK: return TRUE; - default: - return FALSE; } + + u32 additionalEffectCount = GetMoveAdditionalEffectCount(move); + for (i = 0; i < additionalEffectCount; i++) + { + const struct AdditionalEffect *additionalEffect = GetMoveAdditionalEffectById(move, i); + switch (additionalEffect->moveEffect) + { + case MOVE_EFFECT_STEELSURGE: + return TRUE; + } + } + return FALSE; +} + +bool32 IsHazardClearingMove(u32 move) +{ + // Hazard clearing effects like Rapid Spin, Tidy Up, etc. + u32 i, moveEffect = gMovesInfo[move].effect; + switch (moveEffect) + { + case EFFECT_RAPID_SPIN: + case EFFECT_TIDY_UP: + return TRUE; + case EFFECT_DEFOG: + if (B_DEFOG_EFFECT_CLEARING >= GEN_6) + return TRUE; + break; + } + + u32 additionalEffectCount = GetMoveAdditionalEffectCount(move); + for (i = 0; i < additionalEffectCount; i++) + { + const struct AdditionalEffect *additionalEffect = GetMoveAdditionalEffectById(move, i); + switch (additionalEffect->moveEffect) + { + case MOVE_EFFECT_DEFOG: + return TRUE; + } + } + + return FALSE; } bool32 IsMoveRedirectionPrevented(u32 battlerAtk, u32 move, u32 atkAbility) @@ -2957,7 +2998,7 @@ bool32 IsBattlerIncapacitated(u32 battler, u32 ability) if ((gBattleMons[battler].status1 & STATUS1_FREEZE) && !HasThawingMove(battler)) return TRUE; // if battler has thawing move we assume they will definitely use it, and thus being frozen should be neglected - if (gBattleMons[battler].status1 & STATUS1_SLEEP) + if (gBattleMons[battler].status1 & STATUS1_SLEEP && !HasMoveEffect(battler, EFFECT_SLEEP_TALK)) return TRUE; if (gBattleMons[battler].status2 & STATUS2_RECHARGE || (ability == ABILITY_TRUANT && gDisableStructs[battler].truantCounter != 0)) @@ -3713,6 +3754,20 @@ static const u16 sRecycleEncouragedItems[] = ITEM_CUSTAP_BERRY, ITEM_MENTAL_HERB, ITEM_FOCUS_SASH, + ITEM_SALAC_BERRY, + ITEM_LIECHI_BERRY, + ITEM_AGUAV_BERRY, + ITEM_FIGY_BERRY, + ITEM_IAPAPA_BERRY, + ITEM_MAGO_BERRY, + ITEM_WIKI_BERRY, + ITEM_MENTAL_HERB, + ITEM_POWER_HERB, + ITEM_BERRY_JUICE, + ITEM_WEAKNESS_POLICY, + ITEM_BLUNDER_POLICY, + ITEM_KEE_BERRY, + ITEM_MARANGA_BERRY, // TODO expand this }; @@ -4091,6 +4146,7 @@ bool32 AI_ShouldCopyStatChanges(u32 battlerAtk, u32 battlerDef) case STAT_SPATK: return (HasMoveWithCategory(battlerAtk, DAMAGE_CATEGORY_SPECIAL)); case STAT_ACC: + return (HasLowAccuracyMove(battlerAtk, battlerDef)); case STAT_EVASION: case STAT_SPEED: return TRUE; @@ -4110,7 +4166,10 @@ bool32 AI_ShouldSetUpHazards(u32 battlerAtk, u32 battlerDef, struct AiLogicData if (aiData->abilities[battlerDef] == ABILITY_MAGIC_BOUNCE || CountUsablePartyMons(battlerDef) == 0 || HasMoveEffect(battlerDef, EFFECT_RAPID_SPIN) - || HasMoveEffect(battlerDef, EFFECT_DEFOG)) + || HasMoveEffect(battlerDef, EFFECT_TIDY_UP) + || HasMoveEffect(battlerDef, EFFECT_DEFOG) + || HasMoveWithAdditionalEffect(battlerDef, MOVE_EFFECT_DEFOG) + || HasMoveEffect(battlerDef, EFFECT_MAGIC_COAT)) return FALSE; return TRUE; @@ -4211,3 +4270,14 @@ void IncreaseSubstituteMoveScore(u32 battlerAtk, u32 battlerDef, u32 move, s32 * if (AI_DATA->hpPercents[battlerAtk] > 70) ADJUST_SCORE_PTR(WEAK_EFFECT); } + +bool32 HasLowAccuracyMove(u32 battlerAtk, u32 battlerDef) +{ + int i; + for (i = 0; i < MAX_MON_MOVES; i++) + { + if (AI_DATA->moveAccuracy[battlerAtk][battlerDef][i] <= LOW_ACCURACY_THRESHOLD) + return TRUE; + } + return FALSE; +} From ba4652405351a99ec2e2b4fac662619b54063212 Mon Sep 17 00:00:00 2001 From: Pawkkie <61265402+Pawkkie@users.noreply.github.com> Date: Fri, 21 Feb 2025 04:01:52 -0500 Subject: [PATCH 48/73] Big Root AI Fix (#6309) --- src/battle_ai_main.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/battle_ai_main.c b/src/battle_ai_main.c index d65a5eaeaf..bcdd1b9ae3 100644 --- a/src/battle_ai_main.c +++ b/src/battle_ai_main.c @@ -3210,6 +3210,12 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move) if (aiData->holdEffects[battlerAtk] == HOLD_EFFECT_BIG_ROOT && effectiveness >= AI_EFFECTIVENESS_x1) ADJUST_SCORE(DECENT_EFFECT); break; + case EFFECT_DREAM_EATER: + case EFFECT_STRENGTH_SAP: + case EFFECT_AQUA_RING: + if (aiData->holdEffects[battlerAtk] == HOLD_EFFECT_BIG_ROOT) + ADJUST_SCORE(DECENT_EFFECT); + break; case EFFECT_EXPLOSION: case EFFECT_MEMENTO: if (AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_WILL_SUICIDE && gBattleMons[battlerDef].statStages[STAT_EVASION] < 7) @@ -3431,8 +3437,6 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move) case EFFECT_MOONLIGHT: if (ShouldRecover(battlerAtk, battlerDef, move, 50)) ADJUST_SCORE(GOOD_EFFECT); - if (aiData->holdEffects[battlerAtk] == HOLD_EFFECT_BIG_ROOT) - ADJUST_SCORE(DECENT_EFFECT); break; case EFFECT_TOXIC: case EFFECT_POISON: @@ -3507,7 +3511,8 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move) || aiData->abilities[battlerDef] == ABILITY_MAGIC_GUARD) break; ADJUST_SCORE(GOOD_EFFECT); - if (!HasDamagingMove(battlerDef) || IsBattlerTrapped(battlerDef, FALSE)) + if (!HasDamagingMove(battlerDef) || IsBattlerTrapped(battlerDef, FALSE) + || aiData->holdEffects[battlerAtk] == HOLD_EFFECT_BIG_ROOT) ADJUST_SCORE(DECENT_EFFECT); break; case EFFECT_DO_NOTHING: From 48fc44df3184a43258009b5bf5d8389983a97ba3 Mon Sep 17 00:00:00 2001 From: Pawkkie <61265402+Pawkkie@users.noreply.github.com> Date: Fri, 21 Feb 2025 12:11:47 -0500 Subject: [PATCH 49/73] Fix AI hold effect considerations (#6310) --- include/battle_ai_util.h | 1 + src/battle_ai_main.c | 9 +++------ src/battle_ai_switch_items.c | 6 +++--- src/battle_ai_util.c | 25 ++++++++++++++----------- src/battle_util.c | 2 +- 5 files changed, 22 insertions(+), 21 deletions(-) diff --git a/include/battle_ai_util.h b/include/battle_ai_util.h index c74cad2e78..eb8ca35cf8 100644 --- a/include/battle_ai_util.h +++ b/include/battle_ai_util.h @@ -213,5 +213,6 @@ bool32 AI_ShouldSetUpHazards(u32 battlerAtk, u32 battlerDef, struct AiLogicData void IncreaseTidyUpScore(u32 battlerAtk, u32 battlerDef, u32 move, s32 *score); bool32 AI_ShouldSpicyExtract(u32 battlerAtk, u32 battlerAtkPartner, u32 move, struct AiLogicData *aiData); void IncreaseSubstituteMoveScore(u32 battlerAtk, u32 battlerDef, u32 move, s32 *score); +bool32 IsBattlerItemEnabled(u32 battler); #endif //GUARD_BATTLE_AI_UTIL_H diff --git a/src/battle_ai_main.c b/src/battle_ai_main.c index bcdd1b9ae3..584d60d4dd 100644 --- a/src/battle_ai_main.c +++ b/src/battle_ai_main.c @@ -2216,9 +2216,7 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) } break; case EFFECT_NATURAL_GIFT: - if (aiData->abilities[battlerAtk] == ABILITY_KLUTZ - || gFieldStatuses & STATUS_FIELD_MAGIC_ROOM - || GetPocketByItemId(gBattleMons[battlerAtk].item) != POCKET_BERRIES) + if (!IsBattlerItemEnabled(battlerAtk) || GetPocketByItemId(gBattleMons[battlerAtk].item) != POCKET_BERRIES) ADJUST_SCORE(-10); break; case EFFECT_GRASSY_TERRAIN: @@ -2325,8 +2323,7 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) } break; case EFFECT_EMBARGO: - if (aiData->abilities[battlerDef] == ABILITY_KLUTZ - || gFieldStatuses & STATUS_FIELD_MAGIC_ROOM + if (!IsBattlerItemEnabled(battlerAtk) || gDisableStructs[battlerDef].embargoTimer != 0 || PartnerMoveIsSameAsAttacker(BATTLE_PARTNER(battlerAtk), battlerDef, move, aiData->partnerMove)) ADJUST_SCORE(-10); @@ -2577,7 +2574,7 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) } // move effect checks // Choice items - if (HOLD_EFFECT_CHOICE(aiData->holdEffects[battlerAtk]) && gBattleMons[battlerAtk].ability != ABILITY_KLUTZ) + if (HOLD_EFFECT_CHOICE(aiData->holdEffects[battlerAtk]) && IsBattlerItemEnabled(battlerAtk)) { // Don't use user-target moves ie. Swords Dance, with exceptions if ((moveTarget & MOVE_TARGET_USER) diff --git a/src/battle_ai_switch_items.c b/src/battle_ai_switch_items.c index 23d96dedfe..e5ff01fab6 100644 --- a/src/battle_ai_switch_items.c +++ b/src/battle_ai_switch_items.c @@ -854,7 +854,7 @@ static bool32 ShouldSwitchIfBadChoiceLock(u32 battler) { u32 holdEffect = GetBattlerHoldEffect(battler, FALSE); - if (HOLD_EFFECT_CHOICE(holdEffect) && gBattleMons[battler].ability != ABILITY_KLUTZ) + if (HOLD_EFFECT_CHOICE(holdEffect) && IsBattlerItemEnabled(battler)) { if (gMovesInfo[gLastUsedMove].category == DAMAGE_CATEGORY_STATUS) return SetSwitchinAndSwitch(battler, PARTY_SIZE); @@ -1249,10 +1249,10 @@ bool32 IsMonGrounded(u16 heldItemEffect, u32 ability, u8 type1, u8 type2) { // List that makes mon not grounded if (type1 == TYPE_FLYING || type2 == TYPE_FLYING || ability == ABILITY_LEVITATE - || (heldItemEffect == HOLD_EFFECT_AIR_BALLOON && ability != ABILITY_KLUTZ)) + || (heldItemEffect == HOLD_EFFECT_AIR_BALLOON && !(ability == ABILITY_KLUTZ || (gFieldStatuses & STATUS_FIELD_MAGIC_ROOM)))) { // List that overrides being off the ground - if ((heldItemEffect == HOLD_EFFECT_IRON_BALL && ability != ABILITY_KLUTZ) || (gFieldStatuses & STATUS_FIELD_GRAVITY) || (gFieldStatuses & STATUS_FIELD_MAGIC_ROOM)) + if ((heldItemEffect == HOLD_EFFECT_IRON_BALL && !(ability == ABILITY_KLUTZ || (gFieldStatuses & STATUS_FIELD_MAGIC_ROOM))) || (gFieldStatuses & STATUS_FIELD_GRAVITY) || (gFieldStatuses & STATUS_FIELD_MAGIC_ROOM)) return TRUE; else return FALSE; diff --git a/src/battle_ai_util.c b/src/battle_ai_util.c index dadf39c61e..622426f2bd 100644 --- a/src/battle_ai_util.c +++ b/src/battle_ai_util.c @@ -412,22 +412,12 @@ static inline s32 DmgRoll(s32 dmg) bool32 IsDamageMoveUnusable(u32 battlerAtk, u32 battlerDef, u32 move, u32 moveType) { struct AiLogicData *aiData = AI_DATA; - u32 battlerDefAbility; u32 partnerBattlerDefAbility; if (DoesBattlerIgnoreAbilityChecks(aiData->abilities[battlerAtk], move)) - { - battlerDefAbility = ABILITY_NONE; partnerBattlerDefAbility = ABILITY_NONE; - } else - { - battlerDefAbility = aiData->abilities[battlerDef]; partnerBattlerDefAbility = aiData->abilities[BATTLE_PARTNER(battlerDef)]; - } - - if (battlerDef == BATTLE_PARTNER(battlerAtk)) - battlerDefAbility = aiData->abilities[battlerDef]; if (gBattleStruct->commandingDondozo & (1u << battlerDef)) return TRUE; @@ -469,7 +459,7 @@ bool32 IsDamageMoveUnusable(u32 battlerAtk, u32 battlerDef, u32 move, u32 moveTy return TRUE; break; case EFFECT_POLTERGEIST: - if (AI_DATA->items[battlerDef] == ITEM_NONE || gFieldStatuses & STATUS_FIELD_MAGIC_ROOM || battlerDefAbility == ABILITY_KLUTZ) + if (AI_DATA->items[battlerDef] == ITEM_NONE || !IsBattlerItemEnabled(battlerDef)) return TRUE; break; case EFFECT_FIRST_TURN_ONLY: @@ -4141,3 +4131,16 @@ void IncreaseSubstituteMoveScore(u32 battlerAtk, u32 battlerDef, u32 move, s32 * if (AI_DATA->hpPercents[battlerAtk] > 70) ADJUST_SCORE_PTR(WEAK_EFFECT); } + +bool32 IsBattlerItemEnabled(u32 battler) +{ + if (AI_THINKING_STRUCT->aiFlags[battler] & AI_FLAG_NEGATE_UNAWARE) + return TRUE; + if (gFieldStatuses & STATUS_FIELD_MAGIC_ROOM) + return FALSE; + if (gStatuses3[battler] & STATUS3_EMBARGO) + return FALSE; + if (gBattleMons[battler].ability == ABILITY_KLUTZ && !(gStatuses3[battler] & STATUS3_GASTRO_ACID)) + return FALSE; + return TRUE; +} diff --git a/src/battle_util.c b/src/battle_util.c index 09679f656a..5c32262b43 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -8606,7 +8606,7 @@ u32 GetBattlerHoldEffectInternal(u32 battler, bool32 checkNegating, bool32 check return HOLD_EFFECT_NONE; if (gFieldStatuses & STATUS_FIELD_MAGIC_ROOM) return HOLD_EFFECT_NONE; - if (checkAbility && GetBattlerAbility(battler) == ABILITY_KLUTZ) + if (checkAbility && GetBattlerAbility(battler) == ABILITY_KLUTZ && !(gStatuses3[battler] & STATUS3_GASTRO_ACID)) return HOLD_EFFECT_NONE; } From 3dd0f95ddd5cfe24ed124d634f9a81fb78854440 Mon Sep 17 00:00:00 2001 From: Alex <93446519+AlexOn1ine@users.noreply.github.com> Date: Fri, 21 Feb 2025 23:11:07 +0100 Subject: [PATCH 50/73] Fixes Tera Shell activating on moves that have no effect on target (#6271) --- include/battle_script_commands.h | 1 - src/battle_script_commands.c | 46 ++++++++++--------------------- src/battle_util.c | 47 ++++++++++++++++++++++---------- test/battle/ability/tera_shell.c | 15 ++++++++++ test/battle/trainer_control.h | 1 + 5 files changed, 62 insertions(+), 48 deletions(-) diff --git a/include/battle_script_commands.h b/include/battle_script_commands.h index 72f3773fdd..cc6c09012c 100644 --- a/include/battle_script_commands.h +++ b/include/battle_script_commands.h @@ -51,7 +51,6 @@ void StealTargetItem(u8 battlerStealer, u8 battlerItem); u8 GetCatchingBattler(void); u32 GetHighestStatId(u32 battlerId); bool32 ProteanTryChangeType(u32 battler, u32 ability, u32 move, u32 moveType); -bool32 ShouldTeraShellDistortTypeMatchups(u32 move, u32 battlerDef); bool32 IsMoveNotAllowedInSkyBattles(u32 move); bool32 DoSwitchInAbilities(u32 battlerId); u8 GetFirstFaintedPartyIndex(u8 battlerId); diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index efbac6019e..266e62b1b8 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -1148,19 +1148,6 @@ bool32 ProteanTryChangeType(u32 battler, u32 ability, u32 move, u32 moveType) return FALSE; } -bool32 ShouldTeraShellDistortTypeMatchups(u32 move, u32 battlerDef) -{ - if (!gSpecialStatuses[battlerDef].distortedTypeMatchups - && gBattleMons[battlerDef].species == SPECIES_TERAPAGOS_TERASTAL - && gBattleMons[battlerDef].hp == gBattleMons[battlerDef].maxHP - && !IsBattleMoveStatus(move) - && !(gBattleStruct->moveResultFlags[battlerDef] & MOVE_RESULT_NO_EFFECT) - && GetBattlerAbility(battlerDef) == ABILITY_TERA_SHELL) - return TRUE; - - return FALSE; -} - bool32 IsMoveNotAllowedInSkyBattles(u32 move) { return (gBattleStruct->isSkyBattle && IsMoveSkyBattleBanned(gCurrentMove)); @@ -2009,10 +1996,21 @@ static void Cmd_critcalc(void) gBattlescriptCurrInstr = cmd->nextInstr; } -static inline void GetShellSideArmCategory(u32 battlerDef) +static inline void CalculateAndSetMoveDamage(struct DamageCalculationData *damageCalcData, u32 battlerDef) { if (GetMoveEffect(gCurrentMove) == EFFECT_SHELL_SIDE_ARM) gBattleStruct->swapDamageCategory = (gBattleStruct->shellSideArmCategory[gBattlerAttacker][battlerDef] != GetMoveCategory(gCurrentMove)); + + damageCalcData->battlerDef = battlerDef; + damageCalcData->isCrit = gSpecialStatuses[battlerDef].criticalHit; + gBattleStruct->moveDamage[battlerDef] = CalculateMoveDamage(damageCalcData, 0); + + // Slighly hacky but we need to check move result flags for distortion match-up as well but it can only be done after damage calcs + if (gSpecialStatuses[battlerDef].distortedTypeMatchups && gBattleStruct->moveResultFlags[battlerDef] & MOVE_RESULT_NO_EFFECT) + { + gSpecialStatuses[battlerDef].distortedTypeMatchups = FALSE; + gSpecialStatuses[battlerDef].teraShellAbilityDone = FALSE; + } } static void Cmd_damagecalc(void) @@ -2044,28 +2042,12 @@ static void Cmd_damagecalc(void) || gBattleStruct->moveResultFlags[battlerDef] & MOVE_RESULT_NO_EFFECT) continue; - if (ShouldTeraShellDistortTypeMatchups(gCurrentMove, battlerDef)) - { - gSpecialStatuses[battlerDef].distortedTypeMatchups = TRUE; - gSpecialStatuses[battlerDef].teraShellAbilityDone = TRUE; - } - GetShellSideArmCategory(battlerDef); - damageCalcData.battlerDef = battlerDef; - damageCalcData.isCrit = gSpecialStatuses[battlerDef].criticalHit; - gBattleStruct->moveDamage[battlerDef] = CalculateMoveDamage(&damageCalcData, 0); + CalculateAndSetMoveDamage(&damageCalcData, battlerDef); } } else { - if (ShouldTeraShellDistortTypeMatchups(gCurrentMove, gBattlerTarget)) - { - gSpecialStatuses[gBattlerTarget].distortedTypeMatchups = TRUE; - gSpecialStatuses[gBattlerTarget].teraShellAbilityDone = TRUE; - } - GetShellSideArmCategory(gBattlerTarget); - damageCalcData.battlerDef = gBattlerTarget; - damageCalcData.isCrit = gSpecialStatuses[gBattlerTarget].criticalHit; - gBattleStruct->moveDamage[gBattlerTarget] = CalculateMoveDamage(&damageCalcData, 0); + CalculateAndSetMoveDamage(&damageCalcData, gBattlerTarget); } gBattlescriptCurrInstr = cmd->nextInstr; diff --git a/src/battle_util.c b/src/battle_util.c index ad725db7e6..b49be3b52a 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -65,6 +65,7 @@ static u32 GetFlingPowerFromItemId(u32 itemId); static void SetRandomMultiHitCounter(); static u32 GetBattlerItemHoldEffectParam(u32 battler, u32 item); static bool32 CanBeInfinitelyConfused(u32 battler); + ARM_FUNC NOINLINE static uq4_12_t PercentToUQ4_12(u32 percent); ARM_FUNC NOINLINE static uq4_12_t PercentToUQ4_12_Floored(u32 percent); @@ -201,10 +202,10 @@ static const struct BattleWeatherInfo sBattleWeatherInfo[BATTLE_WEATHER_COUNT] = }, }; -static u8 CalcBeatUpPower(void) +static u32 CalcBeatUpPower(void) { - u8 basePower; - u16 species; + u32 basePower; + u32 species; struct Pokemon *party = GetBattlerParty(gBattlerAttacker); // Party slot is incremented by the battle script for Beat Up after this damage calculation @@ -214,6 +215,18 @@ static u8 CalcBeatUpPower(void) return basePower; } +static bool32 ShouldTeraShellDistortTypeMatchups(u32 move, u32 battlerDef, u32 abilityDef) +{ + if (!gSpecialStatuses[battlerDef].distortedTypeMatchups + && gBattleMons[battlerDef].species == SPECIES_TERAPAGOS_TERASTAL + && gBattleMons[battlerDef].hp == gBattleMons[battlerDef].maxHP + && !IsBattleMoveStatus(move) + && abilityDef == ABILITY_TERA_SHELL) + return TRUE; + + return FALSE; +} + bool32 IsAffectedByFollowMe(u32 battlerAtk, u32 defSide, u32 move) { u32 ability = GetBattlerAbility(battlerAtk); @@ -10562,7 +10575,7 @@ s32 CalculateMoveDamageVars(struct DamageCalculationData *damageCalcData, u32 fi holdEffectAtk, holdEffectDef, abilityAtk, abilityDef); } -static inline void MulByTypeEffectiveness(uq4_12_t *modifier, u32 move, u32 moveType, u32 battlerDef, u32 defType, u32 battlerAtk, bool32 recordAbilities) +static inline void MulByTypeEffectiveness(uq4_12_t *modifier, u32 move, u32 moveType, u32 battlerDef, u32 defAbility, u32 defType, u32 battlerAtk, bool32 recordAbilities) { uq4_12_t mod = GetTypeModifier(moveType, defType); u32 abilityAtk = GetBattlerAbility(battlerAtk); @@ -10602,11 +10615,15 @@ static inline void MulByTypeEffectiveness(uq4_12_t *modifier, u32 move, u32 move mod = UQ_4_12(1.0); } - if (gSpecialStatuses[battlerDef].distortedTypeMatchups || (AI_DATA->aiCalcInProgress && ShouldTeraShellDistortTypeMatchups(move, battlerDef))) + if (gSpecialStatuses[battlerDef].distortedTypeMatchups || (mod > UQ_4_12(0.0) && ShouldTeraShellDistortTypeMatchups(move, battlerDef, defAbility))) { mod = UQ_4_12(0.5); if (recordAbilities) - RecordAbilityBattle(battlerDef, GetBattlerAbility(battlerDef)); + { + RecordAbilityBattle(battlerDef, defAbility); + gSpecialStatuses[battlerDef].distortedTypeMatchups = TRUE; + gSpecialStatuses[battlerDef].teraShellAbilityDone = TRUE; + } } *modifier = uq4_12_multiply(*modifier, mod); @@ -10616,9 +10633,9 @@ static inline void TryNoticeIllusionInTypeEffectiveness(u32 move, u32 moveType, { // Check if the type effectiveness would've been different if the pokemon really had the types as the disguise. uq4_12_t presumedModifier = UQ_4_12(1.0); - MulByTypeEffectiveness(&presumedModifier, move, moveType, battlerDef, gSpeciesInfo[illusionSpecies].types[0], battlerAtk, FALSE); + MulByTypeEffectiveness(&presumedModifier, move, moveType, battlerDef, ABILITY_ILLUSION, gSpeciesInfo[illusionSpecies].types[0], battlerAtk, FALSE); if (gSpeciesInfo[illusionSpecies].types[1] != gSpeciesInfo[illusionSpecies].types[0]) - MulByTypeEffectiveness(&presumedModifier, move, moveType, battlerDef, gSpeciesInfo[illusionSpecies].types[1], battlerAtk, FALSE); + MulByTypeEffectiveness(&presumedModifier, move, moveType, battlerDef, ABILITY_ILLUSION, gSpeciesInfo[illusionSpecies].types[1], battlerAtk, FALSE); if (presumedModifier != resultingModifier) RecordAbilityBattle(battlerDef, ABILITY_ILLUSION); @@ -10654,11 +10671,11 @@ static inline uq4_12_t CalcTypeEffectivenessMultiplierInternal(u32 move, u32 mov u32 types[3]; GetBattlerTypes(battlerDef, FALSE, types); - MulByTypeEffectiveness(&modifier, move, moveType, battlerDef, types[0], battlerAtk, recordAbilities); + MulByTypeEffectiveness(&modifier, move, moveType, battlerDef, defAbility, types[0], battlerAtk, recordAbilities); if (types[1] != types[0]) - MulByTypeEffectiveness(&modifier, move, moveType, battlerDef, types[1], battlerAtk, recordAbilities); + MulByTypeEffectiveness(&modifier, move, moveType, battlerDef, defAbility, types[1], battlerAtk, recordAbilities); if (types[2] != TYPE_MYSTERY && types[2] != types[1] && types[2] != types[0]) - MulByTypeEffectiveness(&modifier, move, moveType, battlerDef, types[2], battlerAtk, recordAbilities); + MulByTypeEffectiveness(&modifier, move, moveType, battlerDef, defAbility, types[2], battlerAtk, recordAbilities); if (moveType == TYPE_FIRE && gDisableStructs[battlerDef].tarShot) modifier = uq4_12_multiply(modifier, UQ_4_12(2.0)); @@ -10740,9 +10757,9 @@ uq4_12_t CalcPartyMonTypeEffectivenessMultiplier(u16 move, u16 speciesDef, u16 a if (move != MOVE_STRUGGLE && moveType != TYPE_MYSTERY) { - MulByTypeEffectiveness(&modifier, move, moveType, 0, gSpeciesInfo[speciesDef].types[0], 0, FALSE); + MulByTypeEffectiveness(&modifier, move, moveType, 0, 0, gSpeciesInfo[speciesDef].types[0], 0, FALSE); if (gSpeciesInfo[speciesDef].types[1] != gSpeciesInfo[speciesDef].types[0]) - MulByTypeEffectiveness(&modifier, move, moveType, 0, gSpeciesInfo[speciesDef].types[1], 0, FALSE); + MulByTypeEffectiveness(&modifier, move, moveType, 0, 0, gSpeciesInfo[speciesDef].types[1], 0, FALSE); if (moveType == TYPE_GROUND && abilityDef == ABILITY_LEVITATE && !(gFieldStatuses & STATUS_FIELD_GRAVITY)) modifier = UQ_4_12(0.0); @@ -10778,9 +10795,9 @@ uq4_12_t GetOverworldTypeEffectiveness(struct Pokemon *mon, u8 moveType) if (moveType != TYPE_MYSTERY) { - MulByTypeEffectiveness(&modifier, MOVE_POUND, moveType, 0, type1, 0, FALSE); + MulByTypeEffectiveness(&modifier, MOVE_POUND, moveType, 0, 0, type1, 0, FALSE); if (type2 != type1) - MulByTypeEffectiveness(&modifier, MOVE_POUND, moveType, 0, type2, 0, FALSE); + MulByTypeEffectiveness(&modifier, MOVE_POUND, moveType, 0, 0, type2, 0, FALSE); if ((modifier <= UQ_4_12(1.0) && abilityDef == ABILITY_WONDER_GUARD) || (moveType == TYPE_FIRE && abilityDef == ABILITY_FLASH_FIRE) diff --git a/test/battle/ability/tera_shell.c b/test/battle/ability/tera_shell.c index ef2993a0e7..63dda3207a 100644 --- a/test/battle/ability/tera_shell.c +++ b/test/battle/ability/tera_shell.c @@ -97,3 +97,18 @@ DOUBLE_BATTLE_TEST("Tera Shell only makes the first hit against Terapagos from a NOT MESSAGE("It's not very effective…"); } } + +SINGLE_BATTLE_TEST("Tera Shell respects immunity") +{ + GIVEN { + PLAYER(SPECIES_TERAPAGOS_TERASTAL) { Ability(ABILITY_TERA_SHELL); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_SHADOW_BALL); } + } SCENE { + NONE_OF { + ABILITY_POPUP(player, ABILITY_TERA_SHELL); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SHADOW_BALL, opponent); + } + } +} diff --git a/test/battle/trainer_control.h b/test/battle/trainer_control.h index 703a436274..62a8045694 100644 --- a/test/battle/trainer_control.h +++ b/test/battle/trainer_control.h @@ -704,3 +704,4 @@ }, }, }, + From b7df5b8c29a31220f2809339783112a00d9fea91 Mon Sep 17 00:00:00 2001 From: Pawkkie <61265402+Pawkkie@users.noreply.github.com> Date: Sat, 22 Feb 2025 04:37:11 -0500 Subject: [PATCH 51/73] Fix Overzealous Absorber Switching (#6318) --- include/config/ai.h | 1 + src/battle_ai_switch_items.c | 48 ++++++++++++++++++++++++------------ 2 files changed, 33 insertions(+), 16 deletions(-) diff --git a/include/config/ai.h b/include/config/ai.h index faa13f6b18..1fe0c822d2 100644 --- a/include/config/ai.h +++ b/include/config/ai.h @@ -9,6 +9,7 @@ #define SHOULD_SWITCH_WONDER_GUARD_PERCENTAGE 100 #define SHOULD_SWITCH_TRUANT_PERCENTAGE 100 #define SHOULD_SWITCH_ALL_MOVES_BAD_PERCENTAGE 100 +#define STAY_IN_STATS_RAISED 2 // Number of stat stages that must be raised across any stats before the AI won't switch mon out in certain cases // AI smart switching chances; if you want more complex behaviour, modify GetSwitchChance #define SHOULD_SWITCH_ABSORBS_MOVE_PERCENTAGE 100 diff --git a/src/battle_ai_switch_items.c b/src/battle_ai_switch_items.c index 16db84beb2..93adc01066 100644 --- a/src/battle_ai_switch_items.c +++ b/src/battle_ai_switch_items.c @@ -125,6 +125,20 @@ static bool32 IsAceMon(u32 battler, u32 monPartyId) return FALSE; } +static bool32 AreStatsRaised(u32 battler) +{ + u8 buffedStatsValue = 0; + s32 i; + + for (i = 0; i < NUM_BATTLE_STATS; i++) + { + if (gBattleMons[battler].statStages[i] > DEFAULT_STAT_STAGE) + buffedStatsValue += gBattleMons[battler].statStages[i] - DEFAULT_STAT_STAGE; + } + + return (buffedStatsValue > STAY_IN_STATS_RAISED); +} + void GetAIPartyIndexes(u32 battler, s32 *firstId, s32 *lastId) { if (BATTLE_TWO_VS_ONE_OPPONENT && (battler & BIT_SIDE) == B_SIDE_OPPONENT) @@ -408,7 +422,7 @@ static bool32 FindMonThatAbsorbsOpponentsMove(u32 battler) s32 firstId; s32 lastId; struct Pokemon *party; - u16 monAbility; + u16 monAbility, aiMove; u32 opposingBattler = GetOppositeBattler(battler); u32 incomingMove = AI_DATA->lastUsedMove[opposingBattler]; u32 incomingType = GetMoveType(incomingMove); @@ -421,9 +435,25 @@ static bool32 FindMonThatAbsorbsOpponentsMove(u32 battler) return FALSE; if (gBattleStruct->prevTurnSpecies[battler] != gBattleMons[battler].species) // AI mon has changed, player's behaviour no longer reliable; note to override this if using AI_FLAG_PREDICT_MOVE return FALSE; - if (HasSuperEffectiveMoveAgainstOpponents(battler, TRUE) && (RandomPercentage(RNG_AI_SWITCH_ABSORBING_STAY_IN, STAY_IN_ABSORBING_PERCENTAGE) || AI_DATA->aiSwitchPredictionInProgress)) return FALSE; + if (AreStatsRaised(battler)) + return FALSE; + + // Don't switch if mon could OHKO + for (i = 0; i < MAX_MON_MOVES; i++) + { + aiMove = gBattleMons[battler].moves[i]; + if (aiMove != MOVE_NONE) + { + // Only check damage if it's a damaging move + if (!IsBattleMoveStatus(aiMove)) + { + if (AI_DATA->simulatedDmg[battler][opposingBattler][i].expected > gBattleMons[opposingBattler].hp) + return FALSE; + } + } + } if (IsDoubleBattle()) { @@ -762,20 +792,6 @@ static bool32 HasSuperEffectiveMoveAgainstOpponents(u32 battler, bool32 noRng) return FALSE; } -static bool32 AreStatsRaised(u32 battler) -{ - u8 buffedStatsValue = 0; - s32 i; - - for (i = 0; i < NUM_BATTLE_STATS; i++) - { - if (gBattleMons[battler].statStages[i] > DEFAULT_STAT_STAGE) - buffedStatsValue += gBattleMons[battler].statStages[i] - DEFAULT_STAT_STAGE; - } - - return (buffedStatsValue > 3); -} - static bool32 FindMonWithFlagsAndSuperEffective(u32 battler, u16 flags, u32 percentChance) { u32 battlerIn1, battlerIn2; From 622a7f9a85629b3182f07702957f9f7b003c9548 Mon Sep 17 00:00:00 2001 From: hedara90 <90hedara@gmail.com> Date: Sat, 22 Feb 2025 15:32:39 +0100 Subject: [PATCH 52/73] Refactor testing flags and vars to not conflict with user ones (#6301) Co-authored-by: Hedara --- include/config/test.h | 4 ++-- include/constants/flags.h | 12 ++++++++++++ include/constants/vars.h | 12 ++++++++++++ src/event_data.c | 15 +++++++++++++++ 4 files changed, 41 insertions(+), 2 deletions(-) diff --git a/include/config/test.h b/include/config/test.h index 90cf5a4b88..a8e2f4ab11 100644 --- a/include/config/test.h +++ b/include/config/test.h @@ -1131,10 +1131,10 @@ // Vars #undef B_VAR_DIFFICULTY -#define B_VAR_DIFFICULTY VAR_UNUSED_0x404E +#define B_VAR_DIFFICULTY TESTING_VAR_DIFFICULTY // Flags #undef B_FLAG_SLEEP_CLAUSE -#define B_FLAG_SLEEP_CLAUSE FLAG_SPECIAL_FLAG_UNUSED_0x4003 +#define B_FLAG_SLEEP_CLAUSE TESTING_FLAG_SLEEP_CLAUSE #endif // GUARD_CONFIG_TEST_H diff --git a/include/constants/flags.h b/include/constants/flags.h index 8685faca6f..aec9ebbd92 100644 --- a/include/constants/flags.h +++ b/include/constants/flags.h @@ -1660,4 +1660,16 @@ #define FLAG_TEMP_HIDE_FOLLOWER FLAG_TEMP_E #define FLAG_TEMP_HIDE_MIRAGE_ISLAND_BERRY_TREE FLAG_TEMP_11 +#if TESTING +#define TESTING_FLAGS_START 0x5000 +#define TESTING_FLAG_SLEEP_CLAUSE (TESTING_FLAGS_START + 0x0) +#define TESTING_FLAG_UNUSED_1 (TESTING_FLAGS_START + 0x1) +#define TESTING_FLAG_UNUSED_2 (TESTING_FLAGS_START + 0x2) +#define TESTING_FLAG_UNUSED_3 (TESTING_FLAGS_START + 0x3) +#define TESTING_FLAG_UNUSED_4 (TESTING_FLAGS_START + 0x4) +#define TESTING_FLAG_UNUSED_5 (TESTING_FLAGS_START + 0x5) +#define TESTING_FLAG_UNUSED_6 (TESTING_FLAGS_START + 0x6) +#define TESTING_FLAG_UNUSED_7 (TESTING_FLAGS_START + 0x7) +#endif // TESTING + #endif // GUARD_CONSTANTS_FLAGS_H diff --git a/include/constants/vars.h b/include/constants/vars.h index 5ce02c1467..aac52dec0e 100644 --- a/include/constants/vars.h +++ b/include/constants/vars.h @@ -324,4 +324,16 @@ #define VAR_TEMP_TRANSFERRED_SPECIES VAR_TEMP_1 +#if TESTING +#define TESTING_VARS_START 0x9000 +#define TESTING_VAR_DIFFICULTY (TESTING_VARS_START + 0x0) +#define TESTING_VAR_UNUSED_1 (TESTING_VARS_START + 0x1) +#define TESTING_VAR_UNUSED_2 (TESTING_VARS_START + 0x2) +#define TESTING_VAR_UNUSED_3 (TESTING_VARS_START + 0x3) +#define TESTING_VAR_UNUSED_4 (TESTING_VARS_START + 0x4) +#define TESTING_VAR_UNUSED_5 (TESTING_VARS_START + 0x5) +#define TESTING_VAR_UNUSED_6 (TESTING_VARS_START + 0x6) +#define TESTING_VAR_UNUSED_7 (TESTING_VARS_START + 0x7) +#endif // TESTING + #endif // GUARD_CONSTANTS_VARS_H diff --git a/src/event_data.c b/src/event_data.c index ccd0519c51..a8a05598a5 100644 --- a/src/event_data.c +++ b/src/event_data.c @@ -27,6 +27,13 @@ EWRAM_DATA u16 gSpecialVar_MonBoxPos = 0; EWRAM_DATA u16 gSpecialVar_Unused_0x8014 = 0; EWRAM_DATA static u8 sSpecialFlags[SPECIAL_FLAGS_SIZE] = {0}; +#if TESTING +#define TEST_FLAGS_SIZE 1 +#define TEST_VARS_SIZE 8 +EWRAM_DATA static u8 sTestFlags[TEST_FLAGS_SIZE] = {0}; +EWRAM_DATA static u16 sTestVars[TEST_VARS_SIZE] = {0}; +#endif // TESTING + extern u16 *const gSpecialVars[]; const u16 gBadgeFlags[NUM_BADGES] = @@ -179,6 +186,10 @@ u16 *GetVarPointer(u16 id) return NULL; else if (id < SPECIAL_VARS_START) return &gSaveBlock1Ptr->vars[id - VARS_START]; +#if TESTING + else if (id >= TESTING_VARS_START) + return &sTestVars[id - TESTING_VARS_START]; +#endif // TESTING else return gSpecialVars[id - SPECIAL_VARS_START]; } @@ -219,6 +230,10 @@ u8 *GetFlagPointer(u16 id) return NULL; else if (id < SPECIAL_FLAGS_START) return &gSaveBlock1Ptr->flags[id / 8]; +#if TESTING + else if (id >= TESTING_FLAGS_START) + return &sTestFlags[(id - TESTING_FLAGS_START) / 8]; +#endif // TESTING else return &sSpecialFlags[(id - SPECIAL_FLAGS_START) / 8]; } From 4cf219e5c739365e183c20b97e5508b3dae15ac9 Mon Sep 17 00:00:00 2001 From: hedara90 <90hedara@gmail.com> Date: Sat, 22 Feb 2025 16:28:53 +0100 Subject: [PATCH 53/73] Resized gimmick indicators to reduce VRAM usage (#6319) Co-authored-by: Hedara --- graphics/battle_interface/alpha_indicator.png | Bin 211 -> 178 bytes graphics/battle_interface/bug_indicator.png | Bin 4942 -> 568 bytes graphics/battle_interface/dark_indicator.png | Bin 4980 -> 560 bytes graphics/battle_interface/dragon_indicator.png | Bin 5015 -> 567 bytes .../battle_interface/dynamax_indicator.png | Bin 268 -> 184 bytes .../battle_interface/electric_indicator.png | Bin 4876 -> 555 bytes graphics/battle_interface/fairy_indicator.png | Bin 5006 -> 570 bytes .../battle_interface/fighting_indicator.png | Bin 5009 -> 563 bytes graphics/battle_interface/fire_indicator.png | Bin 4928 -> 565 bytes graphics/battle_interface/flying_indicator.png | Bin 4929 -> 568 bytes graphics/battle_interface/ghost_indicator.png | Bin 4941 -> 566 bytes graphics/battle_interface/grass_indicator.png | Bin 4887 -> 557 bytes graphics/battle_interface/ground_indicator.png | Bin 4873 -> 551 bytes graphics/battle_interface/ice_indicator.png | Bin 4905 -> 558 bytes graphics/battle_interface/mega_indicator.png | Bin 365 -> 218 bytes graphics/battle_interface/normal_indicator.png | Bin 4885 -> 559 bytes graphics/battle_interface/omega_indicator.png | Bin 209 -> 177 bytes graphics/battle_interface/poison_indicator.png | Bin 4937 -> 566 bytes .../battle_interface/psychic_indicator.png | Bin 5168 -> 563 bytes graphics/battle_interface/rock_indicator.png | Bin 4933 -> 563 bytes graphics/battle_interface/steel_indicator.png | Bin 4904 -> 555 bytes .../battle_interface/stellar_indicator.png | Bin 5418 -> 582 bytes graphics/battle_interface/water_indicator.png | Bin 4896 -> 560 bytes src/battle_gimmick.c | 8 ++++---- src/data/graphics/gimmicks.h | 4 ++-- 25 files changed, 6 insertions(+), 6 deletions(-) diff --git a/graphics/battle_interface/alpha_indicator.png b/graphics/battle_interface/alpha_indicator.png index 84cfee2cf1364598c2acd71ee78d8777d7389959..bfa504e89a793f04efcea7bec8e072947a6b7d80 100644 GIT binary patch delta 111 zcmcc2xQS7*Gr-TCmrII^fq{Y7)59eQNOJ(O00%RWlnFWKKT*-g)xgumF@$60TJPm-tnHWsG=ss@ L)z4*}Q$iB}4o4s0 delta 144 zcmdnQc$rbLGr-TCmrII^fq{Y7)59eQNDF{42Q!e=(B%)FsOXbs?&;zfA~E%B&rV(j z0}kfQKX2>{eONPt*iRmvJ8|_s%Z5D>Og26@13yoeI_Yen@;1_J-9?Fa{}>{x8Etn| lc^(29#g`i4nda-upao=e05J$$3Z4w2JYD@<);T3K0RSE9DI@>@ diff --git a/graphics/battle_interface/bug_indicator.png b/graphics/battle_interface/bug_indicator.png index 7ab7dc6dfa37f207ea32e8655499176ff9db3b21..2e5893ead84d92997cddc13b965874f9f6a612ad 100644 GIT binary patch delta 147 zcmX@7wu8l@Gr-TCmrII^fq{Y7)59eQNOJ(O00%RWlnFWK&%nUgn(6Eu;OXqFP*9Yg zmYI{vz@Ra4^MB?tMwaNuVp}KA6|#3X@^om`f;u@wq0sj}B1KPvj>FVdQ&MBb@0Pf8ybpQYW literal 4942 zcmeHKc~}$I77q#!#icGFNO?^R3J6Rx6S7O#5`-wx2)KezCzA;o%|<53qGAixs<;xt~0xnm4OR zcQZLeQk2*@wv91)0w?X7OZtnA+cs?pk?qS0&A1rvl#@~7B@Wni_Iz^J&%WV;l~00t zDZxLu@y0}_PON!$D6c1V)qM55^%V4aCkk+@DJ@Uif0{dPqjTO3yVmM?QF6~Iilq}<56<~2aP_yDp3$c3f_?ZA@0nkX z6T~_!uRK>BlfNsFXdCNScEyU+t2<=DT_w8<6SpWon-KOyU0OE% zn-04%^u}j~b=KAzT9jDUa}Wa`cbk|DQlovY+FNEVS-AG=Mj z88VC+NWXY%#%Gyg#g8vG%!*xi%<)lq_xB-1elJ`me|Jkf47t#{GhgDkdL%M^^Hh~X z+;1FpBqxXMJ}afQJt7n#W=xH7s=k=_jSvf}S(|1*f7S3Q6QDz_8}CFce#)s^P+u2G z-fN- zFe2IhmB-6DPm-slJIsqe*cJN8&FV)}G__=A_!kY@J$L$cS0CQW?6~yeXr|w}ONF&i zaZl1ug}1LQS}4qjn9%&hKCW6ut!_TQb+y?3@#@`&1f9`na#@8}6wJB#uitr5kLl|w%I$f5@YV9uLAw`cbhBDLj=c)J z|GboO|LDDC75a|0hhLO7tdb;^D0^+tW!4XAjgyio6sxs_SS*){#jm$9*t~hGw~0c3 zl-sYJ9WgW5Gi8E(Y?b`q-s?B=XE>xS-CN?YC=O1%Ph}IK;n6NOS5i{_)8^Vb#w`A4 zv`t{A?V0+s(o4ZJ%9&G3)_47IXLVluueVSAN!dFG{rW1$>R=AOzXd^Zqa0F;hV7xI zc7D%9B4+P*^yw@pTKQZ4$+SPbAD#9;JpX*|$j%LC$S|IF%cz!Y+01+8vt3kEq?7#I zKjF2foY@+^b8+&WXw!mQ*{JLG9QV=V)6S0GF)b@|WM)DRf8RmpyCW9vbf}5StDmv? z+lS|uIQ_ibi#Ss29OyDLls0@UYney>kP&m5IN@RY+kM+^Q&;pzjptiEQ@3GOa}TDw z_&=xi>?&NCm1Ei-gwQ$_*Qogc21j*+_Rl{XkLS97+BfmL%T2w@hGxB*eCkF6JtW{J z*AUy>&?>rRv~^0lJVk7r><{ggQ*Qj)o@=bEgf14h)fC2UskNnvix-`?8a?{6Z|Hc@ z%JQ-@QrGvaq^*1CN0W?eBH-&r&~Kdx&{r48!i1P!%RrTS1+qF z=ZP7PllnL#h6k^}btc!r5K8Qgy&=x1v81EKn79Vl0#y=tMc#24B9+PCSePk@A+!dI z6(IW^O%tJdOV&HFnP)8N3=RaCzrlS+`*rRXWuPUK2_>KHh&P5R7aXn9fq5s062pHI55VA`3e;Z zao8*zVsjNrNTGz;kb=wQVz@%Z;h=*dW*Z4mm8fQLRAwk8fMWAufe#1gK>!kg*c=`X z2{1kkMl2N@XK^sDiff5Ri3z9cjan2eC!s}SaHc^QW0^1$E)0}QMRXPeek+k{P?HK6 zfIUFyl=^t`?NlV8#Uo6pnNNhvXS2C%gpI%~HlNoYwFPk=ZX`i1no$v$!D3s?%?l$0 z=>Td`bEN_RiyUMl6dQ5Wq&G(D^%@b~3_&wnS_+)z+rKQK1PL?}%{4zz^$~b%|6Bhi z&=8g>8qHF;LKN$FLZT~hrNt4j>z~5Zs4fNvJA9y|UdxHUSS|(3VZ#E{2ST_$C}38p zfcPwh0z#Dtg5xkB@xl5Ne}hiyRi=2|`ffDwYTV2e%<_R? z4utR{5rL4+60#6Fb0Ar!c~8I2)|dG|eE3=v1~ma-*DnLj1@tQBn`Sk@mzl!9@fui% zztIDL{@~=j`29fF2fE&if%j7WP+cGBdM^gvOZh`}{om-adwbl$b>JURJUGnk{`9Na z;2;Fc!y<#hQxUQ1SAT5;Q6x`qY`j?9OD2Aqn~#-8ZLehZ<<0%+_@>yJb8$75PcQTO zz-9Y~7}yLqgf1j0lo8|2w-qHP&j|=^O;TB~?LC|ELp&YAez)TS5l1Qsj2w0aTe@eY zp(bx4Mb(ohcZ>Gr-TCmrII^fq{Y7)59eQNOJ(O00%RWlnFWK&%nUgn(6Eu;OXqFP*9Yg zmYI{vz@Ra4vo1>+BTMvSv8|I&3)$OidAc};aLi0jSRi1~#Gu{r>^b{piAE9oj)Uj< n(;6ie#3pgX@WzO1Uy)&On8!HfhGOO!p!p1*u6{1-oD!M*&Y8^2U4Hl8-*>+| znRLktA6x5L)&v5$>%O(jnpbaosu8gMfF+g-4&~3kf+mOYzBPl?hko606Xkb~4vRoNnE7_}p?`8^*6&Q#$yY z=eYVsj-MCB`OABBzuvGg+?I0$Q~Bu*+s{s{`5Zcvykz2ry3-fd<>e&F9<+2d4K20) z9Cf2cG}x4;;4VpDKQ+6w>5nt#Bbu`)FXlEolZiWO`zj9h9S_M}ODKV(T8?IyH^iIY z=SR&po2T43H^wja)1CF>vsZ`zx+TOl%N#1=2VZO{7l)NaZ)<1Ga4uTBy;RJtxo;hA z{^dYyOQZ#o;~<-U<@>K|v}EQvvG%)u*rT6ans8zAG(>xtxlE!rMlW-!a~Z3&YJTdBvR z>1U%)O_1(i%I3{T-%yq<0?+95-eifDcL-|;CPG1ry`;Iq~B!s#3$vCcC+Xit)(v#TDzhzi4Sf;_+e)b z(dIhG%3bIjbEMhcaYvfj{A05V!xlU(n%QF8EI-XY*Fp80c|T}Y=0>kO=S8KvYw!FJ zX<)PuPgQkCH{1L&G(n3=^k;4}RFu#|opFIn3NBo6J!4jZW;@Nv$4Zk@T23yxq>uVz z;&1j{E>~`#x%6q@2B-Ab7x7lOxb2Dy6W%^D`KU#2YE)+SVgEKe-0s0gyKe0XIVMl5 zJauybX&mBQD&M@8ANqaubI$Yb`tS-tF7}PCv8O4M>sGkRGyLx0>CPbk?#}G%)!iKR z!mmoNpLn@KcIRbY+rr*dC!Y;1A{WO1zh^r#YIZ-wfBy!lt?yZ9d)wltLf5FGFRu<* z_&?|7AL&~eS&}!8vEJpwZ&L`ZJw4YQu)wIng7UqpDQy#y^+g8<$+8CjKZn@j%(X_6h>&CS@*8+V`{3lL_x@wLNdVQ5wD=jOh%#mL#ziM|e#N+a> zRfV<2w+pCNJp?CMf^LFRE*x6?^+U@x$FUKawkk2_#HtWHpuv~}c@WSiMzxby6LX_jhxW#zo zkF&hy`1ukiPNje9T0Cyjs#~l8|B^2L!+TDN10v0Z`-{@D5VPR2opU_@a2ojXNLXIJ zZuiGD;xp;bPQ^>rGh$m6{rxwO7r1N~p84IiTSK3k=MB!UZ*L{}EWN{4$G5fKcfYH# zbWFasK%klL3GJ5<+Ant%XilAiu2es4K9aEgM@yoh`jeApc6J+&lF+Kp>S}AX%HbEs z9`>0}cGj#9q~6wm>FkJuDI6;H=OHQu8J4M}DA}M;gDFiQ@I4J`7>Pr5L@64BE8R&? zYyV3k;xc#AYL=KPRtwNr+&5W+1}3ivLXzVUu8idAVa+%20DuD3!9;^XuGI1j?j#c~ z58NBY6cW*7qKk7Ug^DFafl7lCnPeuJ3JDE(BAw)6P2_827%#wk*(d~fawo;=bZQ=j zqSx!mdInjgiJ{QATrP!5r_kvTuz<8lN*!!~l-hYlh!G5LREubEwGLM)iAGFVs!Gtg zlSn{Me3hRih90>SRAtsB)fVgy+3ei!7 z!J>0uj7jI3pkxSdnM$L8!E)jXI0mJtl`$rTk#L@uMC4AQlc{ec5;?5HfCJbAxKgIl zYu~7Xa0MEugN=OB*c>L4&7`uJ94d!HWxX*9K{Z;?i$+u$l}u-vG{%MDfpP$~u(4AC zfJqLj;R!S-tW#-%R4TbU$(R(;=xJ(jB7bCAd~q$XNHX^PXx9g#@gq+on?R16R79ew zad|K@5=09pqB2t;;5VW|Vqs+r3U>HtOTCigf3sXLin6#|4jaNSm%h(VD zX3*SFgvsEtM^^kbx>kkh^sol?iUE~^YCsE_sv)|LlDY8hZ1l0Hktr&j0Z~~HjT1!U z@|aW}i%Fu47E3Yi=~vbADgVO<-()am2mrqk85k~LR#9FLt5Lp;6#j$9=sNs^5dif2 zAn(NQd%E7!^-c`DlkxlRdQaCoG4M{t@4M^&Mwj)Q&mB|={sHO1$IQLqJ->htA*#eb zNC>Xdz?93Lia@+dvh(K6E7e2Vr0jxXq%M5-DavqR@VVoe@y$&M&8L39<~9rt%U%KS znW**+(-H`i?2V@xA-~WO2rYFYvC#6-c>8g#?AtXnn}7%sd3yy}-9V!E*-)*mCv2FR zIy_$3V3X9aV@lKTj$TRA`i819lA5KC+$hl!sQYZgttPcZ0Y`#JxWc>g!d*{wxM9zR+&1uds$ f=U literal 5015 zcmeHKYg7~077i*G3Mf?(ETF`wh{Z`JA#Vwkmk=cw0SgGdGMP*uKprFmNw8JaiVu{^ zRTKdW2)49>)Pk>quY!OTK`o+26h#H5+h<- zsf0k#>K}zg9=Ypc^)hB!#e}avo^t+-d()m7js4%l8Hzmr{I;G~)y`hww)=$q+Qgw# zYc>v=g%R_kY!2@X=|3jQ;MiC-mLGV?dvR=_e%q;usC^o zy{hEl4DFVROXe1J_6`lD1-lC;&a>5Dy)dZCva)2Y!-(wJjpp*?HAN?q=yicQk|L%w z)wOXSVe7fJhlr_nY+HZ8GeW!mE<=aGE~~O9IxJWnNoE$#J}Q~n7eucS62rm5>_lpx&8$gNXc)D7nyo zr`94)7<~KFj%c4(vGjYw$-7)g{LsLkch=5#=FgYrY+SjlwPYWExuC)pO?TcEcp(pS z<%sLuQW5V(&KP*M3F;05))_t;GF$;Ki-PE z=pH0i{j1J<4t#Kj$s9a8PggX3eQt}O>B~B5{gl*TXU;ZfG#XB}pmpEtNk49>AlG?z zKyBIT9lxA9lb73a0_oXv)UNdKi}(;;)!xF0G`Es(m#v1oKVO&iqUhNnynS!)-R}BJ z-xM{^{ZTW?`@1_fUAed2+Gm#2WFh~t;_K0ir1}$&^=#{(liK69*xZbtm%sRC9h{wAajk@Q>w)(Yj+#}1NCoL6?Yp0f_ep1z1xog?}ht>xa0h(hnbYRM{ zZ@RYcI+n(Fz3#9wRfTSMqEn%Ipm%kZ$H#8j|MW`*G4%4Oa$pf3oed&$sYDFF&5NnVsc$gPY4t zhcephyLwDo7v>LbIPbrGpun;7+vGLlnufSrw3)w^6b+kXi}dsE=oVxV2qqh(K0ZRe zkI(CA0A@hmSDCzk8llaGr6EiFK3!*Plh`2KyI|86_Tp*j(S?=MRwTi?Kb+{&fZ!-c z)2r*&d!{cpvy1s+MwF>nuUYMtv;0ebi>oQ~D>wE1diSe5P4k@-gM`9m$dA_LIteo60N@c5+Xfv|JAR=t~R)q$)99TPkD z2$pnJFLjj6<$9tMuUS_Fj%l0*D_?rp37wjk8>)X9Ncpce{7qaY}y4 zSDm}}>H196WO>PUN6+U@FTX8|$j-rccvFeJq8m;{pDFEPTV;cT*N)`QOCA2?*k%2z zxbfLTb57i9CHa5W&QvDeY`w?3tumXQa(S+gYK|vVC?wo!?#@-6J`G*0=xi!W%J|)k z=u@%cq{*a7YY&mI@>SJURciV0v&zna@z%3cYeL{Q6&TyorC>aV3j(>QLPkc!3K2%u z%9LPy6A12}S|x(UV>nTS#Yp8m(&MUAB%)NzBZV;put4d9#YzKGR9Hw#P$-%bk8;E$ zPY(-sEf)aDFdQLjWeIXMSIZ+Aak=2$Af}LrMiV@qM+z4Ri9QMyMx>MJWEk?(N|R|M z4-2BZN-W_9`z{)V08czpERHL=6pBWpA#2>o3RMh+%HeP*FpWZ^LBIl1>*P41h2-kl z28a<1Urddvq)J?>kP{74rW6R?z{}O6EC4!A(>Z#haZrdA}WP|PnGljF0;LWt2f{>mg(g0UPiO2HB^88B6YsML2t z`tt?CHy#EGVx%&q(F>6MjwLRYyd~?M+zc9HIb#z6?r(74v3^~<(HK|>1YBPQnq)|i z@5>_@;&a6cR4V2gZ$&7FL1!>H5K5!M5S;-d5Qoj8LTm<$&SJqBgGpnLf#S>6I3h3I{5jG8>qg2?9IR;{>N(#CXNf?`z0ZI&@ zM6ie{VX{$(iAg{<5;_MGu^BW-Lc=5s2`mw_C8!ZfjB*z#R5AoCr&NZ-U=*c1#;7n5 z&h--Vc_bPcek&0sAh-lLfIT3UixnF6TUDr3hK1mWfln%vO{X*IFr7)Gu^BM!tkIz;C%VTglKMG#nR2EwL`nAm7}Z_w2W39dm@m{$y_6jTFR$XE^0 zWt7bM?`ETk#SBcrG&cxlKvZ@pmBXdOTso6P87-D#*we48b*KCfAMQqjF+%|OjmW@o z0kewoW>}5#WuWjMJVw{yAB+H?KLmL%em~Ilfv)#r;Ju7Lbk_&E-iv|vGXBtA|2MiU z-hS?2a_|pG13qSQN?XT)480rVEqL43}J!K)%a^d!C*DhAPQtNi+7NOOVJ5E!E z^On~i*_zl?m(+Cn>1Eb1IL!KefX_$DfCx2#U^&%rnhERLtq&a|CfP)!G%7mQr2U0BQj=qiz3>*7ueg{sT zSZ(iN?CIhd!ZCAg_fB3010E*F@SDH+Wi%G)2#EhUqWpK)!L(213X8HL+hPk8`k2qo eeKYm_9|pr4jER@IA8!Sk$KdJe=d#Wzp$P!MEGer1 delta 218 zcmdnN*uzxc8Q|y6%O%Cdz`(%k>ERLtqy<2jg&9b`z556xz+U3%>&pI|nOo41rTanI za-fiSiEBhjaDG}zd16s2gS(Fl&=`fX)FK6AJ(I%LB@cm0I7$lq+<`L2KsJL{gQh%? zVo7)Ob!1@J*w6hZkrl`{m}qJp#F*sm?(%;r`=_HI5lERLtq&a|CfP)!G%7mQrpS+$~lu2Xa=3~rdj4aWQ z#kNjP5wf>Z^>lFz;h346ut4BLBZGF!Gxm)NCNmE5r+#Q=2;p+(b+OmJBE!(Th`DNC STz@^#C>jo%PC~D-Ftuces?li z($HXgTW4DmiDWMh2@D6<5ysQf0{ph!Z3F^~WroOkx^N_otRd72JP9M~(lrSdfBbKAAQc-OdL~19GkOk!lf52=j*qJUiTHJwH%S$KEoKYD~tkn-}gKF zJ~KP3B-uA1#BE*-^?23z2^CK--pMVwv%M=@DBv2jix=*-46i+~^4s^jJTuTNhM_0Z z?O@j`qRZ|0-Bb6*H%^ipSY1kPUaIKKQ;Rn17Y&>2#ZBj-yi@Y2sYOpYFCTW+wyk=z zx|RKX%JSpGvd-n6gKXsYWFEy$9UimoJjAV2hZgkIk1~G|UHHtV^pbF6S+L`~sa~Tt z-SbcW>XPPS*sJFD&JzJ;E8d>H7=C4=y0f@&<{y^n_fQra?W{QQ%zT>jYsrN9w+&A7 zMi96EZB@SdPOTdiM7=Iqy8OKurb9TUyjHlw*J zs>IBb`<4AVa&4elnR%)I?|W$F2MdlqnlgEuYWaq}KdwoMuD^7CYQqn^V8zAal2>cT zzHf{kQ&u0K@`Y{v<6Y95ehcHe%pVTwc$ck;+Q)s zlG~Yvi8bq&F17dAZhrfMOV)^Bs~vWtHAN52Et`d0eRZe@$zh6hA{x3|>7B74p)i{C zaQ5_(@zU^xk2HtfmJ~%aOJ6r`d*l1I^_J(3OiRZ_L)=!TzkTF&Eyz{0b~d^uI%u20 z-Z?7gAD6RoA80x!@7}`tA&)uk^5H^wD(YXeB74l-MMEczgZ4GA>D+hdopVA-Lc;#z z$+;`FMJvV?9KA{GSr_@_P}fAmvxbN(7W+8zV-JI!l3PREcig<-T{65aB|#@`%DL&{ z6qc~Xxd~bJIJwc2IRXtPPxLhNV1+5>RP#Bb@5&XU*YP{-Xx+;e?_n!-mhi7P~&9`Ss8W&JyMRv1KFkFYI!@kMaD&5Ds z+I0&H>#BLNtoD%K{wzulW=y=fxNvPmzIqb6WK>d5z{xFpkh}{0`Ci>7?8qHKrSHLt z_7%@6m>Ca-N1aK2=epC{`k5DQ(@7$kt-wVhsaPcXup7Z1Ec|wZFyyRs%!;sxnL$&Q zjT@7ELAuR*^%~xcvDpiEm5==<^k8!c8TbAjU9cAMf7ds)wD&Vx7lWU^ReBHFkCQyY-Z_@ovxYBf2F|@VY?lf z&r3=(o)rI_{ldHbl;455)dhCXv#PYSxZaKSjawx%TPnj`6qCemzMd1gt;?#ukJ%i% zxG6?A@4;5YJvZOeVRZI6hfPzrY_!{`&*v5Gb$&D~dh^(t`GvP;s|cby1w6jFnUYA zE_WJCelEM?TI{cJjIUL8b=4m&@LbwE{@C?~o&<|6-5w|J)l!1}?{hTCcWax44+tA4 z!}Uob!ov^RB_-Xv(po^AJ`G(hdt7rcW!()MvZ(BvQ)Uhh-yNY~r5TkcPH0uVugf35 zu^8?~EQz51L4dL8goE)oPcln@s+Ckku9jg`y;1|lCyC_ar`I58BBmqDusB>Lq_m&- zg+j*VLdsmWgf7vDuy{PgKwuGu&`8vfi1OtWKVMrPy#N3xF&#qIE0a`OfnG>4;R?XL zQB0$dO)9!XA!VLKN*1XJjLf34sB|bukEb#yzP4l^Laq>m2Tt#Y08c_nyiTVP&}eCC zY1A|(RZYavU_PHuqcdm>1_U%9ZMsT_=pmKX-3ZZ#5r}C~0@vtpwTf)SL}cm|osdES z>*NpdDK!$wM|hRCp9R1NO^;}3FqKYIDro~Pw7Q^F0MZ}OUs`A*!CQtFj%n2?1d0Wv zVk({cKnOYd(O#26B$?8YqckiDQvy{j@CtwCGFU8;ezY)B5Qi%@CM!VpXPP=(@rkU@ zVl%Fo(is>CF#m}Anf8a=P0Bz^A`t|t(G+8N;y@wA=wBdLqqtmPx&?0-n9X4FAq5M8 zA(jG`Lp&7WLm0}FVH^d_k}>%Mpu{Sz4pE_)5ek4)ae%|&DHu!z1B2)cgbuM_9t+~b zJRZcAp>&wR<+J24eE>ulfrG9@k_JX)gpva&E?t2s5EO%eXEwy5%VZFr&yzt64jV-j zGNw$%;+df2s9?I9P$Hn5xDtuOXc|?VX~9UiAV4Y>QW(@euO^8!3DGHl0oVh$O0G`R zeo~Ial~{xhG4cs>cq|r&#pJNq93F!+z)gqxPgWK-h` z5VX&U7D>hACP%=oZwZY@RB;&C;r%W3L5}}Lx#S!fgUytqkOJm{in9^GF_Vu%av)Uj zcx;|b)>rY5=vuWxmxd5nKpe;vWCL2rlnvRdpUlahN0Szh8JVIpm=K)}!MsSAFJN&5 zbQXoypDfL|r$1!tL;D{-d`t=hh5)eZlY!v^W)|KcF=5F;lZ-aT)j!qDyB*27#+A zV$l^pWdvR-U0+{+wX8>*o>x$eR?g2oP3tX;I)8L+a?NikHK$))=k|ib=7k8@4Aq20 zYe}SGqm8E-DZkJO2yJv?Nsvv8)o637lX&~|z2L?nAsY4g;w0nLs!;z$@%y`p2 wd3i_AguD*di~8PPzgf1T%YI(&4hasV@$ke~j+5ERLtq&a|CfP)!G%7mQrXJBA#&2)AS@N{-oC@9KL z%gjk-V9=Pj*^;G^ajz{B+Sg?GXK+|?;9awl3f yK6J7-T4Zwg3kF8NOrKVkvadHUI91fNgS{q{>8bU{Ic7kc7(8A5T-G@yGywpVU@g}G literal 5006 zcmeHKc~leU77vP`2vo}=B5Dl!pv7deZxWUUFi|5Z1O$c3FqwoYWFZM80aqv$iwd~2 zXaTVg>jDUFPgGiP0m~-Etttu>thRvqYU>l_eF>;|UjOl&*Z-VzCNuNhdw=)d-@V_R z%trCjg?2WsHaHy4PACWn0oN&}({eoc{q1%aSQ!6%iX=i80_*W=jY@_kpm?28jp9)Q zCd1(jH-B3exwFU9cBs!$YdNjvprHzwA6$ zHqOT`NdBoZ_H)i{b(7NKajSY7qN;c&U zO9c-f72Wa?^jDPYzchS6o!VqvV7tFAXK;<*hV?ZkQ2v!ajg$8eRPI^Owz}X3=S;?n z!3Bhrrn+pheop26$XizUC(iEE9kTZZ6brVJ^*QL&NgF7ZJ&}dKdPsWr?uZY9di15W zH@420s7#-JXSG1p?uJVA^E8gmS zTF&L=&aDJxwlRuWe8B%{xcE*&MoXHJU`0%KV>Hss$}2-A1YF$X9@N`-RQhqQ!?H>% z?^8G8)Ru_IQ5xRrmGd|wV`pdet*{Wb(o*yf7xzOkwA1I>K67|)_mF1${gUiC7s@E-50xxEW3~C) zpl!YNLN)t8jv-6(LmHbT;BguStNX2IcCJn4<*iKU>nYgxZ%Q+^r{ah28L*xH zPmy2YEa$874%v+*$n>s~Bd7W@J7+a*tZq%teJHT_T4=~NCBJi6y)(C7uDg+%)kNZJks7BB9c^2;)UG&KsY|t}Js2}!*~!SB z(xm$No^}1?{8JUY^-p8&IzO-rc#`DOnI1Rmd&A;8(~5k$Gm?q^IVA6MN-a5$+>UwPhKovYu||L@DQthwYXVzb0F*Xkn-5q;)ihi zl6}#~pD$n723_;{V9zrL?_Ix9zQiVR27NCl*%Kr|tQZ{5A_L>|#X>&+)c^q7zHoIe zPf#az%m@x$9QbjXvt!~V@t*maU$GZCWyKU%J1tKl8-JNi#{?l!ZWFGhrTb=uSx=Kk z&y1SjKWJUwabDOKxTpsDs5^I-RF`5yKTS?BF{F4(=pc84LKT~g-y^W?}~PR%O{I~Hv| z*59zwr7_+MJJRmz@3vTgpEQ;Fx#zxdlRv%52w75k-@EtT?BpS#rlIHK^jyRutSraP z_s`iwdk;tM&ev`Ggn}Q8{b}|-KlQY@tBU8(uOBb)ST{WVmIh2}7Yt0~2+O-iUti$St>zN;t`IN;Ok@KZQud`1*(Jb z21SBW%Qf%_W?U|~H!VX1yjevT&m%;L#CX0+gW~BVI*CjSG+@b8f{zW}TO*ZmLjrq&YVNu`lP6b^?2k*N@sN(352tx>6i4Me5Z-2^d$5rAqD4W`y% zDka{83CF6EbUXq9$nme@Q>aCv*YHa1C<}lO$N;M$3W*FU6wp`;tu8PbfQ$z8mlj$H zc(Fkts8*GvLD0ZtRH<_x3n4{b+pCi_3FdU92!tk}3ZSY5UMX+6TqqQYUt5?ckYft9 z*$R;TmZlDqy&>zZ*h~_0I%5L?=C5(z(tee@Ss7@FMBD%sl4J@`7{DW#{Bxx$1e0>j zw-g4I!l26-LSf|izZYGnKUXf z6^0Aa0o1~#P6YsF3y=+$uR&p*N+VIJ5_kktP)plycCw(X}d>P7iBPe>un$WCL2roDJS{l+2Ib*4M|OCZ@<# z8j;K(QrHp-hf61OX)FRXnk;16)337ihW>{SZ?nRfApq<~*1&K9vkH1WtVa1VQTR6= zqjmTjJpkzUPTq;%_jJ9d>zx>QC*}9u^`5SGV&I*W-*?yljV_xvpF5}$`~%X1kD2bx z;jQ39h%8J&{ZwIicqXvoOAtpYt>7waeKi&q-MpoT4=a1?BelFiOm<1nrnZ* z!WssL^~^wf6h7cX6C+ofA`+syYD7% zi^$j0%y_ynfj}@5@ZAFN=LGFNULPMH-R{8!Q4jy~I@pPAm-myM_K zmJNQ3+49#`SNLt}nB>SUcy!d-t8Qj|%=&o!#2M!s_h4Mt``$;bLhoESuy%L71K4PqNcz!k>A?Am-g?Zr zsw0hyCb-_+Ty|J*O?F?`y_}N~?Ga0DfLlNNWV@`EUS##8M>n1!)I6RpxMfBlJ)F^P zO0_(k$r8<8*!<;0Wzawt#E(V8^$ez@#0<11_8MVI_%QRDkxaEh>78C=KpN*cRg}8W z;E>}a>mJW~(k86Cn`cDjx9o7;Zj)?E_1HomLZCk<&EC4%>-z%-R;GGb1eXa^*p^Hi z-d4f)d$X~|y;eKvOQU>#tNG>B*<4X%=I%K;;S-(Ou8ZKD{d@No6vlMyuv;c=tt{WU zIBrA0Aop2&d5jJ!EYaNYOi{{zIgf77HO7eYA z-7`&N`$dG$)i;V}vX6LmE~fubSaf3p`0L4&=Yb{^w9-#)$TCUwef;%>+ZuZ3uw7@z z$)fzLZ^o-60fU=rD(a6#9K2X9tdcS|^*R)lENgszdc&a`XfdTKqkO2%;JDcv#3 zeUqva7~#92@k8Wp#aeE|&VYwf(Y}=n8Yc2Xs@wW)RTrJD6JzSl?rr(8)kh|SudpAV z-u^JR&wn7D9(t4E@A*SV=3sT%9_VgzzEy0xMO*2)U4!z=`;U*yuYp1u_Ect`3rIwF zZTjZrOHOu;bIDYP)(#Hq3+b_nKjO^pw9yC5_s2dlF5l?9a>aMxrLD~G|FYO|rOU8* z?_+60=xW2-M?2#3u=wcPbuVorPOTbf-}t0&l5cucc}?2NpXzvn)Bm#G&}(h#ym3N^ zxH5xSd$z}_J0lOI?_5Wkd-2t)*QQs^O1|q_omN2RcM;xRuIefudRCij5|NQ?dm`Tu zqfDs(;!mba!MYqv6G|n=sk6rGn@ve~J0A>&JzqD_4>~QQt<$&4y`OzOIKYcQ(A$Xe zcp?Fh_pT@4ouDW=lgmFXnzGR^(A#}M%G4>bzlnA&+PszJWw9-yw9;Z(9FTb57DV|0 z;Wh@>Q&OF`1shI_S}`NsV99{tnYOcn%kEzFl=+pL|2%a!xhUb%onx;ErT)FdYcc%ZNFkj zZ!@&V$h#DelWKy|`qv4WtxE%alE2fZ$Iu&&cmlP@#5qSy>A%gaxJwSHXpz$=4 zlQGc|6H7P&ZXTl$_!pNHtyU{J6iPxuf_(zrUV%kXsBAWy0?;Tl8X4Chs}kjENJEyZ zW@#ZtFx(IojG;<3s*n@4m{6o5PR%8e@Ok39_+(0<@IAa-HOd0c2So!ZDO7uaB9l?Z zTBy|S@i@q6K>ui=3c`QuC;^B{5r@Hudpsgn&l(FMhTq#O<1nc%9WhKnq=*bxRpDN# zAG!1t2u1HLv=l_4GNsN6C;KB!H7fZ))<>~vXLRX|4ForTkNc7KyWDlkxRy}JaZ|u? z+VBK!T$0v5N34KRF-P}G6T@r(0@!2_WQy?ti6lpgB_Nq0c3^-24S*x*@E9n8T&0HO zFrtOR!R=8TN9-VhsSF1yS;7`al0l|~MrKDM_&}wJ83@c|QDI;Vgdc|DRS8MQMx})k z<4_=5g0Puv78wEQOfm?;bTSKsVX_1QK$rm_Vh5I32PK9%9tunb;me82peTf*lt<|% zw1jh(hy+{`&3?qIP9l;*Y6)(D?*UXURwSrCC}! zN=p$;h1a4Ml?vF?K;4XXVK{g?IJJAb7-y3W`TYSitQ@rr>Bu9);jLe6*zA z$3RSJnZ0m6_aQFx|!Hh2l? zvLVhJC3C(m?f20nL?c?J02-YPIFPBVAS#;!(l{VMqKqa>(eCMY**a4GhYv@c!k8w2 z+l|QZ=7RSs%KK(D%9obHfAJb!hkwxn4*l85C-M84uFrIR5(A&4{JFY5)AdOVe3J6# z>iWOYW&Gi|gUIoJKneI^#@gD%96tyFBA+04{23Xz=90545UmjHXm4*h@>Z3YU04R! zFV8wb87>O`^=Mjbb7NfdiRZ1%Vf-?D%EN8GRPw`A1cJ$A?X5>BD6+(bhH8P(-LTJK z^0)=_rlfk<;i82CwCbZBp1!&!1xP9B aB@jvnC+s3S|0=@G2m*Isw?nQGDgOmy+lEd6 diff --git a/graphics/battle_interface/fire_indicator.png b/graphics/battle_interface/fire_indicator.png index 4d3e59d543ac9e0f2b73933f1b74573a4e1b4411..bffb030804c2d49292048ee505d227b371c4259e 100644 GIT binary patch delta 144 zcmX@0ww1-AGr-TCmrII^fq{Y7)59eQNOJ(O00%RWlnFWK&%nUgn(6Eu;OXqFP*9Yg zmYI{vz@Ra4^B3kaMwaNuVp}Iq60&#E_jGX#;h346ut1=ou<&E?MyE_Y1@0pcp0^t~ t=m;>MU^i|s={d+hok=^5btT&+h6+Ar=0p2?=Kw8X@O1TaS?83{1OTB+DkcB` literal 4928 zcmeHKX;>5I77kLxve;HZyoeGbtzwxZlT20AX6>z^IdcOozd~W~vJh%UxCzF{u%X`jwzw@1B zvSpzGj&`ng6bi*r8t4}euAiIFPprZBA1!x*zR6~jmr{X3; zMWL8({4sO(y0%FUFFTybPdxT4Z{2HF8c z@dfER7#`D6zSJq>Y(G|^K(}yhm8|wAItUdO%87TE;%Ofbd{)ijJ!QBKcdXO&)RbY zw|2>0@4`E7o9>_S=`=1=ZGEo7w|AU1rjBVCcTDgAE-HdwjEYLO@^nm-1xyOgKz+~R zA@;Ff99ZTyD>ybzR_nZ$H&^YuW9@R^bJT#9EXVutJLOgli5<)He)`dCLr~j^89S}Q zG+bA=qmd(R3Y{O@?OmWK-KUvzZbrD*&0*`N>82JORVAmFM+sfAb)vkh>{)du$q33R zrRM4GA>)x%!iQfU4M?l`s&dHCzMv{vUBbEcGSiLt_-lDyWj0I4weG(@X@84Vc-B5~ zUG8G5F@YkRAM*qw#;>+p#B%fGI=aZdxkXwBCDW|hqJNH7pU>W#(ERB8Q-%Au({qQ# z?cQ3KfBfju7uliHCCxd;TfMi-XKh+Ae8jx&@mZtW@2oHPb6MyBPhIJ$a!$I>iIsDT zkcpug#~XggRWz;*ua88Ilc)aekXd5y;<@Yjh#;>y;b)xhMMOQ}T#3ATMNYPU<=Ek8 z4{_Do?}d)tdL`H{t z*`xD)#P32I9CN8F2Hz8hC(YE^@`=kg zMNR1&ujVw=6kXlnwV^cX%tP_#XGgVl+x+wznVE#+luflcVW1Au5)JPu+8q7-A5U4MA#M=cK6Q8 zwEN|Uavpkh9roEV>rAmjclHT#8qe#la(E2Cdxp;LQBdXXC#nc3pP$ zbqfxpe)%)_i^Y|C}?dG7vlW5w)(BEy<* zVQRPH7x(gSbS|;i)V;k;`->+oe*L$DjW=G!Sr_zq)ZV&A3;5<&t}e0VTATQ`-gb0q zhYwULqujdKS*)+CgDzFI*HSH62xI6*%3b)`4M5p@@7;Iuwh?4O9glLukabuIeK+ zDxnn9W^qE8Avy^jO9ZCs@rcw=IhGoa36wM+Z#$7m2msW$0i~MM2^vyp64NZWLU3;u zGiX$ci6LH0iwu!bC0adBMd%2f3Hh6dWERcajw;eCRl;z;sRIz;Nlc417<57g!)P?p zjcmGBAH#qJ0s(``Vz5{cuz<)EjR7@58ghaeq94N#Cow&tGZ0!0)r^TMv`GdrjRy48 zH~Fb`At7(!HRJ#bfDeWV)iGc?lc82K278bO|6~9%kkFrckaF;w#0bYpZIT|t{gZKx zVZvYtCHB@|m!wayl%vELcml2lrX+|8zZWt<8X|k^VWuF4Q0pvSfb91y4TS0)S?}d$ z)>z6JoCt7#i~FASo7yeLz$zp}=%>Y!%;`z}#58k!p;C(xN}=VJi*sS{;Xyne!i5ke zn+@?%0S0mSDum6$5gg%SgP^1u(tv6(+zbW4=>))Gb2uoU1EY|F!{a~*8^<7&%~3!o zU#Wm`0T)xU_=6zA^aSWiG+}U7W+)|qQm7ON8|JYg6$i#3gwInz3LHitCMIC9VGbL> zDJ)P*OgL4mSEFD#2{jsnGjy65i^5E}&{rlE(^z!oJBcg-HK>3C*aL({sWp=CRB}R% zM;K5upD>q?AY6paVR6|^K9~E>XeO>FK`)w7VJ4l0STyE^5rT36wWzsM0f0pgsu4=` zIBL-9kmSr z$+*%I2>A7@uvkJOnR7OxZNKKe#F)7F_gE zM-Y{=+@_{WRj6qSqyLR*70#NW2VX5sa(=2VKPrXNqd)oFj3bYkS}(uuC=`mFIM6Qy+=rM>D@$-~{-YiUEQ?aZ=IBCD1Ekid2r?0ebSY{a!i^+B zp%`yBXGd;mfNVwGks{baY%AmC)aBpxg-<)jo@fXQ+2lB-(#aAXQXk{{<&C$UEsdkb zO-xw*VwTY6OnuTt*Q&z8nBdL4NY0C{bb))eUaM#1TJ6}A<@mZS;OpNqTrU;=HAXo1 zb!PMJAMPmUJ+p0dmm85M$($ec!t$bYy=97`a@qDa{otr5T%h0jC)-7vn%r^a(ZE-` z&-2Ug{HuZ*msDvny4c}jq4B|lmETPml)N0d{Y5Zz!DZ9a)e()GFGX&1Yc@zH?9rz$ zE6S2@?x%4Y^!mw3CiGPp&&9HsvvQ+2s!SYwtHs7{!hpVwQ zV|e}+17Ephb`F0N*naiCJJhuE@=8161Z`N}PC<#k(?u(qL({B%2mSZA41k8-e63z) zWt9lE4Zq;u7-%(i#6p(sWP3Z+)Twv1OS7N)^}Bz+B35yE1#kfh*h zDOQs^Us*jQ=nDJZv{rZvi6~CBRBFza{#j|g(DOg!qLRwPIFZ+S zz-dSSc4ApkQEkxlN5_u};`Y|n& z=*5!E?0p&eoaYD<^^;qzi@hC#H*>*hkH{nhKy^{rlMPv@RqP}`Q(ak@R@uZhbKq!dIK4_X}Zw%=h& z*W3uVz!(a}Vks#UO2tCqyKM_LYyP4i1cARuhc68doi1`;GIDs*1?eV_?^kkzMr6cp zIW%H!G9%@&GeQQ2L_77bU6SsTG241nT+G<${=Ti&6*XtYzlwrN;mL=-Z!2$DlyA6N zcd~=BWfr>oH?~D#F222<$;^uykzPEoz&XA349pA--ag8+bx-kvC)|w(b+NIHbm>@+~0`0tjl$?AC_^} ze#6%}>uuK?bGcg!9Ul&k%pOq{m0uII`f$s|c@CEnz9RSCaP)PW9taH@%9=lETff1x zZnHyXY;W>ztaH|PiZvG>xTpVsS)ZHtt0_i9s~ zrmT#1?O8O}Pn^&yyI&t_Y`6Skyk>DIR4E}7CMr`U>jYFPScl%lr%+2I@8Ol&UKRi! zun|?mOgaNrDB!*pTAfG_KzalETMKO%_&I_@aIGp?gW)1QuGG2og^*+K?bXSeL~}ZF z48{|21yI!jugs5J28bon_ZB7!;z)(sYz4^vNK;1=AISPBHq(kZoxXtp^Y^$PX}`O03lCP$h<&pa3|X1UPJ_jLqcXavEEPaA*j|C1^a1E29xC4u{7^cpOh$)(0Y3 zLxQeE6Z=MGf|3I$0!2Mp1lx-yV-s8e#o*CoAQBov5DXcc&EgO&t{F;>@%>dA1q#YZ zD$qC_Rx9Jo3ns$(zEZJ(%AzwqNTi9VjsON=50FZ^%AozQ6hhXKR8vrp z$flM4(NoB(X}cl@;66H^S9Cyl|TF}Yz(9v?yY3^o<+O%^uo>37+B!~esFw^^aj z5CC>PGB8}gtb*SUt6siL6#j!pZyo+Y4*>eJlTYIJGhLtQ`XmNEN%?bkeWvS^82BXR z&)xNZqs!*Q=MJs}|9}kOW2W%e`)9$25JNg6Oa$(-(1llh6rp6Xbj__>*ABkbru>+< z4J(aWR|a?I&puzWDyiyRa#h)@>zr2h z>OZWXM}O-9C#!*oEB5mZ8(53Q7TC7lJvoL#+&Q_R-94wRyQQl*_FUKL?k&{C-9o>X pw_SsW9_w~?Pi~(Q7U5CtL}`FVdQ&MBb@0O|oH!vFvP literal 4941 zcmeHKc~leU77tKF5tOGQ2wJAW7K;v($wHPA5krIkkqD?zusWGcV1z6r0|~fMP%Ca| zU0EtntPe%;x!{6m6{&(%6jWRgWh*XE3NFRh2R`1HfELf|Kc4gYpL5P^_q+FZ@BQ8T z-DEOlvjgmHU2JJIn!O~@KMdR*Oy@^d;M&>L3ItXasS%M>7-oR9I*pP{ARsD5OF)E? zRMKe1yPeykwzp5Q6Zc1n5etc(oWHXr@4g@MquZiWm77~GRqyKy(OWVyjE`(9_q=|k z;r2IU^!U6im$2dEvx2=6XNfygpI@#i&+bBciev6xxpOXV%+|wSah|qiB_DPQ-a6;S z=+#G`PHHT3KiPC<`h?cG)iU;zB<|K^QDsR+vQ>)e=heHPC60`aCWOh~|1)-0$4k%N z^GjB~+ILYBIK9-b<*Ck z<3^M;6|_9Ltlf?@*7%ln4ZA`;JAWyxb{o=pIxjdT&u97R`JB_o%T7JDjB)9aPKwUv z*xhT^WnZ@ptGZhBacofFVu#b#)g^GU$aCwOuYcH56qGF}iyH5_>CuTq|C*RcWo}S= zm3Y5}2X{=;MrfYcuY`86U|T56z9rS4oVj+@RBZC>sB`7h5@z*GdfXuEa&J%E|JzGP z>KSib+dneyRim~uiro_1|DKWcvd^y6GJSb@)S+_;#|in1qZb?2xMvqwTL~{EHB4z} zqQ$H%6IN|XOS7N6%kob3#LVUZ>wG)WTG4q|hfS|y3cpR9VcFbVwMcb2lYQ~lIX_T)?i&ZW^NxiZ$1He>RylL_?3{aJ z@2!G4H{uXy%ZZe!p0V<#SOKNjOK{U^tTGc(0f z$*1#6!xBSp$ncvvi`6$Ag065L%v>jpUVPI1MmcqB*=S*M=iY}~T(VdFCQ8kBnRLVW zt&3Hg#6BGN3AuJ+cHg35@~6YA+Mu+wj&qki`4^Q1u9p)kg`e#ztRKzWHVk#3HrzG{ z?!2ZOT9kRcQ`Jj1v8M7Q9vrMw1swd)-O$} z%qnyf`L4c?EU7N4j6VO}hOEuMe}DXk8{;}Im)dhzvZI8Jd&Hx2J6x+mVCBN2ErOWN zx?{^r4lLN?8^k&O<&Tj$9vd`4y^v%6^7x$cC*|9TGc8m9y-HkGb*9X41;?$SYR!h|RB(yy# zKJt56{t})-wC{LRpZ)WI%#NG#h2Qo#+?l^&#gw|Gzg~#WblTgY=brJXTiSYI-p57X zZ0w#^`eJT&%7oe#P)$X!bACik-{_15mOBD&%b7Hq#VS%Hl1W6OH~Sdu-n?a-g@NZ~ z<5q=+2a7$^$B#>_mVGyE&01cNg53jIj%QIYUIo(SuoP+JV!?7sNA$GT-Xl}G)#=+qQZW-O@ z5Hvh=w-c*-|G_0siptkLpVoE8w`6`zu3dL#l|F zO0UX_*|A`GTMQN1oQ=6}$?+I9cHK{-wtum6o82~J4)6P7mtRIk?QpD(&bt}3q3qY1 zh0d4ar;?@DUHm2n2SOwM##}t5$a3VIyPU9)-H&`aTHKQRB)Xb*&y3Bu#oXde6Mg^X z*0<|G)Xp4g%S;sNmN&W;&Coia~YAkmR8&sdBa_4Oe-ad1h+ zsZ)A&f6vj5S5~7x(X9w)+|z-9>r8^d8YvAC;2M<|rqIX+OM?h>Zwig2y8_8rQeY!2=qf;maVg9oQA;6oE z9!F7H0fHC|1}_84OQVZLP(GiJFqjCF2?GsSpQ5HPBdpfDn;-@-{0Tj-BefK%Q9~w7 zOs+|ygmgMshu*}e(n_Uo;nn&<762cJ5z`{57XwkLkf9cON}LQp1_Sz23w;FmeL}(r zy(USA6XIk-O}P(+P~dOvwMn`Jb2(~3Erp@9JNx47?UzscRK478+DfxiY%GKDAc7t&4s1quyLDg@?7CeBiN zGf^(gMTcPypPE1UL+g$5AMl1gzvU zxiFinoi!Qz8*p-for z&EdkJ;259J<9jO=18KZP*K3rN0n-tFu^>~B4QL^AHqewoGCzMe8bcgmVv50J!3++J z@*+^afXxyB){wzu5!0T2ldTW(KYaL@6^0A}U^gHG!v)ML<_Z2$P&A=Ka>kO6$m2(wq;1s_5T zSxAH!+~wg*ullOO$%C>@w{KrN@*jQ5*4!ezB6`bNq(5)&#bfIeYcC|#p8c(!+Yb(# z=OSP;LK_&Rr_n}^HJui;oIGbBw4o$YvCTv4v6fSvr}_n40wR{g-!EeLEqqad9mCbt zCT+rn{{Gzb2|fM&D^@YqZzx=UwZ~!gq1UnD#d6%)%5#hz$A)%)x5H!C-B03yIZYy- L?O!@`QTl%Y7XWa~ diff --git a/graphics/battle_interface/grass_indicator.png b/graphics/battle_interface/grass_indicator.png index 81fa2589d0dab5e7e803560121a84f5b761aab16..78f6f7aeada37c33e1b59c33065d5a9c90291a04 100644 GIT binary patch delta 136 zcmbQPwwA@BGr-TCmrII^fq{Y7)59eQNOJ(O00%RWlnFWK&%nUgn(6Eu;OXqFP*9Yg zmYI{vz@Ra4^CjjoMwaNuVp}H{2-(}Hd%8G=aLi0jSRhc)z@Rf kB7`DY7D}8-Xr0B(ke0#J^tvf!EzocVPgg&ebxsLQ0P2_}?*IS* literal 4887 zcmeHKYg7~077ic_i-@#JK@bT+ii#o6$*Tm436G$`NU)$%bTXO1C`pE7Ac2Yxs8s|X zh)NB#Rl!PI(JB_Nf{GW7t+lAA2r9_KQc+P< z`|Qc&%AzC2J9;>hNTl(SNO26fx>(LJcHpAuv|+04?4UEa@jzMjiuXRSnbzP}uPw5qB3ma!w> zG}IP(zg4F3+S$DJEgCwewDJdAwMSX-S_BmL#Gvd5j1qHdp0zaTzZtm^9f zxW7d&?lYa^Db#N7=iJ(GbIeaQYp0cV6jV+Z9G-U7E9P^kr`~1D#SUd~`JRC7mF5W# z+@`&+?^^N8w52{6re4f(}U)A67td@L`xKDozVee)9$*F!|JKLjQ;w4`Q z5wpe~+kf3Q=1kB0%>jPX{Pwpx-uX3FzGbF=RV}kAwev#Gz|4TSNTTZI`i2|J(B{}Z z(y9$UxG8_i1kcd@xwb0%#5LExT4dZ<+=y>?wd01*`vo@}>l!Yc^c50pbHbAg;TPjW zi@q$jWqxpMXQ|ujUS4Ct5}V+LXQl-EF@uhkitOfXzlJ@oIaqOQlXA`bMBntIC(MU> zoLwmSJwBh?kD0sl@suX}W!?TI=0f+e$Lkv>1UC=* z80t2b4ESsM$q^G<3|mTbAKD!IRP(iL`P1v)ct_Y$=D*QXIZ-CGm0 z+Rt6yTLBI-s~K-RrGxowGaG8yG=Ggf7XPguP~_2ftKpK%Y@i8Hr8 zy)Bw>x^J26lv96YXx1coCRD!J?M`KJcV7ABE5+U8a{HdIJmpo`di&AQ_qqoMHQ@z4 zm3uoqzY^DV$sY>~TSEf6vqJa%aJkptw9;;1@p$2?jJ+KslFeF7B$7!)q8B?8?8lO< z0%2sGY|`3!@;PBMv)`YT`jhO-S?f3OqFnQq?mptWD2<-c?ajs_V-lv=U(e17$y?yy zmh_2Nf_-SO!?$1jayjcTEDpD zTGYlLAO5_={rvI(?7$U|&?$2w$?v?&TsFPbcHI0MP|V!2yFp#;-syiybU)vjnNxt+ zEGXYHCFBq9zrLzi_=SlmoXsHjDsFn0euTRvH>w8)nyQNZR}W48SHq3x%j~`woOYtM zkrMIIZ4RE=(s)PMrgL!5Z15B5riD;<%Sf#k?-uK7YpItiyXq^_HeGQbiz*kLv~hM` zbBKZ-{IsUJTCW-EKhpIdy9qwJRdV_*9T=hR7#NlD(zyaes}6*fS_K+tRO4Wjl1M=z zMjS?#qXb!jCSe*O%hDRGdLF2zM?G8UPsL*<##u}J1}gs-H81Um*91pq*e z5-{1QPSNNEMj^$DD**QvF^xjDnh?u{lz6F(EYj*wGCPnRNT-Gwv2-RS*pVEhQ>p|p z;_wj&@Fb)p69g`x(F_Jdpn(;r)g{pwd_JE>XVREVDzKpHGc*Kjq-ylO7KmXCF{(#& z7*1eX4cUSTE3|2ZkU{}^@{9GUajEnryhcC50^oyYgmD@pkWN#pX`?;#L|8fi8ClTZ zdgx=p8;2Hy>a}S)1Px0^HH7bI2qp5;A5YVzSkqA=G&BWO15-VS%6KhgghVQP>0zND z2~*=%FF^KdmIS7HMb>L;vuLd8j9v(Ee~J5=^^4rC#=uG{6^OM+nq_$sv5;bkFHmX` zOewJ5(v?aslh0L9SqP+}vNFc0OiQHB*ti3q~AIyDT+iK*cvl!j}PtO^U^f>4=6NMQ!j zUrA&sFrfktU=Ls#rPiQ-rHaMWsGNW;d@?vZHk-p{(di5>gUjT+GWr1}y;emSU>zEo1TqELfEKc5L!LfD=8V_v4aum5 zDLRuyr9)H(FP6aERLtq&a|CfP)!G%7mQrXJBA#&2)AS@N{-oC@9KL z%gjk-V9=Pj`6P20BTMvSv8|KSh3w4~JzX3_IA$g%ED-q6$e`Wv?D=!{jSeak&U!83 e2(j0m!p6{V&D?Z#ZpL$L2#C?T2j#6-kU5;TAm6@k@BGJzqam;?x*sDP`81uQ5< zP>`q3vedHav&y#3EPXEHOl{JwjC-@SJ-S;2w+ z)|L*II2_Je!1oCO*TMSpCu8vYys;SwjF+T@&C-S-Nsvmdlw$EHq)k?#5URtZIGpbG z^Sp?C6gR6SO%c9%i(F0jI-c3_47ymi*s1x!?Gw-6zocKc7G}8Cy6qA6JZ?umovNX; zTISd1OxbfJN}WY-SZ~HJo+smQ;95_q#a9{_4?% z<8C^yx%2$#%F*}6=MVWa@s4$QV@}80#fiqrk$KjFmPbPanw})?@;Q9x($Z^B_q5-0 zsh2sWW&S=et7dJD+~{0o4d3r{i=fn=zvgn{xDh3%6;|mVx2~;PcHwRaEAsW`9#hMr z-Dw%CWbo;To`#@L|60h1&8xO6E-x;w_>jtqj>_V+!vzKKheJo74RE#YDqU5+Yq;rf zzNc*VuA6ac1kw=lnSe^S_mD{|WxTU&u%=)O@N!P>Y@K%Nkg*1lZsw(in zWzn^~*)QsI0~!;Wc&npRpCm)qf3;$KGaCGbn+&LQT4jq0^=5eb*Pv# z?J_6uqr_D7%)GkAbx~&P`Ag$jXQicum*P*sZpA~&OH>X*5!A-s>#W_^wfe3tqvdW- z^BFT1<;sGLqWm_eoMVsQ8Xu%Dl<%3cB!`BI~3imccxj(D@R(c;9fY1Z8i zDOFBO4$E0PFh%BvZ5EhpMLN$#U^lVp$gtfhR`48iX^q<9iTvI2l*^5kY24?N!a7Me z7_toe_S(H>FG@^TH_;ro@4WT0{eI{DOBAD~D|H;3j#1s0ob6BSDoJ+ge)=Il$fje4 zS0^^$-jkTuom_Q!$zN0>#)7^yT7vO-!2%xdb3=kQELxDu<)027wj?NYs_*#p;lt*g z3*O|hY&kQ)Hhb=t1GcjhNXh?krege%C`Xf<=^0+x;bwL*(W9bFygSUQuh$5!_y$xG z-485#d8%bWQBvK5sxI7?>Bx>-G^6bW=+}d8YkM`qUJ7=CRwCc#J)=Xn~G+Q_43#UG=404o?5saSX=EP`AuU;LsAv&!kN;~U* zKH{>rz-^FCcFmx?i5u5jt=APWOSd~b8W^#`wl=cpdcewqFV4@gzaX1{{dUd4+i@x% zvKT^+8&@`9;Pl(HkZD`nIIRzy6F&;n=O2#G$Q2ufZ_jb`dhh(Pcz49c0`1xC}UOZZnT6yf4M$z;3KpGT_~ zhLY~8!Q`~Zz=WJ7oW>R_<(`N{DMCGUaut}MI2^}Ir$WRsR11mF7)-&%w;wx!hcF2j zKa(aT2~|8a7UQR=(a@B@FmZ}Z%#z@}CRuWHYycofwFsn>$15~!9T#uFWrKUYn23iA zCR!O6KT8-4@sw&5qIyz2Nd#XVmPp1=vV=HliIg4U`5ZZ<;4CT8m(_40O z{ty!J7k^cPI^K|uL`+2EQ8_TxfK}mdmh=}0gTHv_DTu-3DuWjw`x{FwCjCm*H?iq8 zhIIM|0^Gmgeq;SPcY`so5(?QqN^ycdJb@1vuV0@nQHn7M+i(k$C^V*oK_XCT3>txo zFewC)m?9-Gm=pLX7I60JtXxaHveClqw~W2{aM{aHv!=0imKy z0)g`RM>cd&qqCwr25e5Ws>Hr zDh!jOp;|=GCroEjsdOrt&Y&|%FqQn(Xa=g*fLhd}!X!^J)u7RD3>%~as73UZ3IGgp zkPVxsMiH%29i~*qbMgA1Aibxdz#&fWw(v0xut?U|d|%avqVsy6dYd2~GpHcQP`GSF z+`EVdNkk=vg@9kLN*s$QVo=cGeI@l-j{VJck;SNpAtAE>$0V>_WC==O(rFZelqDj= zWGXB{CDL!vHA<;A2~nfoF(6Zr4JaW)Hqf{}GTpzmPl`qLOp(YG0*OX|nPD)CO{KEQ z3_P(fS)#tDKWED!{tq7UN3X1H3&`c{3`kFm9u^HeovfEHh@^VL^ld diff --git a/graphics/battle_interface/ice_indicator.png b/graphics/battle_interface/ice_indicator.png index a40d96f01831d9941c476babde6cbf4f7c8d7bac..c7d7062eb8b70484c953cacce50c5d1b3cae6ffb 100644 GIT binary patch delta 137 zcmZ3fwvNT3Gr-TCmrII^fq{Y7)59eQNOJ(O00%RWlnFWK&%nUgn(6Eu;OXqFP*9Yg zmYI{vz@Ra4^JC^RMwaNuVp}IS3fbFgc)B=-aLi0jSRnA>6SJcBglDXm_Be>yN3_fr mRbrlWI7Q*gfs&0*sSKSJ%n3Wq_cQ=aXYh3Ob6Mw<&;$U4yeRAQFH-!JEmG8H5u~+>2)-`?70>HGp7Z*jbIxqvcYnWo@9(?c zO=hduf2FypwJC){F&BAx27>z(-8s<^TzhYKfdRuK$-$xOKtuy6NreoL#~^i*5`!=; zE~8MiZN2-#61yGDHs1*o(hWpk)RK>{P*_;PAc0A$z@Bce!1%F`N-PDP?*2qgSt- zJ8UC;W1T$DWCabJU2bu3GOy>`f(H+9-NlSfM%%AN=_I=wnerwP+Jxd<36ubTd%`qje{j_B};am{aD*HTn zwYFGTX!qkxiEprz- zDJu$#7g*JO{8Q^0sg-I=r)hWNn(uRiuhiBs?ZtV^(_XZ#KE;5Q(ZU}h!&V>MO7=K( ze%UCsiYZAAwKV+Ev}(fQBjwHC5$pCBNJGy~l`%bL|6-n4`eN(AiDR&=-ZJTv6r)P* zT+;(^L!)&mW#gr(E7vFVuOf;YLY6U#2yT4Ib1dkzXB!%KDYG!w$kMK@w=lDOtwH3* zGjCdWPQabJY&VMX5+Gh5z%`>6gSrzBKEvP0+rKE)0xhniV+3lB+V>D&e zZu{oDUSEbRlL%hMFlxnHrwKA(;r1CSM^T^`eBwC1@cU!OJn|NXa2msX9Yf2cu|19v z4LL>)a8DK|qN&2lF+8{8Zf~l|3CF7XY5UF|7tV|r2z0pc^=9k1Q{jy_BYo~IG*3Eq z;$&kuaUy7?{nKVNU~T2ojvtogo6kmSGdEkzNy^$|U19#{>j5_oFaL>mtpANY*6Tv} z!Ogyl)-w%Zi-}!46DT){`TL4_CD{)avW{f-%x4y6So-IQ%q9vJ?MU-awCyfBTQTKa z-S&@2;@FUh?vmOOO=$AZ44(P-x(@G{xfdVaIB3jYs9q9}eRkt8al3&2(&0tO9|aEv z6SKlwhytQ}@O;1{w9adHvc*#C>++bA?Oih-cHOt5r-y9Vpn6=I85(yz$YRiiyAPz5RGN>RfqybxJdFsYA8dy}UgIf1ZB6cdqBi_4B=- z)wgz5A7(thpMJzU9(8zetL#pTEu3MqZnD`kR=@4ZsW02G+WJpl1hd0yyGaFwVz3Dp z2*e_R;PqAo8#E^+lkas=Y_%yM$VcdqI>Tyxz4$A~E!$kYr>939Et?*mz({&%%f`I| zBW;XYQ`6kjLyTueul+dE$fMu5_GX>vC!u#0eR0{ACl~Ie|Ufg^zK2#ZqK1b7MAIC7W+Oqu-9y__K?f5 zeCuB)hwY!<6p?e&d;6Kk4WG`s61M~|x^C@Zq4jtW*)N{w(WxX86%O^79}@2MK!WEFARCP(NQDs*pP&QiTL_ z(#n;fw^Ar>?ph^+#$jqmf<@y5pW0XXJr%;GeCisGAHz>6z+!N(WD*NX_76sr<4{*A z)qSa{o0bO%G*uFzMzl0S zWv8PUftX5>K%$s15hK)g<0+)*8@w`sjMt|lMd?^PCI_Y};1zzy zQO-KcP!Po?5$Yu#HO3kr!zhf0Dr^#j`i!@^~S);&yVM+KofM~ zi9GpKoqwKGf#Oo0{*fz1*$9IL(_~C%HjT}cpfrTbl+jQr7v@UY9GE3@8Al}|RBD7k zF&z~kcftV=Qvyr5&Jq`zi;OFwvAJ9(4M9*A&4rCIQJ4iwSQ5rKiU1M^Rf)upk4i@+ z1yrcBM8e@RQ5qZJaA<59CZV}7TwofDD}`kemNUbZ<*cWYqP!IfQjUP-#N|jdMpqKi z`U#!jJP)ymPh~oddex7J;}NwC0Kgu=38_M(dTShv%dsFeqSF)Ry0FUk^J7&XgsmTa8{Gu)xPA(P^o7eq&`~EUBoUM99Rb|v6dHpN(HPj_VBzy!!X2!$&oQ+u3YZB>?(y!twBi4BN}81vH>Ne z&jzv|6Layq_L>+>rxb(9qA@r$*d-Wt<+0g3m`kOPB}>=s>DSr1(f>yeH@(5QCIE1w zW1zW!UPXV?tj6@xN%%J&W9#rYdH~cPoV=I5ALRNV*Lx}OUdA7)>w{eHrNDa`f2gki zn_Q-EKX)(!`~%W}kC{P;X^ukgI1dz)?g(f6t=jQK|n0PO)WR diff --git a/graphics/battle_interface/mega_indicator.png b/graphics/battle_interface/mega_indicator.png index 93e113ded4efb535746dab44eeeb83f9210b0d65..62fcddd65808a8d3f81b41fb41a1eedfbf7b5fde 100644 GIT binary patch delta 144 zcmaFMbc<23Gr-TCmrII^fq{Y7)59eQNOJ(O00%RWlnFWKKhaQHP@jR}RXhWO)pQ01 z@q!xBU5pcBZ31mPT^vI=W-dK;Q1E~O2eYH1pfLO8`rU~c2fyEBUS~Wh>*c#m*N(Jv ufAniA^VnFuPcxy?Yq{8hGcv1B-I6yv&e$ucT(1YTgu&C*&t;ucLK6Ti{Vsn1 delta 292 zcmcb`_?F4AGr-TCmrII^fq{Y7)59eQNDF{43p0>>d-oAYfF<40*O7r?V?XzwMAnIl z(t-vI46hOx7_4S6Fo+k-*%fFr(buM)G0EHAg)e`vfj>|Sdx@v7EBj+sCNWd4ltl%y zKp|UC7sn8e>&XcV1Prt^oh7vN+7f1YMuhU7S@GgU2Ai=?_gVF3$*|R7y6nbF&fkh* zHl9)b-j~5R=Y3aWCd14-+`mN|ZNh;Dsg}4#l%ynWHOn+2q|QO1nfawMa6T@ z$dP(i%l7Ak@!q2judX}fTVeINb^Ef{dtdw9Eq+-Ud2t!)VhI-ui$K`KyE-TT)AodJkbNMMVF7oA>aX z=*^)*n^ig+`oQZ66D)UK+Ss(j>-XiwMX0b!cV=bP$9p%nH=e!zD*N%JC5b7k!&{o1 zE5bzM6YYykt`=Vwm6hg?32@y!s^Zb+L)mkECWc=wf1FF-us@XXdD7R3$txhvfQROc z(7GwSPv)QCoBIdU=(Z&$oK1~C8~V^J;W5HwA@54gyy`V+Xo_U}+z^JV{ff{#N0!;g zF081V-%nz7q)6W^-v>o)9Yl*7QeP0T+iUUqt>Z}iH^XW4S=(HK)?}YdW<4pt?wjOH zjLwVLrw?Dgg);tF`|f84H(!i(j-p>6!e&|bzpVeTYX?n!%{HV&Y8L8lV-_*BL2d&L zm{eEce6H7`6IY^}$3@&Mr2fWESKJ?+yvMmnKC+xVC%2LI=BV%C5q$=bTR#wlz52wE z-VVO%+aOxO9oJe;-N|K!PBclVv~s<_ruW7qThp4^w%Cg!&mrIIbAERf^=5GcpUk&s z*H70b55E>(-16AmvE*|-zVV6P#;KILc3#S$uy?dlB5Qa0jN5zf<_1(pRb_MgCFf6f zy1aAjuI#7GOPaEmmMgRSJB&TpI>>MQoWOFs7eQg~S+{3b-wwv>Mq9<@t+dZNaa*$| zCHUpRwvmai9t2gI?q$nPKAlXAZ4^1r+rR1lF^}UPL-JEu;Zr4-b%$5&qUDT^+Ggv? zGeutYU3aCNFer0O~rku^wlQS_tw{X>T5ijIu4gSt$9J*<#C|3S6;%! zR!LN!9Hmpq3N_T`H;{OJSnQ%`W?GTP?w(h|u+o}Ri)|=HSG_-c{arN8sx%X z<1=Yn+2(h*n&lp2kF`$lYv6>LHlH{Um))O0Fj{3_%i?W+UD_po%P%|t31oHX-z3Ul{3E9sy0J1<$3Y+;c^$TlgF5moJM`= zhS0RIC3T_N*-tWH=hVzG*0yUeTW_0?zSVN8E|Z&AF!WjfkTkm+bF-`c)*pXUK96`U z`Zw(0t)X7Sr-(@X2GZxd=J)C!@PHLKb!Ve{!&Aov?P5)N{kWt}h{=qCjl(@#9ousb zgrsL`Qzy|#P0~Ld^CzkuqV6c#+U}jm8ndip$jPb)U+0^qe;HNs_zrpU#2U6b_R*bs z!4r)+F|o=;s2Sx6?eHf&u58TGoIelUJlb&MKwQc#bCU4roUF$AReHH+au7Lj00}lpo97-UH ztKu{W>aze;>Nrh|F&!B~L1Rz_FvY>Dw4auoESC6x_b^Zpi7C`ZFF^KB zmRd~ygRGxoGiZ$IbPoi$f5-jF`djWsV_+qb@V!+?oFP21w}5O|pD$A(n2c|{mCIl% zl__OGC>N$fOgbBZcvKz@qD#3f9>PVqOb*%&O02}Suo6KHPypNw12}RHiZVGY1d>ZR z42a3#!Vr(kL?AksA!pE8ECz~nhnTLxKv%*s-J>!<$p92f#$!_%Oew_WaS({frb;0x zhf9a(JhmK0>2juw3LB%5A$(tzMgfCzVhT7CrKpvWMumZJzL&pPK&HD zA(&31LI@RQ069a-rFE9;J36kCYvW-J>JX5u&2Le>rVL_AMQqjZbJb0b;`hS0kewoeOPtzWuWk1Ji6-e zFRlQfdlva6etYQZq3f3z_$A|>?&_iIml*gZggMGkN8nmd=QxSv}`ft2<@8;33c*2&fe5818>Ul~>_KYhh*2Uf^i@S0DeHEtz z9OlhJ;L}en3c(44{aeH&I3f0mok`Yph<&DcADk4S{~zq! BQG@^h diff --git a/graphics/battle_interface/omega_indicator.png b/graphics/battle_interface/omega_indicator.png index 8e21007a800ba1102177d9205420dc248aa5fd4f..f491251c50a6c1bb072ca22723400f6fc25a0a25 100644 GIT binary patch delta 110 zcmcb}xRFt@Gr-TCmrII^fq{Y7)59eQNOJ(O00%RWlnFWKKT*-gMc>oKF@$60+S4Zm z859@}9Vqw`zu9P8g54YTAJg9KS-WhoxgnPbA~E&snVo_R z1{}bP0l+XkKcC#3)Y literal 4937 zcmeHKc~leU77q$S0WGZ}h$tae5j7-}g)9(|1cZRWl%N7)WipwB!E9y*5)iZxibBEN zDgxpHzFMo|Le&aZd;*H6MFep}(E=jvQ){iFMUZ|8sCZug@toKHoO32KbC=(}_xIiJ zP9|3x89LhD&7MRejTVOmM}e!8`LrGhejnUw2ZE86Y0)u66l^5x4LT*JM#)5~9wnnD zOi3b{Zai2JyU~57W8YQpbn7o-YL>-JNzXE-dtGKUx8yDF>%zaB?li;m<2_Q&(}5Kq z_GX_u!t6}Hyk1B*#T)9Cc1g#)%1hQP>JNZc>r21>BP%sk%{EHB{l(bL_=)fK`%O!dvZ22NV!w9nSzRS0Vj)SGhh{s^I4k7)a)Z6h2Vgg#4S zXXlv&ohRaiGGWgGY1>@3%>jelA#RkPwm4P41i5RU(~vR|id%GG*7op<`UQ~nikoVG zwKXCcr=H(9v+>4Qhw_Z(8wZcbJL(QqII8lUwy-AiZ+{l>yt~C~N0zlqx}E2$*gnJN?%nG=>-Ivm`*%m48ntF$ znHWDJmbz!ydry;i-_4gW{Z;!L=;yz`MyYjPBFqhmnDIR&W8b$wtaAG{O2X!}mhFnH zXp}c^iF9dQCVv0V>SmsiIXo%U_9qps>=7YDI3|7)9d@On~7V3Ka#lNOu6 zwJY5FxoIoi?^bPja(NVr-~(weRfojC@(y`e)lK zdR!u!tfm(Rl-=IHaZ6^CuzXU8>_Xd%xaIr7h|7C?EJdLHlf#{{dnj}%8C)ch;sr@l=|fl*ln2Xb${gDvp@EqkBxMiN4yc zZasZ7XMI-{HnmBY8BELM#R<>!j&vZ8uL%e>^^-_e*_cQq6^lf#wlUbe#Tgp}VP~b| zvggSnLS|%+AGhqhbo;EFFS+5)c?r8Joa2(|slRxzu&}6jcblu3S%G=;ZCzB0C&k+Y zJ+iH7sTE%e39q7gSLFQupN@=TjJ>8hkEiR{QAoZIXz4RrB1HQ^lSEUXwZ9 znKkR;w=Q1M5l_V2*#=M9ROmHkY+mh{Eq(=GIeuj-Gm;+F6=-#x5f z;(B4}OzdE@TabH182N*b7)jGhM>u?XgB>-utlPiqXOEOVv7x?mM%D(zYX08!?t#xe z`brMO78DYjgb?|Wyw#(0w%#T2isr?OYsZSbJ|CEHqUpxVq>%;vpPXvDLJ6IH+gHEr z)|F1d9fPfFTGLdK;gdk>E-9()Vt0|Dx|-T}w5#Dj^4exwvgl~s4_0Hw{Od3UEni+$ zS&3^0dMdh}jr`Eluu?|9X#n%q6$5iMMlzR==rlgCLMKOkOd36yyCjl-ph*uSOHqO> zM^%_sK>4lmG=+>Q1eAqr30nngNxiMMfiOOA(%e5*T3bZ{h<04NAadlSZw@ z`6dCyg3AZ@W-*OIwwMr01(XjwTGDk6{gW!ya3s6 zSrVA?4OwsHX4Y8B8J-Ame~tT=^{d(~#=uG<;RoxGWOI7rU;)J(pRdp%n1XM)^_43b zOpby}RYJZjDvJXvsB#{JP+>O0P|`U}gvDYGgA!|T0@fm^847^=U;u~7;3;`@Umg`@ zK|CtUd?#ls5n2I<yv@|%`e{fmCFdSHt*P&!KcAZpvEjJ zGTG9&fSkb~IGlniEP;UEpbANZwJH?s@S&D^CCC15xlkpK!(+>-93~em7o>!!a+uAg z`oa*KrQjlRIfMH)I<8X^M%aJ`sX(Qm8qh+PYRJ=v$n<{O-k6A*nW8h8R63gqaibv~ zp9S$55QR2WEX};9UsdZ*`yW31Ee6Ae0Pq`>f#CvX747w~8sf`L;Xil`t;0VU0YJYG z@=pA|r|Ugk@5I168NctY_jJ7z1Mg(~zPtW!blJc8+(EVAACM7z%y{2Bc^rHQ(WP^v zL%>xoOTQSXkzwW1_1CU79({?YZZ0ZCsupdkrVSL&KX)vDSwmfNL-o@p&Hy-UAB%v` z2l}vBoJ4XMYd)<=g~hHwXiJDCA-4By#*XlIR@KEmHOCMK2SwXmMG|&8J{lNsCn?i? zk8!f;FGUl2>UMZKb_~=x)vfFpNTlf5XX@$_aMHc=PTn)ZOVq%ZBo2uTJ}6Ac{0qVi BWw8JN diff --git a/graphics/battle_interface/psychic_indicator.png b/graphics/battle_interface/psychic_indicator.png index f70352d2ee8ff03b193e2d29bdfeb1de824850cf..4f3dec93195a6b32f6a8c08f92285af9b0152085 100644 GIT binary patch delta 143 zcmdm>v6;o9Gr-TCmrII^fq{Y7)59eQNOJ(O00%RWlnFWK&%nUglIiRm;OXqFP*9Yg zmYI{vz@Ra4Gbc+aBg^XaGY2QP3fnvDdAc};aLi0jSRk;WkwLrT+4JY@8*enI2y8a` r(5zurC(taf*tCjmUAJfspENT=bRCmpL0a(_pdAdJu6{1-oD!M0HGNsEy% z6D}tZOxN!%h~C`g>(u|NyWVE%p|za{=hPBwJLjc;l^C^9ypXz6b!rthIXl$8{qf6} z#BLXgw|zt3{>fQ!E2_K3Dnc)*7cLbnWoX8q{;)ZGUNc+gvDVzqy-zPJq(7^u=^aUOeqNk&pmc(}Bk8Ln zGj|2u@Oo4g^Jzpz?}4~|*FJZQ*&Ensn$-GsMwH3NSR%Me z$GMst&^klslk)IF%B0lCzvVa2PIvUrbgk$2>k4{yZ<^e&pMIuvci6Ep8%yTocb^t% zInUg~Lkq)ynh?gAsVKc5X{^@fb*!U)dwTb@EwOq2m!p;mH%5uYEVjB$8&=*Ty|^{z z{-wORHxqslZd#J^TN3H=8YgzY-IRY!#JloYF!8|e*YB3L)_GEki>3VN`Zf<2H|8d{ z0PZNX*KWg)X9;5qrz;km<@)6xJ-bc3q2$2^pBGd2waT2Fj)wKxeskj(-B`bU#r?&# z59@YpyY#|FFAq0oR-0=DaR<(qiH}If3lBR@-@ibTCg~}Re$>DJ7{9QY@|5*BzUNBI z-OfhN(r&|TzUSU+wYRP+_P8%S+))%UF@`Oi_;TgGlD?A-5$zLg&%;Z%KVH4(i5=V< zM*Qr@;74gLh8pFE=E5tb*H*iQA62H!Z7o@rbuRWnp;mP9{8=sU0jrFy`9<|W+|HM* z9Nli*(`R>)e#^`2%gQXw|N5C1OB0l>CGqz?OOfYyY&<&0mh>@O=9M=Y3CDA~XAyQH z*J`mR5r59h#E&mpY@EhwkCSJt zrflzw32t>!Zd<=`_H}-gM#2R-3VMHb_6iP%w;j0Y|w(*WH z@&qCEpL}#?SwInaOM0SDNA9=0BP8DrpQxGXS#1lJU#{zFqb_gDEvn);{4m-!VEp(0 zpj}Ey;bFcXxBWX2&_dlqC70W~@8A{`9BSU+(pik6SYNpWZn?t()6-tF|8g6}m9@ zKpoHAMRgi~dCSZzcn&#xT2byAg1vL({ETeQ0pA&8;PRc?hnubrFsrBPqUstCt>U?_ zt(esBl4guADE9uQC~jm=%AwLtbkae`^6gvy{6ZOh&+VkyDfYW1E02wCO51#^_w&{% zq;lujSR)H}sk$+OJg;#7`iibS|Aw}#GBchPkEEqKI+b#dB|KU2jL^0J`#Z$jw_QD` z5l@but9hQ1^4uJ{@5H3S%eu;Ox!xPV;5Fl5z%CMp@=%S6g2*&djABx0!2l)@_yHy@ zg2rP8k`zXpnjDXEW#j;V2fm31092R( zA(>Q4wVr1Zkgd2p@N5xN$t0_ZAznaUB$kkb8XZPrQkWDP6lB5^VY0siiLaB%dEtR` zh9JP3fV|vb(DJBMqtQq)GAJ6If=cIdxl|fVg<%L-K>8%L0Wm>p{S*ttAVwgjM|HT? zfNRtw3nn7fBp3u_GSHJ=<)_k$#joMj`XLqoA5;^frP3)hs!By2?x8mXB?6G4g#OY) z9|?Y^sNtAilb}PfphQej zVoEs-h|6FAD48EjW59A6hl5(7WGHWrMyEo+a^fmPfl;+;g;il8oHtt{5|CjE?TtjD zL=1A^0QLZ`mT8RoH>yZng+&+;3!ij0oxx=@STLJS<8ZlygBI;J&T9pUyoJW&{Mh1bqG$OS*Kox0dA<=pQ!O_ifjUW{6@Bl(vgGd}?+hgP50ujwG{Of>-Dhiw(X?F#U z+vRj{@7~d?Cg3km>`kB0hxfTQRQ8vbxi+w??2dX?{cy0n+{V?Jz>~ODHqL;p2T@T_ LSl|zz#-;xUweYZq diff --git a/graphics/battle_interface/rock_indicator.png b/graphics/battle_interface/rock_indicator.png index 0329ec678cd1f66fd5d73625a319ccbd6dbcad8f..3f92eb296ede4596992c046c01a66e6f73421c2b 100644 GIT binary patch delta 126 zcmX@AwwXn-Gr-TCmrII^fq{Y7)59eQNOJ(O00%RWlnFWKKlvfED3iv-%|DpS7+Inp zi*21eO~~F!*VDx@gkxrM!UBPUW(Mt!XV0IrZ#-aPKj9#M+J|OI1xJBqX|2{p5=RnR bXE8H0JzzFDH09l8ppguou6{1-oD!MC~D-Ftuc zes?mt(j^g-o!p%W1j1x-WLPw~PPLp9CxG8OT|GcB;c!MwtRWgU5_Nj55>uf>L%I$n zq9#m9AecJu6viFxo$o9%yNTYk5eJ^tnfA9aE3S2%zI3;QD}E<);J?M_DTYG|JHBLO z;0io)x<>JJ%7Uawuh`X;sYxfOx^Lsu*~U-j7x~vKWx1ut zHnOflZajC7kjh+JrQMp3wl~El&f=)gEQ@x&>_9HMn%|srpChKcOt8()$O;_xBDb>s_V}l{9R0RK^wN^Et_4;`>{E2s1EYs4;O1evMS)vNkkVw8*bY{v>8a=494#7OU;@G4UDR z#n3!STvCo!Lz5X)Xv~@MXcuSnAEpB!jefQ>)4~DyiSS z_gZ#eN{~7~p4S_~e&?Jo%DwAY<^P?1Yv-SxG5$(#=(}rgwK*O2bT?e6OwVfVrd;@9c9zFe z?jI>bSv-AxT?pb^>C!l9?PmyHNjp`^5wY-}h|RK!EgnISJ^$SG^~#;ahOMD= z;-LIj&+=g1%*1x}@bIOhB|aaT-Hx?%jwDUk`E>5d?sif{@D;W$rK|nA;HuuO-LST?d2P4U-fhb24FpYq8@5B!z zBBl_KR@gTCC1Ihu> zSv)e2&S8?dD1!#U5X9qf>Eocp8r%SD5Yz$%z$qBOVe;s7Cc=fukb=u5Lns1~c}g0c ztUwVamxn4?T!=XiB1(^eu7p+Nqq0CL02IWc(-<@cLgugm0EEDDGLMG9WG9@a?zCxSWaWn$P79gAww)Sj|`(6HkrdkX3j&%CEcY|3;V7i_aZY1O5RS!N<&lPrT*eLx?6_93ui(x$OO> zAhirTAl-85QuCn^Jbhb9IZ_?B^%T`yy6oK1{FKI@QX5Y_Y~h%}VgEn~Y#eowD{%s0 z(hSRKLntnF1wwm+SR%5&VK>7zVBS8s;om^S6o-YxICLQKdz^Lmx@QxVw@1wD{C9q1 zHfK5Xn$1twdgWg+m*qc|etE^A=7d*%Vg-*-q4eObw|(O?U``N=mW1sOjnDoIKd@|u diff --git a/graphics/battle_interface/steel_indicator.png b/graphics/battle_interface/steel_indicator.png index e84d9fa1b0c5cdd1fb95488d342a2c79b21ab748..682d738c1a7d2207c9b36807c365ec25393bd454 100644 GIT binary patch delta 118 zcmZ3Xwwgt;Gr-TCmrII^fq{Y7)59eQNOJ(O00%RWlnFWKKlwbfD3iv-&Ci(27+Inp zi*23UB4lr+>gnPb!Z9;BVS&JgW(I9$W_t;S$Ug~!bpp&fEz=nnHu8k6uw*Eo!OU>x SUder+Q4F50elF{r5}E*|KOjB; literal 4904 zcmeHKc~leU77q%I3sCC@MU)uIL($1(nXD37!WJ+R2`VbBPG%-BKo*if0Hs*1SSp(f zvg!fRs-_C2TKrnPmN_d1Z3^mbodaa6#BWT8C9YG_K zNEL;W)Y7?e(Z<^zw*Gye`hRRC^{mk)?M{f&t-e9Usy1zH*!lf`qY8;?#~PmrcyVuE z+R2_1r+C)4mtD&B-FqlfpTY5nY05iT^262cSH~yi6(<^wEkT9{FUWCv(i=GA%7l;& za~?ZL7Cv?O{fWQ6D)lI*W>@ac=*w3%Q##YXZW`HQcjw3H6V{#X7#+Nrm@#il2ajV& znfCIQ@Wj${*d+9UuX1hWAvf zX;4JxM|KC#+eSS{XFRWZa;@}AMhrdzcO3d$SJ+H0%7H05IHvAjHw&qNQL=dkB*tdP0s zTRko>&neFMC~#ElmgNh+nqU9R_VF!kva80tv19nYq5pDp&0NB%Ok2Cz$qCaW(|2v( zQ@ZAE+44-OrmfwEhGeJS;Zt4i^%h0iSifphof=XJ)%rc!-&OHb4n7oWZ=bWfGGJfl zM>pwpos-k8t>b8q#-0gi3$pg|c!oQMIXf}Dy{{Wq1}D<3bUG!If7-9*#lP=1W)|3t z`eKD&>G8Egrme0{e>G;4@?!$Np4_!E=Zn;CVUX_l>QTyq<8WXG7 z-BOh-T{FSuPMzOV_)KBOgW*2~YFy;8k7E@T1zGi;=@)m-)AiJs#j4IdE`M^bVOc_T zPMM3uD}Cl-d%yIGmLGQhIk)TjiFp&giI*O3eqOyTy7Az+tnN{?x?0wT{2|MD+n&wc zV>embeykwdOA&j3|E%MMa%yU3`NHkxb!|JFvYk)|PFk_?%9Q&pJ8P$-T^;O@=G`5l zt`OIQhwB>Au6FkP)kn)~BPTw|W;`C&z4UOM>zS^5>Bn54^vtJsU$# ze7W#y$L+Z6h{+uSQ%}!KyK!mL&QT|~#wbjyvfN%Ze)oJ?`-|TiCK+#Ca4)>^BI`~n z)X?=cg<`delt|=KiRATe1$(q4b*(t)qB6m} zFDYen(C@Est#%XcDyU!=9!0%MY*Vp5ArLYuEg< z#kLPKY7DdZ(_8IY3uPg9kAym_+@zCdx=-S_uc*n1%>Vq$+mXhIn}w+B`XYDxF>6lQ zZ=6w(XPcK)B-paU>GzQf^2eQDRMHrn_2YxHiyeQ7oks4y=;Y%Z5=0yR2|H#=`H+!w zTDW1ewzhk=-Ev9nk?POh@mRSQvzogj*V*ftOV8$t1qDUM^}a0HL*-SMa&MhO^kwzS zm(2%?-Iw=$dZ?kLH)d$TtIv*Jzf2GGzQNPQU%Pxqd{a+#OlfeF=s)v<%H)*m7ut*U z)zwgaW!w3RgzSq{nxt~!F)MrfulCW2Jxh;NRT(sWPxiMx9s2QPeVT&#n;wi+M-q(B z2-z$Vrd2agT&pA)NopM!uM~=>SCS6JVhJNnNkowvF}m7+QT4%n}NPFp~|l z*$~ix49OZJngnSKu4agS3_rqv=}DcD)M{vEOjM~&FpBAPuugj&pIRrAy@A&l23P=m zz)7eMW-*wsS`81jFc|$40mwi=e`{d~2X7%bj4)^u^cdlvNN9|%gCTJ2jlC{GA7@Di z$6z9kPyMdFC#AaTxq%$}WVEzX89qre- zTaJOQ8qVe$~3 zfGOnmCvHKUN9YZp7tN?FCWDPw%*}-nfph@1sJT-CfJF|n5lQp}YSik(wc0o_-3&o9 zTUr{N=GkACAkqLdlFdCo(De!;zW=Fz6U330B^u4rxFQtmcVa*j3Ebic*!3@A(WoYh z06To3rC!U)zbO|V6|gxR0U#CUF(E{$RDnwIxey0c3OFcJg|fNAchL=6mC=Oi37;sC zDaZ!2kR==1lmRlQzN>GFCd^DR*&K+;g;;`cmQaMSL`;MZ4mc1!_%TL zXb1qiei;}pU{=9zhSdOHW(xnoW1tTIpa%f`!O45^`+=?xbiEe?@1^{qyFSqMUJSgK z@`vvFztJ_~?dJ}m0snwZ;9~|obY(R75Ms(_h5Li6QnBoUms&yYk>@ry*H`u$k~b8W zV@DRPuZH_d=Kg#jGyeSPg!9#ZHt_qvLG6|Ro8h{k1qKRb?27IC200 literal 5418 zcmeHLX;>3i7mgcy6su^pU_(%g%4C@=B$0rYAfN=oCJ2g7CX)~#i}bYRw!Pp7>vhk1U-N4h z>TNw(t{F9>i_bRa`caCv#JR;Uz3}Jne47ND33uumA2d{-j}Ku@=-IugEp75e#}&HF zgPT{k-^zJ?rOYq0Uf=?091j*d+Ih6anc5ADr(UYr-kxN>Wzt}Ry9ucCiD=jO0O1tZI62=1RB9JO!b zsr8R%*O|u&naGGU*ovgQ&beJS)* z)Qj$YbzMMx9@8DKd1{qXm^E#FqWPpTQ^Eo+*t`f_N@UI585Onb$dMZ2;%#Rq3&W$1 z1g1}mz30AW!O=gicO>s7PDollGTq8f{-}Tj7u+22?AOvOXY<2-gfoxKJ0r@OGptVi z#bnu{+W5iE@VI36$_pEV+nY9eH$JMJoW5YBZK+jm;jCOb?dkL*w5LyAtU6-al-;$g zx}Y+Tk$bdgQN2%V1g$IQkY8wY$HAT7*NG#QXUunDF>YqsI^PbL>n92eUJmaL?%e$} zYCLZS!|1s4>GgwCb&b?RLFvdz*Uu$xp{0EJ8bw$LT^&sBiTSI8eVEp5mV3W&6_rFxrAW6|-ihjbR99NN zyQfQYH~8Yz*_KSs9J*q+9c7L~E2m)YvRIDw#IA~j7W?Ic4(y8X+TUCFV$U5UB&y+6mtGbAXJKw$dexti3%4r#O>cFV zZ{6?t%R0BP=p>WYF|`RLrs+eDuSpGGb6GaClq^4-WOY40cZ9ZdY~jmIb^e>S?ELZj z3dct=8^#|pC$Fopd~mU2sxy^Wawtva@LDn(m(^r0%zSGSRViiDb}PrtkLdiqWYY7L z+o#9Q=3UwsmcIG;?cc`sjKOQsS3M_f!(X(Wsx4K0buH_5La9Ya46iAm5x<-yYT9&I z$9UD4a*DjYF)Z5cuRER{e6NM}ye*MsCywS7^Sy#Z&nbtu-P5;f(??9Oq23hMlyx6s z-^jXqY|1$nrRwXq!=APGHg=x7wvj*>v|R4)F7kGFf46vnC98004&UpHX!Hudz@NxA zBeOC%k`muB0uS3AnI8K@cP#es@{VhAmPuJs8m>U&F*MO4O(wmd>m9sJ$?lDrFhGgCs$z7)6xZ>aX+Zw~W0 zgD-77bFQn>>~i~wu9ntd&Ez48S5y^NeD{!d z!%Q6dt*v>+T7M67EHtBGZ;qJk-Qqu@cVDyL+BuU$%(HDROJ=Ni)LqqkzbmHh_4Vxq zqq7HZqE@`2TMUg$nN?SDa*d*L@!;;Flxce&mt9Y}?RPaAf)a;zDu#^x84@-Pq3Dvg zezO3c=-D1<-sAErY1X}U!%UPZn^`(#9bV{4kmuiMC#uzE**1;|jm?dX&+)&yeDNf= znS(UBq_ty2V3X;RgUuvV=)*%*3JM}oi7|>^p$3}`f#Bk%S0iXNrX`6nnOw;yzpOk- zCdnmyatKRE6RO>@NV(S%4Hme>Hwax4jdCSqH&+W6Jr4jVFfBsTD`J#5PtPYCae3h0 zAf}Q@Mip%|pByR_k=#`pjKricDKyAKFOP%Ct`;O0jYP@|5X|a_08e~!q*kluQK>qe zj-q2wR2mtT&gF8cG?)s*5YT||c%>H6LrUDi0MUmbz;IL}S8L@eCCPw^h*hy#KA8;0 zN$=uQsD;A!@JhU&1;7VYkEp413XQ5zPzPGzT8}sY(jU-2THrxoPo@T7xGGkIVjgjr zQtL1fLV~`xSI25%jOj>FDi(t&fGQ5W(m!(P=`9q!w=hs3lPlClD?s)~np(N^16d!% zW*9N1GcXWf{vP)u?RU8wm4TK}$P=j0SVMT;0zTQ`pC?hFatY6P3pQms3ubU3DHEYX zOetLgaZrQ{VJJt8v88mTn86(Y<*mfEh!VvNPyn1F2RK|h=FFA?Yr2HNftU;~3~?ne z7h*AJ7$#vcIS4Es0O6;RgRVqk21aFok^m@YniP{FCLhz(6=}rpTL5hAFfU5>X7Il>!4W2johLN{4?K z3X&_ZKrLe6lkQC8uwj_XrnBhIOn89(Tug(5UNoT6X%v`gG&dB62hsu5B8E-{07f~; zhUc!q5UolRq*BH3$%ddv21{dulU(}B;w8s{M!cct`@236Tio~5Hwj|o#vu~P*tk3d z?Q?=7ahSyD2-x)vp^=DEhJhL0-%{`7@_#6oge`_y3<(NJ>CT|yECg`O;G&QO2&Ehj ziz62IRs20Vu99kXhz6S}1DS$sKnoeOAvyMwIpyPMbdi{WDH_axXe@}%38Hg(Og4|k zBvb$W^f(-pj&hh>h{olLK?^xcAcQStLv%I+7Gn%H%wb7C4)=dfj|tIW2!?}bTpkQQ z^mpmGPz_7gyJEUf|Et`63Iox7okw0YHCt@=5%D zrt33ZpTxi?DSz&+&vbnf1D~Y)xx4;vbXk0Oo5Pgg2c8bRtC@#EB=DX`6Zr&rfU7t# z@v@sDP+lfld+Sz1`CB}GT|qH=EIjuVwYM<%Tt)Wc`kL7KQ@>wz?gfWwyF0KkS9{IF z2?X#T9ykXP@(aHNLQ}1`(8KiU;4vfZY$_&BxeG*mZ^6tUv!BsLTddS46Kn|5+Pf#c zY-*qOc71*NRZ&@yg*36J_xUtIb;Ja+xcALT$2=tQg!SnRZp3i5DIsL_C|GwOYaIY0 NczgH?_I|r4^>5NoF(&{3 diff --git a/graphics/battle_interface/water_indicator.png b/graphics/battle_interface/water_indicator.png index bdeb401f4abebf6b78b170c334e10aab6996efe5..c7d1894793711559df5c0ae79bdd1e1d65398855 100644 GIT binary patch delta 139 zcmZ3Wwt>Z>Gr-TCmrII^fq{Y7)59eQNOJ(O00%RWlnFWK&%nUgn(6Eu;OXqFP*9Yg zmYI{vz@Ra4^G)V5MwaNuVp}Jd3)$OidAc};aLi0jSRk;WfkAu5Gxp66CiYs*@;nE5 o#59`aTMlIXIG7c&@EHSxy9(p2i6yVL1I=gfboFyt=akR{0G?(k1ONa4 literal 4896 zcmeHKX;c$g77ik!g5rjtjS}MmqLqybStKF^grLE&sDL0=DwR-57Ly7Dv>Oz)6uqV{%^|&BxCK4!V=pYyRkja(XE|{sm+!50 zzHD62XmT3eSn3@qTG|lt@78zoM@J>qRW9CeWo>!Oou_FV`r>t5Lmalld$D(gA$s_g zAx~2hBj-(b_jxl%dN0ag6WMgRS7e_h>L{Z&=E5cWK_>~Zqu<^ZH+RXVU3bF8IEk~FjeA#THfKi6rbMrEf$2I zPD$UtY;5VcO1TY6covi*7baB10?0L#GVdj~hxpDW|mj+<{7Uom0&pOJRK*LyG2 z7L;xFM?@dTX(~)Z;Pyd2wiClEOup-;u5v`virY6AT>L#l7I-lv==}8)R_R+VR}^iY z91-j!TF=M+#n0;XyVVw(IS#JB6jkg@k2y0W>(I?jSs@#z*4&VylA7Jkk=d|n_fV+h z`u?Ulf`o#Qx58I9LyzPx84+;Uban&tVZhnxqnqUG@ch?%qLu6HYUS8Mx8E{3lO?Up z)5SR}E{<>R_6?yYT1s22OO$M?+)l zs0g8VbyZQj-VDe9s8MNut~}=7Mg%{bSN&?eG`aE0qOf00OA?2XSpSjf>KM_e1jZHUT>{;45~2(RCUjLpn;88|fk{Jm}BgJDFp3>KZqP^lO_J@kZMJRs=~=r29=Vc>^{ z5rXM81|5p|#bat>Y)=X~`q^J=(8Zb4k)sSO4pRZB9?Z)6YD#~xMEco-lt78Av}P|L z_E$&(S9}rctJug9b2>c(0q&o9ze0b?-3$gOiA3P5K@DVhVqYPRoL?Z*w^S^ovFXe&7HJ$pD1ZZ4 z1GrkQNzi{83d2=cD1nfAvOIV&>;b#8U=MdT5AI6b%s2h4}IRX|;V{|9WAlLM#Y&{wOqlc#%&|?z-eqA=Oxq!Wj@p-fA){B(zZ#=r|@Hfr? zsJ~D0P5OS9>$_avq`)_UzjxPnxxPt(ZvubsuK$}{{l9$fU~2FWD1rQ#u^SW!K7^Rk znPGn5E(={+<)sS63#A!1Z&nw7)F=M3Js&+WFSCr%nKS!B$=b!0<%Y_#*H^in;IMun z0zUn;0TFr%#bzjZT2Qic9D&iA5KH{5A6X6U1r1zNHG32=L1JI;u)a6Y1$nlA96j1Q zWd!{r{otVTEJmzta&ofkS*!B)7tVW|y}~4YuRBqcb#`dQ@Jl;@BSq{N Date: Sat, 22 Feb 2025 21:56:30 +0100 Subject: [PATCH 54/73] Clean up leftover from simu hp reduction development (#6323) --- include/battle.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/include/battle.h b/include/battle.h index 7c62e66db1..09dcc73693 100644 --- a/include/battle.h +++ b/include/battle.h @@ -820,8 +820,6 @@ struct BattleStruct u8 pursuitStoredSwitch; // Stored id for the Pursuit target's switch s32 battlerExpReward; u16 prevTurnSpecies[MAX_BATTLERS_COUNT]; // Stores species the AI has in play at start of turn - - // Simultaneous hp reduction for spread moves s32 moveDamage[MAX_BATTLERS_COUNT]; s32 critChance[MAX_BATTLERS_COUNT]; u16 moveResultFlags[MAX_BATTLERS_COUNT]; From 5b4de20455306a78701d596c3ea09fa3ced4b7a2 Mon Sep 17 00:00:00 2001 From: Alex <93446519+AlexOn1ine@users.noreply.github.com> Date: Sat, 22 Feb 2025 21:56:48 +0100 Subject: [PATCH 55/73] Fixes intimidate missing timing during a mega evo / switch (#6322) Co-authored-by: Bassoonian --- src/battle_main.c | 3 +++ test/battle/ability/intimidate.c | 15 +++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/src/battle_main.c b/src/battle_main.c index 61e61aeb34..bc3c9bdd1e 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -3259,6 +3259,9 @@ void SwitchInClearSetData(u32 battler) gCurrentMove = MOVE_NONE; gBattleStruct->arenaTurnCounter = 0xFF; + // Restore struct member so replacement does not miss timing + gSpecialStatuses[battler].switchInAbilityDone = FALSE; + // Reset damage to prevent things like red card activating if the switched-in mon is holding it gSpecialStatuses[battler].physicalDmg = 0; gSpecialStatuses[battler].specialDmg = 0; diff --git a/test/battle/ability/intimidate.c b/test/battle/ability/intimidate.c index 6aea91de25..1923a5fe27 100644 --- a/test/battle/ability/intimidate.c +++ b/test/battle/ability/intimidate.c @@ -375,3 +375,18 @@ DOUBLE_BATTLE_TEST("Intimidate will correctly decrease the attack of the second ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerRight); } } + +SINGLE_BATTLE_TEST("Intimdate does not lose timing after mega evolution and switch out by a hit escape move") +{ + GIVEN { + ASSUME(gMovesInfo[MOVE_U_TURN].effect == EFFECT_HIT_ESCAPE); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_MANECTRIC) { Item(ITEM_MANECTITE); } + OPPONENT(SPECIES_ARBOK) { Ability(ABILITY_INTIMIDATE); } + } WHEN { + TURN { MOVE(opponent, MOVE_U_TURN, gimmick: GIMMICK_MEGA); SEND_OUT(opponent, 1); } + } SCENE { + ABILITY_POPUP(opponent, ABILITY_INTIMIDATE); + ABILITY_POPUP(opponent, ABILITY_INTIMIDATE); + } +} From 9479b67964eaf8f3616fe53546c499e67c19eb20 Mon Sep 17 00:00:00 2001 From: PhallenTree <168426989+PhallenTree@users.noreply.github.com> Date: Sun, 23 Feb 2025 10:49:00 +0000 Subject: [PATCH 56/73] Remove pursuitSwitchByMove and additional if statement (#6326) --- include/battle.h | 1 - src/battle_script_commands.c | 3 +-- src/battle_util.c | 4 +--- 3 files changed, 2 insertions(+), 6 deletions(-) diff --git a/include/battle.h b/include/battle.h index 09dcc73693..ecad976d5e 100644 --- a/include/battle.h +++ b/include/battle.h @@ -816,7 +816,6 @@ struct BattleStruct u8 additionalEffectsCounter:4; // A counter for the additionalEffects applied by the current move in Cmd_setadditionaleffects u8 redCardActivates:1; u8 padding2:2; // padding in the middle so pursuit fields are together - u8 pursuitSwitchByMove:1; u8 pursuitStoredSwitch; // Stored id for the Pursuit target's switch s32 battlerExpReward; u16 prevTurnSpecies[MAX_BATTLERS_COUNT]; // Stores species the AI has in play at start of turn diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 266e62b1b8..082252a29d 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -7329,7 +7329,7 @@ static void Cmd_moveend(void) else if (IsBattlerAlive(gBattlerTarget)) { gBattlerAttacker = gBattlerTarget; - if (gBattleStruct->pursuitSwitchByMove) + if (gBattleStruct->pursuitStoredSwitch == PARTY_SIZE) gBattlescriptCurrInstr = BattleScript_MoveSwitchOpenPartyScreen; else gBattlescriptCurrInstr = BattleScript_DoSwitchOut; @@ -14270,7 +14270,6 @@ static void Cmd_jumpifnopursuitswitchdmg(void) { ChangeOrderTargetAfterAttacker(); gBattleStruct->battlerState[gBattlerAttacker].pursuitTarget = TRUE; - gBattleStruct->pursuitSwitchByMove = gActionsByTurnOrder[gCurrentTurnActionNumber] == B_ACTION_USE_MOVE; gBattleStruct->pursuitStoredSwitch = gBattleStruct->monToSwitchIntoId[gBattlerAttacker]; gBattleStruct->moveTarget[gBattlerTarget] = gBattlerAttacker; gBattlerTarget = savedTarget; diff --git a/src/battle_util.c b/src/battle_util.c index b49be3b52a..078d2a9a1c 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -3214,7 +3214,6 @@ static void CancellerAsleep(u32 *effect) { u32 moveEffect = GetMoveEffect(gChosenMove); if (moveEffect != EFFECT_SNORE && moveEffect != EFFECT_SLEEP_TALK) - if (gChosenMove != MOVE_SNORE && gChosenMove != MOVE_SLEEP_TALK) { gBattlescriptCurrInstr = BattleScript_MoveUsedIsAsleep; gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; @@ -12256,8 +12255,7 @@ void ClearPursuitValues(void) { for (u32 i = 0; i < gBattlersCount; i++) gBattleStruct->battlerState[i].pursuitTarget = FALSE; - gBattleStruct->pursuitSwitchByMove = FALSE; - gBattleStruct->pursuitStoredSwitch = 0; + gBattleStruct->pursuitStoredSwitch = PARTY_SIZE; } void ClearPursuitValuesIfSet(u32 battler) From 320c6cf11f09e8f9c895591904bc6923a3a903e5 Mon Sep 17 00:00:00 2001 From: PhallenTree <168426989+PhallenTree@users.noreply.github.com> Date: Sun, 23 Feb 2025 19:50:52 +0000 Subject: [PATCH 57/73] Fixes Coaching on semi-invulnerable ally, Air Balloon being stolen, Immunity abilities being ignored by Mold Breaker (#6327) --- data/battle_scripts_1.s | 2 ++ include/battle.h | 3 ++- src/battle_script_commands.c | 2 +- src/battle_util.c | 16 +++++++++++++--- test/battle/ability/own_tempo.c | 8 ++------ test/battle/ability/pastel_veil.c | 1 - test/battle/hold_effect/air_balloon.c | 1 - test/battle/hold_effect/jaboca_berry.c | 4 ++-- test/battle/move_effect/coaching.c | 1 - test/battle/move_effect/two_turns_attack.c | 2 -- 10 files changed, 22 insertions(+), 18 deletions(-) diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 3016540a80..758c6e8bbf 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -1035,6 +1035,7 @@ BattleScript_EffectCoaching:: setallytonexttarget EffectCoaching_CheckAllyStats goto BattleScript_ButItFailed EffectCoaching_CheckAllyStats: + accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON jumpifstat BS_TARGET, CMP_NOT_EQUAL, STAT_ATK, MAX_STAT_STAGE, BattleScript_CoachingWorks jumpifstat BS_TARGET, CMP_NOT_EQUAL, STAT_DEF, MAX_STAT_STAGE, BattleScript_CoachingWorks goto BattleScript_ButItFailed @ ally at max atk, def @@ -3775,6 +3776,7 @@ BattleScript_TwoTurnMovesSecondTurn:: BattleScript_TwoTurnMovesSecondTurnRet: setbyte sB_ANIM_TURN, 1 + setbyte sB_ANIM_TARGETS_HIT, 0 clearstatusfromeffect BS_ATTACKER, MOVE_EFFECT_CHARGING clearsemiinvulnerablebit @ only for moves with EFFECT_SEMI_INVULNERABLE/EFFECT_SKY_DROP return diff --git a/include/battle.h b/include/battle.h index 2659c08844..4e9313d10d 100644 --- a/include/battle.h +++ b/include/battle.h @@ -829,7 +829,8 @@ struct BattleStruct u16 commanderActive[MAX_BATTLERS_COUNT]; u32 stellarBoostFlags[NUM_BATTLE_SIDES]; // stored as a bitfield of flags for all types for each side u8 redCardActivates:1; - u8 padding:7; + u8 bypassMoldBreakerChecks:1; // for ABILITYEFFECT_IMMUNITY + u8 padding:6; u8 usedEjectItem; u8 usedMicleBerry; u8 trainerSlideSpriteIds[MAX_BATTLERS_COUNT]; diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index c3dc016314..a74e0e5bcc 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -3639,7 +3639,7 @@ void SetMoveEffect(bool32 primary, bool32 certain) gProtectStructs[gBattlerTarget].banefulBunkered = FALSE; gProtectStructs[gBattlerTarget].obstructed = FALSE; gProtectStructs[gBattlerTarget].silkTrapped = FALSE; - gProtectStructs[gBattlerAttacker].burningBulwarked = FALSE; + gProtectStructs[gBattlerTarget].burningBulwarked = FALSE; BattleScriptPush(gBattlescriptCurrInstr + 1); if (gCurrentMove == MOVE_HYPERSPACE_FURY) gBattlescriptCurrInstr = BattleScript_HyperspaceFuryRemoveProtect; diff --git a/src/battle_util.c b/src/battle_util.c index 5c32262b43..8096e8e487 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -6251,6 +6251,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 } break; case ABILITYEFFECT_IMMUNITY: + gBattleStruct->bypassMoldBreakerChecks = TRUE; for (battler = 0; battler < gBattlersCount; battler++) { switch (GetBattlerAbility(battler)) @@ -6341,6 +6342,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 return effect; } } + gBattleStruct->bypassMoldBreakerChecks = FALSE; break; case ABILITYEFFECT_SYNCHRONIZE: if (gLastUsedAbility == ABILITY_SYNCHRONIZE && (gHitMarker & HITMARKER_SYNCHRONISE_EFFECT)) @@ -6570,7 +6572,9 @@ u32 GetBattlerAbility(u32 battler) && gBattleMons[battler].ability == ABILITY_COMATOSE) return ABILITY_NONE; - if (noAbilityShield && CanBreakThroughAbility(gBattlerAttacker, battler, gBattleMons[gBattlerAttacker].ability)) + if (!gBattleStruct->bypassMoldBreakerChecks + && noAbilityShield + && CanBreakThroughAbility(gBattlerAttacker, battler, gBattleMons[gBattlerAttacker].ability)) return ABILITY_NONE; return gBattleMons[battler].ability; @@ -6584,7 +6588,9 @@ u32 GetBattlerAbility(u32 battler) && noAbilityShield) return ABILITY_NONE; - if (noAbilityShield && CanBreakThroughAbility(gBattlerAttacker, battler, gBattleMons[gBattlerAttacker].ability)) + if (!gBattleStruct->bypassMoldBreakerChecks + && noAbilityShield + && CanBreakThroughAbility(gBattlerAttacker, battler, gBattleMons[gBattlerAttacker].ability)) return ABILITY_NONE; return gBattleMons[battler].ability; @@ -11436,8 +11442,12 @@ bool32 CanStealItem(u32 battlerStealing, u32 battlerItem, u16 item) return FALSE; } + // It's supposed to pop before trying to steal but this also works + if (ItemId_GetHoldEffect(item) == HOLD_EFFECT_AIR_BALLOON) + return FALSE; + if (!CanBattlerGetOrLoseItem(battlerItem, item) // Battler with item cannot have it stolen - ||!CanBattlerGetOrLoseItem(battlerStealing, item)) // Stealer cannot take the item + || !CanBattlerGetOrLoseItem(battlerStealing, item)) // Stealer cannot take the item return FALSE; return TRUE; diff --git a/test/battle/ability/own_tempo.c b/test/battle/ability/own_tempo.c index 1f3f49c006..01ecdc9434 100644 --- a/test/battle/ability/own_tempo.c +++ b/test/battle/ability/own_tempo.c @@ -58,7 +58,6 @@ SINGLE_BATTLE_TEST("Own Tempo prevents confusion from moves by the user") SINGLE_BATTLE_TEST("Mold Breaker ignores Own Tempo") { - KNOWN_FAILING; // Ideally the func CanBeConfused should be split into AttackerCanBeConfused and TargetCanBeConfused or we do it in the same func but have a check for when battlerAtk == battlerDef GIVEN { ASSUME(gMovesInfo[MOVE_CONFUSE_RAY].effect == EFFECT_CONFUSE); PLAYER(SPECIES_PINSIR) { Ability(ABILITY_MOLD_BREAKER); } @@ -66,16 +65,13 @@ SINGLE_BATTLE_TEST("Mold Breaker ignores Own Tempo") } WHEN { TURN { MOVE(player, MOVE_CONFUSE_RAY); } } SCENE { - NONE_OF { - ABILITY_POPUP(opponent, ABILITY_OWN_TEMPO); - MESSAGE("The opposing Slowpoke's Own Tempo prevents confusion!"); - } + ANIMATION(ANIM_TYPE_MOVE, MOVE_CONFUSE_RAY, player); + NOT MESSAGE("The opposing Slowpoke's Own Tempo prevents confusion!"); } } SINGLE_BATTLE_TEST("Mold Breaker does not prevent Own Tempo from curing confusion right after") { - KNOWN_FAILING; GIVEN { ASSUME(gMovesInfo[MOVE_CONFUSE_RAY].effect == EFFECT_CONFUSE); PLAYER(SPECIES_PINSIR) { Ability(ABILITY_MOLD_BREAKER); }; diff --git a/test/battle/ability/pastel_veil.c b/test/battle/ability/pastel_veil.c index a6b6168547..2b721fd095 100644 --- a/test/battle/ability/pastel_veil.c +++ b/test/battle/ability/pastel_veil.c @@ -33,7 +33,6 @@ DOUBLE_BATTLE_TEST("Pastel Veil prevents Poison Sting poison on partner") SINGLE_BATTLE_TEST("Pastel Veil immediately cures Mold Breaker poison") { - KNOWN_FAILING; GIVEN { ASSUME(gMovesInfo[MOVE_TOXIC].effect == EFFECT_TOXIC); PLAYER(SPECIES_PINSIR) { Ability(ABILITY_MOLD_BREAKER); } diff --git a/test/battle/hold_effect/air_balloon.c b/test/battle/hold_effect/air_balloon.c index 293e1d80ca..c99423edc1 100644 --- a/test/battle/hold_effect/air_balloon.c +++ b/test/battle/hold_effect/air_balloon.c @@ -105,7 +105,6 @@ SINGLE_BATTLE_TEST("Air Balloon pops before it can be stolen with Magician") SINGLE_BATTLE_TEST("Air Balloon pops before it can be stolen with Thief or Covet") { u32 move; - KNOWN_FAILING; PARAMETRIZE { move = MOVE_THIEF; } PARAMETRIZE { move = MOVE_COVET; } GIVEN { diff --git a/test/battle/hold_effect/jaboca_berry.c b/test/battle/hold_effect/jaboca_berry.c index 373780be71..8e69ff1bac 100644 --- a/test/battle/hold_effect/jaboca_berry.c +++ b/test/battle/hold_effect/jaboca_berry.c @@ -54,7 +54,7 @@ SINGLE_BATTLE_TEST("Jaboca Berry tirggers before Bug Bite can steal it") HP_BAR(opponent); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); HP_BAR(player); - MESSAGE("Wyanut was hurt by the opposing Wobbuffet's Jaboca Berry!"); - NOT MESSAGE("Wynaut stole and ate the opposing its target's Jaboca Berry!"); + MESSAGE("Wynaut was hurt by the opposing Wobbuffet's Jaboca Berry!"); + NOT MESSAGE("Wynaut stole and ate the opposing Wobbuffet's Jaboca Berry!"); } } diff --git a/test/battle/move_effect/coaching.c b/test/battle/move_effect/coaching.c index 451ac80495..4d5581ac33 100644 --- a/test/battle/move_effect/coaching.c +++ b/test/battle/move_effect/coaching.c @@ -58,7 +58,6 @@ DOUBLE_BATTLE_TEST("Coaching bypasses Crafty Shield") DOUBLE_BATTLE_TEST("Coaching fails if all allies are is semi-invulnerable") { - KNOWN_FAILING; // Coaching succeeds GIVEN { ASSUME(gMovesInfo[MOVE_FLY].effect == EFFECT_SEMI_INVULNERABLE); PLAYER(SPECIES_WOBBUFFET); diff --git a/test/battle/move_effect/two_turns_attack.c b/test/battle/move_effect/two_turns_attack.c index efeb419ce5..78dd62f093 100644 --- a/test/battle/move_effect/two_turns_attack.c +++ b/test/battle/move_effect/two_turns_attack.c @@ -49,7 +49,6 @@ SINGLE_BATTLE_TEST("Razor Wind needs a charging turn") SINGLE_BATTLE_TEST("Razor Wind doesn't need to charge with Power Herb") { - KNOWN_FAILING; GIVEN { PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_POWER_HERB); } OPPONENT(SPECIES_WOBBUFFET); @@ -69,7 +68,6 @@ SINGLE_BATTLE_TEST("Razor Wind doesn't need to charge with Power Herb") MESSAGE("Wobbuffet became fully charged due to its Power Herb!"); if (B_UPDATED_MOVE_DATA < GEN_5) MESSAGE("Wobbuffet used Razor Wind!"); - // For some reason, this breaks with and only with Razor Wind... ANIMATION(ANIM_TYPE_MOVE, MOVE_RAZOR_WIND, player); HP_BAR(opponent); } From c3962c2d3b1fba4c96a4464299de5eb33dbbd9fd Mon Sep 17 00:00:00 2001 From: hedara90 <90hedara@gmail.com> Date: Sun, 23 Feb 2025 22:11:41 +0100 Subject: [PATCH 58/73] Shifted the follower graphicsIds (#6329) Co-authored-by: Hedara --- include/constants/event_objects.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/include/constants/event_objects.h b/include/constants/event_objects.h index 306aa055aa..db8d96cae4 100644 --- a/include/constants/event_objects.h +++ b/include/constants/event_objects.h @@ -270,10 +270,10 @@ #define OBJ_EVENT_GFX_VAR_E (OBJ_EVENT_GFX_VARS + 0xE) #define OBJ_EVENT_GFX_VAR_F (OBJ_EVENT_GFX_VARS + 0xF) -#define OBJ_EVENT_MON (1u << 15) -#define OBJ_EVENT_MON_SHINY (1u << 14) -#define OBJ_EVENT_MON_FEMALE (1u << 13) -#define OBJ_EVENT_MON_SPECIES_MASK (~(7u << 13)) +#define OBJ_EVENT_MON (1u << 14) +#define OBJ_EVENT_MON_SHINY (1u << 13) +#define OBJ_EVENT_MON_FEMALE (1u << 12) +#define OBJ_EVENT_MON_SPECIES_MASK (~(7u << 12)) // Used to call a specific species' follower graphics. Useful for static encounters. #define OBJ_EVENT_GFX_SPECIES(name) (SPECIES_##name + OBJ_EVENT_MON) From ce0491dffa531bd3455a5ec1f87da332b3d97d3c Mon Sep 17 00:00:00 2001 From: Pawkkie <61265402+Pawkkie@users.noreply.github.com> Date: Mon, 24 Feb 2025 16:41:10 -0500 Subject: [PATCH 59/73] Update SCOPE.md with Intergenerational Feature Compatibility (#6325) --- docs/team_procedures/scope.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/team_procedures/scope.md b/docs/team_procedures/scope.md index e3c736c1cc..3293cea6dc 100644 --- a/docs/team_procedures/scope.md +++ b/docs/team_procedures/scope.md @@ -54,6 +54,7 @@ Pull Requests that fall into this category are not in scope by default and shoul 2. **Fangame Features**: Adds a popular feature from other fangames 3. **Popular Non-SS Features**: Exceptions can be made for uniquely popular or requested features (Drowsy, PLA Legend Plate, etc.) 4. **External Program**: External programs like poryscript, porymoves, etc. +5. **Intergenerational Feature Compatibility**: Addresses limitations and issues resulting from including all generational behaviours in a GBA native title, and extrapolation of features no longer supported by GameFreak ## Workflow for Proposed Feature Scope Discussion For the contributor: From b109c4c36bbd7818c66e73b3be498f15ccbba49c Mon Sep 17 00:00:00 2001 From: Pawkkie <61265402+Pawkkie@users.noreply.github.com> Date: Tue, 25 Feb 2025 07:06:39 -0500 Subject: [PATCH 60/73] Fix Substitute / Shed Tail Switch AI (#6334) --- include/battle_ai_util.h | 3 ++- src/battle_ai_main.c | 3 ++- src/battle_ai_switch_items.c | 31 +++++++++++++++++++++------ src/battle_ai_util.c | 33 +++++++++++++++++++++-------- test/battle/move_effect/shed_tail.c | 14 ++++++------ 5 files changed, 60 insertions(+), 24 deletions(-) diff --git a/include/battle_ai_util.h b/include/battle_ai_util.h index a0898c7ef7..ba6e7cd69c 100644 --- a/include/battle_ai_util.h +++ b/include/battle_ai_util.h @@ -155,6 +155,7 @@ bool32 HasHighCritRatioMove(u32 battler); bool32 HasMagicCoatAffectedMove(u32 battler); bool32 HasSnatchAffectedMove(u32 battler); bool32 IsHazardClearingMove(u32 move); +bool32 IsSubstituteEffect(u32 effect); // status checks bool32 AI_CanGetFrostbite(u32 battler, u32 ability); @@ -216,7 +217,7 @@ bool32 AI_ShouldCopyStatChanges(u32 battlerAtk, u32 battlerDef); bool32 AI_ShouldSetUpHazards(u32 battlerAtk, u32 battlerDef, struct AiLogicData *aiData); void IncreaseTidyUpScore(u32 battlerAtk, u32 battlerDef, u32 move, s32 *score); bool32 AI_ShouldSpicyExtract(u32 battlerAtk, u32 battlerAtkPartner, u32 move, struct AiLogicData *aiData); -void IncreaseSubstituteMoveScore(u32 battlerAtk, u32 battlerDef, u32 move, s32 *score); +u32 IncreaseSubstituteMoveScore(u32 battlerAtk, u32 battlerDef, u32 move); bool32 IsBattlerPredictedToSwitch(u32 battler); bool32 HasLowAccuracyMove(u32 battlerAtk, u32 battlerDef); diff --git a/src/battle_ai_main.c b/src/battle_ai_main.c index 09cdd3a9f3..e3d0dafbe5 100644 --- a/src/battle_ai_main.c +++ b/src/battle_ai_main.c @@ -3650,7 +3650,8 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move) break; case EFFECT_SUBSTITUTE: case EFFECT_SHED_TAIL: - IncreaseSubstituteMoveScore(battlerAtk, battlerDef, move, &score); + ADJUST_SCORE(IncreaseSubstituteMoveScore(battlerAtk, battlerDef, move)); + break; case EFFECT_MIMIC: if (AI_IsFaster(battlerAtk, battlerDef, move)) { diff --git a/src/battle_ai_switch_items.c b/src/battle_ai_switch_items.c index 93adc01066..663e9fb633 100644 --- a/src/battle_ai_switch_items.c +++ b/src/battle_ai_switch_items.c @@ -1021,6 +1021,23 @@ static bool32 ShouldSwitchIfAttackingStatsLowered(u32 battler) return FALSE; } +static bool32 HasGoodSubstituteMove(u32 battler) +{ + int i; + u32 aiMove, aiMoveEffect, opposingBattler = GetOppositeBattler(battler); + for (i = 0; i < MAX_MON_MOVES; i++) + { + aiMove = gBattleMons[battler].moves[i]; + aiMoveEffect = GetMoveEffect(aiMove); + if (IsSubstituteEffect(aiMoveEffect)) + { + if (IncreaseSubstituteMoveScore(battler, opposingBattler, aiMove) > 0) + return TRUE; + } + } + return FALSE; +} + bool32 ShouldSwitch(u32 battler) { u32 battlerIn1, battlerIn2; @@ -1085,19 +1102,21 @@ bool32 ShouldSwitch(u32 battler) return FALSE; // NOTE: The sequence of the below functions matter! Do not change unless you have carefully considered the outcome. - // Since the order is sequencial, and some of these functions prompt switch to specific party members. + // Since the order is sequential, and some of these functions prompt switch to specific party members. + + // FindMon functions can prompt a switch to specific party members that override GetMostSuitableMonToSwitchInto + // The rest can prompt a switch to party member returned by GetMostSuitableMonToSwitchInto - // These Functions can prompt switch to specific party members that override GetMostSuitableMonToSwitchInto if (FindMonThatHitsWonderGuard(battler)) return TRUE; - if (FindMonThatAbsorbsOpponentsMove(battler)) - return TRUE; - - // These Functions can prompt switch to party member returned by GetMostSuitableMonToSwitchInto if ((AI_THINKING_STRUCT->aiFlags[GetThinkingBattler(battler)] & AI_FLAG_SMART_SWITCHING) && (CanMonSurviveHazardSwitchin(battler) == FALSE)) return FALSE; + if (HasGoodSubstituteMove(battler)) + return FALSE; if (ShouldSwitchIfTrapperInParty(battler)) return TRUE; + if (FindMonThatAbsorbsOpponentsMove(battler)) + return TRUE; if (ShouldSwitchIfOpponentChargingOrInvulnerable(battler)) return TRUE; if (ShouldSwitchIfTruant(battler)) diff --git a/src/battle_ai_util.c b/src/battle_ai_util.c index 7b45c539e5..57fcc0b7ac 100644 --- a/src/battle_ai_util.c +++ b/src/battle_ai_util.c @@ -2427,6 +2427,19 @@ bool32 IsSwitchOutEffect(u32 effect) } } +bool32 IsSubstituteEffect(u32 effect) +{ + // Substitute effects like Substitute, Shed Tail, etc. + switch (effect) + { + case EFFECT_SUBSTITUTE: + case EFFECT_SHED_TAIL: + return TRUE; + default: + return FALSE; + } +} + bool32 IsChaseEffect(u32 effect) { // Effects that hit switching out mons like Pursuit @@ -4232,31 +4245,32 @@ bool32 AI_ShouldSpicyExtract(u32 battlerAtk, u32 battlerAtkPartner, u32 move, st && HasMoveWithCategory(battlerAtkPartner, DAMAGE_CATEGORY_PHYSICAL)); } -void IncreaseSubstituteMoveScore(u32 battlerAtk, u32 battlerDef, u32 move, s32 *score) +u32 IncreaseSubstituteMoveScore(u32 battlerAtk, u32 battlerDef, u32 move) { u32 effect = GetMoveEffect(move); + u32 scoreIncrease = 0; if (effect == EFFECT_SUBSTITUTE) // Substitute specific { if (HasAnyKnownMove(battlerDef) && GetBestDmgFromBattler(battlerDef, battlerAtk) < gBattleMons[battlerAtk].maxHP / 4) - ADJUST_SCORE_PTR(GOOD_EFFECT); + scoreIncrease += GOOD_EFFECT; } else if (effect == EFFECT_SHED_TAIL) // Shed Tail specific { if ((ShouldPivot(battlerAtk, battlerDef, AI_DATA->abilities[battlerDef], move, AI_THINKING_STRUCT->movesetIndex)) && (HasAnyKnownMove(battlerDef) && (GetBestDmgFromBattler(battlerDef, battlerAtk) < gBattleMons[battlerAtk].maxHP / 2))) - ADJUST_SCORE_PTR(BEST_EFFECT); + scoreIncrease += BEST_EFFECT; } if (gStatuses3[battlerDef] & STATUS3_PERISH_SONG) - ADJUST_SCORE_PTR(GOOD_EFFECT); + scoreIncrease += GOOD_EFFECT; if (gBattleMons[battlerDef].status1 & STATUS1_SLEEP) - ADJUST_SCORE_PTR(GOOD_EFFECT); + scoreIncrease += GOOD_EFFECT; else if (gBattleMons[battlerDef].status1 & (STATUS1_BURN | STATUS1_PSN_ANY | STATUS1_FROSTBITE)) - ADJUST_SCORE_PTR(DECENT_EFFECT); + scoreIncrease += DECENT_EFFECT; if (IsBattlerPredictedToSwitch(battlerDef)) - ADJUST_SCORE(DECENT_EFFECT); + scoreIncrease += DECENT_EFFECT; if (HasMoveEffect(battlerDef, EFFECT_SLEEP) || HasMoveEffect(battlerDef, EFFECT_TOXIC) @@ -4265,10 +4279,11 @@ void IncreaseSubstituteMoveScore(u32 battlerAtk, u32 battlerDef, u32 move, s32 * || HasMoveEffect(battlerDef, EFFECT_WILL_O_WISP) || HasMoveEffect(battlerDef, EFFECT_CONFUSE) || HasMoveEffect(battlerDef, EFFECT_LEECH_SEED)) - ADJUST_SCORE_PTR(GOOD_EFFECT); + scoreIncrease += GOOD_EFFECT; if (AI_DATA->hpPercents[battlerAtk] > 70) - ADJUST_SCORE_PTR(WEAK_EFFECT); + scoreIncrease += WEAK_EFFECT; + return scoreIncrease; } bool32 HasLowAccuracyMove(u32 battlerAtk, u32 battlerDef) diff --git a/test/battle/move_effect/shed_tail.c b/test/battle/move_effect/shed_tail.c index 4667eab1ad..f4498c7e34 100644 --- a/test/battle/move_effect/shed_tail.c +++ b/test/battle/move_effect/shed_tail.c @@ -86,22 +86,22 @@ SINGLE_BATTLE_TEST("Shed Tail's HP cost doesn't trigger effects that trigger on } } -// Passes for some reason even though it seems there is some code missing -/* -AI_SINGLE_BATTLE_TEST("AI will use Shed Tail to pivot to another mon while in damage stalemate with player") +AI_SINGLE_BATTLE_TEST("AI will use Shed Tail to pivot to another mon while in damage stalemate with player rather than hard switching") { - KNOWN_FAILING; // missing AI code + u32 aiFlags; + PARAMETRIZE { aiFlags = 0; } + PARAMETRIZE { aiFlags = AI_FLAG_SMART_SWITCHING | AI_FLAG_OMNISCIENT | AI_FLAG_SMART_MON_CHOICES; } GIVEN { - AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | aiFlags); PLAYER(SPECIES_WOBBUFFET) { Speed(100); Ability(ABILITY_RUN_AWAY); Moves(MOVE_TACKLE, MOVE_CELEBRATE); } OPPONENT(SPECIES_WOBBUFFET) { Speed(50); Ability(ABILITY_RUN_AWAY); Moves(MOVE_CONFUSION, MOVE_SHED_TAIL); } OPPONENT(SPECIES_SCIZOR) { Speed(101); Moves(MOVE_CELEBRATE, MOVE_X_SCISSOR); } } WHEN { - TURN { MOVE(player, MOVE_TACKLE); EXPECT_MOVE(opponent, MOVE_CONFUSION); } + if (aiFlags == 0) + TURN { MOVE(player, MOVE_TACKLE); EXPECT_MOVE(opponent, MOVE_CONFUSION); } TURN { MOVE(player, MOVE_TACKLE); EXPECT_MOVE(opponent, MOVE_SHED_TAIL); } } } -*/ SINGLE_BATTLE_TEST("Shed Tail creates a Substitute with 1/4 of user maximum health") { From 766b9b00ca8edbd7bc9b106896b9bf35bfd94949 Mon Sep 17 00:00:00 2001 From: hedara90 <90hedara@gmail.com> Date: Tue, 25 Feb 2025 13:10:17 +0100 Subject: [PATCH 61/73] Fixed curing status2 with items in double battles (#6335) Co-authored-by: Hedara --- src/item_use.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/item_use.c b/src/item_use.c index 5d797029bb..e7acde9ffa 100644 --- a/src/item_use.c +++ b/src/item_use.c @@ -1171,6 +1171,15 @@ void ItemUseInBattle_PartyMenuChooseMove(u8 taskId) ItemUseInBattle_ShowPartyMenu(taskId); } +static bool32 SelectedMonHasStatus2(u16 itemId) +{ + if (gPartyMenu.slotId == 0) + return gBattleMons[0].status2 & GetItemStatus2Mask(itemId); + else if (gBattleTypeFlags & (BATTLE_TYPE_DOUBLE | BATTLE_TYPE_MULTI) && gPartyMenu.slotId == 1) + return gBattleMons[2].status2 & GetItemStatus2Mask(itemId); + return FALSE; +} + // Returns whether an item can be used in battle and sets the fail text. bool32 CannotUseItemsInBattle(u16 itemId, struct Pokemon *mon) { @@ -1243,13 +1252,13 @@ bool32 CannotUseItemsInBattle(u16 itemId, struct Pokemon *mon) break; case EFFECT_ITEM_CURE_STATUS: if (!((GetMonData(mon, MON_DATA_STATUS) & GetItemStatus1Mask(itemId)) - || (gPartyMenu.slotId == 0 && gBattleMons[gBattlerInMenuId].status2 & GetItemStatus2Mask(itemId)))) + || SelectedMonHasStatus2(itemId))) cannotUse = TRUE; break; case EFFECT_ITEM_HEAL_AND_CURE_STATUS: if ((hp == 0 || hp == GetMonData(mon, MON_DATA_MAX_HP)) && !((GetMonData(mon, MON_DATA_STATUS) & GetItemStatus1Mask(itemId)) - || (gPartyMenu.slotId == 0 && gBattleMons[gBattlerInMenuId].status2 & GetItemStatus2Mask(itemId)))) + || SelectedMonHasStatus2(itemId))) cannotUse = TRUE; break; case EFFECT_ITEM_REVIVE: From 2a6fd2495418200af20c4c12cebbd9b8975604b7 Mon Sep 17 00:00:00 2001 From: Bivurnum <147376167+Bivurnum@users.noreply.github.com> Date: Tue, 25 Feb 2025 15:15:09 -0600 Subject: [PATCH 62/73] fix for multi 2vs1 opponent sends out too many mons bug (#6324) --- src/battle_util.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/battle_util.c b/src/battle_util.c index 8096e8e487..28da294042 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -3816,6 +3816,21 @@ bool32 HasNoMonsToSwitch(u32 battler, u8 partyIdBattlerOn1, u8 partyIdBattlerOn2 playerId = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT); party = gEnemyParty; + // Edge case: If both opposing Pokemon were knocked out on the same turn, + // make sure opponent only sents out the final Pokemon once. + if (battler == playerId + && (gHitMarker & HITMARKER_FAINTED(flankId)) + && (gHitMarker & HITMARKER_FAINTED(playerId))) + { + u8 count = 0; + for (i = 0; i < PARTY_SIZE; i++) + if (IsValidForBattle(&party[i])) + count++; + + if (count < 2) + return TRUE; + } + if (partyIdBattlerOn1 == PARTY_SIZE) partyIdBattlerOn1 = gBattlerPartyIndexes[flankId]; if (partyIdBattlerOn2 == PARTY_SIZE) From 13acf18d74560f4c30b3d0396767774c0e0328fe Mon Sep 17 00:00:00 2001 From: Alex <93446519+AlexOn1ine@users.noreply.github.com> Date: Tue, 25 Feb 2025 22:28:10 +0100 Subject: [PATCH 63/73] Fixes effect paralyze not being absorbed by absorbing abilities (#6338) --- data/battle_scripts_1.s | 1 - src/battle_script_commands.c | 3 +++ test/battle/ability/motor_drive.c | 14 ++++++++++++++ 3 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 test/battle/ability/motor_drive.c diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 758c6e8bbf..66159bc7fb 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -3651,7 +3651,6 @@ BattleScript_EffectParalyze:: typecalc jumpifmovehadnoeffect BattleScript_ButItFailed jumpifstatus BS_TARGET, STATUS1_PARALYSIS, BattleScript_AlreadyParalyzed - jumpifelectricabilityaffected BS_TARGET, ABILITY_VOLT_ABSORB, BattleScript_VoltAbsorbHeal tryparalyzetype BS_ATTACKER, BS_TARGET, BattleScript_NotAffected jumpifstatus BS_TARGET, STATUS1_ANY, BattleScript_ButItFailed jumpifterrainaffected BS_TARGET, STATUS_FIELD_MISTY_TERRAIN, BattleScript_MistyTerrainPrevents diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index a74e0e5bcc..9f900d451b 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -1244,6 +1244,9 @@ static void Cmd_attackcanceler(void) return; if (AbilityBattleEffects(ABILITYEFFECT_MOVES_BLOCK, gBattlerTarget, 0, 0, 0)) return; + if (gMovesInfo[gCurrentMove].effect == EFFECT_PARALYZE && AbilityBattleEffects(ABILITYEFFECT_ABSORBING, gBattlerTarget, 0, 0, gCurrentMove)) + return; + if (!gBattleMons[gBattlerAttacker].pp[gCurrMovePos] && gCurrentMove != MOVE_STRUGGLE && !(gHitMarker & (HITMARKER_ALLOW_NO_PP | HITMARKER_NO_ATTACKSTRING | HITMARKER_NO_PPDEDUCT)) && !(gBattleMons[gBattlerAttacker].status2 & STATUS2_MULTIPLETURNS)) diff --git a/test/battle/ability/motor_drive.c b/test/battle/ability/motor_drive.c new file mode 100644 index 0000000000..83dc2a37e1 --- /dev/null +++ b/test/battle/ability/motor_drive.c @@ -0,0 +1,14 @@ +#include "global.h" +#include "test/battle.h" + +SINGLE_BATTLE_TEST("Motor Drive absorbs status moves") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_EMOLGA) { Ability(ABILITY_MOTOR_DRIVE); } + } WHEN { + TURN { MOVE(player, MOVE_THUNDER_WAVE); } + } SCENE { + ABILITY_POPUP(opponent, ABILITY_MOTOR_DRIVE); + } +} From cf43787d72448063e31c2ab8ad02521120d3f31a Mon Sep 17 00:00:00 2001 From: hedara90 <90hedara@gmail.com> Date: Tue, 25 Feb 2025 22:28:22 +0100 Subject: [PATCH 64/73] Added MOVE_TARGET_OPPONENT and added it to Me First, (#6336) Co-authored-by: Hedara --- include/constants/battle.h | 2 +- src/battle_controller_opponent.c | 4 ++-- src/battle_controller_player.c | 21 +++++++-------------- src/battle_controller_player_partner.c | 2 +- src/battle_gfx_sfx_util.c | 2 +- src/battle_util.c | 4 ++-- src/contest.c | 2 +- src/data/moves_info.h | 2 +- test/test_runner_battle.c | 2 +- 9 files changed, 17 insertions(+), 24 deletions(-) diff --git a/include/constants/battle.h b/include/constants/battle.h index 37cdf440d4..93c61bdd59 100644 --- a/include/constants/battle.h +++ b/include/constants/battle.h @@ -510,7 +510,7 @@ #define MOVE_TARGET_SELECTED 0 #define MOVE_TARGET_DEPENDS (1 << 0) -#define MOVE_TARGET_USER_OR_SELECTED (1 << 1) +#define MOVE_TARGET_OPPONENT (1 << 1) #define MOVE_TARGET_RANDOM (1 << 2) #define MOVE_TARGET_BOTH (1 << 3) #define MOVE_TARGET_USER (1 << 4) diff --git a/src/battle_controller_opponent.c b/src/battle_controller_opponent.c index 2fbf8cf69f..e0507bfaf1 100644 --- a/src/battle_controller_opponent.c +++ b/src/battle_controller_opponent.c @@ -565,7 +565,7 @@ static void OpponentHandleChooseMove(u32 battler) default: { u16 chosenMove = moveInfo->moves[chosenMoveId]; - if (GetBattlerMoveTargetType(battler, chosenMove) & (MOVE_TARGET_USER_OR_SELECTED | MOVE_TARGET_USER)) + if (GetBattlerMoveTargetType(battler, chosenMove) & MOVE_TARGET_USER) gBattlerTarget = battler; if (GetBattlerMoveTargetType(battler, chosenMove) & MOVE_TARGET_BOTH) { @@ -600,7 +600,7 @@ static void OpponentHandleChooseMove(u32 battler) move = moveInfo->moves[chosenMoveId]; } while (move == MOVE_NONE); - if (GetBattlerMoveTargetType(battler, move) & (MOVE_TARGET_USER_OR_SELECTED | MOVE_TARGET_USER)) + if (GetBattlerMoveTargetType(battler, move) & MOVE_TARGET_USER) BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, (chosenMoveId) | (battler << 8)); else if (IsDoubleBattle()) { diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c index 77ce6083f9..4bf2388fc6 100644 --- a/src/battle_controller_player.c +++ b/src/battle_controller_player.c @@ -499,8 +499,6 @@ void HandleInputChooseTarget(u32 battler) case B_POSITION_PLAYER_RIGHT: if (battler != gMultiUsePlayerCursor) i++; - else if (moveTarget & MOVE_TARGET_USER_OR_SELECTED) - i++; break; case B_POSITION_OPPONENT_LEFT: case B_POSITION_OPPONENT_RIGHT: @@ -509,7 +507,8 @@ void HandleInputChooseTarget(u32 battler) } if (gAbsentBattlerFlags & (1u << gMultiUsePlayerCursor) - || !CanTargetBattler(battler, gMultiUsePlayerCursor, move)) + || !CanTargetBattler(battler, gMultiUsePlayerCursor, move) + || (moveTarget & MOVE_TARGET_OPPONENT && GetBattlerSide(gMultiUsePlayerCursor) == B_SIDE_PLAYER)) i = 0; } while (i == 0); } @@ -549,8 +548,6 @@ void HandleInputChooseTarget(u32 battler) case B_POSITION_PLAYER_RIGHT: if (battler != gMultiUsePlayerCursor) i++; - else if (moveTarget & MOVE_TARGET_USER_OR_SELECTED) - i++; break; case B_POSITION_OPPONENT_LEFT: case B_POSITION_OPPONENT_RIGHT: @@ -559,7 +556,8 @@ void HandleInputChooseTarget(u32 battler) } if (gAbsentBattlerFlags & (1u << gMultiUsePlayerCursor) - || !CanTargetBattler(battler, gMultiUsePlayerCursor, move)) + || !CanTargetBattler(battler, gMultiUsePlayerCursor, move) + || (moveTarget & MOVE_TARGET_OPPONENT && GetBattlerSide(gMultiUsePlayerCursor) == B_SIDE_PLAYER)) i = 0; } while (i == 0); } @@ -694,12 +692,7 @@ void HandleInputChooseMove(u32 battler) else gMultiUsePlayerCursor = GetBattlerAtPosition(BATTLE_OPPOSITE(GetBattlerSide(battler))); - if (!gBattleResources->bufferA[battler][1]) // not a double battle - { - if (moveTarget & MOVE_TARGET_USER_OR_SELECTED && !gBattleResources->bufferA[battler][2]) - canSelectTarget = 1; - } - else // double battle + if (gBattleResources->bufferA[battler][1]) // a double battle { if (!(moveTarget & (MOVE_TARGET_RANDOM | MOVE_TARGET_BOTH | MOVE_TARGET_DEPENDS | MOVE_TARGET_FOES_AND_ALLY | MOVE_TARGET_OPPONENTS_FIELD | MOVE_TARGET_USER | MOVE_TARGET_ALLY))) canSelectTarget = 1; // either selected or user @@ -710,7 +703,7 @@ void HandleInputChooseMove(u32 battler) { canSelectTarget = 0; } - else if (!(moveTarget & (MOVE_TARGET_USER | MOVE_TARGET_USER_OR_SELECTED)) && CountAliveMonsInBattle(BATTLE_ALIVE_EXCEPT_BATTLER, battler) <= 1) + else if (!(moveTarget & MOVE_TARGET_USER) && CountAliveMonsInBattle(BATTLE_ALIVE_EXCEPT_BATTLER, battler) <= 1) { gMultiUsePlayerCursor = GetDefaultMoveTarget(battler); canSelectTarget = 0; @@ -753,7 +746,7 @@ void HandleInputChooseMove(u32 battler) case 1: gBattlerControllerFuncs[battler] = HandleInputChooseTarget; - if (moveTarget & (MOVE_TARGET_USER | MOVE_TARGET_USER_OR_SELECTED)) + if (moveTarget & MOVE_TARGET_USER) gMultiUsePlayerCursor = battler; else if (gAbsentBattlerFlags & (1u << GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT))) gMultiUsePlayerCursor = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT); diff --git a/src/battle_controller_player_partner.c b/src/battle_controller_player_partner.c index f987c333ce..8bc27751b4 100644 --- a/src/battle_controller_player_partner.c +++ b/src/battle_controller_player_partner.c @@ -354,7 +354,7 @@ static void PlayerPartnerHandleChooseMove(u32 battler) chosenMoveId = gBattleStruct->aiMoveOrAction[battler]; gBattlerTarget = gBattleStruct->aiChosenTarget[battler]; - if (gMovesInfo[moveInfo->moves[chosenMoveId]].target & (MOVE_TARGET_USER | MOVE_TARGET_USER_OR_SELECTED)) + if (gMovesInfo[moveInfo->moves[chosenMoveId]].target & MOVE_TARGET_USER) gBattlerTarget = battler; else if (gMovesInfo[moveInfo->moves[chosenMoveId]].target & MOVE_TARGET_BOTH) { diff --git a/src/battle_gfx_sfx_util.c b/src/battle_gfx_sfx_util.c index bbe7924c46..262ccecc68 100644 --- a/src/battle_gfx_sfx_util.c +++ b/src/battle_gfx_sfx_util.c @@ -325,7 +325,7 @@ static u8 GetBattlePalaceMoveGroup(u8 battler, u16 move) switch (GetBattlerMoveTargetType(battler, move)) { case MOVE_TARGET_SELECTED: - case MOVE_TARGET_USER_OR_SELECTED: + case MOVE_TARGET_OPPONENT: case MOVE_TARGET_RANDOM: case MOVE_TARGET_BOTH: case MOVE_TARGET_FOES_AND_ALLY: diff --git a/src/battle_util.c b/src/battle_util.c index 28da294042..dd53e73d47 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -8430,6 +8430,7 @@ u32 GetMoveTarget(u16 move, u8 setTarget) switch (moveTarget) { case MOVE_TARGET_SELECTED: + case MOVE_TARGET_OPPONENT: side = BATTLE_OPPOSITE(GetBattlerSide(gBattlerAttacker)); if (IsAffectedByFollowMe(gBattlerAttacker, side, move)) { @@ -8489,7 +8490,6 @@ u32 GetMoveTarget(u16 move, u8 setTarget) else targetBattler = GetBattlerAtPosition(BATTLE_OPPOSITE(GetBattlerSide(gBattlerAttacker))); break; - case MOVE_TARGET_USER_OR_SELECTED: case MOVE_TARGET_USER: default: targetBattler = gBattlerAttacker; @@ -8850,7 +8850,7 @@ u32 GetMoveTargetCount(struct DamageCalculationData *damageCalcData) case MOVE_TARGET_DEPENDS: case MOVE_TARGET_SELECTED: case MOVE_TARGET_RANDOM: - case MOVE_TARGET_USER_OR_SELECTED: + case MOVE_TARGET_OPPONENT: return IsBattlerAlive(battlerDef); case MOVE_TARGET_USER: return IsBattlerAlive(battlerAtk); diff --git a/src/contest.c b/src/contest.c index 71383b6483..8b217356d2 100644 --- a/src/contest.c +++ b/src/contest.c @@ -5487,10 +5487,10 @@ static void SetMoveTargetPosition(u16 move) { switch (GetBattlerMoveTargetType(gBattlerAttacker, move)) { - case MOVE_TARGET_USER_OR_SELECTED: case MOVE_TARGET_USER: gBattlerTarget = B_POSITION_PLAYER_RIGHT; break; + case MOVE_TARGET_OPPONENT: case MOVE_TARGET_SELECTED: case MOVE_TARGET_RANDOM: case MOVE_TARGET_BOTH: diff --git a/src/data/moves_info.h b/src/data/moves_info.h index f826a05fb4..2bf3fd4be2 100644 --- a/src/data/moves_info.h +++ b/src/data/moves_info.h @@ -9600,7 +9600,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .type = TYPE_NORMAL, .accuracy = 0, .pp = 20, - .target = MOVE_TARGET_SELECTED, + .target = MOVE_TARGET_OPPONENT, .priority = 0, .category = DAMAGE_CATEGORY_STATUS, .zMove = { .effect = Z_EFFECT_SPD_UP_2 }, diff --git a/test/test_runner_battle.c b/test/test_runner_battle.c index 5340ddb4c9..d50668ca30 100644 --- a/test/test_runner_battle.c +++ b/test/test_runner_battle.c @@ -2043,7 +2043,7 @@ s32 MoveGetTarget(s32 battlerId, u32 moveId, struct MoveContext *ctx, u32 source { target = BATTLE_OPPOSITE(battlerId); } - else if (move->target == MOVE_TARGET_SELECTED) + else if (move->target == MOVE_TARGET_SELECTED || move->target == MOVE_TARGET_OPPONENT) { // In AI Doubles not specified target allows any target for EXPECT_MOVE. if (GetBattleTest()->type != BATTLE_TEST_AI_DOUBLES) From cf481b134341997dcc4c133d8f3224881a206e06 Mon Sep 17 00:00:00 2001 From: Alex <93446519+AlexOn1ine@users.noreply.github.com> Date: Wed, 26 Feb 2025 10:43:23 +0100 Subject: [PATCH 65/73] Fixes recoil moves causing recoil when absorbed (#6341) --- src/battle_script_commands.c | 1 + test/battle/move_flags/recoil.c | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 9f900d451b..bf7e69d804 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -5821,6 +5821,7 @@ static void Cmd_moveend(void) else if (gMovesInfo[gCurrentMove].recoil > 0 && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) && IsBattlerAlive(gBattlerAttacker) + && TARGET_TURN_DAMAGED && gBattleScripting.savedDmg != 0) // Some checks may be redundant alongside this one { gBattleMoveDamage = max(1, gBattleScripting.savedDmg * max(1, gMovesInfo[gCurrentMove].recoil) / 100); diff --git a/test/battle/move_flags/recoil.c b/test/battle/move_flags/recoil.c index bdada8a114..6740fb2fa8 100644 --- a/test/battle/move_flags/recoil.c +++ b/test/battle/move_flags/recoil.c @@ -83,3 +83,22 @@ SINGLE_BATTLE_TEST("Flare Blitz deals 33% of recoil damage to the user and can b EXPECT_MUL_EQ(directDamage, UQ_4_12(0.33), recoilDamage); } } + +SINGLE_BATTLE_TEST("Flare Blitz is absorbed by Flash Fire and no recoil damage is dealt") +{ + GIVEN { + ASSUME(gMovesInfo[MOVE_FLARE_BLITZ].recoil > 0); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_VULPIX) { Ability(ABILITY_FLASH_FIRE); }; + } WHEN { + TURN { MOVE(opponent, MOVE_TACKLE); MOVE(player, MOVE_FLARE_BLITZ); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + HP_BAR(player); + NONE_OF { + ANIMATION(ANIM_TYPE_MOVE, MOVE_FLARE_BLITZ, player); + HP_BAR(opponent); + HP_BAR(player); + } + } +} From 37abce1992d0d67c7c5bea71adc7a5f57b760a1c Mon Sep 17 00:00:00 2001 From: hedara90 <90hedara@gmail.com> Date: Wed, 26 Feb 2025 14:56:36 +0100 Subject: [PATCH 66/73] Made some move animations fit in VRAM (#6289) Co-authored-by: Hedara --- data/battle_anim_scripts.s | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index 170da041d7..35c43a793a 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -1880,7 +1880,7 @@ gBattleAnimMove_Avalanche:: loadspritegfx ANIM_TAG_ICE_CHUNK monbg ANIM_DEF_PARTNER createsprite gShakeMonOrTerrainSpriteTemplate, ANIM_TARGET, 2, 7, 1, 11, 1 - createsprite gAvalancheSpriteTemplate, ANIM_TARGET, 130, 4, -5, 1, -5, 1 + createsprite gAvalancheSpriteTemplate, ANIM_TARGET, 130, -5, 1, -5, 1 playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET delay 2 createsprite gAvalancheSpriteTemplate, ANIM_TARGET, 130, 5, 0, 6, 1 @@ -5623,7 +5623,6 @@ gBattleAnimMove_Bulldoze:: gBattleAnimMove_FrostBreath:: loadspritegfx ANIM_TAG_ICE_CHUNK loadspritegfx ANIM_TAG_SMALL_EMBER - loadspritegfx ANIM_TAG_FIRE_PLUME fadetobg BG_ICE waitbgfadeout createvisualtask AnimTask_StartSlidingBg, 0x5, 0x300, 0x0, 0x0, 0xffff @@ -5635,6 +5634,8 @@ gBattleAnimMove_FrostBreath:: waitforvisualfinish createsprite gFrostBreathBlueBreathTemplate, ANIM_TARGET, 2, 0x1e, 0xf, 0x0, 0xa, 0xa waitforvisualfinish + unloadspritegfx ANIM_TAG_SMALL_EMBER + loadspritegfx ANIM_TAG_FIRE_PLUME loopsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET, 0xb, 0x3 createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 3, 25, 1 createsprite gFrostBreathBlueRageTemplate, ANIM_TARGET, 66, 0x1, 0x5, 0x0 @@ -7718,7 +7719,6 @@ gBattleAnimMove_ParabolicCharge:: loadspritegfx ANIM_TAG_SPARK loadspritegfx ANIM_TAG_LIGHTNING loadspritegfx ANIM_TAG_ORBS - loadspritegfx ANIM_TAG_BLUE_STAR monbg ANIM_ATTACKER setalpha 12, 8 createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 6, RGB(18, 16, 3) @@ -7741,6 +7741,11 @@ gBattleAnimMove_ParabolicCharge:: createvisualtask AnimTask_BlendBattleAnimPal, 5, 4, 0, 0, 0, RGB_BLACK ParabolicChargeHeal: waitforvisualfinish + unloadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT + unloadspritegfx ANIM_TAG_ELECTRIC_ORBS + unloadspritegfx ANIM_TAG_SPARK + unloadspritegfx ANIM_TAG_LIGHTNING + loadspritegfx ANIM_TAG_BLUE_STAR clearmonbg ANIM_ATTACKER waitforvisualfinish call HealingEffect @@ -12314,14 +12319,13 @@ ZingZapSparks2: return gBattleAnimMove_NaturesMadness:: - loadspritegfx ANIM_TAG_ICE_CRYSTALS @small circles - loadspritegfx ANIM_TAG_THIN_RING @ring - loadspritegfx ANIM_TAG_SPARKLE_2 @stars - loadspritegfx ANIM_TAG_PINK_PETAL @pink - loadspritegfx ANIM_TAG_ICE_CHUNK @blue green + loadspritegfx ANIM_TAG_ICE_CRYSTALS @small circles CrystalsTemplate + loadspritegfx ANIM_TAG_THIN_RING @ring PinkRingTemplate, GrayRingTemplate + loadspritegfx ANIM_TAG_SPARKLE_2 @stars PinkStarsTemplate + loadspritegfx ANIM_TAG_PINK_PETAL @pink PinkRingTemplate, PinkStarsTemplate + loadspritegfx ANIM_TAG_ICE_CHUNK @blue green CrystalsTemplate loadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT @charge loadspritegfx ANIM_TAG_TEAL_ALERT @charge particles - loadspritegfx ANIM_TAG_ECLIPSING_ORB @blue green monbg ANIM_ATTACKER setalpha 14, 8 delay 0x1 @@ -12357,6 +12361,8 @@ gBattleAnimMove_NaturesMadness:: delay 0x1 monbg ANIM_TARGET waitforvisualfinish + unloadspritegfx ANIM_TAG_SPARKLE_2 + loadspritegfx ANIM_TAG_ECLIPSING_ORB @blue green grayRing createsprite gNaturesMadnessGrayRingTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, 0x1, 0x0 playsewithpan SE_M_HEAL_BELL, SOUND_PAN_ATTACKER delay 0xe @@ -13140,7 +13146,6 @@ gBattleAnimMove_StuffCheeks:: loadspritegfx ANIM_TAG_BERRY_NORMAL loadspritegfx ANIM_TAG_SHARP_TEETH loadspritegfx ANIM_TAG_THIN_RING - loadspritegfx ANIM_TAG_SPARKLE_2 playsewithpan SE_M_METRONOME, 0xc0 createsprite gFloatingBerryTemplate, ANIM_ATTACKER, 1, 0x0 delay 0x45 From 56a3819b61387570794589f007cd114918067458 Mon Sep 17 00:00:00 2001 From: hedara90 <90hedara@gmail.com> Date: Wed, 26 Feb 2025 15:07:54 +0100 Subject: [PATCH 67/73] Fixed protect not resetting the counter in earlier gens (#6342) Co-authored-by: Hedara --- src/battle_script_commands.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index bf7e69d804..0e8a7c283a 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -11035,7 +11035,8 @@ static void TryResetProtectUseCounter(u32 battler) u32 lastMove = gLastResultingMoves[battler]; if (lastMove == MOVE_UNAVAILABLE || (!gBattleMoveEffects[gMovesInfo[lastMove].effect].usesProtectCounter - && (B_ALLY_SWITCH_FAIL_CHANCE >= GEN_9 && gMovesInfo[lastMove].effect != EFFECT_ALLY_SWITCH))) + && ((B_ALLY_SWITCH_FAIL_CHANCE >= GEN_9 && gMovesInfo[lastMove].effect != EFFECT_ALLY_SWITCH) + || B_ALLY_SWITCH_FAIL_CHANCE < GEN_9))) gDisableStructs[battler].protectUses = 0; } From b16aa37f67612067bc76d3284cdfbaed39cb0f81 Mon Sep 17 00:00:00 2001 From: PhallenTree <168426989+PhallenTree@users.noreply.github.com> Date: Wed, 26 Feb 2025 14:42:54 +0000 Subject: [PATCH 68/73] Fixes fainted battler being able to select an action (#6339) --- src/battle_main.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/battle_main.c b/src/battle_main.c index d88f322a1a..d7926834d9 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -3875,7 +3875,7 @@ static void TryDoEventsBeforeFirstTurn(void) gBattleStruct->monToSwitchIntoId[i] = PARTY_SIZE; gChosenActionByBattler[i] = B_ACTION_NONE; gChosenMoveByBattler[i] = MOVE_NONE; - gBattleStruct->battlerState[i].absentBattlerFlags = gAbsentBattlerFlags & (1u << i); + gBattleStruct->battlerState[i].absentBattlerFlags = (gAbsentBattlerFlags & (1u << i) ? TRUE : FALSE); } TurnValuesCleanUp(FALSE); SpecialStatusesClear(); @@ -3993,7 +3993,7 @@ void BattleTurnPassed(void) { gChosenActionByBattler[i] = B_ACTION_NONE; gChosenMoveByBattler[i] = MOVE_NONE; - gBattleStruct->battlerState[i].absentBattlerFlags = gAbsentBattlerFlags & (1u << i); + gBattleStruct->battlerState[i].absentBattlerFlags = (gAbsentBattlerFlags & (1u << i) ? TRUE : FALSE); gBattleStruct->monToSwitchIntoId[i] = PARTY_SIZE; gStatuses4[i] &= ~STATUS4_ELECTRIFIED; } From e9347a0c9e2f02620016107dabbe46890842b4e1 Mon Sep 17 00:00:00 2001 From: Hedara Date: Wed, 26 Feb 2025 22:10:23 +0100 Subject: [PATCH 69/73] Forgot to remove commented code --- src/battle_ai_util.c | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/src/battle_ai_util.c b/src/battle_ai_util.c index 69f99c9f99..f7b5ab9c64 100644 --- a/src/battle_ai_util.c +++ b/src/battle_ai_util.c @@ -423,17 +423,6 @@ static inline s32 DmgRoll(s32 dmg) bool32 IsDamageMoveUnusable(u32 battlerAtk, u32 battlerDef, u32 move, u32 moveType) { struct AiLogicData *aiData = AI_DATA; - /* - u32 battlerDefAbility; - - if (DoesBattlerIgnoreAbilityChecks(battlerAtk, aiData->abilities[battlerAtk], move)) - battlerDefAbility = ABILITY_NONE; - else - battlerDefAbility = aiData->abilities[battlerDef]; - - if (battlerDef == BATTLE_PARTNER(battlerAtk)) - battlerDefAbility = aiData->abilities[battlerDef]; - */ if (gBattleStruct->battlerState[battlerDef].commandingDondozo) return TRUE; From dfff36f643c298a6634d95363cee4e36db94af0f Mon Sep 17 00:00:00 2001 From: Hedara Date: Thu, 27 Feb 2025 09:59:22 +0100 Subject: [PATCH 70/73] 1.10.3 Release --- .../ISSUE_TEMPLATE/01_battle_engine_bugs.yaml | 3 +- .../ISSUE_TEMPLATE/02_battle_ai_issues.yaml | 3 +- .github/ISSUE_TEMPLATE/04_other_errors.yaml | 3 +- README.md | 2 +- docs/SUMMARY.md | 1 + docs/changelogs/1.10.x/1.10.3.md | 120 ++++++++++++++++++ include/constants/expansion.h | 4 +- 7 files changed, 130 insertions(+), 6 deletions(-) create mode 100644 docs/changelogs/1.10.x/1.10.3.md diff --git a/.github/ISSUE_TEMPLATE/01_battle_engine_bugs.yaml b/.github/ISSUE_TEMPLATE/01_battle_engine_bugs.yaml index 0e4bcf401e..3190de88d7 100644 --- a/.github/ISSUE_TEMPLATE/01_battle_engine_bugs.yaml +++ b/.github/ISSUE_TEMPLATE/01_battle_engine_bugs.yaml @@ -23,9 +23,10 @@ body: label: Version description: What version of pokeemerald-expansion are you using as a base? options: - - 1.10.2 (Latest release) + - 1.10.3 (Latest release) - master (default, unreleased bugfixes) - upcoming (Edge) + - 1.10.2 - 1.10.1 - 1.10.0 - 1.9.4 diff --git a/.github/ISSUE_TEMPLATE/02_battle_ai_issues.yaml b/.github/ISSUE_TEMPLATE/02_battle_ai_issues.yaml index 49828dc6a4..0d87681cdf 100644 --- a/.github/ISSUE_TEMPLATE/02_battle_ai_issues.yaml +++ b/.github/ISSUE_TEMPLATE/02_battle_ai_issues.yaml @@ -23,9 +23,10 @@ body: label: Version description: What version of pokeemerald-expansion are you using as a base? options: - - 1.10.2 (Latest release) + - 1.10.3 (Latest release) - master (default, unreleased bugfixes) - upcoming (Edge) + - 1.10.2 - 1.10.1 - 1.10.0 - 1.9.4 diff --git a/.github/ISSUE_TEMPLATE/04_other_errors.yaml b/.github/ISSUE_TEMPLATE/04_other_errors.yaml index 2183cf7d89..edf5f827f3 100644 --- a/.github/ISSUE_TEMPLATE/04_other_errors.yaml +++ b/.github/ISSUE_TEMPLATE/04_other_errors.yaml @@ -23,9 +23,10 @@ body: label: Version description: What version of pokeemerald-expansion are you using as a base? options: - - 1.10.2 (Latest release) + - 1.10.3 (Latest release) - master (default, unreleased bugfixes) - upcoming (Edge) + - 1.10.2 - 1.10.1 - 1.10.0 - 1.9.4 diff --git a/README.md b/README.md index 5b1defe62b..db2d05977d 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ The main advantage of using vanilla pokeemerald as a base is being able to link If you use pokeemerald-expansion in your hack, please add RHH (Rom Hacking Hideout) to your credits list. Optionally, you can list the version used, so it can help players know what features to expect. You can phrase it as the following: ``` -Based off RHH's pokeemerald-expansion 1.10.2 https://github.com/rh-hideout/pokeemerald-expansion/ +Based off RHH's pokeemerald-expansion 1.10.3 https://github.com/rh-hideout/pokeemerald-expansion/ ``` #### Important: DO NOT use GitHub's "Download Zip" option. Using this option will not download the commit history required to update your expansion version or merge other feature branches. Instead, please read [this guide](https://github.com/Pawkkie/Team-Aquas-Asset-Repo/wiki/The-Basics-of-GitHub) to learn how to fork the repository and clone locally from there. diff --git a/docs/SUMMARY.md b/docs/SUMMARY.md index b0faec0560..38c40252b4 100644 --- a/docs/SUMMARY.md +++ b/docs/SUMMARY.md @@ -20,6 +20,7 @@ - [How to use the Testing System](tutorials/how_to_testing_system.md) - [Changelog](./CHANGELOG.md) - [1.10.x]() + - [Version 1.10.3](changelogs/1.10.x/1.10.3.md) - [Version 1.10.2](changelogs/1.10.x/1.10.2.md) - [Version 1.10.1](changelogs/1.10.x/1.10.1.md) - [Version 1.10.0](changelogs/1.10.x/1.10.0.md) diff --git a/docs/changelogs/1.10.x/1.10.3.md b/docs/changelogs/1.10.x/1.10.3.md new file mode 100644 index 0000000000..a21c40d3fe --- /dev/null +++ b/docs/changelogs/1.10.x/1.10.3.md @@ -0,0 +1,120 @@ +```md +## How to update +- If you haven't set up a remote, run the command `git remote add RHH https://github.com/rh-hideout/pokeemerald-expansion`. +- Once you have your remote set up, run the command `git pull RHH test +`. +``` + + +## 🧬 General 🧬 +### Fixed +* Fix Using a Safari Ball crashes the game #6206 by @ExMingYan in [#6220](https://github.com/rh-hideout/pokeemerald-expansion/pull/6220) +* Try a new solution to Fix Safari #6206 by @ExMingYan in [#6228](https://github.com/rh-hideout/pokeemerald-expansion/pull/6228) +* Remove obsolete check for steven when retrieving partner name by @u8-Salem and @hedara90 in [#6283](https://github.com/rh-hideout/pokeemerald-expansion/pull/6283) +* Fix spit up getting skipped by @cawtds in [#6295](https://github.com/rh-hideout/pokeemerald-expansion/pull/6295) + +## 🗺️ Overworld 🗺️ +### Changed +* Merrp merge (12th of February) by @hedara90 in [#6244](https://github.com/rh-hideout/pokeemerald-expansion/pull/6244) + +### Fixed +* Follower Object Event refactor by @hedara90 and @AsparagusEduardo in [#6129](https://github.com/rh-hideout/pokeemerald-expansion/pull/6129) + - Adds `OBJ_EVENT_GFX_SPECIES_FEMALE` and `OBJ_EVENT_GFX_SPECIES_SHINY_FEMALE` +* Fixed Kecleon Shiny palette by @hedara90 in [#6298](https://github.com/rh-hideout/pokeemerald-expansion/pull/6298) +* Shifted the follower graphicsIds by @hedara90 in [#6329](https://github.com/rh-hideout/pokeemerald-expansion/pull/6329) + +## 🐉 Pokémon 🐉 +### Changed +* Add Poltchageist family form data by @Bassoonian and @wiz1989 in [#6163](https://github.com/rh-hideout/pokeemerald-expansion/pull/6163) + +### Fixed +* Fixed non-regional forms breeding incorrectly by @AsparagusEduardo and @cawtds in [#4985](https://github.com/rh-hideout/pokeemerald-expansion/pull/4985) +* Fixed compilation error when turning P_GENDER_DIFFERENCES off by @AsparagusEduardo in [#6223](https://github.com/rh-hideout/pokeemerald-expansion/pull/6223) + +## ⚔️ Battle General ⚔️ +### Fixed +* Fixes battler mutation during the intim script by @AlexOn1ine in [#6151](https://github.com/rh-hideout/pokeemerald-expansion/pull/6151) +* Fixes Dynamic Moves types in SumScreen while in Battle by @AlexOn1ine in [#6145](https://github.com/rh-hideout/pokeemerald-expansion/pull/6145) +* Fixes Dragon Tail missing timing against Rocky Helmet / Iron Barbs by @AlexOn1ine in [#6154](https://github.com/rh-hideout/pokeemerald-expansion/pull/6154) +* Prevent sameMoveTurns from incrementing when unable to use move by @moostoet in [#6167](https://github.com/rh-hideout/pokeemerald-expansion/pull/6167) +* Fixes Suction Cups ability popup and Red Card + Guard Dog interaction by @PhallenTree in [#6171](https://github.com/rh-hideout/pokeemerald-expansion/pull/6171) +* Fixed Unnerve message and wrote tests by @hedara90 in [#6192](https://github.com/rh-hideout/pokeemerald-expansion/pull/6192) +* Fixes Spectral Thief stealing boost at the wrong time by @AlexOn1ine in [#6197](https://github.com/rh-hideout/pokeemerald-expansion/pull/6197) +* Fixes BATTLER_TURN_DAMAGED battler id by @AlexOn1ine in [#6236](https://github.com/rh-hideout/pokeemerald-expansion/pull/6236) +* Fixed multi battle forced switches by @hedara90 in [#6243](https://github.com/rh-hideout/pokeemerald-expansion/pull/6243) +* Fixes ability Embody Aspect triggering multiple times by @AlexOn1ine in [#6259](https://github.com/rh-hideout/pokeemerald-expansion/pull/6259) +* Fixes Called moves ignoring redirection by @PhallenTree in [#6267](https://github.com/rh-hideout/pokeemerald-expansion/pull/6267) +* Fixes Protean not restoring types after ai damage calcs by @AlexOn1ine in [#6280](https://github.com/rh-hideout/pokeemerald-expansion/pull/6280) +* Restoretarget in Rototiller script + Tests by @AlexOn1ine in [#6296](https://github.com/rh-hideout/pokeemerald-expansion/pull/6296) +* Fixes Brick Break/Psychic Fangs/Raging Bull breaking screens if target is immune by @PhallenTree in [#6308](https://github.com/rh-hideout/pokeemerald-expansion/pull/6308) +* Fixes intimidate missing timing during a mega evo / switch by @AlexOn1ine in [#6322](https://github.com/rh-hideout/pokeemerald-expansion/pull/6322) +* Fixes Coaching on semi-invulnerable ally, Air Balloon being stolen, Immunity abilities being ignored by Mold Breaker by @PhallenTree in [#6327](https://github.com/rh-hideout/pokeemerald-expansion/pull/6327) +* Fixes effect paralyze not being absorbed by absorbing abilities by @AlexOn1ine in [#6338](https://github.com/rh-hideout/pokeemerald-expansion/pull/6338) +* Added MOVE_TARGET_OPPONENT and added it to Me First, by @hedara90 in [#6336](https://github.com/rh-hideout/pokeemerald-expansion/pull/6336) +* Fixes recoil moves causing recoil when absorbed by @AlexOn1ine in [#6341](https://github.com/rh-hideout/pokeemerald-expansion/pull/6341) +* Fixed protect not resetting the counter in earlier gens by @hedara90 in [#6342](https://github.com/rh-hideout/pokeemerald-expansion/pull/6342) + +## 🤹 Moves 🤹 +### Added +* Added missing in-battle "Move Info" button prompt by @AsparagusEduardo and @TeamAquasHideout from who I got the source from and @BelialClover from who Archie got the source from. in [#6155](https://github.com/rh-hideout/pokeemerald-expansion/pull/6155) + +### Changed +* Fixes non-Ghost type Curse animation by @PhallenTree in [#6299](https://github.com/rh-hideout/pokeemerald-expansion/pull/6299) + +### Fixed +* Fixed Future Sight not being affected by Electrify by @AsparagusEduardo in [#6213](https://github.com/rh-hideout/pokeemerald-expansion/pull/6213) +* Fixes Expanding Force and Spectral Thief move animations by @PhallenTree in [#6185](https://github.com/rh-hideout/pokeemerald-expansion/pull/6185) + +## 🧶 Items 🧶 +### Fixed +* Fixed curing status2 with items in double battles by @hedara90 and @wiz1989 in [#6335](https://github.com/rh-hideout/pokeemerald-expansion/pull/6335) + +## 🤖 Battle AI 🤖 +### Fixed +* Fix AI wrongly thinking it strikes first with priority even if player is using priority themselves by @moostoet in [#6274](https://github.com/rh-hideout/pokeemerald-expansion/pull/6274) +* Big Root AI Fix by @Pawkkie in [#6309](https://github.com/rh-hideout/pokeemerald-expansion/pull/6309) +* Fix AI hold effect considerations by @Pawkkie in [#6310](https://github.com/rh-hideout/pokeemerald-expansion/pull/6310) +* fix for multi 2vs1 opponent sends out too many mons bug by @Bivurnum in [#6324](https://github.com/rh-hideout/pokeemerald-expansion/pull/6324) + +## 🧹 Other Cleanup 🧹 +* Cleanup some global battler ID usage by @ghoulslash in [#6181](https://github.com/rh-hideout/pokeemerald-expansion/pull/6181) +* Fix typo in Nuzzle's description by @Bassoonian in [#6209](https://github.com/rh-hideout/pokeemerald-expansion/pull/6209) +* Remove whitespace from trainers data file by @AsparagusEduardo in [#6234](https://github.com/rh-hideout/pokeemerald-expansion/pull/6234) +* Changed bit order for follower graphicsId creation by @hedara90 in [#6249](https://github.com/rh-hideout/pokeemerald-expansion/pull/6249) +* Use more accurate count in MovesInfo by @AlexOn1ine in [#6260](https://github.com/rh-hideout/pokeemerald-expansion/pull/6260) +* Fix Extra `task->tState++` and `break` in `Task_DrawFieldMessageBox` by @Deokishisu in [#6261](https://github.com/rh-hideout/pokeemerald-expansion/pull/6261) +* Resized gimmick indicators to reduce VRAM usage by @hedara90 in [#6319](https://github.com/rh-hideout/pokeemerald-expansion/pull/6319) + +## 🧪 Test Runner 🧪 +### Changed +* Tests for Big Pecks by @hedara90 in [#6158](https://github.com/rh-hideout/pokeemerald-expansion/pull/6158) +* Water Compaction tests by @hedara90 in [#6159](https://github.com/rh-hideout/pokeemerald-expansion/pull/6159) +* Wrote tests for Electrify by @hedara90 in [#6179](https://github.com/rh-hideout/pokeemerald-expansion/pull/6179) +* Sheer Force Test Fixes by @ghoulslash in [#6198](https://github.com/rh-hideout/pokeemerald-expansion/pull/6198) +* Minor Terrain Seed Test Improvement by @ghoulslash in [#6207](https://github.com/rh-hideout/pokeemerald-expansion/pull/6207) +* Added test support for 5 battle configs by @AsparagusEduardo in [#5914](https://github.com/rh-hideout/pokeemerald-expansion/pull/5914) +* Added missing Dream Eater and Reflect Type tests by @AsparagusEduardo in [#6245](https://github.com/rh-hideout/pokeemerald-expansion/pull/6245) + +### Fixed +* Fixes Brick Break/Psychic Fangs/Raging Bull breaking screens if target is immune by @PhallenTree in [#6308](https://github.com/rh-hideout/pokeemerald-expansion/pull/6308) + +## 📚 Documentation 📚 +* Update how_to_testing_system.md by @hedara90 in [#6281](https://github.com/rh-hideout/pokeemerald-expansion/pull/6281) +* Update SCOPE.md with Intergenerational Feature Compatibility by @Pawkkie in [#6325](https://github.com/rh-hideout/pokeemerald-expansion/pull/6325) + +## 📦 Branch Synchronisation 📦 +### pret +* 11th of February in [#6231](https://github.com/rh-hideout/pokeemerald-expansion/pull/6231) + * Replace easy_chat alphabetialOrder magic numbers with EC_INDEX values by @rayrobdod in [pret#2096](https://github.com/pret/pokeemerald/pull/2096) + * Fixed switchout bug in multibattle where order of mons gets messed up by @shachar700 in [pret#2099](https://github.com/pret/pokeemerald/pull/2099) + +## New Contributors +* @ExMingYan made their first contribution in [#6220](https://github.com/rh-hideout/pokeemerald-expansion/pull/6220) +* @Deokishisu made their first contribution in [#6261](https://github.com/rh-hideout/pokeemerald-expansion/pull/6261) +* @Bivurnum made their first contribution in [#6324](https://github.com/rh-hideout/pokeemerald-expansion/pull/6324) + +**Full Changelog**: https://github.com/rh-hideout/pokeemerald-expansion/compare/expansion/1.10.2...test + + + + diff --git a/include/constants/expansion.h b/include/constants/expansion.h index a164187ab9..482321502e 100644 --- a/include/constants/expansion.h +++ b/include/constants/expansion.h @@ -1,13 +1,13 @@ #ifndef GUARD_CONSTANTS_EXPANSION_H #define GUARD_CONSTANTS_EXPANSION_H -// Last version: 1.10.2 +// Last version: 1.10.3 #define EXPANSION_VERSION_MAJOR 1 #define EXPANSION_VERSION_MINOR 10 #define EXPANSION_VERSION_PATCH 3 // FALSE if this this version of Expansion is not a tagged commit, i.e. // it contains unreleased changes. -#define EXPANSION_TAGGED_RELEASE FALSE +#define EXPANSION_TAGGED_RELEASE TRUE #endif From 4f6733f45d55d8e0ef477d31bef9093e0f0f7a7b Mon Sep 17 00:00:00 2001 From: Hedara Date: Thu, 27 Feb 2025 10:07:50 +0100 Subject: [PATCH 71/73] 1.11.0 Release --- .../ISSUE_TEMPLATE/01_battle_engine_bugs.yaml | 11 +- .../ISSUE_TEMPLATE/02_battle_ai_issues.yaml | 11 +- .github/ISSUE_TEMPLATE/04_other_errors.yaml | 11 +- README.md | 2 +- docs/SUMMARY.md | 3 + docs/changelogs/1.10.x/1.10.3.md | 120 ++++++ docs/changelogs/1.11.x/1.11.0.md | 385 ++++++++++++++++++ include/constants/expansion.h | 4 +- 8 files changed, 523 insertions(+), 24 deletions(-) create mode 100644 docs/changelogs/1.10.x/1.10.3.md create mode 100644 docs/changelogs/1.11.x/1.11.0.md diff --git a/.github/ISSUE_TEMPLATE/01_battle_engine_bugs.yaml b/.github/ISSUE_TEMPLATE/01_battle_engine_bugs.yaml index 0e4bcf401e..a294b007b7 100644 --- a/.github/ISSUE_TEMPLATE/01_battle_engine_bugs.yaml +++ b/.github/ISSUE_TEMPLATE/01_battle_engine_bugs.yaml @@ -23,17 +23,14 @@ body: label: Version description: What version of pokeemerald-expansion are you using as a base? options: - - 1.10.2 (Latest release) + - 1.11.0 (Latest release) - master (default, unreleased bugfixes) - upcoming (Edge) + - 1.10.3 + - 1.10.2 - 1.10.1 - 1.10.0 - - 1.9.4 - - 1.9.3 - - 1.9.2 - - 1.9.1 - - 1.9.0 - - pre-1.9.0 + - pre-1.10.0 validations: required: true - type: input diff --git a/.github/ISSUE_TEMPLATE/02_battle_ai_issues.yaml b/.github/ISSUE_TEMPLATE/02_battle_ai_issues.yaml index 49828dc6a4..59d0fb53f1 100644 --- a/.github/ISSUE_TEMPLATE/02_battle_ai_issues.yaml +++ b/.github/ISSUE_TEMPLATE/02_battle_ai_issues.yaml @@ -23,17 +23,14 @@ body: label: Version description: What version of pokeemerald-expansion are you using as a base? options: - - 1.10.2 (Latest release) + - 1.11.0 (Latest release) - master (default, unreleased bugfixes) - upcoming (Edge) + - 1.10.3 + - 1.10.2 - 1.10.1 - 1.10.0 - - 1.9.4 - - 1.9.3 - - 1.9.2 - - 1.9.1 - - 1.9.0 - - pre-1.9.0 + - pre-1.10.0 validations: required: true - type: input diff --git a/.github/ISSUE_TEMPLATE/04_other_errors.yaml b/.github/ISSUE_TEMPLATE/04_other_errors.yaml index 2183cf7d89..0ceab0ec95 100644 --- a/.github/ISSUE_TEMPLATE/04_other_errors.yaml +++ b/.github/ISSUE_TEMPLATE/04_other_errors.yaml @@ -23,17 +23,14 @@ body: label: Version description: What version of pokeemerald-expansion are you using as a base? options: - - 1.10.2 (Latest release) + - 1.11.0 (Latest release) - master (default, unreleased bugfixes) - upcoming (Edge) + - 1.10.3 + - 1.10.2 - 1.10.1 - 1.10.0 - - 1.9.4 - - 1.9.3 - - 1.9.2 - - 1.9.1 - - 1.9.0 - - pre-1.9.0 + - pre-1.10.0 validations: required: true - type: input diff --git a/README.md b/README.md index 5b1defe62b..5e83f9793b 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ The main advantage of using vanilla pokeemerald as a base is being able to link If you use pokeemerald-expansion in your hack, please add RHH (Rom Hacking Hideout) to your credits list. Optionally, you can list the version used, so it can help players know what features to expect. You can phrase it as the following: ``` -Based off RHH's pokeemerald-expansion 1.10.2 https://github.com/rh-hideout/pokeemerald-expansion/ +Based off RHH's pokeemerald-expansion 1.11.0 https://github.com/rh-hideout/pokeemerald-expansion/ ``` #### Important: DO NOT use GitHub's "Download Zip" option. Using this option will not download the commit history required to update your expansion version or merge other feature branches. Instead, please read [this guide](https://github.com/Pawkkie/Team-Aquas-Asset-Repo/wiki/The-Basics-of-GitHub) to learn how to fork the repository and clone locally from there. diff --git a/docs/SUMMARY.md b/docs/SUMMARY.md index 5d8b610290..193d2808a2 100644 --- a/docs/SUMMARY.md +++ b/docs/SUMMARY.md @@ -20,7 +20,10 @@ - [How to use the Testing System](tutorials/how_to_testing_system.md) - [How to add new Trainer Slides](tutorials/how_to_new_trainer_slide.md) - [Changelog](./CHANGELOG.md) + - [1.11.x]() + - [Version 1.11.0](changelogs/1.11.x/1.11.0.md) - [1.10.x]() + - [Version 1.10.3](changelogs/1.10.x/1.10.3.md) - [Version 1.10.2](changelogs/1.10.x/1.10.2.md) - [Version 1.10.1](changelogs/1.10.x/1.10.1.md) - [Version 1.10.0](changelogs/1.10.x/1.10.0.md) diff --git a/docs/changelogs/1.10.x/1.10.3.md b/docs/changelogs/1.10.x/1.10.3.md new file mode 100644 index 0000000000..a21c40d3fe --- /dev/null +++ b/docs/changelogs/1.10.x/1.10.3.md @@ -0,0 +1,120 @@ +```md +## How to update +- If you haven't set up a remote, run the command `git remote add RHH https://github.com/rh-hideout/pokeemerald-expansion`. +- Once you have your remote set up, run the command `git pull RHH test +`. +``` + + +## 🧬 General 🧬 +### Fixed +* Fix Using a Safari Ball crashes the game #6206 by @ExMingYan in [#6220](https://github.com/rh-hideout/pokeemerald-expansion/pull/6220) +* Try a new solution to Fix Safari #6206 by @ExMingYan in [#6228](https://github.com/rh-hideout/pokeemerald-expansion/pull/6228) +* Remove obsolete check for steven when retrieving partner name by @u8-Salem and @hedara90 in [#6283](https://github.com/rh-hideout/pokeemerald-expansion/pull/6283) +* Fix spit up getting skipped by @cawtds in [#6295](https://github.com/rh-hideout/pokeemerald-expansion/pull/6295) + +## 🗺️ Overworld 🗺️ +### Changed +* Merrp merge (12th of February) by @hedara90 in [#6244](https://github.com/rh-hideout/pokeemerald-expansion/pull/6244) + +### Fixed +* Follower Object Event refactor by @hedara90 and @AsparagusEduardo in [#6129](https://github.com/rh-hideout/pokeemerald-expansion/pull/6129) + - Adds `OBJ_EVENT_GFX_SPECIES_FEMALE` and `OBJ_EVENT_GFX_SPECIES_SHINY_FEMALE` +* Fixed Kecleon Shiny palette by @hedara90 in [#6298](https://github.com/rh-hideout/pokeemerald-expansion/pull/6298) +* Shifted the follower graphicsIds by @hedara90 in [#6329](https://github.com/rh-hideout/pokeemerald-expansion/pull/6329) + +## 🐉 Pokémon 🐉 +### Changed +* Add Poltchageist family form data by @Bassoonian and @wiz1989 in [#6163](https://github.com/rh-hideout/pokeemerald-expansion/pull/6163) + +### Fixed +* Fixed non-regional forms breeding incorrectly by @AsparagusEduardo and @cawtds in [#4985](https://github.com/rh-hideout/pokeemerald-expansion/pull/4985) +* Fixed compilation error when turning P_GENDER_DIFFERENCES off by @AsparagusEduardo in [#6223](https://github.com/rh-hideout/pokeemerald-expansion/pull/6223) + +## ⚔️ Battle General ⚔️ +### Fixed +* Fixes battler mutation during the intim script by @AlexOn1ine in [#6151](https://github.com/rh-hideout/pokeemerald-expansion/pull/6151) +* Fixes Dynamic Moves types in SumScreen while in Battle by @AlexOn1ine in [#6145](https://github.com/rh-hideout/pokeemerald-expansion/pull/6145) +* Fixes Dragon Tail missing timing against Rocky Helmet / Iron Barbs by @AlexOn1ine in [#6154](https://github.com/rh-hideout/pokeemerald-expansion/pull/6154) +* Prevent sameMoveTurns from incrementing when unable to use move by @moostoet in [#6167](https://github.com/rh-hideout/pokeemerald-expansion/pull/6167) +* Fixes Suction Cups ability popup and Red Card + Guard Dog interaction by @PhallenTree in [#6171](https://github.com/rh-hideout/pokeemerald-expansion/pull/6171) +* Fixed Unnerve message and wrote tests by @hedara90 in [#6192](https://github.com/rh-hideout/pokeemerald-expansion/pull/6192) +* Fixes Spectral Thief stealing boost at the wrong time by @AlexOn1ine in [#6197](https://github.com/rh-hideout/pokeemerald-expansion/pull/6197) +* Fixes BATTLER_TURN_DAMAGED battler id by @AlexOn1ine in [#6236](https://github.com/rh-hideout/pokeemerald-expansion/pull/6236) +* Fixed multi battle forced switches by @hedara90 in [#6243](https://github.com/rh-hideout/pokeemerald-expansion/pull/6243) +* Fixes ability Embody Aspect triggering multiple times by @AlexOn1ine in [#6259](https://github.com/rh-hideout/pokeemerald-expansion/pull/6259) +* Fixes Called moves ignoring redirection by @PhallenTree in [#6267](https://github.com/rh-hideout/pokeemerald-expansion/pull/6267) +* Fixes Protean not restoring types after ai damage calcs by @AlexOn1ine in [#6280](https://github.com/rh-hideout/pokeemerald-expansion/pull/6280) +* Restoretarget in Rototiller script + Tests by @AlexOn1ine in [#6296](https://github.com/rh-hideout/pokeemerald-expansion/pull/6296) +* Fixes Brick Break/Psychic Fangs/Raging Bull breaking screens if target is immune by @PhallenTree in [#6308](https://github.com/rh-hideout/pokeemerald-expansion/pull/6308) +* Fixes intimidate missing timing during a mega evo / switch by @AlexOn1ine in [#6322](https://github.com/rh-hideout/pokeemerald-expansion/pull/6322) +* Fixes Coaching on semi-invulnerable ally, Air Balloon being stolen, Immunity abilities being ignored by Mold Breaker by @PhallenTree in [#6327](https://github.com/rh-hideout/pokeemerald-expansion/pull/6327) +* Fixes effect paralyze not being absorbed by absorbing abilities by @AlexOn1ine in [#6338](https://github.com/rh-hideout/pokeemerald-expansion/pull/6338) +* Added MOVE_TARGET_OPPONENT and added it to Me First, by @hedara90 in [#6336](https://github.com/rh-hideout/pokeemerald-expansion/pull/6336) +* Fixes recoil moves causing recoil when absorbed by @AlexOn1ine in [#6341](https://github.com/rh-hideout/pokeemerald-expansion/pull/6341) +* Fixed protect not resetting the counter in earlier gens by @hedara90 in [#6342](https://github.com/rh-hideout/pokeemerald-expansion/pull/6342) + +## 🤹 Moves 🤹 +### Added +* Added missing in-battle "Move Info" button prompt by @AsparagusEduardo and @TeamAquasHideout from who I got the source from and @BelialClover from who Archie got the source from. in [#6155](https://github.com/rh-hideout/pokeemerald-expansion/pull/6155) + +### Changed +* Fixes non-Ghost type Curse animation by @PhallenTree in [#6299](https://github.com/rh-hideout/pokeemerald-expansion/pull/6299) + +### Fixed +* Fixed Future Sight not being affected by Electrify by @AsparagusEduardo in [#6213](https://github.com/rh-hideout/pokeemerald-expansion/pull/6213) +* Fixes Expanding Force and Spectral Thief move animations by @PhallenTree in [#6185](https://github.com/rh-hideout/pokeemerald-expansion/pull/6185) + +## 🧶 Items 🧶 +### Fixed +* Fixed curing status2 with items in double battles by @hedara90 and @wiz1989 in [#6335](https://github.com/rh-hideout/pokeemerald-expansion/pull/6335) + +## 🤖 Battle AI 🤖 +### Fixed +* Fix AI wrongly thinking it strikes first with priority even if player is using priority themselves by @moostoet in [#6274](https://github.com/rh-hideout/pokeemerald-expansion/pull/6274) +* Big Root AI Fix by @Pawkkie in [#6309](https://github.com/rh-hideout/pokeemerald-expansion/pull/6309) +* Fix AI hold effect considerations by @Pawkkie in [#6310](https://github.com/rh-hideout/pokeemerald-expansion/pull/6310) +* fix for multi 2vs1 opponent sends out too many mons bug by @Bivurnum in [#6324](https://github.com/rh-hideout/pokeemerald-expansion/pull/6324) + +## 🧹 Other Cleanup 🧹 +* Cleanup some global battler ID usage by @ghoulslash in [#6181](https://github.com/rh-hideout/pokeemerald-expansion/pull/6181) +* Fix typo in Nuzzle's description by @Bassoonian in [#6209](https://github.com/rh-hideout/pokeemerald-expansion/pull/6209) +* Remove whitespace from trainers data file by @AsparagusEduardo in [#6234](https://github.com/rh-hideout/pokeemerald-expansion/pull/6234) +* Changed bit order for follower graphicsId creation by @hedara90 in [#6249](https://github.com/rh-hideout/pokeemerald-expansion/pull/6249) +* Use more accurate count in MovesInfo by @AlexOn1ine in [#6260](https://github.com/rh-hideout/pokeemerald-expansion/pull/6260) +* Fix Extra `task->tState++` and `break` in `Task_DrawFieldMessageBox` by @Deokishisu in [#6261](https://github.com/rh-hideout/pokeemerald-expansion/pull/6261) +* Resized gimmick indicators to reduce VRAM usage by @hedara90 in [#6319](https://github.com/rh-hideout/pokeemerald-expansion/pull/6319) + +## 🧪 Test Runner 🧪 +### Changed +* Tests for Big Pecks by @hedara90 in [#6158](https://github.com/rh-hideout/pokeemerald-expansion/pull/6158) +* Water Compaction tests by @hedara90 in [#6159](https://github.com/rh-hideout/pokeemerald-expansion/pull/6159) +* Wrote tests for Electrify by @hedara90 in [#6179](https://github.com/rh-hideout/pokeemerald-expansion/pull/6179) +* Sheer Force Test Fixes by @ghoulslash in [#6198](https://github.com/rh-hideout/pokeemerald-expansion/pull/6198) +* Minor Terrain Seed Test Improvement by @ghoulslash in [#6207](https://github.com/rh-hideout/pokeemerald-expansion/pull/6207) +* Added test support for 5 battle configs by @AsparagusEduardo in [#5914](https://github.com/rh-hideout/pokeemerald-expansion/pull/5914) +* Added missing Dream Eater and Reflect Type tests by @AsparagusEduardo in [#6245](https://github.com/rh-hideout/pokeemerald-expansion/pull/6245) + +### Fixed +* Fixes Brick Break/Psychic Fangs/Raging Bull breaking screens if target is immune by @PhallenTree in [#6308](https://github.com/rh-hideout/pokeemerald-expansion/pull/6308) + +## 📚 Documentation 📚 +* Update how_to_testing_system.md by @hedara90 in [#6281](https://github.com/rh-hideout/pokeemerald-expansion/pull/6281) +* Update SCOPE.md with Intergenerational Feature Compatibility by @Pawkkie in [#6325](https://github.com/rh-hideout/pokeemerald-expansion/pull/6325) + +## 📦 Branch Synchronisation 📦 +### pret +* 11th of February in [#6231](https://github.com/rh-hideout/pokeemerald-expansion/pull/6231) + * Replace easy_chat alphabetialOrder magic numbers with EC_INDEX values by @rayrobdod in [pret#2096](https://github.com/pret/pokeemerald/pull/2096) + * Fixed switchout bug in multibattle where order of mons gets messed up by @shachar700 in [pret#2099](https://github.com/pret/pokeemerald/pull/2099) + +## New Contributors +* @ExMingYan made their first contribution in [#6220](https://github.com/rh-hideout/pokeemerald-expansion/pull/6220) +* @Deokishisu made their first contribution in [#6261](https://github.com/rh-hideout/pokeemerald-expansion/pull/6261) +* @Bivurnum made their first contribution in [#6324](https://github.com/rh-hideout/pokeemerald-expansion/pull/6324) + +**Full Changelog**: https://github.com/rh-hideout/pokeemerald-expansion/compare/expansion/1.10.2...test + + + + diff --git a/docs/changelogs/1.11.x/1.11.0.md b/docs/changelogs/1.11.x/1.11.0.md new file mode 100644 index 0000000000..3379f6cc26 --- /dev/null +++ b/docs/changelogs/1.11.x/1.11.0.md @@ -0,0 +1,385 @@ +```md +## How to update +- If you haven't set up a remote, run the command `git remote add RHH https://github.com/rh-hideout/pokeemerald-expansion`. +- Once you have your remote set up, run the command `git pull RHH test +`. +``` + +## 🌋 *REFACTORS* 🌋 +📜 = Uses a migration script. +* Pursuit refactor by @PhallenTree in [#5707](https://github.com/rh-hideout/pokeemerald-expansion/pull/5707) +* Atk Canceller refactor / reorder / clean up by @AlexOn1ine in [#5885](https://github.com/rh-hideout/pokeemerald-expansion/pull/5885) +* Battle Weather Refactor by @AlexOn1ine in [#5833](https://github.com/rh-hideout/pokeemerald-expansion/pull/5833) +* Replace WEATHER_HAS_EFFECT with HasWeatherEffect by @AlexOn1ine in [#6069](https://github.com/rh-hideout/pokeemerald-expansion/pull/6069) +* Cleaned up Trainer Slides, added automated Trainer Slide tests, add new Enemy Critical Hit Slide by @pkmnsnfrn and @AlexOn1ine, @hedara90, @AsparagusEduardo, @mrgriffin in [#6018](https://github.com/rh-hideout/pokeemerald-expansion/pull/6018) + * If users created new entries in sTrainerSlides, they will need to be ported to the new system. +* Introduces BattleTurnCounter to simplfy timer checks by @AlexOn1ine in [#6080](https://github.com/rh-hideout/pokeemerald-expansion/pull/6080) +* Convert max effects to normal move effects by @AlexOn1ine in [#6143](https://github.com/rh-hideout/pokeemerald-expansion/pull/6143) +* Redefine IsBattlerAlive in battle.h as a static inline by @AlexOn1ine in [#6211](https://github.com/rh-hideout/pokeemerald-expansion/pull/6211) +* Consolidated Frontier teams into battle_frontier_trainers.h by @fdeblasio in [#5892](https://github.com/rh-hideout/pokeemerald-expansion/pull/5892) + +## 🧬 General 🧬 +### Added +* Add Script Cmd for Forcing Save Game by @ghoulslash in [#6090](https://github.com/rh-hideout/pokeemerald-expansion/pull/6090) +* Trainer Party Pools by @hedara90 in [#5731](https://github.com/rh-hideout/pokeemerald-expansion/pull/5731) + - Documentation on how to use this can be found under `docs/tutorials/how_to_trainer_party_pool.md` +* Add Code Entry functionality by @Pawkkie and @PCG06 for the Mystery Gift iteration in [#5951](https://github.com/rh-hideout/pokeemerald-expansion/pull/5951) + +### Changed +* Added "Game Clear" flag toggle to debug menu by @AsparagusEduardo in [#5929](https://github.com/rh-hideout/pokeemerald-expansion/pull/5929) +* Initialize m4a and IRQ handler in a loaded section by @SBird1337 in [#5912](https://github.com/rh-hideout/pokeemerald-expansion/pull/5912) +* Debug menu and `createmon` additions/cleanup by @AsparagusEduardo in [#5994](https://github.com/rh-hideout/pokeemerald-expansion/pull/5994) + - Added Tera Type, Dynamax Level, and Gigantamax Factor to the "Give Pokémon (complex)" debug menu option. + - Added `dmaxLevel` option to `givemon` and `createmon`. + - Added `WEATHER_COUNT`. + - Cleaned up repeated code instances in debug menu. + - Fixed mislabel of `ggMaxFactor` in `givemon` and `createmon`. Now it's `gmaxFactor`. +* Introduces BattlerState struct for the Battle Engine by @AlexOn1ine and @mrgriffin provided the framework for this change in [#5954](https://github.com/rh-hideout/pokeemerald-expansion/pull/5954) +* Reorder Makefile rules so that pokeemerald-test.elf builds in build/test by @mrgriffin in [#6004](https://github.com/rh-hideout/pokeemerald-expansion/pull/6004) +* Use SET8 and SET32 consistently by @AZero13 in [#5544](https://github.com/rh-hideout/pokeemerald-expansion/pull/5544) +* Ewram and unused function cleanup sweep by @hedara90 in [#6019](https://github.com/rh-hideout/pokeemerald-expansion/pull/6019) +* Re-removed trainers.h trailing whitespace by @fdeblasio in [#6048](https://github.com/rh-hideout/pokeemerald-expansion/pull/6048) +* Add Steven Multi to debug menu by @Pawkkie in [#6064](https://github.com/rh-hideout/pokeemerald-expansion/pull/6064) +* Remove gDecompressionBuffer by @DizzyEggg in [#6029](https://github.com/rh-hideout/pokeemerald-expansion/pull/6029) +* Trainer Battle Parameter Consolidation by @u8-Salem in [#5982](https://github.com/rh-hideout/pokeemerald-expansion/pull/5982) + Breaking: raw uses of `trainerbattle` need to be adjusted to provide all possible parameter. Unused parameter musst be 0 or an alias. already parameterized macros like `trainerbattle_single` work out of the box. +* Consolidated contest opponent filters into gContestOpponents by @fdeblasio in [#6119](https://github.com/rh-hideout/pokeemerald-expansion/pull/6119) +* Don't use SeedRng some places where it isn't necessary by @tertu-m in [#6156](https://github.com/rh-hideout/pokeemerald-expansion/pull/6156) +* Removed Trainer Slides footgun by @AsparagusEduardo in [#6205](https://github.com/rh-hideout/pokeemerald-expansion/pull/6205) +* Consolidate duplicate dialogue of nature girl in Battle Frontier by @fdeblasio in [#6195](https://github.com/rh-hideout/pokeemerald-expansion/pull/6195) +* Prevented fanfares from playing in headless mode by @pkmnsnfrn and @hedara90, @AsparagusEduardo in [#6219](https://github.com/rh-hideout/pokeemerald-expansion/pull/6219) + +### Fixed +* Don't write to NULL in TryFindHiddenPokemon by @DizzyEggg in [#5983](https://github.com/rh-hideout/pokeemerald-expansion/pull/5983) +* Allow Party Menu with 0 Pokemon by @DizzyEggg in [#5997](https://github.com/rh-hideout/pokeemerald-expansion/pull/5997) +* Revert map related enum conversion by @hedara90 in [#6078](https://github.com/rh-hideout/pokeemerald-expansion/pull/6078) +* Revert "Revert map related enum conversion" by @hedara90 in [#6079](https://github.com/rh-hideout/pokeemerald-expansion/pull/6079) +* Revert "Converts a bunch of defines to enums" by @Bassoonian in [#6082](https://github.com/rh-hideout/pokeemerald-expansion/pull/6082) +* Fix upcoming not working on no cash by @DizzyEggg in [#6121](https://github.com/rh-hideout/pokeemerald-expansion/pull/6121) +* Add the header required for TPP tags to work by @hedara90 in [#6162](https://github.com/rh-hideout/pokeemerald-expansion/pull/6162) +* Fixed regression from master/upcoming merge by @AsparagusEduardo and @hedara90 , for doing the original merge when I couldn't in [#6199](https://github.com/rh-hideout/pokeemerald-expansion/pull/6199) +* Fix Using a Safari Ball crashes the game #6206 by @ExMingYan in [#6220](https://github.com/rh-hideout/pokeemerald-expansion/pull/6220) +* Fixed typo in requests_effects by @hedara90 and @purrfectdoodle in [#6215](https://github.com/rh-hideout/pokeemerald-expansion/pull/6215) +* Try a new solution to Fix Safari #6206 by @ExMingYan in [#6228](https://github.com/rh-hideout/pokeemerald-expansion/pull/6228) +* Remove obsolete check for steven when retrieving partner name by @u8-Salem and @hedara90 in [#6283](https://github.com/rh-hideout/pokeemerald-expansion/pull/6283) +* Fix spit up getting skipped by @cawtds in [#6295](https://github.com/rh-hideout/pokeemerald-expansion/pull/6295) + +## 🗺️ Overworld 🗺️ +### Added +* Adds Dexnav by @ghoulslash in [#4818](https://github.com/rh-hideout/pokeemerald-expansion/pull/4818) +* Fly from Pokenav by @khbsd in [#5679](https://github.com/rh-hideout/pokeemerald-expansion/pull/5679) +* Expanded Pokémon Follower transformation functionality by @AsparagusEduardo in [#5048](https://github.com/rh-hideout/pokeemerald-expansion/pull/5048) + +### Changed +* Arbitrary trainer scripts + on frame/trigger softlock prevention by @mrgriffin in [#5033](https://github.com/rh-hideout/pokeemerald-expansion/pull/5033) +* Removed OW_AUTO_SIGNPOST by @pkmnsnfrn in [#5974](https://github.com/rh-hideout/pokeemerald-expansion/pull/5974) +* Fix leftover test change from #5033 by @mrgriffin in [#5987](https://github.com/rh-hideout/pokeemerald-expansion/pull/5987) +* Match current gen behavior for battle environment after fishing by @kittenchilly in [#6099](https://github.com/rh-hideout/pokeemerald-expansion/pull/6099) +* Add Mega Evolution, Primal Reversion, and Ultra Necrozma overworld sprites by @khbsd in [#5874](https://github.com/rh-hideout/pokeemerald-expansion/pull/5874) +* Replaced hardcoded numbers in DexNav with variables by @fdeblasio in [#6241](https://github.com/rh-hideout/pokeemerald-expansion/pull/6241) +* Merrp merge (12th of February) by @hedara90 in [#6244](https://github.com/rh-hideout/pokeemerald-expansion/pull/6244) +* Adds a follower flag define to disable followers on the fly by @AlexOn1ine in [#6174](https://github.com/rh-hideout/pokeemerald-expansion/pull/6174) + +### Fixed +* Fix Trainer Hill OOB array access by @SBird1337 in [#5930](https://github.com/rh-hideout/pokeemerald-expansion/pull/5930) +* Revert #5033 change to MapHeaderRunScriptType by @mrgriffin in [#5975](https://github.com/rh-hideout/pokeemerald-expansion/pull/5975) +* Restore lock/lockall/locktrainer/release/releaseall in triggers by @mrgriffin in [#5976](https://github.com/rh-hideout/pokeemerald-expansion/pull/5976) +* Follower Object Event refactor by @hedara90 and @AsparagusEduardo in [#6129](https://github.com/rh-hideout/pokeemerald-expansion/pull/6129) + - Fixes `OBJ_EVENT_GFX_SPECIES_SHINY` + - Adds `OBJ_EVENT_GFX_SPECIES_FEMALE` and `OBJ_EVENT_GFX_SPECIES_SHINY_FEMALE` +* Fixes Static Assert from pr #6174 by @AlexOn1ine in [#6258](https://github.com/rh-hideout/pokeemerald-expansion/pull/6258) +* Fixed Kecleon Shiny palette by @hedara90 in [#6298](https://github.com/rh-hideout/pokeemerald-expansion/pull/6298) + +## 🐉 Pokémon 🐉 +### Added +* IV/EV Info on Summary Screen by @khbsd in [#6027](https://github.com/rh-hideout/pokeemerald-expansion/pull/6027) +* Add caught mon to full party by sending a different mon to the Box by @fakuzatsu in [#6058](https://github.com/rh-hideout/pokeemerald-expansion/pull/6058) + +### Changed +* Remove form change function footguns by @AsparagusEduardo and @AlexOn1ine for letting me know of this potential issue. in [#5995](https://github.com/rh-hideout/pokeemerald-expansion/pull/5995) + - `GetBattleFormChangeTargetSpecies`, `GetFormChangeTargetSpecies` and `GetFormChangeTargetSpeciesBoxMon` now return the current species of the Pokémon instead of `SPECIES_NONE` as a precaution to avoid accidental deletions of Pokémon when using these functions. +* Remove redundant calls to GetMonData in pokemon.c by @AZero13 in [#5545](https://github.com/rh-hideout/pokeemerald-expansion/pull/5545) +* Rename Furfrou Species tags to match Pokemon Showdown exports by @moostoet in [#6041](https://github.com/rh-hideout/pokeemerald-expansion/pull/6041) +* Add Mega Evolution, Primal Reversion, and Ultra Necrozma overworld sprites by @khbsd in [#5874](https://github.com/rh-hideout/pokeemerald-expansion/pull/5874) +* Add Poltchageist family form data by @Bassoonian and @wiz1989 in [#6163](https://github.com/rh-hideout/pokeemerald-expansion/pull/6163) + +### Fixed +* Evolution level 1 learn by @hedara90 in [#5791](https://github.com/rh-hideout/pokeemerald-expansion/pull/5791) +* Fixed non-regional forms breeding incorrectly by @AsparagusEduardo and @cawtds in [#4985](https://github.com/rh-hideout/pokeemerald-expansion/pull/4985) +* Fixed compilation error when turning P_GENDER_DIFFERENCES off by @AsparagusEduardo in [#6223](https://github.com/rh-hideout/pokeemerald-expansion/pull/6223) +* Reverted compound literal OW mon pic tables by @AsparagusEduardo in [#6216](https://github.com/rh-hideout/pokeemerald-expansion/pull/6216) + +## ⚔️ Battle General ⚔️ +### Added +* Add B_FLAG_SLEEP_CLAUSE by @Pawkkie, @Pawkkie and @iriv24 in [#5566](https://github.com/rh-hideout/pokeemerald-expansion/pull/5566) + - Based on Smogon's sleep clause [philosophy](https://www.smogon.com/xy/articles/clauses#:~:text=Sleep%20Clause,t%20be%20put%20to%20sleep.) + - Toggleable per-battle by setting / unsetting the flag assigned to B_FLAG_SLEEP_CLAUSE +* Variadic IS_BATTLER_OF_TYPE and GetBattlerTypes by @mrgriffin in [#5708](https://github.com/rh-hideout/pokeemerald-expansion/pull/5708) +* Simultaneous HP Reduction (CFRU Port) by @AsparagusEduardo and @AlexOn1ine for the port to expansion. @Skeli789 for the CFRU implementation. in [#5770](https://github.com/rh-hideout/pokeemerald-expansion/pull/5770) +* Destiny Bond fails on repeated use in Gen 7+ by @Pawkkie in [#5652](https://github.com/rh-hideout/pokeemerald-expansion/pull/5652) +* Adds Pledge Side Statuses as Starting Statuses by @AlexOn1ine in [#5899](https://github.com/rh-hideout/pokeemerald-expansion/pull/5899) +* Adds B_VAR_DIFFICULTY and related functions READ DESC by @pkmnsnfrn in [#5337](https://github.com/rh-hideout/pokeemerald-expansion/pull/5337) +* Config for move slot rearrangement in battle by @hedara90 and @ghoulslash for pointing out the exact point in the code where move slot rearrangement is handled. in [#6017](https://github.com/rh-hideout/pokeemerald-expansion/pull/6017) + - Move slot rearrangement is disabled by default in battle, set `B_MOVE_REARRANGEMENT_IN_BATTLE` to `GEN_3` to enable rearrangement again. + +### Changed +* Sleep Clause global config by @Pawkkie in [#5762](https://github.com/rh-hideout/pokeemerald-expansion/pull/5762) +* Pursuit refactor by @PhallenTree in [#5707](https://github.com/rh-hideout/pokeemerald-expansion/pull/5707) +* Changes Various defines to an Enum by @AlexOn1ine in [#5839](https://github.com/rh-hideout/pokeemerald-expansion/pull/5839) +* move overwrittenAbilities field to DisableStruct by @ghoulslash in [#5946](https://github.com/rh-hideout/pokeemerald-expansion/pull/5946) +* Battle Weather Refactor by @AlexOn1ine in [#5833](https://github.com/rh-hideout/pokeemerald-expansion/pull/5833) +* Easy customizable Hidden Move types by @AsparagusEduardo in [#5872](https://github.com/rh-hideout/pokeemerald-expansion/pull/5872) + - `gTypesInfo` now has a `isHiddenPowerType` field that inserts them into the Hidden Power type calculation. + - ***Warning:*** Changing this from the vanilla settings will change any existing Hidden Power's type, and external calculators will not work either. +* Introduces BattlerState struct for the Battle Engine by @AlexOn1ine and @mrgriffin provided the framework for this change in [#5954](https://github.com/rh-hideout/pokeemerald-expansion/pull/5954) +* Cleaned up Trainer Slides, added automated Trainer Slide tests, add new Enemy Critical Hit Slide by @pkmnsnfrn and @AlexOn1ine, @hedara90, @AsparagusEduardo, @mrgriffin in [#6018](https://github.com/rh-hideout/pokeemerald-expansion/pull/6018) + * If users created new entries in sTrainerSlides, they will need to be ported to the new system. +* Introduces BattleTurnCounter to simplfy timer checks by @AlexOn1ine in [#6080](https://github.com/rh-hideout/pokeemerald-expansion/pull/6080) +* Replace BattleStruct members quickClawRandom/quickDrawRandom with locals by @AlexOn1ine in [#6136](https://github.com/rh-hideout/pokeemerald-expansion/pull/6136) +* Added Difficulty Fallback for Trainer Slides by @pkmnsnfrn in [#6088](https://github.com/rh-hideout/pokeemerald-expansion/pull/6088) +* CanAbilityX Function Cleanup by @ghoulslash in [#6183](https://github.com/rh-hideout/pokeemerald-expansion/pull/6183) +* Unify setreflect/setlightscreen and MOVE_EFFECT_REFLECT/LIGHT_SCREEN by @ghoulslash in [#6196](https://github.com/rh-hideout/pokeemerald-expansion/pull/6196) + +### Fixed +* Fix Sleep Clause AI handling of partner sleeping moves by @Pawkkie in [#5761](https://github.com/rh-hideout/pokeemerald-expansion/pull/5761) +* Fix fixed point damage calculation off-by-1s by @SBird1337 in [#5775](https://github.com/rh-hideout/pokeemerald-expansion/pull/5775) + Fixes a bunch of rounding errors that cause wrong outputs in the damage calculation. +* Fixes simu hp reduction when no partner was on field by @AlexOn1ine in [#5799](https://github.com/rh-hideout/pokeemerald-expansion/pull/5799) +* Fixes Regenerator healing past maxHP by @PhallenTree in [#5861](https://github.com/rh-hideout/pokeemerald-expansion/pull/5861) +* Fixes Pursuit + Emergency Exit causing double switches and Pursuit user fainting causing target to not finish switch by @PhallenTree in [#5849](https://github.com/rh-hideout/pokeemerald-expansion/pull/5849) +* Fixes regression caused by argument refactor by @AlexOn1ine in [#5870](https://github.com/rh-hideout/pokeemerald-expansion/pull/5870) +* Fixes Sparkling Aria Shield Dust / Covert Cloak interaction by @AlexOn1ine in [#5911](https://github.com/rh-hideout/pokeemerald-expansion/pull/5911) +* Battle Weather Refactor oversight by @AlexOn1ine in [#5960](https://github.com/rh-hideout/pokeemerald-expansion/pull/5960) +* Shell Bell Clean up / Simplification and Tests by @AlexOn1ine in [#5924](https://github.com/rh-hideout/pokeemerald-expansion/pull/5924) +* Dynamic move type was ignored in doubles for spread moves by @AlexOn1ine in [#5984](https://github.com/rh-hideout/pokeemerald-expansion/pull/5984) +* Fixes self effect moves not procing for spread moves when battler 3 w… by @AlexOn1ine in [#6020](https://github.com/rh-hideout/pokeemerald-expansion/pull/6020) +* Fix UB when accessing move result flags by @cawtds in [#6030](https://github.com/rh-hideout/pokeemerald-expansion/pull/6030) +* Fix Powder (status) config and some terrain timers not using gBattleTurnCounter by @PhallenTree in [#6109](https://github.com/rh-hideout/pokeemerald-expansion/pull/6109) +* Fix Powder config not checking for Powder status by @PhallenTree in [#6113](https://github.com/rh-hideout/pokeemerald-expansion/pull/6113) +* Fixes battler mutation during the intim script by @AlexOn1ine in [#6151](https://github.com/rh-hideout/pokeemerald-expansion/pull/6151) +* Fixes Dynamic Moves types in SumScreen while in Battle by @AlexOn1ine in [#6145](https://github.com/rh-hideout/pokeemerald-expansion/pull/6145) +* Fixes Dragon Tail missing timing against Rocky Helmet / Iron Barbs by @AlexOn1ine in [#6154](https://github.com/rh-hideout/pokeemerald-expansion/pull/6154) +* Prevent sameMoveTurns from incrementing when unable to use move by @moostoet in [#6167](https://github.com/rh-hideout/pokeemerald-expansion/pull/6167) +* Fixes Suction Cups ability popup and Red Card + Guard Dog interaction by @PhallenTree in [#6171](https://github.com/rh-hideout/pokeemerald-expansion/pull/6171) +* Fixed Unnerve message and wrote tests by @hedara90 in [#6192](https://github.com/rh-hideout/pokeemerald-expansion/pull/6192) +* Fixes Spectral Thief stealing boost at the wrong time by @AlexOn1ine in [#6197](https://github.com/rh-hideout/pokeemerald-expansion/pull/6197) +* Fixes BATTLER_TURN_DAMAGED battler id by @AlexOn1ine in [#6236](https://github.com/rh-hideout/pokeemerald-expansion/pull/6236) +* Fixed multi battle forced switches by @hedara90 in [#6243](https://github.com/rh-hideout/pokeemerald-expansion/pull/6243) +* Fixes ability Embody Aspect triggering multiple times by @AlexOn1ine in [#6259](https://github.com/rh-hideout/pokeemerald-expansion/pull/6259) +* Fixes Called moves ignoring redirection by @PhallenTree in [#6267](https://github.com/rh-hideout/pokeemerald-expansion/pull/6267) +* Fixes Protean not restoring types after ai damage calcs by @AlexOn1ine in [#6280](https://github.com/rh-hideout/pokeemerald-expansion/pull/6280) +* Restoretarget in Rototiller script + Tests by @AlexOn1ine in [#6296](https://github.com/rh-hideout/pokeemerald-expansion/pull/6296) +* Fixes inconsistency for Kings rock. by @AlexOn1ine in [#6302](https://github.com/rh-hideout/pokeemerald-expansion/pull/6302) +* Fixes Shell Bell for Spread Moves by @AlexOn1ine in [#6303](https://github.com/rh-hideout/pokeemerald-expansion/pull/6303) +* Fixes Brick Break/Psychic Fangs/Raging Bull breaking screens if target is immune by @PhallenTree in [#6308](https://github.com/rh-hideout/pokeemerald-expansion/pull/6308) +* Fixes doesnt effect message for Thunder Wave by @AlexOn1ine in [#6304](https://github.com/rh-hideout/pokeemerald-expansion/pull/6304) +* Fixes Tera Shell activating on moves that have no effect on target by @AlexOn1ine in [#6271](https://github.com/rh-hideout/pokeemerald-expansion/pull/6271) +* Fixes fainted battler being able to select an action by @PhallenTree in [#6339](https://github.com/rh-hideout/pokeemerald-expansion/pull/6339) + +## 🤹 Moves 🤹 +### Added +* Added missing in-battle "Move Info" button prompt by @AsparagusEduardo and @TeamAquasHideout from who I got the source from and @BelialClover from who Archie got the source from. in [#6155](https://github.com/rh-hideout/pokeemerald-expansion/pull/6155) + +### Changed +* New Volt Switch Animation by @AlexOn1ine in [#5729](https://github.com/rh-hideout/pokeemerald-expansion/pull/5729) +* Refactors argument into a union by @AlexOn1ine in [#5853](https://github.com/rh-hideout/pokeemerald-expansion/pull/5853) +* Encapsulate move data by @AsparagusEduardo in [#5852](https://github.com/rh-hideout/pokeemerald-expansion/pull/5852) +* Removes Resource Flags and moves fields to DisableStruct by @AlexOn1ine in [#5945](https://github.com/rh-hideout/pokeemerald-expansion/pull/5945) +* Tera starstorm by @hedara90 in [#6073](https://github.com/rh-hideout/pokeemerald-expansion/pull/6073) +* Tachyon Cutter and Salt Cure animations by @hedara90 in [#6182](https://github.com/rh-hideout/pokeemerald-expansion/pull/6182) +* Heal Bell/Aromatherapy/Sparkly Swirl improvements and fixes by @AsparagusEduardo in [#6210](https://github.com/rh-hideout/pokeemerald-expansion/pull/6210) + - Removed `EFFECT_SPARKLY_SWIRL` in favor of `MOVE_EFFECT_AROMATHEROPY`. +* Moved sValidApprenticeMove into gMovesInfo by @fdeblasio in [#6254](https://github.com/rh-hideout/pokeemerald-expansion/pull/6254) +* Fixes non-Ghost type Curse animation by @PhallenTree in [#6299](https://github.com/rh-hideout/pokeemerald-expansion/pull/6299) +* Remove pursuitSwitchByMove and additional if statement by @PhallenTree in [#6326](https://github.com/rh-hideout/pokeemerald-expansion/pull/6326) + +### Fixed +* Fixes moves based on Dragon Darts with strikeCount > 2 always hitting the same battler from the second hit onwards by @PhallenTree in [#5830](https://github.com/rh-hideout/pokeemerald-expansion/pull/5830) +* Last fix for Sparkling Aria / Covert Cloak / Shield Dust interaction by @AlexOn1ine in [#5956](https://github.com/rh-hideout/pokeemerald-expansion/pull/5956) +* Added WEATHER_DOWNPOUR to Weather Ball's dynamic type by @fdeblasio in [#6100](https://github.com/rh-hideout/pokeemerald-expansion/pull/6100) +* Fixed Future Sight not being affected by Electrify by @AsparagusEduardo in [#6213](https://github.com/rh-hideout/pokeemerald-expansion/pull/6213) +* Fixes Expanding Force and Spectral Thief move animations by @PhallenTree in [#6185](https://github.com/rh-hideout/pokeemerald-expansion/pull/6185) +* Made some move animations fit in VRAM by @hedara90 in [#6289](https://github.com/rh-hideout/pokeemerald-expansion/pull/6289) + +## 🧶 Items 🧶 +### Fixed +* Adds missing Friend Ball friendship bonus upon catching by @PhallenTree in [#5795](https://github.com/rh-hideout/pokeemerald-expansion/pull/5795) + +## 🤖 Battle AI 🤖 +### Added +* Smart Switching handles Soundproof by @Pawkkie and @Robdeezy for the idea! in [#5703](https://github.com/rh-hideout/pokeemerald-expansion/pull/5703) +* Add Revival Blessing AI by @Pawkkie in [#5704](https://github.com/rh-hideout/pokeemerald-expansion/pull/5704) +* Add AI_FLAG_WEIGH_ABILITY_PREDICTION by @Pawkkie and @khbsd and @ghoulslash for the idea, @AlexOn1ine and @mrgriffin for getting it working :) in [#5636](https://github.com/rh-hideout/pokeemerald-expansion/pull/5636) +* Add AI_FLAG_PREFER_HIGHEST_DAMAGE_MOVE by @Pawkkie in [#6025](https://github.com/rh-hideout/pokeemerald-expansion/pull/6025) +* Add AI_FLAG_PREDICT_SWITCH by @Pawkkie and @kithr1 in [#6028](https://github.com/rh-hideout/pokeemerald-expansion/pull/6028) +* Add AI_FLAG_PREDICT_INCOMING_MON: AI will score against predicted switchin if predicting switch by @Pawkkie in [#6037](https://github.com/rh-hideout/pokeemerald-expansion/pull/6037) +* Switch trapping AI will consider Trace by @Pawkkie in [#6059](https://github.com/rh-hideout/pokeemerald-expansion/pull/6059) +* AI adds score to Pursuit if it OHKOs by @Pawkkie in [#6166](https://github.com/rh-hideout/pokeemerald-expansion/pull/6166) +* Switch chance config support by @Pawkkie in [#6187](https://github.com/rh-hideout/pokeemerald-expansion/pull/6187) + - Config can be changed in config/ai.h +* Add function to adjust AI scoring for generalized item effects by @moostoet and @AlexOn1ine and @Pawkkie for the input on slight changes to make to the logic (config, no magic numbers...) in [#6247](https://github.com/rh-hideout/pokeemerald-expansion/pull/6247) + +### Changed +* Fixed AI not handling type effectiveness beyond x8 by @AsparagusEduardo and @/sshadowzkmao in [#6127](https://github.com/rh-hideout/pokeemerald-expansion/pull/6127) + - Removed the use of `AI_EFFECTIVENESS_` in favor of storing the actual type effectiveness. + - Renamed `AI_GetTypeEffectiveness` to `AI_GetMoveEffectiveness`, removing the original one. +* Remove global sBattler_AI by @AlexOn1ine in [#6128](https://github.com/rh-hideout/pokeemerald-expansion/pull/6128) +* SwitchType enum to clean up GetMostSuitableMonToSwitchInto by @Pawkkie in [#6184](https://github.com/rh-hideout/pokeemerald-expansion/pull/6184) + +### Fixed +* Eject item ace flag switch AI fixes by @Pawkkie and @wiz1989 for reporting the bug in [#6098](https://github.com/rh-hideout/pokeemerald-expansion/pull/6098) +* Fix Choice'd mons referring to incorrect move when switching by @Pawkkie and @/capncrunch in [#6204](https://github.com/rh-hideout/pokeemerald-expansion/pull/6204) +* Fix AI switching in absorbing mon incorrectly by @Pawkkie in [#6227](https://github.com/rh-hideout/pokeemerald-expansion/pull/6227) +* Improve Yawn and Status Switching by @Pawkkie and @/Chape for finding this behaviour in [#6202](https://github.com/rh-hideout/pokeemerald-expansion/pull/6202) +* Fix AI wrongly thinking it strikes first with priority even if player is using priority themselves by @moostoet in [#6274](https://github.com/rh-hideout/pokeemerald-expansion/pull/6274) +* Fix AI hazard move handling, minor AI tweaks by @Pawkkie and @ShadowzLmao2 in [#6311](https://github.com/rh-hideout/pokeemerald-expansion/pull/6311) +* Fix Overzealous Absorber Switching by @Pawkkie and @iriv24 and @ravepossum for squinting at a conditional for nearly 30mins with me to find a semicolon in [#6318](https://github.com/rh-hideout/pokeemerald-expansion/pull/6318) +* Fix Substitute / Shed Tail Switch AI by @Pawkkie in [#6334](https://github.com/rh-hideout/pokeemerald-expansion/pull/6334) + +## 🧹 Other Cleanup 🧹 +* Split "Do nothing" move effects by @AsparagusEduardo in [#5613](https://github.com/rh-hideout/pokeemerald-expansion/pull/5613) +* Sleep Clause global config by @Pawkkie in [#5762](https://github.com/rh-hideout/pokeemerald-expansion/pull/5762) +* Converts multi-choice options to COMPOUND_STRINGs by @fdeblasio in [#5686](https://github.com/rh-hideout/pokeemerald-expansion/pull/5686) +* Converted item-related variables to COMPOUND_STRINGs by @fdeblasio in [#5714](https://github.com/rh-hideout/pokeemerald-expansion/pull/5714) +* Adds SleepClauseBlock enum to CanBeSlept by @Pawkkie and @AlexOn1ine in [#5773](https://github.com/rh-hideout/pokeemerald-expansion/pull/5773) +* Swapped DESELECT and CHECK_TAG to be in right places by @fdeblasio in [#5794](https://github.com/rh-hideout/pokeemerald-expansion/pull/5794) +* Changes target TURN_DAMAGED and MAX_HP to inlines by @AlexOn1ine in [#5822](https://github.com/rh-hideout/pokeemerald-expansion/pull/5822) +* Changes Various defines to an Enum by @AlexOn1ine in [#5839](https://github.com/rh-hideout/pokeemerald-expansion/pull/5839) +* Remove fno-toplevel-reorder by @DizzyEggg in [#5809](https://github.com/rh-hideout/pokeemerald-expansion/pull/5809) +* Refactors argument into a union by @AlexOn1ine in [#5853](https://github.com/rh-hideout/pokeemerald-expansion/pull/5853) +* Clean up redundancy for mugshots by @AlexOn1ine in [#5906](https://github.com/rh-hideout/pokeemerald-expansion/pull/5906) +* Encapsulate move data by @AsparagusEduardo in [#5852](https://github.com/rh-hideout/pokeemerald-expansion/pull/5852) +* Initialize m4a and IRQ handler in a loaded section by @SBird1337 in [#5912](https://github.com/rh-hideout/pokeemerald-expansion/pull/5912) +* Remove EWRAM gHpDealt (not needed anymore) by @AlexOn1ine in [#5925](https://github.com/rh-hideout/pokeemerald-expansion/pull/5925) +* Fix DexNav static asserts by @Bassoonian in [#5944](https://github.com/rh-hideout/pokeemerald-expansion/pull/5944) +* Move overwrittenAbilities field to DisableStruct by @ghoulslash in [#5946](https://github.com/rh-hideout/pokeemerald-expansion/pull/5946) +* Converted 2 various to callnative by @AsparagusEduardo in [#5950](https://github.com/rh-hideout/pokeemerald-expansion/pull/5950) + - Removed `VARIOUS_SWAP_SIDE_STATUSES` and `VARIOUS_SWAP_STATS`. +* Shell Bell Clean up / Simplification and Tests by @AlexOn1ine in [#5924](https://github.com/rh-hideout/pokeemerald-expansion/pull/5924) +* Removed OW_AUTO_SIGNPOST by @pkmnsnfrn, @doejohn126 discovered the issue in [#5974](https://github.com/rh-hideout/pokeemerald-expansion/pull/5974) +* Fix leftover test change from #5033 by @mrgriffin in [#5987](https://github.com/rh-hideout/pokeemerald-expansion/pull/5987) +* Multiple removals of hardcoded move IDs by @AsparagusEduardo in [#5964](https://github.com/rh-hideout/pokeemerald-expansion/pull/5964) +* Missed two uses of new hazard type enum by @Pawkkie in [#5996](https://github.com/rh-hideout/pokeemerald-expansion/pull/5996) +* Debug menu and `createmon` additions/cleanup by @AsparagusEduardo in [#5994](https://github.com/rh-hideout/pokeemerald-expansion/pull/5994) + - Added Tera Type, Dynamax Level, and Gigantamax Factor to the "Give Pokémon (complex)" debug menu option. + - Added `dmaxLevel` option to `givemon` and `createmon`. + - Added `WEATHER_COUNT`. + - Cleaned up repeated code instances in debug menu. + - Fixed mislabel of `ggMaxFactor` in `givemon` and `createmon`. Now it's `gmaxFactor`. +* Free some IWRAM by @DizzyEggg in [#6000](https://github.com/rh-hideout/pokeemerald-expansion/pull/6000) +* Removes Resource Flags and moves fields to DisableStruct by @AlexOn1ine in [#5945](https://github.com/rh-hideout/pokeemerald-expansion/pull/5945) +* Future Sight Innards Out follow up for upcoming by @AlexOn1ine in [#5998](https://github.com/rh-hideout/pokeemerald-expansion/pull/5998) +* Remove redundant calls to GetMonData in pokemon.c by @AZero13 in [#5545](https://github.com/rh-hideout/pokeemerald-expansion/pull/5545) +* Use SET8 and SET32 consistently by @AZero13 in [#5544](https://github.com/rh-hideout/pokeemerald-expansion/pull/5544) +* Rename Furfrou Species tags to match Pokemon Showdown exports by @moostoet in [#6041](https://github.com/rh-hideout/pokeemerald-expansion/pull/6041) +* Rename DexNav flags and vars by @Bassoonian in [#6044](https://github.com/rh-hideout/pokeemerald-expansion/pull/6044) +* Re-removed trainers.h trailing whitespace by @fdeblasio in [#6048](https://github.com/rh-hideout/pokeemerald-expansion/pull/6048) +* Moved front animations frames to gSpeciesInfo by @AsparagusEduardo in [#5605](https://github.com/rh-hideout/pokeemerald-expansion/pull/5605) +* Clean up array access by using index instead of dereferencing the value by @AlexOn1ine in [#6057](https://github.com/rh-hideout/pokeemerald-expansion/pull/6057) +* Add a uniquely striking pair of brackets by @Pawkkie in [#6068](https://github.com/rh-hideout/pokeemerald-expansion/pull/6068) +* Replace WEATHER_HAS_EFFECT with HasWeatherEffect by @AlexOn1ine in [#6069](https://github.com/rh-hideout/pokeemerald-expansion/pull/6069) +* Converts a bunch of defines to enums by @Bassoonian in [#6071](https://github.com/rh-hideout/pokeemerald-expansion/pull/6071) + - Replaced `BATTLE_TERRAIN` #defines with the `BattleTerrain` enum + - Replaced `MAP_TYPE` #defines with the `MapType` enum + - Replaced `MAP_BATTLE_SCENE` #defines with the `MapBattleScene` enum + - Replaced `BACK_ANIM` #defines with the `BackAnim` enum + - Replaced `ANIM` #defines with the `AnimFunctionIDs` enum + - Replaced `INGAME_TRADE` #defines with the `InGameTradeID` enum + - Replaced `TRAINER_CLASS` #defines with the `TRAINER_CLASS` enum +* Return the universe to a state of balanced quilibrium by @Pawkkie in [#6074](https://github.com/rh-hideout/pokeemerald-expansion/pull/6074) +* Cleaned up Debug Menu by @AsparagusEduardo in [#6070](https://github.com/rh-hideout/pokeemerald-expansion/pull/6070) +* Remove gDecompressionBuffer by @DizzyEggg in [#6029](https://github.com/rh-hideout/pokeemerald-expansion/pull/6029) +* Cleaned up Trainer Slides, added automated Trainer Slide tests, add new Enemy Critical Hit Slide by @pkmnsnfrn and @AlexOn1ine, @hedara90, @AsparagusEduardo, @mrgriffin in [#6018](https://github.com/rh-hideout/pokeemerald-expansion/pull/6018) + * If users created new entries in sTrainerSlides, they will need to be ported to the new system. +* Terrain function standarization by @fdeblasio in [#6097](https://github.com/rh-hideout/pokeemerald-expansion/pull/6097) +* Updated trainer pic tutorial by @fdeblasio in [#6049](https://github.com/rh-hideout/pokeemerald-expansion/pull/6049) +* Remove UnusedBattleInit from battle_bg.c by @DizzyEggg in [#6116](https://github.com/rh-hideout/pokeemerald-expansion/pull/6116) +* Consolidated contest opponent filters into gContestOpponents by @fdeblasio in [#6119](https://github.com/rh-hideout/pokeemerald-expansion/pull/6119) +* Replace BattleStruct members quickClawRandom/quickDrawRandom with locals by @AlexOn1ine in [#6136](https://github.com/rh-hideout/pokeemerald-expansion/pull/6136) +* Updated Trainer Ids used in Trainer Slides tests by @pkmnsnfrn and @AlexOn1ine found the original bug, @AsparagusEduardo confirmed it in [#6138](https://github.com/rh-hideout/pokeemerald-expansion/pull/6138) +* Added Difficulty Fallback for Trainer Slides by @pkmnsnfrn in [#6088](https://github.com/rh-hideout/pokeemerald-expansion/pull/6088) +* Clean up follow up for Simultaneous Reduction HP by @AlexOn1ine in [#6139](https://github.com/rh-hideout/pokeemerald-expansion/pull/6139) +* Remove global sBattler_AI by @AlexOn1ine in [#6128](https://github.com/rh-hideout/pokeemerald-expansion/pull/6128) +* Clarify MOVE_EFFECT_SLEEP sleep clause handling by @Pawkkie in [#6161](https://github.com/rh-hideout/pokeemerald-expansion/pull/6161) +* Remove unused PainSplit scripting global by @AlexOn1ine in [#6164](https://github.com/rh-hideout/pokeemerald-expansion/pull/6164) +* Don't use SeedRng some places where it isn't necessary by @tertu-m in [#6156](https://github.com/rh-hideout/pokeemerald-expansion/pull/6156) +* Cleaned up party data access GetPartyBattlerData by @AsparagusEduardo in [#6172](https://github.com/rh-hideout/pokeemerald-expansion/pull/6172) +* Changed two LocalRandom calls to new LocalRandom32 by @hedara90 in [#6173](https://github.com/rh-hideout/pokeemerald-expansion/pull/6173) +* Cleanup some global battler ID usage by @ghoulslash in [#6181](https://github.com/rh-hideout/pokeemerald-expansion/pull/6181) +* Clean up - Add ability args instead of calcing the ability again by @AlexOn1ine in [#6186](https://github.com/rh-hideout/pokeemerald-expansion/pull/6186) +* CanAbilityX Function Cleanup by @ghoulslash in [#6183](https://github.com/rh-hideout/pokeemerald-expansion/pull/6183) +* SwitchType enum to clean up GetMostSuitableMonToSwitchInto by @Pawkkie in [#6184](https://github.com/rh-hideout/pokeemerald-expansion/pull/6184) +* Unify setreflect/setlightscreen and MOVE_EFFECT_REFLECT/LIGHT_SCREEN by @ghoulslash in [#6196](https://github.com/rh-hideout/pokeemerald-expansion/pull/6196) +* Removed Trainer Slides footgun by @AsparagusEduardo in [#6205](https://github.com/rh-hideout/pokeemerald-expansion/pull/6205) +* Fix typo in Nuzzle's description by @Bassoonian in [#6209](https://github.com/rh-hideout/pokeemerald-expansion/pull/6209) +* Consolidate duplicate dialogue of nature girl in Battle Frontier by @fdeblasio in [#6195](https://github.com/rh-hideout/pokeemerald-expansion/pull/6195) +* Fixed missing move encapsulation in upcoming by @AsparagusEduardo in [#6226](https://github.com/rh-hideout/pokeemerald-expansion/pull/6226) +* Consolidated Frontier teams into battle_frontier_trainers.h by @fdeblasio in [#5892](https://github.com/rh-hideout/pokeemerald-expansion/pull/5892) +* Add abstraction layer for battler positions by @AlexOn1ine in [#6212](https://github.com/rh-hideout/pokeemerald-expansion/pull/6212) +* Revert unintentional change by @AlexOn1ine in [#6239](https://github.com/rh-hideout/pokeemerald-expansion/pull/6239) +* Remove whitespace from trainers data file by @AsparagusEduardo in [#6234](https://github.com/rh-hideout/pokeemerald-expansion/pull/6234) +* Replaced hardcoded numbers in DexNav with variables by @fdeblasio in [#6241](https://github.com/rh-hideout/pokeemerald-expansion/pull/6241) +* fix for battle ui for add to party menu (#6229) by @fakuzatsu in [#6240](https://github.com/rh-hideout/pokeemerald-expansion/pull/6240) +* Changed bit order for follower graphicsId creation by @hedara90 in [#6249](https://github.com/rh-hideout/pokeemerald-expansion/pull/6249) +* Minor Clean up for CanAbilityX. Follow up for #6183 by @AlexOn1ine in [#6252](https://github.com/rh-hideout/pokeemerald-expansion/pull/6252) +* Moved sValidApprenticeMove into gMovesInfo by @fdeblasio in [#6254](https://github.com/rh-hideout/pokeemerald-expansion/pull/6254) +* Use more accurate count in MovesInfo by @AlexOn1ine in [#6260](https://github.com/rh-hideout/pokeemerald-expansion/pull/6260) +* Fix Extra `task->tState++` and `break` in `Task_DrawFieldMessageBox` by @Deokishisu in [#6261](https://github.com/rh-hideout/pokeemerald-expansion/pull/6261) +* Expand usage of IsBattlerAlly (rename from IsAlly) by @AlexOn1ine in [#6251](https://github.com/rh-hideout/pokeemerald-expansion/pull/6251) +* Rename SetPhotonGeyser to a more general use and clean up by @AlexOn1ine in [#6272](https://github.com/rh-hideout/pokeemerald-expansion/pull/6272) +* Fix padding amount in MoveInfo by @AlexOn1ine in [#6307](https://github.com/rh-hideout/pokeemerald-expansion/pull/6307) +* Refactor testing flags and vars to not conflict with user ones by @hedara90 in [#6301](https://github.com/rh-hideout/pokeemerald-expansion/pull/6301) +* Clean up leftover from simu hp reduction development by @AlexOn1ine in [#6323](https://github.com/rh-hideout/pokeemerald-expansion/pull/6323) +* Remove pursuitSwitchByMove and additional if statement by @PhallenTree in [#6326](https://github.com/rh-hideout/pokeemerald-expansion/pull/6326) + +## 🧪 Test Runner 🧪 +### Changed +* New Ally Switch test fails on CI by @AlexOn1ine in [#5896](https://github.com/rh-hideout/pokeemerald-expansion/pull/5896) +* Added final Sparkling Aria+Shield Dust interaction test by @hedara90 in [#5923](https://github.com/rh-hideout/pokeemerald-expansion/pull/5923) +* Converted 2 various to callnative by @AsparagusEduardo in [#5950](https://github.com/rh-hideout/pokeemerald-expansion/pull/5950) + - Removed `VARIOUS_SWAP_SIDE_STATUSES` and `VARIOUS_SWAP_STATS`. +* Cleaned up Trainer Slides, added automated Trainer Slide tests, add new Enemy Critical Hit Slide by @pkmnsnfrn and @AlexOn1ine, @hedara90, @AsparagusEduardo, @mrgriffin in [#6018](https://github.com/rh-hideout/pokeemerald-expansion/pull/6018) + * If users created new entries in sTrainerSlides, they will need to be ported to the new system. +* Tests for Big Pecks by @hedara90 in [#6158](https://github.com/rh-hideout/pokeemerald-expansion/pull/6158) +* Water Compaction tests by @hedara90 in [#6159](https://github.com/rh-hideout/pokeemerald-expansion/pull/6159) +* Wrote tests for Electrify by @hedara90 in [#6179](https://github.com/rh-hideout/pokeemerald-expansion/pull/6179) +* Sheer Force Test Fixes by @ghoulslash in [#6198](https://github.com/rh-hideout/pokeemerald-expansion/pull/6198) +* Minor Terrain Seed Test Improvement by @ghoulslash in [#6207](https://github.com/rh-hideout/pokeemerald-expansion/pull/6207) +* Fix Liquid Ooze + Leech Seed Test by @ghoulslash in [#6217](https://github.com/rh-hideout/pokeemerald-expansion/pull/6217) +* Prevented fanfares from playing in headless mode by @pkmnsnfrn and @hedara90, @AsparagusEduardo in [#6219](https://github.com/rh-hideout/pokeemerald-expansion/pull/6219) +* Added test support for 5 battle configs by @AsparagusEduardo in [#5914](https://github.com/rh-hideout/pokeemerald-expansion/pull/5914) +* Added missing Dream Eater and Reflect Type tests by @AsparagusEduardo in [#6245](https://github.com/rh-hideout/pokeemerald-expansion/pull/6245) +* Refactor testing flags and vars to not conflict with user ones by @hedara90 in [#6301](https://github.com/rh-hideout/pokeemerald-expansion/pull/6301) + +### Fixed +* Fix ASSUMPTIONS not working by @DizzyEggg in [#5869](https://github.com/rh-hideout/pokeemerald-expansion/pull/5869) +* Updated Trainer Ids used in Trainer Slides tests by @pkmnsnfrn and @AlexOn1ine found the original bug, @AsparagusEduardo confirmed it in [#6138](https://github.com/rh-hideout/pokeemerald-expansion/pull/6138) +* Adjusted G-Max Depletion test by @AsparagusEduardo and @AlexOn1ine for being a cool dude being patient with me during the PR. in [#6201](https://github.com/rh-hideout/pokeemerald-expansion/pull/6201) +* Do not add TRAINER_FLAG_DOUBLE_BATTLE to recorded battles by @mrgriffin in [#6285](https://github.com/rh-hideout/pokeemerald-expansion/pull/6285) +* Fixes Brick Break/Psychic Fangs/Raging Bull breaking screens if target is immune by @PhallenTree in [#6308](https://github.com/rh-hideout/pokeemerald-expansion/pull/6308) + +## 📚 Documentation 📚 +* Updating install instructions by @hedara90 in [#5610](https://github.com/rh-hideout/pokeemerald-expansion/pull/5610) + - Install instructions have been moved into individual files under `docs/install/ ` +* Documentation for DisableStruct by @AlexOn1ine in [#6066](https://github.com/rh-hideout/pokeemerald-expansion/pull/6066) +* Cleaned up Trainer Slides, added automated Trainer Slide tests, add new Enemy Critical Hit Slide by @pkmnsnfrn and @AlexOn1ine, @hedara90, @AsparagusEduardo, @mrgriffin in [#6018](https://github.com/rh-hideout/pokeemerald-expansion/pull/6018) + * If users created new entries in sTrainerSlides, they will need to be ported to the new system. +* Updated trainer pic tutorial by @fdeblasio in [#6049](https://github.com/rh-hideout/pokeemerald-expansion/pull/6049) +* Update how_to_testing_system.md by @hedara90 in [#6281](https://github.com/rh-hideout/pokeemerald-expansion/pull/6281) + +## 📦 Branch Synchronisation 📦 +### pret +* 11th of February in [#6231](https://github.com/rh-hideout/pokeemerald-expansion/pull/6231) + * Replace easy_chat alphabetialOrder magic numbers with EC_INDEX values by @rayrobdod in [pret#2096](https://github.com/pret/pokeemerald/pull/2096) + * Fixed switchout bug in multibattle where order of mons gets messed up by @shachar700 in [pret#2099](https://github.com/pret/pokeemerald/pull/2099) + +## New Contributors +* @khbsd made their first contribution in [#5679](https://github.com/rh-hideout/pokeemerald-expansion/pull/5679) +* @ExMingYan made their first contribution in [#6220](https://github.com/rh-hideout/pokeemerald-expansion/pull/6220) +* @Deokishisu made their first contribution in [#6261](https://github.com/rh-hideout/pokeemerald-expansion/pull/6261) + +**Full Changelog**: https://github.com/rh-hideout/pokeemerald-expansion/compare/expansion/1.10.2...test + + + + diff --git a/include/constants/expansion.h b/include/constants/expansion.h index dee4a3bea1..ccf24deccb 100644 --- a/include/constants/expansion.h +++ b/include/constants/expansion.h @@ -1,13 +1,13 @@ #ifndef GUARD_CONSTANTS_EXPANSION_H #define GUARD_CONSTANTS_EXPANSION_H -// Last version: 1.10.2 +// Last version: 1.11.0 #define EXPANSION_VERSION_MAJOR 1 #define EXPANSION_VERSION_MINOR 11 #define EXPANSION_VERSION_PATCH 0 // FALSE if this this version of Expansion is not a tagged commit, i.e. // it contains unreleased changes. -#define EXPANSION_TAGGED_RELEASE FALSE +#define EXPANSION_TAGGED_RELEASE TRUE #endif From 002e67449788937281d7d202c41cc8ef818d22e2 Mon Sep 17 00:00:00 2001 From: hedara90 <90hedara@gmail.com> Date: Thu, 27 Feb 2025 10:27:14 +0100 Subject: [PATCH 72/73] Update docs/changelogs/1.11.x/1.11.0.md --- docs/changelogs/1.11.x/1.11.0.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/changelogs/1.11.x/1.11.0.md b/docs/changelogs/1.11.x/1.11.0.md index 3379f6cc26..1b2e97db6e 100644 --- a/docs/changelogs/1.11.x/1.11.0.md +++ b/docs/changelogs/1.11.x/1.11.0.md @@ -13,7 +13,7 @@ * Replace WEATHER_HAS_EFFECT with HasWeatherEffect by @AlexOn1ine in [#6069](https://github.com/rh-hideout/pokeemerald-expansion/pull/6069) * Cleaned up Trainer Slides, added automated Trainer Slide tests, add new Enemy Critical Hit Slide by @pkmnsnfrn and @AlexOn1ine, @hedara90, @AsparagusEduardo, @mrgriffin in [#6018](https://github.com/rh-hideout/pokeemerald-expansion/pull/6018) * If users created new entries in sTrainerSlides, they will need to be ported to the new system. -* Introduces BattleTurnCounter to simplfy timer checks by @AlexOn1ine in [#6080](https://github.com/rh-hideout/pokeemerald-expansion/pull/6080) +* Introduces BattleTurnCounter to simplify timer checks by @AlexOn1ine in [#6080](https://github.com/rh-hideout/pokeemerald-expansion/pull/6080) * Convert max effects to normal move effects by @AlexOn1ine in [#6143](https://github.com/rh-hideout/pokeemerald-expansion/pull/6143) * Redefine IsBattlerAlive in battle.h as a static inline by @AlexOn1ine in [#6211](https://github.com/rh-hideout/pokeemerald-expansion/pull/6211) * Consolidated Frontier teams into battle_frontier_trainers.h by @fdeblasio in [#5892](https://github.com/rh-hideout/pokeemerald-expansion/pull/5892) From 8df457452ae6a29d65c82794897528b8f8363d47 Mon Sep 17 00:00:00 2001 From: Hedara Date: Thu, 27 Feb 2025 14:34:58 +0100 Subject: [PATCH 73/73] Start of 1.12 cycle --- include/constants/expansion.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/constants/expansion.h b/include/constants/expansion.h index b3510c9845..16a9ab39e4 100644 --- a/include/constants/expansion.h +++ b/include/constants/expansion.h @@ -3,8 +3,8 @@ // Last version: 1.11.0 #define EXPANSION_VERSION_MAJOR 1 -#define EXPANSION_VERSION_MINOR 11 -#define EXPANSION_VERSION_PATCH 1 +#define EXPANSION_VERSION_MINOR 12 +#define EXPANSION_VERSION_PATCH 0 // FALSE if this this version of Expansion is not a tagged commit, i.e. // it contains unreleased changes.