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(){ bool YamlDatabase::load(){
return this->load( this->getDefaultLocation() ); bool ret = this->load( this->getDefaultLocation() );
this->loadingFinished();
return ret;
} }
bool YamlDatabase::reload(){ bool YamlDatabase::reload(){
@ -128,8 +132,6 @@ bool YamlDatabase::load(const std::string& path) {
this->parseImports( rootNode ); this->parseImports( rootNode );
this->loadingFinished();
return true; return true;
} }

View File

@ -1019,6 +1019,23 @@ uint64 ItemDatabase::parseBodyNode(const YAML::Node &node) {
return 1; 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; 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. * Loads an item from the db. If not found, it will return the dummy item.
* @param nameid * @param nameid
@ -2758,7 +2758,6 @@ void do_final_itemdb(void) {
*/ */
void do_init_itemdb(void) { void do_init_itemdb(void) {
itemdb_group = uidb_alloc(DB_OPT_BASE); itemdb_group = uidb_alloc(DB_OPT_BASE);
itemdb_create_dummy();
itemdb_read(); itemdb_read();
if (battle_config.feature_roulette) if (battle_config.feature_roulette)

View File

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

View File

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