summaryrefslogtreecommitdiff
path: root/src/game-server/monstermanager.cpp
diff options
context:
space:
mode:
authorPhilipp Sehmisch <tmw@crushnet.org>2008-02-07 17:49:56 +0000
committerPhilipp Sehmisch <tmw@crushnet.org>2008-02-07 17:49:56 +0000
commit504b008e264a3213d9802e52b984196ff348f814 (patch)
tree44c1d0d2e3c0b839c71ca96fccb54444280f500e /src/game-server/monstermanager.cpp
parente9e633a5b78799311ee765944a7aa52201bcef9d (diff)
downloadmanaserv-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.cpp22
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;