From 926488b69aa94e543cbc10bf304d1925d2d9463a Mon Sep 17 00:00:00 2001 From: GriffinR Date: Sun, 1 Feb 2026 13:36:33 -0500 Subject: [PATCH] Document gym leader match call texts --- data/text/match_call.inc | 64 ++++++++++---------- include/strings.h | 64 ++++++++++---------- src/pokenav_match_call_data.c | 107 +++++++++++++++++++--------------- 3 files changed, 125 insertions(+), 110 deletions(-) diff --git a/data/text/match_call.inc b/data/text/match_call.inc index 63aac8aa88..161269d000 100644 --- a/data/text/match_call.inc +++ b/data/text/match_call.inc @@ -2038,7 +2038,7 @@ MatchCall_Text_Mom3:: .string "Wear those RUNNING SHOES until\n" .string "they fall apart, honey!$" -MatchCall_Text_Roxanne1:: +MatchCall_Text_Roxanne_Preparing:: .string "ROXANNE: Oh, hello, {PLAYER}!\p" .string "I've been hard at work retraining\n" .string "since we met.\p" @@ -2047,7 +2047,7 @@ MatchCall_Text_Roxanne1:: .string "But when I do, please visit my GYM\n" .string "for a rematch!$" -MatchCall_Text_Roxanne2:: +MatchCall_Text_Roxanne_PreparingPostGame:: .string "ROXANNE: Is this {PLAYER}?\n" .string "Congratulations!\l" .string "I've been hearing about you!\p" @@ -2056,18 +2056,18 @@ MatchCall_Text_Roxanne2:: .string "But when I do, please visit my GYM\n" .string "for a rematch!$" -MatchCall_Text_Roxanne3:: +MatchCall_Text_Roxanne_RematchReady:: .string "ROXANNE: {PLAYER}!\n" .string "My GYM is ready!\p" .string "Please visit RUSTBORO whenever\n" .string "you can!$" -MatchCall_Text_Roxanne4:: +MatchCall_Text_Roxanne_PostRematch:: .string "ROXANNE: At the RUSTBORO GYM,\n" .string "the fact that we battled, {PLAYER},\l" .string "is a matter of pride.$" -MatchCall_Text_Brawly1:: +MatchCall_Text_Brawly_Preparing:: .string "BRAWLY: Hey, there, {PLAYER}{KUN}!\p" .string "I learned a lot from the battle we\n" .string "had together.\p" @@ -2078,7 +2078,7 @@ MatchCall_Text_Brawly1:: .string "But if I can reopen the GYM,\n" .string "I want you to challenge us again.$" -MatchCall_Text_Brawly2:: +MatchCall_Text_Brawly_PreparingPostGame:: .string "BRAWLY: Hey, {PLAYER}{KUN}!\n" .string "Congratulations!\p" .string "Word about your exploits arrived\n" @@ -2090,17 +2090,17 @@ MatchCall_Text_Brawly2:: .string "But if I can reopen the GYM,\n" .string "I want you to challenge us again.$" -MatchCall_Text_Brawly3:: +MatchCall_Text_Brawly_RematchReady:: .string "BRAWLY: Hey, {PLAYER}{KUN}!\n" .string "My GYM's ready for action!\p" .string "Come back to DEWFORD anytime\n" .string "for another challenge!$" -MatchCall_Text_Brawly4:: +MatchCall_Text_Brawly_PostRematch:: .string "BRAWLY: {PLAYER}{KUN}, I don't think\n" .string "I'll ever get bored of battling you!$" -MatchCall_Text_Wattson1:: +MatchCall_Text_Wattson_Preparing:: .string "WATTSON: Oh, it's you!\p" .string "After you left, I've been redoing\n" .string "my training from scratch.\p" @@ -2109,7 +2109,7 @@ MatchCall_Text_Wattson1:: .string "You'll have to wait till then!\n" .string "Wahahahaha!$" -MatchCall_Text_Wattson2:: +MatchCall_Text_Wattson_PreparingPostGame:: .string "WATTSON: Wahahahaha!\p" .string "You've really done it, haven't you?\n" .string "I've been getting word about you!\p" @@ -2120,18 +2120,18 @@ MatchCall_Text_Wattson2:: .string "You'll have to wait till then!\n" .string "Wahahahaha!$" -MatchCall_Text_Wattson3:: +MatchCall_Text_Wattson_RematchReady:: .string "WATTSON: Oh, it's you!\n" .string "My GYM's ready!\p" .string "Visit MAUVILLE anytime!\n" .string "Wahahahaha!$" -MatchCall_Text_Wattson4:: +MatchCall_Text_Wattson_PostRematch:: .string "WATTSON: Wahahaha!\p" .string "A battle with you is always charged\n" .string "with shocking power!$" -MatchCall_Text_Flannery1:: +MatchCall_Text_Flannery_Preparing:: .string "FLANNERY: {PLAYER}…\p" .string "When we battled, I learned exactly\n" .string "how immature I was.\p" @@ -2141,7 +2141,7 @@ MatchCall_Text_Flannery1:: .string "When the time comes, {PLAYER},\n" .string "please challenge us again.$" -MatchCall_Text_Flannery2:: +MatchCall_Text_Flannery_PreparingPostGame:: .string "FLANNERY: Hello, {PLAYER}?\n" .string "Congratulations!\p" .string "Word of your success has reached\n" @@ -2152,44 +2152,44 @@ MatchCall_Text_Flannery2:: .string "appear beside my name in the\l" .string "MATCH CALL list.$" -MatchCall_Text_Flannery3:: +MatchCall_Text_Flannery_RematchReady:: .string "FLANNERY: Oh, {PLAYER}?\n" .string "Our GYM's ready!\p" .string "Come to LAVARIDGE for a soak\n" .string "in the hot spring and a challenge!$" -MatchCall_Text_Flannery4:: +MatchCall_Text_Flannery_PostRematch:: .string "FLANNERY: {PLAYER}…\n" .string "I'm positive that you keep getting\l" .string "better at training every time.$" -MatchCall_Text_Winona1:: +MatchCall_Text_Winona_Preparing:: .string "WINONA: Hello, {PLAYER}!\p" .string "Thanks to our battle, I've come\n" .string "to understand my weak points!\p" .string "When I reopen the GYM, I won't go\n" .string "down in defeat again!$" -MatchCall_Text_Winona2:: +MatchCall_Text_Winona_PreparingPostGame:: .string "WINONA: You've done it, {PLAYER}!\p" .string "News about the new CHAMPION\n" .string "has reached us in FORTREE!\p" .string "But… The next time we battle,\n" .string "it's not going to end the same way.$" -MatchCall_Text_Winona3:: +MatchCall_Text_Winona_RematchReady:: .string "WINONA: Is this {PLAYER}?\n" .string "Our GYM is back in operation!\p" .string "We're waiting for you in FORTREE!$" -MatchCall_Text_Winona4:: +MatchCall_Text_Winona_PostRematch:: .string "WINONA: {PLAYER}…\n" .string "Though I have lost, my wings will\l" .string "never break.\p" .string "Yes, in exactly the same way that\n" .string "you never lost sight of your dream.$" -MatchCall_Text_TateLiza1:: +MatchCall_Text_TateLiza_Preparing:: .string "TATE: Oh! You're…\n" .string "LIZA: {PLAYER}!\p" .string "TATE: We're in training again…\n" @@ -2199,7 +2199,7 @@ MatchCall_Text_TateLiza1:: .string "TATE: A mark'll appear by our name…\n" .string "LIZA: On the MATCH CALL list.$" -MatchCall_Text_TateLiza2:: +MatchCall_Text_TateLiza_PreparingPostGame:: .string "TATE: {PLAYER}, congratulations!\n" .string "LIZA: {PLAYER}, congratulations!\p" .string "TATE: The two of us are…\n" @@ -2209,7 +2209,7 @@ MatchCall_Text_TateLiza2:: .string "TATE: A mark'll appear by our name…\n" .string "LIZA: On the MATCH CALL list.$" -MatchCall_Text_TateLiza3:: +MatchCall_Text_TateLiza_RematchReady:: .string "TATE: {PLAYER}!\n" .string "LIZA: {PLAYER}!\p" .string "TATE: Our GYM is ready!\n" @@ -2217,13 +2217,13 @@ MatchCall_Text_TateLiza3:: .string "TATE: Please come visit…\n" .string "LIZA: MOSSDEEP anytime!$" -MatchCall_Text_TateLiza4:: +MatchCall_Text_TateLiza_PostRematch:: .string "TATE: {PLAYER}, the battle we had…\n" .string "LIZA: Is an invaluable experience.\p" .string "TATE: It would be nice if…\n" .string "LIZA: We could all battle again!$" -MatchCall_Text_Juan1:: +MatchCall_Text_Juan_Preparing:: .string "JUAN: Hmm…\n" .string "{PLAYER}{KUN}… Was it?\p" .string "Our battle together--it brought\n" @@ -2232,7 +2232,7 @@ MatchCall_Text_Juan1:: .string "Perhaps you are a genius who may\n" .string "yet surpass WALLACE!$" -MatchCall_Text_Juan2:: +MatchCall_Text_Juan_PreparingPostGame:: .string "JUAN: Fufu… {PLAYER}{KUN}…\n" .string "You've finally achieved your goal.\p" .string "My eye for appraising talent wasn't\n" @@ -2241,14 +2241,14 @@ MatchCall_Text_Juan2:: .string "you, for you have scaled the peak\l" .string "of power and prestige.$" -MatchCall_Text_Juan3:: +MatchCall_Text_Juan_RematchReady:: .string "JUAN: Hoho… {PLAYER}{KUN}…\p" .string "Our SOOTOPOLIS GYM has finally\n" .string "reopened.\p" .string "If you wish to see me, you are\n" .string "welcome to visit anytime.$" -MatchCall_Text_Juan4:: +MatchCall_Text_Juan_PostRematch:: .string "JUAN: {PLAYER}{KUN}…\p" .string "Like the finest music, the battles\n" .string "we wage together strike chords\l" @@ -2748,20 +2748,20 @@ MatchCall_Text_Norman5:: .string "But with a name like that, it may\n" .string "be somehow linked to a volcano!$" -MatchCall_Text_Norman6:: +MatchCall_Text_Norman_Preparing:: .string "DAD: Hiyah! Haah! Dwah!\p" .string "…Oh? {PLAYER}!\p" .string "You caught me right in the middle\n" .string "of a POKéMON training session!$" -MatchCall_Text_Norman7:: +MatchCall_Text_Norman_PreparingPostGame:: .string "DAD: {PLAYER}!\p" .string "Who would've thought you'd become\n" .string "the POKéMON LEAGUE CHAMPION…\p" .string "Okay!\n" .string "I won't be left behind!$" -MatchCall_Text_Norman8:: +MatchCall_Text_Norman_RematchReady:: .string "DAD: Hm? {PLAYER}?\n" .string "What good timing!\p" .string "This time, I'm going to challenge\n" @@ -2769,7 +2769,7 @@ MatchCall_Text_Norman8:: .string "I'm waiting in the PETALBURG GYM.\n" .string "Accept my challenge anytime!$" -MatchCall_Text_Norman9:: +MatchCall_Text_Norman_PostRematch:: .string "DAD: …You amaze me, {PLAYER}.\n" .string "How much higher will you soar?$" diff --git a/include/strings.h b/include/strings.h index 3215f70c88..f17d0d3d77 100644 --- a/include/strings.h +++ b/include/strings.h @@ -2385,10 +2385,10 @@ extern const u8 MatchCall_Text_Norman2[]; extern const u8 MatchCall_Text_Norman3[]; extern const u8 MatchCall_Text_Norman4[]; extern const u8 MatchCall_Text_Norman5[]; -extern const u8 MatchCall_Text_Norman6[]; -extern const u8 MatchCall_Text_Norman7[]; -extern const u8 MatchCall_Text_Norman8[]; -extern const u8 MatchCall_Text_Norman9[]; +extern const u8 MatchCall_Text_Norman_Preparing[]; +extern const u8 MatchCall_Text_Norman_PreparingPostGame[]; +extern const u8 MatchCall_Text_Norman_RematchReady[]; +extern const u8 MatchCall_Text_Norman_PostRematch[]; extern const u8 MatchCall_Text_Mom1[]; extern const u8 MatchCall_Text_Mom2[]; extern const u8 MatchCall_Text_Mom3[]; @@ -2443,34 +2443,34 @@ extern const u8 MatchCall_Text_Scott4[]; extern const u8 MatchCall_Text_Scott5[]; extern const u8 MatchCall_Text_Scott6[]; extern const u8 MatchCall_Text_Scott7[]; -extern const u8 MatchCall_Text_Roxanne1[]; -extern const u8 MatchCall_Text_Roxanne2[]; -extern const u8 MatchCall_Text_Roxanne3[]; -extern const u8 MatchCall_Text_Roxanne4[]; -extern const u8 MatchCall_Text_Brawly1[]; -extern const u8 MatchCall_Text_Brawly2[]; -extern const u8 MatchCall_Text_Brawly3[]; -extern const u8 MatchCall_Text_Brawly4[]; -extern const u8 MatchCall_Text_Wattson1[]; -extern const u8 MatchCall_Text_Wattson2[]; -extern const u8 MatchCall_Text_Wattson3[]; -extern const u8 MatchCall_Text_Wattson4[]; -extern const u8 MatchCall_Text_Flannery1[]; -extern const u8 MatchCall_Text_Flannery2[]; -extern const u8 MatchCall_Text_Flannery3[]; -extern const u8 MatchCall_Text_Flannery4[]; -extern const u8 MatchCall_Text_Winona1[]; -extern const u8 MatchCall_Text_Winona2[]; -extern const u8 MatchCall_Text_Winona3[]; -extern const u8 MatchCall_Text_Winona4[]; -extern const u8 MatchCall_Text_TateLiza1[]; -extern const u8 MatchCall_Text_TateLiza2[]; -extern const u8 MatchCall_Text_TateLiza3[]; -extern const u8 MatchCall_Text_TateLiza4[]; -extern const u8 MatchCall_Text_Juan1[]; -extern const u8 MatchCall_Text_Juan2[]; -extern const u8 MatchCall_Text_Juan3[]; -extern const u8 MatchCall_Text_Juan4[]; +extern const u8 MatchCall_Text_Roxanne_Preparing[]; +extern const u8 MatchCall_Text_Roxanne_PreparingPostGame[]; +extern const u8 MatchCall_Text_Roxanne_RematchReady[]; +extern const u8 MatchCall_Text_Roxanne_PostRematch[]; +extern const u8 MatchCall_Text_Brawly_Preparing[]; +extern const u8 MatchCall_Text_Brawly_PreparingPostGame[]; +extern const u8 MatchCall_Text_Brawly_RematchReady[]; +extern const u8 MatchCall_Text_Brawly_PostRematch[]; +extern const u8 MatchCall_Text_Wattson_Preparing[]; +extern const u8 MatchCall_Text_Wattson_PreparingPostGame[]; +extern const u8 MatchCall_Text_Wattson_RematchReady[]; +extern const u8 MatchCall_Text_Wattson_PostRematch[]; +extern const u8 MatchCall_Text_Flannery_Preparing[]; +extern const u8 MatchCall_Text_Flannery_PreparingPostGame[]; +extern const u8 MatchCall_Text_Flannery_RematchReady[]; +extern const u8 MatchCall_Text_Flannery_PostRematch[]; +extern const u8 MatchCall_Text_Winona_Preparing[]; +extern const u8 MatchCall_Text_Winona_PreparingPostGame[]; +extern const u8 MatchCall_Text_Winona_RematchReady[]; +extern const u8 MatchCall_Text_Winona_PostRematch[]; +extern const u8 MatchCall_Text_TateLiza_Preparing[]; +extern const u8 MatchCall_Text_TateLiza_PreparingPostGame[]; +extern const u8 MatchCall_Text_TateLiza_RematchReady[]; +extern const u8 MatchCall_Text_TateLiza_PostRematch[]; +extern const u8 MatchCall_Text_Juan_Preparing[]; +extern const u8 MatchCall_Text_Juan_PreparingPostGame[]; +extern const u8 MatchCall_Text_Juan_RematchReady[]; +extern const u8 MatchCall_Text_Juan_PostRematch[]; extern const u8 MatchCall_Text_Sidney[]; extern const u8 MatchCall_Text_Phoebe[]; extern const u8 MatchCall_Text_Glacia[]; diff --git a/src/pokenav_match_call_data.c b/src/pokenav_match_call_data.c index 708da31b56..e14c7532ed 100644 --- a/src/pokenav_match_call_data.c +++ b/src/pokenav_match_call_data.c @@ -157,6 +157,19 @@ static void MatchCall_BufferCallMessageText(const match_call_text_data_t *, u8 * static void MatchCall_BufferCallMessageTextByRematchTeam(const match_call_text_data_t *, u16, u8 *); static void MatchCall_GetNameAndDescByRematchIdx(u32, const u8 **, const u8 **); +// Special flag ID that indicates the start of a section of match calls +// related to a gym leader's rematch. It's expected that there will be +// exactly 3 calls after the call associated with this flag, with text +// that follows this format: +// - Call 1: A basic 'preparing for a rematch' call. +// Remains active until the player beats the game (FLAG_SYS_GAME_CLEAR). +// - Call 2: Congratulating the player on their success, still preparing. +// Remains active until the gym leader is ready for a rematch. +// - Call 3: Requesting the rematch. Active whenever the gym leader is ready. +// - Call 4: Expressing their admiration of the player. Active after defeating +// them in a rematch and if they're not ready yet for another battle. +#define REMATCH_CALL_START 0xFFFE + #define ALWAYS_AVAILABLE 0xFFFF #define NO_FLAG_TO_SET 0xFFFF #define MATCH_CALL_TEXT_END {NULL, ALWAYS_AVAILABLE, NO_FLAG_TO_SET} @@ -189,15 +202,15 @@ static const struct MatchCallStructNPC sMrStoneMatchCallHeader = }; static const match_call_text_data_t sNormanTextScripts[] = { - { MatchCall_Text_Norman1, FLAG_ENABLE_NORMAN_MATCH_CALL, NO_FLAG_TO_SET }, - { MatchCall_Text_Norman2, FLAG_DEFEATED_DEWFORD_GYM, NO_FLAG_TO_SET }, - { MatchCall_Text_Norman3, FLAG_DEFEATED_LAVARIDGE_GYM, NO_FLAG_TO_SET }, - { MatchCall_Text_Norman4, FLAG_DEFEATED_PETALBURG_GYM, NO_FLAG_TO_SET }, - { MatchCall_Text_Norman5, FLAG_RECEIVED_RED_OR_BLUE_ORB, NO_FLAG_TO_SET }, - { MatchCall_Text_Norman6, 0xFFFE, NO_FLAG_TO_SET }, - { MatchCall_Text_Norman7, FLAG_SYS_GAME_CLEAR, NO_FLAG_TO_SET }, - { MatchCall_Text_Norman8, FLAG_SYS_GAME_CLEAR, NO_FLAG_TO_SET }, - { MatchCall_Text_Norman9, FLAG_SYS_GAME_CLEAR, NO_FLAG_TO_SET }, + { MatchCall_Text_Norman1, FLAG_ENABLE_NORMAN_MATCH_CALL, NO_FLAG_TO_SET }, + { MatchCall_Text_Norman2, FLAG_DEFEATED_DEWFORD_GYM, NO_FLAG_TO_SET }, + { MatchCall_Text_Norman3, FLAG_DEFEATED_LAVARIDGE_GYM, NO_FLAG_TO_SET }, + { MatchCall_Text_Norman4, FLAG_DEFEATED_PETALBURG_GYM, NO_FLAG_TO_SET }, + { MatchCall_Text_Norman5, FLAG_RECEIVED_RED_OR_BLUE_ORB, NO_FLAG_TO_SET }, + { MatchCall_Text_Norman_Preparing, REMATCH_CALL_START, NO_FLAG_TO_SET }, + { MatchCall_Text_Norman_PreparingPostGame, FLAG_SYS_GAME_CLEAR, NO_FLAG_TO_SET }, + { MatchCall_Text_Norman_RematchReady, FLAG_SYS_GAME_CLEAR, NO_FLAG_TO_SET }, + { MatchCall_Text_Norman_PostRematch, FLAG_SYS_GAME_CLEAR, NO_FLAG_TO_SET }, MATCH_CALL_TEXT_END }; @@ -369,10 +382,10 @@ static const struct MatchCallStructNPC sScottMatchCallHeader = }; static const match_call_text_data_t sRoxanneTextScripts[] = { - { MatchCall_Text_Roxanne1, 0xFFFE, NO_FLAG_TO_SET }, - { MatchCall_Text_Roxanne2, ALWAYS_AVAILABLE, NO_FLAG_TO_SET }, - { MatchCall_Text_Roxanne3, ALWAYS_AVAILABLE, NO_FLAG_TO_SET }, - { MatchCall_Text_Roxanne4, FLAG_SYS_GAME_CLEAR, NO_FLAG_TO_SET }, + { MatchCall_Text_Roxanne_Preparing, REMATCH_CALL_START, NO_FLAG_TO_SET }, + { MatchCall_Text_Roxanne_PreparingPostGame, ALWAYS_AVAILABLE, NO_FLAG_TO_SET }, + { MatchCall_Text_Roxanne_RematchReady, ALWAYS_AVAILABLE, NO_FLAG_TO_SET }, + { MatchCall_Text_Roxanne_PostRematch, FLAG_SYS_GAME_CLEAR, NO_FLAG_TO_SET }, MATCH_CALL_TEXT_END }; @@ -388,10 +401,10 @@ static const struct MatchCallStructTrainer sRoxanneMatchCallHeader = }; static const match_call_text_data_t sBrawlyTextScripts[] = { - { MatchCall_Text_Brawly1, 0xFFFE, NO_FLAG_TO_SET }, - { MatchCall_Text_Brawly2, ALWAYS_AVAILABLE, NO_FLAG_TO_SET }, - { MatchCall_Text_Brawly3, ALWAYS_AVAILABLE, NO_FLAG_TO_SET }, - { MatchCall_Text_Brawly4, FLAG_SYS_GAME_CLEAR, NO_FLAG_TO_SET }, + { MatchCall_Text_Brawly_Preparing, REMATCH_CALL_START, NO_FLAG_TO_SET }, + { MatchCall_Text_Brawly_PreparingPostGame, ALWAYS_AVAILABLE, NO_FLAG_TO_SET }, + { MatchCall_Text_Brawly_RematchReady, ALWAYS_AVAILABLE, NO_FLAG_TO_SET }, + { MatchCall_Text_Brawly_PostRematch, FLAG_SYS_GAME_CLEAR, NO_FLAG_TO_SET }, MATCH_CALL_TEXT_END }; @@ -407,10 +420,10 @@ static const struct MatchCallStructTrainer sBrawlyMatchCallHeader = }; static const match_call_text_data_t sWattsonTextScripts[] = { - { MatchCall_Text_Wattson1, 0xFFFE, NO_FLAG_TO_SET }, - { MatchCall_Text_Wattson2, ALWAYS_AVAILABLE, NO_FLAG_TO_SET }, - { MatchCall_Text_Wattson3, ALWAYS_AVAILABLE, NO_FLAG_TO_SET }, - { MatchCall_Text_Wattson4, FLAG_SYS_GAME_CLEAR, NO_FLAG_TO_SET }, + { MatchCall_Text_Wattson_Preparing, REMATCH_CALL_START, NO_FLAG_TO_SET }, + { MatchCall_Text_Wattson_PreparingPostGame, ALWAYS_AVAILABLE, NO_FLAG_TO_SET }, + { MatchCall_Text_Wattson_RematchReady, ALWAYS_AVAILABLE, NO_FLAG_TO_SET }, + { MatchCall_Text_Wattson_PostRematch, FLAG_SYS_GAME_CLEAR, NO_FLAG_TO_SET }, MATCH_CALL_TEXT_END }; @@ -426,10 +439,10 @@ static const struct MatchCallStructTrainer sWattsonMatchCallHeader = }; static const match_call_text_data_t sFlanneryTextScripts[] = { - { MatchCall_Text_Flannery1, 0xFFFE, NO_FLAG_TO_SET }, - { MatchCall_Text_Flannery2, ALWAYS_AVAILABLE, NO_FLAG_TO_SET }, - { MatchCall_Text_Flannery3, ALWAYS_AVAILABLE, NO_FLAG_TO_SET }, - { MatchCall_Text_Flannery4, FLAG_SYS_GAME_CLEAR, NO_FLAG_TO_SET }, + { MatchCall_Text_Flannery_Preparing, REMATCH_CALL_START, NO_FLAG_TO_SET }, + { MatchCall_Text_Flannery_PreparingPostGame, ALWAYS_AVAILABLE, NO_FLAG_TO_SET }, + { MatchCall_Text_Flannery_RematchReady, ALWAYS_AVAILABLE, NO_FLAG_TO_SET }, + { MatchCall_Text_Flannery_PostRematch, FLAG_SYS_GAME_CLEAR, NO_FLAG_TO_SET }, MATCH_CALL_TEXT_END }; @@ -445,10 +458,10 @@ static const struct MatchCallStructTrainer sFlanneryMatchCallHeader = }; static const match_call_text_data_t sWinonaTextScripts[] = { - { MatchCall_Text_Winona1, 0xFFFE, NO_FLAG_TO_SET }, - { MatchCall_Text_Winona2, ALWAYS_AVAILABLE, NO_FLAG_TO_SET }, - { MatchCall_Text_Winona3, ALWAYS_AVAILABLE, NO_FLAG_TO_SET }, - { MatchCall_Text_Winona4, FLAG_SYS_GAME_CLEAR, NO_FLAG_TO_SET }, + { MatchCall_Text_Winona_Preparing, REMATCH_CALL_START, NO_FLAG_TO_SET }, + { MatchCall_Text_Winona_PreparingPostGame, ALWAYS_AVAILABLE, NO_FLAG_TO_SET }, + { MatchCall_Text_Winona_RematchReady, ALWAYS_AVAILABLE, NO_FLAG_TO_SET }, + { MatchCall_Text_Winona_PostRematch, FLAG_SYS_GAME_CLEAR, NO_FLAG_TO_SET }, MATCH_CALL_TEXT_END }; @@ -464,10 +477,10 @@ static const struct MatchCallStructTrainer sWinonaMatchCallHeader = }; static const match_call_text_data_t sTateLizaTextScripts[] = { - { MatchCall_Text_TateLiza1, 0xFFFE, NO_FLAG_TO_SET }, - { MatchCall_Text_TateLiza2, ALWAYS_AVAILABLE, NO_FLAG_TO_SET }, - { MatchCall_Text_TateLiza3, ALWAYS_AVAILABLE, NO_FLAG_TO_SET }, - { MatchCall_Text_TateLiza4, FLAG_SYS_GAME_CLEAR, NO_FLAG_TO_SET }, + { MatchCall_Text_TateLiza_Preparing, REMATCH_CALL_START, NO_FLAG_TO_SET }, + { MatchCall_Text_TateLiza_PreparingPostGame, ALWAYS_AVAILABLE, NO_FLAG_TO_SET }, + { MatchCall_Text_TateLiza_RematchReady, ALWAYS_AVAILABLE, NO_FLAG_TO_SET }, + { MatchCall_Text_TateLiza_PostRematch, FLAG_SYS_GAME_CLEAR, NO_FLAG_TO_SET }, MATCH_CALL_TEXT_END }; @@ -483,10 +496,10 @@ static const struct MatchCallStructTrainer sTateLizaMatchCallHeader = }; static const match_call_text_data_t sJuanTextScripts[] = { - { MatchCall_Text_Juan1, 0xFFFE, NO_FLAG_TO_SET }, - { MatchCall_Text_Juan2, ALWAYS_AVAILABLE, NO_FLAG_TO_SET }, - { MatchCall_Text_Juan3, ALWAYS_AVAILABLE, NO_FLAG_TO_SET }, - { MatchCall_Text_Juan4, FLAG_SYS_GAME_CLEAR, NO_FLAG_TO_SET }, + { MatchCall_Text_Juan_Preparing, REMATCH_CALL_START, NO_FLAG_TO_SET }, + { MatchCall_Text_Juan_PreparingPostGame, ALWAYS_AVAILABLE, NO_FLAG_TO_SET }, + { MatchCall_Text_Juan_RematchReady, ALWAYS_AVAILABLE, NO_FLAG_TO_SET }, + { MatchCall_Text_Juan_PostRematch, FLAG_SYS_GAME_CLEAR, NO_FLAG_TO_SET }, MATCH_CALL_TEXT_END }; @@ -1011,12 +1024,12 @@ static void MatchCall_BufferCallMessageTextByRematchTeam(const match_call_text_d u32 i; for (i = 0; textData[i].text != NULL; i++) { - if (textData[i].availabilityFlag == 0xFFFE) + if (textData[i].availabilityFlag == REMATCH_CALL_START) break; if (textData[i].availabilityFlag != ALWAYS_AVAILABLE && !FlagGet(textData[i].availabilityFlag)) break; } - if (textData[i].availabilityFlag != 0xFFFE) + if (textData[i].availabilityFlag != REMATCH_CALL_START) { if (i) i--; @@ -1030,15 +1043,17 @@ static void MatchCall_BufferCallMessageTextByRematchTeam(const match_call_text_d { do { - if (gSaveBlock1Ptr->trainerRematches[idx]) - i += 2; - else if (CountBattledRematchTeams(idx) >= 2) - i += 3; - else - i++; + // If the rematch is ready, advance to the rematch call. + if (gSaveBlock1Ptr->trainerRematches[idx]) i += 2; + // No rematch ready, but if the player has defeated them in + // a rematch before, advance to the final call. + // Note: The 2 "rematch" teams battled includes the first non-rematch battle. + else if (CountBattledRematchTeams(idx) >= 2) i += 3; + // No rematch ready and never defeated in a rematch, advance to congratulations call. + else i++; } while (0); } - + // If the game hasn't been cleared yet, the index remains on the basic "preparing for rematch" call. StringExpandPlaceholders(dest, textData[i].text); } }