diff options
author | Yohann Ferreira <yohann_dot_ferreira_at_orange_dot_efer> | 2011-04-19 00:37:38 +0200 |
---|---|---|
committer | Yohann Ferreira <yohann_dot_ferreira_at_orange_dot_efer> | 2011-04-19 00:37:38 +0200 |
commit | ca1dd6fcaf1dfaef0f18df0b6c114f1baa25d2ce (patch) | |
tree | bd33eda8c946436bf844fc157aa5208c7da9b934 /src/game-server/item.cpp | |
parent | 80e07598a896e73e08e2511f08602e2b6d2e4eb7 (diff) | |
download | manaserv-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.cpp | 24 |
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) |