bool Item::IsBindedNotWith (Player const* player) const { // not binded item if (!IsSoulBound()) return false; // own item if (GetOwnerGUID() == player->GetGUID()) return false; if (HasFlag(ITEM_FIELD_FLAGS, ITEM_FLAG_BOP_TRADEABLE)) if (allowedGUIDs.find(player->GetGUIDLow()) != allowedGUIDs.end()) return false; // BOA item case if (IsBoundAccountWide()) return false; return true; }
bool Item::CanBeTraded(bool mail) const { if ((!mail || !IsBoundAccountWide()) && IsSoulBound()) return false; if (IsBag() && (Player::IsBagPos(GetPos()) || !((Bag const*)this)->IsEmpty()) ) return false; if (Player* owner = GetOwner()) { if (owner->CanUnequipItem(GetPos(),false) != EQUIP_ERR_OK ) return false; if (owner->GetLootGUID()==GetGUID()) return false; } if (IsBoundByEnchant()) return false; return true; }
bool Item::CanBeTraded(bool mail, bool trade) const { if ((!mail || !IsBoundAccountWide()) && (IsSoulBound() && (!HasFlag(ITEM_FIELD_FLAGS, ITEM_DYNFLAG_BOP_TRADEABLE) || !trade))) return false; if (IsBag() && (Player::IsBagPos(GetPos()) || !((Bag const*)this)->IsEmpty())) return false; if (Player* owner = GetOwner()) { if (owner->CanUnequipItem(GetPos(), false) != EQUIP_ERR_OK) return false; if (owner->GetLootGuid() == GetObjectGuid()) return false; } if (HasGeneratedLoot()) return false; if (IsBoundByEnchant()) return false; return true; }