diff options
-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 7612ddc1..2e772a38 100644 --- a/src/game-server/monstermanager.cpp +++ b/src/game-server/monstermanager.cpp @@ -120,12 +120,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")) |