From 2db9ab2a2f68f66383edde08b9d731002f9a9b33 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Thu, 16 Nov 2023 13:08:47 -0500 Subject: [PATCH 01/37] Document camera sprite functions --- include/event_object_movement.h | 10 +++- src/event_object_movement.c | 102 ++++++++++++++++---------------- src/field_camera.c | 4 +- src/field_effect.c | 28 ++++----- src/field_player_avatar.c | 6 +- 5 files changed, 78 insertions(+), 72 deletions(-) diff --git a/include/event_object_movement.h b/include/event_object_movement.h index 01269cdb5e..2a273b7991 100644 --- a/include/event_object_movement.h +++ b/include/event_object_movement.h @@ -71,6 +71,12 @@ enum ReflectionTypes #define GROUND_EFFECT_FLAG_HOT_SPRINGS (1 << 18) #define GROUND_EFFECT_FLAG_SEAWEED (1 << 19) +// Sprite data for the CameraObject functions +#define sCamera_FollowSpriteId data[0] +#define sCamera_State data[1] +#define sCamera_MoveX data[2] +#define sCamera_MoveY data[3] + struct StepAnimTable { const union AnimCmd *const *anims; @@ -123,7 +129,7 @@ u8 TrySpawnObjectEvent(u8 localId, u8 mapNum, u8 mapGroup); u8 SpawnSpecialObjectEventParameterized(u8 graphicsId, u8 movementBehavior, u8 localId, s16 x, s16 y, u8 elevation); u8 SpawnSpecialObjectEvent(struct ObjectEventTemplate *); void SetSpritePosToMapCoords(s16 mapX, s16 mapY, s16 *destX, s16 *destY); -void CameraObjectReset1(void); +void CameraObjectReset(void); void ObjectEventSetGraphicsId(struct ObjectEvent *, u8 graphicsId); void ObjectEventTurn(struct ObjectEvent *, u8 direction); void ObjectEventTurnByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup, u8 direction); @@ -211,7 +217,7 @@ u16 GetObjectPaletteTag(u8 palSlot); void UpdateObjectEventSpriteInvisibility(struct Sprite *sprite, bool8 invisible); s16 GetFigure8XOffset(s16 idx); s16 GetFigure8YOffset(s16 idx); -void CameraObjectReset2(void); +void CameraObjectFreeze(void); u8 GetObjectEventBerryTreeId(u8 objectEventId); void SetBerryTreeJustPicked(u8 mapId, u8 mapNumber, u8 mapGroup); bool8 IsBerryTreeSparkling(u8 localId, u8 mapNum, u8 mapGroup); diff --git a/src/event_object_movement.c b/src/event_object_movement.c index a181ea9f21..5a746579d4 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -144,9 +144,9 @@ static u8 FindObjectEventPaletteIndexByTag(u16); static void _PatchObjectPalette(u16, u8); static bool8 ObjectEventDoesElevationMatch(struct ObjectEvent *, u8); static void SpriteCB_CameraObject(struct Sprite *); -static void CameraObject_0(struct Sprite *); -static void CameraObject_1(struct Sprite *); -static void CameraObject_2(struct Sprite *); +static void CameraObject_Init(struct Sprite *); +static void CameraObject_UpdateMove(struct Sprite *); +static void CameraObject_UpdateFrozen(struct Sprite *); static const struct ObjectEventTemplate *FindObjectEventTemplateByLocalId(u8, const struct ObjectEventTemplate *, u8); static void ClearObjectEventMovement(struct ObjectEvent *, struct Sprite *); static void ObjectEventSetSingleMovement(struct ObjectEvent *, struct Sprite *, u8); @@ -193,10 +193,16 @@ static const struct SpriteTemplate sCameraSpriteTemplate = { .callback = SpriteCB_CameraObject }; +enum { + CAMERA_STATE_INIT, + CAMERA_STATE_MOVE, + CAMERA_STATE_FROZEN, +}; + static void (*const sCameraObjectFuncs[])(struct Sprite *) = { - CameraObject_0, - CameraObject_1, - CameraObject_2, + [CAMERA_STATE_INIT] = CameraObject_Init, + [CAMERA_STATE_MOVE] = CameraObject_UpdateMove, + [CAMERA_STATE_FROZEN] = CameraObject_UpdateFrozen, }; #include "data/object_events/object_event_graphics.h" @@ -1836,7 +1842,7 @@ void ObjectEventSetGraphicsId(struct ObjectEvent *objectEvent, u8 graphicsId) sprite->x += 8; sprite->y += 16 + sprite->centerToCornerVecY; if (objectEvent->trackedByCamera) - CameraObjectReset1(); + CameraObjectReset(); } void ObjectEventSetGraphicsIdByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup, u8 graphicsId) @@ -2128,7 +2134,7 @@ void MoveObjectEventToMapCoords(struct ObjectEvent *objectEvent, s16 x, s16 y) sprite->y += 16 + sprite->centerToCornerVecY; ResetObjectEventFldEffData(objectEvent); if (objectEvent->trackedByCamera) - CameraObjectReset1(); + CameraObjectReset(); } void TryMoveObjectEventToMapCoords(u8 localId, u8 mapNum, u8 mapGroup, s16 x, s16 y) @@ -2204,15 +2210,15 @@ void UpdateObjectEventsForCameraUpdate(s16 x, s16 y) RemoveObjectEventsOutsideView(); } -#define sLinkedSpriteId data[0] -#define sState data[1] - -u8 AddCameraObject(u8 linkedSpriteId) +// The "CameraObject" functions below are responsible for an invisible sprite +// that follows the movements of a different sprite (normally the player's sprite) +// and tracks x/y movement distances for the camera so it knows where to move. +u8 AddCameraObject(u8 followSpriteId) { u8 spriteId = CreateSprite(&sCameraSpriteTemplate, 0, 0, 4); gSprites[spriteId].invisible = TRUE; - gSprites[spriteId].sLinkedSpriteId = linkedSpriteId; + gSprites[spriteId].sCamera_FollowSpriteId = followSpriteId; return spriteId; } @@ -2221,35 +2227,37 @@ static void SpriteCB_CameraObject(struct Sprite *sprite) void (*callbacks[ARRAY_COUNT(sCameraObjectFuncs)])(struct Sprite *); memcpy(callbacks, sCameraObjectFuncs, sizeof sCameraObjectFuncs); - callbacks[sprite->sState](sprite); + callbacks[sprite->sCamera_State](sprite); } -static void CameraObject_0(struct Sprite *sprite) +static void CameraObject_Init(struct Sprite *sprite) { - sprite->x = gSprites[sprite->sLinkedSpriteId].x; - sprite->y = gSprites[sprite->sLinkedSpriteId].y; + sprite->x = gSprites[sprite->sCamera_FollowSpriteId].x; + sprite->y = gSprites[sprite->sCamera_FollowSpriteId].y; sprite->invisible = TRUE; - sprite->sState = 1; - CameraObject_1(sprite); + sprite->sCamera_State = CAMERA_STATE_MOVE; + CameraObject_UpdateMove(sprite); } -static void CameraObject_1(struct Sprite *sprite) +static void CameraObject_UpdateMove(struct Sprite *sprite) { - s16 x = gSprites[sprite->sLinkedSpriteId].x; - s16 y = gSprites[sprite->sLinkedSpriteId].y; + s16 x = gSprites[sprite->sCamera_FollowSpriteId].x; + s16 y = gSprites[sprite->sCamera_FollowSpriteId].y; - sprite->data[2] = x - sprite->x; - sprite->data[3] = y - sprite->y; + sprite->sCamera_MoveX = x - sprite->x; + sprite->sCamera_MoveY = y - sprite->y; sprite->x = x; sprite->y = y; } -static void CameraObject_2(struct Sprite *sprite) +// Invisible sprite will continue to follow the parent sprite, +// but no corresponding camera movement will be shown. +static void CameraObject_UpdateFrozen(struct Sprite *sprite) { - sprite->x = gSprites[sprite->sLinkedSpriteId].x; - sprite->y = gSprites[sprite->sLinkedSpriteId].y; - sprite->data[2] = 0; - sprite->data[3] = 0; + sprite->x = gSprites[sprite->sCamera_FollowSpriteId].x; + sprite->y = gSprites[sprite->sCamera_FollowSpriteId].y; + sprite->sCamera_MoveX = 0; + sprite->sCamera_MoveY = 0; } static struct Sprite *FindCameraSprite(void) @@ -2264,51 +2272,43 @@ static struct Sprite *FindCameraSprite(void) return NULL; } -void CameraObjectReset1(void) +void CameraObjectReset(void) { - struct Sprite *camera; - - camera = FindCameraSprite(); + struct Sprite *camera = FindCameraSprite(); if (camera != NULL) { - camera->sState = 0; + camera->sCamera_State = CAMERA_STATE_INIT; camera->callback(camera); } } void CameraObjectSetFollowedSpriteId(u8 spriteId) { - struct Sprite *camera; - - camera = FindCameraSprite(); + struct Sprite *camera = FindCameraSprite(); if (camera != NULL) { - camera->sLinkedSpriteId = spriteId; - CameraObjectReset1(); + camera->sCamera_FollowSpriteId = spriteId; + CameraObjectReset(); } } static u8 UNUSED CameraObjectGetFollowedSpriteId(void) { - struct Sprite *camera; - - camera = FindCameraSprite(); + struct Sprite *camera = FindCameraSprite(); if (camera == NULL) return MAX_SPRITES; - return camera->sLinkedSpriteId; + return camera->sCamera_FollowSpriteId; } -void CameraObjectReset2(void) +void CameraObjectFreeze(void) { - // UB: Possible null dereference -#ifdef UBFIX struct Sprite *camera = FindCameraSprite(); - if (camera) - camera->sState = 2; -#else - FindCameraSprite()->sState = 2; -#endif // UBFIX +#ifdef UBFIX // Possible null dereference + if (camera == NULL) + return; +#endif + camera->sCamera_State = CAMERA_STATE_FROZEN; } u8 CopySprite(struct Sprite *sprite, s16 x, s16 y, u8 subpriority) diff --git a/src/field_camera.c b/src/field_camera.c index 3f7e29208c..31ebc63c05 100644 --- a/src/field_camera.c +++ b/src/field_camera.c @@ -331,8 +331,8 @@ static void CameraUpdateCallback(struct CameraObject *fieldCamera) { if (fieldCamera->spriteId != 0) { - fieldCamera->movementSpeedX = gSprites[fieldCamera->spriteId].data[2]; - fieldCamera->movementSpeedY = gSprites[fieldCamera->spriteId].data[3]; + fieldCamera->movementSpeedX = gSprites[fieldCamera->spriteId].sCamera_MoveX; + fieldCamera->movementSpeedY = gSprites[fieldCamera->spriteId].sCamera_MoveY; } } diff --git a/src/field_effect.c b/src/field_effect.c index 86f1ca97d2..4c82d0f0c4 100644 --- a/src/field_effect.c +++ b/src/field_effect.c @@ -1444,7 +1444,7 @@ static bool8 FallWarpEffect_Init(struct Task *task) struct Sprite *playerSprite; playerObject = &gObjectEvents[gPlayerAvatar.objectEventId]; playerSprite = &gSprites[gPlayerAvatar.spriteId]; - CameraObjectReset2(); + CameraObjectFreeze(); gObjectEvents[gPlayerAvatar.objectEventId].invisible = TRUE; gPlayerAvatar.preventStep = TRUE; ObjectEventSetHeldMovement(playerObject, GetFaceDirectionMovementAction(GetPlayerFacingDirection())); @@ -1540,7 +1540,7 @@ static bool8 FallWarpEffect_End(struct Task *task) { gPlayerAvatar.preventStep = FALSE; UnlockPlayerFieldControls(); - CameraObjectReset1(); + CameraObjectReset(); UnfreezeObjectEvents(); InstallCameraPanAheadCallback(); DestroyTask(FindTaskIdByFunc(Task_FallWarpFieldEffect)); @@ -1579,7 +1579,7 @@ static void Task_EscalatorWarpOut(u8 taskId) static bool8 EscalatorWarpOut_Init(struct Task *task) { FreezeObjectEvents(); - CameraObjectReset2(); + CameraObjectFreeze(); StartEscalator(task->tGoingUp); task->tState++; return FALSE; @@ -1711,7 +1711,7 @@ static bool8 EscalatorWarpIn_Init(struct Task *task) s16 x; s16 y; u8 behavior; - CameraObjectReset2(); + CameraObjectFreeze(); objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId]; ObjectEventSetHeldMovement(objectEvent, GetFaceDirectionMovementAction(DIR_EAST)); PlayerGetDestCoords(&x, &y); @@ -1811,7 +1811,7 @@ static bool8 EscalatorWarpIn_End(struct Task *task) objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId]; if (ObjectEventClearHeldMovementIfFinished(objectEvent)) { - CameraObjectReset1(); + CameraObjectReset(); UnlockPlayerFieldControls(); ObjectEventSetHeldMovement(objectEvent, GetWalkNormalMovementAction(DIR_EAST)); DestroyTask(FindTaskIdByFunc(Task_EscalatorWarpIn)); @@ -1957,7 +1957,7 @@ static void Task_LavaridgeGymB1FWarp(u8 taskId) static bool8 LavaridgeGymB1FWarpEffect_Init(struct Task *task, struct ObjectEvent *objectEvent, struct Sprite *sprite) { FreezeObjectEvents(); - CameraObjectReset2(); + CameraObjectFreeze(); SetCameraPanningCallback(NULL); gPlayerAvatar.preventStep = TRUE; objectEvent->fixedPriority = 1; @@ -2072,7 +2072,7 @@ static void Task_LavaridgeGymB1FWarpExit(u8 taskId) static bool8 LavaridgeGymB1FWarpExitEffect_Init(struct Task *task, struct ObjectEvent *objectEvent, struct Sprite *sprite) { - CameraObjectReset2(); + CameraObjectFreeze(); FreezeObjectEvents(); gPlayerAvatar.preventStep = TRUE; objectEvent->invisible = TRUE; @@ -2101,7 +2101,7 @@ static bool8 LavaridgeGymB1FWarpExitEffect_PopOut(struct Task *task, struct Obje { task->data[0]++; objectEvent->invisible = FALSE; - CameraObjectReset1(); + CameraObjectReset(); PlaySE(SE_M_DIG); ObjectEventSetHeldMovement(objectEvent, GetJumpMovementAction(DIR_EAST)); } @@ -2150,7 +2150,7 @@ static void Task_LavaridgeGym1FWarp(u8 taskId) static bool8 LavaridgeGym1FWarpEffect_Init(struct Task *task, struct ObjectEvent *objectEvent, struct Sprite *sprite) { FreezeObjectEvents(); - CameraObjectReset2(); + CameraObjectFreeze(); gPlayerAvatar.preventStep = TRUE; objectEvent->fixedPriority = 1; task->data[0]++; @@ -2370,7 +2370,7 @@ static void TeleportWarpOutFieldEffect_Init(struct Task *task) { LockPlayerFieldControls(); FreezeObjectEvents(); - CameraObjectReset2(); + CameraObjectFreeze(); task->data[15] = GetPlayerFacingDirection(); task->tState++; } @@ -2452,7 +2452,7 @@ static void FieldCallback_TeleportWarpIn(void) FreezeObjectEvents(); gFieldCallback = NULL; gObjectEvents[gPlayerAvatar.objectEventId].invisible = TRUE; - CameraObjectReset2(); + CameraObjectFreeze(); CreateTask(Task_TeleportWarpIn, 0); } @@ -2536,7 +2536,7 @@ static void TeleportWarpInFieldEffect_SpinGround(struct Task *task) if ((++task->data[2]) > 4 && task->data[14] == objectEvent->facingDirection) { UnlockPlayerFieldControls(); - CameraObjectReset1(); + CameraObjectReset(); UnfreezeObjectEvents(); DestroyTask(FindTaskIdByFunc(Task_TeleportWarpIn)); } @@ -3268,7 +3268,7 @@ static void FlyOutFieldEffect_FlyOffWithBird(struct Task *task) objectEvent->inanimate = FALSE; objectEvent->hasShadow = FALSE; SetFlyBirdPlayerSpriteId(task->tBirdSpriteId, objectEvent->spriteId); - CameraObjectReset2(); + CameraObjectFreeze(); task->tState++; } } @@ -3483,7 +3483,7 @@ static void FlyInFieldEffect_BirdSwoopDown(struct Task *task) SetSurfBlob_BobState(objectEvent->fieldEffectSpriteId, BOB_NONE); } ObjectEventSetGraphicsId(objectEvent, GetPlayerAvatarGraphicsIdByStateId(PLAYER_AVATAR_STATE_SURFING)); - CameraObjectReset2(); + CameraObjectFreeze(); ObjectEventTurn(objectEvent, DIR_WEST); StartSpriteAnim(&gSprites[objectEvent->spriteId], ANIM_GET_ON_OFF_POKEMON_WEST); objectEvent->invisible = FALSE; diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c index 5f4573c533..04aa5383bd 100644 --- a/src/field_player_avatar.c +++ b/src/field_player_avatar.c @@ -2093,7 +2093,7 @@ static void Task_DoPlayerSpinExit(u8 taskId) tSpeed = 1; tCurY = (u16)(sprite->y + sprite->y2) << 4; sprite->y2 = 0; - CameraObjectReset2(); + CameraObjectFreeze(); object->fixedPriority = TRUE; sprite->oam.priority = 0; sprite->subpriority = 0; @@ -2162,7 +2162,7 @@ static void Task_DoPlayerSpinEntrance(u8 taskId) tSubpriority = sprite->subpriority; tCurY = -((u16)sprite->y2 + 32) * 16; sprite->y2 = 0; - CameraObjectReset2(); + CameraObjectFreeze(); object->fixedPriority = TRUE; sprite->oam.priority = 1; sprite->subpriority = 0; @@ -2197,7 +2197,7 @@ static void Task_DoPlayerSpinEntrance(u8 taskId) object->fixedPriority = 0; sprite->oam.priority = tPriority; sprite->subpriority = tSubpriority; - CameraObjectReset1(); + CameraObjectReset(); DestroyTask(taskId); } break; From 9e67594dcea5f69c5dc264509a442bd43eba871e Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Fri, 8 Mar 2024 16:19:04 +0100 Subject: [PATCH 02/37] Simplify weirdly matching division/substraction code --- src/battle_anim_effects_2.c | 13 ++----------- src/battle_anim_fight.c | 2 +- src/battle_anim_rock.c | 9 +-------- src/battle_intro.c | 4 ++-- src/international_string_util.c | 5 +---- src/pokemon_animation.c | 19 +++++++------------ 6 files changed, 14 insertions(+), 38 deletions(-) mode change 100755 => 100644 src/battle_anim_effects_2.c diff --git a/src/battle_anim_effects_2.c b/src/battle_anim_effects_2.c old mode 100755 new mode 100644 index d26e0ba4c7..3d2e72cacb --- a/src/battle_anim_effects_2.c +++ b/src/battle_anim_effects_2.c @@ -3673,7 +3673,6 @@ static void AnimTask_UproarDistortion_Step(u8 taskId) static void AnimJaggedMusicNote(struct Sprite *sprite) { - int var1; u8 battler = !gBattleAnimArgs[0] ? gBattleAnimAttacker : gBattleAnimTarget; if (GetBattlerSide(battler) == B_SIDE_OPPONENT) @@ -3684,16 +3683,8 @@ static void AnimJaggedMusicNote(struct Sprite *sprite) sprite->data[0] = 0; sprite->data[1] = (u16)sprite->x << 3; sprite->data[2] = (u16)sprite->y << 3; - - var1 = gBattleAnimArgs[1] << 3; - if (var1 < 0) - var1 += 7; - sprite->data[3] = var1 >> 3; - - var1 = gBattleAnimArgs[2] << 3; - if (var1 < 0) - var1 += 7; - sprite->data[4] = var1 >> 3; + sprite->data[3] = (gBattleAnimArgs[1] << 3) / 8; + sprite->data[4] = (gBattleAnimArgs[2] << 3) / 8; sprite->oam.tileNum += gBattleAnimArgs[3] * 16; sprite->callback = AnimJaggedMusicNote_Step; diff --git a/src/battle_anim_fight.c b/src/battle_anim_fight.c index 764a951ef8..cbefb41f1e 100644 --- a/src/battle_anim_fight.c +++ b/src/battle_anim_fight.c @@ -493,7 +493,7 @@ static void AnimFistOrFootRandomPos(struct Sprite *sprite) y *= -1; if (GET_BATTLER_SIDE2(battler) == B_SIDE_PLAYER) - y += 0xFFF0; + y -= 16; sprite->x += x; sprite->y += y; diff --git a/src/battle_anim_rock.c b/src/battle_anim_rock.c index f9253675ca..bb8c3aa2f6 100644 --- a/src/battle_anim_rock.c +++ b/src/battle_anim_rock.c @@ -558,7 +558,6 @@ void AnimTask_Rollout(u8 taskId) { u16 var0, var1, var2, var3; u8 rolloutCounter; - int var5; s16 pan1, pan2; struct Task *task; @@ -582,13 +581,7 @@ void AnimTask_Rollout(u8 taskId) task->data[11] = 0; task->data[9] = 0; task->data[12] = 1; - - var5 = task->data[8]; - if (var5 < 0) - var5 += 7; - - task->data[10] = (var5 >> 3) - 1; - + task->data[10] = (task->data[8] / 8) - 1; task->data[2] = var0 * 8; task->data[3] = var1 * 8; task->data[4] = ((var2 - var0) * 8) / task->data[8]; diff --git a/src/battle_intro.c b/src/battle_intro.c index 5df697e3ae..571c5e85a2 100644 --- a/src/battle_intro.c +++ b/src/battle_intro.c @@ -196,12 +196,12 @@ static void BattleIntroSlide1(u8 taskId) { if (gTasks[taskId].tTerrain == BATTLE_TERRAIN_LONG_GRASS) { - if (gBattle_BG1_Y != 0xFFB0) + if (gBattle_BG1_Y != (u16)(-80)) gBattle_BG1_Y -= 2; } else { - if (gBattle_BG1_Y != 0xFFC8) + if (gBattle_BG1_Y != (u16)(-56)) gBattle_BG1_Y -= 1; } } diff --git a/src/international_string_util.c b/src/international_string_util.c index 457e3260be..6186bd116c 100644 --- a/src/international_string_util.c +++ b/src/international_string_util.c @@ -76,10 +76,7 @@ int Intl_GetListMenuWidth(const struct ListMenuTemplate *listMenu) } finalWidth = maxWidth + listMenu->item_X + 9; - if (finalWidth < 0) - finalWidth += 7; - - finalWidth >>= 3; + finalWidth /= 8; if (finalWidth > 28) finalWidth = 28; diff --git a/src/pokemon_animation.c b/src/pokemon_animation.c index 25c7778f8b..c5ef33878f 100644 --- a/src/pokemon_animation.c +++ b/src/pokemon_animation.c @@ -4969,29 +4969,24 @@ static void ShrinkGrowVibrate(struct Sprite *sprite) } else { - u8 posY_unsigned; - s8 posY_signed; - s32 posY; - s16 index = (u16)(sprite->data[2] % sprite->data[6] * 256) / sprite->data[6] % 256; + s8 sinY; + u16 y; + s16 index = ((u16)(sprite->data[2] % sprite->data[6] * 256) / sprite->data[6]) % 256; if (sprite->data[2] % 2 == 0) { sprite->data[4] = Sin(index, 32) + 256; sprite->data[5] = Sin(index, 32) + 256; - posY_unsigned = Sin(index, 32); - posY_signed = posY_unsigned; + sinY = Sin(index, 32); } else { sprite->data[4] = Sin(index, 8) + 256; sprite->data[5] = Sin(index, 8) + 256; - posY_unsigned = Sin(index, 8); - posY_signed = posY_unsigned; + sinY = Sin(index, 8); } - posY = posY_signed; - if (posY < 0) - posY += 7; - sprite->y2 = (u32)(posY) >> 3; + y = sinY / 8; + sprite->y2 = y; HandleSetAffineData(sprite, sprite->data[4], sprite->data[5], 0); } From 82f8636502afa4ed0960eb7457551538d38a5457 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sat, 9 Mar 2024 20:06:58 +0100 Subject: [PATCH 03/37] Simplify division in berry_crush and field weather functions --- src/berry_crush.c | 7 +------ src/field_weather.c | 7 +------ 2 files changed, 2 insertions(+), 12 deletions(-) mode change 100755 => 100644 src/berry_crush.c diff --git a/src/berry_crush.c b/src/berry_crush.c old mode 100755 new mode 100644 index 4e789f27a4..05e708162d --- a/src/berry_crush.c +++ b/src/berry_crush.c @@ -1373,7 +1373,6 @@ static void CreateBerrySprites(struct BerryCrushGame *game, struct BerryCrushGam u8 spriteId; s16 distance, var1; s16 *data; - s32 amplitude; s16 speed; u32 var2; @@ -1395,11 +1394,7 @@ static void CreateBerrySprites(struct BerryCrushGame *game, struct BerryCrushGam sYAccel = 32; sBitfield = 112; // Setting bits in MASK_TARGET_Y distance = gfx->playerCoords[i]->berryXDest - gfx->playerCoords[i]->berryXOffset; - amplitude = distance; - if (distance < 0) - amplitude += 3; - - sAmplitude = amplitude >> 2; + sAmplitude = distance / 4; distance *= 128; var2 = speed + 32; var2 = var2 / 2; diff --git a/src/field_weather.c b/src/field_weather.c index 5ca9075250..bc86bcdc7d 100644 --- a/src/field_weather.c +++ b/src/field_weather.c @@ -277,7 +277,6 @@ static void BuildColorMaps(void) u16 brightnessDelta; u16 colorMapIndex; u16 baseBrightness; - u32 remainingBrightness; s16 diff; sPaletteColorMapTypes = sBasePaletteColorMapTypes; @@ -305,11 +304,7 @@ static void BuildColorMaps(void) } baseBrightness = curBrightness; - remainingBrightness = 0x1f00 - curBrightness; - if ((0x1f00 - curBrightness) < 0) - remainingBrightness += 0xf; - - brightnessDelta = remainingBrightness / (NUM_WEATHER_COLOR_MAPS - 3); + brightnessDelta = (0x1f00 - curBrightness) / (NUM_WEATHER_COLOR_MAPS - 3); if (colorVal < 12) { // For shadows (color values < 12), the remaining color mappings are From 927f098cf5ea42fb67ed045cd00d13e772eb7a33 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Mon, 11 Mar 2024 01:41:07 -0300 Subject: [PATCH 04/37] Renamed setmodernfatefulencounter and checkmodernfatefulencounter for consistency reasons --- data/script_cmd_table.inc | 4 ++-- src/scrcmd.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/data/script_cmd_table.inc b/data/script_cmd_table.inc index f50ce5322b..e73a39a5dd 100644 --- a/data/script_cmd_table.inc +++ b/data/script_cmd_table.inc @@ -205,8 +205,8 @@ gScriptCmdTable:: .4byte ScrCmd_nop1 @ 0xca .4byte ScrCmd_nop1 @ 0xcb .4byte ScrCmd_nop1 @ 0xcc - .4byte ScrCmd_setmonmodernfatefulencounter @ 0xcd - .4byte ScrCmd_checkmonmodernfatefulencounter @ 0xce + .4byte ScrCmd_setmodernfatefulencounter @ 0xcd + .4byte ScrCmd_checkmodernfatefulencounter @ 0xce .4byte ScrCmd_trywondercardscript @ 0xcf .4byte ScrCmd_nop1 @ 0xd0 .4byte ScrCmd_warpspinenter @ 0xd1 diff --git a/src/scrcmd.c b/src/scrcmd.c index 147a11b869..218be539f5 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -2207,7 +2207,7 @@ bool8 ScrCmd_lockfortrainer(struct ScriptContext *ctx) } // This command will set a Pokémon's modernFatefulEncounter bit; there is no similar command to clear it. -bool8 ScrCmd_setmonmodernfatefulencounter(struct ScriptContext *ctx) +bool8 ScrCmd_setmodernfatefulencounter(struct ScriptContext *ctx) { bool8 isModernFatefulEncounter = TRUE; u16 partyIndex = VarGet(ScriptReadHalfword(ctx)); @@ -2216,7 +2216,7 @@ bool8 ScrCmd_setmonmodernfatefulencounter(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_checkmonmodernfatefulencounter(struct ScriptContext *ctx) +bool8 ScrCmd_checkmodernfatefulencounter(struct ScriptContext *ctx) { u16 partyIndex = VarGet(ScriptReadHalfword(ctx)); From 6abd75b05543bdad9b3f9a17dd878b8ba50ae8f2 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Tue, 26 Mar 2024 17:23:57 +0100 Subject: [PATCH 05/37] fix broken battle arena gfx (#4307) --- src/battle_main.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/battle_main.c b/src/battle_main.c index e023080d3e..24e3627e59 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -3250,6 +3250,17 @@ static void BattleMainCB1(void) gBattlerControllerFuncs[battler](battler); } +static void ClearSetBScriptingStruct(void) +{ + // windowsType is set up earlier in BattleInitBgsAndWindows, so we need to save the value + u32 temp = gBattleScripting.windowsType; + memset(&gBattleScripting, 0, sizeof(gBattleScripting)); + + gBattleScripting.windowsType = temp; + gBattleScripting.battleStyle = gSaveBlock2Ptr->optionsBattleStyle; + gBattleScripting.expOnCatch = (B_EXP_CATCH >= GEN_6); +} + static void BattleStartClearSetData(void) { s32 i; @@ -3263,10 +3274,7 @@ static void BattleStartClearSetData(void) memset(&gSideTimers, 0, sizeof(gSideTimers)); memset(&gWishFutureKnock, 0, sizeof(gWishFutureKnock)); memset(&gBattleResults, 0, sizeof(gBattleResults)); - memset(&gBattleScripting, 0, sizeof(gBattleScripting)); - - gBattleScripting.battleStyle = gSaveBlock2Ptr->optionsBattleStyle; - gBattleScripting.expOnCatch = (B_EXP_CATCH >= GEN_6); + ClearSetBScriptingStruct(); for (i = 0; i < MAX_BATTLERS_COUNT; i++) { From 4a8551247adc84fe30073ff25657f318ba0368f0 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Fri, 29 Mar 2024 11:33:28 +0100 Subject: [PATCH 06/37] Fix Z mirror move (#4308) --- include/battle_z_move.h | 1 + src/battle_script_commands.c | 12 +++++++++++- src/battle_util.c | 17 +++++++++++++---- src/battle_z_move.c | 3 +-- 4 files changed, 26 insertions(+), 7 deletions(-) diff --git a/include/battle_z_move.h b/include/battle_z_move.h index 697bfa676c..92fb685b2f 100644 --- a/include/battle_z_move.h +++ b/include/battle_z_move.h @@ -21,6 +21,7 @@ void CreateZMoveTriggerSprite(u8, bool8); void HideZMoveTriggerSprite(void); bool32 IsZMoveTriggerSpriteActive(void); void DestroyZMoveTriggerSprite(void); +u16 GetTypeBasedZMove(u16 move, u8 battler); bool32 MoveSelectionDisplayZMove(u16 zmove, u32 battler); void SetZEffect(void); bool32 IsZMoveUsable(u8 battler, u16 moveIndex); diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index e3c6b2f7a5..c4d67e7024 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -10981,7 +10981,17 @@ static void Cmd_tryhealhalfhealth(void) static void SetMoveForMirrorMove(u32 move) { gHitMarker &= ~HITMARKER_ATTACKSTRING_PRINTED; - gCurrentMove = move; + // Edge case, we used Z Mirror Move, got the stat boost and now need to use the Z-move + if (gBattleStruct->zmove.toBeUsed[gBattlerAttacker] && !IS_MOVE_STATUS(move)) + { + gCurrentMove = gBattleStruct->zmove.chosenZMove = GetTypeBasedZMove(move, gBattlerAttacker); + QueueZMove(gBattlerAttacker, move); + } + else + { + gCurrentMove = move; + } + SetAtkCancellerForCalledMove(); gBattlerTarget = GetMoveTarget(gCurrentMove, NO_TARGET_OVERRIDE); gBattlescriptCurrInstr = GET_MOVE_BATTLESCRIPT(gCurrentMove); diff --git a/src/battle_util.c b/src/battle_util.c index 523026f8eb..08562e4295 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -3518,6 +3518,9 @@ u8 AtkCanceller_UnableToUseMove(u32 moveType) case CANCELLER_Z_MOVES: if (gBattleStruct->zmove.toBeUsed[gBattlerAttacker] != MOVE_NONE) { + // For Z-Mirror Move, so it doesn't play the animation twice. + bool32 alreadyUsed = (gBattleStruct->zmove.used[gBattlerAttacker] == TRUE); + //attacker has a queued z move gBattleStruct->zmove.active = TRUE; gBattleStruct->zmove.activeCategory = gBattleStruct->zmove.categories[gBattlerAttacker]; @@ -3530,13 +3533,19 @@ u8 AtkCanceller_UnableToUseMove(u32 moveType) if (gBattleStruct->zmove.activeCategory == DAMAGE_CATEGORY_STATUS) { gBattleStruct->zmove.effect = gMovesInfo[gBattleStruct->zmove.baseMoves[gBattlerAttacker]].zMove.effect; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_ZMoveActivateStatus; + if (!alreadyUsed) + { + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_ZMoveActivateStatus; + } } else { - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_ZMoveActivateDamaging; + if (!alreadyUsed) + { + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_ZMoveActivateDamaging; + } } effect = 1; } diff --git a/src/battle_z_move.c b/src/battle_z_move.c index b65f017f19..203185cfdc 100644 --- a/src/battle_z_move.c +++ b/src/battle_z_move.c @@ -47,7 +47,6 @@ // Function Declarations static void SpriteCB_ZMoveTrigger(struct Sprite *sprite); static u16 GetSignatureZMove(u16 move, u16 species, u16 item); -static u16 GetTypeBasedZMove(u16 move, u8 battler); static void ZMoveSelectionDisplayPpNumber(u32 battler); static void ZMoveSelectionDisplayPower(u16 move, u16 zMove); static void ShowZMoveTriggerSprite(u8 battleId); @@ -376,7 +375,7 @@ static u16 GetSignatureZMove(u16 move, u16 species, u16 item) return MOVE_NONE; } -static u16 GetTypeBasedZMove(u16 move, u8 battler) +u16 GetTypeBasedZMove(u16 move, u8 battler) { u8 moveType = gMovesInfo[move].type; From 9527f1e1751fee53ff0a026b04bc1a0d0d45050a Mon Sep 17 00:00:00 2001 From: Bassoonian Date: Fri, 29 Mar 2024 15:31:28 +0100 Subject: [PATCH 07/37] Fix formatting of plates --- src/battle_main.c | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/src/battle_main.c b/src/battle_main.c index 24e3627e59..2f3754665a 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -323,7 +323,7 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = //.berry = ITEM_CHOPLE_BERRY, //.gem = ITEM_FIGHTING_GEM, //.zCrystal = ITEM_FIGHTINIUM_Z, - //.plate= ITEM_FIST_PLATE, + //.plate = ITEM_FIST_PLATE, //.memory = ITEM_FIGHTING_MEMORY, //.teraShard = ITEM_FIGHTING_TERA_SHARD, //.arceusForm = SPECIES_ARCEUS_FIGHTING, @@ -339,7 +339,7 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = //.berry = ITEM_COBA_BERRY, //.gem = ITEM_FLYING_GEM, //.zCrystal = ITEM_FLYINIUM_Z, - //.plate= ITEM_SKY_PLATE, + //.plate = ITEM_SKY_PLATE, //.memory = ITEM_FLYING_MEMORY, //.teraShard = ITEM_FLYING_TERA_SHARD, //.arceusForm = SPECIES_ARCEUS_FLYING, @@ -355,7 +355,7 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = //.berry = ITEM_KEBIA_BERRY, //.gem = ITEM_POISON_GEM, //.zCrystal = ITEM_POISONIUM_Z, - //.plate= ITEM_TOXIC_PLATE, + //.plate = ITEM_TOXIC_PLATE, //.memory = ITEM_POISON_MEMORY, //.teraShard = ITEM_POISON_TERA_SHARD, //.arceusForm = SPECIES_ARCEUS_POISON, @@ -371,7 +371,7 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = //.berry = ITEM_SHUCA_BERRY, //.gem = ITEM_GROUND_GEM, //.zCrystal = ITEM_GROUNDIUM_Z, - //.plate= ITEM_EARTH_PLATE, + //.plate = ITEM_EARTH_PLATE, //.memory = ITEM_GROUND_MEMORY, //.teraShard = ITEM_GROUND_TERA_SHARD, //.arceusForm = SPECIES_ARCEUS_GROUND, @@ -387,7 +387,7 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = //.berry = ITEM_CHARTI_BERRY, //.gem = ITEM_ROCK_GEM, //.zCrystal = ITEM_ROCKIUM_Z, - //.plate= ITEM_STONE_PLATE, + //.plate = ITEM_STONE_PLATE, //.memory = ITEM_ROCK_MEMORY, //.teraShard = ITEM_ROCK_TERA_SHARD, //.arceusForm = SPECIES_ARCEUS_ROCK, @@ -403,7 +403,7 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = //.berry = ITEM_TANGA_BERRY, //.gem = ITEM_BUG_GEM, //.zCrystal = ITEM_BUGINIUM_Z, - //.plate= ITEM_INSECT_PLATE, + //.plate = ITEM_INSECT_PLATE, //.memory = ITEM_BUG_MEMORY, //.teraShard = ITEM_BUG_TERA_SHARD, //.arceusForm = SPECIES_ARCEUS_BUG, @@ -419,7 +419,7 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = //.berry = ITEM_KASIB_BERRY, //.gem = ITEM_GHOST_GEM, //.zCrystal = ITEM_GHOSTIUM_Z, - //.plate= ITEM_SPOOKY_PLATE, + //.plate = ITEM_SPOOKY_PLATE, //.memory = ITEM_GHOST_MEMORY, //.teraShard = ITEM_GHOST_TERA_SHARD, //.arceusForm = SPECIES_ARCEUS_GHOST, @@ -435,7 +435,7 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = //.berry = ITEM_BABIRI_BERRY, //.gem = ITEM_STEEL_GEM, //.zCrystal = ITEM_STEELIUM_Z, - //.plate= ITEM_IRON_PLATE, + //.plate = ITEM_IRON_PLATE, //.memory = ITEM_STEEL_MEMORY, //.teraShard = ITEM_STEEL_TERA_SHARD, //.arceusForm = SPECIES_ARCEUS_STEEL, @@ -457,7 +457,7 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = //.berry = ITEM_OCCA_BERRY, //.gem = ITEM_FIRE_GEM, //.zCrystal = ITEM_FIRIUM_Z, - //.plate= ITEM_FLAME_PLATE, + //.plate = ITEM_FLAME_PLATE, //.memory = ITEM_FIRE_MEMORY, //.teraShard = ITEM_FIRE_TERA_SHARD, //.arceusForm = SPECIES_ARCEUS_FIRE, @@ -473,7 +473,7 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = //.berry = ITEM_PASSHO_BERRY, //.gem = ITEM_WATER_GEM, //.zCrystal = ITEM_WATERIUM_Z, - //.plate= ITEM_SPLASH_PLATE, + //.plate = ITEM_SPLASH_PLATE, //.memory = ITEM_WATER_MEMORY, //.teraShard = ITEM_WATER_TERA_SHARD, //.arceusForm = SPECIES_ARCEUS_WATER, @@ -489,7 +489,7 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = //.berry = ITEM_RINDO_BERRY, //.gem = ITEM_GRASS_GEM, //.zCrystal = ITEM_GRASSIUM_Z, - //.plate= ITEM_MEADOW_PLATE, + //.plate = ITEM_MEADOW_PLATE, //.memory = ITEM_GRASS_MEMORY, //.teraShard = ITEM_GRASS_TERA_SHARD, //.arceusForm = SPECIES_ARCEUS_GRASS, @@ -505,7 +505,7 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = //.berry = ITEM_WACAN_BERRY, //.gem = ITEM_ELECTRIC_GEM, //.zCrystal = ITEM_ELECTRIUM_Z, - //.plate= ITEM_ZAP_PLATE, + //.plate = ITEM_ZAP_PLATE, //.memory = ITEM_ELECTRIC_MEMORY, //.teraShard = ITEM_ELECTRIC_TERA_SHARD, //.arceusForm = SPECIES_ARCEUS_ELECTRIC, @@ -521,7 +521,7 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = //.berry = ITEM_PAYAPA_BERRY, //.gem = ITEM_PSYCHIC_GEM, //.zCrystal = ITEM_PSYCHIUM_Z, - //.plate= ITEM_MIND_PLATE, + //.plate = ITEM_MIND_PLATE, //.memory = ITEM_PSYCHIC_MEMORY, //.teraShard = ITEM_PSYCHIC_TERA_SHARD, //.arceusForm = SPECIES_ARCEUS_PSYCHIC, @@ -537,7 +537,7 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = //.berry = ITEM_YACHE_BERRY, //.gem = ITEM_ICE_GEM, //.zCrystal = ITEM_ICIUM_Z, - //.plate= ITEM_ICICLE_PLATE, + //.plate = ITEM_ICICLE_PLATE, //.memory = ITEM_ICE_MEMORY, //.teraShard = ITEM_ICE_TERA_SHARD, //.arceusForm = SPECIES_ARCEUS_ICE, @@ -553,7 +553,7 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = //.berry = ITEM_HABAN_BERRY, //.gem = ITEM_DRAGON_GEM, //.zCrystal = ITEM_DRAGONIUM_Z, - //.plate= ITEM_DRACO_PLATE, + //.plate = ITEM_DRACO_PLATE, //.memory = ITEM_DRAGON_MEMORY, //.teraShard = ITEM_DRAGON_TERA_SHARD, //.arceusForm = SPECIES_ARCEUS_DRAGON, @@ -569,7 +569,7 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = //.berry = ITEM_COLBUR_BERRY, //.gem = ITEM_DARK_GEM, //.zCrystal = ITEM_DARKINIUM_Z, - //.plate= ITEM_DREAD_PLATE, + //.plate = ITEM_DREAD_PLATE, //.memory = ITEM_DARK_MEMORY, //.teraShard = ITEM_DARK_TERA_SHARD, //.arceusForm = SPECIES_ARCEUS_DARK, @@ -585,7 +585,7 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = //.berry = ITEM_ROSELI_BERRY, //.gem = ITEM_FAIRY_GEM, //.zCrystal = ITEM_FAIRIUM_Z, - //.plate= ITEM_PIXIE_PLATE, + //.plate = ITEM_PIXIE_PLATE, //.memory = ITEM_FAIRY_MEMORY, //.teraShard = ITEM_FAIRY_TERA_SHARD, //.arceusForm = SPECIES_ARCEUS_FAIRY, From 46e6324fe2b8b10d36f8a9fafdea87ca862c92a7 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Fri, 29 Mar 2024 17:43:05 +0100 Subject: [PATCH 08/37] Fix White Herb Known Failing tests (#4258) * Fix White Herb Known Failing tests * get out agbcc * remove unneeded white herb test --- asm/macros/battle_script.inc | 5 + data/battle_scripts_1.s | 17 +- include/battle_util.h | 1 + include/constants/battle_script_commands.h | 6 +- src/battle_script_commands.c | 252 +++++++++++++-------- src/battle_util.c | 74 +++--- test/battle/hold_effect/white_herb.c | 74 ++---- 7 files changed, 229 insertions(+), 200 deletions(-) diff --git a/asm/macros/battle_script.inc b/asm/macros/battle_script.inc index d2a8115089..561ea6d146 100644 --- a/asm/macros/battle_script.inc +++ b/asm/macros/battle_script.inc @@ -1360,6 +1360,11 @@ .byte \battler .4byte \jumpInstr .endm + + .macro itemstatchangeeffects battler:req + callnative BS_RunStatChangeItems + .byte \battler + .endm .macro allyswitchswapbattlers callnative BS_AllySwitchSwapBattler diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index a23423b42e..508366e9b7 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -7742,11 +7742,12 @@ BattleScript_ActivateWeatherAbilities_Increment: restoretarget return -BattleScript_TryAdrenalineOrb: - jumpifnoholdeffect BS_TARGET, HOLD_EFFECT_ADRENALINE_ORB, BattleScript_TryAdrenalineOrbRet - jumpifstat BS_TARGET, CMP_EQUAL, STAT_SPEED, 12, BattleScript_TryAdrenalineOrbRet +BattleScript_TryIntimidateHoldEffects: + itemstatchangeeffects BS_TARGET + jumpifnoholdeffect BS_TARGET, HOLD_EFFECT_ADRENALINE_ORB, BattleScript_TryIntimidateHoldEffectsRet + jumpifstat BS_TARGET, CMP_EQUAL, STAT_SPEED, 12, BattleScript_TryIntimidateHoldEffectsRet setstatchanger STAT_SPEED, 1, FALSE - statbuffchange STAT_CHANGE_NOT_PROTECT_AFFECTED | MOVE_EFFECT_CERTAIN | STAT_CHANGE_ALLOW_PTR, BattleScript_TryAdrenalineOrbRet + statbuffchange STAT_CHANGE_NOT_PROTECT_AFFECTED | MOVE_EFFECT_CERTAIN | STAT_CHANGE_ALLOW_PTR, BattleScript_TryIntimidateHoldEffectsRet playanimation BS_TARGET, B_ANIM_HELD_ITEM_EFFECT setgraphicalstatchangevalues playanimation BS_TARGET, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1 @@ -7755,7 +7756,7 @@ BattleScript_TryAdrenalineOrb: printstring STRINGID_USINGITEMSTATOFPKMNROSE waitmessage B_WAIT_TIME_LONG removeitem BS_TARGET -BattleScript_TryAdrenalineOrbRet: +BattleScript_TryIntimidateHoldEffectsRet: return BattleScript_IntimidateActivates:: @@ -7781,7 +7782,7 @@ BattleScript_IntimidateEffect: BattleScript_IntimidateEffect_WaitString: waitmessage B_WAIT_TIME_LONG copybyte sBATTLER, gBattlerTarget - call BattleScript_TryAdrenalineOrb + call BattleScript_TryIntimidateHoldEffects BattleScript_IntimidateLoopIncrement: addbyte gBattlerTarget, 1 jumpifbytenotequal gBattlerTarget, gBattlersCount, BattleScript_IntimidateLoop @@ -7807,7 +7808,7 @@ BattleScript_IntimidateInReverse: call BattleScript_AbilityPopUpTarget pause B_WAIT_TIME_SHORT modifybattlerstatstage BS_TARGET, STAT_ATK, INCREASE, 1, BattleScript_IntimidateLoopIncrement, ANIM_ON - call BattleScript_TryAdrenalineOrb + call BattleScript_TryIntimidateHoldEffects goto BattleScript_IntimidateLoopIncrement BattleScript_SupersweetSyrupActivates:: @@ -7834,7 +7835,7 @@ BattleScript_SupersweetSyrupEffect: BattleScript_SupersweetSyrupEffect_WaitString: waitmessage B_WAIT_TIME_LONG copybyte sBATTLER, gBattlerTarget - call BattleScript_TryAdrenalineOrb + call BattleScript_TryIntimidateHoldEffects BattleScript_SupersweetSyrupLoopIncrement: addbyte gBattlerTarget, 1 jumpifbytenotequal gBattlerTarget, gBattlersCount, BattleScript_SupersweetSyrupLoop diff --git a/include/battle_util.h b/include/battle_util.h index 8606e7ae0b..13e03c58dd 100644 --- a/include/battle_util.h +++ b/include/battle_util.h @@ -54,6 +54,7 @@ #define ITEMEFFECT_ORBS 6 #define ITEMEFFECT_LIFEORB_SHELLBELL 7 #define ITEMEFFECT_USE_LAST_ITEM 8 // move end effects for just the battler, not whole field +#define ITEMEFFECT_STATS_CHANGED 9 // For White Herb and Eject Pack #define WEATHER_HAS_EFFECT ((!IsAbilityOnField(ABILITY_CLOUD_NINE) && !IsAbilityOnField(ABILITY_AIR_LOCK))) diff --git a/include/constants/battle_script_commands.h b/include/constants/battle_script_commands.h index 6d635fe848..641e644ebc 100644 --- a/include/constants/battle_script_commands.h +++ b/include/constants/battle_script_commands.h @@ -304,9 +304,9 @@ #define MOVEEND_DEFROST 23 #define MOVEEND_RECOIL 24 #define MOVEEND_MAGICIAN 25 // Occurs after final multi-hit strike, and after other items/abilities would activate -#define MOVEEND_EJECT_BUTTON 26 -#define MOVEEND_RED_CARD 27 -#define MOVEEND_EJECT_PACK 28 +#define MOVEEND_EJECT_ITEMS 26 +#define MOVEEND_WHITE_HERB 27 +#define MOVEEND_RED_CARD 28 #define MOVEEND_LIFEORB_SHELLBELL 29 // Includes shell bell, throat spray, etc #define MOVEEND_CHANGED_ITEMS 30 #define MOVEEND_PICKPOCKET 31 diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index c4d67e7024..f3d739e782 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -5870,31 +5870,7 @@ static void Cmd_moveend(void) } gBattleScripting.moveendState++; break; - case MOVEEND_MAGICIAN: - if (GetBattlerAbility(gBattlerAttacker) == ABILITY_MAGICIAN - && gCurrentMove != MOVE_FLING && gCurrentMove != MOVE_NATURAL_GIFT - && gBattleMons[gBattlerAttacker].item == ITEM_NONE - && gBattleMons[gBattlerTarget].item != ITEM_NONE - && IsBattlerAlive(gBattlerAttacker) - && TARGET_TURN_DAMAGED - && CanStealItem(gBattlerAttacker, gBattlerTarget, gBattleMons[gBattlerTarget].item) - && !gSpecialStatuses[gBattlerAttacker].gemBoost // In base game, gems are consumed after magician would activate. - && !(gWishFutureKnock.knockedOffMons[GetBattlerSide(gBattlerTarget)] & gBitTable[gBattlerPartyIndexes[gBattlerTarget]]) - && !DoesSubstituteBlockMove(gBattlerAttacker, gBattlerTarget, gCurrentMove) - && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) - && (GetBattlerAbility(gBattlerTarget) != ABILITY_STICKY_HOLD || !IsBattlerAlive(gBattlerTarget))) - { - StealTargetItem(gBattlerAttacker, gBattlerTarget); - gBattleScripting.battler = gBattlerAbility = gBattlerAttacker; - gEffectBattler = gBattlerTarget; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_MagicianActivates; - gSpecialStatuses[gBattlerAttacker].preventLifeOrbDamage = TRUE; - effect = TRUE; - } - gBattleScripting.moveendState++; - break; - case MOVEEND_NEXT_TARGET: // For moves hitting two opposing Pokémon. + case MOVEEND_NEXT_TARGET: // For moves hitting two opposing Pokemon. { u16 moveTarget = GetBattlerMoveTargetType(gBattlerAttacker, gCurrentMove); // Set a flag if move hits either target (for throat spray that can't check damage) @@ -6014,98 +5990,165 @@ static void Cmd_moveend(void) gBattleScripting.moveendState++; break; } - case MOVEEND_EJECT_BUTTON: - if (gMovesInfo[gCurrentMove].effect != EFFECT_HIT_SWITCH_TARGET + // The order of abilities/items activating after moves hitting multiple targets is + // 1. Magician + // 2. The fastest mon gets switched out using Eject Button / Eject Pack + // 3. White Herb activates + // 4. Red Card activates + // 5. Life Orb / Shell Bell + // 6. Pickpocket + case MOVEEND_MAGICIAN: + if (GetBattlerAbility(gBattlerAttacker) == ABILITY_MAGICIAN + && gCurrentMove != MOVE_FLING && gCurrentMove != MOVE_NATURAL_GIFT + && gBattleMons[gBattlerAttacker].item == ITEM_NONE + && gBattleMons[gBattlerTarget].item != ITEM_NONE && IsBattlerAlive(gBattlerAttacker) - && !TestIfSheerForceAffected(gBattlerAttacker, gCurrentMove) - && (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER || (gBattleTypeFlags & BATTLE_TYPE_TRAINER))) + && TARGET_TURN_DAMAGED + && CanStealItem(gBattlerAttacker, gBattlerTarget, gBattleMons[gBattlerTarget].item) + && !gSpecialStatuses[gBattlerAttacker].gemBoost // In base game, gems are consumed after magician would activate. + && !(gWishFutureKnock.knockedOffMons[GetBattlerSide(gBattlerTarget)] & gBitTable[gBattlerPartyIndexes[gBattlerTarget]]) + && !DoesSubstituteBlockMove(gBattlerAttacker, gBattlerTarget, gCurrentMove) + && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) + && (GetBattlerAbility(gBattlerTarget) != ABILITY_STICKY_HOLD || !IsBattlerAlive(gBattlerTarget))) { - // Since we check if battler was damaged, we don't need to check move result. - // In fact, doing so actually prevents multi-target moves from activating eject button properly - u8 battlers[4] = {0, 1, 2, 3}; - SortBattlersBySpeed(battlers, FALSE); + StealTargetItem(gBattlerAttacker, gBattlerTarget); + gBattleScripting.battler = gBattlerAbility = gBattlerAttacker; + gEffectBattler = gBattlerTarget; + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_MagicianActivates; + gSpecialStatuses[gBattlerAttacker].preventLifeOrbDamage = TRUE; + effect = TRUE; + } + gBattleScripting.moveendState++; + break; + case MOVEEND_EJECT_ITEMS: + { + // Because sorting the battlers by speed takes lots of cycles, it's better to just check if any of the battlers has the Eject items. + u32 ejectPackBattlers = 0, ejectButtonBattlers = 0, i; for (i = 0; i < gBattlersCount; i++) { - u8 battler = battlers[i]; - // Attacker is the damage-dealer, battler is mon to be switched out - if (IsBattlerAlive(battler) - && gBattlerAttacker != battler - && GetBattlerHoldEffect(battler, TRUE) == HOLD_EFFECT_EJECT_BUTTON - && BATTLER_TURN_DAMAGED(battler) - && CountUsablePartyMons(battler) > 0) // Has mon to switch into + u32 holdEffect; + if (i == gBattlerAttacker) + continue; + holdEffect = GetBattlerHoldEffect(i, TRUE); + if (holdEffect == HOLD_EFFECT_EJECT_BUTTON) + ejectButtonBattlers |= gBitTable[i]; + else if (holdEffect == HOLD_EFFECT_EJECT_PACK) + ejectPackBattlers |= gBitTable[i]; + } + if (ejectButtonBattlers || ejectPackBattlers) + { + u8 battlers[4] = {0, 1, 2, 3}; + SortBattlersBySpeed(battlers, FALSE); + + for (i = 0; i < gBattlersCount; i++) { - gBattleScripting.battler = battler; - gLastUsedItem = gBattleMons[battler].item; - if (gMovesInfo[gCurrentMove].effect == EFFECT_HIT_ESCAPE) - gBattlescriptCurrInstr = BattleScript_MoveEnd; // Prevent user switch-in selection - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_EjectButtonActivates; - effect = TRUE; - break; // Only the fastest Eject Button activates + u32 battler = battlers[i]; + + if (ejectButtonBattlers & gBitTable[battler]) + { + if (TestIfSheerForceAffected(gBattlerAttacker, gCurrentMove)) // Apparently Sheer Force blocks Eject Button, but not Eject Pack + continue; + // Since we check if battler was damaged, we don't need to check move result. + // In fact, doing so actually prevents multi-target moves from activating eject button properly + if (!BATTLER_TURN_DAMAGED(battler)) + continue; + } + else if (ejectPackBattlers & gBitTable[battler]) + { + if (!gProtectStructs[battler].statFell || gProtectStructs[battler].disableEjectPack) + continue; + } + else + { + continue; + } + + if (IsBattlerAlive(battler) + && CountUsablePartyMons(battler) > 0 // Has mon to switch into + // Does not activate if attacker used Parting Shot and can switch out + && !(gMovesInfo[gCurrentMove].effect == EFFECT_HIT_SWITCH_TARGET && CanBattlerSwitch(gBattlerAttacker)) + ) + { + gBattleScripting.battler = battler; + gLastUsedItem = gBattleMons[battler].item; + if (gMovesInfo[gCurrentMove].effect == EFFECT_HIT_ESCAPE) + gBattlescriptCurrInstr = BattleScript_MoveEnd; // Prevent user switch-in selection + effect = TRUE; + BattleScriptPushCursor(); + if (ejectButtonBattlers & gBitTable[battler]) + { + gBattlescriptCurrInstr = BattleScript_EjectButtonActivates; + } + else // Eject Pack + { + gBattlescriptCurrInstr = BattleScript_EjectPackActivates; + // Are these 2 lines below needed? + gProtectStructs[battler].statFell = FALSE; + gSpecialStatuses[gBattlerAttacker].preventLifeOrbDamage = TRUE; + } + break; // Only the fastest Eject item activates + } } } } gBattleScripting.moveendState++; break; + case MOVEEND_WHITE_HERB: + for (i = 0; i < gBattlersCount; i++) + { + if (IsBattlerAlive(i) + && ItemBattleEffects(ITEMEFFECT_STATS_CHANGED, i, FALSE)) + { + effect = TRUE; + break; + } + } + if (!effect) + gBattleScripting.moveendState++; + break; case MOVEEND_RED_CARD: - if ((gMovesInfo[gCurrentMove].effect != EFFECT_HIT_SWITCH_TARGET || gBattleStruct->hitSwitchTargetFailed) - && IsBattlerAlive(gBattlerAttacker) - && !TestIfSheerForceAffected(gBattlerAttacker, gCurrentMove) - && GetBattlerAbility(gBattlerAttacker) != ABILITY_GUARD_DOG) { - // Since we check if battler was damaged, we don't need to check move result. - // In fact, doing so actually prevents multi-target moves from activating red card properly - u8 battlers[4] = {0, 1, 2, 3}; - SortBattlersBySpeed(battlers, FALSE); + u32 redCardBattlers = 0, i; for (i = 0; i < gBattlersCount; i++) { - u8 battler = battlers[i]; - // Search for fastest hit pokemon with a red card - // Attacker is the one to be switched out, battler is one with red card - if (battler != gBattlerAttacker - && IsBattlerAlive(battler) - && !DoesSubstituteBlockMove(gBattlerAttacker, battler, gCurrentMove) - && GetBattlerHoldEffect(battler, TRUE) == HOLD_EFFECT_RED_CARD - && BATTLER_TURN_DAMAGED(battler) - && CanBattlerSwitch(gBattlerAttacker)) - { - gLastUsedItem = gBattleMons[battler].item; - gBattleStruct->savedBattlerTarget = gBattleScripting.battler = battler; // Battler with red card - gEffectBattler = gBattlerAttacker; - if (gMovesInfo[gCurrentMove].effect == EFFECT_HIT_ESCAPE) - gBattlescriptCurrInstr = BattleScript_MoveEnd; // Prevent user switch-in selection - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_RedCardActivates; - gSpecialStatuses[gBattlerAttacker].preventLifeOrbDamage = TRUE; - effect = TRUE; - break; // Only fastest red card activates - } + if (i == gBattlerAttacker) + continue; + if (GetBattlerHoldEffect(i, TRUE) == HOLD_EFFECT_RED_CARD) + redCardBattlers |= gBitTable[i]; } - } - gBattleScripting.moveendState++; - break; - case MOVEEND_EJECT_PACK: - { - u8 battlers[4] = {0, 1, 2, 3}; - SortBattlersBySpeed(battlers, FALSE); - for (i = 0; i < gBattlersCount; i++) + if (redCardBattlers + && (gMovesInfo[gCurrentMove].effect != EFFECT_HIT_SWITCH_TARGET || gBattleStruct->hitSwitchTargetFailed) + && IsBattlerAlive(gBattlerAttacker) + && !TestIfSheerForceAffected(gBattlerAttacker, gCurrentMove) + && GetBattlerAbility(gBattlerAttacker) != ABILITY_GUARD_DOG) { - u8 battler = battlers[i]; - if (IsBattlerAlive(battler) - && gProtectStructs[battler].statFell - && gProtectStructs[battler].disableEjectPack == 0 - && GetBattlerHoldEffect(battler, TRUE) == HOLD_EFFECT_EJECT_PACK - && !(gCurrentMove == MOVE_PARTING_SHOT && CanBattlerSwitch(gBattlerAttacker)) // Does not activate if attacker used Parting Shot and can switch out - && CountUsablePartyMons(battler) > 0) // Has mon to switch into + // Since we check if battler was damaged, we don't need to check move result. + // In fact, doing so actually prevents multi-target moves from activating red card properly + u8 battlers[4] = {0, 1, 2, 3}; + SortBattlersBySpeed(battlers, FALSE); + for (i = 0; i < gBattlersCount; i++) { - gProtectStructs[battler].statFell = FALSE; - gBattleScripting.battler = battler; - gLastUsedItem = gBattleMons[battler].item; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_EjectPackActivates; - gSpecialStatuses[gBattlerAttacker].preventLifeOrbDamage = TRUE; - effect = TRUE; - break; // Only fastest eject pack activates + u32 battler = battlers[i]; + // Search for fastest hit pokemon with a red card + // Attacker is the one to be switched out, battler is one with red card + if (redCardBattlers & gBitTable[battler] + && IsBattlerAlive(battler) + && !DoesSubstituteBlockMove(gBattlerAttacker, battler, gCurrentMove) + && BATTLER_TURN_DAMAGED(battler) + && CanBattlerSwitch(gBattlerAttacker)) + { + gLastUsedItem = gBattleMons[battler].item; + gBattleStruct->savedBattlerTarget = gBattleScripting.battler = battler; // Battler with red card + gEffectBattler = gBattlerAttacker; + if (gMovesInfo[gCurrentMove].effect == EFFECT_HIT_ESCAPE) + gBattlescriptCurrInstr = BattleScript_MoveEnd; // Prevent user switch-in selection + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_RedCardActivates; + gSpecialStatuses[gBattlerAttacker].preventLifeOrbDamage = TRUE; + effect = TRUE; + break; // Only fastest red card activates + } } } } @@ -16708,6 +16751,15 @@ void BS_SetPhotonGeyserCategory(void) gBattlescriptCurrInstr = cmd->nextInstr; } +void BS_RunStatChangeItems(void) +{ + NATIVE_ARGS(u8 battler); + + // Change instruction before calling ItemBattleEffects. + gBattlescriptCurrInstr = cmd->nextInstr; + ItemBattleEffects(ITEMEFFECT_STATS_CHANGED, GetBattlerForBattleScript(cmd->battler), FALSE); +} + static void TryUpdateEvolutionTracker(u32 evolutionMethod, u32 upAmount) { u32 i; diff --git a/src/battle_util.c b/src/battle_util.c index 08562e4295..ec849753ff 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -6762,10 +6762,29 @@ static u8 TryConsumeMirrorHerb(u32 battler, bool32 execute) return effect; } +static u32 RestoreWhiteHerbStats(u32 battler) +{ + u32 i, effect = 0; + + for (i = 0; i < NUM_BATTLE_STATS; i++) + { + if (gBattleMons[battler].statStages[i] < DEFAULT_STAT_STAGE) + { + gBattleMons[battler].statStages[i] = DEFAULT_STAT_STAGE; + effect = ITEM_STATS_CHANGE; + } + } + if (effect != 0) + { + gBattleScripting.battler = battler; + gPotentialItemEffectBattler = battler; + } + return effect; +} + static u8 ItemEffectMoveEnd(u32 battler, u16 holdEffect) { u8 effect = 0; - u32 i; switch (holdEffect) { @@ -6945,24 +6964,6 @@ static u8 ItemEffectMoveEnd(u32 battler, u16 holdEffect) effect = ITEM_STATUS_CHANGE; } break; - case HOLD_EFFECT_RESTORE_STATS: - for (i = 0; i < NUM_BATTLE_STATS; i++) - { - if (gBattleMons[battler].statStages[i] < DEFAULT_STAT_STAGE) - { - gBattleMons[battler].statStages[i] = DEFAULT_STAT_STAGE; - effect = ITEM_STATS_CHANGE; - } - } - if (effect != 0) - { - gBattleScripting.battler = battler; - gPotentialItemEffectBattler = battler; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_WhiteHerbRet; - return effect; - } - break; case HOLD_EFFECT_CRITICAL_UP: // lansat berry if (B_BERRIES_INSTANT >= GEN_4 && !(gBattleMons[battler].status2 & STATUS2_FOCUS_ENERGY_ANY) @@ -7032,18 +7033,9 @@ u8 ItemBattleEffects(u8 caseID, u32 battler, bool32 moveTurn) } break; case HOLD_EFFECT_RESTORE_STATS: - for (i = 0; i < NUM_BATTLE_STATS; i++) - { - if (gBattleMons[battler].statStages[i] < DEFAULT_STAT_STAGE) - { - gBattleMons[battler].statStages[i] = DEFAULT_STAT_STAGE; - effect = ITEM_STATS_CHANGE; - } - } + effect = RestoreWhiteHerbStats(battler); if (effect != 0) { - gBattleScripting.battler = battler; - gPotentialItemEffectBattler = battler; gBattlerAttacker = battler; BattleScriptExecute(BattleScript_WhiteHerbEnd2); } @@ -7314,18 +7306,9 @@ u8 ItemBattleEffects(u8 caseID, u32 battler, bool32 moveTurn) effect = ItemRestorePp(battler, gLastUsedItem, TRUE); break; case HOLD_EFFECT_RESTORE_STATS: - for (i = 0; i < NUM_BATTLE_STATS; i++) - { - if (gBattleMons[battler].statStages[i] < DEFAULT_STAT_STAGE) - { - gBattleMons[battler].statStages[i] = DEFAULT_STAT_STAGE; - effect = ITEM_STATS_CHANGE; - } - } + effect = RestoreWhiteHerbStats(battler); if (effect != 0) { - gBattleScripting.battler = battler; - gPotentialItemEffectBattler = battler; gBattlerAttacker = battler; BattleScriptExecute(BattleScript_WhiteHerbEnd2); } @@ -7885,6 +7868,19 @@ u8 ItemBattleEffects(u8 caseID, u32 battler, bool32 moveTurn) } } break; + case ITEMEFFECT_STATS_CHANGED: + switch (battlerHoldEffect) + { + case HOLD_EFFECT_RESTORE_STATS: + effect = RestoreWhiteHerbStats(battler); + if (effect != 0) + { + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_WhiteHerbRet; + } + break; + } + break; } // Berry was successfully used on a Pokemon. diff --git a/test/battle/hold_effect/white_herb.c b/test/battle/hold_effect/white_herb.c index 0103115658..fb455f47c6 100644 --- a/test/battle/hold_effect/white_herb.c +++ b/test/battle/hold_effect/white_herb.c @@ -55,10 +55,10 @@ DOUBLE_BATTLE_TEST("White Herb restores stats after Attack was lowered by Intimi ABILITY_POPUP(playerLeft, ABILITY_INTIMIDATE); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentLeft); - ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentRight); - ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponentLeft); MESSAGE("Foe Wobbuffet's White Herb restored its status!"); + + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentRight); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponentRight); MESSAGE("Foe Wynaut's White Herb restored its status!"); } THEN { @@ -71,7 +71,6 @@ DOUBLE_BATTLE_TEST("White Herb restores stats after Attack was lowered by Intimi SINGLE_BATTLE_TEST("White Herb restores stats after Attack was lowered by Intimidate while switching in") { - KNOWN_FAILING; GIVEN { PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_WHITE_HERB); } OPPONENT(SPECIES_WOBBUFFET); @@ -95,7 +94,6 @@ SINGLE_BATTLE_TEST("White Herb restores stats after Attack was lowered by Intimi } } - SINGLE_BATTLE_TEST("White Herb restores stats after all hits of a multi hit move happened") { u16 species; @@ -104,7 +102,6 @@ SINGLE_BATTLE_TEST("White Herb restores stats after all hits of a multi hit move PARAMETRIZE { species = SPECIES_SLIGGOO_HISUIAN; ability = ABILITY_GOOEY; } PARAMETRIZE { species = SPECIES_DUGTRIO_ALOLAN; ability = ABILITY_TANGLING_HAIR; } - KNOWN_FAILING; GIVEN { ASSUME(gMovesInfo[MOVE_DUAL_WINGBEAT].strikeCount == 2); PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_WHITE_HERB); } @@ -114,10 +111,11 @@ SINGLE_BATTLE_TEST("White Herb restores stats after all hits of a multi hit move } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_DUAL_WINGBEAT, player); ABILITY_POPUP(opponent, ability); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); MESSAGE("Wobbuffet's Speed fell!"); ABILITY_POPUP(opponent, ability); - MESSAGE("Wobbuffet's Speed fell!"); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + MESSAGE("Wobbuffet's Speed fell!"); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); MESSAGE("Wobbuffet's White Herb restored its status!"); } THEN { @@ -133,7 +131,6 @@ SINGLE_BATTLE_TEST("White Herb wont have time to activate if it is knocked off o PARAMETRIZE { move = MOVE_THIEF; } PARAMETRIZE { move = MOVE_KNOCK_OFF; } - KNOWN_FAILING; // Knock off fails, Thief is fine GIVEN { ASSUME(MoveHasAdditionalEffect(MOVE_THIEF, MOVE_EFFECT_STEAL_ITEM) == TRUE); ASSUME(gMovesInfo[MOVE_KNOCK_OFF].effect == EFFECT_KNOCK_OFF); @@ -143,14 +140,16 @@ SINGLE_BATTLE_TEST("White Herb wont have time to activate if it is knocked off o TURN { MOVE(opponent, move); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, move, opponent); - if (move == MOVE_THIEF) + if (move == MOVE_THIEF) { MESSAGE("Foe Wobbuffet stole Slugma's White Herb!"); - else - MESSAGE("Foe Wobbuffet knocked off Slugma's White Herb!"); + } ABILITY_POPUP(player, ABILITY_WEAK_ARMOR); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); MESSAGE("Slugma's Weak Armor lowered its Defense!"); MESSAGE("Slugma's Weak Armor raised its Speed!"); + if (move == MOVE_KNOCK_OFF) { + MESSAGE("Foe Wobbuffet knocked off Slugma's White Herb!"); + } NONE_OF { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); MESSAGE("Wobbuffet's White Herb restored its status!"); @@ -163,7 +162,6 @@ SINGLE_BATTLE_TEST("White Herb wont have time to activate if it is knocked off o SINGLE_BATTLE_TEST("White Herb wont have time to activate if Magician steals it") { - KNOWN_FAILING; // White Herb is activated GIVEN { PLAYER(SPECIES_SLUGMA) { Ability(ABILITY_WEAK_ARMOR); Item(ITEM_WHITE_HERB); } OPPONENT(SPECIES_FENNEKIN) { Ability(ABILITY_MAGICIAN); } @@ -171,11 +169,12 @@ SINGLE_BATTLE_TEST("White Herb wont have time to activate if Magician steals it" TURN { MOVE(opponent, MOVE_TACKLE); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ABILITY_POPUP(player, ABILITY_WEAK_ARMOR); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + MESSAGE("Slugma's Weak Armor lowered its Defense!"); + MESSAGE("Slugma's Weak Armor raised its Speed!"); ABILITY_POPUP(opponent, ABILITY_MAGICIAN); - ABILITY_POPUP(player, ABILITY_WEAK_ARMOR); - ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); - MESSAGE("Slugma's Weak Armor lowered its Defense!"); - MESSAGE("Slugma's Weak Armor raised its Speed!"); + MESSAGE("Foe Fennekin stole Slugma's White Herb!"); NONE_OF { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); MESSAGE("Wobbuffet's White Herb restored its status!"); @@ -186,33 +185,7 @@ SINGLE_BATTLE_TEST("White Herb wont have time to activate if Magician steals it" } } -SINGLE_BATTLE_TEST("White Herb wont have time to activate if Pickpocket steals it") -{ - KNOWN_FAILING; // White Herb is activated - GIVEN { - ASSUME(MoveHasAdditionalEffectSelf(MOVE_LEAF_STORM, MOVE_EFFECT_SP_ATK_TWO_DOWN)); - PLAYER(SPECIES_SLUGMA) { Ability(ABILITY_WEAK_ARMOR); Item(ITEM_WHITE_HERB); } - OPPONENT(SPECIES_SNEASEL) { Ability(ABILITY_PICKPOCKET); } - } WHEN { - TURN { MOVE(player, MOVE_LEAF_STORM); } - } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_LEAF_STORM, player); - ABILITY_POPUP(player, ABILITY_PICKPOCKET); - ABILITY_POPUP(player, ABILITY_WEAK_ARMOR); - ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); - MESSAGE("Slugma's Weak Armor lowered its Defense!"); - MESSAGE("Slugma's Weak Armor raised its Speed!"); - NONE_OF { - ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); - MESSAGE("Wobbuffet's White Herb restored its status!"); - } - } THEN { - EXPECT(player->statStages[STAT_DEF] = DEFAULT_STAT_STAGE - 1); - EXPECT(player->statStages[STAT_SPEED] = DEFAULT_STAT_STAGE + 1); - } -} - -SINGLE_BATTLE_TEST("White Herb restores stats after Defiant or Competitive were triggered") +SINGLE_BATTLE_TEST("White Herb has correct interactions with Intimidate triggered Defiant and Competitive") { u16 species; u16 ability; @@ -220,7 +193,6 @@ SINGLE_BATTLE_TEST("White Herb restores stats after Defiant or Competitive were PARAMETRIZE { species = SPECIES_IGGLYBUFF; ability = ABILITY_COMPETITIVE; } PARAMETRIZE { species = SPECIES_MANKEY; ability = ABILITY_DEFIANT; } - KNOWN_FAILING; GIVEN { PLAYER(species) { Ability(ability); Item(ITEM_WHITE_HERB); } OPPONENT(SPECIES_ARBOK) { Ability(ABILITY_INTIMIDATE); } @@ -230,16 +202,18 @@ SINGLE_BATTLE_TEST("White Herb restores stats after Defiant or Competitive were ABILITY_POPUP(opponent, ABILITY_INTIMIDATE); ABILITY_POPUP(player, ability); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); - ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); - MESSAGE("Wobbuffet's White Herb restored its status!"); + // Defiant activates first, so White Herb doesn't have a chance to trigger. + if (ability == ABILITY_COMPETITIVE) { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); + MESSAGE("Igglybuff's White Herb restored its status!"); + } } THEN { - EXPECT(player->item == ITEM_NONE); - if (species == SPECIES_IGGLYBUFF) - { + if (ability == ABILITY_COMPETITIVE) { + EXPECT(player->item == ITEM_NONE); EXPECT(player->statStages[STAT_ATK] = DEFAULT_STAT_STAGE); EXPECT(player->statStages[STAT_SPATK] = DEFAULT_STAT_STAGE + 2); + } else { + EXPECT(player->statStages[STAT_ATK] = DEFAULT_STAT_STAGE + 1); } - else - EXPECT(player->statStages[STAT_ATK] = DEFAULT_STAT_STAGE + 3); } } From 0acd058c161d38993914a295d7ddf29cbc0383dd Mon Sep 17 00:00:00 2001 From: Bassoonian Date: Fri, 29 Mar 2024 17:43:33 +0100 Subject: [PATCH 09/37] Fix style of some bit definitions (#4319) --- include/data.h | 14 +++++++------- include/pokemon.h | 4 ++-- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/include/data.h b/include/data.h index eba8e6f809..feae0d87b2 100644 --- a/include/data.h +++ b/include/data.h @@ -65,13 +65,13 @@ struct TrainerMon u8 lvl; u8 ball; u8 friendship; - u8 nature : 5; - bool8 gender : 2; - bool8 isShiny : 1; - u8 dynamaxLevel : 4; - bool8 gigantamaxFactor : 1; - bool8 shouldDynamax : 1; - bool8 shouldTerastal : 1; + u8 nature:5; + bool8 gender:2; + bool8 isShiny:1; + u8 dynamaxLevel:4; + bool8 gigantamaxFactor:1; + bool8 shouldDynamax:1; + bool8 shouldTerastal:1; }; #define TRAINER_PARTY(partyArray) partyArray, .partySize = ARRAY_COUNT(partyArray) diff --git a/include/pokemon.h b/include/pokemon.h index 0c3023a820..d37e5f4ae9 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -389,9 +389,9 @@ struct SpeciesInfo /*0x8C*/ /* 0x38 */ u16 trainerScale; /* 0x3A */ u16 trainerOffset; /* 0x3C */ const u8 *description; - /* 0x40 */ u8 bodyColor : 7; + /* 0x40 */ u8 bodyColor:7; // Graphical Data - u8 noFlip : 1; + u8 noFlip:1; /* 0x41 */ u8 frontAnimDelay; /* 0x42 */ u8 frontAnimId; /* 0x43 */ u8 backAnimId; From 8f6f744e7f0d5bd95d5e6b72a6a24e8879da9694 Mon Sep 17 00:00:00 2001 From: Zimmermann Gyula Date: Sat, 30 Mar 2024 11:46:15 +0100 Subject: [PATCH 10/37] Check for the correct battler's No Guard. (#4320) --- src/battle_script_commands.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index f3d739e782..bbee19244e 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -1546,7 +1546,7 @@ static bool32 AccuracyCalcHelper(u16 move) return TRUE; } // If the attacker has the ability No Guard and they aren't targeting a Pokemon involved in a Sky Drop with the move Sky Drop, move hits. - else if (GetBattlerAbility(gBattlerTarget) == ABILITY_NO_GUARD && (move != MOVE_SKY_DROP || gBattleStruct->skyDropTargets[gBattlerTarget] == 0xFF)) + else if (GetBattlerAbility(gBattlerAttacker) == ABILITY_NO_GUARD && (move != MOVE_SKY_DROP || gBattleStruct->skyDropTargets[gBattlerTarget] == 0xFF)) { if (!JumpIfMoveFailed(7, move)) RecordAbilityBattle(gBattlerAttacker, ABILITY_NO_GUARD); From f58bec2397f4eeef3fa6a5384f2e439f4020d1c8 Mon Sep 17 00:00:00 2001 From: Alex Date: Mon, 1 Apr 2024 20:31:01 +0200 Subject: [PATCH 11/37] Random Pyramid Encounter fixes --- src/battle_pyramid.c | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/src/battle_pyramid.c b/src/battle_pyramid.c index a21034d75a..eac03ca659 100644 --- a/src/battle_pyramid.c +++ b/src/battle_pyramid.c @@ -1401,27 +1401,32 @@ void GenerateBattlePyramidWildMon(void) if (reqs->nMoves != 0) moves = AllocZeroed(sizeof(u16) * reqs->nMoves); - + if (reqs->nAbilities != 0) abilities = AllocZeroed(sizeof(u16) * reqs->nAbilities); if (round >= TOTAL_PYRAMID_ROUNDS) round = TOTAL_PYRAMID_ROUNDS - 1; - + id = GetMonData(&gEnemyParty[0], MON_DATA_SPECIES, NULL) - 1; // index in table (0-11) -> higher index is lower probability bstLim = 450 + (25*round) + (5*id); // higher BST limit for 'rarer' wild mon rolls while (1) { - species = Random() % FORMS_START; + species = Random() % NUM_SPECIES; + + // check if base species + if (!GET_BASE_SPECIES_ID(species)) + continue; + // check type if (reqs->type != TYPE_MYSTERY && gSpeciesInfo[species].types[0] != reqs->type && gSpeciesInfo[species].types[1] != reqs->type) continue; - + // check base stat total if (GetTotalBaseStat(species) > bstLim) continue; - + // check moves if (reqs->nMoves != 0) { @@ -1438,7 +1443,7 @@ void GenerateBattlePyramidWildMon(void) if (moveCount == 0) continue; } - + // check abilities if (reqs->nAbilities != 0) { @@ -1460,9 +1465,9 @@ void GenerateBattlePyramidWildMon(void) continue; } // check evos - if (reqs->evoItems[0] != 0 && !CheckBattlePyramidEvoRequirement(species, reqs->evoItems, reqs->nEvoItems)) + if (reqs->evoItems != NULL && !CheckBattlePyramidEvoRequirement(species, reqs->evoItems, reqs->nEvoItems)) continue; - + // we found a species we can use! break; } @@ -1471,7 +1476,7 @@ void GenerateBattlePyramidWildMon(void) SetMonData(&gEnemyParty[0], MON_DATA_SPECIES, &species); StringCopy(name, GetSpeciesName(species)); SetMonData(&gEnemyParty[0], MON_DATA_NICKNAME, &name); - + // set level if (lvl != FRONTIER_LVL_50) { @@ -1507,7 +1512,7 @@ void GenerateBattlePyramidWildMon(void) } Free(moves); } - + // Initialize a random ability num if (gSpeciesInfo[species].abilities[1]) { @@ -1519,7 +1524,7 @@ void GenerateBattlePyramidWildMon(void) i = 0; SetMonData(&gEnemyParty[0], MON_DATA_ABILITY_NUM, &i); } - + // Try to replace with desired ability if (abilities != NULL) { @@ -1533,12 +1538,15 @@ void GenerateBattlePyramidWildMon(void) { // Set this ability num SetMonData(&gEnemyParty[0], MON_DATA_ABILITY_NUM, &id); + break; } } + if (id >= NUM_ABILITY_SLOTS - 1) + break; } Free(abilities); } - + if (gSaveBlock2Ptr->frontier.pyramidWinStreaks[gSaveBlock2Ptr->frontier.lvlMode] >= 140) { id = (Random() % 17) + 15; From a54d6419436bfd9c0861517a76f0c0494f4b6505 Mon Sep 17 00:00:00 2001 From: Alex Date: Mon, 1 Apr 2024 20:38:58 +0200 Subject: [PATCH 12/37] fix get base species id --- src/battle_pyramid.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/battle_pyramid.c b/src/battle_pyramid.c index eac03ca659..ce7a0526f2 100644 --- a/src/battle_pyramid.c +++ b/src/battle_pyramid.c @@ -1416,7 +1416,7 @@ void GenerateBattlePyramidWildMon(void) species = Random() % NUM_SPECIES; // check if base species - if (!GET_BASE_SPECIES_ID(species)) + if (GET_BASE_SPECIES_ID(species) != species) continue; // check type From f5a5932e4d71c3c1311aa7dbb349710dbd7e5311 Mon Sep 17 00:00:00 2001 From: Alex <93446519+AlexOn1ine@users.noreply.github.com> Date: Mon, 1 Apr 2024 23:42:14 +0200 Subject: [PATCH 13/37] Fixes Soft Level Cap issue (#4327) --- src/battle_controller_player.c | 2 +- src/battle_interface.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c index c9778f898e..eeca1899b1 100644 --- a/src/battle_controller_player.c +++ b/src/battle_controller_player.c @@ -2146,7 +2146,7 @@ void PlayerHandleExpUpdate(u32 battler) u8 monId = gBattleResources->bufferA[battler][1]; s32 taskId, expPointsToGive; - if (GetMonData(&gPlayerParty[monId], MON_DATA_LEVEL) >= GetCurrentLevelCap()) + if (GetMonData(&gPlayerParty[monId], MON_DATA_LEVEL) >= MAX_LEVEL) { PlayerBufferExecCompleted(battler); } diff --git a/src/battle_interface.c b/src/battle_interface.c index 50de6945a8..99ba59f489 100644 --- a/src/battle_interface.c +++ b/src/battle_interface.c @@ -2688,7 +2688,7 @@ static void MoveBattleBarGraphically(u8 battlerId, u8 whichBar) &gBattleSpritesDataPtr->battleBars[battlerId].currValue, array, B_EXPBAR_PIXELS / 8); level = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_LEVEL); - if (level >= GetCurrentLevelCap()) + if (level >= MAX_LEVEL) { for (i = 0; i < 8; i++) array[i] = 0; From f65fc5f849cb974ec93ab574984edc1c2a8b7342 Mon Sep 17 00:00:00 2001 From: Alex <93446519+AlexOn1ine@users.noreply.github.com> Date: Tue, 2 Apr 2024 11:06:14 +0200 Subject: [PATCH 14/37] Fix totem boost not triggering (#4328) --- src/battle_main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/battle_main.c b/src/battle_main.c index 2f3754665a..732bd97035 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -5273,11 +5273,11 @@ static void TurnValuesCleanUp(bool8 var0) gProtectStructs[i].quash = FALSE; gProtectStructs[i].usedCustapBerry = FALSE; gProtectStructs[i].quickDraw = FALSE; + memset(&gQueuedStatBoosts[i], 0, sizeof(struct QueuedStatBoost)); } else { memset(&gProtectStructs[i], 0, sizeof(struct ProtectStruct)); - memset(&gQueuedStatBoosts[i], 0, sizeof(struct QueuedStatBoost)); if (gDisableStructs[i].isFirstTurn) gDisableStructs[i].isFirstTurn--; From 7c1a0bb685bc70d0cce950c271cf73e95c366300 Mon Sep 17 00:00:00 2001 From: Alex <93446519+AlexOn1ine@users.noreply.github.com> Date: Tue, 2 Apr 2024 21:32:19 +0200 Subject: [PATCH 15/37] defiant_tests (#4331) --- test/battle/ability/defiant.c | 101 ++++++++++++++++++++++++++++++++++ 1 file changed, 101 insertions(+) diff --git a/test/battle/ability/defiant.c b/test/battle/ability/defiant.c index 3463cad18d..d464dd2443 100644 --- a/test/battle/ability/defiant.c +++ b/test/battle/ability/defiant.c @@ -175,3 +175,104 @@ DOUBLE_BATTLE_TEST("Defiant is activated by Cotton Down for non-ally pokemon") EXPECT_EQ(playerRight->statStages[STAT_ATK], DEFAULT_STAT_STAGE + 2); } } + +SINGLE_BATTLE_TEST("Defiant activates before White Herb") +{ + u32 move; + + PARAMETRIZE { move = MOVE_LEER; } + PARAMETRIZE { move = MOVE_GROWL; } + + GIVEN { + PLAYER(SPECIES_MANKEY) { Ability(ABILITY_DEFIANT); Item(ITEM_WHITE_HERB); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, move); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, move, opponent); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + + ABILITY_POPUP(player, ABILITY_DEFIANT); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + MESSAGE("Mankey's Attack sharply rose!"); + + if (move == MOVE_LEER) { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); + MESSAGE("Mankey's White Herb restored its status!"); + } else { + NONE_OF { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); + MESSAGE("Mankey's White Herb restored its status!"); + } + } + } THEN { + if (move == MOVE_LEER) { + EXPECT_EQ(player->statStages[STAT_DEF], DEFAULT_STAT_STAGE); + EXPECT_EQ(player->statStages[STAT_ATK], DEFAULT_STAT_STAGE + 2); + } else { + EXPECT_EQ(player->statStages[STAT_ATK], DEFAULT_STAT_STAGE + 1); + } + } +} + +SINGLE_BATTLE_TEST("Defiant activates for each stat that is lowered") +{ + GIVEN { + ASSUME(gMovesInfo[MOVE_TICKLE].effect == EFFECT_TICKLE); + PLAYER(SPECIES_MANKEY) { Ability(ABILITY_DEFIANT); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_TICKLE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_TICKLE, opponent); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + + MESSAGE("Mankey's Attack fell!"); + ABILITY_POPUP(player, ABILITY_DEFIANT); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + MESSAGE("Mankey's Attack sharply rose!"); + + MESSAGE("Mankey's Defense fell!"); + ABILITY_POPUP(player, ABILITY_DEFIANT); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + MESSAGE("Mankey's Attack sharply rose!"); + + } THEN { + EXPECT_EQ(player->statStages[STAT_ATK], DEFAULT_STAT_STAGE + 3); + } +} + +SINGLE_BATTLE_TEST("Defiant doesn't activate if the pokemon lowers it's own stats") +{ + u32 move; + + PARAMETRIZE { move = MOVE_SUPERPOWER; } + PARAMETRIZE { move = MOVE_CLOSE_COMBAT; } + PARAMETRIZE { move = MOVE_MAKE_IT_RAIN; } + PARAMETRIZE { move = MOVE_SPIN_OUT; } + + GIVEN { + ASSUME(MoveHasAdditionalEffectSelf(MOVE_SUPERPOWER, MOVE_EFFECT_ATK_DEF_DOWN)); + ASSUME(MoveHasAdditionalEffectSelf(MOVE_CLOSE_COMBAT, MOVE_EFFECT_DEF_SPDEF_DOWN)); + ASSUME(MoveHasAdditionalEffectSelf(MOVE_MAKE_IT_RAIN, MOVE_EFFECT_SP_ATK_MINUS_1)); + ASSUME(MoveHasAdditionalEffectSelf(MOVE_SPIN_OUT, MOVE_EFFECT_SPD_MINUS_2)); + PLAYER(SPECIES_MANKEY) { Ability(ABILITY_DEFIANT); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, move); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, move, player); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + + NONE_OF { + ABILITY_POPUP(player, ABILITY_DEFIANT); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + MESSAGE("Mankey's Attack sharply rose!"); + } + } THEN { + if (move == MOVE_SUPERPOWER) + EXPECT_EQ(player->statStages[STAT_ATK], DEFAULT_STAT_STAGE - 1); + else + EXPECT_EQ(player->statStages[STAT_ATK], DEFAULT_STAT_STAGE); + } +} From 29a4444fc128f392c627e6eda95393e9fda3f34d Mon Sep 17 00:00:00 2001 From: Alex <93446519+AlexOn1ine@users.noreply.github.com> Date: Tue, 2 Apr 2024 21:32:47 +0200 Subject: [PATCH 16/37] Pecharunt sprite from pokemoncommunity (#4324) * Pecharunt sprite from pokemoncommunity * disable icon sprite --- graphics/pokemon/pecharunt/back.png | Bin 0 -> 588 bytes graphics/pokemon/pecharunt/front.png | Bin 0 -> 771 bytes graphics/pokemon/pecharunt/normal.pal | 19 ++++++++++++++ graphics/pokemon/pecharunt/shiny.pal | 19 ++++++++++++++ src/data/graphics/pokemon.h | 8 +++--- .../pokemon/species_info/gen_9_families.h | 24 +++++++++--------- 6 files changed, 54 insertions(+), 16 deletions(-) create mode 100644 graphics/pokemon/pecharunt/back.png create mode 100644 graphics/pokemon/pecharunt/front.png create mode 100644 graphics/pokemon/pecharunt/normal.pal create mode 100644 graphics/pokemon/pecharunt/shiny.pal diff --git a/graphics/pokemon/pecharunt/back.png b/graphics/pokemon/pecharunt/back.png new file mode 100644 index 0000000000000000000000000000000000000000..2948387f014b0d1d76142234d797315864c85714 GIT binary patch literal 588 zcmV-S0<-;zP)aZ`|lg+_}B=pc=|NsBJy}f}NWt1|SNFf#Y0000G zbW%=J|NsC0|NsC0|NsC0|NsC0%^|Xs0005INklbU+_`h-&X)$S@)52H_@V$~OqUGbA-G}?{$B)QAo{C- zlLRO)YM`2rD`x_;d)4 z9X#{cM~3@{6*UgWs}nm|`!3-4ppXG%W!kcK(bDL4VR z+4-HYpS-AmCXnZ$KS18l3e191p$X!+{oUaBcY?8iH>B{&P!5v``UHFPbAeI7zX;6m zR)8osr!4_^;u)qbm;}tef(qCx%D1Nifu9IC6*KTDBB1vL^syvhuP_M+rUGf=`Rd=Q aJDMMrk|#Ltv?G)N0000e&3G1H=d5kxfcRd2D|12+#mxY+(H$Mo2mD5W0%!%bibv$q})# z;D84LZI<&>Jmlb06D`tOGEn`DhVU|}gE{U2b!w{Cav4AXZty4)&OVLM0USS2lQjY- zka2X`hcI?}B~bnIlZ}A65;_+n;8_4PF7A4@8bVG}PuKxEy~m$tdj~!RBnCaJDJ5+o z%;^GPJKrTh;j$#lKHcv|m^%PZR0RnCkGxDoet_Qr>M&zVTVG&upJxF04&jGvu2(`;%14pR<#IxQnZAU;ZBGWSIpreQ$ zCT22jdsVMX)mMPDX_ih7RDwbhr3J$hj5K`arwy5B-f@ zG7jEqn2By)2n5KYaw$Q#lKPAoM=s-Sjrt8h!q)7D$lJ%l2aBF^-%b8$9OF3ZI??21 z*LzXMQH($rC_n Date: Wed, 3 Apr 2024 15:29:46 -0300 Subject: [PATCH 17/37] Clarify to not use the "Download ZIP" option (#4336) * Clarify to not use the "Download ZIP" option. * Link to TAAR guide * Further discouraging --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 3caf3c41c6..d7bcb43d00 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ # 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. + ## What is pokeemerald-expansion? pokeemerald-expansion is a decomp hack base project based off pret's [pokeemerald](https://github.com/pret/pokeemerald) decompilation project. It's recommended that any new projects that plan on using it, to clone this repository instead of pret's vanilla repository, as we regurlarly incorporate pret's documentation changes. This is ***NOT*** a standalone romhack, and as such, most features will be unavailable and/or unbalanced if played as is. From c52ae074abd82ca746d2fd8082a2f751a54d5d7c Mon Sep 17 00:00:00 2001 From: Alex <93446519+AlexOn1ine@users.noreply.github.com> Date: Thu, 4 Apr 2024 14:48:57 +0200 Subject: [PATCH 18/37] Fixes Protective Pads Fluffy interaction (#4340) * Fixes Protective Pads Fluffy interaction * couple more tests --- src/battle_util.c | 15 ++++- test/battle/hold_effect/protective_pads.c | 75 +++++++++++++++++++++++ 2 files changed, 89 insertions(+), 1 deletion(-) create mode 100644 test/battle/hold_effect/protective_pads.c diff --git a/src/battle_util.c b/src/battle_util.c index ec849753ff..2e89950580 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -5249,6 +5249,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) && IsBattlerAlive(gBattlerAttacker) && TARGET_TURN_DAMAGED + && GetBattlerHoldEffect(gBattlerAttacker, TRUE) != HOLD_EFFECT_PROTECTIVE_PADS && IsMoveMakingContact(move, gBattlerAttacker) && gBattleStruct->overwrittenAbilities[gBattlerAttacker] != GetBattlerAbility(gBattlerTarget) && gBattleMons[gBattlerTarget].ability != ABILITY_MUMMY @@ -5272,6 +5273,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) && IsBattlerAlive(gBattlerAttacker) && TARGET_TURN_DAMAGED + && GetBattlerHoldEffect(gBattlerAttacker, TRUE) != HOLD_EFFECT_PROTECTIVE_PADS && IsMoveMakingContact(move, gBattlerAttacker) && !IsDynamaxed(gBattlerTarget) && !gAbilitiesInfo[gBattleMons[gBattlerAttacker].ability].cantBeSwapped) @@ -5326,6 +5328,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 && (CompareStat(gBattlerAttacker, STAT_SPEED, MIN_STAT_STAGE, CMP_GREATER_THAN) || GetBattlerAbility(gBattlerAttacker) == ABILITY_MIRROR_ARMOR) && !gProtectStructs[gBattlerAttacker].confusionSelfDmg && TARGET_TURN_DAMAGED + && GetBattlerHoldEffect(gBattlerAttacker, TRUE) != HOLD_EFFECT_PROTECTIVE_PADS && IsMoveMakingContact(move, gBattlerAttacker)) { SET_STATCHANGER(STAT_SPEED, 1, TRUE); @@ -5342,6 +5345,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 && gBattleMons[gBattlerAttacker].hp != 0 && !gProtectStructs[gBattlerAttacker].confusionSelfDmg && TARGET_TURN_DAMAGED + && GetBattlerHoldEffect(gBattlerAttacker, TRUE) != HOLD_EFFECT_PROTECTIVE_PADS && IsMoveMakingContact(move, gBattlerAttacker)) { gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker) / (B_ROUGH_SKIN_DMG >= GEN_4 ? 8 : 16); @@ -5357,6 +5361,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) && gBattleMons[gBattlerTarget].hp == 0 && IsBattlerAlive(gBattlerAttacker) + && GetBattlerHoldEffect(gBattlerAttacker, TRUE) != HOLD_EFFECT_PROTECTIVE_PADS && IsMoveMakingContact(move, gBattlerAttacker)) { u32 battler; @@ -5404,6 +5409,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 && !gProtectStructs[gBattlerAttacker].confusionSelfDmg && TARGET_TURN_DAMAGED && CanSleep(gBattlerAttacker) + && GetBattlerHoldEffect(gBattlerAttacker, TRUE) != HOLD_EFFECT_PROTECTIVE_PADS && IsMoveMakingContact(move, gBattlerAttacker) && (Random() % 3) == 0) { @@ -5423,6 +5429,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 && !gProtectStructs[gBattlerAttacker].confusionSelfDmg && TARGET_TURN_DAMAGED && CanBePoisoned(gBattlerTarget, gBattlerAttacker) + && GetBattlerHoldEffect(gBattlerAttacker, TRUE) != HOLD_EFFECT_PROTECTIVE_PADS && IsMoveMakingContact(move, gBattlerAttacker) && RandomWeighted(RNG_POISON_POINT, 2, 1)) { @@ -5441,6 +5448,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 && !gProtectStructs[gBattlerAttacker].confusionSelfDmg && TARGET_TURN_DAMAGED && CanBeParalyzed(gBattlerAttacker) + && GetBattlerHoldEffect(gBattlerAttacker, TRUE) != HOLD_EFFECT_PROTECTIVE_PADS && IsMoveMakingContact(move, gBattlerAttacker) && RandomWeighted(RNG_STATIC, 2, 1)) { @@ -5455,6 +5463,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) && gBattleMons[gBattlerAttacker].hp != 0 && !gProtectStructs[gBattlerAttacker].confusionSelfDmg + && GetBattlerHoldEffect(gBattlerAttacker, TRUE) != HOLD_EFFECT_PROTECTIVE_PADS && (IsMoveMakingContact(move, gBattlerAttacker)) && TARGET_TURN_DAMAGED && CanBeBurned(gBattlerAttacker) @@ -5477,6 +5486,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 && !(gBattleMons[gBattlerAttacker].status2 & STATUS2_INFATUATION) && AreBattlersOfOppositeGender(gBattlerAttacker, gBattlerTarget) && GetBattlerAbility(gBattlerAttacker) != ABILITY_OBLIVIOUS + && GetBattlerHoldEffect(gBattlerAttacker, TRUE) != HOLD_EFFECT_PROTECTIVE_PADS && IsMoveMakingContact(move, gBattlerAttacker) && !IsAbilityOnSide(gBattlerAttacker, ABILITY_AROMA_VEIL)) { @@ -5546,6 +5556,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 && !gProtectStructs[gBattlerAttacker].confusionSelfDmg && TARGET_TURN_DAMAGED && IsBattlerAlive(battler) + && GetBattlerHoldEffect(gBattlerAttacker, TRUE) != HOLD_EFFECT_PROTECTIVE_PADS && (IsMoveMakingContact(move, gBattlerAttacker)) && !(gStatuses3[gBattlerAttacker] & STATUS3_PERISH_SONG)) { @@ -5676,6 +5687,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 && gBattleMons[gBattlerTarget].hp != 0 && !gProtectStructs[gBattlerAttacker].confusionSelfDmg && CanBePoisoned(gBattlerAttacker, gBattlerTarget) + && GetBattlerHoldEffect(gBattlerAttacker, TRUE) != HOLD_EFFECT_PROTECTIVE_PADS && IsMoveMakingContact(move, gBattlerAttacker) && TARGET_TURN_DAMAGED // Need to actually hit the target && (Random() % 3) == 0) @@ -7687,6 +7699,7 @@ u8 ItemBattleEffects(u8 caseID, u32 battler, bool32 moveTurn) break; case HOLD_EFFECT_ROCKY_HELMET: if (TARGET_TURN_DAMAGED + && GetBattlerHoldEffect(gBattlerAttacker, TRUE) != HOLD_EFFECT_PROTECTIVE_PADS && IsMoveMakingContact(gCurrentMove, gBattlerAttacker) && IsBattlerAlive(gBattlerAttacker) && GetBattlerAbility(gBattlerAttacker) != ABILITY_MAGIC_GUARD) @@ -7807,6 +7820,7 @@ u8 ItemBattleEffects(u8 caseID, u32 battler, bool32 moveTurn) case HOLD_EFFECT_STICKY_BARB: if (TARGET_TURN_DAMAGED && (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)) + && GetBattlerHoldEffect(gBattlerAttacker, TRUE) != HOLD_EFFECT_PROTECTIVE_PADS && IsMoveMakingContact(gCurrentMove, gBattlerAttacker) && !DoesSubstituteBlockMove(gBattlerAttacker, battler, gCurrentMove) && IsBattlerAlive(gBattlerAttacker) @@ -8191,7 +8205,6 @@ bool32 IsMoveMakingContact(u32 move, u32 battlerAtk) return FALSE; } else if ((atkHoldEffect == HOLD_EFFECT_PUNCHING_GLOVE && gMovesInfo[move].punchingMove) - || atkHoldEffect == HOLD_EFFECT_PROTECTIVE_PADS || GetBattlerAbility(battlerAtk) == ABILITY_LONG_REACH) { return FALSE; diff --git a/test/battle/hold_effect/protective_pads.c b/test/battle/hold_effect/protective_pads.c new file mode 100644 index 0000000000..914118d2d8 --- /dev/null +++ b/test/battle/hold_effect/protective_pads.c @@ -0,0 +1,75 @@ +#include "global.h" +#include "test/battle.h" + +ASSUMPTIONS +{ + ASSUME(gItemsInfo[ITEM_PROTECTIVE_PADS].holdEffect == HOLD_EFFECT_PROTECTIVE_PADS); + ASSUME(gMovesInfo[MOVE_TACKLE].makesContact == TRUE); +} + +SINGLE_BATTLE_TEST("Protective Pads protected moves still make direct contact", s16 damage) +{ + u32 ability; + PARAMETRIZE { ability = ABILITY_KLUTZ; } + PARAMETRIZE { ability = ABILITY_FLUFFY; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_PROTECTIVE_PADS); } + OPPONENT(SPECIES_STUFFUL) { Ability(ability); } + } WHEN { + TURN { MOVE(player, MOVE_TACKLE); } + } SCENE { + MESSAGE("Wobbuffet used Tackle!"); + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, UQ_4_12(0.5), results[1].damage); + } +} + +SINGLE_BATTLE_TEST("Protective Pads doesn't reduce tough claws damage", s16 damage) +{ + u32 item; + PARAMETRIZE { item = ITEM_NONE; } + PARAMETRIZE { item = ITEM_PROTECTIVE_PADS; } + GIVEN { + PLAYER(SPECIES_BINACLE) { Ability(ABILITY_TOUGH_CLAWS); Item(item); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_TACKLE); } + } SCENE { + MESSAGE("Binacle used Tackle!"); + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_EQ(results[0].damage, results[1].damage); + } +} + +SINGLE_BATTLE_TEST("Protective Pads doesn't invalid unseen fist") +{ + GIVEN { + PLAYER(SPECIES_URSHIFU_RAPID_STRIKE_STYLE) { Ability(ABILITY_UNSEEN_FIST); Item(ITEM_PROTECTIVE_PADS); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_PROTECT); MOVE(player, MOVE_TACKLE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_PROTECT, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + HP_BAR(opponent); + } +} + +SINGLE_BATTLE_TEST("Protective Pads protects from Rocly Helmet Damage") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_PROTECTIVE_PADS); } + OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_ROCKY_HELMET); } + } WHEN { + TURN { MOVE(player, MOVE_TACKLE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + HP_BAR(opponent); + NONE_OF { + HP_BAR(player); + MESSAGE("Wobbuffet was hurt by Foe Wobbuffet's Rocky Helmet!"); + } + } +} From 2baa3525e124db373f7a837c32d1a67683a3fd26 Mon Sep 17 00:00:00 2001 From: Alex <93446519+AlexOn1ine@users.noreply.github.com> Date: Thu, 4 Apr 2024 14:51:07 +0200 Subject: [PATCH 19/37] Fixes ability pop up config (#4339) --- data/battle_scripts_1.s | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 508366e9b7..e47839adfe 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -7111,9 +7111,7 @@ BattleScript_IllusionOff:: BattleScript_CottonDownActivates:: copybyte sSAVED_BATTLER, gBattlerAttacker - showabilitypopup BS_TARGET - pause B_WAIT_TIME_LONG - destroyabilitypopup + call BattleScript_AbilityPopUpTarget copybyte gEffectBattler, gBattlerTarget swapattackerwithtarget setbyte gBattlerTarget, 0 @@ -7760,10 +7758,12 @@ BattleScript_TryIntimidateHoldEffectsRet: return BattleScript_IntimidateActivates:: - showabilitypopup BS_ATTACKER copybyte sSAVED_BATTLER, gBattlerTarget +.if B_ABILITY_POP_UP == TRUE + showabilitypopup BS_ATTACKER pause B_WAIT_TIME_LONG destroyabilitypopup +.endif setbyte gBattlerTarget, 0 BattleScript_IntimidateLoop: jumpifbyteequal gBattlerTarget, gBattlerAttacker, BattleScript_IntimidateLoopIncrement @@ -7812,10 +7812,12 @@ BattleScript_IntimidateInReverse: goto BattleScript_IntimidateLoopIncrement BattleScript_SupersweetSyrupActivates:: - showabilitypopup BS_ATTACKER copybyte sSAVED_BATTLER, gBattlerTarget +.if B_ABILITY_POP_UP == TRUE + showabilitypopup BS_ATTACKER pause B_WAIT_TIME_LONG destroyabilitypopup +.endif printstring STRINGID_SUPERSWEETAROMAWAFTS waitmessage B_WAIT_TIME_LONG setbyte gBattlerTarget, 0 @@ -9513,7 +9515,7 @@ BattleScript_WellBakedBodyActivates:: attackstring ppreduce pause B_WAIT_TIME_SHORT - showabilitypopup BS_TARGET + call BattleScript_AbilityPopUpTarget orhalfword gMoveResultFlags, MOVE_RESULT_NO_EFFECT modifybattlerstatstage BS_TARGET, STAT_DEF, INCREASE, 1, BattleScript_WellBakedBodyEnd, ANIM_ON BattleScript_WellBakedBodyEnd: @@ -9523,7 +9525,7 @@ BattleScript_WindRiderActivatesMoveEnd:: attackstring ppreduce pause B_WAIT_TIME_SHORT - showabilitypopup BS_TARGET + call BattleScript_AbilityPopUpTarget orhalfword gMoveResultFlags, MOVE_RESULT_NO_EFFECT modifybattlerstatstage BS_TARGET, STAT_ATK, INCREASE, 1, BattleScript_WindRiderActivatesMoveEnd_End, ANIM_ON BattleScript_WindRiderActivatesMoveEnd_End: @@ -9532,7 +9534,7 @@ BattleScript_WindRiderActivatesMoveEnd_End: BattleScript_GoodAsGoldActivates:: attackstring ppreduce - showabilitypopup BS_TARGET + call BattleScript_AbilityPopUpTarget pause B_WAIT_TIME_SHORT printstring STRINGID_ITDOESNTAFFECT waitmessage B_WAIT_TIME_MED From d1c2a10af68351cb0c54a5c1851bd4e058007b9b Mon Sep 17 00:00:00 2001 From: Alex <93446519+AlexOn1ine@users.noreply.github.com> Date: Thu, 4 Apr 2024 19:52:45 +0200 Subject: [PATCH 20/37] Fixes switch in AI bug (#4338) * Fixes switch in AI bug * fixes fix * test --- src/battle_ai_switch_items.c | 4 ++-- test/battle/ai.c | 19 +++++++++++++++++++ 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/battle_ai_switch_items.c b/src/battle_ai_switch_items.c index 231ab442a5..ae56264d87 100644 --- a/src/battle_ai_switch_items.c +++ b/src/battle_ai_switch_items.c @@ -1530,7 +1530,7 @@ static u32 GetSwitchinHitsToKO(s32 damageTaken, u32 battler) s32 currentHP = startingHP; // No damage being dealt - if (damageTaken + statusDamage + recurringDamage == 0) + if (damageTaken + statusDamage + recurringDamage < recurringHealing) return startingHP; // Mon fainted to hazards @@ -1589,7 +1589,7 @@ static u32 GetSwitchinHitsToKO(s32 damageTaken, u32 battler) } // Healing from items occurs before status so we can do the rest in one line - if (currentHP != 0) + if (currentHP >= 0) currentHP = currentHP + recurringHealing - recurringDamage - statusDamage; // Recalculate toxic damage if needed diff --git a/test/battle/ai.c b/test/battle/ai.c index b52400acc9..c8a64faceb 100644 --- a/test/battle/ai.c +++ b/test/battle/ai.c @@ -526,6 +526,25 @@ AI_SINGLE_BATTLE_TEST("AI will choose either Rock Tomb or Bulldoze if Stat drop } } +AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_MON_CHOICES: Number of hits to KO calculation checks whether incoming damage is less than recurring healing to avoid an infinite loop") +{ + GIVEN { + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY | AI_FLAG_SMART_SWITCHING | AI_FLAG_SMART_MON_CHOICES); + PLAYER(SPECIES_VENUSAUR) { Level(30); Moves(MOVE_TACKLE); } + // Opponent party courtesy of Skolgrahd, who triggered the bug in the first place + OPPONENT(SPECIES_PIKACHU) { Level(100); Moves(MOVE_ZIPPY_ZAP, MOVE_EXTREME_SPEED, MOVE_IRON_TAIL, MOVE_KNOCK_OFF); } + OPPONENT(SPECIES_NINETALES_ALOLAN) { Level(100); Moves(MOVE_AURORA_VEIL, MOVE_BLIZZARD, MOVE_MOONBLAST, MOVE_DISABLE); } + OPPONENT(SPECIES_WEAVILE) { Level(100); Moves(MOVE_NIGHT_SLASH, MOVE_TRIPLE_AXEL, MOVE_ICE_SHARD, MOVE_FAKE_OUT); } + OPPONENT(SPECIES_DITTO) { Level(100); Moves(MOVE_TRANSFORM); } + OPPONENT(SPECIES_TYPHLOSION) { Level(100); Moves(MOVE_ERUPTION, MOVE_HEAT_WAVE, MOVE_FOCUS_BLAST, MOVE_EXTRASENSORY); } + OPPONENT(SPECIES_UMBREON) { Level(100); Item(ITEM_LEFTOVERS); Moves(MOVE_FOUL_PLAY, MOVE_SNARL, MOVE_HELPING_HAND, MOVE_THUNDER_WAVE); } + } WHEN { + TURN { MOVE(player, MOVE_TACKLE); EXPECT_MOVES(opponent, MOVE_ZIPPY_ZAP, MOVE_EXTREME_SPEED, MOVE_IRON_TAIL, MOVE_KNOCK_OFF); } + } SCENE { + MESSAGE("Venusaur fainted!"); + } +} + AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_MON_CHOICES: AI will not switch in a Pokemon which is slower and gets 1HKOed after fainting") { bool32 alakazamFirst; From 7ee921e9dae948713f94c5f286855e3001f05a3f Mon Sep 17 00:00:00 2001 From: pkmnsnfrn Date: Thu, 4 Apr 2024 16:17:48 -0400 Subject: [PATCH 21/37] Added BUGFIX for groundEffectsOnMove when the player stops Surfing --- src/field_player_avatar.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c index 04aa5383bd..1f0708af22 100644 --- a/src/field_player_avatar.c +++ b/src/field_player_avatar.c @@ -1663,6 +1663,10 @@ static void Task_WaitStopSurfing(u8 taskId) gPlayerAvatar.preventStep = FALSE; UnlockPlayerFieldControls(); DestroySprite(&gSprites[playerObjEvent->fieldEffectSpriteId]); +#ifdef BUGFIX + // If this is not defined but the player steps into grass from surfing, they will appear over the grass instead of in the grass. + playerObjEvent->triggerGroundEffectsOnMove = TRUE; +#endif DestroyTask(taskId); } } From 71b8d2039732554235cee49f765d0a0dd7f03dff Mon Sep 17 00:00:00 2001 From: pkmnsnfrn Date: Thu, 4 Apr 2024 16:21:34 -0400 Subject: [PATCH 22/37] Replaced magic numbers regarding triggerGroundEffectsOnMove to TRUE / FALSE --- src/event_object_movement.c | 4 ++-- src/field_effect.c | 2 +- src/overworld.c | 4 ++-- src/trainer_see.c | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 5a746579d4..ece1bfa631 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -8077,7 +8077,7 @@ static void DoGroundEffects_OnSpawn(struct ObjectEvent *objEvent, struct Sprite GetAllGroundEffectFlags_OnSpawn(objEvent, &flags); SetObjectEventSpriteOamTableForLongGrass(objEvent, sprite); DoFlaggedGroundEffects(objEvent, sprite, flags); - objEvent->triggerGroundEffectsOnMove = 0; + objEvent->triggerGroundEffectsOnMove = FALSE; objEvent->disableCoveringGroundEffects = 0; } } @@ -8094,7 +8094,7 @@ static void DoGroundEffects_OnBeginStep(struct ObjectEvent *objEvent, struct Spr SetObjectEventSpriteOamTableForLongGrass(objEvent, sprite); filters_out_some_ground_effects(objEvent, &flags); DoFlaggedGroundEffects(objEvent, sprite, flags); - objEvent->triggerGroundEffectsOnMove = 0; + objEvent->triggerGroundEffectsOnMove = FALSE; objEvent->disableCoveringGroundEffects = 0; } } diff --git a/src/field_effect.c b/src/field_effect.c index 9ef70a1655..d907c3f16d 100644 --- a/src/field_effect.c +++ b/src/field_effect.c @@ -2496,7 +2496,7 @@ static void TeleportWarpInFieldEffect_SpinEnter(struct Task *task) if (task->data[13] == 0) { task->data[13]++; - objectEvent->triggerGroundEffectsOnMove = 1; + objectEvent->triggerGroundEffectsOnMove = TRUE; sprite->subspriteMode = task->data[14]; } } else diff --git a/src/overworld.c b/src/overworld.c index 2e01a2e52f..e1cb0a1cad 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -3050,7 +3050,7 @@ static void SetPlayerFacingDirection(u8 linkPlayerId, u8 facing) { if (facing > FACING_FORCED_RIGHT) { - objEvent->triggerGroundEffectsOnMove = 1; + objEvent->triggerGroundEffectsOnMove = TRUE; } else { @@ -3199,7 +3199,7 @@ static void CreateLinkPlayerSprite(u8 linkPlayerId, u8 gameVersion) sprite = &gSprites[objEvent->spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->data[0] = linkPlayerId; - objEvent->triggerGroundEffectsOnMove = 0; + objEvent->triggerGroundEffectsOnMove = FALSE; } } diff --git a/src/trainer_see.c b/src/trainer_see.c index 88f9215f77..51cc64f4a0 100644 --- a/src/trainer_see.c +++ b/src/trainer_see.c @@ -595,7 +595,7 @@ static bool8 JumpInPlaceBuriedTrainer(u8 taskId, struct Task *task, struct Objec if (gSprites[task->tOutOfAshSpriteId].animCmdIndex == 2) { trainerObj->fixedPriority = 0; - trainerObj->triggerGroundEffectsOnMove = 1; + trainerObj->triggerGroundEffectsOnMove = TRUE; sprite = &gSprites[trainerObj->spriteId]; sprite->oam.priority = 2; From 520efa01c8eb7b904c7154bba67435d4bd66e0ad Mon Sep 17 00:00:00 2001 From: sneed <56992013+Sneed69@users.noreply.github.com> Date: Fri, 5 Apr 2024 19:11:11 +0300 Subject: [PATCH 23/37] Fixes Guts countering frostbite spAtk reduction (#4351) --- src/battle_util.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/battle_util.c b/src/battle_util.c index 2e89950580..2eb8f97f62 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -9555,8 +9555,7 @@ static inline uq4_12_t GetBurnOrFrostBiteModifier(u32 battlerAtk, u32 move, u32 return UQ_4_12(0.5); if (gBattleMons[battlerAtk].status1 & STATUS1_FROSTBITE && IS_MOVE_SPECIAL(move) - && (B_BURN_FACADE_DMG < GEN_6 || gMovesInfo[move].effect != EFFECT_FACADE) - && abilityAtk != ABILITY_GUTS) + && (B_BURN_FACADE_DMG < GEN_6 || gMovesInfo[move].effect != EFFECT_FACADE)) return UQ_4_12(0.5); return UQ_4_12(1.0); } From e4d81150c0cd8916e7cf22c3442b16b5ce8a81c7 Mon Sep 17 00:00:00 2001 From: Bassoonian Date: Fri, 5 Apr 2024 20:01:33 +0200 Subject: [PATCH 24/37] Add Earth Eater AI code (#4352) --- src/battle_ai_main.c | 2 ++ src/battle_ai_switch_items.c | 5 +++++ src/battle_ai_util.c | 4 ++++ 3 files changed, 11 insertions(+) diff --git a/src/battle_ai_main.c b/src/battle_ai_main.c index 6dd50eaaa1..e35cf19828 100644 --- a/src/battle_ai_main.c +++ b/src/battle_ai_main.c @@ -2779,6 +2779,7 @@ static s32 AI_DoubleBattle(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) break; case ABILITY_WATER_ABSORB: case ABILITY_DRY_SKIN: + case ABILITY_EARTH_EATER: if (!(AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_HP_AWARE)) { RETURN_SCORE_MINUS(10); @@ -4886,6 +4887,7 @@ static s32 AI_HPAware(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) { if ((effect == EFFECT_HEAL_PULSE || effect == EFFECT_HIT_ENEMY_HEAL_ALLY) || (moveType == TYPE_ELECTRIC && AI_DATA->abilities[BATTLE_PARTNER(battlerAtk)] == ABILITY_VOLT_ABSORB) + || (moveType == TYPE_GROUND && AI_DATA->abilities[BATTLE_PARTNER(battlerAtk)] == ABILITY_EARTH_EATER) || (moveType == TYPE_WATER && (AI_DATA->abilities[BATTLE_PARTNER(battlerAtk)] == ABILITY_DRY_SKIN || AI_DATA->abilities[BATTLE_PARTNER(battlerAtk)] == ABILITY_WATER_ABSORB))) { if (gStatuses3[battlerDef] & STATUS3_HEAL_BLOCK) diff --git a/src/battle_ai_switch_items.c b/src/battle_ai_switch_items.c index ae56264d87..66bea62206 100644 --- a/src/battle_ai_switch_items.c +++ b/src/battle_ai_switch_items.c @@ -356,6 +356,11 @@ static bool32 FindMonThatAbsorbsOpponentsMove(u32 battler, bool32 emitResult) absorbingTypeAbilities[0] = ABILITY_SAP_SIPPER; numAbsorbingAbilities = 1; } + else if (gMovesInfo[gLastLandedMoves[battler]].type == TYPE_GROUND) + { + absorbingTypeAbilities[0] = ABILITY_EARTH_EATER; + numAbsorbingAbilities = 1; + } else { return FALSE; diff --git a/src/battle_ai_util.c b/src/battle_ai_util.c index 8e0955b1de..cc3f8bd93c 100644 --- a/src/battle_ai_util.c +++ b/src/battle_ai_util.c @@ -410,6 +410,10 @@ bool32 IsDamageMoveUsable(u32 move, u32 battlerAtk, u32 battlerDef) if (moveType == TYPE_GRASS) return TRUE; break; + case ABILITY_EARTH_EATER: + if (moveType == TYPE_GROUND) + return TRUE; + break; } switch (gMovesInfo[move].effect) From 4aeae4a52e6bac8d15ea9362426aca6900e755ac Mon Sep 17 00:00:00 2001 From: Bassoonian Date: Fri, 5 Apr 2024 20:17:30 +0200 Subject: [PATCH 25/37] Fix Trainer Slide message misbehaving (#4353) --- src/battle_message.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/battle_message.c b/src/battle_message.c index 3ad1dc409b..55493e6834 100644 --- a/src/battle_message.c +++ b/src/battle_message.c @@ -4167,7 +4167,7 @@ u32 ShouldDoTrainerSlide(u32 battler, u32 which) case TRAINER_SLIDE_LAST_LOW_HP: if (sTrainerSlides[i].msgLastLowHp != NULL && GetEnemyMonCount(firstId, lastId, TRUE) == 1 - && BattlerHPPercentage(battler, GREATER_THAN_OR_EQUAL, 4) + && BattlerHPPercentage(battler, LESS_THAN_OR_EQUAL, 4) && !gBattleStruct->trainerSlideLowHpMsgDone) { gBattleStruct->trainerSlideLowHpMsgDone = TRUE; From 3135a1fc2b1461c328c6a11e88d1df6b7a6b1455 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Fri, 5 Apr 2024 17:04:46 -0300 Subject: [PATCH 26/37] Updated value-setting of gMain.inBattle at OpponentHandleEndLinkBattle --- src/battle_controller_opponent.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/battle_controller_opponent.c b/src/battle_controller_opponent.c index e5284f9abc..dc3652b457 100644 --- a/src/battle_controller_opponent.c +++ b/src/battle_controller_opponent.c @@ -2007,7 +2007,7 @@ static void OpponentHandleEndLinkBattle(void) { if (gBattleTypeFlags & BATTLE_TYPE_LINK && !(gBattleTypeFlags & BATTLE_TYPE_IS_MASTER)) { - gMain.inBattle = 0; + gMain.inBattle = FALSE; gMain.callback1 = gPreBattleCallback1; SetMainCallback2(gMain.savedCallback); } From f9d690bafeeea422d113ab44297704269abf2f48 Mon Sep 17 00:00:00 2001 From: pkmnsnfrn Date: Fri, 5 Apr 2024 14:58:31 -0700 Subject: [PATCH 27/37] Added fix to Keep the Camera from Making Waves --- src/event_object_movement.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 5a746579d4..d668aa1a08 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -8070,7 +8070,11 @@ static void DoGroundEffects_OnSpawn(struct ObjectEvent *objEvent, struct Sprite { u32 flags; +#ifdef BUGFIX + if (objEvent->triggerGroundEffectsOnMove && objEvent->localId != OBJ_EVENT_ID_CAMERA) +#else if (objEvent->triggerGroundEffectsOnMove) +#endif { flags = 0; UpdateObjectEventElevationAndPriority(objEvent, sprite); @@ -8086,7 +8090,11 @@ static void DoGroundEffects_OnBeginStep(struct ObjectEvent *objEvent, struct Spr { u32 flags; +#ifdef BUGFIX + if (objEvent->triggerGroundEffectsOnMove && objEvent->localId != OBJ_EVENT_ID_CAMERA) +#else if (objEvent->triggerGroundEffectsOnMove) +#endif { flags = 0; UpdateObjectEventElevationAndPriority(objEvent, sprite); @@ -8103,7 +8111,11 @@ static void DoGroundEffects_OnFinishStep(struct ObjectEvent *objEvent, struct Sp { u32 flags; +#ifdef BUGFIX + if (objEvent->triggerGroundEffectsOnStop && objEvent->localId != OBJ_EVENT_ID_CAMERA) +#else if (objEvent->triggerGroundEffectsOnStop) +#endif { flags = 0; UpdateObjectEventElevationAndPriority(objEvent, sprite); From 77db5d9d1ebe288e38d916780eab787659e9c223 Mon Sep 17 00:00:00 2001 From: kittenchilly Date: Sat, 6 Apr 2024 04:26:16 -0500 Subject: [PATCH 28/37] Update almost all Gen 9 icon sprites + add the missing ones (#4290) * Ogerpon form icons * Sprigatito family * Fuecoco family * Quaxly family * Lechonk family * Tarountula family * Nymble family * Pawmi family * Tandemaus family * Fidough family * Smoliv family * Squawkabilly forms * Nacli family * Charcadet family * Tadbulb family * Wattrel family * Maschiff family * Shroodle family * Bramblin family * Toedscool family * Klawf * Capsakid family * Rellor family * Flittle family * Tinkatink family * Wiglett family * Bombirdier * Finizen family * Varoom family * Cyclizar * Orthworm * Glimmet family * Greavard family * Flamigo * Cetoddle family * Veluza * Dondozo * Tatsugiri forms * Annihilape * Clodsire * Farigiraf * Dudunsparce * Kingambit * Great Tusk * Scream Tail * Brute Bonnet * Flutter Mane * Slither Wing * Sandy Shocks * Iron Treads * Iron Bundle * Iron Hands * Iron Jugulis * Iron Moth * Iron Thorns * Frigibax family * Gimmighoul family * Treasures of Ruin * Roaring Moon * Iron Valiant * Paradox duo * Walking Wake * Iron Leaves * Dipplin * Poltchageist family * The Loyal Three * Ursaluna Bloodmoon * Revert "Ursaluna Bloodmoon" This reverts commit 33486816cf19ebe4b868117824c0ac77e183e806. * Revert "Revert "Ursaluna Bloodmoon"" This reverts commit 2d0e90e51d896517821cda42aea5bb5fabd0b61e. * Oops, out of order :( * Paldean Tauros breeds * PLA New Pokemon * PLA Hisuian Forms * Archaludon * Hydrapple * Gouging Fire * Raging Bolt * Iron Boulder * Iron Crown * Terapagos forms * Pecharunt * Partner Pikachu * Partner Eevee * Address reviews * Arboliva tweak --- graphics/pokemon/annihilape/icon.png | Bin 475 -> 866 bytes graphics/pokemon/arboliva/icon.png | Bin 512 -> 871 bytes graphics/pokemon/arcanine/hisuian/icon.png | Bin 427 -> 433 bytes graphics/pokemon/archaludon/icon.png | Bin 0 -> 609 bytes graphics/pokemon/arctibax/icon.png | Bin 408 -> 746 bytes graphics/pokemon/armarouge/icon.png | Bin 476 -> 872 bytes graphics/pokemon/basculegion/female/icon.png | Bin 474 -> 455 bytes graphics/pokemon/basculegion/icon.png | Bin 509 -> 465 bytes .../pokemon/basculin/white_striped/icon.png | Bin 376 -> 341 bytes graphics/pokemon/baxcalibur/icon.png | Bin 501 -> 848 bytes graphics/pokemon/bellibolt/icon.png | Bin 326 -> 713 bytes graphics/pokemon/bombirdier/icon.png | Bin 454 -> 743 bytes graphics/pokemon/brambleghast/icon.png | Bin 350 -> 760 bytes graphics/pokemon/bramblin/icon.png | Bin 323 -> 706 bytes graphics/pokemon/braviary/hisuian/icon.png | Bin 484 -> 428 bytes graphics/pokemon/brute_bonnet/icon.png | Bin 449 -> 793 bytes graphics/pokemon/capsakid/icon.png | Bin 334 -> 703 bytes graphics/pokemon/ceruledge/icon.png | Bin 458 -> 853 bytes graphics/pokemon/cetitan/icon.png | Bin 456 -> 865 bytes graphics/pokemon/cetoddle/icon.png | Bin 327 -> 725 bytes graphics/pokemon/charcadet/icon.png | Bin 319 -> 700 bytes graphics/pokemon/chi_yu/icon.png | Bin 388 -> 801 bytes graphics/pokemon/chien_pao/icon.png | Bin 463 -> 838 bytes graphics/pokemon/clodsire/icon.png | Bin 361 -> 751 bytes graphics/pokemon/crocalor/icon.png | Bin 375 -> 789 bytes graphics/pokemon/cyclizar/icon.png | Bin 390 -> 774 bytes graphics/pokemon/dachsbun/icon.png | Bin 413 -> 759 bytes graphics/pokemon/decidueye/hisuian/icon.png | Bin 410 -> 364 bytes graphics/pokemon/dipplin/icon.png | Bin 310 -> 742 bytes graphics/pokemon/dolliv/icon.png | Bin 343 -> 789 bytes graphics/pokemon/dondozo/icon.png | Bin 468 -> 898 bytes graphics/pokemon/dudunsparce/icon.png | Bin 423 -> 836 bytes graphics/pokemon/eevee/partner/icon.png | Bin 0 -> 362 bytes graphics/pokemon/eevee/partner/iconf.png | Bin 0 -> 362 bytes graphics/pokemon/electrode/hisuian/icon.png | Bin 277 -> 269 bytes graphics/pokemon/enamorus/icon.png | Bin 480 -> 485 bytes graphics/pokemon/enamorus/therian/icon.png | Bin 488 -> 481 bytes graphics/pokemon/espathra/icon.png | Bin 466 -> 852 bytes graphics/pokemon/farigiraf/icon.png | Bin 1269 -> 793 bytes graphics/pokemon/fezandipiti/icon.png | Bin 395 -> 860 bytes graphics/pokemon/fidough/icon.png | Bin 355 -> 717 bytes graphics/pokemon/finizen/icon.png | Bin 337 -> 734 bytes graphics/pokemon/flamigo/icon.png | Bin 419 -> 712 bytes graphics/pokemon/flittle/icon.png | Bin 322 -> 695 bytes graphics/pokemon/floragato/icon.png | Bin 381 -> 757 bytes graphics/pokemon/flutter_mane/icon.png | Bin 403 -> 789 bytes graphics/pokemon/frigibax/icon.png | Bin 325 -> 686 bytes graphics/pokemon/fuecoco/icon.png | Bin 309 -> 699 bytes graphics/pokemon/garganacl/icon.png | Bin 455 -> 877 bytes graphics/pokemon/gholdengo/icon.png | Bin 413 -> 802 bytes graphics/pokemon/gimmighoul/icon.png | Bin 416 -> 788 bytes graphics/pokemon/gimmighoul/roaming/icon.png | Bin 324 -> 670 bytes graphics/pokemon/glimmet/icon.png | Bin 312 -> 685 bytes graphics/pokemon/glimmora/icon.png | Bin 518 -> 891 bytes graphics/pokemon/goodra/hisuian/icon.png | Bin 509 -> 475 bytes graphics/pokemon/gouging_fire/icon.png | Bin 0 -> 551 bytes graphics/pokemon/grafaiai/icon.png | Bin 461 -> 861 bytes graphics/pokemon/great_tusk/icon.png | Bin 533 -> 977 bytes graphics/pokemon/greavard/icon.png | Bin 364 -> 735 bytes graphics/pokemon/growlithe/hisuian/icon.png | Bin 327 -> 331 bytes graphics/pokemon/houndstone/icon.png | Bin 537 -> 874 bytes graphics/pokemon/hydrapple/icon.png | Bin 550 -> 476 bytes graphics/pokemon/iron_boulder/icon.png | Bin 0 -> 503 bytes graphics/pokemon/iron_bundle/icon.png | Bin 384 -> 750 bytes graphics/pokemon/iron_crown/icon.png | Bin 0 -> 461 bytes graphics/pokemon/iron_hands/icon.png | Bin 465 -> 918 bytes graphics/pokemon/iron_jugulis/icon.png | Bin 519 -> 907 bytes graphics/pokemon/iron_leaves/icon.png | Bin 363 -> 769 bytes graphics/pokemon/iron_moth/icon.png | Bin 530 -> 909 bytes graphics/pokemon/iron_thorns/icon.png | Bin 427 -> 871 bytes graphics/pokemon/iron_treads/icon.png | Bin 449 -> 895 bytes graphics/pokemon/iron_valiant/icon.png | Bin 428 -> 909 bytes graphics/pokemon/kilowattrel/icon.png | Bin 413 -> 789 bytes graphics/pokemon/kingambit/icon.png | Bin 514 -> 885 bytes graphics/pokemon/klawf/icon.png | Bin 401 -> 769 bytes graphics/pokemon/kleavor/icon.png | Bin 563 -> 427 bytes graphics/pokemon/koraidon/icon.png | Bin 479 -> 973 bytes graphics/pokemon/lechonk/icon.png | Bin 303 -> 724 bytes graphics/pokemon/lilligant/hisuian/icon.png | Bin 414 -> 368 bytes graphics/pokemon/lokix/icon.png | Bin 543 -> 796 bytes graphics/pokemon/mabosstiff/icon.png | Bin 446 -> 806 bytes graphics/pokemon/maschiff/icon.png | Bin 375 -> 733 bytes graphics/pokemon/maushold/four/icon.png | Bin 373 -> 796 bytes graphics/pokemon/maushold/icon.png | Bin 424 -> 799 bytes graphics/pokemon/meowscarada/icon.png | Bin 494 -> 799 bytes graphics/pokemon/miraidon/icon.png | Bin 542 -> 882 bytes graphics/pokemon/munkidori/icon.png | Bin 337 -> 709 bytes graphics/pokemon/nacli/icon.png | Bin 325 -> 697 bytes graphics/pokemon/naclstack/icon.png | Bin 365 -> 770 bytes graphics/pokemon/nymble/icon.png | Bin 308 -> 700 bytes graphics/pokemon/ogerpon/cornerstone/icon.png | Bin 0 -> 816 bytes graphics/pokemon/ogerpon/hearthflame/icon.png | Bin 0 -> 825 bytes graphics/pokemon/ogerpon/icon.png | Bin 364 -> 818 bytes graphics/pokemon/ogerpon/wellspring/icon.png | Bin 0 -> 816 bytes graphics/pokemon/oinkologne/female/icon.png | Bin 466 -> 829 bytes .../pokemon/oinkologne/female/iconTODO.png | Bin 916 -> 0 bytes graphics/pokemon/oinkologne/icon.png | Bin 466 -> 789 bytes graphics/pokemon/okidogi/icon.png | Bin 442 -> 814 bytes graphics/pokemon/orthworm/icon.png | Bin 459 -> 828 bytes graphics/pokemon/overqwil/icon.png | Bin 514 -> 464 bytes graphics/pokemon/palafin/hero/icon.png | Bin 501 -> 848 bytes graphics/pokemon/palafin/icon.png | Bin 401 -> 738 bytes graphics/pokemon/pawmi/icon.png | Bin 345 -> 728 bytes graphics/pokemon/pawmo/icon.png | Bin 400 -> 744 bytes graphics/pokemon/pawmot/icon.png | Bin 456 -> 775 bytes graphics/pokemon/pecharunt/icon.png | Bin 0 -> 534 bytes graphics/pokemon/pikachu/partner/icon.png | Bin 0 -> 388 bytes graphics/pokemon/pikachu/partner/iconf.png | Bin 0 -> 391 bytes graphics/pokemon/poltchageist/icon.png | Bin 340 -> 786 bytes graphics/pokemon/quaquaval/icon.png | Bin 518 -> 867 bytes graphics/pokemon/quaxly/icon.png | Bin 296 -> 725 bytes graphics/pokemon/quaxwell/icon.png | Bin 398 -> 743 bytes graphics/pokemon/qwilfish/hisuian/icon.png | Bin 365 -> 352 bytes graphics/pokemon/rabsca/icon.png | Bin 515 -> 848 bytes graphics/pokemon/raging_bolt/icon.png | Bin 0 -> 516 bytes graphics/pokemon/rellor/icon.png | Bin 343 -> 776 bytes graphics/pokemon/revavroom/icon.png | Bin 476 -> 846 bytes graphics/pokemon/roaring_moon/icon.png | Bin 571 -> 936 bytes graphics/pokemon/samurott/hisuian/icon.png | Bin 503 -> 427 bytes graphics/pokemon/sandy_shocks/icon.png | Bin 546 -> 823 bytes graphics/pokemon/scovillain/icon.png | Bin 1269 -> 807 bytes graphics/pokemon/scream_tail/icon.png | Bin 411 -> 766 bytes graphics/pokemon/shroodle/icon.png | Bin 325 -> 676 bytes graphics/pokemon/sinistcha/icon.png | Bin 339 -> 715 bytes graphics/pokemon/skeledirge/icon.png | Bin 504 -> 904 bytes graphics/pokemon/sliggoo/hisuian/icon.png | Bin 392 -> 352 bytes graphics/pokemon/slither_wing/icon.png | Bin 454 -> 855 bytes graphics/pokemon/smoliv/icon.png | Bin 307 -> 652 bytes graphics/pokemon/sneasel/hisuian/icon.png | Bin 332 -> 331 bytes graphics/pokemon/sneasler/icon.png | Bin 478 -> 420 bytes graphics/pokemon/spidops/icon.png | Bin 487 -> 774 bytes graphics/pokemon/sprigatito/icon.png | Bin 317 -> 693 bytes .../squawkabilly/blue_plumage/icon.png | Bin 384 -> 719 bytes graphics/pokemon/squawkabilly/icon.png | Bin 384 -> 764 bytes .../squawkabilly/white_plumage/icon.png | Bin 380 -> 715 bytes .../squawkabilly/yellow_plumage/icon.png | Bin 383 -> 727 bytes graphics/pokemon/tadbulb/icon.png | Bin 369 -> 665 bytes graphics/pokemon/tandemaus/icon.png | Bin 433 -> 762 bytes graphics/pokemon/tarountula/icon.png | Bin 412 -> 732 bytes graphics/pokemon/tatsugiri/droopy/icon.png | Bin 317 -> 667 bytes graphics/pokemon/tatsugiri/icon.png | Bin 334 -> 669 bytes graphics/pokemon/tatsugiri/stretchy/icon.png | Bin 316 -> 691 bytes .../tauros/paldean_aqua_breed/icon.png | Bin 389 -> 762 bytes .../tauros/paldean_blaze_breed/icon.png | Bin 391 -> 767 bytes .../tauros/paldean_combat_breed/icon.png | Bin 369 -> 775 bytes graphics/pokemon/terapagos/icon.png | Bin 0 -> 423 bytes graphics/pokemon/terapagos/stellar/icon.png | Bin 0 -> 582 bytes graphics/pokemon/terapagos/terastal/icon.png | Bin 0 -> 485 bytes graphics/pokemon/ting_lu/icon.png | Bin 504 -> 889 bytes graphics/pokemon/tinkatink/icon.png | Bin 318 -> 690 bytes graphics/pokemon/tinkaton/icon.png | Bin 681 -> 917 bytes graphics/pokemon/tinkatuff/icon.png | Bin 491 -> 709 bytes graphics/pokemon/toedscool/icon.png | Bin 405 -> 687 bytes graphics/pokemon/toedscruel/icon.png | Bin 513 -> 742 bytes graphics/pokemon/typhlosion/hisuian/icon.png | Bin 438 -> 382 bytes graphics/pokemon/ursaluna/bloodmoon/icon.png | Bin 0 -> 917 bytes graphics/pokemon/ursaluna/icon.png | Bin 420 -> 388 bytes graphics/pokemon/varoom/icon.png | Bin 416 -> 719 bytes graphics/pokemon/veluza/icon.png | Bin 549 -> 777 bytes graphics/pokemon/voltorb/hisuian/icon.png | Bin 254 -> 246 bytes graphics/pokemon/walking_wake/icon.png | Bin 427 -> 918 bytes graphics/pokemon/wattrel/icon.png | Bin 378 -> 671 bytes graphics/pokemon/wiglett/icon.png | Bin 399 -> 647 bytes graphics/pokemon/wo_chien/icon.png | Bin 593 -> 998 bytes graphics/pokemon/wugtrio/icon.png | Bin 527 -> 810 bytes graphics/pokemon/wyrdeer/icon.png | Bin 395 -> 409 bytes graphics/pokemon/zoroark/hisuian/icon.png | Bin 634 -> 512 bytes graphics/pokemon/zorua/hisuian/icon.png | Bin 431 -> 365 bytes src/data/graphics/pokemon.h | 36 +++-- .../pokemon/species_info/gen_1_families.h | 10 +- .../pokemon/species_info/gen_2_families.h | 12 +- .../pokemon/species_info/gen_5_families.h | 2 +- .../pokemon/species_info/gen_8_families.h | 6 +- .../pokemon/species_info/gen_9_families.h | 146 +++++++++--------- 174 files changed, 113 insertions(+), 99 deletions(-) create mode 100644 graphics/pokemon/archaludon/icon.png create mode 100644 graphics/pokemon/eevee/partner/icon.png create mode 100644 graphics/pokemon/eevee/partner/iconf.png create mode 100644 graphics/pokemon/gouging_fire/icon.png create mode 100644 graphics/pokemon/iron_boulder/icon.png create mode 100644 graphics/pokemon/iron_crown/icon.png create mode 100644 graphics/pokemon/ogerpon/cornerstone/icon.png create mode 100644 graphics/pokemon/ogerpon/hearthflame/icon.png create mode 100644 graphics/pokemon/ogerpon/wellspring/icon.png delete mode 100755 graphics/pokemon/oinkologne/female/iconTODO.png create mode 100644 graphics/pokemon/pecharunt/icon.png create mode 100644 graphics/pokemon/pikachu/partner/icon.png create mode 100644 graphics/pokemon/pikachu/partner/iconf.png create mode 100644 graphics/pokemon/raging_bolt/icon.png create mode 100644 graphics/pokemon/terapagos/icon.png create mode 100644 graphics/pokemon/terapagos/stellar/icon.png create mode 100644 graphics/pokemon/terapagos/terastal/icon.png create mode 100644 graphics/pokemon/ursaluna/bloodmoon/icon.png diff --git a/graphics/pokemon/annihilape/icon.png b/graphics/pokemon/annihilape/icon.png index 561a4afedd2003b1b1b6ee3e3941a15adca8ebc0..e45f7583cb5b61ca503d1ae51980e2f2dfdefaa0 100755 GIT binary patch delta 784 zcmV+r1MmFX1L6jdBYy#eX+uL$Nkc;*P;zf(X>4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?h&5O-u^w)>hA}4-EyfQ6>f5o zETGrk{RX65VmKYv+CL_t(YiOp2OuEQV~1&NL7J8s8!yP-g_oeNKgdp#im-;FD(;FsUJq zyMJ>>n}%_DP`%2z9RTwx>9p7^>*%1VpF6})X9s?e8Wi=tuwtq~*#8MA$4)}RlD2?A z471{Lpwn2d>EVSbv`t?m-)aC`2fa4J{%v(hpGK{`H4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?th-n-u^w)>hA}4-EyfQ6>f3> z001yhOjJc;oP%?7bG^O2|NsAcoJyR{N|g3W?sJ^>l=i)(TK48C_V%pR)oSKSDPm$; zK|w)jIel9I00Cl2L_t(YiRF~rZp0uAM3EvJ9xVI+|F+}BBwRw$r&d*wb``?-!az<+ zKR(Rf1b_UZFn&^)uRjQop6EefOiDz$RTyJkbzj7YRZ)Uz71Z6M!`-^r=U??umBX%> z2q#g@?TF!%2&w`V7EDciRSr=U!AogLkeXd?ieUe-iv?*Ti3!)InnJZUgm&X~DY0>+ zMgFkCPESuk_z=4^E+w9Ft}QUpLG3V5q6v`M-G4yO31xAh0c|K>wWvE@Tt$es_wdfc*s50|HnA0r<+f;4^%d`KNZ8b4+}oCG=f zF-q~_B*=yj7eSg}3EBz delta 487 zcmVy&5pw$41|lch(nP5{%>2)7y{w1sg+>_6DYOYV#wOhi6|CvprGN z#j00Mylv_9G6Ak^4N#ch9m=h2_hL~9%55{B0$0Q$=DrpwA7gbIP?t7eVznq9!Tm!` zP{U}xs6ZVV0)N}Fp0jcpnN1)_5Cptdw#%2&0QY8tjc}Kew&c-bqugqt6veh6&tc1e zgOrX4*1r{A+j@W$2Bg#OiWh@((aq(v~*IqkDSk*9;Z|B zq5d1=zw)6Eu;N3vc{@JTld|W77U6~uam$C+*iY`rhhQf_dOpPW*m5mo ziC}gDQmesovU*~qt5X76wDsBoa%dy`)cUu@##3@*xBrGmi`cd$;PWrG2$XOqXfL!VWVfmkpA0000!ypibc>{D_vVqKyY;@=zKZ{ez-W(}|+3IJ7O7;fEmFf+O!6Z_*N|mzo z7LJdf6LvLhou~Cqk z3r|!B;ujIq-R+b$vQ|EKHuUqn>Gl`yu~9b46AU$lpI9 zWUILEQmpL{fIWIb{2S(3hI#lS8|D$4VSeF{Z<;Fo*J6JczyJUM07*qoM6N<$g1@$! A&;S4c diff --git a/graphics/pokemon/archaludon/icon.png b/graphics/pokemon/archaludon/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..9ad59de8feea5e67b05c271e7a0af20028a85df6 GIT binary patch literal 609 zcmV-n0-pVeP)Px#Fi=cXMPi(TgM)Luy}kec|GlI^_Vy{&VnOzlDT{mmVoJ^KbDaOQq@>0FYOI`M zVp>5#L0PGgWB>pG-$_J4R7i=%l-rIYF$hFsP$DC>;Q#-2C~PNSXL_~LO4~_ZQl|l5 zsveKOdd&WyzXtFtHi5+*)$Mfy*wbtkSl|H&W;9dlCt&Oy95CzM`enzG1|Tj6AQm;N z4&ZWK)q&=nz61Is=+uY+JVym#bO}uCy zGx!=>1+0sRdR-BWflc55jOHAMQxez3DY~K>`AU5^WDaUzUibpTdVDHvZykuf0Qhel zc>^H%I0-}mexWcGY1Mu0vqWo#ar|`3h4QYp2tPQq$~txSy;y{@;&yHT{;~1+GMUT0 z-g)1LTbFM9zkTjXhc9pPA4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?h&5O-u^w)>hA}4-EyfQ6>f5o zEKl-ml#FbG6L+XMxp|Npl;Cb0D4`nK$a4y7-1VoYPFlv^K=L8(p9 zL?X_VreK-`gwYc)4FHqjGK1(WeCfveutk_u0CWoqz@9*d0sxO%#Y;e_+8Gc4rT`cv zl$q@ahy%55XoPk6#}dk;14wZYJ*^)^_qBZDi@o3ALumKb0FhEqz_2s!${V0dhXdGF zzXV1VZz0&B4qx350l#5e7B(DI>D5^Hz@XH+=5tfhxw`c)dUJs6^C1q9T|Pts@+65VmK7RogNklPW^JY8Q*931RgC7!trVsv;zss2rxT z7G+hbPy)@81}t}=Q3=2gZ018r0QL+h0RsVH3y6sA0d-)WuN*`W^?eISOh7?=S~#Sx zse7?3OV~fp2lsW@-|N{45Bm#F0Jned<1R#Q|Hy|}S_YJRJ`@j#Q9eXK4E_J&UcIjy Xm|7RUWMaT$00000NkvXXu0mjfh1Ql^ diff --git a/graphics/pokemon/armarouge/icon.png b/graphics/pokemon/armarouge/icon.png index 2a348cab51a130f8eec2bfa789c5fe4b4066eac0..5cf958e57835c704eee90ff73cc7b9924dac26e6 100755 GIT binary patch delta 790 zcmV+x1L^$S1Ly{jBYy#eX+uL$Nkc;*P;zf(X>4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?h&5O-u^w)>hA}4-EyfQ6>f5o zEz3^s+_&|KBc+n>ZE0-P6?OkP9s$(C_v7{0Cqk@4f95 z7T+t-sMw}3g-BWmpxUGhHDS2fr)oJ=0|i>K&%%oE5@RDbTF@R=@ZS^?V9!Otu9O&RS6|)iXg?t_dr#qa6CP-#$GQsXk})a3E+_ zTPYN1xOV7lM&a3b<-jr8TIEYS&SAgSzSw&~Qouj@{)mU%yaNwd_vI2e9y-@LOW}HW z$j;w*$nxKK$nL-K5Xax}5DR|6gD2SF0kX$~yMN*#asR|a;{J(;#QhTwiTfuW68BF$ zB<_F1L+bvE4|ZAPewI4;fOsN?hl>xP{fP&5Beg&AU{{sYyTpT+liL3$@5k-`4X9-o U3|!!Uw*UYD07*qoM6N<$f|8hhT>t<8 delta 392 zcmV;30eAlB2HXRXBMSflb5ch_0Itp)>65VmKYv3>TS65?X(ND0CnnQ`;jW*E)({C4 z=tVyb3&KMnu#TTm;ngbyVZ=w!S2qA7T&bacYZ#NK9h?T4^bPuCK5Clb_J)U7%yqEdbf9 z1x-uc3$WOlSSOllL%+YbPY;Ef&lwyJ1YLV8#RL+r9oQbDSZ=&>urcadI8Ily%xrfU~PGnb=b+A zO|2J1{JoaX=J&Q^4WaEMy~(lcoZFrI9$y&0F8@t{S^n2umQV8M@v!WIMgDO-Oq3V- z^LP-ulfT)i|DF6biE}Ui^LY4%{13n@`A_G=PX0N?kIVnkrX>HZ`X~A0D*jdeb%&Vc c|L64o0l79Fi=e_^nE(I)07*qoM6N<$g5j>V9smFU delta 401 zcmV;C0dD@s1KIUq zK~y-6#gnm4!!Qtr^9I&!86qR`0u}XIDX+(1m1nA0JX~#cV+m5|!f;JYvxbJ$cC6YG z3=DAFeY!Zg-(QO256iN&XZ2t+Af^PI*J5RF(ID1jOu-@?x=u;7qd|WZ>wqhTJ#Bw# zKQIB5qzJdq4%oQ|sauZ9T%Ta3m6hBzK#%AKSPN1CHV0DvNCxHp1*#KpsT}x#vN=E} zf$*vD;L&WjLaw$pf(N17bwGE!w>n(kmFVDr*WuOa;KFq}@b^py%5~7W4l>gL=~p@|s|Fp| vafxUQI>di!G(m@$r^$7&SC&=o$B*>|lDiA&AP(4J00000NkvXXu0mjf-}SOK diff --git a/graphics/pokemon/basculegion/icon.png b/graphics/pokemon/basculegion/icon.png index 579a83d550f34d76e10a945350ee77e18ccd5fb3..6226cf6a59db4ae1e4a47d10778b98c080a02f43 100644 GIT binary patch delta 392 zcmV;30eAlW1JMJJ7#0Wv0000?P=%ZT0004VQb$4nuFf3kks&^R0Z&OpK~zYIE} z_XrXaffki#vBQBEmK^B{F6ad^cM)M)D7i*FZLQx=!uhLJgV6dzThZtU&MilK;*ohY zwM-0ejYW7mkG5mN8}`~`iowq!z8s9&o&#X#J?__M_`g|aKQ8|Z2S@o&tfTy6Je=mo zN&XxUSl`P(#>1+2@>k9JpXF~^oR{(+o4x{Wt>j;eTTq+~F`swhaIttIxOpoo8N zh_Ez=m%gBlqLm?o$L9{X#wd!^{w$DW*8%d)-LsS%jlKiiU1zw<4D}#KX<^pk;f%+4V;?s9`M fsp%~J`1O1PPKl*-U49nb&L`K7{zwdS_=B-wPJgHmfWaS= zKt_L{*aQszC=3kq;*Zck-}<9gw+nv|71b~N(fy(c`CoOvOqUyv`6IzR0WI$iU)-48 Q$N&HU07*qoM6N<$g1LQp;{X5v delta 302 zcmV+}0nz@|0{8-u7zqRe0001qplF?uEa7bBm000ie000ie0hKEb8vpFbqX~1A@>T_XtHoAd@5AsCO*9Dn5Z-L(p0?G6ZyURCS0&d&wU3Z+svK zQhHVOdI@1$gE0_5fJ7#SS#(8adRGG65m^fWnB$rPW<*7}0!R+k#a@;bXhiz{96^7K zRPEH=%1DhqcHW4!xNkZVTY%-klaavkXp%T(8O9*%yvgqR|2zx84#c>7(@4owq6;+p zlQak%);_6?A6U=jGyeplqgsVY*)ZzcqkVvw1=9BLRt$33=$?zX(bcA5;RoEO)=Gh@ zpO5Po$&T}xrznib0$oRthAhLd6$Tp8=JqG~1!;(Tm$X&`V*mgE07*qoM6N<$f+#10 Av;Y7A diff --git a/graphics/pokemon/baxcalibur/icon.png b/graphics/pokemon/baxcalibur/icon.png index befc75d3c8eba7afebeb485857b881ba8effd559..e5386582f05a8b01dd1a8886653c52dd8d338855 100755 GIT binary patch delta 766 zcmV4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?h&5O-u^w)>hA}4-EyfQ6>f5o zE(c|v4Ug&|KFaRw%0aE!#y1gX6RTa&9UWJuh*M}Gp2Y^ zEfa<()s&tI#1liF7#m&+f-x$^iR-tjk-+aQ#RD()MLY;e+FG1{XAgWJVo9ZElvLD; zF#`$w5N#Qzhyx;QM0h#Uj*IC4k3x4GHcWruI1)sPt^zl}G|IP{qv~*q;p@7>5K3>1 z4Zg_k3;3>DOMt*@MSeRY#Hty@kh25r*!WZ6U@bYX+0cn?;4B$bGMl06gFP)J{f1`*xLlF|pa@c9uK2x_h!I{_gQv|39vOp00mv!$D#g zuK(!|59@#W!^8R?{%~3U3m)r#@dxPyuZz|ALwiQ&58X&wf4Di!*5=(G+Jn6HhZe5} wa`lIyfz15j*FeY^_`_}>jJbhS>c1Pv4|0?rZ;(Vka{vGU07*qoM6N<$f=`QU*#H0l delta 418 zcmV;T0bTyk2K57wBMSflb5ch_0Itp)>65VmKYw#cL_t(YiPei)Qd=2I4p^z^lX5hu;|Ir^itRzQ7Z;rzC{!U zd>$?4deJZFZb&rtV)#4GfEN>K5}F+)715%o00Z7gMu!Uf2EH^hY{seUq!Q@fXxCZ8 z0)NJ50WUFiV9KoG?Q5-3=kOke9mm1SKI!IY@@4F{Gro(|7MR#-M|Ru8hgB<(a?Zv) zUK@ULozY9qN7kv$q>Q`7!X&d!I&M(?GN2P~EzozA#-FI8+AHF^&{(p~#OZ)>q4Dk>6aEX7&havs}A8Pz_OJ~f7 z&C~EpK5)nfzlSsZJQry3fAN7wKGgVM_(0RO)?jr$wD`BWLko=$E&g@~NS|isLyi9c zkQ*O7{ygd!<;e$9*8_mO`M|U808zQ{VF8es4;>&2KD;vV2YmPeWR@Ra2H^6A01E&B M07*qoM6N<$f^wqEzyJUM diff --git a/graphics/pokemon/bellibolt/icon.png b/graphics/pokemon/bellibolt/icon.png index 28492e341db336738b35916d763db405e0d0a985..5f2a98c8ef38d6e9daa1a4dcb0bdb73c7234aab5 100755 GIT binary patch delta 412 zcmV;N0b~Bg0?7rCBYy#eX+uL$Nkc;*P;zf(X>4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?h&5O-u^w)>hA}4-EyfQ6>f5| GE*JrbMZP}( delta 23 fcmX@fdW>m;GB*Qbage(c!@6@aFE?*wlwbq^TE_>Y diff --git a/graphics/pokemon/bombirdier/icon.png b/graphics/pokemon/bombirdier/icon.png index 06bcf71c867acf5ce324d8268a2f35404daeeb09..45e4ac91df5fa828a60091a7b346b775459b2617 100755 GIT binary patch delta 660 zcmV;F0&D%o1Lp;hBYy#eX+uL$Nkc;*P;zf(X>4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?h&5O-u^w)>hA}4-EyfQ6>f5o zAwPfONklF}@tA{S!u uq2&ipm>Lg@4+#i~hqcpwgNOcKQP&6P?hq;|n6@+k0000c7)?E0978-h--aAqci4a>Yc2hTa|-k()E6II=X9$- zH!HkFhkZAn=$js6SSbg=< zzboq}`@hZzPTT2VZ~6b-hhwr0-sJ*1%`5IQp0=ww|08NizxeLjlz$&YKF$6YAi!6@ z;#uVnXTuA1Kb+6~I3!cUF=L72V4U P7=Xaj)z4*}Q$iB}ZfUX| diff --git a/graphics/pokemon/brambleghast/icon.png b/graphics/pokemon/brambleghast/icon.png index 645ed7014d08f8709a2b49b944d9c4575eda05d2..ca6a29df23ab18b67b6ddcb606ec65aed6b3030a 100755 GIT binary patch delta 737 zcmV<70v`R|0{8`xBYy#eX+uL$Nkc;*P;zf(X>4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?th-n-u^w)>hA}4-EyfQ6>f3> z001yhOjJc;oP&FNd%eB1|NsAUbIqiz_Oydq?!}A6tSR>PDfVJglzYv^q|Lo4oMK{H zK|w+3M6_Q3008qzL_t(YiS3lz3WP8WM14w1TQdLux0^&)dr4hb_GQ6<2+rv=tz@?C zsi|;0OMks!L%ktRAZCE#Km|A?K*f8gl|lejVBQd7mWfbX({(9|Fiiw>(Fp*;!oWZX zvtkSfl_2T}5EDqho4;EOx_Ks$A<5K{H~=;s$&E%p7iZn21$siv*3OYr4z}3)X1}NG zEc4JLS^H%D^KLL)74(d%k;%aZ`%Rd!sub%NVOs4Y{@+@%D00000NkvXXu0mjfJ`-Av delta 309 zcmV-50m}aP1>ORXBMSflb5ch_0Itp)>65Vm6n}f1N}SC~w1Zmi#f!zPDfad$)nY-E zd(Fk9&GwWjVq#iBK|%9-Hc9{h0NhDLK~zYI?Uc<9gD?z(IXP8Z#qa;NOUeW^WIs2g zjYwSZ7bh(;%W~JL_0g@~RAvvu8C*;H^M zXn#!`K&q&aflv{{gab4JmfW*I9;91gyE*lp`<`>b8E4 zT52+4-CM>z)xnB{CE@GC_m|ZmTovt%rorW8zil02|48^BVTymqg)Igi;~(@9ZXVs^|F`M?@$f$Y*tr{=l%1yu00000NkvXX Hu0mjfqH&Wk diff --git a/graphics/pokemon/bramblin/icon.png b/graphics/pokemon/bramblin/icon.png index 9833e5007bc397bd368ae871448daa6d0937285d..64fa8677b3ae2e04f372329b61eede99936f735c 100755 GIT binary patch delta 683 zcmV;c0#yCO0>TB5BYy#eX+uL$Nkc;*P;zf(X>4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?th-n-u^w)>hA}4-EyfQ6>f3> z001yhOjJc;oP%?7bG^O2|NsAcoJyR{N|g3W?sJ^>l=i)(TK48C_V%pR)oSKSDPm$; zK|w)jIel9I006y7L_t(YiS3k83&S7`gnbKIlKcPvcDba`F{2FjHVicu?;}=AuC){Y z8Mwz%?|;aF1%_@g0vE9gu*(QIVKV`^4wqQLIDG=X8d@a27XIbi?* delta 282 zcmV+#0p65Vm6n{Z#lwy>mq{aX4bDY&;LA|6}_U0+} z_N>*_YW9>VVq#iBK|um8y^;U`0KrK_K~zYI?Ud09!ypVr^JcV=`~QEt+@!EEqipP< zFdAAdy$7upkH}sBSvc=y-jO#J7`nj-9K>{%JmLt(?j7*AkwwGjg1|X8 zyMKv*zZy((h&~YnG)5S{n(`}siU>4-HUq7hHBRAcEmpy8Xxd1yU2K$^XR3=l3H580 zb34^cvHhdi#&_NIMd76_^EgZ!gU}x$8-vgfl4r6oNctoFP#Prt@dRdrgg@k0fsD@t gGAY@r_$&vK9kJCq0#e1<2)D`mkrP0+%4X+cPvs`P0E>IMEQL?M z?_tTMEKAAWh$^{%PhAgXFU3~pqX#35p{~Tb7g3^P6HqVEm)Ld))%VR$&`<)~wyicP zf~@NbKYI#*&zf(GL0gHghYjr$K~o(DAR&yHgS%m}>FkL9l6Nc!ut07@RT8I!`h-<<$Iq?KS!qgW1 zd|!Qrgn4#%ZX_hkc+N3lCP1Gs6CxzcNK8hb(gU&J6e4vRoMHd~002ovPDHLkV1fsA BorC}Y delta 412 zcmV;N0b~BG1LOmc7zqRe0001qplF?uER4`WRGZ1%SN=zb# z3JGK9nv_^#V1t`-|JoC|+U zS=5P$a$3w$q-@SHF?~vLx)CT@EEV=4kd+T*Ua?sm9*RDem)TP~LySWz`d(aT`Brg6 zY@C1caer0VqP4)}f;zj&6;^D~Aqpz8>UJp$HJ~72e|IbJ^K}_?f?D0LbZcPQ1TfSv z0R-@(M}f=*chj}lseHlwV#|NRz@L8rB2NM7DIjGu6}W1qIW6bf7yO(FL3VSNAVmbZ zC9cgGT7u?|Ak*K$5%g>cN}3j>O@fUhXv<=I{#5BBL7~M#xz`Q^RXYnzKf{^`sxht_ zdiFq2RS#_p1dWFzg4l7Ko}f2N&?pQ9jVS{`Q}g|w?F;#xwbe0PS`YvL000O{MNUMn GLSTZ?_pR~( diff --git a/graphics/pokemon/brute_bonnet/icon.png b/graphics/pokemon/brute_bonnet/icon.png index 052517c12d97244d824dc79a424ab5ead0861ca9..82161e124d57138fec53c6fd858a41f5fb3b0dde 100755 GIT binary patch delta 712 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 N002ovPDHLkV1oOuZdd>S delta 372 zcmV-)0gL|O2FL@DBMSflb5ch_0Itp)>65VmKYvC^L_t(YiS3oavcn(C~(E{7WF{Ctwia9JWB3cblF*>MZpSq@qtc;0_+cjqtu zJw7MM1|W?fX$z1>kUM|`K^_1S1mTk)3td1u9~wdS0I8iIJAfPn*#M+|4-kC@2;@hA z`0*bB!nz#)2_SveSKA1XoAZAHBnUEd5J&z1NRF4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?h&5O-u^w)>hA}4-EyfQ6>f5o zE-wH%$JR#9SD{tG~KwyS<9GCu8mfH9P0W2dX z6o@CpX0hUf5`H8sD!m32p2z^GD%IySRU=V-6Pu4S!TJHhFh=x;HvJ_gaC`WWP$_|! zita}SIZCq&OM_91i^LEYJ<_fr`(y-jk=16OU$OS>IkfjLUHV+#21NDGfY|XtSomOX z_~3Nd@*&QD%Lnfed{BMxp*cSj_jT|Ni1zx`+b18;UcZ-!Ccy{xeDI&jNJ7|x4^IGD c=_mZS0sW2)HW$yq_W%F@07*qoM6N<$f{tD*D*ylh delta 242 zcmV65VmKYztZL_t(YiS3lJ4g)a=Loaw^F#rFz z1=5pxg`{IE^}O1Ffb=+yTmLFcZG3_NmJt&Q#1mq(Sn)v#KN1#|-UA9xWB^o^>T{Z^ zk*L0j&BvKw{QzMYBl<&|{t^?oJ$y*0lt4^H_alQGrP+n0!KlSWVu*_#Y1fc_GJ?6t z>RZpRSo`)G+WWU|o%(hB?F0S}{}%tCdyBt!2>ew~{2RJV+}FV;|1I3=?Gt~raC?bp s68N*n-+wA24}dN3f4L7Uedjzp0R4{)P~1{KIRF3v07*qoM6N<$f@+;{ivR!s diff --git a/graphics/pokemon/charcadet/icon.png b/graphics/pokemon/charcadet/icon.png index 50d9e46d889a957cce7a574dc7433f6a538198c9..cddec8626b5286157cfd361cd4fe839dfe34764e 100755 GIT binary patch delta 677 zcmV;W0$TmQ0=xx~BYy#eX+uL$Nkc;*P;zf(X>4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?th-n-u^w)>hA}4-EyfQ6>f3> z001yhOjJc;oP&ddbG^O2|NsBJq(S!fDb->@_LM1$d;ele&F*uY|Foo}#s6xooMK{H zK|w)TsgPs<006g1L_t(YiS3l(3d1l6glh{1BzW)tw$-g$q2wHtF&MCwi@UjSi zdL*IU`7Pt{W*gTv@0f!gZ!2^S7gYm!MNSBdw3n&vL1ENTfXF%`-`C34bfASUkAhvCaex3K4Qj000000 LNkvXXu0mjfNWwLN delta 293 zcmV+=0owk&1-}B2BYyw^b5ch_0Itp)=>Px#Fi=cXMPi(Tb8~aOy}kec|9hNDoXtv< z_Db$^oc5IVy`)<9<|+2}tku5#L1{UCTL1t6y-7qtR7i>KR5236FbE6I zzphF%-axFM5N+3O`h>`l1b$It(^T9i^(d%gyALSC^5U*f|FsGZT zP8RPmE#)j;4`~H~>PG(`%0?G>i*8&5{VafXJsj!R-{DUGY4S?HO!qVWSf~4w{*VIJ ro-X5m7;`_g=^p-VKQ!^b>V9|t)Nl^Dk(w3@00000NkvXXu0mjf4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?h&5O-u^w)>hA}4-EyfQ6>f5o zE zsV>%M$sKm+r!CtqeJg*FCNWVrxDQzj>N*0%Lzo$~HQ#BP>9x4tnu5AEogB77xr!b{ zLE~?O6$s_M)(Uqp&=g?z^=$*-4vy)TR-}KS>|lT+OSq$fhEl<^?m)=k4n;w=ZV-e^ zur@q6YK{WT&9XQ$IXP7oRT`J88hv`g2aX9T(VumH%#hZR6x@!{{h%^6>UkBlBoay002ovPDHLkV1iSY BQRDys delta 304 zcmV-00nh%S2808UBMSflb5ch_0Itp)>65VmKYs#AL_t(YiS3lzio-ArL=6TRL^AXL zf4d{+(yniP*`-jb2M0W3Nw&gC=^OtPWg6!nuj5L80C=e zSAxC?lJHXEBz>gk6nZHR>0Z2XaD!_XHHkyU-v%a_wPVzSs-L3;i1(6>G#?KjZATq1h5KCqSl%xd1Xl%mW}3!rTCv5oQIDgD@+A z1Ywo{3Bs%Zau8+(kV=>pK!PxT1dw}-GZ}!qgAYHF>J<6GP|3mo00004Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?h&5O-u^w)>hA}4-EyfQ6>f5o zEq zBSx_r7S^;awRc5sJ@oM)=|cb^eS*8;kR(eT5dl3;NUz-Eq~(6y!qmq~r(Ne6;Nz~; zi{5$YGK+l`2haMu;f>p$0SD*r_<&KbrQTBXe*r`R2>L&D#s-kE%z)ScGA46#R)APs z3m+;#Djy0!PJGA!Iq_iu$cYaNK+b$f06Fnt0Z8y+YyS+8;KSDb3qX$Tp8#@~Vr%~d mkaz9B0AwE(Acu&L2FMS&WEQWFrWoe{00000;ji delta 379 zcmV->0fhd>2G0YKBMSflb5ch_0Itp)>65VmKYvY0L_t(YiS3lZvcn(wC%d{o|DNWUbupe=eqvVaQ~t+yU#)EU+5}Q%4;?zY>scb;>CT|m3e&ki2_|j zNQQ+wkMH;~kAR4eGDa?#4+d9UZ; zpnu9(#gGjv!K(L8xEY}X65^3vWZ4EI!!lwN*|4ypW!ZaI)K)|94~jkn5XvXG8=53p z_7M@#qeFVu9-XH1bqiDPnNGXTBf$GvsVBX1*JW(>l^lH5-wiKZJ_a0||Hm(kd~W#| z0}zQIi7)`fbaghugyl?-jWB(3zP*_+*JJ{aOqdLiM3@smX2P5RvJmD3kcBX3fJ}sG zd`JM92m?TXQX3y$gb9E|kC_h$fJ+dj*S_;1wCWAeE#Sn507!JxQcrw9K8dv}T002ovPDHLkV1i?rw3Pq= diff --git a/graphics/pokemon/clodsire/icon.png b/graphics/pokemon/clodsire/icon.png index bcc0e34e5047df603c7fc74c7cd3ae5ce1c71c5e..277d20250b5899259261a39471790fc33bad6730 100755 GIT binary patch delta 728 zcmV;}0w?|H0`CQoBYy#eX+uL$Nkc;*P;zf(X>4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?th-n-u^w)>hA}4-EyfQ6>f3> z001yhOjJc;oP&ddbG^O2|NsBJq(S!fDb->@_LM1$d;ele&F*uY|Foo}#s6xooMK{H zK|w)TsgPs<008PqL_t(YiS3om4#F@DgGm-~AX5DPZ%a}-Mzgfy28Vspc9@-ZKeBhb zUHmBsR)3-~v(*lOn8_UGYMnOg4%#-ifGw@l^=9DB*ocyWsL4S%oWTJa;4s+25c8A_ z7!4vaZXteE{e)dVJ%u`^u8R7!s7iiJGi_L?=0|!{@J-vj`|55hz6cOYOT1*2Jic4{ z+~R{?Tzn69W^#-Fv>$rBr~U95|GFRE@vr+~h*56Q4=MfUegNh8r+zq8)ct^0Zez~l zU-Sd)-gxwUpZft#4#H6N1G?^xNk5?9g>NwFhoeBI{jmHM{FEoz#}L}i^@vFT0000< KMNUMnLSTX&_F>=v delta 335 zcmV-V0kHn>1?d8iBYyw^b5ch_0Itp)=>Px#Fi=cXMPi(TdwYAmy|n-T|8sNAq^$O| zgIeyzi^Z%d_Vy|EVp5cQ&Bdh6y(yexVp>5#LFq)aUjP6A=Sf6CR7i>KRm&2CKnN2& zz<414|F?zhT3uwF-r9qi(Sr%Fk4apX2Y(6#?nq;1s}%q-lYcpwt3IvP6|}A{0bA z7_3|5LvsH$A4ovi{wW_07Ii-0?c1nx`xp5D+urE@zUBkA?U0oDa8gY20euxdV3H3< hfK2n@_E+#zya0wv5lEqw@>u`?002ovPDHLkV1gDvqxk>; diff --git a/graphics/pokemon/crocalor/icon.png b/graphics/pokemon/crocalor/icon.png index dea043b25f3acc8044d066161aa76251631118a8..615e2e6de037dbf10393174a1bd345bbf780df54 100755 GIT binary patch delta 708 zcmV;#0z3Wp0+j}kBYy#eX+uL$Nkc;*P;zf(X>4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?h&5O-u^w)>hA}4-EyfQ6>f5o zEKlu?VsFbIU3n&?Bo`Tzg+G+naPm|Zvy?xj+?urrLtw%>6)^@{?& z=&gNl0BA&Q8v+(~19NVHh%mQi29d;pCSn&ilO>x3{G!_B#^d ztT<8Gt6vU;9B4tUpvq(p6QOsVn5=M`NS=QKy&o3TFAH&3Z>4b?Fs*v^t~4C+EY`kz zRpshUG@ccz)l_wj#+d6KRQ-8)dJ^D^(NaXq(354Nl!6hH>*IwPH=x+k5<{>)^}qGt zVa3B@2zWTc+9DqO3%Iqq_<)lpAE3by`JmtUu65VmK7Ro9NklKEol;iXEN3=0PC&KpT1obtWTBgr0R`vchg6xexSw zSbxww5aOxcO7k{gTKAe$DTsU)Yd^iZa`z^h&kEIUs=7uo=DG(}|2^EjF!04_Yoaam zVwq^IA#7?r{xI4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?h&5O-u^w)>hA}4-EyfQ6>f5o zAwGWr0ZBwbR7i>KRMBq3KnM$0Q1ep!|9?9}wkc`gR#jD{N#!AmVu!OK@v{88Leva) z5%G?(!Qu@85SilQ58w{(G;Zqrg4?Z;h=h~SwJXR@J zCCqxACd|6NK4JC&Q68AbanlqA28OSmE{-7{oo_=f@*Q&EkXE`j&AH@sW%ca6g>kj?AkNX(U)OYm1NM>y|Xn)Y$5>TDMvhHF7&x=zx z-cJ24b-F`LtmlgHv1P#n(3U(RsK zirM(YVD{2@`Neatgk_#daa+)GbNPOmvwvUr{!%})UG0pS!m5^=fBu#p>Zv^Rqi$_` zi{|!C-ZPRk7g;WeK2*Y3{IloGPnhN$7Vq*~*1G^01Pq?8elF{r5}E+q CJ(-#S diff --git a/graphics/pokemon/dachsbun/icon.png b/graphics/pokemon/dachsbun/icon.png index fe1caf375d7aa120a25db94ae6c67d0c68cd6f07..cb05cd3be699180bb63221027ee4682ed6e51f05 100644 GIT binary patch delta 424 zcmV;Z0ayN=1NQ}xBYy#eX+uL$Nkc;*P;zf(X>4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?h&5O-u^w)>hA}4-EyfQ6>f5o SAwQ9P{s{m{MNUMnLSTZSDZ@kn delta 77 zcmey)I+uBZ^5o5owvqxRL4Lsu|53q#fNtl_Zy6aGmHAR5JkxxA8MGJ}7&w3!1TFHi diff --git a/graphics/pokemon/decidueye/hisuian/icon.png b/graphics/pokemon/decidueye/hisuian/icon.png index 997071396f393ebfb463eeb9ac891cc1a02c3915..bd490472d20d318db180056634a3b9811ff2ac25 100755 GIT binary patch delta 290 zcmV+-0p0$Z1MC8j7#0Wv0000?P=%ZT0004VQb$4nuFf3kks&{S>PbXFR7i>Kl)Vna zFbITWK(KM||F%7nPARsBE~!)!dATqAIOvY!7Xup^x+EwERs01ZE+ClyXay-I7a5E6Q|5M~J_CN!Xldz9ISexys o&kY1+3u^;8{b6MwkM)NaSl$$-uR^CG00000NkvXXu0mh|f+UN5#Q*>R delta 336 zcmV-W0k8h-0-6Jm7zqRe0001qplF?uEa7bBm000ie000ie0hKEb8vpzl09$2Fc60Q4^EMoiInb0l!2{Lr80NHVk;BPMh6;hbAD_1@@7JU@aS3@>N_uV zXr>vd6uk;WDUR&++8E*eM98l^SS;X> zxl&3z49xl4xXR-~nIv>v)sr42!GNKAc+BcL4NFC9vU*5@z$M+)G-{hPZA!ENCoatJ z);Q;eaM9QONzo_nW8_f`*i539Zc{ul?QqMI-USBk0V8Y#jIc2<&;vt_9vJ!y{}vd} i2M5OU!GZZ@KE42~ShytVe~gC!00004Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?h&5O-u^w)>hA}4-EyfQ6>f5o zAwPfNNkl$Ek^VqF%_&D1c(}7>s9Y#qy~IPJkmyanB0O zxm7GbD7c61Ke=4{)aUD)cDM&Pee0LE9yWOe^|1BFdHWZa`w#UH!eof6A9$*x0R}-h t`Be~}L9T)r4KfO1Hpn0d|1f?dh!;?(6?jl+gp2?H002ovPDHLkV1kl$CyW39 delta 226 zcmaFHx{Yaq^5o5ow)FxfL4Lvi(ZE^7O;Z>c7?ygvIEHw1zMW#o$D+u?yq!TQBJuzK z?c$qN8CSjDz|zaE&NSuu&MsHEKbzRg{++nTkkiXv&+uT8H)F5H%B@mD%pRYniU{fR zJCrI|Z`CmDS`xF9t0JS|!1=?E)OJgHF(zD74tHw!y6&z`(mvitpX1^S6nq;rYdB;l zzW+JliSqL^oDT9r0e9ys{b1Az%&rKZvOa8QO~9)5xASA>?fupMu4c#Qhv(Ym6--1| U?_Y6wCeXzUp00i_>zopr063><=Kufz diff --git a/graphics/pokemon/dolliv/icon.png b/graphics/pokemon/dolliv/icon.png index 932b6e62ebc351543ed626aecb3dd60b00a100c2..bc2867dc75ecb6d95de630e80e067d3dfa43a291 100755 GIT binary patch delta 708 zcmV;#0z3WJ0+j}kBYy#eX+uL$Nkc;*P;zf(X>4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?h&5O-u^w)>hA}4-EyfQ6>f5o zEKl)-L9AqYin9w9*q_y7O4puRR~g;`8yR>PJn;zdqtpZF618mfHn zVvG=;^U`}aW`GSR4MfC@*fnLh6Jyts%-zDy1kJU<47 zz~qp30gW*<6n1_o^m2tigcG|UaKWW!nV)|cItEm8zugPfQ-8njP)h5sE?CkQV~S){ zR6q>Njpk(BF${B?DEFa(!pFh}Qg5SZa{e`3S}2yP&VS65VmK7Rn!NklC z|Nk~awpc0gQEZc9X?f-tJgq(P6#yDm`Q9xR1&;I9drwtB6C(y@mMKamkKTU?1RF?2 zR<9AkxAk6xtwult^F~O;UTK30%)3hgX@figarY=9$D1M!5?n+la=}30h|HOu@Nh@O zTx@S@5iy$Y+9PCI|C~Z?I$~W>QWh0Z$D+_WId>f+DU-}~XpquzA%g_RSPc33YdB&- zoYXr1#5S<8f4Tdn{bOT)me|<8J@&u$xM%;r@&D5P_1XT?{%`!v5}usr|KR`t002ov JPDHLkV1nXbcR~OF diff --git a/graphics/pokemon/dondozo/icon.png b/graphics/pokemon/dondozo/icon.png index 066128e0d48c4a72dd67f75b1816fda39facdd2c..a704280ec0414272fd8ff2a1bce351ecbfbfd786 100755 GIT binary patch delta 818 zcmV-21I_%@1A+&TBYy#eX+uL$Nkc;*P;zf(X>4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?h&5O-u^w)>hA}4-EyfQ6>f5o zAwGWreMv+?R7i>4mCS!@m@AcE zH*UPKI5P~~9vw(v2FGFen9xnF=txPvmNvYuYJP@?+wny^hQ?P?J@a$Je8k@R9EurK zk0oM7)I_@Q;phqn6$eQ?6_%+>Cz^&_64rl+hcXS3OoXQ1@ZrKtctc4wbQspYnp;L^ zcv^DMxl0?<3O4C!Am~==G@kYz*&-A#GeM!3!zoi@7Uu}H{4J#w;UEac5mEDf07S>_WBmT0ZpeNctVGKs{jB107*qoM6N<$g3}Fy^8f$< delta 386 zcmV-|0e$|02h;YuIV%`H-^vT{6aGGAuG@%@7@9AM75#x} zg!d$-GFBLK=x|~f$~xRZaZpv)uZDHsKBkU{G_QQkPz-UZ6g@1*>ibrg)pwf8X5ZjF zJacmuZiBCTmsu*n>36b^5@*Aq`me^f2=SEM5~A>7Pl%Zh)Cp1f5ZAvCSojcs@bdfG znGb;f<3s#doe%Q_8$K)m>3o<0l6(k23_hf>0%YMs1IWsU29U;w29T8xD?qL`g%4YR g%zW4Z4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?h&5O-u^w)>hA}4-EyfQ6>f5o zE<2hfbQ*&h)fkV)0jkp&OuT<>O@!hCdIOB)tcy57`&3uW-PJMCSoZ@C zIqUHaqVt$cMuWp&8jP{#^CZD#8e$N||3g7AKRh!#;5R7fneq zzcc22UgGdp|HJjm0%?9&2qZHJ1=8Z55rzV3@ee;>f%Lr|ek_m{|MUYCNQ-~?0SZ>6 z$3Ogl1Tx|uegFcw;vaqh0=eQJen0{l@lQVhfn4!VKLA1W_=g`*fJgk@4@e+a{Ga?V k;{V`>ZNz^a@Gr&x0~#_GgSL_vYXATM07*qoM6N<$f-`Yml>h($ delta 339 zcmV-Z0j&PS2B!m%BMSflb5ch_0Itp)>65VmKYt}jL_t(YiS3lpj)Oo5MH^uf63ONN z|8{|~?J9J9?It^qas&oEJ|5qD>@Kcr!c^CUL9qf1V~iDH>;SibSv>tI^%H%MIDprE5YuYZpJurJxK_cAqK(z4Fw_c zVa?)zcfj46vWM7_A2jt7@GU4rMY{S=#yroB4tMb{JAYd4Y2ZTc!@z~yhu-XF;bVtk zx4Tn-Px#Fi=cXMPi(TdwYAmy|n-T|8sNAq^$O|gIeyzi^Z%d_Vy|EVp5cQ&Bdh6y(yex zVp>5#LFq)aUjP6A=t)FDR7i>Klu--AFbISPf*ETmkiOhkHA?RB z_`3j3bUOq5gm?p3m4YiM+bR(>r1&sVhfudrJpf2Uz%r)Z0FVi&MYGZn*r+;FsG2qa ze-}g(3XP~&5#eEz8<-;j-2us_Ak3{Uvxqu&eGKqKXASm-fPM=dbs z{Rl9Dqt-tHs>1Xoe<4B#SHYEi%z$08$K0fL%g%eq99O?-PN5YJv%KR%aW((wsNx^( z`>+0Ctv~Gk;T=%@qxFaC9}9nY`G>CkVfx26e@Oqh{o!Zv1SanmNGLq2y#N3J07*qo IM6N<$f{Wmy2><{9 literal 0 HcmV?d00001 diff --git a/graphics/pokemon/eevee/partner/iconf.png b/graphics/pokemon/eevee/partner/iconf.png new file mode 100644 index 0000000000000000000000000000000000000000..c82f753f324c79487d45c99b812a0c9e06c7cbca GIT binary patch literal 362 zcmV-w0hRuVP)Px#Fi=cXMPi(TdwYAmy|n-T|8sNAq^$O|gIeyzi^Z%d_Vy|EVp5cQ&Bdh6y(yex zVp>5#LFq)aUjP6A=t)FDR7i>Klu--AFbISPfHs?)(HzeHtNU&+ISxU zHgHS^Cm^23_Njj&LI+R5lO1+Im-N^#snxOjJ7lb@zBIQ`3ezs{x=>v$KPoEaNBRHH z`5|RK?D^qkJf!?!Jm`_g`LW1{SAOU^A4YzB%ZHvHcRu{Ao)#Y#Lf=?bKL7v#07*qo IM6N<$g3b%7 literal 0 HcmV?d00001 diff --git a/graphics/pokemon/electrode/hisuian/icon.png b/graphics/pokemon/electrode/hisuian/icon.png index d624e246cb59c8bf27196d0faea8f8c2175428b5..76efc29827d66207d9b1e4b98d8cac14a4a32194 100644 GIT binary patch delta 194 zcmV;z06qVe0*wNY7#0Wv0000?P=%ZT0004VQb$4nuFf3kks&{Si%CR5R7i>KlR*xI zFbo4LIAkNG&i{YAPB^aH^9t1hE;BKusAHV`X_DFEV3rE8M_&u2#tZY7LV7$#J(Q7X z$Oc`Jfu09i`ZY4L7XU|<2*DE^uMQ74AsF9{;HR>|rdou3Y71DPIRyY#nNtcQ@9Rcm w&AHXUg`Qvk4Pb*IA7zVA-j#E@&*^?az8i-T=~ue`)Bpeg07*qoM6N<$f;KTvIsgCw delta 202 zcmV;*05$)O0+j-g7zqRe0001qplF?uEa7bBm000ie000ie0hKEb8vpGb7-t9qKUXjW*RWKr4(&Ga zakbrSdGuvxy#n(qlGl!O`n|AzALi}zxS2nhuJ0eI1y?PZ!_hUxP5=M^07*qoM6N<$ Ef;s6@)&Kwi diff --git a/graphics/pokemon/enamorus/icon.png b/graphics/pokemon/enamorus/icon.png index c127c07345928e0594282d69f6d67b78f0610585..3c808f30b13b394deab467a11624c20e01d94b64 100644 GIT binary patch delta 412 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 Ay#N3J literal 1269 zcmeAS@N?(olHy`uVBq!ia0vp^3P9|@!3-pQ0$S$)DfSXiUsv|$T#`)IOocqRLx4i! zC9V-A!TD(=<%vb94DLQIKw}ijQi~Lf^-Ky|mplY2;V3Eaa|g;81KA8-4Vv;miY49A z*O7r?V?XzwL{|XfiU~I7GR@2n%&}RL zY1C2d_aPwqw#>@?Cq6#={$u~58RqL=TeVkl1-vNse9}@BB4Ao^KB7sXoH3;-B2~bl z=ZH%v=gh3!Ywf8pQifh_9Ew2UuB!5Ct+2}_UWPgHba5>Ec;A_we}~b|5K>HCV!97T2Q|J mdi2)0z@XzxjqptK^<~fkvN?bl1TF4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?h&5O-u^w)>hA}4-EyfQ6>f5o zAwGWrS4l)cR7i>4l;MiRAPj^XTNM;C@Bg+psoiDmChoz(aa^FkGD(bfzHR&606qy0 ztVK8uX!aFnAyhT{0%U70DM`-iDZoOeDG+ssP>^#V#dps=F$x z4|W>k!OM|qcUg<2(z z1d5hf0Up1K+I3q4EmI4w(6#rbCg3Wlb3IybjS7C_#ma4fm9wl_56f3J(0d0P%r;HM zp1i!B5YJ9(Y4@+;YSziR`@b$kg&FM8kBzeseADHx&nB`I;2RG6%kd*T4EM))INfi* z#sl5|0T1Tx7!Sk!7al_QUwDY!f8il^{{s)9`!77i?tkJTbpOD^aK9e|5AmZt@UXce z-0?6;%>6SSW`3ORzvJPx#p&549?Y{VJY4Qy;Nf-D0uTR~4_^a%8jZ$k*Ixht002ov JPDHLkV1ia|aA5!d delta 313 zcmcb^*3CRYdGcmPn|cO;k|4j}|7hT>;-)DK3=F?KT^vI^I^Rw?z3Q+5kBhSPwu4PG z|Np;j?X^I4?WD5Omr6}*N=&Mbo&L1nt&S-y&N(K0(bFSh9t^tdH=OQxZM-%?Fl50U zCZ0?o#^P!F3xXr5?%)9a!z8GVM&u(Nn*pTWd5F@4URaVru}`*FPnh29*)# z`DRBeY`uJ1@ACAHSf)RZ_4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?h&5O-u^w)>hA}4-EyfQ6>f5o zAwPe}Nkl;Sjk0Z3}Jn|FnbYraMVoF~~&ornOV2Xu12ouYjkh z5ISHs#t@e{bl!#_N)WPdg{xZZ2#v-qRA4!-DH=i*)`8aw&?~}xjCY6V(<-ysp&pA& zX}@{+3lFMdX8a{AO^S)Aa>0nvXp8fHE=gW{$j9b_`~}1Q$Lirzr#|Xu{Hy-LpNnqz zSNX8;ukzuJKZSeYU*yAuf0+*x|1uvY{#8C)_?P)G@vrh>;$P>(8~;r{w7=m00DT=0 UuR3&k&Hw-a07*qoM6N<$g6{}0mjD0& delta 272 zcmX@h`j}~g^5o5ow)FxfL4Lvi(ZE^7O;Z>c7%q9bIEHw1zMXQA>xcn|3%Bjdj(`8} zznf8(=&Wx0c4df@zTH`kmpQkk|MzLl+jX*9k2rnY4rh}r7!g_pszSaI`j{(4@=sUC*z8>KEP83*5SoGPiae2QK8 zqU{!5*8Yl%T=PGkDHm5XmYwG=w=g8g!N1{&hEzx3JQ>%g=X0A*uVKCLp4Iuz+1)#< zgYs=Of`rBQhbl@y Q?=g6~`mwsKb4q9e0P{V2xc~qF diff --git a/graphics/pokemon/finizen/icon.png b/graphics/pokemon/finizen/icon.png index b82b4c673ff4a51c004c3d9623d40574bb3792de..b689ed7879d11ec6a8606d5b5dae5d5a01f1e120 100755 GIT binary patch delta 651 zcmV;60(AY+0^S9XBYy#eX+uL$Nkc;*P;zf(X>4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?h&5O-u^w)>hA}4-EyfQ6>f5o zAwPfFNkl#QElDvs_ah_nMxqQL#N?oF8Zb=kD-Q4;G2~4|(S_6i+07$BAcYJ8 zrMd9I1b_%Sp2f<#Fi|CvV9WV<5i<>N$7tdu&qLFWatFHR2 zzUzl%zxP81bbiQ2=>3ofG(RMY>isZ(|G^I-ke<=wz_TA9qa~U^iXTidbh!)U{QQY1 lLm*8LGw^t$bGV;!#0|m75M@cz&X@oI002ovPDHLkV1kDqD`5Zt delta 253 zcmcb|dXZ^@^5o5ow)FxfL4Lvi(ZE^7O;Z>c7!G*4IEHw1zMbO8*KEMUviQx>wKDJj z*GH=}MLiOTTG<|!)c@v$o12eUc%A7J&wd+qjsmkTNv*YuvQ#{pS5>&Ot1$dKvt{X& z!u>2$H|%JN=Fc#E+4-D7eMx`{lS3Z2%O459qAv^ut6QS-jwi_+*xkSW$P2ez=1rza zHAhrSPkbp3$+#B3^Hboy=k3j&v*p{WD!v|m@%{eKgKdBB@wYQY{t<{<^tt(K)r-FZ wUj+VKkbfj=|Ke49v+}w+i;K>`ylrh5dd>-`1ROiZ1N01or>mdKI;Vst01z~MV*mgE diff --git a/graphics/pokemon/flamigo/icon.png b/graphics/pokemon/flamigo/icon.png index 0f0381579cbb2ca40770bb79b7dc4ba3f6a56506..f1970373f4ecc647bced11edfac3be01b69dfcb3 100755 GIT binary patch delta 666 zcmV;L0%iT91IPuCBYy#eX+uL$Nkc;*P;zf(X>4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?h&5O-u^w)>hA}4-EyfQ6>f5o zAsT;__Db$^oc5IVy`)<9<|+2}tku5#L1{UCTL1t6!%0LzR7i>4lrati zF$e^0Q-EBs|Nm_;O1iLIlPEdb9f6Il8RPE?Q8YF)sR@XP$u0@ZIYlO4K0CzCQqi%o#g}O!nS@Ln|4*R`X2EVZfahvDhW09x(9MV07hHH zm=cI}o^!BY6K|pA8J~pD#X5*A{x28#l+O_y0GpqA0}Oh=TNFAwNN0!nc{_M#2YkT} zmw+pNV0rq13MBnNZjydr0(tp?N$3asa8p4%0C58j=`=m=WdHyG07*qoM6N<$f@^Xu AjsO4v delta 373 zcmX@Xx|n%_^5o5o67`N*Q{ENN`8MU--X&4rzI87-`afyPlB-FMNl8(Tj*bgYi8BC! zKuM5a@P9OLR&mo51_nkUPZ!4!kIuJK949dua<~d_VyHg2|9>vKRiT>Jg5Y;L7hmz} zJ6xK3{nqM6<1QP)mlH%j?h$Sldc^fWNZ8oF{#IcO*Mip;e3N=MJU#3rwBUPRo1>CU zKPS7CispkBb*%+wYc4(DchK&;Bdu{m$#KIc2JatXG6^@%f0ps7-ZrC>yKaW~nxy(O zH5(G&FEDESS&?zDj<09Q;a{(64s5R55_o^HzFuF})a!o^EL^hc=JZOT6dz8W3mWl1 z9cGp<*p-mAtzZ51+fO0FRjg~hw^TKiKXU$~cuBi{L&V=h^1%jE<>JJ6>_0Q#`sB>E zLeKt)c=l&!i!<-qJrv68I9N9QR1`V!uH8jpx4cs0oga#ZPp|Xu7yb9TU0y6!LZH6w RlpiSYJYD@<);T3K0RWFfvY7w? diff --git a/graphics/pokemon/flittle/icon.png b/graphics/pokemon/flittle/icon.png index f588d537efad1163eeffea4c8541a1575484a1da..1f96368e8970ad313c611d7a4f986a29e27262a4 100755 GIT binary patch delta 655 zcmV;A0&xAp0=ET_BYy#eX+uL$Nkc;*P;zf(X>4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?h&5O-u^w)>hA}4-EyfQ6>f5o zAryamoJyR{N|g3W?sJ^>l=i)(TK48C_V%pR)oSKSDPm$;K|w)jIel9I006Q{L_t(Y ziS3lZ3Ij0+M1wg*JvjgWx7An{N@G&!sb%LnZ)4oRYwgaD1~}A2*nyyt0D5r}#LPcN z?*#!<4@^2O35aHd)|Y@XbM#gWP*Khk3P5ux$`bIqQH+;>7KE>;K4AiCAee30C!!4%1sAKE|r;Q`m_4c?w6-Ua{w002ovPDHLkV1n&(FcAO% delta 282 zcmdnadWdO)^5o5oLiLVWQkk}>-Kf4gr3POsiwX}Z?E5@jpk7izDfGWpMv{YT3!|CoJ(s8m->8Dq zDN({JbXYvZo_FvrP~NP@WWC@tSN+7N(-OE=6v=N|+ZeFgEJr(gN4wy0m(XmB6_V%A z_^rB8nz4UF=fmfLX6Lou{y3Tc4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?h&5O-u^w)>hA}4-EyfQ6>f5o zAwPfcNkl$w zpolj6z7?NF^ng$YP>OdNo3J8YMO0&f57K{RHfVAZA?*wsxI3MD@oBJm~^1E<=_)PP>8$2B#cg)oj{1Aicf&c&j07(Z$ JPDHLkV1mH`JjDP2 delta 298 zcmey$`j=^f^5o5ow)FxfL4Lsu|53q#fNp0728K7DE{-7{oo}aja~(F|abcc!i{2nkL%bK?Z{;8jIz(Fv#Y@g_Sx01#H_JFQ%Df2{6 zo9-3I*yNY6hPq!?X+N61c5Sa%_|EA6qVFzLgngE+6^VUoIqB?zz1t-x|^5C&+c)oomoLr{+Ws_kW_P2a|p7NaFkK7lwb2( q-Qm;z+wzQ$jL$xf`~Q+*C-e51!oO1US=Ix6&fw|l=d#Wzp$Pz+V1wxZ diff --git a/graphics/pokemon/flutter_mane/icon.png b/graphics/pokemon/flutter_mane/icon.png index 2b65fc048f897ec8aab0091f0c9c77011d2b4fcb..ab756908b9b8be3a0d0409a115be1b3762825fbf 100755 GIT binary patch delta 766 zcmV4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?th-n-u^w)>hA}4-EyfQ6>f3> z001yhOjJc;oP&FNd%eB1|NsAUbIqiz_Oydq?!}A6tSR>PDfVJglzYv^q|Lo4oMK{H zK|w+3M6_Q3009t5L_t(YiRF~Rj>8}fL@_59M>GHbx3x(X6%3n|b`RCA+e4Ij84So% z%3mt-4u3dqh!MzsJRrQJl^p}{p9bN0wh)1<&HrRA$-;F(Q)rWhQft=DASwp0T5DQ? zp_}Xe@u`!;P6DuiY7pKp4aZv_jL#()DHRYzNAJr}5Ek8}i$M<#{>pj<6SVJn?18YW zI+PD8-ah!ycv$G?QM6O%`tE~ZbhEv87C&mB?RNoffa%u4-J^fieAO@D>>s*c!n{w} zY~j@<_glEuxdHxr{X8CKA~}xvurmC_d{_WOK1>0U^I;Bm;e9( delta 377 zcmV-<0fzpS29pDjBYyxeP)t-sVw{6>b924Dz5oCJdz?y~%}POPlVw9xSVnJeJT0ucUp~@Ek0000GbW%=J|NsC0|NsC0|NsC0|NsC0%^|Xs00033 zNkl_ZjAucRhbthP<-gZB?vGl;Uaw( z#8V-_+}%ZoT);?0N?S?_-E{!nDr|$$e>TW9n z_OOWKG*>OeqH;uK0U-7uJge1f#NHL$qS^9##TQpx+`g-;dDp+|V>`V4Fa!H4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?th-n-u^w)>hA}4-EyfQ6>f3> z001yhOjJc;oP&ddbG^O2|NsBJq(S!fDb->@_LM1$d;ele&F*uY|Foo}#s6xooMK{H zK|w)TsgPs<005~;L_t(YiS3lZ3Ij0+L|0>OiSz$|+ev!agW5u&(2{{Y`OvJwyRMVp z44ASmDt}r)tgHI^5(3?JT{Q+^4gy9@LIMWi5O_~oz@)YHNCIICuufuksDSl`5a0t_ z)0zJURD4bsmuv!;;4XVvG0@>-434mP4ZM_W!g~Tdj|pU(zF~F!cK6*o-*%5Cv!Y0`wdSt(w%($&dcMpT-r=C#zqX9Gk+_7}6DETV(PWREl$UuyE{k2xNRF%kwsV(?)@Xs+Na#^>nF6 zt$x8FedMAE2fM+e3z}O`TG{aX)}Px{QhqjkvF(1l-SVg0e>HBFzx18?i~j4g&hCAs tA|5wX>O8iDDyVVvRDEFmbp7uK2F=$z39T0%JOKKD!PC{xWt~$(69CkRkAnaJ diff --git a/graphics/pokemon/fuecoco/icon.png b/graphics/pokemon/fuecoco/icon.png index 923e5f03fd97a16c71957613d02ec8cdf029685a..31bcf19b0f301435d254985bb4b88924beaf3179 100755 GIT binary patch delta 676 zcmV;V0$csH0=or}BYy#eX+uL$Nkc;*P;zf(X>4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?th-n-u^w)>hA}4-EyfQ6>f3> z001yhOjJc;oP&FNd%eB1|NsAUbIqiz_Oydq?!}A6tSR>PDfVJglzYv^q|Lo4oMK{H zK|w+3M6_Q3006d0L_t(YiS3lZ4#Xe`M4On1a+vx5zb$auwqS3&o2GN+IST4*+pF)3 z#&J+%DL_dX8 zTL2PWz}m>BMOB!h4$a0zqMP9Ld|c!hPN1ubWSewYtG>KTej)VBCKT(3bNjAdJw*SI zAkPbs3v&n%>-FqH{R|MD*KLjgqRIF70I{EssvUmHhkO#h%7-1Mk`GXNVFh>q0000< KMNUMnLSTY67Cz_z delta 283 zcmdnZx|L~yay^4VfKP~P(wyez=Hk73_x}I?fA12k6Dq& zIj}*YG3EdN`(`_(Z#6EttgGwhQzzk~Qa`=uOUnuUvV6^h_pC3AY~xc?jG54QWc@l* zr>3jnJ^?;cqL>>*x5WrPU^JQ@D=1j@-$ap#%P_sv-s=E^LCD-2wdz;-f6Fb-ch)fD zJ|LX(T01H`$!^=ey^e}W{ueT2_Ox8651v{7#s61l+sV$|i4{`MvLt$?pDlLSG}Asn bL0^O~iPwVj%fx#?7c+Re`njxgN@xNAXJCW7 diff --git a/graphics/pokemon/garganacl/icon.png b/graphics/pokemon/garganacl/icon.png index bc2d038478cd2fec5c7506bb406211a2cf25569d..e9a02452778e3a7d8c56ad4370bfa241161dbff6 100755 GIT binary patch delta 797 zcmV+&1LFM01MLQoBYy#eX+uL$Nkc;*P;zf(X>4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?h&5O-u^w)>hA}4-EyfQ6>f5o zAwGWrXh}ptR7i>Kl+lg@AqYi@CYrv;|Nrg61r?pK+cxRLCTlWwDn~#@F3}rCpYI5G%k70EMu64t+Su!_3cs^d@1-{#e@p0000 delta 373 zcmV-*0gC?Z2FC-CBa^cMJbwTXbW%=J|NsC0|NsC0|NsC0|NsC0%^|Xs0003tNkl|F<2m(+1-ts`j#na%#eq0qmD;`!dwxE?*Eg0?*U6py%%d zLESm5>}vx z7swvgg6=!*`yq%PaDYYmILsb4q%t%07PE)?=${tSBHTjGG4DZ}%9sMlA}tM3wTunn zuv)8ivcQYha26!kH{)?SEvwKfj>0UMv@VCJURMb}=Zj@`!QZO8Nm&W-*0+Q5Xrm+n z9j6SP$Si>35cF%8k7{%5nDi~kSE}FT0oOI4`h@RO{P6$bzx^NlnXmCj0aA|mCpORc zSB(Ov|AfEs9TZOg34iJzfFKxHcl@o@ATas^{{9rZjQGPU-^z&pc1h@;@lWvrM}i=b TWzVd+00000NkvXXu0mjf4==$g diff --git a/graphics/pokemon/gholdengo/icon.png b/graphics/pokemon/gholdengo/icon.png index 99d0e122f2b40287c125747192b80124137eead9..a49e6561a9a95011bad7f3b65d9eb433a2da555b 100755 GIT binary patch delta 721 zcmV;?0xtcX1EL0yBYy#eX+uL$Nkc;*P;zf(X>4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?h&5O-u^w)>hA}4-EyfQ6>f5o zAwGWr9Z5t%R7i>4l)(-HF$hGrDYO^E{QuuNbd6mVy2f}gl0BI4ECo8VZNC@5Nxmyq z461e`lbsF%MkWN9tkqQfivaX4!qbI$k$`Z(q#1iPbs4!}9)Rry-K8IT$Q5qbxhe3b)>mYz87yxs;YaiCsGF%v7gsS3rl*X6l6W2 z%HoyKhg*dV!9h$PAHOKN-n{zX!{h@i9k;2v)pvakeIw+-R(eFmC}VytU&-taMRy7F z79AZ|l^2o$%Nw?=lR8!F^!C;#x0zGtR& a=zq55YsGYCx_n*B00f?{elF{r5}E){ETdNd diff --git a/graphics/pokemon/gimmighoul/icon.png b/graphics/pokemon/gimmighoul/icon.png index 91914063265b96b679842a5a852fea286e966e84..79167add314e0a639c4c2785c15b10db70b63e76 100644 GIT binary patch delta 415 zcmV;Q0bu^11C$1kBYy#eX+uL$Nkc;*P;zf(X>4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?h&5O-u^w)>hA}4-EyfQ6>f5o JAwIEtB>^`}zc2s* delta 42 lcmbQjwt#tp^5o5oHc|`%B|(0{4F6HVfq-u3&2Jgi83Dp)7o7kA diff --git a/graphics/pokemon/gimmighoul/roaming/icon.png b/graphics/pokemon/gimmighoul/roaming/icon.png index e803b525545897761f4137c46ade0df4144024f5..13ec7881b5040f8b49a44b891dd6fae063c272eb 100644 GIT binary patch delta 424 zcmV;Z0ayOS0-gnsBYy#eX+uL$Nkc;*P;zf(X>4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?h&5O-u^w)>hA}4-EyfQ6>f5o SAwQ9Pr3nB@MNUMnLSTYPk;1qD delta 76 zcmbQodW30$^5o5owvqxRL4Lsu|53q#fNtl>Zy8r8^QA_3ruq6ZXfZG_Z~!p~Tne5H OqC8#wT-G@yGywpFGaozv diff --git a/graphics/pokemon/glimmet/icon.png b/graphics/pokemon/glimmet/icon.png index 1bc74def326e19676e980d1632b145d19b1a8010..c7b16b56314c80f8a8e15895d53f8007a2353b89 100755 GIT binary patch delta 602 zcmV-g0;T=90<8s*BYy#eX+uL$Nkc;*P;zf(X>4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?h&5O-u^w)>hA}4-EyfQ6>f5o zAwPepNkl1!K>jfw9#pXp&b~HKQ~&?~07*qoM6N<$f*0o!YXATM delta 228 zcmZ3>x`Szg^5o5ow)FxfL4Lvi(ZE^7O;Z>c7?yjwIEHw1zMXQAi&>G!MRi+(!kIt+ z@0(q0jT4$aFKR{eo78*9BvPZSe?>g$wco}do$LPN{oyN`V$v5M1TF6}aw%WRE({&lown5fIVRJt&!!Q)4rPzcL1$w-fT%Y&{j2{DxoJ2Q*h^z`4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?h&5O-u^w)>hA}4-EyfQ6>f5o zAwGWrc1c7*R7i>KmD`TOFbqT+1d=WJ^8bIkW5={4O+ovxPfLVAXilBj@wnUeU4OD1 z>#a;gddY+=5{NAcC!>(fjA#+0^iTzH^n^GYmrSvZh)+5IAi2wmi2RJXRA3|E-dZz6 z=|t?J@{)_+ZU9;bqz<9BhwzXe?XgFQ#fN{sMf`SecdJ8yV^qWRAn-4@2&Ajbs>31U ziAW=UgHqP14p{t*fTx*PmE?}3yts@AQONa$C-Sam{6kCqoAs#--aGNyT*?Nb=%m0(EyTiE;5Sprh z;&+EL)f^nsM4714eBQ-ahZu3aQkA62+*F=Jw5~HQVjEZNk;5FSpHkTBJ>jZ({A-7! pS;4%0qg-|C3-M`u{C>Xt0EM$3Zl({i4mtn;002ovPDHLkV1lb*hK&FK delta 437 zcmV;m0ZRV+28INXBa^cMJbwTXbW%=J|NsC0|NsC0|NsC0|NsC0%^|Xs0004XNkl+nu z2BJ&Cx^~E_+WVqN=}_70$O$o0D!F4DW}9>e9En|41n#Fqr8+hOW`C_U^(skV7vYz? z*zM*(OMvSTqI(I0{AiE80u~+mhWhQ^?plX%j=UQx2jTz47C=%Z5*ZGOPv9E(3ra|) zKKP<%1^+bBs*{vR$cx87i9)U)Jdk&uu@9E|H|tXyES-2AF83R|I(vTC-HFV~fvo`q zGpHqCna!~D0&v?!IDacxC&0MEjodf13lqy6ou diff --git a/graphics/pokemon/goodra/hisuian/icon.png b/graphics/pokemon/goodra/hisuian/icon.png index 3216854349ee5150f774993210ed9c1700bcc54b..283617c206abdbf426680e7bc5c13cb36f7bdcce 100644 GIT binary patch delta 402 zcmV;D0d4;M1KR_T7#0Wv0000?P=%ZT0004VQb$4nuFf3kks&^R0a-~zK~zYI?Ud1u z#2^So3p`4=|NplG)M?RblYQGw*7Rxa5iMoTar~hL;5|2H9329lIGEWWf}l9oh(L^u zCDs`yG6E(i!HC^60guJ}kJ&L|y>#(*Do| zs26}E3B*c(=srS!wW$`sW1|B2-H0g&`!*qR8alz|WkfnbGmyEObmGkG5zMV+9t7E( z$Lmu&b0;!3)8Puy?dWC_3FzaC$MKXsi|zCrAoN^FjoM>*I@N5`CkMX3%$kY z<0o0V`;z33in$2%VBCObZsCrOS%8tSlgJTi4PZu4YeWeSKn76PcZW(+C;*G75{G|% zZpS^{u~doeP&ENCI`C|)bUo81H>1{u^$YzL#>(z%ZFf80WOe{HVMzZ16*bX|uLGtA6@=5qN{h4_fa67z{dKQSo$T&<2q=-%keNuKJo=)M|~zWxveV${vJU&6^=+-!8@l f1hEhCC|=hud=}QbYP4mw00000NkvXXu0mjf`TfIL diff --git a/graphics/pokemon/gouging_fire/icon.png b/graphics/pokemon/gouging_fire/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..38e429abbf3f52938a412533faa1b56bd70228d6 GIT binary patch literal 551 zcmV+?0@(eDP)Px#Fi=cXMPi(TdwYAmy|n-T|9hNDoXtwKgIeyzi^Z%d_Vy{&VnLL9&Bdh6_LM1N zVp>5#LGybyN&o->rAb6VR7i>4l-q8^APhuf8zG>w{r`X4F$uYlWc$*WmfdWmo$-K4 zILq=o!`(mYBE>i3v(t-+L+-a1N3FPCbr?#8N9;Wy)mn?yM}xc7loBqOo*ZbRCN14m zEEc;=&0vP2_(lTO$rj)4*_vM*2~{-`iWwV|i7@`>?vhwT2}9^?gpV*IYi%1hv$V|+ z#YBb}7=%{?;>2o6rPo6z%eiOtZE^H3D20q)6N`Gwh+tlOachv)fv09+wS-PKeeu>B zQW~cy4H!nag!xRHsy54^TfR6jU1p}%6iOHhx|keci1Hkg$6C$? z&)67JjrJ|p=8<%Axb-@`!q5$l!zb6TaL4vh#suKU*_EIv<2>%rF5Y_<-uYr3oN|4{}U! z0SFB~@Nv4&03kd0F!UK9gAeD^e*wtg!?9m?fJ}V21LVes86Yzs0FZV74Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?h&5O-u^w)>hA}4-EyfQ6>f5o zAwGWrSV=@dR7i>Kl)-MqFbG70u`1j+@c)0?!A`oeV;WUzZ);^wjDZEu+qU<49kV9^ zbxEi*C70N4fyPvI-_3t}Pi13O7a)o+yTDq;DFwng<3kc7KVuH0*fXgT6iQtnVuQex zGc$6K3#Yg@C7cp-kt;#bsSEK0MWhnaAzpvR6q{8Difpy|?G~Skuo6qHl}Rn7RM6E_ zgIvK}QQH+V&(w#LvWWL)CE0C(7@rwth5P8>z7i|PQK3PLDd}QmCLf=u0)ejXdj?cU zXdQxJ<$aB4GVu=&%tVj-9~dg3l{nlgJw4#}`PcJ%fZXl>0?5+-BS04RzW~ztu(oi2 z2MG8O*uMkB`LMSCH$X~Y{|g|E4}tyV0fheD2F(MIBa^cMJbwTXbW%=J|NsC0|NsC0|NsC0|NsC0%^|Xs0003zNklR~UfYH1Ivc^aF5XWRZ{VWp{vv>;SOj8g!R zm?Xxj1){22NdT8YylQTONLtlo1k4o__7D{D^qez7Fd$^Qrf4QXCV$DFdd`%M*LHY1 zNXQ1LRK$=Dpe#jANU2hUs)Ia7(Z9-=dnu<_o7TaOL9$ni^Ayvl0~FB_6xy@u0CTTf z8`JmejEPxB;wmydC3bG4HntAT$-58O_^gvE;9jV(XlMOqllxYHVLzTenb%R>DNG41 zejR1?vMaRG|Ldpqt8fCup_%|0H?Iwle)F6F>6Y6Kkk-KokSE{;NOKA&K)U4~0%Y9I zEA&~X5FfQ;z?-P^;~_A5Z#um*nz$RzG@2Z*b0*uy$N>`|@*#F+O7 Z$On+08;7+|Xi5M8002ovPDHLkV1fn4xflQd diff --git a/graphics/pokemon/great_tusk/icon.png b/graphics/pokemon/great_tusk/icon.png index 30384d570dadafef2a510fb921b100651ec86651..60bbe9f419b85ec53e2040cf6d2e6d0661b49c63 100755 GIT binary patch delta 897 zcmV-{1AhFK1kneOBYy#eX+uL$Nkc;*P;zf(X>4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?h&5O-u^w)>hA}4-EyfQ6>f5o zAwGWr%t=H+R7i>Kl--U4AqYknO^l%i-v4d)1Am}RZF;-Oda-MVBO>FRpP#=vR6j?R zuK<=R3paU7cuSwEq5(qs0HCGTT6}+@7=7zIN3zyI^ING3;*V5J*V^2|t8D*uJkVknm+g2t=|#k{^yhjvr{XfBGQ=vivXwlKgN4lKkLZ z%zkizY(H#)EI))mjvq`Q$qz>$=^IrIKZHOoeh7iQ-k0r%n?SZ7?gH6j_#luc?(6Xj Xur?&wtJV>A00000NkvXXu0mjfh?beo delta 452 zcmV;#0XzQD2bBbnBa^cMJbwTXbW%=J|NsC0|NsC0|NsC0|NsC0%^|Xs0004mNklQJ3g3i+gm=Et@tqIB_Di8uY54q$p;+( zx$waOf@swfUipyj01+6Fck-bHA8s}+=(B2_O-w%A$cKCZ$T>3~f*`i$1Coz7b{N%x u500--`EbX>k`FfMu;#<0!4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?th-n-u^w)>hA}4-EyfQ6>f3> z001yhOjJc;oP&ddbG^O2|NsBJq(S!fDb->@_LM1$d;ele&F*uY|Foo}#s6xooMK{H zK|w)TsgPs<007!aL_t(YiS3k24udcZL`hPR7nbM#x9ymKR4I;GlubqLu$mV;KW15; z8Mx9VCx0NX6o9O2T7m^~V1Ze#H%8i`wpMol6Abmx!#V)Y4j}+#G*xntIs(+i5jFq9 z0@e`+g2UhmD2K~X83B~y6U_%i>Og?Sg<;wZQtGfs7)55`MqM6T_yU-nh+YMH3kQH& zqHXRyxEUT|coQt^$;q?pM9-^N`;VLATYLC1e?geNtkWMR|No~y1i&Nwp_pyVsXsu= urkf`Ia2iPF54(ZP{oyc>#2>nW+#hd_rV|_USGgnr0000Vu1?&QlBYyxeP)t-sVw{6}dwadTwEzGAb92q4toF2nTJFV*#jGjz_9^ya zQj~km#iY%>DV$0!G}TLPy%9DgX(%krCnyZW9J*dHl? zeO*%t3go~7v%KCIX^YxgJpfEF)UzJy0Ju7Y0F=>G$wBG}ur7|M`3wcDBMwL)V5S^i zhRO(_6kljQAW{bc6c>hRGf1h!CSfcx3lHk$v4wAd*$G6O>@6GsYKe|{^x$Fm5yP9H ztS1-Gt`j})UQ6viJ{0fT!}6g4F!}#q{UHE;!XJv+#+>>Cv~0R*;t!XBWd3j% k$lM=J14;a$8_4J52?t~k_cYx&82|tP07*qoM6N<$g7n0t;Q#;t diff --git a/graphics/pokemon/growlithe/hisuian/icon.png b/graphics/pokemon/growlithe/hisuian/icon.png index b2b03733f0ff1b2db1108ff6de6f59d3c61345c5..71a2ffdbae84f6d74b99a415f179792caab60206 100644 GIT binary patch delta 256 zcmV+b0ssET0?PuB7#0Wv0000?P=%ZT0004VQb$4nuFf3kks&{S$w@>(R7i>Kl*tan zAPhqrN|Rgs|9?9UAdRLhJyn_mk*Y3!3T{9?j$LmQ@Svw90Z2+RC*X z5O?8aoJ28n*ZE0bqPZD|8IK(hM4crUk$%@eXJO9O*#jgIPF{?IXoT7UH?=&Kz4w9U6ue@<)-7D9h*o0000=W77zqRe0001qplF?uEa7bBm000ie000ie0hKEb8vp>hBI8mwr> zogyyfm2yxX$hPu^tF!j$34Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?h&5O-u^w)>hA}4-EyfQ6>f5o zAryaebIqiz_Oydq?!}A6tSR>PDfVJglzYv^q|Lo4oMK{HK|w+3M6_Q300Cu5L_t(Y ziS3llj>9krgaaHMG4KDjI}q22sa>tKdn|`46=T3Z^Bu=GN&xtrH?xpn2MfuG=JQMtx$=J+0_EQ_GfQ}LRWmC1>oxBhr-F?%^JNcQ=`Ds+3q@>cJ_R#w!eb%F3&Grjd!|C=>K|K~1zhizWkaD^ z!b<^(^2#O>5;uPe@Jf2Gz;Av$1RRemcoQ5n2ZT*G1+myYuTzi%@}}m;5N|;u5TAeb z5L1CnGat>CPw#qY5Xk438Qs6}$M~)LxB2e=Cm&|P<$hk);6r&c-Tip*p;+hT{-JmW zNVk@TsjaPbsx$-7Mx*KL8qL|R_vT_v+6Tgg?E~S`?0+MW5-YGS%DDyt zW3jI46^2B!=8morS@W&6o-=FwIV30Ghz7zg9|eLluPQcyctm6X$dkyKT|x?gN3(T^%>vCNg@(--*=pP}#uLHo* zKLEt1hs~b+gD)YHZmWNI@u;}>b{kB$hZ}f0&<;!o+Wcdj*l?iDKT_i1KppS_6bD-T o!+Q;%4&?IYAKv{#{;hxf07(NQcbv{VRR91007*qoM6N<$f;R&2egFUf diff --git a/graphics/pokemon/hydrapple/icon.png b/graphics/pokemon/hydrapple/icon.png index 352513f9983a2b92470a7e86d41f9482cbc2d11e..1d7ce98bc70f0380d60a0159a97cf374eea92af8 100644 GIT binary patch delta 462 zcmV;<0Wtoj1l$9V7=H)@0000?P=%ZT0004VQb$4nuFf3k0000mP)t-sVw{6}dwadT zwEzGAdz?y~%}TU`TJFV*#jGjz_9@k3L6m#V#iY&llqq6jT0ucU^LsW*00046Nkly(Qd;q2t_N+V1i`$|G(YEanlDwx;<>utiCjyVj%Q99)I6C{x1FoaQ1sD06(ep zdM7hitrEB!HEO*E#E9A<)~YK6zdw$nwUR*m0~xp?0?@-)I0f7(NL!C8zBN_#3vyz$t)d?V~jsO4v07*qoM6N<$ Eg57=4T>t<8 delta 537 zcmV+!0_OeP1EvI!7=Hu<0001qplF={001yhOjJc;oP%?7bG^O2|NsAcoJyR{N|g3W z?sJ^>l=i)(TK48C_V%pR)oSKSDPm$;K|w)jIel9I00EatL_t(Ijiu7TYQiuW2k^W> z9>JIC9Cg@UT0F@vk{vvZoxa0xdkGmx54{cayjzhyg@hrgmwygHXsS>*#;94lrm?Bp z$=v$q`_d%e523%;w(*U(Na#UJw6tIs-_@H0O4m2Zu?O4OxZ>@Bs!46!d5Q?RRe_bx zresJ|Notw1>2Mgls36LN;NTiE5c!rHPhj_2{$r35bK|4^*p>kyq%(cRPSsHahR64Y zRR!&K5b!s5ynkNF?1{`7-IlWNG03CQ3!-Dbj5S9C8BNp;C=c!@(We+gMXqZe4U%u>TUIGta z6Ti9-rw|qu>STEb<8i1af#V`!No`bF7&B2H9u`8M_J7Gb@zHAd*d>~eoP*}0;BZ;@ zQE>1yA329--G|xm5$QgDIZTc|N)B}&B?sMy;o+K(?tDHM+oKQky<7@}bstFVbszW~ zA2LurDlq^15J|&_6*YaB4Ig7){-*L#&HGFrKb7`ikyE4d?*IS*4rN$LW=%~1DgXcg b2mk;801^NI0Mb*F00000NkvXXu0mjf9%A;F diff --git a/graphics/pokemon/iron_boulder/icon.png b/graphics/pokemon/iron_boulder/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..eafb584ccce331f1605d5ed20de4c7accd15c5f0 GIT binary patch literal 503 zcmVPx#Fi=cXMPi(TdwYAmy|n-T|9hNDoXtwKgIeyzi^Z%d_Vy{&VnLL9&Bdh6_LM1N zVp>5#LGybyN&o->bxA})R7i>Cl*?{~FbqVoSs+ES=l}n<9tZM(aJy`)W^;8j<0o*o z?YAA^8(jpSjG?<@G(HR-2MGP{$gt4iqU!lO8DL3j=R@3jT@g z%8f?+&Jj3vn^d`4t-Je+nn$}o}c8yrN8mv0>~R5E`YrA;RJ}Egh<1{hdV&>wVwF! z29Tk`0w5C~762Lfum;G)hXp_;KCA#T^I-{)J0B*1Ecq}1r19YbME&0RJtaW0&^7>~ t<6-7Q1H=sv4?x`T@B{?zU-RDs#202bA{gF?&1nDt002ovPDHLkV1kx(4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?h&5O-u^w)>hA}4-EyfQ6>f5o zAwPfVNklClS&BOa(-610=zS5E4Nr0W*jQOE<(UdsUr+$*X?47x8q!+M3M1rwM8%949** zMC%dRKN$n1faNX&DN%if`*!sq@@j?(X*gYhS-2 zKjtO8$d4HheSX~Iq05g)Jai_0Iv(C4AKpD4J^NlJe^zxj&v!BQI!mDpg9Ui;;vhQEy zix5;WS?9uZmbqxFwNf1CtV6l?%cE4=r1;A>`zNUg_O7tI{Nd}th_1+ep{s4qdnm5{ z-rMo~$>j}_2a7Mgk1mvsxnf>0bP0l+XkKyswi- diff --git a/graphics/pokemon/iron_crown/icon.png b/graphics/pokemon/iron_crown/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..cb127c82df9ef226d11eae2af6994c716a57cb08 GIT binary patch literal 461 zcmV;;0W$uHP)Px#Fi=cXMPi(Tb8~aOy}kec|3PY$Vw9w$#sBVeoYi7My`)<9<|+2}tku5#K>{wlk^le!OG!jQR7i>Cl)-WYAqYfw5UA1v{QuvkQFk|S(8?i)tqMo_4I+d6 zc>G~F;tWVp@7zw;kS3M^JwLHbuhmdp%dQWvW>R%iJ^&MGwTW$e)S|5kxLu0~5n~;| zdRa7Ip!-WNv;ZV>;i4=ZaI*Cvr;89T;JOyVBS*|;_%_k|Jq>b;d4bD-W)ynGK$ug# zbfD|WFaqF)d7E&dJK>CzrQsGVOgSJBW137hZ+io102p)9C5S$!IjNjL;QN@eCyOz1 z-T}Yvqjc@LQQIv6`bVxjb~o9pp2In`-O5pilHYWz^U3jBgE;8JAa-@!hrh%dONn6+ zaY|mnD;`Gp!`47d^yCjXTFb#7u(9R4Kiv9o(!Q@xeYJ>)Pp?GNemU;H8I z^rt^$z`yW^c>O1Tn6H2D56{%WAI1hugV?{2k2HucYYrI&0c`zz00000NkvXXu0mjf Dm8#OL literal 0 HcmV?d00001 diff --git a/graphics/pokemon/iron_hands/icon.png b/graphics/pokemon/iron_hands/icon.png index d28b62a6d0e851dad8d4bb1c9fd5bd9d252907df..5fc933dd96430e693e48ef8e9542ec95244b8f37 100755 GIT binary patch delta 838 zcmV-M1G)Us1C|GnBYy#eX+uL$Nkc;*P;zf(X>4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?h&5O-u^w)>hA}4-EyfQ6>f5o zAwGWrkx4{BR7i>4l*^9nFbD+$I8wZU|Nq-L;74#?vz>dRwA$)Z2FLBxw*9%w?B!>R z$n2<3h!tkTZS|YcEiMTlGeL^Oc(hyuzs+NKsFqOAdA?8~9}YPl*=2QXq$G2}#+ z8lZ&(x;r3j%CzqbptujrCuUZS`~=7W_D_FY7y<-9eVu5?D8SJviXkl}?oq_l6Ydop zKwQo)n~6{FCE5a_!ZQ#hJT1GX2f^d3N?QsD&*x?uc+4XwJVtd4m#qdaOh8yl!FHwP zwF&_6@QPh@_C`3c$M$$0gkq5^p*8k0=7Okt0ZjcQV8fj7gQ3eJHXO+k%Qhs)kK=!S zH0K}F@@t$)^-cHyaN5de{`&U(N7pY;_~wThzxkmX=ED!oFsmOHpc!WI!zz$wnCyo| zAjvS(4_P47Fxd}xf#9vkepm(44U_$l1#%iD`ymTt80O-KERb#(Nq%?~Nb55@G{jdsT3L^VqeRqc-rXDITz!b!b9;P5(^)LkSrH6i?|4}{s0CGbdCh08| QV*mgE07*qoM6N<$f)^Tx(*OVf delta 383 zcmV-_0f7FN2hjtNBa^cMJbwTXbW%=J|NsC0|NsC0|NsC0|NsC0%^|Xs0003%NklIDTUR_*gC_FCEvwkaI2z z2U1F)9`Z6G3@P*)F*#86FkJH3Cz3RJxOWEXjx)JThA3eI%!TFXmwyA6uD`+G)7@!K zYMmo=hEQZgT&T5%0|HO43L68|JBNzPC5xLyfJ>7B)fjiiOiqK=qcgZk=^G#Dey`X*`M5O5MYY6q(0V!3&t10lxK`eg7@3XroZ51n5*`;65^uC@GTaG&_n z$~eI|-PqwK?7x0g-*o1~t#A2oC4a&P?D_BjWX*>gAYbRhIrHH~n1>H@17yNGA1tmX zfINKQPDZi;AT1xHBB0;9EgvdCtOrQX2dVpe07%P+1wcAJYyi^oVF8ei4;z3qe5e39 dhWg`tcmo=i74Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?th-n-u^w)>hA}4-EyfQ6>f3> z001yhOjJc;oP&ddbG^O2|NsBJq(S!fDb->@_LM1$d;ele&F*uY|Foo}#s6xooMK{H zK|w)TsgPs<00D+cL_t(YiQSb;jsqbKM4?v}LazJYcFG1i80gM!G#Zpelq&oKUQ+s% z1>jxJIe))f7=f00U8ne#t8l3nbHMjc!CSO)6<@G0 zqo5we<9iI6Jc=8ckSp?0oo(}3|1vG=@z+8k)N~}Uy4VT(bQ-5f(sCWtyPK*T8Xukja^OP*$bkDV$^op6B5ui<3y({axz1PgzRV7S03MnOW1 zktHZ7$OIdnQq8dIs>4jRC3+C-euBNF6fkVp&T2=7zBH?V5(v}m2vp( zY&!%JG+nfY-DXs>);C6Ma|yTOgK`FziYZ3FnNCc}A(T_Y1F$-NRywhf-Qld_b!?9p zK#%P+{@4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?h&5O-u^w)>hA}4-EyfQ6>f5o zAwPfoNklds!ih*)s6`iylo!~V1YNeXQ0`N z@OBDej`N|&9t`PS4|Ry#BpQA zV0SMThBy|g_BZ|)9)VGpwf delta 280 zcmZoeji6;})N>yCe7{%7&-Z-KzOzaQ2Vyl;Oy|NCL) ZS#e^=)f?-0R{{OW;OXk;vd$@?2>`qMfu8^X diff --git a/graphics/pokemon/iron_moth/icon.png b/graphics/pokemon/iron_moth/icon.png index ac43ad66ea5b66091904dd4fc20131a1cbd35fa7..ff1e7353cbb4013745836d3aae5c0dea52952d8d 100755 GIT binary patch delta 887 zcmV--1Bm>R1dRufBYy#eX+uL$Nkc;*P;zf(X>4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?th-n-u^w)>hA}4-EyfQ6>f3> z001yhOjJc;oP&ddbG^O2|NsBJq(S!fDb->@_LM1$d;ele&F*uY|Foo}#s6xooMK{H zK|w)TsgPs<00D?eL_t(YiOrPRj>9krMe8D&Q53=d|7}^a0H&%m(}&4Jq}CS<7fv3J zuRP5BL4SbQN$xliOsopluuCu}&YUC%=`Y&0px~)NK`;?%x{ zF-rm(W3b390B0$i?R*T{Ot7{ke;xw8B75h*808oT%_X;%tkp>d>$V8AMK6gZTH+5o z&P&`yc})g_xot$CRcaqD@s{-x0szt%dz+^dSAPvd&fuv6>C)3;xQ+pKfI;v)jY7;` zu%+LDpSgxxu#1&Ma?Y`fV3wZm`{>tCyA=if@Z$3^2kYeUyqOfolABrQ1zNYolHM`P zzFCQ}F5B2FSbA<2s#N`n#;-rW<3C0@%BAz@mCmxzUEEgt6Wy796GXb(X+*l4c}n6y zcW_64qI=mX2P4p3>Gy?vL-&n$qC0*?4-O;U39Jimr+XN@0q(noo9+U)Ul{3b;ZAgS za2L9l9SU@}`{nK%-R)QQpqKg0cRJzN%{tNBY)hecWw$oDV$Ng-rONkE9V!dCKptO*(?D@#nLf~71G74R6tlr5`VWZBf08H$e^KsNLL-kXNU1@>*+L%Z-vmvuFI?BwR%M4h;Io3|6J}5t3-x zHemo@`;ln#c7NijVQ35v6KI#QET-)Q-~<>9$88j1^+J646Xd8hOu?yEGHYCN7s)J( zpXcbu&$?9wpR)OUor8CBdET6q4Bi!VBJwt4dsb6q~MRj~Ek4AfHfCmO&0 z{Eq*e6(}#AXRqum7rGa>&Hh4nrQZda?)Ee?-OYKL{c@A;j{ZXTHd6scqI;!32J#Kv z6YoNIzC|w%Gu;KO2k)SJIJ^n&S;M4zfjc(LbhmI9x;wZRy0;lhbhq;r?mOM>Eql=` v^5&i{ICf`U=xwHDp?7C@ZR%gL`={pz^m`)wE%-Pi00000NkvXXu0mjf+)ezt diff --git a/graphics/pokemon/iron_thorns/icon.png b/graphics/pokemon/iron_thorns/icon.png index 48391a50c774911b129b2b8fc3708f42cb97c37b..2c1e0812174a1e41d29338954a0902e1d832eb70 100755 GIT binary patch delta 790 zcmV+x1L^#$1Lp>iBYy#eX+uL$Nkc;*P;zf(X>4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?h&5O-u^w)>hA}4-EyfQ6>f5o zAwGWrVo5|nR7i={l+A7gF$jZ~3b;gq_kY{knQ5CJGHOq4bJ#uD!N5e{>-Dpf`6NPa z4~DdC%^nS{HH|!_;CgEwaGeYeou;FX16i0+rF4UZsD-+h2J?6m!wDBDYM?}y;S;H9 zq=*RwB-nMr z>02Ec+(Pf5DsjayLG>=NZ6d8t$;;feW7j!7KxA;&S0fS0-N#TS6r!wQfK5ECDw1jHvF7JyuUnD{UP3ZwvOQF5GT_U9JK&+-_b43eeyHKZex zZ4E-YYGi8|kPLK&YG9;1=naT6uyGKTFe3D)acCX+ z`9yk{dks-V3|y`c!}YRV1z?fdZ`-Wu(cO=|TKRBqcvh4{G3})|vs9_qD{GtoZrS_$ zuG{+Z;rD#7ANX+U-cItNKD;|0uDSrS^I-?b00000NkvXXu0mjfz9p)# diff --git a/graphics/pokemon/iron_treads/icon.png b/graphics/pokemon/iron_treads/icon.png index a75d7f93c9c17151aa7241c1c2c62f866ad6f763..25e9038a69204d48b0cbce31bed1ed276c85e29b 100755 GIT binary patch delta 873 zcmV-v1D5>31OEn)BYy#eX+uL$Nkc;*P;zf(X>4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?th-n-u^w)>hA}4-EyfQ6>f3> z001yhOjJc;oP%?7bG^O2|NsAcoJyR{N|g3W?sJ^>l=i)(TK48C_V%pR)oSKSDPm$; zK|w)jIel9I00DYQL_t(YiS3ljvcw<=M1wA}68`^hhi*vJJgl0{EN)#ENh&l5DrejN zo>|ztyMOKb-kLsX5UB2H3NxK0;cOnO_-gSr_(epK9{=5mY+W|^06 zO2$epOQc_mn=h)p3d8zHo&GAd7$tTJa($#JwboJ#C1NR1&H6lET~LMVoK+aRj|5Vr zS_n$-!q{A+s;Gw+C}a>EE4Z>?pCJ&v3eZMV!GAVEprtFYj}UlgNT5dlR0N}WCf*zT zrelVvk}2Hp)uBa^=`2{phJ&bC|K-x8!hhGP!SOs}?@jC2;Hb!)Hdg;=@3;EjzOn@$ zVo0C(V21%94}9QNQ)>r6ZhYXCe6SlI5+Da3dWFG<0LY3D1jv#P1jvdH0LY3DCqQ2L04M|>W;`5xAV882GahpK z36LEB+nsU643MkwB%pZ11EcX=;31FZ=Xm%4qWZjoE*00000NkvXXu0mjf8UdaV delta 424 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 diff --git a/graphics/pokemon/kingambit/icon.png b/graphics/pokemon/kingambit/icon.png index ce85b3c190708444fe57895fc4f80f97f7a4743d..c4d91769d9bd0e2872b01ea4ced2cd8fdb74ab21 100755 GIT binary patch delta 863 zcmV-l1EBnZ1oZ}xBYy#eX+uL$Nkc;*P;zf(X>4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?th-n-u^w)>hA}4-EyfQ6>f3> z001yhOjJc;oP&ddbG^O2|NsBJq(S!fDb->@_LM1$d;ele&F*uY|Foo}#s6xooMK{H zK|w)TsgPs<00D4GL_t(YiRF|_mc$?kMT5i)GJyT>ws=^nh#0H;^st#FJo$-t+kS4U zU;MllD1YyDsrV*pR4kjRG#Kq4RVxYm3ycjiOz7tVYb0FwET05bAn07&M;0FcawwBzCV1Lu=T-Oqov pH2w3R^PzkGQ$E}}UGm}A_5z`*AH1Wlpb-E7002ovPDHLkV1hl?mFNHf delta 489 zcmVb924Dz5oCJL28s@l%%A^|L${~)nY-tq+0go zDfafP)zxbDlqq6jT0ucU0xrFh0000GbW%=J|NsC0|NsC0|NsC0|NsC0%^|Xs0004T zNkl4^bIDnn;jIcy>*pq ft_+0W&l<=Fkzg+f8j91T00000NkvXXu0mjfkWTP% diff --git a/graphics/pokemon/klawf/icon.png b/graphics/pokemon/klawf/icon.png index e7c232f1305e56d82f6f50e44168fffaff9047d1..6b393ebdfbdf32bb30164d2074b9d303e3d1c327 100755 GIT binary patch delta 687 zcmV;g0#N;t1AzvRBYy#eX+uL$Nkc;*P;zf(X>4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?h&5O-u^w)>hA}4-EyfQ6>f5o zAwPfoNklhQ|J$Au23PiRNcZceTL{7>ZfHo|W%<}U8oAyt zf?Q~%frTI9tu?yA+@tV4g^f*7xdjr(T^e561!lucgv7mzb6@~5ZU*6yA3sAy+|zFs z2L_3Zu2-U~h=H9!chu}Pg^#N~<8H<+Zux&=OFnEMXW*Nl1$Jm$Wyp|&^qtUqk2R@Q z01S=txv!JG3Ww`od$KhWmX2fvC(}UbdEe*3FOoKdWtUB7g0; zpXJZ@lm8@}=knjrhu_QJPULTx#J$R2lu7=0l)r3}|6J)V|4siT|2WbApE(A;0P+*d V7YB(+fL{Or002ovPDHLkV1k=hND=@5 delta 318 zcmZoOBiJ7U1m!t4?8sj>3^ z_P0EJyGx@p`)y5fHr?cvKiofI{p*c~8_fT4m~44JzfLIaMf3;rN|yWAG-9uQ;N+R| zC+(>V%VUpb!yMLAZih=V4&2c>~?(`~T-EVA?q6 zx8d^|(S!GH+Frf;J5lSzX|o2S+85!1N{jBSHrcqFIqK=F#g9*(K4Z3^{-pTaLo1hY z#O>zl>ztc@t*HEsQkb&D$(=J@L`+-mb7e;{d8DXacz32Zk8>AGfmEz7bJxNHyeFnc zO$kx*Y-|-Z{$>#G%~GWF0^Go@l{6Q|1*Z43{O5wI~RWSv0?xM MPgg&ebxsLQ0B}#6QUCw| diff --git a/graphics/pokemon/kleavor/icon.png b/graphics/pokemon/kleavor/icon.png index 4443cc1433f26af5b18dbe01e2496224c77ad72f..63d9653597f7c7cb9ecb18c3d69c83bf145b94e9 100644 GIT binary patch delta 354 zcmV-o0iFJ{1gis(7#0Wv0000?P=%ZT0004VQb$4nuFf3kks&^R0VzpDK~zYI?UdaL z!ypWWn+WmleCAJgw(S?qpZvNeT%Q5F37>$@U4_JF^Ku24 zzM6>DsACGCRMt)DaDY+z0&Vp!2g2jmX7+$`K| zW+>6Ketu$@j4=RA!10N=9Tg;hBJl{gLx2Pg`?Afjr(k*(D-mz#l0cM@g(?H)x+CHd z@g8E^#{?&o50RWtE@BAw^zZoFvwc8e7WZ@t$c?}>0y5J7zqRe0001qplF?uE>Q5FVo3 zU-x~#&E|&()15uv33KyZfTk7!ZXA@8@0qVc9e4w~muxbO&h!ksHVgh@LeF}xN@9QC z8Z$Q9s;<@9E+gZu0f65=NPcs*S*7w$u3a)`lElRFqR}VoX^J{efDda(=g7& zY@z_tFV}W%5uNE$i3xhIXF{eBV*qvNEICBqLP|n5OpK1vS0RNAVr=(xBCnn&*(4BJ zz1OFqBc<9oB|+XE=+ll$UP|J^n}&abkAjX#a0=29LnlJqB;l0Gf#j%jt1yglW>uFh z(@`2AT5b6kR~hblCn%r)eSZYz)*+2~qbq-4v%3SPDMS@u)MN1|z?@cL z0mg-{5VQcpub1MIfiVj}JQZNVLXg)P7+!!89N0u)Ts0*eA~A;uj8p9r669C<5g4Z` zw~41=L=^-WwyNUPJ)!dg%-&}lBng`cjL*CjV1%)Z1G>lu3l3?KvDL)KgV^gVkq@@3 hz3{<&-TLqN_ySoTL?dithFt&v002ovPDHLkV1gcX+iL&- diff --git a/graphics/pokemon/koraidon/icon.png b/graphics/pokemon/koraidon/icon.png index 127a03e5d7f8ee007fb0a97fb9b470374b6c5d8f..4048255617b70d4e7a24ebf46a8a67e49dc2f83c 100755 GIT binary patch delta 893 zcmV-@1A_eD1I-7JBYy#eX+uL$Nkc;*P;zf(X>4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?h&5O-u^w)>hA}4-EyfQ6>f5o zAwGWr$Vo&&R7i=k$rE zC*_OmK{W(3^9HNxNO5kMs8NJ$@;ip_ihUsglwCpdk+1<*Q8h5Otri*>m9UHM4OcQ; z?u1Q%5f81tSAw4mFR~Tlq8-5x8PB;C!zX{E0DF108Xn{$0fqt3W-6a?NH}r)!jwQL z79=JsRJU>Z&VN%N0WZZpkJDz2EcOP$Vgxl;m8${;#N#_woF_6rdjJmIYzfOuHY>T{ z>N19DO#^sHJQHEm$R)-QvISgQrFe8tt#^?Pgorvg2yuMzI?$taDkKO1NYRK752Jr6 zB;ctY=TyDB6PTf4KEt5^2*Gd_RL9k;s*M#K&7n6t>Ic5wTZM>C zA%myqLmeu()Sh^Wwfk=;b$8R|vs@T$uqOuX^X%0>S$~la!w_fr(3^Lf4|jLZ^T98| zG#?IU%=4jl_cR}RchB-+oZT%S%Ew_S-6Z;anAv~GhlTyGd|284%!h^juY6e8zsrXw z`!gRN?azEz+W*Xlh5gTbc(Q-Zho$|ye3;q)%7>Nx&wN9)3>%4-kPgNF|F`GR-L!V>bPxA%52GMe*aYK5xmp21j;ErpWS_dw#UUJXmL!-cVM#(2lI)IlyM6K-JYP z#oX^%*#*J8-aw-WXnzngN0uMzJHb&uXf%ou7>~9wZOUU0ql%W<7#?1Da`-V}+|DM} zz&J>eJQ+fr+!Sd7!zNSX>7^o5DV4`2=aSit`p$K|=}aj6u9<3m;q{|Lh^xIz*pd3@ scw-3;+NC diff --git a/graphics/pokemon/lechonk/icon.png b/graphics/pokemon/lechonk/icon.png index d368c427bee854fe14b50c0de68e6c8460d8c8d0..6123d0773a39e195f576c859a9905dfe0b3adbad 100755 GIT binary patch delta 641 zcmV-{0)G9k0@MYNBYy#eX+uL$Nkc;*P;zf(X>4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?h&5O-u^w)>hA}4-EyfQ6>f5o zAwPf5NklK ze;cTt-}MuJsPD1EU(E-;=M8@~A70~+BmRo4cjI3KR{Yg`IO4B%vBSTZ504P>znBm0 bGx*;D7iSV79Zf&^00000NkvXXu0mjflFce4 delta 219 zcmcb@x}Ir*^5o5ow)FxfL4Lvi(ZE^7O;Z>c80LApIEHw1zMZm>@2~=o%SMS9<2!%< z-@m4ob%|}x!dC%X=O~HU_cR~TPJJ4G_(W)=jfbGqwg$%j+l%{h7hYCxN;CMFpKoZk zAwlMqu3E8xL4tiU(+l3Ip+*gh7OlM|_LWBzopr0I0oneZ1MmWn7#0Wv0000?P=%ZT0004VQb$4nuFf3kks&{S?ny*JR7i>Kl+kJg zF$hJ6sL{#7_5c62CNPCUZuYH|vU&BO=4R$x*FQX&$SV(JmyC2mR5>Di3@|{|!$U^U z7L$;03AP1LL%bl?!MeHYr1nJi-c4E!BK4QLh)aj+mPkXJzzZN3tr%NtYA~8*-s7&Y zJB?CNJJw_DSE!tSU}D&BSSy+VmBhTmz5}3EK}=%5WsNAH&p}3rlxGCHh6vDDbrAt? zhx!6e^+mh^2JYjCQEzcMK&T%c sfw14_5y;_#DSsRVlJZs{f71_Nk|z;$t-@Lq00000NkvWtM6N<$g2d5)ZvX%Q delta 340 zcmV-a0jvJ-0-ghq7zqRe0001qplF?uEa7bBm000ie000ie0hKEb8vp&tH!u!vCMY_}BISNCI)+%Wti%M-m8mUR%8CJ(3Au{jQtewM8=I zpG$f9^>QSE->J`Q-9vK(!bB#wbpc(|`f|2?i*S zmSFy)Czv?21j8RPAPI&6J;D4(PcT4VAPEN9FW>}&>^o3``GTYboM8ST4B>Z0OECOj mKncbL+3DZ}gB*r5P9Fe>{4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?h&5O-u^w)>hA}4-EyfQ6>f5o zAwGWr7fD1xR7i>Kl+6wTF$jc(O|~b7_kUX{+ge+wUc6`|dz%SATlj9bp9+1alRI?l zQ`TWib%LsbTb|%k0w7>`9-)}Y9AqCvUFYCX)0>0DbPk3~H$!zY=LVwE3`qtrQHr<$ zLHE|ruG>g)3V}6mI^1!_3Zke%SB^}-+C+bAVscbX`=szP^S{<|i(d0T1j5JjbhWA7z=bm+m>V*o;n%Eee4(aA0LQM<0HYt z%#Y+Q7JejnnEA0g?gu|Mco_WH0A}zbZso#{3=b1O5O002ovPDHLkV1lZ>M#2C9 delta 462 zcmV;<0WtoZ2A>3wBa^cMJbwTXbW%=J|NsC0|NsC0|NsC0|NsC0%^|Xs0004wNkl5JgD)V(y$@UL*`q=}G2aDwue%Z!ibhC=pb|b=&x8YoOJ!z7fS$fL8e`t7-cpz9ZQQ41 z05~X1Z3p3i6Yx?R5r1)#Qo-d`YO|2tCOAHpL1!L38d{<=Mb+;<;;)0dv|=?)49xRy z)|Go(L;Kal#vs!lx;Ko@X?O&J2p|7jAiyv$fk4Cj1mZFShIt7D8DP$vSGdg z$>YBWWM`O{KtPGNK!9Q10zq521%eH8=uaRqTwlXDaS22i9Ya(Amq5Hv7{3LA{4o=l zKn70$e9cE7;g1ab1cLps3IzLO5eW9jB9P7S{J#SE0~q-wcZ$~9J^%m!07*qoM6N<$ Ef&&ZHU;qFB diff --git a/graphics/pokemon/mabosstiff/icon.png b/graphics/pokemon/mabosstiff/icon.png index 3b99df2d4a9809f65a093b1e6d0a0b4ad5c0fdf6..e18a9d6c1ce84969e943cbd668a2f60c1e7fd31e 100755 GIT binary patch delta 784 zcmV+r1MmF41EvO$BYy#eX+uL$Nkc;*P;zf(X>4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?th-n-u^w)>hA}4-EyfQ6>f3> z001yhOjJc;oP&ddbG^O2|NsBJq(S!fDb->@_LM1$d;ele&F*uY|Foo}#s6xooMK{H zK|w)TsgPs<00ALML_t(YiS3lZj>9krL<2@!DM;}Df4hUzDgm=Ot#T?-n>6!+jn$cL z`__M#qknF78iQ{TH|RXZUxIH5OE740sea7A-cZ-iDj;Y|ImD@p$mzaq!vzdg4h6bl&Yi_P8N+RhR}F>UeXe1 zegHP-44_Ogr<*ze{1T~0rN=4ZgHy!G)()|*sDIn+-RTnB@K{RmZF!49g!a+rpJ!Vt zo}o>Bb)oL{Z#_~^+P~K?_V0*f|BlG^w`QPh|0Y1P{nr3V_HP2D*nbTW*ndCmA5{Vb zd))Wa{%e3#`>z3#?B55-)&9N)NU?tx5Xt_l{$@V*Zvy0`{Bn7yegXI)7q)2Wwk7}o O00{s|MNUMnLSTZ&t#p|H delta 421 zcmV;W0b2g12EGH3BYyxeP)t-sVw{6}dwadTwEzGAdz?y~%}TU`TJFV*#jGjz_9@k3 zL6m#V#iY&llqq6jT0ucU^LsW*0000GbW%=J|NsC0|NsC0|NsC0|NsC0%^|Xs0003k zNklP-3e5MIw68m zu<0V*`>Tsh>BpAX1EVYmu1GaoYyjJ6G*L3hfHiwsJdjF@8)x7RNpmVc8E{Y^gf-p~1vuCDbK#6BPL zKK0CO P00000NkvXXu0mjf31`o} diff --git a/graphics/pokemon/maschiff/icon.png b/graphics/pokemon/maschiff/icon.png index f5127dcc42b0a3c74d8bfa263ad0cf5fd706af62..cb2308d15b365f73b4f6f1ec6952033e9c743cbc 100755 GIT binary patch delta 710 zcmV;%0y+Kn0^J3WBYy#eX+uL$Nkc;*P;zf(X>4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?th-n-u^w)>hA}4-EyfQ6>f3> z001yhOjJc;oP&ddbG^O2|NsBJq(S!fDb->@_LM1$d;ele&F*uY|Foo}#s6xooMK{H zK|w)TsgPs<007uYL_t(YiS3lV4#O}AghOM)P>Fm0w=MW59l%M|p-Y48iQ{a`x^LU= z`p*Jz-hZ#PoGDO>E3oo`wX2GVE_^WhrYJR0fVI#2W{w8|ssa(_CeRvPKxBhvp-mL~ z&q8FP-j{d_kP^|pleT+sqENN|gKSzkv4CIQJiLYMh|S*x^x5^NAUizx+;!KF>LY;Q z3=j^G#)mBaZ-5vdviMJc3_is8Pk?kjB=MgBX+L~O<39j0`4AI00HV%^JpK(J+W4@D szX8P7GX4V~nfdV!-&cIN`me9*1*F^!7txwz8UO$Q07*qoM6N<$f_mmuQ~&?~ delta 349 zcmV-j0iyoh1@{7wBYyxeP)t-sVw{6>b924Dz5oCJL28s@l%%A^|L${~)nY-tq+0go zDfafP)zxbDlqq6jT0ucU0xrFh0000GbW%=J|NsC0|NsC0|NsC0|NsC0%^|Xs0002y zNkl2z0N{rNk>M(i-O>On0FvCc5Eu0pmk6@Ep*a#6<2_`G#8YTX@SbK_^!k{9 ztpsPxDpWvb3_Aew$2H=%OqO{RlJDa>@`L*R2(( zrda?E?#B9ty;i*j?8H0b;^O`5BkEW4VGj)QVgG9l@*!X5LknQJo#(@CInD=O<%72H v%m<9}VT}jY6zcO~jR%dwaNDmJ-x&}OB`q4eh3jxX00000NkvXXu0mjfr>3&J diff --git a/graphics/pokemon/maushold/four/icon.png b/graphics/pokemon/maushold/four/icon.png index 97c2d708268e363ee99f827f9e611e2b93330ccc..fc6684d61ba910ef8f3618782db98730797e4fe3 100755 GIT binary patch delta 773 zcmV+g1N!{+0-OerBYy#eX+uL$Nkc;*P;zf(X>4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?th-n-u^w)>hA}4-EyfQ6>f3> z001yhOjJc;oP%?7bG^O2|NsAcoJyR{N|g3W?sJ^>l=i)(TK48C_V%pR)oSKSDPm$; zK|w)jIel9I009?CL_t(YiS1NL62mYEi}4-)|Jwp~%;qGWPJ1h-Iw%sMmX70JUo0ZJ z?*qUcLVx-Laly0z1ie!QX}=+o^t*y80HuesKM=;m0BLc712`sv27MxgtuMKSm;|ce zj!o=U_tFr@mnbfzZjsCn$fro_>w#>Vln2H}!OX|MlZ~KS1_K%ZC{d zdqB>IV1Egaln=rF)6p&;g8j|WmJh-H&e1)v8DcrQdA6r~@b+H-pAX*tq^9=yQ0-sy zA?&l{L$!a(hiw0n583{kd`R}s`LMYbF&{4LlYDpqCovY?W)-pW00000NkvXXu0mjf D4HR;d delta 347 zcmV-h0i^z%2K54vBYyxeP)t-sVw{76gLA#Tz5oCJy`(|*_9@k3LH3j>i+lfKO3m(b zod2|>q{aVgtej$ET0ucUS*eg@0000GbW%=J|NsC0|NsC0|NsC0|NsC0%^|Xs0002w zNkll2 z383s{0GaMu-AkE>U~|?>{qwGuy;AiqLLytQbQYWndXbET!dR0FCnp8~m+V~Jm!=-! z&V3m8(>RU_&cG$1lMcYH4=(+uG0j~m0g=@|2PNX<7XRZZI603e(!$^JfMQBl$!(}Q_)r9N`E)(cpe86}z?PF4T_002ovPDHLkV1n3UsgM8w diff --git a/graphics/pokemon/maushold/icon.png b/graphics/pokemon/maushold/icon.png index 728aca58a1c573be2e9de5008b075d5209caa0d9..48cb9d2c2615608797b45e1923c407aec3258571 100755 GIT binary patch delta 788 zcmV+v1MB>#1D^(v7=H)@0000?P=%ZT00D$)LqkwWLqi}?a&Km7Y-IodD3N`UJxIeq z9K~N#r6Ls(i-nNgNw7S4z7YA z_yOYN=%nZ(CH^ldw21NGxF7HCJ?`ECLZiY|vugrSHOolFV}D{cw<-o+5yTJzh+sfs zrk+SIX5cx#?&0I>U6f~epZjz4DS49tK9P8i>4rtTK|Hf*>74h8L#!kz#OK8023?T& zk?XR{Z=8z`3p_JqWK#3QA!4!E!Ey()lA#h$6NeR5qkJLjvch?bvs$UK);;+PgL!Qw z&2^fih+_!}B!3}7Mh#_DU?EDYMv93P?Z-U)BaS~wE}2|qFmf!Q3Kf#$2mgcL-I|4| zNjE7N1G-;q`y&Dbc7bNyw!e>UyLkfmpMfi_?XNa~*-z5zZ7qBR^lt+f*KJMS11@)f z;U`@(BuDbo6bc34{fxdT2Mpc*_YUWBQVq#iBK|yIbeOmwk0UAj}K~zYI?Uca|!!QU#8*+#L|JwmcgOkv9r)h_x zY0`v+JAbI(alG}@5|R5p5#1@Q-xL>6dvx&CXmw(7b4nZ^A~Oc zx5Jf+ErV2Kz0+>lr?mg4v&c8HpUs|+b+FsH#ea6RHdy?6E>2wforsdN;{_jH!MFao zz6VII3_f%~NV_e299ruYXyf)7*tA<@ByDgKdY;6vRJv+x1qKLp4J zjDG_N@?nj?17zXDw9gKZ;KLSwiETL_lK875@F9)=%!e%gz=x|B=;_VM>H|%B6yLvi SYz;F20000OV1ZP1_ zK>z@;j|==^1poj5Fi=cXMPi(TgM)Luy}kec|GlI^_Vy{&Vt+yQlqrjQ|6)qb?sJ^~ zw4|iP|7xt9Vq#iBK|xumkYoS=00Cl4M??UK1szBL007KML_t(|oZXU53c^4Pg?oe0 z3n+~H4)*OQ_rFGS0E^jAOzGI*tXv49+2!MrpT`@9uN7Gb6zi)1$eo}#uu$o|m=QQY z%79`%Bs7^auz#$_Is-GNZ0mEK%Z*LJQyZiuZ!K__29mepbNR9Zx&f%D!pnXkRdM+S zQX5*OcymW?YgO|koZ~c7BxIfA9shT(XOrU{HM25~r^A<;lGqgis6bXfHmvk_J8S9H z)t{+<%E!>>gZg|>pO4|~d<59?!B+%m`6yw@hx73O;}eX)-}!>TDF6Tf07*qoM6N<$ Eg7TBFUjP6A diff --git a/graphics/pokemon/meowscarada/icon.png b/graphics/pokemon/meowscarada/icon.png index 5b798214530a332cf703fbff0535506995807017..2a6d199d2260656434a8d5a2c6f73e86fa3b8769 100755 GIT binary patch delta 718 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 DW=h+> diff --git a/graphics/pokemon/munkidori/icon.png b/graphics/pokemon/munkidori/icon.png index 20144ff87e17dcc113c7870875f48eaa65be61da..338d84d3ef09a615a33734975b7f645f0e2dc3c8 100644 GIT binary patch delta 414 zcmV;P0b%~p0>uT8BYy#eX+uL$Nkc;*P;zf(X>4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?h&5O-u^w)>hA}4-EyfQ6>f5o IAwQ9P)e}>|ApigX delta 40 jcmX@gdXZ^@^5o5owvqxRL4Lvi(ZE^7O;aYnWxN3Z&z2eD diff --git a/graphics/pokemon/nacli/icon.png b/graphics/pokemon/nacli/icon.png index ed0895c1d8fee8296e36779170af3d75f9d9d227..86522af3a1966a2e559bcdd0f87674d15050dcad 100755 GIT binary patch delta 414 zcmV;P0b%~d0=Wf{BYy#eX+uL$Nkc;*P;zf(X>4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?h&5O-u^w)>hA}4-EyfQ6>f5o IAwQ9P$?Sl?{Qv*} delta 40 jcmdnVdX#B`^5o5owvqxRL4Lvi(ZE^7O;aYnWjq4_%i4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?h&5O-u^w)>hA}4-EyfQ6>f5o zAwPfpNkl?BYYjoPrEFyej%rBrwipX z%H2wpiJS>{rNk04I}tgpl}Y3ThyJMRlRj z1J1lv*I0l6iqT^PxByJkAm)kn04=O;0!)9wGL?pK4#&9V7hFKV&Fq9{6jBKUTbeB5 zjyT9WIsgHr0eEr}0iKbJ7p(*PF_Mpfnr*nLw3i+aA%8uWh}iK-eE*%-5XU)vRTl>gBmX61j;ABOVZ`onX}{{s{m WI~YAMi7m$f0000>aYQib2m@nr=-9C z@B8H?Y*0CSEBdt;I+d+Mju&2!7YU8NduBr;$Lm(pgG?f#cWPZ%)N5M#y)0v# z^VYHb>dXZ)3Z)yu&M?efyL3)fZv^ADHKt2iJL;`^Pfe4%;@rTdcr37#@n-skB}X^{ z8kU{+e`TnrZT;-&J5GUDt>W`-o~OUkEiLUaVp?dtYvD%ur!N%eXgH<)_jlRdv2T^? zg@yklrXT3c`FitC?Eh`=YJTX*zY_mh(DT!P^~CI&3qs$1USLj|&Y$iu<;3zme=2_- d{`i4`W1bM#3I2UoeSkh?@O1TaS?83{1OV`?kT?JU diff --git a/graphics/pokemon/nymble/icon.png b/graphics/pokemon/nymble/icon.png index 791bd0a427f4ea1bcdd7aa5d47c1e76aeb6139a7..74c4c79b5225233635684a0b5c00c699d15130d0 100755 GIT binary patch delta 617 zcmV-v0+#)>0=xx~BYy#eX+uL$Nkc;*P;zf(X>4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?h&5O-u^w)>hA}4-EyfQ6>f5o zAwPe&NkljH z!dxa0>8k`_ln#J~&qN(C^D%;|68VG1fJ*d0LyJ5}J%TGV3->dk^tqh_Cllfn{0@0n zj8-f7mW zCqT#twd4Q@6J`A`fRGPm{W~89Kvexd`LNOr?th~fi`@y3GyYyR00000NkvXXu0mjf Dt}z=h delta 224 zcmdnPx`kc7#4fFIEHw1zMXQA@2~-fvv!8+jvN2~ zZ*L9>zRtSsbXoV+;6F(LT9vn_{ZshV{r;SPzz@e6TV0q8g0r1xG|Y0!YT`(3ViY}C zaA)5T1@dcEB SWjG6TFN3G6pUXO@geCx*?Q91C diff --git a/graphics/pokemon/ogerpon/cornerstone/icon.png b/graphics/pokemon/ogerpon/cornerstone/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..7a8323c815423fec77c57e2371331ddc86ad1a69 GIT binary patch literal 816 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 T)6kiZ00000NkvXXu0mjftQuq} delta 282 zcmdnQ_J(PK^5o5oHuVewB|(0{|Ixr%#Z6Nf7#MDQx;Tb-biSQ(Fz<*0kITl5frk?R z{I9=l*mY&9cbWFruvC?z1N|Qv1lRuccfI4k{^2&|L+)Dy_{#4yCHEX)%GmI7QiHR= zhSMt@I2*WB6pP?^g-6F_4QRJPi04Tx04R}tkv&MmKpe$iQ>7vm5sQd8WN4i%h>AE$6^me@v=v%)FuC*#nlvOS zE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La) z#baVNw<-o+5yTJzh+sfsrk+SIX5cx#?&0I>U6f~epZjz4DS49tK9P8i>4rtTK|Hf* z>74h8L#!kz#OK8023?T&k?XR{Z=8z`3p_JqWK#3QA!4!E!Ey()lA#h$6NeR5qkJLj zvch?bvs$UK);;+PgL!Qw&2^fih+_!}Bq2gZ4P{hdAxf)8iis5M$2|Najz38*nOtQs zax9<<6_Voz|AXJ%nuV!JHz^ncx?gPjBLW0=fo9#dzmILZc>?&Kfh(=;uQq_$Ptxmc zEqny@Zvz+CZB5<-E_Z<8CtWfmNAlAY3I*W(jJ_!c4Bi60Yi@6?eVjf38R}~J1~@nb z#)_1^?(y!P&ffk#)9UXBcinQSAQf(M0000mP)t-sVw{76gLA#Tz5oCJy`(|*_9@k3 zLH3j>i+lfKO3m(bod2|>q{aVgtej$ET0ucUS*eg@0003iNkl55z~K0ky^f{S>FLm$>O5B58*)T3+Dp7Q9GjExef55{_A7?U^=vTSf|4` z*HbO{w^Li?r-t1{^PKk4~za^&W8tCz#7w|%7GaG0000MR^7Q literal 0 HcmV?d00001 diff --git a/graphics/pokemon/oinkologne/female/icon.png b/graphics/pokemon/oinkologne/female/icon.png index 0acd6e27117292f13a87c31a11ebedc57988e08d..c1b272c73e7336c317b3ebdfae665f17677bc175 100755 GIT binary patch delta 807 zcmV+?1K9l11HA^2BYy#eX+uL$Nkc;*P;zf(X>4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?th-n-u^w)>hA}4-EyfQ6>f3> z001yhOjJc;oP&ddbG^O2|NsBJq(S!fDb->@_LM1$d;ele&F*uY|Foo}#s6xooMK{H zK|w)TsgPs<00B5jL_t(YiS3lZj>8}fL}RVPN+5au|8Hw!NDLvV_E7DmKBN(z48hHt zZTr?|3xCgDAU!IOWGT=G+l{15xHKVLssu^4gb0_L`0+ez<-X2PIth6h=`MJ$G@&c_#)kg z|0N#|x=;MaeAqhO5&tFK5r10Ied0emG`c(f*L-MnNBkFfBRBk)`OxP<5BYH5f13|m l!yx}QAKWFq$%hZ%{{oa`7zOtGkA?sM002ovPDHLkV1n`rfnopv delta 441 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 JAwIEtKLLxEzkUD! delta 42 lcmZ3-wu^a!^5o5oHc|`%B|(0{|Ixr%#Z6N-zh!h}1OVmA89)F4 diff --git a/graphics/pokemon/orthworm/icon.png b/graphics/pokemon/orthworm/icon.png index 9cb39cc79bc51fa8d9a9c5d72867daa0fe12160e..5c4dd54525bfa9eebb4ab09eba366245c921ca46 100755 GIT binary patch delta 806 zcmV+>1KIq`1H1;1BYy#eX+uL$Nkc;*P;zf(X>4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?th-n-u^w)>hA}4-EyfQ6>f3> z001yhOjJc;oP&ddbG^O2|NsBJq(S!fDb->@_LM1$d;ele&F*uY|Foo}#s6xooMK{H zK|w)TsgPs<00B2iL_t(YiOrPZio-AnfJZ74Owsp$+f&n&LDa%=$0qyd7vpUFUa!9k z(J0eIgnv0BNQg#ojA-5p=&zkUBCP%-q@MwBqb9sZ zL9hbh6;~6QXKpS2pL%*gcHRjK)+pvJHfaP(2?0cej_KzZ05JMl02Uq7D<&|C7TELY z4Mu2_a}43@5(Xk5BNU~5V5>b924Dz5oCJdz?y~%}POPlVw9xSVnJeJT0ucUp~@Ek0000GbW%=J|NsC0|NsC0|NsC0|NsC0%^|Xs0003x zNklvIv_V7lNq)H8F^(Rj2JQM zF@YacJr)r%ArMrbXG*j|FsPUL4EH8@C`&@yxSuVE`N7#fvC05cdw(`_;2MB-0JsQ| zJ-2lH<`%_To z80Os{8^h!<5HrlnABS?oX!s)pLJZTwA727_8s;GoVk?+;fy{=v3uI}SPk}JQ+yuhE ck#7m)1Lm$I57Oqyp#T5?07*qoM6N<$g6Xo@y#N3J diff --git a/graphics/pokemon/overqwil/icon.png b/graphics/pokemon/overqwil/icon.png index 661013b728d9ab42d54b49a2d24d5517a53ece66..9af70e8057eb577fd83cab90e486ff026925f8e0 100644 GIT binary patch delta 391 zcmV;20eJp`1keMJ7#0Wv0000?P=%ZT0004VQb$4nuFf3kks&^R0ZvIoK~zYI-IPm? z#2^d>gJxr71#t@iD}V_?P{nr*CZGVy zUrPNs%nT#IwS1Ncs2AgZk%`b$(@uadgo&z*K=SQ!%PCXGR#~aC&QdRomUJKfoPa;YZrzop-&fv8S`ty;K?wx*-wUP l%x?^HJGi@H9)MQ_@&T;9ARKQgb%_7~002ovPDHLkV1hGHtoQ%` delta 442 zcmV;r0Y(1M1A+vQ7zqRe0001qplF?uERvY{7)#p$TK zx{*TYsRKgx&yKF+C&cds%i!BQ2%z)=;NP(Kg9BgMZ{hx{>;tkvyAxOBfDW!l6Uu+J zfvvH7AU{ee*X= ziee++8oY$+bPSL%)vrdhdGLnOSB{8u4wd0kNGwm!?{$Xyv+f^DPiOt1Q7PJ%<1ubg zS!A_RDcOUn8~@F1JDMLBYy#eX+uL$Nkc;*P;zf(X>4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?h&5O-u^w)>hA}4-EyfQ6>f5o zAwGWrOG!jQR7i>Cl!1zbFbqVC0cj-7{QuwHv}$j+Hp;>s99&mnF)wi%(@E)r1v~-L ziGc0I3pxc*Yzn}vpcW4bFwZq-1v~(}#&dS}=_?>L#=BT?n-C~c^VLMmBElMBMP~q% z#kn-A<_Q3p)!iY%786 zTEz|o^{pF!tU)E*$pBatam4vI4{`32T_7O~+reh5UK_;#H=-3N^}}BPHpfL9;69r< zKEqN=_$BJd(#gYT zb1=VGne6uzjtKl$y-X!Ze8(z%udAax7<6%ryr?jyl%Nx-V`YGg_n4q39l`IZo`*4&3cgidAvGY6Zm6bpsAq5YXq##H{HUP|#kI zP0Tz}$P+SBEk^pVZ+}sF9;K?sgkI?Nl~ld{QN+ICwQtT5D2@@PB5=yqaXqQmk5)O7 z+wAP0a-E&6ypJy*n*I;?z|7BlxTj^q2h8Cg@4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?h&5O-u^w)>hA}4-EyfQ6>f5o zAwPfJNkl=2kU(?H6_Nnd%DW7}T|@|zn{1bt&*f9%B;Npc z?tGT-`k`3w{ZIj&AF3_%ey9shKNO1U{c!#L2S21hdd5WX><8#*iA^AfAKWlZX#$Dt pKYt<06v(NED{#EgzPX=r!~?D05VZ{~_Im&T002ovPDHLkV1n5AFjN2l delta 318 zcmaFFI+1yT^5o5ow)FxfL4Lvi(ZE^7O;Z>c7#TcW978-h-%j!7JFLLNs=P;W;^XrF zx5bz}4Q7PgHR-@259u~Kl<*703QBDEW<2B0GGnLugkR5BF*|HI zZ|L4!&CtPmfz6E}hfByb`;x!=P0<;w0>W=)>l2xU0+sX*v0brE;tx2{a8LD}b&?kI z3uAF7rwiR?4sX}Hq>7*PPyNlx@!VSHZB7V-^vT8>@eX_E{xkjL*_N-vS;@qZE}*vh zf7O8^u1fH&b JF6*2UngEk7iBJFl diff --git a/graphics/pokemon/pawmi/icon.png b/graphics/pokemon/pawmi/icon.png index a7fc302fe0fbc61b56258905d3a9c71b4312ac6a..bcef3f24b0839df955bcf720b597c83b319232cc 100755 GIT binary patch delta 705 zcmV;y0zUoO0@wwRBYy#eX+uL$Nkc;*P;zf(X>4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?th-n-u^w)>hA}4-EyfQ6>f3> z001yhOjJc;oP&ddbG^O2|NsBJq(S!fDb->@_LM1$d;ele&F*uY|Foo}#s6xooMK{H zK|w)TsgPs<007fTL_t(YiS3lj3Ij0+MFVwoA>;l3zpdsmP|!?w?P7$i?!m+er?sd4 zuYjAJ*?)-*BERQ!~K-!6-uWljS3fSkj*aMc-J6sit#|6(Mrf-BO{n z%Uikar=I$(?+sH6WEiFv$S_PPkY$)#fz*Du1UgdsVF{%0!xG5G4^tqOAC^EWKU@N- n{Sd7;ei#DT`C+c;7k+pHaVrlP(kl!d00000NkvXXu0mjfdGtwU delta 319 zcmcb?dXs5_ay^4VfKP~P(wyev;^Mt~_x}I?-!W@S(v&4jj{bjFJm+eXK6*o-*%AN3ZaSZY3d^_bJUyA{U z%j`*NGF+ek*Y9?Iy>8>y*M+`eNnZ|V^VHw)@$$c;*U-HuN_|5@Vw!GxO^I59>si4W zNHvh zxt-mDA=cx+UjFf`dn+ILKQf$9+Y>L%QN|qk^YCqleLt85F8uxTkoEl*G0{I>Rda#9 OV(@hJb6Mw<&;$Ug*qUPi diff --git a/graphics/pokemon/pawmo/icon.png b/graphics/pokemon/pawmo/icon.png index 41cc6b4f9abbdca14ecfb185d9a9f09330ef0299..ef69e9e30181e2468bc3ca1f982b20271f31e31c 100755 GIT binary patch delta 721 zcmV;?0xtcK1Ly^iBYy#eX+uL$Nkc;*P;zf(X>4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?th-n-u^w)>hA}4-EyfQ6>f3> z001yhOjJc;oP&ddbG^O2|NsBJq(S!fDb->@_LM1$d;ele&F*uY|Foo}#s6xooMK{H zK|w)TsgPs<0084jL_t(YiS3lZ4umiWL`_6E5NH1XZJrU^kan5iKi8kR-Gd5siARyqlz-TH>AKS~RLYX^|8 zO3;0coGl%(5e_G8+o}trxVz{k0npC?6%zf}BZl;3j(8Vn6?+;)P5`B!Zh&S10wEg# z_x!4P4BsZnfyucfE1aU9dg{Jnice-LrZUJ-OiE>tshH9rLoqiDk_&?90;&8k1ajer zE|AI(Lm(G^cnhTR!-qg}KTLt-zyB0S>4z?m|MbHPhgT72=9F&I00000NkvXXu0mjf DFcD1b delta 374 zcmV-+0g3+T1&{-fBYyxeP)t-sVw{6>b924Dz5oCJL28s@l%%A^|L${~)nY-tq+0go zDfafP)zxbDlqq6jT0ucU0xrFh0000GbW%=J|NsC0|NsC0|NsC0|NsC0%^|Xs00030 zNklpi2w@XADB9Dq(A}TR@4LfUrUw`9P=q z1~nxJ==KX=CkUzpb)#^Yq9y=iDM5fvXpB;J)D`@!Ed(RtzS}Vbzz+ghB#y4k#j zG^bsL4KvL^Vs9D&?_U9bSBX1d0Vv2Qasql@544<(G9n&k{VNR%=5)m#-RtRxf9MB| z`MDqLoV^~Rey9a9yngro`=E~3ANc7C_`7%)NLUZ{6W!Ir*$>Nl82cgg2kg6g0Z`!{ U*ZfyEqyPW_07*qoM6N<$g7SQ@CIA2c diff --git a/graphics/pokemon/pawmot/icon.png b/graphics/pokemon/pawmot/icon.png index cc9d2e942a37291a30424943988160ebd3706c2d..90b36e7378f61bf09a25c3a4e15a38ded5f54741 100755 GIT binary patch delta 752 zcmV4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?th-n-u^w)>hA}4-EyfQ6>f3> z001yhOjJc;oP&ddbG^O2|NsBJq(S!fDb->@_LM1$d;ele&F*uY|Foo}#s6xooMK{H zK|w)TsgPs<009C?L_t(YiS3lZ4ue1lL`_6E5Sjn~+XC9g26lUEVpC%DFi)0cmsysd z3w+XfPJe&{0EQHHC%__DS_rnAxg0uoi$P3W&n$ZbAms>_9`FQmq=;|3MEuJ`J%Hoy zf$l}Daz@_?@1v@$*tP^}DBK9{zF8~m`^k&Clm{QSA zEm{?wicD4jRWk?jaiC@(MXb+3sTDmh3Lha&g=x<^67UKKz%z@DZ(Z(oa1TsoZ~<8hu8QI i{b4!Be?H*fAO8pab924Dz5oCJL28s@l%%A^|L${~)nY-tq+0go zDfafP)zxbDlqq6jT0ucU0xrFh0000GbW%=J|NsC0|NsC0|NsC0|NsC0%^|Xs0003u zNkl0#w$@oDt#W94sijR0^M5VoC(LpD;xXG_Ko_xm z*$rdTLsKzl0OEQVHCB=MNg+&BSyNNhUI`BzasVEpcdj8=Q*{~Z`Dcv_L_1d?$`m=% z@ED*_(-|VLT0{VpVq&OMo+KGHf=x)^gW@QUfq}zZbz+Q>GeKD}5zEwxKquBQ48$a5 zmVosfg-^=67=QVcX|d%z^A6V=0A>aWe5w1RwRghk3cRNfY4ZvANXY69uAj$Rbi8({ znJfYV@lD3pK11Mn+u{@ixNx`I_xI=DA6A(^?ho{xKkzeuxQns;0S)YtKimSFKcLll z`2#YL+?kg@00Y_9-y2r+E6{*}G~;Ct0aOpOefjYX8z=yc`1A*#dUd!JBOiv{W9J^a Z!zUz5BojY@=a2vZ002ovPDHLkV1f>T&ME)^ diff --git a/graphics/pokemon/pecharunt/icon.png b/graphics/pokemon/pecharunt/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..10276237484e2797081917356ba850ecec6f79f4 GIT binary patch literal 534 zcmV+x0_pvUP)Px#Fi=cXMPi(TgM)Luy}kec|GlI^_Vy{&VnOzlDT{mmVoJ^KbDaOQq@>0FYOI`M zVp>5#L0PGgWB>pGlu1NER7i={l*^KZFbG6ds;Goi!TsqD-gy$@!i|9}kC?Et(N*7_Rt2ZcEk=K*xy85#qZ=M5TDWm$? zwaf20)s-#hY>27u62(NKLAsV^C-4crbRtG9h@Sa_tO9bD2!JqOCPIeD0rR3#OWc4G zihwwx0#R(e0^)lhW}hP?Rskya5E#=~un4=yIRIeo0Q4#fXtczm_$Ijl5ymcRLGjV!Z literal 0 HcmV?d00001 diff --git a/graphics/pokemon/pikachu/partner/icon.png b/graphics/pokemon/pikachu/partner/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..891f0d1b3e870760b696c9a5b4cb5ba286147e4d GIT binary patch literal 388 zcmV-~0ek+5P)Px#Fi=cXMPi(TdwYAmy|n-T|8sNAq^$O|gIeyzi^Z%d_Vy|EVp5cQ&Bdh6y(yex zVp>5#LFq)aUjP6B0!c(cR7i>Kl-&x$FbIVUfkboRdH=Van*M873WLFzklmcKQ%&nP zO+Qz_jV=!iSr~{givUw}fGS)T5hjWb2x%~whaL55?Qk}i(rCv<7kSdw34VYe* zCnO_SxV5K0NE1d2y=$M_jl?0$P@`Uo9Z(xFQqMY2?C3wm#|V1wuv1Kzkf3^Ly|?C$ zF~&Kdd6|KuelS#j9p?dOhwAPx#Fi=cXMPi(TdwYAmy|n-T|8sNAq^$O|gIeyzi^Z%d_Vy|EVp5cQ&Bdh6y(yex zVp>5#LFq)aUjP6B1xZ9fR7i>Kl+6yqAPj>iAwl2}zyI4VNq?ZlT`${ZYNYmJV*+iy z*X!>JxY2btaBDZ9R^osN*5yzk8IX*SRaInjA9nC%mabZv0aC3@ud#mCYgE3}lgl2G zuNrVYZ99-7c(}J`FVKXgh1UFvKqF)`^tj8XzE{IQ zQ$CFR;CvViLijN91AP2DKR6#cKluFb{J;%AE*j|k0H6NOkC=Y4!_E((d>Hr<5tI*` lA>)P*Y4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?h&5O-u^w)>hA}4-EyfQ6>f5o zAsT;__Db$^oc5IVy`)<9<|+2}tku5#L1{UCTL1t74M{{nR7i>KRLc&- zAPj4OoF>Kp|F?6X+8|J>U3QojRP_*(7qO4yZwmvk_otk82w2Y9t`SJdcrIh`esa5v z0r3pXA!`6c#N7B_BA_D5Pc{I$bM`N0K2XiA20Qz}1Ml0)9(bKy5>O(5{!%Ky z{8&rT1>gv@n7Lp4s{q)euYox@rUppt0;9iG$r9K?@>xTRPQ60Tx9|W(X8@zrw?M04 z5u)x(+ZZIihfm=z= zydWS0w<^1XK8)O|><;=ca*Nl4K16P@q){JcY6N{)P^Z_2HK5anHMe?wxUiQ#{F*%h XZr~6_^Yvpb00000NkvXXu0mjf6{T59 delta 294 zcmbQlc7PeA^rnL1BkLGW6TDRS!@lkn$)>qvNMiL%ZDl>(dd%wO&urxpaFa1HqjJvt} lZ~v43_FwwK%0KV_e_)d47pQG;%<2O9*3;F`Wt~$(695@nkfZ4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?h&5O-u^w)>hA}4-EyfQ6>f5o zAwGWrUP(kjR7i>Kl+BKVFbsqdNQo`^=l$Py?LeD^4DDqvE3GT_zzh>(!?$gJt=zxJ zDwhQsLl$vPOZiZtqVyu=)gMr$NBb;*0GSB$%%Jmj43JKkCx8rufdJ`*0RXui7hw=U zCc=>L9Uu!~R)E|IlYP#R8VJ+2eg8a1!Zd)ux(IUu1nDorJOboJm|q6S4@OcR?E_-x QqW}N^07*qoM6N<$f-mr4X8-^I delta 437 zcmV;m0ZRVk28INXBa^cMJbwTXbW%=J|NsC0|NsC0|NsC0|NsC0%^|Xs0004XNklwli)@U_qT0NXu8 zp0;6I&2n9425j55uH35YQ5uhKj1T`iYd0+WVX+??_oCXepi-}pC*p;=!rG_x)#M=uGw`sPLbgq!9ISyl4J*gu3~{Z& z=b;5M!{ln6Z{6SDhxI4;kpB%ImM1>U44n_WJHNvRJn#XIDuSx00000NkvXXu0mjfy1LxB diff --git a/graphics/pokemon/quaxly/icon.png b/graphics/pokemon/quaxly/icon.png index 40369574459388698d7a5cde8b2898ece6fffc7d..6df869ecdc4dd3966bbd47fbd0fed790f3748354 100755 GIT binary patch delta 702 zcmV;v0zv(#0@VeOBYy#eX+uL$Nkc;*P;zf(X>4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?th-n-u^w)>hA}4-EyfQ6>f3> z001yhOjJc;oP&ddbG^O2|NsBJq(S!fDb->@_LM1$d;ele&F*uY|Foo}#s6xooMK{H zK|w)TsgPs<007WQL_t(YiS3j@3dJA{L?uzM5GMD(?Vl=kWz4eh>1=0A6JuW~pI(p; z9qevYkAEW5o{@dPbS1WdQ9#wut#7~LvwCNO+66FdV*uE8;h0?lf_)Qmu{xlt!4!JY zyHr%7i$Ik-5c;*X29cnHQJ_^Ed|Kmt+=4qNkTFHHQNK&LM00W-T!P{7B!KsOXm0O2(Q1kQlq|9=JqH}wD_+{OY# kG{ysn&|iQE{MP{S1EWw7TRe!76aWAK07*qoM6N<$f(;8m;{X5v delta 270 zcmcc0x`Jtfay^4VfKP~P(wye%>gv6FxBUPAzqt79k~QD9G)KKV+I@75=C^N}-;#o+ zRG&S%blL3aC#UG;qV6I|8%oua1s)V%lLnes|>6aRw88x4}) zf7mE==jenFN=`2=S2D7F?Ai0)@?q+YS3C=p@1A)gn-nGZY1+(-ulzYI9Ib`8|C;hJ zz9_%K@vgz`x#Vx%*Y$zz|BS!>dT2eT?Pt*8g3b)-G*OS;Pro`f{$V&3!IR+Yn!^fo PBZDWqtDnm{r-UW|Q9Osm diff --git a/graphics/pokemon/quaxwell/icon.png b/graphics/pokemon/quaxwell/icon.png index 3806542c09007ede0a33c3bd0ff15fb3edc81142..73a2d4ace7b3be8f0c1fccb9c7302e6c488cfa2d 100755 GIT binary patch delta 660 zcmV;F0&D$_1Lp;hBYy#eX+uL$Nkc;*P;zf(X>4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?h&5O-u^w)>hA}4-EyfQ6>f5o zAwPfONkl}Z7qy|Lp{y9tF%%4Y@;t6mAD4+4t0^y2q(HaOsL|DUb-8B{=ifC+g3L2^i2+lR( zV-O>NdtD>^LBNV_h8-oyx&{+4Ghha0Lvvx7hFHC)$DAX#%*aze zXnrL(fEZN5Wt*zzfY$vxC!#0=P53S|X!Nt#*x%l3e*rmO1*9Q9t`E8X7y6LvzxAP8 u|E&-G`k(sHt^d}C_DekUp}WYp>cb6nniS`D@#ri70000NA{R^m|j0khG+QK_g60 ziFKOL8O!UZ7zM3cvqTsc+_+;|)D+&#|CIGW{p(vT#%6mWnC`C51-3_*CTI8F z@>>0V$-R_Y2bZ6ZdCOZU)3ZP5f8CEw@_(ZL9(exw4g1;WZ`*_GgghATOrFZ^a(FM( zi=%EIzB#{8G?3qao8RVzqD#ga{j1-aWkOy){B}4{;NqS2B1hPFb924D zz5oCJdz?y~%}SK^O73%<_LTO$q+0goDfafP)zxa|N-1JuT0ucUX*qpc0002qNklig6%h~|fT|7z z3&Q?)fbrVu2naHeDLAP1EI@WOa0OcP2&A6fi43kl^SDTO9K8gSr)>hIc`BE{vFs2c zoY#_N+xWFM362!jF*0fqJ0Or!#9J7&8DhD@_`W+F5K?!SYFI&S?;h3~o+Go=RpWSP zm|XQX?(_KgLQ16b$~^iT-I@P=mNz#$o%VP4PtF_dZ|=vOdbPi~KL9@Vr~4Os&i0Rh j!T$5UANyaJzqS7h^+gp`bU()!00000NkvXXu0mjfk4Bx5 delta 350 zcmV-k0ipij0__5j7=Hu<0001qplF={001yhOjJc;oP&ddbG^O2|NsBJq(S!fDb->@ z_LM1$d;ele&F*uY|Foo}#s6xooMK{HK|w)TsgPs<000SaNLh0L01FcU01FcV0GgZ_ z0002vNkl%52z6m7ji5`A2r1;z zij@IjDT9AmzaRO8_=|9ElypJ>VwZAI{uL}kDG2KY!#W7oIBcCTdn(_8(OTB%aNh(E z?`9NI&#?<2DMVSM{HjS(OER{!vPIGgFKLFes!vBVn#xtz`vGTpaBFQv&6-mQRGWr* zmn(XoGH>&y;8%FTtL!=0&Tr-9G*H4+@b~G&Uk8k77?vI1{e^>xG(;TwBm^9K9j_K} wAc`Iy2miJ7XtMBu1AYYuEG9TCi=V^c30mNdYKz6@AOHXW07*qoM6N<$g0&Er)c^nh diff --git a/graphics/pokemon/rabsca/icon.png b/graphics/pokemon/rabsca/icon.png index 57c93e30a398cc2c27183f94842c7169ae160b7c..83e9bcbeb734e7ec92e700049261f30647d5a976 100755 GIT binary patch delta 767 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 MboFyt=akR{0BSdzcmMzZ diff --git a/graphics/pokemon/revavroom/icon.png b/graphics/pokemon/revavroom/icon.png index 8d3a2ee0cc9f1eceac4cf1aa8b09c0ee34d29450..0cece4d451f286ebaf96c22f563d5743f0f5f6a2 100755 GIT binary patch delta 808 zcmV+@1K0fA1I`AJBYy#eX+uL$Nkc;*P;zf(X>4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?h&5O-u^w)>hA}4-EyfQ6>f5o zAryaebIqiz_Oydq?!}A6tSR>PDfVJglzYv^q|Lo4oMK{HK|w+3M6_Q300Bu!L_t(Y ziS3lZZo@DPLqqu#K(PM*Z%4^#ZD&%p9Sh8d6fJ2=R_b>g|7%+|R;_oSb5#zL76w>^ zWrp5F1R{2rW(JREgs_MrO=!^qO@JG|^=p4#0ubtP8okvqS4RdlWf^P{uD8~pogcp6 zU@D8lfF`Fj>bRV2K2QfGm8t zl^6gi_%H#o@nJ?xfE0X~0Ll5V0;J-@3m`ck7Jw9dxB&9=_4kbA`cHsB^6P&k_&AH} mKLFx{L^!H~!V#sG1P9E!S?86FU<@=&T}FA2%w8xz7=2s}^_CG3fzg?7 zECjA*i$*B6#A@Rv1m1P&OZQ;h3HbUv12pbcDBJZ}C!9D>5rh)PybC^O22~;KlESYX zp;{oQHryp9@tQ_VrGIM-$l57$+*KsDCz-T9@)DO|Dx?N#hn5{c381k?4GEOPj)9uy zCN%NvK~hUeAeU=>t0Sfp;0Ru!@dFR3VxOKhyp;gNrg2}#wN7pk_JKF}F(?1V@Awn` z(Bi;<{o$!UVCxUpep*SKVbEToa}3V@R$GZ fTf;5mqyF#%cFQRp!xiun00000NkvXXu0mjfL&@2K diff --git a/graphics/pokemon/roaring_moon/icon.png b/graphics/pokemon/roaring_moon/icon.png index d8d82fb0157c8169bd153a9cf4c5506737566405..e9dabef1ac9e96c332bef38703277eaeb5330a83 100755 GIT binary patch delta 915 zcmV;E18n@e1gHm)BYy#eX+uL$Nkc;*P;zf(X>4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?th-n-u^w)>hA}4-EyfQ6>f3> z001yhOjJc;oP&ddbG^O2|NsBJq(S!fDb->@_LM1$d;ele&F*uY|Foo}#s6xooMK{H zK|w)TsgPs<00E;(L_t(YiRF~da>F1Dgl&U4F#37_x9v*84j7V7552T_;$+xG2%&u2 z_B%uM8-JY$miI2zN4)J+ za-@6^F+5^{hb@p<%6gt6CQG(;wTl3qsX%3-$bUg|Z3c-$Glu8Ku!-h;R`KQB%ByBE zP4K1pJhS*}eqEAUF--PK=)UjxOqU2pro9I`iA0`uzm_g{yFf35r2LW^KJ(!M2r2>ViVv)Pv4anGOE({SfHXeP$cN#MSA5Xn@4Mi`2#}r+ p!tGFZS3US3!G~AZ{d+!q0b?LB7B`8-ISc>*002ovPDHLkV1j+zvMK-o delta 547 zcmV+;0^I$m2fGB2BYyxeP)t-sVw{6>b924Dz5oCJL28s@l%%A^|L${~)nY-tq+0go zDfafP)zxbDlqq6jT0ucU0xrFh0000GbW%=J|NsC0|NsC0|NsC0|NsC0%^|Xs00051 zNklv-5XjL&6YyjMW~o6=rP=adK{Vk{Q;GCGn6+3S>z|>Qd%XwRjp_YT^!n zFK1#4Q7k1MAj~3!4Rk6JY8qvnS%i&x*cejPN;=I@HazvgyWy8Qt8+YmKI{_P*Z{ zdZ*C$GpH@@Tg<4AZF1P*ky4w7j(K)!=TiNFp?CEoW7GaY^t|8rZM+8ZCk6T~7QaXX?KsOMZhl)H?w+@wf1`8={#KBVV z5aoJyTnKwBwH_S%*MH~V&d1na8Ql2UT!qT7`TQdBGR$j|q5uZTw#23X`ifQvh6R7D zbSbz&!;nMCr>}aLfp7@aiEB8&jFzwhxFnkn`*bk5OSPmv)sz+h+PmXn-68Bcpy_373=3*CK9Er<9#@u zkoE}{>rSXQNke;?9^wVve)74q65W5c2sKqh^t`0${3(D&hHNaV@3CDA#pA3sh zx<=bW?_Is6p3T{<()a(5@x#Cbp$|+T=mwZTP!E_$&=r_S5DUNn=x>7115*(}E)paO z7)5X#v5f=~FgTV-NQC%SdSIj=XU7NqAUxSb+KIdHp%b!?<&}^9q@kwR+!dH?#l%002ovPDHLkV1h_p!kqvB diff --git a/graphics/pokemon/sandy_shocks/icon.png b/graphics/pokemon/sandy_shocks/icon.png index 99d693a1ac353250a98e880afda299870c34843c..956607df1626cdc96ac61e5386070059e7dc1557 100755 GIT binary patch delta 742 zcmV4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?h&5O-u^w)>hA}4-EyfQ6>f5o zAwGWrGD$>1R7i>KRLgP$AqUHHUM5>i*L!kZT^+-66Jsvd|41LUQxM6G$$5?$h{2u zlCM=~*$A`TkpPUwi36dw1Tl5iklU_Qu*v#zB+zX3t;IVi+~KkdW{a2em(RQZ7k^3$ zALG5{xk~WA3u3%KUl1If;$xoX>exPt5B5V}AfNs4s{PQX?eTsnf7lPx_%Hk6GyYfS Y2Z|gXRVepRe*gdg07*qoM6N<$f~GTGfB*mh delta 465 zcmV;?0WSWx2BHLzBa^cMJbwTXbW%=J|NsC0|NsC0|NsC0|NsC0%^|Xs0004zNklDyBg7o%7K8h2@ShZb32@Ya!Cro* zS!MSIycpYJt0j*b$1HwkAZaGd3A|4l2=$6TwN$OPJS9;eG7}*rzJD&BQb+>XNC8o; zAmF+Ho=dQ7`M@zk1r&nSTVEms;;acu!RtvtJIuLoDa`zopv1@&xJaU+wiR*KAX6#g zw>nbDuLA8)lXJW~VNpy+q1#!usYF=nVmw1X0X zjo8R=N3;+NUPeqJc!cPg!%gm5&X03i=C9t4Il}E%7I>Mc)xNvqKe9gq$hklR$U9*= zKu&~d0C8u+7(mLAFdZN#!Zd&!2!jTY17Q|`yfEesAgkaBkVdV@6Cl%2Djzn0SWh1S za`R#M<+jfNX?z#}vG<+4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?iHTS-u^w)>hA}4-EyfQ6>f3> u001zNe>4thIel9I00AONL_t(YiLzNd`E_n!4!ckJ-=MI!H2C^Bv8Z_mB6id3J zuOkD)#(wTUiL49^%nSiOA+AYtnv08z_wL>M|NsB$IbL(ldQJJ}^{#l%w<+KDE{Xc~ zO!M2fHCL}@J@e8`N{VuH1nM6JqaiSSLSVD@#Qi|uFeZ7syZm3u{^=-)QxfDC%;50s zMjDW<cI{&79O zcVx8X#*&j+r!1F7Z9OfNyhriYmy6DeQ<#KGvnFI&rFR-WcXM&p$Xdl^!VuCX=jz+6 z_H}kqmtk|}LD%G-^#Ln73QXR}v`-5N&{j}6C?;e0QnYpbjZhl~Pq`>nZY(MPXU^{jfyrxB7Sv>z&_kzW)C!?q^`(-qN@EOh>lv=M=d9&&(m_w?E^fTlZNy zvg@T4*8R(LRc oRbo`w$OjBMzSIcMG+$o^Eg+i%h(X{|@MI9>>FVdQ&MBb@00(v4B>(^b diff --git a/graphics/pokemon/scream_tail/icon.png b/graphics/pokemon/scream_tail/icon.png index 09ca4083ecddcca0a5184d5bb52ce72e4449af00..13669394a0b4f95875aff4b82057ef7322f145ce 100755 GIT binary patch delta 684 zcmV;d0#p5)1O5e&BYy#eX+uL$Nkc;*P;zf(X>4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?h&5O-u^w)>hA}4-EyfQ6>f5o zAwPflNkl_Vl zi=vFL#YpTbu`noFT-Q7ak*3nHt0$F&d$xLS;ywSUY9FMXR2r|mDYpAY}m{x2X@9lj8? SHLWNB0000c7`Z%M978-h--b8}wJ7j7w-;$7|NehJ zkLlH-u=UjiuUi!rb2ZhLes5Kl3v|5`6tg!hcZzjmRJogqb5r9%E1Q6W^GchXPIw<+ zSUAh9f-C63f?)X{CjO41dOHsb%vgR%hP_X}K9XaWqM(t0ymXoI$s?N+PWo|I-}Eju z&HiLL@nD!YY2wJ`bAhAH?sMI&o3{O_svxXZ+on z!3u>26V}_>SL}YjxpBwC?0*K|o70&WdU$?ezb?&en7iuyzXf+6GSz%#Klf4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?h&5O-u^w)>hA}4-EyfQ6>f5o zAwPegNklnNU01~L=#24hQb4D%uZ`3{~J_wSrZVZ z6#*7u#~gu+_@z1{K;4~)W(2%<8kqs3XhwA91n%?gaT9ta1m62?9Ff+e0XLXw{slyb z?iwNISqm|vXd{;V63-YR0M7Tf&qFRIeR4JOZBYDA5UKR%ZT+Rv-?#OrZT+p%AC>-E f>F<^P_(lC+FKY^sSN;dD00000NkvXXu0mjf40#cj delta 241 zcmZ3&dX#B`^5o5ow)FxfL4Lvi(ZE^7O;Z>c7`Ax2IEHw1z74s^bwq(@^6VzQ+<*V` z^;dt+TzlxCMPGEBh*0qAC5kpbgc?}qKVw=lRpD5Rr>I9yVAfZa6Ok=8iCQPLUn%a= zVi4T4_Nmk2)eimKKex?nO1!^7Y~BJ6*-3h7ooR=>mz3nJ(W`KOX}4iM*KO{cqXzO# zvU{W3)t?&i|C14Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?h&5O-u^w)>hA}4-EyfQ6>f5o zAwPe{NklxfU=1g0L?BKb~8)>oFAO|BblE|56Wf(i58{ Shs^H)0000c7!G;5IEHw1zMZ^L=&%8YGc%vgozDON zZ=dqJbx`%*t}kn1roD(XJ1BGfzozkZJEdtZY#UUJl0+wJN-gYnaB_B)Yvj?}zR^9> z>-$+YfeTEY(_Y+DUL$bP0l+XkKh<4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?h&5O-u^w)>hA}4-EyfQ6>f5o zAwGWrgGod|R7i>Kl*w|$APhuZ2oNXf|NnNn882eV9Foc<6`gEamKuTIas1_Q_s_b> z#{`$O>anJ$wSudMB$rwT7w)R&J?UJqij?rVm8@oVRl$Od30jI-YmKFx@2qfVxS3`X zX(ED0rEZ}I--}gYRIR3H_fB~#l+1(#@1lPwkqh(`X5qy!yTrD&H=*7wUqKzS$zI?G zJ&M|}Pp1xx)ZsBRVcdl%EWFF3KW9>rarWTnO1THhb0iqFT_#*ge#_P{Fpi8z<+n+f zuA^v^1n+9nyFZ78qodkj)3JL?J{(kc0Xa3^68D4wr8-{+EXz4Lr@iGuVfDFX?!$i& zpPc>kfBZ0h1rS5R1`u7OG=?6jOdZ%X0hr3YW${C>WDnEDbX5AqJ;5Y+Hy|J}~%j0Ho8!IPqbtyz(JWW#>a&!J;QVAPPP6p&b3jhxUK@@C76F8d`hX Ro}~Z)002ovPDHLkV1lZC)hPe~ diff --git a/graphics/pokemon/sliggoo/hisuian/icon.png b/graphics/pokemon/sliggoo/hisuian/icon.png index c66baae5a9026bec9673ea2af98a23266459d31e..c2cdfc0bcad7afb9ab56bf435798c6959ae13f61 100644 GIT binary patch delta 277 zcmV+w0qXvU1KKR522R zFbpF$6E)WVe_JJ_T^gCCOYdqp7RibYNZac+G%!LLq~JYZ=7ocSS(XektGq zipUAz=IN<%bC&5nu@mkjJ%Rh~Q4olE#9o{c=SdM1YaB-(A)BB8*#*)vZAt048wtjH zK|nrunKcUV`N=?Z4o0(4D*~lQ^S~E`4YRq!%P+z$+N{)zR`5kZ@h1N@>pSMJ{@LN$ zTk~scP4nv`rumBrf5`j_f1AI2)fAvBbUaWXTM-YB2oKZo(7hj*fQSd;uXI?)1Jj}X bXgoXt^j#0inh)tG00000NkvXXu0mjfz}a7bBm000XU000XU0RWnu7ytkO{z*hZ zR5*>zk~?n0Fbsx$1421~1M>h5T4prh!E1ruGi%qPK zg&RLeKlS*s?7oVV9@;4ZG=V};XKO9NI>90VjA4P?0uTJ9B9^urRb)d|t--OWR0Mw= zA4!3huu-AwH$AD_z=>)r33rt*ogn^&Ji0^N(f8f^fW?*z!`tT$B`||UL=z{^#_Z6D z>##M(DxMW_#Ym{HF4x(|dodH1b;0C25_V!KdU Q*#H0l07*qoM6N<$f&uW6VE_OC diff --git a/graphics/pokemon/slither_wing/icon.png b/graphics/pokemon/slither_wing/icon.png index e969280a5ded3664ffb3923dea0ec7fcf9fed32b..5eccb7f4f0d2cc556c68819273efc7adf5ab7157 100755 GIT binary patch delta 817 zcmV-11J3-$1J?$SBYy#eX+uL$Nkc;*P;zf(X>4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?h&5O-u^w)>hA}4-EyfQ6>f5o zAryamoJyR{N|g3W?sJ^>l=i)(TK48C_V%pR)oSKSDPm$;K|w)jIel9I00B}-L_t(Y ziS3lzZo@DPLu2{L0WALi->ofJn02n1VzssVERXZ z>(4;BB~To=CmK*s4PqG>r4pz-aCvcqTD5-~agxA=T~H@sB^3Oy=&D(Xs3Gt&qb`~W z5b_e?r1uFC0`{(6$3_`_f+AlzI??Sk2Q6kh-pRV0(;Nia@7c(PS@aqXH4Bf`;1lgk zvOr4KTg4A)O(OW#`7IG?1igq#LT`Y&&#$hV6PX$$`ZB<$B{V!G1I)R`uymSbnvs7* zE8veDtT+;gApl95{Tjy0;y)k(enI0;2PSTBzgvId{O7}x4;Mh64_82+5661#&^{m5 zgyH)4`LHHTtp8U&M8XVR@Q@E^8}oKP*o+VPplO#6vHth@(AIyO4<>(>54z2VSpO~` v=6Hzp_k5r=j<>{vGoBCk@es_f#KRQ}_3Rmq{aX4bDY&;LA|6}_U0+}_N>*_YW9>VVq#iB zK|um8y^;U`01$LiPE-H?|NsC0|NsC0|NsC0|NqS)vXlS-0X0cPK~zYI-IRf9!!Qg) zD|r;zAl?7}?M_Ldwc;iW2BULBDCqfga`4@5zqx>mdXIC2z&HcYFMoj;hsavYiYr+ zAbCc{UMZl_P!vQ)r+ zrf^3xxxE3LxDwc&{7K9I?{5g|-UDz^|MT?^0s{5~mI3k1hj#(-k`L>EnDSu(%=xeg zh&dnX#5EskKpgX-+C1iim)rZH`A~2FkMm&$7Wq&E=Hb0*nQaBYy#eX+uL$Nkc;*P;zf(X>4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?h&5O-u^w)>hA}4-EyfQ6>f5o zAwPeINklKP?Y&~ZHaQ%PF;XXc7f zlJtbc?CePsBcR;O4!{#&1L;D<0??ZG+ZbO1jIaqBUQC%Y##;_JZvf1IqRbkKxNrsC zn#L^#QQPv5QPV4b{sx&7en2<=qm8sdf9xGnAm8=FFY4h1w5to`p8IVa00000NkvXX Hu0mjf7BvV` delta 223 zcmeBS-OMyWdGcmP+j@bLAiv=MXyB~krYQ^z42wKn978-h-%dHm*QUVJ?3uEFGxPrc z+|=JY%bxk$NLF2NK5fRbKWLkswvp*c!x#C222A3a%b2DT&ND{c46buCTyE z(-&`byV}J2?tIIqn{`6F75Hbb_MO(jRTdDY5pwaM{Dj6jHRU5B>DOmROuVDd|9tP( zuj}RXLKs~B-S!h>?|9PwSdn4TPs5XqJ@VWNljP-@Jp9{w^5_22{%oa?_i71u%yB_= RA)s>^JYD@<);T3K0RVTpX8QmD diff --git a/graphics/pokemon/sneasel/hisuian/icon.png b/graphics/pokemon/sneasel/hisuian/icon.png index bd9cae88b9bfbec648d238e0a8a067ee49c85e6e..f2646a7ad009818560233a685e11815bd744426e 100644 GIT binary patch delta 316 zcmV-C0mJ^x0?PuB7=H)@0000?P=%ZT0004VQb$4nuFf3k0000mP)t-sVw{76gLA#T zz5oCJy`(|*_9@k3LH3j>i+lfKO3m(bod2|>q{aVgtej$ET0ucUS*eg@0002VNklLcim>M2VMBoU;iTunya0}-8 zP<)Ey)nx|IJz0){g)^{E)R>&|(HsUE7E!o342=IIDuAydc^;zSwTN_lHhb4U)Gd&i z__aX7dV!QbmNh`Oy9|Fs>H`_1rnLNk4Kn<|jX|a#T7wKf^al8V-|GcGFb-2y&$`V3 O0000PDfVJglzYv^q|Lo4oMK{HK|w+3M6_Q3000SaNLh0L01m_e01m_fl`9S# z0002ONklfoAN`gJ$dvnx#SDTz{a@J0zpQG4U9P>Q0dY zJwPMypvTwuA3ngJO)5{)zGGeXmj+Rg-|AxNE^9R?u(l1czUW(`88qNL)*5hkCk7Kl||k4IPLj%p6I& P00000NkvXXu0mjfK^l)K diff --git a/graphics/pokemon/sneasler/icon.png b/graphics/pokemon/sneasler/icon.png index 4238b0e6a34a0af05eac7fcbae351d395c2ddaca..d3612a640cb8f0f4fa2624c9ef24f58ec2c431ac 100644 GIT binary patch delta 347 zcmV-h0i^!k1Ed3x7#0Wv0000?P=%ZT0004VQb$4nuFf3kks&^R0U}96K~zYI?Ud1O zhA;?5#X>UM3h)26gH~O)eC%cy`?HKIBPW!ioNfDKVfH*ckDmdW@2%E)BEpE&k&!!1G5}7112%YJP}Uuu~DxTd8FqK!vwx5yEi-1U8e#9Qmw* zL|g=(1GBJdQo>AsS&q2oocCA2$ZOl1Pr(UPo+{bwLd6&iA@VmM5E!koPJ#e20pkD& z00Yuy@v&$$1oHbn04EY4enlU5mY+~*E&FG$D&?E($94YWNAYq3f$P5r1TE((5WJj= zK(GK7f#5S1fh1=v0>Qu{kPR8)5lFI_bPELOVHjiz1nc2CGRQ3uw3?&oA&}4mBrMu= tfuwqP{GfzIeET8IPiXid&;O1e-T|FW6`#QYA*=uZ002ovPDHLkV1nhll(_%^ delta 406 zcmV;H0crlE1KtCW7zqRe0001qplF?uE0)`ji z9x&ecq}*M)o_gIiq224PJ2qcZTXA-EtdH#~vV}zzDIP5k;9w#Za9}a~Qf9`dT1-iq zfp}uYGu~{6T!ZH$C{hssSxmMIQR06#O-BU1MHc?Yss+j68bM;bMvyR83(_$^VMv&+USP8;dP_G0L-#QKhC&=>Wft4V4AAVe1R)S_? zSaO0SDYqw~XdpR!tZdQqfrLFkRW$tx4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?h&5O-u^w)>hA}4-EyfQ6>f5o zAwGWr0ZBwbR7i>KR6z>EFbpe+b1)d||G%B=b+BY^b}pNth1RMhJ4MHFuR_$WFN1Xr z!FZNjAmAs!tVF;Gh|4wrXR&WyA<$2NyOx0P;JqiHb_o%27gZ9JqhipZh|-H%NrD{1 zWk~H4A#bLnaVva6jqY-j;YC*wSoG7W3~ztrm=VDr{am-V=BoSwKJE0)(`p`?l zOUxed%k>Y4V;c}XuP*`7_xaHG`4AGf$cNOw&W8k?pOpC!tA*h0;UgfTF?lKiVlo+h bvw(O2(}fz7?51h~00000NkvXXu0mjfpdLgP delta 406 zcmV;H0crk*2Im8iBa^cMJbwTXbW%=J|NsC0|NsC0|NsC0|NsC0%^|Xs00042NklR8vfi4(%Q0JR* zL>^--=Ys?gzhjso12D$jCsCw;X#lPD9*|dns>c2zLqLY2DtHjg4}Tx=0BqZ)LnZ-k z2gXG=Ac|zQA~wQ%oJ$OZQTNm+Zc;kqQISGz%K%}WBHV?rAR?)e5=l75WZ0Sb1Q_Gw zaU8ldVonMa&%hZ_k`fT$m>wL{&4=q}r7L~@2k6D)e-sT0Cx zu!li(NV=k!wZ03Gf`5>CFZophr>o2qx32*5@Jb%v*`FQX6bLT4A&4(OTnOaG591_H zez*|GogaokPJXBbvie~o;;Nnez2j>D^)RLoJZS z4_P3q9}0o|)DIch{jfJX`JoWV>W9?J|Llhkv6CSEf}Dzx01E&B07*qoM6N<$g4x`` AGXMYp diff --git a/graphics/pokemon/sprigatito/icon.png b/graphics/pokemon/sprigatito/icon.png index 114fcff288cf8ed8361b342f30d2e87ca678328a..22fc9125d88bc226cac247db995828d4ff101abe 100755 GIT binary patch delta 647 zcmV;20(kws0<{H@BYy#eX+uL$Nkc;*P;zf(X>4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?h&5O-u^w)>hA}4-EyfQ6>f5o zAsT;__Db$^oc5IVy`)<9<|+2}tku5#L1{UCTL1t6ut`KgR7i>Kl(7=S zFbG3)XDcoThyMR>3(a+LLNd04HF(jpur;u4OaCZ7`8^4;;@G8!3)Fy#p!W(OO+!`z zR3d!rA{8*OD-e_)Z=HM_4cOyQQRY0Gi4kk>M;lGkm$PryFu+&Kgz)_YF#muEPp002ovPDHLkV1hmwEBpWe delta 271 zcmdnWx|eB!^5o5o67`N*Q{ENN`8MU--X&4rzI87-`afyPlB-FMNl8(Tj*bgYi8BC! zKuM5a@P9OLR&mo5pxhcy7sn8f&bL#n`3@WKI5Xd9(dK>hH$VEMXWOx`%L|>kXEcl3 zy*})Cd)t@VkLT7qPLMpVbv0IjJ%nXz8pF!^SV;%fJ8UjS3mD&7r~Y2k9DnDlyX(#0 zv7OI8FWw@=m-;1?Tk3~KpktridgEhUADFV1?LFUW@l7PKo9(hqaVazV?M)1>+d4ZSPw}s&vNkgo}U>z4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?th-n-u^w)>hA}4-EyfQ6>f3> z001yhOjJc;oP&ddbG^O2|NsBJq(S!fDb->@_LM1$d;ele&F*uY|Foo}#s6xooMK{H zK|w)TsgPs<007EKL_t(YiS3l#3d1l6g&U0^MfCmOcA9n@o2FNTwa`QE&WArqILmVD z*D}|kt$(fQ95HvtnGp_bngY7}Iw7J$G*BHxp2aKZkVp_F39(@Vi-;}8qLK(l0D^G9 z{R|NGXAk9~03i_?dJDIexhUX52%j19w$_PMJD{*IKye#BWbX|z_K^Bfd<{g{fHcAY z8iaJ_?*wzP!fVjj!0q|3aM4OfA8SB|{;f0UaxwXk1L7+mih%gYhcY0pk`L?p&WGx* eP7@FR$cG1^HWOEVVV;@*0000 delta 358 zcmX@l+Q2+Pxt_rwz$e5tX-;!>b@kr8TmJw5UtD~4$(nClnxozw?LN9j^V>JgZ%IK@ zs?Q!>a(1ugoTQ{EM@Pq(E?eRm7#IXfg8YJkT2R1Q#Z6Oya_>D|978-h-%h#6b=ZKz z^>)jJl&0_h|CeP&nawb-mKIUFd)an{XZ`ifx!bi4%y-?VUGkh|gS#Qqs#iOM4sbr@ zP2*O6F>7=4+MlUz4yPp>J~UTMz0|^VT;jqlDaHZ`g8*&zV;qOXJsUf$w`{HHV%!iD zqQUq&_7+n{)EbqvEh+rWS!ajm diff --git a/graphics/pokemon/squawkabilly/icon.png b/graphics/pokemon/squawkabilly/icon.png index 540b7521a82fb4bde213899b00a6a6d573b7f680..2abbffb286360c3ddd0740367789d803ec2dc9c9 100644 GIT binary patch delta 682 zcmV;b0#*Hh1N;S$BYy#eX+uL$Nkc;*P;zf(X>4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?h&5O-u^w)>hA}4-EyfQ6>f5o zAwPfjNkl0(wmgTFbt6JU0x~`fd z)zbE4gaLb{fF8Lfgm>@*R2wnRVjZ*%6pxgYb7u1{dkX_fVhv}#6Ee1bCZLWTp{c+Vp=#N1Ukw30_ z2>mhWA@s+nhsYm3o%@L;ODfe#ivT{g4Xe^g||)?uT0eJnx4eCr%N{hglBE QGXMYp07*qoM6N<$f=C`dNB{r; delta 301 zcmeyv+Q2+PdGcmP+j@bLAiv=MXyB~krYQ^z4DUT%978-h-%h#6b=ZKz^|nipP}}$a z|I4zX%x0KZON*%8y==R}^ZMr8?OF%syYAC2dCs!I-H>V3tDQjyIG^&SaVx)=wYhoi z&r~;u(~=Dznk%MWYGLX(T(H%Y=|SQFhqW>i%Jm%aDy&NHE?oPh$#$S9a3RZ@@=Wdp znHwj~xH!p{XT{cO#ce9)S)Y41oDle38+Rio&{gG8N^eGB7uTg5{YRVB>7`txJ4{hluloO}NqsQz<>-%{WshrK}~gS)tv!2Yhq$#2>1p9#&V wOJLghXM?~ArI+kl6U^;3E{WI2+uJa{`zksk_KW^1pywGpUHx3vIVCg!0C60WasU7T diff --git a/graphics/pokemon/squawkabilly/white_plumage/icon.png b/graphics/pokemon/squawkabilly/white_plumage/icon.png index a784c6cddad2e85a16744d3add99b6dfe3c8c811..ecdabe36303632dac1607972921bd51522f04504 100755 GIT binary patch delta 692 zcmV;l0!#h;0?P%EBYy#eX+uL$Nkc;*P;zf(X>4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?th-n-u^w)>hA}4-EyfQ6>f3> z001yhOjJc;oP&ddbG^O2|NsBJq(S!fDb->@_LM1$d;ele&F*uY|Foo}#s6xooMK{H zK|w)TsgPs<0072GL_t(YiS3lZ4#O}ALmLQ}O2GgB?VO~Wwn1{5v{tIsn_r1(BX8TS zU(2DTZGWZM9C5h)nGpbnrhpy3O^7z39bndpm<1E8i>MJ!0r6og5&7myMuG75dLsb9 zkAO&ho?)5{5Efx)41sN`$pC2hsvNiVDq>cNkwTf1uYr)Y7Us4G@^+Qq+AN`OP#Ct!Sx*+!bA_eh> aes}=0su8qB^6~co0000b924Dz5oCJL28s@l%%A^|L${~)nY-tq+0go zDfafP)zxbDlqq6jT0ucU0xrFh0000GbW%=J|NsC0|NsC0|NsC0|NsC0%^|Xs0002% zNklPlnbPU5!7ZXn9YY70WD|vGF-!|wZ?&CPH1n905}Yo=$!*|2H{3ZAld_J zHcAl#V0}@c1k|@!04>zdcj3c;ZabV3)w$aIBn(k4K3Gb0pW^MpMo72`R2E{>;fFfx z@2%RgX;P&9MO*!g*PG&jU90o*^L)7Dff9P<1K0RzKGZ<8XXFD55MUod1H?bYKCsS* z#{luWEi^!`d{_iX=7VH_RA+zXgLs^kGhUky9}C75F9%Q6S^xk507*qoM6N<$f}xtM A`2YX_ diff --git a/graphics/pokemon/squawkabilly/yellow_plumage/icon.png b/graphics/pokemon/squawkabilly/yellow_plumage/icon.png index a042d981d06d1fdeaadf88731c7d7b68269f137f..085b3e0e2b40422ee2f70be8cb49100a7ae6afb8 100755 GIT binary patch delta 688 zcmV;h0#E(_0@nqQBYy#eX+uL$Nkc;*P;zf(X>4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?h&5O-u^w)>hA}4-EyfQ6>f5o zAryamoJyR{N|g3W?sJ^>l=i)(TK48C_V%pR)oSKSDPm$;K|w)jIel9I007cSL_t(Y ziS3kK3xhBWMKyVlB#`|7f4iINhFeo%>;pEu_;!zNqvcG~nRh3U!`kQB$4H=U&xio9 zW(fG!`+&$5as&59^k=~e-eQ(SScgQbNz8vNrVw-M2p~jB06^aZs&d`KrC2~&m4mSb zY8NRMK$x-@p?=yBRlG=SVnS4W4IENrX3jaR{wWxPnO2}XLIY;X_^96qkz$0~L30As z<6D8~qDL32L5KaBU&zP(@uVJlKRoE6@WY)RNxegofun7Ma$l-qbzdqX2FJnQ} z_b`r-CCg=1Zf2(4mJ4mL@2&}dagH;gKZzxz{%Y~k2H{iEXT;ntn5MHwe?HyQFwL0Z zA^S(IR1Vf9(yU2 z)`mSle%|NrhilBLUp_Iv{}^ol#NmkTp93sRGQKMu{%G~JZI%Bs!#m+uBj=M(hn*Cb m%dc?As|#47|8Hkq1>=Nz3D$Cv&HI3UXYh3Ob6Mw<&;$VA)uj#q diff --git a/graphics/pokemon/tadbulb/icon.png b/graphics/pokemon/tadbulb/icon.png index 0341a387fb8ebfa28ae9d6544a2cff6fb2a6325e..de71775609d889be1ea6f405a9a04ddd8380be03 100755 GIT binary patch delta 653 zcmV;80&@NF0+|Jn7=H)@0000?P=%ZT00D$)LqkwWLqi}?a&Km7Y-IodD3N`UJxIeq z9K~N#r6Ls(i-nNgNw7S4z7YA z_yOYN=%nZ(CH^ldw21NGxF7HCJ?`ECLZiY|vugrSHOolFV}D{cw<-o+5yTJzh+sfs zrk+SIX5cx#?&0I>U6f~epZjz4DS49tK9P8i>4rtTK|Hf*>74h8L#!kz#OK8023?T& zk?XR{Z=8z`3p_JqWK#3QA!4!E!Ey()lA#h$6NeR5qkJLjvch?bvs$UK);;+PgL!Qw z&2^fih+_!}B!3}7Mh#_DU?EDYMv93P?Z-U)BaS~wE}2|qFmf!Q3Kf#$2mgcL-I|4| zNjE7N1G-;q`y&Dbc7bNyw!e>UyLkfmpMfi_?XNa~*-z5zZ7qBR^lt+f*KJMS11@)f z;U`@(BuDbo6bc34{fxdT2MpcOV1ZP1_ zK>z@;j|==^1poj5Fi=cXMPi(TdwYAmy|n-T|9hNDoXtwKgMV7?#f!zPDfad$)nY-E zd(Fk9&GwWjVq#iBK|%9-Hc9{h00Cl4M@0Xn2lB-L005OqL_t(|oMT`Z+<^Z-8vpZ5 zRFTg!XIg$hR$w`Erty4aff=1MjqQ;Hem)fJn2fCFhp?dF%b7?5|6~OX<&XvVCkkE^ z>_irLAt))>k6Y}He;ti-$nId^fAnNgNw7S4z7YA z_yOYN=%nZ(CH^ldw21NGxF7HCJ?`ECLZiY|vugrSHOolFV}D{cw<-o+5yTJzh+sfs zrk+SIX5cx#?&0I>U6f~epZjz4DS49tK9P8i>4rtTK|Hf*>74h8L#!kz#OK8023?T& zk?XR{Z=8z`3p_JqWK#3QA!4!E!Ey()lA#h$6NeR5qkJLjvch?bvs$UK);;+PgL!Qw z&2^fih+_!}B!3}7Mh#_DU?EDYMv93P?Z-U)BaS~wE}2|qFmf!Q3Kf#$2mgcL-I|4| zNjE7N1G-;q`y&Dbc7bNyw!e>UyLkfmpMfi_?XNa~*-z5zZ7qBR^lt+f*KJMS11@)f z;U`@(BuDbo6bc34{fxdT2Mpc*_YUWBQVq#iBK|yIbeOmwk0QE^kK~zYI?NreY#2^Tp@DBg~w+HH^D(-2y+{2M& z$wJo>w12&>e|@!7^|?<(PYCZf#DQr5l$dn~)qW9C@3S~)2T1MpenSM40lZ~J0MKAk zD#RTj#>PW#AUZ)+0J#`uAc~;eN?|WTIRp^fBmNC?4hjvbBRXKn;X;%}q)C7ru2i*H z)kTNgvQOJr{UzkKGt))xbOW5r<>Y)ve4^yo6KA=9{b0SD4+-0x54rszA5!}#`7qgk z%7@+lYd-AupY!2t|CSHA{UIMx`%n3h+duN*WdF#A)c(pNACL_ZkPnbH%bDCG-}XP> gfNuX||9aQ{ALsWH_(n)(qW}N^07*qoM6N<$f{bou6aWAK delta 419 zcmV;U0bKt21+fE=7=Hu<0001qplF={000McNliru=K~%ID+kv$h@$`i02g#cSaefw zW^{L9a%BKVOhiylM<8}(av(DOV1ZP1_ zK>z@;j|==^1poj5Fi=cXMPi(TgM)Luy}kec|GlI^_Vy{&Vt+yQlqrjQ|6)qb?sJ^~ zw4|iP|7xt9Vq#iBK|xumkYoS=00Cl4M@0Xn2lB-L007lVL_t(|oZXVKjsqbKMEL`Y zAJ~&f4+_)6|9?hszigHsA5u19AziB6(J>m?BtnQ? zFb*j2FALd%2!EvQwNBP1SSQA%n1K9Zx;4h&v5HInW1g>)6m>vl! zwtsP!qj?N1NoosX;EuH=8N&fR8r^T2x%hq#iC)5wa6d4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?h&5O-u^w)>hA}4-EyfQ6>f5o zAwPfDNklSbQ1P@7qnx8?=h=$a)# zJ>{AJvH}263Dvj&ph`d^bPiCbyw{AtAzl$U$ua?2e?O1t2jO^fK0>-dAdl&s>*(Xn?4N8RHob5j#cPvkW`1K!7?xT0YbP!uiVp*-W|s j8Hq>aLm3cwbU=In-HZ|FPw`L{00000NkvXXu0mjfMDZvS delta 329 zcmcb^I){0J^5o5ow)FxfL4Lvi(ZE^7O;Z>c7`Z)N978-h?@l?(cgTRJIgq(sE$Gj` z{O-$s%u_CS7Ccz)^Elyr-tMo~bL|Wol$+PcIz&q;c*_>Vzj*Mtm-D<%aNp{(1)Qe$ zmRxTe(cuypII6-798GX{B+W_gj;JbUyRkP z7QDFo(1MZxKgNd-oc|QoJ=aROFY)i;reANit=anU#gjk(E2QOY4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?h&5O-u^w)>hA}4-EyfQ6>f5o zAwPeXNklc7}j{YIEHw1zMW#ocSM1QMbSe~W6%Hp zxf>okYwpp=eAjh2_R++TN`_0{{0e1^_{#8du7Jb#AjJb$&6L>F=Jysb^a_92C#YSH~ z%;>S`x_9L5irD&~+x+YQI81oS{_WEt{tyLudk*mvXZcq;9O7Ts9-@$HSEo1OlY>J1 b^~0PW9Rz(}dI=-~9nRqC>gTe~DWM4ftGR2y diff --git a/graphics/pokemon/tatsugiri/icon.png b/graphics/pokemon/tatsugiri/icon.png index 98fe8aa5694e8997ff03723152c007bed60d1e5d..0db952cbd8cfce18715bb2dcfa6e2868e1130e47 100644 GIT binary patch delta 586 zcmV-Q0=50l0-XhrBYy#eX+uL$Nkc;*P;zf(X>4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?h&5O-u^w)>hA}4-EyfQ6>f5o zAwPeZNklc81{O)IEHw1zMXQA>xcr6OLi*r(BFn3vT z2%luQ%9tU1`jy`og^;82IX>=g0{WUsX|7kJ^I5FBgP1ew(lY122;0NGRqv*Pz)OqO ztPULSd6pj)s!RX5#?kX}@|m?STKDH}{j7eo?#Bs!mYshO{M+-AU2DQq_J>T7bqP!} t>m;f?SdBJ#^M@#S^Pi7rU0bWJzgI(G;-?9RHGw{1@O1TaS?83{1OWS`aU=i$ diff --git a/graphics/pokemon/tatsugiri/stretchy/icon.png b/graphics/pokemon/tatsugiri/stretchy/icon.png index 1634ec3178334c05eb28334911ab92b2cef69c8a..9403a331e3afefd4ad5c898c1a78bb192c62616b 100755 GIT binary patch delta 608 zcmV-m0-yc70<#5>BYy#eX+uL$Nkc;*P;zf(X>4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?h&5O-u^w)>hA}4-EyfQ6>f5o zAwPevNklmVN)X4PY*l;+EVssoWWD*pVOg8)IvW2taN;Y-YI; z2W*DH)QJI8tfYGFfW+aFhqzuFW@Z;|7*(QV3f2a+QqXwz>F(7fn*~G;HwRc1>PL)$ zR~hBSaz4s+6X1?-GaGM_#4c7*>0_IEHw1zMZn0@2~-fYcA{hJOBUR zW>^-+w(hFl+knlgG9M?^L|K1a&9LD#qY;~8!^4G64KvFYv4zc>%E2J6F7Q(!B!#;p ztWr5;+l{rFmTG?%yM%0IXDI8g`>N3xc#gA^DR!URR*paGZz!q<2%60l{U{W+=ALQ! z!t507s!sRS!u3MO`Q?8$DxBtj^K_~F3WvBl0lf+B@?MQg diff --git a/graphics/pokemon/tauros/paldean_aqua_breed/icon.png b/graphics/pokemon/tauros/paldean_aqua_breed/icon.png index a0421d7dd006d24f7a688d3b92f700951d069d6b..b2f37e2c13154ecb5f9cfc9394b135a7e1377603 100644 GIT binary patch delta 680 zcmV;Z0$2To1NsG!BYy#eX+uL$Nkc;*P;zf(X>4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?h&5O-u^w)>hA}4-EyfQ6>f5o zAwPfhNklsUjjHYxg(VD}^0UiVs*Xkw!N$2pYm!>^RM?WtZK%}LO<~IyHX`e$4eYE2 z#!+~Au=i%mJOp+$bP(`PGXc`)Lttthq&a_j1(ORE1py{gkoHP79Ky@RnV}ORp3vtT z0ecC=!#qdj<5gPPqmSw+Rl-BBYr^VRyyLo29~;k0Ib6K#58B1ilf4-nUya6Me7#46`f{P3Q O0000h(l z>+xT6oK$#M&2&{r$Zb!LgU1Vx+MTdUzJ z3%V2(ti3pENtmtZHkE8?Ez{EA8=qQxPwdKMZmz$2z=BJk|J%Ksne7Mq+W466WvV&+ z+QaFyw%NpeeL~T~MG6N}xGu%5Y;&&IVPRb2bVT-7jZ(rChd(o)uc+DM-}ctspA8HF22WQ%mvv4FO#mp; Bm4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?h&5O-u^w)>hA}4-EyfQ6>f5o zAwPfmNklnmnaJKCygScgW1x73o!zEU5wpU!mjyXy3C;*=$;wB|KDPS$AW*fPn7XHAXhnumc# z|3k%UU!Q(m&2D<3W6Fk%G=qs&4SYKz(q6VDT&=%(q^a!VX0vZsS!T4nN`KpT!fXAN z`-)RLa!rIIgjht=9>yLEW;!J9AkX|*YH#!FS4}F6acNS2jlOVbmi(WlD|DHq^H=TR z$A=GO%qz8@KCw#O?Q)Ab|6BWg67nA(#@+u};5FIB7zPZUu6{1-oD!M< DGNYW8 diff --git a/graphics/pokemon/tauros/paldean_combat_breed/icon.png b/graphics/pokemon/tauros/paldean_combat_breed/icon.png index daa2eb78820eaa064e7c9360f7b28d7fbc964be6..22ea3c94f07db0dc7976cbfa334e1f3742d8287b 100644 GIT binary patch delta 694 zcmV;n0!jVx0*3~WBYy#eX+uL$Nkc;*P;zf(X>4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?h&5O-u^w)>hA}4-EyfQ6>f5o zAwGWr0!c(cR7i>Kl+6;uAP9uj+;`vqZ40PP5cJsTAsp;X`1oneZYgiBG-}uwu`L3q=gTt)q4-OO5zdFpS{={Lt`WYR@sb4=!(m9M* zKc-K?t>M&PgL=IBqk(w!C;s5nzww8!`jHFpR(~%4;_@jl)qnH{9{j;xQQG@nVsaWA cz;VBg57uEA-&aaa9RL6T07*qoM6N<$f;fLoMgRZ+ delta 287 zcmZo?`^YpwdGcmPn|cO;k|4j}|7hT>;-)DK3=9uET^vI^I^Twz<~yvw!(7$>|9}2; zajC`w%jR0Gv<%2Cdt;Itdn))g)4g;*g&z}556=!}Y*=+t+{dAP=Nv)KUd=Up2c>E5F668Drjy7wvpRi2&M|4v&Pt^(SLVKY z%)D{?s|o!7ic&T_cmA`j{!Dx4hG)(uo}U$2JZAAbKH6QgPx#Fi=cXMPi(TgM)Luy}kec|GlI^_Vy{&VnOzlDT{mmVoJ^KbDaOQq@>0FYOI`M zVp>5#L0PGgWB>pGB}qgKl+ljFAP7a9*iIk;?*ISoV69fv&OYz%@K`Qzi{WhB z-wWV}yx0c?0OKw{Ng;hbAW`AvqUhC%kX9n=Ekdv@ts-}%-~c%< z>BYdVJ{(MgL(eA{2=*f-(eS&cfKLIl$$lIvGVg#n=UH9hGm?%9pL&Lh$&pCeFg{Cm zk8Ch`o_ywNj_;CZL^e8A~VR<_KV(XvM;SF-h7Zi!W Rn)d(z002ovPDHLkV1h=5z%l>; literal 0 HcmV?d00001 diff --git a/graphics/pokemon/terapagos/stellar/icon.png b/graphics/pokemon/terapagos/stellar/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..f11525da0d62309846160e34757cbb49ce59f1b6 GIT binary patch literal 582 zcmV-M0=fN(P)Px#Fi=cXMPi(TgM)Luy}kec|GlI^_Vy{&VnOzlDT{mmVoJ^KbDaOQq@>0FYOI`M zVp>5#L0PGgWB>pG#7RU!R7i>KRPAzuFbrdt5Ms`@-v4bUJJ174+wJde=?4cAitX5% zrqjaoVZA2+5dPi}B-T3-$n+NfNcgZthA3N@H=)A#vWZ$!RG%nNQK%Uirm>y~A_;|p zsr$_y6djdvP2#m?SUq&moAj~Cd6(EClEfm?lVNAPYZqxU6V^dEtg1mY>dPi^SWoj@U0V1BnZTX3ac*|`0DU(y_Yt!vp6*}d?^?L6eO&r zN#dap3Hy+MHxi^bEyShsNQf(s9o08NgCnJ(QQ*v09CaSKqIu;lC8;|=UR>4Zkp>Af zx#m*&Tx8{Wz)*_UJx@Y#mV$V5>HH!U9;G4!(J92276+>RG9lOqI1uXbFrrb2D-$B2 zJ8`+TOXScgfxKMdO-1%RUkoT7>lPlI*U(Q0|Nb!jS${Y*?Y%$L`tXPO)*m>TZH(qz z@BN{2jB>i`Ykz2C{FfVlu<(a<^M|tB`2*6MGKj_7vp;YHY)(i*a5b&L6ORf0`q~LG z{WKvBhSMaLxJ`wVKWJg>el&rLKP2Jc5_;<1XcXcssYR8%z4iyPx#Fi=cXMPi(TgM)Luy}kec|GlI^_Vy{&VnOzlDT{mmVoJ^KbDaOQq@>0FYOI`M zVp>5#L0PGgWB>pGV@X6oR7i>KRPBy~Fbrd=G8&fD@Bg;vl#doDe@}PP0%d46NlA>S z=^q9FUh2&lcQL>*!ED3`+(k$-A2Co$skrkfHyn_Zgq#&GW!udGd#a(zG*O5((8}QT zGD*VI)Rl$Ia^^zARb8AXaV9Y#+~HX@Gu$=Lyt7=KmmU{UH6HV0n&xGkcw7BY+l)cX4B+?poynxB^s$w&U0KuNL`U?k#Cyie;P zDo)xva+!(53!i$7^||ym&OpfU%b*ao6A8NE94M{?KAmC@3^M#OY6Kxg0gs8uU2YVZ zIZ&u13T3FZRjgP=`;Fg;z1L4Yrvso4W#|uwgUEw{GzXzN2Lx1e*c{}pi^D)F?&O|@ z*&9eW4E5U+E(TKdZ=Jku1|qA)9AEg|K*Tx+8X8D*m?s0-zwk!`X%6#XAUpmwkdqqz bvVr^niV-CC%Xm2I00000NkvXXu0mjfRh`#w literal 0 HcmV?d00001 diff --git a/graphics/pokemon/ting_lu/icon.png b/graphics/pokemon/ting_lu/icon.png index 0b1f975f9e1fd19da2897a9ca67f9664b61094ab..a4cbc121a249f0a6873e2d80127e7d3ad45b0869 100755 GIT binary patch delta 809 zcmV+^1J?Zb1NjD!BYy#eX+uL$Nkc;*P;zf(X>4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?h&5O-u^w)>hA}4-EyfQ6>f5o zAwGWrbV)=(R7i={l+lvIAP7Z6b@f4k|Nq-XQ5zx2zID1z+o`>`Kv2$cd}y)V^S)u^ z%{TXJ*Is=3eK*J!5l}pY)MFcc7>KYhi8TVAt7s9#Lh1s*dXc1gx~Y9}29?DCy&g0v zD$EL~>(y3S2}u)x>h3Y>Fh~lh6}ZMp}QS zJAI_({DL8BY$XdebW6fW}r7B!7lJQCmz7<#p-L+X2}kdT>xfs5(dOQVB@el zskD3-`L)Hf1lI577+Ytl=k*B~y`F%3`(IvvS0Jk&ZUR~Tuo1}Yhe;qiKTHDI`C%5w z#t)M~c7C`DByIdK3uNbqNgxk?7y^k~KU@Uz;D=KnZ~R~{@*Lj}550b{z5!SzDM1WH R4>AA%002ovPDHLkV1hLv#MA%) diff --git a/graphics/pokemon/tinkatink/icon.png b/graphics/pokemon/tinkatink/icon.png index fc7300cb0aaea746cf00035c9b51527d9a0596d8..0eaec6b14038f5f13cb2bdbb6ab911c83b0e1ee9 100644 GIT binary patch delta 414 zcmV;P0b%~W04Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?h&5O-u^w)>hA}4-EyfQ6>f5o IAwQ9P!qwxy=l}o! delta 40 kcmdnQx{qms^5o5owvqxRL4Lsu|53q#fNtl>ZyApQ0I)L{Q~&?~ diff --git a/graphics/pokemon/tinkaton/icon.png b/graphics/pokemon/tinkaton/icon.png index 72ab26b86b50d7f59d16c22578339518566f2ac9..15175f41e2af3755cb0c6ab14238cc3447513b47 100755 GIT binary patch delta 884 zcmV-)1B?8r1(gSo7=H)@0000?P=%ZT00D$)LqkwWLqi}?a&Km7Y-IodD3N`UJxIeq z9K~N#r6Ls(i-nNgNw7S4z7YA z_yOYN=%nZ(CH^ldw21NGxF7HCJ?`ECLZiY|vugrSHOolFV}D{cw<-o+5yTJzh+sfs zrk+SIX5cx#?&0I>U6f~epZjz4DS49tK9P8i>4rtTK|Hf*>74h8L#!kz#OK8023?T& zk?XR{Z=8z`3p_JqWK#3QA!4!E!Ey()lA#h$6NeR5qkJLjvch?bvs$UK);;+PgL!Qw z&2^fih+_!}B!3}7Mh#_DU?EDYMv93P?Z-U)BaS~wE}2|qFmf!Q3Kf#$2mgcL-I|4| zNjE7N1G-;q`y&Dbc7bNyw!e>UyLkfmpMfi_?XNa~*-z5zZ7qBR^lt+f*KJMS11@)f z;U`@(BuDbo6bc34{fxdT2Mpc9~2m~wpAx2i&|Nq-ta9SJUraI}K4kfK*rUc_=9*^G#fGVKdy_|Wivz7VMkF(x(($P>M`g|NRBLjI_YK*bA)2h9z%(n!2|O@xn^c|u#j z76pw}v~3Bl34eFgJdgJ@X5Ri_?I3Uf!V_^o<`(=|4jdL7h&aJ-1VC}HNh4JJOeB7C&6|Fedi)!;K!cuk8;i^(`2mtC}7F0000< KMNUMnLSTYo$(cX^ delta 647 zcmV;20(kwE2dM>+7-Iwj0001qplF={000McNliru=K~%SAPvQ)p3ndQ02g#cSaefw zW^{L9a%BKVOhiylM<8}(av(DOV1ZP1_ zK>z@;j|==^1(UG>8h=4*lVw9xSVnJeJT0ucUp~@Ek00001 zVoOIv|D^}=#Q*>S%}GQ-RCt`d(mhMVKp4RBeuI36n>s}>P(`7Bn=FMoI9$nK2L}&_ zW)5OImOeteIT)xPMM%K36)vR(^D^}DxR<1@2u|Mk=Xs8%_kU|Nem%H83gzr*AXy!Z zAWUy(bwSH}eNLhiQ>^j!EPUzm*p%(XZ7Y0k5al7K~Gq#hp`Be2-h+c0MPTDh}inl9S0tu!wLCV ztM3pewFrqwDt~VP@I+Z}NW|q8#fYAXG_y9gD>sVwn>$Lyh=nLOp0e}1n@j}r?R?Q> zS0eOHfEi=W%p03f!f3Eq_#PeWopSP-4;WGpQnfMX_xU}J5`d)~`RasyO8dbOAQ;Ku zhG~z{V##4CgXQ8dXRH{)WT{|2U8fw@Ba5RCF6 zz+6^fq>ma*<-e8jSXV8jSLh?1Rahtex!n;HmJD z)IJ0l;bY)Y^PiURD17XwH{AmxeN5Hc3NUZV$0RUdqz}HD>fp|$j}-*kn7fufiXhOJ hqVl1C<`~bH{s!XHhcvD8ifsS@002ovPDHLkV1iEbDN6tV diff --git a/graphics/pokemon/tinkatuff/icon.png b/graphics/pokemon/tinkatuff/icon.png index 7ab30334fa1b043734291ec42f935ad964be2c99..345da191169206b2c771fcd1dcc9e1a0ca536b89 100755 GIT binary patch delta 674 zcmV;T0$u&<1H}c97=H)@0000?P=%ZT00D$)LqkwWLqi}?a&Km7Y-IodD3N`UJxIeq z9K~N#r6Ls(i-nNgNw7S4z7YA z_yOYN=%nZ(CH^ldw21NGxF7HCJ?`ECLZiY|vugrSHOolFV}D{cw<-o+5yTJzh+sfs zrk+SIX5cx#?&0I>U6f~epZjz4DS49tK9P8i>4rtTK|Hf*>74h8L#!kz#OK8023?T& zk?XR{Z=8z`3p_JqWK#3QA!4!E!Ey()lA#h$6NeR5qkJLjvch?bvs$UK);;+PgL!Qw z&2^fih+_!}B!3}7Mh#_DU?EDYMv93P?Z-U)BaS~wE}2|qFmf!Q3Kf#$2mgcL-I|4| zNjE7N1G-;q`y&Dbc7bNyw!e>UyLkfmpMfi_?XNa~*-z5zZ7qBR^lt+f*KJMS11@)f z;U`@(BuDbo6bc34{fxdT2MpcAO&5Si6g9K6~u*Ps^hXy#AJ+P*2hWvKf)?YnF zZ$A7lAJ|^@l@Hx!X>red=+<8Wa^*v}{&D5QX1j0Z!voj<15UdU%2-qK`Tzg`07*qo IM6N<$f{H>m9smFU delta 455 zcmV;&0XY7}1?vNl7-Iwj0001qplF={000McNliru=K~%S88;0s%Gdw^02g#cSaefw zW^{L9a%BKVOhiylM<8}(av(DOV1ZP1_ zK>z@;j|==^1(UG>8h=4*lVw9xSVnJeJT0ucUp~@Ek00001 zVoOIv|D^}=#Q*>S4@pEpRCt`#(y?m8Fc1b{zrnqOvd0kZd8rPkr8cC4Zi*kKLkC0q z7@gWcGQ?1-En}sG_Y8v1%JfHqypyn5eHzgFsEb# z7V(l{10J!2>5x@p(DKx=q!pU>eHVgWYtp*?G#qw3DNXdf7s4m7p$Do!2($Nld)iP5 zi}h0GzS18ey^*;rYK@I2r#01j6l=Iqq(1tsNj9fV4RQL)bT!MFy2Q5#`&1Rcpnj% xUmppW!AA diff --git a/graphics/pokemon/toedscool/icon.png b/graphics/pokemon/toedscool/icon.png index 91edeb2472bfda59a8f94a377ae3029afa546662..6021e614dfae8d476ec69180a4707c04ebc6cd6b 100755 GIT binary patch delta 615 zcmV-t0+{`k1Fr>;7=H)@0000?P=%ZT00D$)LqkwWLqi}?a&Km7Y-IodD3N`UJxIeq z9K~N#r6Ls(i-nNgNw7S4z7YA z_yOYN=%nZ(CH^ldw21NGxF7HCJ?`ECLZiY|vugrSHOolFV}D{cw<-o+5yTJzh+sfs zrk+SIX5cx#?&0I>U6f~epZjz4DS49tK9P8i>4rtTK|Hf*>74h8L#!kz#OK8023?T& zk?XR{Z=8z`3p_JqWK#3QA!4!E!Ey()lA#h$6NeR5qkJLjvch?bvs$UK);;+PgL!Qw z&2^fih+_!}B!3}7Mh#_DU?EDYMv93P?Z-U)BaS~wE}2|qFmf!Q3Kf#$2mgcL-I|4| zNjE7N1G-;q`y&Dbc7bNyw!e>UyLkfmpMfi_?XNa~*-z5zZ7qBR^lt+f*KJMS11@)f z;U`@(BuDbo6bc34{fxdT2Mpc|C)YmfF7oQnftNo1Y8 zk9@h7=H)@0000?P=%ZT00D$)LqkwWLqi}?a&Km7Y-IodD3N`UJxIeq z9K~N#r6Ls(i-nNgNw7S4z7YA z_yOYN=%nZ(CH^ldw21NGxF7HCJ?`ECLZiY|vugrSHOolFV}D{cw<-o+5yTJzh+sfs zrk+SIX5cx#?&0I>U6f~epZjz4DS49tK9P8i>4rtTK|Hf*>74h8L#!kz#OK8023?T& zk?XR{Z=8z`3p_JqWK#3QA!4!E!Ey()lA#h$6NeR5qkJLjvch?bvs$UK);;+PgL!Qw z&2^fih+_!}B!3}7Mh#_DU?EDYMv93P?Z-U)BaS~wE}2|qFmf!Q3Kf#$2mgcL-I|4| zNjE7N1G-;q`y&Dbc7bNyw!e>UyLkfmpMfi_?XNa~*-z5zZ7qBR^lt+f*KJMS11@)f z;U`@(BuDbo6bc34{fxdT2MpcIjGcj4_D=AZBd#Jsl6&GM;!L_xd)_Tr{uy+DyK53;`A&zGd60Id8 zXTT!8v${DU>{bCFcio>4J^Y&L^b(-2fS$t-t5-xAuu)D%Q^=dD|NO$dby|18TqR)6 z2S`TD04du4=X~(?#iITBHN@@joxcS{RtT9`rT+)S6C!mJuZc0fF8}}l07*qoM6N<$ Ef=jb8d;kCd delta 440 zcmV;p0Z0Dk1%U*R7-Iwj0001qplF={000McNliru=K~%J3o!Uew^slF02g#cSaefw zW^{L9a%BKVOhiylM<8}(av(DOV1ZP1_ zK>z@;j|==^1(UG>KYsyYOGiZir3doG0003cNkl)#)^m;kh}eq&d@W;+qC9V_ z!@S+8>|SpKl)(-H zAq+$z9$G@}{QuwD!fM<&yBti6G4?u-X(?e!`NC3tlh9K@il|C3Tt=2iFcbi4)6-8oPe20u}&2wCcj02#lAGmiifiaZ5~z8@egrFH=# z>i}UR>;mM~;U6H+7K;G6=fh!u?DByH$UYxVzVD~=;RZ1iB^h=E#-2 delta 364 zcmV-y0h9jz0=5H?7zqRe0001qplF?uEa7bBm000ie000ie0hKEb8vprlCf&TFc3if2jZp_0?FKO=vQTurh1e%|3UsCTj7j78;kZEI;Bt=+f!O{p- zff|s?&`1PqU<)g0v;zRIu<|t;*tUoDjf%NOv*~W}Ade>p;O!0{be4HwA7Acwh!q3- z)b4ld5_A3s)uIE;5&2CYpNL4g2O{l3+EpId5=+cZ{>q2#QCc}53bGb$Fhq)|wMEcn zxYh2bAQCtOi&b4GE)k}loS&5r!5~4Tx04R}tkv&MmKpe$iQ>7vm5sQd8WN4i%h>AE$6^me@v=v%)FuC*#nlvOS zE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La) z#baVNw<-o+5yTJzh+sfsrk+SIX5cx#?&0I>U6f~epZjz4DS49tK9P8i>4rtTK|Hf* z>74h8L#!kz#OK8023?T&k?XR{Z=8z`3p_JqWK#3QA!4!E!Ey()lA#h$6NeR5qkJLj zvch?bvs$UK);;+PgL!Qw&2^fih+_!}Bq2gZ4P{hdAxf)8iis5M$2|Najz38*nOtQs zax9<<6_Voz|AXJ%nuV!JHz^ncx?gPjBLW0=fo9#dzmILZc>?&Kfh(=;uQq_$Ptxmc zEqny@Zvz+CZB5<-E_Z<8CtWfmNAlAY3I*W(jJ_!c4Bi60Yi@6?eVjf38R}~J1~@nb z#)_1^?(y!P&ffk#)9UXBcinQSAQf(M0000mP)t-sVw{6}dwadTwEzGAb92q4toF2n zTJFV*#jGjz_9^yaQj~km#iY%>DV$iKD5{4-!icH`TGWh}Cx?QuKk5S7 zi-9`A~L%c<6Z zqM1-cD-<_vxX$xT2MwY0YdSL273m|rvQr$zcNdh3{m#eI`v%Aj};= z;kDUAnkV}4K rI};%9_|f^0>w+JZ510J-RzCaylD{9QaPp&200000NkvXXu0mjf5e%c$ literal 0 HcmV?d00001 diff --git a/graphics/pokemon/ursaluna/icon.png b/graphics/pokemon/ursaluna/icon.png index 8a847040723b11ea206516b982e2e7dd9791c42f..d56041d555a2fb0203f0b7b2b4e14cf65abedef8 100644 GIT binary patch delta 315 zcmV-B0mS~K1B3&R7#0Wv0000?P=%ZT0004VQb$4nuFf3kks&^R0Rl-xK~zYI?Ucce z!ypVqW034{8UO#^?hKTaHrc(cRJFB)A~Mfo>_lwaM@HsYzlj-O2AN1SrM@h|bcK;Gp7sV{edT;C5GgL<|5;Rn}79WaezCLaI* N002ovPDHLkV1h#Sk(U4f delta 347 zcmV-h0i^zf1Ed3x7zqRe0001qplF?uEO>acO6e z7|7;NzvIOEvh4Q`y>Du4S44SiLP{nEKBR#_jmJx53O!Jhf*t?{=~;#;;u;)B6gYnY zVWfcGncH`s)K>b|4f)xnNgNw7S4z7YA z_yOYN=%nZ(CH^ldw21NGxF7HCJ?`ECLZiY|vugrSHOolFV}D{cw<-o+5yTJzh+sfs zrk+SIX5cx#?&0I>U6f~epZjz4DS49tK9P8i>4rtTK|Hf*>74h8L#!kz#OK8023?T& zk?XR{Z=8z`3p_JqWK#3QA!4!E!Ey()lA#h$6NeR5qkJLjvch?bvs$UK);;+PgL!Qw z&2^fih+_!}B!3}7Mh#_DU?EDYMv93P?Z-U)BaS~wE}2|qFmf!Q3Kf#$2mgcL-I|4| zNjE7N1G-;q`y&Dbc7bNyw!e>UyLkfmpMfi_?XNa~*-z5zZ7qBR^lt+f*KJMS11@)f z;U`@(BuDbo6bc34{fxdT2Mpcy}h*m|NnDy&7`dMw1Zmi#f!zPDfad$_F__$ zd(Fk9&Alm{Vq#iBK|$$6v|j)K0Ln>3K~zYI?NrMS!ypW+!wCr`|NpmhN)LmiFlmQr zQiFP_jep5Q@o_xy$6;n0g6fiDA_847D1d^5a6R1xBoZ93E>KE>lfXk6-Um_wJT*sA z^AxEq9;l_}HC*YTS}x%VipCOV1ZP1_ zK>z@;j|==^1(UG>6n}f1N}SC~w1Zmi#f!zPDfad$)nY-Ed(Fk9&GwWjVq#iBK|%9- zHc9{h00Cl4M@0Xn2lB-L006{EL_t(|oZXT=3c^4Th4%)_;sJt56$lAtDnW9`+)MBb z+4M6pRyOmDVtzJQDvDEnyczZ_pE18a7F`IGB?K4ZAYz%SAb(SLz#Is+T$5pQdc88i+nNgNw7S4z7YA z_yOYN=%nZ(CH^ldw21NGxF7HCJ?`ECLZiY|vugrSHOolFV}D{cw<-o+5yTJzh+sfs zrk+SIX5cx#?&0I>U6f~epZjz4DS49tK9P8i>4rtTK|Hf*>74h8L#!kz#OK8023?T& zk?XR{Z=8z`3p_JqWK#3QA!4!E!Ey()lA#h$6NeR5qkJLjvch?bvs$UK);;+PgL!Qw z&2^fih+_!}B!3}7Mh#_DU?EDYMv93P?Z-U)BaS~wE}2|qFmf!Q3Kf#$2mgcL-I|4| zNjE7N1G-;q`y&Dbc7bNyw!e>UyLkfmpMfi_?XNa~*-z5zZ7qBR^lt+f*KJMS11@)f z;U`@(BuDbo6bc34{fxdT2MpcpC;cBpCx1Zhtlr6kt70m><2+g^Mo1 zfwqC!zE&lEB?zlU-1!vG2_X>USnES*1W`Qude$+W>LH*nT3rk+Occ#j`fe9h^JOQ{|t`sM%~>X)&;FU>YGM Z{|mvX6+NIQgAV`z002ovPDHLkV1m_?U_Jl< delta 514 zcmV+d0{#7o2Bid$7-Iwj0001qplF={000McNliru=L7*08VbZQPSXGY02g#cSaefw zW^{L9a%BKVOhiylM<8}(av(DOV1ZP1_ zK>z@;j|==^1(UG>8h=4*lVw9xSVnJeJT0ucUp~@Ek00001 zVoOIv|D^}=#Q*>SNl8RORCt`VlCe_5FbqKR2l@vwa9PY<8Gxl9MTao814BKLJD9TM zJQ=$Rj}kIj&VUS# zy}S@-0Z51s{C}1PQGlGu!hRkq6G^etIi+yEAJ@+*;X`g;&owsC)na&czDeBBk4%#v z=Xv|lkK+OeO1@-263BieU$P%DWA-DKT=>CZ-Isp&!TpyXcPl@(-Rr`SZM73WKJsX& z+Tp?vw?SU`@vTOW=M)I-K-H%d2$w^}%jLnOV diff --git a/graphics/pokemon/voltorb/hisuian/icon.png b/graphics/pokemon/voltorb/hisuian/icon.png index 2a35e4ec33ef6eb794f309aef50d96ba621788b0..c3381d7fdec3f5e0a9c40d82b4d93127c354621f 100644 GIT binary patch delta 171 zcmV;c0960}0rmlq7#0Wv0000?P=%ZT0004VQb$4nuFf3kks&{SbV)=(R7i>KlR*x^ zAP594Al`QW|J$OsCStE`!dz!Wqp`K(uP`|35#$M%bstGVpX+_HFNi1rWC6wDhzVIi z<-nSNGzdqL@Yn`Whfp=Pvi%`qx~RJ*zOfq?R}w_g`(>8;dDSq(%WE8UQ9P;NUBCPL Z+&N+kLu5Fh)Bpeq002ovPDHLkV1hsLNWuUB delta 179 zcmV;k08Ib(0saAy7zqRe0001qplF?uEa7bBm000ie000ie0hKEb8vpE`5|9>=oc{z#*e|i14^bbe^-^$C=((;i6{-xKwLl)pyd-go-SsFqQzkOZZ zyF3(uXYZAs4Tx04R}tkv&MmKpe$iQ>7vm5sQd8 zWN4i%h>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UWP&La)#baVNw<-o+5yTJzh<{)}Vy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZNg~Rik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3qljY(2_zvx zMh#_DU?EDYMt_Ql6z#`6{3DJ(NiLaOWiWCqpb8a|;|KqP-`$#psYy2}7z4UrZ2Kbu z1a^UD-L}7vZM%5__@99*t?jQifZ0#d>uoK31oUqM7uRh~-UBXofZ-=yG9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0VLul)dip?h&5O-u^w)>hA}4-EyfQ6>f5o zAwGWrkx4{BR7i>4l);X}APhtkgAWB{|Nr0a7()Un094u=&iAlB7ilo|VN7CHX>=E~3$NmQn-{O}}zrkf;^_nIm%4Q}gXW zK#Wy4gXySNF2kV+fWhYD%gc}~LqZLZXeocWU|@Eh0@y_JKr{)TK{p4+2kCWsvFUJ+ zy<(B{iOjY@&ZVwKq*tpNFk;<@Y$4F88kCyh40N8R`x14!l62i1MA(K>e1#TI(hb;$ z(5J%^qn{1B0|L7;Ljpc|dRI@!NrlM6Z97 zyE5ol(kfy~JL%>8d)%A+^W(LBeWion|2-X?ADs@%@Xn8t^s5xRnT;QghbJE@9x6Wu zJWPB59-JRH9v*zq&W{ZqE`IFrfHkyUhbF1r2grjD!~1Fg+4Cx)0pyhr4v0M;8X%kx%ga9i;@|P`2aJIu?eFuR Q%>V!Z07*qoM6N<$f-9hhK>z>% delta 345 zcmV-f0jB)_)g41GBCRkj`%7 z02a`Ifbw}8ZA6WeLpKPMOKl8h*NcHm6hl!Guaho<@t}K8Z%QY9o|Q$)!`xM%*4C?~ z4aca+4D0JqWkNk!O6)Z~fi-XIDt(kNsYtQwB2wZqv^FaAY^KK!a2@iVPQ+~NjqPQS z_(@X#7cKnP&lrzTi%xy9!hO0WIC*3@I47C_S}b;+IU8sEOMqkG*ts(R=ayy`7q>Ni r*#E=sllaGwwVcs~395HTcmifVSh00000NkvXXu0mjfAd#iX diff --git a/graphics/pokemon/wattrel/icon.png b/graphics/pokemon/wattrel/icon.png index a0a8bc9d49965be4805f0c4ea133f728995c6e06..33bf137c90368fd0f1e158cc1d4c856236b24c68 100755 GIT binary patch delta 659 zcmV;E0&M;I0-ptt7=H)@0000?P=%ZT00D$)LqkwWLqi}?a&Km7Y-IodD3N`UJxIeq z9K~N#r6Ls(i-nNgNw7S4z7YA z_yOYN=%nZ(CH^ldw21NGxF7HCJ?`ECLZiY|vugrSHOolFV}D{cw<-o+5yTJzh+sfs zrk+SIX5cx#?&0I>U6f~epZjz4DS49tK9P8i>4rtTK|Hf*>74h8L#!kz#OK8023?T& zk?XR{Z=8z`3p_JqWK#3QA!4!E!Ey()lA#h$6NeR5qkJLjvch?bvs$UK);;+PgL!Qw z&2^fih+_!}B!3}7Mh#_DU?EDYMv93P?Z-U)BaS~wE}2|qFmf!Q3Kf#$2mgcL-I|4| zNjE7N1G-;q`y&Dbc7bNyw!e>UyLkfmpMfi_?XNa~*-z5zZ7qBR^lt+f*KJMS11@)f z;U`@(BuDbo6bc34{fxdT2Mpcl+u`5wVF9}ZvPkM@DPeZX!X t%ZHFSN+3%c-DX2?;q6v0hH4TC>*6-DGUGr002ovPDHLkV1mM>HX{H4 delta 363 zcmV-x0hIoq1^NPz7=Hu<0001qplF={000McNliru=K~)S3jqTjBESFu02g#cSaefw zW^{L9a%BKVOhiylM<8}(av(DOV1ZP1_ zK>z@;j|==^1poj5Fi=cXMPi(Tb8~aOy}kec|3PY$Vw9w$#ee_qbDY&;LA|6}_U0+} z_N>*_YW9>VVq#iBK|um8y^;U`00Cl4M@0Xn2lB-L005pzL_t(|oMT`Z{^0-r4=8+o zLBaPZ0v`nhycc--}mkvs`vi??Pov*{2v%b z0Uj_g>Ek(i`sl-+J`l!2)5m+X^nsdSfawD{!GO~TivOsaJ^*!aY+6vzEQA06002ov JPDHLkV1hVxmz4kj diff --git a/graphics/pokemon/wiglett/icon.png b/graphics/pokemon/wiglett/icon.png index 668309c68ea4eec620eaea7d73f6add4646faa29..4c8e951fd8d704747605d8cf9f1ac4ef6b4fc779 100755 GIT binary patch delta 575 zcmV-F0>J%`1BV5W7=H)@0000?P=%ZT00D$)LqkwWLqi}?a&Km7Y-IodD3N`UJxIeq z9K~N#r6Ls(i-nNgNw7S4z7YA z_yOYN=%nZ(CH^ldw21NGxF7HCJ?`ECLZiY|vugrSHOolFV}D{cw<-o+5yTJzh+sfs zrk+SIX5cx#?&0I>U6f~epZjz4DS49tK9P8i>4rtTK|Hf*>74h8L#!kz#OK8023?T& zk?XR{Z=8z`3p_JqWK#3QA!4!E!Ey()lA#h$6NeR5qkJLjvch?bvs$UK);;+PgL!Qw z&2^fih+_!}B!3}7Mh#_DU?EDYMv93P?Z-U)BaS~wE}2|qFmf!Q3Kf#$2mgcL-I|4| zNjE7N1G-;q`y&Dbc7bNyw!e>UyLkfmpMfi_?XNa~*-z5zZ7qBR^lt+f*KJMS11@)f z;U`@(BuDbo6bc34{fxdT2MpcqOV9$8N@C0 zqS1&*1L!@z8jP#}kw+EL2P3C^#85&`#cF0Yn}>hdFz*-0-WU%r_yB4w3ru7slSTjl N002ovPDHLkV1nXa{dWKW delta 325 zcmZo??Ps1Kk<7x(z`)SCAY(3&VlVOZb!C6fEGx{X`f}lf7eFEL64!{5;QX|b^2DN4 z26rEq06%wyveY64V?C3?)+G;tN;pai{M>;u#y~cMSA(WJkYY)9^mSxl*x1kgCy{mX zMn?O3#w2fdm;X!IKOF^1Z}xO?45^s&cG5;(CPNP_PHk5|60vS<}Xh+R?M;TX|jC7 z`@hxoS=>5RmDwpLBhu}5d$U=UoIJ2VPf|nNgNw7S4z7YA z_yOYN=%nZ(CH^ldw21NGxF7HCJ?`ECLZiY|vugrSHOolFV}D{cw<-o+5yTJzh+sfs zrk+SIX5cx#?&0I>U6f~epZjz4DS49tK9P8i>4rtTK|Hf*>74h8L#!kz#OK8023?T& zk?XR{Z=8z`3p_JqWK#3QA!4!E!Ey()lA#h$6NeR5qkJLjvch?bvs$UK);;+PgL!Qw z&2^fih+_!}B!3}7Mh#_DU?EDYMv93P?Z-U)BaS~wE}2|qFmf!Q3Kf#$2mgcL-I|4| zNjE7N1G-;q`y&Dbc7bNyw!e>UyLkfmpMfi_?XNa~*-z5zZ7qBR^lt+f*KJMS11@)f z;U`@(BuDbo6bc34{fxdT2Mpc*_YUWBQVq#iBK|yIbeOmwk0pUqRK~zYIwUoh*gD?z4i9`-=BG3Q-?T#JVdO}y- z%Nik}czl)>fm0Ek zu4+Bn%xb(nLNE-ixg&OCy1k8ecJAk}lLa2jCEFGOH=I2J!!ti^PMEl0*854pGw+%o z-hI%jpUC=vnOB!%_~6Y(@zx?xTc8`$HjH(^?tkDcG*bj871oVDI4T{`(&^HoN0xb3 zLQD`t!D|ot>sf$`IW691ErGO{dE=y(5)rISSRH0j!>1PonB--i!?MIQ3MR_O@O8OI zC9`->CKl+Lw{w15f%NeHjXVc$?NabVc*gY?MS>;b4SS};AaA_#9$WJhaQ!Op#UmHm zD}RvHar?8qtrkr;AEgRb7W?KZYTr)jw?q7Yp~vupkBWp3co2Skz{8CnH#}VY*zllD zNQWH{s#yG}c-TiHKZFm55+(qmd|=ECAj*e4Hx&>&A9%EO!YCiK!;wcz`OtR4oXUsh zN|Cggt3heH^Ow~Ljt5K;K~PX7sBvAP(EbT z4mUn1VXzK$;e$g6b36h5;=@9OP#_rc1jL8*v&;(+zd+)D0PzFUC@+}eNurhj0000< KMNUMnLSTYqYtPsK delta 580 zcmV-K0=xa@2hjwO7=Hu<0001qplF={000McNliru=K~%SE-(X4|4#q_02g#cSaefw zW^{L9a%BKVOhiylM<8}(av(DOV1ZP1_ zK>z@;j|==^1poj5Fi=cXMPi(TdwYAmy|n-T|9hNDoXtwKgMV7?#f!zPDfad$)nY-E zd(Fk9&GwWjVq#iBK|%9-Hc9{h00Cl4M@0Xn2lB-L00DJLL_t(|oYj&$j)O1|hJAyP zFW_7zv~dG9%?i5EC0)4BN)h*ogisnv8zdVfBs@#-m?+sQ+pQZj|2#c>i~+LO1Lw|v zY>u(?j*@JIVt>7d3q_7jFJi}BO9JEto97PB1(4!egoeSf8w(0Ko}7jeOGScdbrKIH zd_~#|_F$7#s==wu7eQ%kD)R!71lFOQ5Xbzq%{n!;N%K4l5pccLRg6nY=!MApuvihqPX8Z+OCzBWFaVd=V5jHvQ~W5P&bQ5Y#|04DJ96}7K? zY{2|WK0SO5I6V3AZB{eCLCG#>Wo{7?f;m SB%yr(0000nNgNw7S4z7YA z_yOYN=%nZ(CH^ldw21NGxF7HCJ?`ECLZiY|vugrSHOolFV}D{cw<-o+5yTJzh+sfs zrk+SIX5cx#?&0I>U6f~epZjz4DS49tK9P8i>4rtTK|Hf*>74h8L#!kz#OK8023?T& zk?XR{Z=8z`3p_JqWK#3QA!4!E!Ey()lA#h$6NeR5qkJLjvch?bvs$UK);;+PgL!Qw z&2^fih+_!}B!3}7Mh#_DU?EDYMv93P?Z-U)BaS~wE}2|qFmf!Q3Kf#$2mgcL-I|4| zNjE7N1G-;q`y&Dbc7bNyw!e>UyLkfmpMfi_?XNa~*-z5zZ7qBR^lt+f*KJMS11@)f z;U`@(BuDbo6bc34{fxdT2MpcLcR&Dp#xH_7 z1kXlmZ~n*t#^rGotv6#O$O_-UZe_IIV2YeceE4T?P=#jAsDJzoD6PRa@IPcatJ0hB z{X$^AFXKxDawQNPl@lIU2PFC=NYo6uY$lk1(gFc(*`n)GrXaw*$VM0Lh^o~U#E2IK1Kf+c=CCOvP;&13}nr7$ZU0HH`E_D2P^<`ymv>r?BFO zSP-7H`XLrXIX$WBhovB-`C%o9?uS?qgC7=x=zdrTqWfVbh|3QfK~z6%1+h`bkJlR# Wp&at$46*$H0000OV1ZP1_ zK>z@;j|==^1(UG>K7RlKVoOIv|D^}=#Q*>SGf6~2RCt`tk}+}}5O+)M?grP&#p;-_gj;|#Z;YyQc55TPfT=VP+NS;ji zUT^E%yoKMTW$rBu764k04Psk1<|4qdWN>4+(jQg|{^Czsy!g$5^EG=?nSA8JLc=QPN)|UGN|sY4j-xw{#gMJA;Pi^uWn8u*=0zWTM$mtCj?lUfZiiF6@(HZ zT|mena4S*CIALF+9q^T@aSVNeILn&r%KNn1Nd(=4n8PwF}2d z`Ruav@PJJaRz_Rsx{l+Z)b{a{MXV)r6|x2ohOtA<08fR!A*icy%aMC_ttXYMz-j7_ z#NR;%<;@O~$JjfFFo>OlNQ2lMgmPC7LJ>pyz&8i!29akkc{s?0K@9vQgHYRgHVEkt idxJQ;2l{;9<_~vP;27WK2})c50000~^oTNVls_vU<^IvWLQAP4DTl*x-k$cxp%s)E826QD~`bm|{8 z5d7q${Q-VQsO_nyQ1p1dRLe{2ntB0eoB_7kIySvI`jqW;(dNMC!-Q{(mKjSoVVQr@ z@?Pe#26I^A*aDCvohGvda$pXY6ax#9;y|MiD8YK}7D_%TiX1KLr5Rwq_QJ=7_*{v7 zM~xIEP#be-jUvJOfwqb~k*86}B1}w!4TTyklOf~4H9K>SYnW(;>)W(BkX!1xdctni&a0l2W+ Uj?CJa)c^nh07*qoM6N<$g7wLY3;+NC diff --git a/graphics/pokemon/zoroark/hisuian/icon.png b/graphics/pokemon/zoroark/hisuian/icon.png index 6c4f6faf1bf60434b0a0a2a5eedceab423c361f7..a9610d1fdbe9dc4e3fa15140dd762196bd14fb5f 100644 GIT binary patch delta 440 zcmV;p0Z0D&1b_sP7#0Wv0000?P=%ZT0004VQb$4nuFf3kks&^R0e(qDK~zYI)s)L_ zLm>=AFGgX3CC~r=ZO1%XF!yFtwQ5loN#@`On7OW>Sa>6WBI+Z7oHLn60xoCOd);@= z2p14FCa&r$XWvrbrc{S zkVw?AQ+gdDp-;1anIfB*NCdob6>V(@6WS4>>8h>}$S1&K^g1b59>SqJP+6zQD-&=K z@iqwf-!JyZ+hi3Q+o)Dr@jO++vg>Fk(eAr&A$G}4g}oIkDJ395s$q=ZBnr&8`V!Oz z?AM6~`8PrG40Ria&oCqtiIzoDoJS?9_9~!3+oadZ=YHn8iV6C71@|_P~o94iYS;jZL?Q_F<@C iG1!dFt?1Vm4B`WO>LRxpY0(q_0000f?_XX4?f9E~b$FX#!KIu>WB5Es?=R24vY` zRcOI?l~_)^>9$y5gLQQ7L+2hR$v-XlYljKq;tb&{mUiCR#H#^6ZUkpR?YX@NfCPV` zIlC}zWQ@(O$*iyO3V^^p=NV_UpVC5kG7aZx&LF12R#P50!(7%^A}}~VM*vi-Lr&zO z&;-i2$lf?KSOEJpmw8RhqIGG9CLw)gpN<{O;%6xbMjGul!AS zF(NgXP(7Y{iqGkKG8%wB=}DE+|WZB0r2XicEp@_Bvw7CRq$gGR7i>KRM83p zAq+cOaL_{Y|9`va9Nf+7F$NoB^Fa<0+cbLFw%=R;)^J(lWsPsJHGayVK=&Dg;vuRk zQ-VP|-Xt#~Zx!4}KR6?g6B4Q8 zCU)RLf?l+BQOz`eQbENdN+f{ delta 357 zcmV-r0h<2p0a7bBm000XU000XU0RWnu7ytkPB}qg< zR5*>@lD|&FFc8M`2B)MOOT|Snw34ml#L|U#pick;BYCF`3>}i44m=A%>X0FSjOgIO zN06vvo3RVxHh=o=^WEteMSrY#2;Psr0MG0jpbjH+5D_WQ!V!~n12j`Uz$Dwml4yUa zYbZ_@lM*HSfvo^n)tzW+>`zcYgphUE6X905`V Date: Sun, 7 Apr 2024 00:07:55 +0200 Subject: [PATCH 29/37] Disguise fixes + gen8 hp loss config (#4360) * Disguise fixes + gen8 hp loss config * fix battler arg * Update test/battle/ability/disguise.c --------- Co-authored-by: Bassoonian --- data/battle_scripts_1.s | 10 ++- include/battle_script_commands.h | 2 +- include/config/battle.h | 1 + src/battle_script_commands.c | 19 +++-- src/data/moves_info.h | 3 + test/battle/ability/disguise.c | 123 +++++++++++++++++++++++++++++++ 6 files changed, 146 insertions(+), 12 deletions(-) create mode 100644 test/battle/ability/disguise.c diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index e47839adfe..c9662b783b 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -7058,11 +7058,15 @@ BattleScript_CudChewActivates:: BattleScript_TargetFormChangeNoPopup: flushtextbox - handleformchange BS_TARGET, 0 - handleformchange BS_TARGET, 1 + handleformchange BS_SCRIPTING, 0 + handleformchange BS_SCRIPTING, 1 playanimation BS_TARGET, B_ANIM_FORM_CHANGE waitanimation - handleformchange BS_TARGET, 2 + handleformchange BS_SCRIPTING, 2 +.if B_DISGUISE_HP_LOSS >= GEN_8 + healthbarupdate BS_SCRIPTING + datahpupdate BS_SCRIPTING +.endif return BattleScript_TargetFormChange:: diff --git a/include/battle_script_commands.h b/include/battle_script_commands.h index d77ddfdfbc..540390bb53 100644 --- a/include/battle_script_commands.h +++ b/include/battle_script_commands.h @@ -37,7 +37,7 @@ void BufferMoveToLearnIntoBattleTextBuff2(void); void HandleBattleWindow(u8 xStart, u8 yStart, u8 xEnd, u8 yEnd, u8 flags); bool8 UproarWakeUpCheck(u8 battlerId); bool32 DoesSubstituteBlockMove(u32 battlerAtk, u32 battlerDef, u32 move); -bool32 DoesDisguiseBlockMove(u32 battlerAtk, u32 battlerDef, u32 move); +bool32 DoesDisguiseBlockMove(u32 battler, u32 move); bool32 CanPoisonType(u8 battlerAttacker, u8 battlerTarget); bool32 CanParalyzeType(u8 battlerAttacker, u8 battlerTarget); bool32 CanUseLastResort(u8 battlerId); diff --git a/include/config/battle.h b/include/config/battle.h index ffdfc40385..04d290f664 100644 --- a/include/config/battle.h +++ b/include/config/battle.h @@ -143,6 +143,7 @@ #define B_PROTEAN_LIBERO GEN_LATEST // In Gen9+, Protean and Libero change the user's type only once per Battle. #define B_INTREPID_SWORD GEN_LATEST // In Gen9+, Intrepid Sword raises Attack by one stage only once per Battle. #define B_DAUNTLESS_SHIELD GEN_LATEST // In Gen9+, Dauntless Shield raises Defense by one stage only once per Battle. +#define B_DISGUISE_HP_LOSS GEN_LATEST // In Gen8+, when a Disguised Mimikyu's Disguise is busted, upon changing to its Busted Form it loses HP equal to 1/8 of its maximum HP. // Item settings #define B_HP_BERRIES GEN_LATEST // In Gen4+, berries which restore HP activate immediately after HP drops to half. In Gen3, the effect occurs at the end of the turn. diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index bbee19244e..2bc25cd786 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -2006,7 +2006,7 @@ static void Cmd_adjustdamage(void) if (DoesSubstituteBlockMove(gBattlerAttacker, gBattlerTarget, gCurrentMove)) goto END; - if (DoesDisguiseBlockMove(gBattlerAttacker, gBattlerTarget, gCurrentMove)) + if (DoesDisguiseBlockMove(gBattlerTarget, gCurrentMove)) { gBattleStruct->enduredDamage |= gBitTable[gBattlerTarget]; goto END; @@ -2258,7 +2258,7 @@ static void Cmd_healthbarupdate(void) { PrepareStringBattle(STRINGID_SUBSTITUTEDAMAGED, battler); } - else if (!DoesDisguiseBlockMove(gBattlerAttacker, battler, gCurrentMove)) + else if (!DoesDisguiseBlockMove(battler, gCurrentMove)) { s16 healthValue = min(gBattleMoveDamage, 10000); // Max damage (10000) not present in R/S, ensures that huge damage values don't change sign @@ -2311,16 +2311,19 @@ static void Cmd_datahpupdate(void) return; } } - else if (DoesDisguiseBlockMove(gBattlerAttacker, battler, gCurrentMove)) + else if (DoesDisguiseBlockMove(battler, gCurrentMove)) { // TODO: Convert this to a proper FORM_CHANGE type. u32 side = GetBattlerSide(battler); + gBattleScripting.battler = battler; if (gBattleStruct->changedSpecies[side][gBattlerPartyIndexes[battler]] == SPECIES_NONE) gBattleStruct->changedSpecies[side][gBattlerPartyIndexes[battler]] = gBattleMons[battler].species; if (gBattleMons[battler].species == SPECIES_MIMIKYU_TOTEM_DISGUISED) gBattleMons[battler].species = SPECIES_MIMIKYU_TOTEM_BUSTED; else gBattleMons[battler].species = SPECIES_MIMIKYU_BUSTED; + if (B_DISGUISE_HP_LOSS >= GEN_8) + gBattleMoveDamage = GetNonDynamaxMaxHP(battler) / 8; BattleScriptPush(cmd->nextInstr); gBattlescriptCurrInstr = BattleScript_TargetFormChange; return; @@ -14736,13 +14739,13 @@ bool32 DoesSubstituteBlockMove(u32 battlerAtk, u32 battlerDef, u32 move) return TRUE; } -bool32 DoesDisguiseBlockMove(u32 battlerAtk, u32 battlerDef, u32 move) +bool32 DoesDisguiseBlockMove(u32 battler, u32 move) { - if (!(gBattleMons[battlerDef].species == SPECIES_MIMIKYU_DISGUISED || gBattleMons[battlerDef].species == SPECIES_MIMIKYU_TOTEM_DISGUISED) - || gBattleMons[battlerDef].status2 & STATUS2_TRANSFORMED - || IS_MOVE_STATUS(move) + if (!(gBattleMons[battler].species == SPECIES_MIMIKYU_DISGUISED || gBattleMons[battler].species == SPECIES_MIMIKYU_TOTEM_DISGUISED) + || gBattleMons[battler].status2 & STATUS2_TRANSFORMED + || (!gProtectStructs[battler].confusionSelfDmg && (IS_MOVE_STATUS(move) || gHitMarker & HITMARKER_PASSIVE_DAMAGE)) || gHitMarker & HITMARKER_IGNORE_DISGUISE - || GetBattlerAbility(battlerDef) != ABILITY_DISGUISE) + || GetBattlerAbility(battler) != ABILITY_DISGUISE) return FALSE; else return TRUE; diff --git a/src/data/moves_info.h b/src/data/moves_info.h index b4639fd290..f23f664ea5 100644 --- a/src/data/moves_info.h +++ b/src/data/moves_info.h @@ -20231,6 +20231,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, + .ignoresTargetAbility = TRUE, }, [MOVE_MENACING_MOONRAZE_MAELSTROM] = { @@ -20244,6 +20245,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, + .ignoresTargetAbility = TRUE, }, [MOVE_LIGHT_THAT_BURNS_THE_SKY] = { @@ -20257,6 +20259,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, + .ignoresTargetAbility = TRUE, }, [MOVE_SOUL_STEALING_7_STAR_STRIKE] = { diff --git a/test/battle/ability/disguise.c b/test/battle/ability/disguise.c new file mode 100644 index 0000000000..7d3e36bf78 --- /dev/null +++ b/test/battle/ability/disguise.c @@ -0,0 +1,123 @@ +#include "global.h" +#include "test/battle.h" + +ASSUMPTIONS +{ + ASSUME(gMovesInfo[MOVE_AERIAL_ACE].category == DAMAGE_CATEGORY_PHYSICAL); +} + +SINGLE_BATTLE_TEST("Disguised Mimikyu will lose 1/8 of its max HP upon changing to its busted form") +{ + s16 disguiseDamage; + + GIVEN { + PLAYER(SPECIES_MIMIKYU_DISGUISED) { Ability(ABILITY_DISGUISE); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_AERIAL_ACE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_AERIAL_ACE, opponent); + ABILITY_POPUP(player, ABILITY_DISGUISE); + HP_BAR(player, captureDamage: &disguiseDamage); + } THEN { + EXPECT_EQ(player->species, SPECIES_MIMIKYU_BUSTED); + EXPECT_EQ(disguiseDamage, player->maxHP / 8); + } +} + +SINGLE_BATTLE_TEST("Disguised Mimikyu takes no damage from a confusion hit and changes to its busted form") +{ + GIVEN { + ASSUME(gMovesInfo[MOVE_CONFUSE_RAY].effect == EFFECT_CONFUSE); + PLAYER(SPECIES_MIMIKYU_DISGUISED) { Ability(ABILITY_DISGUISE); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_CONFUSE_RAY); } + TURN { } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_CONFUSE_RAY, opponent); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_CONFUSION, player); + MESSAGE("Mimikyu became confused!"); + MESSAGE("Mimikyu is confused!"); + MESSAGE("It hurt itself in its confusion!"); + NOT HP_BAR(player); + ABILITY_POPUP(player, ABILITY_DISGUISE); + } THEN { + EXPECT_EQ(player->species, SPECIES_MIMIKYU_BUSTED); + } +} + +SINGLE_BATTLE_TEST("Disguised Mimikyu's Air Balloon will pop upon changing to its busted form") +{ + GIVEN { + ASSUME(gItemsInfo[ITEM_AIR_BALLOON].holdEffect == HOLD_EFFECT_AIR_BALLOON); + PLAYER(SPECIES_MIMIKYU_DISGUISED) { Ability(ABILITY_DISGUISE); Item(ITEM_AIR_BALLOON); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_AERIAL_ACE); } + } SCENE { + MESSAGE("Mimikyu floats in the air with its Air Balloon!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_AERIAL_ACE, opponent); + NOT HP_BAR(player); + ABILITY_POPUP(player, ABILITY_DISGUISE); + MESSAGE("Mimikyu's Air Balloon popped!"); + } THEN { + EXPECT_EQ(player->species, SPECIES_MIMIKYU_BUSTED); + } +} + +SINGLE_BATTLE_TEST("Disguised Mimikyu takes damage from secondary damage without breaking the disguise") +{ + GIVEN { + ASSUME(gMovesInfo[MOVE_STEALTH_ROCK].effect == EFFECT_STEALTH_ROCK); + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_MIMIKYU_DISGUISED) { Ability(ABILITY_DISGUISE); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_STEALTH_ROCK); } + TURN { SWITCH(player, 1); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_STEALTH_ROCK, opponent); + HP_BAR(player); + MESSAGE("Pointed stones dug into Mimikyu!"); + } THEN { + EXPECT_EQ(player->species, SPECIES_MIMIKYU_DISGUISED); + } +} + +SINGLE_BATTLE_TEST("Disguised Mimikyu takes damage from Rocky Helmet without breaking the disguise") +{ + GIVEN { + ASSUME(gItemsInfo[ITEM_ROCKY_HELMET].holdEffect == HOLD_EFFECT_ROCKY_HELMET); + PLAYER(SPECIES_MIMIKYU_DISGUISED) { Ability(ABILITY_DISGUISE); } + OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_ROCKY_HELMET); } + } WHEN { + TURN { MOVE(player, MOVE_AERIAL_ACE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_AERIAL_ACE, player); + HP_BAR(opponent); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); + HP_BAR(player); + MESSAGE("Mimikyu was hurt by Foe Wobbuffet's Rocky Helmet!"); + } THEN { + EXPECT_EQ(player->species, SPECIES_MIMIKYU_DISGUISED); + } +} + +SINGLE_BATTLE_TEST("Disguised Mimikyu takes damage from Rough Skin without breaking the disguise") +{ + GIVEN { + PLAYER(SPECIES_MIMIKYU_DISGUISED) { Ability(ABILITY_DISGUISE); } + OPPONENT(SPECIES_CARVANHA) { Ability(ABILITY_ROUGH_SKIN); } + } WHEN { + TURN { MOVE(player, MOVE_AERIAL_ACE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_AERIAL_ACE, player); + HP_BAR(opponent); + ABILITY_POPUP(opponent, ABILITY_ROUGH_SKIN); + HP_BAR(player); + MESSAGE("Mimikyu was hurt by Foe Carvanha's Rough Skin!"); + } THEN { + EXPECT_EQ(player->species, SPECIES_MIMIKYU_DISGUISED); + } +} From 41ddd911b7b52020f33789b7e6818e461c5a0c9a Mon Sep 17 00:00:00 2001 From: Martin Griffin Date: Sun, 7 Apr 2024 12:08:35 +0100 Subject: [PATCH 30/37] Include gba/defines.h in gba/types.h (#4364) If gba/types.h is included before gba/defines.h, it ends up declaring a variable named PACKED rather than specifying that BgCnt should be packed. --- include/gba/types.h | 1 + 1 file changed, 1 insertion(+) diff --git a/include/gba/types.h b/include/gba/types.h index 4acaee2d23..65b65187f8 100644 --- a/include/gba/types.h +++ b/include/gba/types.h @@ -2,6 +2,7 @@ #define GUARD_GBA_TYPES_H #include +#include "gba/defines.h" typedef uint8_t u8; typedef uint16_t u16; From b5c7332182a1dacc17713d44f502b3ec85b2c097 Mon Sep 17 00:00:00 2001 From: Philipp AUER Date: Sun, 7 Apr 2024 16:43:04 +0200 Subject: [PATCH 31/37] feat: check if inside of git repository before building (#4363) * feat: check if inside of git repository before building * pokemon_expansion -> pokeemerald-expansion --------- Co-authored-by: sbird Co-authored-by: Eduardo Quezada --- Makefile | 7 +++++-- check_history.sh | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+), 2 deletions(-) create mode 100755 check_history.sh diff --git a/Makefile b/Makefile index 39b246ab6b..6edd1bf06d 100644 --- a/Makefile +++ b/Makefile @@ -187,7 +187,7 @@ MAKEFLAGS += --no-print-directory # Secondary expansion is required for dependency variables in object rules. .SECONDEXPANSION: -.PHONY: all rom clean compare tidy tools check-tools mostlyclean clean-tools clean-check-tools $(TOOLDIRS) $(CHECKTOOLDIRS) libagbsyscall agbcc modern tidymodern tidynonmodern check +.PHONY: all rom clean compare tidy tools check-tools mostlyclean clean-tools clean-check-tools $(TOOLDIRS) $(CHECKTOOLDIRS) libagbsyscall agbcc modern tidymodern tidynonmodern check history infoshell = $(foreach line, $(shell $1 | sed "s/ /__SPACE__/g"), $(info $(subst __SPACE__, ,$(line)))) @@ -254,7 +254,10 @@ endif AUTO_GEN_TARGETS := -all: rom +all: history rom + +history: + @bash ./check_history.sh tools: $(TOOLDIRS) diff --git a/check_history.sh b/check_history.sh new file mode 100755 index 0000000000..64ea76a807 --- /dev/null +++ b/check_history.sh @@ -0,0 +1,35 @@ +#!/bin/bash + +if [ -e .histignore ] +then + exit 0 +fi + +if [ $GITHUB_ACTION ] +then + exit 0 +fi + +has_hist=false +has_git=1 +if which git >/dev/null +then + has_hist="$(git rev-parse --is-inside-work-tree 2>/dev/null)" +else + has_git=0 +fi + +if [ $has_git -ne 1 ] +then + echo -e "\033[0;31mfatal: \033[0m\033[1;33mgit was not found. You will be unable to use version control, update pokeemerald-expansion, or use feature branches. To use version control, install \`git\` and clone the repository instead of using \"Download Zip\" on GitHub. Run \`touch .histignore\` to ignore this and continue anyways.\033[0m" + exit 1 +fi + +if [ "$has_hist" ] +then + exit 0 +else + echo -e "\033[0;31mfatal: \033[0m\033[1;33mno git history found. You will be unable to use version control, update pokeemerald-expansion, or use feature branches. To use version control, use \`git\` to clone the repository instead of using \"Download Zip\" on GitHub. Run \`touch .histignore\` to ignore this and continue anyways.\033[0m" + exit 1 +fi + From 3c85089428e1fa4a1f127dd221b60e8cb02c959b Mon Sep 17 00:00:00 2001 From: Alex <93446519+AlexOn1ine@users.noreply.github.com> Date: Tue, 9 Apr 2024 10:32:11 +0200 Subject: [PATCH 32/37] Fixes Gulp Missile Dive / Power Herb interaction (#4371) * Fixed Cramorant Dive / Power Herb interaction * remove file * leftover --- asm/macros/battle_script.inc | 6 +- data/battle_scripts_1.s | 6 ++ include/battle_scripts.h | 1 + src/battle_script_commands.c | 13 +++ src/battle_util.c | 3 +- test/battle/ability/gulp_missile.c | 137 +++++++++++++++++++++++++++++ 6 files changed, 164 insertions(+), 2 deletions(-) create mode 100644 test/battle/ability/gulp_missile.c diff --git a/asm/macros/battle_script.inc b/asm/macros/battle_script.inc index 561ea6d146..25e0110a51 100644 --- a/asm/macros/battle_script.inc +++ b/asm/macros/battle_script.inc @@ -1360,7 +1360,7 @@ .byte \battler .4byte \jumpInstr .endm - + .macro itemstatchangeeffects battler:req callnative BS_RunStatChangeItems .byte \battler @@ -1632,6 +1632,10 @@ .4byte \jumpInstr .endm + .macro trygulpmissile + callnative BS_TryGulpMissile + .endm + @ various command changed to more readable macros .macro cancelmultiturnmoves battler:req various \battler, VARIOUS_CANCEL_MULTI_TURN_MOVES diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index c9662b783b..944ef87466 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -3804,6 +3804,8 @@ BattleScript_FirstChargingTurnAfterAttackString: BattleScript_TwoTurnMovesSecondPowerHerbActivates: call BattleScript_PowerHerbActivation + trygulpmissile @ Edge case for Cramorant ability Gulp Missile +BattleScript_FromTwoTurnMovesSecondTurnRet: call BattleScript_TwoTurnMovesSecondTurnRet accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE @ before Gen 5, charge moves did not print an attack string on the charge turn @@ -7006,6 +7008,10 @@ BattleScript_UltraBurst:: switchinabilities BS_ATTACKER end3 +BattleScript_GulpMissileFormChange:: + call BattleScript_AttackerFormChange + goto BattleScript_FromTwoTurnMovesSecondTurnRet + BattleScript_AttackerFormChange:: pause 5 copybyte gBattlerAbility, gBattlerAttacker diff --git a/include/battle_scripts.h b/include/battle_scripts.h index 319437c12f..3f99a90893 100644 --- a/include/battle_scripts.h +++ b/include/battle_scripts.h @@ -411,6 +411,7 @@ extern const u8 BattleScript_ElectricTerrainPrevents[]; extern const u8 BattleScript_DarkTypePreventsPrankster[]; extern const u8 BattleScript_GulpMissileGorging[]; extern const u8 BattleScript_GulpMissileGulping[]; +extern const u8 BattleScript_GulpMissileFormChange[]; extern const u8 BattleScript_BattleBondActivatesOnMoveEndAttacker[]; extern const u8 BattleScript_DesolateLandActivates[]; extern const u8 BattleScript_PrimordialSeaActivates[]; diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 2bc25cd786..1fb7947f57 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -16824,3 +16824,16 @@ void BS_TryTidyUp(void) gBattlescriptCurrInstr = cmd->nextInstr; } } + +void BS_TryGulpMissile(void) +{ + NATIVE_ARGS(); + + if ((gBattleMons[gBattlerAttacker].species == SPECIES_CRAMORANT) + && (gCurrentMove == MOVE_DIVE) + && (GetBattlerAbility(gBattlerAttacker) == ABILITY_GULP_MISSILE) + && TryBattleFormChange(gBattlerAttacker, FORM_CHANGE_BATTLE_HP_PERCENT)) + gBattlescriptCurrInstr = BattleScript_GulpMissileFormChange; + else + gBattlescriptCurrInstr = cmd->nextInstr; +} diff --git a/src/battle_util.c b/src/battle_util.c index 2eb8f97f62..3f106b553f 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -5716,7 +5716,8 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 } break; case ABILITY_GULP_MISSILE: - if (((gCurrentMove == MOVE_SURF && TARGET_TURN_DAMAGED) || gStatuses3[gBattlerAttacker] & STATUS3_UNDERWATER) + if ((gBattleMons[gBattlerAttacker].species == SPECIES_CRAMORANT) + && ((gCurrentMove == MOVE_SURF && TARGET_TURN_DAMAGED) || gStatuses3[gBattlerAttacker] & STATUS3_UNDERWATER) && TryBattleFormChange(gBattlerAttacker, FORM_CHANGE_BATTLE_HP_PERCENT)) { BattleScriptPushCursor(); diff --git a/test/battle/ability/gulp_missile.c b/test/battle/ability/gulp_missile.c new file mode 100644 index 0000000000..680208506d --- /dev/null +++ b/test/battle/ability/gulp_missile.c @@ -0,0 +1,137 @@ +#include "global.h" +#include "test/battle.h" + +ASSUMPTIONS +{ + // ASSUME(gMovesInfo[MOVE_AERIAL_ACE].category == DAMAGE_CATEGORY_PHYSICAL); +} + +SINGLE_BATTLE_TEST("(Gulp Missile) If base Cramorant hits target with Surf it transforms into Gulping form if max HP is over 1/2") +{ + GIVEN { + PLAYER(SPECIES_CRAMORANT) { Ability(ABILITY_GULP_MISSILE); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_SURF); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SURF, player); + HP_BAR(opponent); + ABILITY_POPUP(player, ABILITY_GULP_MISSILE); + } THEN { + EXPECT_EQ(player->species, SPECIES_CRAMORANT_GULPING); + } +} + +SINGLE_BATTLE_TEST("(Gulp Missile) If base Cramorant hits target with Surf it transforms into Gorging form if max HP is under 1/2") +{ + GIVEN { + PLAYER(SPECIES_CRAMORANT) { HP(120); MaxHP(250); Ability(ABILITY_GULP_MISSILE); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_SURF); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SURF, player); + HP_BAR(opponent); + ABILITY_POPUP(player, ABILITY_GULP_MISSILE); + } THEN { + EXPECT_EQ(player->species, SPECIES_CRAMORANT_GORGING); + } +} + +SINGLE_BATTLE_TEST("(Gulp Missile) If base Cramorant is under water it transforms into one of its forms") +{ + GIVEN { + PLAYER(SPECIES_CRAMORANT) { Ability(ABILITY_GULP_MISSILE); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_DIVE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_DIVE, player); + NOT HP_BAR(opponent); + ABILITY_POPUP(player, ABILITY_GULP_MISSILE); + } THEN { + EXPECT_EQ(player->species, SPECIES_CRAMORANT_GULPING); + } +} + +SINGLE_BATTLE_TEST("(Gulp Missile) Power Herb does not prevent Cramaront from transforming") +{ + GIVEN { + PLAYER(SPECIES_CRAMORANT) { Ability(ABILITY_GULP_MISSILE); Item(ITEM_POWER_HERB); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_DIVE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_DIVE, player); + MESSAGE("Cramorant became fully charged due to its Power Herb!"); + ABILITY_POPUP(player, ABILITY_GULP_MISSILE); + HP_BAR(opponent); + } THEN { + EXPECT_EQ(player->species, SPECIES_CRAMORANT_GULPING); + } +} + +SINGLE_BATTLE_TEST("(Gulp Missile) Transformed Cramorant deal 1/4 of damage opposing mon if hit by a damaging move, Gulping also lowers defense") +{ + s16 gulpMissileDamage; + + GIVEN { + PLAYER(SPECIES_CRAMORANT) { Ability(ABILITY_GULP_MISSILE); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_SURF); MOVE(opponent, MOVE_TACKLE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SURF, player); + HP_BAR(opponent); + ABILITY_POPUP(player, ABILITY_GULP_MISSILE); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + HP_BAR(player); + ABILITY_POPUP(player, ABILITY_GULP_MISSILE); + HP_BAR(opponent, captureDamage: &gulpMissileDamage); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + MESSAGE("Foe Wobbuffet's Defense fell!"); + } THEN { + EXPECT_EQ(gulpMissileDamage, opponent->maxHP / 4); + } +} + +SINGLE_BATTLE_TEST("(Gulp Missile) Cramorant in Gorging paralyzes the target if hit by a damaging move") +{ + GIVEN { + PLAYER(SPECIES_CRAMORANT) { HP(120); MaxHP(250); Ability(ABILITY_GULP_MISSILE); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_SURF); MOVE(opponent, MOVE_TACKLE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SURF, player); + HP_BAR(opponent); + ABILITY_POPUP(player, ABILITY_GULP_MISSILE); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + HP_BAR(player); + ABILITY_POPUP(player, ABILITY_GULP_MISSILE); + HP_BAR(opponent); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PRZ, opponent); + STATUS_ICON(opponent, paralysis: TRUE); + } +} + +SINGLE_BATTLE_TEST("(Gulp Missile) triggers even if the user is fainted by opposing mon") +{ + // See: https://github.com/rh-hideout/pokeemerald-expansion/issues/4143 + KNOWN_FAILING; + GIVEN { + PLAYER(SPECIES_CRAMORANT) { HP(1); MaxHP(250); Ability(ABILITY_GULP_MISSILE); } + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_SURF); MOVE(opponent, MOVE_TACKLE); SEND_OUT(player, 1); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SURF, player); + HP_BAR(opponent); + ABILITY_POPUP(player, ABILITY_GULP_MISSILE); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + HP_BAR(player); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PRZ, opponent); + STATUS_ICON(opponent, paralysis: TRUE); + } +} From 3fb52b6b0e2f60d8db465048659c5253220570bb Mon Sep 17 00:00:00 2001 From: kittenchilly Date: Wed, 10 Apr 2024 02:16:32 -0500 Subject: [PATCH 33/37] Change Frostbite abbreviation from FSB to FRB (#4355) * Change Frostbite abbreviation from FSB to FRB * Melted the ice is actually the one used * Update moves_info.h * Update moves_info.h * Update items.h --- data/battle_scripts_1.s | 6 +++--- graphics/battle_interface/status.png | Bin 559 -> 553 bytes graphics/battle_interface/status2.png | Bin 559 -> 553 bytes graphics/battle_interface/status3.png | Bin 559 -> 553 bytes graphics/battle_interface/status4.png | Bin 559 -> 553 bytes graphics/interface/status_icons.png | Bin 458 -> 451 bytes include/battle_scripts.h | 4 ++-- include/constants/party_menu.h | 2 +- src/battle_interface.c | 20 ++++++++++---------- src/battle_message.c | 4 ++-- src/battle_util.c | 6 +++--- src/data/items.h | 8 ++++++++ src/data/moves_info.h | 12 ++++++++++++ src/party_menu.c | 2 +- 14 files changed, 42 insertions(+), 22 deletions(-) diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 944ef87466..6415dee69c 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -521,7 +521,7 @@ BattleScript_AffectionBasedStatus_HealFreezeString: printstring STRINGID_ATTACKERMELTEDTHEICE goto BattleScript_AffectionBasedStatusHeal_Continue BattleScript_AffectionBasedStatus_HealFrostbiteString: - printstring STRINGID_ATTACKERHEALEDITSFROSTBITE + printstring STRINGID_ATTACKERMELTEDTHEICE BattleScript_AffectionBasedStatusHeal_Continue: waitmessage B_WAIT_TIME_LONG clearstatus BS_ATTACKER @@ -8720,11 +8720,11 @@ BattleScript_BerryCureFrzRet:: removeitem BS_SCRIPTING return -BattleScript_BerryCureFsbEnd2:: +BattleScript_BerryCureFrbEnd2:: call BattleScript_BerryCureFrzRet end2 -BattleScript_BerryCureFsbRet:: +BattleScript_BerryCureFrbRet:: playanimation BS_SCRIPTING, B_ANIM_HELD_ITEM_EFFECT printstring STRINGID_PKMNSITEMHEALEDFROSTBITE waitmessage B_WAIT_TIME_LONG diff --git a/graphics/battle_interface/status.png b/graphics/battle_interface/status.png index 0b212907e5574725f3c8f3d4f95a713b44fc02e2..ceb39fb777ff813be0929e4c930a27c6ec8233fc 100644 GIT binary patch delta 261 zcmV+g0s8*01gQkDEdhV$Nkl*ArG3qIqEy)FW3M z3Sdo!AXfOCLlw_chmul#YffX`fSpv>fbLd4GgdtZ=-}(|Yq@|=viQgIaCpSW%B18- z#&pVGfUAH@tr;V20^ETN{9P_!OBVm&B>>N+3kXu0o`D0q5WsylC(w4Oc9a@mJTA9k zmUS-|kdnneh$M>hm65_%fXqdt6R>pvSBdkS5n>K-m0BOamJ8UE#XoxI5Kf0lb>EuP z*asMw6)nIn52*xt0=P@f$FJr7-48nU18)7Wj6*-p842Wm&|5z~`*nM>8I-uk00000 LNkvXXu0mjfk?(fD delta 268 zcmV+n0rUQ;1g`|JEdhV+NklLk_;Xr{sjWVP}*vFaH>1Fy@kVM}!q z#{_e;patmWDV4xT0C%al{95j3KYIMhLqFiq56`^%;jKD%a0M7`+b_SB`vYV!e48M^ S@9O{n002ovPDBK*LSTYDw-Z(uqIqEy)FW3M z3Sdo!AXfOCLlw_chmul#YffX`fSpv>fbLd4GgdtZ=-}(|Yq@|=viQgIaCpSW%B18- z#&pVGfUAH@tr;V20^ETN{9P_!OBVm&B>>N+3kXu0o`D0q5WsylC(w4Oc9a@mJTA9k zmUS-|kdnneh$M>hm65_%fXqdt6R>pvSBdkS5n>K-m0BOamJ8UE#XoxI5Kf0lb>EuP z*asMw6)nIn52*xt0=P@f$FJr7-48nU18)7Wj6*-p842Wm&|5z~7-fD)N*-v!00000 LNkvXXu0mjfR1b8k delta 268 zcmV+n0rUQ;1g`|JEdhV+Nklm36^00?JQ4Gq8rA5a`cL! z0M=v(Y=!a^Dtr252r1Q;>Lk_;Xr{sjWVP}*vFaH>1Fy@kVM}!q z#{_e;patmWDV4xT0C%al{95j3KYIMhLqFiq56`^%;jKD%a0M7`+b_SB`vZdCe>B(N Scqjk>002ovPDBK*LSTYDAb;Kf diff --git a/graphics/battle_interface/status3.png b/graphics/battle_interface/status3.png index 7cc8cd56dccb16ff6abf850431d1f232bd1f1778..369564815fbad5b54eca666297ae410808a00fe6 100644 GIT binary patch delta 261 zcmV+g0s8*01gQkDEdhV$NklmlIYOqIqEy)FW3M z3Sdo!AXfOCLlw_chmul#YffX`fSpv>fbLd4GgdtZ=-}(|Yq@|=viQgIaCpSW%B18- z#&pVGfUAH@tr;V20^ETN{9P_!OBVm&B>>N+3kXu0o`D0q5WsylC(w4Oc9a@mJTA9k zmUS-|kdnneh$M>hm65_%fXqdt6R>pvSBdkS5n>K-m0BOamJ8UE#XoxI5Kf0lb>EuP z*asMw6)nIn52*xt0=P@f$FJr7-48nU18)7Wj6*-p842Wm&|5z~HAaBl)e>-V00000 LNkvXXu0mjfM#^

Lk_;Xr{sjWVP}*vFaH>1Fy@kVM}!q z#{_e;patmWDV4xT0C%al{95j3KYIMhLqFiq56`^%;jKD%a0M7`+b_SB`vaklfz1H@ S>+}Es002ovPDBK*LSTYJNPxuv diff --git a/graphics/battle_interface/status4.png b/graphics/battle_interface/status4.png index c5ab2c5e116c698fad2022ed9c4a101c797f78ae..119d4f4aa76f8d0db71ec22989a1e644e05b7517 100644 GIT binary patch delta 261 zcmV+g0s8*01gQkDEdhV$NklfbLd4GgdtZ=-}(|Yq@|=viQgIaCpSW%B18- z#&pVGfUAH@tr;V20^ETN{9P_!OBVm&B>>N+3kXu0o`D0q5WsylC(w4Oc9a@mJTA9k zmUS-|kdnneh$M>hm65_%fXqdt6R>pvSBdkS5n>K-m0BOamJ8UE#XoxI5Kf0lb>EuP z*asMw6)nIn52*xt0=P@f$FJr7-48nU18)7Wj6*-p842Wm&|5z~QYV9Q%H>Wx00000 LNkvXXu0mjf2D@|& delta 268 zcmV+n0rUQ;1g`|JEdhV+Nkl?ng z0j$Xo*b3z-RQB}A5K^iw)k&-y&`gC5$ZF+rV%0N%240t6%LROr`8%G6!o%KYD#a-t z;e>wxQvs7&Pt0Qha0fi_f4P7ynZJXk0Q5DPfRoZB2L^P516_ZdK-;C-QEGyDIq!xj z>s~HkPv-CFog+J&DJirCx;l^j1a$7eR6L(gxR?Q4rPj-@wqJfL_Xof|gl4T1 SrcVF>002ovPDBK*LSTX#v3$M& diff --git a/graphics/interface/status_icons.png b/graphics/interface/status_icons.png index f93406cfd1b8e70cb2b3c736295153d81d1a5219..cef7119a4070e20f69afe74a9f2efe260cd9d13a 100644 GIT binary patch delta 351 zcmV-l0igcM1H%K5ZGS;YL_t(YiItQI4g(cV}Vryxa=6+F~hzo+ie~oej5c~h>dcP0DlHGK!;smlPwG&S{R@_ z5^qCmjNX{xJd~X#kJZtoND=W09PILb^Z<$tkgDf=t3qy~fU|DlJ#si^xG!b5$;Z0c z(UQcKj@i+E8K7Jy!~ytnY0&_#25`$3_L0LejeaNvDKc5hWla=y6Eda%l252)Py?)> zm0Ws2RbRG9Ls(QTv{23kXbI)}D0@vFe`pWHogz@gg9&uRaO?w!v;d&`!wL=HwSXO? xJLYG7FogK~!$=>vLPsC^6&irn2X_pA%pcY>B0crmXa)cP002ovPDHLkV1lXvmeK$K delta 358 zcmV-s0h#{81Ih!CZGT8fL_t(YiItQGjsqbKMUgcvQ}2J<#iqoS$y$s-_~9ZYKc!;x zq-;*YavT6A^!cMDiK$)}NBiUg6d}X`=$3I#23|)2a|OaCU&l=AqHHzs+~k73og{%F zTwk{={|9Pzs3p7%J&grc3E;A04985LP1(oB0rI!e0SvKG41X$6Kn>945ZGi11Bem^ z=uP5lh{hO=nT}oAVd9t_T|FrxKY_itw(lc=&IYL2TRh6piYVaVCA=nI$4u9$>@xA3 zw>espIO}zBw4Vm(j|p*r^0=1>fHMFtS;98?I;PPNr664 z1!Z#S0W7~PQD28(CA3h^9f*YTxs^R8jz6>;@=hmE#Ek)T#FVoSAQAyU`Cl^xz+(YB z#&FD^^ Date: Thu, 11 Apr 2024 10:23:16 +0200 Subject: [PATCH 34/37] Future Sight fixes (#4350) * Future Sight fixes * handle life orb boost * applied review * Future Sight changes * removed future sight no hit string * agbcc * Update battle_scripts.h --- include/battle.h | 3 +- src/battle_main.c | 4 +- src/battle_script_commands.c | 3 +- src/battle_util.c | 93 +++++++++++++++-- test/battle/move_effect/future_sight.c | 134 +++++++++++++++++++++++++ 5 files changed, 224 insertions(+), 13 deletions(-) create mode 100644 test/battle/move_effect/future_sight.c diff --git a/include/battle.h b/include/battle.h index 5a69fc8d50..b537be776e 100644 --- a/include/battle.h +++ b/include/battle.h @@ -278,7 +278,8 @@ struct FieldTimer struct WishFutureKnock { u8 futureSightCounter[MAX_BATTLERS_COUNT]; - u8 futureSightAttacker[MAX_BATTLERS_COUNT]; + u8 futureSightBattlerIndex[MAX_BATTLERS_COUNT]; + u8 futureSightPartyIndex[MAX_BATTLERS_COUNT]; u16 futureSightMove[MAX_BATTLERS_COUNT]; u8 wishCounter[MAX_BATTLERS_COUNT]; u8 wishPartyId[MAX_BATTLERS_COUNT]; diff --git a/src/battle_main.c b/src/battle_main.c index 732bd97035..ab97617c55 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -4207,11 +4207,11 @@ void BattleTurnPassed(void) if (DoBattlerEndTurnEffects()) return; } + if (HandleWishPerishSongOnTurnEnd()) + return; if (HandleFaintedMonActions()) return; gBattleStruct->faintedActionsState = 0; - if (HandleWishPerishSongOnTurnEnd()) - return; TurnValuesCleanUp(FALSE); gHitMarker &= ~HITMARKER_NO_ATTACKSTRING; diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 1fb7947f57..b61508fd95 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -13708,7 +13708,8 @@ static void Cmd_trysetfutureattack(void) { gSideStatuses[GetBattlerSide(gBattlerTarget)] |= SIDE_STATUS_FUTUREATTACK; gWishFutureKnock.futureSightMove[gBattlerTarget] = gCurrentMove; - gWishFutureKnock.futureSightAttacker[gBattlerTarget] = gBattlerAttacker; + gWishFutureKnock.futureSightBattlerIndex[gBattlerTarget] = gBattlerAttacker; + gWishFutureKnock.futureSightPartyIndex[gBattlerTarget] = gBattlerPartyIndexes[gBattlerAttacker]; gWishFutureKnock.futureSightCounter[gBattlerTarget] = 3; if (gCurrentMove == MOVE_DOOM_DESIRE) diff --git a/src/battle_util.c b/src/battle_util.c index d6797e2c1b..5a9e8e842a 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -2964,17 +2964,15 @@ bool32 HandleWishPerishSongOnTurnEnd(void) while (gBattleStruct->wishPerishSongBattlerId < gBattlersCount) { battler = gBattleStruct->wishPerishSongBattlerId; - if (gAbsentBattlerFlags & gBitTable[battler]) - { - gBattleStruct->wishPerishSongBattlerId++; - continue; - } gBattleStruct->wishPerishSongBattlerId++; + if (gWishFutureKnock.futureSightCounter[battler] != 0 && --gWishFutureKnock.futureSightCounter[battler] == 0 - && gBattleMons[battler].hp != 0) + && !(gAbsentBattlerFlags & gBitTable[battler])) { + struct Pokemon *party; + if (gWishFutureKnock.futureSightMove[battler] == MOVE_FUTURE_SIGHT) gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_FUTURE_SIGHT; else @@ -2983,10 +2981,14 @@ bool32 HandleWishPerishSongOnTurnEnd(void) PREPARE_MOVE_BUFFER(gBattleTextBuff1, gWishFutureKnock.futureSightMove[battler]); gBattlerTarget = battler; - gBattlerAttacker = gWishFutureKnock.futureSightAttacker[battler]; + gBattlerAttacker = gWishFutureKnock.futureSightBattlerIndex[battler]; gSpecialStatuses[gBattlerTarget].shellBellDmg = IGNORE_SHELL_BELL; gCurrentMove = gWishFutureKnock.futureSightMove[battler]; - SetTypeBeforeUsingMove(gCurrentMove, battler); + + party = GetSideParty(GetBattlerSide(gBattlerAttacker)); + if (&party[gWishFutureKnock.futureSightPartyIndex[gBattlerTarget]] == &party[gBattlerPartyIndexes[gBattlerAttacker]]) + SetTypeBeforeUsingMove(gCurrentMove, gBattlerAttacker); + BattleScriptExecute(BattleScript_MonTookFutureAttack); if (gWishFutureKnock.futureSightCounter[battler] == 0 @@ -2994,6 +2996,7 @@ bool32 HandleWishPerishSongOnTurnEnd(void) { gSideStatuses[GetBattlerSide(gBattlerTarget)] &= ~SIDE_STATUS_FUTUREATTACK; } + return TRUE; } } @@ -9846,6 +9849,66 @@ static inline s32 DoMoveDamageCalc(u32 move, u32 battlerAtk, u32 battlerDef, u32 updateFlags, typeEffectivenessModifier, weather, holdEffectAtk, holdEffectDef, abilityAtk, abilityDef); } +static inline s32 DoFutureSightAttackDamageCalcVars(u32 move, u32 battlerAtk, u32 battlerDef, u32 moveType, + bool32 isCrit, bool32 randomFactor, bool32 updateFlags, uq4_12_t typeEffectivenessModifier, u32 weather, + u32 holdEffectDef, u32 abilityDef) +{ + s32 dmg; + u32 userFinalAttack; + u32 targetFinalDefense; + + struct Pokemon *party = GetSideParty(GetBattlerSide(battlerAtk)); + struct Pokemon *partyMon = &party[gWishFutureKnock.futureSightPartyIndex[battlerDef]]; + u32 partyMonLevel = GetMonData(partyMon, MON_DATA_LEVEL, NULL); + u32 partyMonSpecies = GetMonData(partyMon, MON_DATA_SPECIES, NULL); + gBattleMovePower = gMovesInfo[move].power; + + if (IS_MOVE_PHYSICAL(move)) + userFinalAttack = GetMonData(partyMon, MON_DATA_ATK, NULL); + else + userFinalAttack = GetMonData(partyMon, MON_DATA_SPATK, NULL); + + targetFinalDefense = CalcDefenseStat(move, battlerAtk, battlerDef, moveType, isCrit, updateFlags, ABILITY_NONE, abilityDef, holdEffectDef, weather); + dmg = CalculateBaseDamage(gBattleMovePower, userFinalAttack, partyMonLevel, targetFinalDefense); + + DAMAGE_APPLY_MODIFIER(GetCriticalModifier(isCrit)); + + if (randomFactor) + { + dmg *= 100 - RandomUniform(RNG_DAMAGE_MODIFIER, 0, 15); + dmg /= 100; + } + + // Same type attack bonus + if (gSpeciesInfo[partyMonSpecies].types[0] == moveType || gSpeciesInfo[partyMonSpecies].types[1] == moveType) + DAMAGE_APPLY_MODIFIER(UQ_4_12(1.5)); + else + DAMAGE_APPLY_MODIFIER(UQ_4_12(1.0)); + DAMAGE_APPLY_MODIFIER(typeEffectivenessModifier); + + if (dmg == 0) + dmg = 1; + + gSpecialStatuses[battlerAtk].preventLifeOrbDamage = TRUE; + + return dmg; +} + +static inline s32 DoFutureSightAttackDamageCalc(u32 move, u32 battlerAtk, u32 battlerDef, u32 moveType, + bool32 isCrit, bool32 randomFactor, bool32 updateFlags, uq4_12_t typeEffectivenessModifier, u32 weather) +{ + u32 holdEffectDef, abilityDef; + + if (typeEffectivenessModifier == UQ_4_12(0.0)) + return 0; + + holdEffectDef = GetBattlerHoldEffect(battlerDef, TRUE); + abilityDef = GetBattlerAbility(battlerDef); + + return DoFutureSightAttackDamageCalcVars(move, battlerAtk, battlerDef, moveType, isCrit, randomFactor, + updateFlags, typeEffectivenessModifier, weather, holdEffectDef, abilityDef); +} + #undef DAMAGE_APPLY_MODIFIER static u32 GetWeather(void) @@ -9858,9 +9921,21 @@ static u32 GetWeather(void) s32 CalculateMoveDamage(u32 move, u32 battlerAtk, u32 battlerDef, u32 moveType, s32 fixedBasePower, bool32 isCrit, bool32 randomFactor, bool32 updateFlags) { - return DoMoveDamageCalc(move, battlerAtk, battlerDef, moveType, fixedBasePower, isCrit, randomFactor, + struct Pokemon *party = GetSideParty(GetBattlerSide(gBattlerAttacker)); + + if (gMovesInfo[move].effect == EFFECT_FUTURE_SIGHT + && (&party[gWishFutureKnock.futureSightPartyIndex[battlerDef]] != &party[gBattlerPartyIndexes[battlerAtk]]) ) + { + return DoFutureSightAttackDamageCalc(move, battlerAtk, battlerDef, moveType, isCrit, randomFactor, + updateFlags, CalcTypeEffectivenessMultiplier(move, moveType, battlerAtk, battlerDef, GetBattlerAbility(battlerDef), updateFlags), + GetWeather()); + } + else + { + return DoMoveDamageCalc(move, battlerAtk, battlerDef, moveType, fixedBasePower, isCrit, randomFactor, updateFlags, CalcTypeEffectivenessMultiplier(move, moveType, battlerAtk, battlerDef, GetBattlerAbility(battlerDef), updateFlags), GetWeather()); + } } // for AI so that typeEffectivenessModifier, weather, abilities and holdEffects are calculated only once diff --git a/test/battle/move_effect/future_sight.c b/test/battle/move_effect/future_sight.c new file mode 100644 index 0000000000..6a163a736d --- /dev/null +++ b/test/battle/move_effect/future_sight.c @@ -0,0 +1,134 @@ +#include "global.h" +#include "test/battle.h" + +ASSUMPTIONS +{ + ASSUME(gMovesInfo[MOVE_SEED_FLARE].power == gMovesInfo[MOVE_FUTURE_SIGHT].power); + ASSUME(gMovesInfo[MOVE_SEED_FLARE].category == gMovesInfo[MOVE_FUTURE_SIGHT].category); +} + +SINGLE_BATTLE_TEST("Future Sight uses Sp. Atk stat of the original user without modifiers") +{ + u32 item; + s16 seedFlareDmg; + s16 futureSightDmg; + + PARAMETRIZE { item = ITEM_TWISTED_SPOON; } + PARAMETRIZE { item = ITEM_PSYCHIC_GEM; } + + GIVEN { + PLAYER(SPECIES_PIKACHU) { Item(item); } + PLAYER(SPECIES_RAICHU) { Item(item); } + OPPONENT(SPECIES_REGICE); + } WHEN { + TURN { MOVE(player, MOVE_SEED_FLARE, WITH_RNG(RNG_SECONDARY_EFFECT, FALSE)); } + TURN { MOVE(player, MOVE_FUTURE_SIGHT); } + TURN { SWITCH(player, 1); } + TURN { } + TURN { } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SEED_FLARE, player); + HP_BAR(opponent, captureDamage: &seedFlareDmg); + ANIMATION(ANIM_TYPE_MOVE, MOVE_FUTURE_SIGHT, player); + MESSAGE("Foe Regice took the Future Sight attack!"); + HP_BAR(opponent, captureDamage: &futureSightDmg); + } THEN { + EXPECT_EQ(seedFlareDmg, futureSightDmg); + } +} + +SINGLE_BATTLE_TEST("Future Sight is not boosted by Life Orb is original user if not on the field") +{ + s16 seedFlareDmg; + s16 futureSightDmg; + + GIVEN { + PLAYER(SPECIES_PIKACHU); + PLAYER(SPECIES_RAICHU) { Item(ITEM_LIFE_ORB); } + OPPONENT(SPECIES_REGICE); + } WHEN { + TURN { MOVE(player, MOVE_SEED_FLARE, WITH_RNG(RNG_SECONDARY_EFFECT, FALSE)); } + TURN { MOVE(player, MOVE_FUTURE_SIGHT); } + TURN { SWITCH(player, 1); } + TURN { } + TURN { } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SEED_FLARE, player); + HP_BAR(opponent, captureDamage: &seedFlareDmg); + ANIMATION(ANIM_TYPE_MOVE, MOVE_FUTURE_SIGHT, player); + MESSAGE("Foe Regice took the Future Sight attack!"); + HP_BAR(opponent, captureDamage: &futureSightDmg); + NOT MESSAGE("Raichu was hurt by its Life Orb!"); + } THEN { + EXPECT_EQ(seedFlareDmg, futureSightDmg); + } +} + +SINGLE_BATTLE_TEST("Future Sight receives STAB from party mon") +{ + s16 seedFlareDmg; + s16 futureSightDmg; + + GIVEN { + PLAYER(SPECIES_RALTS); + PLAYER(SPECIES_RAICHU); + OPPONENT(SPECIES_REGICE); + } WHEN { + TURN { MOVE(player, MOVE_SEED_FLARE, WITH_RNG(RNG_SECONDARY_EFFECT, FALSE)); } + TURN { MOVE(player, MOVE_FUTURE_SIGHT); } + TURN { SWITCH(player, 1); } + TURN { } + TURN { } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SEED_FLARE, player); + HP_BAR(opponent, captureDamage: &seedFlareDmg); + ANIMATION(ANIM_TYPE_MOVE, MOVE_FUTURE_SIGHT, player); + HP_BAR(opponent, captureDamage: &futureSightDmg); + } THEN { + EXPECT_MUL_EQ(seedFlareDmg, Q_4_12(1.5), futureSightDmg); + } +} + +SINGLE_BATTLE_TEST("Future Sight is affected by type effectiveness") +{ + GIVEN { + PLAYER(SPECIES_PIKACHU); + PLAYER(SPECIES_RAICHU); + OPPONENT(SPECIES_HOUNDOOM); + } WHEN { + TURN { MOVE(player, MOVE_SEED_FLARE, WITH_RNG(RNG_SECONDARY_EFFECT, FALSE)); } + TURN { MOVE(player, MOVE_FUTURE_SIGHT); } + TURN { SWITCH(player, 1); } + TURN { } + TURN { } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SEED_FLARE, player); + HP_BAR(opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_FUTURE_SIGHT, player); + MESSAGE("Foe Houndoom took the Future Sight attack!"); + MESSAGE("It doesn't affect Foe Houndoom…"); + NOT HP_BAR(opponent); + } +} + +SINGLE_BATTLE_TEST("Future Sight will miss timing if target faints before it is about to get hit") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(player, MOVE_FUTURE_SIGHT); } + TURN { MOVE(player, MOVE_CELEBRATE); } + TURN { MOVE(player, MOVE_CELEBRATE); MOVE(opponent, MOVE_MEMENTO); SEND_OUT(opponent, 1); } + TURN { } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_FUTURE_SIGHT, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_MEMENTO, opponent); + MESSAGE("Foe Wobbuffet fainted!"); + MESSAGE("2 sent out Wynaut!"); + NOT MESSAGE("Foe Wynaut took the Future Sight attack!"); + } +} From 5d9f78bcb5f286f39f30e758405eb113084fe09a Mon Sep 17 00:00:00 2001 From: Alex <93446519+AlexOn1ine@users.noreply.github.com> Date: Thu, 11 Apr 2024 10:42:55 +0200 Subject: [PATCH 35/37] Fixes bug preventing Belch from usage after Stuff Cheeks (#4376) --- src/battle_script_commands.c | 1 + test/battle/move_effect/stuff_cheeks.c | 25 +++++++++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index b61508fd95..d91f1d35d2 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -10391,6 +10391,7 @@ static void Cmd_various(void) if (cmd->fromBattler) gLastUsedItem = gBattleMons[battler].item; + gBattleStruct->ateBerry[battler & BIT_SIDE] |= gBitTable[gBattlerPartyIndexes[battler]]; gBattleScripting.battler = gEffectBattler = gBattlerTarget = battler; // Cover all berry effect battler cases. e.g. ChangeStatBuffs uses target ID if (ItemBattleEffects(ITEMEFFECT_USE_LAST_ITEM, battler, FALSE)) return; diff --git a/test/battle/move_effect/stuff_cheeks.c b/test/battle/move_effect/stuff_cheeks.c index c9a8b325e2..a7a4ab1d34 100644 --- a/test/battle/move_effect/stuff_cheeks.c +++ b/test/battle/move_effect/stuff_cheeks.c @@ -104,3 +104,28 @@ SINGLE_BATTLE_TEST("Stuff Cheeks fails if the user's berry is removed before the } } +SINGLE_BATTLE_TEST("Belch cannot be used if the user has not eaten a berry") +{ + u16 item = 0; + PARAMETRIZE { item = ITEM_NONE; } + PARAMETRIZE { item = ITEM_ORAN_BERRY; } + GIVEN { + PLAYER(SPECIES_SKWOVET) { Item(item); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + if (item == ITEM_NONE) + TURN { MOVE(player, MOVE_BELCH, allowed: FALSE); MOVE(player, MOVE_CELEBRATE); } + else { + TURN { MOVE(player, MOVE_STUFF_CHEEKS); } + TURN { MOVE(player, MOVE_BELCH); } + } + } SCENE { + if (item == ITEM_NONE) { + ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, player); + } + else { + ANIMATION(ANIM_TYPE_MOVE, MOVE_STUFF_CHEEKS, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_BELCH, player); + } + } +} From ee3a577240863bbfdf2d79f67010be883872ef3d Mon Sep 17 00:00:00 2001 From: Alex <93446519+AlexOn1ine@users.noreply.github.com> Date: Thu, 11 Apr 2024 21:34:11 +0200 Subject: [PATCH 36/37] Fixes givemon moves not defaulting to none (#4377) --- src/script_pokemon_util.c | 8 +++++--- test/pokemon.c | 16 ++++++++++++++++ 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/src/script_pokemon_util.c b/src/script_pokemon_util.c index a0bc7d8e16..31e40fa31a 100644 --- a/src/script_pokemon_util.c +++ b/src/script_pokemon_util.c @@ -347,7 +347,9 @@ u32 ScriptGiveMonParameterized(u16 species, u8 level, u16 item, u8 ball, u8 natu // moves for (i = 0; i < MAX_MON_MOVES; i++) { - if (moves[i] == MOVE_NONE || moves[i] >= MOVES_COUNT) + if (moves[0] == MOVE_NONE) + break; + if (moves[i] >= MOVES_COUNT) continue; SetMonMoveSlot(&mon, moves[i], i); } @@ -400,7 +402,7 @@ u32 ScriptGiveMonParameterized(u16 species, u8 level, u16 item, u8 ball, u8 natu } // set pokédex flags - nationalDexNum = SpeciesToNationalPokedexNum(species); + nationalDexNum = SpeciesToNationalPokedexNum(species); switch (sentToPc) { case MON_GIVEN_TO_PARTY: @@ -514,7 +516,7 @@ void Script_SetStatus1(struct ScriptContext *ctx) } } else - { + { SetMonData(&gPlayerParty[slot], MON_DATA_STATUS, &status1); } } diff --git a/test/pokemon.c b/test/pokemon.c index 7cd2ab5769..1ae655ab3c 100644 --- a/test/pokemon.c +++ b/test/pokemon.c @@ -193,6 +193,22 @@ TEST("givemon [simple]") EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_LEVEL), 100); } +TEST("givemon [moves]") +{ + ZeroPlayerPartyMons(); + + RUN_OVERWORLD_SCRIPT( + givemon SPECIES_WOBBUFFET, 100, move1=MOVE_TACKLE, move2=MOVE_SPLASH, move3=MOVE_NONE, move4=MOVE_NONE; + ); + + EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_SPECIES), SPECIES_WOBBUFFET); + EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_LEVEL), 100); + EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_MOVE1), MOVE_TACKLE); + EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_MOVE2), MOVE_SPLASH); + EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_MOVE3), MOVE_NONE); + EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_MOVE4), MOVE_NONE); +} + TEST("givemon [all]") { ZeroPlayerPartyMons(); From 35e04b84a82654b701f8ae21cad5ee1536109180 Mon Sep 17 00:00:00 2001 From: Alex <93446519+AlexOn1ine@users.noreply.github.com> Date: Fri, 12 Apr 2024 12:15:49 +0200 Subject: [PATCH 37/37] Fixes Cud Chuw (#4379) * Fixes Cud Chuw * small correction --- data/battle_scripts_1.s | 5 +-- src/battle_util.c | 8 +++-- test/battle/move_effect/cud_chuw.c | 49 ++++++++++++++++++++++++++++++ 3 files changed, 55 insertions(+), 7 deletions(-) create mode 100644 test/battle/move_effect/cud_chuw.c diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 6415dee69c..2e22c0df08 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -7055,10 +7055,7 @@ BattleScript_CudChewActivates:: pause B_WAIT_TIME_SHORTEST call BattleScript_AbilityPopUp setbyte sBERRY_OVERRIDE, 1 @ override the requirements for eating berries - consumeberry BS_TARGET, FALSE - orword gHitMarker, HITMARKER_IGNORE_BIDE | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE - healthbarupdate BS_ATTACKER - datahpupdate BS_ATTACKER + consumeberry BS_SCRIPTING, FALSE setbyte sBERRY_OVERRIDE, 0 end3 diff --git a/src/battle_util.c b/src/battle_util.c index 5a9e8e842a..e27049cba5 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -4942,10 +4942,12 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 } break; case ABILITY_CUD_CHEW: - if (ItemId_GetPocket(GetUsedHeldItem(battler)) == POCKET_BERRIES && gDisableStructs[battler].cudChew == TRUE) + if (gDisableStructs[battler].cudChew == TRUE) { - gLastUsedItem = gBattleStruct->usedHeldItems[battler][GetBattlerSide(battler)]; - gBattleStruct->usedHeldItems[battler][GetBattlerSide(battler)] = ITEM_NONE; + gBattleScripting.battler = battler; + gDisableStructs[battler].cudChew = FALSE; + gLastUsedItem = gBattleStruct->usedHeldItems[gBattlerPartyIndexes[battler]][GetBattlerSide(battler)]; + gBattleStruct->usedHeldItems[gBattlerPartyIndexes[battler]][GetBattlerSide(battler)] = ITEM_NONE; BattleScriptPushCursorAndCallback(BattleScript_CudChewActivates); effect++; } diff --git a/test/battle/move_effect/cud_chuw.c b/test/battle/move_effect/cud_chuw.c new file mode 100644 index 0000000000..ba59d355a4 --- /dev/null +++ b/test/battle/move_effect/cud_chuw.c @@ -0,0 +1,49 @@ +#include "global.h" +#include "test/battle.h" + +SINGLE_BATTLE_TEST("Cud Chuw will activate Kee Berry effect again on the next turn") +{ + GIVEN { + ASSUME(gItemsInfo[ITEM_KEE_BERRY].holdEffect == HOLD_EFFECT_KEE_BERRY); + ASSUME(gMovesInfo[MOVE_TACKLE].category == DAMAGE_CATEGORY_PHYSICAL); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_TAUROS_PALDEAN_COMBAT_BREED) { Ability(ABILITY_CUD_CHEW); Item(ITEM_KEE_BERRY); } + } WHEN { + TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_CELEBRATE);} + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + HP_BAR(opponent); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, player); + ABILITY_POPUP(opponent, ABILITY_CUD_CHEW); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); + } THEN { + EXPECT_EQ(opponent->statStages[STAT_DEF], DEFAULT_STAT_STAGE + 2); + } +} + +SINGLE_BATTLE_TEST("Cud Chuw will activate Oran Berry effect again on the next turn") +{ + GIVEN { + ASSUME(gItemsInfo[ITEM_ORAN_BERRY].holdEffect == HOLD_EFFECT_RESTORE_HP); + ASSUME(gItemsInfo[ITEM_ORAN_BERRY].holdEffectParam == 10); + ASSUME(gMovesInfo[MOVE_DRAGON_RAGE].effect == EFFECT_FIXED_DAMAGE_ARG); + ASSUME(gMovesInfo[MOVE_DRAGON_RAGE].argument == 40); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_TAUROS_PALDEAN_COMBAT_BREED) { MaxHP(60); HP(60); Ability(ABILITY_CUD_CHEW); Item(ITEM_ORAN_BERRY); } + } WHEN { + TURN { MOVE(player, MOVE_DRAGON_RAGE); } + TURN { MOVE(player, MOVE_CELEBRATE);} + TURN {} + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_DRAGON_RAGE, player); + HP_BAR(opponent); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, player); + ABILITY_POPUP(opponent, ABILITY_CUD_CHEW); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); + } THEN { + EXPECT_EQ(opponent->hp, 40); + } +}