code:
// data/text/apprentice.inc
extern const u8 gText_ApprenticePleaseTeach0[];
extern const u8 gText_ApprenticePleaseTeach1[];
extern const u8 gText_ApprenticePleaseTeach2[];
extern const u8 gText_ApprenticePleaseTeach3[];
extern const u8 gText_ApprenticePleaseTeach4[];
extern const u8 gText_ApprenticePleaseTeach5[];
extern const u8 gText_ApprenticePleaseTeach6[];
extern const u8 gText_ApprenticePleaseTeach7[];
extern const u8 gText_ApprenticePleaseTeach8[];
extern const u8 gText_ApprenticePleaseTeach9[];
extern const u8 gText_ApprenticePleaseTeach10[];
extern const u8 gText_ApprenticePleaseTeach11[];
extern const u8 gText_ApprenticePleaseTeach12[];
extern const u8 gText_ApprenticePleaseTeach13[];
extern const u8 gText_ApprenticePleaseTeach14[];
extern const u8 gText_ApprenticePleaseTeach15[];
extern const u8 gText_ApprenticeRejectTeaching0[];
extern const u8 gText_ApprenticeRejectTeaching1[];
extern const u8 gText_ApprenticeRejectTeaching2[];
extern const u8 gText_ApprenticeRejectTeaching3[];
extern const u8 gText_ApprenticeRejectTeaching4[];
extern const u8 gText_ApprenticeRejectTeaching5[];
extern const u8 gText_ApprenticeRejectTeaching6[];
extern const u8 gText_ApprenticeRejectTeaching7[];
extern const u8 gText_ApprenticeRejectTeaching8[];
extern const u8 gText_ApprenticeRejectTeaching9[];
extern const u8 gText_ApprenticeRejectTeaching10[];
extern const u8 gText_ApprenticeRejectTeaching11[];
extern const u8 gText_ApprenticeRejectTeaching12[];
extern const u8 gText_ApprenticeRejectTeaching13[];
extern const u8 gText_ApprenticeRejectTeaching14[];
extern const u8 gText_ApprenticeRejectTeaching15[];
extern const u8 gText_ApprenticeWhichLevelMode0[];
extern const u8 gText_ApprenticeWhichLevelMode1[];
extern const u8 gText_ApprenticeWhichLevelMode2[];
extern const u8 gText_ApprenticeWhichLevelMode3[];
extern const u8 gText_ApprenticeWhichLevelMode4[];
extern const u8 gText_ApprenticeWhichLevelMode5[];
extern const u8 gText_ApprenticeWhichLevelMode6[];
extern const u8 gText_ApprenticeWhichLevelMode7[];
extern const u8 gText_ApprenticeWhichLevelMode8[];
extern const u8 gText_ApprenticeWhichLevelMode9[];
extern const u8 gText_ApprenticeWhichLevelMode10[];
extern const u8 gText_ApprenticeWhichLevelMode11[];
extern const u8 gText_ApprenticeWhichLevelMode12[];
extern const u8 gText_ApprenticeWhichLevelMode13[];
extern const u8 gText_ApprenticeWhichLevelMode14[];
extern const u8 gText_ApprenticeWhichLevelMode15[];
extern const u8 gText_ApprenticeLevelModeThanks0[];
extern const u8 gText_ApprenticeLevelModeThanks1[];
extern const u8 gText_ApprenticeLevelModeThanks2[];
extern const u8 gText_ApprenticeLevelModeThanks3[];
extern const u8 gText_ApprenticeLevelModeThanks4[];
extern const u8 gText_ApprenticeLevelModeThanks5[];
extern const u8 gText_ApprenticeLevelModeThanks6[];
extern const u8 gText_ApprenticeLevelModeThanks7[];
extern const u8 gText_ApprenticeLevelModeThanks8[];
extern const u8 gText_ApprenticeLevelModeThanks9[];
extern const u8 gText_ApprenticeLevelModeThanks10[];
extern const u8 gText_ApprenticeLevelModeThanks11[];
extern const u8 gText_ApprenticeLevelModeThanks12[];
extern const u8 gText_ApprenticeLevelModeThanks13[];
extern const u8 gText_ApprenticeLevelModeThanks14[];
extern const u8 gText_ApprenticeLevelModeThanks15[];

extern const u8 gText_ApprenticeWhichMon0[];
extern const u8 gText_ApprenticeWhichMon1[];
extern const u8 gText_ApprenticeWhichMon2[];
extern const u8 gText_ApprenticeWhichMon3[];
extern const u8 gText_ApprenticeWhichMon4[];
extern const u8 gText_ApprenticeWhichMon5[];
extern const u8 gText_ApprenticeWhichMon6[];
extern const u8 gText_ApprenticeWhichMon7[];
extern const u8 gText_ApprenticeWhichMon8[];
extern const u8 gText_ApprenticeWhichMon9[];
extern const u8 gText_ApprenticeWhichMon10[];
extern const u8 gText_ApprenticeWhichMon11[];
extern const u8 gText_ApprenticeWhichMon12[];
extern const u8 gText_ApprenticeWhichMon13[];
extern const u8 gText_ApprenticeWhichMon14[];
extern const u8 gText_ApprenticeWhichMon15[];
extern const u8 gText_ApprenticeMonThanks0[];
extern const u8 gText_ApprenticeMonThanks1[];
extern const u8 gText_ApprenticeMonThanks2[];
extern const u8 gText_ApprenticeMonThanks3[];
extern const u8 gText_ApprenticeMonThanks4[];
extern const u8 gText_ApprenticeMonThanks5[];
extern const u8 gText_ApprenticeMonThanks6[];
extern const u8 gText_ApprenticeMonThanks7[];
extern const u8 gText_ApprenticeMonThanks8[];
extern const u8 gText_ApprenticeMonThanks9[];
extern const u8 gText_ApprenticeMonThanks10[];
extern const u8 gText_ApprenticeMonThanks11[];
extern const u8 gText_ApprenticeMonThanks12[];
extern const u8 gText_ApprenticeMonThanks13[];
extern const u8 gText_ApprenticeMonThanks14[];
extern const u8 gText_ApprenticeMonThanks15[];

extern const u8 gText_ApprenticeWhatHeldItem0[];
extern const u8 gText_ApprenticeWhatHeldItem1[];
extern const u8 gText_ApprenticeWhatHeldItem2[];
extern const u8 gText_ApprenticeWhatHeldItem3[];
extern const u8 gText_ApprenticeWhatHeldItem4[];
extern const u8 gText_ApprenticeWhatHeldItem5[];
extern const u8 gText_ApprenticeWhatHeldItem6[];
extern const u8 gText_ApprenticeWhatHeldItem7[];
extern const u8 gText_ApprenticeWhatHeldItem8[];
extern const u8 gText_ApprenticeWhatHeldItem9[];
extern const u8 gText_ApprenticeWhatHeldItem10[];
extern const u8 gText_ApprenticeWhatHeldItem11[];
extern const u8 gText_ApprenticeWhatHeldItem12[];
extern const u8 gText_ApprenticeWhatHeldItem13[];
extern const u8 gText_ApprenticeWhatHeldItem14[];
extern const u8 gText_ApprenticeWhatHeldItem15[];
extern const u8 gText_ApprenticeHoldNothing0[];
extern const u8 gText_ApprenticeHoldNothing1[];
extern const u8 gText_ApprenticeHoldNothing2[];
extern const u8 gText_ApprenticeHoldNothing3[];
extern const u8 gText_ApprenticeHoldNothing4[];
extern const u8 gText_ApprenticeHoldNothing5[];
extern const u8 gText_ApprenticeHoldNothing6[];
extern const u8 gText_ApprenticeHoldNothing7[];
extern const u8 gText_ApprenticeHoldNothing8[];
extern const u8 gText_ApprenticeHoldNothing9[];
extern const u8 gText_ApprenticeHoldNothing10[];
extern const u8 gText_ApprenticeHoldNothing11[];
extern const u8 gText_ApprenticeHoldNothing12[];
extern const u8 gText_ApprenticeHoldNothing13[];
extern const u8 gText_ApprenticeHoldNothing14[];
extern const u8 gText_ApprenticeHoldNothing15[];
extern const u8 gText_ApprenticeThanksNoHeldItem0[];
extern const u8 gText_ApprenticeThanksNoHeldItem1[];
extern const u8 gText_ApprenticeThanksNoHeldItem2[];
extern const u8 gText_ApprenticeThanksNoHeldItem3[];
extern const u8 gText_ApprenticeThanksNoHeldItem4[];
extern const u8 gText_ApprenticeThanksNoHeldItem5[];
extern const u8 gText_ApprenticeThanksNoHeldItem6[];
extern const u8 gText_ApprenticeThanksNoHeldItem7[];
extern const u8 gText_ApprenticeThanksNoHeldItem8[];
extern const u8 gText_ApprenticeThanksNoHeldItem9[];
extern const u8 gText_ApprenticeThanksNoHeldItem10[];
extern const u8 gText_ApprenticeThanksNoHeldItem11[];
extern const u8 gText_ApprenticeThanksNoHeldItem12[];
extern const u8 gText_ApprenticeThanksNoHeldItem13[];
extern const u8 gText_ApprenticeThanksNoHeldItem14[];
extern const u8 gText_ApprenticeThanksNoHeldItem15[];
extern const u8 gText_ApprenticeThanksHeldItem0[];
extern const u8 gText_ApprenticeThanksHeldItem1[];
extern const u8 gText_ApprenticeThanksHeldItem2[];
extern const u8 gText_ApprenticeThanksHeldItem3[];
extern const u8 gText_ApprenticeThanksHeldItem4[];
extern const u8 gText_ApprenticeThanksHeldItem5[];
extern const u8 gText_ApprenticeThanksHeldItem6[];
extern const u8 gText_ApprenticeThanksHeldItem7[];
extern const u8 gText_ApprenticeThanksHeldItem8[];
extern const u8 gText_ApprenticeThanksHeldItem9[];
extern const u8 gText_ApprenticeThanksHeldItem10[];
extern const u8 gText_ApprenticeThanksHeldItem11[];
extern const u8 gText_ApprenticeThanksHeldItem12[];
extern const u8 gText_ApprenticeThanksHeldItem13[];
extern const u8 gText_ApprenticeThanksHeldItem14[];
extern const u8 gText_ApprenticeThanksHeldItem15[];
extern const u8 gText_ApprenticeItemAlreadyRecommended0[];
extern const u8 gText_ApprenticeItemAlreadyRecommended1[];
extern const u8 gText_ApprenticeItemAlreadyRecommended2[];
extern const u8 gText_ApprenticeItemAlreadyRecommended3[];
extern const u8 gText_ApprenticeItemAlreadyRecommended4[];
extern const u8 gText_ApprenticeItemAlreadyRecommended5[];
extern const u8 gText_ApprenticeItemAlreadyRecommended6[];
extern const u8 gText_ApprenticeItemAlreadyRecommended7[];
extern const u8 gText_ApprenticeItemAlreadyRecommended8[];
extern const u8 gText_ApprenticeItemAlreadyRecommended9[];
extern const u8 gText_ApprenticeItemAlreadyRecommended10[];
extern const u8 gText_ApprenticeItemAlreadyRecommended11[];
extern const u8 gText_ApprenticeItemAlreadyRecommended12[];
extern const u8 gText_ApprenticeItemAlreadyRecommended13[];
extern const u8 gText_ApprenticeItemAlreadyRecommended14[];
extern const u8 gText_ApprenticeItemAlreadyRecommended15[];

extern const u8 gText_ApprenticeWhichMove0[];
extern const u8 gText_ApprenticeWhichMove1[];
extern const u8 gText_ApprenticeWhichMove2[];
extern const u8 gText_ApprenticeWhichMove3[];
extern const u8 gText_ApprenticeWhichMove4[];
extern const u8 gText_ApprenticeWhichMove5[];
extern const u8 gText_ApprenticeWhichMove6[];
extern const u8 gText_ApprenticeWhichMove7[];
extern const u8 gText_ApprenticeWhichMove8[];
extern const u8 gText_ApprenticeWhichMove9[];
extern const u8 gText_ApprenticeWhichMove10[];
extern const u8 gText_ApprenticeWhichMove11[];
extern const u8 gText_ApprenticeWhichMove12[];
extern const u8 gText_ApprenticeWhichMove13[];
extern const u8 gText_ApprenticeWhichMove14[];
extern const u8 gText_ApprenticeWhichMove15[];
extern const u8 gText_ApprenticeMoveThanks0[];
extern const u8 gText_ApprenticeMoveThanks1[];
extern const u8 gText_ApprenticeMoveThanks2[];
extern const u8 gText_ApprenticeMoveThanks3[];
extern const u8 gText_ApprenticeMoveThanks4[];
extern const u8 gText_ApprenticeMoveThanks5[];
extern const u8 gText_ApprenticeMoveThanks6[];
extern const u8 gText_ApprenticeMoveThanks7[];
extern const u8 gText_ApprenticeMoveThanks8[];
extern const u8 gText_ApprenticeMoveThanks9[];
extern const u8 gText_ApprenticeMoveThanks10[];
extern const u8 gText_ApprenticeMoveThanks11[];
extern const u8 gText_ApprenticeMoveThanks12[];
extern const u8 gText_ApprenticeMoveThanks13[];
extern const u8 gText_ApprenticeMoveThanks14[];
extern const u8 gText_ApprenticeMoveThanks15[];

extern const u8 gText_ApprenticeWhichMonFirst0[];
extern const u8 gText_ApprenticeWhichMonFirst1[];
extern const u8 gText_ApprenticeWhichMonFirst2[];
extern const u8 gText_ApprenticeWhichMonFirst3[];
extern const u8 gText_ApprenticeWhichMonFirst4[];
extern const u8 gText_ApprenticeWhichMonFirst5[];
extern const u8 gText_ApprenticeWhichMonFirst6[];
extern const u8 gText_ApprenticeWhichMonFirst7[];
extern const u8 gText_ApprenticeWhichMonFirst8[];
extern const u8 gText_ApprenticeWhichMonFirst9[];
extern const u8 gText_ApprenticeWhichMonFirst10[];
extern const u8 gText_ApprenticeWhichMonFirst11[];
extern const u8 gText_ApprenticeWhichMonFirst12[];
extern const u8 gText_ApprenticeWhichMonFirst13[];
extern const u8 gText_ApprenticeWhichMonFirst14[];
extern const u8 gText_ApprenticeWhichMonFirst15[];
extern const u8 gText_ApprenticeMonFirstThanks0[];
extern const u8 gText_ApprenticeMonFirstThanks1[];
extern const u8 gText_ApprenticeMonFirstThanks2[];
extern const u8 gText_ApprenticeMonFirstThanks3[];
extern const u8 gText_ApprenticeMonFirstThanks4[];
extern const u8 gText_ApprenticeMonFirstThanks5[];
extern const u8 gText_ApprenticeMonFirstThanks6[];
extern const u8 gText_ApprenticeMonFirstThanks7[];
extern const u8 gText_ApprenticeMonFirstThanks8[];
extern const u8 gText_ApprenticeMonFirstThanks9[];
extern const u8 gText_ApprenticeMonFirstThanks10[];
extern const u8 gText_ApprenticeMonFirstThanks11[];
extern const u8 gText_ApprenticeMonFirstThanks12[];
extern const u8 gText_ApprenticeMonFirstThanks13[];
extern const u8 gText_ApprenticeMonFirstThanks14[];
extern const u8 gText_ApprenticeMonFirstThanks15[];

extern const u8 gText_ApprenticePickWinSpeech0[];
extern const u8 gText_ApprenticePickWinSpeech1[];
extern const u8 gText_ApprenticePickWinSpeech2[];
extern const u8 gText_ApprenticePickWinSpeech3[];
extern const u8 gText_ApprenticePickWinSpeech4[];
extern const u8 gText_ApprenticePickWinSpeech5[];
extern const u8 gText_ApprenticePickWinSpeech6[];
extern const u8 gText_ApprenticePickWinSpeech7[];
extern const u8 gText_ApprenticePickWinSpeech8[];
extern const u8 gText_ApprenticePickWinSpeech9[];
extern const u8 gText_ApprenticePickWinSpeech10[];
extern const u8 gText_ApprenticePickWinSpeech11[];
extern const u8 gText_ApprenticePickWinSpeech12[];
extern const u8 gText_ApprenticePickWinSpeech13[];
extern const u8 gText_ApprenticePickWinSpeech14[];
extern const u8 gText_ApprenticePickWinSpeech15[];
extern const u8 gText_ApprenticeWinSpeechThanks0[];
extern const u8 gText_ApprenticeWinSpeechThanks1[];
extern const u8 gText_ApprenticeWinSpeechThanks2[];
extern const u8 gText_ApprenticeWinSpeechThanks3[];
extern const u8 gText_ApprenticeWinSpeechThanks4[];
extern const u8 gText_ApprenticeWinSpeechThanks5[];
extern const u8 gText_ApprenticeWinSpeechThanks6[];
extern const u8 gText_ApprenticeWinSpeechThanks7[];
extern const u8 gText_ApprenticeWinSpeechThanks8[];
extern const u8 gText_ApprenticeWinSpeechThanks9[];
extern const u8 gText_ApprenticeWinSpeechThanks10[];
extern const u8 gText_ApprenticeWinSpeechThanks11[];
extern const u8 gText_ApprenticeWinSpeechThanks12[];
extern const u8 gText_ApprenticeWinSpeechThanks13[];
extern const u8 gText_ApprenticeWinSpeechThanks14[];
extern const u8 gText_ApprenticeWinSpeechThanks15[];

extern const u8 gText_ApprenticeChallenge0[];
extern const u8 gText_ApprenticeChallenge1[];
extern const u8 gText_ApprenticeChallenge2[];
extern const u8 gText_ApprenticeChallenge3[];
extern const u8 gText_ApprenticeChallenge4[];
extern const u8 gText_ApprenticeChallenge5[];
extern const u8 gText_ApprenticeChallenge6[];
extern const u8 gText_ApprenticeChallenge7[];
extern const u8 gText_ApprenticeChallenge8[];
extern const u8 gText_ApprenticeChallenge9[];
extern const u8 gText_ApprenticeChallenge10[];
extern const u8 gText_ApprenticeChallenge11[];
extern const u8 gText_ApprenticeChallenge12[];
extern const u8 gText_ApprenticeChallenge13[];
extern const u8 gText_ApprenticeChallenge14[];
extern const u8 gText_ApprenticeChallenge15[];

const struct ApprenticeTrainer gApprentices[NUM_APPRENTICES] =
{
    {
        .name = {_("サダヒロ"), _("ALANN"), _("ALAIN"), _("ADELFO"), _("CLAUS"), _("TEO")},
        .otId = 0xBDC9,
        .facilityClass = FACILITY_CLASS_BUG_CATCHER,
        .species = {SPECIES_BEAUTIFLY, SPECIES_DUSTOX, SPECIES_ILLUMISE, SPECIES_SHIFTRY, SPECIES_BRELOOM, SPECIES_NINJASK, SPECIES_SHEDINJA, SPECIES_PINSIR, SPECIES_HERACROSS, SPECIES_VOLBEAT},
        .id = 0,
        .speechLost = {EC_WORD_NO, EC_WORD_MISTAKE, EC_WORD_EXCL, EC_WORD_I, EC_WORD_LOST, EC_WORD_BADLY},
    },
    {
        .name = {_("ヒロオ"), _("LIONEL"), _("LIONEL"), _("CAIO"), _("LUDWIG"), _("LEO")},
        .otId = 0xCF09,
        .facilityClass = FACILITY_CLASS_YOUNGSTER,
        .species = {SPECIES_SWELLOW, SPECIES_SWALOT, SPECIES_SHUCKLE, SPECIES_MANECTRIC, SPECIES_TORKOAL, SPECIES_HARIYAMA, SPECIES_MIGHTYENA, SPECIES_LUDICOLO, SPECIES_CRAWDAUNT, SPECIES_WHISCASH},
        .id = 1,
        .speechLost = {EC_WORD_OKAY, EC_WORD_I, EC_WORD_LOST, EC_WORD_YOU_RE, EC_WORD_A, EC_WORD_MASTER},
    },
    {
        .name = {_("ケイジ"), _("SONNY"), _("HERVE"), _("FEDRO"), _("WENZEL"), _("SANTI")},
        .otId = 0x2E34,
        .facilityClass = FACILITY_CLASS_SCHOOL_KID_M,
        .species = {SPECIES_LINOONE, SPECIES_MIGHTYENA, SPECIES_WHISCASH, SPECIES_ZANGOOSE, SPECIES_SEVIPER, SPECIES_NINETALES, SPECIES_KECLEON, SPECIES_SHUCKLE, SPECIES_MANECTRIC, SPECIES_MACHAMP},
        .id = 2,
        .speechLost = {EC_WORD_I, EC_WORD_WENT, EC_WORD_AND, EC_WORD_LOST, EC_WORD_AWW, EC_WORD_ELLIPSIS},
    },
    {
        .name = {_("ユラ"), _("LAYLA"), _("LAYLA"), _("ASTRID"), _("SONJA"), _("LOLA")},
        .otId = 0x84EF,
        .facilityClass = FACILITY_CLASS_LASS,
        .species = {SPECIES_SWALOT, SPECIES_XATU, SPECIES_ALTARIA, SPECIES_GOLDUCK, SPECIES_FLYGON, SPECIES_ALAKAZAM, SPECIES_GARDEVOIR, SPECIES_WAILORD, SPECIES_GRUMPIG, SPECIES_MIGHTYENA},
        .id = 3,
        .speechLost = {EC_WORD_IS, EC_WORD_THIS, EC_WORD_TOO, EC_WORD_MUCH, EC_WORD_QUES, 0xFFFF},
    },
    {
        .name = {_("ヨウカ"), _("MACY"), _("AMELIE"), _("CLEO"), _("MARIA"), _("ELISA")},
        .otId = 0x1E43,
        .facilityClass = FACILITY_CLASS_SCHOOL_KID_F,
        .species = {SPECIES_WIGGLYTUFF, SPECIES_LINOONE, SPECIES_KINGDRA, SPECIES_DELCATTY, SPECIES_RAICHU, SPECIES_FEAROW, SPECIES_STARMIE, SPECIES_MEDICHAM, SPECIES_SHIFTRY, SPECIES_BEAUTIFLY},
        .id = 4,
        .speechLost = {EC_WORD_THIS, EC_WORD_WON_T, EC_WORD_BE, EC_WORD_HAPPENING, EC_WORD_NEXT, EC_WORD_TIME},
    },
    {
        .name = {_("ヤスシ"), _("DONTE"), _("BRAHIM"), _("GLAUCO"), _("JOSEF"), _("ROQUE")},
        .otId = 0x379F,
        .facilityClass = FACILITY_CLASS_RUNNING_TRIATHLETE_M,
        .species = {SPECIES_STARMIE, SPECIES_DODRIO, SPECIES_AGGRON, SPECIES_MAGNETON, SPECIES_MACHAMP, SPECIES_ARMALDO, SPECIES_HERACROSS, SPECIES_NOSEPASS, SPECIES_EXPLOUD, SPECIES_MIGHTYENA},
        .id = 5,
        .speechLost = {EC_WORD_I_AM, EC_WORD_GOING, EC_WORD_TO, EC_WORD_RUN, EC_WORD_BYE_BYE, EC_WORD_EXCL},
    },
    {
        .name = {_("ミサオ"), _("AMIRA"), _("LAURE"), _("DAFNE"), _("AMELIE"), _("LARA")},
        .otId = 0xF555,
        .facilityClass = FACILITY_CLASS_RUNNING_TRIATHLETE_F,
        .species = {SPECIES_STARMIE, SPECIES_DODRIO, SPECIES_MAGNETON, SPECIES_MEDICHAM, SPECIES_MIGHTYENA, SPECIES_GLALIE, SPECIES_GOLEM, SPECIES_ELECTRODE, SPECIES_PELIPPER, SPECIES_SHARPEDO},
        .id = 6,
        .speechLost = {EC_WORD_AHAHA, EC_WORD_DEFEATED, EC_WORD_EXCL, EC_WORD_IT_S, EC_WORD_NOTHING, EC_WORD_EXCL},
    },
    {
        .name = {_("カズサ"), _("KALI"), _("JODIE"), _("ILENIA"), _("KARO"), _("ELSA")},
        .otId = 0x8D26,
        .facilityClass = FACILITY_CLASS_BEAUTY,
        .species = {SPECIES_NINETALES, SPECIES_ALAKAZAM, SPECIES_SCEPTILE, SPECIES_SALAMENCE, SPECIES_GOLDUCK, SPECIES_MAWILE, SPECIES_WEEZING, SPECIES_LANTURN, SPECIES_GARDEVOIR, SPECIES_MILOTIC},
        .id = 7,
        .speechLost = {EC_WORD_YOU_RE, EC_WORD_STRONG, EC_WORD_AREN_T, EC_WORD_YOU, EC_WORD_QUES, 0xFFFF},
    },
    {
        .name = {_("スミレ"), _("ANNIE"), _("ANNIE"), _("IMELDA"), _("INES"), _("ROSA")},
        .otId = 0x800C,
        .facilityClass = FACILITY_CLASS_AROMA_LADY,
        .species = {SPECIES_SCEPTILE, SPECIES_VILEPLUME, SPECIES_BELLOSSOM, SPECIES_ROSELIA, SPECIES_CORSOLA, SPECIES_FLYGON, SPECIES_BRELOOM, SPECIES_MILOTIC, SPECIES_ALTARIA, SPECIES_CRADILY},
        .id = 8,
        .speechLost = {EC_WORD_WHAT, EC_WORD_TOUGH, EC_WORD_POKEMON, EC_WORD_YOU, EC_WORD_HAVE, EC_WORD_EXCL},
    },
    {
        .name = {_("アキノリ"), _("DILLEN"), _("RENE"), _("INDRO"), _("DETLEF"), _("PEDRO")},
        .otId = 0x469f,
        .facilityClass = FACILITY_CLASS_HIKER,
        .species = {SPECIES_SKARMORY, SPECIES_GOLEM, SPECIES_BLAZIKEN, SPECIES_CAMERUPT, SPECIES_DONPHAN, SPECIES_MUK, SPECIES_SALAMENCE, SPECIES_TROPIUS, SPECIES_SOLROCK, SPECIES_RHYDON},
        .id = 9,
        .speechLost = {EC_WORD_WE, EC_WORD_WERE, EC_WORD_JUST, EC_WORD_SHREDDED, EC_WORD_ELLIPSIS, 0xFFFF},
    },
    {
        .name = {_("トウゾウ"), _("DALLAS"), _("BRUNO"), _("LEARCO"), _("ANSGAR"), _("MANOLO")},
        .otId = 0x71FC,
        .facilityClass = FACILITY_CLASS_FISHERMAN,
        .species = {SPECIES_SEAKING, SPECIES_STARMIE, SPECIES_GOLDUCK, SPECIES_TENTACRUEL, SPECIES_OCTILLERY, SPECIES_GOREBYSS, SPECIES_GLALIE, SPECIES_WAILORD, SPECIES_SHARPEDO, SPECIES_KINGDRA},
        .id = 10,
        .speechLost = {EC_WORD_YOUR, EC_WORD_WIN, EC_WORD_ANGERS, EC_WORD_ME, EC_WORD_EXCL, 0xFFFF},
    },
    {
        .name = {_("セイヤ"), _("FRANK"), _("FRANK"), _("OLINDO"), _("FRANK"), _("MAURO")},
        .otId = 0xA39E,
        .facilityClass = FACILITY_CLASS_SAILOR,
        .species = {SPECIES_QUAGSIRE, SPECIES_STARMIE, SPECIES_PELIPPER, SPECIES_CRAWDAUNT, SPECIES_WAILORD, SPECIES_GYARADOS, SPECIES_SWAMPERT, SPECIES_LANTURN, SPECIES_WHISCASH, SPECIES_SHUCKLE},
        .id = 11,
        .speechLost = {EC_WORD_LOSING, EC_WORD_DOESN_T, EC_MOVE(CUT), EC_WORD_ME, EC_WORD_DEEP, EC_WORD_OK_QUES},
    },
    {
        .name = {_("リュウジ"), _("LAMONT"), _("XAV"), _("ORFEO"), _("JÜRGEN"), _("JORGE")},
        .otId = 0xE590,
        .facilityClass = FACILITY_CLASS_GUITARIST,
        .species = {SPECIES_ABSOL, SPECIES_CROBAT, SPECIES_EXPLOUD, SPECIES_MAGNETON, SPECIES_SHARPEDO, SPECIES_MANECTRIC, SPECIES_METAGROSS, SPECIES_ELECTRODE, SPECIES_NOSEPASS, SPECIES_WEEZING},
        .id = 12,
        .speechLost = {EC_WORD_A, EC_WORD_LOSS, EC_WORD_IS, EC_WORD_WHAT, EC_WORD_THIS, EC_WORD_IS},
    },
    {
        .name = {_("カツアキ"), _("TYRESE"), _("ANDY"), _("PARIDE"), _("DAVID"), _("CHICHO")},
        .otId = 0xD018,
        .facilityClass = FACILITY_CLASS_BLACK_BELT,
        .species = {SPECIES_BLAZIKEN, SPECIES_GOLEM, SPECIES_MACHAMP, SPECIES_RHYDON, SPECIES_HARIYAMA, SPECIES_AGGRON, SPECIES_MEDICHAM, SPECIES_ZANGOOSE, SPECIES_VIGOROTH, SPECIES_SLAKING},
        .id = 13,
        .speechLost = {EC_WORD_I_AM, EC_WORD_TOO_WEAK, EC_WORD_AND, EC_WORD_LOW, EC_WORD_OF, EC_WORD_POWER},
    },
    {
        .name = {_("トシミツ"), _("DANTE"), _("DANTE"), _("RAOUL"), _("LOTHAR"), _("PABLO")},
        .otId = 0xBC75,
        .facilityClass = FACILITY_CLASS_RUIN_MANIAC,
        .species = {SPECIES_SCEPTILE, SPECIES_SANDSLASH, SPECIES_FLYGON, SPECIES_CLAYDOL, SPECIES_ARMALDO, SPECIES_CROBAT, SPECIES_CRADILY, SPECIES_SOLROCK, SPECIES_LUNATONE, SPECIES_GOLEM},
        .id = 14,
        .speechLost = {EC_WORD_I, EC_WORD_DON_T, EC_WORD_UNDERSTAND, EC_WORD_WHAT, EC_WORD_IS, EC_WORD_HAPPENING},
    },
    {
        .name = {_("ローウェン"), _("ARTURO"), _("ARTURO"), _("ROMOLO"), _("BRIAN"), _("ARTURO")},
        .otId = 0xFA02,
        .facilityClass = FACILITY_CLASS_GENTLEMAN,
        .species = {SPECIES_ABSOL, SPECIES_MIGHTYENA, SPECIES_ALAKAZAM, SPECIES_BANETTE, SPECIES_NINETALES, SPECIES_CLAYDOL, SPECIES_MUK, SPECIES_SALAMENCE, SPECIES_WALREIN, SPECIES_DUSCLOPS},
        .id = 15,
        .speechLost = {EC_WORD_THIS, EC_WORD_HAS, EC_WORD_TO, EC_WORD_BE, EC_WORD_A, EC_WORD_LIE},
    },
};

// Sequence of 4 messages for the first meeting with the apprentice
static const u8 *const sApprenticeFirstMeetingTexts[NUM_APPRENTICES][4] =
{
    {gText_ApprenticePleaseTeach0,  gText_ApprenticeRejectTeaching0,  gText_ApprenticeWhichLevelMode0,  gText_ApprenticeLevelModeThanks0},
    {gText_ApprenticePleaseTeach1,  gText_ApprenticeRejectTeaching1,  gText_ApprenticeWhichLevelMode1,  gText_ApprenticeLevelModeThanks1},
    {gText_ApprenticePleaseTeach2,  gText_ApprenticeRejectTeaching2,  gText_ApprenticeWhichLevelMode2,  gText_ApprenticeLevelModeThanks2},
    {gText_ApprenticePleaseTeach3,  gText_ApprenticeRejectTeaching3,  gText_ApprenticeWhichLevelMode3,  gText_ApprenticeLevelModeThanks3},
    {gText_ApprenticePleaseTeach4,  gText_ApprenticeRejectTeaching4,  gText_ApprenticeWhichLevelMode4,  gText_ApprenticeLevelModeThanks4},
    {gText_ApprenticePleaseTeach5,  gText_ApprenticeRejectTeaching5,  gText_ApprenticeWhichLevelMode5,  gText_ApprenticeLevelModeThanks5},
    {gText_ApprenticePleaseTeach6,  gText_ApprenticeRejectTeaching6,  gText_ApprenticeWhichLevelMode6,  gText_ApprenticeLevelModeThanks6},
    {gText_ApprenticePleaseTeach7,  gText_ApprenticeRejectTeaching7,  gText_ApprenticeWhichLevelMode7,  gText_ApprenticeLevelModeThanks7},
    {gText_ApprenticePleaseTeach8,  gText_ApprenticeRejectTeaching8,  gText_ApprenticeWhichLevelMode8,  gText_ApprenticeLevelModeThanks8},
    {gText_ApprenticePleaseTeach9,  gText_ApprenticeRejectTeaching9,  gText_ApprenticeWhichLevelMode9,  gText_ApprenticeLevelModeThanks9},
    {gText_ApprenticePleaseTeach10, gText_ApprenticeRejectTeaching10, gText_ApprenticeWhichLevelMode10, gText_ApprenticeLevelModeThanks10},
    {gText_ApprenticePleaseTeach11, gText_ApprenticeRejectTeaching11, gText_ApprenticeWhichLevelMode11, gText_ApprenticeLevelModeThanks11},
    {gText_ApprenticePleaseTeach12, gText_ApprenticeRejectTeaching12, gText_ApprenticeWhichLevelMode12, gText_ApprenticeLevelModeThanks12},
    {gText_ApprenticePleaseTeach13, gText_ApprenticeRejectTeaching13, gText_ApprenticeWhichLevelMode13, gText_ApprenticeLevelModeThanks13},
    {gText_ApprenticePleaseTeach14, gText_ApprenticeRejectTeaching14, gText_ApprenticeWhichLevelMode14, gText_ApprenticeLevelModeThanks14},
    {gText_ApprenticePleaseTeach15, gText_ApprenticeRejectTeaching15, gText_ApprenticeWhichLevelMode15, gText_ApprenticeLevelModeThanks15},
};

static const u8 *const sApprenticeWhichMonTexts[NUM_APPRENTICES][2] =
{
    {gText_ApprenticeWhichMon0,  gText_ApprenticeMonThanks0},
    {gText_ApprenticeWhichMon1,  gText_ApprenticeMonThanks1},
    {gText_ApprenticeWhichMon2,  gText_ApprenticeMonThanks2},
    {gText_ApprenticeWhichMon3,  gText_ApprenticeMonThanks3},
    {gText_ApprenticeWhichMon4,  gText_ApprenticeMonThanks4},
    {gText_ApprenticeWhichMon5,  gText_ApprenticeMonThanks5},
    {gText_ApprenticeWhichMon6,  gText_ApprenticeMonThanks6},
    {gText_ApprenticeWhichMon7,  gText_ApprenticeMonThanks7},
    {gText_ApprenticeWhichMon8,  gText_ApprenticeMonThanks8},
    {gText_ApprenticeWhichMon9,  gText_ApprenticeMonThanks9},
    {gText_ApprenticeWhichMon10, gText_ApprenticeMonThanks10},
    {gText_ApprenticeWhichMon11, gText_ApprenticeMonThanks11},
    {gText_ApprenticeWhichMon12, gText_ApprenticeMonThanks12},
    {gText_ApprenticeWhichMon13, gText_ApprenticeMonThanks13},
    {gText_ApprenticeWhichMon14, gText_ApprenticeMonThanks14},
    {gText_ApprenticeWhichMon15, gText_ApprenticeMonThanks15},
};

// Sequence of 5 messages for suggesting a held item to the apprentice
static const u8 *const sApprenticeHeldItemTexts[NUM_APPRENTICES][5] =
{
    {gText_ApprenticeWhatHeldItem0,  gText_ApprenticeHoldNothing0,  gText_ApprenticeThanksNoHeldItem0,  gText_ApprenticeThanksHeldItem0,  gText_ApprenticeItemAlreadyRecommended0},
    {gText_ApprenticeWhatHeldItem1,  gText_ApprenticeHoldNothing1,  gText_ApprenticeThanksNoHeldItem1,  gText_ApprenticeThanksHeldItem1,  gText_ApprenticeItemAlreadyRecommended1},
    {gText_ApprenticeWhatHeldItem2,  gText_ApprenticeHoldNothing2,  gText_ApprenticeThanksNoHeldItem2,  gText_ApprenticeThanksHeldItem2,  gText_ApprenticeItemAlreadyRecommended2},
    {gText_ApprenticeWhatHeldItem3,  gText_ApprenticeHoldNothing3,  gText_ApprenticeThanksNoHeldItem3,  gText_ApprenticeThanksHeldItem3,  gText_ApprenticeItemAlreadyRecommended3},
    {gText_ApprenticeWhatHeldItem4,  gText_ApprenticeHoldNothing4,  gText_ApprenticeThanksNoHeldItem4,  gText_ApprenticeThanksHeldItem4,  gText_ApprenticeItemAlreadyRecommended4},
    {gText_ApprenticeWhatHeldItem5,  gText_ApprenticeHoldNothing5,  gText_ApprenticeThanksNoHeldItem5,  gText_ApprenticeThanksHeldItem5,  gText_ApprenticeItemAlreadyRecommended5},
    {gText_ApprenticeWhatHeldItem6,  gText_ApprenticeHoldNothing6,  gText_ApprenticeThanksNoHeldItem6,  gText_ApprenticeThanksHeldItem6,  gText_ApprenticeItemAlreadyRecommended6},
    {gText_ApprenticeWhatHeldItem7,  gText_ApprenticeHoldNothing7,  gText_ApprenticeThanksNoHeldItem7,  gText_ApprenticeThanksHeldItem7,  gText_ApprenticeItemAlreadyRecommended7},
    {gText_ApprenticeWhatHeldItem8,  gText_ApprenticeHoldNothing8,  gText_ApprenticeThanksNoHeldItem8,  gText_ApprenticeThanksHeldItem8,  gText_ApprenticeItemAlreadyRecommended8},
    {gText_ApprenticeWhatHeldItem9,  gText_ApprenticeHoldNothing9,  gText_ApprenticeThanksNoHeldItem9,  gText_ApprenticeThanksHeldItem9,  gText_ApprenticeItemAlreadyRecommended9},
    {gText_ApprenticeWhatHeldItem10, gText_ApprenticeHoldNothing10, gText_ApprenticeThanksNoHeldItem10, gText_ApprenticeThanksHeldItem10, gText_ApprenticeItemAlreadyRecommended10},
    {gText_ApprenticeWhatHeldItem11, gText_ApprenticeHoldNothing11, gText_ApprenticeThanksNoHeldItem11, gText_ApprenticeThanksHeldItem11, gText_ApprenticeItemAlreadyRecommended11},
    {gText_ApprenticeWhatHeldItem12, gText_ApprenticeHoldNothing12, gText_ApprenticeThanksNoHeldItem12, gText_ApprenticeThanksHeldItem12, gText_ApprenticeItemAlreadyRecommended12},
    {gText_ApprenticeWhatHeldItem13, gText_ApprenticeHoldNothing13, gText_ApprenticeThanksNoHeldItem13, gText_ApprenticeThanksHeldItem13, gText_ApprenticeItemAlreadyRecommended13},
    {gText_ApprenticeWhatHeldItem14, gText_ApprenticeHoldNothing14, gText_ApprenticeThanksNoHeldItem14, gText_ApprenticeThanksHeldItem14, gText_ApprenticeItemAlreadyRecommended14},
    {gText_ApprenticeWhatHeldItem15, gText_ApprenticeHoldNothing15, gText_ApprenticeThanksNoHeldItem15, gText_ApprenticeThanksHeldItem15, gText_ApprenticeItemAlreadyRecommended15},
};

static const u8 *const sApprenticeWhichMoveTexts[NUM_APPRENTICES][2] =
{
    {gText_ApprenticeWhichMove0,  gText_ApprenticeMoveThanks0},
    {gText_ApprenticeWhichMove1,  gText_ApprenticeMoveThanks1},
    {gText_ApprenticeWhichMove2,  gText_ApprenticeMoveThanks2},
    {gText_ApprenticeWhichMove3,  gText_ApprenticeMoveThanks3},
    {gText_ApprenticeWhichMove4,  gText_ApprenticeMoveThanks4},
    {gText_ApprenticeWhichMove5,  gText_ApprenticeMoveThanks5},
    {gText_ApprenticeWhichMove6,  gText_ApprenticeMoveThanks6},
    {gText_ApprenticeWhichMove7,  gText_ApprenticeMoveThanks7},
    {gText_ApprenticeWhichMove8,  gText_ApprenticeMoveThanks8},
    {gText_ApprenticeWhichMove9,  gText_ApprenticeMoveThanks9},
    {gText_ApprenticeWhichMove10, gText_ApprenticeMoveThanks10},
    {gText_ApprenticeWhichMove11, gText_ApprenticeMoveThanks11},
    {gText_ApprenticeWhichMove12, gText_ApprenticeMoveThanks12},
    {gText_ApprenticeWhichMove13, gText_ApprenticeMoveThanks13},
    {gText_ApprenticeWhichMove14, gText_ApprenticeMoveThanks14},
    {gText_ApprenticeWhichMove15, gText_ApprenticeMoveThanks15},
};

static const u8 *const sApprenticeWhichMonFirstTexts[NUM_APPRENTICES][2] =
{
    {gText_ApprenticeWhichMonFirst0,  gText_ApprenticeMonFirstThanks0},
    {gText_ApprenticeWhichMonFirst1,  gText_ApprenticeMonFirstThanks1},
    {gText_ApprenticeWhichMonFirst2,  gText_ApprenticeMonFirstThanks2},
    {gText_ApprenticeWhichMonFirst3,  gText_ApprenticeMonFirstThanks3},
    {gText_ApprenticeWhichMonFirst4,  gText_ApprenticeMonFirstThanks4},
    {gText_ApprenticeWhichMonFirst5,  gText_ApprenticeMonFirstThanks5},
    {gText_ApprenticeWhichMonFirst6,  gText_ApprenticeMonFirstThanks6},
    {gText_ApprenticeWhichMonFirst7,  gText_ApprenticeMonFirstThanks7},
    {gText_ApprenticeWhichMonFirst8,  gText_ApprenticeMonFirstThanks8},
    {gText_ApprenticeWhichMonFirst9,  gText_ApprenticeMonFirstThanks9},
    {gText_ApprenticeWhichMonFirst10, gText_ApprenticeMonFirstThanks10},
    {gText_ApprenticeWhichMonFirst11, gText_ApprenticeMonFirstThanks11},
    {gText_ApprenticeWhichMonFirst12, gText_ApprenticeMonFirstThanks12},
    {gText_ApprenticeWhichMonFirst13, gText_ApprenticeMonFirstThanks13},
    {gText_ApprenticeWhichMonFirst14, gText_ApprenticeMonFirstThanks14},
    {gText_ApprenticeWhichMonFirst15, gText_ApprenticeMonFirstThanks15},
};

static const u8 *const sApprenticePickWinSpeechTexts[NUM_APPRENTICES][2] =
{
    {gText_ApprenticePickWinSpeech0,  gText_ApprenticeWinSpeechThanks0},
    {gText_ApprenticePickWinSpeech1,  gText_ApprenticeWinSpeechThanks1},
    {gText_ApprenticePickWinSpeech2,  gText_ApprenticeWinSpeechThanks2},
    {gText_ApprenticePickWinSpeech3,  gText_ApprenticeWinSpeechThanks3},
    {gText_ApprenticePickWinSpeech4,  gText_ApprenticeWinSpeechThanks4},
    {gText_ApprenticePickWinSpeech5,  gText_ApprenticeWinSpeechThanks5},
    {gText_ApprenticePickWinSpeech6,  gText_ApprenticeWinSpeechThanks6},
    {gText_ApprenticePickWinSpeech7,  gText_ApprenticeWinSpeechThanks7},
    {gText_ApprenticePickWinSpeech8,  gText_ApprenticeWinSpeechThanks8},
    {gText_ApprenticePickWinSpeech9,  gText_ApprenticeWinSpeechThanks9},
    {gText_ApprenticePickWinSpeech10, gText_ApprenticeWinSpeechThanks10},
    {gText_ApprenticePickWinSpeech11, gText_ApprenticeWinSpeechThanks11},
    {gText_ApprenticePickWinSpeech12, gText_ApprenticeWinSpeechThanks12},
    {gText_ApprenticePickWinSpeech13, gText_ApprenticeWinSpeechThanks13},
    {gText_ApprenticePickWinSpeech14, gText_ApprenticeWinSpeechThanks14},
    {gText_ApprenticePickWinSpeech15, gText_ApprenticeWinSpeechThanks15},
};

static const u8 *const sApprenticeChallengeTexts[NUM_APPRENTICES] =
{
    gText_ApprenticeChallenge0,
    gText_ApprenticeChallenge1,
    gText_ApprenticeChallenge2,
    gText_ApprenticeChallenge3,
    gText_ApprenticeChallenge4,
    gText_ApprenticeChallenge5,
    gText_ApprenticeChallenge6,
    gText_ApprenticeChallenge7,
    gText_ApprenticeChallenge8,
    gText_ApprenticeChallenge9,
    gText_ApprenticeChallenge10,
    gText_ApprenticeChallenge11,
    gText_ApprenticeChallenge12,
    gText_ApprenticeChallenge13,
    gText_ApprenticeChallenge14,
    gText_ApprenticeChallenge15,
};

// Unclear what the criteria are for valid moves
// Notably, a large percentage of multi-strike moves are not valid
static const bool8 sValidApprenticeMoves[MOVES_COUNT] =
{
    [MOVE_NONE] = FALSE,
    [MOVE_POUND] = FALSE,
    [MOVE_KARATE_CHOP] = TRUE,
    [MOVE_DOUBLE_SLAP] = TRUE,
    [MOVE_COMET_PUNCH] = FALSE,
    [MOVE_MEGA_PUNCH] = TRUE,
    [MOVE_PAY_DAY] = FALSE,
    [MOVE_FIRE_PUNCH] = TRUE,
    [MOVE_ICE_PUNCH] = TRUE,
    [MOVE_THUNDER_PUNCH] = TRUE,
    [MOVE_SCRATCH] = FALSE,
    [MOVE_VICE_GRIP] = FALSE,
    [MOVE_GUILLOTINE] = TRUE,
    [MOVE_RAZOR_WIND] = FALSE,
    [MOVE_SWORDS_DANCE] = TRUE,
    [MOVE_CUT] = FALSE,
    [MOVE_GUST] = FALSE,
    [MOVE_WING_ATTACK] = FALSE,
    [MOVE_WHIRLWIND] = TRUE,
    [MOVE_FLY] = TRUE,
    [MOVE_BIND] = TRUE,
    [MOVE_SLAM] = TRUE,
    [MOVE_VINE_WHIP] = FALSE,
    [MOVE_STOMP] = TRUE,
    [MOVE_DOUBLE_KICK] = TRUE,
    [MOVE_MEGA_KICK] = TRUE,
    [MOVE_JUMP_KICK] = TRUE,
    [MOVE_ROLLING_KICK] = TRUE,
    [MOVE_SAND_ATTACK] = TRUE,
    [MOVE_HEADBUTT] = TRUE,
    [MOVE_HORN_ATTACK] = FALSE,
    [MOVE_FURY_ATTACK] = FALSE,
    [MOVE_HORN_DRILL] = TRUE,
    [MOVE_TACKLE] = FALSE,
    [MOVE_BODY_SLAM] = TRUE,
    [MOVE_WRAP] = TRUE,
    [MOVE_TAKE_DOWN] = TRUE,
    [MOVE_THRASH] = TRUE,
    [MOVE_DOUBLE_EDGE] = TRUE,
    [MOVE_TAIL_WHIP] = FALSE,
    [MOVE_POISON_STING] = FALSE,
    [MOVE_TWINEEDLE] = TRUE,
    [MOVE_PIN_MISSILE] = FALSE,
    [MOVE_LEER] = FALSE,
    [MOVE_BITE] = TRUE,
    [MOVE_GROWL] = FALSE,
    [MOVE_ROAR] = TRUE,
    [MOVE_SING] = TRUE,
    [MOVE_SUPERSONIC] = TRUE,
    [MOVE_SONIC_BOOM] = TRUE,
    [MOVE_DISABLE] = TRUE,
    [MOVE_ACID] = FALSE,
    [MOVE_EMBER] = FALSE,
    [MOVE_FLAMETHROWER] = TRUE,
    [MOVE_MIST] = TRUE,
    [MOVE_WATER_GUN] = FALSE,
    [MOVE_HYDRO_PUMP] = TRUE,
    [MOVE_SURF] = TRUE,
    [MOVE_ICE_BEAM] = TRUE,
    [MOVE_BLIZZARD] = TRUE,
    [MOVE_PSYBEAM] = TRUE,
    [MOVE_BUBBLE_BEAM] = FALSE,
    [MOVE_AURORA_BEAM] = FALSE,
    [MOVE_HYPER_BEAM] = TRUE,
    [MOVE_PECK] = FALSE,
    [MOVE_DRILL_PECK] = TRUE,
    [MOVE_SUBMISSION] = TRUE,
    [MOVE_LOW_KICK] = TRUE,
    [MOVE_COUNTER] = TRUE,
    [MOVE_SEISMIC_TOSS] = TRUE,
    [MOVE_STRENGTH] = TRUE,
    [MOVE_ABSORB] = FALSE,
    [MOVE_MEGA_DRAIN] = FALSE,
    [MOVE_LEECH_SEED] = TRUE,
    [MOVE_GROWTH] = TRUE,
    [MOVE_RAZOR_LEAF] = TRUE,
    [MOVE_SOLAR_BEAM] = TRUE,
    [MOVE_POISON_POWDER] = TRUE,
    [MOVE_STUN_SPORE] = TRUE,
    [MOVE_SLEEP_POWDER] = TRUE,
    [MOVE_PETAL_DANCE] = TRUE,
    [MOVE_STRING_SHOT] = FALSE,
    [MOVE_DRAGON_RAGE] = TRUE,
    [MOVE_FIRE_SPIN] = TRUE,
    [MOVE_THUNDER_SHOCK] = FALSE,
    [MOVE_THUNDERBOLT] = TRUE,
    [MOVE_THUNDER_WAVE] = TRUE,
    [MOVE_THUNDER] = TRUE,
    [MOVE_ROCK_THROW] = FALSE,
    [MOVE_EARTHQUAKE] = TRUE,
    [MOVE_FISSURE] = TRUE,
    [MOVE_DIG] = TRUE,
    [MOVE_TOXIC] = TRUE,
    [MOVE_CONFUSION] = FALSE,
    [MOVE_PSYCHIC] = TRUE,
    [MOVE_HYPNOSIS] = TRUE,
    [MOVE_MEDITATE] = TRUE,
    [MOVE_AGILITY] = TRUE,
    [MOVE_QUICK_ATTACK] = TRUE,
    [MOVE_RAGE] = FALSE,
    [MOVE_TELEPORT] = FALSE,
    [MOVE_NIGHT_SHADE] = TRUE,
    [MOVE_MIMIC] = TRUE,
    [MOVE_SCREECH] = TRUE,
    [MOVE_DOUBLE_TEAM] = TRUE,
    [MOVE_RECOVER] = TRUE,
    [MOVE_HARDEN] = TRUE,
    [MOVE_MINIMIZE] = TRUE,
    [MOVE_SMOKESCREEN] = TRUE,
    [MOVE_CONFUSE_RAY] = TRUE,
    [MOVE_WITHDRAW] = TRUE,
    [MOVE_DEFENSE_CURL] = TRUE,
    [MOVE_BARRIER] = TRUE,
    [MOVE_LIGHT_SCREEN] = TRUE,
    [MOVE_HAZE] = TRUE,
    [MOVE_REFLECT] = TRUE,
    [MOVE_FOCUS_ENERGY] = TRUE,
    [MOVE_BIDE] = FALSE,
    [MOVE_METRONOME] = TRUE,
    [MOVE_MIRROR_MOVE] = TRUE,
    [MOVE_SELF_DESTRUCT] = TRUE,
    [MOVE_EGG_BOMB] = TRUE,
    [MOVE_LICK] = TRUE,
    [MOVE_SMOG] = FALSE,
    [MOVE_SLUDGE] = FALSE,
    [MOVE_BONE_CLUB] = FALSE,
    [MOVE_FIRE_BLAST] = TRUE,
    [MOVE_WATERFALL] = TRUE,
    [MOVE_CLAMP] = TRUE,
    [MOVE_SWIFT] = TRUE,
    [MOVE_SKULL_BASH] = TRUE,
    [MOVE_SPIKE_CANNON] = FALSE,
    [MOVE_CONSTRICT] = FALSE,
    [MOVE_AMNESIA] = TRUE,
    [MOVE_KINESIS] = TRUE,
    [MOVE_SOFT_BOILED] = TRUE,
    [MOVE_HI_JUMP_KICK] = TRUE,
    [MOVE_GLARE] = TRUE,
    [MOVE_DREAM_EATER] = TRUE,
    [MOVE_POISON_GAS] = FALSE,
    [MOVE_BARRAGE] = FALSE,
    [MOVE_LEECH_LIFE] = FALSE,
    [MOVE_LOVELY_KISS] = TRUE,
    [MOVE_SKY_ATTACK] = TRUE,
    [MOVE_TRANSFORM] = TRUE,
    [MOVE_BUBBLE] = FALSE,
    [MOVE_DIZZY_PUNCH] = TRUE,
    [MOVE_SPORE] = TRUE,
    [MOVE_FLASH] = TRUE,
    [MOVE_PSYWAVE] = TRUE,
    [MOVE_SPLASH] = FALSE,
    [MOVE_ACID_ARMOR] = TRUE,
    [MOVE_CRABHAMMER] = TRUE,
    [MOVE_EXPLOSION] = TRUE,
    [MOVE_FURY_SWIPES] = FALSE,
    [MOVE_BONEMERANG] = TRUE,
    [MOVE_REST] = TRUE,
    [MOVE_ROCK_SLIDE] = TRUE,
    [MOVE_HYPER_FANG] = TRUE,
    [MOVE_SHARPEN] = TRUE,
    [MOVE_CONVERSION] = TRUE,
    [MOVE_TRI_ATTACK] = TRUE,
    [MOVE_SUPER_FANG] = TRUE,
    [MOVE_SLASH] = TRUE,
    [MOVE_SUBSTITUTE] = TRUE,
    [MOVE_STRUGGLE] = TRUE,
    [MOVE_SKETCH] = TRUE,
    [MOVE_TRIPLE_KICK] = TRUE,
    [MOVE_THIEF] = TRUE,
    [MOVE_SPIDER_WEB] = TRUE,
    [MOVE_MIND_READER] = TRUE,
    [MOVE_NIGHTMARE] = TRUE,
    [MOVE_FLAME_WHEEL] = FALSE,
    [MOVE_SNORE] = TRUE,
    [MOVE_CURSE] = TRUE,
    [MOVE_FLAIL] = TRUE,
    [MOVE_CONVERSION_2] = TRUE,
    [MOVE_AEROBLAST] = TRUE,
    [MOVE_COTTON_SPORE] = TRUE,
    [MOVE_REVERSAL] = TRUE,
    [MOVE_SPITE] = TRUE,
    [MOVE_POWDER_SNOW] = FALSE,
    [MOVE_PROTECT] = TRUE,
    [MOVE_MACH_PUNCH] = TRUE,
    [MOVE_SCARY_FACE] = TRUE,
    [MOVE_FAINT_ATTACK] = TRUE,
    [MOVE_SWEET_KISS] = TRUE,
    [MOVE_BELLY_DRUM] = TRUE,
    [MOVE_SLUDGE_BOMB] = TRUE,
    [MOVE_MUD_SLAP] = TRUE,
    [MOVE_OCTAZOOKA] = TRUE,
    [MOVE_SPIKES] = TRUE,
    [MOVE_ZAP_CANNON] = TRUE,
    [MOVE_FORESIGHT] = TRUE,
    [MOVE_DESTINY_BOND] = TRUE,
    [MOVE_PERISH_SONG] = TRUE,
    [MOVE_ICY_WIND] = TRUE,
    [MOVE_DETECT] = TRUE,
    [MOVE_BONE_RUSH] = FALSE,
    [MOVE_LOCK_ON] = TRUE,
    [MOVE_OUTRAGE] = TRUE,
    [MOVE_SANDSTORM] = TRUE,
    [MOVE_GIGA_DRAIN] = TRUE,
    [MOVE_ENDURE] = TRUE,
    [MOVE_CHARM] = TRUE,
    [MOVE_ROLLOUT] = TRUE,
    [MOVE_FALSE_SWIPE] = TRUE,
    [MOVE_SWAGGER] = TRUE,
    [MOVE_MILK_DRINK] = TRUE,
    [MOVE_SPARK] = FALSE,
    [MOVE_FURY_CUTTER] = TRUE,
    [MOVE_STEEL_WING] = TRUE,
    [MOVE_MEAN_LOOK] = TRUE,
    [MOVE_ATTRACT] = TRUE,
    [MOVE_SLEEP_TALK] = TRUE,
    [MOVE_HEAL_BELL] = TRUE,
    [MOVE_RETURN] = TRUE,
    [MOVE_PRESENT] = TRUE,
    [MOVE_FRUSTRATION] = TRUE,
    [MOVE_SAFEGUARD] = TRUE,
    [MOVE_PAIN_SPLIT] = TRUE,
    [MOVE_SACRED_FIRE] = TRUE,
    [MOVE_MAGNITUDE] = FALSE,
    [MOVE_DYNAMIC_PUNCH] = TRUE,
    [MOVE_MEGAHORN] = TRUE,
    [MOVE_DRAGON_BREATH] = TRUE,
    [MOVE_BATON_PASS] = TRUE,
    [MOVE_ENCORE] = TRUE,
    [MOVE_PURSUIT] = TRUE,
    [MOVE_RAPID_SPIN] = TRUE,
    [MOVE_SWEET_SCENT] = TRUE,
    [MOVE_IRON_TAIL] = TRUE,
    [MOVE_METAL_CLAW] = TRUE,
    [MOVE_VITAL_THROW] = TRUE,
    [MOVE_MORNING_SUN] = TRUE,
    [MOVE_SYNTHESIS] = TRUE,
    [MOVE_MOONLIGHT] = TRUE,
    [MOVE_HIDDEN_POWER] = TRUE,
    [MOVE_CROSS_CHOP] = TRUE,
    [MOVE_TWISTER] = FALSE,
    [MOVE_RAIN_DANCE] = TRUE,
    [MOVE_SUNNY_DAY] = TRUE,
    [MOVE_CRUNCH] = TRUE,
    [MOVE_MIRROR_COAT] = TRUE,
    [MOVE_PSYCH_UP] = TRUE,
    [MOVE_EXTREME_SPEED] = TRUE,
    [MOVE_ANCIENT_POWER] = TRUE,
    [MOVE_SHADOW_BALL] = TRUE,
    [MOVE_FUTURE_SIGHT] = TRUE,
    [MOVE_ROCK_SMASH] = TRUE,
    [MOVE_WHIRLPOOL] = TRUE,
    [MOVE_BEAT_UP] = TRUE,
    [MOVE_FAKE_OUT] = TRUE,
    [MOVE_UPROAR] = TRUE,
    [MOVE_STOCKPILE] = TRUE,
    [MOVE_SPIT_UP] = TRUE,
    [MOVE_SWALLOW] = TRUE,
    [MOVE_HEAT_WAVE] = TRUE,
    [MOVE_HAIL] = TRUE,
    [MOVE_TORMENT] = TRUE,
    [MOVE_FLATTER] = TRUE,
    [MOVE_WILL_O_WISP] = TRUE,
    [MOVE_MEMENTO] = TRUE,
    [MOVE_FACADE] = TRUE,
    [MOVE_FOCUS_PUNCH] = TRUE,
    [MOVE_SMELLING_SALT] = TRUE,
    [MOVE_FOLLOW_ME] = TRUE,
    [MOVE_NATURE_POWER] = TRUE,
    [MOVE_CHARGE] = TRUE,
    [MOVE_TAUNT] = TRUE,
    [MOVE_HELPING_HAND] = TRUE,
    [MOVE_TRICK] = TRUE,
    [MOVE_ROLE_PLAY] = TRUE,
    [MOVE_WISH] = TRUE,
    [MOVE_ASSIST] = TRUE,
    [MOVE_INGRAIN] = TRUE,
    [MOVE_SUPERPOWER] = TRUE,
    [MOVE_MAGIC_COAT] = TRUE,
    [MOVE_RECYCLE] = TRUE,
    [MOVE_REVENGE] = TRUE,
    [MOVE_BRICK_BREAK] = TRUE,
    [MOVE_YAWN] = TRUE,
    [MOVE_KNOCK_OFF] = TRUE,
    [MOVE_ENDEAVOR] = TRUE,
    [MOVE_ERUPTION] = TRUE,
    [MOVE_SKILL_SWAP] = TRUE,
    [MOVE_IMPRISON] = TRUE,
    [MOVE_REFRESH] = TRUE,
    [MOVE_GRUDGE] = TRUE,
    [MOVE_SNATCH] = TRUE,
    [MOVE_SECRET_POWER] = TRUE,
    [MOVE_DIVE] = TRUE,
    [MOVE_ARM_THRUST] = FALSE,
    [MOVE_CAMOUFLAGE] = TRUE,
    [MOVE_TAIL_GLOW] = TRUE,
    [MOVE_LUSTER_PURGE] = TRUE,
    [MOVE_MIST_BALL] = TRUE,
    [MOVE_FEATHER_DANCE] = TRUE,
    [MOVE_TEETER_DANCE] = TRUE,
    [MOVE_BLAZE_KICK] = TRUE,
    [MOVE_MUD_SPORT] = TRUE,
    [MOVE_ICE_BALL] = FALSE,
    [MOVE_NEEDLE_ARM] = TRUE,
    [MOVE_SLACK_OFF] = TRUE,
    [MOVE_HYPER_VOICE] = TRUE,
    [MOVE_POISON_FANG] = FALSE,
    [MOVE_CRUSH_CLAW] = TRUE,
    [MOVE_BLAST_BURN] = TRUE,
    [MOVE_HYDRO_CANNON] = TRUE,
    [MOVE_METEOR_MASH] = TRUE,
    [MOVE_ASTONISH] = TRUE,
    [MOVE_WEATHER_BALL] = TRUE,
    [MOVE_AROMATHERAPY] = TRUE,
    [MOVE_FAKE_TEARS] = TRUE,
    [MOVE_AIR_CUTTER] = TRUE,
    [MOVE_OVERHEAT] = TRUE,
    [MOVE_ODOR_SLEUTH] = TRUE,
    [MOVE_ROCK_TOMB] = TRUE,
    [MOVE_SILVER_WIND] = TRUE,
    [MOVE_METAL_SOUND] = TRUE,
    [MOVE_GRASS_WHISTLE] = TRUE,
    [MOVE_TICKLE] = TRUE,
    [MOVE_COSMIC_POWER] = TRUE,
    [MOVE_WATER_SPOUT] = TRUE,
    [MOVE_SIGNAL_BEAM] = TRUE,
    [MOVE_SHADOW_PUNCH] = TRUE,
    [MOVE_EXTRASENSORY] = TRUE,
    [MOVE_SKY_UPPERCUT] = TRUE,
    [MOVE_SAND_TOMB] = TRUE,
    [MOVE_SHEER_COLD] = TRUE,
    [MOVE_MUDDY_WATER] = TRUE,
    [MOVE_BULLET_SEED] = FALSE,
    [MOVE_AERIAL_ACE] = TRUE,
    [MOVE_ICICLE_SPEAR] = FALSE,
    [MOVE_IRON_DEFENSE] = TRUE,
    [MOVE_BLOCK] = TRUE,
    [MOVE_HOWL] = TRUE,
    [MOVE_DRAGON_CLAW] = TRUE,
    [MOVE_FRENZY_PLANT] = TRUE,
    [MOVE_BULK_UP] = TRUE,
    [MOVE_BOUNCE] = TRUE,
    [MOVE_MUD_SHOT] = FALSE,
    [MOVE_POISON_TAIL] = TRUE,
    [MOVE_COVET] = TRUE,
    [MOVE_VOLT_TACKLE] = TRUE,
    [MOVE_MAGICAL_LEAF] = TRUE,
    [MOVE_WATER_SPORT] = TRUE,
    [MOVE_CALM_MIND] = TRUE,
    [MOVE_LEAF_BLADE] = TRUE,
    [MOVE_DRAGON_DANCE] = TRUE,
    [MOVE_ROCK_BLAST] = FALSE,
    [MOVE_SHOCK_WAVE] = TRUE,
    [MOVE_WATER_PULSE] = TRUE,
    [MOVE_DOOM_DESIRE] = TRUE,
    [MOVE_PSYCHO_BOOST] = TRUE,
};

// The possible questions to ask after the initial 3 WHICH MON questions. Retrieved from here and shuffled
// WHAT_ITEM has max 3 occurrences, one for each party member
// WHICH_MOVE has max 5 occurrences, defined as NUM_WHICH_MOVE_QUESTIONS
// WHICH_FIRST has max 1 occurrence, lead mon should only be chosen once
// WHICH_SPEECH has max 1 occurrence, as the apprentice leaves after its asked
static const u8 sQuestionPossibilities[MAX_APPRENTICE_QUESTIONS] =
{
    QUESTION_ID_WHAT_ITEM,
    QUESTION_ID_WHAT_ITEM,
    QUESTION_ID_WHAT_ITEM,
    QUESTION_ID_WHICH_MOVE,
    QUESTION_ID_WHICH_MOVE,
    QUESTION_ID_WHICH_MOVE,
    QUESTION_ID_WHICH_MOVE,
    QUESTION_ID_WHICH_MOVE,
    QUESTION_ID_WHICH_FIRST,
    QUESTION_ID_WIN_SPEECH
};

static void (* const sApprenticeFunctions[])(void) =
{
    [APPRENTICE_FUNC_GAVE_LVLMODE]        = Script_GivenApprenticeLvlMode,
    [APPRENTICE_FUNC_SET_LVLMODE]         = Script_SetApprenticeLvlMode,
    [APPRENTICE_FUNC_SET_ID]              = Script_SetApprenticeId,
    [APPRENTICE_FUNC_SHUFFLE_SPECIES]     = ShuffleApprenticeSpecies,
    [APPRENTICE_FUNC_RANDOMIZE_QUESTIONS] = Script_SetRandomQuestionData,
    [APPRENTICE_FUNC_ANSWERED_QUESTION]   = IncrementQuestionsAnswered,
    [APPRENTICE_FUNC_IS_FINAL_QUESTION]   = IsFinalQuestion,
    [APPRENTICE_FUNC_MENU]                = Script_CreateApprenticeMenu,
    [APPRENTICE_FUNC_PRINT_MSG]           = Script_PrintApprenticeMessage,
    [APPRENTICE_FUNC_RESET]               = Script_ResetPlayerApprentice,
    [APPRENTICE_FUNC_CHECK_GONE]          = GetShouldCheckApprenticeGone,
    [APPRENTICE_FUNC_GET_QUESTION]        = ApprenticeGetQuestion,
    [APPRENTICE_FUNC_GET_NUM_PARTY_MONS]  = GetNumApprenticePartyMonsAssigned,
    [APPRENTICE_FUNC_SET_PARTY_MON]       = SetApprenticePartyMon,
    [APPRENTICE_FUNC_INIT_QUESTION_DATA]  = InitQuestionData,
    [APPRENTICE_FUNC_FREE_QUESTION_DATA]  = FreeQuestionData,
    [APPRENTICE_FUNC_BUFFER_STRING]       = ApprenticeBufferString,
    [APPRENTICE_FUNC_SET_MOVE]            = SetApprenticeMonMove,
    [APPRENTICE_FUNC_SET_LEAD_MON]        = SetLeadApprenticeMon,
    [APPRENTICE_FUNC_OPEN_BAG]            = Script_ApprenticeOpenBagMenu,
    [APPRENTICE_FUNC_TRY_SET_HELD_ITEM]   = TrySetApprenticeHeldItem,
    [APPRENTICE_FUNC_SAVE]                = SaveApprentice,
    [APPRENTICE_FUNC_SET_GFX_SAVED]       = SetSavedApprenticeTrainerGfxId,
    [APPRENTICE_FUNC_SET_GFX]             = SetPlayerApprenticeTrainerGfxId,
    [APPRENTICE_FUNC_SHOULD_LEAVE]        = GetShouldApprenticeLeave,
    [APPRENTICE_FUNC_SHIFT_SAVED]         = ShiftSavedApprentices,
};

// The first Apprentice can only be one of these
static const u8 sInitialApprenticeIds[8] = {0, 1, 2, 3, 6, 7, 8, 9};


code:
static const u16 sFrontierExchangeCorner_Decor1[] =
{
    DECOR_KISS_POSTER,
    DECOR_KISS_CUSHION,
    DECOR_SMOOCHUM_DOLL,
    DECOR_TOGEPI_DOLL,
    DECOR_MEOWTH_DOLL,
    DECOR_CLEFAIRY_DOLL,
    DECOR_DITTO_DOLL,
    DECOR_CYNDAQUIL_DOLL,
    DECOR_CHIKORITA_DOLL,
    DECOR_TOTODILE_DOLL,
    0xFFFF
};

static const u16 sFrontierExchangeCorner_Decor2[] =
{
    DECOR_LAPRAS_DOLL,
    DECOR_SNORLAX_DOLL,
    DECOR_VENUSAUR_DOLL,
    DECOR_CHARIZARD_DOLL,
    DECOR_BLASTOISE_DOLL,
    0xFFFF
};

static const u16 sFrontierExchangeCorner_Vitamins[] =
{
    ITEM_PROTEIN,
    ITEM_CALCIUM,
    ITEM_IRON,
    ITEM_ZINC,
    ITEM_CARBOS,
    ITEM_HP_UP,
    0xFFFF
};

static const u16 sFrontierExchangeCorner_HoldItems[] =
{
    ITEM_LEFTOVERS,
    ITEM_WHITE_HERB,
    ITEM_QUICK_CLAW,
    ITEM_MENTAL_HERB,
    ITEM_BRIGHT_POWDER,
    ITEM_CHOICE_BAND,
    ITEM_KINGS_ROCK,
    ITEM_FOCUS_BAND,
    ITEM_SCOPE_LENS,
    0xFFFF
};

static const u8 *const sFrontierExchangeCorner_Decor1Descriptions[] =
{
    BattleFrontier_ExchangeServiceCorner_Text_KissPosterDesc,
    BattleFrontier_ExchangeServiceCorner_Text_KissCushionDesc,
    BattleFrontier_ExchangeServiceCorner_Text_SmoochumDollDesc,
    BattleFrontier_ExchangeServiceCorner_Text_TogepiDollDesc,
    BattleFrontier_ExchangeServiceCorner_Text_MeowthDollDesc,
    BattleFrontier_ExchangeServiceCorner_Text_ClefairyDollDesc,
    BattleFrontier_ExchangeServiceCorner_Text_DittoDollDesc,
    BattleFrontier_ExchangeServiceCorner_Text_CyndaquilDollDesc,
    BattleFrontier_ExchangeServiceCorner_Text_ChikoritaDollDesc,
    BattleFrontier_ExchangeServiceCorner_Text_TotodileDollDesc,
    gText_Exit,
};

static const u8 *const sFrontierExchangeCorner_Decor2Descriptions[] =
{
    BattleFrontier_ExchangeServiceCorner_Text_LargeDollDesc,
    BattleFrontier_ExchangeServiceCorner_Text_LargeDollDesc,
    BattleFrontier_ExchangeServiceCorner_Text_LargeDollDesc,
    BattleFrontier_ExchangeServiceCorner_Text_LargeDollDesc,
    BattleFrontier_ExchangeServiceCorner_Text_LargeDollDesc,
    gText_Exit
};

static const u8 *const sFrontierExchangeCorner_VitaminsDescriptions[] =
{
    BattleFrontier_ExchangeServiceCorner_Text_ProteinDesc,
    BattleFrontier_ExchangeServiceCorner_Text_CalciumDesc,
    BattleFrontier_ExchangeServiceCorner_Text_IronDesc,
    BattleFrontier_ExchangeServiceCorner_Text_ZincDesc,
    BattleFrontier_ExchangeServiceCorner_Text_CarbosDesc,
    BattleFrontier_ExchangeServiceCorner_Text_HPUpDesc,
    gText_Exit
};

static const u8 *const sFrontierExchangeCorner_HoldItemsDescriptions[] =
{
    BattleFrontier_ExchangeServiceCorner_Text_LeftoversDesc,
    BattleFrontier_ExchangeServiceCorner_Text_WhiteHerbDesc,
    BattleFrontier_ExchangeServiceCorner_Text_QuickClawDesc,
    BattleFrontier_ExchangeServiceCorner_Text_MentalHerbDesc,
    BattleFrontier_ExchangeServiceCorner_Text_BrightpowderDesc,
    BattleFrontier_ExchangeServiceCorner_Text_ChoiceBandDesc,
    BattleFrontier_ExchangeServiceCorner_Text_KingsRockDesc,
    BattleFrontier_ExchangeServiceCorner_Text_FocusBandDesc,
    BattleFrontier_ExchangeServiceCorner_Text_ScopeLensDesc,
    gText_Exit
};

repo_name: Lunos/pokeemerald

license: mit