add DC NTE format for 6x06 command

This commit is contained in:
Martin Michelsen
2024-03-03 22:33:55 -08:00
parent 52688982ea
commit 454bcf107b
4 changed files with 27 additions and 2 deletions
+6
View File
@@ -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;
+13
View File
@@ -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<TextEncoding::ASCII, 0x18> name;
/* 20 */ pstring<TextEncoding::MARKED, 0x48> description;
/* 68 */ parray<uint8_t, 0x0F> 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;
+5 -1
View File
@@ -984,7 +984,11 @@ static void on_send_guild_card(shared_ptr<Client> c, uint8_t command, uint8_t fl
}
switch (c->version()) {
case Version::DC_NTE:
case Version::DC_NTE: {
const auto& cmd = check_size_t<G_SendGuildCard_DCNTE_6x06>(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: {
+3 -1
View File
@@ -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<G_SendGuildCard_DCNTE_6x06>(
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<G_SendGuildCard_DC_6x06>(
ch, guild_card_number, name, description, language, section_id, char_class);
break;