load non-v4 level tables

This commit is contained in:
Martin Michelsen
2024-05-17 20:32:52 -07:00
parent f71980382a
commit d8230eb37a
11 changed files with 110 additions and 35 deletions
+14 -6
View File
@@ -775,12 +775,8 @@ void Client::load_all_files() {
player_data_log.info("Loaded system data from %s", char_filename.c_str());
}
uint8_t lang = this->language();
player_data_log.info("Overriding language fields in save files with %02hhX (%c)",
lang, char_for_language_code(lang));
this->character_data->inventory.language = lang;
this->character_data->guild_card.language = lang;
this->system_data->base.language = lang;
this->update_character_data_after_load(this->character_data);
this->system_data->base.language = this->language();
} else {
player_data_log.info("Character file is missing: %s", char_filename.c_str());
@@ -873,6 +869,7 @@ void Client::load_all_files() {
} else {
player_data_log.info("Loaded legacy player data from %s", nsc_filename.c_str());
}
this->update_character_data_after_load(this->character_data);
}
}
@@ -892,6 +889,15 @@ void Client::load_all_files() {
}
}
void Client::update_character_data_after_load(shared_ptr<PSOBBCharacterFile> charfile) {
charfile->import_tethealla_material_usage(this->require_server_state()->level_table(this->version()));
uint8_t lang = this->language();
player_data_log.info("Overriding language fields in save files with %02hhX (%c)", lang, char_for_language_code(lang));
charfile->inventory.language = lang;
charfile->guild_card.language = lang;
}
void Client::save_all() {
if (this->system_data) {
this->save_system_file();
@@ -991,6 +997,7 @@ void Client::load_backup_character(uint32_t account_id, size_t index) {
throw runtime_error("incorrect flag in character file header");
}
this->character_data = make_shared<PSOBBCharacterFile>(freadx<PSOBBCharacterFile>(f.get()));
this->update_character_data_after_load(this->character_data);
this->v1_v2_last_reported_disp.reset();
}
@@ -1075,6 +1082,7 @@ void Client::use_character_bank(int8_t index) {
throw runtime_error("incorrect flag in character file header");
}
this->external_bank_character = make_shared<PSOBBCharacterFile>(freadx<PSOBBCharacterFile>(f.get()));
this->update_character_data_after_load(this->external_bank_character);
this->external_bank_character_index = index;
files_manager->set_character(filename, this->external_bank_character);
player_data_log.info("Loaded character data from %s for external bank", filename.c_str());