diff --git a/src/CommandFormats.hh b/src/CommandFormats.hh index b5adea9f..c56a582e 100644 --- a/src/CommandFormats.hh +++ b/src/CommandFormats.hh @@ -2059,20 +2059,10 @@ struct C_CreateGame_BB_C1 : C_CreateGame { // C2 (C->S): Set choice search parameters // Server does not respond. +// The ChoiceSearchConfig structure is defined in Player.hh. -template -struct C_ChoiceSearchSelections_C2_C3 { - le_uint16_t disabled = 0; // 0 = enabled, 1 = disabled. Unused for command C3 - le_uint16_t unused = 0; - struct Entry { - ItemIDT parent_category_id = 0; - ItemIDT category_id = 0; - } __packed__; - Entry entries[0]; -} __packed__; - -struct C_ChoiceSearchSelections_DC_C2_C3 : C_ChoiceSearchSelections_C2_C3 { } __packed__; -struct C_ChoiceSearchSelections_PC_V3_BB_C2_C3 : C_ChoiceSearchSelections_C2_C3 { } __packed__; +struct C_ChoiceSearchSelections_DC_C2_C3 : ChoiceSearchConfig { } __packed__; +struct C_ChoiceSearchSelections_PC_V3_BB_C2_C3 : ChoiceSearchConfig { } __packed__; // C3 (C->S): Execute choice search // Same format as C2. The disabled field is unused. diff --git a/src/Player.hh b/src/Player.hh index dcb58b17..67655270 100644 --- a/src/Player.hh +++ b/src/Player.hh @@ -383,6 +383,20 @@ struct PlayerChallengeDataBB { +template +struct ChoiceSearchConfig { + // 0 = enabled, 1 = disabled. Unused for command C3 + le_uint16_t choice_search_disabled = 0; + le_uint16_t unused = 0; + struct Entry { + ItemIDT parent_category_id = 0; + ItemIDT category_id = 0; + } __attribute__((packed)); + parray entries; +} __attribute__((packed)); + + + struct PSOPlayerDataDCPC { // For command 61 PlayerInventory inventory; PlayerDispDataDCPCV3 disp; @@ -392,7 +406,7 @@ struct PSOPlayerDataV3 { // For command 61 PlayerInventory inventory; PlayerDispDataDCPCV3 disp; PlayerChallengeDataV3 challenge_data; - parray unknown; + ChoiceSearchConfig choice_search_config; ptext info_board; parray blocked_senders; le_uint32_t auto_reply_enabled; @@ -406,7 +420,7 @@ struct PSOPlayerDataGCEp3 { // For command 61 PlayerInventory inventory; PlayerDispDataDCPCV3 disp; PlayerChallengeDataV3 challenge_data; - parray unknown; + ChoiceSearchConfig choice_search_config; ptext info_board; parray blocked_senders; le_uint32_t auto_reply_enabled; @@ -418,7 +432,7 @@ struct PSOPlayerDataBB { // For command 61 PlayerInventory inventory; PlayerDispDataBB disp; PlayerChallengeDataBB challenge_data; - parray unknown; + ChoiceSearchConfig choice_search_config; ptext info_board; parray blocked_senders; le_uint32_t auto_reply_enabled;