From 9e10f680a97bd8593a691f759682d22fd2003aee Mon Sep 17 00:00:00 2001 From: Frank DeBlasio <35279583+fdeblasio@users.noreply.github.com> Date: Sun, 26 Jan 2025 03:48:38 -0500 Subject: [PATCH 1/5] Move flag fixes (#6107) --- src/data/moves_info.h | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/data/moves_info.h b/src/data/moves_info.h index 13544bdabc..50f8cebbd3 100644 --- a/src/data/moves_info.h +++ b/src/data/moves_info.h @@ -10844,7 +10844,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_STATUS, .zMove = { .effect = Z_EFFECT_ACC_UP_1 }, - //.ignoresSubstitute = TRUE, + //.ignoresSubstitute = TRUE, In Gen5+, the evasion drop will no longer bypass Substitute. However, this is tricky to code .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, .contestEffect = CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, .contestCategory = CONTEST_CATEGORY_BEAUTY, @@ -13340,7 +13340,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - //.windMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_ACC_MINUS_1, .chance = 50, @@ -20369,7 +20368,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .argument = 50, .thawsUser = TRUE, .metronomeBanned = TRUE, - .healingMove = B_EXTRAPOLATED_MOVE_FLAGS, + .healingMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_BURN, .chance = 20, From 0339f684c36a6d4177ff4bfa2e7d5fcfd84e6c9f Mon Sep 17 00:00:00 2001 From: PhallenTree <168426989+PhallenTree@users.noreply.github.com> Date: Sun, 26 Jan 2025 11:21:19 +0000 Subject: [PATCH 2/5] Fix seeds softlocking the game when a battler with a Surge ability enters the field (#6110) --- src/battle_script_commands.c | 8 +-- test/battle/hold_effect/seeds.c | 101 +++++++++++++++++++++++++++----- 2 files changed, 89 insertions(+), 20 deletions(-) diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index e95dab7ac4..61082d33cd 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -10541,16 +10541,16 @@ static void Cmd_various(void) switch (GetBattlerHoldEffectParam(battler)) { case HOLD_EFFECT_PARAM_ELECTRIC_TERRAIN: - effect = TryHandleSeed(battler, STATUS_FIELD_ELECTRIC_TERRAIN, STAT_DEF, item, ITEMEFFECT_ON_SWITCH_IN_FIRST_TURN); + effect = TryHandleSeed(battler, STATUS_FIELD_ELECTRIC_TERRAIN, STAT_DEF, item, ITEMEFFECT_NONE); break; case HOLD_EFFECT_PARAM_GRASSY_TERRAIN: - effect = TryHandleSeed(battler, STATUS_FIELD_GRASSY_TERRAIN, STAT_DEF, item, ITEMEFFECT_ON_SWITCH_IN_FIRST_TURN); + effect = TryHandleSeed(battler, STATUS_FIELD_GRASSY_TERRAIN, STAT_DEF, item, ITEMEFFECT_NONE); break; case HOLD_EFFECT_PARAM_MISTY_TERRAIN: - effect = TryHandleSeed(battler, STATUS_FIELD_MISTY_TERRAIN, STAT_SPDEF, item, ITEMEFFECT_ON_SWITCH_IN_FIRST_TURN); + effect = TryHandleSeed(battler, STATUS_FIELD_MISTY_TERRAIN, STAT_SPDEF, item, ITEMEFFECT_NONE); break; case HOLD_EFFECT_PARAM_PSYCHIC_TERRAIN: - effect = TryHandleSeed(battler, STATUS_FIELD_PSYCHIC_TERRAIN, STAT_SPDEF, item, ITEMEFFECT_ON_SWITCH_IN_FIRST_TURN); + effect = TryHandleSeed(battler, STATUS_FIELD_PSYCHIC_TERRAIN, STAT_SPDEF, item, ITEMEFFECT_NONE); break; } diff --git a/test/battle/hold_effect/seeds.c b/test/battle/hold_effect/seeds.c index 10a415bd63..22e94baa8c 100644 --- a/test/battle/hold_effect/seeds.c +++ b/test/battle/hold_effect/seeds.c @@ -1,62 +1,131 @@ #include "global.h" #include "test/battle.h" +ASSUMPTIONS +{ + ASSUME(gItemsInfo[ITEM_ELECTRIC_SEED].holdEffect == HOLD_EFFECT_SEEDS); + ASSUME(gItemsInfo[ITEM_ELECTRIC_SEED].holdEffectParam == HOLD_EFFECT_PARAM_ELECTRIC_TERRAIN); + ASSUME(gItemsInfo[ITEM_GRASSY_SEED].holdEffect == HOLD_EFFECT_SEEDS); + ASSUME(gItemsInfo[ITEM_GRASSY_SEED].holdEffectParam == HOLD_EFFECT_PARAM_GRASSY_TERRAIN); + ASSUME(gItemsInfo[ITEM_MISTY_SEED].holdEffect == HOLD_EFFECT_SEEDS); + ASSUME(gItemsInfo[ITEM_MISTY_SEED].holdEffectParam == HOLD_EFFECT_PARAM_MISTY_TERRAIN); + ASSUME(gItemsInfo[ITEM_PSYCHIC_SEED].holdEffect == HOLD_EFFECT_SEEDS); + ASSUME(gItemsInfo[ITEM_PSYCHIC_SEED].holdEffectParam == HOLD_EFFECT_PARAM_PSYCHIC_TERRAIN); + +} + SINGLE_BATTLE_TEST("Electric Seed raises the holder's Defense on Electric Terrain") { + u32 ability, item; + PARAMETRIZE { ability = ABILITY_TELEPATHY; item = ITEM_NONE; } + PARAMETRIZE { ability = ABILITY_TELEPATHY; item = ITEM_ELECTRIC_SEED; } + PARAMETRIZE { ability = ABILITY_ELECTRIC_SURGE; item = ITEM_NONE; } + PARAMETRIZE { ability = ABILITY_ELECTRIC_SURGE; item = ITEM_ELECTRIC_SEED; } GIVEN { - ASSUME(gItemsInfo[ITEM_ELECTRIC_SEED].holdEffect == HOLD_EFFECT_SEEDS); - ASSUME(gItemsInfo[ITEM_ELECTRIC_SEED].holdEffectParam == HOLD_EFFECT_PARAM_ELECTRIC_TERRAIN); PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_ELECTRIC_SEED); } - OPPONENT(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_ELECTRIC_SEED); } + OPPONENT(SPECIES_TAPU_KOKO) { Ability(ability); Item(item); } } WHEN { - TURN { MOVE(player, MOVE_ELECTRIC_TERRAIN); } + if (ability == ABILITY_TELEPATHY) + TURN { MOVE(player, MOVE_ELECTRIC_TERRAIN); } + TURN { SWITCH(player, 1); } } SCENE { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); MESSAGE("Using Electric Seed, the Defense of Wobbuffet rose!"); + if (item == ITEM_ELECTRIC_SEED) { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + MESSAGE("Using Electric Seed, the Defense of the opposing Tapu Koko rose!"); + } + SWITCH_OUT_MESSAGE("Wobbuffet"); + SEND_IN_MESSAGE("Wobbuffet"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + MESSAGE("Using Electric Seed, the Defense of Wobbuffet rose!"); } } SINGLE_BATTLE_TEST("Grassy Seed raises the holder's Defense on Grassy Terrain") { + u32 ability, item; + PARAMETRIZE { ability = ABILITY_TELEPATHY; item = ITEM_NONE; } + PARAMETRIZE { ability = ABILITY_TELEPATHY; item = ITEM_GRASSY_SEED; } + PARAMETRIZE { ability = ABILITY_GRASSY_SURGE; item = ITEM_NONE; } + PARAMETRIZE { ability = ABILITY_GRASSY_SURGE; item = ITEM_GRASSY_SEED; } GIVEN { - ASSUME(gItemsInfo[ITEM_GRASSY_SEED].holdEffect == HOLD_EFFECT_SEEDS); - ASSUME(gItemsInfo[ITEM_GRASSY_SEED].holdEffectParam == HOLD_EFFECT_PARAM_GRASSY_TERRAIN); PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_GRASSY_SEED); } - OPPONENT(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_GRASSY_SEED); } + OPPONENT(SPECIES_TAPU_BULU) { Ability(ability); Item(item); } } WHEN { - TURN { MOVE(player, MOVE_GRASSY_TERRAIN); } + if (ability == ABILITY_TELEPATHY) + TURN { MOVE(player, MOVE_GRASSY_TERRAIN); } + TURN { SWITCH(player, 1); } } SCENE { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); MESSAGE("Using Grassy Seed, the Defense of Wobbuffet rose!"); + if (item == ITEM_GRASSY_SEED) { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + MESSAGE("Using Grassy Seed, the Defense of the opposing Tapu Bulu rose!"); + } + SWITCH_OUT_MESSAGE("Wobbuffet"); + SEND_IN_MESSAGE("Wobbuffet"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + MESSAGE("Using Grassy Seed, the Defense of Wobbuffet rose!"); } } SINGLE_BATTLE_TEST("Misty Seed raises the holder's Sp. Defense on Misty Terrain") { + u32 ability, item; + PARAMETRIZE { ability = ABILITY_TELEPATHY; item = ITEM_NONE; } + PARAMETRIZE { ability = ABILITY_TELEPATHY; item = ITEM_MISTY_SEED; } + PARAMETRIZE { ability = ABILITY_MISTY_SURGE; item = ITEM_NONE; } + PARAMETRIZE { ability = ABILITY_MISTY_SURGE; item = ITEM_MISTY_SEED; } GIVEN { - ASSUME(gItemsInfo[ITEM_MISTY_SEED].holdEffect == HOLD_EFFECT_SEEDS); - ASSUME(gItemsInfo[ITEM_MISTY_SEED].holdEffectParam == HOLD_EFFECT_PARAM_MISTY_TERRAIN); PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_MISTY_SEED); } - OPPONENT(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_MISTY_SEED); } + OPPONENT(SPECIES_TAPU_FINI) { Ability(ability); Item(item); } } WHEN { - TURN { MOVE(player, MOVE_MISTY_TERRAIN); } + if (ability == ABILITY_TELEPATHY) + TURN { MOVE(player, MOVE_MISTY_TERRAIN); } + TURN { SWITCH(player, 1); } } SCENE { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); MESSAGE("Using Misty Seed, the Sp. Def of Wobbuffet rose!"); + if (item == ITEM_MISTY_SEED) { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + MESSAGE("Using Misty Seed, the Sp. Def of the opposing Tapu Fini rose!"); + } + SWITCH_OUT_MESSAGE("Wobbuffet"); + SEND_IN_MESSAGE("Wobbuffet"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + MESSAGE("Using Misty Seed, the Sp. Def of Wobbuffet rose!"); } } SINGLE_BATTLE_TEST("Psychic Seed raises the holder's Sp. Defense on Psychic Terrain") { + u32 ability, item; + PARAMETRIZE { ability = ABILITY_TELEPATHY; item = ITEM_NONE; } + PARAMETRIZE { ability = ABILITY_TELEPATHY; item = ITEM_PSYCHIC_SEED; } + PARAMETRIZE { ability = ABILITY_PSYCHIC_SURGE; item = ITEM_NONE; } + PARAMETRIZE { ability = ABILITY_PSYCHIC_SURGE; item = ITEM_PSYCHIC_SEED; } GIVEN { - ASSUME(gItemsInfo[ITEM_PSYCHIC_SEED].holdEffect == HOLD_EFFECT_SEEDS); - ASSUME(gItemsInfo[ITEM_PSYCHIC_SEED].holdEffectParam == HOLD_EFFECT_PARAM_PSYCHIC_TERRAIN); PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_PSYCHIC_SEED); } - OPPONENT(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_PSYCHIC_SEED); } + OPPONENT(SPECIES_TAPU_LELE) { Ability(ability); Item(item); } } WHEN { - TURN { MOVE(player, MOVE_PSYCHIC_TERRAIN); } + if (ability == ABILITY_TELEPATHY) + TURN { MOVE(player, MOVE_PSYCHIC_TERRAIN); } + TURN { SWITCH(player, 1); } } SCENE { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); MESSAGE("Using Psychic Seed, the Sp. Def of Wobbuffet rose!"); + if (item == ITEM_PSYCHIC_SEED) { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + MESSAGE("Using Psychic Seed, the Sp. Def of the opposing Tapu Lele rose!"); + } + SWITCH_OUT_MESSAGE("Wobbuffet"); + SEND_IN_MESSAGE("Wobbuffet"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + MESSAGE("Using Psychic Seed, the Sp. Def of Wobbuffet rose!"); } } From b3543cbc59c455e1427397621150f7f74056902b Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sun, 26 Jan 2025 16:06:13 +0100 Subject: [PATCH 3/5] Fix MindBlown crash on MyBoy/No Cash (#6112) --- src/battle_anim_new.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/battle_anim_new.c b/src/battle_anim_new.c index 2d1ad3e807..c5ec4bc9c6 100644 --- a/src/battle_anim_new.c +++ b/src/battle_anim_new.c @@ -7844,8 +7844,8 @@ static void SpriteCB_MindBlownBall(struct Sprite *sprite) sprite->data[3] = gBattleAnimArgs[2]; sprite->data[4] = sprite->x << 4; sprite->data[5] = sprite->y << 4; - sprite->data[6] = ((oldPosX - sprite->x) << 4) / (gBattleAnimArgs[0] << 1); - sprite->data[7] = ((oldPosY - sprite->y) << 4) / (gBattleAnimArgs[0] << 1); + sprite->data[6] = SAFE_DIV((oldPosX - sprite->x) << 4, gBattleAnimArgs[0] << 1); + sprite->data[7] = SAFE_DIV((oldPosY - sprite->y) << 4, gBattleAnimArgs[0] << 1); sprite->callback = AnimMindBlownBallStep; } static void AnimMindBlownBallStep(struct Sprite *sprite) From 99c24c5c1a9f7a40943c3dfcd6aa66b358c09f61 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sun, 26 Jan 2025 16:23:33 +0100 Subject: [PATCH 4/5] Fix Double Iron Bash move animation crash on MyBoy/No$ (#6114) --- src/battle_anim_mons.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/battle_anim_mons.c b/src/battle_anim_mons.c index f00626efe8..2df2b23089 100644 --- a/src/battle_anim_mons.c +++ b/src/battle_anim_mons.c @@ -1029,8 +1029,8 @@ void InitAnimLinearTranslation(struct Sprite *sprite) u16 xDelta = abs(x) << 8; u16 yDelta = abs(y) << 8; - xDelta = xDelta / sprite->data[0]; - yDelta = yDelta / sprite->data[0]; + xDelta = SAFE_DIV(xDelta, sprite->data[0]); + yDelta = SAFE_DIV(yDelta, sprite->data[0]); if (movingLeft) xDelta |= 1; From 37b6f031c8786bfe04ccffc64f20c463ccd75903 Mon Sep 17 00:00:00 2001 From: Cafe <46283144+Cafeei@users.noreply.github.com> Date: Sun, 26 Jan 2025 20:27:05 +0400 Subject: [PATCH 5/5] Duraludon battle animation (#6086) --- graphics/pokemon/duraludon/anim_front.png | Bin 0 -> 1595 bytes graphics/pokemon/duraludon/front.png | Bin 891 -> 0 bytes graphics/pokemon/duraludon/shiny.pal | 2 +- src/data/graphics/pokemon.h | 2 +- src/data/pokemon/species_info/gen_8_families.h | 2 +- src/data/pokemon_graphics/front_pic_anims.h | 9 ++++++++- 6 files changed, 11 insertions(+), 4 deletions(-) create mode 100644 graphics/pokemon/duraludon/anim_front.png delete mode 100644 graphics/pokemon/duraludon/front.png diff --git a/graphics/pokemon/duraludon/anim_front.png b/graphics/pokemon/duraludon/anim_front.png new file mode 100644 index 0000000000000000000000000000000000000000..32624a4988e089d0b135371c5a7085d5c5a13494 GIT binary patch literal 1595 zcmV-B2E_S^P)Px#Fi=cXMV!*4Vuh?RU5jcoIS>#Kdx4bh;(LRAVvB*Kw6@I%BvSwX|7u}#y=iI~ zIAY%7_E%R?fB*mmxk*GpRA_}>yv6@CPW^hRLjZwPG5es=)z z!XlopvU8OpMqg~WouhcKoC$*Ku0;r`eZZ!GX4mr!-&D>7Y9F%^S+cl(2W6Z46_R>> zU5FjP4gso4MESV^Apz8KKuo0GE6oo$>JqZEP<8N=5K`Izk_Ch)Z^1rB=A-~-L_89L zb0!~SBsD=^R@lsbtm68NIuzmuA*?QCDfM55CeN7=l8U?JIsig1pPT~#$RWUhMINj? zdkJAx`5qwB19a&FxsEZRsC>-z-HU{zgyhx=(DVE-qiga+7|E>I04c0#O(`*Is+Cb- zgsdO10opla`PDgv=vjd!sDVcYJtA>w4*-4=!s>Vf&<@bm z`k18$bxNbT*|?fvuK*T+=3G1iwtUhS?00|xixmawvxCnDgHF18!0a1VhXz26SH`h3 zLS3H+6kG+6#?}eoWU+|uu>#ZzzYS7sX))EdmH4RRou1+2eL^rXM7nBsAMhSJ_m+xeUXmW;8zZe0QKGdPla`;E6fo#y4G_!hFs&!r zgz@KXNA36K8n8w$X2P8o-5KN^;BW^| zp-A$2Jzp==K^phzV`zo=!_dc%q^?)Yh#xi#B0C;KF>BK@=DLA84bS!=>1t2 zyL-TCi+(`#`J+UzIz{UruL#@-zNr8)63i!+O}-4))+!TaQ)a+-1oj@bX1|yc*n9sa zfw#+n&6J=C0vd5Tb`tFgSZ*T(R>t8j8U|fgl8}&fT|68^DESHa9cd*C8y+4iGB9xo|Fhj-`4D trWc}j0IBqSpf|sF04jw5xa8dp)<5SlscjCLE%*Qc002ovPDHLkV1j?}!pZ;u literal 0 HcmV?d00001 diff --git a/graphics/pokemon/duraludon/front.png b/graphics/pokemon/duraludon/front.png deleted file mode 100644 index fd22d471ee530a6cc3ac9d62a2a6720402842cde..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 891 zcmV->1BCpEP)Px#Fi=cXMV!*4Vuh?RU5jcoIS>#Kdx4bh;(LRAVvB*Kw6@I%BvSwX|7u}#y=iI~ zIAY%7_E%R?fB*mj`AI}UR9J;M1ub|srQA)&?5Ovxm$4|y#K z`t@}dx7+RX{BQ9iKR5jlkUs%10oy(xFafhq07$?_Q&3U8DUV|*sEMVFW41AZnkC%a zHkvR1fHWfWpfU{D0+6o~dOckn1#GlYvt9;-K5xl{0K`=QQ+NG00NBnELT3K|h5@$u z`oFal837;#s9;~2p|=qicw4yd`VoM;pt;DBY!JX!%93ocL4rsU&wm+C0eS*R7y~c} z7$kfS*cyN)T(2e6Vg>j%q{}II4f?O_S(2R)had&)t```0j0E#y2Wb(xQ`7FK?XlsbTK zg0z(2q<_930MQ-?XynZ5wY?6YM_Bf~U^?kY0OAg?5P%R%@UNR{Apmm36Jeca*WV8|j}?&TCjuDIEywgma;xUYb5hY~xxepUd000PPVt0E$SKH?56x;b1b9to3FK4>@RB=UO4+By89?_tuv4Vg zjm!5@ahk#%kW)p3TJEpDXMj$hYrlH5a}nEnz^WbpspAiTbR?i(^$y4nfbLnph5E&F ziru_>+-!JEAXNZoZh8jX=gA)OxPr8%>LUJ*Z}4H5bn5N`_ZMqS4oK`*O|OelS{yeB zIaWYsZ@mG$2@tr(2A~Vq{*h82i>1A`qT}UK0$iF82%m?C75@WZT002ovPDHLkV1mD@k-q={ diff --git a/graphics/pokemon/duraludon/shiny.pal b/graphics/pokemon/duraludon/shiny.pal index 19e7323e31..9ac865c3f3 100644 --- a/graphics/pokemon/duraludon/shiny.pal +++ b/graphics/pokemon/duraludon/shiny.pal @@ -8,7 +8,7 @@ JASC-PAL 16 16 16 81 96 101 226 157 109 -253 248 236 +242 211 111 118 138 154 149 163 164 8 36 82 diff --git a/src/data/graphics/pokemon.h b/src/data/graphics/pokemon.h index 4c6fa671e2..70e32a9c40 100644 --- a/src/data/graphics/pokemon.h +++ b/src/data/graphics/pokemon.h @@ -24186,7 +24186,7 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #endif //P_FAMILY_ARCTOVISH #if P_FAMILY_DURALUDON - const u32 gMonFrontPic_Duraludon[] = INCBIN_U32("graphics/pokemon/duraludon/front.4bpp.lz"); + const u32 gMonFrontPic_Duraludon[] = INCBIN_U32("graphics/pokemon/duraludon/anim_front.4bpp.lz"); const u32 gMonPalette_Duraludon[] = INCBIN_U32("graphics/pokemon/duraludon/normal.gbapal.lz"); const u32 gMonBackPic_Duraludon[] = INCBIN_U32("graphics/pokemon/duraludon/back.4bpp.lz"); const u32 gMonShinyPalette_Duraludon[] = INCBIN_U32("graphics/pokemon/duraludon/shiny.gbapal.lz"); diff --git a/src/data/pokemon/species_info/gen_8_families.h b/src/data/pokemon/species_info/gen_8_families.h index 4281b019ea..d372fb3b3c 100644 --- a/src/data/pokemon/species_info/gen_8_families.h +++ b/src/data/pokemon/species_info/gen_8_families.h @@ -5988,7 +5988,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .frontPicSize = MON_COORDS_SIZE(56, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_Duraludon, - //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .frontAnimId = ANIM_SHAKE_FLASH_YELLOW_FAST, .backPic = gMonBackPic_Duraludon, .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, diff --git a/src/data/pokemon_graphics/front_pic_anims.h b/src/data/pokemon_graphics/front_pic_anims.h index 74b90bb340..3fceeb2ff9 100644 --- a/src/data/pokemon_graphics/front_pic_anims.h +++ b/src/data/pokemon_graphics/front_pic_anims.h @@ -9737,7 +9737,14 @@ PLACEHOLDER_ANIM_SINGLE_FRAME(Arctovish); #endif //P_FAMILY_ARCTOVISH #if P_FAMILY_DURALUDON -PLACEHOLDER_ANIM_SINGLE_FRAME(Duraludon); +static const union AnimCmd sAnim_Duraludon_1[] = +{ + + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(1, 60), + ANIMCMD_FRAME(0, 2), + ANIMCMD_END, +}; #if P_GIGANTAMAX_FORMS PLACEHOLDER_ANIM_SINGLE_FRAME(DuraludonGmax);