summaryrefslogtreecommitdiff
path: root/src/scripting/script.h
diff options
context:
space:
mode:
authorPhilipp Sehmisch <mana@crushnet.org>2011-04-27 15:24:36 +0200
committerPhilipp Sehmisch <mana@crushnet.org>2011-04-27 15:24:36 +0200
commitc1a6e9947231cc511016378bd326a5d64b0aa18c (patch)
tree03c9b42ae97d61b5568f27ddc3f1be7a8b6648c3 /src/scripting/script.h
parentca1dd6fcaf1dfaef0f18df0b6c114f1baa25d2ce (diff)
downloadmanaserv-c1a6e9947231cc511016378bd326a5d64b0aa18c.tar.gz
manaserv-c1a6e9947231cc511016378bd326a5d64b0aa18c.tar.bz2
manaserv-c1a6e9947231cc511016378bd326a5d64b0aa18c.tar.xz
manaserv-c1a6e9947231cc511016378bd326a5d64b0aa18c.zip
Added a simple crafting system
A client can craft something using the @craft command. The command needs a list of item names and amounts. The gameserver checks if the character has these items in the inventory and then passes the list together with the character handle to the lua script function on_craft in the script file scripts/crafting.lua. This function can then be used to evaluate if the list is a valid crafting combination and when this is the case take or give items. Implemented two example crafting scripts there, one which enforces exact item order and amount and one which doesn't. Both are disabled per default and one needs to be enabled by uncommenting a line. Also gave the player group permission to use the @craft command in permissions.xml and added two new items (wood and iron) required for the example crafting combination. Resolves: #333 Reviewed-by: bcs86, Bertram
Diffstat (limited to 'src/scripting/script.h')
-rw-r--r--src/scripting/script.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/scripting/script.h b/src/scripting/script.h
index 43eebe10..44a8b7ac 100644
--- a/src/scripting/script.h
+++ b/src/scripting/script.h
@@ -105,6 +105,12 @@ class Script
virtual void push(Thing *) = 0;
/**
+ * Pushes a list of items with amounts to the
+ * script engine.
+ */
+ virtual void push(const std::list<InventoryItem> &itemList) = 0;
+
+ /**
* Executes the function being prepared.
* @return the value returned by the script.
*/
@@ -135,11 +141,13 @@ class Script
static bool executeGlobalEventFunction(const std::string &function, Being *obj);
static void addDataToSpecial(int specialId, Special *special);
static bool performSpecialAction(int specialId, Being *caster);
+ static bool performCraft(Being* crafter, std::list<InventoryItem> recipe);
protected:
static Script *globalEventScript;
static Script *specialActionsScript;
+ static Script *craftScript;
std::string mScriptFile;
private: