diff options
author | Erik Schilling <ablu.erikschilling@googlemail.com> | 2013-08-04 18:46:05 +0200 |
---|---|---|
committer | Erik Schilling <ablu.erikschilling@googlemail.com> | 2013-08-26 22:56:47 +0200 |
commit | 7dc001eb32ae5345905e108741984258ee2f1813 (patch) | |
tree | e5436e5041906be13ddeb1918b2dba17cfbd90a7 /src | |
parent | 1e5a15c0a5e24fb4b358fff75a7082d65496e1f9 (diff) | |
download | manaserv-7dc001eb32ae5345905e108741984258ee2f1813.tar.gz manaserv-7dc001eb32ae5345905e108741984258ee2f1813.tar.bz2 manaserv-7dc001eb32ae5345905e108741984258ee2f1813.tar.xz manaserv-7dc001eb32ae5345905e108741984258ee2f1813.zip |
Allow multiple scopes (character and monster)
This allows you to avoid putting usually unnessecary load onto npcs if
you only wanted to share an attribute between monsters and characters.
Diffstat (limited to 'src')
-rw-r--r-- | src/game-server/attributemanager.cpp | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/src/game-server/attributemanager.cpp b/src/game-server/attributemanager.cpp index 4c17d6a0..9ed76640 100644 --- a/src/game-server/attributemanager.cpp +++ b/src/game-server/attributemanager.cpp @@ -134,25 +134,31 @@ void AttributeManager::readAttributeNode(xmlNodePtr attributeNode) const std::string scope = utils::toUpper( XML::getProperty(attributeNode, "scope", std::string())); - if (scope == "CHARACTER") + bool hasScope = false; + + if (scope.find("CHARACTER") != std::string::npos) { mAttributeScopes[CharacterScope][id] = attribute; LOG_DEBUG("Attribute manager: attribute '" << id << "' added to default character scope."); + hasScope = true; } - else if (scope == "MONSTER") + if (scope.find("MONSTER") != std::string::npos) { mAttributeScopes[MonsterScope][id] = attribute; LOG_DEBUG("Attribute manager: attribute '" << id << "' added to default monster scope."); + hasScope = true; } - else if (scope == "BEING") + if (scope == "BEING") { mAttributeScopes[BeingScope][id] = attribute; LOG_DEBUG("Attribute manager: attribute '" << id << "' added to default being scope."); + hasScope = true; } - else + + if (!hasScope) { LOG_WARN("Attribute manager: attribute '" << id << "' has no (valid) scope. Skipping..."); |