diff --git a/src/CommandFormats.hh b/src/CommandFormats.hh index 19e633ef..fa19bbd8 100644 --- a/src/CommandFormats.hh +++ b/src/CommandFormats.hh @@ -3848,6 +3848,12 @@ struct G_SwitchStateChanged_6x05 { // 6x06: Send guild card +struct G_SendGuildCard_DCNTE_6x06 { + G_UnusedHeader header; + GuildCardDCNTE guild_card; + uint8_t unused; +} __packed__; + struct G_SendGuildCard_DC_6x06 { G_UnusedHeader header; GuildCardDC guild_card; diff --git a/src/PlayerSubordinates.hh b/src/PlayerSubordinates.hh index 3c718231..4bbaf9f4 100644 --- a/src/PlayerSubordinates.hh +++ b/src/PlayerSubordinates.hh @@ -194,6 +194,19 @@ struct PlayerDispDataBB { void apply_dressing_room(const PlayerDispDataBBPreview&); } __attribute__((packed)); +struct GuildCardDCNTE { + /* 00 */ le_uint32_t player_tag = 0; + /* 04 */ le_uint32_t guild_card_number = 0; + /* 08 */ pstring name; + /* 20 */ pstring description; + /* 68 */ parray unused2; + /* 77 */ uint8_t present = 0; + /* 78 */ uint8_t language = 0; + /* 79 */ uint8_t section_id = 0; + /* 7A */ uint8_t char_class = 0; + /* 7B */ +} __attribute__((packed)); + struct GuildCardDC { /* 00 */ le_uint32_t player_tag = 0; /* 04 */ le_uint32_t guild_card_number = 0; diff --git a/src/ReceiveSubcommands.cc b/src/ReceiveSubcommands.cc index b5a6976d..57018ff3 100644 --- a/src/ReceiveSubcommands.cc +++ b/src/ReceiveSubcommands.cc @@ -984,7 +984,11 @@ static void on_send_guild_card(shared_ptr c, uint8_t command, uint8_t fl } switch (c->version()) { - case Version::DC_NTE: + case Version::DC_NTE: { + const auto& cmd = check_size_t(data, size); + c->character(true, false)->guild_card.description.encode(cmd.guild_card.description.decode(c->language()), c->language()); + break; + } case Version::DC_V1_11_2000_PROTOTYPE: case Version::DC_V1: case Version::DC_V2: { diff --git a/src/SendCommands.cc b/src/SendCommands.cc index 0f52f1ef..4c90586e 100644 --- a/src/SendCommands.cc +++ b/src/SendCommands.cc @@ -1177,10 +1177,12 @@ void send_guild_card( uint8_t char_class) { switch (ch.version) { case Version::DC_NTE: + send_guild_card_dc_pc_gc_t( + ch, guild_card_number, name, description, language, section_id, char_class); + break; case Version::DC_V1_11_2000_PROTOTYPE: case Version::DC_V1: case Version::DC_V2: - // TODO: Is this the right format and subcommand for NTE and the prototype? send_guild_card_dc_pc_gc_t( ch, guild_card_number, name, description, language, section_id, char_class); break;