aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Globals/ObjectMgr.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/game/Globals/ObjectMgr.cpp')
-rw-r--r--src/server/game/Globals/ObjectMgr.cpp261
1 files changed, 0 insertions, 261 deletions
diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp
index d13f4ace139..dd16bfe6839 100644
--- a/src/server/game/Globals/ObjectMgr.cpp
+++ b/src/server/game/Globals/ObjectMgr.cpp
@@ -3063,216 +3063,6 @@ uint32 FillMaxDurability(uint32 itemClass, uint32 itemSubClass, uint32 inventory
return 5 * uint32(round(18.0f * qualityMultipliers[quality] * weaponMultipliers[itemSubClass] * levelPenalty));
};
-struct ItemSpecStats
-{
- uint32 ItemType;
- uint32 ItemSpecStatTypes[MAX_ITEM_PROTO_STATS];
- uint32 ItemSpecStatCount;
-
- ItemSpecStats(ItemEntry const* item, ItemSparseEntry const* sparse) : ItemType(0), ItemSpecStatCount(0)
- {
- memset(ItemSpecStatTypes, -1, sizeof(ItemSpecStatTypes));
-
- if (item->ClassID == ITEM_CLASS_WEAPON)
- {
- ItemType = 5;
- switch (item->SubclassID)
- {
- case ITEM_SUBCLASS_WEAPON_AXE:
- AddStat(ITEM_SPEC_STAT_ONE_HANDED_AXE);
- break;
- case ITEM_SUBCLASS_WEAPON_AXE2:
- AddStat(ITEM_SPEC_STAT_TWO_HANDED_AXE);
- break;
- case ITEM_SUBCLASS_WEAPON_BOW:
- AddStat(ITEM_SPEC_STAT_BOW);
- break;
- case ITEM_SUBCLASS_WEAPON_GUN:
- AddStat(ITEM_SPEC_STAT_GUN);
- break;
- case ITEM_SUBCLASS_WEAPON_MACE:
- AddStat(ITEM_SPEC_STAT_ONE_HANDED_MACE);
- break;
- case ITEM_SUBCLASS_WEAPON_MACE2:
- AddStat(ITEM_SPEC_STAT_TWO_HANDED_MACE);
- break;
- case ITEM_SUBCLASS_WEAPON_POLEARM:
- AddStat(ITEM_SPEC_STAT_POLEARM);
- break;
- case ITEM_SUBCLASS_WEAPON_SWORD:
- AddStat(ITEM_SPEC_STAT_ONE_HANDED_SWORD);
- break;
- case ITEM_SUBCLASS_WEAPON_SWORD2:
- AddStat(ITEM_SPEC_STAT_TWO_HANDED_SWORD);
- break;
- case ITEM_SUBCLASS_WEAPON_WARGLAIVES:
- AddStat(ITEM_SPEC_STAT_WARGLAIVES);
- break;
- case ITEM_SUBCLASS_WEAPON_STAFF:
- AddStat(ITEM_SPEC_STAT_STAFF);
- break;
- case ITEM_SUBCLASS_WEAPON_FIST_WEAPON:
- AddStat(ITEM_SPEC_STAT_FIST_WEAPON);
- break;
- case ITEM_SUBCLASS_WEAPON_DAGGER:
- AddStat(ITEM_SPEC_STAT_DAGGER);
- break;
- case ITEM_SUBCLASS_WEAPON_THROWN:
- AddStat(ITEM_SPEC_STAT_THROWN);
- break;
- case ITEM_SUBCLASS_WEAPON_CROSSBOW:
- AddStat(ITEM_SPEC_STAT_CROSSBOW);
- break;
- case ITEM_SUBCLASS_WEAPON_WAND:
- AddStat(ITEM_SPEC_STAT_WAND);
- break;
- default:
- break;
- }
- }
- else if (item->ClassID == ITEM_CLASS_ARMOR)
- {
- switch (item->SubclassID)
- {
- case ITEM_SUBCLASS_ARMOR_CLOTH:
- if (sparse->InventoryType != INVTYPE_CLOAK)
- {
- ItemType = 1;
- break;
- }
-
- ItemType = 0;
- AddStat(ITEM_SPEC_STAT_CLOAK);
- break;
- case ITEM_SUBCLASS_ARMOR_LEATHER:
- ItemType = 2;
- break;
- case ITEM_SUBCLASS_ARMOR_MAIL:
- ItemType = 3;
- break;
- case ITEM_SUBCLASS_ARMOR_PLATE:
- ItemType = 4;
- break;
- default:
- if (item->SubclassID == ITEM_SUBCLASS_ARMOR_SHIELD)
- {
- ItemType = 6;
- AddStat(ITEM_SPEC_STAT_SHIELD);
- }
- else if (item->SubclassID > ITEM_SUBCLASS_ARMOR_SHIELD && item->SubclassID <= ITEM_SUBCLASS_ARMOR_RELIC)
- {
- ItemType = 6;
- AddStat(ITEM_SPEC_STAT_RELIC);
- }
- else
- ItemType = 0;
- break;
- }
- }
- else if (item->ClassID == ITEM_CLASS_GEM)
- {
- ItemType = 7;
- if (GemPropertiesEntry const* gem = sGemPropertiesStore.LookupEntry(sparse->GemProperties))
- {
- if (gem->Type & SOCKET_COLOR_RELIC_IRON)
- AddStat(ITEM_SPEC_STAT_RELIC_IRON);
- if (gem->Type & SOCKET_COLOR_RELIC_BLOOD)
- AddStat(ITEM_SPEC_STAT_RELIC_BLOOD);
- if (gem->Type & SOCKET_COLOR_RELIC_SHADOW)
- AddStat(ITEM_SPEC_STAT_RELIC_SHADOW);
- if (gem->Type & SOCKET_COLOR_RELIC_FEL)
- AddStat(ITEM_SPEC_STAT_RELIC_FEL);
- if (gem->Type & SOCKET_COLOR_RELIC_ARCANE)
- AddStat(ITEM_SPEC_STAT_RELIC_ARCANE);
- if (gem->Type & SOCKET_COLOR_RELIC_FROST)
- AddStat(ITEM_SPEC_STAT_RELIC_FROST);
- if (gem->Type & SOCKET_COLOR_RELIC_FIRE)
- AddStat(ITEM_SPEC_STAT_RELIC_FIRE);
- if (gem->Type & SOCKET_COLOR_RELIC_WATER)
- AddStat(ITEM_SPEC_STAT_RELIC_WATER);
- if (gem->Type & SOCKET_COLOR_RELIC_LIFE)
- AddStat(ITEM_SPEC_STAT_RELIC_LIFE);
- if (gem->Type & SOCKET_COLOR_RELIC_WIND)
- AddStat(ITEM_SPEC_STAT_RELIC_WIND);
- if (gem->Type & SOCKET_COLOR_RELIC_HOLY)
- AddStat(ITEM_SPEC_STAT_RELIC_HOLY);
- }
- }
- else
- ItemType = 0;
-
- for (uint32 i = 0; i < MAX_ITEM_PROTO_STATS; ++i)
- if (sparse->StatModifierBonusStat[i] != -1)
- AddModStat(sparse->StatModifierBonusStat[i]);
- }
-
- void AddStat(ItemSpecStat statType)
- {
- if (ItemSpecStatCount >= MAX_ITEM_PROTO_STATS)
- return;
-
- for (uint32 i = 0; i < MAX_ITEM_PROTO_STATS; ++i)
- if (ItemSpecStatTypes[i] == uint32(statType))
- return;
-
- ItemSpecStatTypes[ItemSpecStatCount++] = statType;
- }
-
- void AddModStat(int32 itemStatType)
- {
- switch (itemStatType)
- {
- case ITEM_MOD_AGILITY:
- AddStat(ITEM_SPEC_STAT_AGILITY);
- break;
- case ITEM_MOD_STRENGTH:
- AddStat(ITEM_SPEC_STAT_STRENGTH);
- break;
- case ITEM_MOD_INTELLECT:
- AddStat(ITEM_SPEC_STAT_INTELLECT);
- break;
- case ITEM_MOD_DODGE_RATING:
- AddStat(ITEM_SPEC_STAT_DODGE);
- break;
- case ITEM_MOD_PARRY_RATING:
- AddStat(ITEM_SPEC_STAT_PARRY);
- break;
- case ITEM_MOD_CRIT_MELEE_RATING:
- case ITEM_MOD_CRIT_RANGED_RATING:
- case ITEM_MOD_CRIT_SPELL_RATING:
- case ITEM_MOD_CRIT_RATING:
- AddStat(ITEM_SPEC_STAT_CRIT);
- break;
- case ITEM_MOD_HASTE_RATING:
- AddStat(ITEM_SPEC_STAT_HASTE);
- break;
- case ITEM_MOD_HIT_RATING:
- AddStat(ITEM_SPEC_STAT_HIT);
- break;
- case ITEM_MOD_EXTRA_ARMOR:
- AddStat(ITEM_SPEC_STAT_BONUS_ARMOR);
- break;
- case ITEM_MOD_AGI_STR_INT:
- AddStat(ITEM_SPEC_STAT_AGILITY);
- AddStat(ITEM_SPEC_STAT_STRENGTH);
- AddStat(ITEM_SPEC_STAT_INTELLECT);
- break;
- case ITEM_MOD_AGI_STR:
- AddStat(ITEM_SPEC_STAT_AGILITY);
- AddStat(ITEM_SPEC_STAT_STRENGTH);
- break;
- case ITEM_MOD_AGI_INT:
- AddStat(ITEM_SPEC_STAT_AGILITY);
- AddStat(ITEM_SPEC_STAT_INTELLECT);
- break;
- case ITEM_MOD_STR_INT:
- AddStat(ITEM_SPEC_STAT_STRENGTH);
- AddStat(ITEM_SPEC_STAT_INTELLECT);
- break;
- }
- }
-};
-
void ObjectMgr::LoadItemTemplates()
{
uint32 oldMSTime = getMSTime();
@@ -3299,57 +3089,6 @@ void ObjectMgr::LoadItemTemplates()
itemTemplate.ItemSpecClassMask = 0;
itemTemplate.QuestLogItemId = 0;
- if (std::vector<ItemSpecOverrideEntry const*> const* itemSpecOverrides = sDB2Manager.GetItemSpecOverrides(sparse->ID))
- {
- for (ItemSpecOverrideEntry const* itemSpecOverride : *itemSpecOverrides)
- {
- if (ChrSpecializationEntry const* specialization = sChrSpecializationStore.LookupEntry(itemSpecOverride->SpecID))
- {
- itemTemplate.ItemSpecClassMask |= 1 << (specialization->ClassID - 1);
- itemTemplate.Specializations[0].set(ItemTemplate::CalculateItemSpecBit(specialization));
- itemTemplate.Specializations[1] |= itemTemplate.Specializations[0];
- itemTemplate.Specializations[2] |= itemTemplate.Specializations[0];
- }
- }
- }
- else
- {
- ItemSpecStats itemSpecStats(db2Data, sparse);
-
- for (ItemSpecEntry const* itemSpec : sItemSpecStore)
- {
- if (itemSpecStats.ItemType != itemSpec->ItemType)
- continue;
-
- bool hasPrimary = itemSpec->PrimaryStat == ITEM_SPEC_STAT_NONE;
- bool hasSecondary = itemSpec->SecondaryStat == ITEM_SPEC_STAT_NONE;
- for (uint32 i = 0; i < itemSpecStats.ItemSpecStatCount; ++i)
- {
- if (itemSpecStats.ItemSpecStatTypes[i] == itemSpec->PrimaryStat)
- hasPrimary = true;
- if (itemSpecStats.ItemSpecStatTypes[i] == itemSpec->SecondaryStat)
- hasSecondary = true;
- }
-
- if (!hasPrimary || !hasSecondary)
- continue;
-
- if (ChrSpecializationEntry const* specialization = sChrSpecializationStore.LookupEntry(itemSpec->SpecializationID))
- {
- if ((1 << (specialization->ClassID - 1)) & sparse->AllowableClass)
- {
- itemTemplate.ItemSpecClassMask |= 1 << (specialization->ClassID - 1);
- std::size_t specBit = ItemTemplate::CalculateItemSpecBit(specialization);
- itemTemplate.Specializations[0].set(specBit);
- if (itemSpec->MaxLevel > 40)
- itemTemplate.Specializations[1].set(specBit);
- if (itemSpec->MaxLevel >= 110)
- itemTemplate.Specializations[2].set(specBit);
- }
- }
- }
- }
-
// Items that have no specializations set can be used by everyone
for (auto& specs : itemTemplate.Specializations)
if (specs.count() == 0)