summaryrefslogtreecommitdiffstats
path: root/src/game-server/item.cpp
diff options
context:
space:
mode:
authorYohann Ferreira <yohann_dot_ferreira_at_orange_dot_efer>2011-04-19 00:37:38 +0200
committerYohann Ferreira <yohann_dot_ferreira_at_orange_dot_efer>2011-04-19 00:37:38 +0200
commitca1dd6fcaf1dfaef0f18df0b6c114f1baa25d2ce (patch)
treebd33eda8c946436bf844fc157aa5208c7da9b934 /src/game-server/item.cpp
parent80e07598a896e73e08e2511f08602e2b6d2e4eb7 (diff)
downloadmanaserv-ca1dd6fcaf1dfaef0f18df0b6c114f1baa25d2ce.tar.gz
manaserv-ca1dd6fcaf1dfaef0f18df0b6c114f1baa25d2ce.tar.xz
manaserv-ca1dd6fcaf1dfaef0f18df0b6c114f1baa25d2ce.zip
Implemented scriptable effects on item use and dispell.
Reviewed-by: Thorbjorn.
Diffstat (limited to 'src/game-server/item.cpp')
-rw-r--r--src/game-server/item.cpp24
1 files changed, 22 insertions, 2 deletions
diff --git a/src/game-server/item.cpp b/src/game-server/item.cpp
index 9c73e9d..980db78 100644
--- a/src/game-server/item.cpp
+++ b/src/game-server/item.cpp
@@ -57,15 +57,35 @@ void ItemEffectAutoAttack::dispell(Being *itemUser)
// TODO
}
+ItemEffectScript::~ItemEffectScript()
+{
+ delete mScript;
+}
+
bool ItemEffectScript::apply(Being *itemUser)
{
- // TODO
+ if (mScript && !mActivateFunctionName.empty())
+ {
+ mScript->setMap(itemUser->getMap());
+ mScript->prepare(mActivateFunctionName);
+ mScript->push(itemUser);
+ mScript->push(mItemId);
+ mScript->execute(); // TODO return depending on script execution success.
+ return true;
+ }
return false;
}
void ItemEffectScript::dispell(Being *itemUser)
{
- // TODO
+ if (mScript && !mDispellFunctionName.empty())
+ {
+ mScript->setMap(itemUser->getMap());
+ mScript->prepare(mDispellFunctionName);
+ mScript->push(itemUser);
+ mScript->push(mItemId);
+ mScript->execute();
+ }
}
bool ItemClass::useTrigger(Being *itemUser, ItemTriggerType trigger)