From 0dabcfc966ed466aa7d251606cfc4046786f2c89 Mon Sep 17 00:00:00 2001 From: ghoulslash <41651341+ghoulslash@users.noreply.github.com> Date: Sun, 10 Mar 2024 17:49:00 -0400 Subject: [PATCH 1/3] fix repeated quick claw/quick draw checks (#4266) * fix repeated quick claw/quick draw checks * fix field names --------- Co-authored-by: ghoulslash --- include/battle.h | 2 ++ src/battle_main.c | 10 ++++++---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/include/battle.h b/include/battle.h index 3a7a9071b4..fa818fb622 100644 --- a/include/battle.h +++ b/include/battle.h @@ -742,6 +742,8 @@ struct BattleStruct u8 intrepidSwordBoost[NUM_BATTLE_SIDES]; u8 dauntlessShieldBoost[NUM_BATTLE_SIDES]; u8 stickySyrupdBy[MAX_BATTLERS_COUNT]; + u8 quickClawRandom[MAX_BATTLERS_COUNT]; + u8 quickDrawRandom[MAX_BATTLERS_COUNT]; }; // The palaceFlags member of struct BattleStruct contains 1 flag per move to indicate which moves the AI should consider, diff --git a/src/battle_main.c b/src/battle_main.c index 19ee70f162..e3f2812753 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -4867,6 +4867,8 @@ static void SetActionsAndBattlersTurnOrder(void) { gActionsByTurnOrder[turnOrderId] = gChosenActionByBattler[battler]; gBattlerByTurnOrder[turnOrderId] = battler; + gBattleStruct->quickClawRandom[battler] = RandomPercentage(RNG_QUICK_CLAW, GetBattlerHoldEffectParam(battler)); + gBattleStruct->quickDrawRandom[battler] = RandomPercentage(RNG_QUICK_DRAW, 30); turnOrderId++; } } @@ -5073,21 +5075,21 @@ static void TryChangingTurnOrderEffects(u32 battler1, u32 battler2) // Battler 1 // Quick Draw - if (ability1 == ABILITY_QUICK_DRAW && !IS_MOVE_STATUS(gChosenMoveByBattler[battler1]) && RandomPercentage(RNG_QUICK_DRAW, 30)) + if (ability1 == ABILITY_QUICK_DRAW && !IS_MOVE_STATUS(gChosenMoveByBattler[battler1]) && gBattleStruct->quickDrawRandom[battler1]) gProtectStructs[battler1].quickDraw = TRUE; // Quick Claw and Custap Berry if (!gProtectStructs[battler1].quickDraw - && ((holdEffectBattler1 == HOLD_EFFECT_QUICK_CLAW && RandomPercentage(RNG_QUICK_CLAW, GetBattlerHoldEffectParam(battler1))) + && ((holdEffectBattler1 == HOLD_EFFECT_QUICK_CLAW && gBattleStruct->quickClawRandom[battler1]) || (holdEffectBattler1 == HOLD_EFFECT_CUSTAP_BERRY && HasEnoughHpToEatBerry(battler1, 4, gBattleMons[battler1].item)))) gProtectStructs[battler1].usedCustapBerry = TRUE; // Battler 2 // Quick Draw - if (ability2 == ABILITY_QUICK_DRAW && !IS_MOVE_STATUS(gChosenMoveByBattler[battler2]) && RandomPercentage(RNG_QUICK_DRAW, 30)) + if (ability2 == ABILITY_QUICK_DRAW && !IS_MOVE_STATUS(gChosenMoveByBattler[battler2]) && gBattleStruct->quickDrawRandom[battler2]) gProtectStructs[battler2].quickDraw = TRUE; // Quick Claw and Custap Berry if (!gProtectStructs[battler2].quickDraw - && ((holdEffectBattler2 == HOLD_EFFECT_QUICK_CLAW && RandomPercentage(RNG_QUICK_CLAW, GetBattlerHoldEffectParam(battler2))) + && ((holdEffectBattler2 == HOLD_EFFECT_QUICK_CLAW && gBattleStruct->quickClawRandom[battler2]) || (holdEffectBattler2 == HOLD_EFFECT_CUSTAP_BERRY && HasEnoughHpToEatBerry(battler2, 4, gBattleMons[battler2].item)))) gProtectStructs[battler2].usedCustapBerry = TRUE; } From cd650ae9987687456ce7f949694db98eac68fbcc Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Mon, 11 Mar 2024 15:47:04 -0300 Subject: [PATCH 2/3] Corrected initial value of targetSpecies in GetEvolutionTargetSpecies (#4269) --- src/pokemon.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pokemon.c b/src/pokemon.c index 050e5e14d8..ee3cc643b8 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -3766,7 +3766,7 @@ u8 GetNatureFromPersonality(u32 personality) u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 mode, u16 evolutionItem, struct Pokemon *tradePartner) { int i, j; - u16 targetSpecies = 0; + u16 targetSpecies = SPECIES_NONE; u16 species = GetMonData(mon, MON_DATA_SPECIES, 0); u16 heldItem = GetMonData(mon, MON_DATA_HELD_ITEM, 0); u32 personality = GetMonData(mon, MON_DATA_PERSONALITY, 0); From dbd7e2a7c817b17166ab9c797ebcc0b51952620f Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Thu, 14 Mar 2024 05:42:09 -0300 Subject: [PATCH 3/3] Fixed DisplayCaughtMonDexPage graphical issue + cry (#4279) --- src/pokedex.c | 9 +++++---- src/pokedex_plus_hgss.c | 2 +- src/pokemon.c | 1 + 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/pokedex.c b/src/pokedex.c index 238d418817..57a2ccdcd1 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -3996,7 +3996,8 @@ u8 DisplayCaughtMonDexPage(u16 species, u32 otId, u32 personality) static void Task_DisplayCaughtMonDexPage(u8 taskId) { u8 spriteId; - u16 dexNum = SpeciesToNationalPokedexNum(gTasks[taskId].tSpecies); + u16 species = gTasks[taskId].tSpecies; + u16 dexNum = SpeciesToNationalPokedexNum(species); switch (gTasks[taskId].tState) { @@ -4022,7 +4023,7 @@ static void Task_DisplayCaughtMonDexPage(u8 taskId) FillWindowPixelBuffer(WIN_INFO, PIXEL_FILL(0)); PutWindowTilemap(WIN_INFO); PutWindowTilemap(WIN_FOOTPRINT); - DrawFootprint(WIN_FOOTPRINT, dexNum); + DrawFootprint(WIN_FOOTPRINT, species); CopyWindowToVram(WIN_FOOTPRINT, COPYWIN_GFX); ResetPaletteFade(); LoadPokedexBgPalette(FALSE); @@ -4039,7 +4040,7 @@ static void Task_DisplayCaughtMonDexPage(u8 taskId) gTasks[taskId].tState++; break; case 4: - spriteId = CreateMonPicSprite(NationalPokedexNumToSpecies(dexNum), 0, ((u16)gTasks[taskId].tPersonalityHi << 16) | (u16)gTasks[taskId].tPersonalityLo, TRUE, MON_PAGE_X, MON_PAGE_Y, 0, TAG_NONE); + spriteId = CreateMonPicSprite(species, FALSE, ((u16)gTasks[taskId].tPersonalityHi << 16) | (u16)gTasks[taskId].tPersonalityLo, TRUE, MON_PAGE_X, MON_PAGE_Y, 0, TAG_NONE); gSprites[spriteId].oam.priority = 0; BeginNormalPaletteFade(PALETTES_ALL, 0, 0x10, 0, RGB_BLACK); SetVBlankCallback(gPokedexVBlankCB); @@ -4058,7 +4059,7 @@ static void Task_DisplayCaughtMonDexPage(u8 taskId) case 6: if (!gPaletteFade.active) { - PlayCry_Normal(NationalPokedexNumToSpecies(dexNum), 0); + PlayCry_Normal(species, 0); gTasks[taskId].tPalTimer = 0; gTasks[taskId].func = Task_HandleCaughtMonPageInput; } diff --git a/src/pokedex_plus_hgss.c b/src/pokedex_plus_hgss.c index a1c8b795f5..3ff358f384 100644 --- a/src/pokedex_plus_hgss.c +++ b/src/pokedex_plus_hgss.c @@ -4206,7 +4206,7 @@ void Task_DisplayCaughtMonDexPageHGSS(u8 taskId) case 6: if (!gPaletteFade.active) { - PlayCry_Normal(NationalPokedexNumToSpeciesHGSS(dexNum), 0); + PlayCry_Normal(species, 0); gTasks[taskId].tPalTimer = 0; gTasks[taskId].func = Task_HandleCaughtMonPageInput; } diff --git a/src/pokemon.c b/src/pokemon.c index ee3cc643b8..e484bfc7d7 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -4217,6 +4217,7 @@ u16 NationalToHoennOrder(u16 nationalNum) u16 SpeciesToNationalPokedexNum(u16 species) { + species = SanitizeSpeciesId(species); if (!species) return NATIONAL_DEX_NONE;