diff --git a/src/map/pc.cpp b/src/map/pc.cpp index d94c163384..1dc3263c98 100755 --- a/src/map/pc.cpp +++ b/src/map/pc.cpp @@ -14105,19 +14105,11 @@ const std::string PlayerStatPointDatabase::getDefaultLocation() { } uint64 PlayerStatPointDatabase::parseBodyNode(const ryml::NodeRef& node) { - if (!this->nodesExist(node, { "Level", "Points" })) { - return 0; - } uint16 level; if (!this->asUInt16(node, "Level", level)) - return 0; - - uint32 point; - - if (!this->asUInt32(node, "Points", point)) - return 0; + return 0; if (level == 0) { this->invalidWarning(node["Level"], "The minimum level is 1.\n"); @@ -14133,19 +14125,32 @@ uint64 PlayerStatPointDatabase::parseBodyNode(const ryml::NodeRef& node) { bool exists = entry != nullptr; if( !exists ){ - entry = std::make_shared(); - entry->level = level; - entry->statpoints = point; + if( !this->nodesExist( node, { "Points" } ) ){ + return 0; + } + + entry = std::make_shared(); + entry->level = level; } - if( this->nodeExists( node, "TraitPoints" ) ){ - uint32 traitpoints; + if( this->nodeExists( node, "Points" ) ){ + uint32 points; - if( !this->asUInt32( node, "TraitPoints", traitpoints ) ){ + if( !this->asUInt32( node, "Points", points ) ){ return 0; } - entry->traitpoints = traitpoints; + entry->statpoints = points; + } + + if( this->nodeExists( node, "TraitPoints" ) ){ + uint32 traitpoints; + + if( !this->asUInt32( node, "TraitPoints", traitpoints ) ){ + return 0; + } + + entry->traitpoints = traitpoints; }else{ if( !exists ){ entry->traitpoints = 0;