diff options
Diffstat (limited to 'src/game-server/item.cpp')
-rw-r--r-- | src/game-server/item.cpp | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/src/game-server/item.cpp b/src/game-server/item.cpp index 979a1bc3..888c90ad 100644 --- a/src/game-server/item.cpp +++ b/src/game-server/item.cpp @@ -64,13 +64,17 @@ ItemEffectScript::~ItemEffectScript() bool ItemEffectScript::apply(Being *itemUser) { - if (!mActivateFunctionName.empty()) + if (mActivateEventName.empty()) + return false; + + Script::Ref function = mItemClass->getEventCallback(mActivateEventName); + if (function.isValid()) { Script *script = ScriptManager::currentState(); script->setMap(itemUser->getMap()); - script->prepare(mActivateFunctionName); + script->prepare(function); script->push(itemUser); - script->push(mItemId); + script->push(mItemClass->getDatabaseID()); script->execute(); // TODO return depending on script execution success. return true; } @@ -79,13 +83,17 @@ bool ItemEffectScript::apply(Being *itemUser) void ItemEffectScript::dispell(Being *itemUser) { - if (!mDispellFunctionName.empty()) + if (mDispellEventName.empty()) + return; + + Script::Ref function = mItemClass->getEventCallback(mDispellEventName); + if (function.isValid()) { Script *script = ScriptManager::currentState(); script->setMap(itemUser->getMap()); - script->prepare(mDispellFunctionName); + script->prepare(function); script->push(itemUser); - script->push(mItemId); + script->push(mItemClass->getDatabaseID()); script->execute(); } } |