diff options
Diffstat (limited to 'src/game-server/itemmanager.cpp')
-rw-r--r-- | src/game-server/itemmanager.cpp | 51 |
1 files changed, 13 insertions, 38 deletions
diff --git a/src/game-server/itemmanager.cpp b/src/game-server/itemmanager.cpp index b334760a..8c74680e 100644 --- a/src/game-server/itemmanager.cpp +++ b/src/game-server/itemmanager.cpp @@ -404,50 +404,25 @@ void ItemManager::readEffectNode(xmlNodePtr effectNode, ItemClass *item) { item->addEffect(new ItemEffectConsumes, triggerTypes.first); } - else if (xmlStrEqual(subNode->name, BAD_CAST "script")) + else if (xmlStrEqual(subNode->name, BAD_CAST "scriptevent")) { - std::string activateFunctionName = XML::getProperty(subNode, - "function", - std::string()); - if (activateFunctionName.empty()) - { - LOG_WARN("Item Manager: Empty function definition " - "for script effect, skipping!"); - continue; - } - - std::string src = XML::getProperty(subNode, "src", std::string()); - if (src.empty()) - { - LOG_WARN("Item Manager: Empty src definition for script effect," - " skipping!"); - continue; - } - std::stringstream filename; - filename << "scripts/items/" << src; - if (!ResourceManager::exists(filename.str())) - { - LOG_WARN("Could not find script file \"" << filename.str() - << "\" for item #" << item->mDatabaseID); - continue; - } - - LOG_INFO("Loading item script: " << filename.str()); - Script *script = ScriptManager::currentState(); - if (!script->loadFile(filename.str())) + std::string activateEventName = XML::getProperty(subNode, + "activate", + std::string()); + if (activateEventName.empty()) { - LOG_WARN("Could not load script file \"" << filename.str() - << "\" for item #" << item->mDatabaseID); + LOG_WARN("Item Manager: Empty name for 'activate' item script " + "event, skipping effect!"); continue; } - std::string dispellFunctionName = XML::getProperty(subNode, - "dispell-function", - std::string()); + std::string dispellEventName = XML::getProperty(subNode, + "dispell", + std::string()); - item->addEffect(new ItemEffectScript(item->mDatabaseID, - activateFunctionName, - dispellFunctionName), + item->addEffect(new ItemEffectScript(item, + activateEventName, + dispellEventName), triggerTypes.first, triggerTypes.second); } |