aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xsrc/server/game/Entities/Item/Item.cpp8
-rwxr-xr-xsrc/server/game/Entities/Item/Item.h3
-rwxr-xr-xsrc/server/game/Entities/Item/ItemPrototype.h31
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp6
-rwxr-xr-xsrc/server/game/Spells/Spell.cpp2
-rw-r--r--src/server/game/Spells/SpellEffects.cpp2
6 files changed, 29 insertions, 23 deletions
diff --git a/src/server/game/Entities/Item/Item.cpp b/src/server/game/Entities/Item/Item.cpp
index 2b5cb1e359a..12c6861bb47 100755
--- a/src/server/game/Entities/Item/Item.cpp
+++ b/src/server/game/Entities/Item/Item.cpp
@@ -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;
diff --git a/src/server/game/Entities/Item/Item.h b/src/server/game/Entities/Item/Item.h
index 5b86d55f170..0ae4ddac31e 100755
--- a/src/server/game/Entities/Item/Item.h
+++ b/src/server/game/Entities/Item/Item.h
@@ -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(); }
diff --git a/src/server/game/Entities/Item/ItemPrototype.h b/src/server/game/Entities/Item/ItemPrototype.h
index 793b8ecc354..317e30b88f6 100755
--- a/src/server/game/Entities/Item/ItemPrototype.h
+++ b/src/server/game/Entities/Item/ItemPrototype.h
@@ -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
diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp
index bf5d7f21898..dc3e1b88f39 100644
--- a/src/server/game/Server/Protocol/Opcodes.cpp
+++ b/src/server/game/Server/Protocol/Opcodes.cpp
@@ -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 );
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp
index 54d9387d0c1..ed06902178d 100755
--- a/src/server/game/Spells/Spell.cpp
+++ b/src/server/game/Spells/Spell.cpp
@@ -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)
diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp
index 058a7b5564c..4751584b650 100644
--- a/src/server/game/Spells/SpellEffects.cpp
+++ b/src/server/game/Spells/SpellEffects.cpp
@@ -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;