summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/battle_tower.c4
-rw-r--r--src/field_specials.c2
-rw-r--r--src/pokemon_size_record.c4
-rw-r--r--src/tv.c226
4 files changed, 121 insertions, 115 deletions
diff --git a/src/battle_tower.c b/src/battle_tower.c
index 51d695f9b..1bf4b737c 100644
--- a/src/battle_tower.c
+++ b/src/battle_tower.c
@@ -2765,7 +2765,11 @@ static void AwardBattleTowerRibbons(void)
{
s32 i;
u32 partyIndex;
+#ifdef BUGFIX
+ struct RibbonCounter ribbons[MAX_FRONTIER_PARTY_SIZE];
+#else
struct RibbonCounter ribbons[3]; // BUG: 4 Pokemon can receive ribbons in a double battle mode.
+#endif
u8 ribbonType = 0;
u8 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
u8 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
diff --git a/src/field_specials.c b/src/field_specials.c
index a6831ec5b..b40889773 100644
--- a/src/field_specials.c
+++ b/src/field_specials.c
@@ -1408,7 +1408,7 @@ void GiveLeadMonEffortRibbon(void)
SetMonData(leadMon, MON_DATA_EFFORT_RIBBON, &ribbonSet);
if (GetRibbonCount(leadMon) > NUM_CUTIES_RIBBONS)
{
- TryPutSpotTheCutiesOnAir(leadMon, 0x47);
+ TryPutSpotTheCutiesOnAir(leadMon, MON_DATA_EFFORT_RIBBON);
}
}
diff --git a/src/pokemon_size_record.c b/src/pokemon_size_record.c
index 2f76c5d69..4beb9c83f 100644
--- a/src/pokemon_size_record.c
+++ b/src/pokemon_size_record.c
@@ -198,10 +198,10 @@ void GiveGiftRibbonToParty(u8 index, u8 ribbonId)
s32 i;
bool32 gotRibbon = FALSE;
u8 data = 1;
- u8 array[8];
+ u8 array[ARRAY_COUNT(sGiftRibbonsMonDataIds)];
memcpy(array, sGiftRibbonsMonDataIds, sizeof(sGiftRibbonsMonDataIds));
- if (index < GIFT_RIBBONS_COUNT && ribbonId < 65)
+ if (index < GIFT_RIBBONS_COUNT && ribbonId <= MAX_GIFT_RIBBON)
{
gSaveBlock1Ptr->giftRibbons[index] = ribbonId;
for (i = 0; i < PARTY_SIZE; i++)
diff --git a/src/tv.c b/src/tv.c
index 99bd609e4..a1743fd2d 100644
--- a/src/tv.c
+++ b/src/tv.c
@@ -139,7 +139,7 @@ static void sub_80EF120(u16 days);
static void sub_80EDA48(u16 days);
static void sub_80EEB98(u16 days);
void PutFishingAdviceShowOnTheAir(void);
-u8 TV_MonDataIdxToRibbon(u8 monDataIdx);
+static u8 MonDataIdxToRibbon(u8 monDataIdx);
static void sub_80EEBF4(u8 actionIdx);
bool8 IsPriceDiscounted(u8 newsKind);
static void InterviewBefore_FanClubLetter(void);
@@ -592,22 +592,22 @@ static const u8 *const sTVTrainerFanClubTextGroup[] = {
};
static const u8 *const sTVCutiesTextGroup[] = {
- gTVCutiesText00,
- gTVCutiesText01,
- gTVCutiesText02,
- gTVCutiesText03,
- gTVCutiesText04,
- gTVCutiesText05,
- gTVCutiesText06,
- gTVCutiesText07,
- gTVCutiesText08,
- gTVCutiesText09,
- gTVCutiesText10,
- gTVCutiesText11,
- gTVCutiesText12,
- gTVCutiesText13,
- gTVCutiesText14,
- gTVCutiesText15
+ [SPOTCUTIES_STATE_INTRO] = TVSpotTheCuties_Text_Intro,
+ [SPOTCUTIES_STATE_RIBBONS_LOW] = TVSpotTheCuties_Text_RibbonsLow,
+ [SPOTCUTIES_STATE_RIBBONS_MID] = TVSpotTheCuties_Text_RibbonsMid,
+ [SPOTCUTIES_STATE_RIBBONS_HIGH] = TVSpotTheCuties_Text_RibbonsHigh,
+ [SPOTCUTIES_STATE_RIBBON_INTRO] = TVSpotTheCuties_Text_RibbonIntro,
+ [SPOTCUTIES_STATE_RIBBON_CHAMPION] = TVSpotTheCuties_Text_RibbonChampion,
+ [SPOTCUTIES_STATE_RIBBON_COOL] = TVSpotTheCuties_Text_RibbonCool,
+ [SPOTCUTIES_STATE_RIBBON_BEAUTY] = TVSpotTheCuties_Text_RibbonBeauty,
+ [SPOTCUTIES_STATE_RIBBON_CUTE] = TVSpotTheCuties_Text_RibbonCute,
+ [SPOTCUTIES_STATE_RIBBON_SMART] = TVSpotTheCuties_Text_RibbonSmart,
+ [SPOTCUTIES_STATE_RIBBON_TOUGH] = TVSpotTheCuties_Text_RibbonTough,
+ [SPOTCUTIES_STATE_RIBBON_WINNING] = TVSpotTheCuties_Text_RibbonWinning,
+ [SPOTCUTIES_STATE_RIBBON_VICTORY] = TVSpotTheCuties_Text_RibbonVictory,
+ [SPOTCUTIES_STATE_RIBBON_ARTIST] = TVSpotTheCuties_Text_RibbonArtist,
+ [SPOTCUTIES_STATE_RIBBON_EFFORT] = TVSpotTheCuties_Text_RibbonEffort,
+ [SPOTCUTIES_STATE_OUTRO] = TVSpotTheCuties_Text_Outro
};
static const u8 *const sTVPokemonNewsBattleFrontierTextGroup[] = {
@@ -2369,7 +2369,7 @@ void TryPutSpotTheCutiesOnAir(struct Pokemon *pokemon, u8 ribbonMonDataIdx)
GetMonData(pokemon, MON_DATA_NICKNAME, show->cuties.nickname);
StripExtCtrlCodes(show->cuties.nickname);
show->cuties.nRibbons = GetRibbonCount(pokemon);
- show->cuties.selectedRibbon = TV_MonDataIdxToRibbon(ribbonMonDataIdx);
+ show->cuties.selectedRibbon = MonDataIdxToRibbon(ribbonMonDataIdx);
tv_store_id_3x(show);
show->cuties.language = gGameLanguage;
if (show->cuties.language == LANGUAGE_JAPANESE || GetMonData(pokemon, MON_DATA_LANGUAGE) == LANGUAGE_JAPANESE)
@@ -2408,26 +2408,26 @@ u8 GetRibbonCount(struct Pokemon *pokemon)
return nRibbons;
}
-u8 TV_MonDataIdxToRibbon(u8 monDataIdx)
-{
- if (monDataIdx == MON_DATA_CHAMPION_RIBBON) return 0;
- if (monDataIdx == MON_DATA_COOL_RIBBON) return 1;
- if (monDataIdx == MON_DATA_BEAUTY_RIBBON) return 5;
- if (monDataIdx == MON_DATA_CUTE_RIBBON) return 9;
- if (monDataIdx == MON_DATA_SMART_RIBBON) return 13;
- if (monDataIdx == MON_DATA_TOUGH_RIBBON) return 17;
- if (monDataIdx == MON_DATA_WINNING_RIBBON) return 21;
- if (monDataIdx == MON_DATA_VICTORY_RIBBON) return 22;
- if (monDataIdx == MON_DATA_ARTIST_RIBBON) return 23;
- if (monDataIdx == MON_DATA_EFFORT_RIBBON) return 24;
- if (monDataIdx == MON_DATA_MARINE_RIBBON) return 25;
- if (monDataIdx == MON_DATA_LAND_RIBBON) return 26;
- if (monDataIdx == MON_DATA_SKY_RIBBON) return 27;
- if (monDataIdx == MON_DATA_COUNTRY_RIBBON) return 28;
- if (monDataIdx == MON_DATA_NATIONAL_RIBBON) return 29;
- if (monDataIdx == MON_DATA_EARTH_RIBBON) return 30;
- if (monDataIdx == MON_DATA_WORLD_RIBBON) return 31;
- return 0;
+static u8 MonDataIdxToRibbon(u8 monDataIdx)
+{
+ if (monDataIdx == MON_DATA_CHAMPION_RIBBON) return CHAMPION_RIBBON;
+ if (monDataIdx == MON_DATA_COOL_RIBBON) return COOL_RIBBON_NORMAL;
+ if (monDataIdx == MON_DATA_BEAUTY_RIBBON) return BEAUTY_RIBBON_NORMAL;
+ if (monDataIdx == MON_DATA_CUTE_RIBBON) return CUTE_RIBBON_NORMAL;
+ if (monDataIdx == MON_DATA_SMART_RIBBON) return SMART_RIBBON_NORMAL;
+ if (monDataIdx == MON_DATA_TOUGH_RIBBON) return TOUGH_RIBBON_NORMAL;
+ if (monDataIdx == MON_DATA_WINNING_RIBBON) return WINNING_RIBBON;
+ if (monDataIdx == MON_DATA_VICTORY_RIBBON) return VICTORY_RIBBON;
+ if (monDataIdx == MON_DATA_ARTIST_RIBBON) return ARTIST_RIBBON;
+ if (monDataIdx == MON_DATA_EFFORT_RIBBON) return EFFORT_RIBBON;
+ if (monDataIdx == MON_DATA_MARINE_RIBBON) return MARINE_RIBBON;
+ if (monDataIdx == MON_DATA_LAND_RIBBON) return LAND_RIBBON;
+ if (monDataIdx == MON_DATA_SKY_RIBBON) return SKY_RIBBON;
+ if (monDataIdx == MON_DATA_COUNTRY_RIBBON) return COUNTRY_RIBBON;
+ if (monDataIdx == MON_DATA_NATIONAL_RIBBON) return NATIONAL_RIBBON;
+ if (monDataIdx == MON_DATA_EARTH_RIBBON) return EARTH_RIBBON;
+ if (monDataIdx == MON_DATA_WORLD_RIBBON) return WORLD_RIBBON;
+ return CHAMPION_RIBBON;
}
void TrySetUpTrainerFanClubSpecial(void)
@@ -6603,98 +6603,100 @@ static void DoTVShowSpotTheCuties(void)
show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004];
gSpecialVar_Result = FALSE;
+
+ // For each state, in addition to the switch a message
+ // is printed from the table at the bottom
state = sTVShowState;
switch (state)
{
- case 0:
+ case SPOTCUTIES_STATE_INTRO:
TVShowConvertInternationalString(gStringVar1, show->cuties.playerName, show->cuties.language);
TVShowConvertInternationalString(gStringVar2, show->cuties.nickname, show->cuties.pokemonNameLanguage);
+
+ // Comments following the intro depend on how many ribbons the pokemon has
if (show->cuties.nRibbons < 10)
- {
- sTVShowState = 1;
- }
+ sTVShowState = SPOTCUTIES_STATE_RIBBONS_LOW;
else if (show->cuties.nRibbons < 20)
- {
- sTVShowState = 2;
- }
+ sTVShowState = SPOTCUTIES_STATE_RIBBONS_MID;
else
- {
- sTVShowState = 3;
- }
+ sTVShowState = SPOTCUTIES_STATE_RIBBONS_HIGH;
break;
- case 1:
- case 2:
- case 3:
+ case SPOTCUTIES_STATE_RIBBONS_LOW:
+ case SPOTCUTIES_STATE_RIBBONS_MID:
+ case SPOTCUTIES_STATE_RIBBONS_HIGH:
TVShowConvertInternationalString(gStringVar1, show->cuties.playerName, show->cuties.language);
TVShowConvertInternationalString(gStringVar2, show->cuties.nickname, show->cuties.pokemonNameLanguage);
TV_PrintIntToStringVar(2, show->cuties.nRibbons);
- sTVShowState = 4;
+ sTVShowState = SPOTCUTIES_STATE_RIBBON_INTRO;
break;
- case 4:
+ case SPOTCUTIES_STATE_RIBBON_INTRO:
TVShowConvertInternationalString(gStringVar2, show->cuties.nickname, show->cuties.pokemonNameLanguage);
switch (show->cuties.selectedRibbon)
{
- case 0:
- sTVShowState = 5;
- break;
- case 1:
- case 2:
- case 3:
- case 4:
- sTVShowState = 6;
- break;
- case 5:
- case 6:
- case 7:
- case 8:
- sTVShowState = 7;
- break;
- case 9:
- case 10:
- case 11:
- case 12:
- sTVShowState = 8;
- break;
- case 13:
- case 14:
- case 15:
- case 16:
- sTVShowState = 9;
- break;
- case 17:
- case 18:
- case 19:
- case 20:
- sTVShowState = 10;
- break;
- case 21:
- sTVShowState = 11;
- break;
- case 22:
- sTVShowState = 12;
- break;
- case 23:
- sTVShowState = 13;
- break;
- case 24:
- sTVShowState = 14;
- break;
- }
- break;
- case 5:
- case 6:
- case 7:
- case 8:
- case 9:
- case 10:
- case 11:
- case 12:
- case 13:
- case 14:
+ case CHAMPION_RIBBON:
+ sTVShowState = SPOTCUTIES_STATE_RIBBON_CHAMPION;
+ break;
+ case COOL_RIBBON_NORMAL:
+ case COOL_RIBBON_SUPER:
+ case COOL_RIBBON_HYPER:
+ case COOL_RIBBON_MASTER:
+ sTVShowState = SPOTCUTIES_STATE_RIBBON_COOL;
+ break;
+ case BEAUTY_RIBBON_NORMAL:
+ case BEAUTY_RIBBON_SUPER:
+ case BEAUTY_RIBBON_HYPER:
+ case BEAUTY_RIBBON_MASTER:
+ sTVShowState = SPOTCUTIES_STATE_RIBBON_BEAUTY;
+ break;
+ case CUTE_RIBBON_NORMAL:
+ case CUTE_RIBBON_SUPER:
+ case CUTE_RIBBON_HYPER:
+ case CUTE_RIBBON_MASTER:
+ sTVShowState = SPOTCUTIES_STATE_RIBBON_CUTE;
+ break;
+ case SMART_RIBBON_NORMAL:
+ case SMART_RIBBON_SUPER:
+ case SMART_RIBBON_HYPER:
+ case SMART_RIBBON_MASTER:
+ sTVShowState = SPOTCUTIES_STATE_RIBBON_SMART;
+ break;
+ case TOUGH_RIBBON_NORMAL:
+ case TOUGH_RIBBON_SUPER:
+ case TOUGH_RIBBON_HYPER:
+ case TOUGH_RIBBON_MASTER:
+ sTVShowState = SPOTCUTIES_STATE_RIBBON_TOUGH;
+ break;
+ case WINNING_RIBBON:
+ sTVShowState = SPOTCUTIES_STATE_RIBBON_WINNING;
+ break;
+ case VICTORY_RIBBON:
+ sTVShowState = SPOTCUTIES_STATE_RIBBON_VICTORY;
+ break;
+ case ARTIST_RIBBON:
+ sTVShowState = SPOTCUTIES_STATE_RIBBON_ARTIST;
+ break;
+ case EFFORT_RIBBON:
+ sTVShowState = SPOTCUTIES_STATE_RIBBON_EFFORT;
+ break;
+ // No comment is made for any of the gift ribbons.
+ // If the show is created for a gift ribbon
+ // then this state will repeat indefinitely
+ }
+ break;
+ case SPOTCUTIES_STATE_RIBBON_CHAMPION:
+ case SPOTCUTIES_STATE_RIBBON_COOL:
+ case SPOTCUTIES_STATE_RIBBON_BEAUTY:
+ case SPOTCUTIES_STATE_RIBBON_CUTE:
+ case SPOTCUTIES_STATE_RIBBON_SMART:
+ case SPOTCUTIES_STATE_RIBBON_TOUGH:
+ case SPOTCUTIES_STATE_RIBBON_WINNING:
+ case SPOTCUTIES_STATE_RIBBON_VICTORY:
+ case SPOTCUTIES_STATE_RIBBON_ARTIST:
+ case SPOTCUTIES_STATE_RIBBON_EFFORT:
TVShowConvertInternationalString(gStringVar2, show->cuties.nickname, show->cuties.pokemonNameLanguage);
- sTVShowState = 15;
+ sTVShowState = SPOTCUTIES_STATE_OUTRO;
break;
- case 15:
+ case SPOTCUTIES_STATE_OUTRO:
TVShowDone();
}
ShowFieldMessage(sTVCutiesTextGroup[state]);