summaryrefslogtreecommitdiff
path: root/src/game-server/item.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/game-server/item.cpp')
-rw-r--r--src/game-server/item.cpp20
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();
}
}