From 943729a20e4930f861f5d8e84b484a71e31761f0 Mon Sep 17 00:00:00 2001 From: Zithia Satazaki Date: Mon, 30 Oct 2023 01:05:18 -0400 Subject: player functions for direct item bag manipulation --- source/game/scripting/StarPlayerLuaBindings.cpp | 26 +++++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'source/game/scripting/StarPlayerLuaBindings.cpp') diff --git a/source/game/scripting/StarPlayerLuaBindings.cpp b/source/game/scripting/StarPlayerLuaBindings.cpp index 8b6e7d5..4713be0 100644 --- a/source/game/scripting/StarPlayerLuaBindings.cpp +++ b/source/game/scripting/StarPlayerLuaBindings.cpp @@ -200,6 +200,32 @@ LuaCallbacks LuaBindings::makePlayerCallbacks(Player* player) { // TODO: why does this always clear the slot. it's literally the same code as giveEssentialItem } }); + + callbacks.registerCallback("itemBagSize", [player](String const& bag) { + auto inventory = player->inventory(); + auto b = inventory->bagContents(bag); + return b->size(); + }); + + callbacks.registerCallback("itemAllowedInBag", [player](String const& bag, Json const& item) { + auto inventory = player->inventory(); + auto itemDatabase = Root::singleton().itemDatabase(); + return inventory->itemAllowedInBag(itemDatabase->item(ItemDescriptor(item)), bag); + }); + + callbacks.registerCallback("itemBagItem", [player](String const& bag, int slot) -> Json { + auto inventory = player->inventory(); + auto b = inventory->bagContents(bag); + //if (b.get() == nullptr) return {}; + return itemSafeDescriptor(b->at(slot - 1)).toJson(); + }); + + callbacks.registerCallback("setItemBagItem", [player](String const& bag, int slot, Json const& item) { + auto inventory = player->inventory(); + auto itemDatabase = Root::singleton().itemDatabase(); + auto b = const_pointer_cast(inventory->bagContents(bag)); // bit of a Naughty Access Cheat here, but + b->setItem(slot - 1, itemDatabase->item(ItemDescriptor(item))); + }); callbacks.registerCallback("setDamageTeam", [player](String const& typeName, Maybe teamNumber) { player->setTeam(EntityDamageTeam(TeamTypeNames.getLeft(typeName), teamNumber.value(0))); -- cgit v1.2.3