6#ifndef SF_ITEMPROTOTYPE_H
7#define SF_ITEMPROTOTYPE_H
67#define MAX_ITEM_MOD 58
85#define MAX_ITEM_SPELLTRIGGER 7
97#define MAX_BIND_TYPE 6
250#define SOCKET_COLOR_ALL (SOCKET_COLOR_META | SOCKET_COLOR_RED | SOCKET_COLOR_YELLOW | SOCKET_COLOR_BLUE | SOCKET_COLOR_COGWHEEL)
285#define MAX_INVTYPE 29
309#define MAX_ITEM_CLASS 18
324#define MAX_ITEM_SUBCLASS_CONSUMABLE 9
341#define MAX_ITEM_SUBCLASS_CONTAINER 11
368#define ITEM_SUBCLASS_MASK_WEAPON_RANGED (\
369 (1 << ITEM_SUBCLASS_WEAPON_BOW) | (1 << ITEM_SUBCLASS_WEAPON_GUN) |\
370 (1 << ITEM_SUBCLASS_WEAPON_CROSSBOW) | (1 << ITEM_SUBCLASS_WEAPON_THROWN))
372#define MAX_ITEM_SUBCLASS_WEAPON 21
389#define MAX_ITEM_SUBCLASS_GEM 11
407#define MAX_ITEM_SUBCLASS_ARMOR 12
414#define MAX_ITEM_SUBCLASS_REAGENT 1
425#define MAX_ITEM_SUBCLASS_PROJECTILE 5
446#define MAX_ITEM_SUBCLASS_TRADE_GOODS 15
453#define MAX_ITEM_SUBCLASS_GENERIC 1
471#define MAX_ITEM_SUBCLASS_RECIPE 12
479#define MAX_ITEM_SUBCLASS_MONEY 8
489#define MAX_ITEM_SUBCLASS_QUIVER 4
498#define MAX_ITEM_SUBCLASS_QUEST 9
506#define MAX_ITEM_SUBCLASS_KEY 2
513#define MAX_ITEM_SUBCLASS_PERMANENT 1
526#define MAX_ITEM_SUBCLASS_JUNK 13
543#define MAX_ITEM_SUBCLASS_GLYPH 12
550#define MAX_ITEM_SUBCLASS_BATTLE_PET 1
622#define MAX_ITEM_PROTO_DAMAGES 2
623#define MAX_ITEM_PROTO_SOCKETS 3
624#define MAX_ITEM_PROTO_SPELLS 5
625#define MAX_ITEM_PROTO_STATS 10
633 Bonding(0),
PageText(0),
LanguageID(0),
PageMaterial(0),
StartQuest(0),
LockID(0),
Material(0),
Sheath(0),
RandomProperty(0),
RandomSuffix(0),
ItemSet(0),
634 MaxDurability(0),
Area(0),
Map(0),
BagFamily(0),
TotemCategory(0),
socketBonus(0),
GemProperties(0),
ArmorDamageModifier(0.0f),
Duration(0),
ItemLimitCategory(0),
795 if (!armorQuality || !armorTotal)
810 float locationModifier = 1.0f;
814 total = armorTotal->
Value[0];
815 locationModifier = location->
Value[0];
818 total = armorTotal->
Value[1];
819 locationModifier = location->
Value[1];
822 total = armorTotal->
Value[2];
823 locationModifier = location->
Value[2];
826 total = armorTotal->
Value[3];
827 locationModifier = location->
Value[3];
833 return uint32(armorQuality->
Value[quality] * total * locationModifier + 0.5f);
std::vector< std::string > StringVector
DBCStorage< ItemArmorQualityEntry > sItemArmorQualityStore(ItemArmorQualityfmt)
DBCStorage< ArmorLocationEntry > sArmorLocationStore(ArmorLocationfmt)
DBCStorage< ItemArmorTotalEntry > sItemArmorTotalStore(ItemArmorTotalfmt)
DBCStorage< ItemArmorShieldEntry > sItemArmorShieldStore(ItemArmorShieldfmt)
#define MAX_ITEM_SUBCLASS_MONEY
UNORDERED_MAP< uint32, ItemTemplate > ItemTemplateContainer
@ ITEM_SUBCLASS_WEAPON_MISCELLANEOUS
@ ITEM_SUBCLASS_WEAPON_CROSSBOW
@ ITEM_SUBCLASS_WEAPON_GUN
@ ITEM_SUBCLASS_WEAPON_AXE2
@ ITEM_SUBCLASS_WEAPON_SPEAR
@ ITEM_SUBCLASS_WEAPON_STAFF
@ ITEM_SUBCLASS_WEAPON_MACE
@ ITEM_SUBCLASS_WEAPON_EXOTIC2
@ ITEM_SUBCLASS_WEAPON_FISHING_POLE
@ ITEM_SUBCLASS_WEAPON_MACE2
@ ITEM_SUBCLASS_WEAPON_DAGGER
@ ITEM_SUBCLASS_WEAPON_BOW
@ ITEM_SUBCLASS_WEAPON_SWORD
@ ITEM_SUBCLASS_WEAPON_AXE
@ ITEM_SUBCLASS_WEAPON_Obsolete
@ ITEM_SUBCLASS_WEAPON_FIST_WEAPON
@ ITEM_SUBCLASS_WEAPON_WAND
@ ITEM_SUBCLASS_WEAPON_EXOTIC
@ ITEM_SUBCLASS_WEAPON_THROWN
@ ITEM_SUBCLASS_WEAPON_SWORD2
@ ITEM_SUBCLASS_WEAPON_POLEARM
@ ITEM_SUBCLASS_GLYPH_WARLOCK
@ ITEM_SUBCLASS_GLYPH_PRIEST
@ ITEM_SUBCLASS_GLYPH_WARRIOR
@ ITEM_SUBCLASS_GLYPH_MONK
@ ITEM_SUBCLASS_GLYPH_ROGUE
@ ITEM_SUBCLASS_GLYPH_HUNTER
@ ITEM_SUBCLASS_GLYPH_SHAMAN
@ ITEM_SUBCLASS_GLYPH_DEATH_KNIGHT
@ ITEM_SUBCLASS_GLYPH_PALADIN
@ ITEM_SUBCLASS_GLYPH_MAGE
@ ITEM_SUBCLASS_GLYPH_DRUID
#define MAX_ITEM_SUBCLASS_RECIPE
#define MAX_ITEM_SUBCLASS_KEY
@ CURRENCY_CATEGORY_META_CONQUEST
@ CURRENCY_CATEGORY_ARCHAEOLOGY
#define MAX_ITEM_SUBCLASS_GENERIC
@ ITEM_SPELLTRIGGER_LEARN_SPELL_ID
@ ITEM_SPELLTRIGGER_SOULSTONE
@ ITEM_SPELLTRIGGER_ON_USE
@ ITEM_SPELLTRIGGER_CHANCE_ON_HIT
@ ITEM_SPELLTRIGGER_ON_NO_DELAY_USE
@ ITEM_SPELLTRIGGER_ON_EQUIP
@ BAG_FAMILY_MASK_MINING_SUPP
@ BAG_FAMILY_MASK_ENCHANTING_SUPP
@ BAG_FAMILY_MASK_SOUL_SHARDS
@ BAG_FAMILY_MASK_CURRENCY_TOKENS
@ BAG_FAMILY_MASK_INSCRIPTION_SUPP
@ BAG_FAMILY_MASK_VANITY_PETS
@ BAG_FAMILY_MASK_SOULBOUND_EQUIPMENT
@ BAG_FAMILY_MASK_BULLETS
@ BAG_FAMILY_MASK_QUEST_ITEMS
@ BAG_FAMILY_MASK_ENGINEERING_SUPP
@ BAG_FAMILY_MASK_COOKING_SUPP
@ BAG_FAMILY_MASK_FISHING_SUPP
@ BAG_FAMILY_MASK_LEATHERWORKING_SUPP
@ ITEM_SUBCLASS_CONTAINER
@ ITEM_SUBCLASS_COOKING_CONTAINER
@ ITEM_SUBCLASS_INSCRIPTION_CONTAINER
@ ITEM_SUBCLASS_LEATHERWORKING_CONTAINER
@ ITEM_SUBCLASS_TACKLE_CONTAINER
@ ITEM_SUBCLASS_GEM_CONTAINER
@ ITEM_SUBCLASS_SOUL_CONTAINER
@ ITEM_SUBCLASS_ENCHANTING_CONTAINER
@ ITEM_SUBCLASS_MINING_CONTAINER
@ ITEM_SUBCLASS_HERB_CONTAINER
@ ITEM_SUBCLASS_ENGINEERING_CONTAINER
@ ITEM_SUBCLASS_AMMO_POUCH
@ ITEM_PROTO_FLAG_THROWABLE
@ ITEM_PROTO_FLAG_WRAPPER
@ ITEM_PROTO_FLAG_REFUNDABLE
@ ITEM_PROTO_FLAG_USABLE_WHEN_SHAPESHIFTED
@ ITEM_PROTO_FLAG_INDESTRUCTIBLE
@ ITEM_PROTO_FLAG_UNIQUE_EQUIPPED
@ ITEM_PROTO_FLAG_CONJURED
@ ITEM_PROTO_FLAG_SMART_LOOT
@ ITEM_PROTO_FLAG_BOP_TRADEABLE
@ ITEM_PROTO_FLAG_CHARTER
@ ITEM_PROTO_FLAG_TRIGGERED_CAST
@ ITEM_PROTO_FLAG_MILLABLE
@ ITEM_PROTO_FLAG_BIND_TO_ACCOUNT
@ ITEM_PROTO_FLAG_NOT_USEABLE_IN_ARENA
@ ITEM_PROTO_FLAG_PROSPECTABLE
@ ITEM_PROTO_FLAG_PARTY_LOOT
@ ITEM_PROTO_FLAG_NO_EQUIP_COOLDOWN
@ ITEM_PROTO_FLAG_USEABLE_IN_ARENA
@ ITEM_PROTO_FLAG_DEPRECATED
@ ITEM_PROTO_FLAG_OPENABLE
@ ITEM_MOD_HOLY_RESISTANCE
@ ITEM_MOD_CRIT_TAKEN_RANGED_RATING
@ ITEM_MOD_NATURE_RESISTANCE
@ ITEM_MOD_HIT_MELEE_RATING
@ ITEM_MOD_MASTERY_RATING
@ ITEM_MOD_HIT_TAKEN_MELEE_RATING
@ ITEM_MOD_HIT_SPELL_RATING
@ ITEM_MOD_SPELL_PENETRATION
@ ITEM_MOD_DEFENSE_SKILL_RATING
@ ITEM_MOD_HASTE_RANGED_RATING
@ ITEM_MOD_CRIT_TAKEN_RATING
@ ITEM_MOD_EXPERTISE_RATING
@ ITEM_MOD_RANGED_ATTACK_POWER
@ ITEM_MOD_CRIT_TAKEN_SPELL_RATING
@ ITEM_MOD_HIT_TAKEN_SPELL_RATING
@ ITEM_MOD_FROST_RESISTANCE
@ ITEM_MOD_SHADOW_RESISTANCE
@ ITEM_MOD_HASTE_SPELL_RATING
@ ITEM_MOD_FIRE_RESISTANCE
@ ITEM_MOD_HIT_RANGED_RATING
@ ITEM_MOD_CRIT_SPELL_RATING
@ ITEM_MOD_CRIT_RANGED_RATING
@ ITEM_MOD_CRIT_MELEE_RATING
@ ITEM_MOD_ARMOR_PENETRATION_RATING
@ ITEM_MOD_CRIT_TAKEN_MELEE_RATING
@ ITEM_MOD_HIT_TAKEN_RATING
@ ITEM_MOD_ARCANE_RESISTANCE
@ ITEM_MOD_HASTE_MELEE_RATING
@ ITEM_MOD_MANA_REGENERATION
@ ITEM_MOD_RESILIENCE_RATING
@ ITEM_MOD_HIT_TAKEN_RANGED_RATING
#define MAX_ITEM_SUBCLASS_REAGENT
uint8 ItemSubClassToDurabilityMultiplierId(uint32 ItemClass, uint32 ItemSubClass)
@ ITEM_SUBCLASS_ARMOR_MAIL
@ ITEM_SUBCLASS_ARMOR_BUCKLER
@ ITEM_SUBCLASS_ARMOR_LIBRAM
@ ITEM_SUBCLASS_ARMOR_CLOTH
@ ITEM_SUBCLASS_ARMOR_RELIC
@ ITEM_SUBCLASS_ARMOR_LEATHER
@ ITEM_SUBCLASS_ARMOR_SHIELD
@ ITEM_SUBCLASS_ARMOR_SIGIL
@ ITEM_SUBCLASS_ARMOR_PLATE
@ ITEM_SUBCLASS_ARMOR_TOTEM
@ ITEM_SUBCLASS_ARMOR_IDOL
@ ITEM_SUBCLASS_ARMOR_MISCELLANEOUS
#define MAX_ITEM_SUBCLASS_PERMANENT
@ ITEM_SUBCLASS_ENCHANTING
@ ITEM_SUBCLASS_TRADE_GOODS
@ ITEM_SUBCLASS_ENCHANTMENT
@ ITEM_SUBCLASS_EXPLOSIVES
@ ITEM_SUBCLASS_TRADE_GOODS_OTHER
@ ITEM_SUBCLASS_METAL_STONE
@ ITEM_SUBCLASS_JEWELCRAFTING
@ ITEM_SUBCLASS_ELEMENTAL
#define MAX_ITEM_SUBCLASS_ARMOR
@ ITEM_FLAGS_EXTRA_NEED_ROLL_DISABLED
@ ITEM_FLAGS_EXTRA_ALLIANCE_ONLY
@ ITEM_FLAGS_EXTRA_CANNOT_TRANSMOG
@ ITEM_FLAGS_EXTRA_HAS_NORMAL_PRICE
@ ITEM_FLAGS_EXTRA_CASTER_WEAPON
@ ITEM_FLAGS_EXTRA_CAN_TRANSMOG
@ ITEM_FLAGS_EXTRA_HORDE_ONLY
@ ITEM_FLAGS_EXTRA_CANNOT_BE_TRANSMOG
@ ITEM_FLAGS_EXTRA_EXT_COST_REQUIRES_GOLD
@ ITEM_FLAGS_EXTRA_BNET_ACCOUNT_BOUND
#define MAX_ITEM_SUBCLASS_TRADE_GOODS
@ ITEM_SUBCLASS_TAILORING_PATTERN
@ ITEM_SUBCLASS_JEWELCRAFTING_RECIPE
@ ITEM_SUBCLASS_COOKING_RECIPE
@ ITEM_SUBCLASS_ALCHEMY_RECIPE
@ ITEM_SUBCLASS_ENGINEERING_SCHEMATIC
@ ITEM_SUBCLASS_ENCHANTING_FORMULA
@ ITEM_SUBCLASS_INSCRIPTION_TECHNIQUE
@ ITEM_SUBCLASS_LEATHERWORKING_PATTERN
@ ITEM_SUBCLASS_FISHING_MANUAL
@ ITEM_SUBCLASS_FIRST_AID_MANUAL
@ ITEM_SUBCLASS_BLACKSMITHING
#define MAX_ITEM_PROTO_SOCKETS
#define MAX_ITEM_SUBCLASS_JUNK
#define MAX_ITEM_SUBCLASS_GEM
#define MAX_ITEM_SUBCLASS_CONTAINER
@ ITEM_SUBCLASS_GEM_PRISMATIC
@ ITEM_SUBCLASS_GEM_YELLOW
@ ITEM_SUBCLASS_GEM_COGWHEEL
@ ITEM_SUBCLASS_GEM_ORANGE
@ ITEM_SUBCLASS_GEM_HYDRAULIC
@ ITEM_SUBCLASS_GEM_GREEN
@ ITEM_SUBCLASS_GEM_SIMPLE
@ ITEM_SUBCLASS_GEM_PURPLE
@ ITEM_SUBCLASS_MONEY_UNK_7
#define MAX_ITEM_PROTO_SPELLS
@ ITEM_CLASS_MISCELLANEOUS
#define MAX_ITEM_SUBCLASS_CONSUMABLE
@ ITEM_SUBCLASS_PERMANENT
@ CURRENCY_FLAG_HIGH_PRECISION
@ CURRENCY_FLAG_COUNT_SEASON_TOTAL
@ CURRENCY_FLAG_TRADEABLE
#define MAX_ITEM_SUBCLASS_QUIVER
#define MAX_ITEM_SUBCLASS_BATTLE_PET
#define MAX_ITEM_SUBCLASS_PROJECTILE
#define MAX_ITEM_SUBCLASS_QUEST
@ ITEM_VENDOR_TYPE_CURRENCY
@ ITEM_FLAG_MAIL_TEXT_MASK
@ ITEM_FLAG_BOP_TRADEABLE
#define MAX_ITEM_SUBCLASS_WEAPON
@ ITEM_SUBCLASS_BATTLE_PET
@ ITEM_SUBCLASS_JUNK_HOLIDAY
@ ITEM_SUBCLASS_JUNK_MOUNT
@ ITEM_SUBCLASS_JUNK_UNK12
@ ITEM_SUBCLASS_JUNK_OTHER
@ ITEM_SUBCLASS_JUNK_REAGENT
@ ITEM_SUBCLASS_CONSUMABLE_OTHER
@ ITEM_SUBCLASS_FOOD_DRINK
@ ITEM_SUBCLASS_CONSUMABLE
@ ITEM_SUBCLASS_ITEM_ENHANCEMENT
@ ITEM_SUBCLASS_QUEST_UNK8
@ ITEM_SUBCLASS_QUEST_UNK3
#define MAX_ITEM_PROTO_STATS
const uint32 MaxItemSubclassValues[MAX_ITEM_CLASS]
#define MAX_ITEM_SUBCLASS_GLYPH
@ ITEM_FLAGS_CU_DURATION_REAL_TIME
@ ITEM_FLAGS_CU_FOLLOW_LOOT_RULES
@ ITEM_FLAGS_CU_IGNORE_QUEST_STATUS
int32 SpellCategoryCooldown
bool CanChangeEquipStateInCombat() const
uint32 GetMaxStackSize() const
bool IsRangedWeapon() const
float ArmorDamageModifier
bool IsCurrencyToken() const
_Spell Spells[MAX_ITEM_PROTO_SPELLS]
float GetItemLevelIncludingQuality() const
uint32 RequiredDisenchantSkill
bool IsRangedInventoryType() const
bool IsConjuredConsumable() const
uint32 CurrencySubstitutionCount
uint32 RequiredReputationRank
uint32 RequiredReputationFaction
uint32 ScalingStatDistribution
_ItemStat ItemStat[MAX_ITEM_PROTO_STATS]
uint32 CurrencySubstitutionId
int32 SoundOverrideSubclass
_Socket Socket[MAX_ITEM_PROTO_SOCKETS]