diff options
Diffstat (limited to 'src')
-rwxr-xr-x | src/server/game/Spells/Spell.cpp | 6 | ||||
-rwxr-xr-x | src/server/game/Spells/Spell.h | 2 | ||||
-rwxr-xr-x | src/server/game/Spells/SpellEffects.cpp | 9 |
3 files changed, 9 insertions, 8 deletions
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index 867fa47977a..ce6d38ba8f3 100755 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -4198,12 +4198,12 @@ void Spell::ExecuteLogEffectInterruptCast(uint8 effIndex, Unit* victim, uint32 s *m_effectExecuteData[effIndex] << uint32(spellId); } -void Spell::ExecuteLogEffectDurabilityDamage(uint8 effIndex, Unit* victim, uint32 /*itemslot*/, uint32 damage) +void Spell::ExecuteLogEffectDurabilityDamage(uint8 effIndex, Unit* victim, int32 itemId, int32 slot) { InitEffectExecuteData(effIndex); m_effectExecuteData[effIndex]->append(victim->GetPackGUID()); - *m_effectExecuteData[effIndex] << uint32(m_spellInfo->Id); - *m_effectExecuteData[effIndex] << uint32(damage); + *m_effectExecuteData[effIndex] << int32(itemId); + *m_effectExecuteData[effIndex] << int32(slot); } void Spell::ExecuteLogEffectOpenLock(uint8 effIndex, Object* obj) diff --git a/src/server/game/Spells/Spell.h b/src/server/game/Spells/Spell.h index 5de81b6bd88..a892d6c9590 100755 --- a/src/server/game/Spells/Spell.h +++ b/src/server/game/Spells/Spell.h @@ -423,7 +423,7 @@ class Spell void ExecuteLogEffectTakeTargetPower(uint8 effIndex, Unit* target, uint32 powerType, uint32 powerTaken, float gainMultiplier); void ExecuteLogEffectExtraAttacks(uint8 effIndex, Unit* victim, uint32 attCount); void ExecuteLogEffectInterruptCast(uint8 effIndex, Unit* victim, uint32 spellId); - void ExecuteLogEffectDurabilityDamage(uint8 effIndex, Unit* victim, uint32 itemslot, uint32 damage); + void ExecuteLogEffectDurabilityDamage(uint8 effIndex, Unit* victim, int32 itemId, int32 slot); void ExecuteLogEffectOpenLock(uint8 effIndex, Object* obj); void ExecuteLogEffectCreateItem(uint8 effIndex, uint32 entry); void ExecuteLogEffectDestroyItem(uint8 effIndex, uint32 entry); diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index 15a3887ac0e..c049605f27a 100755 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -5400,11 +5400,11 @@ void Spell::EffectDurabilityDamage(SpellEffIndex effIndex) int32 slot = m_spellInfo->Effects[effIndex].MiscValue; - // FIXME: some spells effects have value -1/-2 - // Possibly its mean -1 all player equipped items and -2 all items + // -1 means all player equipped items and -2 all items if (slot < 0) { unitTarget->ToPlayer()->DurabilityPointsLossAll(damage, (slot < -1)); + ExecuteLogEffectDurabilityDamage(effIndex, unitTarget, -1, -1); return; } @@ -5413,9 +5413,10 @@ void Spell::EffectDurabilityDamage(SpellEffIndex effIndex) return; if (Item* item = unitTarget->ToPlayer()->GetItemByPos(INVENTORY_SLOT_BAG_0, slot)) + { unitTarget->ToPlayer()->DurabilityPointsLoss(item, damage); - - ExecuteLogEffectDurabilityDamage(effIndex, unitTarget, slot, damage); + ExecuteLogEffectDurabilityDamage(effIndex, unitTarget, item->GetEntry(), slot); + } } void Spell::EffectDurabilityDamagePCT(SpellEffIndex effIndex) |