summaryrefslogtreecommitdiff
path: root/src/scripting/lua.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/scripting/lua.cpp')
-rw-r--r--src/scripting/lua.cpp65
1 files changed, 65 insertions, 0 deletions
diff --git a/src/scripting/lua.cpp b/src/scripting/lua.cpp
index 58492319..6eba4353 100644
--- a/src/scripting/lua.cpp
+++ b/src/scripting/lua.cpp
@@ -550,6 +550,69 @@ static int chr_equip_item(lua_State *s)
}
/**
+ * mana.chr_unequip_slot(Character*, int inventorySlot): bool success
+ * Makes the character unequip the item in the given equipment slot.
+ */
+static int chr_unequip_slot(lua_State *s)
+{
+ int equipmentSlot = luaL_checkint(s, 2);
+
+ Character *ch = getCharacter(s, 1);
+ if (!ch)
+ {
+ raiseScriptError(s, "chr_unequip_slot "
+ "called for nonexistent character.");
+ return 0;
+ }
+ Inventory inv(ch);
+
+ lua_pushboolean(s, inv.unequip(inv.getSlotItemInstance(equipmentSlot)));
+ return 1;
+}
+
+/**
+ * mana.chr_unequip_item(Character*, int itemId || string itemName): bool success
+ * Makes the character unequip the item(s) corresponding to the id
+ * when it's existing in the player's equipment.
+ * Returns true when every item were unequipped from equipment.
+ */
+static int chr_unequip_item(lua_State *s)
+{
+ // Get the itemId
+ ItemClass *it;
+ if (lua_isnumber(s, 2))
+ it = itemManager->getItem(lua_tointeger(s, 2));
+ else
+ it = itemManager->getItemByName(lua_tostring(s, 2));
+
+ if (!it)
+ {
+ raiseScriptError(s, "chr_unequip_item called with invalid "
+ "item id or name.");
+ return 0;
+ }
+ unsigned int id = it->getDatabaseID();
+ if (!id)
+ {
+ LOG_WARN("chr_unequip_item called with id 0! "
+ "Currency is now handled through attributes!");
+ lua_pushboolean(s, false);
+ return 1;
+ }
+
+ Character *ch = getCharacter(s, 1);
+ if (!ch)
+ {
+ raiseScriptError(s, "chr_unequip_item "
+ "called for nonexistent character.");
+ return 0;
+ }
+ Inventory inv(ch);
+ lua_pushboolean(s, inv.unequipItem(id));
+ return 1;
+}
+
+/**
* mana.chr_get_level(Character*): int level
* Tells the character current level.
*/
@@ -2395,6 +2458,8 @@ LuaScript::LuaScript():
{ "chr_inv_count", &chr_inv_count },
{ "chr_equip_slot", &chr_equip_slot },
{ "chr_equip_item", &chr_equip_item },
+ { "chr_unequip_slot", &chr_unequip_slot },
+ { "chr_unequip_item", &chr_unequip_item },
{ "chr_get_level", &chr_get_level },
{ "chr_get_quest", &chr_get_quest },
{ "chr_set_quest", &chr_set_quest },