diff options
author | Erik Schilling <ablu.erikschilling@googlemail.com> | 2012-08-06 14:47:18 +0200 |
---|---|---|
committer | Erik Schilling <ablu.erikschilling@googlemail.com> | 2012-08-06 14:47:18 +0200 |
commit | 1ccf0958ece7fbfde3761207f3238719e0585105 (patch) | |
tree | c2b2b0ba5bfedca8f793d35e5d3216e9c301cbf3 /src/game-server/monstermanager.cpp | |
parent | 1bbf0a238b62f2c977800f539386df5af9424fff (diff) | |
parent | af59c9d650bc254683618e7b334795e5a75886b2 (diff) | |
download | manaserv-1ccf0958ece7fbfde3761207f3238719e0585105.tar.gz manaserv-1ccf0958ece7fbfde3761207f3238719e0585105.tar.bz2 manaserv-1ccf0958ece7fbfde3761207f3238719e0585105.tar.xz manaserv-1ccf0958ece7fbfde3761207f3238719e0585105.zip |
Merge branch 'master' into lpc2012
Conflicts:
src/game-server/item.cpp
Diffstat (limited to 'src/game-server/monstermanager.cpp')
-rw-r--r-- | src/game-server/monstermanager.cpp | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/src/game-server/monstermanager.cpp b/src/game-server/monstermanager.cpp index e0b45bad..cfe540d8 100644 --- a/src/game-server/monstermanager.cpp +++ b/src/game-server/monstermanager.cpp @@ -98,12 +98,26 @@ void MonsterManager::initialize() if (xmlStrEqual(subnode->name, BAD_CAST "drop")) { MonsterDrop drop; - drop.item = itemManager->getItem( - XML::getProperty(subnode, "item", 0)); + std::string item = XML::getProperty(subnode, "item", + std::string()); + ItemClass *itemClass; + if (utils::isNumeric(item)) + itemClass = itemManager->getItem(utils::stringToInt(item)); + else + itemClass = itemManager->getItemByName(item); + + if (!itemClass) + { + LOG_WARN("Monster Manager: Invalid item name \"" << item + << "\""); + break; + } + + drop.item = itemClass; drop.probability = XML::getFloatProperty(subnode, "percent", 0.0) * 100 + 0.5; - if (drop.item && drop.probability) + if (drop.probability) drops.push_back(drop); } else if (xmlStrEqual(subnode->name, BAD_CAST "attributes")) |