Core/Items:

- Update some ItemPrototype enums
- Merge armor and weapon vellum into a single subclass
- Fix tackler bags
This commit is contained in:
Nay
2012-08-15 16:30:49 +01:00
parent d1eaf219c4
commit efdaf2a300
6 changed files with 29 additions and 23 deletions

View File

@@ -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;

View File

@@ -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(); }

View File

@@ -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

View File

@@ -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 );

View File

@@ -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)

View File

@@ -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;