summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/game-server/monstermanager.cpp20
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"))