eqemu-server/zone/lua_inventory.h
Knightly 7ab909ee47 Standardize Licensing
- License was intended to be GPLv3 per earlier commit of GPLv3 LICENSE FILE
- This is confirmed by the inclusion of libraries that are incompatible with GPLv2
- This is also confirmed by KLS and the agreement of KLS's predecessors
- Added GPLv3 license headers to the compilable source files
- Removed Folly licensing in strings.h since the string functions do not match the Folly functions and are standard functions - this must have been left over from previous implementations
- Removed individual contributor license headers since the project has been under the "developer" mantle for many years
- Removed comments on files that were previously automatically generated since they've been manually modified multiple times and there are no automatic scripts referencing them (removed in 2023)
2026-04-01 17:09:57 -07:00

92 lines
3.0 KiB
C++

/* EQEmu: EQEmulator
Copyright (C) 2001-2026 EQEmu Development Team
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#ifdef LUA_EQEMU
#include "zone/lua_ptr.h"
class Lua_ItemInst;
class Lua_Item;
namespace EQ
{
class InventoryProfile;
}
namespace luabind {
struct scope;
}
luabind::scope lua_register_inventory();
// This class should be deprecated due to the nature of inventory actions.
// Direct manipulation of the inventory system bypasses the client management
// of database calls and can lead to lost items, duplicated items and/or
// desync'd inventories, if not handled correctly.
class Lua_Inventory : public Lua_Ptr<EQ::InventoryProfile>
{
typedef EQ::InventoryProfile NativeType;
public:
Lua_Inventory() : Lua_Ptr(nullptr) { }
Lua_Inventory(EQ::InventoryProfile *d) : Lua_Ptr(d) { }
virtual ~Lua_Inventory() { }
operator EQ::InventoryProfile*() {
return reinterpret_cast<EQ::InventoryProfile*>(GetLuaPtrData());
}
Lua_ItemInst GetItem(int slot_id);
Lua_ItemInst GetItem(int slot_id, int bag_slot);
int PutItem(int slot_id, Lua_ItemInst item);
int PushCursor(Lua_ItemInst item);
bool SwapItem(int source_slot, int destination_slot);
bool DeleteItem(int slot_id);
bool DeleteItem(int slot_id, int quantity);
bool CheckNoDrop(int slot_id);
uint32 CountAugmentEquippedByID(uint32 item_id);
uint32 CountItemEquippedByID(uint32 item_id);
Lua_ItemInst PopItem(int slot_id);
bool HasAugmentEquippedByID(uint32 item_id);
bool HasItemEquippedByID(uint32 item_id);
int HasItem(int item_id);
int HasItem(int item_id, int quantity);
int HasItem(int item_id, int quantity, int where);
bool HasSpaceForItem(Lua_Item item, int quantity);
int HasItemByUse(int use);
int HasItemByUse(int use, uint8 quantity);
int HasItemByUse(int use, uint8 quantity, uint8 where);
int HasItemByLoreGroup(uint32 loregroup);
int HasItemByLoreGroup(uint32 loregroup, int where);
int FindFreeSlot(bool for_bag, bool try_cursor);
int FindFreeSlot(bool for_bag, bool try_cursor, int min_size);
int FindFreeSlot(bool for_bag, bool try_cursor, int min_size, bool is_arrow);
int CalcSlotId(int slot_id);
int CalcSlotId(int slot_id, int bag_slot);
int CalcBagIdx(int slot_id);
int CalcSlotFromMaterial(int material);
int CalcMaterialFromSlot(int equipslot);
bool CanItemFitInContainer(Lua_Item item, Lua_Item container);
bool SupportsContainers(int slot_id);
int GetSlotByItemInst(Lua_ItemInst inst);
luabind::object GetAugmentIDsBySlotID(lua_State* L, int16 slot_id);
};
#endif // LUA_EQEMU