diff options
Diffstat (limited to 'src/game/Spell.cpp')
-rw-r--r-- | src/game/Spell.cpp | 35 |
1 files changed, 34 insertions, 1 deletions
diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp index b394206af4f..1236129e155 100644 --- a/src/game/Spell.cpp +++ b/src/game/Spell.cpp @@ -3241,7 +3241,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); |