From 5beec06d9d0056e0168a10bd6a8252e9259a1399 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Sat, 19 Aug 2023 17:20:53 -0400 Subject: [PATCH 01/36] Document Task_MapNamePopUpWindow --- src/map_name_popup.c | 97 ++++++++++++++++++++++++++++---------------- 1 file changed, 62 insertions(+), 35 deletions(-) diff --git a/src/map_name_popup.c b/src/map_name_popup.c index 93a2825833..7e5fbc9095 100644 --- a/src/map_name_popup.c +++ b/src/map_name_popup.c @@ -206,22 +206,45 @@ static bool8 StartMenu_ShowMapNamePopup(void) return TRUE; } +// States and data defines for Task_MapNamePopUpWindow +enum { + STATE_SLIDE_IN, + STATE_WAIT, + STATE_SLIDE_OUT, + STATE_UNUSED, + STATE_ERASE, + STATE_END, + STATE_PRINT, // For some reason the first state is numerically last. +}; + +#define POPUP_OFFSCREEN_Y 40 +#define POPUP_SLIDE_SPEED 2 + +#define tState data[0] +#define tOnscreenTimer data[1] +#define tYOffset data[2] +#define tIncomingPopUp data[3] +#define tPrintTimer data[4] + void ShowMapNamePopup(void) { if (FlagGet(FLAG_HIDE_MAP_NAME_POPUP) != TRUE) { if (!FuncIsActiveTask(Task_MapNamePopUpWindow)) { + // New pop up window sPopupTaskId = CreateTask(Task_MapNamePopUpWindow, 90); - SetGpuReg(REG_OFFSET_BG0VOFS, 40); - gTasks[sPopupTaskId].data[0] = 6; - gTasks[sPopupTaskId].data[2] = 40; + SetGpuReg(REG_OFFSET_BG0VOFS, POPUP_OFFSCREEN_Y); + gTasks[sPopupTaskId].tState = STATE_PRINT; + gTasks[sPopupTaskId].tYOffset = POPUP_OFFSCREEN_Y; } else { - if (gTasks[sPopupTaskId].data[0] != 2) - gTasks[sPopupTaskId].data[0] = 2; - gTasks[sPopupTaskId].data[3] = 1; + // There's already a pop up window running. + // Hurry the old pop up offscreen so the new one can appear. + if (gTasks[sPopupTaskId].tState != STATE_SLIDE_OUT) + gTasks[sPopupTaskId].tState = STATE_SLIDE_OUT; + gTasks[sPopupTaskId].tIncomingPopUp = TRUE; } } } @@ -230,61 +253,65 @@ static void Task_MapNamePopUpWindow(u8 taskId) { struct Task *task = &gTasks[taskId]; - switch (task->data[0]) + switch (task->tState) { - case 6: - task->data[4]++; - if (task->data[4] > 30) + case STATE_PRINT: + // Wait, then create and print the pop up window + if (++task->tPrintTimer > 30) { - task->data[0] = 0; - task->data[4] = 0; + task->tState = STATE_SLIDE_IN; + task->tPrintTimer = 0; ShowMapNamePopUpWindow(); } break; - case 0: - task->data[2] -= 2; - if (task->data[2] <= 0 ) + case STATE_SLIDE_IN: + // Slide the window onscreen. + task->tYOffset -= POPUP_SLIDE_SPEED; + if (task->tYOffset <= 0 ) { - task->data[2] = 0; - task->data[0] = 1; + task->tYOffset = 0; + task->tState = STATE_WAIT; gTasks[sPopupTaskId].data[1] = 0; } break; - case 1: - task->data[1]++; - if (task->data[1] > 120 ) + case STATE_WAIT: + // Wait while the window is fully onscreen. + if (++task->tOnscreenTimer > 120) { - task->data[1] = 0; - task->data[0] = 2; + task->tOnscreenTimer = 0; + task->tState = STATE_SLIDE_OUT; } break; - case 2: - task->data[2] += 2; - if (task->data[2] > 39) + case STATE_SLIDE_OUT: + // Slide the window offscreen. + task->tYOffset += POPUP_SLIDE_SPEED; + if (task->tYOffset >= POPUP_OFFSCREEN_Y) { - task->data[2] = 40; - if (task->data[3]) + task->tYOffset = POPUP_OFFSCREEN_Y; + if (task->tIncomingPopUp) { - task->data[0] = 6; - task->data[4] = 0; - task->data[3] = 0; + // A new pop up window is incoming, + // return to the first state to show it. + task->tState = STATE_PRINT; + task->tPrintTimer = 0; + task->tIncomingPopUp = FALSE; } else { - task->data[0] = 4; + task->tState = STATE_ERASE; return; } } break; - case 4: + case STATE_ERASE: ClearStdWindowAndFrame(GetMapNamePopUpWindowId(), TRUE); - task->data[0] = 5; + task->tState = STATE_END; break; - case 5: + case STATE_END: HideMapNamePopUpWindow(); return; } - SetGpuReg(REG_OFFSET_BG0VOFS, task->data[2]); + SetGpuReg(REG_OFFSET_BG0VOFS, task->tYOffset); } void HideMapNamePopUpWindow(void) From 6792028254dfb39111ea30f499ee27cefbc77d29 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Sun, 20 Aug 2023 01:18:44 -0400 Subject: [PATCH 02/36] Document title screen task data --- src/title_screen.c | 256 +++++++++++++++++++++++++++------------------ 1 file changed, 154 insertions(+), 102 deletions(-) diff --git a/src/title_screen.c b/src/title_screen.c index 87bf0d970e..12015b8bd8 100644 --- a/src/title_screen.c +++ b/src/title_screen.c @@ -23,6 +23,12 @@ #include "constants/rgb.h" #include "constants/songs.h" +enum { + TAG_VERSION = 1000, + TAG_PRESS_START_COPYRIGHT, + TAG_LOGO_SHINE, +}; + #define VERSION_BANNER_RIGHT_TILEOFFSET 64 #define VERSION_BANNER_LEFT_X 98 #define VERSION_BANNER_RIGHT_X 162 @@ -158,8 +164,8 @@ static const union AnimCmd *const sVersionBannerRightAnimTable[] = static const struct SpriteTemplate sVersionBannerLeftSpriteTemplate = { - .tileTag = 1000, - .paletteTag = 1000, + .tileTag = TAG_VERSION, + .paletteTag = TAG_VERSION, .oam = &sVersionBannerLeftOamData, .anims = sVersionBannerLeftAnimTable, .images = NULL, @@ -169,8 +175,8 @@ static const struct SpriteTemplate sVersionBannerLeftSpriteTemplate = static const struct SpriteTemplate sVersionBannerRightSpriteTemplate = { - .tileTag = 1000, - .paletteTag = 1000, + .tileTag = TAG_VERSION, + .paletteTag = TAG_VERSION, .oam = &sVersionBannerRightOamData, .anims = sVersionBannerRightAnimTable, .images = NULL, @@ -183,7 +189,7 @@ static const struct CompressedSpriteSheet sSpriteSheet_EmeraldVersion[] = { .data = gTitleScreenEmeraldVersionGfx, .size = 0x1000, - .tag = 1000 + .tag = TAG_VERSION }, {}, }; @@ -205,75 +211,80 @@ static const struct OamData sOamData_CopyrightBanner = .affineParam = 0, }; -static const union AnimCmd sCopyrightBannerAnim0[] = +static const union AnimCmd sAnim_PressStart_0[] = { ANIMCMD_FRAME(1, 4), ANIMCMD_END, }; -static const union AnimCmd sCopyrightBannerAnim1[] = +static const union AnimCmd sAnim_PressStart_1[] = { ANIMCMD_FRAME(5, 4), ANIMCMD_END, }; -static const union AnimCmd sCopyrightBannerAnim2[] = +static const union AnimCmd sAnim_PressStart_2[] = { ANIMCMD_FRAME(9, 4), ANIMCMD_END, }; -static const union AnimCmd sCopyrightBannerAnim3[] = +static const union AnimCmd sAnim_PressStart_3[] = { ANIMCMD_FRAME(13, 4), ANIMCMD_END, }; -static const union AnimCmd sCopyrightBannerAnim4[] = +static const union AnimCmd sAnim_PressStart_4[] = { ANIMCMD_FRAME(17, 4), ANIMCMD_END, }; -static const union AnimCmd sCopyrightBannerAnim5[] = +static const union AnimCmd sAnim_Copyright_0[] = { ANIMCMD_FRAME(21, 4), ANIMCMD_END, }; -static const union AnimCmd sCopyrightBannerAnim6[] = +static const union AnimCmd sAnim_Copyright_1[] = { ANIMCMD_FRAME(25, 4), ANIMCMD_END, }; -static const union AnimCmd sCopyrightBannerAnim7[] = +static const union AnimCmd sAnim_Copyright_2[] = { ANIMCMD_FRAME(29, 4), ANIMCMD_END, }; -static const union AnimCmd sCopyrightBannerAnim8[] = +static const union AnimCmd sAnim_Copyright_3[] = { ANIMCMD_FRAME(33, 4), ANIMCMD_END, }; -static const union AnimCmd sCopyrightBannerAnim9[] = +static const union AnimCmd sAnim_Copyright_4[] = { ANIMCMD_FRAME(37, 4), ANIMCMD_END, }; -static const union AnimCmd *const sStartCopyrightBannerAnimTable[] = +// The "Press Start" and copyright graphics are each 5 32x8 segments long +#define NUM_PRESS_START_FRAMES 5 +#define NUM_COPYRIGHT_FRAMES 5 + +static const union AnimCmd *const sStartCopyrightBannerAnimTable[NUM_PRESS_START_FRAMES + NUM_COPYRIGHT_FRAMES] = { - sCopyrightBannerAnim0, - sCopyrightBannerAnim1, - sCopyrightBannerAnim2, - sCopyrightBannerAnim3, - sCopyrightBannerAnim4, - sCopyrightBannerAnim5, - sCopyrightBannerAnim6, - sCopyrightBannerAnim7, - sCopyrightBannerAnim8, - sCopyrightBannerAnim9, + sAnim_PressStart_0, + sAnim_PressStart_1, + sAnim_PressStart_2, + sAnim_PressStart_3, + sAnim_PressStart_4, + [NUM_PRESS_START_FRAMES] = + sAnim_Copyright_0, + sAnim_Copyright_1, + sAnim_Copyright_2, + sAnim_Copyright_3, + sAnim_Copyright_4, }; static const struct SpriteTemplate sStartCopyrightBannerSpriteTemplate = { - .tileTag = 1001, - .paletteTag = 1001, + .tileTag = TAG_PRESS_START_COPYRIGHT, + .paletteTag = TAG_PRESS_START_COPYRIGHT, .oam = &sOamData_CopyrightBanner, .anims = sStartCopyrightBannerAnimTable, .images = NULL, @@ -286,7 +297,7 @@ static const struct CompressedSpriteSheet sSpriteSheet_PressStart[] = { .data = gTitleScreenPressStartGfx, .size = 0x520, - .tag = 1001 + .tag = TAG_PRESS_START_COPYRIGHT }, {}, }; @@ -295,7 +306,7 @@ static const struct SpritePalette sSpritePalette_PressStart[] = { { .data = gTitleScreenPressStartPal, - .tag = 1001 + .tag = TAG_PRESS_START_COPYRIGHT }, {}, }; @@ -330,8 +341,8 @@ static const union AnimCmd *const sPokemonLogoShineAnimTable[] = static const struct SpriteTemplate sPokemonLogoShineSpriteTemplate = { - .tileTag = 1002, - .paletteTag = 1001, + .tileTag = TAG_LOGO_SHINE, + .paletteTag = TAG_PRESS_START_COPYRIGHT, .oam = &sPokemonLogoShineOamData, .anims = sPokemonLogoShineAnimTable, .images = NULL, @@ -344,15 +355,25 @@ static const struct CompressedSpriteSheet sPokemonLogoShineSpriteSheet[] = { .data = sTitleScreenLogoShineGfx, .size = 0x800, - .tag = 1002 + .tag = TAG_LOGO_SHINE }, {}, }; -// code +// Task data for the main title screen tasks (Task_TitleScreenPhase#) +#define tCounter data[0] +#define tSkipToNext data[1] +#define tPointless data[2] // Incremented but never used to do anything. +#define tBg2Y data[3] +#define tBg1Y data[4] + +// Sprite data for sVersionBannerLeftSpriteTemplate / sVersionBannerRightSpriteTemplate +#define sAlphaBlendIdx data[0] +#define sParentTaskId data[1] + static void SpriteCB_VersionBannerLeft(struct Sprite *sprite) { - if (gTasks[sprite->data[1]].data[1] != 0) + if (gTasks[sprite->sParentTaskId].tSkipToNext) { sprite->oam.objMode = ST_OAM_OBJ_NORMAL; sprite->y = VERSION_BANNER_Y_GOAL; @@ -361,15 +382,15 @@ static void SpriteCB_VersionBannerLeft(struct Sprite *sprite) { if (sprite->y != VERSION_BANNER_Y_GOAL) sprite->y++; - if (sprite->data[0] != 0) - sprite->data[0]--; - SetGpuReg(REG_OFFSET_BLDALPHA, gTitleScreenAlphaBlend[sprite->data[0]]); + if (sprite->sAlphaBlendIdx != 0) + sprite->sAlphaBlendIdx--; + SetGpuReg(REG_OFFSET_BLDALPHA, gTitleScreenAlphaBlend[sprite->sAlphaBlendIdx]); } } static void SpriteCB_VersionBannerRight(struct Sprite *sprite) { - if (gTasks[sprite->data[1]].data[1] != 0) + if (gTasks[sprite->sParentTaskId].tSkipToNext) { sprite->oam.objMode = ST_OAM_OBJ_NORMAL; sprite->y = VERSION_BANNER_Y_GOAL; @@ -381,13 +402,16 @@ static void SpriteCB_VersionBannerRight(struct Sprite *sprite) } } +// Sprite data for SpriteCB_PressStartCopyrightBanner +#define sAnimate data[0] +#define sTimer data[1] + static void SpriteCB_PressStartCopyrightBanner(struct Sprite *sprite) { - if (sprite->data[0] == 1) + if (sprite->sAnimate == TRUE) { - sprite->data[1]++; // Alternate between hidden and shown every 16th frame - if (sprite->data[1] & 16) + if (++sprite->sTimer & 16) sprite->invisible = FALSE; else sprite->invisible = TRUE; @@ -404,11 +428,11 @@ static void CreatePressStartBanner(s16 x, s16 y) u8 spriteId; x -= 64; - for (i = 0; i < 5; i++, x += 32) + for (i = 0; i < NUM_PRESS_START_FRAMES; i++, x += 32) { spriteId = CreateSprite(&sStartCopyrightBannerSpriteTemplate, x, y, 0); StartSpriteAnim(&gSprites[spriteId], i); - gSprites[spriteId].data[0] = 1; + gSprites[spriteId].sAnimate = TRUE; } } @@ -418,93 +442,122 @@ static void CreateCopyrightBanner(s16 x, s16 y) u8 spriteId; x -= 64; - for (i = 0; i < 5; i++, x += 32) + for (i = 0; i < NUM_COPYRIGHT_FRAMES; i++, x += 32) { spriteId = CreateSprite(&sStartCopyrightBannerSpriteTemplate, x, y, 0); - StartSpriteAnim(&gSprites[spriteId], i + 5); + StartSpriteAnim(&gSprites[spriteId], i + NUM_PRESS_START_FRAMES); } } +#undef sAnimate +#undef sTimer + +// Defines for SpriteCB_PokemonLogoShine +enum { + SHINE_MODE_SINGLE_NO_BG_COLOR, + SHINE_MODE_DOUBLE, + SHINE_MODE_SINGLE, +}; + +#define SHINE_SPEED 4 + +#define sMode data[0] +#define sBgColor data[1] + static void SpriteCB_PokemonLogoShine(struct Sprite *sprite) { if (sprite->x < DISPLAY_WIDTH + 32) { - if (sprite->data[0]) // Flash background + // In any mode except SHINE_MODE_SINGLE_NO_BG_COLOR the background + // color will change, in addition to the shine sprite moving. + if (sprite->sMode != SHINE_MODE_SINGLE_NO_BG_COLOR) { u16 backgroundColor; if (sprite->x < DISPLAY_WIDTH / 2) { // Brighten background color - if (sprite->data[1] < 31) - sprite->data[1]++; - if (sprite->data[1] < 31) - sprite->data[1]++; + if (sprite->sBgColor < 31) + sprite->sBgColor++; + if (sprite->sBgColor < 31) + sprite->sBgColor++; } else { // Darken background color - if (sprite->data[1] != 0) - sprite->data[1]--; - if (sprite->data[1] != 0) - sprite->data[1]--; + if (sprite->sBgColor != 0) + sprite->sBgColor--; + if (sprite->sBgColor != 0) + sprite->sBgColor--; } - backgroundColor = _RGB(sprite->data[1], sprite->data[1], sprite->data[1]); - if (sprite->x == DISPLAY_WIDTH / 2 + 12 - || sprite->x == DISPLAY_WIDTH / 2 + 16 - || sprite->x == DISPLAY_WIDTH / 2 + 20 - || sprite->x == DISPLAY_WIDTH / 2 + 24) + backgroundColor = _RGB(sprite->sBgColor, sprite->sBgColor, sprite->sBgColor); + + // Flash the background green for 4 frames of movement. + // Otherwise use the updating color. + if (sprite->x == DISPLAY_WIDTH / 2 + (3 * SHINE_SPEED) + || sprite->x == DISPLAY_WIDTH / 2 + (4 * SHINE_SPEED) + || sprite->x == DISPLAY_WIDTH / 2 + (5 * SHINE_SPEED) + || sprite->x == DISPLAY_WIDTH / 2 + (6 * SHINE_SPEED)) gPlttBufferFaded[0] = RGB(24, 31, 12); else gPlttBufferFaded[0] = backgroundColor; } - sprite->x += 4; + + sprite->x += SHINE_SPEED; } else { + // Sprite has moved fully offscreen gPlttBufferFaded[0] = RGB_BLACK; DestroySprite(sprite); } } -static void SpriteCB_PokemonLogoShine2(struct Sprite *sprite) +static void SpriteCB_PokemonLogoShine_Fast(struct Sprite *sprite) { if (sprite->x < DISPLAY_WIDTH + 32) - sprite->x += 8; + sprite->x += SHINE_SPEED * 2; else DestroySprite(sprite); } -static void StartPokemonLogoShine(u8 flashBg) +static void StartPokemonLogoShine(u8 mode) { u8 spriteId; - switch (flashBg) + switch (mode) { - case 0: - case 2: + case SHINE_MODE_SINGLE_NO_BG_COLOR: + case SHINE_MODE_SINGLE: + // Create one regular shine sprite. + // If mode is SHINE_MODE_SINGLE it will also change the background color. spriteId = CreateSprite(&sPokemonLogoShineSpriteTemplate, 0, 68, 0); gSprites[spriteId].oam.objMode = ST_OAM_OBJ_WINDOW; - gSprites[spriteId].data[0] = flashBg; + gSprites[spriteId].sMode = mode; break; - case 1: + case SHINE_MODE_DOUBLE: + // Create an invisible sprite with mode set to update the background color spriteId = CreateSprite(&sPokemonLogoShineSpriteTemplate, 0, 68, 0); gSprites[spriteId].oam.objMode = ST_OAM_OBJ_WINDOW; - gSprites[spriteId].data[0] = flashBg; + gSprites[spriteId].sMode = mode; gSprites[spriteId].invisible = TRUE; + // Create two faster shine sprites spriteId = CreateSprite(&sPokemonLogoShineSpriteTemplate, 0, 68, 0); - gSprites[spriteId].callback = SpriteCB_PokemonLogoShine2; + gSprites[spriteId].callback = SpriteCB_PokemonLogoShine_Fast; gSprites[spriteId].oam.objMode = ST_OAM_OBJ_WINDOW; spriteId = CreateSprite(&sPokemonLogoShineSpriteTemplate, -80, 68, 0); - gSprites[spriteId].callback = SpriteCB_PokemonLogoShine2; + gSprites[spriteId].callback = SpriteCB_PokemonLogoShine_Fast; gSprites[spriteId].oam.objMode = ST_OAM_OBJ_WINDOW; break; } } +#undef sMode +#undef sBgColor + static void VBlankCB(void) { ScanlineEffect_InitHBlankDmaTransfer(); @@ -514,9 +567,6 @@ static void VBlankCB(void) SetGpuReg(REG_OFFSET_BG1VOFS, gBattle_BG1_Y); } -#define tCounter data[0] -#define tSkipToNext data[1] - void CB2_InitTitleScreen(void) { switch (gMain.state) @@ -573,13 +623,13 @@ void CB2_InitTitleScreen(void) gTasks[taskId].tCounter = 256; gTasks[taskId].tSkipToNext = FALSE; - gTasks[taskId].data[2] = -16; - gTasks[taskId].data[3] = -32; + gTasks[taskId].tPointless = -16; + gTasks[taskId].tBg2Y = -32; gMain.state = 3; break; } case 3: - BeginNormalPaletteFade(PALETTES_ALL, 1, 0x10, 0, RGB_WHITEALPHA); + BeginNormalPaletteFade(PALETTES_ALL, 1, 16, 0, RGB_WHITEALPHA); SetVBlankCallback(VBlankCB); gMain.state = 4; break; @@ -614,7 +664,7 @@ void CB2_InitTitleScreen(void) case 5: if (!UpdatePaletteFade()) { - StartPokemonLogoShine(0); + StartPokemonLogoShine(SHINE_MODE_SINGLE_NO_BG_COLOR); ScanlineEffect_InitWave(0, DISPLAY_HEIGHT, 4, 4, 0, SCANLINE_EFFECT_REG_BG1HOFS, TRUE); SetMainCallback2(MainCB2); } @@ -634,7 +684,7 @@ static void MainCB2(void) static void Task_TitleScreenPhase1(u8 taskId) { // Skip to next phase when A, B, Start, or Select is pressed - if (JOY_NEW(A_B_START_SELECT) || gTasks[taskId].data[1] != 0) + if (JOY_NEW(A_B_START_SELECT) || gTasks[taskId].tSkipToNext) { gTasks[taskId].tSkipToNext = TRUE; gTasks[taskId].tCounter = 0; @@ -644,9 +694,9 @@ static void Task_TitleScreenPhase1(u8 taskId) { u16 frameNum = gTasks[taskId].tCounter; if (frameNum == 176) - StartPokemonLogoShine(1); + StartPokemonLogoShine(SHINE_MODE_DOUBLE); else if (frameNum == 64) - StartPokemonLogoShine(2); + StartPokemonLogoShine(SHINE_MODE_SINGLE); gTasks[taskId].tCounter--; } @@ -663,18 +713,21 @@ static void Task_TitleScreenPhase1(u8 taskId) // Create left side of version banner spriteId = CreateSprite(&sVersionBannerLeftSpriteTemplate, VERSION_BANNER_LEFT_X, VERSION_BANNER_Y, 0); - gSprites[spriteId].data[0] = 64; - gSprites[spriteId].data[1] = taskId; + gSprites[spriteId].sAlphaBlendIdx = ARRAY_COUNT(gTitleScreenAlphaBlend); + gSprites[spriteId].sParentTaskId = taskId; // Create right side of version banner spriteId = CreateSprite(&sVersionBannerRightSpriteTemplate, VERSION_BANNER_RIGHT_X, VERSION_BANNER_Y, 0); - gSprites[spriteId].data[1] = taskId; + gSprites[spriteId].sParentTaskId = taskId; gTasks[taskId].tCounter = 144; gTasks[taskId].func = Task_TitleScreenPhase2; } } +#undef sParentTaskId +#undef sAlphaBlendIdx + // Create "Press Start" and copyright banners, and slide Pokemon logo up static void Task_TitleScreenPhase2(u8 taskId) { @@ -705,31 +758,31 @@ static void Task_TitleScreenPhase2(u8 taskId) | DISPCNT_OBJ_ON); CreatePressStartBanner(START_BANNER_X, 108); CreateCopyrightBanner(START_BANNER_X, 148); - gTasks[taskId].data[4] = 0; + gTasks[taskId].tBg1Y = 0; gTasks[taskId].func = Task_TitleScreenPhase3; } - if (!(gTasks[taskId].tCounter & 3) && gTasks[taskId].data[2] != 0) - gTasks[taskId].data[2]++; - if (!(gTasks[taskId].tCounter & 1) && gTasks[taskId].data[3] != 0) - gTasks[taskId].data[3]++; + if (!(gTasks[taskId].tCounter & 3) && gTasks[taskId].tPointless != 0) + gTasks[taskId].tPointless++; + if (!(gTasks[taskId].tCounter & 1) && gTasks[taskId].tBg2Y != 0) + gTasks[taskId].tBg2Y++; // Slide Pokemon logo up - yPos = gTasks[taskId].data[3] * 256; + yPos = gTasks[taskId].tBg2Y * 256; SetGpuReg(REG_OFFSET_BG2Y_L, yPos); SetGpuReg(REG_OFFSET_BG2Y_H, yPos / 0x10000); - gTasks[taskId].data[5] = 15; - gTasks[taskId].data[6] = 6; + gTasks[taskId].data[5] = 15; // Unused + gTasks[taskId].data[6] = 6; // Unused } // Show Rayquaza silhouette and process main title screen input static void Task_TitleScreenPhase3(u8 taskId) { - if ((JOY_NEW(A_BUTTON)) || (JOY_NEW(START_BUTTON))) + if (JOY_NEW(A_BUTTON) || JOY_NEW(START_BUTTON)) { FadeOutBGM(4); - BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 0x10, RGB_WHITEALPHA); + BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, RGB_WHITEALPHA); SetMainCallback2(CB2_GoToMainMenu); } else if (JOY_HELD(CLEAR_SAVE_BUTTON_COMBO) == CLEAR_SAVE_BUTTON_COMBO) @@ -740,30 +793,29 @@ static void Task_TitleScreenPhase3(u8 taskId) && CanResetRTC() == TRUE) { FadeOutBGM(4); - BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 0x10, RGB_BLACK); + BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, RGB_BLACK); SetMainCallback2(CB2_GoToResetRtcScreen); } else if (JOY_HELD(BERRY_UPDATE_BUTTON_COMBO) == BERRY_UPDATE_BUTTON_COMBO) { FadeOutBGM(4); - BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 0x10, RGB_BLACK); + BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, RGB_BLACK); SetMainCallback2(CB2_GoToBerryFixScreen); } else { SetGpuReg(REG_OFFSET_BG2Y_L, 0); SetGpuReg(REG_OFFSET_BG2Y_H, 0); - gTasks[taskId].tCounter++; - if (gTasks[taskId].tCounter & 1) + if (++gTasks[taskId].tCounter & 1) { - gTasks[taskId].data[4]++; - gBattle_BG1_Y = gTasks[taskId].data[4] / 2; + gTasks[taskId].tBg1Y++; + gBattle_BG1_Y = gTasks[taskId].tBg1Y / 2; gBattle_BG1_X = 0; } UpdateLegendaryMarkingColor(gTasks[taskId].tCounter); if ((gMPlayInfo_BGM.status & 0xFFFF) == 0) { - BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 0x10, RGB_WHITEALPHA); + BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, RGB_WHITEALPHA); SetMainCallback2(CB2_GoToCopyrightScreen); } } From 56ff4ce998225b7ff0f99db466022e29f8097aba Mon Sep 17 00:00:00 2001 From: GriffinR Date: Sun, 20 Aug 2023 01:35:51 -0400 Subject: [PATCH 03/36] Add defines for field effect sprite data, misc task data --- src/field_effect_helpers.c | 686 +++++++++++++++++++------------------ src/use_pokeblock.c | 37 +- 2 files changed, 369 insertions(+), 354 deletions(-) diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 9421aaf27a..237e543dee 100755 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -32,8 +32,12 @@ static void UpdateBobbingEffect(struct ObjectEvent *, struct Sprite *, struct Sp static void SpriteCB_UnderwaterSurfBlob(struct Sprite *); static u32 ShowDisguiseFieldEffect(u8, u8, u8); -// Used by several field effects to determine which of a group it is -#define sFldEff data[1] +// Data used by all the field effects that share UpdateJumpImpactEffect +#define sJumpElevation data[0] +#define sJumpFldEff data[1] + +// Data used by all the field effects that share WaitFieldEffectSpriteAnim +#define sWaitFldEff data[0] #define sReflectionObjEventId data[0] #define sReflectionObjEventLocalId data[1] @@ -44,7 +48,7 @@ void SetUpReflection(struct ObjectEvent *objectEvent, struct Sprite *sprite, boo { struct Sprite *reflectionSprite; - reflectionSprite = &gSprites[CreateCopySpriteAt(sprite, sprite->x, sprite->y, 0x98)]; + reflectionSprite = &gSprites[CreateCopySpriteAt(sprite, sprite->x, sprite->y, 152)]; reflectionSprite->callback = UpdateObjectReflectionSprite; reflectionSprite->oam.priority = 3; reflectionSprite->oam.paletteNum = gReflectionEffectPaletteMap[reflectionSprite->oam.paletteNum]; @@ -92,9 +96,7 @@ static void LoadObjectReflectionPalette(struct ObjectEvent *objectEvent, struct static void LoadObjectRegularReflectionPalette(struct ObjectEvent *objectEvent, u8 paletteIndex) { - const struct ObjectEventGraphicsInfo *graphicsInfo; - - graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId); + const struct ObjectEventGraphicsInfo *graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId); if (graphicsInfo->reflectionPaletteTag != OBJ_EVENT_PAL_TAG_NONE) { if (graphicsInfo->paletteSlot == PALSLOT_PLAYER) @@ -111,9 +113,7 @@ static void LoadObjectRegularReflectionPalette(struct ObjectEvent *objectEvent, // This is so the sprite blends in with the dark water metatile underneath the bridge. static void LoadObjectHighBridgeReflectionPalette(struct ObjectEvent *objectEvent, u8 paletteNum) { - const struct ObjectEventGraphicsInfo *graphicsInfo; - - graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId); + const struct ObjectEventGraphicsInfo *graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId); if (graphicsInfo->reflectionPaletteTag != OBJ_EVENT_PAL_TAG_NONE) { PatchObjectPalette(graphicsInfo->reflectionPaletteTag, paletteNum); @@ -123,11 +123,8 @@ static void LoadObjectHighBridgeReflectionPalette(struct ObjectEvent *objectEven static void UpdateObjectReflectionSprite(struct Sprite *reflectionSprite) { - struct ObjectEvent *objectEvent; - struct Sprite *mainSprite; - - objectEvent = &gObjectEvents[reflectionSprite->sReflectionObjEventId]; - mainSprite = &gSprites[objectEvent->spriteId]; + struct ObjectEvent *objectEvent = &gObjectEvents[reflectionSprite->sReflectionObjEventId]; + struct Sprite *mainSprite = &gSprites[objectEvent->spriteId]; if (!objectEvent->active || !objectEvent->hasReflection || objectEvent->localId != reflectionSprite->sReflectionObjEventLocalId) { reflectionSprite->inUse = FALSE; @@ -172,15 +169,15 @@ static void UpdateObjectReflectionSprite(struct Sprite *reflectionSprite) extern const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[]; +#define sPrevX data[0] +#define sPrevY data[1] + u8 CreateWarpArrowSprite(void) { - u8 spriteId; - struct Sprite *sprite; - - spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_ARROW], 0, 0, 0x52); + u8 spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_ARROW], 0, 0, 82); if (spriteId != MAX_SPRITES) { - sprite = &gSprites[spriteId]; + struct Sprite *sprite = &gSprites[spriteId]; sprite->oam.priority = 1; sprite->coordOffsetEnabled = TRUE; sprite->invisible = TRUE; @@ -195,24 +192,24 @@ void SetSpriteInvisible(u8 spriteId) void ShowWarpArrowSprite(u8 spriteId, u8 direction, s16 x, s16 y) { - s16 x2; - s16 y2; - struct Sprite *sprite; - - sprite = &gSprites[spriteId]; - if (sprite->invisible || sprite->data[0] != x || sprite->data[1] != y) + struct Sprite *sprite = &gSprites[spriteId]; + if (sprite->invisible || sprite->sPrevX != x || sprite->sPrevY != y) { + s16 x2, y2; SetSpritePosToMapCoords(x, y, &x2, &y2); sprite = &gSprites[spriteId]; sprite->x = x2 + 8; sprite->y = y2 + 8; sprite->invisible = FALSE; - sprite->data[0] = x; - sprite->data[1] = y; + sprite->sPrevX = x; + sprite->sPrevY = y; StartSpriteAnim(sprite, direction - 1); } } +#undef sPrevX +#undef sPrevY + static const u8 sShadowEffectTemplateIds[] = { FLDEFFOBJ_SHADOW_S, FLDEFFOBJ_SHADOW_M, @@ -227,22 +224,24 @@ const u16 gShadowVerticalOffsets[] = { 16 }; +// Sprite data for FLDEFF_SHADOW +#define sLocalId data[0] +#define sMapNum data[1] +#define sMapGroup data[2] +#define sYOffset data[3] + u32 FldEff_Shadow(void) { - u8 objectEventId; - const struct ObjectEventGraphicsInfo *graphicsInfo; - u8 spriteId; - - objectEventId = GetObjectEventIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); - graphicsInfo = GetObjectEventGraphicsInfo(gObjectEvents[objectEventId].graphicsId); - spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[sShadowEffectTemplateIds[graphicsInfo->shadowSize]], 0, 0, 0x94); + u8 objectEventId = GetObjectEventIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); + const struct ObjectEventGraphicsInfo *graphicsInfo = GetObjectEventGraphicsInfo(gObjectEvents[objectEventId].graphicsId); + u8 spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[sShadowEffectTemplateIds[graphicsInfo->shadowSize]], 0, 0, 148); if (spriteId != MAX_SPRITES) { gSprites[spriteId].coordOffsetEnabled = TRUE; - gSprites[spriteId].data[0] = gFieldEffectArguments[0]; - gSprites[spriteId].data[1] = gFieldEffectArguments[1]; - gSprites[spriteId].data[2] = gFieldEffectArguments[2]; - gSprites[spriteId].data[3] = (graphicsInfo->height >> 1) - gShadowVerticalOffsets[graphicsInfo->shadowSize]; + gSprites[spriteId].sLocalId = gFieldEffectArguments[0]; + gSprites[spriteId].sMapNum = gFieldEffectArguments[1]; + gSprites[spriteId].sMapGroup = gFieldEffectArguments[2]; + gSprites[spriteId].sYOffset = (graphicsInfo->height >> 1) - gShadowVerticalOffsets[graphicsInfo->shadowSize]; } return 0; } @@ -250,20 +249,18 @@ u32 FldEff_Shadow(void) void UpdateShadowFieldEffect(struct Sprite *sprite) { u8 objectEventId; - struct ObjectEvent *objectEvent; - struct Sprite *linkedSprite; - if (TryGetObjectEventIdByLocalIdAndMap(sprite->data[0], sprite->data[1], sprite->data[2], &objectEventId)) + if (TryGetObjectEventIdByLocalIdAndMap(sprite->sLocalId, sprite->sMapNum, sprite->sMapGroup, &objectEventId)) { FieldEffectStop(sprite, FLDEFF_SHADOW); } else { - objectEvent = &gObjectEvents[objectEventId]; - linkedSprite = &gSprites[objectEvent->spriteId]; + struct ObjectEvent *objectEvent = &gObjectEvents[objectEventId]; + struct Sprite *linkedSprite = &gSprites[objectEvent->spriteId]; sprite->oam.priority = linkedSprite->oam.priority; sprite->x = linkedSprite->x; - sprite->y = linkedSprite->y + sprite->data[3]; + sprite->y = linkedSprite->y + sprite->sYOffset; if (!objectEvent->active || !objectEvent->hasShadow || MetatileBehavior_IsPokeGrass(objectEvent->currentMetatileBehavior) || MetatileBehavior_IsSurfableWaterOrUnderwater(objectEvent->currentMetatileBehavior) @@ -276,6 +273,11 @@ void UpdateShadowFieldEffect(struct Sprite *sprite) } } +#undef sLocalId +#undef sMapNum +#undef sMapGroup +#undef sYOffset + // Sprite data for FLDEFF_TALL_GRASS and FLDEFF_LONG_GRASS #define sElevation data[0] #define sX data[1] @@ -288,18 +290,14 @@ void UpdateShadowFieldEffect(struct Sprite *sprite) u32 FldEff_TallGrass(void) { - s16 x; - s16 y; u8 spriteId; - struct Sprite *sprite; - - x = gFieldEffectArguments[0]; - y = gFieldEffectArguments[1]; + s16 x = gFieldEffectArguments[0]; + s16 y = gFieldEffectArguments[1]; SetSpritePosToOffsetMapCoords(&x, &y, 8, 8); spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_TALL_GRASS], x, y, 0); if (spriteId != MAX_SPRITES) { - sprite = &gSprites[spriteId]; + struct Sprite *sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gFieldEffectArguments[3]; sprite->sElevation = gFieldEffectArguments[2]; @@ -317,15 +315,12 @@ u32 FldEff_TallGrass(void) void UpdateTallGrassFieldEffect(struct Sprite *sprite) { - u8 mapNum; - u8 mapGroup; u8 metatileBehavior; u8 localId; u8 objectEventId; - struct ObjectEvent *objectEvent; + u8 mapNum = sprite->sCurrentMap >> 8; + u8 mapGroup = sprite->sCurrentMap; - mapNum = sprite->sCurrentMap >> 8; - mapGroup = sprite->sCurrentMap; if (gCamera.active && (gSaveBlock1Ptr->location.mapNum != mapNum || gSaveBlock1Ptr->location.mapGroup != mapGroup)) { sprite->sX -= gCamera.x; @@ -346,11 +341,9 @@ void UpdateTallGrassFieldEffect(struct Sprite *sprite) else { // Check if the object that triggered the effect has moved away - objectEvent = &gObjectEvents[objectEventId]; - if ((objectEvent->currentCoords.x != sprite->sX - || objectEvent->currentCoords.y != sprite->sY) - && (objectEvent->previousCoords.x != sprite->sX - || objectEvent->previousCoords.y != sprite->sY)) + struct ObjectEvent *objectEvent = &gObjectEvents[objectEventId]; + if ((objectEvent->currentCoords.x != sprite->sX || objectEvent->currentCoords.y != sprite->sY) + && (objectEvent->previousCoords.x != sprite->sX || objectEvent->previousCoords.y != sprite->sY)) sprite->sObjectMoved = TRUE; // Metatile behavior var re-used as subpriority @@ -366,31 +359,28 @@ void UpdateTallGrassFieldEffect(struct Sprite *sprite) u32 FldEff_JumpTallGrass(void) { u8 spriteId; - struct Sprite *sprite; SetSpritePosToOffsetMapCoords((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 12); spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_JUMP_TALL_GRASS], gFieldEffectArguments[0], gFieldEffectArguments[1], 0); if (spriteId != MAX_SPRITES) { - sprite = &gSprites[spriteId]; + struct Sprite *sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gFieldEffectArguments[3]; - sprite->sElevation = gFieldEffectArguments[2]; - sprite->sFldEff = FLDEFF_JUMP_TALL_GRASS; + sprite->sJumpElevation = gFieldEffectArguments[2]; + sprite->sJumpFldEff = FLDEFF_JUMP_TALL_GRASS; } return 0; } u8 FindTallGrassFieldEffectSpriteId(u8 localId, u8 mapNum, u8 mapGroup, s16 x, s16 y) { - struct Sprite *sprite; u8 i; - for (i = 0; i < MAX_SPRITES; i ++) { if (gSprites[i].inUse) { - sprite = &gSprites[i]; + struct Sprite *sprite = &gSprites[i]; if (sprite->callback == UpdateTallGrassFieldEffect && (x == sprite->sX && y == sprite->sY) && localId == (u8)(sprite->sLocalId) @@ -404,18 +394,14 @@ u8 FindTallGrassFieldEffectSpriteId(u8 localId, u8 mapNum, u8 mapGroup, s16 x, s u32 FldEff_LongGrass(void) { - s16 x; - s16 y; u8 spriteId; - struct Sprite *sprite; - - x = gFieldEffectArguments[0]; - y = gFieldEffectArguments[1]; + s16 x = gFieldEffectArguments[0]; + s16 y = gFieldEffectArguments[1]; SetSpritePosToOffsetMapCoords(&x, &y, 8, 8); spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_LONG_GRASS], x, y, 0); if (spriteId != MAX_SPRITES) { - sprite = &gSprites[spriteId]; + struct Sprite *sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = ElevationToPriority(gFieldEffectArguments[2]); sprite->sElevation = gFieldEffectArguments[2]; @@ -433,15 +419,12 @@ u32 FldEff_LongGrass(void) void UpdateLongGrassFieldEffect(struct Sprite *sprite) { - u8 mapNum; - u8 mapGroup; u8 metatileBehavior; u8 localId; u8 objectEventId; - struct ObjectEvent *objectEvent; + u8 mapNum = sprite->sCurrentMap >> 8; + u8 mapGroup = sprite->sCurrentMap; - mapNum = sprite->sCurrentMap >> 8; - mapGroup = sprite->sCurrentMap; if (gCamera.active && (gSaveBlock1Ptr->location.mapNum != mapNum || gSaveBlock1Ptr->location.mapGroup != mapGroup)) { sprite->sX -= gCamera.x; @@ -451,7 +434,7 @@ void UpdateLongGrassFieldEffect(struct Sprite *sprite) localId = sprite->sLocalId; mapNum = sprite->sMapNum; mapGroup = sprite->sMapGroup; - metatileBehavior = MapGridGetMetatileBehaviorAt(sprite->data[1], sprite->data[2]); + metatileBehavior = MapGridGetMetatileBehaviorAt(sprite->sX, sprite->sY); if (TryGetObjectEventIdByLocalIdAndMap(localId, mapNum, mapGroup, &objectEventId) || !MetatileBehavior_IsLongGrass(metatileBehavior) || (sprite->sObjectMoved && sprite->animEnded)) @@ -461,11 +444,9 @@ void UpdateLongGrassFieldEffect(struct Sprite *sprite) else { // Check if the object that triggered the effect has moved away - objectEvent = &gObjectEvents[objectEventId]; - if ((objectEvent->currentCoords.x != sprite->data[1] - || objectEvent->currentCoords.y != sprite->data[2]) - && (objectEvent->previousCoords.x != sprite->data[1] - || objectEvent->previousCoords.y != sprite->data[2])) + struct ObjectEvent *objectEvent = &gObjectEvents[objectEventId]; + if ((objectEvent->currentCoords.x != sprite->sX || objectEvent->currentCoords.y != sprite->sY) + && (objectEvent->previousCoords.x != sprite->sX || objectEvent->previousCoords.y != sprite->sY)) sprite->sObjectMoved = TRUE; UpdateObjectEventSpriteInvisibility(sprite, FALSE); @@ -473,6 +454,7 @@ void UpdateLongGrassFieldEffect(struct Sprite *sprite) } } +#undef sElevation #undef sX #undef sY #undef sMapNum @@ -486,41 +468,42 @@ void UpdateLongGrassFieldEffect(struct Sprite *sprite) u32 FldEff_JumpLongGrass(void) { u8 spriteId; - struct Sprite *sprite; SetSpritePosToOffsetMapCoords((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_JUMP_LONG_GRASS], gFieldEffectArguments[0], gFieldEffectArguments[1], 0); if (spriteId != MAX_SPRITES) { - sprite = &gSprites[spriteId]; + struct Sprite *sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gFieldEffectArguments[3]; - sprite->sElevation = gFieldEffectArguments[2]; - sprite->sFldEff = FLDEFF_JUMP_LONG_GRASS; + sprite->sJumpElevation = gFieldEffectArguments[2]; + sprite->sJumpFldEff = FLDEFF_JUMP_LONG_GRASS; } return 0; } +// Sprite data for FLDEFF_SHORT_GRASS +#define sLocalId data[0] +#define sMapNum data[1] +#define sMapGroup data[2] +#define sPrevX data[3] +#define sPrevY data[4] + u32 FldEff_ShortGrass(void) { - u8 objectEventId; - struct ObjectEvent *objectEvent; - u8 spriteId; - struct Sprite *sprite; - - objectEventId = GetObjectEventIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); - objectEvent = &gObjectEvents[objectEventId]; - spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_SHORT_GRASS], 0, 0, 0); + u8 objectEventId = GetObjectEventIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); + struct ObjectEvent *objectEvent = &gObjectEvents[objectEventId]; + u8 spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_SHORT_GRASS], 0, 0, 0); if (spriteId != MAX_SPRITES) { - sprite = &(gSprites[spriteId]); + struct Sprite *sprite = &(gSprites[spriteId]); sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gSprites[objectEvent->spriteId].oam.priority; - sprite->data[0] = gFieldEffectArguments[0]; - sprite->data[1] = gFieldEffectArguments[1]; - sprite->data[2] = gFieldEffectArguments[2]; - sprite->data[3] = gSprites[objectEvent->spriteId].x; - sprite->data[4] = gSprites[objectEvent->spriteId].y; + sprite->sLocalId = gFieldEffectArguments[0]; + sprite->sMapNum = gFieldEffectArguments[1]; + sprite->sMapGroup = gFieldEffectArguments[2]; + sprite->sPrevX = gSprites[objectEvent->spriteId].x; + sprite->sPrevY = gSprites[objectEvent->spriteId].y; } return 0; } @@ -528,32 +511,28 @@ u32 FldEff_ShortGrass(void) void UpdateShortGrassFieldEffect(struct Sprite *sprite) { u8 objectEventId; - s16 x; - s16 y; - const struct ObjectEventGraphicsInfo *graphicsInfo; - struct Sprite *linkedSprite; - if (TryGetObjectEventIdByLocalIdAndMap(sprite->data[0], sprite->data[1], sprite->data[2], &objectEventId) || !gObjectEvents[objectEventId].inShortGrass) + if (TryGetObjectEventIdByLocalIdAndMap(sprite->sLocalId, sprite->sMapNum, sprite->sMapGroup, &objectEventId) || !gObjectEvents[objectEventId].inShortGrass) { FieldEffectStop(sprite, FLDEFF_SHORT_GRASS); } else { - graphicsInfo = GetObjectEventGraphicsInfo(gObjectEvents[objectEventId].graphicsId); - linkedSprite = &gSprites[gObjectEvents[objectEventId].spriteId]; - y = linkedSprite->y; - x = linkedSprite->x; - if (x != sprite->data[3] || y != sprite->data[4]) + const struct ObjectEventGraphicsInfo *graphicsInfo = GetObjectEventGraphicsInfo(gObjectEvents[objectEventId].graphicsId); + struct Sprite *linkedSprite = &gSprites[gObjectEvents[objectEventId].spriteId]; + s16 parentY = linkedSprite->y; + s16 parentX = linkedSprite->x; + if (parentX != sprite->sPrevX || parentY != sprite->sPrevY) { - sprite->data[3] = x; - sprite->data[4] = y; + // Parent sprite moved, try to restart the animation + sprite->sPrevX = parentX; + sprite->sPrevY = parentY; if (sprite->animEnded) - { StartSpriteAnim(sprite, 0); - } } - sprite->x = x; - sprite->y = y; + sprite->x = parentX; + sprite->y = parentY; + // Offset the grass sprite halfway down the parent sprite. sprite->y2 = (graphicsInfo->height >> 1) - 8; sprite->subpriority = linkedSprite->subpriority - 1; sprite->oam.priority = linkedSprite->oam.priority; @@ -561,19 +540,29 @@ void UpdateShortGrassFieldEffect(struct Sprite *sprite) } } +#undef sLocalId +#undef sMapNum +#undef sMapGroup +#undef sPrevX +#undef sPrevY + +// Sprite data for FLDEFF_SAND_FOOTPRINTS, FLDEFF_DEEP_SAND_FOOTPRINTS, and FLDEFF_BIKE_TIRE_TRACKS +#define sState data[0] +#define sTimer data[1] +#define sFldEff data[7] + u32 FldEff_SandFootprints(void) { u8 spriteId; - struct Sprite *sprite; SetSpritePosToOffsetMapCoords((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_SAND_FOOTPRINTS], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); if (spriteId != MAX_SPRITES) { - sprite = &gSprites[spriteId]; + struct Sprite *sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gFieldEffectArguments[3]; - sprite->data[7] = FLDEFF_SAND_FOOTPRINTS; + sprite->sFldEff = FLDEFF_SAND_FOOTPRINTS; StartSpriteAnim(sprite, gFieldEffectArguments[4]); } return 0; @@ -582,16 +571,15 @@ u32 FldEff_SandFootprints(void) u32 FldEff_DeepSandFootprints(void) { u8 spriteId; - struct Sprite *sprite; SetSpritePosToOffsetMapCoords((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_DEEP_SAND_FOOTPRINTS], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); if (spriteId != MAX_SPRITES) { - sprite = &gSprites[spriteId]; + struct Sprite *sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gFieldEffectArguments[3]; - sprite->data[7] = FLDEFF_DEEP_SAND_FOOTPRINTS; + sprite->sFldEff = FLDEFF_DEEP_SAND_FOOTPRINTS; StartSpriteAnim(sprite, gFieldEffectArguments[4]); } return spriteId; @@ -600,16 +588,15 @@ u32 FldEff_DeepSandFootprints(void) u32 FldEff_BikeTireTracks(void) { u8 spriteId; - struct Sprite *sprite; SetSpritePosToOffsetMapCoords((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_BIKE_TIRE_TRACKS], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); if (spriteId != MAX_SPRITES) { - sprite = &gSprites[spriteId]; + struct Sprite *sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gFieldEffectArguments[3]; - sprite->data[7] = FLDEFF_BIKE_TIRE_TRACKS; + sprite->sFldEff = FLDEFF_BIKE_TIRE_TRACKS; StartSpriteAnim(sprite, gFieldEffectArguments[4]); } return spriteId; @@ -622,14 +609,14 @@ void (*const gFadeFootprintsTireTracksFuncs[])(struct Sprite *) = { void UpdateFootprintsTireTracksFieldEffect(struct Sprite *sprite) { - gFadeFootprintsTireTracksFuncs[sprite->data[0]](sprite); + gFadeFootprintsTireTracksFuncs[sprite->sState](sprite); } static void FadeFootprintsTireTracks_Step0(struct Sprite *sprite) { // Wait 40 frames before the flickering starts. - if (++sprite->data[1] > 40) - sprite->data[0] = 1; + if (++sprite->sTimer > 40) + sprite->sState = 1; UpdateObjectEventSpriteInvisibility(sprite, FALSE); } @@ -637,36 +624,37 @@ static void FadeFootprintsTireTracks_Step0(struct Sprite *sprite) static void FadeFootprintsTireTracks_Step1(struct Sprite *sprite) { sprite->invisible ^= 1; - sprite->data[1]++; + sprite->sTimer++; UpdateObjectEventSpriteInvisibility(sprite, sprite->invisible); - if (sprite->data[1] > 56) - { - FieldEffectStop(sprite, sprite->data[7]); - } + if (sprite->sTimer > 56) + FieldEffectStop(sprite, sprite->sFldEff); } +#undef sState +#undef sTimer +#undef sFldEff + +// Sprite data for FLDEFF_SPLASH +#define sLocalId data[0] +#define sMapNum data[1] +#define sMapGroup data[2] + u32 FldEff_Splash(void) { - u8 objectEventId; - struct ObjectEvent *objectEvent; - u8 spriteId; - struct Sprite *sprite; - const struct ObjectEventGraphicsInfo *graphicsInfo; - struct Sprite *linkedSprite; - - objectEventId = GetObjectEventIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); - objectEvent = &gObjectEvents[objectEventId]; - spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_SPLASH], 0, 0, 0); + u8 objectEventId = GetObjectEventIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); + struct ObjectEvent *objectEvent = &gObjectEvents[objectEventId]; + u8 spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_SPLASH], 0, 0, 0); if (spriteId != MAX_SPRITES) { - graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId); - sprite = &gSprites[spriteId]; + struct Sprite *linkedSprite; + const struct ObjectEventGraphicsInfo *graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId); + struct Sprite *sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; linkedSprite = &gSprites[objectEvent->spriteId]; sprite->oam.priority = linkedSprite->oam.priority; - sprite->data[0] = gFieldEffectArguments[0]; - sprite->data[1] = gFieldEffectArguments[1]; - sprite->data[2] = gFieldEffectArguments[2]; + sprite->sLocalId = gFieldEffectArguments[0]; + sprite->sMapNum = gFieldEffectArguments[1]; + sprite->sMapGroup = gFieldEffectArguments[2]; sprite->y2 = (graphicsInfo->height >> 1) - 4; PlaySE(SE_PUDDLE); } @@ -677,7 +665,7 @@ void UpdateSplashFieldEffect(struct Sprite *sprite) { u8 objectEventId; - if (sprite->animEnded || TryGetObjectEventIdByLocalIdAndMap(sprite->data[0], sprite->data[1], sprite->data[2], &objectEventId)) + if (sprite->animEnded || TryGetObjectEventIdByLocalIdAndMap(sprite->sLocalId, sprite->sMapNum, sprite->sMapGroup, &objectEventId)) { FieldEffectStop(sprite, FLDEFF_SPLASH); } @@ -689,20 +677,23 @@ void UpdateSplashFieldEffect(struct Sprite *sprite) } } +#undef sLocalId +#undef sMapNum +#undef sMapGroup + u32 FldEff_JumpSmallSplash(void) { u8 spriteId; - struct Sprite *sprite; SetSpritePosToOffsetMapCoords((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 12); spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_JUMP_SMALL_SPLASH], gFieldEffectArguments[0], gFieldEffectArguments[1], 0); if (spriteId != MAX_SPRITES) { - sprite = &gSprites[spriteId]; + struct Sprite *sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gFieldEffectArguments[3]; - sprite->data[0] = gFieldEffectArguments[2]; - sprite->data[1] = FLDEFF_JUMP_SMALL_SPLASH; + sprite->sJumpElevation = gFieldEffectArguments[2]; + sprite->sJumpFldEff = FLDEFF_JUMP_SMALL_SPLASH; } return 0; } @@ -710,44 +701,44 @@ u32 FldEff_JumpSmallSplash(void) u32 FldEff_JumpBigSplash(void) { u8 spriteId; - struct Sprite *sprite; SetSpritePosToOffsetMapCoords((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_JUMP_BIG_SPLASH], gFieldEffectArguments[0], gFieldEffectArguments[1], 0); if (spriteId != MAX_SPRITES) { - sprite = &gSprites[spriteId]; + struct Sprite *sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gFieldEffectArguments[3]; - sprite->data[0] = gFieldEffectArguments[2]; - sprite->data[1] = FLDEFF_JUMP_BIG_SPLASH; + sprite->sJumpElevation = gFieldEffectArguments[2]; + sprite->sJumpFldEff = FLDEFF_JUMP_BIG_SPLASH; } return 0; } +// Sprite data for FLDEFF_FEET_IN_FLOWING_WATER +#define sLocalId data[0] +#define sMapNum data[1] +#define sMapGroup data[2] +#define sPrevX data[3] +#define sPrevY data[4] + u32 FldEff_FeetInFlowingWater(void) { - u8 objectEventId; - struct ObjectEvent *objectEvent; - u8 spriteId; - struct Sprite *sprite; - const struct ObjectEventGraphicsInfo *graphicsInfo; - - objectEventId = GetObjectEventIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); - objectEvent = &gObjectEvents[objectEventId]; - spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_SPLASH], 0, 0, 0); + u8 objectEventId = GetObjectEventIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); + struct ObjectEvent *objectEvent = &gObjectEvents[objectEventId]; + u8 spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_SPLASH], 0, 0, 0); if (spriteId != MAX_SPRITES) { - graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId); - sprite = &gSprites[spriteId]; + const struct ObjectEventGraphicsInfo *graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId); + struct Sprite *sprite = &gSprites[spriteId]; sprite->callback = UpdateFeetInFlowingWaterFieldEffect; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gSprites[objectEvent->spriteId].oam.priority; - sprite->data[0] = gFieldEffectArguments[0]; - sprite->data[1] = gFieldEffectArguments[1]; - sprite->data[2] = gFieldEffectArguments[2]; - sprite->data[3] = -1; - sprite->data[4] = -1; + sprite->sLocalId = gFieldEffectArguments[0]; + sprite->sMapNum = gFieldEffectArguments[1]; + sprite->sMapGroup = gFieldEffectArguments[2]; + sprite->sPrevX = -1; + sprite->sPrevY = -1; sprite->y2 = (graphicsInfo->height >> 1) - 4; StartSpriteAnim(sprite, 1); } @@ -757,69 +748,70 @@ u32 FldEff_FeetInFlowingWater(void) static void UpdateFeetInFlowingWaterFieldEffect(struct Sprite *sprite) { u8 objectEventId; - struct Sprite *linkedSprite; - struct ObjectEvent *objectEvent; - if (TryGetObjectEventIdByLocalIdAndMap(sprite->data[0], sprite->data[1], sprite->data[2], &objectEventId) || !gObjectEvents[objectEventId].inShallowFlowingWater) + if (TryGetObjectEventIdByLocalIdAndMap(sprite->sLocalId, sprite->sMapNum, sprite->sMapGroup, &objectEventId) || !gObjectEvents[objectEventId].inShallowFlowingWater) { FieldEffectStop(sprite, FLDEFF_FEET_IN_FLOWING_WATER); } else { - objectEvent = &gObjectEvents[objectEventId]; - linkedSprite = &gSprites[objectEvent->spriteId]; + struct ObjectEvent *objectEvent = &gObjectEvents[objectEventId]; + struct Sprite *linkedSprite = &gSprites[objectEvent->spriteId]; sprite->x = linkedSprite->x; sprite->y = linkedSprite->y; sprite->subpriority = linkedSprite->subpriority; UpdateObjectEventSpriteInvisibility(sprite, FALSE); - if (objectEvent->currentCoords.x != sprite->data[3] || objectEvent->currentCoords.y != sprite->data[4]) + if (objectEvent->currentCoords.x != sprite->sPrevX || objectEvent->currentCoords.y != sprite->sPrevY) { - sprite->data[3] = objectEvent->currentCoords.x; - sprite->data[4] = objectEvent->currentCoords.y; + sprite->sPrevX = objectEvent->currentCoords.x; + sprite->sPrevY = objectEvent->currentCoords.y; if (!sprite->invisible) - { PlaySE(SE_PUDDLE); - } } } } +#undef sLocalId +#undef sMapNum +#undef sMapGroup +#undef sPrevX +#undef sPrevY + u32 FldEff_Ripple(void) { - u8 spriteId; - struct Sprite *sprite; - - spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_RIPPLE], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); + u8 spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_RIPPLE], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); if (spriteId != MAX_SPRITES) { - sprite = &gSprites[spriteId]; + struct Sprite *sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gFieldEffectArguments[3]; - sprite->data[0] = FLDEFF_RIPPLE; + sprite->sWaitFldEff = FLDEFF_RIPPLE; } return 0; } +// Sprite data for FLDEFF_HOT_SPRINGS_WATER +#define sLocalId data[0] +#define sMapNum data[1] +#define sMapGroup data[2] +#define sPrevX data[3] +#define sPrevY data[4] + u32 FldEff_HotSpringsWater(void) { - u8 objectEventId; - struct ObjectEvent *objectEvent; - u8 spriteId; - struct Sprite *sprite; - - objectEventId = GetObjectEventIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); - objectEvent = &gObjectEvents[objectEventId]; - spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_HOT_SPRINGS_WATER], 0, 0, 0); + u8 objectEventId = GetObjectEventIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); + struct ObjectEvent *objectEvent = &gObjectEvents[objectEventId]; + u8 spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_HOT_SPRINGS_WATER], 0, 0, 0); if (spriteId != MAX_SPRITES) { - sprite = &gSprites[spriteId]; + struct Sprite *sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gSprites[objectEvent->spriteId].oam.priority; - sprite->data[0] = gFieldEffectArguments[0]; - sprite->data[1] = gFieldEffectArguments[1]; - sprite->data[2] = gFieldEffectArguments[2]; - sprite->data[3] = gSprites[objectEvent->spriteId].x; - sprite->data[4] = gSprites[objectEvent->spriteId].y; + sprite->sLocalId = gFieldEffectArguments[0]; + sprite->sMapNum = gFieldEffectArguments[1]; + sprite->sMapGroup = gFieldEffectArguments[2]; + sprite->sPrevX = gSprites[objectEvent->spriteId].x; // Unused + sprite->sPrevY = gSprites[objectEvent->spriteId].y; // Unused } return 0; } @@ -827,17 +819,15 @@ u32 FldEff_HotSpringsWater(void) void UpdateHotSpringsWaterFieldEffect(struct Sprite *sprite) { u8 objectEventId; - const struct ObjectEventGraphicsInfo *graphicsInfo; - struct Sprite *linkedSprite; - if (TryGetObjectEventIdByLocalIdAndMap(sprite->data[0], sprite->data[1], sprite->data[2], &objectEventId) || !gObjectEvents[objectEventId].inHotSprings) + if (TryGetObjectEventIdByLocalIdAndMap(sprite->sLocalId, sprite->sMapNum, sprite->sMapGroup, &objectEventId) || !gObjectEvents[objectEventId].inHotSprings) { FieldEffectStop(sprite, FLDEFF_HOT_SPRINGS_WATER); } else { - graphicsInfo = GetObjectEventGraphicsInfo(gObjectEvents[objectEventId].graphicsId); - linkedSprite = &gSprites[gObjectEvents[objectEventId].spriteId]; + const struct ObjectEventGraphicsInfo *graphicsInfo = GetObjectEventGraphicsInfo(gObjectEvents[objectEventId].graphicsId); + struct Sprite *linkedSprite = &gSprites[gObjectEvents[objectEventId].spriteId]; sprite->x = linkedSprite->x; sprite->y = (graphicsInfo->height >> 1) + linkedSprite->y - 8; sprite->subpriority = linkedSprite->subpriority - 1; @@ -845,19 +835,24 @@ void UpdateHotSpringsWaterFieldEffect(struct Sprite *sprite) } } +#undef sLocalId +#undef sMapNum +#undef sMapGroup +#undef sPrevX +#undef sPrevY + u32 FldEff_UnusedGrass(void) { u8 spriteId; - struct Sprite *sprite; SetSpritePosToOffsetMapCoords((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_UNUSED_GRASS], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); if (spriteId != MAX_SPRITES) { - sprite = &gSprites[spriteId]; + struct Sprite *sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gFieldEffectArguments[3]; - sprite->data[0] = FLDEFF_UNUSED_GRASS; + sprite->sWaitFldEff = FLDEFF_UNUSED_GRASS; } return 0; } @@ -865,16 +860,15 @@ u32 FldEff_UnusedGrass(void) u32 FldEff_UnusedGrass2(void) { u8 spriteId; - struct Sprite *sprite; SetSpritePosToOffsetMapCoords((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_UNUSED_GRASS_2], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); if (spriteId != MAX_SPRITES) { - sprite = &gSprites[spriteId]; + struct Sprite *sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gFieldEffectArguments[3]; - sprite->data[0] = FLDEFF_UNUSED_GRASS_2; + sprite->sWaitFldEff = FLDEFF_UNUSED_GRASS_2; } return 0; } @@ -882,16 +876,15 @@ u32 FldEff_UnusedGrass2(void) u32 FldEff_UnusedSand(void) { u8 spriteId; - struct Sprite *sprite; SetSpritePosToOffsetMapCoords((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_UNUSED_SAND], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); if (spriteId != MAX_SPRITES) { - sprite = &gSprites[spriteId]; + struct Sprite *sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gFieldEffectArguments[3]; - sprite->data[0] = FLDEFF_UNUSED_SAND; + sprite->sWaitFldEff = FLDEFF_UNUSED_SAND; } return 0; } @@ -899,16 +892,15 @@ u32 FldEff_UnusedSand(void) u32 FldEff_WaterSurfacing(void) { u8 spriteId; - struct Sprite *sprite; SetSpritePosToOffsetMapCoords((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_WATER_SURFACING], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); if (spriteId != MAX_SPRITES) { - sprite = &gSprites[spriteId]; + struct Sprite *sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gFieldEffectArguments[3]; - sprite->data[0] = FLDEFF_WATER_SURFACING; + sprite->sWaitFldEff = FLDEFF_WATER_SURFACING; } return 0; } @@ -933,18 +925,15 @@ void StartAshFieldEffect(s16 x, s16 y, u16 metatileId, s16 delay) u32 FldEff_Ash(void) { - s16 x; - s16 y; u8 spriteId; - struct Sprite *sprite; - x = gFieldEffectArguments[0]; - y = gFieldEffectArguments[1]; + s16 x = gFieldEffectArguments[0]; + s16 y = gFieldEffectArguments[1]; SetSpritePosToOffsetMapCoords(&x, &y, 8, 8); spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_ASH], x, y, gFieldEffectArguments[2]); if (spriteId != MAX_SPRITES) { - sprite = &gSprites[spriteId]; + struct Sprite *sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gFieldEffectArguments[3]; sprite->sX = gFieldEffectArguments[0]; @@ -998,27 +987,30 @@ static void UpdateAshFieldEffect_End(struct Sprite *sprite) #undef sDelay // Sprite data for FLDEFF_SURF_BLOB -#define tBitfield data[0] -#define tPlayerOffset data[1] -#define tPlayerObjId data[2] - +#define sBitfield data[0] +#define sPlayerOffset data[1] +#define sPlayerObjId data[2] +#define sVelocity data[3] +#define sTimer data[4] +#define sIntervalIdx data[5] +#define sPrevX data[6] +#define sPrevY data[7] u32 FldEff_SurfBlob(void) { u8 spriteId; - struct Sprite *sprite; SetSpritePosToOffsetMapCoords((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); - spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_SURF_BLOB], gFieldEffectArguments[0], gFieldEffectArguments[1], 0x96); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_SURF_BLOB], gFieldEffectArguments[0], gFieldEffectArguments[1], 150); if (spriteId != MAX_SPRITES) { - sprite = &gSprites[spriteId]; + struct Sprite *sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.paletteNum = 0; - sprite->tPlayerObjId = gFieldEffectArguments[2]; - sprite->data[3] = -1; - sprite->data[6] = -1; - sprite->data[7] = -1; + sprite->sPlayerObjId = gFieldEffectArguments[2]; + sprite->sVelocity = -1; + sprite->sPrevX = -1; + sprite->sPrevY = -1; } FieldEffectActiveListRemove(FLDEFF_SURF_BLOB); return spriteId; @@ -1027,43 +1019,40 @@ u32 FldEff_SurfBlob(void) void SetSurfBlob_BobState(u8 spriteId, u8 state) { - gSprites[spriteId].data[0] = (gSprites[spriteId].data[0] & ~0xF) | (state & 0xF); + gSprites[spriteId].sBitfield = (gSprites[spriteId].sBitfield & ~0xF) | (state & 0xF); } void SetSurfBlob_DontSyncAnim(u8 spriteId, bool8 dontSync) { - gSprites[spriteId].data[0] = (gSprites[spriteId].data[0] & ~0xF0) | ((dontSync & 0xF) << 4); + gSprites[spriteId].sBitfield = (gSprites[spriteId].sBitfield & ~0xF0) | ((dontSync & 0xF) << 4); } void SetSurfBlob_PlayerOffset(u8 spriteId, bool8 hasOffset, s16 offset) { - gSprites[spriteId].data[0] = (gSprites[spriteId].data[0] & ~0xF00) | ((hasOffset & 0xF) << 8); - gSprites[spriteId].tPlayerOffset = offset; + gSprites[spriteId].sBitfield = (gSprites[spriteId].sBitfield & ~0xF00) | ((hasOffset & 0xF) << 8); + gSprites[spriteId].sPlayerOffset = offset; } static u8 GetSurfBlob_BobState(struct Sprite *sprite) { - return sprite->data[0] & 0xF; + return sprite->sBitfield & 0xF; } // Never TRUE static u8 GetSurfBlob_DontSyncAnim(struct Sprite *sprite) { - return (sprite->data[0] & 0xF0) >> 4; + return (sprite->sBitfield & 0xF0) >> 4; } static u8 GetSurfBlob_HasPlayerOffset(struct Sprite *sprite) { - return (sprite->data[0] & 0xF00) >> 8; + return (sprite->sBitfield & 0xF00) >> 8; } void UpdateSurfBlobFieldEffect(struct Sprite *sprite) { - struct ObjectEvent *playerObj; - struct Sprite *playerSprite; - - playerObj = &gObjectEvents[sprite->tPlayerObjId]; - playerSprite = &gSprites[playerObj->spriteId]; + struct ObjectEvent *playerObj = &gObjectEvents[sprite->sPlayerObjId]; + struct Sprite *playerSprite = &gSprites[playerObj->spriteId]; SynchroniseSurfAnim(playerObj, sprite); SynchroniseSurfPosition(playerObj, sprite); UpdateBobbingEffect(playerObj, playerSprite, sprite); @@ -1096,17 +1085,19 @@ void SynchroniseSurfPosition(struct ObjectEvent *playerObj, struct Sprite *sprit s16 y = playerObj->currentCoords.y; s32 spriteY = sprite->y2; - if (spriteY == 0 && (x != sprite->data[6] || y != sprite->data[7])) + if (spriteY == 0 && (x != sprite->sPrevX || y != sprite->sPrevY)) { - sprite->data[5] = spriteY; - sprite->data[6] = x; - sprite->data[7] = y; - for (i = DIR_SOUTH; i <= DIR_EAST; i++, x = sprite->data[6], y = sprite->data[7]) + // Player is moving while surfing, update position. + sprite->sIntervalIdx = 0; + sprite->sPrevX = x; + sprite->sPrevY = y; + for (i = DIR_SOUTH; i <= DIR_EAST; i++, x = sprite->sPrevX, y = sprite->sPrevY) { MoveCoords(i, &x, &y); if (MapGridGetElevationAt(x, y) == 3) { - sprite->data[5]++; + // While dismounting the surf blob bobs at a slower rate + sprite->sIntervalIdx++; break; } } @@ -1115,46 +1106,54 @@ void SynchroniseSurfPosition(struct ObjectEvent *playerObj, struct Sprite *sprit static void UpdateBobbingEffect(struct ObjectEvent *playerObj, struct Sprite *playerSprite, struct Sprite *sprite) { - u16 intervals[] = {3, 7}; + // The frame interval at which to update the blob's y movement. + // Normally every 4th frame, but every 8th frame while dismounting. + u16 intervals[] = {0x3, 0x7}; + u8 bobState = GetSurfBlob_BobState(sprite); if (bobState != BOB_NONE) { - // Update bobbing position of surf blob - if (((u16)(++sprite->data[4]) & intervals[sprite->data[5]]) == 0) - { - sprite->y2 += sprite->data[3]; - } - if ((sprite->data[4] & 15) == 0) - { - sprite->data[3] = -sprite->data[3]; - } + // Update vertical position of surf blob + if (((u16)(++sprite->sTimer) & intervals[sprite->sIntervalIdx]) == 0) + sprite->y2 += sprite->sVelocity; + + // Reverse bob direction + if ((sprite->sTimer & 15) == 0) + sprite->sVelocity = -sprite->sVelocity; + if (bobState != BOB_JUST_MON) { - // Update bobbing position of player + // Update vertical position of player if (!GetSurfBlob_HasPlayerOffset(sprite)) playerSprite->y2 = sprite->y2; else - playerSprite->y2 = sprite->tPlayerOffset + sprite->y2; + playerSprite->y2 = sprite->sPlayerOffset + sprite->y2; sprite->x = playerSprite->x; sprite->y = playerSprite->y + 8; } } } +#undef sBitfield +#undef sPlayerOffset +#undef sPlayerObjId +#undef sVelocity +#undef sTimer +#undef sIntervalIdx +#undef sPrevX +#undef sPrevY + #define sSpriteId data[0] #define sBobY data[1] #define sTimer data[2] u8 StartUnderwaterSurfBlobBobbing(u8 blobSpriteId) { - u8 spriteId; - struct Sprite *sprite; - // Create a dummy sprite with its own callback // that tracks the actual surf blob sprite and // makes it bob up and down underwater - spriteId = CreateSpriteAtEnd(&gDummySpriteTemplate, 0, 0, -1); - sprite = &gSprites[spriteId]; + u8 spriteId = CreateSpriteAtEnd(&gDummySpriteTemplate, 0, 0, -1); + struct Sprite *sprite = &gSprites[spriteId]; sprite->callback = SpriteCB_UnderwaterSurfBlob; sprite->invisible = TRUE; sprite->sSpriteId = blobSpriteId; @@ -1164,17 +1163,14 @@ u8 StartUnderwaterSurfBlobBobbing(u8 blobSpriteId) static void SpriteCB_UnderwaterSurfBlob(struct Sprite *sprite) { - struct Sprite *blobSprite; + struct Sprite *blobSprite = &gSprites[sprite->sSpriteId]; - blobSprite = &gSprites[sprite->sSpriteId]; + // Update vertical position of surf blob if (((sprite->sTimer++) & 3) == 0) - { blobSprite->y2 += sprite->sBobY; - } + // Reverse direction if ((sprite->sTimer & 15) == 0) - { sprite->sBobY = -sprite->sBobY; - } } #undef sSpriteId @@ -1184,43 +1180,43 @@ static void SpriteCB_UnderwaterSurfBlob(struct Sprite *sprite) u32 FldEff_Dust(void) { u8 spriteId; - struct Sprite *sprite; SetSpritePosToOffsetMapCoords((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 12); spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_GROUND_IMPACT_DUST], gFieldEffectArguments[0], gFieldEffectArguments[1], 0); if (spriteId != MAX_SPRITES) { - sprite = &gSprites[spriteId]; + struct Sprite *sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gFieldEffectArguments[3]; - sprite->data[0] = gFieldEffectArguments[2]; - sprite->data[1] = FLDEFF_DUST; + sprite->sJumpElevation = gFieldEffectArguments[2]; + sprite->sJumpFldEff = FLDEFF_DUST; } return 0; } +// Sprite data for FLDEFF_SAND_PILE +#define sLocalId data[0] +#define sMapNum data[1] +#define sMapGroup data[2] +#define sPrevX data[3] +#define sPrevY data[4] + u32 FldEff_SandPile(void) { - u8 objectEventId; - struct ObjectEvent *objectEvent; - u8 spriteId; - struct Sprite *sprite; - const struct ObjectEventGraphicsInfo *graphicsInfo; - - objectEventId = GetObjectEventIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); - objectEvent = &gObjectEvents[objectEventId]; - spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_SAND_PILE], 0, 0, 0); + u8 objectEventId = GetObjectEventIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); + struct ObjectEvent *objectEvent = &gObjectEvents[objectEventId]; + u8 spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_SAND_PILE], 0, 0, 0); if (spriteId != MAX_SPRITES) { - graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId); - sprite = &gSprites[spriteId]; + const struct ObjectEventGraphicsInfo *graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId); + struct Sprite *sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gSprites[objectEvent->spriteId].oam.priority; - sprite->data[0] = gFieldEffectArguments[0]; - sprite->data[1] = gFieldEffectArguments[1]; - sprite->data[2] = gFieldEffectArguments[2]; - sprite->data[3] = gSprites[objectEvent->spriteId].x; - sprite->data[4] = gSprites[objectEvent->spriteId].y; + sprite->sLocalId = gFieldEffectArguments[0]; + sprite->sMapNum = gFieldEffectArguments[1]; + sprite->sMapGroup = gFieldEffectArguments[2]; + sprite->sPrevX = gSprites[objectEvent->spriteId].x; + sprite->sPrevY = gSprites[objectEvent->spriteId].y; sprite->y2 = (graphicsInfo->height >> 1) - 2; SeekSpriteAnim(sprite, 2); } @@ -1230,81 +1226,85 @@ u32 FldEff_SandPile(void) void UpdateSandPileFieldEffect(struct Sprite *sprite) { u8 objectEventId; - s16 x; - s16 y; - if (TryGetObjectEventIdByLocalIdAndMap(sprite->data[0], sprite->data[1], sprite->data[2], &objectEventId) || !gObjectEvents[objectEventId].inSandPile) + if (TryGetObjectEventIdByLocalIdAndMap(sprite->sLocalId, sprite->sMapNum, sprite->sMapGroup, &objectEventId) || !gObjectEvents[objectEventId].inSandPile) { FieldEffectStop(sprite, FLDEFF_SAND_PILE); } else { - y = gSprites[gObjectEvents[objectEventId].spriteId].y; - x = gSprites[gObjectEvents[objectEventId].spriteId].x; - if (x != sprite->data[3] || y != sprite->data[4]) + s16 parentY = gSprites[gObjectEvents[objectEventId].spriteId].y; + s16 parentX = gSprites[gObjectEvents[objectEventId].spriteId].x; + if (parentX != sprite->sPrevX || parentY != sprite->sPrevY) { - sprite->data[3] = x; - sprite->data[4] = y; + sprite->sPrevX = parentX; + sprite->sPrevY = parentY; if (sprite->animEnded) - { StartSpriteAnim(sprite, 0); - } } - sprite->x = x; - sprite->y = y; + sprite->x = parentX; + sprite->y = parentY; sprite->subpriority = gSprites[gObjectEvents[objectEventId].spriteId].subpriority; UpdateObjectEventSpriteInvisibility(sprite, FALSE); } } +#undef sLocalId +#undef sMapNum +#undef sMapGroup +#undef sPrevX +#undef sPrevY + u32 FldEff_Bubbles(void) { u8 spriteId; - struct Sprite *sprite; SetSpritePosToOffsetMapCoords((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 0); - spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_BUBBLES], gFieldEffectArguments[0], gFieldEffectArguments[1], 0x52); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_BUBBLES], gFieldEffectArguments[0], gFieldEffectArguments[1], 82); if (spriteId != MAX_SPRITES) { - sprite = &gSprites[spriteId]; + struct Sprite *sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = 1; } return 0; } +#define sY data[0] + void UpdateBubblesFieldEffect(struct Sprite *sprite) { - sprite->data[0] += 0x80; - sprite->data[0] &= 0x100; - sprite->y -= sprite->data[0] >> 8; + // Move up 1 every other frame. + sprite->sY += ((1 << 8) / 2); + sprite->sY &= (1 << 8); + sprite->y -= sprite->sY >> 8; UpdateObjectEventSpriteInvisibility(sprite, FALSE); if (sprite->invisible || sprite->animEnded) - { FieldEffectStop(sprite, FLDEFF_BUBBLES); - } } +#undef sY + u32 FldEff_BerryTreeGrowthSparkle(void) { u8 spriteId; - struct Sprite *sprite; SetSpritePosToOffsetMapCoords((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 4); spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_SPARKLE], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); if (spriteId != MAX_SPRITES) { - sprite = &gSprites[spriteId]; + struct Sprite *sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gFieldEffectArguments[3]; sprite->oam.paletteNum = 5; - sprite->data[0] = FLDEFF_BERRY_TREE_GROWTH_SPARKLE; + sprite->sWaitFldEff = FLDEFF_BERRY_TREE_GROWTH_SPARKLE; } return 0; } // Sprite data for FLDEFF_TREE_DISGUISE / FLDEFF_MOUNTAIN_DISGUISE / FLDEFF_SAND_DISGUISE #define sState data[0] +#define sFldEff data[1] #define sLocalId data[2] #define sMapNum data[3] #define sMapGroup data[4] @@ -1328,7 +1328,6 @@ u32 ShowSandDisguiseFieldEffect(void) static u32 ShowDisguiseFieldEffect(u8 fldEff, u8 fldEffObj, u8 paletteNum) { u8 spriteId; - struct Sprite *sprite; if (TryGetObjectEventIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2], &spriteId)) { @@ -1338,7 +1337,7 @@ static u32 ShowDisguiseFieldEffect(u8 fldEff, u8 fldEffObj, u8 paletteNum) spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[fldEffObj], 0, 0, 0); if (spriteId != MAX_SPRITES) { - sprite = &gSprites[spriteId]; + struct Sprite *sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled ++; sprite->oam.paletteNum = paletteNum; sprite->sFldEff = fldEff; @@ -1405,6 +1404,7 @@ bool8 UpdateRevealDisguise(struct ObjectEvent *objectEvent) } #undef sState +#undef sFldEff #undef sLocalId #undef sMapNum #undef sMapGroup @@ -1421,7 +1421,7 @@ u32 FldEff_Sparkle(void) gFieldEffectArguments[0] += MAP_OFFSET; gFieldEffectArguments[1] += MAP_OFFSET; SetSpritePosToOffsetMapCoords((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); - spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_SMALL_SPARKLE], gFieldEffectArguments[0], gFieldEffectArguments[1], 0x52); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_SMALL_SPARKLE], gFieldEffectArguments[0], gFieldEffectArguments[1], 82); if (spriteId != MAX_SPRITES) { gSprites[spriteId].oam.priority = gFieldEffectArguments[2]; @@ -1449,7 +1449,9 @@ void UpdateSparkleFieldEffect(struct Sprite *sprite) #undef sEndTimer #define sTimer data[0] +#define sMoveTimer data[1] #define sState data[2] +#define sVelocity data[3] #define sStartY data[4] #define sCounter data[5] #define sAnimCounter data[6] @@ -1615,41 +1617,44 @@ void UpdateRayquazaSpotlightEffect(struct Sprite *sprite) if (sprite->sState == 1) { - if ((sprite->data[1] & 7) == 0) - sprite->y2 += sprite->data[3]; - if ((sprite->data[1] & 15) == 0) - sprite->data[3] = -sprite->data[3]; - sprite->data[1]++; + // Update movement + if ((sprite->sMoveTimer & 7) == 0) + sprite->y2 += sprite->sVelocity; + // Reverse direction + if ((sprite->sMoveTimer & 15) == 0) + sprite->sVelocity = -sprite->sVelocity; + sprite->sMoveTimer++; } sprite->sTimer++; } #undef sTimer +#undef sMoveTimer #undef sState #undef sStartY +#undef sVelocity #undef sCounter #undef sAnimCounter #undef sAnimState -// Used by FLDEFF_JUMP_TALL_GRASS and FLDEFF_JUMP_LONG_GRASS void UpdateJumpImpactEffect(struct Sprite *sprite) { if (sprite->animEnded) { - FieldEffectStop(sprite, sprite->sFldEff); + FieldEffectStop(sprite, sprite->sJumpFldEff); } else { UpdateObjectEventSpriteInvisibility(sprite, FALSE); - SetObjectSubpriorityByElevation(sprite->sElevation, sprite, 0); + SetObjectSubpriorityByElevation(sprite->sJumpElevation, sprite, 0); } } void WaitFieldEffectSpriteAnim(struct Sprite *sprite) { if (sprite->animEnded) - FieldEffectStop(sprite, sprite->data[0]); + FieldEffectStop(sprite, sprite->sWaitFldEff); else UpdateObjectEventSpriteInvisibility(sprite, FALSE); } @@ -1658,8 +1663,6 @@ static void UpdateGrassFieldEffectSubpriority(struct Sprite *sprite, u8 elevatio { u8 i; s16 var, xhi, lyhi, yhi, ylo; - const struct ObjectEventGraphicsInfo *graphicsInfo; // Unused Variable - struct Sprite *linkedSprite; SetObjectSubpriorityByElevation(elevation, sprite, subpriority); for (i = 0; i < OBJECT_EVENTS_COUNT; i ++) @@ -1667,8 +1670,9 @@ static void UpdateGrassFieldEffectSubpriority(struct Sprite *sprite, u8 elevatio struct ObjectEvent *objectEvent = &gObjectEvents[i]; if (objectEvent->active) { - graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId); - linkedSprite = &gSprites[objectEvent->spriteId]; + const struct ObjectEventGraphicsInfo *graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId); // Unused + struct Sprite *linkedSprite = &gSprites[objectEvent->spriteId]; + xhi = sprite->x + sprite->centerToCornerVecX; var = sprite->x - sprite->centerToCornerVecX; if (xhi < linkedSprite->x && var > linkedSprite->x) diff --git a/src/use_pokeblock.c b/src/use_pokeblock.c index 06df5d0a33..b01427ebdf 100644 --- a/src/use_pokeblock.c +++ b/src/use_pokeblock.c @@ -1116,7 +1116,7 @@ static u8 GetPartyIdFromSelectionId_(u8 selectionId) static void LoadAndCreateUpDownSprites(void) { - u16 i, spriteId; + u16 i; LoadSpriteSheet(&sSpriteSheet_UpDown); LoadSpritePalette(&sSpritePalette_UpDown); @@ -1126,7 +1126,7 @@ static void LoadAndCreateUpDownSprites(void) { if (sInfo->enhancements[i] != 0) { - spriteId = CreateSprite(&sSpriteTemplate_UpDown, sUpDownCoordsOnGraph[i][0], sUpDownCoordsOnGraph[i][1], 0); + u16 spriteId = CreateSprite(&sSpriteTemplate_UpDown, sUpDownCoordsOnGraph[i][0], sUpDownCoordsOnGraph[i][1], 0); if (spriteId != MAX_SPRITES) { if (sInfo->enhancements[i] != 0) // Always true here @@ -1137,20 +1137,24 @@ static void LoadAndCreateUpDownSprites(void) } } +#define tTimer data[0] + static void SpriteCB_UpDown(struct Sprite *sprite) { - if (sprite->data[0] < 6) + if (sprite->tTimer < 6) sprite->y2 -= 2; - else if (sprite->data[0] < 12) + else if (sprite->tTimer < 12) sprite->y2 += 2; - if (++sprite->data[0] > 60) + if (++sprite->tTimer > 60) { DestroySprite(sprite); sInfo->numEnhancements--; } } +#undef tTimer + static void LoadPartyInfo(void) { u16 i; @@ -1612,12 +1616,15 @@ static void LoadConditionGfx(void) LoadSpritePalette(&spritePalette); } +#define sSpeed data[0] +#define sTargetX data[1] + static void CreateConditionSprite(void) { u16 i; s16 xDiff, xStart; int yStart = 17; - int var = 8; + int speed = 8; struct Sprite **sprites = sMenu->condition; const struct SpriteTemplate *template = &sSpriteTemplate_Condition; @@ -1626,9 +1633,9 @@ static void CreateConditionSprite(void) u8 spriteId = CreateSprite(template, i * xDiff + xStart, yStart, 0); if (spriteId != MAX_SPRITES) { - gSprites[spriteId].data[0] = var; - gSprites[spriteId].data[1] = (i * xDiff) | 0x20; - gSprites[spriteId].data[2] = i; + gSprites[spriteId].sSpeed = speed; + gSprites[spriteId].sTargetX = (i * xDiff) | 0x20; + gSprites[spriteId].data[2] = i; // Unused StartSpriteAnim(&gSprites[spriteId], i); sprites[i] = &gSprites[spriteId]; } @@ -1657,11 +1664,15 @@ static void SpriteCB_Condition(struct Sprite *sprite) { s16 prevX = sprite->x; - sprite->x += sprite->data[0]; - if ((prevX <= sprite->data[1] && sprite->x >= sprite->data[1]) - || (prevX >= sprite->data[1] && sprite->x <= sprite->data[1])) + // Slide onscreen + sprite->x += sprite->sSpeed; + + // Check if target position has been reached/surpassed + if ((prevX <= sprite->sTargetX && sprite->x >= sprite->sTargetX) + || (prevX >= sprite->sTargetX && sprite->x <= sprite->sTargetX)) { - sprite->x = sprite->data[1]; + // End slide onscreen, become static sprite. + sprite->x = sprite->sTargetX; sprite->callback = SpriteCallbackDummy; } } From a8d0a0d709282e9580ad6d96b5af9e99b6173dbc Mon Sep 17 00:00:00 2001 From: AnonymousRandomPerson Date: Wed, 30 Aug 2023 00:08:19 -0400 Subject: [PATCH 04/36] Replaced decomp list with pret.github.io link --- README.md | 28 +--------------------------- 1 file changed, 1 insertion(+), 27 deletions(-) diff --git a/README.md b/README.md index bca4fd1041..d9148b32ec 100644 --- a/README.md +++ b/README.md @@ -8,30 +8,4 @@ It builds the following ROM: To set up the repository, see [INSTALL.md](INSTALL.md). - -## See also - -Other disassembly and/or decompilation projects: -* [**Pokémon Red and Blue**](https://github.com/pret/pokered) -* [**Pokémon Gold and Silver (Space World '97 demo)**](https://github.com/pret/pokegold-spaceworld) -* [**Pokémon Yellow**](https://github.com/pret/pokeyellow) -* [**Pokémon Trading Card Game**](https://github.com/pret/poketcg) -* [**Pokémon Pinball**](https://github.com/pret/pokepinball) -* [**Pokémon Stadium**](https://github.com/pret/pokestadium) -* [**Pokémon Gold and Silver**](https://github.com/pret/pokegold) -* [**Pokémon Crystal**](https://github.com/pret/pokecrystal) -* [**Pokémon Ruby and Sapphire**](https://github.com/pret/pokeruby) -* [**Pokémon Pinball: Ruby & Sapphire**](https://github.com/pret/pokepinballrs) -* [**Pokémon FireRed and LeafGreen**](https://github.com/pret/pokefirered) -* [**Pokémon Mystery Dungeon: Red Rescue Team**](https://github.com/pret/pmd-red) -* [**Pokémon Diamond and Pearl**](https://github.com/pret/pokediamond) -* [**Pokémon Platinum**](https://github.com/pret/pokeplatinum) -* [**Pokémon HeartGold and SoulSilver**](https://github.com/pret/pokeheartgold) -* [**Pokémon Mystery Dungeon: Explorers of Sky**](https://github.com/pret/pmd-sky) - -## Contacts - -You can find us on: - -* [Discord (PRET, #pokeemerald)](https://discord.gg/d5dubZ3) -* [IRC](https://web.libera.chat/?#pret) +For contacts and other pret projects, see [pret.github.io](https://pret.github.io/). From 3a8a82d385daf325341fb350075d2604b4814385 Mon Sep 17 00:00:00 2001 From: kaboissonneault Date: Wed, 4 Oct 2023 09:18:02 -0400 Subject: [PATCH 05/36] Fixed out-of-bounds access in GetFactoryMonFixedIV when generating player rentals in round 8 (if player has 15+ swaps) and in round 9 --- src/battle_factory.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/battle_factory.c b/src/battle_factory.c index 5905b41917..46d34efd7d 100644 --- a/src/battle_factory.c +++ b/src/battle_factory.c @@ -741,7 +741,14 @@ u8 GetFactoryMonFixedIV(u8 challengeNum, bool8 isLastBattle) u8 ivSet; bool8 useHigherIV = isLastBattle ? TRUE : FALSE; +// The Factory has an out-of-bounds access when generating the rental draft for round 9 (challengeNum==8), +// or the "elevated" rentals from round 8 (challengeNum+1==8) +// This happens to land on a number higher than 31, which is interpreted as "random IVs" +#ifdef BUGFIX + if (challengeNum > 7) +#else if (challengeNum > 8) +#endif ivSet = 7; else ivSet = challengeNum; From 0a183c2027649e0042e066b0890f68088d1e0546 Mon Sep 17 00:00:00 2001 From: kaboissonneault Date: Thu, 5 Oct 2023 08:26:34 -0400 Subject: [PATCH 06/36] Changed sFixedIVTable access from hardcoded index limits to ARRAY_COUNT --- src/battle_factory.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/battle_factory.c b/src/battle_factory.c index 46d34efd7d..3606d88e6a 100644 --- a/src/battle_factory.c +++ b/src/battle_factory.c @@ -745,11 +745,11 @@ u8 GetFactoryMonFixedIV(u8 challengeNum, bool8 isLastBattle) // or the "elevated" rentals from round 8 (challengeNum+1==8) // This happens to land on a number higher than 31, which is interpreted as "random IVs" #ifdef BUGFIX - if (challengeNum > 7) + if (challengeNum >= ARRAY_COUNT(sFixedIVTable)) #else - if (challengeNum > 8) + if (challengeNum > ARRAY_COUNT(sFixedIVTable)) #endif - ivSet = 7; + ivSet = ARRAY_COUNT(sFixedIVTable) - 1; else ivSet = challengeNum; From 6f71fbe521ebe7ff1d3490ec3851ad28e9284ec0 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Sun, 17 Sep 2023 17:11:55 -0400 Subject: [PATCH 07/36] Add some missing trainer hill constant usage --- src/event_object_movement.c | 4 ++-- src/trainer_hill.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 411b826a53..29dcf4d27c 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -1324,7 +1324,7 @@ u8 Unref_TryInitLocalObjectEvent(u8 localId) if (InBattlePyramid()) objectEventCount = GetNumBattlePyramidObjectEvents(); else if (InTrainerHill()) - objectEventCount = 2; + objectEventCount = HILL_TRAINERS_PER_FLOOR; else objectEventCount = gMapHeader.events->objectEventCount; @@ -1640,7 +1640,7 @@ void TrySpawnObjectEvents(s16 cameraX, s16 cameraY) if (InBattlePyramid()) objectCount = GetNumBattlePyramidObjectEvents(); else if (InTrainerHill()) - objectCount = 2; + objectCount = HILL_TRAINERS_PER_FLOOR; else objectCount = gMapHeader.events->objectEventCount; diff --git a/src/trainer_hill.c b/src/trainer_hill.c index cca1a3e984..018b9f14ba 100644 --- a/src/trainer_hill.c +++ b/src/trainer_hill.c @@ -650,7 +650,7 @@ void LoadTrainerHillObjectEventTemplates(void) eventTemplates[i].localId = i + 1; eventTemplates[i].graphicsId = FacilityClassToGraphicsId(sHillData->floors[floorId].trainers[i].facilityClass); eventTemplates[i].x = sHillData->floors[floorId].map.trainerCoords[i] & 0xF; - eventTemplates[i].y = ((sHillData->floors[floorId].map.trainerCoords[i] >> 4) & 0xF) + 5; + eventTemplates[i].y = ((sHillData->floors[floorId].map.trainerCoords[i] >> 4) & 0xF) + HILL_FLOOR_HEIGHT_MARGIN; bits = i << 2; eventTemplates[i].movementType = ((sHillData->floors[floorId].map.trainerDirections >> bits) & 0xF) + MOVEMENT_TYPE_FACE_UP; eventTemplates[i].trainerRange_berryTreeId = (sHillData->floors[floorId].map.trainerRanges >> bits) & 0xF; From 054d0f98526e97d644062af3f26557cf32a62f05 Mon Sep 17 00:00:00 2001 From: Thomas Winwood Date: Sat, 7 Oct 2023 17:52:57 +0100 Subject: [PATCH 08/36] Remove fakematch in NewGameInitPCItems --- src/player_pc.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/player_pc.c b/src/player_pc.c index 7dc2616e71..009aa7810f 100644 --- a/src/player_pc.c +++ b/src/player_pc.c @@ -222,7 +222,7 @@ static const struct MenuAction sItemStorage_MenuActions[] = [MENU_EXIT] = { gText_Cancel, {ItemStorage_Exit} } }; -static const struct ItemSlot sNewGamePCItems[] = +static const u16 sNewGamePCItems[][2] = { { ITEM_POTION, 1 }, { ITEM_NONE, 0 } @@ -355,16 +355,20 @@ static const struct WindowTemplate sWindowTemplates_ItemStorage[ITEMPC_WIN_COUNT static const u8 sSwapArrowTextColors[] = {TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GRAY, TEXT_COLOR_DARK_GRAY}; -// Macro below is likely a fakematch, equivalent to sNewGamePCItems[i].quantity -#define GET_QUANTITY(i) ((u16)((u16 *)sNewGamePCItems + 1)[i * 2]) void NewGameInitPCItems(void) { u8 i = 0; ClearItemSlots(gSaveBlock1Ptr->pcItems, PC_ITEMS_COUNT); - for(; sNewGamePCItems[i].itemId != ITEM_NONE && GET_QUANTITY(i) && - AddPCItem(sNewGamePCItems[i].itemId, GET_QUANTITY(i)) == TRUE; i++); + + while (TRUE) + { + if (sNewGamePCItems[i][0] == ITEM_NONE || sNewGamePCItems[i][1] == 0) + break; + if (AddPCItem(sNewGamePCItems[i][0], sNewGamePCItems[i][1]) != TRUE) + break; + i++; + } } -#undef GET_QUANTITY void BedroomPC(void) { From 0e84c7deb302560913decb24673e1e991d52b5a9 Mon Sep 17 00:00:00 2001 From: marlux895 <141656905+marlux895@users.noreply.github.com> Date: Sat, 7 Oct 2023 23:23:52 +0200 Subject: [PATCH 09/36] corrected comment, tough to smart --- src/menu_specialized.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/menu_specialized.c b/src/menu_specialized.c index e749f599de..20ddce1f44 100644 --- a/src/menu_specialized.c +++ b/src/menu_specialized.c @@ -587,7 +587,7 @@ static void ConditionGraph_CalcRightHalf(struct ConditionGraph *graph) // No need for conditional, positions on the Beauty line are always above the Cute line ConditionGraph_CalcLine(graph, graph->scanlineRight[0], &graph->curPositions[GRAPH_BEAUTY], &graph->curPositions[GRAPH_CUTE], TRUE, NULL); - // Calculate Cute -> Tough line (includes left scanline because this crosses the halfway point) + // Calculate Cute -> Smart line (includes left scanline because this crosses the halfway point) i = (graph->curPositions[GRAPH_CUTE].y <= graph->curPositions[GRAPH_SMART].y); ConditionGraph_CalcLine(graph, graph->scanlineRight[0], &graph->curPositions[GRAPH_CUTE], &graph->curPositions[GRAPH_SMART], i, graph->scanlineLeft[0]); From 6ed8ab771b4ff629e1ed15f10854f649c26cd42b Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 13 Oct 2023 14:08:44 +0200 Subject: [PATCH 10/36] Fix Syrup Bomb and change Octolock --- data/battle_scripts_1.s | 51 +++++---------- src/battle_script_commands.c | 8 +-- src/battle_util.c | 13 +--- test/battle/damage_formula.c | 37 +++++++++++ test/battle/move_effect/octolock.c | 97 ++++++++++++++++++++++++++++ test/battle/move_effect/syrup_bomb.c | 7 +- 6 files changed, 158 insertions(+), 55 deletions(-) create mode 100644 test/battle/move_effect/octolock.c diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 183e7796bb..7f323dbd8b 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -452,28 +452,15 @@ BattleScript_EffectSyrupBomb:: goto BattleScript_MoveEnd BattleScript_SyrupBombEndTurn:: - setbyte sSTAT_ANIM_PLAYED, FALSE - copybyte sBATTLER, gBattlerTarget - jumpifholdeffect BS_TARGET, HOLD_EFFECT_CLEAR_AMULET, BattleScript_SyrupBombItemNoStatLoss - jumpifability BS_TARGET, ABILITY_CLEAR_BODY, BattleScript_SyrupBombAbilityNoStatLoss - jumpifability BS_TARGET, ABILITY_FULL_METAL_BODY, BattleScript_SyrupBombAbilityNoStatLoss - jumpifability BS_TARGET, ABILITY_WHITE_SMOKE, BattleScript_SyrupBombAbilityNoStatLoss - jumpifstat BS_TARGET, CMP_GREATER_THAN, BIT_SPEED, MIN_STAT_STAGE, BattleScript_SyrupBombLowerSpeed - goto BattleScript_SyrupBombEnd2 -BattleScript_SyrupBombLowerSpeed: playstatchangeanimation BS_ATTACKER, BIT_SPEED, STAT_CHANGE_NEGATIVE - setbyte sSTAT_ANIM_PLAYED, TRUE setstatchanger STAT_SPEED, 1, TRUE - statbuffchange STAT_CHANGE_ALLOW_PTR, BattleScript_SyrupBombEnd2 - jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_STAT_WONT_DECREASE, BattleScript_SyrupBombEnd2 + statbuffchange STAT_CHANGE_ALLOW_PTR | STAT_CHANGE_NOT_PROTECT_AFFECTED, BattleScript_SyrupBombTurnDmgEnd +BattleScript_SyrupBombTurnDmgPrintMsg: + jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 3, BattleScript_SyrupBombTurnDmgEnd + jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 4, BattleScript_SyrupBombTurnDmgEnd printfromtable gStatDownStringIds waitmessage B_WAIT_TIME_LONG -BattleScript_SyrupBombItemNoStatLoss:: - call BattleScript_ItemNoStatLoss - goto BattleScript_SyrupBombEnd2 -BattleScript_SyrupBombAbilityNoStatLoss:: - call BattleScript_AbilityNoStatLoss -BattleScript_SyrupBombEnd2:: +BattleScript_SyrupBombTurnDmgEnd: end2 BattleScript_EffectMatchaGotcha:: @@ -1079,29 +1066,23 @@ BattleScript_EffectOctolock: goto BattleScript_MoveEnd BattleScript_OctolockEndTurn:: - setbyte sSTAT_ANIM_PLAYED, FALSE - jumpifstat BS_TARGET, CMP_GREATER_THAN, STAT_DEF, MIN_STAT_STAGE, BattleScript_OctolockLowerDef - jumpifstat BS_TARGET, CMP_GREATER_THAN, STAT_SPDEF, MIN_STAT_STAGE, BattleScript_OctolockTryLowerSpDef - goto BattleScript_OctolockEnd2 -BattleScript_OctolockLowerDef: - jumpifability BS_TARGET, ABILITY_BIG_PECKS, BattleScript_OctolockTryLowerSpDef playstatchangeanimation BS_ATTACKER, BIT_DEF | BIT_SPDEF, STAT_CHANGE_NEGATIVE - setbyte sSTAT_ANIM_PLAYED, TRUE setstatchanger STAT_DEF, 1, TRUE - statbuffchange STAT_CHANGE_ALLOW_PTR, BattleScript_OctolockTryLowerSpDef - jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_STAT_WONT_DECREASE, BattleScript_OctolockTryLowerSpDef - printfromtable gStatUpStringIds + statbuffchange STAT_CHANGE_ALLOW_PTR | STAT_CHANGE_NOT_PROTECT_AFFECTED, BattleScript_OctolockTryLowerDef +BattleScript_OctolockTryLowerDef: + jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 3, BattleScript_OctolockTryLowerSpDef + jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 4, BattleScript_OctolockTryLowerSpDef + printfromtable gStatDownStringIds waitmessage B_WAIT_TIME_LONG BattleScript_OctolockTryLowerSpDef: - jumpifbyte CMP_EQUAL, sSTAT_ANIM_PLAYED, TRUE, BattleScript_OctolockSkipSpDefAnim - playstatchangeanimation BS_ATTACKER, BIT_SPDEF, STAT_CHANGE_NEGATIVE -BattleScript_OctolockSkipSpDefAnim: setstatchanger STAT_SPDEF, 1, TRUE - statbuffchange STAT_CHANGE_ALLOW_PTR, BattleScript_OctolockEnd2 - jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_STAT_WONT_DECREASE, BattleScript_OctolockEnd2 - printfromtable gStatUpStringIds + statbuffchange STAT_CHANGE_ALLOW_PTR | STAT_CHANGE_NOT_PROTECT_AFFECTED, BattleScript_OctolockTurnDmgPrintMsg +BattleScript_OctolockTurnDmgPrintMsg: + jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 3, BattleScript_OctlockTurnDmgEnd + jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 4, BattleScript_OctlockTurnDmgEnd + printfromtable gStatDownStringIds waitmessage B_WAIT_TIME_LONG -BattleScript_OctolockEnd2:: +BattleScript_OctlockTurnDmgEnd: end2 BattleScript_EffectPoltergeist: diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index cc365dbf82..b415f25d52 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -3010,7 +3010,7 @@ void SetMoveEffect(bool32 primary, u32 certain) gBattleMons[gEffectBattler].status1 |= STATUS1_SLEEP_TURN(1 + RandomUniform(RNG_SLEEP_TURNS, 1, 3)); else gBattleMons[gEffectBattler].status1 |= STATUS1_SLEEP_TURN(1 + RandomUniform(RNG_SLEEP_TURNS, 2, 5)); - } + } else { gBattleMons[gEffectBattler].status1 |= sStatusFlagsForMoveEffects[gBattleScripting.moveEffect]; @@ -11406,11 +11406,6 @@ static u32 ChangeStatBuffs(s8 statValue, u32 statId, u32 flags, const u8 *BS_ptr || battlerAbility == ABILITY_WHITE_SMOKE) && (!affectsUser || mirrorArmored) && !certain && gCurrentMove != MOVE_CURSE) { - if (battlerHoldEffect == HOLD_EFFECT_CLEAR_AMULET) - { - RecordItemEffectBattle(battler, HOLD_EFFECT_CLEAR_AMULET); - } - if (flags == STAT_CHANGE_ALLOW_PTR) { if (gSpecialStatuses[battler].statLowered) @@ -11424,6 +11419,7 @@ static u32 ChangeStatBuffs(s8 statValue, u32 statId, u32 flags, const u8 *BS_ptr if (battlerHoldEffect == HOLD_EFFECT_CLEAR_AMULET) { gBattlescriptCurrInstr = BattleScript_ItemNoStatLoss; + RecordItemEffectBattle(battler, HOLD_EFFECT_CLEAR_AMULET); } else { diff --git a/src/battle_util.c b/src/battle_util.c index a619b505e4..32bbf7f7e0 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -2793,11 +2793,7 @@ u8 DoBattlerEndTurnEffects(void) case ENDTURN_OCTOLOCK: { u16 battlerAbility = GetBattlerAbility(battler); - if (gDisableStructs[battler].octolock - && !(GetBattlerHoldEffect(battler, TRUE) == HOLD_EFFECT_CLEAR_AMULET - || battlerAbility == ABILITY_CLEAR_BODY - || battlerAbility == ABILITY_FULL_METAL_BODY - || battlerAbility == ABILITY_WHITE_SMOKE)) + if (gDisableStructs[battler].octolock) { gBattlerTarget = battler; BattleScriptExecute(BattleScript_OctolockEndTurn); @@ -3094,9 +3090,6 @@ u8 DoBattlerEndTurnEffects(void) case ENDTURN_SYRUP_BOMB: if ((gStatuses4[battler] & STATUS4_SYRUP_BOMB) && (gBattleMons[battler].hp != 0)) { - u16 battlerAbility = GetBattlerAbility(battler); - u32 battlerHoldEffect = GetBattlerHoldEffect(battler, TRUE); - gDisableStructs[battler].syrupBombTimer--; if (gDisableStructs[battler].syrupBombTimer == 0) { @@ -5760,7 +5753,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 case ABILITYEFFECT_OPPORTUNIST: /* Similar to ABILITYEFFECT_IMMUNITY in that it loops through all battlers. * Is called after ABILITYEFFECT_ON_SWITCHIN to copy any boosts - * from switch in abilities e.g. intrepid sword, as + * from switch in abilities e.g. intrepid sword, as */ for (battler = 0; battler < gBattlersCount; battler++) { @@ -5836,7 +5829,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 effect = 4; break; } - + if (effect != 0) { switch (effect) diff --git a/test/battle/damage_formula.c b/test/battle/damage_formula.c index 98aa197ca1..a4b0a03f58 100644 --- a/test/battle/damage_formula.c +++ b/test/battle/damage_formula.c @@ -76,3 +76,40 @@ SINGLE_BATTLE_TEST("Damage calculation matches Gen5+ (Muscle Band, crit)") EXPECT_EQ(expectedDamage, dmg); } } + +SINGLE_BATTLE_TEST("Damage calculation matches Gen5+ (Marshadow vs Mawile)") +{ + s16 dmg; + s16 expectedDamage; + PARAMETRIZE { expectedDamage = 145; } + PARAMETRIZE { expectedDamage = 144; } + PARAMETRIZE { expectedDamage = 142; } + PARAMETRIZE { expectedDamage = 141; } + PARAMETRIZE { expectedDamage = 139; } + PARAMETRIZE { expectedDamage = 138; } + PARAMETRIZE { expectedDamage = 136; } + PARAMETRIZE { expectedDamage = 135; } + PARAMETRIZE { expectedDamage = 133; } + PARAMETRIZE { expectedDamage = 132; } + PARAMETRIZE { expectedDamage = 130; } + PARAMETRIZE { expectedDamage = 129; } + PARAMETRIZE { expectedDamage = 127; } + PARAMETRIZE { expectedDamage = 126; } + PARAMETRIZE { expectedDamage = 124; } + PARAMETRIZE { expectedDamage = 123; } + GIVEN { + PLAYER(SPECIES_MARSHADOW) { Level(100); Attack(286); } + OPPONENT(SPECIES_MAWILE) { Level(100); Defense(226); HP(241); } + } WHEN { + TURN { + MOVE(player, MOVE_SPECTRAL_THIEF, WITH_RNG(RNG_DAMAGE_MODIFIER, i), criticalHit: FALSE); + } + } + SCENE{ + MESSAGE("Marshadow used SpectrlThief!"); + HP_BAR(opponent, captureDamage: &dmg); + } + THEN{ + EXPECT_EQ(expectedDamage, dmg); + } +} diff --git a/test/battle/move_effect/octolock.c b/test/battle/move_effect/octolock.c new file mode 100644 index 0000000000..f3249dd5ce --- /dev/null +++ b/test/battle/move_effect/octolock.c @@ -0,0 +1,97 @@ +#include "global.h" +#include "test/battle.h" + +SINGLE_BATTLE_TEST("Octolock") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_OCTOLOCK); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_OCTOLOCK, player); + MESSAGE("Foe Wobbuffet can no longer escape because of Octolock!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + MESSAGE("Foe Wobbuffet's Defense fell!"); + NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + MESSAGE("Foe Wobbuffet's Sp. Def fell!"); + } +} + +SINGLE_BATTLE_TEST("Octolock 2") +{ + u32 species; + u32 ability; + + PARAMETRIZE { species = SPECIES_BELDUM; ability = ABILITY_CLEAR_BODY; } + PARAMETRIZE { species = SPECIES_TORKOAL; ability = ABILITY_WHITE_SMOKE; } + PARAMETRIZE { species = SPECIES_SOLGALEO; ability = ABILITY_FULL_METAL_BODY; } + + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(species) { Ability(ability); } + } WHEN { + TURN { MOVE(player, MOVE_OCTOLOCK); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_OCTOLOCK, player); + NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + if (species == SPECIES_BELDUM) + { + MESSAGE("Foe Beldum can no longer escape because of Octolock!"); + ABILITY_POPUP(opponent, ABILITY_CLEAR_BODY); + MESSAGE("Foe Beldum's Clear Body prevents stat loss!"); + NOT MESSAGE("Foe Beldum's Defense fell!"); + NOT MESSAGE("Foe Beldum's Sp. Def fell!"); + } + else if (species == SPECIES_TORKOAL) + { + MESSAGE("Foe Torkoal can no longer escape because of Octolock!"); + ABILITY_POPUP(opponent, ABILITY_WHITE_SMOKE); + MESSAGE("Foe Torkoal's White Smoke prevents stat loss!"); + NOT MESSAGE("Foe Torkoal's Defense fell!"); + NOT MESSAGE("Foe Torkoal's Sp. Def fell!"); + } + else if (species == SPECIES_SOLGALEO) + { + MESSAGE("Foe Solgaleo can no longer escape because of Octolock!"); + ABILITY_POPUP(opponent, ABILITY_FULL_METAL_BODY); + MESSAGE("Foe Solgaleo's Full Metal Body prevents stat loss!"); + NOT MESSAGE("Foe Solgaleo's Defense fell!"); + NOT MESSAGE("Foe Solgaleo's Sp. Def fell!"); + } + } +} + +SINGLE_BATTLE_TEST("Octolock 3") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_PIDGEY) { Ability(ABILITY_BIG_PECKS); } + } WHEN { + TURN { MOVE(player, MOVE_OCTOLOCK); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_OCTOLOCK, player); + MESSAGE("Foe Pidgey can no longer escape because of Octolock!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + NOT MESSAGE("Foe Pidgey's Defense fell!"); + ABILITY_POPUP(opponent, ABILITY_BIG_PECKS); + MESSAGE("Foe Pidgey's Big Pecks prevents stat loss!"); + MESSAGE("Foe Wobbuffet's Sp. Def fell!"); + } +} + +SINGLE_BATTLE_TEST("Octolock 4") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_CLEAR_AMULET); } + } WHEN { + TURN { MOVE(player, MOVE_OCTOLOCK); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_OCTOLOCK, player); + MESSAGE("Foe Wobbuffet can no longer escape because of Octolock!"); + NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + NOT MESSAGE("Foe Wobbuffet's Defense fell!"); + NOT MESSAGE("Foe Wobbuffet's Sp. Def fell!"); + } +} diff --git a/test/battle/move_effect/syrup_bomb.c b/test/battle/move_effect/syrup_bomb.c index ae689b3629..08a3af95f9 100644 --- a/test/battle/move_effect/syrup_bomb.c +++ b/test/battle/move_effect/syrup_bomb.c @@ -32,9 +32,9 @@ SINGLE_BATTLE_TEST("Syrup Bomb is prevented by Bulletproof") TURN { MOVE(player, MOVE_SYRUP_BOMB); } } SCENE { ABILITY_POPUP(opponent, ABILITY_BULLETPROOF); - MESSAGE("Foe Chespin's Bulletproof blocks Syrup Bomb!"); NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_SYRUP_BOMB, player); NOT HP_BAR(opponent); + MESSAGE("Foe Chespin's Bulletproof blocks Syrup Bomb!"); } } @@ -57,6 +57,7 @@ SINGLE_BATTLE_TEST("Clear Body, White Smoke and Full Metal Body prevent Sticky S } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_SYRUP_BOMB, player); HP_BAR(opponent); + NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); if (species == SPECIES_BELDUM) { MESSAGE("Foe Beldum got covered in sticky syrup!"); @@ -75,8 +76,6 @@ SINGLE_BATTLE_TEST("Clear Body, White Smoke and Full Metal Body prevent Sticky S ABILITY_POPUP(opponent, ABILITY_FULL_METAL_BODY); MESSAGE("Foe Solgaleo's Full Metal Body prevents stat loss!"); } - NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); - NOT MESSAGE("Foe Beldum's Speed fell!"); } } @@ -91,8 +90,8 @@ SINGLE_BATTLE_TEST("Clear Amulet prevents Sticky Syrup speed reduction") ANIMATION(ANIM_TYPE_MOVE, MOVE_SYRUP_BOMB, player); HP_BAR(opponent); MESSAGE("Foe Wobbuffet got covered in sticky syrup!"); - MESSAGE("Foe Wobbuffet's Speed was not lowered!"); NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); NOT MESSAGE("Foe Wobbuffet's Speed fell!"); + MESSAGE("Foe Wobbuffet's Speed was not lowered!"); } } From 91b6722322727e2cc14b711176ba9c03b5bb2f71 Mon Sep 17 00:00:00 2001 From: Alex Date: Wed, 18 Oct 2023 20:25:34 +0200 Subject: [PATCH 11/36] Octolock, more tests --- asm/macros/battle_script.inc | 11 ++-- data/battle_scripts_1.s | 21 +++---- include/battle_scripts.h | 1 + include/constants/battle_script_commands.h | 55 +++++++++-------- include/constants/battle_string_ids.h | 2 +- src/battle_message.c | 5 +- src/battle_script_commands.c | 44 +++++++------- src/battle_util.c | 16 ++--- test/battle/hold_effect/clear_amulet.c | 34 ++--------- test/battle/move_effect/octolock.c | 37 ++++++++++-- test/battle/move_effect/syrup_bomb.c | 68 +++++++++++++++++++--- 11 files changed, 169 insertions(+), 125 deletions(-) diff --git a/asm/macros/battle_script.inc b/asm/macros/battle_script.inc index 866831c462..9bff248651 100644 --- a/asm/macros/battle_script.inc +++ b/asm/macros/battle_script.inc @@ -1366,6 +1366,12 @@ .byte \battler .endm + .macro setoctolock battler:req, failInstr:req + callnative BS_Octolock + .byte \battler + .4byte \failInstr + .endm + .macro setzeffect callnative BS_SetZEffect .endm @@ -2044,11 +2050,6 @@ .4byte \failInstr .endm - .macro setoctolock battler:req, failInstr:req - various \battler, VARIOUS_SET_OCTOLOCK - .4byte \failInstr - .endm - .macro cutonethirdhpraisestats failInstr:req various BS_ATTACKER, VARIOUS_CUT_1_3_HP_RAISE_STATS .4byte \failInstr diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 7f323dbd8b..08d70e4e04 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -437,7 +437,6 @@ gBattleScriptsForMoveEffects:: .4byte BattleScript_EffectMortalSpin @ EFFECT_MORTAL_SPIN .4byte BattleScript_EffectHit @ EFFECT_GIGATON_HAMMER .4byte BattleScript_EffectSaltCure @ EFFECT_SALT_CURE - .4byte BattleScript_EffectMatchaGotcha @ EFFECT_MATCHA_GOTCHA .4byte BattleScript_EffectSyrupBomb @ EFFECT_SYRUP_BOMB .4byte BattleScript_EffectHit @ EFFECT_IVY_CUDGEL @@ -447,17 +446,17 @@ BattleScript_EffectSyrupBomb:: call BattleScript_EffectHit_Ret seteffectwithchance tryfaintmon BS_TARGET + goto BattleScript_MoveEnd + +BattleScript_SyrupBombActivates:: printstring STRINGID_TARGETCOVEREDINSTICKYCANDYSYRUP waitmessage B_WAIT_TIME_LONG - goto BattleScript_MoveEnd + return BattleScript_SyrupBombEndTurn:: playstatchangeanimation BS_ATTACKER, BIT_SPEED, STAT_CHANGE_NEGATIVE setstatchanger STAT_SPEED, 1, TRUE statbuffchange STAT_CHANGE_ALLOW_PTR | STAT_CHANGE_NOT_PROTECT_AFFECTED, BattleScript_SyrupBombTurnDmgEnd -BattleScript_SyrupBombTurnDmgPrintMsg: - jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 3, BattleScript_SyrupBombTurnDmgEnd - jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 4, BattleScript_SyrupBombTurnDmgEnd printfromtable gStatDownStringIds waitmessage B_WAIT_TIME_LONG BattleScript_SyrupBombTurnDmgEnd: @@ -1068,18 +1067,14 @@ BattleScript_EffectOctolock: BattleScript_OctolockEndTurn:: playstatchangeanimation BS_ATTACKER, BIT_DEF | BIT_SPDEF, STAT_CHANGE_NEGATIVE setstatchanger STAT_DEF, 1, TRUE - statbuffchange STAT_CHANGE_ALLOW_PTR | STAT_CHANGE_NOT_PROTECT_AFFECTED, BattleScript_OctolockTryLowerDef + statbuffchange STAT_CHANGE_ALLOW_PTR | STAT_CHANGE_NOT_PROTECT_AFFECTED, BattleScript_OctolockTryLowerSpDef BattleScript_OctolockTryLowerDef: - jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 3, BattleScript_OctolockTryLowerSpDef - jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 4, BattleScript_OctolockTryLowerSpDef printfromtable gStatDownStringIds waitmessage B_WAIT_TIME_LONG BattleScript_OctolockTryLowerSpDef: setstatchanger STAT_SPDEF, 1, TRUE - statbuffchange STAT_CHANGE_ALLOW_PTR | STAT_CHANGE_NOT_PROTECT_AFFECTED, BattleScript_OctolockTurnDmgPrintMsg + statbuffchange STAT_CHANGE_ALLOW_PTR | STAT_CHANGE_NOT_PROTECT_AFFECTED, BattleScript_OctlockTurnDmgEnd BattleScript_OctolockTurnDmgPrintMsg: - jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 3, BattleScript_OctlockTurnDmgEnd - jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 4, BattleScript_OctlockTurnDmgEnd printfromtable gStatDownStringIds waitmessage B_WAIT_TIME_LONG BattleScript_OctlockTurnDmgEnd: @@ -8597,7 +8592,7 @@ BattleScript_IntimidatePrevented: pause B_WAIT_TIME_LONG setbyte gBattleCommunication STAT_ATK stattextbuffer BS_TARGET - printstring STRINGID_STATWASNOTLOWERED + printstring STRINGID_PKMNPREVENTSSTATLOSSWITH waitmessage B_WAIT_TIME_LONG call BattleScript_TryAdrenalineOrb goto BattleScript_IntimidateLoopIncrement @@ -8908,7 +8903,7 @@ BattleScript_AbilityNoStatLoss:: BattleScript_ItemNoStatLoss:: pause B_WAIT_TIME_SHORT - printstring STRINGID_STATWASNOTLOWERED + printstring STRINGID_CLEARAMULETWONTLOWERSTATS waitmessage B_WAIT_TIME_LONG return diff --git a/include/battle_scripts.h b/include/battle_scripts.h index c2a73d01fd..807f228f35 100644 --- a/include/battle_scripts.h +++ b/include/battle_scripts.h @@ -480,6 +480,7 @@ extern const u8 BattleScript_SelectingNotAllowedCurrentMove[]; extern const u8 BattleScript_SelectingNotAllowedCurrentMoveInPalace[]; extern const u8 BattleScript_SaltCureExtraDamage[]; extern const u8 BattleScript_SyrupBombEndTurn[]; +extern const u8 BattleScript_SyrupBombActivates[]; // zmoves extern const u8 BattleScript_ZMoveActivateDamaging[]; diff --git a/include/constants/battle_script_commands.h b/include/constants/battle_script_commands.h index 1775b9528e..087af0e301 100644 --- a/include/constants/battle_script_commands.h +++ b/include/constants/battle_script_commands.h @@ -221,34 +221,33 @@ #define VARIOUS_TRY_TAR_SHOT 128 #define VARIOUS_CAN_TAR_SHOT_WORK 129 #define VARIOUS_CHECK_POLTERGEIST 130 -#define VARIOUS_SET_OCTOLOCK 131 -#define VARIOUS_CUT_1_3_HP_RAISE_STATS 132 -#define VARIOUS_TRY_END_NEUTRALIZING_GAS 133 -#define VARIOUS_JUMP_IF_UNDER_200 134 -#define VARIOUS_SET_SKY_DROP 135 -#define VARIOUS_CLEAR_SKY_DROP 136 -#define VARIOUS_SKY_DROP_YAWN 137 -#define VARIOUS_JUMP_IF_HOLD_EFFECT 138 -#define VARIOUS_CURE_CERTAIN_STATUSES 139 -#define VARIOUS_TRY_RESET_NEGATIVE_STAT_STAGES 140 -#define VARIOUS_JUMP_IF_LAST_USED_ITEM_BERRY 141 -#define VARIOUS_JUMP_IF_LAST_USED_ITEM_HOLD_EFFECT 142 -#define VARIOUS_SAVE_BATTLER_ITEM 143 -#define VARIOUS_RESTORE_BATTLER_ITEM 144 -#define VARIOUS_BATTLER_ITEM_TO_LAST_USED_ITEM 145 -#define VARIOUS_SET_BEAK_BLAST 146 -#define VARIOUS_SWAP_SIDE_STATUSES 147 -#define VARIOUS_SWAP_STATS 148 -#define VARIOUS_TEATIME_INVUL 149 -#define VARIOUS_TEATIME_TARGETS 150 -#define VARIOUS_TRY_WIND_RIDER_POWER 151 -#define VARIOUS_ACTIVATE_WEATHER_CHANGE_ABILITIES 152 -#define VARIOUS_ACTIVATE_TERRAIN_CHANGE_ABILITIES 153 -#define VARIOUS_STORE_HEALING_WISH 154 -#define VARIOUS_HIT_SWITCH_TARGET_FAILED 155 -#define VARIOUS_TRY_REVIVAL_BLESSING 156 -#define VARIOUS_TRY_TRAINER_SLIDE_MSG_Z_MOVE 157 -#define VARIOUS_TRY_TRAINER_SLIDE_MSG_MEGA_EVOLUTION 158 +#define VARIOUS_CUT_1_3_HP_RAISE_STATS 131 +#define VARIOUS_TRY_END_NEUTRALIZING_GAS 132 +#define VARIOUS_JUMP_IF_UNDER_200 133 +#define VARIOUS_SET_SKY_DROP 134 +#define VARIOUS_CLEAR_SKY_DROP 135 +#define VARIOUS_SKY_DROP_YAWN 136 +#define VARIOUS_JUMP_IF_HOLD_EFFECT 137 +#define VARIOUS_CURE_CERTAIN_STATUSES 138 +#define VARIOUS_TRY_RESET_NEGATIVE_STAT_STAGES 139 +#define VARIOUS_JUMP_IF_LAST_USED_ITEM_BERRY 140 +#define VARIOUS_JUMP_IF_LAST_USED_ITEM_HOLD_EFFECT 141 +#define VARIOUS_SAVE_BATTLER_ITEM 142 +#define VARIOUS_RESTORE_BATTLER_ITEM 143 +#define VARIOUS_BATTLER_ITEM_TO_LAST_USED_ITEM 144 +#define VARIOUS_SET_BEAK_BLAST 145 +#define VARIOUS_SWAP_SIDE_STATUSES 146 +#define VARIOUS_SWAP_STATS 147 +#define VARIOUS_TEATIME_INVUL 148 +#define VARIOUS_TEATIME_TARGETS 149 +#define VARIOUS_TRY_WIND_RIDER_POWER 150 +#define VARIOUS_ACTIVATE_WEATHER_CHANGE_ABILITIES 151 +#define VARIOUS_ACTIVATE_TERRAIN_CHANGE_ABILITIES 152 +#define VARIOUS_STORE_HEALING_WISH 153 +#define VARIOUS_HIT_SWITCH_TARGET_FAILED 154 +#define VARIOUS_TRY_REVIVAL_BLESSING 155 +#define VARIOUS_TRY_TRAINER_SLIDE_MSG_Z_MOVE 156 +#define VARIOUS_TRY_TRAINER_SLIDE_MSG_MEGA_EVOLUTION 157 // Cmd_manipulatedamage #define DMG_CHANGE_SIGN 0 diff --git a/include/constants/battle_string_ids.h b/include/constants/battle_string_ids.h index 54b7a4437c..6998502d1f 100644 --- a/include/constants/battle_string_ids.h +++ b/include/constants/battle_string_ids.h @@ -547,7 +547,7 @@ #define STRINGID_NOONEWILLBEABLETORUNAWAY 545 #define STRINGID_DESTINYKNOTACTIVATES 546 #define STRINGID_CLOAKEDINAFREEZINGLIGHT 547 -#define STRINGID_STATWASNOTLOWERED 548 +#define STRINGID_CLEARAMULETWONTLOWERSTATS 548 #define STRINGID_FERVENTWISHREACHED 549 #define STRINGID_AIRLOCKACTIVATES 550 #define STRINGID_PRESSUREENTERS 551 diff --git a/src/battle_message.c b/src/battle_message.c index 3b5402b97f..a0139f315f 100644 --- a/src/battle_message.c +++ b/src/battle_message.c @@ -702,7 +702,7 @@ static const u8 sText_PkmnAbsorbingPower[] = _("{B_ATK_NAME_WITH_PREFIX} is abso static const u8 sText_NoOneWillBeAbleToRun[] = _("No one will be able to run away\nduring the next turn!"); static const u8 sText_DestinyKnotActivates[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} fell in love\nfrom the {B_LAST_ITEM}!"); static const u8 sText_CloakedInAFreezingLight[] = _("{B_ATK_NAME_WITH_PREFIX} became cloaked\nin a freezing light!"); -static const u8 sText_StatWasNotLowered[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_BUFF1}\nwas not lowered!"); +static const u8 sText_ClearAmuletWontLowerStats[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_LAST_ITEM} prevents\nits stats from being lowered!"); static const u8 sText_AuraFlaredToLife[] = _("{B_DEF_NAME_WITH_PREFIX}'s aura flared to life!"); static const u8 sText_AirLockActivates[] = _("The effects of weather\ndisappeared."); static const u8 sText_PressureActivates[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} is exerting its\npressure!"); @@ -812,7 +812,6 @@ static const u8 sText_TargetCoveredInStickyCandySyrup[] = _("{B_DEF_NAME_WITH_PR const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT] = { - [STRINGID_OPPORTUNISTCOPIED - BATTLESTRINGS_TABLE_START] = sText_OpportunistCopied, [STRINGID_TARGETISHURTBYSALTCURE - BATTLESTRINGS_TABLE_START] = sText_TargetIsHurtBySaltCure, [STRINGID_TARGETISBEINGSALTCURED - BATTLESTRINGS_TABLE_START] = sText_TargetIsBeingSaltCured, [STRINGID_CURRENTMOVECANTSELECT - BATTLESTRINGS_TABLE_START] = sText_CurrentMoveCantSelect, @@ -899,7 +898,7 @@ const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT] = [STRINGID_ASANDSTORMKICKEDUP - BATTLESTRINGS_TABLE_START] = sText_ASandstormKickedUp, [STRINGID_BATTLERABILITYRAISEDSTAT - BATTLESTRINGS_TABLE_START] = sText_BattlerAbilityRaisedStat, [STRINGID_FETCHEDPOKEBALL - BATTLESTRINGS_TABLE_START] = sText_FetchedPokeBall, - [STRINGID_STATWASNOTLOWERED - BATTLESTRINGS_TABLE_START] = sText_StatWasNotLowered, + [STRINGID_CLEARAMULETWONTLOWERSTATS - BATTLESTRINGS_TABLE_START] = sText_ClearAmuletWontLowerStats, [STRINGID_CLOAKEDINAFREEZINGLIGHT - BATTLESTRINGS_TABLE_START] = sText_CloakedInAFreezingLight, [STRINGID_DESTINYKNOTACTIVATES - BATTLESTRINGS_TABLE_START] = sText_DestinyKnotActivates, [STRINGID_NOONEWILLBEABLETORUNAWAY - BATTLESTRINGS_TABLE_START] = sText_NoOneWillBeAbleToRun, diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index b415f25d52..0f3217d40d 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -3645,15 +3645,12 @@ void SetMoveEffect(bool32 primary, u32 certain) break; case MOVE_EFFECT_SYRUP_BOMB: - if (gStatuses4[gEffectBattler] & STATUS4_SYRUP_BOMB) - { - gBattlescriptCurrInstr++; - } - else + if (!(gStatuses4[gEffectBattler] & STATUS4_SYRUP_BOMB)) { gStatuses4[gEffectBattler] |= STATUS4_SYRUP_BOMB; gDisableStructs[gBattlerTarget].syrupBombTimer = 3; - gBattlescriptCurrInstr++; + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_SyrupBombActivates; } break; } @@ -10354,22 +10351,6 @@ static void Cmd_various(void) } return; } - case VARIOUS_SET_OCTOLOCK: - { - VARIOUS_ARGS(const u8 *failInstr); - if (gDisableStructs[battler].octolock) - { - gBattlescriptCurrInstr = cmd->failInstr; - } - else - { - gDisableStructs[battler].octolock = TRUE; - gBattleMons[battler].status2 |= STATUS2_ESCAPE_PREVENTION; - gDisableStructs[battler].battlerPreventingEscape = gBattlerAttacker; - gBattlescriptCurrInstr = cmd->nextInstr; - } - return; - } case VARIOUS_CHECK_POLTERGEIST: { VARIOUS_ARGS(const u8 *failInstr); @@ -11418,6 +11399,7 @@ static u32 ChangeStatBuffs(s8 statValue, u32 statId, u32 flags, const u8 *BS_ptr gBattleScripting.battler = battler; if (battlerHoldEffect == HOLD_EFFECT_CLEAR_AMULET) { + gLastUsedItem = gBattleMons[battler].item; gBattlescriptCurrInstr = BattleScript_ItemNoStatLoss; RecordItemEffectBattle(battler, HOLD_EFFECT_CLEAR_AMULET); } @@ -16260,3 +16242,21 @@ void BS_JumpIfTerrainAffected(void) else gBattlescriptCurrInstr = cmd->nextInstr; } + +void BS_Octolock(void) +{ + NATIVE_ARGS(u8 battler, const u8 *failInstr); + u32 battler = GetBattlerForBattleScript(cmd->battler); + + if (gDisableStructs[battler].octolock) + { + gBattlescriptCurrInstr = cmd->failInstr; + } + else + { + gDisableStructs[battler].octolock = TRUE; + gBattleMons[battler].status2 |= STATUS2_ESCAPE_PREVENTION; + gDisableStructs[battler].battlerPreventingEscape = gBattlerAttacker; + gBattlescriptCurrInstr = cmd->nextInstr; + } +} \ No newline at end of file diff --git a/src/battle_util.c b/src/battle_util.c index 32bbf7f7e0..b7b8dd089d 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -3090,19 +3090,11 @@ u8 DoBattlerEndTurnEffects(void) case ENDTURN_SYRUP_BOMB: if ((gStatuses4[battler] & STATUS4_SYRUP_BOMB) && (gBattleMons[battler].hp != 0)) { - gDisableStructs[battler].syrupBombTimer--; - if (gDisableStructs[battler].syrupBombTimer == 0) - { + if (gDisableStructs[battler].syrupBombTimer > 0 && --gDisableStructs[battler].syrupBombTimer == 0) gStatuses4[battler] &= ~STATUS4_SYRUP_BOMB; - PREPARE_MOVE_BUFFER(gBattleTextBuff1, MOVE_SYRUP_BOMB); - gBattlescriptCurrInstr = BattleScript_WrapEnds; - } - else if (gDisableStructs[battler].syrupBombTimer != 0) - { - gBattlerTarget = battler; - PREPARE_MOVE_BUFFER(gBattleTextBuff1, MOVE_SYRUP_BOMB); - gBattlescriptCurrInstr = BattleScript_SyrupBombEndTurn; - } + gBattlerTarget = battler; + PREPARE_MOVE_BUFFER(gBattleTextBuff1, MOVE_SYRUP_BOMB); + gBattlescriptCurrInstr = BattleScript_SyrupBombEndTurn; BattleScriptExecute(gBattlescriptCurrInstr); effect++; } diff --git a/test/battle/hold_effect/clear_amulet.c b/test/battle/hold_effect/clear_amulet.c index 39e6c22a69..fd695f06b5 100644 --- a/test/battle/hold_effect/clear_amulet.c +++ b/test/battle/hold_effect/clear_amulet.c @@ -21,8 +21,8 @@ SINGLE_BATTLE_TEST("Clear Amulet prevents Intimidate") } SCENE { HP_BAR(player, captureDamage: &turnOneHit); ABILITY_POPUP(player, ABILITY_INTIMIDATE); - NONE_OF { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); } - MESSAGE("Foe Wobbuffet's Attack was not lowered!"); + NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + MESSAGE("Foe Wobbuffet's Clear Amulet prevents its stats from being lowered!"); HP_BAR(player, captureDamage: &turnTwoHit); } THEN { EXPECT_EQ(turnOneHit, turnTwoHit); @@ -55,31 +55,8 @@ SINGLE_BATTLE_TEST("Clear Amulet prevents stat reducing effects") } WHEN { TURN { MOVE(player, move); } } SCENE { - NONE_OF { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); } - switch (move) - { - case MOVE_GROWL: - MESSAGE("Foe Wobbuffet's Attack was not lowered!"); - break; - case MOVE_LEER: - MESSAGE("Foe Wobbuffet's Defense was not lowered!"); - break; - case MOVE_CONFIDE: - MESSAGE("Foe Wobbuffet's Sp. Atk was not lowered!"); - break; - case MOVE_FAKE_TEARS: - MESSAGE("Foe Wobbuffet's Sp. Def was not lowered!"); - break; - case MOVE_SCARY_FACE: - MESSAGE("Foe Wobbuffet's Speed was not lowered!"); - break; - case MOVE_SWEET_SCENT: - MESSAGE("Foe Wobbuffet's evasiveness was not lowered!"); - break; - case MOVE_SAND_ATTACK: - MESSAGE("Foe Wobbuffet's accuracy was not lowered!"); - break; - } + NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + MESSAGE("Foe Wobbuffet's Clear Amulet prevents its stats from being lowered!"); } } @@ -106,6 +83,7 @@ SINGLE_BATTLE_TEST("Clear Amulet prevents secondary effects that reduce stats") } WHEN { TURN { MOVE(player, MOVE_ROCK_SMASH); } } SCENE { - NONE_OF { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); } + NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + NOT MESSAGE("Foe Wobbuffet's Clear Amulet prevents its stats from being lowered!"); } } diff --git a/test/battle/move_effect/octolock.c b/test/battle/move_effect/octolock.c index f3249dd5ce..2f70db39cf 100644 --- a/test/battle/move_effect/octolock.c +++ b/test/battle/move_effect/octolock.c @@ -1,7 +1,7 @@ #include "global.h" #include "test/battle.h" -SINGLE_BATTLE_TEST("Octolock") +SINGLE_BATTLE_TEST("Octolock decreases Defense and Sp. Def by at the end of the turn") { GIVEN { PLAYER(SPECIES_WOBBUFFET); @@ -18,7 +18,7 @@ SINGLE_BATTLE_TEST("Octolock") } } -SINGLE_BATTLE_TEST("Octolock 2") +SINGLE_BATTLE_TEST("Octolock reduction is prevented by Clear Body, White Smoke and Full Metal Body") { u32 species; u32 ability; @@ -62,7 +62,7 @@ SINGLE_BATTLE_TEST("Octolock 2") } } -SINGLE_BATTLE_TEST("Octolock 3") +SINGLE_BATTLE_TEST("Octolock Defense reduction is prevented by Big Pecks") { GIVEN { PLAYER(SPECIES_WOBBUFFET); @@ -75,23 +75,48 @@ SINGLE_BATTLE_TEST("Octolock 3") ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); NOT MESSAGE("Foe Pidgey's Defense fell!"); ABILITY_POPUP(opponent, ABILITY_BIG_PECKS); - MESSAGE("Foe Pidgey's Big Pecks prevents stat loss!"); - MESSAGE("Foe Wobbuffet's Sp. Def fell!"); + MESSAGE("Foe Pidgey's Big Pecks prevents Defense loss!"); + MESSAGE("Foe Pidgey's Sp. Def fell!"); } } -SINGLE_BATTLE_TEST("Octolock 4") +SINGLE_BATTLE_TEST("Octolock reduction is prevented by Clear Amulet") { GIVEN { PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_CLEAR_AMULET); } } WHEN { TURN { MOVE(player, MOVE_OCTOLOCK); } + TURN {} } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_OCTOLOCK, player); MESSAGE("Foe Wobbuffet can no longer escape because of Octolock!"); + MESSAGE("Foe Wobbuffet's Clear Amulet prevents its stats from being lowered!"); NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); NOT MESSAGE("Foe Wobbuffet's Defense fell!"); NOT MESSAGE("Foe Wobbuffet's Sp. Def fell!"); } } + +SINGLE_BATTLE_TEST("Octolock will not decrease Defense and Sp. Def further then minus six") +{ + u8 j; + + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_OCTOLOCK); } + for (j = 0; j < 6; j++) + TURN {} + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_OCTOLOCK, player); + for (j = 0; j < 5; j++) + MESSAGE("Foe Wobbuffet's Defense fell!"); + MESSAGE("Foe Wobbuffet's Sp. Def fell!"); + MESSAGE("Foe Wobbuffet's Defense won't go lower!"); + MESSAGE("Foe Wobbuffet's Sp. Def won't go lower!"); + NOT MESSAGE("Foe Wobbuffet's Defense fell!"); + NOT MESSAGE("Foe Wobbuffet's Sp. Def fell!"); + } +} diff --git a/test/battle/move_effect/syrup_bomb.c b/test/battle/move_effect/syrup_bomb.c index 08a3af95f9..7c3808def8 100644 --- a/test/battle/move_effect/syrup_bomb.c +++ b/test/battle/move_effect/syrup_bomb.c @@ -3,14 +3,15 @@ SINGLE_BATTLE_TEST("Syrup Bomb covers the foe in sticky syrup for 3 turns") { + u8 j; + GIVEN { PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(player, MOVE_SYRUP_BOMB); } - TURN {} - TURN {} - TURN {} + for (j = 0; j < 4; j++) + TURN {} } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_SYRUP_BOMB, player); HP_BAR(opponent); @@ -19,7 +20,30 @@ SINGLE_BATTLE_TEST("Syrup Bomb covers the foe in sticky syrup for 3 turns") MESSAGE("Foe Wobbuffet's Speed fell!"); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); MESSAGE("Foe Wobbuffet's Speed fell!"); - MESSAGE("Foe Wobbuffet was freed from Syrup Bomb!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + MESSAGE("Foe Wobbuffet's Speed fell!"); + NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + NOT MESSAGE("Foe Wobbuffet's Speed fell!"); + } +} + +SINGLE_BATTLE_TEST("Target will be not covered in sticky syrup again if it is currently covered") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_SYRUP_BOMB); } + TURN { MOVE(player, MOVE_SYRUP_BOMB); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SYRUP_BOMB, player); + HP_BAR(opponent); + MESSAGE("Foe Wobbuffet got covered in sticky syrup!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + MESSAGE("Foe Wobbuffet's Speed fell!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SYRUP_BOMB, player); + HP_BAR(opponent); + NOT MESSAGE("Foe Wobbuffet got covered in sticky syrup!"); } } @@ -32,9 +56,9 @@ SINGLE_BATTLE_TEST("Syrup Bomb is prevented by Bulletproof") TURN { MOVE(player, MOVE_SYRUP_BOMB); } } SCENE { ABILITY_POPUP(opponent, ABILITY_BULLETPROOF); + MESSAGE("Foe Chespin's Bulletproof blocks Syrup Bomb!"); NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_SYRUP_BOMB, player); NOT HP_BAR(opponent); - MESSAGE("Foe Chespin's Bulletproof blocks Syrup Bomb!"); } } @@ -63,23 +87,29 @@ SINGLE_BATTLE_TEST("Clear Body, White Smoke and Full Metal Body prevent Sticky S MESSAGE("Foe Beldum got covered in sticky syrup!"); ABILITY_POPUP(opponent, ABILITY_CLEAR_BODY); MESSAGE("Foe Beldum's Clear Body prevents stat loss!"); + NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + NOT MESSAGE("Foe Beldum's Speed fell!"); } else if (species == SPECIES_TORKOAL) { MESSAGE("Foe Torkoal got covered in sticky syrup!"); ABILITY_POPUP(opponent, ABILITY_WHITE_SMOKE); MESSAGE("Foe Torkoal's White Smoke prevents stat loss!"); + NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + NOT MESSAGE("Foe Torkoal's Speed fell!"); } else if (species == SPECIES_SOLGALEO) { MESSAGE("Foe Solgaleo got covered in sticky syrup!"); ABILITY_POPUP(opponent, ABILITY_FULL_METAL_BODY); MESSAGE("Foe Solgaleo's Full Metal Body prevents stat loss!"); + NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + NOT MESSAGE("Foe Solgaleo's Speed fell!"); } } } -SINGLE_BATTLE_TEST("Clear Amulet prevents Sticky Syrup speed reduction") +SINGLE_BATTLE_TEST("Sticky Syrup speed reduction is prevented by Clear Amulet") { GIVEN { PLAYER(SPECIES_WOBBUFFET); @@ -90,8 +120,32 @@ SINGLE_BATTLE_TEST("Clear Amulet prevents Sticky Syrup speed reduction") ANIMATION(ANIM_TYPE_MOVE, MOVE_SYRUP_BOMB, player); HP_BAR(opponent); MESSAGE("Foe Wobbuffet got covered in sticky syrup!"); + MESSAGE("Foe Wobbuffet's Clear Amulet prevents its stats from being lowered!"); + NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + NOT MESSAGE("Foe Wobbuffet's Speed fell!"); + } +} + +SINGLE_BATTLE_TEST("Sticky syrup will not decrease speed further then minus six") +{ + u8 j; + + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + for (j = 0; j < 3; j++) + TURN { MOVE(player, MOVE_SCARY_FACE); } + TURN { MOVE(player, MOVE_SYRUP_BOMB); } + TURN {} + } SCENE { + for (j = 0; j < 3; j++) + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCARY_FACE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SYRUP_BOMB, player); + HP_BAR(opponent); + MESSAGE("Foe Wobbuffet got covered in sticky syrup!"); + MESSAGE("Foe Wobbuffet's Speed won't go lower!"); NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); NOT MESSAGE("Foe Wobbuffet's Speed fell!"); - MESSAGE("Foe Wobbuffet's Speed was not lowered!"); } } From 354f84be21e90cd6468e05524cb6159ed8e54651 Mon Sep 17 00:00:00 2001 From: Alex Date: Wed, 18 Oct 2023 22:14:49 +0200 Subject: [PATCH 12/36] intim changes --- data/battle_scripts_1.s | 17 ----------------- src/battle_message.c | 1 + src/battle_script_commands.c | 10 ++++++++-- test/battle/ability/hyper_cutter.c | 2 +- test/battle/ability/inner_focus.c | 2 +- test/battle/ability/oblivious.c | 2 +- test/battle/ability/opportunist.c | 4 ++-- test/battle/ability/own_tempo.c | 2 +- test/battle/ability/scrappy.c | 2 +- 9 files changed, 16 insertions(+), 26 deletions(-) diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 08d70e4e04..8c2389054c 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -8548,13 +8548,6 @@ BattleScript_IntimidateLoop: jumpiftargetally BattleScript_IntimidateLoopIncrement jumpifabsent BS_TARGET, BattleScript_IntimidateLoopIncrement jumpifstatus2 BS_TARGET, STATUS2_SUBSTITUTE, BattleScript_IntimidateLoopIncrement - jumpifability BS_TARGET, ABILITY_HYPER_CUTTER, BattleScript_IntimidatePrevented -.if B_UPDATED_INTIMIDATE >= GEN_8 - jumpifability BS_TARGET, ABILITY_INNER_FOCUS, BattleScript_IntimidatePrevented - jumpifability BS_TARGET, ABILITY_SCRAPPY, BattleScript_IntimidatePrevented - jumpifability BS_TARGET, ABILITY_OWN_TEMPO, BattleScript_IntimidatePrevented - jumpifability BS_TARGET, ABILITY_OBLIVIOUS, BattleScript_IntimidatePrevented -.endif jumpifability BS_TARGET, ABILITY_GUARD_DOG, BattleScript_IntimidateInReverse BattleScript_IntimidateEffect: copybyte sBATTLER, gBattlerAttacker @@ -8587,16 +8580,6 @@ BattleScript_IntimidateContrary_WontIncrease: printstring STRINGID_TARGETSTATWONTGOHIGHER goto BattleScript_IntimidateEffect_WaitString -BattleScript_IntimidatePrevented: - call BattleScript_AbilityPopUp - pause B_WAIT_TIME_LONG - setbyte gBattleCommunication STAT_ATK - stattextbuffer BS_TARGET - printstring STRINGID_PKMNPREVENTSSTATLOSSWITH - waitmessage B_WAIT_TIME_LONG - call BattleScript_TryAdrenalineOrb - goto BattleScript_IntimidateLoopIncrement - BattleScript_IntimidateInReverse: copybyte sBATTLER, gBattlerTarget call BattleScript_AbilityPopUpTarget diff --git a/src/battle_message.c b/src/battle_message.c index a0139f315f..0b58caaf34 100644 --- a/src/battle_message.c +++ b/src/battle_message.c @@ -812,6 +812,7 @@ static const u8 sText_TargetCoveredInStickyCandySyrup[] = _("{B_DEF_NAME_WITH_PR const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT] = { + [STRINGID_OPPORTUNISTCOPIED - BATTLESTRINGS_TABLE_START] = sText_OpportunistCopied, [STRINGID_TARGETISHURTBYSALTCURE - BATTLESTRINGS_TABLE_START] = sText_TargetIsHurtBySaltCure, [STRINGID_TARGETISBEINGSALTCURED - BATTLESTRINGS_TABLE_START] = sText_TargetIsBeingSaltCured, [STRINGID_CURRENTMOVECANTSELECT - BATTLESTRINGS_TABLE_START] = sText_CurrentMoveCantSelect, diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 0f3217d40d..d4d0fcf21a 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -11384,7 +11384,13 @@ static u32 ChangeStatBuffs(s8 statValue, u32 statId, u32 flags, const u8 *BS_ptr else if ((battlerHoldEffect == HOLD_EFFECT_CLEAR_AMULET || battlerAbility == ABILITY_CLEAR_BODY || battlerAbility == ABILITY_FULL_METAL_BODY - || battlerAbility == ABILITY_WHITE_SMOKE) + || battlerAbility == ABILITY_WHITE_SMOKE + || (battlerAbility == ABILITY_HYPER_CUTTER && statId == STAT_ATK)) + || ((B_UPDATED_INTIMIDATE >= GEN_8) && statId == STAT_ATK + && (battlerAbility == ABILITY_INNER_FOCUS + || battlerAbility == ABILITY_SCRAPPY + || battlerAbility == ABILITY_OWN_TEMPO + || battlerAbility == ABILITY_OBLIVIOUS)) && (!affectsUser || mirrorArmored) && !certain && gCurrentMove != MOVE_CURSE) { if (flags == STAT_CHANGE_ALLOW_PTR) @@ -16259,4 +16265,4 @@ void BS_Octolock(void) gDisableStructs[battler].battlerPreventingEscape = gBattlerAttacker; gBattlescriptCurrInstr = cmd->nextInstr; } -} \ No newline at end of file +} diff --git a/test/battle/ability/hyper_cutter.c b/test/battle/ability/hyper_cutter.c index ac942039bb..4155cc5a12 100644 --- a/test/battle/ability/hyper_cutter.c +++ b/test/battle/ability/hyper_cutter.c @@ -19,7 +19,7 @@ SINGLE_BATTLE_TEST("Hyper Cutter prevents intimidate") ABILITY_POPUP(player, ABILITY_INTIMIDATE); NONE_OF { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); } ABILITY_POPUP(opponent, ABILITY_HYPER_CUTTER); - MESSAGE("Foe Krabby's Attack was not lowered!"); + MESSAGE("Foe Krabby's Hyper Cutter prevents stat loss!"); HP_BAR(player, captureDamage: &turnTwoHit); } THEN { EXPECT_EQ(turnOneHit, turnTwoHit); diff --git a/test/battle/ability/inner_focus.c b/test/battle/ability/inner_focus.c index 574c860a74..ecd71272cb 100644 --- a/test/battle/ability/inner_focus.c +++ b/test/battle/ability/inner_focus.c @@ -20,7 +20,7 @@ SINGLE_BATTLE_TEST("Inner Focus prevents intimidate") ABILITY_POPUP(player, ABILITY_INTIMIDATE); NONE_OF { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); } ABILITY_POPUP(opponent, ABILITY_INNER_FOCUS); - MESSAGE("Foe Zubat's Attack was not lowered!"); + MESSAGE("Foe Zubat's Inner Focus prevents stat loss!"); HP_BAR(player, captureDamage: &turnTwoHit); } THEN { EXPECT_EQ(turnOneHit, turnTwoHit); diff --git a/test/battle/ability/oblivious.c b/test/battle/ability/oblivious.c index 51d27bb169..b851256acc 100644 --- a/test/battle/ability/oblivious.c +++ b/test/battle/ability/oblivious.c @@ -63,6 +63,6 @@ SINGLE_BATTLE_TEST("Oblivious prevents Intimidate") ABILITY_POPUP(opponent, ABILITY_INTIMIDATE); ABILITY_POPUP(player, ABILITY_OBLIVIOUS); NONE_OF { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); } - MESSAGE("Slowpoke's Attack was not lowered!"); + MESSAGE("Slowpoke's Oblivious prevents stat loss!"); } } diff --git a/test/battle/ability/opportunist.c b/test/battle/ability/opportunist.c index f344bd026f..2f0c5c8c84 100644 --- a/test/battle/ability/opportunist.c +++ b/test/battle/ability/opportunist.c @@ -69,7 +69,7 @@ DOUBLE_BATTLE_TEST("Opportunist raises Attack only once when partner has Intimid ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentRight); MESSAGE("Mightyena's Intimidate cuts Foe Spinda's attack!"); } - + if ((abilityLeft == ABILITY_CONTRARY && abilityRight != ABILITY_CONTRARY) || (abilityLeft != ABILITY_CONTRARY && abilityRight == ABILITY_CONTRARY)) { ABILITY_POPUP(playerRight, ABILITY_OPPORTUNIST); @@ -82,7 +82,7 @@ DOUBLE_BATTLE_TEST("Opportunist raises Attack only once when partner has Intimid ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerRight); MESSAGE("Wobbuffet's Attack sharply rose!"); } - + HP_BAR(playerLeft, captureDamage: &results[i].damageLeft); HP_BAR(playerRight, captureDamage: &results[i].damageRight); } THEN { diff --git a/test/battle/ability/own_tempo.c b/test/battle/ability/own_tempo.c index 4c6a3167f6..9babd52589 100644 --- a/test/battle/ability/own_tempo.c +++ b/test/battle/ability/own_tempo.c @@ -20,7 +20,7 @@ SINGLE_BATTLE_TEST("Own Tempo prevents intimidate") ABILITY_POPUP(player, ABILITY_INTIMIDATE); NONE_OF { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); } ABILITY_POPUP(opponent, ABILITY_OWN_TEMPO); - MESSAGE("Foe Slowpoke's Attack was not lowered!"); + MESSAGE("Foe Slowpoke's Own Tempo prevents stat loss!"); HP_BAR(player, captureDamage: &turnTwoHit); } THEN { EXPECT_EQ(turnOneHit, turnTwoHit); diff --git a/test/battle/ability/scrappy.c b/test/battle/ability/scrappy.c index df4ededa4e..22b6660b69 100644 --- a/test/battle/ability/scrappy.c +++ b/test/battle/ability/scrappy.c @@ -20,7 +20,7 @@ SINGLE_BATTLE_TEST("Scrappy prevents intimidate") ABILITY_POPUP(player, ABILITY_INTIMIDATE); NONE_OF { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); } ABILITY_POPUP(opponent, ABILITY_SCRAPPY); - MESSAGE("Foe Kangaskhan's Attack was not lowered!"); + MESSAGE("Foe Kangaskhan's Scrappy prevents stat loss!"); HP_BAR(player, captureDamage: &turnTwoHit); } THEN { EXPECT_EQ(turnOneHit, turnTwoHit); From 876341105bcf003e6cdc309830f1289ef3f6ef64 Mon Sep 17 00:00:00 2001 From: Alex Date: Thu, 19 Oct 2023 11:32:58 +0200 Subject: [PATCH 13/36] parantheses --- src/battle_script_commands.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index d4d0fcf21a..19879ba9b3 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -11381,16 +11381,15 @@ static u32 ChangeStatBuffs(s8 statValue, u32 statId, u32 flags, const u8 *BS_ptr gBattlescriptCurrInstr = BattleScript_ButItFailed; return STAT_CHANGE_DIDNT_WORK; } - else if ((battlerHoldEffect == HOLD_EFFECT_CLEAR_AMULET + else if (((battlerHoldEffect == HOLD_EFFECT_CLEAR_AMULET || battlerAbility == ABILITY_CLEAR_BODY || battlerAbility == ABILITY_FULL_METAL_BODY - || battlerAbility == ABILITY_WHITE_SMOKE - || (battlerAbility == ABILITY_HYPER_CUTTER && statId == STAT_ATK)) + || battlerAbility == ABILITY_WHITE_SMOKE) || ((B_UPDATED_INTIMIDATE >= GEN_8) && statId == STAT_ATK && (battlerAbility == ABILITY_INNER_FOCUS || battlerAbility == ABILITY_SCRAPPY || battlerAbility == ABILITY_OWN_TEMPO - || battlerAbility == ABILITY_OBLIVIOUS)) + || battlerAbility == ABILITY_OBLIVIOUS))) && (!affectsUser || mirrorArmored) && !certain && gCurrentMove != MOVE_CURSE) { if (flags == STAT_CHANGE_ALLOW_PTR) From 535768838f142f9a8ba53dc1a13db3652e5c1c10 Mon Sep 17 00:00:00 2001 From: Alex Date: Thu, 19 Oct 2023 21:28:27 +0200 Subject: [PATCH 14/36] Hyper Cutter tests --- test/battle/ability/hyper_cutter.c | 116 ++++++++++++++++++++++++++--- 1 file changed, 107 insertions(+), 9 deletions(-) diff --git a/test/battle/ability/hyper_cutter.c b/test/battle/ability/hyper_cutter.c index cde108e4c3..10be6fa725 100644 --- a/test/battle/ability/hyper_cutter.c +++ b/test/battle/ability/hyper_cutter.c @@ -7,9 +7,9 @@ SINGLE_BATTLE_TEST("Hyper Cutter prevents intimidate") s16 turnTwoHit; GIVEN { - PLAYER(SPECIES_EKANS) { Ability(ABILITY_SHED_SKIN); }; - PLAYER(SPECIES_EKANS) { Ability(ABILITY_INTIMIDATE); }; - OPPONENT(SPECIES_KRABBY) { Ability(ABILITY_HYPER_CUTTER); }; + PLAYER(SPECIES_EKANS) { Ability(ABILITY_SHED_SKIN); } + PLAYER(SPECIES_EKANS) { Ability(ABILITY_INTIMIDATE); } + OPPONENT(SPECIES_KRABBY) { Ability(ABILITY_HYPER_CUTTER); } } WHEN { TURN { MOVE(opponent, MOVE_TACKLE); } TURN { SWITCH(player, 1); MOVE(opponent, MOVE_TACKLE); } @@ -26,10 +26,108 @@ SINGLE_BATTLE_TEST("Hyper Cutter prevents intimidate") } } -TO_DO_BATTLE_TEST("Hyper Cutter prevents Attack stage reduction from moves"); // Growl -TO_DO_BATTLE_TEST("Hyper Cutter doesn't prevent Attack stage reduction from moves used by the user"); // e.g. Superpower -TO_DO_BATTLE_TEST("Hyper Cutter doesn't prevent Attack reduction from burn"); +SINGLE_BATTLE_TEST("Hyper Cutter prevents Attack stage reduction from moves") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_GROWL].effect == EFFECT_ATTACK_DOWN); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_KRABBY) { Ability(ABILITY_HYPER_CUTTER); } + } WHEN { + TURN { MOVE(player, MOVE_GROWL); } + } SCENE { + ABILITY_POPUP(opponent, ABILITY_HYPER_CUTTER); + MESSAGE("Foe Krabby's Hyper Cutter prevents Attack loss!"); + } +} + +SINGLE_BATTLE_TEST("Hyper Cutter doesn't prevent Attack reduction from burn") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_WILL_O_WISP].effect == EFFECT_WILL_O_WISP); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_KRABBY) { Ability(ABILITY_HYPER_CUTTER); } + } WHEN { + TURN { MOVE(player, MOVE_WILL_O_WISP); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_WILL_O_WISP, player); + MESSAGE("Foe Krabby was burned!"); + } THEN { + EXPECT_EQ(opponent->statStages[STAT_ATK], DEFAULT_STAT_STAGE); + } +} + +SINGLE_BATTLE_TEST("Hyper Cutter is ignored by Mold Breaker") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_GROWL].effect == EFFECT_ATTACK_DOWN); + PLAYER(SPECIES_PINSIR) { Ability(ABILITY_MOLD_BREAKER); } + OPPONENT(SPECIES_KRABBY) { Ability(ABILITY_HYPER_CUTTER); } + } WHEN { + TURN { MOVE(player, MOVE_GROWL); } + } SCENE { + ABILITY_POPUP(player, ABILITY_MOLD_BREAKER); + MESSAGE("Pinsir breaks the mold!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_GROWL, player); + MESSAGE("Foe Krabby's Attack fell!"); + NOT ABILITY_POPUP(opponent, ABILITY_HYPER_CUTTER); + NOT MESSAGE("Foe Krabby's Hyper Cutter prevents Attack loss!"); + } +} + +SINGLE_BATTLE_TEST("Hyper Cutter doesn't prevent Attack stage reduction from moves used by the user") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_SUPERPOWER].effect == EFFECT_SUPERPOWER); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_KRABBY) { Ability(ABILITY_HYPER_CUTTER); } + } WHEN { + TURN { MOVE(opponent, MOVE_SUPERPOWER); } + TURN {} + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SUPERPOWER, opponent); + MESSAGE("Foe Krabby's Attack fell!"); + MESSAGE("Foe Krabby's Defense fell!"); + } THEN { + EXPECT_EQ(opponent->statStages[STAT_ATK], DEFAULT_STAT_STAGE - 1); + } +} + +SINGLE_BATTLE_TEST("Hyper Cutter doesn't prevent Topsy-Turvy") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_SWORDS_DANCE].effect == EFFECT_ATTACK_UP_2); + ASSUME(gBattleMoves[MOVE_TOPSY_TURVY].effect == EFFECT_TOPSY_TURVY); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_KRABBY) { Ability(ABILITY_HYPER_CUTTER); } + } WHEN { + TURN { MOVE(opponent, MOVE_SWORDS_DANCE); MOVE(player, MOVE_TOPSY_TURVY); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SWORDS_DANCE, opponent); + MESSAGE("Foe Krabby's Attack sharply rose!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TOPSY_TURVY, player); + MESSAGE("Foe Krabby's stat changes were all reversed!"); + } THEN { + EXPECT_EQ(opponent->statStages[STAT_ATK], DEFAULT_STAT_STAGE - 2); + } +} + +SINGLE_BATTLE_TEST("xx Hyper Cutter doesn't prevent Spectral Thief from resetting positive Attack stage changes") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_SWORDS_DANCE].effect == EFFECT_ATTACK_UP_2); + ASSUME(gBattleMoves[MOVE_SPECTRAL_THIEF].effect == EFFECT_SPECTRAL_THIEF); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_KRABBY) { Ability(ABILITY_HYPER_CUTTER); } + } WHEN { + TURN { MOVE(opponent, MOVE_SWORDS_DANCE); MOVE(player, MOVE_SPECTRAL_THIEF); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SWORDS_DANCE, opponent); + MESSAGE("Foe Krabby's Attack sharply rose!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SPECTRAL_THIEF, player); + MESSAGE("Wobbuffet stole the target's boosted stats!"); + } THEN { + EXPECT_EQ(opponent->statStages[STAT_ATK], DEFAULT_STAT_STAGE); + } +} + TO_DO_BATTLE_TEST("Hyper Cutter doesn't prevent receiving negative Attack stage changes from Baton Pass"); -TO_DO_BATTLE_TEST("Hyper Cutter doesn't prevent Topsy-Turvy"); -TO_DO_BATTLE_TEST("Hyper Cutter doesn't prevent Spectral Thief from resetting positive Attack stage changes"); -TO_DO_BATTLE_TEST("Hyper Cutter is ignored by Mold Breaker"); From f3580aa3f56005917aed8ed350b76d9078069777 Mon Sep 17 00:00:00 2001 From: Alex Date: Thu, 19 Oct 2023 21:31:04 +0200 Subject: [PATCH 15/36] tabs --- data/battle_scripts_1.s | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index cfb2d03cc9..a279a8f0bc 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -456,7 +456,7 @@ BattleScript_SyrupBombActivates:: BattleScript_SyrupBombEndTurn:: playstatchangeanimation BS_ATTACKER, BIT_SPEED, STAT_CHANGE_NEGATIVE setstatchanger STAT_SPEED, 1, TRUE - statbuffchange STAT_CHANGE_ALLOW_PTR | STAT_CHANGE_NOT_PROTECT_AFFECTED, BattleScript_SyrupBombTurnDmgEnd + statbuffchange STAT_CHANGE_ALLOW_PTR | STAT_CHANGE_NOT_PROTECT_AFFECTED, BattleScript_SyrupBombTurnDmgEnd printfromtable gStatDownStringIds waitmessage B_WAIT_TIME_LONG BattleScript_SyrupBombTurnDmgEnd: @@ -1067,13 +1067,13 @@ BattleScript_EffectOctolock: BattleScript_OctolockEndTurn:: playstatchangeanimation BS_ATTACKER, BIT_DEF | BIT_SPDEF, STAT_CHANGE_NEGATIVE setstatchanger STAT_DEF, 1, TRUE - statbuffchange STAT_CHANGE_ALLOW_PTR | STAT_CHANGE_NOT_PROTECT_AFFECTED, BattleScript_OctolockTryLowerSpDef + statbuffchange STAT_CHANGE_ALLOW_PTR | STAT_CHANGE_NOT_PROTECT_AFFECTED, BattleScript_OctolockTryLowerSpDef BattleScript_OctolockTryLowerDef: printfromtable gStatDownStringIds waitmessage B_WAIT_TIME_LONG BattleScript_OctolockTryLowerSpDef: setstatchanger STAT_SPDEF, 1, TRUE - statbuffchange STAT_CHANGE_ALLOW_PTR | STAT_CHANGE_NOT_PROTECT_AFFECTED, BattleScript_OctlockTurnDmgEnd + statbuffchange STAT_CHANGE_ALLOW_PTR | STAT_CHANGE_NOT_PROTECT_AFFECTED, BattleScript_OctlockTurnDmgEnd BattleScript_OctolockTurnDmgPrintMsg: printfromtable gStatDownStringIds waitmessage B_WAIT_TIME_LONG From ab6c5bafe9e47651b9cae2ece93c1c4a06ee16b6 Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 20 Oct 2023 12:29:55 +0200 Subject: [PATCH 16/36] New function to check ability stat loss --- src/battle_script_commands.c | 31 ++++++++++++++++++++++--------- src/battle_util.c | 1 - 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index da647034a5..0cdb99e932 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -355,6 +355,7 @@ static void TryUpdateRoundTurnOrder(void); static bool32 ChangeOrderTargetAfterAttacker(void); void ApplyExperienceMultipliers(s32 *expAmount, u8 expGetterMonId, u8 faintedBattler); static void RemoveAllTerrains(void); +static bool8 CanAbilityPreventStatLoss(u16 abilityDef, bool8 isIntimidate); static void Cmd_attackcanceler(void); static void Cmd_accuracycheck(void); @@ -11390,15 +11391,8 @@ static u32 ChangeStatBuffs(s8 statValue, u32 statId, u32 flags, const u8 *BS_ptr gBattlescriptCurrInstr = BattleScript_ButItFailed; return STAT_CHANGE_DIDNT_WORK; } - else if (((battlerHoldEffect == HOLD_EFFECT_CLEAR_AMULET - || battlerAbility == ABILITY_CLEAR_BODY - || battlerAbility == ABILITY_FULL_METAL_BODY - || battlerAbility == ABILITY_WHITE_SMOKE) - || ((B_UPDATED_INTIMIDATE >= GEN_8) && statId == STAT_ATK - && (battlerAbility == ABILITY_INNER_FOCUS - || battlerAbility == ABILITY_SCRAPPY - || battlerAbility == ABILITY_OWN_TEMPO - || battlerAbility == ABILITY_OBLIVIOUS))) + else if ((battlerHoldEffect == HOLD_EFFECT_CLEAR_AMULET + || CanAbilityPreventStatLoss(battlerAbility, GetBattlerAbility(gBattlerAttacker) == ABILITY_INTIMIDATE)) && (!affectsUser || mirrorArmored) && !certain && gCurrentMove != MOVE_CURSE) { if (flags == STAT_CHANGE_ALLOW_PTR) @@ -15703,6 +15697,25 @@ static bool8 IsFinalStrikeEffect(u16 move) return FALSE; } +static bool8 CanAbilityPreventStatLoss(u16 abilityDef, bool8 isIntimidate) +{ + switch (abilityDef) + { + case ABILITY_CLEAR_BODY: + case ABILITY_FULL_METAL_BODY: + case ABILITY_WHITE_SMOKE: + return TRUE; + case ABILITY_INNER_FOCUS: + case ABILITY_SCRAPPY: + case ABILITY_OWN_TEMPO: + case ABILITY_OBLIVIOUS: + if (isIntimidate && (B_UPDATED_INTIMIDATE >= GEN_8)) + return TRUE; + break; + } + return FALSE; +} + void BS_CheckParentalBondCounter(void) { NATIVE_ARGS(u8 counter, const u8 *jumpInstr); diff --git a/src/battle_util.c b/src/battle_util.c index 12dcb256a3..d0bb6e8c3c 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -2792,7 +2792,6 @@ u8 DoBattlerEndTurnEffects(void) break; case ENDTURN_OCTOLOCK: { - u16 battlerAbility = GetBattlerAbility(battler); if (gDisableStructs[battler].octolock) { gBattlerTarget = battler; From 6daea655e56c74feebe9bdea6c0493e1eeccb7d4 Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 20 Oct 2023 12:33:56 +0200 Subject: [PATCH 17/36] fix line alignment --- src/battle_script_commands.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 0cdb99e932..8e5db2fd6e 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -11392,8 +11392,8 @@ static u32 ChangeStatBuffs(s8 statValue, u32 statId, u32 flags, const u8 *BS_ptr return STAT_CHANGE_DIDNT_WORK; } else if ((battlerHoldEffect == HOLD_EFFECT_CLEAR_AMULET - || CanAbilityPreventStatLoss(battlerAbility, GetBattlerAbility(gBattlerAttacker) == ABILITY_INTIMIDATE)) - && (!affectsUser || mirrorArmored) && !certain && gCurrentMove != MOVE_CURSE) + || CanAbilityPreventStatLoss(battlerAbility, GetBattlerAbility(gBattlerAttacker) == ABILITY_INTIMIDATE)) + && (!affectsUser || mirrorArmored) && !certain && gCurrentMove != MOVE_CURSE) { if (flags == STAT_CHANGE_ALLOW_PTR) { From a5c2ac5e49207fea321dff74003bca81ee1a55f0 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Thu, 19 Oct 2023 23:37:04 -0400 Subject: [PATCH 18/36] Use BUGFIX in assembly files --- data/battle_ai_scripts.s | 23 +++++++++-------- data/contest_ai_scripts.s | 25 ++++++++++--------- data/event_scripts.s | 1 + .../scripts.inc | 10 ++++---- .../MossdeepCity_SpaceCenter_1F/scripts.inc | 6 ++--- data/scripts/trainer_hill.inc | 4 +-- 6 files changed, 36 insertions(+), 33 deletions(-) diff --git a/data/battle_ai_scripts.s b/data/battle_ai_scripts.s index c296702a64..a43c889502 100644 --- a/data/battle_ai_scripts.s +++ b/data/battle_ai_scripts.s @@ -1,3 +1,4 @@ +#include "config.h" #include "constants/battle.h" #include "constants/battle_ai.h" #include "constants/abilities.h" @@ -1926,19 +1927,19 @@ AI_CV_Protect_End: @ BUG: Foresight is only encouraged if the user is Ghost type or @ has high evasion, but should check target instead AI_CV_Foresight: -.ifdef BUGFIX +#ifdef BUGFIX get_target_type1 if_equal TYPE_GHOST, AI_CV_Foresight2 get_target_type2 if_equal TYPE_GHOST, AI_CV_Foresight2 if_stat_level_more_than AI_TARGET, STAT_EVASION, 8, AI_CV_Foresight3 -.else +#else get_user_type1 if_equal TYPE_GHOST, AI_CV_Foresight2 get_user_type2 if_equal TYPE_GHOST, AI_CV_Foresight2 if_stat_level_more_than AI_USER, STAT_EVASION, 8, AI_CV_Foresight3 -.endif +#endif score -2 goto AI_CV_Foresight_End @@ -2183,13 +2184,13 @@ AI_CV_SemiInvulnerable2: if_status2 AI_TARGET, STATUS2_CURSED, AI_CV_SemiInvulnerable_TryEncourage if_status3 AI_TARGET, STATUS3_LEECHSEED, AI_CV_SemiInvulnerable_TryEncourage get_weather -.ifdef BUGFIX +#ifdef BUGFIX if_equal AI_WEATHER_HAIL, AI_CV_SemiInvulnerable_CheckIceType if_equal AI_WEATHER_SANDSTORM, AI_CV_SemiInvulnerable_CheckSandstormTypes -.else +#else if_equal AI_WEATHER_HAIL, AI_CV_SemiInvulnerable_CheckSandstormTypes if_equal AI_WEATHER_SANDSTORM, AI_CV_SemiInvulnerable_CheckIceType -.endif +#endif goto AI_CV_SemiInvulnerable5 AI_CV_SemiInvulnerable_CheckSandstormTypes: @@ -2254,11 +2255,11 @@ AI_CV_Hail_End: @ BUG: Facade score is increased if the target is statused, but should be if the user is AI_CV_Facade: -.ifdef BUGFIX +#ifdef BUGFIX if_not_status AI_USER, STATUS1_POISON | STATUS1_BURN | STATUS1_PARALYSIS | STATUS1_TOXIC_POISON, AI_CV_Facade_End -.else +#else if_not_status AI_TARGET, STATUS1_POISON | STATUS1_BURN | STATUS1_PARALYSIS | STATUS1_TOXIC_POISON, AI_CV_Facade_End -.endif +#endif score +1 AI_CV_Facade_End: end @@ -3176,9 +3177,9 @@ AI_HPAware_DiscouragedEffectsWhenTargetLowHP: AI_TrySunnyDayStart: if_target_is_ally AI_TryOnAlly if_not_effect EFFECT_SUNNY_DAY, AI_TrySunnyDayStart_End -.ifndef BUGFIX @ funcResult has not been set in this script yet, below call is nonsense +#ifndef BUGFIX @ funcResult has not been set in this script yet, below call is nonsense if_equal FALSE, AI_TrySunnyDayStart_End -.endif +#endif is_first_turn_for AI_USER if_equal FALSE, AI_TrySunnyDayStart_End score +5 diff --git a/data/contest_ai_scripts.s b/data/contest_ai_scripts.s index ecd3103ae2..affaf31d6d 100644 --- a/data/contest_ai_scripts.s +++ b/data/contest_ai_scripts.s @@ -1,3 +1,4 @@ +#include "config.h" #include "constants/global.h" #include "constants/contest.h" .include "asm/macros.inc" @@ -435,11 +436,11 @@ AI_CGM_BetterWhenAudienceExcited: AI_CGM_BetterWhenAudienceExcited_1stUp: @ BUG: Should be if_appeal_num_eq 0 @ 1st up on 1st appeal excitement will always be 0 -.ifdef BUGFIX +#ifdef BUGFIX if_appeal_num_eq 0, AI_CGM_BetterWhenAudienceExcited_1stAppeal -.else +#else if_appeal_num_not_eq 0, AI_CGM_BetterWhenAudienceExcited_1stAppeal -.endif +#endif if_excitement_eq 4, AI_CGM_BetterWhenAudienceExcited_1AwayFromMax if_excitement_eq 3, AI_CGM_BetterWhenAudienceExcited_2AwayFromMax end @@ -546,11 +547,11 @@ AI_CGM_TargetMonWithJudgesAttention: end AI_CGM_TargetMonWithJudgesAttention_CheckMon1: if_cannot_participate MON_1, AI_CGM_TargetMonWithJudgesAttention_CheckMon2 -.ifdef BUGFIX +#ifdef BUGFIX if_not_used_combo_starter MON_1, AI_CGM_TargetMonWithJudgesAttention_CheckMon2 -.else +#else if_used_combo_starter MON_1, AI_CGM_TargetMonWithJudgesAttention_CheckMon2 -.endif +#endif if_random_less_than 125, AI_CGM_TargetMonWithJudgesAttention_CheckMon2 score +2 if_not_completed_combo MON_1, AI_CGM_TargetMonWithJudgesAttention_CheckMon2 @@ -559,11 +560,11 @@ AI_CGM_TargetMonWithJudgesAttention_CheckMon1: AI_CGM_TargetMonWithJudgesAttention_CheckMon2: if_user_order_eq MON_2, AI_CGM_End if_cannot_participate MON_2, AI_CGM_TargetMonWithJudgesAttention_CheckMon3 -.ifdef BUGFIX +#ifdef BUGFIX if_not_used_combo_starter MON_2, AI_CGM_TargetMonWithJudgesAttention_CheckMon3 -.else +#else if_used_combo_starter MON_2, AI_CGM_TargetMonWithJudgesAttention_CheckMon3 -.endif +#endif if_random_less_than 125, AI_CGM_TargetMonWithJudgesAttention_CheckMon3 score +2 if_not_completed_combo MON_2, AI_CGM_TargetMonWithJudgesAttention_CheckMon3 @@ -572,11 +573,11 @@ AI_CGM_TargetMonWithJudgesAttention_CheckMon2: AI_CGM_TargetMonWithJudgesAttention_CheckMon3: if_user_order_eq MON_3, AI_CGM_End if_cannot_participate MON_3, AI_CGM_End -.ifdef BUGFIX +#ifdef BUGFIX if_not_used_combo_starter MON_3, AI_CGM_End -.else +#else if_used_combo_starter MON_3, AI_CGM_End -.endif +#endif if_random_less_than 125, AI_CGM_End score +2 if_not_completed_combo MON_3, AI_CGM_End diff --git a/data/event_scripts.s b/data/event_scripts.s index 1f3db6aa2b..e8fb9dcbd1 100644 --- a/data/event_scripts.s +++ b/data/event_scripts.s @@ -1,3 +1,4 @@ +#include "config.h" #include "constants/global.h" #include "constants/apprentice.h" #include "constants/battle.h" diff --git a/data/maps/BattleFrontier_BattleTowerLobby/scripts.inc b/data/maps/BattleFrontier_BattleTowerLobby/scripts.inc index 6162d0ada6..a216055b5b 100644 --- a/data/maps/BattleFrontier_BattleTowerLobby/scripts.inc +++ b/data/maps/BattleFrontier_BattleTowerLobby/scripts.inc @@ -415,18 +415,18 @@ BattleFrontier_BattleTowerLobby_EventScript_SaveBeforeLinkMultisChallenge:: @ to the flash, but not data in PokemonStorage. The SaveGame script that follows asks the player to do a full save, @ which they can opt out of. As a result the player can save their party and quit without having saved the PC. @ This allows players to clone pokemon and their held items by withdrawing them (or erase them by despositing). -.ifndef BUGFIX +#ifndef BUGFIX tower_save 0 -.endif +#endif call Common_EventScript_SaveGame setvar VAR_TEMP_CHALLENGE_STATUS, 255 goto_if_eq VAR_RESULT, 0, BattleFrontier_BattleTowerLobby_EventScript_CancelChallengeSaveFailed @ GAME_STAT_ENTERED_BATTLE_TOWER should not be incremented here, for two reasons: @ 1. It is incremented again in BattleFrontier_BattleTowerLobby_EventScript_CableLinkSuccessful or BattleFrontier_BattleTowerLobby_EventScript_WirelessLinkSuccessful -@ 2. If the player tries to save, but fails, the counter will still be incremented even if the player never enters the tower. -.ifndef BUGFIX +@ 2. If the player tries to connect, but fails, the counter will still be incremented even if the player never enters the tower. +#ifndef BUGFIX incrementgamestat GAME_STAT_ENTERED_BATTLE_TOWER -.endif +#endif specialvar VAR_RESULT, IsWirelessAdapterConnected goto_if_eq VAR_RESULT, TRUE, BattleFrontier_BattleTowerLobby_EventScript_TryWirelessLink goto BattleFrontier_BattleTowerLobby_EventScript_TryCableLink diff --git a/data/maps/MossdeepCity_SpaceCenter_1F/scripts.inc b/data/maps/MossdeepCity_SpaceCenter_1F/scripts.inc index 263b071056..e17af35724 100644 --- a/data/maps/MossdeepCity_SpaceCenter_1F/scripts.inc +++ b/data/maps/MossdeepCity_SpaceCenter_1F/scripts.inc @@ -229,11 +229,11 @@ MossdeepCity_SpaceCenter_1F_EventScript_Grunt2:: copyobjectxytoperm LOCALID_STAIR_GRUNT switch VAR_FACING case DIR_WEST, MossdeepCity_SpaceCenter_1F_EventScript_MoveGruntFromStairsWest - #ifdef BUGFIX +#ifdef BUGFIX case DIR_EAST, MossdeepCity_SpaceCenter_1F_EventScript_MoveGruntFromStairsEast - #else +#else case DIR_WEST, MossdeepCity_SpaceCenter_1F_EventScript_MoveGruntFromStairsEast - #endif +#endif applymovement LOCALID_STAIR_GRUNT, MossdeepCity_SpaceCenter_1F_Movement_MoveGruntFromStairs waitmovement 0 setvar VAR_MOSSDEEP_SPACE_CENTER_STAIR_GUARD_STATE, 2 diff --git a/data/scripts/trainer_hill.inc b/data/scripts/trainer_hill.inc index b7f8153514..04bbe05e5a 100644 --- a/data/scripts/trainer_hill.inc +++ b/data/scripts/trainer_hill.inc @@ -13,9 +13,9 @@ TrainerHill_OnWarp: TrainerHill_1F_EventScript_DummyOnWarp:: setvar VAR_TEMP_3, 1 -.ifdef BUGFIX +#ifdef BUGFIX end @ Missing end. By chance, the next byte (0x02 of VAR_TEMP_2) is also the id for the end cmd -.endif +#endif TrainerHill_OnFrame: map_script_2 VAR_TEMP_2, 0, TrainerHill_1F_EventScript_DummyWarpToEntranceCounter From 123fd45d8ecd1fd108fa64e9d0d364a8409c7702 Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 20 Oct 2023 18:53:49 +0200 Subject: [PATCH 19/36] last hyper cutter test --- test/battle/ability/hyper_cutter.c | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/test/battle/ability/hyper_cutter.c b/test/battle/ability/hyper_cutter.c index 10be6fa725..16b1635060 100644 --- a/test/battle/ability/hyper_cutter.c +++ b/test/battle/ability/hyper_cutter.c @@ -111,7 +111,7 @@ SINGLE_BATTLE_TEST("Hyper Cutter doesn't prevent Topsy-Turvy") } } -SINGLE_BATTLE_TEST("xx Hyper Cutter doesn't prevent Spectral Thief from resetting positive Attack stage changes") +SINGLE_BATTLE_TEST("Hyper Cutter doesn't prevent Spectral Thief from resetting positive Attack stage changes") { GIVEN { ASSUME(gBattleMoves[MOVE_SWORDS_DANCE].effect == EFFECT_ATTACK_UP_2); @@ -130,4 +130,24 @@ SINGLE_BATTLE_TEST("xx Hyper Cutter doesn't prevent Spectral Thief from resettin } } -TO_DO_BATTLE_TEST("Hyper Cutter doesn't prevent receiving negative Attack stage changes from Baton Pass"); +SINGLE_BATTLE_TEST("xx Hyper Cutter doesn't prevent receiving negative Attack stage changes from Baton Pass") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_GROWL].effect == EFFECT_ATTACK_DOWN); + ASSUME(gBattleMoves[MOVE_BATON_PASS].effect == EFFECT_BATON_PASS); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_KRABBY) { Ability(ABILITY_HYPER_CUTTER); } + } WHEN { + TURN { MOVE(player, MOVE_GROWL); + MOVE(opponent, MOVE_BATON_PASS); + SEND_OUT(opponent, 1); + } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_GROWL, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_BATON_PASS, opponent); + MESSAGE("2 sent out Krabby!"); + } THEN { + EXPECT_EQ(opponent->statStages[STAT_ATK], DEFAULT_STAT_STAGE - 1); + } +} \ No newline at end of file From 783ec0e957af43b96a893d82a796120f229a3518 Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 20 Oct 2023 22:51:30 +0200 Subject: [PATCH 20/36] fixes tests --- test/battle/ability/hyper_cutter.c | 4 ++-- test/battle/move_effect/octolock.c | 3 ++- test/battle/move_effect/syrup_bomb.c | 5 ++--- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/test/battle/ability/hyper_cutter.c b/test/battle/ability/hyper_cutter.c index 16b1635060..f040907626 100644 --- a/test/battle/ability/hyper_cutter.c +++ b/test/battle/ability/hyper_cutter.c @@ -130,7 +130,7 @@ SINGLE_BATTLE_TEST("Hyper Cutter doesn't prevent Spectral Thief from resetting p } } -SINGLE_BATTLE_TEST("xx Hyper Cutter doesn't prevent receiving negative Attack stage changes from Baton Pass") +SINGLE_BATTLE_TEST("Hyper Cutter doesn't prevent receiving negative Attack stage changes from Baton Pass") { GIVEN { ASSUME(gBattleMoves[MOVE_GROWL].effect == EFFECT_ATTACK_DOWN); @@ -150,4 +150,4 @@ SINGLE_BATTLE_TEST("xx Hyper Cutter doesn't prevent receiving negative Attack st } THEN { EXPECT_EQ(opponent->statStages[STAT_ATK], DEFAULT_STAT_STAGE - 1); } -} \ No newline at end of file +} diff --git a/test/battle/move_effect/octolock.c b/test/battle/move_effect/octolock.c index 2f70db39cf..4b0b1dbf4d 100644 --- a/test/battle/move_effect/octolock.c +++ b/test/battle/move_effect/octolock.c @@ -111,9 +111,10 @@ SINGLE_BATTLE_TEST("Octolock will not decrease Defense and Sp. Def further then TURN {} } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_OCTOLOCK, player); - for (j = 0; j < 5; j++) + for (j = 0; j < 5; j++) { MESSAGE("Foe Wobbuffet's Defense fell!"); MESSAGE("Foe Wobbuffet's Sp. Def fell!"); + } MESSAGE("Foe Wobbuffet's Defense won't go lower!"); MESSAGE("Foe Wobbuffet's Sp. Def won't go lower!"); NOT MESSAGE("Foe Wobbuffet's Defense fell!"); diff --git a/test/battle/move_effect/syrup_bomb.c b/test/battle/move_effect/syrup_bomb.c index 7c3808def8..fc55fa0163 100644 --- a/test/battle/move_effect/syrup_bomb.c +++ b/test/battle/move_effect/syrup_bomb.c @@ -98,7 +98,7 @@ SINGLE_BATTLE_TEST("Clear Body, White Smoke and Full Metal Body prevent Sticky S NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); NOT MESSAGE("Foe Torkoal's Speed fell!"); } - else if (species == SPECIES_SOLGALEO) + else { MESSAGE("Foe Solgaleo got covered in sticky syrup!"); ABILITY_POPUP(opponent, ABILITY_FULL_METAL_BODY); @@ -139,8 +139,7 @@ SINGLE_BATTLE_TEST("Sticky syrup will not decrease speed further then minus six" TURN { MOVE(player, MOVE_SYRUP_BOMB); } TURN {} } SCENE { - for (j = 0; j < 3; j++) - ANIMATION(ANIM_TYPE_MOVE, MOVE_SCARY_FACE, player); + for (j = 0; j < 3; j++) { ANIMATION(ANIM_TYPE_MOVE, MOVE_SCARY_FACE, player); } ANIMATION(ANIM_TYPE_MOVE, MOVE_SYRUP_BOMB, player); HP_BAR(opponent); MESSAGE("Foe Wobbuffet got covered in sticky syrup!"); From bf56ea8a8bdc17ecc4382351b59726af9b0deee6 Mon Sep 17 00:00:00 2001 From: Alex Date: Sun, 22 Oct 2023 19:46:31 +0200 Subject: [PATCH 21/36] apply suggestions --- asm/macros/battle_script.inc | 4 ++-- data/battle_scripts_1.s | 2 +- src/battle_script_commands.c | 6 +++--- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/asm/macros/battle_script.inc b/asm/macros/battle_script.inc index 9bff248651..e5d8fc58c8 100644 --- a/asm/macros/battle_script.inc +++ b/asm/macros/battle_script.inc @@ -1366,8 +1366,8 @@ .byte \battler .endm - .macro setoctolock battler:req, failInstr:req - callnative BS_Octolock + .macro trysetoctolock battler:req, failInstr:req + callnative BS_TrySetOctolock .byte \battler .4byte \failInstr .endm diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index a279a8f0bc..bc0a7a7fa3 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -1057,7 +1057,7 @@ BattleScript_EffectOctolock: accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE attackstring ppreduce - setoctolock BS_TARGET, BattleScript_ButItFailed + trysetoctolock BS_TARGET, BattleScript_ButItFailed attackanimation waitanimation printstring STRINGID_CANTESCAPEBECAUSEOFCURRENTMOVE diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 8e5db2fd6e..088546991e 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -15697,7 +15697,7 @@ static bool8 IsFinalStrikeEffect(u16 move) return FALSE; } -static bool8 CanAbilityPreventStatLoss(u16 abilityDef, bool8 isIntimidate) +static bool8 CanAbilityPreventStatLoss(u16 abilityDef, bool8 byIntimidate) { switch (abilityDef) { @@ -15709,7 +15709,7 @@ static bool8 CanAbilityPreventStatLoss(u16 abilityDef, bool8 isIntimidate) case ABILITY_SCRAPPY: case ABILITY_OWN_TEMPO: case ABILITY_OBLIVIOUS: - if (isIntimidate && (B_UPDATED_INTIMIDATE >= GEN_8)) + if (byIntimidate && (B_UPDATED_INTIMIDATE >= GEN_8)) return TRUE; break; } @@ -16238,7 +16238,7 @@ void BS_JumpIfTerrainAffected(void) gBattlescriptCurrInstr = cmd->nextInstr; } -void BS_Octolock(void) +void BS_TrySetOctolock(void) { NATIVE_ARGS(u8 battler, const u8 *failInstr); u32 battler = GetBattlerForBattleScript(cmd->battler); From 333523e5f7b0a8c3c40ffedc8d7234a0eb14eb88 Mon Sep 17 00:00:00 2001 From: kittenchilly Date: Mon, 23 Oct 2023 13:24:38 -0500 Subject: [PATCH 22/36] Remove all leading whitespace --- INSTALL.md | 6 +++--- src/battle_factory.c | 2 +- src/easy_chat.c | 4 ++-- src/event_object_movement.c | 2 +- src/mini_printf.c | 12 ++++++------ src/rom_header_gf.c | 4 ++-- src/trade.c | 2 +- tools/aif2pcm/main.c | 14 +++++++------- tools/gbagfx/font.c | 6 +++--- tools/preproc/c_file.cpp | 4 ++-- tools/preproc/charmap.cpp | 2 +- tools/scaninc/source_file.cpp | 4 ++-- 12 files changed, 31 insertions(+), 31 deletions(-) diff --git a/INSTALL.md b/INSTALL.md index a76d0acc75..920e03c713 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -150,9 +150,9 @@ Note that in msys2, Copy is Ctrl+Insert and Paste is Shift+Insert.
Notes... - > Note 1: While not shown, msys uses forward slashes `/` instead of backwards slashes `\` as the directory separator. - > Note 2: If the path has spaces, then the path must be wrapped with quotations, e.g. `cd "Downloads/My Downloads"`. - > Note 3: Windows path names are case-insensitive so adhering to capitalization isn’t needed. + > Note 1: While not shown, msys uses forward slashes `/` instead of backwards slashes `\` as the directory separator. + > Note 2: If the path has spaces, then the path must be wrapped with quotations, e.g. `cd "Downloads/My Downloads"`. + > Note 3: Windows path names are case-insensitive so adhering to capitalization isn’t needed. > Note 4: If libpng was saved elsewhere, you will need to specify the full path to where libpng was downloaded, e.g. `cd c:/devkitpro/msys2` if it was saved there.
diff --git a/src/battle_factory.c b/src/battle_factory.c index 3606d88e6a..0f4ed9816d 100644 --- a/src/battle_factory.c +++ b/src/battle_factory.c @@ -741,7 +741,7 @@ u8 GetFactoryMonFixedIV(u8 challengeNum, bool8 isLastBattle) u8 ivSet; bool8 useHigherIV = isLastBattle ? TRUE : FALSE; -// The Factory has an out-of-bounds access when generating the rental draft for round 9 (challengeNum==8), +// The Factory has an out-of-bounds access when generating the rental draft for round 9 (challengeNum==8), // or the "elevated" rentals from round 8 (challengeNum+1==8) // This happens to land on a number higher than 31, which is interpreted as "random IVs" #ifdef BUGFIX diff --git a/src/easy_chat.c b/src/easy_chat.c index 93fdafd80b..8e93ca310e 100644 --- a/src/easy_chat.c +++ b/src/easy_chat.c @@ -230,7 +230,7 @@ enum { PALTAG_TRIANGLE_CURSOR, PALTAG_RECTANGLE_CURSOR, PALTAG_MISC_UI, - PALTAG_RS_INTERVIEW_FRAME, + PALTAG_RS_INTERVIEW_FRAME, }; enum { @@ -240,7 +240,7 @@ enum { GFXTAG_START_SELECT_BUTTONS, GFXTAG_MODE_WINDOW, GFXTAG_RS_INTERVIEW_FRAME, - GFXTAG_BUTTON_WINDOW, + GFXTAG_BUTTON_WINDOW, }; diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 29dcf4d27c..a181ea9f21 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -498,7 +498,7 @@ static const struct SpritePalette sObjectEventSpritePalettes[] = { {gObjectEventPal_RubySapphireBrendan, OBJ_EVENT_PAL_TAG_RS_BRENDAN}, {gObjectEventPal_RubySapphireMay, OBJ_EVENT_PAL_TAG_RS_MAY}, #ifdef BUGFIX - {NULL, OBJ_EVENT_PAL_TAG_NONE}, + {NULL, OBJ_EVENT_PAL_TAG_NONE}, #else {}, // BUG: FindObjectEventPaletteIndexByTag looks for OBJ_EVENT_PAL_TAG_NONE and not 0x0. // If it's looking for a tag that isn't in this table, the game locks in an infinite loop. diff --git a/src/mini_printf.c b/src/mini_printf.c index 69500157c6..9fb4ecfac9 100644 --- a/src/mini_printf.c +++ b/src/mini_printf.c @@ -41,7 +41,7 @@ #ifndef NDEBUG -struct mini_buff +struct mini_buff { char *buffer, *pbuffer; u32 buffer_len; @@ -95,7 +95,7 @@ static s32 _putsAscii(char *s, s32 len, void *buf) s32 i; struct mini_buff *b; - if (!buf) + if (!buf) return len; b = buf; @@ -118,7 +118,7 @@ static s32 _putsEncoded(char *s, s32 len, void *buf) s32 i; struct mini_buff *b; - if (!buf) + if (!buf) return len; b = buf; @@ -159,7 +159,7 @@ static s32 mini_itoa(s32 value, u32 radix, s32 uppercase, bool32 unsig, char *bu } /* This builds the string back to front ... */ - do + do { s32 digit = value % radix; *(pbuffer++) = (digit < 10 ? '0' + digit : (uppercase ? 'A' : 'a') + digit - 10); @@ -243,7 +243,7 @@ s32 mini_vpprintf(void* buf, const char *fmt, va_list va) { len = 1; len = _putsAscii(&ch, len, buf); - } else + } else { char pad_char = ' '; s32 pad_to = 0; @@ -270,7 +270,7 @@ s32 mini_vpprintf(void* buf, const char *fmt, va_list va) ch=*(fmt++); } - switch (ch) + switch (ch) { case 0: goto end; diff --git a/src/rom_header_gf.c b/src/rom_header_gf.c index 465c0cf410..36ff3401d3 100644 --- a/src/rom_header_gf.c +++ b/src/rom_header_gf.c @@ -9,8 +9,8 @@ // The purpose of this struct is for outside applications to be // able to access parts of the ROM or its save file, like a public API. // In vanilla, it was used by Colosseum and XD to access pokemon graphics. -// -// If this struct is rearranged in any way, it defeats the purpose of +// +// If this struct is rearranged in any way, it defeats the purpose of // having it at all. Applications like PKHex or streaming HUDs may find // these values useful, so there's some potential benefit to keeping it. // If there's a compilation problem below, just comment out the assignment diff --git a/src/trade.c b/src/trade.c index 037ea4101a..5728a6ee51 100644 --- a/src/trade.c +++ b/src/trade.c @@ -1285,7 +1285,7 @@ static void Leader_HandleCommunication(void) if (sTradeMenu->playerSelectStatus == STATUS_READY && sTradeMenu->partnerSelectStatus == STATUS_READY) { - // Both players have selected a pokemon to trade + // Both players have selected a pokemon to trade sTradeMenu->callbackId = CB_SET_SELECTED_MONS; sTradeMenu->linkData[0] = LINKCMD_SET_MONS_TO_TRADE; sTradeMenu->linkData[1] = sTradeMenu->cursorPosition; diff --git a/tools/aif2pcm/main.c b/tools/aif2pcm/main.c index 720db1acae..0824b92da8 100644 --- a/tools/aif2pcm/main.c +++ b/tools/aif2pcm/main.c @@ -238,7 +238,7 @@ void read_aif(struct Bytes *aif, AifData *aif_data) { FATAL_ERROR("More than one MARK Chunk in file!\n"); } - + markers = calloc(num_markers, sizeof(struct Marker)); // Read each marker. @@ -289,7 +289,7 @@ void read_aif(struct Bytes *aif, AifData *aif_data) // Skip NoLooping sustain loop. pos += 4; } - + // Skip release loop, we don't need it. pos += 6; } @@ -303,7 +303,7 @@ void read_aif(struct Bytes *aif, AifData *aif_data) { uint8_t *sample_data = (uint8_t *)malloc(num_samples * sizeof(uint8_t)); memcpy(sample_data, &aif->data[pos], num_samples); - + aif_data->samples8 = sample_data; aif_data->real_num_samples = num_samples; } @@ -316,7 +316,7 @@ void read_aif(struct Bytes *aif, AifData *aif_data) { sample_data_swapped[i] = __builtin_bswap16(sample_data[i]); } - + aif_data->samples16 = sample_data_swapped; aif_data->real_num_samples = num_samples; free(sample_data); @@ -329,12 +329,12 @@ void read_aif(struct Bytes *aif, AifData *aif_data) pos += chunk_size; } } - + if (markers) { // Resolve loop points. struct Marker *cur_marker = markers; - + // Grab loop start point. for (int i = 0; i < num_markers; i++, cur_marker++) { @@ -573,7 +573,7 @@ void aif2pcm(const char *aif_filename, const char *pcm_filename, bool compress) struct Bytes *aif = read_bytearray(aif_filename); AifData aif_data = {0}; read_aif(aif, &aif_data); - + // Convert 16-bit to 8-bit if necessary if (aif_data.sample_size == 16) { diff --git a/tools/gbagfx/font.c b/tools/gbagfx/font.c index 0dd6fbc3ee..1251b5c647 100644 --- a/tools/gbagfx/font.c +++ b/tools/gbagfx/font.c @@ -26,7 +26,7 @@ static void ConvertFromLatinFont(unsigned char *src, unsigned char *dest, unsign unsigned int pixelsX = (column * 16) + ((glyphTile & 1) * 8); for (unsigned int i = 0; i < 8; i++) { - unsigned int pixelsY = (row * 16) + ((glyphTile >> 1) * 8) + i; + unsigned int pixelsY = (row * 16) + ((glyphTile >> 1) * 8) + i; unsigned int destPixelsOffset = (pixelsY * 64) + (pixelsX / 4); dest[destPixelsOffset] = src[srcPixelsOffset + 1]; @@ -75,7 +75,7 @@ static void ConvertFromHalfwidthJapaneseFont(unsigned char *src, unsigned char * for (unsigned int i = 0; i < 8; i++) { unsigned int pixelsY = (row * 16) + (glyphTile * 8) + i; unsigned int destPixelsOffset = (pixelsY * 32) + (pixelsX / 4); - + dest[destPixelsOffset] = src[srcPixelsOffset + 1]; dest[destPixelsOffset + 1] = src[srcPixelsOffset]; @@ -233,7 +233,7 @@ void ReadHalfwidthJapaneseFont(char *path, struct Image *image) FATAL_ERROR("The file size (%d) is not a multiple of %d.\n", fileSize, glyphSize); int numGlyphs = fileSize / glyphSize; - + if (numGlyphs % 16 != 0) FATAL_ERROR("The number of glyphs (%d) is not a multiple of 16.\n", numGlyphs); diff --git a/tools/preproc/c_file.cpp b/tools/preproc/c_file.cpp index 17a08cc9f7..508c628731 100644 --- a/tools/preproc/c_file.cpp +++ b/tools/preproc/c_file.cpp @@ -383,7 +383,7 @@ void CFile::TryConvertIncbin() if (m_buffer[m_pos] == '\\') RaiseError("unexpected escape in path string"); - + m_pos++; } @@ -418,7 +418,7 @@ void CFile::TryConvertIncbin() m_pos++; } - + if (m_buffer[m_pos] != ')') RaiseError("expected ')'"); diff --git a/tools/preproc/charmap.cpp b/tools/preproc/charmap.cpp index a7bedfe26f..a0c631026c 100644 --- a/tools/preproc/charmap.cpp +++ b/tools/preproc/charmap.cpp @@ -119,7 +119,7 @@ Lhs CharmapReader::ReadLhs() break; } } - + if (m_buffer[m_pos] == '\'') { m_pos++; diff --git a/tools/scaninc/source_file.cpp b/tools/scaninc/source_file.cpp index df31282f80..9d188eb738 100644 --- a/tools/scaninc/source_file.cpp +++ b/tools/scaninc/source_file.cpp @@ -41,7 +41,7 @@ SourceFileType GetFileType(std::string& path) return SourceFileType::Inc; else FATAL_ERROR("Unrecognized extension \"%s\"\n", extension.c_str()); - + // Unreachable return SourceFileType::Cpp; } @@ -84,7 +84,7 @@ SourceFile::SourceFile(std::string path) else incbins.insert(outputPath); } - + new (&m_source_file.asm_wrapper) SourceFile::InnerUnion::AsmWrapper{incbins, includes}; } } From 591ef71e3b8b11f33e2b8aac098367e844884208 Mon Sep 17 00:00:00 2001 From: Alex <93446519+AlexOn1ine@users.noreply.github.com> Date: Wed, 25 Oct 2023 09:33:43 +0200 Subject: [PATCH 23/36] Fixes form change when using switch moves (#3463) * Fixes form change with switch moves --- src/battle_script_commands.c | 1 + test/battle/ability/flower_gift.c | 44 ++++++++++++++++++++++++++++++- test/battle/ability/forecast.c | 42 +++++++++++++++++++++++++++++ 3 files changed, 86 insertions(+), 1 deletion(-) diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index c886178ec0..dcb4620809 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -7045,6 +7045,7 @@ static void Cmd_returntoball(void) u32 battler = GetBattlerForBattleScript(cmd->battler); BtlController_EmitReturnMonToBall(battler, BUFFER_A, TRUE); MarkBattlerForControllerExec(battler); + TryBattleFormChange(battler, FORM_CHANGE_BATTLE_SWITCH); gBattlescriptCurrInstr = cmd->nextInstr; } diff --git a/test/battle/ability/flower_gift.c b/test/battle/ability/flower_gift.c index e02f90dc6c..f8f2a35ccd 100644 --- a/test/battle/ability/flower_gift.c +++ b/test/battle/ability/flower_gift.c @@ -74,7 +74,7 @@ DOUBLE_BATTLE_TEST("Flower Gift increases the attack of Cherrim and its allies b } WHEN { if (sunny) TURN { MOVE(playerLeft, MOVE_SUNNY_DAY); } - TURN { MOVE(playerLeft, MOVE_TACKLE, target: opponentLeft); + TURN { MOVE(playerLeft, MOVE_TACKLE, target: opponentLeft); MOVE(playerRight, MOVE_TACKLE, target: opponentLeft); } } SCENE { // sun activates @@ -126,4 +126,46 @@ DOUBLE_BATTLE_TEST("Flower Gift increases the Sp. Def of Cherrim and its allies } } +SINGLE_BATTLE_TEST("Flower Gift transforms Cherrim back when it switches out") +{ + GIVEN { + ASSUME(B_WEATHER_FORMS >= GEN_5); + PLAYER(SPECIES_CHERRIM) { Ability(ABILITY_FLOWER_GIFT); } + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_SUNNY_DAY); } + TURN { SWITCH(player, 1); } + } SCENE { + // transforms in sun + ABILITY_POPUP(player, ABILITY_FLOWER_GIFT); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player); + MESSAGE("Cherrim transformed!"); + MESSAGE("Cherrim, that's enough! Come back!"); + } THEN { + EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_SPECIES), SPECIES_CHERRIM); + } +} + +SINGLE_BATTLE_TEST("Flower Gift transforms Cherrim back when it uses a move that forces it to switch out") +{ + GIVEN { + ASSUME(B_WEATHER_FORMS >= GEN_5); + PLAYER(SPECIES_CHERRIM) { Ability(ABILITY_FLOWER_GIFT); } + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_SUNNY_DAY); } + TURN { MOVE(player, MOVE_U_TURN); SEND_OUT(player, 1); } + } SCENE { + // transforms in sun + ABILITY_POPUP(player, ABILITY_FLOWER_GIFT); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player); + MESSAGE("Cherrim transformed!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_U_TURN, player); + } THEN { + EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_SPECIES), SPECIES_CHERRIM); + } +} + TO_DO_BATTLE_TEST("Flower Gift does not transform Cherrim back to normal when suppressed if Cherrim is Dynamaxed"); diff --git a/test/battle/ability/forecast.c b/test/battle/ability/forecast.c index 66793ebfb2..949e4b7404 100644 --- a/test/battle/ability/forecast.c +++ b/test/battle/ability/forecast.c @@ -353,3 +353,45 @@ SINGLE_BATTLE_TEST("Forecast transforms Castform back to normal when its ability EXPECT_EQ(player->species, SPECIES_CASTFORM); } } + +SINGLE_BATTLE_TEST("Forecast transforms Castform back when it switches out") +{ + GIVEN { + ASSUME(B_WEATHER_FORMS >= GEN_5); + PLAYER(SPECIES_CASTFORM) { Ability(ABILITY_FORECAST); } + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_SUNNY_DAY); } + TURN { SWITCH(player, 1); } + } SCENE { + // transforms in sun + ABILITY_POPUP(player, ABILITY_FORECAST); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player); + MESSAGE("Castform transformed!"); + MESSAGE("Castform, that's enough! Come back!"); + } THEN { + EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_SPECIES), SPECIES_CASTFORM); + } +} + +SINGLE_BATTLE_TEST("Forecast transforms Castform back when it uses a move that forces it to switch out") +{ + GIVEN { + ASSUME(B_WEATHER_FORMS >= GEN_5); + PLAYER(SPECIES_CASTFORM) { Ability(ABILITY_FORECAST); } + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_SUNNY_DAY); } + TURN { MOVE(player, MOVE_U_TURN); SEND_OUT(player, 1); } + } SCENE { + // transforms in sun + ABILITY_POPUP(player, ABILITY_FORECAST); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player); + MESSAGE("Castform transformed!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_U_TURN, player); + } THEN { + EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_SPECIES), SPECIES_CASTFORM); + } +} From 25a57d48d962b00fde758949a49e2f7f82f1105b Mon Sep 17 00:00:00 2001 From: Alex Date: Wed, 25 Oct 2023 10:18:59 +0200 Subject: [PATCH 24/36] fixes tests --- test/battle/ability/hyper_cutter.c | 6 +++-- test/battle/hold_effect/clear_amulet.c | 6 +++-- test/battle/move_effect/octolock.c | 32 +++++++++++++++++--------- test/battle/move_effect/syrup_bomb.c | 30 ++++++++++++++++-------- 4 files changed, 49 insertions(+), 25 deletions(-) diff --git a/test/battle/ability/hyper_cutter.c b/test/battle/ability/hyper_cutter.c index f040907626..8e5c0a40ba 100644 --- a/test/battle/ability/hyper_cutter.c +++ b/test/battle/ability/hyper_cutter.c @@ -69,8 +69,10 @@ SINGLE_BATTLE_TEST("Hyper Cutter is ignored by Mold Breaker") MESSAGE("Pinsir breaks the mold!"); ANIMATION(ANIM_TYPE_MOVE, MOVE_GROWL, player); MESSAGE("Foe Krabby's Attack fell!"); - NOT ABILITY_POPUP(opponent, ABILITY_HYPER_CUTTER); - NOT MESSAGE("Foe Krabby's Hyper Cutter prevents Attack loss!"); + NONE_OF { + ABILITY_POPUP(opponent, ABILITY_HYPER_CUTTER); + MESSAGE("Foe Krabby's Hyper Cutter prevents Attack loss!"); + } } } diff --git a/test/battle/hold_effect/clear_amulet.c b/test/battle/hold_effect/clear_amulet.c index c924f79912..0073f70609 100644 --- a/test/battle/hold_effect/clear_amulet.c +++ b/test/battle/hold_effect/clear_amulet.c @@ -83,7 +83,9 @@ SINGLE_BATTLE_TEST("Clear Amulet prevents secondary effects that reduce stats") } WHEN { TURN { MOVE(player, move); } } SCENE { - NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); - NOT MESSAGE("Foe Wobbuffet's Clear Amulet prevents its stats from being lowered!"); + NONE_OF { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + MESSAGE("Foe Wobbuffet's Clear Amulet prevents its stats from being lowered!"); + } } } diff --git a/test/battle/move_effect/octolock.c b/test/battle/move_effect/octolock.c index 4b0b1dbf4d..3cdc5f5602 100644 --- a/test/battle/move_effect/octolock.c +++ b/test/battle/move_effect/octolock.c @@ -40,24 +40,30 @@ SINGLE_BATTLE_TEST("Octolock reduction is prevented by Clear Body, White Smoke a MESSAGE("Foe Beldum can no longer escape because of Octolock!"); ABILITY_POPUP(opponent, ABILITY_CLEAR_BODY); MESSAGE("Foe Beldum's Clear Body prevents stat loss!"); - NOT MESSAGE("Foe Beldum's Defense fell!"); - NOT MESSAGE("Foe Beldum's Sp. Def fell!"); + NONE_OF { + MESSAGE("Foe Beldum's Defense fell!"); + MESSAGE("Foe Beldum's Sp. Def fell!"); + } } else if (species == SPECIES_TORKOAL) { MESSAGE("Foe Torkoal can no longer escape because of Octolock!"); ABILITY_POPUP(opponent, ABILITY_WHITE_SMOKE); MESSAGE("Foe Torkoal's White Smoke prevents stat loss!"); - NOT MESSAGE("Foe Torkoal's Defense fell!"); - NOT MESSAGE("Foe Torkoal's Sp. Def fell!"); + NONE_OF { + MESSAGE("Foe Torkoal's Defense fell!"); + MESSAGE("Foe Torkoal's Sp. Def fell!"); + } } else if (species == SPECIES_SOLGALEO) { MESSAGE("Foe Solgaleo can no longer escape because of Octolock!"); ABILITY_POPUP(opponent, ABILITY_FULL_METAL_BODY); MESSAGE("Foe Solgaleo's Full Metal Body prevents stat loss!"); - NOT MESSAGE("Foe Solgaleo's Defense fell!"); - NOT MESSAGE("Foe Solgaleo's Sp. Def fell!"); + NONE_OF { + MESSAGE("Foe Solgaleo's Defense fell!"); + MESSAGE("Foe Solgaleo's Sp. Def fell!"); + } } } } @@ -92,9 +98,11 @@ SINGLE_BATTLE_TEST("Octolock reduction is prevented by Clear Amulet") ANIMATION(ANIM_TYPE_MOVE, MOVE_OCTOLOCK, player); MESSAGE("Foe Wobbuffet can no longer escape because of Octolock!"); MESSAGE("Foe Wobbuffet's Clear Amulet prevents its stats from being lowered!"); - NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); - NOT MESSAGE("Foe Wobbuffet's Defense fell!"); - NOT MESSAGE("Foe Wobbuffet's Sp. Def fell!"); + NONE_OF { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + MESSAGE("Foe Wobbuffet's Defense fell!"); + MESSAGE("Foe Wobbuffet's Sp. Def fell!"); + } } } @@ -117,7 +125,9 @@ SINGLE_BATTLE_TEST("Octolock will not decrease Defense and Sp. Def further then } MESSAGE("Foe Wobbuffet's Defense won't go lower!"); MESSAGE("Foe Wobbuffet's Sp. Def won't go lower!"); - NOT MESSAGE("Foe Wobbuffet's Defense fell!"); - NOT MESSAGE("Foe Wobbuffet's Sp. Def fell!"); + NONE_OF { + MESSAGE("Foe Wobbuffet's Defense fell!"); + MESSAGE("Foe Wobbuffet's Sp. Def fell!"); + } } } diff --git a/test/battle/move_effect/syrup_bomb.c b/test/battle/move_effect/syrup_bomb.c index 232f922f84..10e2c40de1 100644 --- a/test/battle/move_effect/syrup_bomb.c +++ b/test/battle/move_effect/syrup_bomb.c @@ -22,12 +22,14 @@ SINGLE_BATTLE_TEST("Syrup Bomb covers the foe in sticky syrup for 3 turns") MESSAGE("Foe Wobbuffet's Speed fell!"); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); MESSAGE("Foe Wobbuffet's Speed fell!"); - NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); - NOT MESSAGE("Foe Wobbuffet's Speed fell!"); + NONE_OF { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + MESSAGE("Foe Wobbuffet's Speed fell!"); + } } } -SINGLE_BATTLE_TEST("Target will be not covered in sticky syrup again if it is currently covered") +SINGLE_BATTLE_TEST("Sticky Syrup isn't applied again if the target is already covered") { GIVEN { PLAYER(SPECIES_WOBBUFFET); @@ -64,7 +66,7 @@ SINGLE_BATTLE_TEST("Syrup Bomb is prevented by Bulletproof") } } -SINGLE_BATTLE_TEST("Clear Body, White Smoke and Full Metal Body prevent Sticky Syrup speed reduction") +SINGLE_BATTLE_TEST("Sticky Syrup speed reduction is prevented by Clear Body, White Smoke or Full Metal Body") { u32 species; u32 ability; @@ -88,27 +90,35 @@ SINGLE_BATTLE_TEST("Clear Body, White Smoke and Full Metal Body prevent Sticky S MESSAGE("Foe Beldum got covered in sticky syrup!"); ABILITY_POPUP(opponent, ABILITY_CLEAR_BODY); MESSAGE("Foe Beldum's Clear Body prevents stat loss!"); + NONE_OF { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + MESSAGE("Foe Beldum's Speed fell!"); + } } else if (species == SPECIES_TORKOAL) { MESSAGE("Foe Torkoal got covered in sticky syrup!"); ABILITY_POPUP(opponent, ABILITY_WHITE_SMOKE); MESSAGE("Foe Torkoal's White Smoke prevents stat loss!"); + NONE_OF { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + MESSAGE("Foe Torkoal's Speed fell!"); + } } else if (species == SPECIES_SOLGALEO) { MESSAGE("Foe Solgaleo got covered in sticky syrup!"); ABILITY_POPUP(opponent, ABILITY_FULL_METAL_BODY); MESSAGE("Foe Solgaleo's Full Metal Body prevents stat loss!"); - } - NONE_OF { - ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); - MESSAGE("Foe Beldum's Speed fell!"); + NONE_OF { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + MESSAGE("Foe Solgaleo's Speed fell!"); + } } } } -SINGLE_BATTLE_TEST("Clear Amulet prevents Sticky Syrup speed reduction") +SINGLE_BATTLE_TEST("Sticky Syrup speed reduction is prevented by Clear Amulet") { GIVEN { PLAYER(SPECIES_WOBBUFFET); @@ -119,7 +129,7 @@ SINGLE_BATTLE_TEST("Clear Amulet prevents Sticky Syrup speed reduction") ANIMATION(ANIM_TYPE_MOVE, MOVE_SYRUP_BOMB, player); HP_BAR(opponent); MESSAGE("Foe Wobbuffet got covered in sticky syrup!"); - MESSAGE("Foe Wobbuffet's Speed was not lowered!"); + MESSAGE("Foe Wobbuffet's Clear Amulet prevents its stats from being lowered!"); NONE_OF { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); MESSAGE("Foe Wobbuffet's Speed fell!"); From 25d6f8ba74997a8694a7dbf150a86a402934702d Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Thu, 26 Oct 2023 09:25:50 -0300 Subject: [PATCH 25/36] Fix mini_printf encoded string -Werror=pointer-sign warning --- src/mini_printf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mini_printf.c b/src/mini_printf.c index 69500157c6..65b350e08b 100644 --- a/src/mini_printf.c +++ b/src/mini_printf.c @@ -328,7 +328,7 @@ s32 mini_vpprintf(void* buf, const char *fmt, va_list va) break; case 'S' : // preproc encoded string handler ptr = va_arg(va, char*); - len = StringLength(ptr); + len = StringLength((u8*)ptr); if (pad_to > 0) { len = mini_pad(ptr, len, pad_char, pad_to, bf); From b5607209f3f2d55c8ef062b5ece8324242aeb5b9 Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Fri, 27 Oct 2023 09:16:39 -0300 Subject: [PATCH 26/36] Fixed G-Max Finale test --- test/dynamax.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/dynamax.c b/test/dynamax.c index 27a689153e..0b04065bf2 100644 --- a/test/dynamax.c +++ b/test/dynamax.c @@ -1294,8 +1294,8 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Finale heals allies by 1/6 of their health") HP_BAR(playerLeft, captureDamage: &damage1); HP_BAR(playerRight, captureDamage: &damage2); } THEN { - EXPECT_MUL_EQ(playerLeft->hp - 1, Q_4_12(6), playerLeft->maxHP); // heals based on Dynamax HP - EXPECT_MUL_EQ(playerRight->hp - 1, Q_4_12(6), playerRight->maxHP); + EXPECT_MUL_EQ(-damage1, Q_4_12(6), playerLeft->maxHP); // heals based on Dynamax HP + EXPECT_MUL_EQ(-damage2, Q_4_12(6), playerRight->maxHP); } } From 57a99e9be6312631567b3eb901af7b71b3fffa29 Mon Sep 17 00:00:00 2001 From: Alex <93446519+AlexOn1ine@users.noreply.github.com> Date: Fri, 27 Oct 2023 15:38:40 +0200 Subject: [PATCH 27/36] Fixes dynamax move target and canceling in doubles (#3470) --- src/battle_controller_player.c | 7 ++----- src/battle_main.c | 6 +++--- src/battle_util.c | 7 ++++--- 3 files changed, 9 insertions(+), 11 deletions(-) diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c index e59ea5ba28..e1041582e8 100644 --- a/src/battle_controller_player.c +++ b/src/battle_controller_player.c @@ -707,11 +707,8 @@ static void HandleInputChooseMove(u32 battler) } // Status moves turn into Max Guard when Dynamaxed, targets user. - if ((IsDynamaxed(battler) || gBattleStruct->dynamax.playerSelect) - && gBattleMoves[moveInfo->moves[gMoveSelectionCursor[battler]]].split == SPLIT_STATUS) - { - moveTarget = MOVE_TARGET_USER; - } + if ((IsDynamaxed(battler) || gBattleStruct->dynamax.playerSelect)) + moveTarget = gBattleMoves[GetMaxMove(battler, moveInfo->moves[gMoveSelectionCursor[battler]])].target; if (moveTarget & MOVE_TARGET_USER) gMultiUsePlayerCursor = battler; diff --git a/src/battle_main.c b/src/battle_main.c index 173fc45468..6b108506f3 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -4253,8 +4253,8 @@ static void HandleTurnActionSelectionState(void) gBattleStruct->mega.toEvolve &= ~(gBitTable[BATTLE_PARTNER(GetBattlerPosition(battler))]); gBattleStruct->burst.toBurst &= ~(gBitTable[BATTLE_PARTNER(GetBattlerPosition(battler))]); - gBattleStruct->dynamax.toDynamax &= ~(gBitTable[battler]); - gBattleStruct->dynamax.usingMaxMove[battler] = FALSE; + gBattleStruct->dynamax.toDynamax &= ~(gBitTable[BATTLE_PARTNER(GetBattlerPosition(battler))]); + gBattleStruct->dynamax.usingMaxMove[BATTLE_PARTNER(GetBattlerPosition(battler))] = FALSE; gBattleStruct->zmove.toBeUsed[BATTLE_PARTNER(GetBattlerPosition(battler))] = MOVE_NONE; BtlController_EmitEndBounceEffect(battler, BUFFER_A); MarkBattlerForControllerExec(battler); @@ -4354,7 +4354,7 @@ static void HandleTurnActionSelectionState(void) gBattleStruct->burst.toBurst |= gBitTable[battler]; else if (gBattleResources->bufferB[battler][2] & RET_DYNAMAX) gBattleStruct->dynamax.toDynamax |= gBitTable[battler]; - + // Max Move check if (ShouldUseMaxMove(battler, gChosenMoveByBattler[battler])) { diff --git a/src/battle_util.c b/src/battle_util.c index afef74b0f8..007e4cfcab 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -322,7 +322,6 @@ void HandleAction_UseMove(void) gCurrentMove = gBattleStruct->zmove.toBeUsed[gBattlerAttacker]; } - moveTarget = GetBattlerMoveTargetType(gBattlerAttacker, gCurrentMove); if (gBattleMons[gBattlerAttacker].hp != 0) { @@ -343,6 +342,8 @@ void HandleAction_UseMove(void) gBattleStruct->dynamax.activeSplit = gBattleStruct->dynamax.splits[gBattlerAttacker]; } + moveTarget = GetBattlerMoveTargetType(gBattlerAttacker, gCurrentMove); + // choose target side = BATTLE_OPPOSITE(GetBattlerSide(gBattlerAttacker)); if (IsAffectedByFollowMe(gBattlerAttacker, side, gCurrentMove) @@ -8193,10 +8194,10 @@ bool32 IsBattlerProtected(u32 battler, u32 move) // Z-Moves and Max Moves bypass protection (except Max Guard). if ((IsMaxMove(move) || gBattleStruct->zmove.active) - && (!gProtectStructs[battler].maxGuarded + && (!gProtectStructs[battler].maxGuarded || gBattleMoves[move].argument == MAX_EFFECT_BYPASS_PROTECT)) return FALSE; - + // Max Guard is silly about the moves it blocks, including Teatime. if (gProtectStructs[battler].maxGuarded && IsMoveBlockedByMaxGuard(move)) return TRUE; From 8e0991475cf288f2bc9f269e5bc5faa11db34d9c Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Fri, 27 Oct 2023 11:04:10 -0300 Subject: [PATCH 28/36] Incorporated upstream fixes --- data/contest_ai_scripts.s | 25 ++++++++++--------- data/event_scripts.s | 1 + .../scripts.inc | 8 +++--- data/scripts/trainer_hill.inc | 4 +-- src/battle_factory.c | 3 +-- 5 files changed, 21 insertions(+), 20 deletions(-) diff --git a/data/contest_ai_scripts.s b/data/contest_ai_scripts.s index ecd3103ae2..affaf31d6d 100644 --- a/data/contest_ai_scripts.s +++ b/data/contest_ai_scripts.s @@ -1,3 +1,4 @@ +#include "config.h" #include "constants/global.h" #include "constants/contest.h" .include "asm/macros.inc" @@ -435,11 +436,11 @@ AI_CGM_BetterWhenAudienceExcited: AI_CGM_BetterWhenAudienceExcited_1stUp: @ BUG: Should be if_appeal_num_eq 0 @ 1st up on 1st appeal excitement will always be 0 -.ifdef BUGFIX +#ifdef BUGFIX if_appeal_num_eq 0, AI_CGM_BetterWhenAudienceExcited_1stAppeal -.else +#else if_appeal_num_not_eq 0, AI_CGM_BetterWhenAudienceExcited_1stAppeal -.endif +#endif if_excitement_eq 4, AI_CGM_BetterWhenAudienceExcited_1AwayFromMax if_excitement_eq 3, AI_CGM_BetterWhenAudienceExcited_2AwayFromMax end @@ -546,11 +547,11 @@ AI_CGM_TargetMonWithJudgesAttention: end AI_CGM_TargetMonWithJudgesAttention_CheckMon1: if_cannot_participate MON_1, AI_CGM_TargetMonWithJudgesAttention_CheckMon2 -.ifdef BUGFIX +#ifdef BUGFIX if_not_used_combo_starter MON_1, AI_CGM_TargetMonWithJudgesAttention_CheckMon2 -.else +#else if_used_combo_starter MON_1, AI_CGM_TargetMonWithJudgesAttention_CheckMon2 -.endif +#endif if_random_less_than 125, AI_CGM_TargetMonWithJudgesAttention_CheckMon2 score +2 if_not_completed_combo MON_1, AI_CGM_TargetMonWithJudgesAttention_CheckMon2 @@ -559,11 +560,11 @@ AI_CGM_TargetMonWithJudgesAttention_CheckMon1: AI_CGM_TargetMonWithJudgesAttention_CheckMon2: if_user_order_eq MON_2, AI_CGM_End if_cannot_participate MON_2, AI_CGM_TargetMonWithJudgesAttention_CheckMon3 -.ifdef BUGFIX +#ifdef BUGFIX if_not_used_combo_starter MON_2, AI_CGM_TargetMonWithJudgesAttention_CheckMon3 -.else +#else if_used_combo_starter MON_2, AI_CGM_TargetMonWithJudgesAttention_CheckMon3 -.endif +#endif if_random_less_than 125, AI_CGM_TargetMonWithJudgesAttention_CheckMon3 score +2 if_not_completed_combo MON_2, AI_CGM_TargetMonWithJudgesAttention_CheckMon3 @@ -572,11 +573,11 @@ AI_CGM_TargetMonWithJudgesAttention_CheckMon2: AI_CGM_TargetMonWithJudgesAttention_CheckMon3: if_user_order_eq MON_3, AI_CGM_End if_cannot_participate MON_3, AI_CGM_End -.ifdef BUGFIX +#ifdef BUGFIX if_not_used_combo_starter MON_3, AI_CGM_End -.else +#else if_used_combo_starter MON_3, AI_CGM_End -.endif +#endif if_random_less_than 125, AI_CGM_End score +2 if_not_completed_combo MON_3, AI_CGM_End diff --git a/data/event_scripts.s b/data/event_scripts.s index 35d0cae2f9..a376866181 100644 --- a/data/event_scripts.s +++ b/data/event_scripts.s @@ -1,3 +1,4 @@ +#include "config.h" #include "config/battle.h" #include "config/item.h" #include "constants/global.h" diff --git a/data/maps/BattleFrontier_BattleTowerLobby/scripts.inc b/data/maps/BattleFrontier_BattleTowerLobby/scripts.inc index fdbf2a5e75..a216055b5b 100644 --- a/data/maps/BattleFrontier_BattleTowerLobby/scripts.inc +++ b/data/maps/BattleFrontier_BattleTowerLobby/scripts.inc @@ -415,18 +415,18 @@ BattleFrontier_BattleTowerLobby_EventScript_SaveBeforeLinkMultisChallenge:: @ to the flash, but not data in PokemonStorage. The SaveGame script that follows asks the player to do a full save, @ which they can opt out of. As a result the player can save their party and quit without having saved the PC. @ This allows players to clone pokemon and their held items by withdrawing them (or erase them by despositing). -.ifndef BUGFIX +#ifndef BUGFIX tower_save 0 -.endif +#endif call Common_EventScript_SaveGame setvar VAR_TEMP_CHALLENGE_STATUS, 255 goto_if_eq VAR_RESULT, 0, BattleFrontier_BattleTowerLobby_EventScript_CancelChallengeSaveFailed @ GAME_STAT_ENTERED_BATTLE_TOWER should not be incremented here, for two reasons: @ 1. It is incremented again in BattleFrontier_BattleTowerLobby_EventScript_CableLinkSuccessful or BattleFrontier_BattleTowerLobby_EventScript_WirelessLinkSuccessful @ 2. If the player tries to connect, but fails, the counter will still be incremented even if the player never enters the tower. -.ifndef BUGFIX +#ifndef BUGFIX incrementgamestat GAME_STAT_ENTERED_BATTLE_TOWER -.endif +#endif specialvar VAR_RESULT, IsWirelessAdapterConnected goto_if_eq VAR_RESULT, TRUE, BattleFrontier_BattleTowerLobby_EventScript_TryWirelessLink goto BattleFrontier_BattleTowerLobby_EventScript_TryCableLink diff --git a/data/scripts/trainer_hill.inc b/data/scripts/trainer_hill.inc index b7f8153514..04bbe05e5a 100644 --- a/data/scripts/trainer_hill.inc +++ b/data/scripts/trainer_hill.inc @@ -13,9 +13,9 @@ TrainerHill_OnWarp: TrainerHill_1F_EventScript_DummyOnWarp:: setvar VAR_TEMP_3, 1 -.ifdef BUGFIX +#ifdef BUGFIX end @ Missing end. By chance, the next byte (0x02 of VAR_TEMP_2) is also the id for the end cmd -.endif +#endif TrainerHill_OnFrame: map_script_2 VAR_TEMP_2, 0, TrainerHill_1F_EventScript_DummyWarpToEntranceCounter diff --git a/src/battle_factory.c b/src/battle_factory.c index f2bcc16d26..4543bfbad4 100644 --- a/src/battle_factory.c +++ b/src/battle_factory.c @@ -745,8 +745,7 @@ u8 GetFactoryMonFixedIV(u8 challengeNum, bool8 isLastBattle) // or the "elevated" rentals from round 8 (challengeNum+1==8) // This happens to land on a number higher than 31, which is interpreted as "random IVs" #ifdef BUGFIX - //if (challengeNum >= ARRAY_COUNT(sFixedIVTable)) //TODOMERGE - if (challengeNum > ARRAY_COUNT(sFixedIVTable)) + if (challengeNum >= ARRAY_COUNT(sFixedIVTable)) #else if (challengeNum > ARRAY_COUNT(sFixedIVTable)) #endif From bd71946372775f44743390fa0f6a30f95051491a Mon Sep 17 00:00:00 2001 From: kittenchilly Date: Fri, 27 Oct 2023 11:52:44 -0500 Subject: [PATCH 29/36] Remove all trailing whitespace (master) (#3472) --- .../ISSUE_TEMPLATE/01_battle_engine_bugs.yaml | 2 +- .github/ISSUE_TEMPLATE/02_battle_ai_issues.yaml | 2 +- .github/ISSUE_TEMPLATE/03_feature_requests.yaml | 2 +- .github/ISSUE_TEMPLATE/04_other_errors.yaml | 2 +- .github/ISSUE_TEMPLATE/config.yml | 2 +- INSTALL.md | 6 +++--- data/battle_scripts_2.s | 2 +- src/battle_dome.c | 4 ++-- src/battle_interface.c | 4 ++-- src/data/items.h | 2 +- src/fieldmap.c | 2 +- src/pokemon_animation.c | 16 ++++++++-------- src/pokemon_debug.c | 2 +- test/battle/hold_effect/eject_button.c | 2 +- test/battle/move_effect/hydro_steam.c | 6 +++--- test/battle/move_effect/revival_blessing.c | 2 +- test/battle/move_effect/roost.c | 10 +++++----- test/battle/move_effect/teatime.c | 6 +++--- test/battle/weather/rain.c | 4 ++-- test/battle/weather/sunlight.c | 4 ++-- 20 files changed, 41 insertions(+), 41 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/01_battle_engine_bugs.yaml b/.github/ISSUE_TEMPLATE/01_battle_engine_bugs.yaml index a1835c551f..38b323146a 100644 --- a/.github/ISSUE_TEMPLATE/01_battle_engine_bugs.yaml +++ b/.github/ISSUE_TEMPLATE/01_battle_engine_bugs.yaml @@ -11,7 +11,7 @@ body: attributes: label: Description description: | - Describe the issue you are experiencing. + Describe the issue you are experiencing. Attach images/videos if possible. placeholder: | Please enter a description of the issue. Here you can also attach log screenshots, gifs or a video diff --git a/.github/ISSUE_TEMPLATE/02_battle_ai_issues.yaml b/.github/ISSUE_TEMPLATE/02_battle_ai_issues.yaml index f9ccbac7eb..bb617b3d5e 100644 --- a/.github/ISSUE_TEMPLATE/02_battle_ai_issues.yaml +++ b/.github/ISSUE_TEMPLATE/02_battle_ai_issues.yaml @@ -11,7 +11,7 @@ body: attributes: label: Description description: | - Describe the issue you are experiencing. + Describe the issue you are experiencing. Attach images/videos if possible. placeholder: | Please enter a description of the issue. Here you can also attach log screenshots, gifs or a video diff --git a/.github/ISSUE_TEMPLATE/03_feature_requests.yaml b/.github/ISSUE_TEMPLATE/03_feature_requests.yaml index 682f0dc098..8d56216265 100644 --- a/.github/ISSUE_TEMPLATE/03_feature_requests.yaml +++ b/.github/ISSUE_TEMPLATE/03_feature_requests.yaml @@ -11,7 +11,7 @@ body: attributes: label: Description description: | - Describe the issue you are experiencing. + Describe the issue you are experiencing. Attach images/videos if possible. placeholder: | Please enter a description of the issue. Here you can also attach log screenshots, gifs or a video diff --git a/.github/ISSUE_TEMPLATE/04_other_errors.yaml b/.github/ISSUE_TEMPLATE/04_other_errors.yaml index dfb0850030..fec54fa150 100644 --- a/.github/ISSUE_TEMPLATE/04_other_errors.yaml +++ b/.github/ISSUE_TEMPLATE/04_other_errors.yaml @@ -11,7 +11,7 @@ body: attributes: label: Description description: | - Describe the issue you are experiencing. + Describe the issue you are experiencing. Attach images/videos if possible. placeholder: | Please enter a description of the issue. Here you can also attach log screenshots, gifs or a video diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index 9dc46b6e3f..9a6dfeadd9 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -1,5 +1,5 @@ blank_issues_enabled: false -contact_links: +contact_links: - name: Rom-Hacking Hideout's Discord server! url: https://discord.gg/6CzjAG6GZk about: You can follow the development of pokeemerald-expansion and be notified of new releases :) \ No newline at end of file diff --git a/INSTALL.md b/INSTALL.md index e74706d6aa..af2e844677 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -150,9 +150,9 @@ Note that in msys2, Copy is Ctrl+Insert and Paste is Shift+Insert.
Notes... - > Note 1: While not shown, msys uses forward slashes `/` instead of backwards slashes `\` as the directory separator. - > Note 2: If the path has spaces, then the path must be wrapped with quotations, e.g. `cd "Downloads/My Downloads"`. - > Note 3: Windows path names are case-insensitive so adhering to capitalization isn’t needed. + > Note 1: While not shown, msys uses forward slashes `/` instead of backwards slashes `\` as the directory separator. + > Note 2: If the path has spaces, then the path must be wrapped with quotations, e.g. `cd "Downloads/My Downloads"`. + > Note 3: Windows path names are case-insensitive so adhering to capitalization isn’t needed. > Note 4: If libpng was saved elsewhere, you will need to specify the full path to where libpng was downloaded, e.g. `cd c:/devkitpro/msys2` if it was saved there.
diff --git a/data/battle_scripts_2.s b/data/battle_scripts_2.s index 5b0827ade6..20f19d5498 100644 --- a/data/battle_scripts_2.s +++ b/data/battle_scripts_2.s @@ -244,7 +244,7 @@ BattleScript_TrainerASlideMsgRet:: BattleScript_TrainerASlideMsgEnd2:: call BattleScript_TrainerASlideMsgRet end2 - + BattleScript_TrainerBSlideMsgRet:: handletrainerslidemsg BS_SCRIPTING, 0 trainerslidein B_POSITION_OPPONENT_RIGHT diff --git a/src/battle_dome.c b/src/battle_dome.c index 917200ac67..ad7c60dd1c 100644 --- a/src/battle_dome.c +++ b/src/battle_dome.c @@ -1665,13 +1665,13 @@ static const u8 sTourneyTreePokeballCoords[DOME_TOURNAMENT_TRAINERS_COUNT + DOME {.tile = LINE_V_L, .y = 9, .x = 17}, \ {.tile = LINE_V_L, .y = 10, .x = 17}, \ {.tile = LINE_V_L_HALF_LOGO, .y = 11, .x = 17}, - + #define LINESECTION_SEMIFINAL_BOTTOM_RIGHT \ {.tile = LINE_V_L_LOGO4, .y = 14, .x = 17}, \ {.tile = LINE_V_L_LOGO3, .y = 13, .x = 17}, \ {.tile = LINE_V_L_LOGO2, .y = 12, .x = 17}, \ {.tile = LINE_V_L_LOGO1, .y = 11, .x = 17}, - + #define LINESECTION_FINAL_LEFT \ {.tile = LINE_H_LOGO1, .y = 11, .x = 13}, \ {.tile = LINE_H_LOGO2, .y = 11, .x = 14}, diff --git a/src/battle_interface.c b/src/battle_interface.c index d1e5757fb9..bd87bfc0b1 100644 --- a/src/battle_interface.c +++ b/src/battle_interface.c @@ -3672,13 +3672,13 @@ static void Task_BounceBall(u8 taskId) sprite->callback = SpriteCB_LastUsedBallBounce; //Show and bounce down task->sState++; } - break; + break; case 4: // Destroy Task if(!sprite->sMoving) { sprite->callback = SpriteCB_LastUsedBall; DestroyTask(taskId); - } + } } if (!gLastUsedBallMenuPresent) { diff --git a/src/data/items.h b/src/data/items.h index ec7e22a608..1cb54c88a1 100644 --- a/src/data/items.h +++ b/src/data/items.h @@ -15,7 +15,7 @@ #endif #if I_TYPE_BOOST_POWER >= GEN_4 // For non Pokémon-specific type-boosting held items. - #define TYPE_BOOST_PARAM 20 + #define TYPE_BOOST_PARAM 20 #else #define TYPE_BOOST_PARAM 10 #endif diff --git a/src/fieldmap.c b/src/fieldmap.c index 8faab449a4..ac9cedc0ba 100644 --- a/src/fieldmap.c +++ b/src/fieldmap.c @@ -681,7 +681,7 @@ bool8 CameraMove(int x, int y) { DebugPrintfLevel(MGBA_LOG_WARN, "GetIncomingConnection returned an invalid connection inside CameraMove!"); } - + } return gCamera.active; } diff --git a/src/pokemon_animation.c b/src/pokemon_animation.c index 57b3d5b303..86def9b721 100644 --- a/src/pokemon_animation.c +++ b/src/pokemon_animation.c @@ -604,7 +604,7 @@ static const u8 sSpeciesToBackAnimSet[NUM_SPECIES] = [SPECIES_JIRACHI] = BACK_ANIM_CONVEX_DOUBLE_ARC, [SPECIES_DEOXYS] = BACK_ANIM_SHRINK_GROW_VIBRATE, [SPECIES_CHIMECHO] = BACK_ANIM_CONVEX_DOUBLE_ARC, - + // Gen 4 [SPECIES_TURTWIG] = BACK_ANIM_H_SLIDE, [SPECIES_GROTLE] = BACK_ANIM_H_SLIDE, @@ -713,7 +713,7 @@ static const u8 sSpeciesToBackAnimSet[NUM_SPECIES] = [SPECIES_DARKRAI] = BACK_ANIM_SHRINK_GROW_VIBRATE, [SPECIES_SHAYMIN] = BACK_ANIM_CONCAVE_ARC_SMALL, [SPECIES_ARCEUS] = BACK_ANIM_GROW, - + //Gen 4 Forms [SPECIES_DEOXYS_ATTACK] = BACK_ANIM_GROW_STUTTER, [SPECIES_DEOXYS_DEFENSE] = BACK_ANIM_DIP_RIGHT_SIDE, @@ -749,7 +749,7 @@ static const u8 sSpeciesToBackAnimSet[NUM_SPECIES] = [SPECIES_ARCEUS_DRAGON] = BACK_ANIM_GROW_STUTTER, [SPECIES_ARCEUS_DARK] = BACK_ANIM_GROW_STUTTER, [SPECIES_ARCEUS_FAIRY] = BACK_ANIM_GROW_STUTTER, - + // Gen 5 [SPECIES_VICTINI] = BACK_ANIM_H_SHAKE, [SPECIES_SNIVY] = BACK_ANIM_H_SLIDE, @@ -812,7 +812,7 @@ static const u8 sSpeciesToBackAnimSet[NUM_SPECIES] = [SPECIES_KROKOROK] = BACK_ANIM_V_STRETCH, [SPECIES_KROOKODILE] = BACK_ANIM_V_SHAKE_LOW, [SPECIES_DARUMAKA] = BACK_ANIM_CONCAVE_ARC_LARGE, - [SPECIES_DARMANITAN] = BACK_ANIM_V_SHAKE_H_SLIDE, + [SPECIES_DARMANITAN] = BACK_ANIM_V_SHAKE_H_SLIDE, [SPECIES_MARACTUS] = BACK_ANIM_CONCAVE_ARC_LARGE, [SPECIES_DWEBBLE] = BACK_ANIM_H_SLIDE, [SPECIES_CRUSTLE] = BACK_ANIM_V_SHAKE_LOW, @@ -928,7 +928,7 @@ static const u8 sSpeciesToBackAnimSet[NUM_SPECIES] = [SPECIES_GENESECT_SHOCK_DRIVE] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, [SPECIES_GENESECT_BURN_DRIVE] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, [SPECIES_GENESECT_CHILL_DRIVE] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, - + //Gen 6 [SPECIES_CHESPIN] = BACK_ANIM_H_SLIDE, [SPECIES_QUILLADIN] = BACK_ANIM_GROW, @@ -1002,7 +1002,7 @@ static const u8 sSpeciesToBackAnimSet[NUM_SPECIES] = [SPECIES_DIANCIE] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, [SPECIES_HOOPA] = BACK_ANIM_CONVEX_DOUBLE_ARC, [SPECIES_VOLCANION] = BACK_ANIM_SHAKE_GLOW_RED, - + //Gen 6 Forms [SPECIES_GRENINJA_ASH] = BACK_ANIM_SHAKE_GLOW_BLUE, [SPECIES_GRENINJA_BATTLE_BOND] = BACK_ANIM_V_STRETCH, @@ -1061,7 +1061,7 @@ static const u8 sSpeciesToBackAnimSet[NUM_SPECIES] = [SPECIES_ZYGARDE_50_POWER_CONSTRUCT] = BACK_ANIM_SHAKE_GLOW_GREEN, [SPECIES_ZYGARDE_COMPLETE] = BACK_ANIM_SHAKE_GLOW_GREEN, [SPECIES_HOOPA_UNBOUND] = BACK_ANIM_V_SHAKE_LOW, - + //Gen 6 Megas (Thanks Furret/CyanSMP64!) [SPECIES_VENUSAUR_MEGA] = BACK_ANIM_SHAKE_GLOW_GREEN, [SPECIES_CHARIZARD_MEGA_X] = BACK_ANIM_SHAKE_GLOW_BLUE, @@ -1111,7 +1111,7 @@ static const u8 sSpeciesToBackAnimSet[NUM_SPECIES] = [SPECIES_RAYQUAZA_MEGA] = BACK_ANIM_SHAKE_GLOW_GREEN, [SPECIES_KYOGRE_PRIMAL] = BACK_ANIM_SHAKE_GLOW_BLUE, [SPECIES_GROUDON_PRIMAL] = BACK_ANIM_SHAKE_GLOW_RED, - + }; // Equivalent to struct YellowFlashData, but doesn't match as a struct diff --git a/src/pokemon_debug.c b/src/pokemon_debug.c index 3c9a562776..8ec5fe6dc7 100644 --- a/src/pokemon_debug.c +++ b/src/pokemon_debug.c @@ -1262,7 +1262,7 @@ static void ApplyOffsetSpriteValues(struct PokemonDebugMenu *data) gSprites[data->backspriteId].y = DEBUG_MON_BACK_Y + gMonBackPicCoords[species].y_offset + data->offsetsSpriteValues.offset_back_picCoords; //Front gSprites[data->frontspriteId].y = GetBattlerSpriteFinal_YCustom(species, data->offsetsSpriteValues.offset_front_picCoords, data->offsetsSpriteValues.offset_front_elevation); - + if (data->currentSubmenu == 2) UpdateShadowSpriteInvisible(data); } diff --git a/test/battle/hold_effect/eject_button.c b/test/battle/hold_effect/eject_button.c index 4409f5d5b6..45dfc539b8 100644 --- a/test/battle/hold_effect/eject_button.c +++ b/test/battle/hold_effect/eject_button.c @@ -55,7 +55,7 @@ SINGLE_BATTLE_TEST("Eject Button will not activate under Substitute") OPPONENT(SPECIES_RAICHU) { Item(ITEM_EJECT_BUTTON); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { + TURN { MOVE(opponent, MOVE_SUBSTITUTE); MOVE(player, MOVE_TACKLE); } diff --git a/test/battle/move_effect/hydro_steam.c b/test/battle/move_effect/hydro_steam.c index f86da07ac5..80a3a90d37 100644 --- a/test/battle/move_effect/hydro_steam.c +++ b/test/battle/move_effect/hydro_steam.c @@ -1,11 +1,11 @@ #include "global.h" #include "test/battle.h" - + ASSUMPTIONS { ASSUME(gBattleMoves[MOVE_HYDRO_STEAM].effect == EFFECT_HYDRO_STEAM); } - + SINGLE_BATTLE_TEST("Hydro Steam deals 1.5x damage under both Sunlight and Rain", s16 damage) { u16 setupMove; @@ -26,7 +26,7 @@ SINGLE_BATTLE_TEST("Hydro Steam deals 1.5x damage under both Sunlight and Rain", EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.5), results[1].damage); } } - + SINGLE_BATTLE_TEST("Hydro Steam is affected by Utility Umbrella", s16 damage) { u32 itemPlayer; diff --git a/test/battle/move_effect/revival_blessing.c b/test/battle/move_effect/revival_blessing.c index a5dd32c197..63f454a779 100644 --- a/test/battle/move_effect/revival_blessing.c +++ b/test/battle/move_effect/revival_blessing.c @@ -103,7 +103,7 @@ TO_DO_BATTLE_TEST("Revived battlers still lose their turn"); // OPPONENT(SPECIES_WYNAUT) { HP(1); } // } WHEN { // TURN { MOVE(playerLeft, MOVE_TACKLE, target: opponentRight); -// MOVE(opponentLeft, MOVE_REVIVAL_BLESSING); +// MOVE(opponentLeft, MOVE_REVIVAL_BLESSING); // SEND_OUT(opponentLeft, 1); } // } SCENE { // MESSAGE("Wobbuffet used Tackle!"); diff --git a/test/battle/move_effect/roost.c b/test/battle/move_effect/roost.c index 12731e2345..b68cbfeafc 100644 --- a/test/battle/move_effect/roost.c +++ b/test/battle/move_effect/roost.c @@ -62,7 +62,7 @@ SINGLE_BATTLE_TEST("Roost fails if the user is under the effects of Heal Block") } SINGLE_BATTLE_TEST("Roost recovers 50% of the user's Max HP") -{ +{ s16 hp; KNOWN_FAILING; // All healing is currently rounded down @@ -222,7 +222,7 @@ SINGLE_BATTLE_TEST("Roost, if used by a Mystery/Flying type, treats the user as MESSAGE("It's not very effective…"); MESSAGE("It doesn't affect Moltres…"); } - } + } } // Tested in ORAS @@ -234,9 +234,9 @@ DOUBLE_BATTLE_TEST("Roost suppresses the user's not-yet-aquired Flying-type this PLAYER(SPECIES_KECLEON) { Speed(40); HP(150); Ability(ABILITY_COLOR_CHANGE); } PLAYER(SPECIES_WOBBUFFET) { Speed(10); } OPPONENT(SPECIES_PIDGEY) { Speed(30); } - OPPONENT(SPECIES_SANDSHREW) { Speed(20); } + OPPONENT(SPECIES_SANDSHREW) { Speed(20); } } WHEN { - TURN { MOVE(playerLeft, MOVE_ROOST); + TURN { MOVE(playerLeft, MOVE_ROOST); MOVE(opponentLeft, MOVE_GUST, target: playerLeft); MOVE(opponentRight, MOVE_EARTHQUAKE, target: playerLeft); } } SCENE { @@ -441,6 +441,6 @@ SINGLE_BATTLE_TEST("Roost does not suppress the ungrounded effect of Telekinesis } // Tested in ORAS -// Transform does not copy the Roost "status" either. +// Transform does not copy the Roost "status" either. // Probably better as a Transform test. TO_DO_BATTLE_TEST("Roost's suppression does not prevent others who are Transforming into the user from copying its Flying-type"); diff --git a/test/battle/move_effect/teatime.c b/test/battle/move_effect/teatime.c index c4398f296a..3f933db115 100644 --- a/test/battle/move_effect/teatime.c +++ b/test/battle/move_effect/teatime.c @@ -143,7 +143,7 @@ SINGLE_BATTLE_TEST("Teatime does not affect Pokémon in the semi-invulnerable tu PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_NONE); } OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_LIECHI_BERRY); } } WHEN { - TURN { + TURN { MOVE(opponent, MOVE_FLY); MOVE(player, MOVE_TEATIME); } @@ -172,7 +172,7 @@ SINGLE_BATTLE_TEST("Teatime triggers Volt Absorb if it has been affected by Elec PLAYER(SPECIES_JOLTEON) { Ability(ABILITY_VOLT_ABSORB); Item(item); HP(55); MaxHP(100); } OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_LIECHI_BERRY); } } WHEN { - TURN { + TURN { MOVE(player, move); MOVE(opponent, MOVE_TEATIME); } @@ -248,7 +248,7 @@ SINGLE_BATTLE_TEST("Teatime triggers Motor Drive if it has been affected by Elec PLAYER(SPECIES_ELECTIVIRE) { Ability(ABILITY_MOTOR_DRIVE); Item(item); } OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_LIECHI_BERRY); } } WHEN { - TURN { + TURN { MOVE(player, move); MOVE(opponent, MOVE_TEATIME); } diff --git a/test/battle/weather/rain.c b/test/battle/weather/rain.c index 00ac263044..3f7a6f599b 100644 --- a/test/battle/weather/rain.c +++ b/test/battle/weather/rain.c @@ -7,7 +7,7 @@ ASSUMPTIONS ASSUME(gBattleMoves[MOVE_EMBER].type == TYPE_FIRE); ASSUME(gBattleMoves[MOVE_WATER_GUN].type == TYPE_WATER); } - + SINGLE_BATTLE_TEST("Rain multiplies the power of Fire-type moves by 0.5x", s16 damage) { u32 setupMove; @@ -26,7 +26,7 @@ SINGLE_BATTLE_TEST("Rain multiplies the power of Fire-type moves by 0.5x", s16 d EXPECT_MUL_EQ(results[0].damage, Q_4_12(0.5), results[1].damage); } } - + SINGLE_BATTLE_TEST("Rain multiplies the power of Water-type moves by 1.5x", s16 damage) { u32 setupMove; diff --git a/test/battle/weather/sunlight.c b/test/battle/weather/sunlight.c index 9d471332ad..51b18dd076 100644 --- a/test/battle/weather/sunlight.c +++ b/test/battle/weather/sunlight.c @@ -7,7 +7,7 @@ ASSUMPTIONS ASSUME(gBattleMoves[MOVE_EMBER].type == TYPE_FIRE); ASSUME(gBattleMoves[MOVE_WATER_GUN].type == TYPE_WATER); } - + SINGLE_BATTLE_TEST("Sunlight multiplies the power of Fire-type moves by 1.5x", s16 damage) { u32 setupMove; @@ -26,7 +26,7 @@ SINGLE_BATTLE_TEST("Sunlight multiplies the power of Fire-type moves by 1.5x", s EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.5), results[1].damage); } } - + SINGLE_BATTLE_TEST("Sunlight multiplies the power of Water-type moves by 0.5x", s16 damage) { u32 setupMove; From 9d2be9f3a65ea6e2d6d1c1288734fc5df8a22871 Mon Sep 17 00:00:00 2001 From: kittenchilly Date: Fri, 27 Oct 2023 11:54:55 -0500 Subject: [PATCH 30/36] Remove all trailing whitespace (upcoming) (#3473) --- .github/ISSUE_TEMPLATE/01_battle_engine_bugs.yaml | 2 +- .github/ISSUE_TEMPLATE/02_battle_ai_issues.yaml | 2 +- .github/ISSUE_TEMPLATE/03_feature_requests.yaml | 2 +- .github/ISSUE_TEMPLATE/04_other_errors.yaml | 2 +- .github/ISSUE_TEMPLATE/config.yml | 2 +- data/battle_scripts_2.s | 2 +- src/battle_controller_opponent.c | 4 ++-- src/data/text/move_names.h | 1 - src/pokemon_animation.c | 4 ++-- test/battle/hold_effect/eject_button.c | 2 +- test/battle/move_effect/hydro_steam.c | 6 +++--- test/battle/move_effect/revival_blessing.c | 2 +- test/battle/weather/rain.c | 4 ++-- test/battle/weather/sunlight.c | 4 ++-- test/dynamax.c | 12 ++++++------ test/test_runner_battle.c | 2 +- 16 files changed, 26 insertions(+), 27 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/01_battle_engine_bugs.yaml b/.github/ISSUE_TEMPLATE/01_battle_engine_bugs.yaml index a1835c551f..38b323146a 100644 --- a/.github/ISSUE_TEMPLATE/01_battle_engine_bugs.yaml +++ b/.github/ISSUE_TEMPLATE/01_battle_engine_bugs.yaml @@ -11,7 +11,7 @@ body: attributes: label: Description description: | - Describe the issue you are experiencing. + Describe the issue you are experiencing. Attach images/videos if possible. placeholder: | Please enter a description of the issue. Here you can also attach log screenshots, gifs or a video diff --git a/.github/ISSUE_TEMPLATE/02_battle_ai_issues.yaml b/.github/ISSUE_TEMPLATE/02_battle_ai_issues.yaml index f9ccbac7eb..bb617b3d5e 100644 --- a/.github/ISSUE_TEMPLATE/02_battle_ai_issues.yaml +++ b/.github/ISSUE_TEMPLATE/02_battle_ai_issues.yaml @@ -11,7 +11,7 @@ body: attributes: label: Description description: | - Describe the issue you are experiencing. + Describe the issue you are experiencing. Attach images/videos if possible. placeholder: | Please enter a description of the issue. Here you can also attach log screenshots, gifs or a video diff --git a/.github/ISSUE_TEMPLATE/03_feature_requests.yaml b/.github/ISSUE_TEMPLATE/03_feature_requests.yaml index 682f0dc098..8d56216265 100644 --- a/.github/ISSUE_TEMPLATE/03_feature_requests.yaml +++ b/.github/ISSUE_TEMPLATE/03_feature_requests.yaml @@ -11,7 +11,7 @@ body: attributes: label: Description description: | - Describe the issue you are experiencing. + Describe the issue you are experiencing. Attach images/videos if possible. placeholder: | Please enter a description of the issue. Here you can also attach log screenshots, gifs or a video diff --git a/.github/ISSUE_TEMPLATE/04_other_errors.yaml b/.github/ISSUE_TEMPLATE/04_other_errors.yaml index dfb0850030..fec54fa150 100644 --- a/.github/ISSUE_TEMPLATE/04_other_errors.yaml +++ b/.github/ISSUE_TEMPLATE/04_other_errors.yaml @@ -11,7 +11,7 @@ body: attributes: label: Description description: | - Describe the issue you are experiencing. + Describe the issue you are experiencing. Attach images/videos if possible. placeholder: | Please enter a description of the issue. Here you can also attach log screenshots, gifs or a video diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index 9dc46b6e3f..9a6dfeadd9 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -1,5 +1,5 @@ blank_issues_enabled: false -contact_links: +contact_links: - name: Rom-Hacking Hideout's Discord server! url: https://discord.gg/6CzjAG6GZk about: You can follow the development of pokeemerald-expansion and be notified of new releases :) \ No newline at end of file diff --git a/data/battle_scripts_2.s b/data/battle_scripts_2.s index e8e9358771..46d4d195ea 100644 --- a/data/battle_scripts_2.s +++ b/data/battle_scripts_2.s @@ -245,7 +245,7 @@ BattleScript_TrainerASlideMsgRet:: BattleScript_TrainerASlideMsgEnd2:: call BattleScript_TrainerASlideMsgRet end2 - + BattleScript_TrainerBSlideMsgRet:: handletrainerslidemsg BS_SCRIPTING, 0 trainerslidein B_POSITION_OPPONENT_RIGHT diff --git a/src/battle_controller_opponent.c b/src/battle_controller_opponent.c index 703d66105b..e697fbb227 100644 --- a/src/battle_controller_opponent.c +++ b/src/battle_controller_opponent.c @@ -561,13 +561,13 @@ static void OpponentHandleChooseMove(u32 battler) if (ShouldUseZMove(battler, gBattlerTarget, chosenMove)) QueueZMove(battler, chosenMove); // If opponent can Mega Evolve, do it. - if (CanMegaEvolve(battler)) + if (CanMegaEvolve(battler)) BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, (chosenMoveId) | (RET_MEGA_EVOLUTION) | (gBattlerTarget << 8)); // If opponent can Ultra Burst, do it. else if (CanUltraBurst(battler)) BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, (chosenMoveId) | (RET_ULTRA_BURST) | (gBattlerTarget << 8)); // If opponent can Dynamax and is on final Pokemon, do it. - else if (CanDynamax(battler) && CountAIAliveNonEggMonsExcept(gBattlerPartyIndexes[battler]) == 0) + else if (CanDynamax(battler) && CountAIAliveNonEggMonsExcept(gBattlerPartyIndexes[battler]) == 0) BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, (chosenMoveId) | (RET_DYNAMAX) | (gBattlerTarget << 8)); else BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, (chosenMoveId) | (gBattlerTarget << 8)); diff --git a/src/data/text/move_names.h b/src/data/text/move_names.h index 39fd8129b2..01d613751e 100644 --- a/src/data/text/move_names.h +++ b/src/data/text/move_names.h @@ -1968,4 +1968,3 @@ const u8 *const gMaxMoveNames[] = [MOVE_G_MAX_ONE_BLOW - FIRST_MAX_MOVE] = sText_G_Max_One_Blow, [MOVE_G_MAX_RAPID_FLOW - FIRST_MAX_MOVE] = sText_G_Max_Rapid_Flow, }; - \ No newline at end of file diff --git a/src/pokemon_animation.c b/src/pokemon_animation.c index 1070c22aa8..90988bc764 100644 --- a/src/pokemon_animation.c +++ b/src/pokemon_animation.c @@ -777,7 +777,7 @@ static const u8 sSpeciesToBackAnimSet[NUM_SPECIES] = [SPECIES_KROKOROK] = BACK_ANIM_V_STRETCH, [SPECIES_KROOKODILE] = BACK_ANIM_V_SHAKE_LOW, [SPECIES_DARUMAKA] = BACK_ANIM_CONCAVE_ARC_LARGE, - [SPECIES_DARMANITAN_STANDARD_MODE] = BACK_ANIM_V_SHAKE_H_SLIDE, + [SPECIES_DARMANITAN_STANDARD_MODE] = BACK_ANIM_V_SHAKE_H_SLIDE, [SPECIES_MARACTUS] = BACK_ANIM_CONCAVE_ARC_LARGE, [SPECIES_DWEBBLE] = BACK_ANIM_H_SLIDE, [SPECIES_CRUSTLE] = BACK_ANIM_V_SHAKE_LOW, @@ -872,7 +872,7 @@ static const u8 sSpeciesToBackAnimSet[NUM_SPECIES] = [SPECIES_KELDEO_ORDINARY] = BACK_ANIM_JOLT_RIGHT, [SPECIES_MELOETTA_ARIA] = BACK_ANIM_CONVEX_DOUBLE_ARC, [SPECIES_GENESECT] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, - + // Gen 6 [SPECIES_CHESPIN] = BACK_ANIM_H_SLIDE, [SPECIES_QUILLADIN] = BACK_ANIM_GROW, diff --git a/test/battle/hold_effect/eject_button.c b/test/battle/hold_effect/eject_button.c index 4409f5d5b6..45dfc539b8 100644 --- a/test/battle/hold_effect/eject_button.c +++ b/test/battle/hold_effect/eject_button.c @@ -55,7 +55,7 @@ SINGLE_BATTLE_TEST("Eject Button will not activate under Substitute") OPPONENT(SPECIES_RAICHU) { Item(ITEM_EJECT_BUTTON); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { + TURN { MOVE(opponent, MOVE_SUBSTITUTE); MOVE(player, MOVE_TACKLE); } diff --git a/test/battle/move_effect/hydro_steam.c b/test/battle/move_effect/hydro_steam.c index f86da07ac5..80a3a90d37 100644 --- a/test/battle/move_effect/hydro_steam.c +++ b/test/battle/move_effect/hydro_steam.c @@ -1,11 +1,11 @@ #include "global.h" #include "test/battle.h" - + ASSUMPTIONS { ASSUME(gBattleMoves[MOVE_HYDRO_STEAM].effect == EFFECT_HYDRO_STEAM); } - + SINGLE_BATTLE_TEST("Hydro Steam deals 1.5x damage under both Sunlight and Rain", s16 damage) { u16 setupMove; @@ -26,7 +26,7 @@ SINGLE_BATTLE_TEST("Hydro Steam deals 1.5x damage under both Sunlight and Rain", EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.5), results[1].damage); } } - + SINGLE_BATTLE_TEST("Hydro Steam is affected by Utility Umbrella", s16 damage) { u32 itemPlayer; diff --git a/test/battle/move_effect/revival_blessing.c b/test/battle/move_effect/revival_blessing.c index a5dd32c197..63f454a779 100644 --- a/test/battle/move_effect/revival_blessing.c +++ b/test/battle/move_effect/revival_blessing.c @@ -103,7 +103,7 @@ TO_DO_BATTLE_TEST("Revived battlers still lose their turn"); // OPPONENT(SPECIES_WYNAUT) { HP(1); } // } WHEN { // TURN { MOVE(playerLeft, MOVE_TACKLE, target: opponentRight); -// MOVE(opponentLeft, MOVE_REVIVAL_BLESSING); +// MOVE(opponentLeft, MOVE_REVIVAL_BLESSING); // SEND_OUT(opponentLeft, 1); } // } SCENE { // MESSAGE("Wobbuffet used Tackle!"); diff --git a/test/battle/weather/rain.c b/test/battle/weather/rain.c index 00ac263044..3f7a6f599b 100644 --- a/test/battle/weather/rain.c +++ b/test/battle/weather/rain.c @@ -7,7 +7,7 @@ ASSUMPTIONS ASSUME(gBattleMoves[MOVE_EMBER].type == TYPE_FIRE); ASSUME(gBattleMoves[MOVE_WATER_GUN].type == TYPE_WATER); } - + SINGLE_BATTLE_TEST("Rain multiplies the power of Fire-type moves by 0.5x", s16 damage) { u32 setupMove; @@ -26,7 +26,7 @@ SINGLE_BATTLE_TEST("Rain multiplies the power of Fire-type moves by 0.5x", s16 d EXPECT_MUL_EQ(results[0].damage, Q_4_12(0.5), results[1].damage); } } - + SINGLE_BATTLE_TEST("Rain multiplies the power of Water-type moves by 1.5x", s16 damage) { u32 setupMove; diff --git a/test/battle/weather/sunlight.c b/test/battle/weather/sunlight.c index 9d471332ad..51b18dd076 100644 --- a/test/battle/weather/sunlight.c +++ b/test/battle/weather/sunlight.c @@ -7,7 +7,7 @@ ASSUMPTIONS ASSUME(gBattleMoves[MOVE_EMBER].type == TYPE_FIRE); ASSUME(gBattleMoves[MOVE_WATER_GUN].type == TYPE_WATER); } - + SINGLE_BATTLE_TEST("Sunlight multiplies the power of Fire-type moves by 1.5x", s16 damage) { u32 setupMove; @@ -26,7 +26,7 @@ SINGLE_BATTLE_TEST("Sunlight multiplies the power of Fire-type moves by 1.5x", s EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.5), results[1].damage); } } - + SINGLE_BATTLE_TEST("Sunlight multiplies the power of Water-type moves by 0.5x", s16 damage) { u32 setupMove; diff --git a/test/dynamax.c b/test/dynamax.c index 0b04065bf2..f37e3defd6 100644 --- a/test/dynamax.c +++ b/test/dynamax.c @@ -19,7 +19,7 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Dynamax increases HP and max HP by 1.5x", u16 hp) } MESSAGE("Foe Wobbuffet used Celebrate!"); } THEN { - results[i].hp = player->hp; + results[i].hp = player->hp; } FINALLY { EXPECT_MUL_EQ(results[0].hp, Q_4_12(1.5), results[1].hp); } @@ -49,7 +49,7 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Dynamax expires after three turns", u16 hp) if (dynamax) // Expect to have visual reversion at the end. ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player); } THEN { - results[i].hp = player->hp; + results[i].hp = player->hp; } FINALLY { EXPECT_EQ(results[0].hp, results[1].hp); } @@ -250,7 +250,7 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon can be encored immediately after TURN { MOVE(player, MOVE_ARM_THRUST, dynamax: TRUE); } TURN { MOVE(player, MOVE_ARM_THRUST); } TURN { MOVE(player, MOVE_ARM_THRUST); } - TURN { MOVE(opponent, MOVE_ENCORE); MOVE(player, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_ENCORE); MOVE(player, MOVE_TACKLE); } } SCENE { MESSAGE("Wobbuffet used Max Knuckle!"); MESSAGE("Wobbuffet used Max Knuckle!"); @@ -322,7 +322,7 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon are not immune to Knock Off") MESSAGE("Wobbuffet used Max Strike!"); MESSAGE("Foe Wobbuffet used Knock Off!"); MESSAGE("Foe Wobbuffet knocked off Wobbuffet's Potion!"); - } THEN { + } THEN { EXPECT_EQ(player->item, ITEM_NONE); } } @@ -1216,7 +1216,7 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Wildfire sets a field effect that damages no MESSAGE("Foe Wynaut is burning up within G-Max Wildfire's flames!"); HP_BAR(opponentRight); // turn 5 - NONE_OF { + NONE_OF { HP_BAR(opponentRight); MESSAGE("Foe Wynaut is burning up within G-Max Wildfire's flames!"); } @@ -1387,7 +1387,7 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Depletion takes away 2 PP from the target's PLAYER(SPECIES_DURALUDON); PLAYER(SPECIES_WYNAUT); // Dynamax behaves weird with test turn order because stats are recalculated. - OPPONENT(SPECIES_SABLEYE) { Ability(ABILITY_PRANKSTER); } + OPPONENT(SPECIES_SABLEYE) { Ability(ABILITY_PRANKSTER); } OPPONENT(SPECIES_WYNAUT); } WHEN { TURN { MOVE(playerLeft, MOVE_DRAGON_CLAW, target: opponentLeft, dynamax: TRUE); } diff --git a/test/test_runner_battle.c b/test/test_runner_battle.c index 53a1c8d7c5..4823e3f17b 100644 --- a/test/test_runner_battle.c +++ b/test/test_runner_battle.c @@ -1980,7 +1980,7 @@ void MoveGetIdAndSlot(s32 battlerId, struct MoveContext *ctx, u32 *moveId, u32 * if (ctx->explicitUltraBurst && ctx->ultraBurst) *moveSlot |= RET_ULTRA_BURST; - + if (ctx->explicitDynamax && ctx->dynamax) *moveSlot |= RET_DYNAMAX; } From f2fddf4ee1e722236f202881dddcd77e781a654c Mon Sep 17 00:00:00 2001 From: Alex <93446519+AlexOn1ine@users.noreply.github.com> Date: Sat, 28 Oct 2023 00:14:45 +0200 Subject: [PATCH 31/36] Syrup Bomb move and special speed drop anim, Credits to Dat.H A (#3474) --- data/battle_anim_scripts.s | 109 +++++++++++++- data/battle_scripts_1.s | 5 +- .../battle_anims/sprites/syrup_bomb_blob.png | Bin 0 -> 11263 bytes .../battle_anims/sprites/syrup_bomb_shell.png | Bin 0 -> 12958 bytes .../battle_anims/sprites/syrup_bomb_splat.png | Bin 0 -> 5896 bytes graphics/battle_anims/sprites/syrup_red.pal | 19 +++ .../battle_anims/sprites/syrup_yellow.pal | 19 +++ include/battle.h | 1 + include/constants/battle_anim.h | 8 +- include/graphics.h | 5 + src/battle_anim_new.c | 19 +++ src/battle_anim_poison.c | 141 ++++++++++++++++++ src/data/battle_anim.h | 12 ++ src/graphics.c | 6 + test/battle/move_effect/syrup_bomb.c | 25 ++-- 15 files changed, 354 insertions(+), 15 deletions(-) create mode 100644 graphics/battle_anims/sprites/syrup_bomb_blob.png create mode 100644 graphics/battle_anims/sprites/syrup_bomb_shell.png create mode 100644 graphics/battle_anims/sprites/syrup_bomb_splat.png create mode 100644 graphics/battle_anims/sprites/syrup_red.pal create mode 100644 graphics/battle_anims/sprites/syrup_yellow.pal diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index 07c1970153..4943e887f2 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -1009,6 +1009,7 @@ gBattleAnims_General:: .4byte General_SaltCureDamage @ B_ANIM_SALT_CURE_DAMAGE .4byte General_DynamaxGrowth @ B_ANIM_DYNAMAX_GROWTH .4byte General_SetWeather @ B_ANIM_MAX_SET_WEATHER + .4byte General_SyrupBombSpeedDrop @ B_ANIM_SYRUP_BOMB_SPEED_DROP .align 2 gBattleAnims_Special:: @@ -16524,6 +16525,113 @@ Move_DOUBLE_SHOCK:: blendoff end +Move_SYRUP_BOMB:: + createvisualtask AnimTask_SyrupBomb, 0x5 + jumpargeq 0x0, FALSE, Move_SYRUP_BOMB_RED + jumpargeq 0x0, TRUE, Move_SYRUP_BOMB_YELLOW + +@ Credits to Dat.H A +Move_SYRUP_BOMB_RED: + loadspritegfx ANIM_TAG_SYRUP_BLOB_RED + loadspritegfx ANIM_TAG_SYRUP_SPLAT_RED + loadspritegfx ANIM_TAG_SYRUP_SHELL_RED + call SyrupBombProjectileRed + call SyrupBombProjectileRed + call SyrupBombProjectileRed + call SyrupBombProjectileRed + call SyrupBombProjectileRed + call SyrupBombProjectileRed + call SyrupBombProjectileRed + call SyrupBombProjectileRed + call SyrupBombProjectileRed + call SyrupBombProjectileRed + createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 3, 0, 15, 1 + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_TARGET, 1, 2, 0, 12, RGB(20, 3, 3) + createsprite gSyrupBombRedHitParticleSpriteTemplate, ANIM_TARGET, 2, 42, 27, 20 + createsprite gSyrupBombRedHitParticleSpriteTemplate, ANIM_TARGET, 2, -27, 44, 20 + createsprite gSyrupBombRedHitParticleSpriteTemplate, ANIM_TARGET, 2, 39, -28, 20 + createsprite gSyrupBombRedHitParticleSpriteTemplate, ANIM_TARGET, 2, -42, -42, 20 + playsewithpan SE_M_DIG, SOUND_PAN_TARGET + delay 5 + createsprite gSyrupBombRedShellSpriteTemplate, ANIM_TARGET, 1, ANIM_TARGET, 100 + createsprite gSyrupBombRedHitParticleSpriteTemplate, ANIM_TARGET, 2, 0, 40, 20 + createsprite gSyrupBombRedHitParticleSpriteTemplate, ANIM_TARGET, 2, -8, -44, 20 + createsprite gSyrupBombRedHitParticleSpriteTemplate, ANIM_TARGET, 2, -46, -28, 20 + createsprite gSyrupBombRedHitParticleSpriteTemplate, ANIM_TARGET, 2, 46, 9, 20 + playsewithpan SE_M_DIG, SOUND_PAN_TARGET + delay 5 + waitsound + waitforvisualfinish + end +SyrupBombProjectileRed: + playsewithpan SE_M_BUBBLE3, SOUND_PAN_ATTACKER + createsprite gSyrupRedProjectileSpriteTemplate, ANIM_TARGET, 2, 20, 0, 40, 0 + delay 3 + return + +Move_SYRUP_BOMB_YELLOW: + loadspritegfx ANIM_TAG_SYRUP_BLOB_YELLOW + loadspritegfx ANIM_TAG_SYRUP_SPLAT_YELLOW + loadspritegfx ANIM_TAG_SYRUP_SHELL_YELLOW + call SyrupBombProjectileYellow + call SyrupBombProjectileYellow + call SyrupBombProjectileYellow + call SyrupBombProjectileYellow + call SyrupBombProjectileYellow + call SyrupBombProjectileYellow + call SyrupBombProjectileYellow + call SyrupBombProjectileYellow + call SyrupBombProjectileYellow + call SyrupBombProjectileYellow + createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 3, 0, 15, 1 + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_TARGET, 1, 2, 0, 12, RGB(23, 13, 1) + createsprite gSyrupBombYellowHitParticleSpriteTemplate, ANIM_TARGET, 2, 42, 27, 20 + createsprite gSyrupBombYellowHitParticleSpriteTemplate, ANIM_TARGET, 2, -27, 44, 20 + createsprite gSyrupBombYellowHitParticleSpriteTemplate, ANIM_TARGET, 2, 39, -28, 20 + createsprite gSyrupBombYellowHitParticleSpriteTemplate, ANIM_TARGET, 2, -42, -42, 20 + playsewithpan SE_M_DIG, SOUND_PAN_TARGET + delay 5 + createsprite gSyrupBombYellowShellSpriteTemplate, ANIM_TARGET, 1, ANIM_TARGET, 100 + createsprite gSyrupBombYellowHitParticleSpriteTemplate, ANIM_TARGET, 2, 0, 40, 20 + createsprite gSyrupBombYellowHitParticleSpriteTemplate, ANIM_TARGET, 2, -8, -44, 20 + createsprite gSyrupBombYellowHitParticleSpriteTemplate, ANIM_TARGET, 2, -46, -28, 20 + createsprite gSyrupBombYellowHitParticleSpriteTemplate, ANIM_TARGET, 2, 46, 9, 20 + playsewithpan SE_M_DIG, SOUND_PAN_TARGET + delay 5 + waitsound + waitforvisualfinish + end +SyrupBombProjectileYellow: + playsewithpan SE_M_BUBBLE3, SOUND_PAN_ATTACKER + createsprite gSyrupYellowProjectileSpriteTemplate, ANIM_TARGET, 2, 20, 0, 40, 0 + delay 3 + return + +General_SyrupBombSpeedDrop:: + createvisualtask AnimTask_StickySyrup, 0x5 + jumpargeq 0x0, FALSE, SyrupBombSpeedDropRed + jumpargeq 0x0, TRUE, SyrupBombSpeedDropYellow + +SyrupBombSpeedDropRed: + loadspritegfx ANIM_TAG_SYRUP_BLOB_RED + loadspritegfx ANIM_TAG_SYRUP_SHELL_RED + loopsewithpan SE_M_TOXIC, SOUND_PAN_TARGET, 13, 6 + createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 3, 0, 15, 1 + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_TARGET, 1, 2, 0, 12, RGB(20, 3, 3) + createsprite gSyrupBombRedShellBSpriteTemplate, ANIM_TARGET, 1, ANIM_TARGET, 60 + waitforvisualfinish + end + +SyrupBombSpeedDropYellow: + loadspritegfx ANIM_TAG_SYRUP_BLOB_YELLOW + loadspritegfx ANIM_TAG_SYRUP_SHELL_YELLOW + loopsewithpan SE_M_TOXIC, SOUND_PAN_TARGET, 13, 6 + createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 3, 0, 15, 1 + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_TARGET, 1, 2, 0, 12, RGB(23, 13, 1) + createsprite gSyrupBombYellowShellBSpriteTemplate, ANIM_TARGET, 1, ANIM_TARGET, 60 + waitforvisualfinish + end + Move_TERA_BLAST:: Move_AXE_KICK:: Move_LAST_RESPECTS:: @@ -16572,7 +16680,6 @@ Move_PSYBLADE:: Move_HYDRO_STEAM:: Move_BLOOD_MOON:: Move_MATCHA_GOTCHA:: -Move_SYRUP_BOMB:: Move_IVY_CUDGEL:: end @to do diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 01688c0dce..5cc9bdf419 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -454,7 +454,8 @@ BattleScript_SyrupBombActivates:: return BattleScript_SyrupBombEndTurn:: - playstatchangeanimation BS_ATTACKER, BIT_SPEED, STAT_CHANGE_NEGATIVE + flushtextbox + playanimation BS_ATTACKER, B_ANIM_SYRUP_BOMB_SPEED_DROP setstatchanger STAT_SPEED, 1, TRUE statbuffchange STAT_CHANGE_ALLOW_PTR | STAT_CHANGE_NOT_PROTECT_AFFECTED, BattleScript_SyrupBombTurnDmgEnd printfromtable gStatDownStringIds @@ -7344,7 +7345,7 @@ BattleScript_StealthRockFree:: printstring STRINGID_PKMNBLEWAWAYSTEALTHROCK waitmessage B_WAIT_TIME_LONG return - + BattleScript_SteelsurgeFree:: printstring STRINGID_PKMNBLEWAWAYSHARPSTEEL waitmessage B_WAIT_TIME_LONG diff --git a/graphics/battle_anims/sprites/syrup_bomb_blob.png b/graphics/battle_anims/sprites/syrup_bomb_blob.png new file mode 100644 index 0000000000000000000000000000000000000000..b04b3617561eb91d7d949fb2bd6740b4b262708d GIT binary patch literal 11263 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 literal 0 HcmV?d00001 diff --git a/graphics/battle_anims/sprites/syrup_bomb_shell.png b/graphics/battle_anims/sprites/syrup_bomb_shell.png new file mode 100644 index 0000000000000000000000000000000000000000..de592c54e6d6f0127efe635e7aec188c2ac091de GIT binary patch literal 12958 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 CsDfz# literal 0 HcmV?d00001 diff --git a/graphics/battle_anims/sprites/syrup_bomb_splat.png b/graphics/battle_anims/sprites/syrup_bomb_splat.png new file mode 100644 index 0000000000000000000000000000000000000000..ac873086a01a3ab3f7b0b01e230a879e76e248d3 GIT binary patch literal 5896 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 literal 0 HcmV?d00001 diff --git a/graphics/battle_anims/sprites/syrup_red.pal b/graphics/battle_anims/sprites/syrup_red.pal new file mode 100644 index 0000000000..2224ce0c84 --- /dev/null +++ b/graphics/battle_anims/sprites/syrup_red.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +30 255 0 +242 242 242 +255 194 173 +255 129 110 +224 51 38 +161 24 26 +110 30 36 +13 2 4 +200 224 240 +200 224 240 +200 224 240 +200 224 240 +200 224 240 +200 224 240 +200 224 240 +200 224 240 diff --git a/graphics/battle_anims/sprites/syrup_yellow.pal b/graphics/battle_anims/sprites/syrup_yellow.pal new file mode 100644 index 0000000000..ff5ac37331 --- /dev/null +++ b/graphics/battle_anims/sprites/syrup_yellow.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +30 255 0 +242 242 242 +255 255 168 +255 235 82 +255 192 0 +185 104 4 +107 59 19 +13 2 4 +200 224 240 +200 224 240 +200 224 240 +200 224 240 +200 224 240 +200 224 240 +200 224 240 +200 224 240 diff --git a/include/battle.h b/include/battle.h index cd314eb728..7fa841e835 100644 --- a/include/battle.h +++ b/include/battle.h @@ -106,6 +106,7 @@ struct DisableStruct u8 stickyWebDone:1; u8 stealthRockDone:1; u8 syrupBombTimer; + u8 syrupBombIsShiny:1; u8 steelSurgeDone:1; }; diff --git a/include/constants/battle_anim.h b/include/constants/battle_anim.h index 54eeb5b055..0a01eb2996 100644 --- a/include/constants/battle_anim.h +++ b/include/constants/battle_anim.h @@ -399,7 +399,12 @@ #define ANIM_TAG_TEAPOT (ANIM_SPRITES_START + 385) #define ANIM_TAG_WOOD_HAMMER_HAMMER (ANIM_SPRITES_START + 386) #define ANIM_TAG_SNOWFLAKES (ANIM_SPRITES_START + 387) - +#define ANIM_TAG_SYRUP_BLOB_RED (ANIM_SPRITES_START + 388) +#define ANIM_TAG_SYRUP_SHELL_RED (ANIM_SPRITES_START + 389) +#define ANIM_TAG_SYRUP_BLOB_YELLOW (ANIM_SPRITES_START + 390) +#define ANIM_TAG_SYRUP_SHELL_YELLOW (ANIM_SPRITES_START + 391) +#define ANIM_TAG_SYRUP_SPLAT_RED (ANIM_SPRITES_START + 392) +#define ANIM_TAG_SYRUP_SPLAT_YELLOW (ANIM_SPRITES_START + 393) // battlers #define ANIM_ATTACKER 0 @@ -553,6 +558,7 @@ #define B_ANIM_SALT_CURE_DAMAGE 38 #define B_ANIM_DYNAMAX_GROWTH 39 #define B_ANIM_MAX_SET_WEATHER 40 +#define B_ANIM_SYRUP_BOMB_SPEED_DROP 41 // special animations table (gBattleAnims_Special) #define B_ANIM_LVL_UP 0 diff --git a/include/graphics.h b/include/graphics.h index f2ff391a95..1dc34717cb 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -10349,6 +10349,11 @@ extern const u32 gBattleAnimSpriteGfx_WoodHammerHammer[]; extern const u32 gBattleAnimSpritePal_WoodHammerHammer[]; extern const u32 gBattleAnimSpriteGfx_Snowflakes[]; extern const u32 gBattleAnimSpritePal_Snowflakes[]; +extern const u32 gBattleAnimSpriteGfx_SyrupBlob[]; +extern const u32 gBattleAnimSpriteGfx_SyrupShell[]; +extern const u32 gBattleAnimSpriteGfx_SyrupSplat[]; +extern const u32 gBattleAnimSpritePal_SyrupRed[]; +extern const u32 gBattleAnimSpritePal_SyrupYellow[]; extern const u32 gBattleAnimBgImage_Dark[]; extern const u32 gBattleAnimBgImage_Ghost[]; diff --git a/src/battle_anim_new.c b/src/battle_anim_new.c index f150afb799..0c99d2a434 100644 --- a/src/battle_anim_new.c +++ b/src/battle_anim_new.c @@ -9148,3 +9148,22 @@ void AnimTask_GetWeatherToSet(u8 taskId) } DestroyAnimVisualTask(taskId); } + +void AnimTask_SyrupBomb(u8 taskId) +{ + struct Pokemon *party = GetBattlerParty(gBattleAnimAttacker); + u32 isShiny = IsMonShiny(&party[gBattlerPartyIndexes[gBattleAnimAttacker]]); + + gDisableStructs[gBattleAnimTarget].syrupBombIsShiny = isShiny; + gBattleAnimArgs[0] = isShiny; + DestroyAnimVisualTask(taskId); +} + +void AnimTask_StickySyrup(u8 taskId) +{ + if (gDisableStructs[gBattleAnimTarget].syrupBombIsShiny) + gBattleAnimArgs[0] = TRUE; + else + gBattleAnimArgs[0] = FALSE; + DestroyAnimVisualTask(taskId); +} diff --git a/src/battle_anim_poison.c b/src/battle_anim_poison.c index 8905f5c475..0ed4e43090 100644 --- a/src/battle_anim_poison.c +++ b/src/battle_anim_poison.c @@ -14,6 +14,7 @@ static void AnimSuckerPunch(struct Sprite *sprite); static void AnimGunkShotParticlesStep(struct Sprite *sprite); static void AnimGunkShotParticles(struct Sprite *sprite); static void AnimGunkShotImpact(struct Sprite *sprite); +static void AnimAnimSyrupBomb(struct Sprite *); static const union AnimCmd sAnim_ToxicBubble[] = { @@ -305,6 +306,123 @@ const struct SpriteTemplate gGunkShotImpactSpriteTemplate = .callback = AnimGunkShotImpact, }; +static const union AnimCmd sAnim_SyrupCoat[] = +{ + ANIMCMD_FRAME(128, 10), + ANIMCMD_FRAME(64, 5), + ANIMCMD_FRAME(0, 45), + ANIMCMD_FRAME(64, 15), + ANIMCMD_FRAME(128, 15), + ANIMCMD_FRAME(192, 20), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_SyrupStick[] = +{ + ANIMCMD_FRAME(192, 5), + ANIMCMD_FRAME(128, 35), + ANIMCMD_FRAME(192, 20), + ANIMCMD_END, +}; + +static const union AnimCmd *const sAnims_SyrupCoat[] = +{ + sAnim_SyrupCoat, +}; + +static const union AnimCmd *const sAnims_SyrupStick[] = +{ + sAnim_SyrupStick, +}; + +const struct SpriteTemplate gSyrupRedProjectileSpriteTemplate = +{ + .tileTag = ANIM_TAG_SYRUP_BLOB_RED, + .paletteTag = ANIM_TAG_SYRUP_BLOB_RED, + .oam = &gOamData_AffineDouble_ObjNormal_16x16, + .anims = gAnims_PoisonProjectile, + .images = NULL, + .affineAnims = gAffineAnims_PoisonProjectile, + .callback = AnimSludgeProjectile, +}; + +const struct SpriteTemplate gSyrupYellowProjectileSpriteTemplate = +{ + .tileTag = ANIM_TAG_SYRUP_BLOB_YELLOW, + .paletteTag = ANIM_TAG_SYRUP_BLOB_YELLOW, + .oam = &gOamData_AffineDouble_ObjNormal_16x16, + .anims = gAnims_PoisonProjectile, + .images = NULL, + .affineAnims = gAffineAnims_PoisonProjectile, + .callback = AnimSludgeProjectile, +}; + +const struct SpriteTemplate gSyrupBombRedHitParticleSpriteTemplate = +{ + .tileTag = ANIM_TAG_SYRUP_SPLAT_RED, + .paletteTag = ANIM_TAG_SYRUP_BLOB_RED, + .oam = &gOamData_AffineNormal_ObjNormal_16x16, + .anims = gAnims_PoisonProjectile, + .images = NULL, + .affineAnims = sAffineAnims_SludgeBombHit, + .callback = AnimSludgeBombHitParticle, +}; + +const struct SpriteTemplate gSyrupBombYellowHitParticleSpriteTemplate = +{ + .tileTag = ANIM_TAG_SYRUP_SPLAT_YELLOW, + .paletteTag = ANIM_TAG_SYRUP_BLOB_YELLOW, + .oam = &gOamData_AffineNormal_ObjNormal_16x16, + .anims = gAnims_PoisonProjectile, + .images = NULL, + .affineAnims = sAffineAnims_SludgeBombHit, + .callback = AnimSludgeBombHitParticle, +}; + +const struct SpriteTemplate gSyrupBombRedShellSpriteTemplate = +{ + .tileTag = ANIM_TAG_SYRUP_SHELL_RED, + .paletteTag = ANIM_TAG_SYRUP_BLOB_RED, + .oam = &gOamData_AffineOff_ObjNormal_64x64, + .anims = sAnims_SyrupCoat, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimAnimSyrupBomb, +}; + +const struct SpriteTemplate gSyrupBombYellowShellSpriteTemplate = +{ + .tileTag = ANIM_TAG_SYRUP_SHELL_YELLOW, + .paletteTag = ANIM_TAG_SYRUP_BLOB_YELLOW, + .oam = &gOamData_AffineOff_ObjNormal_64x64, + .anims = sAnims_SyrupCoat, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimAnimSyrupBomb, +}; + +const struct SpriteTemplate gSyrupBombRedShellBSpriteTemplate = +{ + .tileTag = ANIM_TAG_SYRUP_SHELL_RED, + .paletteTag = ANIM_TAG_SYRUP_BLOB_RED, + .oam = &gOamData_AffineOff_ObjNormal_64x64, + .anims = sAnims_SyrupStick, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimAnimSyrupBomb, +}; + +const struct SpriteTemplate gSyrupBombYellowShellBSpriteTemplate = +{ + .tileTag = ANIM_TAG_SYRUP_SHELL_YELLOW, + .paletteTag = ANIM_TAG_SYRUP_BLOB_YELLOW, + .oam = &gOamData_AffineOff_ObjNormal_64x64, + .anims = sAnims_SyrupStick, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimAnimSyrupBomb, +}; + static void AnimGunkShotImpact(struct Sprite *sprite) { StartSpriteAffineAnim(sprite, gBattleAnimArgs[3]); @@ -534,3 +652,26 @@ static void AnimBubbleEffect_Step(struct Sprite *sprite) if (sprite->affineAnimEnded) DestroyAnimSprite(sprite); } + +static void AnimSyrupBomb_Step(struct Sprite *sprite) +{ + if (sprite->data[1] > sprite->data[0] - 10) + sprite->invisible = sprite->data[1] & 1; + + if (sprite->data[1] == sprite->data[0]) + DestroyAnimSprite(sprite); + + sprite->data[1]++; +} + +static void AnimAnimSyrupBomb(struct Sprite *sprite) +{ + if (gBattleAnimArgs[0] == ANIM_TARGET) + { + sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); + sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y) + 2; + } + + sprite->data[0] = gBattleAnimArgs[1]; + sprite->callback = AnimSyrupBomb_Step; +} diff --git a/src/data/battle_anim.h b/src/data/battle_anim.h index d342ccbae5..880b98efce 100644 --- a/src/data/battle_anim.h +++ b/src/data/battle_anim.h @@ -1449,6 +1449,12 @@ const struct CompressedSpriteSheet gBattleAnimPicTable[] = {gBattleAnimSpriteGfx_Teapot, 0x1800, ANIM_TAG_TEAPOT}, {gBattleAnimSpriteGfx_WoodHammerHammer, 0x800, ANIM_TAG_WOOD_HAMMER_HAMMER}, {gBattleAnimSpriteGfx_Snowflakes, 0x0700, ANIM_TAG_SNOWFLAKES}, + {gBattleAnimSpriteGfx_SyrupBlob, 0x400, ANIM_TAG_SYRUP_BLOB_RED}, + {gBattleAnimSpriteGfx_SyrupShell, 0x2000, ANIM_TAG_SYRUP_SHELL_RED}, + {gBattleAnimSpriteGfx_SyrupBlob, 0x400, ANIM_TAG_SYRUP_BLOB_YELLOW}, + {gBattleAnimSpriteGfx_SyrupShell, 0x2000, ANIM_TAG_SYRUP_SHELL_YELLOW}, + {gBattleAnimSpriteGfx_SyrupSplat, 0x400, ANIM_TAG_SYRUP_SPLAT_RED}, + {gBattleAnimSpriteGfx_SyrupSplat, 0x400, ANIM_TAG_SYRUP_SPLAT_YELLOW}, }; const struct CompressedSpritePalette gBattleAnimPaletteTable[] = @@ -1898,6 +1904,12 @@ const struct CompressedSpritePalette gBattleAnimPaletteTable[] = {gBattleAnimSpritePal_Teapot, ANIM_TAG_TEAPOT}, {gBattleAnimSpritePal_WoodHammerHammer, ANIM_TAG_WOOD_HAMMER_HAMMER}, {gBattleAnimSpritePal_RainDrops, ANIM_TAG_SNOWFLAKES}, + {gBattleAnimSpritePal_SyrupRed, ANIM_TAG_SYRUP_BLOB_RED}, + {gBattleAnimSpritePal_SyrupRed, ANIM_TAG_SYRUP_SHELL_RED}, + {gBattleAnimSpritePal_SyrupYellow, ANIM_TAG_SYRUP_BLOB_YELLOW}, + {gBattleAnimSpritePal_SyrupYellow, ANIM_TAG_SYRUP_SHELL_YELLOW}, + {gBattleAnimSpritePal_SyrupRed, ANIM_TAG_SYRUP_SPLAT_RED}, + {gBattleAnimSpritePal_SyrupYellow, ANIM_TAG_SYRUP_SPLAT_YELLOW}, }; const struct BattleAnimBackground gBattleAnimBackgroundTable[] = diff --git a/src/graphics.c b/src/graphics.c index d152d081c0..45c066ad26 100644 --- a/src/graphics.c +++ b/src/graphics.c @@ -451,6 +451,12 @@ const u32 gBattleAnimSpritePal_WoodHammerHammer[] = INCBIN_U32("graphics/battle_ const u32 gBattleAnimSpriteGfx_Snowflakes[] = INCBIN_U32("graphics/battle_anims/sprites/snowflakes.4bpp.lz"); const u32 gBattleAnimSpritePal_Snowflakes[] = INCBIN_U32("graphics/battle_anims/sprites/snowflakes.gbapal.lz"); +const u32 gBattleAnimSpriteGfx_SyrupBlob[] = INCBIN_U32("graphics/battle_anims/sprites/syrup_bomb_blob.4bpp.lz"); +const u32 gBattleAnimSpriteGfx_SyrupShell[] = INCBIN_U32("graphics/battle_anims/sprites/syrup_bomb_shell.4bpp.lz"); +const u32 gBattleAnimSpriteGfx_SyrupSplat[] = INCBIN_U32("graphics/battle_anims/sprites/syrup_bomb_splat.4bpp.lz"); +const u32 gBattleAnimSpritePal_SyrupRed[] = INCBIN_U32("graphics/battle_anims/sprites/syrup_red.gbapal.lz"); +const u32 gBattleAnimSpritePal_SyrupYellow[] = INCBIN_U32("graphics/battle_anims/sprites/syrup_yellow.gbapal.lz"); + // old battle interface data, unused const u32 gOldBattleInterfaceGfx[] = INCBIN_U32("graphics/unused/obi1.4bpp.lz"); diff --git a/test/battle/move_effect/syrup_bomb.c b/test/battle/move_effect/syrup_bomb.c index 10e2c40de1..f286049e1a 100644 --- a/test/battle/move_effect/syrup_bomb.c +++ b/test/battle/move_effect/syrup_bomb.c @@ -16,14 +16,14 @@ SINGLE_BATTLE_TEST("Syrup Bomb covers the foe in sticky syrup for 3 turns") ANIMATION(ANIM_TYPE_MOVE, MOVE_SYRUP_BOMB, player); HP_BAR(opponent); MESSAGE("Foe Wobbuffet got covered in sticky syrup!"); - ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_SYRUP_BOMB_SPEED_DROP, opponent); MESSAGE("Foe Wobbuffet's Speed fell!"); - ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_SYRUP_BOMB_SPEED_DROP, opponent); MESSAGE("Foe Wobbuffet's Speed fell!"); - ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_SYRUP_BOMB_SPEED_DROP, opponent); MESSAGE("Foe Wobbuffet's Speed fell!"); NONE_OF { - ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_SYRUP_BOMB_SPEED_DROP, opponent); MESSAGE("Foe Wobbuffet's Speed fell!"); } } @@ -41,7 +41,7 @@ SINGLE_BATTLE_TEST("Sticky Syrup isn't applied again if the target is already co ANIMATION(ANIM_TYPE_MOVE, MOVE_SYRUP_BOMB, player); HP_BAR(opponent); MESSAGE("Foe Wobbuffet got covered in sticky syrup!"); - ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_SYRUP_BOMB_SPEED_DROP, opponent); MESSAGE("Foe Wobbuffet's Speed fell!"); ANIMATION(ANIM_TYPE_MOVE, MOVE_SYRUP_BOMB, player); HP_BAR(opponent); @@ -89,9 +89,9 @@ SINGLE_BATTLE_TEST("Sticky Syrup speed reduction is prevented by Clear Body, Whi { MESSAGE("Foe Beldum got covered in sticky syrup!"); ABILITY_POPUP(opponent, ABILITY_CLEAR_BODY); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_SYRUP_BOMB_SPEED_DROP, opponent); MESSAGE("Foe Beldum's Clear Body prevents stat loss!"); NONE_OF { - ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); MESSAGE("Foe Beldum's Speed fell!"); } } @@ -99,9 +99,9 @@ SINGLE_BATTLE_TEST("Sticky Syrup speed reduction is prevented by Clear Body, Whi { MESSAGE("Foe Torkoal got covered in sticky syrup!"); ABILITY_POPUP(opponent, ABILITY_WHITE_SMOKE); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_SYRUP_BOMB_SPEED_DROP, opponent); MESSAGE("Foe Torkoal's White Smoke prevents stat loss!"); NONE_OF { - ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); MESSAGE("Foe Torkoal's Speed fell!"); } } @@ -109,9 +109,9 @@ SINGLE_BATTLE_TEST("Sticky Syrup speed reduction is prevented by Clear Body, Whi { MESSAGE("Foe Solgaleo got covered in sticky syrup!"); ABILITY_POPUP(opponent, ABILITY_FULL_METAL_BODY); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_SYRUP_BOMB_SPEED_DROP, opponent); MESSAGE("Foe Solgaleo's Full Metal Body prevents stat loss!"); NONE_OF { - ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); MESSAGE("Foe Solgaleo's Speed fell!"); } } @@ -131,7 +131,7 @@ SINGLE_BATTLE_TEST("Sticky Syrup speed reduction is prevented by Clear Amulet") MESSAGE("Foe Wobbuffet got covered in sticky syrup!"); MESSAGE("Foe Wobbuffet's Clear Amulet prevents its stats from being lowered!"); NONE_OF { - ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_SYRUP_BOMB_SPEED_DROP, opponent); MESSAGE("Foe Wobbuffet's Speed fell!"); } } @@ -150,13 +150,16 @@ SINGLE_BATTLE_TEST("Sticky syrup will not decrease speed further then minus six" TURN { MOVE(player, MOVE_SYRUP_BOMB); } TURN {} } SCENE { - for (j = 0; j < 3; j++) { ANIMATION(ANIM_TYPE_MOVE, MOVE_SCARY_FACE, player); } + for (j = 0; j < 3; j++) { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCARY_FACE, player); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + } ANIMATION(ANIM_TYPE_MOVE, MOVE_SYRUP_BOMB, player); HP_BAR(opponent); MESSAGE("Foe Wobbuffet got covered in sticky syrup!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_SYRUP_BOMB_SPEED_DROP, opponent); MESSAGE("Foe Wobbuffet's Speed won't go lower!"); NONE_OF { - ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); MESSAGE("Foe Wobbuffet's Speed fell!"); } } From 5087095aaea2e3fc8e40f8ad0ae42778d49c008f Mon Sep 17 00:00:00 2001 From: kittenchilly Date: Fri, 27 Oct 2023 17:17:17 -0500 Subject: [PATCH 32/36] Obedience levels now increase per badge (#3475) --- include/config/battle.h | 2 +- src/battle_util.c | 16 ++++++++++++---- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/include/config/battle.h b/include/config/battle.h index e0c3ae2acc..dcb15f94ed 100644 --- a/include/config/battle.h +++ b/include/config/battle.h @@ -209,7 +209,7 @@ #define B_WILD_NATURAL_ENEMIES TRUE // If set to TRUE, certain wild mon species will attack other species when partnered in double wild battles (eg. Zangoose vs Seviper) #define B_AFFECTION_MECHANICS FALSE // In Gen6+, there's a stat called affection that can trigger different effects in battle. From LGPE onwards, those effects use friendship instead. #define B_TRAINER_CLASS_POKE_BALLS GEN_LATEST // In Gen7+, trainers will use certain types of Poké Balls depending on their trainer class. -#define B_OBEDIENCE_MECHANICS GEN_7 // In PLA+ (here Gen8+), obedience restrictions also apply to non-outsider Pokémon, albeit based on their level met rather than actual level +#define B_OBEDIENCE_MECHANICS GEN_LATEST // In PLA+ (here Gen8+), obedience restrictions also apply to non-outsider Pokémon, albeit based on their level met rather than actual level #define B_USE_FROSTBITE FALSE // In PLA, Frostbite replaces Freeze. Enabling this flag does the same here. Moves can still be cherry-picked to either Freeze or Frostbite. Freeze-Dry, Secret Power & Tri Attack depend on this config. #define B_OVERWORLD_SNOW GEN_LATEST // In Gen9+, overworld Snow will summon snow instead of hail. diff --git a/src/battle_util.c b/src/battle_util.c index f0a75113f8..244736a50f 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -8007,17 +8007,25 @@ u8 IsMonDisobedient(void) return 0; if (B_OBEDIENCE_MECHANICS < GEN_8 && !IsOtherTrainer(gBattleMons[gBattlerAttacker].otId, gBattleMons[gBattlerAttacker].otName)) return 0; - if (FlagGet(FLAG_BADGE08_GET)) + if (FlagGet(FLAG_BADGE08_GET)) // Rain Badge, ignore obedience altogether return 0; obedienceLevel = 10; - if (FlagGet(FLAG_BADGE02_GET)) + if (FlagGet(FLAG_BADGE01_GET)) // Stone Badge + obedienceLevel = 20; + if (FlagGet(FLAG_BADGE02_GET)) // Knuckle Badge obedienceLevel = 30; - if (FlagGet(FLAG_BADGE04_GET)) + if (FlagGet(FLAG_BADGE03_GET)) // Dynamo Badge + obedienceLevel = 40; + if (FlagGet(FLAG_BADGE04_GET)) // Heat Badge obedienceLevel = 50; - if (FlagGet(FLAG_BADGE06_GET)) + if (FlagGet(FLAG_BADGE05_GET)) // Balance Badge + obedienceLevel = 60; + if (FlagGet(FLAG_BADGE06_GET)) // Feather Badge obedienceLevel = 70; + if (FlagGet(FLAG_BADGE07_GET)) // Mind Badge + obedienceLevel = 80; } if (B_OBEDIENCE_MECHANICS >= GEN_8 From 0dd22305a4bba21835b1167f375d8b32213eae19 Mon Sep 17 00:00:00 2001 From: Bassoonian Date: Sun, 29 Oct 2023 03:22:41 +0100 Subject: [PATCH 33/36] Adds Illuminate's Gen9 effect (#3482) Co-authored-by: Eduardo Quezada D'Ottone --- include/config/battle.h | 1 + src/battle_ai_main.c | 6 +++++- src/battle_ai_switch_items.c | 1 + src/battle_ai_util.c | 1 + src/battle_script_commands.c | 4 +++- 5 files changed, 11 insertions(+), 2 deletions(-) diff --git a/include/config/battle.h b/include/config/battle.h index dcb15f94ed..ad5d091617 100644 --- a/include/config/battle.h +++ b/include/config/battle.h @@ -129,6 +129,7 @@ #define B_LEAF_GUARD_PREVENTS_REST GEN_LATEST // In Gen5+, Leaf Guard prevents the use of Rest in harsh sunlight. #define B_SNOW_WARNING GEN_LATEST // In Gen9+, Snow Warning will summon snow instead of hail. #define B_TRANSISTOR_BOOST GEN_LATEST // In Gen9+, Transistor will only boost Electric-type moves by 1.3x as opposed to 1.5x. +#define B_ILLUMINATE_EFFECT GEN_LATEST // In Gen9+, Illuminate prevents accuracy reductions and ignores the target's evasion. // Item settings #define B_HP_BERRIES GEN_LATEST // In Gen4+, berries which restore HP activate immediately after HP drops to half. In Gen3, the effect occurs at the end of the turn. diff --git a/src/battle_ai_main.c b/src/battle_ai_main.c index 03a41733aa..7cdd63317b 100644 --- a/src/battle_ai_main.c +++ b/src/battle_ai_main.c @@ -869,6 +869,10 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) && move != MOVE_PLAY_NICE && move != MOVE_NOBLE_ROAR && move != MOVE_TEARFUL_LOOK && move != MOVE_VENOM_DRENCH) RETURN_SCORE_MINUS(10); break; + case ABILITY_ILLUMINATE: + if (B_ILLUMINATE_EFFECT < GEN_9) + break; + // fallthrough case ABILITY_KEEN_EYE: if (moveEffect == EFFECT_ACCURACY_DOWN || moveEffect == EFFECT_ACCURACY_DOWN_2) RETURN_SCORE_MINUS(10); @@ -1292,7 +1296,7 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) case EFFECT_ACCURACY_DOWN_2: if (!ShouldLowerStat(battlerDef, aiData->abilities[battlerDef], STAT_ACC)) ADJUST_SCORE(-10); - else if (aiData->abilities[battlerDef] == ABILITY_KEEN_EYE) + else if (aiData->abilities[battlerDef] == ABILITY_KEEN_EYE || (B_ILLUMINATE_EFFECT >= GEN_9 && aiData->abilities[battlerDef] == ABILITY_ILLUMINATE)) ADJUST_SCORE(-8); break; case EFFECT_EVASION_DOWN: diff --git a/src/battle_ai_switch_items.c b/src/battle_ai_switch_items.c index 5d77dca70b..41f2b69129 100644 --- a/src/battle_ai_switch_items.c +++ b/src/battle_ai_switch_items.c @@ -347,6 +347,7 @@ static bool8 ShouldSwitchIfGameStatePrompt(u32 battler) if (gBattleMons[battler].statStages[STAT_EVASION] > (DEFAULT_STAT_STAGE + 3) && AI_DATA->abilities[opposingBattler] != ABILITY_UNAWARE && AI_DATA->abilities[opposingBattler] != ABILITY_KEEN_EYE + && (B_ILLUMINATE_EFFECT >= GEN_9 && AI_DATA->abilities[opposingBattler] != ABILITY_ILLUMINATE) && !(gBattleMons[battler].status2 & STATUS2_FORESIGHT) && !(gStatuses3[battler] & STATUS3_MIRACLE_EYED)) switchMon = FALSE; diff --git a/src/battle_ai_util.c b/src/battle_ai_util.c index faffe0e6b3..38c7a9550f 100644 --- a/src/battle_ai_util.c +++ b/src/battle_ai_util.c @@ -1996,6 +1996,7 @@ bool32 ShouldLowerAccuracy(u32 battlerAtk, u32 battlerDef, u32 defAbility) && defAbility != ABILITY_WHITE_SMOKE && defAbility != ABILITY_FULL_METAL_BODY && defAbility != ABILITY_KEEN_EYE + && (B_ILLUMINATE_EFFECT >= GEN_9 && defAbility != ABILITY_ILLUMINATE) && AI_DATA->holdEffects[battlerDef] != HOLD_EFFECT_CLEAR_AMULET) return TRUE; return FALSE; diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 5011f72e8f..d98bab5367 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -1623,7 +1623,7 @@ u32 GetTotalAccuracy(u32 battlerAtk, u32 battlerDef, u32 move, u32 atkAbility, u gPotentialItemEffectBattler = battlerDef; accStage = gBattleMons[battlerAtk].statStages[STAT_ACC]; evasionStage = gBattleMons[battlerDef].statStages[STAT_EVASION]; - if (atkAbility == ABILITY_UNAWARE || atkAbility == ABILITY_KEEN_EYE) + if (atkAbility == ABILITY_UNAWARE || atkAbility == ABILITY_KEEN_EYE || (B_ILLUMINATE_EFFECT >= GEN_9 && atkAbility == ABILITY_ILLUMINATE)) evasionStage = DEFAULT_STAT_STAGE; if (gBattleMoves[move].ignoresTargetDefenseEvasionStages) evasionStage = DEFAULT_STAT_STAGE; @@ -5058,6 +5058,7 @@ static void Cmd_playstatchangeanimation(void) && ability != ABILITY_FULL_METAL_BODY && ability != ABILITY_WHITE_SMOKE && !(ability == ABILITY_KEEN_EYE && currStat == STAT_ACC) + && !(B_ILLUMINATE_EFFECT >= GEN_9 && ability == ABILITY_ILLUMINATE && currStat == STAT_ACC) && !(ability == ABILITY_HYPER_CUTTER && currStat == STAT_ATK) && !(ability == ABILITY_BIG_PECKS && currStat == STAT_DEF)) { @@ -11437,6 +11438,7 @@ static u32 ChangeStatBuffs(s8 statValue, u32 statId, u32 flags, const u8 *BS_ptr } else if (!certain && ((battlerAbility == ABILITY_KEEN_EYE && statId == STAT_ACC) + || (B_ILLUMINATE_EFFECT >= GEN_9 && battlerAbility == ABILITY_ILLUMINATE && statId == STAT_ACC) || (battlerAbility == ABILITY_HYPER_CUTTER && statId == STAT_ATK) || (battlerAbility == ABILITY_BIG_PECKS && statId == STAT_DEF))) { From ab25e6bfa5109dc052920cf53f7c5d026266e30a Mon Sep 17 00:00:00 2001 From: Bassoonian Date: Sun, 29 Oct 2023 03:24:20 +0100 Subject: [PATCH 34/36] Fixes Synchronize's OW effect and adds configs (#3480) --- include/config/battle.h | 1 - include/config/overworld.h | 14 +++++++++++++ include/wild_encounter.h | 1 + src/pokemon.c | 26 ++++++++++++++---------- src/script_pokemon_util.c | 22 ++++++++++++++++---- src/wild_encounter.c | 41 +++++++++++++++++++------------------- 6 files changed, 68 insertions(+), 37 deletions(-) diff --git a/include/config/battle.h b/include/config/battle.h index ad5d091617..43f8138c1e 100644 --- a/include/config/battle.h +++ b/include/config/battle.h @@ -117,7 +117,6 @@ #define B_SHADOW_TAG_ESCAPE GEN_LATEST // In Gen4+, if both sides have a Pokémon with Shadow Tag, all battlers can escape. Before, neither side could escape this situation. #define B_MOODY_ACC_EVASION GEN_LATEST // In Gen8, Moody CANNOT raise Accuracy and Evasion anymore. #define B_FLASH_FIRE_FROZEN GEN_LATEST // In Gen5+, Flash Fire can trigger even when frozen, when it couldn't before. -#define B_SYNCHRONIZE_NATURE GEN_LATEST // In Gen8, if a Pokémon with Synchronize is leading the party, it's 100% guaranteed that wild Pokémon will have the same Nature, as opposed to 50% previously. In Gen9, it has no out-of-battle effect. #define B_SYNCHRONIZE_TOXIC GEN_LATEST // In Gen5+, if a Pokémon with Synchronize is badly poisoned, the opponent will also become badly poisoned. Previously, the opponent would become regular poisoned. #define B_UPDATED_INTIMIDATE GEN_LATEST // In Gen8, Intimidate doesn't work on opponents with the Inner Focus, Scrappy, Own Tempo or Oblivious abilities. It also activates Rattled. #define B_OBLIVIOUS_TAUNT GEN_LATEST // In Gen6+, Pokémon with Oblivious can't be taunted. diff --git a/include/config/overworld.h b/include/config/overworld.h index e8056236a0..5002be3d28 100644 --- a/include/config/overworld.h +++ b/include/config/overworld.h @@ -10,6 +10,20 @@ // PC settings #define OW_PC_PRESS_B GEN_LATEST // In Gen4, pressing B when holding a Pokémon is equivalent to placing it. In Gen3, it gives the "You're holding a Pokémon!" error. +// Out-of-battle Ability effects +#define OW_SYNCHRONIZE_NATURE GEN_LATEST // In Gen8, if a Pokémon with Synchronize is leading the party, it's 100% guaranteed that wild Pokémon will have the same Nature, as opposed to 50% previously. Stationary Pokémon are excluded in Gen3. In Gen6, all No Eggs Discovered gift Pokémon will have the same Nature, while in Gen7 all gift Pokémon will, regardless of Egg Group - In Gen 8, no gift Pokémon are affected. In Gen9, this ability has no out-of-battle effect. +#define OW_COMPOUND_EYES GEN_LATEST // Prior to Gen9, if a Pokémon with Compound Eyes is leading the party, the wild held item rate is increased to 60%/20%. +#define OW_SUPER_LUCK GEN_LATEST // In Gen8, if a Pokémon with Super Luck is leading the party, the wild held item rate is increased to 60%/20%. +#define OW_CUTE_CHARM GEN_LATEST // Prior to Gen9, if a Pokémon with Cute Charm is leading the party, wild encounters have a 66.7% chance to be forced to be of the opposite gender. +#define OW_ILLUMINATE GEN_LATEST // Prior to Gen9, if a Pokémon with Illuminate is leading the party, the wild encounter rate is doubled. +#define OW_INFILTRATOR GEN_LATEST // In Gen8, if a Pokémon with Infiltrator is leading the party, the wild encounter rate is halved. +#define OW_HARVEST GEN_LATEST // In Gen8, if a Pokémon with Harvest is leading the party, there is a 50% chance to encounter a Grass-type Pokémon. +#define OW_LIGHTNING_ROD GEN_LATEST // In Gen8, if a Pokémon with Lightning Rod is leading the party, there is a 50% chance to encounter an Electric-type Pokémon. +#define OW_STORM_DRAIN GEN_LATEST // In Gen8, if a Pokémon with Storm Drain is leading the party, there is a 50% chance to encounter a Water-type Pokémon. +#define OW_FLASH_FIRE GEN_LATEST // In Gen8, if a Pokémon with Flash Fire is leading the party, there is a 50% chance to encounter a Fire-type Pokémon. +#define OW_MAGNET_PULL GEN_LATEST // Prior to Gen9, if a Pokémon with Magnet Pull is leading the party, there is a 50% chance to encounter a Steel-type Pokémon. +#define OW_STATIC GEN_LATEST // Prior to Gen9, if a Pokémon with Static is leading the party, there is a 50% chance to encounter an Electric-type Pokémon. + // Overworld flags // To use the following features in scripting, replace the 0s with the flag ID you're assigning it to. // Eg: Replace with FLAG_UNUSED_0x264 so you can use that flag to toggle the feature. diff --git a/include/wild_encounter.h b/include/wild_encounter.h index bef89d8950..13e7600684 100644 --- a/include/wild_encounter.h +++ b/include/wild_encounter.h @@ -31,6 +31,7 @@ extern bool8 gIsFishingEncounter; extern bool8 gIsSurfingEncounter; void DisableWildEncounters(bool8 disabled); +u8 PickWildMonNature(void); bool8 StandardWildEncounter(u16 currMetaTileBehavior, u16 previousMetaTileBehavior); bool8 SweetScentWildEncounter(void); bool8 DoesCurrentMapHaveFishingMons(void); diff --git a/src/pokemon.c b/src/pokemon.c index 3eef17995d..e250d7abb1 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -8070,29 +8070,33 @@ static s32 GetWildMonTableIdInAlteringCave(u16 species) return 0; } +static inline bool32 CanFirstMonBoostHeldItemRarity(void) +{ + if (GetMonData(&gPlayerParty[0], MON_DATA_SANITY_IS_EGG)) + return FALSE; + else if ((OW_COMPOUND_EYES < GEN_9) && GetMonAbility(&gPlayerParty[0]) == ABILITY_COMPOUND_EYES) + return TRUE; + else if ((OW_SUPER_LUCK == GEN_8) && GetMonAbility(&gPlayerParty[0]) == ABILITY_SUPER_LUCK) + return TRUE; + return FALSE; +} + void SetWildMonHeldItem(void) { if (!(gBattleTypeFlags & (BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_TRAINER | BATTLE_TYPE_PYRAMID | BATTLE_TYPE_PIKE))) { u16 rnd; u16 species; - u16 chanceNoItem = 45; - u16 chanceNotRare = 95; u16 count = (WILD_DOUBLE_BATTLE) ? 2 : 1; u16 i; - - if (!GetMonData(&gPlayerParty[0], MON_DATA_SANITY_IS_EGG, 0) - && (GetMonAbility(&gPlayerParty[0]) == ABILITY_COMPOUND_EYES - || GetMonAbility(&gPlayerParty[0]) == ABILITY_SUPER_LUCK)) - { - chanceNoItem = 20; - chanceNotRare = 80; - } + bool32 itemHeldBoost = CanFirstMonBoostHeldItemRarity(); + u16 chanceNoItem = itemHeldBoost ? 20 : 45; + u16 chanceNotRare = itemHeldBoost ? 80 : 95; for (i = 0; i < count; i++) { if (GetMonData(&gEnemyParty[i], MON_DATA_HELD_ITEM, NULL) != ITEM_NONE) - continue; // prevent ovewriting previously set item + continue; // prevent overwriting previously set item rnd = Random() % 100; species = GetMonData(&gEnemyParty[i], MON_DATA_SPECIES, 0); diff --git a/src/script_pokemon_util.c b/src/script_pokemon_util.c index ee3cc559f8..19b187bddf 100644 --- a/src/script_pokemon_util.c +++ b/src/script_pokemon_util.c @@ -21,6 +21,7 @@ #include "sprite.h" #include "string_util.h" #include "tv.h" +#include "wild_encounter.h" #include "constants/items.h" #include "constants/battle_frontier.h" @@ -66,7 +67,11 @@ u8 ScriptGiveMon(u16 species, u8 level, u16 item, u32 unused1, u32 unused2, u8 u struct Pokemon mon; u16 targetSpecies; - CreateMon(&mon, species, level, USE_RANDOM_IVS, FALSE, 0, OT_ID_PLAYER_ID, 0); + if (OW_SYNCHRONIZE_NATURE >= GEN_6 && (gSpeciesInfo[species].eggGroups[0] == EGG_GROUP_UNDISCOVERED || OW_SYNCHRONIZE_NATURE == GEN_7)) + CreateMonWithNature(&mon, species, level, USE_RANDOM_IVS, PickWildMonNature()); + else + CreateMon(&mon, species, level, USE_RANDOM_IVS, FALSE, 0, OT_ID_PLAYER_ID, 0); + heldItem[0] = item; heldItem[1] = item >> 8; SetMonData(&mon, MON_DATA_HELD_ITEM, heldItem); @@ -149,7 +154,10 @@ void CreateScriptedWildMon(u16 species, u8 level, u16 item) u8 heldItem[2]; ZeroEnemyPartyMons(); - CreateMon(&gEnemyParty[0], species, level, USE_RANDOM_IVS, 0, 0, OT_ID_PLAYER_ID, 0); + if (OW_SYNCHRONIZE_NATURE > GEN_3) + CreateMonWithNature(&gEnemyParty[0], species, level, USE_RANDOM_IVS, PickWildMonNature()); + else + CreateMon(&gEnemyParty[0], species, level, USE_RANDOM_IVS, 0, 0, OT_ID_PLAYER_ID, 0); if (item) { heldItem[0] = item; @@ -164,7 +172,10 @@ void CreateScriptedDoubleWildMon(u16 species1, u8 level1, u16 item1, u16 species ZeroEnemyPartyMons(); - CreateMon(&gEnemyParty[0], species1, level1, 32, 0, 0, OT_ID_PLAYER_ID, 0); + if (OW_SYNCHRONIZE_NATURE > GEN_3) + CreateMonWithNature(&gEnemyParty[0], species1, level1, 32, PickWildMonNature()); + else + CreateMon(&gEnemyParty[0], species1, level1, 32, 0, 0, OT_ID_PLAYER_ID, 0); if (item1) { heldItem1[0] = item1; @@ -172,7 +183,10 @@ void CreateScriptedDoubleWildMon(u16 species1, u8 level1, u16 item1, u16 species SetMonData(&gEnemyParty[0], MON_DATA_HELD_ITEM, heldItem1); } - CreateMon(&gEnemyParty[1], species2, level2, 32, 0, 0, OT_ID_PLAYER_ID, 0); + if (OW_SYNCHRONIZE_NATURE > GEN_3) + CreateMonWithNature(&gEnemyParty[1], species2, level2, 32, PickWildMonNature()); + else + CreateMon(&gEnemyParty[1], species2, level2, 32, 0, 0, OT_ID_PLAYER_ID, 0); if (item2) { heldItem2[0] = item2; diff --git a/src/wild_encounter.c b/src/wild_encounter.c index 8335b37e7d..e3a284c850 100644 --- a/src/wild_encounter.c +++ b/src/wild_encounter.c @@ -383,7 +383,7 @@ static u16 GetCurrentMapWildMonHeaderId(void) return HEADER_NONE; } -static u8 PickWildMonNature(void) +u8 PickWildMonNature(void) { u8 i; u8 j; @@ -415,15 +415,14 @@ static u8 PickWildMonNature(void) } } } -#if B_SYNCHRONIZE_NATURE < GEN_9 // check synchronize for a pokemon with the same ability - if (!GetMonData(&gPlayerParty[0], MON_DATA_SANITY_IS_EGG) + if (OW_SYNCHRONIZE_NATURE < GEN_9 + && !GetMonData(&gPlayerParty[0], MON_DATA_SANITY_IS_EGG) && GetMonAbility(&gPlayerParty[0]) == ABILITY_SYNCHRONIZE - && (B_SYNCHRONIZE_NATURE >= GEN_8 || Random() % 2 == 0)) + && (OW_SYNCHRONIZE_NATURE == GEN_8 || Random() % 2 == 0)) { return GetMonData(&gPlayerParty[0], MON_DATA_PERSONALITY) % NUM_NATURES; } -#endif // random nature return Random() % NUM_NATURES; @@ -434,7 +433,7 @@ static void CreateWildMon(u16 species, u8 level) bool32 checkCuteCharm; ZeroEnemyPartyMons(); - checkCuteCharm = TRUE; + checkCuteCharm = OW_CUTE_CHARM < GEN_9; switch (gSpeciesInfo[species].genderRatio) { @@ -480,33 +479,33 @@ static bool8 TryGenerateWildMon(const struct WildPokemonInfo *wildMonInfo, u8 ar switch (area) { case WILD_AREA_LAND: - if (TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_STEEL, ABILITY_MAGNET_PULL, &wildMonIndex, LAND_WILD_COUNT)) + if (OW_MAGNET_PULL < GEN_9 && TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_STEEL, ABILITY_MAGNET_PULL, &wildMonIndex, LAND_WILD_COUNT)) break; - if (TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_ELECTRIC, ABILITY_STATIC, &wildMonIndex, LAND_WILD_COUNT)) + if (OW_STATIC < GEN_9 && TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_ELECTRIC, ABILITY_STATIC, &wildMonIndex, LAND_WILD_COUNT)) break; - if (TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_ELECTRIC, ABILITY_LIGHTNING_ROD, &wildMonIndex, LAND_WILD_COUNT)) + if (OW_LIGHTNING_ROD == GEN_8 && TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_ELECTRIC, ABILITY_LIGHTNING_ROD, &wildMonIndex, LAND_WILD_COUNT)) break; - if (TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_FIRE, ABILITY_FLASH_FIRE, &wildMonIndex, LAND_WILD_COUNT)) + if (OW_FLASH_FIRE == GEN_8 && TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_FIRE, ABILITY_FLASH_FIRE, &wildMonIndex, LAND_WILD_COUNT)) break; - if (TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_GRASS, ABILITY_HARVEST, &wildMonIndex, LAND_WILD_COUNT)) + if (OW_HARVEST == GEN_8 && TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_GRASS, ABILITY_HARVEST, &wildMonIndex, LAND_WILD_COUNT)) break; - if (TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_WATER, ABILITY_STORM_DRAIN, &wildMonIndex, LAND_WILD_COUNT)) + if (OW_STORM_DRAIN == GEN_8 && TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_WATER, ABILITY_STORM_DRAIN, &wildMonIndex, LAND_WILD_COUNT)) break; wildMonIndex = ChooseWildMonIndex_Land(); break; case WILD_AREA_WATER: - if (TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_STEEL, ABILITY_MAGNET_PULL, &wildMonIndex, WATER_WILD_COUNT)) + if (OW_MAGNET_PULL < GEN_9 && TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_STEEL, ABILITY_MAGNET_PULL, &wildMonIndex, WATER_WILD_COUNT)) break; - if (TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_ELECTRIC, ABILITY_STATIC, &wildMonIndex, WATER_WILD_COUNT)) + if (OW_STATIC < GEN_9 && TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_ELECTRIC, ABILITY_STATIC, &wildMonIndex, WATER_WILD_COUNT)) break; - if (TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_ELECTRIC, ABILITY_LIGHTNING_ROD, &wildMonIndex, WATER_WILD_COUNT)) + if (OW_LIGHTNING_ROD == GEN_8 && TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_ELECTRIC, ABILITY_LIGHTNING_ROD, &wildMonIndex, WATER_WILD_COUNT)) break; - if (TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_FIRE, ABILITY_FLASH_FIRE, &wildMonIndex, WATER_WILD_COUNT)) + if (OW_FLASH_FIRE == GEN_8 && TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_FIRE, ABILITY_FLASH_FIRE, &wildMonIndex, WATER_WILD_COUNT)) break; - if (TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_GRASS, ABILITY_HARVEST, &wildMonIndex, WATER_WILD_COUNT)) + if (OW_HARVEST == GEN_8 && TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_GRASS, ABILITY_HARVEST, &wildMonIndex, WATER_WILD_COUNT)) break; - if (TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_WATER, ABILITY_STORM_DRAIN, &wildMonIndex, WATER_WILD_COUNT)) + if (OW_STORM_DRAIN == GEN_8 && TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_WATER, ABILITY_STORM_DRAIN, &wildMonIndex, WATER_WILD_COUNT)) break; wildMonIndex = ChooseWildMonIndex_WaterRock(); @@ -587,7 +586,7 @@ static bool8 WildEncounterCheck(u32 encounterRate, bool8 ignoreAbility) encounterRate = encounterRate * 3 / 4; else if (ability == ABILITY_STENCH) encounterRate /= 2; - else if (ability == ABILITY_ILLUMINATE) + else if (ability == ABILITY_ILLUMINATE && OW_ILLUMINATE < GEN_9) encounterRate *= 2; else if (ability == ABILITY_WHITE_SMOKE) encounterRate /= 2; @@ -599,10 +598,10 @@ static bool8 WildEncounterCheck(u32 encounterRate, bool8 ignoreAbility) encounterRate /= 2; else if (ability == ABILITY_QUICK_FEET) encounterRate /= 2; - else if (ability == ABILITY_INFILTRATOR) + else if (ability == ABILITY_INFILTRATOR && OW_INFILTRATOR == GEN_8) encounterRate /= 2; else if (ability == ABILITY_NO_GUARD) - encounterRate = encounterRate * 3 / 2; + encounterRate *= 2; } if (encounterRate > MAX_ENCOUNTER_RATE) encounterRate = MAX_ENCOUNTER_RATE; From efae5216460faeb5e81932770f042b2b7a4da982 Mon Sep 17 00:00:00 2001 From: Katy Date: Sat, 28 Oct 2023 21:47:58 -0500 Subject: [PATCH 35/36] Gen7 Sprites/Animations For Species (#3426) --- graphics/pokemon/cutiefly/anim_front.png | Bin 0 -> 8057 bytes graphics/pokemon/cutiefly/front.png | Bin 467 -> 0 bytes graphics/pokemon/dartrix/anim_front.png | Bin 0 -> 1054 bytes graphics/pokemon/dartrix/front.png | Bin 692 -> 0 bytes graphics/pokemon/decidueye/anim_front.png | Bin 0 -> 1258 bytes graphics/pokemon/decidueye/front.png | Bin 925 -> 0 bytes graphics/pokemon/drampa/anim_front.png | Bin 0 -> 1259 bytes graphics/pokemon/drampa/back.png | Bin 691 -> 640 bytes graphics/pokemon/drampa/front.png | Bin 1067 -> 0 bytes graphics/pokemon/drampa/normal.pal | 2 +- graphics/pokemon/drampa/shiny.pal | 2 +- graphics/pokemon/hakamo_o/anim_front.png | Bin 1418 -> 1306 bytes graphics/pokemon/hakamo_o/back.png | Bin 638 -> 559 bytes graphics/pokemon/jangmo_o/anim_front.png | Bin 883 -> 836 bytes graphics/pokemon/jangmo_o/back.png | Bin 612 -> 623 bytes graphics/pokemon/kommo_o/anim_front.png | Bin 1994 -> 1973 bytes graphics/pokemon/lycanroc/anim_front.png | Bin 0 -> 1541 bytes graphics/pokemon/lycanroc/dusk/anim_front.png | Bin 0 -> 1620 bytes graphics/pokemon/lycanroc/dusk/back.png | Bin 775 -> 683 bytes graphics/pokemon/lycanroc/dusk/front.png | Bin 941 -> 0 bytes graphics/pokemon/lycanroc/dusk/icon.png | Bin 596 -> 452 bytes graphics/pokemon/lycanroc/dusk/normal.pal | 4 +- graphics/pokemon/lycanroc/dusk/shiny.pal | 2 +- graphics/pokemon/lycanroc/front.png | Bin 913 -> 0 bytes .../pokemon/lycanroc/midnight/anim_front.png | Bin 0 -> 1387 bytes graphics/pokemon/lycanroc/midnight/front.png | Bin 858 -> 0 bytes graphics/pokemon/oranguru/anim_front.png | Bin 0 -> 1366 bytes graphics/pokemon/oranguru/front.png | Bin 977 -> 0 bytes graphics/pokemon/passimian/anim_front.png | Bin 0 -> 1498 bytes graphics/pokemon/passimian/back.png | Bin 654 -> 590 bytes graphics/pokemon/passimian/front.png | Bin 920 -> 0 bytes graphics/pokemon/passimian/normal.pal | 28 ++--- graphics/pokemon/passimian/shiny.pal | 28 ++--- graphics/pokemon/pikipek/anim_front.png | Bin 0 -> 758 bytes graphics/pokemon/pikipek/back.png | Bin 509 -> 458 bytes graphics/pokemon/pikipek/front.png | Bin 466 -> 0 bytes graphics/pokemon/ribombee/anim_front.png | Bin 0 -> 1294 bytes graphics/pokemon/ribombee/front.png | Bin 715 -> 0 bytes graphics/pokemon/rockruff/anim_front.png | Bin 0 -> 853 bytes graphics/pokemon/rockruff/front.png | Bin 655 -> 0 bytes graphics/pokemon/rowlet/anim_front.png | Bin 0 -> 730 bytes graphics/pokemon/rowlet/front.png | Bin 539 -> 0 bytes graphics/pokemon/togedemaru/anim_front.png | Bin 0 -> 729 bytes graphics/pokemon/togedemaru/front.png | Bin 534 -> 0 bytes graphics/pokemon/toucannon/anim_front.png | Bin 0 -> 856 bytes graphics/pokemon/toucannon/back.png | Bin 629 -> 578 bytes graphics/pokemon/toucannon/front.png | Bin 747 -> 0 bytes graphics/pokemon/toucannon/normal.pal | 24 ++--- graphics/pokemon/toucannon/shiny.pal | 24 ++--- graphics/pokemon/trumbeak/anim_front.png | Bin 0 -> 881 bytes graphics/pokemon/trumbeak/back.png | Bin 620 -> 604 bytes graphics/pokemon/trumbeak/front.png | Bin 613 -> 0 bytes graphics/pokemon/trumbeak/normal.pal | 6 +- graphics/pokemon/trumbeak/shiny.pal | 4 +- src/data/graphics/pokemon.h | 32 +++--- .../pokemon_graphics/back_pic_coordinates.h | 14 +-- src/data/pokemon_graphics/front_pic_anims.h | 99 ++++++++++++++---- .../pokemon_graphics/front_pic_coordinates.h | 34 +++--- src/pokemon.c | 26 ++--- src/pokemon_animation.c | 72 ++++++------- 60 files changed, 230 insertions(+), 171 deletions(-) create mode 100644 graphics/pokemon/cutiefly/anim_front.png delete mode 100644 graphics/pokemon/cutiefly/front.png create mode 100644 graphics/pokemon/dartrix/anim_front.png delete mode 100644 graphics/pokemon/dartrix/front.png create mode 100644 graphics/pokemon/decidueye/anim_front.png delete mode 100644 graphics/pokemon/decidueye/front.png create mode 100644 graphics/pokemon/drampa/anim_front.png delete mode 100644 graphics/pokemon/drampa/front.png create mode 100644 graphics/pokemon/lycanroc/anim_front.png create mode 100644 graphics/pokemon/lycanroc/dusk/anim_front.png delete mode 100644 graphics/pokemon/lycanroc/dusk/front.png delete mode 100644 graphics/pokemon/lycanroc/front.png create mode 100644 graphics/pokemon/lycanroc/midnight/anim_front.png delete mode 100644 graphics/pokemon/lycanroc/midnight/front.png create mode 100644 graphics/pokemon/oranguru/anim_front.png delete mode 100644 graphics/pokemon/oranguru/front.png create mode 100644 graphics/pokemon/passimian/anim_front.png delete mode 100644 graphics/pokemon/passimian/front.png create mode 100644 graphics/pokemon/pikipek/anim_front.png delete mode 100644 graphics/pokemon/pikipek/front.png create mode 100644 graphics/pokemon/ribombee/anim_front.png delete mode 100644 graphics/pokemon/ribombee/front.png create mode 100644 graphics/pokemon/rockruff/anim_front.png delete mode 100644 graphics/pokemon/rockruff/front.png create mode 100644 graphics/pokemon/rowlet/anim_front.png delete mode 100644 graphics/pokemon/rowlet/front.png create mode 100644 graphics/pokemon/togedemaru/anim_front.png delete mode 100644 graphics/pokemon/togedemaru/front.png create mode 100644 graphics/pokemon/toucannon/anim_front.png delete mode 100644 graphics/pokemon/toucannon/front.png create mode 100644 graphics/pokemon/trumbeak/anim_front.png delete mode 100644 graphics/pokemon/trumbeak/front.png diff --git a/graphics/pokemon/cutiefly/anim_front.png b/graphics/pokemon/cutiefly/anim_front.png new file mode 100644 index 0000000000000000000000000000000000000000..3a3a17092f78e0352b4f333408b9c0f3df0f095b GIT binary patch literal 8057 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 D)+D+9 diff --git a/graphics/pokemon/dartrix/anim_front.png b/graphics/pokemon/dartrix/anim_front.png new file mode 100644 index 0000000000000000000000000000000000000000..6adf23406597b31e02835c5156d77fe4b47914ea GIT binary patch literal 1054 zcmV+(1mXLMP)Px#Fi=cXMVQc_C}0?f$WUM?AW(=fsCYmS5D@tI__(;ZaBy&tNGOOfAn1rNz)&Cn z00000047Dg#sB~VoJmAMRA_)vFbqX;aAX_9|NrjjW-z3ymdMQ0pw%X%&DoJJ zDAt*#C!Y9M5h%WqzbHbOCA>6|W5n>r5S#;X=pzyKmsUd9EmIPh^xEivt1(0!T4*{@p3bc-#H-KJZ0_(ck06J;sZ~$Z$ zc8Xjq3K(uB1}w`3u#nycm}s{kVVU)l@q!8g0caA(0H7iSs#_MhfL55Y0YHTm2>_x8 zx|GUB1$L;HF(3gFA^1t^BdW6@0ZJijzN(efbG8DA0PXvv=@noZfdX>w<@^_G0z2Up z3^3}6z<^TdJ}5T;jesW%I%o*MqelX;K2m)K8Iq}@c2TztB24s431Rs33?L1(7anb` z7mW{4*LAD%P#baEwrbb2oI+Ll%1QvBPX`UrV+wWvAx=|XS6Ybb0DSWH$0we6;y;VO z)x3Wt_q5w*{p*Mr{Qg0&R|CQ29~|BR6=uJGu)i5#Ugp{DAB5QC6YBX;;PVeO0WANd zmwwgbA7}!-z6(S9ADW&3ocG}#*a51)x(CVPA8_B^61cbrruLuOcF{}Q*}De@05Aax z?10`q82bl!C@%!SwV&S&aJUEK?j7iajz>B?O!k0XKL&71!-t3l=-q=cfE$v+r}++W z){ln3J&6DsAzc8!oOX+L#xexIf1t}vi!j~s4@6I=@(|#Le^5k@lUQ-X`TYaY(<~G` z;lKR;L18^paL6%w{R6t)v{M8rs80WYJ3`S*QF8kS(Db!3A-eqood7!0vzO=g4~lLg zB+$x7w|`JXpK=ZSh357T+CTaGBjR2xPXB<*Zl<^KR%W8hKj1DEBtz(PGW!Q`mTOL3 z4E+PRP7wI~1HBzDqq6%4<%jhFkAHx-(??Gyra_3bEJOdG{L~Vvfe`VSa@#+^{#P7? zTmFHx{OTY${ew>f!D~QV3Px#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_C}0?f$WUM?AW(=fsCYmS5D@tI__(;Z zaBy&tNGOOfAn1rNz)&Cn00000047Dg#sB~S32;bRa{vGi!vFvd!vV){sAK>D0u4z- zK~zY`?b0!8+dvct@GAvD@DizYU9#!OH!xkYISB6=&Ja&(P@ZIW@}egtndQ?~DA?XZ zU3yct4z}kSqO4hhze}Fwq|oXq&^>gBcj9gcmicc@&gZAh~uOV zoDujq7|+sV5{=}6&w^GyNRr76N3N*?t89@bIK>)pyaku*t6v0~W?ub>;CKt}3IZ3Z z&j8EwIs|U94!jKr;OYg?3%nMtr~`iIf$Bksm$(CyD)^?GTxi<5Z&O57s zD8(TVfO(kG=v7Wq?BO&H!9W~hin(TnQq#C1Y_BuZ91u}9-d%S>AQv3arATz9XBh)5 z9qC;NFdb-%Naqt6)B`KiI(XlWbe3}+D4;Vh@IXho&jYc#?^<0E0f<`Q3tu!g{05B$ zfpSp;mUoNdVL^+<=7HUS>P4}+5e<6XFu?j!+yj6wmbWVw2n%+tm%g=R!E?xgFJALk agm?t4GyfECYWGF}0000Px#Fi=cXMVQc_aA;ug=-?0#5V$Zfz_6g`U^r+X7ywW>0H}Bfa8Lj+I3QSX*r<4@ zU`TK{IOYDz*Z=?oXh}ptRA_^x==EZ?)7AJlR9 z{XPVwnu%w99vXn}!M7)+zJ%a?mJkQ0UlsG?e zpomri04w3vzNLP@oAV3E}*tT_D zrvS9B+vc}*X?h*OqZR|f`sEH7CLn(tgl9b#kqJWxOuR=D9L5%UNn$`4+0fW{s7M=s zegXJK7~2b2@*VoE5j@q+Jh+$qj_?;QDM&&9B#6NPI0Sq;_7NjCmiic_Na5Eg0mES@ zazPX2bwwW6C?KLF7(NQlaB-lkjzK_T0M`O*eP{rbhHEf~+peqHzP#~4S-sJ6Qu&A$Q7jOBXK>w?WGR{&OoY114NQ~tOO+4 z%c3uU(GU_(0RZ_dWPn^MHH7#cP^O@qB>|A!_r8V@-`BR1LDi=QFzz10I{;@Ode;Fy z7>;Hngd`bot472>`7YqET|I>K1^_idj(RTF0^bpj3;?eZ;+rH=q{DEd$0;~-)c>c4 z0n^Z@5Lkcm@_0NoyzalFdxaPmT(U8=qMK|c%!~bpkw=Tvu?PB;krd$j!4nnpdrVNPZ z-d#<&8vr>FT@*gNurL&a+W$Xgp&{VBRZVvwbS4Uw(HsP&kHg-B^#62ELeqNI{-2|m zG7xV4|D1tv>;LBrg!R_{&lw24|DQAvTuYa)r z`Uk)M!9U<16u_u|Ab`7nkQ=UX|3Cor4KUO*-T~b|Pf2c4;_Gb`Q|&XzYU=0hR6~%K6qsykj6f!fRsD%4j2z1x8JFD@YMquv=5qr zkZ$_NJ%kVTL7M{V4uk+k?Sp24GzTI32gCM3H4vyd2-!a%YwU=9Pz;3ZAdu{$-0|kN zxrFdGi3I%%2Z6@ygQ9=oAPm|E;&{At5Qgo8$7=^cVIMqRItW_(;PJJ~|F`XfKL{^p UL0Q$N3jhEB07*qoM6N<$f_Jqzw*UYD literal 0 HcmV?d00001 diff --git a/graphics/pokemon/decidueye/front.png b/graphics/pokemon/decidueye/front.png deleted file mode 100644 index a13a33a2ae81d4e4dab8039ad1652c8b2c340c44..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 925 zcmV;O17iG%P)Px#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_aA;ug=-?0#5V$Zfz_6g`U^r+X7ywW> z0H}Bfa8Lj+I3QSX*r<4@U`TK{IOYDz*Z=?k32;bRa{vGi!vFvd!vV){sAK>D0`^Hn zK~zY`eUs0N(?Ar*vqZ4B&@KVN(@qWSMYcKyYJWt~B?z82abyv}LqinyB+3>&>DI+2 z2QPcDlarFmCKm-g2<>h4w0mmVV_HfO_R_5XK!P)^g>5_OJ5Bh0=KJ2f_rlFZHp?xI zEC7XN`lY+l>QY^O0hj5S=JRHAnQl2A#?2)98}{@~EO-|C1-fVAjY%_u9!X4Q!{63)W7K)JNliuq{e*MSggn>g=82 zeOE__7&wq^z?G~UsQ!`|_=imWa^3gqW-T4y&H4w!q{DK2W{&r&xvLrzfN5dfG7R(H zc%y8e(TNOhn49Js?2G|_vD8q|sk_EA4>xG9S>v)c4XB#0aRYkT zWdU%vCPMY4*NPxiLI%J?xP@R5!cjkpdMx0~6%o4P>H!HBAe^}x05%1>QlC+TVC_qq zWbNsrpbG*9kXY{|0IWSJ4o*SvcM*uK#uOkiU;==q0O`QT9CZLmIv@kE-U3f4z$k(M zLk+BZdmB{mE&xJcw?d??JNp|W3T!L_)?p;0ZRY^RT`4$a0iH4>d+&-dY1Cp7LQr&+ zP(+Up|<%s({lDPx#Fi=cXMVQc_5Kv$c5D-|Ppm1ndD0qnI=;*kxpomZy`0!Bhr~r_lc(^!#U}#X_ zc$l!rpoIkrp8x;^X-PyuRA_A|p-bRFV*`e5E}x&DPt^)S*p$!!PzMbG#$Zj& zfMr>N_DBY7TL*wv(Uofurj7O6^!ZG0x*IDCs}U+dYNvJ6Dr{ON(r>E)&;hm`Ah$DJ zq}t0JZ-W#-JOq?}qKhhgr!VWezKeyJ07SS1tRjyQGJs}97f|#>Sl4Ww3e5t@01*8J zfP5-~#M1OI7=Tftxd1>E8zx5(06kmncL9~22pF>)6cs($0mg6vU>*OMOm6D|4r(AC zY{Wno{Sq)h-UABj4uA>!?IW{jEx86zhs7NrmwN#6OH-l`Q2o{&$ORxPXOEB!RDjs( zZCScigVuuR13+j2yxe#LSX-cVs_41puMEJ9l?7f4gI1v53E99pbOE#MInn@KfLQY_ zKm!IVfGo#{0Mkb@KvTs4y!X3C3>`pq#0XoQ;~VlM+qFNnVo-o1=wtN1WPtvnbq?)X zw2m(o;JfNEAalz$cQ&9SHC>d6ij}@=K?&Rf@`!XLZB_(`4`vu$cV-(@`!P{Sjr_GXUW54LltV6KPK0(>a$B7w?>ghg9sVzkUvQ%2WPT@%hiM zdeH@(wNwr?~Zo><#4F+jUL26^8?uHPxAu>&|613 z7YtPZ)Ea2=1CTzi^8>${Ugrk@Pkx|xNkuBalOH_!!IK}%PkzuTPk!*^2mf1s@E00H Vd+f*4eU1PC002ovPDHLkV1g_2La+b; literal 0 HcmV?d00001 diff --git a/graphics/pokemon/drampa/back.png b/graphics/pokemon/drampa/back.png index b3460057efb2dcdce3003190150c42a1704011c6..be44b000bce02acea65f57059885d99e19678e68 100644 GIT binary patch delta 586 zcmV-Q0=50K1%L&R7$FD)0001;w}I>c0004VQb$4nuFf3k0000mP)t-sn9!h+NiBag z0O_&-00I6c*Zh;^qTrAiwo5k^zIzPieqsQ^DQCY)f zpUUlv%RWI=IU{!UN*-&IV8rC9UN3m2x24R62c_qI2(@m(+Nw7I-nm3rw_v3HI3mHB z4GY46Ng4A*EKXM% ztORW7gc49Jkf>y)C4gw7gEbgHW1<){q9X`E7ecZS3}QfJD`&_PR{*7{@DqOvgOf}M zBwPU$3+2lk#2uguK@tRjU;^kv5Qqy9PSpwkPw$*!lnsS70D;pb0SFU7?TROXp95$H zsC_x!6lGEI7~oww#E$@^eg_&LLePLK1O}iaC_uHq?-HE_zFQFx#1`yD6EE5i8cLx#zM+KC`6H%A^Q1APPukRN2wwvMu~cLr=;Z}#2j z^HxlL2z4JxPptuRXt09xG^5dD@H&ZdXrRx{Z}e&r30gk~j9*Ql31uFv4*(qN|Ml~F Y1NYS@9g2-WC;$Ke07*qoM6N<$f;4mTnE(I) delta 637 zcmV-@0)qX31+xW^7%>C`00013M{Ml?0004VQb$4nuFf3k00004XF*Lt006O%3;baP z0000mP)t-s0I=whIW2z>km9re000SaNLh0L01m?d01m?e$8V@)0006ENklbMvv1SI){# z89^Y?{yduhXmG@jy6)pRPOqJ(MNyRL^>Yx9bAZo_;@8ai9i4wFrHW-3Jh^kF;`sul zf*5KS1d0kIYa6TPaqbCavy6J1s!$X6ZwL}0R`wJG)B>KY?B8IQ1R4Mj)&{%89!ork zX26pNPO~7n0l53#o&tlQlnlZ-$CTGV`AzU}3*aE)TVS`S#G=|<0Of)0dsVmHW*)Td zzHNO0pmcyHl^=iF)*RZd8bI`h>&O6e<_51ryB%sow5`bqlHbp!1F_#vz|H|^qIiAQ zP-B1Cd!7m6p zl>F-%WbQ$s191B^q=ZSihtloZy-Ke~$Z5{s9+}%WA$>4D0X`^Qffo;SGyiXX_9euB X%XUjN7C`fi00000NkvXXu0mjfiYy#b diff --git a/graphics/pokemon/drampa/front.png b/graphics/pokemon/drampa/front.png deleted file mode 100644 index 6aecba694918af604105278c7ace267db12428a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1067 zcmV+`1l0S9P)Px#1ZP1_K>z@;j|==^1poj5Fi=cXMF6nq5Kv$c5D-|Ppm1ndD0qnI=;*kxpomZy z`0!Bhr~r_lc(^!#U}#X_c$l!rprMrknE(I)32;bRa{vGi!vFvd!vV){sAK>D1B6LL zK~zY`eU-m&(?Ar*FIEP|x>g4kWULYo6+?QBgjA%K=H$#Y3XGM4`^?gzR_YrWkWkBi zkczPbD}_!TGBANq#l}!Y`3Jf{B^WGpym#j~&X00xtR(M~_rCXjmECr1d)Z~TpNh>n zuP-91f(gMY4yUubz#c>bKs2?TH|AXg&;vYSPRzNeLWE|SKxlx@tc&9SLVQIDG#AFW z(?5f^{r7-=!n$ocyfG8wq<{Ld-|xQxNMJ2ZKiD&XefQhx2?A%Nv->bjFYGCx!k^yz zdh+fI#Xx|ekIu?OgbJC8dXe>Q*Wd2%j@IUcozaxRshui;J|6L zZ}`^Z&x14|m0dPc=@`IoV1yx*Qa79G3O@!K$a0`cszyI;rBXyR(3%1Q4P;7XYM|8c z>JwH2Vg%I1957Ntxki920XhO449Wd)7{vs1r8^5ifW#0};35#k9-9Mv7?OR*T|1W; zpaf_M=(R;pAzjPUKxJk^gn=k7$aZ1g5IYHdMSx5Fr|n0Dozr9{mkbwv8u;p4A2-z*>g6t!9W!<3=o^rk%K3EOVJ+FKN{=_77=&FJ<}Jdn*6{002ovPDHLkV1gfN;4lCH diff --git a/graphics/pokemon/drampa/normal.pal b/graphics/pokemon/drampa/normal.pal index 7030346278..5639299f95 100644 --- a/graphics/pokemon/drampa/normal.pal +++ b/graphics/pokemon/drampa/normal.pal @@ -1,7 +1,7 @@ JASC-PAL 0100 16 -0 176 232 +152 208 160 16 80 96 16 16 16 88 160 160 diff --git a/graphics/pokemon/drampa/shiny.pal b/graphics/pokemon/drampa/shiny.pal index ecfd998780..1422a88ff1 100644 --- a/graphics/pokemon/drampa/shiny.pal +++ b/graphics/pokemon/drampa/shiny.pal @@ -1,7 +1,7 @@ JASC-PAL 0100 16 -0 176 232 +152 208 160 152 96 56 16 16 16 224 176 112 diff --git a/graphics/pokemon/hakamo_o/anim_front.png b/graphics/pokemon/hakamo_o/anim_front.png index 2b5112a2d5b4afa61026848254817af74026e8fc..599bbe3eeb19e58acd4e08a57f115ee098bb4162 100644 GIT binary patch delta 1240 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 delta 567 zcmV-70?7TZ1pWk&7$yV*00013M{Ml?0004VQb$4nuFf3k00004XF*Lt006O%3;baP zkuE-e010qNS#tmY4#NNd4#NS*Z>VGd00GxYL_t(Y$IX<#irYXC#y2dNGT0B`BBVaB zvq*B|JcEhZRV4^nG^zpzW_QxNksCMZ@&I|BoO?ka%~g7a%vv%W-aoo3+#sYCe3k%6@4Cl0!MjU5#vKNKpo^y1bQ3AA!1;FsSdBn;pDr>1ET%kO zQiPoHD5?}dDRPqp_#$tra1nP>xkF}+tbzbXD;WdagRxbxjl99_Tg1IGXsZyAL1P+3 z%xgq*4phk%Skk2=0KbOX5Kxj-V2P%*_g`3`j}ig2LbRg!_TcN~o^*hnLc12$ct8n% z+QJaHJ{E@EZEuPcV$`82j=u~my(Ih!!0vcJi3vcrKMU$;8wKF|j|rewkOl~$&#rHa z$gipdPzp^PP|96(0@w+l2Oa5Cxke$21NjBe081A3$Q)2>6##}5+GWon_Z*m;I~U?| zWXk|Bc&xZ11d9S6XEdN8gAvf@8F?*#6F~Q##wVzcT@Vn77Xo4mSZ$)f(B)<^n*cuC zzJK@UxdUvxRm@KV(T~8{vsj;c%F`dBz^AtD`=|D=8V35a2k`b1S%c7^RmNKmeC_lT z{Y`GklvuNXN827qG<1XiPci;P2?UAt0Qu|VH3wt=0Krr|5q?ZZ1ONa407*p#PDHLk FV1nAl_J05X diff --git a/graphics/pokemon/jangmo_o/anim_front.png b/graphics/pokemon/jangmo_o/anim_front.png index d462c0adb83ca9a49927a0fd8bc15f5822892045..9f3abb069677ed9e9d671c18fc33410769d5d900 100644 GIT binary patch delta 766 zcmV^xzez+vRA_?{U7(_2dp~nlF+Wzb3yFXnTx$AhCrKdnnsKm@f;xpfNm+jW{DmL zkrsKEgGdi~hrvnvD+Yf3vdjy=ioBx&i-pK_6_KOQAOH~{#u!~`6a)Tp;t)Bx^hlx( z5JjnaUl}kGcOg;K;2VEAOMt54Z?!-(YR{nvBCH?lwryY~a6AJG)C1S87`Ws$1D378 z20M~-3C#fIk_3>vJs=LqGQM_BfbIp9W8%r6ma)dUi-NRg(?fi#UmA8N(pi5on8o3_ zCQ$p3FHqy9M&~d(K7t3C}8X$TOD0s^NBX|zDl%#(YXffFWJK8#>Em>2_ zy3X!{DRCbrYwD;^e(#Cr1kw%^!8Rwry(OLl_8k(jkbfkB?A+FD0GtKL!pn=Y`|pG3 z)j@iK_?_1vi#{g+`JH+UayDu1HDC>>f!*8=A}UJIf;bKG>m{1}QiBc$F@WRdH(=q} z0GvhO!#9*CP=kMvM!xf z)9_#M$0t9z&PlpUo-+94CvW)Ud3LV`#!uexM*}@T8+3n_pSQ0~pa7!+giL;Z zU;rcO2ya^BzuV#92PtY9Gp8x;= delta 813 zcmV+|1JeA&2J;4x7-Iwj0000OV1ZP1_ zK>z@;j|==^1(7j6e*ghuOGiWihy@);0007)NklljA6vypI9xK(kAQnL8 zqSQmPBnRrkg6a=|QaQ)KLPhKWmRhpk&PKimOJM5Ii3JZ#*MSU7ZYB0A;v;Zp$F4-* zvsXZQONReX@9v&Yxu0e2>Mt$Z<*ljBgz)H`O>{1%B*28pe`&xLRdoX79tOw3vCipJ z41ypKqVGB3ix!|CjU*6@Xy7@IA_=E>?z{4`L<9NSjQ}9d!jJ$mNI2&s4WTU@ z9V8!?s}W@QK^>5gE;T^prbC*&Uw)cXhtzOA&SNPLLU9rTV4&%gNz2>%E1$@$?} z4aHC#tnu91<4Wa%^LIG~Tq;#?RVWfrS2`^&TY#Jwe`?Lg3Oz&#Sf+oE053<_{&H9+h^o(+tG=z|aqAUo5q z|Kqzae`*7iuVNH&LLj7m{tdB^kfDT$)0tKfAf6K`jh}FU#VKJJj!a`neE`a%EGIPW zjjB+e-HFXE6Ykmgu$&Swg2C`{%SsSPAe4<@;DEdp4BQT?EtW$f?10BvEg1K31!GLU{#(H)Is`*?2*x^Z r^9Lgs9_bHPjbOC-L$ULR|G0hwM%^#Wr{yVA00000NkvXXu0mjf-9ulo diff --git a/graphics/pokemon/jangmo_o/back.png b/graphics/pokemon/jangmo_o/back.png index 6416369e961f2801700974fae9118b9749632137..209011dfa70d8d8e60796bcfd03392b1aeaf849f 100644 GIT binary patch delta 552 zcmV+@0@wZI1n&fp7#0Wv0001;w}I>c0004VQb$4nuFf3kkv=|u0qsddK~z|U?bh3F zgD?yRU@&q_f%kvj`IL~RG^gE7^Q5ZM`hO%bBrMCHE&y1$rsL~oHA%pB*Nl+oXN33s zm>>%WCD1K!R)7Bi^a=NcKY<=0ORc{JriSpAc^E=dC|W-OJY97}cyB&(f!4qfvfmvISp4Zs9%LX@BiXcw|ehPWI6$Kn4%st85*(rPMj9J>>hHIOmi z`TL6lFE(m|E@B1*>jY3QP^>_@DU315I7zn*?BMUrYbkB z-nsE`<7UVlx~2ennAy&i&St_3&hzXMU?V#mHJf&L13CnLL$mh_`^3!werwYqv^TSL q)sVlX;AVon_APLAx8c8r>j(9MAp$JfJ%|7R002n`MNUMnLSTZbRrz87 delta 540 zcmV+%0^|Mf1mpye7$yV*00013M{Ml?0004VQb$4nuFf3k00004XF*Lt006O%3;baP zkuE-e010qNS#tmY4#NNd4#NS*Z>VGd00F&8L_t(Y$K{nVZo)7WhJz(G255v>AyvXa zmtb*^0%@BMb{m*}6WcQAQqmLM0O4nrNz^2WTs0`dkR4fgl}#>)_3 zGRznoD+BcXtC$st88TfXfAj#c@iE0hE$P$&7&ASLkLyyQT27S>j8PM9MZnRp z8Q?N<0esN@9WR-RrjsIdd}@?-*Wfasl*Owc@mr@?0AAEf&BCW+pK5uNse eKZL)kDEbDdW#O+pz;7l10000^$FiAu~RA_cK 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 delta 737 zcmV<70v`RV1&0QZ7-Iwj00013M{Ml?000McNliruOV1ZP1_ zK>z@;j|==^1(7iwf4^8J>4HPxxS;r$h`_L*`1tr8%sv1B00000-7nPy00001VoOIv z0Eh)0NB{r=D@jB_RCt`-)4gt^KoAFTBoke6O{lJpCHIjwA_Wa+Lvj)gk%DlKwGHJN z;TN#N`>>*!m%EwSU07_+?n9H0|IhQWi#_lAJwIRW_fs_@G zur4ugizV6}jhMljHM z)8!yp=AbMzBjjdBxCBPn6n})MK^dO_VEk zG{I-7bAjjUvv7pq%gU3Ifp5=Bjq^gvci|;T?&SC+wg|uZ&GbG^!y}<})cXW@&3?8* z1j;YX3iy~0xpe}FlX3(&%B)TQk`_VinH4;5J|?eF6h%Ovi4HPxxS;r$h`_L*`1tr8%sv1B00000-7nPy00009 za7bBm001r{001r{0eGc9b^rhX2XskIMF-~w2L}Knaw;oy0009JNklo&%hn$E?FI=dMe6f&>*bpSEhm^R9;DnMcNWMC(rCuAn;w^fpT5+S$feUDpClc)@z$ zjJx5K2v2RWFy$Wz;ND;J(VS%~qYz=APe7eJLP91|cDN)SZR1t3!dvi?U62$E=$*|9&J z18DO8`0wt4aCliCN%*Dc$UQ!bj1*#%3EOHmZ(s5-%E75=mG+?a&$`>I%>x#he zDHtvRR^UG;1UwTEtOADNKL_}{i$R}a7AzkmdLE`SHUetq1^w!fzX>q?{{Z!Tfy;o) zbD&*c3vA`@qOWSR5}Rd{mAxIC0Bk`=|KIYx_KpUuTDz^*d^%94&Su9>t+VdaVx8=7zZ^{KKW`Q@-hTW8z|*`S8=<1s P00000NkvXXu0mjf%|x2p diff --git a/graphics/pokemon/lycanroc/dusk/icon.png b/graphics/pokemon/lycanroc/dusk/icon.png index 7ff67638d333738686a40f0992861b58e7c2dae0..65d8394f4e670851a9d9cc4829852265081ab5e6 100644 GIT binary patch delta 379 zcmV->0fhe41jGZ77#Roy0000?P=%ZT000DMK}|sb0I`mI`%#mTdp>^wKS@MER7i>K zl*?|zFbo7OGN4c9{{P=*Ni~gLR&Fg&R6ug!cqviB9LHZ<06qY!I|NB6jvEGrC2+-AeKvwPzFdD2#*LcMzGG+_Ws!PORWBjnQTLcyvq>HyKg)pA#ccp`aw1W- z++R#-7z20_9;am0BVk^V!rclFX*S+OJxhdJOcc{qeGzP9W*B$a^x()d9cB4!;=7u@ zetIY|AKg7m*2@k^X5GC@`Ct3>!~R$TjXxF}>isbrX5o*~Ftb-b+LyERhkW$MJL1M4 z-w`+dXbm&@!-2lV=#Nn#lRsv|4F0gmFu{1^k9&cnKXBuRDiCb_@Dj+z4{JTW_W3J* ZcmiMx7sjSp6UG1l002ovPDHLkV1khloROV1ZP1_ zK>z@;j|==^1(7j6e*ghuOGiWihy@);0004aNkl0zOB^WoapC7`TCD38 zXlkqDcvaZAUYxM*<($=XBhU|JFah9P9JG&0dUHl8jv6DQf5I_#DOG6^ajp(OHIQ8B zLMGxyj$NU;T;EgDCYnH(QT%qM0?|$-E#k|$(0GHfDHx5IQW4}6V7-(nWlG-I{4p0) zqym#K)Ace@yn0*)?v%_*Pc8uRAjxaH0?H-fu$HBXt!>CwYXniZ>lF?I!`&7zXm)_@ zFY`a1+kdl-f48ItjA0dn2LZ0f2hWw-Ul|0YDD~;I7}N|R3`#|dL58ag(U{2~=%`3Y zmt4s4w%rq5snDfRa@3)JqKAr#NUKp8NItHguY*AtPX;-}dp|W8-6n&2gLo!V)hrAs zd8B6}7lWKNX(3IO&jvB*kJ&*aawCl4&TfTqTR*;q9@+X~!|j%TPx#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_Fd!I!Xi$J?SP&2pU`R0N=+KB*NXU?Q z;JBdpn25lzp!oRsNTApN00000089bD0_sUb zK~zY`-IUF4+CUJ;7ugcmKt&WOCs64*k|Qqe!GsN=@`*HlfQo39$d^c|3NBYGEa4gj z?-Ml2tzzX=nn&m>wC~cHH4r-?>A77AubKJHe`fZ>?4KH2e{q)TulULNI?&iMKOFm; zf#WS!Z4%&|ZUoBHKC2}cj9KCZ;BL;M>p8Pp;B}ApsarVe&IoZ4f zz73=MyUP^5H{OcSqhb(#1lZS+imva*5H^}!p~)|VSmbhylv2rbI8Nb2EKu4KG;%4X z%8dC~06GSHEd%H^5TVmB6CqL}95b(5E~`W(X9Of)OsIfvh)+{(CJ?Dxv63K<2A5`U zB`{a&N<2!0+FwBW2-rsxrNp3x?$5l7e(u8pAXjBMQi*t&PCMXYw2)Jn;xZ2NvnBuVO2{^D;pdtsqe+nv6`q<+Ke7S@?FiAw1p3OOz5+yI0u}-GQ-E6_eFSC%VENAgG{-icubIX-^7;B1U@Uly zUIe@)kewv!MZkgAf%b9*o&r`YyYB8`Wg}2(Wf#SQ_DQzHZV{+fK5e7La^cX#SDfNn zm+JNEu4bieyu9Xrf42zO)qazEsI$D0wHgwIrR21^rFyfH0qvl+%h|JmI(2R0>~^rh nk2=-<>ch0rkA%nm!@<}eF&3Gp?$(F$00000NkvXXu0mjfIN_lg diff --git a/graphics/pokemon/lycanroc/midnight/anim_front.png b/graphics/pokemon/lycanroc/midnight/anim_front.png new file mode 100644 index 0000000000000000000000000000000000000000..fdd549d9493c21b58f854e3236b8e95fe57e9bcd GIT binary patch literal 1387 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 Y0i$ke0C95J7XSbN07*qoM6N<$g4s8mE&u=k literal 0 HcmV?d00001 diff --git a/graphics/pokemon/oranguru/front.png b/graphics/pokemon/oranguru/front.png deleted file mode 100644 index b0ba3510c1d0f1fed476cda7ded76e210471f3e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 977 zcmV;?11|iDP)Px#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_5MUr^P*51iQ26-xxVXUhs1O*CKoAfR zKp;?D11d>G zK~zY`<@yNDN6OyIw)eii}BO60IH)cIZw*?IeoI1l<~{G zHz2gpyA6ao^{$NafLCZ@&6~XE;1Fd&v5E0(3;++j5<+OZv<8~64V6bwhfj9K=I8$W z+i~R=KzYz_oUthU{t2eMhBffm$^m*8si7$VS(Y=v4x@QQ%N&eQ2XQ4d+3YulkdJ&0 zj>a5xGELlmW6nXa0E-^=RgX>2T7aVw z#$-5ClzBh^v`6kZ-HYC;0|1jTHmednaocYDgy*}40H&4>fLX*zE}=(PE}?F(AcB}s z#we*K50{hnTe;iq_KejcJ8PmCNM+= z@`|ROIrr}E*HJ8T zn{YBPmjcK6;zC^I!(1XIT-!zSJF3!z4|Qe(a@0(Tr2v7!VvzY%tgnNh@O2E=g@ z-i^%wv=oKSV7GiKfGZkHjak)ZKJO4Reqw<*LM+9S#-e}&MX51WozFACC>WA9t5N_u zwD%)bRYi~nWl>}UfD!y~uG(v$Z$kx(Qm8P5pBmH81IeD-6ec$nHZ+4;l^JV-rVAT} zegwd`*TBjJQXu(K;m=`kQ21-Wx(okM6be59h1bOV)s&)a00000NkvXXu0mjfIH9;> diff --git a/graphics/pokemon/passimian/anim_front.png b/graphics/pokemon/passimian/anim_front.png new file mode 100644 index 0000000000000000000000000000000000000000..c69fd6a2e4f610a457649ba6f759bb703b6cdaeb GIT binary patch literal 1498 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 delta 437 zcmV;m0ZRVL1N{S#7$yV*00013M{Ml?0004VQb$4nuFf3k00004XF*Lt006O%3;baP zkuE-e010qNS#tmY4#NNd4#NS*Z>VGd00CA>L_t(Y$L-WTPQx%10ANcIQRaIV)oF@jaC|m$3s<;G43C#~fF2{3dXlbAAkpbRVe|bOtDf^FKi8isGn*``} z3aE#81*O^)Fo_C@6dsr&S^?vIl>lbF3MILJnSna2Z;NmXbBd5S0yTt0rC|p8fP(B1 z0IEe40RV6mM2bwqw=jxGv4B~OF9ZNMiLt(q0Bm)vpJD)Dte@|$rZ@+Wb-jCw0oT;q z*UP&xoQtN}?k}&GI0qlij+Zgu8qT6!f@SeJp}Yn^Y7hx9#c2*lC18v%!bwI4m-Bjm z$5|*c?oG*Jkw-zs;|u!e?Y`O$w9S3 zpwJ!=eP&bDfdDI=3W32`i<`*(%b_NflM&YMBlbaV1=bL-9H=EgE(dHOcG{i9@4rq9 f!l(5|gRxI!o~A@aN<+#30000!lvI6-A0X`wFGcGLXP*8YbVId$O5D?&DV4(5i$BzR$4g_qt(a|u$!NEd7LIS83 z4*Zj((tsS!0*}aI1_r*vAk26?e?ZzpZ^KI|ZJELbmEJlLR`uaIxg zmcYC>-HIhWn(Is}L}eDs{bc5u>DqFRuPM0w$kP8Y`t=8@C0SpVKmPuB_xrup&zJny z$>*6dx0jLez5f#qgULouYWzPPc);#`?|H+?2dBBEHn1*LKW~`A^vCyu6O-A2>+|+M zWw7mFx>GG_vrT5h#Oe9DhZ%O4*VkTOBfrA1-skQ4^|PK#W8gbB!=GEB@UTel%F>%z zS`G{=?kAp@ROz$fpZITShJEv|CfeVf?2@&LFMRGIj_}v&E^m~wM7yu&W-|7yP$~#+ z{3^UatHX86E5YI-p^3>x`dxPvO?S8+T;sH2A47pe=c4nnVP35^6JkF%>^^P5V7NMH z+2U+14_{w*jt=`XLOZOJI)3&Ynm75MTVFBDQ5GM;X}1sdfdbak)z4*}Q$iB}u_?A% diff --git a/graphics/pokemon/ribombee/anim_front.png b/graphics/pokemon/ribombee/anim_front.png new file mode 100644 index 0000000000000000000000000000000000000000..fb1c5ad41ac449e10a0f6a17c9b35de58019cf32 GIT binary patch literal 1294 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 diff --git a/graphics/pokemon/rockruff/anim_front.png b/graphics/pokemon/rockruff/anim_front.png new file mode 100644 index 0000000000000000000000000000000000000000..d806387c61c6990249e417c287498eb6ba1c9eca GIT binary patch literal 853 zcmV-b1FHOqP)Px#Fi=cXMVQc_csM}VsED|5U=R=xfM`(gkcePNFfbq(fM{6g=+MBhpje>b`1tq$ z000000A;}u@&Et=(@8`@RA_5$0j7y=Nr^cu(!0t1R%5tjSu8Avz|JgzVR zz@4sX%XbCjtamZ21DszfbY~qv&p-%iR0r5kRNeW-gmNEnCyeR<&;VEguIm*rtRtK! z5yjX6J2V1MW6mQ0?*$4$7ICXVy9d@Li(VF>tU%rdbrt|}2^7X?5)jG?mPOnaRFW&_ zgcUQW0dfIE?IV>{z_H1nY||@2t0({m7)doLn*of766EymQ!LwYMxP~PeE^6>z{iU|U2(Do1RdZDAWj0}0{}AsISfF556-&+h|vz70!gT-70HS;U&fU)(0LyD`cMu|827(dM`+vy*?*@X&g1Gnp z4+FtsL0tX+tAQ}?nxOap4+FvEK-}B^H~%0HEBR>uzxfBFI>Mv;|J^^Z`wu_)2WI{94+>!U2g^TL f{=teB{~~??Yk(-FGI;FM00000NkvXXu0mjfW;K6) literal 0 HcmV?d00001 diff --git a/graphics/pokemon/rockruff/front.png b/graphics/pokemon/rockruff/front.png deleted file mode 100644 index 1199fbb592f9be2158adddaea184f13f6f797514..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 655 zcmV;A0&x9_P)Px#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_csM}VsED|5U=R=xfM`(gkcePNFfbq( zfM{6g=+MBhpje>b`1tq$000000A;}u@&Et;32;bRa{vGi!vFvd!vV){sAK>D0q99Y zK~zY`?bI=g6G0RJ;I}wM(%oc5hf1>`X1lJ=kg9$9r#fW*2Vae~f_sU7gX0cI=8fz5-Er zU{;3v9&k(EVU*sL10NVCXB2Uq$k+!?pP>O4@-4t@HmmarIBZ)WhcV2QD&`d+0+UA} z&f>Z3<55$)3 zu&zuIG!6J_K(u=eR@*Z)zfDpLklGe=y$yos-E;YBW4E%a3cb+VGd3P17c#NCpjzvd zE~i_7+)JdCBU9jbq07Fmw1A^ro+cxVgdoD?D=mObCV4uFZf7f~YZm~LrWvF9J^u|V z9RT`59MVshdPNt`0zmZVOqVZ9)!EZ}3XbTHlgou(icU*Uxf6WI*3cj>_&ODIgD|XUB;RQgtxPN`CJReWMSi6B3ve0w&g9H81fIZ55z`RETMArvuVJr;b zelUp5y+KZVGrY0jz5xRd$p3(IH>joO9D+w}PST+h^sPx#Fi=cXMVQc_cu-LAz?iUraPau(kbscDxVR7y5O^>k@OVJ5P%s!^NHEBVD3D+P z0000003onaeEKr0vMywI`| zWajf(T3Y%Kf~NOw*Yt`p-GgEEyQgdf@Fem1d1WDh4_hq0H9OQYF{qSo6ZoCD(Ki`ce zKqf)7 zl0#W;!a0AE`0H_CiWD8S_ z7Xo5604Ab64S62b1ju=pXSm}>*37HLPoG9CWLM^^Y?_|{J2Bd83XJ|R0eI?R5t0=k zjB&wUv;!U_(-tl*EiElAeXHP41;W`Myebd??m@wdAbYw+6=Q(_K0U&cjnMot-T~GE zffHjST~d=e|Fb_*;KVR009%K_fOH0UbAcc`K&iiF=2w6ozr`JI=~+cU39R%*n@fz$ zZ3dbEXZqf_K}e%PFy#MH0Pt62DKnx8!0}xUQj+*iH*nblRevy3xA^W2gf@J;PI)v@ zRzNQj>Px#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_cu-LAz?iUraPau(kbscDxVR7y5O^>k z@OVJ5P%s!^NHEBVD3D+P0000003onaeED0dz@3 zK~zY`?b5MQ!axuP;7b)sLl}B4g@si(M+!=gga=Tpoe8Nk60$=<=P39Bh%W$>QcLJ< zj+#c^#l3^hJz5Ldt{3q}xKwBxb!S#Vah~L0%e{c7bz1n_?P>?`O)E6kV z^EGHO0<@q=0SaH>MF2JoQ&R?Hr$Fe3f n8}Lx~LuvxHH~{S70SVk99rR5P*fFcX zoun|afawxo=>ojC8JSlWWw`|QTCV7vRo-XwOtXarxG>IiAFu(&^zPg_8(V?tlQH)s dIM*K)V?P&+i{RK+8sPu{002ovPDHLkV1nzZ5P)0Xwpsi~>|tjFW=oqb*53%^^})!zU(*DfK%TmBH7*h7qW z7U0O&>^8q+u|Gz(>->n#O(wF@6(EXq{*+J_Ov;Ezhy_f3B829bnHvZXz?%pu$)=A9_;pni0Mkjxc0B+>OlL%t8E6R*6Qr#T zJ_x~Ucfk<=w&sTcsAp2;_iKV}D|P!ffWs8D09q^!jPwKvL;$+A19q{W?iuiUs*Yk^ zf;|4h2blpxcs-v=K;*G=&P8Uy6QU^?0dJ~nPy!bC4WNCSL1}w1E)`&S9YVJ@e@O)` zuTv;E09dNO0=)iPysooj^^x(=q zDDdyvNPy!fKwb&o{HHkcrlzK*rlzLeG}Hedr~iZBl>Uda$(a6!yCo%K`j`G;uMc|O z)2Dy#AG*Ev4R^W4;-F#fM5Ct&hILO^bhjXM*qNmubsj{dH9v#-TO=b zAek@fk~1INRCaT*r+-PVrRTkLKq%8Y0m{~lc&9(8=^Z7gNRiR|0}AjOfb<7kK(zGk znNah;hTv8|3W)0Wqd#~lCh)u#5MDMx`*XY&5a#%QDG!YCAIiJi9RJg~fY{@^^0#!X zFtQxV7XQ7TPz#6}pSggz6aV2w?x%``00000 LNkvXXu0mjfBrRh) literal 0 HcmV?d00001 diff --git a/graphics/pokemon/togedemaru/front.png b/graphics/pokemon/togedemaru/front.png deleted file mode 100644 index aa0202eef3cf1d693f57a31736034d69de48427c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 534 zcmV+x0_pvUP)Px#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_$apaL;4lyn5KvHP=&&HLz`%%*m{?$F z`1tsUh={njxHvdCkVr6iI4A%B0CeRnBme*a32;bRa{vGi!vFvd!vV){sAK>D0dGk} zK~zY`?US)i!!Qtrjhvw?JVIdUR>?yfwL?{z@&ND%ts`}u4hvt$UDXd*$ zJTf7kq3_ajA|!@0Ff#O)GX0lTP}J&dz`FFD`!uM&Yg33xHy<;|col z+@C(y=xa}alro5Q5^Ex$^~eILl#=tV)>J^61!JXVPfN))833@v_a$U%*rftmxdUc^ z+=L6F9xu#`14`tERDTYo0}6w{9R;umc3LlT>@W?X$H}z?FC%JErj7t#fJ_x0)OHgAOQM6 z0XG2os{z=wA$jlsUrNXk{2QRCh2#c1Kwbly+}Oyu$P~qj-q?QXfXo={0eH2x7Qdp> zo}1{~MwRa-TI&W_37=m**8v`%;rqQ1qG$IWAT9Pdn_E+ODsWL70>FRxwS-_N{YNo& Y1l@|cN0x0IMgRZ+07*qoM6N<$f>RsbPyhe` diff --git a/graphics/pokemon/toucannon/anim_front.png b/graphics/pokemon/toucannon/anim_front.png new file mode 100644 index 0000000000000000000000000000000000000000..fd42f4cc3f487231f87aabb76fe22792d6b74b92 GIT binary patch literal 856 zcmV-e1E>6nP)Px#Fi=cXMVQc_5D*X`7#KJ(FnA~!B}`{nP)Oh~5Fl`<=x`vYsHpI$FmTA&xVXUR z=s@`R_(H^`egFUh)=5M`RA_7q{Z>joU4sE0k(8$Z`KPqC<45-q2Y^P#Q%eY-1E`|~@Y?vp9eo{y zxBx!${K472h{>I?fk5YPk2)|EQ;dPG?sJ4vuz+I15MZJn@Y^teI+z&HH^8HQQr5J8 zlCn}@a(y=d>`^aE?-F;nM_tfQVMDi!LMeX!HtKnd&7Vo3tW^r{YIy$uSlk56lr75; zLZXaHU<+h8P;LSOstbs3nFK3iiJxKe)61ZTUfze_!j!56bqv zJwLeCKlcBz|BwBD>^~F2;4=MV{~!DR*#9Zm?*YJ%_TTyT%>EDL2SGoaAH+7s^8+7a ijOPc*{6G1@U#owwcTM^apa@6+0000c0004VQb$4nuFf3k0000mP)t-sn9!gQ5D+0I zCNMZKO%g^JTxL*MP~aeFF@uqyNVv$*Xh1-yaLCxz)!tZm$oTm9cxIo70005NNklft00000NkvXXu0mjf DPCWM- delta 616 zcmV-u0+;>51oZ@v7=Hu<00013M{Ml?0004VQb$4nuFf3k00004XF*Lt006O%3;baP z0000mP)t-sn9!g|5MU4(7+847FeoTcSWrMfs4zG%$k1q@NVpiFFc1(B;2>!D`1o+h z*todB;~-#900009a7bBm000id000id0mpBsWB>pG&PhZ;RDVdv?bNYK!$24Z@X*B} zi`g9{5PX1O1;LkSIU-dM5ds~gNVpzY!Aa~Z1bl*mQUs}ZT`IU`m4cENP{<&NLx*_z z?yjb}OA3zSH)Q#K{O`NFB*uTKWo1>`t=U%KvMM9CgOGFElt2~pH<)@2K=xf?jWEwxbNdl(yV9T%2HN9tpR$ zjXZb;kdZY#nC?fSm_TBU{4TyC%4^Jo26Sdr-VcqeBIvsHboO(FbnJ*BBsljwd0?22 zMUbWoz@W|&V9;g2;3JzO4lo0sLqk&n5C+oU0V==&1A979G36q_AGWQXQUaU3oU{T^ zjM%dr^kH!Jagd${@NL59EW(1TQp$Pb2dKvI4Ht`3_FunoDFQyXRi)hXO0000Px#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_cqkYk7#Qg2KrkpMSWrmts4zG%FsP`g z=x`t)aHtRv5a2Kn`1ts6$k@2Jz%9BSg#Z8m32;bRa{vGi!vFvd!vV){sAK>D0z^qf zK~zY`z0|*J+dvct@QWaeZ@O-U4nbf7%~XV)zo7qs;gG>;Gl-~Dmw9^IERzrE2BX7ec$(-zBdfRfvF!w@1$^^y%@fZ@t&z4MH-OaMSR{E zfmi{&Lo)s$8eoU9FOkmh`s752bDUPe1IAbZ9KY8D7Fz>((O&YaUjyAEmS^PP`+MhP zR2hJA1zbBd(8c&D&+w5fw+`fh0wAOgb8G@CdROOB`cN zT-OZL2sb0T%=ds}OoAMIFakhji|PRknZ=asD-p~XGjB6H-Ip`yO#T+l6CgR20W)@G z{=OO^GbEUA>jRhtS-@HVunw$)`K$$WmYro5&|AQkP3ub1By9toCD0()B05Pb2~^9b z4PwV}oGc~Lp!q^AY>S@{<3wCg{n8pC))dq3QxOXxQXu~{n}>k%o75JRwk$#Bv~|^# dDY(M|;4eyci5tKCI0gU!002ovPDHLkV1hbDMArZS diff --git a/graphics/pokemon/toucannon/normal.pal b/graphics/pokemon/toucannon/normal.pal index eeb9ee6b64..d2ba6f1226 100644 --- a/graphics/pokemon/toucannon/normal.pal +++ b/graphics/pokemon/toucannon/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -120 40 24 -32 24 24 -232 232 64 -48 40 40 -88 80 72 -240 168 48 -56 48 48 -168 168 168 -232 112 32 -32 112 168 16 16 16 +32 24 24 +56 48 48 +120 40 24 +37 76 103 +88 80 72 224 48 16 -248 248 248 +32 112 168 +232 112 32 +168 168 168 +240 168 48 112 200 216 -184 184 192 +213 213 222 +232 232 64 +248 248 248 diff --git a/graphics/pokemon/toucannon/shiny.pal b/graphics/pokemon/toucannon/shiny.pal index 44b47e16b3..e60414432f 100644 --- a/graphics/pokemon/toucannon/shiny.pal +++ b/graphics/pokemon/toucannon/shiny.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -72 16 96 -16 24 24 -88 120 200 -48 40 40 -80 88 80 -64 64 168 -48 56 48 -200 208 104 -160 72 184 -24 160 48 16 16 16 +33 38 38 +48 56 48 +77 18 70 +24 92 102 +80 88 80 224 32 104 -248 248 248 +49 131 145 +160 72 184 +200 208 104 +64 64 168 112 200 216 -184 184 192 +213 213 222 +88 120 200 +248 248 248 diff --git a/graphics/pokemon/trumbeak/anim_front.png b/graphics/pokemon/trumbeak/anim_front.png new file mode 100644 index 0000000000000000000000000000000000000000..9bb3a97840b5aedaecf6e8e6dc96aad3cedcacbf GIT binary patch literal 881 zcmV-%1CIQOP)Px#Fi=cXMVQc_C?FtUSWplU5I{IM%*@Pqcz~#=sQCE!SisDwh9~}q2po6RkpkTEsNn-Nxlg~#BYFV4oD;AY@~B6!7xJi&!CnXCadD#H4~{aB z2GcZCOr;8L{e+%Xz@nd~lo)1S0>qRc!4i@HxE`h?*4IjaC;%*SgMM9KK!gThwQ2bL z;#gDF+ZG_KIcEh(SkDpdxhw?Adb9)d{AJKND{@u+*{5B z=m;TFnwK|K*4TDJkfV8dU&{D2jRra%*> z(Bc<;G_|&UU?`1|2+qe-NyeyG0?W9sp|Q1UaPB;D5!-re%|Vlw^vx3}Nzhpakhyp= z7_?Enxg*fK3&0GK;%&g<1(e*~fTnj&p-$bKK-GB?0N%jM8@&m@o8&aE908yYMgr-V zh4#?<%_o6>jB}v;SwX)j4f;WI3Inv|1GLYeh2-Jig`CK6>l~Cc@SgsOC!YBC=%kr6Gy%r6TR$OC@T#~{F80lq?oLg7q8KoUcH}sL96}=?}z#~nbyhe zyOpGxNNV7Sq+Z#|8eTkH>LDp0mKR#?&Ra21`2K#}OV=;|)j;V1hUNfbpxgt@cl1h_ z?*IzHuUCS!rPAK*&p9~w2QI+lAAA8G|KRZt9{=F+4}OV1$W|a8cYQ>C00000NkvXX Hu0mjfH~ORZ literal 0 HcmV?d00001 diff --git a/graphics/pokemon/trumbeak/back.png b/graphics/pokemon/trumbeak/back.png index 552c32d26068375b7adcf47d4aaec105e3efb737..a9dc99ea25b3bbd1762a00acd594f3778ed5289e 100644 GIT binary patch delta 572 zcmV-C0>l061l$CW7#0Wv0001;w}I>c0004VQb$4nuFf3kkv@PPT!c>3xBh8?)Fprr@tUE+C8GdlTouj|#CVbDg;NAEpCzE| z0u@+-l^AOtzyPLyMvMqb>;P6`Krn)KK%%395hPP_UYJN5*B1J<7!YjST!fvN=h+Qd z-0~(EG2d=Czd&UXs=%yy5!@qyM(A9sAmtT6Q$z$7FLMDQ&^piT9sog`0nIN9tt%}) zKnd7qz=k4u1IP;~u^aNL1MY62Z(|2memq8msR|0HAi$u1(6_LF=Enp|bu(BG_fa9o zEgwQyf@F<|ZXw5*N;nOUW5l)O z7ld5zMA-&^!S;|pFJ~~c+h9LZ900UDc6rcK-6H_%N8p&3vG6t!2OxqdzvSNwK(^{Y zdMU$mo*e)ZY_~8RC!plD0mVr~K~zY`-ITFT!!Qtr6M5@Yhk#gf$y%w6y#W$&t_vNZZ^9!0 zQs1HrOIs#3vLU7l1_V<@-vyuD1#)g?xFNECbf5k^U+#DG-$Kd`paj|93kZNrb^ri! ze~k`8LkA&D2O)4D5!*3nG?IvZKwoOal8B6N(EtG;gA&^01V9p!5W1FWZL=YXNJzli zUxb&CP#|g(1Y*i#?T2yB5eg~nRjdLFctX_tb7yAb>lGYtaLT4JysPebOc$Pt5o&++t<&yP$++lphQ*c!rQZk=gkIH0eo06TYRfg>IyGA@r-~dW5K=x_@d15_H4+AEE98e@sKyC$UC(s6f zZkSVhPM{6A3FP3M%K=eR*vQf_P#Ovy24dS6I**{F%f60000Px#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_C?FtUSWplU5I{IMz`($Gcz~#=sQCE! zSisD0lrB@ zK~zY`<&-f_!!Q_y9i>yI#${rQlL;}Tb%rvM{D@8&I(1-S3I{+9D}q)YdH}dVrFQGq zj0g#dF!cy!&KaqL@Fuia5bWwJ3_U5EFEi&Zh)M24GnhE6zva2DxUdELZZ` zrI>AY8|3gd==q!Sc0Oib^*gBR9T+fQ?>lArzNt5;w{Jmfot)0fk6~B##qt>4Ps3~7 zIuoUsQ0BFf?$W-PO&?WnX>)66|4wALsuI0M1KXdDr@1bk-`EP<&+=>sG>+8vbGbC& z@#F{q&A@e@gQq`^=2k@~05YFkF#>4&h%pG7hiYHeCxAFcYQdF7zya&6CITs=Iw4(9 z%kYnhpc5GZ8xk7~{}}m>kaRmHAPq@tYXX#-hQ9%nXabahAp<}vzi!;1Ri#z6g>Uqx z(`YLPRaF&ck+ec-vgO Date: Sun, 29 Oct 2023 16:30:56 -0300 Subject: [PATCH 36/36] Added missing Alcremie forms (#3469) * Alcremie form sprites Co-authored-by: Blackforest92 # Conflicts: # graphics/pokemon/alcremie/lemon_cream/front.png # graphics/pokemon/alcremie/matcha_cream/back.png # graphics/pokemon/alcremie/matcha_cream/front.png # graphics/pokemon/alcremie/mint_cream/front.png # graphics/pokemon/alcremie/ruby_cream/front.png # graphics/pokemon/alcremie/salted_cream/front.png # include/graphics.h # src/data/graphics/pokemon.h # src/data/pokemon/species_info.h # src/data/pokemon_graphics/back_pic_coordinates.h # src/data/pokemon_graphics/back_pic_table.h # src/data/pokemon_graphics/footprint_table.h # src/data/pokemon_graphics/front_pic_anims.h # src/data/pokemon_graphics/front_pic_coordinates.h # src/data/pokemon_graphics/front_pic_table.h # src/data/pokemon_graphics/palette_table.h # src/data/pokemon_graphics/shiny_palette_table.h # src/pokemon.c * Fixed cries * Removed Todos * Temp: all forms use the same icon * Grouped form data + Fixed missing Level up and Teachable learnsets * Added missing data for form changes and back animations * Grouped defines together * Fixed compile --------- Co-authored-by: Alex --- .../alcremie/berry/Berry_Caramel_Swirl.pal | 19 ++ .../pokemon/alcremie/berry/Berry_Default.pal | 19 ++ .../alcremie/berry/Berry_Lemon_Cream.pal | 19 ++ .../alcremie/berry/Berry_Matcha_Cream.pal | 19 ++ .../alcremie/berry/Berry_Mint_Cream.pal | 19 ++ .../alcremie/berry/Berry_Rainbow_Swirl.pal | 19 ++ .../alcremie/berry/Berry_Ruby_Cream.pal | 19 ++ .../alcremie/berry/Berry_Ruby_Swirl.pal | 19 ++ .../alcremie/berry/Berry_Salted_Cream.pal | 19 ++ .../shiny.pal => berry/Berry_Shiny.pal} | 24 +- graphics/pokemon/alcremie/berry/back.png | Bin 0 -> 651 bytes graphics/pokemon/alcremie/berry/front.png | Bin 0 -> 717 bytes .../alcremie/clover/Clover_Caramel_Swirl.pal | 19 ++ .../alcremie/clover/Clover_Default.pal | 19 ++ .../alcremie/clover/Clover_Lemon_Cream.pal | 19 ++ .../alcremie/clover/Clover_Matcha_Cream.pal | 19 ++ .../alcremie/clover/Clover_Mint_Cream.pal | 19 ++ .../alcremie/clover/Clover_Rainbow_Swirl.pal | 19 ++ .../alcremie/clover/Clover_Ruby_Cream.pal | 19 ++ .../alcremie/clover/Clover_Ruby_Swirl.pal | 19 ++ .../alcremie/clover/Clover_Salted_Cream.pal | 19 ++ .../shiny.pal => clover/Clover_Shiny.pal} | 22 +- graphics/pokemon/alcremie/clover/back.png | Bin 0 -> 655 bytes graphics/pokemon/alcremie/clover/front.png | Bin 0 -> 724 bytes .../alcremie/flower/Flower_Caramel_Swirl.pal | 19 ++ .../alcremie/flower/Flower_Default.pal | 19 ++ .../alcremie/flower/Flower_Lemon_Cream.pal | 19 ++ .../alcremie/flower/Flower_Matcha_Cream.pal | 19 ++ .../alcremie/flower/Flower_Mint_Cream.pal | 19 ++ .../alcremie/flower/Flower_Rainbow_Swirl.pal | 19 ++ .../alcremie/flower/Flower_Ruby_Cream.pal | 19 ++ .../alcremie/flower/Flower_Ruby_Swirl.pal | 19 ++ .../alcremie/flower/Flower_Salted_Cream.pal | 19 ++ .../shiny.pal => flower/Flower_Shiny.pal} | 22 +- graphics/pokemon/alcremie/flower/back.png | Bin 0 -> 652 bytes graphics/pokemon/alcremie/flower/front.png | Bin 0 -> 721 bytes .../pokemon/alcremie/lemon_cream/back.png | Bin 688 -> 0 bytes .../pokemon/alcremie/lemon_cream/front.png | Bin 738 -> 0 bytes .../pokemon/alcremie/lemon_cream/shiny.pal | 19 -- .../alcremie/love/Love_Caramel_Swirl.pal | 19 ++ .../pokemon/alcremie/love/Love_Default.pal | 19 ++ .../alcremie/love/Love_Lemon_Cream.pal | 19 ++ .../alcremie/love/Love_Matcha_Cream.pal | 19 ++ .../pokemon/alcremie/love/Love_Mint_Cream.pal | 19 ++ .../alcremie/love/Love_Rainbow_Swirl.pal | 19 ++ .../pokemon/alcremie/love/Love_Ruby_Cream.pal | 19 ++ .../pokemon/alcremie/love/Love_Ruby_Swirl.pal | 19 ++ .../alcremie/love/Love_Salted_Cream.pal | 19 ++ graphics/pokemon/alcremie/love/Love_Shiny.pal | 19 ++ graphics/pokemon/alcremie/love/back.png | Bin 0 -> 651 bytes graphics/pokemon/alcremie/love/front.png | Bin 0 -> 723 bytes .../pokemon/alcremie/matcha_cream/back.png | Bin 679 -> 0 bytes .../pokemon/alcremie/matcha_cream/front.png | Bin 738 -> 0 bytes graphics/pokemon/alcremie/mint_cream/back.png | Bin 688 -> 0 bytes .../pokemon/alcremie/mint_cream/front.png | Bin 739 -> 0 bytes .../alcremie/ribbon/Ribbon_Caramel_Swirl.pal | 19 ++ .../alcremie/ribbon/Ribbon_Default.pal | 19 ++ .../alcremie/ribbon/Ribbon_Lemon_Cream.pal | 19 ++ .../alcremie/ribbon/Ribbon_Matcha_Cream.pal | 19 ++ .../alcremie/ribbon/Ribbon_Mint_Cream.pal | 19 ++ .../alcremie/ribbon/Ribbon_Rainbow_Swirl.pal | 19 ++ .../alcremie/ribbon/Ribbon_Ruby_Cream.pal | 19 ++ .../alcremie/ribbon/Ribbon_Ruby_Swirl.pal | 19 ++ .../alcremie/ribbon/Ribbon_Salted_Cream.pal | 19 ++ .../pokemon/alcremie/ribbon/Ribbon_Shiny.pal | 19 ++ graphics/pokemon/alcremie/ribbon/back.png | Bin 0 -> 650 bytes graphics/pokemon/alcremie/ribbon/front.png | Bin 0 -> 724 bytes graphics/pokemon/alcremie/ruby_cream/back.png | Bin 693 -> 0 bytes .../pokemon/alcremie/ruby_cream/front.png | Bin 742 -> 0 bytes graphics/pokemon/alcremie/ruby_swirl/back.png | Bin 691 -> 0 bytes .../pokemon/alcremie/ruby_swirl/front.png | Bin 753 -> 0 bytes .../pokemon/alcremie/salted_cream/back.png | Bin 688 -> 0 bytes .../pokemon/alcremie/salted_cream/front.png | Bin 737 -> 0 bytes .../pokemon/alcremie/salted_cream/shiny.pal | 19 -- .../alcremie/star/Star_Caramel_Swirl.pal | 19 ++ .../pokemon/alcremie/star/Star_Default.pal | 19 ++ .../alcremie/star/Star_Lemon_Cream.pal | 19 ++ .../alcremie/star/Star_Matcha_Cream.pal | 19 ++ .../pokemon/alcremie/star/Star_Mint_Cream.pal | 19 ++ .../alcremie/star/Star_Rainbow_Swirl.pal | 19 ++ .../pokemon/alcremie/star/Star_Ruby_Cream.pal | 19 ++ .../pokemon/alcremie/star/Star_Ruby_Swirl.pal | 19 ++ .../alcremie/star/Star_Salted_Cream.pal | 19 ++ graphics/pokemon/alcremie/star/Star_Shiny.pal | 19 ++ graphics/pokemon/alcremie/star/back.png | Bin 0 -> 650 bytes graphics/pokemon/alcremie/star/front.png | Bin 0 -> 732 bytes .../Strawberry_Caramel_Swirl.pal} | 20 +- .../strawberry/Strawberry_Default.pal | 19 ++ .../Strawberry_Lemon_Cream.pal} | 20 +- .../Strawberry_Matcha_Cream.pal} | 18 +- .../Strawberry_Mint_Cream.pal} | 20 +- .../strawberry/Strawberry_Rainbow_Swirl.pal | 19 ++ .../Strawberry_Ruby_Cream.pal} | 22 +- .../Strawberry_Ruby_Swirl.pal} | 20 +- .../strawberry/Strawberry_Salted_Cream.pal | 19 ++ .../Strawberry_Shiny.pal} | 20 +- graphics/pokemon/alcremie/strawberry/back.png | Bin 0 -> 651 bytes .../pokemon/alcremie/strawberry/front.png | Bin 0 -> 723 bytes include/constants/species.h | 207 ++++++++-------- include/graphics.h | 140 +++++++---- sound/cry_tables.inc | 220 ++++++++++++++++++ src/data/graphics/pokemon.h | 142 +++++++---- src/data/pokemon/form_change_table_pointers.h | 64 ++++- .../pokemon/form_species_table_pointers.h | 71 +++++- src/data/pokemon/form_species_tables.h | 55 +++++ src/data/pokemon/level_up_learnset_pointers.h | 71 +++++- src/data/pokemon/species_info.h | 116 ++++++--- .../pokemon/teachable_learnset_pointers.h | 71 +++++- .../pokemon_graphics/back_pic_coordinates.h | 71 +++++- src/data/pokemon_graphics/back_pic_table.h | 73 +++++- src/data/pokemon_graphics/footprint_table.h | 62 +++++ src/data/pokemon_graphics/front_pic_anims.h | 70 +++++- .../pokemon_graphics/front_pic_coordinates.h | 70 +++++- src/data/pokemon_graphics/front_pic_table.h | 73 +++++- src/data/pokemon_graphics/palette_table.h | 73 +++++- .../pokemon_graphics/shiny_palette_table.h | 73 +++++- src/data/text/species_names.h | 71 +++++- src/pokemon.c | 141 +++++++++-- src/pokemon_animation.c | 70 +++++- src/pokemon_icon.c | 142 +++++++++-- src/pokemon_jump.c | 54 +++++ 121 files changed, 3084 insertions(+), 502 deletions(-) create mode 100644 graphics/pokemon/alcremie/berry/Berry_Caramel_Swirl.pal create mode 100644 graphics/pokemon/alcremie/berry/Berry_Default.pal create mode 100644 graphics/pokemon/alcremie/berry/Berry_Lemon_Cream.pal create mode 100644 graphics/pokemon/alcremie/berry/Berry_Matcha_Cream.pal create mode 100644 graphics/pokemon/alcremie/berry/Berry_Mint_Cream.pal create mode 100644 graphics/pokemon/alcremie/berry/Berry_Rainbow_Swirl.pal create mode 100644 graphics/pokemon/alcremie/berry/Berry_Ruby_Cream.pal create mode 100644 graphics/pokemon/alcremie/berry/Berry_Ruby_Swirl.pal create mode 100644 graphics/pokemon/alcremie/berry/Berry_Salted_Cream.pal rename graphics/pokemon/alcremie/{mint_cream/shiny.pal => berry/Berry_Shiny.pal} (66%) create mode 100644 graphics/pokemon/alcremie/berry/back.png create mode 100644 graphics/pokemon/alcremie/berry/front.png create mode 100644 graphics/pokemon/alcremie/clover/Clover_Caramel_Swirl.pal create mode 100644 graphics/pokemon/alcremie/clover/Clover_Default.pal create mode 100644 graphics/pokemon/alcremie/clover/Clover_Lemon_Cream.pal create mode 100644 graphics/pokemon/alcremie/clover/Clover_Matcha_Cream.pal create mode 100644 graphics/pokemon/alcremie/clover/Clover_Mint_Cream.pal create mode 100644 graphics/pokemon/alcremie/clover/Clover_Rainbow_Swirl.pal create mode 100644 graphics/pokemon/alcremie/clover/Clover_Ruby_Cream.pal create mode 100644 graphics/pokemon/alcremie/clover/Clover_Ruby_Swirl.pal create mode 100644 graphics/pokemon/alcremie/clover/Clover_Salted_Cream.pal rename graphics/pokemon/alcremie/{matcha_cream/shiny.pal => clover/Clover_Shiny.pal} (65%) create mode 100644 graphics/pokemon/alcremie/clover/back.png create mode 100644 graphics/pokemon/alcremie/clover/front.png create mode 100644 graphics/pokemon/alcremie/flower/Flower_Caramel_Swirl.pal create mode 100644 graphics/pokemon/alcremie/flower/Flower_Default.pal create mode 100644 graphics/pokemon/alcremie/flower/Flower_Lemon_Cream.pal create mode 100644 graphics/pokemon/alcremie/flower/Flower_Matcha_Cream.pal create mode 100644 graphics/pokemon/alcremie/flower/Flower_Mint_Cream.pal create mode 100644 graphics/pokemon/alcremie/flower/Flower_Rainbow_Swirl.pal create mode 100644 graphics/pokemon/alcremie/flower/Flower_Ruby_Cream.pal create mode 100644 graphics/pokemon/alcremie/flower/Flower_Ruby_Swirl.pal create mode 100644 graphics/pokemon/alcremie/flower/Flower_Salted_Cream.pal rename graphics/pokemon/alcremie/{ruby_swirl/shiny.pal => flower/Flower_Shiny.pal} (65%) create mode 100644 graphics/pokemon/alcremie/flower/back.png create mode 100644 graphics/pokemon/alcremie/flower/front.png delete mode 100644 graphics/pokemon/alcremie/lemon_cream/back.png delete mode 100644 graphics/pokemon/alcremie/lemon_cream/front.png delete mode 100644 graphics/pokemon/alcremie/lemon_cream/shiny.pal create mode 100644 graphics/pokemon/alcremie/love/Love_Caramel_Swirl.pal create mode 100644 graphics/pokemon/alcremie/love/Love_Default.pal create mode 100644 graphics/pokemon/alcremie/love/Love_Lemon_Cream.pal create mode 100644 graphics/pokemon/alcremie/love/Love_Matcha_Cream.pal create mode 100644 graphics/pokemon/alcremie/love/Love_Mint_Cream.pal create mode 100644 graphics/pokemon/alcremie/love/Love_Rainbow_Swirl.pal create mode 100644 graphics/pokemon/alcremie/love/Love_Ruby_Cream.pal create mode 100644 graphics/pokemon/alcremie/love/Love_Ruby_Swirl.pal create mode 100644 graphics/pokemon/alcremie/love/Love_Salted_Cream.pal create mode 100644 graphics/pokemon/alcremie/love/Love_Shiny.pal create mode 100644 graphics/pokemon/alcremie/love/back.png create mode 100644 graphics/pokemon/alcremie/love/front.png delete mode 100644 graphics/pokemon/alcremie/matcha_cream/back.png delete mode 100644 graphics/pokemon/alcremie/matcha_cream/front.png delete mode 100644 graphics/pokemon/alcremie/mint_cream/back.png delete mode 100644 graphics/pokemon/alcremie/mint_cream/front.png create mode 100644 graphics/pokemon/alcremie/ribbon/Ribbon_Caramel_Swirl.pal create mode 100644 graphics/pokemon/alcremie/ribbon/Ribbon_Default.pal create mode 100644 graphics/pokemon/alcremie/ribbon/Ribbon_Lemon_Cream.pal create mode 100644 graphics/pokemon/alcremie/ribbon/Ribbon_Matcha_Cream.pal create mode 100644 graphics/pokemon/alcremie/ribbon/Ribbon_Mint_Cream.pal create mode 100644 graphics/pokemon/alcremie/ribbon/Ribbon_Rainbow_Swirl.pal create mode 100644 graphics/pokemon/alcremie/ribbon/Ribbon_Ruby_Cream.pal create mode 100644 graphics/pokemon/alcremie/ribbon/Ribbon_Ruby_Swirl.pal create mode 100644 graphics/pokemon/alcremie/ribbon/Ribbon_Salted_Cream.pal create mode 100644 graphics/pokemon/alcremie/ribbon/Ribbon_Shiny.pal create mode 100644 graphics/pokemon/alcremie/ribbon/back.png create mode 100644 graphics/pokemon/alcremie/ribbon/front.png delete mode 100644 graphics/pokemon/alcremie/ruby_cream/back.png delete mode 100644 graphics/pokemon/alcremie/ruby_cream/front.png delete mode 100644 graphics/pokemon/alcremie/ruby_swirl/back.png delete mode 100644 graphics/pokemon/alcremie/ruby_swirl/front.png delete mode 100644 graphics/pokemon/alcremie/salted_cream/back.png delete mode 100644 graphics/pokemon/alcremie/salted_cream/front.png delete mode 100644 graphics/pokemon/alcremie/salted_cream/shiny.pal create mode 100644 graphics/pokemon/alcremie/star/Star_Caramel_Swirl.pal create mode 100644 graphics/pokemon/alcremie/star/Star_Default.pal create mode 100644 graphics/pokemon/alcremie/star/Star_Lemon_Cream.pal create mode 100644 graphics/pokemon/alcremie/star/Star_Matcha_Cream.pal create mode 100644 graphics/pokemon/alcremie/star/Star_Mint_Cream.pal create mode 100644 graphics/pokemon/alcremie/star/Star_Rainbow_Swirl.pal create mode 100644 graphics/pokemon/alcremie/star/Star_Ruby_Cream.pal create mode 100644 graphics/pokemon/alcremie/star/Star_Ruby_Swirl.pal create mode 100644 graphics/pokemon/alcremie/star/Star_Salted_Cream.pal create mode 100644 graphics/pokemon/alcremie/star/Star_Shiny.pal create mode 100644 graphics/pokemon/alcremie/star/back.png create mode 100644 graphics/pokemon/alcremie/star/front.png rename graphics/pokemon/alcremie/{salted_cream/normal.pal => strawberry/Strawberry_Caramel_Swirl.pal} (58%) create mode 100644 graphics/pokemon/alcremie/strawberry/Strawberry_Default.pal rename graphics/pokemon/alcremie/{lemon_cream/normal.pal => strawberry/Strawberry_Lemon_Cream.pal} (75%) rename graphics/pokemon/alcremie/{matcha_cream/normal.pal => strawberry/Strawberry_Matcha_Cream.pal} (75%) rename graphics/pokemon/alcremie/{mint_cream/normal.pal => strawberry/Strawberry_Mint_Cream.pal} (75%) create mode 100644 graphics/pokemon/alcremie/strawberry/Strawberry_Rainbow_Swirl.pal rename graphics/pokemon/alcremie/{ruby_cream/normal.pal => strawberry/Strawberry_Ruby_Cream.pal} (57%) rename graphics/pokemon/alcremie/{ruby_swirl/normal.pal => strawberry/Strawberry_Ruby_Swirl.pal} (75%) create mode 100644 graphics/pokemon/alcremie/strawberry/Strawberry_Salted_Cream.pal rename graphics/pokemon/alcremie/{ruby_cream/shiny.pal => strawberry/Strawberry_Shiny.pal} (87%) create mode 100644 graphics/pokemon/alcremie/strawberry/back.png create mode 100644 graphics/pokemon/alcremie/strawberry/front.png diff --git a/graphics/pokemon/alcremie/berry/Berry_Caramel_Swirl.pal b/graphics/pokemon/alcremie/berry/Berry_Caramel_Swirl.pal new file mode 100644 index 0000000000..5a19b7c4c7 --- /dev/null +++ b/graphics/pokemon/alcremie/berry/Berry_Caramel_Swirl.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 232 184 +200 168 120 +232 168 96 +144 112 72 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +0 120 200 +0 80 144 +0 40 104 +0 0 0 diff --git a/graphics/pokemon/alcremie/berry/Berry_Default.pal b/graphics/pokemon/alcremie/berry/Berry_Default.pal new file mode 100644 index 0000000000..118df4edd1 --- /dev/null +++ b/graphics/pokemon/alcremie/berry/Berry_Default.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 224 208 +208 160 168 +240 136 144 +128 80 88 +248 224 200 +208 128 136 +248 224 200 +208 160 168 +248 224 200 +208 160 168 +0 120 200 +0 80 144 +0 40 104 +0 0 0 diff --git a/graphics/pokemon/alcremie/berry/Berry_Lemon_Cream.pal b/graphics/pokemon/alcremie/berry/Berry_Lemon_Cream.pal new file mode 100644 index 0000000000..17fd451a87 --- /dev/null +++ b/graphics/pokemon/alcremie/berry/Berry_Lemon_Cream.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 248 152 +208 184 72 +232 224 0 +112 120 24 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +0 120 200 +0 80 144 +0 40 104 +0 0 0 diff --git a/graphics/pokemon/alcremie/berry/Berry_Matcha_Cream.pal b/graphics/pokemon/alcremie/berry/Berry_Matcha_Cream.pal new file mode 100644 index 0000000000..edb69b6883 --- /dev/null +++ b/graphics/pokemon/alcremie/berry/Berry_Matcha_Cream.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +232 248 208 +176 208 152 +192 224 96 +104 128 80 +232 248 200 +176 208 152 +232 248 200 +176 208 152 +232 248 200 +176 208 152 +0 120 200 +0 80 144 +0 40 104 +0 0 0 diff --git a/graphics/pokemon/alcremie/berry/Berry_Mint_Cream.pal b/graphics/pokemon/alcremie/berry/Berry_Mint_Cream.pal new file mode 100644 index 0000000000..3a21681b21 --- /dev/null +++ b/graphics/pokemon/alcremie/berry/Berry_Mint_Cream.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +208 240 232 +152 168 176 +112 208 200 +72 112 128 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +0 120 200 +0 80 144 +0 40 104 +0 0 0 diff --git a/graphics/pokemon/alcremie/berry/Berry_Rainbow_Swirl.pal b/graphics/pokemon/alcremie/berry/Berry_Rainbow_Swirl.pal new file mode 100644 index 0000000000..37a0a40498 --- /dev/null +++ b/graphics/pokemon/alcremie/berry/Berry_Rainbow_Swirl.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 248 184 +208 192 120 +216 144 88 +120 88 64 +240 160 168 +208 128 136 +176 232 224 +128 160 168 +248 248 112 +216 192 40 +0 120 200 +0 80 144 +0 40 104 +0 0 0 diff --git a/graphics/pokemon/alcremie/berry/Berry_Ruby_Cream.pal b/graphics/pokemon/alcremie/berry/Berry_Ruby_Cream.pal new file mode 100644 index 0000000000..350cfeb22f --- /dev/null +++ b/graphics/pokemon/alcremie/berry/Berry_Ruby_Cream.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 208 208 +200 152 184 +232 112 192 +128 80 112 +248 208 208 +200 152 184 +248 208 208 +200 152 184 +248 208 208 +200 152 184 +0 120 200 +0 80 144 +0 40 104 +0 0 0 diff --git a/graphics/pokemon/alcremie/berry/Berry_Ruby_Swirl.pal b/graphics/pokemon/alcremie/berry/Berry_Ruby_Swirl.pal new file mode 100644 index 0000000000..e0c66e7fc1 --- /dev/null +++ b/graphics/pokemon/alcremie/berry/Berry_Ruby_Swirl.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 240 208 +208 184 160 +240 192 128 +128 96 80 +248 176 192 +224 120 128 +248 176 192 +224 120 128 +248 176 192 +224 120 128 +0 120 200 +0 80 144 +0 40 104 +0 0 0 diff --git a/graphics/pokemon/alcremie/berry/Berry_Salted_Cream.pal b/graphics/pokemon/alcremie/berry/Berry_Salted_Cream.pal new file mode 100644 index 0000000000..eca511097a --- /dev/null +++ b/graphics/pokemon/alcremie/berry/Berry_Salted_Cream.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +232 232 248 +176 176 184 +112 208 200 +88 88 96 +232 232 248 +176 176 184 +232 232 248 +176 176 184 +232 232 248 +176 176 184 +0 120 200 +0 80 144 +0 40 104 +0 0 0 diff --git a/graphics/pokemon/alcremie/mint_cream/shiny.pal b/graphics/pokemon/alcremie/berry/Berry_Shiny.pal similarity index 66% rename from graphics/pokemon/alcremie/mint_cream/shiny.pal rename to graphics/pokemon/alcremie/berry/Berry_Shiny.pal index f71c66c01e..1fb826a870 100644 --- a/graphics/pokemon/alcremie/mint_cream/shiny.pal +++ b/graphics/pokemon/alcremie/berry/Berry_Shiny.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 +216 216 216 +152 152 152 +128 128 128 +88 88 96 72 80 72 248 248 248 -88 88 96 -128 128 128 +168 176 176 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +0 120 200 +0 80 144 +0 40 104 16 16 16 -152 152 152 -136 32 56 -248 88 112 -192 48 72 -168 176 176 -168 176 176 -216 216 216 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/pokemon/alcremie/berry/back.png b/graphics/pokemon/alcremie/berry/back.png new file mode 100644 index 0000000000000000000000000000000000000000..a2236a94f48183c3d75df4570ba14e00014dd42a GIT binary patch literal 651 zcmV;60(AX}P)m%P>=v9Xb=z(mz1&|0006O zNkltq*t#4p8`GN1naXLdXq{d*d(NQ+>7_2C`qZHPG3k?_|m z#?Ea0a__BA1hd3dpguB;bawSVP`3uCk1s<84FJiffB^v21*iaE00iTl1I)eku>zD3 z0P)nDVFInB@Xm470U3(|5gNrAV;+kpf(5V{k3}CL#&Pf`f67SXI6cG3D9|EVl(&J5 zkO9XK(W|dPfE*&0-0VF-Y#oq*B`iv+@*(U4Y-*o&sGR6l1RkF;z1H7kIvN zfw3C_op8OTZ;mI~MZmWKHeG}OiehkYhF7NgjM5939>^L1(m}|m1MEo^`V4^OW7Prp zOT~+90E}5|T7V)vi0BxQ^R^3orkHT0+}pb65=;Zoa}`h7GIHl|kAJ61wg9qB3|80B z`L#S`OcY4Q2b*aDsIw+xN}m@SZ2!-V{(^y7K>(6`ljLj@>_k|qvOkb}Z04-*DdAO`pfwppISzpL} zTSECgmXMh9nFVt9J~4f)LZO8mhWxL;={N6;CR*;!J~;pY002ovPDHLkV1lWgE1>`Y literal 0 HcmV?d00001 diff --git a/graphics/pokemon/alcremie/berry/front.png b/graphics/pokemon/alcremie/berry/front.png new file mode 100644 index 0000000000000000000000000000000000000000..4bbc456c3eb1b798ccebbea99cdb69f76b295279 GIT binary patch literal 717 zcmV;;0y6!HP)m%P>=v9XaE2JRX3E%00075 zNklem}nV-lwN4mHt<*EQz%VIPPJ| z*Bcz#dq_CnHxQ?Ly?5YlYQlTqkqs8dryfvZwy+o=;28l+R1g6Ez|_O9K~i+L7_ek2 zL*0;;^>*&0z)=;Th!Be>TLN{0Q|!$1aazmeT?(`~!0aXuJp4Ml<}pqvsJFAYv-7~? z`&%yt$^|qRw^uqpf_7ulz!unMc70g@ctG4_3A+I==gWMUesh<_>6$Cf8Ouji_M6xP z8U$RQv2MYdwq`3yL|r(p*38MzKsk{@5~nT+XAQ_&Sin6do&yoM21bjod_HV@jNuq- zj)2MlN=bgvu2t}2T3vpCd}fXH1f+11d*Hq!rBW)hMOmZh`lvhD1lB5lF&c<38E4%U z0y?iF@uLBb)L`pEIoUOt0KXG8{hFeh>Ofx^fTQ#~ql*EsYU!mQV0dDz_mCP;J}3st zK|cYW_FsesVAKzi;sXO9J3P_*`{A(o0SSif5Q~Sh6BNC+wL8)o)vtIC4z00000NkvXXu0mjf#|=k5 literal 0 HcmV?d00001 diff --git a/graphics/pokemon/alcremie/clover/Clover_Caramel_Swirl.pal b/graphics/pokemon/alcremie/clover/Clover_Caramel_Swirl.pal new file mode 100644 index 0000000000..a8b5968386 --- /dev/null +++ b/graphics/pokemon/alcremie/clover/Clover_Caramel_Swirl.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 232 184 +200 168 120 +232 168 96 +144 112 72 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +136 216 64 +24 144 36 +24 80 36 +0 0 0 diff --git a/graphics/pokemon/alcremie/clover/Clover_Default.pal b/graphics/pokemon/alcremie/clover/Clover_Default.pal new file mode 100644 index 0000000000..17fe8cc6b4 --- /dev/null +++ b/graphics/pokemon/alcremie/clover/Clover_Default.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 224 208 +208 160 168 +240 136 144 +128 80 88 +248 224 200 +208 128 136 +248 224 200 +208 160 168 +248 224 200 +208 160 168 +136 216 64 +24 144 36 +24 80 36 +0 0 0 diff --git a/graphics/pokemon/alcremie/clover/Clover_Lemon_Cream.pal b/graphics/pokemon/alcremie/clover/Clover_Lemon_Cream.pal new file mode 100644 index 0000000000..bd199e2bc4 --- /dev/null +++ b/graphics/pokemon/alcremie/clover/Clover_Lemon_Cream.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 248 152 +208 184 72 +232 224 0 +112 120 24 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +136 216 64 +24 144 36 +24 80 36 +0 0 0 diff --git a/graphics/pokemon/alcremie/clover/Clover_Matcha_Cream.pal b/graphics/pokemon/alcremie/clover/Clover_Matcha_Cream.pal new file mode 100644 index 0000000000..0f4f393f43 --- /dev/null +++ b/graphics/pokemon/alcremie/clover/Clover_Matcha_Cream.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +232 248 208 +176 208 152 +192 224 96 +104 128 80 +232 248 200 +176 208 152 +232 248 200 +176 208 152 +232 248 200 +176 208 152 +136 216 64 +24 144 36 +24 80 36 +0 0 0 diff --git a/graphics/pokemon/alcremie/clover/Clover_Mint_Cream.pal b/graphics/pokemon/alcremie/clover/Clover_Mint_Cream.pal new file mode 100644 index 0000000000..08b8f83461 --- /dev/null +++ b/graphics/pokemon/alcremie/clover/Clover_Mint_Cream.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +208 240 232 +152 168 176 +112 208 200 +72 112 128 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +136 216 64 +24 144 36 +24 80 36 +0 0 0 diff --git a/graphics/pokemon/alcremie/clover/Clover_Rainbow_Swirl.pal b/graphics/pokemon/alcremie/clover/Clover_Rainbow_Swirl.pal new file mode 100644 index 0000000000..4d6514f51e --- /dev/null +++ b/graphics/pokemon/alcremie/clover/Clover_Rainbow_Swirl.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 248 184 +208 192 120 +216 144 88 +120 88 64 +240 160 168 +208 128 136 +176 232 224 +128 160 168 +248 248 112 +216 192 40 +136 216 64 +24 144 36 +24 80 36 +0 0 0 diff --git a/graphics/pokemon/alcremie/clover/Clover_Ruby_Cream.pal b/graphics/pokemon/alcremie/clover/Clover_Ruby_Cream.pal new file mode 100644 index 0000000000..3243fea802 --- /dev/null +++ b/graphics/pokemon/alcremie/clover/Clover_Ruby_Cream.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 208 208 +200 152 184 +232 112 192 +128 80 112 +248 208 208 +200 152 184 +248 208 208 +200 152 184 +248 208 208 +200 152 184 +136 216 64 +24 144 36 +24 80 36 +0 0 0 diff --git a/graphics/pokemon/alcremie/clover/Clover_Ruby_Swirl.pal b/graphics/pokemon/alcremie/clover/Clover_Ruby_Swirl.pal new file mode 100644 index 0000000000..fd68b6c2cd --- /dev/null +++ b/graphics/pokemon/alcremie/clover/Clover_Ruby_Swirl.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 240 208 +208 184 160 +240 192 128 +128 96 80 +248 176 192 +224 120 128 +248 176 192 +224 120 128 +248 176 192 +224 120 128 +136 216 64 +24 144 36 +24 80 36 +0 0 0 diff --git a/graphics/pokemon/alcremie/clover/Clover_Salted_Cream.pal b/graphics/pokemon/alcremie/clover/Clover_Salted_Cream.pal new file mode 100644 index 0000000000..a5c5bc10fc --- /dev/null +++ b/graphics/pokemon/alcremie/clover/Clover_Salted_Cream.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +232 232 248 +176 176 184 +112 208 200 +88 88 96 +232 232 248 +176 176 184 +232 232 248 +176 176 184 +232 232 248 +176 176 184 +136 216 64 +24 144 36 +24 80 36 +0 0 0 diff --git a/graphics/pokemon/alcremie/matcha_cream/shiny.pal b/graphics/pokemon/alcremie/clover/Clover_Shiny.pal similarity index 65% rename from graphics/pokemon/alcremie/matcha_cream/shiny.pal rename to graphics/pokemon/alcremie/clover/Clover_Shiny.pal index eb171da47c..6329ca1ecd 100644 --- a/graphics/pokemon/alcremie/matcha_cream/shiny.pal +++ b/graphics/pokemon/alcremie/clover/Clover_Shiny.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 +216 216 216 +152 152 152 +128 128 128 +88 88 96 72 80 72 248 248 248 -88 88 96 -128 128 128 -16 16 16 -152 152 152 -216 216 216 -136 32 56 -248 88 112 -192 48 72 +168 176 176 248 248 248 168 176 176 -0 0 0 -0 0 0 -0 0 0 +248 248 248 +168 176 176 +136 216 64 +24 144 36 +24 80 36 +16 16 16 diff --git a/graphics/pokemon/alcremie/clover/back.png b/graphics/pokemon/alcremie/clover/back.png new file mode 100644 index 0000000000000000000000000000000000000000..8a8efe5677cd07659a87157e48a53fc0607c47c8 GIT binary patch literal 655 zcmV;A0&x9_P)v$b{#7JjL_ka55pWX3n_V1OqraGC_*Y7T=E~bcsj)YsU z7&|ih`QEAfAv46)gg(=Z>gek2gl-J5-oKeLXaI;mOc(%=9)g?zG(gBW=KxEm?n%H3 zLx5=R%-};?B6ObPx&u-cOhjlZN*QxlG!YDd!#FJZ2oW9!fBslTI*xG zXGTbYV~F77N&aO5Acug(I~Ncc2P9y{Z}V?sAnkls?B(bE2#9Qe{~U*mIvpfqXM+~9 zIRYDaRoFc|I|4f4dd<&lz_%mdTf-v&MbWr7!z+`0M&Sf>52OtMiLHA<2bfM3`V4^8 zGuZ+7OTyRb0Pt9(TYw_mhrvTYEZZsYnP9@Tw5Pn|0(1k=a~;juDzMk;4*yQ1XaQtd zI9Odx{cCZ^7)ub04>r>PP^V4Cgg!4e*#2Kz^$CT#GQfHBbuiuol~P-UrxVvy1f=w- z_jC9JsCIJ`GwjpN3kx_!Ad?4RNm-AtHy`(QkL@CB_k|qPLS1hx04)|-dAO`Zf-+^F zWqm5LyoB;cBp}wu3j<{KePa3|uk)`oW<`-70@!9(+!i;e>qIHx0Q9aXikrIDkl;{a p1o-f~D9M2q3N6GiK4Fp3)1tn3QXsVErCAqVJBI>`)maEIPA=Crxn0T(l0#24h8jVfsOg{ zy`KT)0=iC`EGj*mC(9XeumqObnI`i}f=GdQ`4F}P{5DxsfS|j}vSQ2?=j>5+%x2K_ zG6D_(FJP=+-5Sf*Y$b{42-nk^xfMWAPNa~;?MT9z1LX({xX;8xAOgqW*hvLw`M|Od zGk}kxMe)wt-+mwxaMrsb_xzRvatEU0VR@YwE|Z<#ZQ84hyb{@`(B0ImjME@|5TP;2;{+ez#UQ>P09X$u=rnrC527fn z?^0idc|vp*zA_y3kDIt>1x!GIVLdla>aB0E?YG*f1+}2!c#)o*?Pir|IIgo}xid zLbyO@t43H&MWNhLmPE-^x)(jb65#*Ce?L#h+3eq|AfsAO>e>A#s*h8|Nk_u3SBza) z{pRS^=Ym<{c0!*SMs;y}H=$bttj`~&3>pC9FB1j;qzh0JfB_JUa}Kcb>VX0*ApoL< zH^Us-lEOR3tOHUOPDE%bN*VK5G!ZO-hw)hS5h5H1fBjrW8pnALC!;`%cs+Yj`ZGcb z97BZbgZ@4NkVD8~FA!M=Bw)j}F3U3@?R+-ut=9TD0wNdSKA_Vb0w8hqAnX9!sY0Ituz96A z0Dp;ipALY4MWzKP!Y>hy0l8{VfzJdJX39OpBbQ(rfSy^jV4Kigt4I7hQL+V)Wn!?p zhWgj?lrdHy86Rw>1)xrwj0s&YHrW2(yZjppb!CB@=5{dN167{ya-2?FQxTBTRqxL+ zCm?S(H?fC(xqagRR|pj91gt3Q<-_*t(e1HY7VW-}L%z%(whn+6%c4AetVBU>%bjI? zB@10b`6H4Lo6DsI3io?rdaY}{r(;$Wc?@8igFfgz>L$r^=>g0E@5;We4J3Fdc?Qhk mk1ol9778uoFy#OGTRj0_A~QV21hz;30000K`ir literal 0 HcmV?d00001 diff --git a/graphics/pokemon/alcremie/flower/front.png b/graphics/pokemon/alcremie/flower/front.png new file mode 100644 index 0000000000000000000000000000000000000000..20c9af2f46ff7d25e657c26d72076f8a33276817 GIT binary patch literal 721 zcmV;?0xtcDP){kYTBYX4P`AyM0a(*a68 z*^7C%@PLx)2!jCvUL|0NIs(91RSmxhsc5GZSnb?q zHnimV?W*YS#LI<~0Vj>+BK}kih~w3+K%aQ9#P4Fjhqv)f3heXy@te31@e4?>LqQ*v z0cnXFF9FI0*kvVZ=kaGCZ7h+NS;k)qfLH->(;=)j@Xo5ZOyBOXBpY+hIV;(v>Dz8X zpiRK_8S58sjbUlFmPE9K<7&;EVh@xPDI{@Pl5p0Be1rkqW8wi2fn#v&qyRKLV9C2V zzg?map{Sz>vNGa}E0!Uv|FM1`Xvm7v0>R8ZyshMRTMNyOkObmE^-1Qj4 zHZ~jql>?NL{JPt$tor*%V-F*(t5$95nnu6E{axoT{=cf9SzZe4S2S_800000NkvXXu0mjf D{0mY) literal 0 HcmV?d00001 diff --git a/graphics/pokemon/alcremie/lemon_cream/back.png b/graphics/pokemon/alcremie/lemon_cream/back.png deleted file mode 100644 index d5a073b54b918a1f73ac28114ef8ecbd4de5db82..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 688 zcmV;h0#E&kP)Px#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_NKi=l`1n{@V1R&t5D*ZUn3#wlIQUp_ zz%WRtu&~(J*Z=?k000000000001;arsQ>@~32;bRa{vGi!vFvd!vV){sAK>D0trb( zK~zY`?Ub>O+CUJ7p`f>w1x0j6d0n)If+~*3tLQ3F)+Z&M(Prxuk(_&gD82_cB`yPT zvrn0sH8yMT`T?Shgpv3^{rk^&mdQU@(~v6g>fv!kbr+25NDS+Htq)e8?*{dm(3ZIO z=o6`_4)?!3x;4NuOP@glKwNta07w_WJb(lcS}6sv9@M7{u!I0eHapJ==i*{;j$sEx zI`>3qDv7iXd=V^w&E#Vd5*&wmJC>2g5sYONXb}hAj1Yms5P9GS$RXEpQGB@t66=5j zEL8dH$1MXF0GfdqG=!EOFnO{$`i-6w} z^d|5D6h-3R^j{gfWaNW@yZ})HK-vqLcYr-H$-o$QGaoA4Gl) z@O9e-K2uB>GIx-Vii2zbdWOkHFM2ESh(D){w*azQ^j25W`58ZFj2UpPdYfqh$f71= zO4m#Gw*S+~{6QhxTVUSY4y`W0-k6iY>BJco0TEsGOCK`=OuMh}7r zDeJ>=b+>cRIBn~8U&z61&2i-bXtAw}^UF#Z7+dZvvn8*~0*bE*hgd#rEztY7!t_;{ zmEWn&Jw?6-@R+CSTlIpvOpW0KfPAW|>Ltr0q}UX{0cP;AD#(Er3N3g)cAu WiV4pYsO)|K0000T3Sh+7+sq1NUwMKRQgxkWU(za&J@Fs`#VJJZR;min)fDs;Q{-s^%RXoT zI?kI&r@#YI1>ES3NQyRRoD0h=+inym8m1azSBQSK3n!IgMl@Z}FqTq;)fyDngc2Pt zh~{DnWeX>-jJ^j=u?>!uRDg2;BKffa_(snPcU~R@eE}_!?;E)Logi?o0No)1;SPaM z*et)WQwbn!D56*Z-0c$un)!#D@}2R2MqvUQ5Hkh0#ti-j9L9{{VM;;wr3%<<;-5-@ zZ_I?M5s@N|^7~Z++Gy}R=>cA(9?9JuwyrUp2A`8&zDUjvXqz9i;N%)$EHI_%KH z6&P;FfOV`Tu*1MS^NBIcUZp&;+`$~#sbge*rgl-J5KE0VTXaPt+PZ$7@9)p+wG(gP4Fa%h6^|=77 zI0i@--V6bB#bfUriyp{XG!db#BxlTH(MB);Hsi4vA|yDD@WoRZX&mD-tc)>Qq^H&0 zL`KLV#1PTj>q&qdB9^MX2S|(q60i={@4GRO_daWOvb!Dui4BD6W(@Q?2*%zyfM`cx z1FxKvb2|b$;d(8cX$5u!d~0|DpeP#m#=SBzWaM5z4?x}mkU1fv9xx}>=;HwE=b{Jj zm&LDh2bi-&cK}8B5l4>!zUsQbXNCz2VGrsd&TwN1OA-}-T}z6*jZgo z=QsS2F%`gB=xn9|pvl{e8GT;N+5Vqf`4xqxHo$rNb+B*%YALr8r;|2R1myIo4}Am# z$Zm5p)9ka&OA9zdpcDsSMOlxpHedGk8QW#q?F%``rM%i$09q`|>Tp?^0BOpeWpl>M zT?N&*ghQ&2mj)>9`^5BW*X(Yn&6*-V2Jo1B^^Fe*jZ1C+Kt=wGIFP002ovPDHLkV1frmFjN2l literal 0 HcmV?d00001 diff --git a/graphics/pokemon/alcremie/love/front.png b/graphics/pokemon/alcremie/love/front.png new file mode 100644 index 0000000000000000000000000000000000000000..36cef02d8b5af7848ed086c703872b36c436bf7b GIT binary patch literal 723 zcmV;^0xbQBP);DUh!6vr>`@lBlVV#?JDVxA9s*MGhe!^ayMgRU zD0tZ%wWm4cABckKwP~ez%_cr{2w_lki?rZ&_K z+uB*&*(q>bg{Xkoi554z0)67bqs3i*oy*1SH_+kGSVW)m!1e5k$Jn8u?sB%c&6l{I zeQ{%;TtIs{`;Z4j6uG2@C9uqL_VH^TaDh0<5X}}mjiUTAz4ji9(=k_^vw~fgy|xn* zXc2Hc#(McNt)^xxNkm=Pj@Hc1_dq$3LK3?!31=;hr&?Hn5SV+5)>;Oqhc`v!rZI4rM((|enM3@=#QVE~O~Oo4=x%giRu z!pXa~9m5>hio!#sUTgwZ7%Ii>rU25@)D7Rt$ut8@lsXc$BQU;KYnzW_w}|6>6#L}vg1002ovPDHLk FV1lP#S>pfz literal 0 HcmV?d00001 diff --git a/graphics/pokemon/alcremie/matcha_cream/back.png b/graphics/pokemon/alcremie/matcha_cream/back.png deleted file mode 100644 index 7a422730b9f0ff474dfe90dcb73caf21c67e1dce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 679 zcmV;Y0$BZtP)pUY?00009 za7bBm001r{001r{0eGc9b^rhX2XskIMF-~w2LT%cs0006CNklcx5O8gdqxZ8)y%o>|r z@RB~tF98zs>ED0GvmTB9J>5)5QLsMQFG#o1^*R#6^{v)BTc2(Q>tmrUaTlnMq$cg| zeg*2*0A=POgBF0K2^auST>uLJ5N7@Xsz2Vz|WBD6|l zt)ox`3t%(FwFoJWL%qG0k;V~S%P7zyiGmp+28AJtC=8H8p_8)wdgV@M zAntu;`h8Vx&Vkeg)bjw)*MVvM`q>3oI|3JY^TQjp8v&hgy;jrnN%j%&SAt$eA%LPt z+#COqu~SAq2*?ubSgW5B0PxV9N^2Y3;fP7 z;e@$^d{i7{3()r@UFn&(5|8+I#&`!HtA)3^lFrZhF=N7jYvpaG1t5>xj2T@o?QQ?Z zgZYhxd~1Pedpopp-cH6G3{EG>Nd&}n)lYql2{7H}X13Yg;++G`5oo&Wx1_B1`^D|X zJ>#%$x_u!Bvo`yM1E9saDUS~;V_>Y@S>|)zR3(&OQVxl{Ut7R?TVeXT%ByeG=9VI# z19;3+{k491Au(0>-r_nC1ltXzW~PYp)SdR778u6AM(HcrauVk6*oT?*+~EZ N002ovPDHLkV1lmBFv$P_ diff --git a/graphics/pokemon/alcremie/matcha_cream/front.png b/graphics/pokemon/alcremie/matcha_cream/front.png deleted file mode 100644 index 28225df1a016f10c75706825cb1bd34326a181b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 738 zcmV<80v-K{P)s0006-NklQrX-v}pc^c@UI0qh zTQ~v`2xT?=ML_^BnYf3KzE2hctGG2 zHp|!SQUVAYifJSO?v9B9&HU3%`Of&ir(ps+5Hkh0#ti-j9L9{{VM;;wr3%<<;$KRD zZ_I?M5s@OD=J%@vw9(*Y(hG#ZGUglsQv!@3{M1{n@x+Y!e2jdljrj!#4fFHB-H;Gt zOsR{uL@{zv4>1YMjjU`-f_91EqCZ1GO3TfWA7TiJgj8DPVxyP=_oV8sCS4UesJAu1 zRk3GusR5j2aZ(Vdd19O)6b6d>cA(9?9JuwyrUp2B`8&zDUjvXqz9i;N%*p!PI_%WL z6&P;FfOV`Tu+zZ2@QE?ZUZp&<+`*jLrDoJ0eVHF6DeFevmMw{T^Oqszzxh@E0TJib UN+6)1{{R3007*qoM6N<$f}mJOY5)KL diff --git a/graphics/pokemon/alcremie/mint_cream/back.png b/graphics/pokemon/alcremie/mint_cream/back.png deleted file mode 100644 index 481ce9c78cff8ecc5e29aa50f6b6a90d712c5c06..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 688 zcmV;h0#E&kP)Px#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_NKi=l`1n{@V1R&t5D*ZUn3#wlIQUp_ zz%WRtu&}7Gu-Mqx00000000000AHEecmMzZ32;bRa{vGi!vFvd!vV){sAK>D0trb( zK~zY`?Ub>O+CUJ7p`f>w1x0j6d0n)If+~*3tLQ3F)+Z&M(Prxuk(_&gD82_cB`yPT zvrn0sH8yMT`T?Shgpv3^{rk^&mdQU@(~v6g>fv!kbr+25NDS+Htq)e8?*{dm(3ZIO z=o6`_4)?!3x;4NuOP@glKwNta07w_WJb(lcS}6sv9@M7{u!I0eHapJ==i*{;j$sEx zI`>3qDv7iXd=V^w&E#Vd5*&wmJC>2g5sYONXb}hAj1Yms5P9GS$RXEpQGB@t66=5j zEL8dH$1MXF0GfdqG=!EOFnO{$`i-6w} z^d|5D6h-3R^j{gfWaNW@yZ})HK-vqLcYr-H$-o$QGaoA4Gl) z@O9e-K2uB>GIx-Vii2zbdWOkHFM2ESh(D){w*azQ^j25W`58ZFj2UpPdYfqh$f71= zO4m#Gw*S+~{6QhxTVUSY4y`W0-k6iY>BJco0TEsGOCK`=OuMh}7r zDeJ>=b+>cRIBn~8U&z61&2i-bXtAw}^UF#Z7+dZvvn8*~0*bE*hgd#rEztY7!t_;{ zmEWn&Jw?6-@R+CSTlIpvOpW0KfPAW|>Ltr0q}UX{0cP;AD#(Er3N3g)cAu WiV4pYsO)|K0000wi?jAs9_Smtl}jgF|nOM0nFccw;t%xG4!|5ajE1SByCxr|Pvfh2J>aVts4`BgZ{n}>t7GS@7e4(i8 zV7=cxbSw_rrve!9^)|Bt*;k%mg;ZT<*_X5mWKTRuKyeDuyOpW}bTtJ%#T0p(z_Je- zfR6Jf(kbvjQ~@`7Ba))c8Rx<>%eEWEiH50$*cGB*?ZQc=m=R4EG>oMbVYLRuHK9a@ z3!=H0LfOK}E2Hm0Q*47{B^BTtfJlC90KU<)!kw1~L0>?N{J2>8;U3v0C)RDfoA^UrhI4opHY~=2Edp<#X=xEm5; zj45@|mMF$9>LDh9xsjD^Nzg74T=ZuMNNKq_^1~EDA|aJlx!5RXz&)wDt4Ys=4(e?U za8>LXU1|VlS)3FEYMvNp2!(;-z8z>YF9&YDv8e%$Uj9xp?$-chkS~dO6LYXWw+=h> za0P}NGGHBR3G6U1&wOGGvsWpPEO#(RcB&cmM_=YgNy@rWw`EJB-uz`q`EP!ee*lfd V&=I7mS9bsa002ovPDHLkV1o64G{*n{ diff --git a/graphics/pokemon/alcremie/ribbon/Ribbon_Caramel_Swirl.pal b/graphics/pokemon/alcremie/ribbon/Ribbon_Caramel_Swirl.pal new file mode 100644 index 0000000000..c4fce2c7c6 --- /dev/null +++ b/graphics/pokemon/alcremie/ribbon/Ribbon_Caramel_Swirl.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 232 184 +200 168 120 +232 168 96 +144 112 72 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +176 136 176 +144 96 168 +112 72 136 +0 0 0 diff --git a/graphics/pokemon/alcremie/ribbon/Ribbon_Default.pal b/graphics/pokemon/alcremie/ribbon/Ribbon_Default.pal new file mode 100644 index 0000000000..b0ad7cdf74 --- /dev/null +++ b/graphics/pokemon/alcremie/ribbon/Ribbon_Default.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 224 208 +208 160 168 +240 136 144 +128 80 88 +248 224 200 +208 128 136 +248 224 200 +208 160 168 +248 224 200 +208 160 168 +176 136 176 +144 96 168 +112 72 136 +0 0 0 diff --git a/graphics/pokemon/alcremie/ribbon/Ribbon_Lemon_Cream.pal b/graphics/pokemon/alcremie/ribbon/Ribbon_Lemon_Cream.pal new file mode 100644 index 0000000000..b022d03006 --- /dev/null +++ b/graphics/pokemon/alcremie/ribbon/Ribbon_Lemon_Cream.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 248 152 +208 184 72 +232 224 0 +112 120 24 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +176 136 176 +144 96 168 +112 72 136 +0 0 0 diff --git a/graphics/pokemon/alcremie/ribbon/Ribbon_Matcha_Cream.pal b/graphics/pokemon/alcremie/ribbon/Ribbon_Matcha_Cream.pal new file mode 100644 index 0000000000..4999acd248 --- /dev/null +++ b/graphics/pokemon/alcremie/ribbon/Ribbon_Matcha_Cream.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +232 248 208 +176 208 152 +192 224 96 +104 128 80 +232 248 200 +176 208 152 +232 248 200 +176 208 152 +232 248 200 +176 208 152 +176 136 176 +144 96 168 +112 72 136 +0 0 0 diff --git a/graphics/pokemon/alcremie/ribbon/Ribbon_Mint_Cream.pal b/graphics/pokemon/alcremie/ribbon/Ribbon_Mint_Cream.pal new file mode 100644 index 0000000000..2349810b7e --- /dev/null +++ b/graphics/pokemon/alcremie/ribbon/Ribbon_Mint_Cream.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +208 240 232 +152 168 176 +112 208 200 +72 112 128 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +176 136 176 +144 96 168 +112 72 136 +0 0 0 diff --git a/graphics/pokemon/alcremie/ribbon/Ribbon_Rainbow_Swirl.pal b/graphics/pokemon/alcremie/ribbon/Ribbon_Rainbow_Swirl.pal new file mode 100644 index 0000000000..8c17769478 --- /dev/null +++ b/graphics/pokemon/alcremie/ribbon/Ribbon_Rainbow_Swirl.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 248 184 +208 192 120 +216 144 88 +120 88 64 +240 160 168 +208 128 136 +176 232 224 +128 160 168 +248 248 112 +216 192 40 +176 136 176 +144 96 168 +112 72 136 +0 0 0 diff --git a/graphics/pokemon/alcremie/ribbon/Ribbon_Ruby_Cream.pal b/graphics/pokemon/alcremie/ribbon/Ribbon_Ruby_Cream.pal new file mode 100644 index 0000000000..6384296180 --- /dev/null +++ b/graphics/pokemon/alcremie/ribbon/Ribbon_Ruby_Cream.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 208 208 +200 152 184 +232 112 192 +128 80 112 +248 208 208 +200 152 184 +248 208 208 +200 152 184 +248 208 208 +200 152 184 +176 136 176 +144 96 168 +112 72 136 +0 0 0 diff --git a/graphics/pokemon/alcremie/ribbon/Ribbon_Ruby_Swirl.pal b/graphics/pokemon/alcremie/ribbon/Ribbon_Ruby_Swirl.pal new file mode 100644 index 0000000000..e1f9ce61dc --- /dev/null +++ b/graphics/pokemon/alcremie/ribbon/Ribbon_Ruby_Swirl.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 240 208 +208 184 160 +240 192 128 +128 96 80 +248 176 192 +224 120 128 +248 176 192 +224 120 128 +248 176 192 +224 120 128 +176 136 176 +144 96 168 +112 72 136 +0 0 0 diff --git a/graphics/pokemon/alcremie/ribbon/Ribbon_Salted_Cream.pal b/graphics/pokemon/alcremie/ribbon/Ribbon_Salted_Cream.pal new file mode 100644 index 0000000000..cdf85d28b5 --- /dev/null +++ b/graphics/pokemon/alcremie/ribbon/Ribbon_Salted_Cream.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +232 232 248 +176 176 184 +112 208 200 +88 88 96 +232 232 248 +176 176 184 +232 232 248 +176 176 184 +232 232 248 +176 176 184 +176 136 176 +144 96 168 +112 72 136 +0 0 0 diff --git a/graphics/pokemon/alcremie/ribbon/Ribbon_Shiny.pal b/graphics/pokemon/alcremie/ribbon/Ribbon_Shiny.pal new file mode 100644 index 0000000000..b60e7632fe --- /dev/null +++ b/graphics/pokemon/alcremie/ribbon/Ribbon_Shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +216 216 216 +152 152 152 +128 128 128 +88 88 96 +72 80 72 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +176 136 176 +144 96 168 +112 72 136 +16 16 16 diff --git a/graphics/pokemon/alcremie/ribbon/back.png b/graphics/pokemon/alcremie/ribbon/back.png new file mode 100644 index 0000000000000000000000000000000000000000..3b595ebb62e1a05e454fd384c4cd15131a5e612c GIT binary patch literal 650 zcmV;50(Jd~P)`;+oKPybCjd&Gh9)hkZVSIa z1W#asM0;nQZgF)&W@a7R>v#=4Vx-to{!jn@GdrHm{=Et^s*6cId;gZ|%@lFek?`vk zV`o<1+C5K z0yhFW;d(7Lr<3d=;M)LOTucEJ#o*oyuT1qBr57+gkTw7$t{#LPU{9*hX8^39s1Cqi zB3`BgAYhSc0gCWbgr|U9wO!yd!GxJ|=XB2{m(^b literal 0 HcmV?d00001 diff --git a/graphics/pokemon/alcremie/ribbon/front.png b/graphics/pokemon/alcremie/ribbon/front.png new file mode 100644 index 0000000000000000000000000000000000000000..2f1b913cb7a9e64ccc16ab5f1833d57d44816f17 GIT binary patch literal 724 zcmV;_0xSKAP)51V$R8ppHobvt zB^=mnO1)}|U~D%LtaBoG*TpCs1R=us?t+E;5qt41_xbU>pF2A{|05HI#MlO$_Aum= zEe`DiB&=^+h>L^XGqATM;XQE37K_sh2Pi4FFc=`<6at1QApo2eogD?!|8DNQDZz8Nv&{nv} z1?FFz2q+iOSS>z&&6aRI2U5orahl~^X8_UqKi5GZGWvr7c583I4CSzZbzDL@97tYI^Ny+uTU1mmmJ zB+i2I>xLD<6xf==eWjlM2^c}36t`*uNLN!QcqPY^6fjomSkR`_tkyURf*=K$Xz=E^ z?J$OAY&Zfc1t=x?Rl8Eci)nWG5%Q@vHWQG-itmBDmXu1VR2Qa3(RNX{FbQl__F^;; zS2E7JYXo#wN8)=OEUBTUbLF_#xB}c0E&4S@InjYWE&xuFJ)=tjU{sPzL7?D?F`h$W zK=~jaFui^Z-0MH`3xHAIi-Qje0NLTO-aqt*xzDZP4ck5j_hrY+du>h68+QB`{LuHk z{3`Xxiyi!t_p)HrKL#3W7-(HIYE$oM)C<(#dH$mRtMLmE3<210ttNy30000Px#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_NKi=l`1n{@V1R&t5D*a9*w~05IQUp_ zz%WSo`1q)>u&A)Gn3$LV000000CVB|H2?qr32;bRa{vGi!vFvd!vV){sAK>D0uD(; zK~zY`?Ucca+b|G@lSA${RiF@Z*j)Ei=|CLF|MBae@hFpju%;nZ;MK#!is~*H*O3_3_gbHfKHm-M zvrHS}-lI>1raImK^616@OD=o{EdX)tF#sSv1Lgq)K&F*a0P8`0$^a|N0Fv#_bHcfJ zHaN$y2O`~gBD9r6S_i%e2Eb;Tu?Pu{L%ki#NaF~`GG=HI2i}Yjfx-|?;0MT|(Q#3H zz6BEFfCMa6`SbfN5cNJw{k|-B*Fa(e>UjX@bzoY*ezpPDj=%=q{ID}j?Fi_E>$RO< zPqL4I-vabD@BtJ>;NG~ej9oJFK|ox9s0AQ(LN+~MPTHf711$fr9>7nUy^0)QsuR%x z6yZbGTmyXFb%D0rpZJB~B;KsR)SZs$cq;5g@zGO--|>)jJDV zAW(PLZ%tVr4y(JJea3N9cl$yPaw88b3qXraU7TN5%0Qa3XPGZ}T^3M$NjSvfVPgR2 z-wM-LWnO-xHun_y8o*LQhr4*=q+s;ZYf7m#98{05l8$EqL)S}3&OZpi;N bUX#gRv>!W_dkrV}00000NkvXXu0mjfdL%El diff --git a/graphics/pokemon/alcremie/ruby_cream/front.png b/graphics/pokemon/alcremie/ruby_cream/front.png deleted file mode 100644 index e64880a8cf1d69886645eaa5c8b270b87cc69773..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 742 zcmVLfI#0006>Nklc{#!4DXn~0GjAy+GrG)P%R3N+g#StzI%KL%{5<|)`2 zqixQ+aNx4E=h|DzHP!Ds@y41;tU9C~9U!kY%d8?zxqO-VR|z%*EN zy#TbSw{Qd?5Yz$=T_6Bl)a7t5kcYlr+0@k?DP%a4_4aF3f3F3 zEk)e~>;3k=V{zC#7Ql$FH>nj!zw-nur20BdzhzY*edIv`np2p*Tj?r5S236vQ{-s^ z%RXoTCd!-0V&H+O0`ByUNQyRRoD0h=+wL?<48#T^SBQSK3n!CeMhrdEFp^S))fzN6 zgc1{;iQyuKvW1gZM&E;>*apW+D!?)Tk^I^L{GdyXJ1-A{-hvUy&mFvcNf208fbI~1 zaErhvY?d$BsRR%<6w^omyzCPVhWUq^@}2R2Ps0RuAZ8k#l^XmFIE*R9!;FIIOC7M+ z#6Oh)U#SVzBO*mM&F@zUXrsZ?q!$Q*Wz0DOsst!S_@Q@M;E5Ua`55_98}kzo8s_JL zyCES;sZtkhiDKlU9%2%hD_Pl=1mhCHMSq5Xl$M(#Kg19c37NFY#YQm$?n&2OO}Z>} z&~Iyit76aSQUf@b;-nx@^TaqqC=4|B?LeD(Iq>X_RSj_T@^_MPzXl+Kd`ZlksDt&n zb=aYYD^OgK0qa;xV26Qv;uEEqy-Imxxq~{gQ_ZM9`Z7OCQr3;SEn5=x<}X9afAg#S Y0}huZgfwEz)Bpeg07*qoM6N<$f~*)n%K!iX diff --git a/graphics/pokemon/alcremie/ruby_swirl/back.png b/graphics/pokemon/alcremie/ruby_swirl/back.png deleted file mode 100644 index ae275b897dad76b2230070b90df594b451f7af00..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 691 zcmV;k0!;mhP)Px#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_NKi=l`1n{@V1R&t5D*ZUn3&ku*oYuF z_*ihjFi80L_^7b300000000000P8#>RsaA132;bRa{vGi!vFvd!vV){sAK>D0t`t+ zK~zY`?Ub>O+CUJ7p`f>w1t}8EQC}0Sp`wW6@k)`d0A+nel*VYY&yga9bA6=v`jZmB zMIi3>p)#|^W({6HK$MX%691=v{~6CR`3GwnQUzW;Jg%tjf^i**VSTUl!Rqtfpgt4Y z689c`A~n_F{nJskN`p}r2y80`ji2d5CF+$=Q-hATnx@J z?0`t;o(N4Pk=B7Pf(5Xdd@MqO<4|wMGSWDLv5W#O;=r2`B2XA25BvZ*EaJ@G3>q&MI z@LPi31U`VGNZgzLD`S_8d=QWqAZh?edm-}Pk94#~zC}evJ%$wVx)dkoab22!cIHMvUqN{%CV@7~!H#fD-9#-!hV2ME8 zUcWVEeK@Y}cJ3LcZQbq*Ihd_Et{ea@wsmoSSt$c!%bjJm!N3002ovPDHLkV1mE;Cq@7O diff --git a/graphics/pokemon/alcremie/ruby_swirl/front.png b/graphics/pokemon/alcremie/ruby_swirl/front.png deleted file mode 100644 index cb99b49fa25fa85fcf1e37707ae94c4f200ddc1a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 753 zcmVPx#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_fM8Jgu)y%ZfY7+05D*af@X+}9_=q4l z_*ihjFi7~YxZrqz00000000000PC8)!~g&Q32;bRa{vGi!vFvd!vV){sAK>D0!m3l zK~zY`?UcQ1+dvq`rNPkA7t5C+o)YNpTq^?hB6KqC)`Cw^>c!mYH6dfbZnuU)YVWNR z`!9&K6@!=4Vp31OKdP^^RbSmppY{3iyk93-|5cPtP<6n`If^uE5?Yr?c<*Y6i_7zu z5Y!c6=isWEh?5H!q^gdvIUwLx0ydo?0E}1Fa3+vSUd_wg`5nn@7?Z{NOVNL^dc5~C z;PlffzAFJX>&IJ)zH%3v^?kD>VfB;&UA9=or9k|Rh1emLS8@C`DgyBnb3>4fg8ybN zivXPuKn<`&TE;E82X#RO=@8KXn9GZR^$=~Uv)^NXOjpm_LW z3D=)P1f~VxY=?liM&JVu%VzqJ1Bl*nKi~k@n^1z%$v(GHG=U zS{uW>h=OVh>FS>(Ipl!Em_C(VB6#HYwAMMGfdS9`mdiP|F=7aq9AFG#`_^QJFQ(gO zJ>+v^j1EAkm%az)c!U^Za#J(}nt_A9hecpygq4>7k8mByECR#0QMw%DF{^jV(cAc0g@%cv$O@h@0e%SH%6CtDULc#Fh_l;SoOz5q)$nRs#Q0H jCD6BOCH~_7o3gCmELHY;isX6400000NkvXXu0mjfPx#1ZP1_K>z@;j|==^1poj5Fi=cXMVQc_NKi=l`1n{@V1R&t5D*ZEAUOC~aKJD~ zsIah@n3&ku*Z=?k000000000004Oi?AOHXW32;bRa{vGi!vFvd!vV){sAK>D0trb( zK~zY`?Ub>O+CUJ7p`f>wMGjB_kgM#07|208%Gp(*x$DJ^DDn@(=3){G{2d$N{E05gkAgK4i@` zz}HwRM5r0k@?*L?V=B%!u^K*XA7&G8nIh$z!$fGu6 zO4my}+yCh(f1{A^4KQzShgKJ0FXd6f_vfJF$G<#aTvw#Hxb$9*N zl=b1Ty4%@j95;2hFXSLM^02Z1wAj?e`DLXHq$zur`GVJF0mYYuLo6OP25|nZFnv|# z`6WRB diff --git a/graphics/pokemon/alcremie/salted_cream/front.png b/graphics/pokemon/alcremie/salted_cream/front.png deleted file mode 100644 index 7958715bccb2e79362f5fc18edbdf8c2f3c1759d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 737 zcmV<70v`Q|P)w80006+Nkl7f4R~fBMgDF0I!8sDwi>nt(3DAe{z>-WZASrh)LrYzT2v63!qn4HjK50B!0m z903RfwSYq}2mlv#IouQEp|9sQb$&|<8IEMJ`drmtE${Eb0=W9M+}>J%&FcPzqHco4 zW_8!GI4mCuV8j>8trggQi_4gLlk#+2e=M#1!@4%lnrA4-6) z)P(90ks^!o`&9zkXz)1c1wvpMGmd~N0ZI|R>zyumVn%&FM!wX>>;Qy@`FY@ONQhFZ z)J0pO7`v#4m;`1@R<tr_34}yKCarR@QOtmQ(sfspo(moH+Zy1i z*fYA+0M4m6DG1a&G0qSQ1I>Lq&}Lo^Jb7bP1MI#0on+jv0mvX<67wc%XMJuRw(H>v z6jx-xI@S`{ZlE6dL@8#kQtnyqp!V!gGwP4N%#V_kb)#;}mPEbz%aHQl{3`zdTyXlo Th5dt^00000NkvXXu0mjfKHEFs diff --git a/graphics/pokemon/alcremie/salted_cream/shiny.pal b/graphics/pokemon/alcremie/salted_cream/shiny.pal deleted file mode 100644 index 953c50e5ee..0000000000 --- a/graphics/pokemon/alcremie/salted_cream/shiny.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -152 208 160 -72 80 72 -248 248 248 -88 88 96 -128 128 128 -16 16 16 -136 32 56 -248 88 112 -192 48 72 -168 176 176 -152 152 152 -216 216 216 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/pokemon/alcremie/star/Star_Caramel_Swirl.pal b/graphics/pokemon/alcremie/star/Star_Caramel_Swirl.pal new file mode 100644 index 0000000000..254db99d41 --- /dev/null +++ b/graphics/pokemon/alcremie/star/Star_Caramel_Swirl.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 232 184 +200 168 120 +232 168 96 +144 112 72 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +248 224 48 +200 176 24 +192 112 16 +0 0 0 diff --git a/graphics/pokemon/alcremie/star/Star_Default.pal b/graphics/pokemon/alcremie/star/Star_Default.pal new file mode 100644 index 0000000000..d99429510a --- /dev/null +++ b/graphics/pokemon/alcremie/star/Star_Default.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 224 208 +208 160 168 +240 136 144 +128 80 88 +248 224 200 +208 128 136 +248 224 200 +208 160 168 +248 224 200 +208 160 168 +248 224 48 +200 176 24 +192 112 16 +0 0 0 diff --git a/graphics/pokemon/alcremie/star/Star_Lemon_Cream.pal b/graphics/pokemon/alcremie/star/Star_Lemon_Cream.pal new file mode 100644 index 0000000000..ec776c4d90 --- /dev/null +++ b/graphics/pokemon/alcremie/star/Star_Lemon_Cream.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 248 152 +208 184 72 +232 224 0 +112 120 24 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +248 224 48 +200 176 24 +192 112 16 +0 0 0 diff --git a/graphics/pokemon/alcremie/star/Star_Matcha_Cream.pal b/graphics/pokemon/alcremie/star/Star_Matcha_Cream.pal new file mode 100644 index 0000000000..b642f11786 --- /dev/null +++ b/graphics/pokemon/alcremie/star/Star_Matcha_Cream.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +232 248 208 +176 208 152 +192 224 96 +104 128 80 +232 248 200 +176 208 152 +232 248 200 +176 208 152 +232 248 200 +176 208 152 +248 224 48 +200 176 24 +192 112 16 +0 0 0 diff --git a/graphics/pokemon/alcremie/star/Star_Mint_Cream.pal b/graphics/pokemon/alcremie/star/Star_Mint_Cream.pal new file mode 100644 index 0000000000..f4fb9991f8 --- /dev/null +++ b/graphics/pokemon/alcremie/star/Star_Mint_Cream.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +208 240 232 +152 168 176 +112 208 200 +72 112 128 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +248 224 48 +200 176 24 +192 112 16 +0 0 0 diff --git a/graphics/pokemon/alcremie/star/Star_Rainbow_Swirl.pal b/graphics/pokemon/alcremie/star/Star_Rainbow_Swirl.pal new file mode 100644 index 0000000000..a0aa5334c4 --- /dev/null +++ b/graphics/pokemon/alcremie/star/Star_Rainbow_Swirl.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 248 184 +208 192 120 +216 144 88 +120 88 64 +240 160 168 +208 128 136 +176 232 224 +128 160 168 +248 248 112 +216 192 40 +248 224 48 +200 176 24 +192 112 16 +0 0 0 diff --git a/graphics/pokemon/alcremie/star/Star_Ruby_Cream.pal b/graphics/pokemon/alcremie/star/Star_Ruby_Cream.pal new file mode 100644 index 0000000000..1f66460fb6 --- /dev/null +++ b/graphics/pokemon/alcremie/star/Star_Ruby_Cream.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 208 208 +200 152 184 +232 112 192 +128 80 112 +248 208 208 +200 152 184 +248 208 208 +200 152 184 +248 208 208 +200 152 184 +248 224 48 +200 176 24 +192 112 16 +0 0 0 diff --git a/graphics/pokemon/alcremie/star/Star_Ruby_Swirl.pal b/graphics/pokemon/alcremie/star/Star_Ruby_Swirl.pal new file mode 100644 index 0000000000..1f00d36c9c --- /dev/null +++ b/graphics/pokemon/alcremie/star/Star_Ruby_Swirl.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 240 208 +208 184 160 +240 192 128 +128 96 80 +248 176 192 +224 120 128 +248 176 192 +224 120 128 +248 176 192 +224 120 128 +248 224 48 +200 176 24 +192 112 16 +0 0 0 diff --git a/graphics/pokemon/alcremie/star/Star_Salted_Cream.pal b/graphics/pokemon/alcremie/star/Star_Salted_Cream.pal new file mode 100644 index 0000000000..2b0c72d8f6 --- /dev/null +++ b/graphics/pokemon/alcremie/star/Star_Salted_Cream.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +232 232 248 +176 176 184 +112 208 200 +88 88 96 +232 232 248 +176 176 184 +232 232 248 +176 176 184 +232 232 248 +176 176 184 +248 224 48 +200 176 24 +192 112 16 +0 0 0 diff --git a/graphics/pokemon/alcremie/star/Star_Shiny.pal b/graphics/pokemon/alcremie/star/Star_Shiny.pal new file mode 100644 index 0000000000..6fb3e1d923 --- /dev/null +++ b/graphics/pokemon/alcremie/star/Star_Shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +216 216 216 +152 152 152 +128 128 128 +88 88 96 +72 80 72 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +248 224 48 +200 176 24 +192 112 16 +16 16 16 diff --git a/graphics/pokemon/alcremie/star/back.png b/graphics/pokemon/alcremie/star/back.png new file mode 100644 index 0000000000000000000000000000000000000000..38d32ca65795f2da783dd96b2c5f0690218d76a0 GIT binary patch literal 650 zcmV;50(Jd~P){?2Qvb_9L)? zmrlsJ9RZziy%x^2B0B=UH9P`P6pef1UYVRS3NN51py&a}osh{0n3MMC;{fZYas=>~ z^H+rf%vq`jfFk_h$wNS_hA!}#W5QC}le~`w=pLYFnJ(BmvFC7)f9FyR0J4lbtE=h! zP8>335(JB#%`^aXMV~RJ&x<+R|8uLpqR{OPaM6DqES`Y9Qd@=7$vP?m3i{NiJ|Y6t zu(`Qu_Q~eC1)L*L$pf&WtfyC-FFX5;?Xnv7g&fpUU2QA?EtXY#xU5`)GG))QI~P^m zLi;Thkm=K<0V?}GF?~~a^)VH zIuBUhb{2_WTX*JndBAKnOMp(e3clndEW=>N(I-!Xd9co|a}@-^O$;2eC4Ocz;$Lqf z?2zx{SNJs>u?lYO2n@y{_#Ce58G!GH3(~*{jKOZRyW%zwD;}cW0Jfl6z-b=PC>e9Z z7|q$G?li54K!bqgP}(nOB{qa@Pj9?0MW56RRU;YVbzAq&+>l{c|8MgmUj3+5zEafRT4uzui=85n7 zDL}^p?@wDcrP#)nAs|zLl!9His%5+}hh27pd}@sC1OzwZ`@kGi2q|T13SFUTIp~`h z0$Zs{X(=F%pp14m2&k-&#PuXR{)IqZY(w^07RR`e*f4T=03NYJ8XF<=83kO_uA^N zJ8XMz*sHJ!pGR6`FU(sFXS=oK9R*5s=cS-uJN} zK((8jm}VdBA6vjB0+~DkYsz|ly?=kS&p52Ic3;RrtAS002ovPDHLkV1gjpD}(?5 literal 0 HcmV?d00001 diff --git a/graphics/pokemon/alcremie/strawberry/front.png b/graphics/pokemon/alcremie/strawberry/front.png new file mode 100644 index 0000000000000000000000000000000000000000..fe7872d2d35ab8fe130199cc718072ac92523d32 GIT binary patch literal 723 zcmV;^0xbQBP)N*>LDN{e~9F;xf{ry zgo2mNQG1$0FkX}T4`hoLdkaA}2ttJM-31TsN4$&A_4)C~&cXcOI z8}{UK{yFdO%&u?k6ga&lLxKZRjxww6Tf3ER<{+4&wQCsIga?@7X06S5IT(wTS!MBo@4JIMic7g+pZ z3h+_XDV}+D5n>kzi$6_a|6YthJqMg$B4E!E_=&^vS~$r7GQ4D#!vOXdF$EHiuQHoB z56AB;JBBH+HHC*tz4#L_!cZx0n*vBzQ#X7o$CC^&R_a*LmekC&j>0g^096clf82H% z!!|Y?0hIxilKiUOsNs!ib@>tUnK3pKkit&x1NUqxl~S20sv1qlL*K?Cuu-~_l?LKT z##wibfX@3!d~bp+HJG~4PG(Iyz;mKyPgB%WALz3Z;50pFOeq13MtV~aDEVTHSC9r! zJ}3sNem?;o^q&SLz^Lyh;)4=Ec6j3V4})RhcWd~=c7Wo6?D$2$ZPoXOo!~V;3qDOvT8fyN#NT9>W5sw*1(68CqVzxe;EegVq<`_3(xUl0HQ002ovPDHLk FV1hdrO!fc( literal 0 HcmV?d00001 diff --git a/include/constants/species.h b/include/constants/species.h index a54121f626..c83267d2f1 100644 --- a/include/constants/species.h +++ b/include/constants/species.h @@ -1388,20 +1388,20 @@ // Alcremie #define SPECIES_ALCREMIE_RUBY_CREAM SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM -#define SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM FORMS_START + 311 #define SPECIES_ALCREMIE_MATCHA_CREAM SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM -#define SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM FORMS_START + 312 #define SPECIES_ALCREMIE_MINT_CREAM SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM -#define SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM FORMS_START + 313 #define SPECIES_ALCREMIE_LEMON_CREAM SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM -#define SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM FORMS_START + 314 #define SPECIES_ALCREMIE_SALTED_CREAM SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM -#define SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM FORMS_START + 315 #define SPECIES_ALCREMIE_RUBY_SWIRL SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL -#define SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL FORMS_START + 316 #define SPECIES_ALCREMIE_CARAMEL_SWIRL SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL -#define SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL FORMS_START + 317 #define SPECIES_ALCREMIE_RAINBOW_SWIRL SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL +#define SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM FORMS_START + 311 +#define SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM FORMS_START + 312 +#define SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM FORMS_START + 313 +#define SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM FORMS_START + 314 +#define SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM FORMS_START + 315 +#define SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL FORMS_START + 316 +#define SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL FORMS_START + 317 #define SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL FORMS_START + 318 // Eiscue @@ -1435,104 +1435,103 @@ // Basculegion #define SPECIES_BASCULEGION_FEMALE FORMS_START + 329 -// Gigantamax Forms -#define SPECIES_VENUSAUR_GIGANTAMAX FORMS_START + 330 -#define SPECIES_BLASTOISE_GIGANTAMAX FORMS_START + 331 -#define SPECIES_CHARIZARD_GIGANTAMAX FORMS_START + 332 -#define SPECIES_BUTTERFREE_GIGANTAMAX FORMS_START + 333 -#define SPECIES_PIKACHU_GIGANTAMAX FORMS_START + 334 -#define SPECIES_MEOWTH_GIGANTAMAX FORMS_START + 335 -#define SPECIES_MACHAMP_GIGANTAMAX FORMS_START + 336 -#define SPECIES_GENGAR_GIGANTAMAX FORMS_START + 337 -#define SPECIES_KINGLER_GIGANTAMAX FORMS_START + 338 -#define SPECIES_LAPRAS_GIGANTAMAX FORMS_START + 339 -#define SPECIES_EEVEE_GIGANTAMAX FORMS_START + 340 -#define SPECIES_SNORLAX_GIGANTAMAX FORMS_START + 341 -#define SPECIES_GARBODOR_GIGANTAMAX FORMS_START + 342 -#define SPECIES_MELMETAL_GIGANTAMAX FORMS_START + 343 -#define SPECIES_RILLABOOM_GIGANTAMAX FORMS_START + 344 -#define SPECIES_CINDERACE_GIGANTAMAX FORMS_START + 345 -#define SPECIES_INTELEON_GIGANTAMAX FORMS_START + 346 -#define SPECIES_CORVIKNIGHT_GIGANTAMAX FORMS_START + 347 -#define SPECIES_ORBEETLE_GIGANTAMAX FORMS_START + 348 -#define SPECIES_DREDNAW_GIGANTAMAX FORMS_START + 349 -#define SPECIES_COALOSSAL_GIGANTAMAX FORMS_START + 350 -#define SPECIES_FLAPPLE_GIGANTAMAX FORMS_START + 351 -#define SPECIES_APPLETUN_GIGANTAMAX FORMS_START + 352 -#define SPECIES_SANDACONDA_GIGANTAMAX FORMS_START + 353 -#define SPECIES_TOXTRICITY_AMPED_GIGANTAMAX FORMS_START + 354 -#define SPECIES_TOXTRICITY_LOW_KEY_GIGANTAMAX FORMS_START + 355 -#define SPECIES_CENTISKORCH_GIGANTAMAX FORMS_START + 356 -#define SPECIES_HATTERENE_GIGANTAMAX FORMS_START + 357 -#define SPECIES_GRIMMSNARL_GIGANTAMAX FORMS_START + 358 -#define SPECIES_ALCREMIE_GIGANTAMAX FORMS_START + 359 -#define SPECIES_COPPERAJAH_GIGANTAMAX FORMS_START + 360 -#define SPECIES_DURALUDON_GIGANTAMAX FORMS_START + 361 -#define SPECIES_URSHIFU_SINGLE_STRIKE_STYLE_GIGANTAMAX FORMS_START + 362 -#define SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX FORMS_START + 363 +// More Alcremie +#define SPECIES_ALCREMIE_BERRY SPECIES_ALCREMIE_BERRY_VANILLA_CREAM +#define SPECIES_ALCREMIE_BERRY_VANILLA_CREAM FORMS_START + 330 +#define SPECIES_ALCREMIE_BERRY_RUBY_CREAM FORMS_START + 331 +#define SPECIES_ALCREMIE_BERRY_MATCHA_CREAM FORMS_START + 332 +#define SPECIES_ALCREMIE_BERRY_MINT_CREAM FORMS_START + 333 +#define SPECIES_ALCREMIE_BERRY_LEMON_CREAM FORMS_START + 334 +#define SPECIES_ALCREMIE_BERRY_SALTED_CREAM FORMS_START + 335 +#define SPECIES_ALCREMIE_BERRY_RUBY_SWIRL FORMS_START + 336 +#define SPECIES_ALCREMIE_BERRY_CARAMEL_SWIRL FORMS_START + 337 +#define SPECIES_ALCREMIE_BERRY_RAINBOW_SWIRL FORMS_START + 338 +#define SPECIES_ALCREMIE_LOVE SPECIES_ALCREMIE_LOVE_VANILLA_CREAM +#define SPECIES_ALCREMIE_LOVE_VANILLA_CREAM FORMS_START + 339 +#define SPECIES_ALCREMIE_LOVE_RUBY_CREAM FORMS_START + 340 +#define SPECIES_ALCREMIE_LOVE_MATCHA_CREAM FORMS_START + 341 +#define SPECIES_ALCREMIE_LOVE_MINT_CREAM FORMS_START + 342 +#define SPECIES_ALCREMIE_LOVE_LEMON_CREAM FORMS_START + 343 +#define SPECIES_ALCREMIE_LOVE_SALTED_CREAM FORMS_START + 344 +#define SPECIES_ALCREMIE_LOVE_RUBY_SWIRL FORMS_START + 345 +#define SPECIES_ALCREMIE_LOVE_CARAMEL_SWIRL FORMS_START + 346 +#define SPECIES_ALCREMIE_LOVE_RAINBOW_SWIRL FORMS_START + 347 +#define SPECIES_ALCREMIE_STAR SPECIES_ALCREMIE_STAR_VANILLA_CREAM +#define SPECIES_ALCREMIE_STAR_VANILLA_CREAM FORMS_START + 348 +#define SPECIES_ALCREMIE_STAR_RUBY_CREAM FORMS_START + 349 +#define SPECIES_ALCREMIE_STAR_MATCHA_CREAM FORMS_START + 350 +#define SPECIES_ALCREMIE_STAR_MINT_CREAM FORMS_START + 351 +#define SPECIES_ALCREMIE_STAR_LEMON_CREAM FORMS_START + 352 +#define SPECIES_ALCREMIE_STAR_SALTED_CREAM FORMS_START + 353 +#define SPECIES_ALCREMIE_STAR_RUBY_SWIRL FORMS_START + 354 +#define SPECIES_ALCREMIE_STAR_CARAMEL_SWIRL FORMS_START + 355 +#define SPECIES_ALCREMIE_STAR_RAINBOW_SWIRL FORMS_START + 356 +#define SPECIES_ALCREMIE_CLOVER SPECIES_ALCREMIE_CLOVER_VANILLA_CREAM +#define SPECIES_ALCREMIE_CLOVER_VANILLA_CREAM FORMS_START + 357 +#define SPECIES_ALCREMIE_CLOVER_RUBY_CREAM FORMS_START + 358 +#define SPECIES_ALCREMIE_CLOVER_MATCHA_CREAM FORMS_START + 359 +#define SPECIES_ALCREMIE_CLOVER_MINT_CREAM FORMS_START + 360 +#define SPECIES_ALCREMIE_CLOVER_LEMON_CREAM FORMS_START + 361 +#define SPECIES_ALCREMIE_CLOVER_SALTED_CREAM FORMS_START + 362 +#define SPECIES_ALCREMIE_CLOVER_RUBY_SWIRL FORMS_START + 363 +#define SPECIES_ALCREMIE_CLOVER_CARAMEL_SWIRL FORMS_START + 364 +#define SPECIES_ALCREMIE_CLOVER_RAINBOW_SWIRL FORMS_START + 365 +#define SPECIES_ALCREMIE_FLOWER SPECIES_ALCREMIE_FLOWER_VANILLA_CREAM +#define SPECIES_ALCREMIE_FLOWER_VANILLA_CREAM FORMS_START + 366 +#define SPECIES_ALCREMIE_FLOWER_RUBY_CREAM FORMS_START + 367 +#define SPECIES_ALCREMIE_FLOWER_MATCHA_CREAM FORMS_START + 368 +#define SPECIES_ALCREMIE_FLOWER_MINT_CREAM FORMS_START + 369 +#define SPECIES_ALCREMIE_FLOWER_LEMON_CREAM FORMS_START + 370 +#define SPECIES_ALCREMIE_FLOWER_SALTED_CREAM FORMS_START + 371 +#define SPECIES_ALCREMIE_FLOWER_RUBY_SWIRL FORMS_START + 372 +#define SPECIES_ALCREMIE_FLOWER_CARAMEL_SWIRL FORMS_START + 373 +#define SPECIES_ALCREMIE_FLOWER_RAINBOW_SWIRL FORMS_START + 374 +#define SPECIES_ALCREMIE_RIBBON SPECIES_ALCREMIE_RIBBON_VANILLA_CREAM +#define SPECIES_ALCREMIE_RIBBON_VANILLA_CREAM FORMS_START + 375 +#define SPECIES_ALCREMIE_RIBBON_RUBY_CREAM FORMS_START + 376 +#define SPECIES_ALCREMIE_RIBBON_MATCHA_CREAM FORMS_START + 377 +#define SPECIES_ALCREMIE_RIBBON_MINT_CREAM FORMS_START + 378 +#define SPECIES_ALCREMIE_RIBBON_LEMON_CREAM FORMS_START + 379 +#define SPECIES_ALCREMIE_RIBBON_SALTED_CREAM FORMS_START + 380 +#define SPECIES_ALCREMIE_RIBBON_RUBY_SWIRL FORMS_START + 381 +#define SPECIES_ALCREMIE_RIBBON_CARAMEL_SWIRL FORMS_START + 382 +#define SPECIES_ALCREMIE_RIBBON_RAINBOW_SWIRL FORMS_START + 383 -/* -#define SPECIES_ALCREMIE_BERRY SPECIES_ALCREMIE_BERRY_VANILLA_CREAM -#define SPECIES_ALCREMIE_BERRY_VANILLA_CREAM FORMS_START + 363 // Todo -#define SPECIES_ALCREMIE_BERRY_RUBY_CREAM FORMS_START + 364 // Todo -#define SPECIES_ALCREMIE_BERRY_MATCHA_CREAM FORMS_START + 365 // Todo -#define SPECIES_ALCREMIE_BERRY_MINT_CREAM FORMS_START + 366 // Todo -#define SPECIES_ALCREMIE_BERRY_LEMON_CREAM FORMS_START + 367 // Todo -#define SPECIES_ALCREMIE_BERRY_SALTED_CREAM FORMS_START + 368 // Todo -#define SPECIES_ALCREMIE_BERRY_RUBY_SWIRL FORMS_START + 369 // Todo -#define SPECIES_ALCREMIE_BERRY_CARAMEL_SWIRL FORMS_START + 370 // Todo -#define SPECIES_ALCREMIE_BERRY_RAINBOW_SWIRL FORMS_START + 371 // Todo -#define SPECIES_ALCREMIE_LOVE SPECIES_ALCREMIE_LOVE_VANILLA_CREAM -#define SPECIES_ALCREMIE_LOVE_VANILLA_CREAM FORMS_START + 372 // Todo -#define SPECIES_ALCREMIE_LOVE_RUBY_CREAM FORMS_START + 373 // Todo -#define SPECIES_ALCREMIE_LOVE_MATCHA_CREAM FORMS_START + 374 // Todo -#define SPECIES_ALCREMIE_LOVE_MINT_CREAM FORMS_START + 375 // Todo -#define SPECIES_ALCREMIE_LOVE_LEMON_CREAM FORMS_START + 376 // Todo -#define SPECIES_ALCREMIE_LOVE_SALTED_CREAM FORMS_START + 377 // Todo -#define SPECIES_ALCREMIE_LOVE_RUBY_SWIRL FORMS_START + 378 // Todo -#define SPECIES_ALCREMIE_LOVE_CARAMEL_SWIRL FORMS_START + 379 // Todo -#define SPECIES_ALCREMIE_LOVE_RAINBOW_SWIRL FORMS_START + 380 // Todo -#define SPECIES_ALCREMIE_STAR SPECIES_ALCREMIE_STAR_VANILLA_CREAM -#define SPECIES_ALCREMIE_STAR_VANILLA_CREAM FORMS_START + 381 // Todo -#define SPECIES_ALCREMIE_STAR_RUBY_CREAM FORMS_START + 382 // Todo -#define SPECIES_ALCREMIE_STAR_MATCHA_CREAM FORMS_START + 383 // Todo -#define SPECIES_ALCREMIE_STAR_MINT_CREAM FORMS_START + 384 // Todo -#define SPECIES_ALCREMIE_STAR_LEMON_CREAM FORMS_START + 385 // Todo -#define SPECIES_ALCREMIE_STAR_SALTED_CREAM FORMS_START + 386 // Todo -#define SPECIES_ALCREMIE_STAR_RUBY_SWIRL FORMS_START + 387 // Todo -#define SPECIES_ALCREMIE_STAR_CARAMEL_SWIRL FORMS_START + 388 // Todo -#define SPECIES_ALCREMIE_STAR_RAINBOW_SWIRL FORMS_START + 389 // Todo -#define SPECIES_ALCREMIE_CLOVER SPECIES_ALCREMIE_CLOVER_VANILLA_CREAM -#define SPECIES_ALCREMIE_CLOVER_VANILLA_CREAM FORMS_START + 390 // Todo -#define SPECIES_ALCREMIE_CLOVER_RUBY_CREAM FORMS_START + 391 // Todo -#define SPECIES_ALCREMIE_CLOVER_MATCHA_CREAM FORMS_START + 392 // Todo -#define SPECIES_ALCREMIE_CLOVER_MINT_CREAM FORMS_START + 393 // Todo -#define SPECIES_ALCREMIE_CLOVER_LEMON_CREAM FORMS_START + 394 // Todo -#define SPECIES_ALCREMIE_CLOVER_SALTED_CREAM FORMS_START + 395 // Todo -#define SPECIES_ALCREMIE_CLOVER_RUBY_SWIRL FORMS_START + 396 // Todo -#define SPECIES_ALCREMIE_CLOVER_CARAMEL_SWIRL FORMS_START + 397 // Todo -#define SPECIES_ALCREMIE_CLOVER_RAINBOW_SWIRL FORMS_START + 398 // Todo -#define SPECIES_ALCREMIE_FLOWER SPECIES_ALCREMIE_FLOWER_VANILLA_CREAM -#define SPECIES_ALCREMIE_FLOWER_VANILLA_CREAM FORMS_START + 399 // Todo -#define SPECIES_ALCREMIE_FLOWER_RUBY_CREAM FORMS_START + 400 // Todo -#define SPECIES_ALCREMIE_FLOWER_MATCHA_CREAM FORMS_START + 401 // Todo -#define SPECIES_ALCREMIE_FLOWER_MINT_CREAM FORMS_START + 402 // Todo -#define SPECIES_ALCREMIE_FLOWER_LEMON_CREAM FORMS_START + 403 // Todo -#define SPECIES_ALCREMIE_FLOWER_SALTED_CREAM FORMS_START + 404 // Todo -#define SPECIES_ALCREMIE_FLOWER_RUBY_SWIRL FORMS_START + 405 // Todo -#define SPECIES_ALCREMIE_FLOWER_CARAMEL_SWIRL FORMS_START + 406 // Todo -#define SPECIES_ALCREMIE_FLOWER_RAINBOW_SWIRL FORMS_START + 407 // Todo -#define SPECIES_ALCREMIE_RIBBON SPECIES_ALCREMIE_RIBBON_VANILLA_CREAM -#define SPECIES_ALCREMIE_RIBBON_VANILLA_CREAM FORMS_START + 408 // Todo -#define SPECIES_ALCREMIE_RIBBON_RUBY_CREAM FORMS_START + 409 // Todo -#define SPECIES_ALCREMIE_RIBBON_MATCHA_CREAM FORMS_START + 410 // Todo -#define SPECIES_ALCREMIE_RIBBON_MINT_CREAM FORMS_START + 411 // Todo -#define SPECIES_ALCREMIE_RIBBON_LEMON_CREAM FORMS_START + 412 // Todo -#define SPECIES_ALCREMIE_RIBBON_SALTED_CREAM FORMS_START + 413 // Todo -#define SPECIES_ALCREMIE_RIBBON_RUBY_SWIRL FORMS_START + 414 // Todo -#define SPECIES_ALCREMIE_RIBBON_CARAMEL_SWIRL FORMS_START + 415 // Todo -#define SPECIES_ALCREMIE_RIBBON_RAINBOW_SWIRL FORMS_START + 416 // Todo -*/ +// Gigantamax Forms +#define SPECIES_VENUSAUR_GIGANTAMAX FORMS_START + 384 +#define SPECIES_BLASTOISE_GIGANTAMAX FORMS_START + 385 +#define SPECIES_CHARIZARD_GIGANTAMAX FORMS_START + 386 +#define SPECIES_BUTTERFREE_GIGANTAMAX FORMS_START + 387 +#define SPECIES_PIKACHU_GIGANTAMAX FORMS_START + 388 +#define SPECIES_MEOWTH_GIGANTAMAX FORMS_START + 389 +#define SPECIES_MACHAMP_GIGANTAMAX FORMS_START + 390 +#define SPECIES_GENGAR_GIGANTAMAX FORMS_START + 391 +#define SPECIES_KINGLER_GIGANTAMAX FORMS_START + 392 +#define SPECIES_LAPRAS_GIGANTAMAX FORMS_START + 393 +#define SPECIES_EEVEE_GIGANTAMAX FORMS_START + 394 +#define SPECIES_SNORLAX_GIGANTAMAX FORMS_START + 395 +#define SPECIES_GARBODOR_GIGANTAMAX FORMS_START + 396 +#define SPECIES_MELMETAL_GIGANTAMAX FORMS_START + 397 +#define SPECIES_RILLABOOM_GIGANTAMAX FORMS_START + 398 +#define SPECIES_CINDERACE_GIGANTAMAX FORMS_START + 399 +#define SPECIES_INTELEON_GIGANTAMAX FORMS_START + 400 +#define SPECIES_CORVIKNIGHT_GIGANTAMAX FORMS_START + 401 +#define SPECIES_ORBEETLE_GIGANTAMAX FORMS_START + 402 +#define SPECIES_DREDNAW_GIGANTAMAX FORMS_START + 403 +#define SPECIES_COALOSSAL_GIGANTAMAX FORMS_START + 404 +#define SPECIES_FLAPPLE_GIGANTAMAX FORMS_START + 405 +#define SPECIES_APPLETUN_GIGANTAMAX FORMS_START + 406 +#define SPECIES_SANDACONDA_GIGANTAMAX FORMS_START + 407 +#define SPECIES_TOXTRICITY_AMPED_GIGANTAMAX FORMS_START + 408 +#define SPECIES_TOXTRICITY_LOW_KEY_GIGANTAMAX FORMS_START + 409 +#define SPECIES_CENTISKORCH_GIGANTAMAX FORMS_START + 410 +#define SPECIES_HATTERENE_GIGANTAMAX FORMS_START + 411 +#define SPECIES_GRIMMSNARL_GIGANTAMAX FORMS_START + 412 +#define SPECIES_ALCREMIE_GIGANTAMAX FORMS_START + 413 +#define SPECIES_COPPERAJAH_GIGANTAMAX FORMS_START + 414 +#define SPECIES_DURALUDON_GIGANTAMAX FORMS_START + 415 +#define SPECIES_URSHIFU_SINGLE_STRIKE_STYLE_GIGANTAMAX FORMS_START + 416 +#define SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX FORMS_START + 417 #define FORMS_START SPECIES_ENAMORUS #define SPECIES_EGG SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX + 1 diff --git a/include/graphics.h b/include/graphics.h index 1dc34717cb..d189abce0f 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -1338,14 +1338,6 @@ extern const u32 gMonFrontPic_MagearnaOriginalColor[]; extern const u32 gMonFrontPic_CramorantGulping[]; extern const u32 gMonFrontPic_CramorantGorging[]; extern const u32 gMonFrontPic_ToxtricityLowKey[]; -extern const u32 gMonFrontPic_AlcremieRubyCream[]; -extern const u32 gMonFrontPic_AlcremieMatchaCream[]; -extern const u32 gMonFrontPic_AlcremieMintCream[]; -extern const u32 gMonFrontPic_AlcremieLemonCream[]; -extern const u32 gMonFrontPic_AlcremieSaltedCream[]; -extern const u32 gMonFrontPic_AlcremieRubySwirl[]; -extern const u32 gMonFrontPic_AlcremieCaramelSwirl[]; -extern const u32 gMonFrontPic_AlcremieRainbowSwirl[]; extern const u32 gMonFrontPic_EiscueNoiceFace[]; extern const u32 gMonFrontPic_IndeedeeFemale[]; extern const u32 gMonFrontPic_MorpekoHangry[]; @@ -2623,14 +2615,6 @@ extern const u32 gMonBackPic_MagearnaOriginalColor[]; extern const u32 gMonBackPic_CramorantGulping[]; extern const u32 gMonBackPic_CramorantGorging[]; extern const u32 gMonBackPic_ToxtricityLowKey[]; -extern const u32 gMonBackPic_AlcremieRubyCream[]; -extern const u32 gMonBackPic_AlcremieMatchaCream[]; -extern const u32 gMonBackPic_AlcremieMintCream[]; -extern const u32 gMonBackPic_AlcremieLemonCream[]; -extern const u32 gMonBackPic_AlcremieSaltedCream[]; -extern const u32 gMonBackPic_AlcremieRubySwirl[]; -extern const u32 gMonBackPic_AlcremieCaramelSwirl[]; -extern const u32 gMonBackPic_AlcremieRainbowSwirl[]; extern const u32 gMonBackPic_EiscueNoiceFace[]; extern const u32 gMonBackPic_IndeedeeFemale[]; extern const u32 gMonBackPic_MorpekoHangry[]; @@ -3888,14 +3872,6 @@ extern const u32 gMonPalette_MagearnaOriginalColor[]; extern const u32 gMonPalette_CramorantGulping[]; extern const u32 gMonPalette_CramorantGorging[]; extern const u32 gMonPalette_ToxtricityLowKey[]; -extern const u32 gMonPalette_AlcremieRubyCream[]; -extern const u32 gMonPalette_AlcremieMatchaCream[]; -extern const u32 gMonPalette_AlcremieMintCream[]; -extern const u32 gMonPalette_AlcremieLemonCream[]; -extern const u32 gMonPalette_AlcremieSaltedCream[]; -extern const u32 gMonPalette_AlcremieRubySwirl[]; -extern const u32 gMonPalette_AlcremieCaramelSwirl[]; -extern const u32 gMonPalette_AlcremieRainbowSwirl[]; extern const u32 gMonPalette_EiscueNoiceFace[]; extern const u32 gMonPalette_IndeedeeFemale[]; extern const u32 gMonPalette_MorpekoHangry[]; @@ -5148,14 +5124,6 @@ extern const u32 gMonShinyPalette_MagearnaOriginalColor[]; extern const u32 gMonShinyPalette_CramorantGulping[]; extern const u32 gMonShinyPalette_CramorantGorging[]; extern const u32 gMonShinyPalette_ToxtricityLowKey[]; -extern const u32 gMonShinyPalette_AlcremieRubyCream[]; -extern const u32 gMonShinyPalette_AlcremieMatchaCream[]; -extern const u32 gMonShinyPalette_AlcremieMintCream[]; -extern const u32 gMonShinyPalette_AlcremieLemonCream[]; -extern const u32 gMonShinyPalette_AlcremieSaltedCream[]; -extern const u32 gMonShinyPalette_AlcremieRubySwirl[]; -extern const u32 gMonShinyPalette_AlcremieCaramelSwirl[]; -extern const u32 gMonShinyPalette_AlcremieRainbowSwirl[]; extern const u32 gMonShinyPalette_EiscueNoiceFace[]; extern const u32 gMonShinyPalette_IndeedeeFemale[]; extern const u32 gMonShinyPalette_MorpekoHangry[]; @@ -6089,7 +6057,15 @@ extern const u8 gMonIcon_Sirfetchd[]; extern const u8 gMonIcon_MrRime[]; extern const u8 gMonIcon_Runerigus[]; extern const u8 gMonIcon_Milcery[]; -extern const u8 gMonIcon_Alcremie[]; +extern const u8 gMonIcon_AlcremieStrawberryVanillaCream[]; +//extern const u8 gMonIcon_AlcremieStrawberryRubyCream[]; +//extern const u8 gMonIcon_AlcremieStrawberryMatchaCream[]; +//extern const u8 gMonIcon_AlcremieStrawberryMintCream[]; +//extern const u8 gMonIcon_AlcremieStrawberryLemonCream[]; +//extern const u8 gMonIcon_AlcremieStrawberrySaltedCream[]; +//extern const u8 gMonIcon_AlcremieStrawberryRubySwirl[]; +//extern const u8 gMonIcon_AlcremieStrawberryCaramelSwirl[]; +//extern const u8 gMonIcon_AlcremieStrawberryRainbowSwirl[]; extern const u8 gMonIcon_Falinks[]; extern const u8 gMonIcon_Pincurchin[]; extern const u8 gMonIcon_Snom[]; @@ -6403,14 +6379,6 @@ extern const u8 gMonIcon_MagearnaOriginalColor[]; extern const u8 gMonIcon_CramorantGulping[]; extern const u8 gMonIcon_CramorantGorging[]; extern const u8 gMonIcon_ToxtricityLowKey[]; -//extern const u8 gMonIcon_AlcremieStrawberryRubyCream[]; -//extern const u8 gMonIcon_AlcremieStrawberryMatchaCream[]; -//extern const u8 gMonIcon_AlcremieStrawberryMintCream[]; -//extern const u8 gMonIcon_AlcremieStrawberryLemonCream[]; -//extern const u8 gMonIcon_AlcremieStrawberrySaltedCream[]; -//extern const u8 gMonIcon_AlcremieStrawberryRubySwirl[]; -//extern const u8 gMonIcon_AlcremieStrawberryCaramelSwirl[]; -//extern const u8 gMonIcon_AlcremieStrawberryRainbowSwirl[]; extern const u8 gMonIcon_EiscueNoiceFace[]; extern const u8 gMonIcon_IndeedeeFemale[]; extern const u8 gMonIcon_MorpekoHangry[]; @@ -7336,7 +7304,97 @@ extern const u8 gMonFootprint_Sirfetchd[]; extern const u8 gMonFootprint_Mr_Rime[]; extern const u8 gMonFootprint_Runerigus[]; extern const u8 gMonFootprint_Milcery[]; +extern const u32 gMonFrontPic_AlcremieStrawberry[]; +extern const u32 gMonPalette_AlcremieStrawberryVanillaCream[]; +extern const u32 gMonPalette_AlcremieStrawberryRubyCream[]; +extern const u32 gMonPalette_AlcremieStrawberryMatchaCream[]; +extern const u32 gMonPalette_AlcremieStrawberryMintCream[]; +extern const u32 gMonPalette_AlcremieStrawberryLemonCream[]; +extern const u32 gMonPalette_AlcremieStrawberrySaltedCream[]; +extern const u32 gMonPalette_AlcremieStrawberryRubySwirl[]; +extern const u32 gMonPalette_AlcremieStrawberryCaramelSwirl[]; +extern const u32 gMonPalette_AlcremieStrawberryRainbowSwirl[]; +extern const u32 gMonBackPic_AlcremieStrawberry[]; +extern const u32 gMonShinyPalette_AlcremieStrawberry[]; extern const u8 gMonFootprint_Alcremie[]; +extern const u32 gMonFrontPic_AlcremieBerry[]; +extern const u32 gMonPalette_AlcremieBerryVanillaCream[]; +extern const u32 gMonPalette_AlcremieBerryRubyCream[]; +extern const u32 gMonPalette_AlcremieBerryMatchaCream[]; +extern const u32 gMonPalette_AlcremieBerryMintCream[]; +extern const u32 gMonPalette_AlcremieBerryLemonCream[]; +extern const u32 gMonPalette_AlcremieBerrySaltedCream[]; +extern const u32 gMonPalette_AlcremieBerryRubySwirl[]; +extern const u32 gMonPalette_AlcremieBerryCaramelSwirl[]; +extern const u32 gMonPalette_AlcremieBerryRainbowSwirl[]; +extern const u32 gMonBackPic_AlcremieBerry[]; +extern const u32 gMonShinyPalette_AlcremieBerry[]; +//extern const u8 gMonIcon_AlcremieBerry[]; +extern const u32 gMonFrontPic_AlcremieLove[]; +extern const u32 gMonPalette_AlcremieLoveVanillaCream[]; +extern const u32 gMonPalette_AlcremieLoveRubyCream[]; +extern const u32 gMonPalette_AlcremieLoveMatchaCream[]; +extern const u32 gMonPalette_AlcremieLoveMintCream[]; +extern const u32 gMonPalette_AlcremieLoveLemonCream[]; +extern const u32 gMonPalette_AlcremieLoveSaltedCream[]; +extern const u32 gMonPalette_AlcremieLoveRubySwirl[]; +extern const u32 gMonPalette_AlcremieLoveCaramelSwirl[]; +extern const u32 gMonPalette_AlcremieLoveRainbowSwirl[]; +extern const u32 gMonBackPic_AlcremieLove[]; +extern const u32 gMonShinyPalette_AlcremieLove[]; +//extern const u8 gMonIcon_AlcremieLove[]; +extern const u32 gMonFrontPic_AlcremieStar[]; +extern const u32 gMonPalette_AlcremieStarVanillaCream[]; +extern const u32 gMonPalette_AlcremieStarRubyCream[]; +extern const u32 gMonPalette_AlcremieStarMatchaCream[]; +extern const u32 gMonPalette_AlcremieStarMintCream[]; +extern const u32 gMonPalette_AlcremieStarLemonCream[]; +extern const u32 gMonPalette_AlcremieStarSaltedCream[]; +extern const u32 gMonPalette_AlcremieStarRubySwirl[]; +extern const u32 gMonPalette_AlcremieStarCaramelSwirl[]; +extern const u32 gMonPalette_AlcremieStarRainbowSwirl[]; +extern const u32 gMonBackPic_AlcremieStar[]; +extern const u32 gMonShinyPalette_AlcremieStar[]; +//extern const u8 gMonIcon_AlcremieStar[]; +extern const u32 gMonFrontPic_AlcremieClover[]; +extern const u32 gMonPalette_AlcremieCloverVanillaCream[]; +extern const u32 gMonPalette_AlcremieCloverRubyCream[]; +extern const u32 gMonPalette_AlcremieCloverMatchaCream[]; +extern const u32 gMonPalette_AlcremieCloverMintCream[]; +extern const u32 gMonPalette_AlcremieCloverLemonCream[]; +extern const u32 gMonPalette_AlcremieCloverSaltedCream[]; +extern const u32 gMonPalette_AlcremieCloverRubySwirl[]; +extern const u32 gMonPalette_AlcremieCloverCaramelSwirl[]; +extern const u32 gMonPalette_AlcremieCloverRainbowSwirl[]; +extern const u32 gMonBackPic_AlcremieClover[]; +extern const u32 gMonShinyPalette_AlcremieClover[]; +//extern const u8 gMonIcon_AlcremieClover[]; +extern const u32 gMonFrontPic_AlcremieFlower[]; +extern const u32 gMonPalette_AlcremieFlowerVanillaCream[]; +extern const u32 gMonPalette_AlcremieFlowerRubyCream[]; +extern const u32 gMonPalette_AlcremieFlowerMatchaCream[]; +extern const u32 gMonPalette_AlcremieFlowerMintCream[]; +extern const u32 gMonPalette_AlcremieFlowerLemonCream[]; +extern const u32 gMonPalette_AlcremieFlowerSaltedCream[]; +extern const u32 gMonPalette_AlcremieFlowerRubySwirl[]; +extern const u32 gMonPalette_AlcremieFlowerCaramelSwirl[]; +extern const u32 gMonPalette_AlcremieFlowerRainbowSwirl[]; +extern const u32 gMonBackPic_AlcremieFlower[]; +extern const u32 gMonShinyPalette_AlcremieFlower[]; +//extern const u8 gMonIcon_AlcremieFlower[]; +extern const u32 gMonFrontPic_AlcremieRibbon[]; +extern const u32 gMonPalette_AlcremieRibbonVanillaCream[]; +extern const u32 gMonPalette_AlcremieRibbonRubyCream[]; +extern const u32 gMonPalette_AlcremieRibbonMatchaCream[]; +extern const u32 gMonPalette_AlcremieRibbonMintCream[]; +extern const u32 gMonPalette_AlcremieRibbonLemonCream[]; +extern const u32 gMonPalette_AlcremieRibbonSaltedCream[]; +extern const u32 gMonPalette_AlcremieRibbonRubySwirl[]; +extern const u32 gMonPalette_AlcremieRibbonCaramelSwirl[]; +extern const u32 gMonPalette_AlcremieRibbonRainbowSwirl[]; +extern const u32 gMonBackPic_AlcremieRibbon[]; +extern const u32 gMonShinyPalette_AlcremieRibbon[]; +//extern const u8 gMonIcon_AlcremieRibbon[]; extern const u8 gMonFootprint_Falinks[]; extern const u8 gMonFootprint_Pincurchin[]; extern const u8 gMonFootprint_Snom[]; diff --git a/sound/cry_tables.inc b/sound/cry_tables.inc index 85cc9b9b29..ce7af98843 100644 --- a/sound/cry_tables.inc +++ b/sound/cry_tables.inc @@ -2082,6 +2082,61 @@ gCryTable:: cry Cry_CalyrexShadowRider @ Basculegion cry Cry_Basculegion + @ Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie + cry Cry_Alcremie .else @ Cramorant cry Cry_Unown @@ -2101,6 +2156,7 @@ gCryTable:: cry Cry_Unown cry Cry_Unown cry Cry_Unown + cry Cry_Unown @ Eiscue cry Cry_Unown @ Indeedee @@ -2122,6 +2178,61 @@ gCryTable:: cry Cry_Unown @ Basculegion cry Cry_Unown + @ Alcremie + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown .endif @ Gigantamax Forms cry Cry_Venusaur @@ -4233,6 +4344,61 @@ gCryTable_Reverse:: cry_reverse Cry_CalyrexShadowRider @ Basculegion cry_reverse Cry_Basculegion + @ Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie + cry_reverse Cry_Alcremie .else cry_reverse Cry_Unown cry_reverse Cry_Unown @@ -4258,6 +4424,60 @@ gCryTable_Reverse:: cry_reverse Cry_Unown cry_reverse Cry_Unown cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown .endif @ Gigantamax Forms cry_reverse Cry_Venusaur diff --git a/src/data/graphics/pokemon.h b/src/data/graphics/pokemon.h index b1f4cdf77c..0e12a0509c 100644 --- a/src/data/graphics/pokemon.h +++ b/src/data/graphics/pokemon.h @@ -1269,14 +1269,6 @@ const u32 gMonFrontPic_MagearnaOriginalColor[] = INCBIN_U32("graphics/pokemon/ma const u32 gMonFrontPic_CramorantGulping[] = INCBIN_U32("graphics/pokemon/cramorant/gulping/front.4bpp.lz"); const u32 gMonFrontPic_CramorantGorging[] = INCBIN_U32("graphics/pokemon/cramorant/gorging/front.4bpp.lz"); const u32 gMonFrontPic_ToxtricityLowKey[] = INCBIN_U32("graphics/pokemon/toxtricity/low_key/front.4bpp.lz"); -const u32 gMonFrontPic_AlcremieRubyCream[] = INCBIN_U32("graphics/pokemon/alcremie/ruby_cream/front.4bpp.lz"); -const u32 gMonFrontPic_AlcremieMatchaCream[] = INCBIN_U32("graphics/pokemon/alcremie/matcha_cream/front.4bpp.lz"); -const u32 gMonFrontPic_AlcremieMintCream[] = INCBIN_U32("graphics/pokemon/alcremie/mint_cream/front.4bpp.lz"); -const u32 gMonFrontPic_AlcremieLemonCream[] = INCBIN_U32("graphics/pokemon/alcremie/lemon_cream/front.4bpp.lz"); -const u32 gMonFrontPic_AlcremieSaltedCream[] = INCBIN_U32("graphics/pokemon/alcremie/salted_cream/front.4bpp.lz"); -const u32 gMonFrontPic_AlcremieRubySwirl[] = INCBIN_U32("graphics/pokemon/alcremie/ruby_swirl/front.4bpp.lz"); -const u32 gMonFrontPic_AlcremieCaramelSwirl[] = INCBIN_U32("graphics/pokemon/alcremie/caramel_swirl/front.4bpp.lz"); -const u32 gMonFrontPic_AlcremieRainbowSwirl[] = INCBIN_U32("graphics/pokemon/alcremie/rainbow_swirl/front.4bpp.lz"); const u32 gMonFrontPic_EiscueNoiceFace[] = INCBIN_U32("graphics/pokemon/eiscue/noice_face/front.4bpp.lz"); const u32 gMonFrontPic_IndeedeeFemale[] = INCBIN_U32("graphics/pokemon/indeedee/female/front.4bpp.lz"); const u32 gMonFrontPic_MorpekoHangry[] = INCBIN_U32("graphics/pokemon/morpeko/hangry/front.4bpp.lz"); @@ -2587,14 +2579,6 @@ const u32 gMonBackPic_MagearnaOriginalColor[] = INCBIN_U32("graphics/pokemon/mag const u32 gMonBackPic_CramorantGulping[] = INCBIN_U32("graphics/pokemon/cramorant/gulping/back.4bpp.lz"); const u32 gMonBackPic_CramorantGorging[] = INCBIN_U32("graphics/pokemon/cramorant/gorging/back.4bpp.lz"); const u32 gMonBackPic_ToxtricityLowKey[] = INCBIN_U32("graphics/pokemon/toxtricity/low_key/back.4bpp.lz"); -const u32 gMonBackPic_AlcremieRubyCream[] = INCBIN_U32("graphics/pokemon/alcremie/ruby_cream/back.4bpp.lz"); -const u32 gMonBackPic_AlcremieMatchaCream[] = INCBIN_U32("graphics/pokemon/alcremie/matcha_cream/back.4bpp.lz"); -const u32 gMonBackPic_AlcremieMintCream[] = INCBIN_U32("graphics/pokemon/alcremie/mint_cream/back.4bpp.lz"); -const u32 gMonBackPic_AlcremieLemonCream[] = INCBIN_U32("graphics/pokemon/alcremie/lemon_cream/back.4bpp.lz"); -const u32 gMonBackPic_AlcremieSaltedCream[] = INCBIN_U32("graphics/pokemon/alcremie/salted_cream/back.4bpp.lz"); -const u32 gMonBackPic_AlcremieRubySwirl[] = INCBIN_U32("graphics/pokemon/alcremie/ruby_swirl/back.4bpp.lz"); -const u32 gMonBackPic_AlcremieCaramelSwirl[] = INCBIN_U32("graphics/pokemon/alcremie/caramel_swirl/back.4bpp.lz"); -const u32 gMonBackPic_AlcremieRainbowSwirl[] = INCBIN_U32("graphics/pokemon/alcremie/rainbow_swirl/back.4bpp.lz"); const u32 gMonBackPic_EiscueNoiceFace[] = INCBIN_U32("graphics/pokemon/eiscue/noice_face/back.4bpp.lz"); const u32 gMonBackPic_IndeedeeFemale[] = INCBIN_U32("graphics/pokemon/indeedee/female/back.4bpp.lz"); const u32 gMonBackPic_MorpekoHangry[] = INCBIN_U32("graphics/pokemon/morpeko/hangry/back.4bpp.lz"); @@ -3852,14 +3836,6 @@ const u32 gMonPalette_MagearnaOriginalColor[] = INCBIN_U32("graphics/pokemon/mag const u32 gMonPalette_CramorantGulping[] = INCBIN_U32("graphics/pokemon/cramorant/gulping/normal.gbapal.lz"); const u32 gMonPalette_CramorantGorging[] = INCBIN_U32("graphics/pokemon/cramorant/gorging/normal.gbapal.lz"); const u32 gMonPalette_ToxtricityLowKey[] = INCBIN_U32("graphics/pokemon/toxtricity/low_key/normal.gbapal.lz"); -const u32 gMonPalette_AlcremieRubyCream[] = INCBIN_U32("graphics/pokemon/alcremie/ruby_cream/normal.gbapal.lz"); -const u32 gMonPalette_AlcremieMatchaCream[] = INCBIN_U32("graphics/pokemon/alcremie/matcha_cream/normal.gbapal.lz"); -const u32 gMonPalette_AlcremieMintCream[] = INCBIN_U32("graphics/pokemon/alcremie/mint_cream/normal.gbapal.lz"); -const u32 gMonPalette_AlcremieLemonCream[] = INCBIN_U32("graphics/pokemon/alcremie/lemon_cream/normal.gbapal.lz"); -const u32 gMonPalette_AlcremieSaltedCream[] = INCBIN_U32("graphics/pokemon/alcremie/salted_cream/normal.gbapal.lz"); -const u32 gMonPalette_AlcremieRubySwirl[] = INCBIN_U32("graphics/pokemon/alcremie/ruby_swirl/normal.gbapal.lz"); -const u32 gMonPalette_AlcremieCaramelSwirl[] = INCBIN_U32("graphics/pokemon/alcremie/caramel_swirl/normal.gbapal.lz"); -const u32 gMonPalette_AlcremieRainbowSwirl[] = INCBIN_U32("graphics/pokemon/alcremie/rainbow_swirl/normal.gbapal.lz"); const u32 gMonPalette_EiscueNoiceFace[] = INCBIN_U32("graphics/pokemon/eiscue/noice_face/normal.gbapal.lz"); const u32 gMonPalette_IndeedeeFemale[] = INCBIN_U32("graphics/pokemon/indeedee/female/normal.gbapal.lz"); const u32 gMonPalette_MorpekoHangry[] = INCBIN_U32("graphics/pokemon/morpeko/hangry/normal.gbapal.lz"); @@ -5112,14 +5088,6 @@ const u32 gMonShinyPalette_MagearnaOriginalColor[] = INCBIN_U32("graphics/pokemo const u32 gMonShinyPalette_CramorantGulping[] = INCBIN_U32("graphics/pokemon/cramorant/gulping/shiny.gbapal.lz"); const u32 gMonShinyPalette_CramorantGorging[] = INCBIN_U32("graphics/pokemon/cramorant/gorging/shiny.gbapal.lz"); const u32 gMonShinyPalette_ToxtricityLowKey[] = INCBIN_U32("graphics/pokemon/toxtricity/low_key/shiny.gbapal.lz"); -const u32 gMonShinyPalette_AlcremieRubyCream[] = INCBIN_U32("graphics/pokemon/alcremie/ruby_cream/shiny.gbapal.lz"); -const u32 gMonShinyPalette_AlcremieMatchaCream[] = INCBIN_U32("graphics/pokemon/alcremie/matcha_cream/shiny.gbapal.lz"); -const u32 gMonShinyPalette_AlcremieMintCream[] = INCBIN_U32("graphics/pokemon/alcremie/mint_cream/shiny.gbapal.lz"); -const u32 gMonShinyPalette_AlcremieLemonCream[] = INCBIN_U32("graphics/pokemon/alcremie/lemon_cream/shiny.gbapal.lz"); -const u32 gMonShinyPalette_AlcremieSaltedCream[] = INCBIN_U32("graphics/pokemon/alcremie/salted_cream/shiny.gbapal.lz"); -const u32 gMonShinyPalette_AlcremieRubySwirl[] = INCBIN_U32("graphics/pokemon/alcremie/ruby_swirl/shiny.gbapal.lz"); -const u32 gMonShinyPalette_AlcremieCaramelSwirl[] = INCBIN_U32("graphics/pokemon/alcremie/caramel_swirl/shiny.gbapal.lz"); -const u32 gMonShinyPalette_AlcremieRainbowSwirl[] = INCBIN_U32("graphics/pokemon/alcremie/rainbow_swirl/shiny.gbapal.lz"); const u32 gMonShinyPalette_EiscueNoiceFace[] = INCBIN_U32("graphics/pokemon/eiscue/noice_face/shiny.gbapal.lz"); const u32 gMonShinyPalette_IndeedeeFemale[] = INCBIN_U32("graphics/pokemon/indeedee/female/shiny.gbapal.lz"); const u32 gMonShinyPalette_MorpekoHangry[] = INCBIN_U32("graphics/pokemon/morpeko/hangry/shiny.gbapal.lz"); @@ -6053,7 +6021,15 @@ const u8 gMonIcon_Sirfetchd[] = INCBIN_U8("graphics/pokemon/sirfetchd/icon.4bpp" const u8 gMonIcon_MrRime[] = INCBIN_U8("graphics/pokemon/mr_rime/icon.4bpp"); const u8 gMonIcon_Runerigus[] = INCBIN_U8("graphics/pokemon/runerigus/icon.4bpp"); const u8 gMonIcon_Milcery[] = INCBIN_U8("graphics/pokemon/milcery/icon.4bpp"); -const u8 gMonIcon_Alcremie[] = INCBIN_U8("graphics/pokemon/alcremie/icon.4bpp"); +const u8 gMonIcon_AlcremieStrawberryVanillaCream[] = INCBIN_U8("graphics/pokemon/alcremie/icon.4bpp"); +//const u8 gMonIcon_AlcremieStrawberryRubyCream[] = INCBIN_U8("graphics/pokemon/alcremie/ruby_cream/icon.4bpp"); +//const u8 gMonIcon_AlcremieStrawberryMatchaCream[] = INCBIN_U8("graphics/pokemon/alcremie/matcha_cream/icon.4bpp"); +//const u8 gMonIcon_AlcremieStrawberryMintCream[] = INCBIN_U8("graphics/pokemon/alcremie/mint_cream/icon.4bpp"); +//const u8 gMonIcon_AlcremieStrawberryLemonCream[] = INCBIN_U8("graphics/pokemon/alcremie/lemon_cream/icon.4bpp"); +//const u8 gMonIcon_AlcremieStrawberrySaltedCream[] = INCBIN_U8("graphics/pokemon/alcremie/salted_cream/icon.4bpp"); +//const u8 gMonIcon_AlcremieStrawberryRubySwirl[] = INCBIN_U8("graphics/pokemon/alcremie/ruby_swirl/icon.4bpp"); +//const u8 gMonIcon_AlcremieStrawberryCaramelSwirl[] = INCBIN_U8("graphics/pokemon/alcremie/caramel_swirl/icon.4bpp"); +//const u8 gMonIcon_AlcremieStrawberryRainbowSwirl[] = INCBIN_U8("graphics/pokemon/alcremie/rainbow_swirl/icon.4bpp"); const u8 gMonIcon_Falinks[] = INCBIN_U8("graphics/pokemon/falinks/icon.4bpp"); const u8 gMonIcon_Pincurchin[] = INCBIN_U8("graphics/pokemon/pincurchin/icon.4bpp"); const u8 gMonIcon_Snom[] = INCBIN_U8("graphics/pokemon/snom/icon.4bpp"); @@ -6367,14 +6343,6 @@ const u8 gMonIcon_MagearnaOriginalColor[] = INCBIN_U8("graphics/pokemon/magearna const u8 gMonIcon_CramorantGulping[] = INCBIN_U8("graphics/pokemon/cramorant/gulping/icon.4bpp"); const u8 gMonIcon_CramorantGorging[] = INCBIN_U8("graphics/pokemon/cramorant/gorging/icon.4bpp"); const u8 gMonIcon_ToxtricityLowKey[] = INCBIN_U8("graphics/pokemon/toxtricity/low_key/icon.4bpp"); -//const u8 gMonIcon_AlcremieStrawberryRubyCream[] = INCBIN_U8("graphics/pokemon/alcremie/ruby_cream/icon.4bpp"); -//const u8 gMonIcon_AlcremieStrawberryMatchaCream[] = INCBIN_U8("graphics/pokemon/alcremie/matcha_cream/icon.4bpp"); -//const u8 gMonIcon_AlcremieStrawberryMintCream[] = INCBIN_U8("graphics/pokemon/alcremie/mint_cream/icon.4bpp"); -//const u8 gMonIcon_AlcremieStrawberryLemonCream[] = INCBIN_U8("graphics/pokemon/alcremie/lemon_cream/icon.4bpp"); -//const u8 gMonIcon_AlcremieStrawberrySaltedCream[] = INCBIN_U8("graphics/pokemon/alcremie/salted_cream/icon.4bpp"); -//const u8 gMonIcon_AlcremieStrawberryRubySwirl[] = INCBIN_U8("graphics/pokemon/alcremie/ruby_swirl/icon.4bpp"); -//const u8 gMonIcon_AlcremieStrawberryCaramelSwirl[] = INCBIN_U8("graphics/pokemon/alcremie/caramel_swirl/icon.4bpp"); -//const u8 gMonIcon_AlcremieStrawberryRainbowSwirl[] = INCBIN_U8("graphics/pokemon/alcremie/rainbow_swirl/icon.4bpp"); const u8 gMonIcon_EiscueNoiceFace[] = INCBIN_U8("graphics/pokemon/eiscue/noice_face/icon.4bpp"); const u8 gMonIcon_IndeedeeFemale[] = INCBIN_U8("graphics/pokemon/indeedee/female/icon.4bpp"); const u8 gMonIcon_MorpekoHangry[] = INCBIN_U8("graphics/pokemon/morpeko/hangry/icon.4bpp"); @@ -7300,7 +7268,99 @@ const u8 gMonFootprint_Sirfetchd[] = INCBIN_U8("graphics/pokemon/sirfetchd/footp const u8 gMonFootprint_Mr_Rime[] = INCBIN_U8("graphics/pokemon/mr_rime/footprint.1bpp"); const u8 gMonFootprint_Runerigus[] = INCBIN_U8("graphics/pokemon/runerigus/footprint.1bpp"); const u8 gMonFootprint_Milcery[] = INCBIN_U8("graphics/pokemon/milcery/footprint.1bpp"); + +const u32 gMonFrontPic_AlcremieStrawberry[] = INCBIN_U32("graphics/pokemon/alcremie/strawberry/front.4bpp.lz"); +const u32 gMonPalette_AlcremieStrawberryVanillaCream[] = INCBIN_U32("graphics/pokemon/alcremie/strawberry/Strawberry_Default.gbapal.lz"); +const u32 gMonPalette_AlcremieStrawberryRubyCream[] = INCBIN_U32("graphics/pokemon/alcremie/strawberry/Strawberry_Ruby_Cream.gbapal.lz"); +const u32 gMonPalette_AlcremieStrawberryMatchaCream[] = INCBIN_U32("graphics/pokemon/alcremie/strawberry/Strawberry_Matcha_Cream.gbapal.lz"); +const u32 gMonPalette_AlcremieStrawberryMintCream[] = INCBIN_U32("graphics/pokemon/alcremie/strawberry/Strawberry_Mint_Cream.gbapal.lz"); +const u32 gMonPalette_AlcremieStrawberryLemonCream[] = INCBIN_U32("graphics/pokemon/alcremie/strawberry/Strawberry_Lemon_Cream.gbapal.lz"); +const u32 gMonPalette_AlcremieStrawberrySaltedCream[] = INCBIN_U32("graphics/pokemon/alcremie/strawberry/Strawberry_Salted_Cream.gbapal.lz"); +const u32 gMonPalette_AlcremieStrawberryRubySwirl[] = INCBIN_U32("graphics/pokemon/alcremie/strawberry/Strawberry_Ruby_Swirl.gbapal.lz"); +const u32 gMonPalette_AlcremieStrawberryCaramelSwirl[] = INCBIN_U32("graphics/pokemon/alcremie/strawberry/Strawberry_Caramel_Swirl.gbapal.lz"); +const u32 gMonPalette_AlcremieStrawberryRainbowSwirl[] = INCBIN_U32("graphics/pokemon/alcremie/strawberry/Strawberry_Rainbow_Swirl.gbapal.lz"); +const u32 gMonBackPic_AlcremieStrawberry[] = INCBIN_U32("graphics/pokemon/alcremie/strawberry/back.4bpp.lz"); +const u32 gMonShinyPalette_AlcremieStrawberry[] = INCBIN_U32("graphics/pokemon/alcremie/strawberry/Strawberry_Shiny.gbapal.lz"); const u8 gMonFootprint_Alcremie[] = INCBIN_U8("graphics/pokemon/alcremie/footprint.1bpp"); + +const u32 gMonFrontPic_AlcremieBerry[] = INCBIN_U32("graphics/pokemon/alcremie/berry/front.4bpp.lz"); +const u32 gMonPalette_AlcremieBerryVanillaCream[] = INCBIN_U32("graphics/pokemon/alcremie/berry/Berry_Default.gbapal.lz"); +const u32 gMonPalette_AlcremieBerryRubyCream[] = INCBIN_U32("graphics/pokemon/alcremie/berry/Berry_Ruby_Cream.gbapal.lz"); +const u32 gMonPalette_AlcremieBerryMatchaCream[] = INCBIN_U32("graphics/pokemon/alcremie/berry/Berry_Matcha_Cream.gbapal.lz"); +const u32 gMonPalette_AlcremieBerryMintCream[] = INCBIN_U32("graphics/pokemon/alcremie/berry/Berry_Mint_Cream.gbapal.lz"); +const u32 gMonPalette_AlcremieBerryLemonCream[] = INCBIN_U32("graphics/pokemon/alcremie/berry/Berry_Lemon_Cream.gbapal.lz"); +const u32 gMonPalette_AlcremieBerrySaltedCream[] = INCBIN_U32("graphics/pokemon/alcremie/berry/Berry_Salted_Cream.gbapal.lz"); +const u32 gMonPalette_AlcremieBerryRubySwirl[] = INCBIN_U32("graphics/pokemon/alcremie/berry/Berry_Ruby_Swirl.gbapal.lz"); +const u32 gMonPalette_AlcremieBerryCaramelSwirl[] = INCBIN_U32("graphics/pokemon/alcremie/berry/Berry_Caramel_Swirl.gbapal.lz"); +const u32 gMonPalette_AlcremieBerryRainbowSwirl[] = INCBIN_U32("graphics/pokemon/alcremie/berry/Berry_Rainbow_Swirl.gbapal.lz"); +const u32 gMonBackPic_AlcremieBerry[] = INCBIN_U32("graphics/pokemon/alcremie/berry/back.4bpp.lz"); +const u32 gMonShinyPalette_AlcremieBerry[] = INCBIN_U32("graphics/pokemon/alcremie/berry/Berry_Shiny.gbapal.lz"); + +const u32 gMonFrontPic_AlcremieLove[] = INCBIN_U32("graphics/pokemon/alcremie/love/front.4bpp.lz"); +const u32 gMonPalette_AlcremieLoveVanillaCream[] = INCBIN_U32("graphics/pokemon/alcremie/love/Love_Default.gbapal.lz"); +const u32 gMonPalette_AlcremieLoveRubyCream[] = INCBIN_U32("graphics/pokemon/alcremie/love/Love_Ruby_Cream.gbapal.lz"); +const u32 gMonPalette_AlcremieLoveMatchaCream[] = INCBIN_U32("graphics/pokemon/alcremie/love/Love_Matcha_Cream.gbapal.lz"); +const u32 gMonPalette_AlcremieLoveMintCream[] = INCBIN_U32("graphics/pokemon/alcremie/love/Love_Mint_Cream.gbapal.lz"); +const u32 gMonPalette_AlcremieLoveLemonCream[] = INCBIN_U32("graphics/pokemon/alcremie/love/Love_Lemon_Cream.gbapal.lz"); +const u32 gMonPalette_AlcremieLoveSaltedCream[] = INCBIN_U32("graphics/pokemon/alcremie/love/Love_Salted_Cream.gbapal.lz"); +const u32 gMonPalette_AlcremieLoveRubySwirl[] = INCBIN_U32("graphics/pokemon/alcremie/love/Love_Ruby_Swirl.gbapal.lz"); +const u32 gMonPalette_AlcremieLoveCaramelSwirl[] = INCBIN_U32("graphics/pokemon/alcremie/love/Love_Caramel_Swirl.gbapal.lz"); +const u32 gMonPalette_AlcremieLoveRainbowSwirl[] = INCBIN_U32("graphics/pokemon/alcremie/love/Love_Rainbow_Swirl.gbapal.lz"); +const u32 gMonBackPic_AlcremieLove[] = INCBIN_U32("graphics/pokemon/alcremie/love/back.4bpp.lz"); +const u32 gMonShinyPalette_AlcremieLove[] = INCBIN_U32("graphics/pokemon/alcremie/love/Love_Shiny.gbapal.lz"); + +const u32 gMonFrontPic_AlcremieStar[] = INCBIN_U32("graphics/pokemon/alcremie/star/front.4bpp.lz"); +const u32 gMonPalette_AlcremieStarVanillaCream[] = INCBIN_U32("graphics/pokemon/alcremie/star/Star_Default.gbapal.lz"); +const u32 gMonPalette_AlcremieStarRubyCream[] = INCBIN_U32("graphics/pokemon/alcremie/star/Star_Ruby_Cream.gbapal.lz"); +const u32 gMonPalette_AlcremieStarMatchaCream[] = INCBIN_U32("graphics/pokemon/alcremie/star/Star_Matcha_Cream.gbapal.lz"); +const u32 gMonPalette_AlcremieStarMintCream[] = INCBIN_U32("graphics/pokemon/alcremie/star/Star_Mint_Cream.gbapal.lz"); +const u32 gMonPalette_AlcremieStarLemonCream[] = INCBIN_U32("graphics/pokemon/alcremie/star/Star_Lemon_Cream.gbapal.lz"); +const u32 gMonPalette_AlcremieStarSaltedCream[] = INCBIN_U32("graphics/pokemon/alcremie/star/Star_Salted_Cream.gbapal.lz"); +const u32 gMonPalette_AlcremieStarRubySwirl[] = INCBIN_U32("graphics/pokemon/alcremie/star/Star_Ruby_Swirl.gbapal.lz"); +const u32 gMonPalette_AlcremieStarCaramelSwirl[] = INCBIN_U32("graphics/pokemon/alcremie/star/Star_Caramel_Swirl.gbapal.lz"); +const u32 gMonPalette_AlcremieStarRainbowSwirl[] = INCBIN_U32("graphics/pokemon/alcremie/star/Star_Rainbow_Swirl.gbapal.lz"); +const u32 gMonBackPic_AlcremieStar[] = INCBIN_U32("graphics/pokemon/alcremie/star/back.4bpp.lz"); +const u32 gMonShinyPalette_AlcremieStar[] = INCBIN_U32("graphics/pokemon/alcremie/star/Star_Shiny.gbapal.lz"); + +const u32 gMonFrontPic_AlcremieClover[] = INCBIN_U32("graphics/pokemon/alcremie/clover/front.4bpp.lz"); +const u32 gMonPalette_AlcremieCloverVanillaCream[] = INCBIN_U32("graphics/pokemon/alcremie/clover/Clover_Default.gbapal.lz"); +const u32 gMonPalette_AlcremieCloverRubyCream[] = INCBIN_U32("graphics/pokemon/alcremie/clover/Clover_Ruby_Cream.gbapal.lz"); +const u32 gMonPalette_AlcremieCloverMatchaCream[] = INCBIN_U32("graphics/pokemon/alcremie/clover/Clover_Matcha_Cream.gbapal.lz"); +const u32 gMonPalette_AlcremieCloverMintCream[] = INCBIN_U32("graphics/pokemon/alcremie/clover/Clover_Mint_Cream.gbapal.lz"); +const u32 gMonPalette_AlcremieCloverLemonCream[] = INCBIN_U32("graphics/pokemon/alcremie/clover/Clover_Lemon_Cream.gbapal.lz"); +const u32 gMonPalette_AlcremieCloverSaltedCream[] = INCBIN_U32("graphics/pokemon/alcremie/clover/Clover_Salted_Cream.gbapal.lz"); +const u32 gMonPalette_AlcremieCloverRubySwirl[] = INCBIN_U32("graphics/pokemon/alcremie/clover/Clover_Ruby_Swirl.gbapal.lz"); +const u32 gMonPalette_AlcremieCloverCaramelSwirl[] = INCBIN_U32("graphics/pokemon/alcremie/clover/Clover_Caramel_Swirl.gbapal.lz"); +const u32 gMonPalette_AlcremieCloverRainbowSwirl[] = INCBIN_U32("graphics/pokemon/alcremie/clover/Clover_Rainbow_Swirl.gbapal.lz"); +const u32 gMonBackPic_AlcremieClover[] = INCBIN_U32("graphics/pokemon/alcremie/clover/back.4bpp.lz"); +const u32 gMonShinyPalette_AlcremieClover[] = INCBIN_U32("graphics/pokemon/alcremie/clover/Clover_Shiny.gbapal.lz"); + +const u32 gMonFrontPic_AlcremieFlower[] = INCBIN_U32("graphics/pokemon/alcremie/flower/front.4bpp.lz"); +const u32 gMonPalette_AlcremieFlowerVanillaCream[] = INCBIN_U32("graphics/pokemon/alcremie/flower/Flower_Default.gbapal.lz"); +const u32 gMonPalette_AlcremieFlowerRubyCream[] = INCBIN_U32("graphics/pokemon/alcremie/flower/Flower_Ruby_Cream.gbapal.lz"); +const u32 gMonPalette_AlcremieFlowerMatchaCream[] = INCBIN_U32("graphics/pokemon/alcremie/flower/Flower_Matcha_Cream.gbapal.lz"); +const u32 gMonPalette_AlcremieFlowerMintCream[] = INCBIN_U32("graphics/pokemon/alcremie/flower/Flower_Mint_Cream.gbapal.lz"); +const u32 gMonPalette_AlcremieFlowerLemonCream[] = INCBIN_U32("graphics/pokemon/alcremie/flower/Flower_Lemon_Cream.gbapal.lz"); +const u32 gMonPalette_AlcremieFlowerSaltedCream[] = INCBIN_U32("graphics/pokemon/alcremie/flower/Flower_Salted_Cream.gbapal.lz"); +const u32 gMonPalette_AlcremieFlowerRubySwirl[] = INCBIN_U32("graphics/pokemon/alcremie/flower/Flower_Ruby_Swirl.gbapal.lz"); +const u32 gMonPalette_AlcremieFlowerCaramelSwirl[] = INCBIN_U32("graphics/pokemon/alcremie/flower/Flower_Caramel_Swirl.gbapal.lz"); +const u32 gMonPalette_AlcremieFlowerRainbowSwirl[] = INCBIN_U32("graphics/pokemon/alcremie/flower/Flower_Rainbow_Swirl.gbapal.lz"); +const u32 gMonBackPic_AlcremieFlower[] = INCBIN_U32("graphics/pokemon/alcremie/flower/back.4bpp.lz"); +const u32 gMonShinyPalette_AlcremieFlower[] = INCBIN_U32("graphics/pokemon/alcremie/flower/Flower_Shiny.gbapal.lz"); + +const u32 gMonFrontPic_AlcremieRibbon[] = INCBIN_U32("graphics/pokemon/alcremie/ribbon/front.4bpp.lz"); +const u32 gMonPalette_AlcremieRibbonVanillaCream[] = INCBIN_U32("graphics/pokemon/alcremie/ribbon/Ribbon_Default.gbapal.lz"); +const u32 gMonPalette_AlcremieRibbonRubyCream[] = INCBIN_U32("graphics/pokemon/alcremie/ribbon/Ribbon_Ruby_Cream.gbapal.lz"); +const u32 gMonPalette_AlcremieRibbonMatchaCream[] = INCBIN_U32("graphics/pokemon/alcremie/ribbon/Ribbon_Matcha_Cream.gbapal.lz"); +const u32 gMonPalette_AlcremieRibbonMintCream[] = INCBIN_U32("graphics/pokemon/alcremie/ribbon/Ribbon_Mint_Cream.gbapal.lz"); +const u32 gMonPalette_AlcremieRibbonLemonCream[] = INCBIN_U32("graphics/pokemon/alcremie/ribbon/Ribbon_Lemon_Cream.gbapal.lz"); +const u32 gMonPalette_AlcremieRibbonSaltedCream[] = INCBIN_U32("graphics/pokemon/alcremie/ribbon/Ribbon_Salted_Cream.gbapal.lz"); +const u32 gMonPalette_AlcremieRibbonRubySwirl[] = INCBIN_U32("graphics/pokemon/alcremie/ribbon/Ribbon_Ruby_Swirl.gbapal.lz"); +const u32 gMonPalette_AlcremieRibbonCaramelSwirl[] = INCBIN_U32("graphics/pokemon/alcremie/ribbon/Ribbon_Caramel_Swirl.gbapal.lz"); +const u32 gMonPalette_AlcremieRibbonRainbowSwirl[] = INCBIN_U32("graphics/pokemon/alcremie/ribbon/Ribbon_Rainbow_Swirl.gbapal.lz"); +const u32 gMonBackPic_AlcremieRibbon[] = INCBIN_U32("graphics/pokemon/alcremie/ribbon/back.4bpp.lz"); +const u32 gMonShinyPalette_AlcremieRibbon[] = INCBIN_U32("graphics/pokemon/alcremie/ribbon/Ribbon_Shiny.gbapal.lz"); + const u8 gMonFootprint_Falinks[] = INCBIN_U8("graphics/pokemon/falinks/footprint.1bpp"); const u8 gMonFootprint_Pincurchin[] = INCBIN_U8("graphics/pokemon/pincurchin/footprint.1bpp"); const u8 gMonFootprint_Snom[] = INCBIN_U8("graphics/pokemon/snom/footprint.1bpp"); diff --git a/src/data/pokemon/form_change_table_pointers.h b/src/data/pokemon/form_change_table_pointers.h index bd8f42a3e2..b89591437a 100644 --- a/src/data/pokemon/form_change_table_pointers.h +++ b/src/data/pokemon/form_change_table_pointers.h @@ -271,7 +271,69 @@ const struct FormChange *const gFormChangeTablePointers[NUM_SPECIES] = [SPECIES_HATTERENE_GIGANTAMAX] = sHattereneFormChangeTable, [SPECIES_GRIMMSNARL] = sGrimmsnarlFormChangeTable, [SPECIES_GRIMMSNARL_GIGANTAMAX] = sGrimmsnarlFormChangeTable, - [SPECIES_ALCREMIE] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_BERRY_VANILLA_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_BERRY_RUBY_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_BERRY_MATCHA_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_BERRY_MINT_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_BERRY_LEMON_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_BERRY_SALTED_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_BERRY_RUBY_SWIRL] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_BERRY_CARAMEL_SWIRL] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_BERRY_RAINBOW_SWIRL] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_LOVE_VANILLA_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_LOVE_RUBY_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_LOVE_MATCHA_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_LOVE_MINT_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_LOVE_LEMON_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_LOVE_SALTED_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_LOVE_RUBY_SWIRL] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_LOVE_CARAMEL_SWIRL] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_LOVE_RAINBOW_SWIRL] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_STAR_VANILLA_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_STAR_RUBY_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_STAR_MATCHA_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_STAR_MINT_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_STAR_LEMON_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_STAR_SALTED_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_STAR_RUBY_SWIRL] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_STAR_CARAMEL_SWIRL] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_STAR_RAINBOW_SWIRL] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_CLOVER_VANILLA_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_CLOVER_RUBY_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_CLOVER_MATCHA_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_CLOVER_MINT_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_CLOVER_LEMON_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_CLOVER_SALTED_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_CLOVER_RUBY_SWIRL] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_CLOVER_CARAMEL_SWIRL] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_CLOVER_RAINBOW_SWIRL] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_FLOWER_VANILLA_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_FLOWER_RUBY_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_FLOWER_MATCHA_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_FLOWER_MINT_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_FLOWER_LEMON_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_FLOWER_SALTED_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_FLOWER_RUBY_SWIRL] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_FLOWER_CARAMEL_SWIRL] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_FLOWER_RAINBOW_SWIRL] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_RIBBON_VANILLA_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_RIBBON_RUBY_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_RIBBON_MATCHA_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_RIBBON_MINT_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_RIBBON_LEMON_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_RIBBON_SALTED_CREAM] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_RIBBON_RUBY_SWIRL] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_RIBBON_CARAMEL_SWIRL] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_RIBBON_RAINBOW_SWIRL] = sAlcremieFormChangeTable, [SPECIES_ALCREMIE_GIGANTAMAX] = sAlcremieFormChangeTable, [SPECIES_EISCUE_ICE_FACE] = sEiscueFormChangeTable, [SPECIES_EISCUE_NOICE_FACE] = sEiscueFormChangeTable, diff --git a/src/data/pokemon/form_species_table_pointers.h b/src/data/pokemon/form_species_table_pointers.h index e615fd1b14..f867c97d3f 100644 --- a/src/data/pokemon/form_species_table_pointers.h +++ b/src/data/pokemon/form_species_table_pointers.h @@ -161,6 +161,68 @@ const u16 *const gFormSpeciesIdTables[NUM_SPECIES] = [SPECIES_SINISTEA_PHONY] = sSinisteaFormSpeciesIdTable, [SPECIES_POLTEAGEIST_PHONY] = sPolteageistFormSpeciesIdTable, [SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_BERRY_VANILLA_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_BERRY_RUBY_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_BERRY_MATCHA_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_BERRY_MINT_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_BERRY_LEMON_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_BERRY_SALTED_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_BERRY_RUBY_SWIRL] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_BERRY_CARAMEL_SWIRL] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_BERRY_RAINBOW_SWIRL] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_LOVE_VANILLA_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_LOVE_RUBY_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_LOVE_MATCHA_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_LOVE_MINT_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_LOVE_LEMON_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_LOVE_SALTED_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_LOVE_RUBY_SWIRL] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_LOVE_CARAMEL_SWIRL] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_LOVE_RAINBOW_SWIRL] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_STAR_VANILLA_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_STAR_RUBY_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_STAR_MATCHA_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_STAR_MINT_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_STAR_LEMON_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_STAR_SALTED_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_STAR_RUBY_SWIRL] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_STAR_CARAMEL_SWIRL] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_STAR_RAINBOW_SWIRL] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_CLOVER_VANILLA_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_CLOVER_RUBY_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_CLOVER_MATCHA_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_CLOVER_MINT_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_CLOVER_LEMON_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_CLOVER_SALTED_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_CLOVER_RUBY_SWIRL] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_CLOVER_CARAMEL_SWIRL] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_CLOVER_RAINBOW_SWIRL] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_FLOWER_VANILLA_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_FLOWER_RUBY_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_FLOWER_MATCHA_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_FLOWER_MINT_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_FLOWER_LEMON_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_FLOWER_SALTED_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_FLOWER_RUBY_SWIRL] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_FLOWER_CARAMEL_SWIRL] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_FLOWER_RAINBOW_SWIRL] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_RIBBON_VANILLA_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_RIBBON_RUBY_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_RIBBON_MATCHA_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_RIBBON_MINT_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_RIBBON_LEMON_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_RIBBON_SALTED_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_RIBBON_RUBY_SWIRL] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_RIBBON_CARAMEL_SWIRL] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_RIBBON_RAINBOW_SWIRL] = sAlcremieFormSpeciesIdTable, [SPECIES_EISCUE_ICE_FACE] = sEiscueFormSpeciesIdTable, [SPECIES_INDEEDEE_MALE] = sIndeedeeFormSpeciesIdTable, [SPECIES_MORPEKO_FULL_BELLY] = sMorpekoFormSpeciesIdTable, @@ -561,15 +623,6 @@ const u16 *const gFormSpeciesIdTables[NUM_SPECIES] = [SPECIES_SINISTEA_ANTIQUE] = sSinisteaFormSpeciesIdTable, // Polteageist [SPECIES_POLTEAGEIST_ANTIQUE] = sPolteageistFormSpeciesIdTable, - // Alcremie - [SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM] = sAlcremieFormSpeciesIdTable, - [SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM] = sAlcremieFormSpeciesIdTable, - [SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM] = sAlcremieFormSpeciesIdTable, - [SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM] = sAlcremieFormSpeciesIdTable, - [SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM] = sAlcremieFormSpeciesIdTable, - [SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL] = sAlcremieFormSpeciesIdTable, - [SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL] = sAlcremieFormSpeciesIdTable, - [SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL] = sAlcremieFormSpeciesIdTable, // Eiscue [SPECIES_EISCUE_NOICE_FACE] = sEiscueFormSpeciesIdTable, // Indeedee diff --git a/src/data/pokemon/form_species_tables.h b/src/data/pokemon/form_species_tables.h index a1d5314884..791ff90ba6 100644 --- a/src/data/pokemon/form_species_tables.h +++ b/src/data/pokemon/form_species_tables.h @@ -1216,6 +1216,61 @@ static const u16 sAlcremieFormSpeciesIdTable[] = { SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL, SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL, SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL, + SPECIES_ALCREMIE_BERRY_VANILLA_CREAM, + SPECIES_ALCREMIE_BERRY_RUBY_CREAM, + SPECIES_ALCREMIE_BERRY_MATCHA_CREAM, + SPECIES_ALCREMIE_BERRY_MINT_CREAM, + SPECIES_ALCREMIE_BERRY_LEMON_CREAM, + SPECIES_ALCREMIE_BERRY_SALTED_CREAM, + SPECIES_ALCREMIE_BERRY_RUBY_SWIRL, + SPECIES_ALCREMIE_BERRY_CARAMEL_SWIRL, + SPECIES_ALCREMIE_BERRY_RAINBOW_SWIRL, + SPECIES_ALCREMIE_LOVE_VANILLA_CREAM, + SPECIES_ALCREMIE_LOVE_RUBY_CREAM, + SPECIES_ALCREMIE_LOVE_MATCHA_CREAM, + SPECIES_ALCREMIE_LOVE_MINT_CREAM, + SPECIES_ALCREMIE_LOVE_LEMON_CREAM, + SPECIES_ALCREMIE_LOVE_SALTED_CREAM, + SPECIES_ALCREMIE_LOVE_RUBY_SWIRL, + SPECIES_ALCREMIE_LOVE_CARAMEL_SWIRL, + SPECIES_ALCREMIE_LOVE_RAINBOW_SWIRL, + SPECIES_ALCREMIE_STAR_VANILLA_CREAM, + SPECIES_ALCREMIE_STAR_RUBY_CREAM, + SPECIES_ALCREMIE_STAR_MATCHA_CREAM, + SPECIES_ALCREMIE_STAR_MINT_CREAM, + SPECIES_ALCREMIE_STAR_LEMON_CREAM, + SPECIES_ALCREMIE_STAR_SALTED_CREAM, + SPECIES_ALCREMIE_STAR_RUBY_SWIRL, + SPECIES_ALCREMIE_STAR_CARAMEL_SWIRL, + SPECIES_ALCREMIE_STAR_RAINBOW_SWIRL, + SPECIES_ALCREMIE_CLOVER_VANILLA_CREAM, + SPECIES_ALCREMIE_CLOVER_RUBY_CREAM, + SPECIES_ALCREMIE_CLOVER_MATCHA_CREAM, + SPECIES_ALCREMIE_CLOVER_MINT_CREAM, + SPECIES_ALCREMIE_CLOVER_LEMON_CREAM, + SPECIES_ALCREMIE_CLOVER_SALTED_CREAM, + SPECIES_ALCREMIE_CLOVER_RUBY_SWIRL, + SPECIES_ALCREMIE_CLOVER_CARAMEL_SWIRL, + SPECIES_ALCREMIE_CLOVER_RAINBOW_SWIRL, + SPECIES_ALCREMIE_FLOWER_VANILLA_CREAM, + SPECIES_ALCREMIE_FLOWER_RUBY_CREAM, + SPECIES_ALCREMIE_FLOWER_MATCHA_CREAM, + SPECIES_ALCREMIE_FLOWER_MINT_CREAM, + SPECIES_ALCREMIE_FLOWER_LEMON_CREAM, + SPECIES_ALCREMIE_FLOWER_SALTED_CREAM, + SPECIES_ALCREMIE_FLOWER_RUBY_SWIRL, + SPECIES_ALCREMIE_FLOWER_CARAMEL_SWIRL, + SPECIES_ALCREMIE_FLOWER_RAINBOW_SWIRL, + SPECIES_ALCREMIE_RIBBON_VANILLA_CREAM, + SPECIES_ALCREMIE_RIBBON_RUBY_CREAM, + SPECIES_ALCREMIE_RIBBON_MATCHA_CREAM, + SPECIES_ALCREMIE_RIBBON_MINT_CREAM, + SPECIES_ALCREMIE_RIBBON_LEMON_CREAM, + SPECIES_ALCREMIE_RIBBON_SALTED_CREAM, + SPECIES_ALCREMIE_RIBBON_RUBY_SWIRL, + SPECIES_ALCREMIE_RIBBON_CARAMEL_SWIRL, + SPECIES_ALCREMIE_RIBBON_RAINBOW_SWIRL, + SPECIES_ALCREMIE_GIGANTAMAX, FORM_SPECIES_END, }; diff --git a/src/data/pokemon/level_up_learnset_pointers.h b/src/data/pokemon/level_up_learnset_pointers.h index 3a6dc86cc8..40b2549a2c 100644 --- a/src/data/pokemon/level_up_learnset_pointers.h +++ b/src/data/pokemon/level_up_learnset_pointers.h @@ -879,6 +879,68 @@ const struct LevelUpMove *const gLevelUpLearnsets[NUM_SPECIES] = [SPECIES_RUNERIGUS] = sRunerigusLevelUpLearnset, [SPECIES_MILCERY] = sMilceryLevelUpLearnset, [SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_BERRY_VANILLA_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_BERRY_RUBY_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_BERRY_MATCHA_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_BERRY_MINT_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_BERRY_LEMON_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_BERRY_SALTED_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_BERRY_RUBY_SWIRL] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_BERRY_CARAMEL_SWIRL] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_BERRY_RAINBOW_SWIRL] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_LOVE_VANILLA_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_LOVE_RUBY_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_LOVE_MATCHA_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_LOVE_MINT_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_LOVE_LEMON_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_LOVE_SALTED_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_LOVE_RUBY_SWIRL] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_LOVE_CARAMEL_SWIRL] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_LOVE_RAINBOW_SWIRL] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_STAR_VANILLA_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_STAR_RUBY_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_STAR_MATCHA_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_STAR_MINT_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_STAR_LEMON_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_STAR_SALTED_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_STAR_RUBY_SWIRL] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_STAR_CARAMEL_SWIRL] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_STAR_RAINBOW_SWIRL] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_CLOVER_VANILLA_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_CLOVER_RUBY_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_CLOVER_MATCHA_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_CLOVER_MINT_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_CLOVER_LEMON_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_CLOVER_SALTED_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_CLOVER_RUBY_SWIRL] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_CLOVER_CARAMEL_SWIRL] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_CLOVER_RAINBOW_SWIRL] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_FLOWER_VANILLA_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_FLOWER_RUBY_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_FLOWER_MATCHA_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_FLOWER_MINT_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_FLOWER_LEMON_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_FLOWER_SALTED_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_FLOWER_RUBY_SWIRL] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_FLOWER_CARAMEL_SWIRL] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_FLOWER_RAINBOW_SWIRL] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_RIBBON_VANILLA_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_RIBBON_RUBY_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_RIBBON_MATCHA_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_RIBBON_MINT_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_RIBBON_LEMON_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_RIBBON_SALTED_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_RIBBON_RUBY_SWIRL] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_RIBBON_CARAMEL_SWIRL] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_RIBBON_RAINBOW_SWIRL] = sAlcremieLevelUpLearnset, [SPECIES_FALINKS] = sFalinksLevelUpLearnset, [SPECIES_PINCURCHIN] = sPincurchinLevelUpLearnset, [SPECIES_SNOM] = sSnomLevelUpLearnset, @@ -1304,15 +1366,6 @@ const struct LevelUpMove *const gLevelUpLearnsets[NUM_SPECIES] = [SPECIES_SINISTEA_ANTIQUE] = sSinisteaLevelUpLearnset, // Polteageist [SPECIES_POLTEAGEIST_ANTIQUE] = sPolteageistLevelUpLearnset, - // Alcremie - [SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM] = sAlcremieLevelUpLearnset, - [SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM] = sAlcremieLevelUpLearnset, - [SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM] = sAlcremieLevelUpLearnset, - [SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM] = sAlcremieLevelUpLearnset, - [SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM] = sAlcremieLevelUpLearnset, - [SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL] = sAlcremieLevelUpLearnset, - [SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL] = sAlcremieLevelUpLearnset, - [SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL] = sAlcremieLevelUpLearnset, // Eiscue [SPECIES_EISCUE_NOICE_FACE] = sEiscueLevelUpLearnset, // Indeedee diff --git a/src/data/pokemon/species_info.h b/src/data/pokemon/species_info.h index 7d1d108631..01bc20e46a 100644 --- a/src/data/pokemon/species_info.h +++ b/src/data/pokemon/species_info.h @@ -1315,26 +1315,6 @@ .bodyColor = BODY_COLOR_PURPLE, \ .noFlip = FALSE -#define ALCREMIE_MISC_INFO(color) \ - .baseHP = 65, \ - .baseAttack = 60, \ - .baseDefense = 75, \ - .baseSpeed = 64, \ - .baseSpAttack = 110, \ - .baseSpDefense = 121, \ - .types = { TYPE_FAIRY, TYPE_FAIRY}, \ - .catchRate = 100, \ - .expYield = 173, \ - .evYield_SpDefense = 2, \ - .genderRatio = MON_FEMALE, \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_AMORPHOUS}, \ - .abilities = {ABILITY_SWEET_VEIL, ABILITY_NONE, ABILITY_AROMA_VEIL},\ - .bodyColor = color, \ - .noFlip = FALSE - #define MORPEKO_SPECIES_INFO \ { \ .baseHP = 58, \ @@ -20428,8 +20408,93 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM] = { ALCREMIE_MISC_INFO(BODY_COLOR_WHITE) }, +#define ALCREMIE_MISC_INFO(color) \ + .baseHP = 65, \ + .baseAttack = 60, \ + .baseDefense = 75, \ + .baseSpeed = 64, \ + .baseSpAttack = 110, \ + .baseSpDefense = 121, \ + .types = { TYPE_FAIRY, TYPE_FAIRY}, \ + .catchRate = 100, \ + .expYield = 173, \ + .evYield_SpDefense = 2, \ + .genderRatio = MON_FEMALE, \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_AMORPHOUS}, \ + .abilities = {ABILITY_SWEET_VEIL, ABILITY_NONE, ABILITY_AROMA_VEIL},\ + .bodyColor = color, \ + .noFlip = FALSE +// For later +#define ALCREMIE_REGULAR_MISC_INFO(color, sweet, cream) \ + ALCREMIE_MISC_INFO(color) + + [SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_WHITE, Strawberry, VanillaCream), }, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_PINK, Strawberry, RubyCream), }, + [SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_GREEN, Strawberry, MatchaCream), }, + [SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_BLUE, Strawberry, MintCream), }, + [SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_YELLOW, Strawberry, LemonCream), }, + [SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_WHITE, Strawberry, SaltedCream), }, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_YELLOW, Strawberry, RubySwirl), }, + [SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_BROWN, Strawberry, CaramelSwirl), }, + [SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_YELLOW, Strawberry, RainbowSwirl), }, + [SPECIES_ALCREMIE_BERRY_VANILLA_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_WHITE, Berry, VanillaCream) }, + [SPECIES_ALCREMIE_BERRY_RUBY_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_PINK, Berry, RubyCream) }, + [SPECIES_ALCREMIE_BERRY_MATCHA_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_GREEN, Berry, MatchaCream), }, + [SPECIES_ALCREMIE_BERRY_MINT_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_BLUE, Berry, MintCream), }, + [SPECIES_ALCREMIE_BERRY_LEMON_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_YELLOW, Berry, LemonCream), }, + [SPECIES_ALCREMIE_BERRY_SALTED_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_WHITE, Berry, SaltedCream), }, + [SPECIES_ALCREMIE_BERRY_RUBY_SWIRL] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_YELLOW, Berry, RubySwirl), }, + [SPECIES_ALCREMIE_BERRY_CARAMEL_SWIRL] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_BROWN, Berry, CaramelSwirl), }, + [SPECIES_ALCREMIE_BERRY_RAINBOW_SWIRL] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_YELLOW, Berry, RainbowSwirl), }, + [SPECIES_ALCREMIE_LOVE_VANILLA_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_WHITE, Love, VanillaCream) }, + [SPECIES_ALCREMIE_LOVE_RUBY_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_PINK, Love, RubyCream) }, + [SPECIES_ALCREMIE_LOVE_MATCHA_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_GREEN, Love, MatchaCream), }, + [SPECIES_ALCREMIE_LOVE_MINT_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_BLUE, Love, MintCream), }, + [SPECIES_ALCREMIE_LOVE_LEMON_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_YELLOW, Love, LemonCream), }, + [SPECIES_ALCREMIE_LOVE_SALTED_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_WHITE, Love, SaltedCream), }, + [SPECIES_ALCREMIE_LOVE_RUBY_SWIRL] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_YELLOW, Love, RubySwirl), }, + [SPECIES_ALCREMIE_LOVE_CARAMEL_SWIRL] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_BROWN, Love, CaramelSwirl), }, + [SPECIES_ALCREMIE_LOVE_RAINBOW_SWIRL] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_YELLOW, Love, RainbowSwirl), }, + [SPECIES_ALCREMIE_STAR_VANILLA_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_WHITE, Star, VanillaCream) }, + [SPECIES_ALCREMIE_STAR_RUBY_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_PINK, Star, RubyCream) }, + [SPECIES_ALCREMIE_STAR_MATCHA_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_GREEN, Star, MatchaCream), }, + [SPECIES_ALCREMIE_STAR_MINT_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_BLUE, Star, MintCream), }, + [SPECIES_ALCREMIE_STAR_LEMON_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_YELLOW, Star, LemonCream), }, + [SPECIES_ALCREMIE_STAR_SALTED_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_WHITE, Star, SaltedCream), }, + [SPECIES_ALCREMIE_STAR_RUBY_SWIRL] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_YELLOW, Star, RubySwirl), }, + [SPECIES_ALCREMIE_STAR_CARAMEL_SWIRL] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_BROWN, Star, CaramelSwirl), }, + [SPECIES_ALCREMIE_STAR_RAINBOW_SWIRL] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_YELLOW, Star, RainbowSwirl), }, + [SPECIES_ALCREMIE_CLOVER_VANILLA_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_WHITE, Clover, VanillaCream) }, + [SPECIES_ALCREMIE_CLOVER_RUBY_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_PINK, Clover, RubyCream) }, + [SPECIES_ALCREMIE_CLOVER_MATCHA_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_GREEN, Clover, MatchaCream), }, + [SPECIES_ALCREMIE_CLOVER_MINT_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_BLUE, Clover, MintCream), }, + [SPECIES_ALCREMIE_CLOVER_LEMON_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_YELLOW, Clover, LemonCream), }, + [SPECIES_ALCREMIE_CLOVER_SALTED_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_WHITE, Clover, SaltedCream), }, + [SPECIES_ALCREMIE_CLOVER_RUBY_SWIRL] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_YELLOW, Clover, RubySwirl), }, + [SPECIES_ALCREMIE_CLOVER_CARAMEL_SWIRL] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_BROWN, Clover, CaramelSwirl), }, + [SPECIES_ALCREMIE_CLOVER_RAINBOW_SWIRL] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_YELLOW, Clover, RainbowSwirl), }, + [SPECIES_ALCREMIE_FLOWER_VANILLA_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_WHITE, Flower, VanillaCream) }, + [SPECIES_ALCREMIE_FLOWER_RUBY_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_PINK, Flower, RubyCream) }, + [SPECIES_ALCREMIE_FLOWER_MATCHA_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_GREEN, Flower, MatchaCream), }, + [SPECIES_ALCREMIE_FLOWER_MINT_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_BLUE, Flower, MintCream), }, + [SPECIES_ALCREMIE_FLOWER_LEMON_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_YELLOW, Flower, LemonCream), }, + [SPECIES_ALCREMIE_FLOWER_SALTED_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_WHITE, Flower, SaltedCream), }, + [SPECIES_ALCREMIE_FLOWER_RUBY_SWIRL] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_YELLOW, Flower, RubySwirl), }, + [SPECIES_ALCREMIE_FLOWER_CARAMEL_SWIRL] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_BROWN, Flower, CaramelSwirl), }, + [SPECIES_ALCREMIE_FLOWER_RAINBOW_SWIRL] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_YELLOW, Flower, RainbowSwirl), }, + [SPECIES_ALCREMIE_RIBBON_VANILLA_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_WHITE, Ribbon, VanillaCream) }, + [SPECIES_ALCREMIE_RIBBON_RUBY_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_PINK, Ribbon, RubyCream) }, + [SPECIES_ALCREMIE_RIBBON_MATCHA_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_GREEN, Ribbon, MatchaCream), }, + [SPECIES_ALCREMIE_RIBBON_MINT_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_BLUE, Ribbon, MintCream), }, + [SPECIES_ALCREMIE_RIBBON_LEMON_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_YELLOW, Ribbon, LemonCream), }, + [SPECIES_ALCREMIE_RIBBON_SALTED_CREAM] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_WHITE, Ribbon, SaltedCream), }, + [SPECIES_ALCREMIE_RIBBON_RUBY_SWIRL] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_YELLOW, Ribbon, RubySwirl), }, + [SPECIES_ALCREMIE_RIBBON_CARAMEL_SWIRL] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_BROWN, Ribbon, CaramelSwirl), }, + [SPECIES_ALCREMIE_RIBBON_RAINBOW_SWIRL] = { ALCREMIE_REGULAR_MISC_INFO(BODY_COLOR_YELLOW, Ribbon, RainbowSwirl), }, [SPECIES_FALINKS] = { .baseHP = 65, @@ -24636,15 +24701,6 @@ const struct SpeciesInfo gSpeciesInfo[] = [SPECIES_POLTEAGEIST_ANTIQUE] = POLTEAGEIST_SPECIES_INFO, - [SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM] = { ALCREMIE_MISC_INFO(BODY_COLOR_PINK) }, - [SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM] = { ALCREMIE_MISC_INFO(BODY_COLOR_GREEN) }, - [SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM] = { ALCREMIE_MISC_INFO(BODY_COLOR_BLUE) }, - [SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM] = { ALCREMIE_MISC_INFO(BODY_COLOR_YELLOW) }, - [SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM] = { ALCREMIE_MISC_INFO(BODY_COLOR_WHITE) }, - [SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL] = { ALCREMIE_MISC_INFO(BODY_COLOR_YELLOW) }, - [SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL] = { ALCREMIE_MISC_INFO(BODY_COLOR_BROWN) }, - [SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL] = { ALCREMIE_MISC_INFO(BODY_COLOR_YELLOW) }, - [SPECIES_EISCUE_NOICE_FACE] = { .baseHP = 75, diff --git a/src/data/pokemon/teachable_learnset_pointers.h b/src/data/pokemon/teachable_learnset_pointers.h index 8d00b8f05c..4bcb7b0a7f 100644 --- a/src/data/pokemon/teachable_learnset_pointers.h +++ b/src/data/pokemon/teachable_learnset_pointers.h @@ -879,6 +879,68 @@ const u16 *const gTeachableLearnsets[NUM_SPECIES] = [SPECIES_RUNERIGUS] = sRunerigusTeachableLearnset, [SPECIES_MILCERY] = sMilceryTeachableLearnset, [SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_BERRY_VANILLA_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_BERRY_RUBY_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_BERRY_MATCHA_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_BERRY_MINT_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_BERRY_LEMON_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_BERRY_SALTED_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_BERRY_RUBY_SWIRL] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_BERRY_CARAMEL_SWIRL] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_BERRY_RAINBOW_SWIRL] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_LOVE_VANILLA_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_LOVE_RUBY_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_LOVE_MATCHA_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_LOVE_MINT_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_LOVE_LEMON_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_LOVE_SALTED_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_LOVE_RUBY_SWIRL] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_LOVE_CARAMEL_SWIRL] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_LOVE_RAINBOW_SWIRL] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_STAR_VANILLA_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_STAR_RUBY_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_STAR_MATCHA_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_STAR_MINT_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_STAR_LEMON_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_STAR_SALTED_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_STAR_RUBY_SWIRL] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_STAR_CARAMEL_SWIRL] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_STAR_RAINBOW_SWIRL] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_CLOVER_VANILLA_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_CLOVER_RUBY_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_CLOVER_MATCHA_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_CLOVER_MINT_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_CLOVER_LEMON_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_CLOVER_SALTED_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_CLOVER_RUBY_SWIRL] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_CLOVER_CARAMEL_SWIRL] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_CLOVER_RAINBOW_SWIRL] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_FLOWER_VANILLA_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_FLOWER_RUBY_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_FLOWER_MATCHA_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_FLOWER_MINT_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_FLOWER_LEMON_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_FLOWER_SALTED_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_FLOWER_RUBY_SWIRL] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_FLOWER_CARAMEL_SWIRL] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_FLOWER_RAINBOW_SWIRL] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_RIBBON_VANILLA_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_RIBBON_RUBY_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_RIBBON_MATCHA_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_RIBBON_MINT_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_RIBBON_LEMON_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_RIBBON_SALTED_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_RIBBON_RUBY_SWIRL] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_RIBBON_CARAMEL_SWIRL] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_RIBBON_RAINBOW_SWIRL] = sAlcremieTeachableLearnset, [SPECIES_FALINKS] = sFalinksTeachableLearnset, [SPECIES_PINCURCHIN] = sPincurchinTeachableLearnset, [SPECIES_SNOM] = sSnomTeachableLearnset, @@ -1304,15 +1366,6 @@ const u16 *const gTeachableLearnsets[NUM_SPECIES] = [SPECIES_SINISTEA_ANTIQUE] = sSinisteaTeachableLearnset, // Polteageist [SPECIES_POLTEAGEIST_ANTIQUE] = sPolteageistTeachableLearnset, - // Alcremie - [SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM] = sAlcremieTeachableLearnset, - [SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM] = sAlcremieTeachableLearnset, - [SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM] = sAlcremieTeachableLearnset, - [SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM] = sAlcremieTeachableLearnset, - [SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM] = sAlcremieTeachableLearnset, - [SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL] = sAlcremieTeachableLearnset, - [SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL] = sAlcremieTeachableLearnset, - [SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL] = sAlcremieTeachableLearnset, // Eiscue [SPECIES_EISCUE_NOICE_FACE] = sEiscueTeachableLearnset, // Indeedee diff --git a/src/data/pokemon_graphics/back_pic_coordinates.h b/src/data/pokemon_graphics/back_pic_coordinates.h index 740b871b83..cc41afe991 100644 --- a/src/data/pokemon_graphics/back_pic_coordinates.h +++ b/src/data/pokemon_graphics/back_pic_coordinates.h @@ -902,6 +902,68 @@ const struct MonCoords gMonBackPicCoords[NUM_SPECIES + 1] = [SPECIES_RUNERIGUS] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 9 }, [SPECIES_MILCERY] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 16 }, [SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_BERRY_VANILLA_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_BERRY_RUBY_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_BERRY_MATCHA_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_BERRY_MINT_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_BERRY_LEMON_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_BERRY_SALTED_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_BERRY_RUBY_SWIRL] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_BERRY_CARAMEL_SWIRL] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_BERRY_RAINBOW_SWIRL] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_LOVE_VANILLA_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_LOVE_RUBY_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_LOVE_MATCHA_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_LOVE_MINT_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_LOVE_LEMON_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_LOVE_SALTED_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_LOVE_RUBY_SWIRL] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_LOVE_CARAMEL_SWIRL] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_LOVE_RAINBOW_SWIRL] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_STAR_VANILLA_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_STAR_RUBY_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_STAR_MATCHA_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_STAR_MINT_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_STAR_LEMON_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_STAR_SALTED_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_STAR_RUBY_SWIRL] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_STAR_CARAMEL_SWIRL] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_STAR_RAINBOW_SWIRL] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_CLOVER_VANILLA_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_CLOVER_RUBY_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_CLOVER_MATCHA_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_CLOVER_MINT_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_CLOVER_LEMON_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_CLOVER_SALTED_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_CLOVER_RUBY_SWIRL] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_CLOVER_CARAMEL_SWIRL] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_CLOVER_RAINBOW_SWIRL] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_FLOWER_VANILLA_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_FLOWER_RUBY_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_FLOWER_MATCHA_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_FLOWER_MINT_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_FLOWER_LEMON_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_FLOWER_SALTED_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_FLOWER_RUBY_SWIRL] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_FLOWER_CARAMEL_SWIRL] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_FLOWER_RAINBOW_SWIRL] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_RIBBON_VANILLA_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_RIBBON_RUBY_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_RIBBON_MATCHA_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_RIBBON_MINT_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_RIBBON_LEMON_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_RIBBON_SALTED_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_RIBBON_RUBY_SWIRL] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_RIBBON_CARAMEL_SWIRL] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_RIBBON_RAINBOW_SWIRL] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, [SPECIES_FALINKS] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 15 }, [SPECIES_PINCURCHIN] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 13 }, [SPECIES_SNOM] = { .size = MON_COORDS_SIZE(48, 32), .y_offset = 17 }, @@ -1326,15 +1388,6 @@ const struct MonCoords gMonBackPicCoords[NUM_SPECIES + 1] = [SPECIES_SINISTEA_ANTIQUE] = { .size = MON_COORDS_SIZE(48, 32), .y_offset = 16 }, // Polteageist [SPECIES_POLTEAGEIST_ANTIQUE] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 13 }, - // Alcremie - [SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, - [SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, - [SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, - [SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, - [SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, - [SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, - [SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, - [SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, // Eiscue [SPECIES_EISCUE_NOICE_FACE] = { .size = MON_COORDS_SIZE(40, 64), .y_offset = 0 }, // Indeedee diff --git a/src/data/pokemon_graphics/back_pic_table.h b/src/data/pokemon_graphics/back_pic_table.h index bdab1335ea..4add012701 100644 --- a/src/data/pokemon_graphics/back_pic_table.h +++ b/src/data/pokemon_graphics/back_pic_table.h @@ -878,7 +878,69 @@ const struct CompressedSpriteSheet gMonBackPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(MR_RIME, gMonBackPic_MrRime), SPECIES_SPRITE(RUNERIGUS, gMonBackPic_Runerigus), SPECIES_SPRITE(MILCERY, gMonBackPic_Milcery), - SPECIES_SPRITE(ALCREMIE, gMonBackPic_Alcremie), + SPECIES_SPRITE(ALCREMIE_STRAWBERRY_VANILLA_CREAM, gMonBackPic_AlcremieStrawberry), + SPECIES_SPRITE(ALCREMIE_STRAWBERRY_RUBY_CREAM, gMonBackPic_AlcremieStrawberry), + SPECIES_SPRITE(ALCREMIE_STRAWBERRY_MATCHA_CREAM, gMonBackPic_AlcremieStrawberry), + SPECIES_SPRITE(ALCREMIE_STRAWBERRY_MINT_CREAM, gMonBackPic_AlcremieStrawberry), + SPECIES_SPRITE(ALCREMIE_STRAWBERRY_LEMON_CREAM, gMonBackPic_AlcremieStrawberry), + SPECIES_SPRITE(ALCREMIE_STRAWBERRY_SALTED_CREAM, gMonBackPic_AlcremieStrawberry), + SPECIES_SPRITE(ALCREMIE_STRAWBERRY_RUBY_SWIRL, gMonBackPic_AlcremieStrawberry), + SPECIES_SPRITE(ALCREMIE_STRAWBERRY_CARAMEL_SWIRL, gMonBackPic_AlcremieStrawberry), + SPECIES_SPRITE(ALCREMIE_STRAWBERRY_RAINBOW_SWIRL, gMonBackPic_AlcremieStrawberry), + SPECIES_SPRITE(ALCREMIE_BERRY_VANILLA_CREAM, gMonBackPic_AlcremieBerry), + SPECIES_SPRITE(ALCREMIE_BERRY_RUBY_CREAM, gMonBackPic_AlcremieBerry), + SPECIES_SPRITE(ALCREMIE_BERRY_MATCHA_CREAM, gMonBackPic_AlcremieBerry), + SPECIES_SPRITE(ALCREMIE_BERRY_MINT_CREAM, gMonBackPic_AlcremieBerry), + SPECIES_SPRITE(ALCREMIE_BERRY_LEMON_CREAM, gMonBackPic_AlcremieBerry), + SPECIES_SPRITE(ALCREMIE_BERRY_SALTED_CREAM, gMonBackPic_AlcremieBerry), + SPECIES_SPRITE(ALCREMIE_BERRY_RUBY_SWIRL, gMonBackPic_AlcremieBerry), + SPECIES_SPRITE(ALCREMIE_BERRY_CARAMEL_SWIRL, gMonBackPic_AlcremieBerry), + SPECIES_SPRITE(ALCREMIE_BERRY_RAINBOW_SWIRL, gMonBackPic_AlcremieBerry), + SPECIES_SPRITE(ALCREMIE_LOVE_VANILLA_CREAM, gMonBackPic_AlcremieLove), + SPECIES_SPRITE(ALCREMIE_LOVE_RUBY_CREAM, gMonBackPic_AlcremieLove), + SPECIES_SPRITE(ALCREMIE_LOVE_MATCHA_CREAM, gMonBackPic_AlcremieLove), + SPECIES_SPRITE(ALCREMIE_LOVE_MINT_CREAM, gMonBackPic_AlcremieLove), + SPECIES_SPRITE(ALCREMIE_LOVE_LEMON_CREAM, gMonBackPic_AlcremieLove), + SPECIES_SPRITE(ALCREMIE_LOVE_SALTED_CREAM, gMonBackPic_AlcremieLove), + SPECIES_SPRITE(ALCREMIE_LOVE_RUBY_SWIRL, gMonBackPic_AlcremieLove), + SPECIES_SPRITE(ALCREMIE_LOVE_CARAMEL_SWIRL, gMonBackPic_AlcremieLove), + SPECIES_SPRITE(ALCREMIE_LOVE_RAINBOW_SWIRL, gMonBackPic_AlcremieLove), + SPECIES_SPRITE(ALCREMIE_STAR_VANILLA_CREAM, gMonBackPic_AlcremieStar), + SPECIES_SPRITE(ALCREMIE_STAR_RUBY_CREAM, gMonBackPic_AlcremieStar), + SPECIES_SPRITE(ALCREMIE_STAR_MATCHA_CREAM, gMonBackPic_AlcremieStar), + SPECIES_SPRITE(ALCREMIE_STAR_MINT_CREAM, gMonBackPic_AlcremieStar), + SPECIES_SPRITE(ALCREMIE_STAR_LEMON_CREAM, gMonBackPic_AlcremieStar), + SPECIES_SPRITE(ALCREMIE_STAR_SALTED_CREAM, gMonBackPic_AlcremieStar), + SPECIES_SPRITE(ALCREMIE_STAR_RUBY_SWIRL, gMonBackPic_AlcremieStar), + SPECIES_SPRITE(ALCREMIE_STAR_CARAMEL_SWIRL, gMonBackPic_AlcremieStar), + SPECIES_SPRITE(ALCREMIE_STAR_RAINBOW_SWIRL, gMonBackPic_AlcremieStar), + SPECIES_SPRITE(ALCREMIE_CLOVER_VANILLA_CREAM, gMonBackPic_AlcremieClover), + SPECIES_SPRITE(ALCREMIE_CLOVER_RUBY_CREAM, gMonBackPic_AlcremieClover), + SPECIES_SPRITE(ALCREMIE_CLOVER_MATCHA_CREAM, gMonBackPic_AlcremieClover), + SPECIES_SPRITE(ALCREMIE_CLOVER_MINT_CREAM, gMonBackPic_AlcremieClover), + SPECIES_SPRITE(ALCREMIE_CLOVER_LEMON_CREAM, gMonBackPic_AlcremieClover), + SPECIES_SPRITE(ALCREMIE_CLOVER_SALTED_CREAM, gMonBackPic_AlcremieClover), + SPECIES_SPRITE(ALCREMIE_CLOVER_RUBY_SWIRL, gMonBackPic_AlcremieClover), + SPECIES_SPRITE(ALCREMIE_CLOVER_CARAMEL_SWIRL, gMonBackPic_AlcremieClover), + SPECIES_SPRITE(ALCREMIE_CLOVER_RAINBOW_SWIRL, gMonBackPic_AlcremieClover), + SPECIES_SPRITE(ALCREMIE_FLOWER_VANILLA_CREAM, gMonBackPic_AlcremieFlower), + SPECIES_SPRITE(ALCREMIE_FLOWER_RUBY_CREAM, gMonBackPic_AlcremieFlower), + SPECIES_SPRITE(ALCREMIE_FLOWER_MATCHA_CREAM, gMonBackPic_AlcremieFlower), + SPECIES_SPRITE(ALCREMIE_FLOWER_MINT_CREAM, gMonBackPic_AlcremieFlower), + SPECIES_SPRITE(ALCREMIE_FLOWER_LEMON_CREAM, gMonBackPic_AlcremieFlower), + SPECIES_SPRITE(ALCREMIE_FLOWER_SALTED_CREAM, gMonBackPic_AlcremieFlower), + SPECIES_SPRITE(ALCREMIE_FLOWER_RUBY_SWIRL, gMonBackPic_AlcremieFlower), + SPECIES_SPRITE(ALCREMIE_FLOWER_CARAMEL_SWIRL, gMonBackPic_AlcremieFlower), + SPECIES_SPRITE(ALCREMIE_FLOWER_RAINBOW_SWIRL, gMonBackPic_AlcremieFlower), + SPECIES_SPRITE(ALCREMIE_RIBBON_VANILLA_CREAM, gMonBackPic_AlcremieRibbon), + SPECIES_SPRITE(ALCREMIE_RIBBON_RUBY_CREAM, gMonBackPic_AlcremieRibbon), + SPECIES_SPRITE(ALCREMIE_RIBBON_MATCHA_CREAM, gMonBackPic_AlcremieRibbon), + SPECIES_SPRITE(ALCREMIE_RIBBON_MINT_CREAM, gMonBackPic_AlcremieRibbon), + SPECIES_SPRITE(ALCREMIE_RIBBON_LEMON_CREAM, gMonBackPic_AlcremieRibbon), + SPECIES_SPRITE(ALCREMIE_RIBBON_SALTED_CREAM, gMonBackPic_AlcremieRibbon), + SPECIES_SPRITE(ALCREMIE_RIBBON_RUBY_SWIRL, gMonBackPic_AlcremieRibbon), + SPECIES_SPRITE(ALCREMIE_RIBBON_CARAMEL_SWIRL, gMonBackPic_AlcremieRibbon), + SPECIES_SPRITE(ALCREMIE_RIBBON_RAINBOW_SWIRL, gMonBackPic_AlcremieRibbon), SPECIES_SPRITE(FALINKS, gMonBackPic_Falinks), SPECIES_SPRITE(PINCURCHIN, gMonBackPic_Pincurchin), SPECIES_SPRITE(SNOM, gMonBackPic_Snom), @@ -1303,15 +1365,6 @@ const struct CompressedSpriteSheet gMonBackPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(POLTEAGEIST_ANTIQUE, gMonBackPic_Polteageist), - SPECIES_SPRITE(ALCREMIE_RUBY_CREAM, gMonBackPic_AlcremieRubyCream), - SPECIES_SPRITE(ALCREMIE_MATCHA_CREAM, gMonBackPic_AlcremieMatchaCream), - SPECIES_SPRITE(ALCREMIE_MINT_CREAM, gMonBackPic_AlcremieMintCream), - SPECIES_SPRITE(ALCREMIE_LEMON_CREAM, gMonBackPic_AlcremieLemonCream), - SPECIES_SPRITE(ALCREMIE_SALTED_CREAM, gMonBackPic_AlcremieSaltedCream), - SPECIES_SPRITE(ALCREMIE_RUBY_SWIRL, gMonBackPic_AlcremieRubySwirl), - SPECIES_SPRITE(ALCREMIE_CARAMEL_SWIRL, gMonBackPic_AlcremieCaramelSwirl), - SPECIES_SPRITE(ALCREMIE_RAINBOW_SWIRL, gMonBackPic_AlcremieRainbowSwirl), - SPECIES_SPRITE(EISCUE_NOICE_FACE, gMonBackPic_EiscueNoiceFace), SPECIES_SPRITE(INDEEDEE_FEMALE, gMonBackPic_IndeedeeFemale), diff --git a/src/data/pokemon_graphics/footprint_table.h b/src/data/pokemon_graphics/footprint_table.h index 67e88c6d3d..63800aabd8 100644 --- a/src/data/pokemon_graphics/footprint_table.h +++ b/src/data/pokemon_graphics/footprint_table.h @@ -879,6 +879,68 @@ const u8 *const gMonFootprintTable[NUM_SPECIES + 1] = [SPECIES_RUNERIGUS] = gMonFootprint_Runerigus, [SPECIES_MILCERY] = gMonFootprint_Milcery, [SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_BERRY_VANILLA_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_BERRY_RUBY_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_BERRY_MATCHA_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_BERRY_MINT_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_BERRY_LEMON_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_BERRY_SALTED_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_BERRY_RUBY_SWIRL] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_BERRY_CARAMEL_SWIRL] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_BERRY_RAINBOW_SWIRL] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_LOVE_VANILLA_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_LOVE_RUBY_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_LOVE_MATCHA_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_LOVE_MINT_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_LOVE_LEMON_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_LOVE_SALTED_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_LOVE_RUBY_SWIRL] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_LOVE_CARAMEL_SWIRL] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_LOVE_RAINBOW_SWIRL] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_STAR_VANILLA_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_STAR_RUBY_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_STAR_MATCHA_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_STAR_MINT_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_STAR_LEMON_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_STAR_SALTED_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_STAR_RUBY_SWIRL] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_STAR_CARAMEL_SWIRL] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_STAR_RAINBOW_SWIRL] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_CLOVER_VANILLA_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_CLOVER_RUBY_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_CLOVER_MATCHA_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_CLOVER_MINT_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_CLOVER_LEMON_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_CLOVER_SALTED_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_CLOVER_RUBY_SWIRL] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_CLOVER_CARAMEL_SWIRL] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_CLOVER_RAINBOW_SWIRL] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_FLOWER_VANILLA_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_FLOWER_RUBY_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_FLOWER_MATCHA_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_FLOWER_MINT_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_FLOWER_LEMON_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_FLOWER_SALTED_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_FLOWER_RUBY_SWIRL] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_FLOWER_CARAMEL_SWIRL] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_FLOWER_RAINBOW_SWIRL] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_RIBBON_VANILLA_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_RIBBON_RUBY_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_RIBBON_MATCHA_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_RIBBON_MINT_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_RIBBON_LEMON_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_RIBBON_SALTED_CREAM] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_RIBBON_RUBY_SWIRL] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_RIBBON_CARAMEL_SWIRL] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_RIBBON_RAINBOW_SWIRL] = gMonFootprint_Alcremie, [SPECIES_FALINKS] = gMonFootprint_Falinks, [SPECIES_PINCURCHIN] = gMonFootprint_Pincurchin, [SPECIES_SNOM] = gMonFootprint_Snom, diff --git a/src/data/pokemon_graphics/front_pic_anims.h b/src/data/pokemon_graphics/front_pic_anims.h index 9a8f450f80..66692cf0b7 100644 --- a/src/data/pokemon_graphics/front_pic_anims.h +++ b/src/data/pokemon_graphics/front_pic_anims.h @@ -12822,6 +12822,68 @@ const union AnimCmd *const *const gMonFrontAnimsPtrTable[NUM_SPECIES + 1] = [SPECIES_RUNERIGUS] = sAnims_Runerigus, [SPECIES_MILCERY] = sAnims_Milcery, [SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL] = sAnims_Alcremie, + [SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL] = sAnims_Alcremie, + [SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL] = sAnims_Alcremie, + [SPECIES_ALCREMIE_BERRY_VANILLA_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_BERRY_RUBY_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_BERRY_MATCHA_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_BERRY_MINT_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_BERRY_LEMON_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_BERRY_SALTED_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_BERRY_RUBY_SWIRL] = sAnims_Alcremie, + [SPECIES_ALCREMIE_BERRY_CARAMEL_SWIRL] = sAnims_Alcremie, + [SPECIES_ALCREMIE_BERRY_RAINBOW_SWIRL] = sAnims_Alcremie, + [SPECIES_ALCREMIE_LOVE_VANILLA_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_LOVE_RUBY_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_LOVE_MATCHA_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_LOVE_MINT_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_LOVE_LEMON_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_LOVE_SALTED_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_LOVE_RUBY_SWIRL] = sAnims_Alcremie, + [SPECIES_ALCREMIE_LOVE_CARAMEL_SWIRL] = sAnims_Alcremie, + [SPECIES_ALCREMIE_LOVE_RAINBOW_SWIRL] = sAnims_Alcremie, + [SPECIES_ALCREMIE_STAR_VANILLA_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_STAR_RUBY_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_STAR_MATCHA_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_STAR_MINT_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_STAR_LEMON_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_STAR_SALTED_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_STAR_RUBY_SWIRL] = sAnims_Alcremie, + [SPECIES_ALCREMIE_STAR_CARAMEL_SWIRL] = sAnims_Alcremie, + [SPECIES_ALCREMIE_STAR_RAINBOW_SWIRL] = sAnims_Alcremie, + [SPECIES_ALCREMIE_CLOVER_VANILLA_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_CLOVER_RUBY_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_CLOVER_MATCHA_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_CLOVER_MINT_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_CLOVER_LEMON_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_CLOVER_SALTED_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_CLOVER_RUBY_SWIRL] = sAnims_Alcremie, + [SPECIES_ALCREMIE_CLOVER_CARAMEL_SWIRL] = sAnims_Alcremie, + [SPECIES_ALCREMIE_CLOVER_RAINBOW_SWIRL] = sAnims_Alcremie, + [SPECIES_ALCREMIE_FLOWER_VANILLA_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_FLOWER_RUBY_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_FLOWER_MATCHA_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_FLOWER_MINT_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_FLOWER_LEMON_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_FLOWER_SALTED_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_FLOWER_RUBY_SWIRL] = sAnims_Alcremie, + [SPECIES_ALCREMIE_FLOWER_CARAMEL_SWIRL] = sAnims_Alcremie, + [SPECIES_ALCREMIE_FLOWER_RAINBOW_SWIRL] = sAnims_Alcremie, + [SPECIES_ALCREMIE_RIBBON_VANILLA_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_RIBBON_RUBY_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_RIBBON_MATCHA_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_RIBBON_MINT_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_RIBBON_LEMON_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_RIBBON_SALTED_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_RIBBON_RUBY_SWIRL] = sAnims_Alcremie, + [SPECIES_ALCREMIE_RIBBON_CARAMEL_SWIRL] = sAnims_Alcremie, + [SPECIES_ALCREMIE_RIBBON_RAINBOW_SWIRL] = sAnims_Alcremie, [SPECIES_FALINKS] = sAnims_Falinks, [SPECIES_PINCURCHIN] = sAnims_Pincurchin, [SPECIES_SNOM] = sAnims_Snom, @@ -13196,14 +13258,6 @@ const union AnimCmd *const *const gMonFrontAnimsPtrTable[NUM_SPECIES + 1] = [SPECIES_TOXTRICITY_LOW_KEY] = sAnims_Toxtricity, [SPECIES_SINISTEA_ANTIQUE] = sAnims_Sinistea, [SPECIES_POLTEAGEIST_ANTIQUE] = sAnims_Polteageist, - [SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM] = sAnims_Alcremie, - [SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM] = sAnims_Alcremie, - [SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM] = sAnims_Alcremie, - [SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM] = sAnims_Alcremie, - [SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM] = sAnims_Alcremie, - [SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL] = sAnims_Alcremie, - [SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL] = sAnims_Alcremie, - [SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL] = sAnims_Alcremie, [SPECIES_EISCUE_NOICE_FACE] = sAnims_Eiscue, [SPECIES_INDEEDEE_FEMALE] = sAnims_Indeedee, [SPECIES_MORPEKO_HANGRY] = sAnims_Morpeko, diff --git a/src/data/pokemon_graphics/front_pic_coordinates.h b/src/data/pokemon_graphics/front_pic_coordinates.h index 4bdbb7bc26..ca2482c314 100644 --- a/src/data/pokemon_graphics/front_pic_coordinates.h +++ b/src/data/pokemon_graphics/front_pic_coordinates.h @@ -883,6 +883,68 @@ const struct MonCoords gMonFrontPicCoords[NUM_SPECIES + 1] = [SPECIES_RUNERIGUS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, [SPECIES_MILCERY] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 15 }, [SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_BERRY_VANILLA_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_BERRY_RUBY_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_BERRY_MATCHA_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_BERRY_MINT_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_BERRY_LEMON_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_BERRY_SALTED_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_BERRY_RUBY_SWIRL] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_BERRY_CARAMEL_SWIRL] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_BERRY_RAINBOW_SWIRL] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_LOVE_VANILLA_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_LOVE_RUBY_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_LOVE_MATCHA_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_LOVE_MINT_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_LOVE_LEMON_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_LOVE_SALTED_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_LOVE_RUBY_SWIRL] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_LOVE_CARAMEL_SWIRL] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_LOVE_RAINBOW_SWIRL] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_STAR_VANILLA_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_STAR_RUBY_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_STAR_MATCHA_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_STAR_MINT_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_STAR_LEMON_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_STAR_SALTED_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_STAR_RUBY_SWIRL] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_STAR_CARAMEL_SWIRL] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_STAR_RAINBOW_SWIRL] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_CLOVER_VANILLA_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_CLOVER_RUBY_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_CLOVER_MATCHA_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_CLOVER_MINT_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_CLOVER_LEMON_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_CLOVER_SALTED_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_CLOVER_RUBY_SWIRL] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_CLOVER_CARAMEL_SWIRL] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_CLOVER_RAINBOW_SWIRL] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_FLOWER_VANILLA_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_FLOWER_RUBY_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_FLOWER_MATCHA_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_FLOWER_MINT_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_FLOWER_LEMON_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_FLOWER_SALTED_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_FLOWER_RUBY_SWIRL] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_FLOWER_CARAMEL_SWIRL] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_FLOWER_RAINBOW_SWIRL] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_RIBBON_VANILLA_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_RIBBON_RUBY_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_RIBBON_MATCHA_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_RIBBON_MINT_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_RIBBON_LEMON_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_RIBBON_SALTED_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_RIBBON_RUBY_SWIRL] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_RIBBON_CARAMEL_SWIRL] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_RIBBON_RAINBOW_SWIRL] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, [SPECIES_FALINKS] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 8 }, [SPECIES_PINCURCHIN] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 15 }, [SPECIES_SNOM] = { .size = MON_COORDS_SIZE(40, 32), .y_offset = 20 }, @@ -1309,14 +1371,6 @@ const struct MonCoords gMonFrontPicCoords[NUM_SPECIES + 1] = // Polteageist [SPECIES_POLTEAGEIST_ANTIQUE] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 11 }, // Alcremie - [SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, - [SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, - [SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, - [SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, - [SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, - [SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, - [SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, - [SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, // Eiscue [SPECIES_EISCUE_NOICE_FACE] = { .size = MON_COORDS_SIZE(40, 64), .y_offset = 0 }, // Indeedee diff --git a/src/data/pokemon_graphics/front_pic_table.h b/src/data/pokemon_graphics/front_pic_table.h index 33e82debfe..0c588d0bd9 100644 --- a/src/data/pokemon_graphics/front_pic_table.h +++ b/src/data/pokemon_graphics/front_pic_table.h @@ -878,7 +878,69 @@ const struct CompressedSpriteSheet gMonFrontPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(MR_RIME, gMonFrontPic_MrRime), SPECIES_SPRITE(RUNERIGUS, gMonFrontPic_Runerigus), SPECIES_SPRITE(MILCERY, gMonFrontPic_Milcery), - SPECIES_SPRITE(ALCREMIE, gMonFrontPic_Alcremie), + SPECIES_SPRITE(ALCREMIE_STRAWBERRY_VANILLA_CREAM, gMonFrontPic_AlcremieStrawberry), + SPECIES_SPRITE(ALCREMIE_STRAWBERRY_RUBY_CREAM, gMonFrontPic_AlcremieStrawberry), + SPECIES_SPRITE(ALCREMIE_STRAWBERRY_MATCHA_CREAM, gMonFrontPic_AlcremieStrawberry), + SPECIES_SPRITE(ALCREMIE_STRAWBERRY_MINT_CREAM, gMonFrontPic_AlcremieStrawberry), + SPECIES_SPRITE(ALCREMIE_STRAWBERRY_LEMON_CREAM, gMonFrontPic_AlcremieStrawberry), + SPECIES_SPRITE(ALCREMIE_STRAWBERRY_SALTED_CREAM, gMonFrontPic_AlcremieStrawberry), + SPECIES_SPRITE(ALCREMIE_STRAWBERRY_RUBY_SWIRL, gMonFrontPic_AlcremieStrawberry), + SPECIES_SPRITE(ALCREMIE_STRAWBERRY_CARAMEL_SWIRL, gMonFrontPic_AlcremieStrawberry), + SPECIES_SPRITE(ALCREMIE_STRAWBERRY_RAINBOW_SWIRL, gMonFrontPic_AlcremieStrawberry), + SPECIES_SPRITE(ALCREMIE_BERRY_VANILLA_CREAM, gMonFrontPic_AlcremieBerry), + SPECIES_SPRITE(ALCREMIE_BERRY_RUBY_CREAM, gMonFrontPic_AlcremieBerry), + SPECIES_SPRITE(ALCREMIE_BERRY_MATCHA_CREAM, gMonFrontPic_AlcremieBerry), + SPECIES_SPRITE(ALCREMIE_BERRY_MINT_CREAM, gMonFrontPic_AlcremieBerry), + SPECIES_SPRITE(ALCREMIE_BERRY_LEMON_CREAM, gMonFrontPic_AlcremieBerry), + SPECIES_SPRITE(ALCREMIE_BERRY_SALTED_CREAM, gMonFrontPic_AlcremieBerry), + SPECIES_SPRITE(ALCREMIE_BERRY_RUBY_SWIRL, gMonFrontPic_AlcremieBerry), + SPECIES_SPRITE(ALCREMIE_BERRY_CARAMEL_SWIRL, gMonFrontPic_AlcremieBerry), + SPECIES_SPRITE(ALCREMIE_BERRY_RAINBOW_SWIRL, gMonFrontPic_AlcremieBerry), + SPECIES_SPRITE(ALCREMIE_LOVE_VANILLA_CREAM, gMonFrontPic_AlcremieLove), + SPECIES_SPRITE(ALCREMIE_LOVE_RUBY_CREAM, gMonFrontPic_AlcremieLove), + SPECIES_SPRITE(ALCREMIE_LOVE_MATCHA_CREAM, gMonFrontPic_AlcremieLove), + SPECIES_SPRITE(ALCREMIE_LOVE_MINT_CREAM, gMonFrontPic_AlcremieLove), + SPECIES_SPRITE(ALCREMIE_LOVE_LEMON_CREAM, gMonFrontPic_AlcremieLove), + SPECIES_SPRITE(ALCREMIE_LOVE_SALTED_CREAM, gMonFrontPic_AlcremieLove), + SPECIES_SPRITE(ALCREMIE_LOVE_RUBY_SWIRL, gMonFrontPic_AlcremieLove), + SPECIES_SPRITE(ALCREMIE_LOVE_CARAMEL_SWIRL, gMonFrontPic_AlcremieLove), + SPECIES_SPRITE(ALCREMIE_LOVE_RAINBOW_SWIRL, gMonFrontPic_AlcremieLove), + SPECIES_SPRITE(ALCREMIE_STAR_VANILLA_CREAM, gMonFrontPic_AlcremieStar), + SPECIES_SPRITE(ALCREMIE_STAR_RUBY_CREAM, gMonFrontPic_AlcremieStar), + SPECIES_SPRITE(ALCREMIE_STAR_MATCHA_CREAM, gMonFrontPic_AlcremieStar), + SPECIES_SPRITE(ALCREMIE_STAR_MINT_CREAM, gMonFrontPic_AlcremieStar), + SPECIES_SPRITE(ALCREMIE_STAR_LEMON_CREAM, gMonFrontPic_AlcremieStar), + SPECIES_SPRITE(ALCREMIE_STAR_SALTED_CREAM, gMonFrontPic_AlcremieStar), + SPECIES_SPRITE(ALCREMIE_STAR_RUBY_SWIRL, gMonFrontPic_AlcremieStar), + SPECIES_SPRITE(ALCREMIE_STAR_CARAMEL_SWIRL, gMonFrontPic_AlcremieStar), + SPECIES_SPRITE(ALCREMIE_STAR_RAINBOW_SWIRL, gMonFrontPic_AlcremieStar), + SPECIES_SPRITE(ALCREMIE_CLOVER_VANILLA_CREAM, gMonFrontPic_AlcremieClover), + SPECIES_SPRITE(ALCREMIE_CLOVER_RUBY_CREAM, gMonFrontPic_AlcremieClover), + SPECIES_SPRITE(ALCREMIE_CLOVER_MATCHA_CREAM, gMonFrontPic_AlcremieClover), + SPECIES_SPRITE(ALCREMIE_CLOVER_MINT_CREAM, gMonFrontPic_AlcremieClover), + SPECIES_SPRITE(ALCREMIE_CLOVER_LEMON_CREAM, gMonFrontPic_AlcremieClover), + SPECIES_SPRITE(ALCREMIE_CLOVER_SALTED_CREAM, gMonFrontPic_AlcremieClover), + SPECIES_SPRITE(ALCREMIE_CLOVER_RUBY_SWIRL, gMonFrontPic_AlcremieClover), + SPECIES_SPRITE(ALCREMIE_CLOVER_CARAMEL_SWIRL, gMonFrontPic_AlcremieClover), + SPECIES_SPRITE(ALCREMIE_CLOVER_RAINBOW_SWIRL, gMonFrontPic_AlcremieClover), + SPECIES_SPRITE(ALCREMIE_FLOWER_VANILLA_CREAM, gMonFrontPic_AlcremieFlower), + SPECIES_SPRITE(ALCREMIE_FLOWER_RUBY_CREAM, gMonFrontPic_AlcremieFlower), + SPECIES_SPRITE(ALCREMIE_FLOWER_MATCHA_CREAM, gMonFrontPic_AlcremieFlower), + SPECIES_SPRITE(ALCREMIE_FLOWER_MINT_CREAM, gMonFrontPic_AlcremieFlower), + SPECIES_SPRITE(ALCREMIE_FLOWER_LEMON_CREAM, gMonFrontPic_AlcremieFlower), + SPECIES_SPRITE(ALCREMIE_FLOWER_SALTED_CREAM, gMonFrontPic_AlcremieFlower), + SPECIES_SPRITE(ALCREMIE_FLOWER_RUBY_SWIRL, gMonFrontPic_AlcremieFlower), + SPECIES_SPRITE(ALCREMIE_FLOWER_CARAMEL_SWIRL, gMonFrontPic_AlcremieFlower), + SPECIES_SPRITE(ALCREMIE_FLOWER_RAINBOW_SWIRL, gMonFrontPic_AlcremieFlower), + SPECIES_SPRITE(ALCREMIE_RIBBON_VANILLA_CREAM, gMonFrontPic_AlcremieRibbon), + SPECIES_SPRITE(ALCREMIE_RIBBON_RUBY_CREAM, gMonFrontPic_AlcremieRibbon), + SPECIES_SPRITE(ALCREMIE_RIBBON_MATCHA_CREAM, gMonFrontPic_AlcremieRibbon), + SPECIES_SPRITE(ALCREMIE_RIBBON_MINT_CREAM, gMonFrontPic_AlcremieRibbon), + SPECIES_SPRITE(ALCREMIE_RIBBON_LEMON_CREAM, gMonFrontPic_AlcremieRibbon), + SPECIES_SPRITE(ALCREMIE_RIBBON_SALTED_CREAM, gMonFrontPic_AlcremieRibbon), + SPECIES_SPRITE(ALCREMIE_RIBBON_RUBY_SWIRL, gMonFrontPic_AlcremieRibbon), + SPECIES_SPRITE(ALCREMIE_RIBBON_CARAMEL_SWIRL, gMonFrontPic_AlcremieRibbon), + SPECIES_SPRITE(ALCREMIE_RIBBON_RAINBOW_SWIRL, gMonFrontPic_AlcremieRibbon), SPECIES_SPRITE(FALINKS, gMonFrontPic_Falinks), SPECIES_SPRITE(PINCURCHIN, gMonFrontPic_Pincurchin), SPECIES_SPRITE(SNOM, gMonFrontPic_Snom), @@ -1302,15 +1364,6 @@ const struct CompressedSpriteSheet gMonFrontPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(POLTEAGEIST_ANTIQUE, gMonFrontPic_Polteageist), - SPECIES_SPRITE(ALCREMIE_RUBY_CREAM, gMonFrontPic_AlcremieRubyCream), - SPECIES_SPRITE(ALCREMIE_MATCHA_CREAM, gMonFrontPic_AlcremieMatchaCream), - SPECIES_SPRITE(ALCREMIE_MINT_CREAM, gMonFrontPic_AlcremieMintCream), - SPECIES_SPRITE(ALCREMIE_LEMON_CREAM, gMonFrontPic_AlcremieLemonCream), - SPECIES_SPRITE(ALCREMIE_SALTED_CREAM, gMonFrontPic_AlcremieSaltedCream), - SPECIES_SPRITE(ALCREMIE_RUBY_SWIRL, gMonFrontPic_AlcremieRubySwirl), - SPECIES_SPRITE(ALCREMIE_CARAMEL_SWIRL, gMonFrontPic_AlcremieCaramelSwirl), - SPECIES_SPRITE(ALCREMIE_RAINBOW_SWIRL, gMonFrontPic_AlcremieRainbowSwirl), - SPECIES_SPRITE(EISCUE_NOICE_FACE, gMonFrontPic_EiscueNoiceFace), SPECIES_SPRITE(INDEEDEE_FEMALE, gMonFrontPic_IndeedeeFemale), diff --git a/src/data/pokemon_graphics/palette_table.h b/src/data/pokemon_graphics/palette_table.h index 8e4a9c32b2..35e924768c 100644 --- a/src/data/pokemon_graphics/palette_table.h +++ b/src/data/pokemon_graphics/palette_table.h @@ -878,7 +878,69 @@ const struct CompressedSpritePalette gMonPaletteTable[NUM_SPECIES + 1] = SPECIES_PAL(MR_RIME, gMonPalette_MrRime), SPECIES_PAL(RUNERIGUS, gMonPalette_Runerigus), SPECIES_PAL(MILCERY, gMonPalette_Milcery), - SPECIES_PAL(ALCREMIE, gMonPalette_Alcremie), + SPECIES_PAL(ALCREMIE_STRAWBERRY_VANILLA_CREAM, gMonPalette_AlcremieStrawberryVanillaCream), + SPECIES_PAL(ALCREMIE_STRAWBERRY_RUBY_CREAM, gMonPalette_AlcremieStrawberryRubyCream), + SPECIES_PAL(ALCREMIE_STRAWBERRY_MATCHA_CREAM, gMonPalette_AlcremieStrawberryMatchaCream), + SPECIES_PAL(ALCREMIE_STRAWBERRY_MINT_CREAM, gMonPalette_AlcremieStrawberryMintCream), + SPECIES_PAL(ALCREMIE_STRAWBERRY_LEMON_CREAM, gMonPalette_AlcremieStrawberryLemonCream), + SPECIES_PAL(ALCREMIE_STRAWBERRY_SALTED_CREAM, gMonPalette_AlcremieStrawberrySaltedCream), + SPECIES_PAL(ALCREMIE_STRAWBERRY_RUBY_SWIRL, gMonPalette_AlcremieStrawberryRubySwirl), + SPECIES_PAL(ALCREMIE_STRAWBERRY_CARAMEL_SWIRL, gMonPalette_AlcremieStrawberryCaramelSwirl), + SPECIES_PAL(ALCREMIE_STRAWBERRY_RAINBOW_SWIRL, gMonPalette_AlcremieStrawberryRainbowSwirl), + SPECIES_PAL(ALCREMIE_BERRY_VANILLA_CREAM, gMonPalette_AlcremieBerryVanillaCream), + SPECIES_PAL(ALCREMIE_BERRY_RUBY_CREAM, gMonPalette_AlcremieBerryRubyCream), + SPECIES_PAL(ALCREMIE_BERRY_MATCHA_CREAM, gMonPalette_AlcremieBerryMatchaCream), + SPECIES_PAL(ALCREMIE_BERRY_MINT_CREAM, gMonPalette_AlcremieBerryMintCream), + SPECIES_PAL(ALCREMIE_BERRY_LEMON_CREAM, gMonPalette_AlcremieBerryLemonCream), + SPECIES_PAL(ALCREMIE_BERRY_SALTED_CREAM, gMonPalette_AlcremieBerrySaltedCream), + SPECIES_PAL(ALCREMIE_BERRY_RUBY_SWIRL, gMonPalette_AlcremieBerryRubySwirl), + SPECIES_PAL(ALCREMIE_BERRY_CARAMEL_SWIRL, gMonPalette_AlcremieBerryCaramelSwirl), + SPECIES_PAL(ALCREMIE_BERRY_RAINBOW_SWIRL, gMonPalette_AlcremieBerryRainbowSwirl), + SPECIES_PAL(ALCREMIE_LOVE_VANILLA_CREAM, gMonPalette_AlcremieLoveVanillaCream), + SPECIES_PAL(ALCREMIE_LOVE_RUBY_CREAM, gMonPalette_AlcremieLoveRubyCream), + SPECIES_PAL(ALCREMIE_LOVE_MATCHA_CREAM, gMonPalette_AlcremieLoveMatchaCream), + SPECIES_PAL(ALCREMIE_LOVE_MINT_CREAM, gMonPalette_AlcremieLoveMintCream), + SPECIES_PAL(ALCREMIE_LOVE_LEMON_CREAM, gMonPalette_AlcremieLoveLemonCream), + SPECIES_PAL(ALCREMIE_LOVE_SALTED_CREAM, gMonPalette_AlcremieLoveSaltedCream), + SPECIES_PAL(ALCREMIE_LOVE_RUBY_SWIRL, gMonPalette_AlcremieLoveRubySwirl), + SPECIES_PAL(ALCREMIE_LOVE_CARAMEL_SWIRL, gMonPalette_AlcremieLoveCaramelSwirl), + SPECIES_PAL(ALCREMIE_LOVE_RAINBOW_SWIRL, gMonPalette_AlcremieLoveRainbowSwirl), + SPECIES_PAL(ALCREMIE_STAR_VANILLA_CREAM, gMonPalette_AlcremieStarVanillaCream), + SPECIES_PAL(ALCREMIE_STAR_RUBY_CREAM, gMonPalette_AlcremieStarRubyCream), + SPECIES_PAL(ALCREMIE_STAR_MATCHA_CREAM, gMonPalette_AlcremieStarMatchaCream), + SPECIES_PAL(ALCREMIE_STAR_MINT_CREAM, gMonPalette_AlcremieStarMintCream), + SPECIES_PAL(ALCREMIE_STAR_LEMON_CREAM, gMonPalette_AlcremieStarLemonCream), + SPECIES_PAL(ALCREMIE_STAR_SALTED_CREAM, gMonPalette_AlcremieStarSaltedCream), + SPECIES_PAL(ALCREMIE_STAR_RUBY_SWIRL, gMonPalette_AlcremieStarRubySwirl), + SPECIES_PAL(ALCREMIE_STAR_CARAMEL_SWIRL, gMonPalette_AlcremieStarCaramelSwirl), + SPECIES_PAL(ALCREMIE_STAR_RAINBOW_SWIRL, gMonPalette_AlcremieStarRainbowSwirl), + SPECIES_PAL(ALCREMIE_CLOVER_VANILLA_CREAM, gMonPalette_AlcremieCloverVanillaCream), + SPECIES_PAL(ALCREMIE_CLOVER_RUBY_CREAM, gMonPalette_AlcremieCloverRubyCream), + SPECIES_PAL(ALCREMIE_CLOVER_MATCHA_CREAM, gMonPalette_AlcremieCloverMatchaCream), + SPECIES_PAL(ALCREMIE_CLOVER_MINT_CREAM, gMonPalette_AlcremieCloverMintCream), + SPECIES_PAL(ALCREMIE_CLOVER_LEMON_CREAM, gMonPalette_AlcremieCloverLemonCream), + SPECIES_PAL(ALCREMIE_CLOVER_SALTED_CREAM, gMonPalette_AlcremieCloverSaltedCream), + SPECIES_PAL(ALCREMIE_CLOVER_RUBY_SWIRL, gMonPalette_AlcremieCloverRubySwirl), + SPECIES_PAL(ALCREMIE_CLOVER_CARAMEL_SWIRL, gMonPalette_AlcremieCloverCaramelSwirl), + SPECIES_PAL(ALCREMIE_CLOVER_RAINBOW_SWIRL, gMonPalette_AlcremieCloverRainbowSwirl), + SPECIES_PAL(ALCREMIE_FLOWER_VANILLA_CREAM, gMonPalette_AlcremieFlowerVanillaCream), + SPECIES_PAL(ALCREMIE_FLOWER_RUBY_CREAM, gMonPalette_AlcremieFlowerRubyCream), + SPECIES_PAL(ALCREMIE_FLOWER_MATCHA_CREAM, gMonPalette_AlcremieFlowerMatchaCream), + SPECIES_PAL(ALCREMIE_FLOWER_MINT_CREAM, gMonPalette_AlcremieFlowerMintCream), + SPECIES_PAL(ALCREMIE_FLOWER_LEMON_CREAM, gMonPalette_AlcremieFlowerLemonCream), + SPECIES_PAL(ALCREMIE_FLOWER_SALTED_CREAM, gMonPalette_AlcremieFlowerSaltedCream), + SPECIES_PAL(ALCREMIE_FLOWER_RUBY_SWIRL, gMonPalette_AlcremieFlowerRubySwirl), + SPECIES_PAL(ALCREMIE_FLOWER_CARAMEL_SWIRL, gMonPalette_AlcremieFlowerCaramelSwirl), + SPECIES_PAL(ALCREMIE_FLOWER_RAINBOW_SWIRL, gMonPalette_AlcremieFlowerRainbowSwirl), + SPECIES_PAL(ALCREMIE_RIBBON_VANILLA_CREAM, gMonPalette_AlcremieRibbonVanillaCream), + SPECIES_PAL(ALCREMIE_RIBBON_RUBY_CREAM, gMonPalette_AlcremieRibbonRubyCream), + SPECIES_PAL(ALCREMIE_RIBBON_MATCHA_CREAM, gMonPalette_AlcremieRibbonMatchaCream), + SPECIES_PAL(ALCREMIE_RIBBON_MINT_CREAM, gMonPalette_AlcremieRibbonMintCream), + SPECIES_PAL(ALCREMIE_RIBBON_LEMON_CREAM, gMonPalette_AlcremieRibbonLemonCream), + SPECIES_PAL(ALCREMIE_RIBBON_SALTED_CREAM, gMonPalette_AlcremieRibbonSaltedCream), + SPECIES_PAL(ALCREMIE_RIBBON_RUBY_SWIRL, gMonPalette_AlcremieRibbonRubySwirl), + SPECIES_PAL(ALCREMIE_RIBBON_CARAMEL_SWIRL, gMonPalette_AlcremieRibbonCaramelSwirl), + SPECIES_PAL(ALCREMIE_RIBBON_RAINBOW_SWIRL, gMonPalette_AlcremieRibbonRainbowSwirl), SPECIES_PAL(FALINKS, gMonPalette_Falinks), SPECIES_PAL(PINCURCHIN, gMonPalette_Pincurchin), SPECIES_PAL(SNOM, gMonPalette_Snom), @@ -1303,15 +1365,6 @@ const struct CompressedSpritePalette gMonPaletteTable[NUM_SPECIES + 1] = SPECIES_PAL(POLTEAGEIST_ANTIQUE, gMonPalette_Polteageist), - SPECIES_PAL(ALCREMIE_RUBY_CREAM, gMonPalette_AlcremieRubyCream), - SPECIES_PAL(ALCREMIE_MATCHA_CREAM, gMonPalette_AlcremieMatchaCream), - SPECIES_PAL(ALCREMIE_MINT_CREAM, gMonPalette_AlcremieMintCream), - SPECIES_PAL(ALCREMIE_LEMON_CREAM, gMonPalette_AlcremieLemonCream), - SPECIES_PAL(ALCREMIE_SALTED_CREAM, gMonPalette_AlcremieSaltedCream), - SPECIES_PAL(ALCREMIE_RUBY_SWIRL, gMonPalette_AlcremieRubySwirl), - SPECIES_PAL(ALCREMIE_CARAMEL_SWIRL, gMonPalette_AlcremieCaramelSwirl), - SPECIES_PAL(ALCREMIE_RAINBOW_SWIRL, gMonPalette_AlcremieRainbowSwirl), - SPECIES_PAL(EISCUE_NOICE_FACE, gMonPalette_EiscueNoiceFace), SPECIES_PAL(INDEEDEE_FEMALE, gMonPalette_IndeedeeFemale), diff --git a/src/data/pokemon_graphics/shiny_palette_table.h b/src/data/pokemon_graphics/shiny_palette_table.h index 44a140a8da..1fe68ef19a 100644 --- a/src/data/pokemon_graphics/shiny_palette_table.h +++ b/src/data/pokemon_graphics/shiny_palette_table.h @@ -878,7 +878,69 @@ const struct CompressedSpritePalette gMonShinyPaletteTable[NUM_SPECIES + 1] = SPECIES_SHINY_PAL(MR_RIME, gMonShinyPalette_MrRime), SPECIES_SHINY_PAL(RUNERIGUS, gMonShinyPalette_Runerigus), SPECIES_SHINY_PAL(MILCERY, gMonShinyPalette_Milcery), - SPECIES_SHINY_PAL(ALCREMIE, gMonShinyPalette_Alcremie), + SPECIES_PAL(ALCREMIE_STRAWBERRY_VANILLA_CREAM, gMonShinyPalette_AlcremieStrawberry), + SPECIES_PAL(ALCREMIE_STRAWBERRY_RUBY_CREAM, gMonShinyPalette_AlcremieStrawberry), + SPECIES_PAL(ALCREMIE_STRAWBERRY_MATCHA_CREAM, gMonShinyPalette_AlcremieStrawberry), + SPECIES_PAL(ALCREMIE_STRAWBERRY_MINT_CREAM, gMonShinyPalette_AlcremieStrawberry), + SPECIES_PAL(ALCREMIE_STRAWBERRY_LEMON_CREAM, gMonShinyPalette_AlcremieStrawberry), + SPECIES_PAL(ALCREMIE_STRAWBERRY_SALTED_CREAM, gMonShinyPalette_AlcremieStrawberry), + SPECIES_PAL(ALCREMIE_STRAWBERRY_RUBY_SWIRL, gMonShinyPalette_AlcremieStrawberry), + SPECIES_PAL(ALCREMIE_STRAWBERRY_CARAMEL_SWIRL, gMonShinyPalette_AlcremieStrawberry), + SPECIES_PAL(ALCREMIE_STRAWBERRY_RAINBOW_SWIRL, gMonShinyPalette_AlcremieStrawberry), + SPECIES_PAL(ALCREMIE_BERRY_VANILLA_CREAM, gMonShinyPalette_AlcremieBerry), + SPECIES_PAL(ALCREMIE_BERRY_RUBY_CREAM, gMonShinyPalette_AlcremieBerry), + SPECIES_PAL(ALCREMIE_BERRY_MATCHA_CREAM, gMonShinyPalette_AlcremieBerry), + SPECIES_PAL(ALCREMIE_BERRY_MINT_CREAM, gMonShinyPalette_AlcremieBerry), + SPECIES_PAL(ALCREMIE_BERRY_LEMON_CREAM, gMonShinyPalette_AlcremieBerry), + SPECIES_PAL(ALCREMIE_BERRY_SALTED_CREAM, gMonShinyPalette_AlcremieBerry), + SPECIES_PAL(ALCREMIE_BERRY_RUBY_SWIRL, gMonShinyPalette_AlcremieBerry), + SPECIES_PAL(ALCREMIE_BERRY_CARAMEL_SWIRL, gMonShinyPalette_AlcremieBerry), + SPECIES_PAL(ALCREMIE_BERRY_RAINBOW_SWIRL, gMonShinyPalette_AlcremieBerry), + SPECIES_PAL(ALCREMIE_LOVE_VANILLA_CREAM, gMonShinyPalette_AlcremieLove), + SPECIES_PAL(ALCREMIE_LOVE_RUBY_CREAM, gMonShinyPalette_AlcremieLove), + SPECIES_PAL(ALCREMIE_LOVE_MATCHA_CREAM, gMonShinyPalette_AlcremieLove), + SPECIES_PAL(ALCREMIE_LOVE_MINT_CREAM, gMonShinyPalette_AlcremieLove), + SPECIES_PAL(ALCREMIE_LOVE_LEMON_CREAM, gMonShinyPalette_AlcremieLove), + SPECIES_PAL(ALCREMIE_LOVE_SALTED_CREAM, gMonShinyPalette_AlcremieLove), + SPECIES_PAL(ALCREMIE_LOVE_RUBY_SWIRL, gMonShinyPalette_AlcremieLove), + SPECIES_PAL(ALCREMIE_LOVE_CARAMEL_SWIRL, gMonShinyPalette_AlcremieLove), + SPECIES_PAL(ALCREMIE_LOVE_RAINBOW_SWIRL, gMonShinyPalette_AlcremieLove), + SPECIES_PAL(ALCREMIE_STAR_VANILLA_CREAM, gMonShinyPalette_AlcremieStar), + SPECIES_PAL(ALCREMIE_STAR_RUBY_CREAM, gMonShinyPalette_AlcremieStar), + SPECIES_PAL(ALCREMIE_STAR_MATCHA_CREAM, gMonShinyPalette_AlcremieStar), + SPECIES_PAL(ALCREMIE_STAR_MINT_CREAM, gMonShinyPalette_AlcremieStar), + SPECIES_PAL(ALCREMIE_STAR_LEMON_CREAM, gMonShinyPalette_AlcremieStar), + SPECIES_PAL(ALCREMIE_STAR_SALTED_CREAM, gMonShinyPalette_AlcremieStar), + SPECIES_PAL(ALCREMIE_STAR_RUBY_SWIRL, gMonShinyPalette_AlcremieStar), + SPECIES_PAL(ALCREMIE_STAR_CARAMEL_SWIRL, gMonShinyPalette_AlcremieStar), + SPECIES_PAL(ALCREMIE_STAR_RAINBOW_SWIRL, gMonShinyPalette_AlcremieStar), + SPECIES_PAL(ALCREMIE_CLOVER_VANILLA_CREAM, gMonShinyPalette_AlcremieClover), + SPECIES_PAL(ALCREMIE_CLOVER_RUBY_CREAM, gMonShinyPalette_AlcremieClover), + SPECIES_PAL(ALCREMIE_CLOVER_MATCHA_CREAM, gMonShinyPalette_AlcremieClover), + SPECIES_PAL(ALCREMIE_CLOVER_MINT_CREAM, gMonShinyPalette_AlcremieClover), + SPECIES_PAL(ALCREMIE_CLOVER_LEMON_CREAM, gMonShinyPalette_AlcremieClover), + SPECIES_PAL(ALCREMIE_CLOVER_SALTED_CREAM, gMonShinyPalette_AlcremieClover), + SPECIES_PAL(ALCREMIE_CLOVER_RUBY_SWIRL, gMonShinyPalette_AlcremieClover), + SPECIES_PAL(ALCREMIE_CLOVER_CARAMEL_SWIRL, gMonShinyPalette_AlcremieClover), + SPECIES_PAL(ALCREMIE_CLOVER_RAINBOW_SWIRL, gMonShinyPalette_AlcremieClover), + SPECIES_PAL(ALCREMIE_FLOWER_VANILLA_CREAM, gMonShinyPalette_AlcremieFlower), + SPECIES_PAL(ALCREMIE_FLOWER_RUBY_CREAM, gMonShinyPalette_AlcremieFlower), + SPECIES_PAL(ALCREMIE_FLOWER_MATCHA_CREAM, gMonShinyPalette_AlcremieFlower), + SPECIES_PAL(ALCREMIE_FLOWER_MINT_CREAM, gMonShinyPalette_AlcremieFlower), + SPECIES_PAL(ALCREMIE_FLOWER_LEMON_CREAM, gMonShinyPalette_AlcremieFlower), + SPECIES_PAL(ALCREMIE_FLOWER_SALTED_CREAM, gMonShinyPalette_AlcremieFlower), + SPECIES_PAL(ALCREMIE_FLOWER_RUBY_SWIRL, gMonShinyPalette_AlcremieFlower), + SPECIES_PAL(ALCREMIE_FLOWER_CARAMEL_SWIRL, gMonShinyPalette_AlcremieFlower), + SPECIES_PAL(ALCREMIE_FLOWER_RAINBOW_SWIRL, gMonShinyPalette_AlcremieFlower), + SPECIES_PAL(ALCREMIE_RIBBON_VANILLA_CREAM, gMonShinyPalette_AlcremieRibbon), + SPECIES_PAL(ALCREMIE_RIBBON_RUBY_CREAM, gMonShinyPalette_AlcremieRibbon), + SPECIES_PAL(ALCREMIE_RIBBON_MATCHA_CREAM, gMonShinyPalette_AlcremieRibbon), + SPECIES_PAL(ALCREMIE_RIBBON_MINT_CREAM, gMonShinyPalette_AlcremieRibbon), + SPECIES_PAL(ALCREMIE_RIBBON_LEMON_CREAM, gMonShinyPalette_AlcremieRibbon), + SPECIES_PAL(ALCREMIE_RIBBON_SALTED_CREAM, gMonShinyPalette_AlcremieRibbon), + SPECIES_PAL(ALCREMIE_RIBBON_RUBY_SWIRL, gMonShinyPalette_AlcremieRibbon), + SPECIES_PAL(ALCREMIE_RIBBON_CARAMEL_SWIRL, gMonShinyPalette_AlcremieRibbon), + SPECIES_PAL(ALCREMIE_RIBBON_RAINBOW_SWIRL, gMonShinyPalette_AlcremieRibbon), SPECIES_SHINY_PAL(FALINKS, gMonShinyPalette_Falinks), SPECIES_SHINY_PAL(PINCURCHIN, gMonShinyPalette_Pincurchin), SPECIES_SHINY_PAL(SNOM, gMonShinyPalette_Snom), @@ -1301,15 +1363,6 @@ const struct CompressedSpritePalette gMonShinyPaletteTable[NUM_SPECIES + 1] = SPECIES_SHINY_PAL(POLTEAGEIST_ANTIQUE, gMonShinyPalette_Polteageist), - SPECIES_SHINY_PAL(ALCREMIE_RUBY_CREAM, gMonShinyPalette_AlcremieRubyCream), - SPECIES_SHINY_PAL(ALCREMIE_MATCHA_CREAM, gMonShinyPalette_AlcremieMatchaCream), - SPECIES_SHINY_PAL(ALCREMIE_MINT_CREAM, gMonShinyPalette_AlcremieMintCream), - SPECIES_SHINY_PAL(ALCREMIE_LEMON_CREAM, gMonShinyPalette_AlcremieLemonCream), - SPECIES_SHINY_PAL(ALCREMIE_SALTED_CREAM, gMonShinyPalette_AlcremieSaltedCream), - SPECIES_SHINY_PAL(ALCREMIE_RUBY_SWIRL, gMonShinyPalette_AlcremieRubySwirl), - SPECIES_SHINY_PAL(ALCREMIE_CARAMEL_SWIRL, gMonShinyPalette_AlcremieCaramelSwirl), - SPECIES_SHINY_PAL(ALCREMIE_RAINBOW_SWIRL, gMonShinyPalette_AlcremieRainbowSwirl), - SPECIES_SHINY_PAL(EISCUE_NOICE_FACE, gMonShinyPalette_EiscueNoiceFace), SPECIES_SHINY_PAL(INDEEDEE_FEMALE, gMonShinyPalette_IndeedeeFemale), diff --git a/src/data/text/species_names.h b/src/data/text/species_names.h index d9da9fd9e8..678d21c11c 100644 --- a/src/data/text/species_names.h +++ b/src/data/text/species_names.h @@ -878,6 +878,68 @@ const u8 gSpeciesNames[NUM_SPECIES][POKEMON_NAME_LENGTH + 1] = { [SPECIES_RUNERIGUS] = _("Runerigus"), [SPECIES_MILCERY] = _("Milcery"), [SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL] = _("Alcremie"), + [SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL] = _("Alcremie"), + [SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL] = _("Alcremie"), + [SPECIES_ALCREMIE_BERRY_VANILLA_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_BERRY_RUBY_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_BERRY_MATCHA_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_BERRY_MINT_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_BERRY_LEMON_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_BERRY_SALTED_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_BERRY_RUBY_SWIRL] = _("Alcremie"), + [SPECIES_ALCREMIE_BERRY_CARAMEL_SWIRL] = _("Alcremie"), + [SPECIES_ALCREMIE_BERRY_RAINBOW_SWIRL] = _("Alcremie"), + [SPECIES_ALCREMIE_LOVE_VANILLA_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_LOVE_RUBY_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_LOVE_MATCHA_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_LOVE_MINT_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_LOVE_LEMON_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_LOVE_SALTED_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_LOVE_RUBY_SWIRL] = _("Alcremie"), + [SPECIES_ALCREMIE_LOVE_CARAMEL_SWIRL] = _("Alcremie"), + [SPECIES_ALCREMIE_LOVE_RAINBOW_SWIRL] = _("Alcremie"), + [SPECIES_ALCREMIE_STAR_VANILLA_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_STAR_RUBY_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_STAR_MATCHA_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_STAR_MINT_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_STAR_LEMON_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_STAR_SALTED_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_STAR_RUBY_SWIRL] = _("Alcremie"), + [SPECIES_ALCREMIE_STAR_CARAMEL_SWIRL] = _("Alcremie"), + [SPECIES_ALCREMIE_STAR_RAINBOW_SWIRL] = _("Alcremie"), + [SPECIES_ALCREMIE_CLOVER_VANILLA_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_CLOVER_RUBY_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_CLOVER_MATCHA_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_CLOVER_MINT_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_CLOVER_LEMON_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_CLOVER_SALTED_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_CLOVER_RUBY_SWIRL] = _("Alcremie"), + [SPECIES_ALCREMIE_CLOVER_CARAMEL_SWIRL] = _("Alcremie"), + [SPECIES_ALCREMIE_CLOVER_RAINBOW_SWIRL] = _("Alcremie"), + [SPECIES_ALCREMIE_FLOWER_VANILLA_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_FLOWER_RUBY_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_FLOWER_MATCHA_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_FLOWER_MINT_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_FLOWER_LEMON_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_FLOWER_SALTED_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_FLOWER_RUBY_SWIRL] = _("Alcremie"), + [SPECIES_ALCREMIE_FLOWER_CARAMEL_SWIRL] = _("Alcremie"), + [SPECIES_ALCREMIE_FLOWER_RAINBOW_SWIRL] = _("Alcremie"), + [SPECIES_ALCREMIE_RIBBON_VANILLA_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_RIBBON_RUBY_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_RIBBON_MATCHA_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_RIBBON_MINT_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_RIBBON_LEMON_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_RIBBON_SALTED_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_RIBBON_RUBY_SWIRL] = _("Alcremie"), + [SPECIES_ALCREMIE_RIBBON_CARAMEL_SWIRL] = _("Alcremie"), + [SPECIES_ALCREMIE_RIBBON_RAINBOW_SWIRL] = _("Alcremie"), [SPECIES_FALINKS] = _("Falinks"), [SPECIES_PINCURCHIN] = _("Pincurchin"), [SPECIES_SNOM] = _("Snom"), @@ -1308,15 +1370,6 @@ const u8 gSpeciesNames[NUM_SPECIES][POKEMON_NAME_LENGTH + 1] = { [SPECIES_SINISTEA_ANTIQUE] = _("Sinistea"), // Polteageist [SPECIES_POLTEAGEIST_ANTIQUE] = _("Polteageis"), - // Alcremie - [SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM] = _("Alcremie"), - [SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM] = _("Alcremie"), - [SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM] = _("Alcremie"), - [SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM] = _("Alcremie"), - [SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM] = _("Alcremie"), - [SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL] = _("Alcremie"), - [SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL] = _("Alcremie"), - [SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL] = _("Alcremie"), // Eiscue [SPECIES_EISCUE_NOICE_FACE] = _("Eiscue"), // Indeedee diff --git a/src/pokemon.c b/src/pokemon.c index 2d764d5fc8..0e9b3fdec5 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -1231,6 +1231,68 @@ static const u16 sSpeciesToNationalPokedexNum[NUM_SPECIES - 1] = SPECIES_TO_NATIONAL(RUNERIGUS), SPECIES_TO_NATIONAL(MILCERY), SPECIES_TO_NATIONAL(ALCREMIE), + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_BERRY_VANILLA_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_BERRY_RUBY_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_BERRY_MATCHA_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_BERRY_MINT_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_BERRY_LEMON_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_BERRY_SALTED_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_BERRY_RUBY_SWIRL - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_BERRY_CARAMEL_SWIRL - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_BERRY_RAINBOW_SWIRL - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_LOVE_VANILLA_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_LOVE_RUBY_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_LOVE_MATCHA_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_LOVE_MINT_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_LOVE_LEMON_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_LOVE_SALTED_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_LOVE_RUBY_SWIRL - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_LOVE_CARAMEL_SWIRL - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_LOVE_RAINBOW_SWIRL - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_STAR_VANILLA_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_STAR_RUBY_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_STAR_MATCHA_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_STAR_MINT_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_STAR_LEMON_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_STAR_SALTED_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_STAR_RUBY_SWIRL - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_STAR_CARAMEL_SWIRL - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_STAR_RAINBOW_SWIRL - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_CLOVER_VANILLA_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_CLOVER_RUBY_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_CLOVER_MATCHA_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_CLOVER_MINT_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_CLOVER_LEMON_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_CLOVER_SALTED_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_CLOVER_RUBY_SWIRL - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_CLOVER_CARAMEL_SWIRL - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_CLOVER_RAINBOW_SWIRL - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_FLOWER_VANILLA_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_FLOWER_RUBY_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_FLOWER_MATCHA_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_FLOWER_MINT_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_FLOWER_LEMON_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_FLOWER_SALTED_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_FLOWER_RUBY_SWIRL - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_FLOWER_CARAMEL_SWIRL - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_FLOWER_RAINBOW_SWIRL - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_RIBBON_VANILLA_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_RIBBON_RUBY_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_RIBBON_MATCHA_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_RIBBON_MINT_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_RIBBON_LEMON_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_RIBBON_SALTED_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_RIBBON_RUBY_SWIRL - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_RIBBON_CARAMEL_SWIRL - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_RIBBON_RAINBOW_SWIRL - 1] = NATIONAL_DEX_ALCREMIE, SPECIES_TO_NATIONAL(FALINKS), SPECIES_TO_NATIONAL(PINCURCHIN), SPECIES_TO_NATIONAL(SNOM), @@ -1656,15 +1718,6 @@ static const u16 sSpeciesToNationalPokedexNum[NUM_SPECIES - 1] = [SPECIES_SINISTEA_ANTIQUE - 1] = NATIONAL_DEX_SINISTEA, // Polteageist [SPECIES_POLTEAGEIST_ANTIQUE - 1] = NATIONAL_DEX_POLTEAGEIST, - // Alcremie - [SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM - 1] = NATIONAL_DEX_ALCREMIE, - [SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM - 1] = NATIONAL_DEX_ALCREMIE, - [SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM - 1] = NATIONAL_DEX_ALCREMIE, - [SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM - 1] = NATIONAL_DEX_ALCREMIE, - [SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM - 1] = NATIONAL_DEX_ALCREMIE, - [SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL - 1] = NATIONAL_DEX_ALCREMIE, - [SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL - 1] = NATIONAL_DEX_ALCREMIE, - [SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL - 1] = NATIONAL_DEX_ALCREMIE, // Eiscue [SPECIES_EISCUE_NOICE_FACE - 1] = NATIONAL_DEX_EISCUE, // Indeedee @@ -2897,6 +2950,68 @@ const u8 sMonFrontAnimIdsTable[NUM_SPECIES - 1] = [SPECIES_RUNERIGUS - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_MILCERY - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_BERRY_VANILLA_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_BERRY_RUBY_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_BERRY_MATCHA_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_BERRY_MINT_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_BERRY_LEMON_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_BERRY_SALTED_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_BERRY_RUBY_SWIRL - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_BERRY_CARAMEL_SWIRL - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_BERRY_RAINBOW_SWIRL - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_LOVE_VANILLA_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_LOVE_RUBY_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_LOVE_MATCHA_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_LOVE_MINT_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_LOVE_LEMON_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_LOVE_SALTED_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_LOVE_RUBY_SWIRL - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_LOVE_CARAMEL_SWIRL - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_LOVE_RAINBOW_SWIRL - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_STAR_VANILLA_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_STAR_RUBY_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_STAR_MATCHA_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_STAR_MINT_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_STAR_LEMON_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_STAR_SALTED_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_STAR_RUBY_SWIRL - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_STAR_CARAMEL_SWIRL - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_STAR_RAINBOW_SWIRL - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_CLOVER_VANILLA_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_CLOVER_RUBY_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_CLOVER_MATCHA_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_CLOVER_MINT_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_CLOVER_LEMON_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_CLOVER_SALTED_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_CLOVER_RUBY_SWIRL - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_CLOVER_CARAMEL_SWIRL - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_CLOVER_RAINBOW_SWIRL - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_FLOWER_VANILLA_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_FLOWER_RUBY_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_FLOWER_MATCHA_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_FLOWER_MINT_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_FLOWER_LEMON_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_FLOWER_SALTED_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_FLOWER_RUBY_SWIRL - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_FLOWER_CARAMEL_SWIRL - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_FLOWER_RAINBOW_SWIRL - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_RIBBON_VANILLA_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_RIBBON_RUBY_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_RIBBON_MATCHA_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_RIBBON_MINT_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_RIBBON_LEMON_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_RIBBON_SALTED_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_RIBBON_RUBY_SWIRL - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_RIBBON_CARAMEL_SWIRL - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_RIBBON_RAINBOW_SWIRL - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_FALINKS - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_PINCURCHIN - 1] = ANIM_SHRINK_GROW_VIBRATE, [SPECIES_SNOM - 1] = ANIM_V_SQUISH_AND_BOUNCE, @@ -3106,14 +3221,6 @@ const u8 sMonFrontAnimIdsTable[NUM_SPECIES - 1] = [SPECIES_TOXTRICITY_LOW_KEY - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_SINISTEA_ANTIQUE - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_POLTEAGEIST_ANTIQUE - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_ALCREMIE_RUBY_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_ALCREMIE_MATCHA_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_ALCREMIE_MINT_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_ALCREMIE_LEMON_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_ALCREMIE_SALTED_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_ALCREMIE_RUBY_SWIRL - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_ALCREMIE_CARAMEL_SWIRL - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_ALCREMIE_RAINBOW_SWIRL - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_EISCUE_NOICE_FACE - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_INDEEDEE_FEMALE - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_MORPEKO_HANGRY - 1] = ANIM_V_SQUISH_AND_BOUNCE, diff --git a/src/pokemon_animation.c b/src/pokemon_animation.c index a5e0cd8314..dca8834d6b 100644 --- a/src/pokemon_animation.c +++ b/src/pokemon_animation.c @@ -1098,6 +1098,68 @@ static const u8 sSpeciesToBackAnimSet[NUM_SPECIES] = [SPECIES_RUNERIGUS] = BACK_ANIM_H_VIBRATE, [SPECIES_MILCERY] = BACK_ANIM_H_VIBRATE, [SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_BERRY_VANILLA_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_BERRY_RUBY_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_BERRY_MATCHA_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_BERRY_MINT_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_BERRY_LEMON_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_BERRY_SALTED_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_BERRY_RUBY_SWIRL] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_BERRY_CARAMEL_SWIRL] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_BERRY_RAINBOW_SWIRL] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_LOVE_VANILLA_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_LOVE_RUBY_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_LOVE_MATCHA_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_LOVE_MINT_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_LOVE_LEMON_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_LOVE_SALTED_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_LOVE_RUBY_SWIRL] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_LOVE_CARAMEL_SWIRL] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_LOVE_RAINBOW_SWIRL] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_STAR_VANILLA_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_STAR_RUBY_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_STAR_MATCHA_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_STAR_MINT_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_STAR_LEMON_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_STAR_SALTED_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_STAR_RUBY_SWIRL] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_STAR_CARAMEL_SWIRL] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_STAR_RAINBOW_SWIRL] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_CLOVER_VANILLA_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_CLOVER_RUBY_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_CLOVER_MATCHA_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_CLOVER_MINT_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_CLOVER_LEMON_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_CLOVER_SALTED_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_CLOVER_RUBY_SWIRL] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_CLOVER_CARAMEL_SWIRL] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_CLOVER_RAINBOW_SWIRL] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_FLOWER_VANILLA_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_FLOWER_RUBY_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_FLOWER_MATCHA_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_FLOWER_MINT_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_FLOWER_LEMON_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_FLOWER_SALTED_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_FLOWER_RUBY_SWIRL] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_FLOWER_CARAMEL_SWIRL] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_FLOWER_RAINBOW_SWIRL] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_RIBBON_VANILLA_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_RIBBON_RUBY_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_RIBBON_MATCHA_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_RIBBON_MINT_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_RIBBON_LEMON_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_RIBBON_SALTED_CREAM] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_RIBBON_RUBY_SWIRL] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_RIBBON_CARAMEL_SWIRL] = BACK_ANIM_H_VIBRATE, + [SPECIES_ALCREMIE_RIBBON_RAINBOW_SWIRL] = BACK_ANIM_H_VIBRATE, [SPECIES_FALINKS] = BACK_ANIM_H_VIBRATE, [SPECIES_PINCURCHIN] = BACK_ANIM_H_VIBRATE, [SPECIES_SNOM] = BACK_ANIM_H_VIBRATE, @@ -1307,14 +1369,6 @@ static const u8 sSpeciesToBackAnimSet[NUM_SPECIES] = [SPECIES_TOXTRICITY_LOW_KEY] = BACK_ANIM_H_VIBRATE, [SPECIES_SINISTEA_ANTIQUE] = BACK_ANIM_H_VIBRATE, [SPECIES_POLTEAGEIST_ANTIQUE] = BACK_ANIM_H_VIBRATE, - [SPECIES_ALCREMIE_RUBY_CREAM] = BACK_ANIM_H_VIBRATE, - [SPECIES_ALCREMIE_MATCHA_CREAM] = BACK_ANIM_H_VIBRATE, - [SPECIES_ALCREMIE_MINT_CREAM] = BACK_ANIM_H_VIBRATE, - [SPECIES_ALCREMIE_LEMON_CREAM] = BACK_ANIM_H_VIBRATE, - [SPECIES_ALCREMIE_SALTED_CREAM] = BACK_ANIM_H_VIBRATE, - [SPECIES_ALCREMIE_RUBY_SWIRL] = BACK_ANIM_H_VIBRATE, - [SPECIES_ALCREMIE_CARAMEL_SWIRL] = BACK_ANIM_H_VIBRATE, - [SPECIES_ALCREMIE_RAINBOW_SWIRL] = BACK_ANIM_H_VIBRATE, [SPECIES_EISCUE_NOICE_FACE] = BACK_ANIM_H_VIBRATE, [SPECIES_INDEEDEE_FEMALE] = BACK_ANIM_H_VIBRATE, [SPECIES_MORPEKO_HANGRY] = BACK_ANIM_H_VIBRATE, diff --git a/src/pokemon_icon.c b/src/pokemon_icon.c index 2207ebfa1e..6c45c4d15c 100644 --- a/src/pokemon_icon.c +++ b/src/pokemon_icon.c @@ -904,7 +904,69 @@ const u8 *const gMonIconTable[NUM_SPECIES + 1] = [SPECIES_MR_RIME] = gMonIcon_MrRime, [SPECIES_RUNERIGUS] = gMonIcon_Runerigus, [SPECIES_MILCERY] = gMonIcon_Milcery, - [SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM] = gMonIcon_Alcremie, + [SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryRubyCream, + [SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryMatchaCream, + [SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryMintCream, + [SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryLemonCream, + [SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberrySaltedCream, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryRubySwirl, + [SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryCaramelSwirl, + [SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryRainbowSwirl, + [SPECIES_ALCREMIE_BERRY_VANILLA_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream, + [SPECIES_ALCREMIE_BERRY_RUBY_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryRubyCream, + [SPECIES_ALCREMIE_BERRY_MATCHA_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryMatchaCream, + [SPECIES_ALCREMIE_BERRY_MINT_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryMintCream, + [SPECIES_ALCREMIE_BERRY_LEMON_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryLemonCream, + [SPECIES_ALCREMIE_BERRY_SALTED_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberrySaltedCream, + [SPECIES_ALCREMIE_BERRY_RUBY_SWIRL] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryRubySwirl, + [SPECIES_ALCREMIE_BERRY_CARAMEL_SWIRL] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryCaramelSwirl, + [SPECIES_ALCREMIE_BERRY_RAINBOW_SWIRL] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryRainbowSwirl, + [SPECIES_ALCREMIE_LOVE_VANILLA_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream, + [SPECIES_ALCREMIE_LOVE_RUBY_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryRubyCream, + [SPECIES_ALCREMIE_LOVE_MATCHA_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryMatchaCream, + [SPECIES_ALCREMIE_LOVE_MINT_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryMintCream, + [SPECIES_ALCREMIE_LOVE_LEMON_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryLemonCream, + [SPECIES_ALCREMIE_LOVE_SALTED_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberrySaltedCream, + [SPECIES_ALCREMIE_LOVE_RUBY_SWIRL] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryRubySwirl, + [SPECIES_ALCREMIE_LOVE_CARAMEL_SWIRL] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryCaramelSwirl, + [SPECIES_ALCREMIE_LOVE_RAINBOW_SWIRL] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryRainbowSwirl, + [SPECIES_ALCREMIE_STAR_VANILLA_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream, + [SPECIES_ALCREMIE_STAR_RUBY_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryRubyCream, + [SPECIES_ALCREMIE_STAR_MATCHA_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryMatchaCream, + [SPECIES_ALCREMIE_STAR_MINT_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryMintCream, + [SPECIES_ALCREMIE_STAR_LEMON_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryLemonCream, + [SPECIES_ALCREMIE_STAR_SALTED_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberrySaltedCream, + [SPECIES_ALCREMIE_STAR_RUBY_SWIRL] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryRubySwirl, + [SPECIES_ALCREMIE_STAR_CARAMEL_SWIRL] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryCaramelSwirl, + [SPECIES_ALCREMIE_STAR_RAINBOW_SWIRL] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryRainbowSwirl, + [SPECIES_ALCREMIE_CLOVER_VANILLA_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream, + [SPECIES_ALCREMIE_CLOVER_RUBY_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryRubyCream, + [SPECIES_ALCREMIE_CLOVER_MATCHA_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryMatchaCream, + [SPECIES_ALCREMIE_CLOVER_MINT_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryMintCream, + [SPECIES_ALCREMIE_CLOVER_LEMON_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryLemonCream, + [SPECIES_ALCREMIE_CLOVER_SALTED_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberrySaltedCream, + [SPECIES_ALCREMIE_CLOVER_RUBY_SWIRL] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryRubySwirl, + [SPECIES_ALCREMIE_CLOVER_CARAMEL_SWIRL] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryCaramelSwirl, + [SPECIES_ALCREMIE_CLOVER_RAINBOW_SWIRL] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryRainbowSwirl, + [SPECIES_ALCREMIE_FLOWER_VANILLA_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream, + [SPECIES_ALCREMIE_FLOWER_RUBY_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryRubyCream, + [SPECIES_ALCREMIE_FLOWER_MATCHA_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryMatchaCream, + [SPECIES_ALCREMIE_FLOWER_MINT_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryMintCream, + [SPECIES_ALCREMIE_FLOWER_LEMON_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryLemonCream, + [SPECIES_ALCREMIE_FLOWER_SALTED_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberrySaltedCream, + [SPECIES_ALCREMIE_FLOWER_RUBY_SWIRL] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryRubySwirl, + [SPECIES_ALCREMIE_FLOWER_CARAMEL_SWIRL] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryCaramelSwirl, + [SPECIES_ALCREMIE_FLOWER_RAINBOW_SWIRL] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryRainbowSwirl, + [SPECIES_ALCREMIE_RIBBON_VANILLA_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream, + [SPECIES_ALCREMIE_RIBBON_RUBY_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryRubyCream, + [SPECIES_ALCREMIE_RIBBON_MATCHA_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryMatchaCream, + [SPECIES_ALCREMIE_RIBBON_MINT_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryMintCream, + [SPECIES_ALCREMIE_RIBBON_LEMON_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryLemonCream, + [SPECIES_ALCREMIE_RIBBON_SALTED_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberrySaltedCream, + [SPECIES_ALCREMIE_RIBBON_RUBY_SWIRL] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryRubySwirl, + [SPECIES_ALCREMIE_RIBBON_CARAMEL_SWIRL] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryCaramelSwirl, + [SPECIES_ALCREMIE_RIBBON_RAINBOW_SWIRL] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryRainbowSwirl, [SPECIES_FALINKS] = gMonIcon_Falinks, [SPECIES_PINCURCHIN] = gMonIcon_Pincurchin, [SPECIES_SNOM] = gMonIcon_Snom, @@ -1274,14 +1336,6 @@ const u8 *const gMonIconTable[NUM_SPECIES + 1] = [SPECIES_TOXTRICITY_LOW_KEY] = gMonIcon_ToxtricityLowKey, [SPECIES_SINISTEA_ANTIQUE] = gMonIcon_Sinistea, [SPECIES_POLTEAGEIST_ANTIQUE] = gMonIcon_Polteageist, - [SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM] = gMonIcon_QuestionMark,//gMonIcon_AlcremieStrawberryRubyCream, - [SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM] = gMonIcon_QuestionMark,//gMonIcon_AlcremieStrawberryMatchaCream, - [SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM] = gMonIcon_QuestionMark,//gMonIcon_AlcremieStrawberryMintCream, - [SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM] = gMonIcon_QuestionMark,//gMonIcon_AlcremieStrawberryLemonCream, - [SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM] = gMonIcon_QuestionMark,//gMonIcon_AlcremieStrawberrySaltedCream, - [SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL] = gMonIcon_QuestionMark,//gMonIcon_AlcremieStrawberryRubySwirl, - [SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL] = gMonIcon_QuestionMark,//gMonIcon_AlcremieStrawberryCaramelSwirl, - [SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL] = gMonIcon_QuestionMark,//gMonIcon_AlcremieStrawberryRainbowSwirl, [SPECIES_EISCUE_NOICE_FACE] = gMonIcon_EiscueNoiceFace, [SPECIES_INDEEDEE_FEMALE] = gMonIcon_IndeedeeFemale, [SPECIES_MORPEKO_HANGRY] = gMonIcon_MorpekoHangry, @@ -2221,6 +2275,68 @@ const u8 gMonIconPaletteIndices[] = [SPECIES_RUNERIGUS] = 2, [SPECIES_MILCERY] = 1, [SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM] = 1, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM] = 1, + [SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM] = 1, + [SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM] = 1, + [SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM] = 1, + [SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM] = 1, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL] = 1, + [SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL] = 1, + [SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL] = 1, + [SPECIES_ALCREMIE_BERRY_VANILLA_CREAM] = 1, + [SPECIES_ALCREMIE_BERRY_RUBY_CREAM] = 1, + [SPECIES_ALCREMIE_BERRY_MATCHA_CREAM] = 1, + [SPECIES_ALCREMIE_BERRY_MINT_CREAM] = 1, + [SPECIES_ALCREMIE_BERRY_LEMON_CREAM] = 1, + [SPECIES_ALCREMIE_BERRY_SALTED_CREAM] = 1, + [SPECIES_ALCREMIE_BERRY_RUBY_SWIRL] = 1, + [SPECIES_ALCREMIE_BERRY_CARAMEL_SWIRL] = 1, + [SPECIES_ALCREMIE_BERRY_RAINBOW_SWIRL] = 1, + [SPECIES_ALCREMIE_LOVE_VANILLA_CREAM] = 1, + [SPECIES_ALCREMIE_LOVE_RUBY_CREAM] = 1, + [SPECIES_ALCREMIE_LOVE_MATCHA_CREAM] = 1, + [SPECIES_ALCREMIE_LOVE_MINT_CREAM] = 1, + [SPECIES_ALCREMIE_LOVE_LEMON_CREAM] = 1, + [SPECIES_ALCREMIE_LOVE_SALTED_CREAM] = 1, + [SPECIES_ALCREMIE_LOVE_RUBY_SWIRL] = 1, + [SPECIES_ALCREMIE_LOVE_CARAMEL_SWIRL] = 1, + [SPECIES_ALCREMIE_LOVE_RAINBOW_SWIRL] = 1, + [SPECIES_ALCREMIE_STAR_VANILLA_CREAM] = 1, + [SPECIES_ALCREMIE_STAR_RUBY_CREAM] = 1, + [SPECIES_ALCREMIE_STAR_MATCHA_CREAM] = 1, + [SPECIES_ALCREMIE_STAR_MINT_CREAM] = 1, + [SPECIES_ALCREMIE_STAR_LEMON_CREAM] = 1, + [SPECIES_ALCREMIE_STAR_SALTED_CREAM] = 1, + [SPECIES_ALCREMIE_STAR_RUBY_SWIRL] = 1, + [SPECIES_ALCREMIE_STAR_CARAMEL_SWIRL] = 1, + [SPECIES_ALCREMIE_STAR_RAINBOW_SWIRL] = 1, + [SPECIES_ALCREMIE_CLOVER_VANILLA_CREAM] = 1, + [SPECIES_ALCREMIE_CLOVER_RUBY_CREAM] = 1, + [SPECIES_ALCREMIE_CLOVER_MATCHA_CREAM] = 1, + [SPECIES_ALCREMIE_CLOVER_MINT_CREAM] = 1, + [SPECIES_ALCREMIE_CLOVER_LEMON_CREAM] = 1, + [SPECIES_ALCREMIE_CLOVER_SALTED_CREAM] = 1, + [SPECIES_ALCREMIE_CLOVER_RUBY_SWIRL] = 1, + [SPECIES_ALCREMIE_CLOVER_CARAMEL_SWIRL] = 1, + [SPECIES_ALCREMIE_CLOVER_RAINBOW_SWIRL] = 1, + [SPECIES_ALCREMIE_FLOWER_VANILLA_CREAM] = 1, + [SPECIES_ALCREMIE_FLOWER_RUBY_CREAM] = 1, + [SPECIES_ALCREMIE_FLOWER_MATCHA_CREAM] = 1, + [SPECIES_ALCREMIE_FLOWER_MINT_CREAM] = 1, + [SPECIES_ALCREMIE_FLOWER_LEMON_CREAM] = 1, + [SPECIES_ALCREMIE_FLOWER_SALTED_CREAM] = 1, + [SPECIES_ALCREMIE_FLOWER_RUBY_SWIRL] = 1, + [SPECIES_ALCREMIE_FLOWER_CARAMEL_SWIRL] = 1, + [SPECIES_ALCREMIE_FLOWER_RAINBOW_SWIRL] = 1, + [SPECIES_ALCREMIE_RIBBON_VANILLA_CREAM] = 1, + [SPECIES_ALCREMIE_RIBBON_RUBY_CREAM] = 1, + [SPECIES_ALCREMIE_RIBBON_MATCHA_CREAM] = 1, + [SPECIES_ALCREMIE_RIBBON_MINT_CREAM] = 1, + [SPECIES_ALCREMIE_RIBBON_LEMON_CREAM] = 1, + [SPECIES_ALCREMIE_RIBBON_SALTED_CREAM] = 1, + [SPECIES_ALCREMIE_RIBBON_RUBY_SWIRL] = 1, + [SPECIES_ALCREMIE_RIBBON_CARAMEL_SWIRL] = 1, + [SPECIES_ALCREMIE_RIBBON_RAINBOW_SWIRL] = 1, [SPECIES_FALINKS] = 0, [SPECIES_PINCURCHIN] = 0, [SPECIES_SNOM] = 0, @@ -2543,14 +2659,6 @@ const u8 gMonIconPaletteIndices[] = [SPECIES_TOXTRICITY_LOW_KEY] = 2, [SPECIES_SINISTEA_ANTIQUE] = 2, [SPECIES_POLTEAGEIST_ANTIQUE] = 2, - [SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM] = 0, - [SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM] = 0, - [SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM] = 0, - [SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM] = 0, - [SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM] = 0, - [SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL] = 0, - [SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL] = 0, - [SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL] = 0, [SPECIES_EISCUE_NOICE_FACE] = 0, [SPECIES_INDEEDEE_FEMALE] = 2, [SPECIES_MORPEKO_HANGRY] = 2, diff --git a/src/pokemon_jump.c b/src/pokemon_jump.c index bbbffba4b3..4f0afc1c0d 100755 --- a/src/pokemon_jump.c +++ b/src/pokemon_jump.c @@ -703,6 +703,60 @@ static const struct PokemonJumpMons sPokeJumpMons[] = { .species = SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, { .species = SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, { .species = SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_BERRY_VANILLA_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_BERRY_RUBY_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_BERRY_MATCHA_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_BERRY_MINT_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_BERRY_LEMON_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_BERRY_SALTED_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_BERRY_RUBY_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_BERRY_CARAMEL_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_BERRY_RAINBOW_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_LOVE_VANILLA_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_LOVE_RUBY_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_LOVE_MATCHA_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_LOVE_MINT_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_LOVE_LEMON_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_LOVE_SALTED_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_LOVE_RUBY_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_LOVE_CARAMEL_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_LOVE_RAINBOW_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_STAR_VANILLA_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_STAR_RUBY_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_STAR_MATCHA_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_STAR_MINT_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_STAR_LEMON_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_STAR_SALTED_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_STAR_RUBY_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_STAR_CARAMEL_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_STAR_RAINBOW_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_CLOVER_VANILLA_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_CLOVER_RUBY_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_CLOVER_MATCHA_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_CLOVER_MINT_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_CLOVER_LEMON_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_CLOVER_SALTED_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_CLOVER_RUBY_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_CLOVER_CARAMEL_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_CLOVER_RAINBOW_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_FLOWER_VANILLA_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_FLOWER_RUBY_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_FLOWER_MATCHA_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_FLOWER_MINT_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_FLOWER_LEMON_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_FLOWER_SALTED_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_FLOWER_RUBY_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_FLOWER_CARAMEL_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_FLOWER_RAINBOW_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_RIBBON_VANILLA_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_RIBBON_RUBY_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_RIBBON_MATCHA_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_RIBBON_MINT_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_RIBBON_LEMON_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_RIBBON_SALTED_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_RIBBON_RUBY_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_RIBBON_CARAMEL_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_RIBBON_RAINBOW_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, { .species = SPECIES_PINCURCHIN, .jumpType = JUMP_TYPE_SLOW, }, { .species = SPECIES_SNOM, .jumpType = JUMP_TYPE_SLOW, }, { .species = SPECIES_MORPEKO_FULL_BELLY, .jumpType = JUMP_TYPE_NORMAL, },