bool Transmogrification::SuitableForTransmogrification(Player* player, ItemTemplate const* proto) { // ItemTemplate const* proto = item->GetTemplate(); if (!player || !proto) return false; if (proto->Class != ITEM_CLASS_ARMOR && proto->Class != ITEM_CLASS_WEAPON) return false; if (proto->Class == ITEM_CLASS_WEAPON && proto->SubClass == ITEM_SUBCLASS_WEAPON_FISHING_POLE) return false; if (IsAllowed(proto->ItemId)) return true; if (IsNotAllowed(proto->ItemId)) return false; if (!IsAllowedQuality(proto->Quality)) // (proto->Quality == ITEM_QUALITY_LEGENDARY) return false; if (player->CanUseItem(proto) != EQUIP_ERR_OK) return false; return true; }
bool Transmogrification::SuitableForTransmogrification(Player* player, ItemTemplate const* proto) { // ItemTemplate const* proto = item->GetTemplate(); if (!player || !proto) return false; if (proto->Class != ITEM_CLASS_ARMOR && proto->Class != ITEM_CLASS_WEAPON) return false; // Skip all checks for allowed items if (IsAllowed(proto->ItemId)) return true; if (IsNotAllowed(proto->ItemId)) return false; if (!AllowFishingPoles && proto->Class == ITEM_CLASS_WEAPON && proto->SubClass == ITEM_SUBCLASS_WEAPON_FISHING_POLE) return false; if (!IsAllowedQuality(proto->Quality)) // (proto->Quality == ITEM_QUALITY_LEGENDARY) return false; if ((proto->Flags2 & ITEM_FLAGS_EXTRA_HORDE_ONLY) && player->GetTeam() != HORDE) return false; if ((proto->Flags2 & ITEM_FLAGS_EXTRA_ALLIANCE_ONLY) && player->GetTeam() != ALLIANCE) return false; if (!IgnoreReqClass && (proto->AllowableClass & player->getClassMask()) == 0) return false; if (!IgnoreReqRace && (proto->AllowableRace & player->getRaceMask()) == 0) return false; if (!IgnoreReqSkill && proto->RequiredSkill != 0) { if (player->GetSkillValue(proto->RequiredSkill) == 0) return false; else if (player->GetSkillValue(proto->RequiredSkill) < proto->RequiredSkillRank) return false; } if (!IgnoreReqSpell && proto->RequiredSpell != 0 && !player->HasSpell(proto->RequiredSpell)) return false; if (!IgnoreReqLevel && player->getLevel() < proto->RequiredLevel) return false; // If World Event is not active, prevent using event dependant items if (!IgnoreReqEvent && proto->HolidayId && !IsHolidayActive((HolidayIds)proto->HolidayId)) return false; return true; }
bool TransmogDisplayVendorMgr::SuitableForTransmogrification(Player* player, ItemTemplate const* proto) { TC_LOG_DEBUG("custom.transmog", "TransmogDisplayVendorMgr::SuitableForTransmogrification"); // ItemTemplate const* proto = item->GetTemplate(); if (!proto) return false; if (proto->Class != ITEM_CLASS_ARMOR && proto->Class != ITEM_CLASS_WEAPON) return false; // Skip all checks for allowed items if (IsAllowed(proto->ItemId)) return true; if (IsNotAllowed(proto->ItemId)) return false; if (!AllowFishingPoles && proto->Class == ITEM_CLASS_WEAPON && proto->SubClass == ITEM_SUBCLASS_WEAPON_FISHING_POLE) return false; if (!IsAllowedQuality(proto->Quality)) // (proto->Quality == ITEM_QUALITY_LEGENDARY) return false; if (player) { if ((proto->Flags2 & ITEM_FLAGS_EXTRA_HORDE_ONLY) && player->GetTeam() != HORDE) return false; if ((proto->Flags2 & ITEM_FLAGS_EXTRA_ALLIANCE_ONLY) && player->GetTeam() != ALLIANCE) return false; if (!IgnoreReqClass && (proto->AllowableClass & player->getClassMask()) == 0) return false; if (!IgnoreReqRace && (proto->AllowableRace & player->getRaceMask()) == 0) return false; if (!IgnoreReqSkill && proto->RequiredSkill != 0) { if (player->GetSkillValue(proto->RequiredSkill) == 0) return false; else if (player->GetSkillValue(proto->RequiredSkill) < proto->RequiredSkillRank) return false; } if (!IgnoreReqSpell && proto->RequiredSpell != 0 && !player->HasSpell(proto->RequiredSpell)) return false; if (!IgnoreReqLevel && player->getLevel() < proto->RequiredLevel) return false; } // If World Event is not active, prevent using event dependant items if (!IgnoreReqEvent && proto->HolidayId && !IsHolidayActive((HolidayIds)proto->HolidayId)) return false; if (!IgnoreReqStats) { if (!proto->RandomProperty && !proto->RandomSuffix) { bool found = false; for (uint8 i = 0; i < proto->StatsCount; ++i) { if (proto->ItemStat[i].ItemStatValue != 0) { found = true; break; } } if (!found) return false; } } return true; }