diff options
author | Zithia Satazaki <qmanxt@gmail.com> | 2023-10-30 01:05:18 -0400 |
---|---|---|
committer | Zithia Satazaki <qmanxt@gmail.com> | 2023-10-30 01:05:18 -0400 |
commit | 943729a20e4930f861f5d8e84b484a71e31761f0 (patch) | |
tree | 2713379c58700b98fe72f38b35997cac8394ffd2 /source/game/scripting/StarPlayerLuaBindings.cpp | |
parent | fa6a770cfc26bc50cfec700cacef5aaefa72f77d (diff) |
player functions for direct item bag manipulation
Diffstat (limited to 'source/game/scripting/StarPlayerLuaBindings.cpp')
-rw-r--r-- | source/game/scripting/StarPlayerLuaBindings.cpp | 26 |
1 files changed, 26 insertions, 0 deletions
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<ItemBag>(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<uint16_t> teamNumber) { player->setTeam(EntityDamageTeam(TeamTypeNames.getLeft(typeName), teamNumber.value(0))); |