rendered paste bodyIndex: src/game/ItemHandler.cpp
===================================================================
--- src/game/ItemHandler.cpp (revision 81)
+++ src/game/ItemHandler.cpp (working copy)
@@ -217,10 +217,7 @@
WorldPacket data( SMSG_ITEM_QUERY_SINGLE_RESPONSE, 600);
data << pProto->ItemId;
data << pProto->Class;
-
- // client known only 0 subclass (and 1-2 obsolete subclasses)
- data << uint32(pProto->Class==ITEM_CLASS_CONSUMABLE && pProto->SubClass==ITEM_SUBCLASS_COMBAT_EFFECT ? 0 : pProto->SubClass);
-
+ data << pProto->SubClass;
data << uint32(-1); // new 2.0.3, not exist in wdb cache?
data << Name;
data << uint8(0x00); //pProto->Name2; // blizz not send name there, just uint8(0x00); <-- \0 = empty string = empty name...
Index: src/game/ItemPrototype.h
===================================================================
--- src/game/ItemPrototype.h (revision 81)
+++ src/game/ItemPrototype.h (working copy)
@@ -228,11 +228,10 @@
ITEM_SUBCLASS_FOOD = 5,
ITEM_SUBCLASS_ITEM_ENHANCEMENT = 6,
ITEM_SUBCLASS_BANDAGE = 7,
- ITEM_SUBCLASS_CONSUMABLE_OTHER = 8,
- ITEM_SUBCLASS_COMBAT_EFFECT = 9 // Mangos Custom
+ ITEM_SUBCLASS_CONSUMABLE_OTHER = 8
};
-#define MAX_ITEM_SUBCLASS_CONSUMABLE 10
+#define MAX_ITEM_SUBCLASS_CONSUMABLE 9
enum ItemSubclassContainer
{
Index: src/game/SpellHandler.cpp
===================================================================
--- src/game/SpellHandler.cpp (revision 82)
+++ src/game/SpellHandler.cpp (working copy)
@@ -64,24 +64,7 @@
return;
}
- if (pUser->isInCombat())
- {
- uint8 consumable = proto->Class == ITEM_CLASS_CONSUMABLE &&
- proto->SubClass != ITEM_SUBCLASS_POTION &&
- proto->SubClass != ITEM_SUBCLASS_SCROLL &&
- proto->SubClass != ITEM_SUBCLASS_BANDAGE &&
- proto->SubClass != ITEM_SUBCLASS_ITEM_ENHANCEMENT &&
- proto->SubClass != ITEM_SUBCLASS_COMBAT_EFFECT;
- uint8 trade_goods = proto->Class == ITEM_CLASS_TRADE_GOODS && proto->SubClass != ITEM_SUBCLASS_EXPLOSIVES;
- if (consumable || trade_goods ||
- proto->Class == ITEM_CLASS_KEY || proto->Class == ITEM_CLASS_JUNK)
- {
- pUser->SendEquipError(EQUIP_ERR_NOT_IN_COMBAT,pItem,NULL);
- return;
- }
- }
-
// check also BIND_WHEN_PICKED_UP for .additem or .additemset case by GM (not binded at adding to inventory)
if( pItem->GetProto()->Bonding == BIND_WHEN_USE || pItem->GetProto()->Bonding == BIND_WHEN_PICKED_UP)
{
@@ -123,6 +106,12 @@
continue;
}
+ if(pUser->isInCombat() && IsNonCombatSpell(spellInfo->Id))
+ {
+ pUser->SendEquipError(EQUIP_ERR_NOT_IN_COMBAT,pItem,NULL);
+ return;
+ }
+
Spell *spell = new Spell(pUser, spellInfo, (count > 0) , 0);
spell->m_CastItem = pItem;
spell->prepare(&targets);