mirror of
https://github.com/araxiaonline/TrinityCore2.git
synced 2026-06-13 03:22:40 -04:00
Core/Items:
- Update some ItemPrototype enums - Merge armor and weapon vellum into a single subclass - Fix tackler bags
This commit is contained in:
@@ -211,6 +211,10 @@ bool ItemCanGoIntoBag(ItemTemplate const* pProto, ItemTemplate const* pBagProto)
|
||||
if (!(pProto->BagFamily & BAG_FAMILY_MASK_INSCRIPTION_SUPP))
|
||||
return false;
|
||||
return true;
|
||||
case ITEM_SUBCLASS_TACKLE_CONTAINER:
|
||||
if (!(pProto->BagFamily & BAG_FAMILY_MASK_FISHING_SUPP))
|
||||
return false;
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
@@ -854,8 +858,8 @@ bool Item::IsFitToSpellRequirements(SpellInfo const* spellInfo) const
|
||||
if (spellInfo->EquippedItemClass != -1) // -1 == any item class
|
||||
{
|
||||
// Special case - accept vellum for armor/weapon requirements
|
||||
if ((spellInfo->EquippedItemClass == ITEM_CLASS_ARMOR && proto->IsArmorVellum())
|
||||
||(spellInfo->EquippedItemClass == ITEM_CLASS_WEAPON && proto->IsWeaponVellum()))
|
||||
if ((spellInfo->EquippedItemClass == ITEM_CLASS_ARMOR ||
|
||||
spellInfo->EquippedItemClass == ITEM_CLASS_WEAPON) && proto->IsVellum())
|
||||
if (spellInfo->IsAbilityOfSkillType(SKILL_ENCHANTING)) // only for enchanting spells
|
||||
return true;
|
||||
|
||||
|
||||
@@ -320,8 +320,7 @@ class Item : public Object
|
||||
bool hasInvolvedQuest(uint32 /*quest_id*/) const { return false; }
|
||||
bool HasStats() const;
|
||||
bool IsPotion() const { return GetTemplate()->IsPotion(); }
|
||||
bool IsWeaponVellum() const { return GetTemplate()->IsWeaponVellum(); }
|
||||
bool IsArmorVellum() const { return GetTemplate()->IsArmorVellum(); }
|
||||
bool IsVellum() const { return GetTemplate()->IsVellum(); }
|
||||
bool IsConjuredConsumable() const { return GetTemplate()->IsConjuredConsumable(); }
|
||||
bool IsRangedWeapon() const { return GetTemplate()->IsRangedWeapon(); }
|
||||
|
||||
|
||||
@@ -241,7 +241,8 @@ enum BAG_FAMILY_MASK
|
||||
BAG_FAMILY_MASK_SOULBOUND_EQUIPMENT = 0x00000800,
|
||||
BAG_FAMILY_MASK_VANITY_PETS = 0x00001000,
|
||||
BAG_FAMILY_MASK_CURRENCY_TOKENS = 0x00002000,
|
||||
BAG_FAMILY_MASK_QUEST_ITEMS = 0x00004000
|
||||
BAG_FAMILY_MASK_QUEST_ITEMS = 0x00004000,
|
||||
BAG_FAMILY_MASK_FISHING_SUPP = 0x00008000,
|
||||
};
|
||||
|
||||
enum SocketColor
|
||||
@@ -250,8 +251,8 @@ enum SocketColor
|
||||
SOCKET_COLOR_RED = 2,
|
||||
SOCKET_COLOR_YELLOW = 4,
|
||||
SOCKET_COLOR_BLUE = 8,
|
||||
// 16, Hydraulic, not used
|
||||
SOCKET_COLOR_COGWHEEL = 32
|
||||
SOCKET_COLOR_HYDRAULIC = 16, // not used
|
||||
SOCKET_COLOR_COGWHEEL = 32,
|
||||
};
|
||||
|
||||
#define SOCKET_COLOR_ALL (SOCKET_COLOR_META | SOCKET_COLOR_RED | SOCKET_COLOR_YELLOW | SOCKET_COLOR_BLUE | SOCKET_COLOR_COGWHEEL)
|
||||
@@ -445,11 +446,10 @@ enum ItemSubclassTradeGoods
|
||||
ITEM_SUBCLASS_TRADE_GOODS_OTHER = 11,
|
||||
ITEM_SUBCLASS_ENCHANTING = 12,
|
||||
ITEM_SUBCLASS_MATERIAL = 13,
|
||||
ITEM_SUBCLASS_ITEM_ENCHANTMENT = 14,
|
||||
ITEM_SUBCLASS_WEAPON_ENCHANTMENT = 15 // OBSOLETE
|
||||
ITEM_SUBCLASS_ENCHANTMENT = 14,
|
||||
};
|
||||
|
||||
#define MAX_ITEM_SUBCLASS_TRADE_GOODS 16
|
||||
#define MAX_ITEM_SUBCLASS_TRADE_GOODS 15
|
||||
|
||||
enum ItemSubclassGeneric
|
||||
{
|
||||
@@ -478,10 +478,11 @@ enum ItemSubclassRecipe
|
||||
|
||||
enum ItemSubclassMoney
|
||||
{
|
||||
ITEM_SUBCLASS_MONEY = 0 // OBSOLETE
|
||||
ITEM_SUBCLASS_MONEY = 0, // OBSOLETE
|
||||
ITEM_SUBCLASS_MONEY_UNK_7 = 7, // OBSOLETE, 1 item (41749)
|
||||
};
|
||||
|
||||
#define MAX_ITEM_SUBCLASS_MONEY 1
|
||||
#define MAX_ITEM_SUBCLASS_MONEY 8
|
||||
|
||||
enum ItemSubclassQuiver
|
||||
{
|
||||
@@ -495,10 +496,12 @@ enum ItemSubclassQuiver
|
||||
|
||||
enum ItemSubclassQuest
|
||||
{
|
||||
ITEM_SUBCLASS_QUEST = 0
|
||||
ITEM_SUBCLASS_QUEST = 0,
|
||||
ITEM_SUBCLASS_QUEST_UNK3 = 3, // 1 item (33604)
|
||||
ITEM_SUBCLASS_QUEST_UNK8 = 8, // 2 items (37445, 49700)
|
||||
};
|
||||
|
||||
#define MAX_ITEM_SUBCLASS_QUEST 1
|
||||
#define MAX_ITEM_SUBCLASS_QUEST 9
|
||||
|
||||
enum ItemSubclassKey
|
||||
{
|
||||
@@ -522,10 +525,11 @@ enum ItemSubclassJunk
|
||||
ITEM_SUBCLASS_JUNK_PET = 2,
|
||||
ITEM_SUBCLASS_JUNK_HOLIDAY = 3,
|
||||
ITEM_SUBCLASS_JUNK_OTHER = 4,
|
||||
ITEM_SUBCLASS_JUNK_MOUNT = 5
|
||||
ITEM_SUBCLASS_JUNK_MOUNT = 5,
|
||||
ITEM_SUBCLASS_JUNK_UNK12 = 12, // 1 item (37677)
|
||||
};
|
||||
|
||||
#define MAX_ITEM_SUBCLASS_JUNK 6
|
||||
#define MAX_ITEM_SUBCLASS_JUNK 13
|
||||
|
||||
enum ItemSubclassGlyph
|
||||
{
|
||||
@@ -741,8 +745,7 @@ struct ItemTemplate
|
||||
}
|
||||
|
||||
bool IsPotion() const { return Class == ITEM_CLASS_CONSUMABLE && SubClass == ITEM_SUBCLASS_POTION; }
|
||||
bool IsWeaponVellum() const { return Class == ITEM_CLASS_TRADE_GOODS && SubClass == ITEM_SUBCLASS_WEAPON_ENCHANTMENT; }
|
||||
bool IsArmorVellum() const { return Class == ITEM_CLASS_TRADE_GOODS && SubClass == ITEM_SUBCLASS_ITEM_ENCHANTMENT; }
|
||||
bool IsVellum() const { return Class == ITEM_CLASS_TRADE_GOODS && SubClass == ITEM_SUBCLASS_ENCHANTMENT; }
|
||||
bool IsConjuredConsumable() const { return Class == ITEM_CLASS_CONSUMABLE && (Flags & ITEM_PROTO_FLAG_CONJURED); }
|
||||
|
||||
bool IsRangedWeapon() const
|
||||
|
||||
@@ -37,7 +37,7 @@ void InitOpcodes()
|
||||
sLog->outError(LOG_FILTER_NETWORKIO, "Tried to override handler of %s with %s (opcode %u)", \
|
||||
opcodeTable[opcode]->name, #opcode, opcode); \
|
||||
} \
|
||||
else opcodeTable[opcode] = new OpcodeHandler(#opcode, #opcode "_COMPRESSED", status, processing, handler); \
|
||||
else opcodeTable[opcode] = new OpcodeHandler(#opcode, #opcode "_COMPRESSED", status, processing, handler); \
|
||||
}
|
||||
|
||||
memset(opcodeTable, 0, sizeof(opcodeTable));
|
||||
@@ -1242,8 +1242,8 @@ void InitOpcodes()
|
||||
DEFINE_OPCODE_HANDLER(SMSG_UPDATE_ACCOUNT_DATA, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
DEFINE_OPCODE_HANDLER(SMSG_UPDATE_ACCOUNT_DATA_COMPLETE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
DEFINE_OPCODE_HANDLER(SMSG_UPDATE_COMBO_POINTS, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
//DEFINE_OPCODE_HANDLER(SMSG_UPDATE_CURRENCY, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
//DEFINE_OPCODE_HANDLER(SMSG_UPDATE_CURRENCY_WEEK_LIMIT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
DEFINE_OPCODE_HANDLER(SMSG_UPDATE_CURRENCY, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
DEFINE_OPCODE_HANDLER(SMSG_UPDATE_CURRENCY_WEEK_LIMIT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
//DEFINE_OPCODE_HANDLER(SMSG_UPDATE_DUNGEON_ENCOUNTER_FOR_LOOT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
DEFINE_OPCODE_HANDLER(SMSG_UPDATE_INSTANCE_ENCOUNTER_UNIT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
DEFINE_OPCODE_HANDLER(SMSG_UPDATE_INSTANCE_OWNERSHIP, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
|
||||
@@ -6031,7 +6031,7 @@ SpellCastResult Spell::CheckItems()
|
||||
}
|
||||
case SPELL_EFFECT_ENCHANT_ITEM:
|
||||
if (m_spellInfo->Effects[i].ItemType && m_targets.GetItemTarget()
|
||||
&& (m_targets.GetItemTarget()->IsWeaponVellum() || m_targets.GetItemTarget()->IsArmorVellum()))
|
||||
&& (m_targets.GetItemTarget()->IsVellum()))
|
||||
{
|
||||
// cannot enchant vellum for other player
|
||||
if (m_targets.GetItemTarget()->GetOwner() != m_caster)
|
||||
|
||||
@@ -2756,7 +2756,7 @@ void Spell::EffectEnchantItemPerm(SpellEffIndex effIndex)
|
||||
Player* p_caster = (Player*)m_caster;
|
||||
|
||||
// Handle vellums
|
||||
if (itemTarget->IsWeaponVellum() || itemTarget->IsArmorVellum())
|
||||
if (itemTarget->IsVellum())
|
||||
{
|
||||
// destroy one vellum from stack
|
||||
uint32 count = 1;
|
||||
|
||||
Reference in New Issue
Block a user