diff --git a/src/game/DBCStructure.h b/src/game/DBCStructure.h index 2948f8621..c63b94a58 100644 --- a/src/game/DBCStructure.h +++ b/src/game/DBCStructure.h @@ -943,7 +943,7 @@ struct ItemEntry { uint32 ID; // 0 uint32 Class; // 1 - //uint32 SubClass; // 2 some items have strnage subclasses + uint32 SubClass; // 2 some items have strnage subclasses int32 Unk0; // 3 int32 Material; // 4 uint32 DisplayId; // 5 diff --git a/src/game/DBCfmt.h b/src/game/DBCfmt.h index 75a795906..0966e2e2e 100644 --- a/src/game/DBCfmt.h +++ b/src/game/DBCfmt.h @@ -60,7 +60,7 @@ const char GtOCTRegenHPfmt[]="f"; const char GtRegenHPPerSptfmt[]="f"; const char GtRegenMPPerSptfmt[]="f"; const char Holidaysfmt[]="nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; -const char Itemfmt[]="nixiiiii"; +const char Itemfmt[]="niiiiiii"; const char ItemBagFamilyfmt[]="nxxxxxxxxxxxxxxxxx"; //const char ItemDisplayTemplateEntryfmt[]="nxxxxxxxxxxixxxxxxxxxxx"; //const char ItemCondExtCostsEntryfmt[]="xiii"; diff --git a/src/game/ObjectMgr.cpp b/src/game/ObjectMgr.cpp index f6518193f..9955db4c9 100644 --- a/src/game/ObjectMgr.cpp +++ b/src/game/ObjectMgr.cpp @@ -787,8 +787,8 @@ void ObjectMgr::LoadEquipmentTemplates() sLog.outString( ">> Loaded %u equipment template", sEquipmentStorage.RecordCount ); sLog.outString(); - // This DBC is currently only used for item templates and creature equipments checks. - sItemStore.Clear(); + // Creature items can be not listed in item_template + //sItemStore.Clear(); -- so used in spell casting } CreatureModelInfo const* ObjectMgr::GetCreatureModelInfo(uint32 modelid) diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp index da6f652b2..9f47254e4 100644 --- a/src/game/Spell.cpp +++ b/src/game/Spell.cpp @@ -3048,7 +3048,40 @@ void Spell::WriteAmmoToPacket( WorldPacket * data ) } } } - // TODO: implement selection ammo data based at ranged weapon stored in equipmodel/equipinfo/equipslot fields + else + { + for (uint8 i = 0; i < 3; ++i) + { + if(uint32 item_id = m_caster->GetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID + i)) + { + if(ItemEntry const * itemEntry = sItemStore.LookupEntry(item_id)) + { + if(itemEntry->Class==ITEM_CLASS_WEAPON) + { + switch(itemEntry->SubClass) + { + case ITEM_SUBCLASS_WEAPON_THROWN: + ammoDisplayID = itemEntry->DisplayId; + ammoInventoryType = itemEntry->InventoryType; + break; + case ITEM_SUBCLASS_WEAPON_BOW: + case ITEM_SUBCLASS_WEAPON_CROSSBOW: + ammoDisplayID = 5996; // is this need fixing? + ammoInventoryType = INVTYPE_AMMO; + break; + case ITEM_SUBCLASS_WEAPON_GUN: + ammoDisplayID = 5998; // is this need fixing? + ammoInventoryType = INVTYPE_AMMO; + break; + } + + if(ammoDisplayID) + break; + } + } + } + } + } *data << uint32(ammoDisplayID); *data << uint32(ammoInventoryType); diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index d6da2c606..5b0ccd2da 100644 --- a/src/shared/revision_nr.h +++ b/src/shared/revision_nr.h @@ -1,4 +1,4 @@ #ifndef __REVISION_NR_H__ #define __REVISION_NR_H__ - #define REVISION_NR "7869" + #define REVISION_NR "7870" #endif // __REVISION_NR_H__