make item data stack count consistent with bank item stack count at load time
This commit is contained in:
@@ -783,6 +783,7 @@ std::shared_ptr<PlayerBank> Client::bank_file(bool allow_load) {
|
|||||||
auto s = this->require_server_state();
|
auto s = this->require_server_state();
|
||||||
this->bank_data->max_items = s->bb_max_bank_items;
|
this->bank_data->max_items = s->bb_max_bank_items;
|
||||||
this->bank_data->max_meseta = s->bb_max_bank_meseta;
|
this->bank_data->max_meseta = s->bb_max_bank_meseta;
|
||||||
|
this->update_bank_data_after_load(this->bank_data);
|
||||||
}
|
}
|
||||||
return 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;
|
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() {
|
void Client::save_all() {
|
||||||
if (this->system_data) {
|
if (this->system_data) {
|
||||||
this->save_system_file();
|
this->save_system_file();
|
||||||
|
|||||||
@@ -356,4 +356,5 @@ private:
|
|||||||
|
|
||||||
void load_all_files();
|
void load_all_files();
|
||||||
void update_character_data_after_load(std::shared_ptr<PSOBBCharacterFile> character_data);
|
void update_character_data_after_load(std::shared_ptr<PSOBBCharacterFile> character_data);
|
||||||
|
void update_bank_data_after_load(std::shared_ptr<PlayerBank> bank_data);
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user