2019-01-03 02:07:47 +01:00
# include "global.h"
# include "battle_setup.h"
2019-04-04 23:53:06 +02:00
# include "data.h"
2019-01-03 02:07:47 +01:00
# include "event_data.h"
# include "string_util.h"
# include "battle.h"
# include "gym_leader_rematch.h"
2019-03-02 09:18:08 +01:00
# include "match_call.h"
2019-08-09 22:28:22 +02:00
# include "pokenav.h"
2019-08-02 05:01:53 +02:00
# include "constants/region_map_sections.h"
2019-08-09 22:28:22 +02:00
# include "constants/trainers.h"
2019-01-03 02:07:47 +01:00
// Static type declarations
typedef struct MatchCallTextDataStruct {
const u8 * text ;
u16 flag ;
u16 flag2 ;
} match_call_text_data_t ;
struct MatchCallStructCommon {
u8 type ;
2019-08-02 16:52:40 +02:00
u8 mapSec ;
2019-01-03 02:07:47 +01:00
u16 flag ;
} ;
struct MatchCallStruct0 {
u8 type ;
2019-08-02 16:52:40 +02:00
u8 mapSec ;
2019-01-03 02:07:47 +01:00
u16 flag ;
const u8 * desc ;
const u8 * name ;
const match_call_text_data_t * textData ;
} ;
struct MatchCallStruct1 {
u8 type ;
2019-08-02 16:52:40 +02:00
u8 mapSec ;
2019-01-03 02:07:47 +01:00
u16 flag ;
u16 rematchTableIdx ;
const u8 * desc ;
const u8 * name ;
const match_call_text_data_t * textData ;
} ;
struct MatchCallSubstruct2 {
u16 flag ;
2019-08-02 18:30:00 +02:00
u8 mapSec ;
2019-01-03 02:07:47 +01:00
} ;
struct MatchCallStruct2 {
u8 type ;
2019-08-02 16:52:40 +02:00
u8 mapSec ;
2019-01-03 02:07:47 +01:00
u16 flag ;
u16 rematchTableIdx ;
const u8 * desc ;
const match_call_text_data_t * textData ;
const struct MatchCallSubstruct2 * v10 ;
} ;
struct MatchCallStruct3 {
u8 type ;
2019-08-02 16:52:40 +02:00
u8 mapSec ;
2019-01-03 02:07:47 +01:00
u16 flag ;
const u8 * desc ;
const u8 * name ;
} ;
struct MatchCallStruct4 {
u8 type ;
u8 gender ;
u16 flag ;
const u8 * desc ;
const u8 * name ;
const match_call_text_data_t * textData ;
} ;
2019-04-02 09:22:07 +02:00
// Note: Type1 and Type5 have identical struct layouts.
2019-01-03 02:07:47 +01:00
struct MatchCallStruct5 {
u8 type ;
2019-08-02 16:52:40 +02:00
u8 mapSec ;
2019-01-03 02:07:47 +01:00
u16 flag ;
2019-04-02 09:22:07 +02:00
u16 rematchTableIdx ;
2019-01-03 02:07:47 +01:00
const u8 * desc ;
const u8 * name ;
const match_call_text_data_t * textData ;
} ;
typedef union {
const struct MatchCallStructCommon * common ;
const struct MatchCallStruct0 * type0 ;
const struct MatchCallStruct1 * type1 ;
const struct MatchCallStruct2 * type2 ;
const struct MatchCallStruct3 * type3 ;
const struct MatchCallStruct4 * type4 ;
const struct MatchCallStruct5 * type5 ;
} match_call_t ;
2019-08-09 22:28:22 +02:00
struct MatchCallOverride {
2019-01-03 02:07:47 +01:00
u16 idx ;
2019-08-09 22:28:22 +02:00
u16 facilityClass ;
u32 flag ;
const u8 * flavorTexts [ 4 ] ;
2019-01-03 02:07:47 +01:00
} ;
// Static RAM declarations
// Static ROM declarations
static bool32 MatchCallGetFlag_Type0 ( match_call_t ) ;
static bool32 MatchCallGetFlag_Type1 ( match_call_t ) ;
static bool32 MatchCallGetFlag_Type2 ( match_call_t ) ;
static bool32 MatchCallGetFlag_Type3 ( match_call_t ) ;
static bool32 MatchCallGetFlag_Type4 ( match_call_t ) ;
2019-08-02 18:40:14 +02:00
static u8 MatchCallGetMapSec_Type0 ( match_call_t ) ;
static u8 MatchCallGetMapSec_Type1 ( match_call_t ) ;
static u8 MatchCallGetMapSec_Type2 ( match_call_t ) ;
static u8 MatchCallGetMapSec_Type3 ( match_call_t ) ;
static u8 MatchCallGetMapSec_Type4 ( match_call_t ) ;
2019-01-03 02:07:47 +01:00
static bool32 MatchCall_IsRematchable_Type0 ( match_call_t ) ;
static bool32 MatchCall_IsRematchable_Type1 ( match_call_t ) ;
static bool32 MatchCall_IsRematchable_Type2 ( match_call_t ) ;
static bool32 MatchCall_IsRematchable_Type3 ( match_call_t ) ;
static bool32 MatchCall_IsRematchable_Type4 ( match_call_t ) ;
2019-08-09 22:28:22 +02:00
static bool32 MatchCall_HasCheckPage_Type0 ( match_call_t ) ;
static bool32 MatchCall_HasCheckPage_Type1 ( match_call_t ) ;
static bool32 MatchCall_HasCheckPage_Type2 ( match_call_t ) ;
static bool32 MatchCall_HasCheckPage_Type3 ( match_call_t ) ;
static bool32 MatchCall_HasCheckPage_Type4 ( match_call_t ) ;
2019-01-03 02:07:47 +01:00
static u32 MatchCall_GetRematchTableIdx_Type0 ( match_call_t ) ;
static u32 MatchCall_GetRematchTableIdx_Type1 ( match_call_t ) ;
static u32 MatchCall_GetRematchTableIdx_Type2 ( match_call_t ) ;
static u32 MatchCall_GetRematchTableIdx_Type3 ( match_call_t ) ;
static u32 MatchCall_GetRematchTableIdx_Type4 ( match_call_t ) ;
static void MatchCall_GetMessage_Type0 ( match_call_t , u8 * ) ;
static void MatchCall_GetMessage_Type1 ( match_call_t , u8 * ) ;
static void MatchCall_GetMessage_Type2 ( match_call_t , u8 * ) ;
static void MatchCall_GetMessage_Type3 ( match_call_t , u8 * ) ;
static void MatchCall_GetMessage_Type4 ( match_call_t , u8 * ) ;
static void MatchCall_GetNameAndDesc_Type0 ( match_call_t , const u8 * * , const u8 * * ) ;
static void MatchCall_GetNameAndDesc_Type1 ( match_call_t , const u8 * * , const u8 * * ) ;
static void MatchCall_GetNameAndDesc_Type2 ( match_call_t , const u8 * * , const u8 * * ) ;
static void MatchCall_GetNameAndDesc_Type3 ( match_call_t , const u8 * * , const u8 * * ) ;
static void MatchCall_GetNameAndDesc_Type4 ( match_call_t , const u8 * * , const u8 * * ) ;
static void sub_81D1920 ( const match_call_text_data_t * , u8 * ) ;
static void sub_81D199C ( const match_call_text_data_t * , u16 , u8 * ) ;
static void MatchCall_GetNameAndDescByRematchIdx ( u32 , const u8 * * , const u8 * * ) ;
extern const u8 gText_MrStone_Pokenav_2B60C0 [ ] ;
extern const u8 gText_MrStone_Pokenav_2B61E6 [ ] ;
extern const u8 gText_MrStone_Pokenav_2B6302 [ ] ;
extern const u8 gText_MrStone_Pokenav_2B63A0 [ ] ;
extern const u8 gText_MrStone_Pokenav_2B64A2 [ ] ;
extern const u8 gText_MrStone_Pokenav_2B6526 [ ] ;
extern const u8 gText_MrStone_Pokenav_2B65BB [ ] ;
extern const u8 gText_MrStone_Pokenav_2B6664 [ ] ;
extern const u8 gText_MrStone_Pokenav_2B66B1 [ ] ;
extern const u8 gText_MrStone_Pokenav_2B6703 [ ] ;
extern const u8 gText_MrStone_Pokenav_2B67ED [ ] ;
extern const u8 gMrStoneMatchCallDesc [ ] ;
extern const u8 gMrStoneMatchCallName [ ] ;
extern const u8 gText_Norman_Pokenav_2B5719 [ ] ;
extern const u8 gText_Norman_Pokenav_2B5795 [ ] ;
extern const u8 gText_Norman_Pokenav_2B584D [ ] ;
extern const u8 gText_Norman_Pokenav_2B58E3 [ ] ;
extern const u8 gText_Norman_Pokenav_2B5979 [ ] ;
extern const u8 gText_Norman_Pokenav_2B5A07 [ ] ;
extern const u8 gText_Norman_Pokenav_2B5A69 [ ] ;
extern const u8 gText_Norman_Pokenav_2B5ACF [ ] ;
extern const u8 gText_Norman_Pokenav_2B5B5E [ ] ;
extern const u8 gNormanMatchCallDesc [ ] ;
extern const u8 gNormanMatchCallName [ ] ;
extern const u8 gProfBirchMatchCallDesc [ ] ;
extern const u8 gProfBirchMatchCallName [ ] ;
extern const u8 gText_Mom_Pokenav_2B227B [ ] ;
extern const u8 gText_Mom_Pokenav_2B2310 [ ] ;
extern const u8 gText_Mom_Pokenav_2B23F3 [ ] ;
extern const u8 gMomMatchCallDesc [ ] ;
extern const u8 gMomMatchCallName [ ] ;
extern const u8 gText_Steven_Pokenav_2B5B95 [ ] ;
extern const u8 gText_Steven_Pokenav_2B5C53 [ ] ;
extern const u8 gText_Steven_Pokenav_2B5CC9 [ ] ;
extern const u8 gText_Steven_Pokenav_2B5DB4 [ ] ;
extern const u8 gText_Steven_Pokenav_2B5E26 [ ] ;
extern const u8 gText_Steven_Pokenav_2B5EA2 [ ] ;
extern const u8 gText_Steven_Pokenav_2B5ED9 [ ] ;
extern const u8 gStevenMatchCallDesc [ ] ;
extern const u8 gStevenMatchCallName [ ] ;
extern const u8 gText_May_Pokenav_2B3AB3 [ ] ;
extern const u8 gText_May_Pokenav_2B3B3F [ ] ;
extern const u8 gText_May_Pokenav_2B3C13 [ ] ;
extern const u8 gText_May_Pokenav_2B3CF3 [ ] ;
extern const u8 gText_May_Pokenav_2B3D4B [ ] ;
extern const u8 gText_May_Pokenav_2B3DD1 [ ] ;
extern const u8 gText_May_Pokenav_2B3E69 [ ] ;
extern const u8 gText_May_Pokenav_2B3ECD [ ] ;
extern const u8 gText_May_Pokenav_2B3F2B [ ] ;
extern const u8 gText_May_Pokenav_2B3FFB [ ] ;
extern const u8 gText_May_Pokenav_2B402B [ ] ;
extern const u8 gText_May_Pokenav_2B414B [ ] ;
extern const u8 gText_May_Pokenav_2B4228 [ ] ;
extern const u8 gText_May_Pokenav_2B42E0 [ ] ;
extern const u8 gText_May_Pokenav_2B4350 [ ] ;
extern const u8 gMayBrendanMatchCallDesc [ ] ;
extern const u8 gExpandedPlaceholder_May [ ] ;
extern const u8 gText_Brendan_Pokenav_2B43EF [ ] ;
extern const u8 gText_Brendan_Pokenav_2B4486 [ ] ;
extern const u8 gText_Brendan_Pokenav_2B4560 [ ] ;
extern const u8 gText_Brendan_Pokenav_2B463F [ ] ;
extern const u8 gText_Brendan_Pokenav_2B46B7 [ ] ;
extern const u8 gText_Brendan_Pokenav_2B4761 [ ] ;
extern const u8 gText_Brendan_Pokenav_2B47F4 [ ] ;
extern const u8 gText_Brendan_Pokenav_2B4882 [ ] ;
extern const u8 gText_Brendan_Pokenav_2B4909 [ ] ;
extern const u8 gText_Brendan_Pokenav_2B49C4 [ ] ;
extern const u8 gText_Brendan_Pokenav_2B4A44 [ ] ;
extern const u8 gText_Brendan_Pokenav_2B4B28 [ ] ;
extern const u8 gText_Brendan_Pokenav_2B4C15 [ ] ;
extern const u8 gText_Brendan_Pokenav_2B4CD8 [ ] ;
extern const u8 gText_Brendan_Pokenav_2B4D46 [ ] ;
extern const u8 gExpandedPlaceholder_Brendan [ ] ;
extern const u8 gText_Wally_Pokenav_2B4DE2 [ ] ;
extern const u8 gText_Wally_Pokenav_2B4E57 [ ] ;
extern const u8 gText_Wally_Pokenav_2B4EA5 [ ] ;
extern const u8 gText_Wally_Pokenav_2B4F41 [ ] ;
extern const u8 gText_Wally_Pokenav_2B4FF3 [ ] ;
extern const u8 gText_Wally_Pokenav_2B50B1 [ ] ;
extern const u8 gText_Wally_Pokenav_2B5100 [ ] ;
extern const u8 gWallyMatchCallDesc [ ] ;
extern const u8 gText_Scott_Pokenav_2B5184 [ ] ;
extern const u8 gText_Scott_Pokenav_2B5275 [ ] ;
extern const u8 gText_Scott_Pokenav_2B5323 [ ] ;
extern const u8 gText_Scott_Pokenav_2B53DB [ ] ;
extern const u8 gText_Scott_Pokenav_2B54A5 [ ] ;
extern const u8 gText_Scott_Pokenav_2B5541 [ ] ;
extern const u8 gText_Scott_Pokenav_2B56CA [ ] ;
extern const u8 gScottMatchCallDesc [ ] ;
extern const u8 gScottMatchCallName [ ] ;
extern const u8 gText_Roxanne_Pokenav_2B2456 [ ] ;
extern const u8 gText_Roxanne_Pokenav_2B250E [ ] ;
extern const u8 gText_Roxanne_Pokenav_2B25C1 [ ] ;
extern const u8 gText_Roxanne_Pokenav_2B2607 [ ] ;
extern const u8 gRoxanneMatchCallDesc [ ] ;
extern const u8 gText_Brawly_Pokenav_2B2659 [ ] ;
extern const u8 gText_Brawly_Pokenav_2B275D [ ] ;
extern const u8 gText_Brawly_Pokenav_2B286F [ ] ;
extern const u8 gText_Brawly_Pokenav_2B28D1 [ ] ;
extern const u8 gBrawlyMatchCallDesc [ ] ;
extern const u8 gText_Wattson_Pokenav_2B2912 [ ] ;
extern const u8 gText_Wattson_Pokenav_2B29CA [ ] ;
extern const u8 gText_Wattson_Pokenav_2B2AB6 [ ] ;
extern const u8 gText_Wattson_Pokenav_2B2B01 [ ] ;
extern const u8 gWattsonMatchCallDesc [ ] ;
extern const u8 gText_Flannery_Pokenav_2B2B4D [ ] ;
extern const u8 gText_Flannery_Pokenav_2B2C0E [ ] ;
extern const u8 gText_Flannery_Pokenav_2B2CF1 [ ] ;
extern const u8 gText_Flannery_Pokenav_2B2D54 [ ] ;
extern const u8 gFlanneryMatchCallDesc [ ] ;
extern const u8 gText_Winona_Pokenav_2B2DA4 [ ] ;
extern const u8 gText_Winona_Pokenav_2B2E2B [ ] ;
extern const u8 gText_Winona_Pokenav_2B2EC2 [ ] ;
extern const u8 gText_Winona_Pokenav_2B2F16 [ ] ;
extern const u8 gWinonaMatchCallDesc [ ] ;
extern const u8 gText_TateLiza_Pokenav_2B2F97 [ ] ;
extern const u8 gText_TateLiza_Pokenav_2B306E [ ] ;
extern const u8 gText_TateLiza_Pokenav_2B3158 [ ] ;
extern const u8 gText_TateLiza_Pokenav_2B31CD [ ] ;
extern const u8 gTateLizaMatchCallDesc [ ] ;
extern const u8 gText_Juan_Pokenav_2B3249 [ ] ;
extern const u8 gText_Juan_Pokenav_2B32EC [ ] ;
extern const u8 gText_Juan_Pokenav_2B33AA [ ] ;
extern const u8 gText_Juan_Pokenav_2B341E [ ] ;
extern const u8 gJuanMatchCallDesc [ ] ;
extern const u8 gText_Sidney_Pokenav_2B34CC [ ] ;
extern const u8 gEliteFourMatchCallDesc [ ] ;
extern const u8 gText_Phoebe_Pokenav_2B3561 [ ] ;
extern const u8 gText_Glacia_Pokenav_2B35E4 [ ] ;
extern const u8 gText_Drake_Pokenav_2B368B [ ] ;
extern const u8 gText_Wallace_Pokenav_2B3790 [ ] ;
extern const u8 gChampionMatchCallDesc [ ] ;
extern const u8 gMatchCallStevenStrategyText [ ] ;
extern const u8 gMatchCall_StevenTrainersPokemonText [ ] ;
extern const u8 gMatchCall_StevenSelfIntroductionText_Line1_BeforeMeteorFallsBattle [ ] ;
extern const u8 gMatchCall_StevenSelfIntroductionText_Line2_BeforeMeteorFallsBattle [ ] ;
extern const u8 gMatchCall_StevenSelfIntroductionText_Line1_AfterMeteorFallsBattle [ ] ;
extern const u8 gMatchCall_StevenSelfIntroductionText_Line2_AfterMeteorFallsBattle [ ] ;
extern const u8 gMatchCall_BrendanStrategyText [ ] ;
extern const u8 gMatchCall_BrendanTrainersPokemonText [ ] ;
extern const u8 gMatchCall_BrendanSelfIntroductionText_Line1 [ ] ;
extern const u8 gMatchCall_BrendanSelfIntroductionText_Line2 [ ] ;
extern const u8 gMatchCall_MayStrategyText [ ] ;
extern const u8 gMatchCall_MayTrainersPokemonText [ ] ;
extern const u8 gMatchCall_MaySelfIntroductionText_Line1 [ ] ;
extern const u8 gMatchCall_MaySelfIntroductionText_Line2 [ ] ;
// .rodata
static const match_call_text_data_t sMrStoneTextScripts [ ] = {
2019-01-03 03:28:18 +01:00
{ gText_MrStone_Pokenav_2B60C0 , 0xFFFF , FLAG_ENABLE_MR_STONE_POKENAV } ,
{ gText_MrStone_Pokenav_2B61E6 , FLAG_ENABLE_MR_STONE_POKENAV , 0xFFFF } ,
{ gText_MrStone_Pokenav_2B6302 , FLAG_DELIVERED_STEVEN_LETTER , 0xFFFF } ,
{ gText_MrStone_Pokenav_2B63A0 , FLAG_RECEIVED_EXP_SHARE , 0xFFFF } ,
{ gText_MrStone_Pokenav_2B64A2 , FLAG_RECEIVED_HM04 , 0xFFFF } ,
{ gText_MrStone_Pokenav_2B6526 , FLAG_DEFEATED_PETALBURG_GYM , 0xFFFF } ,
{ gText_MrStone_Pokenav_2B65BB , FLAG_RECEIVED_CASTFORM , 0xFFFF } ,
{ gText_MrStone_Pokenav_2B6664 , FLAG_GROUDON_AWAKENED_MAGMA_HIDEOUT , 0xFFFF } ,
{ gText_MrStone_Pokenav_2B66B1 , FLAG_TEAM_AQUA_ESCAPED_IN_SUBMARINE , 0xFFFF } ,
{ gText_MrStone_Pokenav_2B6703 , FLAG_DEFEATED_SOOTOPOLIS_GYM , 0xFFFF } ,
2019-01-03 02:07:47 +01:00
{ gText_MrStone_Pokenav_2B67ED , FLAG_SYS_GAME_CLEAR , 0xFFFF } ,
{ NULL , 0xFFFF , 0xFFFF }
} ;
2019-04-02 09:22:07 +02:00
static const struct MatchCallStruct0 sMrStoneMatchCallHeader =
{
. type = 0 ,
2019-08-02 16:52:40 +02:00
. mapSec = MAPSEC_RUSTBORO_CITY ,
2019-04-02 09:22:07 +02:00
. flag = 0xFFFF ,
. desc = gMrStoneMatchCallDesc ,
. name = gMrStoneMatchCallName ,
. textData = sMrStoneTextScripts
} ;
2019-01-03 02:07:47 +01:00
static const match_call_text_data_t sNormanTextScripts [ ] = {
2019-01-03 03:28:18 +01:00
{ gText_Norman_Pokenav_2B5719 , FLAG_ENABLE_NORMAN_MATCH_CALL , 0xFFFF } ,
{ gText_Norman_Pokenav_2B5795 , FLAG_DEFEATED_DEWFORD_GYM , 0xFFFF } ,
{ gText_Norman_Pokenav_2B584D , FLAG_DEFEATED_LAVARIDGE_GYM , 0xFFFF } ,
{ gText_Norman_Pokenav_2B58E3 , FLAG_DEFEATED_PETALBURG_GYM , 0xFFFF } ,
{ gText_Norman_Pokenav_2B5979 , FLAG_RECEIVED_RED_OR_BLUE_ORB , 0xFFFF } ,
2019-01-03 02:07:47 +01:00
{ gText_Norman_Pokenav_2B5A07 , 0xFFFE , 0xFFFF } ,
{ gText_Norman_Pokenav_2B5A69 , FLAG_SYS_GAME_CLEAR , 0xFFFF } ,
{ gText_Norman_Pokenav_2B5ACF , FLAG_SYS_GAME_CLEAR , 0xFFFF } ,
{ gText_Norman_Pokenav_2B5B5E , FLAG_SYS_GAME_CLEAR , 0xFFFF } ,
{ NULL , 0xFFFF , 0xFFFF }
} ;
2019-04-02 09:22:07 +02:00
static const struct MatchCallStruct5 sNormanMatchCallHeader =
{
. type = 5 ,
2019-08-02 16:52:40 +02:00
. mapSec = MAPSEC_PETALBURG_CITY ,
2019-04-02 09:22:07 +02:00
. flag = FLAG_ENABLE_NORMAN_MATCH_CALL ,
. rematchTableIdx = REMATCH_NORMAN ,
. desc = gNormanMatchCallDesc ,
. name = gNormanMatchCallName ,
. textData = sNormanTextScripts
} ;
2019-01-03 02:07:47 +01:00
2019-04-02 09:22:07 +02:00
static const struct MatchCallStruct3 sProfBirchMatchCallHeader =
{
. type = 3 ,
2019-08-02 16:52:40 +02:00
. mapSec = 0 ,
2019-04-02 09:22:07 +02:00
. flag = FLAG_ENABLE_PROF_BIRCH_MATCH_CALL ,
. desc = gProfBirchMatchCallDesc ,
. name = gProfBirchMatchCallName
} ;
2019-01-03 02:07:47 +01:00
static const match_call_text_data_t sMomTextScripts [ ] = {
{ gText_Mom_Pokenav_2B227B , 0xffff , 0xffff } ,
2019-01-03 03:28:18 +01:00
{ gText_Mom_Pokenav_2B2310 , FLAG_DEFEATED_PETALBURG_GYM , 0xffff } ,
2019-01-03 02:07:47 +01:00
{ gText_Mom_Pokenav_2B23F3 , FLAG_SYS_GAME_CLEAR , 0xffff } ,
{ NULL , 0xffff , 0xffff }
} ;
2019-04-02 09:22:07 +02:00
static const struct MatchCallStruct0 sMomMatchCallHeader =
{
. type = 0 ,
2019-08-02 16:52:40 +02:00
. mapSec = MAPSEC_LITTLEROOT_TOWN ,
2019-04-02 09:22:07 +02:00
. flag = FLAG_ENABLE_MOM_MATCH_CALL ,
. desc = gMomMatchCallDesc ,
. name = gMomMatchCallName ,
. textData = sMomTextScripts
} ;
2019-01-03 02:07:47 +01:00
static const match_call_text_data_t sStevenTextScripts [ ] = {
{ gText_Steven_Pokenav_2B5B95 , 0xffff , 0xffff } ,
{ gText_Steven_Pokenav_2B5C53 , FLAG_RUSTURF_TUNNEL_OPENED , 0xffff } ,
2019-01-03 03:28:18 +01:00
{ gText_Steven_Pokenav_2B5CC9 , FLAG_RECEIVED_RED_OR_BLUE_ORB , 0xffff } ,
{ gText_Steven_Pokenav_2B5DB4 , FLAG_TEAM_AQUA_ESCAPED_IN_SUBMARINE , 0xffff } ,
{ gText_Steven_Pokenav_2B5E26 , FLAG_DEFEATED_MOSSDEEP_GYM , 0xffff } ,
{ gText_Steven_Pokenav_2B5EA2 , FLAG_KYOGRE_ESCAPED_SEAFLOOR_CAVERN , 0xffff } ,
2019-01-03 02:07:47 +01:00
{ gText_Steven_Pokenav_2B5ED9 , FLAG_SYS_GAME_CLEAR , 0xffff } ,
{ NULL , 0xffff , 0xffff } ,
} ;
2019-04-02 09:22:07 +02:00
static const struct MatchCallStruct0 sStevenMatchCallHeader =
{
. type = 0 ,
2019-08-02 16:52:40 +02:00
. mapSec = MAPSEC_NONE ,
2019-04-02 09:22:07 +02:00
. flag = FLAG_REGISTERED_STEVEN_POKENAV ,
. desc = gStevenMatchCallDesc ,
. name = gStevenMatchCallName ,
. textData = sStevenTextScripts
} ;
2019-01-03 02:07:47 +01:00
static const match_call_text_data_t sMayTextScripts [ ] = {
{ gText_May_Pokenav_2B3AB3 , 0xFFFF , 0xFFFF } ,
2019-01-03 03:28:18 +01:00
{ gText_May_Pokenav_2B3B3F , FLAG_DEFEATED_DEWFORD_GYM , 0xFFFF } ,
{ gText_May_Pokenav_2B3C13 , FLAG_DELIVERED_DEVON_GOODS , 0xFFFF } ,
2019-01-03 02:07:47 +01:00
{ gText_May_Pokenav_2B3CF3 , FLAG_HIDE_MAUVILLE_CITY_WALLY , 0xFFFF } ,
2019-01-03 03:28:18 +01:00
{ gText_May_Pokenav_2B3D4B , FLAG_RECEIVED_HM04 , 0xFFFF } ,
{ gText_May_Pokenav_2B3DD1 , FLAG_DEFEATED_LAVARIDGE_GYM , 0xFFFF } ,
{ gText_May_Pokenav_2B3E69 , FLAG_DEFEATED_PETALBURG_GYM , 0xFFFF } ,
{ gText_May_Pokenav_2B3ECD , FLAG_RECEIVED_CASTFORM , 0xFFFF } ,
{ gText_May_Pokenav_2B3F2B , FLAG_RECEIVED_RED_OR_BLUE_ORB , 0xFFFF } ,
{ gText_May_Pokenav_2B3FFB , FLAG_GROUDON_AWAKENED_MAGMA_HIDEOUT , 0xFFFF } ,
{ gText_May_Pokenav_2B402B , FLAG_MET_TEAM_AQUA_HARBOR , 0xFFFF } ,
{ gText_May_Pokenav_2B414B , FLAG_TEAM_AQUA_ESCAPED_IN_SUBMARINE , 0xFFFF } ,
{ gText_May_Pokenav_2B4228 , FLAG_KYOGRE_ESCAPED_SEAFLOOR_CAVERN , 0xFFFF } ,
{ gText_May_Pokenav_2B42E0 , FLAG_DEFEATED_SOOTOPOLIS_GYM , 0xFFFF } ,
2019-01-03 02:07:47 +01:00
{ gText_May_Pokenav_2B4350 , FLAG_SYS_GAME_CLEAR , 0xFFFF } ,
{ NULL , 0xFFFF , 0xFFFF }
} ;
2019-08-09 22:28:22 +02:00
static const struct MatchCallStruct4 sMayMatchCallHeader =
2019-04-02 09:22:07 +02:00
{
. type = 4 ,
2019-08-09 22:28:22 +02:00
. gender = MALE , //Gender of player
2019-04-02 09:22:07 +02:00
. flag = FLAG_ENABLE_RIVAL_MATCH_CALL ,
. desc = gMayBrendanMatchCallDesc ,
. name = gExpandedPlaceholder_May ,
. textData = sMayTextScripts
} ;
2019-01-03 02:07:47 +01:00
static const match_call_text_data_t sBrendanTextScripts [ ] = {
{ gText_Brendan_Pokenav_2B43EF , 0xFFFF , 0xFFFF } ,
2019-01-03 03:28:18 +01:00
{ gText_Brendan_Pokenav_2B4486 , FLAG_DEFEATED_DEWFORD_GYM , 0xFFFF } ,
{ gText_Brendan_Pokenav_2B4560 , FLAG_DELIVERED_DEVON_GOODS , 0xFFFF } ,
2019-01-03 02:07:47 +01:00
{ gText_Brendan_Pokenav_2B463F , FLAG_HIDE_MAUVILLE_CITY_WALLY , 0xFFFF } ,
2019-01-03 03:28:18 +01:00
{ gText_Brendan_Pokenav_2B46B7 , FLAG_RECEIVED_HM04 , 0xFFFF } ,
{ gText_Brendan_Pokenav_2B4761 , FLAG_DEFEATED_LAVARIDGE_GYM , 0xFFFF } ,
{ gText_Brendan_Pokenav_2B47F4 , FLAG_DEFEATED_PETALBURG_GYM , 0xFFFF } ,
{ gText_Brendan_Pokenav_2B4882 , FLAG_RECEIVED_CASTFORM , 0xFFFF } ,
{ gText_Brendan_Pokenav_2B4909 , FLAG_RECEIVED_RED_OR_BLUE_ORB , 0xFFFF } ,
{ gText_Brendan_Pokenav_2B49C4 , FLAG_GROUDON_AWAKENED_MAGMA_HIDEOUT , 0xFFFF } ,
{ gText_Brendan_Pokenav_2B4A44 , FLAG_MET_TEAM_AQUA_HARBOR , 0xFFFF } ,
{ gText_Brendan_Pokenav_2B4B28 , FLAG_TEAM_AQUA_ESCAPED_IN_SUBMARINE , 0xFFFF } ,
{ gText_Brendan_Pokenav_2B4C15 , FLAG_KYOGRE_ESCAPED_SEAFLOOR_CAVERN , 0xFFFF } ,
{ gText_Brendan_Pokenav_2B4CD8 , FLAG_DEFEATED_SOOTOPOLIS_GYM , 0xFFFF } ,
2019-01-03 02:07:47 +01:00
{ gText_Brendan_Pokenav_2B4D46 , FLAG_SYS_GAME_CLEAR , 0xFFFF } ,
{ NULL , 0xFFFF , 0xFFFF }
} ;
2019-08-09 22:28:22 +02:00
static const struct MatchCallStruct4 sBrendanMatchCallHeader =
2019-04-02 09:22:07 +02:00
{
. type = 4 ,
2019-08-09 22:28:22 +02:00
. gender = FEMALE , //Gender of player
2019-04-02 09:22:07 +02:00
. flag = FLAG_ENABLE_RIVAL_MATCH_CALL ,
. desc = gMayBrendanMatchCallDesc ,
. name = gExpandedPlaceholder_Brendan ,
. textData = sBrendanTextScripts
} ;
2019-01-03 02:07:47 +01:00
static const match_call_text_data_t sWallyTextScripts [ ] = {
{ gText_Wally_Pokenav_2B4DE2 , 0xFFFF , 0xFFFF } ,
{ gText_Wally_Pokenav_2B4E57 , FLAG_RUSTURF_TUNNEL_OPENED , 0xFFFF } ,
2019-01-03 03:28:18 +01:00
{ gText_Wally_Pokenav_2B4EA5 , FLAG_DEFEATED_LAVARIDGE_GYM , 0xFFFF } ,
{ gText_Wally_Pokenav_2B4F41 , FLAG_RECEIVED_CASTFORM , 0xFFFF } ,
{ gText_Wally_Pokenav_2B4FF3 , FLAG_GROUDON_AWAKENED_MAGMA_HIDEOUT , 0xFFFF } ,
{ gText_Wally_Pokenav_2B50B1 , FLAG_KYOGRE_ESCAPED_SEAFLOOR_CAVERN , 0xFFFF } ,
{ gText_Wally_Pokenav_2B5100 , FLAG_DEFEATED_WALLY_VICTORY_ROAD , 0xFFFF } ,
2019-01-03 02:07:47 +01:00
{ NULL , 0xFFFF , 0xFFFF }
} ;
const struct MatchCallSubstruct2 sWallyAdditionalData [ ] = {
2019-08-02 16:58:03 +02:00
{ FLAG_HIDE_MAUVILLE_CITY_WALLY , MAPSEC_VERDANTURF_TOWN } ,
{ FLAG_GROUDON_AWAKENED_MAGMA_HIDEOUT , MAPSEC_NONE } ,
{ FLAG_HIDE_VICTORY_ROAD_ENTRANCE_WALLY , MAPSEC_VICTORY_ROAD } ,
{ 0xFFFF , MAPSEC_NONE }
2019-01-03 02:07:47 +01:00
} ;
2019-04-02 09:22:07 +02:00
static const struct MatchCallStruct2 sWallyMatchCallHeader =
{
. type = 2 ,
2019-08-02 16:52:40 +02:00
. mapSec = 0 ,
2019-04-02 09:22:07 +02:00
. flag = FLAG_ENABLE_WALLY_MATCH_CALL ,
. rematchTableIdx = REMATCH_WALLY_3 ,
. desc = gWallyMatchCallDesc ,
. textData = sWallyTextScripts ,
. v10 = sWallyAdditionalData
} ;
2019-01-03 02:07:47 +01:00
static const match_call_text_data_t sScottTextScripts [ ] = {
{ gText_Scott_Pokenav_2B5184 , 0xFFFF , 0xFFFF } ,
2019-01-03 03:28:18 +01:00
{ gText_Scott_Pokenav_2B5275 , FLAG_DEFEATED_EVIL_TEAM_MT_CHIMNEY , 0xFFFF } ,
{ gText_Scott_Pokenav_2B5323 , FLAG_RECEIVED_CASTFORM , 0xFFFF } ,
{ gText_Scott_Pokenav_2B53DB , FLAG_RECEIVED_RED_OR_BLUE_ORB , 0xFFFF } ,
{ gText_Scott_Pokenav_2B54A5 , FLAG_TEAM_AQUA_ESCAPED_IN_SUBMARINE , 0xFFFF } ,
{ gText_Scott_Pokenav_2B5541 , FLAG_DEFEATED_SOOTOPOLIS_GYM , 0xFFFF } ,
2019-01-03 02:07:47 +01:00
{ gText_Scott_Pokenav_2B56CA , FLAG_SYS_GAME_CLEAR , 0xFFFF } ,
{ NULL , 0xFFFF , 0xFFFF }
} ;
2019-04-02 09:22:07 +02:00
static const struct MatchCallStruct0 sScottMatchCallHeader =
{
. type = 0 ,
2019-08-02 16:52:40 +02:00
. mapSec = MAPSEC_NONE ,
2019-04-02 09:22:07 +02:00
. flag = FLAG_ENABLE_SCOTT_MATCH_CALL ,
. desc = gScottMatchCallDesc ,
. name = gScottMatchCallName ,
. textData = sScottTextScripts
} ;
2019-01-03 02:07:47 +01:00
static const match_call_text_data_t sRoxanneTextScripts [ ] = {
{ gText_Roxanne_Pokenav_2B2456 , 0xFFFE , 0xFFFF } ,
{ gText_Roxanne_Pokenav_2B250E , 0xFFFF , 0xFFFF } ,
{ gText_Roxanne_Pokenav_2B25C1 , 0xFFFF , 0xFFFF } ,
{ gText_Roxanne_Pokenav_2B2607 , FLAG_SYS_GAME_CLEAR , 0xFFFF } ,
{ NULL , 0xFFFF , 0xFFFF }
} ;
2019-04-02 09:22:07 +02:00
static const struct MatchCallStruct5 sRoxanneMatchCallHeader =
{
. type = 5 ,
2019-08-02 16:52:40 +02:00
. mapSec = MAPSEC_RUSTBORO_CITY ,
2019-04-02 09:22:07 +02:00
. flag = FLAG_ENABLE_ROXANNE_MATCH_CALL ,
. rematchTableIdx = REMATCH_ROXANNE ,
. desc = gRoxanneMatchCallDesc ,
. name = NULL ,
. textData = sRoxanneTextScripts
} ;
2019-01-03 02:07:47 +01:00
static const match_call_text_data_t sBrawlyTextScripts [ ] = {
{ gText_Brawly_Pokenav_2B2659 , 0xFFFE , 0xFFFF } ,
{ gText_Brawly_Pokenav_2B275D , 0xFFFF , 0xFFFF } ,
{ gText_Brawly_Pokenav_2B286F , 0xFFFF , 0xFFFF } ,
{ gText_Brawly_Pokenav_2B28D1 , FLAG_SYS_GAME_CLEAR , 0xFFFF } ,
{ NULL , 0xFFFF , 0xFFFF }
} ;
2019-04-02 09:22:07 +02:00
static const struct MatchCallStruct5 sBrawlyMatchCallHeader =
{
. type = 5 ,
2019-08-02 16:52:40 +02:00
. mapSec = MAPSEC_DEWFORD_TOWN ,
2019-04-02 09:22:07 +02:00
. flag = FLAG_ENABLE_BRAWLY_MATCH_CALL ,
. rematchTableIdx = REMATCH_BRAWLY ,
. desc = gBrawlyMatchCallDesc ,
. name = NULL ,
. textData = sBrawlyTextScripts
} ;
2019-01-03 02:07:47 +01:00
static const match_call_text_data_t sWattsonTextScripts [ ] = {
{ gText_Wattson_Pokenav_2B2912 , 0xFFFE , 0xFFFF } ,
{ gText_Wattson_Pokenav_2B29CA , 0xFFFF , 0xFFFF } ,
{ gText_Wattson_Pokenav_2B2AB6 , 0xFFFF , 0xFFFF } ,
{ gText_Wattson_Pokenav_2B2B01 , FLAG_SYS_GAME_CLEAR , 0xFFFF } ,
{ NULL , 0xFFFF , 0xFFFF }
} ;
2019-04-02 09:22:07 +02:00
static const struct MatchCallStruct5 sWattsonMatchCallHeader =
{
. type = 5 ,
2019-08-02 16:52:40 +02:00
. mapSec = MAPSEC_MAUVILLE_CITY ,
2019-04-02 09:22:07 +02:00
. flag = FLAG_ENABLE_WATTSON_MATCH_CALL ,
. rematchTableIdx = REMATCH_WATTSON ,
. desc = gWattsonMatchCallDesc ,
. name = NULL ,
. textData = sWattsonTextScripts
} ;
2019-01-03 02:07:47 +01:00
static const match_call_text_data_t sFlanneryTextScripts [ ] = {
{ gText_Flannery_Pokenav_2B2B4D , 0xFFFE , 0xFFFF } ,
{ gText_Flannery_Pokenav_2B2C0E , 0xFFFF , 0xFFFF } ,
{ gText_Flannery_Pokenav_2B2CF1 , 0xFFFF , 0xFFFF } ,
{ gText_Flannery_Pokenav_2B2D54 , FLAG_SYS_GAME_CLEAR , 0xFFFF } ,
{ NULL , 0xFFFF , 0xFFFF }
} ;
2019-04-02 09:22:07 +02:00
static const struct MatchCallStruct5 sFlanneryMatchCallHeader =
{
. type = 5 ,
2019-08-02 16:52:40 +02:00
. mapSec = MAPSEC_LAVARIDGE_TOWN ,
2019-04-02 09:22:07 +02:00
. flag = FLAG_ENABLE_FLANNERY_MATCH_CALL ,
. rematchTableIdx = REMATCH_FLANNERY ,
. desc = gFlanneryMatchCallDesc ,
. name = NULL ,
. textData = sFlanneryTextScripts
} ;
2019-01-03 02:07:47 +01:00
static const match_call_text_data_t sWinonaTextScripts [ ] = {
{ gText_Winona_Pokenav_2B2DA4 , 0xFFFE , 0xFFFF } ,
{ gText_Winona_Pokenav_2B2E2B , 0xFFFF , 0xFFFF } ,
{ gText_Winona_Pokenav_2B2EC2 , 0xFFFF , 0xFFFF } ,
{ gText_Winona_Pokenav_2B2F16 , FLAG_SYS_GAME_CLEAR , 0xFFFF } ,
{ NULL , 0xFFFF , 0xFFFF }
} ;
2019-04-02 09:22:07 +02:00
static const struct MatchCallStruct5 sWinonaMatchCallHeader =
{
. type = 5 ,
2019-08-02 16:52:40 +02:00
. mapSec = MAPSEC_FORTREE_CITY ,
2019-04-02 09:22:07 +02:00
. flag = FLAG_ENABLE_WINONA_MATCH_CALL ,
. rematchTableIdx = REMATCH_WINONA ,
. desc = gWinonaMatchCallDesc ,
. name = NULL ,
. textData = sWinonaTextScripts
} ;
2019-01-03 02:07:47 +01:00
static const match_call_text_data_t sTateLizaTextScripts [ ] = {
{ gText_TateLiza_Pokenav_2B2F97 , 0xFFFE , 0xFFFF } ,
{ gText_TateLiza_Pokenav_2B306E , 0xFFFF , 0xFFFF } ,
{ gText_TateLiza_Pokenav_2B3158 , 0xFFFF , 0xFFFF } ,
{ gText_TateLiza_Pokenav_2B31CD , FLAG_SYS_GAME_CLEAR , 0xFFFF } ,
{ NULL , 0xFFFF , 0xFFFF }
} ;
2019-04-02 09:22:07 +02:00
static const struct MatchCallStruct5 sTateLizaMatchCallHeader =
{
. type = 5 ,
2019-08-02 16:52:40 +02:00
. mapSec = MAPSEC_MOSSDEEP_CITY ,
2019-04-02 09:22:07 +02:00
. flag = FLAG_ENABLE_TATE_AND_LIZA_MATCH_CALL ,
. rematchTableIdx = REMATCH_TATE_AND_LIZA ,
. desc = gTateLizaMatchCallDesc ,
. name = NULL ,
. textData = sTateLizaTextScripts
} ;
2019-01-03 02:07:47 +01:00
static const match_call_text_data_t sJuanTextScripts [ ] = {
{ gText_Juan_Pokenav_2B3249 , 0xFFFE , 0xFFFF } ,
{ gText_Juan_Pokenav_2B32EC , 0xFFFF , 0xFFFF } ,
{ gText_Juan_Pokenav_2B33AA , 0xFFFF , 0xFFFF } ,
{ gText_Juan_Pokenav_2B341E , FLAG_SYS_GAME_CLEAR , 0xFFFF } ,
{ NULL , 0xFFFF , 0xFFFF }
} ;
2019-04-02 09:22:07 +02:00
static const struct MatchCallStruct5 sJuanMatchCallHeader =
{
. type = 5 ,
2019-08-02 16:52:40 +02:00
. mapSec = MAPSEC_SOOTOPOLIS_CITY ,
2019-04-02 09:22:07 +02:00
. flag = FLAG_ENABLE_JUAN_MATCH_CALL ,
. rematchTableIdx = REMATCH_JUAN ,
. desc = gJuanMatchCallDesc ,
. name = NULL ,
. textData = sJuanTextScripts
} ;
2019-01-03 02:07:47 +01:00
static const match_call_text_data_t sSidneyTextScripts [ ] = {
{ gText_Sidney_Pokenav_2B34CC , 0xFFFF , 0xFFFF } ,
{ NULL , 0xFFFF , 0xFFFF }
} ;
2019-04-02 09:22:07 +02:00
static const struct MatchCallStruct5 sSidneyMatchCallHeader =
{
. type = 5 ,
2019-08-02 16:52:40 +02:00
. mapSec = MAPSEC_EVER_GRANDE_CITY ,
2019-04-02 09:22:07 +02:00
. flag = FLAG_REMATCH_SIDNEY ,
. rematchTableIdx = REMATCH_SIDNEY ,
. desc = gEliteFourMatchCallDesc ,
. name = NULL ,
. textData = sSidneyTextScripts
} ;
2019-01-03 02:07:47 +01:00
static const match_call_text_data_t sPhoebeTextScripts [ ] = {
{ gText_Phoebe_Pokenav_2B3561 , 0xFFFF , 0xFFFF } ,
{ NULL , 0xFFFF , 0xFFFF }
} ;
2019-04-02 09:22:07 +02:00
static const struct MatchCallStruct5 sPhoebeMatchCallHeader =
{
. type = 5 ,
2019-08-02 16:52:40 +02:00
. mapSec = MAPSEC_EVER_GRANDE_CITY ,
2019-04-02 09:22:07 +02:00
. flag = FLAG_REMATCH_PHOEBE ,
. rematchTableIdx = REMATCH_PHOEBE ,
. desc = gEliteFourMatchCallDesc ,
. name = NULL ,
. textData = sPhoebeTextScripts
} ;
2019-01-03 02:07:47 +01:00
static const match_call_text_data_t sGlaciaTextScripts [ ] = {
{ gText_Glacia_Pokenav_2B35E4 , 0xFFFF , 0xFFFF } ,
{ NULL , 0xFFFF , 0xFFFF }
} ;
2019-04-02 09:22:07 +02:00
static const struct MatchCallStruct5 sGlaciaMatchCallHeader =
{
. type = 5 ,
2019-08-02 16:52:40 +02:00
. mapSec = MAPSEC_EVER_GRANDE_CITY ,
2019-04-02 09:22:07 +02:00
. flag = FLAG_REMATCH_GLACIA ,
. rematchTableIdx = REMATCH_GLACIA ,
. desc = gEliteFourMatchCallDesc ,
. name = NULL ,
. textData = sGlaciaTextScripts
} ;
2019-01-03 02:07:47 +01:00
static const match_call_text_data_t sDrakeTextScripts [ ] = {
{ gText_Drake_Pokenav_2B368B , 0xFFFF , 0xFFFF } ,
{ NULL , 0xFFFF , 0xFFFF }
} ;
2019-04-02 09:22:07 +02:00
static const struct MatchCallStruct5 sDrakeMatchCallHeader =
{
. type = 5 ,
2019-08-02 16:52:40 +02:00
. mapSec = MAPSEC_EVER_GRANDE_CITY ,
2019-04-02 09:22:07 +02:00
. flag = FLAG_REMATCH_DRAKE ,
. rematchTableIdx = REMATCH_DRAKE ,
. desc = gEliteFourMatchCallDesc ,
. name = NULL ,
. textData = sDrakeTextScripts
} ;
2019-01-03 02:07:47 +01:00
static const match_call_text_data_t sWallaceTextScripts [ ] = {
{ gText_Wallace_Pokenav_2B3790 , 0xFFFF , 0xFFFF } ,
{ NULL , 0xFFFF , 0xFFFF }
} ;
2019-04-02 09:22:07 +02:00
static const struct MatchCallStruct5 sWallaceMatchCallHeader =
{
. type = 5 ,
2019-08-02 16:52:40 +02:00
. mapSec = MAPSEC_EVER_GRANDE_CITY ,
2019-04-02 09:22:07 +02:00
. flag = FLAG_REMATCH_WALLACE ,
. rematchTableIdx = REMATCH_WALLACE ,
. desc = gChampionMatchCallDesc ,
. name = NULL ,
. textData = sWallaceTextScripts
} ;
2019-01-03 02:07:47 +01:00
static const match_call_t sMatchCallHeaders [ ] = {
2019-08-09 22:28:22 +02:00
[ MC_HEADER_MR_STONE ] = { . type0 = & sMrStoneMatchCallHeader } ,
[ MC_HEADER_PROF_BIRCH ] = { . type3 = & sProfBirchMatchCallHeader } ,
[ MC_HEADER_BRENDAN ] = { . type4 = & sBrendanMatchCallHeader } ,
[ MC_HEADER_MAY ] = { . type4 = & sMayMatchCallHeader } ,
[ MC_HEADER_WALLY ] = { . type2 = & sWallyMatchCallHeader } ,
[ MC_HEADER_NORMAN ] = { . type5 = & sNormanMatchCallHeader } ,
[ MC_HEADER_MOM ] = { . type0 = & sMomMatchCallHeader } ,
[ MC_HEADER_STEVEN ] = { . type0 = & sStevenMatchCallHeader } ,
[ MC_HEADER_SCOTT ] = { . type0 = & sScottMatchCallHeader } ,
[ MC_HEADER_ROXANNE ] = { . type5 = & sRoxanneMatchCallHeader } ,
[ MC_HEADER_BRAWLY ] = { . type5 = & sBrawlyMatchCallHeader } ,
[ MC_HEADER_WATTSON ] = { . type5 = & sWattsonMatchCallHeader } ,
[ MC_HEADER_FLANNERY ] = { . type5 = & sFlanneryMatchCallHeader } ,
[ MC_HEADER_WINONA ] = { . type5 = & sWinonaMatchCallHeader } ,
[ MC_HEADER_TATE_LIZA ] = { . type5 = & sTateLizaMatchCallHeader } ,
[ MC_HEADER_JUAN ] = { . type5 = & sJuanMatchCallHeader } ,
[ MC_HEADER_SIDNEY ] = { . type5 = & sSidneyMatchCallHeader } ,
[ MC_HEADER_PHOEBE ] = { . type5 = & sPhoebeMatchCallHeader } ,
[ MC_HEADER_GLACIA ] = { . type5 = & sGlaciaMatchCallHeader } ,
[ MC_HEADER_DRAKE ] = { . type5 = & sDrakeMatchCallHeader } ,
[ MC_HEADER_WALLACE ] = { . type5 = & sWallaceMatchCallHeader }
2019-01-03 02:07:47 +01:00
} ;
static bool32 ( * const sMatchCallGetFlagFuncs [ ] ) ( match_call_t ) = {
MatchCallGetFlag_Type0 ,
MatchCallGetFlag_Type1 ,
MatchCallGetFlag_Type2 ,
2019-08-02 19:47:30 +02:00
MatchCallGetFlag_Type4 ,
MatchCallGetFlag_Type3
2019-01-03 02:07:47 +01:00
} ;
2019-08-03 04:23:40 +02:00
static u8 ( * const sMatchCallGetMapSecFuncs [ ] ) ( match_call_t ) = {
2019-08-02 18:40:14 +02:00
MatchCallGetMapSec_Type0 ,
MatchCallGetMapSec_Type1 ,
MatchCallGetMapSec_Type2 ,
2019-08-02 19:47:30 +02:00
MatchCallGetMapSec_Type4 ,
MatchCallGetMapSec_Type3
2019-01-03 02:07:47 +01:00
} ;
static bool32 ( * const sMatchCall_IsRematchableFunctions [ ] ) ( match_call_t ) = {
MatchCall_IsRematchable_Type0 ,
MatchCall_IsRematchable_Type1 ,
MatchCall_IsRematchable_Type2 ,
2019-08-02 19:47:30 +02:00
MatchCall_IsRematchable_Type4 ,
MatchCall_IsRematchable_Type3
2019-01-03 02:07:47 +01:00
} ;
2019-08-09 22:28:22 +02:00
static bool32 ( * const sMatchCall_HasCheckPageFunctions [ ] ) ( match_call_t ) = {
MatchCall_HasCheckPage_Type0 ,
MatchCall_HasCheckPage_Type1 ,
MatchCall_HasCheckPage_Type2 ,
MatchCall_HasCheckPage_Type4 ,
MatchCall_HasCheckPage_Type3
2019-01-03 02:07:47 +01:00
} ;
static u32 ( * const sMatchCall_GetRematchTableIdxFunctions [ ] ) ( match_call_t ) = {
MatchCall_GetRematchTableIdx_Type0 ,
MatchCall_GetRematchTableIdx_Type1 ,
MatchCall_GetRematchTableIdx_Type2 ,
2019-08-02 19:47:30 +02:00
MatchCall_GetRematchTableIdx_Type4 ,
MatchCall_GetRematchTableIdx_Type3
2019-01-03 02:07:47 +01:00
} ;
static void ( * const sMatchCall_GetMessageFunctions [ ] ) ( match_call_t , u8 * ) = {
MatchCall_GetMessage_Type0 ,
MatchCall_GetMessage_Type1 ,
MatchCall_GetMessage_Type2 ,
2019-08-02 19:47:30 +02:00
MatchCall_GetMessage_Type4 ,
MatchCall_GetMessage_Type3
2019-01-03 02:07:47 +01:00
} ;
static void ( * const sMatchCall_GetNameAndDescFunctions [ ] ) ( match_call_t , const u8 * * , const u8 * * ) = {
MatchCall_GetNameAndDesc_Type0 ,
MatchCall_GetNameAndDesc_Type1 ,
MatchCall_GetNameAndDesc_Type2 ,
2019-08-02 19:47:30 +02:00
MatchCall_GetNameAndDesc_Type4 ,
MatchCall_GetNameAndDesc_Type3
2019-01-03 02:07:47 +01:00
} ;
2019-08-09 22:28:22 +02:00
static const struct MatchCallOverride sMatchCallCheckPageOverrides [ ] = {
{ MC_HEADER_STEVEN , FACILITY_CLASS_STEVEN , 0xFFFF , { gMatchCallStevenStrategyText , gMatchCall_StevenTrainersPokemonText , gMatchCall_StevenSelfIntroductionText_Line1_BeforeMeteorFallsBattle , gMatchCall_StevenSelfIntroductionText_Line2_BeforeMeteorFallsBattle } } , // STEVEN
{ MC_HEADER_STEVEN , FACILITY_CLASS_STEVEN , FLAG_DEFEATED_MOSSDEEP_GYM , { gMatchCallStevenStrategyText , gMatchCall_StevenTrainersPokemonText , gMatchCall_StevenSelfIntroductionText_Line1_AfterMeteorFallsBattle , gMatchCall_StevenSelfIntroductionText_Line2_AfterMeteorFallsBattle } } , // STEVEN
{ MC_HEADER_BRENDAN , FACILITY_CLASS_BRENDAN , 0xFFFF , { gMatchCall_BrendanStrategyText , gMatchCall_BrendanTrainersPokemonText , gMatchCall_BrendanSelfIntroductionText_Line1 , gMatchCall_BrendanSelfIntroductionText_Line2 } } , // Brendan
{ MC_HEADER_MAY , FACILITY_CLASS_MAY , 0xFFFF , { gMatchCall_MayStrategyText , gMatchCall_MayTrainersPokemonText , gMatchCall_MaySelfIntroductionText_Line1 , gMatchCall_MaySelfIntroductionText_Line2 } } // May
2019-01-03 02:07:47 +01:00
} ;
// .text
static u32 MatchCallGetFunctionIndex ( match_call_t matchCall )
{
switch ( matchCall . common - > type )
{
case 0 :
default :
return 0 ;
case 1 :
case 5 :
return 1 ;
case 2 :
return 2 ;
case 4 :
return 3 ;
case 3 :
return 4 ;
}
}
u32 GetTrainerIdxByRematchIdx ( u32 rematchIdx )
{
return gRematchTable [ rematchIdx ] . trainerIds [ 0 ] ;
}
s32 GetRematchIdxByTrainerIdx ( s32 trainerIdx )
{
s32 rematchIdx ;
for ( rematchIdx = 0 ; rematchIdx < REMATCH_TABLE_ENTRIES ; rematchIdx + + )
{
if ( gRematchTable [ rematchIdx ] . trainerIds [ 0 ] = = trainerIdx )
return rematchIdx ;
}
return - 1 ;
}
bool32 MatchCallFlagGetByIndex ( u32 idx )
{
match_call_t matchCall ;
u32 i ;
2019-04-02 06:59:01 +02:00
if ( idx > ARRAY_COUNT ( sMatchCallHeaders ) - 1 )
2019-01-03 02:07:47 +01:00
return FALSE ;
matchCall = sMatchCallHeaders [ idx ] ;
i = MatchCallGetFunctionIndex ( matchCall ) ;
return sMatchCallGetFlagFuncs [ i ] ( matchCall ) ;
}
static bool32 MatchCallGetFlag_Type0 ( match_call_t matchCall )
{
if ( matchCall . type0 - > flag = = 0xffff )
return TRUE ;
return FlagGet ( matchCall . type0 - > flag ) ;
}
static bool32 MatchCallGetFlag_Type1 ( match_call_t matchCall )
{
if ( matchCall . type1 - > flag = = 0xffff )
return TRUE ;
return FlagGet ( matchCall . type1 - > flag ) ;
}
static bool32 MatchCallGetFlag_Type2 ( match_call_t matchCall )
{
if ( matchCall . type2 - > flag = = 0xffff )
return TRUE ;
return FlagGet ( matchCall . type2 - > flag ) ;
}
2019-08-02 19:47:30 +02:00
static bool32 MatchCallGetFlag_Type4 ( match_call_t matchCall )
2019-01-03 02:07:47 +01:00
{
if ( matchCall . type4 - > gender ! = gSaveBlock2Ptr - > playerGender )
return FALSE ;
if ( matchCall . type4 - > flag = = 0xffff )
return TRUE ;
return FlagGet ( matchCall . type4 - > flag ) ;
}
2019-08-02 19:47:30 +02:00
static bool32 MatchCallGetFlag_Type3 ( match_call_t matchCall )
2019-01-03 02:07:47 +01:00
{
return FlagGet ( matchCall . type3 - > flag ) ;
}
2019-08-02 18:43:49 +02:00
u8 MatchCallMapSecGetByIndex ( u32 idx )
2019-01-03 02:07:47 +01:00
{
match_call_t matchCall ;
u32 i ;
2019-04-02 06:59:01 +02:00
if ( idx > ARRAY_COUNT ( sMatchCallHeaders ) - 1 )
2019-01-03 02:07:47 +01:00
return 0 ;
matchCall = sMatchCallHeaders [ idx ] ;
i = MatchCallGetFunctionIndex ( matchCall ) ;
2019-08-03 04:23:40 +02:00
return sMatchCallGetMapSecFuncs [ i ] ( matchCall ) ;
2019-01-03 02:07:47 +01:00
}
2019-08-02 18:40:14 +02:00
static u8 MatchCallGetMapSec_Type0 ( match_call_t matchCall )
2019-01-03 02:07:47 +01:00
{
2019-08-02 16:52:40 +02:00
return matchCall . type0 - > mapSec ;
2019-01-03 02:07:47 +01:00
}
2019-08-02 18:40:14 +02:00
static u8 MatchCallGetMapSec_Type1 ( match_call_t matchCall )
2019-01-03 02:07:47 +01:00
{
2019-08-02 16:52:40 +02:00
return matchCall . type1 - > mapSec ;
2019-01-03 02:07:47 +01:00
}
2019-08-02 18:40:14 +02:00
static u8 MatchCallGetMapSec_Type2 ( match_call_t matchCall )
2019-01-03 02:07:47 +01:00
{
s32 i ;
for ( i = 0 ; matchCall . type2 - > v10 [ i ] . flag ! = 0xffff ; i + + )
{
if ( ! FlagGet ( matchCall . type2 - > v10 [ i ] . flag ) )
break ;
}
2019-08-02 18:30:00 +02:00
return matchCall . type2 - > v10 [ i ] . mapSec ;
2019-01-03 02:07:47 +01:00
}
2019-08-02 19:47:30 +02:00
static u8 MatchCallGetMapSec_Type4 ( match_call_t matchCall )
2019-01-03 02:07:47 +01:00
{
2019-08-02 18:30:00 +02:00
return MAPSEC_NONE ;
2019-01-03 02:07:47 +01:00
}
2019-08-02 19:47:30 +02:00
static u8 MatchCallGetMapSec_Type3 ( match_call_t matchCall )
2019-01-03 02:07:47 +01:00
{
2019-08-02 18:30:00 +02:00
return MAPSEC_NONE ;
2019-01-03 02:07:47 +01:00
}
bool32 MatchCall_IsRematchable ( u32 idx )
{
match_call_t matchCall ;
u32 i ;
2019-04-02 06:59:01 +02:00
if ( idx > ARRAY_COUNT ( sMatchCallHeaders ) - 1 )
2019-01-03 02:07:47 +01:00
return 0 ;
matchCall = sMatchCallHeaders [ idx ] ;
i = MatchCallGetFunctionIndex ( matchCall ) ;
return sMatchCall_IsRematchableFunctions [ i ] ( matchCall ) ;
}
static bool32 MatchCall_IsRematchable_Type0 ( match_call_t matchCall )
{
return FALSE ;
}
static bool32 MatchCall_IsRematchable_Type1 ( match_call_t matchCall )
{
if ( matchCall . type1 - > rematchTableIdx > = REMATCH_ELITE_FOUR_ENTRIES )
return FALSE ;
return gSaveBlock1Ptr - > trainerRematches [ matchCall . type1 - > rematchTableIdx ] ? TRUE : FALSE ;
}
static bool32 MatchCall_IsRematchable_Type2 ( match_call_t matchCall )
{
return gSaveBlock1Ptr - > trainerRematches [ matchCall . type2 - > rematchTableIdx ] ? TRUE : FALSE ;
}
2019-08-02 19:47:30 +02:00
static bool32 MatchCall_IsRematchable_Type4 ( match_call_t matchCall )
2019-01-03 02:07:47 +01:00
{
return FALSE ;
}
2019-08-02 19:47:30 +02:00
static bool32 MatchCall_IsRematchable_Type3 ( match_call_t matchCall )
2019-01-03 02:07:47 +01:00
{
return FALSE ;
}
2019-08-09 22:28:22 +02:00
bool32 MatchCall_HasCheckPage ( u32 idx )
2019-01-03 02:07:47 +01:00
{
match_call_t matchCall ;
u32 i ;
2019-04-02 06:59:01 +02:00
if ( idx > ARRAY_COUNT ( sMatchCallHeaders ) - 1 )
2019-01-03 02:07:47 +01:00
return FALSE ;
matchCall = sMatchCallHeaders [ idx ] ;
i = MatchCallGetFunctionIndex ( matchCall ) ;
2019-08-09 22:28:22 +02:00
if ( sMatchCall_HasCheckPageFunctions [ i ] ( matchCall ) )
2019-01-03 02:07:47 +01:00
return TRUE ;
2019-04-02 06:59:01 +02:00
for ( i = 0 ; i < ARRAY_COUNT ( sMatchCallCheckPageOverrides ) ; i + + )
2019-01-03 02:07:47 +01:00
{
if ( sMatchCallCheckPageOverrides [ i ] . idx = = idx )
return TRUE ;
}
return FALSE ;
}
2019-08-09 22:28:22 +02:00
static bool32 MatchCall_HasCheckPage_Type0 ( match_call_t matchCall )
2019-01-03 02:07:47 +01:00
{
return FALSE ;
}
2019-08-09 22:28:22 +02:00
static bool32 MatchCall_HasCheckPage_Type1 ( match_call_t matchCall )
2019-01-03 02:07:47 +01:00
{
return TRUE ;
}
2019-08-09 22:28:22 +02:00
static bool32 MatchCall_HasCheckPage_Type2 ( match_call_t matchCall )
2019-01-03 02:07:47 +01:00
{
return TRUE ;
}
2019-08-09 22:28:22 +02:00
static bool32 MatchCall_HasCheckPage_Type4 ( match_call_t matchCall )
2019-01-03 02:07:47 +01:00
{
return FALSE ;
}
2019-08-09 22:28:22 +02:00
static bool32 MatchCall_HasCheckPage_Type3 ( match_call_t matchCall )
2019-01-03 02:07:47 +01:00
{
return FALSE ;
}
u32 MatchCall_GetRematchTableIdx ( u32 idx )
{
match_call_t matchCall ;
u32 i ;
2019-04-02 06:59:01 +02:00
if ( idx > ARRAY_COUNT ( sMatchCallHeaders ) - 1 )
2019-01-03 02:07:47 +01:00
return REMATCH_TABLE_ENTRIES ;
matchCall = sMatchCallHeaders [ idx ] ;
i = MatchCallGetFunctionIndex ( matchCall ) ;
return sMatchCall_GetRematchTableIdxFunctions [ i ] ( matchCall ) ;
}
static u32 MatchCall_GetRematchTableIdx_Type0 ( match_call_t matchCall )
{
return REMATCH_TABLE_ENTRIES ;
}
static u32 MatchCall_GetRematchTableIdx_Type1 ( match_call_t matchCall )
{
return matchCall . type1 - > rematchTableIdx ;
}
static u32 MatchCall_GetRematchTableIdx_Type2 ( match_call_t matchCall )
{
return matchCall . type2 - > rematchTableIdx ;
}
2019-08-02 19:47:30 +02:00
static u32 MatchCall_GetRematchTableIdx_Type4 ( match_call_t matchCall )
2019-01-03 02:07:47 +01:00
{
return REMATCH_TABLE_ENTRIES ;
}
2019-08-02 19:47:30 +02:00
static u32 MatchCall_GetRematchTableIdx_Type3 ( match_call_t matchCall )
2019-01-03 02:07:47 +01:00
{
return REMATCH_TABLE_ENTRIES ;
}
void MatchCall_GetMessage ( u32 idx , u8 * dest )
{
match_call_t matchCall ;
u32 i ;
2019-04-02 06:59:01 +02:00
if ( idx > ARRAY_COUNT ( sMatchCallHeaders ) - 1 )
2019-01-03 02:07:47 +01:00
return ;
matchCall = sMatchCallHeaders [ idx ] ;
i = MatchCallGetFunctionIndex ( matchCall ) ;
sMatchCall_GetMessageFunctions [ i ] ( matchCall , dest ) ;
}
static void MatchCall_GetMessage_Type0 ( match_call_t matchCall , u8 * dest )
{
sub_81D1920 ( matchCall . type0 - > textData , dest ) ;
}
static void MatchCall_GetMessage_Type1 ( match_call_t matchCall , u8 * dest )
{
if ( matchCall . common - > type ! = 5 )
2019-04-02 09:22:07 +02:00
sub_81D1920 ( matchCall . type1 - > textData , dest ) ;
2019-01-03 02:07:47 +01:00
else
2019-04-02 09:22:07 +02:00
sub_81D199C ( matchCall . type5 - > textData , matchCall . type5 - > rematchTableIdx , dest ) ;
2019-01-03 02:07:47 +01:00
}
static void MatchCall_GetMessage_Type2 ( match_call_t matchCall , u8 * dest )
{
sub_81D1920 ( matchCall . type2 - > textData , dest ) ;
}
2019-08-02 19:47:30 +02:00
static void MatchCall_GetMessage_Type4 ( match_call_t matchCall , u8 * dest )
2019-01-03 02:07:47 +01:00
{
sub_81D1920 ( matchCall . type4 - > textData , dest ) ;
}
2019-08-02 19:47:30 +02:00
static void MatchCall_GetMessage_Type3 ( match_call_t matchCall , u8 * dest )
2019-01-03 02:07:47 +01:00
{
sub_8197080 ( dest ) ;
}
2019-04-14 20:21:06 +02:00
static void sub_81D1920 ( const match_call_text_data_t * sub0 , u8 * dest )
2019-01-03 02:07:47 +01:00
{
u32 i ;
for ( i = 0 ; sub0 [ i ] . text ! = NULL ; i + + )
;
if ( i )
i - - ;
while ( i )
{
if ( sub0 [ i ] . flag ! = 0xffff & & FlagGet ( sub0 [ i ] . flag ) = = TRUE )
break ;
i - - ;
}
if ( sub0 [ i ] . flag2 ! = 0xffff )
FlagSet ( sub0 [ i ] . flag2 ) ;
StringExpandPlaceholders ( dest , sub0 [ i ] . text ) ;
}
static void sub_81D199C ( const match_call_text_data_t * sub0 , u16 idx , u8 * dest )
{
u32 i ;
for ( i = 0 ; sub0 [ i ] . text ! = NULL ; i + + )
{
if ( sub0 [ i ] . flag = = 0xfffe )
break ;
2019-04-17 01:15:03 +02:00
if ( sub0 [ i ] . flag ! = 0xffff & & ! FlagGet ( sub0 [ i ] . flag ) )
2019-01-03 02:07:47 +01:00
break ;
}
if ( sub0 [ i ] . flag ! = 0xfffe )
{
if ( i )
i - - ;
if ( sub0 [ i ] . flag2 ! = 0xffff )
FlagSet ( sub0 [ i ] . flag2 ) ;
StringExpandPlaceholders ( dest , sub0 [ i ] . text ) ;
}
else
{
2019-04-17 01:15:03 +02:00
if ( FlagGet ( FLAG_SYS_GAME_CLEAR ) )
{
do
{
if ( gSaveBlock1Ptr - > trainerRematches [ idx ] )
i + = 2 ;
else if ( CountBattledRematchTeams ( idx ) > = 2 )
i + = 3 ;
else
i + + ;
} while ( 0 ) ;
}
2019-01-03 02:07:47 +01:00
StringExpandPlaceholders ( dest , sub0 [ i ] . text ) ;
}
}
void sub_81D1A78 ( u32 idx , const u8 * * desc , const u8 * * name )
{
match_call_t matchCall ;
u32 i ;
2019-04-02 06:59:01 +02:00
if ( idx > ARRAY_COUNT ( sMatchCallHeaders ) - 1 )
2019-01-03 02:07:47 +01:00
return ;
matchCall = sMatchCallHeaders [ idx ] ;
i = MatchCallGetFunctionIndex ( matchCall ) ;
sMatchCall_GetNameAndDescFunctions [ i ] ( matchCall , desc , name ) ;
}
static void MatchCall_GetNameAndDesc_Type0 ( match_call_t matchCall , const u8 * * desc , const u8 * * name )
{
* desc = matchCall . type0 - > desc ;
* name = matchCall . type0 - > name ;
}
static void MatchCall_GetNameAndDesc_Type1 ( match_call_t matchCall , const u8 * * desc , const u8 * * name )
{
match_call_t _matchCall = matchCall ;
if ( _matchCall . type1 - > name = = NULL )
MatchCall_GetNameAndDescByRematchIdx ( _matchCall . type1 - > rematchTableIdx , desc , name ) ;
else
* name = _matchCall . type1 - > name ;
* desc = _matchCall . type1 - > desc ;
}
static void MatchCall_GetNameAndDesc_Type2 ( match_call_t matchCall , const u8 * * desc , const u8 * * name )
{
MatchCall_GetNameAndDescByRematchIdx ( matchCall . type2 - > rematchTableIdx , desc , name ) ;
* desc = matchCall . type2 - > desc ;
}
2019-08-02 19:47:30 +02:00
static void MatchCall_GetNameAndDesc_Type4 ( match_call_t matchCall , const u8 * * desc , const u8 * * name )
2019-01-03 02:07:47 +01:00
{
* desc = matchCall . type4 - > desc ;
* name = matchCall . type4 - > name ;
}
2019-08-02 19:47:30 +02:00
static void MatchCall_GetNameAndDesc_Type3 ( match_call_t matchCall , const u8 * * desc , const u8 * * name )
2019-01-03 02:07:47 +01:00
{
* desc = matchCall . type3 - > desc ;
* name = matchCall . type3 - > name ;
}
static void MatchCall_GetNameAndDescByRematchIdx ( u32 idx , const u8 * * desc , const u8 * * name )
{
const struct Trainer * trainer = gTrainers + GetTrainerIdxByRematchIdx ( idx ) ;
* desc = gTrainerClassNames [ trainer - > trainerClass ] ;
* name = trainer - > trainerName ;
}
2019-08-09 22:28:22 +02:00
const u8 * MatchCall_GetOverrideFlavorText ( u32 idx , u32 offset )
2019-01-03 02:07:47 +01:00
{
u32 i ;
2019-04-02 06:59:01 +02:00
for ( i = 0 ; i < ARRAY_COUNT ( sMatchCallCheckPageOverrides ) ; i + + )
2019-01-03 02:07:47 +01:00
{
if ( sMatchCallCheckPageOverrides [ i ] . idx = = idx )
{
2019-06-30 17:14:41 +02:00
while ( 1 )
2019-01-03 02:07:47 +01:00
{
2019-06-30 17:14:41 +02:00
if ( i + 1 > = ARRAY_COUNT ( sMatchCallCheckPageOverrides ) )
break ;
if ( sMatchCallCheckPageOverrides [ i + 1 ] . idx ! = idx )
break ;
2019-08-09 22:28:22 +02:00
if ( ! FlagGet ( sMatchCallCheckPageOverrides [ i + 1 ] . flag ) )
2019-01-03 02:07:47 +01:00
break ;
2019-06-30 17:14:41 +02:00
i + + ;
2019-01-03 02:07:47 +01:00
}
2019-08-09 22:28:22 +02:00
return sMatchCallCheckPageOverrides [ i ] . flavorTexts [ offset ] ;
2019-01-03 02:07:47 +01:00
}
}
return NULL ;
}
2019-08-09 22:28:22 +02:00
int MatchCall_GetOverrideFacilityClass ( u32 idx )
2019-01-03 02:07:47 +01:00
{
u32 i ;
2019-04-02 06:59:01 +02:00
for ( i = 0 ; i < ARRAY_COUNT ( sMatchCallCheckPageOverrides ) ; i + + )
2019-01-03 02:07:47 +01:00
{
if ( sMatchCallCheckPageOverrides [ i ] . idx = = idx )
2019-08-09 22:28:22 +02:00
return sMatchCallCheckPageOverrides [ i ] . facilityClass ;
2019-01-03 02:07:47 +01:00
}
return - 1 ;
}
bool32 sub_81D1BF8 ( u32 idx )
{
2019-04-14 20:21:06 +02:00
int i ;
2019-01-03 02:07:47 +01:00
2019-04-14 20:21:06 +02:00
for ( i = 0 ; i < ( int ) ARRAY_COUNT ( sMatchCallHeaders ) ; i + + )
2019-01-03 02:07:47 +01:00
{
u32 r0 = MatchCall_GetRematchTableIdx ( i ) ;
if ( r0 ! = REMATCH_TABLE_ENTRIES & & r0 = = idx )
return TRUE ;
}
return FALSE ;
}
void SetMatchCallRegisteredFlag ( void )
{
2019-04-14 20:21:06 +02:00
int r0 = GetRematchIdxByTrainerIdx ( gSpecialVar_0x8004 ) ;
2019-01-03 02:07:47 +01:00
if ( r0 > = 0 )
FlagSet ( FLAG_MATCH_CALL_REGISTERED + r0 ) ;
}