From fc3783b7395b25d290ec650d79fbdc80518046cd Mon Sep 17 00:00:00 2001 From: GriffinR Date: Thu, 14 Nov 2019 18:56:18 -0500 Subject: WIP Document apprentice --- include/apprentice.h | 2 +- include/constants/apprentice.h | 33 +++++++++++++++++++++++++++++++++ include/constants/global.h | 2 ++ include/constants/pokemon.h | 4 ++++ include/global.h | 28 +++++++++++++++------------- include/strings.h | 4 ++++ 6 files changed, 59 insertions(+), 14 deletions(-) (limited to 'include') diff --git a/include/apprentice.h b/include/apprentice.h index 195106c53..ac7dff886 100644 --- a/include/apprentice.h +++ b/include/apprentice.h @@ -1,7 +1,7 @@ #ifndef GUARD_APPRENTICE_H #define GUARD_APPRENTICE_H -#define APPRENTICE_SPECIES_COUNT 10 +#include "constants/apprentice.h" struct ApprenticeTrainer { diff --git a/include/constants/apprentice.h b/include/constants/apprentice.h index 9db58bb8e..61f257767 100644 --- a/include/constants/apprentice.h +++ b/include/constants/apprentice.h @@ -1,6 +1,39 @@ #ifndef GUARD_CONSTANTS_APPRENTICE_H #define GUARD_CONSTANTS_APPRENTICE_H +#define APPRENTICE_SPECIES_COUNT 10 +#define NUM_APPRENTICES 16 + +#define APPRENTICE_LVL_MODE_50 (FRONTIER_LVL_50 + 1) +#define APPRENTICE_LVL_MODE_OPEN (FRONTIER_LVL_OPEN + 1) + +#define APPRENTICE_FUNC_0 0 +#define APPRENTICE_FUNC_1 1 +#define APPRENTICE_FUNC_2 2 +#define APPRENTICE_FUNC_3 3 +#define APPRENTICE_FUNC_4 4 +#define APPRENTICE_FUNC_5 5 +#define APPRENTICE_FUNC_6 6 +#define APPRENTICE_FUNC_MENU 7 +#define APPRENTICE_FUNC_PRINT_MSG 8 +#define APPRENTICE_FUNC_9 9 +#define APPRENTICE_FUNC_SET_TRUE_1 10 +#define APPRENTICE_FUNC_11 11 +#define APPRENTICE_FUNC_12 12 +#define APPRENTICE_FUNC_13 13 +#define APPRENTICE_FUNC_14 14 +#define APPRENTICE_FUNC_15 15 +#define APPRENTICE_FUNC_16 16 +#define APPRENTICE_FUNC_17 17 +#define APPRENTICE_FUNC_18 18 +#define APPRENTICE_FUNC_19 19 +#define APPRENTICE_FUNC_20 20 +#define APPRENTICE_FUNC_21 21 +#define APPRENTICE_FUNC_22 22 +#define APPRENTICE_FUNC_23 23 +#define APPRENTICE_FUNC_24 24 +#define APPRENTICE_FUNC_25 25 + #define APPRENTICE_ASK_WHICH_LEVEL 0 #define APPRENTICE_ASK_3SPECIES 1 #define APPRENTICE_ASK_2SPECIES 2 diff --git a/include/constants/global.h b/include/constants/global.h index 4ade1c823..c5dc86a12 100644 --- a/include/constants/global.h +++ b/include/constants/global.h @@ -48,6 +48,7 @@ #define EVENT_OBJECT_TEMPLATES_COUNT 64 #define DECOR_MAX_SECRET_BASE 16 #define DECOR_MAX_PLAYERS_HOUSE 12 +#define APPRENTICE_COUNT 4 #define PYRAMID_BAG_ITEMS_COUNT 10 #define HALL_FACILITIES_COUNT 9 // 7 facilities for single mode + tower double mode + tower multi mode. @@ -63,6 +64,7 @@ #define POKEMON_NAME_LENGTH 10 #define PLAYER_NAME_LENGTH 7 #define MAIL_WORDS_COUNT 9 +#define EASY_CHAT_BATTLE_WORDS_COUNT 6 #define MOVE_NAME_LENGTH 12 #define MALE 0 diff --git a/include/constants/pokemon.h b/include/constants/pokemon.h index b2084f154..5610a470c 100644 --- a/include/constants/pokemon.h +++ b/include/constants/pokemon.h @@ -195,6 +195,10 @@ #define MON_ALREADY_KNOWS_MOVE 0xFFFE #define MON_HAS_MAX_MOVES 0xFFFF +#define LEVEL_UP_MOVE_ID 0x01FF +#define LEVEL_UP_MOVE_LV 0xFE00 +#define LEVEL_UP_END 0xFFFF + #define MON_MALE 0x00 #define MON_FEMALE 0xFE #define MON_GENDERLESS 0xFF diff --git a/include/global.h b/include/global.h index 94dfebc28..9b98629cf 100644 --- a/include/global.h +++ b/include/global.h @@ -214,6 +214,8 @@ struct ApprenticeMon u16 item; }; +// This is for past players Apprentices or Apprentices received via Record Mix. +// For the current Apprentice, see struct PlayersApprentice struct Apprentice { u8 id:5; @@ -221,7 +223,7 @@ struct Apprentice u8 field_1; u8 number; struct ApprenticeMon party[MULTI_PARTY_SIZE]; - u16 easyChatWords[6]; + u16 easyChatWords[EASY_CHAT_BATTLE_WORDS_COUNT]; u8 playerId[TRAINER_ID_LENGTH]; u8 playerName[PLAYER_NAME_LENGTH]; u8 language; @@ -264,9 +266,9 @@ struct EmeraldBattleTowerRecord /*0x02*/ u16 winStreak; /*0x04*/ u8 name[PLAYER_NAME_LENGTH + 1]; /*0x0C*/ u8 trainerId[TRAINER_ID_LENGTH]; - /*0x10*/ u16 greeting[6]; - /*0x1C*/ u16 speechWon[6]; - /*0x28*/ u16 speechLost[6]; + /*0x10*/ u16 greeting[EASY_CHAT_BATTLE_WORDS_COUNT]; + /*0x1C*/ u16 speechWon[EASY_CHAT_BATTLE_WORDS_COUNT]; + /*0x28*/ u16 speechLost[EASY_CHAT_BATTLE_WORDS_COUNT]; /*0x34*/ struct BattleTowerPokemon party[4]; /*0xE4*/ u8 language; /*0xE8*/ u32 checksum; @@ -279,9 +281,9 @@ struct BattleTowerEReaderTrainer /*0x02*/ u16 winStreak; /*0x04*/ u8 name[PLAYER_NAME_LENGTH + 1]; /*0x0C*/ u8 trainerId[TRAINER_ID_LENGTH]; - /*0x10*/ u16 greeting[6]; - /*0x1C*/ u16 farewellPlayerLost[6]; - /*0x28*/ u16 farewellPlayerWon[6]; + /*0x10*/ u16 greeting[EASY_CHAT_BATTLE_WORDS_COUNT]; + /*0x1C*/ u16 farewellPlayerLost[EASY_CHAT_BATTLE_WORDS_COUNT]; + /*0x28*/ u16 farewellPlayerWon[EASY_CHAT_BATTLE_WORDS_COUNT]; /*0x34*/ struct BattleTowerPokemon party[FRONTIER_PARTY_SIZE]; /*0xB8*/ u32 checksum; }; @@ -413,7 +415,7 @@ struct Sav2_B8 struct PlayersApprentice { /*0xB0*/ u8 id; - /*0xB1*/ u8 activeLvlMode:2; // +1, 0 means not active + /*0xB1*/ u8 lvlMode:2; //0: Unassigned, 1: Lv 50, 2: Open Lv /*0xB1*/ u8 field_B1_1:4; /*0xB1*/ u8 field_B1_2:2; /*0xB2*/ u8 field_B2_0:3; @@ -465,7 +467,7 @@ struct SaveBlock2 /*0xA8*/ u32 field_A8; // Written to, but never read. /*0xAC*/ u32 encryptionKey; /*0xB0*/ struct PlayersApprentice playerApprentice; - /*0xDC*/ struct Apprentice apprentices[4]; // From record mixing. + /*0xDC*/ struct Apprentice apprentices[APPRENTICE_COUNT]; /*0x1EC*/ struct BerryCrush berryCrush; /*0x1FC*/ struct PokemonJumpResults pokeJump; /*0x20C*/ struct BerryPickingResults berryPick; @@ -949,10 +951,10 @@ struct SaveBlock1 /*0x2BA1*/ u8 outbreakPokemonProbability; /*0x2BA2*/ u16 outbreakDaysLeft; /*0x2BA4*/ struct GabbyAndTyData gabbyAndTyData; - /*0x2BB0*/ u16 easyChatProfile[6]; - /*0x2BBC*/ u16 easyChatBattleStart[6]; - /*0x2BC8*/ u16 easyChatBattleWon[6]; - /*0x2BD4*/ u16 easyChatBattleLost[6]; + /*0x2BB0*/ u16 easyChatProfile[EASY_CHAT_BATTLE_WORDS_COUNT]; + /*0x2BBC*/ u16 easyChatBattleStart[EASY_CHAT_BATTLE_WORDS_COUNT]; + /*0x2BC8*/ u16 easyChatBattleWon[EASY_CHAT_BATTLE_WORDS_COUNT]; + /*0x2BD4*/ u16 easyChatBattleLost[EASY_CHAT_BATTLE_WORDS_COUNT]; /*0x2BE0*/ struct MailStruct mail[MAIL_COUNT]; /*0x2E20*/ u8 additionalPhrases[8]; // bitfield for 33 additional phrases in easy chat system /*0x2E28*/ OldMan oldMan; diff --git a/include/strings.h b/include/strings.h index f135944bd..cdd02aa28 100644 --- a/include/strings.h +++ b/include/strings.h @@ -2416,6 +2416,10 @@ extern const u8 gUnknown_085EDC45[]; extern const u8 gUnknown_085EDB00[]; extern const u8 gUnknown_085EDC84[]; +// Apprentice +extern const u8 gText_Give[]; +extern const u8 gText_NoNeed[]; + // Easy Chat Entry extern const u8 gText_StopGivingPkmnMail[]; extern const u8 gText_LikeToQuitQuiz[]; -- cgit v1.2.3 From 4e6a69c29736bd9bb81049c6944e27ce46f8333c Mon Sep 17 00:00:00 2001 From: GriffinR Date: Tue, 19 Nov 2019 11:36:38 -0500 Subject: WIP Document Apprentice --- include/apprentice.h | 2 +- include/constants/apprentice.h | 64 +++++++++++++++++++++++++++++------------- include/global.h | 8 +++--- include/item_menu.h | 2 +- 4 files changed, 50 insertions(+), 26 deletions(-) (limited to 'include') diff --git a/include/apprentice.h b/include/apprentice.h index ac7dff886..44329b677 100644 --- a/include/apprentice.h +++ b/include/apprentice.h @@ -10,7 +10,7 @@ struct ApprenticeTrainer u8 facilityClass; u16 species[APPRENTICE_SPECIES_COUNT]; u8 id; - u16 easyChatWords[6]; + u16 speechLost[EASY_CHAT_BATTLE_WORDS_COUNT]; }; extern const struct ApprenticeTrainer gApprentices[]; diff --git a/include/constants/apprentice.h b/include/constants/apprentice.h index 61f257767..87b7b12f5 100644 --- a/include/constants/apprentice.h +++ b/include/constants/apprentice.h @@ -7,33 +7,57 @@ #define APPRENTICE_LVL_MODE_50 (FRONTIER_LVL_50 + 1) #define APPRENTICE_LVL_MODE_OPEN (FRONTIER_LVL_OPEN + 1) -#define APPRENTICE_FUNC_0 0 -#define APPRENTICE_FUNC_1 1 -#define APPRENTICE_FUNC_2 2 +#define APPRENTICE_FUNC_GAVE_LVLMODE 0 +#define APPRENTICE_FUNC_SET_LVLMODE 1 +#define APPRENTICE_FUNC_SET_ID 2 #define APPRENTICE_FUNC_3 3 #define APPRENTICE_FUNC_4 4 -#define APPRENTICE_FUNC_5 5 +#define APPRENTICE_FUNC_ANSWERED_QUESTION 5 #define APPRENTICE_FUNC_6 6 #define APPRENTICE_FUNC_MENU 7 #define APPRENTICE_FUNC_PRINT_MSG 8 -#define APPRENTICE_FUNC_9 9 -#define APPRENTICE_FUNC_SET_TRUE_1 10 -#define APPRENTICE_FUNC_11 11 -#define APPRENTICE_FUNC_12 12 -#define APPRENTICE_FUNC_13 13 -#define APPRENTICE_FUNC_14 14 -#define APPRENTICE_FUNC_15 15 -#define APPRENTICE_FUNC_16 16 -#define APPRENTICE_FUNC_17 17 -#define APPRENTICE_FUNC_18 18 -#define APPRENTICE_FUNC_19 19 +#define APPRENTICE_FUNC_RESET 9 +#define APPRENTICE_FUNC_CHECK_GONE 10 +#define APPRENTICE_FUNC_GET_QUESTION 11 +#define APPRENTICE_FUNC_GET_NUM_PARTY_MONS 12 +#define APPRENTICE_FUNC_SET_PARTY_MON 13 +#define APPRENTICE_FUNC_INIT_QUESTION_DATA 14 +#define APPRENTICE_FUNC_FREE_QUESTION_DATA 15 +#define APPRENTICE_FUNC_BUFFER_STRING 16 +#define APPRENTICE_FUNC_SET_MOVE 17 +#define APPRENTICE_FUNC_SET_FIRST_MON 18 +#define APPRENTICE_FUNC_OPEN_BAG 19 #define APPRENTICE_FUNC_20 20 #define APPRENTICE_FUNC_21 21 -#define APPRENTICE_FUNC_22 22 -#define APPRENTICE_FUNC_23 23 -#define APPRENTICE_FUNC_24 24 +#define APPRENTICE_FUNC_SET_GFX_SAVED 22 +#define APPRENTICE_FUNC_SET_GFX 23 +#define APPRENTICE_FUNC_SHOULD_LEAVE 24 #define APPRENTICE_FUNC_25 25 +#define APPRENTICE_MSG_PLEASE_TEACH 0 +#define APPRENTICE_MSG_REJECT 1 +#define APPRENTICE_MSG_WHICH_LVL_MODE 2 +#define APPRENTICE_MSG_THANKS_LVL_MODE 3 +#define APPRENTICE_MSG_WHICH_MON_FIRST 4 +#define APPRENTICE_MSG_THANKS_MON_FIRST 5 +#define APPRENTICE_MSG_WHICH_MON 6 +#define APPRENTICE_MSG_THANKS_MON 7 +#define APPRENTICE_MSG_WHICH_MOVE 8 +#define APPRENTICE_MSG_THANKS_MOVE 9 +#define APPRENTICE_MSG_WHAT_HELD_ITEM 10 +#define APPRENTICE_MSG_PICK_WIN_SPEECH 11 +#define APPRENTICE_MSG_THANKS_HELD_ITEM 12 +#define APPRENTICE_MSG_HOLD_NOTHING 13 +#define APPRENTICE_MSG_THANKS_NO_HELD_ITEM 14 +#define APPRENTICE_MSG_THANKS_WIN_SPEECH 15 +#define APPRENTICE_MSG_ITEM_ALREADY_SUGGESTED 16 + +#define APPRENTICE_QUESTION_WHICH_FIRST 1 +#define APPRENTICE_QUESTION_WHICH_MON 2 +#define APPRENTICE_QUESTION_WHICH_MOVE 3 +#define APPRENTICE_QUESTION_WHAT_ITEM 4 +#define APPRENTICE_QUESTION_WIN_SPEECH 5 + #define APPRENTICE_ASK_WHICH_LEVEL 0 #define APPRENTICE_ASK_3SPECIES 1 #define APPRENTICE_ASK_2SPECIES 2 @@ -48,8 +72,8 @@ #define APPRENTICE_BUFF_MOVE2 4 #define APPRENTICE_BUFF_ITEM 5 #define APPRENTICE_BUFF_NAME 6 -#define APPRENTICE_BUFF_EASY_CHAT 7 +#define APPRENTICE_BUFF_WIN_SPEECH 7 #define APPRENTICE_BUFF_LEVEL 8 -#define APPRENTICE_BUFF_SPECIES4 9 +#define APPRENTICE_BUFF_FIRST_MON_SPECIES 9 #endif // GUARD_CONSTANTS_APPRENTICE_H diff --git a/include/global.h b/include/global.h index f067f5bbc..c00d71d8f 100644 --- a/include/global.h +++ b/include/global.h @@ -223,7 +223,7 @@ struct Apprentice u8 field_1; u8 number; struct ApprenticeMon party[MULTI_PARTY_SIZE]; - u16 easyChatWords[EASY_CHAT_BATTLE_WORDS_COUNT]; + u16 speechWon[EASY_CHAT_BATTLE_WORDS_COUNT]; u8 playerId[TRAINER_ID_LENGTH]; u8 playerName[PLAYER_NAME_LENGTH]; u8 language; @@ -415,9 +415,9 @@ struct Sav2_B8 struct PlayersApprentice { /*0xB0*/ u8 id; - /*0xB1*/ u8 lvlMode:2; //0: Unassigned, 1: Lv 50, 2: Open Lv - /*0xB1*/ u8 field_B1_1:4; - /*0xB1*/ u8 field_B1_2:2; + /*0xB1*/ u8 lvlMode:2; //0: Unassigned, 1: Lv 50, 2: Open Lv + /*0xB1*/ u8 questionsAnswered:4; + /*0xB1*/ u8 firstMonId:2; /*0xB2*/ u8 field_B2_0:3; /*0xB2*/ u8 field_B2_1:2; /*0xB3*/ u8 field_B3; diff --git a/include/item_menu.h b/include/item_menu.h index a21a6da4f..508f94815 100644 --- a/include/item_menu.h +++ b/include/item_menu.h @@ -71,7 +71,7 @@ extern u16 gSpecialVar_ItemId; void sub_81AAC14(void); void FavorLadyOpenBagMenu(void); void QuizLadyOpenBagMenu(void); -void sub_81AAC28(void); +void ApprenticeOpenBagMenu(void); void sub_81AABB0(void); void SetInitialScrollAndCursorPositions(u8 pocketId); void bag_menu_mail_related(void); -- cgit v1.2.3 From a05006421b29ac49ce7173bb431d8a0419f5c143 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Wed, 20 Nov 2019 17:36:52 -0500 Subject: Document Apprentice --- include/apprentice.h | 4 ++-- include/constants/apprentice.h | 30 +++++++++++++++++++++--------- include/constants/global.h | 14 ++++++++------ include/global.h | 26 +++++++++++++------------- 4 files changed, 44 insertions(+), 30 deletions(-) (limited to 'include') diff --git a/include/apprentice.h b/include/apprentice.h index 44329b677..27ce0371e 100644 --- a/include/apprentice.h +++ b/include/apprentice.h @@ -5,7 +5,7 @@ struct ApprenticeTrainer { - u8 name[6][PLAYER_NAME_LENGTH + 1]; // For all six languages. + u8 name[NUM_LANGUAGES - 1][PLAYER_NAME_LENGTH + 1]; // For all languages except the unused one. u16 otId; u8 facilityClass; u16 species[APPRENTICE_SPECIES_COUNT]; @@ -15,7 +15,7 @@ struct ApprenticeTrainer extern const struct ApprenticeTrainer gApprentices[]; -void CopyFriendsApprenticeChallengeText(u8 saveblockApprenticeId); +void BufferApprenticeChallengeText(u8 saveApprenticeId); void Apprentice_EnableBothScriptContexts(void); void ResetApprenticeStruct(struct Apprentice *apprentice); void ResetAllApprenticeData(void); diff --git a/include/constants/apprentice.h b/include/constants/apprentice.h index 87b7b12f5..ec35a2361 100644 --- a/include/constants/apprentice.h +++ b/include/constants/apprentice.h @@ -1,8 +1,11 @@ #ifndef GUARD_CONSTANTS_APPRENTICE_H #define GUARD_CONSTANTS_APPRENTICE_H -#define APPRENTICE_SPECIES_COUNT 10 #define NUM_APPRENTICES 16 +#define APPRENTICE_SPECIES_COUNT 10 + +#define NUM_WHICH_MON_QUESTIONS MULTI_PARTY_SIZE +#define NUM_WHICH_MOVE_QUESTIONS 5 #define APPRENTICE_LVL_MODE_50 (FRONTIER_LVL_50 + 1) #define APPRENTICE_LVL_MODE_OPEN (FRONTIER_LVL_OPEN + 1) @@ -10,10 +13,10 @@ #define APPRENTICE_FUNC_GAVE_LVLMODE 0 #define APPRENTICE_FUNC_SET_LVLMODE 1 #define APPRENTICE_FUNC_SET_ID 2 -#define APPRENTICE_FUNC_3 3 -#define APPRENTICE_FUNC_4 4 +#define APPRENTICE_FUNC_SHUFFLE_SPECIES 3 +#define APPRENTICE_FUNC_RANDOMIZE_QUESTIONS 4 #define APPRENTICE_FUNC_ANSWERED_QUESTION 5 -#define APPRENTICE_FUNC_6 6 +#define APPRENTICE_FUNC_IS_FINAL_QUESTION 6 #define APPRENTICE_FUNC_MENU 7 #define APPRENTICE_FUNC_PRINT_MSG 8 #define APPRENTICE_FUNC_RESET 9 @@ -25,14 +28,14 @@ #define APPRENTICE_FUNC_FREE_QUESTION_DATA 15 #define APPRENTICE_FUNC_BUFFER_STRING 16 #define APPRENTICE_FUNC_SET_MOVE 17 -#define APPRENTICE_FUNC_SET_FIRST_MON 18 +#define APPRENTICE_FUNC_SET_LEAD_MON 18 #define APPRENTICE_FUNC_OPEN_BAG 19 -#define APPRENTICE_FUNC_20 20 -#define APPRENTICE_FUNC_21 21 +#define APPRENTICE_FUNC_TRY_SET_HELD_ITEM 20 +#define APPRENTICE_FUNC_SAVE 21 #define APPRENTICE_FUNC_SET_GFX_SAVED 22 #define APPRENTICE_FUNC_SET_GFX 23 #define APPRENTICE_FUNC_SHOULD_LEAVE 24 -#define APPRENTICE_FUNC_25 25 +#define APPRENTICE_FUNC_SHIFT_SAVED 25 #define APPRENTICE_MSG_PLEASE_TEACH 0 #define APPRENTICE_MSG_REJECT 1 @@ -58,6 +61,15 @@ #define APPRENTICE_QUESTION_WHAT_ITEM 4 #define APPRENTICE_QUESTION_WIN_SPEECH 5 +// Would be redundant with the above if they used the same values +// but they do this to skip the "which mon" questions and store the below id in a 2 bit field +// These IDs are randomly shuffled in an array to determine the order of questions asked by the Apprentice +// The last question asked is always picking their win speech +#define QUESTION_ID_WIN_SPEECH 0 +#define QUESTION_ID_WHAT_ITEM 1 +#define QUESTION_ID_WHICH_MOVE 2 +#define QUESTION_ID_WHICH_FIRST 3 + #define APPRENTICE_ASK_WHICH_LEVEL 0 #define APPRENTICE_ASK_3SPECIES 1 #define APPRENTICE_ASK_2SPECIES 2 @@ -74,6 +86,6 @@ #define APPRENTICE_BUFF_NAME 6 #define APPRENTICE_BUFF_WIN_SPEECH 7 #define APPRENTICE_BUFF_LEVEL 8 -#define APPRENTICE_BUFF_FIRST_MON_SPECIES 9 +#define APPRENTICE_BUFF_LEAD_MON_SPECIES 9 #endif // GUARD_CONSTANTS_APPRENTICE_H diff --git a/include/constants/global.h b/include/constants/global.h index c5dc86a12..3ee7650a8 100644 --- a/include/constants/global.h +++ b/include/constants/global.h @@ -18,12 +18,13 @@ #define VERSION_GAMECUBE 15 #define LANGUAGE_JAPANESE 1 -#define LANGUAGE_ENGLISH 2 -#define LANGUAGE_FRENCH 3 -#define LANGUAGE_ITALIAN 4 -#define LANGUAGE_GERMAN 5 -#define LANGUAGE_KOREAN 6 // 6 goes unused but the theory is it was meant to be Korean -#define LANGUAGE_SPANISH 7 +#define LANGUAGE_ENGLISH 2 +#define LANGUAGE_FRENCH 3 +#define LANGUAGE_ITALIAN 4 +#define LANGUAGE_GERMAN 5 +#define LANGUAGE_KOREAN 6 // 6 goes unused but the theory is it was meant to be Korean +#define LANGUAGE_SPANISH 7 +#define NUM_LANGUAGES 7 #define GAME_VERSION (VERSION_EMERALD) #define GAME_LANGUAGE (LANGUAGE_ENGLISH) @@ -49,6 +50,7 @@ #define DECOR_MAX_SECRET_BASE 16 #define DECOR_MAX_PLAYERS_HOUSE 12 #define APPRENTICE_COUNT 4 +#define APPRENTICE_MAX_QUESTIONS 9 #define PYRAMID_BAG_ITEMS_COUNT 10 #define HALL_FACILITIES_COUNT 9 // 7 facilities for single mode + tower double mode + tower multi mode. diff --git a/include/global.h b/include/global.h index c00d71d8f..75a63cdb2 100644 --- a/include/global.h +++ b/include/global.h @@ -220,7 +220,7 @@ struct Apprentice { u8 id:5; u8 lvlMode:2; // + 1 - u8 field_1; + u8 numQuestions; u8 number; struct ApprenticeMon party[MULTI_PARTY_SIZE]; u16 speechWon[EASY_CHAT_BATTLE_WORDS_COUNT]; @@ -403,13 +403,13 @@ struct BattleFrontier /*0xEFC*/ struct FrontierMonData field_EFC[3]; }; -struct Sav2_B8 +struct ApprenticeQuestion { - u8 unk0_0:2; - u8 unk0_1:2; - u8 unk0_2:2; - u8 unk0_3:2; - u16 unk2; + u8 questionId:2; + u8 monId:2; + u8 moveSlot:2; + u8 suggestedChange:2; // TRUE if told to use held item or second move, FALSE if told to use no item or first move + u16 data; // used both as an itemId and a moveId }; struct PlayersApprentice @@ -417,12 +417,12 @@ struct PlayersApprentice /*0xB0*/ u8 id; /*0xB1*/ u8 lvlMode:2; //0: Unassigned, 1: Lv 50, 2: Open Lv /*0xB1*/ u8 questionsAnswered:4; - /*0xB1*/ u8 firstMonId:2; - /*0xB2*/ u8 field_B2_0:3; - /*0xB2*/ u8 field_B2_1:2; - /*0xB3*/ u8 field_B3; - /*0xB4*/ u8 monIds[MULTI_PARTY_SIZE]; - /*0xB8*/ struct Sav2_B8 field_B8[9]; + /*0xB1*/ u8 leadMonId:2; + /*0xB2*/ u8 party:3; + /*0xB2*/ u8 field_B2_1:2; + /*0xB3*/ u8 unused; + /*0xB4*/ u8 speciesIds[MULTI_PARTY_SIZE]; + /*0xB8*/ struct ApprenticeQuestion questions[APPRENTICE_MAX_QUESTIONS]; }; struct RankingHall1P -- cgit v1.2.3 From b2eb49888d497b5f04697bf4f6fe14904a3fafe3 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Wed, 20 Nov 2019 19:00:08 -0500 Subject: Clean up Apprentice doc --- include/constants/apprentice.h | 121 ++++++++++++++++++++--------------------- include/global.h | 2 +- 2 files changed, 60 insertions(+), 63 deletions(-) (limited to 'include') diff --git a/include/constants/apprentice.h b/include/constants/apprentice.h index ec35a2361..63434a4fc 100644 --- a/include/constants/apprentice.h +++ b/include/constants/apprentice.h @@ -10,50 +10,50 @@ #define APPRENTICE_LVL_MODE_50 (FRONTIER_LVL_50 + 1) #define APPRENTICE_LVL_MODE_OPEN (FRONTIER_LVL_OPEN + 1) -#define APPRENTICE_FUNC_GAVE_LVLMODE 0 -#define APPRENTICE_FUNC_SET_LVLMODE 1 -#define APPRENTICE_FUNC_SET_ID 2 -#define APPRENTICE_FUNC_SHUFFLE_SPECIES 3 -#define APPRENTICE_FUNC_RANDOMIZE_QUESTIONS 4 -#define APPRENTICE_FUNC_ANSWERED_QUESTION 5 -#define APPRENTICE_FUNC_IS_FINAL_QUESTION 6 -#define APPRENTICE_FUNC_MENU 7 -#define APPRENTICE_FUNC_PRINT_MSG 8 -#define APPRENTICE_FUNC_RESET 9 -#define APPRENTICE_FUNC_CHECK_GONE 10 -#define APPRENTICE_FUNC_GET_QUESTION 11 -#define APPRENTICE_FUNC_GET_NUM_PARTY_MONS 12 -#define APPRENTICE_FUNC_SET_PARTY_MON 13 -#define APPRENTICE_FUNC_INIT_QUESTION_DATA 14 -#define APPRENTICE_FUNC_FREE_QUESTION_DATA 15 -#define APPRENTICE_FUNC_BUFFER_STRING 16 -#define APPRENTICE_FUNC_SET_MOVE 17 -#define APPRENTICE_FUNC_SET_LEAD_MON 18 -#define APPRENTICE_FUNC_OPEN_BAG 19 -#define APPRENTICE_FUNC_TRY_SET_HELD_ITEM 20 -#define APPRENTICE_FUNC_SAVE 21 -#define APPRENTICE_FUNC_SET_GFX_SAVED 22 -#define APPRENTICE_FUNC_SET_GFX 23 -#define APPRENTICE_FUNC_SHOULD_LEAVE 24 -#define APPRENTICE_FUNC_SHIFT_SAVED 25 +#define APPRENTICE_FUNC_GAVE_LVLMODE 0 +#define APPRENTICE_FUNC_SET_LVLMODE 1 +#define APPRENTICE_FUNC_SET_ID 2 +#define APPRENTICE_FUNC_SHUFFLE_SPECIES 3 +#define APPRENTICE_FUNC_RANDOMIZE_QUESTIONS 4 +#define APPRENTICE_FUNC_ANSWERED_QUESTION 5 +#define APPRENTICE_FUNC_IS_FINAL_QUESTION 6 +#define APPRENTICE_FUNC_MENU 7 +#define APPRENTICE_FUNC_PRINT_MSG 8 +#define APPRENTICE_FUNC_RESET 9 +#define APPRENTICE_FUNC_CHECK_GONE 10 +#define APPRENTICE_FUNC_GET_QUESTION 11 +#define APPRENTICE_FUNC_GET_NUM_PARTY_MONS 12 +#define APPRENTICE_FUNC_SET_PARTY_MON 13 +#define APPRENTICE_FUNC_INIT_QUESTION_DATA 14 +#define APPRENTICE_FUNC_FREE_QUESTION_DATA 15 +#define APPRENTICE_FUNC_BUFFER_STRING 16 +#define APPRENTICE_FUNC_SET_MOVE 17 +#define APPRENTICE_FUNC_SET_LEAD_MON 18 +#define APPRENTICE_FUNC_OPEN_BAG 19 +#define APPRENTICE_FUNC_TRY_SET_HELD_ITEM 20 +#define APPRENTICE_FUNC_SAVE 21 +#define APPRENTICE_FUNC_SET_GFX_SAVED 22 +#define APPRENTICE_FUNC_SET_GFX 23 +#define APPRENTICE_FUNC_SHOULD_LEAVE 24 +#define APPRENTICE_FUNC_SHIFT_SAVED 25 -#define APPRENTICE_MSG_PLEASE_TEACH 0 -#define APPRENTICE_MSG_REJECT 1 -#define APPRENTICE_MSG_WHICH_LVL_MODE 2 -#define APPRENTICE_MSG_THANKS_LVL_MODE 3 -#define APPRENTICE_MSG_WHICH_MON_FIRST 4 -#define APPRENTICE_MSG_THANKS_MON_FIRST 5 -#define APPRENTICE_MSG_WHICH_MON 6 -#define APPRENTICE_MSG_THANKS_MON 7 -#define APPRENTICE_MSG_WHICH_MOVE 8 -#define APPRENTICE_MSG_THANKS_MOVE 9 -#define APPRENTICE_MSG_WHAT_HELD_ITEM 10 -#define APPRENTICE_MSG_PICK_WIN_SPEECH 11 -#define APPRENTICE_MSG_THANKS_HELD_ITEM 12 -#define APPRENTICE_MSG_HOLD_NOTHING 13 -#define APPRENTICE_MSG_THANKS_NO_HELD_ITEM 14 -#define APPRENTICE_MSG_THANKS_WIN_SPEECH 15 -#define APPRENTICE_MSG_ITEM_ALREADY_SUGGESTED 16 +#define APPRENTICE_MSG_PLEASE_TEACH 0 +#define APPRENTICE_MSG_REJECT 1 +#define APPRENTICE_MSG_WHICH_LVL_MODE 2 +#define APPRENTICE_MSG_THANKS_LVL_MODE 3 +#define APPRENTICE_MSG_WHICH_MON_FIRST 4 +#define APPRENTICE_MSG_THANKS_MON_FIRST 5 +#define APPRENTICE_MSG_WHICH_MON 6 +#define APPRENTICE_MSG_THANKS_MON 7 +#define APPRENTICE_MSG_WHICH_MOVE 8 +#define APPRENTICE_MSG_THANKS_MOVE 9 +#define APPRENTICE_MSG_WHAT_HELD_ITEM 10 +#define APPRENTICE_MSG_PICK_WIN_SPEECH 11 +#define APPRENTICE_MSG_THANKS_HELD_ITEM 12 +#define APPRENTICE_MSG_HOLD_NOTHING 13 +#define APPRENTICE_MSG_THANKS_NO_HELD_ITEM 14 +#define APPRENTICE_MSG_THANKS_WIN_SPEECH 15 +#define APPRENTICE_MSG_ITEM_ALREADY_SUGGESTED 16 #define APPRENTICE_QUESTION_WHICH_FIRST 1 #define APPRENTICE_QUESTION_WHICH_MON 2 @@ -61,31 +61,28 @@ #define APPRENTICE_QUESTION_WHAT_ITEM 4 #define APPRENTICE_QUESTION_WIN_SPEECH 5 -// Would be redundant with the above if they used the same values -// but they do this to skip the "which mon" questions and store the below id in a 2 bit field -// These IDs are randomly shuffled in an array to determine the order of questions asked by the Apprentice -// The last question asked is always picking their win speech +// Would be redundant with the above set if they used the same values #define QUESTION_ID_WIN_SPEECH 0 #define QUESTION_ID_WHAT_ITEM 1 #define QUESTION_ID_WHICH_MOVE 2 #define QUESTION_ID_WHICH_FIRST 3 -#define APPRENTICE_ASK_WHICH_LEVEL 0 -#define APPRENTICE_ASK_3SPECIES 1 -#define APPRENTICE_ASK_2SPECIES 2 -#define APPRENTICE_ASK_MOVES 3 -#define APPRENTICE_ASK_GIVE 4 -#define APPRENTICE_ASK_YES_NO 6 +#define APPRENTICE_ASK_WHICH_LEVEL 0 +#define APPRENTICE_ASK_3SPECIES 1 +#define APPRENTICE_ASK_2SPECIES 2 +#define APPRENTICE_ASK_MOVES 3 +#define APPRENTICE_ASK_GIVE 4 +#define APPRENTICE_ASK_YES_NO 6 -#define APPRENTICE_BUFF_SPECIES1 0 -#define APPRENTICE_BUFF_SPECIES2 1 -#define APPRENTICE_BUFF_SPECIES3 2 -#define APPRENTICE_BUFF_MOVE1 3 -#define APPRENTICE_BUFF_MOVE2 4 -#define APPRENTICE_BUFF_ITEM 5 -#define APPRENTICE_BUFF_NAME 6 -#define APPRENTICE_BUFF_WIN_SPEECH 7 -#define APPRENTICE_BUFF_LEVEL 8 +#define APPRENTICE_BUFF_SPECIES1 0 +#define APPRENTICE_BUFF_SPECIES2 1 +#define APPRENTICE_BUFF_SPECIES3 2 +#define APPRENTICE_BUFF_MOVE1 3 +#define APPRENTICE_BUFF_MOVE2 4 +#define APPRENTICE_BUFF_ITEM 5 +#define APPRENTICE_BUFF_NAME 6 +#define APPRENTICE_BUFF_WIN_SPEECH 7 +#define APPRENTICE_BUFF_LEVEL 8 #define APPRENTICE_BUFF_LEAD_MON_SPECIES 9 #endif // GUARD_CONSTANTS_APPRENTICE_H diff --git a/include/global.h b/include/global.h index 75a63cdb2..d33be5d82 100644 --- a/include/global.h +++ b/include/global.h @@ -419,7 +419,7 @@ struct PlayersApprentice /*0xB1*/ u8 questionsAnswered:4; /*0xB1*/ u8 leadMonId:2; /*0xB2*/ u8 party:3; - /*0xB2*/ u8 field_B2_1:2; + /*0xB2*/ u8 saveId:2; /*0xB3*/ u8 unused; /*0xB4*/ u8 speciesIds[MULTI_PARTY_SIZE]; /*0xB8*/ struct ApprenticeQuestion questions[APPRENTICE_MAX_QUESTIONS]; -- cgit v1.2.3