|
@@ -570,6 +570,18 @@ uint64 ItemDatabase::parseBodyNode(const ryml::NodeRef& node) {
|
|
|
item->flag.no_refine = true;
|
|
|
}
|
|
|
|
|
|
+ if (this->nodeExists(node, "Gradable")) {
|
|
|
+ bool gradable;
|
|
|
+
|
|
|
+ if (!this->asBool(node, "Gradable", gradable))
|
|
|
+ return 0;
|
|
|
+
|
|
|
+ item->flag.gradable = gradable;
|
|
|
+ } else {
|
|
|
+ if (!exists)
|
|
|
+ item->flag.gradable = false;
|
|
|
+ }
|
|
|
+
|
|
|
if (this->nodeExists(node, "View")) {
|
|
|
uint32 look;
|
|
|
|
|
@@ -3099,6 +3111,8 @@ static bool itemdb_read_sqldb_sub(std::vector<std::string> str) {
|
|
|
rootNode["EquipLevelMax"] << str[index];
|
|
|
if (!str[++index].empty())
|
|
|
rootNode["Refineable"] << (std::stoi(str[index]) ? "true" : "false");
|
|
|
+ if (!str[++index].empty())
|
|
|
+ rootNode["Gradable"] << (std::stoi(str[index]) ? "true" : "false");
|
|
|
if (!str[++index].empty())
|
|
|
rootNode["View"] << str[index];
|
|
|
if (!str[++index].empty())
|
|
@@ -3265,7 +3279,7 @@ static int itemdb_read_sqldb(void) {
|
|
|
"`delay_duration`,`delay_status`,`stack_amount`,`stack_inventory`,`stack_cart`,`stack_storage`,`stack_guildstorage`,`nouse_override`,`nouse_sitting`,"
|
|
|
"`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_tradepartner`,`trade_nosell`,`trade_nocart`,`trade_nostorage`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`,`script`,`equip_script`,`unequip_script`"
|
|
|
#ifdef RENEWAL
|
|
|
- ",`magic_attack`,`class_third`,`class_third_upper`,`class_third_baby`,`class_fourth`,`job_kagerouoboro`,`job_rebellion`,`job_summoner`,`job_spirit_handler`"
|
|
|
+ ",`magic_attack`,`class_third`,`class_third_upper`,`class_third_baby`,`class_fourth`,`job_kagerouoboro`,`job_rebellion`,`job_summoner`,`job_spirit_handler`,`gradable`"
|
|
|
#endif
|
|
|
" FROM `%s`", item_db_name[fi]) ) {
|
|
|
Sql_ShowDebug(mmysql_handle);
|