Fixed missing dummy item after reloading (#5552)

Fixes #5548

Thanks to @reunite-ro and @Triedge
This commit is contained in:
Lemongrass3110 2020-11-17 10:14:11 +01:00 committed by GitHub
parent 8053a72890
commit 9cdc008bfe
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 26 additions and 21 deletions

View File

@ -84,7 +84,11 @@ bool YamlDatabase::verifyCompatibility( const YAML::Node& rootNode ){
}
bool YamlDatabase::load(){
return this->load( this->getDefaultLocation() );
bool ret = this->load( this->getDefaultLocation() );
this->loadingFinished();
return ret;
}
bool YamlDatabase::reload(){
@ -128,8 +132,6 @@ bool YamlDatabase::load(const std::string& path) {
this->parseImports( rootNode );
this->loadingFinished();
return true;
}

View File

@ -1019,6 +1019,23 @@ uint64 ItemDatabase::parseBodyNode(const YAML::Node &node) {
return 1;
}
void ItemDatabase::loadingFinished(){
if( !this->exists( ITEMID_DUMMY ) ){
// Create dummy item
std::shared_ptr<item_data> dummy_item = std::make_shared<item_data>();
dummy_item->nameid = ITEMID_DUMMY;
dummy_item->weight = 1;
dummy_item->value_sell = 1;
dummy_item->type = IT_ETC;
dummy_item->name = "UNKNOWN_ITEM";
dummy_item->ename = "Unknown Item";
dummy_item->view_id = UNKNOWN_ITEM_ID;
item_db.put( ITEMID_DUMMY, dummy_item );
}
}
ItemDatabase item_db;
/**
@ -1364,23 +1381,6 @@ static void itemdb_jobid2mapid(uint64 bclass[3], e_mapid jobmask, bool active)
}
}
/**
* Create dummy item_data
*/
static void itemdb_create_dummy(void) {
std::shared_ptr<item_data> dummy_item;
dummy_item = std::make_shared<item_data>();
dummy_item->nameid = ITEMID_DUMMY;
dummy_item->weight = 1;
dummy_item->value_sell = 1;
dummy_item->type = IT_ETC;
dummy_item->name = "UNKNOWN_ITEM";
dummy_item->ename = "Unknown Item";
dummy_item->view_id = UNKNOWN_ITEM_ID;
item_db.put(ITEMID_DUMMY, dummy_item);
}
/*==========================================
* Loads an item from the db. If not found, it will return the dummy item.
* @param nameid
@ -2758,7 +2758,6 @@ void do_final_itemdb(void) {
*/
void do_init_itemdb(void) {
itemdb_group = uidb_alloc(DB_OPT_BASE);
itemdb_create_dummy();
itemdb_read();
if (battle_config.feature_roulette)

View File

@ -989,6 +989,7 @@ public:
const std::string getDefaultLocation();
uint64 parseBodyNode(const YAML::Node& node);
void loadingFinished();
};
extern ItemDatabase item_db;

View File

@ -763,6 +763,9 @@ uint64 ItemDatabase::parseBodyNode(const YAML::Node& node) {
return 1;
}
void ItemDatabase::loadingFinished(){
}
ItemDatabase item_db;
static bool parse_mob_constants( char* split[], int columns, int current ){