Веб-сайт самохостера Lotigara

summaryrefslogtreecommitdiff
path: root/source/game/scripting/StarPlayerLuaBindings.cpp
diff options
context:
space:
mode:
authorZithia Satazaki <qmanxt@gmail.com>2023-10-30 01:05:18 -0400
committerZithia Satazaki <qmanxt@gmail.com>2023-10-30 01:05:18 -0400
commit943729a20e4930f861f5d8e84b484a71e31761f0 (patch)
tree2713379c58700b98fe72f38b35997cac8394ffd2 /source/game/scripting/StarPlayerLuaBindings.cpp
parentfa6a770cfc26bc50cfec700cacef5aaefa72f77d (diff)
player functions for direct item bag manipulation
Diffstat (limited to 'source/game/scripting/StarPlayerLuaBindings.cpp')
-rw-r--r--source/game/scripting/StarPlayerLuaBindings.cpp26
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)));