add support for all versions in ItemParameterTable

This commit is contained in:
Martin Michelsen
2024-01-07 21:33:10 -08:00
parent d3bc2dad4f
commit 695404165b
61 changed files with 1431 additions and 580 deletions
+5 -4
View File
@@ -2255,9 +2255,10 @@ void send_execute_item_trade(shared_ptr<Client> c, const vector<ItemData>& items
}
cmd.target_client_id = c->lobby_client_id;
cmd.item_count = items.size();
auto item_parameter_table = s->item_parameter_table_for_encode(c->version());
for (size_t x = 0; x < items.size(); x++) {
cmd.item_datas[x] = items[x];
cmd.item_datas[x].encode_for_version(c->version(), s->item_parameter_table(c->version()));
cmd.item_datas[x].encode_for_version(c->version(), item_parameter_table);
}
send_command_t(c, 0xD3, 0x00, cmd);
}
@@ -2433,7 +2434,7 @@ void send_game_item_state(shared_ptr<Client> c) {
fi.unknown_a2 = 0;
fi.drop_number = (floor == 0) ? 0xFFFF : (decompressed_header.next_drop_number_per_floor.at(floor - 1)++);
fi.item = item->data;
fi.item.encode_for_version(c->version(), s->item_parameter_table(c->version()));
fi.item.encode_for_version(c->version(), s->item_parameter_table_for_encode(c->version()));
floor_items_w.put(fi);
decompressed_header.floor_item_count_per_floor.at(floor)++;
@@ -2511,7 +2512,7 @@ void send_drop_item_to_channel(shared_ptr<ServerState> s, Channel& ch, const Ite
uint8_t subcommand = get_pre_v1_subcommand(ch.version, 0x51, 0x58, 0x5F);
G_DropItem_PC_V3_BB_6x5F cmd = {
{{subcommand, 0x0B, 0x0000}, {floor, from_enemy, entity_id, x, z, 0, 0, item}}, 0};
cmd.item.item.encode_for_version(ch.version, s->item_parameter_table(ch.version));
cmd.item.item.encode_for_version(ch.version, s->item_parameter_table_for_encode(ch.version));
ch.send(0x60, 0x00, &cmd, sizeof(cmd));
}
@@ -2530,7 +2531,7 @@ void send_drop_stacked_item_to_channel(
shared_ptr<ServerState> s, Channel& ch, const ItemData& item, uint8_t floor, float x, float z) {
uint8_t subcommand = get_pre_v1_subcommand(ch.version, 0x4F, 0x56, 0x5D);
G_DropStackedItem_PC_V3_BB_6x5D cmd = {{{subcommand, 0x0A, 0x0000}, floor, 0, x, z, item}, 0};
cmd.item_data.encode_for_version(ch.version, s->item_parameter_table(ch.version));
cmd.item_data.encode_for_version(ch.version, s->item_parameter_table_for_encode(ch.version));
ch.send(0x60, 0x00, &cmd, sizeof(cmd));
}