6#ifndef SKYFIRESERVER_ITEM_H
7#define SKYFIRESERVER_ITEM_H
168#define MAX_VISIBLE_ITEM_OFFSET 2
170#define MAX_GEM_SOCKETS MAX_ITEM_PROTO_SOCKETS
179#define MAX_ENCHANTMENT_OFFSET 3
197#define MAX_ITEM_SPELLS 5
241 const Bag*
ToBag()
const {
if (
IsBag())
return reinterpret_cast<const Bag*
>(
this);
else return NULL; }
248 bool CanBeTraded(
bool mail =
false,
bool trade =
false)
const;
356 return transmogrification;
@ BUY_ERR_CANT_CARRY_MORE
@ BUY_ERR_ITEM_ALREADY_SOLD
@ BUY_ERR_SELLER_DONT_LIKE_YOU
@ BUY_ERR_NOT_ENOUGHT_MONEY
@ BUY_ERR_REPUTATION_REQUIRE
@ BUY_ERR_DISTANCE_TOO_FAR
#define MAX_ENCHANTMENT_OFFSET
@ SOCK_ENCHANTMENT_SLOT_3
@ PROP_ENCHANTMENT_SLOT_0
@ PROP_ENCHANTMENT_SLOT_2
@ SOCK_ENCHANTMENT_SLOT_2
@ PRISMATIC_ENCHANTMENT_SLOT
@ PROP_ENCHANTMENT_SLOT_1
@ MAX_INSPECTED_ENCHANTMENT_SLOT
@ PROP_ENCHANTMENT_SLOT_4
@ PROP_ENCHANTMENT_SLOT_3
@ ENCHANTMENT_CAN_SOULBOUND
@ EQUIP_ERR_CANT_EQUIP_RANK
@ EQUIP_ERR_TOO_MUCH_GOLD
@ EQUIP_ERR_CANT_EQUIP_EVER
@ EQUIP_ERR_NO_SLOT_AVAILABLE
@ EQUIP_ERR_CANT_EQUIP_EVER_2
@ EQUIP_ERR_CANT_EQUIP_RATING
@ EQUIP_ERR_VENDOR_SOLD_OUT
@ EQUIP_ERR_MAIL_BOUND_ITEM
@ EQUIP_ERR_CANT_BUY_QUANTITY
@ EQUIP_ERR_SCALING_STAT_ITEM_LEVEL_TOO_LOW
@ EQUIP_ERR_ONLY_ONE_QUIVER
@ EQUIP_ERR_ITEM_INVENTORY_FULL_SATCHEL
@ EQUIP_ERR_ITEM_MAX_COUNT_EQUIPPED_SOCKETED
@ EQUIP_ERR_DESTROY_NONEMPTY_BAG
@ EQUIP_ERR_NOT_ENOUGH_HONOR_POINTS
@ EQUIP_ERR_CANT_WRAP_BAGS
@ EQUIP_ERR_ITEM_UNIQUE_EQUIPPABLE
@ EQUIP_ERR_ITEM_MAX_COUNT_SOCKETED
@ EQUIP_ERR_NOT_DURING_ARENA_MATCH
@ EQUIP_ERR_SHAPESHIFT_FORM_CANNOT_EQUIP
@ EQUIP_ERR_CLIENT_LOCKED_OUT
@ EQUIP_ERR_CANT_BE_DISENCHANTED
@ EQUIP_ERR_NOT_IN_COMBAT
@ EQUIP_ERR_OBJECT_IS_BUSY
@ EQUIP_ERR_NO_SLOT_AVAILABLE_3
@ EQUIP_ERR_ITEM_NOT_FOUND_2
@ EQUIP_ERR_CANT_EQUIP_LEVEL_I
@ EQUIP_ERR_GENERIC_STUNNED
@ EQUIP_ERR_WRONG_BAG_TYPE
@ EQUIP_ERR_PROFICIENCY_NEEDED
@ EQUIP_ERR_ITEM_MAX_LIMIT_CATEGORY_COUNT_EXCEEDED_IS
@ EQUIP_ERR_CANT_EQUIP_NEED_TALENT
@ EQUIP_ERR_ONLY_ONE_BOLT
@ EQUIP_ERR_DROP_BOUND_ITEM
@ EQUIP_ERR_NOT_WHILE_DISARMED
@ EQUIP_ERR_PURCHASE_LEVEL_TOO_LOW
@ EQUIP_ERR_ITEM_NOT_FOUND
@ EQUIP_ERR_ITEM_STILL_WAITING_TO_BE_UNLOCKED
@ EQUIP_ERR_CANT_EQUIP_REPUTATION
@ EQUIP_ERR_CANT_WRAP_BOUND
@ EQUIP_ERR_NOT_SAME_ACCOUNT
@ EQUIP_ERR_CANT_EQUIP_SKILL
@ EQUIP_ERR_WRONG_BAG_TYPE_2
@ EQUIP_ERR_2HANDED_EQUIPPED
@ EQUIP_ERR_NOT_ENOUGH_MONEY
@ EQUIP_ERR_ITEM_UNIQUE_EQUIPPABLE_SOCKETED
@ EQUIP_ERR_INTERNAL_BAG_ERROR
@ EQUIP_ERR_CANT_WRAP_EQUIPPED
@ EQUIP_ERR_ITEM_MAX_LIMIT_CATEGORY_EQUIPPED_EXCEEDED_IS
@ EQUIP_ERR_INTERNAL_BAG_ERROR_2
@ EQUIP_ERR_TRADE_EQUIPPED_BAG
@ EQUIP_ERR_NOT_EQUIPPABLE
@ EQUIP_ERR_VENDOR_MISSING_TURNINS
@ EQUIP_ERR_2HSKILLNOTFOUND
@ EQUIP_ERR_LOOT_CANT_LOOT_THAT_NOW
@ EQUIP_ERR_CANT_WRAP_STACKABLE
@ EQUIP_ERR_TRADE_BOUND_ITEM
@ EQUIP_ERR_ONLY_ONE_AMMO
@ EQUIP_ERR_SPELL_FAILED_REAGENTS_GENERIC
@ EQUIP_ERR_ITEM_MAX_LIMIT_CATEGORY_SOCKETED_EXCEEDED_IS
@ EQUIP_ERR_TOO_MANY_SPECIAL_BAGS
@ EQUIP_ERR_ITEM_MAX_COUNT
@ EQUIP_ERR_NO_SLOT_AVAILABLE_2
@ EQUIP_ERR_CANT_WRAP_WRAPPED
@ EQUIP_ERR_VENDOR_SOLD_OUT_2
@ EQUIP_ERR_CANT_WRAP_UNIQUE
@ EQUIP_ERR_SCALING_STAT_ITEM_LEVEL_EXCEEDED
@ EQUIP_ERR_TOO_FEW_TO_SPLIT
@ EQUIP_ERR_NOT_ENOUGH_ARENA_POINTS
@ SELL_ERR_ONLY_EMPTY_BAG
@ SELL_ERR_CANT_FIND_ITEM
@ SELL_ERR_CANT_SELL_ITEM
@ SELL_ERR_YOU_DONT_OWN_THAT_ITEM
@ SELL_ERR_CANT_FIND_VENDOR
@ ENCHANTMENT_CHARGES_OFFSET
@ ENCHANTMENT_DURATION_OFFSET
bool ItemCanGoIntoBag(ItemTemplate const *proto, ItemTemplate const *pBagProto)
@ ITEM_PROTO_FLAG_BIND_TO_ACCOUNT
std::set< uint32 > AllowedLooterSet
UNORDERED_MAP< Player *, UpdateData > UpdateDataMapType
Skyfire::AutoPtr< Transaction, Skyfire::Mutex > SQLTransaction
@ ITEM_FIELD_MAX_DURABILITY
@ ITEM_FIELD_RANDOM_PROPERTIES_ID
@ ITEM_FIELD_PROPERTY_SEED
@ ITEM_FIELD_DYNAMIC_FLAGS
@ ITEM_FIELD_SPELL_CHARGES
uint32 GetPaidExtendedCost() const
void BuildUpdate(UpdateDataMapType &)
std::string const & GetText() const
int32 GetReforgableStat(ItemModType statType) const
bool IsCurrencyToken() const
uint32 GetScriptId() const
void UpdateItemSuffixFactor()
void SetNotRefundable(Player *owner, bool changestate=true, SQLTransaction *trans=NULL)
void SetSpellCharges(uint8 index, int32 value)
void SetText(std::string const &text)
void UpdateDuration(Player *owner, uint32 diff)
void SetEnchantment(EnchantmentSlot slot, uint32 id, uint32 duration, uint32 charges, uint64 caster=0)
bool HasEnchantRequiredSkill(const Player *player) const
bool IsLimitedToAnotherMapOrZone(uint32 cur_mapId, uint32 cur_zoneId) const
void SetBinding(bool val)
void SetState(ItemUpdateState state, Player *forplayer=NULL)
void AddToUpdateQueueOf(Player *player)
uint32 GetEnchantmentId(EnchantmentSlot slot) const
void ItemContainerSaveLootToDB()
int32 GetSpellCharges(uint8 index=0) const
void SetOwnerGUID(uint64 guid)
void RemoveFromUpdateQueueOf(Player *player)
void SetSoulboundTradeable(AllowedLooterSet const &allowedLooters)
void SetItemRandomProperties(int32 randomPropId)
void SetPaidMoney(uint32 money)
uint8 GetGemCountWithID(uint32 GemID) const
bool IsBoundAccountWide() const
Item * CloneItem(uint32 count, Player const *player=NULL) const
bool CanBeTraded(bool mail=false, bool trade=false) const
uint32 GetEnchantmentDuration(EnchantmentSlot slot) const
void ItemContainerDeleteLootMoneyAndLootItemsFromDB()
virtual void SaveToDB(SQLTransaction &trans)
void SetCount(uint32 value)
int32 GetItemRandomPropertyId() const
ItemTemplate const * GetTemplate() const
uint32 GetVisibleEntry() const
void SaveRefundDataToDB()
void SetRefundRecipient(uint32 pGuidLow)
ItemUpdateState GetState() const
uint32 GetItemSuffixFactor() const
bool IsBindedNotWith(Player const *player) const
static uint32 GetSpecialPrice(ItemTemplate const *proto, uint32 minimumPrice=10000)
uint16 GetQueuePos() const
bool CanBeTransmogrified() const
void SendTimeUpdate(Player *owner)
void UpdatePlayedTime(Player *owner)
virtual bool LoadFromDB(uint32 guid, uint64 owner_guid, Field *fields, uint32 entry)
static bool CanTransmogrifyItemWithItem(Item const *transmogrified, Item const *transmogrifier)
Player * GetOwner() const
uint32 GetSpecialPrice(uint32 minimumPrice=10000) const
time_t m_lastPlayedTimeUpdate
static Item * CreateItem(uint32 itemEntry, uint32 count, Player const *player=NULL)
bool hasQuest(uint32 quest_id) const
static uint32 GetSellPrice(ItemTemplate const *proto, bool &success)
bool hasInvolvedQuest(uint32) const
bool GemsFitSockets() const
bool ItemContainerLoadLootFromDB()
bool IsBoundByEnchant() const
void DeleteRefundDataFromDB(SQLTransaction *trans)
bool IsRangedWeapon() const
void FSetState(ItemUpdateState state)
void SetEnchantmentCharges(EnchantmentSlot slot, uint32 charges)
const Bag * ToBag() const
uint32 m_paidExtendedCost
void ClearEnchantment(EnchantmentSlot slot)
static void DeleteFromInventoryDB(SQLTransaction &trans, uint32 itemGuid)
void SetEnchantmentDuration(EnchantmentSlot slot, uint32 duration, Player *owner)
InventoryResult CanBeMergedPartlyWith(ItemTemplate const *proto) const
void SetPaidExtendedCost(uint32 iece)
uint32 GetEnchantmentCharges(EnchantmentSlot slot) const
bool CanTransmogrify() const
uint64 GetOwnerGUID() const
void ItemContainerDeleteLootItemFromDB(uint32 itemID)
uint32 GetPaidMoney() const
uint8 GetGemCountWithLimitCategory(uint32 limitCategory) const
void ClearSoulboundTradeable(Player *currentOwner)
bool IsNotEmptyBag() const
bool CheckSoulboundTradeExpire()
void SetContainer(Bag *container)
void ItemContainerDeleteLootMoneyFromDB()
uint32 GetRefundRecipient() const
static int32 GenerateItemRandomPropertyId(uint32 item_id)
uint32 GetMaxStackCount() const
virtual bool Create(uint32 guidlow, uint32 itemid, Player const *owner)
bool IsConjuredConsumable() const
bool IsInUpdateQueue() const
void ItemContainerDeleteLootItemsFromDB()
bool IsFitToSpellRequirements(SpellInfo const *spellInfo) const
void SetInTrade(bool b=true)
AllowedLooterSet allowedGUIDs
static void DeleteFromDB(SQLTransaction &trans, uint32 itemGuid)
int32 GetInt32Value(uint16 index) const
void SetInt32Value(uint16 index, int32 value)
uint32 GetUInt32Value(uint16 index) const
void ApplyModFlag(uint16 index, uint32 flag, bool apply)
uint32 GetDynamicUInt32Value(uint32 tab, uint16 index) const
uint64 GetUInt64Value(uint16 index) const
bool HasFlag(uint16 index, uint32 flag) const
void SetUInt32Value(uint16 index, uint32 value)
void SetUInt64Value(uint16 index, uint64 value)
SpellInfo const * spells[8]
uint32 GetMaxStackSize() const
bool IsRangedWeapon() const
bool IsCurrencyToken() const
bool IsConjuredConsumable() const