diff options
author | Freeyorp <Freeyorp101@hotmail.com> | 2010-07-10 21:45:38 +1200 |
---|---|---|
committer | Freeyorp <Freeyorp101@hotmail.com> | 2010-07-10 21:51:37 +1200 |
commit | 151f6acdee17556d249e1b61f264ed2e95b84354 (patch) | |
tree | da38282be8a068cc3eba517bf7aacaf674b73b2f | |
parent | 98cdcb1de4f422255aa5ef924042ae7d00a5b968 (diff) | |
download | manaserv-151f6acdee17556d249e1b61f264ed2e95b84354.tar.gz manaserv-151f6acdee17556d249e1b61f264ed2e95b84354.tar.bz2 manaserv-151f6acdee17556d249e1b61f264ed2e95b84354.tar.xz manaserv-151f6acdee17556d249e1b61f264ed2e95b84354.zip |
Add in stubs for scripted item effects
-rw-r--r-- | src/game-server/item.cpp | 11 | ||||
-rw-r--r-- | src/game-server/item.hpp | 8 | ||||
-rw-r--r-- | src/game-server/itemmanager.cpp | 22 |
3 files changed, 41 insertions, 0 deletions
diff --git a/src/game-server/item.cpp b/src/game-server/item.cpp index 95ee973d..93b2bc10 100644 --- a/src/game-server/item.cpp +++ b/src/game-server/item.cpp @@ -63,6 +63,17 @@ void ItemEffectAutoAttack::dispell(Being *itemUser) // TODO } +bool ItemEffectScript::apply(Being *itemUser) +{ + // TODO + return false; +} + +void ItemEffectScript::dispell(Being *itemUser) +{ + // TODO +} + bool ItemClass::useTrigger(Being *itemUser, ItemTriggerType trigger) { if (!trigger) return false; diff --git a/src/game-server/item.hpp b/src/game-server/item.hpp index 6fb7c380..3ccfe2bf 100644 --- a/src/game-server/item.hpp +++ b/src/game-server/item.hpp @@ -128,6 +128,14 @@ class ItemEffectConsumes : public ItemEffectInfo void dispell(Being *itemUser) {} }; +class ItemEffectScript : public ItemEffectInfo +{ + public: + bool apply(Being *itemUser); + void dispell(Being *itemUser); +}; + + /** * Class for simple reference to item information. */ diff --git a/src/game-server/itemmanager.cpp b/src/game-server/itemmanager.cpp index 363ada4b..802197d6 100644 --- a/src/game-server/itemmanager.cpp +++ b/src/game-server/itemmanager.cpp @@ -286,6 +286,28 @@ void ItemManager::reload() } else if (xmlStrEqual(effectnode->name, BAD_CAST "consumes")) item->addEffect(new ItemEffectConsumes(), triggerTypes.first); + else if (xmlStrEqual(effectnode->name, BAD_CAST "script")) + { + std::string src = XML::getProperty(effectnode, "src", ""); + if (src.empty()) + { + LOG_WARN("Item Manager: Empty src definition for script effect, skipping!"); + continue; + } + std::string func = XML::getProperty(effectnode, "function", ""); + if (func.empty()) + { + LOG_WARN ("Item Manager: Empty func definition for script effect, skipping!"); + continue; + } + for_each_xml_child_node(scriptnode, effectnode) + { + // TODO: Load variables from variable subnodes + } + std::string dfunc = XML::getProperty(effectnode, "dispell-function", ""); + // STUB + item->addEffect(new ItemEffectScript(), triggerTypes.first, triggerTypes.second); + } } } // More properties go here |