#ifndef EQEMU_LUA_ITEMINST_H #define EQEMU_LUA_ITEMINST_H #ifdef LUA_EQEMU #include "lua_ptr.h" // Forward declaration class Lua_Item; namespace EQ { class ItemInstance; } namespace luabind { struct scope; } luabind::scope lua_register_iteminst(); class Lua_ItemInst : public Lua_Ptr { typedef EQ::ItemInstance NativeType; public: Lua_ItemInst(int item_id); Lua_ItemInst(int item_id, int charges); Lua_ItemInst() : Lua_Ptr(nullptr), cloned_(false) { } Lua_ItemInst(EQ::ItemInstance *d) : Lua_Ptr(d), cloned_(false) { } Lua_ItemInst(EQ::ItemInstance *d, bool cloned) : Lua_Ptr(d), cloned_(cloned) { } Lua_ItemInst& operator=(const Lua_ItemInst& o); Lua_ItemInst(const Lua_ItemInst& o); virtual ~Lua_ItemInst(); operator EQ::ItemInstance*() { return reinterpret_cast(GetLuaPtrData()); } bool IsType(int item_class); bool IsStackable(); bool IsEquipable(uint16 race_bitmask, uint16 class_bitmask); bool IsEquipable(int16 slot_id); bool IsAugmentable(); int GetAugmentType(); bool IsExpendable(); Lua_ItemInst GetItem(uint8 slot_id); Lua_Item GetItem(); Lua_Item GetUnscaledItem(); uint32 GetItemID(uint8 slot_id); uint8 GetTotalItemCount(); Lua_ItemInst GetAugment(uint8 slot_id); uint32 GetAugmentItemID(uint8 slot_id); bool IsAugmented(); bool IsWeapon(); bool IsAmmo(); uint32 GetID(); uint32 GetItemScriptID(); int GetCharges(); void SetCharges(int charges); uint32 GetPrice(); void SetPrice(uint32 price); void SetColor(uint32 color); uint32 GetColor(); bool IsInstNoDrop(); bool IsAttuned(); void SetInstNoDrop(bool flag); void SetAttuned(bool flag); std::string GetCustomDataString(); void SetCustomData(const std::string &identifier, const std::string &value); void SetCustomData(const std::string &identifier, int value); void SetCustomData(const std::string &identifier, float value); void SetCustomData(const std::string &identifier, bool value); std::string GetCustomData(const std::string& identifier); void DeleteCustomData(const std::string& identifier); void SetScaling(bool v); void SetScale(double scale_factor); uint32 GetExp(); void SetExp(uint32 exp); void AddExp(uint32 exp); int8 GetMaxEvolveLvl(); Lua_ItemInst Clone(); void SetTimer(std::string name, uint32 time); void StopTimer(std::string name); void ClearTimers(); bool ContainsAugmentByID(uint32 item_id); int CountAugmentByID(uint32 item_id); int GetTaskDeliveredCount(); int RemoveTaskDeliveredItems(); std::string GetName(); int GetSerialNumber(); void ItemSay(const char* text); void ItemSay(const char* text, uint8 language_id); luabind::object GetAugmentIDs(lua_State* L); std::string GetItemLink(); void AddEvolveAmount(uint64 amount); uint32 GetAugmentEvolveUniqueID(uint8 slot_id); bool GetEvolveActivated(); uint64 GetEvolveAmount(); uint32 GetEvolveCharacterID(); bool GetEvolveEquipped(); uint32 GetEvolveFinalItemID(); uint32 GetEvolveItemID(); int8 GetEvolveLevel(); uint32 GetEvolveLoreID(); float GetEvolveProgression(); uint64 GetEvolveUniqueID(); bool IsEvolving(); void SetEvolveAmount(uint64 amount); void SetEvolveProgression(float amount); private: bool cloned_; }; #endif #endif