diff options
author | Philipp Sehmisch <tmw@crushnet.org> | 2008-02-07 17:49:56 +0000 |
---|---|---|
committer | Philipp Sehmisch <tmw@crushnet.org> | 2008-02-07 17:49:56 +0000 |
commit | 504b008e264a3213d9802e52b984196ff348f814 (patch) | |
tree | 44c1d0d2e3c0b839c71ca96fccb54444280f500e /src/game-server/monstermanager.cpp | |
parent | e9e633a5b78799311ee765944a7aa52201bcef9d (diff) | |
download | manaserv-504b008e264a3213d9802e52b984196ff348f814.tar.gz manaserv-504b008e264a3213d9802e52b984196ff348f814.tar.bz2 manaserv-504b008e264a3213d9802e52b984196ff348f814.tar.xz manaserv-504b008e264a3213d9802e52b984196ff348f814.zip |
arts of monster behavior are now read from monsters.xml.
Diffstat (limited to 'src/game-server/monstermanager.cpp')
-rw-r--r-- | src/game-server/monstermanager.cpp | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/src/game-server/monstermanager.cpp b/src/game-server/monstermanager.cpp index f613969d..c4bddfa3 100644 --- a/src/game-server/monstermanager.cpp +++ b/src/game-server/monstermanager.cpp @@ -83,10 +83,11 @@ void MonsterManager::reload() } int id = XML::getProperty(node, "id", 0); + std::string name = XML::getProperty(node, "name", "unnamed"); if (id == 0) { - LOG_WARN("Monster Manager: There is a monster without ID in " + LOG_WARN("Monster Manager: There is a monster ("<<name<<") without ID in " << monsterReferenceFile << "! It has been ignored."); continue; } @@ -105,6 +106,7 @@ void MonsterManager::reload() MonsterDrops drops; bool attributesSet = false; + bool behaviorSet = false; for (xmlNodePtr subnode = node->xmlChildrenNode; subnode != NULL; subnode = subnode->next) @@ -159,16 +161,30 @@ void MonsterManager::reload() xmlChar *exp = subnode->xmlChildrenNode->content; monster->setExp(atoi((const char*)exp)); } + else if (xmlStrEqual(subnode->name, BAD_CAST "behavior")) + { + behaviorSet = true; + if (XML::getProperty(subnode, "aggressive", "") == "true") + { + monster->setAggressive(true); + } + monster->setTrackRange(XML::getProperty(subnode, "track-range", 1)); + monster->setStrollRange(XML::getProperty(subnode, "stroll-range", 0) * 32); + } } monster->setDrops(drops); if (!attributesSet) LOG_WARN(monsterReferenceFile <<": No attributes defined for monster #" - <<id); + <<id<<" ("<<name<<")"); + if (!behaviorSet) LOG_WARN(monsterReferenceFile + <<": No behavior defined for monster #" + <<id<<" ("<<name<<")"); if (monster->getExp() == -1) { LOG_WARN(monsterReferenceFile - <<": No experience defined for monster #"<<id); + <<": No experience defined for monster #" + <<id<<" ("<<name<<")"); monster->setExp(0); } ++nbMonsters; |