From b130a3846e993c66638169ac09a3a0a26c36bf03 Mon Sep 17 00:00:00 2001 From: psf <77138753+pkmnsnfrn@users.noreply.github.com> Date: Wed, 29 Jan 2025 10:09:00 -0800 Subject: [PATCH] Added Difficulty Fallback for Trainer Slides (#6088) --- src/trainer_slide.c | 36 ++++++++++++++++++++++++------------ 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/src/trainer_slide.c b/src/trainer_slide.c index a4788c3a95..209f47f0c3 100644 --- a/src/trainer_slide.c +++ b/src/trainer_slide.c @@ -59,14 +59,14 @@ static const u8* const sTrainerSlides[DIFFICULTY_COUNT][TRAINERS_COUNT][TRAINER_ }, }; -static const u8* const sFrontierTrainerSlides[DIFFICULTY_COUNT][TRAINERS_COUNT][TRAINER_SLIDE_COUNT] = +static const u8* const sFrontierTrainerSlides[DIFFICULTY_COUNT][FRONTIER_TRAINERS_COUNT][TRAINER_SLIDE_COUNT] = { [DIFFICULTY_NORMAL] = { }, }; -static const u8* const sTestTrainerSlides[DIFFICULTY_COUNT][FRONTIER_TRAINERS_COUNT][TRAINER_SLIDE_COUNT] = +static const u8* const sTestTrainerSlides[DIFFICULTY_COUNT][TRAINERS_COUNT][TRAINER_SLIDE_COUNT] = { #include "../test/battle/trainer_slides.h" }; @@ -107,24 +107,36 @@ static u32 GetEnemyMonCount(u32 firstId, u32 lastId, bool32 onlyAlive) return count; } -static bool32 DoesTrainerHaveSlideMessage(enum DifficultyLevel difficulty, u32 trainerId, u32 slideId) +static const u8* const *GetTrainerSlideArray(enum DifficultyLevel difficulty, u32 trainerId, u32 slideId) { if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER) - return (sFrontierTrainerSlides[difficulty][trainerId][slideId] != NULL); + return sFrontierTrainerSlides[difficulty][trainerId]; else if (TESTING) - return (sTestTrainerSlides[difficulty][trainerId][slideId] != NULL); + return sTestTrainerSlides[difficulty][trainerId]; else - return (sTrainerSlides[difficulty][trainerId][slideId] != NULL); + return sTrainerSlides[difficulty][trainerId]; +} + +static bool32 DoesTrainerHaveSlideMessage(enum DifficultyLevel difficulty, u32 trainerId, u32 slideId) +{ + const u8* const *trainerSlides = GetTrainerSlideArray(difficulty, trainerId, slideId); + const u8* const *trainerSlidesNormal = GetTrainerSlideArray(DIFFICULTY_NORMAL, trainerId, slideId); + + if (trainerSlides[slideId] == NULL) + return (trainerSlidesNormal[slideId] != NULL); + else + return TRUE; } void SetTrainerSlideMessage(enum DifficultyLevel difficulty, u32 trainerId, u32 slideId) { - if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER) - gBattleStruct->trainerSlideMsg = sFrontierTrainerSlides[difficulty][trainerId][slideId]; - else if (TESTING) - gBattleStruct->trainerSlideMsg = sTestTrainerSlides[difficulty][trainerId][slideId]; + const u8* const *trainerSlides = GetTrainerSlideArray(difficulty, trainerId, slideId); + const u8* const *trainerSlidesNormal = GetTrainerSlideArray(DIFFICULTY_NORMAL, trainerId, slideId); + + if (trainerSlides[slideId] != NULL) + gBattleStruct->trainerSlideMsg = trainerSlides[slideId]; else - gBattleStruct->trainerSlideMsg = sTrainerSlides[difficulty][trainerId][slideId]; + gBattleStruct->trainerSlideMsg = trainerSlidesNormal[slideId]; } static bool32 ShouldRunTrainerSlidePlayerLandsFirstCriticalHit(enum TrainerSlideType slideId) @@ -232,7 +244,7 @@ enum TrainerSlideTargets ShouldDoTrainerSlide(u32 battler, enum TrainerSlideType return TRAINER_SLIDE_TARGET_NONE; SetTrainerSlideParamters(battler, &firstId, &lastId, &trainerId, &retValue); - enum DifficultyLevel difficulty = GetTrainerDifficultyLevel(trainerId); + enum DifficultyLevel difficulty = GetCurrentDifficultyLevel(); gBattleScripting.battler = battler;