make item data stack count consistent with bank item stack count at load time

This commit is contained in:
Martin Michelsen
2025-12-25 23:21:32 -08:00
parent d79d551c68
commit 8eeb487bc7
2 changed files with 19 additions and 0 deletions
+18
View File
@@ -783,6 +783,7 @@ std::shared_ptr<PlayerBank> Client::bank_file(bool allow_load) {
auto s = this->require_server_state();
this->bank_data->max_items = s->bb_max_bank_items;
this->bank_data->max_meseta = s->bb_max_bank_meseta;
this->update_bank_data_after_load(this->bank_data);
}
return this->bank_data;
}
@@ -1033,6 +1034,23 @@ void Client::update_character_data_after_load(shared_ptr<PSOBBCharacterFile> cha
charfile->guild_card.language = lang;
}
void Client::update_bank_data_after_load(shared_ptr<PlayerBank> bank) {
auto s = this->require_server_state();
auto limits = s->item_stack_limits(this->version());
for (auto& item : bank->items) {
if (item.data.is_stackable(*limits)) {
if (item.data.data1[5] != item.amount) {
this->log.info_f("Updating item data stack count from bank stack count ({} -> {}) for {}",
item.data.data1[5], item.amount, item.data.hex());
item.data.data1[5] = item.amount;
}
} else if (item.amount != 1) {
this->log.info_f("Clearing bank stack count ({}) for {}", item.amount, item.data.hex());
item.amount = 1;
}
}
}
void Client::save_all() {
if (this->system_data) {
this->save_system_file();
+1
View File
@@ -356,4 +356,5 @@ private:
void load_all_files();
void update_character_data_after_load(std::shared_ptr<PSOBBCharacterFile> character_data);
void update_bank_data_after_load(std::shared_ptr<PlayerBank> bank_data);
};